diff --git a/.github/workflows/ci-workflow.yml b/.github/workflows/ci-workflow.yml index 0a039c3..8926c40 100644 --- a/.github/workflows/ci-workflow.yml +++ b/.github/workflows/ci-workflow.yml @@ -7,17 +7,22 @@ jobs: name: Build and run tests runs-on: ubuntu-latest steps: - - uses: actions/checkout@v2 + - uses: actions/checkout@v4 with: lfs: true - - uses: actions/setup-java@v1 + + - uses: actions/setup-java@v3 with: - java-version: '17' + distribution: 'zulu' + java-version: '21' - name: Build && Run run: | deployer_url="https://raw.githubusercontent.com/Insality/defold-deployer/1/deployer.sh" curl -s ${deployer_url} | bash -s lbd --headless --settings ./test/test.ini - - name: Upload test report - run: bash <(curl -s https://codecov.io/bash) \ No newline at end of file + - name: Upload coverage reports to Codecov + uses: codecov/codecov-action@v4.0.1 + with: + token: ${{ secrets.CODECOV_TOKEN }} + slug: insality/druid diff --git a/.gitignore b/.gitignore index 9389f94..6dced02 100644 --- a/.gitignore +++ b/.gitignore @@ -15,4 +15,5 @@ deployer_version_settings.txt bob*.jar manifest.private.der manifest.public.der +/.editor_settings /.deployer_cache diff --git a/.luacov b/.luacov new file mode 100644 index 0000000..d94b4d2 --- /dev/null +++ b/.luacov @@ -0,0 +1,76 @@ +local reporter = require("luacov.reporter.defold") + +--- Default values for configuration options. +-- For project specific configuration create '.luacov' file in your project +-- folder. It should be a Lua script setting various options as globals +-- or returning table of options. +-- @class module +-- @name deftest.coverage.configuration +return { + + --- Reporter class to use when creating a report. Default: DefaultReporter from reporter.lua + reporter = reporter, + + --- Filename to store collected stats. Default: "luacov.stats.out". + statsfile = "luacov.stats.out", + + --- Filename to store report. Default: "luacov.report.out". + reportfile = "luacov.report.out", + + --- Enable saving coverage data after every `savestepsize` lines? + -- Setting this flag to `true` in config is equivalent to running LuaCov + -- using `luacov.tick` module. Default: false. + tick = false, + + --- Stats file updating frequency for `luacov.tick`. + -- The lower this value - the more frequently results will be written out to the stats file. + -- You may want to reduce this value (to, for example, 2) to avoid losing coverage data in + -- case your program may terminate without triggering luacov exit hooks that are supposed + -- to save the data. Default: 100. + savestepsize = 100, + + --- Run reporter on completion? Default: true. + runreport = true, + + --- Delete stats file after reporting? Default: false. + deletestats = true, + + --- Process Lua code loaded from raw strings? + -- That is, when the 'source' field in the debug info + -- does not start with '@'. Default: true. + codefromstrings = true, + + --- Lua patterns for files to include when reporting. + -- All will be included if nothing is listed. + -- Do not include the '.lua' extension. Path separator is always '/'. + -- Overruled by `exclude`. + -- @usage + -- include = { + -- "mymodule$", -- the main module + -- "mymodule%/.+$", -- and everything namespaced underneath it + -- } + include = {}, + + --- Lua patterns for files to exclude when reporting. + -- Nothing will be excluded if nothing is listed. + -- Do not include the '.lua' extension. Path separator is always '/'. + -- Overrules `include`. + exclude = { + "^test%/.+$", + "^druid/system/utf8.lua$", + }, + + --- Table mapping names of modules to be included to their filenames. + -- Has no effect if empty. + -- Real filenames mentioned here will be used for reporting + -- even if the modules have been installed elsewhere. + -- Module name can contain '*' wildcard to match groups of modules, + -- in this case corresponding path will be used as a prefix directory + -- where modules from the group are located. + -- @usage + -- modules = { + -- ["some_rock"] = "src/some_rock.lua", + -- ["some_rock.*"] = "src" + -- } + modules = {}, +} diff --git a/.vscode/settings.json b/.vscode/settings.json index 28a4386..277b66a 100644 --- a/.vscode/settings.json +++ b/.vscode/settings.json @@ -29,14 +29,13 @@ "utils/annotations_manual.lua" ], "Lua.runtime.pathStrict": true, - "Lua.diagnostics.libraryFiles": "Enable", + "Lua.diagnostics.libraryFiles": "Disable", "Lua.runtime.version": "Lua 5.1", "Lua.workspace.library": [ - "~/Library/Application Support/Code/User/globalStorage/astronachos.defold", - "~/Library/Application Support/Code/User/workspaceStorage/72e25b7e0fdc873ee6f7baa61edbd6b1/astronachos.defold", - "~/Library/Application Support/Code/User/workspaceStorage/1446075a23c89451a63f0e82b2291def/astronachos.defold" + "~/Library/Application Support/Cursor/User/globalStorage/astronachos.defold", + "~/Library/Application Support/Cursor/User/workspaceStorage/1446075a23c89451a63f0e82b2291def/astronachos.defold" ], "files.exclude": { "**/*.gui": true } -} \ No newline at end of file +} diff --git a/CONTRIBUTING.md b/CONTRIBUTING.md new file mode 100644 index 0000000..d3415e9 --- /dev/null +++ b/CONTRIBUTING.md @@ -0,0 +1,116 @@ +# Contributing to Druid + +Thank you for your interest in contributing to **Druid**! We welcome contributions of all sizes - even small fixes make a big difference. + +## Table of Contents +- [How to Report Issues](#how-to-report-issues) +- [Small Fixes](#small-fixes) +- [Larger Contributions](#larger-contributions) +- [Documentation Updates](#documentation-updates) +- [Adding or Updating Examples](#adding-or-updating-examples) +- [Unit Tests](#unit-tests) + +## How to Report Issues + +Found a bug? Please report it to our [issue tracker](https://github.com/druid-js/druid/issues) with: +- A clear description of the problem +- Steps to reproduce the issue +- Expected vs. actual behavior +- Your environment (Defold version, OS, etc.) + +## Small Fixes + +**We highly encourage small improvements!** For bug fixes, typo corrections, or minor improvements, you can create a pull request directly to the `master` or `develop` branch. + +When making these contributions, you **must**: + +1. Update the patch version number in both: + - `README.md` file (in the dependency section) + - `game.project` file (in the project section) +2. Add your changes to `wiki/changelog.md` +3. These steps are required to properly tag a new release + +**Example of version updates:** + +For README.md: +``` +# Before +https://github.com/Insality/druid/archive/refs/tags/1.1.0.zip + +# After (patch version increased) +https://github.com/Insality/druid/archive/refs/tags/1.1.1.zip +``` + +For game.project: +``` +# Before +[project] +title = Druid +version = 1.1.0 + +# After (patch version increased) +[project] +title = Druid +version = 1.1.1 +``` + +## Larger Contributions + +For new features, major improvements, or complex fixes: + +1. Fork the repository +2. Create a branch from `develop` +3. Make your changes +4. Ensure code follows project style guidelines +5. Test your changes thoroughly +6. Submit a pull request to the `develop` branch +7. Include references to any related issues (e.g., "Fixes #123") + +Please keep changes focused on addressing specific issues or features, and maintain the existing code style. + +## Documentation Updates + +To improve documentation: + +1. Fork the repository +2. Create a branch for your changes +3. Update the relevant documentation files +4. Submit a pull request to the `master` or `develop` branch + +Clear, accurate documentation helps everyone, so documentation improvements are always appreciated! + +## Adding or Updating Examples + +Examples are vital for helping users understand how to use Druid. Each example should include: + +1. A GUI scene with a Druid widget +2. Information about the example in `examples_list.lua` + +To add a new example: + +1. Create a new GUI file in the `/example/examples` directory +2. Add the example information to `examples_list.lua` +3. Include your GUI template in `/example/druid.gui` + - Place it inside the proper hierarchy: `root -> container_center -> examples -> widgets` +4. Test your example by running the game +5. Submit a pull request to the `develop` branch + +## Unit Tests + +Unit tests help ensure Druid works correctly. If you're facing an issue, unit tests can be a good starting point to understand or reproduce it. + +All tests are located in the `/test/tests` directory. + +To run tests: +1. Set the bootstrap collection to `/test/test.collection` +2. Run the project + +To submit new or updated tests: +1. Create a branch for your changes +2. Add or modify tests +3. Verify your tests pass +4. Submit a pull request to the `develop` branch + +--- + +Thank you for contributing to making Druid better for everyone! ❤️ diff --git a/LICENSE b/LICENSE index da6215f..3ecc9b3 100644 --- a/LICENSE +++ b/LICENSE @@ -1,6 +1,6 @@ MIT License -Copyright (c) 2021 Maxim Tuprikov +Copyright (c) 2025 Maxim Tuprikov Permission is hereby granted, free of charge, to any person obtaining a copy of this software and associated documentation files (the "Software"), to deal diff --git a/README.md b/README.md index dad3928..573830b 100644 --- a/README.md +++ b/README.md @@ -7,166 +7,167 @@ [![Github-sponsors](https://img.shields.io/badge/sponsor-30363D?style=for-the-badge&logo=GitHub-Sponsors&logoColor=#EA4AAA)](https://github.com/sponsors/insality) [![Ko-Fi](https://img.shields.io/badge/Ko--fi-F16061?style=for-the-badge&logo=ko-fi&logoColor=white)](https://ko-fi.com/insality) [![BuyMeACoffee](https://img.shields.io/badge/Buy%20Me%20a%20Coffee-ffdd00?style=for-the-badge&logo=buy-me-a-coffee&logoColor=black)](https://www.buymeacoffee.com/insality) -**Druid** - powerful **Defold** component UI framework that empowers developers to create stunning and customizable GUIs by leveraging a wide range of embedded components or effortlessly designing their own game-specific components. +**Druid** - a powerful, flexible and easy to use **Defold** component UI framework. Contains a wide range of UI components that you can use to create a beautiful, responsive and customizable GUIs. Provides a powerful way to create, compose and manage your custom components and scenes. ## Druid Example -Check the [**HTML5 version**](https://insality.github.io/druid/druid/) of the **Druid** example app. +Check the [**HTML5 version**](https://insality.github.io/druid/) of the **Druid** example app. In this example you can inspect a variety of **Druid** components and see how they work. Each example page provides a direct link to the corresponding example code, making it easier for you to understand how to use **Druid**. +## Features + +- **Components Rich** - Provides a extensive set of components, from basic buttons to infinity data lists and rich texts +- **Customizable** - You can customize components appearance and behaviour with their API and styles +- **Widgets** - Powerful way to create your own reusable components +- **Input Handling** - Handles input in a stack-based manner and manage input priority +- **Event Based** - Uses [Defold Event](https://github.com/Insality/defold-event) for components callbacks and communication between components + +## Quick Links + +- [Basic Usage](wiki/basic_usage.md) +- [Quick API Reference](api/quick_api_reference.md) +- [List of Components](#druid-components) +- [Contributors](#contributors) ## Setup -### Dependency +### [Dependency](https://defold.com/manuals/libraries/#setting-up-library-dependencies) -To integrate the **Druid** extension into your own project, add this project as a [dependency](https://www.defold.com/manuals/libraries/) in your **Defold** game. Open your `game.project` file and add the following line to the dependencies field under the project section: +Open your `game.project` file and add the following lines to the dependencies field under the project section: -**Druid v1.0.1** -> [https://github.com/Insality/druid/archive/refs/tags/1.0.1.zip](https://github.com/Insality/druid/archive/refs/tags/1.0.1.zip) +**[Druid](https://github.com/Insality/druid/)** + +``` +https://github.com/Insality/druid/archive/refs/tags/1.1.0.zip +``` + +**[Defold Event](https://github.com/Insality/defold-event)** + +``` +https://github.com/Insality/defold-event/archive/refs/tags/11.zip +``` + +After that, select `Project ▸ Fetch Libraries` to update [library dependencies]((https://defold.com/manuals/libraries/#setting-up-library-dependencies)). This happens automatically whenever you open a project so you will only need to do this if the dependencies change without re-opening the project. Here is a list of [all releases](https://github.com/Insality/druid/releases). ### Library Size -> **Note:** The library size is calculated based on the build report per platform. The extended components are exlcuded, which are including only on demand. +> **Note:** The library size is calculated based on the build report per platform. Full size contains all components, they can be stripped out in the build process if you don't need them. -| Platform | Library Size | +| Platform | Full Size | | ---------------- | ------------- | -| HTML5 | **38.00 KB** | -| Desktop / Mobile | **65.74 KB** | +| HTML5 | **84.52 KB** | +| Desktop / Mobile | **141.03 KB** | ### Input Bindings -**Druid** utilizes the `/builtins/input/all.input_binding` input bindings. Either use this file for your project by setting the `Runtime -> Input -> Game Binding` field in the `game.project` input section to `/builtins/input/all.input_binding`, or add the specific bindings you need to your game's input binding file. For custom input bindings, refer to the Input Binding section in the [Advanced Setup](https://github.com/Insality/druid/blob/master/docs_md/advanced-setup.md#input-bindings). +**Druid** utilizes the `/builtins/input/all.input_binding` input bindings. Either use this file for your project by setting the `Runtime -> Input -> Game Binding` field in the `game.project` input section to `/builtins/input/all.input_binding`, or add the specific bindings you need to your game's input binding file. For custom input bindings, refer to the Input Binding section in the [Advanced Setup](https://github.com/Insality/druid/blob/master/wiki/advanced-setup.md#input-bindings). ## Usage ### Basic usage -To utilize **Druid**, begin by creating a **Druid** instance to instantiate components and include the main functions of **Druid**: *update*, *final*, *on_message*, and *on_input*. - -When using **Druid** components, provide a node name string as an argument. If you don't have the node name available in some cases, you can pass `gui.get_node()` instead. - -All **Druid** and component methods are invoked using the `:` operator, such as `self.druid:new_button()`. +The basic template for `gui_script` is: ```lua local druid = require("druid.druid") --- All component callbacks pass "self" as first argument --- This "self" is a context data passed in `druid.new(context)` -local function on_button_callback(self) - print("The button clicked!") -end - function init(self) self.druid = druid.new(self) - self.button = self.druid:new_button("button_node_name", on_button_callback) end --- "final" is a required function for the correct Druid workflow function final(self) self.druid:final() end --- "update" is used in progress bar, scroll, and timer basic components function update(self, dt) self.druid:update(dt) end --- "on_message" is used for specific Druid events, like language change or layout change function on_message(self, message_id, message, sender) self.druid:on_message(message_id, message, sender) end --- "on_input" is used in almost all Druid components --- The return value from `druid:on_input` is required! function on_input(self, action_id, action) return self.druid:on_input(action_id, action) end - ``` -For all **Druid** instance functions, [see here](https://insality.github.io/druid/modules/DruidInstance.html). +Read the [Basic Usage](wiki/basic_usage.md) to learn how to use **Druid**, how to create your own components and how to use widgets. ### API Documentation -**Druid** offers a wide range of components and functions. To facilitate usage, **Druid** provides comprehensive API documentation with examples and annotations. +Best start is from the [Quick API Reference](api/quick_api_reference.md) -Start reading the API documentation [here](https://insality.github.io/druid/modules/Druid.html). +With next quick links: -**Druid** provide the *EmmyLua* annotations to add autocomplete inside your IDE. Check [EmmyLua Setup here](docs_md/advanced-setup.md#emmylua-annotations). - - -### Create custom components - -If you want to create your own components, refer to the [Create Custom Components](docs_md/02-creating_custom_components.md) section in the documentation. - -Custom components are one of the most powerful features of **Druid**. They allow you to create your own components effortlessly and utilize them in your game. +- [Druid Instance](api/druid_instance_api.md) - **Druid** instance returned from `druid.new(self)` +- [Helper](api/druid_helper_api.md) - A lot of useful functions +- [Widgets](wiki/widgets.md) - About widgets and how to use them ## Druid Components Here is full **Druid** components list. -### Basic Components - -> Basic components always included in the build and available for use. +### Components | Name | Description | Example |
Preview
| |------|-------------|---------|---------| -| **[Button](https://insality.github.io/druid/modules/Button.html)** | Logic over GUI Node. Handle the user click interactions: click, long click, double click, etc. | [Button Example](https://insality.github.io/druid/druid/?example=general_buttons) | | -| **[Text](https://insality.github.io/druid/modules/Text.html)** | Logic over GUI Text. By default Text component fit the text inside text node size area with different adjust modes. | [Text Example](https://insality.github.io/druid/druid/?example=texts_general) | | -| **[Scroll](https://insality.github.io/druid/modules/Scroll.html)** | Logic over two GUI Nodes: input and content. Provides basic behaviour for scrollable content. | [Scroll Example](https://insality.github.io/druid/druid/?example=general_scroll) | | -| **[Blocker](https://insality.github.io/druid/modules/Blocker.html)** | Logic over GUI Node. Don't pass any user input below node area size. | [Blocker Example](https://insality.github.io/druid/druid/?example=timer) | | -| **[Back Handler](https://insality.github.io/druid/modules/BackHandler.html)** | Call callback on user "Back" action. It's a Android back button or keyboard backspace key | [Back Handler Example](https://insality.github.io/druid/druid/?example=timer) | | -| **[Static Grid](https://insality.github.io/druid/modules/StaticGrid.html)** | Logic over GUI Node. Component to manage node positions with all equal node sizes. | [Static Gid Example](https://insality.github.io/druid/druid/?example=general_grid) | | -| **[Hover](https://insality.github.io/druid/modules/Hover.html)** | Logic over GUI Node. Handle hover action over node. For both: mobile touch and mouse cursor. | [Hover Example](https://insality.github.io/druid/druid/?example=timer) | | -| **[Swipe](https://insality.github.io/druid/modules/Swipe.html)** | Logic over GUI Node. Handle swipe gestures over node. | [Swipe Example](https://insality.github.io/druid/druid/?example=general_swipe) | | -| **[Drag](https://insality.github.io/druid/modules/Drag.html)** | Logic over GUI Node. Handle drag input actions. Can be useful to make on screen controlls. | [Drag Example](https://insality.github.io/druid/druid/?example=general_drag) | | - - -### Extended components - -> Extended components before usage should be registered in **Druid** with [`druid.register()`](https://insality.github.io/druid/modules/Druid.html#druid.register) function. -> On usage of unregistered **Druid** component the next log will be shown in the console. -``` -local data_list = require("druid.extended.data_list") -druid.register("data_list", data_list) -``` - -| Name | Description | Example |
Preview
| -|------|-------------|---------|---------| -| **[Data List](https://insality.github.io/druid/modules/DataList.html)** | Logic over Scroll and Grid components. Create only visible GUI nodes or components to make "infinity" scroll befaviour | [Data List Example](https://insality.github.io/druid/druid/?example=general_data_list) | | -| **[Input](https://insality.github.io/druid/modules/Input.html)** | Logic over GUI Node and GUI Text (or Text component). Provides basic user text input. | [Input Example](https://insality.github.io/druid/druid/?example=general_input) | | -| **[Lang text](https://insality.github.io/druid/modules/LangText.html)** | Logic over Text component to handle localization. Can be translated in real-time with `druid.on_language_change` | [Lang Text Example](https://insality.github.io/druid/druid/?example=timer) | | -| **[Progress](https://insality.github.io/druid/modules/Progress.html)** | Logic over GUI Node. Handle node size and scale to handle progress node size. | [Progress Example](https://insality.github.io/druid/druid/?example=general_progress_bar) | | -| **[Slider](https://insality.github.io/druid/modules/Slider.html)** | Logic over GUI Node. Handle draggable node with position restrictions. | [Slider Example](https://insality.github.io/druid/druid/?example=general_sliders) | | -| **[Timer](https://insality.github.io/druid/modules/Timer.html)** | Logic over GUI Text. Handle basic timer functions. | [Timer Example](https://insality.github.io/druid/druid/?example=timer) | | -| **[Hotkey](https://insality.github.io/druid/modules/Hotkey.html)** | Allow to set callbacks for keyboard hotkeys with key modificators. | [Hotkey Example](https://insality.github.io/druid/druid/?example=general_hotkey) | | -| **[Layout](https://insality.github.io/druid/modules/Layout.html)** | Logic over GUI Node. Arrange nodes inside layout node with margin/paddings settings. | [Layout Example](https://insality.github.io/druid/druid/?example=general_layout) | | -| **[Rich Input](https://insality.github.io/druid/modules/RichInput.html)** | Logic over GUI Node and GUI Text (or Text component). Provides rich text input with different styles and text formatting. | [Rich Input Example](https://insality.github.io/druid/druid/?example=general_rich_input) | | -| **[Rich Text](https://insality.github.io/druid/modules/RichText.html)** | Logic over GUI Text. Provides rich text formatting with different styles and text formatting. | [Rich Text Example](https://insality.github.io/druid/druid/?example=general_rich_text) | | - -For a complete overview, see: **_[components.md](docs_md/01-components.md)_**. +| **[Button](/api/components/base/button_api.md)** | Logic over GUI Node. Handle the user click interactions: click, long click, double click, etc. | [Button Example](https://insality.github.io/druid/?example=ui_example_basic_button) | | +| **[Text](/api/components/base/text_api.md)** | Logic over GUI Text. By default Text component fit the text inside text node size area with different adjust modes. | [Text Example](https://insality.github.io/druid/?example=ui_example_basic_text) | | +| **[Scroll](/api/components/base/scroll_api.md)** | Logic over two GUI Nodes: input and content. Provides basic behaviour for scrollable content. | [Scroll Example](https://insality.github.io/druid/?example=ui_example_basic_scroll) | | +| **[Blocker](/api/components/base/blocker_api.md)** | Logic over GUI Node. Don't pass any user input below node area size. | [Blocker Example](https://insality.github.io/druid/?example=ui_example_basic_blocker) | | +| **[Back Handler](/api/components/base/back_handler_api.md)** | Call callback on user "Back" action. It's a Android back button or keyboard backspace key | [Back Handler Example](https://insality.github.io/druid/?example=ui_example_basic_back_handler) | | +| **[Static Grid](/api/components/base/static_grid_api.md)** | Logic over GUI Node. Component to manage node positions with all equal node sizes. | [Static Gid Example](https://insality.github.io/druid/?example=ui_example_basic_grid) | | +| **[Hover](/api/components/base/hover_api.md)** | Logic over GUI Node. Handle hover action over node. For both: mobile touch and mouse cursor. | [Hover Example](https://insality.github.io/druid/?example=ui_example_basic_hover) | | +| **[Swipe](/api/components/extended/swipe_api.md)** | Logic over GUI Node. Handle swipe gestures over node. | [Swipe Example](https://insality.github.io/druid/?example=ui_example_basic_swipe) | | +| **[Drag](/api/components/base/drag_api.md)** | Logic over GUI Node. Handle drag input actions. Can be useful to make on screen controlls. | [Drag Example](https://insality.github.io/druid/?example=ui_example_basic_drag) | | +| **[Data List](/api/components/extended/data_list_api.md)** | Logic over Scroll and Grid components. Create only visible GUI nodes or components to make "infinity" scroll befaviour | [Data List Example](https://insality.github.io/druid/?example=ui_example_data_list_basic) | | +| **[Input](/api/components/extended/input_api.md)** | Logic over GUI Node and GUI Text (or Text component). Provides basic user text input. | [Input Example](https://insality.github.io/druid/?example=ui_example_basic_input) | | +| **[Lang text](/api/components/extended/lang_text_api.md)** | Logic over Text component to handle localization. Can be translated in real-time with `druid.on_language_change` | [Lang Text Example](https://insality.github.io/druid/?example=ui_example_window_language) | | +| **[Progress](/api/components/extended/progress_api.md)** | Logic over GUI Node. Handle node size and scale to handle progress node size. | [Progress Example](https://insality.github.io/druid/?example=ui_example_basic_progress_bar) | | +| **[Slider](/api/components/extended/slider_api.md)** | Logic over GUI Node. Handle draggable node with position restrictions. | [Slider Example](https://insality.github.io/druid/?example=ui_example_basic_slider) | | +| **[Timer](/api/components/extended/timer_api.md)** | Logic over GUI Text. Handle basic timer functions. | [Timer Example](https://insality.github.io/druid/?example=ui_example_basic_timer) | | +| **[Hotkey](/api/components/extended/hotkey_api.md)** | Allow to set callbacks for keyboard hotkeys with key modificators. | [Hotkey Example](https://insality.github.io/druid/?example=ui_example_basic_hotkey) | | +| **[Layout](/api/components/extended/layout_api.md)** | Logic over GUI Node. Arrange nodes inside layout node with margin/paddings settings. | [Layout Example](https://insality.github.io/druid/?example=ui_example_layout_basic) | | +| **[Rich Input](/api/components/custom/rich_input_api.md)** | Logic over GUI Node and GUI Text (or Text component). Provides rich text input with different styles and text formatting. | [Rich Input Example](https://insality.github.io/druid/?example=ui_example_basic_rich_input) | | +| **[Rich Text](/api/components/custom/rich_text_api.md)** | Logic over GUI Text. Provides rich text formatting with different styles and text formatting. | [Rich Text Example](https://insality.github.io/druid/?example=ui_example_basic_rich_text) | | ## Druid Events -Any **Druid** components as callbacks use [Druid Events](https://insality.github.io/druid/modules/DruidEvent.html). In component API ([button example](https://insality.github.io/druid/modules/Button.html#on_click)) pointed list of component events. You can manually subscribe to these events with the following API: +All **Druid** components using [Defold Event](https://github.com/Insality/defold-event) for components callbacks. In component API ([button example](/api/components/base/button_api.md#fields)) pointed list of component events. You can manually subscribe to these events with the following API: - **event:subscribe**(callback) - **event:unsubscribe**(callback) -- **event:clear**() - You can subscribe several callbacks to a single event. +Examples: + +```lua +button.on_click:subscribe(function(self, args) + print("Button clicked!") +end) + +scroll.on_scroll:subscribe(function(self, position) + print("Scroll scrolled!") +end) + +input.on_input_unselect:subscribe(function(self, text) + print("User enter input:", text) +end) +``` + + ## Details - **Druid** processes input in a stack-based manner. The most recently created button will be checked first. Create your input GUI components from back to front. @@ -174,49 +175,56 @@ You can subscribe several callbacks to a single event. - Druid automatically calls `acquire_input_focus` if you have input components. Therefore, manual calling of `acquire_input_focus` is not required. - When deleting a **Druid** component node, make sure to remove it using `druid:remove(component)`. - ## Examples -Try the [**HTML5 version**](https://insality.github.io/druid/druid/) of the **Druid** example app. +Try the [**HTML5 version**](https://insality.github.io/druid/) of the **Druid** example app. Each example page provides a direct link to the corresponding example code, making it easier for you to understand how to use **Druid**. Or refer directly to the [**example folder**](https://github.com/Insality/druid/tree/develop/example) for code examples demonstrating how to use **Druid**. + ## Documentation -To better understand **Druid**, read the following documentation: -- [How To GUI in Defold](https://forum.defold.com/t/how-to-gui-in-defold/73256) -- [Druid components](docs_md/01-components.md) -- [Create custom components](docs_md/02-creating_custom_components.md) -- [See FAQ article](docs_md/FAQ.md) -- [Druid styles](docs_md/03-styles.md) +You can find the full **Druid** functions at [Quick API Reference](api/quick_api_reference.md) -You can find the full **Druid** [documentation here](https://insality.github.io/druid/modules/Druid.html). +To better understand **Druid**, read the following documentation: + +- [How To GUI in Defold](https://forum.defold.com/t/how-to-gui-in-defold/73256) +- [Widgets](wiki/widgets.md) +- [Druid styles](wiki/styles.md) +- [Advanced Setup](wiki/advanced-setup.md) +- [Optimize Druid Size](wiki/optimize_druid_size.md) +- [Creating Custom Components](wiki/creating_custom_components.md) +- [Changelog](wiki/changelog.md) ## Licenses -- Developed and supported by [Insality](https://github.com/Insality) -- Original idea by [AGulev](https://github.com/AGulev) -- Assets from [Kenney](http://www.kenney.nl/) +This project is licensed under the MIT License - see the [LICENSE](LICENSE) file for details. ## Issues and suggestions -If you have any issues, questions or suggestions please [create an issue](https://github.com/Insality/druid/issues) or contact me: [insality@gmail.com](mailto:insality@gmail.com) +If you have any issues, questions or suggestions please [create an issue](https://github.com/Insality/druid/issues) ## History -For a complete history of the development of **Druid**, please check the [changelog](docs_md/changelog.md). +For a complete history of the development of **Druid**, please check the [changelog](wiki/changelog.md). -## 👏 Contributors +## Contributors + +Original Druid idea by [AGulev](https://github.com/AGulev) + +Special thanks to all the contributors who have helped make **Druid** better! +Read the [CONTRIBUTING.md](CONTRIBUTING.md) file for more information. + ## ❤️ Support project ❤️ diff --git a/api/components/base/back_handler_api.md b/api/components/base/back_handler_api.md new file mode 100644 index 0000000..60804fd --- /dev/null +++ b/api/components/base/back_handler_api.md @@ -0,0 +1,45 @@ +# druid.back_handler API + +> at /druid/base/back_handler.lua + +Component to handle back button. It handles Android back button and Backspace key. + +### Setup +Create back handler component with druid: `druid:new_back_handler(callback)` + +### Notes +- Key triggers in `input.binding` should be setup for correct working +- It uses a key_back and key_backspace action ids + +## Functions + +- [init](#init) + +## Fields + +- [on_back](#on_back) +- [params](#params) + + + +### init + +--- +```lua +back_handler:init([callback], [params]) +``` + +The Back Handler constructor + +- **Parameters:** + - `[callback]` *(function|nil)*: The callback to call when the back handler is triggered + - `[params]` *(any)*: Custom args to pass in the callback + + +## Fields + +- **on_back** (_event_): fun(self: druid.back_handler, params: any?) Trigger on back handler action + + +- **params** (_any_): Custom args to pass in the callback + diff --git a/api/components/base/blocker_api.md b/api/components/base/blocker_api.md new file mode 100644 index 0000000..7068f05 --- /dev/null +++ b/api/components/base/blocker_api.md @@ -0,0 +1,70 @@ +# druid.blocker API + +> at /druid/base/blocker.lua + +Druid component for block input. Use it to block input in special zone. + +### Setup +Create blocker component with druid: `druid:new_blocker(node_name)` + +### Notes +- Blocker can be used to create safe zones, where you have big buttons +- Blocker will capture all input events that hit the node, preventing them from reaching other components +- Blocker works placed as usual component in stack, so any other component can be placed on top of it and will work as usual + +## Functions + +- [init](#init) +- [set_enabled](#set_enabled) +- [is_enabled](#is_enabled) + +## Fields + +- [node](#node) + + + +### init + +--- +```lua +blocker:init(node) +``` + +The Blocker constructor + +- **Parameters:** + - `node` *(string|node)*: The node to use as a blocker + +### set_enabled + +--- +```lua +blocker:set_enabled(state) +``` + +Set blocker enabled state + +- **Parameters:** + - `state` *(boolean)*: The new enabled state + +- **Returns:** + - `self` *(druid.blocker)*: The blocker instance + +### is_enabled + +--- +```lua +blocker:is_enabled() +``` + +Get blocker enabled state + +- **Returns:** + - `is_enabled` *(boolean)*: True if the blocker is enabled + + +## Fields + +- **node** (_node_): The node that will block input + diff --git a/api/components/base/button_api.md b/api/components/base/button_api.md new file mode 100644 index 0000000..a3034be --- /dev/null +++ b/api/components/base/button_api.md @@ -0,0 +1,271 @@ +# druid.button API + +> at /druid/base/button.lua + +Basic Druid input component. Handle input on node and provide different callbacks on touch events. + +### Setup +Create button with druid: `button = druid:new_button(node_name, callback, [params], [animation_node])` +Where node_name is name of node from GUI scene. You can use `node_name` as input trigger zone and point another node for animation via `animation_node` + +### Notes +- Button callback have next params: (self, params, button_instance) +- - **self** - Druid self context +- - **params** - Additional params, specified on button creating +- - **button_instance** - button itself +- You can set _params_ on button callback on button creating: `druid:new_button("node_name", callback, params)`. +- Button have several events like on_click, on_repeated_click, on_long_click, on_hold_click, on_double_click +- Click event will not trigger if between pressed and released state cursor was outside of node zone +- Button can have key trigger to use them by key: `button:set_key_trigger` +- + +## Functions + +- [init](#init) +- [set_animations_disabled](#set_animations_disabled) +- [set_enabled](#set_enabled) +- [is_enabled](#is_enabled) +- [set_click_zone](#set_click_zone) +- [set_key_trigger](#set_key_trigger) +- [get_key_trigger](#get_key_trigger) +- [set_check_function](#set_check_function) +- [set_web_user_interaction](#set_web_user_interaction) + +## Fields + +- [on_click](#on_click) +- [on_pressed](#on_pressed) +- [on_repeated_click](#on_repeated_click) +- [on_long_click](#on_long_click) +- [on_double_click](#on_double_click) +- [on_hold_callback](#on_hold_callback) +- [on_click_outside](#on_click_outside) +- [node](#node) +- [node_id](#node_id) +- [anim_node](#anim_node) +- [params](#params) +- [hover](#hover) +- [click_zone](#click_zone) +- [start_scale](#start_scale) +- [start_pos](#start_pos) +- [disabled](#disabled) +- [key_trigger](#key_trigger) +- [style](#style) +- [druid](#druid) +- [is_repeated_started](#is_repeated_started) +- [last_pressed_time](#last_pressed_time) +- [last_released_time](#last_released_time) +- [click_in_row](#click_in_row) +- [can_action](#can_action) + + + +### init + +--- +```lua +button:init(node_or_node_id, [callback], [custom_args], [anim_node]) +``` + +The constructor for the button component + +- **Parameters:** + - `node_or_node_id` *(string|node)*: Node name or GUI Node itself + - `[callback]` *(fun()|nil)*: Callback on button click + - `[custom_args]` *(any)*: Custom args for any Button event, will be passed to callbacks + - `[anim_node]` *(string|node|nil)*: Node to animate instead of trigger node, useful for animating small icons on big panels + +### set_animations_disabled + +--- +```lua +button:set_animations_disabled() +``` + +Remove default button style animations + +- **Returns:** + - `self` *(druid.button)*: The current button instance + +### set_enabled + +--- +```lua +button:set_enabled([state]) +``` + +Set button enabled state. +The style.on_set_enabled will be triggered. +Disabled button is not clickable. + +- **Parameters:** + - `[state]` *(boolean|nil)*: Enabled state + +- **Returns:** + - `self` *(druid.button)*: The current button instance + +### is_enabled + +--- +```lua +button:is_enabled() +``` + +Get button enabled state. +By default all Buttons are enabled on creating. + +- **Returns:** + - `is_enabled` *(boolean)*: True, if button is enabled now, False otherwise + +### set_click_zone + +--- +```lua +button:set_click_zone([zone]) +``` + +Set additional button click area. +Useful to restrict click outside of stencil node or scrollable content. +If button node placed inside stencil node, it will be automatically set to this stencil node. + +- **Parameters:** + - `[zone]` *(string|node|nil)*: Gui node + +- **Returns:** + - `self` *(druid.button)*: The current button instance + +### set_key_trigger + +--- +```lua +button:set_key_trigger(key) +``` + +Set key name to trigger this button by keyboard. + +- **Parameters:** + - `key` *(string|hash)*: The action_id of the input key. Example: "key_space" + +- **Returns:** + - `self` *(druid.button)*: The current button instance + +### get_key_trigger + +--- +```lua +button:get_key_trigger() +``` + +Get current key name to trigger this button. + +- **Returns:** + - `key_trigger` *(hash)*: The action_id of the input key + +### set_check_function + +--- +```lua +button:set_check_function([check_function], [failure_callback]) +``` + +Set function for additional check for button click availability. + +- **Parameters:** + - `[check_function]` *(function|nil)*: Should return true or false. If true - button can be pressed. + - `[failure_callback]` *(function|nil)*: Function will be called on button click, if check function returns false + +- **Returns:** + - `self` *(druid.button)*: The current button instance + +### set_web_user_interaction + +--- +```lua +button:set_web_user_interaction([is_web_mode]) +``` + +Set Button mode to work inside user HTML5 interaction event. +It's required to make protected things like copy & paste text, show mobile keyboard, etc +The HTML5 button doesn't call any events except on_click event. +If the game is not HTML, html mode will be not enabled + +- **Parameters:** + - `[is_web_mode]` *(boolean|nil)*: If true - button will be called inside html5 callback + +- **Returns:** + - `self` *(druid.button)*: The current button instance + + +## Fields + +- **on_click** (_event_): fun(self, custom_args, button_instance) + + +- **on_pressed** (_event_): fun(self, custom_args, button_instance) + + +- **on_repeated_click** (_event_): fun(self, custom_args, button_instance, click_count) Repeated click callback, while holding the button + + +- **on_long_click** (_event_): fun(self, custom_args, button_instance, hold_time) Callback on long button tap + + +- **on_double_click** (_event_): fun(self, custom_args, button_instance, click_amount) Different callback, if tap button 2+ in row + + +- **on_hold_callback** (_event_): fun(self, custom_args, button_instance, press_time) Hold callback, before long_click trigger + + +- **on_click_outside** (_event_): fun(self, custom_args, button_instance) + + +- **node** (_node_): Clickable node + + +- **node_id** (_hash_): Node id + + +- **anim_node** (_node_): Animation node. In default case equals to clickable node + + +- **params** (_any_): Custom arguments for any Button event + + +- **hover** (_druid.hover_): Hover component for this button + + +- **click_zone** (_node_): Click zone node to restrict click area + + +- **start_scale** (_vector3_): Start scale of the button + + +- **start_pos** (_vector3_): Start position of the button + + +- **disabled** (_boolean_): Is button disabled + + +- **key_trigger** (_hash_): Key trigger for this button + + +- **style** (_table_): Style for this button + + +- **druid** (_druid.instance_): The Druid Factory used to create components + + +- **is_repeated_started** (_boolean_) + + +- **last_pressed_time** (_integer_) + + +- **last_released_time** (_integer_) + + +- **click_in_row** (_integer_) + + +- **can_action** (_boolean_): Can't interact, if touch outside of button + diff --git a/api/components/base/component_api.md b/api/components/base/component_api.md new file mode 100644 index 0000000..8cf0370 --- /dev/null +++ b/api/components/base/component_api.md @@ -0,0 +1,445 @@ +# druid.component API + +> at /druid/component.lua + +## Functions + +- [create](#create) +- [create_widget](#create_widget) + +- [init](#init) +- [update](#update) +- [on_remove](#on_remove) +- [on_input](#on_input) +- [on_input_interrupt](#on_input_interrupt) +- [on_message](#on_message) +- [on_late_init](#on_late_init) +- [on_focus_lost](#on_focus_lost) +- [on_focus_gained](#on_focus_gained) +- [on_style_change](#on_style_change) +- [on_layout_change](#on_layout_change) +- [on_window_resized](#on_window_resized) +- [on_language_change](#on_language_change) +- [set_style](#set_style) +- [set_template](#set_template) +- [get_template](#get_template) +- [set_nodes](#set_nodes) +- [get_context](#get_context) +- [get_node](#get_node) +- [get_druid](#get_druid) +- [get_name](#get_name) +- [get_parent_name](#get_parent_name) +- [get_input_priority](#get_input_priority) +- [set_input_priority](#set_input_priority) +- [reset_input_priority](#reset_input_priority) +- [get_uid](#get_uid) +- [set_input_enabled](#set_input_enabled) +- [get_input_enabled](#get_input_enabled) +- [get_parent_component](#get_parent_component) +- [get_nodes](#get_nodes) +- [get_childrens](#get_childrens) + +## Fields + +- [druid](#druid) + + + +### create + +--- +```lua +component.create([name], [input_priority]) +``` + +Сreate a new component class, which will inherit from the base Druid component. + +- **Parameters:** + - `[name]` *(string|nil)*: The name of the component + - `[input_priority]` *(number|nil)*: The input priority. The bigger number processed first. Default value: 10 + +- **Returns:** + - `` *(druid.component)*: + +### create_widget + +--- +```lua +component.create_widget(self, widget_class, context) +``` + +Create the Druid component instance + +- **Parameters:** + - `self` *(druid.instance)*: The Druid Factory used to create components + - `widget_class` *(druid.widget)*: + - `context` *(table)*: + +- **Returns:** + - `` *(druid.widget)*: + +### init + +--- +```lua +component:init() +``` + +Called when component is created + +### update + +--- +```lua +component:update() +``` + +Called every frame + +### on_remove + +--- +```lua +component:on_remove() +``` + +Called when component is removed + +### on_input + +--- +```lua +component:on_input() +``` + +Called when input event is triggered + +### on_input_interrupt + +--- +```lua +component:on_input_interrupt() +``` + +Called when input event is consumed before + +### on_message + +--- +```lua +component:on_message() +``` + +Called when message is received + +### on_late_init + +--- +```lua +component:on_late_init() +``` + +Called before update once time after GUI init + +### on_focus_lost + +--- +```lua +component:on_focus_lost() +``` + +Called when app lost focus + +### on_focus_gained + +--- +```lua +component:on_focus_gained() +``` + +Called when app gained focus + +### on_style_change + +--- +```lua +component:on_style_change() +``` + +Called when style is changed + +### on_layout_change + +--- +```lua +component:on_layout_change() +``` + +Called when GUI layout is changed + +### on_window_resized + +--- +```lua +component:on_window_resized() +``` + +Called when window is resized + +### on_language_change + +--- +```lua +component:on_language_change() +``` + +Called when language is changed + +### set_style + +--- +```lua +component:set_style([druid_style]) +``` + +Set component style. Pass nil to clear style + +- **Parameters:** + - `[druid_style]` *(table|nil)*: + +- **Returns:** + - `self` *()*: The component itself for chaining + +### set_template + +--- +```lua +component:set_template([template]) +``` + +Set component template name. Pass nil to clear template. +This template id used to access nodes inside the template on GUI scene. +Parent template will be added automatically if exist. + +- **Parameters:** + - `[template]` *(string|nil)*: + +- **Returns:** + - `self` *()*: The component itself for chaining + +### get_template + +--- +```lua +component:get_template() +``` + +Get full template name. + +- **Returns:** + - `` *(string)*: + +### set_nodes + +--- +```lua +component:set_nodes([nodes]) +``` + +Set current component nodes, returned from `gui.clone_tree` function. + +- **Parameters:** + - `[nodes]` *(string|node|table|nil)*: The nodes table from gui.clone_tree or prefab node to use for clone or node id to clone + +- **Returns:** + - `` *(druid.component)*: + +### get_context + +--- +```lua +component:get_context() +``` + +Return current component context + +- **Returns:** + - `context` *(any)*: Usually it's self of script but can be any other Druid component + +### get_node + +--- +```lua +component:get_node(node_id) +``` + +Get component node by node_id. Respect to current template and nodes. + +- **Parameters:** + - `node_id` *(string|node)*: + +- **Returns:** + - `` *(node)*: + +### get_druid + +--- +```lua +component:get_druid([template], [nodes]) +``` + +Get Druid instance for inner component creation. + +- **Parameters:** + - `[template]` *(string|nil)*: + - `[nodes]` *(string|node|table|nil)*: The nodes table from gui.clone_tree or prefab node to use for clone or node id to clone + +- **Returns:** + - `` *(druid.instance)*: + +### get_name + +--- +```lua +component:get_name() +``` + +Get component name + +- **Returns:** + - `name` *(string)*: The component name + uid + +### get_parent_name + +--- +```lua +component:get_parent_name() +``` + +Get parent component name + +- **Returns:** + - `parent_name` *(string|nil)*: The parent component name if exist or nil + +### get_input_priority + +--- +```lua +component:get_input_priority() +``` + +Get component input priority, the bigger number processed first. Default value: 10 + +- **Returns:** + - `` *(number)*: + +### set_input_priority + +--- +```lua +component:set_input_priority(value, [is_temporary]) +``` + +Set component input priority, the bigger number processed first. Default value: 10 + +- **Parameters:** + - `value` *(number)*: + - `[is_temporary]` *(boolean|nil)*: If true, the reset input priority will return to previous value + +- **Returns:** + - `self` *(druid.component)*: The component itself for chaining + +### reset_input_priority + +--- +```lua +component:reset_input_priority() +``` + +Reset component input priority to it's default value, that was set in `create` function or `set_input_priority` + +- **Returns:** + - `self` *(druid.component)*: The component itself for chaining + +### get_uid + +--- +```lua +component:get_uid() +``` + +Get component UID, unique identifier created in component creation order. + +- **Returns:** + - `uid` *(number)*: The component uid + +### set_input_enabled + +--- +```lua +component:set_input_enabled(state) +``` + +Set component input state. By default it's enabled. +If input is disabled, the component will not receive input events. +Recursive for all children components. + +- **Parameters:** + - `state` *(boolean)*: + +- **Returns:** + - `self` *(druid.component)*: The component itself for chaining + +### get_input_enabled + +--- +```lua +component:get_input_enabled() +``` + +Get component input state. By default it's enabled. Can be disabled by `set_input_enabled` function. + +- **Returns:** + - `` *(boolean)*: + +### get_parent_component + +--- +```lua +component:get_parent_component() +``` + +Get parent component + +- **Returns:** + - `parent_component` *(druid.component|nil)*: The parent component if exist or nil + +### get_nodes + +--- +```lua +component:get_nodes() +``` + +Get current component nodes + +- **Returns:** + - `` *(table|nil)*: + +### get_childrens + +--- +```lua +component:get_childrens() +``` + +Return all children components, recursive + +- **Returns:** + - `Array` *(table)*: of childrens if the Druid component instance + + +## Fields + +- **druid** (_druid.instance_): Druid instance to create inner components + diff --git a/api/components/base/drag_api.md b/api/components/base/drag_api.md new file mode 100644 index 0000000..18974de --- /dev/null +++ b/api/components/base/drag_api.md @@ -0,0 +1,176 @@ +# druid.drag API + +> at /druid/base/drag.lua + +A component that allows you to subscribe to drag events over a node + +## Functions + +- [init](#init) +- [set_drag_cursors](#set_drag_cursors) +- [set_click_zone](#set_click_zone) +- [set_enabled](#set_enabled) +- [is_enabled](#is_enabled) + +## Fields + +- [node](#node) +- [on_touch_start](#on_touch_start) +- [on_touch_end](#on_touch_end) +- [on_drag_start](#on_drag_start) +- [on_drag](#on_drag) +- [on_drag_end](#on_drag_end) +- [style](#style) +- [click_zone](#click_zone) +- [is_touch](#is_touch) +- [is_drag](#is_drag) +- [can_x](#can_x) +- [can_y](#can_y) +- [dx](#dx) +- [dy](#dy) +- [touch_id](#touch_id) +- [x](#x) +- [y](#y) +- [screen_x](#screen_x) +- [screen_y](#screen_y) +- [touch_start_pos](#touch_start_pos) +- [druid](#druid) +- [hover](#hover) + + + +### init + +--- +```lua +drag:init(node_or_node_id, [on_drag_callback]) +``` + +The constructor for Drag component + +- **Parameters:** + - `node_or_node_id` *(string|node)*: The node to subscribe to drag events over + - `[on_drag_callback]` *(fun(self: any, touch: any))*: The callback to call when a drag occurs + +### set_drag_cursors + +--- +```lua +drag:set_drag_cursors(is_enabled) +``` + +Set Drag component enabled state. + +- **Parameters:** + - `is_enabled` *(boolean)*: True if Drag component is enabled + +### set_click_zone + +--- +```lua +drag:set_click_zone([node]) +``` + +Set Drag click zone + +- **Parameters:** + - `[node]` *(string|node|nil)*: Node or node id + +- **Returns:** + - `self` *(druid.drag)*: Current instance + +### set_enabled + +--- +```lua +drag:set_enabled(is_enabled) +``` + +Set Drag component enabled state. + +- **Parameters:** + - `is_enabled` *(boolean)*: + +- **Returns:** + - `self` *(druid.drag)*: Current instance + +### is_enabled + +--- +```lua +drag:is_enabled() +``` + +Check if Drag component is capture input + +- **Returns:** + - `is_enabled` *(boolean)*: True if Drag component is enabled + + +## Fields + +- **node** (_node_): The node to subscribe to drag events over + + +- **on_touch_start** (_event_): fun(self, touch) The event triggered when a touch starts + + +- **on_touch_end** (_event_): fun(self, touch) The event triggered when a touch ends + + +- **on_drag_start** (_event_): fun(self, touch) The event triggered when a drag starts + + +- **on_drag** (_event_): fun(self, touch) The event triggered when a drag occurs + + +- **on_drag_end** (_event_): fun(self, touch) The event triggered when a drag ends + + +- **style** (_druid.drag.style_): The style of Drag component + + +- **click_zone** (_node_): The click zone of Drag component + + +- **is_touch** (_boolean_): True if a touch is active + + +- **is_drag** (_boolean_): True if a drag is active + + +- **can_x** (_boolean_): True if Drag can move horizontally + + +- **can_y** (_boolean_): True if Drag can move vertically + + +- **dx** (_number_): The horizontal drag distance + + +- **dy** (_number_): The vertical drag distance + + +- **touch_id** (_number_): The touch id + + +- **x** (_number_): The current x position + + +- **y** (_number_): The current y position + + +- **screen_x** (_number_): The current screen x position + + +- **screen_y** (_number_): The current screen y position + + +- **touch_start_pos** (_vector3_): The touch start position + + +- **druid** (_druid.instance_): The Druid Factory used to create components + + +- **hover** (_druid.hover_): The component for handling hover events on a node + diff --git a/api/components/base/hover_api.md b/api/components/base/hover_api.md new file mode 100644 index 0000000..eb96672 --- /dev/null +++ b/api/components/base/hover_api.md @@ -0,0 +1,144 @@ +# druid.hover API + +> at /druid/base/hover.lua + +The component for handling hover events on a node + +## Functions + +- [init](#init) +- [set_hover](#set_hover) +- [is_hovered](#is_hovered) +- [set_mouse_hover](#set_mouse_hover) +- [is_mouse_hovered](#is_mouse_hovered) +- [set_click_zone](#set_click_zone) +- [set_enabled](#set_enabled) +- [is_enabled](#is_enabled) + +## Fields + +- [node](#node) +- [on_hover](#on_hover) +- [on_mouse_hover](#on_mouse_hover) +- [style](#style) +- [click_zone](#click_zone) + + + +### init + +--- +```lua +hover:init(node, on_hover_callback, on_mouse_hover) +``` + +The constructor for the hover component + +- **Parameters:** + - `node` *(node)*: Gui node + - `on_hover_callback` *(function)*: Hover callback + - `on_mouse_hover` *(function)*: On mouse hover callback + +### set_hover + +--- +```lua +hover:set_hover([state]) +``` + +Set hover state + +- **Parameters:** + - `[state]` *(boolean|nil)*: The hover state + +### is_hovered + +--- +```lua +hover:is_hovered() +``` + +Return current hover state. True if touch action was on the node at current time + +- **Returns:** + - `is_hovered` *(boolean)*: The current hovered state + +### set_mouse_hover + +--- +```lua +hover:set_mouse_hover([state]) +``` + +Set mouse hover state + +- **Parameters:** + - `[state]` *(boolean|nil)*: The mouse hover state + +### is_mouse_hovered + +--- +```lua +hover:is_mouse_hovered() +``` + +Return current hover state. True if nil action_id (usually desktop mouse) was on the node at current time + +- **Returns:** + - `The` *(boolean)*: current hovered state + +### set_click_zone + +--- +```lua +hover:set_click_zone([zone]) +``` + +Strict hover click area. Useful for no click events outside stencil node + +- **Parameters:** + - `[zone]` *(string|node|nil)*: Gui node + +### set_enabled + +--- +```lua +hover:set_enabled([state]) +``` + +Set enable state of hover component. +If hover is not enabled, it will not generate +any hover events + +- **Parameters:** + - `[state]` *(boolean|nil)*: The hover enabled state + +### is_enabled + +--- +```lua +hover:is_enabled() +``` + +Return current hover enabled state + +- **Returns:** + - `The` *(boolean)*: hover enabled state + + +## Fields + +- **node** (_node_): Gui node + + +- **on_hover** (_event_): fun(self: druid.hover, is_hover: boolean) Hover event + + +- **on_mouse_hover** (_event_): fun(self: druid.hover, is_hover: boolean) Mouse hover event + + +- **style** (_druid.hover.style_): Style of the hover component + + +- **click_zone** (_node_): Click zone of the hover component + diff --git a/api/components/base/scroll_api.md b/api/components/base/scroll_api.md new file mode 100644 index 0000000..7790377 --- /dev/null +++ b/api/components/base/scroll_api.md @@ -0,0 +1,395 @@ +# druid.scroll API + +> at /druid/base/scroll.lua + +Basic Druid scroll component. Handles all scrolling behavior in Druid GUI. + +### Setup +Create scroll component with druid: `druid:new_scroll(view_node, content_node)` + +### Notes +- View_node is the static part that captures user input and recognizes scrolling touches +- Content_node is the dynamic part that will change position according to the scroll system +- Initial scroll size will be equal to content_node size +- The initial view box will be equal to view_node size +- Scroll by default style has inertia and extra size for stretching effect +- You can setup "points of interest" to make scroll always center on closest point +- Scroll events: +- - on_scroll(self, position): On scroll move callback +- - on_scroll_to(self, position, is_instant): On scroll_to function callback +- - on_point_scroll(self, item_index, position): On scroll_to_index function callback +- Multitouch is required for scroll. Scroll correctly handles touch_id swap while dragging + +## Functions + +- [init](#init) +- [scroll_to](#scroll_to) +- [scroll_to_index](#scroll_to_index) +- [scroll_to_percent](#scroll_to_percent) +- [get_percent](#get_percent) +- [set_size](#set_size) +- [set_view_size](#set_view_size) +- [update_view_size](#update_view_size) +- [set_inert](#set_inert) +- [is_inert](#is_inert) +- [set_extra_stretch_size](#set_extra_stretch_size) +- [get_scroll_size](#get_scroll_size) +- [set_points](#set_points) +- [set_horizontal_scroll](#set_horizontal_scroll) +- [set_vertical_scroll](#set_vertical_scroll) +- [is_node_in_view](#is_node_in_view) +- [bind_grid](#bind_grid) +- [set_click_zone](#set_click_zone) + +## Fields + +- [node](#node) +- [click_zone](#click_zone) +- [on_scroll](#on_scroll) +- [on_scroll_to](#on_scroll_to) +- [on_point_scroll](#on_point_scroll) +- [view_node](#view_node) +- [view_border](#view_border) +- [content_node](#content_node) +- [view_size](#view_size) +- [position](#position) +- [target_position](#target_position) +- [available_pos](#available_pos) +- [available_size](#available_size) +- [drag](#drag) +- [selected](#selected) +- [is_animate](#is_animate) +- [style](#style) +- [druid](#druid) +- [hover](#hover) +- [points](#points) +- [available_pos_extra](#available_pos_extra) +- [available_size_extra](#available_size_extra) + + + +### init + +--- +```lua +scroll:init(view_node, content_node) +``` + +The Scroll constructor + +- **Parameters:** + - `view_node` *(string|node)*: GUI view scroll node - the static part that captures user input + - `content_node` *(string|node)*: GUI content scroll node - the dynamic part that will change position + +### scroll_to + +--- +```lua +scroll:scroll_to(point, [is_instant]) +``` + +Start scroll to target point. + +- **Parameters:** + - `point` *(vector3)*: Target point + - `[is_instant]` *(boolean|nil)*: Instant scroll flag + +### scroll_to_index + +--- +```lua +scroll:scroll_to_index(index, [skip_cb]) +``` + +Scroll to item in scroll by point index. + +- **Parameters:** + - `index` *(number)*: Point index + - `[skip_cb]` *(boolean|nil)*: If true, skip the point callback + +### scroll_to_percent + +--- +```lua +scroll:scroll_to_percent(percent, [is_instant]) +``` + +Start scroll to target scroll percent + +- **Parameters:** + - `percent` *(vector3)*: target percent + - `[is_instant]` *(boolean|nil)*: instant scroll flag + +### get_percent + +--- +```lua +scroll:get_percent() +``` + +Return current scroll progress status. + Values will be in [0..1] interval + +- **Returns:** + - `New` *(vector3)*: vector with scroll progress values + +### set_size + +--- +```lua +scroll:set_size(size, [offset]) +``` + +Set scroll content size. + It will change content gui node size + +- **Parameters:** + - `size` *(vector3)*: The new size for content node + - `[offset]` *(vector3|nil)*: Offset value to set, where content is starts + +- **Returns:** + - `self` *(druid.scroll)*: Current scroll instance + +### set_view_size + +--- +```lua +scroll:set_view_size(size) +``` + +Set new scroll view size in case the node size was changed. + +- **Parameters:** + - `size` *(vector3)*: The new size for view node + +- **Returns:** + - `self` *(druid.scroll)*: Current scroll instance + +### update_view_size + +--- +```lua +scroll:update_view_size() +``` + +Refresh scroll view size, used when view node size is changed + +- **Returns:** + - `self` *(druid.scroll)*: Current scroll instance + +### set_inert + +--- +```lua +scroll:set_inert(state) +``` + +Enable or disable scroll inert + If disabled, scroll through points (if exist) + If no points, just simple drag without inertion + +- **Parameters:** + - `state` *(boolean)*: Inert scroll state + +- **Returns:** + - `self` *(druid.scroll)*: Current scroll instance + +### is_inert + +--- +```lua +scroll:is_inert() +``` + +Return if scroll have inertion + +- **Returns:** + - `is_inert` *(boolean)*: If scroll have inertion + +### set_extra_stretch_size + +--- +```lua +scroll:set_extra_stretch_size([stretch_size]) +``` + +Set extra size for scroll stretching + Set 0 to disable stretching effect + +- **Parameters:** + - `[stretch_size]` *(number|nil)*: Size in pixels of additional scroll area + +- **Returns:** + - `self` *(druid.scroll)*: Current scroll instance + +### get_scroll_size + +--- +```lua +scroll:get_scroll_size() +``` + +Return vector of scroll size with width and height. + +- **Returns:** + - `Available` *(vector3)*: scroll size + +### set_points + +--- +```lua +scroll:set_points(points) +``` + +Set points of interest. + Scroll will always centered on closer points + +- **Parameters:** + - `points` *(table)*: Array of vector3 points + +- **Returns:** + - `self` *(druid.scroll)*: Current scroll instance + +### set_horizontal_scroll + +--- +```lua +scroll:set_horizontal_scroll(state) +``` + +Lock or unlock horizontal scroll + +- **Parameters:** + - `state` *(boolean)*: True, if horizontal scroll is enabled + +- **Returns:** + - `self` *(druid.scroll)*: Current scroll instance + +### set_vertical_scroll + +--- +```lua +scroll:set_vertical_scroll(state) +``` + +Lock or unlock vertical scroll + +- **Parameters:** + - `state` *(boolean)*: True, if vertical scroll is enabled + +- **Returns:** + - `self` *(druid.scroll)*: Current scroll instance + +### is_node_in_view + +--- +```lua +scroll:is_node_in_view(node) +``` + +Check node if it visible now on scroll. + Extra border is not affected. Return true for elements in extra scroll zone + +- **Parameters:** + - `node` *(node)*: The node to check + +- **Returns:** + - `True` *(boolean)*: if node in visible scroll area + +### bind_grid + +--- +```lua +scroll:bind_grid([grid]) +``` + +Bind the grid component (Static or Dynamic) to recalculate + scroll size on grid changes + +- **Parameters:** + - `[grid]` *(druid.grid|nil)*: Druid grid component + +- **Returns:** + - `self` *(druid.scroll)*: Current scroll instance + +### set_click_zone + +--- +```lua +scroll:set_click_zone(node) +``` + +Strict drag scroll area. Useful for + restrict events outside stencil node + +- **Parameters:** + - `node` *(string|node)*: Gui node + + +## Fields + +- **node** (_node_): The root node + + +- **click_zone** (_node_): Optional click zone to restrict scroll area + + +- **on_scroll** (_event_): fun(self: druid.scroll, position: vector3) Triggered on scroll move + + +- **on_scroll_to** (_event_): fun(self: druid.scroll, target: vector3, is_instant: boolean) Triggered on scroll_to + + +- **on_point_scroll** (_event_): fun(self: druid.scroll, index: number, point: vector3) Triggered on scroll_to_index + + +- **view_node** (_node_): The scroll view node (static part) + + +- **view_border** (_vector4_): The scroll view borders + + +- **content_node** (_node_): The scroll content node (moving part) + + +- **view_size** (_vector3_): Size of the view node + + +- **position** (_vector3_): Current scroll position + + +- **target_position** (_vector3_): Target scroll position for animations + + +- **available_pos** (_vector4_): Available content position (min_x, max_y, max_x, min_y) + + +- **available_size** (_vector3_): Size of available positions (width, height, 0) + + +- **drag** (_druid.drag_): The drag component instance + + +- **selected** (_number_): Current selected point of interest index + + +- **is_animate** (_boolean_): True if scroll is animating + + +- **style** (_druid.scroll.style_): Component style parameters + + +- **druid** (_druid.instance_): The Druid Factory used to create components + + +- **hover** (_druid.hover_): The component for handling hover events on a node + + +- **points** (_table_) + + +- **available_pos_extra** (_vector4_) + + +- **available_size_extra** (_vector3_) + diff --git a/api/components/base/static_grid_api.md b/api/components/base/static_grid_api.md new file mode 100644 index 0000000..82e7dd2 --- /dev/null +++ b/api/components/base/static_grid_api.md @@ -0,0 +1,387 @@ +# druid.grid API + +> at /druid/base/static_grid.lua + +The component for manage the nodes position in the grid with various options + +## Functions + +- [init](#init) +- [get_pos](#get_pos) +- [get_index](#get_index) +- [get_index_by_node](#get_index_by_node) +- [set_anchor](#set_anchor) +- [refresh](#refresh) +- [set_pivot](#set_pivot) +- [add](#add) +- [set_items](#set_items) +- [remove](#remove) +- [get_size](#get_size) +- [get_size_for](#get_size_for) +- [get_borders](#get_borders) +- [get_all_pos](#get_all_pos) +- [set_position_function](#set_position_function) +- [clear](#clear) +- [get_offset](#get_offset) +- [set_in_row](#set_in_row) +- [set_item_size](#set_item_size) +- [sort_nodes](#sort_nodes) + +## Fields + +- [on_add_item](#on_add_item) +- [on_remove_item](#on_remove_item) +- [on_change_items](#on_change_items) +- [on_clear](#on_clear) +- [on_update_positions](#on_update_positions) +- [parent](#parent) +- [nodes](#nodes) +- [first_index](#first_index) +- [last_index](#last_index) +- [anchor](#anchor) +- [pivot](#pivot) +- [node_size](#node_size) +- [border](#border) +- [in_row](#in_row) +- [style](#style) +- [node_pivot](#node_pivot) + + + +### init + +--- +```lua +grid:init(parent, element, [in_row]) +``` + +The constructor for the grid component + +- **Parameters:** + - `parent` *(string|node)*: The GUI Node container, where grid's items will be placed + - `element` *(node)*: Element prefab. Need to get it size + - `[in_row]` *(number|nil)*: How many nodes in row can be placed. By default 1 + +### get_pos + +--- +```lua +grid:get_pos(index) +``` + +Return pos for grid node index + +- **Parameters:** + - `index` *(number)*: The grid element index + +- **Returns:** + - `position` *(vector3)*: Node position + +### get_index + +--- +```lua +grid:get_index(pos) +``` + +Return grid index by position + +- **Parameters:** + - `pos` *(vector3)*: The node position in the grid + +- **Returns:** + - `index` *(number)*: The node index + +### get_index_by_node + +--- +```lua +grid:get_index_by_node(node) +``` + +Return grid index by node + +- **Parameters:** + - `node` *(node)*: The gui node in the grid + +- **Returns:** + - `index` *(number|nil)*: The node index + +### set_anchor + +--- +```lua +grid:set_anchor(anchor) +``` + +Set grid anchor. Default anchor is equal to anchor of grid parent node + +- **Parameters:** + - `anchor` *(vector3)*: Anchor + +### refresh + +--- +```lua +grid:refresh() +``` + +Instantly update the grid content + +- **Returns:** + - `self` *(druid.grid)*: Current grid instance + +### set_pivot + +--- +```lua +grid:set_pivot(pivot) +``` + +Set grid pivot + +- **Parameters:** + - `pivot` *(constant)*: The new pivot + +- **Returns:** + - `self` *(druid.grid)*: Current grid instance + +### add + +--- +```lua +grid:add(item, [index], [shift_policy], [is_instant]) +``` + +Add new item to the grid + +- **Parameters:** + - `item` *(node)*: GUI node + - `[index]` *(number|nil)*: The item position. By default add as last item + - `[shift_policy]` *(number|nil)*: How shift nodes, if required. Default: const.SHIFT.RIGHT + - `[is_instant]` *(boolean|nil)*: If true, update node positions instantly + +- **Returns:** + - `self` *(druid.grid)*: Current grid instance + +### set_items + +--- +```lua +grid:set_items(nodes, [is_instant]) +``` + +Set new items to the grid. All previous items will be removed + +- **Parameters:** + - `nodes` *(node[])*: The new grid nodes + - `[is_instant]` *(boolean|nil)*: If true, update node positions instantly + +- **Returns:** + - `self` *(druid.grid)*: Current grid instance + +### remove + +--- +```lua +grid:remove(index, [shift_policy], [is_instant]) +``` + +Remove the item from the grid. Note that gui node will be not deleted + +- **Parameters:** + - `index` *(number)*: The grid node index to remove + - `[shift_policy]` *(number|nil)*: How shift nodes, if required. Default: const.SHIFT.RIGHT + - `[is_instant]` *(boolean|nil)*: If true, update node positions instantly + +- **Returns:** + - `node` *(node)*: The deleted gui node from grid + +### get_size + +--- +```lua +grid:get_size() +``` + +Return grid content size + +- **Returns:** + - `size` *(vector3)*: The grid content size + +### get_size_for + +--- +```lua +grid:get_size_for(count) +``` + +Return grid content size for given count of nodes + +- **Parameters:** + - `count` *(number)*: The count of nodes + +- **Returns:** + - `size` *(vector3)*: The grid content size + +### get_borders + +--- +```lua +grid:get_borders() +``` + +Return grid content borders + +- **Returns:** + - `borders` *(vector4)*: The grid content borders + +### get_all_pos + +--- +```lua +grid:get_all_pos() +``` + +Return array of all node positions + +- **Returns:** + - `positions` *(vector3[])*: All grid node positions + +### set_position_function + +--- +```lua +grid:set_position_function(callback) +``` + +Change set position function for grid nodes. It will call on + update poses on grid elements. Default: gui.set_position + +- **Parameters:** + - `callback` *(function)*: Function on node set position + +- **Returns:** + - `self` *(druid.grid)*: Current grid instance + +### clear + +--- +```lua +grid:clear() +``` + +Clear grid nodes array. GUI nodes will be not deleted! + If you want to delete GUI nodes, use static_grid.nodes array before grid:clear + +- **Returns:** + - `self` *(druid.grid)*: Current grid instance + +### get_offset + +--- +```lua +grid:get_offset() +``` + +Return StaticGrid offset, where StaticGrid content starts. + +- **Returns:** + - `offset` *(vector3)*: The StaticGrid offset + +### set_in_row + +--- +```lua +grid:set_in_row(in_row) +``` + +Set new in_row elements for grid + +- **Parameters:** + - `in_row` *(number)*: The new in_row value + +- **Returns:** + - `self` *(druid.grid)*: Current grid instance + +### set_item_size + +--- +```lua +grid:set_item_size([width], [height]) +``` + +Set new node size for grid + +- **Parameters:** + - `[width]` *(number|nil)*: The new node width + - `[height]` *(number|nil)*: The new node height + +- **Returns:** + - `self` *(druid.grid)*: Current grid instance + +### sort_nodes + +--- +```lua +grid:sort_nodes(comparator) +``` + +Sort grid nodes by custom comparator function + +- **Parameters:** + - `comparator` *(function)*: The comparator function. (a, b) -> boolean + +- **Returns:** + - `self` *(druid.grid)*: Current grid instance + + +## Fields + +- **on_add_item** (_event_): fun(self: druid.grid, item: node, index: number) Trigger on add item event + + +- **on_remove_item** (_event_): fun(self: druid.grid, index: number) Trigger on remove item event + + +- **on_change_items** (_event_): fun(self: druid.grid, index: number) Trigger on change items event + + +- **on_clear** (_event_): fun(self: druid.grid) Trigger on clear event + + +- **on_update_positions** (_event_): fun(self: druid.grid) Trigger on update positions event + + +- **parent** (_node_): Parent node + + +- **nodes** (_node[]_): Nodes array + + +- **first_index** (_number_): First index + + +- **last_index** (_number_): Last index + + +- **anchor** (_vector3_): Anchor + + +- **pivot** (_vector3_): Pivot + + +- **node_size** (_vector3_): Node size + + +- **border** (_vector4_): Border + + +- **in_row** (_number_): In row + + +- **style** (_druid.grid.style_): Style + + +- **node_pivot** (_unknown_) + diff --git a/api/components/base/text_api.md b/api/components/base/text_api.md new file mode 100644 index 0000000..3f53635 --- /dev/null +++ b/api/components/base/text_api.md @@ -0,0 +1,349 @@ +# druid.text API + +> at /druid/base/text.lua + +Basic Druid text component. Text components by default have the text size adjusting. + +### Setup +Create text node with druid: `text = druid:new_text(node_name, [initial_value], [text_adjust_type])` + +### Notes +- Text component by default have auto adjust text sizing. Text never will be bigger, than text node size, which you can setup in GUI scene. +- Text pivot can be changed with `text:set_pivot`, and text will save their position inside their text size box +- There are several text adjust types: +- - **"downscale"** - Change text's scale to fit in the text node size (default) +- - **"trim"** - Trim the text with postfix (default - "...") to fit in the text node size +- - **"no_adjust"** - No any adjust, like default Defold text node +- - **"downscale_limited"** - Change text's scale like downscale, but there is limit for text's scale +- - **"scroll"** - Change text's pivot to imitate scrolling in the text box. Use with stencil node for better effect. +- - **"scale_then_scroll"** - Combine two modes: first limited downscale, then scroll +- - **"trim_left"** - Trim the text with postfix (default - "...") to fit in the text node size +- - **"scale_then_trim"** - Combine two modes: first limited downscale, then trim +- - **"scale_then_trim_left"** - Combine two modes: first limited downscale, then trim left + +## Functions + +- [init](#init) +- [get_text_size](#get_text_size) +- [get_text_index_by_width](#get_text_index_by_width) +- [set_to](#set_to) +- [set_text](#set_text) +- [get_text](#get_text) +- [set_size](#set_size) +- [set_color](#set_color) +- [set_alpha](#set_alpha) +- [set_scale](#set_scale) +- [set_pivot](#set_pivot) +- [is_multiline](#is_multiline) +- [set_text_adjust](#set_text_adjust) +- [set_minimal_scale](#set_minimal_scale) +- [get_text_adjust](#get_text_adjust) + +## Fields + +- [node](#node) +- [on_set_text](#on_set_text) +- [on_update_text_scale](#on_update_text_scale) +- [on_set_pivot](#on_set_pivot) +- [style](#style) +- [start_pivot](#start_pivot) +- [start_scale](#start_scale) +- [scale](#scale) +- [pos](#pos) +- [node_id](#node_id) +- [start_size](#start_size) +- [text_area](#text_area) +- [adjust_type](#adjust_type) +- [color](#color) +- [last_value](#last_value) +- [last_scale](#last_scale) + + + +### init + +--- +```lua +text:init(node, [value], adjust_type) +``` + +The Text constructor +```lua +adjust_type: + | "downscale" + | "trim" + | "no_adjust" + | "downscale_limited" + | "scroll" + | "scale_then_scroll" + | "trim_left" + | "scale_then_trim" + | "scale_then_trim_left" +``` + +- **Parameters:** + - `node` *(string|node)*: Node name or GUI Text Node itself + - `[value]` *(string|nil)*: Initial text. Default value is node text from GUI scene. Default: nil + - `adjust_type` *("downscale"|"downscale_limited"|"no_adjust"|"scale_then_scroll"|"scale_then_trim"...(+5))*: Adjust type for text. By default is "downscale". Options: "downscale", "trim", "no_adjust", "downscale_limited", "scroll", "scale_then_scroll", "trim_left", "scale_then_trim", "scale_then_trim_left" + +### get_text_size + +--- +```lua +text:get_text_size([text]) +``` + +Calculate text width with font with respect to trailing space + +- **Parameters:** + - `[text]` *(string|nil)*: The text to calculate the size of, if nil - use current text + +- **Returns:** + - `width` *(number)*: The text width + - `height` *(number)*: The text height + +### get_text_index_by_width + +--- +```lua +text:get_text_index_by_width(width) +``` + +Get chars count by width + +- **Parameters:** + - `width` *(number)*: The width to get the chars count of + +- **Returns:** + - `index` *(number)*: The chars count + +### set_to + +--- +```lua +text:set_to(set_to) +``` + +Set text to text field + +- **Parameters:** + - `set_to` *(string)*: Text for node + +- **Returns:** + - `self` *(druid.text)*: Current text instance + +### set_text + +--- +```lua +text:set_text([new_text]) +``` + +- **Parameters:** + - `[new_text]` *(any)*: + +- **Returns:** + - `` *(druid.text)*: + +### get_text + +--- +```lua +text:get_text() +``` + +- **Returns:** + - `` *(unknown)*: + +### set_size + +--- +```lua +text:set_size(size) +``` + +Set text area size + +- **Parameters:** + - `size` *(vector3)*: The new text area size + +- **Returns:** + - `self` *(druid.text)*: Current text instance + +### set_color + +--- +```lua +text:set_color(color) +``` + +Set color + +- **Parameters:** + - `color` *(vector4)*: Color for node + +- **Returns:** + - `self` *(druid.text)*: Current text instance + +### set_alpha + +--- +```lua +text:set_alpha(alpha) +``` + +Set alpha + +- **Parameters:** + - `alpha` *(number)*: Alpha for node + +- **Returns:** + - `self` *(druid.text)*: Current text instance + +### set_scale + +--- +```lua +text:set_scale(scale) +``` + +Set scale + +- **Parameters:** + - `scale` *(vector3)*: Scale for node + +- **Returns:** + - `self` *(druid.text)*: Current text instance + +### set_pivot + +--- +```lua +text:set_pivot(pivot) +``` + +Set text pivot. Text will re-anchor inside text area + +- **Parameters:** + - `pivot` *(userdata)*: The gui.PIVOT_* constant + +- **Returns:** + - `self` *(druid.text)*: Current text instance + +### is_multiline + +--- +```lua +text:is_multiline() +``` + +Return true, if text with line break + +- **Returns:** + - `Is` *(boolean)*: text node with line break + +### set_text_adjust + +--- +```lua +text:set_text_adjust(adjust_type, [minimal_scale]) +``` + +Set text adjust, refresh the current text visuals, if needed +```lua +adjust_type: + | "downscale" + | "trim" + | "no_adjust" + | "downscale_limited" + | "scroll" + | "scale_then_scroll" + | "trim_left" + | "scale_then_trim" + | "scale_then_trim_left" +``` + +- **Parameters:** + - `adjust_type` *("downscale"|"downscale_limited"|"no_adjust"|"scale_then_scroll"|"scale_then_trim"...(+5))*: The adjust type to set, values: "downscale", "trim", "no_adjust", "downscale_limited", "scroll", "scale_then_scroll", "trim_left", "scale_then_trim", "scale_then_trim_left" + - `[minimal_scale]` *(number|nil)*: To remove minimal scale, use `text:set_minimal_scale(nil)`, if pass nil - not change minimal scale + +- **Returns:** + - `self` *(druid.text)*: Current text instance + +### set_minimal_scale + +--- +```lua +text:set_minimal_scale(minimal_scale) +``` + +Set minimal scale for "downscale_limited" or "scale_then_scroll" adjust types + +- **Parameters:** + - `minimal_scale` *(number)*: If pass nil - not use minimal scale + +- **Returns:** + - `self` *(druid.text)*: Current text instance + +### get_text_adjust + +--- +```lua +text:get_text_adjust() +``` + +Return current text adjust type + +- **Returns:** + - `adjust_type` *(string)*: The current text adjust type + + +## Fields + +- **node** (_node_): The text node + + +- **on_set_text** (_event_): fun(self: druid.text, text: string) The event triggered when the text is set + + +- **on_update_text_scale** (_event_): fun(self: druid.text, scale: vector3, metrics: table) The event triggered when the text scale is updated + + +- **on_set_pivot** (_event_): fun(self: druid.text, pivot: userdata) The event triggered when the text pivot is set + + +- **style** (_druid.text.style_): The style of the text + + +- **start_pivot** (_userdata_): The start pivot of the text + + +- **start_scale** (_vector3_): The start scale of the text + + +- **scale** (_vector3_): The current scale of the text + + +- **pos** (_unknown_) + + +- **node_id** (_unknown_) + + +- **start_size** (_unknown_) + + +- **text_area** (_unknown_) + + +- **adjust_type** (_string|"downscale"|"downscale_limited"|"no_adjust"|"scale_then_scroll"...(+6)_) + + +- **color** (_unknown_) + + +- **last_value** (_unknown_) + + +- **last_scale** (_vector3_) + diff --git a/api/components/custom/rich_input_api.md b/api/components/custom/rich_input_api.md new file mode 100644 index 0000000..1412c21 --- /dev/null +++ b/api/components/custom/rich_input_api.md @@ -0,0 +1,168 @@ +# druid.rich_input API + +> at /druid/custom/rich_input/rich_input.lua + +The component that handles a rich text input field, it's a wrapper around the druid.input component + +## Functions + +- [init](#init) +- [set_placeholder](#set_placeholder) +- [select](#select) +- [set_text](#set_text) +- [set_font](#set_font) +- [get_text](#get_text) +- [set_allowed_characters](#set_allowed_characters) + +## Fields + +- [root](#root) +- [input](#input) +- [cursor](#cursor) +- [cursor_text](#cursor_text) +- [cursor_position](#cursor_position) +- [druid](#druid) +- [is_lshift](#is_lshift) +- [is_lctrl](#is_lctrl) +- [is_button_input_enabled](#is_button_input_enabled) +- [drag](#drag) +- [placeholder](#placeholder) +- [text_position](#text_position) + + + +### init + +--- +```lua +rich_input:init(template, nodes) +``` + +- **Parameters:** + - `template` *(string)*: The template string name + - `nodes` *(table)*: Nodes table from gui.clone_tree + +### set_placeholder + +--- +```lua +rich_input:set_placeholder(placeholder_text) +``` + +Set placeholder text + +- **Parameters:** + - `placeholder_text` *(string)*: The placeholder text + +- **Returns:** + - `self` *(druid.rich_input)*: Current instance + +### select + +--- +```lua +rich_input:select() +``` + +Select input field + +- **Returns:** + - `self` *(druid.rich_input)*: Current instance + +### set_text + +--- +```lua +rich_input:set_text(text) +``` + +Set input field text + +- **Parameters:** + - `text` *(string)*: The input text + +- **Returns:** + - `self` *(druid.rich_input)*: Current instance + +### set_font + +--- +```lua +rich_input:set_font(font) +``` + +Set input field font + +- **Parameters:** + - `font` *(hash)*: The font hash + +- **Returns:** + - `self` *(druid.rich_input)*: Current instance + +### get_text + +--- +```lua +rich_input:get_text() +``` + +Set input field text + +- **Returns:** + - `` *(string)*: + +### set_allowed_characters + +--- +```lua +rich_input:set_allowed_characters(characters) +``` + +Set allowed charaters for input field. + See: https://defold.com/ref/stable/string/ + ex: [%a%d] for alpha and numeric + +- **Parameters:** + - `characters` *(string)*: Regular expression for validate user input + +- **Returns:** + - `self` *(druid.rich_input)*: Current instance + + +## Fields + +- **root** (_node_): The root node of the rich input + + +- **input** (_druid.input_): The input component + + +- **cursor** (_node_): The cursor node + + +- **cursor_text** (_node_): The cursor text node + + +- **cursor_position** (_vector3_): The position of the cursor + + +- **druid** (_druid.instance_): The Druid Factory used to create components + + +- **is_lshift** (_boolean_) + + +- **is_lctrl** (_boolean_) + + +- **is_button_input_enabled** (_unknown_) + + +- **drag** (_druid.drag_): A component that allows you to subscribe to drag events over a node + + +- **placeholder** (_druid.text_): Basic Druid text component. Text components by default have the text size adjusting. + + +- **text_position** (_unknown_) + diff --git a/api/components/custom/rich_text_api.md b/api/components/custom/rich_text_api.md new file mode 100644 index 0000000..4bbaa65 --- /dev/null +++ b/api/components/custom/rich_text_api.md @@ -0,0 +1,153 @@ +# druid.rich_text API + +> at /druid/custom/rich_text/rich_text.lua + +The component that handles a rich text display, allows to custom color, size, font, etc. of the parts of the text + +## Functions + +- [init](#init) +- [set_text](#set_text) +- [get_text](#get_text) +- [clear](#clear) +- [tagged](#tagged) +- [get_words](#get_words) +- [get_line_metric](#get_line_metric) + +## Fields + +- [root](#root) +- [text_prefab](#text_prefab) +- [style](#style) + + + +### init + +--- +```lua +rich_text:init(text_node, [value]) +``` + +- **Parameters:** + - `text_node` *(string|node)*: The text node to make Rich Text + - `[value]` *(string|nil)*: The initial text value. Default will be gui.get_text(text_node) + +### set_text + +--- +```lua +rich_text:set_text([text]) +``` + +Set text for Rich Text + +- **Parameters:** + - `[text]` *(string|nil)*: The text to set + +- **Returns:** + - `words` *(druid.rich_text.word[])*: + - `line_metrics` *(druid.rich_text.lines_metrics)*: + +- **Example Usage:** + +```lua +-- Color +rich_text:set_text("<color=red>Foobar</color>") +rich_text:set_text("<color=1.0,0,0,1.0>Foobar</color>") +rich_text:set_text("<color=#ff0000>Foobar</color>") +rich_text:set_text("<color=#ff0000ff>Foobar</color>") +-- Shadow +rich_text:set_text("<shadow=red>Foobar</shadow>") +rich_text:set_text("<shadow=1.0,0,0,1.0>Foobar</shadow>") +rich_text:set_text("<shadow=#ff0000>Foobar</shadow>") +rich_text:set_text("<shadow=#ff0000ff>Foobar</shadow>") +-- Outline +rich_text:set_text("<outline=red>Foobar</outline>") +rich_text:set_text("<outline=1.0,0,0,1.0>Foobar</outline>") +rich_text:set_text("<outline=#ff0000>Foobar</outline>") +rich_text:set_text("<outline=#ff0000ff>Foobar</outline>") +-- Font +rich_text:set_text("<font=MyCoolFont>Foobar</font>") +-- Size +rich_text:set_text("<size=2>Twice as large</size>") +-- Line break +rich_text:set_text("<br/>Insert a line break") +-- No break +rich_text:set_text("<nobr>Prevent the text from breaking") +-- Image +rich_text:set_text("<img=texture:image>Display image") +rich_text:set_text("<img=texture:image,size>Display image with size") +rich_text:set_text("<img=texture:image,width,height>Display image with width and height") +``` +### get_text + +--- +```lua +rich_text:get_text() +``` + +Get the current text of the rich text + +- **Returns:** + - `text` *(string)*: The current text of the rich text + +### clear + +--- +```lua +rich_text:clear() +``` + +Clear all created words. + +### tagged + +--- +```lua +rich_text:tagged(tag) +``` + +Get all words, which has a passed tag. + +- **Parameters:** + - `tag` *(string)*: The tag to get the words for + +- **Returns:** + - `words` *(druid.rich_text.word[])*: The words with the passed tag + +### get_words + +--- +```lua +rich_text:get_words() +``` + +Get all current created words, each word is a table that contains the information about the word + +- **Returns:** + - `` *(druid.rich_text.word[])*: + +### get_line_metric + +--- +```lua +rich_text:get_line_metric() +``` + +Get the current line metrics + +- **Returns:** + - `lines_metrics` *(druid.rich_text.lines_metrics)*: The line metrics of the rich text + + +## Fields + +- **root** (_node_): The root node of the rich text + + +- **text_prefab** (_node_): The text prefab node + + +- **style** (_table_) + diff --git a/api/components/extended/container_api.md b/api/components/extended/container_api.md new file mode 100644 index 0000000..5c5a58f --- /dev/null +++ b/api/components/extended/container_api.md @@ -0,0 +1,370 @@ +# druid.container API + +> at /druid/extended/container.lua + +Druid component to manage the size and positions with other containers relations to create a adaptable layouts. + +### Setup +Create container component with druid: `container = druid:new_container(node, mode, callback)` + +### Notes +- Container can be used to create adaptable layouts that respond to window size changes +- Container supports different layout modes: FIT, STRETCH, STRETCH_X, STRETCH_Y +- Container can be nested inside other containers +- Container supports fixed margins and percentage-based sizing +- Container can be positioned using pivot points +- Container supports minimum size constraints +- Container can be fitted into window or custom size + +## Functions + +- [init](#init) +- [refresh_origins](#refresh_origins) +- [set_pivot](#set_pivot) +- [set_size](#set_size) +- [get_position](#get_position) +- [set_position](#set_position) +- [get_size](#get_size) +- [get_scale](#get_scale) +- [fit_into_size](#fit_into_size) +- [fit_into_window](#fit_into_window) +- [add_container](#add_container) +- [remove_container_by_node](#remove_container_by_node) +- [set_parent_container](#set_parent_container) +- [refresh](#refresh) +- [refresh_scale](#refresh_scale) +- [update_child_containers](#update_child_containers) +- [create_draggable_corners](#create_draggable_corners) +- [clear_draggable_corners](#clear_draggable_corners) +- [fit_into_node](#fit_into_node) +- [set_min_size](#set_min_size) + +## Fields + +- [node](#node) +- [druid](#druid) +- [node_offset](#node_offset) +- [origin_size](#origin_size) +- [size](#size) +- [origin_position](#origin_position) +- [position](#position) +- [pivot_offset](#pivot_offset) +- [center_offset](#center_offset) +- [mode](#mode) +- [fit_size](#fit_size) +- [min_size_x](#min_size_x) +- [min_size_y](#min_size_y) +- [on_size_changed](#on_size_changed) +- [node_fill_x](#node_fill_x) +- [node_fill_y](#node_fill_y) +- [x_koef](#x_koef) +- [y_koef](#y_koef) +- [x_anchor](#x_anchor) +- [y_anchor](#y_anchor) +- [style](#style) + + + +### init + +--- +```lua +container:init(node, mode, [callback]) +``` + +The Container constructor + +- **Parameters:** + - `node` *(node)*: Gui node + - `mode` *(string)*: Layout mode + - `[callback]` *(fun(self: druid.container, size: vector3)|nil)*: Callback on size changed + +### refresh_origins + +--- +```lua +container:refresh_origins() +``` + +Refresh the origins of the container, origins is the size and position of the container when it was created + +### set_pivot + +--- +```lua +container:set_pivot(pivot) +``` + +Set the pivot of the container + +- **Parameters:** + - `pivot` *(constant)*: The pivot to set + +### set_size + +--- +```lua +container:set_size([width], [height], [anchor_pivot]) +``` + +Set new size of layout node + +- **Parameters:** + - `[width]` *(number|nil)*: The width to set + - `[height]` *(number|nil)*: The height to set + - `[anchor_pivot]` *(constant|nil)*: If set will keep the corner position relative to the new size + +- **Returns:** + - `Container` *(druid.container)*: + +### get_position + +--- +```lua +container:get_position() +``` + +Get the position of the container + +- **Returns:** + - `position` *(vector3)*: The position of the container + +### set_position + +--- +```lua +container:set_position(pos_x, pos_y) +``` + +Set the position of the container + +- **Parameters:** + - `pos_x` *(number)*: The x position to set + - `pos_y` *(number)*: The y position to set + +### get_size + +--- +```lua +container:get_size() +``` + +Get the current size of the layout node + +- **Returns:** + - `size` *(vector3)*: The current size of the layout node + +### get_scale + +--- +```lua +container:get_scale() +``` + +Get the current scale of the layout node + +- **Returns:** + - `scale` *(vector3)*: The current scale of the layout node + +### fit_into_size + +--- +```lua +container:fit_into_size(target_size) +``` + +Set size for layout node to fit inside it + +- **Parameters:** + - `target_size` *(vector3)*: The target size to fit into + +- **Returns:** + - `self` *(druid.container)*: Current container instance + +### fit_into_window + +--- +```lua +container:fit_into_window() +``` + +Set current size for layout node to fit inside it + +- **Returns:** + - `self` *(druid.container)*: Current container instance + +### add_container + +--- +```lua +container:add_container(node_or_container, [mode], [on_resize_callback]) +``` + +- **Parameters:** + - `node_or_container` *(string|table|druid.container|node)*: The node or container to add + - `[mode]` *(string|nil)*: stretch, fit, stretch_x, stretch_y. Default: Pick from node, "fit" or "stretch" + - `[on_resize_callback]` *(fun(self: userdata, size: vector3)|nil)*: + +- **Returns:** + - `Container` *(druid.container)*: New created layout instance + +### remove_container_by_node + +--- +```lua +container:remove_container_by_node([node]) +``` + +- **Parameters:** + - `[node]` *(any)*: + +- **Returns:** + - `` *(druid.container|nil)*: + +### set_parent_container + +--- +```lua +container:set_parent_container([parent_container]) +``` + +- **Parameters:** + - `[parent_container]` *(druid.container|nil)*: Druid component to manage the size and positions with other containers relations to create a adaptable layouts. + +### refresh + +--- +```lua +container:refresh() +``` + +### refresh_scale + +--- +```lua +container:refresh_scale() +``` + +### update_child_containers + +--- +```lua +container:update_child_containers() +``` + +### create_draggable_corners + +--- +```lua +container:create_draggable_corners() +``` + +- **Returns:** + - `self` *(druid.container)*: Current container instance + +### clear_draggable_corners + +--- +```lua +container:clear_draggable_corners() +``` + +- **Returns:** + - `self` *(druid.container)*: Current container instance + +### fit_into_node + +--- +```lua +container:fit_into_node(node) +``` + +Set node for layout node to fit inside it. Pass nil to reset + +- **Parameters:** + - `node` *(string|node)*: The node_id or gui.get_node(node_id) + +- **Returns:** + - `self` *(druid.container)*: Current container instance + +### set_min_size + +--- +```lua +container:set_min_size([min_size_x], [min_size_y]) +``` + +Set the minimum size of the container + +- **Parameters:** + - `[min_size_x]` *(number|nil)*: The minimum size x + - `[min_size_y]` *(number|nil)*: The minimum size y + +- **Returns:** + - `self` *(druid.container)*: Current container instance + + +## Fields + +- **node** (_node_): The gui node + + +- **druid** (_druid.instance_): The druid instance + + +- **node_offset** (_vector4_): The node offset + + +- **origin_size** (_vector3_): The origin size + + +- **size** (_vector3_): The current size + + +- **origin_position** (_vector3_): The origin position + + +- **position** (_vector3_): The current position + + +- **pivot_offset** (_vector3_): The pivot offset + + +- **center_offset** (_vector3_): The center offset + + +- **mode** (_string_): The layout mode + + +- **fit_size** (_vector3_): The fit size + + +- **min_size_x** (_number_): The minimum size x + + +- **min_size_y** (_number_): The minimum size y + + +- **on_size_changed** (_event_): fun(self: druid.container, size: vector3) The event triggered when the size changes + + +- **node_fill_x** (_nil_) + + +- **node_fill_y** (_nil_) + + +- **x_koef** (_number_) + + +- **y_koef** (_number_) + + +- **x_anchor** (_unknown_) + + +- **y_anchor** (_unknown_) + + +- **style** (_table_) + diff --git a/api/components/extended/data_list_api.md b/api/components/extended/data_list_api.md new file mode 100644 index 0000000..bd6d37b --- /dev/null +++ b/api/components/extended/data_list_api.md @@ -0,0 +1,239 @@ +# druid.data_list API + +> at /druid/extended/data_list.lua + +Druid component to manage a list of data with a scrollable view, used to manage huge list data and render only visible elements. + +### Setup +Create data list component with druid: `data_list = druid:new_data_list(scroll, grid, create_function)` + +### Notes +- Data List uses a scroll component for scrolling and a grid component for layout +- Data List only renders visible elements for better performance +- Data List supports caching of elements for better performance +- Data List supports adding, removing and updating elements +- Data List supports scrolling to specific elements +- Data List supports custom element creation and cleanup + +## Functions + +- [init](#init) +- [set_use_cache](#set_use_cache) +- [set_data](#set_data) +- [get_data](#get_data) +- [add](#add) +- [remove](#remove) +- [remove_by_data](#remove_by_data) +- [clear](#clear) +- [get_index](#get_index) +- [get_created_nodes](#get_created_nodes) +- [get_created_components](#get_created_components) +- [scroll_to_index](#scroll_to_index) + +## Fields + +- [scroll](#scroll) +- [grid](#grid) +- [on_scroll_progress_change](#on_scroll_progress_change) +- [on_element_add](#on_element_add) +- [on_element_remove](#on_element_remove) +- [top_index](#top_index) +- [last_index](#last_index) +- [scroll_progress](#scroll_progress) + + + +### init + +--- +```lua +data_list:init(scroll, grid, create_function) +``` + +The DataList constructor + +- **Parameters:** + - `scroll` *(druid.scroll)*: The Scroll instance for Data List component + - `grid` *(druid.grid)*: The StaticGrid instance for Data List component + - `create_function` *(function)*: The create function callback(self, data, index, data_list). Function should return (node, [component]) + +### set_use_cache + +--- +```lua +data_list:set_use_cache(is_use_cache) +``` + +Set use cache version of DataList. Requires make setup of components in on_element_add callback and clean in on_element_remove + +- **Parameters:** + - `is_use_cache` *(boolean)*: Use cache version of DataList + +- **Returns:** + - `self` *(druid.data_list)*: Current DataList instance + +### set_data + +--- +```lua +data_list:set_data(data) +``` + +Set new data set for DataList component + +- **Parameters:** + - `data` *(table)*: The new data array + +- **Returns:** + - `self` *(druid.data_list)*: Current DataList instance + +### get_data + +--- +```lua +data_list:get_data() +``` + +Return current data from DataList component + +- **Returns:** + - `data` *(table)*: The current data array + +### add + +--- +```lua +data_list:add(data, [index], [shift_policy]) +``` + +Add element to DataList + +- **Parameters:** + - `data` *(table)*: The data to add + - `[index]` *(number|nil)*: The index to add the data at + - `[shift_policy]` *(number|nil)*: The constant from const.SHIFT.* + +- **Returns:** + - `self` *(druid.data_list)*: Current DataList instance + +### remove + +--- +```lua +data_list:remove([index], [shift_policy]) +``` + +Remove element from DataList + +- **Parameters:** + - `[index]` *(number|nil)*: The index to remove the data at + - `[shift_policy]` *(number|nil)*: The constant from const.SHIFT.* + +- **Returns:** + - `self` *(druid.data_list)*: Current DataList instance + +### remove_by_data + +--- +```lua +data_list:remove_by_data(data, [shift_policy]) +``` + +Remove element from DataList by data value + +- **Parameters:** + - `data` *(table)*: The data to remove + - `[shift_policy]` *(number|nil)*: The constant from const.SHIFT.* + +- **Returns:** + - `self` *(druid.data_list)*: Current DataList instance + +### clear + +--- +```lua +data_list:clear() +``` + +Clear the DataList and refresh visuals + +- **Returns:** + - `self` *(druid.data_list)*: Current DataList instance + +### get_index + +--- +```lua +data_list:get_index(data) +``` + +Return index for data value + +- **Parameters:** + - `data` *(table)*: + +- **Returns:** + - `` *(unknown|nil)*: + +### get_created_nodes + +--- +```lua +data_list:get_created_nodes() +``` + +Return all currently created nodes in DataList + +- **Returns:** + - `List` *(node[])*: of created nodes + +### get_created_components + +--- +```lua +data_list:get_created_components() +``` + +Return all currently created components in DataList + +- **Returns:** + - `components` *(druid.component[])*: List of created components + +### scroll_to_index + +--- +```lua +data_list:scroll_to_index(index) +``` + +Instant scroll to element with passed index + +- **Parameters:** + - `index` *(number)*: The index to scroll to + + +## Fields + +- **scroll** (_druid.scroll_): The scroll instance for Data List component + + +- **grid** (_druid.grid_): The StaticGrid or DynamicGrid instance for Data List component + + +- **on_scroll_progress_change** (_event_): fun(self: druid.data_list, progress: number) The event triggered when the scroll progress changes + + +- **on_element_add** (_event_): fun(self: druid.data_list, index: number, node: node, instance: druid.component, data: table) The event triggered when a new element is added + + +- **on_element_remove** (_event_): fun(self: druid.data_list, index: number, node: node, instance: druid.component, data: table) The event triggered when an element is removed + + +- **top_index** (_number_): The top index of the visible elements + + +- **last_index** (_number_): The last index of the visible elements + + +- **scroll_progress** (_number_): The scroll progress + diff --git a/api/components/extended/hotkey_api.md b/api/components/extended/hotkey_api.md new file mode 100644 index 0000000..6252692 --- /dev/null +++ b/api/components/extended/hotkey_api.md @@ -0,0 +1,102 @@ +# druid.hotkey API + +> at /druid/extended/hotkey.lua + +Druid component to manage hotkeys and trigger callbacks when hotkeys are pressed. + +### Setup +Create hotkey component with druid: `hotkey = druid:new_hotkey(keys, callback, callback_argument)` + +### Notes +- Hotkey can be triggered by pressing a single key or a combination of keys +- Hotkey supports modificator keys (e.g. Ctrl, Shift, Alt) +- Hotkey can be triggered on key press, release or repeat +- Hotkey can be added or removed at runtime +- Hotkey can be enabled or disabled +- Hotkey can be set to repeat on key hold + +## Functions + +- [init](#init) +- [add_hotkey](#add_hotkey) +- [is_processing](#is_processing) +- [set_repeat](#set_repeat) + +## Fields + +- [on_hotkey_pressed](#on_hotkey_pressed) +- [on_hotkey_released](#on_hotkey_released) +- [style](#style) +- [druid](#druid) + + + +### init + +--- +```lua +hotkey:init(keys, callback, [callback_argument]) +``` + +The Hotkey constructor + +- **Parameters:** + - `keys` *(string|string[])*: The keys to be pressed for trigger callback. Should contains one key and any modificator keys + - `callback` *(function)*: The callback function + - `[callback_argument]` *(any)*: The argument to pass into the callback function + +### add_hotkey + +--- +```lua +hotkey:add_hotkey(keys, [callback_argument]) +``` + +Add hotkey for component callback + +- **Parameters:** + - `keys` *(string|hash|hash[]|string[])*: that have to be pressed before key pressed to activate + - `[callback_argument]` *(any)*: The argument to pass into the callback function + +- **Returns:** + - `self` *(druid.hotkey)*: Current instance + +### is_processing + +--- +```lua +hotkey:is_processing() +``` + +- **Returns:** + - `` *(boolean)*: + +### set_repeat + +--- +```lua +hotkey:set_repeat(is_enabled_repeated) +``` + +If true, the callback will be triggered on action.repeated + +- **Parameters:** + - `is_enabled_repeated` *(boolean)*: The flag value + +- **Returns:** + - `self` *(druid.hotkey)*: Current instance + + +## Fields + +- **on_hotkey_pressed** (_event_): fun(self, context, callback_argument) The event triggered when a hotkey is pressed + + +- **on_hotkey_released** (_event_): fun(self, context, callback_argument) The event triggered when a hotkey is released + + +- **style** (_druid.hotkey.style_): The style of the hotkey component + + +- **druid** (_druid.instance_): The Druid Factory used to create components + diff --git a/api/components/extended/input_api.md b/api/components/extended/input_api.md new file mode 100644 index 0000000..fbfab44 --- /dev/null +++ b/api/components/extended/input_api.md @@ -0,0 +1,307 @@ +# druid.input API + +> at /druid/extended/input.lua + +Basic Druid text input component. Handles user text input via component with button and text. + +### Setup +Create input component with druid: `input = druid:new_input(button_node_name, text_node_name, keyboard_type)` + +### Notes +- Input component handles user text input. Input contains button and text components +- Button needed for selecting/unselecting input field +- Click outside of button to unselect input field +- On focus lost (game minimized) input field will be unselected +- You can setup max length of the text +- You can setup allowed characters. On add not allowed characters `on_input_wrong` will be called + +## Functions + +- [init](#init) +- [get_text_selected](#get_text_selected) +- [get_text_selected_replaced](#get_text_selected_replaced) +- [set_text](#set_text) +- [select](#select) +- [unselect](#unselect) +- [get_text](#get_text) +- [set_max_length](#set_max_length) +- [set_allowed_characters](#set_allowed_characters) +- [reset_changes](#reset_changes) +- [select_cursor](#select_cursor) +- [move_selection](#move_selection) + +## Fields + +- [on_input_select](#on_input_select) +- [on_input_unselect](#on_input_unselect) +- [on_input_text](#on_input_text) +- [on_input_empty](#on_input_empty) +- [on_input_full](#on_input_full) +- [on_input_wrong](#on_input_wrong) +- [on_select_cursor_change](#on_select_cursor_change) +- [style](#style) +- [druid](#druid) +- [text](#text) +- [is_selected](#is_selected) +- [value](#value) +- [previous_value](#previous_value) +- [current_value](#current_value) +- [marked_value](#marked_value) +- [is_empty](#is_empty) +- [text_width](#text_width) +- [market_text_width](#market_text_width) +- [total_width](#total_width) +- [cursor_index](#cursor_index) +- [start_index](#start_index) +- [end_index](#end_index) +- [max_length](#max_length) +- [allowed_characters](#allowed_characters) +- [keyboard_type](#keyboard_type) +- [button](#button) +- [marked_text_width](#marked_text_width) + + + +### init + +--- +```lua +input:init(click_node, text_node, [keyboard_type]) +``` + +- **Parameters:** + - `click_node` *(node)*: Node to enabled input component + - `text_node` *(druid.text|node)*: Text node what will be changed on user input. You can pass text component instead of text node name Text + - `[keyboard_type]` *(constant|nil)*: Gui keyboard type for input field + +### get_text_selected + +--- +```lua +input:get_text_selected() +``` + +- **Returns:** + - `` *(string|unknown)*: + +### get_text_selected_replaced + +--- +```lua +input:get_text_selected_replaced(text) +``` + +Replace selected text with new text + +- **Parameters:** + - `text` *(string)*: The text to replace selected text + +- **Returns:** + - `new_text` *(string)*: New input text + +### set_text + +--- +```lua +input:set_text([input_text]) +``` + +Set text for input field + +- **Parameters:** + - `[input_text]` *(string?)*: The string to apply for input field, if nil - will be set to empty string + +### select + +--- +```lua +input:select() +``` + +Select input field. It will show the keyboard and trigger on_select events + +### unselect + +--- +```lua +input:unselect() +``` + +Remove selection from input. It will hide the keyboard and trigger on_unselect events + +### get_text + +--- +```lua +input:get_text() +``` + +Return current input field text + +- **Returns:** + - `text` *(string)*: The current input field text + +### set_max_length + +--- +```lua +input:set_max_length(max_length) +``` + +Set maximum length for input field. +Pass nil to make input field unliminted (by default) + +- **Parameters:** + - `max_length` *(number)*: Maximum length for input text field + +- **Returns:** + - `self` *(druid.input)*: Current input instance + +### set_allowed_characters + +--- +```lua +input:set_allowed_characters(characters) +``` + +Set allowed charaters for input field. +See: https://defold.com/ref/stable/string/ +ex: [%a%d] for alpha and numeric +ex: [abcdef] to allow only these characters +ex: [^%s] to allow only non-space characters + +- **Parameters:** + - `characters` *(string)*: Regular expression for validate user input + +- **Returns:** + - `self` *(druid.input)*: Current input instance + +### reset_changes + +--- +```lua +input:reset_changes() +``` + +Reset current input selection and return previous value + +- **Returns:** + - `self` *(druid.input)*: Current input instance + +### select_cursor + +--- +```lua +input:select_cursor([cursor_index], [start_index], [end_index]) +``` + +Set cursor position in input field + +- **Parameters:** + - `[cursor_index]` *(number|nil)*: Cursor index for cursor position, if nil - will be set to the end of the text + - `[start_index]` *(number|nil)*: Start index for cursor position, if nil - will be set to the end of the text + - `[end_index]` *(number|nil)*: End index for cursor position, if nil - will be set to the start_index + +- **Returns:** + - `self` *(druid.input)*: Current input instance + +### move_selection + +--- +```lua +input:move_selection(delta, is_add_to_selection, is_move_to_end) +``` + +Change cursor position by delta + +- **Parameters:** + - `delta` *(number)*: side for cursor position, -1 for left, 1 for right + - `is_add_to_selection` *(boolean)*: (Shift key) + - `is_move_to_end` *(boolean)*: (Ctrl key) + +- **Returns:** + - `self` *(druid.input)*: Current input instance + + +## Fields + +- **on_input_select** (_event_): fun(self: druid.input, input: druid.input) The event triggered when the input field is selected + + +- **on_input_unselect** (_event_): fun(self: druid.input, text: string, input: druid.input) The event triggered when the input field is unselected + + +- **on_input_text** (_event_): fun(self: druid.input) The event triggered when the input field is changed + + +- **on_input_empty** (_event_): fun(self: druid.input) The event triggered when the input field is empty + + +- **on_input_full** (_event_): fun(self: druid.input) The event triggered when the input field is full + + +- **on_input_wrong** (_event_): fun(self: druid.input) The event triggered when the input field is wrong + + +- **on_select_cursor_change** (_event_): fun(self: druid.input, cursor_index: number, start_index: number, end_index: number) The event triggered when the cursor index is changed + + +- **style** (_druid.input.style_): The style of the input component + + +- **druid** (_druid.instance_): The Druid Factory used to create components + + +- **text** (_druid.text|node_): Basic Druid text component. Text components by default have the text size adjusting. + + +- **is_selected** (_boolean_) + + +- **value** (_unknown_) + + +- **previous_value** (_unknown_) + + +- **current_value** (_unknown_) + + +- **marked_value** (_string_) + + +- **is_empty** (_boolean_) + + +- **text_width** (_integer_) + + +- **market_text_width** (_integer_) + + +- **total_width** (_integer_) + + +- **cursor_index** (_integer_) + + +- **start_index** (_number_) + + +- **end_index** (_number_) + + +- **max_length** (_nil_) + + +- **allowed_characters** (_nil_) + + +- **keyboard_type** (_constant_) + + +- **button** (_druid.button_): Basic Druid input component. Handle input on node and provide different callbacks on touch events. + + +- **marked_text_width** (_number_) + diff --git a/api/components/extended/lang_text_api.md b/api/components/extended/lang_text_api.md new file mode 100644 index 0000000..4600f61 --- /dev/null +++ b/api/components/extended/lang_text_api.md @@ -0,0 +1,122 @@ +# druid.lang_text API + +> at /druid/extended/lang_text.lua + +The component used for displaying localized text, can automatically update text when locale is changed. +It wraps the Text component to handle localization using druid's get_text_function to set text by its id. + +### Setup +Create lang text component with druid: `text = druid:new_lang_text(node_name, locale_id)` + +### Notes +- Component automatically updates text when locale is changed +- Uses druid's get_text_function to get localized text by id +- Supports string formatting with additional parameters + +## Functions + +- [init](#init) +- [set_to](#set_to) +- [set_text](#set_text) +- [translate](#translate) +- [format](#format) + +## Fields + +- [text](#text) +- [node](#node) +- [on_change](#on_change) +- [druid](#druid) + + + +### init + +--- +```lua +lang_text:init(node, [locale_id], [adjust_type]) +``` + +- **Parameters:** + - `node` *(string|node)*: The node_id or gui.get_node(node_id) + - `[locale_id]` *(string|nil)*: Default locale id or text from node as default. If not provided, will use text from the node + - `[adjust_type]` *(string|nil)*: Adjust type for text. By default is DOWNSCALE. Look const.TEXT_ADJUST for reference + +- **Returns:** + - `` *(druid.lang_text)*: + +### set_to + +--- +```lua +lang_text:set_to(text) +``` + +Setup raw text to lang_text component. This will clear any locale settings. + +- **Parameters:** + - `text` *(string)*: Text for text node + +- **Returns:** + - `self` *(druid.lang_text)*: Current instance + +### set_text + +--- +```lua +lang_text:set_text(text) +``` + +Setup raw text to lang_text component. This will clear any locale settings. + +- **Parameters:** + - `text` *(string)*: Text for text node + +- **Returns:** + - `self` *(druid.lang_text)*: Current instance + +### translate + +--- +```lua +lang_text:translate(locale_id, ...) +``` + +Translate the text by locale_id. The text will be automatically updated when locale changes. + +- **Parameters:** + - `locale_id` *(string)*: Locale id to get text from + - `...` *(...)*: vararg + +- **Returns:** + - `self` *(druid.lang_text)*: Current instance + +### format + +--- +```lua +lang_text:format(...) +``` + +Format string with new text params on localized text. Keeps the current locale but updates the format parameters. + +- **Parameters:** + - `...` *(...)*: vararg + +- **Returns:** + - `self` *(druid.lang_text)*: Current instance + + +## Fields + +- **text** (_druid.text_): The text component + + +- **node** (_node_): The node of the text component + + +- **on_change** (_event_): fun(self: druid.lang_text) The event triggered when the text is changed + + +- **druid** (_druid.instance_): The Druid Factory used to create components + diff --git a/api/components/extended/layout_api.md b/api/components/extended/layout_api.md new file mode 100644 index 0000000..082eebd --- /dev/null +++ b/api/components/extended/layout_api.md @@ -0,0 +1,344 @@ +# druid.layout API + +> at /druid/extended/layout.lua + +Druid component to manage the layout of nodes, placing them inside the node size with respect to the size and pivot of each node. + +### Setup +Create layout component with druid: `layout = druid:new_layout(node, layout_type)` + +### Notes +- Layout can be horizontal, vertical or horizontal with wrapping +- Layout can resize parent node to fit content +- Layout can justify content +- Layout supports margins and padding +- Layout automatically updates when nodes are added or removed +- Layout can be manually updated by calling set_dirty() + +## Functions + +- [init](#init) +- [update](#update) +- [get_entities](#get_entities) +- [set_node_index](#set_node_index) +- [set_margin](#set_margin) +- [set_padding](#set_padding) +- [set_dirty](#set_dirty) +- [set_justify](#set_justify) +- [set_type](#set_type) +- [set_hug_content](#set_hug_content) +- [add](#add) +- [remove](#remove) +- [get_size](#get_size) +- [get_content_size](#get_content_size) +- [refresh_layout](#refresh_layout) +- [clear_layout](#clear_layout) +- [get_node_size](#get_node_size) +- [calculate_rows_data](#calculate_rows_data) +- [set_node_position](#set_node_position) + +## Fields + +- [node](#node) +- [rows_data](#rows_data) +- [is_dirty](#is_dirty) +- [entities](#entities) +- [margin](#margin) +- [padding](#padding) +- [type](#type) +- [is_resize_width](#is_resize_width) +- [is_resize_height](#is_resize_height) +- [is_justify](#is_justify) +- [on_size_changed](#on_size_changed) +- [size](#size) + + + +### init + +--- +```lua +layout:init(node_or_node_id, layout_type) +``` + +```lua +layout_type: + | "horizontal" + | "vertical" + | "horizontal_wrap" +``` + +- **Parameters:** + - `node_or_node_id` *(string|node)*: The node to manage the layout of + - `layout_type` *("horizontal"|"horizontal_wrap"|"vertical")*: The type of layout (horizontal, vertical, horizontal_wrap) + +### update + +--- +```lua +layout:update() +``` + +### get_entities + +--- +```lua +layout:get_entities() +``` + +- **Returns:** + - `entities` *(node[])*: The entities to manage the layout of + +### set_node_index + +--- +```lua +layout:set_node_index(node, index) +``` + +- **Parameters:** + - `node` *(node)*: The node to set the index of + - `index` *(number)*: The index to set the node to + +- **Returns:** + - `self` *(druid.layout)*: for chaining + +### set_margin + +--- +```lua +layout:set_margin([margin_x], [margin_y]) +``` + +Set the margin of the layout + +- **Parameters:** + - `[margin_x]` *(number|nil)*: The margin x + - `[margin_y]` *(number|nil)*: The margin y + +- **Returns:** + - `self` *(druid.layout)*: Current layout instance + +### set_padding + +--- +```lua +layout:set_padding([padding_x], [padding_y], [padding_z], [padding_w]) +``` + +- **Parameters:** + - `[padding_x]` *(number|nil)*: The padding x + - `[padding_y]` *(number|nil)*: The padding y + - `[padding_z]` *(number|nil)*: The padding z + - `[padding_w]` *(number|nil)*: The padding w + +- **Returns:** + - `self` *(druid.layout)*: Current layout instance + +### set_dirty + +--- +```lua +layout:set_dirty() +``` + +- **Returns:** + - `self` *(druid.layout)*: Current layout instance + +### set_justify + +--- +```lua +layout:set_justify(is_justify) +``` + +- **Parameters:** + - `is_justify` *(boolean)*: + +- **Returns:** + - `self` *(druid.layout)*: Current layout instance + +### set_type + +--- +```lua +layout:set_type(layout_type) +``` + +```lua +layout_type: + | "horizontal" + | "vertical" + | "horizontal_wrap" +``` + +- **Parameters:** + - `layout_type` *("horizontal"|"horizontal_wrap"|"vertical")*: + +- **Returns:** + - `self` *(druid.layout)*: Current layout instance + +### set_hug_content + +--- +```lua +layout:set_hug_content(is_hug_width, is_hug_height) +``` + +- **Parameters:** + - `is_hug_width` *(boolean)*: + - `is_hug_height` *(boolean)*: + +- **Returns:** + - `self` *(druid.layout)*: Current layout instance + +### add + +--- +```lua +layout:add(node_or_node_id) +``` + +Add node to layout + +- **Parameters:** + - `node_or_node_id` *(string|node)*: node_or_node_id + +- **Returns:** + - `self` *(druid.layout)*: Current layout instance + +### remove + +--- +```lua +layout:remove(node_or_node_id) +``` + +Remove node from layout + +- **Parameters:** + - `node_or_node_id` *(string|node)*: node_or_node_id + +- **Returns:** + - `self` *(druid.layout)*: for chaining + +### get_size + +--- +```lua +layout:get_size() +``` + +- **Returns:** + - `` *(vector3)*: + +### get_content_size + +--- +```lua +layout:get_content_size() +``` + +- **Returns:** + - `` *(number)*: + - `` *(number)*: + +### refresh_layout + +--- +```lua +layout:refresh_layout() +``` + +- **Returns:** + - `self` *(druid.layout)*: Current layout instance + +### clear_layout + +--- +```lua +layout:clear_layout() +``` + +- **Returns:** + - `self` *(druid.layout)*: Current layout instance + +### get_node_size + +--- +```lua +layout:get_node_size(node) +``` + +- **Parameters:** + - `node` *(node)*: + +- **Returns:** + - `width` *(number)*: The width of the node + - `height` *(number)*: The height of the node + +### calculate_rows_data + +--- +```lua +layout:calculate_rows_data() +``` + +Calculate rows data for layout. Contains total width, height and rows info (width, height, count of elements in row) + +- **Returns:** + - `` *(druid.layout.rows_data)*: + +### set_node_position + +--- +```lua +layout:set_node_position(node, x, y) +``` + +- **Parameters:** + - `node` *(node)*: + - `x` *(number)*: + - `y` *(number)*: + +- **Returns:** + - `` *(node)*: + + +## Fields + +- **node** (_node_): The node to manage the layout of + + +- **rows_data** (_druid.layout.rows_data_): Last calculated rows data + + +- **is_dirty** (_boolean_): True if layout needs to be updated + + +- **entities** (_node[]_): The entities to manage the layout of + + +- **margin** (_{ x: number, y: number }_): The margin of the layout + + +- **padding** (_vector4_): The padding of the layout + + +- **type** (_string_): The type of the layout + + +- **is_resize_width** (_boolean_): True if the layout should resize the width of the node + + +- **is_resize_height** (_boolean_): True if the layout should resize the height of the node + + +- **is_justify** (_boolean_): True if the layout should justify the nodes + + +- **on_size_changed** (_event.on_size_changed_): fun(self: druid.layout, size: vector3) The event triggered when the size of the layout is changed + + +- **size** (_unknown_) + diff --git a/api/components/extended/progress_api.md b/api/components/extended/progress_api.md new file mode 100644 index 0000000..0c1cb37 --- /dev/null +++ b/api/components/extended/progress_api.md @@ -0,0 +1,215 @@ +# druid.progress API + +> at /druid/extended/progress.lua + +Basic Druid progress bar component. Changes the size or scale of a node to represent progress. + +### Setup +Create progress bar component with druid: `progress = druid:new_progress(node_name, key, init_value)` + +### Notes +- Node should have maximum node size in GUI scene, it represents the progress bar's maximum size +- Key is value from druid const: "x" or "y" +- Progress works correctly with 9slice nodes, it tries to set size by _set_size_ first until minimum size is reached, then it continues sizing via _set_scale_ +- Progress bar can fill only by vertical or horizontal size. For diagonal progress bar, just rotate the node in GUI scene +- If you have glitchy or dark texture bugs with progress bar, try to disable mipmaps in your texture profiles + +## Functions + +- [init](#init) +- [update](#update) +- [fill](#fill) +- [empty](#empty) +- [set_to](#set_to) +- [get](#get) +- [set_steps](#set_steps) +- [to](#to) +- [set_max_size](#set_max_size) + +## Fields + +- [node](#node) +- [on_change](#on_change) +- [style](#style) +- [key](#key) +- [prop](#prop) +- [scale](#scale) +- [size](#size) +- [max_size](#max_size) +- [slice](#slice) +- [last_value](#last_value) +- [slice_size](#slice_size) +- [target](#target) +- [steps](#steps) +- [step_callback](#step_callback) +- [target_callback](#target_callback) + + + +### init + +--- +```lua +progress:init(node, key, [init_value]) +``` + +- **Parameters:** + - `node` *(string|node)*: Node name or GUI Node itself. + - `key` *(string)*: Progress bar direction: "x" or "y" + - `[init_value]` *(number|nil)*: Initial value of progress bar (0 to 1). Default: 1 + +### update + +--- +```lua +progress:update(dt) +``` + +- **Parameters:** + - `dt` *(number)*: Delta time + +### fill + +--- +```lua +progress:fill() +``` + +Fill the progress bar + +- **Returns:** + - `self` *(druid.progress)*: Current progress instance + +### empty + +--- +```lua +progress:empty() +``` + +Empty the progress bar + +- **Returns:** + - `self` *(druid.progress)*: Current progress instance + +### set_to + +--- +```lua +progress:set_to(to) +``` + +Instant fill progress bar to value + +- **Parameters:** + - `to` *(number)*: Progress bar value, from 0 to 1 + +- **Returns:** + - `self` *(druid.progress)*: Current progress instance + +### get + +--- +```lua +progress:get() +``` + +Return the current value of the progress bar + +- **Returns:** + - `value` *(number)*: The current value of the progress bar + +### set_steps + +--- +```lua +progress:set_steps(steps, callback) +``` + +Set points on progress bar to fire the callback + +- **Parameters:** + - `steps` *(number[])*: Array of progress bar values + - `callback` *(function)*: Callback on intersect step value + +- **Returns:** + - `self` *(druid.progress)*: Current progress instance + +### to + +--- +```lua +progress:to(to, [callback]) +``` + +Start animation of a progress bar + +- **Parameters:** + - `to` *(number)*: value between 0..1 + - `[callback]` *(function|nil)*: Callback on animation ends + +- **Returns:** + - `self` *(druid.progress)*: Current progress instance + +### set_max_size + +--- +```lua +progress:set_max_size(max_size) +``` + +Set progress bar max node size + +- **Parameters:** + - `max_size` *(vector3)*: The new node maximum (full) size + +- **Returns:** + - `self` *(druid.progress)*: Current progress instance + + +## Fields + +- **node** (_node_): The progress bar node + + +- **on_change** (_event_): fun(self: druid.progress, value: number) Event triggered when progress value changes + + +- **style** (_druid.progress.style_): Component style parameters + + +- **key** (_string_): Progress bar direction: "x" or "y" + + +- **prop** (_hash_): Property for scaling the progress bar + + +- **scale** (_unknown_) + + +- **size** (_unknown_) + + +- **max_size** (_unknown_) + + +- **slice** (_unknown_) + + +- **last_value** (_number_) + + +- **slice_size** (_unknown_) + + +- **target** (_nil_) + + +- **steps** (_number[]_) + + +- **step_callback** (_function_) + + +- **target_callback** (_function|nil_) + diff --git a/api/components/extended/slider_api.md b/api/components/extended/slider_api.md new file mode 100644 index 0000000..8a97afd --- /dev/null +++ b/api/components/extended/slider_api.md @@ -0,0 +1,135 @@ +# druid.slider API + +> at /druid/extended/slider.lua + +Basic Druid slider component. Creates a draggable node over a line with progress reporting. + +### Setup +Create slider component with druid: `slider = druid:new_slider(node_name, end_pos, callback)` + +### Notes +- Pin node should be placed in initial position at zero progress +- It will be available to move Pin node between start pos and end pos +- You can setup points of interests on slider via `slider:set_steps`. If steps exist, slider values will be only from these steps (notched slider) +- Start pos and end pos should be on vertical or horizontal line (their x or y value should be equal) +- To catch input across all slider, you can setup input node via `slider:set_input_node` + +## Functions + +- [init](#init) +- [set](#set) +- [set_steps](#set_steps) +- [set_input_node](#set_input_node) +- [set_enabled](#set_enabled) +- [is_enabled](#is_enabled) + +## Fields + +- [node](#node) +- [on_change_value](#on_change_value) +- [style](#style) + + + +### init + +--- +```lua +slider:init(node, end_pos, [callback]) +``` + +The Slider constructor + +- **Parameters:** + - `node` *(node)*: GUI node to drag as a slider + - `end_pos` *(vector3)*: The end position of slider, should be on the same axis as the node + - `[callback]` *(function|nil)*: On slider change callback + +### set + +--- +```lua +slider:set(value, [is_silent]) +``` + +Set value for slider + +- **Parameters:** + - `value` *(number)*: Value from 0 to 1 + - `[is_silent]` *(boolean|nil)*: Don't trigger event if true + +- **Returns:** + - `self` *(druid.slider)*: Current slider instance + +### set_steps + +--- +```lua +slider:set_steps(steps) +``` + +Set slider steps. Pin node will +apply closest step position + +- **Parameters:** + - `steps` *(number[])*: Array of steps + +- **Returns:** + - `self` *(druid.slider)*: Current slider instance + +### set_input_node + +--- +```lua +slider:set_input_node([input_node]) +``` + +Set input zone for slider. +User can touch any place of node, pin instantly will +move at this position and node drag will start. +This function require the Defold version 1.3.0+ + +- **Parameters:** + - `[input_node]` *(string|node|nil)*: + +- **Returns:** + - `self` *(druid.slider)*: Current slider instance + +### set_enabled + +--- +```lua +slider:set_enabled(is_enabled) +``` + +Set Slider input enabled or disabled + +- **Parameters:** + - `is_enabled` *(boolean)*: True if slider is enabled + +- **Returns:** + - `self` *(druid.slider)*: Current slider instance + +### is_enabled + +--- +```lua +slider:is_enabled() +``` + +Check if Slider component is enabled + +- **Returns:** + - `is_enabled` *(boolean)*: True if slider is enabled + + +## Fields + +- **node** (_node_): The node to manage the slider + + +- **on_change_value** (_event_): fun(self: druid.slider, value: number) The event triggered when the slider value changes + + +- **style** (_table_): The style of the slider + diff --git a/api/components/extended/swipe_api.md b/api/components/extended/swipe_api.md new file mode 100644 index 0000000..2b5fa1d --- /dev/null +++ b/api/components/extended/swipe_api.md @@ -0,0 +1,57 @@ +# druid.swipe API + +> at /druid/extended/swipe.lua + +The component to manage swipe events over a node + +## Functions + +- [init](#init) +- [set_click_zone](#set_click_zone) + +## Fields + +- [node](#node) +- [on_swipe](#on_swipe) +- [style](#style) +- [click_zone](#click_zone) + + + +### init + +--- +```lua +swipe:init(node_or_node_id, on_swipe_callback) +``` + +- **Parameters:** + - `node_or_node_id` *(string|node)*: + - `on_swipe_callback` *(function)*: + +### set_click_zone + +--- +```lua +swipe:set_click_zone([zone]) +``` + +Set the click zone for the swipe, useful for restricting events outside stencil node + +- **Parameters:** + - `[zone]` *(string|node|nil)*: Gui node + + +## Fields + +- **node** (_node_): The node to manage the swipe + + +- **on_swipe** (_event_): fun(context, side, dist, dt) The event triggered when a swipe is detected + + +- **style** (_druid.swipe.style_): The style of the swipe + + +- **click_zone** (_node_): The click zone of the swipe + diff --git a/api/components/extended/timer_api.md b/api/components/extended/timer_api.md new file mode 100644 index 0000000..58a9c91 --- /dev/null +++ b/api/components/extended/timer_api.md @@ -0,0 +1,130 @@ +# druid.timer API + +> at /druid/extended/timer.lua + +Druid component to handle timer work on gui text node. Displays time in a formatted way. + +### Setup +Create timer component with druid: `timer = druid:new_timer(text_node, from_seconds, to_seconds, callback)` + +### Notes +- Timer fires callback when timer value equals to _to_seconds_ +- Timer will set text node with current timer value +- Timer uses update function to handle time + +## Functions + +- [init](#init) +- [set_to](#set_to) +- [set_state](#set_state) +- [set_interval](#set_interval) + +## Fields + +- [on_tick](#on_tick) +- [on_set_enabled](#on_set_enabled) +- [on_timer_end](#on_timer_end) +- [node](#node) +- [from](#from) +- [target](#target) +- [value](#value) +- [is_on](#is_on) +- [temp](#temp) +- [last_value](#last_value) + + + +### init + +--- +```lua +timer:init(node, [seconds_from], [seconds_to], [callback]) +``` + +- **Parameters:** + - `node` *(node)*: Gui text node + - `[seconds_from]` *(number|nil)*: Start timer value in seconds + - `[seconds_to]` *(number|nil)*: End timer value in seconds + - `[callback]` *(function|nil)*: Function that triggers when timer value equals to seconds_to + +- **Returns:** + - `` *(druid.timer)*: + +### set_to + +--- +```lua +timer:set_to(set_to) +``` + +Set the timer to a specific value + +- **Parameters:** + - `set_to` *(number)*: Value in seconds + +- **Returns:** + - `self` *(druid.timer)*: Current timer instance + +### set_state + +--- +```lua +timer:set_state([is_on]) +``` + +Set the timer to a specific value + +- **Parameters:** + - `[is_on]` *(boolean|nil)*: Timer enable state + +- **Returns:** + - `self` *(druid.timer)*: Current timer instance + +### set_interval + +--- +```lua +timer:set_interval(from, to) +``` + +Set the timer interval + +- **Parameters:** + - `from` *(number)*: Start time in seconds + - `to` *(number)*: Target time in seconds + +- **Returns:** + - `self` *(druid.timer)*: Current timer instance + + +## Fields + +- **on_tick** (_event_): fun(context, value) The event triggered when the timer ticks + + +- **on_set_enabled** (_event_): fun(context, is_on) The event triggered when the timer is enabled + + +- **on_timer_end** (_event_): fun(context) The event triggered when the timer ends + + +- **node** (_node_): The node to display the timer + + +- **from** (_number_): The start time of the timer + + +- **target** (_number_): The target time of the timer + + +- **value** (_number_): The current value of the timer + + +- **is_on** (_boolean_): True if the timer is on + + +- **temp** (_unknown_) + + +- **last_value** (_number_) + diff --git a/api/components/widgets/fps_panel_api.md b/api/components/widgets/fps_panel_api.md new file mode 100644 index 0000000..abcf84f --- /dev/null +++ b/api/components/widgets/fps_panel_api.md @@ -0,0 +1,93 @@ +# druid.widget.fps_panel API + +> at /druid/widget/fps_panel/fps_panel.lua + +## Functions + +- [init](#init) +- [on_remove](#on_remove) +- [update](#update) +- [push_fps_value](#push_fps_value) + +## Fields + +- [root](#root) +- [delta_time](#delta_time) +- [collect_time](#collect_time) +- [collect_time_counter](#collect_time_counter) +- [graph_samples](#graph_samples) +- [fps_samples](#fps_samples) +- [mini_graph](#mini_graph) +- [text_min_fps](#text_min_fps) +- [text_fps](#text_fps) +- [timer_id](#timer_id) +- [previous_time](#previous_time) + + + +### init + +--- +```lua +fps_panel:init() +``` + +### on_remove + +--- +```lua +fps_panel:on_remove() +``` + +### update + +--- +```lua +fps_panel:update([dt]) +``` + +- **Parameters:** + - `[dt]` *(any)*: + +### push_fps_value + +--- +```lua +fps_panel:push_fps_value() +``` + + +## Fields + +- **root** (_node_) + + +- **delta_time** (_number_): in seconds + + +- **collect_time** (_integer_): in seconds + + +- **collect_time_counter** (_integer_) + + +- **graph_samples** (_number_) + + +- **fps_samples** (_table_): Store frame time in seconds last collect_time seconds + + +- **mini_graph** (_druid.widget.mini_graph_): Widget to display a several lines with different height in a row + + +- **text_min_fps** (_druid.text_): Basic Druid text component. Text components by default have the text size adjusting. + + +- **text_fps** (_druid.text_): Basic Druid text component. Text components by default have the text size adjusting. + + +- **timer_id** (_unknown_) + + +- **previous_time** (_unknown_) + diff --git a/api/components/widgets/memory_panel_api.md b/api/components/widgets/memory_panel_api.md new file mode 100644 index 0000000..0661cce --- /dev/null +++ b/api/components/widgets/memory_panel_api.md @@ -0,0 +1,101 @@ +# druid.widget.memory_panel API + +> at /druid/widget/memory_panel/memory_panel.lua + +## Functions + +- [init](#init) +- [on_remove](#on_remove) +- [set_low_memory_limit](#set_low_memory_limit) +- [push_next_value](#push_next_value) +- [update_text_memory](#update_text_memory) + +## Fields + +- [root](#root) +- [delta_time](#delta_time) +- [samples_count](#samples_count) +- [memory_limit](#memory_limit) +- [mini_graph](#mini_graph) +- [max_value](#max_value) +- [text_per_second](#text_per_second) +- [text_memory](#text_memory) +- [memory](#memory) +- [memory_samples](#memory_samples) +- [timer_id](#timer_id) + + + +### init + +--- +```lua +memory_panel:init() +``` + +### on_remove + +--- +```lua +memory_panel:on_remove() +``` + +### set_low_memory_limit + +--- +```lua +memory_panel:set_low_memory_limit([limit]) +``` + +- **Parameters:** + - `[limit]` *(any)*: + +### push_next_value + +--- +```lua +memory_panel:push_next_value() +``` + +### update_text_memory + +--- +```lua +memory_panel:update_text_memory() +``` + + +## Fields + +- **root** (_node_) + + +- **delta_time** (_number_) + + +- **samples_count** (_integer_) + + +- **memory_limit** (_integer_) + + +- **mini_graph** (_druid.widget.mini_graph_): Widget to display a several lines with different height in a row + + +- **max_value** (_druid.text_): Basic Druid text component. Text components by default have the text size adjusting. + + +- **text_per_second** (_druid.text_): Basic Druid text component. Text components by default have the text size adjusting. + + +- **text_memory** (_druid.text_): Basic Druid text component. Text components by default have the text size adjusting. + + +- **memory** (_unknown_) + + +- **memory_samples** (_table_) + + +- **timer_id** (_unknown_) + diff --git a/api/components/widgets/mini_graph_api.md b/api/components/widgets/mini_graph_api.md new file mode 100644 index 0000000..d0bf501 --- /dev/null +++ b/api/components/widgets/mini_graph_api.md @@ -0,0 +1,233 @@ +# druid.widget.mini_graph API + +> at /druid/widget/mini_graph/mini_graph.lua + +Widget to display a several lines with different height in a row +Init, set amount of samples and max value of value means that the line will be at max height +Use `push_line_value` to add a new value to the line +Or `set_line_value` to set a value to the line by index +Setup colors inside template file (at minimum and maximum) + +## Functions + +- [init](#init) +- [on_remove](#on_remove) +- [clear](#clear) +- [set_samples](#set_samples) +- [get_samples](#get_samples) +- [set_line_value](#set_line_value) +- [get_line_value](#get_line_value) +- [push_line_value](#push_line_value) +- [set_max_value](#set_max_value) +- [set_line_height](#set_line_height) +- [get_lowest_value](#get_lowest_value) +- [get_highest_value](#get_highest_value) +- [on_drag_widget](#on_drag_widget) +- [toggle_hide](#toggle_hide) + +## Fields + +- [root](#root) +- [text_header](#text_header) +- [icon_drag](#icon_drag) +- [content](#content) +- [layout](#layout) +- [prefab_line](#prefab_line) +- [color_zero](#color_zero) +- [color_one](#color_one) +- [is_hidden](#is_hidden) +- [max_value](#max_value) +- [lines](#lines) +- [values](#values) +- [container](#container) +- [default_size](#default_size) +- [samples](#samples) + + + +### init + +--- +```lua +mini_graph:init() +``` + +### on_remove + +--- +```lua +mini_graph:on_remove() +``` + +### clear + +--- +```lua +mini_graph:clear() +``` + +### set_samples + +--- +```lua +mini_graph:set_samples([samples]) +``` + +- **Parameters:** + - `[samples]` *(any)*: + +### get_samples + +--- +```lua +mini_graph:get_samples() +``` + +- **Returns:** + - `` *(unknown)*: + +### set_line_value + +--- +```lua +mini_graph:set_line_value(index, value) +``` + +Set normalized to control the color of the line + +- **Parameters:** + - `index` *(number)*: + - `value` *(number)*: The normalized value from 0 to 1 + +- **Example Usage:** + +```lua +for index = 1, mini_graph:get_samples() do + mini_graph:set_line_value(index, math.random()) +end +``` +### get_line_value + +--- +```lua +mini_graph:get_line_value([index]) +``` + +- **Parameters:** + - `[index]` *(any)*: + +- **Returns:** + - `` *(number)*: + +### push_line_value + +--- +```lua +mini_graph:push_line_value([value]) +``` + +- **Parameters:** + - `[value]` *(any)*: + +### set_max_value + +--- +```lua +mini_graph:set_max_value([max_value]) +``` + +- **Parameters:** + - `[max_value]` *(any)*: + +### set_line_height + +--- +```lua +mini_graph:set_line_height([index]) +``` + +- **Parameters:** + - `[index]` *(any)*: + +### get_lowest_value + +--- +```lua +mini_graph:get_lowest_value() +``` + +### get_highest_value + +--- +```lua +mini_graph:get_highest_value() +``` + +### on_drag_widget + +--- +```lua +mini_graph:on_drag_widget([dx], [dy]) +``` + +- **Parameters:** + - `[dx]` *(any)*: + - `[dy]` *(any)*: + +### toggle_hide + +--- +```lua +mini_graph:toggle_hide() +``` + +- **Returns:** + - `` *(druid.widget.mini_graph)*: + + +## Fields + +- **root** (_node_) + + +- **text_header** (_druid.text_): Basic Druid text component. Text components by default have the text size adjusting. + + +- **icon_drag** (_node_) + + +- **content** (_node_) + + +- **layout** (_druid.layout_): Druid component to manage the layout of nodes, placing them inside the node size with respect to the size and pivot of each node. + + +- **prefab_line** (_node_) + + +- **color_zero** (_unknown_) + + +- **color_one** (_unknown_) + + +- **is_hidden** (_boolean_) + + +- **max_value** (_integer_): in this value line will be at max height + + +- **lines** (_table_) + + +- **values** (_table_) + + +- **container** (_druid.container_): Druid component to manage the size and positions with other containers relations to create a adaptable layouts. + + +- **default_size** (_vector3_) + + +- **samples** (_any_) + diff --git a/api/components/widgets/properties_panel_api.md b/api/components/widgets/properties_panel_api.md new file mode 100644 index 0000000..94ed4a3 --- /dev/null +++ b/api/components/widgets/properties_panel_api.md @@ -0,0 +1,366 @@ +# druid.widget.properties_panel API + +> at /druid/widget/properties_panel/properties_panel.lua + +## Functions + +- [properties_constructors](#properties_constructors) +- [init](#init) +- [on_remove](#on_remove) +- [on_drag_widget](#on_drag_widget) +- [clear_created_properties](#clear_created_properties) +- [clear](#clear) +- [on_size_changed](#on_size_changed) +- [update](#update) +- [add_checkbox](#add_checkbox) +- [add_slider](#add_slider) +- [add_button](#add_button) +- [add_input](#add_input) +- [add_text](#add_text) +- [add_left_right_selector](#add_left_right_selector) +- [add_vector3](#add_vector3) +- [add_inner_widget](#add_inner_widget) +- [add_widget](#add_widget) +- [remove](#remove) +- [set_hidden](#set_hidden) +- [is_hidden](#is_hidden) +- [set_properties_per_page](#set_properties_per_page) +- [set_page](#set_page) + +## Fields + +- [root](#root) +- [scroll](#scroll) +- [layout](#layout) +- [container](#container) +- [container_content](#container_content) +- [container_scroll_view](#container_scroll_view) +- [contaienr_scroll_content](#contaienr_scroll_content) +- [button_hidden](#button_hidden) +- [text_header](#text_header) +- [paginator](#paginator) +- [properties](#properties) +- [content](#content) +- [default_size](#default_size) +- [current_page](#current_page) +- [properties_per_page](#properties_per_page) +- [property_checkbox_prefab](#property_checkbox_prefab) +- [property_slider_prefab](#property_slider_prefab) +- [property_button_prefab](#property_button_prefab) +- [property_input_prefab](#property_input_prefab) +- [property_text_prefab](#property_text_prefab) +- [property_left_right_selector_prefab](#property_left_right_selector_prefab) +- [property_vector3_prefab](#property_vector3_prefab) +- [is_dirty](#is_dirty) + + + +### properties_constructors + +--- +```lua +properties_panel:properties_constructors() +``` + +List of properties functions to create a new widget. Used to not spawn non-visible widgets but keep the reference + +### init + +--- +```lua +properties_panel:init() +``` + +### on_remove + +--- +```lua +properties_panel:on_remove() +``` + +### on_drag_widget + +--- +```lua +properties_panel:on_drag_widget([dx], [dy]) +``` + +- **Parameters:** + - `[dx]` *(any)*: + - `[dy]` *(any)*: + +### clear_created_properties + +--- +```lua +properties_panel:clear_created_properties() +``` + +### clear + +--- +```lua +properties_panel:clear() +``` + +### on_size_changed + +--- +```lua +properties_panel:on_size_changed([new_size]) +``` + +- **Parameters:** + - `[new_size]` *(any)*: + +### update + +--- +```lua +properties_panel:update([dt]) +``` + +- **Parameters:** + - `[dt]` *(any)*: + +### add_checkbox + +--- +```lua +properties_panel:add_checkbox([on_create]) +``` + +- **Parameters:** + - `[on_create]` *(fun(checkbox: druid.widget.property_checkbox)|nil)*: + +- **Returns:** + - `` *(druid.widget.properties_panel)*: + +### add_slider + +--- +```lua +properties_panel:add_slider([on_create]) +``` + +- **Parameters:** + - `[on_create]` *(fun(slider: druid.widget.property_slider)|nil)*: + +- **Returns:** + - `` *(druid.widget.properties_panel)*: + +### add_button + +--- +```lua +properties_panel:add_button([on_create]) +``` + +- **Parameters:** + - `[on_create]` *(fun(button: druid.widget.property_button)|nil)*: + +- **Returns:** + - `` *(druid.widget.properties_panel)*: + +### add_input + +--- +```lua +properties_panel:add_input([on_create]) +``` + +- **Parameters:** + - `[on_create]` *(fun(input: druid.widget.property_input)|nil)*: + +- **Returns:** + - `` *(druid.widget.properties_panel)*: + +### add_text + +--- +```lua +properties_panel:add_text([on_create]) +``` + +- **Parameters:** + - `[on_create]` *(fun(text: druid.widget.property_text)|nil)*: + +- **Returns:** + - `` *(druid.widget.properties_panel)*: + +### add_left_right_selector + +--- +```lua +properties_panel:add_left_right_selector([on_create]) +``` + +- **Parameters:** + - `[on_create]` *(fun(selector: druid.widget.property_left_right_selector)|nil)*: + +- **Returns:** + - `` *(druid.widget.properties_panel)*: + +### add_vector3 + +--- +```lua +properties_panel:add_vector3([on_create]) +``` + +- **Parameters:** + - `[on_create]` *(fun(vector3: druid.widget.property_vector3)|nil)*: + +- **Returns:** + - `` *(druid.widget.properties_panel)*: + +### add_inner_widget + +--- +```lua +properties_panel:add_inner_widget(widget_class, [template], [nodes], [on_create]) +``` + +- **Parameters:** + - `widget_class` *()*: + - `[template]` *(string|nil)*: + - `[nodes]` *(node|table|nil)*: + - `[on_create]` *(fun(widget: )|nil)*: + +- **Returns:** + - `` *(druid.widget.properties_panel)*: + +### add_widget + +--- +```lua +properties_panel:add_widget(create_widget_callback) +``` + +- **Parameters:** + - `create_widget_callback` *(fun():druid.widget)*: + +- **Returns:** + - `` *(druid.widget.properties_panel)*: + +### remove + +--- +```lua +properties_panel:remove([widget]) +``` + +- **Parameters:** + - `[widget]` *(any)*: + +### set_hidden + +--- +```lua +properties_panel:set_hidden([is_hidden]) +``` + +- **Parameters:** + - `[is_hidden]` *(any)*: + +### is_hidden + +--- +```lua +properties_panel:is_hidden() +``` + +- **Returns:** + - `` *(unknown)*: + +### set_properties_per_page + +--- +```lua +properties_panel:set_properties_per_page(properties_per_page) +``` + +- **Parameters:** + - `properties_per_page` *(number)*: + +### set_page + +--- +```lua +properties_panel:set_page([page]) +``` + +- **Parameters:** + - `[page]` *(any)*: + + +## Fields + +- **root** (_node_) + + +- **scroll** (_druid.scroll_): Basic Druid scroll component. Handles all scrolling behavior in Druid GUI. + + +- **layout** (_druid.layout_): Druid component to manage the layout of nodes, placing them inside the node size with respect to the size and pivot of each node. + + +- **container** (_druid.container_): Druid component to manage the size and positions with other containers relations to create a adaptable layouts. + + +- **container_content** (_druid.container_): Druid component to manage the size and positions with other containers relations to create a adaptable layouts. + + +- **container_scroll_view** (_druid.container_): Druid component to manage the size and positions with other containers relations to create a adaptable layouts. + + +- **contaienr_scroll_content** (_druid.container_): Druid component to manage the size and positions with other containers relations to create a adaptable layouts. + + +- **button_hidden** (_druid.button_): Basic Druid input component. Handle input on node and provide different callbacks on touch events. + + +- **text_header** (_druid.text_): Basic Druid text component. Text components by default have the text size adjusting. + + +- **paginator** (_druid.widget.property_left_right_selector_) + + +- **properties** (_druid.widget[]_): List of created properties + + +- **content** (_node_) + + +- **default_size** (_vector3_) + + +- **current_page** (_integer_) + + +- **properties_per_page** (_integer_) + + +- **property_checkbox_prefab** (_node_) + + +- **property_slider_prefab** (_node_) + + +- **property_button_prefab** (_node_) + + +- **property_input_prefab** (_node_) + + +- **property_text_prefab** (_node_) + + +- **property_left_right_selector_prefab** (_node_) + + +- **property_vector3_prefab** (_node_) + + +- **is_dirty** (_boolean_) + diff --git a/api/druid_api.md b/api/druid_api.md new file mode 100644 index 0000000..52ae0f9 --- /dev/null +++ b/api/druid_api.md @@ -0,0 +1,172 @@ +# druid API + +> at /druid/druid.lua + +Entry point for Druid UI Framework. +Create a new Druid instance and adjust the Druid settings here. + +## Functions + +- [new](#new) +- [register](#register) +- [set_default_style](#set_default_style) +- [set_text_function](#set_text_function) +- [set_sound_function](#set_sound_function) +- [init_window_listener](#init_window_listener) +- [on_window_callback](#on_window_callback) +- [on_language_change](#on_language_change) +- [get_widget](#get_widget) +- [register_druid_as_widget](#register_druid_as_widget) +- [unregister_druid_as_widget](#unregister_druid_as_widget) + + + +### new + +--- +```lua +druid.new(context, [style]) +``` + +Create a new Druid instance for creating GUI components. + +- **Parameters:** + - `context` *(table)*: The Druid context. Usually, this is the self of the gui_script. It is passed into all Druid callbacks. + - `[style]` *(table|nil)*: The Druid style table to override style parameters for this Druid instance. + +- **Returns:** + - `druid_instance` *(druid.instance)*: The new Druid instance + +### register + +--- +```lua +druid.register(name, module) +``` + +Register a new external Druid component. +Register component just makes the druid:new_{name} function. +For example, if you register a component called "my_component", you can create it using druid:new_my_component(...). +This can be useful if you have your own "basic" components that you don't want to require in every file. +The default way to create component is `druid_instance:new(component_class, ...)`. + +- **Parameters:** + - `name` *(string)*: Module name + - `module` *(table)*: Lua table with component + +### set_default_style + +--- +```lua +druid.set_default_style(style) +``` + +Set the default style for all Druid instances. + +- **Parameters:** + - `style` *(table)*: Default style + +### set_text_function + +--- +```lua +druid.set_text_function(callback) +``` + +Set the text function for the LangText component. + +- **Parameters:** + - `callback` *(fun(text_id: string):string)*: Get localized text function + +### set_sound_function + +--- +```lua +druid.set_sound_function(callback) +``` + +Set the sound function to able components to play sounds. + +- **Parameters:** + - `callback` *(fun(sound_id: string))*: Sound play callback + +### init_window_listener + +--- +```lua +druid.init_window_listener() +``` + +Subscribe Druid to the window listener. It will override your previous +window listener, so if you have one, you should call M.on_window_callback manually. + +### on_window_callback + +--- +```lua +druid.on_window_callback(window_event) +``` + +Set the window callback to enable Druid window events. + +- **Parameters:** + - `window_event` *(constant)*: Event param from window listener + +### on_language_change + +--- +```lua +druid.on_language_change() +``` + +Call this function when the game language changes. +It will notify all Druid instances to update the lang text components. + +### get_widget + +--- +```lua +druid.get_widget(widget_class, gui_url) +``` + +Create a widget from the binded Druid GUI instance. +The widget will be created and all widget functions can be called from Game Object contexts. +This allow use only `druid_widget.gui_script` for GUI files and call this widget functions from Game Object script file. +Widget class here is a your lua file for the GUI scene (a widgets in Druid) + +- **Parameters:** + - `widget_class` *()*: The class of the widget to return + - `gui_url` *(url)*: GUI url + +- **Returns:** + - `widget` *(?)*: The new created widget, + +- **Example Usage:** + +```lua +msg.url(nil, nil, "gui_widget") -- current game object +msg.url(nil, object_url, "gui_widget") -- other game object +``` +### register_druid_as_widget + +--- +```lua +druid.register_druid_as_widget(druid) +``` + +Bind a Druid GUI instance to the current game object. +This instance now can produce widgets from `druid.get_widget()` function. +Only one widget can be set per game object. + +- **Parameters:** + - `druid` *(druid.instance)*: The druid instance to register + +### unregister_druid_as_widget + +--- +```lua +druid.unregister_druid_as_widget() +``` + +Should be called on final, where druid instance is destroyed. + diff --git a/api/druid_helper_api.md b/api/druid_helper_api.md new file mode 100644 index 0000000..121ea6e --- /dev/null +++ b/api/druid_helper_api.md @@ -0,0 +1,540 @@ +# druid.helper API + +> at /druid/helper.lua + +The helper module contains various functions that are used in the Druid library. +You can use these functions in your projects as well. + +## Functions + +- [centrate_text_with_icon](#centrate_text_with_icon) +- [centrate_icon_with_text](#centrate_icon_with_text) +- [centrate_nodes](#centrate_nodes) +- [get_node](#get_node) +- [get_screen_aspect_koef](#get_screen_aspect_koef) +- [get_gui_scale](#get_gui_scale) +- [step](#step) +- [clamp](#clamp) +- [distance](#distance) +- [sign](#sign) +- [round](#round) +- [lerp](#lerp) +- [contains](#contains) +- [deepcopy](#deepcopy) +- [add_array](#add_array) +- [pick_node](#pick_node) +- [get_scaled_size](#get_scaled_size) +- [get_scene_scale](#get_scene_scale) +- [get_closest_stencil_node](#get_closest_stencil_node) +- [get_pivot_offset](#get_pivot_offset) +- [is_desktop](#is_desktop) +- [is_mobile](#is_mobile) +- [is_web](#is_web) +- [is_web_mobile](#is_web_mobile) +- [is_multitouch_supported](#is_multitouch_supported) +- [table_to_string](#table_to_string) +- [get_border](#get_border) +- [get_text_metrics_from_node](#get_text_metrics_from_node) +- [insert_with_shift](#insert_with_shift) +- [remove_with_shift](#remove_with_shift) +- [get_full_position](#get_full_position) +- [get_animation_data_from_node](#get_animation_data_from_node) + + + +### centrate_text_with_icon + +--- +```lua +helper.centrate_text_with_icon([text_node], [icon_node], margin) +``` + +Center two nodes. +Nodes will be center around 0 x position +text_node will be first (at left side) + +- **Parameters:** + - `[text_node]` *(node|nil)*: Gui text node + - `[icon_node]` *(node|nil)*: Gui box node + - `margin` *(number)*: Offset between nodes + +- **Returns:** + - `` *(unknown)*: + +### centrate_icon_with_text + +--- +```lua +helper.centrate_icon_with_text([icon_node], [text_node], [margin]) +``` + +Center two nodes. +Nodes will be center around 0 x position +icon_node will be first (at left side) + +- **Parameters:** + - `[icon_node]` *(node|nil)*: Gui box node + - `[text_node]` *(node|nil)*: Gui text node + - `[margin]` *(number|nil)*: Offset between nodes + +- **Returns:** + - `` *(unknown)*: + +### centrate_nodes + +--- +```lua +helper.centrate_nodes([margin], ...) +``` + +Centerate nodes by x position with margin. +This functions calculate total width of nodes and set position for each node. +The centrate will be around 0 x position. + +- **Parameters:** + - `[margin]` *(number|nil)*: Offset between nodes + - `...` *(...)*: vararg + +- **Returns:** + - `` *(unknown)*: + +### get_node + +--- +```lua +helper.get_node(node_id, [template], [nodes]) +``` + +- **Parameters:** + - `node_id` *(string|node)*: + - `[template]` *(string|nil)*: Full Path to the template + - `[nodes]` *(table|nil)*: Nodes what created with gui.clone_tree + +- **Returns:** + - `` *(node)*: + +### get_screen_aspect_koef + +--- +```lua +helper.get_screen_aspect_koef() +``` + +Get current screen stretch multiplier for each side + +- **Returns:** + - `stretch_x` *(number)*: + - `stretch_y` *(number)*: + +### get_gui_scale + +--- +```lua +helper.get_gui_scale() +``` + +Get current GUI scale for each side + +- **Returns:** + - `scale_x` *(number)*: + +### step + +--- +```lua +helper.step(current, target, step) +``` + +Move value from current to target value with step amount + +- **Parameters:** + - `current` *(number)*: Current value + - `target` *(number)*: Target value + - `step` *(number)*: Step amount + +- **Returns:** + - `New` *(number)*: value + +### clamp + +--- +```lua +helper.clamp(value, [v1], [v2]) +``` + +Clamp value between min and max. Works with nil values and swap min and max if needed. + +- **Parameters:** + - `value` *(number)*: Value + - `[v1]` *(number|nil)*: Min value. If nil, value will be clamped to positive infinity + - `[v2]` *(number|nil)*: Max value If nil, value will be clamped to negative infinity + +- **Returns:** + - `value` *(number)*: Clamped value + +### distance + +--- +```lua +helper.distance(x1, y1, x2, y2) +``` + +Calculate distance between two points + +- **Parameters:** + - `x1` *(number)*: First point x + - `y1` *(number)*: First point y + - `x2` *(number)*: Second point x + - `y2` *(number)*: Second point y + +- **Returns:** + - `distance` *(number)*: + +### sign + +--- +```lua +helper.sign(val) +``` + +Return sign of value + +- **Parameters:** + - `val` *(number)*: Value + +- **Returns:** + - `sign` *(number)*: Sign of value, -1, 0 or 1 + +### round + +--- +```lua +helper.round(num, [num_decimal_places]) +``` + +Round number to specified decimal places + +- **Parameters:** + - `num` *(number)*: Number + - `[num_decimal_places]` *(number|nil)*: Decimal places + +- **Returns:** + - `value` *(number)*: Rounded number + +### lerp + +--- +```lua +helper.lerp(a, b, t) +``` + +Lerp between two values + +- **Parameters:** + - `a` *(number)*: First value + - `b` *(number)*: Second value + - `t` *(number)*: Lerp amount + +- **Returns:** + - `value` *(number)*: Lerped value + +### contains + +--- +```lua +helper.contains([array], [value]) +``` + +Check if value contains in array + +- **Parameters:** + - `[array]` *(any[])*: Array to check + - `[value]` *(any)*: Value + +- **Returns:** + - `index` *(number|nil)*: Index of value in array or nil if value not found + +### deepcopy + +--- +```lua +helper.deepcopy(orig_table) +``` + +Make a copy table with all nested tables + +- **Parameters:** + - `orig_table` *(table)*: Original table + +- **Returns:** + - `Copy` *(table)*: of original table + +### add_array + +--- +```lua +helper.add_array([target], [source]) +``` + +Add all elements from source array to the target array + +- **Parameters:** + - `[target]` *(any[])*: Array to put elements from source + - `[source]` *(any[]|nil)*: The source array to get elements from + +- **Returns:** + - `The` *(any[])*: target array + +### pick_node + +--- +```lua +helper.pick_node(node, x, y, [node_click_area]) +``` + +Make a check with gui.pick_node, but with additional node_click_area check. + +- **Parameters:** + - `node` *(node)*: + - `x` *(number)*: + - `y` *(number)*: + - `[node_click_area]` *(node|nil)*: Additional node to check for click area. If nil, only node will be checked + +- **Returns:** + - `` *(unknown)*: + +### get_scaled_size + +--- +```lua +helper.get_scaled_size(node) +``` + +Get size of node with scale multiplier + +- **Parameters:** + - `node` *(node)*: GUI node + +- **Returns:** + - `scaled_size` *(vector3)*: + +### get_scene_scale + +--- +```lua +helper.get_scene_scale(node, [include_passed_node_scale]) +``` + +Get cumulative parent's node scale + +- **Parameters:** + - `node` *(node)*: Gui node + - `[include_passed_node_scale]` *(boolean|nil)*: True if add current node scale to result + +- **Returns:** + - `The` *(vector3)*: scene node scale + +### get_closest_stencil_node + +--- +```lua +helper.get_closest_stencil_node(node) +``` + +Return closest non inverted clipping parent node for given node + +- **Parameters:** + - `node` *(node)*: GUI node + +- **Returns:** + - `stencil_node` *(node|nil)*: The closest stencil node or nil + +### get_pivot_offset + +--- +```lua +helper.get_pivot_offset(pivot_or_node) +``` + +Get pivot offset for given pivot or node +Offset shown in [-0.5 .. 0.5] range, where -0.5 is left or bottom, 0.5 is right or top. + +- **Parameters:** + - `pivot_or_node` *(number|node)*: GUI pivot or node + +- **Returns:** + - `offset` *(vector3)*: The pivot offset + +### is_desktop + +--- +```lua +helper.is_desktop() +``` + +Check if device is desktop + +- **Returns:** + - `` *(boolean)*: + +### is_mobile + +--- +```lua +helper.is_mobile() +``` + +Check if device is native mobile (Android or iOS) + +- **Returns:** + - `Is` *(boolean)*: mobile + +### is_web + +--- +```lua +helper.is_web() +``` + +Check if device is HTML5 + +- **Returns:** + - `` *(boolean)*: + +### is_web_mobile + +--- +```lua +helper.is_web_mobile() +``` + +Check if device is HTML5 mobile + +- **Returns:** + - `` *(boolean)*: + +### is_multitouch_supported + +--- +```lua +helper.is_multitouch_supported() +``` + +Check if device is mobile and can support multitouch + +- **Returns:** + - `is_multitouch` *(boolean)*: Is multitouch supported + +### table_to_string + +--- +```lua +helper.table_to_string(t) +``` + +Simple table to one-line string converter + +- **Parameters:** + - `t` *(table)*: + +- **Returns:** + - `` *(string)*: + +### get_border + +--- +```lua +helper.get_border(node, [offset]) +``` + +Distance from node position to his borders + +- **Parameters:** + - `node` *(node)*: GUI node + - `[offset]` *(vector3|nil)*: Offset from node position. Pass current node position to get non relative border values + +- **Returns:** + - `border` *(vector4)*: Vector4 with border values (left, top, right, down) + +### get_text_metrics_from_node + +--- +```lua +helper.get_text_metrics_from_node(text_node) +``` + +Get text metric from GUI node. + +- **Parameters:** + - `text_node` *(node)*: + +- **Returns:** + - `` *(GUITextMetrics)*: + +### insert_with_shift + +--- +```lua +helper.insert_with_shift(array, [item], [index], [shift_policy]) +``` + +Add value to array with shift policy +Shift policy can be: left, right, no_shift + +- **Parameters:** + - `array` *(table)*: Array + - `[item]` *(any)*: Item to insert + - `[index]` *(number|nil)*: Index to insert. If nil, item will be inserted at the end of array + - `[shift_policy]` *(number|nil)*: The druid_const.SHIFT.* constant + +- **Returns:** + - `Inserted` *(any)*: item + +### remove_with_shift + +--- +```lua +helper.remove_with_shift([array], [index], [shift_policy]) +``` + +Remove value from array with shift policy + Shift policy can be: left, right, no_shift + +- **Parameters:** + - `[array]` *(any[])*: Array + - `[index]` *(number|nil)*: Index to remove. If nil, item will be removed from the end of array + - `[shift_policy]` *(number|nil)*: The druid_const.SHIFT.* constant + +- **Returns:** + - `Removed` *(any)*: item + +### get_full_position + +--- +```lua +helper.get_full_position(node, [root]) +``` + +Get full position of node in the GUI tree + +- **Parameters:** + - `node` *(node)*: GUI node + - `[root]` *(node|nil)*: GUI root node to stop search + +- **Returns:** + - `` *(unknown)*: + +### get_animation_data_from_node + +--- +```lua +helper.get_animation_data_from_node(node, atlas_path) +``` + +- **Parameters:** + - `node` *(node)*: + - `atlas_path` *(string)*: Path to the atlas + +- **Returns:** + - `` *(druid.system.animation_data)*: + diff --git a/api/druid_instance_api.md b/api/druid_instance_api.md new file mode 100644 index 0000000..4ff1195 --- /dev/null +++ b/api/druid_instance_api.md @@ -0,0 +1,540 @@ +# druid.instance API + +> at /druid/system/druid_instance.lua + +The Druid Factory used to create components + +## Functions + +- [create_druid_instance](#create_druid_instance) + +- [new](#new) +- [final](#final) +- [remove](#remove) +- [update](#update) +- [on_input](#on_input) +- [on_message](#on_message) +- [on_window_event](#on_window_event) +- [set_whitelist](#set_whitelist) +- [set_blacklist](#set_blacklist) +- [new_widget](#new_widget) +- [new_button](#new_button) +- [new_blocker](#new_blocker) +- [new_back_handler](#new_back_handler) +- [new_hover](#new_hover) +- [new_text](#new_text) +- [new_grid](#new_grid) +- [new_scroll](#new_scroll) +- [new_drag](#new_drag) +- [new_swipe](#new_swipe) +- [new_lang_text](#new_lang_text) +- [new_slider](#new_slider) +- [new_input](#new_input) +- [new_data_list](#new_data_list) +- [new_timer](#new_timer) +- [new_progress](#new_progress) +- [new_layout](#new_layout) +- [new_container](#new_container) +- [new_hotkey](#new_hotkey) +- [new_rich_text](#new_rich_text) +- [new_rich_input](#new_rich_input) + + + +### create_druid_instance + +--- +```lua +instance.create_druid_instance(context, [style]) +``` + +Druid class constructor which used to create a Druid's components + +- **Parameters:** + - `context` *(table)*: Druid context. Usually it is self of gui script + - `[style]` *(table?)*: Druid style table + +- **Returns:** + - `instance` *(druid.instance)*: The new Druid instance + +### new + +--- +```lua +instance:new(component, ...) +``` + +Create new Druid component instance + +- **Parameters:** + - `component` *()*: The component class to create + - `...` *(...)*: vararg + +- **Returns:** + - `instance` *()*: The new ready to use component + +### final + +--- +```lua +instance:final() +``` + +Call this in gui_script final function. + +### remove + +--- +```lua +instance:remove(component) +``` + +Remove created component from Druid instance. +Component `on_remove` function will be invoked, if exist. + +- **Parameters:** + - `component` *()*: Component instance + +- **Returns:** + - `is_removed` *(boolean)*: True if component was removed + +### update + +--- +```lua +instance:update(dt) +``` + +Call this in gui_script update function. + +- **Parameters:** + - `dt` *(number)*: Delta time + +### on_input + +--- +```lua +instance:on_input(action_id, action) +``` + +Call this in gui_script on_input function. + +- **Parameters:** + - `action_id` *(hash)*: Action_id from on_input + - `action` *(table)*: Action from on_input + +- **Returns:** + - `is_input_consumed` *(boolean)*: The boolean value is input was consumed + +### on_message + +--- +```lua +instance:on_message(message_id, message, sender) +``` + +Call this in gui_script on_message function. + +- **Parameters:** + - `message_id` *(hash)*: Message_id from on_message + - `message` *(table)*: Message from on_message + - `sender` *(url)*: Sender from on_message + +### on_window_event + +--- +```lua +instance:on_window_event(window_event) +``` + +Called when the window event occurs + +- **Parameters:** + - `window_event` *(number)*: The window event + +### set_whitelist + +--- +```lua +instance:set_whitelist(whitelist_components) +``` + +Set whitelist components for input processing. +If whitelist is not empty and component not contains in this list, +component will be not processed on input step + +- **Parameters:** + - `whitelist_components` *(table|druid.component[])*: The array of component to whitelist + +- **Returns:** + - `self` *(druid.instance)*: The Druid instance + +### set_blacklist + +--- +```lua +instance:set_blacklist(blacklist_components) +``` + +Set blacklist components for input processing. +If blacklist is not empty and component contains in this list, +component will be not processed on input step DruidInstance + +- **Parameters:** + - `blacklist_components` *(table|druid.component[])*: The array of component to blacklist + +- **Returns:** + - `self` *(druid.instance)*: The Druid instance + +### new_widget + +--- +```lua +instance:new_widget(widget, [template], [nodes], ...) +``` + +Create new Druid widget instance + +- **Parameters:** + - `widget` *()*: The widget class to create + - `[template]` *(string|nil)*: The template name used by widget + - `[nodes]` *(string|node|table|nil)*: The nodes table from gui.clone_tree or prefab node to use for clone or node id to clone + - `...` *(...)*: vararg + +- **Returns:** + - `widget` *()*: The new ready to use widget + +### new_button + +--- +```lua +instance:new_button(node, [callback], [params], [anim_node]) +``` + +Create Button component + +- **Parameters:** + - `node` *(string|node)*: The node_id or gui.get_node(node_id) + - `[callback]` *(function|event|nil)*: Button callback + - `[params]` *(any)*: Button callback params + - `[anim_node]` *(string|node|nil)*: Button anim node (node, if not provided) + +- **Returns:** + - `button` *(druid.button)*: The new button component + +### new_blocker + +--- +```lua +instance:new_blocker(node) +``` + +Create Blocker component + +- **Parameters:** + - `node` *(string|node)*: The node_id or gui.get_node(node_id) + +- **Returns:** + - `blocker` *(druid.blocker)*: The new blocker component + +### new_back_handler + +--- +```lua +instance:new_back_handler([callback], [params]) +``` + +Create BackHandler component + +- **Parameters:** + - `[callback]` *(function|event|nil)*: The callback(self, custom_args) to call on back event + - `[params]` *(any)*: Callback argument + +- **Returns:** + - `back_handler` *(druid.back_handler)*: The new back handler component + +### new_hover + +--- +```lua +instance:new_hover(node, [on_hover_callback], [on_mouse_hover_callback]) +``` + +Create Hover component + +- **Parameters:** + - `node` *(string|node)*: The node_id or gui.get_node(node_id) + - `[on_hover_callback]` *(function|nil)*: Hover callback + - `[on_mouse_hover_callback]` *(function|nil)*: Mouse hover callback + +- **Returns:** + - `hover` *(druid.hover)*: The new hover component + +### new_text + +--- +```lua +instance:new_text(node, [value], [adjust_type]) +``` + +Create Text component + +- **Parameters:** + - `node` *(string|druid.text|node)*: The node_id or gui.get_node(node_id) + - `[value]` *(string|nil)*: Initial text. Default value is node text from GUI scene. + - `[adjust_type]` *(string|nil)*: Adjust type for text. By default is DOWNSCALE. Look const.TEXT_ADJUST for reference + +- **Returns:** + - `text` *(druid.text)*: The new text component + +### new_grid + +--- +```lua +instance:new_grid(parent_node, item, [in_row]) +``` + +Create Grid component + +- **Parameters:** + - `parent_node` *(string|node)*: The node_id or gui.get_node(node_id). Parent of all Grid items. + - `item` *(string|node)*: Item prefab. Required to get grid's item size. Can be adjusted separately. + - `[in_row]` *(number|nil)*: How many nodes in row can be placed + +- **Returns:** + - `grid` *(druid.grid)*: The new grid component + +### new_scroll + +--- +```lua +instance:new_scroll(view_node, content_node) +``` + +Create Scroll component + +- **Parameters:** + - `view_node` *(string|node)*: The node_id or gui.get_node(node_id). Will used as user input node. + - `content_node` *(string|node)*: The node_id or gui.get_node(node_id). Will used as scrollable node inside view_node. + +- **Returns:** + - `scroll` *(druid.scroll)*: The new scroll component + +### new_drag + +--- +```lua +instance:new_drag(node, [on_drag_callback]) +``` + +Create Drag component + +- **Parameters:** + - `node` *(string|node)*: The node_id or gui.get_node(node_id). Will used as user input node. + - `[on_drag_callback]` *(function|nil)*: Callback for on_drag_event(self, dx, dy) + +- **Returns:** + - `drag` *(druid.drag)*: The new drag component + +### new_swipe + +--- +```lua +instance:new_swipe(node, [on_swipe_callback]) +``` + +Create Swipe component + +- **Parameters:** + - `node` *(string|node)*: The node_id or gui.get_node(node_id). Will used as user input node. + - `[on_swipe_callback]` *(function|nil)*: Swipe callback for on_swipe_end event + +- **Returns:** + - `swipe` *(druid.swipe)*: The new swipe component + +### new_lang_text + +--- +```lua +instance:new_lang_text(node, [locale_id], [adjust_type]) +``` + +Create LangText component + +- **Parameters:** + - `node` *(string|node)*: The_node id or gui.get_node(node_id) + - `[locale_id]` *(string|nil)*: Default locale id or text from node as default + - `[adjust_type]` *(string|nil)*: Adjust type for text node. Default: "downscale" + +- **Returns:** + - `lang_text` *(druid.lang_text)*: The new lang text component + +### new_slider + +--- +```lua +instance:new_slider(pin_node, end_pos, [callback]) +``` + +Create Slider component + +- **Parameters:** + - `pin_node` *(string|node)*: The_node id or gui.get_node(node_id). + - `end_pos` *(vector3)*: The end position of slider + - `[callback]` *(function|nil)*: On slider change callback + +- **Returns:** + - `slider` *(druid.slider)*: The new slider component + +### new_input + +--- +```lua +instance:new_input(click_node, text_node, [keyboard_type]) +``` + +Create Input component + +- **Parameters:** + - `click_node` *(string|node)*: Button node to enabled input component + - `text_node` *(string|druid.text|node)*: Text node what will be changed on user input + - `[keyboard_type]` *(number|nil)*: Gui keyboard type for input field + +- **Returns:** + - `input` *(druid.input)*: The new input component + +### new_data_list + +--- +```lua +instance:new_data_list(druid_scroll, druid_grid, create_function) +``` + +Create DataList component + +- **Parameters:** + - `druid_scroll` *(druid.scroll)*: The Scroll instance for Data List component + - `druid_grid` *(druid.grid)*: The Grid instance for Data List component + - `create_function` *(function)*: The create function callback(self, data, index, data_list). Function should return (node, [component]) + +- **Returns:** + - `data_list` *(druid.data_list)*: The new data list component + +### new_timer + +--- +```lua +instance:new_timer(node, [seconds_from], [seconds_to], [callback]) +``` + +Create Timer component + +- **Parameters:** + - `node` *(string|node)*: Gui text node + - `[seconds_from]` *(number|nil)*: Start timer value in seconds + - `[seconds_to]` *(number|nil)*: End timer value in seconds + - `[callback]` *(function|nil)*: Function on timer end + +- **Returns:** + - `timer` *(druid.timer)*: The new timer component + +### new_progress + +--- +```lua +instance:new_progress(node, key, [init_value]) +``` + +Create Progress component + +- **Parameters:** + - `node` *(string|node)*: Progress bar fill node or node name + - `key` *(string)*: Progress bar direction: "x" or "y" + - `[init_value]` *(number|nil)*: Initial value of progress bar. Default: 1 + +- **Returns:** + - `progress` *(druid.progress)*: The new progress component + +### new_layout + +--- +```lua +instance:new_layout(node, [mode]) +``` + +Create Layout component + +- **Parameters:** + - `node` *(string|node)*: The_node id or gui.get_node(node_id). + - `[mode]` *(string|nil)*: vertical|horizontal|horizontal_wrap. Default: horizontal + +- **Returns:** + - `layout` *(druid.layout)*: The new layout component + +### new_container + +--- +```lua +instance:new_container(node, [mode], [callback]) +``` + +Create Container component + +- **Parameters:** + - `node` *(string|node)*: The_node id or gui.get_node(node_id). + - `[mode]` *(string|nil)*: Layout mode + - `[callback]` *(fun(self: druid.container, size: vector3)|nil)*: Callback on size changed + +- **Returns:** + - `container` *(druid.container)*: The new container component + +### new_hotkey + +--- +```lua +instance:new_hotkey(keys_array, [callback], [callback_argument]) +``` + +Create Hotkey component + +- **Parameters:** + - `keys_array` *(string|string[])*: Keys for trigger action. Should contains one action key and any amount of modificator keys + - `[callback]` *(function|event|nil)*: The callback function + - `[callback_argument]` *(any)*: The argument to pass into the callback function + +- **Returns:** + - `hotkey` *(druid.hotkey)*: The new hotkey component + +### new_rich_text + +--- +```lua +instance:new_rich_text(text_node, [value]) +``` + +Create RichText component. + +- **Parameters:** + - `text_node` *(string|node)*: The text node to make Rich Text + - `[value]` *(string|nil)*: The initial text value. Default will be gui.get_text(text_node) + +- **Returns:** + - `rich_text` *(druid.rich_text)*: The new rich text component + +### new_rich_input + +--- +```lua +instance:new_rich_input(template, [nodes]) +``` + +Create RichInput component. +As a template please check rich_input.gui layout. + +- **Parameters:** + - `template` *(string)*: The template string name + - `[nodes]` *(table|nil)*: Nodes table from gui.clone_tree + +- **Returns:** + - `rich_input` *(druid.rich_input)*: The new rich input component + diff --git a/api/quick_api_reference.md b/api/quick_api_reference.md new file mode 100644 index 0000000..b882261 --- /dev/null +++ b/api/quick_api_reference.md @@ -0,0 +1,642 @@ +# Quick API Reference + +# Table of Contents +1. [Druid](#druid) +2. [Druid Instance](#druid-instance) +3. [Components](#components) + 1. [Base Component](#base-component) + 2. [Blocker](#blocker) + 3. [Button](#button) + 4. [Container](#container) + 5. [Data List](#data-list) + 6. [Drag](#drag) + 7. [Grid](#grid) + 8. [Hotkey](#hotkey) + 9. [Hover](#hover) + 10. [Input](#input) + 11. [Lang Text](#lang-text) + 12. [Layout](#layout) + 13. [Progress](#progress) + 14. [Rich Input](#rich-input) + 15. [Rich Text](#rich-text) + 16. [Scroll](#scroll) + 17. [Slider](#slider) + 18. [Swipe](#swipe) + 19. [Text](#text) + 20. [Timer](#timer) +4. [Helper](#helper) +5. [Widgets](#widgets) + +# API Reference + +## [Druid](druid_api.md) + +Inspect [API Here](druid_api.md) + +```lua +local druid = require("druid.druid") + +druid.init_window_listener() +druid.on_language_change() +druid.on_window_callback(window_event) +druid.set_default_style(style) +druid.set_sound_function(callback) +druid.set_text_function(callback) + +self.druid = druid.new(context, [style]) +``` + +## [Druid Instance](druid_instance_api.md) + +Inspect [API Here](druid_instance_api.md) + +```lua +-- Lifecycle +self.druid:final() +self.druid:update(dt) +self.druid:on_input(action_id, action) +self.druid:on_message(message_id, message, sender) + +-- Custom components +self.druid:new(component, ...) +self.druid:new_widget(widget, [template], [nodes], ...) + +-- Built-in components +self.druid:new_button(node, [callback], [params], [anim_node]) +self.druid:new_text(node, [value], [no_adjust]) +self.druid:new_grid(parent_node, item, [in_row]) +self.druid:new_scroll(view_node, content_node) +self.druid:new_data_list(druid_scroll, druid_grid, create_function) +self.druid:new_progress(node, key, [init_value]) +self.druid:new_lang_text(node, [locale_id], [adjust_type]) +self.druid:new_rich_text(text_node, [value]) +self.druid:new_back_handler([callback], [params]) +self.druid:new_blocker(node) +self.druid:new_hover(node, [on_hover_callback], [on_mouse_hover_callback]) +self.druid:new_drag(node, [on_drag_callback]) +self.druid:new_swipe(node, [on_swipe_callback]) +self.druid:new_input(click_node, text_node, [keyboard_type]) +self.druid:new_rich_input(template, [nodes]) +self.druid:new_layout(node, [mode]) +self.druid:new_container(node, [mode], [callback]) +self.druid:new_hotkey(keys_array, [callback], [callback_argument]) +self.druid:new_slider(pin_node, end_pos, [callback]) +self.druid:new_timer(node, [seconds_from], [seconds_to], [callback]) + +-- Operational +self.druid:remove(component) +self.druid:set_blacklist(blacklist_components) +self.druid:set_whitelist(whitelist_components) +``` + +## Components + +### [Base Component](components/base/component_api.md) + +Inspect [API Here](components/base/component_api.md) + +Basic methods for all components and widgets. + +```lua +component:get_childrens() +component:get_context() +component:get_druid([template], [nodes]) +component:get_input_priority() +component:get_node(node_id) +component:get_nodes() +component:get_parent_component() +component:get_template() +component:reset_input_priority() +component:set_input_enabled(state) +component:set_input_priority(value, [is_temporary]) +component:set_nodes(nodes) +component:set_style([druid_style]) +component:set_template([template]) + +-- All widgets goes with created Druid instance +-- All other component's functions also exists +widget.druid +``` + +### [Blocker](components/base/blocker_api.md) + +Inspect [API Here](components/base/blocker_api.md) + +```lua +local blocker = self.druid:new_blocker(node) + +blocker:is_enabled() +blocker:set_enabled(state) +``` + +### [Button](components/base/button_api.md) + +Inspect [API Here](components/base/button_api.md) + +```lua +local button = require("druid.base.button") + +button:init(node_or_node_id, [callback], [custom_args], [anim_node]) +button:set_animations_disabled() +button:set_enabled([state]) +button:is_enabled() +button:set_click_zone([zone]) +button:set_key_trigger(key) +button:get_key_trigger() +button:set_check_function([check_function], [failure_callback]) +button:set_web_user_interaction([is_web_mode]) + +button.on_click +button.on_pressed +button.on_repeated_click +button.on_long_click +button.on_double_click +button.on_hold_callback +button.on_click_outside +``` + +### [Container](components/extended/container_api.md) + +Inspect [API Here](components/extended/container_api.md) + +```lua +local container = self.druid:new_container(node, [mode], [callback]) + +container:add_container(node_or_container, [mode], [on_resize_callback]) +container:clear_draggable_corners() +container:create_draggable_corners() +container:fit_into_node(node) +container:fit_into_size(target_size) +container:fit_into_window() +container:get_position() +container:get_scale() +container:get_size() +container:on_window_resized() +container:refresh() +container:refresh_origins() +container:refresh_scale() +container:remove_container_by_node([node]) +container:set_min_size([min_size_x], [min_size_y]) +container:set_parent_container([parent_container]) +container:set_pivot(pivot) +container:set_position(pos_x, pos_y) +container:set_size([width], [height], [anchor_pivot]) +container:update_child_containers() + +container.on_size_changeed +``` + +### [Data List](components/extended/data_list_api.md) + +Inspect [API Here](components/extended/data_list_api.md) + +```lua +local data_list = self.druid:new_data_list(druid_scroll, druid_grid, create_function) + +data_list:add(data, [index], [shift_policy]) +data_list:clear() +data_list:get_created_components() +data_list:get_created_nodes() +data_list:get_data() +data_list:get_index(data) +data_list:remove([index], [shift_policy]) +data_list:remove_by_data(data, [shift_policy]) +data_list:scroll_to_index(index) +data_list:set_data(data) +data_list:set_use_cache(is_use_cache) + +data_list.on_scroll_progress_change +data_list.on_element_add +data_list.on_element_remove +``` + +### [Drag](components/base/drag_api.md) + +Inspect [API Here](components/base/drag_api.md) + +```lua +local drag = self.druid:new_drag(node, [on_drag_callback]) + +drag:is_enabled() +drag:on_window_resized() +drag:set_click_zone([node]) +drag:set_drag_cursors(is_enabled) +drag:set_enabled(is_enabled) + +drag.on_touch_start +drag.on_touch_end +drag.on_drag_start +drag.on_drag +drag.on_drag_end +``` + +### [Grid](components/base/static_grid_api.md) + +Inspect [API Here](components/base/static_grid_api.md) + +```lua +local grid = self.druid:new_grid(parent_node, item, [in_row]) + +grid:add(item, [index], [shift_policy], [is_instant]) +grid:clear() +grid:get_all_pos() +grid:get_borders() +grid:get_index(pos) +grid:get_index_by_node(node) +grid:get_offset() +grid:get_pos(index) +grid:get_size() +grid:get_size_for([count]) +grid:refresh() +grid:remove(index, [shift_policy], [is_instant]) +grid:set_anchor(anchor) +grid:set_in_row(in_row) +grid:set_item_size([width], [height]) +grid:set_items(nodes, [is_instant]) +grid:set_pivot([pivot]) +grid:set_position_function(callback) +grid:sort_nodes(comparator) + +grid.on_add_item +grid.on_remove_item +grid.on_change_items +grid.on_clear +grid.on_update_positions +``` + +### [Hotkey](components/extended/hotkey_api.md) + +Inspect [API Here](components/extended/hotkey_api.md) + +```lua +local hotkey = self.druid:new_hotkey(keys_array, [callback], [callback_argument]) + +hotkey:add_hotkey(keys, [callback_argument]) +hotkey:is_processing() +hotkey:on_focus_gained() +hotkey:set_repeat(is_enabled_repeated) + +hotkey.on_hotkey_pressed +hotkey.on_hotkey_released +``` + +### [Hover](components/base/hover_api.md) + +Inspect [API Here](components/base/hover_api.md) + +```lua +local hover = self.druid:new_hover(node, [on_hover_callback], [on_mouse_hover_callback]) + +hover:is_enabled() +hover:is_hovered() +hover:is_mouse_hovered() +hover:set_click_zone([zone]) +hover:set_enabled([state]) +hover:set_hover([state]) +hover:set_mouse_hover([state]) + +hover.on_hover +hover.on_mouse_hover +``` + +### [Input](components/extended/input_api.md) + +Inspect [API Here](components/extended/input_api.md) + +```lua +local input = self.druid:new_input(click_node, text_node, [keyboard_type]) + +input:get_text() +input:get_text_selected() +input:get_text_selected_replaced(text) +input:move_selection(delta, is_add_to_selection, is_move_to_end) +input:on_focus_lost() +input:reset_changes() +input:select() +input:select_cursor([cursor_index], [start_index], [end_index]) +input:set_allowed_characters(characters) +input:set_max_length(max_length) +input:set_text(input_text) +input:unselect() + +input.on_input_select +input.on_input_unselect +input.on_input_text +input.on_input_empty +input.on_input_full +input.on_input_wrong +input.on_select_cursor_change +``` + +### [Lang Text](components/extended/lang_text_api.md) + +Inspect [API Here](components/extended/lang_text_api.md) + +```lua +local lang_text = self.druid:new_lang_text(node, [locale_id], [adjust_type]) + +lang_text:format([a], [b], [c], [d], [e], [f], [g]) +lang_text:on_language_change() +lang_text:set_text(text) +lang_text:set_to(text) +lang_text:translate(locale_id, [a], [b], [c], [d], [e], [f], [g]) + +lang_text.on_change +``` + +### [Layout](components/extended/layout_api.md) + +Inspect [API Here](components/extended/layout_api.md) + +```lua +local layout = self.druid:new_layout(node, [mode]) + +layout:add(node_or_node_id) +layout:calculate_rows_data() +layout:clear_layout() +layout:get_content_size() +layout:get_entities() +layout:get_node_size(node) +layout:get_size() +layout:refresh_layout() +layout:remove(node_or_node_id) +layout:set_dirty() +layout:set_hug_content(is_hug_width, is_hug_height) +layout:set_justify(is_justify) +layout:set_margin([margin_x], [margin_y]) +layout:set_node_index([node], [index]) +layout:set_node_position(node, x, y) +layout:set_padding([padding_x], [padding_y], [padding_z], [padding_w]) +layout:set_type(type) +layout:update() + +layout.on_size_changed +``` + +### [Progress](components/extended/progress_api.md) + +Inspect [API Here](components/extended/progress_api.md) + +```lua +local progress = self.druid:new_progress(node, key, [init_value]) + +progress:empty() +progress:fill() +progress:get() +progress:set_max_size(max_size) +progress:set_steps(steps, callback) +progress:set_to(to) +progress:to(to, [callback]) +progress:update([dt]) + +progress.on_change +``` + +### [Rich Input](components/custom/rich_input_api.md) + +Inspect [API Here](components/custom/rich_input_api.md) + +```lua +local rich_input = self.druid:new_rich_input(template, [nodes]) + +rich_input:get_text() +rich_input:select() +rich_input:set_allowed_characters(characters) +rich_input:set_font(font) +rich_input:set_placeholder(placeholder_text) +rich_input:set_text(text) +``` + +### [Rich Text](components/custom/rich_text_api.md) + +Inspect [API Here](components/custom/rich_text_api.md) + +```lua +local rich_text = self.druid:new_rich_text(text_node, [value]) + +rich_text:characters(word) +rich_text:clear() +rich_text:get_line_metric() +rich_text:get_text() +rich_text:get_words() +rich_text:set_text([text]) +rich_text:tagged(tag) +``` + +### [Scroll](components/base/scroll_api.md) + +Inspect [API Here](components/base/scroll_api.md) + +```lua +local scroll = self.druid:new_scroll(view_node, content_node) + +scroll:bind_grid([grid]) +scroll:get_percent() +scroll:get_scroll_size() +scroll:is_inert() +scroll:is_node_in_view(node) +scroll:scroll_to(point, [is_instant]) +scroll:scroll_to_index(index, [skip_cb]) +scroll:scroll_to_percent(percent, [is_instant]) +scroll:set_click_zone(node) +scroll:set_extra_stretch_size([stretch_size]) +scroll:set_horizontal_scroll(state) +scroll:set_inert(state) +scroll:set_points(points) +scroll:set_size(size, [offset]) +scroll:set_vertical_scroll(state) +scroll:set_view_size(size) +scroll:update([dt]) +scroll:update_view_size() + +scroll.on_scroll +scroll.on_scroll_to +scroll.on_point_scroll +``` + +### [Slider](components/extended/slider_api.md) + +Inspect [API Here](components/extended/slider_api.md) + +```lua +local slider = self.druid:new_slider(pin_node, end_pos, [callback]) + +slider:is_enabled() +slider:set(value, [is_silent]) +slider:set_enabled(is_enabled) +slider:set_input_node([input_node]) +slider:set_steps(steps) + +slider.on_change_value +``` + +### [Swipe](components/extended/swipe_api.md) + +Inspect [API Here](components/extended/swipe_api.md) + +```lua +local swipe = self.druid:new_swipe(node, [on_swipe_callback]) + +swipe:set_click_zone([zone]) + +swipe.on_swipe +``` + +### [Text](components/base/text_api.md) + +Inspect [API Here](components/base/text_api.md) + +```lua +local text = self.druid:new_text(node, [value], [no_adjust]) + +text:get_text() +text:get_text_adjust() +text:get_text_index_by_width(width) +text:get_text_size([text]) +text:is_multiline() +text:set_alpha(alpha) +text:set_color(color) +text:set_minimal_scale(minimal_scale) +text:set_pivot(pivot) +text:set_scale(scale) +text:set_size(size) +text:set_text([new_text]) +text:set_text_adjust([adjust_type], [minimal_scale]) +text:set_to(set_to) + +text.on_set_text +text.on_update_text_scale +text.on_set_pivot +``` + +### [Timer](components/extended/timer_api.md) + +Inspect [API Here](components/extended/timer_api.md) + +```lua +local timer = self.druid:new_timer(node, [seconds_from], [seconds_to], [callback]) + +timer:set_interval(from, to) +timer:set_state([is_on]) +timer:set_to(set_to) +timer:update([dt]) + +timer.on_tick +timer.on_set_enabled +timer.on_timer_end +``` + +## [Helper](druid_helper_api.md) + +Inspect [API Here](druid_helper_api.md) + +```lua +local helper = require("druid.helper") + +helper.add_array([target], [source]) +helper.centrate_icon_with_text([icon_node], [text_node], [margin]) +helper.centrate_nodes([margin], ...) +helper.centrate_text_with_icon([text_node], [icon_node], margin) +helper.clamp(value, [v1], [v2]) +helper.contains([array], [value]) +helper.deepcopy(orig_table) +helper.distance(x1, y1, x2, y2) +helper.get_animation_data_from_node(node, atlas_path) +helper.get_border(node, [offset]) +helper.get_closest_stencil_node(node) +helper.get_full_position(node, [root]) +helper.get_gui_scale() +helper.get_node(node_id, [template], [nodes]) +helper.get_pivot_offset(pivot_or_node) +helper.get_scaled_size(node) +helper.get_scene_scale(node, [include_passed_node_scale]) +helper.get_screen_aspect_koef() +helper.get_text_metrics_from_node(text_node) +helper.insert_with_shift(array, [item], [index], [shift_policy]) +helper.is_mobile() +helper.is_multitouch_supported() +helper.is_web() +helper.is_web_mobile() +helper.lerp(a, b, t) +helper.pick_node(node, x, y, [node_click_area]) +helper.remove_with_shift([array], [index], [shift_policy]) +helper.round(num, [num_decimal_places]) +helper.sign(val) +helper.step(current, target, step) +helper.table_to_string(t) +``` + +## [Widgets](widgets_api.md) + +Inspect [API Here](widgets_api.md) + +### [FPS Panel](/api/components/widgets/fps_panel_api.md) + +Inspect [API Here](/api/components/widgets/fps_panel_api.md) + +```lua +local fps_panel = require("druid.widget.fps_panel.fps_panel") + +fps_panel:init() +fps_panel:push_fps_value() +``` + +### [Memory Panel](/api/components/widgets/memory_panel_api.md) + +Inspect [API Here](/api/components/widgets/memory_panel_api.md) + +```lua +local memory_panel = require("druid.widget.memory_panel.memory_panel") + +memory_panel:init() +memory_panel:set_low_memory_limit([limit]) +memory_panel:push_next_value() +memory_panel:update_text_memory() +``` + +### [Mini Graph](/api/components/widgets/mini_graph_api.md) + +Inspect [API Here](/api/components/widgets/mini_graph_api.md) + +```lua +local mini_graph = require("druid.widget.mini_graph.mini_graph") + +mini_graph:clear() +mini_graph:set_samples([samples]) +mini_graph:get_samples() +mini_graph:set_line_value(index, value) +mini_graph:get_line_value([index]) +mini_graph:push_line_value([value]) +mini_graph:set_max_value([max_value]) +mini_graph:set_line_height([index]) +mini_graph:get_lowest_value() +mini_graph:get_highest_value() +mini_graph:toggle_hide() +``` + +### [Properties Panel](/api/components/widgets/properties_panel_api.md) + +Inspect [API Here](/api/components/widgets/properties_panel_api.md) + +```lua +local properties_panel = require("druid.widget.properties_panel.properties_panel") + +properties_panel:properties_constructors() +properties_panel:init() +properties_panel:clear_created_properties() +properties_panel:clear() +properties_panel:add_checkbox([on_create]) +properties_panel:add_slider([on_create]) +properties_panel:add_button([on_create]) +properties_panel:add_input([on_create]) +properties_panel:add_text([on_create]) +properties_panel:add_left_right_selector([on_create]) +properties_panel:add_vector3([on_create]) +properties_panel:add_inner_widget(widget_class, [template], [nodes], [on_create]) +properties_panel:add_widget(create_widget_callback) +properties_panel:remove([widget]) +properties_panel:set_hidden([is_hidden]) +properties_panel:is_hidden() +properties_panel:set_properties_per_page(properties_per_page) +properties_panel:set_page([page]) +``` diff --git a/config.ld b/config.ld deleted file mode 100644 index a487ec9..0000000 --- a/config.ld +++ /dev/null @@ -1,18 +0,0 @@ -project='Druid' -title='Defold Druid UI Framework' -description='Documentation for Druid Framework' -file={"./druid", - exclude = { - "./druid/styles/", - "./druid/templates/", - "./druid/annotations.lua", - "./druid/custom/rich_text/module", - } -} -package='druid' -sort=true -dir='./docs' -style='!fixed' -topics={} -use_markdown_titles=true -no_space_before_args=true diff --git a/docs/Druid_asmjs.js b/docs/Druid_asmjs.js new file mode 100644 index 0000000..0fa2838 --- /dev/null +++ b/docs/Druid_asmjs.js @@ -0,0 +1,36 @@ +function _createForOfIteratorHelper(r,e){var t="undefined"!=typeof Symbol&&r[Symbol.iterator]||r["@@iterator"];if(!t){if(Array.isArray(r)||(t=_unsupportedIterableToArray(r))||e&&r&&"number"==typeof r.length){t&&(r=t);var _n=0,F=function F(){};return{s:F,n:function n(){return _n>=r.length?{done:!0}:{done:!1,value:r[_n++]}},e:function e(r){throw r},f:F}}throw new TypeError("Invalid attempt to iterate non-iterable instance.\nIn order to be iterable, non-array objects must have a [Symbol.iterator]() method.")}var o,a=!0,u=!1;return{s:function s(){t=t.call(r)},n:function n(){var r=t.next();return a=r.done,r},e:function e(r){u=!0,o=r},f:function f(){try{a||null==t["return"]||t["return"]()}finally{if(u)throw o}}}}function _defineProperties(e,r){for(var t=0;tr.length)&&(a=r.length);for(var e=0,n=Array(a);e1&&arguments[1]!==undefined?arguments[1]:true;filename=isFileURI(filename)?new URL(filename):nodePath.normalize(filename);return new Promise(function(resolve,reject){fs.readFile(filename,binary?undefined:"utf8",function(err,data){if(err)reject(err);else resolve(binary?data.buffer:data)})})};if(!Module["thisProgram"]&&process.argv.length>1){thisProgram=process.argv[1].replace(/\\/g,"/")}arguments_=process.argv.slice(2);if(typeof module!="undefined"){module["exports"]=Module}var nodeMajor=process.versions.node.split(".")[0];if(nodeMajor<15){process.on("unhandledRejection",function(reason){throw reason})}quit_=function quit_(status,toThrow){process.exitCode=status;throw toThrow}}else if(ENVIRONMENT_IS_WEB||ENVIRONMENT_IS_WORKER){if(ENVIRONMENT_IS_WORKER){scriptDirectory=self.location.href}else if(typeof document!="undefined"&&document.currentScript){scriptDirectory=document.currentScript.src}if(scriptDirectory.startsWith("blob:")){scriptDirectory=""}else{scriptDirectory=scriptDirectory.substr(0,scriptDirectory.replace(/[?#].*/,"").lastIndexOf("/")+1)}{if(ENVIRONMENT_IS_WORKER){readBinary=function readBinary(url){var xhr=new XMLHttpRequest;xhr.open("GET",url,false);xhr.responseType="arraybuffer";xhr.send(null);return new Uint8Array(xhr.response)}}readAsync=function readAsync(url){if(isFileURI(url)){return new Promise(function(resolve,reject){var xhr=new XMLHttpRequest;xhr.open("GET",url,true);xhr.responseType="arraybuffer";xhr.onload=function(){if(xhr.status==200||xhr.status==0&&xhr.response){resolve(xhr.response);return}reject(xhr.status)};xhr.onerror=reject;xhr.send(null)})}return fetch(url,{credentials:"same-origin"}).then(function(response){if(response.ok){return response.arrayBuffer()}return Promise.reject(new Error(response.status+" : "+response.url))})}}}else{}var out=Module["print"]||console.log.bind(console);var err=Module["printErr"]||console.error.bind(console);Object.assign(Module,moduleOverrides);moduleOverrides=null;if(Module["arguments"])arguments_=Module["arguments"];if(Module["thisProgram"])thisProgram=Module["thisProgram"];var wasmBinary=Module["wasmBinary"];var WebAssembly={Memory:function Memory(opts){this.buffer=new ArrayBuffer(opts["initial"]*65536)},Module:function Module(binary){},Instance:function Instance(module,info){this.exports=( +// EMSCRIPTEN_START_ASM +function instantiate(aj){function c(d){d.set=function(a,b){this[a]=b};d.get=function(a){return this[a]};return d}var e;var f=new Uint8Array(123);for(var a=25;a>=0;--a){f[48+a]=52+a;f[65+a]=a;f[97+a]=26+a}f[43]=62;f[47]=63;function l(m,n,o){var g,h,a=0,i=n,j=o.length,k=n+(j*3>>2)-(o[j-2]=="=")-(o[j-1]=="=");for(;a>4;if(i>2;if(i>2]<<2)+4|0);J[245749]=b;if(!b){break a}b=sj(J[a+8>>2]);if(b){J[J[245749]+(J[a+12>>2]<<2)>>2]=0;if(!(Bi(J[245749],b|0)|0)){break a}}J[245749]=0}Ui=a+16|0;J[73704]=bj(45222);J[73705]=Yi;J[73706]=bj(50321);J[73707]=Yi;J[73708]=bj(13937);J[73709]=Yi;J[73710]=bj(32861);J[73711]=Yi;J[73712]=bj(111479);J[73713]=Yi;J[73714]=bj(110055);J[73715]=Yi;J[73716]=bj(5264);J[73717]=Yi;J[73718]=bj(71642);J[73719]=Yi;a=bj(50317);J[73739]=0;J[73740]=0;J[73738]=338096;J[73736]=0;J[73734]=82726;J[73733]=48877;J[73732]=0;J[73730]=0;J[73728]=0;J[73726]=0;J[73724]=1;J[73722]=0;J[73723]=3;J[73720]=a;J[73721]=Yi;J[73741]=0;J[73742]=0;J[73743]=0;J[73760]=338096;J[73758]=0;J[73756]=24610;J[73755]=21434;J[73754]=0;J[73752]=0;J[73750]=0;J[73748]=0;J[73746]=1;J[73744]=0;J[73745]=3;J[73765]=0;J[73763]=0;J[73764]=0;J[73761]=0;J[73762]=0;J[73784]=bj(45222);J[73785]=Yi;J[73786]=bj(50321);J[73787]=Yi;J[73788]=bj(13937);J[73789]=Yi;J[73790]=bj(32861);J[73791]=Yi;J[73792]=bj(111479);J[73793]=Yi;J[73794]=bj(110055);J[73795]=Yi;J[73796]=bj(5264);J[73797]=Yi;J[73798]=bj(71642);J[73799]=Yi;J[73800]=bj(50317);J[73801]=Yi;J[73802]=bj(45222);J[73803]=Yi;J[73804]=bj(50321);J[73805]=Yi;J[73806]=bj(13937);J[73807]=Yi;J[73808]=bj(32861);J[73809]=Yi;J[73810]=bj(111479);J[73811]=Yi;J[73812]=bj(110055);J[73813]=Yi;J[73814]=bj(5264);J[73815]=Yi;J[73816]=bj(71642);J[73817]=Yi;J[73818]=bj(50317);J[73819]=Yi;J[73826]=1;J[73824]=1958639865;J[73825]=-771645978;J[73822]=1;J[73829]=0;H[295312]=0;J[73823]=42856;J[73827]=J[73820];J[73829]=J[74432];J[74432]=295288;J[54513]=J[74432];J[74432]=218024;J[73955]=0;J[73956]=0;J[73954]=295848;J[73952]=0;J[73948]=0;J[73946]=0;J[73944]=0;J[73942]=0;J[73940]=1;J[73938]=0;J[73939]=3;J[73950]=151693;J[73949]=48721;J[73957]=0;J[73958]=0;J[73959]=0;J[73978]=0;J[73979]=0;J[73976]=0;J[73972]=0;J[73970]=0;J[73968]=0;J[73966]=0;J[73964]=0;J[73962]=0;J[73963]=0;J[74e3]=295848;J[73998]=0;J[73994]=0;J[73992]=0;J[73990]=0;J[73988]=0;J[73986]=1;J[73984]=0;J[73985]=3;J[73974]=18539;J[73973]=16434;J[73980]=0;J[73981]=0;J[73982]=0;J[73983]=0;J[73996]=65685;J[73995]=24982;J[74005]=0;J[74003]=0;J[74004]=0;J[74001]=0;J[74002]=0;J[74022]=295848;J[74020]=0;J[74018]=65714;J[74017]=73602;J[74016]=0;J[74014]=0;J[74012]=0;J[74010]=0;J[74008]=1;J[74006]=0;J[74007]=3;J[74027]=0;J[74025]=0;J[74026]=0;J[74023]=0;J[74024]=0;J[74028]=Ul(84286,11);J[74029]=Yi;a=bj(81723);J[74032]=0;J[74033]=0;J[74030]=a;J[74031]=Yi;J[74034]=0;J[74035]=0;J[74036]=0;J[74037]=0;J[74038]=bj(45222);J[74039]=Yi;J[74040]=bj(6301);J[74041]=Yi;J[74042]=bj(4440);J[74043]=Yi;J[74044]=bj(1273);J[74045]=Yi;J[74046]=bj(46356);J[74047]=Yi;J[74048]=bj(6312);J[74049]=Yi;J[74050]=bj(4451);J[74051]=Yi;J[74052]=bj(1284);J[74053]=Yi;J[74054]=bj(6937);J[74055]=Yi;J[74056]=bj(34042);J[74057]=Yi;J[74058]=bj(6293);J[74059]=Yi;J[74060]=bj(4432);J[74061]=Yi;J[74062]=bj(1265);J[74063]=Yi;J[74064]=bj(67985);J[74065]=Yi;J[74066]=bj(6340);J[74067]=Yi;J[74068]=bj(4479);J[74069]=Yi;J[74070]=bj(1312);J[74071]=Yi;J[74121]=0;J[74122]=0;J[74120]=295848;J[74118]=0;J[74114]=0;J[74112]=0;J[74110]=0;J[74108]=0;J[74106]=1;J[74104]=0;J[74105]=3;J[74116]=18102;J[74115]=12077;J[74123]=0;J[74124]=0;J[74125]=0;J[54789]=J[74432];J[74432]=219128;J[54841]=J[74432];J[74432]=219336;J[54887]=J[74432];J[74432]=219520;J[54913]=J[74432];J[74432]=219624;J[54941]=J[74432];J[74432]=219736;J[54963]=J[74432];J[74432]=219824;J[55023]=J[74432];J[74432]=220064;J[55083]=J[74432];J[74432]=220304;J[55103]=J[74432];J[74432]=220384;J[55157]=J[74432];J[74432]=220600;J[55209]=J[74432];J[74432]=220808;J[74388]=1;J[74386]=-837310683;J[74387]=-705779925;J[74385]=17573;J[74384]=1;J[74391]=0;H[297560]=0;J[74389]=J[74382];J[74391]=J[74432];J[74432]=297536;J[74398]=1;J[74396]=246251198;J[74397]=718133641;J[74395]=17553;J[74394]=1;J[74401]=0;H[297600]=0;J[74399]=J[74393];J[74401]=J[74432];J[74432]=297576;J[55235]=J[74432];J[74432]=220912;J[74412]=1;J[74410]=772958340;J[74411]=1445875888;J[74409]=67750;J[74408]=1;J[74415]=0;H[297656]=0;J[74413]=J[74406];J[74415]=J[74432];J[74432]=297632;J[74422]=1;J[74420]=-779701654;J[74421]=342456181;J[74419]=67732;J[74418]=1;J[74425]=0;H[297696]=0;J[74423]=J[74417];J[74425]=J[74432];J[74432]=297672;J[55271]=J[74432];J[74432]=221056;J[55289]=J[74432];J[74432]=221128;J[55329]=J[74432];J[74432]=221288;J[55363]=J[74432];J[74432]=221424;J[55431]=J[74432];J[74432]=221696;J[74437]=0;J[74438]=0;J[74433]=0;J[74434]=0;J[74439]=0;J[74440]=0;J[74435]=0;J[74436]=0;J[74438]=-1;J[55463]=J[74432];J[74432]=221824;J[55495]=J[74432];J[74432]=221952;J[55535]=J[74432];J[74432]=222112;J[55567]=J[74432];J[74432]=222240;J[55607]=J[74432];J[74432]=222400;J[55643]=J[74432];J[74432]=222544;J[55679]=J[74432];J[74432]=222688;J[55705]=J[74432];J[74432]=222792;J[55819]=J[74432];J[74432]=223248;J[74520]=0;J[74521]=0;J[74518]=0;J[74514]=0;J[74512]=0;J[74510]=0;J[74508]=0;J[74506]=1;J[74504]=0;J[74505]=3;J[74516]=24447;J[74515]=69930;J[74522]=0;J[74523]=0;J[74524]=0;J[74525]=0;J[55881]=J[74432];J[74432]=223496;J[55919]=J[74432];J[74432]=223648;J[55969]=J[74432];J[74432]=223848;J[55997]=J[74432];J[74432]=223960;J[56031]=J[74432];J[74432]=224096;J[56049]=J[74432];J[74432]=224168;J[74720]=bj(45222);J[74721]=Yi;J[74722]=bj(50321);J[74723]=Yi;J[74724]=bj(13937);J[74725]=Yi;J[74726]=bj(32861);J[74727]=Yi;J[74728]=bj(111479);J[74729]=Yi;J[74730]=bj(110055);J[74731]=Yi;J[74732]=bj(5264);J[74733]=Yi;J[74734]=bj(71642);J[74735]=Yi;J[74736]=bj(50317);J[74737]=Yi;J[74738]=bj(80464);J[74739]=Yi;J[74740]=bj(80935);J[74741]=Yi;J[74742]=bj(80474);J[74743]=Yi;J[74744]=bj(80731);J[74745]=Yi;J[74746]=bj(82213);J[74747]=Yi;J[74748]=bj(81654);J[74749]=Yi;J[74750]=bj(82198);J[74751]=Yi;J[74752]=bj(82442);J[74753]=Yi;J[74754]=bj(80832);J[74755]=Yi;J[74756]=bj(81707);J[74757]=Yi;J[74758]=bj(80845);J[74759]=Yi;J[74760]=bj(80447);J[74761]=Yi;J[74762]=bj(12712);J[74763]=Yi;J[74764]=bj(17780);J[74765]=Yi;J[74766]=bj(68730);J[74767]=Yi;J[74768]=bj(50432);J[74769]=Yi;J[74770]=bj(21018);J[74771]=Yi;J[74772]=bj(111470);J[74773]=Yi;J[74774]=bj(110046);J[74775]=Yi;J[74776]=bj(109270);J[74777]=Yi;J[74778]=bj(108986);J[74779]=Yi;J[74780]=bj(107011);J[74781]=Yi;J[74782]=bj(106038);J[74783]=Yi;J[74784]=bj(103532);J[74785]=Yi;J[74786]=bj(103425);J[74787]=Yi;J[74788]=bj(22361);J[74789]=Yi;a=bj(70008);J[74809]=0;J[74810]=0;J[74808]=306464;J[74806]=0;J[74804]=18102;J[74803]=2915;J[74802]=0;J[74800]=0;J[74798]=0;J[74796]=0;J[74794]=1;J[74792]=0;J[74793]=3;J[74790]=a;J[74791]=Yi;J[74811]=0;J[74812]=0;J[74813]=0;J[74814]=bj(63788);J[74815]=Yi;J[74816]=bj(45222);J[74817]=Yi;J[74818]=bj(50321);J[74819]=Yi;J[74820]=bj(13937);J[74821]=Yi;J[74822]=bj(32861);J[74823]=Yi;J[74824]=bj(111479);J[74825]=Yi;J[74826]=bj(110055);J[74827]=Yi;J[74828]=bj(5264);J[74829]=Yi;J[74830]=bj(71642);J[74831]=Yi;J[74832]=bj(50317);J[74833]=Yi;J[74834]=bj(80464);J[74835]=Yi;J[74836]=bj(80935);J[74837]=Yi;J[74838]=bj(80474);J[74839]=Yi;J[74840]=bj(80731);J[74841]=Yi;J[74842]=bj(82213);J[74843]=Yi;J[74844]=bj(81654);J[74845]=Yi;J[74846]=bj(82198);J[74847]=Yi;J[74848]=bj(82442);J[74849]=Yi;J[74850]=bj(80832);J[74851]=Yi;J[74852]=bj(81707);J[74853]=Yi;J[74854]=bj(80845);J[74855]=Yi;J[74856]=bj(80447);J[74857]=Yi;J[74858]=bj(12712);J[74859]=Yi;J[74860]=bj(17780);J[74861]=Yi;J[74862]=bj(68730);J[74863]=Yi;J[74864]=bj(50432);J[74865]=Yi;J[74866]=bj(21018);J[74867]=Yi;J[74868]=bj(111470);J[74869]=Yi;J[74870]=bj(110046);J[74871]=Yi;J[74872]=bj(109270);J[74873]=Yi;J[74874]=bj(108986);J[74875]=Yi;J[74876]=bj(107011);J[74877]=Yi;J[74878]=bj(106038);J[74879]=Yi;J[74880]=bj(103532);J[74881]=Yi;J[74882]=bj(103425);J[74883]=Yi;J[74884]=bj(22361);J[74885]=Yi;a=bj(70008);J[74905]=0;J[74906]=0;J[74904]=306464;J[74902]=0;J[74900]=18102;J[74899]=1392;J[74898]=0;J[74896]=0;J[74894]=0;J[74892]=0;J[74890]=1;J[74888]=0;J[74889]=3;J[74886]=a;J[74887]=Yi;J[74907]=0;J[74908]=0;J[74909]=0;J[74926]=299552;J[74924]=0;J[74922]=23016;J[74921]=75983;J[74920]=0;J[74918]=0;J[74916]=0;J[74914]=0;J[74912]=1;J[74910]=0;J[74911]=3;J[74931]=0;J[74929]=0;J[74930]=0;J[74927]=0;J[74928]=0;J[74948]=299552;J[74946]=0;J[74944]=22987;J[74943]=75224;J[74942]=0;J[74940]=0;J[74938]=0;J[74936]=0;J[74934]=1;J[74932]=0;J[74933]=3;J[74953]=0;J[74951]=0;J[74952]=0;J[74949]=0;J[74950]=0;J[74954]=bj(76286);J[74955]=Yi;J[74956]=bj(76280);J[74957]=Yi;J[74958]=bj(76187);J[74959]=Yi;J[74960]=bj(14312);J[74961]=Yi;J[74962]=bj(50295);J[74963]=Yi;J[74964]=bj(75910);J[74965]=Yi;J[74966]=bj(75895);J[74967]=Yi;J[74968]=bj(45222);J[74969]=Yi;J[74970]=bj(50321);J[74971]=Yi;J[74972]=bj(13937);J[74973]=Yi;J[74974]=bj(32861);J[74975]=Yi;J[74976]=bj(111479);J[74977]=Yi;J[74978]=bj(110055);J[74979]=Yi;J[74980]=bj(5264);J[74981]=Yi;J[74982]=bj(71642);J[74983]=Yi;J[74984]=bj(50317);J[74985]=Yi;J[74986]=bj(80464);J[74987]=Yi;J[74988]=bj(80935);J[74989]=Yi;J[74990]=bj(80474);J[74991]=Yi;J[74992]=bj(80731);J[74993]=Yi;J[74994]=bj(82213);J[74995]=Yi;J[74996]=bj(81654);J[74997]=Yi;J[74998]=bj(82198);J[74999]=Yi;J[75e3]=bj(82442);J[75001]=Yi;J[75002]=bj(80832);J[75003]=Yi;J[75004]=bj(81707);J[75005]=Yi;J[75006]=bj(80845);J[75007]=Yi;J[75008]=bj(80447);J[75009]=Yi;J[75010]=bj(12712);J[75011]=Yi;J[75012]=bj(17780);J[75013]=Yi;J[75014]=bj(68730);J[75015]=Yi;J[75016]=bj(50432);J[75017]=Yi;J[75018]=bj(21018);J[75019]=Yi;J[75020]=bj(111470);J[75021]=Yi;J[75022]=bj(110046);J[75023]=Yi;J[75024]=bj(109270);J[75025]=Yi;J[75026]=bj(108986);J[75027]=Yi;J[75028]=bj(107011);J[75029]=Yi;J[75030]=bj(106038);J[75031]=Yi;J[75032]=bj(103532);J[75033]=Yi;J[75034]=bj(103425);J[75035]=Yi;J[75036]=bj(22361);J[75037]=Yi;a=bj(70008);J[75057]=0;J[75058]=0;J[75056]=306464;J[75054]=0;J[75052]=18102;J[75051]=16382;J[75050]=0;J[75048]=0;J[75046]=0;J[75044]=0;J[75042]=1;J[75040]=0;J[75041]=3;J[75038]=a;J[75039]=Yi;J[75059]=0;J[75060]=0;J[75061]=0;J[75062]=bj(56720);J[75063]=Yi;J[75064]=bj(56681);J[75065]=Yi;J[75066]=bj(1951);J[75067]=Yi;J[75068]=bj(1910);J[75069]=Yi;J[75070]=bj(18986);J[75071]=Yi;J[75072]=bj(15424);J[75073]=Yi;J[75082]=bj(45222);J[75083]=Yi;J[75084]=bj(50321);J[75085]=Yi;J[75086]=bj(13937);J[75087]=Yi;J[75088]=bj(32861);J[75089]=Yi;J[75090]=bj(111479);J[75091]=Yi;J[75092]=bj(110055);J[75093]=Yi;J[75094]=bj(5264);J[75095]=Yi;J[75096]=bj(71642);J[75097]=Yi;J[75098]=bj(50317);J[75099]=Yi;J[75100]=bj(80464);J[75101]=Yi;J[75102]=bj(80935);J[75103]=Yi;J[75104]=bj(80474);J[75105]=Yi;J[75106]=bj(80731);J[75107]=Yi;J[75108]=bj(82213);J[75109]=Yi;J[75110]=bj(81654);J[75111]=Yi;J[75112]=bj(82198);J[75113]=Yi;J[75114]=bj(82442);J[75115]=Yi;J[75116]=bj(80832);J[75117]=Yi;J[75118]=bj(81707);J[75119]=Yi;J[75120]=bj(80845);J[75121]=Yi;J[75122]=bj(80447);J[75123]=Yi;J[75124]=bj(12712);J[75125]=Yi;J[75126]=bj(17780);J[75127]=Yi;J[75128]=bj(68730);J[75129]=Yi;J[75130]=bj(50432);J[75131]=Yi;J[75132]=bj(21018);J[75133]=Yi;J[75136]=bj(111470);J[75137]=Yi;J[75138]=bj(110046);J[75139]=Yi;J[75140]=bj(109270);J[75141]=Yi;J[75142]=bj(108986);J[75143]=Yi;J[75144]=bj(107011);J[75145]=Yi;J[75146]=bj(106038);J[75147]=Yi;J[75148]=bj(103532);J[75149]=Yi;J[75150]=bj(103425);J[75151]=Yi;J[75152]=bj(22361);J[75153]=Yi;a=bj(70008);J[75173]=0;J[75174]=0;J[75172]=306464;J[75170]=0;J[75168]=18102;J[75167]=2952;J[75166]=0;J[75164]=0;J[75162]=0;J[75160]=0;J[75158]=1;J[75156]=0;J[75157]=3;J[75154]=a;J[75155]=Yi;J[75175]=0;J[75176]=0;J[75177]=0;J[75178]=bj(63788);J[75179]=Yi;J[75180]=bj(45222);J[75181]=Yi;J[75182]=bj(50321);J[75183]=Yi;J[75184]=bj(13937);J[75185]=Yi;J[75186]=bj(32861);J[75187]=Yi;J[75188]=bj(111479);J[75189]=Yi;J[75190]=bj(110055);J[75191]=Yi;J[75192]=bj(5264);J[75193]=Yi;J[75194]=bj(71642);J[75195]=Yi;J[75196]=bj(50317);J[75197]=Yi;J[75198]=bj(80464);J[75199]=Yi;J[75200]=bj(80935);J[75201]=Yi;J[75202]=bj(80474);J[75203]=Yi;J[75204]=bj(80731);J[75205]=Yi;J[75206]=bj(82213);J[75207]=Yi;J[75208]=bj(81654);J[75209]=Yi;J[75210]=bj(82198);J[75211]=Yi;J[75212]=bj(82442);J[75213]=Yi;J[75214]=bj(80832);J[75215]=Yi;J[75216]=bj(81707);J[75217]=Yi;J[75218]=bj(80845);J[75219]=Yi;J[75220]=bj(80447);J[75221]=Yi;J[75222]=bj(12712);J[75223]=Yi;J[75224]=bj(17780);J[75225]=Yi;J[75226]=bj(68730);J[75227]=Yi;J[75228]=bj(50432);J[75229]=Yi;J[75230]=bj(21018);J[75231]=Yi;J[75232]=bj(111470);J[75233]=Yi;J[75234]=bj(110046);J[75235]=Yi;J[75236]=bj(109270);J[75237]=Yi;J[75238]=bj(108986);J[75239]=Yi;J[75240]=bj(107011);J[75241]=Yi;J[75242]=bj(106038);J[75243]=Yi;J[75244]=bj(103532);J[75245]=Yi;J[75246]=bj(103425);J[75247]=Yi;J[75248]=bj(22361);J[75249]=Yi;a=bj(70008);J[75269]=0;J[75270]=0;J[75268]=875744;J[75266]=0;J[75264]=151693;J[75263]=11925;J[75262]=0;J[75260]=0;J[75258]=0;J[75256]=0;J[75254]=1;J[75252]=0;J[75253]=3;J[75250]=a;J[75251]=Yi;J[75271]=0;J[75272]=0;J[75273]=0;J[75280]=2;J[75278]=4;J[75279]=5;J[75276]=1;J[75277]=3;J[75274]=6;J[75275]=0;J[75281]=0;J[75284]=3;J[75285]=4;J[75282]=1;J[75283]=2;J[75330]=bj(45222);J[75331]=Yi;J[75332]=bj(50321);J[75333]=Yi;J[75334]=bj(13937);J[75335]=Yi;J[75336]=bj(32861);J[75337]=Yi;J[75338]=bj(111479);J[75339]=Yi;J[75340]=bj(110055);J[75341]=Yi;J[75342]=bj(5264);J[75343]=Yi;J[75344]=bj(71642);J[75345]=Yi;J[75346]=bj(50317);J[75347]=Yi;J[75348]=bj(80464);J[75349]=Yi;J[75350]=bj(80935);J[75351]=Yi;J[75352]=bj(80474);J[75353]=Yi;J[75354]=bj(80731);J[75355]=Yi;J[75356]=bj(82213);J[75357]=Yi;J[75358]=bj(81654);J[75359]=Yi;J[75360]=bj(82198);J[75361]=Yi;J[75362]=bj(82442);J[75363]=Yi;J[75364]=bj(80832);J[75365]=Yi;J[75366]=bj(81707);J[75367]=Yi;J[75368]=bj(80845);J[75369]=Yi;J[75370]=bj(80447);J[75371]=Yi;J[75372]=bj(12712);J[75373]=Yi;J[75374]=bj(17780);J[75375]=Yi;J[75376]=bj(68730);J[75377]=Yi;J[75378]=bj(50432);J[75379]=Yi;J[75380]=bj(21018);J[75381]=Yi;J[75384]=bj(111470);J[75385]=Yi;J[75386]=bj(110046);J[75387]=Yi;J[75388]=bj(109270);J[75389]=Yi;J[75390]=bj(108986);J[75391]=Yi;J[75392]=bj(107011);J[75393]=Yi;J[75394]=bj(106038);J[75395]=Yi;J[75396]=bj(103532);J[75397]=Yi;J[75398]=bj(103425);J[75399]=Yi;J[75400]=bj(22361);J[75401]=Yi;a=bj(70008);J[75421]=0;J[75422]=0;J[75420]=306464;J[75418]=0;J[75416]=18102;J[75415]=53244;J[75414]=0;J[75412]=0;J[75410]=0;J[75408]=0;J[75406]=1;J[75404]=0;J[75405]=3;J[75402]=a;J[75403]=Yi;J[75423]=0;J[75424]=0;J[75425]=0;J[75442]=301616;J[75440]=0;J[75438]=25045;J[75437]=11945;J[75436]=0;J[75434]=0;J[75432]=0;J[75430]=0;J[75428]=1;J[75426]=0;J[75427]=3;J[75447]=0;J[75445]=0;J[75446]=0;J[75443]=0;J[75444]=0;J[75464]=301616;J[75462]=0;J[75460]=21970;J[75459]=59450;J[75458]=0;J[75456]=0;J[75454]=0;J[75452]=0;J[75450]=1;J[75448]=0;J[75449]=3;J[75469]=0;J[75467]=0;J[75468]=0;J[75465]=0;J[75466]=0;J[75470]=bj(25047);J[75471]=Yi;J[75472]=bj(99547);J[75473]=Yi;J[75522]=bj(45222);J[75523]=Yi;J[75524]=bj(50321);J[75525]=Yi;J[75526]=bj(13937);J[75527]=Yi;J[75528]=bj(32861);J[75529]=Yi;J[75530]=bj(111479);J[75531]=Yi;J[75532]=bj(110055);J[75533]=Yi;J[75534]=bj(5264);J[75535]=Yi;J[75536]=bj(71642);J[75537]=Yi;J[75538]=bj(50317);J[75539]=Yi;J[75540]=bj(80464);J[75541]=Yi;J[75542]=bj(80935);J[75543]=Yi;J[75544]=bj(80474);J[75545]=Yi;J[75546]=bj(80731);J[75547]=Yi;J[75548]=bj(82213);J[75549]=Yi;J[75550]=bj(81654);J[75551]=Yi;J[75552]=bj(82198);J[75553]=Yi;J[75554]=bj(82442);J[75555]=Yi;J[75556]=bj(80832);J[75557]=Yi;J[75558]=bj(81707);J[75559]=Yi;J[75560]=bj(80845);J[75561]=Yi;J[75562]=bj(80447);J[75563]=Yi;J[75564]=bj(12712);J[75565]=Yi;J[75566]=bj(17780);J[75567]=Yi;J[75568]=bj(68730);J[75569]=Yi;J[75570]=bj(50432);J[75571]=Yi;J[75572]=bj(21018);J[75573]=Yi;J[75576]=bj(111470);J[75577]=Yi;J[75578]=bj(110046);J[75579]=Yi;J[75580]=bj(109270);J[75581]=Yi;J[75582]=bj(108986);J[75583]=Yi;J[75584]=bj(107011);J[75585]=Yi;J[75586]=bj(106038);J[75587]=Yi;J[75588]=bj(103532);J[75589]=Yi;J[75590]=bj(103425);J[75591]=Yi;J[75592]=bj(22361);J[75593]=Yi;a=bj(70008);J[75613]=0;J[75614]=0;J[75612]=306464;J[75610]=0;J[75608]=18102;J[75607]=6013;J[75606]=0;J[75604]=0;J[75602]=0;J[75600]=0;J[75598]=1;J[75596]=0;J[75597]=3;J[75594]=a;J[75595]=Yi;J[75615]=0;J[75616]=0;J[75617]=0;J[75634]=302384;J[75632]=0;J[75630]=25045;J[75629]=11989;J[75628]=0;J[75626]=0;J[75624]=0;J[75622]=0;J[75620]=1;J[75618]=0;J[75619]=3;J[75639]=0;J[75637]=0;J[75638]=0;J[75635]=0;J[75636]=0;J[75656]=302384;J[75654]=0;J[75652]=136401;J[75651]=59492;J[75650]=0;J[75648]=0;J[75646]=0;J[75644]=0;J[75642]=1;J[75640]=0;J[75641]=3;J[75661]=0;J[75659]=0;J[75660]=0;J[75657]=0;J[75658]=0;J[75678]=302384;J[75676]=0;J[75674]=136364;J[75673]=85897;J[75672]=0;J[75670]=0;J[75668]=0;J[75666]=0;J[75664]=1;J[75662]=0;J[75663]=3;J[75683]=0;J[75681]=0;J[75682]=0;J[75679]=0;J[75680]=0;J[75686]=bj(45222);J[75687]=Yi;J[75688]=bj(50321);J[75689]=Yi;J[75690]=bj(13937);J[75691]=Yi;J[75692]=bj(32861);J[75693]=Yi;J[75694]=bj(111479);J[75695]=Yi;J[75696]=bj(110055);J[75697]=Yi;J[75698]=bj(5264);J[75699]=Yi;J[75700]=bj(71642);J[75701]=Yi;J[75702]=bj(50317);J[75703]=Yi;J[75704]=bj(45222);J[75705]=Yi;J[75706]=bj(50321);J[75707]=Yi;J[75708]=bj(13937);J[75709]=Yi;J[75710]=bj(32861);J[75711]=Yi;J[75712]=bj(111479);J[75713]=Yi;J[75714]=bj(110055);J[75715]=Yi;J[75716]=bj(5264);J[75717]=Yi;J[75718]=bj(71642);J[75719]=Yi;J[75720]=bj(50317);J[75721]=Yi;J[75722]=bj(80464);J[75723]=Yi;J[75724]=bj(80935);J[75725]=Yi;J[75726]=bj(80474);J[75727]=Yi;J[75728]=bj(80731);J[75729]=Yi;J[75730]=bj(82213);J[75731]=Yi;J[75732]=bj(81654);J[75733]=Yi;J[75734]=bj(82198);J[75735]=Yi;J[75736]=bj(82442);J[75737]=Yi;J[75738]=bj(80832);J[75739]=Yi;J[75740]=bj(81707);J[75741]=Yi;J[75742]=bj(80845);J[75743]=Yi;J[75744]=bj(80447);J[75745]=Yi;J[75746]=bj(12712);J[75747]=Yi;J[75748]=bj(17780);J[75749]=Yi;J[75750]=bj(68730);J[75751]=Yi;J[75752]=bj(50432);J[75753]=Yi;J[75754]=bj(21018);J[75755]=Yi;J[75756]=bj(111470);J[75757]=Yi;J[75758]=bj(110046);J[75759]=Yi;J[75760]=bj(109270);J[75761]=Yi;J[75762]=bj(108986);J[75763]=Yi;J[75764]=bj(107011);J[75765]=Yi;J[75766]=bj(106038);J[75767]=Yi;J[75768]=bj(103532);J[75769]=Yi;J[75770]=bj(103425);J[75771]=Yi;J[75772]=bj(22361);J[75773]=Yi;a=bj(70008);J[75793]=0;J[75794]=0;J[75792]=306464;J[75790]=0;J[75788]=18102;J[75787]=71324;J[75786]=0;J[75784]=0;J[75782]=0;J[75780]=0;J[75778]=1;J[75776]=0;J[75777]=3;J[75774]=a;J[75775]=Yi;J[75795]=0;J[75796]=0;J[75797]=0;J[75814]=303104;J[75812]=0;J[75810]=56130;J[75809]=56147;J[75808]=0;J[75806]=0;J[75804]=0;J[75802]=0;J[75800]=1;J[75798]=0;J[75799]=3;J[75819]=0;J[75817]=0;J[75818]=0;J[75815]=0;J[75816]=0;J[75820]=bj(80496);J[75821]=Yi;J[75822]=bj(82363);J[75823]=Yi;J[75824]=bj(47905);J[75825]=Yi;J[75826]=bj(48239);J[75827]=Yi;J[75828]=bj(75640);J[75829]=Yi;J[75830]=bj(70934);J[75831]=Yi;J[75872]=bj(45222);J[75873]=Yi;J[75874]=bj(50321);J[75875]=Yi;J[75876]=bj(13937);J[75877]=Yi;J[75878]=bj(32861);J[75879]=Yi;J[75880]=bj(111479);J[75881]=Yi;J[75882]=bj(110055);J[75883]=Yi;J[75884]=bj(5264);J[75885]=Yi;J[75886]=bj(71642);J[75887]=Yi;J[75888]=bj(50317);J[75889]=Yi;J[75890]=bj(80464);J[75891]=Yi;J[75892]=bj(80935);J[75893]=Yi;J[75894]=bj(80474);J[75895]=Yi;J[75896]=bj(80731);J[75897]=Yi;J[75898]=bj(82213);J[75899]=Yi;J[75900]=bj(81654);J[75901]=Yi;J[75902]=bj(82198);J[75903]=Yi;J[75904]=bj(82442);J[75905]=Yi;J[75906]=bj(80832);J[75907]=Yi;J[75908]=bj(81707);J[75909]=Yi;J[75910]=bj(80845);J[75911]=Yi;J[75912]=bj(80447);J[75913]=Yi;J[75914]=bj(12712);J[75915]=Yi;J[75916]=bj(17780);J[75917]=Yi;J[75918]=bj(68730);J[75919]=Yi;J[75920]=bj(50432);J[75921]=Yi;J[75922]=bj(21018);J[75923]=Yi;J[75924]=bj(111470);J[75925]=Yi;J[75926]=bj(110046);J[75927]=Yi;J[75928]=bj(109270);J[75929]=Yi;J[75930]=bj(108986);J[75931]=Yi;J[75932]=bj(107011);J[75933]=Yi;J[75934]=bj(106038);J[75935]=Yi;J[75936]=bj(103532);J[75937]=Yi;J[75938]=bj(103425);J[75939]=Yi;J[75940]=bj(22361);J[75941]=Yi;a=bj(70008);J[75961]=0;J[75962]=0;J[75960]=306464;J[75958]=0;J[75956]=18102;J[75955]=83964;J[75954]=0;J[75952]=0;J[75950]=0;J[75948]=0;J[75946]=1;J[75944]=0;J[75945]=3;J[75942]=a;J[75943]=Yi;J[75963]=0;J[75964]=0;J[75965]=0;J[75966]=bj(7054);J[75967]=Yi;J[75968]=bj(1181);J[75969]=Yi;J[75970]=bj(1160);J[75971]=Yi;J[75972]=bj(48674);J[75973]=Yi;J[75974]=bj(46172);J[75975]=Yi;J[75976]=bj(6781);J[75977]=Yi;J[75978]=bj(44081);J[75979]=Yi;J[75980]=bj(45222);J[75981]=Yi;J[75982]=bj(50321);J[75983]=Yi;J[75984]=bj(13937);J[75985]=Yi;J[75986]=bj(32861);J[75987]=Yi;J[75988]=bj(111479);J[75989]=Yi;J[75990]=bj(110055);J[75991]=Yi;J[75992]=bj(5264);J[75993]=Yi;J[75994]=bj(71642);J[75995]=Yi;J[75996]=bj(50317);J[75997]=Yi;J[75998]=bj(45222);J[75999]=Yi;J[76e3]=bj(50321);J[76001]=Yi;J[76002]=bj(13937);J[76003]=Yi;J[76004]=bj(32861);J[76005]=Yi;J[76006]=bj(111479);J[76007]=Yi;J[76008]=bj(110055);J[76009]=Yi;J[76010]=bj(5264);J[76011]=Yi;J[76012]=bj(71642);J[76013]=Yi;J[76014]=bj(50317);J[76015]=Yi;J[76016]=bj(80464);J[76017]=Yi;J[76018]=bj(80935);J[76019]=Yi;J[76020]=bj(80474);J[76021]=Yi;J[76022]=bj(80731);J[76023]=Yi;J[76024]=bj(82213);J[76025]=Yi;J[76026]=bj(81654);J[76027]=Yi;J[76028]=bj(82198);J[76029]=Yi;J[76030]=bj(82442);J[76031]=Yi;J[76032]=bj(80832);J[76033]=Yi;J[76034]=bj(81707);J[76035]=Yi;J[76036]=bj(80845);J[76037]=Yi;J[76038]=bj(80447);J[76039]=Yi;J[76040]=bj(12712);J[76041]=Yi;J[76042]=bj(17780);J[76043]=Yi;J[76044]=bj(68730);J[76045]=Yi;J[76046]=bj(50432);J[76047]=Yi;J[76048]=bj(21018);J[76049]=Yi;J[76052]=bj(111470);J[76053]=Yi;J[76054]=bj(110046);J[76055]=Yi;J[76056]=bj(109270);J[76057]=Yi;J[76058]=bj(108986);J[76059]=Yi;J[76060]=bj(107011);J[76061]=Yi;J[76062]=bj(106038);J[76063]=Yi;J[76064]=bj(103532);J[76065]=Yi;J[76066]=bj(103425);J[76067]=Yi;J[76068]=bj(22361);J[76069]=Yi;a=bj(70008);J[76089]=0;J[76090]=0;J[76088]=306464;J[76086]=0;J[76084]=18102;J[76083]=61244;J[76082]=0;J[76080]=0;J[76078]=0;J[76076]=0;J[76074]=1;J[76072]=0;J[76073]=3;J[76070]=a;J[76071]=Yi;J[76091]=0;J[76092]=0;J[76093]=0;J[76110]=304288;J[76108]=0;J[76106]=25045;J[76105]=11966;J[76104]=0;J[76102]=0;J[76100]=0;J[76098]=0;J[76096]=1;J[76094]=0;J[76095]=3;J[76115]=0;J[76113]=0;J[76114]=0;J[76111]=0;J[76112]=0;J[76118]=1;J[76120]=0;J[76122]=0;J[76124]=0;J[76126]=0;J[76127]=59470;J[76128]=21970;J[76130]=0;J[76132]=304288;J[76116]=0;J[76117]=3;J[76133]=0;J[76134]=0;J[76135]=0;J[76136]=0;J[76137]=0;J[76140]=1;J[76142]=0;J[76144]=0;J[76146]=0;J[76148]=0;J[76149]=59516;J[76150]=21996;J[76152]=0;J[76154]=304288;J[76138]=0;J[76139]=3;J[76159]=0;J[76157]=0;J[76158]=0;J[76155]=0;J[76156]=0;a=bj(67985);b=Yi;c=bj(6340);d=Yi;e=bj(4479);f=Yi;g=bj(1312);H[304672]=0;J[76166]=g;J[76167]=Yi;J[76164]=e;J[76165]=f;J[76162]=c;J[76163]=d;J[76160]=a;J[76161]=b;a=bj(59207);b=Yi;c=bj(6323);d=Yi;e=bj(4462);f=Yi;g=bj(1295);H[304712]=0;J[76176]=g;J[76177]=Yi;J[76174]=e;J[76175]=f;J[76172]=c;J[76173]=d;J[76170]=a;J[76171]=b;a=bj(70587);b=Yi;c=bj(6348);d=Yi;e=bj(4487);f=Yi;g=bj(1320);h=Yi;i=bj(6973);H[304760]=0;J[76188]=i;J[76189]=Yi;J[76186]=g;J[76187]=h;J[76184]=e;J[76185]=f;J[76182]=c;J[76183]=d;J[76180]=a;J[76181]=b;J[76192]=bj(32630);J[76193]=Yi;J[76194]=bj(61778);J[76195]=Yi;J[76196]=bj(46887);J[76197]=Yi;J[76198]=bj(11488);J[76199]=Yi;J[76214]=bj(45222);J[76215]=Yi;J[76216]=bj(50321);J[76217]=Yi;J[76218]=bj(13937);J[76219]=Yi;J[76220]=bj(32861);J[76221]=Yi;J[76222]=bj(111479);J[76223]=Yi;J[76224]=bj(110055);J[76225]=Yi;J[76226]=bj(5264);J[76227]=Yi;J[76228]=bj(71642);J[76229]=Yi;J[76230]=bj(50317);J[76231]=Yi;J[76232]=bj(80464);J[76233]=Yi;J[76234]=bj(80935);J[76235]=Yi;J[76236]=bj(80474);J[76237]=Yi;J[76238]=bj(80731);J[76239]=Yi;J[76240]=bj(82213);J[76241]=Yi;J[76242]=bj(81654);J[76243]=Yi;J[76244]=bj(82198);J[76245]=Yi;J[76246]=bj(82442);J[76247]=Yi;J[76248]=bj(80832);J[76249]=Yi;J[76250]=bj(81707);J[76251]=Yi;J[76252]=bj(80845);J[76253]=Yi;J[76254]=bj(80447);J[76255]=Yi;J[76256]=bj(12712);J[76257]=Yi;J[76258]=bj(17780);J[76259]=Yi;J[76260]=bj(68730);J[76261]=Yi;J[76262]=bj(50432);J[76263]=Yi;J[76264]=bj(21018);J[76265]=Yi;J[76268]=bj(111470);J[76269]=Yi;J[76270]=bj(110046);J[76271]=Yi;J[76272]=bj(109270);J[76273]=Yi;J[76274]=bj(108986);J[76275]=Yi;J[76276]=bj(107011);J[76277]=Yi;J[76278]=bj(106038);J[76279]=Yi;J[76280]=bj(103532);J[76281]=Yi;J[76282]=bj(103425);J[76283]=Yi;J[76284]=bj(22361);J[76285]=Yi;a=bj(70008);J[76305]=0;J[76306]=0;J[76304]=306464;J[76302]=0;J[76300]=18102;J[76299]=43608;J[76298]=0;J[76296]=0;J[76294]=0;J[76292]=0;J[76290]=1;J[76288]=0;J[76289]=3;J[76286]=a;J[76287]=Yi;J[76307]=0;J[76308]=0;J[76309]=0;J[76326]=305152;J[76324]=0;J[76322]=25045;J[76321]=12471;J[76320]=0;J[76318]=0;J[76316]=0;J[76314]=0;J[76312]=1;J[76310]=0;J[76311]=3;J[76331]=0;J[76329]=0;J[76330]=0;J[76327]=0;J[76328]=0;J[76348]=305152;J[76346]=0;J[76344]=25045;J[76343]=11879;J[76342]=0;J[76340]=0;J[76338]=0;J[76336]=0;J[76334]=1;J[76332]=0;J[76333]=3;J[76353]=0;J[76351]=0;J[76352]=0;J[76349]=0;J[76350]=0;J[76370]=305152;J[76368]=0;J[76366]=21970;J[76365]=59406;J[76364]=0;J[76362]=0;J[76360]=0;J[76358]=0;J[76356]=1;J[76354]=0;J[76355]=3;J[76375]=0;J[76373]=0;J[76374]=0;J[76371]=0;J[76372]=0;J[76382]=bj(45222);J[76383]=Yi;J[76384]=bj(50321);J[76385]=Yi;J[76386]=bj(13937);J[76387]=Yi;J[76388]=bj(32861);J[76389]=Yi;J[76390]=bj(111479);J[76391]=Yi;J[76392]=bj(110055);J[76393]=Yi;J[76394]=bj(5264);J[76395]=Yi;J[76396]=bj(71642);J[76397]=Yi;J[76398]=bj(50317);J[76399]=Yi;J[76400]=bj(80464);J[76401]=Yi;J[76402]=bj(80935);J[76403]=Yi;J[76404]=bj(80474);J[76405]=Yi;J[76406]=bj(80731);J[76407]=Yi;J[76408]=bj(82213);J[76409]=Yi;J[76410]=bj(81654);J[76411]=Yi;J[76412]=bj(82198);J[76413]=Yi;J[76414]=bj(82442);J[76415]=Yi;J[76416]=bj(80832);J[76417]=Yi;J[76418]=bj(81707);J[76419]=Yi;J[76420]=bj(80845);J[76421]=Yi;J[76422]=bj(80447);J[76423]=Yi;J[76424]=bj(12712);J[76425]=Yi;J[76426]=bj(17780);J[76427]=Yi;J[76428]=bj(68730);J[76429]=Yi;J[76430]=bj(50432);J[76431]=Yi;J[76432]=bj(21018);J[76433]=Yi;J[76436]=bj(111470);J[76437]=Yi;J[76438]=bj(110046);J[76439]=Yi;J[76440]=bj(109270);J[76441]=Yi;J[76442]=bj(108986);J[76443]=Yi;J[76444]=bj(107011);J[76445]=Yi;J[76446]=bj(106038);J[76447]=Yi;J[76448]=bj(103532);J[76449]=Yi;J[76450]=bj(103425);J[76451]=Yi;J[76452]=bj(22361);J[76453]=Yi;a=bj(70008);J[76473]=0;J[76474]=0;J[76472]=306464;J[76470]=0;J[76468]=18102;J[76467]=49997;J[76466]=0;J[76464]=0;J[76462]=0;J[76460]=0;J[76458]=1;J[76456]=0;J[76457]=3;J[76454]=a;J[76455]=Yi;J[76475]=0;J[76476]=0;J[76477]=0;a=bj(67985);b=Yi;c=bj(6340);d=Yi;e=bj(4479);f=Yi;g=bj(1312);H[305944]=0;J[76484]=g;J[76485]=Yi;J[76482]=e;J[76483]=f;J[76480]=c;J[76481]=d;J[76478]=a;J[76479]=b;a=bj(59207);b=Yi;c=bj(6323);d=Yi;e=bj(4462);f=Yi;g=bj(1295);H[305984]=0;J[76494]=g;J[76495]=Yi;J[76492]=e;J[76493]=f;J[76490]=c;J[76491]=d;J[76488]=a;J[76489]=b;a=bj(32861);b=Yi;c=bj(6285);d=Yi;e=bj(4424);f=Yi;g=bj(1257);h=Yi;i=bj(6910);H[306032]=0;J[76506]=i;J[76507]=Yi;J[76504]=g;J[76505]=h;J[76502]=e;J[76503]=f;J[76500]=c;J[76501]=d;J[76498]=a;J[76499]=b;a=bj(65297);b=Yi;c=bj(6330);d=Yi;e=bj(4469);f=Yi;g=bj(1302);h=Yi;i=bj(6955);H[306080]=0;J[76518]=i;J[76519]=Yi;J[76516]=g;J[76517]=h;J[76514]=e;J[76515]=f;J[76512]=c;J[76513]=d;J[76510]=a;J[76511]=b;a=bj(6674);b=Yi;c=bj(6258);d=Yi;e=bj(4397);f=Yi;g=bj(1243);h=Yi;i=bj(6896);H[306128]=0;J[76530]=i;J[76531]=Yi;J[76528]=g;J[76529]=h;J[76526]=e;J[76527]=f;J[76524]=c;J[76525]=d;J[76522]=a;J[76523]=b;J[76534]=bj(57375);J[76535]=Yi;J[76536]=bj(56937);J[76537]=Yi;J[76538]=bj(52008);J[76539]=Yi;J[76544]=bj(45222);J[76545]=Yi;J[76546]=bj(50321);J[76547]=Yi;J[76548]=bj(13937);J[76549]=Yi;J[76550]=bj(32861);J[76551]=Yi;J[76552]=bj(111479);J[76553]=Yi;J[76554]=bj(110055);J[76555]=Yi;J[76556]=bj(5264);J[76557]=Yi;J[76558]=bj(71642);J[76559]=Yi;J[76560]=bj(50317);J[76561]=Yi;J[76562]=bj(80464);J[76563]=Yi;J[76564]=bj(80935);J[76565]=Yi;J[76566]=bj(80474);J[76567]=Yi;J[76568]=bj(80731);J[76569]=Yi;J[76570]=bj(82213);J[76571]=Yi;J[76572]=bj(81654);J[76573]=Yi;J[76574]=bj(82198);J[76575]=Yi;J[76576]=bj(82442);J[76577]=Yi;J[76578]=bj(80832);J[76579]=Yi;J[76580]=bj(81707);J[76581]=Yi;J[76582]=bj(80845);J[76583]=Yi;J[76584]=bj(80447);J[76585]=Yi;J[76586]=bj(12712);J[76587]=Yi;J[76588]=bj(17780);J[76589]=Yi;J[76590]=bj(68730);J[76591]=Yi;J[76592]=bj(50432);J[76593]=Yi;J[76594]=bj(21018);J[76595]=Yi;J[76596]=bj(111470);J[76597]=Yi;J[76598]=bj(110046);J[76599]=Yi;J[76600]=bj(109270);J[76601]=Yi;J[76602]=bj(108986);J[76603]=Yi;J[76604]=bj(107011);J[76605]=Yi;J[76606]=bj(106038);J[76607]=Yi;J[76608]=bj(103532);J[76609]=Yi;J[76610]=bj(103425);J[76611]=Yi;J[76612]=bj(22361);J[76613]=Yi;a=bj(70008);J[76632]=0;J[76633]=0;J[76630]=0;J[76628]=18197;J[76627]=18181;J[76626]=0;J[76624]=0;J[76622]=0;J[76620]=0;J[76618]=0;J[76616]=0;J[76617]=0;J[76614]=a;J[76615]=Yi;J[76634]=0;J[76635]=0;J[76636]=0;J[76637]=0;J[76638]=bj(45222);J[76639]=Yi;J[76640]=bj(50321);J[76641]=Yi;J[76642]=bj(13937);J[76643]=Yi;J[76644]=bj(32861);J[76645]=Yi;J[76646]=bj(111479);J[76647]=Yi;J[76648]=bj(110055);J[76649]=Yi;J[76650]=bj(5264);J[76651]=Yi;J[76652]=bj(71642);J[76653]=Yi;J[76654]=bj(50317);J[76655]=Yi;J[76656]=bj(80464);J[76657]=Yi;J[76658]=bj(80935);J[76659]=Yi;J[76660]=bj(80474);J[76661]=Yi;J[76662]=bj(80731);J[76663]=Yi;J[76664]=bj(82213);J[76665]=Yi;J[76666]=bj(81654);J[76667]=Yi;J[76668]=bj(82198);J[76669]=Yi;J[76670]=bj(82442);J[76671]=Yi;J[76672]=bj(80832);J[76673]=Yi;J[76674]=bj(81707);J[76675]=Yi;J[76676]=bj(80845);J[76677]=Yi;J[76678]=bj(80447);J[76679]=Yi;J[76680]=bj(12712);J[76681]=Yi;J[76682]=bj(17780);J[76683]=Yi;J[76684]=bj(68730);J[76685]=Yi;J[76686]=bj(50432);J[76687]=Yi;J[76688]=bj(21018);J[76689]=Yi;J[76692]=bj(111470);J[76693]=Yi;J[76694]=bj(110046);J[76695]=Yi;J[76696]=bj(109270);J[76697]=Yi;J[76698]=bj(108986);J[76699]=Yi;J[76700]=bj(107011);J[76701]=Yi;J[76702]=bj(106038);J[76703]=Yi;J[76704]=bj(103532);J[76705]=Yi;J[76706]=bj(103425);J[76707]=Yi;J[76708]=bj(22361);J[76709]=Yi;J[76710]=bj(70008);J[76711]=Yi;J[76712]=bj(45222);J[76713]=Yi;J[76714]=bj(50321);J[76715]=Yi;J[76716]=bj(13937);J[76717]=Yi;J[76718]=bj(32861);J[76719]=Yi;J[76720]=bj(111479);J[76721]=Yi;J[76722]=bj(110055);J[76723]=Yi;J[76724]=bj(5264);J[76725]=Yi;J[76726]=bj(71642);J[76727]=Yi;J[76728]=bj(50317);J[76729]=Yi;J[76730]=bj(80464);J[76731]=Yi;J[76732]=bj(80935);J[76733]=Yi;J[76734]=bj(80474);J[76735]=Yi;J[76736]=bj(80731);J[76737]=Yi;J[76738]=bj(82213);J[76739]=Yi;J[76740]=bj(81654);J[76741]=Yi;J[76742]=bj(82198);J[76743]=Yi;J[76744]=bj(82442);J[76745]=Yi;J[76746]=bj(80832);J[76747]=Yi;J[76748]=bj(81707);J[76749]=Yi;J[76750]=bj(80845);J[76751]=Yi;J[76752]=bj(80447);J[76753]=Yi;J[76754]=bj(12712);J[76755]=Yi;J[76756]=bj(17780);J[76757]=Yi;J[76758]=bj(68730);J[76759]=Yi;J[76760]=bj(50432);J[76761]=Yi;J[76762]=bj(21018);J[76763]=Yi;J[76764]=bj(111470);J[76765]=Yi;J[76766]=bj(110046);J[76767]=Yi;J[76768]=bj(109270);J[76769]=Yi;J[76770]=bj(108986);J[76771]=Yi;J[76772]=bj(107011);J[76773]=Yi;J[76774]=bj(106038);J[76775]=Yi;J[76776]=bj(103532);J[76777]=Yi;J[76778]=bj(103425);J[76779]=Yi;J[76780]=bj(22361);J[76781]=Yi;J[76782]=bj(70008);J[76783]=Yi;J[76784]=bj(45222);J[76785]=Yi;J[76786]=bj(50321);J[76787]=Yi;J[76788]=bj(13937);J[76789]=Yi;J[76790]=bj(32861);J[76791]=Yi;J[76792]=bj(111479);J[76793]=Yi;J[76794]=bj(110055);J[76795]=Yi;J[76796]=bj(5264);J[76797]=Yi;J[76798]=bj(71642);J[76799]=Yi;J[76800]=bj(50317);J[76801]=Yi;J[76802]=bj(80464);J[76803]=Yi;J[76804]=bj(80935);J[76805]=Yi;J[76806]=bj(80474);J[76807]=Yi;J[76808]=bj(80731);J[76809]=Yi;J[76810]=bj(82213);J[76811]=Yi;J[76812]=bj(81654);J[76813]=Yi;J[76814]=bj(82198);J[76815]=Yi;J[76816]=bj(82442);J[76817]=Yi;J[76818]=bj(80832);J[76819]=Yi;J[76820]=bj(81707);J[76821]=Yi;J[76822]=bj(80845);J[76823]=Yi;J[76824]=bj(80447);J[76825]=Yi;J[76826]=bj(12712);J[76827]=Yi;J[76828]=bj(17780);J[76829]=Yi;J[76830]=bj(68730);J[76831]=Yi;J[76832]=bj(50432);J[76833]=Yi;J[76834]=bj(21018);J[76835]=Yi;J[76836]=bj(111470);J[76837]=Yi;J[76838]=bj(110046);J[76839]=Yi;J[76840]=bj(109270);J[76841]=Yi;J[76842]=bj(108986);J[76843]=Yi;J[76844]=bj(107011);J[76845]=Yi;J[76846]=bj(106038);J[76847]=Yi;J[76848]=bj(103532);J[76849]=Yi;J[76850]=bj(103425);J[76851]=Yi;J[76852]=bj(22361);J[76853]=Yi;J[76854]=bj(70008);J[76855]=Yi;J[76888]=bj(45222);J[76889]=Yi;J[76890]=bj(50321);J[76891]=Yi;J[76892]=bj(13937);J[76893]=Yi;J[76894]=bj(32861);J[76895]=Yi;J[76896]=bj(111479);J[76897]=Yi;J[76898]=bj(110055);J[76899]=Yi;J[76900]=bj(5264);J[76901]=Yi;J[76902]=bj(71642);J[76903]=Yi;J[76904]=bj(50317);J[76905]=Yi;J[76906]=bj(45222);J[76907]=Yi;J[76908]=bj(50321);J[76909]=Yi;J[76910]=bj(13937);J[76911]=Yi;J[76912]=bj(32861);J[76913]=Yi;J[76914]=bj(111479);J[76915]=Yi;J[76916]=bj(110055);J[76917]=Yi;J[76918]=bj(5264);J[76919]=Yi;J[76920]=bj(71642);J[76921]=Yi;J[76922]=bj(50317);J[76923]=Yi;J[76924]=bj(45222);J[76925]=Yi;J[76926]=bj(50321);J[76927]=Yi;J[76928]=bj(13937);J[76929]=Yi;J[76930]=bj(32861);J[76931]=Yi;J[76932]=bj(111479);J[76933]=Yi;J[76934]=bj(110055);J[76935]=Yi;J[76936]=bj(5264);J[76937]=Yi;J[76938]=bj(71642);J[76939]=Yi;J[76940]=bj(50317);J[76941]=Yi;J[76942]=bj(45222);J[76943]=Yi;J[76944]=bj(50321);J[76945]=Yi;J[76946]=bj(13937);J[76947]=Yi;J[76948]=bj(32861);J[76949]=Yi;J[76950]=bj(111479);J[76951]=Yi;J[76952]=bj(110055);J[76953]=Yi;J[76954]=bj(5264);J[76955]=Yi;J[76956]=bj(71642);J[76957]=Yi;J[76958]=bj(50317);J[76959]=Yi;J[76960]=bj(45222);J[76961]=Yi;J[76962]=bj(50321);J[76963]=Yi;J[76964]=bj(13937);J[76965]=Yi;J[76966]=bj(32861);J[76967]=Yi;J[76968]=bj(111479);J[76969]=Yi;J[76970]=bj(110055);J[76971]=Yi;J[76972]=bj(5264);J[76973]=Yi;J[76974]=bj(71642);J[76975]=Yi;J[76976]=bj(50317);J[76977]=Yi;J[76978]=bj(45222);J[76979]=Yi;J[76980]=bj(50321);J[76981]=Yi;J[76982]=bj(13937);J[76983]=Yi;J[76984]=bj(32861);J[76985]=Yi;J[76986]=bj(111479);J[76987]=Yi;J[76988]=bj(110055);J[76989]=Yi;J[76990]=bj(5264);J[76991]=Yi;J[76992]=bj(71642);J[76993]=Yi;J[76994]=bj(50317);J[76995]=Yi;J[76996]=bj(45222);J[76997]=Yi;J[76998]=bj(50321);J[76999]=Yi;J[77e3]=bj(13937);J[77001]=Yi;J[77002]=bj(32861);J[77003]=Yi;J[77004]=bj(111479);J[77005]=Yi;J[77006]=bj(110055);J[77007]=Yi;J[77008]=bj(5264);J[77009]=Yi;J[77010]=bj(71642);J[77011]=Yi;J[77012]=bj(50317);J[77013]=Yi;J[77048]=bj(45222);J[77049]=Yi;J[77050]=bj(50321);J[77051]=Yi;J[77052]=bj(13937);J[77053]=Yi;J[77054]=bj(32861);J[77055]=Yi;J[77056]=bj(111479);J[77057]=Yi;J[77058]=bj(110055);J[77059]=Yi;J[77060]=bj(5264);J[77061]=Yi;J[77062]=bj(71642);J[77063]=Yi;J[77064]=bj(50317);J[77065]=Yi;J[77100]=bj(45222);J[77101]=Yi;J[77102]=bj(50321);J[77103]=Yi;J[77104]=bj(13937);J[77105]=Yi;J[77106]=bj(32861);J[77107]=Yi;J[77108]=bj(111479);J[77109]=Yi;J[77110]=bj(110055);J[77111]=Yi;J[77112]=bj(5264);J[77113]=Yi;J[77114]=bj(71642);J[77115]=Yi;J[77116]=bj(50317);J[77117]=Yi;J[77118]=bj(45222);J[77119]=Yi;J[77120]=bj(50321);J[77121]=Yi;J[77122]=bj(13937);J[77123]=Yi;J[77124]=bj(32861);J[77125]=Yi;J[77126]=bj(111479);J[77127]=Yi;J[77128]=bj(110055);J[77129]=Yi;J[77130]=bj(5264);J[77131]=Yi;J[77132]=bj(71642);J[77133]=Yi;J[77134]=bj(50317);J[77135]=Yi;J[77136]=bj(80464);J[77137]=Yi;J[77138]=bj(80935);J[77139]=Yi;J[77140]=bj(80474);J[77141]=Yi;J[77142]=bj(80731);J[77143]=Yi;J[77144]=bj(82213);J[77145]=Yi;J[77146]=bj(81654);J[77147]=Yi;J[77148]=bj(82198);J[77149]=Yi;J[77150]=bj(82442);J[77151]=Yi;J[77152]=bj(80832);J[77153]=Yi;J[77154]=bj(81707);J[77155]=Yi;J[77156]=bj(80845);J[77157]=Yi;J[77158]=bj(80447);J[77159]=Yi;J[77160]=bj(12712);J[77161]=Yi;J[77162]=bj(17780);J[77163]=Yi;J[77164]=bj(68730);J[77165]=Yi;J[77166]=bj(50432);J[77167]=Yi;J[77168]=bj(21018);J[77169]=Yi;J[77172]=bj(111470);J[77173]=Yi;J[77174]=bj(110046);J[77175]=Yi;J[77176]=bj(109270);J[77177]=Yi;J[77178]=bj(108986);J[77179]=Yi;J[77180]=bj(107011);J[77181]=Yi;J[77182]=bj(106038);J[77183]=Yi;J[77184]=bj(103532);J[77185]=Yi;J[77186]=bj(103425);J[77187]=Yi;J[77188]=bj(22361);J[77189]=Yi;J[77190]=bj(70008);J[77191]=Yi;J[77194]=bj(45222);J[77195]=Yi;J[77196]=bj(50321);J[77197]=Yi;J[77198]=bj(13937);J[77199]=Yi;J[77200]=bj(32861);J[77201]=Yi;J[77202]=bj(111479);J[77203]=Yi;J[77204]=bj(110055);J[77205]=Yi;J[77206]=bj(5264);J[77207]=Yi;J[77208]=bj(71642);J[77209]=Yi;J[77210]=bj(50317);J[77211]=Yi;J[77212]=bj(45222);J[77213]=Yi;J[77214]=bj(50321);J[77215]=Yi;J[77216]=bj(13937);J[77217]=Yi;J[77218]=bj(32861);J[77219]=Yi;J[77220]=bj(111479);J[77221]=Yi;J[77222]=bj(110055);J[77223]=Yi;J[77224]=bj(5264);J[77225]=Yi;J[77226]=bj(71642);J[77227]=Yi;J[77228]=bj(50317);J[77229]=Yi;J[77230]=bj(80464);J[77231]=Yi;J[77232]=bj(80935);J[77233]=Yi;J[77234]=bj(80474);J[77235]=Yi;J[77236]=bj(80731);J[77237]=Yi;J[77238]=bj(82213);J[77239]=Yi;J[77240]=bj(81654);J[77241]=Yi;J[77242]=bj(82198);J[77243]=Yi;J[77244]=bj(82442);J[77245]=Yi;J[77246]=bj(80832);J[77247]=Yi;J[77248]=bj(81707);J[77249]=Yi;J[77250]=bj(80845);J[77251]=Yi;J[77252]=bj(80447);J[77253]=Yi;J[77254]=bj(12712);J[77255]=Yi;J[77256]=bj(17780);J[77257]=Yi;J[77258]=bj(68730);J[77259]=Yi;J[77260]=bj(50432);J[77261]=Yi;J[77262]=bj(21018);J[77263]=Yi;J[77264]=bj(111470);J[77265]=Yi;J[77266]=bj(110046);J[77267]=Yi;J[77268]=bj(109270);J[77269]=Yi;J[77270]=bj(108986);J[77271]=Yi;J[77272]=bj(107011);J[77273]=Yi;J[77274]=bj(106038);J[77275]=Yi;J[77276]=bj(103532);J[77277]=Yi;J[77278]=bj(103425);J[77279]=Yi;J[77280]=bj(22361);J[77281]=Yi;J[77282]=bj(70008);J[77283]=Yi;J[77284]=bj(45222);J[77285]=Yi;J[77286]=bj(50321);J[77287]=Yi;J[77288]=bj(13937);J[77289]=Yi;J[77290]=bj(32861);J[77291]=Yi;J[77292]=bj(111479);J[77293]=Yi;J[77294]=bj(110055);J[77295]=Yi;J[77296]=bj(5264);J[77297]=Yi;J[77298]=bj(71642);J[77299]=Yi;J[77300]=bj(50317);J[77301]=Yi;J[77302]=bj(45222);J[77303]=Yi;J[77304]=bj(50321);J[77305]=Yi;J[77306]=bj(13937);J[77307]=Yi;J[77308]=bj(32861);J[77309]=Yi;J[77310]=bj(111479);J[77311]=Yi;J[77312]=bj(110055);J[77313]=Yi;J[77314]=bj(5264);J[77315]=Yi;J[77316]=bj(71642);J[77317]=Yi;J[77318]=bj(50317);J[77319]=Yi;J[77320]=bj(80464);J[77321]=Yi;J[77322]=bj(80935);J[77323]=Yi;J[77324]=bj(80474);J[77325]=Yi;J[77326]=bj(80731);J[77327]=Yi;J[77328]=bj(82213);J[77329]=Yi;J[77330]=bj(81654);J[77331]=Yi;J[77332]=bj(82198);J[77333]=Yi;J[77334]=bj(82442);J[77335]=Yi;J[77336]=bj(80832);J[77337]=Yi;J[77338]=bj(81707);J[77339]=Yi;J[77340]=bj(80845);J[77341]=Yi;J[77342]=bj(80447);J[77343]=Yi;J[77344]=bj(12712);J[77345]=Yi;J[77346]=bj(17780);J[77347]=Yi;J[77348]=bj(68730);J[77349]=Yi;J[77350]=bj(50432);J[77351]=Yi;J[77352]=bj(21018);J[77353]=Yi;J[77356]=bj(111470);J[77357]=Yi;J[77358]=bj(110046);J[77359]=Yi;J[77360]=bj(109270);J[77361]=Yi;J[77362]=bj(108986);J[77363]=Yi;J[77364]=bj(107011);J[77365]=Yi;J[77366]=bj(106038);J[77367]=Yi;J[77368]=bj(103532);J[77369]=Yi;J[77370]=bj(103425);J[77371]=Yi;J[77372]=bj(22361);J[77373]=Yi;J[77374]=bj(70008);J[77375]=Yi;J[77444]=bj(45222);J[77445]=Yi;J[77446]=bj(50321);J[77447]=Yi;J[77448]=bj(13937);J[77449]=Yi;J[77450]=bj(32861);J[77451]=Yi;J[77452]=bj(111479);J[77453]=Yi;J[77454]=bj(110055);J[77455]=Yi;J[77456]=bj(5264);J[77457]=Yi;J[77458]=bj(71642);J[77459]=Yi;J[77460]=bj(50317);J[77461]=Yi;J[77462]=bj(80464);J[77463]=Yi;J[77464]=bj(80935);J[77465]=Yi;J[77466]=bj(80474);J[77467]=Yi;J[77468]=bj(80731);J[77469]=Yi;J[77470]=bj(82213);J[77471]=Yi;J[77472]=bj(81654);J[77473]=Yi;J[77474]=bj(82198);J[77475]=Yi;J[77476]=bj(82442);J[77477]=Yi;J[77478]=bj(80832);J[77479]=Yi;J[77480]=bj(81707);J[77481]=Yi;J[77482]=bj(80845);J[77483]=Yi;J[77484]=bj(80447);J[77485]=Yi;J[77486]=bj(12712);J[77487]=Yi;J[77488]=bj(17780);J[77489]=Yi;J[77490]=bj(68730);J[77491]=Yi;J[77492]=bj(50432);J[77493]=Yi;J[77494]=bj(21018);J[77495]=Yi;J[77496]=bj(111470);J[77497]=Yi;J[77498]=bj(110046);J[77499]=Yi;J[77500]=bj(109270);J[77501]=Yi;J[77502]=bj(108986);J[77503]=Yi;J[77504]=bj(107011);J[77505]=Yi;J[77506]=bj(106038);J[77507]=Yi;J[77508]=bj(103532);J[77509]=Yi;J[77510]=bj(103425);J[77511]=Yi;J[77512]=bj(22361);J[77513]=Yi;J[77514]=bj(70008);J[77515]=Yi;J[77518]=bj(45222);J[77519]=Yi;J[77520]=bj(50321);J[77521]=Yi;J[77522]=bj(13937);J[77523]=Yi;J[77524]=bj(32861);J[77525]=Yi;J[77526]=bj(111479);J[77527]=Yi;J[77528]=bj(110055);J[77529]=Yi;J[77530]=bj(5264);J[77531]=Yi;J[77532]=bj(71642);J[77533]=Yi;J[77534]=bj(50317);J[77535]=Yi;J[77536]=bj(45222);J[77537]=Yi;J[77538]=bj(50321);J[77539]=Yi;J[77540]=bj(13937);J[77541]=Yi;J[77542]=bj(32861);J[77543]=Yi;J[77544]=bj(111479);J[77545]=Yi;J[77546]=bj(110055);J[77547]=Yi;J[77548]=bj(5264);J[77549]=Yi;J[77550]=bj(71642);J[77551]=Yi;J[77552]=bj(50317);J[77553]=Yi;J[77554]=bj(45222);J[77555]=Yi;J[77556]=bj(50321);J[77557]=Yi;J[77558]=bj(13937);J[77559]=Yi;J[77560]=bj(32861);J[77561]=Yi;J[77562]=bj(111479);J[77563]=Yi;J[77564]=bj(110055);J[77565]=Yi;J[77566]=bj(5264);J[77567]=Yi;J[77568]=bj(71642);J[77569]=Yi;J[77570]=bj(50317);J[77571]=Yi;J[77576]=bj(45222);J[77577]=Yi;J[77578]=bj(50321);J[77579]=Yi;J[77580]=bj(13937);J[77581]=Yi;J[77582]=bj(32861);J[77583]=Yi;J[77584]=bj(111479);J[77585]=Yi;J[77586]=bj(110055);J[77587]=Yi;J[77588]=bj(5264);J[77589]=Yi;J[77590]=bj(71642);J[77591]=Yi;J[77592]=bj(50317);J[77593]=Yi;J[77594]=bj(80464);J[77595]=Yi;J[77596]=bj(80935);J[77597]=Yi;J[77598]=bj(80474);J[77599]=Yi;J[77600]=bj(80731);J[77601]=Yi;J[77602]=bj(82213);J[77603]=Yi;J[77604]=bj(81654);J[77605]=Yi;J[77606]=bj(82198);J[77607]=Yi;J[77608]=bj(82442);J[77609]=Yi;J[77610]=bj(80832);J[77611]=Yi;J[77612]=bj(81707);J[77613]=Yi;J[77614]=bj(80845);J[77615]=Yi;J[77616]=bj(80447);J[77617]=Yi;J[77618]=bj(12712);J[77619]=Yi;J[77620]=bj(17780);J[77621]=Yi;J[77622]=bj(68730);J[77623]=Yi;J[77624]=bj(50432);J[77625]=Yi;J[77626]=bj(21018);J[77627]=Yi;J[77628]=bj(111470);J[77629]=Yi;J[77630]=bj(110046);J[77631]=Yi;J[77632]=bj(109270);J[77633]=Yi;J[77634]=bj(108986);J[77635]=Yi;J[77636]=bj(107011);J[77637]=Yi;J[77638]=bj(106038);J[77639]=Yi;J[77640]=bj(103532);J[77641]=Yi;J[77642]=bj(103425);J[77643]=Yi;J[77644]=bj(22361);J[77645]=Yi;J[77646]=bj(70008);J[77647]=Yi;J[77648]=bj(45222);J[77649]=Yi;J[77650]=bj(50321);J[77651]=Yi;J[77652]=bj(13937);J[77653]=Yi;J[77654]=bj(32861);J[77655]=Yi;J[77656]=bj(111479);J[77657]=Yi;J[77658]=bj(110055);J[77659]=Yi;J[77660]=bj(5264);J[77661]=Yi;J[77662]=bj(71642);J[77663]=Yi;J[77664]=bj(50317);J[77665]=Yi;J[77666]=bj(80464);J[77667]=Yi;J[77668]=bj(80935);J[77669]=Yi;J[77670]=bj(80474);J[77671]=Yi;J[77672]=bj(80731);J[77673]=Yi;J[77674]=bj(82213);J[77675]=Yi;J[77676]=bj(81654);J[77677]=Yi;J[77678]=bj(82198);J[77679]=Yi;J[77680]=bj(82442);J[77681]=Yi;J[77682]=bj(80832);J[77683]=Yi;J[77684]=bj(81707);J[77685]=Yi;J[77686]=bj(80845);J[77687]=Yi;J[77688]=bj(80447);J[77689]=Yi;J[77690]=bj(12712);J[77691]=Yi;J[77692]=bj(17780);J[77693]=Yi;J[77694]=bj(68730);J[77695]=Yi;J[77696]=bj(50432);J[77697]=Yi;J[77698]=bj(21018);J[77699]=Yi;J[77700]=bj(111470);J[77701]=Yi;J[77702]=bj(110046);J[77703]=Yi;J[77704]=bj(109270);J[77705]=Yi;J[77706]=bj(108986);J[77707]=Yi;J[77708]=bj(107011);J[77709]=Yi;J[77710]=bj(106038);J[77711]=Yi;J[77712]=bj(103532);J[77713]=Yi;J[77714]=bj(103425);J[77715]=Yi;J[77716]=bj(22361);J[77717]=Yi;J[77718]=bj(70008);J[77719]=Yi;J[77720]=bj(45222);J[77721]=Yi;J[77722]=bj(50321);J[77723]=Yi;J[77724]=bj(13937);J[77725]=Yi;J[77726]=bj(32861);J[77727]=Yi;J[77728]=bj(111479);J[77729]=Yi;J[77730]=bj(110055);J[77731]=Yi;J[77732]=bj(5264);J[77733]=Yi;J[77734]=bj(71642);J[77735]=Yi;J[77736]=bj(50317);J[77737]=Yi;J[77738]=bj(80464);J[77739]=Yi;J[77740]=bj(80935);J[77741]=Yi;J[77742]=bj(80474);J[77743]=Yi;J[77744]=bj(80731);J[77745]=Yi;J[77746]=bj(82213);J[77747]=Yi;J[77748]=bj(81654);J[77749]=Yi;J[77750]=bj(82198);J[77751]=Yi;J[77752]=bj(82442);J[77753]=Yi;J[77754]=bj(80832);J[77755]=Yi;J[77756]=bj(81707);J[77757]=Yi;J[77758]=bj(80845);J[77759]=Yi;J[77760]=bj(80447);J[77761]=Yi;J[77762]=bj(12712);J[77763]=Yi;J[77764]=bj(17780);J[77765]=Yi;J[77766]=bj(68730);J[77767]=Yi;J[77768]=bj(50432);J[77769]=Yi;J[77770]=bj(21018);J[77771]=Yi;J[77772]=bj(111470);J[77773]=Yi;J[77774]=bj(110046);J[77775]=Yi;J[77776]=bj(109270);J[77777]=Yi;J[77778]=bj(108986);J[77779]=Yi;J[77780]=bj(107011);J[77781]=Yi;J[77782]=bj(106038);J[77783]=Yi;J[77784]=bj(103532);J[77785]=Yi;J[77786]=bj(103425);J[77787]=Yi;J[77788]=bj(22361);J[77789]=Yi;J[77790]=bj(70008);J[77791]=Yi;J[77792]=bj(45222);J[77793]=Yi;J[77794]=bj(50321);J[77795]=Yi;J[77796]=bj(13937);J[77797]=Yi;J[77798]=bj(32861);J[77799]=Yi;J[77800]=bj(111479);J[77801]=Yi;J[77802]=bj(110055);J[77803]=Yi;J[77804]=bj(5264);J[77805]=Yi;J[77806]=bj(71642);J[77807]=Yi;J[77808]=bj(50317);J[77809]=Yi;J[77810]=bj(80464);J[77811]=Yi;J[77812]=bj(80935);J[77813]=Yi;J[77814]=bj(80474);J[77815]=Yi;J[77816]=bj(80731);J[77817]=Yi;J[77818]=bj(82213);J[77819]=Yi;J[77820]=bj(81654);J[77821]=Yi;J[77822]=bj(82198);J[77823]=Yi;J[77824]=bj(82442);J[77825]=Yi;J[77826]=bj(80832);J[77827]=Yi;J[77828]=bj(81707);J[77829]=Yi;J[77830]=bj(80845);J[77831]=Yi;J[77832]=bj(80447);J[77833]=Yi;J[77834]=bj(12712);J[77835]=Yi;J[77836]=bj(17780);J[77837]=Yi;J[77838]=bj(68730);J[77839]=Yi;J[77840]=bj(50432);J[77841]=Yi;J[77842]=bj(21018);J[77843]=Yi;J[77844]=bj(111470);J[77845]=Yi;J[77846]=bj(110046);J[77847]=Yi;J[77848]=bj(109270);J[77849]=Yi;J[77850]=bj(108986);J[77851]=Yi;J[77852]=bj(107011);J[77853]=Yi;J[77854]=bj(106038);J[77855]=Yi;J[77856]=bj(103532);J[77857]=Yi;J[77858]=bj(103425);J[77859]=Yi;J[77860]=bj(22361);J[77861]=Yi;J[77862]=bj(70008);J[77863]=Yi;J[77864]=bj(45222);J[77865]=Yi;J[77866]=bj(50321);J[77867]=Yi;J[77868]=bj(13937);J[77869]=Yi;J[77870]=bj(32861);J[77871]=Yi;J[77872]=bj(111479);J[77873]=Yi;J[77874]=bj(110055);J[77875]=Yi;J[77876]=bj(5264);J[77877]=Yi;J[77878]=bj(71642);J[77879]=Yi;J[77880]=bj(50317);J[77881]=Yi;J[77884]=bj(45222);J[77885]=Yi;J[77886]=bj(50321);J[77887]=Yi;J[77888]=bj(13937);J[77889]=Yi;J[77890]=bj(32861);J[77891]=Yi;J[77892]=bj(111479);J[77893]=Yi;J[77894]=bj(110055);J[77895]=Yi;J[77896]=bj(5264);J[77897]=Yi;J[77898]=bj(71642);J[77899]=Yi;J[77900]=bj(50317);J[77901]=Yi;J[77936]=bj(45222);J[77937]=Yi;J[77938]=bj(50321);J[77939]=Yi;J[77940]=bj(13937);J[77941]=Yi;J[77942]=bj(32861);J[77943]=Yi;J[77944]=bj(111479);J[77945]=Yi;J[77946]=bj(110055);J[77947]=Yi;J[77948]=bj(5264);J[77949]=Yi;J[77950]=bj(71642);J[77951]=Yi;J[77952]=bj(50317);J[77953]=Yi;J[77954]=bj(80464);J[77955]=Yi;J[77956]=bj(80935);J[77957]=Yi;J[77958]=bj(80474);J[77959]=Yi;J[77960]=bj(80731);J[77961]=Yi;J[77962]=bj(82213);J[77963]=Yi;J[77964]=bj(81654);J[77965]=Yi;J[77966]=bj(82198);J[77967]=Yi;J[77968]=bj(82442);J[77969]=Yi;J[77970]=bj(80832);J[77971]=Yi;J[77972]=bj(81707);J[77973]=Yi;J[77974]=bj(80845);J[77975]=Yi;J[77976]=bj(80447);J[77977]=Yi;J[77978]=bj(12712);J[77979]=Yi;J[77980]=bj(17780);J[77981]=Yi;J[77982]=bj(68730);J[77983]=Yi;J[77984]=bj(50432);J[77985]=Yi;J[77986]=bj(21018);J[77987]=Yi;J[77988]=bj(111470);J[77989]=Yi;J[77990]=bj(110046);J[77991]=Yi;J[77992]=bj(109270);J[77993]=Yi;J[77994]=bj(108986);J[77995]=Yi;J[77996]=bj(107011);J[77997]=Yi;J[77998]=bj(106038);J[77999]=Yi;J[78e3]=bj(103532);J[78001]=Yi;J[78002]=bj(103425);J[78003]=Yi;J[78004]=bj(22361);J[78005]=Yi;J[78006]=bj(70008);J[78007]=Yi;J[78008]=bj(45222);J[78009]=Yi;J[78010]=bj(50321);J[78011]=Yi;J[78012]=bj(13937);J[78013]=Yi;J[78014]=bj(32861);J[78015]=Yi;J[78016]=bj(111479);J[78017]=Yi;J[78018]=bj(110055);J[78019]=Yi;J[78020]=bj(5264);J[78021]=Yi;J[78022]=bj(71642);J[78023]=Yi;J[78024]=bj(50317);J[78025]=Yi;J[78026]=bj(80464);J[78027]=Yi;J[78028]=bj(80935);J[78029]=Yi;J[78030]=bj(80474);J[78031]=Yi;J[78032]=bj(80731);J[78033]=Yi;J[78034]=bj(82213);J[78035]=Yi;J[78036]=bj(81654);J[78037]=Yi;J[78038]=bj(82198);J[78039]=Yi;J[78040]=bj(82442);J[78041]=Yi;J[78042]=bj(80832);J[78043]=Yi;J[78044]=bj(81707);J[78045]=Yi;J[78046]=bj(80845);J[78047]=Yi;J[78048]=bj(80447);J[78049]=Yi;J[78050]=bj(12712);J[78051]=Yi;J[78052]=bj(17780);J[78053]=Yi;J[78054]=bj(68730);J[78055]=Yi;J[78056]=bj(50432);J[78057]=Yi;J[78058]=bj(21018);J[78059]=Yi;J[78060]=bj(111470);J[78061]=Yi;J[78062]=bj(110046);J[78063]=Yi;J[78064]=bj(109270);J[78065]=Yi;J[78066]=bj(108986);J[78067]=Yi;J[78068]=bj(107011);J[78069]=Yi;J[78070]=bj(106038);J[78071]=Yi;J[78072]=bj(103532);J[78073]=Yi;J[78074]=bj(103425);J[78075]=Yi;J[78076]=bj(22361);J[78077]=Yi;J[78078]=bj(70008);J[78079]=Yi;J[78080]=bj(45222);J[78081]=Yi;J[78082]=bj(50321);J[78083]=Yi;J[78084]=bj(13937);J[78085]=Yi;J[78086]=bj(32861);J[78087]=Yi;J[78088]=bj(111479);J[78089]=Yi;J[78090]=bj(110055);J[78091]=Yi;J[78092]=bj(5264);J[78093]=Yi;J[78094]=bj(71642);J[78095]=Yi;J[78096]=bj(50317);J[78097]=Yi;J[78098]=bj(80464);J[78099]=Yi;J[78100]=bj(80935);J[78101]=Yi;J[78102]=bj(80474);J[78103]=Yi;J[78104]=bj(80731);J[78105]=Yi;J[78106]=bj(82213);J[78107]=Yi;J[78108]=bj(81654);J[78109]=Yi;J[78110]=bj(82198);J[78111]=Yi;J[78112]=bj(82442);J[78113]=Yi;J[78114]=bj(80832);J[78115]=Yi;J[78116]=bj(81707);J[78117]=Yi;J[78118]=bj(80845);J[78119]=Yi;J[78120]=bj(80447);J[78121]=Yi;J[78122]=bj(12712);J[78123]=Yi;J[78124]=bj(17780);J[78125]=Yi;J[78126]=bj(68730);J[78127]=Yi;J[78128]=bj(50432);J[78129]=Yi;J[78130]=bj(21018);J[78131]=Yi;J[78132]=bj(111470);J[78133]=Yi;J[78134]=bj(110046);J[78135]=Yi;J[78136]=bj(109270);J[78137]=Yi;J[78138]=bj(108986);J[78139]=Yi;J[78140]=bj(107011);J[78141]=Yi;J[78142]=bj(106038);J[78143]=Yi;J[78144]=bj(103532);J[78145]=Yi;J[78146]=bj(103425);J[78147]=Yi;J[78148]=bj(22361);J[78149]=Yi;J[78150]=bj(70008);J[78151]=Yi;J[78154]=bj(45222);J[78155]=Yi;J[78156]=bj(50321);J[78157]=Yi;J[78158]=bj(13937);J[78159]=Yi;J[78160]=bj(32861);J[78161]=Yi;J[78162]=bj(111479);J[78163]=Yi;J[78164]=bj(110055);J[78165]=Yi;J[78166]=bj(5264);J[78167]=Yi;J[78168]=bj(71642);J[78169]=Yi;J[78170]=bj(50317);J[78171]=Yi;J[78172]=bj(80464);J[78173]=Yi;J[78174]=bj(80935);J[78175]=Yi;J[78176]=bj(80474);J[78177]=Yi;J[78178]=bj(80731);J[78179]=Yi;J[78180]=bj(82213);J[78181]=Yi;J[78182]=bj(81654);J[78183]=Yi;J[78184]=bj(82198);J[78185]=Yi;J[78186]=bj(82442);J[78187]=Yi;J[78188]=bj(80832);J[78189]=Yi;J[78190]=bj(81707);J[78191]=Yi;J[78192]=bj(80845);J[78193]=Yi;J[78194]=bj(80447);J[78195]=Yi;J[78196]=bj(12712);J[78197]=Yi;J[78198]=bj(17780);J[78199]=Yi;J[78200]=bj(68730);J[78201]=Yi;J[78202]=bj(50432);J[78203]=Yi;J[78204]=bj(21018);J[78205]=Yi;J[78208]=bj(111470);J[78209]=Yi;J[78210]=bj(110046);J[78211]=Yi;J[78212]=bj(109270);J[78213]=Yi;J[78214]=bj(108986);J[78215]=Yi;J[78216]=bj(107011);J[78217]=Yi;J[78218]=bj(106038);J[78219]=Yi;J[78220]=bj(103532);J[78221]=Yi;J[78222]=bj(103425);J[78223]=Yi;J[78224]=bj(22361);J[78225]=Yi;a=bj(70008);J[78230]=0;J[78231]=0;J[78226]=a;J[78227]=Yi;I[156463]=0;I[156464]=0;I[156465]=0;I[156466]=0;J[78234]=bj(45222);J[78235]=Yi;J[78236]=bj(50321);J[78237]=Yi;J[78238]=bj(13937);J[78239]=Yi;J[78240]=bj(32861);J[78241]=Yi;J[78242]=bj(111479);J[78243]=Yi;J[78244]=bj(110055);J[78245]=Yi;J[78246]=bj(5264);J[78247]=Yi;J[78248]=bj(71642);J[78249]=Yi;J[78250]=bj(50317);J[78251]=Yi;J[78252]=bj(80464);J[78253]=Yi;J[78254]=bj(80935);J[78255]=Yi;J[78256]=bj(80474);J[78257]=Yi;J[78258]=bj(80731);J[78259]=Yi;J[78260]=bj(82213);J[78261]=Yi;J[78262]=bj(81654);J[78263]=Yi;J[78264]=bj(82198);J[78265]=Yi;J[78266]=bj(82442);J[78267]=Yi;J[78268]=bj(80832);J[78269]=Yi;J[78270]=bj(81707);J[78271]=Yi;J[78272]=bj(80845);J[78273]=Yi;J[78274]=bj(80447);J[78275]=Yi;J[78276]=bj(12712);J[78277]=Yi;J[78278]=bj(17780);J[78279]=Yi;J[78280]=bj(68730);J[78281]=Yi;J[78282]=bj(50432);J[78283]=Yi;J[78284]=bj(21018);J[78285]=Yi;J[78288]=bj(111470);J[78289]=Yi;J[78290]=bj(110046);J[78291]=Yi;J[78292]=bj(109270);J[78293]=Yi;J[78294]=bj(108986);J[78295]=Yi;J[78296]=bj(107011);J[78297]=Yi;J[78298]=bj(106038);J[78299]=Yi;J[78300]=bj(103532);J[78301]=Yi;J[78302]=bj(103425);J[78303]=Yi;J[78304]=bj(22361);J[78305]=Yi;J[78306]=bj(70008);J[78307]=Yi;J[78308]=bj(45222);J[78309]=Yi;J[78310]=bj(50321);J[78311]=Yi;J[78312]=bj(13937);J[78313]=Yi;J[78314]=bj(32861);J[78315]=Yi;J[78316]=bj(111479);J[78317]=Yi;J[78318]=bj(110055);J[78319]=Yi;J[78320]=bj(5264);J[78321]=Yi;J[78322]=bj(71642);J[78323]=Yi;J[78324]=bj(50317);J[78325]=Yi;J[78326]=bj(80464);J[78327]=Yi;J[78328]=bj(80935);J[78329]=Yi;J[78330]=bj(80474);J[78331]=Yi;J[78332]=bj(80731);J[78333]=Yi;J[78334]=bj(82213);J[78335]=Yi;J[78336]=bj(81654);J[78337]=Yi;J[78338]=bj(82198);J[78339]=Yi;J[78340]=bj(82442);J[78341]=Yi;J[78342]=bj(80832);J[78343]=Yi;J[78344]=bj(81707);J[78345]=Yi;J[78346]=bj(80845);J[78347]=Yi;J[78348]=bj(80447);J[78349]=Yi;J[78350]=bj(12712);J[78351]=Yi;J[78352]=bj(17780);J[78353]=Yi;J[78354]=bj(68730);J[78355]=Yi;J[78356]=bj(50432);J[78357]=Yi;J[78358]=bj(21018);J[78359]=Yi;J[78360]=bj(111470);J[78361]=Yi;J[78362]=bj(110046);J[78363]=Yi;J[78364]=bj(109270);J[78365]=Yi;J[78366]=bj(108986);J[78367]=Yi;J[78368]=bj(107011);J[78369]=Yi;J[78370]=bj(106038);J[78371]=Yi;J[78372]=bj(103532);J[78373]=Yi;J[78374]=bj(103425);J[78375]=Yi;J[78376]=bj(22361);J[78377]=Yi;J[78378]=bj(70008);J[78379]=Yi;J[78380]=bj(45222);J[78381]=Yi;J[78382]=bj(50321);J[78383]=Yi;J[78384]=bj(13937);J[78385]=Yi;J[78386]=bj(32861);J[78387]=Yi;J[78388]=bj(111479);J[78389]=Yi;J[78390]=bj(110055);J[78391]=Yi;J[78392]=bj(5264);J[78393]=Yi;J[78394]=bj(71642);J[78395]=Yi;a=bj(50317);J[78400]=0;J[78401]=0;J[78396]=a;J[78397]=Yi;I[156803]=0;I[156804]=0;I[156805]=0;I[156806]=0;J[78406]=bj(45222);J[78407]=Yi;J[78408]=bj(50321);J[78409]=Yi;J[78410]=bj(13937);J[78411]=Yi;J[78412]=bj(32861);J[78413]=Yi;J[78414]=bj(111479);J[78415]=Yi;J[78416]=bj(110055);J[78417]=Yi;J[78418]=bj(5264);J[78419]=Yi;J[78420]=bj(71642);J[78421]=Yi;J[78422]=bj(50317);J[78423]=Yi;J[78424]=bj(80464);J[78425]=Yi;J[78426]=bj(80935);J[78427]=Yi;J[78428]=bj(80474);J[78429]=Yi;J[78430]=bj(80731);J[78431]=Yi;J[78432]=bj(82213);J[78433]=Yi;J[78434]=bj(81654);J[78435]=Yi;J[78436]=bj(82198);J[78437]=Yi;J[78438]=bj(82442);J[78439]=Yi;J[78440]=bj(80832);J[78441]=Yi;J[78442]=bj(81707);J[78443]=Yi;J[78444]=bj(80845);J[78445]=Yi;J[78446]=bj(80447);J[78447]=Yi;J[78448]=bj(12712);J[78449]=Yi;J[78450]=bj(17780);J[78451]=Yi;J[78452]=bj(68730);J[78453]=Yi;J[78454]=bj(50432);J[78455]=Yi;J[78456]=bj(21018);J[78457]=Yi;J[78460]=bj(111470);J[78461]=Yi;J[78462]=bj(110046);J[78463]=Yi;J[78464]=bj(109270);J[78465]=Yi;J[78466]=bj(108986);J[78467]=Yi;J[78468]=bj(107011);J[78469]=Yi;J[78470]=bj(106038);J[78471]=Yi;J[78472]=bj(103532);J[78473]=Yi;J[78474]=bj(103425);J[78475]=Yi;J[78476]=bj(22361);J[78477]=Yi;J[78478]=bj(70008);J[78479]=Yi;J[78480]=bj(45222);J[78481]=Yi;J[78482]=bj(50321);J[78483]=Yi;J[78484]=bj(13937);J[78485]=Yi;J[78486]=bj(32861);J[78487]=Yi;J[78488]=bj(111479);J[78489]=Yi;J[78490]=bj(110055);J[78491]=Yi;J[78492]=bj(5264);J[78493]=Yi;J[78494]=bj(71642);J[78495]=Yi;J[78496]=bj(50317);J[78497]=Yi;J[56493]=J[74432];J[74432]=225944;J[56509]=J[74432];J[74432]=226008;J[56565]=J[74432];J[74432]=226232;J[56611]=J[74432];J[74432]=226416;J[78514]=1;J[78512]=-1472275375;J[78513]=1862278062;J[78511]=17642;J[78510]=1;J[78517]=0;H[314064]=0;J[78515]=J[78509];J[78517]=J[74432];J[74432]=314040;J[78524]=1;J[78522]=-278759638;J[78523]=-1695457758;J[78521]=17621;J[78520]=1;J[78527]=0;H[314104]=0;J[78525]=J[78519];J[78527]=J[74432];J[74432]=314080;J[56641]=J[74432];J[74432]=226536;J[56669]=J[74432];J[74432]=226648;J[56719]=J[74432];J[74432]=226848;J[56743]=J[74432];J[74432]=226944;J[56767]=J[74432];J[74432]=227040;J[56833]=J[74432];J[74432]=227304;J[56861]=J[74432];J[74432]=227416;J[56889]=J[74432];J[74432]=227528;J[56937]=J[74432];J[74432]=227720;J[56957]=J[74432];J[74432]=227800;J[56973]=J[74432];J[74432]=227864;J[56989]=J[74432];J[74432]=227928;J[57009]=J[74432];J[74432]=228008;J[57025]=J[74432];J[74432]=228072;J[57045]=J[74432];J[74432]=228152;J[78556]=1;J[78554]=-53895322;J[78555]=550923652;J[78553]=4722;J[78552]=1;J[78559]=0;H[314232]=0;J[78557]=J[78550];J[78559]=J[74432];J[74432]=314208;J[57061]=J[74432];J[74432]=228216;J[57095]=J[74432];J[74432]=228352;J[57119]=J[74432];J[74432]=228448;J[57149]=J[74432];J[74432]=228568;J[57165]=J[74432];J[74432]=228632;J[57181]=J[74432];J[74432]=228696;J[57489]=J[74432];J[74432]=229928;J[57511]=J[74432];J[74432]=230016;J[57531]=J[74432];J[74432]=230096;J[57545]=J[74432];J[74432]=230152;J[57567]=J[74432];J[74432]=230240;J[57587]=J[74432];J[74432]=230320;J[57607]=J[74432];J[74432]=230400;J[57627]=J[74432];J[74432]=230480;J[57647]=J[74432];J[74432]=230560;J[57761]=J[74432];J[74432]=231016;J[57783]=J[74432];J[74432]=231104;J[57873]=J[74432];J[74432]=231464;J[57889]=J[74432];J[74432]=231528;J[57939]=J[74432];J[74432]=231728;J[57959]=J[74432];J[74432]=231808;J[58013]=J[74432];J[74432]=232024;J[58035]=J[74432];J[74432]=232112;J[58115]=J[74432];J[74432]=232432;J[58139]=J[74432];J[74432]=232528;J[58181]=J[74432];J[74432]=232696;J[58269]=J[74432];J[74432]=233048;J[58309]=J[74432];J[74432]=233208;J[58343]=J[74432];J[74432]=233344;J[58391]=J[74432];J[74432]=233536;J[58409]=J[74432];J[74432]=233608;J[78650]=1;J[78648]=-1505215520;J[78649]=-1547365408;J[78647]=1851;J[78646]=1;J[78653]=0;H[314608]=0;J[78651]=J[78644];J[78653]=J[74432];J[74432]=314584;J[58431]=J[74432];J[74432]=233696;J[58485]=J[74432];J[74432]=233912;J[58507]=J[74432];J[74432]=234e3;J[58561]=J[74432];J[74432]=234216;J[58595]=J[74432];J[74432]=234352;J[58625]=J[74432];J[74432]=234472;J[58647]=J[74432];J[74432]=234560;J[58671]=J[74432];J[74432]=234656;J[58697]=J[74432];J[74432]=234760;J[58757]=J[74432];J[74432]=235e3;J[58779]=J[74432];J[74432]=235088;J[58869]=J[74432];J[74432]=235448;J[58901]=J[74432];J[74432]=235576;J[58923]=J[74432];J[74432]=235664;J[58941]=J[74432];J[74432]=235736;J[58957]=J[74432];J[74432]=235800;J[59025]=J[74432];J[74432]=236072;J[59101]=J[74432];J[74432]=236376;J[59225]=J[74432];J[74432]=236872;J[59257]=J[74432];J[74432]=237e3;J[59285]=J[74432];J[74432]=237112;J[59347]=J[74432];J[74432]=237360;J[59443]=J[74432];J[74432]=237744;J[59487]=J[74432];J[74432]=237920;J[59529]=J[74432];J[74432]=238088;J[59571]=J[74432];J[74432]=238256;J[59595]=J[74432];J[74432]=238352;J[59613]=J[74432];J[74432]=238424;J[78740]=bj(45222);J[78741]=Yi;J[78742]=bj(50321);J[78743]=Yi;J[78744]=bj(13937);J[78745]=Yi;J[78746]=bj(32861);J[78747]=Yi;J[78748]=bj(111479);J[78749]=Yi;J[78750]=bj(110055);J[78751]=Yi;J[78752]=bj(5264);J[78753]=Yi;J[78754]=bj(71642);J[78755]=Yi;J[78756]=bj(50317);J[78757]=Yi;J[78758]=bj(80464);J[78759]=Yi;J[78760]=bj(80935);J[78761]=Yi;J[78762]=bj(80474);J[78763]=Yi;J[78764]=bj(80731);J[78765]=Yi;J[78766]=bj(82213);J[78767]=Yi;J[78768]=bj(81654);J[78769]=Yi;J[78770]=bj(82198);J[78771]=Yi;J[78772]=bj(82442);J[78773]=Yi;J[78774]=bj(80832);J[78775]=Yi;J[78776]=bj(81707);J[78777]=Yi;J[78778]=bj(80845);J[78779]=Yi;J[78780]=bj(80447);J[78781]=Yi;J[78782]=bj(12712);J[78783]=Yi;J[78784]=bj(17780);J[78785]=Yi;J[78786]=bj(68730);J[78787]=Yi;J[78788]=bj(50432);J[78789]=Yi;J[78790]=bj(21018);J[78791]=Yi;J[78792]=bj(111470);J[78793]=Yi;J[78794]=bj(110046);J[78795]=Yi;J[78796]=bj(109270);J[78797]=Yi;J[78798]=bj(108986);J[78799]=Yi;J[78800]=bj(107011);J[78801]=Yi;J[78802]=bj(106038);J[78803]=Yi;J[78804]=bj(103532);J[78805]=Yi;J[78806]=bj(103425);J[78807]=Yi;J[78808]=bj(22361);J[78809]=Yi;J[78810]=bj(70008);J[78811]=Yi;J[78812]=bj(45222);J[78813]=Yi;J[78814]=bj(50321);J[78815]=Yi;J[78816]=bj(13937);J[78817]=Yi;J[78818]=bj(32861);J[78819]=Yi;J[78820]=bj(111479);J[78821]=Yi;J[78822]=bj(110055);J[78823]=Yi;J[78824]=bj(5264);J[78825]=Yi;J[78826]=bj(71642);J[78827]=Yi;J[78828]=bj(50317);J[78829]=Yi;J[78830]=bj(80464);J[78831]=Yi;J[78832]=bj(80935);J[78833]=Yi;J[78834]=bj(80474);J[78835]=Yi;J[78836]=bj(80731);J[78837]=Yi;J[78838]=bj(82213);J[78839]=Yi;J[78840]=bj(81654);J[78841]=Yi;J[78842]=bj(82198);J[78843]=Yi;J[78844]=bj(82442);J[78845]=Yi;J[78846]=bj(80832);J[78847]=Yi;J[78848]=bj(81707);J[78849]=Yi;J[78850]=bj(80845);J[78851]=Yi;J[78852]=bj(80447);J[78853]=Yi;J[78854]=bj(12712);J[78855]=Yi;J[78856]=bj(17780);J[78857]=Yi;J[78858]=bj(68730);J[78859]=Yi;J[78860]=bj(50432);J[78861]=Yi;J[78862]=bj(21018);J[78863]=Yi;J[78864]=bj(111470);J[78865]=Yi;J[78866]=bj(110046);J[78867]=Yi;J[78868]=bj(109270);J[78869]=Yi;J[78870]=bj(108986);J[78871]=Yi;J[78872]=bj(107011);J[78873]=Yi;J[78874]=bj(106038);J[78875]=Yi;J[78876]=bj(103532);J[78877]=Yi;J[78878]=bj(103425);J[78879]=Yi;J[78880]=bj(22361);J[78881]=Yi;a=bj(70008);J[78901]=0;J[78902]=0;J[78900]=306464;J[78898]=0;J[78896]=18102;J[78895]=49941;J[78894]=0;J[78892]=0;J[78890]=0;J[78888]=0;J[78886]=1;J[78884]=0;J[78885]=3;J[78882]=a;J[78883]=Yi;J[78903]=0;J[78904]=0;J[78905]=0;J[78922]=315536;J[78920]=0;J[78918]=25221;J[78917]=12030;J[78916]=0;J[78914]=0;J[78912]=0;J[78910]=0;J[78908]=1;J[78906]=0;J[78907]=3;J[78927]=0;J[78925]=0;J[78926]=0;J[78923]=0;J[78924]=0;J[78944]=315536;J[78942]=0;J[78940]=25045;J[78939]=11903;J[78938]=0;J[78936]=0;J[78934]=0;J[78932]=0;J[78930]=1;J[78928]=0;J[78929]=3;J[78949]=0;J[78947]=0;J[78948]=0;J[78945]=0;J[78946]=0;J[78966]=315536;J[78964]=0;J[78962]=21970;J[78961]=59429;J[78960]=0;J[78958]=0;J[78956]=0;J[78954]=0;J[78952]=1;J[78950]=0;J[78951]=3;J[78971]=0;J[78969]=0;J[78970]=0;J[78967]=0;J[78968]=0;J[78972]=bj(47767);J[78973]=Yi;J[78974]=bj(46887);J[78975]=Yi;J[78976]=bj(32630);J[78977]=Yi;J[78978]=bj(61778);J[78979]=Yi;J[78990]=bj(45222);J[78991]=Yi;J[78992]=bj(50321);J[78993]=Yi;J[78994]=bj(13937);J[78995]=Yi;J[78996]=bj(32861);J[78997]=Yi;J[78998]=bj(111479);J[78999]=Yi;J[79e3]=bj(110055);J[79001]=Yi;J[79002]=bj(5264);J[79003]=Yi;J[79004]=bj(71642);J[79005]=Yi;J[79006]=bj(50317);J[79007]=Yi;J[79008]=bj(80464);J[79009]=Yi;J[79010]=bj(80935);J[79011]=Yi;J[79012]=bj(80474);J[79013]=Yi;J[79014]=bj(80731);J[79015]=Yi;J[79016]=bj(82213);J[79017]=Yi;J[79018]=bj(81654);J[79019]=Yi;J[79020]=bj(82198);J[79021]=Yi;J[79022]=bj(82442);J[79023]=Yi;J[79024]=bj(80832);J[79025]=Yi;J[79026]=bj(81707);J[79027]=Yi;J[79028]=bj(80845);J[79029]=Yi;J[79030]=bj(80447);J[79031]=Yi;J[79032]=bj(12712);J[79033]=Yi;J[79034]=bj(17780);J[79035]=Yi;J[79036]=bj(68730);J[79037]=Yi;J[79038]=bj(50432);J[79039]=Yi;J[79040]=bj(21018);J[79041]=Yi;J[79044]=bj(111470);J[79045]=Yi;J[79046]=bj(110046);J[79047]=Yi;J[79048]=bj(109270);J[79049]=Yi;J[79050]=bj(108986);J[79051]=Yi;J[79052]=bj(107011);J[79053]=Yi;J[79054]=bj(106038);J[79055]=Yi;J[79056]=bj(103532);J[79057]=Yi;J[79058]=bj(103425);J[79059]=Yi;J[79060]=bj(22361);J[79061]=Yi;J[79062]=bj(70008);J[79063]=Yi;J[59655]=J[74432];J[74432]=238592;J[59687]=J[74432];J[74432]=238720;J[59743]=J[74432];J[74432]=238944;J[59769]=J[74432];J[74432]=239048;J[59785]=J[74432];J[74432]=239112;J[59807]=J[74432];J[74432]=239200;J[59849]=J[74432];J[74432]=239368;J[79120]=1;J[79118]=-166866304;J[79119]=916817987;J[79117]=46746;J[79116]=1;J[79123]=0;H[316488]=0;J[79121]=J[79115];J[79123]=J[74432];J[74432]=316464;J[59871]=J[74432];J[74432]=239456;J[79126]=bj(45222);J[79127]=Yi;J[79128]=bj(50321);J[79129]=Yi;J[79130]=bj(13937);J[79131]=Yi;J[79132]=bj(32861);J[79133]=Yi;J[79134]=bj(111479);J[79135]=Yi;J[79136]=bj(110055);J[79137]=Yi;J[79138]=bj(5264);J[79139]=Yi;J[79140]=bj(71642);J[79141]=Yi;J[79142]=bj(50317);J[79143]=Yi;J[79144]=bj(80464);J[79145]=Yi;J[79146]=bj(80935);J[79147]=Yi;J[79148]=bj(80474);J[79149]=Yi;J[79150]=bj(80731);J[79151]=Yi;J[79152]=bj(82213);J[79153]=Yi;J[79154]=bj(81654);J[79155]=Yi;J[79156]=bj(82198);J[79157]=Yi;J[79158]=bj(82442);J[79159]=Yi;J[79160]=bj(80832);J[79161]=Yi;J[79162]=bj(81707);J[79163]=Yi;J[79164]=bj(80845);J[79165]=Yi;J[79166]=bj(80447);J[79167]=Yi;J[79168]=bj(12712);J[79169]=Yi;J[79170]=bj(17780);J[79171]=Yi;J[79172]=bj(68730);J[79173]=Yi;J[79174]=bj(50432);J[79175]=Yi;J[79176]=bj(21018);J[79177]=Yi;J[79180]=bj(111470);J[79181]=Yi;J[79182]=bj(110046);J[79183]=Yi;J[79184]=bj(109270);J[79185]=Yi;J[79186]=bj(108986);J[79187]=Yi;J[79188]=bj(107011);J[79189]=Yi;J[79190]=bj(106038);J[79191]=Yi;J[79192]=bj(103532);J[79193]=Yi;J[79194]=bj(103425);J[79195]=Yi;J[79196]=bj(22361);J[79197]=Yi;J[79198]=bj(70008);J[79199]=Yi;N[79200]=Q(1)/N[59873];J[79236]=bj(45222);J[79237]=Yi;J[79238]=bj(50321);J[79239]=Yi;J[79240]=bj(13937);J[79241]=Yi;J[79242]=bj(32861);J[79243]=Yi;J[79244]=bj(111479);J[79245]=Yi;J[79246]=bj(110055);J[79247]=Yi;J[79248]=bj(5264);J[79249]=Yi;J[79250]=bj(71642);J[79251]=Yi;J[79252]=bj(50317);J[79253]=Yi;J[79254]=bj(80464);J[79255]=Yi;J[79256]=bj(80935);J[79257]=Yi;J[79258]=bj(80474);J[79259]=Yi;J[79260]=bj(80731);J[79261]=Yi;J[79262]=bj(82213);J[79263]=Yi;J[79264]=bj(81654);J[79265]=Yi;J[79266]=bj(82198);J[79267]=Yi;J[79268]=bj(82442);J[79269]=Yi;J[79270]=bj(80832);J[79271]=Yi;J[79272]=bj(81707);J[79273]=Yi;J[79274]=bj(80845);J[79275]=Yi;J[79276]=bj(80447);J[79277]=Yi;J[79278]=bj(12712);J[79279]=Yi;J[79280]=bj(17780);J[79281]=Yi;J[79282]=bj(68730);J[79283]=Yi;J[79284]=bj(50432);J[79285]=Yi;J[79286]=bj(21018);J[79287]=Yi;J[79288]=bj(111470);J[79289]=Yi;J[79290]=bj(110046);J[79291]=Yi;J[79292]=bj(109270);J[79293]=Yi;J[79294]=bj(108986);J[79295]=Yi;J[79296]=bj(107011);J[79297]=Yi;J[79298]=bj(106038);J[79299]=Yi;J[79300]=bj(103532);J[79301]=Yi;J[79302]=bj(103425);J[79303]=Yi;J[79304]=bj(22361);J[79305]=Yi;J[79306]=bj(70008);J[79307]=Yi;J[79326]=0;J[79327]=0;J[79324]=0;J[79320]=0;J[79318]=0;J[79316]=0;J[79314]=0;J[79312]=0;J[79310]=0;J[79311]=0;J[79348]=317240;J[79346]=0;J[79342]=0;J[79340]=0;J[79338]=0;J[79336]=0;J[79334]=1;J[79332]=0;J[79333]=3;J[79322]=25776;J[79321]=25771;J[79328]=0;J[79329]=0;J[79330]=0;J[79331]=0;J[79344]=25045;J[79343]=20739;J[79353]=0;J[79351]=0;J[79352]=0;J[79349]=0;J[79350]=0;J[79370]=317240;J[79368]=0;J[79366]=23740;J[79365]=20754;J[79364]=0;J[79362]=0;J[79360]=0;J[79358]=0;J[79356]=1;J[79354]=0;J[79355]=3;J[79375]=0;J[79373]=0;J[79374]=0;J[79371]=0;J[79372]=0;J[60139]=J[74432];J[74432]=240528;J[60153]=J[74432];J[74432]=240584;J[60169]=J[74432];J[74432]=240648;J[60259]=J[74432];J[74432]=241008;J[60333]=J[74432];J[74432]=241304;J[60373]=J[74432];J[74432]=241464;J[60413]=J[74432];J[74432]=241624;J[60435]=J[74432];J[74432]=241712;J[60477]=J[74432];J[74432]=241880;J[60499]=J[74432];J[74432]=241968;J[60519]=J[74432];J[74432]=242048;J[60545]=J[74432];J[74432]=242152;J[60585]=J[74432];J[74432]=242312;J[60613]=J[74432];J[74432]=242424;J[60689]=J[74432];J[74432]=242728;J[60735]=J[74432];J[74432]=242912;J[60767]=J[74432];J[74432]=243040;J[60793]=J[74432];J[74432]=243144;mo(335064);VV(335080,10755,0);J[84030]=bj(45222);J[84031]=Yi;J[84032]=bj(50321);J[84033]=Yi;J[84034]=bj(13937);J[84035]=Yi;J[84036]=bj(32861);J[84037]=Yi;J[84038]=bj(111479);J[84039]=Yi;J[84040]=bj(110055);J[84041]=Yi;J[84042]=bj(5264);J[84043]=Yi;J[84044]=bj(71642);J[84045]=Yi;J[84046]=bj(50317);J[84047]=Yi;J[84048]=bj(45222);J[84049]=Yi;J[84050]=bj(50321);J[84051]=Yi;J[84052]=bj(13937);J[84053]=Yi;J[84054]=bj(32861);J[84055]=Yi;J[84056]=bj(111479);J[84057]=Yi;J[84058]=bj(110055);J[84059]=Yi;J[84060]=bj(5264);J[84061]=Yi;J[84062]=bj(71642);J[84063]=Yi;J[84064]=bj(50317);J[84065]=Yi;J[84066]=bj(45222);J[84067]=Yi;J[84068]=bj(50321);J[84069]=Yi;J[84070]=bj(13937);J[84071]=Yi;J[84072]=bj(32861);J[84073]=Yi;J[84074]=bj(111479);J[84075]=Yi;J[84076]=bj(110055);J[84077]=Yi;J[84078]=bj(5264);J[84079]=Yi;J[84080]=bj(71642);J[84081]=Yi;J[84082]=bj(50317);J[84083]=Yi;J[84084]=bj(45222);J[84085]=Yi;J[84086]=bj(50321);J[84087]=Yi;J[84088]=bj(13937);J[84089]=Yi;J[84090]=bj(32861);J[84091]=Yi;J[84092]=bj(111479);J[84093]=Yi;J[84094]=bj(110055);J[84095]=Yi;J[84096]=bj(5264);J[84097]=Yi;J[84098]=bj(71642);J[84099]=Yi;J[84100]=bj(50317);J[84101]=Yi;J[84102]=bj(45222);J[84103]=Yi;J[84104]=bj(50321);J[84105]=Yi;J[84106]=bj(13937);J[84107]=Yi;J[84108]=bj(32861);J[84109]=Yi;J[84110]=bj(111479);J[84111]=Yi;J[84112]=bj(110055);J[84113]=Yi;J[84114]=bj(5264);J[84115]=Yi;J[84116]=bj(71642);J[84117]=Yi;J[84118]=bj(50317);J[84119]=Yi;J[84122]=bj(45222);J[84123]=Yi;J[84124]=bj(50321);J[84125]=Yi;J[84126]=bj(13937);J[84127]=Yi;J[84128]=bj(32861);J[84129]=Yi;J[84130]=bj(111479);J[84131]=Yi;J[84132]=bj(110055);J[84133]=Yi;J[84134]=bj(5264);J[84135]=Yi;J[84136]=bj(71642);J[84137]=Yi;J[84138]=bj(50317);J[84139]=Yi;J[84140]=bj(45222);J[84141]=Yi;J[84142]=bj(50321);J[84143]=Yi;J[84144]=bj(13937);J[84145]=Yi;J[84146]=bj(32861);J[84147]=Yi;J[84148]=bj(111479);J[84149]=Yi;J[84150]=bj(110055);J[84151]=Yi;J[84152]=bj(5264);J[84153]=Yi;J[84154]=bj(71642);J[84155]=Yi;J[84156]=bj(50317);J[84157]=Yi;J[84160]=bj(45222);J[84161]=Yi;J[84162]=bj(50321);J[84163]=Yi;J[84164]=bj(13937);J[84165]=Yi;J[84166]=bj(32861);J[84167]=Yi;J[84168]=bj(111479);J[84169]=Yi;J[84170]=bj(110055);J[84171]=Yi;J[84172]=bj(5264);J[84173]=Yi;J[84174]=bj(71642);J[84175]=Yi;a=bj(50317);J[84195]=0;J[84196]=0;J[84194]=337144;J[84192]=0;J[84190]=21248;J[84189]=12110;J[84188]=0;J[84186]=0;J[84184]=0;J[84182]=0;J[84180]=1;J[84178]=0;J[84179]=3;J[84176]=a;J[84177]=Yi;J[84197]=0;J[84198]=0;J[84199]=0;J[84216]=337144;J[84214]=0;J[84212]=21970;J[84211]=59386;J[84210]=0;J[84208]=0;J[84206]=0;J[84204]=0;J[84202]=1;J[84200]=0;J[84201]=3;J[84221]=0;J[84219]=0;J[84220]=0;J[84217]=0;J[84218]=0;J[84222]=bj(43411);J[84223]=Yi;J[84232]=bj(45222);J[84233]=Yi;J[84234]=bj(50321);J[84235]=Yi;J[84236]=bj(13937);J[84237]=Yi;J[84238]=bj(32861);J[84239]=Yi;J[84240]=bj(111479);J[84241]=Yi;J[84242]=bj(110055);J[84243]=Yi;J[84244]=bj(5264);J[84245]=Yi;J[84246]=bj(71642);J[84247]=Yi;J[84248]=bj(50317);J[84249]=Yi;J[84250]=bj(45222);J[84251]=Yi;J[84252]=bj(50321);J[84253]=Yi;J[84254]=bj(13937);J[84255]=Yi;J[84256]=bj(32861);J[84257]=Yi;J[84258]=bj(111479);J[84259]=Yi;J[84260]=bj(110055);J[84261]=Yi;J[84262]=bj(5264);J[84263]=Yi;J[84264]=bj(71642);J[84265]=Yi;J[84266]=bj(50317);J[84267]=Yi;J[84268]=bj(45222);J[84269]=Yi;J[84270]=bj(50321);J[84271]=Yi;J[84272]=bj(13937);J[84273]=Yi;J[84274]=bj(32861);J[84275]=Yi;J[84276]=bj(111479);J[84277]=Yi;J[84278]=bj(110055);J[84279]=Yi;J[84280]=bj(5264);J[84281]=Yi;J[84282]=bj(71642);J[84283]=Yi;a=bj(50317);J[84302]=0;J[84303]=0;J[84300]=0;J[84298]=33849;J[84297]=35511;J[84296]=0;J[84294]=0;J[84292]=0;J[84290]=0;J[84288]=0;J[84286]=0;J[84287]=0;J[84284]=a;J[84285]=Yi;J[84304]=0;J[84305]=0;J[84306]=0;J[84307]=0;J[84326]=bj(45222);J[84327]=Yi;J[84328]=bj(50321);J[84329]=Yi;J[84330]=bj(13937);J[84331]=Yi;J[84332]=bj(32861);J[84333]=Yi;J[84334]=bj(111479);J[84335]=Yi;J[84336]=bj(110055);J[84337]=Yi;J[84338]=bj(5264);J[84339]=Yi;J[84340]=bj(71642);J[84341]=Yi;J[84342]=bj(50317);J[84343]=Yi;J[84344]=bj(45222);J[84345]=Yi;J[84346]=bj(50321);J[84347]=Yi;J[84348]=bj(13937);J[84349]=Yi;J[84350]=bj(32861);J[84351]=Yi;J[84352]=bj(111479);J[84353]=Yi;J[84354]=bj(110055);J[84355]=Yi;J[84356]=bj(5264);J[84357]=Yi;J[84358]=bj(71642);J[84359]=Yi;J[84360]=bj(50317);J[84361]=Yi;J[84374]=bj(45222);J[84375]=Yi;J[84376]=bj(50321);J[84377]=Yi;J[84378]=bj(13937);J[84379]=Yi;J[84380]=bj(32861);J[84381]=Yi;J[84382]=bj(111479);J[84383]=Yi;J[84384]=bj(110055);J[84385]=Yi;J[84386]=bj(5264);J[84387]=Yi;J[84388]=bj(71642);J[84389]=Yi;J[84390]=bj(50317);J[84391]=Yi;J[84394]=bj(45222);J[84395]=Yi;J[84396]=bj(50321);J[84397]=Yi;J[84398]=bj(13937);J[84399]=Yi;J[84400]=bj(32861);J[84401]=Yi;J[84402]=bj(111479);J[84403]=Yi;J[84404]=bj(110055);J[84405]=Yi;J[84406]=bj(5264);J[84407]=Yi;J[84408]=bj(71642);J[84409]=Yi;J[84410]=bj(50317);J[84411]=Yi;J[62225]=J[74432];J[74432]=248872;J[62347]=J[74432];J[74432]=249360;J[62415]=J[74432];J[74432]=249632;J[62553]=J[74432];J[74432]=250184;J[62659]=J[74432];J[74432]=250608;J[62689]=J[74432];J[74432]=250728;J[62753]=J[74432];J[74432]=250984;J[62829]=J[74432];J[74432]=251288;J[62851]=J[74432];J[74432]=251376;J[62871]=J[74432];J[74432]=251456;J[62897]=J[74432];J[74432]=251560;J[62919]=J[74432];J[74432]=251648;J[62949]=J[74432];J[74432]=251768;J[62977]=J[74432];J[74432]=251880;J[62999]=J[74432];J[74432]=251968;J[63023]=J[74432];J[74432]=252064;J[63041]=J[74432];J[74432]=252136;J[63069]=J[74432];J[74432]=252248;J[63091]=J[74432];J[74432]=252336;J[63105]=J[74432];J[74432]=252392;J[63137]=J[74432];J[74432]=252520;J[63171]=J[74432];J[74432]=252656;J[63191]=J[74432];J[74432]=252736;J[84502]=bj(45222);J[84503]=Yi;J[84504]=bj(50321);J[84505]=Yi;J[84506]=bj(13937);J[84507]=Yi;J[84508]=bj(32861);J[84509]=Yi;J[84510]=bj(111479);J[84511]=Yi;J[84512]=bj(110055);J[84513]=Yi;J[84514]=bj(5264);J[84515]=Yi;J[84516]=bj(71642);J[84517]=Yi;J[84518]=bj(50317);J[84519]=Yi;J[84540]=0;J[84541]=0;J[84538]=0;J[84534]=0;J[84532]=0;J[84530]=0;J[84528]=0;J[84526]=0;J[84524]=0;J[84525]=0;J[84536]=158859;J[84535]=10643;J[84542]=0;J[84543]=0;J[84544]=0;J[84545]=0;J[84546]=Dq(172976,22);J[84547]=ZC(173136,15);J[84554]=0;J[84555]=0;J[84550]=0;J[84551]=0;J[84556]=0;J[84557]=0;J[84552]=0;J[84553]=0;J[84555]=-1;J[215663]=0;J[215664]=0;J[215662]=338096;J[215660]=0;J[215656]=0;J[215654]=0;J[215652]=0;J[215650]=0;J[215648]=1;J[215646]=0;J[215647]=3;J[215658]=19190;J[215657]=12134;J[215665]=0;J[215666]=0;J[215667]=0;a=Dq(173200,18);J[215669]=0;J[215670]=0;J[215668]=a;J[215671]=0;J[215672]=0;J[215732]=1;J[215730]=1119817666;J[215731]=1850475176;J[215728]=1;J[215735]=0;H[862936]=0;J[215729]=36502;J[215733]=J[215727];J[215735]=J[74432];J[74432]=862912;J[64109]=J[74432];J[74432]=256408;J[64143]=J[74432];J[74432]=256544;J[64197]=J[74432];J[74432]=256760;J[64243]=J[74432];J[74432]=256944;J[64257]=J[74432];J[74432]=257e3;J[215750]=1;J[215748]=-990112893;J[215749]=-1808347863;J[215747]=66435;J[215746]=1;J[215753]=0;H[863008]=0;J[215751]=J[215744];J[215753]=J[74432];J[74432]=862984;J[215760]=1;J[215758]=-646628091;J[215759]=-486267828;J[215757]=55885;J[215756]=1;J[215763]=0;H[863048]=0;J[215761]=J[215755];J[215763]=J[74432];J[74432]=863024;J[64293]=J[74432];J[74432]=257144;J[215772]=1;J[215770]=-588138364;J[215771]=-388737994;J[215769]=70767;J[215768]=1;J[215775]=0;H[863096]=0;J[215773]=J[215766];J[215775]=J[74432];J[74432]=863072;J[64339]=J[74432];J[74432]=257328;J[64357]=J[74432];J[74432]=257400;J[64373]=J[74432];J[74432]=257464;J[215790]=1;J[215788]=-1295411253;J[215789]=19635675;J[215787]=56599;J[215786]=1;J[215793]=0;H[863168]=0;J[215791]=J[215784];J[215793]=J[74432];J[74432]=863144;J[215891]=J[43169];J[215890]=J[43168];J[215889]=J[43167];J[215888]=J[43166];J[215887]=J[43165];J[215886]=J[43164];J[215885]=J[43163];J[215884]=J[43162];J[215883]=J[43161];J[215882]=J[43160];J[215881]=J[43159];J[215880]=J[43158];J[215879]=J[43157];J[215878]=J[43156];J[215877]=J[43155];J[215876]=J[43154];J[215892]=bv(97019);J[64785]=J[74432];J[74432]=259112;J[64825]=J[74432];J[74432]=259272;J[64859]=J[74432];J[74432]=259408;J[64873]=J[74432];J[74432]=259464;J[64895]=J[74432];J[74432]=259552;J[64915]=J[74432];J[74432]=259632;J[64935]=J[74432];J[74432]=259712;J[64955]=J[74432];J[74432]=259792;J[64975]=J[74432];J[74432]=259872;J[65013]=J[74432];J[74432]=260024;J[216176]=0;J[216177]=0;J[216174]=0;J[216170]=0;J[216168]=0;J[216166]=0;J[216164]=0;J[216162]=0;J[216160]=0;J[216161]=0;J[216198]=864640;J[216196]=0;J[216192]=0;J[216190]=0;J[216188]=0;J[216186]=0;J[216184]=1;J[216182]=0;J[216183]=3;J[216172]=22952;J[216171]=22947;J[216178]=0;J[216179]=0;J[216180]=0;J[216181]=0;J[216194]=60284;J[216193]=60302;J[216203]=0;J[216201]=0;J[216202]=0;J[216199]=0;J[216200]=0;J[216206]=0;J[216204]=0;J[216205]=1065353216;J[216210]=0;J[216208]=0;J[216209]=1065353216;J[216214]=0;J[216212]=1065353216;J[216213]=0;J[216218]=1065353216;J[216216]=0;J[216217]=0;J[216222]=-2147483648;J[216220]=-1082130432;J[216221]=-2147483648;J[65051]=J[74432];J[74432]=260176;J[65077]=J[74432];J[74432]=260280;J[65117]=J[74432];J[74432]=260440;J[65145]=J[74432];J[74432]=260552;J[65167]=J[74432];J[74432]=260640;J[65329]=J[74432];J[74432]=261288;J[65351]=J[74432];J[74432]=261376;J[216274]=bj(158859);J[216275]=Yi;J[65407]=J[74432];J[74432]=261600;J[65439]=J[74432];J[74432]=261728;J[65491]=J[74432];J[74432]=261936;J[65527]=J[74432];J[74432]=262080;J[65569]=J[74432];J[74432]=262248;J[65609]=J[74432];J[74432]=262408;J[65649]=J[74432];J[74432]=262568;J[65671]=J[74432];J[74432]=262656;J[65685]=J[74432];J[74432]=262712;J[65719]=J[74432];J[74432]=262848;J[65755]=J[74432];J[74432]=262992;J[65787]=J[74432];J[74432]=263120;J[65805]=J[74432];J[74432]=263192;J[65855]=J[74432];J[74432]=263392;J[65993]=J[74432];J[74432]=263944;J[66045]=J[74432];J[74432]=264152;J[66095]=J[74432];J[74432]=264352;J[66115]=J[74432];J[74432]=264432;J[66147]=J[74432];J[74432]=264560;J[66179]=J[74432];J[74432]=264688;J[66199]=J[74432];J[74432]=264768;J[66237]=J[74432];J[74432]=264920;J[66253]=J[74432];J[74432]=264984;J[66269]=J[74432];J[74432]=265048;J[66291]=J[74432];J[74432]=265136;J[66389]=J[74432];J[74432]=265528;J[66423]=J[74432];J[74432]=265664;J[66455]=J[74432];J[74432]=265792;J[66487]=J[74432];J[74432]=265920;J[218567]=0;J[218568]=Co();J[218632]=0;J[218633]=0;J[218630]=0;J[218626]=0;J[218624]=0;J[218622]=0;J[218620]=0;J[218618]=0;J[218616]=0;J[218617]=0;J[218654]=874464;J[218652]=0;J[218648]=0;J[218646]=0;J[218644]=0;J[218642]=0;J[218640]=1;J[218638]=0;J[218639]=3;J[218628]=68456;J[218627]=68586;J[218634]=0;J[218635]=0;J[218636]=0;J[218637]=0;J[218650]=65668;J[218649]=23926;J[218659]=0;J[218657]=0;J[218658]=0;J[218655]=0;J[218656]=0;J[218662]=0;J[218661]=0;J[218918]=bj(45222);J[218919]=Yi;J[218920]=bj(50321);J[218921]=Yi;J[218922]=bj(13937);J[218923]=Yi;J[218924]=bj(32861);J[218925]=Yi;J[218926]=bj(111479);J[218927]=Yi;J[218928]=bj(110055);J[218929]=Yi;J[218930]=bj(5264);J[218931]=Yi;J[218932]=bj(71642);J[218933]=Yi;a=bj(50317);J[218952]=0;J[218953]=0;J[218950]=0;J[218948]=158859;J[218947]=52078;J[218946]=0;J[218944]=0;J[218942]=0;J[218940]=0;J[218938]=1;J[218936]=0;J[218937]=3;J[218934]=a;J[218935]=Yi;J[218954]=0;J[218955]=0;J[218956]=0;J[218957]=0;J[218974]=875744;J[218972]=0;J[218970]=158859;J[218969]=20145;J[218968]=0;J[218966]=0;J[218964]=0;J[218962]=0;J[218960]=1;J[218958]=0;J[218959]=3;J[218979]=0;J[218977]=0;J[218978]=0;J[218975]=0;J[218976]=0;J[218982]=1;J[218984]=0;J[218986]=0;J[218988]=0;J[218990]=0;J[218991]=20164;J[218992]=158859;J[218994]=0;J[218996]=875744;J[218980]=0;J[218981]=3;J[218997]=0;J[218998]=0;J[218999]=0;J[219e3]=0;J[219001]=0;J[219004]=1;J[219006]=0;J[219008]=0;J[219010]=0;J[219012]=0;J[219013]=24091;J[219014]=158859;J[219016]=0;J[219018]=875744;J[219002]=0;J[219003]=3;J[219023]=0;J[219021]=0;J[219022]=0;J[219019]=0;J[219020]=0;J[219040]=875744;J[219038]=0;J[219036]=158859;J[219035]=24105;J[219034]=0;J[219032]=0;J[219030]=0;J[219028]=0;J[219026]=1;J[219024]=0;J[219025]=3;J[219045]=0;J[219043]=0;J[219044]=0;J[219041]=0;J[219042]=0;J[219062]=875744;J[219060]=0;J[219058]=158859;J[219057]=22443;J[219056]=0;J[219054]=0;J[219052]=0;J[219050]=0;J[219048]=1;J[219046]=0;J[219047]=3;J[219067]=0;J[219065]=0;J[219066]=0;J[219063]=0;J[219064]=0;J[219084]=875744;J[219082]=0;J[219080]=158859;J[219079]=22466;J[219078]=0;J[219076]=0;J[219074]=0;J[219072]=0;J[219070]=1;J[219068]=0;J[219069]=3;J[219089]=0;J[219087]=0;J[219088]=0;J[219085]=0;J[219086]=0;J[219106]=875744;J[219104]=0;J[219102]=158859;J[219101]=22384;J[219100]=0;J[219098]=0;J[219096]=0;J[219094]=0;J[219092]=1;J[219090]=0;J[219091]=3;J[219111]=0;J[219109]=0;J[219110]=0;J[219107]=0;J[219108]=0;J[219128]=875744;J[219126]=0;J[219124]=158859;J[219123]=4703;J[219122]=0;J[219120]=0;J[219118]=0;J[219116]=0;J[219114]=1;J[219112]=0;J[219113]=3;J[219133]=0;J[219131]=0;J[219132]=0;J[219129]=0;J[219130]=0;J[219150]=875744;J[219148]=0;J[219146]=82870;J[219145]=82840;J[219144]=0;J[219142]=0;J[219140]=0;J[219138]=0;J[219136]=0;J[219134]=0;J[219135]=4;J[219155]=0;J[219153]=0;J[219154]=0;J[219151]=0;J[219152]=0;J[219156]=bj(158859);J[219157]=Yi;J[219158]=bj(158859);J[219159]=Yi;a=bj(45222);H[876652]=255;J[219162]=0;J[219160]=a;J[219161]=Yi;a=bj(6301);H[876668]=0;J[219166]=0;J[219164]=a;J[219165]=Yi;a=bj(4440);H[876684]=1;J[219170]=0;J[219168]=a;J[219169]=Yi;a=bj(1273);H[876700]=2;J[219174]=0;J[219172]=a;J[219173]=Yi;a=bj(6926);H[876716]=3;J[219178]=0;J[219176]=a;J[219177]=Yi;a=bj(46356);H[876732]=255;J[219182]=1;J[219180]=a;J[219181]=Yi;a=bj(6312);H[876748]=0;J[219186]=1;J[219184]=a;J[219185]=Yi;a=bj(4451);H[876764]=1;J[219190]=1;J[219188]=a;J[219189]=Yi;a=bj(1284);H[876780]=2;J[219194]=1;J[219192]=a;J[219193]=Yi;a=bj(6937);H[876796]=3;J[219198]=1;J[219196]=a;J[219197]=Yi;a=bj(67985);H[876812]=255;J[219202]=2;J[219200]=a;J[219201]=Yi;a=bj(6340);H[876828]=0;J[219206]=2;J[219204]=a;J[219205]=Yi;a=bj(4479);H[876844]=1;J[219210]=2;J[219208]=a;J[219209]=Yi;a=bj(1312);H[876860]=2;J[219214]=2;J[219212]=a;J[219213]=Yi;a=bj(6965);H[876876]=3;J[219218]=2;J[219216]=a;J[219217]=Yi;a=bj(32861);H[876892]=255;J[219222]=3;J[219220]=a;J[219221]=Yi;a=bj(6285);H[876908]=0;J[219226]=3;J[219224]=a;J[219225]=Yi;a=bj(4424);H[876924]=1;J[219230]=3;J[219228]=a;J[219229]=Yi;a=bj(1257);H[876940]=2;J[219234]=3;J[219232]=a;J[219233]=Yi;a=bj(6910);H[876956]=3;J[219238]=3;J[219236]=a;J[219237]=Yi;a=bj(59207);H[876972]=255;J[219242]=4;J[219240]=a;J[219241]=Yi;a=bj(6323);H[876988]=0;J[219246]=4;J[219244]=a;J[219245]=Yi;a=bj(4462);H[877004]=1;J[219250]=4;J[219248]=a;J[219249]=Yi;a=bj(1295);H[877020]=2;J[219254]=4;J[219252]=a;J[219253]=Yi;a=bj(6948);H[877036]=3;J[219258]=4;J[219256]=a;J[219257]=Yi;a=bj(65297);H[877052]=255;J[219262]=5;J[219260]=a;J[219261]=Yi;a=bj(6330);H[877068]=0;J[219266]=5;J[219264]=a;J[219265]=Yi;a=bj(4469);H[877084]=1;J[219270]=5;J[219268]=a;J[219269]=Yi;a=bj(1302);H[877100]=2;J[219274]=5;J[219272]=a;J[219273]=Yi;a=bj(6955);H[877116]=3;J[219278]=5;J[219276]=a;J[219277]=Yi;a=bj(6674);H[877132]=255;J[219282]=6;J[219280]=a;J[219281]=Yi;a=bj(6258);H[877148]=0;J[219286]=6;J[219284]=a;J[219285]=Yi;a=bj(4397);H[877164]=1;J[219290]=6;J[219288]=a;J[219289]=Yi;a=bj(1243);H[877180]=2;J[219294]=6;J[219292]=a;J[219293]=Yi;a=bj(6896);H[877196]=3;J[219298]=6;J[219296]=a;J[219297]=Yi;a=bj(102698);H[877212]=255;J[219302]=7;J[219300]=a;J[219301]=Yi;a=bj(6356);H[877228]=0;J[219306]=7;J[219304]=a;J[219305]=Yi;a=bj(4495);H[877244]=1;J[219310]=7;J[219308]=a;J[219309]=Yi;a=bj(1328);H[877260]=2;J[219314]=7;J[219312]=a;J[219313]=Yi;a=bj(6981);H[877276]=3;J[219318]=7;J[219316]=a;J[219317]=Yi;a=bj(34042);H[877292]=255;J[219322]=10;J[219320]=a;J[219321]=Yi;a=bj(6293);H[877308]=0;J[219326]=10;J[219324]=a;J[219325]=Yi;a=bj(4432);H[877324]=1;J[219330]=10;J[219328]=a;J[219329]=Yi;a=bj(1265);H[877340]=2;J[219334]=10;J[219332]=a;J[219333]=Yi;a=bj(6918);H[877356]=3;J[219338]=10;J[219336]=a;J[219337]=Yi;a=bj(17492);H[877372]=0;J[219342]=8;J[219340]=a;J[219341]=Yi;a=bj(66865);H[877388]=1;J[219346]=8;J[219344]=a;J[219345]=Yi;a=bj(57375);H[877404]=0;J[219350]=9;J[219348]=a;J[219349]=Yi;a=bj(56937);H[877420]=1;J[219354]=9;J[219352]=a;J[219353]=Yi;a=bj(45222);H[877436]=255;J[219358]=0;J[219356]=a;J[219357]=Yi;a=bj(46356);H[877452]=255;J[219362]=1;J[219360]=a;J[219361]=Yi;a=bj(67985);H[877468]=255;J[219366]=2;J[219364]=a;J[219365]=Yi;a=bj(32861);H[877484]=255;J[219370]=3;J[219368]=a;J[219369]=Yi;a=bj(59207);H[877500]=255;J[219374]=4;J[219372]=a;J[219373]=Yi;a=bj(65297);H[877516]=255;J[219378]=5;J[219376]=a;J[219377]=Yi;a=bj(6674);H[877532]=255;J[219382]=6;J[219380]=a;J[219381]=Yi;a=bj(70587);H[877548]=255;J[219386]=7;J[219384]=a;J[219385]=Yi;a=bj(34042);H[877564]=255;J[219390]=10;J[219388]=a;J[219389]=Yi;a=bj(33461);J[245459]=2501;J[245457]=2;J[245458]=16;J[245456]=2502;J[245454]=2;J[245455]=8;J[245453]=2503;J[245451]=1;J[245452]=16;J[245450]=2504;J[245448]=1;J[245449]=8;J[245444]=a;J[245445]=Yi;J[245471]=2505;J[245469]=2;J[245470]=16;J[245468]=2506;J[245466]=2;J[245467]=8;J[245465]=2507;J[245463]=1;J[245464]=16;J[245462]=2508;J[245460]=1;J[245461]=8;J[245847]=983104;J[245829]=42}function $na(a,b){a=a|0;b=b|0;var c=0,d=0,e=0,f=0,g=0,h=0,i=0,j=0,k=0,l=0,m=0,n=0,o=0,p=Q(0),q=0,r=0,s=0,t=0,u=0,v=0,w=Q(0),x=0,y=0,z=0,A=0,C=0,D=0,E=0,F=0,G=0,R=Q(0),T=Q(0),U=0,V=0,W=0,X=0,Y=0,_=0;c=0;a:{if((a|0)<=0){break a}b:{while(1){c=J[(e<<2)+b>>2];g=K[c|0];c:{if((g|0)!=45){f=45-g|0;break c}g=K[c+1|0];if((g|0)!=45){f=45-g|0;break c}f=103-K[c+2|0]|0}if(!f){c=Hk(c,61);if(c){break b}}e=e+1|0;if((e|0)!=(a|0)){continue}break}c=0;break a}c=c+1|0}e=-1;d:{if(!c){break d}e=1;if(!xu(49522,c)){break d}e=2;if(!xu(49750,c)){break d}e=3;if(!xu(48285,c)){break d}e=5;if(!xu(8313,c)){break d}e=4;if(!xu(33008,c)){break d}Z(152587,39550,115,3529);B()}g=e;c=Ui-448|0;Ui=c;f=1;e:{if(J[79488]){break e}f:{f=(e|0)==-1;e=J[79376];if(!(f|!e)){while(1){if((g|0)==J[e+16>>2]){if(Zi[J[e+8>>2]]()|0){break f}}e=J[e>>2];if(e){continue}break}e=J[79376]}g:{if(!e){break g}f=e;while(1){g=Zi[J[f+8>>2]]()|0;e=g?H[f+20|0]>2];if(f){continue}break}if(!e){break g}break f}f=0;dj(4,89301,126535,0);break e}g=c+4|0;Zi[J[e+4>>2]](g);hj(317508,g,444);J[79488]=e;f=1;e=J[e+16>>2]+1|0;if(e>>>0>6){e=102202}else{e=J[(e<<2)+240140>>2]}J[c>>2]=e;dj(2,89301,148937,c)}Ui=c+448|0;h:{if(f){c=J[73766];e=nj(520);ij(e+4|0,0,148);J[e+200>>2]=0;J[e+204>>2]=0;J[e+160>>2]=0;J[e+164>>2]=0;H[e+152|0]=1;g=e+168|0;J[g>>2]=0;J[g+4>>2]=0;J[e+176>>2]=0;J[e+180>>2]=0;J[e+184>>2]=0;J[e+188>>2]=0;J[e+192>>2]=0;J[e+196>>2]=0;J[e+208>>2]=0;J[e+256>>2]=0;J[e+260>>2]=0;J[e+224>>2]=0;J[e+228>>2]=0;J[e+212>>2]=0;J[e+216>>2]=1065353216;J[e+264>>2]=0;J[e+268>>2]=0;J[e+272>>2]=0;J[e+276>>2]=0;J[e+280>>2]=0;J[e+284>>2]=0;J[e+288>>2]=0;J[e+292>>2]=0;J[e+296>>2]=0;J[e+300>>2]=0;J[e+200>>2]=-1;ij(e+312|0,0,128);J[e+440>>2]=0;J[e+444>>2]=0;J[e+500>>2]=0;J[e+504>>2]=0;J[e+488>>2]=982026377;J[e+492>>2]=986500301;J[e+476>>2]=960;J[e+480>>2]=640;H[e+449|0]=0;H[e+450|0]=0;H[e+451|0]=0;H[e+452|0]=0;H[e+448|0]=1;J[e+508>>2]=0;J[e+512>>2]=0;J[e+516>>2]=0;J[e>>2]=c;c=nj(29112);f=c+448|0;j=c+336|0;h=c+224|0;k=c+112|0;d=8;while(1){ij(c+d|0,0,112);ij(d+k|0,0,112);ij(d+h|0,0,112);ij(d+j|0,0,112);ij(d+f|0,0,112);d=d+560|0;if((d|0)!=28568){continue}break}J[c+29084>>2]=0;J[c+29088>>2]=0;J[c+29100>>2]=1024;J[c+29104>>2]=16;J[c>>2]=0;f=c+29092|0;J[f>>2]=0;J[f+4>>2]=0;J[c+29080>>2]=Co();J[e+156>>2]=c;if(H[e+176|0]&1){break h}lj(64,960,e+164|0,e+172|0,g);Rp(e+180|0,31,64);J[e+464>>2]=0;J[e+372>>2]=0;J[e+364>>2]=0;J[e+320>>2]=0;J[e+324>>2]=0;J[e+304>>2]=0;I[e+248>>1]=0;J[e+232>>2]=0;J[e+456>>2]=bl();J[e+460>>2]=Yi;h=0;g=Ui-12208|0;Ui=g;J[g+308>>2]=82534;J[g+304>>2]=103495;dj(2,95703,136438,g+304|0);J[245133]=e;J[245132]=1;J[g+9128>>2]=82534;J[g+9124>>2]=103495;J[g+9120>>2]=82810;H[g+9132|0]=K[269788];i:{j:{k:{c=g+9120|0;if(ek(875260,J[c+4>>2],16)>>>0<16){if(ek(875276,J[c+8>>2],41)>>>0>=41){break k}if(ek(875244,J[c>>2],16)>>>0>=16){break j}H[875317]=K[c+12|0];break i}Z(137464,39119,176,44398);B()}Z(144259,39119,178,44398);B()}Z(137518,39119,180,44398);B()}c=vo(98891);if(c){c=K[c|0]==49}else{c=0}H[e+449|0]=c;c=g+8096|0;ij(c,0,1024);ij(g+7072|0,0,1024);ij(g+6048|0,0,1024);H[g+6048|0]=46;f=g+5024|0;H[f|0]=0;mM(J[b>>2],f);l:{m:{n:{o:{p:{q:{r:{s:{t:{u:{v:{w:{x:{y:{z:{A:{if((a|0)<2){break A}f=J[((a<<2)+b|0)-4>>2];if(K[f|0]==45){break A}ek(c,f,1024);break z}if(vo(88937)){c=vo(88937)}else{c=158859}J[g+288>>2]=c;f=g+11184|0;Gj(f,1024,80889,g+288|0);J[g+272>>2]=c;d=g+10160|0;Gj(d,1024,80905,g+272|0);c=g+9136|0;cm(g+5024|0,80921,c,1024);if(!_k(f)){if(!_k(d)){d=c;if(!_k(c)){break y}}ek(g+8096|0,d,1024);break z}ek(g+8096|0,g+11184|0,1024)}k=e+4|0;c=Ui-2240|0;Ui=c;B:{C:{D:{E:{l=g+8096|0;if(l){if(!k){break E}J[k>>2]=0;F:{G:{if(!ep(l,c)){H:{if(Wj(c,36507,5)){if(Wj(c,19811,6)){break H}}f=c+2232|0;J[f>>2]=0;J[f+4>>2]=0;J[c+2224>>2]=0;J[c+2228>>2]=0;d=c+2188|0;J[d+8>>2]=0;J[d+12>>2]=0;J[d+28>>2]=1;J[d+32>>2]=0;J[d+4>>2]=2273;J[d+16>>2]=0;J[d+20>>2]=0;J[d+24>>2]=0;J[c+2196>>2]=2146;J[c+2192>>2]=2147;J[c+2188>>2]=c+2224;f=-1;d=UM(d,c+72|0,L[c+136>>1],!Wj(c,19811,6));I:{if(!d){break I}j=XM(d,c+140|0);Uu(d);if(j){break I}d=J[c+2228>>2];f=J[c+2224>>2];if((d|0)==(f|0)){break D}f=oS(l,f,d-f|0,a,b,k)}if(H[c+2236|0]&1){break F}d=J[c+2224>>2];if(!d){break F}cj(d);break F}if(!Wj(c,66717,5)){f=nS(c+140|0,a,b,k);break F}if(!Wj(c,83428,5)){break G}if(!Wj(c,9632,5)){break G}break C}if(!_k(l)){break C}}f=nS(l,a,b,k)}if(f){break B}f=0;j=J[216331];if(!j){break B}d=J[k>>2];while(1){k=J[j+4>>2];if(k){Zi[k|0](d)}j=J[j+24>>2];if(j){continue}break}break B}Z(49412,41783,726,76291);B()}Z(57428,41783,727,76291);B()}Z(112533,54052,429,12693);B()}f=-5}Ui=c+2240|0;J:{if(f){if(K[e+450|0]){break J}J[g+260>>2]=f;J[g+256>>2]=l;dj(5,95703,142081,g+256|0);j=0;break r}f=g+6048|0;mM(g+8096|0,f);d=g+7072|0;ek(d,f,1024);c=g+11184|0;ek(c,f,1024);zl(c,K[g+6048|0]?9913:9940,1024);if(_k(c)){ek(d,102670,1024);zl(d,c,1024)}J[70114]=ak(J[e+4>>2],49854,2);cm(g+5024|0,48850,g+11184|0,1024);d=0;c=nn(J[e+4>>2],22324,0);if(c){d=g+10160|0;cm(g+6048|0,c,d,1024)}f=g+11184|0;if(!_k(f)){break u}if(vu(f,g+9136|0)){break u}j=J[g+9136>>2];c=sj(j);J[g+3680>>2]=0;j=wu(f,c,j,g+3680|0);if(!j){break x}J[g+228>>2]=j;J[g+224>>2]=f;dj(4,95703,137782,g+224|0);break w}J[g+244>>2]=f;J[g+240>>2]=g+8096;dj(4,95703,142081,g+240|0)}j=0;dj(5,95703,16170,0);break r}f=J[g+3680>>2];j=J[g+9136>>2];if((f|0)==(j|0)){break v}J[g+212>>2]=f;J[g+208>>2]=j;dj(4,95703,22021,g+208|0)}cj(c);break u}f=oK(c,f);cj(c);if(!f){break t}}if(!d){break s}if(!_k(d)){break s}if(vu(d,g+9136|0)){break s}f=J[g+9136>>2];c=sj(f);J[g+3680>>2]=0;f=wu(d,c,f,g+3680|0);if(f){J[g+196>>2]=f;J[g+192>>2]=d;dj(4,95703,137782,g+192|0);cj(c);break s}f=J[g+3680>>2];d=J[g+9136>>2];if((f|0)!=(d|0)){J[g+180>>2]=f;J[g+176>>2]=d;dj(4,95703,22021,g+176|0);cj(c);break s}f=oK(c,f);cj(c);if(f){break s}}dj(2,95703,75199,0)}if((ak(J[e+4>>2],33900,1)|0)==1){aa(288688,158860,0)|0}c=K[269788];f=ak(J[e+4>>2],20708,1);H[g+5016|0]=K[158888];j=J[39721];d=g+5008|0;J[d>>2]=J[39720];J[d+4>>2]=j;d=J[39719];J[g+5e3>>2]=J[39718];J[g+5004>>2]=d;d=J[39717];J[g+4992>>2]=J[39716];J[g+4996>>2]=d;f=(f|0)!=0&c;if((a|0)>0){j=0;while(1){c=J[(j<<2)+b>>2];K:{if(!$k(g+4992|0,c,24)){c=Hk(c,61);d=c+1|0;if(!$k(60828,d,4)){f=1;break K}if(!$k(62644,d,5)){f=0;break K}J[g+164>>2]=c;J[g+160>>2]=g+4992;dj(3,95703,117878,g+160|0);break K}if(!$k(81750,c,11)){i=1;break K}if(!$k(158896,c,23)){h=1;break K}if($k(62423,c,9)){d=K[c|0];L:{if((d|0)!=45){c=45-d|0;break L}c=118-K[c+1|0]|0}if(c){break K}}J[70114]=0}j=j+1|0;if((j|0)!=(a|0)){continue}break}}a=nj(16);I[a+12>>1]=0;J[a>>2]=Zj(1,512);b=Zj(1,256);J[a+8>>2]=128;J[a+4>>2]=b;J[216330]=a;b=g+4988|0;J[b>>2]=0;y=ak(J[e+4>>2],33744,1);H[b|0]=K[b|0]&239|!y<<4;a=g+4724|0;ij(a,0,264);hx(a);a=J[g+4984>>2];if(a){c=yj(4521);M:{if(K[a|0]){while(1){if(!It(a,4521,c)){break M}d=K[a+1|0];a=a+1|0;if(d){continue}break}}a=0}H[b|0]=K[b|0]&223|((a|0)!=0)<<5}c=nj(3484);ij(c,0,3484);a=K[b|0]<<1;J[c+3480>>2]=J[c+3480>>2]&-127|a&2|a&4|a&8|a&16|a&32|a&64;J[e+420>>2]=c;a=g+4720|0;J[a>>2]=0;J[g+4712>>2]=0;J[g+4716>>2]=0;J[g+4708>>2]=J[e+4>>2];J[g+4712>>2]=0;J[g+4716>>2]=J[e+156>>2];J[a>>2]=J[e+420>>2];d=g+4708|0;b=0;c=Ui-16|0;Ui=c;a=J[215795];N:{if(!a){break N}O:{while(1){b=J[a+20>>2];if(b){J[215796]=a;b=Zi[b|0](d)|0;if(b){break O}H[a+52|0]=K[a+52|0]|1}a=J[a>>2];if(a){continue}break}b=0;break N}J[c>>2]=a+4;dj(4,91468,29038,c)}J[215796]=0;Ui=c+16|0;P:{if(b){J[g+144>>2]=b;dj(5,95703,140006,g+144|0);j=0;break P}d=0;Q:{if(!ak(J[e+4>>2],55947,0)){break Q}a=J[39739];J[g+392>>2]=J[39738];J[g+396>>2]=a;a=J[39737];J[g+384>>2]=J[39736];J[g+388>>2]=a;a=J[39733];J[g+368>>2]=J[39732];J[g+372>>2]=a;a=J[39735];J[g+376>>2]=J[39734];J[g+380>>2]=a;a=nn(J[e+4>>2],33034,0);if(a){b=a;a=g+9136|0;cm(b,g+368|0,a,1024);J[g+428>>2]=a;d=1;a=g+432|0}else{a=g+428|0}b=g+3680|0;if(ek(b,135027,1024)>>>0<1024){c=b;b=g+2656|0;cm(c,g+368|0,b,1024);J[a>>2]=b;d=d+1|0}a=g+1632|0;R:{if(!ix(nn(J[e+4>>2],65964,21257),a)){b=a;a=g+608|0;cm(b,g+368|0,a,1024);J[(g+428|0)+(d<<2)>>2]=a;d=d+1|0;break R}if(!d){break Q}}j=0;while(1){b=J[(g+428|0)+(j<<2)>>2];a=Ui-32|0;Ui=a;c=J[218582];if(c){vk(c);J[218582]=0}c=ol(b,82669);J[218582]=c;S:{if(c){J[a>>2]=b;dj(2,99340,28801,a);break S}J[a+16>>2]=b;dj(5,99340,148539,a+16|0)}Ui=a+32|0;if(c){break Q}j=j+1|0;if((j|0)!=(d|0)){continue}break}}C=nn(J[e+4>>2],35387,0);J[g+604>>2]=0;b=nn(J[e+4>>2],66224,66238);r=+fn(J[e+4>>2],74608,Q(0))*255;T:{if(r<4294967296&r>=0){a=~~r>>>0;break T}a=0}c=a&255;r=+fn(J[e+4>>2],48133,Q(0))*255;U:{if(r<4294967296&r>=0){a=~~r>>>0;break U}a=0}c=c|a<<8&65280;r=+fn(J[e+4>>2],60889,Q(0))*255;V:{if(r<4294967296&r>=0){a=~~r>>>0;break V}a=0}c=c|a<<16&16711680;r=+fn(J[e+4>>2],84078,Q(0))*255;W:{if(r<4294967296&r>=0){a=~~r>>>0;break W}a=0}c=c|a<<24;J[e+484>>2]=c;J[e+476>>2]=ak(J[e+4>>2],52989,960);d=ak(J[e+4>>2],14641,640);J[e+480>>2]=d;a=g+3728|0;J[a>>2]=0;J[a+4>>2]=0;j=g+3712|0;J[j>>2]=0;J[j+4>>2]=0;k=g+3704|0;J[k>>2]=0;J[k+4>>2]=0;l=g+3696|0;J[l>>2]=0;J[l+4>>2]=0;m=g+3688|0;J[m>>2]=0;J[m+4>>2]=0;o=g+3720|0;J[o>>2]=0;J[o+4>>2]=0;n=g+3736|0;J[n>>2]=0;J[n+4>>2]=0;J[a>>2]=47292;J[j>>2]=e;J[k>>2]=e;J[l>>2]=e;J[m>>2]=e;J[g+3680>>2]=0;J[g+3684>>2]=0;J[g+3724>>2]=1;J[g+3708>>2]=2;J[g+3700>>2]=3;J[g+3692>>2]=4;J[g+3684>>2]=5;j=J[e+476>>2];J[o>>2]=d;J[g+3716>>2]=j;d=ak(J[e+4>>2],22712,0);J[a>>2]=b;J[g+3724>>2]=d;H[g+3732|0]=(ak(J[e+4>>2],48205,0)|0)!=0;a=ak(J[e+4>>2],52227,0);J[n>>2]=c;H[g+3734|0]=(a|0)!=0;a=J[79488];if(a){a=J[a+16>>2]}else{a=-1}a=a-1|0;if(a>>>0>=5){break q}J[g+3680>>2]=a;H[g+3740|0]=((ak(J[e+4>>2],9151,0)|0)!=0)<<3;if(J[g+3680>>2]==1){a=ak(J[e+4>>2],13242,33);H[g+3741|0]=K[g+3741|0]&128|a&127;a=ak(J[e+4>>2],13271,1);H[g+3741|0]=K[g+3741|0]&127|((a|0)!=0)<<7}a=0;if(!J[83763]){a=ij(nj(92),0,92);J[218830]=0;J[218831]=0;J[218838]=0;J[218839]=0;J[218846]=0;J[218847]=0;J[218844]=0;J[218845]=1;J[218852]=0;J[218853]=2;J[218854]=0;J[218855]=0;J[218836]=0;J[218837]=0;J[218834]=0;J[218835]=0;J[218832]=0;J[218833]=0;J[218831]=6;J[218839]=6;J[218840]=0;J[218841]=0;J[218842]=0;J[218843]=0;J[218847]=6;J[218848]=0;J[218849]=0;J[218850]=0;J[218851]=0;J[218856]=0;J[218857]=0;J[218858]=0;J[218859]=0;J[218861]=3;J[218860]=0;J[218855]=6;J[218866]=0;J[218867]=0;J[218864]=0;J[218865]=0;J[218862]=0;J[218863]=0;J[218869]=4;J[218868]=0;J[218863]=6;J[218874]=0;J[218875]=0;J[218872]=0;J[218873]=0;J[218870]=0;J[218871]=0;J[218877]=5;J[218876]=0;J[218871]=6;J[218882]=0;J[218883]=0;J[218880]=0;J[218881]=0;J[218878]=0;J[218879]=0;J[218885]=6;J[218884]=0;J[218879]=6;J[218890]=0;J[218891]=0;J[218888]=0;J[218889]=0;J[218886]=0;J[218887]=0;J[218893]=7;J[218892]=0;J[218887]=6;J[218898]=0;J[218899]=0;J[218896]=0;J[218897]=0;J[218894]=0;J[218895]=0;J[218901]=8;J[218900]=0;J[218895]=6;J[218906]=0;J[218907]=0;J[218904]=0;J[218905]=0;J[218902]=0;J[218903]=0;J[218909]=9;J[218908]=0;J[218903]=6;J[218914]=0;J[218915]=0;J[218912]=0;J[218913]=0;J[218910]=0;J[218911]=0;J[218917]=10;J[218916]=0;J[218911]=6;Nb()|0;Gb(2317)|0;J[83763]=a}J[e+8>>2]=a;b=g+3680|0;d=-2;X:{if(H[a+89|0]&1){break X}d=-1;Y:{Z:{_:{$:{switch(J[b>>2]-1|0){case 0:if(K[b+54|0]==1){sa(131097,1)}sa(131098,196609);sa(131091,J[b+44>>2]);if(!(_a(J[b+36>>2],J[b+40>>2],8,8,8,K[b+60|0],32,8,(K[b+52|0]?65538:65537)|0)|0)){break X}c=1536;break _;case 1:case 3:break $;default:break Y}}sa(131098,0);sa(131091,J[b+44>>2]);if(!(_a(J[b+36>>2],J[b+40>>2],8,8,8,8,32,8,(K[b+52|0]?65538:65537)|0)|0)){break X}if(J[b>>2]!=4){break Z}c=1024}I[a+88>>1]=c|L[a+88>>1]}Fb(J[b+56>>2]);Ab(1441);Eb(1442);Db(1443);Cb(1444);Ib(1445)|0;Za(1);$a(a+80|0,a+84|0);if(!(Kb(1446)|0)){dj(5,91680,122318,0)}if(!(Hb(1447)|0)){dj(5,91680,122277,0)}if(!(Jb(1448)|0)){dj(5,91680,122352,0)}J[a>>2]=J[b+4>>2];J[a+4>>2]=J[b+8>>2];J[a+8>>2]=J[b+12>>2];J[a+12>>2]=J[b+16>>2];J[a+16>>2]=J[b+20>>2];J[a+20>>2]=J[b+24>>2];J[a+24>>2]=J[b+28>>2];J[a+28>>2]=J[b+32>>2];c=L[a+88>>1]&-2049|K[b+54|0]<<11;I[a+88>>1]=c;I[a+88>>1]=K[b+44|0]|c&65024|256;d=0;break X}Z(114101,37255,285,6591);B()}aa:{if(d){J[g+128>>2]=d;dj(5,95703,132127,g+128|0);j=0;break aa}d=ak(J[e+4>>2],81772,1);k=ak(J[e+4>>2],50054,1);H[g+600|0]=1;J[g+568>>2]=110065;J[e+220>>2]=HC();a=g+532|0;J[a+24>>2]=0;J[a+28>>2]=0;J[a>>2]=0;J[a+4>>2]=0;J[a+32>>2]=0;J[a+16>>2]=0;J[a+20>>2]=0;J[a+8>>2]=5;J[a+12>>2]=2;J[a+28>>2]=1;c=nn(J[e+4>>2],33622,36243);b=2;ba:{if(!jj(c,36243)){break ba}b=1;if(!jj(c,9852)){break ba}b=3;if(!jj(c,9815)){break ba}b=4;if(!jj(c,36207)){break ba}b=5;if(!jj(c,9838)){break ba}b=jj(c,36229)?-1:6}J[a+8>>2]=b;J[a+12>>2]=jj(nn(J[e+4>>2],33658,36243),36243)?1:2;j=K[a+32|0]&-2|f;H[a+32|0]=j;b=4;if(!i){b=((ak(J[e+4>>2],81727,0)|0)!=0)<<2;j=K[a+32|0]}j=j&-5|b;H[a+32|0]=j;b=8;if(!h){b=((ak(J[e+4>>2],19075,0)|0)!=0)<<3;j=K[a+32|0]}H[a+32|0]=j&247|b;j=0;J[a+24>>2]=ak(J[e+4>>2],58639,0)<<20;J[a>>2]=J[e+8>>2];J[a+16>>2]=J[e+476>>2];J[a+20>>2]=J[e+480>>2];H[a+32|0]=ak(J[e+4>>2],44289,0)<<1&2|K[a+32|0]&253;b=J[e+220>>2];c=d?k:0;J[a+28>>2]=c;J[a+4>>2]=b;a=Zi[J[79377]](a)|0;J[e+224>>2]=a;if(!a){dj(5,95703,115077,0);break aa}VR(e,c);G=Zi[J[79382]](J[e+224>>2])|0;a=J[(Zi[J[79381]](J[e+224>>2])|0)+80>>2];b=J[(Zi[J[79381]](J[e+224>>2])|0)+84>>2];N[e+488>>2]=Q(1)/Q(a>>>0);N[e+492>>2]=Q(1)/Q(b>>>0);J[e+472>>2]=ak(J[e+4>>2],3803,60);N[e+496>>2]=fn(J[e+4>>2],43457,Q(.5));J[78501]=b;J[78500]=a;J[e+468>>2]=ak(J[e+4>>2],3833,0);b=ak(J[e+4>>2],J[55821],1024);a=g+1656|0;J[a>>2]=0;J[a+4>>2]=0;a=g+1648|0;J[a>>2]=0;J[a+4>>2]=0;J[g+1640>>2]=0;J[g+1644>>2]=0;a=g+1632|0;J[a+32>>2]=0;J[a+36>>2]=0;J[a+4>>2]=0;J[a+8>>2]=0;J[a>>2]=1024;J[a+48>>2]=0;J[a+40>>2]=0;J[a+44>>2]=0;J[a+12>>2]=0;J[a+16>>2]=0;J[a+20>>2]=0;J[a+24>>2]=0;J[a+28>>2]=0;J[g+1636>>2]=0;J[g+1632>>2]=b;ca:{if(!K[269788]){break ca}J[g+1636>>2]=1;if(!ak(J[e+4>>2],68058,1)){break ca}J[g+1636>>2]=J[g+1636>>2]|4}if(!(!ak(J[e+4>>2],75143,1)|!ak(J[e+4>>2],10350,1))){J[g+1636>>2]=J[g+1636>>2]|8}t=nn(J[e+4>>2],52158,g+7072|0);J[g+112>>2]=t;dj(2,95703,29085,g+112|0);o=g+1632|0;c=Ui-1248|0;Ui=c;J[c+1240>>2]=0;J[c+1244>>2]=0;a=Cq(69783,c+1240|0);da:{if(a){J[c+164>>2]=a;J[c+160>>2]=69783;dj(5,96538,140221,c+160|0);break da}j=nj(8432);f=16;while(1){a=f+j|0;J[a+32>>2]=0;J[a+36>>2]=0;J[a+80>>2]=0;J[a+84>>2]=0;J[a>>2]=0;J[a+4>>2]=0;J[a+48>>2]=0;J[a+52>>2]=0;J[a+96>>2]=0;J[a+100>>2]=0;J[a+40>>2]=0;J[a+44>>2]=0;J[a+24>>2]=0;J[a+28>>2]=0;J[a+16>>2]=0;J[a+20>>2]=0;J[a+8>>2]=0;J[a+12>>2]=0;J[a+56>>2]=0;J[a+60>>2]=0;b=a- -64|0;J[b>>2]=0;J[b+4>>2]=0;J[a+72>>2]=0;J[a+76>>2]=0;J[a+88>>2]=0;J[a+92>>2]=0;J[a+104>>2]=0;J[a+108>>2]=0;J[a+112>>2]=0;J[a+116>>2]=0;J[a+120>>2]=0;J[a+124>>2]=0;J[a+128>>2]=0;J[a+132>>2]=0;J[a+136>>2]=0;J[a+140>>2]=0;J[a+36>>2]=-1;J[a+84>>2]=-1;J[a+176>>2]=0;J[a+180>>2]=0;J[a+144>>2]=0;J[a+148>>2]=0;J[a+132>>2]=-1;J[a+152>>2]=0;J[a+156>>2]=0;J[a+160>>2]=0;J[a+164>>2]=0;J[a+168>>2]=0;J[a+172>>2]=0;J[a+184>>2]=0;J[a+188>>2]=0;J[a+180>>2]=-1;f=f+192|0;if((f|0)!=6160){continue}break}l=ij(j,0,8432);a=l;b=J[c+1244>>2];J[a+6192>>2]=J[c+1240>>2];J[a+6196>>2]=b;a=a+6200|0;if(ep(t,a)){J[c+144>>2]=t;dj(4,96538,29107,c+144|0);Eo(J[c+1240>>2],J[c+1244>>2]);ea:{if(H[l+8404|0]&1){break ea}a=J[l+8392>>2];if(!a){break ea}cj(a)}fa:{if(H[l+6184|0]&1){break fa}a=J[l+6172>>2];if(!a){break fa}cj(a)}cj(l);j=0;break da}J[l+8408>>2]=0;H[c+1236|0]=1;J[c+1204>>2]=76429;J[l+8420>>2]=HC();b=l+6340|0;f=l+6208|0;ga:{ha:{if(Wj(a,36507,5)){break ha}d=bo(bj(36507),Yi);if(!d){break ha}if(!(Zi[J[d+8>>2]](a)|0)){break ha}d=Nn(d,a,0,c+1200|0);if(!d){h=36507;k=223296;break ga}J[c+140>>2]=b;J[c+136>>2]=f;J[c+132>>2]=a;J[c+128>>2]=d;dj(4,96538,25981,c+128|0)}ia:{if(Wj(a,19811,6)){break ia}d=bo(bj(36507),Yi);if(!d){break ia}if(!(Zi[J[d+8>>2]](a)|0)){break ia}d=Nn(d,a,0,c+1200|0);if(!d){h=36507;k=223308;break ga}J[c+124>>2]=b;J[c+120>>2]=f;J[c+116>>2]=a;J[c+112>>2]=d;dj(4,96538,25981,c+112|0)}ja:{if((K[a|0]|K[a+1|0]<<8|(K[a+2|0]<<16|K[a+3|0]<<24))!=1751347809|(K[a+4|0]|K[a+5|0]<<8|(K[a+6|0]<<16|K[a+7|0]<<24))!=6649449){break ja}d=bo(bj(60730),Yi);if(!d){break ja}if(!(Zi[J[d+8>>2]](a)|0)){break ja}d=Nn(d,a,0,c+1200|0);if(!d){h=60730;k=223320;break ga}J[c+108>>2]=b;J[c+104>>2]=f;J[c+100>>2]=a;J[c+96>>2]=d;dj(4,96538,25981,c+96|0)}ka:{if(Wj(a,57616,7)){break ka}d=bo(bj(60730),Yi);if(!d){break ka}if(!(Zi[J[d+8>>2]](a)|0)){break ka}d=Nn(d,a,0,c+1200|0);if(!d){h=60730;k=223332;break ga}J[c+92>>2]=b;J[c+88>>2]=f;J[c+84>>2]=a;J[c+80>>2]=d;dj(4,96538,25981,c+80|0)}la:{if(Wj(a,66717,5)){break la}d=bo(bj(66717),Yi);if(!d){break la}if(!(Zi[J[d+8>>2]](a)|0)){break la}d=Nn(d,a,0,c+1200|0);if(!d){h=66717;k=223344;break ga}J[c+76>>2]=b;J[c+72>>2]=f;J[c+68>>2]=a;J[c+64>>2]=d;dj(4,96538,25981,c- -64|0)}J[c>>2]=t;dj(3,96538,27147,c);SK(l);Eo(J[c+1240>>2],J[c+1244>>2]);j=0;break da}f=J[l+8408>>2];if(!f){d=J[c+1200>>2];f=nj(56);a=f;J[a+32>>2]=0;J[a+36>>2]=0;J[a>>2]=0;J[a+4>>2]=0;J[a+40>>2]=0;J[a+44>>2]=0;J[a+24>>2]=0;J[a+28>>2]=0;J[a+16>>2]=0;J[a+20>>2]=0;a=a+8|0;J[a>>2]=0;J[a+4>>2]=0;J[f+36>>2]=-1;lj(2,16,f,a,f+4|0);a=Co();J[f+48>>2]=d;J[f+52>>2]=a;J[l+8408>>2]=f}or(f,62686,J[c+1200>>2],-10,0);if(!jj(60730,h)){J[l+8416>>2]=J[c+1200>>2]}ma:{if(K[k+8|0]!=1){break ma}f=yj(b);a=c-(f+16&-16)|0;Ui=a;ek(a,b,f+1|0);b=ul(a,47);na:{if(b){H[b|0]=0;break na}H[a|0]=0}b=a;a=c+176|0;cm(b,J[55820],a,1024);if(!_k(a)){break ma}J[l+8388>>2]=Gk(a)}a=J[l+8416>>2];oa:{if(!a){break oa}if(K[o+4|0]&8){b=J[J[a>>2]+20>>2];if(b){a=Zi[b|0](J[a+4>>2],c+1200|0)|0}else{a=-1}if(a){break oa}a=c+176|0;if(PK(J[c+1200>>2],a)){break oa}u=J[l+8408>>2];k=Ui-3280|0;Ui=k;b=a;a=k- -64|0;cm(b,J[55861],a,1024);if(_k(a)){D=J[u+52>>2];Tj(D);J[k+56>>2]=0;J[k+60>>2]=0;J[k+48>>2]=0;J[k+52>>2]=0;q=k+48|0;d=Ui-2208|0;Ui=d;pa:{v=ol(a,82700);qa:{if(!v){J[d>>2]=a;dj(4,96538,27498,d);h=-9;break qa}a=d+144|0;ij(a,0,2048);h=-19;ra:{if(!xs(a,2048,v)){break ra}z=q+8|0;x=q+4|0;E=-1;while(1){a=fp(d+144|0,J[55862],d+2200|0);sa:{if(!a){break sa}b=0;s=-1e3;i=-1;f=0;m=0;ta:{ua:{while(1){va:{wa:{if(!m){if(!Bm(a,91447)){break wa}i=0;break va}if(!((m|0)!=1|i)){J[d+64>>2]=d+2204;if((Lt(a,80444,d- -64|0)|0)==1){s=J[d+2204>>2];i=0;break va}J[d+52>>2]=a;J[d+48>>2]=91326;dj(4,96538,147475,d+48|0);break ua}A=(i|0)!=1;if(!(A|(m|0)!=1)){J[d+96>>2]=d+2204;if((Lt(a,80444,d+96|0)|0)==1){s=J[d+2204>>2];i=1;break va}J[d+84>>2]=a;J[d+80>>2]=85049;dj(4,96538,147475,d+80|0);break ua}xa:{if((m|0)!=2|A){break xa}n=yj(a);ya:{if(!n){break ya}f=a-1|0;while(1){F=H[f+n|0];if(!((F|0)==32|F-9>>>0<5)){break ya}n=n-1|0;H[n+a|0]=0;if(n){continue}break}}f=a;if(K[a|0]){break xa}J[d+116>>2]=a;J[d+112>>2]=95769;dj(4,96538,147523,d+112|0);break ua}if((m|0)!=3|A){break va}n=yj(a);za:{if(!n){break za}b=a-1|0;while(1){i=H[b+n|0];if(!((i|0)==32|i-9>>>0<5)){break za}n=n-1|0;H[n+a|0]=0;if(n){continue}break}}if(K[a|0]){i=1;b=a;break va}J[d+132>>2]=a;J[d+128>>2]=93389;dj(4,96538,147523,d+128|0);break ua}i=Bm(a,86865)?1:i}m=m+1|0;a=fp(0,J[55862],d+2200|0);if(a){continue}break}if(!i&(m|0)!=2){break ua}if((m|0)==4|(i|0)!=1){break ta}}J[d+16>>2]=d+144;dj(4,96538,149407,d+16|0);break sa}Aa:{switch(i|0){case 0:E=1;if((s|0)==1){break sa}J[d+36>>2]=s;J[d+32>>2]=1;dj(4,96538,77409,d+32|0);break ra;case 1:break Aa;default:break sa}}a=J[x>>2];m=J[z>>2];if((a|0)==(m|0)){if(H[q+12|0]&1){break h}lj(((a-J[q>>2]|0)/12|0)+8|0,12,q,z,x);m=J[q+8>>2];a=J[q+4>>2]}f=Gk(f);b=Gk(b);if((a|0)==(m|0)){break p}J[x>>2]=a+12;J[a+8>>2]=s;J[a+4>>2]=b;J[a>>2]=f}if(xs(d+144|0,2048,v)){continue}break}h=(E|0)!=1?-19:0}vk(v)}Ui=d+2208|0;break pa}Ba:{if(h){dj(4,96538,66521,0);break Ba}a=J[k+52>>2];b=J[k+48>>2];if((a|0)!=(b|0)){a=(a-b|0)/12|0;h=a>>>0<=1?1:a;a=0;while(1){b=J[k+48>>2];if((J[k+52>>2]-b|0)/12>>>0<=a>>>0){break o}b=b+P(a,12)|0;f=J[b>>2];m=J[b+8>>2];b=J[b+4>>2];d=k+1092|0;ep(b,d);i=bo(bj(d),Yi);Ca:{if(!i){J[k+4>>2]=b;J[k>>2]=d;dj(4,96538,145618,k);break Ca}if(!(Zi[J[i+8>>2]](k+1092|0)|0)){J[k+32>>2]=b;dj(4,96538,147746,k+32|0);break Ca}d=Nn(i,k+1092|0,J[u+48>>2],k+1088|0);if(d){J[k+24>>2]=d;J[k+20>>2]=b;J[k+16>>2]=f;dj(4,96538,80307,k+16|0);break Ca}or(u,f,J[k+1088>>2],m,1)}a=a+1|0;if((h|0)!=(a|0)){continue}break}}BK(k+48|0)}Da:{if(H[k+60|0]&1){break Da}a=J[k+48>>2];if(!a){break Da}cj(a)}Lj(D)}Ui=k+3280|0;break oa}dj(2,96538,129383,0)}J[c+48>>2]=t;dj(0,96538,154705,c+48|0);J[l+6160>>2]=0;b=J[o>>2];a=nj(32);J[a+16>>2]=0;J[a+20>>2]=0;J[a>>2]=0;J[a+4>>2]=0;J[a+24>>2]=0;J[a+28>>2]=0;J[a+8>>2]=0;J[a+12>>2]=0;J[a+20>>2]=-1;J[l>>2]=a;h=a;a=P(b,3)>>>2|0;f=a>>>0<=1?1:a;DN(h,f,b);a=nj(32);J[a+16>>2]=0;J[a+20>>2]=0;J[a>>2]=0;J[a+4>>2]=0;J[a+24>>2]=0;J[a+28>>2]=0;J[a+8>>2]=0;J[a+12>>2]=0;J[a+20>>2]=-1;J[l+4>>2]=a;NC(a,f,J[o>>2]);Ea:{if(H[o+4|0]&1){a=nj(32);J[a+16>>2]=0;J[a+20>>2]=0;J[a>>2]=0;J[a+4>>2]=0;J[a+24>>2]=0;J[a+28>>2]=0;J[a+8>>2]=0;J[a+12>>2]=0;J[a+20>>2]=-1;J[l+8>>2]=a;zN(a,f,J[o>>2]);a=nj(16);J[a>>2]=0;J[a+4>>2]=0;b=a+8|0;J[b>>2]=0;J[b+4>>2]=0;J[l+12>>2]=a;lj(256,8,a,b,a+4|0);break Ea}J[l+8>>2]=0;J[l+12>>2]=0}J[l+8412>>2]=0;b=J[o+28>>2];Fa:{if(!b){break Fa}k=J[o+12>>2];if(!k){break Fa}m=J[o+20>>2];if(!m){break Fa}J[c+176>>2]=0;f=J[o+24>>2];h=J[o+8>>2];o=J[o+16>>2];d=Ui-16|0;Ui=d;a=nj(2228);i=a+2212|0;J[i>>2]=0;J[i+4>>2]=0;J[a+2188>>2]=0;J[a+2192>>2]=0;i=a+2220|0;J[i>>2]=0;J[i+4>>2]=0;i=a+2204|0;J[i>>2]=0;J[i+4>>2]=0;i=a+2196|0;J[i>>2]=0;J[i+4>>2]=0;J[a+2216>>2]=-1;i=b;a=ij(a,0,2188);b=a+2188|0;f=Qu(f,i,b);Ga:{if(f){J[d>>2]=f;dj(4,96538,8757,d);b=J[b>>2];if(b){co(b)}if(J[a+2192>>2]){Ms(a+2192|0)}Ha:{if(H[a+2224|0]&1){break Ha}b=J[a+2204>>2];if(b){cj(b)}b=J[a+2196>>2];if(!b){break Ha}cj(b)}cj(a);b=-4;break Ga}i=J[b>>2];f=Ui-16|0;Ui=f;b=nj(24);J[b>>2]=0;J[b+4>>2]=0;J[b+16>>2]=0;J[b+20>>2]=0;J[b+8>>2]=0;J[b+12>>2]=0;J[i>>2]=b;H[b+20|0]=1;i=J[h>>2];i=i<<24|(i&65280)<<8|(i>>>8&65280|i>>>24);Ia:{if((i|0)!=5){J[f+4>>2]=i;J[f>>2]=5;dj(4,96538,77677,f);i=-1;break Ia}i=ij(nj(1048),0,1048);J[b+8>>2]=i;H[i+1044|0]=1;J[i+1040>>2]=m;J[i+1036>>2]=o;J[b+16>>2]=k;J[b+4>>2]=h;i=0}Ui=f+16|0;b=-3;if(i){break Ga}J[a+2192>>2]=J[J[a+2188>>2]>>2];vK(a);J[c+176>>2]=a;b=0}Ui=d+16|0;if(b){J[c+32>>2]=b;J[c+176>>2]=0;dj(4,96538,79147,c+32|0);break Fa}b=bo(bj(60730),Yi);f=J[c+176>>2];a=nj(2196);ij(a+8|0,0,2188);J[a+4>>2]=f;J[a>>2]=b;J[l+8412>>2]=a;or(J[l+8408>>2],47722,J[l+8412>>2],-5,0)}J[l+6164>>2]=Co()}Ui=c+1248|0;J[e+300>>2]=j;if(!j){j=0;break aa}J[84548]=0;J[g+524>>2]=J[e+300>>2];a=J[e+4>>2];J[g+520>>2]=a;J[g+528>>2]=J[e+224>>2];o=ak(a,61354,0);a=DB(g+520|0);m=e+400|0;Ja:{if(o){J[e+284>>2]=a;ox(a);a=J[e+284>>2];J[e+296>>2]=a;J[e+292>>2]=a;J[e+288>>2]=a;tE(m,1);a=e+284|0;break Ja}J[e+288>>2]=a;ox(a);a=g+520|0;c=DB(a);J[e+292>>2]=c;ox(c);a=DB(a);J[e+296>>2]=a;ox(a);tE(m,3);uE(m,e+288|0);uE(m,e+292|0);a=e+296|0}uE(m,a);J[g+512>>2]=256;J[g+516>>2]=0;J[g+504>>2]=49152;J[g+508>>2]=768;J[g+496>>2]=16;J[g+500>>2]=32;J[g+488>>2]=1065353216;J[g+492>>2]=128;H[g+516|0]=1;J[g+484>>2]=14272;H[g+516|0]=0;J[g+484>>2]=14272;k=J[e+4>>2];b=0;l=Ui-32|0;Ui=l;J[l+28>>2]=0;J[l+20>>2]=6;J[l+24>>2]=J[g+508>>2];J[l+8>>2]=0;J[l+12>>2]=0;h=J[g+484>>2];i=-11;Ka:{La:{a=J[245447];Ma:{if(!a){break Ma}while(1){if(jj(J[a>>2],h)){a=J[a+36>>2];if(a){continue}break Ma}break}i=Zi[J[a+4>>2]](l+20|0,l+28|0)|0;if(!i){break La}h=J[g+484>>2]}J[l>>2]=h;dj(4,96825,148968,l);J[l+8>>2]=44100;break Ka}Zi[J[a+24>>2]](J[l+28>>2],l+8|0);i=0;b=a}p=N[g+488>>2];c=ij(nj(33968),0,33968);a=c;J[a+92>>2]=0;J[a+96>>2]=0;J[a+20>>2]=0;J[a+24>>2]=0;J[a+48>>2]=0;J[a+52>>2]=0;J[a+76>>2]=0;J[a+80>>2]=0;J[a+120>>2]=0;J[a+124>>2]=1065353216;J[a+1176>>2]=0;J[a+1180>>2]=1065353216;J[a+2232>>2]=0;J[a+2236>>2]=1065353216;J[a+3288>>2]=0;J[a+3292>>2]=1065353216;J[a+4344>>2]=0;J[a+4348>>2]=1065353216;J[a+5400>>2]=0;J[a+5404>>2]=1065353216;J[a+6456>>2]=0;J[a+6460>>2]=1065353216;J[a+7512>>2]=0;J[a+7516>>2]=1065353216;J[a+8568>>2]=0;J[a+8572>>2]=1065353216;J[a+9624>>2]=0;J[a+9628>>2]=1065353216;J[a+10680>>2]=0;J[a+10684>>2]=1065353216;J[a+11736>>2]=0;J[a+11740>>2]=1065353216;J[a+12792>>2]=0;J[a+12796>>2]=1065353216;J[a+13848>>2]=0;J[a+13852>>2]=1065353216;J[a+14904>>2]=0;J[a+14908>>2]=1065353216;J[a+15960>>2]=0;J[a+15964>>2]=1065353216;J[a+17016>>2]=0;J[a+17020>>2]=1065353216;J[a+18072>>2]=0;J[a+18076>>2]=1065353216;J[a+19128>>2]=0;J[a+19132>>2]=1065353216;J[a+20184>>2]=0;J[a+20188>>2]=1065353216;J[a+21240>>2]=0;J[a+21244>>2]=1065353216;J[a+22296>>2]=0;J[a+22300>>2]=1065353216;J[a+23352>>2]=0;J[a+23356>>2]=1065353216;J[a+24408>>2]=0;J[a+24412>>2]=1065353216;J[a+25464>>2]=0;J[a+25468>>2]=1065353216;J[a+26520>>2]=0;J[a+26524>>2]=1065353216;J[a+27576>>2]=0;J[a+27580>>2]=1065353216;J[a+28632>>2]=0;J[a+28636>>2]=1065353216;J[a+29688>>2]=0;J[a+29692>>2]=1065353216;J[a+30744>>2]=0;J[a+30748>>2]=1065353216;J[a+31800>>2]=0;J[a+31804>>2]=1065353216;J[a+32856>>2]=0;J[a+32860>>2]=1065353216;J[a+32864>>2]=1065353216;J[a+31808>>2]=1065353216;J[a+30752>>2]=1065353216;J[a+29696>>2]=1065353216;J[a+28640>>2]=1065353216;J[a+27584>>2]=1065353216;J[a+26528>>2]=1065353216;J[a+25472>>2]=1065353216;J[a+24416>>2]=1065353216;J[a+23360>>2]=1065353216;J[a+22304>>2]=1065353216;J[a+21248>>2]=1065353216;J[a+20192>>2]=1065353216;J[a+19136>>2]=1065353216;J[a+18080>>2]=1065353216;J[a+17024>>2]=1065353216;J[a+15968>>2]=1065353216;J[a+14912>>2]=1065353216;J[a+13856>>2]=1065353216;J[a+12800>>2]=1065353216;J[a+11744>>2]=1065353216;J[a+10688>>2]=1065353216;J[a+9632>>2]=1065353216;J[a+8576>>2]=1065353216;J[a+7520>>2]=1065353216;J[a+6464>>2]=1065353216;J[a+5408>>2]=1065353216;J[a+4352>>2]=1065353216;J[a+3296>>2]=1065353216;J[a+2240>>2]=1065353216;J[a+1184>>2]=1065353216;J[a+128>>2]=1065353216;J[a+36>>2]=0;J[a+40>>2]=0;J[a+28>>2]=0;J[a+32>>2]=0;J[a+56>>2]=0;J[a+60>>2]=0;a=a- -64|0;J[a>>2]=0;J[a+4>>2]=0;J[c+84>>2]=0;J[c+88>>2]=0;J[c+100>>2]=0;J[c+104>>2]=0;H[c+44|0]=K[c+44|0]&254;H[c+72|0]=K[c+72|0]&254;J[c+96>>2]=-1;J[245446]=c;H[c+33960|0]=1;I[c+33958>>1]=0;J[c+4>>2]=b;J[c+8>>2]=J[l+28>>2];J[l+4>>2]=J[g+512>>2];a=0;f=nj(28);b=f;J[b>>2]=0;J[b+4>>2]=0;H[b+24|0]=0;J[b+16>>2]=0;J[b+20>>2]=0;b=b+8|0;J[b>>2]=0;J[b+4>>2]=0;lj(J[l+4>>2],12,f,b,f+4|0);Na:{d=J[f>>2];h=(J[b>>2]-d|0)/12|0;b=J[l+4>>2];if(h>>>0>=b>>>0){J[f+4>>2]=d+P(b,12);if(!b){d=0;break Na}while(1){b=J[f>>2];if((J[f+4>>2]-b|0)/12>>>0<=a>>>0){break o}b=b+P(a,12)|0;J[b>>2]=0;J[b+4>>2]=0;J[b+8>>2]=0;a=a+1|0;d=J[l+4>>2];if(a>>>0>>0){continue}break}break Na}break n}Oa:{b=L[f+20>>1];h=d&65535;if(b>>>0<=h>>>0){n=J[f+16>>2];a=sj(h<<1);J[f+16>>2]=a;j=hj(a,n,b<<1);I[f+20>>1]=d;Pa:{if(b>>>0>=h>>>0){break Pa}q=d-b&7;Qa:{if(!q){a=b;break Qa}d=0;a=b;while(1){I[j+(a<<1)>>1]=a;a=a+1|0;d=d+1|0;if((q|0)!=(d|0)){continue}break}}if(b-h>>>0>4294967288){break Pa}while(1){I[j+(a<<1)>>1]=a;b=a+1|0;I[j+(b<<1)>>1]=b;b=a+2|0;I[j+(b<<1)>>1]=b;b=a+3|0;I[j+(b<<1)>>1]=b;b=a+4|0;I[j+(b<<1)>>1]=b;b=a+5|0;I[j+(b<<1)>>1]=b;b=a+6|0;I[j+(b<<1)>>1]=b;b=a+7|0;I[j+(b<<1)>>1]=b;a=a+8|0;if((h|0)!=(a|0)){continue}break}}cj(n);break Oa}break m}J[c>>2]=f;j=J[g+512>>2];d=J[g+492>>2];if(k){a=J[g+496>>2];b=J[g+500>>2];p=pS(k,47899,Q(1));d=ak(k,83329,d);ak(k,19430,b);ak(k,24539,a);j=ak(k,24777,j)}J[c+33916>>2]=J[l+8>>2];a=J[l+12>>2];if(!a){a=J[g+508>>2]}J[c+33920>>2]=a;if(H[c+32|0]&1){break h}lj(j,64,c+20|0,c+28|0,c+24|0);a=J[c+20>>2];if(J[c+28>>2]-a>>6>>>0>>0){break n}J[c+24>>2]=a+(j<<6);b=L[c+40>>1];h=j&65535;if(b>>>0>h>>>0){break m}n=J[c+36>>2];a=sj(h<<1);J[c+36>>2]=a;f=hj(a,n,b<<1);I[c+40>>1]=j;Ra:{if(b>>>0>=h>>>0){break Ra}q=j-b&7;Sa:{if(!q){a=b;break Sa}k=0;a=b;while(1){I[f+(a<<1)>>1]=a;a=a+1|0;k=k+1|0;if((q|0)!=(k|0)){continue}break}}if(b-h>>>0>4294967288){break Ra}while(1){I[f+(a<<1)>>1]=a;b=a+1|0;I[f+(b<<1)>>1]=b;b=a+2|0;I[f+(b<<1)>>1]=b;b=a+3|0;I[f+(b<<1)>>1]=b;b=a+4|0;I[f+(b<<1)>>1]=b;b=a+5|0;I[f+(b<<1)>>1]=b;b=a+6|0;I[f+(b<<1)>>1]=b;b=a+7|0;I[f+(b<<1)>>1]=b;a=a+8|0;if((h|0)!=(a|0)){continue}break}}cj(n);Ta:{if(j){h=0;while(1){a=J[c+20>>2];if(J[c+24>>2]-a>>6>>>0<=h>>>0){break o}a=a+(h<<6)|0;J[a+56>>2]=0;J[a+60>>2]=0;J[a>>2]=0;J[a+4>>2]=0;J[a+48>>2]=0;J[a+52>>2]=0;J[a+40>>2]=0;J[a+44>>2]=0;J[a+32>>2]=0;J[a+36>>2]=0;J[a+24>>2]=0;J[a+28>>2]=0;J[a+16>>2]=0;J[a+20>>2]=0;J[a+8>>2]=0;J[a+12>>2]=0;J[a+56>>2]=-1;J[a+4>>2]=sj(P(J[c+33920>>2],20)+4|0);J[a+40>>2]=1065353216;J[a+44>>2]=0;h=h+1|0;if((j|0)!=(h|0)){continue}break}}if(H[c+60|0]&1){break h}lj(d,40,c+48|0,c+56|0,c+52|0);a=J[c+48>>2];if((J[c+56>>2]-a|0)/40>>>0>>0){break n}J[c+52>>2]=a+P(d,40);b=L[c+68>>1];j=d&65535;if(b>>>0>j>>>0){break m}h=J[c+64>>2];a=sj(j<<1);J[c+64>>2]=a;f=hj(a,h,b<<1);I[c+68>>1]=d;Ua:{if(b>>>0>=j>>>0){break Ua}n=d-b&7;Va:{if(!n){a=b;break Va}k=0;a=b;while(1){I[f+(a<<1)>>1]=a;a=a+1|0;k=k+1|0;if((n|0)!=(k|0)){continue}break}}if(b-j>>>0>4294967288){break Ua}while(1){I[f+(a<<1)>>1]=a;b=a+1|0;I[f+(b<<1)>>1]=b;b=a+2|0;I[f+(b<<1)>>1]=b;b=a+3|0;I[f+(b<<1)>>1]=b;b=a+4|0;I[f+(b<<1)>>1]=b;b=a+5|0;I[f+(b<<1)>>1]=b;b=a+6|0;I[f+(b<<1)>>1]=b;b=a+7|0;I[f+(b<<1)>>1]=b;a=a+8|0;if((j|0)!=(a|0)){continue}break}}cj(h);if(d){b=J[c+48>>2];f=(J[c+52>>2]-b|0)/40|0;a=0;while(1){if((a|0)==(f|0)){break o}I[(b+P(a,40)|0)+24>>1]=65535;a=a+1|0;if((d|0)!=(a|0)){continue}break}}a=J[c+33920>>2]<<2;J[c+33932>>2]=sj(a);J[c+33936>>2]=sj(a);J[c+33940>>2]=sj(a);J[c+33944>>2]=sj(a);J[c+33948>>2]=sj(a);a=sj(a);I[c+33956>>1]=0;J[c+33952>>2]=a;Tx(c+76|0,65,32);a=ij(c+112|0,0,33792)+P(sB(33461),1056)|0;N[a+16>>2]=p;N[a+12>>2]=p;J[a+8>>2]=0;J[c+33904>>2]=1;J[c+33908>>2]=0;J[c+33912>>2]=-14;J[c+12>>2]=0;J[c+16>>2]=0;if(K[g+516|0]){J[c+16>>2]=Co();e=Ui-48|0;Ui=e;a=I[108174];Wa:{if(!a){J[245744]=28;b=-1;break Wa}Xa:{Ya:{if((a|0)>-2){break Ya}b=200809;Za:{switch((a&255)-1|0){case 1:b=131072;break Wa;case 2:b=32768;break Wa;case 3:b=65536;break Wa;case 4:case 10:b=2147483647;break Wa;case 5:case 6:b=1;break Wa;case 7:case 8:b=gi()>>>16|0;break Wa;case 0:break Xa;case 9:break Za;default:break Ya}}b=0;break Wa}b=a}}a=Ui-48|0;Ui=a;g=a+4|0;ij(g,0,44);g=hj(e+4|0,g,44);J[g>>2]=J[72058];J[g+4>>2]=J[72059];Ui=a+48|0;_a:{a=(b|0)==-1?4096:b;a=P((524288/(a>>>0)|0)+1|0,a);if(a-1073743872>>>0>=3221225472){J[e+4>>2]=a;J[e+12>>2]=0;a=0}else{a=28}if(!a){a=nj(12);J[a>>2]=2500;b=Gk(70934);J[a+8>>2]=c;J[a+4>>2]=b;break _a}Z(112887,37050,68,6786);B()}Z(112887,37050,78,6786);B()}Ui=l+32|0;break Ta}$a:{if(!i){J[g+96>>2]=J[g+484>>2];dj(2,95703,148995,g+96|0);break $a}dj(3,95703,121382,0)}b=ak(J[e+4>>2],J[54658],1024);ab:{a=J[e+156>>2];if(a){if(b-32766>>>0>=4294934531){J[a+29100>>2]=b;a=0}else{a=-7}break ab}Z(111247,38296,252,2168);B()}if(a){J[g+84>>2]=b;J[g+88>>2]=a;J[g+80>>2]=J[54658];dj(5,95703,139963,g+80|0);j=0;break aa}a=J[e+156>>2];b=ak(J[e+4>>2],J[54659],16);if(!a){Z(111247,38296,267,2226);B()}J[a+29104>>2]=b;J[g+608>>2]=0;J[g+612>>2]=0;J[g+652>>2]=1024;J[g+656>>2]=0;J[g+640>>2]=0;J[g+644>>2]=0;J[g+632>>2]=0;J[g+636>>2]=0;J[g+624>>2]=0;J[g+628>>2]=0;J[g+616>>2]=0;J[g+620>>2]=0;J[g+624>>2]=16;a=ak(J[e+4>>2],20684,1024);J[g+632>>2]=32;J[g+628>>2]=a;a=ak(J[e+4>>2],19149,8192);J[g+652>>2]=1024;J[g+644>>2]=a;a=J[e+292>>2];J[g+656>>2]=0;J[g+608>>2]=a;J[g+648>>2]=ak(J[e+4>>2],23834,128);f=J[e+224>>2];b=nj(2512);rr(b);rr(b+352|0);rr(b+704|0);rr(b+1056|0);a=b+1992|0;J[a>>2]=0;J[a+4>>2]=0;a=b+1984|0;J[a>>2]=0;J[a+4>>2]=0;a=b+1976|0;J[a>>2]=0;J[a+4>>2]=0;J[b+1968>>2]=0;J[b+1972>>2]=0;J[b+2032>>2]=0;J[b+2036>>2]=0;a=b+2040|0;J[a>>2]=0;J[a+4>>2]=0;a=b+2048|0;J[a>>2]=0;J[a+4>>2]=0;a=b+2056|0;J[a>>2]=0;J[a+4>>2]=0;a=b+2080|0;J[a>>2]=0;J[a+4>>2]=0;d=b+2096|0;c=d;J[c>>2]=0;J[c+4>>2]=0;J[b+2088>>2]=0;J[b+2092>>2]=0;J[b+2232>>2]=0;J[b+2236>>2]=0;c=b+2240|0;J[c>>2]=0;J[c+4>>2]=0;c=b+2248|0;J[c>>2]=0;J[c+4>>2]=0;c=b+2256|0;J[c>>2]=0;J[c+4>>2]=0;ij(b+2112|0,0,112);J[b+2264>>2]=0;J[b+2268>>2]=0;J[b+2252>>2]=-1;c=b+2270|0;I[c>>1]=0;I[c+2>>1]=0;I[c+4>>1]=0;I[c+6>>1]=0;lj(J[g+628>>2],4,b+2088|0,d,b+2092|0);J[b+2480>>2]=f;J[b+2092>>2]=J[b+2088>>2];J[b+2284>>2]=J[g+612>>2];c=b+2364|0;J[c>>2]=0;J[c+4>>2]=0;J[b+2356>>2]=0;J[b+2360>>2]=0;J[b+2372>>2]=1065353216;J[b+2348>>2]=1065353216;J[b+2352>>2]=1065353216;J[b+2376>>2]=0;J[b+2380>>2]=0;c=b+2384|0;J[c>>2]=0;J[c+4>>2]=0;c=b+2340|0;J[c>>2]=0;J[c+4>>2]=0;J[b+2332>>2]=0;J[b+2336>>2]=0;J[b+2328>>2]=1065353216;c=b+2320|0;J[c>>2]=0;J[c+4>>2]=0;J[b+2312>>2]=0;J[b+2316>>2]=0;J[b+2392>>2]=1065353216;J[b+2308>>2]=1065353216;c=b+2300|0;J[c>>2]=0;J[c+4>>2]=0;J[b+2280>>2]=0;J[b+2292>>2]=0;J[b+2296>>2]=0;J[b+2288>>2]=1065353216;J[b+2484>>2]=0;c=b+2404|0;J[c>>2]=0;J[c+4>>2]=0;J[b+2396>>2]=0;J[b+2400>>2]=0;J[b+2412>>2]=1065353216;J[b+2416>>2]=1065353216;J[b+2420>>2]=0;J[b+2424>>2]=0;c=b+2428|0;J[c>>2]=0;J[c+4>>2]=0;J[b+2436>>2]=1065353216;J[b+2440>>2]=0;J[b+2444>>2]=0;c=b+2448|0;J[c>>2]=0;J[c+4>>2]=0;J[b+2456>>2]=1065353216;J[b+2460>>2]=0;J[b+2464>>2]=0;c=b+2468|0;J[c>>2]=0;J[c+4>>2]=0;J[b+2476>>2]=1065353216;d=J[g+608>>2];J[b+2076>>2]=d;J[a+4>>2]=J[g+652>>2];c=a;a=d?J[d+124>>2]:0;J[c>>2]=a;c=J[a+8>>2]-J[a+12>>2]>>4;vm(a,10533,172940,248112);J[84364]=vm(a,70318,172948,248144);J[84365]=vm(a,35081,172956,248224);J[84366]=vm(a,62257,172964,248272);vm(a,4010,172956,248304);uk(a,35504,248336);d=J[a+8>>2];J[d+8>>2]=3;O[d>>3]=0;J[a+8>>2]=J[a+8>>2]+16;ej(a,-2,86582);d=J[a+8>>2];J[d+8>>2]=3;O[d>>3]=2;J[a+8>>2]=J[a+8>>2]+16;ej(a,-2,86563);d=J[a+8>>2];J[d+8>>2]=3;O[d>>3]=3;J[a+8>>2]=J[a+8>>2]+16;ej(a,-2,86599);d=J[a+8>>2];J[d+8>>2]=3;O[d>>3]=4;J[a+8>>2]=J[a+8>>2]+16;ej(a,-2,96949);d=J[a+8>>2];J[d+8>>2]=3;O[d>>3]=5;J[a+8>>2]=J[a+8>>2]+16;ej(a,-2,96690);d=J[a+8>>2];J[d+8>>2]=3;O[d>>3]=6;J[a+8>>2]=J[a+8>>2]+16;ej(a,-2,92319);d=J[a+8>>2];J[d+8>>2]=3;O[d>>3]=0;J[a+8>>2]=J[a+8>>2]+16;ej(a,-2,96626);d=J[a+8>>2];J[d+8>>2]=3;O[d>>3]=3;J[a+8>>2]=J[a+8>>2]+16;ej(a,-2,101384);d=J[a+8>>2];J[d+8>>2]=3;O[d>>3]=6;J[a+8>>2]=J[a+8>>2]+16;ej(a,-2,93443);d=J[a+8>>2];J[d+8>>2]=3;O[d>>3]=7;J[a+8>>2]=J[a+8>>2]+16;ej(a,-2,92488);if(Zi[J[79453]](f,2)|0){d=J[a+8>>2];J[d+8>>2]=3;O[d>>3]=2;J[a+8>>2]=J[a+8>>2]+16;ej(a,-2,99362)}if(Zi[J[79453]](f,22)|0){d=J[a+8>>2];J[d+8>>2]=3;O[d>>3]=22;J[a+8>>2]=J[a+8>>2]+16;ej(a,-2,94619)}if(Zi[J[79453]](f,23)|0){d=J[a+8>>2];J[d+8>>2]=3;O[d>>3]=23;J[a+8>>2]=J[a+8>>2]+16;ej(a,-2,94705)}if(Zi[J[79453]](f,24)|0){d=J[a+8>>2];J[d+8>>2]=3;O[d>>3]=24;J[a+8>>2]=J[a+8>>2]+16;ej(a,-2,94641)}if(Zi[J[79453]](f,25)|0){d=J[a+8>>2];J[d+8>>2]=3;O[d>>3]=25;J[a+8>>2]=J[a+8>>2]+16;ej(a,-2,94727)}if(Zi[J[79453]](f,26)|0){d=J[a+8>>2];J[d+8>>2]=3;O[d>>3]=26;J[a+8>>2]=J[a+8>>2]+16;ej(a,-2,94578)}if(Zi[J[79453]](f,27)|0){d=J[a+8>>2];J[d+8>>2]=3;O[d>>3]=27;J[a+8>>2]=J[a+8>>2]+16;ej(a,-2,94598)}if(Zi[J[79453]](f,28)|0){d=J[a+8>>2];J[d+8>>2]=3;O[d>>3]=28;J[a+8>>2]=J[a+8>>2]+16;ej(a,-2,94664)}if(Zi[J[79453]](f,29)|0){d=J[a+8>>2];J[d+8>>2]=3;O[d>>3]=29;J[a+8>>2]=J[a+8>>2]+16;ej(a,-2,94684)}d=J[a+8>>2];J[d+8>>2]=3;O[d>>3]=2;J[a+8>>2]=J[a+8>>2]+16;ej(a,-2,90612);d=J[a+8>>2];J[d+8>>2]=3;O[d>>3]=1;J[a+8>>2]=J[a+8>>2]+16;ej(a,-2,86624);d=J[a+8>>2];J[d+8>>2]=3;O[d>>3]=0;J[a+8>>2]=J[a+8>>2]+16;ej(a,-2,90402);d=J[a+8>>2];J[d+8>>2]=3;O[d>>3]=1;J[a+8>>2]=J[a+8>>2]+16;ej(a,-2,96286);d=J[a+8>>2];J[d+8>>2]=3;O[d>>3]=2;J[a+8>>2]=J[a+8>>2]+16;ej(a,-2,88423);d=J[a+8>>2];J[d+8>>2]=3;O[d>>3]=3;J[a+8>>2]=J[a+8>>2]+16;ej(a,-2,88403);d=J[a+8>>2];J[d+8>>2]=3;O[d>>3]=0;J[a+8>>2]=J[a+8>>2]+16;ej(a,-2,90979);d=J[a+8>>2];J[d+8>>2]=3;O[d>>3]=1;J[a+8>>2]=J[a+8>>2]+16;ej(a,-2,95524);d=J[a+8>>2];J[d+8>>2]=3;O[d>>3]=2;J[a+8>>2]=J[a+8>>2]+16;ej(a,-2,90157);d=J[a+8>>2];J[d+8>>2]=3;O[d>>3]=3;J[a+8>>2]=J[a+8>>2]+16;ej(a,-2,90108);d=J[a+8>>2];J[d+8>>2]=3;O[d>>3]=4;J[a+8>>2]=J[a+8>>2]+16;ej(a,-2,89905);d=J[a+8>>2];J[d+8>>2]=3;O[d>>3]=5;J[a+8>>2]=J[a+8>>2]+16;ej(a,-2,89856);d=J[a+8>>2];J[d+8>>2]=3;O[d>>3]=6;J[a+8>>2]=J[a+8>>2]+16;ej(a,-2,101252);d=J[a+8>>2];J[d+8>>2]=3;O[d>>3]=7;J[a+8>>2]=J[a+8>>2]+16;ej(a,-2,101203);d=J[a+8>>2];J[d+8>>2]=3;O[d>>3]=8;J[a+8>>2]=J[a+8>>2]+16;ej(a,-2,100956);d=J[a+8>>2];J[d+8>>2]=3;O[d>>3]=9;J[a+8>>2]=J[a+8>>2]+16;ej(a,-2,100907);d=J[a+8>>2];J[d+8>>2]=3;O[d>>3]=10;J[a+8>>2]=J[a+8>>2]+16;ej(a,-2,95016);d=J[a+8>>2];J[d+8>>2]=3;O[d>>3]=11;J[a+8>>2]=J[a+8>>2]+16;ej(a,-2,90018);d=J[a+8>>2];J[d+8>>2]=3;O[d>>3]=12;J[a+8>>2]=J[a+8>>2]+16;ej(a,-2,89959);d=J[a+8>>2];J[d+8>>2]=3;O[d>>3]=13;J[a+8>>2]=J[a+8>>2]+16;ej(a,-2,101069);d=J[a+8>>2];J[d+8>>2]=3;O[d>>3]=14;J[a+8>>2]=J[a+8>>2]+16;ej(a,-2,101010);d=J[a+8>>2];J[d+8>>2]=3;O[d>>3]=0;J[a+8>>2]=J[a+8>>2]+16;ej(a,-2,90212);d=J[a+8>>2];J[d+8>>2]=3;O[d>>3]=1;J[a+8>>2]=J[a+8>>2]+16;ej(a,-2,88827);d=J[a+8>>2];J[d+8>>2]=3;O[d>>3]=2;J[a+8>>2]=J[a+8>>2]+16;ej(a,-2,92711);d=J[a+8>>2];J[d+8>>2]=3;O[d>>3]=3;J[a+8>>2]=J[a+8>>2]+16;ej(a,-2,90244);d=J[a+8>>2];J[d+8>>2]=3;O[d>>3]=4;J[a+8>>2]=J[a+8>>2]+16;ej(a,-2,92731);d=J[a+8>>2];J[d+8>>2]=3;O[d>>3]=5;J[a+8>>2]=J[a+8>>2]+16;ej(a,-2,92670);d=J[a+8>>2];J[d+8>>2]=3;O[d>>3]=6;J[a+8>>2]=J[a+8>>2]+16;ej(a,-2,92689);d=J[a+8>>2];J[d+8>>2]=3;O[d>>3]=7;J[a+8>>2]=J[a+8>>2]+16;ej(a,-2,88466);d=J[a+8>>2];J[d+8>>2]=3;O[d>>3]=0;J[a+8>>2]=J[a+8>>2]+16;ej(a,-2,90828);d=J[a+8>>2];J[d+8>>2]=3;O[d>>3]=1;J[a+8>>2]=J[a+8>>2]+16;ej(a,-2,90963);d=J[a+8>>2];J[d+8>>2]=3;O[d>>3]=2;J[a+8>>2]=J[a+8>>2]+16;ej(a,-2,96671);d=J[a+8>>2];J[d+8>>2]=3;O[d>>3]=3;J[a+8>>2]=J[a+8>>2]+16;ej(a,-2,90545);d=J[a+8>>2];J[d+8>>2]=3;O[d>>3]=4;J[a+8>>2]=J[a+8>>2]+16;ej(a,-2,90866);d=J[a+8>>2];J[d+8>>2]=3;O[d>>3]=5;J[a+8>>2]=J[a+8>>2]+16;ej(a,-2,90561);d=J[a+8>>2];J[d+8>>2]=3;O[d>>3]=6;J[a+8>>2]=J[a+8>>2]+16;ej(a,-2,90887);d=J[a+8>>2];J[d+8>>2]=3;O[d>>3]=7;J[a+8>>2]=J[a+8>>2]+16;ej(a,-2,86773);d=J[a+8>>2];J[d+8>>2]=3;O[d>>3]=0;J[a+8>>2]=J[a+8>>2]+16;ej(a,-2,87235);d=J[a+8>>2];J[d+8>>2]=3;O[d>>3]=1;J[a+8>>2]=J[a+8>>2]+16;ej(a,-2,93200);d=J[a+8>>2];J[d+8>>2]=3;O[d>>3]=2;J[a+8>>2]=J[a+8>>2]+16;ej(a,-2,93235);d=J[a+8>>2];J[d+8>>2]=3;O[d>>3]=1;J[a+8>>2]=J[a+8>>2]+16;ej(a,-2,87782);d=J[a+8>>2];J[d+8>>2]=3;O[d>>3]=1;J[a+8>>2]=J[a+8>>2]+16;ej(a,-2,88016);if(kp(f,0)){f=J[a+8>>2];J[f+8>>2]=3;O[f>>3]=2;J[a+8>>2]=J[a+8>>2]+16;ej(a,-2,87975);f=J[a+8>>2];J[f+8>>2]=3;O[f>>3]=4;J[a+8>>2]=J[a+8>>2]+16;ej(a,-2,87934);f=J[a+8>>2];J[f+8>>2]=3;O[f>>3]=8;J[a+8>>2]=J[a+8>>2]+16;ej(a,-2,87893)}f=J[a+8>>2];J[f+8>>2]=3;O[f>>3]=16;J[a+8>>2]=J[a+8>>2]+16;ej(a,-2,87842);f=J[a+8>>2];J[f+8>>2]=3;O[f>>3]=32;J[a+8>>2]=J[a+8>>2]+16;ej(a,-2,87799);f=J[a+8>>2];J[f+8>>2]=3;O[f>>3]=4;J[a+8>>2]=J[a+8>>2]+16;ej(a,-2,89182);f=J[a+8>>2];J[f+8>>2]=3;O[f>>3]=6;J[a+8>>2]=J[a+8>>2]+16;ej(a,-2,92345);f=J[a+8>>2];J[f+8>>2]=3;O[f>>3]=1;J[a+8>>2]=J[a+8>>2]+16;ej(a,-2,87881);f=J[a+8>>2];J[f+8>>2]=3;O[f>>3]=0;J[a+8>>2]=J[a+8>>2]+16;ej(a,-2,86464);f=J[a+8>>2];J[f+8>>2]=3;O[f>>3]=1;J[a+8>>2]=J[a+8>>2]+16;ej(a,-2,97465);gj(a,-2);if(J[a+8>>2]-J[a+12>>2]>>4!=(c|0)){Z(143244,37616,3176,9205);B()}c=Ui-32|0;Ui=c;f=c+12|0;a=J[g+608>>2];if(a){a=J[a+124>>2]}else{a=0}f=pj(f,a,0,42776,282);uk(a,83957,248672);gj(a,-2);if(J[84392]){Z(111001,42776,288,9266);B()}J[84392]=b;oj(f);Ui=c+32|0;a=CB(J[b+2076>>2]);J[b+2108>>2]=0;J[b+2104>>2]=a;J[b+1936>>2]=0;i=J[g+616>>2];bb:{if(!i){break bb}f=J[g+636>>2];if(!f){break bb}h=J[g+620>>2];if(!h){break bb}d=J[g+640>>2];if(!d){break bb}a=Ui-416|0;Ui=a;j=J[g+656>>2];J[b+1948>>2]=j;J[b+1936>>2]=b;J[b+1940>>2]=Zi[J[79391]](J[b+2480>>2],j<<7,0,0);c=Fq();xm(c,45222,4,0);xm(c,32861,4,0);J[b+1944>>2]=Zi[J[79404]](J[b+2480>>2],c);ll(c);k=-1;cb:{if(!f){f=-1;break cb}c=dk(i,f,243144,a+412|0,0);if(c){J[a+16>>2]=c;dj(3,90423,140783,a+16|0);f=-1;break cb}f=fP(J[b+2480>>2],J[a+412>>2],0,0);Uj(J[a+412>>2]);if(!d|(f|0)==-1){break cb}c=dk(h,d,243144,a+412|0,0);if(c){J[a>>2]=c;dj(3,90423,140833,a);break cb}k=gP(J[b+2480>>2],J[a+412>>2],0,0);Uj(J[a+412>>2])}d=j<<5;c=gC(b,f,k);Dx(c,bj(52059),Yi,1);J[a+400>>2]=bj(76515);J[a+404>>2]=Yi;eC(c,1,a+400|0);f=gC(b,f,k);Dx(f,bj(52059),Yi,1);J[a+392>>2]=bj(76566);J[a+396>>2]=Yi;eC(f,1,a+392|0);J[a+380>>2]=f;J[a+376>>2]=f;J[a+372>>2]=c;J[a+368>>2]=c;j=a+176|0;f=0;while(1){c=f<<2;i=J[c+172768>>2];h=rr(a+32|0);J[a+272>>2]=i;J[a+204>>2]=J[c+(a+368|0)>>2];J[a+176>>2]=J[b+1940>>2];J[a+188>>2]=J[b+1944>>2];J[a+344>>2]=0;c=b+P(f,352)|0;J[c>>2]=J[h>>2];N[c+16>>2]=N[a+48>>2];N[c+20>>2]=N[a+52>>2];N[c+24>>2]=N[a+56>>2];N[c+28>>2]=N[a+60>>2];N[c+32>>2]=N[a+64>>2];N[c+36>>2]=N[a+68>>2];N[c+40>>2]=N[a+72>>2];N[c+44>>2]=N[a+76>>2];N[c+48>>2]=N[a+80>>2];N[c+52>>2]=N[a+84>>2];N[c+56>>2]=N[a+88>>2];N[c+60>>2]=N[a+92>>2];N[c+64>>2]=N[a+96>>2];N[c+68>>2]=N[a+100>>2];N[c+72>>2]=N[a+104>>2];N[c+76>>2]=N[a+108>>2];N[c+80>>2]=N[a+112>>2];N[c+84>>2]=N[a+116>>2];N[c+88>>2]=N[a+120>>2];N[c+92>>2]=N[a+124>>2];N[c+96>>2]=N[a+128>>2];N[c+100>>2]=N[a+132>>2];N[c+104>>2]=N[a+136>>2];N[c+108>>2]=N[a+140>>2];N[c+112>>2]=N[a+144>>2];N[c+116>>2]=N[a+148>>2];N[c+120>>2]=N[a+152>>2];N[c+124>>2]=N[a+156>>2];N[c+128>>2]=N[a+160>>2];N[c+132>>2]=N[a+164>>2];N[c+136>>2]=N[a+168>>2];N[c+140>>2]=N[a+172>>2];hj(c+144|0,j,177);J[c+336>>2]=nj(d);f=f+1|0;if((f|0)!=4){continue}break}c=bj(76515);J[b+1664>>2]=1;J[b+1408>>2]=c;J[b+1412>>2]=Yi;c=bj(76566);J[b+1952>>2]=0;J[b+1928>>2]=1;J[b+1672>>2]=c;J[b+1676>>2]=Yi;Ui=a+416|0}f=J[g+644>>2];d=J[g+648>>2];a=Ui-352|0;Ui=a;J[b+2012>>2]=nj(4);J[b+2024>>2]=P(f,6);J[b+2072>>2]=-1;J[b+2028>>2]=0;J[b+2020>>2]=0;J[b+2004>>2]=0;J[b+2064>>2]=0;J[b+2068>>2]=0;j=P(J[b+2024>>2],112);c=fo(b+2004|0,16,j);db:{if(c){J[a+4>>2]=c;J[a>>2]=j;dj(4,90423,132155,a);break db}i=J[b+2480>>2];c=Fq();xm(c,45222,4,0);xm(c,111479,2,0);xm(c,32839,4,1);xm(c,32825,4,1);xm(c,32780,4,1);xm(c,20435,4,0);xm(c,50656,3,0);i=Zi[J[79405]](i,c,112)|0;ll(c);J[b+2008>>2]=i;J[b+2e3>>2]=Zi[J[79391]](J[b+2480>>2],j,0,0);if(H[b+1996|0]&1){break h}i=b+1992|0;j=b+1988|0;lj(d,4,b+1984|0,i,j);if(H[b+1980|0]&1){break h}h=b+1968|0;k=b+1976|0;l=b+1972|0;lj(d,336,h,k,l);J[b+2016>>2]=0;if(H[b+2044|0]&1){break h}lj(f,1,b+2032|0,b+2040|0,b+2036|0);if(H[b+2060|0]&1){break h}lj(f>>>3|0,288,b+2048|0,b+2056|0,b+2052|0);if(J[b+1976>>2]==J[b+1968>>2]){break db}f=a+160|0;d=0;while(1){n=rr(a+16|0);J[a+264>>2]=6;J[a+268>>2]=7;H[a+336|0]=K[a+336|0]|1;J[a+160>>2]=J[b+2e3>>2];c=J[b+2008>>2];J[a+256>>2]=1;J[a+172>>2]=c;c=J[b+1972>>2];if((c|0)==J[b+1976>>2]){break p}J[l>>2]=c+336;J[c>>2]=J[n>>2];N[c+16>>2]=N[a+32>>2];N[c+20>>2]=N[a+36>>2];N[c+24>>2]=N[a+40>>2];N[c+28>>2]=N[a+44>>2];N[c+32>>2]=N[a+48>>2];N[c+36>>2]=N[a+52>>2];N[c+40>>2]=N[a+56>>2];N[c+44>>2]=N[a+60>>2];N[c+48>>2]=N[a+64>>2];N[c+52>>2]=N[a+68>>2];N[c+56>>2]=N[a+72>>2];N[c+60>>2]=N[a+76>>2];N[c+64>>2]=N[a+80>>2];N[c+68>>2]=N[a+84>>2];N[c+72>>2]=N[a+88>>2];N[c+76>>2]=N[a+92>>2];N[c+80>>2]=N[a+96>>2];N[c+84>>2]=N[a+100>>2];N[c+88>>2]=N[a+104>>2];N[c+92>>2]=N[a+108>>2];N[c+96>>2]=N[a+112>>2];N[c+100>>2]=N[a+116>>2];N[c+104>>2]=N[a+120>>2];N[c+108>>2]=N[a+124>>2];N[c+112>>2]=N[a+128>>2];N[c+116>>2]=N[a+132>>2];N[c+120>>2]=N[a+136>>2];N[c+124>>2]=N[a+140>>2];N[c+128>>2]=N[a+144>>2];N[c+132>>2]=N[a+148>>2];N[c+136>>2]=N[a+152>>2];N[c+140>>2]=N[a+156>>2];hj(c+144|0,f,177);n=Fx();c=J[j>>2];if((c|0)==J[i>>2]){break p}J[j>>2]=c+4;J[c>>2]=n;d=d+1|0;if(d>>>0<(J[k>>2]-J[h>>2]|0)/336>>>0){continue}break}}Ui=a+352|0;H[b+2504|0]=K[b+2504|0]&232;a=J[79488];if(a){a=J[a+16>>2]}else{a=-1}if(a-3>>>0<=2){H[b+2504|0]=K[b+2504|0]|4}eb:{fb:{if(!(H[b+2140|0]&1)){lj(255,12,b+2128|0,b+2136|0,b+2132|0);rb(b|0,1624);if(Cq(J[62018],b+2496|0)){break fb}break eb}break h}Z(92912,40146,153,9235);B()}J[e+228>>2]=b;a=J[e+288>>2];J[74196]=J[e+156>>2];a=a?J[a+124>>2]:0;b=J[a+8>>2]-J[a+12>>2]|0;J[74198]=vm(a,10655,158976,218688);J[74197]=vm(a,70378,158984,218720);uk(a,44098,218800);c=J[a+8>>2];J[c+8>>2]=3;O[c>>3]=0;J[a+8>>2]=J[a+8>>2]+16;ej(a,-2,95566);c=J[a+8>>2];J[c+8>>2]=3;O[c>>3]=1;J[a+8>>2]=J[a+8>>2]+16;ej(a,-2,96757);c=J[a+8>>2];J[c+8>>2]=3;O[c>>3]=2;J[a+8>>2]=J[a+8>>2]+16;ej(a,-2,96802);c=J[a+8>>2];J[c+8>>2]=3;O[c>>3]=3;J[a+8>>2]=J[a+8>>2]+16;ej(a,-2,93944);c=J[a+8>>2];J[c+8>>2]=3;O[c>>3]=4;J[a+8>>2]=J[a+8>>2]+16;ej(a,-2,96735);c=J[a+8>>2];J[c+8>>2]=3;O[c>>3]=5;J[a+8>>2]=J[a+8>>2]+16;ej(a,-2,96779);c=J[a+8>>2];J[c+8>>2]=3;O[c>>3]=6;J[a+8>>2]=J[a+8>>2]+16;ej(a,-2,93921);c=J[a+8>>2];J[c+8>>2]=3;O[c>>3]=0;J[a+8>>2]=J[a+8>>2]+16;ej(a,-2,90699);c=J[a+8>>2];J[c+8>>2]=3;O[c>>3]=1;J[a+8>>2]=J[a+8>>2]+16;ej(a,-2,98128);c=J[a+8>>2];J[c+8>>2]=3;O[c>>3]=2;J[a+8>>2]=J[a+8>>2]+16;ej(a,-2,98096);c=J[a+8>>2];J[c+8>>2]=3;O[c>>3]=3;J[a+8>>2]=J[a+8>>2]+16;ej(a,-2,98111);c=J[a+8>>2];J[c+8>>2]=3;O[c>>3]=4;J[a+8>>2]=J[a+8>>2]+16;ej(a,-2,98142);c=J[a+8>>2];J[c+8>>2]=3;O[c>>3]=5;J[a+8>>2]=J[a+8>>2]+16;ej(a,-2,99078);c=J[a+8>>2];J[c+8>>2]=3;O[c>>3]=6;J[a+8>>2]=J[a+8>>2]+16;ej(a,-2,99044);c=J[a+8>>2];J[c+8>>2]=3;O[c>>3]=7;J[a+8>>2]=J[a+8>>2]+16;ej(a,-2,99060);c=J[a+8>>2];J[c+8>>2]=3;O[c>>3]=8;J[a+8>>2]=J[a+8>>2]+16;ej(a,-2,99093);c=J[a+8>>2];J[c+8>>2]=3;O[c>>3]=9;J[a+8>>2]=J[a+8>>2]+16;ej(a,-2,86825);c=J[a+8>>2];J[c+8>>2]=3;O[c>>3]=10;J[a+8>>2]=J[a+8>>2]+16;ej(a,-2,86791);c=J[a+8>>2];J[c+8>>2]=3;O[c>>3]=11;J[a+8>>2]=J[a+8>>2]+16;ej(a,-2,86807);c=J[a+8>>2];J[c+8>>2]=3;O[c>>3]=12;J[a+8>>2]=J[a+8>>2]+16;ej(a,-2,86840);c=J[a+8>>2];J[c+8>>2]=3;O[c>>3]=13;J[a+8>>2]=J[a+8>>2]+16;ej(a,-2,87280);c=J[a+8>>2];J[c+8>>2]=3;O[c>>3]=14;J[a+8>>2]=J[a+8>>2]+16;ej(a,-2,87246);c=J[a+8>>2];J[c+8>>2]=3;O[c>>3]=15;J[a+8>>2]=J[a+8>>2]+16;ej(a,-2,87262);c=J[a+8>>2];J[c+8>>2]=3;O[c>>3]=16;J[a+8>>2]=J[a+8>>2]+16;ej(a,-2,87295);c=J[a+8>>2];J[c+8>>2]=3;O[c>>3]=17;J[a+8>>2]=J[a+8>>2]+16;ej(a,-2,95659);c=J[a+8>>2];J[c+8>>2]=3;O[c>>3]=18;J[a+8>>2]=J[a+8>>2]+16;ej(a,-2,95627);c=J[a+8>>2];J[c+8>>2]=3;O[c>>3]=19;J[a+8>>2]=J[a+8>>2]+16;ej(a,-2,95642);c=J[a+8>>2];J[c+8>>2]=3;O[c>>3]=20;J[a+8>>2]=J[a+8>>2]+16;ej(a,-2,95673);c=J[a+8>>2];J[c+8>>2]=3;O[c>>3]=21;J[a+8>>2]=J[a+8>>2]+16;ej(a,-2,91022);c=J[a+8>>2];J[c+8>>2]=3;O[c>>3]=22;J[a+8>>2]=J[a+8>>2]+16;ej(a,-2,90990);c=J[a+8>>2];J[c+8>>2]=3;O[c>>3]=23;J[a+8>>2]=J[a+8>>2]+16;ej(a,-2,91005);c=J[a+8>>2];J[c+8>>2]=3;O[c>>3]=24;J[a+8>>2]=J[a+8>>2]+16;ej(a,-2,91036);c=J[a+8>>2];J[c+8>>2]=3;O[c>>3]=25;J[a+8>>2]=J[a+8>>2]+16;ej(a,-2,98938);c=J[a+8>>2];J[c+8>>2]=3;O[c>>3]=26;J[a+8>>2]=J[a+8>>2]+16;ej(a,-2,98906);c=J[a+8>>2];J[c+8>>2]=3;O[c>>3]=27;J[a+8>>2]=J[a+8>>2]+16;ej(a,-2,98921);c=J[a+8>>2];J[c+8>>2]=3;O[c>>3]=28;J[a+8>>2]=J[a+8>>2]+16;ej(a,-2,98952);c=J[a+8>>2];J[c+8>>2]=3;O[c>>3]=29;J[a+8>>2]=J[a+8>>2]+16;ej(a,-2,99007);c=J[a+8>>2];J[c+8>>2]=3;O[c>>3]=30;J[a+8>>2]=J[a+8>>2]+16;ej(a,-2,98969);c=J[a+8>>2];J[c+8>>2]=3;O[c>>3]=31;J[a+8>>2]=J[a+8>>2]+16;ej(a,-2,98987);c=J[a+8>>2];J[c+8>>2]=3;O[c>>3]=32;J[a+8>>2]=J[a+8>>2]+16;ej(a,-2,99024);c=J[a+8>>2];J[c+8>>2]=3;O[c>>3]=33;J[a+8>>2]=J[a+8>>2]+16;ej(a,-2,93287);c=J[a+8>>2];J[c+8>>2]=3;O[c>>3]=34;J[a+8>>2]=J[a+8>>2]+16;ej(a,-2,93255);c=J[a+8>>2];J[c+8>>2]=3;O[c>>3]=35;J[a+8>>2]=J[a+8>>2]+16;ej(a,-2,93270);c=J[a+8>>2];J[c+8>>2]=3;O[c>>3]=36;J[a+8>>2]=J[a+8>>2]+16;ej(a,-2,93301);c=J[a+8>>2];J[c+8>>2]=3;O[c>>3]=37;J[a+8>>2]=J[a+8>>2]+16;ej(a,-2,96583);c=J[a+8>>2];J[c+8>>2]=3;O[c>>3]=38;J[a+8>>2]=J[a+8>>2]+16;ej(a,-2,96547);c=J[a+8>>2];J[c+8>>2]=3;O[c>>3]=39;J[a+8>>2]=J[a+8>>2]+16;ej(a,-2,96564);c=J[a+8>>2];J[c+8>>2]=3;O[c>>3]=40;J[a+8>>2]=J[a+8>>2]+16;ej(a,-2,96599);gj(a,-2);if(b>>4!=J[a+8>>2]-J[a+12>>2]>>4){Z(143244,37509,2269,10588);B()}J[e+256>>2]=J[e+300>>2];J[e+260>>2]=J[e+228>>2];J[e+264>>2]=ak(J[e+4>>2],J[65014],64);J[e+276>>2]=ak(J[e+4>>2],J[65015],64);J[e+272>>2]=ak(J[e+4>>2],J[65016],1024);a=ak(J[e+4>>2],J[65017],1024);H[e+280|0]=0;J[e+268>>2]=a;J[g+472>>2]=J[e+420>>2];N[g+476>>2]=fn(J[e+4>>2],4134,Q(.5));N[g+480>>2]=fn(J[e+4>>2],50008,Q(.20000000298023224));if(!K[864596]){J[216020]=312;J[216018]=310;J[216019]=311;J[216016]=308;J[216017]=309;J[216014]=306;J[216015]=307;J[216012]=304;J[216013]=305;J[216010]=302;J[216011]=303;J[216008]=300;J[216009]=301;J[216006]=298;J[216007]=299;J[216004]=296;J[216005]=297;J[216002]=294;J[216003]=295;J[216e3]=292;J[216001]=293;J[215998]=290;J[215999]=291;J[215996]=288;J[215997]=289;J[215994]=286;J[215995]=287;J[215992]=284;J[215993]=285;J[215990]=282;J[215991]=283;J[215988]=280;J[215989]=281;J[215986]=278;J[215987]=279;J[215984]=276;J[215985]=277;J[215982]=274;J[215983]=275;J[215980]=272;J[215981]=273;J[215978]=270;J[215979]=271;J[215976]=268;J[215977]=269;J[215974]=266;J[215975]=267;J[215972]=264;J[215973]=265;J[215970]=262;J[215971]=263;J[215968]=260;J[215969]=261;J[215966]=258;J[215967]=259;J[215964]=256;J[215965]=257;J[215962]=125;J[215963]=126;J[215960]=123;J[215961]=124;J[215958]=95;J[215959]=96;J[215956]=93;J[215957]=94;J[215954]=91;J[215955]=92;J[215952]=89;J[215953]=90;J[215950]=87;J[215951]=88;J[215948]=85;J[215949]=86;J[215946]=83;J[215947]=84;J[215944]=81;J[215945]=82;J[215942]=79;J[215943]=80;J[215940]=77;J[215941]=78;J[215938]=75;J[215939]=76;J[215936]=73;J[215937]=74;J[215934]=71;J[215935]=72;J[215932]=69;J[215933]=70;J[215930]=67;J[215931]=68;J[215928]=65;J[215929]=66;J[215926]=63;J[215927]=64;J[215924]=61;J[215925]=62;J[215922]=59;J[215923]=60;J[215920]=57;J[215921]=58;J[215918]=55;J[215919]=56;J[215916]=53;J[215917]=54;J[215914]=51;J[215915]=52;J[215912]=49;J[215913]=50;J[215910]=47;J[215911]=48;J[215908]=45;J[215909]=46;J[215906]=43;J[215907]=44;J[215904]=41;J[215905]=42;J[215902]=39;J[215903]=40;J[215900]=36;J[215901]=38;J[215898]=34;J[215899]=35;J[215896]=32;J[215897]=33;J[216036]=7;J[216034]=5;J[216035]=6;J[216032]=3;J[216033]=4;J[216030]=1;J[216031]=2;J[216028]=2;J[216029]=0;J[216026]=0;J[216027]=1;H[864596]=1}b=nj(92);ij(b+4|0,0,88);J[b+56>>2]=0;J[b+60>>2]=0;J[b+40>>2]=0;J[b+44>>2]=0;J[b+28>>2]=-1;J[b+48>>2]=0;J[b+52>>2]=0;a=b- -64|0;J[a>>2]=0;J[a+4>>2]=0;J[b+60>>2]=-1;a=sj(16);H[b+4|0]=16;J[b>>2]=a;H[a+8|0]=8;H[a+9|0]=9;H[a+10|0]=10;H[a+11|0]=11;H[a+12|0]=12;H[a+13|0]=13;H[a+14|0]=14;H[a+15|0]=15;H[a|0]=0;H[a+1|0]=1;H[a+2|0]=2;H[a+3|0]=3;H[a+4|0]=4;H[a+5|0]=5;H[a+6|0]=6;H[a+7|0]=7;KN(b+40|0,7,16);J[b+72>>2]=J[g+472>>2];N[b+80>>2]=N[g+476>>2];p=N[g+480>>2];J[b+88>>2]=1063675494;N[b+84>>2]=p;J[e+424>>2]=b;a=J[e+420>>2];J[a+3468>>2]=b;J[a+3464>>2]=6;J[J[e+420>>2]>>2]=Zi[J[79381]](J[e+224>>2]);d=Ui-32|0;Ui=d;gb:{hb:{b=J[e+420>>2];ib:{if(!b){break ib}a=J[b>>2];if(!a){dj(5,97141,128627,0);break ib}J[a+36>>2]=b;J[a+32>>2]=2127;a=J[b>>2];J[a+44>>2]=b;J[a+40>>2]=2128;a=J[b>>2];J[a+52>>2]=b;J[a+48>>2]=2129;if(J[b+3476>>2]){break hb}a=nj(16);J[a>>2]=0;J[a+4>>2]=0;J[a+8>>2]=0;J[a+12>>2]=0;J[b+3476>>2]=a;ij(b+4|0,0,2368);H[b+2368|0]=255;H[b+2220|0]=255;H[b+2072|0]=255;H[b+1924|0]=255;H[b+1776|0]=255;H[b+1628|0]=255;H[b+1480|0]=255;H[b+1332|0]=255;H[b+1184|0]=255;H[b+1036|0]=255;H[b+888|0]=255;H[b+740|0]=255;H[b+592|0]=255;H[b+444|0]=255;H[b+296|0]=255;H[b+148|0]=255;f=nj(40);a=f;J[a+24>>2]=0;J[a+28>>2]=0;J[a+16>>2]=2121;J[a+12>>2]=2122;J[a+8>>2]=2123;J[a+4>>2]=2124;J[a>>2]=2125;J[a+32>>2]=0;J[a+36>>2]=0;if(J[215872]){Z(112951,37287,396,85781);B()}J[215872]=f;J[f+20>>2]=b;c=J[b+3476>>2];jb:{if(!(Zi[J[f>>2]](b,f)|0)){J[d+16>>2]=85818;dj(4,97141,147072,d+16|0);break jb}j=c+4|0;h=J[c+4>>2];a=J[c+8>>2];if((h|0)==(a|0)){if(H[c+12|0]&1){break h}lj((h-J[c>>2]>>2)+1|0,4,c,c+8|0,j);h=J[c+4>>2];a=J[c+8>>2]}if((a|0)==(h|0)){break p}J[j>>2]=h+4;J[h>>2]=f;J[d>>2]=85818;dj(0,97141,147113,d);Zi[J[f+12>>2]](b,f)}}Ui=d+32|0;break gb}Z(113166,41200,185,14320);B()}if(y){Ss(3,1,0)}a=Cq(48819,e+312|0);if(a){J[g+68>>2]=a;J[g+64>>2]=48819;dj(5,95703,140181,g- -64|0);j=0;break aa}if((ak(J[e+4>>2],11695,-1)|0)!=-1){dj(3,95703,116928,0)}J[g+428>>2]=0;J[g+432>>2]=0;J[g+468>>2]=360;J[g+460>>2]=0;J[g+464>>2]=0;J[g+444>>2]=0;J[g+448>>2]=0;J[g+436>>2]=0;J[g+440>>2]=0;J[g+452>>2]=640;J[g+456>>2]=960;J[g+428>>2]=J[e+296>>2];a=J[e+420>>2];J[g+448>>2]=7;J[g+444>>2]=8;J[g+440>>2]=9;J[g+436>>2]=10;J[g+432>>2]=a;a=J[(Zi[J[79381]](J[e+224>>2])|0)+80>>2];J[g+456>>2]=J[(Zi[J[79381]](J[e+224>>2])|0)+84>>2];J[g+452>>2]=a;J[g+460>>2]=J[e+476>>2];a=J[e+480>>2];J[g+468>>2]=G;J[g+464>>2]=a;a=nj(196);b=ij(a+40|0,0,156);J[a>>2]=sO(J[g+428>>2]);J[a+4>>2]=J[g+436>>2];J[a+8>>2]=J[g+440>>2];J[a+12>>2]=J[g+444>>2];J[a+16>>2]=J[g+448>>2];J[a+28>>2]=J[g+460>>2];J[a+32>>2]=J[g+464>>2];J[a+20>>2]=J[g+452>>2];J[a+24>>2]=J[g+456>>2];J[a+36>>2]=J[g+468>>2];J[a+168>>2]=J[g+432>>2];lj(32,4,b,a+48|0,a+44|0);if(H[a+164|0]&1){break h}lj(32,4,a+152|0,a+160|0,a+156|0);J[e+304>>2]=a;a=g+2656|0;J[a+40>>2]=0;J[a+44>>2]=0;J[a+32>>2]=1065353216;J[a+36>>2]=0;J[a+24>>2]=0;J[a+28>>2]=0;J[a+16>>2]=4;J[a+20>>2]=1065353216;J[a+8>>2]=0;J[a>>2]=0;J[a+4>>2]=-1054867456;H[a+48|0]=K[a+48|0]&254;J[a+16>>2]=ak(J[e+4>>2],11718,4);b=nn(J[e+4>>2],64012,98802);N[a>>2]=fn(J[e+4>>2],5814,Q(0));N[a+4>>2]=fn(J[e+4>>2],4198,Q(-10));N[a+8>>2]=fn(J[e+4>>2],1128,Q(0));N[a+20>>2]=fn(J[e+4>>2],67977,Q(1));J[a+36>>2]=ak(J[e+4>>2],76579,64);J[a+40>>2]=ak(J[e+4>>2],76524,128);J[a+44>>2]=ak(J[e+4>>2],2007,16);N[a+32>>2]=fn(J[e+4>>2],71975,Q(1));p=Q(.009999999776482582);w=N[a+20>>2];kb:{if(!(wQ(1))){break kb}J[g+56>>2]=0;J[g+60>>2]=1072693248;J[g+48>>2]=1073741824;J[g+52>>2]=1065646817;dj(3,95703,129237,g+48|0);w=N[a+20>>2];if(!(wQ(1))){break kb}}N[a+20>>2]=p}N[a+24>>2]=fn(J[e+4>>2],14325,Q(0));c=ak(J[e+4>>2],20316,1);H[a+48|0]=K[a+48|0]&254|(c|0)!=0;lb:{if(!Cn(b,98516)){H[e+249|0]=1;c=Ui-32|0;Ui=c;mb:{p=N[a+20>>2];nb:{ob:{if(pQ(1)){J[c+8>>2]=0;J[c+12>>2]=1072693248;J[c>>2]=1073741824;J[c+4>>2]=1065646817;dj(5,89293,123381,c);break ob}b=nj(104);J[b>>2]=0;J[b+4>>2]=0;J[b+8>>2]=0;J[b+12>>2]=0;J[b+40>>2]=1065353216;J[b+28>>2]=1065353216;J[b+32>>2]=1065353216;J[b+24>>2]=0;J[b+16>>2]=0;J[b+20>>2]=0;J[b+80>>2]=0;J[b+84>>2]=0;J[b+72>>2]=1065353216;J[b+76>>2]=1065353216;J[b+64>>2]=0;J[b+68>>2]=0;J[b+52>>2]=0;J[b+56>>2]=0;J[b+44>>2]=0;J[b+48>>2]=-1054867456;J[b+88>>2]=0;J[b+92>>2]=0;H[b+96|0]=K[b+96|0]&254;w=N[a>>2];R=N[a+4>>2];T=N[a+8>>2];p=N[a+20>>2];J[b+56>>2]=0;N[b+52>>2]=p*T;N[b+48>>2]=p*R;N[b+44>>2]=p*w;if(H[b+12|0]&1){break h}lj(J[a+16>>2],4,b,b+8|0,b+4|0);p=N[a+20>>2];N[b+72>>2]=p;N[b+76>>2]=Q(1)/p;N[b+80>>2]=p*N[a+24>>2];N[b+84>>2]=p*N[a+28>>2];J[b+88>>2]=J[a+40>>2];J[b+92>>2]=J[a+44>>2];H[b+96|0]=K[b+96|0]&254|H[a+48|0]&1;if(!Cq(J[60922],b- -64|0)){break nb}J[c+16>>2]=J[60922];dj(5,89293,134008,c+16|0);gM(b)}b=0}Ui=c+32|0;break mb}J[e+232>>2]=b;break lb}if(!Cn(b,98802)){H[e+249|0]=0;J[e+232>>2]=XL(a);break lb}J[g+32>>2]=b;dj(3,95703,98759,g+32|0);H[e+249|0]=0;J[e+232>>2]=XL(a)}J[e+240>>2]=ak(J[e+4>>2],J[56053],128);J[e+236>>2]=ak(J[e+4>>2],J[56054],64);J[e+244>>2]=ak(J[e+4>>2],J[56055],128);j=0;H[e+250|0]=(ak(J[e+4>>2],J[56056],1)|0)!=0;J[e+252>>2]=ak(J[e+4>>2],J[56057],2);H[e+248|0]=(ak(J[e+4>>2],55906,0)|0)!=0;J[e+320>>2]=J[e+228>>2];J[e+324>>2]=ak(J[e+4>>2],11009,128);a=ak(J[e+4>>2],20789,1);J[e+364>>2]=J[e+228>>2];J[e+368>>2]=J[e+300>>2];H[e+328|0]=K[e+328|0]&254|a&1;J[e+372>>2]=ak(J[e+4>>2],10948,128);J[e+376>>2]=J[e+228>>2];J[e+380>>2]=ak(J[e+4>>2],10964,64);a=ak(J[e+4>>2],20773,1);J[e+388>>2]=J[e+228>>2];H[e+384|0]=K[e+384|0]&254|a&1;J[e+392>>2]=ak(J[e+4>>2],10930,16);J[e+396>>2]=ak(J[e+4>>2],11580,2048);J[e+332>>2]=J[e+300>>2];J[e+336>>2]=ak(J[e+4>>2],J[56052],8);J[e+348>>2]=ak(J[e+4>>2],J[56058],128);J[e+340>>2]=J[e+300>>2];J[e+360>>2]=ak(J[e+4>>2],J[56051],128);J[e+352>>2]=J[e+300>>2];a=J[e+(o?284:288)>>2];J[e+344>>2]=a;J[e+356>>2]=a;J[g+400>>2]=0;J[g+404>>2]=0;J[g+408>>2]=0;J[g+412>>2]=0;J[g+392>>2]=0;J[g+396>>2]=0;J[g+384>>2]=0;J[g+388>>2]=0;J[g+404>>2]=-1;UR(e,g+368|0);c=g+336|0;a=c;J[a>>2]=0;J[a+4>>2]=0;J[a+24>>2]=0;J[a+28>>2]=0;J[a+16>>2]=0;J[a+20>>2]=0;J[a+8>>2]=0;J[a+12>>2]=0;x=vo(88937);a=bj(81723);J[g+9136>>2]=J[e+156>>2];b=e+180|0;f=a;a=g+9136|0;pl(b,f,Yi,a);f=bj(82169);J[g+9136>>2]=J[e+156>>2];pl(b,f,Yi,a);f=bj(82508);J[g+9136>>2]=m;pl(b,f,Yi,a);f=bj(80659);J[g+9136>>2]=J[e+288>>2];pl(b,f,Yi,a);if(J[e+304>>2]){f=bj(80655);J[g+9136>>2]=J[e+296>>2];pl(b,f,Yi,a);f=bj(82235);J[g+9136>>2]=J[e+304>>2];pl(b,f,Yi,a)}i=J[e+300>>2];f=0;a=Ui-32|0;Ui=a;d=J[74548];pb:{if(!d){break pb}while(1){f=J[b+24>>2];if((f|0)==J[b+16>>2]-J[b+8>>2]>>4){f=f+8|0;Rp(b,f>>>1|0,f)}J[a+28>>2]=b;J[a+24>>2]=i;h=J[d>>2];f=Ui-16|0;Ui=f;k=J[i+6160>>2];qb:{if((k|0)==128){k=0;dj(4,96538,153586,0);break qb}if(ul(h,46)){J[f>>2]=h;dj(4,96538,148216,f);k=0;break qb}J[i+6160>>2]=k+1;h=i+P(k,48)|0;k=h+16|0;OV(k);H[h+56|0]=K[i+6160|0]-1}Ui=f+16|0;f=J[d>>2];J[k+8>>2]=f;J[k>>2]=bj(f);J[k+4>>2]=Yi;f=Zi[J[d+4>>2]](a+24|0,k)|0;if(f){d=J[d>>2];b=f+21|0;if(b>>>0>21){b=97515}else{b=J[(b<<2)+223356>>2]}J[a+20>>2]=b;J[a+16>>2]=d;dj(4,96538,31302,a+16|0);break pb}f=Ui-16|0;Ui=f;l=J[k+8>>2];h=148216;rb:{sb:{if(ul(l,46)){break sb}h=148158;if(!J[k+20>>2]){break sb}h=0;if(J[k+28>>2]){break rb}h=148158}J[f>>2]=l;dj(4,96538,h,f);h=-6}Ui=f+16|0;if(h){f=J[i+6160>>2];if(((i+P(f,48)|0)-32|0)!=(k|0)){Z(84943,42212,478,64672);B()}J[i+6160>>2]=f-1;h=148087}else{h=148284}J[a>>2]=J[d>>2];f=0;dj(0,96538,h,a);d=J[d+12>>2];if(d){continue}break}}Ui=a+32|0;tb:{if(f){break tb}k=J[e+424>>2];l=e+232|0;f=Ui-16|0;Ui=f;i=J[e+228>>2];b=J[i+2480>>2];h=80447;d=J[e+300>>2];a=hl(d,80447,0,0,329,0,328,327);ub:{vb:{if(a){break vb}h=80935;a=hl(d,80935,l,0,332,0,331,330);if(a){break vb}h=82458;a=hl(d,82458,l,0,335,0,334,333);if(a){break vb}h=80483;a=hl(d,80483,0,339,338,0,337,336);if(a){break vb}h=82442;a=hl(d,82442,b,344,343,342,341,340);if(a){break vb}h=81695;a=hl(d,81695,b,348,347,0,346,345);if(a){break vb}h=81699;a=hl(d,81699,b,352,351,0,350,349);if(a){break vb}h=80731;a=hl(d,80731,i,356,355,0,354,353);if(a){break vb}h=81654;a=hl(d,81654,b,360,359,0,358,357);if(a){break vb}h=82329;a=hl(d,82329,b,364,363,0,362,361);if(a){break vb}h=82198;a=hl(d,82198,b,368,367,0,366,365);if(a){break vb}h=82213;a=hl(d,82213,i,372,371,0,370,369);if(a){break vb}h=82374;a=hl(d,82374,i,376,375,0,374,373);if(a){break vb}h=81703;a=hl(d,81703,b,380,379,0,378,377);if(a){break vb}h=82223;a=hl(d,82223,0,384,383,0,382,381);if(a){break vb}h=82481;a=hl(d,82481,0,388,387,0,386,385);if(a){break vb}h=82513;a=hl(d,82513,0,0,391,0,390,389);if(a){break vb}h=82347;a=hl(d,82347,k,0,394,0,393,392);if(a){break vb}h=81633;a=hl(d,81633,0,0,397,0,396,395);if(a){break vb}h=80474;a=hl(d,80474,0,401,400,0,399,398);if(a){break vb}h=80464;a=hl(d,80464,0,405,404,0,403,402);if(a){break vb}h=82205;a=hl(d,82205,0,409,408,0,407,406);if(a){break vb}h=80737;a=hl(d,80737,0,0,412,0,411,410);if(a){break vb}h=80640;a=hl(d,80640,i,0,415,0,414,413);if(a){break vb}h=80845;a=hl(d,80845,i,419,418,0,417,416);if(a){break vb}h=81687;a=hl(d,81687,i,0,422,0,421,420);if(a){break vb}h=82383;a=hl(d,82383,0,426,425,0,424,423);if(a){break vb}h=80832;a=hl(d,80832,l,430,429,0,428,427);if(a){break vb}h=81707;a=hl(d,81707,l,434,433,0,432,431);if(a){break vb}h=80822;a=hl(d,80822,0,438,437,0,436,435);if(a){break vb}h=82147;a=hl(d,82147,0,442,441,0,440,439);if(a){break vb}b=0;h=82471;a=hl(d,82471,0,446,445,0,444,443);if(a){break vb}h=81039;a=hl(d,81039,i,0,449,0,448,447);if(!a){break ub}}b=a+21|0;if(b>>>0>21){b=97515}else{b=J[(b<<2)+223356>>2]}J[f+4>>2]=b;J[f>>2]=h;dj(5,88458,136501,f);b=a}Ui=f+16|0;if(b){break tb}h=J[e+300>>2];k=J[e+156>>2];m=J[e+228>>2];b=e+256|0;o=e+320|0;f=e+332|0;n=e+340|0;q=e+352|0;s=e+364|0;t=e+376|0;u=e+388|0;d=Ui-400|0;Ui=d;a=ij(d+280|0,0,112);i=am(h,80447,d+396|0);wb:{if(i){J[d+164>>2]=i;J[d+160>>2]=80447;dj(3,88458,141963,d+160|0);f=-1e3;break wb}a=hj(a,ij(d+168|0,0,112),106);J[a+4>>2]=80447;i=J[d+396>>2];J[a+60>>2]=450;J[a+48>>2]=0;J[a+44>>2]=451;J[a+40>>2]=452;J[a+36>>2]=0;J[a+32>>2]=453;J[a+28>>2]=454;J[a+24>>2]=455;J[a+20>>2]=456;J[a+16>>2]=f;J[a>>2]=i;J[a+96>>2]=0;J[a+92>>2]=457;J[a+84>>2]=0;J[a+88>>2]=0;J[a+76>>2]=0;J[a+72>>2]=458;J[a+68>>2]=459;J[a+64>>2]=460;J[a+56>>2]=0;J[a+52>>2]=461;I[a+104>>1]=100;J[a+100>>2]=J[a+100>>2]&-196609|65536;f=ko(k,a);if(f){break wb}f=am(h,80935,d+396|0);if(f){J[d+148>>2]=f;J[d+144>>2]=80935;dj(3,88458,141963,d+144|0);f=-1e3;break wb}a=hj(a,ij(d+168|0,0,112),106);J[a+4>>2]=80935;f=J[d+396>>2];J[a+60>>2]=0;J[a+48>>2]=462;J[a+44>>2]=463;J[a+40>>2]=464;J[a+36>>2]=0;J[a+32>>2]=465;J[a+28>>2]=466;J[a+24>>2]=467;J[a+20>>2]=468;J[a+16>>2]=l;J[a>>2]=f;J[a+96>>2]=469;J[a+92>>2]=0;J[a+88>>2]=470;J[a+84>>2]=471;J[a+76>>2]=472;J[a+72>>2]=0;J[a+68>>2]=473;J[a+64>>2]=474;J[a+56>>2]=475;J[a+52>>2]=476;I[a+104>>1]=400;J[a+100>>2]=J[a+100>>2]|196608;f=ko(k,a);if(f){break wb}f=am(h,82513,d+396|0);if(f){J[d+132>>2]=f;J[d+128>>2]=82513;dj(3,88458,141963,d+128|0);f=-1e3;break wb}a=hj(a,ij(d+168|0,0,112),106);J[a+4>>2]=82513;f=J[d+396>>2];J[a+48>>2]=477;J[a+44>>2]=478;J[a+36>>2]=0;J[a+40>>2]=0;J[a+32>>2]=479;J[a+28>>2]=480;J[a+24>>2]=481;J[a+20>>2]=482;J[a+16>>2]=m;J[a>>2]=f;J[a+92>>2]=0;J[a+96>>2]=0;J[a+88>>2]=483;J[a+84>>2]=484;J[a+76>>2]=485;J[a+72>>2]=0;J[a+68>>2]=486;J[a+64>>2]=0;J[a+56>>2]=0;J[a+60>>2]=0;J[a+52>>2]=487;I[a+104>>1]=500;J[a+100>>2]=J[a+100>>2]|196608;f=ko(k,a);if(f){break wb}f=am(h,82198,d+396|0);if(f){J[d+116>>2]=f;J[d+112>>2]=82198;dj(3,88458,141963,d+112|0);f=-1e3;break wb}i=hj(a,ij(d+168|0,0,112),106);J[i+4>>2]=82198;a=J[d+396>>2];J[i+60>>2]=488;J[i+48>>2]=489;J[i+44>>2]=490;J[i+36>>2]=0;J[i+40>>2]=0;J[i+32>>2]=491;J[i+28>>2]=492;J[i+24>>2]=493;J[i+20>>2]=494;J[i+16>>2]=s;J[i>>2]=a;J[i+96>>2]=495;J[i+92>>2]=0;J[i+88>>2]=496;J[i+84>>2]=497;J[i+72>>2]=0;J[i+76>>2]=0;J[i+68>>2]=498;J[i+64>>2]=0;J[i+56>>2]=0;J[i+52>>2]=499;I[i+104>>1]=700;J[i+100>>2]=J[i+100>>2]&-196609|65536;f=ko(k,i);if(f){break wb}a=am(h,80483,d+396|0);if(a){J[d+100>>2]=a;J[d+96>>2]=80483;dj(3,88458,141963,d+96|0);f=-1e3;break wb}a=hj(i,ij(d+168|0,0,112),106);J[a+4>>2]=80483;f=J[d+396>>2];J[a+60>>2]=500;J[a+48>>2]=501;J[a+44>>2]=502;J[a+36>>2]=0;J[a+40>>2]=0;J[a+32>>2]=503;J[a+28>>2]=504;J[a+24>>2]=505;J[a+20>>2]=506;J[a+16>>2]=b;J[a>>2]=f;J[a+76>>2]=507;J[a+72>>2]=0;J[a+68>>2]=508;J[a+64>>2]=0;J[a+56>>2]=0;J[a+52>>2]=509;J[i+92>>2]=0;J[i+96>>2]=0;J[i+84>>2]=0;J[i+88>>2]=0;I[a+104>>1]=800;J[a+100>>2]=J[a+100>>2]|196608;f=ko(k,a);if(f){break wb}b=am(h,80474,d+396|0);if(b){J[d+84>>2]=b;J[d+80>>2]=80474;dj(3,88458,141963,d+80|0);f=-1e3;break wb}b=hj(a,ij(d+168|0,0,112),106);J[b+4>>2]=80474;f=J[d+396>>2];J[b+48>>2]=510;J[b+44>>2]=511;a=b;J[a+36>>2]=0;J[a+40>>2]=0;J[a+32>>2]=512;J[a+28>>2]=513;J[a+24>>2]=514;J[a+20>>2]=515;J[a+16>>2]=n;J[a>>2]=f;J[a+96>>2]=0;J[a+88>>2]=0;J[a+92>>2]=0;J[a+84>>2]=516;J[a+72>>2]=0;J[a+76>>2]=0;J[a+68>>2]=517;J[a+64>>2]=0;J[a+56>>2]=0;J[a+60>>2]=0;J[a+52>>2]=518;I[a+104>>1]=900;J[a+100>>2]=J[a+100>>2]&-196609|65536;f=ko(k,a);if(f){break wb}a=am(h,80464,d+396|0);if(a){J[d+68>>2]=a;J[d+64>>2]=80464;dj(3,88458,141963,d- -64|0);f=-1e3;break wb}a=hj(b,ij(d+168|0,0,112),106);J[a+4>>2]=80464;f=J[d+396>>2];J[a+48>>2]=0;J[a+44>>2]=519;J[a+36>>2]=0;J[a+40>>2]=0;J[a+32>>2]=520;J[a+28>>2]=521;J[a+24>>2]=522;J[a+20>>2]=523;J[a+16>>2]=q;J[a>>2]=f;J[a+56>>2]=0;J[a+60>>2]=0;J[a+52>>2]=524;b=b- -64|0;J[b+8>>2]=0;J[b+12>>2]=0;J[b>>2]=0;J[b+4>>2]=0;J[a+96>>2]=0;J[a+88>>2]=0;J[a+92>>2]=0;J[a+84>>2]=525;I[a+104>>1]=950;J[a+100>>2]=J[a+100>>2]&-196609|65536;f=ko(k,a);if(f){break wb}b=am(h,80737,d+396|0);if(b){J[d+52>>2]=b;J[d+48>>2]=80737;dj(3,88458,141963,d+48|0);f=-1e3;break wb}a=hj(a,ij(d+168|0,0,112),106);J[a+4>>2]=80737;b=J[d+396>>2];J[a+48>>2]=526;J[a+44>>2]=527;J[a+36>>2]=0;J[a+40>>2]=0;J[a+32>>2]=528;J[a+28>>2]=529;J[a+24>>2]=530;J[a+20>>2]=531;J[a+16>>2]=m;J[a>>2]=b;J[a+72>>2]=0;J[a+76>>2]=0;J[a+68>>2]=532;J[a+64>>2]=0;J[a+56>>2]=0;J[a+60>>2]=0;J[a+52>>2]=533;J[i+92>>2]=0;J[i+96>>2]=0;J[i+84>>2]=0;J[i+88>>2]=0;I[a+104>>1]=1e3;J[a+100>>2]=J[a+100>>2]|196608;f=ko(k,a);if(f){break wb}b=am(h,82383,d+396|0);if(b){J[d+36>>2]=b;J[d+32>>2]=82383;dj(3,88458,141963,d+32|0);f=-1e3;break wb}a=hj(a,ij(d+168|0,0,112),106);J[a+4>>2]=82383;b=J[d+396>>2];J[a+60>>2]=534;J[a+48>>2]=535;J[a+44>>2]=536;J[a+36>>2]=0;J[a+40>>2]=0;J[a+32>>2]=537;J[a+28>>2]=538;J[a+24>>2]=539;J[a+20>>2]=540;J[a+16>>2]=o;J[a>>2]=b;J[a+96>>2]=541;J[a+92>>2]=0;J[a+88>>2]=542;J[a+84>>2]=543;J[a+76>>2]=544;J[a+72>>2]=0;J[a+68>>2]=545;J[a+64>>2]=0;J[a+56>>2]=0;J[a+52>>2]=546;I[a+104>>1]=1100;J[a+100>>2]=J[a+100>>2]|196608;f=ko(k,a);if(f){break wb}b=am(h,81707,d+396|0);if(b){J[d+20>>2]=b;J[d+16>>2]=81707;dj(3,88458,141963,d+16|0);f=-1e3;break wb}a=hj(a,ij(d+168|0,0,112),106);J[a+4>>2]=81707;b=J[d+396>>2];J[a+60>>2]=547;J[a+48>>2]=548;J[a+44>>2]=549;J[a+36>>2]=0;J[a+40>>2]=0;J[a+32>>2]=550;J[a+28>>2]=551;J[a+24>>2]=552;J[a+20>>2]=553;J[a+16>>2]=u;J[a>>2]=b;J[a+96>>2]=554;J[a+92>>2]=0;J[a+88>>2]=555;J[a+84>>2]=556;J[a+76>>2]=557;J[a+72>>2]=0;J[a+68>>2]=558;J[a+64>>2]=0;J[a+56>>2]=0;J[a+52>>2]=559;I[a+104>>1]=1200;J[a+100>>2]=J[a+100>>2]|196608;f=ko(k,a);if(f){break wb}b=am(h,82205,d+396|0);if(b){J[d+4>>2]=b;J[d>>2]=82205;dj(3,88458,141963,d);f=-1e3;break wb}a=hj(a,ij(d+168|0,0,112),106);J[a+4>>2]=82205;b=J[d+396>>2];J[a+60>>2]=560;J[a+48>>2]=561;J[a+44>>2]=562;J[a+36>>2]=0;J[a+40>>2]=0;J[a+32>>2]=563;J[a+28>>2]=564;J[a+24>>2]=565;J[a+20>>2]=566;J[a+16>>2]=t;J[a>>2]=b;J[a+96>>2]=567;J[a+92>>2]=0;J[a+88>>2]=568;J[a+84>>2]=569;J[a+76>>2]=570;J[a+72>>2]=0;J[a+68>>2]=571;J[a+64>>2]=0;J[a+56>>2]=0;J[a+52>>2]=572;I[a+104>>1]=1400;J[a+100>>2]=J[a+100>>2]|196608;f=ko(k,a)}Ui=d+400|0;if(f){break tb}d=g+368|0;a=Ui-144|0;Ui=a;b=J[73936];xb:{if(b){while(1){i=ij(a+32|0,0,112);f=am(J[d+4>>2],J[b+12>>2],a+28|0);if(f){d=J[b+12>>2];b=f+21|0;if(b>>>0>21){b=97515}else{b=J[(b<<2)+223356>>2]}J[a+20>>2]=b;J[a+16>>2]=d;dj(3,88293,31061,a+16|0);f=-1e3;break xb}J[a+24>>2]=0;if(My(J[d+8>>2],J[a+28>>2],a+24|0)){J[a>>2]=J[b+12>>2];dj(3,88293,154067,a)}I[a+132>>1]=J[J[d+8>>2]>>2];J[i>>2]=J[a+28>>2];f=J[b+12>>2];J[a+36>>2]=f;J[a+40>>2]=bj(f);J[a+44>>2]=Yi;J[a+132>>2]=J[a+132>>2]|65536;f=Zi[J[b+4>>2]](d,i)|0;if(f){break xb}f=ko(J[d+8>>2],i);if(f){break xb}I[b+16>>1]=J[a+132>>2];b=J[b>>2];if(b){continue}break}}f=0}Ui=a+144|0;if(f){break tb}m=J[e+4>>2];d=0;n=Ui-16|0;Ui=n;yb:{if(K[e+450|0]){break yb}if(!ak(m,20277,1)){break yb}a=J[e+300>>2];b=J[a+8412>>2];if(b){wK(J[a+8408>>2],b);wx(J[a+8412>>2]);J[a+8412>>2]=0}}a=nn(m,25555,0);zb:{if(a){if(wk(J[e+300>>2],a,n+12|0)){break zb}t=J[e+424>>2];b=0;h=0;a=Ui-368|0;Ui=a;Ab:{Bb:{Cb:{Db:{Eb:{Fb:{l=J[n+12>>2];f=J[l+4>>2];if(f){i=J[l>>2];while(1){h=!jj(82813,J[(i+P(b,20)|0)+4>>2])+h|0;b=b+1|0;if((f|0)!=(b|0)){continue}break}if(h){break Fb}}dj(2,86420,48404,0);break Eb}u=t+8|0;b=h+1|0;f=(b>>>0)/3|0;HN(u,f>>>0<=1?1:f,b);J[a+196>>2]=0;b=J[215892];J[a+192>>2]=b;ij(a+200|0,0,168);I[a+362>>1]=65535;I[a+356>>1]=65535;I[a+350>>1]=65535;I[a+344>>1]=65535;I[a+338>>1]=65535;I[a+332>>1]=65535;I[a+326>>1]=65535;I[a+320>>1]=65535;I[a+314>>1]=65535;I[a+308>>1]=65535;I[a+302>>1]=65535;I[a+296>>1]=65535;I[a+290>>1]=65535;I[a+284>>1]=65535;I[a+278>>1]=65535;I[a+272>>1]=65535;I[a+266>>1]=65535;I[a+260>>1]=65535;I[a+254>>1]=65535;I[a+248>>1]=65535;I[a+242>>1]=65535;I[a+236>>1]=65535;I[a+230>>1]=65535;I[a+224>>1]=65535;I[a+218>>1]=65535;I[a+212>>1]=65535;I[a+206>>1]=65535;I[a+200>>1]=65535;IN(u,b,a+192|0);if(!J[l+4>>2]){break Eb}y=a+24|0;i=0;while(1){f=P(i,20);o=f+J[l>>2]|0;Gb:{if(jj(82813,J[o+4>>2])){break Gb}q=bv(J[o>>2]);Hb:{b=J[t+12>>2];Ib:{if(!b){break Ib}b=J[J[u>>2]+((q>>>0)%(b>>>0)<<2)>>2];if((b|0)==-1){break Ib}h=J[t+16>>2];while(1){b=h+P(b,184)|0;if((q|0)==J[b>>2]){break Hb}b=J[b+180>>2];if((b|0)!=-1){continue}break}}p=N[o+8>>2];J[a+16>>2]=q;N[a+20>>2]=p;z=ij(y,0,168);I[a+186>>1]=65535;I[a+180>>1]=65535;I[a+174>>1]=65535;I[a+168>>1]=65535;I[a+162>>1]=65535;I[a+156>>1]=65535;I[a+150>>1]=65535;I[a+144>>1]=65535;I[a+138>>1]=65535;I[a+132>>1]=65535;I[a+126>>1]=65535;I[a+120>>1]=65535;I[a+114>>1]=65535;I[a+108>>1]=65535;I[a+102>>1]=65535;I[a+96>>1]=65535;I[a+90>>1]=65535;I[a+84>>1]=65535;I[a+78>>1]=65535;I[a+72>>1]=65535;I[a+66>>1]=65535;I[a+60>>1]=65535;I[a+54>>1]=65535;I[a+48>>1]=65535;I[a+42>>1]=65535;I[a+36>>1]=65535;I[a+30>>1]=65535;I[a+24>>1]=65535;b=J[o+16>>2];if(b){k=0;while(1){if(b>>>0<=k>>>0){break Db}f=J[o+12>>2]+P(k,24)|0;s=z+P(J[f>>2],6)|0;I[s>>1]=J[f+8>>2];v=K[s+4|0]&-4|K[f+4|0]&3;H[s+4|0]=v;if(J[f+4>>2]==2){I[s+2>>1]=J[f+20>>2]}h=J[f+16>>2];if(h){b=0;while(1){if(b>>>0>=h>>>0){break Cb}h=J[J[f+12>>2]+(b<<2)>>2];if(h>>>0<=2){v=1050628>>>(h<<3&16777208)|v;H[s+4|0]=v}b=b+1|0;h=J[f+16>>2];if(b>>>0>>0){continue}break}}b=J[o+16>>2];k=k+1|0;if(b>>>0>k>>>0){continue}break}}IN(u,q,a+16|0);break Gb}if(M[l+4>>2]<=i>>>0){break Bb}J[a>>2]=J[f+J[l>>2]>>2];dj(3,86420,129130,a)}i=i+1|0;if(i>>>0>2]){continue}break}}Ui=a+368|0;break Ab}Z(12664,54713,274,84789);B()}Z(12664,54713,255,84789);B()}Z(12664,54713,289,84789);B()}vj(J[e+300>>2],J[n+12>>2])}a=nn(m,57032,82335);if(wk(J[e+300>>2],a,e+428|0)){break zb}a=nn(m,35494,81662);if(wk(J[e+300>>2],a,e+436|0)){break zb}a=nn(m,22738,81014);d=!wk(J[e+300>>2],a,e+432|0)}Ui=n+16|0;if(!d){dj(4,95703,130897,0);break tb}J[J[e+304>>2]+172>>2]=J[e+432>>2];Zi[J[79388]](J[e+224>>2]);a=J[e+224>>2];b=J[(Zi[J[79381]](a)|0)+80>>2];V=a,W=0,X=0,Y=b,_=J[(Zi[J[79381]](J[e+224>>2])|0)+84>>2],U=J[79431],Zi[U](V|0,W|0,X|0,Y|0,_|0);a=J[e+484>>2];Zi[J[79390]](J[e+224>>2],1,a&255,a>>>8&255,a>>>16&255,a>>>24|0,Q(1),0);Zi[J[79389]](J[e+224>>2]);Zi[J[79388]](J[e+224>>2]);a=J[e+224>>2];b=J[(Zi[J[79381]](a)|0)+80>>2];_=a,Y=0,X=0,W=b,V=J[(Zi[J[79381]](J[e+224>>2])|0)+84>>2],U=J[79431],Zi[U](_|0,Y|0,X|0,W|0,V|0);a=J[e+484>>2];Zi[J[79390]](J[e+224>>2],1,a&255,a>>>8&255,a>>>16&255,a>>>24|0,Q(1),0);Zi[J[79389]](J[e+224>>2]);Zi[J[79388]](J[e+224>>2]);a=J[e+224>>2];b=J[(Zi[J[79381]](a)|0)+80>>2];V=a,W=0,X=0,Y=b,_=J[(Zi[J[79381]](J[e+224>>2])|0)+84>>2],U=J[79431],Zi[U](V|0,W|0,X|0,Y|0,_|0);a=J[e+484>>2];Zi[J[79390]](J[e+224>>2],1,a&255,a>>>8&255,a>>>16&255,a>>>24|0,Q(1),0);Zi[J[79389]](J[e+224>>2]);Jb:{a=J[e+436>>2];if(!a){break Jb}if((Ex(J[a+24>>2],0,0)|0)==1){break Jb}dj(5,95703,127485,0);break tb}J[c+4>>2]=J[e+300>>2];J[c+8>>2]=J[e+156>>2];J[c+12>>2]=J[e+420>>2];J[c+16>>2]=J[e+224>>2];J[c+20>>2]=J[e+220>>2];J[c+28>>2]=J[e+4>>2];a=J[e+284>>2];Kb:{if(a){J[c+24>>2]=a;J[c>>2]=a?J[a+124>>2]:0;if(ID(c)){break Kb}break tb}a=J[e+288>>2];J[c+24>>2]=a;J[c>>2]=a?J[a+124>>2]:0;if(!ID(c)){break tb}a=J[e+296>>2];J[c+24>>2]=a;J[c>>2]=a?J[a+124>>2]:0;if(!ID(c)){break tb}}a=Ui-32|0;Ui=a;Lb:{if(!ak(J[e+4>>2],75088,0)){break Lb}b=ak(J[e+4>>2],59034,0);Mb:{if(am(J[e+300>>2],82363,a+28|0)){J[a+16>>2]=82363;dj(3,95703,56758,a+16|0);break Mb}J[J[a+28>>2]+36>>2]=b}if(am(J[e+300>>2],80496,a+28|0)){J[a>>2]=80496;dj(3,95703,56758,a);break Lb}J[J[a+28>>2]+36>>2]=b}Ui=a+32|0;if(wk(J[e+300>>2],nn(J[e+4>>2],45767,82157),e+160|0)){break tb}pv(J[e+160>>2]);J[e+212>>2]=0;J[g+16>>2]=x?114106:158859;c=g+9136|0;Gj(c,512,76230,g+16|0);a=Ui-96|0;Ui=a;b=-2;if(!vG(c,a)){b=J[a+28>>2];J[g+312>>2]=J[a+24>>2];J[g+316>>2]=b;J[g+320>>2]=J[a+4>>2];J[g+324>>2]=J[a+40>>2];J[g+328>>2]=J[a+56>>2];b=0}Ui=a+96|0;if(!b){J[e+212>>2]=J[g+328>>2]}if(C){b=Gk(C);j=fp(b,135341,g+9136|0);if(j){d=0;while(1){Nb:{if(!am(J[e+300>>2],j,g+312|0)){c=J[g+312>>2];f=d&65535;a=J[e+156>>2];j=J[a>>2];Ob:{if(!j){break Ob}i=a+8|0;a=0;while(1){h=i+P(a,112)|0;if((c|0)!=J[h>>2]){a=a+1|0;if((j|0)!=(a|0)){continue}break Ob}break}I[h+104>>1]=f}d=d+1|0;break Nb}J[g>>2]=j;dj(4,95703,28723,g)}j=fp(0,135341,g+9136|0);if(j){continue}break}}cj(b)}a=Ui-16|0;Ui=a;c=J[e+156>>2];b=J[c>>2];J[a+12>>2]=c;c=c+28568|0;RF(c,c+(b<<1)|0,a+12|0,b?62-(S(b)<<1)|0:0,1);Ui=a+16|0;J[g+9136>>2]=J[e+4>>2];J[g+9140>>2]=J[e+300>>2];a=J[e+284>>2];Pb:{if(a){a=a?J[a+124>>2]:0;break Pb}a=J[e+288>>2];if(a){a=J[a+124>>2]}else{a=0}}J[g+9144>>2]=a;J[g+312>>2]=4;Py(g+9136|0,g+312|0);J[e+456>>2]=bl();J[e+460>>2]=Yi;j=1}Qb:{if(H[g+412|0]&1){break Qb}a=J[g+392>>2];if(a){cj(a)}a=J[g+384>>2];if(!a){break Qb}cj(a)}}}a=J[g+4984>>2];if(!a){break r}cj(a)}Ui=g+12208|0;break l}Z(114101,41740,599,93393);B()}Z(112520,53895,557,53220);B()}Z(145396,53895,487,84789);B()}Z(144782,53895,514,59583);B()}Z(2627,54340,112,2284);B()}if(j){return e|0}WR(e)}return 0}Z(151729,53895,501,2284);B()}function en(a,b,c,d,e,f,g,h,i,j,k,l,m){var n=0,o=0,p=0,q=0,r=0,s=0,t=0,u=0,v=0,w=0,x=0,y=0,z=0,A=0,C=0,D=0,E=0,F=0,G=0,M=0,O=Q(0),T=Q(0),U=0,V=0,W=0,X=0,Y=0,_=0,$=0,aa=0,ba=0,ca=0,da=Q(0),ea=0,fa=0,ga=0,ha=0,ia=0,ja=0,ka=0,la=0,ma=0,na=0,oa=0,pa=0,qa=0,ra=0,sa=0,ta=0,ua=0,va=Q(0),wa=0,xa=0,ya=0,za=0,Aa=0,Ba=0,Ca=0,Da=0,Ea=0,Fa=0,Ga=0,Ha=0,Ia=0,Ja=0,Ka=0,La=0,Ma=0,Na=0,Oa=0,Pa=Q(0),Qa=Q(0),Ra=0,Sa=0,Ta=0,Ua=0,Va=0,Wa=0,Xa=0,Ya=0,Za=0,_a=0,$a=0,ab=0,bb=0,cb=0,db=0,eb=0,fb=0,gb=0,hb=0,ib=0,jb=0,kb=0,lb=0,mb=Q(0),nb=Q(0),ob=Q(0),pb=Q(0),qb=Q(0),rb=Q(0),sb=Q(0),tb=Q(0),ub=Q(0),vb=0,wb=0,xb=0,yb=Q(0);w=Ui-256|0;Ui=w;a:{b:{c:{d:{e:{if(K[318177]){n=f-21|0;f:{if(j){break f}if(n>>>0<9){j=h;break f}j=b;if((f|0)!=15){break f}j=h+7>>>3|0;n=-6}if(P(b,c)<<4>>>0>e>>>0){break c}if((f&-2)==6){break d}if(!c){e=1;break b}e=1;if(!b){break b}if(!(1<>>0>30){break e}Oa=j<<2;V=j<<1;Ka=P(g,j);u=w+216|0;La=(f|0)==24;G=n>>>0<9?k?k:i:k;$=G;while(1){e=($|0)>=4?4:$;ba=e>>>0<=1?1:e;aa=M<<2;U=P(aa,j);i=P(M,Ka)+a|0;ka=j;X=0;while(1){e=(ka|0)>=4?4:ka;q=e>>>0<=1?1:e;g:{h:{i:{j:{k:{l:{m:{n:{o:{p:{q:{switch(f|0){default:e=w+104|0;p=Sm(d,e,0,0);if(p){pn(J[w+208>>2],J[w+212>>2],u,e,w)}if((g|0)!=2){break k}if((G|0)!=(aa|0)){break p}break h;case 24:case 25:e=w+104|0;p=Sm(d,e,0,0);if(p){pn(J[w+208>>2],J[w+212>>2],u,e,w)}if((g|0)!=2){break l}if((G|0)==(aa|0)){break i}e=X<<2;if((e|0)!=(j|0)){break o}break i;case 22:e=w+104|0;s=Sm(d,e,0,0);if(s){pn(J[w+208>>2],J[w+212>>2],u,e,w)}if((g|0)!=4){break m}if((G|0)!=(aa|0)){break n}break j;case 19:e=0;l=(l|0)>0?l:0;k=l;m=(m|0)<0?3:m;h=Ui-224|0;Ui=h;q=Sm(d,h+72|0,0,1);r:{if(!q){break r}n=J[h+176>>2];if((n|0)==8){p=h+184|0;s=K[p+k|0];k=K[168768]|K[168769]<<8|(K[168770]<<16|K[168771]<<24);H[i+2|0]=k;o=k>>>8|0;H[i+3|0]=o;x=k>>>16|0;H[i+4|0]=x;t=k>>>24|0;H[i+5|0]=t;n=K[168772]|K[168773]<<8;H[i+6|0]=n;y=n>>>8|0;H[i+7|0]=y;I[i>>1]=s|3328;p=K[m+p|0];H[i+10|0]=k;H[i+11|0]=o;H[i+12|0]=x;H[i+13|0]=t;H[i+14|0]=n;H[i+15|0]=y;I[i+8>>1]=p|3328;break r}o=n;n=h+72|0;pn(o,J[h+180>>2],h+184|0,n,h);s:{if((k|0)==3){nz(n,h,i);break s}oz(i,h+k|0,4)}if((m|0)==3){nz(h+72|0,h,i+8|0);break r}oz(i+8|0,h+m|0,4)}Ui=h+224|0;if(q){break g}break b;case 18:h=w+104|0;if(!Sm(d,h,0,1)){break c}e=(l|0)>0?l:0;k=J[w+208>>2];if((k|0)!=8){pn(k,J[w+212>>2],u,h,w);if((l|0)!=3){oz(i,e+w|0,4);l=e;break g}nz(w+104|0,w,i);l=e;break g}k=K[e+u|0];h=K[168768]|K[168769]<<8|(K[168770]<<16|K[168771]<<24);H[i+2|0]=h;H[i+3|0]=h>>>8;H[i+4|0]=h>>>16;H[i+5|0]=h>>>24;I[i>>1]=k|3328;h=K[168772]|K[168773]<<8;H[i+6|0]=h;H[i+7|0]=h>>>8;l=e;break g;case 12:o=w+104|0;if(!Sm(d,o,1,0)){break c}h=J[w+208>>2];if((h|0)!=8){v=0;D=0;n=Ui-48|0;Ui=n;t:{u:{v:{w:{x:{if(h>>>0<19){C=K[o+20|0];H[i+2|0]=0;H[i+3|0]=0;H[i+4|0]=0;H[i+5|0]=0;H[i+6|0]=0;H[i+7|0]=0;H[i+8|0]=0;H[i+9|0]=0;H[i+8|0]=0;H[i+9|0]=0;H[i+10|0]=0;H[i+11|0]=0;H[i+12|0]=0;H[i+13|0]=0;H[i+14|0]=0;H[i+15|0]=0;e=J[(h<<2)+166096>>2];H[i|0]=e;k=e>>>8|0;H[i+1|0]=k;e=P(J[o>>2],12)+163280|0;if(J[e+4>>2]|J[e+8>>2]){break x}k=k|(K[o+4|0]<<3)-8;H[i+1|0]=k;ca=J[e>>2];y:{if(J[o+4>>2]==1){e=J[o+12>>2];H[i+2|0]=e>>>3;H[i+1|0]=k|e<<5;q=17;break y}p=J[o+8>>2];e=10;q=13;while(1){k=(q>>3)+i|0;r=k;x=K[k|0];k=q&7;H[r|0]=x|p<>>k|0;q=k+q|0;e=e-k|0;if(e){continue}break}e=(q>>3)+i|0;k=q&7;p=(J[o+12>>2]<<2&60)<>>0>=3){H[e+1|0]=K[e+1|0]|p>>>8}q=q+6|0}if(K[o+20|0]==1){e=ca<<(C?5:4);if(e-24>>>0>=73){break w}e=(120-e>>>3|0)+i|0;H[e|0]=K[e|0]|K[o+16|0]<<6}e=P(J[o+4>>2],(J[o+12>>2]>>2)+1|0);if((e|0)>=10){break v}J[n+32>>2]=0;J[n+24>>2]=0;J[n+28>>2]=0;J[n+16>>2]=0;J[n+20>>2]=0;y=e<<1;E=o+21|0;h=P(K[h+163152|0],12)+163280|0;s=J[h>>2];p=J[h+4>>2];if(p){x=5;e=4;break u}if(J[h+8>>2]){x=3;e=2;break u}if((e|0)<=0){break t}if(s>>>0<=9){if(!s){break t}e=0;while(1){h=(n+16|0)+(q>>3)|0;k=q&7;p=K[e+E|0]<>>0>8-k>>>0){H[h+1|0]=K[h+1|0]|p>>>8}q=q+s|0;e=e+1|0;if((y|0)!=(e|0)){continue}break}break t}Z(102793,40075,11733,102734);B()}Z(89151,40075,11932,51097);B()}Z(84836,40075,11947,51097);B()}Z(143983,40075,11970,51097);B()}Z(102774,40075,11977,51097);B()}F=(e+y|0)/(x|0)|0;if((F|0)<=0){break t}Y=s+3|0;e=P(s,3);_=e+5|0;k=s<<1;na=k+5|0;ga=k+3|0;r=-1<>2]=0;e=0;p=0;t=0;v=0;z=0;A=P(x,D);if((A|0)<(y|0)){e=y-A|0;e=(e|0)>(x|0)?x:e;hj(n+8|0,A+E|0,(e|0)<=1?1:e);p=K[n+11|0];v=K[n+9|0];z=K[n+8|0];t=K[n+10|0];e=K[n+12|0]}la=p&255;ma=e&255;e=v&255;p=((P(la>>>s|0,27)+P(ma>>>s|0,81)|0)+P(t>>>s|0,9)+(z>>>s)|0)+P(e>>>s|0,3)|0;if(p>>>0>=243){break B}A=K[p+169152|0];if(k){p=r&z|(e&r)<>3)|0;z=v;ta=K[v|0];v=q&7;H[z|0]=ta|p<>>v|0;q=q+v|0;e=e-v|0;if(e){continue}break}}if(h){p=(r&la)<>>7<<_|(A>>>4&1)<>>5&3)<>>2&3|(r&t)<<2);e=h;while(1){t=(n+16|0)+(q>>3)|0;v=t;z=K[t|0];t=q&7;H[v|0]=z|p<>>t|0;q=q+t|0;e=e-t|0;if(e){continue}break}}D=D+1|0;if((F|0)!=(D|0)){continue}break}break t}h=e+7|0;if(!h){break A}while(1){H[n+12|0]=0;J[n+8>>2]=0;p=0;t=0;e=P(x,v);if((e|0)<(y|0)){k=e+E|0;e=y-e|0;e=(e|0)>(x|0)?x:e;hj(n+8|0,k,(e|0)<=1?1:e);p=K[n+9|0];t=K[n+8|0];e=K[n+10|0]}else{e=0}k=p&255;p=(P(e>>>s|0,25)+(t>>>s|0)|0)+P(k>>>s|0,5)|0;if(p>>>0>124){break z}k=r&t|(e&r)<>>3&3)<>>5&3)<<_;e=h;while(1){k=(n+16|0)+(q>>3)|0;t=k;z=K[k|0];k=q&7;H[t|0]=z|p<>>k|0;q=k+q|0;e=e-k|0;if(e){continue}break}v=v+1|0;if((F|0)!=(v|0)){continue}break}break t}Z(109040,40075,5158,18455);B()}q=0;while(1){H[n+12|0]=0;J[n+8>>2]=0;p=0;t=0;e=P(q,x);if((e|0)<(y|0)){h=e+E|0;e=y-e|0;e=(e|0)>(x|0)?x:e;hj(n+8|0,h,(e|0)<=1?1:e);p=K[n+9|0];t=K[n+8|0];e=K[n+10|0]}else{e=0}if((P(e>>>s|0,25)+(t>>>s|0)|0)+P((p&255)>>>s|0,5)>>>0>124){break z}q=q+1|0;if((F|0)!=(q|0)){continue}break}break t}Z(106761,40075,11872,17786);B()}h=C?32:16;J[i>>2]=J[i>>2]|J[n+16>>2];J[i+4>>2]=J[i+4>>2]|J[n+20>>2];J[i+8>>2]=J[i+8>>2]|J[n+24>>2];J[i+12>>2]=J[i+12>>2]|J[n+28>>2];C:{D:{E:{F:{G:{H:{switch(ca-1|0){case 0:k=o+39|0;e=0;while(1){q=127-e|0;p=(q>>>3|0)+i|0;H[p|0]=K[p|0]|K[e+k|0]<<(q&7);q=e|1;p=127-q|0;s=(p>>>3|0)+i|0;H[s|0]=K[s|0]|K[k+q|0]<<(p&6);e=e+2|0;if((h|0)!=(e|0)){continue}break};break G;case 1:k=o+39|0;e=0;while(1){q=126-(e<<1)|0;p=(q>>>3|0)+i|0;H[p|0]=K[p|0]|K[K[e+k|0]+166172|0]<<(q&6);q=e|1;p=126-(q<<1)|0;s=(p>>>3|0)+i|0;H[s|0]=K[s|0]|K[K[k+q|0]+166172|0]<<(p&4);e=e+2|0;if((h|0)!=(e|0)){continue}break};break G;case 2:p=o+39|0;e=0;while(1){if((e|0)==42){break F}q=P(e,-3)+125|0;k=(q>>>3|0)+i|0;s=K[K[e+p|0]+166176|0]<<(q&7);H[k|0]=s|K[k|0];if(q>>>0<=119){H[k+1|0]=K[k+1|0]|s>>>8}e=e+1|0;if((h|0)!=(e|0)){continue}break};break G;case 3:k=o+39|0;e=0;while(1){if((e|0)==32){break E}q=124-(e<<2)|0;p=(q>>>3|0)+i|0;H[p|0]=K[p|0]|K[K[e+k|0]+166192|0]<<(q&4);e=e+1|0;if((h|0)!=(e|0)){continue}break};break G;case 4:break H;default:break C}}p=o+39|0;e=0;while(1){if((e|0)==25){break D}q=P(e,-5)+123|0;k=(q>>>3|0)+i|0;s=K[K[e+p|0]+166208|0]<<(q&7);H[k|0]=s|K[k|0];if(q>>>0<=119){H[k+1|0]=K[k+1|0]|s>>>8}e=e+1|0;if((h|0)!=(e|0)){continue}break}}Ui=n+48|0;break g}Z(105965,40075,12018,51097);B()}Z(105976,40075,12032,51097);B()}Z(105965,40075,12048,51097);B()}Z(114101,40075,12057,51097);B()}n=K[u+3|0];q=K[u+2|0];p=K[u+1|0];e=K[u|0];J[i+12>>2]=0;J[i+4>>2]=-1;J[i+8>>2]=0;H[i|0]=252;H[i+1|0]=253;H[i+2|0]=255;H[i+3|0]=255;k=e|e<<8;e=16;h=64;while(1){s=(h>>3)+i|0;o=s;r=K[s|0];s=h&7;H[o|0]=r|k<>>s|0;h=h+s|0;e=e-s|0;if(e){continue}break};k=p|p<<8;e=16;while(1){p=(h>>3)+i|0;o=p;r=K[p|0];p=h&7;H[o|0]=r|k<>>p|0;h=h+p|0;e=e-p|0;if(e){continue}break};k=q|q<<8;e=16;while(1){q=(h>>3)+i|0;o=q;p=K[q|0];q=h&7;H[o|0]=p|k<>>q|0;h=h+q|0;e=e-q|0;if(e){continue}break};k=n|n<<8;e=16;while(1){n=(h>>3)+i|0;o=n;p=K[n|0];n=h&7;H[o|0]=p|k<>>n|0;h=h+n|0;e=e-n|0;if(e){continue}break};break g;case 8:case 9:o=w+104|0;if(!Sm(d,o,0,0)){break c}q=0;e=Ui-48|0;Ui=e;n=ij(w,0,96);x=J[o+104>>2];s=K[x+163248|0];y=K[x+163152|0];I:{J:{K:{L:{M:{switch(x|0){case 0:case 5:case 10:case 12:case 14:case 15:case 18:J[n>>2]=6;h=y<<9;T=Q(Q(K[(h+319216|0)+(K[o+21|0]<<1)|0])/Q(255));N[e+32>>2]=T;N:{if(x-15>>>0<=2){h=h+319216|0;k=K[h+(K[o+22|0]<<1)|0];N[e+36>>2]=T;N[e+40>>2]=T;T=Q(Q(k>>>0)/Q(255));N[e+16>>2]=T;N[e+20>>2]=T;N[e+24>>2]=T;N[e+44>>2]=Q(K[h+(K[o+23|0]<<1)|0])/Q(255);s=4;O=Q(Q(K[h+(K[o+24|0]<<1)|0])/Q(255));break N}h=h+319216|0;N[e+36>>2]=Q(K[h+(K[o+23|0]<<1)|0])/Q(255);N[e+40>>2]=Q(K[h+(K[o+25|0]<<1)|0])/Q(255);N[e+16>>2]=Q(K[h+(K[o+22|0]<<1)|0])/Q(255);N[e+20>>2]=Q(K[h+(K[o+24|0]<<1)|0])/Q(255);N[e+24>>2]=Q(K[h+(K[o+26|0]<<1)|0])/Q(255);if(x-8>>>0<=6){h=(y<<9)+319216|0;N[e+44>>2]=Q(K[h+(K[o+27|0]<<1)|0])/Q(255);O=Q(Q(K[h+(K[o+28|0]<<1)|0])/Q(255));break N}J[e+44>>2]=1065353216;O=Q(1)}N[e+28>>2]=O;Mv(s,7,e+32|0,e+16|0,e+4|0,e,e+8|0);J[n+40>>2]=J[e+4>>2];J[n+52>>2]=J[e>>2];if(x-18>>>0<=4294967285){H[n+55|0]=127;H[n+43|0]=127}J[n+64>>2]=J[e+8>>2];J[n+68>>2]=J[e+12>>2];O:{P:{switch(x-5|0){case 9:H[n+8|0]=K[K[o+39|0]+166480|0];H[n+9|0]=K[K[o+40|0]+166480|0];H[n+10|0]=K[K[o+41|0]+166480|0];H[n+11|0]=K[K[o+42|0]+166480|0];H[n+12|0]=K[K[o+43|0]+166480|0];H[n+13|0]=K[K[o+44|0]+166480|0];H[n+14|0]=K[K[o+45|0]+166480|0];H[n+15|0]=K[K[o+46|0]+166480|0];H[n+16|0]=K[K[o+47|0]+166480|0];H[n+17|0]=K[K[o+48|0]+166480|0];H[n+18|0]=K[K[o+49|0]+166480|0];H[n+19|0]=K[K[o+50|0]+166480|0];H[n+20|0]=K[K[o+51|0]+166480|0];H[n+21|0]=K[K[o+52|0]+166480|0];H[n+22|0]=K[K[o+53|0]+166480|0];h=K[o+54|0]+166480|0;break O;case 13:H[n+8|0]=K[K[o+39|0]+166448|0];H[n+9|0]=K[K[o+40|0]+166448|0];H[n+10|0]=K[K[o+41|0]+166448|0];H[n+11|0]=K[K[o+42|0]+166448|0];H[n+12|0]=K[K[o+43|0]+166448|0];H[n+13|0]=K[K[o+44|0]+166448|0];H[n+14|0]=K[K[o+45|0]+166448|0];H[n+15|0]=K[K[o+46|0]+166448|0];H[n+16|0]=K[K[o+47|0]+166448|0];H[n+17|0]=K[K[o+48|0]+166448|0];H[n+18|0]=K[K[o+49|0]+166448|0];H[n+19|0]=K[K[o+50|0]+166448|0];H[n+20|0]=K[K[o+51|0]+166448|0];H[n+21|0]=K[K[o+52|0]+166448|0];H[n+22|0]=K[K[o+53|0]+166448|0];h=K[o+54|0]+166448|0;break O;default:H[n+8|0]=K[o+39|0];H[n+9|0]=K[o+40|0];H[n+10|0]=K[o+41|0];H[n+11|0]=K[o+42|0];H[n+12|0]=K[o+43|0];H[n+13|0]=K[o+44|0];H[n+14|0]=K[o+45|0];H[n+15|0]=K[o+46|0];H[n+16|0]=K[o+47|0];H[n+17|0]=K[o+48|0];H[n+18|0]=K[o+49|0];H[n+19|0]=K[o+50|0];H[n+20|0]=K[o+51|0];H[n+21|0]=K[o+52|0];H[n+22|0]=K[o+53|0];h=o+54|0;break O;case 0:case 7:break P}}H[n+8|0]=K[K[o+39|0]+166484|0];H[n+9|0]=K[K[o+40|0]+166484|0];H[n+10|0]=K[K[o+41|0]+166484|0];H[n+11|0]=K[K[o+42|0]+166484|0];H[n+12|0]=K[K[o+43|0]+166484|0];H[n+13|0]=K[K[o+44|0]+166484|0];H[n+14|0]=K[K[o+45|0]+166484|0];H[n+15|0]=K[K[o+46|0]+166484|0];H[n+16|0]=K[K[o+47|0]+166484|0];H[n+17|0]=K[K[o+48|0]+166484|0];H[n+18|0]=K[K[o+49|0]+166484|0];H[n+19|0]=K[K[o+50|0]+166484|0];H[n+20|0]=K[K[o+51|0]+166484|0];H[n+21|0]=K[K[o+52|0]+166484|0];H[n+22|0]=K[K[o+53|0]+166484|0];h=K[o+54|0]+166484|0}H[n+23|0]=K[h|0];break L;case 2:J[n>>2]=1;h=P(J[o+108>>2],6)+161328|0;J[n+4>>2]=K[h|0];C=n- -64|0;ca=n+52|0;Y=n+40|0;_=o+21|0;na=K[h+4|0];h=1;while(1){t=0;x=_+P(q,6)|0;k=K[x+3|0];da=Q(Q((k<<4|k)>>>0)/Q(255));pb=Q(da*Q(127));T=Q(Q(pb*Q(.5))+Q(.5));Q:{if(Q(R(T))=0?(p|0)>=126?126:p:0;T=Q(Q(Q(((r>>>6&1|r<<1)&253)>>>0)/Q(255))-da);T=Q(T*T);k=K[x+2|0];va=Q(Q((k<<4|k)>>>0)/Q(255));qb=Q(va*Q(127));O=Q(Q(qb*Q(.5))+Q(.5));R:{if(Q(R(O))=0?(p|0)>=126?126:p:0;O=Q(Q(Q(((v>>>6&1|v<<1)&253)>>>0)/Q(255))-va);T=Q(Q(O*O)+T);k=K[x|0];mb=Q(Q((k<<4|k)>>>0)/Q(255));rb=Q(mb*Q(127));O=Q(Q(rb*Q(.5))+Q(.5));S:{if(Q(R(O))=0?(p|0)>=126?126:p:0;O=Q(Q(Q(((D>>>6&1|D<<1)&253)>>>0)/Q(255))-mb);Qa=Q(O*O);k=K[x+1|0];nb=Q(Q((k<<4|k)>>>0)/Q(255));sb=Q(nb*Q(127));Pa=Q(Q(sb*Q(.5))+Q(.5));T:{if(Q(R(Pa))=0?(p|0)>=126?126:p:0;O=Q(Q(Q(((E>>>6&1|E<<1)&253)>>>0)/Q(255))-nb);O=Q(Q(Qa+Q(O*O))+T);k=K[x+5|0];Pa=Q(Q((k<<4|k)>>>0)/Q(255));tb=Q(Pa*Q(127));T=Q(Q(tb*Q(.5))+Q(.5));U:{if(Q(R(T))=0?(p|0)>=126?126:p:0;T=Q(Q(Q(((z>>>6&1|z<<1)&253)>>>0)/Q(255))-Pa);yb=Q(T*T);T=Q(1e9);s=0;y=0;k=0;p=0;A=0;Qa=O;x=K[x+4|0];ob=Q(Q((x<<4|x)>>>0)/Q(255));ub=Q(ob*Q(127));O=Q(Q(ub*Q(.5))+Q(.5));V:{if(Q(R(O))=0?(F|0)>=126?126:F:0;O=Q(Q(Q(((x>>>6&1|x<<1)&253)>>>0)/Q(255))-ob);O=Q(Qa+Q(Q(O*O)+yb));if(O>>1|0;s=(x&254)>>>1|0;y=(r&254)>>>1|0;p=(E&254)>>>1|0;A=(D&254)>>>1|0;T=O;k=(v&254)>>>1|0}x=0;O=Q(Q(Q(pb+Q(-1))*Q(.5))+Q(.5));W:{if(Q(R(O))=127?127:v;O=Q(Q(Q(((v>>>6&1|v<<1)&255)>>>0)/Q(255))-da);O=Q(O*O);da=Q(Q(Q(qb+Q(-1))*Q(.5))+Q(.5));X:{if(Q(R(da))=127?127:D;da=Q(Q(Q(((D>>>6&1|D<<1)&255)>>>0)/Q(255))-va);da=Q(da*da);va=Q(Q(Q(sb+Q(-1))*Q(.5))+Q(.5));Y:{if(Q(R(va))=127?127:E;va=Q(Q(Q(((E>>>6&1|E<<1)&255)>>>0)/Q(255))-nb);va=Q(va*va);O=Q(da+O);da=Q(Q(Q(rb+Q(-1))*Q(.5))+Q(.5));Z:{if(Q(R(da))=127?127:z;da=Q(Q(Q(((z>>>6&1|z<<1)&255)>>>0)/Q(255))-mb);O=Q(Q(Q(da*da)+va)+O);da=Q(Q(Q(tb+Q(-1))*Q(.5))+Q(.5));_:{if(Q(R(da))=127?127:F;da=Q(Q(Q(((F>>>6&1|F<<1)&255)>>>0)/Q(255))-Pa);da=Q(da*da);Qa=T;va=Q(Q(Q(ub+Q(-1))*Q(.5))+Q(.5));$:{if(Q(R(va))=127?127:ga;T=Q(Q(Q(((r>>>6&1|r<<1)&255)>>>0)/Q(255))-ob);if(Qa>Q(O+Q(Q(T*T)+da))){x=1;t=(F&254)>>>1|0;y=(v&254)>>>1|0;p=(E&254)>>>1|0;A=(z&254)>>>1|0;s=(r&254)>>>1|0;k=(D&254)>>>1|0}r=q^na;v=r<<2;q=v+Y|0;H[q+2|0]=s;H[q+1|0]=k;H[q|0]=A;k=v+ca|0;H[k+2|0]=t;H[k+1|0]=y;H[k|0]=p;J[C+(r<<3)>>2]=x;q=1;k=h;h=0;if(k){continue}break};H[n+8|0]=K[o+39|0];H[n+9|0]=K[o+40|0];H[n+10|0]=K[o+41|0];H[n+11|0]=K[o+42|0];H[n+12|0]=K[o+43|0];H[n+13|0]=K[o+44|0];H[n+14|0]=K[o+45|0];H[n+15|0]=K[o+46|0];H[n+16|0]=K[o+47|0];H[n+17|0]=K[o+48|0];H[n+18|0]=K[o+49|0];H[n+19|0]=K[o+50|0];H[n+20|0]=K[o+51|0];H[n+21|0]=K[o+52|0];H[n+22|0]=K[o+53|0];H[n+23|0]=K[o+54|0];break L;case 3:J[n>>2]=2;p=P(J[o+108>>2],6)+161648|0;J[n+4>>2]=K[p|0];q=1;h=(y<<9)+319216|0;t=K[h+(K[o+22|0]<<1)|0];k=n+40|0;p=P(K[p+4|0],3)+161728|0;x=K[p|0]<<2;s=k+x|0;H[s|0]=(P(K[h+(K[o+21|0]<<1)|0],31)+127>>>0)/255;r=x;x=n+52|0;y=r+x|0;H[y|0]=(P(t,31)+127>>>0)/255;t=K[h+(K[o+24|0]<<1)|0];H[s+1|0]=(P(K[h+(K[o+23|0]<<1)|0],31)+127>>>0)/255;H[y+1|0]=(P(t,31)+127>>>0)/255;t=K[h+(K[o+26|0]<<1)|0];H[s+2|0]=(P(K[h+(K[o+25|0]<<1)|0],31)+127>>>0)/255;H[y+2|0]=(P(t,31)+127>>>0)/255;t=K[h+(K[o+28|0]<<1)|0];y=K[p+1|0]<<2;s=y+k|0;H[s|0]=(P(K[h+(K[o+27|0]<<1)|0],31)+127>>>0)/255;y=x+y|0;H[y|0]=(P(t,31)+127>>>0)/255;t=K[h+(K[o+30|0]<<1)|0];H[s+1|0]=(P(K[h+(K[o+29|0]<<1)|0],31)+127>>>0)/255;H[y+1|0]=(P(t,31)+127>>>0)/255;t=K[h+(K[o+32|0]<<1)|0];H[s+2|0]=(P(K[h+(K[o+31|0]<<1)|0],31)+127>>>0)/255;H[y+2|0]=(P(t,31)+127>>>0)/255;s=K[h+(K[o+34|0]<<1)|0];p=K[p+2|0]<<2;k=p+k|0;H[k|0]=(P(K[h+(K[o+33|0]<<1)|0],31)+127>>>0)/255;p=p+x|0;H[p|0]=(P(s,31)+127>>>0)/255;s=K[h+(K[o+36|0]<<1)|0];H[k+1|0]=(P(K[h+(K[o+35|0]<<1)|0],31)+127>>>0)/255;H[p+1|0]=(P(s,31)+127>>>0)/255;s=K[h+(K[o+38|0]<<1)|0];H[k+2|0]=(P(K[h+(K[o+37|0]<<1)|0],31)+127>>>0)/255;H[p+2|0]=(P(s,31)+127>>>0)/255;H[n+8|0]=K[o+39|0];H[n+9|0]=K[o+40|0];H[n+10|0]=K[o+41|0];H[n+11|0]=K[o+42|0];H[n+12|0]=K[o+43|0];H[n+13|0]=K[o+44|0];H[n+14|0]=K[o+45|0];H[n+15|0]=K[o+46|0];H[n+16|0]=K[o+47|0];H[n+17|0]=K[o+48|0];H[n+18|0]=K[o+49|0];H[n+19|0]=K[o+50|0];H[n+20|0]=K[o+51|0];H[n+21|0]=K[o+52|0];H[n+22|0]=K[o+53|0];H[n+23|0]=K[o+54|0];break K;case 4:J[n>>2]=3;k=P(J[o+108>>2],6)+161328|0;J[n+4>>2]=K[k|0];J[e+44>>2]=1065353216;J[e+28>>2]=1065353216;q=1;h=(y<<9)+319216|0;N[e+32>>2]=Q(K[h+(K[o+21|0]<<1)|0])/Q(255);N[e+16>>2]=Q(K[h+(K[o+22|0]<<1)|0])/Q(255);N[e+36>>2]=Q(K[h+(K[o+23|0]<<1)|0])/Q(255);N[e+20>>2]=Q(K[h+(K[o+24|0]<<1)|0])/Q(255);N[e+40>>2]=Q(K[h+(K[o+25|0]<<1)|0])/Q(255);N[e+24>>2]=Q(K[h+(K[o+26|0]<<1)|0])/Q(255);J[e+8>>2]=0;J[e+12>>2]=0;J[e+4>>2]=0;J[e>>2]=0;x=e+32|0;y=e+16|0;t=e+4|0;r=e+8|0;Mv(3,7,x,y,t,e,r);A=n+40|0;k=K[k+4|0];s=k<<2;p=A+s|0;H[p+2|0]=K[e+6|0];I[p>>1]=L[e+4>>1];v=n+52|0;s=v+s|0;H[s+2|0]=K[e+2|0];I[s>>1]=L[e>>1];H[p+3|0]=127;H[s+3|0]=127;p=n- -64|0;s=p+(k<<3)|0;J[s>>2]=J[e+8>>2];J[s+4>>2]=J[e+12>>2];N[e+32>>2]=Q(K[h+(K[o+27|0]<<1)|0])/Q(255);N[e+16>>2]=Q(K[h+(K[o+28|0]<<1)|0])/Q(255);N[e+36>>2]=Q(K[h+(K[o+29|0]<<1)|0])/Q(255);N[e+20>>2]=Q(K[h+(K[o+30|0]<<1)|0])/Q(255);N[e+40>>2]=Q(K[h+(K[o+31|0]<<1)|0])/Q(255);N[e+24>>2]=Q(K[h+(K[o+32|0]<<1)|0])/Q(255);J[e+8>>2]=0;J[e+12>>2]=0;J[e+4>>2]=0;J[e>>2]=0;Mv(3,7,x,y,t,e,r);s=k^1;k=s<<2;h=k+A|0;H[h+2|0]=K[e+6|0];I[h>>1]=L[e+4>>1];k=k+v|0;H[k+2|0]=K[e+2|0];I[k>>1]=L[e>>1];H[h+3|0]=127;H[k+3|0]=127;h=p+(s<<3)|0;J[h>>2]=J[e+8>>2];J[h+4>>2]=J[e+12>>2];H[n+8|0]=K[o+39|0];H[n+9|0]=K[o+40|0];H[n+10|0]=K[o+41|0];H[n+11|0]=K[o+42|0];H[n+12|0]=K[o+43|0];H[n+13|0]=K[o+44|0];H[n+14|0]=K[o+45|0];H[n+15|0]=K[o+46|0];H[n+16|0]=K[o+47|0];H[n+17|0]=K[o+48|0];H[n+18|0]=K[o+49|0];H[n+19|0]=K[o+50|0];H[n+20|0]=K[o+51|0];H[n+21|0]=K[o+52|0];H[n+22|0]=K[o+53|0];H[n+23|0]=K[o+54|0];break K;case 6:case 11:case 13:case 17:J[n>>2]=5;h=J[o+16>>2];J[n+92>>2]=h+1&3;aa:{ba:{if(x-15>>>0<=2){if((h|0)!=3){break J}h=(y<<9)+319216|0;k=(P(K[h+(K[o+21|0]<<1)|0],127)+127>>>0)/255|0;H[n+40|0]=k;q=K[h+(K[o+22|0]<<1)|0];H[n+41|0]=k;H[n+42|0]=k;k=(P(q,127)+127>>>0)/255|0;H[n+53|0]=k;H[n+52|0]=k;H[n+54|0]=k;H[n+43|0]=K[h+(K[o+23|0]<<1)|0];H[n+55|0]=K[h+(K[o+24|0]<<1)|0];break ba}q=y<<9;p=q+319216|0;k=K[p+(K[o+22|0]<<1)|0];p=K[p+(K[o+21|0]<<1)|0];if(h){p=(P(p&255,127)+127>>>0)/255|0;k=(P(k&255,127)+127>>>0)/255|0}h=h?0:3;s=n+40|0;H[h+s|0]=p;t=n+52|0;H[t+h|0]=k;h=q+319216|0;q=K[h+(K[o+24|0]<<1)|0];h=K[h+(K[o+23|0]<<1)|0];k=J[o+16>>2]==1;p=k?3:1;r=p+s|0;if(!k){q=(P(q&255,127)+127>>>0)/255|0;h=(P(h,127)+127>>>0)/255|0}H[r|0]=h;H[p+t|0]=q;h=(y<<9)+319216|0;q=K[h+(K[o+26|0]<<1)|0];h=K[h+(K[o+25|0]<<1)|0];k=J[o+16>>2]==2;p=k?3:2;r=p+s|0;if(!k){q=(P(q&255,127)+127>>>0)/255|0;h=(P(h,127)+127>>>0)/255|0}H[r|0]=h;H[p+t|0]=q;h=J[o+16>>2];k=255;p=255;if(x-8>>>0<=6){k=(y<<9)+319216|0;p=K[k+(K[o+28|0]<<1)|0];k=K[k+(K[o+27|0]<<1)|0]}q=h+s|0;if(h>>>0<=2){p=(P(p,127)+127>>>0)/255|0;k=(P(k,127)+127>>>0)/255|0}H[q|0]=k;H[h+t|0]=p;if((x|0)==13){break aa}}H[n+8|0]=K[o+39|0];H[n+24|0]=K[o+40|0];H[n+9|0]=K[o+41|0];H[n+25|0]=K[o+42|0];H[n+10|0]=K[o+43|0];H[n+26|0]=K[o+44|0];H[n+11|0]=K[o+45|0];H[n+27|0]=K[o+46|0];H[n+12|0]=K[o+47|0];H[n+28|0]=K[o+48|0];H[n+13|0]=K[o+49|0];H[n+29|0]=K[o+50|0];H[n+14|0]=K[o+51|0];H[n+30|0]=K[o+52|0];H[n+15|0]=K[o+53|0];H[n+31|0]=K[o+54|0];H[n+16|0]=K[o+55|0];H[n+32|0]=K[o+56|0];H[n+17|0]=K[o+57|0];H[n+33|0]=K[o+58|0];H[n+18|0]=K[o+59|0];H[n+34|0]=K[o+60|0];H[n+19|0]=K[o+61|0];H[n+35|0]=K[o+62|0];H[n+20|0]=K[o+63|0];H[n+36|0]=K[o+64|0];H[n+21|0]=K[o+65|0];H[n+37|0]=K[o+66|0];H[n+22|0]=K[o+67|0];H[n+38|0]=K[o+68|0];H[n+23|0]=K[o+69|0];H[n+39|0]=K[o+70|0];break L}H[n+8|0]=K[o+39|0]?3:0;H[n+24|0]=K[o+40|0]?3:0;H[n+9|0]=K[o+41|0]?3:0;H[n+25|0]=K[o+42|0]?3:0;H[n+10|0]=K[o+43|0]?3:0;H[n+26|0]=K[o+44|0]?3:0;H[n+11|0]=K[o+45|0]?3:0;H[n+27|0]=K[o+46|0]?3:0;H[n+12|0]=K[o+47|0]?3:0;H[n+28|0]=K[o+48|0]?3:0;H[n+13|0]=K[o+49|0]?3:0;H[n+29|0]=K[o+50|0]?3:0;H[n+14|0]=K[o+51|0]?3:0;H[n+30|0]=K[o+52|0]?3:0;H[n+15|0]=K[o+53|0]?3:0;H[n+31|0]=K[o+54|0]?3:0;H[n+16|0]=K[o+55|0]?3:0;H[n+32|0]=K[o+56|0]?3:0;H[n+17|0]=K[o+57|0]?3:0;H[n+33|0]=K[o+58|0]?3:0;H[n+18|0]=K[o+59|0]?3:0;H[n+34|0]=K[o+60|0]?3:0;H[n+19|0]=K[o+61|0]?3:0;H[n+35|0]=K[o+62|0]?3:0;H[n+20|0]=K[o+63|0]?3:0;H[n+36|0]=K[o+64|0]?3:0;H[n+21|0]=K[o+65|0]?3:0;H[n+37|0]=K[o+66|0]?3:0;H[n+22|0]=K[o+67|0]?3:0;H[n+38|0]=K[o+68|0]?3:0;H[n+23|0]=K[o+69|0]?3:0;H[n+39|0]=K[o+70|0]?3:0;break L;case 7:J[n>>2]=2;x=J[o+108>>2];h=P(x,6)+161520|0;J[n+4>>2]=K[h|0];q=1;s=o+21|0;p=K[h+4|0];t=p&1;k=s+P(t,6)|0;h=(y<<9)+319216|0;H[n+40|0]=(P(K[(K[k|0]<<1)+h|0],31)+127>>>0)/255;H[n+52|0]=(P(K[h+(K[k+1|0]<<1)|0],31)+127>>>0)/255;H[n+41|0]=(P(K[h+(K[k+2|0]<<1)|0],31)+127>>>0)/255;H[n+53|0]=(P(K[h+(K[k+3|0]<<1)|0],31)+127>>>0)/255;H[n+42|0]=(P(K[h+(K[k+4|0]<<1)|0],31)+127>>>0)/255;H[n+54|0]=(P(K[h+(K[k+5|0]<<1)|0],31)+127>>>0)/255;k=s+((p^-87041>>>x)&1?6:0)|0;H[n+44|0]=(P(K[h+(K[k|0]<<1)|0],31)+127>>>0)/255;H[n+56|0]=(P(K[h+(K[k+1|0]<<1)|0],31)+127>>>0)/255;H[n+45|0]=(P(K[h+(K[k+2|0]<<1)|0],31)+127>>>0)/255;H[n+57|0]=(P(K[h+(K[k+3|0]<<1)|0],31)+127>>>0)/255;H[n+46|0]=(P(K[h+(K[k+4|0]<<1)|0],31)+127>>>0)/255;H[n+58|0]=(P(K[h+(K[k+5|0]<<1)|0],31)+127>>>0)/255;k=s+P(t^J[(p<<1&508)+172076>>2],6)|0;H[n+48|0]=(P(K[h+(K[k|0]<<1)|0],31)+127>>>0)/255;H[n+60|0]=(P(K[h+(K[k+1|0]<<1)|0],31)+127>>>0)/255;H[n+49|0]=(P(K[h+(K[k+2|0]<<1)|0],31)+127>>>0)/255;H[n+61|0]=(P(K[h+(K[k+3|0]<<1)|0],31)+127>>>0)/255;H[n+50|0]=(P(K[h+(K[k+4|0]<<1)|0],31)+127>>>0)/255;H[n+62|0]=(P(K[h+(K[k+5|0]<<1)|0],31)+127>>>0)/255;H[n+8|0]=K[o+39|0];H[n+9|0]=K[o+40|0];H[n+10|0]=K[o+41|0];H[n+11|0]=K[o+42|0];H[n+12|0]=K[o+43|0];H[n+13|0]=K[o+44|0];H[n+14|0]=K[o+45|0];H[n+15|0]=K[o+46|0];H[n+16|0]=K[o+47|0];H[n+17|0]=K[o+48|0];H[n+18|0]=K[o+49|0];H[n+19|0]=K[o+50|0];H[n+20|0]=K[o+51|0];H[n+21|0]=K[o+52|0];H[n+22|0]=K[o+53|0];H[n+23|0]=K[o+54|0];break K;case 8:k=(K[o+115|0]<<3)+329968|0;q=(K[o+114|0]<<3)+329968|0;p=(K[o+113|0]<<3)+329968|0;s=(K[o+112|0]<<3)+329968|0;h=L[k+4>>1]+(L[q+4>>1]+(L[p+4>>1]+L[s+4>>1]|0)|0)|0;k=L[k>>1]+(L[q>>1]+(L[p>>1]+L[s>>1]|0)|0)|0;if(!(!k|!h)){J[n>>2]=5;H[n+40|0]=K[((K[o+112|0]<<2)+332016|0)+2|0];H[n+52|0]=K[((K[o+112|0]<<2)+332016|0)+3|0];H[n+41|0]=K[((K[o+113|0]<<2)+332016|0)+2|0];H[n+53|0]=K[((K[o+113|0]<<2)+332016|0)+3|0];H[n+42|0]=K[((K[o+114|0]<<2)+332016|0)+2|0];h=K[((K[o+114|0]<<2)+332016|0)+3|0];J[n+8>>2]=16843009;J[n+12>>2]=16843009;H[n+54|0]=h;J[n+16>>2]=16843009;J[n+20>>2]=16843009;h=K[o+115|0];H[n+55|0]=h;H[n+43|0]=h;break L}J[n>>2]=6;k=h>>>0>>0;h=k<<2;H[n+40|0]=K[(h+((K[o+112|0]<<3)+329968|0)|0)+2|0];H[n+52|0]=K[(h+((K[o+112|0]<<3)+329968|0)|0)+3|0];H[n+41|0]=K[(h+((K[o+113|0]<<3)+329968|0)|0)+2|0];H[n+53|0]=K[(h+((K[o+113|0]<<3)+329968|0)|0)+3|0];H[n+42|0]=K[(h+((K[o+114|0]<<3)+329968|0)|0)+2|0];H[n+54|0]=K[(h+((K[o+114|0]<<3)+329968|0)|0)+3|0];H[n+43|0]=K[(h+((K[o+115|0]<<3)+329968|0)|0)+2|0];h=K[(h+((K[o+115|0]<<3)+329968|0)|0)+3|0];J[n+68>>2]=k;J[n+64>>2]=k;H[n+55|0]=h;J[n+8>>2]=84215045;J[n+12>>2]=84215045;J[n+16>>2]=84215045;J[n+20>>2]=84215045;break L;case 9:case 16:J[n>>2]=7;h=P(J[o+108>>2],6)+161328|0;J[n+4>>2]=K[h|0];t=n- -64|0;r=n+52|0;A=n+40|0;p=o+21|0;v=K[h+4|0];s=0;D=x-15>>>0>2;x=y<<9;k=1;while(1){h=x+319216|0;y=h;ca:{if(!D){E=s<<2;q=E+p|0;T=Q(Q(K[h+(K[q|0]<<1)|0])/Q(255));N[e+32>>2]=T;z=K[h+(K[q+1|0]<<1)|0];N[e+36>>2]=T;N[e+40>>2]=T;T=Q(Q(z>>>0)/Q(255));N[e+16>>2]=T;N[e+20>>2]=T;N[e+24>>2]=T;N[e+44>>2]=Q(K[h+(K[q+2|0]<<1)|0])/Q(255);h=E|3;break ca}q=x+319216|0;E=s<<3;h=E+p|0;N[e+32>>2]=Q(K[q+(K[h|0]<<1)|0])/Q(255);N[e+36>>2]=Q(K[q+(K[h+2|0]<<1)|0])/Q(255);N[e+40>>2]=Q(K[q+(K[h+4|0]<<1)|0])/Q(255);N[e+44>>2]=Q(K[q+(K[h+6|0]<<1)|0])/Q(255);N[e+16>>2]=Q(K[q+(K[h+1|0]<<1)|0])/Q(255);N[e+20>>2]=Q(K[q+(K[h+3|0]<<1)|0])/Q(255);N[e+24>>2]=Q(K[q+(K[h+5|0]<<1)|0])/Q(255);h=E|7}N[e+28>>2]=Q(K[y+(K[h+p|0]<<1)|0])/Q(255);J[e+8>>2]=0;J[e+12>>2]=0;J[e+4>>2]=0;J[e>>2]=0;Mv(4,5,e+32|0,e+16|0,e+4|0,e,e+8|0);h=s^v;q=h<<2;J[q+A>>2]=J[e+4>>2];J[q+r>>2]=J[e>>2];h=t+(h<<3)|0;J[h>>2]=J[e+8>>2];J[h+4>>2]=J[e+12>>2];h=k&1;k=0;s=1;if(h){continue}break};H[n+8|0]=K[o+39|0];H[n+9|0]=K[o+40|0];H[n+10|0]=K[o+41|0];H[n+11|0]=K[o+42|0];H[n+12|0]=K[o+43|0];H[n+13|0]=K[o+44|0];H[n+14|0]=K[o+45|0];H[n+15|0]=K[o+46|0];H[n+16|0]=K[o+47|0];H[n+17|0]=K[o+48|0];H[n+18|0]=K[o+49|0];H[n+19|0]=K[o+50|0];H[n+20|0]=K[o+51|0];H[n+21|0]=K[o+52|0];H[n+22|0]=K[o+53|0];H[n+23|0]=K[o+54|0];break L;case 1:break M;default:break K}}J[n>>2]=3;N[e+32>>2]=Q(K[o+21|0])/Q(255);N[e+36>>2]=Q(K[o+23|0])/Q(255);h=K[o+25|0];J[e+44>>2]=1065353216;N[e+40>>2]=Q(h>>>0)/Q(255);N[e+16>>2]=Q(K[o+22|0])/Q(255);N[e+20>>2]=Q(K[o+24|0])/Q(255);h=K[o+26|0];J[e+28>>2]=1065353216;N[e+24>>2]=Q(h>>>0)/Q(255);J[e+4>>2]=0;J[e>>2]=0;Mv(3,7,e+32|0,e+16|0,e+4|0,e,e+8|0);H[n+42|0]=K[e+6|0];I[n+40>>1]=L[e+4>>1];I[n+44>>1]=L[e+4>>1];H[n+46|0]=K[e+6|0];h=K[e|0];H[n+52|0]=h;H[n+56|0]=h;h=K[e+1|0];H[n+57|0]=h;H[n+53|0]=h;h=K[e+2|0];H[n+58|0]=h;H[n+54|0]=h;h=J[e+8>>2];J[n+64>>2]=h;k=J[e+12>>2];J[n+76>>2]=k;J[n+72>>2]=h;J[n+68>>2]=k;H[n+8|0]=K[o+39|0];H[n+9|0]=K[o+40|0];H[n+10|0]=K[o+41|0];H[n+11|0]=K[o+42|0];H[n+12|0]=K[o+43|0];H[n+13|0]=K[o+44|0];H[n+14|0]=K[o+45|0];H[n+15|0]=K[o+46|0];H[n+16|0]=K[o+47|0];H[n+17|0]=K[o+48|0];H[n+18|0]=K[o+49|0];H[n+19|0]=K[o+50|0];H[n+20|0]=K[o+51|0];H[n+21|0]=K[o+52|0];H[n+22|0]=K[o+53|0];H[n+23|0]=K[o+54|0]}q=1}Ui=e+48|0;break I}Z(109157,40075,13218,103434);B()}if(!q){break c}q=Ui-112|0;Ui=q;s=J[w>>2];t=K[s+166048|0];Ca=s-4|0;h=163792;da:{if(Ca>>>0<3){break da}e=J[w+4>>2]<<4;h=e+163808|0;if(1<>2];J[q+96>>2]=J[w+8>>2];J[q+100>>2]=e;e=J[w+20>>2];J[q+104>>2]=J[w+16>>2];J[q+108>>2]=e;e=J[w+36>>2];J[q+88>>2]=J[w+32>>2];J[q+92>>2]=e;e=J[w+28>>2];J[q+80>>2]=J[w+24>>2];J[q+84>>2]=e;J[q+72>>2]=K[w+48|0]|K[w+49|0]<<8|(K[w+50|0]<<16|K[w+51|0]<<24);e=K[w+44|0]|K[w+45|0]<<8|(K[w+46|0]<<16|K[w+47|0]<<24);J[q+64>>2]=K[w+40|0]|K[w+41|0]<<8|(K[w+42|0]<<16|K[w+43|0]<<24);J[q+68>>2]=e;J[q+56>>2]=K[w+60|0]|K[w+61|0]<<8|(K[w+62|0]<<16|K[w+63|0]<<24);e=K[w+56|0]|K[w+57|0]<<8|(K[w+58|0]<<16|K[w+59|0]<<24);J[q+48>>2]=K[w+52|0]|K[w+53|0]<<8|(K[w+54|0]<<16|K[w+55|0]<<24);J[q+52>>2]=e;e=J[w+84>>2];J[q+32>>2]=J[w+80>>2];J[q+36>>2]=e;e=J[w+76>>2];J[q+24>>2]=J[w+72>>2];J[q+28>>2]=e;e=J[w+68>>2];J[q+16>>2]=J[w+64>>2];J[q+20>>2]=e;J[q+8>>2]=-1;J[q>>2]=-1;J[q+4>>2]=-1;Ma=t>>>0<=1?1:t;ca=s&-3;Da=J[w+88>>2];n=1<>>1|0;e=0;A=K[q+95|0];v=K[q+94|0];E=K[q+93|0];D=K[q+92|0];Y=K[q+91|0];z=K[q+90|0];_=K[q+89|0];na=K[q+88|0];ga=K[q+87|0];ha=K[q+86|0];la=K[q+85|0];ma=K[q+84|0];ra=K[q+83|0];sa=K[q+82|0];ia=K[q+81|0];ja=K[q+80|0];fa=K[q+111|0];ea=K[q+110|0];y=K[q+109|0];W=K[q+108|0];oa=K[q+107|0];pa=K[q+106|0];qa=K[q+105|0];ua=K[q+104|0];ya=K[q+103|0];za=K[q+102|0];r=K[q+101|0];Aa=K[q+100|0];Ba=K[q+99|0];wa=K[q+98|0];Ea=K[q+97|0];Fa=K[q+96|0];Ga=s&-2;xa=(Ga|0)!=4;while(1){x=e<<2;p=x+q|0;if(e){o=J[w+4>>2]+165920|0;ea:{if(!((e|0)!=1|ca)){break ea}k=J[w+4>>2];o=k+165984|0;if(!((e|0)!=2|ca)){break ea}o=k+165856|0}k=K[o|0]}else{k=0}J[p>>2]=k;fa:{if(K[k+(q+96|0)|0]&Na){if(K[h|0]==(e|0)){Fa=n+(Fa^-1|-256)|0;H[q+96|0]=Fa}if(K[h+1|0]==(e|0)){Ea=n+(Ea^-1|-256)|0;H[q+97|0]=Ea}if(K[h+2|0]==(e|0)){wa=n+(wa^-1|-256)|0;H[q+98|0]=wa}if(K[h+3|0]==(e|0)){Ba=n+(Ba^-1|-256)|0;H[q+99|0]=Ba}if(K[h+4|0]==(e|0)){Aa=n+(Aa^-1|-256)|0;H[q+100|0]=Aa}if(K[h+5|0]==(e|0)){r=n+(r^-1|-256)|0;H[q+101|0]=r}if(K[h+6|0]==(e|0)){za=n+(za^-1|-256)|0;H[q+102|0]=za}if(K[h+7|0]==(e|0)){ya=n+(ya^-1|-256)|0;H[q+103|0]=ya}if(K[h+8|0]==(e|0)){ua=n+(ua^-1|-256)|0;H[q+104|0]=ua}if(K[h+9|0]==(e|0)){qa=n+(qa^-1|-256)|0;H[q+105|0]=qa}if(K[h+10|0]==(e|0)){pa=n+(pa^-1|-256)|0;H[q+106|0]=pa}if(K[h+11|0]==(e|0)){oa=n+(oa^-1|-256)|0;H[q+107|0]=oa}if(K[h+12|0]==(e|0)){W=n+(W^-1|-256)|0;H[q+108|0]=W}if(K[h+13|0]==(e|0)){y=n+(y^-1|-256)|0;H[q+109|0]=y}if(K[h+14|0]==(e|0)){ea=n+(ea^-1|-256)|0;H[q+110|0]=ea}if(K[h+15|0]==(e|0)){fa=n+(fa^-1|-256)|0;H[q+111|0]=fa}p=x+(q- -64|0)|0;ga:{if((Ga|0)!=4){F=K[p|0]|K[p+1|0]<<8|(K[p+2|0]<<16|K[p+3|0]<<24);o=x+(q+48|0)|0;C=K[o|0]|K[o+1|0]<<8|(K[o+2|0]<<16|K[o+3|0]<<24);H[p|0]=C;H[p+1|0]=C>>>8;H[p+2|0]=C>>>16;H[p+3|0]=C>>>24;H[o|0]=F;H[o+1|0]=F>>>8;H[o+2|0]=F>>>16;H[o+3|0]=F>>>24;if((s|0)!=1){break ga}break fa}F=K[p|0];o=x+(q+48|0)|0;H[p|0]=K[o|0];H[o|0]=F;F=K[p+1|0];H[p+1|0]=K[o+1|0];H[o+1|0]=F;F=K[p+2|0];H[p+2|0]=K[o+2|0];H[o+2|0]=F}p=(q+16|0)+(e<<3)|0;o=J[p>>2];J[p>>2]=pxa(o,J[p+4>>2],32);J[p+4>>2]=Yi}if(xa){break fa}o=K[k+(q+80|0)|0];k=1<>>1)){break fa}if(K[h|0]==(e|0)){ja=k+(ja^-1|-256)|0;H[q+80|0]=ja}if(K[h+1|0]==(e|0)){ia=k+(ia^-1|-256)|0;H[q+81|0]=ia}if(K[h+2|0]==(e|0)){sa=k+(sa^-1|-256)|0;H[q+82|0]=sa}if(K[h+3|0]==(e|0)){ra=k+(ra^-1|-256)|0;H[q+83|0]=ra}if(K[h+4|0]==(e|0)){ma=k+(ma^-1|-256)|0;H[q+84|0]=ma}if(K[h+5|0]==(e|0)){la=k+(la^-1|-256)|0;H[q+85|0]=la}if(K[h+6|0]==(e|0)){ha=k+(ha^-1|-256)|0;H[q+86|0]=ha}if(K[h+7|0]==(e|0)){ga=k+(ga^-1|-256)|0;H[q+87|0]=ga}if(K[h+8|0]==(e|0)){na=k+(na^-1|-256)|0;H[q+88|0]=na}if(K[h+9|0]==(e|0)){_=k+(_^-1|-256)|0;H[q+89|0]=_}if(K[h+10|0]==(e|0)){z=k+(z^-1|-256)|0;H[q+90|0]=z}if(K[h+11|0]==(e|0)){Y=k+(Y^-1|-256)|0;H[q+91|0]=Y}if(K[h+12|0]==(e|0)){D=k+(D^-1|-256)|0;H[q+92|0]=D}if(K[h+13|0]==(e|0)){E=k+(E^-1|-256)|0;H[q+93|0]=E}if(K[h+14|0]==(e|0)){v=k+(v^-1|-256)|0;H[q+94|0]=v}if(K[h+15|0]==(e|0)){A=k+(A^-1|-256)|0;H[q+95|0]=A}k=x+(q- -64|0)|0;p=K[k+3|0];o=k;k=x+(q+48|0)|0;H[o+3|0]=K[k+3|0];H[k+3|0]=p}e=e+1|0;if((Ma|0)!=(e|0)){continue}break};H[i|0]=0;H[i+1|0]=0;H[i+2|0]=0;H[i+3|0]=0;H[i+4|0]=0;H[i+5|0]=0;H[i+6|0]=0;H[i+7|0]=0;H[i+8|0]=0;H[i+9|0]=0;H[i+10|0]=0;H[i+11|0]=0;H[i+12|0]=0;H[i+13|0]=0;H[i+14|0]=0;H[i+15|0]=0;ha:{ia:{ja:{n=s+1|0;if(n>>>0>32){break ja}k=1<>>0>=32){e=0;h=0}else{e=0;h=k>>>n|0}if(h|e){break ja}ka:{la:{if(!n){y=0;break la}h=k;while(1){p=(e>>>3|0)+i|0;o=p;r=K[p|0];p=e&7;H[o|0]=r|h<>>0>>0?e:n;e=o+p|0;h=h>>>p|0;n=n-p|0;if(n){continue}break}if(e>>>0>=129){break ia}ma:{y=(s&-2)==4;if(!y){break ma}na:{h=J[w+92>>2];if(h>>>0<4){n=2;while(1){p=(e>>>3|0)+i|0;o=p;r=K[p|0];p=e&7;H[o|0]=r|h<>>0>>0?e:n;e=o+p|0;h=h>>>p|0;n=n-p|0;if(n){continue}break}if(e>>>0>=129){break ia}if((s|0)!=4){break ma}h=J[w+88>>2];if(h>>>0>=2){break ja}n=(e>>>3|0)+i|0;H[n|0]=K[n|0]|h<<(e&7);if((e|0)==128){break na}e=e+1|0;break ka}break ja}break ia}if(Ca>>>0<3){break ka}}h=J[w+4>>2];n=k&142;p=n?6:4;if((p&63)>>>0>=32){o=0;p=0}else{o=0;p=h>>>p|0}if(p|o){break ja}n=n?6:4;while(1){p=(e>>>3|0)+i|0;o=p;r=K[p|0];p=e&7;H[o|0]=r|h<>>0>>0?e:n;e=o+p|0;h=h>>>p|0;n=n-p|0;if(n){continue}break}if(e>>>0>=129){break ia}}r=t>>>0<=1?1:t;A=s>>>0>3?4:3;x=0;while(1){v=(q+48|0)+x|0;D=(q- -64|0)+x|0;p=0;oa:{while(1){E=p<<2;h=K[E+D|0];z=(x|0)==3;if(z){n=H[s+166072|0]}else{n=K[s+166064|0]}if(n>>>0>32){break ja}if((n&63)>>>0>=32){o=0;C=0}else{o=0;C=h>>>n|0}if(C|o){break ja}if(n){while(1){o=(e>>>3|0)+i|0;C=o;ta=K[o|0];o=e&7;H[C|0]=ta|h<>>0>>0?e:n;e=C+o|0;h=h>>>o|0;n=n-o|0;if(n){continue}break}if(e>>>0>128){break ia}}h=K[v+E|0];if(z){n=H[s+166072|0]}else{n=K[s+166064|0]}if(n>>>0>32){break ja}if((n&63)>>>0>=32){o=0;z=0}else{o=0;z=h>>>n|0}if(z|o){break ja}pa:{if(n){while(1){o=(e>>>3|0)+i|0;z=o;C=K[o|0];o=e&7;H[z|0]=C|h<>>0>>0?e:n;e=z+o|0;h=h>>>o|0;n=n-o|0;if(n){continue}break}if(e>>>0>=129){break pa}}p=p+1|0;if((r|0)==(p|0)){break oa}continue}break}break ia}x=x+1|0;if((A|0)!=(x|0)){continue}break}if(!(k&52)){k=t>>>0<=1?1:t;n=0;while(1){p=(q+16|0)+(n<<3)|0;h=J[p>>2];if(h>>>0>=2){break ja}o=(e>>>3|0)+i|0;H[o|0]=K[o|0]|h<<(e&7);h=e+1|0;if(h>>>0>=129){break ia}qa:{if((s|0)==1){e=h;break qa}p=J[p+4>>2];if(p>>>0>=2){break ja}o=(h>>>3|0)+i|0;H[o|0]=K[o|0]|p<<(h&7);e=e+2|0;if(e>>>0>=129){break ia}}n=n+1|0;if((k|0)!=(n|0)){continue}break}}p=0;k=J[q+8>>2];x=J[q+4>>2];t=J[q>>2];ra:{while(1){h=J[w+88>>2];sa:{if(h){n=K[s+166080|0]-h|0;h=q+80|0;break sa}n=K[s+166056|0];h=q+96|0}r=p<<2;n=n-((r|0)==(t|0)|(r|0)==(x|0)|(k|0)==(r|0))|0;if(n>>>0>32){break ja}h=K[h+r|0];if((n&63)>>>0>=32){o=0;v=0}else{o=0;v=h>>>n|0}if(v|o){break ja}ta:{if(n){while(1){o=(e>>>3|0)+i|0;v=o;z=K[o|0];o=e&7;H[v|0]=z|h<>>0>>0?e:n;e=v+o|0;h=h>>>o|0;n=n-o|0;if(n){continue}break}if(e>>>0>=129){break ta}}h=r|1;n=J[w+88>>2];ua:{if(n){o=q+80|0;n=K[s+166080|0]-n|0;break ua}o=q+96|0;n=K[s+166056|0]}n=n-((h|0)==(t|0)|(h|0)==(x|0)|(h|0)==(k|0))|0;if(n>>>0>32){break ja}h=K[h+o|0];if((n&63)>>>0>=32){o=0;v=0}else{o=0;v=h>>>n|0}if(v|o){break ja}if(n){while(1){o=(e>>>3|0)+i|0;v=o;z=K[o|0];o=e&7;H[v|0]=z|h<>>0>>0?e:n;e=v+o|0;h=h>>>o|0;n=n-o|0;if(n){continue}break}if(e>>>0>128){break ta}}h=r|2;n=J[w+88>>2];va:{if(n){o=q+80|0;n=K[s+166080|0]-n|0;break va}o=q+96|0;n=K[s+166056|0]}n=n-((h|0)==(t|0)|(h|0)==(x|0)|(h|0)==(k|0))|0;if(n>>>0>32){break ja}h=K[h+o|0];if((n&63)>>>0>=32){o=0;v=0}else{o=0;v=h>>>n|0}if(v|o){break ja}if(n){while(1){o=(e>>>3|0)+i|0;v=o;z=K[o|0];o=e&7;H[v|0]=z|h<>>0>>0?e:n;e=v+o|0;h=h>>>o|0;n=n-o|0;if(n){continue}break}if(e>>>0>128){break ta}}h=r|3;n=J[w+88>>2];wa:{if(n){o=q+80|0;n=K[s+166080|0]-n|0;break wa}o=q+96|0;n=K[s+166056|0]}n=n-((h|0)==(t|0)|(h|0)==(x|0)|(h|0)==(k|0))|0;if(n>>>0>32){break ja}h=K[h+o|0];if((n&63)>>>0>=32){o=0;r=0}else{o=0;r=h>>>n|0}if(r|o){break ja}if(n){while(1){o=(e>>>3|0)+i|0;r=o;v=K[o|0];o=e&7;H[r|0]=v|h<>>0>>0?e:n;e=r+o|0;h=h>>>o|0;n=n-o|0;if(n){continue}break}if(e>>>0>128){break ta}}p=p+1|0;if((p|0)==4){break ra}continue}break}break ia}xa:{if(!y){break xa}p=0;while(1){h=J[w+88>>2];ya:{if(h){n=h+K[s+166056|0]|0;h=q+96|0;break ya}n=K[s+166080|0];h=q+80|0}y=p<<2;n=n-((y|0)==(t|0)|(x|0)==(y|0)|(k|0)==(y|0))|0;if(n>>>0>32){break ja}h=K[h+y|0];if((n&63)>>>0>=32){o=0;r=0}else{o=0;r=h>>>n|0}if(r|o){break ja}za:{if(n){while(1){o=(e>>>3|0)+i|0;r=o;v=K[o|0];o=e&7;H[r|0]=v|h<>>0>>0?e:n;e=r+o|0;h=h>>>o|0;n=n-o|0;if(n){continue}break}if(e>>>0>=129){break za}}h=y|1;n=J[w+88>>2];Aa:{if(n){o=q+96|0;n=n+K[s+166056|0]|0;break Aa}o=q+80|0;n=K[s+166080|0]}n=n-((h|0)==(t|0)|(h|0)==(x|0)|(h|0)==(k|0))|0;if(n>>>0>32){break ja}h=K[h+o|0];if((n&63)>>>0>=32){o=0;r=0}else{o=0;r=h>>>n|0}if(r|o){break ja}if(n){while(1){o=(e>>>3|0)+i|0;r=o;v=K[o|0];o=e&7;H[r|0]=v|h<>>0>>0?e:n;e=r+o|0;h=h>>>o|0;n=n-o|0;if(n){continue}break}if(e>>>0>128){break za}}h=y|2;n=J[w+88>>2];Ba:{if(n){o=q+96|0;n=n+K[s+166056|0]|0;break Ba}o=q+80|0;n=K[s+166080|0]}n=n-((h|0)==(t|0)|(h|0)==(x|0)|(h|0)==(k|0))|0;if(n>>>0>32){break ja}h=K[h+o|0];if((n&63)>>>0>=32){o=0;r=0}else{o=0;r=h>>>n|0}if(r|o){break ja}if(n){while(1){o=(e>>>3|0)+i|0;r=o;v=K[o|0];o=e&7;H[r|0]=v|h<>>0>>0?e:n;e=r+o|0;h=h>>>o|0;n=n-o|0;if(n){continue}break}if(e>>>0>128){break za}}h=y|3;n=J[w+88>>2];Ca:{if(n){o=q+96|0;n=n+K[s+166056|0]|0;break Ca}o=q+80|0;n=K[s+166080|0]}n=n-((h|0)==(t|0)|(h|0)==(x|0)|(h|0)==(k|0))|0;if(n>>>0>32){break ja}h=K[h+o|0];if((n&63)>>>0>=32){o=0;r=0}else{o=0;r=h>>>n|0}if(r|o){break ja}if(n){while(1){o=(e>>>3|0)+i|0;r=o;y=K[o|0];o=e&7;H[r|0]=y|h<>>0>>0?e:n;e=r+o|0;h=h>>>o|0;n=n-o|0;if(n){continue}break}if(e>>>0>128){break za}}p=p+1|0;if((p|0)==4){break xa}continue}break}break ia}if((e|0)==128){Ui=q+112|0;break ha}Z(103066,40075,11725,51113);B()}Z(144468,40075,11546,18512);B()}Z(103085,40075,11555,18512);B()}break g;case 5:e=w+104|0;if(!Sm(d,e,0,1)){break c}m=(m|0)<0?3:m;l=(l|0)>0?l:0;h=J[w+208>>2];if((h|0)!=8){pn(h,J[w+212>>2],u,e,w);pz(i,l+w|0);pz(i+8|0,m+w|0);break g}e=K[l+u|0];H[i+2|0]=0;H[i+3|0]=0;H[i+4|0]=0;H[i+5|0]=0;H[i+1|0]=e;H[i|0]=e;H[i+6|0]=0;H[i+7|0]=0;e=K[m+u|0];H[i+10|0]=0;H[i+11|0]=0;H[i+12|0]=0;H[i+13|0]=0;H[i+9|0]=e;H[i+8|0]=e;H[i+14|0]=0;H[i+15|0]=0;break g;case 4:e=w+104|0;if(!Sm(d,e,0,1)){break c}l=(l|0)>0?l:0;h=J[w+208>>2];if((h|0)!=8){pn(h,J[w+212>>2],u,e,w);pz(i,l+w|0);break g}e=K[l+u|0];H[i+2|0]=0;H[i+3|0]=0;H[i+4|0]=0;H[i+5|0]=0;H[i+1|0]=e;H[i|0]=e;H[i+6|0]=0;H[i+7|0]=0;break g;case 3:e=0;s=Ui-224|0;Ui=s;o=Sm(d,s+72|0,0,1);Da:{if(!o){break Da}k=J[s+176>>2];if((k|0)==8){h=K[s+187|0];k=0;H[i+2|0]=0;H[i+3|0]=0;H[i+4|0]=0;H[i+5|0]=0;H[i+1|0]=h;H[i|0]=h;H[i+6|0]=0;H[i+7|0]=0;n=1;p=170;q=(K[s+186|0]<<1)+318192|0;x=(K[s+185|0]<<1)+318704|0;y=(K[s+184|0]<<1)+318192|0;h=K[q+1|0]|(K[x+1|0]<<5|K[y+1|0]<<11);q=K[q|0]|(K[x|0]<<5|K[y|0]<<11);Ea:{if((h|0)==(q|0)){if(!q){p=85;break Ea}p=0;h=q-1|0}if(h>>>0<=q>>>0){n=q;k=h;break Ea}p=p|85;n=h;k=q}H[i+10|0]=k;H[i+8|0]=n;h=P(p,16843009);H[i+12|0]=h;H[i+13|0]=h>>>8;H[i+14|0]=h>>>16;H[i+15|0]=h>>>24;H[i+11|0]=k>>>8;H[i+9|0]=n>>>8;break Da}h=i+8|0;n=k;k=s+72|0;pn(n,J[s+180>>2],s+184|0,k,s);pz(i,s|3);if(K[s+188|0]==1){xU(k,h);break Da}if(K[s+189|0]==1){wU(s+72|0,s,h);break Da}TE(h,s,0)}Ui=s+224|0;if(!o){break b}break g;case 2:e=0;p=Ui-224|0;Ui=p;s=Sm(d,p+72|0,0,1);Fa:{if(!s){break Fa}h=J[p+176>>2];if((h|0)==8){k=1;q=170;h=(K[p+186|0]<<1)+318192|0;o=(K[p+185|0]<<1)+318704|0;x=(K[p+184|0]<<1)+318192|0;n=K[h+1|0]|(K[o+1|0]<<5|K[x+1|0]<<11);h=K[h|0]|(K[o|0]<<5|K[x|0]<<11);Ga:{if((n|0)==(h|0)){if(!h){q=85;h=0;break Ga}q=0;n=h-1|0}if(h>>>0>=n>>>0){k=h;h=n;break Ga}q=q|85;k=n}H[i+2|0]=h;H[i|0]=k;n=P(q,16843009);H[i+4|0]=n;H[i+5|0]=n>>>8;H[i+6|0]=n>>>16;H[i+7|0]=n>>>24;H[i+3|0]=h>>>8;H[i+1|0]=k>>>8;break Fa}if(K[p+188|0]==1){xU(p+72|0,i);break Fa}k=h;h=p+72|0;pn(k,J[p+180>>2],p+184|0,h,p);if(K[p+189|0]==1){wU(h,p,i);break Fa}TE(i,p,0)}Ui=p+224|0;if(!s){break b}break g;case 1:e=w+104|0;if(!Sm(d,e,0,1)){break c}h=J[w+208>>2];if((h|0)!=8){pn(h,J[w+212>>2],u,e,w)}e=w+104|0;nz(e,w,i);vU(e,w,i+8|0);break g;case 0:e=w+104|0;if(!Sm(d,e,0,1)){break c}h=J[w+208>>2];if((h|0)!=8){pn(h,J[w+212>>2],u,e,w)}vU(w+104|0,w,i);break g;case 30:break q}}e=K[d+4|0]|K[d+5|0]<<8|(K[d+6|0]<<16|K[d+7|0]<<24);h=K[d|0]|K[d+1|0]<<8|(K[d+2|0]<<16|K[d+3|0]<<24);H[i|0]=h;H[i+1|0]=h>>>8;H[i+2|0]=h>>>16;H[i+3|0]=h>>>24;H[i+4|0]=e;H[i+5|0]=e>>>8;H[i+6|0]=e>>>16;H[i+7|0]=e>>>24;e=K[d+12|0]|K[d+13|0]<<8|(K[d+14|0]<<16|K[d+15|0]<<24);h=K[d+8|0]|K[d+9|0]<<8|(K[d+10|0]<<16|K[d+11|0]<<24);H[i+8|0]=h;H[i+9|0]=h>>>8;H[i+10|0]=h>>>16;H[i+11|0]=h>>>24;H[i+12|0]=e;H[i+13|0]=e>>>8;H[i+14|0]=e>>>16;H[i+15|0]=e>>>24;break g}e=X<<2;if((e|0)==(j|0)){break h}n=(e+U<<1)+a|0;h=0;while(1){e=0;while(1){k=((h<<4)+w|0)+(e<<2)|0;s=K[k|0];o=K[k+1|0];x=(e<<1)+n|0;y=P(K[k+2|0],15)+128|0;y=(y>>>8|0)+y>>>4|0;k=P(K[k+3|0],15)+128|0;H[x|0]=y&240|(k>>>8|0)+k>>>8;k=P(s,15)+128|0;r=(k>>>8|0)+k<<4&61440;k=P(o,15)+128|0;H[x+1|0]=(y|(r|(k>>>8|0)+k&16128))>>>8;e=e+1|0;if((q|0)!=(e|0)){continue}break}n=n+V|0;h=h+1|0;if((ba|0)!=(h|0)){continue}break}break h}n=(e+U<<1)+a|0;k=0;if(!La){while(1){e=0;while(1){s=(e<<1)+n|0;h=((k<<4)+w|0)+(e<<2)|0;o=P(K[h+1|0],63)+128|0;r=(o>>>8|0)+o>>>3&8160;o=P(K[h+2|0],31)+128|0;h=P(K[h|0],31)+128|0;h=r|(o>>>8|0)+o<<3&260096|(h>>>8|0)+h>>>8;H[s|0]=h;H[s+1|0]=h>>>8;e=e+1|0;if((q|0)!=(e|0)){continue}break}n=n+V|0;k=k+1|0;if((ba|0)!=(k|0)){continue}break i}}while(1){e=0;while(1){s=(e<<1)+n|0;h=((k<<4)+w|0)+(e<<2)|0;o=P(K[h+1|0],63)+128|0;r=(o>>>8|0)+o>>>3&8160;o=P(K[h|0],31)+128|0;h=P(K[h+2|0],31)+128|0;h=r|(o>>>8|0)+o<<3&260096|(h>>>8|0)+h>>>8;H[s|0]=h;H[s+1|0]=h>>>8;e=e+1|0;if((q|0)!=(e|0)){continue}break}n=n+V|0;k=k+1|0;if((ba|0)!=(k|0)){continue}break}break i}e=X<<2;if((e|0)==(j|0)){break j}k=(e+U<<2)+a|0;h=0;while(1){n=0;while(1){p=n<<2;e=p+k|0;p=p+((h<<4)+w|0)|0;H[e|0]=K[p|0];H[e+1|0]=K[p+1|0];H[e+2|0]=K[p+2|0];H[e+3|0]=K[p+3|0];n=n+1|0;if((q|0)!=(n|0)){continue}break}k=k+Oa|0;h=h+1|0;if((ba|0)!=(h|0)){continue}break}break j}Z(21823,40075,9434,70577);B()}Z(21765,40075,9463,70577);B()}Z(21765,40075,9492,70577);B()}if(!s){break c}break g}if(!p){break c}break g}if(!p){break c}}ka=ka-4|0;i=g+i|0;d=d+16|0;X=X+1|0;if((X|0)!=(b|0)){continue}break}$=$-4|0;e=1;M=M+1|0;if((M|0)!=(c|0)){continue}break}break b}Z(72594,40075,9298,70577);B()}Z(114101,40075,9515,70577);B()}if((f|0)==7){y=d;ka=a;x=c;n=0;r=Ui-384|0;Ui=r;Ha:{Ia:{Ja:{Ka:{La:{o=b;Ma:{if(!o|!c){break Ma}if((nxa(o<<2)|0)!=1){break Ma}if((nxa(c<<2)|0)!=1){break Ma}J[r+12>>2]=0;J[r+4>>2]=0;J[r+8>>2]=0;e=P(c,o);if(e){An(r+4|0,e,(e|0)==1,4);z=J[r+4>>2];a=J[r+8>>2];ij(z+(a<<2)|0,0,e-a<<2);J[r+8>>2]=e}s=r+344|0;Na:{while(1){u=P(n,o);d=0;Oa:{while(1){p=d+u|0;a=r+232|0;if(!Sm(y+(p<<4)|0,a,0,0)){break Na}b=0;pn(J[r+336>>2],J[r+340>>2],s,a,r+160|0);k=255;j=255;i=255;a=255;A=0;l=0;m=0;c=0;while(1){h=A&255;f=(r+160|0)+(b<<2)|0;g=K[f+3|0];A=g>>>0>>0?h:g;l=l&255;h=K[f+2|0];l=h>>>0>>0?l:h;m=m&255;q=K[f+1|0];m=m>>>0>q>>>0?m:q;c=c&255;f=K[f|0];c=c>>>0>f>>>0?c:f;k=k&255;k=g>>>0>k>>>0?k:g;g=j&255;j=g>>>0>>0?g:h;g=i&255;i=g>>>0>>0?g:q;a=a&255;a=a>>>0>>0?a:f;b=b+1|0;if((b|0)!=16){continue}break}Pa:{if((k|0)==255){b=K[i+169584|0];a=K[a+169584|0];if((b|a)>>>0>=32){break Ia}a=a<<10|b<<5|K[j+169840|0]<<1|32768;break Pa}b=K[i+169840|0];a=K[a+169840|0];if((b|a)>>>0>15){break Ja}f=K[j+171376|0];g=K[k+171120|0];if((f|g)>>>0>=8){break Ja}a=f<<1&254|(b<<4&240|(a<<8|g<<12))}Qa:{if(A-239>>>0<=16){f=K[l+170096|0];b=K[m+170096|0];c=K[c+170096|0];if((f|(b|c))>>>0>=32){break Ka}a=a|(f|(b<<5|c<<10))<<16|-2147483648;break Qa}if(A>>>0>238){break La}f=K[l+170352|0];b=K[m+170352|0];c=K[c+170352|0];if((f|(b|c))>>>0>=16){break La}a=a|(K[A+171632|0]<<28|(f|(b<<4|c<<8))<<16)}if(e>>>0>p>>>0){J[(p<<2)+z>>2]=a;d=d+1|0;if((o|0)==(d|0)){break Oa}continue}break}break a}n=n+1|0;if((x|0)!=(n|0)){continue}break}if((x|0)<=0){break Na}ba=o-1|0;a=ba?32-S(ba)|0:0;na=x-1|0;b=na?32-S(na)|0:0;ga=a>>>0>>0?a:b;ha=ga<<1;ya=-1<>2]=e;d=J[e+(ba<<2)>>2];Ra:{if(d&32768){A=(d>>>1&15)+171920|0;i=(d>>>10&31)+171888|0;g=(d>>>5&31)+171888|0;a=255;break Ra}A=(d>>>1&7)+171936|0;i=(d>>>8&15)+171920|0;g=(d>>>4&15)+171920|0;a=K[(d>>>12&7)+171944|0]}b=f+(r+160|0)|0;J[b>>2]=K[A|0]+(K[i|0]+(K[g|0]+a|0)|0);a=d>>>16|0;Sa:{if((d|0)<0){A=(a&31)+171888|0;i=(d>>>26&31)+171888|0;a=255;d=(d>>>21&31)+171888|0;break Sa}A=(a&15)+171920|0;i=(d>>>24&15)+171920|0;a=K[(d>>>28|0)+171944|0];d=(d>>>20&15)+171920|0}f=f+(r+96|0)|0;J[f>>2]=K[A|0]+(K[i|0]+(K[d|0]+a|0)|0);d=J[e>>2];Ta:{if(d&32768){A=(d>>>1&15)+171920|0;i=(d>>>10&31)+171888|0;g=(d>>>5&31)+171888|0;a=255;break Ta}A=(d>>>1&7)+171936|0;i=(d>>>8&15)+171920|0;g=(d>>>4&15)+171920|0;a=K[(d>>>12&7)+171944|0]}J[b+16>>2]=K[A|0]+(K[i|0]+(K[g|0]+a|0)|0);a=d>>>16|0;Ua:{if((d|0)<0){A=(a&31)+171888|0;i=(d>>>26&31)+171888|0;a=255;d=(d>>>21&31)+171888|0;break Ua}A=(a&15)+171920|0;i=(d>>>24&15)+171920|0;a=K[(d>>>28|0)+171944|0];d=(d>>>20&15)+171920|0}J[f+16>>2]=K[A|0]+(K[i|0]+(K[d|0]+a|0)|0);e=J[e+Aa>>2];Va:{if(e&32768){A=(e>>>5&31)+171888|0;k=(e>>>10&31)+171888|0;i=255;a=(e>>>1&15)+171920|0;break Va}A=(e>>>4&15)+171920|0;k=(e>>>8&15)+171920|0;i=K[(e>>>12&7)+171944|0];a=(e>>>1&7)+171936|0}J[b+32>>2]=K[a|0]+(K[k|0]+(K[A|0]+i|0)|0);a=e>>>16|0;Wa:{if((e|0)<0){d=(a&31)+171888|0;A=(e>>>26&31)+171888|0;b=(e>>>21&31)+171888|0;a=255;break Wa}d=(a&15)+171920|0;A=(e>>>24&15)+171920|0;b=(e>>>20&15)+171920|0;a=K[(e>>>28|0)+171944|0]}J[f+32>>2]=K[d|0]+(K[A|0]+(K[b|0]+a|0)|0);c=c+1|0;if((c|0)!=3){continue}break}c=J[r+96>>2];d=J[r+160>>2];Xa:{if((o|0)<=0){a=c;b=d;break Xa}Ba=L[((E&255)<<1)+170608>>1]|L[(E>>>7&33554430)+170608>>1]<<16;wa=E>>>ga<>2];s=J[r+104>>2];n=J[r+184>>2];u=J[r+168>>2];k=J[r+116>>2];l=J[r+100>>2];q=J[r+112>>2];i=J[r+180>>2];m=J[r+164>>2];j=J[r+176>>2];Ea=J[r+92>>2];Fa=J[r+88>>2];Oa=J[r+84>>2];while(1){b=j;a=q;h=p;e=r+232|0;if(Sm(y+(F<<4)|0,e,0,0)){pn(J[r+336>>2],J[r+340>>2],za,e,r+16|0)}f=k;e=i;g=n;i=Ba|L[(A>>>7&33554430)+170608>>1]<<17|L[((A&255)<<1)+170608>>1]<<1;Ya:{if((o|0)==(x|0)){break Ya}j=i&ya;i=j|A>>>ga<>>0>x>>>0){break Ya}i=j|wa}p=(i<<3)+ka|0;J[p+4>>2]=J[(F<<2)+z>>2];A=A+1|0;D=(ba&A)<<2;t=J[D+Oa>>2];Za:{if(t&32768){q=(t>>>5&31)+171888|0;j=(t>>>10&31)+171888|0;k=255;i=(t>>>1&15)+171920|0;break Za}q=(t>>>4&15)+171920|0;j=(t>>>8&15)+171920|0;k=K[(t>>>12&7)+171944|0];i=(t>>>1&7)+171936|0}n=t>>>16|0;V=K[q|0];G=K[j|0];aa=K[i|0];_a:{if((t|0)<0){n=(n&31)+171888|0;j=(t>>>21&31)+171888|0;q=(t>>>26&31)+171888|0;i=255;break _a}n=(n&15)+171920|0;j=(t>>>20&15)+171920|0;q=(t>>>24&15)+171920|0;i=K[(t>>>28|0)+171944|0]}t=K[j|0];q=K[q|0];U=K[n|0];n=J[D+Fa>>2];$a:{if(n&32768){$=(n>>>5&31)+171888|0;v=(n>>>10&31)+171888|0;X=255;j=(n>>>1&15)+171920|0;break $a}$=(n>>>4&15)+171920|0;v=(n>>>8&15)+171920|0;X=K[(n>>>12&7)+171944|0];j=(n>>>1&7)+171936|0}k=k+V|0;t=i+t|0;i=n>>>16|0;$=K[$|0]+X|0;V=K[v|0];C=K[j|0];ab:{if((n|0)<0){j=(i&31)+171888|0;v=(n>>>21&31)+171888|0;X=(n>>>26&31)+171888|0;i=255;break ab}j=(i&15)+171920|0;v=(n>>>20&15)+171920|0;X=(n>>>24&15)+171920|0;i=K[(n>>>28|0)+171944|0]}k=k+G|0;q=q+t|0;ca=V+$|0;Y=K[X|0]+(i+K[v|0]|0)|0;fa=K[j|0];D=J[D+Ea>>2];bb:{if(D&32768){$=(D>>>1&15)+171920|0;v=(D>>>5&31)+171888|0;la=255;X=(D>>>10&31)+171888|0;break bb}$=(D>>>1&7)+171936|0;v=(D>>>4&15)+171920|0;la=K[(D>>>12&7)+171944|0];X=(D>>>8&15)+171920|0}ma=D>>>16|0;t=p;i=b+e|0;ja=P(i,6);ra=ja+(d+m<<1)|0;j=(K[r+23|0]+(K[r+22|0]+(K[r+21|0]+K[r+20|0]|0)|0)<<8)-(ra<<4)|0;p=0-j|0;n=j;j=a+f|0;ea=P(j,6);Ka=ea+(c+l<<1)|0;La=(Ka|0)<(ra|0);n=La?p:n;G=b+d|0;p=e+m|0;V=G+p|0;M=(K[r+19|0]+(K[r+18|0]+(K[r+17|0]+K[r+16|0]|0)|0)<<8)-(V<<6)|0;W=0-M|0;ta=M;M=a+c|0;_=f+l|0;Ca=M+_<<2;Ma=V<<2;Da=(Ca|0)<(Ma|0);V=Da?W:ta;oa=P(p,6);sa=oa+(G<<1)|0;G=(K[r+35|0]+(K[r+34|0]+(K[r+33|0]+K[r+32|0]|0)|0)<<8)-(sa<<4)|0;pa=P(_,6);Na=pa+(M<<1)|0;Ga=(Na|0)<(sa|0);G=Ga?0-G|0:G;M=d;W=P(b,3);qa=P(m,3);d=P(e,9);ia=M+(W+(qa+d|0)|0)|0;M=(K[r+39|0]+(K[r+38|0]+(K[r+37|0]+K[r+36|0]|0)|0)<<8)-(ia<<4)|0;ua=P(f,9);xa=ua+P(l,3)|0;Ha=P(a,3);Ra=(xa+Ha|0)+c|0;Sa=(Ra|0)<(ia|0);c=Sa?0-M|0:M;M=(K[r+27|0]+(K[r+26|0]+(K[r+25|0]+K[r+24|0]|0)|0)<<8)-(i<<7)|0;Ta=j<<3;Ua=i<<3;Ia=(Ta|0)<(Ua|0);M=Ia?0-M|0:M;i=C+ca|0;j=k+aa|0;ja=ja+(i+j<<1)|0;k=(K[r+31|0]+(K[r+30|0]+(K[r+29|0]+K[r+28|0]|0)|0)<<8)-(ja<<4)|0;ta=0-k|0;C=k;k=Y+fa|0;q=q+U|0;Ja=ea+(k+q<<1)|0;Va=(Ja|0)<(ja|0);aa=Va?ta:C;U=P(e,12);fa=U+(b<<2)|0;C=(K[r+43|0]+(K[r+42|0]+(K[r+41|0]+K[r+40|0]|0)|0)<<8)-(fa<<4)|0;Y=0-C|0;ta=C;C=P(f,12);Wa=C+(a<<2)|0;Xa=(Wa|0)<(fa|0);ca=Xa?Y:ta;ta=P(i,3);ea=ta+((d+W|0)+j|0)|0;Y=(K[r+47|0]+(K[r+46|0]+(K[r+45|0]+K[r+44|0]|0)|0)<<8)-(ea<<4)|0;W=q+Ha|0;Ha=ua+P(k,3)|0;Ya=W+Ha|0;Za=(Ya|0)<(ea|0);Y=Za?0-Y|0:Y;W=(K[r+51|0]+(K[r+50|0]+(K[r+49|0]+K[r+48|0]|0)|0)<<8)-(p<<7)|0;_a=_<<3;$a=p<<3;ab=(_a|0)<($a|0);p=ab?0-W|0:W;W=U+(m<<2)|0;m=(K[r+55|0]+(K[r+54|0]+(K[r+53|0]+K[r+52|0]|0)|0)<<8)-(W<<4)|0;bb=C+(l<<2)|0;cb=(bb|0)<(W|0);l=cb?0-m|0:m;oa=oa+(g+u<<1)|0;m=(K[r+67|0]+(K[r+66|0]+(K[r+65|0]+K[r+64|0]|0)|0)<<8)-(oa<<4)|0;db=pa+(h+s<<1)|0;eb=(db|0)<(oa|0);m=eb?0-m|0:m;fb=P(g,3);pa=qa+(d+(fb+u|0)|0)|0;u=(K[r+71|0]+(K[r+70|0]+(K[r+69|0]+K[r+68|0]|0)|0)<<8)-(pa<<4)|0;s=s+xa|0;xa=P(h,3);gb=s+xa|0;hb=(gb|0)<(pa|0);s=hb?0-u|0:u;u=K[r+59|0]+(K[r+58|0]+(K[r+57|0]+(K[r+56|0]-e|0)|0)|0)<<8;ib=f<<4;jb=e<<4;kb=(ib|0)<(jb|0);u=kb?0-u|0:u;qa=U+(i<<2)|0;_=(K[r+63|0]+(K[r+62|0]+(K[r+61|0]+K[r+60|0]|0)|0)<<8)-(qa<<4)|0;lb=C+(k<<2)|0;vb=(lb|0)<(qa|0);_=vb?0-_|0:_;ua=U+(g<<2)|0;U=(K[r+75|0]+(K[r+74|0]+(K[r+73|0]+K[r+72|0]|0)|0)<<8)-(ua<<4)|0;wb=C+(h<<2)|0;xb=(wb|0)<(ua|0);U=xb?0-U|0:U;C=Ka-ra|0;C=La?0-C|0:C;C=(n|0)>(P(C,13)|0)?12:(n|0)>C<<3?8:((n|0)>(P(C,3)|0))<<2;n=Ca-Ma|0;n=Da?0-n|0:n;C=C|((V|0)>(P(n,13)|0)?3:(V|0)>n<<3?2:(V|0)>(P(n,3)|0));n=Na-sa|0;n=Ga?0-n|0:n;G=C|((G|0)>(P(n,13)|0)?768:(G|0)>n<<3?512:((G|0)>(P(n,3)|0))<<8);n=Ra-ia|0;n=Sa?0-n|0:n;n=G|((c|0)>(P(n,13)|0)?3072:(c|0)>n<<3?2048:((c|0)>(P(n,3)|0))<<10);c=Ta-Ua|0;c=Ia?0-c|0:c;n=n|((M|0)>(P(c,13)|0)?48:(M|0)>c<<3?32:((M|0)>(P(c,3)|0))<<4);c=Ja-ja|0;c=Va?0-c|0:c;n=n|((aa|0)>(P(c,13)|0)?192:(aa|0)>c<<3?128:((aa|0)>(P(c,3)|0))<<6);c=Wa-fa|0;c=Xa?0-c|0:c;n=n|((ca|0)>(P(c,13)|0)?12288:(ca|0)>c<<3?8192:((ca|0)>(P(c,3)|0))<<12);c=Ya-ea|0;c=Za?0-c|0:c;n=n|((Y|0)>(P(c,13)|0)?49152:(Y|0)>c<<3?32768:((Y|0)>(P(c,3)|0))<<14);c=_a-$a|0;c=ab?0-c|0:c;n=n|((p|0)>(P(c,13)|0)?196608:(p|0)>c<<3?131072:((p|0)>(P(c,3)|0))<<16);c=bb-W|0;c=cb?0-c|0:c;l=n|((l|0)>(P(c,13)|0)?786432:(l|0)>c<<3?524288:((l|0)>(P(c,3)|0))<<18);c=db-oa|0;c=eb?0-c|0:c;l=l|((m|0)>(P(c,13)|0)?50331648:(m|0)>c<<3?33554432:((m|0)>(P(c,3)|0))<<24);c=gb-pa|0;c=hb?0-c|0:c;l=l|((s|0)>(P(c,13)|0)?201326592:(s|0)>c<<3?134217728:((s|0)>(P(c,3)|0))<<26);c=ib-jb|0;c=kb?0-c|0:c;l=l|((u|0)>(P(c,13)|0)?3145728:(u|0)>c<<3?2097152:((u|0)>(P(c,3)|0))<<20);c=lb-qa|0;c=vb?0-c|0:c;l=l|((_|0)>(P(c,13)|0)?12582912:(_|0)>c<<3?8388608:((_|0)>(P(c,3)|0))<<22);c=wb-ua|0;c=xb?0-c|0:c;m=l|((U|0)>(P(c,13)|0)?805306368:(U|0)>c<<3?536870912:((U|0)>(P(c,3)|0))<<28);n=K[$|0]+(K[X|0]+(la+K[v|0]|0)|0)|0;d=n+(ta+(d+fb|0)|0)|0;c=(K[r+79|0]+(K[r+78|0]+(K[r+77|0]+K[r+76|0]|0)|0)<<8)-(d<<4)|0;G=0-c|0;cb:{if((D|0)<0){$=(D>>>21&31)+171888|0;v=(D>>>26&31)+171888|0;X=255;l=(ma&31)+171888|0;break cb}$=(D>>>20&15)+171920|0;v=(D>>>24&15)+171920|0;X=K[(D>>>28|0)+171944|0];l=(ma&15)+171920|0}p=K[l|0]+(K[v|0]+(K[$|0]+X|0)|0)|0;l=p+(xa+Ha|0)|0;s=(l|0)<(d|0);c=s?G:c;d=l-d|0;d=s?0-d|0:d;J[t>>2]=((c|0)>(P(d,13)|0)?-1073741824:(c|0)>d<<3?-2147483648:((c|0)>(P(d,3)|0))<<30)|m;F=F+1|0;s=h;u=g;l=f;m=e;d=b;c=a;if((o|0)!=(A|0)){continue}break}J[r+180>>2]=i;J[r+164>>2]=e;J[r+176>>2]=j;J[r+112>>2]=q;J[r+116>>2]=k;J[r+100>>2]=f;J[r+184>>2]=n;J[r+168>>2]=u;J[r+120>>2]=p;J[r+104>>2]=h}J[r+96>>2]=a;J[r+160>>2]=b;E=E+1|0;if((x|0)!=(E|0)){continue}break}z=J[r+4>>2]}if(!z){break Ma}cj(z)}Ui=r+384|0;break Ha}Z(143939,40075,3215,6807);B()}Z(144226,40075,3198,6807);B()}Z(143896,40075,3208,6807);B()}Z(144092,40075,3191,6807);B()}e=1;break b}x=d;i=a;s=c;c=0;u=Ui-384|0;Ui=u;db:{eb:{fb:{o=b;gb:{if(!o|!s){break gb}if((nxa(o<<2)|0)!=1){break gb}if((nxa(s<<2)|0)!=1){break gb}J[u+12>>2]=0;J[u+4>>2]=0;J[u+8>>2]=0;a=P(o,s);if(a){An(u+4|0,a,(a|0)==1,4);r=J[u+4>>2];b=J[u+8>>2];ij(r+(b<<2)|0,0,a-b<<2);J[u+8>>2]=a}ya=u+344|0;hb:{while(1){za=P(c,o);d=0;ib:{while(1){ua=d+za|0;b=u+232|0;if(!Sm(x+(ua<<4)|0,b,0,0)){break hb}pn(J[u+336>>2],J[u+340>>2],ya,b,u+160|0);b=K[u+162|0];e=K[u+166|0];g=b>>>0>e>>>0?b:e;f=K[u+170|0];h=f>>>0>>0?g:f;g=K[u+174|0];j=g>>>0>>0?h:g;h=K[u+178|0];k=h>>>0>>0?j:h;j=K[u+182|0];l=j>>>0>>0?k:j;k=K[u+186|0];m=k>>>0>>0?l:k;l=K[u+190|0];n=l>>>0>>0?m:l;m=K[u+194|0];q=m>>>0>>0?n:m;n=K[u+198|0];p=n>>>0>>0?q:n;q=K[u+202|0];ka=q>>>0

>>0?p:q;p=K[u+206|0];y=p>>>0>>0?ka:p;ka=K[u+210|0];t=y>>>0>ka>>>0?y:ka;y=K[u+214|0];A=t>>>0>y>>>0?t:y;t=K[u+218|0];X=t>>>0>>0?A:t;A=K[u+222|0];Aa=A>>>0>>0?X:A;X=K[u+161|0];v=K[u+165|0];$=v>>>0>>0?X:v;D=K[u+169|0];E=D>>>0<$>>>0?$:D;$=K[u+173|0];z=E>>>0>$>>>0?E:$;E=K[u+177|0];ba=E>>>0>>0?z:E;z=K[u+181|0];F=z>>>0>>0?ba:z;ba=K[u+185|0];V=F>>>0>ba>>>0?F:ba;F=K[u+189|0];G=F>>>0>>0?V:F;V=K[u+193|0];M=G>>>0>V>>>0?G:V;G=K[u+197|0];aa=G>>>0>>0?M:G;M=K[u+201|0];U=M>>>0>>0?aa:M;aa=K[u+205|0];C=U>>>0>aa>>>0?U:aa;U=K[u+209|0];ca=C>>>0>U>>>0?C:U;C=K[u+213|0];Y=C>>>0>>0?ca:C;ca=K[u+217|0];_=Y>>>0>ca>>>0?Y:ca;Y=K[u+221|0];Ba=_>>>0>Y>>>0?_:Y;_=K[u+160|0];na=K[u+164|0];ha=_>>>0>na>>>0?_:na;ga=K[u+168|0];la=ga>>>0>>0?ha:ga;ha=K[u+172|0];ma=ha>>>0>>0?la:ha;la=K[u+176|0];ra=la>>>0>>0?ma:la;ma=K[u+180|0];sa=ma>>>0>>0?ra:ma;ra=K[u+184|0];ia=ra>>>0>>0?sa:ra;sa=K[u+188|0];ja=ia>>>0>sa>>>0?ia:sa;ia=K[u+192|0];fa=ia>>>0>>0?ja:ia;ja=K[u+196|0];ea=fa>>>0>ja>>>0?fa:ja;fa=K[u+200|0];W=fa>>>0>>0?ea:fa;ea=K[u+204|0];oa=W>>>0>ea>>>0?W:ea;W=K[u+208|0];pa=W>>>0>>0?oa:W;oa=K[u+212|0];qa=oa>>>0>>0?pa:oa;pa=K[u+216|0];wa=pa>>>0>>0?qa:pa;qa=K[u+220|0];wa=qa>>>0>>0?wa:qa;b=b>>>0>>0?b:e;b=b>>>0>>0?b:f;b=b>>>0>>0?b:g;b=b>>>0>>0?b:h;b=b>>>0>>0?b:j;b=b>>>0>>0?b:k;b=b>>>0>>0?b:l;b=b>>>0>>0?b:m;b=b>>>0>>0?b:n;b=b>>>0>>0?b:q;b=b>>>0

>>0?b:p;b=b>>>0>>0?b:ka;b=b>>>0>>0?b:y;b=b>>>0>>0?b:t;b=b>>>0>>0?b:A;e=v>>>0>X>>>0?X:v;e=e>>>0>>0?e:D;e=e>>>0<$>>>0?e:$;e=e>>>0>>0?e:E;e=e>>>0>>0?e:z;e=e>>>0>>0?e:ba;e=e>>>0>>0?e:F;e=e>>>0>>0?e:V;e=e>>>0>>0?e:G;e=e>>>0>>0?e:M;e=e>>>0>>0?e:aa;e=e>>>0>>0?e:U;e=e>>>0>>0?e:C;e=e>>>0>>0?e:ca;e=e>>>0>>0?e:Y;f=_>>>0>>0?_:na;f=f>>>0>>0?f:ga;f=f>>>0>>0?f:ha;f=f>>>0>>0?f:la;f=f>>>0>>0?f:ma;f=f>>>0>>0?f:ra;f=f>>>0>>0?f:sa;f=f>>>0>>0?f:ia;f=f>>>0>>0?f:ja;f=f>>>0>>0?f:fa;f=f>>>0>>0?f:ea;f=f>>>0>>0?f:W;f=f>>>0>>0?f:oa;f=f>>>0>>0?f:pa;f=f>>>0>>0?f:qa;if(a>>>0>ua>>>0){J[(ua<<2)+r>>2]=K[(f&255)+169584|0]<<10&31744|K[(e&255)+169584|0]<<5|K[(b&255)+169840|0]<<1|(K[(Aa&255)+170096|0]|(K[(Ba&255)+170096|0]<<5|K[(wa&255)+170096|0]<<10))<<16|-2147450880;d=d+1|0;if((o|0)==(d|0)){break ib}continue}break}break a}c=c+1|0;if((s|0)!=(c|0)){continue}break}if(!J[u+8>>2]){break a}if((s|0)<=0){break hb}r=o-1|0;a=r?32-S(r)|0:0;ca=s-1|0;b=ca?32-S(ca)|0:0;Y=a>>>0>>0?a:b;_=Y<<1;oa=-1<<_^-1;na=J[u+4>>2];pa=u+344|0;qa=(r&1)<<2;X=0;y=0;while(1){e=y-1|0;g=0;jb:{while(1){c=g<<2;b=na+(P(o,ca&e+g)<<2)|0;J[c+(u+84|0)>>2]=b;a=J[b+(r<<2)>>2];if(!(a&32768)){break eb}d=c+(u+160|0)|0;f=a&30;J[d>>2]=(P((f+(a>>>5&31)|0)+(a>>>10&31)+(f>>>4)|0,255)>>>0)/31;kb:{if((a|0)>=0){break kb}c=c+(u+96|0)|0;J[c>>2]=(P(((a>>>26&31)+(a>>>21&31)|0)+(a>>>16&31)|0,255)>>>0)/31;a=J[b>>2];if(!(a&32768)){break eb}f=a&30;J[d+16>>2]=(P((f+(a>>>5&31)|0)+(a>>>10&31)+(f>>>4)|0,255)>>>0)/31;if((a|0)>=0){break kb}J[c+16>>2]=(P(((a>>>26&31)+(a>>>21&31)|0)+(a>>>16&31)|0,255)>>>0)/31;a=J[b+qa>>2];if(!(a&32768)){break eb}b=a&30;J[d+32>>2]=(P((b+(a>>>5&31)|0)+(a>>>10&31)+(b>>>4)|0,255)>>>0)/31;if((a|0)>=0){break kb}J[c+32>>2]=(P(((a>>>26&31)+(a>>>21&31)|0)+(a>>>16&31)|0,255)>>>0)/31;g=g+1|0;if((g|0)==3){break jb}continue}break}break fb}c=J[u+96>>2];d=J[u+160>>2];lb:{if((o|0)<=0){a=c;b=d;break lb}ua=L[((y&255)<<1)+170608>>1]|L[(y>>>7&33554430)+170608>>1]<<16;ya=y>>>Y<<_;A=0;k=J[u+120>>2];q=J[u+104>>2];l=J[u+184>>2];p=J[u+168>>2];j=J[u+116>>2];m=J[u+100>>2];n=J[u+112>>2];g=J[u+180>>2];h=J[u+164>>2];ka=J[u+176>>2];za=J[u+92>>2];Aa=J[u+88>>2];Ba=J[u+84>>2];mb:{while(1){b=ka;a=n;e=u+232|0;if(Sm(x+(X<<4)|0,e,0,0)){pn(J[u+336>>2],J[u+340>>2],pa,e,u+16|0)}e=ua|L[(A>>>7&33554430)+170608>>1]<<17|L[((A&255)<<1)+170608>>1]<<1;nb:{if((o|0)==(s|0)){break nb}f=e&oa;e=f|A>>>Y<<_;if(o>>>0>s>>>0){break nb}e=f|ya}wa=(e<<3)+i|0;J[wa+4>>2]=J[na+(X<<2)>>2];A=A+1|0;v=(r&A)<<2;e=J[v+Ba>>2];if(e&32768){f=e&30;ka=(P((f+(e>>>5&31)|0)+(e>>>10&31)+(f>>>4)|0,255)>>>0)/31|0;if((e|0)>=0){break fb}n=(P(((e>>>26&31)+(e>>>21&31)|0)+(e>>>16&31)|0,255)>>>0)/31|0;t=J[v+Aa>>2];if(!(t&32768)){break eb}e=g;f=t&30;g=(P((f+(t>>>5&31)|0)+(t>>>10&31)+(f>>>4)|0,255)>>>0)/31|0;if((t|0)>=0){break fb}f=j;j=(P(((t>>>26&31)+(t>>>21&31)|0)+(t>>>16&31)|0,255)>>>0)/31|0;t=J[v+za>>2];if(!(t&32768)){break eb}if((t|0)>=0){break fb}ba=b+e|0;F=P(ba,6);ga=F+(d+h<<1)|0;v=(K[u+22|0]+(K[u+21|0]+K[u+20|0]|0)<<8)-(ga<<4)|0;V=a+f|0;G=P(V,6);Ea=G+(c+m<<1)|0;Fa=(Ea|0)<(ga|0);v=Fa?0-v|0:v;E=b+d|0;D=e+h|0;$=E+D|0;z=(K[u+18|0]+(K[u+17|0]+K[u+16|0]|0)<<8)-($<<6)|0;M=0-z|0;C=z;z=a+c|0;U=f+m|0;Oa=z+U<<2;Ka=$<<2;La=(Oa|0)<(Ka|0);$=La?M:C;C=P(D,6);ha=C+(E<<1)|0;E=(K[u+34|0]+(K[u+33|0]+K[u+32|0]|0)<<8)-(ha<<4)|0;fa=P(U,6);Ca=fa+(z<<1)|0;Ma=(Ca|0)<(ha|0);E=Ma?0-E|0:E;z=d;aa=P(b,3);ea=P(h,3);d=P(e,9);la=z+(aa+(ea+d|0)|0)|0;z=(K[u+38|0]+(K[u+37|0]+K[u+36|0]|0)<<8)-(la<<4)|0;M=c;c=P(f,9);W=c+P(m,3)|0;ia=P(a,3);Da=M+(W+ia|0)|0;Na=(Da|0)<(la|0);z=Na?0-z|0:z;M=(K[u+26|0]+(K[u+25|0]+K[u+24|0]|0)<<8)-(ba<<7)|0;Ga=V<<3;xa=ba<<3;Ha=(Ga|0)<(xa|0);ba=Ha?0-M|0:M;ma=F+(g+ka<<1)|0;F=(K[u+30|0]+(K[u+29|0]+K[u+28|0]|0)<<8)-(ma<<4)|0;Ra=G+(j+n<<1)|0;Sa=(Ra|0)<(ma|0);F=Sa?0-F|0:F;V=P(e,12);ra=V+(b<<2)|0;G=(K[u+42|0]+(K[u+41|0]+K[u+40|0]|0)<<8)-(ra<<4)|0;ta=0-G|0;M=G;G=P(f,12);Ta=G+(a<<2)|0;Ua=(Ta|0)<(ra|0);M=Ua?ta:M;Ia=P(g,3);sa=Ia+((d+aa|0)+ka|0)|0;aa=(K[u+46|0]+(K[u+45|0]+K[u+44|0]|0)<<8)-(sa<<4)|0;Ja=c+P(j,3)|0;Va=Ja+(n+ia|0)|0;Wa=(Va|0)<(sa|0);aa=Wa?0-aa|0:aa;c=(K[u+50|0]+(K[u+49|0]+K[u+48|0]|0)<<8)-(D<<7)|0;Xa=U<<3;ta=D<<3;Ya=(Xa|0)<(ta|0);D=Ya?0-c|0:c;ia=V+(h<<2)|0;c=(K[u+54|0]+(K[u+53|0]+K[u+52|0]|0)<<8)-(ia<<4)|0;Za=G+(m<<2)|0;_a=(Za|0)<(ia|0);h=_a?0-c|0:c;c=l;ja=C+(c+p<<1)|0;m=(K[u+66|0]+(K[u+65|0]+K[u+64|0]|0)<<8)-(ja<<4)|0;$a=fa+(k+q<<1)|0;ab=($a|0)<(ja|0);m=ab?0-m|0:m;bb=P(c,3);fa=ea+(d+(bb+p|0)|0)|0;p=(K[u+70|0]+(K[u+69|0]+K[u+68|0]|0)<<8)-(fa<<4)|0;l=q+W|0;q=k;cb=P(k,3);db=l+cb|0;eb=(db|0)<(fa|0);p=eb?0-p|0:p;U=K[u+58|0]+(K[u+57|0]+(K[u+56|0]-e|0)|0)<<8;fb=f<<4;gb=e<<4;hb=(fb|0)<(gb|0);U=hb?0-U|0:U;ea=V+(g<<2)|0;C=(K[u+62|0]+(K[u+61|0]+K[u+60|0]|0)<<8)-(ea<<4)|0;ib=G+(j<<2)|0;jb=(ib|0)<(ea|0);C=jb?0-C|0:C;W=V+(c<<2)|0;l=(K[u+74|0]+(K[u+73|0]+K[u+72|0]|0)<<8)-(W<<4)|0;kb=G+(k<<2)|0;lb=(kb|0)<(W|0);V=lb?0-l|0:l;k=t&30;l=(P((k+(t>>>5&31)|0)+(t>>>10&31)+(k>>>4)|0,255)>>>0)/31|0;G=l+(Ia+(d+bb|0)|0)|0;d=(K[u+78|0]+(K[u+77|0]+K[u+76|0]|0)<<8)-(G<<4)|0;k=(P(((t>>>26&31)+(t>>>21&31)|0)+(t>>>16&31)|0,255)>>>0)/31|0;Ia=k+(Ja+cb|0)|0;Ja=(Ia|0)<(G|0);d=Ja?0-d|0:d;t=Ea-ga|0;t=Fa?0-t|0:t;v=(v|0)>(P(t,13)|0)?12:(v|0)>t<<3?8:((v|0)>(P(t,3)|0))<<2;t=Oa-Ka|0;t=La?0-t|0:t;v=v|(($|0)>(P(t,13)|0)?3:($|0)>t<<3?2:($|0)>(P(t,3)|0));t=Ca-ha|0;t=Ma?0-t|0:t;v=v|((E|0)>(P(t,13)|0)?768:(E|0)>t<<3?512:((E|0)>(P(t,3)|0))<<8);t=Da-la|0;t=Na?0-t|0:t;v=v|((z|0)>(P(t,13)|0)?3072:(z|0)>t<<3?2048:((z|0)>(P(t,3)|0))<<10);t=Ga-xa|0;t=Ha?0-t|0:t;v=v|((ba|0)>(P(t,13)|0)?48:(ba|0)>t<<3?32:((ba|0)>(P(t,3)|0))<<4);t=Ra-ma|0;t=Sa?0-t|0:t;v=v|((F|0)>(P(t,13)|0)?192:(F|0)>t<<3?128:((F|0)>(P(t,3)|0))<<6);t=Ta-ra|0;t=Ua?0-t|0:t;v=v|((M|0)>(P(t,13)|0)?12288:(M|0)>t<<3?8192:((M|0)>(P(t,3)|0))<<12);t=Va-sa|0;t=Wa?0-t|0:t;v=v|((aa|0)>(P(t,13)|0)?49152:(aa|0)>t<<3?32768:((aa|0)>(P(t,3)|0))<<14);t=Xa-ta|0;t=Ya?0-t|0:t;v=v|((D|0)>(P(t,13)|0)?196608:(D|0)>t<<3?131072:((D|0)>(P(t,3)|0))<<16);t=Za-ia|0;t=_a?0-t|0:t;t=v|((h|0)>(P(t,13)|0)?786432:(h|0)>t<<3?524288:((h|0)>(P(t,3)|0))<<18);h=$a-ja|0;h=ab?0-h|0:h;m=t|((m|0)>(P(h,13)|0)?50331648:(m|0)>h<<3?33554432:((m|0)>(P(h,3)|0))<<24);h=db-fa|0;h=eb?0-h|0:h;m=m|((p|0)>(P(h,13)|0)?201326592:(p|0)>h<<3?134217728:((p|0)>(P(h,3)|0))<<26);h=fb-gb|0;h=hb?0-h|0:h;m=m|((U|0)>(P(h,13)|0)?3145728:(U|0)>h<<3?2097152:((U|0)>(P(h,3)|0))<<20);h=ib-ea|0;h=jb?0-h|0:h;m=m|((C|0)>(P(h,13)|0)?12582912:(C|0)>h<<3?8388608:((C|0)>(P(h,3)|0))<<22);h=kb-W|0;h=lb?0-h|0:h;m=m|((V|0)>(P(h,13)|0)?805306368:(V|0)>h<<3?536870912:((V|0)>(P(h,3)|0))<<28);h=Ia-G|0;h=Ja?0-h|0:h;J[wa>>2]=m|((d|0)>(P(h,13)|0)?-1073741824:(d|0)>h<<3?-2147483648:((d|0)>(P(h,3)|0))<<30);X=X+1|0;p=c;m=f;h=e;d=b;c=a;if((o|0)==(A|0)){break mb}continue}break}break eb}J[u+128>>2]=n;J[u+192>>2]=ka;J[u+196>>2]=g;J[u+132>>2]=j;J[u+200>>2]=l;J[u+136>>2]=k;J[u+176>>2]=ka;J[u+180>>2]=g;J[u+164>>2]=h;J[u+112>>2]=n;J[u+116>>2]=j;J[u+100>>2]=m;J[u+184>>2]=l;J[u+168>>2]=p;J[u+120>>2]=k;J[u+104>>2]=q}J[u+96>>2]=a;J[u+160>>2]=b;y=y+1|0;if((s|0)!=(y|0)){continue}break}}a=J[u+4>>2];if(!a){break gb}cj(a)}Ui=u+384|0;break db}Z(111668,40075,3363,109988);B()}Z(111668,40075,3348,111447);B()}e=1;break b}e=0}Ui=w+256|0;return e}Z(58877,54122,366,84789);B()}function FQ(a){var b=0,c=0,d=Q(0),e=0,f=0,g=Q(0),h=0,i=0,j=Q(0),k=Q(0),l=0,m=Q(0),n=0,o=Q(0),p=0,q=Q(0),r=0,s=Q(0),t=0,u=0,w=0,y=0,z=0,A=0,E=0,F=0,G=0,M=Q(0),O=Q(0),S=Q(0),T=0,U=Q(0),W=Q(0),X=0,_=Q(0),$=Q(0),aa=0,ba=0,ca=0,da=Q(0),ea=0,fa=Q(0),ga=0,ha=Q(0),ia=Q(0),ja=Q(0),ka=0,la=Q(0),ma=0,na=Q(0),oa=0,pa=Q(0),qa=Q(0),ra=Q(0),sa=0,ta=Q(0),ua=Q(0),va=Q(0),wa=Q(0),xa=0,ya=Q(0),za=0,Aa=0,Ba=0,Ca=0,Da=Q(0),Ea=0,Fa=0,Ga=0,Ha=0,Ia=0,Ja=0,Ka=0;u=Ui-144|0;Ui=u;a:{b:{c:{d:{e:{ea=J[a+8>>2];if(ea){ma=J[a+12>>2];f:{if(!K[269788]){break f}b=J[ea+152>>2];c=J[ea+148>>2];if((b|0)==(c|0)){break f}b=b-c>>2;i=b>>>0<=1?1:b;b=0;while(1){c=J[ea+148>>2];if(J[ea+152>>2]-c>>2>>>0<=b>>>0){break d}c=J[c+(b<<2)>>2];e=J[c>>2];f=J[e+136>>2];if(!(!f|J[f+32>>2]>=0)){l=J[e+140>>2];h=jM(u+52|0);MP(ea,c,J[c>>2],l,1,h);I[c+24>>1]=L[u+82>>1];vC(J[ea+132>>2],J[c+8>>2]);e=J[e+136>>2];l=J[e+12>>2];e=J[e+8>>2];if((l|0)==(e|0)){break e}e=YL(J[ea+132>>2],h,e,0,0,l-e>>2);J[c+8>>2]=e;if(J[J[c>>2]+168>>2]<0){kM(e)}CP(ea,c);J[f+32>>2]=J[f+32>>2]&2147483647}b=b+1|0;if((i|0)!=(b|0)){continue}break}}J[u+124>>2]=0;J[u+120>>2]=ma;J[u+116>>2]=ea;J[u+112>>2]=0;J[u+108>>2]=ma;J[u+104>>2]=ea;p=u+52|0;b=p;J[b>>2]=0;J[b+4>>2]=0;J[u+100>>2]=0;J[u+92>>2]=0;J[u+96>>2]=0;J[u+84>>2]=0;J[u+88>>2]=0;J[u+76>>2]=0;J[u+80>>2]=0;J[u+68>>2]=0;J[u+72>>2]=0;J[u+60>>2]=0;J[u+64>>2]=0;J[u+100>>2]=ea;J[u+96>>2]=230;J[u+92>>2]=ea;J[u+88>>2]=231;J[u+72>>2]=232;J[u+64>>2]=233;J[u+84>>2]=ea;J[u+80>>2]=234;J[u+76>>2]=u+104;J[u+68>>2]=u+116;H[u+56|0]=K[ma+18|0];J[u+60>>2]=J[ma+20>>2];d=N[J[a+4>>2]+4>>2];N[u+52>>2]=d;xa=J[a>>2];J[75074]=0;N[ea+136>>2]=d;J[u+128>>2]=ma;H[u+140|0]=1;J[u+136>>2]=K[ea+144|0];a=0;g:{if(!xa){break g}b=J[xa>>2];if(!b){break g}a=J[b+4>>2]}J[u+132>>2]=a;b=J[ma>>2];h:{if(K[ma+17|0]==1){a=J[b+64>>2];b=J[b+68>>2];break h}a=J[b+56>>2];b=J[b+60>>2]}Jm(a,b,235,u+128|0);if(!K[u+140|0]){dj(3,88458,23860,0)}i:{if(K[ma+17|0]==1){J[u+128>>2]=0;a=0;c=Ui-272|0;Ui=c;f=J[ea+132>>2];A=J[f+64>>2];if(J[f+88>>2]){j=N[A+72>>2];J[c+252>>2]=0;i=J[f+84>>2];l=J[i+8>>2];if((l|0)>0){S=Q(j*Q(4999999873689376e-20));while(1){h=0;b=J[J[i+16>>2]+(a<<2)>>2];h=H[f+96|0]&1?!(H[b+204|0]&1):h;j:{if(J[b+232>>2]!=3&(!(K[b+204|0]&2)&(h^-1))){break j}o=N[A+76>>2];s=N[b+60>>2];q=N[b+56>>2];M=N[b+52>>2];e=c- -64|0;Fv(b+4|0,e);U=N[c+76>>2];O=N[c+72>>2];na=N[c+68>>2];ia=N[c+64>>2];Zi[J[f+88>>2]](J[b+236>>2],e);d=N[c+64>>2];g=N[c+68>>2];m=N[c+72>>2];k=N[c+76>>2];ja=N[c+88>>2];s=Q(ja-Q(o*s));W=Q(s*s);s=N[c+84>>2];q=Q(s-Q(o*q));$=Q(q*q);q=N[c+80>>2];o=Q(q-Q(o*M));if(!(SQ(7000000186963007e-20))){break j}}J[b+64>>2]=0;J[b+48>>2]=0;J[b+32>>2]=0;J[b+16>>2]=0;N[b+60>>2]=j*ja;N[b+56>>2]=j*s;N[b+52>>2]=j*q;s=Q(Q(2)/Q(Q(k*k)+Q(Q(m*m)+Q(Q(d*d)+Q(g*g)))));o=Q(m*s);q=Q(g*o);M=Q(d*s);U=Q(k*M);N[b+40>>2]=q+U;O=Q(d*o);s=Q(g*s);na=Q(k*s);N[b+36>>2]=O-na;N[b+28>>2]=q-U;q=Q(d*s);k=Q(k*o);N[b+20>>2]=q+k;N[b+12>>2]=O+na;N[b+8>>2]=q-k;d=Q(d*M);g=Q(g*s);N[b+44>>2]=Q(1)-Q(d+g);k=d;d=Q(m*o);N[b+24>>2]=Q(1)-Q(k+d);N[b+4>>2]=Q(1)-Q(g+d);Gr(b,1)}k:{if(!h){break k}Zi[J[f+88>>2]](J[b+236>>2],c- -64|0);d=N[c+104>>2];g=N[c+96>>2];k=N[c+100>>2];g=g>2];if(d==N[Zi[J[J[e>>2]+28>>2]](e)>>2]){break k}J[c+12>>2]=0;N[c+8>>2]=d;N[c+4>>2]=d;N[c>>2]=d;Zi[J[J[e>>2]+24>>2]](e,c);l:{switch(J[b+216>>2]-2|0){case 0:case 3:break l;default:break k}}Gr(b,1)}a=a+1|0;if((l|0)!=(a|0)){continue}break}}}J[c+64>>2]=0;a=J[f+84>>2];d=N[u+52>>2];Zi[J[J[a>>2]+48>>2]](a,d,J[u+60>>2],K[u+56|0]?d:Q(.01666666753590107))|0;a=J[f+40>>2];b=J[f+36>>2];if((a|0)!=(b|0)){J[c+268>>2]=0;a=(a-b|0)/48|0;i=a>>>0<=1?1:a;l=c+160|0;a=0;while(1){b=J[f+36>>2];if((J[f+40>>2]-b|0)/48>>>0<=a>>>0){break d}m:{if(!J[u+80>>2]){dj(3,89293,129178,0);break m}b=b+P(a,48)|0;g=N[b>>2];k=N[b+4>>2];d=N[J[f+64>>2]+72>>2];N[c+260>>2]=d*N[b+8>>2];N[c+256>>2]=d*k;N[c+252>>2]=d*g;J[c+264>>2]=0;g=N[b+16>>2];k=N[b+20>>2];N[c+244>>2]=d*N[b+24>>2];J[c+248>>2]=0;N[c+240>>2]=d*k;N[c+236>>2]=d*g;e=L[b+40>>1];h=J[b+32>>2];J[c+76>>2]=-65535;J[c+80>>2]=0;J[c+68>>2]=1065353216;J[c+72>>2]=0;p=J[c+264>>2];J[c+92>>2]=J[c+260>>2];J[c+96>>2]=p;p=J[c+256>>2];J[c+84>>2]=J[c+252>>2];J[c+88>>2]=p;p=J[c+248>>2];J[c+108>>2]=J[c+244>>2];J[c+112>>2]=p;p=J[c+240>>2];J[c+100>>2]=J[c+236>>2];J[c+104>>2]=p;J[c+148>>2]=h;J[c+64>>2]=243600;Wu(l);I[c+78>>1]=e;I[c+76>>1]=65535;e=J[f+84>>2];Zi[J[J[e>>2]+28>>2]](e,c+252|0,c+236|0,c- -64|0);h=Wu(c);e=J[c+72>>2];H[c+54|0]=K[c+54|0]&254|(e|0)!=0;N[h>>2]=N[c+68>>2];d=N[J[f+64>>2]+76>>2];N[c+32>>2]=N[c+116>>2];p=J[c+124>>2];J[c+36>>2]=J[c+120>>2];J[c+40>>2]=p;N[c+16>>2]=d*N[c+132>>2];N[c+20>>2]=d*N[c+136>>2];N[c+24>>2]=d*N[c+140>>2];if(e){J[c+48>>2]=J[e+236>>2];I[c+52>>1]=L[J[e+188>>2]+4>>1]}Zi[J[u+80>>2]](h,b,J[u+84>>2])}a=a+1|0;if((i|0)!=(a|0)){continue}break}J[f+40>>2]=J[f+36>>2]}e=J[J[f+84>>2]+24>>2];z=J[u+64>>2];E=J[u+72>>2];if(z|E){k=N[J[f+64>>2]+80>>2];J[c>>2]=0;aa=Zi[J[J[e>>2]+36>>2]](e)|0;n:{if((aa|0)<=0){break n}t=1;a=1;while(1){y=Zi[J[J[e>>2]+40>>2]](e,w)|0;h=J[y+1112>>2];o:{p:{q:{l=J[y+1108>>2];switch(J[l+216>>2]-2|0){case 0:case 3:break q;default:break p}}switch(J[h+216>>2]-2|0){case 0:case 3:break o;default:break p}}d=Q(0);r=J[y+1116>>2];ga=(r|0)>0;r:{if(!(ga&a)){break r}p=y+4|0;n=0;b=0;if(r>>>0>=4){T=r&2147483644;i=0;while(1){g=N[(p+P(b,276)|0)+112>>2];d=d>g?d:g;g=N[(p+P(b|1,276)|0)+112>>2];d=d>g?d:g;g=N[(p+P(b|2,276)|0)+112>>2];d=d>g?d:g;g=N[(p+P(b|3,276)|0)+112>>2];d=d>g?d:g;b=b+4|0;i=i+4|0;if((T|0)!=(i|0)){continue}break}}i=r&3;if(!i){break r}while(1){g=N[(p+P(b,276)|0)+112>>2];d=d>g?d:g;b=b+1|0;n=n+1|0;if((i|0)!=(n|0)){continue}break}}if(d>2],L[J[l+188>>2]+4>>1],J[h+236>>2],L[J[h+188>>2]+4>>1],J[u+68>>2])|0}if(!(ga&(J[h+232>>2]!=3&(E|0)!=0)&a)|J[l+232>>2]==3){break o}n=y+4|0;i=0;while(1){b=J[l+232>>2];p=J[h+232>>2];d=N[J[f+64>>2]+76>>2];a=n+P(i,276)|0;N[c+64>>2]=d*N[a+48>>2];N[c+68>>2]=d*N[a+52>>2];N[c+72>>2]=d*N[a+56>>2];J[c+128>>2]=J[l+236>>2];I[c+152>>1]=L[J[l+188>>2]+4>>1];b=(b|0)==2?l:0;if(b){N[c+144>>2]=Q(1)/N[b+336>>2]}N[c+80>>2]=d*N[a+32>>2];N[c+84>>2]=d*N[a+36>>2];N[c+88>>2]=d*N[a+40>>2];J[c+132>>2]=J[h+236>>2];I[c+154>>1]=L[J[h+188>>2]+4>>1];p=(p|0)==2?h:0;if(p){N[c+148>>2]=Q(1)/N[p+336>>2]}g=N[a+64>>2];m=N[a+68>>2];N[c+104>>2]=-N[a+72>>2];N[c+100>>2]=-m;N[c+96>>2]=-g;N[c+136>>2]=d*Q(-N[a+80>>2]);N[c+140>>2]=d*N[a+112>>2];g=Q(0);m=Q(0);j=Q(0);o=Q(0);if(b){o=Q(d*N[b+312>>2]);j=Q(d*N[b+308>>2]);m=Q(d*N[b+304>>2])}s=Q(0);S=Q(0);if(p){S=Q(d*N[p+312>>2]);s=Q(d*N[p+304>>2]);g=Q(d*N[p+308>>2])}N[c+120>>2]=o-S;N[c+116>>2]=j-g;N[c+112>>2]=m-s;a=Zi[E|0](c- -64|0,J[u+76>>2])|0;i=i+1|0;if((r|0)<=(i|0)){break o}if(a){continue}break}}w=w+1|0;if((aa|0)<=(w|0)){break n}if((a|t)&1){continue}break}}}a=0;J[c+252>>2]=0;QL(f);i=c- -64|0;b=i;J[b>>2]=0;J[b+4>>2]=0;J[b+24>>2]=0;J[b+16>>2]=0;J[b+20>>2]=0;J[b+8>>2]=0;J[b+12>>2]=0;J[b>>2]=J[u+88>>2];J[b+4>>2]=J[u+92>>2];t=Zi[J[J[e>>2]+36>>2]](e)|0;if((t|0)>0){while(1){b=Zi[J[J[e>>2]+40>>2]](e,a)|0;l=J[b+1112>>2];y=J[b+1108>>2];s:{if(!(J[y+232>>2]==3?y:0)&(!l|J[l+232>>2]!=3)){break s}r=J[b+1116>>2];if(!r){break s}t:{if((r|0)<=0){d=Q(0);break t}p=b+4|0;d=Q(0);h=0;b=0;if(r>>>0>=4){z=r&2147483644;n=0;while(1){g=N[(p+P(b,276)|0)+80>>2];d=d>g?d:g;g=N[(p+P(b|1,276)|0)+80>>2];d=d>g?d:g;g=N[(p+P(b|2,276)|0)+80>>2];d=d>g?d:g;g=N[(p+P(b|3,276)|0)+80>>2];d=d>g?d:g;b=b+4|0;n=n+4|0;if((z|0)!=(n|0)){continue}break}}n=r&3;if(!n){break t}while(1){g=N[(p+P(b,276)|0)+80>>2];d=d>g?d:g;b=b+1|0;h=h+1|0;if((n|0)!=(h|0)){continue}break}}if(!(N[A+84>>2]<=d)){break s}J[i+8>>2]=y;b=J[y+236>>2];J[i+16>>2]=l;J[i+12>>2]=b;J[i+20>>2]=J[l+236>>2];I[i+24>>1]=L[J[y+188>>2]+4>>1];I[i+26>>1]=L[J[l+188>>2]+4>>1];TL(f,i)}a=a+1|0;if((t|0)!=(a|0)){continue}break}}J[c>>2]=0;J[c+4>>2]=0;J[c>>2]=J[u+96>>2];J[c+4>>2]=J[u+100>>2];SL(f,c);a=J[f+84>>2];Zi[J[J[a>>2]+20>>2]](a);Ui=c+272|0;break i}J[u+128>>2]=0;y=Ui-160|0;Ui=y;A=J[ea+132>>2];ga=J[A+36>>2];na=N[ga+64>>2];k=N[u+52>>2];if(J[A+103108>>2]){J[y+8>>2]=0;a=J[A+102992>>2];if(a){o=Q(na*Q(4999999873689376e-20));while(1){b=J[a>>2];c=H[A+103116|0]&1;u:{v:{if(c){if(b){break v}break u}if((b|0)!=1){break u}}j=N[a+16>>2];s=N[a+12>>2];d=N[ga+68>>2];Zi[J[A+103108>>2]](J[a+148>>2],y+16|0);g=N[y+24>>2];m=N[y+20>>2];S=Q(Q(N[y+28>>2]*g)+Q(N[y+16>>2]*m));g=Q(Q(m*m)+Q(g*g));g=rp(Q(S+S),Q(Q(1)-Q(g+g)));m=N[y+36>>2];j=Q(m-Q(d*j));S=Q(j*j);j=N[y+32>>2];d=Q(j-Q(d*s));w:{if(o>2]-g)))>Q(7000000186963007e-20)){N[y+148>>2]=na*m;N[y+144>>2]=na*j;aF(a,y+144|0,g);b=L[a+4>>1];f=b&65531;I[a+4>>1]=f;if(b&2){break w}J[a+144>>2]=0;I[a+4>>1]=f|2;break w}I[a+4>>1]=L[a+4>>1]|4}if(!c){break u}Zi[J[A+103108>>2]](J[a+148>>2],y+16|0);h=J[a+100>>2];if(!h){break u}d=N[y+48>>2];g=N[y+52>>2];g=d>2];if(g==N[e+16>>2]){break u}N[e+16>>2]=g;x:{y:{z:{switch(J[e+4>>2]){case 2:d=Q(g/N[e+12>>2]);N[e+164>>2]=d*N[e+36>>2];N[e+160>>2]=d*N[e+32>>2];N[e+172>>2]=d*N[e+44>>2];N[e+168>>2]=d*N[e+40>>2];N[e+180>>2]=d*N[e+52>>2];N[e+176>>2]=d*N[e+48>>2];N[e+184>>2]=d*N[e+56>>2];N[e+188>>2]=d*N[e+60>>2];N[e+192>>2]=d*N[e+64>>2];N[e+196>>2]=d*N[e+68>>2];N[e+200>>2]=d*N[e+72>>2];N[e+204>>2]=d*N[e+76>>2];N[e+208>>2]=d*N[e+80>>2];N[e+212>>2]=d*N[e+84>>2];N[e+220>>2]=d*N[e+92>>2];N[e+216>>2]=d*N[e+88>>2];m=N[e+96>>2];N[e+228>>2]=d*N[e+100>>2];N[e+224>>2]=d*m;m=N[e+104>>2];N[e+236>>2]=d*N[e+108>>2];N[e+232>>2]=d*m;m=N[e+112>>2];N[e+244>>2]=d*N[e+116>>2];N[e+240>>2]=d*m;m=N[e+120>>2];N[e+252>>2]=d*N[e+124>>2];N[e+248>>2]=d*m;m=N[e+128>>2];N[e+260>>2]=d*N[e+132>>2];N[e+256>>2]=d*m;m=N[e+136>>2];N[e+268>>2]=d*N[e+140>>2];N[e+264>>2]=d*m;m=N[e+148>>2];N[e+272>>2]=d*N[e+144>>2];j=Q(d*m);c=284;i=280;f=156;l=276;b=152;break y;case 0:break z;default:break x}}j=Q(g*N[e+12>>2]);c=28;i=24;f=36;d=g;l=8;b=32}N[e+l>>2]=j;m=N[e+f>>2];N[e+i>>2]=d*N[b+e>>2];N[c+e>>2]=d*m}h=J[h+4>>2];A:{if(!h){break A}while(1){e=J[h+12>>2];if(g==N[e+16>>2]){break A}N[e+16>>2]=g;B:{C:{D:{switch(J[e+4>>2]){case 0:j=Q(g*N[e+12>>2]);c=28;i=24;f=36;d=g;l=8;b=32;break C;case 2:break D;default:break B}}d=Q(g/N[e+12>>2]);N[e+164>>2]=d*N[e+36>>2];N[e+160>>2]=d*N[e+32>>2];N[e+172>>2]=d*N[e+44>>2];N[e+168>>2]=d*N[e+40>>2];N[e+180>>2]=d*N[e+52>>2];N[e+176>>2]=d*N[e+48>>2];N[e+184>>2]=d*N[e+56>>2];N[e+188>>2]=d*N[e+60>>2];N[e+192>>2]=d*N[e+64>>2];N[e+196>>2]=d*N[e+68>>2];N[e+200>>2]=d*N[e+72>>2];N[e+204>>2]=d*N[e+76>>2];N[e+208>>2]=d*N[e+80>>2];N[e+212>>2]=d*N[e+84>>2];N[e+220>>2]=d*N[e+92>>2];N[e+216>>2]=d*N[e+88>>2];m=N[e+96>>2];N[e+228>>2]=d*N[e+100>>2];N[e+224>>2]=d*m;m=N[e+104>>2];N[e+236>>2]=d*N[e+108>>2];N[e+232>>2]=d*m;m=N[e+112>>2];N[e+244>>2]=d*N[e+116>>2];N[e+240>>2]=d*m;m=N[e+120>>2];N[e+252>>2]=d*N[e+124>>2];N[e+248>>2]=d*m;m=N[e+128>>2];N[e+260>>2]=d*N[e+132>>2];N[e+256>>2]=d*m;m=N[e+136>>2];N[e+268>>2]=d*N[e+140>>2];N[e+264>>2]=d*m;m=N[e+148>>2];N[e+272>>2]=d*N[e+144>>2];j=Q(d*m);c=284;i=280;f=156;l=276;b=152}N[e+l>>2]=j;m=N[e+f>>2];N[e+i>>2]=d*N[b+e>>2];N[c+e>>2]=d*m}h=J[h+4>>2];if(h){continue}break}}b=L[a+4>>1];if(b&2){break u}J[a+144>>2]=0;I[a+4>>1]=b|2}a=J[a+96>>2];if(a){continue}break}}}J[y+8>>2]=0;J[A+103104>>2]=p;d=k;r=Ui-32|0;Ui=r;p=A+40|0;b=p;a=J[b+102868>>2];if(a&1){a=b+102872|0;dw(a,a);a=J[b+102868>>2]&-2}J[b+102868>>2]=a|2;J[r+20>>2]=10;J[r+16>>2]=10;N[r+4>>2]=d;t=d>Q(0);N[r+8>>2]=t?Q(Q(1)/d):Q(0);N[r+12>>2]=d*N[p+102988>>2];H[r+24|0]=K[p+102992|0];c=p+102872|0;a=J[c+60>>2];if(a){while(1){b=a;h=J[b+60>>2];i=J[b+56>>2];l=J[b+52>>2];f=J[l+8>>2];n=J[b+48>>2];e=J[n+8>>2];E:{F:{if(K[b+4|0]&8){if(!qV(f,e)){break F}a=J[c+68>>2];if(a){if(!(Zi[J[J[a>>2]+8>>2]](a,n,i,l,h)|0)){break F}}J[b+4>>2]=J[b+4>>2]&-9}G:{a=J[e>>2];H:{if(!((K[e+4|0]>>>1|(a|0)==1)&(a|0)!=0)){a=J[f>>2];if(!((K[f+4|0]>>>1|(a|0)==1)&(a|0)!=0)){break H}}f=J[(J[n+24>>2]+P(i,28)|0)+24>>2];if((f|0)<0){break c}e=J[c+12>>2];if((e|0)<=(f|0)){break c}a=J[(J[l+24>>2]+P(h,28)|0)+24>>2];if((a|0)<0|(a|0)>=(e|0)){break G}e=J[c+4>>2];a=e+P(a,36)|0;f=e+P(f,36)|0;if(N[a>>2]>N[f+8>>2]|N[a+4>>2]>N[f+12>>2]|(N[f>>2]>N[a+8>>2]|N[f+4>>2]>N[a+12>>2])){break F}_E(b,J[c+72>>2])}a=J[b+12>>2];break E}break c}a=J[b+12>>2];Pv(c,b)}if(a){continue}break}}N[p+103e3>>2]=0;if(!(!t|!(H[p+102995|0]&1))){n=Ui-96|0;Ui=n;J[p+103016>>2]=0;J[p+103008>>2]=0;J[p+103012>>2]=0;aa=p+68|0;f=RU(n+44|0,J[p+102960>>2],J[p+102936>>2],J[p+102964>>2],aa,J[p+102944>>2]);a=J[p+102952>>2];if(a){while(1){I[a+4>>1]=L[a+4>>1]&65534;a=J[a+96>>2];if(a){continue}break}}a=J[p+102932>>2];if(a){while(1){J[a+4>>2]=J[a+4>>2]&-2;a=J[a+12>>2];if(a){continue}break}}a=J[p+102956>>2];if(a){while(1){H[a+60|0]=0;a=J[a+12>>2];if(a){continue}break}}T=J[p+102960>>2];E=Tq(aa,T<<2);I:{J:{K:{L:{M:{N:{O:{z=J[p+102952>>2];if(z){ca=p+102968|0;while(1){a=L[z+4>>1];P:{if(!J[z>>2]|(a&35)!=34){break P}J[E>>2]=z;c=1;I[z+4>>1]=a|1;h=0;a=J[f+40>>2];t=(a|0)>0?a:0;b=0;i=0;while(1){c=c-1|0;e=J[E+(c<<2)>>2];a=L[e+4>>1];if(!(a&32)){break O}if((h|0)==(t|0)){break N}J[e+8>>2]=h;J[J[f+8>>2]+(h<<2)>>2]=e;if(!(a&2)){J[e+144>>2]=0;I[e+4>>1]=a|2}h=h+1|0;Q:{if(!J[e>>2]){break Q}a=J[e+112>>2];if(a){w=J[f+44>>2];while(1){l=J[a+4>>2];G=J[l+4>>2];R:{if((G&7)!=6|K[J[l+48>>2]+44|0]|K[J[l+52>>2]+44|0]){break R}if((b|0)>=(w|0)){break M}J[J[f+12>>2]+(b<<2)>>2]=l;J[l+4>>2]=G|1;b=b+1|0;l=J[a>>2];G=L[l+4>>1];if(G&1){break R}if((c|0)>=(T|0)){break L}J[E+(c<<2)>>2]=l;I[l+4>>1]=G|1;c=c+1|0}a=J[a+12>>2];if(a){continue}break}}a=J[e+108>>2];if(!a){break Q}w=J[f+48>>2];while(1){G=J[a+4>>2];S:{if(K[G+60|0]){break S}e=J[a>>2];l=L[e+4>>1];if(!(l&32)){break S}if((i|0)>=(w|0)){break K}J[J[f+16>>2]+(i<<2)>>2]=G;H[J[a+4>>2]+60|0]=1;i=i+1|0;if(l&1){break S}if((c|0)>=(T|0)){break J}J[E+(c<<2)>>2]=e;I[e+4>>1]=l|1;c=c+1|0}a=J[a+12>>2];if(a){continue}break}}if((c|0)>0){continue}break}J[f+36>>2]=b;J[f+28>>2]=h;J[f+32>>2]=i;ka=K[p+102976|0];h=0;c=Ui-160|0;Ui=c;k=N[r+4>>2];if(J[f+28>>2]>0){while(1){b=J[J[f+8>>2]+(h<<2)>>2];o=N[b+56>>2];N[b+52>>2]=o;e=J[b+48>>2];i=e;a=J[b+44>>2];J[b+36>>2]=a;J[b+40>>2]=e;d=N[b+72>>2];g=N[b+68>>2];m=N[b+64>>2];if(J[b>>2]==2){e=(C(Q(Q(1)-N[b+136>>2])),v(2));j=(x(2,e&8388607|1056964608),D());s=Q(k*Q(Q(Q(j*Q(-1.4980303049087524))+Q(Q(Q(e>>>0)*Q(1.1920928955078125e-7))+Q(-124.22551727294922)))-Q(Q(1.7258800268173218)/Q(j+Q(.35208871960639954)))));j=s=Q(0)){e=~~j>>>0;break U}e=0}j=(x(2,e),D());S=j>2])*N[b+84>>2]);e=(C(Q(Q(1)-N[b+132>>2])),v(2));j=(x(2,e&8388607|1056964608),D());s=Q(k*Q(Q(Q(j*Q(-1.4980303049087524))+Q(Q(Q(e>>>0)*Q(1.1920928955078125e-7))+Q(-124.22551727294922)))-Q(Q(1.7258800268173218)/Q(j+Q(.35208871960639954)))));j=s>2];q=N[b+120>>2];W=Q(g+Q(k*Q(Q(S*N[ca+4>>2])+Q(q*N[b+80>>2]))));g=Q((s=Q(0)){e=~~g>>>0;break W}e=0}g=(x(2,e),D());g=g>2])+Q(q*N[b+76>>2]))))*j)}b=P(h,12);e=b+J[f+20>>2]|0;J[e>>2]=a;J[e+4>>2]=i;N[(b+J[f+20>>2]|0)+8>>2]=o;a=b+J[f+24>>2]|0;N[a+4>>2]=g;N[a>>2]=m;N[(b+J[f+24>>2]|0)+8>>2]=d;h=h+1|0;if((h|0)>2]){continue}break}}a=J[r+24>>2];J[c+120>>2]=J[r+20>>2];J[c+124>>2]=a;a=J[r+16>>2];J[c+112>>2]=J[r+12>>2];J[c+116>>2]=a;a=J[r+8>>2];J[c+104>>2]=J[r+4>>2];J[c+108>>2]=a;a=J[f+20>>2];J[c+128>>2]=a;b=J[f+24>>2];J[c+132>>2]=b;e=J[r+24>>2];J[c+72>>2]=J[r+20>>2];J[c+76>>2]=e;h=J[r+16>>2];e=c- -64|0;J[e>>2]=J[r+12>>2];J[e+4>>2]=h;e=J[r+8>>2];J[c+56>>2]=J[r+4>>2];J[c+60>>2]=e;J[c+80>>2]=J[f+12>>2];e=J[f+36>>2];J[c+92>>2]=b;J[c+88>>2]=a;J[c+84>>2]=e;J[c+96>>2]=J[f>>2];i=gV(c+4|0,c+56|0);iV(i);if(K[r+24|0]){t=0;if(J[i+48>>2]>0){a=J[i+28>>2];while(1){b=J[i+40>>2]+P(t,152)|0;l=P(J[b+116>>2],12);e=l+a|0;d=N[e+8>>2];g=N[e+4>>2];m=N[e>>2];w=P(J[b+112>>2],12);h=w+a|0;o=N[h+8>>2];s=N[h+4>>2];S=N[h>>2];G=J[b+144>>2];if((G|0)>0){M=N[b+76>>2];U=N[b+72>>2];ja=N[b+132>>2];O=N[b+124>>2];ia=N[b+120>>2];da=Q(-N[b+128>>2]);e=0;while(1){a=b+P(e,36)|0;q=N[a+16>>2];W=N[a+20>>2];j=Q(Q(M*q)-Q(U*W));q=Q(Q(U*q)+Q(M*W));d=Q(Q(ja*Q(Q(N[a+8>>2]*j)-Q(N[a+12>>2]*q)))+d);o=Q(Q(da*Q(Q(N[a>>2]*j)-Q(N[a+4>>2]*q)))+o);g=Q(g+Q(O*j));m=Q(m+Q(O*q));s=Q(s-Q(ia*j));S=Q(S-Q(ia*q));e=e+1|0;if((G|0)!=(e|0)){continue}break}}N[h+4>>2]=s;N[h>>2]=S;a=J[i+28>>2];N[(a+w|0)+8>>2]=o;a=a+l|0;N[a+4>>2]=g;N[a>>2]=m;a=J[i+28>>2];N[(l+a|0)+8>>2]=d;t=t+1|0;if((t|0)>2]){continue}break}}}if(J[f+32>>2]>0){a=0;while(1){b=J[J[f+16>>2]+(a<<2)>>2];Zi[J[J[b>>2]+28>>2]](b,c+104|0);a=a+1|0;if((a|0)>2]){continue}break}}N[n+24>>2]=0;if(J[r+16>>2]>0){t=0;while(1){a=0;if(J[f+32>>2]>0){while(1){b=J[J[f+16>>2]+(a<<2)>>2];Zi[J[J[b>>2]+32>>2]](b,c+104|0);a=a+1|0;if((a|0)>2]){continue}break}}hV(i);t=t+1|0;if((t|0)>2]){continue}break}}t=0;G=J[i+48>>2];if((G|0)>0){oa=J[i+44>>2];sa=J[i+40>>2];while(1){a=sa+P(t,152)|0;w=J[a+144>>2];X:{if((w|0)<=0){break X}e=J[oa+(J[a+148>>2]<<2)>>2]- -64|0;b=0;l=0;if(w>>>0>=4){X=w&2147483644;h=0;while(1){F=e+P(l,24)|0;ba=a+P(l,36)|0;N[F+8>>2]=N[ba+16>>2];N[F+12>>2]=N[ba+20>>2];F=l|1;ba=e+P(F,24)|0;F=a+P(F,36)|0;N[ba+8>>2]=N[F+16>>2];N[ba+12>>2]=N[F+20>>2];F=l|2;ba=e+P(F,24)|0;F=a+P(F,36)|0;N[ba+8>>2]=N[F+16>>2];N[ba+12>>2]=N[F+20>>2];F=l|3;ba=e+P(F,24)|0;F=a+P(F,36)|0;N[ba+8>>2]=N[F+16>>2];N[ba+12>>2]=N[F+20>>2];l=l+4|0;h=h+4|0;if((X|0)!=(h|0)){continue}break}}h=w&3;if(!h){break X}while(1){w=e+P(l,24)|0;X=a+P(l,36)|0;N[w+8>>2]=N[X+16>>2];N[w+12>>2]=N[X+20>>2];l=l+1|0;b=b+1|0;if((h|0)!=(b|0)){continue}break}}t=t+1|0;if((G|0)!=(t|0)){continue}break}}N[n+28>>2]=0;e=1;if(J[f+28>>2]>0){h=J[f+24>>2];t=0;while(1){a=P(t,12);h=a+h|0;d=N[h>>2];g=Q(k*d);j=Q(g*g);g=N[h+4>>2];m=Q(k*g);m=Q(j+Q(m*m));if(m>Q(4)){m=Q(Q(2)/Q(Y(m)));g=Q(g*m);d=Q(d*m)}b=a+J[f+20>>2]|0;o=N[b+8>>2];s=N[b+4>>2];S=N[b>>2];m=N[h+8>>2];j=Q(k*m);if(Q(j*j)>Q(2.4674012660980225)){m=Q(m*Q(Q(1.5707963705062866)/(j>Q(0)?j:Q(-j))))}N[b+4>>2]=s+Q(k*g);N[b>>2]=S+Q(k*d);N[(a+J[f+20>>2]|0)+8>>2]=Q(k*m)+o;b=a+J[f+24>>2]|0;N[b+4>>2]=g;N[b>>2]=d;h=J[f+24>>2];N[(a+h|0)+8>>2]=m;t=t+1|0;if((t|0)>2]){continue}break}}if(J[r+20>>2]>0){t=0;while(1){M=Q(0);e=0;b=Ui+-64|0;Ui=b;a=1;if(J[i+48>>2]>0){a=J[i+24>>2];while(1){h=J[i+36>>2]+P(e,88)|0;l=P(J[h+36>>2],12);w=l+a|0;d=N[w+8>>2];g=N[w+4>>2];m=N[w>>2];w=P(J[h+32>>2],12);G=w+a|0;o=N[G+8>>2];s=N[G+4>>2];S=N[G>>2];G=J[h+84>>2];if((G|0)>0){U=N[h+68>>2];O=N[h+56>>2];ia=N[h+48>>2];ja=N[h+40>>2];da=N[h+44>>2];ya=Q(ja+da);fa=N[h+64>>2];la=Q(-fa);_=N[h+60>>2];ha=Q(-_);qa=N[h+52>>2];wa=Q(-qa);a=0;while(1){j=Rj(o);N[b+60>>2]=j;q=Hj(o);N[b+56>>2]=q;W=Rj(d);N[b+44>>2]=W;$=Hj(d);N[b+40>>2]=$;N[b+52>>2]=s-Q(Q(q*ia)+Q(qa*j));N[b+48>>2]=S-Q(Q(j*ia)+Q(q*wa));N[b+36>>2]=g-Q(Q($*O)+Q(_*W));N[b+32>>2]=m-Q(Q(W*O)+Q($*ha));OU(b+12|0,h,b+48|0,b+32|0,a);q=Q(0);j=N[b+28>>2];oa=j>M;ta=N[b+20>>2];ua=Q(ta-m);W=N[b+16>>2];va=N[b+24>>2];pa=Q(va-g);$=N[b+12>>2];ra=Q(Q(ua*W)-Q(pa*$));Da=Q(Q(U*ra)*ra);ta=Q(ta-S);va=Q(va-s);ra=Q(Q(ta*W)-Q(va*$));ra=Q(Da+Q(Q(Q(fa*ra)*ra)+ya));if(ra>Q(0)){q=Q(Q(j+Q(.004999999888241291))*Q(.20000000298023224));q=q>2]}a=a+w|0;N[a+4>>2]=s;N[a>>2]=S;a=J[i+24>>2];N[(a+w|0)+8>>2]=o;a=a+l|0;N[a+4>>2]=g;N[a>>2]=m;a=J[i+24>>2];N[(l+a|0)+8>>2]=d;e=e+1|0;if((e|0)>2]){continue}break}a=M>=Q(-.014999999664723873)}Ui=b- -64|0;b=a;h=1;a=0;if(J[f+32>>2]>0){while(1){e=J[J[f+16>>2]+(a<<2)>>2];h=Zi[J[J[e>>2]+36>>2]](e,c+104|0)&h;a=a+1|0;if((a|0)>2]){continue}break}}a=b&h;if(!a){t=t+1|0;if((t|0)>2]){continue}}break}e=a^1}if(J[f+28>>2]>0){h=0;while(1){l=P(h,12);b=l+J[f+20>>2]|0;o=N[b>>2];a=J[b>>2];s=N[b+4>>2];t=J[b+4>>2];b=J[J[f+8>>2]+(h<<2)>>2];J[b+44>>2]=a;J[b+48>>2]=t;d=N[(l+J[f+20>>2]|0)+8>>2];N[b+56>>2]=d;a=l+J[f+24>>2]|0;w=J[a+4>>2];J[b+64>>2]=J[a>>2];J[b+68>>2]=w;m=N[(l+J[f+24>>2]|0)+8>>2];g=Rj(d);N[b+24>>2]=g;d=Hj(d);N[b+20>>2]=d;N[b+72>>2]=m;m=N[b+28>>2];j=N[b+32>>2];N[b+16>>2]=s-Q(Q(d*m)+Q(g*j));N[b+12>>2]=o-Q(Q(g*m)-Q(d*j));h=h+1|0;if((h|0)>2]){continue}break}}N[n+32>>2]=0;if(!(!J[f+4>>2]|J[f+36>>2]<=0)){G=J[i+40>>2];t=c+148|0;b=0;while(1){oa=J[J[f+12>>2]+(b<<2)>>2];w=G+P(b,152)|0;h=J[w+144>>2];J[c+156>>2]=h;Y:{if((h|0)<=0){break Y}a=0;if((h|0)!=1){sa=h&2147483646;l=0;while(1){X=a<<2;F=c+140|0;ba=w+P(a,36)|0;N[X+F>>2]=N[ba+16>>2];N[t+X>>2]=N[ba+20>>2];ba=F;X=a|1;F=X<<2;X=w+P(X,36)|0;N[ba+F>>2]=N[X+16>>2];N[t+F>>2]=N[X+20>>2];a=a+2|0;l=l+2|0;if((sa|0)!=(l|0)){continue}break}}if(!(h&1)){break Y}h=a<<2;a=w+P(a,36)|0;N[h+(c+140|0)>>2]=N[a+16>>2];N[h+t>>2]=N[a+20>>2]}a=J[f+4>>2];Zi[J[J[a>>2]+20>>2]](a,oa,c+140|0);b=b+1|0;if((b|0)>2]){continue}break}}Z:{if(!ka){break Z}h=J[f+28>>2];if((h|0)<=0){break Z}l=J[f+8>>2];d=Q(34028234663852886e22);a=0;while(1){b=J[l+(a<<2)>>2];_:{if(!J[b>>2]){break _}$:{aa:{if(!(K[b+4|0]&4)){break aa}g=N[b+72>>2];if(Q(g*g)>Q(.001218469929881394)){break aa}g=N[b+64>>2];j=Q(g*g);g=N[b+68>>2];if(!(Q(j+Q(g*g))>Q(9999999747378752e-20))){break $}}J[b+144>>2]=0;d=Q(0);break _}g=Q(k+N[b+144>>2]);N[b+144>>2]=g;d=d=Q(.5))|e|J[f+28>>2]<=0){break Z}h=0;while(1){a=J[J[f+8>>2]+(h<<2)>>2];J[a+144>>2]=0;J[a+64>>2]=0;J[a+68>>2]=0;J[a+72>>2]=0;J[a+76>>2]=0;J[a+80>>2]=0;J[a+84>>2]=0;I[a+4>>1]=L[a+4>>1]&65533;h=h+1|0;if((h|0)>2]){continue}break}}fV(i);Ui=c+160|0;N[p+103008>>2]=N[n+24>>2]+N[p+103008>>2];N[p+103012>>2]=N[n+28>>2]+N[p+103012>>2];N[p+103016>>2]=N[n+32>>2]+N[p+103016>>2];c=J[f+28>>2];if((c|0)<=0){break P}e=J[f+8>>2];a=0;if((c|0)!=1){i=c&2147483646;b=0;while(1){l=e+(a<<2)|0;h=J[l>>2];if(!J[h>>2]){I[h+4>>1]=L[h+4>>1]&65534}h=J[l+4>>2];if(!J[h>>2]){I[h+4>>1]=L[h+4>>1]&65534}a=a+2|0;b=b+2|0;if((i|0)!=(b|0)){continue}break}}if(!(c&1)){break P}a=J[e+(a<<2)>>2];if(J[a>>2]){break P}I[a+4>>1]=L[a+4>>1]&65534}z=J[z+96>>2];if(z){continue}break}}Sq(aa,E);a=J[p+102952>>2];if(a){while(1){if(!(!(H[a+4|0]&1)|!J[a>>2])){$E(a)}a=J[a+96>>2];if(a){continue}break}}a=p+102872|0;dw(a,a);N[p+103020>>2]=0;QU(f);Ui=n+96|0;break I}J[f+36>>2]=b;J[f+28>>2]=h;J[f+32>>2]=i;Z(60811,42374,446,60067);B()}J[f+36>>2]=b;J[f+28>>2]=t;J[f+32>>2]=i;break b}J[f+36>>2]=b;J[f+32>>2]=i;J[f+28>>2]=h;break a}J[f+36>>2]=b;J[f+32>>2]=i;J[f+28>>2]=h;Z(59777,42374,496,60067);B()}J[f+36>>2]=b;J[f+28>>2]=h;J[f+32>>2]=i;Z(2137,55837,68,76114);B()}J[f+36>>2]=b;J[f+28>>2]=h;J[f+32>>2]=i;Z(59777,42374,525,60067);B()}N[p+103004>>2]=0;d=N[r+4>>2]}if(!(!(d>Q(0))|K[p+102993|0]!=1)){h=Ui-272|0;Ui=h;n=RU(h+220|0,64,32,0,p+68|0,J[p+102944>>2]);ba:{if(K[p+102995|0]!=1){break ba}l=J[p+102952>>2];if(l){while(1){J[l+60>>2]=0;I[l+4>>1]=L[l+4>>1]&65534;l=J[l+96>>2];if(l){continue}break}}l=J[p+102932>>2];if(!l){break ba}while(1){J[l+136>>2]=0;J[l+140>>2]=1065353216;J[l+4>>2]=J[l+4>>2]&-34;l=J[l+12>>2];if(l){continue}break}}aa=p+102872|0;ka=h+116|0;ca:{da:{while(1){ea:{a=0;U=Q(1);fa:{l=J[p+102932>>2];ga:{if(!l){break ga}ha:{ia:{while(1){ja:{b=J[l+4>>2];ka:{if(!(b&4)|J[l+136>>2]>8){break ka}la:{if(b&32){d=N[l+140>>2];break la}e=J[l+48>>2];if(K[e+44|0]){break ka}i=J[l+52>>2];if(K[i+44|0]){break ka}b=J[e+8>>2];f=J[b>>2];c=J[i+8>>2];t=J[c>>2];if((f|0)!=2&(t|0)!=2){break ja}E=L[b+4>>1];z=L[c+4>>1];if(!((E&2)>>>1&(f|0)!=0|z>>>1&(t|0)!=0)){break ka}if(!(z&8|(E&8|(f|0)!=2))){if((t|0)==2){break ka}}o=N[c+60>>2];d=N[b+60>>2];ma:{if(o>d){if(!(d>2]=o;d=Q(Q(o-d)/Q(Q(1)-d));g=Q(Q(1)-d);N[b+40>>2]=Q(g*N[b+40>>2])+Q(d*N[b+48>>2]);N[b+36>>2]=Q(g*N[b+36>>2])+Q(d*N[b+44>>2]);N[b+52>>2]=Q(g*N[b+52>>2])+Q(d*N[b+56>>2]);break ma}if(d>o){if(!(o>2]=d;g=Q(Q(d-o)/Q(Q(1)-o));k=Q(Q(1)-g);N[c+40>>2]=Q(k*N[c+40>>2])+Q(g*N[c+48>>2]);N[c+36>>2]=Q(k*N[c+36>>2])+Q(g*N[c+44>>2]);N[c+52>>2]=Q(k*N[c+52>>2])+Q(g*N[c+56>>2])}o=d}if(!(o>2];z=J[l+56>>2];J[h+140>>2]=0;J[h+132>>2]=0;J[h+136>>2]=0;J[h+112>>2]=0;J[h+104>>2]=0;J[h+108>>2]=0;f=h+88|0;uz(f,J[e+12>>2],z);uz(ka,J[i+12>>2],t);J[h+176>>2]=J[b+60>>2];e=J[b+56>>2];J[h+168>>2]=J[b+52>>2];J[h+172>>2]=e;e=J[b+48>>2];J[h+160>>2]=J[b+44>>2];J[h+164>>2]=e;e=J[b+40>>2];J[h+152>>2]=J[b+36>>2];J[h+156>>2]=e;e=J[b+32>>2];J[h+144>>2]=J[b+28>>2];J[h+148>>2]=e;J[h+212>>2]=J[c+60>>2];b=J[c+56>>2];J[h+204>>2]=J[c+52>>2];J[h+208>>2]=b;b=J[c+48>>2];J[h+196>>2]=J[c+44>>2];J[h+200>>2]=b;b=J[c+40>>2];J[h+188>>2]=J[c+36>>2];J[h+192>>2]=b;b=J[c+32>>2];J[h+180>>2]=J[c+28>>2];J[h+184>>2]=b;J[h+216>>2]=1065353216;t=0;S=Q(0);b=Ui-320|0;Ui=b;J[84024]=J[84024]+1;J[h+48>>2]=0;m=N[f+128>>2];N[h+52>>2]=m;J[b+312>>2]=J[f+88>>2];c=J[f+84>>2];J[b+304>>2]=J[f+80>>2];J[b+308>>2]=c;c=J[f+76>>2];J[b+296>>2]=J[f+72>>2];J[b+300>>2]=c;c=f- -64|0;e=J[c+4>>2];J[b+288>>2]=J[c>>2];J[b+292>>2]=e;c=J[f+60>>2];J[b+280>>2]=J[f+56>>2];J[b+284>>2]=c;J[b+272>>2]=J[f+124>>2];c=J[f+120>>2];J[b+264>>2]=J[f+116>>2];J[b+268>>2]=c;c=J[f+112>>2];J[b+256>>2]=J[f+108>>2];J[b+260>>2]=c;c=J[f+104>>2];J[b+248>>2]=J[f+100>>2];J[b+252>>2]=c;c=J[f+96>>2];J[b+240>>2]=J[f+92>>2];J[b+244>>2]=c;g=N[b+304>>2];d=Q(Q(V(Q(g/Q(6.2831854820251465))))*Q(6.2831854820251465));q=Q(g-d);N[b+304>>2]=q;k=N[b+264>>2];g=Q(Q(V(Q(k/Q(6.2831854820251465))))*Q(6.2831854820251465));M=Q(k-g);N[b+264>>2]=M;j=Q(N[b+268>>2]-g);N[b+268>>2]=j;s=Q(N[b+308>>2]-d);N[b+308>>2]=s;na:{oa:{d=Q(Q(N[f+24>>2]+N[f+52>>2])+Q(-.014999999664723873));ia=dQ(.0012499999720603228)){I[b+232>>1]=0;J[b+160>>2]=J[f+24>>2];c=J[f+20>>2];J[b+152>>2]=J[f+16>>2];J[b+156>>2]=c;c=J[f+12>>2];J[b+144>>2]=J[f+8>>2];J[b+148>>2]=c;c=J[f+4>>2];J[b+136>>2]=J[f>>2];J[b+140>>2]=c;E=f+28|0;c=E;e=J[c+12>>2];J[b+172>>2]=J[c+8>>2];J[b+176>>2]=e;c=J[f+48>>2];J[b+180>>2]=J[f+44>>2];J[b+184>>2]=c;J[b+188>>2]=J[f+52>>2];c=J[f+32>>2];J[b+164>>2]=J[f+28>>2];J[b+168>>2]=c;H[b+224|0]=0;ya=Q(ia+Q(-.0012499999720603228));ja=Q(ia+Q(.0012499999720603228));d=Q(0);while(1){g=Q(Q(1)-d);j=Q(Q(g*M)+Q(d*j));k=Rj(j);N[b+220>>2]=k;j=Hj(j);N[b+216>>2]=j;q=Q(Q(g*q)+Q(d*s));s=Rj(q);N[b+204>>2]=s;q=Hj(q);N[b+200>>2]=q;M=N[b+240>>2];O=N[b+244>>2];N[b+212>>2]=Q(Q(g*N[b+252>>2])+Q(d*N[b+260>>2]))-Q(Q(j*M)+Q(k*O));N[b+208>>2]=Q(Q(g*N[b+248>>2])+Q(d*N[b+256>>2]))-Q(Q(k*M)-Q(j*O));k=N[b+280>>2];j=N[b+284>>2];N[b+196>>2]=Q(Q(g*N[b+292>>2])+Q(d*N[b+300>>2]))-Q(Q(q*k)+Q(s*j));N[b+192>>2]=Q(Q(g*N[b+288>>2])+Q(d*N[b+296>>2]))-Q(Q(s*k)-Q(q*j));cV(b+112|0,b+228|0,b+136|0);g=N[b+128>>2];if(g<=Q(0)){f=2;break oa}if(g>2]=E;J[c>>2]=f;pa:{qa:{e=L[b+232>>1];if((e-1&65535)>>>0<2){i=J[b+284>>2];J[c+8>>2]=J[b+280>>2];J[c+12>>2]=i;J[c+40>>2]=J[b+312>>2];i=J[b+308>>2];J[c+32>>2]=J[b+304>>2];J[c+36>>2]=i;i=J[b+300>>2];J[c+24>>2]=J[b+296>>2];J[c+28>>2]=i;i=J[b+292>>2];J[c+16>>2]=J[b+288>>2];J[c+20>>2]=i;i=J[b+244>>2];J[c+44>>2]=J[b+240>>2];J[c+48>>2]=i;i=J[b+252>>2];J[c+52>>2]=J[b+248>>2];J[c+56>>2]=i;i=J[b+260>>2];J[c+60>>2]=J[b+256>>2];J[c+64>>2]=i;i=J[b+268>>2];J[c+68>>2]=J[b+264>>2];J[c+72>>2]=i;J[c+76>>2]=J[b+272>>2];j=N[c+48>>2];g=Q(Q(1)-d);s=Q(Q(g*N[c+68>>2])+Q(d*N[c+72>>2]));k=Rj(s);q=N[c+44>>2];s=Hj(s);da=Q(Q(Q(g*N[c+56>>2])+Q(d*N[c+64>>2]))-Q(Q(s*q)+Q(j*k)));W=Q(Q(Q(g*N[c+52>>2])+Q(d*N[c+60>>2]))-Q(Q(k*q)-Q(s*j)));j=N[c+12>>2];M=Q(Q(g*N[c+32>>2])+Q(d*N[c+36>>2]));q=Rj(M);O=N[c+8>>2];M=Hj(M);$=Q(Q(Q(g*N[c+20>>2])+Q(d*N[c+28>>2]))-Q(Q(M*O)+Q(j*q)));g=Q(Q(Q(g*N[c+16>>2])+Q(d*N[c+24>>2]))-Q(Q(q*O)-Q(M*j)));ra:{if((e|0)==1){J[c+80>>2]=0;e=K[b+234|0];if((e|0)>=J[f+20>>2]){break qa}i=K[b+237|0];if((i|0)>=J[f+48>>2]){break qa}j=da;i=J[f+44>>2]+(i<<3)|0;O=N[i>>2];da=N[i+4>>2];ha=$;e=J[f+16>>2]+(e<<3)|0;$=N[e>>2];fa=N[e+4>>2];j=Q(Q(j+Q(Q(s*O)+Q(k*da)))-Q(ha+Q(Q(M*$)+Q(q*fa))));N[c+96>>2]=j;g=Q(Q(W+Q(Q(k*O)-Q(s*da)))-Q(g+Q(Q(q*$)-Q(M*fa))));N[c+92>>2]=g;k=Q(Y(Q(Q(g*g)+Q(j*j))));if(k>2]=j*k;N[c+92>>2]=g*k;break pa}sa:{if(K[b+234|0]==K[b+235|0]){J[c+80>>2]=2;e=J[f+48>>2];i=K[b+237|0];if((e|0)<=(i|0)){break qa}w=e;e=K[b+238|0];if(w>>>0<=e>>>0){break qa}w=i<<3;i=J[f+44>>2];z=w+i|0;fa=N[z>>2];e=i+(e<<3)|0;la=N[e>>2];ha=N[e+4>>2];qa=N[z+4>>2];j=Q(ha-qa);N[c+92>>2]=j;_=Q(la-fa);O=Q(-_);N[c+96>>2]=O;_=Q(Y(Q(Q(j*j)+Q(_*_))));if(!(_>2]=O;j=Q(j*_);N[c+92>>2]=j}_=Q(Q(qa+ha)*Q(.5));N[c+88>>2]=_;fa=Q(Q(fa+la)*Q(.5));N[c+84>>2]=fa;e=K[b+234|0];if((e|0)>=J[f+20>>2]){break qa}e=J[f+16>>2]+(e<<3)|0;la=N[e>>2];ha=N[e+4>>2];W=Q(Q(g+Q(Q(q*la)-Q(M*ha)))-Q(W+Q(Q(k*fa)-Q(s*_))));g=Q(-O);if(!(Q(Q(W*Q(Q(k*j)+Q(s*g)))+Q(Q(Q(s*j)+Q(k*O))*Q(Q($+Q(Q(M*la)+Q(q*ha)))-Q(da+Q(Q(s*fa)+Q(k*_))))))>2]=1;e=J[f+20>>2];i=K[b+234|0];if((e|0)<=(i|0)){break qa}w=e;e=K[b+235|0];if(w>>>0<=e>>>0){break qa}w=i<<3;i=J[f+16>>2];z=w+i|0;fa=N[z>>2];e=i+(e<<3)|0;la=N[e>>2];ha=N[e+4>>2];qa=N[z+4>>2];j=Q(ha-qa);N[c+92>>2]=j;_=Q(la-fa);O=Q(-_);N[c+96>>2]=O;_=Q(Y(Q(Q(j*j)+Q(_*_))));if(!(_>2]=O;j=Q(j*_);N[c+92>>2]=j}_=Q(Q(qa+ha)*Q(.5));N[c+88>>2]=_;fa=Q(Q(fa+la)*Q(.5));N[c+84>>2]=fa;e=K[b+237|0];if((e|0)>=J[f+48>>2]){break qa}ha=W;e=J[f+44>>2]+(e<<3)|0;W=N[e>>2];la=N[e+4>>2];ha=Q(Q(ha+Q(Q(k*W)-Q(s*la)))-Q(g+Q(Q(q*fa)-Q(M*_))));g=Q(-O);if(!(Q(Q(ha*Q(Q(q*j)+Q(M*g)))+Q(Q(Q(M*j)+Q(q*O))*Q(Q(da+Q(Q(s*W)+Q(k*la)))-Q($+Q(Q(M*fa)+Q(q*_))))))>2]=g;N[c+92>>2]=-j}break pa}Z(109221,39003,50,59307);B()}Z(11412,55795,103,4803);B()}z=0;e=4;ta:{g=m;M=MU(c,b+8|0,b+4|0,g);ua:{if(!(jaya)){q=NU(b+12|0,J[b+8>>2],J[b+4>>2],d);if(ya>q){e=1;break ua}c=0;j=d;s=g;if(q<=ja){e=3;break ua}wa:{while(1){i=b+12|0;w=J[b+8>>2];G=J[b+4>>2];if(c&1){k=Q(j+Q(Q(Q(ia-q)*Q(s-j))/Q(M-q)))}else{k=Q(Q(j+s)*Q(.5))}O=NU(i,w,G,k);da=Q(O-ia);if((da>Q(0)?da:Q(-da))ia;s=i?s:k;j=i?k:j;q=i?O:q;M=i?M:O;c=c+1|0;if((c|0)!=50){continue}break}c=50}i=J[84028];J[84028]=(c|0)<(i|0)?i:c;z=z+1|0;if((z|0)!=16){break va}g=d}J[84025]=J[84025]+1;t=t+1|0;if((t|0)!=20){break ta}N[h+52>>2]=g;J[h+48>>2]=1;t=20;break na}M=MU(b+12|0,b+8|0,b+4|0,g);if(!(ja>2]=d;J[h+48>>2]=e;J[84025]=J[84025]+1;t=t+1|0;break na}j=N[b+268>>2];M=N[b+264>>2];s=N[b+308>>2];q=N[b+304>>2];d=g;continue}}Z(70543,39003,280,16652);B()}N[h+52>>2]=S;J[h+48>>2]=f}c=J[84026];J[84026]=(c|0)>(t|0)?c:t;Ui=b+320|0;d=Q(1);if(J[h+48>>2]==3){d=Q(Q(Q(Q(1)-o)*N[h+52>>2])+o);d=d>2]=d;J[l+4>>2]=J[l+4>>2]|32}b=d>2];if(l){continue}break ha}break}Z(3714,42374,642,93420);B()}Z(58027,42374,677,93420);B()}if(!a){break ga}if(!(U>Q(.9999988079071045))){break fa}}H[p+102995|0]=1;break ea}b=J[J[a+52>>2]+8>>2];e=J[J[a+48>>2]+8>>2];J[h+120>>2]=J[e+60>>2];c=J[e+56>>2];J[h+112>>2]=J[e+52>>2];J[h+116>>2]=c;c=J[e+48>>2];J[h+104>>2]=J[e+44>>2];J[h+108>>2]=c;c=J[e+40>>2];J[h+96>>2]=J[e+36>>2];J[h+100>>2]=c;c=J[e+32>>2];J[h+88>>2]=J[e+28>>2];J[h+92>>2]=c;J[h+80>>2]=J[b+60>>2];c=J[b+56>>2];J[h+72>>2]=J[b+52>>2];J[h+76>>2]=c;i=J[b+48>>2];f=h- -64|0;c=f;J[c>>2]=J[b+44>>2];J[c+4>>2]=i;c=J[b+40>>2];J[h+56>>2]=J[b+36>>2];J[h+60>>2]=c;c=J[b+32>>2];J[h+48>>2]=J[b+28>>2];J[h+52>>2]=c;xa:{ya:{d=N[e+60>>2];if(d>2]=Q(g*N[e+40>>2])+Q(d*N[e+48>>2]);N[e+36>>2]=Q(g*N[e+36>>2])+Q(d*N[e+44>>2]);N[e+60>>2]=U;d=Q(Q(g*N[e+52>>2])+Q(d*N[e+56>>2]));N[e+52>>2]=d;N[e+56>>2]=d;g=Rj(d);N[e+24>>2]=g;d=Hj(d);N[e+20>>2]=d;o=N[e+40>>2];i=J[e+40>>2];k=N[e+36>>2];J[e+44>>2]=J[e+36>>2];J[e+48>>2]=i;j=k;k=N[e+28>>2];m=N[e+32>>2];N[e+12>>2]=j-Q(Q(g*k)-Q(d*m));N[e+16>>2]=o-Q(Q(d*k)+Q(g*m));d=N[b+60>>2];if(!(d>2]=Q(g*N[b+40>>2])+Q(d*N[b+48>>2]);N[b+36>>2]=Q(g*N[b+36>>2])+Q(d*N[b+44>>2]);N[b+60>>2]=U;d=Q(Q(g*N[b+52>>2])+Q(d*N[b+56>>2]));N[b+52>>2]=d;N[b+56>>2]=d;g=Rj(d);N[b+24>>2]=g;d=Hj(d);N[b+20>>2]=d;o=N[b+40>>2];i=J[b+40>>2];k=N[b+36>>2];J[b+44>>2]=J[b+36>>2];J[b+48>>2]=i;j=k;k=N[b+28>>2];m=N[b+32>>2];N[b+12>>2]=j-Q(Q(g*k)-Q(d*m));N[b+16>>2]=o-Q(Q(d*k)+Q(g*m));_E(a,J[p+102944>>2]);c=J[a+4>>2];i=c&-33;J[a+4>>2]=i;J[a+136>>2]=J[a+136>>2]+1;if((c&6)!=6){J[a+4>>2]=c&-37;J[e+60>>2]=J[h+120>>2];a=J[h+116>>2];J[e+52>>2]=J[h+112>>2];J[e+56>>2]=a;a=J[h+108>>2];J[e+44>>2]=J[h+104>>2];J[e+48>>2]=a;a=J[h+100>>2];J[e+36>>2]=J[h+96>>2];J[e+40>>2]=a;a=J[h+92>>2];J[e+28>>2]=J[h+88>>2];J[e+32>>2]=a;J[b+60>>2]=J[h+80>>2];a=J[h+76>>2];J[b+52>>2]=J[h+72>>2];J[b+56>>2]=a;a=J[f+4>>2];J[b+44>>2]=J[f>>2];J[b+48>>2]=a;a=J[h+60>>2];J[b+36>>2]=J[h+56>>2];J[b+40>>2]=a;a=J[h+52>>2];J[b+28>>2]=J[h+48>>2];J[b+32>>2]=a;g=N[e+56>>2];d=Rj(g);N[e+24>>2]=d;g=Hj(g);N[e+20>>2]=g;k=N[e+28>>2];m=N[e+32>>2];N[e+16>>2]=N[e+48>>2]-Q(Q(g*k)+Q(d*m));N[e+12>>2]=N[e+44>>2]-Q(Q(d*k)-Q(g*m));g=N[b+56>>2];d=Hj(g);N[b+20>>2]=d;g=Rj(g);N[b+24>>2]=g;k=N[b+28>>2];m=N[b+32>>2];N[b+16>>2]=N[b+48>>2]-Q(Q(d*k)+Q(g*m));N[b+12>>2]=N[b+44>>2]-Q(Q(g*k)-Q(d*m));a=9;break xa}c=L[e+4>>1];if(!(c&2)){J[e+144>>2]=0;I[e+4>>1]=c|2}c=L[b+4>>1];if(!(c&2)){J[b+144>>2]=0;I[b+4>>1]=c|2}J[n+36>>2]=0;J[n+28>>2]=0;J[n+32>>2]=0;c=J[n+40>>2];if((c|0)<=0){break b}J[e+8>>2]=0;J[J[n+8>>2]>>2]=e;J[n+28>>2]=1;if((c|0)==1){break b}J[b+8>>2]=1;J[J[n+8>>2]+4>>2]=b;J[n+28>>2]=2;if(J[n+44>>2]<=0){break a}c=1;J[n+36>>2]=1;J[J[n+12>>2]>>2]=a;I[e+4>>1]=L[e+4>>1]|1;I[b+4>>1]=L[b+4>>1]|1;J[a+4>>2]=i|1;a=e;while(1){za:{if(J[a>>2]!=2){break za}l=J[a+112>>2];if(!l){break za}while(1){if(J[n+28>>2]==J[n+40>>2]|J[n+36>>2]==J[n+44>>2]){break za}t=J[l+4>>2];Aa:{if(H[t+4|0]&1){break Aa}i=J[l>>2];if(!(K[a+4|0]&8|J[i>>2]!=2|K[i+4|0]&8)|(K[J[t+48>>2]+44|0]|K[J[t+52>>2]+44|0])){break Aa}J[h+40>>2]=J[i+60>>2];f=J[i+56>>2];J[h+32>>2]=J[i+52>>2];J[h+36>>2]=f;f=J[i+48>>2];J[h+24>>2]=J[i+44>>2];J[h+28>>2]=f;f=J[i+40>>2];J[h+16>>2]=J[i+36>>2];J[h+20>>2]=f;f=J[i+32>>2];J[h+8>>2]=J[i+28>>2];J[h+12>>2]=f;if(!(H[i+4|0]&1)){d=N[i+60>>2];if(!(d>2]=Q(g*N[i+40>>2])+Q(d*N[i+48>>2]);N[i+36>>2]=Q(g*N[i+36>>2])+Q(d*N[i+44>>2]);N[i+60>>2]=U;d=Q(Q(g*N[i+52>>2])+Q(d*N[i+56>>2]));N[i+52>>2]=d;N[i+56>>2]=d;g=Rj(d);N[i+24>>2]=g;d=Hj(d);N[i+20>>2]=d;o=N[i+40>>2];z=J[i+40>>2];k=N[i+36>>2];J[i+44>>2]=J[i+36>>2];J[i+48>>2]=z;j=k;k=N[i+28>>2];m=N[i+32>>2];N[i+12>>2]=j-Q(Q(g*k)-Q(d*m));N[i+16>>2]=o-Q(Q(d*k)+Q(g*m))}_E(t,J[p+102944>>2]);f=J[t+4>>2];if(!(f&4)){f=J[h+12>>2];J[i+28>>2]=J[h+8>>2];J[i+32>>2]=f;J[i+60>>2]=J[h+40>>2];f=J[h+36>>2];J[i+52>>2]=J[h+32>>2];J[i+56>>2]=f;f=J[h+28>>2];J[i+44>>2]=J[h+24>>2];J[i+48>>2]=f;f=J[h+20>>2];J[i+36>>2]=J[h+16>>2];J[i+40>>2]=f;g=N[i+56>>2];d=Rj(g);N[i+24>>2]=d;g=Hj(g);N[i+20>>2]=g;k=N[i+28>>2];m=N[i+32>>2];N[i+16>>2]=N[i+48>>2]-Q(Q(g*k)+Q(d*m));N[i+12>>2]=N[i+44>>2]-Q(Q(d*k)-Q(g*m));break Aa}if(!(f&2)){f=J[h+12>>2];J[i+28>>2]=J[h+8>>2];J[i+32>>2]=f;J[i+60>>2]=J[h+40>>2];f=J[h+36>>2];J[i+52>>2]=J[h+32>>2];J[i+56>>2]=f;f=J[h+28>>2];J[i+44>>2]=J[h+24>>2];J[i+48>>2]=f;f=J[h+20>>2];J[i+36>>2]=J[h+16>>2];J[i+40>>2]=f;g=N[i+56>>2];d=Rj(g);N[i+24>>2]=d;g=Hj(g);N[i+20>>2]=g;k=N[i+28>>2];m=N[i+32>>2];N[i+16>>2]=N[i+48>>2]-Q(Q(g*k)+Q(d*m));N[i+12>>2]=N[i+44>>2]-Q(Q(d*k)-Q(g*m));break Aa}J[t+4>>2]=f|1;f=J[n+36>>2];if((f|0)>=J[n+44>>2]){break a}J[n+36>>2]=f+1;J[J[n+12>>2]+(f<<2)>>2]=t;f=L[i+4>>1];if(f&1){break Aa}I[i+4>>1]=f|1;if(!(!J[i>>2]|f&2)){J[i+144>>2]=0;I[i+4>>1]=f|3}f=J[n+28>>2];if((f|0)>=J[n+40>>2]){break b}J[i+8>>2]=f;J[J[n+8>>2]+(f<<2)>>2]=i;J[n+28>>2]=f+1}l=J[l+12>>2];if(l){continue}break}}f=c;c=0;a=b;if(f){continue}break}d=N[r+4>>2];J[h+24>>2]=20;J[h+16>>2]=1065353216;d=Q(d*Q(Q(1)-U));N[h+8>>2]=d;N[h+12>>2]=Q(1)/d;c=J[r+16>>2];a=0;H[h+28|0]=0;J[h+20>>2]=c;E=J[b+8>>2];f=0;c=Ui-128|0;Ui=c;Ba:{Ca:{w=J[e+8>>2];b=J[n+28>>2];if((w|0)<(b|0)){if((b|0)<=(E|0)){break Ca}if((b|0)<=0){l=J[n+24>>2];break Ba}while(1){b=J[J[n+8>>2]+(f<<2)>>2];l=J[b+48>>2];e=P(f,12);i=e+J[n+20>>2]|0;J[i>>2]=J[b+44>>2];J[i+4>>2]=l;N[(e+J[n+20>>2]|0)+8>>2]=N[b+56>>2];l=J[b+68>>2];i=e+J[n+24>>2]|0;J[i>>2]=J[b+64>>2];J[i+4>>2]=l;l=J[n+24>>2];N[(e+l|0)+8>>2]=N[b+72>>2];f=f+1|0;if((f|0)>2]){continue}break}break Ba}Z(11812,42333,397,93420);B()}Z(11788,42333,398,93420);B()}J[c+88>>2]=J[n+12>>2];J[c+92>>2]=J[n+36>>2];J[c+104>>2]=J[n>>2];b=J[h+20>>2];J[c+72>>2]=J[h+16>>2];J[c+76>>2]=b;b=J[h+28>>2];J[c+80>>2]=J[h+24>>2];J[c+84>>2]=b;b=J[h+12>>2];J[c+64>>2]=J[h+8>>2];J[c+68>>2]=b;b=J[n+20>>2];J[c+100>>2]=l;J[c+96>>2]=b;t=gV(c+12|0,c- -64|0);f=0;Da:{if(J[h+24>>2]<=0){break Da}while(1){M=Q(0);z=0;i=Ui+-64|0;Ui=i;e=1;if(J[t+48>>2]>0){while(1){l=J[t+36>>2]+P(z,88)|0;T=J[l+84>>2];ca=J[l+36>>2];e=J[l+32>>2];Ea:{if((e|0)!=(w|0)){S=Q(0);k=Q(0);if((e|0)!=(E|0)){break Ea}}S=N[l+64>>2];k=N[l+40>>2]}b=J[t+24>>2];ca=P(ca,12);G=b+ca|0;d=N[G+8>>2];g=N[G+4>>2];m=N[G>>2];G=P(e,12);e=G+b|0;o=N[e+8>>2];j=N[e+4>>2];s=N[e>>2];if((T|0)>0){O=N[l+56>>2];ia=N[l+48>>2];ja=N[l+68>>2];da=N[l+44>>2];ya=Q(k+da);fa=Q(-S);la=N[l+60>>2];_=Q(-la);ha=N[l+52>>2];qa=Q(-ha);e=0;while(1){q=Rj(o);N[i+60>>2]=q;U=Hj(o);N[i+56>>2]=U;W=Rj(d);N[i+44>>2]=W;$=Hj(d);N[i+40>>2]=$;N[i+52>>2]=j-Q(Q(U*ia)+Q(ha*q));N[i+48>>2]=s-Q(Q(q*ia)+Q(U*qa));N[i+36>>2]=g-Q(Q($*O)+Q(la*W));N[i+32>>2]=m-Q(Q(W*O)+Q($*_));OU(i+12|0,l,i+48|0,i+32|0,e);q=Q(0);U=N[i+28>>2];b=U>M;wa=N[i+20>>2];ta=Q(wa-m);W=N[i+16>>2];ua=N[i+24>>2];va=Q(ua-g);$=N[i+12>>2];pa=Q(Q(ta*W)-Q(va*$));ra=Q(Q(ja*pa)*pa);wa=Q(wa-s);ua=Q(ua-j);pa=Q(Q(wa*W)-Q(ua*$));pa=Q(ra+Q(Q(Q(S*pa)*pa)+ya));if(pa>Q(0)){q=Q(Q(U+Q(.004999999888241291))*Q(.75));q=q>2]}b=b+G|0;N[b+4>>2]=j;N[b>>2]=s;b=J[t+24>>2];N[(b+G|0)+8>>2]=o;b=b+ca|0;N[b+4>>2]=g;N[b>>2]=m;N[(ca+J[t+24>>2]|0)+8>>2]=d;z=z+1|0;if((z|0)>2]){continue}break}e=M>=Q(-.007499999832361937)}Ui=i- -64|0;if(e){break Da}f=f+1|0;if((f|0)>2]){continue}break}}e=P(w,12);i=e+J[n+20>>2]|0;l=J[i+4>>2];b=w<<2;f=J[b+J[n+8>>2]>>2];J[f+36>>2]=J[i>>2];J[f+40>>2]=l;i=b;b=J[n+8>>2];f=J[n+20>>2];N[J[i+b>>2]+52>>2]=N[(f+e|0)+8>>2];e=f;f=P(E,12);i=e+f|0;l=J[i+4>>2];e=b;b=E<<2;e=J[e+b>>2];J[e+36>>2]=J[i>>2];J[e+40>>2]=l;N[J[b+J[n+8>>2]>>2]+52>>2]=N[(f+J[n+20>>2]|0)+8>>2];iV(t);f=0;if(J[h+20>>2]>0){while(1){hV(t);f=f+1|0;if((f|0)>2]){continue}break}}l=0;if(J[n+28>>2]>0){d=N[h+8>>2];while(1){b=P(l,12);e=b+J[n+24>>2]|0;g=N[e>>2];k=Q(d*g);j=Q(k*k);m=N[e+4>>2];k=Q(d*m);k=Q(j+Q(k*k));if(k>Q(4)){k=Q(Q(2)/Q(Y(k)));m=Q(m*k);g=Q(g*k)}f=b+J[n+20>>2]|0;S=N[f+8>>2];j=N[f+4>>2];s=N[f>>2];o=N[e+8>>2];k=Q(d*o);if(Q(k*k)>Q(2.4674012660980225)){o=Q(o*Q(Q(1.5707963705062866)/(k>Q(0)?k:Q(-k))))}j=Q(j+Q(d*m));N[f+4>>2]=j;s=Q(s+Q(d*g));N[f>>2]=s;k=Q(Q(d*o)+S);N[(b+J[n+20>>2]|0)+8>>2]=k;f=b+J[n+24>>2]|0;N[f+4>>2]=m;N[f>>2]=g;N[(b+J[n+24>>2]|0)+8>>2]=o;b=J[J[n+8>>2]+(l<<2)>>2];N[b+72>>2]=o;N[b+68>>2]=m;N[b+64>>2]=g;N[b+56>>2]=k;N[b+48>>2]=j;N[b+44>>2]=s;g=Rj(k);N[b+24>>2]=g;k=Hj(k);N[b+20>>2]=k;o=j;m=N[b+28>>2];j=N[b+32>>2];N[b+16>>2]=o-Q(Q(k*m)+Q(g*j));N[b+12>>2]=s-Q(Q(g*m)-Q(k*j));l=l+1|0;if((l|0)>2]){continue}break}}if(!(!J[n+4>>2]|J[n+36>>2]<=0)){E=J[t+40>>2];e=c+116|0;l=0;while(1){w=J[J[n+12>>2]+(l<<2)>>2];i=E+P(l,152)|0;b=J[i+144>>2];J[c+124>>2]=b;Fa:{if((b|0)<=0){break Fa}f=0;if((b|0)!=1){T=b&2147483646;z=0;while(1){ca=f<<2;G=c+108|0;oa=i+P(f,36)|0;N[ca+G>>2]=N[oa+16>>2];N[e+ca>>2]=N[oa+20>>2];F=G;ca=f|1;G=ca<<2;ca=i+P(ca,36)|0;N[F+G>>2]=N[ca+16>>2];N[e+G>>2]=N[ca+20>>2];f=f+2|0;z=z+2|0;if((T|0)!=(z|0)){continue}break}}if(!(b&1)){break Fa}b=f<<2;f=i+P(f,36)|0;N[b+(c+108|0)>>2]=N[f+16>>2];N[b+e>>2]=N[f+20>>2]}b=J[n+4>>2];Zi[J[J[b>>2]+20>>2]](b,w,c+108|0);l=l+1|0;if((l|0)>2]){continue}break}}fV(t);Ui=c+128|0;if(J[n+28>>2]<=0){break ya}while(1){b=J[J[n+8>>2]+(a<<2)>>2];I[b+4>>1]=L[b+4>>1]&65534;Ga:{if(J[b>>2]!=2){break Ga}$E(b);l=J[b+112>>2];if(!l){break Ga}while(1){b=J[l+4>>2];J[b+4>>2]=J[b+4>>2]&-34;l=J[l+12>>2];if(l){continue}break}}a=a+1|0;if((a|0)>2]){continue}break}break ya}break da}dw(aa,aa);a=0;if(!K[p+102994|0]){break xa}H[p+102995|0]=0;a=8}if((a|0)!=8){continue}}break}QU(n);Ui=h+272|0;break ca}Z(58027,54641,722,70191);B()}N[p+103024>>2]=0;d=N[r+4>>2]}if(d>Q(0)){N[p+102988>>2]=N[r+8>>2]}b=J[p+102868>>2];Ha:{if(!(b&4)){break Ha}a=J[p+102952>>2];if(!a){break Ha}while(1){if(K[a+4|0]&32){J[a+84>>2]=0;J[a+76>>2]=0;J[a+80>>2]=0}a=J[a+96>>2];if(a){continue}break}}J[p+102868>>2]=b&-3;N[p+102996>>2]=0;Ui=r+32|0;Ia:{if(!J[A+103112>>2]){break Ia}a=J[A+102992>>2];if(!a){break Ia}d=N[J[A+36>>2]+68>>2];while(1){if(!(!(K[a+4|0]&32)|J[a>>2]!=2)){N[y+16>>2]=d*N[a+12>>2];g=N[a+16>>2];J[y+24>>2]=0;N[y+20>>2]=d*g;g=N[a+56>>2];J[y+144>>2]=0;J[y+148>>2]=0;g=Q(g*Q(.5));N[y+156>>2]=Rj(g);N[y+152>>2]=Hj(g);Zi[J[A+103112>>2]](J[a+148>>2],y+16|0,y+144|0)}a=J[a+96>>2];if(a){continue}break}}b=J[A+103072>>2];c=J[A+103068>>2];if((b|0)!=(c|0)){a=0;J[y+140>>2]=0;J[y+20>>2]=0;J[y+16>>2]=243500;f=Wu(y+32|0);J[y+108>>2]=0;J[y+112>>2]=-1;J[y+96>>2]=0;J[y+100>>2]=0;I[y+116>>1]=L[y+116>>1]&65534;J[y+20>>2]=J[A+36>>2];b=(b-c|0)/48|0;c=b>>>0<=1?1:b;while(1){b=J[A+103068>>2];if((J[A+103072>>2]-b|0)/48>>>0<=a>>>0){break d}b=b+P(a,48)|0;d=N[b>>2];N[y+148>>2]=na*N[b+4>>2];N[y+144>>2]=na*d;d=N[b+16>>2];N[y+12>>2]=na*N[b+20>>2];N[y+8>>2]=na*d;J[y+108>>2]=J[b+32>>2];I[y+114>>1]=L[b+40>>1];H[y+86|0]=K[y+86|0]&254;JU(p,y+16|0,y+144|0,y+8|0);Zi[J[u+80>>2]](f,b,J[u+84>>2]);a=a+1|0;if((c|0)!=(a|0)){continue}break}J[A+103072>>2]=J[A+103068>>2]}if(J[u+64>>2]){J[y+16>>2]=0;a=J[A+102972>>2];if(a){while(1){Ja:{if(!(K[a+4|0]&2)){break Ja}c=J[a+48>>2];b=J[a+52>>2];if(!K[c+44|0]&K[b+44|0]!=1){break Ja}Zi[J[u+64>>2]](J[c+48>>2],L[J[c+40>>2]+P(P(J[a+56>>2],H[J[c+12>>2]+20|0]&1),6)>>1],J[b+48>>2],L[J[b+40>>2]+P(P(J[a+60>>2],H[J[b+12>>2]+20|0]&1),6)>>1],J[u+68>>2])|0}a=J[a+12>>2];if(a){continue}break}}}f=J[A+102972>>2];J[y+8>>2]=0;QL(A);b=y+16|0;J[b>>2]=0;J[b+4>>2]=0;J[b+24>>2]=0;J[b+16>>2]=0;J[b+20>>2]=0;J[b+8>>2]=0;J[b+12>>2]=0;J[b>>2]=J[u+88>>2];J[b+4>>2]=J[u+92>>2];if(f){while(1){Ka:{if(!(K[f+4|0]&2)){break Ka}l=J[f+48>>2];i=J[f+52>>2];if(!K[l+44|0]&K[i+44|0]!=1){break Ka}n=J[f+132>>2];La:{if((n|0)<=0){d=Q(0);break La}e=f- -64|0;h=0;d=Q(0);a=0;if(n>>>0>=4){r=n&2147483644;c=0;while(1){g=N[(e+P(a,24)|0)+20>>2];d=d>g?d:g;g=N[(e+P(a|1,24)|0)+20>>2];d=d>g?d:g;g=N[(e+P(a|2,24)|0)+20>>2];d=d>g?d:g;g=N[(e+P(a|3,24)|0)+20>>2];d=d>g?d:g;a=a+4|0;c=c+4|0;if((r|0)!=(c|0)){continue}break}}c=n&3;if(!c){break La}while(1){g=N[(e+P(a,24)|0)+20>>2];d=d>g?d:g;a=a+1|0;h=h+1|0;if((c|0)!=(h|0)){continue}break}}if(!(N[ga+76>>2]<=d)){break Ka}a=J[i+8>>2];c=J[l+8>>2];J[b+8>>2]=c;c=J[c+148>>2];J[b+16>>2]=a;J[b+12>>2]=c;J[b+20>>2]=J[a+148>>2];a=J[f+60>>2];I[b+24>>1]=L[J[l+40>>2]+P(P(J[f+56>>2],H[J[l+12>>2]+20|0]&1),6)>>1];I[b+26>>1]=L[J[i+40>>2]+P(P(a,H[J[i+12>>2]+20|0]&1),6)>>1];TL(A,b)}f=J[f+12>>2];if(f){continue}break}}a=y+144|0;J[a>>2]=0;J[a+4>>2]=0;J[a>>2]=J[u+96>>2];J[a+4>>2]=J[u+100>>2];SL(A,a);n=Ui-48|0;Ui=n;a=J[p+102984>>2];Ma:{if(!a){break Ma}ca=J[a+4>>2];Na:{if(!(ca&1)){break Na}z=J[p+102952>>2];if(!z){break Na}while(1){b=J[z+100>>2];if(b){A=z+12|0;while(1){a=L[z+4>>1];Oa:{if(!(a&32)){J[n+8>>2]=1050253722;J[n>>2]=1056964608;J[n+4>>2]=1056964608;break Oa}c=J[z>>2];if(!c){J[n+8>>2]=1056964608;J[n>>2]=1056964608;J[n+4>>2]=1063675494;break Oa}if(!(a&2)){J[n+8>>2]=1058642330;J[n>>2]=1058642330;J[n+4>>2]=1058642330;break Oa}if((c|0)==1){J[n+8>>2]=1063675494;J[n>>2]=1056964608;J[n+4>>2]=1056964608;break Oa}J[n+8>>2]=1060320051;J[n>>2]=1063675494;J[n+4>>2]=1060320051}ga=0;h=Ui-1552|0;Ui=h;i=b;Pa:{Qa:{Ra:{Sa:{Ta:{Ua:{Va:{Wa:{r=J[b+12>>2];switch(J[r+4>>2]){case 0:break Sa;case 4:break Ta;case 2:break Ua;case 3:break Va;case 1:break Wa;default:break Ra}}k=N[A>>2];d=N[A+8>>2];m=N[r+24>>2];g=N[A+12>>2];j=N[r+28>>2];o=N[A+4>>2];N[h+36>>2]=Q(Q(d*m)+Q(g*j))+o;N[h+32>>2]=k+Q(Q(g*m)-Q(d*j));m=N[r+32>>2];j=N[r+36>>2];N[h+1004>>2]=o+Q(Q(d*m)+Q(g*j));N[h+1e3>>2]=k+Q(Q(g*m)-Q(d*j));a=J[p+102984>>2];Zi[J[J[a>>2]+24>>2]](a,h+32|0,h+1e3|0,n);break Ra}a=J[r+28>>2];d=N[A>>2];g=N[A+8>>2];b=J[r+24>>2];k=N[b>>2];m=N[A+12>>2];j=N[b+4>>2];N[h+36>>2]=Q(Q(g*k)+Q(m*j))+N[A+4>>2];N[h+32>>2]=d+Q(Q(m*k)-Q(g*j));if((a|0)<2){break Ra}aa=1;while(1){d=N[A>>2];g=N[A+8>>2];c=b+(aa<<3)|0;k=N[c>>2];m=N[A+12>>2];j=N[c+4>>2];N[h+1004>>2]=Q(Q(g*k)+Q(m*j))+N[A+4>>2];N[h+1e3>>2]=d+Q(Q(m*k)-Q(g*j));c=J[p+102984>>2];f=h+32|0;Zi[J[J[c>>2]+24>>2]](c,f,h+1e3|0,n);c=J[p+102984>>2];Zi[J[J[c>>2]+16>>2]](c,f,Q(.05000000074505806),n);c=J[h+1004>>2];J[h+32>>2]=J[h+1e3>>2];J[h+36>>2]=c;aa=aa+1|0;if((a|0)!=(aa|0)){continue}break}break Ra}a=J[r+416>>2];if((a|0)>=17){break Qa}if((a|0)>0){c=r+160|0;k=N[A+4>>2];m=N[A>>2];d=N[A+8>>2];g=N[A+12>>2];b=0;while(1){f=b<<3;e=f+(h+32|0)|0;f=c+f|0;j=N[f>>2];o=N[f+4>>2];N[e+4>>2]=k+Q(Q(d*j)+Q(g*o));N[e>>2]=m+Q(Q(g*j)-Q(d*o));b=b+1|0;if((a|0)!=(b|0)){continue}break}}b=J[p+102984>>2];Zi[J[J[b>>2]+12>>2]](b,h+32|0,a,n);break Ra}if(!(H[r+60|0]&1)){break Ra}oa=Zi[J[J[r>>2]+12>>2]](r)|0;J[h+1416>>2]=0;a=h;J[a+1004>>2]=2;J[a+1008>>2]=1008981770;J[a+1e3>>2]=247140;H[a+1020|0]=0;J[a+1024>>2]=0;J[a+1028>>2]=0;J[a+80>>2]=0;J[a+84>>2]=0;I[a+88>>1]=0;J[a+140>>2]=0;J[a+144>>2]=0;I[a+148>>1]=0;J[a+200>>2]=0;J[a+204>>2]=0;I[a+208>>1]=0;J[a+72>>2]=0;J[a+76>>2]=0;J[a+36>>2]=1;J[a+40>>2]=1008981770;J[a+32>>2]=247060;H[a+52|0]=0;H[a+112|0]=0;J[a+132>>2]=0;J[a+136>>2]=0;J[a+96>>2]=1;J[a+100>>2]=1008981770;J[a+92>>2]=247060;H[a+172|0]=0;J[a+156>>2]=1;J[a+160>>2]=1008981770;J[a+152>>2]=247060;J[a+192>>2]=0;J[a+196>>2]=0;J[a+260>>2]=0;J[a+264>>2]=0;I[a+268>>1]=0;J[a+320>>2]=0;J[a+324>>2]=0;I[a+328>>1]=0;I[a+388>>1]=0;J[a+380>>2]=0;J[a+384>>2]=0;J[a+212>>2]=247060;H[a+232|0]=0;J[a+216>>2]=1;J[a+220>>2]=1008981770;J[a+252>>2]=0;J[a+256>>2]=0;H[a+292|0]=0;J[a+272>>2]=247060;J[a+276>>2]=1;J[a+280>>2]=1008981770;J[a+312>>2]=0;J[a+316>>2]=0;H[a+352|0]=0;J[a+332>>2]=247060;J[a+336>>2]=1;J[a+340>>2]=1008981770;J[a+372>>2]=0;J[a+376>>2]=0;I[a+448>>1]=0;J[a+440>>2]=0;J[a+444>>2]=0;I[a+508>>1]=0;J[a+500>>2]=0;J[a+504>>2]=0;I[a+568>>1]=0;J[a+560>>2]=0;J[a+564>>2]=0;J[a+392>>2]=247060;H[a+412|0]=0;J[a+396>>2]=1;J[a+400>>2]=1008981770;J[a+432>>2]=0;J[a+436>>2]=0;H[a+472|0]=0;J[a+452>>2]=247060;J[a+456>>2]=1;J[a+460>>2]=1008981770;J[a+492>>2]=0;J[a+496>>2]=0;J[a+512>>2]=247060;J[a+516>>2]=1;J[a+520>>2]=1008981770;J[a+552>>2]=0;J[a+556>>2]=0;H[a+532|0]=K[a+532|0]&254;H[a+592|0]=K[a+592|0]&254;J[a+576>>2]=1;J[a+580>>2]=1008981770;J[a+572>>2]=247060;I[a+628>>1]=0;J[a+620>>2]=0;J[a+624>>2]=0;J[a+612>>2]=0;J[a+616>>2]=0;H[a+652|0]=K[a+652|0]&254;J[a+636>>2]=1;J[a+640>>2]=1008981770;J[a+632>>2]=247060;I[a+688>>1]=0;J[a+680>>2]=0;J[a+684>>2]=0;J[a+672>>2]=0;J[a+676>>2]=0;H[a+712|0]=K[a+712|0]&254;J[a+696>>2]=1;J[a+700>>2]=1008981770;J[a+692>>2]=247060;I[a+748>>1]=0;J[a+740>>2]=0;J[a+744>>2]=0;J[a+732>>2]=0;J[a+736>>2]=0;H[a+772|0]=K[a+772|0]&254;J[a+756>>2]=1;J[a+760>>2]=1008981770;J[a+752>>2]=247060;I[a+808>>1]=0;J[a+800>>2]=0;J[a+804>>2]=0;J[a+792>>2]=0;J[a+796>>2]=0;H[a+832|0]=K[a+832|0]&254;J[a+816>>2]=1;J[a+820>>2]=1008981770;J[a+812>>2]=247060;I[a+868>>1]=0;J[a+860>>2]=0;J[a+864>>2]=0;J[a+852>>2]=0;J[a+856>>2]=0;H[a+892|0]=K[a+892|0]&254;J[a+876>>2]=1;J[a+880>>2]=1008981770;J[a+872>>2]=247060;I[a+928>>1]=0;J[a+920>>2]=0;J[a+924>>2]=0;J[a+912>>2]=0;J[a+916>>2]=0;H[a+952|0]=K[a+952|0]&254;J[a+936>>2]=1;J[a+940>>2]=1008981770;J[a+932>>2]=247060;I[a+988>>1]=0;J[a+980>>2]=0;J[a+984>>2]=0;J[a+972>>2]=0;J[a+976>>2]=0;d=N[n>>2];g=N[n+4>>2];N[a+28>>2]=N[n+8>>2]*Q(.800000011920929);N[a+24>>2]=g*Q(.800000011920929);N[a+20>>2]=d*Q(.800000011920929);if(!oa){break Ra}Ea=a+1160|0;while(1){Xa:{if(!L[J[i+40>>2]+P(P(H[J[i+12>>2]+20|0]&1,ga),6)>>1]|J[J[r+32>>2]+(ga<<2)>>2]==-1){break Xa}VE(r,ga,h+1e3|0);a=J[h+1416>>2];if((a|0)>=17){break Qa}if((a|0)>0){k=N[A+4>>2];m=N[A>>2];d=N[A+8>>2];g=N[A+12>>2];aa=0;while(1){b=aa<<3;c=b+(h+1424|0)|0;b=b+Ea|0;j=N[b>>2];o=N[b+4>>2];N[c+4>>2]=k+Q(Q(d*j)+Q(g*o));N[c>>2]=m+Q(Q(g*j)-Q(d*o));aa=aa+1|0;if((a|0)!=(aa|0)){continue}break}}b=J[p+102984>>2];Zi[J[J[b>>2]+12>>2]](b,h+1424|0,a,h+20|0);aa=0;a=J[r+56>>2];b=(ga>>>0)/(a>>>0)|0;E=b;t=0;T=Ui-256|0;Ui=T;c=K[J[i+12>>2]+20|0];f=J[i+40>>2];a=P(a,b);w=ga-a|0;a=a+w|0;ka=Ko(r,a,T+128|0);Ya:{if(ka){sa=f+P(P(a,c&1),6)|0;b=-1;while(1){c=(t<<3)+172688|0;a=E+J[c>>2]|0;Za:{if((a|0)<0|(a|0)>=J[r+52>>2]){break Za}c=w+J[c+4>>2]|0;if((c|0)<0){break Za}f=J[r+56>>2];if((f|0)<=(c|0)){break Za}a=c+P(a,f)|0;e=Ko(r,a,T);if(L[sa>>1]!=L[J[i+40>>2]+P(P(a,H[J[i+12>>2]+20|0]&1),6)>>1]){break Za}d=N[r+44>>2];g=N[r+48>>2];d=Q((d>g?d:g)*Q(.009999999776482582));d=Q(d*d);c=0;while(1){l=c;c=c+1|0;G=(ka|0)==(c|0);a=T+128|0;f=a+((G?0:c)<<3)|0;g=N[f+4>>2];k=N[f>>2];a=a+(l<<3)|0;m=N[a+4>>2];j=N[a>>2];f=0;while(1){_a:{a=f;if((e|0)==(a|0)){a=e;break _a}f=a+1|0;X=T+(a<<3)|0;o=Q(k-N[X>>2]);s=Q(o*o);o=Q(g-N[X+4>>2]);if(!(d>Q(s+Q(o*o)))){continue}X=T+(((e|0)!=(f|0)?f:0)<<3)|0;o=Q(j-N[X>>2]);s=Q(o*o);o=Q(m-N[X+4>>2]);if(!(d>Q(s+Q(o*o)))){continue}}break}b=(Ia=-1,Ja=oxa(-2,l),Ka=a>>>0>=e>>>0,Ka?Ia:Ja)&b;if(!G){continue}break}}t=t+1|0;if((t|0)!=4){continue}break}break Ya}b=-1;$a:{if((E|0)<0){if((E|0)!=-1){break Ya}a=0;break $a}ab:{if((w|0)<-1|(E|0)>=J[r+52>>2]){break ab}a=w+1|0;c=J[r+56>>2];if((a|0)>=(c|0)){break ab}Ko(r,a+P(c,E)|0,T)}a=E+1|0}bb:{if((w|0)<0|(a|0)>=J[r+52>>2]){break bb}c=J[r+56>>2];if((c|0)<=(w|0)){break bb}Ko(r,w+P(a,c)|0,T)}if((E|0)<0){break Ya}cb:{if((w|0)<=0|(E|0)>=J[r+52>>2]){break cb}a=J[r+56>>2];if((a|0)<(w|0)){break cb}Ko(r,(w-1|0)+P(a,E)|0,T)}if(!E|(E|0)>J[r+52>>2]|(w|0)<0){break Ya}a=J[r+56>>2];if((a|0)<=(w|0)){break Ya}Ko(r,w+P(a,E-1|0)|0,T)}Ui=T+256|0;Fa=h+32|0;l=b;t=0;b=0;sa=0;E=Ui-256|0;Ui=E;db:{if(L[(J[J[r+40>>2]+8>>2]+(J[J[r+32>>2]+(ga<<2)>>2]<<2)|0)+2>>1]<17){G=Ko(r,ga,E);Ba=G>>>0>=16?16:G;if(!Ba){break db}f=G-1|0;c=2;a=1;while(1){e=a;a=c;if(l>>>b&1){T=E+(b<<3)|0;ka=J[T+4>>2];w=Fa+P(t,60)|0;c=w;J[c+24>>2]=J[T>>2];J[c+28>>2]=ka;ka=E+(e<<3)|0;X=J[ka>>2];F=J[ka+4>>2];I[c+56>>1]=0;J[c+32>>2]=X;J[c+36>>2]=F;H[c+56|0]=1;c=E+(f<<3)|0;eb:{if(l>>>f&1){f=J[c+4>>2];J[w+40>>2]=J[c>>2];J[w+44>>2]=f;break eb}g=N[T>>2];m=N[c>>2];k=N[T+4>>2];s=N[c+4>>2];d=Q(k-s);j=Q(d*d);o=Q(g-m);S=Q(o*o);c=(j>S?j:S)==j;c=((c?d>=Q(0)?1:-1:0)+ga|0)+P(J[r+56>>2],c?0:o<=Q(0)?1:-1)|0;f=J[J[r+32>>2]+(c<<2)>>2];fb:{if((f|0)==-1){d=Q(s-k);d=Q(d+d);g=Q(m-g);g=Q(g+g);break fb}T=J[J[r+40>>2]+8>>2];X=Ko(r,c,E+128|0);c=L[(T+(f<<2)|0)+2>>1];gb:{if(!c){c=0;break gb}Aa=c&1;hb:{if((c|0)==1){d=Q(34028234663852886e22);f=0;c=0;break hb}za=c&65534;d=Q(34028234663852886e22);f=0;c=0;T=0;while(1){F=E+128|0;Ca=f|1;ba=F+(Ca<<3)|0;m=Q(N[ba>>2]-g);F=F+(f<<3)|0;j=Q(N[F>>2]-g);o=Q(j*j);j=Q(N[F+4>>2]-k);j=Q(o+Q(j*j));F=j>2]-k);m=Q(o+Q(m*m));d=F?j:d;ba=m>2]-g);g=Q(d*d);d=Q(N[c+4>>2]-k);c=j>Q(g+Q(d*d))?f:F}c=(E+128|0)+(((c+X|0)-1>>>0)%(X>>>0)<<3)|0;d=N[c+4>>2];g=N[c>>2]}N[w+44>>2]=d;N[w+40>>2]=g}H[w+57|0]=1;ib:{if(l>>>e&1){c=E+(a<<3)|0;f=J[c+4>>2];J[w+48>>2]=J[c>>2];J[w+52>>2]=f;break ib}c=E+(a<<3)|0;k=N[c>>2];m=N[ka+4>>2];d=Q(N[c+4>>2]-m);j=Q(d*d);g=N[ka>>2];k=Q(k-g);o=Q(k*k);c=(j>o?j:o)==j;c=((c?d>=Q(0)?1:-1:0)+ga|0)+P(J[r+56>>2],c?0:k<=Q(0)?1:-1)|0;f=J[J[r+32>>2]+(c<<2)>>2];jb:{if((f|0)==-1){d=Q(d+d);g=Q(k+k);break jb}T=J[J[r+40>>2]+8>>2];ka=Ko(r,c,E+128|0);c=L[(T+(f<<2)|0)+2>>1];kb:{if(!c){c=0;break kb}ba=c&1;lb:{if((c|0)==1){d=Q(34028234663852886e22);f=0;c=0;break lb}Aa=c&65534;d=Q(34028234663852886e22);f=0;c=0;T=0;while(1){X=E+128|0;za=f|1;F=X+(za<<3)|0;k=Q(N[F>>2]-g);X=X+(f<<3)|0;j=Q(N[X>>2]-g);o=Q(j*j);j=Q(N[X+4>>2]-m);j=Q(o+Q(j*j));X=j>2]-m);k=Q(o+Q(k*k));d=X?j:d;F=k>2]-g);g=Q(d*d);d=Q(N[c+4>>2]-m);c=k>Q(g+Q(d*d))?f:F}c=(E+128|0)+(((c+ka|0)+1>>>0)%(ka>>>0)<<3)|0;d=N[c+4>>2];g=N[c>>2]}N[w+52>>2]=d;N[w+48>>2]=g}t=t+1|0}c=(a+1>>>0)%(G>>>0)|0;f=b;b=e;sa=sa+1|0;if((Ba|0)!=(sa|0)){continue}break}break db}Z(105899,41688,272,49591);B()}Ui=E+256|0;if(!t){break Xa}while(1){k=N[A>>2];d=N[A+8>>2];a=(h+32|0)+P(aa,60)|0;m=N[a+24>>2];g=N[A+12>>2];j=N[a+28>>2];o=N[A+4>>2];N[h+1428>>2]=Q(Q(d*m)+Q(g*j))+o;N[h+1424>>2]=k+Q(Q(g*m)-Q(d*j));m=N[a+32>>2];j=N[a+36>>2];N[h+16>>2]=o+Q(Q(d*m)+Q(g*j));N[h+12>>2]=k+Q(Q(g*m)-Q(d*j));a=J[p+102984>>2];Zi[J[J[a>>2]+24>>2]](a,h+1424|0,h+12|0,n);aa=aa+1|0;if((aa|0)!=(t|0)){continue}break}}ga=ga+1|0;if((oa|0)!=(ga|0)){continue}break}break Ra}k=N[A>>2];d=N[A+8>>2];m=N[r+24>>2];g=N[A+12>>2];j=N[r+28>>2];N[h+1004>>2]=Q(Q(d*m)+Q(g*j))+N[A+4>>2];N[h+1e3>>2]=k+Q(Q(g*m)-Q(d*j));k=N[r+8>>2];N[h+1428>>2]=d+Q(g*Q(0));N[h+1424>>2]=g-Q(d*Q(0));a=J[p+102984>>2];b=h+1e3|0;Zi[J[J[a>>2]+20>>2]](a,b,k,h+1424|0,n);a=J[p+102984>>2];N[h+24>>2]=Q(k*N[h+1428>>2])+N[h+1004>>2];N[h+20>>2]=Q(k*N[h+1424>>2])+N[h+1e3>>2];d=N[n>>2];g=N[n+4>>2];N[h+40>>2]=Q(1)-N[n+8>>2];N[h+36>>2]=Q(1)-g;N[h+32>>2]=Q(1)-d;Zi[J[J[a>>2]+24>>2]](a,b,h+20|0,h+32|0)}Ui=h+1552|0;break Pa}Z(105881,42374,1041,47661);B()}b=J[i+4>>2];if(b){continue}break}}z=J[z+96>>2];if(z){continue}break}}mb:{if(!(ca&2)){break mb}b=J[p+102956>>2];if(!b){break mb}while(1){a=Ui+-64|0;Ui=a;c=J[b+52>>2];f=J[b+48>>2];e=J[f+16>>2];J[a+56>>2]=J[f+12>>2];J[a+60>>2]=e;f=J[c+16>>2];J[a+48>>2]=J[c+12>>2];J[a+52>>2]=f;Zi[J[J[b>>2]>>2]](a+40|0,b);Zi[J[J[b>>2]+4>>2]](a+32|0,b);J[a+28>>2]=1061997773;J[a+20>>2]=1056964608;J[a+24>>2]=1061997773;nb:{ob:{switch(J[b+4>>2]-3|0){case 0:c=J[p+102984>>2];Zi[J[J[c>>2]+24>>2]](c,a+40|0,a+32|0,a+20|0);break nb;case 1:f=J[b+72>>2];c=a+12|0;J[c>>2]=J[b+68>>2];J[c+4>>2]=f;e=J[b+80>>2];f=a+4|0;J[f>>2]=J[b+76>>2];J[f+4>>2]=e;h=J[p+102984>>2];e=a+20|0;Zi[J[J[h>>2]+24>>2]](h,c,a+40|0,e);h=J[p+102984>>2];Zi[J[J[h>>2]+24>>2]](h,f,a+32|0,e);h=J[p+102984>>2];Zi[J[J[h>>2]+24>>2]](h,c,f,e);break nb;case 2:break nb;default:break ob}}f=J[p+102984>>2];e=a+40|0;c=a+20|0;Zi[J[J[f>>2]+24>>2]](f,a+56|0,e,c);f=J[p+102984>>2];i=e;e=a+32|0;Zi[J[J[f>>2]+24>>2]](f,i,e,c);f=J[p+102984>>2];Zi[J[J[f>>2]+24>>2]](f,a+48|0,e,c)}Ui=a- -64|0;b=J[b+12>>2];if(b){continue}break}}pb:{if(!(ca&8)){break pb}J[n+44>>2]=1063675494;J[n+36>>2]=1050253722;J[n+40>>2]=1063675494;f=J[p+102932>>2];if(!f){break pb}c=n+8|0;while(1){qb:{if((J[f+4>>2]&6)!=6){break qb}a=J[f+48>>2];b=J[a+8>>2]+12|0;d=N[J[a+12>>2]+8>>2];a=J[f+52>>2];UE(n,f- -64|0,b,d,J[a+8>>2]+12|0,N[J[a+12>>2]+8>>2]);a=J[f+132>>2];if((a|0)<=0){break qb}b=0;if((a|0)!=1){e=a&-2;z=0;while(1){h=J[p+102984>>2];i=c+(b<<3)|0;l=n+36|0;Zi[J[J[h>>2]+32>>2]](h,i,n,l);h=J[p+102984>>2];Zi[J[J[h>>2]+32>>2]](h,i+8|0,n,l);b=b+2|0;z=z+2|0;if((e|0)!=(z|0)){continue}break}}if(!(a&1)){break qb}a=J[p+102984>>2];Zi[J[J[a>>2]+32>>2]](a,c+(b<<3)|0,n,n+36|0)}f=J[f+12>>2];if(f){continue}break}}rb:{if(!(ca&4)){break rb}J[n+44>>2]=1063675494;J[n+36>>2]=1063675494;J[n+40>>2]=1050253722;f=J[p+102952>>2];if(!f){break rb}while(1){sb:{if(!(K[f+4|0]&32)){break sb}b=J[f+100>>2];if(!b){break sb}while(1){if(J[b+28>>2]>0){z=0;while(1){a=J[(J[b+24>>2]+P(z,28)|0)+24>>2];if((a|0)<0|(a|0)>=J[p+102884>>2]){break c}a=J[p+102876>>2]+P(a,36)|0;d=N[a+4>>2];g=N[a+8>>2];k=N[a>>2];m=N[a+12>>2];N[n+28>>2]=m;N[n+24>>2]=k;N[n+20>>2]=m;N[n+16>>2]=g;N[n+12>>2]=d;N[n+8>>2]=g;N[n+4>>2]=d;N[n>>2]=k;a=J[p+102984>>2];Zi[J[J[a>>2]+8>>2]](a,n,4,n+36|0);z=z+1|0;if((z|0)>2]){continue}break}}b=J[b+4>>2];if(b){continue}break}}f=J[f+96>>2];if(f){continue}break}}if(!(ca&16)){break Ma}b=J[p+102952>>2];if(!b){break Ma}while(1){a=J[b+24>>2];J[n+8>>2]=J[b+20>>2];J[n+12>>2]=a;a=J[b+16>>2];J[n>>2]=J[b+12>>2];J[n+4>>2]=a;a=J[b+48>>2];J[n>>2]=J[b+44>>2];J[n+4>>2]=a;a=J[p+102984>>2];Zi[J[J[a>>2]+28>>2]](a,n);b=J[b+96>>2];if(b){continue}break}}Ui=n+48|0;Ui=y+160|0}b=J[u+124>>2];a=J[ma+4>>2];tb:{if(b>>>0>=a>>>0){if(K[300320]){break tb}J[u+32>>2]=a;J[u+36>>2]=J[56054];dj(3,88458,125168,u+32|0)}H[300320]=a>>>0<=b>>>0}b=J[u+112>>2];a=J[ma+12>>2];ub:{if(b>>>0>=a>>>0){if(K[300321]){break ub}J[u+16>>2]=a;J[u+20>>2]=J[56055];dj(3,88458,125065,u+16|0)}H[300321]=a>>>0<=b>>>0}vb:{if(!xa){break vb}b=J[xa>>2];if(!b){break vb}Ga=J[b+3216>>2];Ha=J[b+3220>>2]}J[u+128>>2]=Ga;J[u+132>>2]=Ha;tv(J[xa>>2],u+128|0,1);if(J[75074]>0){ym(J[xa>>2])}a=K[ma+16|0];b=J[ea+132>>2];wb:{if(K[ma+17|0]==1){J[b+60>>2]=a&1?7631:0;break wb}J[(b+103084|0)+4>>2]=a&1?11:0}a=J[ea+152>>2]-J[ea+148>>2]>>2;J[75044]=a+J[75044];J[u+40>>2]=a;J[u+44>>2]=0;J[u+8>>2]=a;J[u+12>>2]=0}Ui=u+144|0;return}Z(112533,53895,429,12693);B()}Z(145396,53895,487,84789);B()}Z(2361,55750,166,99541);B()}Z(2108,55837,54,76114);B()}Z(2296,55837,62,76114);B()}function TM(a,b,c,d,e){var f=0,g=0,h=0,i=0,j=0,k=0,l=0,m=0,n=0,o=0,p=0,q=0,r=0,s=0,t=0,u=0,v=0,w=0,x=0,y=0,z=0,A=0,C=0,D=0,E=0,F=0,G=0,N=0,O=0,Q=0,R=0,S=0,T=0,U=0,V=0,W=0,X=0,Y=0,_=0,$=0,aa=0,ba=0,ca=0,da=0,ea=0;v=Ui-224|0;Ui=v;J[218570]=d;J[v+216>>2]=a;J[v+204>>2]=0;J[v+68>>2]=0;J[v+52>>2]=0;b=a+b|0;J[v+220>>2]=b;J[v+208>>2]=a;J[v+212>>2]=b;z=Ui-2064|0;Ui=z;O=v+24|0;r=Ui-144|0;Ui=r;J[z+12>>2]=0;J[z+4>>2]=8;J[z+8>>2]=0;d=v+36|0;a=d+41|0;m=d+40|0;a:{b:{c:{d:{h=J[d+176>>2];f=J[d+172>>2];e:{if(h>>>0>f>>>0){b=f+1|0;J[d+172>>2]=b;g=K[f|0];break e}if(!J[d+32>>2]){break d}b=Zi[J[d+16>>2]](J[d+28>>2],m,J[d+36>>2])|0;J[d+168>>2]=J[d+168>>2]+(J[d+172>>2]-J[d+180>>2]|0);f:{if(!b){H[d+40|0]=0;J[d+32>>2]=0;h=a;break f}g=K[m|0];h=b+m|0}J[d+172>>2]=a;J[d+176>>2]=h;b=a}if((g&255)!=137){break d}g:{if(b>>>0>=h>>>0){if(!J[d+32>>2]){break d}b=Zi[J[d+16>>2]](J[d+28>>2],m,J[d+36>>2])|0;J[d+168>>2]=J[d+168>>2]+(J[d+172>>2]-J[d+180>>2]|0);h:{if(b){h=b+m|0;g=K[m|0];break h}H[d+40|0]=0;J[d+32>>2]=0;h=a;g=0}J[d+172>>2]=a;J[d+176>>2]=h;k=a;break g}k=b+1|0;J[d+172>>2]=k;g=K[b|0]}if((g&255)!=80){break d}i:{if(h>>>0<=k>>>0){if(!J[d+32>>2]){break d}b=Zi[J[d+16>>2]](J[d+28>>2],m,J[d+36>>2])|0;J[d+168>>2]=J[d+168>>2]+(J[d+172>>2]-J[d+180>>2]|0);j:{if(b){h=b+m|0;g=K[m|0];break j}H[d+40|0]=0;J[d+32>>2]=0;h=a;g=0}J[d+172>>2]=a;J[d+176>>2]=h;b=a;break i}b=k+1|0;J[d+172>>2]=b;g=K[k|0]}if((g&255)!=78){break d}k:{if(b>>>0>=h>>>0){if(!J[d+32>>2]){break d}b=Zi[J[d+16>>2]](J[d+28>>2],m,J[d+36>>2])|0;J[d+168>>2]=J[d+168>>2]+(J[d+172>>2]-J[d+180>>2]|0);l:{if(b){h=b+m|0;g=K[m|0];break l}H[d+40|0]=0;J[d+32>>2]=0;h=a;g=0}J[d+172>>2]=a;J[d+176>>2]=h;k=a;break k}k=b+1|0;J[d+172>>2]=k;g=K[b|0]}if((g&255)!=71){break d}m:{if(h>>>0<=k>>>0){if(!J[d+32>>2]){break d}b=Zi[J[d+16>>2]](J[d+28>>2],m,J[d+36>>2])|0;J[d+168>>2]=J[d+168>>2]+(J[d+172>>2]-J[d+180>>2]|0);n:{if(b){h=b+m|0;g=K[m|0];break n}H[d+40|0]=0;J[d+32>>2]=0;h=a;g=0}J[d+172>>2]=a;J[d+176>>2]=h;b=a;break m}b=k+1|0;J[d+172>>2]=b;g=K[k|0]}if((g&255)!=13){break d}o:{if(b>>>0>=h>>>0){if(!J[d+32>>2]){break d}b=Zi[J[d+16>>2]](J[d+28>>2],m,J[d+36>>2])|0;J[d+168>>2]=J[d+168>>2]+(J[d+172>>2]-J[d+180>>2]|0);p:{if(b){h=b+m|0;g=K[m|0];break p}H[d+40|0]=0;J[d+32>>2]=0;h=a;g=0}J[d+172>>2]=a;J[d+176>>2]=h;k=a;break o}k=b+1|0;J[d+172>>2]=k;g=K[b|0]}if((g&255)!=10){break d}q:{if(h>>>0<=k>>>0){if(!J[d+32>>2]){break d}b=Zi[J[d+16>>2]](J[d+28>>2],m,J[d+36>>2])|0;J[d+168>>2]=J[d+168>>2]+(J[d+172>>2]-J[d+180>>2]|0);r:{if(b){h=b+m|0;g=K[m|0];break r}H[d+40|0]=0;J[d+32>>2]=0;h=a;g=0}J[d+172>>2]=a;J[d+176>>2]=h;break q}a=k+1|0;J[d+172>>2]=a;g=K[k|0]}if((g&255)!=26){break d}s:{if(a>>>0>=h>>>0){if(!J[d+32>>2]){break d}a=Zi[J[d+16>>2]](J[d+28>>2],m,J[d+36>>2])|0;J[d+168>>2]=J[d+168>>2]+(J[d+172>>2]-J[d+180>>2]|0);if(a){break s}H[d+40|0]=0;J[d+32>>2]=0;break d}J[d+172>>2]=a+1;m=a}if(K[m|0]!=10){break d}a=J[d+184>>2];J[d+172>>2]=J[d+180>>2];J[d+176>>2]=a;J[r+16>>2]=d;break c}J[218569]=93911;a=J[d+184>>2];J[d+172>>2]=J[d+180>>2];J[d+176>>2]=a;a=Zj(1,18456);if(a){J[a>>2]=d;J[a+18408>>2]=-1;H[a+18372|0]=255;J[a+18452>>2]=2279;J[a+18448>>2]=2280;J[a+18444>>2]=2281;b=gq(a);f=J[d+184>>2];J[d+172>>2]=J[d+180>>2];J[d+176>>2]=f;cj(a);if((b|0)==216){break b}}J[218569]=10442;h=0;break a}h=0;g=0;m=0;o=Ui-5120|0;Ui=o;H[o+14|0]=0;I[o+12>>1]=0;p=r+16|0;J[p+12>>2]=0;J[p+4>>2]=0;J[p+8>>2]=0;i=J[p>>2];d=i+41|0;j=i+40|0;t:{u:{v:{f=J[i+176>>2];b=J[i+172>>2];w:{if(f>>>0>b>>>0){a=b+1|0;J[i+172>>2]=a;g=K[b|0];break w}if(!J[i+32>>2]){break v}a=Zi[J[i+16>>2]](J[i+28>>2],j,J[i+36>>2])|0;J[i+168>>2]=J[i+168>>2]+(J[i+172>>2]-J[i+180>>2]|0);x:{if(!a){H[i+40|0]=0;J[i+32>>2]=0;f=d;break x}g=K[j|0];f=a+j|0}J[i+172>>2]=d;J[i+176>>2]=f;a=d}if((g&255)!=137){break v}y:{if(a>>>0>=f>>>0){if(!J[i+32>>2]){break v}a=Zi[J[i+16>>2]](J[i+28>>2],j,J[i+36>>2])|0;J[i+168>>2]=J[i+168>>2]+(J[i+172>>2]-J[i+180>>2]|0);z:{if(a){g=K[j|0];f=a+j|0;break z}g=0;H[i+40|0]=0;J[i+32>>2]=0;f=d}J[i+172>>2]=d;J[i+176>>2]=f;b=d;break y}b=a+1|0;J[i+172>>2]=b;g=K[a|0]}if((g&255)!=80){break v}A:{if(b>>>0>=f>>>0){if(!J[i+32>>2]){break v}a=Zi[J[i+16>>2]](J[i+28>>2],j,J[i+36>>2])|0;J[i+168>>2]=J[i+168>>2]+(J[i+172>>2]-J[i+180>>2]|0);B:{if(a){g=K[j|0];f=a+j|0;break B}g=0;H[i+40|0]=0;J[i+32>>2]=0;f=d}J[i+172>>2]=d;J[i+176>>2]=f;a=d;break A}a=b+1|0;J[i+172>>2]=a;g=K[b|0]}if((g&255)!=78){break v}C:{if(a>>>0>=f>>>0){if(!J[i+32>>2]){break v}a=Zi[J[i+16>>2]](J[i+28>>2],j,J[i+36>>2])|0;J[i+168>>2]=J[i+168>>2]+(J[i+172>>2]-J[i+180>>2]|0);D:{if(a){g=K[j|0];f=a+j|0;break D}g=0;H[i+40|0]=0;J[i+32>>2]=0;f=d}J[i+172>>2]=d;J[i+176>>2]=f;b=d;break C}b=a+1|0;J[i+172>>2]=b;g=K[a|0]}if((g&255)!=71){break v}E:{if(b>>>0>=f>>>0){if(!J[i+32>>2]){break v}a=Zi[J[i+16>>2]](J[i+28>>2],j,J[i+36>>2])|0;J[i+168>>2]=J[i+168>>2]+(J[i+172>>2]-J[i+180>>2]|0);F:{if(a){g=K[j|0];f=a+j|0;break F}g=0;H[i+40|0]=0;J[i+32>>2]=0;f=d}J[i+172>>2]=d;J[i+176>>2]=f;a=d;break E}a=b+1|0;J[i+172>>2]=a;g=K[b|0]}if((g&255)!=13){break v}G:{if(a>>>0>=f>>>0){if(!J[i+32>>2]){break v}a=Zi[J[i+16>>2]](J[i+28>>2],j,J[i+36>>2])|0;J[i+168>>2]=J[i+168>>2]+(J[i+172>>2]-J[i+180>>2]|0);H:{if(a){g=K[j|0];f=a+j|0;break H}g=0;H[i+40|0]=0;J[i+32>>2]=0;f=d}J[i+172>>2]=d;J[i+176>>2]=f;b=d;break G}b=a+1|0;J[i+172>>2]=b;g=K[a|0]}if((g&255)!=10){break v}I:{if(b>>>0>=f>>>0){if(!J[i+32>>2]){break v}a=Zi[J[i+16>>2]](J[i+28>>2],j,J[i+36>>2])|0;J[i+168>>2]=J[i+168>>2]+(J[i+172>>2]-J[i+180>>2]|0);J:{if(a){g=K[j|0];f=a+j|0;break J}g=0;H[i+40|0]=0;J[i+32>>2]=0;f=d}J[i+172>>2]=d;J[i+176>>2]=f;a=d;break I}a=b+1|0;J[i+172>>2]=a;g=K[b|0]}if((g&255)!=26){break v}K:{if(a>>>0>=f>>>0){if(!J[i+32>>2]){break v}a=Zi[J[i+16>>2]](J[i+28>>2],j,J[i+36>>2])|0;J[i+168>>2]=J[i+168>>2]+(J[i+172>>2]-J[i+180>>2]|0);L:{if(a){g=a+j|0;f=K[j|0];break L}H[i+40|0]=0;J[i+32>>2]=0;g=d;f=0}J[i+172>>2]=d;J[i+176>>2]=g;break K}J[i+172>>2]=a+1;f=K[a|0]}if((f&255)!=10){break v}f=1;while(1){b=rl(i)<<16;g=rl(i);n=b|g;M:{N:{O:{P:{Q:{R:{S:{T:{U:{V:{W:{X:{Y:{k=rl(i);a=k<<16|rl(i);if((a|0)<=1229472849){if((a|0)==1130840649){break Y}if((a|0)==1229209940){break U}if((a|0)!=1229278788){break S}if(!f){break T}J[218569]=93899;break u}if((a|0)==1229472850){break X}if((a|0)==1347179589){break W}if((a|0)!=1951551059){break S}if(!f){break V}J[218569]=93899;break u}W=1;if(!n){break M}if((b|0)<0){J[i+172>>2]=J[i+176>>2];break M}if(!J[i+16>>2]){g=J[i+172>>2];break N}a=J[i+176>>2];g=J[i+172>>2];b=a-g|0;if((b|0)>=(n|0)){break N}J[i+172>>2]=a;Zi[J[i+20>>2]](J[i+28>>2],n-b|0);break M}if(!f){J[218569]=93899;break u}if((n|0)!=13){J[218569]=93899;break u}J[i>>2]=rl(i)<<16|rl(i);a=rl(i)<<16|rl(i);J[i+4>>2]=a;if(a>>>0>=16777217){J[218569]=143513;break u}if(M[i>>2]>=16777217){J[218569]=143513;break u}Z:{f=J[i+176>>2];b=J[i+172>>2];_:{$:{if(f>>>0>b>>>0){a=b+1|0;J[i+172>>2]=a;g=K[b|0];break $}if(!J[i+32>>2]){J[p+16>>2]=0;break _}a=Zi[J[i+16>>2]](J[i+28>>2],j,J[i+36>>2])|0;J[i+168>>2]=J[i+168>>2]+(J[i+172>>2]-J[i+180>>2]|0);aa:{if(!a){g=0;H[i+40|0]=0;J[i+32>>2]=0;f=d;break aa}g=K[j|0];f=a+j|0}J[i+172>>2]=d;J[i+176>>2]=f;a=d}b=g&255;J[p+16>>2]=b;if(b>>>0>16){break _}if(1<>>0>>0){b=a+1|0;J[i+172>>2]=b;g=K[a|0];break ba}if(!J[i+32>>2]){g=0;b=a;u=0;break O}a=Zi[J[i+16>>2]](J[i+28>>2],j,J[i+36>>2])|0;J[i+168>>2]=J[i+168>>2]+(J[i+172>>2]-J[i+180>>2]|0);ca:{if(!a){g=0;H[i+40|0]=0;J[i+32>>2]=0;f=d;break ca}g=K[j|0];f=a+j|0}J[i+172>>2]=d;J[i+176>>2]=f;b=d}u=g&255;if(u>>>0>=7){J[218569]=93899;break u}if((g&255)==3){g=3;u=3;s=3;if(J[p+16>>2]!=16){break O}J[218569]=93899;break u}if(!(u&1)){break O}J[218569]=93899;break u}if(f){J[218569]=93899;break u}if(n>>>0>=769){J[218569]=93899;break u}da:{t=(g>>>0)/3|0;if((n|0)==(P(t,3)|0)){if(g>>>0>=3){break da}f=0;break M}J[218569]=93899;break u}f=J[i+176>>2];a=J[i+172>>2];q=0;while(1){ea:{if(a>>>0>>0){b=a+1|0;J[i+172>>2]=b;k=K[a|0];break ea}if(!J[i+32>>2]){k=0;b=a;break ea}a=Zi[J[i+16>>2]](J[i+28>>2],j,J[i+36>>2])|0;J[i+168>>2]=J[i+168>>2]+(J[i+172>>2]-J[i+180>>2]|0);fa:{if(!a){k=0;H[i+40|0]=0;J[i+32>>2]=0;f=d;break fa}k=K[j|0];f=a+j|0}J[i+172>>2]=d;J[i+176>>2]=f;b=d}g=(o+16|0)+(q<<2)|0;H[g|0]=k;ga:{if(b>>>0>>0){k=b+1|0;J[i+172>>2]=k;a=K[b|0];break ga}if(!J[i+32>>2]){a=0;k=b;break ga}b=Zi[J[i+16>>2]](J[i+28>>2],j,J[i+36>>2])|0;J[i+168>>2]=J[i+168>>2]+(J[i+172>>2]-J[i+180>>2]|0);ha:{if(!b){H[i+40|0]=0;J[i+32>>2]=0;f=d;a=0;break ha}f=b+j|0;a=K[j|0]}J[i+172>>2]=d;J[i+176>>2]=f;k=d}H[g+1|0]=a;ia:{if(f>>>0>k>>>0){a=k+1|0;J[i+172>>2]=a;b=K[k|0];break ia}if(!J[i+32>>2]){b=0;a=k;break ia}a=Zi[J[i+16>>2]](J[i+28>>2],j,J[i+36>>2])|0;J[i+168>>2]=J[i+168>>2]+(J[i+172>>2]-J[i+180>>2]|0);ja:{if(!a){H[i+40|0]=0;J[i+32>>2]=0;f=d;b=0;break ja}f=a+j|0;b=K[j|0]}J[i+172>>2]=d;J[i+176>>2]=f;a=d}H[g+3|0]=255;H[g+2|0]=b;q=q+1|0;if((t|0)!=(q|0)){continue}break}f=0;break M}if(J[p+4>>2]){J[218569]=93899;break u}if(s){if(!t){J[218569]=93899;break u}ka:{if(n>>>0<=t>>>0){s=4;if(n){break ka}f=0;break M}J[218569]=93899;break u}k=J[i+176>>2];g=J[i+172>>2];f=0;while(1){la:{if(g>>>0>>0){a=g+1|0;J[i+172>>2]=a;b=K[g|0];g=a;break la}if(!J[i+32>>2]){b=0;break la}a=Zi[J[i+16>>2]](J[i+28>>2],j,J[i+36>>2])|0;J[i+168>>2]=J[i+168>>2]+(J[i+172>>2]-J[i+180>>2]|0);ma:{if(!a){H[i+40|0]=0;J[i+32>>2]=0;k=d;b=0;break ma}k=a+j|0;b=K[j|0]}J[i+172>>2]=d;J[i+176>>2]=k;g=d}H[((o+16|0)+(f<<2)|0)+3|0]=b;f=f+1|0;if((n|0)!=(f|0)){continue}break}f=0;break M}a=J[i+8>>2];if(!(a&1)){J[218569]=93899;break u}if((n|0)!=a<<1){J[218569]=93899;break u}na:{if(J[p+16>>2]!=16){f=0;if((a|0)>0){break na}x=1;s=0;break M}x=1;f=0;if((a|0)<=0){s=0;break M}while(1){I[(o+6|0)+(f<<1)>>1]=rl(i);s=0;f=f+1|0;if((f|0)>2]){continue}break}f=0;break M}while(1){H[(o+12|0)+f|0]=P(rl(i),K[J[p+16>>2]+181825|0]);x=1;s=0;f=f+1|0;if((f|0)>2]){continue}break}f=0;break M}if(f){J[218569]=93899;break u}if(!(t|!s)){J[218569]=93899;break u}if(n>>>0>=1073741825){J[218569]=22189;break u}f=0;a=m+n|0;if((a|0)<(m|0)){break t}oa:{if(a>>>0<=l>>>0){g=J[p+4>>2];break oa}g=l?l:n>>>0<=4096?4096:n;while(1){l=g;g=l<<1;if(a>>>0>l>>>0){continue}break}g=ml(J[p+4>>2],l);if(!g){J[218569]=3003;break t}J[p+4>>2]=g}k=g+m|0;pa:{qa:{ra:{sa:{if(!J[i+16>>2]){q=J[i+176>>2];g=J[i+172>>2];break sa}q=J[i+176>>2];g=J[i+172>>2];b=q-g|0;if((b|0)<(n|0)){break ra}}if(g+n>>>0>q>>>0){break pa}hj(k,g,n);J[i+172>>2]=n+J[i+172>>2];break qa}g=hj(k,g,b);g=b+g|0;b=n-b|0;g=Zi[J[i+16>>2]](J[i+28>>2],g,b)|0;J[i+172>>2]=J[i+176>>2];if((b|0)!=(g|0)){break pa}}m=a;break M}J[218569]=93899;break t}b=J[p+4>>2];if(!b){J[218569]=93899;break u}ta:{a=J[i+4>>2];d=P(P(a,J[i+8>>2]),P(J[p+16>>2],J[i>>2])+7>>>3|0)+a|0;a=sj(d);if(a){J[o+1044>>2]=b;J[o+1048>>2]=b+m;b=0;t=0;n=Ui-2512|0;Ui=n;j=o+1044|0;J[j+32>>2]=1;J[j+20>>2]=a;J[j+24>>2]=a;J[j+28>>2]=a+d;ua:{va:{if(W){break va}d=J[j>>2];k=J[j+4>>2];wa:{if(d>>>0>=k>>>0){g=d;f=0;break wa}g=d+1|0;J[j>>2]=g;f=K[d|0]}xa:{if(g>>>0>=k>>>0){d=g;break xa}d=g+1|0;J[j>>2]=d;b=K[g|0]}if(!(b&32|(((f<<8|b)>>>0)%31|d>>>0>=k>>>0))){if((f&15)==8){break va}}J[218569]=93899;break ua}J[j+16>>2]=0;J[j+8>>2]=0;J[j+12>>2]=0;A=j+3500|0;C=j+3212|0;D=j+3180|0;G=j+3080|0;Q=j+3112|0;R=j+1480|0;T=j+1192|0;U=j+1160|0;V=j+1060|0;S=j+1092|0;w=j+2056|0;y=j+36|0;Y=n+1936|0;_=n+1648|0;$=n+1616|0;aa=n+1516|0;ba=n+1548|0;d=0;while(1){ya:{za:{if((d|0)>0){break za}while(1){f=d;if(t>>>d|0){J[j>>2]=J[j+4>>2];break za}b=0;d=J[j>>2];if(d>>>0>2]){J[j>>2]=d+1;b=K[d|0]}d=f+8|0;J[j+8>>2]=d;t=(b&255)<>2]=t;if((f|0)<17){continue}break}b=f+7|0;k=t>>>1|0;break ya}b=d-1|0;J[j+8>>2]=b;k=t>>>1|0;J[j+16>>2]=k;if((d|0)>2){break ya}while(1){if(k>>>b|0){J[j>>2]=J[j+4>>2];break ya}g=0;d=J[j>>2];if(d>>>0>2]){J[j>>2]=d+1;g=K[d|0]}d=b+8|0;J[j+8>>2]=d;k=(g&255)<>2]=k;f=(b|0)<17;b=d;if(f){continue}break}}d=b-2|0;J[j+8>>2]=d;g=k>>>2|0;J[j+16>>2]=g;Aa:{Ba:{Ca:{switch((k&3)-1|0){default:f=d&7;if(f){k=d;Da:{if((b|0)>1){break Da}while(1){if(g>>>d|0){J[j>>2]=J[j+4>>2];k=d;break Da}b=0;k=J[j>>2];if(k>>>0>2]){J[j>>2]=k+1;b=K[k|0]}k=d+8|0;J[j+8>>2]=k;g=(b&255)<>2]=g;b=(d|0)<17;d=k;if(b){continue}break}}d=k-f|0;J[j+8>>2]=d;g=g>>>f|0;J[j+16>>2]=g}Ea:{Fa:{Ga:{Ha:{Ia:{Ja:{if((d|0)>0){N=d-1|0;q=(N>>>3|0)+1|0;m=q&3;f=0;Ka:{if(d>>>0<25){b=0;break Ka}ca=q&1073741820;b=0;l=0;while(1){k=(n+492|0)+b|0;H[k|0]=g;H[k+1|0]=g>>>8;H[k+2|0]=g>>>16;H[k+3|0]=g>>>24;b=b+4|0;g=0;l=l+4|0;if((ca|0)!=(l|0)){continue}break}}k=0;if(m){while(1){H[(n+492|0)+b|0]=g;b=b+1|0;g=g>>>8|0;k=g;f=f+1|0;if((m|0)!=(f|0)){continue}break}}J[j+16>>2]=k;b=d-(N&-8)|0;J[j+8>>2]=b-8;if((b|0)==8){break Ja}d=93899;break Ga}q=0;if((d|0)>=0){break Ia}d=93899;break Ga}if(d>>>0>24){break Ha}}m=J[j+4>>2];f=J[j>>2];La:{if(!(q&1)){b=f;g=q;break La}d=0;Ma:{if(f>>>0>=m>>>0){b=f;break Ma}b=f+1|0;J[j>>2]=b;d=K[f|0]}H[(n+492|0)+q|0]=d;g=q+1|0}if((q|0)==3){break Ha}while(1){k=0;f=(n+492|0)+g|0;Na:{if(b>>>0>=m>>>0){d=b;b=0;break Na}d=b+1|0;J[j>>2]=d;b=K[b|0]}H[f|0]=b;Oa:{if(d>>>0>=m>>>0){b=d;break Oa}b=d+1|0;J[j>>2]=b;k=K[d|0]}H[(g+n|0)+493|0]=k;g=g+2|0;if((g|0)!=4){continue}break}}f=K[n+492|0]|K[n+493|0]<<8;d=93899;if((f^(K[n+494|0]|K[n+495|0]<<8))!=65535){break Ga}b=J[j>>2];d=93899;if(M[j+4>>2]>>0){break Ga}k=J[j+28>>2];if(k>>>0>=a+f>>>0){break Ea}d=93899;if(!J[j+32>>2]){break Ga}b=J[j+24>>2];g=a-b|0;d=3003;if(f>>>0>(g^-1)>>>0){break Ga}a=k-b|0;k=f+g|0;if(a>>>0>>0){while(1){d=3003;if((a|0)<0){break Ga}a=a<<1;if(k>>>0>a>>>0){continue}break}}b=ml(b,a);if(b){break Fa}d=3003}J[218569]=d;break ua}J[j+24>>2]=b;J[j+28>>2]=a+b;a=b+g|0;J[j+20>>2]=a;b=J[j>>2]}hj(a,b,f);J[j>>2]=f+J[j>>2];a=f+J[j+20>>2]|0;J[j+20>>2]=a;break Aa;case 0:if(!Jt(y,182224,288)){break ua}if(!Jt(w,182512,32)){break ua}break Ba;case 2:break ua;case 1:break Ca}}k=d;Pa:{if((b|0)>6){break Pa}while(1){if(g>>>d|0){J[j>>2]=J[j+4>>2];k=d;break Pa}a=0;b=J[j>>2];if(b>>>0>2]){J[j>>2]=b+1;a=K[b|0]}k=d+8|0;J[j+8>>2]=k;g=(a&255)<>2]=g;a=(d|0)<17;d=k;if(a){continue}break}}a=k-5|0;J[j+8>>2]=a;b=g>>>5|0;J[j+16>>2]=b;f=a;Qa:{if((k|0)>9){break Qa}while(1){if(b>>>a|0){J[j>>2]=J[j+4>>2];f=a;break Qa}d=0;f=J[j>>2];if(f>>>0>2]){J[j>>2]=f+1;d=K[f|0]}f=a+8|0;J[j+8>>2]=f;b=(d&255)<>2]=b;d=(a|0)<17;a=f;if(d){continue}break}}k=g&31;a=f-5|0;J[j+8>>2]=a;d=b>>>5|0;J[j+16>>2]=d;m=b&31;b=a;Ra:{if((f|0)>8){break Ra}while(1){if(d>>>a|0){J[j>>2]=J[j+4>>2];b=a;break Ra}g=0;b=J[j>>2];if(b>>>0>2]){J[j>>2]=b+1;g=K[b|0]}b=a+8|0;J[j+8>>2]=b;d=(g&255)<>2]=d;f=(a|0)<17;a=b;if(f){continue}break}}a=b-4|0;J[j+8>>2]=a;b=d>>>4|0;J[j+16>>2]=b;g=0;H[n+15|0]=0;H[n+16|0]=0;H[n+17|0]=0;H[n+18|0]=0;J[n+8>>2]=0;J[n+12>>2]=0;J[n>>2]=0;J[n+4>>2]=0;l=(d&15)+3|0;while(1){f=g;g=b;d=a;Sa:{if((d|0)>2){break Sa}while(1){if(g>>>a|0){J[j>>2]=J[j+4>>2];d=a;break Sa}b=0;d=J[j>>2];if(d>>>0>2]){J[j>>2]=d+1;b=K[d|0]}d=a+8|0;J[j+8>>2]=d;g=(b&255)<>2]=g;b=(a|0)<17;a=d;if(b){continue}break}}a=d-3|0;J[j+8>>2]=a;b=g>>>3|0;J[j+16>>2]=b;H[n+K[f+182544|0]|0]=g&7;g=f+1|0;if((f|0)!=(l|0)){continue}break}if(!Jt(n+492|0,n,19)){break ua}l=k+257|0;N=m+1|0;m=l+N|0;a=J[j+8>>2];f=0;Ta:{while(1){Ua:{if((a|0)>15){k=a;break Ua}b=J[j>>2];q=J[j+4>>2];if(b>>>0>=q>>>0){if(J[j+12>>2]){break Ta}J[j+12>>2]=1;k=a+16|0;J[j+8>>2]=k;break Ua}g=J[j+16>>2];while(1){if(g>>>a|0){J[j>>2]=q;k=a;break Ua}d=0;if(b>>>0>>0){k=b+1|0;J[j>>2]=k;d=K[b|0];b=k}k=a+8|0;J[j+8>>2]=k;g=(d&255)<>2]=g;d=(a|0)<17;a=k;if(d){continue}break}}d=J[j+16>>2];b=L[(n+492|0)+((d&511)<<1)>>1];Va:{if(b){g=b>>>9|0;a=k-g|0;J[j+8>>2]=a;g=d>>>g|0;J[j+16>>2]=g;b=b&511;break Va}a=d<<8|(d&65280)>>>8;a=a>>>4&3855|(a&3855)<<4;a=a>>>2&13107|(a&13107)<<2;g=a>>>1&21845|(a&21845)<<1;a=10;while(1){b=a;a=a+1|0;if((g|0)>=J[(b<<2)+ba>>2]){continue}break}if(b>>>0>15){break Ta}a=b<<1;q=((g>>>16-b|0)-L[a+aa>>1]|0)+L[a+$>>1]|0;if((q|0)>287|(b|0)!=K[q+_|0]){break Ta}a=k-b|0;J[j+8>>2]=a;g=d>>>b|0;J[j+16>>2]=g;b=L[(q<<1)+Y>>1]}if(b>>>0>18){break Ta}Wa:{if(b>>>0<=15){H[(n+32|0)+f|0]=b;f=f+1|0;break Wa}Xa:{Ya:{Za:{switch(b-16|0){case 0:d=a;_a:{if((d|0)>1){break _a}while(1){if(g>>>a|0){J[j>>2]=J[j+4>>2];d=a;break _a}b=0;d=J[j>>2];if(d>>>0>2]){J[j>>2]=d+1;b=K[d|0]}d=a+8|0;J[j+8>>2]=d;g=(b&255)<>2]=g;b=(a|0)<17;a=d;if(b){continue}break}}a=d-2|0;J[j+8>>2]=a;J[j+16>>2]=g>>>2;if(!f){break Ta}g=(g&3)+3|0;b=K[(f+n|0)+31|0];break Xa;case 1:d=a;$a:{if((d|0)>2){break $a}while(1){if(g>>>a|0){J[j>>2]=J[j+4>>2];d=a;break $a}b=0;d=J[j>>2];if(d>>>0>2]){J[j>>2]=d+1;b=K[d|0]}d=a+8|0;J[j+8>>2]=d;g=(b&255)<>2]=g;b=(a|0)<17;a=d;if(b){continue}break}}a=d-3|0;J[j+8>>2]=a;J[j+16>>2]=g>>>3;g=(g&7)+3|0;break Ya;default:break Za}}d=a;ab:{if((d|0)>6){break ab}while(1){if(g>>>a|0){J[j>>2]=J[j+4>>2];d=a;break ab}b=0;d=J[j>>2];if(d>>>0>2]){J[j>>2]=d+1;b=K[d|0]}d=a+8|0;J[j+8>>2]=d;g=(b&255)<>2]=g;b=(a|0)<17;a=d;if(b){continue}break}}a=d-7|0;J[j+8>>2]=a;J[j+16>>2]=g>>>7;g=(g&127)+11|0}b=0}if((m-f|0)<(g|0)){break Ta}ij((n+32|0)+f|0,b,g);f=f+g|0}if((m|0)>(f|0)){continue}break}if((f|0)!=(m|0)){break Ta}a=n+32|0;if(!Jt(y,a,l)){break ua}if(!Jt(w,a+l|0,N)){break ua}break Ba}J[218569]=93899;break ua}a=J[j+20>>2];while(1){bb:{g=J[j+8>>2];cb:{if((g|0)>15){f=g;break cb}d=J[j>>2];m=J[j+4>>2];if(d>>>0>=m>>>0){if(J[j+12>>2]){f=93899;break bb}J[j+12>>2]=1;f=g+16|0;J[j+8>>2]=f;break cb}b=J[j+16>>2];while(1){if(b>>>g|0){J[j>>2]=m;f=g;break cb}k=0;if(d>>>0>>0){f=d+1|0;J[j>>2]=f;k=K[d|0];d=f}f=g+8|0;J[j+8>>2]=f;b=(k&255)<>2]=b;k=(g|0)<17;g=f;if(k){continue}break}}g=J[j+16>>2];d=L[y+((g&511)<<1)>>1];db:{if(d){b=f;f=d>>>9|0;b=b-f|0;J[j+8>>2]=b;g=g>>>f|0;J[j+16>>2]=g;d=d&511;break db}b=g<<8|(g&65280)>>>8;b=b>>>4&3855|(b&3855)<<4;b=b>>>2&13107|(b&13107)<<2;k=b>>>1&21845|(b&21845)<<1;b=10;while(1){d=b;b=d+1|0;if((k|0)>=J[(d<<2)+S>>2]){continue}break}if(d>>>0>15){f=93899;break bb}b=d<<1;k=((k>>>16-d|0)-L[b+V>>1]|0)+L[b+U>>1]|0;if((k|0)>287){f=93899;break bb}if((d|0)!=K[k+T|0]){f=93899;break bb}b=f-d|0;J[j+8>>2]=b;g=g>>>d|0;J[j+16>>2]=g;d=L[R+(k<<1)>>1]}if(d>>>0<=255){g=J[j+28>>2];if(g>>>0<=a>>>0){J[j+20>>2]=a;if(!J[j+32>>2]){f=93899;break bb}f=J[j+24>>2];b=a-f|0;if((b|0)==-1){f=3003;break bb}a=g-f|0;if(b>>>0>=a>>>0){while(1){if((a|0)<0){f=3003;break bb}a=a<<1;if(b>>>0>=a>>>0){continue}break}}f=ml(f,a);if(!f){f=3003;break bb}J[j+24>>2]=f;J[j+28>>2]=a+f;a=b+f|0;J[j+20>>2]=a}H[a|0]=d;a=a+1|0;continue}if((d|0)==256){J[j+20>>2]=a;if(!J[j+12>>2]|(b|0)>=16){break Aa}f=93899;break bb}if(d>>>0>285){f=93899;break bb}f=d-257<<2;l=J[f+182576>>2];eb:{if(d-285>>>0<4294967276){d=g;break eb}k=b;f=J[f+182704>>2];fb:{if((f|0)<=(b|0)){break fb}while(1){if(g>>>b|0){J[j>>2]=J[j+4>>2];k=b;break fb}d=0;k=J[j>>2];if(k>>>0>2]){J[j>>2]=k+1;d=K[k|0]}k=b+8|0;J[j+8>>2]=k;g=(d&255)<>2]=g;d=(b|0)<17;b=k;if(d){continue}break}}b=k-f|0;J[j+8>>2]=b;d=g>>>f|0;J[j+16>>2]=d;l=((-1<15){f=b;break gb}g=J[j>>2];m=J[j+4>>2];if(g>>>0>=m>>>0){if(J[j+12>>2]){f=93899;break bb}J[j+12>>2]=1;f=b+16|0;J[j+8>>2]=f;break gb}while(1){if(d>>>b|0){J[j>>2]=m;f=b;break gb}k=0;if(g>>>0>>0){f=g+1|0;J[j>>2]=f;k=K[g|0];g=f}f=b+8|0;J[j+8>>2]=f;d=(k&255)<>2]=d;k=(b|0)<17;b=f;if(k){continue}break}}k=L[w+((d&511)<<1)>>1];hb:{if(k){b=f;f=k>>>9|0;b=b-f|0;J[j+8>>2]=b;g=d>>>f|0;J[j+16>>2]=g;d=k&511;break hb}b=d<<8|(d&65280)>>>8;b=b>>>4&3855|(b&3855)<<4;b=b>>>2&13107|(b&13107)<<2;k=b>>>1&21845|(b&21845)<<1;b=10;while(1){g=b;b=b+1|0;if((k|0)>=J[Q+(g<<2)>>2]){continue}break}if(g>>>0>15){f=93899;break bb}b=g<<1;k=((k>>>16-g|0)-L[b+G>>1]|0)+L[b+D>>1]|0;if((k|0)>287){f=93899;break bb}if((g|0)!=K[k+C|0]){f=93899;break bb}b=f-g|0;J[j+8>>2]=b;g=d>>>g|0;J[j+16>>2]=g;d=L[A+(k<<1)>>1]}if(d>>>0>29){f=93899;break bb}m=d<<2;f=J[m+182832>>2];if(d>>>0>=4){k=b;m=J[m+182960>>2];ib:{if((m|0)<=(b|0)){break ib}while(1){if(g>>>b|0){J[j>>2]=J[j+4>>2];k=b;break ib}d=0;k=J[j>>2];if(k>>>0>2]){J[j>>2]=k+1;d=K[k|0]}k=b+8|0;J[j+8>>2]=k;g=(d&255)<>2]=g;d=(b|0)<17;b=k;if(d){continue}break}}J[j+8>>2]=k-m;J[j+16>>2]=g>>>m;f=((-1<>2];b=a-d|0;if((b|0)<(f|0)){f=93899;break bb}g=J[j+28>>2];if((g-a|0)<(l|0)){J[j+20>>2]=a;if(!J[j+32>>2]){f=93899;break bb}if((b^-1)>>>0>>0){f=3003;break bb}a=g-d|0;g=b+l|0;if(a>>>0>>0){while(1){if((a|0)<0){f=3003;break bb}a=a<<1;if(g>>>0>a>>>0){continue}break}}d=ml(d,a);if(!d){f=3003;break bb}J[j+24>>2]=d;J[j+28>>2]=a+d;a=b+d|0;J[j+20>>2]=a}g=a-f|0;if((f|0)==1){if(!l){continue}a=ij(a,K[g|0],l)+l|0;continue}if(!l){continue}d=0;b=l;f=b&7;if(f){while(1){H[a|0]=K[g|0];b=b-1|0;a=a+1|0;g=g+1|0;d=d+1|0;if((f|0)!=(d|0)){continue}break}}if(l>>>0<8){continue}while(1){H[a|0]=K[g|0];H[a+1|0]=K[g+1|0];H[a+2|0]=K[g+2|0];H[a+3|0]=K[g+3|0];H[a+4|0]=K[g+4|0];H[a+5|0]=K[g+5|0];H[a+6|0]=K[g+6|0];H[a+7|0]=K[g+7|0];a=a+8|0;g=g+8|0;b=b-8|0;if(b){continue}break}continue}break}J[218569]=f;break ua}if(!(t&1)){t=J[j+16>>2];d=J[j+8>>2];continue}break}da=1}Ui=n+2512|0;if(da){break ta}cj(J[o+1068>>2])}f=0;J[p+8>>2]=0;break t}b=J[o+1064>>2];a=J[o+1068>>2];J[p+8>>2]=a;if(!a){break u}l=b-a|0;cj(J[p+4>>2]);f=0;J[p+4>>2]=0;b=J[i+8>>2];a=b+1|0;b=x?a:b;w=!a?s?b:a:b;J[i+12>>2]=w;k=J[p+16>>2];j=J[p+8>>2];b=J[p>>2];a=J[b+4>>2];b=J[b>>2];jb:{if(X){if((a|b)<0){break R}if(a){if((b|0)>(2147483647/(a>>>0)|0)){break R}}a=P(a,b);d=w<<((k|0)==16);if((a|d)<0){break R}if(d){if((a|0)>(2147483647/(d>>>0)|0)){break R}}y=sj(P(a,d));if(!y){break R}q=0;while(1){b=J[p>>2];a=q<<2;R=J[a+181872>>2];A=J[a+181936>>2];n=(J[b+4>>2]+(R^-1)|0)+A|0;m=(n>>>0)/(A>>>0)|0;g=J[a+181904>>2];C=J[a+181840>>2];a=g+(J[b>>2]+(C^-1)|0)|0;f=(a>>>0)/(g>>>0)|0;if(!(a>>>0>>0|n>>>0>>0)){a=J[b+8>>2];if(!tG(p,j,l,w,f,m,k,u)){break Q}Q=P(m,(P(a,P(f,k))+7>>3)+1|0);n=J[p+12>>2];if(!((f|0)<=0|(m|0)<=0)){T=f&2147483646;U=f&1;V=P(d,J[J[p>>2]>>2]);t=0;while(1){D=P(f,t);G=y+P(V,R+P(t,A)|0)|0;b=0;a=0;if((f|0)!=1){while(1){hj(G+P(d,C+P(b,g)|0)|0,n+P(d,b+D|0)|0,d);S=b|1;hj(G+P(d,C+P(S,g)|0)|0,n+P(d,D+S|0)|0,d);b=b+2|0;a=a+2|0;if((T|0)!=(a|0)){continue}break}}if(U){hj(G+P(d,C+P(b,g)|0)|0,n+P(d,b+D|0)|0,d)}t=t+1|0;if((m|0)>(t|0)){continue}break}}cj(n);j=j+Q|0;l=l-Q|0}q=q+1|0;if((q|0)!=7){continue}break}J[p+12>>2]=y;break jb}if(!tG(p,j,l,w,b,a,k,u)){break t}}kb:{if(!x){break kb}b=J[p>>2];a=J[b+4>>2];d=J[p+12>>2];f=J[i+12>>2];b=J[b>>2];if(J[p+16>>2]==16){b=P(a,b);lb:{switch(f-2|0){case 2:if(!b){break kb}a=0;while(1){if(!(L[d>>1]!=L[o+6>>1]|L[d+2>>1]!=L[o+8>>1]|L[d+4>>1]!=L[o+10>>1])){I[d+6>>1]=0}d=d+8|0;a=a+1|0;if((b|0)!=(a|0)){continue}break};break kb;case 0:if(!b){break kb}if(b>>>0>=4){f=b&-4;a=0;while(1){I[d+2>>1]=L[d>>1]!=L[o+6>>1]?-1:0;I[d+6>>1]=L[d+4>>1]!=L[o+6>>1]?-1:0;I[d+10>>1]=L[d+8>>1]!=L[o+6>>1]?-1:0;I[d+14>>1]=L[d+12>>1]!=L[o+6>>1]?-1:0;d=d+16|0;a=a+4|0;if((f|0)!=(a|0)){continue}break}}b=b&3;if(!b){break kb}a=0;while(1){I[d+2>>1]=L[d>>1]!=L[o+6>>1]?-1:0;d=d+4|0;a=a+1|0;if((b|0)!=(a|0)){continue}break};break kb;default:break lb}}Z(108780,55719,4938,105676);B()}b=P(a,b);mb:{nb:{switch(f-2|0){case 2:if(!b){break mb}a=0;while(1){if(!(K[d|0]!=K[o+12|0]|K[d+1|0]!=K[o+13|0]|K[d+2|0]!=K[o+14|0])){H[d+3|0]=0}d=d+4|0;a=a+1|0;if((b|0)!=(a|0)){continue}break};break mb;case 0:if(!b){break mb}if(b>>>0>=4){f=b&-4;a=0;while(1){H[d+1|0]=K[d|0]!=K[o+12|0]?-1:0;H[d+3|0]=K[d+2|0]!=K[o+12|0]?-1:0;H[d+5|0]=K[d+4|0]!=K[o+12|0]?-1:0;H[d+7|0]=K[d+6|0]!=K[o+12|0]?-1:0;d=d+8|0;a=a+4|0;if((f|0)!=(a|0)){continue}break}}b=b&3;if(!b){break mb}a=0;while(1){H[d+1|0]=K[d|0]!=K[o+12|0]?-1:0;d=d+2|0;a=a+1|0;if((b|0)!=(a|0)){continue}break};break mb;default:break nb}}Z(108780,55719,4913,3881);B()}}if(!(!W|!J[218572]|J[i+12>>2]<3)){d=J[p+12>>2];k=0;a=J[p>>2];b=P(J[a+4>>2],J[a>>2]);ob:{pb:{switch(J[a+12>>2]-3|0){case 0:if(!b){break ob}if(b>>>0>=4){f=b&-4;a=0;while(1){g=K[d+2|0];H[d+2|0]=K[d|0];H[d|0]=g;g=K[d+3|0];H[d+3|0]=K[d+5|0];H[d+5|0]=g;g=K[d+6|0];H[d+6|0]=K[d+8|0];H[d+8|0]=g;g=K[d+9|0];H[d+9|0]=K[d+11|0];H[d+11|0]=g;d=d+12|0;a=a+4|0;if((f|0)!=(a|0)){continue}break}}b=b&3;if(!b){break ob}a=0;while(1){f=K[d+2|0];H[d+2|0]=K[d|0];H[d|0]=f;d=d+3|0;a=a+1|0;if((b|0)!=(a|0)){continue}break};break ob;default:Z(108762,55719,5046,64981);B();case 1:break pb}}if(J[218571]){if(!b){break ob}while(1){f=K[d|0];a=K[d+3|0];qb:{if(a){g=K[d+2|0];m=P(f,255);f=a>>>1|0;H[d+2|0]=((m+f&65535)>>>0)/(a>>>0);H[d|0]=((f+P(g,255)&65535)>>>0)/(a>>>0);H[d+1|0]=((f+P(K[d+1|0],255)&65535)>>>0)/(a>>>0);break qb}a=K[d+2|0];H[d+2|0]=f;H[d|0]=a}d=d+4|0;k=k+1|0;if((b|0)!=(k|0)){continue}break}break ob}if(!b){break ob}if(b>>>0>=4){f=b&-4;a=0;while(1){g=K[d+2|0];H[d+2|0]=K[d|0];H[d|0]=g;g=K[d+4|0];H[d+4|0]=K[d+6|0];H[d+6|0]=g;g=K[d+8|0];H[d+8|0]=K[d+10|0];H[d+10|0]=g;g=K[d+12|0];H[d+12|0]=K[d+14|0];H[d+14|0]=g;d=d+16|0;a=a+4|0;if((f|0)!=(a|0)){continue}break}}b=b&3;if(!b){break ob}a=0;while(1){f=K[d+2|0];H[d+2|0]=K[d|0];H[d|0]=f;d=d+4|0;a=a+1|0;if((b|0)!=(a|0)){continue}break}}}rb:{if(s){J[i+8>>2]=s;J[i+12>>2]=s;f=0;sb:{a=J[p>>2];d=P(J[a+4>>2],J[a>>2]);if(!((d|0)<0|d>>>0>2147483647/(s>>>0)>>>0)){k=J[p+12>>2];a=sj(P(d,s));if(a){break sb}}J[218569]=3003;break t}tb:{if((s|0)!=3){if(!d){break tb}g=0;f=a;while(1){b=(o+16|0)+(K[g+k|0]<<2)|0;H[f|0]=K[b|0];H[f+1|0]=K[b+1|0];H[f+2|0]=K[b+2|0];H[f+3|0]=K[b+3|0];f=f+4|0;g=g+1|0;if((d|0)!=(g|0)){continue}break}break tb}if(!d){break tb}b=0;f=a;while(1){g=(o+16|0)+(K[b+k|0]<<2)|0;H[f|0]=K[g|0];H[f+1|0]=K[g+1|0];H[f+2|0]=K[g+2|0];f=f+3|0;b=b+1|0;if((d|0)!=(b|0)){continue}break}}cj(k);J[p+12>>2]=a;break rb}if(!x){break rb}J[i+8>>2]=J[i+8>>2]+1}cj(J[p+8>>2]);J[p+8>>2]=0;rl(i);rl(i);f=1;break t}if(f){J[218569]=93899;break u}if(!(k&8192)){J[218569]=64274;break u}f=0;if(!n){break M}if((b|0)<0){J[i+172>>2]=J[i+176>>2];break M}if(!J[i+16>>2]){g=J[i+172>>2];break P}a=J[i+176>>2];g=J[i+172>>2];b=a-g|0;if((b|0)>=(n|0)){break P}J[i+172>>2]=a;Zi[J[i+20>>2]](J[i+28>>2],n-b|0);break M}J[218569]=3003;break u}cj(y);break u}J[i+172>>2]=g+n;break M}ub:{vb:{if(b>>>0>>0){J[i+172>>2]=b+1;f=K[b|0];break vb}if(!J[i+32>>2]){break ub}a=Zi[J[i+16>>2]](J[i+28>>2],j,J[i+36>>2])|0;J[i+168>>2]=J[i+168>>2]+(J[i+172>>2]-J[i+180>>2]|0);wb:{if(!a){H[i+40|0]=0;J[i+32>>2]=0;f=0;a=d;break wb}f=K[j|0];a=a+j|0}J[i+172>>2]=d;J[i+176>>2]=a}if(!(f&255)){break ub}J[218569]=93899;break u}if(hw(i)){J[218569]=93899;break u}X=hw(i);if(X>>>0>=2){J[218569]=93899;break u}xb:{a=J[i>>2];if(a){b=J[i+4>>2];if(b){break xb}}J[218569]=93899;break u}if(!s){g=(u&2|(g&255)>>>0>3)+1|0;J[i+8>>2]=g;f=0;s=0;if(b>>>0<=(1073741824/(a>>>0)>>>0)/(g>>>0)>>>0){break M}J[218569]=69418;break u}J[i+8>>2]=1;if(b>>>0<=1073741824/(a>>>0)>>>2>>>0){f=0;break M}J[218569]=93899;break u}J[i+172>>2]=g+n}rl(i);rl(i);continue}}J[218569]=93911}f=0}Ui=o+5120|0;yb:{if(!f){ea=J[r+28>>2];break yb}d=8;zb:{a=J[r+32>>2];if((a|0)<9){break zb}d=16;if((a|0)==16){break zb}J[218569]=52657;break a}J[z+4>>2]=d;h=J[r+28>>2];J[r+28>>2]=0;a=J[r+16>>2];J[v+32>>2]=J[a>>2];J[v+28>>2]=J[a+4>>2];if(!O){break yb}J[O>>2]=J[a+8>>2]}cj(ea);cj(J[r+24>>2]);cj(J[r+20>>2]);break a}l=Zj(1,18456);if(!l){J[218569]=3003;h=0;break a}J[l>>2]=d;J[l+18452>>2]=2279;J[l+18448>>2]=2280;J[l+18444>>2]=2281;J[d+8>>2]=0;J[l+18436>>2]=0;J[l+18340>>2]=0;J[l+18344>>2]=0;J[l+18268>>2]=0;J[l+18272>>2]=0;J[l+18196>>2]=0;J[l+18200>>2]=0;J[l+18124>>2]=0;J[l+18128>>2]=0;q=l+18076|0;H[l+18372|0]=255;J[l+18404>>2]=0;J[l+18408>>2]=-1;Ab:{Bb:{if((gq(l)|0)!=216){break Bb}Cb:{Db:{f=gq(l);d=(f|0)==194;if(d|(f&254)==192){break Db}while(1){a=0;if(!qG(l,f)){break Cb}Eb:{f=gq(l);if((f|0)==255){while(1){a=J[l>>2];Fb:{if(J[a+16>>2]){if(!(Zi[J[a+24>>2]](J[a+28>>2])|0)){break Fb}if(!J[a+32>>2]){break Eb}}if(M[a+172>>2]>=M[a+176>>2]){break Eb}}f=gq(l);if((f|0)==255){continue}break}}d=(f|0)==194;if(d|(f&254)==192){break Db}continue}break}break Bb}J[l+18380>>2]=d;m=0;k=0;Gb:{Hb:{Ib:{Jb:{h=J[l>>2];i=rl(h);if(i>>>0<=10){break Jb}Kb:{a=J[h+172>>2];Lb:{Mb:{if(a>>>0>2]){J[h+172>>2]=a+1;d=K[a|0];break Mb}if(!J[h+32>>2]){break Lb}a=h+40|0;b=Zi[J[h+16>>2]](J[h+28>>2],a,J[h+36>>2])|0;J[h+168>>2]=J[h+168>>2]+(J[h+172>>2]-J[h+180>>2]|0);Nb:{if(!b){H[h+40|0]=0;J[h+32>>2]=0;d=0;a=h+41|0;break Nb}d=K[a|0];a=a+b|0}J[h+176>>2]=a;J[h+172>>2]=h+41}if((d&255)==8){break Kb}}J[218569]=3341;break Hb}a=rl(h);J[h+4>>2]=a;if(!a){J[218569]=14656;break Hb}a=rl(h);J[h>>2]=a;if(!a){break Jb}if(M[h+4>>2]>=16777217){J[218569]=143513;break Hb}g=J[h+176>>2];b=J[h+172>>2];Ob:{if(g>>>0>b>>>0){a=b+1|0;J[h+172>>2]=a;k=K[b|0];break Ob}if(!J[h+32>>2]){break Jb}a=h+40|0;b=Zi[J[h+16>>2]](J[h+28>>2],a,J[h+36>>2])|0;J[h+168>>2]=J[h+168>>2]+(J[h+172>>2]-J[h+180>>2]|0);Pb:{if(!b){H[h+40|0]=0;J[h+32>>2]=0;g=h+41|0;break Pb}k=K[a|0];g=a+b|0}J[h+176>>2]=g;a=h+41|0;J[h+172>>2]=a}if(!(1<>>0>4){break Jb}J[h+8>>2]=k;f=l+18076|0;b=0;d=0;if(k-1>>>0>=3){j=k&252;while(1){p=f+P(d,72)|0;J[p+56>>2]=0;J[p+44>>2]=0;p=f+P(d|1,72)|0;J[p+56>>2]=0;J[p+44>>2]=0;p=f+P(d|2,72)|0;J[p+56>>2]=0;J[p+44>>2]=0;p=f+P(d|3,72)|0;J[p+56>>2]=0;J[p+44>>2]=0;d=d+4|0;m=m+4|0;if((j|0)!=(m|0)){continue}break}}m=k&3;if(m){while(1){j=f+P(d,72)|0;J[j+56>>2]=0;J[j+44>>2]=0;d=d+1|0;b=b+1|0;if((m|0)!=(b|0)){continue}break}}if((i|0)!=(P(k,3)+8|0)){break Jb}d=0;J[l+18412>>2]=0;if(k){p=l+18076|0;f=h+41|0;i=h+40|0;d=k;k=0;while(1){Qb:{if(a>>>0>>0){b=a+1|0;J[h+172>>2]=b;m=K[a|0];break Qb}if(!J[h+32>>2]){m=0;b=a;break Qb}a=Zi[J[h+16>>2]](J[h+28>>2],i,J[h+36>>2])|0;J[h+168>>2]=J[h+168>>2]+(J[h+172>>2]-J[h+180>>2]|0);Rb:{if(!a){m=0;H[h+40|0]=0;J[h+32>>2]=0;g=f;break Rb}m=K[i|0];g=a+i|0}J[h+172>>2]=f;J[h+176>>2]=g;d=J[h+8>>2];b=f}j=p+P(k,72)|0;J[j>>2]=m;if(!((d|0)!=3|K[k+182063|0]!=(m|0))){J[l+18412>>2]=J[l+18412>>2]+1}Sb:{if(b>>>0>>0){d=b+1|0;J[h+172>>2]=d;b=K[b|0];break Sb}if(!J[h+32>>2]){J[j+4>>2]=0;break Jb}a=Zi[J[h+16>>2]](J[h+28>>2],i,J[h+36>>2])|0;J[h+168>>2]=J[h+168>>2]+(J[h+172>>2]-J[h+180>>2]|0);Tb:{if(!a){H[h+40|0]=0;J[h+32>>2]=0;g=f;b=0;break Tb}g=a+i|0;b=K[i|0]}J[h+172>>2]=f;J[h+176>>2]=g;d=f}a=b&255;J[j+4>>2]=a>>>4;if((b-80&255)>>>0<=191){break Jb}a=a&15;J[j+8>>2]=a;if(a-5>>>0<=4294967291){break Jb}Ub:{Vb:{if(d>>>0>>0){a=d+1|0;J[h+172>>2]=a;d=K[d|0];break Vb}if(!J[h+32>>2]){J[j+12>>2]=0;a=d;break Ub}a=Zi[J[h+16>>2]](J[h+28>>2],i,J[h+36>>2])|0;J[h+168>>2]=J[h+168>>2]+(J[h+172>>2]-J[h+180>>2]|0);Wb:{if(!a){H[h+40|0]=0;J[h+32>>2]=0;g=f;d=0;break Wb}g=a+i|0;d=K[i|0]}J[h+172>>2]=f;J[h+176>>2]=g;a=f}b=d&255;J[j+12>>2]=b;if(b>>>0<4){break Ub}break Jb}d=J[h+8>>2];k=k+1|0;if((d|0)>(k|0)){continue}break}}f=d;d=0;j=J[h+4>>2];a=j;p=J[h>>2];b=p;Xb:{if((a|b)<0){break Xb}if(a){if((b|0)>(2147483647/(a>>>0)|0)){break Xb}}a=P(a,b);if((a|f)<0){break Xb}if(f){if((a|0)>(2147483647/(f>>>0)|0)){break Xb}}d=1}Yb:{Zb:{if(d){d=1;k=1;h=(f|0)<=0;if(h){break Yb}m=f&1;g=l+18076|0;if((f|0)==1){a=0;break Zb}i=f&2147483646;a=0;b=0;while(1){o=g+P(a|1,72)|0;n=J[o+8>>2];s=g+P(a,72)|0;u=J[s+8>>2];d=(d|0)<(u|0)?u:d;d=(d|0)<(n|0)?n:d;o=J[o+4>>2];n=J[s+4>>2];k=(k|0)<(n|0)?n:k;k=(k|0)<(o|0)?o:k;a=a+2|0;b=b+2|0;if((i|0)!=(b|0)){continue}break}break Zb}J[218569]=69418;break Hb}if(m){a=g+P(a,72)|0;b=J[a+8>>2];d=(b|0)>(d|0)?b:d;a=J[a+4>>2];k=(a|0)>(k|0)?a:k}if((f|0)<=0){break Yb}b=l+18076|0;a=0;while(1){g=b+P(a,72)|0;if((k|0)%J[g+4>>2]|0){break Jb}if(!((d|0)%J[g+8>>2]|0)){a=a+1|0;if((f|0)==(a|0)){break Yb}continue}break}break Jb}J[l+18056>>2]=d;J[l+18052>>2]=k;a=d<<3;J[l+18072>>2]=a;b=k<<3;J[l+18068>>2]=b;o=((a+j|0)-1>>>0)/(a>>>0)|0;J[l+18064>>2]=o;n=((b+p|0)-1>>>0)/(b>>>0)|0;J[l+18060>>2]=n;if(!h){s=d-1|0;u=k-1|0;t=l+18076|0;a=0;while(1){g=t+P(a,72)|0;J[g+60>>2]=0;J[g+52>>2]=0;J[g+56>>2]=0;b=J[g+8>>2];x=P(b,o);h=x<<3;J[g+40>>2]=h;m=J[g+4>>2];w=P(m,n);i=w<<3;J[g+36>>2]=i;J[g+28>>2]=(u+P(m,p)>>>0)/(k>>>0);J[g+32>>2]=(s+P(b,j)>>>0)/(d>>>0);m=0;_b:{if((i|h)<0){break _b}if(h){if((i|0)>(2147483647/(h>>>0)|0)){break _b}}b=P(i,h);if((b|0)>2147483632){break _b}m=sj(b+15|0)}J[g+48>>2]=m;if(!m){break Ib}J[g+44>>2]=m+15&-16;if(J[l+18380>>2]){J[g+68>>2]=x;J[g+64>>2]=w;b=0;$b:{if((i|h)<0){break $b}if(h){if((i|0)>(2147483647/(h>>>0)|0)){break $b}}h=P(i,h);if((h|2)<0|((h|0)>1073741823?2:0)){break $b}h=h<<1;if((h|0)>2147483632){break $b}b=sj(h+15|0)}J[g+52>>2]=b;if(!b){break Ib}J[g+60>>2]=b+15&-16}a=a+1|0;if((f|0)!=(a|0)){continue}break}}a=1;break Gb}J[218569]=94363;break Hb}J[218569]=3003;b=0;d=a+1|0;if((d|0)>0){f=l+18076|0;while(1){a=f+P(b,72)|0;g=J[a+48>>2];if(g){cj(g);J[a+44>>2]=0;J[a+48>>2]=0}g=J[a+52>>2];if(g){cj(g);J[a+60>>2]=0;J[a+52>>2]=0}g=J[a+56>>2];if(g){cj(g);J[a+56>>2]=0}b=b+1|0;if((d|0)!=(b|0)){continue}break}}}a=0}}break Ab}J[218569]=94363;a=0}ac:{bc:{if(!a){break bc}s=l+13444|0;t=l+13956|0;x=l+6724|0;n=l+4|0;i=l+18420|0;d=gq(l);while(1){cc:{dc:{ec:{fc:{gc:{hc:{ic:{jc:{kc:{lc:{mc:{a=d&255;switch(a-217|0){case 0:break jc;case 3:break lc;case 1:break mc;default:break kc}}f=rl(J[l>>2]);a=J[l>>2];b=J[a+172>>2];nc:{if(b>>>0>2]){J[a+172>>2]=b+1;h=K[b|0];break nc}if(!J[a+32>>2]){J[l+18416>>2]=0;d=94363;break cc}b=a+40|0;d=Zi[J[a+16>>2]](J[a+28>>2],b,J[a+36>>2])|0;J[a+168>>2]=J[a+168>>2]+(J[a+172>>2]-J[a+180>>2]|0);oc:{if(!d){h=0;H[a+40|0]=0;J[a+32>>2]=0;b=a+41|0;break oc}h=K[b|0];b=b+d|0}J[a+176>>2]=b;J[a+172>>2]=a+41}a=h&255;J[l+18416>>2]=a;if((h-5&255)>>>0<252){d=94363;break cc}h=J[l>>2];if((a|0)>J[h+8>>2]){d=94363;break cc}m=0;if((f|0)!=((a<<1)+6|0)){d=94363;break cc}while(1){f=J[h+176>>2];a=J[h+172>>2];pc:{if(f>>>0>a>>>0){d=a+1|0;J[h+172>>2]=d;b=K[a|0];break pc}if(!J[h+32>>2]){b=0;d=a;break pc}a=h+40|0;d=Zi[J[h+16>>2]](J[h+28>>2],a,J[h+36>>2])|0;J[h+168>>2]=J[h+168>>2]+(J[h+172>>2]-J[h+180>>2]|0);qc:{if(!d){b=0;H[h+40|0]=0;J[h+32>>2]=0;a=h+41|0;break qc}b=K[a|0];a=a+d|0}J[h+176>>2]=a;J[h+172>>2]=h+41;h=J[l>>2];f=J[h+176>>2];d=J[h+172>>2]}rc:{if(d>>>0>>0){J[h+172>>2]=d+1;g=K[d|0];break rc}if(!J[h+32>>2]){g=0;break rc}a=h+40|0;d=Zi[J[h+16>>2]](J[h+28>>2],a,J[h+36>>2])|0;J[h+168>>2]=J[h+168>>2]+(J[h+172>>2]-J[h+180>>2]|0);sc:{if(!d){g=0;H[h+40|0]=0;J[h+32>>2]=0;a=h+41|0;break sc}g=K[a|0];a=a+d|0}J[h+176>>2]=a;J[h+172>>2]=h+41;h=J[l>>2]}d=0;tc:{a=J[h+8>>2];if((a|0)<=0){break tc}b=b&255;while(1){if((b|0)==J[q+P(d,72)>>2]){break tc}d=d+1|0;if((a|0)!=(d|0)){continue}break}break bc}if((a|0)==(d|0)){break bc}b=q+P(d,72)|0;a=g&255;J[b+16>>2]=a>>>4;if(a>>>0>63){d=94363;break cc}a=a&15;J[b+20>>2]=a;if(a>>>0>3){d=94363;break cc}J[i+(m<<2)>>2]=d;m=m+1|0;if((m|0)>2]){continue}break}d=J[h+176>>2];a=J[h+172>>2];uc:{if(d>>>0>a>>>0){f=a+1|0;J[h+172>>2]=f;m=K[a|0];break uc}if(!J[h+32>>2]){m=0;f=a;break uc}a=h+40|0;b=Zi[J[h+16>>2]](J[h+28>>2],a,J[h+36>>2])|0;J[h+168>>2]=J[h+168>>2]+(J[h+172>>2]-J[h+180>>2]|0);vc:{if(!b){m=0;H[h+40|0]=0;J[h+32>>2]=0;a=h+41|0;break vc}m=K[a|0];a=a+b|0}J[h+176>>2]=a;J[h+172>>2]=h+41;h=J[l>>2];d=J[h+176>>2];f=J[h+172>>2]}J[l+18384>>2]=m&255;wc:{if(d>>>0>f>>>0){a=f+1|0;J[h+172>>2]=a;m=K[f|0];break wc}if(!J[h+32>>2]){m=0;a=f;break wc}a=h+40|0;b=Zi[J[h+16>>2]](J[h+28>>2],a,J[h+36>>2])|0;J[h+168>>2]=J[h+168>>2]+(J[h+172>>2]-J[h+180>>2]|0);xc:{if(!b){m=0;H[h+40|0]=0;J[h+32>>2]=0;a=h+41|0;break xc}m=K[a|0];a=a+b|0}J[h+176>>2]=a;J[h+172>>2]=h+41;h=J[l>>2];d=J[h+176>>2];a=J[h+172>>2]}J[l+18388>>2]=m&255;yc:{if(a>>>0>>0){J[h+172>>2]=a+1;f=K[a|0];break yc}if(!J[h+32>>2]){f=0;break yc}a=h+40|0;b=Zi[J[h+16>>2]](J[h+28>>2],a,J[h+36>>2])|0;J[h+168>>2]=J[h+168>>2]+(J[h+172>>2]-J[h+180>>2]|0);zc:{if(!b){H[h+40|0]=0;J[h+32>>2]=0;f=0;a=h+41|0;break zc}f=K[a|0];a=a+b|0}J[h+176>>2]=a;J[h+172>>2]=h+41}b=f&15;J[l+18396>>2]=b;J[l+18392>>2]=(f&240)>>>4;a=J[l+18384>>2];g=J[l+18380>>2];Ac:{if(g){if((a|0)>63){d=94363;break cc}d=94363;k=J[l+18388>>2];if((k|0)>63|(a|0)>(k|0)|((f&255)>>>0>223|b>>>0>13)){break cc}break Ac}if(a){d=94363;break cc}d=94363;if(b|(f&255)>>>0>15){break cc}J[l+18388>>2]=63}J[l+18376>>2]=0;J[l+18364>>2]=0;J[l+18368>>2]=0;J[l+18316>>2]=0;J[l+18244>>2]=0;J[l+18172>>2]=0;H[l+18372|0]=255;J[l+18100>>2]=0;J[l+18400>>2]=0;a=J[l+18436>>2];h=a?a:2147483647;J[l+18440>>2]=h;a=J[l+18416>>2];if(!g){if((a|0)==1){d=J[i>>2];a=q+P(d,72)|0;f=J[a+32>>2]+7>>3;if((f|0)<=0){break fc}b=0;g=J[a+28>>2]+7>>3;if((g|0)<=0){break fc}while(1){k=b<<3;h=0;while(1){m=r+16|0;j=J[a+20>>2];if(!sG(l,m,n+P(J[a+16>>2],1680)|0,x+P(j,1680)|0,t+(j<<10)|0,d,s+(J[a+12>>2]<<7)|0)){break bc}j=J[a+36>>2];Zi[J[l+18444>>2]]((J[a+44>>2]+P(j,k)|0)+(h<<3)|0,j,m);m=J[l+18440>>2];J[l+18440>>2]=m-1;if((m|0)<=1){if(J[l+18368>>2]<=23){qm(l)}if((K[l+18372|0]&248)!=208){break fc}J[l+18376>>2]=0;J[l+18364>>2]=0;J[l+18368>>2]=0;J[l+18316>>2]=0;J[l+18244>>2]=0;J[l+18172>>2]=0;H[l+18372|0]=255;J[l+18100>>2]=0;J[l+18400>>2]=0;m=J[l+18436>>2];J[l+18440>>2]=m?m:2147483647}h=h+1|0;if((g|0)!=(h|0)){continue}break}b=b+1|0;if((f|0)!=(b|0)){continue}break}break fc}a=J[l+18064>>2];if((a|0)<=0){break fc}b=0;d=J[l+18060>>2];if((d|0)<=0){break fc}while(1){k=0;if((d|0)>0){while(1){j=0;m=J[l+18416>>2];if((m|0)>0){while(1){p=J[i+(j<<2)>>2];d=q+P(p,72)|0;a=J[d+8>>2];Bc:{if((a|0)<=0){break Bc}g=0;f=J[d+4>>2];if((f|0)<=0){break Bc}while(1){h=0;if((f|0)>0){while(1){a=J[d+8>>2];m=r+16|0;o=J[d+20>>2];if(!sG(l,m,n+P(J[d+16>>2],1680)|0,x+P(o,1680)|0,t+(o<<10)|0,p,s+(J[d+12>>2]<<7)|0)){break bc}o=P(a,b)+g|0;a=J[d+36>>2];Zi[J[l+18444>>2]]((J[d+44>>2]+(P(o,a)<<3)|0)+(P(f,k)+h<<3)|0,a,m);f=J[d+4>>2];h=h+1|0;if((f|0)>(h|0)){continue}break}a=J[d+8>>2]}g=g+1|0;if((g|0)<(a|0)){continue}break}m=J[l+18416>>2]}j=j+1|0;if((j|0)<(m|0)){continue}break}h=J[l+18440>>2]}f=h-1|0;J[l+18440>>2]=f;if((h|0)<=1){if(J[l+18368>>2]<=23){qm(l)}if((K[l+18372|0]&248)!=208){break fc}J[l+18376>>2]=0;J[l+18364>>2]=0;J[l+18368>>2]=0;J[l+18316>>2]=0;J[l+18244>>2]=0;J[l+18172>>2]=0;H[l+18372|0]=255;J[l+18100>>2]=0;J[l+18400>>2]=0;a=J[l+18436>>2];f=a?a:2147483647;J[l+18440>>2]=f}h=f;d=J[l+18060>>2];k=k+1|0;if((d|0)>(k|0)){continue}break}a=J[l+18064>>2]}b=b+1|0;if((b|0)<(a|0)){continue}break}break fc}if((a|0)==1){break gc}f=J[l+18064>>2];if((f|0)<=0){break fc}g=0;d=J[l+18060>>2];if((d|0)<=0){break fc}while(1){m=0;if((d|0)>0){while(1){k=0;j=J[l+18416>>2];if((j|0)>0){while(1){p=J[i+(k<<2)>>2];d=q+P(p,72)|0;b=J[d+8>>2];Cc:{if((b|0)<=0){break Cc}a=0;f=J[d+4>>2];if((f|0)<=0){break Cc}while(1){h=0;if((f|0)>0){while(1){if(!rG(l,J[d+60>>2]+((P(f,m)+h|0)+P(J[d+64>>2],P(J[d+8>>2],g)+a|0)<<7)|0,n+P(J[d+16>>2],1680)|0,p)){break bc}f=J[d+4>>2];h=h+1|0;if((f|0)>(h|0)){continue}break}b=J[d+8>>2]}a=a+1|0;if((b|0)>(a|0)){continue}break}j=J[l+18416>>2]}k=k+1|0;if((j|0)>(k|0)){continue}break}h=J[l+18440>>2]}a=h-1|0;J[l+18440>>2]=a;if((h|0)<=1){if(J[l+18368>>2]<=23){qm(l)}d=K[l+18372|0];if((d&248)!=208){break ec}J[l+18376>>2]=0;J[l+18364>>2]=0;J[l+18368>>2]=0;J[l+18316>>2]=0;J[l+18244>>2]=0;J[l+18172>>2]=0;H[l+18372|0]=255;J[l+18100>>2]=0;J[l+18400>>2]=0;a=J[l+18436>>2];a=a?a:2147483647;J[l+18440>>2]=a}h=a;d=J[l+18060>>2];m=m+1|0;if((d|0)>(m|0)){continue}break}f=J[l+18064>>2]}g=g+1|0;if((g|0)<(f|0)){continue}break}break fc}a=rl(J[l>>2]);b=rl(J[l>>2]);if((a|0)!=4){d=94363;break cc}if((b|0)==J[J[l>>2]+4>>2]){break dc}d=94363;break cc}if(!qG(l,a)){break ic}break dc}k=J[l>>2];if(!J[l+18380>>2]|J[k+8>>2]<=0){break hc}b=0;while(1){d=q+P(b,72)|0;i=J[d+32>>2]+7>>3;Dc:{if((i|0)<=0){break Dc}g=0;j=J[d+28>>2]+7>>3;if((j|0)<=0){break Dc}while(1){p=g<<3;k=0;while(1){h=s+(J[d+12>>2]<<7)|0;f=J[d+60>>2]+(P(J[d+64>>2],g)+k<<7)|0;a=0;while(1){m=a<<1;o=m+f|0;I[o>>1]=P(L[o>>1],L[h+m>>1]);o=m|2;n=o+f|0;I[n>>1]=P(L[n>>1],L[h+o>>1]);o=m|4;n=o+f|0;I[n>>1]=P(L[n>>1],L[h+o>>1]);m=m|6;o=m+f|0;I[o>>1]=P(L[o>>1],L[h+m>>1]);a=a+4|0;if((a|0)!=64){continue}break}a=J[d+36>>2];Zi[J[l+18444>>2]]((J[d+44>>2]+P(a,p)|0)+(k<<3)|0,a,f);k=k+1|0;if((j|0)!=(k|0)){continue}break}g=g+1|0;if((i|0)!=(g|0)){continue}break}k=J[l>>2]}b=b+1|0;if((b|0)>2]){continue}break}break hc}k=J[l>>2]}g=J[k+8>>2];b=(g|0)<3?1:3;d=(g|0)!=3;a=0;Ec:{if(d){break Ec}a=1;if(J[l+18412>>2]==3){break Ec}a=0;if(J[l+18408>>2]){break Ec}a=!J[l+18404>>2]}p=d?g:(b|0)>2?g:a&1?g:1;if((p|0)<=0){f=0;if((g|0)<=0){h=0;break ac}while(1){a=q+P(f,72)|0;b=J[a+48>>2];if(b){cj(b);J[a+44>>2]=0;J[a+48>>2]=0}b=J[a+52>>2];if(b){cj(b);J[a+60>>2]=0;J[a+52>>2]=0}b=J[a+56>>2];if(b){cj(b);J[a+56>>2]=0}h=0;f=f+1|0;if((g|0)!=(f|0)){continue}break}break ac}J[r+8>>2]=0;J[r+12>>2]=0;J[r>>2]=0;J[r+4>>2]=0;m=J[k>>2];o=m-1|0;n=m+3|0;h=0;Fc:{Gc:{while(1){f=q+P(h,72)|0;d=sj(n);J[f+56>>2]=d;if(!d){h=0;if((g|0)<=0){break Gc}while(1){a=q+P(h,72)|0;b=J[a+48>>2];if(b){cj(b);J[a+44>>2]=0;J[a+48>>2]=0}b=J[a+52>>2];if(b){cj(b);J[a+60>>2]=0;J[a+52>>2]=0}b=J[a+56>>2];if(b){cj(b);J[a+56>>2]=0}h=h+1|0;if((h|0)!=(g|0)){continue}break}J[218569]=3003;h=0;break ac}d=(r+16|0)+(h<<5)|0;j=J[l+18052>>2]/J[f+4>>2]|0;J[d+12>>2]=j;i=J[f+8>>2];s=J[l+18056>>2];J[d+28>>2]=0;J[d+20>>2]=(j+o>>>0)/(j>>>0);i=(s|0)/(i|0)|0;J[d+16>>2]=i;J[d+24>>2]=i>>1;f=J[f+44>>2];J[d+4>>2]=f;J[d+8>>2]=f;Hc:{Ic:{Jc:{Kc:{switch(j-1|0){case 0:break Ic;case 1:break Kc;default:break Jc}}f=2282;Lc:{switch(i-1|0){case 0:break Hc;case 1:break Lc;default:break Jc}}f=J[l+18452>>2];break Hc}f=2283;break Hc}f=((i|0)==1?2283:(i|0)==2?2284:2282)+1|0}J[d>>2]=f;h=h+1|0;if((p|0)!=(h|0)){continue}break}f=0;if((b|m)<0){break Fc}d=J[k+4>>2];if(m){if((b|0)>(2147483647/(m>>>0)|0)){break Fc}}h=P(b,m);if((h|d)<0){break Fc}if(d){if((h|0)>(2147483647/(d>>>0)|0)){break Fc}}h=P(d,h);if((h|0)==2147483647){break Fc}h=sj(h+1|0);if(!h){break Fc}if(d){j=(b|0)<3;g=0;while(1){i=P(b,g);o=J[k>>2];f=0;while(1){d=(r+16|0)+(f<<5)|0;k=J[d+24>>2];m=q+P(f,72)|0;n=J[d+16>>2];s=(k|0)>1;s=Zi[J[d>>2]](J[m+56>>2],J[(d|(s?4:8))>>2],J[(d|(s?8:4))>>2],J[d+20>>2],J[d+12>>2])|0;k=k+1|0;J[d+24>>2]=k;J[(f<<2)+r>>2]=s;Mc:{if((k|0)<(n|0)){break Mc}J[d+24>>2]=0;k=J[d+8>>2];J[d+4>>2]=k;n=J[d+28>>2]+1|0;J[d+28>>2]=n;if((n|0)>=J[m+32>>2]){break Mc}J[d+8>>2]=k+J[m+36>>2]}f=f+1|0;if((p|0)!=(f|0)){continue}break}d=P(i,o)+h|0;Nc:{Oc:{if(!j){m=J[r>>2];Pc:{Qc:{Rc:{k=J[l>>2];switch(J[k+8>>2]-3|0){case 1:break Pc;case 0:break Qc;default:break Rc}}f=0;if(!J[k>>2]){break Nc}while(1){i=K[f+m|0];H[d+1|0]=i;H[d+2|0]=i;H[d+3|0]=255;H[d|0]=i;d=b+d|0;f=f+1|0;if(f>>>0>2]){continue}break}break Nc}if(!a){break Oc}if(!J[k>>2]){break Nc}f=0;i=J[r+8>>2];o=J[r+4>>2];while(1){H[d|0]=K[f+m|0];H[d+1|0]=K[f+o|0];n=K[f+i|0];H[d+3|0]=255;H[d+2|0]=n;d=b+d|0;f=f+1|0;if(f>>>0>2]){continue}break}break Nc}Sc:{switch(J[l+18408>>2]){case 0:if(!J[k>>2]){break Nc}f=0;o=J[r+8>>2];n=J[r+4>>2];s=J[r+12>>2];while(1){i=K[f+s|0];u=P(i,K[f+m|0])+128|0;H[d|0]=(u>>>8|0)+u>>>8;u=P(i,K[f+n|0])+128|0;H[d+1|0]=(u>>>8|0)+u>>>8;u=K[f+o|0];H[d+3|0]=255;i=P(i,u)+128|0;H[d+2|0]=(i>>>8|0)+i>>>8;d=b+d|0;f=f+1|0;if(f>>>0>2]){continue}break};break Nc;case 2:break Sc;default:break Oc}}Zi[J[l+18448>>2]](d,m,J[r+4>>2],J[r+8>>2],J[k>>2],b);k=J[l>>2];if(!J[k>>2]){break Nc}f=0;i=J[r+12>>2];while(1){m=K[f+i|0];o=P(m,K[d|0]^255)+128|0;H[d|0]=(o>>>8|0)+o>>>8;o=P(m,K[d+1|0]^255)+128|0;H[d+1|0]=(o>>>8|0)+o>>>8;m=P(m,K[d+2|0]^255)+128|0;H[d+2|0]=(m>>>8|0)+m>>>8;d=b+d|0;f=f+1|0;if(f>>>0>2]){continue}break}break Nc}k=J[l>>2];if(a){f=J[k>>2];if((b|0)!=1){if(!f){break Nc}f=0;m=J[r+8>>2];i=J[r+4>>2];o=J[r>>2];while(1){n=K[f+m|0];s=K[f+i|0];u=K[f+o|0];H[d+1|0]=255;H[d|0]=(P(s,150)+P(u,77)|0)+P(n,29)>>>8;d=d+2|0;f=f+1|0;if(f>>>0>2]){continue}break}break Nc}if(!f){break Nc}f=0;m=J[r+8>>2];i=J[r+4>>2];o=J[r>>2];while(1){H[d|0]=(P(K[f+i|0],150)+P(K[f+o|0],77)|0)+P(K[f+m|0],29)>>>8;d=d+1|0;f=f+1|0;if(f>>>0>2]){continue}break}break Nc}Tc:{if(J[k+8>>2]!=4){break Tc}Uc:{switch(J[l+18408>>2]){case 0:if(!J[k>>2]){break Nc}f=0;i=J[r+8>>2];o=J[r+4>>2];n=J[r>>2];s=J[r+12>>2];while(1){u=K[f+i|0];t=K[f+o|0];x=K[f+n|0];m=K[f+s|0];H[d+1|0]=255;t=P(m,t)+128|0;w=P((t>>>8|0)+t>>>8|0,150);t=P(m,x)+128|0;m=P(m,u)+128|0;H[d|0]=(w+P((t>>>8|0)+t>>>8|0,77)|0)+P((m>>>8|0)+m>>>8|0,29)>>>8;d=b+d|0;f=f+1|0;if(f>>>0>2]){continue}break};break Nc;case 2:break Uc;default:break Tc}}if(!J[k>>2]){break Nc}f=0;m=J[r+12>>2];i=J[r>>2];while(1){o=K[f+m|0];n=K[f+i|0];H[d+1|0]=255;o=P(o,n^255)+128|0;H[d|0]=(o>>>8|0)+o>>>8;d=b+d|0;f=f+1|0;if(f>>>0>2]){continue}break}break Nc}m=J[k>>2];i=J[r>>2];if((b|0)!=1){f=0;if(!m){break Nc}while(1){m=K[f+i|0];H[d+1|0]=255;H[d|0]=m;d=d+2|0;f=f+1|0;if(f>>>0>2]){continue}break}break Nc}f=0;if(!m){break Nc}while(1){H[d+f|0]=K[f+i|0];f=f+1|0;if(f>>>0>2]){continue}break}break Nc}Zi[J[l+18448>>2]](d,m,J[r+4>>2],J[r+8>>2],J[k>>2],b);k=J[l>>2]}g=g+1|0;if(g>>>0>2]){continue}break}g=J[k+8>>2]}if((g|0)>0){f=0;while(1){a=q+P(f,72)|0;b=J[a+48>>2];if(b){cj(b);J[a+44>>2]=0;J[a+48>>2]=0}b=J[a+52>>2];if(b){cj(b);J[a+60>>2]=0;J[a+52>>2]=0}b=J[a+56>>2];if(b){cj(b);J[a+56>>2]=0}f=f+1|0;if((g|0)!=(f|0)){continue}break}k=J[l>>2]}J[v+32>>2]=J[k>>2];J[v+28>>2]=J[k+4>>2];if(!O){break ac}J[O>>2]=J[k+8>>2]<3?1:3;break ac}J[218569]=3003;break ac}if((g|0)>0){while(1){a=q+P(f,72)|0;b=J[a+48>>2];if(b){cj(b);J[a+44>>2]=0;J[a+48>>2]=0}b=J[a+52>>2];if(b){cj(b);J[a+60>>2]=0;J[a+52>>2]=0}b=J[a+56>>2];if(b){cj(b);J[a+56>>2]=0}f=f+1|0;if((g|0)!=(f|0)){continue}break}}J[218569]=3003;h=0;break ac}y=J[i>>2];p=q+P(y,72)|0;A=J[p+32>>2]+7>>3;if((A|0)<=0){break fc}u=0;C=J[p+28>>2]+7>>3;if((C|0)<=0){break fc}while(1){j=0;while(1){o=J[p+60>>2]+(P(J[p+64>>2],u)+j<<7)|0;h=J[l+18384>>2];Vc:{if(h){a=J[p+20>>2];w=x+P(a,1680)|0;f=J[l+18400>>2];g=J[l+18396>>2];if(J[l+18392>>2]){if(f){J[l+18400>>2]=f-1;if(J[l+18388>>2]<(h|0)){break Vc}b=65536<>16;g=0-b|0;while(1){a=h;d=o+(K[a+181984|0]<<1)|0;Wc:{if(!L[d>>1]){break Wc}h=J[l+18368>>2];if((h|0)<=0){qm(l);h=J[l+18368>>2];if((h|0)<=0){break Wc}}J[l+18368>>2]=h-1;f=J[l+18364>>2];J[l+18364>>2]=f<<1;if((f|0)>=0){break Wc}f=I[d>>1];if(f&b){break Wc}I[d>>1]=f+((f|0)>0?b:g)}h=a+1|0;if((a|0)>2]){continue}break}break Vc}k=65536<>16;m=0-k|0;while(1){f=Kt(l,w);if((f|0)<0){d=94363;break cc}d=94363;b=f>>>4|0;Xc:{Yc:{switch(f&15){case 1:Zc:{d=J[l+18368>>2];if((d|0)<=0){qm(l);d=J[l+18368>>2];if((d|0)<=0){break Zc}}J[l+18368>>2]=d-1;a=J[l+18364>>2];J[l+18364>>2]=a<<1;if((a|0)>=0){break Zc}g=b;a=k;break Xc}g=b;a=m;break Xc;case 0:break Yc;default:break cc}}a=0;g=15;if(f>>>0>239){break Xc}J[l+18400>>2]=-1<>>0<16){break Xc}d=J[l+18368>>2];if((b|0)>(d|0)){qm(l);d=J[l+18368>>2]}if((b|0)<=(d|0)){J[l+18368>>2]=d-b;d=oxa(J[l+18364>>2],b);b=J[(b<<2)+182080>>2];J[l+18364>>2]=d&(b^-1);b=b&d}else{b=0}J[l+18400>>2]=b+J[l+18400>>2]}f=J[l+18388>>2];_c:{if((h|0)>(f|0)){break _c}while(1){$c:{b=h;h=b+1|0;d=o+(K[b+181984|0]<<1)|0;ad:{if(L[d>>1]){f=J[l+18368>>2];if((f|0)<=0){qm(l);f=J[l+18368>>2];if((f|0)<=0){break ad}}J[l+18368>>2]=f-1;f=J[l+18364>>2];J[l+18364>>2]=f<<1;if((f|0)>=0){break ad}f=I[d>>1];if(f&k){break ad}if((f|0)<=0){I[d>>1]=f-k;break ad}I[d>>1]=f+k;break ad}if(!g){break $c}g=g-1|0}f=J[l+18388>>2];if((b|0)<(f|0)){continue}break _c}break}I[d>>1]=a}if((f|0)>=(h|0)){continue}break}break Vc}bd:{if(f){break bd}f=t+(a<<10)|0;while(1){if(J[l+18368>>2]<=15){qm(l)}cd:{d=J[l+18364>>2];a=I[f+(d>>>22&1022)>>1];dd:{if(a){k=J[l+18368>>2];b=a&15;if((k|0)<(b|0)){d=67766;break cc}J[l+18368>>2]=k-b;J[l+18364>>2]=d<>>4&15)+h|0;I[o+(K[b+181984|0]<<1)>>1]=a>>>8<>>4|0;b=d&15;if(b){k=a+h|0;D=o+(K[k+181984|0]<<1)|0;d=J[l+18368>>2];if((b|0)>(d|0)){qm(l);d=J[l+18368>>2]}if((b|0)<=(d|0)){J[l+18368>>2]=d-b;h=J[l+18364>>2];d=oxa(h,b);b=b<<2;m=J[b+182080>>2];J[l+18364>>2]=d&(m^-1);a=(d&m)+((h|0)>=0?J[b+182160>>2]:0)|0}else{a=0}I[D>>1]=a<>>0<240){break cd}h=h+16|0}if((h|0)<=J[l+18388>>2]){continue}break Vc}break}f=1<>2]=f;if(d>>>0<16){break bd}d=J[l+18368>>2];if((a|0)>(d|0)){qm(l);d=J[l+18368>>2]}if((a|0)<=(d|0)){J[l+18368>>2]=d-a;b=oxa(J[l+18364>>2],a);a=J[(a<<2)+182080>>2];J[l+18364>>2]=b&(a^-1);a=a&b}else{a=0}f=a+J[l+18400>>2]|0}J[l+18400>>2]=f-1;break Vc}if(!rG(l,o,n+P(J[p+16>>2],1680)|0,y)){break bc}}a=J[l+18440>>2];J[l+18440>>2]=a-1;if((a|0)<=1){if(J[l+18368>>2]<=23){qm(l)}d=K[l+18372|0];if((d&248)!=208){break ec}J[l+18376>>2]=0;J[l+18364>>2]=0;J[l+18368>>2]=0;J[l+18316>>2]=0;J[l+18244>>2]=0;J[l+18172>>2]=0;H[l+18372|0]=255;J[l+18100>>2]=0;J[l+18400>>2]=0;a=J[l+18436>>2];J[l+18440>>2]=a?a:2147483647}j=j+1|0;if((C|0)!=(j|0)){continue}break}u=u+1|0;if((A|0)!=(u|0)){continue}break}}d=K[l+18372|0]}if((d&255)==255){ed:while(1){fd:{gd:{hd:{a=J[l>>2];if(!J[a+16>>2]){break hd}if(!(Zi[J[a+24>>2]](J[a+28>>2])|0)){break gd}if(J[a+32>>2]){break hd}h=255;break fd}if(M[a+172>>2]>2]){break gd}h=255;break fd}a=J[l>>2];b=J[a+172>>2];id:{if(b>>>0>2]){J[a+172>>2]=b+1;h=K[b|0];break id}if(!J[a+32>>2]){h=0;break id}b=a+40|0;d=Zi[J[a+16>>2]](J[a+28>>2],b,J[a+36>>2])|0;J[a+168>>2]=J[a+168>>2]+(J[a+172>>2]-J[a+180>>2]|0);jd:{if(!d){h=0;H[a+40|0]=0;J[a+32>>2]=0;b=a+41|0;break jd}h=K[b|0];b=b+d|0}J[a+176>>2]=b;J[a+172>>2]=a+41}while(1){if((h&255)!=255){continue ed}kd:{ld:{a=J[l>>2];if(!J[a+16>>2]){break ld}if(!(Zi[J[a+24>>2]](J[a+28>>2])|0)){break kd}if(J[a+32>>2]){break ld}h=255;break fd}if(M[a+172>>2]>2]){break kd}h=255;break fd}a=J[l>>2];b=J[a+172>>2];md:{if(b>>>0>2]){J[a+172>>2]=b+1;h=K[b|0];break md}if(!J[a+32>>2]){h=0;break md}b=a+40|0;d=Zi[J[a+16>>2]](J[a+28>>2],b,J[a+36>>2])|0;J[a+168>>2]=J[a+168>>2]+(J[a+172>>2]-J[a+180>>2]|0);nd:{if(!d){h=0;H[a+40|0]=0;J[a+32>>2]=0;b=a+41|0;break nd}h=K[b|0];b=b+d|0}J[a+176>>2]=b;J[a+172>>2]=a+41}if((h-1&255)>>>0>253){continue}break}}break}H[l+18372|0]=h}d=gq(l);if((d&248)!=208){continue}}d=gq(l);continue}break}J[218569]=d}h=0;b=J[J[l>>2]+8>>2];if((b|0)<=0){break ac}while(1){a=q+P(h,72)|0;d=J[a+48>>2];if(d){cj(d);J[a+44>>2]=0;J[a+48>>2]=0}d=J[a+52>>2];if(d){cj(d);J[a+60>>2]=0;J[a+52>>2]=0}d=J[a+56>>2];if(d){cj(d);J[a+56>>2]=0}h=h+1|0;if((b|0)!=(h|0)){continue}break}h=0}cj(l)}Ui=r+144|0;a=h;od:{if(!a){a=0;break od}pd:{switch(J[z+4>>2]-8|0){default:Z(105801,55719,1268,14462);B();case 8:f=P(J[v+24>>2],P(J[v+28>>2],J[v+32>>2]));b=sj(f);qd:{if(b){rd:{if((f|0)<=0){break rd}d=0;if(f>>>0>=4){g=f&2147483644;while(1){H[b+d|0]=K[((d<<1)+a|0)+1|0];k=d|1;H[k+b|0]=K[((k<<1)+a|0)+1|0];k=d|2;H[k+b|0]=K[((k<<1)+a|0)+1|0];k=d|3;H[k+b|0]=K[((k<<1)+a|0)+1|0];d=d+4|0;E=E+4|0;if((g|0)!=(E|0)){continue}break}}f=f&3;if(!f){break rd}while(1){H[b+d|0]=K[((d<<1)+a|0)+1|0];d=d+1|0;F=F+1|0;if((f|0)!=(F|0)){continue}break}}cj(a);break qd}J[218569]=3003}J[z+4>>2]=8;a=b;break;case 0:break pd}}if(!J[218570]){break od}d=P(J[v+24>>2],J[v+32>>2]);if(!d){break od}k=J[v+28>>2];h=k>>1;if((h|0)<=0){break od}g=0;while(1){F=P(d,g)+a|0;E=P(d,k+(g^-1)|0)+a|0;b=d;while(1){m=z+16|0;f=b>>>0>=2048?2048:b;hj(m,F,f);l=hj(F,E,f);E=hj(E,m,f)+f|0;F=f+l|0;b=b-f|0;if(b){continue}break}g=g+1|0;if((h|0)!=(g|0)){continue}break}}Ui=z+2064|0;J[218570]=0;sd:{td:{if(a){f=a;a=2;k=J[v+28>>2];g=J[v+32>>2];ud:{vd:{wd:{xd:{yd:{b=J[v+24>>2];switch(b-1|0){case 0:break ud;case 2:break vd;case 3:break xd;case 1:break yd;default:break wd}}a=3;if(!c|(g|0)<=0|(k|0)<=0){break ud}m=g&2147483646;l=g&1;c=0;while(1){h=P(c,g);d=0;b=0;if((g|0)!=1){while(1){a=f+(d+h<<1)|0;H[a+2|0]=P(K[a+2|0],K[a+3|0])+255>>>8;H[a|0]=P(K[a|0],K[a+1|0])+255>>>8;d=d+2|0;b=b+2|0;if((m|0)!=(b|0)){continue}break}}if(l){a=f+(d+h<<1)|0;H[a|0]=P(K[a|0],K[a+1|0])+255>>>8}c=c+1|0;if((k|0)!=(c|0)){continue}break}a=3;break ud}a=1;if(!c|(g|0)<=0|(k|0)<=0){break ud}b=0;while(1){h=P(b,g);d=0;while(1){a=f+(d+h<<2)|0;c=K[a+3|0];H[a|0]=P(c,K[a|0])+255>>>8;H[a+1|0]=P(c,K[a+1|0])+255>>>8;H[a+2|0]=P(c,K[a+2|0])+255>>>8;d=d+1|0;if((g|0)!=(d|0)){continue}break}a=1;b=b+1|0;if((k|0)!=(b|0)){continue}break}break ud}J[v+16>>2]=b;dj(4,99340,141531,v+16|0);cj(f);break td}a=0}J[e+12>>2]=f;J[e+8>>2]=a;J[e+4>>2]=k;J[e>>2]=g;a=0;break sd}J[v>>2]=J[218569];dj(4,99340,149481,v)}a=-2}Ui=v+224|0;return a}function AJ(a,b,c,d){a=a|0;b=b|0;c=c|0;d=d|0;var e=0,f=0,g=0,h=0,i=0,j=0,k=0,l=Q(0),m=0,n=0,o=Q(0),p=0,q=0,r=0,s=0,t=0,u=Q(0),v=0,w=0,x=Q(0),y=0,z=0,A=0,C=0,D=0,E=0,F=Q(0),G=0,O=0,S=0,T=0,U=0,V=0,W=0,X=0,Y=0,_=0,$=0,aa=0,ba=0,ca=0,da=0,ea=Q(0),fa=0,ga=0,ha=Q(0),ia=0,ja=0,ka=0,la=0,ma=0,na=Q(0),oa=0,pa=Q(0),qa=0,ra=0,sa=0,ta=0,ua=0,va=0,wa=Q(0),xa=0,ya=Q(0),za=0,Aa=0,Ba=Q(0),Ca=Q(0),Da=Q(0),Ea=Q(0),Fa=Q(0),Ga=Q(0),Ha=0,Ia=0,Ja=0,Ka=Q(0),La=Q(0),Ma=Q(0),Na=Q(0),Oa=Q(0),Pa=Q(0),Qa=Q(0),Ra=Q(0),Sa=Q(0),Ta=Q(0);va=Ui-16|0;Ui=va;J[va+12>>2]=0;a:{Ha=(c>>>0)/(K[a+8|0]<<1>>>0)|0;b:{c:{if((Ha|0)<=0){break c}ma=J[a+48>>2];while(1){d:{e:{f:{if(!ma){c=J[a+28>>2];g=J[a+32>>2];g:{if((c|0)==(g|0)){ma=0;sa=t;break g}h:{i:{c=Bs(J[a+16>>2],J[a+20>>2],g-c|0,c,va+8|0);ma=c>>>0>1;if(!ma){c=J[va+8>>2];J[a+20>>2]=c+J[a+20>>2];g=J[a+24>>2];c=c+(J[a+28>>2]-g|0)|0;if(c>>>0<=J[a+32>>2]-g>>>0){J[a+28>>2]=c+g;break i}break a}sa=1;j:{switch(c+18|0){case 0:break h;case 1:break i;default:break j}}a=-3;break b}sa=t}c=J[a+28>>2]}t=J[a+24>>2];ua=t;g=c-t|0;Ja=va+8|0;z=0;t=0;i=0;xa=0;ia=Ui-16|0;Ui=ia;e=J[a+12>>2];k:{if(!K[e+60|0]){J[e+112>>2]=2;c=0;break k}if(J[e+1432>>2]>=0){J[a+40>>2]=0;l:{m:{t=J[e+1432>>2];if((t|0)<=0){break m}h=e+1436|0;if(t>>>0>=8){f=t&2147483640;c=0;while(1){J[(h+P(z,20)|0)+12>>2]=0;J[(h+P(z|1,20)|0)+12>>2]=0;J[(h+P(z|2,20)|0)+12>>2]=0;J[(h+P(z|3,20)|0)+12>>2]=0;J[(h+P(z|4,20)|0)+12>>2]=0;J[(h+P(z|5,20)|0)+12>>2]=0;J[(h+P(z|6,20)|0)+12>>2]=0;J[(h+P(z|7,20)|0)+12>>2]=0;z=z+8|0;c=c+8|0;if((f|0)!=(c|0)){continue}break}}c=t&7;if(c){while(1){J[(h+P(z,20)|0)+12>>2]=0;z=z+1|0;i=i+1|0;if((c|0)!=(i|0)){continue}break}}if((t|0)<=3){break m}c=g;break l}c=0;if((g|0)<4){break k}$=e+1436|0;c=g-3|0;t=J[245567];r=t<<8;m=t>>>24|0;t=0;while(1){n:{p=t+ua|0;if(!(K[p|0]!=79|J[72045]!=(K[p|0]|K[p+1|0]<<8|(K[p+2|0]<<16|K[p+3|0]<<24)))){C=t+26|0;if((C|0)>=(c|0)){c=t;break n}v=t+27|0;q=C+ua|0;g=K[q|0];if((v+g|0)>=(c|0)){c=t;break n}f=g+27|0;o:{if(!g){break o}j=g&3;h=v+ua|0;xa=0;p:{if(g>>>0<4){z=0;break p}g=g&252;z=0;n=0;while(1){i=f;f=h+z|0;f=(((i+K[f|0]|0)+K[f+1|0]|0)+K[f+2|0]|0)+K[f+3|0]|0;z=z+4|0;n=n+4|0;if((g|0)!=(n|0)){continue}break}}if(!j){break o}while(1){f=K[h+z|0]+f|0;z=z+1|0;xa=xa+1|0;if((j|0)!=(xa|0)){continue}break}}g=r^J[((m^K[p+1|0])<<2)+981952>>2];g=J[((K[p+2|0]^g>>>24)<<2)+981952>>2]^g<<8;g=J[((K[p+3|0]^g>>>24)<<2)+981952>>2]^g<<8;g=J[((K[p+4|0]^g>>>24)<<2)+981952>>2]^g<<8;g=J[((K[p+5|0]^g>>>24)<<2)+981952>>2]^g<<8;g=J[((K[p+6|0]^g>>>24)<<2)+981952>>2]^g<<8;g=J[((K[p+7|0]^g>>>24)<<2)+981952>>2]^g<<8;g=J[((K[p+8|0]^g>>>24)<<2)+981952>>2]^g<<8;g=J[((K[p+9|0]^g>>>24)<<2)+981952>>2]^g<<8;g=J[((K[p+10|0]^g>>>24)<<2)+981952>>2]^g<<8;g=J[((K[p+11|0]^g>>>24)<<2)+981952>>2]^g<<8;g=J[((K[p+12|0]^g>>>24)<<2)+981952>>2]^g<<8;g=J[((K[p+13|0]^g>>>24)<<2)+981952>>2]^g<<8;g=J[((K[p+14|0]^g>>>24)<<2)+981952>>2]^g<<8;g=J[((K[p+15|0]^g>>>24)<<2)+981952>>2]^g<<8;g=J[((K[p+16|0]^g>>>24)<<2)+981952>>2]^g<<8;g=J[((K[p+17|0]^g>>>24)<<2)+981952>>2]^g<<8;g=J[((K[p+18|0]^g>>>24)<<2)+981952>>2]^g<<8;g=J[((K[p+19|0]^g>>>24)<<2)+981952>>2]^g<<8;g=J[((K[p+20|0]^g>>>24)<<2)+981952>>2]^g<<8;g=J[((K[p+21|0]^g>>>24)<<2)+981952>>2]^g<<8;g=g<<8^J[(g>>>22&1020)+981952>>2];g=g<<8^J[(g>>>22&1020)+981952>>2];i=g<<8^J[(g>>>22&1020)+981952>>2];j=J[(i>>>22&1020)+981952>>2];h=J[e+1432>>2];g=h+1|0;J[e+1432>>2]=g;h=$+P(h,20)|0;J[h+8>>2]=j^i<<8;J[h+4>>2]=f-26;J[h>>2]=K[p+22|0]|K[p+23|0]<<8|(K[p+24|0]<<16|K[p+25|0]<<24);f=-1;if(K[(K[q|0]+(v+ua|0)|0)-1|0]!=255){f=K[p+6|0]|K[p+7|0]<<8|(K[p+8|0]<<16|K[p+9|0]<<24)}J[h+12>>2]=C;J[h+16>>2]=f;t=t+1|0;if((g|0)!=4){continue}break n}t=t+1|0;if((t|0)<(c|0)){continue}}break}t=J[e+1432>>2];if((t|0)<=0){break k}}$=e+1436|0;h=0;while(1){p=$+P(h,20)|0;z=J[p+8>>2];v=J[p+4>>2];r=J[p+12>>2];m=c-r|0;C=(m|0)>(v|0)?v:m;q:{if((C|0)<=0){break q}q=r+ua|0;f=0;if((C|0)!=1){j=C&2147483646;i=0;while(1){g=f+q|0;n=J[((K[g|0]^z>>>24)<<2)+981952>>2]^z<<8;z=J[((K[g+1|0]^n>>>24)<<2)+981952>>2]^n<<8;f=f+2|0;i=i+2|0;if((j|0)!=(i|0)){continue}break}}if(!(C&1)){break q}z=J[((K[f+q|0]^z>>>24)<<2)+981952>>2]^z<<8}J[p+8>>2]=z;J[p+4>>2]=v-C;r:{if((m|0)>=(v|0)){if(J[p>>2]==(z|0)){J[e+1392>>2]=-1;J[e+1004>>2]=0;J[e+1432>>2]=-1;c=J[p+16>>2];J[e+1072>>2]=c;J[e+1076>>2]=(c|0)!=-1;c=r+C|0;break k}t=t-1|0;J[e+1432>>2]=t;g=$+P(t,20)|0;t=J[g+4>>2];J[p>>2]=J[g>>2];J[p+4>>2]=t;J[p+16>>2]=J[g+16>>2];t=J[g+12>>2];J[p+8>>2]=J[g+8>>2];J[p+12>>2]=t;t=J[e+1432>>2];break r}h=h+1|0}if((h|0)<(t|0)){continue}break}break k}J[e+112>>2]=0;J[e+44>>2]=ua;J[e+52>>2]=g+ua;if(!PI(e)){c=0;J[a+40>>2]=0;break k}h=0;m=0;y=0;U=Ui-2384|0;Ui=U;s:{t:{u:{v:{J[e+1516>>2]=0;J[e+1520>>2]=0;w:{x:{if(J[e+108>>2]){break x}f=e+1132|0;while(1){g=0;y:{z:{A:{if(J[e+1392>>2]!=-1){break A}c=J[e+44>>2];B:{C:{if(c){if(c>>>0>=M[e+52>>2]){break C}J[e+44>>2]=c+1;c=K[c|0];break B}c=gl(J[e+32>>2]);if((c|0)!=-1){break B}}J[e+108>>2]=1;c=0}if(J[e+108>>2]){break y}if((c&255)!=79){break z}D:{E:{F:{G:{H:{c=J[e+44>>2];I:{if(c){if(c>>>0>=M[e+52>>2]){break H}J[e+44>>2]=c+1;c=K[c|0];break I}c=gl(J[e+32>>2]);if((c|0)==-1){break H}}if((c&255)!=103){break z}c=J[e+44>>2];if(!c){break G}if(c>>>0>=M[e+52>>2]){break E}J[e+44>>2]=c+1;c=K[c|0];break F}J[e+108>>2]=1;break z}c=gl(J[e+32>>2]);if((c|0)==-1){break E}}if((c&255)!=103){break z}if((gr(e)|0)==83){break D}break z}J[e+108>>2]=1;break z}if(!Xq(e)){break y}if(!(H[e+1387|0]&1)){break A}H[e+1388|0]=0;J[e+1396>>2]=0;J[e+112>>2]=32;break y}J:{while(1){if(J[e+1392>>2]!=-1){break J}if(!Qo(e)){break y}if(!(H[e+1387|0]&1)){continue}break}J[e+112>>2]=32;break y}J[e+1408>>2]=0;J[e+1412>>2]=0;J[e+1396>>2]=0;H[e+1388|0]=0;g=1;break y}J[e+112>>2]=30}c=0;if(!g){break w}K:{L:{i=J[e+1408>>2];M:{if((i|0)<0){break M}N:{O:{if(i){q=J[e+1404>>2];break O}J[e+1404>>2]=0;while(1){c=Zk(e);if((c|0)==-1){break N}g=J[e+1408>>2];i=g+8|0;J[e+1408>>2]=i;q=J[e+1404>>2]+(c<>2]=q;if((g|0)<-7){continue}break}}J[e+1408>>2]=i-1;J[e+1404>>2]=q>>>1;if(!(q&1)){break M}if(K[e+60|0]){J[e+112>>2]=35;c=0;break w}while(1){m=K[e+1388|0];if(!m){if(J[e+1396>>2]){break K}q=J[e+1392>>2];if((q|0)==-1){J[e+1400>>2]=J[e+1128>>2]-1;if(!Qo(e)){J[e+1396>>2]=1;break K}if(!(H[e+1387|0]&1)){break L}q=J[e+1392>>2]}c=q+1|0;J[e+1392>>2]=c;m=K[f+q|0];if((m|0)!=255){J[e+1400>>2]=q;J[e+1396>>2]=1}if((c|0)>=J[e+1128>>2]){J[e+1392>>2]=-1}if(K[e+1388|0]){break u}H[e+1388|0]=m;if(!m){break K}}H[e+1388|0]=m-1;J[e+1412>>2]=J[e+1412>>2]+1;c=J[e+44>>2];P:{Q:{if(c){if(c>>>0>=M[e+52>>2]){break Q}J[e+44>>2]=c+1;J[e+1408>>2]=0;continue}if((gl(J[e+32>>2])|0)!=-1){break P}}J[e+108>>2]=1}J[e+1408>>2]=0;continue}}J[e+1408>>2]=-1}if(!(J[e+96>>2]!=J[e+104>>2]?J[e+92>>2]:0)){g=J[e+420>>2];f=0;R:{if((g|0)<=0){break R}c=g-1|0;if(g>>>0<=16384){f=H[c+197376|0];if(g>>>0<=16){break R}f=H[(c>>>5|0)+197376|0]+5|0;if(g>>>0<=512){break R}f=H[(c>>>10|0)+197376|0]+10|0;break R}if(g>>>0<=16777216){f=H[(c>>>15|0)+197376|0]+15|0;if(g>>>0<=524288){break R}f=H[(c>>>20|0)+197376|0]+20|0;break R}f=H[(c>>>25|0)+197376|0]+25|0;if(g>>>0<=536870912){break R}f=H[(c>>>30|0)+197376|0]+30|0}c=bk(e,f);if((c|0)==-1|(c|0)>=J[e+420>>2]){break x}J[U+12>>2]=c;g=e+P(c,6)|0;S:{T:{if(K[g+424|0]){i=J[e+128>>2];j=J[e+1408>>2];U:{V:{if((j|0)<0){break V}W:{X:{if(j){q=J[e+1404>>2];break X}J[e+1404>>2]=0;while(1){c=Zk(e);if((c|0)==-1){break W}f=J[e+1408>>2];j=f+8|0;J[e+1408>>2]=j;q=J[e+1404>>2]+(c<>2]=q;if((f|0)<-7){continue}break}}j=j-1|0;J[e+1408>>2]=j;f=q>>>1|0;J[e+1404>>2]=f;h=q&1;Y:{if(!j){J[e+1404>>2]=0;while(1){c=Zk(e);if((c|0)==-1){break Y}n=J[e+1408>>2];j=n+8|0;J[e+1408>>2]=j;f=J[e+1404>>2]+(c<>2]=f;if((n|0)<-7){continue}break}}J[e+1408>>2]=j-1;J[e+1404>>2]=f>>>1;m=f&1;break U}J[e+1408>>2]=-1;break V}J[e+1408>>2]=-1}m=0}c=K[g+424|0];j=!c;q=i>>1;if(h|!c){break T}J[ia+4>>2]=i-J[e+124>>2]>>2;c=J[e+124>>2]+i>>2;break S}j=1;i=J[e+124>>2];q=i>>1}J[ia+4>>2]=0;m=j|m;c=q}J[U+8>>2]=c;Z:{if(!(m&1)){c=P(i,3);J[ia+8>>2]=c-J[e+124>>2]>>2;i=c+J[e+124>>2]>>2;break Z}J[ia+8>>2]=q}J[U+4>>2]=i;m=1;break x}Z(14893,82607,3143,50358);B()}J[e+112>>2]=32}m=0;J[e+1408>>2]=0;if(!J[e+108>>2]){continue}break}}c=m}f=0;_:{if(!c){break _}$=J[ia+8>>2];C=J[ia+4>>2];Aa=J[U+4>>2];Ia=e+P(J[U+12>>2],6)|0;qa=J[e+416>>2]+P(K[Ia+425|0],40)|0;G=J[(e+(K[Ia+424|0]<<2)|0)+116>>2];k=J[e+4>>2];if((k|0)>0){Y=e+1132|0;A=e+1008|0;da=e+144|0;ta=qa+9|0;while(1){c=K[(J[qa+4>>2]+P(y,3)|0)+2|0];j=y<<2;aa=j+(U+1360|0)|0;J[aa>>2]=0;h=K[c+ta|0];if(!L[da+(h<<1)>>1]){J[e+112>>2]=21;f=0;break _}$:{aa:{c=J[e+1408>>2];ba:{if((c|0)<0){break ba}f=J[e+272>>2];ca:{da:{if(c){g=J[e+1404>>2];break da}J[e+1404>>2]=0;while(1){g=Zk(e);if((g|0)==-1){break ca}i=J[e+1408>>2];c=i+8|0;J[e+1408>>2]=c;g=J[e+1404>>2]+(g<>2]=g;if((i|0)<-7){continue}break}}J[e+1408>>2]=c-1;J[e+1404>>2]=g>>>1;if(!(g&1)){break ba}E=J[j+A>>2];w=f+P(h,1596)|0;V=J[(K[w+1588|0]<<2)+197388>>2];c=H[(V>>>5|0)+197376|0]+4|0;I[E>>1]=bk(e,c);I[E+2>>1]=bk(e,c);ea:{if(K[w|0]){ba=w+82|0;D=w+65|0;s=w+49|0;p=w+33|0;v=w+1|0;f=2;q=0;while(1){O=K[q+v|0];i=K[O+p|0];c=0;ja=K[s+O|0];fa:{if(!ja){break fa}j=K[D+O|0];h=J[e+136>>2];c=J[e+1408>>2];ga:{if((c|0)>9){break ga}if(!c){J[e+1404>>2]=0}while(1){k=K[e+1388|0];ha:{ia:{ja:{ka:{if(J[e+1396>>2]){if(k&255){break ka}break ga}if(k&255){break ka}g=J[e+1392>>2];if((g|0)==-1){J[e+1400>>2]=J[e+1128>>2]-1;if(!Qo(e)){J[e+1396>>2]=1;break ga}if(!(H[e+1387|0]&1)){break ja}g=J[e+1392>>2]}c=g+1|0;J[e+1392>>2]=c;k=K[g+Y|0];if((k|0)!=255){J[e+1400>>2]=g;J[e+1396>>2]=1}if((c|0)>=J[e+1128>>2]){J[e+1392>>2]=-1}if(K[e+1388|0]){break u}H[e+1388|0]=k;if(!k){break ga}}H[e+1388|0]=k-1;J[e+1412>>2]=J[e+1412>>2]+1;c=J[e+44>>2];la:{if(c){if(c>>>0>=M[e+52>>2]){break ia}J[e+44>>2]=c+1;k=K[c|0];break la}k=gl(J[e+32>>2]);if((k|0)==-1){break ia}}c=k&255;break ha}J[e+112>>2]=32;break ga}J[e+108>>2]=1;c=0}g=J[e+1408>>2];J[e+1408>>2]=g+8;J[e+1404>>2]=J[e+1404>>2]+(c<>2];g=I[(h+((c&1023)<<1)|0)+36>>1];ma:{if((g|0)>=0){j=c;c=K[g+J[h+8>>2]|0];J[e+1404>>2]=j>>>c;c=J[e+1408>>2]-c|0;J[e+1408>>2]=(c|0)>0?c:0;c=(c|0)<0?-1:g;break ma}c=Bv(e,h)}if(!K[h+23|0]){break fa}c=J[J[h+2088>>2]+(c<<2)>>2]}if(i){r=-1<>1];na:{if((n|0)<0){break na}i=J[e+136>>2];g=J[e+1408>>2];oa:{if((g|0)>9){break oa}if(!g){J[e+1404>>2]=0}while(1){k=K[e+1388|0];pa:{if(J[e+1396>>2]){if(!(k&255)){break oa}break pa}if(k&255){break pa}qa:{ra:{sa:{ta:{ua:{g=J[e+1392>>2];if((g|0)==-1){J[e+1400>>2]=J[e+1128>>2]-1;g=J[e+44>>2];va:{if(g){if(g>>>0>=M[e+52>>2]){break ua}J[e+44>>2]=g+1;k=K[g|0];break va}k=gl(J[e+32>>2]);if((k|0)==-1){break ua}}if((k&255)!=79){break ta}g=J[e+44>>2];wa:{if(g){if(g>>>0>=M[e+52>>2]){break ua}J[e+44>>2]=g+1;k=K[g|0];break wa}k=gl(J[e+32>>2]);if((k|0)==-1){break ua}}if((k&255)!=103){break ta}g=J[e+44>>2];xa:{if(g){if(g>>>0>=M[e+52>>2]){break ua}J[e+44>>2]=g+1;k=K[g|0];break xa}k=gl(J[e+32>>2]);if((k|0)==-1){break ua}}if((k&255)!=103){break ta}g=J[e+44>>2];ya:{if(g){if(g>>>0>=M[e+52>>2]){break ua}J[e+44>>2]=g+1;k=K[g|0];break ya}k=gl(J[e+32>>2]);if((k|0)==-1){break ua}}if((k&255)!=83){break ta}if(!Xq(e)){break sa}if(!(H[e+1387|0]&1)){break ra}g=J[e+1392>>2]}j=g+1|0;J[e+1392>>2]=j;k=K[g+Y|0];if((k|0)!=255){J[e+1400>>2]=g;J[e+1396>>2]=1}if((j|0)>=J[e+1128>>2]){J[e+1392>>2]=-1}if(K[e+1388|0]){break qa}H[e+1388|0]=k;if(k){break pa}break oa}J[e+108>>2]=1}J[e+112>>2]=30}J[e+1396>>2]=1;break oa}J[e+112>>2]=32;break oa}break u}H[e+1388|0]=k-1;J[e+1412>>2]=J[e+1412>>2]+1;za:{Aa:{g=J[e+44>>2];Ba:{if(g){if(g>>>0>=M[e+52>>2]){break Aa}J[e+44>>2]=g+1;k=K[g|0];break Ba}k=gl(J[e+32>>2]);if((k|0)==-1){break Aa}}g=k&255;break za}J[e+108>>2]=1;g=0}j=J[e+1408>>2];J[e+1408>>2]=j+8;J[e+1404>>2]=J[e+1404>>2]+(g<>2];i=I[(S+((g&1023)<<1)|0)+36>>1];Ca:{Da:{if((i|0)>=0){j=g;g=K[i+J[S+8>>2]|0];J[e+1404>>2]=j>>>g;j=J[e+1408>>2]-g|0;g=(j|0)>0?j:0;k=(j|0)<0?-1:i;break Da}g=J[e+1408>>2];Ea:{if((g|0)>24){break Ea}if(!g){J[e+1404>>2]=0}while(1){k=K[e+1388|0];Fa:{if(J[e+1396>>2]){if(!(k&255)){break Ea}break Fa}if(k&255){break Fa}Ga:{Ha:{Ia:{Ja:{Ka:{g=J[e+1392>>2];if((g|0)==-1){J[e+1400>>2]=J[e+1128>>2]-1;g=J[e+44>>2];La:{if(g){if(g>>>0>=M[e+52>>2]){break Ka}J[e+44>>2]=g+1;k=K[g|0];break La}k=gl(J[e+32>>2]);if((k|0)==-1){break Ka}}if((k&255)!=79){break Ja}g=J[e+44>>2];Ma:{if(g){if(g>>>0>=M[e+52>>2]){break Ka}J[e+44>>2]=g+1;k=K[g|0];break Ma}k=gl(J[e+32>>2]);if((k|0)==-1){break Ka}}if((k&255)!=103){break Ja}g=J[e+44>>2];Na:{if(g){if(g>>>0>=M[e+52>>2]){break Ka}J[e+44>>2]=g+1;k=K[g|0];break Na}k=gl(J[e+32>>2]);if((k|0)==-1){break Ka}}if((k&255)!=103){break Ja}g=J[e+44>>2];Oa:{if(g){if(g>>>0>=M[e+52>>2]){break Ka}J[e+44>>2]=g+1;k=K[g|0];break Oa}k=gl(J[e+32>>2]);if((k|0)==-1){break Ka}}if((k&255)!=83){break Ja}if(!Xq(e)){break Ia}if(!(H[e+1387|0]&1)){break Ha}g=J[e+1392>>2]}j=g+1|0;J[e+1392>>2]=j;k=K[g+Y|0];if((k|0)!=255){J[e+1400>>2]=g;J[e+1396>>2]=1}if((j|0)>=J[e+1128>>2]){J[e+1392>>2]=-1}if(K[e+1388|0]){break Ga}H[e+1388|0]=k;if(k){break Fa}break Ea}J[e+108>>2]=1}J[e+112>>2]=30}J[e+1396>>2]=1;break Ea}J[e+112>>2]=32;break Ea}break u}H[e+1388|0]=k-1;J[e+1412>>2]=J[e+1412>>2]+1;Pa:{Qa:{g=J[e+44>>2];Ra:{if(g){if(g>>>0>=M[e+52>>2]){break Qa}J[e+44>>2]=g+1;k=K[g|0];break Ra}k=gl(J[e+32>>2]);if((k|0)==-1){break Qa}}g=k&255;break Pa}J[e+108>>2]=1;g=0}j=J[e+1408>>2];J[e+1408>>2]=j+8;J[e+1404>>2]=J[e+1404>>2]+(g<>2];Ua:{if(!n){m=J[S+2084>>2];if(m){break Ua}k=-1;break Ca}W=J[S+4>>2];if((W|0)<9){break Ta}m=J[S+2084>>2];if(!m){break Ta}}_=J[e+1404>>2];k=0;g=J[S+2092>>2];if((g|0)>=2){j=_<<24|(_&65280)<<8|(_>>>8&65280|_>>>24);j=j>>>4&252645135|(j&252645135)<<4;j=j>>>2&858993459|(j&858993459)<<2;i=j>>>1&1431655765|(j&1431655765)<<1;while(1){W=g>>>1|0;j=W+k|0;n=i>>>0>2];k=n?k:j;g=n?W:g-W|0;if((g|0)>1){continue}break}}g=J[e+1408>>2];k=K[S+23|0]?k:J[J[S+2088>>2]+(k<<2)>>2];j=K[k+J[S+8>>2]|0];if((g|0)<(j|0)){break Sa}J[e+1404>>2]=_>>>j;g=g-j|0;break Da}if(K[S+23|0]){break ea}if((W|0)>0){g=J[S+8>>2];k=0;while(1){Va:{i=g+k|0;m=K[i|0];if((m|0)==255){break Va}j=J[e+1404>>2];if(J[n+(k<<2)>>2]!=(j&(-1<>2];if((g|0)<(m|0)){break Sa}J[e+1404>>2]=j>>>m;g=g-K[i|0]|0;break Da}k=k+1|0;if((W|0)!=(k|0)){continue}break}}J[e+112>>2]=21}k=-1;g=0}J[e+1408>>2]=g}if(!K[S+23|0]){break na}k=J[J[S+2088>>2]+(k<<2)>>2]}c=c>>ja;I[E+(f<<1)>>1]=k;f=f+1|0;if((h|0)!=(f|0)){continue}break}f=h}q=q+1|0;if(q>>>0>2]==-1){break ba}I[U+336>>1]=257;p=J[w+1592>>2];if((p|0)<3){break aa}v=w+338|0;n=w+1088|0;g=2;while(1){r=g<<1;c=r+n|0;i=K[c+1|0];j=i<<1;h=K[c|0];c=h<<1;f=I[c+E>>1];m=I[j+E>>1]-f|0;q=m>>31;c=L[c+v>>1];c=(P((m^q)-q|0,L[r+v>>1]-c|0)|0)/(L[j+v>>1]-c|0)|0;k=f+((m|0)<0?0-c|0:c)|0;c=r+E|0;j=I[c>>1];Wa:{Xa:{if(j){f=U+336|0;H[f+i|0]=1;H[f+h|0]=1;H[f+g|0]=1;f=V-k|0;if((j|0)>=((f|0)<(k|0)?f:k)<<1){if((f|0)>(k|0)){break Wa}k=(f+(k-j|0)|0)-1|0;break Xa}if(j&1){k=k-(j+1>>>1|0)|0;break Xa}k=(j>>>1|0)+k|0;break Xa}H[(U+336|0)+g|0]=0}I[c>>1]=k}g=g+1|0;if((p|0)!=(g|0)){continue}break}break aa}break t}J[e+1408>>2]=-1}J[aa>>2]=1;break $}if((p|0)<=0){break $}k=0;if((p|0)!=1){f=p&2147483646;g=0;while(1){if(!K[(U+336|0)+k|0]){I[E+(k<<1)>>1]=65535}c=k|1;if(!K[c+(U+336|0)|0]){I[E+(c<<1)>>1]=65535}k=k+2|0;g=g+2|0;if((f|0)!=(g|0)){continue}break}}if(K[(U+336|0)+k|0]|!(p&1)){break $}I[E+(k<<1)>>1]=65535}k=J[e+4>>2];y=y+1|0;if((k|0)>(y|0)){continue}break}}Ya:{c=J[e+92>>2];if(!(J[e+96>>2]!=J[e+104>>2]?c:0)){hj(U+336|0,U+1360|0,k<<2);j=L[qa>>1];if(!j){break Ya}h=J[qa+4>>2];k=0;while(1){g=h+P(k,3)|0;f=(U+1360|0)+(K[g|0]<<2)|0;Za:{_a:{if(!J[f>>2]){g=K[g+1|0];break _a}g=K[g+1|0];if(J[(U+1360|0)+(g<<2)>>2]){break Za}}J[(U+1360|0)+(g<<2)>>2]=0;J[f>>2]=0}k=k+1|0;if((j|0)!=(k|0)){continue}break}break Ya}Z(14893,82607,3293,9860);B()}ka=G>>1;$a:{ab:{if(K[qa+8|0]){V=qa+24|0;ba=e+812|0;c=0;while(1){g=0;j=J[e+4>>2];if((j|0)>0){h=J[qa+4>>2];k=0;while(1){if(K[(h+P(k,3)|0)+2|0]==(c|0)){q=(U+16|0)+g|0;f=k<<2;bb:{if(J[f+(U+1360|0)>>2]){f=0;m=1;break bb}f=J[f+ba>>2];m=0}H[q|0]=m;J[(U+272|0)+(g<<2)>>2]=f;g=g+1|0}k=k+1|0;if((j|0)!=(k|0)){continue}break}}ra=U+272|0;S=U+16|0;X=0;Y=0;j=Ui-16|0;oa=j;Ui=j;n=J[e+4>>2];h=K[c+V|0];T=J[e+408>>2]+P(h,24)|0;f=J[T+4>>2];W=L[(e+(h<<1)|0)+280>>1];h=ka<<((W|0)==2);m=f>>>0>>0?f:h;f=J[T>>2];la=(m-(f>>>0>>0?f:h)>>>0)/M[T+8>>2]|0;q=la<<2;h=P(n,q+4|0);fa=J[J[e+136>>2]+P(K[T+13|0],2096)>>2];da=J[e+104>>2];f=J[e+92>>2];cb:{if(f){h=da-(h+7&-8)|0;if((h|0)>2]){break cb}J[e+104>>2]=h;X=f+h|0;break cb}X=j-(h+15&-16)|0;Ui=X}db:{if((n|0)<=0){break db}j=n&3;f=(n<<2)+X|0;i=0;eb:{if(n>>>0<4){m=0;break eb}h=n&2147483644;m=0;y=0;while(1){n=(m<<2)+X|0;J[n>>2]=f;f=f+q|0;J[n+4>>2]=f;f=f+q|0;J[n+8>>2]=f;f=f+q|0;J[n+12>>2]=f;m=m+4|0;f=f+q|0;y=y+4|0;if((h|0)!=(y|0)){continue}break}}if(!j){break db}while(1){J[(m<<2)+X>>2]=f;m=m+1|0;f=f+q|0;i=i+1|0;if((j|0)!=(i|0)){continue}break}}fb:{gb:{hb:{ib:{jb:{if((g|0)>0){i=ka<<2;f=0;if((g|0)!=1){j=g&2147483646;m=0;while(1){if(!K[f+S|0]){ij(J[ra+(f<<2)>>2],0,i)}h=f|1;if(!K[h+S|0]){ij(J[ra+(h<<2)>>2],0,i)}f=f+2|0;m=m+2|0;if((j|0)!=(m|0)){continue}break}}if(!(K[f+S|0]|!(g&1))){ij(J[ra+(f<<2)>>2],0,i)}if((g|0)==1|(W|0)!=2){break jb}f=0;if((g|0)<=0){break ib}while(1){if(!K[f+S|0]){break ib}f=f+1|0;if((g|0)!=(f|0)){continue}break}break hb}f=0;if((W|0)==2){break ib}}if((la|0)<=0){break hb}O=e+1132|0;ta=(g|0)<=0;while(1){D=ta|(Y|0)!=0;ja=0;p=0;while(1){i=0;kb:{if(D){break kb}while(1){lb:{if(!K[i+S|0]){n=K[T+13|0];j=J[e+136>>2];f=J[e+1408>>2];mb:{if((f|0)>9){break mb}if(!f){J[e+1404>>2]=0}nb:{while(1){ob:{f=K[e+1388|0];pb:{if(J[e+1396>>2]){if(f&255){break pb}break mb}if(f&255){break pb}m=J[e+1392>>2];if((m|0)==-1){J[e+1400>>2]=J[e+1128>>2]-1;if(!Qo(e)){break nb}if(!(H[e+1387|0]&1)){break ob}m=J[e+1392>>2]}h=m+1|0;J[e+1392>>2]=h;f=K[m+O|0];if((f|0)!=255){J[e+1400>>2]=m;J[e+1396>>2]=1}if((h|0)>=J[e+1128>>2]){J[e+1392>>2]=-1}if(K[e+1388|0]){break lb}H[e+1388|0]=f;if(!f){break mb}}H[e+1388|0]=f-1;J[e+1412>>2]=J[e+1412>>2]+1;qb:{rb:{f=J[e+44>>2];if(f){if(f>>>0>=M[e+52>>2]){break rb}J[e+44>>2]=f+1;f=K[f|0];break qb}f=gl(J[e+32>>2]);if((f|0)==-1){break rb}f=f&255;break qb}J[e+108>>2]=1;f=0}h=J[e+1408>>2];J[e+1408>>2]=h+8;J[e+1404>>2]=J[e+1404>>2]+(f<>2]=32;break mb}J[e+1396>>2]=1}j=j+P(n,2096)|0;f=J[e+1404>>2];h=I[(j+((f&1023)<<1)|0)+36>>1];sb:{if((h|0)<0){f=Bv(e,j);break sb}m=f;f=K[h+J[j+8>>2]|0];J[e+1404>>2]=m>>>f;f=J[e+1408>>2]-f|0;J[e+1408>>2]=(f|0)>0?f:0;f=(f|0)<0?-1:h}f=K[j+23|0]?J[J[j+2088>>2]+(f<<2)>>2]:f;if((f|0)==-1){break hb}J[J[(i<<2)+X>>2]+(ja<<2)>>2]=J[J[T+16>>2]+(f<<2)>>2]}i=i+1|0;if((g|0)!=(i|0)){continue}break kb}break}break u}tb:{if((fa|0)<=0|(p|0)>=(la|0)){break tb}ub:{if(ta){f=0;break ub}q=0;if(W){vb:{wb:{while(1){A=0;xb:{while(1){yb:{if(K[A+S|0]){break yb}h=A<<2;f=I[(J[T+20>>2]+(K[J[J[h+X>>2]+(ja<<2)>>2]+q|0]<<4)|0)+(Y<<1)>>1];if((f|0)<0){break yb}aa=J[T+8>>2];if((aa|0)<=0){break yb}v=J[h+ra>>2];w=J[e+136>>2]+P(f,2096)|0;r=w+36|0;m=J[T>>2]+P(p,aa)|0;ga=0;while(1){if(!K[w+21|0]){break vb}f=J[e+1408>>2];zb:{if((f|0)>9){break zb}if(!f){J[e+1404>>2]=0}Ab:{Bb:{Cb:{while(1){Db:{f=K[e+1388|0];Eb:{if(J[e+1396>>2]){if(f&255){break Eb}break zb}if(f&255){break Eb}i=J[e+1392>>2];if((i|0)==-1){J[e+1400>>2]=J[e+1128>>2]-1;f=J[e+44>>2];Fb:{if(f){if(f>>>0>=M[e+52>>2]){break Cb}J[e+44>>2]=f+1;f=K[f|0];break Fb}f=gl(J[e+32>>2]);if((f|0)==-1){break Cb}}if((f&255)!=79){break Bb}f=J[e+44>>2];Gb:{if(f){if(f>>>0>=M[e+52>>2]){break Cb}J[e+44>>2]=f+1;f=K[f|0];break Gb}f=gl(J[e+32>>2]);if((f|0)==-1){break Cb}}if((f&255)!=103){break Bb}f=J[e+44>>2];Hb:{if(f){if(f>>>0>=M[e+52>>2]){break Cb}J[e+44>>2]=f+1;f=K[f|0];break Hb}f=gl(J[e+32>>2]);if((f|0)==-1){break Cb}}if((f&255)!=103){break Bb}f=J[e+44>>2];Ib:{if(f){if(f>>>0>=M[e+52>>2]){break Cb}J[e+44>>2]=f+1;f=K[f|0];break Ib}f=gl(J[e+32>>2]);if((f|0)==-1){break Cb}}if((f&255)!=83){break Bb}if(!Xq(e)){break Ab}if(!(H[e+1387|0]&1)){break Db}i=J[e+1392>>2]}h=i+1|0;J[e+1392>>2]=h;f=K[i+O|0];if((f|0)!=255){J[e+1400>>2]=i;J[e+1396>>2]=1}if((h|0)>=J[e+1128>>2]){J[e+1392>>2]=-1}if(K[e+1388|0]){break u}H[e+1388|0]=f;if(!f){break zb}}H[e+1388|0]=f-1;J[e+1412>>2]=J[e+1412>>2]+1;Jb:{Kb:{f=J[e+44>>2];if(f){if(f>>>0>=M[e+52>>2]){break Kb}J[e+44>>2]=f+1;f=K[f|0];break Jb}f=gl(J[e+32>>2]);if((f|0)==-1){break Kb}f=f&255;break Jb}J[e+108>>2]=1;f=0}h=J[e+1408>>2];J[e+1408>>2]=h+8;J[e+1404>>2]=J[e+1404>>2]+(f<>2]=32;break zb}J[e+108>>2]=1}J[e+112>>2]=30}J[e+1396>>2]=1}Lb:{Mb:{Nb:{f=J[e+1404>>2];j=I[r+((f&1023)<<1)>>1];if((j|0)<0){f=J[e+1408>>2];Ob:{if((f|0)>24){break Ob}if(!f){J[e+1404>>2]=0}Pb:{Qb:{Rb:{while(1){Sb:{f=K[e+1388|0];Tb:{if(J[e+1396>>2]){if(f&255){break Tb}break Ob}if(f&255){break Tb}i=J[e+1392>>2];if((i|0)==-1){J[e+1400>>2]=J[e+1128>>2]-1;f=J[e+44>>2];Ub:{if(f){if(f>>>0>=M[e+52>>2]){break Rb}J[e+44>>2]=f+1;f=K[f|0];break Ub}f=gl(J[e+32>>2]);if((f|0)==-1){break Rb}}if((f&255)!=79){break Qb}f=J[e+44>>2];Vb:{if(f){if(f>>>0>=M[e+52>>2]){break Rb}J[e+44>>2]=f+1;f=K[f|0];break Vb}f=gl(J[e+32>>2]);if((f|0)==-1){break Rb}}if((f&255)!=103){break Qb}f=J[e+44>>2];Wb:{if(f){if(f>>>0>=M[e+52>>2]){break Rb}J[e+44>>2]=f+1;f=K[f|0];break Wb}f=gl(J[e+32>>2]);if((f|0)==-1){break Rb}}if((f&255)!=103){break Qb}f=J[e+44>>2];Xb:{if(f){if(f>>>0>=M[e+52>>2]){break Rb}J[e+44>>2]=f+1;f=K[f|0];break Xb}f=gl(J[e+32>>2]);if((f|0)==-1){break Rb}}if((f&255)!=83){break Qb}if(!Xq(e)){break Pb}if(!(H[e+1387|0]&1)){break Sb}i=J[e+1392>>2]}h=i+1|0;J[e+1392>>2]=h;f=K[i+O|0];if((f|0)!=255){J[e+1400>>2]=i;J[e+1396>>2]=1}if((h|0)>=J[e+1128>>2]){J[e+1392>>2]=-1}if(K[e+1388|0]){break u}H[e+1388|0]=f;if(!f){break Ob}}H[e+1388|0]=f-1;J[e+1412>>2]=J[e+1412>>2]+1;Yb:{Zb:{f=J[e+44>>2];if(f){if(f>>>0>=M[e+52>>2]){break Zb}J[e+44>>2]=f+1;f=K[f|0];break Yb}f=gl(J[e+32>>2]);if((f|0)==-1){break Zb}f=f&255;break Yb}J[e+108>>2]=1;f=0}h=J[e+1408>>2];J[e+1408>>2]=h+8;J[e+1404>>2]=J[e+1404>>2]+(f<>2]=32;break Ob}J[e+108>>2]=1}J[e+112>>2]=30}J[e+1396>>2]=1}_b:{n=J[w+32>>2];if(n){k=J[w+4>>2];if((k|0)>=9){y=J[w+2084>>2];if(y){break _b}}if(K[w+23|0]){break t}if((k|0)>0){f=J[w+8>>2];i=0;while(1){$b:{j=f+i|0;s=K[j|0];if((s|0)==255){break $b}h=J[e+1404>>2];if(J[n+(i<<2)>>2]!=(h&(-1<>2];if((f|0)<(s|0)){break Nb}J[e+1404>>2]=h>>>s;f=f-K[j|0]|0;break Mb}i=i+1|0;if((k|0)!=(i|0)){continue}break}}J[e+112>>2]=21;break Nb}y=J[w+2084>>2];if(y){break _b}i=-1;break Lb}s=J[e+1404>>2];i=0;f=J[w+2092>>2];if((f|0)>=2){h=s<<24|(s&65280)<<8|(s>>>8&65280|s>>>24);h=h>>>4&252645135|(h&252645135)<<4;h=h>>>2&858993459|(h&858993459)<<2;j=h>>>1&1431655765|(h&1431655765)<<1;while(1){k=f>>>1|0;h=k+i|0;n=j>>>0>2];i=n?i:h;f=n?k:f-k|0;if((f|0)>1){continue}break}}f=J[e+1408>>2];i=K[w+23|0]?i:J[J[w+2088>>2]+(i<<2)>>2];h=K[i+J[w+8>>2]|0];if((f|0)<(h|0)){break Nb}J[e+1404>>2]=s>>>h;f=f-h|0;break Mb}h=f;f=K[j+J[w+8>>2]|0];J[e+1404>>2]=h>>>f;h=J[e+1408>>2]-f|0;f=(h|0)>0?h:0;i=(h|0)<0?-1:j;break Mb}i=-1;f=0}J[e+1408>>2]=f}if(J[w+2092>>2]<=(i|0)?K[w+23|0]:0){break xb}if((i|0)<0){break wb}_=v+(m<<2)|0;f=aa-ga|0;s=J[w>>2];E=(f|0)<(s|0)?f:s;f=P(i,s);ac:{if(K[w+22|0]){if((E|0)<=0){break ac}n=E&1;k=J[w+28>>2]+(f<<2)|0;bc:{if((E|0)==1){i=0;l=Q(0);break bc}j=E&2147483646;i=0;l=Q(0);y=0;while(1){h=i<<2;f=h+_|0;l=Q(l+N[h+k>>2]);N[f>>2]=N[f>>2]+l;h=h|4;f=h+_|0;l=Q(Q(l+N[w+12>>2])+N[h+k>>2]);N[f>>2]=N[f>>2]+l;l=Q(l+N[w+12>>2]);i=i+2|0;y=y+2|0;if((j|0)!=(y|0)){continue}break}}if(!n){break ac}h=i<<2;f=h+_|0;N[f>>2]=N[f>>2]+Q(l+N[h+k>>2]);break ac}if((E|0)<=0){break ac}n=J[w+28>>2]+(f<<2)|0;i=0;if((E|0)!=1){j=E&2147483646;y=0;while(1){h=i<<2;f=h+_|0;N[f>>2]=N[f>>2]+Q(N[h+n>>2]+Q(0));h=h|4;f=h+_|0;N[f>>2]=N[f>>2]+Q(N[h+n>>2]+Q(0));i=i+2|0;y=y+2|0;if((j|0)!=(y|0)){continue}break}}if(!(E&1)){break ac}h=i<<2;f=h+_|0;N[f>>2]=N[f>>2]+Q(N[h+n>>2]+Q(0))}m=m+s|0;ga=s+ga|0;if((aa|0)>(ga|0)){continue}break}}A=A+1|0;if((A|0)!=(g|0)){continue}break}q=q+1|0;p=p+1|0;if((fa|0)<=(q|0)|(la|0)<=(p|0)){break tb}continue}break}break gb}if(K[e+1388|0]){break vb}if(J[e+1396>>2]){break hb}}J[e+112>>2]=21;break hb}cc:{dc:{while(1){ga=0;ec:{while(1){fc:{if(K[S+ga|0]){break fc}h=ga<<2;f=I[(J[T+20>>2]+(K[J[J[h+X>>2]+(ja<<2)>>2]+q|0]<<4)|0)+(Y<<1)>>1];if((f|0)<0){break fc}aa=J[T+8>>2];ca=J[e+136>>2]+P(f,2096)|0;w=(aa|0)/J[ca>>2]|0;if((w|0)<=0){break fc}s=J[T>>2]+P(p,aa)|0;k=J[h+ra>>2]+(s<<2)|0;v=ca+36|0;m=0;while(1){if(!K[ca+21|0]){break cc}f=J[e+1408>>2];gc:{if((f|0)>9){break gc}if(!f){J[e+1404>>2]=0}hc:{ic:{jc:{while(1){kc:{f=K[e+1388|0];lc:{if(J[e+1396>>2]){if(f&255){break lc}break gc}if(f&255){break lc}i=J[e+1392>>2];if((i|0)==-1){J[e+1400>>2]=J[e+1128>>2]-1;f=J[e+44>>2];mc:{if(f){if(f>>>0>=M[e+52>>2]){break jc}J[e+44>>2]=f+1;f=K[f|0];break mc}f=gl(J[e+32>>2]);if((f|0)==-1){break jc}}if((f&255)!=79){break ic}f=J[e+44>>2];nc:{if(f){if(f>>>0>=M[e+52>>2]){break jc}J[e+44>>2]=f+1;f=K[f|0];break nc}f=gl(J[e+32>>2]);if((f|0)==-1){break jc}}if((f&255)!=103){break ic}f=J[e+44>>2];oc:{if(f){if(f>>>0>=M[e+52>>2]){break jc}J[e+44>>2]=f+1;f=K[f|0];break oc}f=gl(J[e+32>>2]);if((f|0)==-1){break jc}}if((f&255)!=103){break ic}f=J[e+44>>2];pc:{if(f){if(f>>>0>=M[e+52>>2]){break jc}J[e+44>>2]=f+1;f=K[f|0];break pc}f=gl(J[e+32>>2]);if((f|0)==-1){break jc}}if((f&255)!=83){break ic}if(!Xq(e)){break hc}if(!(H[e+1387|0]&1)){break kc}i=J[e+1392>>2]}h=i+1|0;J[e+1392>>2]=h;f=K[i+O|0];if((f|0)!=255){J[e+1400>>2]=i;J[e+1396>>2]=1}if((h|0)>=J[e+1128>>2]){J[e+1392>>2]=-1}if(K[e+1388|0]){break u}H[e+1388|0]=f;if(!f){break gc}}H[e+1388|0]=f-1;J[e+1412>>2]=J[e+1412>>2]+1;qc:{rc:{f=J[e+44>>2];if(f){if(f>>>0>=M[e+52>>2]){break rc}J[e+44>>2]=f+1;f=K[f|0];break qc}f=gl(J[e+32>>2]);if((f|0)==-1){break rc}f=f&255;break qc}J[e+108>>2]=1;f=0}h=J[e+1408>>2];J[e+1408>>2]=h+8;J[e+1404>>2]=J[e+1404>>2]+(f<>2]=32;break gc}J[e+108>>2]=1}J[e+112>>2]=30}J[e+1396>>2]=1}sc:{tc:{uc:{f=J[e+1404>>2];h=I[v+((f&1023)<<1)>>1];if((h|0)<0){f=J[e+1408>>2];vc:{if((f|0)>24){break vc}if(!f){J[e+1404>>2]=0}wc:{while(1){xc:{f=K[e+1388|0];yc:{if(J[e+1396>>2]){if(f&255){break yc}break vc}if(f&255){break yc}i=J[e+1392>>2];if((i|0)==-1){J[e+1400>>2]=J[e+1128>>2]-1;if(!Qo(e)){break wc}if(!(H[e+1387|0]&1)){break xc}i=J[e+1392>>2]}h=i+1|0;J[e+1392>>2]=h;f=K[i+O|0];if((f|0)!=255){J[e+1400>>2]=i;J[e+1396>>2]=1}if((h|0)>=J[e+1128>>2]){J[e+1392>>2]=-1}if(K[e+1388|0]){break u}H[e+1388|0]=f;if(!f){break vc}}H[e+1388|0]=f-1;J[e+1412>>2]=J[e+1412>>2]+1;zc:{Ac:{f=J[e+44>>2];if(f){if(f>>>0>=M[e+52>>2]){break Ac}J[e+44>>2]=f+1;f=K[f|0];break zc}f=gl(J[e+32>>2]);if((f|0)==-1){break Ac}f=f&255;break zc}J[e+108>>2]=1;f=0}h=J[e+1408>>2];J[e+1408>>2]=h+8;J[e+1404>>2]=J[e+1404>>2]+(f<>2]=32;break vc}J[e+1396>>2]=1}Bc:{n=J[ca+32>>2];if(n){r=J[ca+4>>2];if((r|0)>=9){y=J[ca+2084>>2];if(y){break Bc}}if(K[ca+23|0]){break t}if((r|0)>0){h=J[ca+8>>2];f=0;while(1){Cc:{i=f+h|0;A=K[i|0];if((A|0)==255){break Cc}j=J[e+1404>>2];if(J[n+(f<<2)>>2]!=(j&(-1<>2];if((h|0)<(A|0)){break uc}J[e+1404>>2]=j>>>A;i=h-K[i|0]|0;break tc}f=f+1|0;if((r|0)!=(f|0)){continue}break}}J[e+112>>2]=21;break uc}y=J[ca+2084>>2];if(y){break Bc}f=-1;break sc}A=J[e+1404>>2];f=0;i=J[ca+2092>>2];if((i|0)>=2){h=A<<24|(A&65280)<<8|(A>>>8&65280|A>>>24);h=h>>>4&252645135|(h&252645135)<<4;h=h>>>2&858993459|(h&858993459)<<2;j=h>>>1&1431655765|(h&1431655765)<<1;while(1){r=i>>>1|0;h=r+f|0;n=j>>>0>2];f=n?f:h;i=n?r:i-r|0;if((i|0)>1){continue}break}}h=J[e+1408>>2];f=K[ca+23|0]?f:J[J[ca+2088>>2]+(f<<2)>>2];j=K[f+J[ca+8>>2]|0];if((h|0)<(j|0)){break uc}J[e+1404>>2]=A>>>j;i=h-j|0;break tc}j=f;f=K[h+J[ca+8>>2]|0];J[e+1404>>2]=j>>>f;f=J[e+1408>>2]-f|0;i=(f|0)>0?f:0;f=(f|0)<0?-1:h;break tc}f=-1;i=0}J[e+1408>>2]=i}if(J[ca+2092>>2]<=(f|0)?K[ca+23|0]:0){break ec}if((f|0)<0){break dc}h=aa-(m+s|0)|0;j=J[ca>>2];E=(h|0)<(j|0)?h:j;Dc:{if((E|0)<=0){break Dc}_=k+(m<<2)|0;A=J[ca+28>>2]+(P(f,j)<<2)|0;Ec:{Fc:{if(K[ca+22|0]){r=E&1;if((E|0)!=1){break Fc}f=0;l=Q(0);break Ec}f=0;if((E|0)!=1){n=E&2147483646;i=0;while(1){h=_+(P(f,w)<<2)|0;N[h>>2]=N[h>>2]+Q(N[A+(f<<2)>>2]+Q(0));j=f|1;h=_+(P(j,w)<<2)|0;N[h>>2]=N[h>>2]+Q(N[A+(j<<2)>>2]+Q(0));f=f+2|0;i=i+2|0;if((n|0)!=(i|0)){continue}break}}if(!(E&1)){break Dc}h=_+(P(f,w)<<2)|0;N[h>>2]=N[h>>2]+Q(N[A+(f<<2)>>2]+Q(0));break Dc}n=E&2147483646;f=0;l=Q(0);i=0;while(1){h=_+(P(f,w)<<2)|0;l=Q(l+N[A+(f<<2)>>2]);N[h>>2]=N[h>>2]+l;j=f|1;h=_+(P(j,w)<<2)|0;l=Q(l+N[A+(j<<2)>>2]);N[h>>2]=N[h>>2]+l;f=f+2|0;i=i+2|0;if((n|0)!=(i|0)){continue}break}}if(!r){break Dc}h=_+(P(f,w)<<2)|0;N[h>>2]=N[h>>2]+Q(l+N[A+(f<<2)>>2])}m=m+1|0;if((w|0)!=(m|0)){continue}break}}ga=ga+1|0;if((ga|0)!=(g|0)){continue}break}q=q+1|0;p=p+1|0;if((fa|0)<=(q|0)|(la|0)<=(p|0)){break tb}continue}break}break gb}if(K[e+1388|0]){break cc}if(J[e+1396>>2]){break hb}}J[e+112>>2]=21;break hb}while(1){p=p+1|0;f=f+1|0;if((fa|0)<=(f|0)){break tb}if((p|0)<(la|0)){continue}break}}ja=ja+1|0;if((p|0)<(la|0)){continue}break}Y=Y+1|0;if((Y|0)!=8){continue}break}break hb}if((f|0)==(g|0)){break hb}if((g|0)==2){if((la|0)<=0){break hb}i=0;while(1){f=0;j=0;while(1){g=J[T>>2]+P(J[T+8>>2],f)|0;J[oa+12>>2]=g&1;J[oa+8>>2]=g>>1;if(!i){n=J[e+136>>2]+P(K[T+13|0],2096)|0;g=J[e+1408>>2];Gc:{if((g|0)>9){break Gc}if(!g){J[e+1404>>2]=0}while(1){if(K[e+1388|0]?0:J[e+1396>>2]){break Gc}g=Zk(e);if((g|0)==-1){break Gc}h=J[e+1408>>2];J[e+1408>>2]=h+8;J[e+1404>>2]=J[e+1404>>2]+(g<>2];h=I[(n+((g&1023)<<1)|0)+36>>1];Hc:{if((h|0)<0){g=Bv(e,n);break Hc}m=g;g=K[h+J[n+8>>2]|0];J[e+1404>>2]=m>>>g;g=J[e+1408>>2]-g|0;J[e+1408>>2]=(g|0)>0?g:0;g=(g|0)<0?-1:h}g=K[n+23|0]?J[J[n+2088>>2]+(g<<2)>>2]:g;if((g|0)==-1){break hb}J[J[X>>2]+(j<<2)>>2]=J[J[T+16>>2]+(g<<2)>>2]}Ic:{if((fa|0)<=0){break Ic}m=0;if((f|0)>=(la|0)){break Ic}while(1){h=J[T+8>>2];g=I[(J[T+20>>2]+(K[J[J[X>>2]+(j<<2)>>2]+m|0]<<4)|0)+(i<<1)>>1];Jc:{if((g|0)<0){f=f+1|0;g=J[T>>2]+P(h,f)|0;J[oa+8>>2]=g>>1;J[oa+12>>2]=g&1;break Jc}if(!JS(e,J[e+136>>2]+P(g,2096)|0,ra,2,oa+12|0,oa+8|0,ka,h)){break hb}f=f+1|0}m=m+1|0;if((fa|0)<=(m|0)){break Ic}if((f|0)<(la|0)){continue}break}}j=j+1|0;if((f|0)<(la|0)){continue}break}i=i+1|0;if((i|0)!=8){continue}break}break hb}if((g|0)<3|(la|0)<=0){break hb}i=0;while(1){f=0;j=0;while(1){h=J[T>>2]+P(J[T+8>>2],f)|0;n=(h|0)/(g|0)|0;J[oa+12>>2]=h-P(g,n);J[oa+8>>2]=n;if(!i){q=J[e+136>>2]+P(K[T+13|0],2096)|0;h=J[e+1408>>2];Kc:{if((h|0)>9){break Kc}if(!h){J[e+1404>>2]=0}while(1){if(K[e+1388|0]?0:J[e+1396>>2]){break Kc}h=Zk(e);if((h|0)==-1){break Kc}n=J[e+1408>>2];J[e+1408>>2]=n+8;J[e+1404>>2]=J[e+1404>>2]+(h<>2];n=I[(q+((h&1023)<<1)|0)+36>>1];Lc:{if((n|0)<0){h=Bv(e,q);break Lc}m=h;h=K[n+J[q+8>>2]|0];J[e+1404>>2]=m>>>h;h=J[e+1408>>2]-h|0;J[e+1408>>2]=(h|0)>0?h:0;h=(h|0)<0?-1:n}h=K[q+23|0]?J[J[q+2088>>2]+(h<<2)>>2]:h;if((h|0)==-1){break hb}J[J[X>>2]+(j<<2)>>2]=J[J[T+16>>2]+(h<<2)>>2]}Mc:{if((fa|0)<=0){break Mc}m=0;if((f|0)>=(la|0)){break Mc}while(1){n=J[T+8>>2];h=I[(J[T+20>>2]+(K[J[J[X>>2]+(j<<2)>>2]+m|0]<<4)|0)+(i<<1)>>1];Nc:{if((h|0)<0){f=f+1|0;n=J[T>>2]+P(n,f)|0;h=(n|0)/(g|0)|0;J[oa+8>>2]=h;J[oa+12>>2]=n-P(g,h);break Nc}if(!JS(e,J[e+136>>2]+P(h,2096)|0,ra,g,oa+12|0,oa+8|0,ka,n)){break hb}f=f+1|0}m=m+1|0;if((fa|0)<=(m|0)){break Mc}if((f|0)<(la|0)){continue}break}}j=j+1|0;if((f|0)<(la|0)){continue}break}i=i+1|0;if((i|0)!=8){continue}break}}J[e+104>>2]=da;Ui=oa+16|0;break fb}Z(23521,82607,1784,10388);B()}c=c+1|0;if(c>>>0>2]}if(!(J[e+96>>2]!=J[e+104>>2]?c:0)){f=L[qa>>1];if(!(!f|(ka|0)<=0)){q=e+812|0;n=J[qa+4>>2];while(1){c=f-1|0;g=n+P(c,3)|0;i=J[q+(K[g+1|0]<<2)>>2];j=J[q+(K[g|0]<<2)>>2];k=0;while(1){g=k<<2;h=g+i|0;o=N[h>>2];g=g+j|0;l=N[g>>2];Oc:{Pc:{if(!(l>Q(0))){if(!(o>Q(0))){u=Q(l-o);o=l;break Oc}o=Q(l+o);break Pc}if(!(o>Q(0))){u=Q(l+o);o=l;break Oc}o=Q(l-o)}u=l}N[g>>2]=u;N[h>>2]=o;k=k+1|0;if((ka|0)!=(k|0)){continue}break}g=(f|0)>1;f=c;if(g){continue}break}}m=J[e+4>>2];if((m|0)<=0){break $a}A=e+144|0;da=qa+9|0;ta=e+1008|0;aa=ka<<2;E=e+812|0;q=0;while(1){g=q<<2;Y=J[g+E>>2];Qc:{if(J[g+(U+336|0)>>2]){ij(Y,0,aa);m=J[e+4>>2];break Qc}c=K[da+K[(J[qa+4>>2]+P(q,3)|0)+2|0]|0];if(!L[A+(c<<1)>>1]){J[e+112>>2]=21;break Qc}f=J[e+272>>2]+P(c,1596)|0;V=K[f+1588|0];ba=J[g+ta>>2];g=P(V,I[ba>>1]);c=0;D=J[f+1592>>2];if((D|0)>=2){s=f+338|0;p=f+838|0;h=1;while(1){j=K[h+p|0]<<1;f=I[j+ba>>1];if((f|0)>=0){f=P(f,V);j=L[j+s>>1];if((j|0)!=(c|0)){n=f-g|0;O=j-c|0;ja=(n|0)/(O|0)|0;W=(j|0)<(ka|0)?j:ka;Rc:{if((W|0)<=(c|0)){break Rc}i=Y+(c<<2)|0;N[i>>2]=N[((g&255)<<2)+197408>>2]*N[i>>2];k=c+1|0;if((W|0)<=(k|0)){break Rc}i=n>>31;c=ja>>31;v=((i^n)-i|0)-P(O,(c^ja)-c|0)|0;r=i|1;c=0;while(1){n=Y+(k<<2)|0;i=c+v|0;c=(i|0)<(O|0);g=(g+ja|0)+(c?0:r)|0;N[n>>2]=N[((g&255)<<2)+197408>>2]*N[n>>2];c=i-(c?0:O)|0;k=k+1|0;if((W|0)!=(k|0)){continue}break}}c=j}g=f}h=h+1|0;if((D|0)!=(h|0)){continue}break}}if((c|0)>=(ka|0)){break Qc}l=N[(g<<2)+197408>>2];g=0;k=c;h=ka-c&3;if(h){while(1){f=Y+(k<<2)|0;N[f>>2]=l*N[f>>2];k=k+1|0;g=g+1|0;if((h|0)!=(g|0)){continue}break}}if(c-ka>>>0>4294967292){break Qc}h=Y+12|0;f=Y+8|0;g=Y+4|0;while(1){j=k<<2;c=j+Y|0;N[c>>2]=l*N[c>>2];c=g+j|0;N[c>>2]=l*N[c>>2];c=f+j|0;N[c>>2]=l*N[c>>2];c=h+j|0;N[c>>2]=l*N[c>>2];k=k+4|0;if((ka|0)!=(k|0)){continue}break}}q=q+1|0;if((q|0)<(m|0)){continue}break}break ab}Z(14893,82607,3326,9860);B()}k=0;if((m|0)<=0){break $a}while(1){n=J[E+(k<<2)>>2];ra=K[Ia+424|0];q=0;g=Ui;ja=g;fa=G>>1;f=fa<<2;_=J[e+104>>2];c=J[e+92>>2];Sc:{if(c){g=_-(f+7&-8)|0;if((g|0)>2]){break Sc}J[e+104>>2]=g;q=c+g|0;break Sc}q=g-(f+15&-16)|0;Ui=q}c=fa<<2;y=c+n|0;j=(c+q|0)-8|0;f=J[(e+(ra<<2)|0)+1080>>2];Tc:{if(G>>>0<2){i=f;break Tc}h=n;i=f;while(1){N[j+4>>2]=Q(N[h>>2]*N[i>>2])-Q(N[h+8>>2]*N[i+4>>2]);N[j>>2]=Q(N[h>>2]*N[i+4>>2])+Q(N[h+8>>2]*N[i>>2]);i=i+8|0;j=j-8|0;h=h+16|0;if((y|0)!=(h|0)){continue}break}}if(j>>>0>=q>>>0){h=y-12|0;while(1){N[j+4>>2]=Q(N[h>>2]*N[i+4>>2])-Q(N[h+8>>2]*N[i>>2]);N[j>>2]=Q(Q(-N[h+8>>2])*N[i+4>>2])-Q(N[i>>2]*N[h>>2]);h=h-16|0;i=i+8|0;j=j-8|0;if(q>>>0<=j>>>0){continue}break}}S=G>>2;c=f+(fa<<2)|0;m=c-32|0;if(f>>>0<=m>>>0){g=S<<2;i=g+q|0;h=g+n|0;g=n;j=q;while(1){x=N[j>>2];u=N[i>>2];o=N[i+4>>2];l=N[j+4>>2];N[h+4>>2]=o+l;N[h>>2]=N[i>>2]+N[j>>2];o=Q(o-l);v=c-16|0;l=Q(u-x);r=c-12|0;N[g+4>>2]=Q(o*N[v>>2])-Q(l*N[r>>2]);N[g>>2]=Q(l*N[v>>2])+Q(o*N[r>>2]);x=N[j+8>>2];u=N[i+8>>2];o=N[i+12>>2];l=N[j+12>>2];N[h+12>>2]=o+l;N[h+8>>2]=N[i+8>>2]+N[j+8>>2];o=Q(o-l);l=Q(u-x);c=c-28|0;N[g+12>>2]=Q(o*N[m>>2])-Q(l*N[c>>2]);N[g+8>>2]=Q(l*N[m>>2])+Q(o*N[c>>2]);j=j+16|0;i=i+16|0;g=g+16|0;h=h+16|0;c=m;m=c-32|0;if(f>>>0<=m>>>0){continue}break}}ga=G>>3;m=0;Uc:{if((G|0)<0){break Uc}if(G>>>0<=16383){m=H[G+197376|0];if(G>>>0<=15){break Uc}m=H[(G>>>5|0)+197376|0]+5|0;if(G>>>0<=511){break Uc}m=H[(G>>>10|0)+197376|0]+10|0;break Uc}if(G>>>0<=16777215){m=H[(G>>>15|0)+197376|0]+15|0;if(G>>>0<=524287){break Uc}m=H[(G>>>20|0)+197376|0]+20|0;break Uc}m=H[(G>>>25|0)+197376|0]+25|0;if(G>>>0<=536870911){break Uc}m=H[(G>>>30|0)+197376|0]+30|0}g=G>>4;v=fa-1|0;c=0-ga|0;ZI(g,n,v,c,f);ZI(g,n,v-S|0,c,f);w=G>>5;c=0-g|0;Xw(w,n,v,c,f);Xw(w,n,v-ga|0,c,f);Xw(w,n,v-(ga<<1)|0,c,f);Xw(w,n,v+P(ga,-3)|0,c,f);p=2;r=m-4>>1;if((r|0)>2){while(1){ta=2<>p+4>>2;if((g|0)<=0){break Vc}aa=8<>p+2;ba=0-(V>>1)|0;while(1){i=(v-P(X,V)<<2)+n|0;j=i+(ba<<2)|0;W=aa<<2;h=f;c=g;while(1){D=j-4|0;u=N[D>>2];o=N[i>>2];l=N[j>>2];N[i>>2]=o+l;s=i-4|0;x=N[s>>2];N[s>>2]=x+N[D>>2];o=Q(o-l);l=Q(x-u);N[j>>2]=Q(o*N[h>>2])-Q(l*N[h+4>>2]);N[D>>2]=Q(l*N[h>>2])+Q(o*N[h+4>>2]);da=j-12|0;u=N[da>>2];s=i-8|0;o=N[s>>2];D=j-8|0;l=N[D>>2];N[s>>2]=o+l;s=i-12|0;x=N[s>>2];N[s>>2]=x+N[da>>2];o=Q(o-l);A=h+W|0;l=Q(x-u);N[D>>2]=Q(o*N[A>>2])-Q(l*N[A+4>>2]);N[da>>2]=Q(l*N[A>>2])+Q(o*N[A+4>>2]);D=j-20|0;u=N[D>>2];h=i-16|0;o=N[h>>2];s=j-16|0;l=N[s>>2];N[h>>2]=o+l;h=i-20|0;x=N[h>>2];N[h>>2]=x+N[D>>2];o=Q(o-l);da=A+W|0;l=Q(x-u);N[s>>2]=Q(o*N[da>>2])-Q(l*N[da+4>>2]);N[D>>2]=Q(l*N[da>>2])+Q(o*N[da+4>>2]);D=j-28|0;u=N[D>>2];h=i-24|0;o=N[h>>2];s=j-24|0;l=N[s>>2];N[h>>2]=o+l;h=i-28|0;x=N[h>>2];N[h>>2]=x+N[D>>2];o=Q(o-l);h=W+da|0;l=Q(x-u);N[s>>2]=Q(o*N[h>>2])-Q(l*N[h+4>>2]);N[D>>2]=Q(l*N[h>>2])+Q(o*N[h+4>>2]);h=h+W|0;j=j-32|0;i=i-32|0;s=c>>>0>1;c=c-1|0;if(s){continue}break}X=X+1|0;if((ta|0)!=(X|0)){continue}break}}p=p+1|0;if((r|0)!=(p|0)){continue}break}p=r}W=m-7|0;if((W|0)>(p|0)){while(1){X=G>>p+6;Wc:{if((X|0)<=0){break Wc}c=2<>p+2;ba=0-g|0;D=0-(g>>1)|0;m=f;g=v;while(1){i=(g<<2)+n|0;j=i+(D<<2)|0;r=m+ta|0;Ba=N[r>>2];Ca=N[(aa<<2)+m>>2];h=(A<<2)+m|0;Da=N[h>>2];Ea=N[r+4>>2];ya=Q(-Ea);wa=N[(V<<2)+m>>2];pa=Q(-wa);ea=N[h+4>>2];ha=Q(-ea);Fa=N[m>>2];F=N[m+4>>2];x=Q(-F);Y=ba<<2;h=c;while(1){s=j-4|0;o=N[s>>2];u=N[i>>2];l=N[j>>2];N[i>>2]=u+l;r=i-4|0;na=N[r>>2];N[r>>2]=na+N[s>>2];o=Q(na-o);l=Q(u-l);N[s>>2]=Q(o*Fa)+Q(F*l);N[j>>2]=Q(l*Fa)+Q(o*x);O=j-12|0;o=N[O>>2];r=i-8|0;na=N[r>>2];s=j-8|0;l=N[s>>2];N[r>>2]=na+l;r=i-12|0;u=N[r>>2];N[r>>2]=u+N[O>>2];o=Q(u-o);l=Q(na-l);N[O>>2]=Q(o*Da)+Q(ea*l);N[s>>2]=Q(l*Da)+Q(o*ha);O=j-20|0;o=N[O>>2];r=i-16|0;na=N[r>>2];s=j-16|0;l=N[s>>2];N[r>>2]=na+l;r=i-20|0;u=N[r>>2];N[r>>2]=u+N[O>>2];o=Q(u-o);l=Q(na-l);N[O>>2]=Q(o*Ca)+Q(wa*l);N[s>>2]=Q(l*Ca)+Q(o*pa);O=j-28|0;o=N[O>>2];r=i-24|0;na=N[r>>2];s=j-24|0;l=N[s>>2];N[r>>2]=na+l;r=i-28|0;u=N[r>>2];N[r>>2]=u+N[O>>2];o=Q(u-o);l=Q(na-l);N[O>>2]=Q(o*Ba)+Q(Ea*l);N[s>>2]=Q(l*Ba)+Q(o*ya);j=j+Y|0;i=i+Y|0;r=h>>>0>1;h=h-1|0;if(r){continue}break}g=g-8|0;m=(da<<2)+m|0;h=(X|0)>1;X=X-1|0;if(h){continue}break}}p=p+1|0;if((W|0)!=(p|0)){continue}break}}c=w<<6;if((0-c|0)<0){i=(v<<2)+n|0;aa=i-c|0;Ga=N[f+(ga<<2)>>2];Ta=Q(-Ga);while(1){Ka=N[i>>2];V=i-32|0;La=N[V>>2];x=Q(Ka+La);g=i-16|0;Ma=N[g>>2];ba=i-48|0;Na=N[ba>>2];u=Q(Ma+Na);o=Q(x+u);c=i-8|0;Oa=N[c>>2];D=i-40|0;Pa=N[D>>2];Qa=Q(Oa+Pa);s=i-24|0;Ra=N[s>>2];p=i-56|0;Ba=N[p>>2];Ca=Q(Ra+Ba);l=Q(Qa+Ca);N[i>>2]=o+l;N[c>>2]=o-l;ya=Q(x-u);v=i-12|0;Da=N[v>>2];r=i-44|0;wa=N[r>>2];ea=Q(Da+wa);m=i-28|0;Fa=N[m>>2];j=i-60|0;pa=N[j>>2];l=Q(Fa+pa);ha=Q(ea-l);N[g>>2]=ya+ha;h=i-4|0;na=N[h>>2];f=i-36|0;Ea=N[f>>2];F=Q(na+Ea);g=i-20|0;x=N[g>>2];c=i-52|0;u=N[c>>2];o=Q(x+u);Sa=Q(F+o);l=Q(ea+l);N[h>>2]=Sa+l;N[s>>2]=ya-ha;N[v>>2]=Sa-l;o=Q(F-o);l=Q(Qa-Ca);N[g>>2]=o-l;N[m>>2]=o+l;ya=Q(Ka-La);ea=Q(x-u);ha=Q(ya+ea);F=Q(Oa-Pa);x=Q(Da-wa);wa=Q(Ga*Q(F+x));u=Q(Fa-pa);o=Q(Ra-Ba);pa=Q(Ga*Q(u-o));l=Q(wa+pa);N[V>>2]=ha+l;N[D>>2]=ha-l;ea=Q(ya-ea);ha=Q(Ga*Q(x-F));l=Q(Q(o+u)*Ta);F=Q(ha-l);N[ba>>2]=ea+F;x=Q(na-Ea);u=Q(Ma-Na);o=Q(x-u);l=Q(ha+l);N[f>>2]=o+l;N[p>>2]=ea-F;N[r>>2]=o-l;o=Q(x+u);l=Q(wa-pa);N[c>>2]=o-l;N[j>>2]=o+l;i=i+-64|0;if(aa>>>0>>0){continue}break}}r=fa-4|0;if((S|0)>=4){i=(r<<2)+q|0;j=((S<<2)+q|0)-16|0;h=J[(e+(ra<<2)|0)+1112>>2];while(1){c=(L[h>>1]<<2)+n|0;N[i+12>>2]=N[c>>2];N[i+8>>2]=N[c+4>>2];N[j+12>>2]=N[c+8>>2];N[j+8>>2]=N[c+12>>2];c=(L[h+2>>1]<<2)+n|0;N[i+4>>2]=N[c>>2];N[i>>2]=N[c+4>>2];N[j+4>>2]=N[c+8>>2];N[j>>2]=N[c+12>>2];h=h+4|0;i=i-16|0;j=j-16|0;if(q>>>0<=j>>>0){continue}break}}j=(fa<<2)+q|0;c=j-16|0;if(q>>>0>>0){h=J[(e+(ra<<2)|0)+1096>>2];g=j;i=q;while(1){o=N[i+4>>2];m=g-4|0;l=N[m>>2];pa=Q(o-l);ea=N[h+4>>2];ha=Q(o+l);F=N[h>>2];x=N[i>>2];f=g-8|0;o=N[f>>2];l=Q(x-o);u=Q(Q(ea*ha)-Q(F*l));N[i+4>>2]=pa+u;o=Q(x+o);l=Q(Q(ea*l)+Q(ha*F));N[i>>2]=o+l;N[m>>2]=u-pa;N[f>>2]=o-l;o=N[i+12>>2];g=g-12|0;l=N[g>>2];pa=Q(o-l);ea=N[h+12>>2];ha=Q(o+l);F=N[h+8>>2];x=N[i+8>>2];o=N[c>>2];l=Q(x-o);u=Q(Q(ea*ha)-Q(F*l));N[i+12>>2]=pa+u;o=Q(x+o);l=Q(Q(ea*l)+Q(ha*F));N[i+8>>2]=o+l;N[c>>2]=o-l;N[g>>2]=u-pa;h=h+16|0;g=c;c=g-16|0;i=i+16|0;if(c>>>0>i>>>0){continue}break}}c=j-32|0;if(q>>>0<=c>>>0){i=J[(e+(ra<<2)|0)+1088>>2]+(fa<<2)|0;h=(r<<2)+n|0;g=(G<<2)+n|0;while(1){F=N[j-8>>2];x=N[i-4>>2];u=N[j-4>>2];o=N[i-8>>2];l=Q(Q(F*x)-Q(u*o));N[n>>2]=l;N[h+12>>2]=-l;l=Q(Q(o*Q(-F))-Q(u*x));N[y>>2]=l;N[g-4>>2]=l;F=N[j-16>>2];x=N[i-12>>2];u=N[j-12>>2];o=N[i-16>>2];l=Q(Q(F*x)-Q(u*o));N[n+4>>2]=l;N[h+8>>2]=-l;l=Q(Q(o*Q(-F))-Q(u*x));N[y+4>>2]=l;N[g-8>>2]=l;F=N[j-24>>2];x=N[i-20>>2];u=N[j-20>>2];o=N[i-24>>2];l=Q(Q(F*x)-Q(u*o));N[n+8>>2]=l;N[h+4>>2]=-l;l=Q(Q(o*Q(-F))-Q(u*x));N[y+8>>2]=l;N[g-12>>2]=l;F=N[c>>2];x=N[i-28>>2];u=N[j-28>>2];i=i-32|0;o=N[i>>2];l=Q(Q(F*x)-Q(u*o));N[n+12>>2]=l;N[h>>2]=-l;l=Q(Q(o*Q(-F))-Q(u*x));N[y+12>>2]=l;g=g-16|0;N[g>>2]=l;h=h-16|0;y=y+16|0;n=n+16|0;j=c;c=c-32|0;if(q>>>0<=c>>>0){continue}break}}J[e+104>>2]=_;Ui=ja;k=k+1|0;if((k|0)>2]){continue}break}}c=0-ka|0;while(1){if((Zk(e)|0)!=-1){continue}break}Xc:{if(K[e+1389|0]){J[e+1072>>2]=c;H[e+1389|0]=0;J[e+1076>>2]=1;J[e+1424>>2]=G-Aa;break Xc}g=J[e+1424>>2];if(!g){break Xc}c=$-C|0;if((c|0)<=(g|0)){J[e+1424>>2]=g-c;J[ia+4>>2]=$;C=$;break Xc}C=g+C|0;J[ia+4>>2]=C;J[e+1424>>2]=0}c=J[e+1076>>2];Yc:{Zc:{_c:{if(J[e+1400>>2]==J[e+1416>>2]){$c:{if(!c|!(K[e+1387|0]&4)){break $c}g=J[e+1420>>2];c=J[e+1072>>2];if(g>>>0>=c+(Aa-C|0)>>>0){break $c}c=g-c|0;c=(c>>>0<=g>>>0?c:0)+C|0;c=(c|0)<(Aa|0)?c:Aa;J[ia+12>>2]=c;J[e+1072>>2]=c+J[e+1072>>2];break Yc}J[e+1076>>2]=1;c=J[e+1420>>2]+(C-ka|0)|0;break _c}if(!c){break Zc}c=J[e+1072>>2]}J[e+1072>>2]=c+($-C|0)}if(J[e+96>>2]!=J[e+104>>2]?J[e+92>>2]:0){break v}J[ia+12>>2]=Aa}f=1}c=f;Ui=U+2384|0;break s}Z(14893,82607,3442,9860);B()}Z(113014,82607,1555,13887);B()}Z(62342,82607,1696,6824);B()}if(!c){ad:{bd:{switch(J[e+112>>2]-32|0){case 3:J[e+112>>2]=0;while(1){cd:{c=Zk(e);J[e+1408>>2]=0;if((c|0)==-1){break cd}if(!J[e+108>>2]){continue}}break};J[a+40>>2]=0;c=J[e+44>>2]-ua|0;break k;case 0:break bd;default:break ad}}if(J[e+1004>>2]){break ad}J[e+112>>2]=0;while(1){dd:{c=Zk(e);J[e+1408>>2]=0;if((c|0)==-1){break dd}if(!J[e+108>>2]){continue}}break}J[a+40>>2]=0;c=J[e+44>>2]-ua|0;break k}J[e+1432>>2]=0;J[e+1004>>2]=0;J[e+1516>>2]=0;J[e+1520>>2]=0;J[e+1424>>2]=0;J[e+1428>>2]=0;H[e+1389|0]=0;J[e+1076>>2]=0;J[a+40>>2]=0;c=1;break k}ba=J[ia+12>>2];s=J[ia+4>>2];c=J[ia+8>>2];h=0;ed:{fd:{gd:{hd:{id:{jd:{V=J[e+1004>>2];kd:{if(!V){m=J[e+4>>2];break kd}g=V<<1;if((g|0)==J[e+124>>2]){f=1104}else{if((g|0)!=J[e+128>>2]){break gd}f=1108}k=J[f+e>>2];if(!k){break gd}m=J[e+4>>2];if((m|0)<=0){J[e+1004>>2]=ba-c;break fd}if((V|0)<=0){break jd}q=e+940|0;n=e+812|0;p=k+(V<<2)|0;i=V&2147483646;j=V&1;while(1){g=h<<2;v=J[g+n>>2]+(s<<2)|0;$=J[g+q>>2];f=0;C=0;if((V|0)!=1){while(1){r=f<<2;g=r+v|0;N[g>>2]=Q(N[g>>2]*N[k+r>>2])+Q(N[r+$>>2]*N[p+((f^-1)<<2)>>2]);r=r|4;g=r+v|0;N[g>>2]=Q(N[g>>2]*N[k+r>>2])+Q(N[r+$>>2]*N[p+((f^1073741822)<<2)>>2]);f=f+2|0;C=C+2|0;if((i|0)!=(C|0)){continue}break}}if(j){r=f<<2;g=v+r|0;N[g>>2]=Q(N[g>>2]*N[k+r>>2])+Q(N[r+$>>2]*N[p+((f^-1)<<2)>>2])}h=h+1|0;if((h|0)!=(m|0)){continue}break}}f=ba-c|0;J[e+1004>>2]=f;if((m|0)<=0){break hd}break id}f=ba-c|0;J[e+1004>>2]=f}if((c|0)>=(ba|0)){break hd}k=c+1|0;r=e+940|0;q=e+812|0;i=f&-4;$=f&3;n=0;j=f-1>>>0<3;while(1){g=n<<2;D=J[g+r>>2];C=J[g+q>>2];g=c;f=0;if(!j){v=C+(k<<2)|0;y=0;while(1){h=f<<2;N[h+D>>2]=N[C+(g<<2)>>2];g=h|4;N[g+D>>2]=N[h+v>>2];h=h|8;N[h+D>>2]=N[g+v>>2];g=f|3;N[D+(g<<2)>>2]=N[h+v>>2];f=f+4|0;g=g+k|0;y=y+4|0;if((i|0)!=(y|0)){continue}break}}p=0;if($){while(1){N[D+(f<<2)>>2]=N[C+(g<<2)>>2];g=f+k|0;f=f+1|0;p=p+1|0;if(($|0)!=(p|0)){continue}break}}n=n+1|0;if((n|0)!=(m|0)){continue}break}}if(V){break fd}}c=0;break ed}c=((c|0)>(ba|0)?ba:c)-s|0;J[e+1428>>2]=c+J[e+1428>>2]}i=J[e+4>>2];ld:{if((i|0)<=0){break ld}q=e+876|0;n=e+812|0;if(i>>>0>=4){f=i&2147483644;while(1){j=z<<2;h=s<<2;J[j+q>>2]=h+J[j+n>>2];g=j|4;J[g+q>>2]=h+J[g+n>>2];g=j|8;J[g+q>>2]=h+J[g+n>>2];g=j|12;J[g+q>>2]=h+J[g+n>>2];z=z+4|0;t=t+4|0;if((f|0)!=(t|0)){continue}break}}g=i&3;if(!g){break ld}while(1){t=z<<2;J[t+q>>2]=J[n+t>>2]+(s<<2);z=z+1|0;xa=xa+1|0;if((g|0)!=(xa|0)){continue}break}}if(Ja){J[Ja>>2]=i}J[a+40>>2]=c;J[a+48>>2]=e+876;c=J[e+44>>2]-ua|0}Ui=ia+16|0;if((c|0)<0){J[va>>2]=c;dj(3,96825,130142,va);a=-3;break b}j=J[a+28>>2];md:{nd:{od:{pd:{t=c;if(!c){if((j|0)!=J[a+32>>2]){break pd}dj(3,96825,153829,0);a=-3;break b}g=J[a+24>>2];h=j-g|0;if(h>>>0<=t>>>0){break nd}ma=0;f=j-(g+t|0)&3;if(f){while(1){H[(c-t|0)+g|0]=K[c+g|0];c=c+1|0;ma=ma+1|0;if((f|0)!=(ma|0)){continue}break}}if((t-j|0)+g>>>0>=4294967293){break od}while(1){H[(c-t|0)+g|0]=K[c+g|0];f=c+1|0;H[(f-t|0)+g|0]=K[f+g|0];f=c+2|0;H[(f-t|0)+g|0]=K[f+g|0];f=c+3|0;H[(f-t|0)+g|0]=K[f+g|0];c=c+4|0;if(h>>>0>c>>>0){continue}break}break od}if(!ma){break md}t=sa;break c}g=J[a+24>>2]}c=h-t|0;if(c>>>0>J[a+32>>2]-g>>>0){break a}J[a+44>>2]=0;J[a+28>>2]=c+g}ma=J[a+48>>2];if(!ma){break f}t=sa}p=J[a+40>>2];r=Ha-za|0;k=(p|0)<(r|0)?p:r;m=J[a+44>>2];qd:{if(!b){break qd}q=K[a+8|0];C=q-1|0;if(C>>>0>1){break e}if(!k){break qd}j=(P(q,za)<<1)+b|0;h=k&-2;f=k&1;sa=0;while(1){v=J[(sa<<2)+ma>>2]+(m<<2)|0;$=j+(sa<<1)|0;c=0;n=0;if((k|0)!=1){while(1){i=$+(c<>2]*Q(32767));rd:{if(Q(R(l))=32767?32767:g;I[i>>1]=(g|0)<=-32768?-32768:g;g=c|1;l=Q(N[v+(g<<2)>>2]*Q(32767));sd:{if(Q(R(l))=32767?32767:i;I[e>>1]=(g|0)<=-32768?-32768:g;c=c+2|0;n=n+2|0;if((h|0)!=(n|0)){continue}break}}if(f){g=$+(c<>2]*Q(32767));td:{if(Q(R(l))=32767?32767:c;I[g>>1]=(c|0)<=-32768?-32768:c}sa=sa+1|0;if((q|0)!=(sa|0)){continue}break}}J[a+40>>2]=p-k;J[a+44>>2]=k+m;za=k+za|0;if((p|0)>(r|0)){break d}ma=0;J[a+48>>2]=0;break d}ma=0;t=sa;break d}Z(109798,39364,107,9448);B()}if((za|0)<(Ha|0)){continue}break}}J[d>>2]=P(K[a+8|0],za)<<1;a=za?0:t&1?-5:0}Ui=va+16|0;return a|0}Z(144782,53895,514,59583);B()}function Zr(a){var b=0,c=0,d=0,e=0,f=0,g=0,h=0,i=0,j=0,k=0,l=0,m=0,n=0,o=0,p=0,q=0,r=0,s=0,t=0,u=0,v=0,w=0,x=0,y=0,z=0,A=0,B=0,C=0,D=0,E=0,F=0,G=0;b=-28928;a:{b:{if(!J[a+68>>2]|J[a+4>>2]==16){break b}b=-28928;c:{if(!J[a+36>>2]){break c}b=J[a+216>>2];if(b){while(1){c=Zi[J[a+36>>2]](J[a+48>>2],J[a+192>>2]-b|0,b)|0;if((c|0)<=0){b=c;break c}d=J[a+216>>2];b=-27648;if(d>>>0>>0){break c}b=d-c|0;J[a+216>>2]=b;if(b){continue}break}c=J[a>>2];b=J[a+184>>2]+((J[c+184>>2]^-1)<<2&8)|0;J[a+192>>2]=b;d=J[c+184>>2]&2;c=b+(d?13:5)|0;J[a+200>>2]=c;J[a+196>>2]=b+(d?11:3);J[a+188>>2]=b+(d?3:-8);b=J[a+76>>2];if(!(!b|J[a+20>>2]<2)){c=(J[b+4>>2]+c|0)-J[b+8>>2]|0}J[a+204>>2]=c}b=0}if(b){break b}if(!(!(K[J[a>>2]+184|0]&2)|K[J[a+68>>2]+492|0]!=1)){b=_r(a);if(b){break b}}b=-28928;d:{e:{f:{g:{h:{i:{switch(J[a+4>>2]){case 12:if(!J[J[a+68>>2]+2268>>2]){break h}J[a+4>>2]=17;case 17:e=So(a);j:{if(e){break j}if(J[a+128>>2]!=22){Vk(a,10);e=-30464;break j}k:{l:{b=J[a+120>>2];if(K[b|0]==4){c=J[a+168>>2];d=K[J[a>>2]+184|0]&2?12:4;e=d+6|0;if(c>>>0>=e>>>0){break l}}break k}b=b+d|0;d=K[b+4|0]<<8|K[b+5|0];if((c|0)!=(d+e|0)){break k}f=K[b|0]|K[b+1|0]<<8|(K[b+2|0]<<16|K[b+3|0]<<24);e=0;J[J[a+68>>2]+2268>>2]=0;J[a+4>>2]=12;if(!d){break j}c=J[a+60>>2];m:{if(!c){break m}h=J[c+108>>2];if(!h){break m}Zi[J[66509]](h,0,J[c+112>>2])|0;cj(J[J[a+60>>2]+108>>2]);c=J[a+60>>2];J[c+108>>2]=0;J[c+112>>2]=0}c=J[a+64>>2];Zi[J[66509]](J[c+108>>2],0,J[c+112>>2])|0;cj(J[J[a+64>>2]+108>>2]);c=J[a+64>>2];J[c+108>>2]=0;J[c+112>>2]=0;h=Zj(1,d);if(!h){Vk(a,80);e=-32512;break j}a=hj(h,b+6|0,d);J[c+116>>2]=f<<24|(f&65280)<<8|(f>>>8&65280|f>>>24);J[c+112>>2]=d;J[c+108>>2]=a;J[c+16>>2]=0;break j}Vk(a,50);e=-28160}return e;case 0:J[a+4>>2]=1;break d;case 1:c=-29696;b=J[a>>2];n:{if(!J[b+24>>2]){break n}if(!J[a+8>>2]){J[a+16>>2]=K[b+182|0];J[a+20>>2]=K[b+183|0]}c=-28928;d=K[b+180|0];if(!d){break n}i=a;j=J[a+204>>2];nH(d,K[b+181|0],J[b+184>>2]>>>1&1,j+4|0);c=J[a+68>>2];o:{if(!(J[c+480>>2]?K[J[a>>2]+184|0]&2:0)){a=Kr(0);a=a<<24|(a&65280)<<8|(a>>>8&65280|a>>>24);H[c+1128|0]=a;H[c+1129|0]=a>>>8;H[c+1130|0]=a>>>16;H[c+1131|0]=a>>>24;a=J[i>>2];c=Zi[J[a+24>>2]](J[a+28>>2],c+1132|0,28)|0;if(c){break o}c=J[i+68>>2]}a=K[c+1132|0]|K[c+1133|0]<<8|(K[c+1134|0]<<16|K[c+1135|0]<<24);b=K[c+1128|0]|K[c+1129|0]<<8|(K[c+1130|0]<<16|K[c+1131|0]<<24);H[j+6|0]=b;H[j+7|0]=b>>>8;H[j+8|0]=b>>>16;H[j+9|0]=b>>>24;H[j+10|0]=a;H[j+11|0]=a>>>8;H[j+12|0]=a>>>16;H[j+13|0]=a>>>24;a=c+1152|0;b=K[a+4|0]|K[a+5|0]<<8|(K[a+6|0]<<16|K[a+7|0]<<24);a=K[a|0]|K[a+1|0]<<8|(K[a+2|0]<<16|K[a+3|0]<<24);H[j+30|0]=a;H[j+31|0]=a>>>8;H[j+32|0]=a>>>16;H[j+33|0]=a>>>24;H[j+34|0]=b;H[j+35|0]=b>>>8;H[j+36|0]=b>>>16;H[j+37|0]=b>>>24;a=c+1144|0;b=K[a+4|0]|K[a+5|0]<<8|(K[a+6|0]<<16|K[a+7|0]<<24);a=K[a|0]|K[a+1|0]<<8|(K[a+2|0]<<16|K[a+3|0]<<24);H[j+22|0]=a;H[j+23|0]=a>>>8;H[j+24|0]=a>>>16;H[j+25|0]=a>>>24;H[j+26|0]=b;H[j+27|0]=b>>>8;H[j+28|0]=b>>>16;H[j+29|0]=b>>>24;a=c+1136|0;b=K[a+4|0]|K[a+5|0]<<8|(K[a+6|0]<<16|K[a+7|0]<<24);a=K[a|0]|K[a+1|0]<<8|(K[a+2|0]<<16|K[a+3|0]<<24);H[j+14|0]=a;H[j+15|0]=a>>>8;H[j+16|0]=a>>>16;H[j+17|0]=a>>>24;H[j+18|0]=b;H[j+19|0]=b>>>8;H[j+20|0]=b>>>16;H[j+21|0]=b>>>24;b=J[i+8>>2];p:{q:{r:{s:{a=J[i+64>>2];c=J[a+16>>2];t:{if(c-33>>>0>=4294967279){if(b){break s}e=J[J[i+68>>2]+2252>>2]?c:0;break t}if(b){break s}e=0}if(!J[a+108>>2]|!J[a+112>>2]){break r}e=32;b=J[i>>2];c=Zi[J[b+24>>2]](J[b+28>>2],a+20|0,32)|0;if(c){break o}J[J[i+64>>2]+16>>2]=32;H[j+38|0]=32;a=j+39|0;break q}H[j+38|0]=0;a=j+39|0;break p}H[j+38|0]=e;a=j+39|0;if(!e){break p}}b=e&3;d=0;u:{if(e>>>0<4){c=0;break u}f=e&-4;c=0;e=0;while(1){H[a|0]=K[(J[i+64>>2]+c|0)+20|0];H[a+1|0]=K[(J[i+64>>2]+c|0)+21|0];H[a+2|0]=K[(J[i+64>>2]+c|0)+22|0];H[a+3|0]=K[(J[i+64>>2]+c|0)+23|0];c=c+4|0;a=a+4|0;e=e+4|0;if((f|0)!=(e|0)){continue}break}}if(!b){break p}while(1){H[a|0]=K[(J[i+64>>2]+c|0)+20|0];c=c+1|0;a=a+1|0;d=d+1|0;if((b|0)!=(d|0)){continue}break}}v:{if(!(K[J[i>>2]+184|0]&2)){break v}b=J[i+68>>2];if(!J[b+480>>2]){H[a|0]=0;a=a+1|0;break v}H[a|0]=K[b+484|0];b=a+1|0;a=J[i+68>>2];a=hj(b,J[a+480>>2],K[a+484|0])+K[J[i+68>>2]+484|0]|0}g=a+2|0;f=J[J[i>>2]+(J[i+20>>2]<<2)>>2];c=J[f>>2];w:{if(!c){e=0;break w}d=0;e=0;while(1){b=lA(c);x:{if(!b){break x}c=J[i>>2];if(J[b+24>>2]>K[c+181|0]|J[b+32>>2]>2]-5>>>0<4){c=J[i>>2];if(!J[c+136>>2]|!J[c+140>>2]|(!J[c+128>>2]|!J[c+132>>2])){break x}}b=J[b+16>>2]-3|0;if(b>>>0<=8){b=J[(b<<2)+184024>>2]}else{b=0}c=f+(d<<2)|0;H[g|0]=J[c>>2]>>>8;H[g+1|0]=J[c>>2];g=g+2|0;e=e+1|0;m=b|m}d=d+1|0;c=J[f+(d<<2)>>2];if(c){continue}break}}if(!J[i+8>>2]){H[g|0]=0;H[g+1|0]=255;g=g+2|0;e=e+1|0}if(H[J[i>>2]+186|0]&1){H[g|0]=86;H[g+1|0]=0;g=g+2|0;e=e+1|0}H[a+1|0]=e<<1;H[a|0]=e>>>7;H[g|0]=1;H[g+1|0]=0;k=g+4|0;f=J[i+204>>2];a=0;c=J[i+236>>2];b=0;y:{if(!c){break y}d=yj(c);c=f+16384|0;b=0;if(c>>>0>>0){break y}e=c-k|0;c=d+9|0;b=0;if(e>>>0>>0){break y}H[g+12|0]=d;H[g+10|0]=0;H[g+4|0]=0;H[g+5|0]=0;H[g+11|0]=d>>>8;b=d+3|0;H[g+9|0]=b;e=d+5|0;H[g+7|0]=e;H[g+8|0]=b>>>8;H[g+6|0]=e>>>8;hj(g+13|0,J[i+236>>2],d);f=J[i+204>>2];b=c}z:{if(J[i+8>>2]!=1){break z}d=f+16384|0;c=b+k|0;if(d>>>0>>0|J[i+248>>2]+5>>>0>d-c>>>0){break z}H[c+2|0]=0;H[c|0]=255;H[c+1|0]=1;H[c+3|0]=K[i+248|0]+1;H[c+4|0]=J[i+248>>2];hj(c+5|0,i+252|0,J[i+248>>2]);a=J[i+248>>2]+5|0;f=J[i+204>>2]}o=a+b|0;a=0;h=J[i>>2];A:{if(K[h+181|0]!=3){break A}p=f+16384|0;e=k+o|0;d=J[h+96>>2];l=J[d>>2];B:{if(l){c=d;while(1){b=a;a=a+4|0;q=J[c+4>>2];c=c+4|0;if(q){continue}break}a=0;if(e>>>0>p>>>0|b+10>>>0>p-e>>>0){break A}f=e+6|0;while(1){b=a+f|0;H[b|0]=l-3>>>0<6?l-2|0:0;H[b+1|0]=3;c=J[d>>2];H[b+3|0]=1;H[b+2|0]=c-3>>>0<6?c-2|0:0;a=a+4|0;l=J[d+4>>2];d=d+4|0;if(l){continue}break}break B}if(p-e>>>0<6|e>>>0>p>>>0){break A}}H[e+5|0]=a;H[e|0]=0;H[e+1|0]=13;b=a>>>8|0;H[e+4|0]=b;H[e+3|0]=a|2;H[e+2|0]=b;a=a+6|0;f=J[i+204>>2];h=J[i>>2]}e=a+o|0;if(m){a=6;d=J[h+100>>2];c=J[d>>2];C:{if(c){a=0;while(1){b=a;a=c-1|0;if(a>>>0<=11){a=J[(a<<2)+267520>>2]}else{a=0}if(!a){h=0;break C}a=b+2|0;c=J[d+4>>2];d=d+4|0;if(c){continue}break}a=b+8|0}h=0;b=f+16384|0;f=e+k|0;if(b>>>0>>0|b-f>>>0>>0){break C}c=J[J[i>>2]+100>>2];d=J[c>>2];if(!d){break C}l=f+6|0;a=0;while(1){b=a;p=a+l|0;a=d-1|0;if(a>>>0<=11){a=J[(a<<2)+267520>>2]}else{a=0}H[p|0]=K[a+5|0];H[p+1|0]=K[a+4|0];a=b+2|0;d=J[c+4>>2];c=c+4|0;if(d){continue}break}if(!a){break C}H[f+5|0]=a;H[f|0]=0;H[f+1|0]=10;H[f+4|0]=a>>>8;a=b+4|0;H[f+3|0]=a;H[f+2|0]=a>>>8;h=b+8|0}d=0;f=J[i+204>>2];b=f+16384|0;c=e+h|0;a=c+k|0;if(!(b>>>0>>0|b-a>>>0<6)){H[a+4|0]=1;H[a+5|0]=0;H[a|0]=0;H[a+1|0]=11;H[a+2|0]=0;H[a+3|0]=2;f=J[i+204>>2];d=6}e=d+c|0;h=J[i>>2]}a=0;c=J[h+184>>2];d=0;D:{if(!(c&448)){break D}l=f+16384|0;b=e+k|0;d=0;if(l>>>0>>0){break D}d=0;if(l-b>>>0<5){break D}H[b|0]=0;H[b+1|0]=1;H[b+2|0]=0;H[b+3|0]=1;H[b+4|0]=J[J[i>>2]+184>>2]>>>6&7;f=J[i+204>>2];h=J[i>>2];c=J[h+184>>2];d=5}d=d+e|0;E:{if(!(c&16384)){break E}e=f+16384|0;b=d+k|0;if(e>>>0>>0|e-b>>>0<4){break E}H[b|0]=0;H[b+1|0]=4;H[b+2|0]=0;H[b+3|0]=0;f=J[i+204>>2];h=J[i>>2];c=J[h+184>>2];a=4}e=a+d|0;a=0;b=0;F:{if(!(c&512)){break F}b=0;if(!K[h+181|0]){break F}l=f+16384|0;d=e+k|0;b=0;if(l>>>0>>0){break F}b=0;if(l-d>>>0<4){break F}H[d|0]=0;H[d+1|0]=22;H[d+2|0]=0;H[d+3|0]=0;f=J[i+204>>2];h=J[i>>2];c=J[h+184>>2];b=4}d=b+e|0;G:{if(!(c&1024)|!K[h+181|0]){break G}c=f+16384|0;b=d+k|0;if(c>>>0>>0|c-b>>>0<4){break G}H[b|0]=0;H[b+1|0]=23;H[b+2|0]=0;H[b+3|0]=0;h=J[i>>2];f=J[i+204>>2];a=4}l=a+d|0;e=0;c=J[h+144>>2];H:{if(!c){c=0;break H}p=f+16384|0;b=k+l|0;d=J[c>>2];if(d){a=0;while(1){a=((yj(d)&255)+a|0)+1|0;d=J[c+4>>2];c=c+4|0;if(d){continue}break}a=a+6|0}else{a=6}c=0;if(b>>>0>p>>>0|a>>>0>p-b>>>0){break H}H[b|0]=0;H[b+1|0]=16;d=b+6|0;c=J[J[i>>2]+144>>2];a=J[c>>2];if(a){while(1){a=yj(a);H[d|0]=a;a=a&255;d=hj(d+1|0,J[c>>2],a)+a|0;a=J[c+4>>2];c=c+4|0;if(a){continue}break}}c=d-b|0;H[b+5|0]=c-6;H[b+3|0]=c-4;H[b+4|0]=c+65530>>>8;H[b+2|0]=c+65532>>>8;h=J[i>>2];f=J[i+204>>2]}d=c+l|0;I:{if(!(K[h+185|0]&128)){break I}a=f+16384|0;b=d+k|0;if(a>>>0>>0){break I}f=a-b|0;c=J[J[i+64>>2]+112>>2];a=c+4|0;if(f>>>0>>0){break I}H[b+3|0]=c;H[b|0]=0;H[b+1|0]=35;H[b+2|0]=c>>>8;f=J[J[i+64>>2]+108>>2];if(!f){e=4;break I}e=4;if(!c){break I}hj(b+4|0,f,c);e=a}a=d+e|0;if(a){b=a<<8|(a&65280)>>>8;H[g+2|0]=b;H[g+3|0]=b>>>8;a=a+k|0}else{a=g+2|0}J[i+208>>2]=22;J[i+212>>2]=a-j;H[J[i+204>>2]]=1;J[i+4>>2]=J[i+4>>2]+1;a=J[i>>2];if(K[a+184|0]&2){a=J[a+152>>2];J[J[i+68>>2]+488>>2]=a;b=J[i+92>>2];if(b){Zi[b|0](J[i+88>>2],a>>>2|0,a)}H[J[i+68>>2]+492|0]=J[i+128>>2]!=22?2:K[J[i+120>>2]]==20?3:2}c=Yr(i);if(c){break o}if(K[J[i>>2]+184|0]&2){c=_r(i);if(c){break o}}c=0}}return c;case 2:c=0;i=Ui-16|0;Ui=i;b=So(a);J:{if(b){break J}if(J[a+128>>2]!=22){if(J[a+8>>2]==1){c=J[a+12>>2];J[a+12>>2]=c+1;d=J[J[a>>2]+160>>2];if((d|0)>=0){b=-30464;if((c|0)>=(d|0)){break J}}J[a+176>>2]=1;b=-27392;break J}Vk(a,10);b=-30464;break J}b=J[a+120>>2];d=J[J[a>>2]+184>>2];K:{if(d&2){if(K[b|0]==3){qH(i+12|0,i+8|0,1,b+12|0);L:{c=J[i+12>>2];M:{if((c|0)<3){break M}d=J[i+8>>2];if((d|0)<2){break M}e=J[a>>2];if(c>>>0>K[e+180|0]){break M}if(d>>>0<=K[e+181|0]){break L}}Vk(a,70);b=-28288;break J}d=b+15|0;b=K[b+14|0];if(((J[a+120>>2]+J[a+132>>2]|0)-d|0)<(b|0)){Vk(a,50);break K}cj(J[J[a+68>>2]+480>>2]);c=Zj(1,b);e=J[a+68>>2];J[e+480>>2]=c;if(!c){b=-32512;break J}hj(c,d,b);H[e+484|0]=b;J[a+4>>2]=1;b=J[a+68>>2];J[b+612>>2]=-1732584194;J[b+616>>2]=271733878;J[b+604>>2]=1732584193;J[b+608>>2]=-271733879;J[b+596>>2]=0;J[b+600>>2]=0;b=J[a+68>>2];J[b+708>>2]=-1009589776;J[b+700>>2]=-1732584194;J[b+704>>2]=271733878;J[b+692>>2]=1732584193;J[b+696>>2]=-271733879;J[b+684>>2]=0;J[b+688>>2]=0;vw(J[a+68>>2]+776|0,0);as(J[a+68>>2]+888|0,1);iA(a);b=0;break J}cj(J[J[a+68>>2]+480>>2]);c=J[a+68>>2];H[c+484|0]=0;J[c+480>>2]=0;d=J[J[a>>2]+184>>2];c=d&2}c=c?12:4;if(!(K[b|0]==2&M[a+168>>2]>=c+38>>>0)){Vk(a,50);break K}b=b+c|0;qH(a+16|0,a+20|0,d>>>1&1,b);N:{d=J[a+16>>2];c=J[a>>2];O:{if((d|0)>2];if((e|0)>>0>K[c+180|0]){break O}if(e>>>0<=K[c+181|0]){break N}}Vk(a,70);b=-28288;break J}d=K[b+6|0]|K[b+7|0]<<8|(K[b+8|0]<<16|K[b+9|0]<<24);c=J[a+68>>2];e=K[b+2|0]|K[b+3|0]<<8|(K[b+4|0]<<16|K[b+5|0]<<24);H[c+1160|0]=e;H[c+1161|0]=e>>>8;H[c+1162|0]=e>>>16;H[c+1163|0]=e>>>24;H[c+1164|0]=d;H[c+1165|0]=d>>>8;H[c+1166|0]=d>>>16;H[c+1167|0]=d>>>24;e=K[b+30|0]|K[b+31|0]<<8|(K[b+32|0]<<16|K[b+33|0]<<24);d=c+1184|0;f=K[b+26|0]|K[b+27|0]<<8|(K[b+28|0]<<16|K[b+29|0]<<24);H[d|0]=f;H[d+1|0]=f>>>8;H[d+2|0]=f>>>16;H[d+3|0]=f>>>24;H[d+4|0]=e;H[d+5|0]=e>>>8;H[d+6|0]=e>>>16;H[d+7|0]=e>>>24;e=K[b+22|0]|K[b+23|0]<<8|(K[b+24|0]<<16|K[b+25|0]<<24);d=c+1176|0;f=K[b+18|0]|K[b+19|0]<<8|(K[b+20|0]<<16|K[b+21|0]<<24);H[d|0]=f;H[d+1|0]=f>>>8;H[d+2|0]=f>>>16;H[d+3|0]=f>>>24;H[d+4|0]=e;H[d+5|0]=e>>>8;H[d+6|0]=e>>>16;H[d+7|0]=e>>>24;d=K[b+14|0]|K[b+15|0]<<8|(K[b+16|0]<<16|K[b+17|0]<<24);c=c+1168|0;e=K[b+10|0]|K[b+11|0]<<8|(K[b+12|0]<<16|K[b+13|0]<<24);H[c|0]=e;H[c+1|0]=e>>>8;H[c+2|0]=e>>>16;H[c+3|0]=e>>>24;H[c+4|0]=d;H[c+5|0]=d>>>8;H[c+6|0]=d>>>16;H[c+7|0]=d>>>24;c=K[b+34|0];if(c>>>0>=33){Vk(a,50);break K}P:{f=J[a+168>>2];e=c+(K[J[a>>2]+184|0]&2?12:4)|0;if(f>>>0>e+39>>>0){d=b+c|0;d=K[d+38|0]<<8|K[d+39|0];if(d-1>>>0>=3&(f|0)==((d+e|0)+40|0)){break P}Vk(a,50);break K}d=0;if((f|0)==(e+38|0)){break P}Vk(a,50);break K}f=b+c|0;if(K[f+37|0]){Vk(a,47);b=-28800;break J}h=K[f+36|0]|K[f+35|0]<<8;e=lA(h);J[J[a+68>>2]+1120>>2]=e;if(!e){Vk(a,80);b=-28928;break J}Q:{if(J[a+20>>2]<=2){J[J[a+68>>2]+1104>>2]=2299;break Q}g=J[a+68>>2];if(J[e+12>>2]==7){J[g+1104>>2]=2300;break Q}J[g+1104>>2]=2301}R:{S:{g=J[a+68>>2];T:{if(J[a+8>>2]|(!c|!J[g+2252>>2])){break T}e=J[a+64>>2];if((h|0)!=J[e+8>>2]|J[e+12>>2]|(c|0)!=J[e+16>>2]){break T}if(!Wj(e+20|0,b+35|0,c)){break S}}J[a+4>>2]=J[a+4>>2]+1;J[g+2252>>2]=0;g=Kr(0);e=J[a+64>>2];J[e+16>>2]=c;J[e+12>>2]=0;J[e+8>>2]=h;J[e>>2]=g;J[e+4>>2]=Yi;hj(e+20|0,b+35|0,c);break R}J[a+4>>2]=12;b=sH(a);if(!b){break R}Vk(a,80);break J}e=J[J[a>>2]+(J[a+20>>2]<<2)>>2];b=0;while(1){c=J[e+(b<<2)>>2];if(!c){Vk(a,47);break K}b=b+1|0;if((c|0)!=J[J[a+64>>2]+8>>2]){continue}break}b=lA(c);c=1;e=J[a+20>>2];U:{if(!b|(e|0)>2]|((e|0)>J[b+32>>2]|(K[b+36|0]&4?K[J[a>>2]+184|0]&2:0))){break U}c=0;if(J[b+16>>2]-5>>>0>=4){break U}b=J[a>>2];if(!(!J[b+136>>2]|!J[b+140>>2]|!J[b+128>>2])){if(J[b+132>>2]){break U}}c=1}if(c){Vk(a,47);break K}h=0;J[J[a+64>>2]+12>>2]=0;c=f+40|0;while(1){if(d){b=K[c+3|0]|K[c+2|0]<<8;l=b+4|0;if(l>>>0>d>>>0){Vk(a,50);break K}V:{W:{X:{Y:{Z:{_:{$:{aa:{ba:{e=K[c|0]|K[c+1|0]<<8;e=(e<<8|e>>>8)&65535;switch(e-1|0){case 1:case 2:case 4:case 5:case 6:case 7:case 8:case 9:case 11:case 12:case 13:case 14:case 16:case 17:case 18:case 19:case 20:case 23:case 24:case 25:case 26:case 27:case 28:case 29:case 30:case 31:case 32:case 33:break V;case 15:break W;case 10:break X;case 34:break Y;case 22:break Z;case 21:break _;case 3:break $;case 0:break aa;default:break ba}}if((e|0)!=65281){break V}h=1;f=c+4|0;e=Ui-16|0;Ui=e;ca:{da:{if(J[a+8>>2]){g=J[a+248>>2];j=g<<1;ea:{if((b|0)!=(j|1)|(j|0)!=K[f|0]){break ea}b=0;H[e+14|0]=0;fa:{if(g){k=a+252|0;j=f+1|0;if((g|0)!=1){p=g&-2;f=0;while(1){H[e+14|0]=K[e+14|0]|K[b+j|0]^K[b+k|0];m=b|1;H[e+14|0]=K[e+14|0]|K[m+j|0]^K[k+m|0];b=b+2|0;f=f+2|0;if((p|0)!=(f|0)){continue}break}}if(g&1){H[e+14|0]=K[e+14|0]|K[b+j|0]^K[b+k|0]}if(K[e+14|0]){break ea}b=0;H[e+15|0]=0;k=a+264|0;j=g+j|0;if((g|0)!=1){p=g&-2;f=0;while(1){H[e+15|0]=K[e+15|0]|K[b+j|0]^K[b+k|0];m=b|1;H[e+15|0]=K[e+15|0]|K[m+j|0]^K[k+m|0];b=b+2|0;f=f+2|0;if((p|0)!=(f|0)){continue}break}}if(!(g&1)){break fa}H[e+15|0]=K[e+15|0]|K[b+j|0]^K[b+k|0];break fa}if(K[e+14|0]){break ea}H[e+15|0]=0}if(!K[e+15|0]){break da}}Vk(a,40);b=-31104;break ca}if(!(!K[f|0]&(b|0)==1)){Vk(a,40);b=-31104;break ca}J[a+244>>2]=1}b=0}Ui=e+16|0;if(!b){break V}break J}ga:{ha:{if((b|0)!=1){break ha}e=J[J[a>>2]+184>>2]>>>6&7;if(!e){break ha}b=0;if((e|0)==K[c+4|0]){break ga}}Vk(a,40);b=-31104}if(!b){break V}break J}ia:{if(J[J[a>>2]+184>>2]&16384?b:1){Vk(a,40);b=-31104;break ia}J[J[a+64>>2]+124>>2]=1;b=0}if(!b){break V}break J}ja:{if(J[a+20>>2]?b|!(K[J[a>>2]+185|0]&2):1){Vk(a,40);b=-31104;break ja}J[J[a+64>>2]+128>>2]=1;b=0}if(!b){break V}break J}ka:{if(J[a+20>>2]?b|!(K[J[a>>2]+185|0]&4):1){Vk(a,40);b=-31104;break ka}J[J[a+68>>2]+2272>>2]=1;b=0}if(!b){break V}break J}la:{if(J[J[a>>2]+184>>2]&32768?b:1){Vk(a,40);b=-31104;break la}J[J[a+68>>2]+2268>>2]=1;b=0}if(!b){break V}break J}e=c+4|0;ma:{na:{oa:{pa:{if(!b){break pa}g=K[e|0];if((b|0)!=(g+1|0)){break pa}if(!g){break na}break oa}Vk(a,50);b=-31104;break ma}while(1){b=K[e+1|0];if(b>>>0>1){e=e+1|0;g=g-1|0;if(g){continue}break na}break}J[J[a+68>>2]+352>>2]=b;b=0;break ma}Vk(a,40);b=-31104}if(!b){break V}break J}e=c+4|0;qa:{ra:{sa:{g=J[J[a>>2]+144>>2];if(!g){break sa}if(b>>>0<=3){break ra}f=b-2|0;b=K[e+1|0]|K[e|0]<<8;if((f|0)!=(b|0)){break ra}f=K[e+2|0];if((f|0)==(b-1|0)){b=J[g>>2];if(b){e=e+3|0;while(1){ta:{if((yj(b)|0)!=(f|0)){break ta}if(Wj(e,b,f)){break ta}J[a+240>>2]=b;b=0;break qa}b=J[g+4>>2];g=g+4|0;if(b){continue}break}}break sa}Vk(a,50);b=-31104;break qa}Vk(a,40);b=-31104;break qa}Vk(a,50);b=-31104}if(b){break J}}c=c+l|0;b=-31104;d=d-l|0;if(d-4>>>0<4294967293){continue}break J}break}c=J[a+244>>2];ua:{if(!c&(J[J[a>>2]+184>>2]&48)==32){break ua}b=0;if(J[a+8>>2]!=1){break J}d=!h;if(d&(c|0)==1){break ua}if(c){break J}if(!(K[J[a>>2]+184|0]&48)){break ua}if(d){break J}}Vk(a,40)}b=-31104}Ui=i+16|0;break a;case 3:va:{wa:{xa:{b=J[J[J[a+68>>2]+1120>>2]+16>>2];if(!(b>>>0>10|!(1<>2]+184>>2];b=So(a);if(b){break va}b=J[a+64>>2];c=J[b+100>>2];if(c){hn(c);cj(J[b+100>>2]);J[b+100>>2]=0}i=Zj(1,344);if(!i){b=-32512;if(!J[a>>2]){break va}J[a+208>>2]=21;J[a+212>>2]=2;H[J[a+204>>2]]=2;H[J[a+204>>2]+1|0]=80;Nm(a,1);break va}ij(i,0,344);if(J[a+128>>2]!=22){b=-30464;if(!J[a>>2]){break wa}c=10;break xa}d=J[a>>2];ya:{za:{Aa:{Ba:{Ca:{Da:{e=J[a+120>>2];if(K[e|0]==11){b=-31232;c=50;h=J[a+168>>2];j=J[d+184>>2];d=j&2?12:4;f=d+6|0;if(h>>>0>>0){break xa}g=d+e|0;if(K[g|0]){break xa}d=d|3;if((h|0)!=(d+(K[g+2|0]|K[g+1|0]<<8)|0)){break xa}d=d+e|0;if(K[d|0]){break xa}d=K[d+2|0]|K[d+1|0]<<8;if(d>>>0<128){break xa}g=d+f|0;if(h>>>0>>0){break xa}if(!(j&1|J[a+8>>2]!=1)){c=49;h=J[a+60>>2];j=J[h+100>>2];if(!j|(d|0)!=J[j+8>>2]){break xa}if(Wj(J[j+12>>2],e+f|0,d)){break xa}b=J[h+100>>2];if(b){hn(b);cj(J[h+100>>2]);J[h+100>>2]=0}e=J[a+120>>2]}h=42;b=uw(i,e+f|0,d);if((b|0)>-9601){break Da}if((b|0)==-10368){break Aa}if((b|0)==-9774){break Ca}break za}b=-31232;if(!d){break wa}c=50;break xa}if((b|0)==-9600){break Ba}if(b){break za}}b=J[a+168>>2];if(g>>>0>=b>>>0){break ya}while(1){c=g+3|0;if(c>>>0>b>>>0){b=-31232;c=50;if(J[a>>2]){break xa}break wa}e=J[a+120>>2];d=e+g|0;if(K[d|0]){b=-31232;c=50;if(!J[a>>2]){break wa}break xa}Ea:{d=K[d+2|0]|K[d+1|0]<<8;if(d>>>0>=128){g=c+d|0;if(g>>>0<=b>>>0){break Ea}}b=-31232;c=50;if(J[a>>2]){break xa}break wa}Fa:{b=uw(i,c+e|0,d);if((b|0)<=-9601){if((b|0)==-9774){break Fa}if((b|0)!=-10368){break za}break Aa}if(!b){break Fa}if((b|0)!=-9600){break za}break Ba}b=J[a+168>>2];if(g>>>0>>0){continue}break}break ya}h=43;b=-9600;break za}h=80;b=-10368}if(J[a>>2]){J[a+208>>2]=21;J[a+212>>2]=2;H[J[a+204>>2]]=2;H[J[a+204>>2]+1|0]=h;Nm(a,1)}if(b){break wa}}Ga:{y=k>>>2&3;if(!y){break Ga}d=J[a+68>>2];b=J[a+28>>2];Ha:{if(b){c=a+32|0;break Ha}b=J[a>>2];c=b+56|0;b=J[b+52>>2]}E=J[c>>2];h=J[d+464>>2];Ia:{if(h){c=J[a>>2];break Ia}c=J[a>>2];h=J[c+88>>2]}F=J[d+1120>>2];d=i;q=J[c+80>>2];e=J[a+236>>2];l=b;g=Ui-160|0;Ui=g;t=J[a+64>>2];J[t+104>>2]=0;b=g;J[b+84>>2]=0;J[b+88>>2]=-1;J[b+76>>2]=0;J[b+80>>2]=-1;J[b+68>>2]=0;J[b+72>>2]=-1;J[b+60>>2]=0;J[b+64>>2]=-1;J[b+52>>2]=0;J[b+56>>2]=-1;J[b+44>>2]=0;J[b+48>>2]=-1;J[b+36>>2]=0;J[b+40>>2]=-1;J[b+28>>2]=0;J[b+32>>2]=-1;J[b+20>>2]=0;J[b+24>>2]=-1;J[b+12>>2]=0;J[b+16>>2]=-1;Ja:{Ka:{if(!q){c=-10240;break Ka}La:{if(!e){break La}b=yj(e);Ma:{if(K[d+280|0]&32){c=d+248|0;while(1){if(!vF(c,e,b)){break La}c=J[c+12>>2];if(c){continue}break}break Ma}c=d+112|0;while(1){Na:{if(J[c+4>>2]!=3){break Na}if(Wj(158724,J[c+8>>2],3)){break Na}if(!vF(c+12|0,e,b)){break La}}c=J[c+24>>2];if(c){continue}break}}u=4}c=0;b=d+204|0;Oa:{if(!b){break Oa}e=J[b>>2];if(!e){break Oa}c=J[e>>2]}u=(J[q+4>>2]>>>c-1&1?c:0)?u:u|32768;c=0;Pa:{if(!b){break Pa}e=J[b>>2];if(!e){break Pa}c=J[e>>2]}Qa:{Ra:{Sa:{switch(c-1|0){case 0:case 5:c=0;Ta:{if(!b){break Ta}e=J[b>>2];if(!e){break Ta}c=Zi[J[e+8>>2]](J[b+4>>2])|0}if(M[q+12>>2]>c>>>0){break Ra}break Qa;default:break Sa}}if(c-2>>>0>2){break Ra}b=J[J[d+208>>2]>>2];if(!b){break Ra}if(J[q+8>>2]>>>b-1&1){break Qa}}u=u|65536}z=g+16|0;c=0;while(1){m=(g+12|0)+(c<<3)|0;J[m+4>>2]=0;J[m>>2]=d;J[g+92>>2]=c+1;if(iH(d+168|0)){J[m+4>>2]=J[m+4>>2]|1}if(jH(d+144|0)){J[m+4>>2]=J[m+4>>2]|512}Ua:{Va:{if(A){break Va}b=J[d+328>>2];if(!(J[q>>2]>>>b-1&1?b:0)){J[m+4>>2]=J[m+4>>2]|16384}b=J[d+332>>2];if(!(J[q+4>>2]>>>b-1&1?b:0)){J[m+4>>2]=J[m+4>>2]|32768}e=J[g+92>>2];Wa:{if((e|0)!=1){break Wa}if(tF(d+80|0,d+112|0)|!h){break Wa}b=J[d+8>>2];c=h;while(1){if((b|0)==J[c+8>>2]){if(!Wj(J[d+12>>2],J[c+12>>2],b)){break Va}}c=J[c+340>>2];if(c){continue}break}}G=e-B|0;p=d+80|0;w=0;A=1;f=h;while(1){k=0;b=0;if(f){while(1){j=f+112|0;e=p;Xa:{while(1){if(!e|!j|J[e>>2]!=J[j>>2]){break Xa}c=J[e+4>>2];if((c|0)!=J[j+4>>2]){break Xa}if(Wj(J[e+8>>2],J[j+8>>2],c)){break Xa}c=J[e+12>>2];o=J[j+12>>2];Ya:{Za:{if((c|0)!=(o|0)){break Za}n=J[e+16>>2];if((n|0)!=J[j+16>>2]){break Za}if(!Wj(J[e+20>>2],J[j+20>>2],n)){break Ya}}_a:{switch(c-12|0){case 0:case 7:break _a;default:break Xa}}$a:{switch(o-12|0){case 0:case 7:break $a;default:break Xa}}o=J[e+16>>2];if((o|0)!=J[j+16>>2]){break Xa}if(!o){break Ya}x=J[j+20>>2];r=J[e+20>>2];c=0;while(1){n=K[c+r|0];v=K[c+x|0];if((n|0)!=(v|0)){if((n^v)!=32|((n&223)-65&255)>>>0>25){break Xa}}c=c+1|0;if((o|0)!=(c|0)){continue}break}}if(K[e+28|0]!=K[j+28|0]){break Xa}e=J[e+24>>2];j=J[j+24>>2];if(e|j){continue}break}ab:{if(!w&J[f+28>>2]<3){break ab}if(!J[f+284>>2]){break Xa}if(!(K[f+280|0]&4)){break ab}if((J[f+292>>2]&32773)!=4){break Xa}}c=J[f+288>>2];if((c|0)>0&c>>>0>>0){break Xa}c=J[d+328>>2]-3|0;if(c>>>0<=5){e=J[(c<<2)+266328>>2]}else{e=0}if(e){c=J[e+8>>2]}else{c=0}j=c&255;c=-1;n=J[d+24>>2];r=J[d+20>>2];x=g+96|0;s=-20736;bb:{if(!e){break bb}s=Zi[J[e+28>>2]](n,r,x)|0}cb:{if(s){break cb}n=J[d+332>>2];e=0;o=f+204|0;db:{if(!o){break db}r=J[o>>2];if(!r){break db}e=Zi[J[r+12>>2]](n)|0}if(!e){break cb}c=J[d+332>>2];n=J[d+336>>2];r=J[d+328>>2];e=j;C=J[d+324>>2];v=J[d+320>>2];j=-16e3;D=J[o>>2];eb:{fb:{if(!D){break fb}s=-16128;if(!(Zi[J[D+12>>2]](c)|0)){break eb}if((c|0)==6){if(!n){break fb}c=J[o>>2];if(c){j=-17280;if(v>>>0<(Zi[J[c+8>>2]](J[o+4>>2])|0)+7>>>3>>>0){break fb}}j=uH(J[o+4>>2],r,e,x,J[n>>2],J[n+4>>2],C);if(j){break fb}c=J[o>>2];if(c){c=(Zi[J[c+8>>2]](J[o+4>>2])|0)+7>>>3|0}else{c=0}s=c>>>0>>0?-14592:0;break eb}if(n){break fb}n=J[o>>2];if(!n){break fb}if(!e){c=r-3|0;if(c>>>0<=5){c=J[(c<<2)+266328>>2]}else{c=0}if(!c){break fb}n=J[o>>2];e=(c?J[c+8>>2]:0)&255}j=-16128;c=J[n+16>>2];if(!c){break fb}j=Zi[c|0](J[o+4>>2],r,x,e,C,v)|0}s=j}c=s}c=!c;if(!(c|w)){break Xa}gb:{if(iH(f+168|0)){break gb}if(jH(f+144|0)){break gb}b=f;k=c;break Ua}k=b?k:c;b=b?b:f}f=J[f+340>>2];if(f){continue}break}if(b){break Ua}}if(!w){f=J[d+340>>2];w=1;A=0;continue}break}J[m+4>>2]=J[m+4>>2]|8}J[g+16>>2]=J[g+16>>2]|u;hb:{c=J[g+92>>2];ib:{if(!c){b=J[t+104>>2];break ib}if(l){while(1){c=c-1|0;b=(g+12|0)+(c<<3)|0;J[g+96>>2]=J[b+4>>2];b=Zi[l|0](E,J[b>>2],c,g+96|0)|0;if(b){break hb}b=J[t+104>>2]|J[g+96>>2];J[t+104>>2]=b;if(c){continue}break ib}}b=J[t+104>>2];f=c&3;jb:{if(!f){d=c;break jb}e=0;d=c;while(1){d=d-1|0;b=J[(d<<3)+z>>2]|b;e=e+1|0;if((f|0)!=(e|0)){continue}break}}if(c>>>0>=4){while(1){c=d<<3;d=d-4|0;c=c+z|0;b=J[(d<<3)+z>>2]|(J[c-24>>2]|(J[c-16>>2]|(J[c-8>>2]|b)));if(d){continue}break}}J[t+104>>2]=b}c=b?-9984:0;break Ja}c=(b|0)==-9984?-12288:b;break Ka}kb:{lb:{mb:{nb:{ob:{c=J[g+92>>2];if((c|0)!=1){d=tF(p,d+112|0);if(c>>>0>8&w){break ob}B=!d+B|0}if(!k){J[m+4>>2]=J[m+4>>2]|8}c=0;d=b+204|0;pb:{if(!d){break pb}e=J[d>>2];if(!e){break pb}c=J[e>>2]}switch(c-1|0){case 0:case 5:break nb;default:break mb}}c=-12288;break Ka}c=0;qb:{if(!d){break qb}e=J[d>>2];if(!e){break qb}c=Zi[J[e+8>>2]](J[d+4>>2])|0}if(M[q+12>>2]>c>>>0){break lb}break kb}if(c-2>>>0>2){break lb}c=J[J[b+208>>2]>>2];if(!c){break lb}if(J[q+8>>2]>>>c-1&1){break kb}}J[m+4>>2]=J[m+4>>2]|65536}c=J[g+92>>2];d=b;continue}}J[t+104>>2]=-1}Ui=g+160|0;b=0;rb:{if((i|0)==-204){break rb}d=J[i+204>>2];if(!d){break rb}b=Zi[J[d+12>>2]](2)|0}f=J[a>>2];sb:{if(!b){break sb}e=J[f+100>>2];tb:{if(!e){break tb}b=J[e>>2];if(!b){break tb}d=J[J[i+208>>2]>>2];while(1){if((b|0)==(d|0)){break sb}b=J[e+4>>2];e=e+4|0;if(b){continue}break}}b=J[a+64>>2];J[b+104>>2]=J[b+104>>2]|65536;c=c?c:-31232}e=J[a+64>>2];f=J[f+184>>2]&1;d=128;ub:{if(f){break ub}b=J[F+16>>2]-1|0;d=0;if(b>>>0>9){break ub}d=J[(b<<2)+184120>>2]}b=0;vb:{if(!(K[i+280|0]&4)){break vb}g=J[i+292>>2];j=d&-32770;b=-10240;if((g&j)!=(j|0)){break vb}b=g&(d^-1)&32769?-10240:0}d=b;if(d){J[e+104>>2]=J[e+104>>2]|2048}g=f?158747:158783;n=0;wb:{if(!(K[i+281|0]&8)){break wb}b=i+296|0;while(1){f=J[b+4>>2];if((f|0)==8){if(!Wj(J[b+8>>2],g,8)){break wb}}if((f|0)==4){f=J[b+8>>2];if((K[f|0]|K[f+1|0]<<8|(K[f+2|0]<<16|K[f+3|0]<<24))==2432341){break wb}}b=J[b+12>>2];if(b){continue}break}n=-10240}xb:{if(n){J[e+104>>2]=J[e+104>>2]|4096;b=c?c:-31232;break xb}b=d?c?c:-31232:c}b=(y|0)==1?(b|0)!=-9984?(b|0)!=-31232?b:0:0:b;b=(y|0)==2?h?b:-30336:b;if(!b){break Ga}d=J[J[a+64>>2]+104>>2];c=49;yb:{if(d&256){break yb}c=42;if(d&4){break yb}c=43;if(d&112640){break yb}c=45;if(d&1){break yb}c=44;if(d&2){break yb}c=d&8?48:46}if(J[a>>2]){break xa}break wa}J[J[a+64>>2]+100>>2]=i}J[a+4>>2]=J[a+4>>2]+1;b=0;break va}J[a+208>>2]=21;J[a+212>>2]=2;H[J[a+204>>2]]=2;H[J[a+204>>2]+1|0]=c;Nm(a,1)}hn(i);cj(i)}break a;case 4:c=0;d=Ui-96|0;Ui=d;zb:{Ab:{Bb:{Cb:{j=J[J[a+68>>2]+1120>>2];switch(J[j+16>>2]-1|0){case 8:case 9:break Bb;case 0:break Cb;default:break Ab}}J[a+4>>2]=J[a+4>>2]+1;break zb}Db:{b=J[J[a+64>>2]+100>>2];Eb:{if(!b){c=-27648;break Eb}Fb:{if((b|0)==-204){break Fb}e=J[b+204>>2];if(!e){break Fb}c=Zi[J[e+12>>2]](2)|0}if(!c){c=-27904;break Eb}e=J[b+208>>2];b=J[e>>2];Gb:{Hb:{c=J[a+68>>2]+132|0;f=J[c>>2];if(!f){if(!js(c,b)){break Hb}c=-20096;break Gb}if((b|0)==(f|0)){break Hb}c=-20352;break Gb}c=JH(c+172|0,e+136|0)}if(c){break Eb}c=-31232;e=J[J[a+68>>2]+132>>2];b=e-1|0;if(b>>>0<=11){b=J[(b<<2)+267520>>2]}else{b=0}if(!b){break Eb}if(!tH(a,e)){break Db}}Vk(a,40);break zb}J[a+4>>2]=J[a+4>>2]+1;c=0;break zb}c=So(a);if(c){break zb}if(J[a+128>>2]!=22){Vk(a,10);c=-30464;break zb}Ib:{c=J[a+120>>2];if(K[c|0]!=12){Jb:{switch(J[j+16>>2]-5|0){case 0:case 2:J[a+176>>2]=1;break Ib;default:break Jb}}Vk(a,10);c=-30464;break zb}f=J[J[a>>2]+184>>2]&2?12:4;b=f+c|0;J[d+92>>2]=b;e=c;c=J[a+168>>2];i=e+c|0;Kb:{Lb:{e=J[j+16>>2];if(e-5>>>0<=3){if((c-f|0)<2){break Lb}c=b+2|0;b=K[b+1|0]|K[b|0]<<8;if((i-c|0)<(b|0)){break Lb}J[d+92>>2]=b+c}c=-27648;if(e>>>0>8){break zb}b=1<>2];b=-12416;Mb:{if((i-c|0)<2){break Mb}e=J[a+68>>2];f=K[c+1|0];h=K[c|0];c=c+2|0;J[d+92>>2]=c;f=f|h<<8;b=-12416;if((f|0)>(i-c|0)){break Mb}e=e+8|0;h=e+4|0;b=Vm(h,c,f);Nb:{Ob:{if(!b){c=f+J[d+92>>2]|0;J[d+92>>2]=c;break Ob}c=b-12544|0;if(c){break Nb}c=J[d+92>>2]}b=-12416;if((i-c|0)<2){break Mb}f=K[c+1|0];k=K[c|0];c=c+2|0;J[d+92>>2]=c;f=f|k<<8;b=-12416;if((f|0)>(i-c|0)){break Mb}b=Vm(e+16|0,c,f);Pb:{if(!b){c=f+J[d+92>>2]|0;J[d+92>>2]=c;break Pb}c=b-12544|0;if(c){break Nb}c=J[d+92>>2]}b=-12416;if((i-c|0)<2){break Mb}f=K[c+1|0];k=K[c|0];b=c+2|0;J[d+92>>2]=b;c=-12416;f=k<<8|f;if((f|0)>(i-b|0)){break Nb}k=e+52|0;b=Vm(k,b,f);Qb:{if(!b){J[d+92>>2]=f+J[d+92>>2];break Qb}c=b-12544|0;if(c){break Nb}}c=zn(k,h);if(c){break Nb}J[e>>2]=Um(h);c=0}b=c}if(!b){b=M[J[a>>2]+176>>2]>J[J[a+68>>2]+8>>2]<<3>>>0?-31488:0}if(!b){break Kb}Vk(a,47);c=-31488;break zb}e=J[a+68>>2]+132|0;f=Ui-16|0;Ui=f;c=-20352;b=J[d+92>>2];Rb:{if(i-b>>>0<3){break Rb}J[d+92>>2]=b+1;if(K[b|0]!=3){break Rb}J[d+92>>2]=b+2;h=K[b+1|0];J[d+92>>2]=b+3;c=-20096;b=(K[b+2|0]|h<<8)-18&65535;if(b>>>0>10){break Rb}J[f+12>>2]=J[J[(b<<2)+267568>>2]>>2];c=0}Sb:{if(c){break Sb}c=-20096;if(js(e,J[f+12>>2])){break Sb}k=e+172|0;c=-20352;b=J[d+92>>2];l=i-b|0;Tb:{if(l>>>0<2){break Tb}h=b+1|0;J[d+92>>2]=h;b=K[b|0];if(!b|b>>>0>l-1>>>0){break Tb}J[d+92>>2]=b+h;c=BA(e,k,h,b)}}Ui=f+16|0;if(!c){c=J[J[a+68>>2]+132>>2];b=c-1|0;if(b>>>0<=11){b=J[(b<<2)+267520>>2]}else{b=0}if(b){c=tH(a,c)?-31488:0}else{c=-31488}}if(!c){break Kb}Vk(a,47);c=-31488;break zb}Vk(a,47);c=-31488;break zb}if(J[j+16>>2]-5>>>0<4294967293){break Ib}J[d+12>>2]=0;J[d+8>>2]=0;k=K[J[a>>2]+184|0];p=J[a+120>>2];m=J[d+92>>2];b=J[a+20>>2];Ub:{Vb:{if((b|0)==3){c=-31488;h=47;J[d+12>>2]=0;J[d+8>>2]=0;Wb:{if(J[a+20>>2]!=3){break Wb}g=-31488;b=J[d+92>>2];if(i>>>0>>0){break Wb}b=K[b|0]-1&255;b=b>>>0<6?b+3|0:0;J[d+12>>2]=b;if(!b){break Wb}b=K[J[d+92>>2]+1|0];b=(b|0)==1?1:((b|0)==3)<<2;J[d+8>>2]=b;if(!b){break Wb}b=J[d+12>>2];l=-1;e=J[J[a>>2]+96>>2];Xb:{if(!e){break Xb}f=J[e>>2];if(!f){break Xb}while(1){if((b|0)!=(f|0)){f=J[e+4>>2];e=e+4|0;if(f){continue}break Xb}break}l=0}if(l){break Wb}J[d+92>>2]=J[d+92>>2]+2;g=0}if(g){break Ub}b=J[j+16>>2]-1|0;if(b>>>0<=9){b=J[(b<<2)+183984>>2]}else{b=0}g=J[d+8>>2];if((b|0)==(g|0)){break Vb}break Ub}if((b|0)>2){c=-27648;break zb}b=J[j+16>>2]-1|0;if(b>>>0<=9){g=J[(b<<2)+183984>>2]}else{g=0}if((g|0)!=4){break Vb}J[d+12>>2]=4;g=4}c=-31488;h=50;b=J[d+92>>2];if(b>>>0>i-2>>>0){break Ub}e=K[b|0];f=K[b+1|0];b=b+2|0;J[d+92>>2]=b;l=f|e<<8;if((b|0)!=(i-l|0)){break Ub}i=p+(k&2?12:4)|0;j=m-i|0;k=J[d+12>>2];Yb:{if(!k){J[d+88>>2]=36;h=d+16|0;e=Ui-192|0;Ui=e;c=e+104|0;au(c);b=e+12|0;ds(b);J[c+16>>2]=-1732584194;J[c+20>>2]=271733878;J[c+8>>2]=1732584193;J[c+12>>2]=-271733879;J[c>>2]=0;J[c+4>>2]=0;f=$t(c,J[a+68>>2]+1128|0,64);Zb:{if(f){break Zb}f=$t(c,i,j);if(f){break Zb}f=bu(c,h);if(f){break Zb}J[b+24>>2]=-1009589776;J[b+16>>2]=-1732584194;J[b+20>>2]=271733878;J[b+8>>2]=1732584193;J[b+12>>2]=-271733879;J[b>>2]=0;J[b+4>>2]=0;f=cs(b,J[a+68>>2]+1128|0,64);if(f){break Zb}f=cs(b,i,j);if(f){break Zb}f=es(b,h+16|0)}b=e+104|0;if(b){Zi[J[66509]](b,0,88)|0}b=e+12|0;if(b){Zi[J[66509]](b,0,92)|0}if(!(!J[a>>2]|(!a|!f))){J[a+208>>2]=21;J[a+212>>2]=2;H[J[a+204>>2]]=2;H[J[a+204>>2]+1|0]=80;Nm(a,1)}Ui=e+192|0;c=f;if(!c){break Yb}break zb}f=d+16|0;e=Ui-16|0;Ui=e;b=k-3|0;if(b>>>0<=5){b=J[(b<<2)+266328>>2]}else{b=0}if(b){c=J[b+8>>2]}else{c=0}J[d+88>>2]=c&255;c=e+4|0;J[c>>2]=0;J[c+4>>2]=0;J[c+8>>2]=0;_b:{$b:{ac:{h=oo(c,b,0);if(h){break ac}h=-20736;bc:{if(!c){break bc}b=J[c>>2];if(!b){break bc}h=Zi[J[b+16>>2]](J[c+4>>2])|0}if(h){break ac}cc:{h=Uo(c,J[a+68>>2]+1128|0,64);if(h){break cc}h=Uo(c,i,j);if(h){break cc}h=-20736;dc:{if(!c){break dc}b=J[c>>2];if(!b){break dc}h=Zi[J[b+24>>2]](J[c+4>>2],f)|0}Kl(c);if(h){break $b}h=0;break _b}Kl(e+4|0);break $b}Kl(e+4|0);if(!a){break _b}}if(!J[a>>2]){break _b}J[a+208>>2]=21;J[a+212>>2]=2;H[J[a+204>>2]]=2;H[J[a+204>>2]+1|0]=80;Nm(a,1)}Ui=e+16|0;c=h;if(c){break zb}}e=J[J[a+64>>2]+100>>2];if(!e){c=-27648;break zb}c=0;ec:{if((e|0)==-204){break ec}b=J[e+204>>2];if(!b){break ec}c=Zi[J[b+12>>2]](g)|0}if(!c){c=-27904;h=40;break Ub}f=d+16|0;c=J[d+88>>2];h=J[d+92>>2];g=-16e3;b=J[e+204>>2];fc:{if(!b){break fc}if(!c){b=k-3|0;if(b>>>0<=5){b=J[(b<<2)+266328>>2]}else{b=0}if(!b){break fc}c=(b?J[b+8>>2]:0)&255;b=J[e+204>>2]}g=-16128;b=J[b+16>>2];if(!b){break fc}g=Zi[b|0](J[e+208>>2],k,f,c,h,l)|0}c=g;if(!c){break Ib}h=51}Vk(a,h);break zb}J[a+4>>2]=J[a+4>>2]+1;c=0}Ui=d+96|0;return c;case 5:b=J[J[J[a+68>>2]+1120>>2]+16>>2];gc:{if(!(1<>>0<=10:0)){J[a+4>>2]=J[a+4>>2]+1;c=0;break gc}c=So(a);hc:{if(c){break hc}if(J[a+128>>2]!=22){Vk(a,10);c=-30464;break gc}J[a+4>>2]=J[a+4>>2]+1;b=J[a+120>>2];c=K[b|0]==13;J[a+232>>2]=c;if(!c){J[a+176>>2]=1;c=0;break gc}d=J[a+168>>2];e=K[J[a>>2]+184|0]&2?12:4;ic:{if(d>>>0<=e>>>0){break ic}f=b+e|0;b=K[f|0];c=e+b|0;if(d>>>0<=c+2>>>0){break ic}jc:{if(J[a+20>>2]==3){h=c;c=b+f|0;c=K[c+1|0]<<8|K[c+2|0];if(d>>>0<=(h+c|0)+3>>>0){break jc}b=(b+c|0)+2|0}c=0;e=b+e|0;b=b+f|0;if((d|0)==((e+(K[b+1|0]<<8|K[b+2|0])|0)+3|0)){break hc}}}Vk(a,50);c=-31360}}return c;case 6:b=So(a);kc:{if(b){break kc}b=-30464;if(J[a+128>>2]!=22){break kc}c=J[a>>2];if(!(J[a+168>>2]==((K[c+184|0]&2?12:4)|0)&K[J[a+120>>2]]==14)){Vk(a,50);b=-31616;break kc}J[a+4>>2]=J[a+4>>2]+1;b=0;if(!(K[c+184|0]&2)){break kc}iA(a)}break a;case 7:lc:{mc:{b=J[a+68>>2];c=J[J[b+1120>>2]+16>>2];if(!(1<>>0<=10:0)){break mc}c=J[a>>2];if(!(J[a+232>>2]|H[c+184|0]&1)){break mc}nc:{oc:{b=J[b+452>>2];if(b){break oc}b=J[c+84>>2];if(b){break oc}b=7;break nc}d=J[b>>2];if(!d){b=7;break nc}b=7;while(1){c=J[d+8>>2];e=-29952;if(c>>>0>16381-b>>>0){break lc}H[J[a+204>>2]+b|0]=c>>>16;H[(J[a+204>>2]+b|0)+1|0]=c>>>8;H[(J[a+204>>2]+b|0)+2|0]=c;b=b+3|0;hj(b+J[a+204>>2]|0,J[d+12>>2],c);b=b+c|0;d=J[d+340>>2];if(d){continue}break}}c=b-7|0;H[J[a+204>>2]+4|0]=c>>>16;H[J[a+204>>2]+5|0]=c>>>8;H[J[a+204>>2]+6|0]=c;J[a+208>>2]=22;J[a+212>>2]=b;H[J[a+204>>2]]=11;J[a+4>>2]=J[a+4>>2]+1;e=Yr(a);break lc}J[a+4>>2]=J[a+4>>2]+1;e=0}return e;case 8:f=Ui-16|0;Ui=f;pc:{qc:{rc:{c=J[a+68>>2];i=J[c+1120>>2];b=J[i+16>>2];if(b>>>0>10){break rc}if(!(1<>2];J[f+12>>2]=c;H[J[a+204>>2]+4|0]=c>>>8;H[J[a+204>>2]+5|0]=c;b=6;d=J[a+68>>2];e=Um(d+12|0);h=c;c=J[a>>2];d=QH(d+8|0,e,J[a+204>>2]+6|0,h,J[c+24>>2],J[c+28>>2]);if(d){break pc}c=J[a+68>>2];d=c+8|0;e=c+1192|0;h=c+1124|0;c=J[a>>2];d=RH(d,e,1060,h,J[c+24>>2],J[c+28>>2]);if(!d){break qc}break pc}b=4;d=c+132|0;c=J[a>>2];d=OH(d,f+12|0,J[a+204>>2]+4|0,1e3,J[c+24>>2],J[c+28>>2]);if(d){break pc}c=J[a+68>>2];d=c+132|0;e=c+1124|0;h=c+1192|0;c=J[a>>2];d=PH(d,e,h,1024,J[c+24>>2],J[c+28>>2]);if(!d){break qc}break pc}if(J[i+16>>2]-5>>>0<4){d=-27648;c=J[a>>2];if(!J[c+136>>2]){break pc}b=J[c+140>>2];if(!J[c+132>>2]|(!b|!J[c+128>>2])){break pc}J[f+12>>2]=b;if(b-16379>>>0<4294950911){d=-27136;break pc}H[J[a+204>>2]+4|0]=b>>>8;H[J[a+204>>2]+5|0]=b;b=J[a>>2];hj(J[a+204>>2]+6|0,J[b+136>>2],J[b+140>>2]);c=J[a>>2];e=J[c+140>>2];b=e+6|0;sc:{tc:{switch(J[i+16>>2]-5|0){case 0:J[f+12>>2]=0;break sc;case 2:d=xG(a,b,f+12|0,2);if(!d){break sc}break pc;case 1:h=J[J[a+68>>2]+8>>2];J[f+12>>2]=h;d=-27136;c=e+8|0;if(c+h>>>0>16384){break pc}H[J[a+204>>2]+b|0]=h>>>8;H[(e+J[a+204>>2]|0)+7|0]=J[f+12>>2];b=J[a+68>>2];d=Um(b+12|0);e=b+8|0;b=c;c=J[a>>2];d=QH(e,d,b+J[a+204>>2]|0,J[f+12>>2],J[c+24>>2],J[c+28>>2]);if(!d){break sc}break pc;case 3:break tc;default:break pc}}d=OH(J[a+68>>2]+132|0,f+12|0,J[a+204>>2]+b|0,16378-e|0,J[c+24>>2],J[c+28>>2]);if(d){break pc}}h=Ui-16|0;Ui=h;e=J[a+68>>2];j=J[e+444>>2];g=J[a>>2];d=J[(j?e+448|0:g+132|0)>>2];k=J[g+128>>2];c=-27648;uc:{vc:{wc:{xc:{yc:{zc:{switch(J[i+16>>2]-5|0){case 0:c=d<<8|(d&65280)>>>8;H[e+1192|0]=c;H[e+1193|0]=c>>>8;if(d>>>0<=1058){break yc}c=-28928;break uc;case 1:c=RH(e+8|0,e+1194|0,1058,h+12|0,J[g+24>>2],J[g+28>>2]);if(c){break uc}c=J[h+12>>2];g=c<<8|(c&65280)>>>8;H[e+1192|0]=g;H[e+1193|0]=g>>>8;break xc;case 2:break wc;case 3:break zc;default:break uc}}c=PH(e+132|0,h+8|0,e+1194|0,1058,J[g+24>>2],J[g+28>>2]);if(c){break uc}c=J[h+8>>2];g=c<<8|(c&65280)>>>8;H[e+1192|0]=g;H[e+1193|0]=g>>>8;break xc}ij(e+1194|0,0,d);c=d}g=c+1194|0;if((c|0)<=1056){break vc}c=-28928;break uc}H[e+1192|0]=0;H[e+1193|0]=48;g=1242}c=g+e|0;g=d<<8|(d&65280)>>>8;H[c|0]=g;H[c+1|0]=g>>>8;c=c+2|0;if(d>>>0>(e+2252|0)-c>>>0){c=-28928;break uc}c=hj(c,j?j:k,d);e=J[a+68>>2];J[e+1124>>2]=((c+d|0)-e|0)-1192;c=0}Ui=h+16|0;d=c;if(!c){break qc}break pc}d=-27648;if(J[i+16>>2]!=1){break pc}b=4;d=xG(a,4,f+12|0,0);if(d){break pc}}c=J[f+12>>2];J[a+208>>2]=22;J[a+212>>2]=b+c;H[J[a+204>>2]]=16;J[a+4>>2]=J[a+4>>2]+1;d=Yr(a)}Ui=f+16|0;return d;case 9:f=Ui+-64|0;Ui=f;c=J[J[a+68>>2]+1120>>2];J[f+60>>2]=0;b=sH(a);Ac:{if(b){break Ac}b=J[c+16>>2];if(!(1<>>0<=10:0)){J[a+4>>2]=J[a+4>>2]+1;b=0;break Ac}Bc:{Cc:{if(!J[a+232>>2]){break Cc}Dc:{d=J[a+68>>2];if(d){b=J[d+452>>2];if(b){break Dc}}c=J[J[a>>2]+84>>2];b=c;if(!b|!J[b>>2]){break Cc}if(!d){break Bc}b=J[d+452>>2];if(b){break Bc}b=c;if(b){break Bc}b=-30208;break Ac}if(J[b>>2]){break Bc}}J[a+4>>2]=J[a+4>>2]+1;b=0;break Ac}if(!J[b+4>>2]){b=-30208;break Ac}Zi[J[d+1108>>2]](a,f);b=J[a+68>>2];Ec:{if(J[a+20>>2]!=3){c=4;d=0;Fc:{Gc:{if(b){b=J[b+452>>2];if(b){break Gc}}b=J[J[a>>2]+84>>2];if(b){break Gc}b=0;break Fc}b=J[b+4>>2]}Hc:{if(!b){break Hc}b=J[b>>2];if(!b){break Hc}d=Zi[J[b+12>>2]](4)|0}if(!d){g=36;c=0;i=f;break Ec}g=20;i=f+16|0;break Ec}b=J[J[b+1120>>2]+12>>2]==7;H[J[a+204>>2]+4|0]=b?5:4;c=b?7:6;d=0;Ic:{Jc:{b=J[a+68>>2];if(b){b=J[b+452>>2];if(b){break Jc}}b=J[J[a>>2]+84>>2];if(b){break Jc}b=0;break Ic}b=J[b+4>>2]}Kc:{if(!b){break Kc}e=J[b>>2];if(!e){break Kc}d=Zi[J[e+12>>2]](1)|0}if(d){b=1}else{d=0;Lc:{if(!b){break Lc}b=J[b>>2];if(!b){break Lc}d=Zi[J[b+12>>2]](4)|0}b=d?3:0}H[J[a+204>>2]+5|0]=b;e=2;i=f}Mc:{Nc:{Oc:{b=J[a+68>>2];if(!b){break Oc}h=J[b+452>>2];if(!h){break Oc}b=J[a>>2];break Nc}b=J[a>>2];h=J[b+84>>2];if(h){break Nc}d=0;break Mc}d=J[h+4>>2]}j=(J[a+204>>2]+e|0)+6|0;k=f+60|0;l=J[b+24>>2];p=J[b+28>>2];b=-16e3;h=J[d>>2];Pc:{if(!h){break Pc}if(!g){h=c-3|0;if(h>>>0<=5){h=J[(h<<2)+266328>>2]}else{h=0}if(!h){break Pc}g=(h?J[h+8>>2]:0)&255;h=J[d>>2]}b=-16128;h=J[h+20>>2];if(!h){break Pc}b=Zi[h|0](J[d+4>>2],c,i,g,j,k,l,p)|0}if(b){break Ac}H[(J[a+204>>2]+e|0)+4|0]=J[f+60>>2]>>>8;H[(J[a+204>>2]+e|0)+5|0]=J[f+60>>2];b=J[f+60>>2];J[a+208>>2]=22;J[a+212>>2]=(b+e|0)+6;H[J[a+204>>2]]=15;J[a+4>>2]=J[a+4>>2]+1;b=Yr(a)}Ui=f- -64|0;break a;case 10:J[a+208>>2]=20;J[a+212>>2]=1;H[J[a+204>>2]]=1;J[a+4>>2]=J[a+4>>2]+1;return Yr(a);case 14:break f;case 13:break g;case 11:break i;case 15:break e;default:break b}}d=J[a+192>>2];e=J[a>>2];c=J[e+184>>2]&2;b=d+(c?13:5)|0;J[a+200>>2]=b;J[a+196>>2]=d+(c?11:3);J[a+188>>2]=d+(c?3:-8);c=J[a+84>>2];if(!(!c|J[a+20>>2]<2)){b=(J[c+4>>2]+b|0)-J[c+8>>2]|0}J[a+204>>2]=b;Zi[J[J[a+68>>2]+1112>>2]](a,b+4|0,J[e+184>>2]&1);b=J[a+20>>2]?12:36;J[a+248>>2]=b;c=J[a+204>>2];hj(a+252|0,c+4|0,b);J[a+208>>2]=22;J[a+212>>2]=b+4;H[c|0]=20;c=J[a+68>>2];Qc:{if(J[c+2252>>2]){b=J[a>>2];if(H[b+184|0]&1){break Qc}J[a+4>>2]=15;break Qc}J[a+4>>2]=J[a+4>>2]+1;b=J[a>>2]}Rc:{Sc:{if(K[b+184|0]&2){J[c+512>>2]=J[a+76>>2];b=J[a+224>>2];J[c+516>>2]=J[a+220>>2];J[c+520>>2]=b;H[a+226|0]=0;H[a+227|0]=0;H[a+222|0]=0;H[a+223|0]=0;H[a+224|0]=0;H[a+225|0]=0;b=K[a+221|0]+1|0;H[a+221|0]=b;if((b|0)!=(b&255)){c=K[a+220|0]+1|0;H[a+220|0]=c;b=-27520;if((c|0)!=(c&255)){break Rc}}b=J[a>>2];break Sc}J[a+220>>2]=0;J[a+224>>2]=0}J[a+76>>2]=J[a+84>>2];J[a+56>>2]=J[a+64>>2];if(K[b+184|0]&2){b=J[b+152>>2];J[J[a+68>>2]+488>>2]=b;c=J[a+92>>2];if(c){Zi[c|0](J[a+88>>2],b>>>2|0,b)}H[J[a+68>>2]+492|0]=J[a+128>>2]!=22?2:K[J[a+120>>2]]==20?3:2}b=Yr(a);if(b){break Rc}if(K[J[a>>2]+184|0]&2){b=_r(a);if(b){break Rc}}b=0}break a}b=So(a);Tc:{if(b){break Tc}if(J[a+128>>2]!=20){b=-30464;if(!J[a>>2]){break Tc}J[a+208>>2]=21;J[a+212>>2]=2;H[J[a+204>>2]]=2;H[J[a+204>>2]+1|0]=10;Nm(a,1);break Tc}J[a+72>>2]=J[a+84>>2];J[a+52>>2]=J[a+64>>2];c=J[a>>2];Uc:{if(K[c+184|0]&2){J[a+152>>2]=0;J[a+156>>2]=0;J[a+160>>2]=0;J[a+164>>2]=0;d=L[a+140>>1]+1|0;I[a+140>>1]=d;b=-27520;if((d|0)==(d&65535)){break Uc}break Tc}b=J[a+104>>2];H[b|0]=0;H[b+1|0]=0;H[b+2|0]=0;H[b+3|0]=0;H[b+4|0]=0;H[b+5|0]=0;H[b+6|0]=0;H[b+7|0]=0;c=J[a>>2]}b=J[c+184>>2];J[a+4>>2]=J[a+4>>2]+1;c=J[a+108>>2];b=b&2;d=c+(b?13:5)|0;J[a+120>>2]=d;J[a+116>>2]=d;J[a+112>>2]=c+(b?11:3);J[a+104>>2]=c+(b?3:-8);b=0}break a}b=Ui-16|0;Ui=b;Zi[J[J[a+68>>2]+1112>>2]](a,b+3|0,(J[J[a>>2]+184>>2]^-1)&1);c=So(a);Vc:{if(c){break Vc}if(J[a+128>>2]!=22){c=-30464;if(!J[a>>2]){break Vc}J[a+208>>2]=21;J[a+212>>2]=2;H[J[a+204>>2]]=2;H[J[a+204>>2]+1|0]=10;Nm(a,1);break Vc}d=J[a>>2];Wc:{Xc:{c=J[a+120>>2];if(K[c|0]==20){e=K[d+184|0]&2?12:4;if(J[a+168>>2]==(e+12|0)){break Xc}break Wc}if(d){break Wc}c=-32384;break Vc}H[b+15|0]=0;c=c+e|0;H[b+15|0]=K[b+15|0]|K[c|0]^K[b+3|0];H[b+15|0]=K[b+15|0]|K[c+1|0]^K[b+4|0];H[b+15|0]=K[b+15|0]|K[c+2|0]^K[b+5|0];H[b+15|0]=K[b+15|0]|K[c+3|0]^K[b+6|0];H[b+15|0]=K[b+15|0]|K[c+4|0]^K[b+7|0];H[b+15|0]=K[b+15|0]|K[c+5|0]^K[b+8|0];H[b+15|0]=K[b+15|0]|K[c+6|0]^K[b+9|0];H[b+15|0]=K[b+15|0]|K[c+7|0]^K[b+10|0];H[b+15|0]=K[b+15|0]|K[c+8|0]^K[b+11|0];H[b+15|0]=K[b+15|0]|K[c+9|0]^K[b+12|0];H[b+15|0]=K[b+15|0]|K[c+10|0]^K[b+13|0];H[b+15|0]=K[b+15|0]|K[c+11|0]^K[b+14|0];if(K[b+15|0]){J[a+208>>2]=21;J[a+212>>2]=2;H[J[a+204>>2]]=2;H[J[a+204>>2]+1|0]=50;Nm(a,1);c=-32384;break Vc}J[a+248>>2]=12;c=K[b+11|0]|K[b+12|0]<<8|(K[b+13|0]<<16|K[b+14|0]<<24);H[a+272|0]=c;H[a+273|0]=c>>>8;H[a+274|0]=c>>>16;H[a+275|0]=c>>>24;c=K[b+7|0]|K[b+8|0]<<8|(K[b+9|0]<<16|K[b+10|0]<<24);e=K[b+3|0]|K[b+4|0]<<8|(K[b+5|0]<<16|K[b+6|0]<<24);H[a+264|0]=e;H[a+265|0]=e>>>8;H[a+266|0]=e>>>16;H[a+267|0]=e>>>24;H[a+268|0]=c;H[a+269|0]=c>>>8;H[a+270|0]=c>>>16;H[a+271|0]=c>>>24;Yc:{if(J[J[a+68>>2]+2252>>2]){if(H[d+184|0]&1){break Yc}J[a+4>>2]=10;break Yc}J[a+4>>2]=J[a+4>>2]+1}c=0;if(!(K[d+184|0]&2)){break Vc}iA(a);break Vc}J[a+208>>2]=21;J[a+212>>2]=2;H[J[a+204>>2]]=2;H[J[a+204>>2]+1|0]=50;Nm(a,1);c=-32384}Ui=b+16|0;return c}J[a+4>>2]=15;break d}d=J[J[a+68>>2]+2252>>2];if(J[a+8>>2]==1){J[a+8>>2]=2;J[a+12>>2]=0}b=J[a+60>>2];if(b){J[J[a+64>>2]+128>>2]=J[b+128>>2];c=J[b+100>>2];if(c){hn(c);cj(J[b+100>>2]);J[b+100>>2]=0}cj(J[b+108>>2]);Zi[J[66509]](b,0,136)|0;cj(J[a+60>>2])}b=J[a+64>>2];J[a+64>>2]=0;J[a+60>>2]=b;c=J[a>>2];e=J[c+36>>2];if(!(d|(!e|!J[b+16>>2]))){Zi[e|0](J[c+40>>2],b)|0;c=J[a>>2]}Zc:{if(!(!(K[c+184|0]&2)|!J[J[a+68>>2]+496>>2])){b=J[a+92>>2];if(!b){break Zc}Zi[b|0](J[a+88>>2],0,0);break Zc}yG(a)}J[a+4>>2]=J[a+4>>2]+1}b=0}return b}return b}function Yna(a){a=a|0;var b=0,c=0,d=0,e=0,f=0,g=0,h=0,i=0,j=0,k=Q(0),l=0,m=0,n=0,o=0,p=0,q=Q(0),r=0,s=0,t=0,u=0,v=0,w=Q(0),x=0,y=Q(0),z=0,A=Q(0),C=Q(0),D=Q(0),E=0,F=Q(0),G=Q(0),O=Q(0),S=Q(0),U=Q(0),X=Q(0),Y=Q(0),_=Q(0),$=Q(0),aa=Q(0),ba=Q(0),ca=Q(0),da=Q(0),ea=Q(0),fa=Q(0),ga=Q(0),ha=Q(0),ia=Q(0),ja=Q(0),ka=Q(0),la=Q(0),ma=Q(0),na=Q(0),oa=Q(0),pa=Q(0),qa=Q(0),ra=0,sa=0,ta=0,ua=0,va=0,wa=0,xa=0,ya=0,za=0,Aa=0,Ba=0,Ca=0,Da=0,Ea=0,Fa=0,Ga=0,Ha=0,Ia=0,Ja=0,Ka=0,La=0,Ma=0,Na=0,Oa=0,Pa=0,Qa=0,Ra=0,Sa=0,Ta=0,Ua=0,Va=0,Wa=0,Xa=0,Ya=0,Za=0,_a=0,$a=0,ab=0,bb=0,cb=0;a:{if(K[a+152|0]){u=Ui-80|0;Ui=u;i=a;J[a+144>>2]=0;J[a+148>>2]=0;ua=1;H[a+152|0]=1;a=bl();b=J[i+456>>2];f=J[i+460>>2];J[i+456>>2]=a;d=Yi;J[i+460>>2]=d;k=N[i+496>>2];q=Q((+(a-b>>>0)+ +(d-((a>>>0>>0)+f|0)>>>0)*4294967296)/1e6);C=k>2];b:{if(a){q=Q(C+N[i+464>>2]);k=Q(Q(1)/Q(a>>>0));C=k=Q(0)){a=~~k>>>0;break c}a=0}ua=a;N[i+464>>2]=q-Q(Q(ua>>>0)*C);if(!ua){break b}}k=Q(C*Q(1e6));d:{if(k=Q(0)){a=~~k>>>0;if(Q(R(k))>=Q(1)){b=~~(k>Q(0)?Q(T(Q(V(Q(k*Q(2.3283064365386963e-10)))),Q(4294967296))):Q(W(Q(Q(k-Q(~~k>>>0>>>0))*Q(2.3283064365386963e-10)))))>>>0}else{b=0}break d}a=0;b=0}Pa=a;Qa=b;k=Q(Q(1)/C);e:{if(k=Q(0)){break e}}Ra=i+296|0;Sa=i+284|0;Ta=J[53386];Ua=J[53388];while(1){J[u+16>>2]=0;Da=bl();Va=Yi;f:{g:{if(!(!kv(J[i+224>>2],3)|(K[J[i+228>>2]+2504|0]&16)>>>4)){a=K[i+451|0];h:{i:{if(K[i+448|0]){break i}H[i+448|0]=1;if(a&1){break i}a=J[245446];if(!(!a|!J[a+12>>2])){J[a+33908>>2]=1}if(!(H[i+451|0]&1)){break h}break g}if(a&1){break g}}ON(J[i+420>>2]);vp(1e5);break f}if(K[i+448|0]!=1){break g}H[i+448|0]=0;a=J[245446];if(!(!a|!J[a+12>>2])){J[a+33908>>2]=0}}J[u+76>>2]=0;J[u+72>>2]=0;J[u+32>>2]=0;a=J[i+300>>2];b=Ui-32|0;Ui=b;J[b+28>>2]=0;Jm(J[a+6192>>2],J[a+6196>>2],179,a);GC(J[a+8420>>2]);J[74508]=J[74508]+J[J[a>>2]+24>>2];a=J[J[a>>2]+24>>2];J[b+8>>2]=a;J[b+12>>2]=0;J[b+16>>2]=a;J[b+20>>2]=0;Ui=b+32|0;J[u+32>>2]=0;ON(J[i+420>>2]);j:{k:{if(K[i+451|0]){break k}if(!kv(J[i+224>>2],3)){break k}break j}GC(J[i+220>>2]);J[u+20>>2]=0;b=u+32|0;J[b>>2]=0;J[b+4>>2]=0;J[b+24>>2]=0;J[b+28>>2]=0;J[b+16>>2]=0;J[b+20>>2]=0;J[b+8>>2]=0;J[b+12>>2]=0;J[u+36>>2]=J[i+300>>2];J[u+40>>2]=J[i+156>>2];a=Sa;g=J[i+284>>2];l:{if(!g){f=J[i+288>>2];if(f){J[b>>2]=f?J[f+124>>2]:0;OP();wB(J[i+288>>2])}a=J[i+292>>2];if(a){wB(a)}a=Ra;g=J[a>>2];if(!g){break l}}J[b>>2]=g?J[g+124>>2]:0;OP();wB(J[a>>2])}BJ();m:{n:{if(K[i+449|0]==1){a=u+32|0;PN(J[i+420>>2]+2372|0,a);if(QN(a,256)){break n}}if(kv(J[i+224>>2],1)){break m}}H[i+152|0]=0;break j}b=0;o:{a=J[i+424>>2];if(!J[a+64>>2]){break o}f=J[a+76>>2];if(!f){break o}p:{m=J[a+44>>2];if(m){while(1){g=J[J[a+40>>2]+(b<<2)>>2];if((g|0)!=-1){while(1){c=J[a+48>>2]+P(g,12)|0;q:{if(K[c+4|0]!=1){break q}d=J[c>>2];r:{n=J[f+16>>2];h=J[f+12>>2];if((n|0)==(h|0)){break r}n=n-h>>2;n=n>>>0<=1?1:n;g=0;while(1){l=J[h+(g<<2)>>2];if((d|0)!=K[l+344|0]){g=g+1|0;if((n|0)!=(g|0)){continue}break r}break}JC(f,l,d);break q}h=Km(f,d);if(!h){break q}d=J[f+16>>2];if((d|0)==J[f+20>>2]){break p}J[f+16>>2]=d+4;J[d>>2]=h}g=J[c+8>>2];if((g|0)!=-1){continue}break}m=J[a+44>>2]}b=b+1|0;if(m>>>0>b>>>0){continue}break}b=m<<2}else{b=0}ij(J[a+40>>2],255,b);J[a+60>>2]=-1;J[a+64>>2]=0;J[a+52>>2]=J[a+48>>2];break o}Z(112520,53895,557,53220);B()}n=J[i+428>>2];g=0;x=0;v=0;D=Q(0);e=Ui-160|0;Ui=e;J[e+156>>2]=0;b=J[n+44>>2];if(b){while(1){a=J[J[n+40>>2]+(g<<2)>>2];if((a|0)!=-1){while(1){a=J[n+48>>2]+P(a,968)|0;J[a+792>>2]=0;J[a+796>>2]=0;J[a+532>>2]=0;N[a+12>>2]=N[a+8>>2];J[a+8>>2]=0;I[a+952>>1]=L[a+952>>1]&64739;a=J[a+960>>2];if((a|0)!=-1){continue}break}b=J[n+44>>2]}g=g+1|0;if(g>>>0>>0){continue}break}}p=J[J[n>>2]+72>>2];c=J[n+4>>2];s:{if(!c){break s}f=c+44|0;if(!PN(J[c>>2],f)){break s}a=J[c+84>>2];if((a|0)!=J[c+88>>2]){b=0;while(1){h=(b<<4)+a|0;l=QN(f,J[(J[h>>2]<<2)+863584>>2]);o=J[n+44>>2];t:{if(!o){break t}d=J[h+8>>2];h=J[h+12>>2];a=J[J[n+40>>2]+(mxa(d,h,o)<<2)>>2];if((a|0)==-1){break t}k=l?Q(1):Q(0);l=J[n+48>>2];while(1){a=l+P(a,968)|0;if(J[a>>2]!=(d|0)|J[a+4>>2]!=(h|0)){a=J[a+960>>2];if((a|0)!=-1){continue}break t}break}q=N[a+8>>2];if(!(k>(q>=Q(0)?q:Q(-q)))){break t}N[a+8>>2]=k}b=b+1|0;a=J[c+84>>2];if(b>>>0>2]-a>>4>>>0){continue}break}}a=f;b=J[a+4>>2];J[c+4>>2]=J[a>>2];J[c+8>>2]=b;b=J[a+36>>2];J[c+36>>2]=J[a+32>>2];J[c+40>>2]=b;b=J[a+28>>2];J[c+28>>2]=J[a+24>>2];J[c+32>>2]=b;b=J[a+20>>2];J[c+20>>2]=J[a+16>>2];J[c+24>>2]=b;b=J[a+12>>2];J[c+12>>2]=J[a+8>>2];J[c+16>>2]=b}f=J[n+36>>2];u:{if(!f){break u}a=0;if(!(!f|J[p+2412>>2]>=0)){hj(f,p+2928|0,260);H[p+2928|0]=0;J[p+3184>>2]=0;a=1}v:{if(!a){break v}l=J[f+524>>2];r=J[f+528>>2];if((l|0)==(r|0)){break v}m=0;while(1){d=(m<<4)+l|0;w:{if(J[d>>2]){break w}c=J[n+44>>2];if(!c){break w}b=J[d+8>>2];o=J[d+12>>2];a=J[J[n+40>>2]+(mxa(b,o,c)<<2)>>2];if((a|0)==-1){break w}c=J[n+48>>2];x:{while(1){y:{d=c+P(a,968)|0;a=d;if(J[a>>2]==(b|0)&J[a+4>>2]==(o|0)){if(J[f+256>>2]){break y}h=0;break x}a=J[d+960>>2];if((a|0)!=-1){continue}break w}break}b=d+536|0;a=0;while(1){H[a+b|0]=K[a+f|0];a=a+1|0;h=J[f+256>>2];if(a>>>0>>0){continue}break}l=J[f+524>>2];r=J[f+528>>2]}J[d+792>>2]=h;J[d+796>>2]=(h|0)!=0}m=m+1|0;if(m>>>0>4>>>0){continue}break}}a=0;c=f+260|0;b=c;if(!(!b|J[p+2412>>2]>=0)){hj(b,p+3188|0,264);J[p+3444>>2]=0;H[p+3188|0]=0;H[p+3448|0]=K[p+3448|0]&254;a=1}if(!a){break u}j=J[f+528>>2];l=J[f+524>>2];if((j|0)==(l|0)){break u}h=0;while(1){d=(h<<4)+l|0;z:{if(J[d>>2]!=1){break z}o=J[n+44>>2];if(!o){break z}b=J[d+8>>2];m=J[d+12>>2];a=J[J[n+40>>2]+(mxa(b,m,o)<<2)>>2];if((a|0)==-1){break z}o=J[n+48>>2];A:{while(1){B:{d=o+P(a,968)|0;a=d;if(J[a>>2]==(b|0)&J[a+4>>2]==(m|0)){if(J[f+516>>2]){break B}m=0;break A}a=J[d+960>>2];if((a|0)!=-1){continue}break z}break}b=d+536|0;a=0;while(1){H[a+b|0]=K[a+c|0];a=a+1|0;m=J[f+516>>2];if(a>>>0>>0){continue}break}l=J[f+524>>2];j=J[f+528>>2]}J[d+792>>2]=m;J[d+796>>2]=(K[f+520|0]|(m|0)!=0)&1}h=h+1|0;if(h>>>0>4>>>0){continue}break}}h=0;d=J[n+8>>2];C:{if(!d){r=0;j=0;f=0;break C}r=0;j=0;m=0;b=J[d>>2];c=d+20|0;a=c;if(!(!b|!a|J[b+16>>2]>=0)){f=J[b+4>>2];J[a>>2]=J[b>>2];J[a+4>>2]=f;f=J[b+12>>2];J[a+8>>2]=J[b+8>>2];J[a+12>>2]=f;m=1}f=0;if(!m){break C}l=J[d+8>>2];j=J[d+24>>2];o=J[d+4>>2];r=J[d+20>>2];a=J[d+36>>2];if((a|0)!=J[d+40>>2]){m=0;while(1){D:{E:{F:{G:{f=(m<<4)+a|0;b=J[f>>2];switch(b|0){case 1:break F;case 0:break G;default:break E}}k=Q(J[d+28>>2]-J[d+12>>2]|0);break D}k=Q(J[d+12>>2]-J[d+28>>2]|0);break D}if(c){a=J[(b<<2)+864096>>2];a=J[(c+((a|0)/32<<2)|0)+12>>2]>>>a&1}else{a=0}k=a?Q(1):Q(0)}g=J[n+44>>2];H:{if(!g){break H}b=J[f+8>>2];f=J[f+12>>2];a=J[J[n+40>>2]+(mxa(b,f,g)<<2)>>2];if((a|0)==-1){break H}k=kQ(1)?Q(1):k;g=J[n+48>>2];while(1){a=g+P(a,968)|0;if(J[a>>2]!=(b|0)|J[a+4>>2]!=(f|0)){a=J[a+960>>2];if((a|0)!=-1){continue}break H}break}q=N[a+8>>2];if(!((q>=Q(0)?q:Q(-q))<(k>=Q(0)?k:Q(-k)))){break H}N[a+8>>2]=k}m=m+1|0;a=J[d+36>>2];if(m>>>0>2]-a>>4>>>0){continue}break}}v=j-l|0;x=r-o|0;a=J[c+4>>2];J[d+4>>2]=J[c>>2];J[d+8>>2]=a;a=J[c+12>>2];J[d+12>>2]=J[c+8>>2];J[d+16>>2]=a;f=1}I:{J:{K:{L:{M:{N:{a=J[n+12>>2];if((a|0)!=J[n+16>>2]){while(1){c=J[(h<<2)+a>>2];O:{if(!c){break O}m=J[c+312>>2];if(m){b=0;while(1){a=J[J[c+308>>2]+(b<<2)>>2];if((a|0)!=-1){while(1){a=J[c+316>>2]+P(a,968)|0;J[a+792>>2]=0;J[a+796>>2]=0;J[a+532>>2]=0;N[a+12>>2]=N[a+8>>2];J[a+8>>2]=0;I[a+952>>1]=L[a+952>>1]&64739;a=J[a+960>>2];if((a|0)!=-1){continue}break}m=J[c+312>>2]}b=b+1|0;if(m>>>0>b>>>0){continue}break}}l=K[c+345|0];b=l&1;g=J[c>>2];a=g;if(a){d=H[a+147|0]<0}else{d=0}a=d;P:{if(!(b|!a)){b=e+16|0;KC(n,g,b);J[c+340>>2]=bv(b);a=K[c+345|0]&-6;H[c+345|0]=d|a;l=a|1;break P}H[c+345|0]=a|l&254;if(!b&(a^-1)){break O}}Q:{b=J[n>>2];d=J[b+12>>2];R:{if(!d){break R}m=J[b+8>>2];o=J[c+340>>2];a=J[m+((o>>>0)%(d>>>0)<<2)>>2];if((a|0)!=-1){t=J[b+16>>2];while(1){a=t+P(a,184)|0;if((o|0)==J[a>>2]){break Q}a=J[a+180>>2];if((a|0)!=-1){continue}break}}o=J[215892];a=J[m+((o>>>0)%(d>>>0)<<2)>>2];if((a|0)==-1){break R}b=J[b+16>>2];while(1){a=b+P(a,184)|0;if((o|0)==J[a>>2]){break Q}a=J[a+180>>2];if((a|0)!=-1){continue}break}}if(l&4){break O}J[e>>2]=K[c+344|0];dj(3,86420,128710,e);H[c+345|0]=K[c+345|0]|4;break O}o=c+148|0;if((g|0)!=0&(o|0)!=0){hj(o,g,144);H[g+140|0]=K[g+140|0]&252}b=L[a+78>>1];d=L[a+96>>1];l=L[a+30>>1];S:{if((l|0)==65535){break S}m=L[a+12>>1];if((m|0)==65535){break S}if(l>>>0>=32){break K}if(m>>>0>=32){break L}m=o+(m<<2)|0;k=N[m>>2];q=Q(k*k);l=o+(l<<2)|0;k=N[l>>2];q=Q(q+Q(k*k));k=N[a+8>>2];if(!(q<=Q(k*k))){break S}J[m>>2]=0;J[l>>2]=0}T:{if((d|0)==65535|(b|0)==65535){break T}if(d>>>0>=32){break M}if(b>>>0>=32){break N}b=o+(b<<2)|0;k=N[b>>2];q=Q(k*k);d=o+(d<<2)|0;k=N[d>>2];q=Q(q+Q(k*k));k=N[a+8>>2];if(!(q<=Q(k*k))){break T}J[b>>2]=0;J[d>>2]=0}m=J[c+292>>2];if((m|0)!=J[c+296>>2]){t=a+12|0;b=0;while(1){U:{V:{W:{X:{Y:{Z:{m=(b<<4)+m|0;a=J[m>>2];switch(a-25|0){case 0:break X;case 2:break Y;case 1:break Z;default:break W}}l=K[c+288|0];if(!(l&1)){break W}break V}l=J[c+312>>2];if(!l){break U}d=J[m+8>>2];m=J[m+12>>2];a=J[J[c+308>>2]+(mxa(d,m,l)<<2)>>2];if((a|0)==-1){break U}l=J[c+316>>2];while(1){a=l+P(a,968)|0;if(J[a>>2]!=(d|0)|J[a+4>>2]!=(m|0)){a=J[a+960>>2];if((a|0)!=-1){continue}break U}break}hj(a+808|0,o,144);I[a+952>>1]=L[a+952>>1]|16;break U}l=K[c+288|0];if(l&2){break V}}l=t+P(a,6)|0;a=L[l>>1];if((a|0)==65535){break U}k=Q(0);_:{$:{aa:{ba:{d=K[l+4|0];switch((d&3)-1|0){case 2:break _;case 1:break $;case 0:break aa;default:break ba}}k=N[o+(a<<2)>>2];k=d&4?Q(-k):k;k=d&8?Q(Q(k+Q(1))*Q(.5)):k;if(!(d&16)){break _}k=kQ(1)?Q(1):k;break _}if(o){a=J[(o+(a>>>3&536870908)|0)+128>>2]>>>a&1}else{a=0}k=a?Q(1):Q(0);break _}H[e+16|0]=0;if(o){H[e+16|0]=K[(a+o|0)+136|0]}if(!o){break _}k=L[l+2>>1]&K[e+16|0]?Q(1):Q(0)}s=J[c+312>>2];if(!s){break U}d=J[m+8>>2];m=J[m+12>>2];a=J[J[c+308>>2]+(mxa(d,m,s)<<2)>>2];if((a|0)==-1){break U}s=J[c+316>>2];while(1){a=s+P(a,968)|0;if(J[a>>2]!=(d|0)|J[a+4>>2]!=(m|0)){a=J[a+960>>2];if((a|0)!=-1){continue}break U}break}q=N[a+8>>2];if((q>=Q(0)?q:Q(-q))<(k>=Q(0)?k:Q(-k))){N[a+8>>2]=k;q=k}d=L[a+952>>1];I[a+952>>1]=d&64511;if(K[l+4|0]&3|N[a+12>>2]==q){break U}I[a+952>>1]=d|1024;break U}s=J[c+312>>2];if(!s){break U}d=J[m+8>>2];m=J[m+12>>2];a=J[J[c+308>>2]+(mxa(d,m,s)<<2)>>2];if((a|0)==-1){break U}s=J[c+316>>2];while(1){a=s+P(a,968)|0;if(J[a>>2]!=(d|0)|J[a+4>>2]!=(m|0)){a=J[a+960>>2];if((a|0)!=-1){continue}break U}break}d=L[a+952>>1]&-5|l<<2&4;I[a+952>>1]=d;sa=d&65527;d=K[c+288|0]<<2&8;I[a+952>>1]=sa|d;if(!d){break U}d=e+16|0;KC(n,g,d);d=ek(a+536|0,d,256);J[a+804>>2]=0;J[a+792>>2]=d}b=b+1|0;m=J[c+292>>2];if(b>>>0>2]-m>>4>>>0){continue}break}}hj(c+4|0,o,144)}h=h+1|0;a=J[n+12>>2];if(h>>>0>2]-a>>2>>>0){continue}break}}ca:{o=J[n+28>>2];da:{if(!o){break da}b=0;c=J[o>>2];d=o+492|0;a=d;if(!(!c|!a|J[c+488>>2]>=0)){hj(a,c,488);b=1}if(!b){break da}b=J[o+980>>2];m=J[o+984>>2];if(!(!J[n+44>>2]|(b|0)==(m|0))){l=0;while(1){h=J[n+44>>2];ea:{if(!h){break ea}t=(l<<4)+b|0;c=J[t+8>>2];t=J[t+12>>2];a=J[J[n+40>>2]+(mxa(c,t,h)<<2)>>2];if((a|0)==-1){break ea}h=J[n+48>>2];while(1){a=h+P(a,968)|0;if(J[a>>2]!=(c|0)|J[a+4>>2]!=(t|0)){a=J[a+960>>2];if((a|0)!=-1){continue}break ea}break}c=J[o+976>>2];if((c|0)>=12){break ca}J[a+8>>2]=0;if((c|0)>0){b=d;h=J[b+4>>2];J[a+48>>2]=J[b>>2];J[a+52>>2]=h;J[a+88>>2]=J[b+40>>2];h=J[b+36>>2];J[a+80>>2]=J[b+32>>2];J[a+84>>2]=h;g=J[b+28>>2];h=J[b+24>>2];J[a+72>>2]=h;J[a+76>>2]=g;m=J[b+20>>2];g=a- -64|0;J[g>>2]=J[b+16>>2];J[g+4>>2]=m;g=J[b+12>>2];b=J[b+8>>2];J[a+56>>2]=b;J[a+60>>2]=g;m=J[o+496>>2];J[a+28>>2]=h;J[a+20>>2]=b;J[a+24>>2]=g;J[a+32>>2]=J[a+76>>2];I[a+952>>1]=L[a+952>>1]|256;if(m>>>0<=2){J[a+8>>2]=1065353216}fa:{if((c|0)==1){break fa}g=a+48|0;m=1;b=c-1|0;s=b&1;if((c|0)!=2){E=b&-2;b=0;while(1){t=P(m,44);h=t+g|0;c=d+t|0;z=J[c+4>>2];J[h>>2]=J[c>>2];J[h+4>>2]=z;J[h+40>>2]=J[c+40>>2];z=J[c+36>>2];J[h+32>>2]=J[c+32>>2];J[h+36>>2]=z;z=J[c+28>>2];J[h+24>>2]=J[c+24>>2];J[h+28>>2]=z;z=J[c+20>>2];J[h+16>>2]=J[c+16>>2];J[h+20>>2]=z;z=J[c+12>>2];J[h+8>>2]=J[c+8>>2];J[h+12>>2]=z;if(M[c+4>>2]<=2){J[a+8>>2]=1065353216}c=t+44|0;h=c+g|0;c=c+d|0;t=J[c+4>>2];J[h>>2]=J[c>>2];J[h+4>>2]=t;J[h+40>>2]=J[c+40>>2];t=J[c+36>>2];J[h+32>>2]=J[c+32>>2];J[h+36>>2]=t;t=J[c+28>>2];J[h+24>>2]=J[c+24>>2];J[h+28>>2]=t;t=J[c+20>>2];J[h+16>>2]=J[c+16>>2];J[h+20>>2]=t;t=J[c+12>>2];J[h+8>>2]=J[c+8>>2];J[h+12>>2]=t;if(M[c+4>>2]<=2){J[a+8>>2]=1065353216}m=m+2|0;b=b+2|0;if((E|0)!=(b|0)){continue}break}}if(!s){break fa}b=P(m,44);c=b+g|0;b=b+d|0;h=J[b+4>>2];J[c>>2]=J[b>>2];J[c+4>>2]=h;J[c+40>>2]=J[b+40>>2];h=J[b+36>>2];J[c+32>>2]=J[b+32>>2];J[c+36>>2]=h;h=J[b+28>>2];J[c+24>>2]=J[b+24>>2];J[c+28>>2]=h;h=J[b+20>>2];J[c+16>>2]=J[b+16>>2];J[c+20>>2]=h;h=J[b+12>>2];J[c+8>>2]=J[b+8>>2];J[c+12>>2]=h;if(M[b+4>>2]>2){break fa}J[a+8>>2]=1065353216}b=J[o+980>>2];m=J[o+984>>2];c=J[o+976>>2]}J[a+532>>2]=c}l=l+1|0;if(l>>>0>4>>>0){continue}break}}hj(o+4|0,d,488)}k=Q(0);a=J[n+32>>2];if(!a|!(J[p+3480>>2]&1)){break J}if(a+12|0){b=J[p+3456>>2];J[a+12>>2]=J[p+3452>>2];J[a+16>>2]=b;J[a+20>>2]=J[p+3460>>2]}b=J[a+16>>2];J[a>>2]=J[a+12>>2];J[a+4>>2]=b;J[a+8>>2]=J[a+20>>2];f=f|2;D=N[a+16>>2];k=N[a+12>>2];q=N[a+20>>2];break I}Z(144655,37441,929,57111);B()}Z(86995,37441,831,57111);B()}Z(86897,37441,830,57111);B()}Z(87044,37441,818,57111);B()}Z(86946,37441,817,57111);B()}q=Q(0)}d=J[n>>2];g=J[n+44>>2];if(g){h=f<<8&512;l=(f&1)<<8;b=0;while(1){a=J[J[n+40>>2]+(b<<2)>>2];if((a|0)!=-1){while(1){a=J[n+48>>2]+P(a,968)|0;w=N[a+8>>2];y=N[d+88>>2];A=N[a+12>>2];c=L[a+952>>1]&-225|(A>=y?(y>w)<<6:0);p=!(y>A)|!(w>=y);g=c|(p?0:32);I[a+952>>1]=g;ga:{if(!(w>Q(0))){break ga}if(!p){g=g|128;I[a+952>>1]=g;N[a+16>>2]=N[d+80>>2];break ga}w=Q(N[a+16>>2]-C);N[a+16>>2]=w;if(!(w<=Q(0))){break ga}g=c|128;I[a+952>>1]=g;N[a+16>>2]=w+N[d+84>>2]}if(!(g&256)){J[a+32>>2]=v;J[a+28>>2]=x;J[a+24>>2]=j;J[a+20>>2]=r;g=g|l;I[a+952>>1]=g}if(!(g&512)){N[a+44>>2]=q;N[a+40>>2]=D;N[a+36>>2]=k;I[a+952>>1]=g|h}a=J[a+960>>2];if((a|0)!=-1){continue}break}g=J[n+44>>2]}b=b+1|0;if(g>>>0>b>>>0){continue}break}}a=J[n+12>>2];b=J[n+16>>2];if((a|0)!=(b|0)){l=f<<8&512;p=(f&1)<<8;h=0;while(1){f=J[(h<<2)+a>>2];ha:{if(!f){break ha}g=J[f+312>>2];if(!g){break ha}b=0;while(1){a=J[J[f+308>>2]+(b<<2)>>2];if((a|0)!=-1){while(1){a=J[f+316>>2]+P(a,968)|0;w=N[a+8>>2];y=N[d+88>>2];A=N[a+12>>2];c=L[a+952>>1]&-225|(A>=y?(y>w)<<6:0);o=!(y>A)|!(w>=y);g=c|(o?0:32);I[a+952>>1]=g;ia:{if(!(w>Q(0))){break ia}if(!o){g=g|128;I[a+952>>1]=g;N[a+16>>2]=N[d+80>>2];break ia}w=Q(N[a+16>>2]-C);N[a+16>>2]=w;if(!(w<=Q(0))){break ia}g=c|128;I[a+952>>1]=g;N[a+16>>2]=w+N[d+84>>2]}if(!(g&256)){J[a+32>>2]=v;J[a+28>>2]=x;J[a+24>>2]=j;J[a+20>>2]=r;g=g|p;I[a+952>>1]=g}if(!(g&512)){N[a+44>>2]=q;N[a+40>>2]=D;N[a+36>>2]=k;I[a+952>>1]=g|l}a=J[a+960>>2];if((a|0)!=-1){continue}break}g=J[f+312>>2]}b=b+1|0;if(g>>>0>b>>>0){continue}break}a=J[n+12>>2];b=J[n+16>>2]}h=h+1|0;if(h>>>0>2>>>0){continue}break}}Ui=e+160|0;J[i+168>>2]=J[i+164>>2];b=0;l=0;f=J[i+428>>2];a=J[f+44>>2];if(a){while(1){j=J[J[f+40>>2]+(b<<2)>>2];if((j|0)!=-1){while(1){a=J[f+48>>2]+P(j,968)|0;ja:{ka:{if(N[a+8>>2]!=Q(0)){break ka}d=L[a+952>>1];if(d&96|d&1052|(J[a+796>>2]|J[a+532>>2]>0)){break ka}if(J[a>>2]|J[a+4>>2]){break ja}if(J[a+28>>2]|d&512){break ka}if(!J[a+32>>2]){break ja}}iE(J[a>>2],J[a+4>>2],a+8|0,i)}j=J[a+960>>2];if((j|0)!=-1){continue}break}a=J[f+44>>2]}b=b+1|0;if(b>>>0>>0){continue}break}}a=J[f+16>>2];j=J[f+12>>2];if((a|0)!=(j|0)){while(1){d=J[(l<<2)+j>>2];la:{if(!d){break la}b=J[d+312>>2];if(!b){break la}a=0;while(1){j=J[J[d+308>>2]+(a<<2)>>2];if((j|0)!=-1){while(1){b=J[d+316>>2]+P(j,968)|0;ma:{na:{if(N[b+8>>2]!=Q(0)){break na}c=L[b+952>>1];if(c&96|c&1052|(J[b+796>>2]|J[b+532>>2]>0)){break na}if(J[b>>2]|J[b+4>>2]){break ma}if(J[b+28>>2]|c&512){break na}if(!J[b+32>>2]){break ma}}iE(J[b>>2],J[b+4>>2],b+8|0,i)}j=J[b+960>>2];if((j|0)!=-1){continue}break}b=J[d+312>>2]}a=a+1|0;if(b>>>0>a>>>0){continue}break}j=J[f+12>>2];a=J[f+16>>2]}l=l+1|0;if(l>>>0>2>>>0){continue}break}}a=J[i+164>>2];Bz(a,(J[i+168>>2]-a|0)/960|0,960,13);b=J[i+168>>2];a=J[i+164>>2];if((b|0)!=(a|0)){IR(J[i+160>>2],a,(b-a|0)/960|0)}N[u+36>>2]=C;J[u+32>>2]=1065353216;J[u+44>>2]=J[i+472>>2];N[u+40>>2]=N[i+464>>2];cR(J[i+160>>2],u+32|0);oa:{if(kv(J[i+224>>2],3)|(K[J[i+228>>2]+2504|0]&16)>>>4){break oa}J[u+20>>2]=J[i+4>>2];J[u+24>>2]=J[i+300>>2];a=J[i+284>>2];pa:{if(a){a=a?J[a+124>>2]:0;break pa}a=J[i+288>>2];if(a){a=J[a+124>>2]}else{a=0}}J[u+28>>2]=a;a=J[215795];if(a){b=u+20|0;while(1){f=J[a+44>>2];if(!(!f|!(H[a+52|0]&1))){Zi[f|0](b)|0}a=J[a>>2];if(a){continue}break}}a=J[i+228>>2];J[a+2224>>2]=-1;J[a+2228>>2]=0;J[a+2116>>2]=J[a+2112>>2];J[a+2180>>2]=J[a+2176>>2];J[a+2132>>2]=J[a+2128>>2];J[a+2196>>2]=J[a+2192>>2];jR(J[i+160>>2]);a=J[i+436>>2];if(a){b=J[a+24>>2];a=Ui-16|0;Ui=a;J[a+12>>2]=0;J[a+8>>2]=1;J[a+4>>2]=b;b=J[b+304>>2];Jm(J[b+2496>>2],J[b+2500>>2],1626,a+4|0);Ui=a+16|0}nC(J[i+228>>2],2,16777215);Zi[J[79388]](J[i+224>>2]);a=J[i+436>>2];if(a){a=J[a+24>>2];z=Ui-16|0;Ui=z;N[z+12>>2]=C;J[z+8>>2]=0;J[a+4>>2]=J[a>>2];xB(J[a+312>>2],C);Ex(a,1,z+12|0);b=J[a+4>>2];Ca=J[a>>2];if((b|0)!=(Ca|0)){m=0;va=Ui-16|0;Ui=va;e=J[a+304>>2];t=J[e+2480>>2];Ea=(b-Ca|0)/40|0;if(Ea){while(1){qa:{ra:{sa:{ta:{ua:{va:{wa:{xa:{ya:{za:{Aa:{Ba:{Ca:{Da:{Ea:{Fa:{Ga:{Ha:{Ia:{Ja:{Ka:{La:{Ma:{Na:{Oa:{Pa:{Qa:{Ra:{b=Ca+P(m,40)|0;a=J[b>>2];switch(a|0){case 23:break sa;case 25:break ta;case 24:break ua;case 22:break va;case 21:break wa;case 20:break xa;case 19:break ya;case 18:break za;case 17:break Aa;case 16:break Ba;case 15:break Ca;case 14:break Da;case 13:break Ea;case 12:break Fa;case 11:break Ga;case 10:break Ha;case 9:break Ia;case 8:break Ja;case 7:break Ka;case 6:break La;case 5:break Ma;case 3:break Na;case 2:break Oa;case 4:break Pa;case 1:break Qa;case 0:break Ra;default:break ra}}Zi[J[79432]](t,J[b+8>>2]);break qa}Zi[J[79433]](t,J[b+8>>2]);break qa}Zi[J[79449]](t,J[b+8>>2],J[b+12>>2],J[b+16>>2]);break qa}a=J[b+8>>2];f=J[b+12>>2];if(a|f){VK(e,a,f,J[b+24>>2],J[b+28>>2]);break qa}UK(e,J[b+16>>2],J[b+24>>2],J[b+28>>2]);break qa}a=J[b+8>>2];f=J[b+12>>2];if(a|f){VK(e,a,f,0,0);break qa}UK(e,J[b+16>>2],0,0);break qa}a=J[b+16>>2];Zi[J[79390]](t,J[b+8>>2],a&255,a>>>8&255,a>>>16&255,a>>>24|0,N[b+24>>2],J[b+32>>2]);H[e+2504|0]=K[b+8|0]>>>4&2|K[e+2504|0]&253;break qa}Zi[J[79431]](t,J[b+8>>2],J[b+16>>2],J[b+24>>2],J[b+32>>2]);break qa}a=J[b+8>>2];N[e+2288>>2]=N[a>>2];N[e+2292>>2]=N[a+4>>2];N[e+2296>>2]=N[a+8>>2];N[e+2300>>2]=N[a+12>>2];N[e+2304>>2]=N[a+16>>2];N[e+2308>>2]=N[a+20>>2];N[e+2312>>2]=N[a+24>>2];N[e+2316>>2]=N[a+28>>2];N[e+2320>>2]=N[a+32>>2];N[e+2324>>2]=N[a+36>>2];N[e+2328>>2]=N[a+40>>2];N[e+2332>>2]=N[a+44>>2];N[e+2336>>2]=N[a+48>>2];N[e+2340>>2]=N[a+52>>2];N[e+2344>>2]=N[a+56>>2];N[e+2348>>2]=N[a+60>>2];k=N[a+12>>2];q=N[a+8>>2];D=N[a>>2];w=N[a+4>>2];y=N[a+28>>2];A=N[a+24>>2];F=N[a+16>>2];G=N[a+20>>2];O=N[a+44>>2];S=N[a+40>>2];U=N[a+32>>2];X=N[a+36>>2];Y=N[e+2400>>2];_=N[e+2384>>2];$=N[e+2352>>2];aa=N[e+2368>>2];ba=N[e+2404>>2];ca=N[e+2388>>2];da=N[e+2356>>2];ea=N[e+2372>>2];fa=N[e+2408>>2];ga=N[e+2392>>2];ha=N[e+2360>>2];ia=N[e+2376>>2];ja=N[e+2412>>2];ka=N[a+60>>2];la=N[e+2396>>2];ma=N[a+56>>2];na=N[e+2364>>2];oa=N[a+48>>2];pa=N[e+2380>>2];qa=N[a+52>>2];N[e+2476>>2]=Q(ja*ka)+Q(Q(la*ma)+Q(Q(na*oa)+Q(pa*qa)));N[e+2472>>2]=Q(fa*ka)+Q(Q(ga*ma)+Q(Q(ha*oa)+Q(ia*qa)));N[e+2468>>2]=Q(ba*ka)+Q(Q(ca*ma)+Q(Q(da*oa)+Q(ea*qa)));N[e+2464>>2]=Q(Y*ka)+Q(Q(_*ma)+Q(Q($*oa)+Q(aa*qa)));N[e+2460>>2]=Q(ja*O)+Q(Q(la*S)+Q(Q(na*U)+Q(pa*X)));N[e+2456>>2]=Q(fa*O)+Q(Q(ga*S)+Q(Q(ha*U)+Q(ia*X)));N[e+2452>>2]=Q(ba*O)+Q(Q(ca*S)+Q(Q(da*U)+Q(ea*X)));N[e+2448>>2]=Q(Y*O)+Q(Q(_*S)+Q(Q($*U)+Q(aa*X)));N[e+2444>>2]=Q(ja*y)+Q(Q(la*A)+Q(Q(na*F)+Q(pa*G)));N[e+2440>>2]=Q(fa*y)+Q(Q(ga*A)+Q(Q(ha*F)+Q(ia*G)));N[e+2436>>2]=Q(ba*y)+Q(Q(ca*A)+Q(Q(da*F)+Q(ea*G)));N[e+2432>>2]=Q(Y*y)+Q(Q(_*A)+Q(Q($*F)+Q(aa*G)));N[e+2428>>2]=Q(ja*k)+Q(Q(la*q)+Q(Q(na*D)+Q(w*pa)));N[e+2424>>2]=Q(fa*k)+Q(Q(ga*q)+Q(Q(ha*D)+Q(w*ia)));N[e+2420>>2]=Q(ba*k)+Q(Q(ca*q)+Q(Q(da*D)+Q(w*ea)));N[e+2416>>2]=Q(Y*k)+Q(Q(_*q)+Q(Q($*D)+Q(aa*w)));cj(a);break qa}a=J[b+8>>2];N[e+2352>>2]=N[a>>2];N[e+2356>>2]=N[a+4>>2];N[e+2360>>2]=N[a+8>>2];N[e+2364>>2]=N[a+12>>2];N[e+2368>>2]=N[a+16>>2];N[e+2372>>2]=N[a+20>>2];N[e+2376>>2]=N[a+24>>2];N[e+2380>>2]=N[a+28>>2];N[e+2384>>2]=N[a+32>>2];N[e+2388>>2]=N[a+36>>2];N[e+2392>>2]=N[a+40>>2];N[e+2396>>2]=N[a+44>>2];k=N[a+48>>2];N[e+2400>>2]=k;q=N[a+52>>2];N[e+2404>>2]=q;D=N[a+56>>2];N[e+2408>>2]=D;w=N[a+60>>2];N[e+2412>>2]=w;y=N[e+2300>>2];A=N[e+2296>>2];F=N[e+2288>>2];G=N[e+2292>>2];O=N[e+2316>>2];S=N[e+2312>>2];U=N[e+2304>>2];X=N[e+2308>>2];Y=N[e+2332>>2];_=N[e+2328>>2];$=N[e+2320>>2];aa=N[e+2324>>2];ba=N[a+32>>2];ca=N[a>>2];da=N[a+16>>2];ea=N[a+36>>2];fa=N[a+4>>2];ga=N[a+20>>2];ha=N[a+40>>2];ia=N[a+8>>2];ja=N[a+24>>2];ka=N[e+2348>>2];la=N[a+44>>2];ma=N[e+2344>>2];na=N[a+12>>2];oa=N[e+2336>>2];pa=N[a+28>>2];qa=N[e+2340>>2];N[e+2476>>2]=Q(w*ka)+Q(Q(la*ma)+Q(Q(na*oa)+Q(pa*qa)));N[e+2472>>2]=Q(D*ka)+Q(Q(ha*ma)+Q(Q(ia*oa)+Q(ja*qa)));N[e+2468>>2]=Q(q*ka)+Q(Q(ea*ma)+Q(Q(fa*oa)+Q(ga*qa)));N[e+2464>>2]=Q(k*ka)+Q(Q(ba*ma)+Q(Q(ca*oa)+Q(da*qa)));N[e+2460>>2]=Q(w*Y)+Q(Q(la*_)+Q(Q(na*$)+Q(pa*aa)));N[e+2456>>2]=Q(D*Y)+Q(Q(ha*_)+Q(Q(ia*$)+Q(ja*aa)));N[e+2452>>2]=Q(q*Y)+Q(Q(ea*_)+Q(Q(fa*$)+Q(ga*aa)));N[e+2448>>2]=Q(k*Y)+Q(Q(ba*_)+Q(Q(ca*$)+Q(da*aa)));N[e+2444>>2]=Q(w*O)+Q(Q(la*S)+Q(Q(na*U)+Q(pa*X)));N[e+2440>>2]=Q(D*O)+Q(Q(ha*S)+Q(Q(ia*U)+Q(ja*X)));N[e+2436>>2]=Q(q*O)+Q(Q(ea*S)+Q(Q(fa*U)+Q(ga*X)));N[e+2432>>2]=Q(k*O)+Q(Q(ba*S)+Q(Q(ca*U)+Q(da*X)));N[e+2428>>2]=Q(w*y)+Q(Q(la*A)+Q(Q(na*F)+Q(G*pa)));N[e+2424>>2]=Q(D*y)+Q(Q(ha*A)+Q(Q(ia*F)+Q(G*ja)));N[e+2420>>2]=Q(q*y)+Q(Q(ea*A)+Q(Q(fa*F)+Q(G*ga)));N[e+2416>>2]=Q(k*y)+Q(Q(ba*A)+Q(Q(ca*F)+Q(da*G)));cj(a);break qa}Zi[J[79434]](t,J[b+8>>2],J[b+16>>2]);break qa}Zi[J[79435]](t,(J[b+8>>2]|J[b+12>>2])!=0,(J[b+16>>2]|J[b+20>>2])!=0,(J[b+24>>2]|J[b+28>>2])!=0,(J[b+32>>2]|J[b+36>>2])!=0);break qa}Zi[J[79436]](t,(J[b+8>>2]|J[b+12>>2])!=0);break qa}Zi[J[79437]](t,J[b+8>>2]);break qa}Zi[J[79439]](t,J[b+8>>2]);break qa}Zi[J[79440]](t,J[b+8>>2],J[b+16>>2],J[b+24>>2]);break qa}Zi[J[79442]](t,J[b+8>>2],J[b+16>>2],J[b+24>>2]);break qa}Zi[J[79444]](t,J[b+8>>2]);break qa}Zi[J[79446]](t,Q(+M[b+8>>2]+ +M[b+12>>2]*4294967296),Q(+M[b+16>>2]+ +M[b+20>>2]*4294967296));break qa}a=J[b+24>>2];Ix(e,J[b+8>>2],J[b+16>>2],a);if(!a){break qa}cj(a);break qa}a=J[b+8>>2];if(J[e+1936>>2]){Ix(e,e+1408|0,0,a)}if(!a){break qa}cj(a);break qa}if(J[e+1936>>2]){Ix(e,e+1672|0,0,0)}break qa}J[e+2484>>2]=J[b+8>>2];break qa}J[e+2484>>2]=0;break qa}J[e+2488>>2]=J[b+8>>2];break qa}Wa=J[b+8>>2];Xa=J[b+16>>2];Ya=J[b+24>>2];E=J[b+32>>2];b=0;a=Ui+-64|0;Ui=a;Sa:{Ta:{r=J[e+2488>>2];Ua:{if(!r){break Ua}v=J[e+2480>>2];J[a+56>>2]=0;J[a+60>>2]=0;J[a+48>>2]=0;J[a+52>>2]=0;J[a+40>>2]=0;J[a+44>>2]=0;J[a+32>>2]=0;J[a+36>>2]=0;J[a+24>>2]=0;J[a+28>>2]=0;J[a+16>>2]=0;J[a+20>>2]=0;J[a+8>>2]=0;J[a+12>>2]=0;J[a>>2]=0;J[a+4>>2]=0;Zi[J[79423]](v,J[r+8>>2]);jC(e,r+28|0,a);d=J[a+4>>2];ra=d;f=J[a>>2];Fa=!(d|f);Va:{if(Fa){break Va}d=Zi[J[79477]](f,d)|0;if(!d){break Va}while(1){c=b&255;Zi[J[79467]](v,b,c,f,ra);h=J[r+28>>2];bn(e,(J[r+32>>2]-h|0)/48>>>0>b>>>0?h+P(b,48)|0:0,c,f,ra);b=b+1|0;if((d|0)!=(b|0)){continue}break}b=d}c=J[a+12>>2];ta=c;d=J[a+8>>2];Ga=!(c|d);Wa:{if(Ga){break Wa}h=Zi[J[79477]](d,c)|0;if(!h){break Wa}g=0;while(1){c=b&255;Zi[J[79467]](v,c,g&255,d,ta);n=J[r+28>>2];bn(e,c>>>0<(J[r+32>>2]-n|0)/48>>>0?n+P(c,48)|0:0,c,d,ta);b=b+1|0;g=g+1|0;if((h|0)!=(g|0)){continue}break}}h=J[a+20>>2];wa=h;c=J[a+16>>2];Ha=!(h|c);Xa:{if(Ha){break Xa}n=Zi[J[79477]](c,h)|0;if(!n){break Xa}g=0;while(1){h=b&255;Zi[J[79467]](v,h,g&255,c,wa);l=J[r+28>>2];bn(e,h>>>0<(J[r+32>>2]-l|0)/48>>>0?l+P(h,48)|0:0,h,c,wa);b=b+1|0;g=g+1|0;if((n|0)!=(g|0)){continue}break}}n=J[a+28>>2];xa=n;h=J[a+24>>2];Ia=!(n|h);Ya:{if(Ia){break Ya}l=Zi[J[79477]](h,n)|0;if(!l){break Ya}g=0;while(1){n=b&255;Zi[J[79467]](v,n,g&255,h,xa);p=J[r+28>>2];bn(e,n>>>0<(J[r+32>>2]-p|0)/48>>>0?p+P(n,48)|0:0,n,h,xa);b=b+1|0;g=g+1|0;if((l|0)!=(g|0)){continue}break}}l=J[a+36>>2];ya=l;n=J[a+32>>2];Ja=!(l|n);Za:{if(Ja){break Za}p=Zi[J[79477]](n,l)|0;if(!p){break Za}g=0;while(1){l=b&255;Zi[J[79467]](v,l,g&255,n,ya);o=J[r+28>>2];bn(e,l>>>0<(J[r+32>>2]-o|0)/48>>>0?o+P(l,48)|0:0,l,n,ya);b=b+1|0;g=g+1|0;if((p|0)!=(g|0)){continue}break}}p=J[a+44>>2];za=p;l=J[a+40>>2];Ka=!(p|l);_a:{if(Ka){break _a}o=Zi[J[79477]](l,p)|0;if(!o){break _a}g=0;while(1){p=b&255;Zi[J[79467]](v,p,g&255,l,za);j=J[r+28>>2];bn(e,p>>>0<(J[r+32>>2]-j|0)/48>>>0?j+P(p,48)|0:0,p,l,za);b=b+1|0;g=g+1|0;if((o|0)!=(g|0)){continue}break}}o=J[a+52>>2];Aa=o;p=J[a+48>>2];La=!(o|p);$a:{if(La){break $a}j=Zi[J[79477]](p,o)|0;if(!j){break $a}g=0;while(1){o=b&255;Zi[J[79467]](v,o,g&255,p,Aa);s=J[r+28>>2];bn(e,o>>>0<(J[r+32>>2]-s|0)/48>>>0?s+P(o,48)|0:0,o,p,Aa);b=b+1|0;g=g+1|0;if((j|0)!=(g|0)){continue}break}}j=J[a+60>>2];sa=j;o=J[a+56>>2];Ma=!(j|o);ab:{if(Ma){break ab}s=Zi[J[79477]](o,j)|0;if(!s){break ab}g=0;while(1){j=b&255;Zi[J[79467]](v,j,g&255,o,sa);x=J[r+28>>2];bn(e,j>>>0<(J[r+32>>2]-x|0)/48>>>0?x+P(j,48)|0:0,j,o,sa);b=b+1|0;g=g+1|0;if((s|0)!=(g|0)){continue}break}}b=0;j=Ui-128|0;Ui=j;x=J[e+2480>>2];Ba=Zi[J[79421]](J[r+8>>2])|0;s=J[r+12>>2];if((s|0)!=J[r+16>>2]){while(1){g=J[P(b,40)+s>>2];s=J[g+24>>2];YK(e,x,j- -64|0,j,Ba,J[g+16>>2],s,J[g+28>>2],g);b=b+1|0;s=J[r+12>>2];if(b>>>0<(J[r+16>>2]-s|0)/40>>>0){continue}break}}Ui=j+128|0;if(E){bb:{g=0;Ba=J[e+2480>>2];cb:{s=J[E+4>>2];if(s){while(1){x=J[J[E>>2]+(g<<2)>>2];db:{if((x|0)==-1){break db}b=J[r+48>>2];if(!b){break db}while(1){s=J[E+8>>2]+P(x,40)|0;eb:{if(!b){break eb}j=J[s>>2];Na=J[s+4>>2];b=J[J[r+44>>2]+(mxa(j,Na,b)<<2)>>2];if((b|0)==-1){break eb}x=J[r+52>>2];while(1){b=x+P(b,24)|0;if(J[b>>2]!=(j|0)|J[b+4>>2]!=(Na|0)){b=J[b+16>>2];if((b|0)!=-1){continue}break eb}break}x=J[s+16>>2];j=J[E+32>>2];if(x>>>0>=J[E+36>>2]-j>>4>>>0){break cb}j=j+(x<<4)|0;x=J[s+20>>2];if(J[s+24>>2]==9){Zi[J[79429]](Ba,j,x>>>2|0,J[b+8>>2],J[b+12>>2]);break eb}Zi[J[79428]](Ba,j,x,J[b+8>>2],J[b+12>>2])}x=J[s+32>>2];if((x|0)!=-1){b=J[r+48>>2];continue}break}s=J[E+4>>2]}g=g+1|0;if(s>>>0>g>>>0){continue}break}}break bb}Z(145396,53895,487,84789);B()}}Zi[J[79412]](v,Wa,Xa,Ya);b=0;fb:{if(Fa){break fb}j=Zi[J[79477]](f,ra)|0;if(!j){break fb}while(1){Zi[J[79468]](v,b,f,ra);b=b+1|0;if((j|0)!=(b|0)){continue}break}b=j}gb:{if(Ga){break gb}f=Zi[J[79477]](d,ta)|0;if(!f){break gb}j=0;while(1){Zi[J[79468]](v,b&255,d,ta);b=b+1|0;j=j+1|0;if((f|0)!=(j|0)){continue}break}}hb:{if(Ha){break hb}f=Zi[J[79477]](c,wa)|0;if(!f){break hb}j=0;while(1){Zi[J[79468]](v,b&255,c,wa);b=b+1|0;j=j+1|0;if((f|0)!=(j|0)){continue}break}}ib:{if(Ia){break ib}f=Zi[J[79477]](h,xa)|0;if(!f){break ib}j=0;while(1){Zi[J[79468]](v,b&255,h,xa);b=b+1|0;j=j+1|0;if((f|0)!=(j|0)){continue}break}}jb:{if(Ja){break jb}f=Zi[J[79477]](n,ya)|0;if(!f){break jb}j=0;while(1){Zi[J[79468]](v,b&255,n,ya);b=b+1|0;j=j+1|0;if((f|0)!=(j|0)){continue}break}}kb:{if(Ka){break kb}f=Zi[J[79477]](l,za)|0;if(!f){break kb}j=0;while(1){Zi[J[79468]](v,b&255,l,za);b=b+1|0;j=j+1|0;if((f|0)!=(j|0)){continue}break}}lb:{if(La){break lb}f=Zi[J[79477]](p,Aa)|0;if(!f){break lb}j=0;while(1){Zi[J[79468]](v,b&255,p,Aa);b=b+1|0;j=j+1|0;if((f|0)!=(j|0)){continue}break}}mb:{if(Ma){break mb}f=Zi[J[79477]](o,sa)|0;if(!f){break mb}j=0;while(1){Zi[J[79468]](v,b&255,o,sa);b=b+1|0;j=j+1|0;if((f|0)!=(j|0)){continue}break}}Zi[J[79424]](v);b=J[e+2212>>2];f=J[e+2208>>2];if((b|0)==(f|0)){break Ua}b=b-f>>4;c=b>>>0<=1?1:b;d=c&3;g=0;nb:{if(b>>>0<4){j=-1;b=0;break nb}c=c&-4;b=0;j=-1;s=0;while(1){l=b|1;p=f+(l<<4)|0;o=J[p+8>>2];r=b|2;v=f+(r<<4)|0;E=J[v+8>>2];x=b|3;ra=f+(x<<4)|0;ta=J[ra+8>>2];h=f+(b<<4)|0;j=J[ra+12>>2]|ta?-1:J[v+12>>2]|E?x:J[p+12>>2]|o?r:J[h+8>>2]|J[h+12>>2]?l:(j|0)==-1?b:j;b=b+4|0;s=s+4|0;if((c|0)!=(s|0)){continue}break}}if(d){while(1){c=f+(b<<4)|0;j=J[c+8>>2]|J[c+12>>2]?-1:(j|0)==-1?b:j;b=b+1|0;g=g+1|0;if((d|0)!=(g|0)){continue}break}}if((j|0)==-1){break Ua}if(J[e+2216>>2]-f>>4>>>0>>0){break Ta}J[e+2212>>2]=f+(j<<4)}Ui=a- -64|0;break Sa}Z(144782,53895,514,59583);B()}break qa}J[e+2280>>2]=J[b+8>>2];H[e+2504|0]=K[b+16|0]<<3&8|K[e+2504|0]&247;break qa}J[va>>2]=a;dj(4,90423,133179,va)}m=m+1|0;if((Ea|0)!=(m|0)){continue}break}}Ui=va+16|0}Ui=z+16|0;break oa}a=J[i+224>>2];b=J[(Zi[J[79381]](a)|0)+80>>2];_a=a,$a=0,ab=0,bb=b,cb=J[(Zi[J[79381]](J[i+224>>2])|0)+84>>2],Za=J[79431],Zi[Za](_a|0,$a|0,ab|0,bb|0,cb|0);a=J[i+484>>2];Zi[J[79390]](J[i+224>>2],49,a&255,a>>>8&255,a>>>16&255,a>>>24|0,Q(1),0);Ix(J[i+228>>2],0,0,0)}xR(J[i+160>>2]);wR(J[i+156>>2]);a=J[i+228>>2];if(!((K[a+2504|0]&16)>>>4|0)){J[a+2092>>2]=J[a+2088>>2];if(J[a+1936>>2]){J[a+1952>>2]=0;J[a+1368>>2]=0;J[a+1016>>2]=0;J[a+664>>2]=0;J[a+312>>2]=0}J[a+2036>>2]=J[a+2032>>2];J[a+2052>>2]=J[a+2048>>2];J[a+2068>>2]=J[a+2068>>2]+1}Jm(J[i+312>>2],J[i+316>>2],14,i);J[73748]=J[84548];a=J[i+284>>2];ob:{if(a){a=ns(a?J[a+124>>2]:0,3,0);break ob}a=J[i+288>>2];if(a){a=J[a+124>>2]}else{a=0}b=ns(a,3,0);a=J[i+296>>2];if(a){a=J[a+124>>2]}else{a=0}a=b+ns(a,3,0)|0}J[73726]=a;if(K[269788]){$n(Ua);$n(Ta)}pb:{if((K[J[i+228>>2]+2504|0]&16)>>>4|0){break pb}if(!kv(J[i+224>>2],3)){J[u+32>>2]=J[i+4>>2];J[u+36>>2]=J[i+300>>2];a=J[i+284>>2];qb:{if(a){a=a?J[a+124>>2]:0;break qb}a=J[i+288>>2];if(a){a=J[a+124>>2]}else{a=0}}J[u+40>>2]=a;a=J[215795];if(a){b=u+32|0;while(1){f=J[a+48>>2];if(!(!f|!(H[a+52|0]&1))){Zi[f|0](b)|0}a=J[a>>2];if(a){continue}break}}}if(!(!J[i+468>>2]|K[i+452|0]!=1)){J[u+32>>2]=0;b=Qa+Va|0;f=Da+Pa|0;b=f>>>0>>0?b+1|0:b;d=bl();a=f-d|0;f=b-(Yi+(d>>>0>f>>>0)|0)|0;while(1){if(!f&a>>>0>=501|f){b=bl();h=Yi;vp(100);c=bl();d=c-b|0;c=Yi-((b>>>0>c>>>0)+h|0)|0;h=(c|0)==(f|0)&a>>>0>d>>>0|c>>>0>>0;b=a;a=a-d|0;f=f-((b>>>0>>0)+c|0)|0;if(h){continue}}break}}Zi[J[79389]](J[i+224>>2]);if(!J[i+500>>2]){break pb}if(!(M[i+508>>2]%M[i+512>>2]|0)){a=Zi[J[79383]](J[i+224>>2])|0;b=Zi[J[79384]](J[i+224>>2])|0;Zi[J[79471]](J[i+224>>2],J[i+504>>2],P(a,b)<<2);J[u>>2]=-3;dj(4,95703,141466,u)}J[i+508>>2]=J[i+508>>2]+1}J[i+440>>2]=J[i+440>>2]+1;N[i+444>>2]=C+N[i+444>>2]}}if(K[i+152|0]!=1){break b}Oa=Oa+1|0;if((Oa|0)!=(ua|0)){continue}break}}Ui=u+80|0;a=J[i+148>>2];break a}a=J[a+148>>2];if(a){break a}return-1}return((a|0)==1?1:(a|0)==-1?-1:0)|0}function Yfa(a){a=a|0;var b=0,c=0,d=0,e=0,f=0,g=Q(0),h=0,i=0,j=0,k=0,l=0,m=0,n=0,o=0,p=0,q=Q(0),r=0,s=0,t=Q(0),u=0,v=0,w=0,x=0,y=0,z=Q(0),A=Q(0),C=Q(0),D=0,E=0,F=Q(0),G=Q(0),O=Q(0),R=Q(0),S=Q(0),T=Q(0),U=Q(0),V=0,W=0,X=Q(0),Y=Q(0),_=Q(0),$=0,aa=Q(0),ba=Q(0),ca=Q(0),da=0,ea=Q(0),fa=Q(0),ga=Q(0),ha=Q(0),ia=0,ja=Q(0),ka=Q(0),la=Q(0),ma=Q(0),na=Q(0),oa=Q(0),pa=Q(0),qa=Q(0),ra=Q(0),sa=Q(0),ta=Q(0),ua=Q(0),va=0,wa=0,xa=Q(0),ya=Q(0),za=Q(0),Aa=Q(0),Ba=0,Ca=0,Da=Q(0),Ea=Q(0),Fa=Q(0),Ga=Q(0),Ha=Q(0),Ia=Q(0),Ja=Q(0),Ka=Q(0);h=Ui-944|0;Ui=h;n=J[a+4>>2];a:{b:{c:{d:{e:{f:{g:{h:{i:{j:{k:{switch(J[a+8>>2]){case 1:Ca=J[a+20>>2];va=J[a>>2];Ba=J[a+12>>2];V=J[a+16>>2];J[h+40>>2]=0;l=J[J[(P(J[V>>2],48)+Ba|0)+16>>2]+96>>2];a=J[va+2484>>2];c=a;if(!a){b=J[l+208>>2];if(!b){b=J[l+128>>2];c=J[b+28>>2];if((c|0)==J[b+32>>2]){break c}b=J[c+4>>2]}c=J[b>>2]}l=J[c+168>>2];l:{m:{n:{o:{if(sr(c,1)){break o}J[h+608>>2]=J[c+28>>2];if((l|0)!=1){break o}b=0;if(H[h+608|0]&1){break n}}b=l}switch(b|0){case 1:break l;case 0:break m;default:break h}}b=0;J[h+192>>2]=0;c=J[(P(J[V>>2],48)+Ba|0)+16>>2];$=J[c+120>>2];y=J[c+96>>2];if(!a){a=J[y+208>>2];if(!a){a=J[y+128>>2];c=J[a+28>>2];if($>>>0>=(J[a+32>>2]-c|0)/24>>>0){break c}a=J[(c+P($,24)|0)+4>>2]}a=J[a>>2]}wa=J[a+16>>2];ia=J[(P(J[V>>2],48)+Ba|0)+36>>2]&15;c=J[n+132>>2];J[n+132>>2]=c>>>0>>0?ia:c;if((V|0)==(Ca|0)){break f}c=V;while(1){l=J[J[(P(J[c>>2],48)+Ba|0)+16>>2]+100>>2];d=J[l+12>>2]+d|0;b=J[l+8>>2]+b|0;c=c+4|0;if((Ca|0)!=(c|0)){continue}break}if(!b|!d){break f}c=0;ij(h+272|0,0,336);J[h+608>>2]=0;J[h+48>>2]=0;l=J[a+64>>2];J[h+608>>2]=l;J[h+48>>2]=(J[a+68>>2]-l|0)/56;p=b>>>0>d>>>0?b:d;E=J[h+48>>2];p:{if(E){r=J[h+608>>2];if(J[r+28>>2]!=7){break p}o=J[78812];x=J[78813];m=J[78814];s=J[78815];k=J[78816];i=J[78817];W=J[78818];j=J[78819];l=J[78822];w=J[78823];d=J[78820];da=J[78821];while(1){q:{u=r+P(c,56)|0;b=J[u+8>>2];e=J[u+12>>2];r:{s:{switch(J[u+16>>2]-2|0){case 4:if((b|0)==(m|0)&(e|0)==(s|0)){break r}break q;case 5:if((b|0)==(k|0)&(e|0)==(i|0)){break r}break q;case 3:if((b|0)==(W|0)&(e|0)==(j|0)){break r}break q;case 1:if((b|0)==(d|0)&(e|0)==(da|0)|(b|0)==(l|0)&(e|0)==(w|0)){break r}break q;case 0:break s;default:break q}}if((b|0)!=(o|0)|(e|0)!=(x|0)){break q}}c=c+1|0;D=E>>>0<=c>>>0;if((c|0)==(E|0)){break q}if(J[(r+P(c,56)|0)+28>>2]==7){continue}}break}if(!D){break p}}wa=J[n+68>>2]}o=J[n+100>>2]+(ia<<4)|0;k=J[o+8>>2];l=J[o+4>>2];c=k-l|0;d=J[o>>2];W=wa?L[wa+202>>1]:0;m=(l-d>>>0)%(W>>>0)|0;b=P(p,W)+(m?W:0)|0;if(b>>>0>c>>>0){if(H[o+12|0]&1){break b}lj(b+k-(c+d)|0,1,o,o+8|0,o+4|0);l=J[o+4>>2]}k=m?W-m|0:0;ct(a,wa,h+272|0,J[a+168>>2]==1?2:1);m=J[h+596>>2];t:{if(!m){break t}b=0;c=0;if(m>>>0>=8){a=m&-8;d=0;while(1){o=h+272|0;J[(o+P(c,40)|0)+20>>2]=0;J[(o+P(c|1,40)|0)+20>>2]=0;J[(o+P(c|2,40)|0)+20>>2]=0;J[(o+P(c|3,40)|0)+20>>2]=0;J[(o+P(c|4,40)|0)+20>>2]=0;J[(o+P(c|5,40)|0)+20>>2]=0;J[(o+P(c|6,40)|0)+20>>2]=0;J[(o+P(c|7,40)|0)+20>>2]=0;c=c+8|0;d=d+8|0;if((a|0)!=(d|0)){continue}break}}a=m&7;if(!a){break t}while(1){J[((h+272|0)+P(c,40)|0)+20>>2]=0;c=c+1|0;b=b+1|0;if((a|0)!=(b|0)){continue}break}}l=l+k|0;a=ia<<2;da=a+J[n+96>>2]|0;if(L[J[da>>2]+20>>1]>2]>>2]){Vu(va,J[da>>2])}b=l;while(1){m=J[(P(J[V>>2],48)+Ba|0)+16>>2];c=J[m+96>>2];a=J[c+132>>2];u:{if(!a){break u}a=a+112|0;d=J[m+116>>2];v:{if((d|0)!=-1){D=J[a+4>>2];a=J[a>>2];if(d>>>0>=(D-a|0)/176>>>0){break e}d=a+P(d,176)|0;xa=N[d+72>>2];ta=N[d+48>>2];g=Q(ta+ta);ea=N[d+56>>2];ya=Q(ea+ea);S=Q(ta*ya);q=N[d+52>>2];ga=Q(q+q);ha=N[d+60>>2];X=Q(ga*ha);Ha=N[d+80>>2];za=Q(Q(S-X)*Ha);Y=Q(Q(1)-Q(ta*g));_=Q(q*ga);Ia=N[d+88>>2];Aa=Q(Q(Y-_)*Ia);a=J[m+104>>2];ja=N[a+24>>2];ka=N[a+16>>2];F=Q(q*ya);G=Q(g*ha);la=N[d+84>>2];aa=Q(Q(F+G)*la);ma=N[a+20>>2];na=Q(xa+Q(Q(Aa*ja)+Q(Q(za*ka)+Q(aa*ma))));z=N[a+40>>2];Ja=Q(z*Q(0));ba=N[a>>2];g=Q(ba+ba);T=N[a+8>>2];fa=Q(T+T);O=Q(ba*fa);q=N[a+4>>2];t=Q(q+q);U=N[a+12>>2];R=Q(t*U);Ka=Q(Q(O+R)*z);A=Q(Q(1)-Q(ba*g));C=Q(q*t);oa=Q(Q(A-C)*z);q=Q(q*fa);g=Q(g*U);ca=Q(Q(q-g)*z);ua=Q(Q(xa*Ja)+Q(Q(Aa*oa)+Q(Q(za*Ka)+Q(aa*ca))));z=N[a+36>>2];pa=Q(z*Q(0));qa=Q(Q(q+g)*z);t=Q(ba*t);q=Q(U*fa);ra=Q(Q(t-q)*z);g=Q(T*fa);sa=Q(Q(A-g)*z);Da=Q(Q(xa*pa)+Q(Q(Aa*qa)+Q(Q(za*ra)+Q(aa*sa))));A=N[a+32>>2];ba=Q(A*Q(0));fa=Q(Q(O-R)*A);z=Q(Q(Q(Q(1)-C)-g)*A);T=Q(Q(t+q)*A);Ea=Q(Q(xa*ba)+Q(Q(Aa*fa)+Q(Q(za*z)+Q(aa*T))));U=N[d+68>>2];F=Q(Q(F-G)*Ia);t=Q(ta*ga);q=Q(ha*ya);G=Q(Q(t+q)*Ha);g=Q(ea*ya);O=Q(Q(Y-g)*la);Fa=Q(U+Q(Q(F*ja)+Q(Q(G*ka)+Q(O*ma))));R=N[d+64>>2];A=Q(Q(S+X)*Ia);C=Q(Q(Q(Q(1)-_)-g)*Ha);g=Q(Q(t-q)*la);Ga=Q(R+Q(Q(A*ja)+Q(Q(C*ka)+Q(g*ma))));xa=Q(Q(U*Ja)+Q(Q(F*oa)+Q(Q(G*Ka)+Q(O*ca))));ta=Q(Q(R*Ja)+Q(Q(A*oa)+Q(Q(C*Ka)+Q(g*ca))));za=Q(Q(U*pa)+Q(Q(F*qa)+Q(Q(G*ra)+Q(O*sa))));ya=Q(Q(R*pa)+Q(Q(A*qa)+Q(Q(C*ra)+Q(g*sa))));Aa=Q(Q(U*ba)+Q(Q(F*fa)+Q(Q(G*z)+Q(O*T))));aa=Q(Q(R*ba)+Q(Q(A*fa)+Q(Q(C*z)+Q(g*T))));t=Q(Ia*Q(0));q=Q(Ha*Q(0));g=Q(la*Q(0));ca=Q(Ja+Q(Q(t*oa)+Q(Q(q*Ka)+Q(g*ca))));z=Q(ba+Q(Q(t*fa)+Q(Q(q*z)+Q(g*T))));ea=Q(Q(Q(t*ja)+Q(Q(q*ka)+Q(g*ma)))+Q(1));g=Q(pa+Q(Q(t*qa)+Q(Q(q*ra)+Q(g*sa))));break v}a=J[m+104>>2];X=N[a+4>>2];G=N[a+8>>2];Y=Q(G+G);q=Q(X*Y);S=N[a>>2];A=Q(S+S);O=N[a+12>>2];g=Q(A*O);_=N[a+40>>2];xa=Q(Q(q-g)*_);C=Q(S*Y);R=Q(X+X);t=Q(R*O);ta=Q(Q(C+t)*_);F=N[a+36>>2];Da=Q(Q(q+g)*F);q=Q(S*R);g=Q(O*Y);ya=Q(Q(q-g)*F);ua=Q(C-t);t=N[a+32>>2];Ea=Q(ua*t);Aa=Q(Q(q+g)*t);ea=Q(1);g=Q(Q(1)-Q(S*A));q=Q(X*R);ua=Q(Q(g-q)*_);z=g;g=Q(G*Y);za=Q(Q(z-g)*F);aa=Q(Q(Q(Q(1)-q)-g)*t);ca=Q(_*Q(0));z=Q(t*Q(0));na=N[a+24>>2];Fa=N[a+20>>2];Ga=N[a+16>>2];g=Q(F*Q(0))}ga=N[c+112>>2];ha=N[c+96>>2];T=N[c+64>>2];U=N[c+80>>2];S=N[c+116>>2];X=N[c+100>>2];Y=N[c+68>>2];_=N[c+84>>2];F=N[c+120>>2];G=N[c+104>>2];O=N[c+72>>2];R=N[c+88>>2];A=N[c+124>>2];C=N[c+108>>2];t=N[c+76>>2];q=N[c+92>>2];N[h+108>>2]=Q(A*ea)+Q(Q(C*na)+Q(Q(t*Ga)+Q(Fa*q)));N[h+104>>2]=Q(F*ea)+Q(Q(G*na)+Q(Q(O*Ga)+Q(Fa*R)));N[h+100>>2]=Q(S*ea)+Q(Q(X*na)+Q(Q(Y*Ga)+Q(Fa*_)));N[h+96>>2]=Q(ga*ea)+Q(Q(ha*na)+Q(Q(T*Ga)+Q(Fa*U)));N[h+92>>2]=Q(A*ca)+Q(Q(C*ua)+Q(Q(t*ta)+Q(xa*q)));N[h+88>>2]=Q(F*ca)+Q(Q(G*ua)+Q(Q(O*ta)+Q(xa*R)));N[h+84>>2]=Q(S*ca)+Q(Q(X*ua)+Q(Q(Y*ta)+Q(xa*_)));N[h+80>>2]=Q(ga*ca)+Q(Q(ha*ua)+Q(Q(T*ta)+Q(xa*U)));N[h+76>>2]=Q(A*g)+Q(Q(C*Da)+Q(Q(t*ya)+Q(za*q)));N[h+72>>2]=Q(F*g)+Q(Q(G*Da)+Q(Q(O*ya)+Q(za*R)));N[h+68>>2]=Q(S*g)+Q(Q(X*Da)+Q(Q(Y*ya)+Q(za*_)));N[h+64>>2]=Q(ga*g)+Q(Q(ha*Da)+Q(Q(T*ya)+Q(za*U)));N[h+60>>2]=Q(A*z)+Q(Q(C*Ea)+Q(Q(t*aa)+Q(Aa*q)));N[h+56>>2]=Q(F*z)+Q(Q(G*Ea)+Q(Q(O*aa)+Q(Aa*R)));N[h+52>>2]=Q(S*z)+Q(Q(X*Ea)+Q(Q(Y*aa)+Q(Aa*_)));N[h+48>>2]=Q(ga*z)+Q(Q(ha*Ea)+Q(Q(T*aa)+Q(Aa*U)));k=h+208|0;j=h+48|0;Hx(k,va,j);if(J[n+68>>2]!=(wa|0)){d=J[m+120>>2];s=h+608|0;ij(s,0,336);J[h+936>>2]=336;a=J[J[c+128>>2]>>2];if(d>>>0>=M[a+12>>2]){break j}a=J[a+8>>2]+P(d,24)|0;dt(0,65535,J[a+16>>2],J[a+20>>2],h+272|0,s);e=J[n+124>>2];p=J[c+132>>2];D=0;v=0;c=0;w=0;f=Ui-160|0;Ui=f;w:{x:{u=J[m+108>>2];y:{if(!(K[p+186|0]&8)|(!u|!J[p+160>>2])){break y}a=J[p+76>>2];if(a){c=J[a+4>>2]}E=M[u+36>>2]/3|0;d=J[s+324>>2];if(d){while(1){z:{A:{B:{a=s+P(D,40)|0;switch(J[a+8>>2]-2|0){case 4:break A;case 0:break B;default:break z}}a=J[a+24>>2];v=((a|0)==1|v)&-3|((v&2)>>>1|0?2:((a|0)==2)<<1);break z}v=v|4}D=D+1|0;if((d|0)!=(D|0)){continue}break}}r=J[e+52>>2];J[e+56>>2]=r;x=0;D=0;if(v&3){i=e+52|0;o=e+56|0;C:{if(!c){break C}a=J[e+60>>2]-r>>6;if(a>>>0>>0){if(H[e+64|0]&1){break b}lj(c,64,i,e+60|0,o);r=J[i>>2];a=J[e+60>>2]-r>>6}if(a>>>0>>0){break a}a=(c<<6)+r|0;J[o>>2]=a;qK(J[p+112>>2],J[p+116>>2],r,a);a=J[o>>2];m=J[i>>2];if((a|0)==(m|0)){break C}a=a-m>>6;d=a>>>0<=1?1:a;a=J[p+68>>2];c=J[a>>2];a=(J[a+4>>2]-c|0)/80|0;r=0;while(1){if((a|0)==(r|0)){break c}x=c+P(r,80)|0;ja=N[x+12>>2];ka=N[x+8>>2];la=N[x>>2];aa=N[x+4>>2];ma=N[x+28>>2];oa=N[x+24>>2];ca=N[x+16>>2];pa=N[x+20>>2];qa=N[x+44>>2];ra=N[x+40>>2];sa=N[x+32>>2];ba=N[x+36>>2];p=m+(r<<6)|0;fa=N[p+48>>2];z=N[p+32>>2];ea=N[p>>2];ga=N[p+16>>2];ha=N[p+52>>2];T=N[p+36>>2];U=N[p+4>>2];S=N[p+20>>2];X=N[p+56>>2];Y=N[p+40>>2];_=N[p+8>>2];F=N[p+24>>2];G=N[p+60>>2];O=N[x+60>>2];R=N[p+44>>2];A=N[x+56>>2];C=N[p+12>>2];t=N[x+48>>2];q=N[p+28>>2];g=N[x+52>>2];N[p+60>>2]=Q(G*O)+Q(Q(R*A)+Q(Q(C*t)+Q(q*g)));N[p+56>>2]=Q(X*O)+Q(Q(Y*A)+Q(Q(_*t)+Q(F*g)));N[p+52>>2]=Q(ha*O)+Q(Q(T*A)+Q(Q(U*t)+Q(S*g)));N[p+48>>2]=Q(fa*O)+Q(Q(z*A)+Q(Q(ea*t)+Q(ga*g)));N[p+44>>2]=Q(G*qa)+Q(Q(R*ra)+Q(Q(C*sa)+Q(q*ba)));N[p+40>>2]=Q(X*qa)+Q(Q(Y*ra)+Q(Q(_*sa)+Q(F*ba)));N[p+36>>2]=Q(ha*qa)+Q(Q(T*ra)+Q(Q(U*sa)+Q(S*ba)));N[p+32>>2]=Q(fa*qa)+Q(Q(z*ra)+Q(Q(ea*sa)+Q(ga*ba)));N[p+28>>2]=Q(G*ma)+Q(Q(R*oa)+Q(Q(C*ca)+Q(q*pa)));N[p+24>>2]=Q(X*ma)+Q(Q(Y*oa)+Q(Q(_*ca)+Q(F*pa)));N[p+20>>2]=Q(ha*ma)+Q(Q(T*oa)+Q(Q(U*ca)+Q(S*pa)));N[p+16>>2]=Q(fa*ma)+Q(Q(z*oa)+Q(Q(ea*ca)+Q(ga*pa)));N[p+12>>2]=Q(G*ja)+Q(Q(R*ka)+Q(Q(C*la)+Q(aa*q)));N[p+8>>2]=Q(X*ja)+Q(Q(Y*ka)+Q(Q(_*la)+Q(aa*F)));N[p+4>>2]=Q(ha*ja)+Q(Q(T*ka)+Q(Q(U*la)+Q(aa*S)));N[p>>2]=Q(fa*ja)+Q(Q(z*ka)+Q(Q(ea*la)+Q(ga*aa)));r=r+1|0;if((d|0)!=(r|0)){continue}break}}x=0;if(v&1){D=J[e+68>>2];a=J[e+76>>2]-D>>4;if(a>>>0>>0){if(H[e+80|0]&1){break b}lj(E,16,e+68|0,e+76|0,e+72|0);D=J[e+68>>2];a=J[e+76>>2]-D>>4}if(a>>>0>>0){break a}J[e+72>>2]=(E<<4)+D}if(v&2){x=J[e+84>>2];a=J[e+92>>2]-x>>4;if(a>>>0>>0){if(H[e+96|0]&1){break b}lj(E,16,e+84|0,e+92|0,e+88|0);x=J[e+84>>2];a=J[e+92>>2]-x>>4}if(a>>>0>>0){break a}J[e+88>>2]=(E<<4)+x}sK(u,j,J[i>>2],J[o>>2],D,x)}D:{if(!(v&4)){v=0;break D}v=0;if(!J[u+44>>2]){break D}v=J[e+100>>2];a=J[e+108>>2]-v>>4;if(a>>>0>>0){if(H[e+112|0]&1){break b}lj(E,16,e+100|0,e+108|0,e+104|0);v=J[e+100>>2];a=J[e+108>>2]-v>>4}if(a>>>0>>0){break a}J[e+104>>2]=(E<<4)+v;v=J[e+116>>2];a=J[e+124>>2]-v>>4;if(a>>>0>>0){if(H[e+128|0]&1){break b}lj(E,16,e+116|0,e+124|0,e+120|0);v=J[e+116>>2];a=J[e+124>>2]-v>>4}if(a>>>0>>0){break a}J[e+120>>2]=(E<<4)+v;w=J[e+100>>2];Ft(f,j);g=N[f+56>>2];N[f+56>>2]=N[f+44>>2];C=N[f+52>>2];N[f+52>>2]=N[f+28>>2];t=N[f+48>>2];N[f+48>>2]=N[f+12>>2];N[f+44>>2]=g;g=N[f+36>>2];N[f+36>>2]=N[f+24>>2];q=N[f+32>>2];N[f+32>>2]=N[f+8>>2];N[f+28>>2]=C;N[f+24>>2]=g;g=N[f+16>>2];N[f+16>>2]=N[f+4>>2];N[f+12>>2]=t;N[f+8>>2]=q;N[f+4>>2]=g;tK(u,f,J[e+52>>2],J[e+56>>2],w,v)}r=0;d=0;d=J[u+68>>2]?J[u+64>>2]:d;r=J[u+80>>2]?J[u+76>>2]:r;o=J[u+60>>2]?J[u+56>>2]:0;c=J[u+92>>2];if(!c){break x}m=J[u+88>>2];a=J[u+96>>2];J[f+156>>2]=r;J[f+152>>2]=d;J[f+148>>2]=j;J[f+144>>2]=k;J[f+140>>2]=D;J[f+136>>2]=x;J[f+132>>2]=w;J[f+128>>2]=v;J[f+124>>2]=o;D=0;ij(f+12|0,0,100);J[f+112>>2]=0;J[f>>2]=s;H[f+48|0]=1;J[f+44>>2]=3;H[f+24|0]=129;J[f+20>>2]=7;H[f+12|0]=129;J[f+8>>2]=7;H[f+96|0]=((r|0)!=0)+((d|0)!=0);H[f+84|0]=1;J[f+80>>2]=4;H[f+72|0]=1;J[f+68>>2]=4;H[f+60|0]=1;J[f+56>>2]=3;H[f+36|0]=1;J[f+32>>2]=3;J[f+92>>2]=2;J[f+40>>2]=f+140;J[f+16>>2]=f+144;J[f+4>>2]=f+148;J[f+88>>2]=f+152;J[f+76>>2]=f+124;J[f+64>>2]=f+128;J[f+52>>2]=f+132;J[f+28>>2]=f+136;a=(a|0)==1;c=c>>>(a?2:1)|0;if(!c){break y}d=a?m:0;if(!d){d=a?0:m;while(1){b=cn(b,L[d+(D<<1)>>1],f);a=D+1|0;D=a;if((a|0)!=(c|0)){continue}break}break y}while(1){b=cn(b,J[d+(D<<2)>>2],f);a=D+1|0;D=a;if((a|0)!=(c|0)){continue}break}}Ui=f+160|0;break w}Z(112102,41144,994,22256);B()}break u}i=J[n+124>>2];w=h+48|0;f=Ui-128|0;Ui=f;E:{o=J[m+108>>2];c=J[c+132>>2];F:{if(!o|!J[c+160>>2]|!(K[c+186|0]&8)){break F}G:{H:{a=J[c+76>>2];if(!a){break H}d=J[a+4>>2];if(!d){break H}e=J[i+52>>2];a=J[i+60>>2]-e>>6;if(a>>>0>>0){if(H[i+64|0]&1){break b}lj(d,64,i+52|0,i+60|0,i+56|0);e=J[i+52>>2];a=J[i+60>>2]-e>>6}if(a>>>0>>0){break a}a=(d<<6)+e|0;J[i+56>>2]=a;qK(J[c+112>>2],J[c+116>>2],e,a);a=J[i+56>>2];k=J[i+52>>2];if((a|0)==(k|0)){break G}a=a-k>>6;d=a>>>0<=1?1:a;a=J[c+68>>2];c=J[a>>2];a=(J[a+4>>2]-c|0)/80|0;e=0;while(1){if((a|0)==(e|0)){break c}m=c+P(e,80)|0;ja=N[m+12>>2];ka=N[m+8>>2];la=N[m>>2];aa=N[m+4>>2];ma=N[m+28>>2];oa=N[m+24>>2];ca=N[m+16>>2];pa=N[m+20>>2];qa=N[m+44>>2];ra=N[m+40>>2];sa=N[m+32>>2];ba=N[m+36>>2];j=k+(e<<6)|0;fa=N[j+48>>2];z=N[j+32>>2];ea=N[j>>2];ga=N[j+16>>2];ha=N[j+52>>2];T=N[j+36>>2];U=N[j+4>>2];S=N[j+20>>2];X=N[j+56>>2];Y=N[j+40>>2];_=N[j+8>>2];F=N[j+24>>2];G=N[j+60>>2];O=N[m+60>>2];R=N[j+44>>2];A=N[m+56>>2];C=N[j+12>>2];t=N[m+48>>2];q=N[j+28>>2];g=N[m+52>>2];N[j+60>>2]=Q(G*O)+Q(Q(R*A)+Q(Q(C*t)+Q(q*g)));N[j+56>>2]=Q(X*O)+Q(Q(Y*A)+Q(Q(_*t)+Q(F*g)));N[j+52>>2]=Q(ha*O)+Q(Q(T*A)+Q(Q(U*t)+Q(S*g)));N[j+48>>2]=Q(fa*O)+Q(Q(z*A)+Q(Q(ea*t)+Q(ga*g)));N[j+44>>2]=Q(G*qa)+Q(Q(R*ra)+Q(Q(C*sa)+Q(q*ba)));N[j+40>>2]=Q(X*qa)+Q(Q(Y*ra)+Q(Q(_*sa)+Q(F*ba)));N[j+36>>2]=Q(ha*qa)+Q(Q(T*ra)+Q(Q(U*sa)+Q(S*ba)));N[j+32>>2]=Q(fa*qa)+Q(Q(z*ra)+Q(Q(ea*sa)+Q(ga*ba)));N[j+28>>2]=Q(G*ma)+Q(Q(R*oa)+Q(Q(C*ca)+Q(q*pa)));N[j+24>>2]=Q(X*ma)+Q(Q(Y*oa)+Q(Q(_*ca)+Q(F*pa)));N[j+20>>2]=Q(ha*ma)+Q(Q(T*oa)+Q(Q(U*ca)+Q(S*pa)));N[j+16>>2]=Q(fa*ma)+Q(Q(z*oa)+Q(Q(ea*ca)+Q(ga*pa)));N[j+12>>2]=Q(G*ja)+Q(Q(R*ka)+Q(Q(C*la)+Q(aa*q)));N[j+8>>2]=Q(X*ja)+Q(Q(Y*ka)+Q(Q(_*la)+Q(aa*F)));N[j+4>>2]=Q(ha*ja)+Q(Q(T*ka)+Q(Q(U*la)+Q(aa*S)));N[j>>2]=Q(fa*ja)+Q(Q(z*ka)+Q(Q(ea*la)+Q(ga*aa)));e=e+1|0;if((d|0)!=(e|0)){continue}break}break G}J[i+56>>2]=J[i+52>>2]}N[f>>2]=N[w>>2];N[f+4>>2]=N[w+4>>2];N[f+8>>2]=N[w+8>>2];N[f+12>>2]=N[w+12>>2];N[f+16>>2]=N[w+16>>2];N[f+20>>2]=N[w+20>>2];N[f+24>>2]=N[w+24>>2];N[f+28>>2]=N[w+28>>2];N[f+32>>2]=N[w+32>>2];N[f+36>>2]=N[w+36>>2];N[f+40>>2]=N[w+40>>2];N[f+44>>2]=N[w+44>>2];N[f+48>>2]=N[w+48>>2];N[f+52>>2]=N[w+52>>2];N[f+56>>2]=N[w+56>>2];N[f+60>>2]=N[w+60>>2];Ft(f- -64|0,f);g=N[f+120>>2];N[f+120>>2]=N[f+108>>2];C=N[f+116>>2];N[f+116>>2]=N[f+92>>2];t=N[f+112>>2];N[f+112>>2]=N[f+76>>2];N[f+108>>2]=g;g=N[f+100>>2];N[f+100>>2]=N[f+88>>2];q=N[f+96>>2];N[f+96>>2]=N[f+72>>2];N[f+92>>2]=C;N[f+88>>2]=g;g=N[f+80>>2];N[f+80>>2]=N[f+68>>2];N[f+76>>2]=t;N[f+72>>2]=q;N[f+68>>2]=g;e=J[i+68>>2];a=J[i+76>>2]-e>>4;d=M[o+36>>2]/3|0;if(a>>>0>>0){if(H[i+80|0]&1){break b}lj(d,16,i+68|0,i+76|0,i+72|0);e=J[i+68>>2];a=J[i+76>>2]-e>>4}if(a>>>0>>0){break a}J[i+72>>2]=(d<<4)+e;e=J[i+100>>2];a=J[i+108>>2]-e>>4;if(a>>>0>>0){if(H[i+112|0]&1){break b}lj(d,16,i+100|0,i+108|0,i+104|0);e=J[i+100>>2];a=J[i+108>>2]-e>>4}if(a>>>0>>0){break a}J[i+104>>2]=(d<<4)+e;r=J[i+116>>2];a=J[i+124>>2]-r>>4;if(a>>>0>>0){if(H[i+128|0]&1){break b}lj(d,16,i+116|0,i+124|0,i+120|0);r=J[i+116>>2];a=J[i+124>>2]-r>>4}if(a>>>0>>0){break a}J[i+120>>2]=(d<<4)+r;v=J[i+100>>2];u=0;d=J[i+68>>2];sK(o,w,J[i+52>>2],J[i+56>>2],d,0);if(J[o+44>>2]){tK(o,f- -64|0,J[i+52>>2],J[i+56>>2],v,r)}c=J[o+36>>2];m=(c>>>0)/3|0;u=J[o+68>>2]?J[o+64>>2]:u;k=0;e=0;e=J[o+80>>2]?J[o+76>>2]:e;k=J[o+60>>2]?J[o+56>>2]:k;a=J[o+92>>2];if(!a){if(c>>>0<3){break F}E=0;while(1){N[b>>2]=N[d>>2];N[b+12>>2]=N[v>>2];N[b+4>>2]=N[d+4>>2];N[b+16>>2]=N[v+4>>2];N[b+8>>2]=N[d+8>>2];N[b+20>>2]=N[v+8>>2];I:{if(!k){J[b+40>>2]=1065353216;g=N[r>>2];J[b+44>>2]=1065353216;N[b+24>>2]=g;g=N[r+4>>2];J[b+48>>2]=1065353216;N[b+28>>2]=g;N[b+32>>2]=N[r+8>>2];na=Q(1);k=0;break I}N[b+40>>2]=N[k>>2];N[b+24>>2]=N[r>>2];N[b+44>>2]=N[k+4>>2];N[b+28>>2]=N[r+4>>2];N[b+48>>2]=N[k+8>>2];N[b+32>>2]=N[r+8>>2];na=N[k+12>>2];k=k+16|0}N[b+52>>2]=na;N[b+36>>2]=N[r+12>>2];na=Q(0);c=0;D=0;ua=Q(0);if(u){D=u+4|0;g=N[u>>2]}else{g=ua}N[b+56>>2]=g;if(e){na=N[e>>2];c=e+4|0}N[b+64>>2]=na;na=Q(0);e=0;u=0;if(D){ua=N[D>>2];u=D+4|0}N[b+60>>2]=ua;if(c){na=N[c>>2];e=c+4|0}d=d+12|0;N[b+68>>2]=na;b=b+72|0;v=v+12|0;r=r+16|0;E=E+1|0;if((m|0)!=(E|0)){continue}break}break F}m=J[o+96>>2]==1;x=a>>>(m?2:1)|0;if(!x){break F}c=0;a=J[o+88>>2];s=m?0:a;p=m?a:0;i=r+12|0;j=r+8|0;w=r+4|0;if(k){while(1){if(p){a=J[p+(c<<2)>>2]}else{a=L[s+(c<<1)>>1]}o=P(a,12);N[b>>2]=N[o+d>>2];N[b+12>>2]=N[o+v>>2];m=o+4|0;N[b+4>>2]=N[m+d>>2];N[b+16>>2]=N[m+v>>2];m=o+8|0;N[b+8>>2]=N[m+d>>2];N[b+20>>2]=N[m+v>>2];o=a<<4;m=o+k|0;N[b+40>>2]=N[m>>2];N[b+24>>2]=N[o+r>>2];N[b+44>>2]=N[m+4>>2];N[b+28>>2]=N[o+w>>2];N[b+48>>2]=N[m+8>>2];N[b+32>>2]=N[j+o>>2];N[b+52>>2]=N[m+12>>2];N[b+36>>2]=N[i+o>>2];a=a<<1;N[b+56>>2]=u?N[(a<<2)+u>>2]:Q(0);N[b+64>>2]=e?N[(a<<2)+e>>2]:Q(0);N[b+60>>2]=u?N[((a<<2)+u|0)+4>>2]:Q(0);N[b+68>>2]=e?N[((a<<2)+e|0)+4>>2]:Q(0);b=b+72|0;c=c+1|0;if((x|0)!=(c|0)){continue}break}break F}if(!u){while(1){if(p){a=J[p+(c<<2)>>2]}else{a=L[s+(c<<1)>>1]}m=P(a,12);N[b>>2]=N[m+d>>2];N[b+12>>2]=N[m+v>>2];k=m+4|0;N[b+4>>2]=N[k+d>>2];N[b+16>>2]=N[k+v>>2];k=m+8|0;N[b+8>>2]=N[k+d>>2];g=N[k+v>>2];J[b+40>>2]=1065353216;N[b+20>>2]=g;k=a<<4;g=N[k+r>>2];J[b+44>>2]=1065353216;N[b+24>>2]=g;g=N[k+w>>2];J[b+48>>2]=1065353216;N[b+28>>2]=g;g=N[j+k>>2];J[b+52>>2]=1065353216;N[b+32>>2]=g;N[b+36>>2]=N[i+k>>2];J:{if(e){J[b+56>>2]=0;a=(a<<3)+e|0;g=N[a>>2];J[b+60>>2]=0;N[b+64>>2]=g;N[b+68>>2]=N[a+4>>2];break J}J[b+56>>2]=0;J[b+60>>2]=0;J[b+64>>2]=0;J[b+68>>2]=0}b=b+72|0;c=c+1|0;if((x|0)!=(c|0)){continue}break F}}while(1){if(p){a=J[p+(c<<2)>>2]}else{a=L[s+(c<<1)>>1]}m=P(a,12);N[b>>2]=N[m+d>>2];N[b+12>>2]=N[m+v>>2];k=m+4|0;N[b+4>>2]=N[k+d>>2];N[b+16>>2]=N[k+v>>2];k=m+8|0;N[b+8>>2]=N[k+d>>2];g=N[k+v>>2];J[b+40>>2]=1065353216;N[b+20>>2]=g;k=a<<4;g=N[k+r>>2];J[b+44>>2]=1065353216;N[b+24>>2]=g;g=N[k+w>>2];J[b+48>>2]=1065353216;N[b+28>>2]=g;g=N[j+k>>2];J[b+52>>2]=1065353216;N[b+32>>2]=g;N[b+36>>2]=N[i+k>>2];N[b+56>>2]=N[(a<<3)+u>>2];a=a<<1;K:{if(e){a=a<<2;N[b+64>>2]=N[a+e>>2];a=a|4;N[b+60>>2]=N[a+u>>2];g=N[a+e>>2];break K}J[b+64>>2]=0;N[b+60>>2]=N[((a<<2)+u|0)+4>>2];g=Q(0)}N[b+68>>2]=g;b=b+72|0;c=c+1|0;if((x|0)!=(c|0)){continue}break}}Ui=f+128|0;break E}}V=V+4|0;if((Ca|0)!=(V|0)){continue}break}break g}J[h+44>>2]=0;b=J[(P(J[V>>2],48)+Ba|0)+16>>2];ia=J[b+120>>2];$=J[b+96>>2];L:{M:{N:{O:{if(!a){b=J[$+208>>2];if(!b){b=J[$+128>>2];d=J[b+28>>2];if(ia>>>0>=(J[b+32>>2]-d|0)/24>>>0){break c}b=J[(d+P(ia,24)|0)+4>>2]}c=sr(J[b>>2],1);if(c){break O}d=0;break M}c=sr(a,1);if(!c){break N}}d=Ca-V|0;W=d>>2;y=J[(P(J[V>>2],48)+Ba|0)+16>>2];b=c?L[c+202>>1]:0;P:{Q:{if(!a){a=J[$+208>>2];if(!a){a=J[$+128>>2];c=J[a+28>>2];if(ia>>>0>=(J[a+32>>2]-c|0)/24>>>0){break c}a=J[(c+P(ia,24)|0)+4>>2]}b=P(b,W);a=J[a>>2];break Q}E=1;b=P(b,W);if(JD(a)){break P}}E=0;b=((L[y+124>>1]|K[y+126|0]<<16)&131070)==131070?d<<5:b}l=b;x=n+84|0;r=n+76|0;d=J[n+84>>2];c=J[n+80>>2];b=d-c|0;if(b>>>0>>0){if(H[n+88|0]&1){break b}lj(d+l-(b+J[r>>2])|0,1,r,x,n+80|0);c=J[n+80>>2]}l=J[n+52>>2];b=J[n+56>>2]-l|0;d=((b|0)/336|0)+1|0;if(d>>>0>(J[n+60>>2]-l|0)/336>>>0){break a}l=l+P(d,336)|0;J[n+56>>2]=l;if((b|0)==-336){break d}u=l-336|0;Ao(u);b=J[$+208>>2];if(!b){b=J[$+128>>2];d=J[b+28>>2];if(ia>>>0>=(J[b+32>>2]-d|0)/24>>>0){break c}b=J[(d+P(ia,24)|0)+4>>2]}b=J[b>>2];J[l-28>>2]=0;J[l-96>>2]=1;J[l-164>>2]=b;w=l-24|0;b=J[y+100>>2];J[w>>2]=J[b+12>>2];da=l-168|0;J[da>>2]=J[b+4>>2];b=J[b+16>>2];J[l-20>>2]=W;J[l-92>>2]=b;J[l-180>>2]=J[n+68>>2];o=l-192|0;J[o>>2]=J[J[y+100>>2]>>2];N[l-320>>2]=N[y>>2];N[l-316>>2]=N[y+4>>2];N[l-312>>2]=N[y+8>>2];N[l-308>>2]=N[y+12>>2];N[l-304>>2]=N[y+16>>2];N[l-300>>2]=N[y+20>>2];N[l-296>>2]=N[y+24>>2];N[l-292>>2]=N[y+28>>2];N[l-288>>2]=N[y+32>>2];N[l-284>>2]=N[y+36>>2];N[l-280>>2]=N[y+40>>2];N[l-276>>2]=N[y+44>>2];N[l-272>>2]=N[y+48>>2];N[l-268>>2]=N[y+52>>2];N[l-264>>2]=N[y+56>>2];N[l-260>>2]=N[y+60>>2];m=l-176|0;J[m>>2]=J[n+72>>2];J[l-188>>2]=Rs(J[n+92>>2]);J[l-36>>2]=J[n+80>>2]-J[n+76>>2];ij(h+608|0,0,336);J[h+936>>2]=336;ij(h+272|0,0,336);J[h+600>>2]=336;if((V|0)!=(Ca|0)){k=l-184|0;W=l-172|0;p=$+252|0;s=$+248|0;i=$+244|0;while(1){e=J[(P(J[V>>2],48)+Ba|0)+16>>2];j=J[e+96>>2];R:{S:{if(!E){if(((L[e+124>>1]|K[e+126|0]<<16)&131070)==131070){break S}}b=L[y+124>>1]|K[y+126|0]<<16;if((b&131070)==131070){b=J[$+248>>2]-J[$+244>>2]>>>3&131070|b&16646145;I[y+124>>1]=b;H[y+126|0]=b>>>16;if(H[$+256|0]&1){break b}lj((J[p>>2]-J[i>>2]>>4)+1|0,16,i,p,s);J[s>>2]=J[p>>2]}b=(L[e+124>>1]|K[e+126|0]<<16)>>>1&65535;d=J[j+244>>2];if(b>>>0>=J[j+248>>2]-d>>4>>>0){break e}l=d+(b<<4)|0;if(!K[l+12|0]){b=J[j+128>>2];d=J[b+28>>2];if(ia>>>0>=(J[b+32>>2]-d|0)/24>>>0){break e}b=d+P(ia,24)|0;FP(va,a,e,J[b+8>>2],J[b+12>>2],l)}b=J[l+4>>2];if(b){b=L[b+200>>1]}else{b=0}if(b){J[W>>2]=J[l+4>>2];b=J[l>>2];J[k>>2]=b;J[n+140>>2]=(Zi[J[79395]](b)|0)+J[n+140>>2]}b=J[l+8>>2];d=b;if(b?L[b+200>>1]:0){J[m>>2]=b}l=h+608|0;ct(a,d,l,J[a+168>>2]==1?2:1);b=J[j+128>>2];j=J[b+28>>2];if(ia>>>0>=(J[b+32>>2]-j|0)/24>>>0){break e}d=0;b=j+P(ia,24)|0;dt(0,65535,J[b+8>>2],J[b+12>>2],l,h+272|0);b=h+208|0;Hx(b,va,e);J[h+204>>2]=e;J[h+200>>2]=b;b=0;j=J[e+108>>2];if(J[j+68>>2]){b=J[j+64>>2]}J[h+192>>2]=b;d=J[j+80>>2]?J[j+76>>2]:d;J[h+196>>2]=d;J[h+188>>2]=J[j+60>>2]?J[j+56>>2]:0;J[h+184>>2]=J[j+36>>2]?J[j+32>>2]:0;J[h+180>>2]=J[j+44>>2]?J[j+40>>2]:0;J[h+176>>2]=J[j+52>>2]?J[j+48>>2]:0;l=h+48|0;ij(l,0,116);pK(l,h+272|0,1,h+204|0,h+200|0,h+184|0,h+180|0,h+176|0,h+188|0,h+192|0,((d|0)!=0)+((b|0)!=0)|0);c=cn(c,0,l);break R}b=J[n+72>>2];if(b){b=L[b+202>>1]}else{b=0}if((b|0)!=128){break i}N[c>>2]=N[e>>2];N[c+4>>2]=N[e+4>>2];N[c+8>>2]=N[e+8>>2];N[c+12>>2]=N[e+12>>2];N[c+16>>2]=N[e+16>>2];N[c+20>>2]=N[e+20>>2];N[c+24>>2]=N[e+24>>2];N[c+28>>2]=N[e+28>>2];N[c+32>>2]=N[e+32>>2];N[c+36>>2]=N[e+36>>2];N[c+40>>2]=N[e+40>>2];N[c+44>>2]=N[e+44>>2];N[c+48>>2]=N[e+48>>2];N[c+52>>2]=N[e+52>>2];N[c+56>>2]=N[e+56>>2];N[c+60>>2]=N[e+60>>2];Hx(h+48|0,va,c);N[c+64>>2]=N[h+48>>2];N[c+68>>2]=N[h+52>>2];N[c+72>>2]=N[h+56>>2];N[c+76>>2]=N[h+60>>2];N[c+80>>2]=N[h+64>>2];N[c+84>>2]=N[h+68>>2];N[c+88>>2]=N[h+72>>2];N[c+92>>2]=N[h+76>>2];N[c+96>>2]=N[h+80>>2];N[c+100>>2]=N[h+84>>2];N[c+104>>2]=N[h+88>>2];N[c+108>>2]=N[h+92>>2];N[c+112>>2]=N[h+96>>2];N[c+116>>2]=N[h+100>>2];N[c+120>>2]=N[h+104>>2];N[c+124>>2]=N[h+108>>2];c=c+128|0}V=V+4|0;if((Ca|0)!=(V|0)){continue}break}}MD(u,$,ia);a=J[$+172>>2];if(a){np(u,a)}Bo(va,u);b=J[r>>2];a=c-b|0;if(a>>>0>J[x>>2]-b>>>0){break a}J[n+80>>2]=a+b;if(K[J[y+100>>2]+20|0]!=K[n+144|0]){J[n+140>>2]=(Zi[J[79401]](J[da>>2])+Zi[J[79395]](J[o>>2])|0)+J[n+140>>2];H[J[y+100>>2]+20|0]=K[n+144|0]}J[n+136>>2]=J[n+136>>2]+J[w>>2];break L}d=JD(a)}if((V|0)==(Ca|0)){break L}while(1){s=J[(P(J[V>>2],48)+Ba|0)+16>>2];w=J[s+120>>2];j=J[s+96>>2];l=a;if(!a){b=J[j+208>>2];if(!b){b=J[j+128>>2];c=J[b+28>>2];if(w>>>0>=(J[b+32>>2]-c|0)/24>>>0){break c}b=J[(c+P(w,24)|0)+4>>2]}l=J[b>>2]}W=J[n+52>>2];b=J[n+56>>2]-W|0;c=((b|0)/336|0)+1|0;if(c>>>0>(J[n+60>>2]-W|0)/336>>>0){break a}da=J[s+100>>2];i=W+P(c,336)|0;J[n+56>>2]=i;if((b|0)==-336){break d}o=i-336|0;Ao(o);b=J[j+208>>2];if(!b){b=J[j+128>>2];c=J[b+28>>2];if(w>>>0>=(J[b+32>>2]-c|0)/24>>>0){break c}b=J[(c+P(w,24)|0)+4>>2]}b=J[b>>2];J[i-28>>2]=0;J[i-96>>2]=1;J[i-164>>2]=b;m=i-24|0;J[m>>2]=J[da+12>>2];k=i-168|0;J[k>>2]=J[da+4>>2];J[i-92>>2]=J[da+16>>2];N[i-320>>2]=N[s>>2];N[i-316>>2]=N[s+4>>2];N[i-312>>2]=N[s+8>>2];N[i-308>>2]=N[s+12>>2];N[i-304>>2]=N[s+16>>2];N[i-300>>2]=N[s+20>>2];N[i-296>>2]=N[s+24>>2];N[i-292>>2]=N[s+28>>2];N[i-288>>2]=N[s+32>>2];N[i-284>>2]=N[s+36>>2];N[i-280>>2]=N[s+40>>2];N[i-276>>2]=N[s+44>>2];N[i-272>>2]=N[s+48>>2];N[i-268>>2]=N[s+52>>2];N[i-264>>2]=N[s+56>>2];N[i-260>>2]=N[s+60>>2];J[i-180>>2]=J[n+68>>2];W=i-192|0;J[W>>2]=J[da>>2];b=L[s+124>>1]|K[s+126|0]<<16;c=b&131070;T:{if((d|(c|0)!=131070)!=1){break T}U:{if((c|0)!=131070){wa=J[j+248>>2];c=J[j+244>>2];break U}b=J[j+248>>2]-J[j+244>>2]>>>3&131070|b&16646145;I[s+124>>1]=b;H[s+126|0]=b>>>16;if(H[j+256|0]&1){break b}lj((J[j+252>>2]-J[j+244>>2]>>4)+1|0,16,j+244|0,j+252|0,j+248|0);wa=J[j+252>>2];J[j+248>>2]=wa;b=L[s+124>>1]|K[s+126|0]<<16;c=J[j+244>>2]}b=b>>>1&65535;if(b>>>0>=wa-c>>4>>>0){break e}da=c+(b<<4)|0;if(!K[da+12|0]){b=J[j+128>>2];c=J[b+28>>2];if(w>>>0>=(J[b+32>>2]-c|0)/24>>>0){break e}b=c+P(w,24)|0;FP(va,l,s,J[b+8>>2],J[b+12>>2],da)}b=J[da+4>>2];if(b){b=L[b+200>>1]}else{b=0}if(!b){break T}J[i-176>>2]=J[da+4>>2];b=J[da>>2];J[i-188>>2]=b;J[n+140>>2]=(Zi[J[79395]](b)|0)+J[n+140>>2]}MD(o,j,w);b=J[j+172>>2];if(b){np(o,b)}Bo(va,o);if(K[J[s+100>>2]+20|0]!=K[n+144|0]){J[n+140>>2]=(Zi[J[79401]](J[k>>2])+Zi[J[79395]](J[W>>2])|0)+J[n+140>>2];H[J[s+100>>2]+20|0]=K[n+144|0]}J[n+136>>2]=J[n+136>>2]+J[m>>2];V=V+4|0;if((Ca|0)!=(V|0)){continue}break}}break f;case 2:a=J[n+80>>2];b=J[n+76>>2];if((a|0)!=(b|0)){Qs(J[n+92>>2],a-b|0,b,1);J[n+140>>2]=J[n+140>>2]+(J[n+80>>2]-J[n+76>>2]|0)}while(1){a=J[n+100>>2]+(c<<4)|0;b=J[a+4>>2];d=J[a>>2];if((b|0)!=(d|0)){a=c<<2;Qs(J[a+J[n+96>>2]>>2],b-d|0,d,1);a=a+J[n+104>>2]|0;J[a>>2]=J[a>>2]+1}c=c+1|0;if((c|0)!=16){continue}break};a=J[n+136>>2];J[78932]=a+J[78932];J[h+32>>2]=a;J[h+36>>2]=0;J[h+16>>2]=a;J[h+20>>2]=0;a=J[n+140>>2];J[78954]=a+J[78954];J[h+24>>2]=a;J[h+28>>2]=0;J[h+8>>2]=a;J[h+12>>2]=0;break f;default:Z(62644,40609,1695,53625);B();case 0:break k}}J[n+136>>2]=0;J[n+140>>2]=0;J[n+80>>2]=J[n+76>>2];J[n+56>>2]=J[n+52>>2];a=J[n+100>>2];J[a+20>>2]=J[a+16>>2];J[a+36>>2]=J[a+32>>2];J[a+52>>2]=J[a+48>>2];J[a+68>>2]=J[a+64>>2];J[a+84>>2]=J[a+80>>2];J[a+100>>2]=J[a+96>>2];J[a+116>>2]=J[a+112>>2];J[a+132>>2]=J[a+128>>2];J[a+4>>2]=J[a>>2];J[a+148>>2]=J[a+144>>2];J[a+164>>2]=J[a+160>>2];J[a+180>>2]=J[a+176>>2];J[a+196>>2]=J[a+192>>2];J[a+212>>2]=J[a+208>>2];J[a+228>>2]=J[a+224>>2];J[a+244>>2]=J[a+240>>2];break f}Z(12664,55193,101,84789);B()}Z(142804,40609,1105,76056);B()}Z(62644,40609,1501,53766);B()}d=J[n+100>>2]+(ia<<4)|0;m=J[d>>2];a=b-m|0;if(a>>>0>J[d+8>>2]-m>>>0){break a}J[d+4>>2]=a+m;o=J[n+52>>2];k=J[n+56>>2]-o|0;a=((k|0)/336|0)+1|0;if(a>>>0>(J[n+60>>2]-o|0)/336>>>0){break a}J[n+56>>2]=o+P(a,336);a=k+336|0;if(!a){break e}c=(b-l>>>0)/(W>>>0)|0;d=(l-m>>>0)/(W>>>0)|0;k=k+o|0;Ao(k);b=(a+o|0)-164|0;a=J[y+208>>2];if(!a){a=J[y+128>>2];l=J[a+28>>2];if($>>>0>=(J[a+32>>2]-l|0)/24>>>0){break c}a=J[(l+P($,24)|0)+4>>2]}J[b>>2]=J[a>>2];J[k+156>>2]=wa;a=Rs(J[da>>2]);J[k+312>>2]=c;J[k+308>>2]=d;J[k+240>>2]=1;J[k+144>>2]=a;J[k+20>>2]=0;J[k+24>>2]=0;J[k+16>>2]=1065353216;J[k+28>>2]=0;J[k+32>>2]=0;J[k+40>>2]=0;J[k+44>>2]=0;J[k+36>>2]=1065353216;J[k+48>>2]=0;J[k+52>>2]=0;J[k+60>>2]=0;J[k+64>>2]=0;J[k+56>>2]=1065353216;J[k+68>>2]=0;J[k+72>>2]=0;J[k+76>>2]=1065353216;MD(k,y,$);a=J[y+172>>2];if(a){np(k,a)}Bo(va,k);a=J[k+312>>2];J[n+136>>2]=a+J[n+136>>2];J[n+140>>2]=J[n+140>>2]+P(a,W)}Ui=h+944|0;return}Z(145396,53895,487,84789);B()}Z(112533,53895,443,51980);B()}Z(145396,53895,494,84789);B()}Z(151729,53895,501,2284);B()}Z(144782,53895,514,59583);B()}function wC(a,b,c,d,e){var f=0,g=0,h=Q(0),i=Q(0),j=Q(0),k=Q(0),l=Q(0),m=Q(0),n=0,o=Q(0),p=Q(0),q=Q(0),r=Q(0),s=0,t=Q(0),u=0,v=Q(0),w=Q(0),x=Q(0),y=Q(0),z=0,A=0,C=0,D=0,E=Q(0),F=Q(0),G=Q(0),I=Q(0),L=Q(0),O=0,T=Q(0),U=0,V=Q(0),W=Q(0),X=Q(0),_=Q(0),$=Q(0),aa=Q(0),ba=Q(0),ca=Q(0),da=Q(0),ea=Q(0),fa=Q(0),ga=Q(0),ha=Q(0),ia=Q(0),ja=Q(0),ka=Q(0),la=Q(0),ma=Q(0),na=Q(0),oa=Q(0),pa=Q(0),qa=Q(0),ra=Q(0),sa=Q(0),ta=Q(0),ua=Q(0),va=Q(0),wa=Q(0),xa=Q(0),ya=Q(0),za=Q(0),Aa=Q(0),Ba=Q(0),Ca=Q(0),Da=Q(0),Ea=Q(0),Fa=Q(0),Ga=Q(0),Ha=Q(0),Ia=Q(0),Ja=Q(0),Ka=Q(0),La=0,Ma=0,Na=0,Oa=0,Pa=0,Qa=0,Ra=0;z=Ui+-64|0;Ui=z;a:{if(!(!J[c+280>>2]|e<=Q(0))){J[z+32>>2]=0;O=c+56|0;f=J[c+60>>2];g=J[c+56>>2];if((f|0)!=(g|0)){n=(f-g|0)/160|0;while(1){f=J[c+56>>2];if((J[c+60>>2]-f|0)/160>>>0<=u>>>0){break a}f=f+P(u,160)|0;h=Q(N[f+64>>2]-e);N[f+64>>2]=h;b:{if(h>2];f=J[O>>2];if((g-f|0)/160>>>0>u>>>0){f=f+P(u,160)|0;N[f>>2]=N[g-160>>2];N[f+4>>2]=N[g-156>>2];N[f+8>>2]=N[g-152>>2];N[f+16>>2]=N[g-144>>2];N[f+20>>2]=N[g-140>>2];N[f+24>>2]=N[g-136>>2];N[f+28>>2]=N[g-132>>2];N[f+32>>2]=N[g-128>>2];N[f+36>>2]=N[g-124>>2];N[f+40>>2]=N[g-120>>2];N[f+44>>2]=N[g-116>>2];N[f+48>>2]=N[g-112>>2];N[f+52>>2]=N[g-108>>2];N[f+56>>2]=N[g-104>>2];s=g-96|0;A=J[s+4>>2];J[f+64>>2]=J[s>>2];J[f+68>>2]=A;A=J[s+12>>2];J[f+72>>2]=J[s+8>>2];J[f+76>>2]=A;A=J[s+20>>2];J[f+80>>2]=J[s+16>>2];J[f+84>>2]=A;J[f+88>>2]=J[s+24>>2];N[f+96>>2]=N[g+-64>>2];N[f+100>>2]=N[g-60>>2];N[f+104>>2]=N[g-56>>2];N[f+108>>2]=N[g-52>>2];N[f+112>>2]=N[g-48>>2];N[f+116>>2]=N[g-44>>2];N[f+120>>2]=N[g-40>>2];N[f+124>>2]=N[g-36>>2];N[f+128>>2]=N[g-32>>2];N[f+132>>2]=N[g-28>>2];N[f+136>>2]=N[g-24>>2];g=g-16|0;s=J[g+4>>2];J[f+144>>2]=J[g>>2];J[f+148>>2]=s;s=J[g+12>>2];J[f+152>>2]=J[g+8>>2];J[f+156>>2]=s;f=J[O+4>>2]-160|0;J[O+4>>2]=f;if(f>>>0>2]){break d}break c}Z(145381,53895,537,43537);B()}Z(12682,53895,540,43537);B()}n=n-1|0;break b}u=u+1|0}if(n>>>0>u>>>0){continue}break}}J[z+16>>2]=0;h=N[c+264>>2];u=J[c+280>>2];e:{f:{g:{h:{if((u|0)!=1){p=Q(e+h);break h}i=N[c+288>>2];if(!(i<=h)){N[c+264>>2]=e+h;break e}J[c+280>>2]=2;f=J[a+72>>2];if(!f){i=Q(e+Q(h-i));h=N[c+284>>2];p=h>i?i:h;N[c+264>>2]=p;break g}Zi[J[a+68>>2]](J[a+16>>2],J[c+128>>2],J[c+132>>2],2,f);p=Q(e+Q(N[c+264>>2]-N[c+288>>2]));N[c+264>>2]=p;u=J[c+280>>2];if((u|0)==1){break e}}h=N[c+284>>2];p=h>p?p:h;N[c+264>>2]=p;if((u|0)!=2){break f}}if(!(!(h<=p)|(K[c+296|0]&4|J[d+4>>2]!=1))){p=Q(p-h);N[c+264>>2]=p}l=h<=Q(0)?Q(0):Q(p/h);h=Q(l*Q(64));i:{if(h=Q(0)){f=~~h>>>0;break i}f=0}g=P(f>>>0>=63?63:f,12)+b|0;h=Q(Q(Q(Q(l-N[g>>2])*N[g+8>>2])+N[g+4>>2])+N[c+292>>2]);h=Q(Q((h>Q(0)?h:Q(0))*e)+N[c+268>>2]);j:{if(h=Q(0)){f=~~h>>>0;break j}f=0}L=N[g+776>>2];V=N[g+780>>2];_=N[g+772>>2];T=N[g+1548>>2];F=N[g+1552>>2];W=N[g+1544>>2];ba=N[g+2320>>2];G=N[g+2324>>2];I=N[g+2316>>2];$=N[g+3092>>2];fa=N[g+3096>>2];ga=N[g+3088>>2];ha=N[g+3864>>2];ia=N[g+3868>>2];ja=N[g+3860>>2];ka=N[g+4636>>2];ea=N[g+4640>>2];da=N[g+4632>>2];la=N[g+5408>>2];ma=N[g+5412>>2];ua=N[g+5404>>2];na=N[g+6180>>2];va=N[g+6184>>2];wa=N[g+6176>>2];oa=N[g+6952>>2];xa=N[g+6956>>2];ya=N[g+6948>>2];pa=N[g+7724>>2];za=N[g+7728>>2];Aa=N[g+7720>>2];qa=N[g+8496>>2];Ba=N[g+8500>>2];Ca=N[g+8492>>2];ra=N[g+9268>>2];Da=N[g+9272>>2];Ea=N[g+9264>>2];sa=N[g+10040>>2];Fa=N[g+10044>>2];Ga=N[g+10036>>2];ta=N[g+10812>>2];Ha=N[g+10816>>2];Ia=N[g+10808>>2];N[c+268>>2]=h-Q(f>>>0);g=(J[c+64>>2]-J[c+60>>2]|0)/160|0;u=g>>>0>>0?g:f;j=N[d+44>>2];v=N[d+40>>2];q=N[d+36>>2];p=N[d+32>>2];X=N[d+24>>2];aa=N[d+20>>2];ca=N[d+16>>2];w=Q(1);k:{if(J[d+12>>2]){i=q;o=v;h=j;v=Q(0);break k}k=N[a+60>>2];w=N[a+44>>2];h=Q(ca*w);m=N[a+52>>2];i=H[a+82|0]&1?Q(X*w):X;r=N[a+56>>2];o=Q(aa*w);x=Q(Q(Q(k*h)+Q(m*i))-Q(r*o));t=N[a+48>>2];y=Q(Q(r*i)+Q(Q(t*h)+Q(m*o)));E=Q(Q(Q(k*o)+Q(r*h))-Q(t*i));h=Q(Q(Q(k*i)+Q(t*o))-Q(m*h));aa=Q(N[a+36>>2]+Q(Q(x*r)+Q(Q(Q(y*m)+Q(k*E))-Q(h*t))));X=Q(N[a+40>>2]+Q(Q(E*t)+Q(Q(Q(y*r)+Q(k*h))-Q(x*m))));ca=Q(N[a+32>>2]+Q(Q(h*m)+Q(Q(Q(y*t)+Q(k*x))-Q(E*r))));h=Q(Q(Q(Q(k*j)-Q(t*p))-Q(m*q))-Q(r*v));o=Q(Q(Q(t*q)+Q(Q(k*v)+Q(j*r)))-Q(m*p));i=Q(Q(Q(r*p)+Q(Q(k*q)+Q(j*m)))-Q(t*v));p=Q(Q(Q(m*v)+Q(Q(k*p)+Q(j*t)))-Q(r*q));j=N[d+68>>2];Ja=Q(j*N[c+104>>2]);Ka=Q(j*N[c+96>>2]);v=Q(j*N[c+100>>2])}if(u){ta=Q(Q(Q(l-Ia)*Ha)+ta);sa=Q(Q(Q(l-Ga)*Fa)+sa);ra=Q(Q(Q(l-Ea)*Da)+ra);qa=Q(Q(Q(l-Ca)*Ba)+qa);pa=Q(Q(Q(l-Aa)*za)+pa);oa=Q(Q(Q(l-ya)*xa)+oa);na=Q(Q(Q(l-wa)*va)+na);la=Q(Q(Q(l-ua)*ma)+la);ka=Q(Q(Q(l-da)*ea)+ka);ha=Q(Q(Q(l-ja)*ia)+ha);fa=Q(Q(Q(l-ga)*fa)+$);ga=Q(Q(Q(l-I)*G)+ba);ia=Q(Q(Q(l-W)*F)+T);ja=Q(Q(Q(l-_)*V)+L);L=Q(-i);_=Q(-p);V=Q(-o);while(1){q=N[b+1540>>2];j=N[b+2312>>2];l=N[b+3084>>2];k=N[b+3856>>2];E=N[b+4628>>2];r=N[b+5400>>2];t=N[b+6172>>2];x=N[b+6944>>2];y=N[b+7716>>2];T=N[b+8488>>2];F=N[b+9260>>2];W=N[b+10032>>2];ba=N[b+10804>>2];G=N[b+11576>>2];n=J[c+276>>2];A=P(n,1454385557)+1345953809|0;J[c+276>>2]=A;J[z+32>>2]=0;f=J[c+56>>2];g=J[c+60>>2]-f|0;s=((g|0)/160|0)+1|0;if(s>>>0>(J[c+64>>2]-f|0)/160>>>0){Z(144782,53895,514,59583);B()}J[c+60>>2]=f+P(s,160);if(g>>>0>=4294967136){break a}m=Q(Q((A>>>16&32767)>>>0)*Q(30518509447574615e-21));I=Q(Q(m+m)+Q(-1));m=Q(Q((P(n,1084380025)-2129044250>>>16&32767)>>>0)*Q(30518509447574615e-21));$=Q(Q(m+m)+Q(-1));m=Q(Q((P(n,1450893357)-2072587105>>>16&32767)>>>0)*Q(30518509447574615e-21));ea=Q(Q(m+m)+Q(-1));m=Q(Q((P(n,-2144597007)-305857012>>>16&32767)>>>0)*Q(30518509447574615e-21));da=Q(Q(m+m)+Q(-1));m=Q(Q((P(n,257342169)+773150046>>>16&32767)>>>0)*Q(30518509447574615e-21));ma=Q(Q(m+m)+Q(-1));m=Q(Q((P(n,1170746341)-755606699>>>16&32767)>>>0)*Q(30518509447574615e-21));j=Q(Q(Q(Q(m+m)+Q(-1))*j)+ia);m=Q(Q((P(n,-1443076087)+505908858>>>16&32767)>>>0)*Q(30518509447574615e-21));m=Q(Q(Q(Q(m+m)+Q(-1))*q)+ja);g=ij(g+f|0,0,160);q=Q(Q((P(n,675975949)-1567142793>>>16&32767)>>>0)*Q(30518509447574615e-21));q=Q(Q(Q(Q(q+q)+Q(-1))*k)+fa);N[g+72>>2]=Q(1)/q;N[g+68>>2]=q;N[g+64>>2]=q-e;f=P(J[c+276>>2],214013)+2531011|0;J[c+276>>2]=f;q=Q(Q((P(n,2137790469)-1763861443>>>16&32767)>>>0)*Q(30518509447574615e-21));N[g+108>>2]=Q(Q(Q(q+q)+Q(-1))*T)+pa;q=Q(Q((P(n,1744563881)+2006221698>>>16&32767)>>>0)*Q(30518509447574615e-21));N[g+104>>2]=Q(Q(Q(q+q)+Q(-1))*y)+oa;q=Q(Q((P(n,-1065380067)-1462599061>>>16&32767)>>>0)*Q(30518509447574615e-21));N[g+100>>2]=Q(Q(Q(q+q)+Q(-1))*x)+na;q=Q(Q((P(n,-191841887)+2115878600>>>16&32767)>>>0)*Q(30518509447574615e-21));N[g+96>>2]=Q(Q(Q(q+q)+Q(-1))*t)+la;q=Q(Q((P(n,203977589)+548247209>>>16&32767)>>>0)*Q(30518509447574615e-21));N[g+80>>2]=w*Q(Q(Q(Q(q+q)+Q(-1))*r)+ka);q=Q(Q((f>>>16&32767)>>>0)*Q(30518509447574615e-21));N[g+76>>2]=Q(q+q)+Q(-1);l:{m:{n:{o:{p:{q:{r:{s:{s=J[d+76>>2];switch(s|0){case 2:break o;case 1:break p;case 4:break q;case 0:break r;case 3:break s;default:break n}}n=P(f,1170746341)-755606699|0;J[c+276>>2]=n;j=Q(Q((P(f,214013)+2531011>>>16&32767)>>>0)*Q(30518509447574615e-21));q=Q(Q(j+j)+Q(-1));l=Q(Y(Q(Q(1)-Q(q*q))));f=P(f,-1443076087)+505908858>>>16&32767;r=Q(Q(Q(((f|0)!=32767?f:0)>>>0)*Q(30518509447574615e-21))*Q(6.2831854820251465));t=Q(l*Hj(r));f=n>>>16&32767;j=Q(Q(m*Q(.5))*Q(Y(Q(Q(((f|0)!=32767?f:0)>>>0)*Q(30518509447574615e-21)))));k=Q(t*j);x=Q(l*Rj(r));m=Q(x*j);y=Q(q*j);break l}n=P(f,-1443076087)+505908858|0;J[c+276>>2]=n;f=P(f,214013)+2531011>>>16&32767;q=Q(Q(Q(((f|0)!=32767?f:0)>>>0)*Q(30518509447574615e-21))*Q(6.2831854820251465));t=Hj(q);f=n>>>16&32767;j=Q(Q(m*Q(.5))*Q(Y(Q(Q(((f|0)!=32767?f:0)>>>0)*Q(30518509447574615e-21)))));k=Q(t*j);x=Rj(q);m=Q(x*j);q=Q(0);y=Q(j*Q(0));break l}n=P(f,-570470319)+159719620|0;J[c+276>>2]=n;x=Q(0);s=P(f,214013)+2531011>>>16&32767;q=Q(Q(Q(((s|0)!=32767?s:0)>>>0)*Q(30518509447574615e-21))*Q(6.2831854820251465));l=Rj(q);r=Hj(q);k=Q(Y(Q(Q((n>>>16&32767)>>>0)*Q(30518509447574615e-21))));q=Q(Q(Q((P(f,-1443076087)+505908858>>>16&32767)>>>0)*Q(30518509447574615e-21))+Q(Q((P(f,1170746341)-755606699>>>16&32767)>>>0)*Q(30518509447574615e-21)));q=Q(m*Q(Q(k*(Q(q+Q(-1))>=Q(0)?Q(Q(2)-q):q))*Q(.5)));y=Q(r*q);k=Q(j*k);m=Q(l*q);j=Q(Q(y*y)+Q(Q(k*k)+Q(m*m)));if(j==Q(0)){t=Q(1);q=Q(0);break l}j=Q(Q(1)/Q(Y(j)));q=Q(y*j);t=Q(k*j);x=Q(m*j);break l}n=P(f,-1443076087)+505908858|0;J[c+276>>2]=n;x=Q(0);l=Q(Q((P(f,214013)+2531011>>>16&32767)>>>0)*Q(30518509447574615e-21));r=Q(Q((n>>>16&32767)>>>0)*Q(30518509447574615e-21));q=Q(Q(j*l)+Q(j*r));k=Q(j-q)>=Q(0)?q:Q(Q(j+j)-q);m=Q(Q(Q(m*Q(-.5))*l)+Q(Q(m*Q(.5))*r));j=Q(Q(k*k)+Q(m*m));t=Q(1);if(j==Q(0)){break m}y=Q(0);j=Q(Q(1)/Q(Y(j)));q=Q(j*Q(0));t=Q(k*j);x=Q(m*j);break l}q=Q(Q((P(n,-570470319)+159719620>>>16&32767)>>>0)*Q(30518509447574615e-21));q=Q(Q(Q(Q(q+q)+Q(-1))*l)+ga);n=P(f,1170746341)-755606699|0;J[c+276>>2]=n;l=Q(Q((n>>>16&32767)>>>0)*Q(30518509447574615e-21));k=Q(Q(l+l)+Q(-1));l=Q(Q((P(f,-1443076087)+505908858>>>16&32767)>>>0)*Q(30518509447574615e-21));l=Q(Q(l+l)+Q(-1));r=Q(Q((P(f,214013)+2531011>>>16&32767)>>>0)*Q(30518509447574615e-21));r=Q(Q(r+r)+Q(-1));if(Q(Q(k*k)+Q(Q(l*l)+Q(r*r)))==Q(0)){while(1){f=P(n,214013);s=P(n,-1443076087);n=P(n,1170746341)-755606699|0;l=Q(Q((n>>>16&32767)>>>0)*Q(30518509447574615e-21));k=Q(Q(l+l)+Q(-1));l=Q(Q((s+505908858>>>16&32767)>>>0)*Q(30518509447574615e-21));l=Q(Q(l+l)+Q(-1));r=Q(Q((f+2531011>>>16&32767)>>>0)*Q(30518509447574615e-21));r=Q(Q(r+r)+Q(-1));if(Q(Q(k*k)+Q(Q(l*l)+Q(r*r)))==Q(0)){continue}break}J[c+276>>2]=n}y=Q(Q(q*Q(.5))*k);k=Q(Q(j*Q(.5))*l);m=Q(Q(m*Q(.5))*r);t=Q(1);x=Q(0);q=Q(0);break l}J[z>>2]=s;dj(3,96107,119092,z);x=Q(0);m=Q(0);k=Q(0);t=Q(0)}q=Q(0);y=Q(0)}T=Q(I*G);ba=Q($*ba);G=Q(ea*W);F=Q(da*F);I=Q(ma*E);f=J[d+64>>2];t:{if((f|0)!=1){r=Q(0);l=Q(0);E=Q(0);j=Q(1);break t}l=Q(x*Q(0));j=Q(Q(Q(q*Q(0))+Q(t+l))+Q(1));W=Q(Y(Q(j+j)));j=Q(Q(1)/W);l=Q(Q(l+Q(q*Q(-0)))*j);r=Q(t*Q(0));E=Q(Q(r-x)*j);r=Q(Q(q-r)*j);j=Q(W*Q(.5))}ea=Q(T+ta);W=Q(ba+sa);ba=Q(G+ra);F=Q(F+qa);T=Q(I+ha);y=Q(w*y);k=Q(w*k);m=Q(w*m);G=Q(Q(_*y)+Q(Q(h*k)+Q(o*m)));I=Q(Q(o*y)+Q(Q(p*m)+Q(i*k)));$=Q(Q(L*m)+Q(Q(h*y)+Q(p*k)));k=Q(Q(V*k)+Q(Q(h*m)+Q(i*y)));N[g+8>>2]=X+Q(Q(G*p)+Q(Q(Q(I*o)+Q(h*$))-Q(k*i)));N[g+4>>2]=aa+Q(Q(k*o)+Q(Q(Q(I*i)+Q(h*G))-Q($*p)));N[g>>2]=ca+Q(Q($*i)+Q(Q(Q(I*p)+Q(h*k))-Q(G*o)));u:{if((f|0)==2){j=Q(Q(F*Q(.01745329238474369))*Q(.5));C=+j*10430.378350470453;v:{if(R(C)<2147483648){f=~~C;break v}f=-2147483648}l=Q(Q((f&511)>>>0)*Q(.001953125));n=J[71566];l=Q(Q(Q(Q(1)-l)*N[n+(f>>>7&508)>>2])+Q(l*N[n+(((f>>>9|0)+1&127)<<2)>>2]));k=Q(0);m=Q(0);C=+Q(j+Q(-1.5707963705062866))*10430.378350470453;w:{if(R(C)<2147483648){f=~~C;break w}f=-2147483648}j=Q(Q((f&511)>>>0)*Q(.001953125));r=Q(Q(Q(Q(1)-j)*N[n+(f>>>7&508)>>2])+Q(j*N[n+(((f>>>9|0)+1&127)<<2)>>2]));break u}G=Q(Q(L*r)+Q(Q(p*l)+Q(Q(h*E)+Q(o*j))));m=Q(Q(F*Q(.01745329238474369))*Q(.5));C=+Q(m+Q(-1.5707963705062866))*10430.378350470453;x:{if(R(C)<2147483648){f=~~C;break x}f=-2147483648}k=Q(Q((f&511)>>>0)*Q(.001953125));n=J[71566];y=Q(Q(Q(Q(1)-k)*N[n+(f>>>7&508)>>2])+Q(k*N[n+(((f>>>9|0)+1&127)<<2)>>2]));$=Q(G*y);k=Q(Q(_*E)+Q(Q(o*r)+Q(Q(h*l)+Q(i*j))));da=Q(k*Q(-0));I=Q(Q(V*E)+Q(Q(L*l)+Q(Q(h*j)-Q(p*r))));C=+m*10430.378350470453;y:{if(R(C)<2147483648){f=~~C;break y}f=-2147483648}m=Q(Q((f&511)>>>0)*Q(.001953125));F=Q(Q(Q(Q(1)-m)*N[n+(f>>>7&508)>>2])+Q(m*N[n+(((f>>>9|0)+1&127)<<2)>>2]));j=Q(Q(V*l)+Q(Q(i*E)+Q(Q(h*r)+Q(p*j))));l=Q(Q(da+Q(Q(I*F)+Q(j*Q(-0))))-$);r=Q(G*Q(0));E=Q(I*Q(0));m=Q(Q(r+Q(E+Q(k*F)))-Q(j*y));k=Q(Q(Q(k*y)+Q(E+Q(j*F)))-r);r=Q(da+Q(Q(j*Q(0))+Q(Q(I*y)+Q(G*F))))}N[g+148>>2]=ba;N[g+84>>2]=ba;N[g+44>>2]=l;N[g+40>>2]=r;N[g+36>>2]=m;N[g+32>>2]=k;N[g+28>>2]=l;N[g+24>>2]=r;N[g+20>>2]=m;N[g+16>>2]=k;N[g+156>>2]=ea;N[g+152>>2]=W;N[g+88>>2]=W;j=Q(w*Q(T*q));q=Q(w*Q(T*t));l=Q(w*Q(T*x));k=Q(Q(_*j)+Q(Q(h*q)+Q(o*l)));m=Q(Q(o*j)+Q(Q(p*l)+Q(i*q)));r=Q(Q(L*l)+Q(Q(h*j)+Q(p*q)));j=Q(Q(V*q)+Q(Q(h*l)+Q(i*j)));N[g+56>>2]=Ja+Q(Q(k*p)+Q(Q(Q(m*o)+Q(h*r))-Q(j*i)));N[g+52>>2]=v+Q(Q(j*o)+Q(Q(Q(m*i)+Q(h*k))-Q(r*p)));N[g+48>>2]=Ka+Q(Q(r*i)+Q(Q(Q(m*p)+Q(h*j))-Q(k*o)));U=U+1|0;if((u|0)!=(U|0)){continue}break}}u=K[c+296|0];if(!(!(N[c+264>>2]>=N[c+284>>2])|!(u&4)&J[d+4>>2]==1)){f=J[c+280>>2];z:{if(!f){break z}J[c+280>>2]=3;if((f|0)==3){break z}f=J[a+72>>2];if(!f){break z}Zi[J[a+68>>2]](J[a+16>>2],J[c+128>>2],J[c+132>>2],3,f);u=K[c+296|0]}H[c+296|0]=u&251}u=J[c+280>>2]}if((u|0)!=3|J[c+60>>2]!=J[c+56>>2]){break e}J[c+280>>2]=0;f=J[a+72>>2];if(!f){break e}g=J[a+16>>2]-1|0;J[a+16>>2]=g;Zi[J[a+68>>2]](g,J[c+128>>2],J[c+132>>2],0,f)}g=J[c+60>>2];f=J[c+56>>2];if((g|0)!=(f|0)){i=Q(Q(1)/N[b+18564>>2]);g=(g-f|0)/160|0;s=g>>>0<=1?1:g;u=0;while(1){g=J[c+56>>2];if((J[c+60>>2]-g|0)/160>>>0<=u>>>0){break a}g=g+P(u,160)|0;h=Q(Q(Q(1)-Q(N[g+64>>2]*i))*Q(65535));h=hQ(65535)?Q(65535):h;A:{if(h=Q(0)){n=~~h>>>0;break A}n=0}J[g+144>>2]=(g-f|0)/160&65535|n<<16;u=u+1|0;if((s|0)!=(u|0)){continue}break}}u=0;J[z+32>>2]=0;f=J[c+56>>2];g=J[c+60>>2];LF(f,g,z+16|0,(g|0)!=(f|0)?62-(S((g-f|0)/160|0)<<1)|0:0,1);J[z+60>>2]=0;f=J[c+60>>2];A=J[c+56>>2];n=(f-A|0)/160|0;U=(f|0)==(A|0);if(!U){La=b+11580|0;Ma=n>>>0<=1?1:n;Na=b+16984|0;Oa=b+16212|0;Pa=b+14668|0;Qa=b+13896|0;Ra=b+13124|0;f=b+12352|0;while(1){g=A+P(u,160)|0;h=N[g+68>>2]<=Q(0)?Q(0):Q(Q(1)-Q(N[g+64>>2]*N[g+72>>2]));i=Q(h*Q(64));B:{if(i=Q(0)){s=~~i>>>0;break B}s=0}s=P(s>>>0>=63?63:s,12);D=s+f|0;o=N[D+4>>2];j=N[D+8>>2];v=N[D>>2];D=s+Ra|0;q=N[D+4>>2];p=N[D+8>>2];l=N[D>>2];D=s+Qa|0;k=N[D+4>>2];m=N[D+8>>2];r=N[D>>2];D=s+Pa|0;w=N[D+4>>2];t=N[D+8>>2];x=N[D>>2];D=s+Na|0;y=N[D+4>>2];E=N[D+8>>2];X=N[D>>2];D=s+Oa|0;L=N[D+4>>2];V=N[D+8>>2];aa=N[D>>2];ca=N[g+96>>2];_=N[g+100>>2];T=N[g+104>>2];F=N[g+108>>2];s=s+La|0;i=Q(Q(Q(h-N[s>>2])*N[s+8>>2])+N[s+4>>2]);N[g+136>>2]=i;N[g+132>>2]=i;N[g+128>>2]=i;N[g+148>>2]=Q(L+Q(V*Q(h-aa)))+N[g+84>>2];N[g+152>>2]=Q(y+Q(E*Q(h-X)))+N[g+88>>2];i=Q(F*Q(w+Q(t*Q(h-x))));N[g+124>>2]=iQ(1)?Q(1):i;i=Q(T*Q(k+Q(m*Q(h-r))));N[g+120>>2]=iQ(1)?Q(1):i;i=Q(_*Q(q+Q(p*Q(h-l))));N[g+116>>2]=iQ(1)?Q(1):i;h=Q(ca*Q(o+Q(j*Q(h-v))));N[g+112>>2]=hQ(1)?Q(1):h;u=u+1|0;if((Ma|0)!=(u|0)){continue}break}}C:{D:{switch(J[d+64>>2]-2|0){default:if(U){break C}s=n>>>0<=1?1:n;U=b+15440|0;n=J[71566];u=0;while(1){f=A+P(u,160)|0;i=N[f+68>>2]<=Q(0)?Q(0):Q(Q(1)-Q(N[f+64>>2]*N[f+72>>2]));h=Q(i*Q(64));E:{if(h=Q(0)){g=~~h>>>0;break E}g=0}j=N[f+24>>2];g=U+P(g>>>0>=63?63:g,12)|0;i=Q(Q(Q(Q(Q(i-N[g>>2])*N[g+8>>2])+N[g+4>>2])*Q(.01745329238474369))*Q(.5));C=+Q(i+Q(-1.5707963705062866))*10430.378350470453;F:{if(R(C)<2147483648){g=~~C;break F}g=-2147483648}h=Q(Q((g&511)>>>0)*Q(.001953125));h=Q(Q(Q(Q(1)-h)*N[n+(g>>>7&508)>>2])+Q(N[n+(((g>>>9|0)+1&127)<<2)>>2]*h));p=Q(j*h);v=N[f+20>>2];l=Q(v*Q(-0));q=N[f+28>>2];C=+i*10430.378350470453;G:{if(R(C)<2147483648){g=~~C;break G}g=-2147483648}i=Q(Q((g&511)>>>0)*Q(.001953125));i=Q(Q(Q(Q(1)-i)*N[n+(g>>>7&508)>>2])+Q(N[n+(((g>>>9|0)+1&127)<<2)>>2]*i));o=N[f+16>>2];N[f+44>>2]=Q(l+Q(Q(q*i)+Q(o*Q(-0))))-p;p=Q(j*Q(0));k=Q(q*Q(0));N[f+36>>2]=Q(p+Q(k+Q(v*i)))-Q(o*h);N[f+32>>2]=Q(Q(v*h)+Q(k+Q(o*i)))-p;N[f+40>>2]=l+Q(Q(o*Q(0))+Q(Q(q*h)+Q(j*i)));u=u+1|0;if((s|0)!=(u|0)){continue}break};break C;case 0:if(U){break C}s=n>>>0<=1?1:n;U=b+15440|0;n=J[71566];u=0;while(1){f=A+P(u,160)|0;i=N[f+68>>2]<=Q(0)?Q(0):Q(Q(1)-Q(N[f+64>>2]*N[f+72>>2]));h=Q(i*Q(64));H:{if(h=Q(0)){g=~~h>>>0;break H}g=0}p=N[f+24>>2];g=U+P(g>>>0>=63?63:g,12)|0;o=Q(Q(Q(Q(Q(i-N[g>>2])*N[g+8>>2])+N[g+4>>2])*Q(.01745329238474369))*Q(.5));C=+Q(o+Q(-1.5707963705062866))*10430.378350470453;I:{if(R(C)<2147483648){g=~~C;break I}g=-2147483648}h=Q(Q((g&511)>>>0)*Q(.001953125));i=Q(Q(Q(Q(1)-h)*N[n+(g>>>7&508)>>2])+Q(N[n+(((g>>>9|0)+1&127)<<2)>>2]*h));h=Q(p*i);v=N[f+20>>2];k=Q(v*Q(-0));l=N[f+28>>2];C=+o*10430.378350470453;J:{if(R(C)<2147483648){g=~~C;break J}g=-2147483648}o=Q(Q((g&511)>>>0)*Q(.001953125));o=Q(Q(Q(Q(1)-o)*N[n+(g>>>7&508)>>2])+Q(N[n+(((g>>>9|0)+1&127)<<2)>>2]*o));q=N[f+16>>2];h=Q(Q(k+Q(Q(l*o)+Q(q*Q(-0))))-h);N[f+44>>2]=h;m=Q(p*Q(0));r=Q(l*Q(0));j=Q(Q(m+Q(r+Q(v*o)))-Q(q*i));N[f+36>>2]=j;v=Q(Q(Q(v*i)+Q(r+Q(q*o)))-m);N[f+32>>2]=v;q=Q(k+Q(Q(q*Q(0))+Q(Q(l*i)+Q(p*o))));N[f+40>>2]=q;k=N[f+56>>2];m=N[f+52>>2];r=N[f+48>>2];w=Q(Q(k*k)+Q(Q(m*m)+Q(r*r)));if(w>Q(9999999747378752e-20)){p=Q(1);i=Q(0);o=Q(0);l=Q(0);t=k;k=Q(Q(1)/Q(Y(w)));w=Q(t*k);t=Q(m*k);m=Q(r*k);k=Q(Q(Q(w*Q(0))+Q(t+Q(m*Q(0))))+Q(1));if((k>=Q(0)?k:Q(-k))>Q(9999999747378752e-20)){l=Q(t*Q(0));k=Q(Y(Q(k+k)));i=Q(Q(1)/k);p=Q(Q(l-m)*i);o=Q(Q(Q(m*Q(0))+Q(w*Q(-0)))*i);i=Q(Q(w-l)*i);l=Q(k*Q(.5))}N[f+44>>2]=Q(Q(Q(h*l)-Q(v*i))-Q(j*o))-Q(q*p);N[f+40>>2]=Q(Q(v*o)+Q(Q(h*p)+Q(q*l)))-Q(j*i);N[f+36>>2]=Q(Q(q*i)+Q(Q(h*o)+Q(j*l)))-Q(v*p);N[f+32>>2]=Q(Q(j*p)+Q(Q(h*i)+Q(v*l)))-Q(q*o)}u=u+1|0;if((s|0)!=(u|0)){continue}break};break C;case 1:break D}}if(U){break C}u=n>>>0<=1?1:n;s=b+17756|0;n=0;while(1){f=A+P(n,160)|0;i=N[f+68>>2]<=Q(0)?Q(0):Q(Q(1)-Q(N[f+64>>2]*N[f+72>>2]));h=Q(i*Q(64));K:{if(h=Q(0)){g=~~h>>>0;break K}g=0}o=N[f+40>>2];g=s+P(g>>>0>=63?63:g,12)|0;i=Q(Q(e*Q(Q(Q(Q(Q(i-N[g>>2])*N[g+8>>2])+N[g+4>>2])*N[f+156>>2])*Q(.01745329238474369)))*Q(.5));h=Hj(i);j=N[f+44>>2];i=Rj(i);q=N[f+36>>2];p=Q(q*Q(-0));v=N[f+32>>2];N[f+44>>2]=Q(p+Q(Q(j*i)+Q(v*Q(-0))))-Q(o*h);N[f+40>>2]=p+Q(Q(v*Q(0))+Q(Q(j*h)+Q(o*i)));o=Q(o*Q(0));j=Q(j*Q(0));N[f+36>>2]=Q(o+Q(j+Q(q*i)))-Q(v*h);N[f+32>>2]=Q(Q(q*h)+Q(j+Q(v*i)))-o;n=n+1|0;if((u|0)!=(n|0)){continue}break}}q=Q(1);q=J[d+12>>2]?q:N[a+44>>2];L:{f=J[b+18532>>2];g=J[b+18528>>2];if((f|0)==(g|0)){break L}h=N[d+8>>2];v=h<=Q(0)?Q(0):Q(N[c+264>>2]/h);f=(f-g|0)/1544|0;U=f>>>0<=1?1:f;u=0;M:{while(1){f=J[b+18528>>2];if((J[b+18532>>2]-f|0)/1544>>>0>u>>>0){if(M[d+104>>2]<=u>>>0){break M}f=f+P(u,1544)|0;N:{O:{P:{Q:{R:{n=J[d+100>>2]+(u<<6)|0;switch(J[n>>2]){case 3:break O;case 2:break P;case 1:break Q;case 0:break R;default:break N}}h=N[d+44>>2];i=N[n+44>>2];o=N[d+32>>2];j=N[n+32>>2];p=N[d+36>>2];l=N[n+36>>2];k=N[d+40>>2];m=N[n+40>>2];N[z+44>>2]=Q(Q(Q(h*i)-Q(o*j))-Q(p*l))-Q(k*m);N[z+40>>2]=Q(Q(o*l)+Q(Q(h*m)+Q(i*k)))-Q(p*j);N[z+36>>2]=Q(Q(k*j)+Q(Q(h*l)+Q(i*p)))-Q(o*m);N[z+32>>2]=Q(Q(p*m)+Q(Q(h*j)+Q(o*i)))-Q(k*l);h=Q(v*Q(64));S:{if(h=Q(0)){g=~~h>>>0;break S}g=0}g=P(g>>>0>=63?63:g,12)+f|0;h=N[g>>2];i=N[g+8>>2];o=N[g+4>>2];g=J[O+4>>2];n=J[O>>2];if((g|0)!=(n|0)){t=Q(Q(Q(v-h)*i)+o);h=N[z+44>>2];p=N[216209];l=N[216208];i=N[z+40>>2];o=N[z+32>>2];k=N[216210];m=Q(Q(Q(h*p)+Q(l*i))-Q(o*k));j=N[z+36>>2];r=Q(Q(i*k)+Q(Q(o*l)+Q(j*p)));w=Q(Q(Q(h*k)+Q(p*o))-Q(j*l));p=Q(Q(Q(h*l)+Q(j*k))-Q(i*p));l=Q(q*Q(e*Q(Q(m*o)+Q(Q(Q(r*i)+Q(h*w))-Q(p*j)))));k=Q(q*Q(e*Q(Q(p*i)+Q(Q(Q(r*j)+Q(h*m))-Q(w*o)))));i=Q(q*Q(e*Q(Q(w*j)+Q(Q(Q(r*o)+Q(h*p))-Q(m*i)))));o=N[f+768>>2];f=(g-n|0)/160|0;s=f>>>0<=1?1:f;g=0;while(1){f=n+P(g,160)|0;h=Q(Q(o*N[f+76>>2])+t);N[f+56>>2]=N[f+56>>2]+Q(l*h);N[f+52>>2]=N[f+52>>2]+Q(k*h);N[f+48>>2]=N[f+48>>2]+Q(i*h);g=g+1|0;if((s|0)!=(g|0)){continue}break}}break N}h=N[d+44>>2];i=N[n+44>>2];o=N[d+32>>2];j=N[n+32>>2];p=N[d+36>>2];l=N[n+36>>2];k=N[d+40>>2];m=N[n+40>>2];N[z+44>>2]=Q(Q(Q(h*i)-Q(o*j))-Q(p*l))-Q(k*m);N[z+40>>2]=Q(Q(o*l)+Q(Q(h*m)+Q(i*k)))-Q(p*j);N[z+36>>2]=Q(Q(k*j)+Q(Q(h*l)+Q(i*p)))-Q(o*m);N[z+32>>2]=Q(Q(p*m)+Q(Q(h*j)+Q(o*i)))-Q(k*l);p=N[216213];h=N[z+32>>2];l=N[216214];i=N[z+44>>2];k=N[216212];o=N[z+36>>2];j=N[z+40>>2];m=Q(v*Q(64));T:{if(m=Q(0)){g=~~m>>>0;break T}g=0}A=J[O+4>>2];s=J[O>>2];U:{if((A|0)==(s|0)){break U}g=f+P(g>>>0>=63?63:g,12)|0;m=Q(Q(Q(v-N[g>>2])*N[g+8>>2])+N[g+4>>2]);r=N[f+768>>2];f=(A-s|0)/160|0;A=f>>>0<=1?1:f;f=0;if(!J[n+4>>2]){while(1){g=s+P(f,160)|0;h=N[g+56>>2];j=h;h=Q(e*Q(Q(r*N[g+76>>2])+m));h=h>2]=j-Q(j*h);i=N[g+52>>2];N[g+52>>2]=i-Q(i*h);i=N[g+48>>2];N[g+48>>2]=i-Q(i*h);f=f+1|0;if((A|0)!=(f|0)){continue}break U}}w=Q(Q(Q(i*p)+Q(k*j))-Q(h*l));t=Q(Q(j*l)+Q(Q(h*k)+Q(o*p)));x=Q(Q(Q(i*l)+Q(p*h))-Q(o*k));p=Q(Q(Q(i*k)+Q(o*l))-Q(j*p));l=Q(Q(w*h)+Q(Q(Q(t*j)+Q(i*x))-Q(p*o)));k=Q(Q(p*j)+Q(Q(Q(t*o)+Q(i*w))-Q(x*h)));h=Q(Q(x*o)+Q(Q(Q(t*h)+Q(i*p))-Q(w*j)));while(1){g=s+P(f,160)|0;i=N[g+56>>2];t=i;j=N[g+52>>2];p=N[g+48>>2];i=Q(Q(i*l)+Q(Q(j*k)+Q(h*p)));o=Q(e*Q(Q(r*N[g+76>>2])+m));o=o>2]=t-Q(Q(l*i)*o);N[g+52>>2]=j-Q(Q(k*i)*o);N[g+48>>2]=p-Q(Q(h*i)*o);f=f+1|0;if((A|0)!=(f|0)){continue}break}}break N}g=z+32|0;DM(g,a,d,n);h=Q(v*Q(64));V:{if(h=Q(0)){n=~~h>>>0;break V}n=0}A=J[O+4>>2];s=J[O>>2];if((A|0)!=(s|0)){n=f+P(n>>>0>=63?63:n,12)|0;V=Q(Q(Q(v-N[n>>2])*N[n+8>>2])+N[n+4>>2]);m=Q(q*e);h=Q(q*N[f+776>>2]);aa=Q(h*h);ca=N[f+768>>2];f=(A-s|0)/160|0;A=f>>>0<=1?1:f;p=N[216205];l=N[216206];k=N[216204];_=N[g+8>>2];T=N[g+4>>2];F=N[g>>2];g=0;while(1){f=s+P(g,160)|0;r=Q(N[f+8>>2]-_);w=Q(N[f+4>>2]-T);t=Q(N[f>>2]-F);W=Q(Q(r*r)+Q(Q(w*w)+Q(t*t)));x=Q(aa-W)>=Q(0)?Q(Q(ca*N[f+76>>2])+V):Q(0);h=N[f+44>>2];i=N[f+40>>2];o=N[f+32>>2];y=Q(Q(Q(h*p)+Q(i*k))-Q(o*l));j=N[f+36>>2];E=Q(Q(i*l)+Q(Q(o*k)+Q(j*p)));X=Q(Q(Q(h*l)+Q(o*p))-Q(j*k));L=Q(Q(Q(h*k)+Q(j*l))-Q(i*p));n=W<=Q(0);r=n?Q(Q(y*o)+Q(Q(Q(E*i)+Q(h*X))-Q(L*j))):r;G=r;I=Q(r*r);r=n?Q(Q(L*i)+Q(Q(Q(E*j)+Q(h*y))-Q(X*o))):w;h=n?Q(Q(X*j)+Q(Q(Q(E*o)+Q(h*L))-Q(y*i))):t;i=Q(Q(1)/Q(Y(Q(I+Q(Q(r*r)+Q(h*h))))));N[f+56>>2]=N[f+56>>2]+Q(m*Q(x*Q(G*i)));N[f+52>>2]=N[f+52>>2]+Q(m*Q(x*Q(r*i)));N[f+48>>2]=N[f+48>>2]+Q(m*Q(x*Q(h*i)));g=g+1|0;if((A|0)!=(g|0)){continue}break}}break N}g=z+32|0;DM(g,a,d,n);h=N[d+44>>2];i=N[n+44>>2];o=N[d+32>>2];j=N[n+32>>2];p=N[d+36>>2];l=N[n+36>>2];k=N[d+40>>2];m=N[n+40>>2];N[z+28>>2]=Q(Q(Q(h*i)-Q(o*j))-Q(p*l))-Q(k*m);N[z+24>>2]=Q(Q(o*l)+Q(Q(h*m)+Q(i*k)))-Q(p*j);N[z+20>>2]=Q(Q(k*j)+Q(Q(h*l)+Q(i*p)))-Q(o*m);N[z+16>>2]=Q(Q(p*m)+Q(Q(h*j)+Q(o*i)))-Q(k*l);p=N[216221];h=N[z+16>>2];l=N[216222];i=N[z+28>>2];k=N[216220];o=N[z+20>>2];j=N[z+24>>2];m=N[216217];r=N[216218];w=N[216216];t=Q(v*Q(64));W:{if(t=Q(0)){n=~~t>>>0;break W}n=0}A=J[O+4>>2];s=J[O>>2];if((A|0)!=(s|0)){t=Q(Q(Q(i*p)+Q(j*k))-Q(h*l));x=Q(Q(j*l)+Q(Q(h*k)+Q(o*p)));y=Q(Q(Q(i*l)+Q(h*p))-Q(o*k));p=Q(Q(Q(i*k)+Q(o*l))-Q(j*p));E=Q(Q(t*h)+Q(Q(Q(x*j)+Q(i*y))-Q(p*o)));X=Q(Q(p*j)+Q(Q(Q(x*o)+Q(i*t))-Q(y*h)));y=Q(Q(y*o)+Q(Q(Q(x*h)+Q(i*p))-Q(t*j)));k=Q(Q(Q(i*m)+Q(w*j))-Q(h*r));t=Q(Q(j*r)+Q(Q(h*w)+Q(o*m)));x=Q(Q(Q(i*r)+Q(m*h))-Q(o*w));m=Q(Q(Q(i*w)+Q(o*r))-Q(j*m));p=Q(Q(k*h)+Q(Q(Q(t*j)+Q(i*x))-Q(m*o)));l=Q(Q(m*j)+Q(Q(Q(t*o)+Q(i*k))-Q(x*h)));h=Q(Q(x*o)+Q(Q(Q(t*h)+Q(i*m))-Q(k*j)));n=f+P(n>>>0>=63?63:n,12)|0;w=Q(Q(Q(v-N[n>>2])*N[n+8>>2])+N[n+4>>2]);o=Q(q*e);i=Q(q*N[f+776>>2]);t=Q(i*i);x=N[f+768>>2];f=(A-s|0)/160|0;A=f>>>0<=1?1:f;L=N[g+8>>2];V=N[g+4>>2];aa=N[g>>2];g=0;while(1){f=s+P(g,160)|0;i=Q(N[f+8>>2]-L);j=Q(N[f+4>>2]-V);m=Q(N[f>>2]-aa);k=Q(Q(i*p)+Q(Q(j*l)+Q(h*m)));i=Q(i-Q(p*k));j=Q(j-Q(l*k));k=Q(m-Q(h*k));m=Q(t-Q(Q(i*i)+Q(Q(j*j)+Q(k*k))))>=Q(0)?Q(Q(x*N[f+76>>2])+w):Q(0);r=Q(Q(h*j)-Q(l*k));k=Q(Q(p*k)-Q(h*i));i=Q(Q(l*i)-Q(p*j));n=Q(Q(r*r)+Q(Q(k*k)+Q(i*i)))<=Q(0);j=n?E:r;k=n?X:k;r=n?y:i;i=Q(Q(1)/Q(Y(Q(Q(j*j)+Q(Q(k*k)+Q(r*r))))));N[f+56>>2]=N[f+56>>2]+Q(o*Q(m*Q(j*i)));N[f+52>>2]=N[f+52>>2]+Q(o*Q(m*Q(k*i)));N[f+48>>2]=N[f+48>>2]+Q(o*Q(m*Q(r*i)));g=g+1|0;if((A|0)!=(g|0)){continue}break}}}u=u+1|0;if((U|0)!=(u|0)){continue}break L}break}break a}Z(12664,55442,241,84789);B()}a=J[c+60>>2];b=J[c+56>>2];if((a|0)!=(b|0)){a=(a-b|0)/160|0;f=a>>>0<=1?1:a;c=0;d=H[d+120|0]&1;while(1){a=b+P(c,160)|0;i=N[a+56>>2];N[a+8>>2]=N[a+8>>2]+Q(e*i);o=N[a+52>>2];N[a+4>>2]=N[a+4>>2]+Q(e*o);j=N[a+48>>2];N[a>>2]=N[a>>2]+Q(e*j);h=N[a+128>>2];N[a+128>>2]=Q(h*N[a+148>>2])+h;v=N[a+152>>2];h=N[a+132>>2];if(d){j=Q(Q(Q(Q(Y(Q(Q(i*i)+Q(Q(o*o)+Q(j*j)))))*Q(h*v))*Q(.008333333767950535))+h)}else{j=Q(Q(h*v)+h)}N[a+132>>2]=j;c=c+1|0;if((f|0)!=(c|0)){continue}break}}}Ui=z- -64|0;return}Z(145396,53895,487,84789);B()}function sJ(a,b,c,d){var e=0,f=0,g=0,h=0,i=0,j=0,k=0,l=0,m=0,n=0,o=0,p=0,q=0,r=0,s=0,t=0,u=0,v=0,w=0,x=0,y=0,z=0,A=0,C=0,D=0,E=0,F=0,G=0,N=0,O=0,P=0,Q=0,R=0,S=0,T=0,U=0,V=0,W=0,X=0,Y=0,_=0,$=0;t=Ui-16448|0;Ui=t;J[t+16432>>2]=0;J[t+16424>>2]=0;J[t+16428>>2]=0;J[t+16392>>2]=0;J[t+16396>>2]=0;a:{b:{n=t+16392|0;e=-6;c:{d:{if(K[3576]!=49){break d}e=-2;if(!n){break c}J[n+24>>2]=0;f=J[n+32>>2];if(!f){J[n+40>>2]=0;J[n+32>>2]=2312;f=2312}if(!J[n+36>>2]){J[n+36>>2]=2313}f=Zi[f|0](J[n+40>>2],1,7120)|0;e=-4;if(!f){break c}J[n+28>>2]=f;J[f+56>>2]=0;J[f>>2]=n;J[f+4>>2]=16180;h=-2;e:{if(!n|!J[n+32>>2]){break e}j=J[n+36>>2];if(!j){break e}e=J[n+28>>2];if(!e|(n|0)!=J[e>>2]|J[e+4>>2]-16180>>>0>31){break e}k=J[e+56>>2];f:{if(!(J[e+40>>2]!=15?k:0)){J[e+40>>2]=15;J[e+12>>2]=7;break f}Zi[j|0](J[n+40>>2],k);J[e+56>>2]=0;j=J[n+32>>2];J[e+40>>2]=15;J[e+12>>2]=7;if(!j){break e}}if(!J[n+36>>2]){break e}e=J[n+28>>2];if(!e|(n|0)!=J[e>>2]|J[e+4>>2]-16180>>>0>31){break e}h=0;J[e+52>>2]=0;J[e+44>>2]=0;J[e+48>>2]=0;J[e+32>>2]=0;J[n+8>>2]=0;J[n+20>>2]=0;J[n+24>>2]=0;j=J[e+12>>2];if(j){J[n+48>>2]=j&1}J[e+60>>2]=0;J[e+64>>2]=0;J[e+36>>2]=0;J[e+24>>2]=32768;J[e+16>>2]=0;J[e+20>>2]=-1;J[e+4>>2]=16180;J[e+8>>2]=0;J[e+7108>>2]=1;J[e+7112>>2]=-1;j=e+1332|0;J[e+112>>2]=j;J[e+84>>2]=j;J[e+80>>2]=j}e=0;if(!h){break d}Zi[J[n+36>>2]](J[n+40>>2],f);J[n+28>>2]=0;e=h}}f=e+6|0;if(f>>>0<=8){if((f|0)!=6){break a}J[t+16392>>2]=a;J[t+16396>>2]=b;while(1){J[t+16408>>2]=16384;J[t+16404>>2]=t;n=0;u=Ui-16|0;Ui=u;A=-2;m=t+16392|0;g:{if(!m|!J[m+32>>2]|!J[m+36>>2]){break g}g=J[m+28>>2];if(!g|J[g>>2]!=(m|0)){break g}h=J[g+4>>2];if(h-16180>>>0>31){break g}p=J[m+12>>2];if(!p){break g}a=J[m>>2];if(!(J[m+4>>2]?a:1)){break g}if((h|0)==16191){J[g+4>>2]=16192;h=16192}U=g+92|0;E=g+756|0;N=g+88|0;F=g+112|0;D=g+1332|0;x=g+116|0;e=J[g+64>>2];i=J[g+60>>2];G=J[m+4>>2];f=G;o=J[m+16>>2];v=o;h:{i:{j:{k:{l:{m:while(1){b=-3;n:{o:{p:{q:{r:{s:{t:{u:{v:{w:{x:{y:{z:{A:{B:{C:{D:{E:{F:{G:{H:{I:{J:{K:{L:{M:{N:{O:{P:{Q:{R:{S:{T:{U:{V:{W:{X:{Y:{Z:{_:{$:{aa:{ba:{ca:{da:{ea:{fa:{ga:{ha:{ia:{ja:{ka:{la:{ma:{na:{switch(h-16180|0){case 23:j=J[g+76>>2];break H;case 21:j=J[g+76>>2];break J;case 18:j=J[g+108>>2];break M;case 27:h=J[g+12>>2];break n;case 16:if(e>>>0>=14){break V}if(!f){break j}b=e+8|0;h=a+1|0;j=f-1|0;i=(K[a|0]<>>0<=5){break W}a=h;f=j;e=b;break V;case 9:if(e>>>0>=32){break aa}if(!f){break j}b=a+1|0;h=f-1|0;i=(K[a|0]<>>0<=23){break ba}a=b;f=h;break aa;case 1:if(e>>>0>=16){break la}if(!f){break j}b=e+8|0;h=a+1|0;j=f-1|0;i=(K[a|0]<>>0<=7){break ma}a=h;f=j;e=b;break la;case 30:break h;case 29:break i;case 28:break k;case 8:break o;case 7:break p;case 6:break q;case 5:break r;case 24:break G;case 22:break I;case 20:break K;case 19:break L;case 26:break S;case 25:break T;case 17:break U;case 15:break X;case 14:break Y;case 13:break Z;case 11:case 12:break _;case 10:break $;case 4:break ea;case 3:break ha;case 2:break ka;case 0:break na;default:break g}}k=J[g+12>>2];if(!k){break R}oa:{if(e>>>0>=16){break oa}if(!f){break j}b=e+8|0;h=a+1|0;j=f-1|0;i=(K[a|0]<>>0>7){a=h;f=j;e=b;break oa}if(!j){a=h;f=0;e=b;b=n;break i}e=e|16;f=f-2|0;i=(K[a+1|0]<>2]){J[g+40>>2]=15}i=0;b=Gl(0,0,0);J[g+28>>2]=b;H[u+12|0]=31;H[u+13|0]=139;b=Gl(b,u+12|0,2);J[g+4>>2]=16181;J[g+28>>2]=b;e=0;h=J[g+4>>2];continue}b=J[g+36>>2];if(b){J[b+48>>2]=-1}pa:{if(k&1){if(!(((i<<8&65280)+(i>>>8|0)>>>0)%31|0)){break pa}}J[m+24>>2]=51259;J[g+4>>2]=16209;h=J[g+4>>2];continue}if((i&15)!=8){J[m+24>>2]=70869;J[g+4>>2]=16209;h=J[g+4>>2];continue}h=i>>>4|0;k=h&15;j=k+8|0;l=k>>>0<=7;b=J[g+40>>2];if(!b){J[g+40>>2]=j;b=j}if(!(b>>>0>=j>>>0&l)){e=e-4|0;J[m+24>>2]=59076;J[g+4>>2]=16209;i=h;h=J[g+4>>2];continue}e=0;J[g+20>>2]=0;J[g+24>>2]=256<>2]=b;J[m+48>>2]=b;J[g+4>>2]=i&8192?16189:16191;i=0;h=J[g+4>>2];continue}if(!j){a=h;f=0;e=b;b=n;break i}e=e|16;f=f-2|0;i=(K[a+1|0]<>2]=i;if((i&255)!=8){J[m+24>>2]=70869;J[g+4>>2]=16209;h=J[g+4>>2];continue}if(i&57344){J[m+24>>2]=15278;J[g+4>>2]=16209;h=J[g+4>>2];continue}b=J[g+36>>2];if(b){J[b>>2]=i>>>8&1}if(!(!(i&512)|!(K[g+12|0]&4))){H[u+12|0]=8;H[u+13|0]=i>>>8;J[g+28>>2]=Gl(J[g+28>>2],u+12|0,2)}J[g+4>>2]=16182;e=0;i=0;break ja}if(e>>>0>31){break ia}}if(!f){break j}b=a+1|0;h=f-1|0;i=(K[a|0]<>>0>23){a=b;f=h;break ia}j=e+8|0;if(!h){a=b;f=0;e=j;b=n;break i}b=a+2|0;h=f-2|0;i=(K[a+1|0]<>>0>15){a=b;f=h;break ia}j=e+16|0;if(!h){a=b;f=0;e=j;b=n;break i}b=a+3|0;h=f-3|0;i=(K[a+2|0]<>>0>7){a=b;f=h;break ia}e=e+24|0;if(!h){a=b;break j}f=f-4|0;i=(K[a+3|0]<>2];if(b){J[b+4>>2]=i}if(!(!(K[g+21|0]&2)|!(K[g+12|0]&4))){H[u+12|0]=i;H[u+13|0]=i>>>8;H[u+14|0]=i>>>16;H[u+15|0]=i>>>24;J[g+28>>2]=Gl(J[g+28>>2],u+12|0,4)}J[g+4>>2]=16183;e=0;i=0;break ga}if(e>>>0>15){break fa}}if(!f){break j}b=a+1|0;h=f-1|0;i=(K[a|0]<>>0>7){a=b;f=h;break fa}e=e+8|0;if(!h){a=b;break j}f=f-2|0;i=(K[a+1|0]<>2];if(b){J[b+12>>2]=i>>>8;J[b+8>>2]=i&255}if(!(!(K[g+21|0]&2)|!(K[g+12|0]&4))){H[u+12|0]=i;H[u+13|0]=i>>>8;J[g+28>>2]=Gl(J[g+28>>2],u+12|0,2)}J[g+4>>2]=16184;h=0;e=0;i=0;b=J[g+20>>2];if(b&1024){break da}break t}b=J[g+20>>2];if(!(b&1024)){h=e;break t}h=i;if(e>>>0>15){break ca}}if(!f){f=0;i=h;b=n;break i}j=a+1|0;k=f-1|0;i=(K[a|0]<>>0>7){a=j;f=k;break ca}e=e+8|0;if(!k){a=j;break j}f=f-2|0;i=(K[a+1|0]<>2]=i;e=J[g+36>>2];if(e){J[e+20>>2]=i}e=0;if(!(!(b&512)|!(K[g+12|0]&4))){H[u+12|0]=i;H[u+13|0]=i>>>8;J[g+28>>2]=Gl(J[g+28>>2],u+12|0,2)}i=0;break s}j=e+8|0;if(!h){a=b;f=0;e=j;b=n;break i}b=a+2|0;h=f-2|0;i=(K[a+1|0]<>>0>15){a=b;f=h;break aa}j=e+16|0;if(!h){a=b;f=0;e=j;b=n;break i}b=a+3|0;h=f-3|0;i=(K[a+2|0]<>>0>7){a=b;f=h;break aa}e=e+24|0;if(!h){a=b;break j}f=f-4|0;i=(K[a+3|0]<>>8&65280|i>>>24);J[g+28>>2]=b;J[m+48>>2]=b;J[g+4>>2]=16190;i=0;e=0}if(!J[g+16>>2]){J[m+16>>2]=o;J[m+12>>2]=p;J[m+4>>2]=f;J[m>>2]=a;J[g+64>>2]=e;J[g+60>>2]=i;A=2;break g}b=dq(0,0,0);J[g+28>>2]=b;J[m+48>>2]=b;J[g+4>>2]=16191}qa:{ra:{if(!J[g+8>>2]){if(e>>>0>2){break qa}if(f){break ra}break j}J[g+4>>2]=16206;i=i>>>(e&7)|0;e=e&-8;h=J[g+4>>2];continue}f=f-1|0;i=(K[a|0]<>2]=i&1;h=16193;sa:{ta:{ua:{switch((i>>>1&3)-1|0){case 0:J[g+88>>2]=9;J[g+92>>2]=5;J[g+4>>2]=16199;J[g+80>>2]=191184;J[g+84>>2]=193232;break sa;case 1:h=16196;break ta;case 2:break ua;default:break ta}}J[m+24>>2]=64316;h=16209}J[g+4>>2]=h}e=e-3|0;i=i>>>3|0;h=J[g+4>>2];continue}i=i>>>(e&7)|0;k=e&-8;b=k;va:{if(e>>>0>31){break va}if(!f){f=0;e=b;b=n;break i}b=k+8|0;h=a+1|0;j=f-1|0;i=(K[a|0]<>>0>23){a=h;f=j;break va}if(!j){a=h;f=0;e=b;b=n;break i}h=k+16|0;j=a+2|0;l=f-2|0;i=(K[a+1|0]<>>0>15){a=j;f=l;b=h;break va}if(!l){a=j;f=0;e=h;b=n;break i}b=k+24|0;j=a+3|0;k=f-3|0;i=(K[a+2|0]<>>0>7){a=j;f=k;break va}if(!k){a=j;f=0;e=b;b=n;break i}f=f-4|0;i=(K[a+3|0]<>>16|0)){J[m+24>>2]=21180;J[g+4>>2]=16209;h=J[g+4>>2];continue}J[g+4>>2]=16194;J[g+68>>2]=b;i=0;e=0}J[g+4>>2]=16195}b=J[g+68>>2];if(b){b=b>>>0>>0?b:f;b=b>>>0>>0?b:o;if(!b){b=n;break i}h=hj(p,a,b);J[g+68>>2]=J[g+68>>2]-b;p=b+h|0;o=o-b|0;a=a+b|0;f=f-b|0;h=J[g+4>>2];continue}J[g+4>>2]=16191;h=J[g+4>>2];continue}if(!j){a=h;f=0;e=b;b=n;break i}e=e|16;f=f-2|0;i=(K[a+1|0]<>2]=b+257;h=i>>>5&31;J[g+104>>2]=h+1;l=(i>>>10&15)+4|0;J[g+96>>2]=l;e=e-14|0;i=i>>>14|0;if(!(h>>>0<30&b>>>0<=29)){J[m+24>>2]=20534;J[g+4>>2]=16209;h=J[g+4>>2];continue}J[g+4>>2]=16197;h=0;J[g+108>>2]=0;break O}h=J[g+108>>2];l=J[g+96>>2];if(h>>>0>>0){break O}break N}if(!o){break F}H[p|0]=J[g+68>>2];J[g+4>>2]=16200;o=o-1|0;p=p+1|0;h=J[g+4>>2];continue}h=J[g+12>>2];if(!h){h=0;break P}wa:{if(e>>>0>31){j=a;break wa}if(!f){break j}b=e+8|0;j=a+1|0;k=f-1|0;i=(K[a|0]<>>0>23){f=k;e=b;break wa}if(!k){a=j;f=0;e=b;b=n;break i}k=e+16|0;j=a+2|0;l=f-2|0;i=(K[a+1|0]<>>0>15){f=l;e=k;break wa}if(!l){a=j;f=0;e=k;b=n;break i}b=e+24|0;j=a+3|0;l=f-3|0;i=(K[a+2|0]<>>0>7){f=l;e=b;break wa}if(!l){a=j;f=0;e=b;b=n;break i}e=e|32;j=a+4|0;f=f-4|0;i=(K[a+3|0]<>2]=a+J[m+20>>2];J[g+32>>2]=a+J[g+32>>2];b=h&4;if(!(!b|(o|0)==(v|0))){b=p-a|0;h=J[g+28>>2];xa:{if(J[g+20>>2]){a=Gl(h,b,a);break xa}a=dq(h,b,a)}J[g+28>>2]=a;J[m+48>>2]=a;h=J[g+12>>2];b=h&4}if(!b|J[g+28>>2]==((J[g+20>>2]?i:i<<24|(i&65280)<<8|(i>>>8&65280|i>>>24))|0)){break Q}J[m+24>>2]=51305;J[g+4>>2]=16209;a=j;v=o;h=J[g+4>>2];continue}J[g+4>>2]=16192;break v}a=j;i=0;e=0;v=o}J[g+4>>2]=16207;break n}while(1){if(e>>>0<=2){if(!f){break j}f=f-1|0;i=(K[a|0]<>2]=b;I[(L[(h<<1)+191136>>1]<<1)+x>>1]=i&7;e=e-3|0;i=i>>>3|0;h=b;if((b|0)!=(l|0)){continue}break}h=l}if(h>>>0<=18){j=0;b=h;n=3-b&3;if(n){while(1){I[(L[(b<<1)+191136>>1]<<1)+x>>1]=0;b=b+1|0;j=j+1|0;if((n|0)!=(j|0)){continue}break}}if(h>>>0<=15){while(1){h=(b<<1)+191136|0;I[(L[h>>1]<<1)+x>>1]=0;I[(L[h+2>>1]<<1)+x>>1]=0;I[(L[h+4>>1]<<1)+x>>1]=0;I[(L[h+6>>1]<<1)+x>>1]=0;b=b+4|0;if((b|0)!=19){continue}break}}J[g+108>>2]=19}J[g+84>>2]=D;J[g+112>>2]=D;J[g+88>>2]=7;J[g+80>>2]=D;j=0;n=$A(0,x,19,F,N,E);if(n){J[m+24>>2]=15253;J[g+4>>2]=16209;h=J[g+4>>2];continue}J[g+4>>2]=16198;J[g+108>>2]=0;n=0}C=J[g+100>>2];w=C+J[g+104>>2]|0;if(w>>>0>j>>>0){y=-1<>2]^-1;s=J[g+80>>2];while(1){q=e;h=f;b=a;ya:{za:{Aa:{Ba:{Ca:{r=i&y;k=K[(s+(r<<2)|0)+1|0];Da:{if(k>>>0<=e>>>0){l=e;break Da}while(1){if(!h){break Ca}k=K[b|0]<>>0>l>>>0){continue}break}}e=L[(s+(r<<2)|0)+2>>1];if(e>>>0<=15){a=j+1|0;J[g+108>>2]=a;I[(j<<1)+x>>1]=e;e=l-k|0;i=i>>>k|0;j=a;break ya}Ea:{Fa:{Ga:{switch(e-16|0){case 0:a=k+2|0;if(a>>>0>l>>>0){while(1){if(!h){break u}h=h-1|0;i=(K[b|0]<>>0>l>>>0){continue}break}}e=l-k|0;k=i>>>k|0;if(!j){J[m+24>>2]=17163;J[g+4>>2]=16209;a=b;f=h;i=k;h=J[g+4>>2];continue m}e=e-2|0;i=k>>>2|0;k=(k&3)+3|0;f=L[((j<<1)+x|0)-2>>1];break Ea;case 1:a=k+3|0;if(a>>>0>l>>>0){while(1){if(!h){break u}h=h-1|0;i=(K[b|0]<>>0>l>>>0){continue}break}}e=(l-k|0)-3|0;a=i>>>k|0;i=a>>>3|0;k=(a&7)+3|0;break Fa;default:break Ga}}a=k+7|0;if(a>>>0>l>>>0){while(1){if(!h){break u}h=h-1|0;i=(K[b|0]<>>0>l>>>0){continue}break}}e=(l-k|0)-7|0;a=i>>>k|0;i=a>>>7|0;k=(a&127)+11|0}f=0}if(w>>>0>>0){break Aa}l=0;q=k&3;if(!q){break Ba}a=k;while(1){I[(j<<1)+x>>1]=f;j=j+1|0;a=a-1|0;l=l+1|0;if((q|0)!=(l|0)){continue}break}break za}a=a+f|0;e=(f<<3)+e|0;break j}a=k;break za}J[m+24>>2]=17163;J[g+4>>2]=16209;a=b;f=h;h=J[g+4>>2];continue m}if(k>>>0>=4){while(1){k=(j<<1)+x|0;I[k>>1]=f;I[k+2>>1]=f;I[k+4>>1]=f;I[k+6>>1]=f;j=j+4|0;a=a-4|0;if(a){continue}break}}J[g+108>>2]=j}a=b;f=h;if(j>>>0>>0){continue}break}}if(!L[g+628>>1]){J[m+24>>2]=51130;J[g+4>>2]=16209;h=J[g+4>>2];continue}J[g+88>>2]=9;J[g+80>>2]=D;J[g+112>>2]=D;n=$A(1,x,C,F,N,E);if(n){J[m+24>>2]=15225;J[g+4>>2]=16209;h=J[g+4>>2];continue}J[g+92>>2]=6;J[g+84>>2]=J[g+112>>2];n=$A(2,(J[g+100>>2]<<1)+x|0,J[g+104>>2],F,U,E);if(n){J[m+24>>2]=15303;J[g+4>>2]=16209;h=J[g+4>>2];continue}J[g+4>>2]=16199;n=0}J[g+4>>2]=16200}if(!(f>>>0<6|o>>>0<258)){J[m+16>>2]=o;J[m+12>>2]=p;J[m+4>>2]=f;J[m>>2]=a;J[g+64>>2]=e;J[g+60>>2]=i;q=J[m+28>>2];r=J[q+52>>2];O=r&7;V=r+v|0;P=J[q+44>>2];W=r+P|0;a=J[m+12>>2];b=J[m+16>>2];C=a+b|0;Q=C-257|0;X=(b-v|0)+a|0;j=J[m>>2];R=(j+J[m+4>>2]|0)-5|0;Y=-1<>2]^-1;_=-1<>2]^-1;S=J[q+84>>2];T=J[q+80>>2];k=J[q+64>>2];o=J[q+60>>2];i=J[q+56>>2];$=J[q+48>>2];while(1){if(k>>>0<=14){o=((K[j|0]<>>e|0;Ha:{Ia:{Ja:{Ka:{La:{Ma:{Na:{Oa:{while(1){e=K[b|0];if(!e){H[a|0]=K[b+2|0];a=a+1|0;break Ia}if(e&16){p=L[b+2>>1];b=e&15;Pa:{if(!b){h=j;f=o;break Pa}if(b>>>0<=k>>>0){h=j}else{o=(K[j|0]<>>b|0}if(k>>>0<=14){f=((K[h|0]<>>e|0;f=K[b|0];if(f&16){break Oa}while(1){if(!(f&64)){b=((L[b+2>>1]<<2)+S|0)+(((-1<>>e|0;f=K[b|0];if(!(f&16)){continue}break Oa}break}j=h;b=69536;break Na}if(!(e&64)){b=((L[b+2>>1]<<2)+T|0)+(((-1<>>e|0;continue}break}b=16191;if(e&32){break Ma}b=69460;break Na}s=L[b+2>>1];b=f&15;Qa:{if(b>>>0<=k>>>0){f=k;j=h;break Qa}o=(K[h|0]<>>0<=f>>>0){break Qa}o=(K[h+1|0]<>>b|0;y=s+w|0;b=a-X|0;if(y>>>0<=b>>>0){break Ka}l=y-b|0;if(!J[q+7108>>2]|l>>>0<=$>>>0){break La}b=51950}J[m+24>>2]=b;b=16209}J[q+4>>2]=b;break Ha}Ra:{Sa:{if(!r){f=i+(P-l|0)|0;if(l>>>0>=p>>>0){b=a;break Ra}h=0;b=a;e=l;z=e&7;if(z){while(1){H[b|0]=K[f|0];e=e-1|0;b=b+1|0;f=f+1|0;h=h+1|0;if((z|0)!=(h|0)){continue}break}}if((v-(s+(w+C|0)|0)|0)+a>>>0>4294967288){break Sa}while(1){H[b|0]=K[f|0];H[b+1|0]=K[f+1|0];H[b+2|0]=K[f+2|0];H[b+3|0]=K[f+3|0];H[b+4|0]=K[f+4|0];H[b+5|0]=K[f+5|0];H[b+6|0]=K[f+6|0];H[b+7|0]=K[f+7|0];b=b+8|0;f=f+8|0;e=e-8|0;if(e){continue}break}break Sa}if(l>>>0>r>>>0){f=i+(W-l|0)|0;l=l-r|0;if(l>>>0>=p>>>0){b=a;break Ra}h=0;b=a;e=l;z=e&7;if(z){while(1){H[b|0]=K[f|0];e=e-1|0;b=b+1|0;f=f+1|0;h=h+1|0;if((z|0)!=(h|0)){continue}break}}if((V-(s+(w+C|0)|0)|0)+a>>>0<=4294967288){while(1){H[b|0]=K[f|0];H[b+1|0]=K[f+1|0];H[b+2|0]=K[f+2|0];H[b+3|0]=K[f+3|0];H[b+4|0]=K[f+4|0];H[b+5|0]=K[f+5|0];H[b+6|0]=K[f+6|0];H[b+7|0]=K[f+7|0];b=b+8|0;f=f+8|0;e=e-8|0;if(e){continue}break}}p=p-l|0;if(r>>>0>=p>>>0){f=i;break Ra}a=0;e=r;f=i;if(O){while(1){H[b|0]=K[f|0];e=e-1|0;b=b+1|0;f=f+1|0;a=a+1|0;if((O|0)!=(a|0)){continue}break}}if(r>>>0>=8){while(1){H[b|0]=K[f|0];H[b+1|0]=K[f+1|0];H[b+2|0]=K[f+2|0];H[b+3|0]=K[f+3|0];H[b+4|0]=K[f+4|0];H[b+5|0]=K[f+5|0];H[b+6|0]=K[f+6|0];H[b+7|0]=K[f+7|0];b=b+8|0;f=f+8|0;e=e-8|0;if(e){continue}break}}f=b-y|0;p=p-r|0;break Ra}f=i+(r-l|0)|0;if(l>>>0>=p>>>0){b=a;break Ra}h=0;b=a;e=l;z=e&7;if(z){while(1){H[b|0]=K[f|0];e=e-1|0;b=b+1|0;f=f+1|0;h=h+1|0;if((z|0)!=(h|0)){continue}break}}if((v-(s+(w+C|0)|0)|0)+a>>>0>4294967288){break Sa}while(1){H[b|0]=K[f|0];H[b+1|0]=K[f+1|0];H[b+2|0]=K[f+2|0];H[b+3|0]=K[f+3|0];H[b+4|0]=K[f+4|0];H[b+5|0]=K[f+5|0];H[b+6|0]=K[f+6|0];H[b+7|0]=K[f+7|0];b=b+8|0;f=f+8|0;e=e-8|0;if(e){continue}break}}f=b-y|0;p=p-l|0}Ta:{if(p>>>0<3){break Ta}e=0;a=p-3|0;h=((a>>>0)/3|0)+1&3;if(h){while(1){H[b|0]=K[f|0];H[b+1|0]=K[f+1|0];H[b+2|0]=K[f+2|0];p=p-3|0;b=b+3|0;f=f+3|0;e=e+1|0;if((h|0)!=(e|0)){continue}break}}if(a>>>0<9){break Ta}while(1){H[b|0]=K[f|0];H[b+1|0]=K[f+1|0];H[b+2|0]=K[f+2|0];H[b+3|0]=K[f+3|0];H[b+4|0]=K[f+4|0];H[b+5|0]=K[f+5|0];H[b+6|0]=K[f+6|0];H[b+7|0]=K[f+7|0];H[b+8|0]=K[f+8|0];H[b+9|0]=K[f+9|0];H[b+10|0]=K[f+10|0];H[b+11|0]=K[f+11|0];b=b+12|0;f=f+12|0;p=p-12|0;if(p>>>0>2){continue}break}}if(!p){a=b;break Ia}H[b|0]=K[f|0];if((p|0)==2){break Ja}a=b+1|0;break Ia}e=a-y|0;while(1){b=a;f=e;H[b|0]=K[e|0];H[b+1|0]=K[e+1|0];H[b+2|0]=K[e+2|0];a=b+3|0;e=e+3|0;p=p-3|0;if(p>>>0>2){continue}break}if(!p){break Ia}H[b+3|0]=K[e|0];if((p|0)!=2){a=b+4|0;break Ia}H[b+4|0]=K[f+4|0];a=b+5|0;break Ia}H[b+1|0]=K[f+1|0];a=b+2|0}if(j>>>0>=R>>>0){break Ha}if(a>>>0>>0){continue}}break}J[m+12>>2]=a;b=j-(k>>>3|0)|0;J[m>>2]=b;J[m+16>>2]=(Q-a|0)+257;J[m+4>>2]=(R-b|0)+5;a=k&7;J[q+64>>2]=a;J[q+60>>2]=(-1<>2];i=J[g+60>>2];f=J[m+4>>2];a=J[m>>2];o=J[m+16>>2];p=J[m+12>>2];if(J[g+4>>2]!=16191){break v}J[g+7112>>2]=-1;h=J[g+4>>2];continue}J[g+7112>>2]=0;j=e;h=f;b=a;s=J[g+80>>2];r=-1<>2]^-1;k=s+((r&i)<<2)|0;q=K[k+1|0];Ua:{if(q>>>0<=e>>>0){l=e;break Ua}while(1){if(!h){break y}k=K[b|0]<>>0>>0){continue}break}}e=q;r=L[k+2>>1];k=K[k|0];Va:{if((k-1&255)>>>0>14){e=0;a=b;f=h;break Va}f=h;a=b;j=l;s=s+(r<<2)|0;w=-1<>>e<<2)|0;q=K[r+1|0];Wa:{if(j>>>0>=q+e>>>0){k=j;break Wa}while(1){if(!f){break z}q=K[a|0]<>>e<<2)|0;q=K[r+1|0];if(j>>>0>>0){continue}break}}l=k-e|0;i=i>>>e|0;k=K[r|0];r=L[r+2>>1]}J[g+68>>2]=r&65535;J[g+7112>>2]=e+q;e=l-q|0;i=i>>>q|0;b=k&255;if(!b){J[g+4>>2]=16205;h=J[g+4>>2];continue}if(b&32){J[g+4>>2]=16191;J[g+7112>>2]=-1;h=J[g+4>>2];continue}if(b&64){J[m+24>>2]=69460;J[g+4>>2]=16209;h=J[g+4>>2];continue}J[g+4>>2]=16201;j=b&15;J[g+76>>2]=j}l=a;k=f;Xa:{if(!j){b=J[g+68>>2];break Xa}b=a;h=e;if(e>>>0>>0){while(1){if(!f){break A}f=f-1|0;i=(K[b|0]<>>0>h>>>0){continue}break}}J[g+7112>>2]=J[g+7112>>2]+j;b=J[g+68>>2]+((-1<>2]=b;e=h-j|0;i=i>>>j|0}J[g+4>>2]=16202;J[g+7116>>2]=b}j=e;h=f;b=a;s=J[g+84>>2];r=-1<>2]^-1;k=s+((r&i)<<2)|0;q=K[k+1|0];Ya:{if(q>>>0<=e>>>0){l=e;break Ya}while(1){if(!h){break B}k=K[b|0]<>>0>>0){continue}break}}r=L[k+2>>1];j=K[k|0];Za:{if(j>>>0>=16){a=b;f=h;k=q;b=J[g+7112>>2];break Za}f=h;a=b;e=l;s=s+(r<<2)|0;w=-1<>>q<<2)|0;k=K[r+1|0];_a:{if(e>>>0>=q+k>>>0){j=e;break _a}while(1){if(!f){break C}k=K[a|0]<>>q<<2)|0;k=K[r+1|0];if(e>>>0>>0){continue}break}}l=j-q|0;i=i>>>q|0;j=K[r|0];r=L[r+2>>1];b=J[g+7112>>2]+q|0}J[g+7112>>2]=b+k;e=l-k|0;i=i>>>k|0;if(j&64){J[m+24>>2]=69536;J[g+4>>2]=16209;h=J[g+4>>2];continue}J[g+4>>2]=16203;j=j&15;J[g+76>>2]=j;J[g+72>>2]=r&65535}l=a;k=f;if(j){b=a;h=e;if(e>>>0>>0){while(1){if(!f){break D}f=f-1|0;i=(K[b|0]<>>0>h>>>0){continue}break}}J[g+7112>>2]=J[g+7112>>2]+j;J[g+72>>2]=J[g+72>>2]+((-1<>>j|0;e=h-j|0}J[g+4>>2]=16204}if(o){break E}}o=0;b=n;break i}b=J[g+72>>2];h=v-o|0;$a:{if(b>>>0>h>>>0){b=b-h|0;if(!(!J[g+7108>>2]|b>>>0<=M[g+48>>2])){J[m+24>>2]=51950;J[g+4>>2]=16209;h=J[g+4>>2];continue}h=J[g+52>>2];ab:{if(h>>>0>>0){b=b-h|0;h=J[g+56>>2]+(J[g+44>>2]-b|0)|0;break ab}h=J[g+56>>2]+(h-b|0)|0}j=J[g+68>>2];b=b>>>0>>0?b:j;break $a}h=p-b|0;j=J[g+68>>2];b=j}k=b>>>0>>0?b:o;J[g+68>>2]=j-k;l=k-1|0;j=0;q=k&7;if(!q){break x}b=k;while(1){H[p|0]=K[h|0];b=b-1|0;p=p+1|0;h=h+1|0;j=j+1|0;if((q|0)!=(j|0)){continue}break}break w}a=k+l|0;e=(k<<3)+e|0;break j}a=b+h|0;e=(h<<3)+l|0;break j}a=a+f|0;e=(f<<3)+e|0;break j}a=k+l|0;e=(k<<3)+e|0;break j}a=b+h|0;e=(h<<3)+l|0;break j}a=a+f|0;e=(f<<3)+e|0;break j}b=k}if(l>>>0>=7){while(1){H[p|0]=K[h|0];H[p+1|0]=K[h+1|0];H[p+2|0]=K[h+2|0];H[p+3|0]=K[h+3|0];H[p+4|0]=K[h+4|0];H[p+5|0]=K[h+5|0];H[p+6|0]=K[h+6|0];H[p+7|0]=K[h+7|0];p=p+8|0;h=h+8|0;b=b-8|0;if(b){continue}break}}o=o-k|0;if(J[g+68>>2]){break v}J[g+4>>2]=16200;h=J[g+4>>2];continue}h=J[g+4>>2];continue}f=0;a=b;e=l;b=n;break i}b=J[g+36>>2];if(b){J[b+16>>2]=0}e=h}J[g+4>>2]=16185}bb:{j=J[g+20>>2];if(!(j&1024)){break bb}h=J[g+68>>2];b=f>>>0>h>>>0?h:f;if(b){k=J[g+36>>2];cb:{if(!k){break cb}q=J[k+16>>2];if(!q){break cb}l=J[k+24>>2];h=J[k+20>>2]-h|0;if(l>>>0<=h>>>0){break cb}hj(h+q|0,a,l>>>0>>0?l-h|0:b);j=J[g+20>>2]}if(!(!(j&512)|!(K[g+12|0]&4))){J[g+28>>2]=Gl(J[g+28>>2],a,b)}h=J[g+68>>2]-b|0;J[g+68>>2]=h;f=f-b|0;a=a+b|0}if(!h){break bb}b=n;break i}J[g+4>>2]=16186;J[g+68>>2]=0}db:{if(K[g+21|0]&8){h=0;if(!f){break j}while(1){b=K[a+h|0];j=J[g+36>>2];eb:{if(!j){break eb}k=J[j+28>>2];if(!k){break eb}l=J[j+32>>2];j=J[g+68>>2];if(l>>>0<=j>>>0){break eb}J[g+68>>2]=j+1;H[j+k|0]=b}h=h+1|0;if(h>>>0>>0?b:0){continue}break}if(!(!(K[g+21|0]&2)|!(K[g+12|0]&4))){J[g+28>>2]=Gl(J[g+28>>2],a,h)}a=a+h|0;f=f-h|0;if(!b){break db}b=n;break i}b=J[g+36>>2];if(!b){break db}J[b+28>>2]=0}J[g+4>>2]=16187;J[g+68>>2]=0}fb:{if(K[g+21|0]&16){h=0;if(!f){break j}while(1){b=K[a+h|0];j=J[g+36>>2];gb:{if(!j){break gb}k=J[j+36>>2];if(!k){break gb}l=J[j+40>>2];j=J[g+68>>2];if(l>>>0<=j>>>0){break gb}J[g+68>>2]=j+1;H[j+k|0]=b}h=h+1|0;if(h>>>0>>0?b:0){continue}break}if(!(!(K[g+21|0]&2)|!(K[g+12|0]&4))){J[g+28>>2]=Gl(J[g+28>>2],a,h)}a=a+h|0;f=f-h|0;if(!b){break fb}b=n;break i}b=J[g+36>>2];if(!b){break fb}J[b+36>>2]=0}J[g+4>>2]=16188}k=J[g+20>>2];if(k&512){hb:{if(e>>>0>15){h=a;break hb}if(!f){break j}b=e+8|0;h=a+1|0;j=f-1|0;i=(K[a|0]<>>0>7){f=j;e=b;break hb}if(!j){a=h;f=0;e=b;b=n;break i}e=e|16;h=a+2|0;f=f-2|0;i=(K[a+1|0]<>1]==(i|0))){J[m+24>>2]=53644;J[g+4>>2]=16209;a=h;h=J[g+4>>2];continue}i=0;e=0;a=h}b=J[g+36>>2];if(b){J[b+48>>2]=1;J[b+44>>2]=k>>>9&1}b=Gl(0,0,0);J[g+28>>2]=b;J[m+48>>2]=b;J[g+4>>2]=16191;h=J[g+4>>2];continue}if(!h|!J[g+20>>2]){break l}ib:{if(e>>>0>31){b=a;break ib}if(!f){break j}j=e+8|0;b=a+1|0;k=f-1|0;i=(K[a|0]<>>0>23){f=k;e=j;break ib}if(!k){a=b;f=0;e=j;b=n;break i}k=e+16|0;b=a+2|0;l=f-2|0;i=(K[a+1|0]<>>0>15){f=l;e=k;break ib}if(!l){a=b;f=0;e=k;b=n;break i}j=e+24|0;b=a+3|0;l=f-3|0;i=(K[a+2|0]<>>0>7){f=l;e=j;break ib}if(!l){a=b;f=0;e=j;b=n;break i}e=e|32;b=a+4|0;f=f-4|0;i=(K[a+3|0]<>2]==(i|0))){J[m+24>>2]=51282;J[g+4>>2]=16209;a=b;h=J[g+4>>2];continue}break}a=b;i=0;e=0}J[g+4>>2]=16208}b=1;break i}f=0;b=n}J[m+16>>2]=o;J[m+12>>2]=p;J[m+4>>2]=f;J[m>>2]=a;J[g+64>>2]=e;J[g+60>>2]=i;jb:{if(!(!J[g+44>>2]&((o|0)==(v|0)|M[g+4>>2]>16208))){e=v-o|0;a=J[m+28>>2];n=J[a+56>>2];kb:{if(!n){h=1;n=Zi[J[m+32>>2]](J[m+40>>2],1<>2],1)|0;J[a+56>>2]=n;if(!n){break kb}}f=J[a+44>>2];if(!f){J[a+48>>2]=0;J[a+52>>2]=0;f=1<>2];J[a+44>>2]=f}lb:{if(e>>>0>=f>>>0){hj(n,p-f|0,f);J[a+52>>2]=0;break lb}h=f;f=J[a+52>>2];j=h-f|0;h=j>>>0>>0;n=f+n|0;f=h?j:e;hj(n,p-e|0,f);if(h){e=e-f|0;hj(J[a+56>>2],p-e|0,e);J[a+52>>2]=e;break lb}h=0;e=f+J[a+52>>2]|0;j=e;e=J[a+44>>2];J[a+52>>2]=(j|0)!=(e|0)?j:0;j=e;e=J[a+48>>2];if(j>>>0<=e>>>0){break kb}J[a+48>>2]=e+f;break kb}J[a+48>>2]=J[a+44>>2];h=0}if(h){break jb}o=J[m+16>>2];f=J[m+4>>2]}J[m+8>>2]=J[m+8>>2]+(G-f|0);a=v-o|0;J[m+20>>2]=a+J[m+20>>2];J[g+32>>2]=a+J[g+32>>2];if(!(!(K[g+12|0]&4)|(o|0)==(v|0))){e=J[m+12>>2]-a|0;h=J[g+28>>2];mb:{if(J[g+20>>2]){a=Gl(h,e,a);break mb}a=dq(h,e,a)}J[g+28>>2]=a;J[m+48>>2]=a}a=J[g+4>>2];J[m+44>>2]=((J[g+64>>2]+((J[g+8>>2]!=0)<<6)|0)+(((a|0)==16191)<<7)|0)+((a|0)==16199?256:((a|0)==16194)<<8);A=(f|0)==(G|0)?(o|0)==(v|0)?b?b:-5:b:b;break g}J[g+4>>2]=16210}A=-4}Ui=u+16|0;if((A|0)==-2){break b}if(!((A|0)!=2&(A|0)>=0)){aB(m);e=-3;break a}if(!(Zi[d|0](c,t,16384-J[t+16408>>2]|0)|0)){aB(t+16392|0);e=-1;break a}if(!J[t+16408>>2]){continue}break}e=(A|0)!=1?-3:0;aB(t+16392|0);break a}e=-1e3;break a}Z(89655,42682,67,35178);B()}Ui=t+16448|0;return e} +function mqa(a,b,c,d,e,f,g,h,i,j){a=a|0;b=b|0;c=c|0;d=d|0;e=e|0;f=f|0;g=g|0;h=h|0;i=i|0;j=j|0;var k=0,l=Q(0),m=0,n=Q(0),o=Q(0),p=0,q=Q(0),r=Q(0),s=Q(0),t=Q(0),u=0,v=Q(0),w=Q(0),x=Q(0),y=Q(0),z=Q(0),A=0,B=Q(0),C=Q(0),D=Q(0),E=Q(0),F=0,G=Q(0),I=0,L=0,M=0,O=0,S=Q(0),T=Q(0),U=Q(0),V=Q(0),W=Q(0),X=0;I=Ui+-64|0;Ui=I;Xl(36387);a:{if((0-e|0)==(g|0)){break a}b:{if(J[h+44>>2]){if((c|0)<=0){break b}if((c|0)!=1){j=c&2147483646;while(1){m=(p<<2)+b|0;i=J[m>>2];if(!(!i|J[i+232>>2]!=2)){J[i+504>>2]=0;J[i+508>>2]=0;J[i+568>>2]=0;J[i+572>>2]=0;J[i+528>>2]=0;J[i+532>>2]=0;J[i+520>>2]=0;J[i+524>>2]=0;J[i+512>>2]=0;J[i+516>>2]=0;J[i+576>>2]=0;J[i+580>>2]=0;J[i+584>>2]=0;J[i+588>>2]=0;J[i+592>>2]=0;J[i+596>>2]=0}i=J[m+4>>2];if(!(!i|J[i+232>>2]!=2)){J[i+504>>2]=0;J[i+508>>2]=0;J[i+568>>2]=0;J[i+572>>2]=0;J[i+528>>2]=0;J[i+532>>2]=0;J[i+520>>2]=0;J[i+524>>2]=0;J[i+512>>2]=0;J[i+516>>2]=0;J[i+576>>2]=0;J[i+580>>2]=0;J[i+584>>2]=0;J[i+588>>2]=0;J[i+592>>2]=0;J[i+596>>2]=0}p=p+2|0;k=k+2|0;if((j|0)!=(k|0)){continue}break}}if(!(c&1)){break b}b=J[(p<<2)+b>>2];if(!b|J[b+232>>2]!=2){break b}J[b+504>>2]=0;J[b+508>>2]=0;J[b+568>>2]=0;J[b+572>>2]=0;J[b+528>>2]=0;J[b+532>>2]=0;J[b+520>>2]=0;J[b+524>>2]=0;J[b+512>>2]=0;J[b+516>>2]=0;J[b+576>>2]=0;J[b+580>>2]=0;J[b+584>>2]=0;J[b+588>>2]=0;J[b+592>>2]=0;J[b+596>>2]=0;break b}if((c|0)<=0){break b}if((c|0)!=1){j=c&2147483646;while(1){m=(p<<2)+b|0;i=J[m>>2];if(!(!i|J[i+232>>2]!=2)){J[i+504>>2]=0;J[i+508>>2]=0;J[i+528>>2]=0;J[i+532>>2]=0;J[i+520>>2]=0;J[i+524>>2]=0;J[i+512>>2]=0;J[i+516>>2]=0}i=J[m+4>>2];if(!(!i|J[i+232>>2]!=2)){J[i+504>>2]=0;J[i+508>>2]=0;J[i+528>>2]=0;J[i+532>>2]=0;J[i+520>>2]=0;J[i+524>>2]=0;J[i+512>>2]=0;J[i+516>>2]=0}p=p+2|0;k=k+2|0;if((j|0)!=(k|0)){continue}break}}if(!(c&1)){break b}b=J[(p<<2)+b>>2];if(!b|J[b+232>>2]!=2){break b}J[b+504>>2]=0;J[b+508>>2]=0;J[b+528>>2]=0;J[b+532>>2]=0;J[b+520>>2]=0;J[b+524>>2]=0;J[b+512>>2]=0;J[b+516>>2]=0}c:{if((g|0)<=0){break c}k=0;c=0;if(g>>>0>=4){j=g&2147483644;i=0;while(1){b=(c<<2)+f|0;m=J[b>>2];Zi[J[J[m>>2]+8>>2]](m);m=J[b+4>>2];Zi[J[J[m>>2]+8>>2]](m);m=J[b+8>>2];Zi[J[J[m>>2]+8>>2]](m);b=J[b+12>>2];Zi[J[J[b>>2]+8>>2]](b);c=c+4|0;i=i+4|0;if((j|0)!=(i|0)){continue}break}}b=g&3;if(!b){break c}while(1){i=J[(c<<2)+f>>2];Zi[J[J[i>>2]+8>>2]](i);c=c+1|0;k=k+1|0;if((b|0)!=(k|0)){continue}break}}j=J[a+108>>2];d:{if((j|0)>=(g|0)){break d}if(J[a+112>>2]<(g|0)){e:{if(!g){p=0;b=j;break e}p=Yj(g<<3);b=J[a+108>>2]}k=b;f:{if((k|0)<=0){break f}i=0;c=0;if(k>>>0>=4){u=k&2147483644;b=0;while(1){m=c<<3;A=m+p|0;F=m+J[a+116>>2]|0;L=J[F+4>>2];J[A>>2]=J[F>>2];J[A+4>>2]=L;A=m|8;F=A+p|0;A=A+J[a+116>>2]|0;L=J[A+4>>2];J[F>>2]=J[A>>2];J[F+4>>2]=L;A=m|16;F=A+p|0;A=A+J[a+116>>2]|0;L=J[A+4>>2];J[F>>2]=J[A>>2];J[F+4>>2]=L;m=m|24;A=m+p|0;m=m+J[a+116>>2]|0;F=J[m+4>>2];J[A>>2]=J[m>>2];J[A+4>>2]=F;c=c+4|0;b=b+4|0;if((u|0)!=(b|0)){continue}break}}b=k&3;if(!b){break f}while(1){k=c<<3;m=k+p|0;k=k+J[a+116>>2]|0;u=J[k+4>>2];J[m>>2]=J[k>>2];J[m+4>>2]=u;c=c+1|0;i=i+1|0;if((b|0)!=(i|0)){continue}break}}b=J[a+116>>2];if(!(b?!b|K[a+120|0]!=1:1)){J[83765]=J[83765]+1;Zi[J[61751]](J[b-4>>2])}J[a+116>>2]=p;H[a+120|0]=1;J[a+112>>2]=g}c=j;b=g-c&3;if(b){p=0;while(1){i=J[a+116>>2]+(c<<3)|0;J[i>>2]=0;J[i+4>>2]=0;c=c+1|0;p=p+1|0;if((b|0)!=(p|0)){continue}break}}if(j-g>>>0>4294967292){break d}while(1){b=c<<3;i=b+J[a+116>>2]|0;J[i>>2]=0;J[i+4>>2]=0;i=b+J[a+116>>2]|0;J[i+8>>2]=0;J[i+12>>2]=0;i=b+J[a+116>>2]|0;J[i+16>>2]=0;J[i+20>>2]=0;b=b+J[a+116>>2]|0;J[b+24>>2]=0;J[b+28>>2]=0;c=c+4|0;if((g|0)!=(c|0)){continue}break}}J[a+108>>2]=g;g:{if((g|0)<=0){p=0;break g}b=g&1;h:{if((g|0)==1){p=0;c=0;break h}i=g&2147483646;p=0;c=0;k=0;while(1){j=J[(c<<2)+f>>2];m=J[a+116>>2]+(c<<3)|0;Zi[J[J[j>>2]+16>>2]](j,m);j=J[m>>2];m=c|1;u=J[(m<<2)+f>>2];m=J[a+116>>2]+(m<<3)|0;Zi[J[J[u>>2]+16>>2]](u,m);p=J[m>>2]+(j+p|0)|0;c=c+2|0;k=k+2|0;if((i|0)!=(k|0)){continue}break}}if(!b){break g}b=J[(c<<2)+f>>2];c=J[a+116>>2]+(c<<3)|0;Zi[J[J[b>>2]+16>>2]](b,c);p=J[c>>2]+p|0}b=J[a+28>>2];i:{if((b|0)>=(p|0)){break i}if(J[a+32>>2]<(p|0)){j:{if(!p){k=0;j=b;break j}k=Yj(P(p,136));j=J[a+28>>2]}k:{if((j|0)<=0){break k}c=0;if((j|0)!=1){m=j&2147483646;i=0;while(1){u=P(c,136);hj(u+k|0,u+J[a+36>>2]|0,136);u=P(c|1,136);hj(u+k|0,u+J[a+36>>2]|0,136);c=c+2|0;i=i+2|0;if((m|0)!=(i|0)){continue}break}}if(!(j&1)){break k}c=P(c,136);hj(c+k|0,c+J[a+36>>2]|0,136)}c=J[a+36>>2];if(!(c?!c|K[a+40|0]!=1:1)){J[83765]=J[83765]+1;Zi[J[61751]](J[c-4>>2])}J[a+36>>2]=k;H[a+40|0]=1;J[a+32>>2]=p}c=b;i=p-b&3;if(i){k=0;while(1){ij(J[a+36>>2]+P(c,136)|0,0,136);c=c+1|0;k=k+1|0;if((i|0)!=(k|0)){continue}break}}if(b-p>>>0>4294967292){break i}while(1){b=P(c,136);ij(b+J[a+36>>2]|0,0,136);ij((b+J[a+36>>2]|0)+136|0,0,136);ij((b+J[a+36>>2]|0)+272|0,0,136);ij((b+J[a+36>>2]|0)+408|0,0,136);c=c+4|0;if((p|0)!=(c|0)){continue}break}}J[a+28>>2]=p;if((g|0)>0){p=J[a+116>>2];u=0;while(1){F=M<<3;A=F+p|0;j=J[A>>2];if(j){p=J[a+36>>2]+P(u,136)|0;L=(M<<2)+f|0;b=J[L>>2];k=J[b+24>>2];m=J[b+20>>2];i=0;c=b;if((j|0)>0){while(1){c=ij(p+P(i,136)|0,0,136);J[c+108>>2]=k;J[c+104>>2]=m;J[c+80>>2]=0;J[c+124>>2]=-8388609;J[c+128>>2]=2139095039;i=i+1|0;if((i|0)>2]){continue}break}c=J[L>>2]}J[m+504>>2]=0;J[m+508>>2]=0;J[m+528>>2]=0;J[m+532>>2]=0;J[m+520>>2]=0;J[m+524>>2]=0;J[m+512>>2]=0;J[m+516>>2]=0;J[k+528>>2]=0;J[k+532>>2]=0;J[k+520>>2]=0;J[k+524>>2]=0;J[k+512>>2]=0;J[k+516>>2]=0;J[k+504>>2]=0;J[k+508>>2]=0;N[I+12>>2]=Q(1)/N[h+12>>2];l=N[h+32>>2];J[I+40>>2]=p+116;J[I+36>>2]=34;J[I+32>>2]=p+32;J[I+28>>2]=0;J[I+24>>2]=p;J[I+20>>2]=p+16;N[I+16>>2]=l;N[p+120>>2]=N[h+40>>2];J[I+52>>2]=p+128;J[I+48>>2]=p+124;J[I+44>>2]=p+120;J[I+60>>2]=J[h+20>>2];Zi[J[J[c>>2]+20>>2]](c,I+12|0);if(J[A>>2]>0){j=0;while(1){c=p+P(j,136)|0;J[c+112>>2]=b;i=J[b+20>>2];n=N[i+536>>2];s=N[i+264>>2];r=N[i+256>>2];q=N[i+260>>2];v=N[i+540>>2];w=N[i+280>>2];x=N[i+272>>2];B=N[i+276>>2];l=N[i+544>>2];t=N[i+296>>2];o=N[i+288>>2];y=N[i+292>>2];J[c+60>>2]=0;C=l;l=N[c+8>>2];D=Q(t*l);t=N[c>>2];z=Q(o*t);o=N[c+4>>2];N[c+56>>2]=C*Q(D+Q(z+Q(y*o)));N[c+52>>2]=v*Q(Q(w*l)+Q(Q(x*t)+Q(o*B)));N[c+48>>2]=n*Q(Q(s*l)+Q(Q(r*t)+Q(q*o)));i=J[b+24>>2];q=N[i+536>>2];v=N[i+264>>2];w=N[i+256>>2];x=N[i+260>>2];B=N[i+540>>2];y=N[i+280>>2];E=N[i+272>>2];C=N[i+276>>2];n=N[i+544>>2];s=N[i+296>>2];r=N[i+288>>2];G=N[i+292>>2];J[c+76>>2]=0;D=n;n=N[c+40>>2];z=Q(s*n);s=N[c+32>>2];S=Q(r*s);r=N[c+36>>2];N[c+72>>2]=D*Q(z+Q(S+Q(G*r)));N[c+68>>2]=B*Q(Q(y*n)+Q(Q(E*s)+Q(r*C)));N[c+64>>2]=q*Q(Q(v*n)+Q(Q(w*s)+Q(x*r)));x=N[m+336>>2];q=N[c+24>>2];v=N[c+16>>2];w=N[c+20>>2];C=Q(Q(Q(Q(x*q)*q)+Q(Q(Q(x*v)*v)+Q(w*Q(x*w))))+Q(Q(l*Q(Q(l*N[m+296>>2])+Q(Q(t*N[m+288>>2])+Q(o*N[m+292>>2]))))+Q(Q(t*Q(Q(l*N[m+264>>2])+Q(Q(t*N[m+256>>2])+Q(o*N[m+260>>2]))))+Q(o*Q(Q(l*N[m+280>>2])+Q(Q(t*N[m+272>>2])+Q(o*N[m+276>>2])))))));x=N[k+336>>2];x=Q(Q(1)/Q(Q(C+Q(Q(Q(q*x)*q)+Q(Q(Q(v*x)*v)+Q(w*Q(w*x)))))+Q(Q(n*Q(Q(n*N[k+296>>2])+Q(Q(s*N[k+288>>2])+Q(r*N[k+292>>2]))))+Q(Q(s*Q(Q(n*N[k+264>>2])+Q(Q(s*N[k+256>>2])+Q(r*N[k+260>>2]))))+Q(r*Q(Q(n*N[k+280>>2])+Q(Q(s*N[k+272>>2])+Q(r*N[k+276>>2]))))))));N[c+92>>2]=x;B=N[m+312>>2];y=N[m+304>>2];E=N[m+308>>2];C=N[m+328>>2];G=N[m+320>>2];D=N[m+324>>2];S=N[k+328>>2];T=N[k+320>>2];U=N[k+324>>2];z=N[k+312>>2];V=N[k+304>>2];W=N[k+308>>2];J[c+84>>2]=0;N[c+116>>2]=Q(x*N[c+116>>2])+Q(x*Q(Q(0)-Q(Q(Q(Q(q*B)+Q(Q(v*y)+Q(w*E)))+Q(Q(l*C)+Q(Q(t*G)+Q(o*D))))+Q(Q(Q(n*S)+Q(Q(s*T)+Q(r*U)))-Q(Q(q*z)+Q(Q(v*V)+Q(w*W)))))));j=j+1|0;if((j|0)>2]){continue}break}}p=J[a+116>>2];b=J[F+p>>2]}else{b=0}u=b+u|0;M=M+1|0;if((M|0)!=(g|0)){continue}break}}c=0;if((e|0)>0){while(1){M=0;m=Ui+-64|0;Ui=m;F=J[(c<<2)+d>>2];f=J[F+1112>>2];b=J[f+232>>2];g=J[F+1108>>2];l:{if(!(!(J[g+232>>2]!=2|!g)&N[g+336>>2]!=Q(0))){b=(b|0)==2?f:0;if(!b|N[b+336>>2]==Q(0)){break l}}i=J[F+1116>>2];if((i|0)<=0){break l}X=F+4|0;while(1){k=X+P(M,276)|0;if(N[k+80>>2]<=N[F+1124>>2]){A=J[a+8>>2];i=A;m:{if((i|0)!=J[a+12>>2]){break m}u=i?i<<1:1;if((u|0)<=(i|0)){break m}n:{if(!u){p=0;break n}p=Yj(P(u,136));i=J[a+8>>2]}j=i;o:{if((j|0)<=0){break o}i=0;if((j|0)!=1){L=j&2147483646;b=0;while(1){O=P(i,136);hj(O+p|0,O+J[a+16>>2]|0,136);O=P(i|1,136);hj(O+p|0,O+J[a+16>>2]|0,136);i=i+2|0;b=b+2|0;if((L|0)!=(b|0)){continue}break}}if(!(j&1)){break o}b=P(i,136);hj(b+p|0,b+J[a+16>>2]|0,136)}b=J[a+16>>2];if(!(b?!b|K[a+20|0]!=1:1)){J[83765]=J[83765]+1;Zi[J[61751]](J[b-4>>2])}J[a+16>>2]=p;H[a+20|0]=1;J[a+12>>2]=u;i=J[a+8>>2]}J[a+8>>2]=i+1;p=J[f+232>>2]==2?f:0;i=J[a+16>>2]+P(A,136)|0;b=g;u=J[b+232>>2]==2?b:0;if(!u){if(!(H[333884]&1)){J[m+56>>2]=0;J[m+60>>2]=0;J[m+48>>2]=0;J[m+52>>2]=0;_y(m+48|0);H[333884]=1}J[m+56>>2]=0;J[m+60>>2]=0;J[m+48>>2]=0;J[m+52>>2]=0;Zy(m+48|0);b=333276}J[i+104>>2]=b;b=f;if(!p){if(!(H[333884]&1)){J[m+56>>2]=0;J[m+60>>2]=0;J[m+48>>2]=0;J[m+52>>2]=0;_y(m+48|0);H[333884]=1}J[m+56>>2]=0;J[m+60>>2]=0;J[m+48>>2]=0;J[m+52>>2]=0;Zy(m+48|0);b=333276}J[i+112>>2]=k;J[i+108>>2]=b;x=Q(0);B=Q(0);t=Q(0);b=J[g+232>>2];j=J[f+232>>2];l=N[g+52>>2];o=N[k+48>>2];n=N[g+56>>2];s=N[k+52>>2];r=N[g+60>>2];q=N[k+56>>2];J[m+60>>2]=0;N[m+56>>2]=q-r;N[m+52>>2]=s-n;N[m+48>>2]=o-l;l=N[f+52>>2];o=N[k+32>>2];n=N[f+56>>2];s=N[k+36>>2];r=N[f+60>>2];q=N[k+40>>2];J[m+44>>2]=0;N[m+40>>2]=q-r;N[m+36>>2]=s-n;N[m+32>>2]=o-l;J[m+28>>2]=1065353216;o=Q(0);l=Q(0);q=Q(0);n=Q(0);b=(b|0)==2?g:0;if(b){l=N[m+48>>2];n=N[k+68>>2];r=N[m+52>>2];q=N[k+64>>2];s=Q(Q(l*n)-Q(r*q));v=N[k+72>>2];w=N[m+56>>2];r=Q(Q(r*v)-Q(w*n));q=Q(Q(w*q)-Q(l*v));n=Q(Q(Q(N[b+296>>2]*s)+Q(Q(N[b+288>>2]*r)+Q(q*N[b+292>>2])))*N[b+544>>2]);l=Q(Q(Q(N[b+264>>2]*s)+Q(Q(N[b+256>>2]*r)+Q(N[b+260>>2]*q)))*N[b+536>>2]);q=Q(Q(Q(N[b+280>>2]*s)+Q(Q(N[b+272>>2]*r)+Q(q*N[b+276>>2])))*N[b+540>>2])}J[i+60>>2]=0;N[i+56>>2]=n;N[i+52>>2]=q;N[i+48>>2]=l;s=Q(0);r=Q(0);j=(j|0)==2?f:0;if(j){s=N[m+36>>2];r=N[k+72>>2];v=N[m+40>>2];w=N[k+68>>2];o=Q(-Q(Q(s*r)-Q(v*w)));y=N[k+64>>2];E=N[m+32>>2];v=Q(Q(v*y)-Q(E*r));w=Q(Q(E*w)-Q(s*y));r=Q(Q(Q(Q(N[j+288>>2]*o)-Q(N[j+292>>2]*v))-Q(N[j+296>>2]*w))*N[j+544>>2]);s=Q(Q(Q(Q(N[j+272>>2]*o)-Q(N[j+276>>2]*v))-Q(N[j+280>>2]*w))*N[j+540>>2]);o=Q(Q(Q(Q(N[j+256>>2]*o)-Q(N[j+260>>2]*v))-Q(N[j+264>>2]*w))*N[j+536>>2])}J[i+76>>2]=0;N[i+72>>2]=r;N[i+68>>2]=s;N[i+64>>2]=o;D=N[m+28>>2];if(b){w=N[m+52>>2];y=N[m+48>>2];z=Q(N[k+72>>2]*Q(Q(l*w)-Q(q*y)));C=q;q=N[m+56>>2];n=Q(N[b+336>>2]+Q(z+Q(Q(N[k+64>>2]*Q(Q(C*q)-Q(n*w)))+Q(Q(Q(n*y)-Q(l*q))*N[k+68>>2]))))}else{n=Q(0)}l=n;if(j){n=N[m+32>>2];q=N[m+36>>2];z=Q(N[k+72>>2]*Q(Q(s*n)-Q(o*q)));C=s;s=N[m+40>>2];n=Q(N[j+336>>2]+Q(z+Q(Q(N[k+64>>2]*Q(Q(r*q)-Q(C*s)))+Q(Q(Q(o*s)-Q(r*n))*N[k+68>>2]))))}else{n=Q(0)}N[i+92>>2]=D/Q(l+n);L=k- -64|0;O=J[L+4>>2];J[i+16>>2]=J[L>>2];J[i+20>>2]=O;O=J[L+12>>2];J[i+24>>2]=J[L+8>>2];J[i+28>>2]=O;l=N[m+56>>2];o=N[k+72>>2];n=N[k+68>>2];s=N[m+48>>2];r=N[m+52>>2];q=N[k+64>>2];J[i+12>>2]=0;N[i+8>>2]=Q(s*n)-Q(r*q);N[i+4>>2]=Q(l*q)-Q(s*o);N[i>>2]=Q(r*o)-Q(l*n);l=N[k+72>>2];o=N[m+40>>2];n=N[m+36>>2];s=N[k+64>>2];r=N[m+32>>2];q=N[k+68>>2];J[i+44>>2]=0;N[i+40>>2]=Q(s*n)-Q(r*q);N[i+36>>2]=Q(l*r)-Q(o*s);N[i+32>>2]=Q(q*o)-Q(n*l);o=Q(0);l=Q(0);q=Q(0);n=Q(0);if(b){l=N[b+320>>2];s=N[m+52>>2];r=N[b+324>>2];q=N[m+48>>2];n=Q(Q(Q(l*s)-Q(r*q))+N[b+312>>2]);v=N[b+328>>2];C=l;l=N[m+56>>2];q=Q(Q(Q(v*q)-Q(C*l))+N[b+308>>2]);l=Q(Q(Q(r*l)-Q(v*s))+N[b+304>>2])}s=Q(0);r=Q(0);if(j){o=N[j+320>>2];v=N[m+36>>2];w=N[j+324>>2];s=N[m+32>>2];r=Q(Q(Q(o*v)-Q(w*s))+N[j+312>>2]);y=N[j+328>>2];C=o;o=N[m+40>>2];s=Q(Q(Q(y*s)-Q(C*o))+N[j+308>>2]);o=Q(Q(Q(w*o)-Q(y*v))+N[j+304>>2])}J[m+20>>2]=0;n=Q(n-r);N[m+16>>2]=n;s=Q(q-s);N[m+12>>2]=s;l=Q(l-o);N[m+8>>2]=l;N[m+24>>2]=Q(N[k+72>>2]*n)+Q(Q(N[k+64>>2]*l)+Q(s*N[k+68>>2]));G=N[h+52>>2];D=N[k+80>>2];N[i+88>>2]=N[k+84>>2];n=Q(0);p:{if(J[k+144>>2]>J[h+64>>2]){break p}n=Q(N[k+88>>2]*Q(-N[m+24>>2]));if(!(n<=Q(0))){break p}n=Q(0)}q:{if(K[h+60|0]&4){l=Q(N[k+112>>2]*N[h+56>>2]);N[i+84>>2]=l;r:{if(!b){break r}o=N[b+336>>2];if(o==Q(0)){break r}s=N[i+24>>2];r=N[i+20>>2];N[b+504>>2]=N[b+504>>2]+Q(l*Q(Q(o*N[i+16>>2])*N[b+340>>2]));N[b+508>>2]=Q(l*Q(Q(o*r)*N[b+344>>2]))+N[b+508>>2];N[b+512>>2]=Q(l*Q(Q(o*s)*N[b+348>>2]))+N[b+512>>2];o=N[i+56>>2];s=N[i+52>>2];N[b+520>>2]=Q(Q(l*N[b+536>>2])*N[i+48>>2])+N[b+520>>2];r=N[b+544>>2];N[b+524>>2]=Q(s*Q(l*N[b+540>>2]))+N[b+524>>2];N[b+528>>2]=Q(o*Q(l*r))+N[b+528>>2]}if(!j){break q}o=N[j+336>>2];if(o==Q(0)){break q}s=N[i+72>>2];r=N[i+68>>2];q=N[i+24>>2];v=N[i+20>>2];w=N[i+16>>2];l=N[i+84>>2];N[j+520>>2]=N[j+520>>2]+Q(N[i+64>>2]*Q(N[j+536>>2]*l));N[j+504>>2]=N[j+504>>2]-Q(l*Q(Q(o*w)*N[j+340>>2]));N[j+508>>2]=N[j+508>>2]-Q(l*Q(Q(o*v)*N[j+344>>2]));N[j+512>>2]=N[j+512>>2]-Q(l*Q(Q(o*q)*N[j+348>>2]));o=N[j+544>>2];N[j+524>>2]=N[j+524>>2]+Q(r*Q(l*N[j+540>>2]));N[j+528>>2]=N[j+528>>2]+Q(s*Q(o*l));break q}J[i+84>>2]=0}J[i+80>>2]=0;s=Q(0);r=Q(0);l=Q(0);o=Q(0);if(b){o=N[b+304>>2];r=N[b+312>>2];l=N[b+308>>2]}y=Q(0);E=Q(0);if(b){y=N[b+324>>2];E=N[b+320>>2];s=N[b+328>>2]}q=N[i+24>>2];v=N[i+20>>2];w=N[i+16>>2];S=N[i+8>>2];T=N[i+4>>2];U=N[i>>2];s:{if(j){x=N[j+328>>2];B=N[j+324>>2];t=N[j+320>>2];C=Q(Q(q*N[j+312>>2])+Q(Q(w*N[j+304>>2])+Q(v*N[j+308>>2])));break s}C=Q(Q(q*Q(0))+Q(Q(w*Q(0))+Q(v*Q(0))))}z=N[h+12>>2];V=N[h+32>>2];b=J[h+44>>2];W=N[h+48>>2];J[i+128>>2]=1343554297;J[i+120>>2]=0;J[i+124>>2]=0;G=Q(D+G);D=N[i+92>>2];z=Q(Q(Q(V*Q(-G))/z)*D);b=!b|G>W;N[i+132>>2]=b?Q(0):z;l=Q(D*Q(n-Q(Q(Q(Q(q*r)+Q(Q(w*o)+Q(l*v)))+Q(Q(S*s)+Q(Q(U*E)+Q(y*T))))+Q(Q(Q(N[i+40>>2]*x)+Q(Q(N[i+32>>2]*t)+Q(B*N[i+36>>2])))-C))));N[i+116>>2]=b?Q(z+l):l;J[i+100>>2]=J[a+48>>2];t:{if(!(K[k+116|0]?K[h+60|0]&32:0)){s=N[m+8>>2];o=N[m+12>>2];t=N[m+16>>2];l=N[m+24>>2];J[k+160>>2]=0;n=N[k+72>>2];t=Q(t-Q(l*n));N[k+156>>2]=t;q=o;o=N[k+68>>2];r=Q(q-Q(l*o));N[k+152>>2]=r;q=s;s=N[k+64>>2];l=Q(q-Q(l*s));N[k+148>>2]=l;b=k+148|0;u:{q=Q(Q(t*t)+Q(Q(l*l)+Q(r*r)));if(!(q>Q(1.1920928955078125e-7))){break u}j=J[h+60>>2];if(j&64){break u}x=t;t=Q(Q(1)/Q(Y(q)));q=Q(x*t);N[k+156>>2]=q;r=Q(r*t);N[k+152>>2]=r;l=Q(l*t);N[k+148>>2]=l;if(j&16){J[k+176>>2]=0;t=Q(Q(l*o)-Q(r*s));r=Q(Q(r*n)-Q(q*o));l=Q(Q(q*s)-Q(l*n));o=Q(Q(1)/Q(Y(Q(Q(t*t)+Q(Q(r*r)+Q(l*l))))));t=Q(t*o);N[k+172>>2]=t;l=Q(l*o);N[k+168>>2]=l;o=Q(r*o);N[k+164>>2]=o;if(J[g+180>>2]){E=N[g+172>>2];n=N[g+44>>2];s=N[g+12>>2];r=N[g+28>>2];C=N[g+164>>2];q=N[g+36>>2];v=N[g+4>>2];w=N[g+20>>2];G=N[g+168>>2];x=N[g+40>>2];B=N[g+8>>2];y=N[g+24>>2];J[k+176>>2]=0;D=n;n=Q(E*Q(Q(n*t)+Q(Q(s*o)+Q(l*r))));z=q;q=Q(C*Q(Q(q*t)+Q(Q(v*o)+Q(l*w))));o=Q(G*Q(Q(x*t)+Q(Q(B*o)+Q(l*y))));t=Q(Q(D*n)+Q(Q(z*q)+Q(x*o)));N[k+172>>2]=t;l=Q(Q(r*n)+Q(Q(w*q)+Q(y*o)));N[k+168>>2]=l;o=Q(Q(s*n)+Q(Q(v*q)+Q(B*o)));N[k+164>>2]=o}if(J[f+180>>2]){E=N[f+172>>2];n=N[f+44>>2];s=N[f+12>>2];r=N[f+28>>2];C=N[f+164>>2];q=N[f+36>>2];v=N[f+4>>2];w=N[f+20>>2];G=N[f+168>>2];x=N[f+40>>2];B=N[f+8>>2];y=N[f+24>>2];J[k+176>>2]=0;D=n;n=Q(E*Q(Q(n*t)+Q(Q(s*o)+Q(l*r))));z=q;q=Q(C*Q(Q(q*t)+Q(Q(v*o)+Q(w*l))));l=Q(G*Q(Q(x*t)+Q(Q(B*o)+Q(l*y))));N[k+172>>2]=Q(D*n)+Q(Q(z*q)+Q(x*l));N[k+168>>2]=Q(r*n)+Q(Q(w*q)+Q(y*l));N[k+164>>2]=Q(s*n)+Q(Q(v*q)+Q(B*l))}rt(a,k+164|0,A,k,m+48|0,m+32|0,g,f,N[m+28>>2],Q(0),Q(0))}if(J[g+180>>2]){x=N[g+172>>2];l=N[g+44>>2];t=N[g+12>>2];o=N[g+28>>2];E=N[g+164>>2];n=N[g+36>>2];s=N[g+4>>2];r=N[g+20>>2];C=N[g+168>>2];q=N[g+40>>2];v=N[g+8>>2];w=N[g+24>>2];J[k+160>>2]=0;D=l;z=x;l=N[k+156>>2];x=N[k+148>>2];B=N[k+152>>2];y=Q(z*Q(Q(D*l)+Q(Q(t*x)+Q(o*B))));z=n;n=Q(E*Q(Q(n*l)+Q(Q(s*x)+Q(r*B))));l=Q(C*Q(Q(q*l)+Q(Q(v*x)+Q(B*w))));N[k+156>>2]=Q(D*y)+Q(Q(z*n)+Q(q*l));N[k+152>>2]=Q(o*y)+Q(Q(r*n)+Q(w*l));N[k+148>>2]=Q(t*y)+Q(Q(s*n)+Q(v*l))}if(J[f+180>>2]){x=N[f+172>>2];l=N[f+44>>2];t=N[f+12>>2];o=N[f+28>>2];E=N[f+164>>2];n=N[f+36>>2];s=N[f+4>>2];r=N[f+20>>2];C=N[f+168>>2];q=N[f+40>>2];v=N[f+8>>2];w=N[f+24>>2];J[k+160>>2]=0;D=l;z=x;l=N[k+156>>2];x=N[k+148>>2];B=N[k+152>>2];y=Q(z*Q(Q(D*l)+Q(Q(t*x)+Q(o*B))));z=n;n=Q(E*Q(Q(n*l)+Q(Q(s*x)+Q(r*B))));l=Q(C*Q(Q(q*l)+Q(Q(v*x)+Q(B*w))));N[k+156>>2]=Q(D*y)+Q(Q(z*n)+Q(q*l));N[k+152>>2]=Q(o*y)+Q(Q(r*n)+Q(w*l));N[k+148>>2]=Q(t*y)+Q(Q(s*n)+Q(v*l))}rt(a,b,A,k,m+48|0,m+32|0,g,f,N[m+28>>2],Q(0),Q(0));H[k+116|0]=1;break t}v:{if(Q(R(n))>Q(.7071067690849304)){l=Q(Q(o*o)+Q(n*n));r=Q(Q(1)/Q(Y(l)));t=Q(l*r);q=Q(r*Q(-n));l=Q(s*q);n=Q(o*r);o=Q(n*Q(-s));r=Q(0);break v}l=Q(Q(s*s)+Q(o*o));t=Q(Q(1)/Q(Y(l)));l=Q(l*t);r=Q(t*Q(-o));o=Q(n*r);q=Q(s*t);t=Q(q*Q(-n));n=Q(0)}N[k+172>>2]=l;N[k+168>>2]=o;N[k+164>>2]=t;N[k+156>>2]=n;N[k+152>>2]=q;N[k+148>>2]=r;if(K[h+60|0]&16){if(J[g+180>>2]){E=N[g+172>>2];n=N[g+44>>2];s=N[g+12>>2];r=N[g+28>>2];C=N[g+164>>2];q=N[g+36>>2];v=N[g+4>>2];w=N[g+20>>2];G=N[g+168>>2];x=N[g+40>>2];B=N[g+8>>2];y=N[g+24>>2];J[k+176>>2]=0;D=n;n=Q(E*Q(Q(n*l)+Q(Q(s*t)+Q(o*r))));z=q;q=Q(C*Q(Q(q*l)+Q(Q(v*t)+Q(w*o))));t=Q(G*Q(Q(x*l)+Q(Q(B*t)+Q(o*y))));l=Q(Q(D*n)+Q(Q(z*q)+Q(x*t)));N[k+172>>2]=l;o=Q(Q(r*n)+Q(Q(w*q)+Q(y*t)));N[k+168>>2]=o;t=Q(Q(s*n)+Q(Q(v*q)+Q(B*t)));N[k+164>>2]=t}if(J[f+180>>2]){E=N[f+172>>2];n=N[f+44>>2];s=N[f+12>>2];r=N[f+28>>2];C=N[f+164>>2];q=N[f+36>>2];v=N[f+4>>2];w=N[f+20>>2];G=N[f+168>>2];x=N[f+40>>2];B=N[f+8>>2];y=N[f+24>>2];J[k+176>>2]=0;D=n;n=Q(E*Q(Q(n*l)+Q(Q(s*t)+Q(o*r))));z=q;q=Q(C*Q(Q(q*l)+Q(Q(v*t)+Q(w*o))));l=Q(G*Q(Q(x*l)+Q(Q(B*t)+Q(o*y))));N[k+172>>2]=Q(D*n)+Q(Q(z*q)+Q(x*l));N[k+168>>2]=Q(r*n)+Q(Q(w*q)+Q(y*l));N[k+164>>2]=Q(s*n)+Q(Q(v*q)+Q(B*l))}rt(a,k+164|0,A,k,m+48|0,m+32|0,g,f,N[m+28>>2],Q(0),Q(0))}if(J[g+180>>2]){x=N[g+172>>2];l=N[g+44>>2];t=N[g+12>>2];o=N[g+28>>2];E=N[g+164>>2];n=N[g+36>>2];s=N[g+4>>2];r=N[g+20>>2];C=N[g+168>>2];q=N[g+40>>2];v=N[g+8>>2];w=N[g+24>>2];J[k+160>>2]=0;D=l;z=x;l=N[k+156>>2];x=N[k+148>>2];B=N[k+152>>2];y=Q(z*Q(Q(D*l)+Q(Q(t*x)+Q(o*B))));z=n;n=Q(E*Q(Q(n*l)+Q(Q(s*x)+Q(r*B))));l=Q(C*Q(Q(q*l)+Q(Q(v*x)+Q(B*w))));N[k+156>>2]=Q(D*y)+Q(Q(z*n)+Q(q*l));N[k+152>>2]=Q(o*y)+Q(Q(r*n)+Q(w*l));N[k+148>>2]=Q(t*y)+Q(Q(s*n)+Q(v*l))}if(J[f+180>>2]){x=N[f+172>>2];l=N[f+44>>2];t=N[f+12>>2];o=N[f+28>>2];E=N[f+164>>2];n=N[f+36>>2];s=N[f+4>>2];r=N[f+20>>2];C=N[f+168>>2];q=N[f+40>>2];v=N[f+8>>2];w=N[f+24>>2];J[k+160>>2]=0;D=l;z=x;l=N[k+156>>2];x=N[k+148>>2];B=N[k+152>>2];y=Q(z*Q(Q(D*l)+Q(Q(t*x)+Q(o*B))));z=n;n=Q(E*Q(Q(n*l)+Q(Q(s*x)+Q(r*B))));l=Q(C*Q(Q(q*l)+Q(Q(v*x)+Q(B*w))));N[k+156>>2]=Q(D*y)+Q(Q(z*n)+Q(q*l));N[k+152>>2]=Q(o*y)+Q(Q(r*n)+Q(w*l));N[k+148>>2]=Q(t*y)+Q(Q(s*n)+Q(v*l))}rt(a,b,A,k,m+48|0,m+32|0,g,f,N[m+28>>2],Q(0),Q(0));H[k+116|0]=1;break t}b=m+48|0;j=m+32|0;l=N[m+28>>2];rt(a,k+148|0,A,k,b,j,g,f,l,N[k+128>>2],N[k+136>>2]);if(!(K[h+60|0]&16)){break t}rt(a,k+164|0,A,k,b,j,g,f,l,N[k+132>>2],N[k+140>>2])}j=J[a+56>>2];b=J[i+100>>2];A=J[h+60>>2];w:{if(A&8){b=j+P(b,136)|0;if(A&4){l=Q(N[k+120>>2]*N[h+56>>2]);N[b+84>>2]=l;x:{if(!u){break x}t=N[u+336>>2];if(t==Q(0)){break x}o=N[b+24>>2];n=N[b+20>>2];N[u+504>>2]=N[u+504>>2]+Q(l*Q(Q(t*N[b+16>>2])*N[u+340>>2]));N[u+508>>2]=Q(l*Q(Q(t*n)*N[u+344>>2]))+N[u+508>>2];N[u+512>>2]=Q(l*Q(Q(t*o)*N[u+348>>2]))+N[u+512>>2];t=N[b+56>>2];o=N[b+52>>2];N[u+520>>2]=Q(Q(l*N[u+536>>2])*N[b+48>>2])+N[u+520>>2];n=N[u+544>>2];N[u+524>>2]=Q(o*Q(l*N[u+540>>2]))+N[u+524>>2];N[u+528>>2]=Q(t*Q(l*n))+N[u+528>>2]}y:{if(!p){break y}t=N[p+336>>2];if(t==Q(0)){break y}o=N[b+72>>2];n=N[b+68>>2];s=N[b+24>>2];r=N[b+20>>2];q=N[b+16>>2];l=N[b+84>>2];N[p+520>>2]=N[p+520>>2]+Q(N[b+64>>2]*Q(N[p+536>>2]*l));N[p+504>>2]=N[p+504>>2]-Q(l*Q(Q(t*q)*N[p+340>>2]));N[p+508>>2]=N[p+508>>2]-Q(l*Q(Q(t*r)*N[p+344>>2]));N[p+512>>2]=N[p+512>>2]-Q(l*Q(Q(t*s)*N[p+348>>2]));t=N[p+544>>2];N[p+524>>2]=N[p+524>>2]+Q(n*Q(l*N[p+540>>2]));N[p+528>>2]=N[p+528>>2]+Q(o*Q(t*l))}if(!(A&16)){break w}b=j+P(J[i+100>>2],136)|0;l=Q(N[k+124>>2]*N[h+56>>2]);N[b+220>>2]=l;z:{if(!u){break z}t=N[u+336>>2];if(t==Q(0)){break z}o=N[b+160>>2];n=N[b+156>>2];N[u+504>>2]=N[u+504>>2]+Q(l*Q(t*N[b+152>>2]));N[u+508>>2]=Q(l*Q(t*n))+N[u+508>>2];N[u+512>>2]=Q(l*Q(t*o))+N[u+512>>2];t=N[b+192>>2];o=N[b+188>>2];N[u+520>>2]=Q(Q(l*N[u+536>>2])*N[b+184>>2])+N[u+520>>2];n=N[u+544>>2];N[u+524>>2]=Q(o*Q(l*N[u+540>>2]))+N[u+524>>2];N[u+528>>2]=Q(t*Q(l*n))+N[u+528>>2]}if(!p){break w}t=N[p+336>>2];if(t==Q(0)){break w}o=N[b+208>>2];n=N[b+204>>2];s=N[b+200>>2];r=N[b+160>>2];q=N[b+156>>2];l=N[b+220>>2];N[p+504>>2]=N[p+504>>2]-Q(l*Q(t*N[b+152>>2]));N[p+508>>2]=N[p+508>>2]-Q(l*Q(t*q));N[p+512>>2]=N[p+512>>2]-Q(l*Q(t*r));N[p+520>>2]=N[p+520>>2]+Q(s*Q(l*N[p+536>>2]));t=N[p+544>>2];N[p+524>>2]=N[p+524>>2]+Q(n*Q(l*N[p+540>>2]));N[p+528>>2]=N[p+528>>2]+Q(o*Q(t*l));break w}J[b+84>>2]=0;if(!(A&16)){break w}J[(j+P(J[i+100>>2],136)|0)+220>>2]=0;break w}J[(j+P(b,136)|0)+84>>2]=0;if(!(A&16)){break w}J[(j+P(J[i+100>>2],136)|0)+220>>2]=0}i=J[F+1116>>2]}M=M+1|0;if((M|0)<(i|0)){continue}break}}Ui=m- -64|0;c=c+1|0;if((e|0)!=(c|0)){continue}break}}f=J[a+48>>2];g=J[a+8>>2];d=J[a+68>>2];if((g|0)>(d|0)){A:{if((g|0)<=J[a+72>>2]){p=J[a+76>>2];break A}B:{if(!g){p=0;b=d;break B}p=Yj(g<<2);b=J[a+68>>2]}h=J[a+76>>2];C:{D:{e=b;if((b|0)>0){b=0;c=0;if(e>>>0>=4){k=e&2147483644;j=0;while(1){i=c<<2;J[i+p>>2]=J[h+i>>2];m=i|4;J[m+p>>2]=J[h+m>>2];m=i|8;J[m+p>>2]=J[h+m>>2];i=i|12;J[i+p>>2]=J[h+i>>2];c=c+4|0;j=j+4|0;if((k|0)!=(j|0)){continue}break}}e=e&3;if(!e){break D}while(1){i=c<<2;J[i+p>>2]=J[h+i>>2];c=c+1|0;b=b+1|0;if((e|0)!=(b|0)){continue}break}break D}if(h){break D}break C}if(h?K[a+80|0]==1:0){J[83765]=J[83765]+1;Zi[J[61751]](J[h-4>>2])}}J[a+76>>2]=p;H[a+80|0]=1;J[a+72>>2]=g}ij((d<<2)+p|0,0,g-d<<2)}J[a+68>>2]=g;d=J[a+88>>2];if((d|0)<(f|0)){E:{if((f|0)<=J[a+92>>2]){p=J[a+96>>2];break E}F:{if(!f){p=0;b=d;break F}p=Yj(f<<2);b=J[a+88>>2]}h=J[a+96>>2];G:{H:{e=b;if((b|0)>0){b=0;c=0;if(e>>>0>=4){k=e&2147483644;j=0;while(1){i=c<<2;J[i+p>>2]=J[h+i>>2];m=i|4;J[m+p>>2]=J[h+m>>2];m=i|8;J[m+p>>2]=J[h+m>>2];i=i|12;J[i+p>>2]=J[h+i>>2];c=c+4|0;j=j+4|0;if((k|0)!=(j|0)){continue}break}}e=e&3;if(!e){break H}while(1){i=c<<2;J[i+p>>2]=J[h+i>>2];c=c+1|0;b=b+1|0;if((e|0)!=(b|0)){continue}break}break H}if(h){break H}break G}if(h?K[a+100|0]==1:0){J[83765]=J[83765]+1;Zi[J[61751]](J[h-4>>2])}}J[a+96>>2]=p;H[a+100|0]=1;J[a+92>>2]=f}ij((d<<2)+p|0,0,f-d<<2)}J[a+88>>2]=f;I:{if((g|0)<=0){break I}b=J[a+76>>2];k=0;c=0;if(g>>>0>=8){d=g&2147483640;i=0;while(1){J[b+(c<<2)>>2]=c;e=c|1;J[b+(e<<2)>>2]=e;e=c|2;J[b+(e<<2)>>2]=e;e=c|3;J[b+(e<<2)>>2]=e;e=c|4;J[b+(e<<2)>>2]=e;e=c|5;J[b+(e<<2)>>2]=e;e=c|6;J[b+(e<<2)>>2]=e;e=c|7;J[b+(e<<2)>>2]=e;c=c+8|0;i=i+8|0;if((d|0)!=(i|0)){continue}break}}d=g&7;if(!d){break I}while(1){J[b+(c<<2)>>2]=c;c=c+1|0;k=k+1|0;if((d|0)!=(k|0)){continue}break}}if((f|0)<=0){break a}a=J[a+96>>2];k=0;c=0;if(f>>>0>=8){b=f&2147483640;i=0;while(1){J[a+(c<<2)>>2]=c;d=c|1;J[a+(d<<2)>>2]=d;d=c|2;J[a+(d<<2)>>2]=d;d=c|3;J[a+(d<<2)>>2]=d;d=c|4;J[a+(d<<2)>>2]=d;d=c|5;J[a+(d<<2)>>2]=d;d=c|6;J[a+(d<<2)>>2]=d;d=c|7;J[a+(d<<2)>>2]=d;c=c+8|0;i=i+8|0;if((b|0)!=(i|0)){continue}break}}b=f&7;if(!b){break a}while(1){J[a+(c<<2)>>2]=c;c=c+1|0;k=k+1|0;if((b|0)!=(k|0)){continue}break}}Wl();Ui=I- -64|0;return Q(Q(0))}function t1(a,b){a=a|0;b=b|0;var c=0,d=0,e=0,f=0,g=0,h=0,i=0,j=0,k=0,l=0,m=0,n=0,o=0,p=0,q=0,r=0,s=0,t=0,u=0,v=Q(0),w=0,x=0,y=0,z=0,A=Q(0),C=0,D=0,E=0,F=0,G=0,O=0;u=Ui-48|0;Ui=u;r=nj(52);J[r+24>>2]=0;J[r+28>>2]=0;E=r+32|0;c=E;J[c>>2]=0;J[c+4>>2]=0;lj(16384,1,r+24|0,c,r+28|0);a:{b:{if((Bs(a,0,16384,J[r+24>>2],u+44|0)|0)!=-17){C=J[r+24>>2];e=J[c>>2]-C|0;c=J[u+44>>2];if(e>>>0>>0){break a}J[r+20>>2]=c;c=c+C|0;J[r+28>>2]=c;s=Ui-1536|0;Ui=s;d=s+12|0;ij(d,0,1524);J[s+1444>>2]=-1;J[s+148>>2]=0;J[s+120>>2]=0;J[s+124>>2]=0;J[s+52>>2]=0;H[s+72|0]=1;J[s+44>>2]=0;J[s+56>>2]=C;J[s+64>>2]=c;m=Ui-1008|0;Ui=m;H[d+1389|0]=1;c:{if(!Qo(d)){break c}c=K[d+1387|0];if(!(c&2)){J[d+112>>2]=34;break c}if(c&4){J[d+112>>2]=34;break c}if(c&1){J[d+112>>2]=34;break c}if(J[d+1128>>2]!=1){J[d+112>>2]=34;break c}c=K[d+1132|0];if((c|0)!=30){d:{if((c|0)!=64){break d}if(!bJ(d,m+1002|0)|K[m+1002|0]!=102|(K[m+1003|0]!=105|K[m+1004|0]!=115)){break d}if(K[m+1005|0]!=104|K[m+1006|0]!=101|K[m+1007|0]!=97){break d}if((gr(d)|0)!=100){break d}if(gr(d)){break d}J[d+112>>2]=38;break c}J[d+112>>2]=34;break c}if((gr(d)|0)!=1){J[d+112>>2]=34;break c}if(!bJ(d,m+1002|0)){J[d+112>>2]=10;break c}if(Wj(m+1002|0,288184,6)){J[d+112>>2]=34;break c}if(dp(d)){J[d+112>>2]=34;break c}c=gr(d);J[d+4>>2]=c;if(!c){J[d+112>>2]=34;break c}if(c>>>0>=17){J[d+112>>2]=5;break c}c=dp(d);J[d>>2]=c;if(!c){J[d+112>>2]=34;break c}dp(d);dp(d);dp(d);c=gr(d);g=c>>>4|0;J[d+128>>2]=1<>2]=1<>>0<=4294967287){J[d+112>>2]=20;break c}if(c+32<<24>>24>=0){J[d+112>>2]=20;break c}if(e>>>0>g>>>0){J[d+112>>2]=20;break c}if(!(gr(d)&1)){J[d+112>>2]=34;break c}if(!Qo(d)){break c}if(!wG(d)){break c}if(!fA(d)){break c}c=Zk(d);J[d+1408>>2]=0;e:{f:{if((c|0)==3){c=Zk(d);J[d+1408>>2]=0;H[m+1002|0]=c;c=Zk(d);J[d+1408>>2]=0;H[m+1003|0]=c;c=Zk(d);J[d+1408>>2]=0;H[m+1004|0]=c;c=Zk(d);J[d+1408>>2]=0;H[m+1005|0]=c;c=Zk(d);J[d+1408>>2]=0;H[m+1006|0]=c;c=Zk(d);J[d+1408>>2]=0;H[m+1007|0]=c;if(Wj(m+1002|0,288184,6)){J[d+112>>2]=20;break c}e=jB(d);c=Yl(d,e+1|0);J[d+20>>2]=c;if(c){if((e|0)>0){while(1){c=Zk(d);J[d+1408>>2]=0;H[J[d+20>>2]+f|0]=c;f=f+1|0;if((e|0)!=(f|0)){continue}break}c=J[d+20>>2]}H[c+e|0]=0;c=jB(d);J[d+28>>2]=0;J[d+24>>2]=c;g:{h:{if((c|0)<=0){break h}c=Yl(d,c<<2);J[d+28>>2]=c;if(!c){J[d+112>>2]=3;f=0;break c}if(J[d+24>>2]<=0){break h}while(1){e=jB(d);c=Yl(d,e+1|0);g=l<<2;J[g+J[d+28>>2]>>2]=c;c=J[g+J[d+28>>2]>>2];if(!c){break g}f=0;if((e|0)>0){while(1){c=Zk(d);J[d+1408>>2]=0;H[J[g+J[d+28>>2]>>2]+f|0]=c;f=f+1|0;if((e|0)!=(f|0)){continue}break}c=J[g+J[d+28>>2]>>2]}H[c+e|0]=0;l=l+1|0;if((l|0)>2]){continue}break}}c=Zk(d);J[d+1408>>2]=0;if(!(c&1)){J[d+112>>2]=20;f=0;break c}Vz(d,K[d+1388|0]);f=0;H[d+1388|0]=0;c=fA(d);Vz(d,c);H[d+1388|0]=0;if(c){while(1){c=fA(d);Vz(d,c);H[d+1388|0]=0;if(c){continue}break}}if(!wG(d)){break c}i:{if(!K[d+60|0]){break i}if(PI(d)){break i}if(J[d+112>>2]!=21){break c}J[d+112>>2]=20;break c}c=0;while(1){e=c<<25;g=(e^c<<24>>31&79764919)<<1;e=(g^e>>31&79764919)<<1;g=(g>>31&79764919^e)<<1;i=g>>31&79764919;g=(g^e>>31&79764919)<<1;e=(i^g)<<1;g=(e^g>>31&79764919)<<1;J[(c<<2)+981952>>2]=g>>31&79764919^(g^e>>31&79764919)<<1;c=c+1|0;if((c|0)!=256){continue}break}c=Zk(d);J[d+1408>>2]=0;if((c|0)==5){c=Zk(d);J[d+1408>>2]=0;H[m+1002|0]=c;c=Zk(d);J[d+1408>>2]=0;H[m+1003|0]=c;c=Zk(d);J[d+1408>>2]=0;H[m+1004|0]=c;c=Zk(d);J[d+1408>>2]=0;H[m+1005|0]=c;c=Zk(d);J[d+1408>>2]=0;H[m+1006|0]=c;c=Zk(d);J[d+1408>>2]=0;H[m+1007|0]=c;if(Wj(m+1002|0,288184,6)){J[d+112>>2]=20;break c}c=bk(d,8)+1|0;J[d+132>>2]=c;c=Yl(d,P(c,2096));J[d+136>>2]=c;if(!c){J[d+112>>2]=3;break c}l=0;ij(c,0,P(J[d+132>>2],2096));j:{k:{if(J[d+132>>2]>0){while(1){c=J[d+136>>2];if((bk(d,8)&255)!=66){J[d+112>>2]=20;f=0;break c}if((bk(d,8)&255)!=67){J[d+112>>2]=20;f=0;break c}if((bk(d,8)&255)!=86){J[d+112>>2]=20;f=0;break c}h=P(x,2096)+c|0;J[h>>2]=bk(d,8)&255|bk(d,8)<<8;J[h+4>>2]=bk(d,8)&255|(bk(d,8)<<8&65280|bk(d,8)<<16);c=0;n=h+4|0;f=bk(d,1);if(!f){c=bk(d,1)}H[h+23|0]=c;if(!(J[h>>2]|!J[n>>2])){J[d+112>>2]=20;f=0;break c}e=J[n>>2];l:{if(c&255){g=nw(d,e);break l}g=Yl(d,e);J[h+8>>2]=g}if(!g){J[d+112>>2]=3;f=0;break c}m:{if(!f){c=0;j=0;e=J[n>>2];if((e|0)<=0){break m}while(1){n:{o:{if(K[h+23|0]){if(!bk(d,1)){break o}}e=bk(d,5)+1|0;H[c+g|0]=e;if((e&255)!=32){j=j+1|0;break n}J[d+112>>2]=20;f=0;break c}H[c+g|0]=255}c=c+1|0;e=J[n>>2];if((c|0)<(e|0)){continue}break}break m}k=bk(d,5);j=0;c=0;e=J[n>>2];if((e|0)<=0){break m}while(1){f=bk(d,fB(e-c|0));k=k+1|0;if((k|0)>=32){J[d+112>>2]=20;f=0;break c}e=c+f|0;if((e|0)>J[n>>2]){J[d+112>>2]=20;f=0;break c}ij(c+g|0,k,f);c=e;e=J[n>>2];if((c|0)<(e|0)){continue}break}}p:{q:{r:{s:{t:{if(K[h+23|0]){if(e>>2>(j|0)){break t}if(J[d+16>>2]<(e|0)){J[d+16>>2]=e}c=Yl(d,e);J[h+8>>2]=c;if(!c){J[d+112>>2]=3;f=0;break c}hj(c,g,J[n>>2]);u:{if(J[d+92>>2]){J[d+104>>2]=J[d+104>>2]+(J[n>>2]+7&-8);break u}cj(g)}H[h+23|0]=0;g=J[h+8>>2]}f=J[n>>2];v:{if((f|0)<=0){e=0;break v}i=0;c=0;e=0;if(f>>>0>=4){k=f&2147483644;j=0;while(1){t=e;e=c+g|0;e=(((t+((K[e|0]-11&255)>>>0<244)|0)+((K[e+1|0]-11&255)>>>0<244)|0)+((K[e+2|0]-11&255)>>>0<244)|0)+((K[e+3|0]-11&255)>>>0<244)|0;c=c+4|0;j=j+4|0;if((k|0)!=(j|0)){continue}break}}j=f&3;if(!j){break v}while(1){e=((K[c+g|0]-11&255)>>>0<244)+e|0;c=c+1|0;i=i+1|0;if((j|0)!=(i|0)){continue}break}}J[h+2092>>2]=e;c=Yl(d,f<<2);J[h+32>>2]=c;if(!c){break s}k=h+2092|0;e=J[n>>2];c=0;break p}J[h+2092>>2]=j;k=h+2092|0;if(j){break r}c=0;f=0;break q}J[d+112>>2]=3;f=0;break c}c=Yl(d,j);J[h+8>>2]=c;if(!c){J[d+112>>2]=3;f=0;break c}c=nw(d,J[h+2092>>2]<<2);J[h+32>>2]=c;if(!c){J[d+112>>2]=3;f=0;break c}c=nw(d,J[k>>2]<<2);if(!c){break k}f=J[k>>2]}e=J[n>>2];f=e+(f<<3)|0;if(f>>>0<=M[d+16>>2]){break p}J[d+16>>2]=f}j=0;f=0;i=Ui-128|0;Ui=i;o=ij(i,0,128);i=e;w:{x:{y:{z:{A:{B:{C:{D:{if((e|0)<=0){break D}while(1){if(K[g+j|0]!=255){break D}j=j+1|0;if((i|0)!=(j|0)){continue}break}break C}if((i|0)!=(j|0)){break B}}f=1;if(!J[h+2092>>2]){break A}Z(112896,82607,1094,25251);B()}p=g+j|0;q=K[p|0];if(q>>>0>=32){break z}e=J[h+32>>2];E:{if(!K[h+23|0]){J[e+(j<<2)>>2]=0;break E}J[e>>2]=0;H[J[h+8>>2]]=q;J[c>>2]=j}p=K[p|0];F:{if(!p){break F}e=1;if(p>>>0>=4){w=p&252;while(1){q=o+(e<<2)|0;J[q>>2]=1<<32-e;J[q+4>>2]=-2147483648>>>e;J[q+8>>2]=1<<30-e;J[q+12>>2]=1<<29-e;e=e+4|0;f=f+4|0;if((w|0)!=(f|0)){continue}break}}p=p&3;if(!p){break F}f=0;while(1){J[o+(e<<2)>>2]=1<<32-e;e=e+1|0;f=f+1|0;if((p|0)!=(f|0)){continue}break}}f=1;p=j+1|0;if((i|0)<=(p|0)){break A}w=1;while(1){z=g+p|0;j=K[z|0];G:{if((j|0)==255){break G}if(j>>>0>31){break y}f=0;e=j;if(!e){break A}while(1){t=o+(e<<2)|0;q=J[t>>2];if(!q){q=(e|0)>1;e=e-1|0;if(q){continue}break A}break}J[t>>2]=0;f=q<<24|(q&65280)<<8|(q>>>8&65280|q>>>24);f=f>>>4&252645135|(f&252645135)<<4;f=f>>>2&858993459|(f&858993459)<<2;f=f>>>1&1431655765|(f&1431655765)<<1;t=J[h+32>>2];H:{if(!K[h+23|0]){J[t+(p<<2)>>2]=f;break H}D=t;t=w<<2;J[D+t>>2]=f;H[J[h+8>>2]+w|0]=j;J[c+t>>2]=p}w=w+1|0;j=K[z|0];if(j>>>0<=e>>>0){break G}while(1){f=o+(j<<2)|0;if(J[f>>2]){break x}J[f>>2]=q+(1<<32-j);j=j-1|0;if((j|0)>(e|0)){continue}break}}f=1;p=p+1|0;if((i|0)!=(p|0)){continue}break}}Ui=o+128|0;break w}Z(109572,82607,1095,25251);B()}Z(109565,82607,1109,25251);B()}Z(113204,82607,1124,25251);B()}if(!f){if(!(J[d+92>>2]|!K[h+23|0])){cj(c)}J[d+112>>2]=20;f=0;break c}e=J[k>>2];if(e){e=Yl(d,(e<<2)+4|0);J[h+2084>>2]=e;if(!e){J[d+112>>2]=3;f=0;break c}e=Yl(d,(J[h+2092>>2]<<2)+4|0);J[h+2088>>2]=e;if(!e){J[d+112>>2]=3;f=0;break c}J[h+2088>>2]=e+4;J[e>>2]=-1;i=0;j=0;e=0;I:{if(K[h+23|0]){e=J[h+2092>>2];if((e|0)<=0){break I}f=J[h+2084>>2];j=J[h+32>>2];while(1){o=i<<2;e=J[o+j>>2];e=e<<24|(e&65280)<<8|(e>>>8&65280|e>>>24);e=e>>>4&252645135|(e&252645135)<<4;e=e>>>2&858993459|(e&858993459)<<2;J[f+o>>2]=e>>>1&1431655765|(e&1431655765)<<1;e=J[h+2092>>2];i=i+1|0;if((e|0)>(i|0)){continue}break}break I}i=J[h+4>>2];if((i|0)>0){while(1){if((K[g+j|0]+1&255)>>>0>=12){f=J[J[h+32>>2]+(j<<2)>>2];f=f<<24|(f&65280)<<8|(f>>>8&65280|f>>>24);f=f>>>4&252645135|(f&252645135)<<4;f=f>>>2&858993459|(f&858993459)<<2;J[J[h+2084>>2]+(e<<2)>>2]=f>>>1&1431655765|(f&1431655765)<<1;i=J[h+4>>2];e=e+1|0}j=j+1|0;if((j|0)<(i|0)){continue}break}}if(J[h+2092>>2]==(e|0)){break I}Z(23484,82607,1191,48262);B()}$z(J[h+2084>>2],e,4,2524);J[J[h+2084>>2]+(J[h+2092>>2]<<2)>>2]=-1;J:{K:{t=J[h+(K[h+23|0]?2092:4)>>2];if((t|0)>0){e=0;while(1){z=K[h+23|0];L:{M:{if(z){f=K[J[(e<<2)+c>>2]+g|0];if((f|0)!=255){break M}Z(96504,82607,1171,10184);B()}f=K[e+g|0];if((f+1&255)>>>0<12){break L}}D=e<<2;i=J[D+J[h+32>>2]>>2];i=i<<24|(i&65280)<<8|(i>>>8&65280|i>>>24);i=i>>>4&252645135|(i&252645135)<<4;i=i>>>2&858993459|(i&858993459)<<2;o=i>>>1&1431655765|(i&1431655765)<<1;p=J[h+2084>>2];j=0;i=J[h+2092>>2];if((i|0)>=2){while(1){q=i>>>1|0;F=q+j|0;w=o>>>0>2];j=w?j:F;i=w?q:i-q|0;if((i|0)>1){continue}break}}i=j<<2;if(J[i+p>>2]!=(o|0)){break K}if(z){J[i+J[h+2088>>2]>>2]=J[c+D>>2];H[J[h+8>>2]+j|0]=f;break L}J[i+J[h+2088>>2]>>2]=e}e=e+1|0;if((t|0)!=(e|0)){continue}break}}break J}Z(69567,82607,1221,48262);B()}}if(K[h+23|0]){N:{O:{P:{Q:{R:{if(J[d+92>>2]){J[d+104>>2]=J[d+104>>2]+((J[h+2092>>2]<<2)+7&-8);c=h+32|0;break R}cj(c);c=h+32|0;if(!J[d+92>>2]){break Q}}J[d+104>>2]=J[d+104>>2]+((J[k>>2]<<2)+7&-8);break P}cj(J[h+32>>2]);if(!J[d+92>>2]){break O}}J[d+104>>2]=J[d+104>>2]+(J[n>>2]+7&-8);break N}cj(g)}J[c>>2]=0}f=ij(h+36|0,255,2048);e=K[h+23|0];c=J[h+(e?2092:4)>>2];S:{if((c|0)<=0){break S}i=(c|0)>=32767?32767:c;j=J[h+8>>2];c=0;if(!e){while(1){e=c+j|0;T:{if(K[e|0]>10){break T}g=J[J[h+32>>2]+(c<<2)>>2];if(g>>>0>=1024){break T}while(1){I[f+(g<<1)>>1]=c;g=(1<>>0<1024){continue}break}}c=c+1|0;if((i|0)!=(c|0)){continue}break S}}while(1){o=c+j|0;U:{if(K[o|0]>10){break U}e=J[J[h+2084>>2]+(c<<2)>>2];e=e<<24|(e&65280)<<8|(e>>>8&65280|e>>>24);e=e>>>4&252645135|(e&252645135)<<4;e=e>>>2&858993459|(e&858993459)<<2;g=e>>>1&1431655765|(e&1431655765)<<1;if(g>>>0>1023){break U}while(1){I[f+(g<<1)>>1]=c;g=(1<>>0<1024){continue}break}}c=c+1|0;if((i|0)!=(c|0)){continue}break}}c=bk(d,4);H[h+21|0]=c;c=c&255;if(c>>>0>=3){J[d+112>>2]=20;f=0;break c}V:{if(!c){break V}N[h+12>>2]=oJ(bk(d,32));N[h+16>>2]=oJ(bk(d,32));H[h+20|0]=bk(d,4)+1;H[h+22|0]=bk(d,1);f=J[h>>2];e=J[h+4>>2];W:{if(K[h+21|0]==1){y=V(ax(+Q(Q(GI(+Q(e|0)))/Q(f|0))));X:{if(R(y)<2147483648){c=~~y;break X}c=-2147483648}y=+(f|0);G=V(Zq(+Q(Q(c|0)+Q(1)),y));Y:{if(R(G)<2147483648){g=~~G;break Y}g=-2147483648}c=((g|0)<=(e|0))+c|0;v=Q(c|0);if(Zq(+Q(v+Q(1)),y)<=+(e|0)){c=-1}else{y=V(Zq(+v,y));Z:{if(R(y)<2147483648){g=~~y;break Z}g=-2147483648}c=(g|0)>(e|0)?-1:c}if((c|0)>=0){break W}J[d+112>>2]=20;f=0;break c}c=P(e,f)}J[h+24>>2]=c;if(!c){J[d+112>>2]=20;f=0;break c}f=nw(d,c<<1);if(!f){break j}c=0;e=J[h+24>>2];if((e|0)>0){while(1){e=bk(d,K[h+20|0]);if((e|0)==-1){_:{if(J[d+92>>2]){J[d+104>>2]=J[d+104>>2]+((J[h+24>>2]<<1)+7&-8);break _}cj(f)}J[d+112>>2]=20;f=0;break c}I[f+(c<<1)>>1]=e;c=c+1|0;e=J[h+24>>2];if((c|0)<(e|0)){continue}break}}$:{if(K[h+21|0]==1){o=K[h+23|0];aa:{if(o){c=J[k>>2];if(c){break aa}break $}c=J[n>>2]}p=Yl(d,P(J[h>>2],c)<<2);J[h+28>>2]=p;if(!p){ba:{if(J[d+92>>2]){J[d+104>>2]=J[d+104>>2]+((J[h+24>>2]<<1)+7&-8);break ba}cj(f)}J[d+112>>2]=3;f=0;break c}q=J[(o?k:n)>>2];if((q|0)>0){k=J[h>>2];v=Q(0);g=0;while(1){i=o?J[J[h+2088>>2]+(g<<2)>>2]:g;ca:{if((k|0)<=0){break ca}n=p+(P(g,k)<<2)|0;j=J[h+24>>2];e=1;c=0;if(!K[h+22|0]){while(1){N[n+(c<<2)>>2]=v+Q(Q(Q(L[f+(((i>>>0)/(e>>>0)>>>0)%(j>>>0)<<1)>>1])*N[h+16>>2])+N[h+12>>2]);c=c+1|0;if((k|0)>(c|0)){ixa(j,0,e,0);if(Yi){break e}e=P(e,j)}if((c|0)!=(k|0)){continue}break ca}}while(1){v=Q(v+Q(Q(Q(L[f+(((i>>>0)/(e>>>0)>>>0)%(j>>>0)<<1)>>1])*N[h+16>>2])+N[h+12>>2]));N[n+(c<<2)>>2]=v;c=c+1|0;if((k|0)>(c|0)){ixa(j,0,e,0);if(Yi){break e}e=P(e,j)}if((c|0)!=(k|0)){continue}break}}g=g+1|0;if((q|0)!=(g|0)){continue}break}}H[h+21|0]=2;break $}e=Yl(d,e<<2);J[h+28>>2]=e;da:{ea:{if(e){c=J[h+24>>2];if((c|0)<=0){break $}i=c&1;if((c|0)!=1){break ea}v=Q(0);c=0;break da}fa:{if(J[d+92>>2]){J[d+104>>2]=J[d+104>>2]+((J[h+24>>2]<<1)+7&-8);break fa}cj(f)}J[d+112>>2]=3;f=0;break c}j=c&2147483646;v=Q(0);c=0;g=K[h+22|0];k=0;while(1){A=Q(v+Q(Q(Q(L[f+(c<<1)>>1])*N[h+16>>2])+N[h+12>>2]));N[e+(c<<2)>>2]=A;n=c|1;A=Q((g?A:v)+Q(Q(Q(L[f+(n<<1)>>1])*N[h+16>>2])+N[h+12>>2]));N[e+(n<<2)>>2]=A;v=g?A:v;c=c+2|0;k=k+2|0;if((j|0)!=(k|0)){continue}break}}if(!i){break $}N[e+(c<<2)>>2]=v+Q(Q(Q(L[f+(c<<1)>>1])*N[h+16>>2])+N[h+12>>2])}if(J[d+92>>2]){J[d+104>>2]=J[d+104>>2]+((J[h+24>>2]<<1)+7&-8);break V}cj(f)}x=x+1|0;if((x|0)>2]){continue}break}}ga:{c=bk(d,6)+1&255;if(!c){break ga}while(1){if(!bk(d,16)){l=l+1|0;if((c|0)!=(l|0)){continue}break ga}break}J[d+112>>2]=20;f=0;break c}c=bk(d,6)+1|0;J[d+140>>2]=c;c=Yl(d,P(c,1596));J[d+272>>2]=c;ha:{if(c){if(J[d+140>>2]>0){break ha}x=0;break f}J[d+112>>2]=3;f=0;break c}p=d+144|0;f=0;x=0;ia:while(1){c=bk(d,16);I[p+(f<<1)>>1]=c;c=c&65535;if(c>>>0>=2){J[d+112>>2]=20;f=0;break c}if(!c){c=J[d+272>>2]+P(f,1596)|0;H[c|0]=bk(d,8);I[c+2>>1]=bk(d,16);I[c+4>>1]=bk(d,16);H[c+6|0]=bk(d,6);H[c+7|0]=bk(d,8);e=(bk(d,4)&255)+1|0;H[c+8|0]=e;if((e|0)==(e&255)){e=c+9|0;f=0;while(1){H[e+f|0]=bk(d,8);f=f+1|0;if(f>>>0>2]=4;f=0;break c}h=J[d+272>>2]+P(f,1596)|0;c=bk(d,5);H[h|0]=c;ja:{if(c&255){e=h+1|0;c=-1;g=0;while(1){i=bk(d,4);H[e+g|0]=i;i=i&255;c=(c|0)<(i|0)?i:c;g=g+1|0;if(g>>>0>2]<=(g&255)){break ja}if(K[e|0]==31){break ka}}g=0;while(1){o=bk(d,8)-1|0;I[(i+(l<<4)|0)+(g<<1)>>1]=o;if(J[d+132>>2]<=o<<16>>16){break ja}g=g+1|0;if((g|0)<1<>2]=2;I[h+338>>1]=0;H[h+1589|0]=c;I[h+340>>1]=1<>2];I[n+(g<<1)>>1]=e;g=g+1|0;J[h+1592>>2]=g;c=c+1|0;if(c>>>0>>0<(e&255)>>>0){continue}break}if((g|0)<=0){break la}}k=0;c=0;if(g>>>0>=4){l=g&2147483644;i=0;while(1){e=L[n+(c<<1)>>1];j=(c<<2)+m|0;I[j+2>>1]=c;I[j>>1]=e;e=c|1;j=L[n+(e<<1)>>1];o=(e<<2)+m|0;I[o+2>>1]=e;I[o>>1]=j;e=c|2;j=L[n+(e<<1)>>1];o=(e<<2)+m|0;I[o+2>>1]=e;I[o>>1]=j;e=c|3;j=L[n+(e<<1)>>1];o=(e<<2)+m|0;I[o+2>>1]=e;I[o>>1]=j;c=c+4|0;i=i+4|0;if((l|0)!=(i|0)){continue}break}}e=g&3;if(!e){break la}while(1){i=L[n+(c<<1)>>1];l=(c<<2)+m|0;I[l+2>>1]=c;I[l>>1]=i;c=c+1|0;k=k+1|0;if((e|0)!=(k|0)){continue}break}}Bz(m,g,4,2523);g=J[h+1592>>2];e=((g|0)<=1?1:g)-1|0;c=0;while(1){if((c|0)==(e|0)){ma:{if((g|0)<=0){break ma}e=h+838|0;c=0;while(1){H[c+e|0]=K[((c<<2)+m|0)+2|0];c=c+1|0;g=J[h+1592>>2];if((c|0)<(g|0)){continue}break}if((g|0)<3){break ma}q=h+1088|0;i=2;while(1){w=i<<1;o=w+n|0;e=-1;k=65536;l=0;j=0;c=0;while(1){g=L[n+(c<<1)>>1];if((g|0)>(e|0)){t=g>>>0>1];e=t?g:e;l=t?c:l}if((g|0)<(k|0)){t=g;g=g>>>0>L[o>>1];k=g?t:k;j=g?c:j}c=c+1|0;if((i|0)!=(c|0)){continue}break}c=q+w|0;H[c+1|0]=j;H[c|0]=l;g=J[h+1592>>2];i=i+1|0;if((g|0)>(i|0)){continue}break}}x=(g|0)>(x|0)?g:x;f=f+1|0;if((f|0)>2]){continue ia}break f}i=L[(c<<2)+m>>1];c=c+1|0;if((i|0)!=L[(c<<2)+m>>1]){continue}break}}break}J[d+112>>2]=20;f=0;break c}J[d+112>>2]=3;f=0;break c}J[d+112>>2]=3;f=0;break c}J[d+112>>2]=20;break c}J[d+112>>2]=3;f=0;break c}J[d+112>>2]=3;break c}J[d+112>>2]=20;break c}c=bk(d,6)+1|0;J[d+276>>2]=c;c=Yl(d,P(c,24));J[d+408>>2]=c;if(!c){J[d+112>>2]=3;f=0;break c}j=0;ij(c,0,P(J[d+276>>2],24));na:{oa:{if(J[d+276>>2]>0){n=d+280|0;while(1){c=J[d+408>>2];e=bk(d,16);I[n+(j<<1)>>1]=e;k=20;if((e&65535)>>>0>2){break na}i=P(j,24)+c|0;J[i>>2]=bk(d,24);c=bk(d,24);J[i+4>>2]=c;if(c>>>0>2]){break na}J[i+8>>2]=bk(d,24)+1;H[i+12|0]=bk(d,6)+1;c=bk(d,8);H[i+13|0]=c;if(J[d+132>>2]<=(c&255)){break na}f=0;pa:{if(!K[i+12|0]){c=0;break pa}while(1){e=f+m|0;g=bk(d,3);if(bk(d,1)){c=bk(d,5)}else{c=0}H[e|0]=g+(c<<3);c=K[i+12|0];f=f+1|0;if(c>>>0>f>>>0){continue}break}}c=Yl(d,c<<4);J[i+20>>2]=c;if(!c){break oa}f=0;if(K[i+12|0]){while(1){e=K[f+m|0];qa:{if(e&1){g=bk(d,8);c=J[i+20>>2];I[c+(f<<4)>>1]=g;if(J[d+132>>2]<=g<<16>>16){break na}break qa}I[(f<<4)+c>>1]=65535}ra:{if(e&2){g=bk(d,8);c=J[i+20>>2];I[(c+(f<<4)|0)+2>>1]=g;if(J[d+132>>2]<=g<<16>>16){break na}break ra}I[((f<<4)+c|0)+2>>1]=65535}sa:{if(e&4){g=bk(d,8);c=J[i+20>>2];I[(c+(f<<4)|0)+4>>1]=g;if(J[d+132>>2]<=g<<16>>16){break na}break sa}I[((f<<4)+c|0)+4>>1]=65535}ta:{if(e&8){g=bk(d,8);c=J[i+20>>2];I[(c+(f<<4)|0)+6>>1]=g;if(J[d+132>>2]<=g<<16>>16){break na}break ta}I[((f<<4)+c|0)+6>>1]=65535}ua:{if(e&16){g=bk(d,8);c=J[i+20>>2];I[(c+(f<<4)|0)+8>>1]=g;if(J[d+132>>2]<=g<<16>>16){break na}break ua}I[((f<<4)+c|0)+8>>1]=65535}va:{if(e&32){g=bk(d,8);c=J[i+20>>2];I[(c+(f<<4)|0)+10>>1]=g;if(J[d+132>>2]<=g<<16>>16){break na}break va}I[((f<<4)+c|0)+10>>1]=65535}wa:{if(e&64){g=bk(d,8);c=J[i+20>>2];I[(c+(f<<4)|0)+12>>1]=g;if(J[d+132>>2]<=g<<16>>16){break na}break wa}I[((f<<4)+c|0)+12>>1]=65535}xa:{if(e<<24>>24<0){e=bk(d,8);c=J[i+20>>2];I[(c+(f<<4)|0)+14>>1]=e;if(J[d+132>>2]<=e<<16>>16){break na}break xa}I[((f<<4)+c|0)+14>>1]=65535}f=f+1|0;if(f>>>0>2]+P(K[i+13|0],2096)|0)+4>>2]<<2);J[i+16>>2]=c;if(!c){break oa}l=0;ij(c,0,J[(J[d+136>>2]+P(K[i+13|0],2096)|0)+4>>2]<<2);f=J[d+136>>2]+P(K[i+13|0],2096)|0;if(J[f+4>>2]>0){while(1){f=J[f>>2];c=Yl(d,f);h=l<<2;J[h+J[i+16>>2]>>2]=c;if(!J[h+J[i+16>>2]>>2]){break oa}if((f|0)>0){e=K[i+12|0];c=l;while(1){g=f-1|0;H[g+J[h+J[i+16>>2]>>2]|0]=(c|0)%(e&255);e=K[i+12|0];c=(c|0)/(e|0)|0;k=f>>>0>1;f=g;if(k){continue}break}}l=l+1|0;f=J[d+136>>2]+P(K[i+13|0],2096)|0;if((l|0)>2]){continue}break}}j=j+1|0;if((j|0)>2]){continue}break}}c=bk(d,6)+1|0;J[d+412>>2]=c;c=Yl(d,P(c,40));J[d+416>>2]=c;if(!c){J[d+112>>2]=3;f=0;break c}j=0;ij(c,0,P(J[d+412>>2],40));if(J[d+412>>2]>0){while(1){c=J[d+416>>2];if(bk(d,16)){J[d+112>>2]=20;f=0;break c}g=P(j,40)+c|0;c=Yl(d,P(J[d+4>>2],3));J[g+4>>2]=c;if(!c){J[d+112>>2]=3;f=0;break c}if(bk(d,1)){c=bk(d,4)+1|0}else{c=1}H[g+8|0]=c;ya:{if(bk(d,1)){c=bk(d,8)+1|0;I[g>>1]=c;za:{f=J[d+4>>2];e=c&65535;if((f|0)>=(e|0)){c=0;if(e){break za}break ya}J[d+112>>2]=20;f=0;break c}while(1){e=bk(d,fB(f-1|0));f=P(c,3);H[f+J[g+4>>2]|0]=e;e=bk(d,fB(J[d+4>>2]-1|0));i=f+J[g+4>>2]|0;H[i+1|0]=e;f=J[d+4>>2];i=K[i|0];if((f|0)<=(i|0)){J[d+112>>2]=20;f=0;break c}e=e&255;if(e>>>0>=f>>>0){J[d+112>>2]=20;f=0;break c}if((e|0)!=(i|0)){c=c+1|0;if(c>>>0>=L[g>>1]){break ya}continue}break}J[d+112>>2]=20;f=0;break c}I[g>>1]=0}if(bk(d,2)){J[d+112>>2]=20;f=0;break c}h=J[d+4>>2];Aa:{Ba:{Ca:{i=K[g+8|0];if(i>>>0<=1){if((h|0)<=0){break Ca}c=J[g+4>>2];e=0;f=0;if(h>>>0>=8){k=h&2147483640;l=0;while(1){H[(c+P(f,3)|0)+2|0]=0;H[(c+P(f|1,3)|0)+2|0]=0;H[(c+P(f|2,3)|0)+2|0]=0;H[(c+P(f|3,3)|0)+2|0]=0;H[(c+P(f|4,3)|0)+2|0]=0;H[(c+P(f|5,3)|0)+2|0]=0;H[(c+P(f|6,3)|0)+2|0]=0;H[(c+P(f|7,3)|0)+2|0]=0;f=f+8|0;l=l+8|0;if((k|0)!=(l|0)){continue}break}}l=h&7;if(!l){break Ca}while(1){H[(c+P(f,3)|0)+2|0]=0;f=f+1|0;e=e+1|0;if((l|0)!=(e|0)){continue}break}break Ca}f=0;if((h|0)<=0){break Ba}while(1){Da:{c=bk(d,4);H[(J[g+4>>2]+P(f,3)|0)+2|0]=c;i=K[g+8|0];if(i>>>0<=(c&255)>>>0){break Da}f=f+1|0;if((f|0)>2]){continue}break Ca}break}J[d+112>>2]=20;f=0;break c}if(!i){break Aa}}c=g+24|0;e=g+9|0;f=0;while(1){bk(d,8);i=e+f|0;H[i|0]=bk(d,8);l=bk(d,8);H[c+f|0]=l;if(J[d+140>>2]<=K[i|0]){J[d+112>>2]=20;f=0;break c}if(J[d+276>>2]>(l&255)){f=f+1|0;if(f>>>0>=K[g+8|0]){break Aa}continue}break}J[d+112>>2]=20;f=0;break c}j=j+1|0;if((j|0)>2]){continue}break}}c=bk(d,6);J[d+420>>2]=c+1;Ea:{if(c>>>0>=2147483647){break Ea}f=d+424|0;c=0;while(1){e=f+P(c,6)|0;H[e|0]=bk(d,1);I[e+2>>1]=bk(d,16);I[e+4>>1]=bk(d,16);g=bk(d,8);H[e+1|0]=g;if(L[e+2>>1]){J[d+112>>2]=20;f=0;break c}if(L[e+4>>1]){J[d+112>>2]=20;f=0;break c}if(J[d+412>>2]>(g&255)){c=c+1|0;if((c|0)>=J[d+420>>2]){break Ea}continue}break}J[d+112>>2]=20;f=0;break c}while(1){if((Zk(d)|0)!=-1){continue}break}f=0;J[d+1004>>2]=0;if(J[d+4>>2]>0){e=d+1008|0;i=x<<1;l=d+940|0;j=d+812|0;g=0;while(1){c=g<<2;h=c+j|0;J[h>>2]=Yl(d,J[d+128>>2]<<2);k=c+l|0;J[k>>2]=Yl(d,J[d+128>>2]<<1&2147483646);t=c+e|0;c=Yl(d,i);J[t>>2]=c;h=J[h>>2];if(c?!h|!J[k>>2]:1){J[d+112>>2]=3;break c}ij(h,0,J[d+128>>2]<<2);g=g+1|0;if((g|0)>2]){continue}break}}if(!RI(d,0,J[d+124>>2])){break c}if(!RI(d,1,J[d+128>>2])){break c}J[d+116>>2]=J[d+124>>2];c=J[d+128>>2];J[d+120>>2]=c;l=c<<1&2147483646;j=J[d+276>>2];if((j|0)<=0){c=4}else{c=(c|0)/2|0;h=J[d+408>>2];g=0;e=0;while(1){i=h+P(e,24)|0;k=J[i+4>>2];t=c>>>0>k>>>0?k:c;k=J[i>>2];i=(t-(c>>>0>k>>>0?k:c)>>>0)/M[i+8>>2]|0;g=(g|0)<(i|0)?i:g;e=e+1|0;if((j|0)!=(e|0)){continue}break}c=(g<<2)+4|0}c=P(c,J[d+4>>2]);c=c>>>0>>0?l:c;J[d+12>>2]=c;Fa:{Ga:{if(!J[d+92>>2]){break Ga}e=J[d+104>>2];if((e|0)!=J[d+96>>2]){break Fa}if(e>>>0>=(c+J[d+100>>2]|0)+1524>>>0){break Ga}J[d+112>>2]=3;break c}Ha:{if(J[d+1392>>2]==-1){if(K[d+60|0]){c=0}else{c=J[d+44>>2];Ia:{if(c){c=c-J[d+48>>2]|0;break Ia}c=wo(J[d+32>>2])-J[d+36>>2]|0}}J[d+64>>2]=c;break Ha}J[d+64>>2]=0}f=1;break c}Z(21709,82607,4187,35411);B()}k=3}J[d+112>>2]=k;f=0;break c}Ja:{if(J[d+92>>2]){J[d+104>>2]=J[d+104>>2]+((j<<1)+7&-8);break Ja}cj(f)}J[d+112>>2]=20;f=0}Ui=m+1008|0;Ka:{La:{if(!f){J[u+40>>2]=J[s+120>>2]?1:J[s+124>>2];Fz(d);break La}J[s+20>>2]=J[s+20>>2]+1528;Ma:{c=J[s+104>>2];Na:{if(c){d=J[s+112>>2];e=d+1528|0;if((e|0)>J[s+116>>2]){break Ma}J[s+112>>2]=e;d=d+c|0;break Na}d=sj(1528)}if(!d){break Ma}J[u+36>>2]=J[hj(d,s+12|0,1524)+44>>2]-C;J[u+40>>2]=0;break Ka}Fz(s+12|0)}d=0}Ui=s+1536|0;if(d){g=J[r+28>>2];f=J[r+24>>2];i=g-f|0;e=J[u+36>>2];if(i>>>0>e>>>0){c=e;l=g-(f+c|0)&3;if(l){while(1){H[(c-e|0)+f|0]=K[c+f|0];c=c+1|0;O=O+1|0;if((l|0)!=(O|0)){continue}break}}if((e-g|0)+f>>>0<4294967293){while(1){H[(c-e|0)+f|0]=K[c+f|0];g=c+1|0;H[(g-e|0)+f|0]=K[f+g|0];g=c+2|0;H[(g-e|0)+f|0]=K[f+g|0];g=c+3|0;H[(g-e|0)+f|0]=K[f+g|0];c=c+4|0;if(i>>>0>c>>>0){continue}break}}f=J[r+24>>2]}c=i-e|0;if(c>>>0>J[E>>2]-f>>>0){break a}J[r+48>>2]=0;J[r+16>>2]=a;J[r+28>>2]=c+f;J[u+16>>2]=J[d+4>>2];J[u+12>>2]=J[d>>2];J[u+20>>2]=J[d+8>>2];J[u+24>>2]=J[d+16>>2];J[u+28>>2]=J[d+12>>2];J[u+32>>2]=J[d+128>>2]>>1;a=J[u+12>>2];J[r+4>>2]=0;J[r>>2]=a;a=J[u+16>>2];J[r+12>>2]=d;H[r+9|0]=16;H[r+8|0]=a;J[b>>2]=r;a=0;break b}dj(3,96825,J[u+40>>2]==1?153890:153796,0)}Oa:{if(H[r+36|0]&1){break Oa}a=J[r+24>>2];if(!a){break Oa}cj(a)}cj(r);a=-2}Ui=u+48|0;return a|0}Z(144782,53895,514,59583);B()}function LF(a,b,c,d,e){var f=0,g=0,h=0,i=0,j=0,k=0,l=0,m=0,n=0,o=Q(0),p=Q(0),q=Q(0),r=Q(0),s=Q(0),t=Q(0),u=Q(0),v=Q(0),w=Q(0),x=Q(0),y=Q(0),z=Q(0),A=Q(0),B=Q(0),C=Q(0),D=Q(0),E=Q(0),F=Q(0),G=Q(0),I=Q(0),L=Q(0),O=Q(0),R=Q(0),S=Q(0),T=Q(0),U=0,V=0,W=0,X=0,Y=0,Z=0,_=0,$=0,aa=0,ba=0,ca=0,da=0,ea=0,fa=0,ga=0,ha=0,ia=0,ja=0,ka=0,la=0;V=Ui-16|0;Ui=V;while(1){X=b-336|0;n=b-480|0;Y=b-176|0;l=b-320|0;W=b-16|0;k=b-160|0;a:{while(1){b:{c:{d:{e:{f:{j=b-a|0;i=(j|0)/160|0;switch(i|0){case 0:case 1:break a;case 5:break c;case 4:break d;case 3:break e;case 2:break f;default:break b}}if(M[b-16>>2]>=M[a+144>>2]){break a}rk(a,b-160|0);break a}d=b-160|0;c=a+160|0;f=b-16|0;b=J[f>>2];e=J[a+304>>2];if(e>>>0>=M[a+144>>2]){if(b>>>0>=e>>>0){break a}rk(c,d);if(M[a+304>>2]>=M[a+144>>2]){break a}rk(a,c);break a}if(b>>>0>>0){rk(a,d);break a}rk(a,c);if(M[f>>2]>=M[a+304>>2]){break a}rk(c,d);break a}Zv(a,a+160|0,a+320|0,b-160|0);break a}c=a+160|0;d=a+320|0;e=a+480|0;Zv(a,c,d,e);if(M[b-16>>2]>=M[a+624>>2]){break a}rk(e,b-160|0);if(M[a+624>>2]>=M[a+464>>2]){break a}rk(d,e);if(M[a+464>>2]>=M[a+304>>2]){break a}rk(c,d);if(M[a+304>>2]>=M[a+144>>2]){break a}rk(a,c);break a}if((j|0)<=3839){if(e&1){g=Ui-48|0;g:{if((a|0)==(b|0)){break g}d=a+160|0;if((d|0)==(b|0)){break g}e=a;f=b;while(1){h=J[a+304>>2];if(h>>>0>2]){o=N[a+216>>2];p=N[a+212>>2];q=N[a+208>>2];r=N[a+204>>2];s=N[a+200>>2];t=N[a+196>>2];u=N[a+192>>2];v=N[a+188>>2];w=N[a+184>>2];x=N[a+180>>2];y=N[a+176>>2];z=N[a+168>>2];A=N[a+164>>2];B=N[d>>2];J[g+44>>2]=J[a+248>>2];b=J[a+244>>2];J[g+36>>2]=J[a+240>>2];J[g+40>>2]=b;b=J[a+236>>2];J[g+28>>2]=J[a+232>>2];J[g+32>>2]=b;b=J[a+228>>2];J[g+20>>2]=J[a+224>>2];J[g+24>>2]=b;C=N[a+296>>2];D=N[a+292>>2];E=N[a+288>>2];F=N[a+284>>2];G=N[a+280>>2];I=N[a+276>>2];L=N[a+272>>2];O=N[a+268>>2];R=N[a+264>>2];S=N[a+260>>2];T=N[a+256>>2];J[g+8>>2]=J[a+316>>2];b=J[a+312>>2];J[g>>2]=J[a+308>>2];J[g+4>>2]=b;b=d;while(1){h:{c=a;N[b>>2]=N[a>>2];N[b+4>>2]=N[a+4>>2];N[b+8>>2]=N[a+8>>2];N[b+16>>2]=N[a+16>>2];N[b+20>>2]=N[a+20>>2];N[b+24>>2]=N[a+24>>2];N[b+28>>2]=N[a+28>>2];N[b+32>>2]=N[a+32>>2];N[b+36>>2]=N[a+36>>2];N[b+40>>2]=N[a+40>>2];N[b+44>>2]=N[a+44>>2];N[b+48>>2]=N[a+48>>2];N[b+52>>2]=N[a+52>>2];N[b+56>>2]=N[a+56>>2];i=J[a+68>>2];J[b+64>>2]=J[a+64>>2];J[b+68>>2]=i;i=J[a+76>>2];J[b+72>>2]=J[a+72>>2];J[b+76>>2]=i;i=J[a+84>>2];J[b+80>>2]=J[a+80>>2];J[b+84>>2]=i;J[b+88>>2]=J[a+88>>2];N[b+96>>2]=N[a+96>>2];N[b+100>>2]=N[a+100>>2];N[b+104>>2]=N[a+104>>2];N[b+108>>2]=N[a+108>>2];N[b+112>>2]=N[a+112>>2];N[b+116>>2]=N[a+116>>2];N[b+120>>2]=N[a+120>>2];N[b+124>>2]=N[a+124>>2];N[b+128>>2]=N[a+128>>2];N[b+132>>2]=N[a+132>>2];N[b+136>>2]=N[a+136>>2];i=J[a+148>>2];J[b+144>>2]=J[a+144>>2];J[b+148>>2]=i;i=J[a+156>>2];J[b+152>>2]=J[a+152>>2];J[b+156>>2]=i;if((a|0)==(e|0)){b=e;break h}a=c-160|0;b=c;if(h>>>0>2]){continue}}break}N[b+56>>2]=o;N[b+52>>2]=p;N[b+48>>2]=q;N[b+44>>2]=r;N[b+40>>2]=s;N[b+36>>2]=t;N[b+32>>2]=u;N[b+28>>2]=v;N[b+24>>2]=w;N[b+20>>2]=x;N[b+16>>2]=y;N[b+8>>2]=z;N[b+4>>2]=A;N[b>>2]=B;a=c- -64|0;J[a+24>>2]=J[g+44>>2];i=J[g+40>>2];J[a+16>>2]=J[g+36>>2];J[a+20>>2]=i;i=J[g+32>>2];J[a+8>>2]=J[g+28>>2];J[a+12>>2]=i;i=J[g+24>>2];J[a>>2]=J[g+20>>2];J[a+4>>2]=i;N[b+136>>2]=C;N[b+132>>2]=D;N[b+128>>2]=E;N[b+124>>2]=F;N[b+120>>2]=G;N[b+116>>2]=I;N[b+112>>2]=L;N[b+108>>2]=O;N[b+104>>2]=R;N[b+100>>2]=S;N[b+96>>2]=T;J[c+144>>2]=h;J[b+156>>2]=J[g+8>>2];a=J[g+4>>2];J[b+148>>2]=J[g>>2];J[b+152>>2]=a}a=d;d=a+160|0;if((f|0)!=(d|0)){continue}break}}break a}f=Ui-48|0;i:{if((a|0)==(b|0)){break i}c=a+160|0;if((c|0)==(b|0)){break i}e=b;while(1){g=J[a+304>>2];if(g>>>0>2]){o=N[a+216>>2];p=N[a+212>>2];q=N[a+208>>2];r=N[a+204>>2];s=N[a+200>>2];t=N[a+196>>2];u=N[a+192>>2];v=N[a+188>>2];w=N[a+184>>2];x=N[a+180>>2];y=N[a+176>>2];z=N[a+168>>2];A=N[a+164>>2];B=N[c>>2];J[f+44>>2]=J[a+248>>2];b=J[a+244>>2];J[f+36>>2]=J[a+240>>2];J[f+40>>2]=b;b=J[a+236>>2];J[f+28>>2]=J[a+232>>2];J[f+32>>2]=b;b=J[a+228>>2];J[f+20>>2]=J[a+224>>2];J[f+24>>2]=b;C=N[a+296>>2];D=N[a+292>>2];E=N[a+288>>2];F=N[a+284>>2];G=N[a+280>>2];I=N[a+276>>2];L=N[a+272>>2];O=N[a+268>>2];R=N[a+264>>2];S=N[a+260>>2];T=N[a+256>>2];J[f+8>>2]=J[a+316>>2];b=J[a+312>>2];J[f>>2]=J[a+308>>2];J[f+4>>2]=b;b=c;while(1){N[b>>2]=N[a>>2];N[b+4>>2]=N[a+4>>2];N[b+8>>2]=N[a+8>>2];N[b+16>>2]=N[a+16>>2];N[b+20>>2]=N[a+20>>2];N[b+24>>2]=N[a+24>>2];N[b+28>>2]=N[a+28>>2];N[b+32>>2]=N[a+32>>2];N[b+36>>2]=N[a+36>>2];N[b+40>>2]=N[a+40>>2];N[b+44>>2]=N[a+44>>2];N[b+48>>2]=N[a+48>>2];N[b+52>>2]=N[a+52>>2];N[b+56>>2]=N[a+56>>2];d=J[a+68>>2];J[b+64>>2]=J[a+64>>2];J[b+68>>2]=d;d=J[a+76>>2];J[b+72>>2]=J[a+72>>2];J[b+76>>2]=d;d=J[a+84>>2];J[b+80>>2]=J[a+80>>2];J[b+84>>2]=d;J[b+88>>2]=J[a+88>>2];N[b+96>>2]=N[a+96>>2];N[b+100>>2]=N[a+100>>2];N[b+104>>2]=N[a+104>>2];N[b+108>>2]=N[a+108>>2];N[b+112>>2]=N[a+112>>2];N[b+116>>2]=N[a+116>>2];N[b+120>>2]=N[a+120>>2];N[b+124>>2]=N[a+124>>2];N[b+128>>2]=N[a+128>>2];N[b+132>>2]=N[a+132>>2];N[b+136>>2]=N[a+136>>2];d=J[a+156>>2];J[b+152>>2]=J[a+152>>2];J[b+156>>2]=d;d=a;h=J[a+148>>2];J[b+144>>2]=J[a+144>>2];J[b+148>>2]=h;a=a-160|0;b=d;if(g>>>0>2]){continue}break}N[b+56>>2]=o;N[b+52>>2]=p;N[b+48>>2]=q;N[b+44>>2]=r;N[b+40>>2]=s;N[b+36>>2]=t;N[b+32>>2]=u;N[b+28>>2]=v;N[b+24>>2]=w;N[b+20>>2]=x;N[b+16>>2]=y;N[b+8>>2]=z;N[b+4>>2]=A;N[b>>2]=B;a=b- -64|0;J[a+24>>2]=J[f+44>>2];d=J[f+40>>2];J[a+16>>2]=J[f+36>>2];J[a+20>>2]=d;d=J[f+32>>2];J[a+8>>2]=J[f+28>>2];J[a+12>>2]=d;d=J[f+24>>2];J[a>>2]=J[f+20>>2];J[a+4>>2]=d;J[b+144>>2]=g;N[b+136>>2]=C;N[b+132>>2]=D;N[b+128>>2]=E;N[b+124>>2]=F;N[b+120>>2]=G;N[b+116>>2]=I;N[b+112>>2]=L;N[b+108>>2]=O;N[b+104>>2]=R;N[b+100>>2]=S;N[b+96>>2]=T;a=J[f+4>>2];J[b+148>>2]=J[f>>2];J[b+152>>2]=a;J[b+156>>2]=J[f+8>>2]}a=c;c=a+160|0;if((e|0)!=(c|0)){continue}break}}break a}if(!d){if((a|0)==(b|0)){break a}e=i-2>>>1|0;while(1){g=Ui-48|0;f=e;d=P(f,160)+a|0;c=(d-a|0)/160|0;j:{if((i|0)<2){break j}n=i-2>>>1|0;if((n|0)<(c|0)){break j}c=c<<1;h=c|1;e=P(h,160)+a|0;c=c+2|0;if((c|0)<(i|0)){l=c;c=M[e+144>>2]>2];h=c?l:h;e=(c?160:0)+e|0}k=J[d+144>>2];if(k>>>0>M[e+144>>2]){break j}o=N[d+56>>2];p=N[d+52>>2];q=N[d+48>>2];r=N[d+44>>2];s=N[d+40>>2];t=N[d+36>>2];u=N[d+32>>2];v=N[d+28>>2];w=N[d+24>>2];x=N[d+20>>2];y=N[d+16>>2];z=N[d+8>>2];A=N[d+4>>2];B=N[d>>2];J[g+44>>2]=J[d+88>>2];c=J[d+84>>2];J[g+36>>2]=J[d+80>>2];J[g+40>>2]=c;c=J[d+76>>2];J[g+28>>2]=J[d+72>>2];J[g+32>>2]=c;c=J[d+68>>2];J[g+20>>2]=J[d+64>>2];J[g+24>>2]=c;C=N[d+136>>2];D=N[d+132>>2];E=N[d+128>>2];F=N[d+124>>2];G=N[d+120>>2];I=N[d+116>>2];L=N[d+112>>2];O=N[d+108>>2];R=N[d+104>>2];S=N[d+100>>2];T=N[d+96>>2];J[g+8>>2]=J[d+156>>2];c=J[d+152>>2];J[g>>2]=J[d+148>>2];J[g+4>>2]=c;while(1){k:{c=e;N[d>>2]=N[c>>2];N[d+4>>2]=N[c+4>>2];N[d+8>>2]=N[c+8>>2];N[d+16>>2]=N[c+16>>2];N[d+20>>2]=N[c+20>>2];N[d+24>>2]=N[c+24>>2];N[d+28>>2]=N[c+28>>2];N[d+32>>2]=N[c+32>>2];N[d+36>>2]=N[c+36>>2];N[d+40>>2]=N[c+40>>2];N[d+44>>2]=N[c+44>>2];N[d+48>>2]=N[c+48>>2];N[d+52>>2]=N[c+52>>2];N[d+56>>2]=N[c+56>>2];l=J[c+68>>2];J[d+64>>2]=J[c+64>>2];J[d+68>>2]=l;l=J[c+76>>2];J[d+72>>2]=J[c+72>>2];J[d+76>>2]=l;l=J[c+84>>2];J[d+80>>2]=J[c+80>>2];J[d+84>>2]=l;J[d+88>>2]=J[c+88>>2];N[d+96>>2]=N[c+96>>2];N[d+100>>2]=N[c+100>>2];N[d+104>>2]=N[c+104>>2];N[d+108>>2]=N[c+108>>2];N[d+112>>2]=N[c+112>>2];N[d+116>>2]=N[c+116>>2];N[d+120>>2]=N[c+120>>2];N[d+124>>2]=N[c+124>>2];N[d+128>>2]=N[c+128>>2];N[d+132>>2]=N[c+132>>2];N[d+136>>2]=N[c+136>>2];l=J[c+148>>2];J[d+144>>2]=J[c+144>>2];J[d+148>>2]=l;l=J[c+156>>2];J[d+152>>2]=J[c+152>>2];J[d+156>>2]=l;if((h|0)>(n|0)){break k}d=h<<1;h=d|1;e=P(h,160)+a|0;d=d+2|0;if((d|0)<(i|0)){l=d;d=M[e+144>>2]>2];h=d?l:h;e=(d?160:0)+e|0}d=c;if(k>>>0<=M[e+144>>2]){continue}}break}N[c+56>>2]=o;N[c+52>>2]=p;N[c+48>>2]=q;N[c+44>>2]=r;N[c+40>>2]=s;N[c+36>>2]=t;N[c+32>>2]=u;N[c+28>>2]=v;N[c+24>>2]=w;N[c+20>>2]=x;N[c+16>>2]=y;N[c+8>>2]=z;N[c+4>>2]=A;N[c>>2]=B;d=c- -64|0;J[d+24>>2]=J[g+44>>2];e=J[g+40>>2];J[d+16>>2]=J[g+36>>2];J[d+20>>2]=e;e=J[g+32>>2];J[d+8>>2]=J[g+28>>2];J[d+12>>2]=e;e=J[g+24>>2];J[d>>2]=J[g+20>>2];J[d+4>>2]=e;J[c+144>>2]=k;N[c+136>>2]=C;N[c+132>>2]=D;N[c+128>>2]=E;N[c+124>>2]=F;N[c+120>>2]=G;N[c+116>>2]=I;N[c+112>>2]=L;N[c+108>>2]=O;N[c+104>>2]=R;N[c+100>>2]=S;N[c+96>>2]=T;d=J[g+4>>2];J[c+148>>2]=J[g>>2];J[c+152>>2]=d;J[c+156>>2]=J[g+8>>2]}e=f-1|0;if(f){continue}break}d=(j>>>0)/160|0;while(1){h=Ui+-64|0;Ui=h;l:{if((d|0)<2){break l}o=N[a+56>>2];p=N[a+52>>2];q=N[a+48>>2];r=N[a+44>>2];s=N[a+40>>2];t=N[a+36>>2];u=N[a+32>>2];v=N[a+28>>2];w=N[a+24>>2];x=N[a+20>>2];y=N[a+16>>2];z=N[a+8>>2];A=N[a+4>>2];B=N[a>>2];J[h+60>>2]=J[a+88>>2];c=J[a+84>>2];J[h+52>>2]=J[a+80>>2];J[h+56>>2]=c;c=J[a+76>>2];J[h+44>>2]=J[a+72>>2];J[h+48>>2]=c;c=J[a+68>>2];J[h+36>>2]=J[a+64>>2];J[h+40>>2]=c;C=N[a+136>>2];D=N[a+132>>2];E=N[a+128>>2];F=N[a+124>>2];G=N[a+120>>2];I=N[a+116>>2];L=N[a+112>>2];O=N[a+108>>2];R=N[a+104>>2];S=N[a+100>>2];T=N[a+96>>2];c=J[a+156>>2];J[h+24>>2]=J[a+152>>2];J[h+28>>2]=c;c=J[a+148>>2];J[h+16>>2]=J[a+144>>2];J[h+20>>2]=c;c=a;f=0;j=(d-2|0)/2|0;while(1){k=f<<1;g=k|1;i=P(f,160)+c|0;e=i+160|0;f=k+2|0;m:{if((f|0)>=(d|0)){f=g;break m}l=g;g=M[i+304>>2]>2];f=g?f:l;e=g?i+320|0:e}N[c>>2]=N[e>>2];N[c+4>>2]=N[e+4>>2];N[c+8>>2]=N[e+8>>2];N[c+16>>2]=N[e+16>>2];N[c+20>>2]=N[e+20>>2];N[c+24>>2]=N[e+24>>2];N[c+28>>2]=N[e+28>>2];N[c+32>>2]=N[e+32>>2];N[c+36>>2]=N[e+36>>2];N[c+40>>2]=N[e+40>>2];N[c+44>>2]=N[e+44>>2];N[c+48>>2]=N[e+48>>2];N[c+52>>2]=N[e+52>>2];N[c+56>>2]=N[e+56>>2];g=J[e+68>>2];J[c+64>>2]=J[e+64>>2];J[c+68>>2]=g;g=J[e+76>>2];J[c+72>>2]=J[e+72>>2];J[c+76>>2]=g;g=J[e+84>>2];J[c+80>>2]=J[e+80>>2];J[c+84>>2]=g;J[c+88>>2]=J[e+88>>2];N[c+96>>2]=N[e+96>>2];N[c+100>>2]=N[e+100>>2];N[c+104>>2]=N[e+104>>2];N[c+108>>2]=N[e+108>>2];N[c+112>>2]=N[e+112>>2];N[c+116>>2]=N[e+116>>2];N[c+120>>2]=N[e+120>>2];N[c+124>>2]=N[e+124>>2];N[c+128>>2]=N[e+128>>2];N[c+132>>2]=N[e+132>>2];N[c+136>>2]=N[e+136>>2];g=J[e+148>>2];J[c+144>>2]=J[e+144>>2];J[c+148>>2]=g;g=J[e+156>>2];J[c+152>>2]=J[e+152>>2];J[c+156>>2]=g;c=e;if((f|0)<=(j|0)){continue}break}g=b-160|0;if((g|0)==(c|0)){N[c+56>>2]=o;N[c+52>>2]=p;N[c+48>>2]=q;N[c+44>>2]=r;N[c+40>>2]=s;N[c+36>>2]=t;N[c+32>>2]=u;N[c+28>>2]=v;N[c+24>>2]=w;N[c+20>>2]=x;N[c+16>>2]=y;N[c+8>>2]=z;N[c+4>>2]=A;N[c>>2]=B;c=J[h+40>>2];J[e+64>>2]=J[h+36>>2];J[e+68>>2]=c;c=J[h+48>>2];J[e+72>>2]=J[h+44>>2];J[e+76>>2]=c;c=J[h+56>>2];J[e+80>>2]=J[h+52>>2];J[e+84>>2]=c;J[e+88>>2]=J[h+60>>2];N[e+136>>2]=C;N[e+132>>2]=D;N[e+128>>2]=E;N[e+124>>2]=F;N[e+120>>2]=G;N[e+116>>2]=I;N[e+112>>2]=L;N[e+108>>2]=O;N[e+104>>2]=R;N[e+100>>2]=S;N[e+96>>2]=T;c=J[h+28>>2];J[e+152>>2]=J[h+24>>2];J[e+156>>2]=c;c=J[h+20>>2];J[e+144>>2]=J[h+16>>2];J[e+148>>2]=c;break l}N[c>>2]=N[g>>2];i=b-156|0;N[c+4>>2]=N[i>>2];j=b-152|0;N[c+8>>2]=N[j>>2];k=b-144|0;N[c+16>>2]=N[k>>2];n=b-140|0;N[c+20>>2]=N[n>>2];l=b-136|0;N[c+24>>2]=N[l>>2];W=b-132|0;N[c+28>>2]=N[W>>2];X=b-128|0;N[c+32>>2]=N[X>>2];Y=b-124|0;N[c+36>>2]=N[Y>>2];m=b-120|0;N[c+40>>2]=N[m>>2];U=b-116|0;N[c+44>>2]=N[U>>2];_=b-112|0;N[c+48>>2]=N[_>>2];$=b-108|0;N[c+52>>2]=N[$>>2];aa=b-104|0;N[c+56>>2]=N[aa>>2];e=b-96|0;f=J[e+4>>2];J[c+64>>2]=J[e>>2];J[c+68>>2]=f;f=J[e+12>>2];J[c+72>>2]=J[e+8>>2];J[c+76>>2]=f;f=J[e+20>>2];J[c+80>>2]=J[e+16>>2];J[c+84>>2]=f;J[c+88>>2]=J[e+24>>2];ba=b+-64|0;N[c+96>>2]=N[ba>>2];ca=b-60|0;N[c+100>>2]=N[ca>>2];da=b-56|0;N[c+104>>2]=N[da>>2];ea=b-52|0;N[c+108>>2]=N[ea>>2];fa=b-48|0;N[c+112>>2]=N[fa>>2];ga=b-44|0;N[c+116>>2]=N[ga>>2];ha=b-40|0;N[c+120>>2]=N[ha>>2];ia=b-36|0;N[c+124>>2]=N[ia>>2];ja=b-32|0;N[c+128>>2]=N[ja>>2];ka=b-28|0;N[c+132>>2]=N[ka>>2];la=b-24|0;N[c+136>>2]=N[la>>2];f=b-16|0;Z=J[f+4>>2];J[c+144>>2]=J[f>>2];J[c+148>>2]=Z;Z=J[f+12>>2];J[c+152>>2]=J[f+8>>2];J[c+156>>2]=Z;N[g>>2]=B;N[aa>>2]=o;N[$>>2]=p;N[_>>2]=q;N[U>>2]=r;N[m>>2]=s;N[Y>>2]=t;N[X>>2]=u;N[W>>2]=v;N[l>>2]=w;N[n>>2]=x;N[k>>2]=y;N[j>>2]=z;N[i>>2]=A;g=J[h+40>>2];J[e>>2]=J[h+36>>2];J[e+4>>2]=g;g=J[h+48>>2];J[e+8>>2]=J[h+44>>2];J[e+12>>2]=g;g=J[h+56>>2];J[e+16>>2]=J[h+52>>2];J[e+20>>2]=g;J[e+24>>2]=J[h+60>>2];N[la>>2]=C;N[ka>>2]=D;N[ja>>2]=E;N[ia>>2]=F;N[ha>>2]=G;N[ga>>2]=I;N[fa>>2]=L;N[ea>>2]=O;N[da>>2]=R;N[ca>>2]=S;N[ba>>2]=T;e=J[h+28>>2];J[f+8>>2]=J[h+24>>2];J[f+12>>2]=e;e=J[h+20>>2];J[f>>2]=J[h+16>>2];J[f+4>>2]=e;i=Ui-48|0;g=c+160|0;c=(g-a|0)/160|0;n:{if((c|0)<2){break n}k=J[g-16>>2];j=c-2>>>1|0;f=P(j,160)+a|0;if(k>>>0<=M[f+144>>2]){break n}o=N[g-104>>2];p=N[g-108>>2];q=N[g-112>>2];r=N[g-116>>2];s=N[g-120>>2];t=N[g-124>>2];u=N[g-128>>2];v=N[g-132>>2];w=N[g-136>>2];x=N[g-140>>2];y=N[g-144>>2];z=N[g-152>>2];A=N[g-156>>2];e=g-160|0;B=N[e>>2];c=g-96|0;J[i+44>>2]=J[c+24>>2];n=J[c+20>>2];J[i+36>>2]=J[c+16>>2];J[i+40>>2]=n;n=J[c+12>>2];J[i+28>>2]=J[c+8>>2];J[i+32>>2]=n;n=J[c+4>>2];J[i+20>>2]=J[c>>2];J[i+24>>2]=n;C=N[g-24>>2];D=N[g-28>>2];E=N[g-32>>2];F=N[g-36>>2];G=N[g-40>>2];I=N[g-44>>2];L=N[g-48>>2];O=N[g-52>>2];R=N[g-56>>2];S=N[g-60>>2];T=N[g+-64>>2];c=g-12|0;J[i+8>>2]=J[c+8>>2];g=J[c+4>>2];J[i>>2]=J[c>>2];J[i+4>>2]=g;while(1){o:{c=f;N[e>>2]=N[c>>2];N[e+4>>2]=N[c+4>>2];N[e+8>>2]=N[c+8>>2];N[e+16>>2]=N[c+16>>2];N[e+20>>2]=N[c+20>>2];N[e+24>>2]=N[c+24>>2];N[e+28>>2]=N[c+28>>2];N[e+32>>2]=N[c+32>>2];N[e+36>>2]=N[c+36>>2];N[e+40>>2]=N[c+40>>2];N[e+44>>2]=N[c+44>>2];N[e+48>>2]=N[c+48>>2];N[e+52>>2]=N[c+52>>2];N[e+56>>2]=N[c+56>>2];f=J[c+68>>2];J[e+64>>2]=J[c+64>>2];J[e+68>>2]=f;f=J[c+76>>2];J[e+72>>2]=J[c+72>>2];J[e+76>>2]=f;f=J[c+84>>2];J[e+80>>2]=J[c+80>>2];J[e+84>>2]=f;J[e+88>>2]=J[c+88>>2];N[e+96>>2]=N[c+96>>2];N[e+100>>2]=N[c+100>>2];N[e+104>>2]=N[c+104>>2];N[e+108>>2]=N[c+108>>2];N[e+112>>2]=N[c+112>>2];N[e+116>>2]=N[c+116>>2];N[e+120>>2]=N[c+120>>2];N[e+124>>2]=N[c+124>>2];N[e+128>>2]=N[c+128>>2];N[e+132>>2]=N[c+132>>2];N[e+136>>2]=N[c+136>>2];f=J[c+148>>2];J[e+144>>2]=J[c+144>>2];J[e+148>>2]=f;f=J[c+156>>2];J[e+152>>2]=J[c+152>>2];J[e+156>>2]=f;if(!j){break o}e=c;j=j-1>>>1|0;f=P(j,160)+a|0;if(k>>>0>M[f+144>>2]){continue}}break}N[c+56>>2]=o;N[c+52>>2]=p;N[c+48>>2]=q;N[c+44>>2]=r;N[c+40>>2]=s;N[c+36>>2]=t;N[c+32>>2]=u;N[c+28>>2]=v;N[c+24>>2]=w;N[c+20>>2]=x;N[c+16>>2]=y;N[c+8>>2]=z;N[c+4>>2]=A;N[c>>2]=B;e=c- -64|0;J[e+24>>2]=J[i+44>>2];f=J[i+40>>2];J[e+16>>2]=J[i+36>>2];J[e+20>>2]=f;f=J[i+32>>2];J[e+8>>2]=J[i+28>>2];J[e+12>>2]=f;f=J[i+24>>2];J[e>>2]=J[i+20>>2];J[e+4>>2]=f;J[c+144>>2]=k;N[c+136>>2]=C;N[c+132>>2]=D;N[c+128>>2]=E;N[c+124>>2]=F;N[c+120>>2]=G;N[c+116>>2]=I;N[c+112>>2]=L;N[c+108>>2]=O;N[c+104>>2]=R;N[c+100>>2]=S;N[c+96>>2]=T;e=J[i+4>>2];J[c+148>>2]=J[i>>2];J[c+152>>2]=e;J[c+156>>2]=J[i+8>>2]}}Ui=h- -64|0;b=b-160|0;c=d>>>0>2;d=d-1|0;if(c){continue}break}break a}f=P(i>>>1|0,160)+a|0;g=J[W>>2];p:{if(j>>>0>=20481){h=J[f+144>>2];q:{if(h>>>0>=M[a+144>>2]){if(g>>>0>=h>>>0){break q}rk(f,k);if(M[f+144>>2]>=M[a+144>>2]){break q}rk(a,f);break q}if(g>>>0>>0){rk(a,k);break q}rk(a,f);if(M[W>>2]>=M[f+144>>2]){break q}rk(f,k)}h=a+160|0;i=J[Y>>2];g=f-160|0;j=J[g+144>>2];r:{if(j>>>0>=M[a+304>>2]){if(i>>>0>=j>>>0){break r}rk(g,l);if(M[g+144>>2]>=M[a+304>>2]){break r}rk(h,g);break r}if(i>>>0>>0){rk(h,l);break r}rk(h,g);if(M[Y>>2]>=M[g+144>>2]){break r}rk(g,l)}i=a+320|0;h=f+160|0;j=J[X>>2];m=J[f+304>>2];s:{if(m>>>0>=M[a+464>>2]){if(j>>>0>=m>>>0){break s}rk(h,n);if(M[h+144>>2]>=M[a+464>>2]){break s}rk(i,h);break s}if(j>>>0>>0){rk(i,n);break s}rk(i,h);if(M[X>>2]>=M[h+144>>2]){break s}rk(h,n)}i=J[h+144>>2];j=J[f+144>>2];t:{if(j>>>0>=M[g+144>>2]){if(i>>>0>=j>>>0){break t}rk(f,h);if(M[f+144>>2]>=M[g+144>>2]){break t}rk(g,f);rk(a,f);break p}if(i>>>0>>0){rk(g,h);rk(a,f);break p}rk(g,f);if(M[h+144>>2]>=M[f+144>>2]){break t}rk(f,h)}rk(a,f);break p}h=J[a+144>>2];if(h>>>0>=M[f+144>>2]){if(g>>>0>=h>>>0){break p}rk(a,k);if(M[a+144>>2]>=M[f+144>>2]){break p}rk(f,a);break p}if(g>>>0>>0){rk(f,k);break p}rk(f,a);if(M[W>>2]>=M[a+144>>2]){break p}rk(a,k)}d=d-1|0;m=e&1;if(!(m|M[a-16>>2]>2])){e=0;i=Ui-48|0;Ui=i;h=a;o=N[a+56>>2];p=N[a+52>>2];q=N[a+48>>2];r=N[a+44>>2];s=N[a+40>>2];t=N[a+36>>2];u=N[a+32>>2];v=N[a+28>>2];w=N[a+24>>2];x=N[a+20>>2];y=N[a+16>>2];z=N[a+8>>2];A=N[a+4>>2];B=N[a>>2];J[i+44>>2]=J[a+88>>2];f=J[a+84>>2];J[i+36>>2]=J[a+80>>2];J[i+40>>2]=f;f=J[a+76>>2];J[i+28>>2]=J[a+72>>2];J[i+32>>2]=f;f=J[a+68>>2];J[i+20>>2]=J[a+64>>2];J[i+24>>2]=f;C=N[a+136>>2];D=N[a+132>>2];E=N[a+128>>2];F=N[a+124>>2];G=N[a+120>>2];I=N[a+116>>2];L=N[a+112>>2];O=N[a+108>>2];R=N[a+104>>2];S=N[a+100>>2];T=N[a+96>>2];j=J[a+144>>2];J[i+8>>2]=J[a+156>>2];f=J[a+152>>2];J[i>>2]=J[a+148>>2];J[i+4>>2]=f;g=b;u:{if(j>>>0>2]){while(1){m=J[a+304>>2];f=a+160|0;a=f;if(j>>>0>=m>>>0){continue}break}break u}while(1){f=a+160|0;if(f>>>0>=g>>>0){break u}m=J[a+304>>2];a=f;if(j>>>0>=m>>>0){continue}break}}if(f>>>0>>0){while(1){a=g-16|0;g=g-160|0;if(j>>>0>2]){continue}break}}v:{if(f>>>0>=g>>>0){a=f;break v}while(1){rk(f,g);while(1){m=J[f+304>>2];a=f+160|0;f=a;if(j>>>0>=m>>>0){continue}break}f=g;while(1){m=f-16|0;g=f-160|0;f=g;if(j>>>0>2]){continue}break}f=a;if(a>>>0>>0){continue}break}}m=a-160|0;if((m|0)!=(h|0)){N[h>>2]=N[m>>2];N[h+4>>2]=N[a-156>>2];N[h+8>>2]=N[a-152>>2];N[h+16>>2]=N[a-144>>2];N[h+20>>2]=N[a-140>>2];N[h+24>>2]=N[a-136>>2];N[h+28>>2]=N[a-132>>2];N[h+32>>2]=N[a-128>>2];N[h+36>>2]=N[a-124>>2];N[h+40>>2]=N[a-120>>2];N[h+44>>2]=N[a-116>>2];N[h+48>>2]=N[a-112>>2];N[h+52>>2]=N[a-108>>2];N[h+56>>2]=N[a-104>>2];f=a-96|0;U=J[f+20>>2];g=h- -64|0;J[g+16>>2]=J[f+16>>2];J[g+20>>2]=U;U=J[f+12>>2];J[g+8>>2]=J[f+8>>2];J[g+12>>2]=U;U=J[f+4>>2];J[g>>2]=J[f>>2];J[g+4>>2]=U;J[g+24>>2]=J[f+24>>2];N[h+96>>2]=N[a+-64>>2];N[h+100>>2]=N[a-60>>2];N[h+104>>2]=N[a-56>>2];N[h+108>>2]=N[a-52>>2];N[h+112>>2]=N[a-48>>2];N[h+116>>2]=N[a-44>>2];N[h+120>>2]=N[a-40>>2];N[h+124>>2]=N[a-36>>2];N[h+128>>2]=N[a-32>>2];N[h+132>>2]=N[a-28>>2];N[h+136>>2]=N[a-24>>2];f=a-16|0;g=J[f+12>>2];J[h+152>>2]=J[f+8>>2];J[h+156>>2]=g;g=J[f+4>>2];J[h+144>>2]=J[f>>2];J[h+148>>2]=g}N[m>>2]=B;N[a-104>>2]=o;N[a-108>>2]=p;N[a-112>>2]=q;N[a-116>>2]=r;N[a-120>>2]=s;N[a-124>>2]=t;N[a-128>>2]=u;N[a-132>>2]=v;N[a-136>>2]=w;N[a-140>>2]=x;N[a-144>>2]=y;N[a-152>>2]=z;N[a-156>>2]=A;g=J[i+24>>2];f=a-96|0;J[f>>2]=J[i+20>>2];J[f+4>>2]=g;g=J[i+32>>2];J[f+8>>2]=J[i+28>>2];J[f+12>>2]=g;g=J[i+40>>2];J[f+16>>2]=J[i+36>>2];J[f+20>>2]=g;J[f+24>>2]=J[i+44>>2];J[a-16>>2]=j;N[a-24>>2]=C;N[a-28>>2]=D;N[a-32>>2]=E;N[a-36>>2]=F;N[a-40>>2]=G;N[a-44>>2]=I;N[a-48>>2]=L;N[a-52>>2]=O;N[a-56>>2]=R;N[a-60>>2]=S;N[a+-64>>2]=T;f=a-12|0;J[f+8>>2]=J[i+8>>2];g=J[i+4>>2];J[f>>2]=J[i>>2];J[f+4>>2]=g;Ui=i+48|0;continue}break}g=b;i=Ui-48|0;Ui=i;o=N[a+56>>2];p=N[a+52>>2];q=N[a+48>>2];r=N[a+44>>2];s=N[a+40>>2];t=N[a+36>>2];u=N[a+32>>2];v=N[a+28>>2];w=N[a+24>>2];x=N[a+20>>2];y=N[a+16>>2];z=N[a+8>>2];A=N[a+4>>2];B=N[a>>2];J[i+44>>2]=J[a+88>>2];f=J[a+84>>2];J[i+36>>2]=J[a+80>>2];J[i+40>>2]=f;f=J[a+76>>2];J[i+28>>2]=J[a+72>>2];J[i+32>>2]=f;f=J[a+68>>2];J[i+20>>2]=J[a+64>>2];J[i+24>>2]=f;j=J[a+144>>2];C=N[a+136>>2];D=N[a+132>>2];E=N[a+128>>2];F=N[a+124>>2];G=N[a+120>>2];I=N[a+116>>2];L=N[a+112>>2];O=N[a+108>>2];R=N[a+104>>2];S=N[a+100>>2];T=N[a+96>>2];J[i+8>>2]=J[a+156>>2];f=J[a+152>>2];J[i>>2]=J[a+148>>2];J[i+4>>2]=f;f=a;while(1){h=f;f=h+160|0;if(j>>>0>M[h+304>>2]){continue}break}w:{if((a|0)==(h|0)){while(1){if(f>>>0>=g>>>0){break w}h=g-16|0;g=g-160|0;if(j>>>0<=M[h>>2]){continue}break w}}while(1){h=g-16|0;g=g-160|0;if(j>>>0<=M[h>>2]){continue}break}}n=f>>>0>=g>>>0;x:{if(n){h=f;break x}while(1){rk(f,g);while(1){k=J[f+304>>2];h=f+160|0;f=h;if(j>>>0>k>>>0){continue}break}f=g;while(1){k=f-16|0;g=f-160|0;f=g;if(j>>>0<=M[k>>2]){continue}break}f=h;if(g>>>0>h>>>0){continue}break}}k=h-160|0;if((k|0)!=(a|0)){N[a>>2]=N[k>>2];N[a+4>>2]=N[h-156>>2];N[a+8>>2]=N[h-152>>2];N[a+16>>2]=N[h-144>>2];N[a+20>>2]=N[h-140>>2];N[a+24>>2]=N[h-136>>2];N[a+28>>2]=N[h-132>>2];N[a+32>>2]=N[h-128>>2];N[a+36>>2]=N[h-124>>2];N[a+40>>2]=N[h-120>>2];N[a+44>>2]=N[h-116>>2];N[a+48>>2]=N[h-112>>2];N[a+52>>2]=N[h-108>>2];N[a+56>>2]=N[h-104>>2];f=h-96|0;l=J[f+20>>2];g=a- -64|0;J[g+16>>2]=J[f+16>>2];J[g+20>>2]=l;l=J[f+12>>2];J[g+8>>2]=J[f+8>>2];J[g+12>>2]=l;l=J[f+4>>2];J[g>>2]=J[f>>2];J[g+4>>2]=l;J[g+24>>2]=J[f+24>>2];N[a+96>>2]=N[h+-64>>2];N[a+100>>2]=N[h-60>>2];N[a+104>>2]=N[h-56>>2];N[a+108>>2]=N[h-52>>2];N[a+112>>2]=N[h-48>>2];N[a+116>>2]=N[h-44>>2];N[a+120>>2]=N[h-40>>2];N[a+124>>2]=N[h-36>>2];N[a+128>>2]=N[h-32>>2];N[a+132>>2]=N[h-28>>2];N[a+136>>2]=N[h-24>>2];f=h-16|0;g=J[f+12>>2];J[a+152>>2]=J[f+8>>2];J[a+156>>2]=g;g=J[f+4>>2];J[a+144>>2]=J[f>>2];J[a+148>>2]=g}N[k>>2]=B;N[h-104>>2]=o;N[h-108>>2]=p;N[h-112>>2]=q;N[h-116>>2]=r;N[h-120>>2]=s;N[h-124>>2]=t;N[h-128>>2]=u;N[h-132>>2]=v;N[h-136>>2]=w;N[h-140>>2]=x;N[h-144>>2]=y;N[h-152>>2]=z;N[h-156>>2]=A;g=J[i+24>>2];f=h-96|0;J[f>>2]=J[i+20>>2];J[f+4>>2]=g;g=J[i+32>>2];J[f+8>>2]=J[i+28>>2];J[f+12>>2]=g;g=J[i+40>>2];J[f+16>>2]=J[i+36>>2];J[f+20>>2]=g;J[f+24>>2]=J[i+44>>2];J[h-16>>2]=j;N[h-24>>2]=C;N[h-28>>2]=D;N[h-32>>2]=E;N[h-36>>2]=F;N[h-40>>2]=G;N[h-44>>2]=I;N[h-48>>2]=L;N[h-52>>2]=O;N[h-56>>2]=R;N[h-60>>2]=S;N[h+-64>>2]=T;f=h-12|0;J[f+8>>2]=J[i+8>>2];g=J[i+4>>2];J[f>>2]=J[i>>2];J[f+4>>2]=g;H[V+12|0]=n;J[V+8>>2]=k;Ui=i+48|0;g=J[V+8>>2];y:{if(K[V+12|0]!=1){break y}h=mU(a,g);f=g+160|0;if(mU(f,b)){b=g;if(!h){continue}break a}if(!h){break y}a=f;continue}LF(a,g,c,d,m);a=g+160|0;e=0;continue}break}Ui=V+16|0}function _fa(a){a=a|0;var b=0,c=0,d=0,e=0,f=0,g=0,h=0,i=0,j=0,k=Q(0),l=Q(0),m=Q(0),n=0,o=Q(0),p=0,q=0,r=Q(0),s=Q(0),t=Q(0),u=0,v=Q(0),w=0,x=Q(0),y=Q(0),z=Q(0),A=0,C=0,D=0,E=Q(0),F=Q(0),G=Q(0),O=Q(0),R=Q(0),S=0,T=Q(0),U=Q(0),V=0,W=0,X=0,Y=Q(0),_=Q(0),$=0,aa=0,ba=0,ca=0,da=0,ea=0,fa=0,ga=0,ha=0,ia=Q(0),ja=0,ka=0,la=0,ma=Q(0),na=Q(0),oa=Q(0),pa=Q(0),qa=0,ra=0,sa=0,ta=0,ua=0,va=0,wa=0,xa=0,ya=0,za=0,Aa=Q(0),Ba=Q(0),Ca=Q(0),Da=Q(0),Ea=Q(0),Fa=Q(0),Ga=Q(0),Ha=Q(0),Ia=Q(0),Ja=Q(0),Ka=Q(0),La=Q(0),Ma=Q(0),Na=0,Oa=0,Pa=0,Qa=0,Ra=0,Sa=0,Ta=0,Ua=0,Va=0;d=Ui-1376|0;Ui=d;h=J[a+4>>2];a:{b:{c:{d:{e:{f:{g:{h:{switch(J[a+8>>2]){case 0:J[h+296>>2]=0;J[h+308>>2]=J[h+304>>2];J[h+340>>2]=J[h+336>>2];break g;case 2:a=J[h+308>>2];e=J[h+304>>2];if((a|0)==(e|0)){break g}b=J[h+340>>2];$=J[h+336>>2];if((b|0)==($|0)){break g}a=a-e|0;Qs(J[h+300>>2],a,e,1);e=b-$|0;Qs(J[h+312>>2],e,J[h+336>>2],1);b=J[h+324>>2];J[76098]=b+J[76098];J[d+64>>2]=b;J[d+68>>2]=0;J[d+24>>2]=b;J[d+28>>2]=0;J[76120]=a+J[76120];J[d+56>>2]=a;J[d+60>>2]=0;J[d+16>>2]=a;J[d+20>>2]=0;J[76142]=e+J[76142];J[d+48>>2]=e;J[d+52>>2]=0;J[d+8>>2]=e;J[d+12>>2]=0;J[h+332>>2]=J[h+332>>2]+1;break g;default:Z(93797,41391,1919,53625);B();case 1:break h}}ta=J[a+20>>2];ja=J[a>>2];qa=J[a+12>>2];aa=J[a+16>>2];J[d+412>>2]=0;e=J[(P(J[aa>>2],48)+qa|0)+16>>2];a=J[h>>2];if(e>>>0>=(J[h+4>>2]-a|0)/240>>>0){break c}ba=a+P(e,240)|0;if(!(K[ba+234|0]&4)){break d}ra=J[ba+148>>2];a=J[h+296>>2];c=J[h+104>>2];if((a|0)==J[h+112>>2]-c>>2){if(H[h+116|0]&1){break b}lj(a+1|0,4,h+104|0,h+112|0,h+108|0);e=rr(nj(336));a=J[h+108>>2];if((a|0)==J[h+112>>2]){break e}J[h+108>>2]=a+4;J[a>>2]=e;c=J[h+104>>2];a=J[h+296>>2]}J[h+296>>2]=a+1;if(J[h+108>>2]-c>>2>>>0<=a>>>0){break c}C=J[(a<<2)+c>>2];a=J[ja+2484>>2];if(!a){e=J[ba+148>>2];a=J[ba+152>>2];i:{if(a){a=J[a>>2];if(a){break i}}a=J[e+4>>2]}a=J[a>>2]}ua=J[a+16>>2];e=d+72|0;ij(e,0,336);J[d+400>>2]=336;ct(a,ua,e,1);e=J[d+396>>2];if(e){a=0;while(1){b=(d+72|0)+P(a,40)|0;if(J[b+8>>2]==2){f=(f&2)>>>1|0?2:(J[b+24>>2]==2)<<1}a=a+1|0;if((e|0)!=(a|0)){continue}break}}$=J[h+340>>2];A=J[h+308>>2];J[d+1228>>2]=0;e=J[(P(J[aa>>2],48)+qa|0)+16>>2];a=J[h>>2];if(e>>>0>=(J[h+4>>2]-a|0)/240>>>0){break c}n=K[h+344|0];g=J[h+316>>2];ka=J[d+392>>2];b=d+1208|0;J[b>>2]=0;J[b+4>>2]=0;b=d+1200|0;J[b>>2]=0;J[b+4>>2]=0;J[d+1192>>2]=0;J[d+1196>>2]=0;J[d+1184>>2]=0;J[d+1188>>2]=0;b=d+1176|0;J[b>>2]=0;J[b+4>>2]=0;b=d+1168|0;J[b>>2]=0;J[b+4>>2]=0;J[d+1160>>2]=0;J[d+1164>>2]=0;J[d+1152>>2]=0;J[d+1156>>2]=0;ij(d+936|0,0,216);a=a+P(e,240)|0;b=J[a+148>>2];e=J[b+20>>2];J[d+1e3>>2]=e;j:{if(!e){break j}i=d+968|0;j=J[a+152>>2];if(j){a=0;while(1){c=J[j+4>>2];k:{if(!(!c|J[j+8>>2]-c>>4>>>0<=a>>>0)){c=J[(c+(a<<4)|0)+8>>2];if(c){break k}}c=J[(J[b+16>>2]+(a<<4)|0)+8>>2]}p=a<<2;J[p+(d+936|0)>>2]=c;J[i+p>>2]=J[c+96>>2];a=a+1|0;if((e|0)!=(a|0)){continue}break}break j}a=0;if((e|0)!=1){j=e&-2;c=0;while(1){p=a<<2;w=d+936|0;S=J[(J[b+16>>2]+(a<<4)|0)+8>>2];J[p+w>>2]=S;J[i+p>>2]=J[S+96>>2];q=w;p=a|1;w=p<<2;p=J[(J[b+16>>2]+(p<<4)|0)+8>>2];J[q+w>>2]=p;J[i+w>>2]=J[p+96>>2];a=a+2|0;c=c+2|0;if((j|0)!=(c|0)){continue}break}}if(!(e&1)){break j}e=a<<2;a=J[(J[b+16>>2]+(a<<4)|0)+8>>2];J[e+(d+936|0)>>2]=a;J[e+i>>2]=J[a+96>>2]}ij(d+600|0,0,336);J[d+928>>2]=336;ij(d+484|0,0,116);l:{if((aa|0)==(ta|0)){e=$;break l}ga=f&2;a=n&1;Na=a?12:24;Oa=a?108:216;Pa=a?1:2;Qa=ka<<4;la=h+140|0;ca=h+144|0;da=h+284|0;ea=h+288|0;X=h+280|0;S=h+268|0;fa=h+272|0;V=h+136|0;w=h+264|0;Ra=h+52|0;Sa=d+1244|0;va=d+1016|0;wa=d+496|0;sa=d+968|0;ha=d+1048|0;Ta=d+1080|0;Ua=d+1112|0;e=$;while(1){m:{n:{o:{p:{q:{r:{b=J[(P(J[aa>>2],48)+qa|0)+16>>2];a=J[h>>2];if(b>>>0<(J[h+4>>2]-a|0)/240>>>0){f=a+P(b,240)|0;T=N[f+116>>2];R=N[f+112>>2];PP(d+936|0,J[f+208>>2],J[f+212>>2],J[f+216>>2]);b=J[f+204>>2];g=J[J[f+148>>2]>>2];i=J[g+64>>2];s:{if(!i){a=d+72|0;if((b|0)==65535){break s}}a=d+600|0;dt(Ra,b&65535,J[g+60>>2],i,d+72|0,a)}i=a;b=A-J[h+304>>2]|0;a=(b>>>0)/(ka>>>0)|0;b=b-P(a,ka)|0;A=(b?ka-b|0:0)+A|0;j=a+((b|0)!=0)|0;a=J[d+1e3>>2];if(!a){break r}if(K[d+1144|0]!=1){break q}g=J[d+1112>>2];if(!J[g+20>>2]){break q}c=L[f+234>>1];a=J[d+1080>>2];p=J[a+32>>2];W=J[a+28>>2];D=J[g+24>>2];t:{b=J[w>>2];a=J[fa>>2]-b>>4;u=J[g+28>>2];q=u>>>1|0;if(a>>>0>>0){if(H[h+276|0]&1){break t}lj(q,16,w,fa,S);b=J[w>>2];a=J[fa>>2]-b>>4}if(a>>>0>=q>>>0){n=(q<<4)+b|0;J[S>>2]=n;u:{if(!J[d+1e3>>2]){c=0;break u}b=c>>>5&1;a=c>>>6&1;g=(W|0)==(b^(a^p));xa=g?2:-2;E=(a|0)==(p|0)?Q(1):Q(-1);F=(b|0)==(W|0)?Q(1):Q(-1);W=u&-2;ya=W<<2;a=g?D:(D+ya|0)-8|0;n=0;while(1){g=V+(n<<4)|0;p=J[g>>2];b=J[g+8>>2]-p>>2;if(b>>>0>>0){if(H[g+12|0]&1){break b}lj(W,4,g,g+8|0,g+4|0);p=J[g>>2];b=J[g+8>>2]-p>>2}if(b>>>0>>0){break a}J[g+4>>2]=p+ya;c=n<<2;J[c+(d+1152|0)>>2]=c+ha;J[c+(d+1184|0)>>2]=p;b=J[c+Ua>>2];k=Q(M[b+4>>2]);l=Q(M[b>>2]);g=K[b+16|0];m=g?k:l;k=g?l:k;l=N[b+12>>2];o=N[b+8>>2];D=J[c+sa>>2];c=J[D+8>>2];D=J[D+4>>2];v:{if(!n){if(u>>>0<2){break v}x=N[b+52>>2];y=N[b+48>>2];za=J[w>>2];Va=J[S>>2]-za>>4;r=Q(c>>>0);s=Q(D>>>0);c=0;b=a;while(1){if((c|0)==(q|0)){break c}D=(c<<3)+p|0;v=N[b+4>>2];t=N[b>>2];N[D>>2]=Q(Q((g?v:t)*m)+o)/s;N[D+4>>2]=Q(1)-Q(Q(Q((g?t:Q(-v))*k)+l)/r);if((c|0)==(Va|0)){break c}D=(c<<4)+za|0;J[D+8>>2]=0;J[D+12>>2]=1065353216;N[D+4>>2]=Q(v-x)*E;N[D>>2]=Q(t-y)*F;b=(xa<<2)+b|0;c=c+1|0;if((q|0)!=(c|0)){continue}break}break v}if(u>>>0<2){break v}v=Q(c>>>0);t=Q(D>>>0);c=0;b=a;while(1){if((c|0)==(q|0)){break c}D=(c<<3)+p|0;x=N[b+4>>2];y=N[b>>2];N[D>>2]=Q(Q((g?x:y)*m)+o)/t;N[D+4>>2]=Q(1)-Q(Q(Q((g?y:Q(-x))*k)+l)/v);b=(xa<<2)+b|0;c=c+1|0;if((q|0)!=(c|0)){continue}break}}c=J[d+1e3>>2];n=n+1|0;if(c>>>0>n>>>0){continue}break}n=J[S>>2];b=J[w>>2]}g=J[X>>2];if(ga){a=J[ea>>2]-g>>4;b=n-b>>4;if(a>>>0>>0){if(H[h+292|0]&1){break b}lj(b,16,X,ea,da);g=J[X>>2];a=J[ea>>2]-g>>4}if(a>>>0>>0){break a}J[da>>2]=(b<<4)+g;n=J[S>>2];c=J[d+1e3>>2];b=J[w>>2]}J[d+1232>>2]=f;J[d+416>>2]=b;J[d+1360>>2]=g;ij(wa,0,100);J[d+596>>2]=0;J[d+484>>2]=i;H[d+532|0]=1;J[d+528>>2]=4;H[d+580|0]=c&127;J[d+576>>2]=2;H[d+520|0]=1;J[d+516>>2]=4;H[d+592|0]=c|128;J[d+588>>2]=1;H[d+496|0]=129;J[d+492>>2]=7;p=n-b>>4;J[d+524>>2]=d+416;J[d+572>>2]=d+1184;J[d+512>>2]=d+1360;J[d+584>>2]=d+1152;J[d+488>>2]=d+1232;w:{if((b|0)!=(n|0)){c=p>>>0<=1?1:p;b=0;while(1){g=J[w>>2];i=J[S>>2]-g>>4;if(ga){if(b>>>0>=i>>>0){break c}a=J[X>>2];if(J[da>>2]-a>>4>>>0<=b>>>0){break c}n=b<<4;q=n+g|0;m=N[q>>2];k=N[q+4>>2];a=a+n|0;J[a+8>>2]=0;J[a+12>>2]=1065353216;N[a+4>>2]=T*k;N[a>>2]=R*m}if(b>>>0>=i>>>0){break w}v=N[f+48>>2];t=N[f+32>>2];E=N[f>>2];F=N[f+16>>2];x=N[f+52>>2];y=N[f+36>>2];r=N[f+4>>2];s=N[f+20>>2];z=N[f+56>>2];O=N[f+40>>2];G=N[f+8>>2];U=N[f+24>>2];a=g+(b<<4)|0;m=N[a+12>>2];k=N[a+8>>2];l=N[a>>2];o=N[a+4>>2];N[a+12>>2]=Q(N[f+60>>2]*m)+Q(Q(N[f+44>>2]*k)+Q(Q(N[f+12>>2]*l)+Q(o*N[f+28>>2])));N[a+8>>2]=Q(z*m)+Q(Q(O*k)+Q(Q(G*l)+Q(o*U)));N[a+4>>2]=Q(x*m)+Q(Q(y*k)+Q(Q(r*l)+Q(o*s)));N[a>>2]=Q(v*m)+Q(Q(t*k)+Q(Q(E*l)+Q(F*o)));A=cn(A,b,d+484|0);a=b+1|0;b=a;if((a|0)!=(c|0)){continue}break}}f=J[d+1112>>2];i=J[f+40>>2];c=J[f+44>>2];x:{if(H[h+344|0]&1){if(!c){c=0;break x}b=0;a=0;if(c>>>0>=4){g=c&-4;n=0;while(1){I[(a<<1)+e>>1]=j+J[i+(a<<2)>>2];f=a|1;I[(f<<1)+e>>1]=j+J[i+(f<<2)>>2];f=a|2;I[(f<<1)+e>>1]=j+J[i+(f<<2)>>2];f=a|3;I[(f<<1)+e>>1]=j+J[i+(f<<2)>>2];a=a+4|0;n=n+4|0;if((g|0)!=(n|0)){continue}break}}g=c&3;if(!g){break x}while(1){I[(a<<1)+e>>1]=j+J[i+(a<<2)>>2];a=a+1|0;b=b+1|0;if((g|0)!=(b|0)){continue}break}break x}if(!c){c=0;break x}n=0;a=0;if(c>>>0>=4){q=c&-4;g=0;while(1){b=a<<2;J[b+e>>2]=j+J[b+i>>2];u=b|4;J[u+e>>2]=j+J[i+u>>2];u=b|8;J[u+e>>2]=j+J[i+u>>2];b=b|12;J[b+e>>2]=j+J[b+i>>2];a=a+4|0;g=g+4|0;if((q|0)!=(g|0)){continue}break}}b=c&3;if(b){while(1){g=a<<2;J[g+e>>2]=j+J[g+i>>2];a=a+1|0;n=n+1|0;if((b|0)!=(n|0)){continue}break}}c=J[f+44>>2]}g=j+p|0;e=(c<>1];if(!(c&512)){break p}break n}c=L[f+234>>1];if(c&512){break n}p=c>>>6&1;q=c>>>5&1;n=0;while(1){b=V+(n<<4)|0;c=J[b>>2];a=J[b+8>>2]-c>>2;if(a>>>0<=7){if(H[b+12|0]&1){break b}lj(8,4,b,b+8|0,b+4|0);c=J[b>>2];a=J[b+8>>2]-c>>2}if(a>>>0<=7){break a}J[b+4>>2]=c+32;a=n<<2;g=J[a+va>>2];y:{if((g|0)==-1){J[c>>2]=0;J[c+4>>2]=0;break y}b=J[a+Ta>>2];if(!b){J[c>>2]=0;J[c+4>>2]=0;J[c+24>>2]=0;J[c+28>>2]=0;J[c+16>>2]=0;J[c+20>>2]=0;J[c+8>>2]=0;J[c+12>>2]=0;break y}g=J[J[a+sa>>2]+84>>2]+(g<<5)|0;u=(q|0)!=J[b+28>>2];b=P((p|0)==J[b+32>>2]?u:u|2,24)+159376|0;u=g+(J[b>>2]<<3)|0;N[c>>2]=N[u>>2];N[c+4>>2]=N[u+4>>2];u=g+(J[b+4>>2]<<3)|0;N[c+8>>2]=N[u>>2];N[c+12>>2]=N[u+4>>2];u=g+(J[b+8>>2]<<3)|0;N[c+16>>2]=N[u>>2];N[c+20>>2]=N[u+4>>2];b=g+(J[b+16>>2]<<3)|0;N[c+24>>2]=N[b>>2];N[c+28>>2]=N[b+4>>2];J[a+(d+1152|0)>>2]=a+ha;J[a+(d+1184|0)>>2]=c}c=J[d+1e3>>2];n=n+1|0;if(c>>>0>n>>>0){continue}break}if(c){break o}}c=0;b=J[V>>2];if(J[ca>>2]-b>>>0<=31){if(H[h+148|0]&1){break b}lj(8,4,V,ca,la);b=J[V>>2];if(J[ca>>2]-b>>>0<32){break a}c=J[d+1e3>>2]}J[la>>2]=b+32;J[b+24>>2]=1065353216;J[b+28>>2]=0;J[b+16>>2]=1065353216;J[b+20>>2]=1065353216;J[b+8>>2]=0;J[b+12>>2]=1065353216;J[b>>2]=0;J[b+4>>2]=0;J[d+1152>>2]=ha;J[d+1184>>2]=b}l=Q(0);o=Q(0);z:{if(!c){break z}a=J[d+1112>>2];o=Q(0);if(!a){break z}l=N[a+48>>2];o=N[a+52>>2]}v=N[f+48>>2];t=N[f+32>>2];E=N[f>>2];F=N[f+16>>2];x=N[f+52>>2];y=N[f+36>>2];r=N[f+4>>2];s=N[f+20>>2];z=N[f+56>>2];O=N[f+40>>2];G=N[f+8>>2];U=N[f+24>>2];m=Q(Q(-.5)-l);k=Q(Q(-.5)-o);N[d+1244>>2]=N[f+60>>2]+Q(Q(N[f+44>>2]*Q(0))+Q(Q(N[f+12>>2]*m)+Q(k*N[f+28>>2])));N[d+1240>>2]=z+Q(Q(O*Q(0))+Q(Q(G*m)+Q(k*U)));N[d+1236>>2]=x+Q(Q(y*Q(0))+Q(Q(r*m)+Q(k*s)));N[d+1232>>2]=v+Q(Q(t*Q(0))+Q(Q(E*m)+Q(k*F)));v=N[f+48>>2];t=N[f+32>>2];E=N[f>>2];F=N[f+16>>2];x=N[f+52>>2];y=N[f+36>>2];r=N[f+4>>2];s=N[f+20>>2];z=N[f+56>>2];O=N[f+40>>2];G=N[f+8>>2];U=N[f+24>>2];o=Q(Q(.5)-o);N[d+1260>>2]=N[f+60>>2]+Q(Q(N[f+44>>2]*Q(0))+Q(Q(N[f+12>>2]*m)+Q(o*N[f+28>>2])));N[d+1256>>2]=z+Q(Q(O*Q(0))+Q(Q(G*m)+Q(o*U)));N[d+1252>>2]=x+Q(Q(y*Q(0))+Q(Q(r*m)+Q(o*s)));N[d+1248>>2]=v+Q(Q(t*Q(0))+Q(Q(E*m)+Q(o*F)));v=N[f+48>>2];t=N[f+32>>2];E=N[f>>2];F=N[f+16>>2];x=N[f+52>>2];y=N[f+36>>2];r=N[f+4>>2];s=N[f+20>>2];z=N[f+56>>2];O=N[f+40>>2];G=N[f+8>>2];U=N[f+24>>2];l=Q(Q(.5)-l);N[d+1276>>2]=N[f+60>>2]+Q(Q(N[f+44>>2]*Q(0))+Q(Q(N[f+12>>2]*l)+Q(o*N[f+28>>2])));N[d+1272>>2]=z+Q(Q(O*Q(0))+Q(Q(G*l)+Q(o*U)));N[d+1268>>2]=x+Q(Q(y*Q(0))+Q(Q(r*l)+Q(o*s)));N[d+1264>>2]=v+Q(Q(t*Q(0))+Q(Q(E*l)+Q(o*F)));v=N[f+48>>2];t=N[f+32>>2];E=N[f>>2];F=N[f+16>>2];x=N[f+52>>2];y=N[f+36>>2];r=N[f+4>>2];s=N[f+20>>2];z=N[f+56>>2];O=N[f+40>>2];G=N[f+8>>2];U=N[f+24>>2];N[d+1292>>2]=N[f+60>>2]+Q(Q(N[f+44>>2]*Q(0))+Q(Q(N[f+12>>2]*l)+Q(k*N[f+28>>2])));N[d+1288>>2]=z+Q(Q(O*Q(0))+Q(Q(G*l)+Q(k*U)));N[d+1284>>2]=x+Q(Q(y*Q(0))+Q(Q(r*l)+Q(k*s)));N[d+1280>>2]=v+Q(Q(t*Q(0))+Q(Q(E*l)+Q(k*F)));if(ga){J[d+472>>2]=0;J[d+476>>2]=1065353216;J[d+456>>2]=0;J[d+460>>2]=1065353216;J[d+440>>2]=0;J[d+444>>2]=1065353216;J[d+424>>2]=0;J[d+428>>2]=1065353216;k=Q(T*k);N[d+468>>2]=k;l=Q(R*l);N[d+464>>2]=l;o=Q(T*o);N[d+452>>2]=o;N[d+448>>2]=l;N[d+436>>2]=o;m=Q(R*m);N[d+432>>2]=m;N[d+420>>2]=k;N[d+416>>2]=m}J[d+1360>>2]=f;J[d+1356>>2]=d+416;J[d+1352>>2]=d+1232;ij(wa,0,100);J[d+596>>2]=0;J[d+484>>2]=i;H[d+532|0]=1;J[d+528>>2]=4;H[d+580|0]=c&127;J[d+576>>2]=2;H[d+520|0]=1;J[d+516>>2]=4;H[d+592|0]=c|128;J[d+588>>2]=1;H[d+496|0]=129;J[d+492>>2]=7;J[d+524>>2]=d+1352;J[d+572>>2]=d+1184;J[d+512>>2]=d+1356;J[d+584>>2]=d+1152;J[d+488>>2]=d+1360;a=d+484|0;A=cn(cn(cn(cn(A,0,a),1,a),2,a),3,a);A:{if(H[h+344|0]&1){I[e+10>>1]=j;I[e>>1]=j;I[e+8>>1]=j+3;a=j+2|0;I[e+6>>1]=a;I[e+4>>1]=a;I[e+2>>1]=j+1;break A}J[e+20>>2]=j;J[e>>2]=j;J[e+16>>2]=j+3;a=j+2|0;J[e+12>>2]=a;J[e+8>>2]=a;J[e+4>>2]=j+1}g=j+4|0;e=e+Na|0;break m}W=K[h+344|0];ma=N[f+140>>2];na=N[f+136>>2];oa=N[f+132>>2];pa=N[f+128>>2];Y=N[f+116>>2];_=N[f+112>>2];B:{if(a){b=c&64;g=c&32;p=0;n=0;while(1){q=V+(n<<4)|0;c=J[q>>2];a=J[q+8>>2]-c>>2;if(a>>>0<=31){if(H[q+12|0]&1){break b}lj(32,4,q,q+8|0,q+4|0);c=J[q>>2];a=J[q+8>>2]-c>>2}if(a>>>0<=31){break a}J[q+4>>2]=c+128;q=n<<2;a=J[q+va>>2];C:{if((a|0)==-1){J[c>>2]=0;J[c+4>>2]=0;J[c+24>>2]=0;J[c+28>>2]=0;J[c+16>>2]=0;J[c+20>>2]=0;J[c+8>>2]=0;J[c+12>>2]=0;break C}u=J[q+sa>>2];a=J[u+84>>2]+(a<<5)|0;l=N[a+12>>2];r=Q(Q(1)/Q(M[u+8>>2]));s=Q(Q(1)/Q(M[u+4>>2]));D:{E:{o=N[a>>2];G=N[a+8>>2];if(o==G){break E}t=N[a+20>>2];if(t==l){break E}m=b?G:o;E=m;T=m;R=m;l=N[a+4>>2];k=g?t:l;F=k;z=Q(G-Q(s*oa));s=Q(Q(s*ma)+o);x=b?z:s;ia=x;v=Q(Q(r*na)+t);r=Q(l-Q(r*pa));y=g?v:r;Aa=y;v=g?r:v;Ba=v;Ca=x;Da=x;t=g?l:t;Ea=t;r=b?s:z;Fa=r;z=r;Ga=r;Ha=t;l=t;O=v;Ia=v;o=b?o:G;Ja=o;Ka=y;U=o;La=o;s=k;Ma=k;G=y;break D}z=N[a+4>>2];k=b?l:z;y=k;v=k;t=k;R=N[a+16>>2];m=g?R:o;x=m;T=Q(R-Q(s*na));s=Q(Q(s*pa)+o);E=g?T:s;ia=E;O=Q(l-Q(r*oa));r=Q(Q(r*ma)+z);F=b?O:r;Aa=F;T=g?s:T;Ca=T;R=g?o:R;Da=R;Ba=F;Ea=F;s=b?r:O;Ka=s;O=s;Ha=s;Ga=R;o=R;l=b?z:l;Ia=l;z=T;Ja=z;Fa=E;U=E;r=m;La=m;Ma=l;G=l}N[c+124>>2]=l;N[c+120>>2]=o;N[c+116>>2]=Ia;N[c+112>>2]=Ja;N[c+108>>2]=G;N[c+104>>2]=U;N[c+100>>2]=Ma;N[c+96>>2]=La;N[c+92>>2]=Ha;N[c+88>>2]=Ga;N[c+84>>2]=O;N[c+80>>2]=z;N[c+76>>2]=Ka;N[c+72>>2]=Fa;N[c+68>>2]=s;N[c+64>>2]=r;N[c+60>>2]=Ea;N[c+56>>2]=Da;N[c+52>>2]=Ba;N[c+48>>2]=Ca;N[c+44>>2]=Aa;N[c+40>>2]=ia;N[c+36>>2]=F;N[c+32>>2]=x;N[c+28>>2]=t;N[c+24>>2]=R;N[c+20>>2]=v;N[c+16>>2]=T;N[c+12>>2]=y;N[c+8>>2]=E;N[c+4>>2]=k;N[c>>2]=m;J[q+(d+1152|0)>>2]=q+ha;J[q+(d+1184|0)>>2]=c;p=p+1|0}n=n+1|0;a=J[d+1e3>>2];if(n>>>0>>0){continue}break}if(a){break B}}c=J[V>>2];a=J[ca>>2]-c>>2;if(a>>>0<=31){if(H[h+148|0]&1){break b}lj(32,4,V,ca,la);c=J[V>>2];a=J[ca>>2]-c>>2}if(a>>>0<=31){break a}J[la>>2]=c+128;o=Q(0);m=Q(0);k=Q(0);if(_>Q(.0010000000474974513)){k=Q(na/_);m=Q(pa/_)}l=Q(0);if(Y>Q(.0010000000474974513)){o=Q(oa/Y);l=Q(ma/Y)}J[c+124>>2]=1065353216;J[c+116>>2]=1065353216;J[c+120>>2]=1065353216;k=Q(Q(1)-k);N[c+112>>2]=k;J[c+108>>2]=1065353216;N[c+104>>2]=m;J[c+96>>2]=0;J[c+100>>2]=1065353216;J[c+88>>2]=1065353216;N[c+80>>2]=k;N[c+72>>2]=m;J[c+64>>2]=0;N[c+60>>2]=o;J[c+56>>2]=1065353216;N[c+52>>2]=o;N[c+48>>2]=k;N[c+44>>2]=o;N[c+40>>2]=m;N[c+36>>2]=o;J[c+28>>2]=0;J[c+32>>2]=0;J[c+20>>2]=0;J[c+24>>2]=1065353216;N[c+16>>2]=k;J[c+12>>2]=0;N[c+8>>2]=m;J[c>>2]=0;J[c+4>>2]=0;m=Q(Q(1)-l);N[c+92>>2]=m;N[c+84>>2]=m;N[c+76>>2]=m;N[c+68>>2]=m;J[d+1152>>2]=ha;J[d+1184>>2]=c;p=1}J[d+416>>2]=0;J[d+428>>2]=1065353216;J[d+1360>>2]=0;J[d+1372>>2]=1065353216;m=_>Q(.0010000000474974513)?Q(Q(1)/_):Q(0);N[d+420>>2]=m*pa;k=Y>Q(.0010000000474974513)?Q(Q(1)/Y):Q(0);N[d+1364>>2]=k*ma;N[d+424>>2]=Q(1)-Q(m*na);N[d+1368>>2]=Q(1)-Q(k*oa);c=J[w>>2];if(J[fa>>2]-c>>>0<=255){if(H[h+276|0]&1){break b}lj(16,16,w,fa,S);c=J[w>>2];if(J[fa>>2]-c>>>0<=255){break a}}J[S>>2]=c+256;b=J[X>>2];if(ga){if(J[ea>>2]-b>>>0<=255){if(H[h+292|0]&1){break b}lj(16,16,X,ea,da);b=J[X>>2];if(J[ea>>2]-b>>>0<256){break a}c=J[w>>2]}J[da>>2]=b+256}J[d+1356>>2]=f;J[d+1352>>2]=b;J[d+1348>>2]=c;ij(Sa,0,100);J[d+1344>>2]=0;J[d+1232>>2]=i;H[d+1280|0]=1;J[d+1276>>2]=4;H[d+1328|0]=p&127;J[d+1324>>2]=2;H[d+1268|0]=1;J[d+1264>>2]=4;H[d+1340|0]=p|128;J[d+1336>>2]=1;H[d+1244|0]=129;J[d+1240>>2]=7;J[d+1272>>2]=d+1348;J[d+1320>>2]=d+1184;J[d+1260>>2]=d+1352;J[d+1332>>2]=d+1152;J[d+1236>>2]=d+1356;ia=Q(0);m=Q(0);F:{if(!J[d+1e3>>2]){break F}a=J[d+1112>>2];m=Q(0);if(!a){break F}ia=N[a+48>>2];m=N[a+52>>2]}b=W&1;if(_=Q(0)){a=~~_>>>0}else{a=0}o=Q(a>>>0);if(Y=Q(0)){a=~~Y>>>0}else{a=0}T=Q(a>>>0);c=0;g=A;p=0;while(1){i=(d+1360|0)+(p<<2)|0;n=0;while(1){k=Q(Q(N[i>>2]+Q(-.5))-m);l=Q(Q(N[(d+416|0)+(n<<2)>>2]+Q(-.5))-ia);if(ga){a=J[X>>2];if(J[da>>2]-a>>4>>>0<=c>>>0){break c}a=a+(c<<4)|0;J[a+8>>2]=0;J[a+12>>2]=1065353216;N[a+4>>2]=k*T;N[a>>2]=l*o}a=J[w>>2];if(J[S>>2]-a>>4>>>0<=c>>>0){break c}R=N[f+48>>2];v=N[f+32>>2];t=N[f>>2];E=N[f+16>>2];F=N[f+52>>2];x=N[f+36>>2];y=N[f+4>>2];r=N[f+20>>2];s=N[f+56>>2];z=N[f+40>>2];O=N[f+8>>2];G=N[f+24>>2];a=a+(c<<4)|0;N[a+12>>2]=N[f+60>>2]+Q(Q(N[f+44>>2]*Q(0))+Q(Q(N[f+12>>2]*l)+Q(k*N[f+28>>2])));N[a+8>>2]=s+Q(Q(z*Q(0))+Q(Q(O*l)+Q(k*G)));N[a+4>>2]=F+Q(Q(x*Q(0))+Q(Q(y*l)+Q(k*r)));N[a>>2]=R+Q(Q(v*Q(0))+Q(Q(t*l)+Q(k*E)));g=cn(g,c,d+1232|0);c=c+1|0;n=n+1|0;if((n|0)!=4){continue}break}p=p+1|0;if((p|0)!=4){continue}break}G:{if(!b){J[e>>2]=j;J[e+212>>2]=j+15;g=j+11|0;J[e+208>>2]=g;b=j+14|0;J[e+204>>2]=b;J[e+200>>2]=b;J[e+196>>2]=g;a=j+10|0;J[e+192>>2]=a;J[e+188>>2]=b;J[e+184>>2]=a;i=j+13|0;J[e+180>>2]=i;J[e+176>>2]=i;J[e+172>>2]=a;b=j+9|0;J[e+168>>2]=b;J[e+164>>2]=i;J[e+160>>2]=b;i=j+12|0;J[e+156>>2]=i;J[e+152>>2]=i;J[e+148>>2]=b;i=j+8|0;J[e+144>>2]=i;J[e+140>>2]=g;c=j+7|0;J[e+136>>2]=c;J[e+132>>2]=a;J[e+128>>2]=a;J[e+124>>2]=c;g=j+6|0;J[e+120>>2]=g;J[e+116>>2]=a;J[e+112>>2]=g;J[e+108>>2]=b;J[e+104>>2]=b;J[e+100>>2]=g;a=j+5|0;J[e+96>>2]=a;J[e+92>>2]=b;J[e+88>>2]=a;J[e+84>>2]=i;J[e+80>>2]=i;J[e+76>>2]=a;b=j+4|0;J[e+72>>2]=b;J[e+68>>2]=c;i=j+3|0;J[e- -64>>2]=i;J[e+60>>2]=g;J[e+56>>2]=g;J[e+52>>2]=i;i=j+2|0;J[e+48>>2]=i;J[e+44>>2]=g;J[e+40>>2]=i;J[e+36>>2]=a;J[e+32>>2]=a;J[e+28>>2]=i;g=j+1|0;J[e+24>>2]=g;J[e+20>>2]=a;J[e+16>>2]=g;J[e+12>>2]=b;J[e+8>>2]=b;J[e+4>>2]=g;break G}I[e>>1]=j;I[e+106>>1]=j+15;g=j+11|0;I[e+104>>1]=g;b=j+14|0;I[e+102>>1]=b;I[e+100>>1]=b;I[e+98>>1]=g;a=j+10|0;I[e+96>>1]=a;I[e+94>>1]=b;I[e+92>>1]=a;i=j+13|0;I[e+90>>1]=i;I[e+88>>1]=i;I[e+86>>1]=a;b=j+9|0;I[e+84>>1]=b;I[e+82>>1]=i;I[e+80>>1]=b;i=j+12|0;I[e+78>>1]=i;I[e+76>>1]=i;I[e+74>>1]=b;i=j+8|0;I[e+72>>1]=i;I[e+70>>1]=g;c=j+7|0;I[e+68>>1]=c;I[e+66>>1]=a;I[e- -64>>1]=a;I[e+62>>1]=c;g=j+6|0;I[e+60>>1]=g;I[e+58>>1]=a;I[e+56>>1]=g;I[e+54>>1]=b;I[e+52>>1]=b;I[e+50>>1]=g;a=j+5|0;I[e+48>>1]=a;I[e+46>>1]=b;I[e+44>>1]=a;I[e+42>>1]=i;I[e+40>>1]=i;I[e+38>>1]=a;b=j+4|0;I[e+36>>1]=b;I[e+34>>1]=c;i=j+3|0;I[e+32>>1]=i;I[e+30>>1]=g;I[e+28>>1]=g;I[e+26>>1]=i;i=j+2|0;I[e+24>>1]=i;I[e+22>>1]=g;I[e+20>>1]=i;I[e+18>>1]=a;I[e+16>>1]=a;I[e+14>>1]=i;g=j+1|0;I[e+12>>1]=g;I[e+10>>1]=a;I[e+8>>1]=g;I[e+6>>1]=b;I[e+4>>1]=b;I[e+2>>1]=g}g=j+16|0;A=A+Qa|0;e=e+Oa|0}aa=aa+4|0;if((ta|0)!=(aa|0)){continue}break}}J[h+316>>2]=g;J[h+340>>2]=e;J[h+308>>2]=A;a=J[h+300>>2];if(L[a+20>>1]>2]){Vu(ja,a)}a=J[h+312>>2];if(L[a+20>>1]>2]){Vu(ja,a)}Ao(C);J[C+156>>2]=ua;J[C+144>>2]=Rs(J[h+300>>2]);J[C+168>>2]=Rs(J[h+312>>2]);A=J[ba+148>>2];g=J[ba+152>>2];H:{if(g){a=J[g>>2];I:{if(!a){J[C+172>>2]=J[J[A+4>>2]>>2];break I}J[C+172>>2]=J[a>>2]}c=J[ra+20>>2];if(!c){break H}f=C+176|0;j=J[A+20>>2];a=0;while(1){e=0;i=0;J:{if(a>>>0>=j>>>0){break J}b=J[g+4>>2];K:{if(J[g+8>>2]-b>>4>>>0>a>>>0){b=J[(b+(a<<4)|0)+8>>2];if(b){break K}}b=J[(J[A+16>>2]+(a<<4)|0)+8>>2]}b=J[b+80>>2];if(!b){break J}e=J[b>>2];i=J[b+4>>2]}b=f+(a<<3)|0;J[b>>2]=e;J[b+4>>2]=i;a=a+1|0;if((c|0)!=(a|0)){continue}break}break H}J[C+172>>2]=J[J[A+4>>2]>>2];c=J[ra+20>>2];if(!c){break H}f=C+176|0;j=J[A+20>>2];a=0;if((c|0)!=1){S=c&-2;g=0;while(1){e=0;i=0;p=f+(a<<3)|0;n=0;b=0;L:{if(a>>>0>=j>>>0){break L}w=J[J[(J[A+16>>2]+(a<<4)|0)+8>>2]+80>>2];b=0;if(!w){break L}n=J[w+4>>2];b=J[w>>2]}J[p>>2]=b;J[p+4>>2]=n;b=a|1;M:{if(b>>>0>=j>>>0){break M}n=J[J[(J[A+16>>2]+(b<<4)|0)+8>>2]+80>>2];if(!n){break M}e=J[n>>2];i=J[n+4>>2]}b=f+(b<<3)|0;J[b>>2]=e;J[b+4>>2]=i;a=a+2|0;g=g+2|0;if((S|0)!=(g|0)){continue}break}}if(!(c&1)){break H}e=0;i=0;N:{if(a>>>0>=j>>>0){break N}b=J[J[(J[A+16>>2]+(a<<4)|0)+8>>2]+80>>2];if(!b){break N}e=J[b>>2];i=J[b+4>>2]}a=f+(a<<3)|0;J[a>>2]=e;J[a+4>>2]=i}J[C+240>>2]=1;J[C+244>>2]=H[h+344|0]&1?3:5;a=J[h+340>>2];e=K[h+344|0];J[C+308>>2]=$-J[h+336>>2];J[C+312>>2]=a-$>>>(e&1?1:2);a=J[ba+156>>2];if(a){np(C,a)}a=J[J[ra>>2]+12>>2];if(a>>>0>=5){break f}H[C+320|0]=K[C+320|0]|1;a=a<<2;J[C+252>>2]=J[a+159492>>2];J[C+248>>2]=J[a+159472>>2];Bo(ja,C)}Ui=d+1376|0;return}J[d+32>>2]=a;dj(4,88458,155274,d+32|0);Z(114101,41391,1553,53766);B()}Z(112520,53895,557,53220);B()}Z(75320,41391,1455,53766);B()}Z(145396,53895,487,84789);B()}Z(151729,53895,501,2284);B()}Z(144782,53895,514,59583);B()}function ZO(a,b,c,d,e,f,g,h){var i=0,j=0,k=0,l=0,m=0,n=0,o=0,p=0,q=0,r=0,s=0,t=0,u=0,v=0,w=0,x=0,y=0,z=0,A=0,C=0,D=0,E=0,F=0,G=0,L=0,N=0,O=0,Q=0,R=0,T=0,U=0,V=0,W=0,X=0;s=Ui-112|0;Ui=s;J[s+96>>2]=0;a:{b:{c:{d:{e:{f:{if(c){if(!K[318176]){H[318176]=1;p=Ui-96|0;Ui=p;if(!K[318177]){x=Ui-1040|0;Ui=x;while(1){i=P(k,12)+163280|0;l=J[i+4>>2];g:{if(l|J[i+8>>2]){if(!(1<>2]}else{o=0}m=J[i>>2];n=((o<<2)+(l<<1)|1)<>>0<=1?1:n;h:{if(!(l|o)){i=0;while(1){J[x+(i<<2)>>2]=SE(i,0,0,k)<<8|i;i=i+1|0;if((j|0)!=(i|0)){continue}break}break h}o=-1<>2]=SE(i&o,0,i>>>m|0,k)<<8|i;i=i+1|0;if((j|0)!=(i|0)){continue}break h}}while(1){J[x+(i<<2)>>2]=SE(i&o,i>>>m|0,0,k)<<8|i;i=i+1|0;if((j|0)!=(i|0)){continue}break}}l=x+(n<<2)|0;i=l-x>>2;JF(x,l,31-(i?S(i):32)<<1,1);l=j&1;i=0;if(n>>>0>=2){o=j&-2;j=0;while(1){n=(k<<9)+319216|0;m=J[x+(i<<2)>>2];q=n+((m&255)<<1)|0;H[q+1|0]=i;H[q|0]=m>>>8;q=i|1;t=J[x+(q<<2)>>2];m=n+((t&255)<<1)|0;H[m+1|0]=q;H[m|0]=t>>>8;i=i+2|0;j=j+2|0;if((o|0)!=(j|0)){continue}break}}if(!l){break g}j=J[x+(i<<2)>>2];m=((k<<9)+319216|0)+((j&255)<<1)|0;H[m+1|0]=i;H[m|0]=j>>>8}k=k+1|0;if((k|0)!=21){continue}break}k=0;while(1){q=0;o=65535;while(1){n=P(q,86)+32|0;i=0;while(1){l=(n+P(i,42)>>>6|0)-k|0;t=P(l,l);l=t>>>0<(o&65535)>>>0;t=l?t:o;w=i|1;o=(n+P(w,42)>>>6|0)-k|0;y=P(o,o);o=(t&65535)>>>0>y>>>0;j=o?w:l?i:j;m=o?q:l?q:m;o=o?y:t;i=i+2|0;if((i|0)!=128){continue}break}q=q+1|0;if((q|0)!=128){continue}break}w=k<<3;i=w+329968|0;H[i+3|0]=j;H[i+2|0]=m;I[i>>1]=o;o=65535;q=0;while(1){n=P(q,86);i=0;while(1){l=((P(i,42)+n|0)+96>>>6|0)-k|0;y=P(l,l);t=y>>>0<(o&65535)>>>0;u=i|1;l=((P(u,42)+n|0)+96>>>6|0)-k|0;l=P(l,l);y=t?y:o;o=l>>>0<(y&65535)>>>0;j=o?u:t?i:j;m=o?q:t?q:m;o=o?l:y;i=i+2|0;if((i|0)!=128){continue}break}q=q+1|0;if((q|0)!=128){continue}break}i=w+329968|0;H[i+7|0]=j;H[i+6|0]=m;I[i+4>>1]=o;k=k+1|0;if((k|0)!=256){continue}break}q=0;while(1){o=0;k=65535;while(1){t=P((o<<1)+(o>>>6|0)|0,43)+32|0;i=0;while(1){j=i>>>6|0;y=i|1;m=(t+P(j+(y<<1)|0,21)>>>6|0)-q|0;w=P(m,m);j=(t+P(j+(i<<1)|0,21)>>>6|0)-q|0;m=P(j,j);j=m>>>0<(k&65535)>>>0;k=j?m:k;m=w>>>0<(k&65535)>>>0;k=m?w:k;n=m?o:j?o:n;l=m?y:j?i:l;i=i+2|0;if((i|0)!=128){continue}break}o=o+1|0;if((o|0)!=128){continue}break}i=(q<<2)+332016|0;H[i+3|0]=l;H[i+2|0]=n;I[i>>1]=k;q=q+1|0;if((q|0)!=256){continue}break}Ui=x+1040|0;J[p+88>>2]=-556347706;J[p+92>>2]=-528409;J[p+80>>2]=-1667986300;J[p+84>>2]=-1112167003;J[p+72>>2]=1515342402;J[p+76>>2]=2071161699;J[p+64>>2]=403703808;J[p+68>>2]=959523105;while(1){l=(r<<1)+318192|0;k=0;i=256;while(1){o=K[(p- -64|0)+k|0];q=0;while(1){m=K[(p- -64|0)+q|0];x=((o+(m<<1)>>>0)/3|0)-r|0;j=x>>31;n=m-o|0;m=n>>31;j=((j^x)-j|0)+((P((n^m)-m|0,3)>>>0)/100|0)|0;if((j|0)<(i|0)){H[l+1|0]=k;H[l|0]=q;i=j}q=q+1|0;if((q|0)!=32){continue}break}k=k+1|0;if((k|0)!=32){continue}break}r=r+1|0;if((r|0)!=256){continue}break}r=0;q=0;while(1){i=q>>>4|0;H[p+q|0]=i+(q<<2);k=q|1;H[k+p|0]=i+(k<<2);k=q|2;H[k+p|0]=i+(k<<2);k=q|3;H[k+p|0]=i+(k<<2);q=q+4|0;if((q|0)!=64){continue}break}while(1){l=(r<<1)+318704|0;k=0;i=256;while(1){o=K[k+p|0];q=0;while(1){m=K[p+q|0];x=((o+(m<<1)>>>0)/3|0)-r|0;j=x>>31;n=m-o|0;m=n>>31;j=((j^x)-j|0)+((P((n^m)-m|0,3)>>>0)/100|0)|0;if((j|0)<(i|0)){H[l+1|0]=k;H[l|0]=q;i=j}q=q+1|0;if((q|0)!=64){continue}break}k=k+1|0;if((k|0)!=64){continue}break}r=r+1|0;if((r|0)!=256){continue}break}H[318177]=1}Ui=p+96|0}j=106718;k=90743;t=14;i:{j:{k:{switch(e|0){default:J[s+8>>2]=a;J[s>>2]=e;dj(4,89301,148657,s);break b;case 1:k=101090;break j;case 2:k=99354;break j;case 3:k=101376;break j;case 5:j=108673;k=90768;t=16;break i;case 9:j=99382;k=110186;t=8;break i;case 11:j=101435;k=110218;t=9;break i;case 12:j=99398;k=110316;t=0;break i;case 15:j=101464;k=109327;t=1;break i;case 13:j=110421;k=109282;t=20;break i;case 14:j=110437;k=109304;t=21;break i;case 16:j=101418;k=106891;t=10;break i;case 17:j=99410;k=110340;t=2;break i;case 18:j=101452;k=109016;t=3;break i;case 19:j=89348;k=107168;t=4;break i;case 20:j=93889;k=106696;t=5;break i;case 21:j=101406;k=103457;t=6;break i;case 4:break i;case 0:break k}}k=96618}j=109473;t=13;T=1}J[s+80>>2]=j;J[s+76>>2]=k;J[s+72>>2]=t;J[s+68>>2]=e;J[s+64>>2]=a;dj(2,89301,137102,s- -64|0);i=J[h>>2];k=J[b+32>>2];N=i>>>0>>0?i:k;E=P(N,c);i=ixa(E,0,644,0);j=i+4|0;A=nj(Yi?-1:j>>>0>>0?-1:j);J[A>>2]=E;x=A+4|0;if(!E){break c}i=x+P(E,644)|0;j=x;while(1){ij(j,0,584);H[j+585|0]=0;J[j+632>>2]=0;J[j+636>>2]=0;j=j+644|0;if((i|0)!=(j|0)){continue}break}if(!E){break c}U=(t&30)!=8;while(1){if(M[b+44>>2]<=G>>>0){break f}q=0;n=d+C|0;w=J[J[b+40>>2]+(G<<2)>>2];l:{if((K[n|0]|K[n+1|0]<<8)!=17011|w>>>0<78|((K[n+2|0]|K[n+3|0]<<8)!=19|(K[n+4|0]|K[n+5|0]<<8)!=77)){break l}if((K[n+8|0]|K[n+9|0]<<8|(K[n+10|0]<<16|K[n+11|0]<<24))+77>>>0>w>>>0){break l}i=K[n+17|0]|(K[n+18|0]<<8|K[n+19|0]<<16);if(!i){break l}k=K[n+14|0];j=k|(K[n+15|0]<<8|K[n+16|0]<<16);if(j>>>0>>0){break l}i=K[n+21|0];m:{if(!K[n+20|0]){if(!(i&1)){break l}if(!(k&(i&4)>>>2)){break m}break l}if(i&1){break l}}i=K[n+65|0]|K[n+66|0]<<8|(K[n+67|0]<<16|K[n+68|0]<<24);if(i>>>0>=w>>>0){break l}q=w-i>>>0>=P(j,23)>>>0}if(!q){J[s+48>>2]=a;dj(4,89301,148726,s+48|0);break b}p=x+P(G,644)|0;n:{if((K[n|0]|K[n+1|0]<<8)!=17011|w>>>0<78|((K[n+2|0]|K[n+3|0]<<8)!=19|(K[n+4|0]|K[n+5|0]<<8)!=77)){break n}if((K[n+8|0]|K[n+9|0]<<8|(K[n+10|0]<<16|K[n+11|0]<<24))+77>>>0>w>>>0){break n}k=K[n+14|0]|(K[n+15|0]<<8|K[n+16|0]<<16);if(!k){break n}j=K[n+17|0]|(K[n+18|0]<<8|K[n+19|0]<<16);if(!j){break n}i=K[n+65|0]|K[n+66|0]<<8|(K[n+67|0]<<16|K[n+68|0]<<24);if(i>>>0>=w>>>0|w-i>>>0>>0){break n}l=i+n|0;q=0;while(1){i=l+P(q,23)|0;if(K[i+1|0]<<8|K[i+2|0]<<16|K[i|0]|K[i+3|0]){q=q+1|0;if((k|0)!=(q|0)){continue}break n}break}if(!j){break n}o=1;r=q+1|0;if(k>>>0>r>>>0){while(1){j=l+P(r,23)|0;if(!(K[j+1|0]<<8|K[j+2|0]<<16|K[j|0])){j=K[j+3|0]+1|0;o=j>>>0>>0?o:j;r=r+1|0;if(k>>>0>r>>>0){continue}}break}if(o>>>0>16){break n}}H[p+628|0]=0;J[p+592>>2]=o;J[p+588>>2]=0;k=p;if(K[n+20|0]){m=K[i+4|0]}else{m=K[n+21|0]>>>2|0}H[k+628|0]=m&1;H[p+629|0]=K[i+4|0]>>>1&1;J[p+604>>2]=K[i+9|0]<<2|K[i+10|0]<<10;J[p+608>>2]=K[i+11|0]<<2|K[i+12|0]<<10;J[p+596>>2]=K[i+5|0]|K[i+6|0]<<8;J[p+600>>2]=K[i+7|0]|K[i+8|0]<<8;k=K[i+9|0]|K[i+10|0]<<8;J[p+612>>2]=k;i=K[i+11|0]|K[i+12|0]<<8;J[p+624>>2]=q;J[p+616>>2]=i;J[p+620>>2]=P(i,k)}o:{if((K[n|0]|K[n+1|0]<<8)!=17011|w>>>0<78|((K[n+2|0]|K[n+3|0]<<8)!=19|(K[n+4|0]|K[n+5|0]<<8)!=77)){break o}if((K[n+8|0]|K[n+9|0]<<8|(K[n+10|0]<<16|K[n+11|0]<<24))+77>>>0>w>>>0){break o}i=K[n+14|0]|(K[n+15|0]<<8|K[n+16|0]<<16);if(!i|!(K[n+17|0]|(K[n+18|0]<<8|K[n+19|0]<<16))){break o}k=K[n+65|0]|K[n+66|0]<<8|(K[n+67|0]<<16|K[n+68|0]<<24);if(k>>>0>=w>>>0|w-k>>>0>>0){break o}i=J[p+8>>2];p:{if(!K[n+20|0]){if(i){FU(p)}q:{if(K[n+21|0]&8){i=J[p>>2];if(!i){break o}k=J[i+8>>2];if(!k|(k|0)!=(K[n+39|0]|K[n+40|0]<<8)|J[i+20>>2]!=(K[n+48|0]|K[n+49|0]<<8)){break o}k=K[n+61|0]|K[n+62|0]<<8|(K[n+63|0]<<16|K[n+64|0]<<24);if(!k){break o}i=K[n+57|0]|K[n+58|0]<<8|(K[n+59|0]<<16|K[n+60|0]<<24);if(w>>>0>>0){break o}if(w-i>>>0>=k>>>0){break q}break o}i=K[n+45|0]|(K[n+46|0]<<8|K[n+47|0]<<16);if(!i){break o}L=K[n+54|0]|(K[n+55|0]<<8|K[n+56|0]<<16);if(!L){break o}l=K[n+61|0]|K[n+62|0]<<8|(K[n+63|0]<<16|K[n+64|0]<<24);if(!l){break o}k=K[n+41|0]|K[n+42|0]<<8|(K[n+43|0]<<16|K[n+44|0]<<24);if(k>>>0>w>>>0){break o}j=K[n+50|0]|K[n+51|0]<<8|(K[n+52|0]<<16|K[n+53|0]<<24);if(j>>>0>w>>>0){break o}o=K[n+57|0]|K[n+58|0]<<8|(K[n+59|0]<<16|K[n+60|0]<<24);if(w-j>>>0>>0|l>>>0>w-o>>>0|(i>>>0>w-k>>>0|o>>>0>w>>>0)){break o}u=K[n+39|0]|K[n+40|0]<<8;k=k+n|0;y=K[n+48|0]|K[n+49|0]<<8;O=j+n|0;l=0;v=0;q=0;j=Ui-240|0;Ui=j;r:{s:{t:{u:{v:{if(J[p>>2]){break v}J[j+232>>2]=0;J[j+236>>2]=0;J[j+224>>2]=0;J[j+228>>2]=0;J[j+216>>2]=0;J[j+220>>2]=0;J[j+208>>2]=0;J[j+200>>2]=0;J[j+204>>2]=0;J[j+192>>2]=0;J[j+196>>2]=0;J[j+184>>2]=0;J[j+188>>2]=0;J[j+176>>2]=0;J[j+180>>2]=0;J[j+168>>2]=0;J[j+160>>2]=0;J[j+164>>2]=0;J[j+152>>2]=0;J[j+156>>2]=0;J[j+144>>2]=0;J[j+148>>2]=0;J[j+136>>2]=0;J[j+140>>2]=0;J[j+128>>2]=0;J[j+120>>2]=0;J[j+124>>2]=0;J[j+112>>2]=0;J[j+116>>2]=0;J[j+104>>2]=0;J[j+108>>2]=0;J[j+96>>2]=0;J[j+100>>2]=0;J[j+88>>2]=0;J[j+80>>2]=0;J[j+84>>2]=0;J[j+72>>2]=0;J[j+76>>2]=0;o=j- -64|0;J[o>>2]=0;J[o+4>>2]=0;J[j+56>>2]=0;J[j+60>>2]=0;w:{if(!(i?k:1)){break w}J[j+232>>2]=0;J[j+236>>2]=0;J[j+224>>2]=k;J[j+220>>2]=k;J[j+216>>2]=i;J[j+228>>2]=i+k;i=j+216|0;if(!aq(i,j+176|0)){break w}if(!aq(i,j+136|0)){break w}if(!aq(i,j+96|0)){break w}if(!aq(i,j+56|0)|!J[j+180>>2]|(!J[j+140>>2]|!J[j+100>>2])){break w}if(!J[j+60>>2]){break w}F=wt(i,1);i=p+4|0;k=J[i+4>>2];if((k|0)!=(u|0)){if(!(u>>>0<=M[i+8>>2]|k>>>0>u>>>0)){An(i,u,(u|0)==(k+1|0),8)}J[i+4>>2]=u}J[j+52>>2]=1052688;x:{if(!u){break x}y:{while(1){z:{A:{B:{if(J[j+60>>2]){o=J[j+236>>2];if(o>>>0>=16){r=J[j+232>>2];break z}l=0;k=J[j+220>>2];m=J[j+228>>2];if(k>>>0>>0){break B}i=k;break A}break u}i=k+1|0;J[j+220>>2]=i;l=K[k|0]}r=J[j+232>>2];k=o+8|0;J[j+236>>2]=k;r=r|l<>2]=r;if(o>>>0>7){o=k;break z}l=0;if(i>>>0>>0){J[j+220>>2]=i+1;l=K[i|0]}o=o|16;J[j+236>>2]=o;r=l<>2]=r}C:{D:{i=r&1023;if(i>>>0>2]){m=J[J[j+68>>2]+(i<<2)>>2];if((m|0)>=0){break D}l=10;i=J[j+80>>2];k=J[j+84>>2];while(1){m=(r>>>l&1)+(m^-1)|0;if(m>>>0>=k>>>0){break t}l=l+1|0;m=I[i+(m<<1)>>1];if((m|0)<0){continue}break}break C}break t}l=m>>>16|0}J[j+236>>2]=o-l;J[j+232>>2]=r>>>l;if(M[p+8>>2]<=v>>>0){break y}Q=v<<3;q=m+q|0;H[(Q+J[p+4>>2]|0)+4|0]=q&7;o=0;E:{while(1){F:{G:{H:{I:{J:{K:{L:{D=(j+52|0)+o|0;R=K[D|0];if(R>>>0<=9){M:{N:{O:{if(J[j+180>>2]){k=J[j+236>>2];if(k>>>0>=16){r=J[j+232>>2];break M}l=0;m=J[j+220>>2];z=J[j+228>>2];if(m>>>0>>0){break O}i=m;break N}break u}i=m+1|0;J[j+220>>2]=i;l=K[m|0]}r=J[j+232>>2];m=k+8|0;J[j+236>>2]=m;r=r|l<>2]=r;if(k>>>0>7){k=m;break M}l=0;if(i>>>0>>0){J[j+220>>2]=i+1;l=K[i|0]}k=k|16;J[j+236>>2]=k;r=l<>2]=r}i=r&1023;if(i>>>0>=M[j+192>>2]){break t}l=J[J[j+188>>2]+(i<<2)>>2];if((l|0)>=0){break L}m=10;i=J[j+200>>2];z=J[j+204>>2];while(1){l=(r>>>m&1)+(l^-1)|0;if(l>>>0>=z>>>0){break t}m=m+1|0;l=I[i+(l<<1)>>1];if((l|0)<0){continue}break}break G}if(R>>>0<=21){P:{Q:{R:{if(J[j+140>>2]){k=J[j+236>>2];if(k>>>0>=16){r=J[j+232>>2];break P}l=0;m=J[j+220>>2];z=J[j+228>>2];if(m>>>0>>0){break R}i=m;break Q}break u}i=m+1|0;J[j+220>>2]=i;l=K[m|0]}r=J[j+232>>2];m=k+8|0;J[j+236>>2]=m;r=r|l<>2]=r;if(k>>>0>7){k=m;break P}l=0;if(i>>>0>>0){J[j+220>>2]=i+1;l=K[i|0]}k=k|16;J[j+236>>2]=k;r=l<>2]=r}i=r&1023;if(i>>>0>=M[j+152>>2]){break t}l=J[J[j+148>>2]+(i<<2)>>2];if((l|0)>=0){break K}m=10;i=J[j+160>>2];z=J[j+164>>2];while(1){l=(r>>>m&1)+(l^-1)|0;if(l>>>0>=z>>>0){break t}m=m+1|0;l=I[i+(l<<1)>>1];if((l|0)<0){continue}break}break H}S:{T:{U:{if(J[j+100>>2]){k=J[j+236>>2];if(k>>>0>=16){r=J[j+232>>2];break S}l=0;m=J[j+220>>2];z=J[j+228>>2];if(m>>>0>>0){break U}i=m;break T}break u}i=m+1|0;J[j+220>>2]=i;l=K[m|0]}r=J[j+232>>2];m=k+8|0;J[j+236>>2]=m;r=r|l<>2]=r;if(k>>>0>7){k=m;break S}l=0;if(i>>>0>>0){J[j+220>>2]=i+1;l=K[i|0]}k=k|16;J[j+236>>2]=k;r=l<>2]=r}i=r&1023;if(i>>>0>=M[j+112>>2]){break t}l=J[J[j+108>>2]+(i<<2)>>2];if((l|0)>=0){break J}m=10;i=J[j+120>>2];z=J[j+124>>2];while(1){l=(r>>>m&1)+(l^-1)|0;if(l>>>0>=z>>>0){break t}m=m+1|0;l=I[i+(l<<1)>>1];if((l|0)<0){continue}break}break I}m=l>>>16|0;break G}m=l>>>16|0;break H}m=l>>>16|0}J[j+232>>2]=r>>>m;i=k-m|0;break F}J[j+232>>2]=r>>>m;i=k-m|0;break F}J[j+232>>2]=r>>>m;i=k-m|0}J[j+236>>2]=i;if(M[p+8>>2]<=v>>>0){break E}i=l+R&31;H[(J[p+4>>2]+Q|0)+o|0]=i;H[D|0]=i;if(!F){i=o>>>0<2;o=o+1|0;if(i){continue}}break}if(F){if(M[p+8>>2]<=v>>>0){break s}i=J[p+4>>2]+Q|0;H[i+1|0]=K[i|0];if(M[p+8>>2]<=v>>>0){break s}i=J[p+4>>2]+Q|0;H[i+2|0]=K[i|0]}v=v+1|0;if((u|0)!=(v|0)){continue}break x}break}break s}break s}l=0;i=p+16|0;k=J[i+4>>2];if((k|0)!=(y|0)){if(!(k>>>0>y>>>0|M[i+8>>2]>=y>>>0)){An(i,y,(k+1|0)==(y|0),11)}J[i+4>>2]=y}if(!(L?O:1)){break w}J[j+232>>2]=0;J[j+236>>2]=0;J[j+224>>2]=O;J[j+220>>2]=O;J[j+216>>2]=L;J[j+228>>2]=L+O;J[j+48>>2]=0;J[j+40>>2]=0;J[j+44>>2]=0;J[j+32>>2]=0;J[j+36>>2]=0;J[j+24>>2]=0;J[j+28>>2]=0;J[j+16>>2]=0;J[j+20>>2]=0;i=j+216|0;V:{if((wt(i,1)|0)==1){break V}if((wt(i,1)|0)==1){break V}l=1;if((wt(i,1)|0)==1){if(!y){break V}i=0;while(1){o=P(i,11);l=0;W:{while(1){m=J[j+232>>2];k=J[j+236>>2];if(k>>>0<=7){q=J[j+220>>2];if(q>>>0>2]){J[j+220>>2]=q+1;v=K[q|0]}else{v=0}m=v<>2]=k-8;J[j+232>>2]=m>>>8;X:{if(M[p+20>>2]<=i>>>0){break X}k=o+J[p+16>>2]|0;q=k+l|0;r=m&3;H[q|0]=r|K[q|0]&252;q=oxa(-2,l);r=K[r+169141|0];H[k+7|0]=q&K[k+7|0]|(r&1)<>>1<>2]<=i>>>0){break X}k=o+J[p+16>>2]|0;r=k+l|0;u=m>>>2&3;H[r|0]=K[r|0]&243|u<<2;r=16<>>1<>2]<=i>>>0){break X}k=o+J[p+16>>2]|0;v=k+l|0;D=v;F=K[v|0]&207;v=m>>>4&3;H[D|0]=F|v<<4;v=K[v+169141|0];H[k+6|0]=q&K[k+6|0]|(v&1)<>>1<>2]<=i>>>0){break X}k=o+J[p+16>>2]|0;q=k+l|0;H[q|0]=K[q|0]&63|m&192;m=K[(m>>>6&3)+169141|0];H[k+6|0]=r&K[k+6|0]|(m&1)<>>1<>2]>i>>>0){yU(o+J[p+16>>2]|0);l=1;i=i+1|0;if((y|0)!=(i|0)){continue}break V}break}break s}if(!aq(j+216|0,j+16|0)){l=0;break V}if(y>>>0>=2){l=0;if(!J[j+20>>2]){break V}}r=0;J[j+12>>2]=0;if(y){while(1){l=0;Y:{Z:{if(!r){while(1){i=wt(j+216|0,8);H[(j+12|0)+l|0]=i;if(!J[p+20>>2]){break s}k=J[p+16>>2];o=k+l|0;m=i&3;H[o|0]=m|K[o|0]&252;o=oxa(-2,l);m=K[m+169141|0];H[k+7|0]=o&K[k+7|0]|(m&1)<>>1<>2]){break s}k=J[p+16>>2];m=k+l|0;q=i>>>2&3;H[m|0]=K[m|0]&243|q<<2;m=16<>>1<>2]){break s}k=J[p+16>>2];u=k+l|0;v=u;D=K[u|0]&207;u=i>>>4&3;H[v|0]=D|u<<4;u=K[u+169141|0];H[k+6|0]=o&K[k+6|0]|(u&1)<>>1<>2]){break s}k=J[p+16>>2];o=k+l|0;H[o|0]=K[o|0]&63|i&192;i=K[(i>>>6&3)+169141|0];H[k+6|0]=m&K[k+6|0]|(i&1)<>>1<>2]<=r>>>0){break $}k=P(r,11);o=k+J[p+16>>2]|0;m=o+l|0;q=i&3;H[m|0]=q|K[m|0]&252;m=oxa(-2,l);q=K[q+169141|0];H[o+7|0]=m&K[o+7|0]|(q&1)<>>1<>2]<=r>>>0){break $}o=k+J[p+16>>2]|0;q=o+l|0;u=i>>>2&3;H[q|0]=K[q|0]&243|u<<2;q=16<>>1<>2]<=r>>>0){break $}o=k+J[p+16>>2]|0;v=o+l|0;D=v;F=K[v|0]&207;v=i>>>4&3;H[D|0]=F|v<<4;v=K[v+169141|0];H[o+6|0]=m&K[o+6|0]|(v&1)<>>1<>2]<=r>>>0){break $}o=k+J[p+16>>2]|0;m=o+l|0;H[m|0]=K[m|0]&63|i&192;i=K[(i>>>6&3)+169141|0];H[o+6|0]=q&K[o+6|0]|(i&1)<>>1<>2]|0;if(M[p+20>>2]>r>>>0){break Y}break s}if(!J[p+20>>2]){break s}i=J[p+16>>2]}yU(i);r=r+1|0;if((y|0)!=(r|0)){continue}break}}l=1}i=J[j+40>>2];if(i){cj(i)}i=J[j+28>>2];if(i){cj(i)}i=J[j+16>>2];if(i){cj(i)}}i=J[j+80>>2];if(i){cj(i)}i=J[j+68>>2];if(i){cj(i)}i=J[j+56>>2];if(i){cj(i)}i=J[j+120>>2];if(i){cj(i)}i=J[j+108>>2];if(i){cj(i)}i=J[j+96>>2];if(i){cj(i)}i=J[j+160>>2];if(i){cj(i)}i=J[j+148>>2];if(i){cj(i)}i=J[j+136>>2];if(i){cj(i)}i=J[j+200>>2];if(i){cj(i)}i=J[j+188>>2];if(i){cj(i)}i=J[j+176>>2];if(!i){break v}cj(i)}Ui=j+240|0;break r}Z(144962,54542,447,48247);B()}Z(58877,54122,365,84789);B()}Z(58877,54122,366,84789);B()}if(!l){break o}k=K[n+61|0]|K[n+62|0]<<8|(K[n+63|0]<<16|K[n+64|0]<<24);i=K[n+57|0]|K[n+58|0]<<8|(K[n+59|0]<<16|K[n+60|0]<<24)}l=0;j=Ui-32|0;Ui=j;i=i+n|0;aa:{if(!(k?i:1)){break aa}J[j+24>>2]=0;J[j+28>>2]=0;J[j+16>>2]=i;J[j+12>>2]=i;J[j+8>>2]=k;J[j+20>>2]=i+k;i=j+8|0;if(!aq(i,p+28|0)|!J[p+32>>2]){break aa}if(!aq(i,p- -64|0)|!J[p+68>>2]){break aa}if(!aq(i,p+100|0)|!J[p+104>>2]){break aa}if(!aq(i,p+136|0)|!J[p+140>>2]){break aa}i=wt(i,13);J[p+172>>2]=i;l=(i|0)!=0}Ui=j+32|0;if(l){break p}break o}if(!i){break p}FU(p)}H[p+585|0]=1}J[p+640>>2]=w;J[p+636>>2]=n;i=J[p+592>>2];J[p+632>>2]=nj((V=-1,W=ixa(i,0,20,0),X=Yi,X?V:W));ba:{if(!i){break ba}k=0;if(!U){while(1){if(!DU(n,w,k,s+108|0,s+104|0,s+100|0)){break e}j=P(k,20);i=j+J[p+632>>2]|0;J[i>>2]=J[s+108>>2];J[i+4>>2]=J[s+104>>2];J[i+8>>2]=J[s+100>>2];ca:{if(t-13>>>0>=4){l=GU(t);i=J[s+104>>2]+3&-4;m=i>>>0<=8?8:i;i=J[s+108>>2]+3&-4;i=P(m,i>>>0<=8?8:i)>>>1&536870904;if(i>>>0>2])>>>0){break d}J[(j+J[p+632>>2]|0)+16>>2]=l;break ca}m=J[s+104>>2];i=t-13|0;if(i>>>0<=3){i=J[(i<<2)+172044>>2]}else{i=0}i=P(m,P(i,J[s+108>>2]))}J[(j+J[p+632>>2]|0)+12>>2]=i;k=k+1|0;if(k>>>0>2]){continue}break ba}}while(1){if(!DU(n,w,k,s+108|0,s+104|0,s+100|0)){break e}i=P(k,20);j=i+J[p+632>>2]|0;J[j>>2]=J[s+108>>2];J[j+4>>2]=J[s+104>>2];J[j+8>>2]=J[s+100>>2];j=t-13|0;da:{if(j>>>0<4){j=P(J[s+104>>2],P(J[s+108>>2],j>>>0<=3?J[(j<<2)+172044>>2]:0));break da}j=GU(t);l=J[s+100>>2];J[(i+J[p+632>>2]|0)+16>>2]=j;j=P(j,l)}J[(i+J[p+632>>2]|0)+12>>2]=j;k=k+1|0;if(k>>>0>2]){continue}break}}C=w+C|0;G=G+1|0;if((G|0)!=(E|0)){continue}break}break c}Z(111774,37361,295,69357);B()}Z(12664,55e3,266,84789);B()}J[s+36>>2]=a;J[s+32>>2]=k;dj(4,89301,148848,s+32|0);break b}Z(51049,37361,207,61444);B()}if(N){n=c>>>0<=1?1:c;q=e>>>0<3&T;C=0;b=0;while(1){d=C<<2;p=J[J[(x+P(b,644)|0)+632>>2]+12>>2];i=nj(P(p,c));J[d+f>>2]=i;J[d+g>>2]=p;l=b+n|0;while(1){k=x+P(b,644)|0;j=J[k+632>>2];o=J[k+640>>2];m=J[k+636>>2];ea:{fa:{if(t-13>>>0<4){d=J[j+4>>2];j=J[j>>2];if(!CU(k,m,o,i,P(d,j),t,j,d)){d=i+p|0;break fa}ga:{if(!q){break ga}d=J[J[k+632>>2]+12>>2];if((d|0)<=0){break ga}o=d+i|0;k=i;j=i;while(1){H[k|0]=K[j|0];d=k+1|0;ha:{if(!e){break ha}H[k+1|0]=K[j+1|0];d=k+2|0;if((e|0)==1){break ha}H[k+2|0]=K[j+2|0];d=k+3|0}k=d;j=j+4|0;if(o>>>0>j>>>0){continue}break}}d=i+p|0;break ea}d=i+p|0;if(CU(k,m,o,i,M[j+12>>2]/M[j+16>>2]|0,t,0,0)){break ea}}J[s+20>>2]=a;J[s+16>>2]=C;dj(4,89301,154641,s+16|0);if(i){cj(d)}j=0;while(1){a=J[(x+P(j,644)|0)+632>>2];if(a){cj(a)}j=j+1|0;if((j|0)!=(c|0)){continue}break}a=J[A>>2];if(a){j=P(a,644)+4|0;while(1){j=j-644|0;EU(A+j|0);if((j|0)!=4){continue}break}}cj(A);break b}i=d;b=b+1|0;if((l|0)!=(b|0)){continue}break}b=l;C=C+1|0;if((N|0)!=(C|0)){continue}break}}J[h>>2]=N;j=0;while(1){a=J[(x+P(j,644)|0)+632>>2];if(a){cj(a)}j=j+1|0;if((j|0)!=(c|0)){continue}break}a=J[A>>2];if(a){j=P(a,644)+4|0;while(1){j=j-644|0;EU(A+j|0);if((j|0)!=4){continue}break}}cj(A);a=1;break a}a=0}Ui=s+112|0;return a}function dU(a,b,c,d,e){a=a|0;b=b|0;c=c|0;d=d|0;e=e|0;var f=Q(0),g=0,h=Q(0),i=Q(0),j=Q(0),k=Q(0),l=0,m=0,n=Q(0),o=Q(0),p=Q(0),q=Q(0),r=Q(0),s=Q(0),t=Q(0),u=0,v=0,w=Q(0),x=Q(0),y=Q(0),z=Q(0),A=0,B=Q(0),C=0,D=0,E=Q(0),F=Q(0),G=Q(0),H=Q(0),I=Q(0),K=Q(0),L=Q(0),M=Q(0),O=Q(0),S=Q(0),T=0,U=Q(0),V=Q(0),W=0,X=Q(0),Z=Q(0),_=0,$=Q(0),aa=Q(0),ba=Q(0),ca=Q(0),da=Q(0),ea=Q(0),fa=Q(0),ga=Q(0),ha=Q(0),ia=Q(0),ja=0,ka=Q(0),la=Q(0),ma=Q(0),na=Q(0),oa=Q(0),pa=0,qa=0,ra=0,sa=0;d=Ui-160|0;Ui=d;N[d+112>>2]=N[b>>2];N[d+64>>2]=N[b+64>>2];N[d+116>>2]=N[b+4>>2];N[d+68>>2]=N[b+68>>2];N[d+120>>2]=N[b+8>>2];N[d+72>>2]=N[b+72>>2];N[d+128>>2]=N[b+16>>2];N[d+80>>2]=N[b+80>>2];N[d+132>>2]=N[b+20>>2];N[d+84>>2]=N[b+84>>2];N[d+136>>2]=N[b+24>>2];N[d+88>>2]=N[b+88>>2];N[d+144>>2]=N[b+32>>2];N[d+96>>2]=N[b+96>>2];N[d+148>>2]=N[b+36>>2];N[d+100>>2]=N[b+100>>2];N[d+152>>2]=N[b+40>>2];N[d+104>>2]=N[b+104>>2];e=J[a+4>>2];f=N[e+36>>2];j=N[e+28>>2];i=N[e+32>>2];h=Q(Zi[J[J[e>>2]+44>>2]](e));k=Q(Zi[J[J[e>>2]+44>>2]](e));n=Q(Zi[J[J[e>>2]+44>>2]](e));J[d+36>>2]=0;i=Q(i+k);N[d+28>>2]=i+i;j=Q(j+h);N[d+24>>2]=j+j;f=Q(f+n);N[d+32>>2]=f+f;a=J[a+8>>2];f=N[a+36>>2];j=N[a+28>>2];i=N[a+32>>2];h=Q(Zi[J[J[a>>2]+44>>2]](a));k=Q(Zi[J[J[a>>2]+44>>2]](a));n=Q(Zi[J[J[a>>2]+44>>2]](a));J[d+20>>2]=0;i=Q(i+k);N[d+12>>2]=i+i;j=Q(j+h);N[d+8>>2]=j+j;f=Q(f+n);N[d+16>>2]=f+f;W=c;c=0;g=Ui-368|0;Ui=g;a=d+112|0;B=N[a+36>>2];$=N[a+4>>2];o=N[a+20>>2];t=N[a+40>>2];aa=N[a+8>>2];E=N[a+24>>2];D=b+48|0;i=N[D+8>>2];e=b+112|0;h=N[e+8>>2];p=N[D>>2];q=N[e>>2];z=N[D+4>>2];x=N[e+4>>2];f=N[a+32>>2];ba=N[a>>2];j=N[a+16>>2];n=Q(N[d+24>>2]*Q(.5));N[g+356>>2]=n;r=Q(N[d+28>>2]*Q(.5));N[g+360>>2]=r;s=Q(N[d+32>>2]*Q(.5));N[g+364>>2]=s;y=Q(N[d+8>>2]*Q(.5));N[g+344>>2]=y;w=Q(N[d+12>>2]*Q(.5));N[g+348>>2]=w;k=Q(N[d+16>>2]*Q(.5));N[g+352>>2]=k;i=Q(h-i);h=Q(q-p);p=Q(x-z);q=Q(Q(f*i)+Q(Q(ba*h)+Q(j*p)));b=d- -64|0;ca=N[b+40>>2];da=N[b+8>>2];ea=N[b+24>>2];z=Q(Q(f*ca)+Q(Q(ba*da)+Q(j*ea)));ka=Q(R(z));fa=N[b+36>>2];ga=N[b+4>>2];ha=N[b+20>>2];x=Q(Q(f*fa)+Q(Q(ba*ga)+Q(j*ha)));la=Q(R(x));ia=N[b+32>>2];L=N[b>>2];G=N[b+16>>2];I=Q(Q(f*ia)+Q(Q(ba*L)+Q(j*G)));ma=Q(R(I));j=Q(Q(R(q))-Q(Q(k*ka)+Q(Q(w*la)+Q(Q(y*ma)+n))));a:{if(j>Q(0)){break a}K=Q(Q(B*ca)+Q(Q($*da)+Q(o*ea)));U=Q(R(K));O=Q(Q(B*fa)+Q(Q($*ga)+Q(o*ha)));V=Q(R(O));M=Q(Q(B*ia)+Q(Q($*L)+Q(o*G)));S=Q(R(M));f=Q(-34028234663852886e22);if(j>Q(-34028234663852886e22)){m=qQ(0)){break a}F=Q(Q(t*ca)+Q(Q(aa*da)+Q(E*ea)));Z=Q(R(F));X=Q(Q(t*fa)+Q(Q(aa*ga)+Q(E*ha)));na=Q(R(X));H=Q(Q(t*ia)+Q(Q(aa*L)+Q(E*G)));oa=Q(R(H));if(fQ(0)){break a}if(fQ(0)){break a}if(fQ(0)){break a}if(fQ(0)){break a}if(fQ(1.1920928955078125e-7)){break a}p=Q(0);ca=Q(M*M);da=Q(Q(H*H)+Q(0));t=Q(Y(Q(ca+da)));b:{if(!(t>Q(1.1920928955078125e-7))){h=Q(0);i=Q(0);break b}h=Q(0);j=Q(j/t);i=Q(0);if(!(Q(j*Q(1.0499999523162842))>f)){break b}m=EQ(1.1920928955078125e-7)){break a}ea=Q(O*O);fa=Q(Q(X*X)+Q(0));t=Q(Y(Q(ea+fa)));c:{if(!(t>Q(1.1920928955078125e-7))){break c}j=Q(j/t);if(!(Q(j*Q(1.0499999523162842))>f)){break c}m=EQ(1.1920928955078125e-7)){break a}ga=Q(K*K);ha=Q(Q(F*F)+Q(0));t=Q(Y(Q(ga+ha)));d:{if(!(t>Q(1.1920928955078125e-7))){break d}j=Q(j/t);if(!(Q(j*Q(1.0499999523162842))>f)){break d}m=EQ(1.1920928955078125e-7)){break a}ia=Q(I*I);t=Q(Y(Q(ia+da)));e:{if(!(t>Q(1.1920928955078125e-7))){break e}j=Q(j/t);if(!(Q(j*Q(1.0499999523162842))>f)){break e}m=EQ(1.1920928955078125e-7)){break a}E=Q(x*x);H=Q(Y(Q(E+fa)));f:{if(!(H>Q(1.1920928955078125e-7))){break f}j=Q(j/H);if(!(Q(j*Q(1.0499999523162842))>f)){break f}m=tQ(1.1920928955078125e-7)){break a}H=Q(z*z);o=Q(Y(Q(H+ha)));g:{if(!(o>Q(1.1920928955078125e-7))){break g}j=Q(j/o);if(!(Q(j*Q(1.0499999523162842))>f)){break g}m=XQ(1.1920928955078125e-7)){break a}o=Q(Y(Q(ca+ia)));h:{if(!(o>Q(1.1920928955078125e-7))){break h}j=Q(j/o);if(!(Q(j*Q(1.0499999523162842))>f)){break h}m=FQ(1.1920928955078125e-7)){break a}k=Q(Y(Q(ea+E)));i:{if(!(k>Q(1.1920928955078125e-7))){break i}j=Q(j/k);if(!(Q(j*Q(1.0499999523162842))>f)){break i}m=oQ(1.1920928955078125e-7)){break a}j:{k:{l:{m:{k=Q(Y(Q(ga+H)));if(!(k>Q(1.1920928955078125e-7))){break m}j=Q(j/k);if(!(Q(j*Q(1.0499999523162842))>f)){break m}m=q>2]=k;q=Q(Q(N[a+24>>2]*i)+Q(Q(N[a+16>>2]*p)+Q(h*N[a+20>>2])));N[d+52>>2]=q;f=Q(Q(N[a+40>>2]*i)+Q(Q(N[a+32>>2]*p)+Q(h*N[a+36>>2])));break j}k=N[c>>2];N[d+48>>2]=k;q=N[c+16>>2];N[d+52>>2]=q;j=f;f=N[c+32>>2]}N[d+56>>2]=f;if(m){N[d+56>>2]=-f;N[d+52>>2]=-q;N[d+48>>2]=-k}N[d+44>>2]=-j;if(A>>>0>=7){J[g+120>>2]=J[D+8>>2];c=J[D+4>>2];J[g+112>>2]=J[D>>2];J[g+116>>2]=c;G=s;L=Q(-s);f=N[d+56>>2];s=N[a+40>>2];i=N[d+48>>2];p=N[a+8>>2];h=N[d+52>>2];q=N[a+24>>2];k=Q(Q(f*s)+Q(Q(i*p)+Q(h*q)))>Q(0)?G:L;L=Q(k*s);s=N[a+36>>2];B=N[a+4>>2];o=N[a+20>>2];r=Q(Q(f*s)+Q(Q(i*B)+Q(h*o)))>Q(0)?r:Q(-r);G=Q(r*s);s=N[a+32>>2];z=N[a>>2];x=N[a+16>>2];n=Q(Q(f*s)+Q(Q(i*z)+Q(h*x)))>Q(0)?n:Q(-n);N[g+120>>2]=L+Q(G+Q(Q(n*s)+N[g+120>>2]));N[g+112>>2]=Q(k*p)+Q(Q(r*B)+Q(Q(n*z)+N[g+112>>2]));N[g+116>>2]=Q(k*q)+Q(Q(r*o)+Q(Q(n*x)+N[g+116>>2]));J[g+216>>2]=J[e+8>>2];c=J[e+4>>2];J[g+208>>2]=J[e>>2];J[g+212>>2]=c;k=N[g+352>>2];n=N[b+40>>2];r=N[b+8>>2];s=N[b+24>>2];k=Q(Q(f*n)+Q(Q(i*r)+Q(h*s)))>Q(0)?Q(-k):k;$=Q(k*n);L=Q(-w);G=w;w=N[b+36>>2];p=N[b+4>>2];q=N[b+20>>2];n=Q(Q(f*w)+Q(Q(i*p)+Q(h*q)))>Q(0)?L:G;aa=Q(-y);ba=y;y=N[b+32>>2];L=i;i=N[b>>2];G=h;h=N[b+16>>2];f=Q(Q(f*y)+Q(Q(L*i)+Q(G*h)))>Q(0)?aa:ba;y=Q($+Q(Q(n*w)+Q(Q(f*y)+N[g+216>>2])));N[g+216>>2]=y;i=Q(Q(k*r)+Q(Q(n*p)+Q(Q(f*i)+N[g+208>>2])));N[g+208>>2]=i;k=Q(Q(k*s)+Q(Q(n*q)+Q(Q(f*h)+N[g+212>>2])));N[g+212>>2]=k;c=A-7&255;a=((c>>>0)/3<<2)+a|0;N[g+288>>2]=N[a>>2];N[g+292>>2]=N[a+16>>2];N[g+296>>2]=N[a+32>>2];a=b+((c>>>0)%3<<2)|0;n=N[a>>2];N[g+80>>2]=n;r=N[a+16>>2];N[g+84>>2]=r;s=N[a+32>>2];N[g+88>>2]=s;a=g+208|0;b=g- -64|0;h=Q(0);c=g;w=N[g+296>>2];p=N[g+88>>2];q=N[g+288>>2];B=N[g+80>>2];o=N[g+292>>2];z=N[g+84>>2];f=Q(Q(w*p)+Q(Q(q*B)+Q(o*z)));x=Q(Q(1)-Q(f*f));if(x<=Q(9999999747378752e-20)){f=Q(0)}else{x=Q(Q(1)/x);h=Q(N[a+8>>2]-N[g+120>>2]);L=Q(w*h);w=Q(N[a>>2]-N[g+112>>2]);G=Q(q*w);q=Q(N[a+4>>2]-N[g+116>>2]);o=Q(L+Q(G+Q(o*q)));w=Q(Q(p*h)+Q(Q(B*w)+Q(z*q)));h=Q(x*Q(Q(f*o)-w));f=Q(x*Q(o-Q(f*w)))}N[c+328>>2]=f;N[b>>2]=h;f=N[g+64>>2];N[g+216>>2]=Q(s*f)+y;N[g+212>>2]=Q(r*f)+k;N[g+208>>2]=Q(n*f)+i;f=N[d+48>>2];i=N[d+52>>2];h=N[d+56>>2];J[g+44>>2]=0;N[g+40>>2]=-h;N[g+36>>2]=-i;N[g+32>>2]=-f;Zi[J[J[W>>2]+16>>2]](W,g+32|0,a,j);J[d+40>>2]=A;break a}n=N[d+48>>2];n:{if(A>>>0<=3){C=g+348|0;l=g+352|0;r=N[d+56>>2];m=g+344|0;c=e;u=b;T=g+356|0;j=N[d+52>>2];break n}C=g+360|0;l=g+364|0;n=Q(-n);r=Q(-N[d+56>>2]);m=g+356|0;c=D;D=e;u=a;a=b;T=g+344|0;j=Q(-N[d+52>>2])}i=Q(Q(N[u+32>>2]*r)+Q(Q(N[u>>2]*n)+Q(j*N[u+16>>2])));N[g+328>>2]=i;h=Q(Q(N[u+36>>2]*r)+Q(Q(N[u+4>>2]*n)+Q(j*N[u+20>>2])));N[g+332>>2]=h;f=Q(Q(N[u+40>>2]*r)+Q(Q(N[u+8>>2]*n)+Q(j*N[u+24>>2])));N[g+336>>2]=f;f=Q(R(f));h=Q(R(h));i=Q(R(i));o:{if(h>i){b=f>2];f=N[e+(g+328|0)>>2]>2])+Q(N[c+8>>2]-N[D+8>>2]));y=Q(Q(f*N[e+16>>2])+Q(N[c+4>>2]-N[D+4>>2]));w=Q(Q(f*N[e>>2])+Q(N[c>>2]-N[D>>2]));qa=b?2:1;e=1;c=2;p:{q:{r:{ra=(A>>>0<4?-1:-4)+A|0;switch(ra|0){case 0:break p;case 1:break r;default:break q}}e=0;break p}c=1;e=0}v=e<<2;e=v+a|0;f=N[e+32>>2];i=N[e>>2];h=N[e+16>>2];c=c<<2;a=c+a|0;k=N[a+32>>2];p=N[a>>2];q=N[a+16>>2];B=Q(Q(s*k)+Q(Q(w*p)+Q(y*q)));a=_<<2;pa=a+u|0;z=N[pa+32>>2];x=N[pa>>2];I=N[pa+16>>2];o=Q(Q(k*z)+Q(Q(p*x)+Q(q*I)));K=N[a+m>>2];U=Q(o*K);O=Q(B+U);ja=(qa<<2)+u|0;V=N[ja+32>>2];M=N[ja>>2];S=N[ja+16>>2];p=Q(Q(k*V)+Q(Q(p*M)+Q(q*S)));F=N[(b?l:C)>>2];k=Q(p*F);N[g+316>>2]=O-k;q=Q(Q(s*f)+Q(Q(w*i)+Q(y*h)));z=Q(Q(f*z)+Q(Q(i*x)+Q(h*I)));I=Q(K*z);K=Q(q+I);x=Q(Q(f*V)+Q(Q(i*M)+Q(h*S)));f=Q(F*x);N[g+312>>2]=K-f;N[g+308>>2]=O+k;N[g+304>>2]=K+f;i=Q(B-U);N[g+300>>2]=i+k;h=Q(q-I);N[g+296>>2]=h+f;N[g+292>>2]=i-k;N[g+288>>2]=h-f;N[g+280>>2]=N[v+T>>2];N[g+284>>2]=N[c+T>>2];e=g+208|0;l=0;v=Ui+-64|0;Ui=v;f=N[g+280>>2];i=N[g+288>>2];h=Q(-i);if(f>h){N[e>>2]=i;N[e+4>>2]=N[g+292>>2];f=N[g+280>>2];i=N[g+288>>2];h=Q(-i);l=1;a=e+8|0}else{a=e}b=f>h;h=N[g+296>>2];k=Q(-h);if((b|0)!=(k>2];N[a+4>>2]=Q(Q(Q(N[g+300>>2]-k)/Q(h-i))*Q(Q(-i)-f))+k;N[a>>2]=-N[g+280>>2];l=l+1|0;f=N[g+280>>2];h=N[g+296>>2];k=Q(-h);a=a+8|0}if(f>k){N[a>>2]=h;N[a+4>>2]=N[g+300>>2];l=l+1|0;f=N[g+280>>2];h=N[g+296>>2];k=Q(-h);a=a+8|0}b=f>k;k=N[g+304>>2];i=Q(-k);if((b|0)!=(i>2];N[a+4>>2]=Q(Q(Q(N[g+308>>2]-i)/Q(k-h))*Q(Q(-h)-f))+i;N[a>>2]=-N[g+280>>2];l=l+1|0;f=N[g+280>>2];k=N[g+304>>2];i=Q(-k);a=a+8|0}if(f>i){N[a>>2]=k;N[a+4>>2]=N[g+308>>2];l=l+1|0;f=N[g+280>>2];k=N[g+304>>2];i=Q(-k);a=a+8|0}b=f>i;h=N[g+312>>2];i=Q(-h);if((b|0)!=(i>2];N[a+4>>2]=Q(Q(Q(N[g+316>>2]-i)/Q(h-k))*Q(Q(-k)-f))+i;N[a>>2]=-N[g+280>>2];l=l+1|0;f=N[g+280>>2];h=N[g+312>>2];i=Q(-h);a=a+8|0}if(f>i){N[a>>2]=h;N[a+4>>2]=N[g+316>>2];l=l+1|0;f=N[g+280>>2];h=N[g+312>>2];i=Q(-h);a=a+8|0}s:{t:{u:{k=N[g+288>>2];if((Q(-k)i|0)){i=N[g+316>>2];N[a+4>>2]=Q(Q(Q(N[g+292>>2]-i)/Q(k-h))*Q(Q(-h)-f))+i;N[a>>2]=-N[g+280>>2];c=8;l=l+1|0;if(l&8){break s}break u}if(l){break u}c=0;break t}f=N[g+280>>2];h=N[e>>2];v:{if(!(f>h)){c=0;a=v;break v}N[v>>2]=h;N[v+4>>2]=N[e+4>>2];f=N[g+280>>2];h=N[e>>2];c=1;a=v|8}b=e+8|0;i=N[e+(((l|0)!=1)<<3)>>2];if((ih|0)){k=N[e+4>>2];N[a+4>>2]=Q(Q(Q(N[((l|0)==1?e:b)+4>>2]-k)/Q(i-h))*Q(f-h))+k;f=N[g+280>>2];N[a>>2]=f;c=c+1|0;a=a+8|0}w:{if((l|0)<2){break w}h=N[b>>2];if(h>2]=h;N[a+4>>2]=N[e+12>>2];f=N[g+280>>2];h=N[b>>2];c=c+1|0;a=a+8|0}m=(l|0)==2;b=e+16|0;i=N[e+(((l|0)!=2)<<4)>>2];if((ih|0)){k=N[e+12>>2];N[a+4>>2]=Q(Q(Q(N[(m?e:b)+4>>2]-k)/Q(i-h))*Q(f-h))+k;f=N[g+280>>2];N[a>>2]=f;c=c+1|0;if(c&8){break t}a=a+8|0}if(m){break w}h=N[b>>2];if(h>2]=h;N[a+4>>2]=N[e+20>>2];c=c+1|0;if(c&8){break t}f=N[g+280>>2];h=N[b>>2];a=a+8|0}b=e+24|0;m=(l|0)==3;i=N[e+(m?0:24)>>2];if((ih|0)){k=N[e+20>>2];N[a+4>>2]=Q(Q(Q(N[(m?e:b)+4>>2]-k)/Q(i-h))*Q(f-h))+k;f=N[g+280>>2];N[a>>2]=f;c=c+1|0;if(c&8){break t}a=a+8|0}if((l|0)<4){break w}h=N[b>>2];if(h>2]=h;N[a+4>>2]=N[e+28>>2];c=c+1|0;if(c&8){break t}f=N[g+280>>2];h=N[b>>2];a=a+8|0}m=(l|0)==4;b=e+32|0;i=N[e+(((l|0)!=4)<<5)>>2];if((ih|0)){k=N[e+28>>2];N[a+4>>2]=Q(Q(Q(N[(m?e:b)+4>>2]-k)/Q(i-h))*Q(f-h))+k;f=N[g+280>>2];N[a>>2]=f;c=c+1|0;if(c&8){break t}a=a+8|0}if(m){break w}h=N[b>>2];if(h>2]=h;N[a+4>>2]=N[e+36>>2];c=c+1|0;if(c&8){break t}f=N[g+280>>2];h=N[b>>2];a=a+8|0}b=e+40|0;m=(l|0)==5;i=N[e+(m?0:40)>>2];if((ih|0)){k=N[e+36>>2];N[a+4>>2]=Q(Q(Q(N[(m?e:b)+4>>2]-k)/Q(i-h))*Q(f-h))+k;f=N[g+280>>2];N[a>>2]=f;c=c+1|0;if(c&8){break t}a=a+8|0}if((l|0)<6){break w}h=N[b>>2];if(h>2]=h;N[a+4>>2]=N[e+44>>2];c=c+1|0;if(c&8){break t}f=N[g+280>>2];h=N[b>>2];a=a+8|0}b=e+48|0;m=(l|0)==6;i=N[e+(m?0:48)>>2];if((ih|0)){k=N[e+44>>2];N[a+4>>2]=Q(Q(Q(N[(m?e:b)+4>>2]-k)/Q(i-h))*Q(f-h))+k;f=N[g+280>>2];N[a>>2]=f;c=c+1|0;if(c&8){break t}a=a+8|0}if(m){break w}h=N[b>>2];if(h>2]=h;N[a+4>>2]=N[e+52>>2];c=c+1|0;if(c&8){break t}f=N[g+280>>2];h=N[b>>2];a=a+8|0}b=e+56|0;m=(l|0)==7;i=N[e+(m?0:56)>>2];if((ih|0)){k=N[e+52>>2];N[a+4>>2]=Q(Q(Q(N[(m?e:b)+4>>2]-k)/Q(i-h))*Q(f-h))+k;f=N[g+280>>2];N[a>>2]=f;c=c+1|0;if(c&8){break t}a=a+8|0}if((l|0)<8){break w}h=N[b>>2];if(h>2]=h;N[a+4>>2]=N[e+60>>2];c=c+1|0;if(c&8){break t}f=N[g+280>>2];h=N[b>>2];a=a+8|0}b=e+(((l|0)!=8)<<6)|0;i=N[b>>2];if((ih|0)){break w}k=N[e+60>>2];N[a+4>>2]=Q(Q(Q(N[b+4>>2]-k)/Q(i-h))*Q(f-h))+k;N[a>>2]=N[g+280>>2];c=c+1|0;if(c&8){break t}}if((c|0)<=0){c=0;break t}C=v|4;b=0;a=v;l=e;while(1){f=N[g+284>>2];h=N[a+4>>2];k=Q(-h);if(f>k){N[l>>2]=N[a>>2];h=N[a+4>>2];N[l+4>>2]=h;b=b+1|0;if(b&8){c=b;break s}k=Q(-h);l=l+8|0;f=N[g+284>>2]}m=a+8|0;sa=(c|0)==1;i=N[(sa?C:a+12|0)>>2];if((Q(-i)k|0)){k=N[a>>2];N[l>>2]=Q(Q(Q(N[(sa?v:m)>>2]-k)/Q(i-h))*Q(Q(-h)-f))+k;N[l+4>>2]=-N[g+284>>2];b=b+1|0;if(b&8){c=b;break s}l=l+8|0}sa=(c|0)>1;c=c-1|0;a=m;if(sa){continue}break}if((b|0)<=0){c=0;break t}f=N[g+284>>2];c=0;l=v;a=e;while(1){h=N[a+4>>2];if(h>2]=N[a>>2];h=N[a+4>>2];N[l+4>>2]=h;c=c+1|0;if(c&8){break t}l=l+8|0;f=N[g+284>>2]}m=a+8|0;C=(b|0)==1?e:m;i=N[C+4>>2];if((ih|0)){k=N[a>>2];N[l>>2]=Q(Q(Q(N[C>>2]-k)/Q(i-h))*Q(f-h))+k;f=N[g+284>>2];N[l+4>>2]=f;c=c+1|0;if(c&8){break t}l=l+8|0}C=(b|0)>1;b=b-1|0;a=m;if(C){continue}break}}hj(e,v,c<<3)}Ui=v- -64|0;if((c|0)<=0){break a}f=Q(Q(1)/Q(Q(z*p)-Q(x*o)));h=Q(p*f);k=Q(x*f);p=Q(z*f);o=Q(o*Q(-f));z=N[T+(ra<<2)>>2];a=(qa<<2)+u|0;x=N[a+32>>2];b=(_<<2)+u|0;I=N[b+32>>2];K=N[a+16>>2];U=N[b+16>>2];O=N[ja>>2];V=N[pa>>2];a=0;e=0;while(1){b=(g+112|0)+P(a,12)|0;u=g+208|0;v=u+(e<<3)|0;M=N[v>>2];i=Q(M-q);S=N[v+4>>2];F=Q(S-B);f=Q(Q(o*i)+Q(p*F));i=Q(Q(h*i)-Q(k*F));F=Q(Q(f*O)+Q(Q(i*V)+w));N[b>>2]=F;Z=Q(Q(f*K)+Q(Q(i*U)+y));N[b+4>>2]=Z;f=Q(Q(f*x)+Q(Q(i*I)+s));N[b+8>>2]=f;f=Q(z-Q(Q(r*f)+Q(Q(n*F)+Q(j*Z))));N[(g+80|0)+(a<<2)>>2]=f;if(f>=Q(0)){b=u+(a<<3)|0;N[b+4>>2]=S;N[b>>2]=M;a=a+1|0}e=e+1|0;if((e|0)!=(c|0)){continue}break}if((a|0)<=0){break a}b=(a|0)>4?4:a;T=(b|0)<=1?1:b;x:{if(T>>>0>=a>>>0){if(A>>>0>=4){e=0;while(1){b=(g+112|0)+P(e,12)|0;j=N[d+48>>2];f=N[(g+80|0)+(e<<2)>>2];N[g+32>>2]=Q(N[b>>2]+N[D>>2])-Q(j*f);i=N[d+52>>2];N[g+36>>2]=Q(N[b+4>>2]+N[D+4>>2])-Q(f*i);h=N[d+56>>2];N[g+40>>2]=Q(N[b+8>>2]+N[D+8>>2])-Q(f*h);J[g+76>>2]=0;N[g+72>>2]=-h;N[g+68>>2]=-i;N[g+64>>2]=-j;Zi[J[J[W>>2]+16>>2]](W,g- -64|0,g+32|0,Q(-f));e=e+1|0;if((e|0)!=(a|0)){continue}break}break x}e=0;while(1){b=(g+112|0)+P(e,12)|0;N[g+32>>2]=N[b>>2]+N[D>>2];N[g+36>>2]=N[b+4>>2]+N[D+4>>2];N[g+40>>2]=N[b+8>>2]+N[D+8>>2];f=N[d+48>>2];j=N[d+52>>2];i=N[d+56>>2];J[g+76>>2]=0;N[g+72>>2]=-i;N[g+68>>2]=-j;N[g+64>>2]=-f;Zi[J[J[W>>2]+16>>2]](W,g- -64|0,g+32|0,Q(-N[(g+80|0)+(e<<2)>>2]));e=e+1|0;if((e|0)!=(a|0)){continue}break}break x}c=a-1|0;v=c&3;b=0;f=N[g+80>>2];y:{if(a-2>>>0<3){e=1;u=0;break y}pa=c&-4;u=0;e=1;m=0;while(1){c=g+80|0;ja=e+3|0;j=N[c+(ja<<2)>>2];i=N[c+(e<<2)>>2];l=i>f;qa=e+1|0;h=N[c+(qa<<2)>>2];f=l?i:f;_=h>f;ra=e+2|0;i=N[c+(ra<<2)>>2];f=_?h:f;c=i>f;f=c?i:f;C=f>2];c=j>f;f=c?j:f;u=c?e:u;e=e+1|0;b=b+1|0;if((v|0)!=(b|0)){continue}break}}e=g+208|0;_=g+32|0;b=0;j=Q(0);k=Q(0);f=Q(0);v=Ui+-64|0;Ui=v;c=a;z:{A:{B:{switch(a-1|0){default:if((c|0)>=2){l=c-2|0;while(1){a=e+(b<<3)|0;h=N[a>>2];n=N[a+12>>2];r=N[a+8>>2];s=N[a+4>>2];i=Q(Q(h*n)-Q(r*s));j=Q(j+i);f=Q(Q(i*Q(n+s))+f);k=Q(Q(i*Q(h+r))+k);a=(b|0)!=(l|0);b=b+1|0;if(a){continue}break}}h=Q(0xde0b6b000000000);G=j;a=e+(c<<3)|0;n=N[a-8>>2];j=N[e+4>>2];r=N[e>>2];s=N[a-4>>2];i=Q(Q(n*j)-Q(r*s));y=Q(G+i);if(Q(R(y))>Q(1.1920928955078125e-7)){h=Q(Q(1)/Q(y*Q(3)))}C=0;if((c|0)<=0){break z}j=Q(Q(Q(i*Q(j+s))+f)*h);f=Q(Q(Q(i*Q(n+r))+k)*h);break A;case 0:j=N[e+4>>2];f=N[e>>2];break A;case 1:break B}}j=Q(Q(N[e+4>>2]+N[e+12>>2])*Q(.5));f=Q(Q(N[e>>2]+N[e+8>>2])*Q(.5))}b=0;while(1){a=e+(b<<3)|0;N[(v+32|0)+(b<<2)>>2]=rp(Q(N[a+4>>2]-j),Q(N[a>>2]-f));b=b+1|0;if((c|0)!=(b|0)){continue}break}e=0;b=0;if(c-1>>>0>=7){m=c&-8;a=0;while(1){l=v+(b<<2)|0;J[l>>2]=1;J[l+4>>2]=1;J[l+8>>2]=1;J[l+12>>2]=1;J[l+16>>2]=1;J[l+20>>2]=1;J[l+24>>2]=1;J[l+28>>2]=1;b=b+8|0;a=a+8|0;if((m|0)!=(a|0)){continue}break}}a=c&7;if(!a){C=1;break z}while(1){C=1;J[v+(b<<2)>>2]=1;b=b+1|0;e=e+1|0;if((a|0)!=(e|0)){continue}break}}a=u<<2;J[a+v>>2]=0;J[_>>2]=u;C:{if((T|0)<2){break C}e=_+4|0;if(C){i=Q(Q(6.2831854820251465)/Q(T>>>0));h=N[a+(v+32|0)>>2];C=1;while(1){J[e>>2]=u;f=Q(Q(Q(C>>>0)*i)+h);k=f>Q(3.1415927410125732)?Q(f+Q(-6.2831854820251465)):f;j=Q(1e9);a=u;b=0;while(1){l=b<<2;D:{if(!J[l+v>>2]){break D}f=Q(R(Q(N[l+(v+32|0)>>2]-k)));f=f>Q(3.1415927410125732)?Q(Q(6.2831854820251465)-f):f;if(!(f>2]=b;a=b;j=f}b=b+1|0;if((c|0)!=(b|0)){continue}break}J[v+(a<<2)>>2]=0;e=e+4|0;C=C+1|0;if((T|0)!=(C|0)){continue}break}break C}b=T-1|0;a=b&7;if(T-2>>>0>=7){c=b&-8;b=0;while(1){J[e+28>>2]=u;J[e+24>>2]=u;J[e+20>>2]=u;J[e+16>>2]=u;J[e+12>>2]=u;J[e+8>>2]=u;J[e+4>>2]=u;J[e>>2]=u;e=e+32|0;b=b+8|0;if((c|0)!=(b|0)){continue}break}}if(!a){break C}b=0;while(1){J[e>>2]=u;e=e+4|0;b=b+1|0;if((a|0)!=(b|0)){continue}break}}Ui=v- -64|0;c=A>>>0>3;a=0;while(1){e=J[(g+32|0)+(a<<2)>>2];b=(g+112|0)+P(e,12)|0;k=Q(N[b>>2]+N[D>>2]);N[g+64>>2]=k;n=Q(N[b+4>>2]+N[D+4>>2]);N[g+68>>2]=n;r=Q(N[b+8>>2]+N[D+8>>2]);N[g+72>>2]=r;b=(g+80|0)+(e<<2)|0;E:{if(!c){f=N[d+48>>2];j=N[d+52>>2];i=N[d+56>>2];J[g+28>>2]=0;N[g+24>>2]=-i;N[g+20>>2]=-j;N[g+16>>2]=-f;Zi[J[J[W>>2]+16>>2]](W,g+16|0,g- -64|0,Q(-N[b>>2]));break E}j=N[d+48>>2];i=N[d+52>>2];h=N[d+56>>2];J[g+28>>2]=0;N[g+24>>2]=-h;N[g+20>>2]=-i;N[g+16>>2]=-j;f=N[b>>2];J[g+12>>2]=0;N[g+8>>2]=r-Q(h*f);N[g+4>>2]=n-Q(i*f);N[g>>2]=k-Q(j*f);Zi[J[J[W>>2]+16>>2]](W,g+16|0,g,Q(-f))}a=a+1|0;if((T|0)!=(a|0)){continue}break}}J[d+40>>2]=A}Ui=g+368|0;Ui=d+160|0}function So(a){var b=0,c=0,d=0,e=0,f=0,g=0,h=0,i=0,j=0,k=0,l=0,m=0,n=0,o=0,p=0,q=0,r=0,s=0,t=0,u=0;a:{b:{if(!J[a+176>>2]){while(1){c=J[a+124>>2];c:{d:{e:{b=J[a+168>>2];if(b){if(c){return-27648}c=J[a+132>>2];f:{if(c>>>0>b>>>0){c=c-b|0;J[a+132>>2]=c;d=J[a+120>>2];el(d,b+d|0,c);break f}J[a+132>>2]=0}J[a+168>>2]=0;break e}if(c){break e}J[a+132>>2]=0;break d}if(J[a+132>>2]){break c}}g:{if(!(K[J[a>>2]+184|0]&2)){break g}b=J[a+68>>2];h:{if(M[a+136>>2]>M[a+144>>2]){break h}if(!b){break g}i:{switch(J[a+4>>2]-10|0){case 0:case 2:if(!K[b+528|0]){break h}J[a+128>>2]=20;J[a+132>>2]=1;H[J[a+120>>2]]=1;J[a+144>>2]=0;J[a+136>>2]=0;H[b+528|0]=0;break c;default:break i}}if((K[b+532|0]&5)!=5){break h}c=J[b+536>>2];d=K[c+2|0]<<8|K[c+1|0]<<16|K[c+3|0];if(d>>>0>16372){break h}J[a+128>>2]=22;b=d+12|0;J[a+168>>2]=b;J[a+132>>2]=b;hj(J[a+120>>2],c,b);break c}if(!b){break g}c=J[b+580>>2];if(!c|M[a+136>>2]>M[a+144>>2]|J[b+588>>2]!=L[a+140>>1]){break g}b=J[b+584>>2];d=J[a+108>>2];if(b>>>0>(J[a+100>>2]-d|0)+16749>>>0){return-27648}hj(d,c,b);J[a+144>>2]=0;J[a+136>>2]=b;b=J[a+68>>2];if(!b){break g}c=J[b+580>>2];if(!c){break g}J[b+524>>2]=J[b+524>>2]-J[b+584>>2];cj(c);J[b+580>>2]=0}b=J[a+108>>2];c=J[J[a>>2]+184>>2]&2;d=c?13:5;g=b+d|0;J[a+120>>2]=g;J[a+116>>2]=g;J[a+112>>2]=b+(c?11:3);J[a+104>>2]=b+(c?3:-8);j:{b=kA(a,d);if(b){break j}d=J[a+108>>2];b=K[d|0];J[a+128>>2]=b;c=K[d+1|0];k:{l:{m:{n:{o:{p:{q:{g=J[a>>2];if(!(K[g+184|0]&2)){if((b&252)!=20){break q}b=K[d+2|0];break o}if((b&252)==20){break p}b=-29184;break n}J[a+208>>2]=21;J[a+212>>2]=2;H[J[a+204>>2]]=2;H[J[a+204>>2]+1|0]=10;Nm(a,1);b=-29184;break n}c=(c^255)+2|0;b=K[d+2|0];b=(b|0)==255?2:(b^255)+1|0}if(J[a+16>>2]!=(c|0)){b=-29184;break n}if(b>>>0>K[g+181|0]){b=-29184;break n}b=kA(a,J[a+116>>2]-d|0);if(b){break n}b=J[a+112>>2];e=K[b|0]<<8|K[b+1|0];J[a+132>>2]=e;if(e>>>0>(J[a+100>>2]-J[a+120>>2]|0)+16749>>>0){b=-29184;break n}r:{if(!(K[J[a>>2]+184|0]&2)){break r}b=J[a+104>>2];b=K[b|0]<<8|K[b+1|0];c=L[a+140>>1];if((b|0)!=(c|0)){b=(b|0)==(c+1|0)?-25728:-26368;break n}d=0;s:{if(!(K[J[a>>2]+185|0]&8)){break s}g=J[a+156>>2];h=g;i=J[a+104>>2];k=K[i+3|0]|K[i+2|0]<<8;b=K[i+4|0];f=b>>>8|0;b=b<<24;j=f|k;c=b;f=K[i+5|0];b=f>>>16|0;f=c|f<<16;j=b|j;c=f;b=K[i+6|0];f=b>>>24|0;b=K[i+7|0]|(c|b<<8);c=J[a+152>>2];i=b>>>0>c>>>0;f=f|j;if(i&(f|0)==(g|0)|f>>>0>g>>>0){break s}d=-1;g=c-b|0;b=h-(f+i|0)|0;if(!b&g>>>0>63|b){break s}c=J[a+164>>2];d=J[a+160>>2];b=g&31;if((g&63)>>>0>=32){b=c>>>b|0}else{b=((1<>>b}d=b&1?-1:0}if(!d){break r}b=-26368;break n}b=J[a+72>>2];if(!b){b=-29184;if(e-16385>>>0<4294950912){break n}break m}b=J[b>>2];if(b>>>0>e>>>0){b=-29184;break n}if(e>>>0<=b+16640>>>0){break m}b=-29184;if(J[a+20>>2]<=0){break m}}if(!(J[J[a>>2]+184>>2]&2)|(b|0)==-26496){break j}t:{if((b|0)!=-25728){if((b|0)!=-26368){break l}b=J[a+132>>2];break t}b=J[a+132>>2];c=J[a+68>>2];if(!c|J[a+128>>2]!=22|J[c+580>>2]){break t}d=b+13|0;f=J[c+524>>2];if(d>>>0>32768-f>>>0){break t}g=L[a+140>>1];J[c+584>>2]=d;J[c+588>>2]=g+1;g=Zj(1,d);J[c+580>>2]=g;if(!g){break t}hj(g,J[a+108>>2],d);J[c+524>>2]=d+f}J[a+144>>2]=J[a+116>>2]+(b-J[a+108>>2]|0);continue}b=kA(a,J[a+116>>2]+(e-J[a+108>>2]|0)|0);if(b){break j}u:{if(!(K[J[a>>2]+184|0]&2)){c=136;b=0;break u}c=144;b=J[a+116>>2]+(J[a+132>>2]-J[a+108>>2]|0)|0}J[a+c>>2]=b;e=Ui-32|0;Ui=e;d=J[a>>2];v:{w:{h=J[a+72>>2];if(!h){break w}b=J[a+116>>2];J[e+12>>2]=b;J[e+16>>2]=(J[a+100>>2]-b|0)+16749;J[e+24>>2]=J[a+132>>2];J[e+20>>2]=0;b=J[a+104>>2];c=K[b+4|0]|K[b+5|0]<<8|(K[b+6|0]<<16|K[b+7|0]<<24);J[e>>2]=K[b|0]|K[b+1|0]<<8|(K[b+2|0]<<16|K[b+3|0]<<24);J[e+4>>2]=c;b=J[a+20>>2];c=K[a+16|0];i=1-c|0;f=c;c=J[d+184>>2]&2;H[e+9|0]=c?i:f;H[e+10|0]=c?0-((b|0)==2?1:b)|0:b;H[e+8|0]=J[a+128>>2];f=Ui-240|0;Ui=f;x:{if(!h){b=-27648;break x}if(!e){b=-27648;break x}b=J[e+12>>2];if(!b){b=-27648;break x}d=J[e+16>>2];c=J[e+20>>2];if(d>>>0>>0){b=-27648;break x}i=J[e+24>>2];if(i>>>0>d-c>>>0){b=-27648;break x}d=J[h+144>>2];if(!d){b=-27648;break x}l=h+144|0;j=b+c|0;b=-27648;y:{switch(J[d+4>>2]-2|0){case 4:case 6:case 8:b=-29056;k=J[h+4>>2];d=J[h+8>>2];g=k-d|0;m=g+J[h+16>>2]|0;if(m>>>0>i>>>0){break x}k=(k|0)!=12;z:{if(!(k|(d|0)!=4)){J[f>>2]=J[h+36>>2];b=K[j+4|0]|K[j+5|0]<<8|(K[j+6|0]<<16|K[j+7|0]<<24);J[f+4>>2]=K[j|0]|K[j+1|0]<<8|(K[j+2|0]<<16|K[j+3|0]<<24);J[f+8>>2]=b;break z}b=-27648;if((d|0)!=12|k){break x}J[f+8>>2]=J[h+44>>2];b=J[h+40>>2];J[f>>2]=J[h+36>>2];J[f+4>>2]=b;H[f+4|0]=K[f+4|0]^K[e|0];H[f+5|0]=K[f+5|0]^K[e+1|0];H[f+6|0]=K[f+6|0]^K[e+2|0];H[f+7|0]=K[f+7|0]^K[e+3|0];H[f+8|0]=K[f+8|0]^K[e+4|0];H[f+9|0]=K[f+9|0]^K[e+5|0];H[f+10|0]=K[f+10|0]^K[e+6|0];H[f+11|0]=K[f+11|0]^K[e+7|0]}b=i-m|0;J[e+24>>2]=b;J[e+20>>2]=c+g;c=J[e+4>>2];J[f+176>>2]=J[e>>2];J[f+180>>2]=c;H[f+184|0]=K[e+8|0];c=K[e+9|0]|K[e+10|0]<<8;H[f+188|0]=b;H[f+187|0]=b>>>8;H[f+185|0]=c;H[f+186|0]=c>>>8;hj((d+h|0)+36|0,j,g);b=-29056;c=J[h+4>>2];k=f+176|0;i=g+j|0;j=J[e+24>>2];g=i+j|0;h=J[h+16>>2];A:{B:{C:{D:{m=J[l>>2];switch(J[m+4>>2]-6|0){case 2:break C;case 0:break D;default:break B}}J[f+232>>2]=j;m=Ui-16|0;Ui=m;d=J[l+60>>2];c=BH(d,0,f,c,k);E:{if(c){break E}c=AA(d,j,i,i);if(c){break E}c=DH(d,m,h);if(c){break E}if(!h){c=0;break E}l=h&1;F:{if((h|0)==1){d=0;c=0;break F}h=h&-2;d=0;c=0;k=0;while(1){t=K[c+m|0]^K[c+g|0]|d;d=c|1;d=t|K[d+m|0]^K[d+g|0];c=c+2|0;k=k+2|0;if((h|0)!=(k|0)){continue}break}}if(l){d=K[c+m|0]^K[c+g|0]|d}if(!d){c=0;break E}Zi[J[66509]](i,0,j)|0;c=-18}Ui=m+16|0;c=(c|0)==-18?-25344:c;break A}J[f+232>>2]=j;d=J[l+60>>2];l=Ui-16|0;Ui=l;G:{if(!h){c=-13;break G}c=OS(d,1,j,f,c,k,i,i,l,h);if(c){break G}c=0;k=0;d=0;while(1){k=K[c+l|0]^K[c+g|0]|k;d=d+1|0;c=d&255;if(h>>>0>c>>>0){continue}break}if(!k){c=0;break G}Zi[J[66509]](i,0,j)|0;c=-15}Ui=l+16|0;c=(c|0)==-15?-25344:c;break A}d=-24704;H:{if(J[m>>2]!=73){break H}d=-24832;if((h|0)!=16|(c|0)!=J[m+16>>2]){break H}J[f+232>>2]=j;d=Ui-16|0;Ui=d;c=MS(J[l+60>>2],1,j,f,k,i,i,d);I:{if(c){break I}J:{if(K[d|0]!=K[g|0]|K[d+1|0]!=K[g+1|0]|(K[d+2|0]!=K[g+2|0]|K[d+3|0]!=K[g+3|0])){break J}if(K[d+4|0]!=K[g+4|0]|K[d+5|0]!=K[g+5|0]|(K[d+6|0]!=K[g+6|0]|K[d+7|0]!=K[g+7|0])){break J}if(K[d+8|0]!=K[g+8|0]|K[d+9|0]!=K[g+9|0]|(K[d+10|0]!=K[g+10|0]|K[d+11|0]!=K[g+11|0])){break J}if(K[d+12|0]!=K[g+12|0]|K[d+13|0]!=K[g+13|0]|K[d+14|0]!=K[g+14|0]){break J}c=0;if(K[d+15|0]==K[g+15|0]){break I}}Zi[J[66509]](i,0,j)|0;c=-86}Ui=d+16|0;d=(c|0)==-86?-25344:c}c=d}if((c|0)==-25344){break x}if(c){b=c;break x}b=J[f+232>>2]!=J[e+24>>2]?-27648:0;break x;case 0:break y;default:break x}}b=-29056;c=J[h+4>>2];d=J[h+208>>2]>1?c:0;if(c+d>>>0>i>>>0){break x}g=d;d=J[h+12>>2];if((g+d|0)+1>>>0>i>>>0){break x}o=J[h+76>>2];if((o|0)==1){c=i-d|0;J[e+24>>2]=c;d=J[e+4>>2];J[f+176>>2]=J[e>>2];J[f+180>>2]=d;H[f+184|0]=K[e+8|0];d=K[e+9|0]|K[e+10|0]<<8;H[f+188|0]=c;H[f+187|0]=c>>>8;H[f+185|0]=d;H[f+186|0]=d>>>8;c=h- -64|0;Jl(c,f+176|0,13);Jl(c,j,J[e+24>>2]);Dm(c,f);Fn(c);d=J[h+12>>2];i=J[e+24>>2];c=0;H[f+128|0]=0;K:{if(!d){break K}g=i+j|0;if((d|0)!=1){m=d&-2;k=0;while(1){H[f+128|0]=K[f+128|0]|K[c+g|0]^K[c+f|0];n=c|1;H[f+128|0]=K[f+128|0]|K[n+g|0]^K[f+n|0];c=c+2|0;k=k+2|0;if((m|0)!=(k|0)){continue}break}}if(!(d&1)){break K}H[f+128|0]=K[f+128|0]|K[c+g|0]^K[c+f|0]}if(K[f+128|0]){break x}c=J[h+4>>2]}if((i>>>0)%(c>>>0)|0){break x}if(J[h+208>>2]>=2){hj(h+36|0,j,c);J[e+20>>2]=J[e+20>>2]+c;i=J[e+24>>2]-c|0;J[e+24>>2]=i;j=c+j|0}d=h+36|0;b=XH(l,d,c,j,i,j,f+232|0);if(b){break x}i=J[e+24>>2];if((i|0)!=J[f+232>>2]){b=-27648;break x}if(J[h+208>>2]<=1){hj(d,h+184|0,J[h+4>>2]);i=J[e+24>>2]}d=K[(i+j|0)-1|0];g=(o|0)==1?d>>>0>>0:(d+J[h+12>>2]|0)+1>>>0<=i>>>0;if(J[h+208>>2]<=0){b=-27648;break x}c=0;l=g?d:0;m=l+1|0;b=i-256|0;b=b>>>0<=i>>>0?b:0;L:{if(i>>>0<=b>>>0){break L}n=i-m|0;c=i>>>0>=256?256:i;q=c&1;M:{if((i|0)==1){k=0;c=0;break M}p=c&510;k=0;c=0;d=0;while(1){r=b>>>0>=n>>>0|k;s=b+1|0;k=r|n>>>0<=s>>>0;c=((l|0)==K[j+s|0]?k:0)+(((l|0)==K[b+j|0]?r:0)+c|0)|0;b=b+2|0;d=d+2|0;if((p|0)!=(d|0)){continue}break}}if(!q){break L}c=((l|0)==K[b+j|0]?b>>>0>=n>>>0|k:0)+c|0}n=g&(c|0)==(m|0);c=m&(n?511:0);b=i-c|0;J[e+24>>2]=b;N:{O:{if((o|0)!=1){b=b-J[h+12>>2]|0;J[e+24>>2]=b;d=J[e+4>>2];J[f+176>>2]=J[e>>2];J[f+180>>2]=d;H[f+184|0]=K[e+8|0];d=K[e+9|0]|K[e+10|0]<<8;H[f+188|0]=b;H[f+187|0]=b>>>8;H[f+185|0]=d;H[f+186|0]=d>>>8;g=ij(f,0,128);d=J[h+64>>2];if(d){d=J[d>>2]}else{d=0}d=d-3|0;if(d>>>0>4|!(27>>>d&1)){break N}m=b+c|0;o=m-256|0;s=m>>>0>>0;b=J[e+24>>2];l=h- -64|0;Jl(l,g+176|0,13);Jl(l,j,J[e+24>>2]);i=0;d=d<<2;k=J[d+184064>>2];d=J[d+184084>>2];r=(b+(k+c|0)>>>d)-(b+k>>>d)|0;u=n?255:0;k=0;P:{if(!c){break P}q=c&7;b=J[e+24>>2]+j|0;d=0;Q:{if(c>>>0<8){c=b;break Q}t=c&504;p=0;while(1){k=K[b+7|0]^(K[b+6|0]^(K[b+5|0]^(K[b+4|0]^(K[b+3|0]^(K[b+2|0]^(K[b+1|0]^(K[b|0]^k)))))));c=b+8|0;b=c;p=p+8|0;if((t|0)!=(p|0)){continue}break}}if(!q){break P}while(1){k=K[c|0]^k;c=c+1|0;d=d+1|0;if((q|0)!=(d|0)){continue}break}}c=s?0:o;b=r&u;H[g+239|0]=k;Dm(l,g+128|0);while(1){R:{if(!l){break R}d=J[l>>2];if(!d){break R}Zi[J[d+44>>2]](J[l+4>>2],g)|0}d=(b|0)!=(i|0);i=i+1|0;if(d){continue}break}Fn(l);i=0;h=J[h+12>>2];b=h+(m-c|0)|0;S:{if(!b){break S}l=b&7;d=c+j|0;c=0;T:{if(b-1>>>0<7){b=d;break T}m=b&-8;k=0;while(1){i=K[d+7|0]^(K[d+6|0]^(K[d+5|0]^(K[d+4|0]^(K[d+3|0]^(K[d+2|0]^(K[d+1|0]^(K[d|0]^i)))))));b=d+8|0;d=b;k=k+8|0;if((m|0)!=(k|0)){continue}break}}if(!l){break S}while(1){i=K[b|0]^i;b=b+1|0;c=c+1|0;if((l|0)!=(c|0)){continue}break}}H[g+239|0]=i;b=J[e+24>>2];H[g|0]=0;U:{if(!h){break U}d=b+j|0;c=0;if((h|0)!=1){i=h&-2;b=0;while(1){j=g+128|0;H[g|0]=K[g|0]|K[c+d|0]^K[j+c|0];k=c|1;H[g|0]=K[g|0]|K[k+d|0]^K[j+k|0];c=c+2|0;b=b+2|0;if((i|0)!=(b|0)){continue}break}}if(!(h&1)){break U}H[g|0]=K[g|0]|K[c+d|0]^K[(g+128|0)+c|0]}b=-29056;if(n&!K[g|0]){break O}break x}b=-29056;if(!n){break x}}b=0;break x}b=-27648}Ui=f+240|0;if(b){break v}b=K[e+8|0];J[a+128>>2]=b;H[J[a+108>>2]]=b;J[a+120>>2]=J[e+12>>2]+J[e+20>>2];b=J[e+24>>2];J[a+132>>2]=b;H[J[a+112>>2]]=b>>>8;H[J[a+112>>2]+1|0]=J[e+24>>2];b=-29184;c=J[a+132>>2];if(c>>>0>16384){break v}V:{if(!c){if(J[a+20>>2]==3&J[a+128>>2]!=23){break v}b=J[a+172>>2];J[a+172>>2]=b+1;if((b|0)<=2){break V}b=-29056;break v}J[a+172>>2]=0}d=J[a>>2];if(K[d+184|0]&2){break w}b=8;while(1){W:{d=(J[a+104>>2]+b|0)-1|0;c=K[d|0]+1|0;H[d|0]=c;d=J[a>>2];if((c|0)==(c&255)){c=J[d+184>>2]&2;break W}b=b-1|0;c=J[d+184>>2]&2;if(b>>>0>c>>>0){continue}}break}if((b|0)!=(c|0)){break w}b=-27520;break v}b=0;c=J[d+184>>2];if(!(c&2)|!(c&2048)){break v}g=J[a+104>>2];d=K[g+3|0]|K[g+2|0]<<8;c=K[g+4|0];f=c>>>8|0;c=c<<24;f=d|f;i=c;d=K[g+5|0];c=d>>>16|0;i=i|d<<16;h=c|f;c=K[g+6|0];f=c>>>24|0;g=K[g+7|0]|(c<<8|i);h=f|h;j=J[a+156>>2];c=J[a+152>>2];if((h|0)==(j|0)&g>>>0>c>>>0|h>>>0>j>>>0){k=1;d=0;f=g-c|0;if(((c>>>0>g>>>0)+j|0)==(h|0)&f>>>0<=63){d=J[a+164>>2];i=J[a+160>>2];c=f&31;if((f&63)>>>0>=32){d=i<>>32-c|d<>2]=g;J[a+156>>2]=h;J[a+160>>2]=k;J[a+164>>2]=d;break v}f=c-g|0;c=j-((c>>>0>>0)+h|0)|0;if(!c&f>>>0>63|c){break v}g=J[a+164>>2];d=f&31;if((f&63)>>>0>=32){c=1<>>32-d}J[a+160>>2]=i|J[a+160>>2];J[a+164>>2]=c|g}Ui=e+32|0;if(!b){break c}c=J[a>>2];if(!(K[c+184|0]&2)){break k}if((b|0)!=-29056){break j}X:{switch(J[a+4>>2]-11|0){case 0:case 2:break a;default:break X}}b=J[c+172>>2];if(!b){break l}c=J[a+24>>2]+1|0;J[a+24>>2]=c;if(b>>>0>c>>>0){break l}return-29056}J[a+136>>2]=0;J[a+144>>2]=0;continue}if((b|0)!=-29056){break j}break a}if((b|0)==-25984){continue}break b}c=J[a+128>>2];Y:{Z:{if((c|0)==22){c=-29184;d=J[a+132>>2];g=J[a>>2];f=K[g+184|0]&2?12:4;_:{if(d>>>0>>0){break _}b=J[a+120>>2];e=f+(K[b+2|0]<<8|K[b+1|0]<<16|K[b+3|0])|0;J[a+168>>2]=e;$:{aa:{if(K[g+184|0]&2){g=K[b+3|0]|(K[b+2|0]<<8|K[b+1|0]<<16);f=K[b+8|0]|(K[b+7|0]<<8|K[b+6|0]<<16);if(g>>>0>>0){break _}f=g-f|0;g=K[b+11|0]|(K[b+10|0]<<8|K[b+9|0]<<16);if(f>>>0>>0|d>>>0>>0){break _}g=J[a+68>>2];if(!g){break aa}f=K[b+5|0]|K[b+4|0]<<8;ba:{if(J[a+4>>2]!=16){i=J[g+476>>2];if((f|0)!=(i|0)){break ba}break aa}if(K[b|0]==1){break aa}i=J[g+476>>2]}c=-25728;if(f>>>0>i>>>0){break _}if(!(K[b|0]==3|(f|0)!=(J[g+508>>2]-1|0))){c=_r(a);if(c){break _}}c=-25984;break _}if(d>>>0>=e>>>0){break $}c=-28800;break _}c=-25728;if(d>>>0>>0){break _}if(Wj(b+6|0,184060,3)){break _}if(Wj(b+9|0,b+1|0,3)){break _}}c=0}if(c){break Z}c=J[a+128>>2]}ca:{da:{switch(c-20|0){case 0:c=-29184;if(J[a+132>>2]!=1|K[J[a+120>>2]]!=1){break Z}b=0;if(!(K[J[a>>2]+184|0]&2)){break Y}ea:{switch(J[a+4>>2]-10|0){case 0:case 2:break ca;default:break ea}}b=J[a+68>>2]?-25728:-26368;break Y;case 1:b=-29184;if(J[a+132>>2]!=2){break Y}c=-30592;fa:{ga:{b=J[a+120>>2];switch(K[b|0]-1|0){case 1:break Z;case 0:break ga;default:break fa}}b=K[b+1|0];b=b?(b|0)!=100?-26240:0:-30848;break Y}b=-26240;break Y;default:break da}}b=0;if(!(K[J[a>>2]+184|0]&2)){break Y}if((c|0)!=23){break ca}b=J[a+4>>2];if((b|0)==16){break ca}c=-26240;if((b|0)!=2|J[a+8>>2]!=1){break Z}}c=0;if(!J[a+68>>2]|J[a+4>>2]!=16){break Z}yG(a)}b=c}if((b|0)<=-25729){if((b|0)==-26240|(b|0)==-25984){continue}break b}if((b|0)!=-25728){if(b){break b}b=0;if(J[a+128>>2]!=22){break b}c=J[a+68>>2];if(!(!c|J[a+4>>2]==16)){Zi[J[c+1104>>2]](a,J[a+120>>2],J[a+168>>2])}if(!(K[J[a>>2]+184|0]&2)){break b}a=J[a+68>>2];if(!a){break b}J[c+476>>2]=J[c+476>>2]+1;if(H[a+532|0]&1){b=J[a+540>>2];J[a+524>>2]=J[a+524>>2]-b;Zi[J[66509]](J[a+536>>2],0,b)|0;cj(J[a+536>>2]);J[a+540>>2]=0;J[a+532>>2]=0;J[a+536>>2]=0}a=J[c+548>>2];J[c+532>>2]=J[c+544>>2];J[c+536>>2]=a;a=J[c+556>>2];J[c+540>>2]=J[c+552>>2];J[c+544>>2]=a;a=J[c+564>>2];J[c+548>>2]=J[c+560>>2];J[c+552>>2]=a;a=J[c+572>>2];J[c+556>>2]=J[c+568>>2];J[c+560>>2]=a;J[c+564>>2]=J[c+576>>2];J[c+568>>2]=0;J[c+572>>2]=0;J[c+576>>2]=0;return 0}h=J[a+68>>2];if(!h){continue}ha:{switch(J[a+128>>2]-20|0){case 0:H[h+528|0]=1;continue;case 2:break ha;default:continue}}b=-27648;c=J[a+120>>2];e=K[c+4|0]<<8|K[c+5|0];k=J[h+476>>2];if(e>>>0>>0){break b}d=e-k|0;if(d>>>0>3){continue}f=J[a+168>>2];j=f-12|0;g=h+P(d,12)|0;d=K[g+532|0];ia:{if(!(d&1)){i=1;ja:{if(f>>>0>M[a+132>>2]){break ja}if(Wj(c+6|0,184060,3)){break ja}i=(Wj(c+9|0,c+1|0,3)|0)!=0}H[g+532|0]=d&252|i<<1;if(f>>>0>16384){continue}d=J[h+524>>2];if(d>>>0>32768){break b}c=f;if(i){c=((j>>>3|0)+c|0)+((j&7)!=0)|0}ka:{if(32768-d>>>0>=c>>>0){break ka}if((e|0)!=(k|0)){continue}i=0;d=J[a+68>>2];la:{if(!d){break la}b=J[d+580>>2];if(!b){break la}J[d+524>>2]=J[d+524>>2]-J[d+584>>2];cj(b);J[d+580>>2]=0}b=32768-J[d+524>>2]|0;ma:{if(c>>>0<=b>>>0){break ma}e=J[a+68>>2];if(H[e+568|0]&1){b=J[e+576>>2];J[e+524>>2]=J[e+524>>2]-b;Zi[J[66509]](J[e+572>>2],0,b)|0;cj(J[e+572>>2]);J[e+576>>2]=0;J[e+568>>2]=0;J[e+572>>2]=0;b=32768-J[d+524>>2]|0}if(b>>>0>=c>>>0){break ma}e=J[a+68>>2];if(H[e+556|0]&1){b=J[e+564>>2];J[e+524>>2]=J[e+524>>2]-b;Zi[J[66509]](J[e+560>>2],0,b)|0;cj(J[e+560>>2]);J[e+564>>2]=0;J[e+556>>2]=0;J[e+560>>2]=0;b=32768-J[d+524>>2]|0}if(b>>>0>=c>>>0){break ma}e=J[a+68>>2];if(H[e+544|0]&1){b=J[e+552>>2];J[e+524>>2]=J[e+524>>2]-b;Zi[J[66509]](J[e+548>>2],0,b)|0;cj(J[e+548>>2]);J[e+552>>2]=0;J[e+544>>2]=0;J[e+548>>2]=0;b=32768-J[d+524>>2]|0}if(b>>>0>=c>>>0){break ma}e=J[a+68>>2];if(H[e+532|0]&1){b=J[e+540>>2];J[e+524>>2]=J[e+524>>2]-b;Zi[J[66509]](J[e+536>>2],0,b)|0;cj(J[e+536>>2]);J[e+540>>2]=0;J[e+532>>2]=0;J[e+536>>2]=0;b=32768-J[d+524>>2]|0}i=b>>>0>>0?-1:0}if(!i){break ka}return-27136}b=Zj(1,c);J[g+536>>2]=b;if(!b){return-32512}J[g+540>>2]=c;d=J[a+120>>2];e=K[d|0]|K[d+1|0]<<8|(K[d+2|0]<<16|K[d+3|0]<<24);H[b|0]=e;H[b+1|0]=e>>>8;H[b+2|0]=e>>>16;H[b+3|0]=e>>>24;d=K[d+4|0]|K[d+5|0]<<8;H[b+4|0]=d;H[b+5|0]=d>>>8;H[b+6|0]=0;H[b+7|0]=0;H[b+8|0]=0;d=K[b+1|0]|K[b+2|0]<<8;H[b+9|0]=d;H[b+10|0]=d>>>8;H[b+11|0]=K[b+3|0];d=K[g+532|0]|1;H[g+532|0]=d;J[h+524>>2]=J[h+524>>2]+c;break ia}b=J[g+536>>2];if((K[b|0]|K[b+1|0]<<8|(K[b+2|0]<<16|K[b+3|0]<<24))!=(K[c|0]|K[c+1|0]<<8|(K[c+2|0]<<16|K[c+3|0]<<24))){continue}}if(d&4){continue}c=J[a+120>>2];d=K[c+7|0]<<8|K[c+6|0]<<16|K[c+8|0];e=c+12|0;c=K[c+11|0]|(K[c+10|0]<<8|K[c+9|0]<<16);hj((d+b|0)+12|0,e,c);e=K[g+532|0];if(e&2){i=b+f|0;b=d&7;na:{oa:{if(!b){b=c;break oa}e=d>>>3|0;f=8-b|0;pa:{if(f>>>0>=c>>>0){if(!c){break na}e=e+i|0;b=K[e|0]|1<>>0<=f>>>0){break na}}c=b&7;if(c){e=i+(b+d>>>3|0)|0;f=K[e|0]|1<<8-c;sa:{if((c|0)==1){break sa}f=f|1<<9-c;if((c|0)==2){break sa}f=f|1<<10-c;if((c|0)==3){break sa}f=f|1<<11-c;if((c|0)==4){break sa}f=f|1<<12-c;if((c|0)==5){break sa}f=f|1<<13-c;if((c|0)==6){break sa}f=f|1<<14-c}H[e|0]=f}ij(i+(d>>>3|0)|0,255,b>>>3|0)}f=K[g+532|0]&-5;b=0;c=j>>>3|0;ta:{ua:{va:{if(j>>>0>=8){while(1){if(K[b+i|0]!=255){break va}b=b+1|0;if((c|0)!=(b|0)){continue}break}}b=j&7;if(!b){break ua}d=-1;c=H[c+i|0];wa:{if((c|0)>=0){break wa}if((b|0)==1){break ua}c=c&255;if(!(c&64)){break wa}if((b|0)==2){break ua}if(!(c&32)){break wa}if((b|0)==3){break ua}if(!(c&16)){break wa}if((b|0)==4){break ua}if(!(c&8)){break wa}if((b|0)==5){break ua}if(!(c&4)){break wa}d=0;if((b|0)==6){break wa}d=c&2?0:-1}break ta}d=-1;break ta}d=0}H[g+532|0]=!d<<2|f}else{H[g+532|0]=e|4}continue}}J[a+176>>2]=0}return b}J[a+208>>2]=21;J[a+212>>2]=2;H[J[a+204>>2]]=2;H[J[a+204>>2]+1|0]=20;Nm(a,1);return-29056}function NF(a,b,c,d,e){var f=0,g=0,h=0,i=0,j=0,k=0,l=0,m=0,n=0,o=0,p=0,q=0,r=0,s=0,t=0;f=Ui-16|0;Ui=f;a:{b:while(1){l=b-16|0;p=b-48|0;q=b-32|0;while(1){c:{d:{e:{f:{g:{g=a;i=b-a>>4;switch(i|0){case 0:case 1:break a;case 5:break c;case 4:break e;case 3:break f;case 2:break g;default:break d}}a=b-16|0;b=J[a>>2];c=J[a+4>>2];d=J[g+4>>2];if((c|0)==(d|0)&M[g>>2]<=b>>>0|c>>>0>d>>>0){break a}b=g+8|0;c=J[b+4>>2];J[f+8>>2]=J[b>>2];J[f+12>>2]=c;b=J[g+4>>2];J[f>>2]=J[g>>2];J[f+4>>2]=b;b=J[a+12>>2];J[g+8>>2]=J[a+8>>2];J[g+12>>2]=b;b=J[a+4>>2];J[g>>2]=J[a>>2];J[g+4>>2]=b;b=J[f+12>>2];J[a+8>>2]=J[f+8>>2];J[a+12>>2]=b;b=J[f+4>>2];J[a>>2]=J[f>>2];J[a+4>>2]=b;break a}c=g+16|0;d=b-16|0;a=J[d>>2];e=J[d+4>>2];i=J[g+20>>2];h=J[g+4>>2];b=J[g+16>>2];if((i|0)==(h|0)&b>>>0>=M[g>>2]|h>>>0>>0){if((e|0)==(i|0)&a>>>0>=b>>>0|e>>>0>i>>>0){break a}a=J[c+12>>2];J[f+8>>2]=J[c+8>>2];J[f+12>>2]=a;a=J[c+4>>2];J[f>>2]=J[c>>2];J[f+4>>2]=a;a=J[d+12>>2];J[c+8>>2]=J[d+8>>2];J[c+12>>2]=a;a=J[d+4>>2];J[c>>2]=J[d>>2];J[c+4>>2]=a;a=J[f+12>>2];J[d+8>>2]=J[f+8>>2];J[d+12>>2]=a;a=J[f+4>>2];J[d>>2]=J[f>>2];J[d+4>>2]=a;a=J[g+20>>2];b=J[g+4>>2];if((a|0)==(b|0)&M[g+16>>2]>=M[g>>2]|a>>>0>b>>>0){break a}a=g+8|0;b=J[a+4>>2];J[f+8>>2]=J[a>>2];J[f+12>>2]=b;a=J[g+4>>2];J[f>>2]=J[g>>2];J[f+4>>2]=a;a=J[c+12>>2];J[g+8>>2]=J[c+8>>2];J[g+12>>2]=a;a=J[c+4>>2];J[g>>2]=J[c>>2];J[g+4>>2]=a;a=J[f+12>>2];J[c+8>>2]=J[f+8>>2];J[c+12>>2]=a;a=J[f+4>>2];J[c>>2]=J[f>>2];J[c+4>>2]=a;break a}if((e|0)==(i|0)&a>>>0>>0|e>>>0>>0){a=g+8|0;b=J[a+4>>2];J[f+8>>2]=J[a>>2];J[f+12>>2]=b;a=J[g+4>>2];J[f>>2]=J[g>>2];J[f+4>>2]=a;a=J[d+12>>2];J[g+8>>2]=J[d+8>>2];J[g+12>>2]=a;a=J[d+4>>2];J[g>>2]=J[d>>2];J[g+4>>2]=a;a=J[f+12>>2];J[d+8>>2]=J[f+8>>2];J[d+12>>2]=a;a=J[f+4>>2];J[d>>2]=J[f>>2];J[d+4>>2]=a;break a}a=g+8|0;b=J[a+4>>2];J[f+8>>2]=J[a>>2];J[f+12>>2]=b;a=J[g+4>>2];J[f>>2]=J[g>>2];J[f+4>>2]=a;a=J[c+12>>2];J[g+8>>2]=J[c+8>>2];J[g+12>>2]=a;a=J[c+4>>2];J[g>>2]=J[c>>2];J[g+4>>2]=a;a=J[f+12>>2];J[c+8>>2]=J[f+8>>2];J[c+12>>2]=a;a=J[f+4>>2];J[c>>2]=J[f>>2];J[c+4>>2]=a;a=J[d+4>>2];b=J[g+20>>2];if((a|0)==(b|0)&M[d>>2]>=M[g+16>>2]|a>>>0>b>>>0){break a}a=J[c+12>>2];J[f+8>>2]=J[c+8>>2];J[f+12>>2]=a;a=J[c+4>>2];J[f>>2]=J[c>>2];J[f+4>>2]=a;a=J[d+12>>2];J[c+8>>2]=J[d+8>>2];J[c+12>>2]=a;a=J[d+4>>2];J[c>>2]=J[d>>2];J[c+4>>2]=a;a=J[f+12>>2];J[d+8>>2]=J[f+8>>2];J[d+12>>2]=a;a=J[f+4>>2];J[d>>2]=J[f>>2];J[d+4>>2]=a;break a}e=b-16|0;d=g+32|0;c=g+16|0;a=J[g+32>>2];i=J[g+36>>2];h=J[g+20>>2];k=J[g+4>>2];b=J[g+16>>2];h:{if((h|0)==(k|0)&b>>>0>=M[g>>2]|h>>>0>k>>>0){if((h|0)==(i|0)&a>>>0>=b>>>0|h>>>0>>0){break h}a=J[c+12>>2];J[f+8>>2]=J[c+8>>2];J[f+12>>2]=a;a=J[c+4>>2];J[f>>2]=J[c>>2];J[f+4>>2]=a;a=J[d+12>>2];J[c+8>>2]=J[d+8>>2];J[c+12>>2]=a;a=J[d+4>>2];J[c>>2]=J[d>>2];J[c+4>>2]=a;a=J[f+12>>2];J[d+8>>2]=J[f+8>>2];J[d+12>>2]=a;a=J[f+4>>2];J[d>>2]=J[f>>2];J[d+4>>2]=a;a=J[g+20>>2];b=J[g+4>>2];if((a|0)==(b|0)&M[g+16>>2]>=M[g>>2]|a>>>0>b>>>0){break h}a=g+8|0;b=J[a+4>>2];J[f+8>>2]=J[a>>2];J[f+12>>2]=b;a=J[g+4>>2];J[f>>2]=J[g>>2];J[f+4>>2]=a;a=J[c+12>>2];J[g+8>>2]=J[c+8>>2];J[g+12>>2]=a;a=J[c+4>>2];J[g>>2]=J[c>>2];J[g+4>>2]=a;a=J[f+12>>2];J[c+8>>2]=J[f+8>>2];J[c+12>>2]=a;a=J[f+4>>2];J[c>>2]=J[f>>2];J[c+4>>2]=a;break h}if((h|0)==(i|0)&a>>>0>>0|h>>>0>i>>>0){a=g+8|0;b=J[a+4>>2];J[f+8>>2]=J[a>>2];J[f+12>>2]=b;a=J[g+4>>2];J[f>>2]=J[g>>2];J[f+4>>2]=a;a=J[d+12>>2];J[g+8>>2]=J[d+8>>2];J[g+12>>2]=a;a=J[d+4>>2];J[g>>2]=J[d>>2];J[g+4>>2]=a;a=J[f+12>>2];J[d+8>>2]=J[f+8>>2];J[d+12>>2]=a;a=J[f+4>>2];J[d>>2]=J[f>>2];J[d+4>>2]=a;break h}b=g+8|0;h=J[b+4>>2];J[f+8>>2]=J[b>>2];J[f+12>>2]=h;b=J[g+4>>2];J[f>>2]=J[g>>2];J[f+4>>2]=b;b=J[c+12>>2];J[g+8>>2]=J[c+8>>2];J[g+12>>2]=b;b=J[c+4>>2];J[g>>2]=J[c>>2];J[g+4>>2]=b;b=J[f+12>>2];J[c+8>>2]=J[f+8>>2];J[c+12>>2]=b;b=J[f+4>>2];J[c>>2]=J[f>>2];J[c+4>>2]=b;b=J[g+20>>2];if((b|0)==(i|0)&M[g+16>>2]<=a>>>0|b>>>0>>0){break h}a=J[c+12>>2];J[f+8>>2]=J[c+8>>2];J[f+12>>2]=a;a=J[c+4>>2];J[f>>2]=J[c>>2];J[f+4>>2]=a;a=J[d+12>>2];J[c+8>>2]=J[d+8>>2];J[c+12>>2]=a;a=J[d+4>>2];J[c>>2]=J[d>>2];J[c+4>>2]=a;a=J[f+12>>2];J[d+8>>2]=J[f+8>>2];J[d+12>>2]=a;a=J[f+4>>2];J[d>>2]=J[f>>2];J[d+4>>2]=a}a=J[e+4>>2];b=J[d+4>>2];if((a|0)==(b|0)&M[e>>2]>=M[d>>2]|a>>>0>b>>>0){break a}a=J[d+12>>2];J[f+8>>2]=J[d+8>>2];J[f+12>>2]=a;a=J[d+4>>2];J[f>>2]=J[d>>2];J[f+4>>2]=a;a=J[e+12>>2];J[d+8>>2]=J[e+8>>2];J[d+12>>2]=a;a=J[e+4>>2];J[d>>2]=J[e>>2];J[d+4>>2]=a;a=J[f+12>>2];J[e+8>>2]=J[f+8>>2];J[e+12>>2]=a;a=J[f+4>>2];J[e>>2]=J[f>>2];J[e+4>>2]=a;a=J[d+4>>2];b=J[c+4>>2];if((a|0)==(b|0)&M[d>>2]>=M[c>>2]|a>>>0>b>>>0){break a}a=J[c+12>>2];J[f+8>>2]=J[c+8>>2];J[f+12>>2]=a;a=J[c+4>>2];J[f>>2]=J[c>>2];J[f+4>>2]=a;a=J[d+12>>2];J[c+8>>2]=J[d+8>>2];J[c+12>>2]=a;a=J[d+4>>2];J[c>>2]=J[d>>2];J[c+4>>2]=a;a=J[f+12>>2];J[d+8>>2]=J[f+8>>2];J[d+12>>2]=a;a=J[f+4>>2];J[d>>2]=J[f>>2];J[d+4>>2]=a;a=J[g+20>>2];b=J[g+4>>2];if((a|0)==(b|0)&M[g+16>>2]>=M[g>>2]|a>>>0>b>>>0){break a}a=g+8|0;b=J[a+4>>2];J[f+8>>2]=J[a>>2];J[f+12>>2]=b;a=J[g+4>>2];J[f>>2]=J[g>>2];J[f+4>>2]=a;a=J[c+12>>2];J[g+8>>2]=J[c+8>>2];J[g+12>>2]=a;a=J[c+4>>2];J[g>>2]=J[c>>2];J[g+4>>2]=a;a=J[f+12>>2];J[c+8>>2]=J[f+8>>2];J[c+12>>2]=a;a=J[f+4>>2];J[c>>2]=J[f>>2];J[c+4>>2]=a;break a}if((i|0)<=23){a=g+16|0;c=(b|0)==(g|0)|(b|0)==(a|0);if(e&1){if(c){break a}c=g;while(1){d=a;k=J[c+20>>2];i=k;h=J[c+4>>2];e=J[c+16>>2];if((i|0)==(h|0)&e>>>0>2]|h>>>0>i>>>0){h=J[c+24>>2];j=J[c+28>>2];i=a;while(1){i:{a=c;c=J[a+4>>2];J[i>>2]=J[a>>2];J[i+4>>2]=c;c=J[a+12>>2];J[i+8>>2]=J[a+8>>2];J[i+12>>2]=c;if((a|0)==(g|0)){a=g;break i}i=a;c=a-16|0;m=J[c>>2];n=J[c+4>>2];if((n|0)==(k|0)&e>>>0>>0|k>>>0>>0){continue}}break}J[a+8>>2]=h;J[a+12>>2]=j;J[a>>2]=e;J[a+4>>2]=k}c=d;a=c+16|0;if((b|0)!=(a|0)){continue}break}break a}if(c){break a}while(1){e=J[g+20>>2];d=e;i=J[g+4>>2];c=J[g+16>>2];if((d|0)==(i|0)&c>>>0>2]|d>>>0>>0){d=J[g+24>>2];h=J[g+28>>2];i=a;while(1){k=J[g+4>>2];J[i>>2]=J[g>>2];J[i+4>>2]=k;k=J[g+12>>2];J[i+8>>2]=J[g+8>>2];J[i+12>>2]=k;i=g;g=g-16|0;k=J[g>>2];j=J[g+4>>2];if((j|0)==(e|0)&c>>>0>>0|e>>>0>>0){continue}break}J[i+8>>2]=d;J[i+12>>2]=h;J[i>>2]=c;J[i+4>>2]=e}g=a;a=a+16|0;if((b|0)!=(a|0)){continue}break}break a}if(!d){if((b|0)==(g|0)){break a}pO(g,b,b);break a}h=(i>>>1<<4)+g|0;a=J[l>>2];k=J[l+4>>2];j:{if(i>>>0>=129){j=J[h+4>>2];m=J[g+4>>2];i=J[h>>2];k:{if((j|0)==(m|0)&i>>>0>=M[g>>2]|j>>>0>m>>>0){if((j|0)==(k|0)&a>>>0>=i>>>0|j>>>0>>0){break k}a=J[h+12>>2];J[f+8>>2]=J[h+8>>2];J[f+12>>2]=a;a=J[h+4>>2];J[f>>2]=J[h>>2];J[f+4>>2]=a;a=J[l+12>>2];J[h+8>>2]=J[l+8>>2];J[h+12>>2]=a;a=J[l+4>>2];J[h>>2]=J[l>>2];J[h+4>>2]=a;a=J[f+12>>2];J[l+8>>2]=J[f+8>>2];J[l+12>>2]=a;a=J[f+4>>2];J[l>>2]=J[f>>2];J[l+4>>2]=a;a=J[h+4>>2];i=J[g+4>>2];if((a|0)==(i|0)&M[h>>2]>=M[g>>2]|a>>>0>i>>>0){break k}a=g+8|0;i=J[a+4>>2];J[f+8>>2]=J[a>>2];J[f+12>>2]=i;a=J[g+4>>2];J[f>>2]=J[g>>2];J[f+4>>2]=a;a=J[h+12>>2];J[g+8>>2]=J[h+8>>2];J[g+12>>2]=a;a=J[h+4>>2];J[g>>2]=J[h>>2];J[g+4>>2]=a;a=J[f+12>>2];J[h+8>>2]=J[f+8>>2];J[h+12>>2]=a;a=J[f+4>>2];J[h>>2]=J[f>>2];J[h+4>>2]=a;break k}if((j|0)==(k|0)&a>>>0>>0|j>>>0>k>>>0){a=g+8|0;i=J[a+4>>2];J[f+8>>2]=J[a>>2];J[f+12>>2]=i;a=J[g+4>>2];J[f>>2]=J[g>>2];J[f+4>>2]=a;a=J[l+12>>2];J[g+8>>2]=J[l+8>>2];J[g+12>>2]=a;a=J[l+4>>2];J[g>>2]=J[l>>2];J[g+4>>2]=a;a=J[f+12>>2];J[l+8>>2]=J[f+8>>2];J[l+12>>2]=a;a=J[f+4>>2];J[l>>2]=J[f>>2];J[l+4>>2]=a;break k}a=g+8|0;i=J[a+4>>2];J[f+8>>2]=J[a>>2];J[f+12>>2]=i;a=J[g+4>>2];J[f>>2]=J[g>>2];J[f+4>>2]=a;a=J[h+12>>2];J[g+8>>2]=J[h+8>>2];J[g+12>>2]=a;a=J[h+4>>2];J[g>>2]=J[h>>2];J[g+4>>2]=a;a=J[f+12>>2];J[h+8>>2]=J[f+8>>2];J[h+12>>2]=a;a=J[f+4>>2];J[h>>2]=J[f>>2];J[h+4>>2]=a;a=J[l+4>>2];i=J[h+4>>2];if((a|0)==(i|0)&M[l>>2]>=M[h>>2]|a>>>0>i>>>0){break k}a=J[h+12>>2];J[f+8>>2]=J[h+8>>2];J[f+12>>2]=a;a=J[h+4>>2];J[f>>2]=J[h>>2];J[f+4>>2]=a;a=J[l+12>>2];J[h+8>>2]=J[l+8>>2];J[h+12>>2]=a;a=J[l+4>>2];J[h>>2]=J[l>>2];J[h+4>>2]=a;a=J[f+12>>2];J[l+8>>2]=J[f+8>>2];J[l+12>>2]=a;a=J[f+4>>2];J[l>>2]=J[f>>2];J[l+4>>2]=a}j=g+16|0;a=J[q>>2];m=J[q+4>>2];k=h-16|0;i=J[k>>2];n=J[k+4>>2];o=J[g+20>>2];l:{if((n|0)==(o|0)&M[g+16>>2]<=i>>>0|n>>>0>o>>>0){if((m|0)==(n|0)&a>>>0>=i>>>0|m>>>0>n>>>0){break l}a=J[k+12>>2];J[f+8>>2]=J[k+8>>2];J[f+12>>2]=a;a=J[k+4>>2];J[f>>2]=J[k>>2];J[f+4>>2]=a;a=J[q+12>>2];J[k+8>>2]=J[q+8>>2];J[k+12>>2]=a;a=J[q+4>>2];J[k>>2]=J[q>>2];J[k+4>>2]=a;a=J[f+12>>2];J[q+8>>2]=J[f+8>>2];J[q+12>>2]=a;a=J[f+4>>2];J[q>>2]=J[f>>2];J[q+4>>2]=a;a=J[k+4>>2];i=J[j+4>>2];if((a|0)==(i|0)&M[k>>2]>=M[j>>2]|a>>>0>i>>>0){break l}a=J[j+12>>2];J[f+8>>2]=J[j+8>>2];J[f+12>>2]=a;a=J[j+4>>2];J[f>>2]=J[j>>2];J[f+4>>2]=a;a=J[k+12>>2];J[j+8>>2]=J[k+8>>2];J[j+12>>2]=a;a=J[k+4>>2];J[j>>2]=J[k>>2];J[j+4>>2]=a;a=J[f+12>>2];J[k+8>>2]=J[f+8>>2];J[k+12>>2]=a;a=J[f+4>>2];J[k>>2]=J[f>>2];J[k+4>>2]=a;break l}if((m|0)==(n|0)&a>>>0>>0|m>>>0>>0){a=J[j+12>>2];J[f+8>>2]=J[j+8>>2];J[f+12>>2]=a;a=J[j+4>>2];J[f>>2]=J[j>>2];J[f+4>>2]=a;a=J[q+12>>2];J[j+8>>2]=J[q+8>>2];J[j+12>>2]=a;a=J[q+4>>2];J[j>>2]=J[q>>2];J[j+4>>2]=a;a=J[f+12>>2];J[q+8>>2]=J[f+8>>2];J[q+12>>2]=a;a=J[f+4>>2];J[q>>2]=J[f>>2];J[q+4>>2]=a;break l}a=J[j+12>>2];J[f+8>>2]=J[j+8>>2];J[f+12>>2]=a;a=J[j+4>>2];J[f>>2]=J[j>>2];J[f+4>>2]=a;a=J[k+12>>2];J[j+8>>2]=J[k+8>>2];J[j+12>>2]=a;a=J[k+4>>2];J[j>>2]=J[k>>2];J[j+4>>2]=a;a=J[f+12>>2];J[k+8>>2]=J[f+8>>2];J[k+12>>2]=a;a=J[f+4>>2];J[k>>2]=J[f>>2];J[k+4>>2]=a;a=J[q+4>>2];i=J[k+4>>2];if((a|0)==(i|0)&M[q>>2]>=M[k>>2]|a>>>0>i>>>0){break l}a=J[k+12>>2];J[f+8>>2]=J[k+8>>2];J[f+12>>2]=a;a=J[k+4>>2];J[f>>2]=J[k>>2];J[f+4>>2]=a;a=J[q+12>>2];J[k+8>>2]=J[q+8>>2];J[k+12>>2]=a;a=J[q+4>>2];J[k>>2]=J[q>>2];J[k+4>>2]=a;a=J[f+12>>2];J[q+8>>2]=J[f+8>>2];J[q+12>>2]=a;a=J[f+4>>2];J[q>>2]=J[f>>2];J[q+4>>2]=a}m=g+32|0;a=J[p>>2];n=J[p+4>>2];j=h+16|0;i=J[j>>2];o=J[j+4>>2];s=J[g+36>>2];m:{if((o|0)==(s|0)&M[g+32>>2]<=i>>>0|o>>>0>s>>>0){if((n|0)==(o|0)&a>>>0>=i>>>0|n>>>0>o>>>0){break m}a=J[j+12>>2];J[f+8>>2]=J[j+8>>2];J[f+12>>2]=a;a=J[j+4>>2];J[f>>2]=J[j>>2];J[f+4>>2]=a;a=J[p+12>>2];J[j+8>>2]=J[p+8>>2];J[j+12>>2]=a;a=J[p+4>>2];J[j>>2]=J[p>>2];J[j+4>>2]=a;a=J[f+12>>2];J[p+8>>2]=J[f+8>>2];J[p+12>>2]=a;a=J[f+4>>2];J[p>>2]=J[f>>2];J[p+4>>2]=a;a=J[j+4>>2];i=J[m+4>>2];if((a|0)==(i|0)&M[j>>2]>=M[m>>2]|a>>>0>i>>>0){break m}a=J[m+12>>2];J[f+8>>2]=J[m+8>>2];J[f+12>>2]=a;a=J[m+4>>2];J[f>>2]=J[m>>2];J[f+4>>2]=a;a=J[j+12>>2];J[m+8>>2]=J[j+8>>2];J[m+12>>2]=a;a=J[j+4>>2];J[m>>2]=J[j>>2];J[m+4>>2]=a;a=J[f+12>>2];J[j+8>>2]=J[f+8>>2];J[j+12>>2]=a;a=J[f+4>>2];J[j>>2]=J[f>>2];J[j+4>>2]=a;break m}if((n|0)==(o|0)&a>>>0>>0|n>>>0>>0){a=J[m+12>>2];J[f+8>>2]=J[m+8>>2];J[f+12>>2]=a;a=J[m+4>>2];J[f>>2]=J[m>>2];J[f+4>>2]=a;a=J[p+12>>2];J[m+8>>2]=J[p+8>>2];J[m+12>>2]=a;a=J[p+4>>2];J[m>>2]=J[p>>2];J[m+4>>2]=a;a=J[f+12>>2];J[p+8>>2]=J[f+8>>2];J[p+12>>2]=a;a=J[f+4>>2];J[p>>2]=J[f>>2];J[p+4>>2]=a;break m}a=J[m+12>>2];J[f+8>>2]=J[m+8>>2];J[f+12>>2]=a;a=J[m+4>>2];J[f>>2]=J[m>>2];J[f+4>>2]=a;a=J[j+12>>2];J[m+8>>2]=J[j+8>>2];J[m+12>>2]=a;a=J[j+4>>2];J[m>>2]=J[j>>2];J[m+4>>2]=a;a=J[f+12>>2];J[j+8>>2]=J[f+8>>2];J[j+12>>2]=a;a=J[f+4>>2];J[j>>2]=J[f>>2];J[j+4>>2]=a;a=J[p+4>>2];i=J[j+4>>2];if((a|0)==(i|0)&M[p>>2]>=M[j>>2]|a>>>0>i>>>0){break m}a=J[j+12>>2];J[f+8>>2]=J[j+8>>2];J[f+12>>2]=a;a=J[j+4>>2];J[f>>2]=J[j>>2];J[f+4>>2]=a;a=J[p+12>>2];J[j+8>>2]=J[p+8>>2];J[j+12>>2]=a;a=J[p+4>>2];J[j>>2]=J[p>>2];J[j+4>>2]=a;a=J[f+12>>2];J[p+8>>2]=J[f+8>>2];J[p+12>>2]=a;a=J[f+4>>2];J[p>>2]=J[f>>2];J[p+4>>2]=a}a=J[j>>2];m=J[j+4>>2];n=J[h+4>>2];o=J[k+4>>2];i=J[h>>2];n:{if((n|0)==(o|0)&i>>>0>=M[k>>2]|n>>>0>o>>>0){if((m|0)==(n|0)&a>>>0>=i>>>0|m>>>0>n>>>0){break n}a=J[h+12>>2];J[f+8>>2]=J[h+8>>2];J[f+12>>2]=a;a=J[h+4>>2];J[f>>2]=J[h>>2];J[f+4>>2]=a;a=J[j+12>>2];J[h+8>>2]=J[j+8>>2];J[h+12>>2]=a;a=J[j+4>>2];J[h>>2]=J[j>>2];J[h+4>>2]=a;a=J[f+12>>2];J[j+8>>2]=J[f+8>>2];J[j+12>>2]=a;a=J[f+4>>2];J[j>>2]=J[f>>2];J[j+4>>2]=a;a=J[h+4>>2];i=J[k+4>>2];if((a|0)==(i|0)&M[h>>2]>=M[k>>2]|a>>>0>i>>>0){break n}a=J[k+12>>2];J[f+8>>2]=J[k+8>>2];J[f+12>>2]=a;a=J[k+4>>2];J[f>>2]=J[k>>2];J[f+4>>2]=a;a=J[h+12>>2];J[k+8>>2]=J[h+8>>2];J[k+12>>2]=a;a=J[h+4>>2];J[k>>2]=J[h>>2];J[k+4>>2]=a;a=J[f+12>>2];J[h+8>>2]=J[f+8>>2];J[h+12>>2]=a;a=J[f+4>>2];J[h>>2]=J[f>>2];J[h+4>>2]=a;break n}if((m|0)==(n|0)&a>>>0>>0|m>>>0>>0){a=J[k+12>>2];J[f+8>>2]=J[k+8>>2];J[f+12>>2]=a;a=J[k+4>>2];J[f>>2]=J[k>>2];J[f+4>>2]=a;a=J[j+12>>2];J[k+8>>2]=J[j+8>>2];J[k+12>>2]=a;a=J[j+4>>2];J[k>>2]=J[j>>2];J[k+4>>2]=a;a=J[f+12>>2];J[j+8>>2]=J[f+8>>2];J[j+12>>2]=a;a=J[f+4>>2];J[j>>2]=J[f>>2];J[j+4>>2]=a;break n}a=J[k+12>>2];J[f+8>>2]=J[k+8>>2];J[f+12>>2]=a;a=J[k+4>>2];J[f>>2]=J[k>>2];J[f+4>>2]=a;a=J[h+12>>2];J[k+8>>2]=J[h+8>>2];J[k+12>>2]=a;a=J[h+4>>2];J[k>>2]=J[h>>2];J[k+4>>2]=a;a=J[f+12>>2];J[h+8>>2]=J[f+8>>2];J[h+12>>2]=a;a=J[f+4>>2];J[h>>2]=J[f>>2];J[h+4>>2]=a;a=J[j+4>>2];i=J[h+4>>2];if((a|0)==(i|0)&M[j>>2]>=M[h>>2]|a>>>0>i>>>0){break n}a=J[h+12>>2];J[f+8>>2]=J[h+8>>2];J[f+12>>2]=a;a=J[h+4>>2];J[f>>2]=J[h>>2];J[f+4>>2]=a;a=J[j+12>>2];J[h+8>>2]=J[j+8>>2];J[h+12>>2]=a;a=J[j+4>>2];J[h>>2]=J[j>>2];J[h+4>>2]=a;a=J[f+12>>2];J[j+8>>2]=J[f+8>>2];J[j+12>>2]=a;a=J[f+4>>2];J[j>>2]=J[f>>2];J[j+4>>2]=a}a=g+8|0;i=J[a+4>>2];J[f+8>>2]=J[a>>2];J[f+12>>2]=i;a=J[g+4>>2];J[f>>2]=J[g>>2];J[f+4>>2]=a;a=J[h+12>>2];J[g+8>>2]=J[h+8>>2];J[g+12>>2]=a;a=J[h+4>>2];J[g>>2]=J[h>>2];J[g+4>>2]=a;a=J[f+12>>2];J[h+8>>2]=J[f+8>>2];J[h+12>>2]=a;a=J[f+4>>2];J[h>>2]=J[f>>2];J[h+4>>2]=a;break j}j=J[g+4>>2];m=J[h+4>>2];i=J[g>>2];if((j|0)==(m|0)&i>>>0>=M[h>>2]|j>>>0>m>>>0){if((j|0)==(k|0)&a>>>0>=i>>>0|j>>>0>>0){break j}a=g+8|0;i=J[a+4>>2];J[f+8>>2]=J[a>>2];J[f+12>>2]=i;a=J[g+4>>2];J[f>>2]=J[g>>2];J[f+4>>2]=a;a=J[l+12>>2];J[g+8>>2]=J[l+8>>2];J[g+12>>2]=a;a=J[l+4>>2];J[g>>2]=J[l>>2];J[g+4>>2]=a;a=J[f+12>>2];J[l+8>>2]=J[f+8>>2];J[l+12>>2]=a;a=J[f+4>>2];J[l>>2]=J[f>>2];J[l+4>>2]=a;a=J[g+4>>2];i=J[h+4>>2];if((a|0)==(i|0)&M[g>>2]>=M[h>>2]|a>>>0>i>>>0){break j}a=J[h+12>>2];J[f+8>>2]=J[h+8>>2];J[f+12>>2]=a;a=J[h+4>>2];J[f>>2]=J[h>>2];J[f+4>>2]=a;a=J[g+12>>2];J[h+8>>2]=J[g+8>>2];J[h+12>>2]=a;a=J[g+4>>2];J[h>>2]=J[g>>2];J[h+4>>2]=a;a=J[f+12>>2];J[g+8>>2]=J[f+8>>2];J[g+12>>2]=a;a=J[f+4>>2];J[g>>2]=J[f>>2];J[g+4>>2]=a;break j}if((j|0)==(k|0)&a>>>0>>0|j>>>0>k>>>0){a=J[h+12>>2];J[f+8>>2]=J[h+8>>2];J[f+12>>2]=a;a=J[h+4>>2];J[f>>2]=J[h>>2];J[f+4>>2]=a;a=J[l+12>>2];J[h+8>>2]=J[l+8>>2];J[h+12>>2]=a;a=J[l+4>>2];J[h>>2]=J[l>>2];J[h+4>>2]=a;a=J[f+12>>2];J[l+8>>2]=J[f+8>>2];J[l+12>>2]=a;a=J[f+4>>2];J[l>>2]=J[f>>2];J[l+4>>2]=a;break j}a=J[h+12>>2];J[f+8>>2]=J[h+8>>2];J[f+12>>2]=a;a=J[h+4>>2];J[f>>2]=J[h>>2];J[f+4>>2]=a;a=g+8|0;i=J[a+4>>2];J[h+8>>2]=J[a>>2];J[h+12>>2]=i;a=J[g+4>>2];J[h>>2]=J[g>>2];J[h+4>>2]=a;a=J[f+12>>2];J[g+8>>2]=J[f+8>>2];J[g+12>>2]=a;a=J[f+4>>2];J[g>>2]=J[f>>2];J[g+4>>2]=a;a=J[l+4>>2];i=J[g+4>>2];if((a|0)==(i|0)&M[l>>2]>=M[g>>2]|a>>>0>i>>>0){break j}a=J[g+12>>2];J[f+8>>2]=J[g+8>>2];J[f+12>>2]=a;a=J[g+4>>2];J[f>>2]=J[g>>2];J[f+4>>2]=a;a=J[l+12>>2];J[g+8>>2]=J[l+8>>2];J[g+12>>2]=a;a=J[l+4>>2];J[g>>2]=J[l>>2];J[g+4>>2]=a;a=J[f+12>>2];J[l+8>>2]=J[f+8>>2];J[l+12>>2]=a;a=J[f+4>>2];J[l>>2]=J[f>>2];J[l+4>>2]=a}d=d-1|0;j=J[g>>2];o=J[g+4>>2];o:{s=e&1;if(s){break o}a=g-16|0;i=J[a>>2];a=J[a+4>>2];if((o|0)==(a|0)&i>>>0>>0|a>>>0>>0){break o}i=g;a=g;h=J[l+4>>2];p:{if((o|0)==(h|0)&j>>>0>2]|h>>>0>o>>>0){while(1){e=i;h=J[i+16>>2];a=i+16|0;i=a;e=J[e+20>>2];if((e|0)==(o|0)&h>>>0<=j>>>0|e>>>0>>0){continue}break p}}while(1){a=a+16|0;if(b>>>0<=a>>>0){break p}e=J[a+4>>2];if((e|0)==(o|0)&M[a>>2]<=j>>>0|e>>>0>>0){continue}break}}i=b;if(i>>>0>a>>>0){while(1){i=i-16|0;h=J[i>>2];e=J[i+4>>2];if((e|0)==(o|0)&h>>>0>j>>>0|e>>>0>o>>>0){continue}break}}e=J[g+8>>2];k=J[g+12>>2];if(a>>>0>>0){while(1){h=a+8|0;m=J[h+4>>2];J[f+8>>2]=J[h>>2];J[f+12>>2]=m;h=J[a+4>>2];J[f>>2]=J[a>>2];J[f+4>>2]=h;h=i+8|0;m=J[h+4>>2];J[a+8>>2]=J[h>>2];J[a+12>>2]=m;h=J[i+4>>2];J[a>>2]=J[i>>2];J[a+4>>2]=h;h=J[f+12>>2];J[i+8>>2]=J[f+8>>2];J[i+12>>2]=h;h=J[f+4>>2];J[i>>2]=J[f>>2];J[i+4>>2]=h;while(1){h=a;m=J[a+16>>2];a=a+16|0;h=J[h+20>>2];if((h|0)==(o|0)&j>>>0>=m>>>0|h>>>0>>0){continue}break}while(1){i=i-16|0;h=J[i>>2];m=J[i+4>>2];if((m|0)==(o|0)&h>>>0>j>>>0|m>>>0>o>>>0){continue}break}if(a>>>0>>0){continue}break}}i=a-16|0;if((i|0)!=(g|0)){h=J[i+4>>2];J[g>>2]=J[i>>2];J[g+4>>2]=h;h=J[i+12>>2];J[g+8>>2]=J[i+8>>2];J[g+12>>2]=h}J[i>>2]=j;J[i+4>>2]=o;g=a-8|0;J[g>>2]=e;J[g+4>>2]=k;e=0;continue}m=J[g+8>>2];t=J[g+12>>2];h=g;while(1){a=h;h=a+16|0;k=J[a+20>>2];if((o|0)==(k|0)&j>>>0>M[a+16>>2]|k>>>0>>0){continue}break}k=b;q:{if((a|0)==(g|0)){while(1){if(h>>>0>=k>>>0){break q}k=k-16|0;a=k;i=J[a>>2];a=J[a+4>>2];if((o|0)==(a|0)&i>>>0>=j>>>0|a>>>0>o>>>0){continue}break q}}while(1){k=k-16|0;a=k;i=J[a>>2];a=J[a+4>>2];if((o|0)==(a|0)&i>>>0>=j>>>0|a>>>0>o>>>0){continue}break}}a=h;i=k;if(a>>>0>>0){while(1){n=a+8|0;r=J[n+4>>2];J[f+8>>2]=J[n>>2];J[f+12>>2]=r;n=J[a+4>>2];J[f>>2]=J[a>>2];J[f+4>>2]=n;n=i+8|0;r=J[n+4>>2];J[a+8>>2]=J[n>>2];J[a+12>>2]=r;n=J[i+4>>2];J[a>>2]=J[i>>2];J[a+4>>2]=n;n=J[f+12>>2];J[i+8>>2]=J[f+8>>2];J[i+12>>2]=n;n=J[f+4>>2];J[i>>2]=J[f>>2];J[i+4>>2]=n;while(1){n=a;r=J[a+16>>2];a=a+16|0;n=J[n+20>>2];if((n|0)==(o|0)&j>>>0>r>>>0|n>>>0>>0){continue}break}while(1){i=i-16|0;n=J[i>>2];r=J[i+4>>2];if((o|0)==(r|0)&j>>>0<=n>>>0|o>>>0>>0){continue}break}if(a>>>0>>0){continue}break}}i=a-16|0;if((i|0)!=(g|0)){n=J[i+4>>2];J[g>>2]=J[i>>2];J[g+4>>2]=n;n=J[i+12>>2];J[g+8>>2]=J[i+8>>2];J[g+12>>2]=n}J[i>>2]=j;J[i+4>>2]=o;j=a-8|0;J[j>>2]=m;J[j+4>>2]=t;if(h>>>0>=k>>>0){h=mz(g,i);if(mz(a,b)){b=i;a=g;if(!h){continue b}break a}if(h){continue}}NF(g,i,c,d,s);e=0;continue}break}break}Gz(g,g+16|0,g+32|0,g+48|0,b-16|0)}Ui=f+16|0}function MF(a,b,c,d,e){var f=0,g=0,h=0,i=0,j=0,k=0,l=0,m=0,n=0,o=0,p=0,q=0,r=0,s=0,t=0;f=Ui-16|0;Ui=f;a:{b:while(1){l=b-16|0;p=b-48|0;q=b-32|0;while(1){c:{d:{e:{f:{g:{g=a;i=b-a>>4;switch(i|0){case 0:case 1:break a;case 5:break c;case 4:break e;case 3:break f;case 2:break g;default:break d}}a=b-16|0;b=J[a>>2];c=J[a+4>>2];d=J[g+4>>2];if((c|0)==(d|0)&M[g>>2]<=b>>>0|c>>>0>d>>>0){break a}b=g+8|0;c=J[b+4>>2];J[f+8>>2]=J[b>>2];J[f+12>>2]=c;b=J[g+4>>2];J[f>>2]=J[g>>2];J[f+4>>2]=b;b=J[a+12>>2];J[g+8>>2]=J[a+8>>2];J[g+12>>2]=b;b=J[a+4>>2];J[g>>2]=J[a>>2];J[g+4>>2]=b;b=J[f+12>>2];J[a+8>>2]=J[f+8>>2];J[a+12>>2]=b;b=J[f+4>>2];J[a>>2]=J[f>>2];J[a+4>>2]=b;break a}c=g+16|0;d=b-16|0;a=J[d>>2];e=J[d+4>>2];i=J[g+20>>2];h=J[g+4>>2];b=J[g+16>>2];if((i|0)==(h|0)&b>>>0>=M[g>>2]|h>>>0>>0){if((e|0)==(i|0)&a>>>0>=b>>>0|e>>>0>i>>>0){break a}a=J[c+12>>2];J[f+8>>2]=J[c+8>>2];J[f+12>>2]=a;a=J[c+4>>2];J[f>>2]=J[c>>2];J[f+4>>2]=a;a=J[d+12>>2];J[c+8>>2]=J[d+8>>2];J[c+12>>2]=a;a=J[d+4>>2];J[c>>2]=J[d>>2];J[c+4>>2]=a;a=J[f+12>>2];J[d+8>>2]=J[f+8>>2];J[d+12>>2]=a;a=J[f+4>>2];J[d>>2]=J[f>>2];J[d+4>>2]=a;a=J[g+20>>2];b=J[g+4>>2];if((a|0)==(b|0)&M[g+16>>2]>=M[g>>2]|a>>>0>b>>>0){break a}a=g+8|0;b=J[a+4>>2];J[f+8>>2]=J[a>>2];J[f+12>>2]=b;a=J[g+4>>2];J[f>>2]=J[g>>2];J[f+4>>2]=a;a=J[c+12>>2];J[g+8>>2]=J[c+8>>2];J[g+12>>2]=a;a=J[c+4>>2];J[g>>2]=J[c>>2];J[g+4>>2]=a;a=J[f+12>>2];J[c+8>>2]=J[f+8>>2];J[c+12>>2]=a;a=J[f+4>>2];J[c>>2]=J[f>>2];J[c+4>>2]=a;break a}if((e|0)==(i|0)&a>>>0>>0|e>>>0>>0){a=g+8|0;b=J[a+4>>2];J[f+8>>2]=J[a>>2];J[f+12>>2]=b;a=J[g+4>>2];J[f>>2]=J[g>>2];J[f+4>>2]=a;a=J[d+12>>2];J[g+8>>2]=J[d+8>>2];J[g+12>>2]=a;a=J[d+4>>2];J[g>>2]=J[d>>2];J[g+4>>2]=a;a=J[f+12>>2];J[d+8>>2]=J[f+8>>2];J[d+12>>2]=a;a=J[f+4>>2];J[d>>2]=J[f>>2];J[d+4>>2]=a;break a}a=g+8|0;b=J[a+4>>2];J[f+8>>2]=J[a>>2];J[f+12>>2]=b;a=J[g+4>>2];J[f>>2]=J[g>>2];J[f+4>>2]=a;a=J[c+12>>2];J[g+8>>2]=J[c+8>>2];J[g+12>>2]=a;a=J[c+4>>2];J[g>>2]=J[c>>2];J[g+4>>2]=a;a=J[f+12>>2];J[c+8>>2]=J[f+8>>2];J[c+12>>2]=a;a=J[f+4>>2];J[c>>2]=J[f>>2];J[c+4>>2]=a;a=J[d+4>>2];b=J[g+20>>2];if((a|0)==(b|0)&M[d>>2]>=M[g+16>>2]|a>>>0>b>>>0){break a}a=J[c+12>>2];J[f+8>>2]=J[c+8>>2];J[f+12>>2]=a;a=J[c+4>>2];J[f>>2]=J[c>>2];J[f+4>>2]=a;a=J[d+12>>2];J[c+8>>2]=J[d+8>>2];J[c+12>>2]=a;a=J[d+4>>2];J[c>>2]=J[d>>2];J[c+4>>2]=a;a=J[f+12>>2];J[d+8>>2]=J[f+8>>2];J[d+12>>2]=a;a=J[f+4>>2];J[d>>2]=J[f>>2];J[d+4>>2]=a;break a}e=b-16|0;d=g+32|0;c=g+16|0;a=J[g+32>>2];i=J[g+36>>2];h=J[g+20>>2];k=J[g+4>>2];b=J[g+16>>2];h:{if((h|0)==(k|0)&b>>>0>=M[g>>2]|h>>>0>k>>>0){if((h|0)==(i|0)&a>>>0>=b>>>0|h>>>0>>0){break h}a=J[c+12>>2];J[f+8>>2]=J[c+8>>2];J[f+12>>2]=a;a=J[c+4>>2];J[f>>2]=J[c>>2];J[f+4>>2]=a;a=J[d+12>>2];J[c+8>>2]=J[d+8>>2];J[c+12>>2]=a;a=J[d+4>>2];J[c>>2]=J[d>>2];J[c+4>>2]=a;a=J[f+12>>2];J[d+8>>2]=J[f+8>>2];J[d+12>>2]=a;a=J[f+4>>2];J[d>>2]=J[f>>2];J[d+4>>2]=a;a=J[g+20>>2];b=J[g+4>>2];if((a|0)==(b|0)&M[g+16>>2]>=M[g>>2]|a>>>0>b>>>0){break h}a=g+8|0;b=J[a+4>>2];J[f+8>>2]=J[a>>2];J[f+12>>2]=b;a=J[g+4>>2];J[f>>2]=J[g>>2];J[f+4>>2]=a;a=J[c+12>>2];J[g+8>>2]=J[c+8>>2];J[g+12>>2]=a;a=J[c+4>>2];J[g>>2]=J[c>>2];J[g+4>>2]=a;a=J[f+12>>2];J[c+8>>2]=J[f+8>>2];J[c+12>>2]=a;a=J[f+4>>2];J[c>>2]=J[f>>2];J[c+4>>2]=a;break h}if((h|0)==(i|0)&a>>>0>>0|h>>>0>i>>>0){a=g+8|0;b=J[a+4>>2];J[f+8>>2]=J[a>>2];J[f+12>>2]=b;a=J[g+4>>2];J[f>>2]=J[g>>2];J[f+4>>2]=a;a=J[d+12>>2];J[g+8>>2]=J[d+8>>2];J[g+12>>2]=a;a=J[d+4>>2];J[g>>2]=J[d>>2];J[g+4>>2]=a;a=J[f+12>>2];J[d+8>>2]=J[f+8>>2];J[d+12>>2]=a;a=J[f+4>>2];J[d>>2]=J[f>>2];J[d+4>>2]=a;break h}b=g+8|0;h=J[b+4>>2];J[f+8>>2]=J[b>>2];J[f+12>>2]=h;b=J[g+4>>2];J[f>>2]=J[g>>2];J[f+4>>2]=b;b=J[c+12>>2];J[g+8>>2]=J[c+8>>2];J[g+12>>2]=b;b=J[c+4>>2];J[g>>2]=J[c>>2];J[g+4>>2]=b;b=J[f+12>>2];J[c+8>>2]=J[f+8>>2];J[c+12>>2]=b;b=J[f+4>>2];J[c>>2]=J[f>>2];J[c+4>>2]=b;b=J[g+20>>2];if((b|0)==(i|0)&M[g+16>>2]<=a>>>0|b>>>0>>0){break h}a=J[c+12>>2];J[f+8>>2]=J[c+8>>2];J[f+12>>2]=a;a=J[c+4>>2];J[f>>2]=J[c>>2];J[f+4>>2]=a;a=J[d+12>>2];J[c+8>>2]=J[d+8>>2];J[c+12>>2]=a;a=J[d+4>>2];J[c>>2]=J[d>>2];J[c+4>>2]=a;a=J[f+12>>2];J[d+8>>2]=J[f+8>>2];J[d+12>>2]=a;a=J[f+4>>2];J[d>>2]=J[f>>2];J[d+4>>2]=a}a=J[e+4>>2];b=J[d+4>>2];if((a|0)==(b|0)&M[e>>2]>=M[d>>2]|a>>>0>b>>>0){break a}a=J[d+12>>2];J[f+8>>2]=J[d+8>>2];J[f+12>>2]=a;a=J[d+4>>2];J[f>>2]=J[d>>2];J[f+4>>2]=a;a=J[e+12>>2];J[d+8>>2]=J[e+8>>2];J[d+12>>2]=a;a=J[e+4>>2];J[d>>2]=J[e>>2];J[d+4>>2]=a;a=J[f+12>>2];J[e+8>>2]=J[f+8>>2];J[e+12>>2]=a;a=J[f+4>>2];J[e>>2]=J[f>>2];J[e+4>>2]=a;a=J[d+4>>2];b=J[c+4>>2];if((a|0)==(b|0)&M[d>>2]>=M[c>>2]|a>>>0>b>>>0){break a}a=J[c+12>>2];J[f+8>>2]=J[c+8>>2];J[f+12>>2]=a;a=J[c+4>>2];J[f>>2]=J[c>>2];J[f+4>>2]=a;a=J[d+12>>2];J[c+8>>2]=J[d+8>>2];J[c+12>>2]=a;a=J[d+4>>2];J[c>>2]=J[d>>2];J[c+4>>2]=a;a=J[f+12>>2];J[d+8>>2]=J[f+8>>2];J[d+12>>2]=a;a=J[f+4>>2];J[d>>2]=J[f>>2];J[d+4>>2]=a;a=J[g+20>>2];b=J[g+4>>2];if((a|0)==(b|0)&M[g+16>>2]>=M[g>>2]|a>>>0>b>>>0){break a}a=g+8|0;b=J[a+4>>2];J[f+8>>2]=J[a>>2];J[f+12>>2]=b;a=J[g+4>>2];J[f>>2]=J[g>>2];J[f+4>>2]=a;a=J[c+12>>2];J[g+8>>2]=J[c+8>>2];J[g+12>>2]=a;a=J[c+4>>2];J[g>>2]=J[c>>2];J[g+4>>2]=a;a=J[f+12>>2];J[c+8>>2]=J[f+8>>2];J[c+12>>2]=a;a=J[f+4>>2];J[c>>2]=J[f>>2];J[c+4>>2]=a;break a}if((i|0)<=23){a=g+16|0;c=(b|0)==(g|0)|(b|0)==(a|0);if(e&1){if(c){break a}c=g;while(1){d=a;k=J[c+20>>2];i=k;h=J[c+4>>2];e=J[c+16>>2];if((i|0)==(h|0)&e>>>0>2]|h>>>0>i>>>0){h=J[c+24>>2];j=J[c+28>>2];i=a;while(1){i:{a=c;c=J[a+4>>2];J[i>>2]=J[a>>2];J[i+4>>2]=c;c=J[a+12>>2];J[i+8>>2]=J[a+8>>2];J[i+12>>2]=c;if((a|0)==(g|0)){a=g;break i}i=a;c=a-16|0;m=J[c>>2];n=J[c+4>>2];if((n|0)==(k|0)&e>>>0>>0|k>>>0>>0){continue}}break}J[a+8>>2]=h;J[a+12>>2]=j;J[a>>2]=e;J[a+4>>2]=k}c=d;a=c+16|0;if((b|0)!=(a|0)){continue}break}break a}if(c){break a}while(1){e=J[g+20>>2];d=e;i=J[g+4>>2];c=J[g+16>>2];if((d|0)==(i|0)&c>>>0>2]|d>>>0>>0){d=J[g+24>>2];h=J[g+28>>2];i=a;while(1){k=J[g+4>>2];J[i>>2]=J[g>>2];J[i+4>>2]=k;k=J[g+12>>2];J[i+8>>2]=J[g+8>>2];J[i+12>>2]=k;i=g;g=g-16|0;k=J[g>>2];j=J[g+4>>2];if((j|0)==(e|0)&c>>>0>>0|e>>>0>>0){continue}break}J[i+8>>2]=d;J[i+12>>2]=h;J[i>>2]=c;J[i+4>>2]=e}g=a;a=a+16|0;if((b|0)!=(a|0)){continue}break}break a}if(!d){if((b|0)==(g|0)){break a}pO(g,b,b);break a}h=(i>>>1<<4)+g|0;a=J[l>>2];k=J[l+4>>2];j:{if(i>>>0>=129){j=J[h+4>>2];m=J[g+4>>2];i=J[h>>2];k:{if((j|0)==(m|0)&i>>>0>=M[g>>2]|j>>>0>m>>>0){if((j|0)==(k|0)&a>>>0>=i>>>0|j>>>0>>0){break k}a=J[h+12>>2];J[f+8>>2]=J[h+8>>2];J[f+12>>2]=a;a=J[h+4>>2];J[f>>2]=J[h>>2];J[f+4>>2]=a;a=J[l+12>>2];J[h+8>>2]=J[l+8>>2];J[h+12>>2]=a;a=J[l+4>>2];J[h>>2]=J[l>>2];J[h+4>>2]=a;a=J[f+12>>2];J[l+8>>2]=J[f+8>>2];J[l+12>>2]=a;a=J[f+4>>2];J[l>>2]=J[f>>2];J[l+4>>2]=a;a=J[h+4>>2];i=J[g+4>>2];if((a|0)==(i|0)&M[h>>2]>=M[g>>2]|a>>>0>i>>>0){break k}a=g+8|0;i=J[a+4>>2];J[f+8>>2]=J[a>>2];J[f+12>>2]=i;a=J[g+4>>2];J[f>>2]=J[g>>2];J[f+4>>2]=a;a=J[h+12>>2];J[g+8>>2]=J[h+8>>2];J[g+12>>2]=a;a=J[h+4>>2];J[g>>2]=J[h>>2];J[g+4>>2]=a;a=J[f+12>>2];J[h+8>>2]=J[f+8>>2];J[h+12>>2]=a;a=J[f+4>>2];J[h>>2]=J[f>>2];J[h+4>>2]=a;break k}if((j|0)==(k|0)&a>>>0>>0|j>>>0>k>>>0){a=g+8|0;i=J[a+4>>2];J[f+8>>2]=J[a>>2];J[f+12>>2]=i;a=J[g+4>>2];J[f>>2]=J[g>>2];J[f+4>>2]=a;a=J[l+12>>2];J[g+8>>2]=J[l+8>>2];J[g+12>>2]=a;a=J[l+4>>2];J[g>>2]=J[l>>2];J[g+4>>2]=a;a=J[f+12>>2];J[l+8>>2]=J[f+8>>2];J[l+12>>2]=a;a=J[f+4>>2];J[l>>2]=J[f>>2];J[l+4>>2]=a;break k}a=g+8|0;i=J[a+4>>2];J[f+8>>2]=J[a>>2];J[f+12>>2]=i;a=J[g+4>>2];J[f>>2]=J[g>>2];J[f+4>>2]=a;a=J[h+12>>2];J[g+8>>2]=J[h+8>>2];J[g+12>>2]=a;a=J[h+4>>2];J[g>>2]=J[h>>2];J[g+4>>2]=a;a=J[f+12>>2];J[h+8>>2]=J[f+8>>2];J[h+12>>2]=a;a=J[f+4>>2];J[h>>2]=J[f>>2];J[h+4>>2]=a;a=J[l+4>>2];i=J[h+4>>2];if((a|0)==(i|0)&M[l>>2]>=M[h>>2]|a>>>0>i>>>0){break k}a=J[h+12>>2];J[f+8>>2]=J[h+8>>2];J[f+12>>2]=a;a=J[h+4>>2];J[f>>2]=J[h>>2];J[f+4>>2]=a;a=J[l+12>>2];J[h+8>>2]=J[l+8>>2];J[h+12>>2]=a;a=J[l+4>>2];J[h>>2]=J[l>>2];J[h+4>>2]=a;a=J[f+12>>2];J[l+8>>2]=J[f+8>>2];J[l+12>>2]=a;a=J[f+4>>2];J[l>>2]=J[f>>2];J[l+4>>2]=a}j=g+16|0;a=J[q>>2];m=J[q+4>>2];k=h-16|0;i=J[k>>2];n=J[k+4>>2];o=J[g+20>>2];l:{if((n|0)==(o|0)&M[g+16>>2]<=i>>>0|n>>>0>o>>>0){if((m|0)==(n|0)&a>>>0>=i>>>0|m>>>0>n>>>0){break l}a=J[k+12>>2];J[f+8>>2]=J[k+8>>2];J[f+12>>2]=a;a=J[k+4>>2];J[f>>2]=J[k>>2];J[f+4>>2]=a;a=J[q+12>>2];J[k+8>>2]=J[q+8>>2];J[k+12>>2]=a;a=J[q+4>>2];J[k>>2]=J[q>>2];J[k+4>>2]=a;a=J[f+12>>2];J[q+8>>2]=J[f+8>>2];J[q+12>>2]=a;a=J[f+4>>2];J[q>>2]=J[f>>2];J[q+4>>2]=a;a=J[k+4>>2];i=J[j+4>>2];if((a|0)==(i|0)&M[k>>2]>=M[j>>2]|a>>>0>i>>>0){break l}a=J[j+12>>2];J[f+8>>2]=J[j+8>>2];J[f+12>>2]=a;a=J[j+4>>2];J[f>>2]=J[j>>2];J[f+4>>2]=a;a=J[k+12>>2];J[j+8>>2]=J[k+8>>2];J[j+12>>2]=a;a=J[k+4>>2];J[j>>2]=J[k>>2];J[j+4>>2]=a;a=J[f+12>>2];J[k+8>>2]=J[f+8>>2];J[k+12>>2]=a;a=J[f+4>>2];J[k>>2]=J[f>>2];J[k+4>>2]=a;break l}if((m|0)==(n|0)&a>>>0>>0|m>>>0>>0){a=J[j+12>>2];J[f+8>>2]=J[j+8>>2];J[f+12>>2]=a;a=J[j+4>>2];J[f>>2]=J[j>>2];J[f+4>>2]=a;a=J[q+12>>2];J[j+8>>2]=J[q+8>>2];J[j+12>>2]=a;a=J[q+4>>2];J[j>>2]=J[q>>2];J[j+4>>2]=a;a=J[f+12>>2];J[q+8>>2]=J[f+8>>2];J[q+12>>2]=a;a=J[f+4>>2];J[q>>2]=J[f>>2];J[q+4>>2]=a;break l}a=J[j+12>>2];J[f+8>>2]=J[j+8>>2];J[f+12>>2]=a;a=J[j+4>>2];J[f>>2]=J[j>>2];J[f+4>>2]=a;a=J[k+12>>2];J[j+8>>2]=J[k+8>>2];J[j+12>>2]=a;a=J[k+4>>2];J[j>>2]=J[k>>2];J[j+4>>2]=a;a=J[f+12>>2];J[k+8>>2]=J[f+8>>2];J[k+12>>2]=a;a=J[f+4>>2];J[k>>2]=J[f>>2];J[k+4>>2]=a;a=J[q+4>>2];i=J[k+4>>2];if((a|0)==(i|0)&M[q>>2]>=M[k>>2]|a>>>0>i>>>0){break l}a=J[k+12>>2];J[f+8>>2]=J[k+8>>2];J[f+12>>2]=a;a=J[k+4>>2];J[f>>2]=J[k>>2];J[f+4>>2]=a;a=J[q+12>>2];J[k+8>>2]=J[q+8>>2];J[k+12>>2]=a;a=J[q+4>>2];J[k>>2]=J[q>>2];J[k+4>>2]=a;a=J[f+12>>2];J[q+8>>2]=J[f+8>>2];J[q+12>>2]=a;a=J[f+4>>2];J[q>>2]=J[f>>2];J[q+4>>2]=a}m=g+32|0;a=J[p>>2];n=J[p+4>>2];j=h+16|0;i=J[j>>2];o=J[j+4>>2];s=J[g+36>>2];m:{if((o|0)==(s|0)&M[g+32>>2]<=i>>>0|o>>>0>s>>>0){if((n|0)==(o|0)&a>>>0>=i>>>0|n>>>0>o>>>0){break m}a=J[j+12>>2];J[f+8>>2]=J[j+8>>2];J[f+12>>2]=a;a=J[j+4>>2];J[f>>2]=J[j>>2];J[f+4>>2]=a;a=J[p+12>>2];J[j+8>>2]=J[p+8>>2];J[j+12>>2]=a;a=J[p+4>>2];J[j>>2]=J[p>>2];J[j+4>>2]=a;a=J[f+12>>2];J[p+8>>2]=J[f+8>>2];J[p+12>>2]=a;a=J[f+4>>2];J[p>>2]=J[f>>2];J[p+4>>2]=a;a=J[j+4>>2];i=J[m+4>>2];if((a|0)==(i|0)&M[j>>2]>=M[m>>2]|a>>>0>i>>>0){break m}a=J[m+12>>2];J[f+8>>2]=J[m+8>>2];J[f+12>>2]=a;a=J[m+4>>2];J[f>>2]=J[m>>2];J[f+4>>2]=a;a=J[j+12>>2];J[m+8>>2]=J[j+8>>2];J[m+12>>2]=a;a=J[j+4>>2];J[m>>2]=J[j>>2];J[m+4>>2]=a;a=J[f+12>>2];J[j+8>>2]=J[f+8>>2];J[j+12>>2]=a;a=J[f+4>>2];J[j>>2]=J[f>>2];J[j+4>>2]=a;break m}if((n|0)==(o|0)&a>>>0>>0|n>>>0>>0){a=J[m+12>>2];J[f+8>>2]=J[m+8>>2];J[f+12>>2]=a;a=J[m+4>>2];J[f>>2]=J[m>>2];J[f+4>>2]=a;a=J[p+12>>2];J[m+8>>2]=J[p+8>>2];J[m+12>>2]=a;a=J[p+4>>2];J[m>>2]=J[p>>2];J[m+4>>2]=a;a=J[f+12>>2];J[p+8>>2]=J[f+8>>2];J[p+12>>2]=a;a=J[f+4>>2];J[p>>2]=J[f>>2];J[p+4>>2]=a;break m}a=J[m+12>>2];J[f+8>>2]=J[m+8>>2];J[f+12>>2]=a;a=J[m+4>>2];J[f>>2]=J[m>>2];J[f+4>>2]=a;a=J[j+12>>2];J[m+8>>2]=J[j+8>>2];J[m+12>>2]=a;a=J[j+4>>2];J[m>>2]=J[j>>2];J[m+4>>2]=a;a=J[f+12>>2];J[j+8>>2]=J[f+8>>2];J[j+12>>2]=a;a=J[f+4>>2];J[j>>2]=J[f>>2];J[j+4>>2]=a;a=J[p+4>>2];i=J[j+4>>2];if((a|0)==(i|0)&M[p>>2]>=M[j>>2]|a>>>0>i>>>0){break m}a=J[j+12>>2];J[f+8>>2]=J[j+8>>2];J[f+12>>2]=a;a=J[j+4>>2];J[f>>2]=J[j>>2];J[f+4>>2]=a;a=J[p+12>>2];J[j+8>>2]=J[p+8>>2];J[j+12>>2]=a;a=J[p+4>>2];J[j>>2]=J[p>>2];J[j+4>>2]=a;a=J[f+12>>2];J[p+8>>2]=J[f+8>>2];J[p+12>>2]=a;a=J[f+4>>2];J[p>>2]=J[f>>2];J[p+4>>2]=a}a=J[j>>2];m=J[j+4>>2];n=J[h+4>>2];o=J[k+4>>2];i=J[h>>2];n:{if((n|0)==(o|0)&i>>>0>=M[k>>2]|n>>>0>o>>>0){if((m|0)==(n|0)&a>>>0>=i>>>0|m>>>0>n>>>0){break n}a=J[h+12>>2];J[f+8>>2]=J[h+8>>2];J[f+12>>2]=a;a=J[h+4>>2];J[f>>2]=J[h>>2];J[f+4>>2]=a;a=J[j+12>>2];J[h+8>>2]=J[j+8>>2];J[h+12>>2]=a;a=J[j+4>>2];J[h>>2]=J[j>>2];J[h+4>>2]=a;a=J[f+12>>2];J[j+8>>2]=J[f+8>>2];J[j+12>>2]=a;a=J[f+4>>2];J[j>>2]=J[f>>2];J[j+4>>2]=a;a=J[h+4>>2];i=J[k+4>>2];if((a|0)==(i|0)&M[h>>2]>=M[k>>2]|a>>>0>i>>>0){break n}a=J[k+12>>2];J[f+8>>2]=J[k+8>>2];J[f+12>>2]=a;a=J[k+4>>2];J[f>>2]=J[k>>2];J[f+4>>2]=a;a=J[h+12>>2];J[k+8>>2]=J[h+8>>2];J[k+12>>2]=a;a=J[h+4>>2];J[k>>2]=J[h>>2];J[k+4>>2]=a;a=J[f+12>>2];J[h+8>>2]=J[f+8>>2];J[h+12>>2]=a;a=J[f+4>>2];J[h>>2]=J[f>>2];J[h+4>>2]=a;break n}if((m|0)==(n|0)&a>>>0>>0|m>>>0>>0){a=J[k+12>>2];J[f+8>>2]=J[k+8>>2];J[f+12>>2]=a;a=J[k+4>>2];J[f>>2]=J[k>>2];J[f+4>>2]=a;a=J[j+12>>2];J[k+8>>2]=J[j+8>>2];J[k+12>>2]=a;a=J[j+4>>2];J[k>>2]=J[j>>2];J[k+4>>2]=a;a=J[f+12>>2];J[j+8>>2]=J[f+8>>2];J[j+12>>2]=a;a=J[f+4>>2];J[j>>2]=J[f>>2];J[j+4>>2]=a;break n}a=J[k+12>>2];J[f+8>>2]=J[k+8>>2];J[f+12>>2]=a;a=J[k+4>>2];J[f>>2]=J[k>>2];J[f+4>>2]=a;a=J[h+12>>2];J[k+8>>2]=J[h+8>>2];J[k+12>>2]=a;a=J[h+4>>2];J[k>>2]=J[h>>2];J[k+4>>2]=a;a=J[f+12>>2];J[h+8>>2]=J[f+8>>2];J[h+12>>2]=a;a=J[f+4>>2];J[h>>2]=J[f>>2];J[h+4>>2]=a;a=J[j+4>>2];i=J[h+4>>2];if((a|0)==(i|0)&M[j>>2]>=M[h>>2]|a>>>0>i>>>0){break n}a=J[h+12>>2];J[f+8>>2]=J[h+8>>2];J[f+12>>2]=a;a=J[h+4>>2];J[f>>2]=J[h>>2];J[f+4>>2]=a;a=J[j+12>>2];J[h+8>>2]=J[j+8>>2];J[h+12>>2]=a;a=J[j+4>>2];J[h>>2]=J[j>>2];J[h+4>>2]=a;a=J[f+12>>2];J[j+8>>2]=J[f+8>>2];J[j+12>>2]=a;a=J[f+4>>2];J[j>>2]=J[f>>2];J[j+4>>2]=a}a=g+8|0;i=J[a+4>>2];J[f+8>>2]=J[a>>2];J[f+12>>2]=i;a=J[g+4>>2];J[f>>2]=J[g>>2];J[f+4>>2]=a;a=J[h+12>>2];J[g+8>>2]=J[h+8>>2];J[g+12>>2]=a;a=J[h+4>>2];J[g>>2]=J[h>>2];J[g+4>>2]=a;a=J[f+12>>2];J[h+8>>2]=J[f+8>>2];J[h+12>>2]=a;a=J[f+4>>2];J[h>>2]=J[f>>2];J[h+4>>2]=a;break j}j=J[g+4>>2];m=J[h+4>>2];i=J[g>>2];if((j|0)==(m|0)&i>>>0>=M[h>>2]|j>>>0>m>>>0){if((j|0)==(k|0)&a>>>0>=i>>>0|j>>>0>>0){break j}a=g+8|0;i=J[a+4>>2];J[f+8>>2]=J[a>>2];J[f+12>>2]=i;a=J[g+4>>2];J[f>>2]=J[g>>2];J[f+4>>2]=a;a=J[l+12>>2];J[g+8>>2]=J[l+8>>2];J[g+12>>2]=a;a=J[l+4>>2];J[g>>2]=J[l>>2];J[g+4>>2]=a;a=J[f+12>>2];J[l+8>>2]=J[f+8>>2];J[l+12>>2]=a;a=J[f+4>>2];J[l>>2]=J[f>>2];J[l+4>>2]=a;a=J[g+4>>2];i=J[h+4>>2];if((a|0)==(i|0)&M[g>>2]>=M[h>>2]|a>>>0>i>>>0){break j}a=J[h+12>>2];J[f+8>>2]=J[h+8>>2];J[f+12>>2]=a;a=J[h+4>>2];J[f>>2]=J[h>>2];J[f+4>>2]=a;a=J[g+12>>2];J[h+8>>2]=J[g+8>>2];J[h+12>>2]=a;a=J[g+4>>2];J[h>>2]=J[g>>2];J[h+4>>2]=a;a=J[f+12>>2];J[g+8>>2]=J[f+8>>2];J[g+12>>2]=a;a=J[f+4>>2];J[g>>2]=J[f>>2];J[g+4>>2]=a;break j}if((j|0)==(k|0)&a>>>0>>0|j>>>0>k>>>0){a=J[h+12>>2];J[f+8>>2]=J[h+8>>2];J[f+12>>2]=a;a=J[h+4>>2];J[f>>2]=J[h>>2];J[f+4>>2]=a;a=J[l+12>>2];J[h+8>>2]=J[l+8>>2];J[h+12>>2]=a;a=J[l+4>>2];J[h>>2]=J[l>>2];J[h+4>>2]=a;a=J[f+12>>2];J[l+8>>2]=J[f+8>>2];J[l+12>>2]=a;a=J[f+4>>2];J[l>>2]=J[f>>2];J[l+4>>2]=a;break j}a=J[h+12>>2];J[f+8>>2]=J[h+8>>2];J[f+12>>2]=a;a=J[h+4>>2];J[f>>2]=J[h>>2];J[f+4>>2]=a;a=g+8|0;i=J[a+4>>2];J[h+8>>2]=J[a>>2];J[h+12>>2]=i;a=J[g+4>>2];J[h>>2]=J[g>>2];J[h+4>>2]=a;a=J[f+12>>2];J[g+8>>2]=J[f+8>>2];J[g+12>>2]=a;a=J[f+4>>2];J[g>>2]=J[f>>2];J[g+4>>2]=a;a=J[l+4>>2];i=J[g+4>>2];if((a|0)==(i|0)&M[l>>2]>=M[g>>2]|a>>>0>i>>>0){break j}a=J[g+12>>2];J[f+8>>2]=J[g+8>>2];J[f+12>>2]=a;a=J[g+4>>2];J[f>>2]=J[g>>2];J[f+4>>2]=a;a=J[l+12>>2];J[g+8>>2]=J[l+8>>2];J[g+12>>2]=a;a=J[l+4>>2];J[g>>2]=J[l>>2];J[g+4>>2]=a;a=J[f+12>>2];J[l+8>>2]=J[f+8>>2];J[l+12>>2]=a;a=J[f+4>>2];J[l>>2]=J[f>>2];J[l+4>>2]=a}d=d-1|0;j=J[g>>2];o=J[g+4>>2];o:{s=e&1;if(s){break o}a=g-16|0;i=J[a>>2];a=J[a+4>>2];if((o|0)==(a|0)&i>>>0>>0|a>>>0>>0){break o}i=g;a=g;h=J[l+4>>2];p:{if((o|0)==(h|0)&j>>>0>2]|h>>>0>o>>>0){while(1){e=i;h=J[i+16>>2];a=i+16|0;i=a;e=J[e+20>>2];if((e|0)==(o|0)&h>>>0<=j>>>0|e>>>0>>0){continue}break p}}while(1){a=a+16|0;if(b>>>0<=a>>>0){break p}e=J[a+4>>2];if((e|0)==(o|0)&M[a>>2]<=j>>>0|e>>>0>>0){continue}break}}i=b;if(i>>>0>a>>>0){while(1){i=i-16|0;h=J[i>>2];e=J[i+4>>2];if((e|0)==(o|0)&h>>>0>j>>>0|e>>>0>o>>>0){continue}break}}e=J[g+8>>2];k=J[g+12>>2];if(a>>>0>>0){while(1){h=a+8|0;m=J[h+4>>2];J[f+8>>2]=J[h>>2];J[f+12>>2]=m;h=J[a+4>>2];J[f>>2]=J[a>>2];J[f+4>>2]=h;h=i+8|0;m=J[h+4>>2];J[a+8>>2]=J[h>>2];J[a+12>>2]=m;h=J[i+4>>2];J[a>>2]=J[i>>2];J[a+4>>2]=h;h=J[f+12>>2];J[i+8>>2]=J[f+8>>2];J[i+12>>2]=h;h=J[f+4>>2];J[i>>2]=J[f>>2];J[i+4>>2]=h;while(1){h=a;m=J[a+16>>2];a=a+16|0;h=J[h+20>>2];if((h|0)==(o|0)&j>>>0>=m>>>0|h>>>0>>0){continue}break}while(1){i=i-16|0;h=J[i>>2];m=J[i+4>>2];if((m|0)==(o|0)&h>>>0>j>>>0|m>>>0>o>>>0){continue}break}if(a>>>0>>0){continue}break}}i=a-16|0;if((i|0)!=(g|0)){h=J[i+4>>2];J[g>>2]=J[i>>2];J[g+4>>2]=h;h=J[i+12>>2];J[g+8>>2]=J[i+8>>2];J[g+12>>2]=h}J[i>>2]=j;J[i+4>>2]=o;g=a-8|0;J[g>>2]=e;J[g+4>>2]=k;e=0;continue}m=J[g+8>>2];t=J[g+12>>2];h=g;while(1){a=h;h=a+16|0;k=J[a+20>>2];if((o|0)==(k|0)&j>>>0>M[a+16>>2]|k>>>0>>0){continue}break}k=b;q:{if((a|0)==(g|0)){while(1){if(h>>>0>=k>>>0){break q}k=k-16|0;a=k;i=J[a>>2];a=J[a+4>>2];if((o|0)==(a|0)&i>>>0>=j>>>0|a>>>0>o>>>0){continue}break q}}while(1){k=k-16|0;a=k;i=J[a>>2];a=J[a+4>>2];if((o|0)==(a|0)&i>>>0>=j>>>0|a>>>0>o>>>0){continue}break}}a=h;i=k;if(a>>>0>>0){while(1){n=a+8|0;r=J[n+4>>2];J[f+8>>2]=J[n>>2];J[f+12>>2]=r;n=J[a+4>>2];J[f>>2]=J[a>>2];J[f+4>>2]=n;n=i+8|0;r=J[n+4>>2];J[a+8>>2]=J[n>>2];J[a+12>>2]=r;n=J[i+4>>2];J[a>>2]=J[i>>2];J[a+4>>2]=n;n=J[f+12>>2];J[i+8>>2]=J[f+8>>2];J[i+12>>2]=n;n=J[f+4>>2];J[i>>2]=J[f>>2];J[i+4>>2]=n;while(1){n=a;r=J[a+16>>2];a=a+16|0;n=J[n+20>>2];if((n|0)==(o|0)&j>>>0>r>>>0|n>>>0>>0){continue}break}while(1){i=i-16|0;n=J[i>>2];r=J[i+4>>2];if((o|0)==(r|0)&j>>>0<=n>>>0|o>>>0>>0){continue}break}if(a>>>0>>0){continue}break}}i=a-16|0;if((i|0)!=(g|0)){n=J[i+4>>2];J[g>>2]=J[i>>2];J[g+4>>2]=n;n=J[i+12>>2];J[g+8>>2]=J[i+8>>2];J[g+12>>2]=n}J[i>>2]=j;J[i+4>>2]=o;j=a-8|0;J[j>>2]=m;J[j+4>>2]=t;if(h>>>0>=k>>>0){h=mz(g,i);if(mz(a,b)){b=i;a=g;if(!h){continue b}break a}if(h){continue}}MF(g,i,c,d,s);e=0;continue}break}break}Gz(g,g+16|0,g+32|0,g+48|0,b-16|0)}Ui=f+16|0}function Era(a){a=a|0;var b=0,c=0,d=0,e=0,f=Q(0),g=Q(0),h=0,i=Q(0),j=Q(0),k=Q(0),l=Q(0),m=Q(0),n=Q(0),o=Q(0),p=Q(0),q=Q(0),r=Q(0),s=Q(0),t=Q(0),u=Q(0),v=Q(0),w=Q(0),x=Q(0),y=Q(0),z=Q(0),A=Q(0),B=Q(0),C=Q(0),D=Q(0),E=Q(0),F=0,G=0,H=0,I=0,L=Q(0),M=Q(0),O=Q(0),P=0,R=0,S=0;Xl(71837);VT(a);a:{if(!(Zi[J[J[a>>2]+16>>2]](a)|0)){break a}c=Zi[J[J[a>>2]+16>>2]](a)|0;if(!(Zi[J[J[c>>2]+44>>2]](c)&6144)){break a}I=Zi[J[J[a>>2]+96>>2]](a)|0;if((I|0)<=0){break a}while(1){R=I-1|0;d=Zi[J[J[a>>2]+100>>2]](a,R)|0;b=Ui-176|0;Ui=b;c=Zi[J[J[a>>2]+16>>2]](a)|0;e=Zi[J[J[c>>2]+44>>2]](c)|0;c=Zi[J[J[a>>2]+16>>2]](a)|0;c=Zi[J[J[c>>2]+44>>2]](c)|0;E=N[d+32>>2];b:{if(E<=Q(0)){break b}F=e&2048;G=c&4096;c:{switch(J[d+4>>2]-3|0){case 0:J[b+124>>2]=0;J[b+128>>2]=0;J[b+144>>2]=0;J[b+148>>2]=0;J[b+116>>2]=0;J[b+120>>2]=0;J[b+112>>2]=1065353216;J[b+136>>2]=0;J[b+140>>2]=0;J[b+132>>2]=1065353216;J[b+152>>2]=1065353216;J[b+156>>2]=0;c=J[d+20>>2];u=N[c+52>>2];v=N[c+12>>2];w=N[c+4>>2];i=N[c+8>>2];j=N[c+56>>2];k=N[c+28>>2];r=N[c+20>>2];n=N[c+24>>2];l=N[c+60>>2];x=N[d+296>>2];o=N[c+44>>2];y=N[d+288>>2];f=N[c+36>>2];m=N[d+292>>2];g=N[c+40>>2];J[b+172>>2]=0;N[b+168>>2]=l+Q(Q(o*x)+Q(Q(f*y)+Q(m*g)));N[b+164>>2]=j+Q(Q(k*x)+Q(Q(r*y)+Q(m*n)));N[b+160>>2]=u+Q(Q(v*x)+Q(Q(w*y)+Q(m*i)));c=Zi[J[J[a>>2]+16>>2]](a)|0;e=b+112|0;Zi[J[J[c>>2]+52>>2]](c,e,E);c=J[d+24>>2];u=N[c+52>>2];v=N[c+12>>2];w=N[c+4>>2];i=N[c+8>>2];j=N[c+56>>2];k=N[c+28>>2];r=N[c+20>>2];n=N[c+24>>2];l=N[c+60>>2];x=N[d+312>>2];o=N[c+44>>2];y=N[d+304>>2];f=N[c+36>>2];m=N[d+308>>2];g=N[c+40>>2];J[b+172>>2]=0;N[b+168>>2]=l+Q(Q(o*x)+Q(Q(f*y)+Q(m*g)));N[b+164>>2]=j+Q(Q(k*x)+Q(Q(r*y)+Q(m*n)));N[b+160>>2]=u+Q(Q(v*x)+Q(Q(w*y)+Q(m*i)));if(!F){break b}c=Zi[J[J[a>>2]+16>>2]](a)|0;Zi[J[J[c>>2]+52>>2]](c,e,E);break b;case 1:c=J[d+20>>2];o=N[c+52>>2];f=N[c+56>>2];g=N[c+60>>2];x=N[d+596>>2];y=N[d+588>>2];m=N[d+592>>2];B=N[c+12>>2];C=N[c+4>>2];D=N[c+8>>2];p=N[c+28>>2];q=N[c+20>>2];s=N[c+24>>2];u=N[d+572>>2];v=N[d+540>>2];w=N[d+556>>2];i=N[d+576>>2];j=N[d+544>>2];k=N[d+560>>2];r=N[d+580>>2];t=N[c+44>>2];n=N[d+548>>2];z=N[c+36>>2];l=N[d+564>>2];A=N[c+40>>2];J[b+172>>2]=0;J[b+156>>2]=0;J[b+140>>2]=0;J[b+124>>2]=0;N[b+152>>2]=Q(r*t)+Q(Q(n*z)+Q(l*A));N[b+148>>2]=Q(i*t)+Q(Q(j*z)+Q(k*A));N[b+144>>2]=Q(u*t)+Q(Q(v*z)+Q(w*A));N[b+136>>2]=Q(r*p)+Q(Q(n*q)+Q(l*s));N[b+132>>2]=Q(i*p)+Q(Q(j*q)+Q(k*s));N[b+128>>2]=Q(u*p)+Q(Q(v*q)+Q(w*s));N[b+120>>2]=Q(r*B)+Q(Q(n*C)+Q(D*l));N[b+116>>2]=Q(i*B)+Q(Q(j*C)+Q(D*k));N[b+112>>2]=Q(u*B)+Q(Q(v*C)+Q(w*D));N[b+168>>2]=g+Q(Q(t*x)+Q(Q(z*y)+Q(A*m)));N[b+164>>2]=f+Q(Q(p*x)+Q(Q(q*y)+Q(s*m)));N[b+160>>2]=o+Q(Q(B*x)+Q(Q(C*y)+Q(D*m)));d:{if(F){c=Zi[J[J[a>>2]+16>>2]](a)|0;e=b+112|0;Zi[J[J[c>>2]+52>>2]](c,e,E);c=J[d+24>>2];o=N[c+52>>2];f=N[c+56>>2];g=N[c+60>>2];x=N[d+660>>2];y=N[d+652>>2];m=N[d+656>>2];B=N[c+12>>2];C=N[c+4>>2];D=N[c+8>>2];p=N[c+28>>2];q=N[c+20>>2];s=N[c+24>>2];u=N[d+636>>2];v=N[d+604>>2];w=N[d+620>>2];i=N[d+640>>2];j=N[d+608>>2];k=N[d+624>>2];r=N[d+644>>2];t=N[c+44>>2];n=N[d+612>>2];z=N[c+36>>2];l=N[d+628>>2];A=N[c+40>>2];J[b+172>>2]=0;J[b+156>>2]=0;J[b+140>>2]=0;J[b+124>>2]=0;N[b+152>>2]=Q(r*t)+Q(Q(n*z)+Q(l*A));N[b+148>>2]=Q(i*t)+Q(Q(j*z)+Q(k*A));N[b+144>>2]=Q(u*t)+Q(Q(v*z)+Q(w*A));N[b+136>>2]=Q(r*p)+Q(Q(n*q)+Q(l*s));N[b+132>>2]=Q(i*p)+Q(Q(j*q)+Q(k*s));N[b+128>>2]=Q(u*p)+Q(Q(v*q)+Q(w*s));N[b+120>>2]=Q(r*B)+Q(Q(n*C)+Q(D*l));N[b+116>>2]=Q(i*B)+Q(Q(j*C)+Q(D*k));N[b+112>>2]=Q(u*B)+Q(Q(v*C)+Q(w*D));N[b+168>>2]=g+Q(Q(t*x)+Q(Q(z*y)+Q(A*m)));N[b+164>>2]=f+Q(Q(p*x)+Q(Q(q*y)+Q(s*m)));N[b+160>>2]=o+Q(Q(B*x)+Q(Q(C*y)+Q(D*m)));c=Zi[J[J[a>>2]+16>>2]](a)|0;Zi[J[J[c>>2]+52>>2]](c,e,E);break d}c=J[d+24>>2];o=N[c+52>>2];f=N[c+56>>2];g=N[c+60>>2];x=N[d+660>>2];y=N[d+652>>2];m=N[d+656>>2];B=N[c+12>>2];C=N[c+4>>2];D=N[c+8>>2];p=N[c+28>>2];q=N[c+20>>2];s=N[c+24>>2];u=N[d+636>>2];v=N[d+604>>2];w=N[d+620>>2];i=N[d+640>>2];j=N[d+608>>2];k=N[d+624>>2];r=N[d+644>>2];t=N[c+44>>2];n=N[d+612>>2];z=N[c+36>>2];l=N[d+628>>2];A=N[c+40>>2];J[b+172>>2]=0;J[b+156>>2]=0;J[b+140>>2]=0;J[b+124>>2]=0;N[b+152>>2]=Q(r*t)+Q(Q(n*z)+Q(l*A));N[b+148>>2]=Q(i*t)+Q(Q(j*z)+Q(k*A));N[b+144>>2]=Q(u*t)+Q(Q(v*z)+Q(w*A));N[b+136>>2]=Q(r*p)+Q(Q(n*q)+Q(l*s));N[b+132>>2]=Q(i*p)+Q(Q(j*q)+Q(k*s));N[b+128>>2]=Q(u*p)+Q(Q(v*q)+Q(w*s));N[b+120>>2]=Q(r*B)+Q(Q(n*C)+Q(D*l));N[b+116>>2]=Q(i*B)+Q(Q(j*C)+Q(D*k));N[b+112>>2]=Q(u*B)+Q(Q(v*C)+Q(w*D));N[b+168>>2]=g+Q(Q(t*x)+Q(Q(z*y)+Q(A*m)));N[b+164>>2]=f+Q(Q(p*x)+Q(Q(q*y)+Q(s*m)));N[b+160>>2]=o+Q(Q(B*x)+Q(Q(C*y)+Q(D*m)))}if(!G){break b}f=N[d+688>>2];g=N[d+692>>2];if(f==g){break b}N[b+96>>2]=N[b+120>>2];N[b+100>>2]=N[b+136>>2];J[b+108>>2]=0;N[b+104>>2]=N[b+152>>2];N[b+80>>2]=N[b+112>>2];N[b+84>>2]=N[b+128>>2];J[b+92>>2]=0;N[b+88>>2]=N[b+144>>2];e=Zi[J[J[a>>2]+16>>2]](a)|0;J[b+72>>2]=0;J[b+76>>2]=0;J[b+64>>2]=0;J[b+68>>2]=0;c=f>g;Zi[J[J[e>>2]+56>>2]](e,b+160|0,b+96|0,b+80|0,E,E,c?Q(0):f,c?Q(6.2831854820251465):g,b- -64|0,!c,Q(10));break b;case 2:c=J[d+20>>2];o=N[c+52>>2];f=N[c+56>>2];g=N[c+60>>2];x=N[d+344>>2];y=N[d+336>>2];m=N[d+340>>2];B=N[c+12>>2];C=N[c+4>>2];D=N[c+8>>2];p=N[c+28>>2];q=N[c+20>>2];s=N[c+24>>2];u=N[d+320>>2];v=N[d+288>>2];w=N[d+304>>2];i=N[d+324>>2];j=N[d+292>>2];k=N[d+308>>2];r=N[d+328>>2];t=N[c+44>>2];n=N[d+296>>2];z=N[c+36>>2];l=N[d+312>>2];A=N[c+40>>2];J[b+172>>2]=0;J[b+156>>2]=0;J[b+140>>2]=0;J[b+124>>2]=0;N[b+152>>2]=Q(r*t)+Q(Q(n*z)+Q(l*A));N[b+148>>2]=Q(i*t)+Q(Q(j*z)+Q(k*A));N[b+144>>2]=Q(u*t)+Q(Q(v*z)+Q(w*A));N[b+136>>2]=Q(r*p)+Q(Q(n*q)+Q(l*s));N[b+132>>2]=Q(i*p)+Q(Q(j*q)+Q(k*s));N[b+128>>2]=Q(u*p)+Q(Q(v*q)+Q(w*s));N[b+120>>2]=Q(r*B)+Q(Q(n*C)+Q(D*l));N[b+116>>2]=Q(i*B)+Q(Q(j*C)+Q(D*k));N[b+112>>2]=Q(u*B)+Q(Q(v*C)+Q(w*D));N[b+168>>2]=g+Q(Q(t*x)+Q(Q(z*y)+Q(A*m)));N[b+164>>2]=f+Q(Q(p*x)+Q(Q(q*y)+Q(s*m)));N[b+160>>2]=o+Q(Q(B*x)+Q(Q(C*y)+Q(D*m)));e:{if(F){c=Zi[J[J[a>>2]+16>>2]](a)|0;e=b+112|0;Zi[J[J[c>>2]+52>>2]](c,e,E);c=J[d+24>>2];o=N[c+52>>2];f=N[c+56>>2];g=N[c+60>>2];x=N[d+408>>2];y=N[d+400>>2];m=N[d+404>>2];B=N[c+12>>2];C=N[c+4>>2];D=N[c+8>>2];p=N[c+28>>2];q=N[c+20>>2];s=N[c+24>>2];u=N[d+384>>2];v=N[d+352>>2];w=N[d+368>>2];i=N[d+388>>2];j=N[d+356>>2];k=N[d+372>>2];r=N[d+392>>2];t=N[c+44>>2];n=N[d+360>>2];z=N[c+36>>2];l=N[d+376>>2];A=N[c+40>>2];J[b+172>>2]=0;J[b+156>>2]=0;J[b+140>>2]=0;J[b+124>>2]=0;N[b+152>>2]=Q(r*t)+Q(Q(n*z)+Q(l*A));N[b+148>>2]=Q(i*t)+Q(Q(j*z)+Q(k*A));N[b+144>>2]=Q(u*t)+Q(Q(v*z)+Q(w*A));N[b+136>>2]=Q(r*p)+Q(Q(n*q)+Q(l*s));N[b+132>>2]=Q(i*p)+Q(Q(j*q)+Q(k*s));N[b+128>>2]=Q(u*p)+Q(Q(v*q)+Q(w*s));N[b+120>>2]=Q(r*B)+Q(Q(n*C)+Q(D*l));N[b+116>>2]=Q(i*B)+Q(Q(j*C)+Q(D*k));N[b+112>>2]=Q(u*B)+Q(Q(v*C)+Q(w*D));N[b+168>>2]=g+Q(Q(t*x)+Q(Q(z*y)+Q(A*m)));N[b+164>>2]=f+Q(Q(p*x)+Q(Q(q*y)+Q(s*m)));N[b+160>>2]=o+Q(Q(B*x)+Q(Q(C*y)+Q(D*m)));c=Zi[J[J[a>>2]+16>>2]](a)|0;Zi[J[J[c>>2]+52>>2]](c,e,E);break e}c=J[d+24>>2];o=N[c+52>>2];f=N[c+56>>2];g=N[c+60>>2];x=N[d+408>>2];y=N[d+400>>2];m=N[d+404>>2];B=N[c+12>>2];C=N[c+4>>2];D=N[c+8>>2];p=N[c+28>>2];q=N[c+20>>2];s=N[c+24>>2];u=N[d+384>>2];v=N[d+352>>2];w=N[d+368>>2];i=N[d+388>>2];j=N[d+356>>2];k=N[d+372>>2];r=N[d+392>>2];t=N[c+44>>2];n=N[d+360>>2];z=N[c+36>>2];l=N[d+376>>2];A=N[c+40>>2];J[b+172>>2]=0;J[b+156>>2]=0;J[b+140>>2]=0;J[b+124>>2]=0;N[b+152>>2]=Q(r*t)+Q(Q(n*z)+Q(l*A));N[b+148>>2]=Q(i*t)+Q(Q(j*z)+Q(k*A));N[b+144>>2]=Q(u*t)+Q(Q(v*z)+Q(w*A));N[b+136>>2]=Q(r*p)+Q(Q(n*q)+Q(l*s));N[b+132>>2]=Q(i*p)+Q(Q(j*q)+Q(k*s));N[b+128>>2]=Q(u*p)+Q(Q(v*q)+Q(w*s));N[b+120>>2]=Q(r*B)+Q(Q(n*C)+Q(D*l));N[b+116>>2]=Q(i*B)+Q(Q(j*C)+Q(D*k));N[b+112>>2]=Q(u*B)+Q(Q(v*C)+Q(w*D));N[b+168>>2]=g+Q(Q(t*x)+Q(Q(z*y)+Q(A*m)));N[b+164>>2]=f+Q(Q(p*x)+Q(Q(q*y)+Q(s*m)));N[b+160>>2]=o+Q(Q(B*x)+Q(Q(C*y)+Q(D*m)))}if(!G){break b}c=b+160|0;LT(b+96|0,d,Q(6.0868353843688965),E);J[b+108>>2]=0;o=N[b+104>>2];f=N[b+96>>2];g=N[b+100>>2];N[b+104>>2]=N[b+168>>2]+Q(Q(N[b+152>>2]*o)+Q(Q(N[b+144>>2]*f)+Q(g*N[b+148>>2])));N[b+100>>2]=N[b+164>>2]+Q(Q(o*N[b+136>>2])+Q(Q(f*N[b+128>>2])+Q(g*N[b+132>>2])));N[b+96>>2]=Q(Q(o*N[b+120>>2])+Q(Q(f*N[b+112>>2])+Q(g*N[b+116>>2])))+N[b+160>>2];h=0;while(1){G=b+80|0;LT(G,d,Q(Q(Q(h>>>0)*Q(6.283185005187988))*Q(.03125)),E);J[b+92>>2]=0;o=N[b+88>>2];f=N[b+80>>2];g=N[b+84>>2];N[b+88>>2]=N[b+168>>2]+Q(Q(N[b+152>>2]*o)+Q(Q(N[b+144>>2]*f)+Q(g*N[b+148>>2])));N[b+84>>2]=N[b+164>>2]+Q(Q(o*N[b+136>>2])+Q(Q(f*N[b+128>>2])+Q(g*N[b+132>>2])));N[b+80>>2]=Q(Q(o*N[b+120>>2])+Q(Q(f*N[b+112>>2])+Q(g*N[b+116>>2])))+N[b+160>>2];F=Zi[J[J[a>>2]+16>>2]](a)|0;J[b+72>>2]=0;J[b+76>>2]=0;J[b+64>>2]=0;J[b+68>>2]=0;e=b- -64|0;Zi[J[J[F>>2]+8>>2]](F,b+96|0,G,e);if(!(h&3)){F=Zi[J[J[a>>2]+16>>2]](a)|0;J[b+72>>2]=0;J[b+76>>2]=0;J[b+64>>2]=0;J[b+68>>2]=0;Zi[J[J[F>>2]+8>>2]](F,c,G,e)}e=J[b+92>>2];J[b+104>>2]=J[b+88>>2];J[b+108>>2]=e;e=J[b+84>>2];J[b+96>>2]=J[b+80>>2];J[b+100>>2]=e;h=h+1|0;if((h|0)!=32){continue}break};z=N[d+500>>2];A=N[d+440>>2];h=J[d+24>>2];f:{if(N[h+336>>2]>Q(0)){f=N[h+44>>2];u=N[d+408>>2];g=N[h+36>>2];v=N[d+400>>2];m=N[h+40>>2];w=N[d+404>>2];x=Q(Q(f*u)+Q(Q(g*v)+Q(m*w)));i=N[d+392>>2];j=N[d+360>>2];k=N[d+376>>2];y=Q(Q(i*f)+Q(Q(j*g)+Q(k*m)));r=N[d+388>>2];n=N[d+356>>2];l=N[d+372>>2];L=Q(Q(r*f)+Q(Q(n*g)+Q(l*m)));o=N[d+384>>2];p=Q(o*f);f=N[d+352>>2];q=Q(f*g);g=N[d+368>>2];B=Q(p+Q(q+Q(g*m)));p=N[h+28>>2];q=N[h+20>>2];s=N[h+24>>2];m=Q(Q(i*p)+Q(Q(j*q)+Q(k*s)));C=Q(Q(r*p)+Q(Q(n*q)+Q(l*s)));D=Q(Q(o*p)+Q(Q(f*q)+Q(g*s)));t=N[h+12>>2];M=Q(i*t);i=N[h+4>>2];O=Q(j*i);j=N[h+8>>2];k=Q(M+Q(O+Q(j*k)));n=Q(Q(r*t)+Q(Q(n*i)+Q(j*l)));l=Q(Q(o*t)+Q(Q(f*i)+Q(g*j)));o=Q(N[h+56>>2]+Q(Q(p*u)+Q(Q(q*v)+Q(s*w))));f=Q(N[h+52>>2]+Q(Q(t*u)+Q(Q(i*v)+Q(j*w))));break f}h=J[d+20>>2];f=N[h+44>>2];u=N[d+344>>2];g=N[h+36>>2];v=N[d+336>>2];m=N[h+40>>2];w=N[d+340>>2];x=Q(Q(f*u)+Q(Q(g*v)+Q(m*w)));i=N[d+328>>2];j=N[d+296>>2];k=N[d+312>>2];y=Q(Q(i*f)+Q(Q(j*g)+Q(k*m)));r=N[d+324>>2];n=N[d+292>>2];l=N[d+308>>2];L=Q(Q(r*f)+Q(Q(n*g)+Q(l*m)));o=N[d+320>>2];p=Q(o*f);f=N[d+288>>2];q=Q(f*g);g=N[d+304>>2];B=Q(p+Q(q+Q(g*m)));p=N[h+28>>2];q=N[h+20>>2];s=N[h+24>>2];m=Q(Q(i*p)+Q(Q(j*q)+Q(k*s)));C=Q(Q(r*p)+Q(Q(n*q)+Q(l*s)));D=Q(Q(o*p)+Q(Q(f*q)+Q(g*s)));t=N[h+12>>2];M=Q(i*t);i=N[h+4>>2];O=Q(j*i);j=N[h+8>>2];k=Q(M+Q(O+Q(j*k)));n=Q(Q(r*t)+Q(Q(n*i)+Q(j*l)));l=Q(Q(o*t)+Q(Q(f*i)+Q(g*j)));o=Q(N[h+56>>2]+Q(Q(p*u)+Q(Q(q*v)+Q(s*w))));f=Q(N[h+52>>2]+Q(Q(t*u)+Q(Q(i*v)+Q(j*w))))}g=N[h+60>>2];J[b+172>>2]=0;N[b+164>>2]=o;N[b+160>>2]=f;J[b+156>>2]=0;N[b+152>>2]=y;N[b+148>>2]=L;N[b+144>>2]=B;J[b+140>>2]=0;N[b+136>>2]=m;N[b+132>>2]=C;N[b+128>>2]=D;J[b+124>>2]=0;N[b+120>>2]=k;N[b+116>>2]=n;N[b+112>>2]=l;N[b+168>>2]=x+g;e=J[c+12>>2];J[b+88>>2]=J[c+8>>2];J[b+92>>2]=e;e=J[c+4>>2];J[b+80>>2]=J[c>>2];J[b+84>>2]=e;J[b+76>>2]=0;N[b+72>>2]=B;N[b+68>>2]=D;N[b+64>>2]=l;J[b+60>>2]=0;N[b+56>>2]=L;N[b+52>>2]=C;N[b+48>>2]=n;c=Zi[J[J[a>>2]+16>>2]](a)|0;J[b+40>>2]=0;J[b+44>>2]=0;J[b+32>>2]=0;J[b+36>>2]=0;Zi[J[J[c>>2]+56>>2]](c,b+80|0,b- -64|0,b+48|0,E,E,Q(Q(-z)-A),Q(A-z),b+32|0,1,Q(10));break b;case 3:e=d+1060|0;c=J[e+4>>2];J[b+120>>2]=J[e>>2];J[b+124>>2]=c;c=J[d+1056>>2];J[b+112>>2]=J[d+1052>>2];J[b+116>>2]=c;e=d+1076|0;c=J[e+4>>2];J[b+136>>2]=J[e>>2];J[b+140>>2]=c;c=J[d+1072>>2];J[b+128>>2]=J[d+1068>>2];J[b+132>>2]=c;e=d+1092|0;c=J[e+4>>2];J[b+152>>2]=J[e>>2];J[b+156>>2]=c;c=J[d+1088>>2];J[b+144>>2]=J[d+1084>>2];J[b+148>>2]=c;e=d+1108|0;c=J[e+4>>2];J[b+168>>2]=J[e>>2];J[b+172>>2]=c;c=J[d+1104>>2];J[b+160>>2]=J[d+1100>>2];J[b+164>>2]=c;if(F){c=Zi[J[J[a>>2]+16>>2]](a)|0;F=b+112|0;Zi[J[J[c>>2]+52>>2]](c,F,E);e=d+1124|0;c=J[e+4>>2];J[b+120>>2]=J[e>>2];J[b+124>>2]=c;c=J[d+1120>>2];J[b+112>>2]=J[d+1116>>2];J[b+116>>2]=c;e=d+1140|0;c=J[e+4>>2];J[b+136>>2]=J[e>>2];J[b+140>>2]=c;c=J[d+1136>>2];J[b+128>>2]=J[d+1132>>2];J[b+132>>2]=c;e=d+1156|0;c=J[e+4>>2];J[b+152>>2]=J[e>>2];J[b+156>>2]=c;c=J[d+1152>>2];J[b+144>>2]=J[d+1148>>2];J[b+148>>2]=c;e=d+1172|0;c=J[e+4>>2];J[b+168>>2]=J[e>>2];J[b+172>>2]=c;c=J[d+1168>>2];J[b+160>>2]=J[d+1164>>2];J[b+164>>2]=c;c=Zi[J[J[a>>2]+16>>2]](a)|0;Zi[J[J[c>>2]+52>>2]](c,F,E)}if(!G){break b}G=d+1052|0;e=G;c=J[e+12>>2];J[b+120>>2]=J[e+8>>2];J[b+124>>2]=c;c=J[e+4>>2];J[b+112>>2]=J[e>>2];J[b+116>>2]=c;F=d+1068|0;e=F;c=J[e+12>>2];J[b+136>>2]=J[e+8>>2];J[b+140>>2]=c;c=J[e+4>>2];J[b+128>>2]=J[e>>2];J[b+132>>2]=c;e=d+1084|0;c=J[e+12>>2];J[b+152>>2]=J[e+8>>2];J[b+156>>2]=c;c=J[e+4>>2];J[b+144>>2]=J[e>>2];J[b+148>>2]=c;c=d+1100|0;h=J[c+12>>2];J[b+168>>2]=J[c+8>>2];J[b+172>>2]=h;h=J[c+4>>2];J[b+160>>2]=J[c>>2];J[b+164>>2]=h;N[b+96>>2]=N[b+120>>2];N[b+100>>2]=N[b+136>>2];J[b+108>>2]=0;N[b+104>>2]=N[b+152>>2];N[b+80>>2]=N[b+112>>2];N[b+84>>2]=N[b+128>>2];J[b+92>>2]=0;N[b+88>>2]=N[b+144>>2];l=N[d+988>>2];o=N[d+984>>2];f=N[d+924>>2];g=N[d+920>>2];h=Zi[J[J[a>>2]+16>>2]](a)|0;J[b+72>>2]=0;J[b+76>>2]=0;J[b+64>>2]=0;J[b+68>>2]=0;P=d+1164|0;S=b- -64|0;Zi[J[J[h>>2]+60>>2]](h,P,b+96|0,b+80|0,Q(E*Q(.8999999761581421)),g,f,o,l,S,Q(10));J[b+92>>2]=0;N[b+88>>2]=N[b+148>>2];N[b+84>>2]=N[b+132>>2];N[b+80>>2]=N[b+116>>2];f=N[d+1184>>2];k=N[b+80>>2];g=N[d+1188>>2];r=Hj(g);l=N[b+84>>2];o=Rj(g);N[b+68>>2]=Q(l*o)-Q(r*k);n=Hj(f);g=N[b+88>>2];f=Rj(f);N[b+72>>2]=Q(g*f)+Q(Q(k*Q(n*o))+Q(l*Q(n*r)));N[b+64>>2]=Q(Q(k*Q(f*o))+Q(l*Q(f*r)))-Q(n*g);H=d+1124|0;h=J[H+4>>2];J[b+120>>2]=J[H>>2];J[b+124>>2]=h;h=J[d+1120>>2];J[b+112>>2]=J[d+1116>>2];J[b+116>>2]=h;H=d+1140|0;h=J[H+4>>2];J[b+136>>2]=J[H>>2];J[b+140>>2]=h;h=J[d+1136>>2];J[b+128>>2]=J[d+1132>>2];J[b+132>>2]=h;H=d+1156|0;h=J[H+4>>2];J[b+152>>2]=J[H>>2];J[b+156>>2]=h;h=J[d+1152>>2];J[b+144>>2]=J[d+1148>>2];J[b+148>>2]=h;H=d+1172|0;h=J[H+4>>2];J[b+168>>2]=J[H>>2];J[b+172>>2]=h;h=J[d+1168>>2];J[b+160>>2]=J[d+1164>>2];J[b+164>>2]=h;J[b+60>>2]=0;N[b+56>>2]=-N[b+144>>2];N[b+52>>2]=-N[b+128>>2];N[b+48>>2]=-N[b+112>>2];f=N[d+856>>2];g=N[d+860>>2];g:{if(f>g){h=Zi[J[J[a>>2]+16>>2]](a)|0;J[b+40>>2]=0;J[b+44>>2]=0;J[b+32>>2]=0;J[b+36>>2]=0;Zi[J[J[h>>2]+56>>2]](h,P,b+48|0,S,E,E,Q(-3.1415927410125732),Q(3.1415927410125732),b+32|0,0,Q(10));break g}if(!(f>2]+16>>2]](a)|0;J[b+40>>2]=0;J[b+44>>2]=0;J[b+32>>2]=0;J[b+36>>2]=0;Zi[J[J[h>>2]+56>>2]](h,P,b+48|0,b- -64|0,E,E,f,g,b+32|0,1,Q(10))}h=J[G+12>>2];J[b+120>>2]=J[G+8>>2];J[b+124>>2]=h;h=J[G+4>>2];J[b+112>>2]=J[G>>2];J[b+116>>2]=h;G=J[F+12>>2];J[b+136>>2]=J[F+8>>2];J[b+140>>2]=G;G=J[F+4>>2];J[b+128>>2]=J[F>>2];J[b+132>>2]=G;F=J[e+12>>2];J[b+152>>2]=J[e+8>>2];J[b+156>>2]=F;F=J[e+4>>2];J[b+144>>2]=J[e>>2];J[b+148>>2]=F;e=J[c+12>>2];J[b+168>>2]=J[c+8>>2];J[b+172>>2]=e;e=J[c+4>>2];J[b+160>>2]=J[c>>2];J[b+164>>2]=e;c=J[d+680>>2];J[b+40>>2]=J[d+676>>2];J[b+44>>2]=c;c=J[d+672>>2];J[b+32>>2]=J[d+668>>2];J[b+36>>2]=c;c=J[d+696>>2];J[b+24>>2]=J[d+692>>2];J[b+28>>2]=c;c=J[d+688>>2];J[b+16>>2]=J[d+684>>2];J[b+20>>2]=c;c=Zi[J[J[a>>2]+16>>2]](a)|0;J[b+8>>2]=0;J[b+12>>2]=0;J[b>>2]=0;J[b+4>>2]=0;Zi[J[J[c>>2]+68>>2]](c,b+32|0,b+16|0,b+112|0,b);break b;case 4:break c;default:break b}}c=J[d+824>>2];J[b+120>>2]=J[d+820>>2];J[b+124>>2]=c;c=J[d+816>>2];J[b+112>>2]=J[d+812>>2];J[b+116>>2]=c;c=J[d+840>>2];J[b+136>>2]=J[d+836>>2];J[b+140>>2]=c;c=J[d+832>>2];J[b+128>>2]=J[d+828>>2];J[b+132>>2]=c;c=J[d+856>>2];J[b+152>>2]=J[d+852>>2];J[b+156>>2]=c;c=J[d+848>>2];J[b+144>>2]=J[d+844>>2];J[b+148>>2]=c;c=J[d+872>>2];J[b+168>>2]=J[d+868>>2];J[b+172>>2]=c;c=J[d+864>>2];J[b+160>>2]=J[d+860>>2];J[b+164>>2]=c;h:{if(F){c=Zi[J[J[a>>2]+16>>2]](a)|0;e=b+112|0;Zi[J[J[c>>2]+52>>2]](c,e,E);c=J[d+888>>2];J[b+120>>2]=J[d+884>>2];J[b+124>>2]=c;c=J[d+880>>2];J[b+112>>2]=J[d+876>>2];J[b+116>>2]=c;c=J[d+904>>2];J[b+136>>2]=J[d+900>>2];J[b+140>>2]=c;c=J[d+896>>2];J[b+128>>2]=J[d+892>>2];J[b+132>>2]=c;c=J[d+920>>2];J[b+152>>2]=J[d+916>>2];J[b+156>>2]=c;c=J[d+912>>2];J[b+144>>2]=J[d+908>>2];J[b+148>>2]=c;c=J[d+936>>2];J[b+168>>2]=J[d+932>>2];J[b+172>>2]=c;c=J[d+928>>2];J[b+160>>2]=J[d+924>>2];J[b+164>>2]=c;c=Zi[J[J[a>>2]+16>>2]](a)|0;Zi[J[J[c>>2]+52>>2]](c,e,E);break h}c=J[d+888>>2];J[b+120>>2]=J[d+884>>2];J[b+124>>2]=c;c=J[d+880>>2];J[b+112>>2]=J[d+876>>2];J[b+116>>2]=c;c=J[d+904>>2];J[b+136>>2]=J[d+900>>2];J[b+140>>2]=c;c=J[d+896>>2];J[b+128>>2]=J[d+892>>2];J[b+132>>2]=c;c=J[d+920>>2];J[b+152>>2]=J[d+916>>2];J[b+156>>2]=c;c=J[d+912>>2];J[b+144>>2]=J[d+908>>2];J[b+148>>2]=c;c=J[d+936>>2];J[b+168>>2]=J[d+932>>2];J[b+172>>2]=c;c=J[d+928>>2];J[b+160>>2]=J[d+924>>2];J[b+164>>2]=c}if(!G){break b}c=K[d+168|0];z=N[(c?812:876)+d>>2];c=c?d+812|0:d+876|0;m=N[c+48>>2];k=N[c+8>>2];u=N[c+4>>2];v=N[c+52>>2];f=N[c+24>>2];A=N[c+16>>2];w=N[c+20>>2];i=N[c+56>>2];g=N[c+40>>2];x=N[c+32>>2];j=N[c+36>>2];y=N[d+172>>2];J[b+108>>2]=0;r=Q(g*Q(0));n=Q(j*Q(0));N[b+104>>2]=i+Q(r+Q(Q(x*y)+n));l=Q(f*Q(0));o=Q(w*Q(0));N[b+100>>2]=v+Q(l+Q(Q(A*y)+o));f=Q(k*Q(0));g=Q(u*Q(0));N[b+96>>2]=m+Q(f+Q(Q(z*y)+g));k=N[d+176>>2];J[b+92>>2]=0;N[b+88>>2]=i+Q(r+Q(Q(x*k)+n));N[b+84>>2]=v+Q(l+Q(Q(A*k)+o));N[b+80>>2]=m+Q(f+Q(Q(z*k)+g));e=Zi[J[J[a>>2]+16>>2]](a)|0;J[b+72>>2]=0;J[b+76>>2]=0;J[b+64>>2]=0;J[b+68>>2]=0;c=b- -64|0;Zi[J[J[e>>2]+8>>2]](e,b+96|0,b+80|0,c);J[b+76>>2]=0;N[b+72>>2]=x;N[b+68>>2]=A;N[b+64>>2]=z;J[b+60>>2]=0;N[b+56>>2]=j;N[b+52>>2]=w;N[b+48>>2]=u;f=N[d+184>>2];g=N[d+180>>2];e=Zi[J[J[a>>2]+16>>2]](a)|0;J[b+40>>2]=0;J[b+44>>2]=0;J[b+32>>2]=0;J[b+36>>2]=0;Zi[J[J[e>>2]+56>>2]](e,d+924|0,c,b+48|0,E,E,g,f,b+32|0,1,Q(10))}Ui=b+176|0;c=I>>>0>1;I=R;if(c){continue}break}}i:{if(!(Zi[J[J[a>>2]+16>>2]](a)|0)){break i}c=Zi[J[J[a>>2]+16>>2]](a)|0;if(!(Zi[J[J[c>>2]+44>>2]](c)&3)){break i}if(!(Zi[J[J[a>>2]+16>>2]](a)|0)){break i}c=Zi[J[J[a>>2]+16>>2]](a)|0;if(!(Zi[J[J[c>>2]+44>>2]](c)|0)|J[a+248>>2]<=0){break i}I=0;while(1){c=J[J[a+256>>2]+(I<<2)>>2];Zi[J[J[c>>2]+12>>2]](c,J[a+80>>2]);I=I+1|0;if((I|0)>2]){continue}break}}Wl()}function bw(a,b,c,d,e){var f=0,g=0,h=0,i=0,j=0,k=0,l=0,m=0,n=0,o=0,p=0,q=0,r=0,s=0,t=0,u=0,v=0,w=0;g=Ui-16|0;Ui=g;a:while(1){u=b-8|0;v=b-40|0;n=b-48|0;p=b-24|0;o=b-32|0;k=b-16|0;while(1){b:{c:{d:{e:{f:{g:{h:{f=a;a=b-f>>4;switch(a|0){case 0:case 1:break b;case 5:break d;case 4:break f;case 3:break g;case 2:break h;default:break e}}if(J[b-8>>2]<=J[f+8>>2]){break b}a=J[f+12>>2];J[g+8>>2]=J[f+8>>2];J[g+12>>2]=a;a=J[f+4>>2];J[g>>2]=J[f>>2];J[g+4>>2]=a;b=b-16|0;a=J[b+12>>2];J[f+8>>2]=J[b+8>>2];J[f+12>>2]=a;a=J[b+4>>2];J[f>>2]=J[b>>2];J[f+4>>2]=a;a=J[g+12>>2];J[b+8>>2]=J[g+8>>2];J[b+12>>2]=a;a=J[g+4>>2];J[b>>2]=J[g>>2];J[b+4>>2]=a;break b}d=b-16|0;b=b-8|0;c=J[b>>2];a=J[f+24>>2];if((a|0)<=J[f+8>>2]){if((a|0)>=(c|0)){break b}a=J[f+28>>2];J[g+8>>2]=J[f+24>>2];J[g+12>>2]=a;a=J[f+20>>2];J[g>>2]=J[f+16>>2];J[g+4>>2]=a;a=J[d+12>>2];J[f+24>>2]=J[d+8>>2];J[f+28>>2]=a;a=J[d+4>>2];J[f+16>>2]=J[d>>2];J[f+20>>2]=a;a=J[g+12>>2];J[d+8>>2]=J[g+8>>2];J[d+12>>2]=a;a=J[g+4>>2];J[d>>2]=J[g>>2];J[d+4>>2]=a;if(J[f+24>>2]<=J[f+8>>2]){break b}a=J[f+12>>2];J[g+8>>2]=J[f+8>>2];J[g+12>>2]=a;a=J[f+4>>2];J[g>>2]=J[f>>2];J[g+4>>2]=a;a=J[f+28>>2];J[f+8>>2]=J[f+24>>2];J[f+12>>2]=a;a=J[f+20>>2];J[f>>2]=J[f+16>>2];J[f+4>>2]=a;a=J[g+12>>2];J[f+24>>2]=J[g+8>>2];J[f+28>>2]=a;a=J[g+4>>2];J[f+16>>2]=J[g>>2];J[f+20>>2]=a;break b}if((a|0)<(c|0)){a=J[f+12>>2];J[g+8>>2]=J[f+8>>2];J[g+12>>2]=a;a=J[f+4>>2];J[g>>2]=J[f>>2];J[g+4>>2]=a;a=J[d+12>>2];J[f+8>>2]=J[d+8>>2];J[f+12>>2]=a;a=J[d+4>>2];J[f>>2]=J[d>>2];J[f+4>>2]=a;a=J[g+12>>2];J[d+8>>2]=J[g+8>>2];J[d+12>>2]=a;a=J[g+4>>2];J[d>>2]=J[g>>2];J[d+4>>2]=a;break b}a=J[f+12>>2];J[g+8>>2]=J[f+8>>2];J[g+12>>2]=a;a=J[f+4>>2];J[g>>2]=J[f>>2];J[g+4>>2]=a;a=J[f+28>>2];J[f+8>>2]=J[f+24>>2];J[f+12>>2]=a;a=J[f+20>>2];J[f>>2]=J[f+16>>2];J[f+4>>2]=a;a=J[g+12>>2];J[f+24>>2]=J[g+8>>2];J[f+28>>2]=a;a=J[g+4>>2];J[f+16>>2]=J[g>>2];J[f+20>>2]=a;if(J[b>>2]<=J[f+24>>2]){break b}a=J[f+28>>2];J[g+8>>2]=J[f+24>>2];J[g+12>>2]=a;a=J[f+20>>2];J[g>>2]=J[f+16>>2];J[g+4>>2]=a;a=J[d+12>>2];J[f+24>>2]=J[d+8>>2];J[f+28>>2]=a;a=J[d+4>>2];J[f+16>>2]=J[d>>2];J[f+20>>2]=a;a=J[g+12>>2];J[d+8>>2]=J[g+8>>2];J[d+12>>2]=a;a=J[g+4>>2];J[d>>2]=J[g>>2];J[d+4>>2]=a;break b}c=J[f+40>>2];a=J[f+24>>2];i:{if((a|0)<=J[f+8>>2]){if((a|0)>=(c|0)){break i}a=J[f+28>>2];J[g+8>>2]=J[f+24>>2];J[g+12>>2]=a;a=J[f+20>>2];J[g>>2]=J[f+16>>2];J[g+4>>2]=a;a=J[f+44>>2];J[f+24>>2]=J[f+40>>2];J[f+28>>2]=a;a=J[f+36>>2];J[f+16>>2]=J[f+32>>2];J[f+20>>2]=a;a=J[g+12>>2];J[f+40>>2]=J[g+8>>2];J[f+44>>2]=a;a=J[g+4>>2];J[f+32>>2]=J[g>>2];J[f+36>>2]=a;if(J[f+24>>2]<=J[f+8>>2]){break i}a=J[f+12>>2];J[g+8>>2]=J[f+8>>2];J[g+12>>2]=a;a=J[f+4>>2];J[g>>2]=J[f>>2];J[g+4>>2]=a;a=J[f+28>>2];J[f+8>>2]=J[f+24>>2];J[f+12>>2]=a;a=J[f+20>>2];J[f>>2]=J[f+16>>2];J[f+4>>2]=a;a=J[g+12>>2];J[f+24>>2]=J[g+8>>2];J[f+28>>2]=a;a=J[g+4>>2];J[f+16>>2]=J[g>>2];J[f+20>>2]=a;break i}if((a|0)<(c|0)){a=J[f+12>>2];J[g+8>>2]=J[f+8>>2];J[g+12>>2]=a;a=J[f+4>>2];J[g>>2]=J[f>>2];J[g+4>>2]=a;a=J[f+44>>2];J[f+8>>2]=J[f+40>>2];J[f+12>>2]=a;a=J[f+36>>2];J[f>>2]=J[f+32>>2];J[f+4>>2]=a;a=J[g+12>>2];J[f+40>>2]=J[g+8>>2];J[f+44>>2]=a;a=J[g+4>>2];J[f+32>>2]=J[g>>2];J[f+36>>2]=a;break i}a=J[f+12>>2];J[g+8>>2]=J[f+8>>2];J[g+12>>2]=a;a=J[f+4>>2];J[g>>2]=J[f>>2];J[g+4>>2]=a;a=J[f+28>>2];J[f+8>>2]=J[f+24>>2];J[f+12>>2]=a;a=J[f+20>>2];J[f>>2]=J[f+16>>2];J[f+4>>2]=a;a=J[g+12>>2];J[f+24>>2]=J[g+8>>2];J[f+28>>2]=a;a=J[g+4>>2];J[f+16>>2]=J[g>>2];J[f+20>>2]=a;if((c|0)<=J[f+24>>2]){break i}a=J[f+28>>2];J[g+8>>2]=J[f+24>>2];J[g+12>>2]=a;a=J[f+20>>2];J[g>>2]=J[f+16>>2];J[g+4>>2]=a;a=J[f+44>>2];J[f+24>>2]=J[f+40>>2];J[f+28>>2]=a;a=J[f+36>>2];J[f+16>>2]=J[f+32>>2];J[f+20>>2]=a;a=J[g+12>>2];J[f+40>>2]=J[g+8>>2];J[f+44>>2]=a;a=J[g+4>>2];J[f+32>>2]=J[g>>2];J[f+36>>2]=a}if(J[b-8>>2]<=J[f+40>>2]){break b}a=J[f+44>>2];J[g+8>>2]=J[f+40>>2];J[g+12>>2]=a;a=J[f+36>>2];J[g>>2]=J[f+32>>2];J[g+4>>2]=a;b=b-16|0;a=J[b+12>>2];J[f+40>>2]=J[b+8>>2];J[f+44>>2]=a;a=J[b+4>>2];J[f+32>>2]=J[b>>2];J[f+36>>2]=a;a=J[g+12>>2];J[b+8>>2]=J[g+8>>2];J[b+12>>2]=a;a=J[g+4>>2];J[b>>2]=J[g>>2];J[b+4>>2]=a;if(J[f+40>>2]<=J[f+24>>2]){break b}a=J[f+28>>2];J[g+8>>2]=J[f+24>>2];J[g+12>>2]=a;a=J[f+20>>2];J[g>>2]=J[f+16>>2];J[g+4>>2]=a;a=J[f+44>>2];J[f+24>>2]=J[f+40>>2];J[f+28>>2]=a;a=J[f+36>>2];J[f+16>>2]=J[f+32>>2];J[f+20>>2]=a;a=J[g+12>>2];J[f+40>>2]=J[g+8>>2];J[f+44>>2]=a;a=J[g+4>>2];J[f+32>>2]=J[g>>2];J[f+36>>2]=a;if(J[f+24>>2]<=J[f+8>>2]){break b}a=J[f+12>>2];J[g+8>>2]=J[f+8>>2];J[g+12>>2]=a;a=J[f+4>>2];J[g>>2]=J[f>>2];J[g+4>>2]=a;a=J[f+28>>2];J[f+8>>2]=J[f+24>>2];J[f+12>>2]=a;a=J[f+20>>2];J[f>>2]=J[f+16>>2];J[f+4>>2]=a;a=J[g+12>>2];J[f+24>>2]=J[g+8>>2];J[f+28>>2]=a;a=J[g+4>>2];J[f+16>>2]=J[g>>2];J[f+20>>2]=a;break b}if((a|0)<=23){a=f+16|0;c=(b|0)==(f|0)|(b|0)==(a|0);if(e&1){if(c){break b}j=f;while(1){c=a;m=J[j+24>>2];if((m|0)>J[j+8>>2]){l=J[j+28>>2];d=J[a>>2];h=J[a+4>>2];i=a;while(1){j:{a=j;e=J[a+4>>2];J[i>>2]=J[a>>2];J[i+4>>2]=e;e=J[a+12>>2];J[i+8>>2]=J[a+8>>2];J[i+12>>2]=e;if((a|0)==(f|0)){a=f;break j}j=a-16|0;i=a;if((m|0)>J[a-8>>2]){continue}}break}J[a+12>>2]=l;J[a+8>>2]=m;J[a>>2]=d;J[a+4>>2]=h}j=c;a=j+16|0;if((b|0)!=(a|0)){continue}break}break b}if(c){break b}while(1){l=J[f+24>>2];if((l|0)>J[f+8>>2]){h=J[f+28>>2];d=J[a>>2];j=J[a+4>>2];i=a;while(1){c=f;e=J[f+4>>2];J[i>>2]=J[f>>2];J[i+4>>2]=e;e=J[f+12>>2];J[i+8>>2]=J[f+8>>2];J[i+12>>2]=e;f=f-16|0;i=c;if((l|0)>J[i-8>>2]){continue}break}J[i+12>>2]=h;J[i+8>>2]=l;J[i>>2]=d;J[i+4>>2]=j}f=a;a=f+16|0;if((b|0)!=(a|0)){continue}break}break b}if(!d){if((b|0)==(f|0)){break b}d=b;if((b|0)!=(f|0)){r=b-f|0;i=r>>4;if((i|0)>=2){s=i-2>>>1|0;a=s;while(1){h=a;k:{if((a|0)>(s|0)){break k}b=a<<1&536870910;e=b|1;a=(e<<4)+f|0;b=b+2|0;if((b|0)<(i|0)){c=b;b=J[a+8>>2]>J[a+24>>2];e=b?c:e;a=(b<<4)+a|0}b=(h<<4)+f|0;t=J[b+8>>2];if((t|0)>2]){break k}q=J[b+12>>2];j=J[b>>2];m=J[b+4>>2];while(1){l:{c=a;l=J[a+4>>2];J[b>>2]=J[a>>2];J[b+4>>2]=l;l=J[a+12>>2];J[b+8>>2]=J[a+8>>2];J[b+12>>2]=l;if((e|0)>(s|0)){break l}b=e<<1;e=b|1;a=(e<<4)+f|0;b=b+2|0;if((b|0)<(i|0)){l=b;b=J[a+8>>2]>J[a+24>>2];e=b?l:e;a=(b<<4)+a|0}b=c;if((t|0)>=J[a+8>>2]){continue}}break}J[c+12>>2]=q;J[c+8>>2]=t;J[c>>2]=j;J[c+4>>2]=m}a=h-1|0;if((h|0)>0){continue}break}}p=Ui-16|0;if((i|0)>=2){while(1){a=J[f+12>>2];J[p+8>>2]=J[f+8>>2];J[p+12>>2]=a;a=J[f+4>>2];J[p>>2]=J[f>>2];J[p+4>>2]=a;j=i;h=i-2>>>1|0;e=0;b=f;while(1){i=e<<1;c=i|1;l=(e<<4)+b|0;a=l+16|0;e=i+2|0;m:{if((e|0)>=(j|0)){e=c;break m}i=c;c=J[l+24>>2]>J[l+40>>2];e=c?e:i;a=c?l+32|0:a}c=J[a+4>>2];J[b>>2]=J[a>>2];J[b+4>>2]=c;c=J[a+12>>2];J[b+8>>2]=J[a+8>>2];J[b+12>>2]=c;b=a;if((e|0)<=(h|0)){continue}break}d=d-16|0;n:{if((a|0)==(d|0)){b=J[p+4>>2];J[a>>2]=J[p>>2];J[a+4>>2]=b;b=J[p+12>>2];J[a+8>>2]=J[p+8>>2];J[a+12>>2]=b;break n}b=J[d+4>>2];J[a>>2]=J[d>>2];J[a+4>>2]=b;b=J[d+12>>2];J[a+8>>2]=J[d+8>>2];J[a+12>>2]=b;b=J[p+4>>2];J[d>>2]=J[p>>2];J[d+4>>2]=b;b=J[p+12>>2];J[d+8>>2]=J[p+8>>2];J[d+12>>2]=b;b=(a-f|0)+16>>4;if((b|0)<2){break n}q=J[a+8>>2];b=b-2>>>1|0;c=(b<<4)+f|0;if((q|0)>=J[c+8>>2]){break n}m=J[a+12>>2];e=J[a>>2];l=J[a+4>>2];while(1){o:{i=c;h=J[i+4>>2];J[a>>2]=J[i>>2];J[a+4>>2]=h;h=J[i+12>>2];J[a+8>>2]=J[i+8>>2];J[a+12>>2]=h;if(!b){break o}a=i;b=b-1>>>1|0;c=(b<<4)+f|0;if((q|0)>2]){continue}}break}J[i+12>>2]=m;J[i+8>>2]=q;J[i>>2]=e;J[i+4>>2]=l}i=j-1|0;if((j|0)>2){continue}break}}}break b}h=(a>>>1<<4)+f|0;j=J[u>>2];p:{if(a>>>0>=129){a=J[h+8>>2];q:{if((a|0)<=J[f+8>>2]){if((a|0)>=(j|0)){break q}a=J[h+12>>2];J[g+8>>2]=J[h+8>>2];J[g+12>>2]=a;a=J[h+4>>2];J[g>>2]=J[h>>2];J[g+4>>2]=a;a=J[k+12>>2];J[h+8>>2]=J[k+8>>2];J[h+12>>2]=a;a=J[k+4>>2];J[h>>2]=J[k>>2];J[h+4>>2]=a;a=J[g+12>>2];J[k+8>>2]=J[g+8>>2];J[k+12>>2]=a;a=J[g+4>>2];J[k>>2]=J[g>>2];J[k+4>>2]=a;if(J[h+8>>2]<=J[f+8>>2]){break q}a=J[f+12>>2];J[g+8>>2]=J[f+8>>2];J[g+12>>2]=a;a=J[f+4>>2];J[g>>2]=J[f>>2];J[g+4>>2]=a;a=J[h+12>>2];J[f+8>>2]=J[h+8>>2];J[f+12>>2]=a;a=J[h+4>>2];J[f>>2]=J[h>>2];J[f+4>>2]=a;a=J[g+12>>2];J[h+8>>2]=J[g+8>>2];J[h+12>>2]=a;a=J[g+4>>2];J[h>>2]=J[g>>2];J[h+4>>2]=a;break q}if((a|0)<(j|0)){a=J[f+12>>2];J[g+8>>2]=J[f+8>>2];J[g+12>>2]=a;a=J[f+4>>2];J[g>>2]=J[f>>2];J[g+4>>2]=a;a=J[k+12>>2];J[f+8>>2]=J[k+8>>2];J[f+12>>2]=a;a=J[k+4>>2];J[f>>2]=J[k>>2];J[f+4>>2]=a;a=J[g+12>>2];J[k+8>>2]=J[g+8>>2];J[k+12>>2]=a;a=J[g+4>>2];J[k>>2]=J[g>>2];J[k+4>>2]=a;break q}a=J[f+12>>2];J[g+8>>2]=J[f+8>>2];J[g+12>>2]=a;a=J[f+4>>2];J[g>>2]=J[f>>2];J[g+4>>2]=a;a=J[h+12>>2];J[f+8>>2]=J[h+8>>2];J[f+12>>2]=a;a=J[h+4>>2];J[f>>2]=J[h>>2];J[f+4>>2]=a;a=J[g+12>>2];J[h+8>>2]=J[g+8>>2];J[h+12>>2]=a;a=J[g+4>>2];J[h>>2]=J[g>>2];J[h+4>>2]=a;if(J[u>>2]<=J[h+8>>2]){break q}a=J[h+12>>2];J[g+8>>2]=J[h+8>>2];J[g+12>>2]=a;a=J[h+4>>2];J[g>>2]=J[h>>2];J[g+4>>2]=a;a=J[k+12>>2];J[h+8>>2]=J[k+8>>2];J[h+12>>2]=a;a=J[k+4>>2];J[h>>2]=J[k>>2];J[h+4>>2]=a;a=J[g+12>>2];J[k+8>>2]=J[g+8>>2];J[k+12>>2]=a;a=J[g+4>>2];J[k>>2]=J[g>>2];J[k+4>>2]=a}j=J[p>>2];i=h-16|0;a=J[i+8>>2];r:{if((a|0)<=J[f+24>>2]){if((a|0)>=(j|0)){break r}a=J[i+12>>2];J[g+8>>2]=J[i+8>>2];J[g+12>>2]=a;a=J[i+4>>2];J[g>>2]=J[i>>2];J[g+4>>2]=a;a=J[o+12>>2];J[i+8>>2]=J[o+8>>2];J[i+12>>2]=a;a=J[o+4>>2];J[i>>2]=J[o>>2];J[i+4>>2]=a;a=J[g+12>>2];J[o+8>>2]=J[g+8>>2];J[o+12>>2]=a;a=J[g+4>>2];J[o>>2]=J[g>>2];J[o+4>>2]=a;if(J[i+8>>2]<=J[f+24>>2]){break r}a=J[f+28>>2];J[g+8>>2]=J[f+24>>2];J[g+12>>2]=a;a=J[f+20>>2];J[g>>2]=J[f+16>>2];J[g+4>>2]=a;a=J[i+12>>2];J[f+24>>2]=J[i+8>>2];J[f+28>>2]=a;a=J[i+4>>2];J[f+16>>2]=J[i>>2];J[f+20>>2]=a;a=J[g+12>>2];J[i+8>>2]=J[g+8>>2];J[i+12>>2]=a;a=J[g+4>>2];J[i>>2]=J[g>>2];J[i+4>>2]=a;break r}if((a|0)<(j|0)){a=J[f+28>>2];J[g+8>>2]=J[f+24>>2];J[g+12>>2]=a;a=J[f+20>>2];J[g>>2]=J[f+16>>2];J[g+4>>2]=a;a=J[o+12>>2];J[f+24>>2]=J[o+8>>2];J[f+28>>2]=a;a=J[o+4>>2];J[f+16>>2]=J[o>>2];J[f+20>>2]=a;a=J[g+12>>2];J[o+8>>2]=J[g+8>>2];J[o+12>>2]=a;a=J[g+4>>2];J[o>>2]=J[g>>2];J[o+4>>2]=a;break r}a=J[f+28>>2];J[g+8>>2]=J[f+24>>2];J[g+12>>2]=a;a=J[f+20>>2];J[g>>2]=J[f+16>>2];J[g+4>>2]=a;a=J[i+12>>2];J[f+24>>2]=J[i+8>>2];J[f+28>>2]=a;a=J[i+4>>2];J[f+16>>2]=J[i>>2];J[f+20>>2]=a;a=J[g+12>>2];J[i+8>>2]=J[g+8>>2];J[i+12>>2]=a;a=J[g+4>>2];J[i>>2]=J[g>>2];J[i+4>>2]=a;if(J[p>>2]<=J[i+8>>2]){break r}a=J[i+12>>2];J[g+8>>2]=J[i+8>>2];J[g+12>>2]=a;a=J[i+4>>2];J[g>>2]=J[i>>2];J[g+4>>2]=a;a=J[o+12>>2];J[i+8>>2]=J[o+8>>2];J[i+12>>2]=a;a=J[o+4>>2];J[i>>2]=J[o>>2];J[i+4>>2]=a;a=J[g+12>>2];J[o+8>>2]=J[g+8>>2];J[o+12>>2]=a;a=J[g+4>>2];J[o>>2]=J[g>>2];J[o+4>>2]=a}j=J[v>>2];a=J[h+24>>2];s:{if((a|0)<=J[f+40>>2]){if((a|0)>=(j|0)){break s}a=J[h+28>>2];J[g+8>>2]=J[h+24>>2];J[g+12>>2]=a;a=J[h+20>>2];J[g>>2]=J[h+16>>2];J[g+4>>2]=a;a=J[n+12>>2];J[h+24>>2]=J[n+8>>2];J[h+28>>2]=a;a=J[n+4>>2];J[h+16>>2]=J[n>>2];J[h+20>>2]=a;a=J[g+12>>2];J[n+8>>2]=J[g+8>>2];J[n+12>>2]=a;a=J[g+4>>2];J[n>>2]=J[g>>2];J[n+4>>2]=a;if(J[h+24>>2]<=J[f+40>>2]){break s}a=J[f+44>>2];J[g+8>>2]=J[f+40>>2];J[g+12>>2]=a;a=J[f+36>>2];J[g>>2]=J[f+32>>2];J[g+4>>2]=a;a=J[h+28>>2];J[f+40>>2]=J[h+24>>2];J[f+44>>2]=a;a=J[h+20>>2];J[f+32>>2]=J[h+16>>2];J[f+36>>2]=a;a=J[g+12>>2];J[h+24>>2]=J[g+8>>2];J[h+28>>2]=a;a=J[g+4>>2];J[h+16>>2]=J[g>>2];J[h+20>>2]=a;break s}if((a|0)<(j|0)){a=J[f+44>>2];J[g+8>>2]=J[f+40>>2];J[g+12>>2]=a;a=J[f+36>>2];J[g>>2]=J[f+32>>2];J[g+4>>2]=a;a=J[n+12>>2];J[f+40>>2]=J[n+8>>2];J[f+44>>2]=a;a=J[n+4>>2];J[f+32>>2]=J[n>>2];J[f+36>>2]=a;a=J[g+12>>2];J[n+8>>2]=J[g+8>>2];J[n+12>>2]=a;a=J[g+4>>2];J[n>>2]=J[g>>2];J[n+4>>2]=a;break s}a=J[f+44>>2];J[g+8>>2]=J[f+40>>2];J[g+12>>2]=a;a=J[f+36>>2];J[g>>2]=J[f+32>>2];J[g+4>>2]=a;a=J[h+28>>2];J[f+40>>2]=J[h+24>>2];J[f+44>>2]=a;a=J[h+20>>2];J[f+32>>2]=J[h+16>>2];J[f+36>>2]=a;a=J[g+12>>2];J[h+24>>2]=J[g+8>>2];J[h+28>>2]=a;a=J[g+4>>2];J[h+16>>2]=J[g>>2];J[h+20>>2]=a;if(J[v>>2]<=J[h+24>>2]){break s}a=J[h+28>>2];J[g+8>>2]=J[h+24>>2];J[g+12>>2]=a;a=J[h+20>>2];J[g>>2]=J[h+16>>2];J[g+4>>2]=a;a=J[n+12>>2];J[h+24>>2]=J[n+8>>2];J[h+28>>2]=a;a=J[n+4>>2];J[h+16>>2]=J[n>>2];J[h+20>>2]=a;a=J[g+12>>2];J[n+8>>2]=J[g+8>>2];J[n+12>>2]=a;a=J[g+4>>2];J[n>>2]=J[g>>2];J[n+4>>2]=a}j=J[h+24>>2];a=J[h+8>>2];t:{if((a|0)<=J[i+8>>2]){if((a|0)>=(j|0)){break t}a=J[h+12>>2];J[g+8>>2]=J[h+8>>2];J[g+12>>2]=a;a=J[h+4>>2];J[g>>2]=J[h>>2];J[g+4>>2]=a;a=J[h+28>>2];J[h+8>>2]=J[h+24>>2];J[h+12>>2]=a;a=J[h+20>>2];J[h>>2]=J[h+16>>2];J[h+4>>2]=a;a=J[g+12>>2];J[h+24>>2]=J[g+8>>2];J[h+28>>2]=a;a=J[g+4>>2];J[h+16>>2]=J[g>>2];J[h+20>>2]=a;if(J[h+8>>2]<=J[i+8>>2]){break t}a=J[i+12>>2];J[g+8>>2]=J[i+8>>2];J[g+12>>2]=a;a=J[i+4>>2];J[g>>2]=J[i>>2];J[g+4>>2]=a;a=J[h+12>>2];J[i+8>>2]=J[h+8>>2];J[i+12>>2]=a;a=J[h+4>>2];J[i>>2]=J[h>>2];J[i+4>>2]=a;a=J[g+12>>2];J[h+8>>2]=J[g+8>>2];J[h+12>>2]=a;a=J[g+4>>2];J[h>>2]=J[g>>2];J[h+4>>2]=a;break t}if((a|0)<(j|0)){a=J[i+12>>2];J[g+8>>2]=J[i+8>>2];J[g+12>>2]=a;a=J[i+4>>2];J[g>>2]=J[i>>2];J[g+4>>2]=a;a=J[h+28>>2];J[i+8>>2]=J[h+24>>2];J[i+12>>2]=a;a=J[h+20>>2];J[i>>2]=J[h+16>>2];J[i+4>>2]=a;a=J[g+12>>2];J[h+24>>2]=J[g+8>>2];J[h+28>>2]=a;a=J[g+4>>2];J[h+16>>2]=J[g>>2];J[h+20>>2]=a;break t}a=J[i+12>>2];J[g+8>>2]=J[i+8>>2];J[g+12>>2]=a;a=J[i+4>>2];J[g>>2]=J[i>>2];J[g+4>>2]=a;a=J[h+12>>2];J[i+8>>2]=J[h+8>>2];J[i+12>>2]=a;a=J[h+4>>2];J[i>>2]=J[h>>2];J[i+4>>2]=a;a=J[g+12>>2];J[h+8>>2]=J[g+8>>2];J[h+12>>2]=a;a=J[g+4>>2];J[h>>2]=J[g>>2];J[h+4>>2]=a;if(J[h+24>>2]<=J[h+8>>2]){break t}a=J[h+12>>2];J[g+8>>2]=J[h+8>>2];J[g+12>>2]=a;a=J[h+4>>2];J[g>>2]=J[h>>2];J[g+4>>2]=a;a=J[h+28>>2];J[h+8>>2]=J[h+24>>2];J[h+12>>2]=a;a=J[h+20>>2];J[h>>2]=J[h+16>>2];J[h+4>>2]=a;a=J[g+12>>2];J[h+24>>2]=J[g+8>>2];J[h+28>>2]=a;a=J[g+4>>2];J[h+16>>2]=J[g>>2];J[h+20>>2]=a}a=J[f+12>>2];J[g+8>>2]=J[f+8>>2];J[g+12>>2]=a;a=J[f+4>>2];J[g>>2]=J[f>>2];J[g+4>>2]=a;a=J[h+12>>2];J[f+8>>2]=J[h+8>>2];J[f+12>>2]=a;a=J[h+4>>2];J[f>>2]=J[h>>2];J[f+4>>2]=a;a=J[g+12>>2];J[h+8>>2]=J[g+8>>2];J[h+12>>2]=a;a=J[g+4>>2];J[h>>2]=J[g>>2];J[h+4>>2]=a;break p}a=J[f+8>>2];if((a|0)<=J[h+8>>2]){if((a|0)>=(j|0)){break p}a=J[f+12>>2];J[g+8>>2]=J[f+8>>2];J[g+12>>2]=a;a=J[f+4>>2];J[g>>2]=J[f>>2];J[g+4>>2]=a;a=J[k+12>>2];J[f+8>>2]=J[k+8>>2];J[f+12>>2]=a;a=J[k+4>>2];J[f>>2]=J[k>>2];J[f+4>>2]=a;a=J[g+12>>2];J[k+8>>2]=J[g+8>>2];J[k+12>>2]=a;a=J[g+4>>2];J[k>>2]=J[g>>2];J[k+4>>2]=a;if(J[f+8>>2]<=J[h+8>>2]){break p}a=J[h+12>>2];J[g+8>>2]=J[h+8>>2];J[g+12>>2]=a;a=J[h+4>>2];J[g>>2]=J[h>>2];J[g+4>>2]=a;a=J[f+12>>2];J[h+8>>2]=J[f+8>>2];J[h+12>>2]=a;a=J[f+4>>2];J[h>>2]=J[f>>2];J[h+4>>2]=a;a=J[g+12>>2];J[f+8>>2]=J[g+8>>2];J[f+12>>2]=a;a=J[g+4>>2];J[f>>2]=J[g>>2];J[f+4>>2]=a;break p}if((a|0)<(j|0)){a=J[h+12>>2];J[g+8>>2]=J[h+8>>2];J[g+12>>2]=a;a=J[h+4>>2];J[g>>2]=J[h>>2];J[g+4>>2]=a;a=J[k+12>>2];J[h+8>>2]=J[k+8>>2];J[h+12>>2]=a;a=J[k+4>>2];J[h>>2]=J[k>>2];J[h+4>>2]=a;a=J[g+12>>2];J[k+8>>2]=J[g+8>>2];J[k+12>>2]=a;a=J[g+4>>2];J[k>>2]=J[g>>2];J[k+4>>2]=a;break p}a=J[h+12>>2];J[g+8>>2]=J[h+8>>2];J[g+12>>2]=a;a=J[h+4>>2];J[g>>2]=J[h>>2];J[g+4>>2]=a;a=J[f+12>>2];J[h+8>>2]=J[f+8>>2];J[h+12>>2]=a;a=J[f+4>>2];J[h>>2]=J[f>>2];J[h+4>>2]=a;a=J[g+12>>2];J[f+8>>2]=J[g+8>>2];J[f+12>>2]=a;a=J[g+4>>2];J[f>>2]=J[g>>2];J[f+4>>2]=a;if(J[u>>2]<=J[f+8>>2]){break p}a=J[f+12>>2];J[g+8>>2]=J[f+8>>2];J[g+12>>2]=a;a=J[f+4>>2];J[g>>2]=J[f>>2];J[g+4>>2]=a;a=J[k+12>>2];J[f+8>>2]=J[k+8>>2];J[f+12>>2]=a;a=J[k+4>>2];J[f>>2]=J[k>>2];J[f+4>>2]=a;a=J[g+12>>2];J[k+8>>2]=J[g+8>>2];J[k+12>>2]=a;a=J[g+4>>2];J[k>>2]=J[g>>2];J[k+4>>2]=a}d=d-1|0;w=e&1;if(w){i=J[f+8>>2];break c}i=J[f+8>>2];if((i|0)>2]){break c}j=f;u:{if(J[u>>2]<(i|0)){while(1){e=J[j+24>>2];a=j+16|0;j=a;if((e|0)>=(i|0)){continue}break u}}while(1){a=j+16|0;if(b>>>0<=a>>>0){break u}e=J[j+24>>2];j=a;if((e|0)>=(i|0)){continue}break}}j=b;if(b>>>0>a>>>0){while(1){e=j-8|0;j=j-16|0;if(J[e>>2]<(i|0)){continue}break}}q=J[f+12>>2];h=J[f>>2];m=J[f+4>>2];if(a>>>0>>0){while(1){e=J[a+12>>2];J[g+8>>2]=J[a+8>>2];J[g+12>>2]=e;e=J[a+4>>2];J[g>>2]=J[a>>2];J[g+4>>2]=e;e=J[j+12>>2];J[a+8>>2]=J[j+8>>2];J[a+12>>2]=e;e=J[j+4>>2];J[a>>2]=J[j>>2];J[a+4>>2]=e;e=J[g+12>>2];J[j+8>>2]=J[g+8>>2];J[j+12>>2]=e;e=J[g+4>>2];J[j>>2]=J[g>>2];J[j+4>>2]=e;while(1){l=J[a+24>>2];e=a+16|0;a=e;if((i|0)<=(l|0)){continue}break}a=j;while(1){l=a-8|0;j=a-16|0;a=j;if(J[l>>2]<(i|0)){continue}break}a=e;if(j>>>0>a>>>0){continue}break}}j=a-16|0;if((j|0)!=(f|0)){e=J[j+4>>2];J[f>>2]=J[j>>2];J[f+4>>2]=e;e=J[j+12>>2];J[f+8>>2]=J[j+8>>2];J[f+12>>2]=e}J[j>>2]=h;J[j+4>>2]=m;J[a-4>>2]=q;J[a-8>>2]=i;e=0;continue}DF(f,f+16|0,f+32|0,f+48|0,b-16|0);break b}s=J[f+12>>2];q=J[f>>2];t=J[f+4>>2];h=f;while(1){a=h;h=a+16|0;if(J[a+24>>2]>(i|0)){continue}break}j=b;v:{if((a|0)==(f|0)){while(1){if(h>>>0>=j>>>0){l=j;break v}a=j-8|0;l=j-16|0;j=l;if(J[a>>2]<=(i|0)){continue}break v}}while(1){a=j-8|0;l=j-16|0;j=l;if(J[a>>2]<=(i|0)){continue}break}}a=h;j=l;if(a>>>0>>0){while(1){m=J[a+12>>2];J[g+8>>2]=J[a+8>>2];J[g+12>>2]=m;m=J[a+4>>2];J[g>>2]=J[a>>2];J[g+4>>2]=m;m=J[j+12>>2];J[a+8>>2]=J[j+8>>2];J[a+12>>2]=m;m=J[j+4>>2];J[a>>2]=J[j>>2];J[a+4>>2]=m;m=J[g+12>>2];J[j+8>>2]=J[g+8>>2];J[j+12>>2]=m;m=J[g+4>>2];J[j>>2]=J[g>>2];J[j+4>>2]=m;while(1){r=J[a+24>>2];m=a+16|0;a=m;if((i|0)<(r|0)){continue}break}a=j;while(1){r=a-8|0;j=a-16|0;a=j;if(J[r>>2]<=(i|0)){continue}break}a=m;if(j>>>0>a>>>0){continue}break}}j=a-16|0;if((j|0)!=(f|0)){m=J[j+4>>2];J[f>>2]=J[j>>2];J[f+4>>2]=m;m=J[j+12>>2];J[f+8>>2]=J[j+8>>2];J[f+12>>2]=m}J[j>>2]=q;J[j+4>>2]=t;J[a-4>>2]=s;J[a-8>>2]=i;if(h>>>0>=l>>>0){i=kU(f,j);if(kU(a,b)){b=j;a=f;if(!i){continue a}break b}if(i){continue}}bw(f,j,c,d,w);e=0;continue}break}break}Ui=g+16|0}function xt(a,b,c,d,e,f,g,h,i,j,k,l,m,n,o){var p=0,q=0,r=0,s=0,t=0,u=0,v=0,w=0,x=0,y=0,z=0,A=0,C=0,D=0,E=0,F=0,G=0,N=0,O=0,Q=0,R=0,S=0,T=0,U=0,V=0,W=0,X=0,Y=0,_=0,$=0,aa=0,ba=0,ca=0,da=0,ea=0,fa=0,ga=0,ha=0,ia=0,ja=0,ka=0,la=0,ma=0;t=Ui-32|0;Ui=t;a:{b:{c:{d:{e:{f:{g:{h:{i:{if(K[318177]){q=g-21|0;z=a+176|0;j:{if(n){break j}if(q>>>0<9){n=l;break j}n=c;if((g|0)!=15){break j}n=l+7>>>3|0;q=-6}R=P(c,d);k:{if(!i){break k}if(k>>>0>15){break e}j=(P(j,192)+z|0)+P(k,12)|0;F=j+24|0;p=J[j+28>>2];if(R>>>0<=p>>>0){break k}if(M[F+8>>2]>>0){An(F,R,(p+1|0)==(R|0),4);p=J[F+4>>2]}ij(J[F>>2]+(p<<2)|0,0,R-p<<2);J[F+4>>2]=R}if(!(f?e:1)){break e}j=J[a+172>>2];J[t+24>>2]=0;J[t+16>>2]=0;J[t+20>>2]=0;if(j){An(t+16|0,j,(j|0)==1,4);k=J[t+20>>2];ij(J[t+16>>2]+(k<<2)|0,0,j-k<<2);J[t+20>>2]=j}J[t+28>>2]=j>>>1;l:{if((g&-2)!=6){break l}G=sj(P(R,12));if(G){break l}break f}j=J[z+4>>2];m:{if(j>>>0>=c>>>0){break m}if(M[z+8>>2]>>0){An(z,c,(j+1|0)==(c|0),4)}J[z+4>>2]=c;j=J[z+16>>2];if((j|0)==(c|0)){break m}if(!(c>>>0>>0|M[z+20>>2]>=c>>>0)){An(z+12|0,c,(j+1|0)==(c|0),4)}J[z+16>>2]=c}j=J[a>>2];D=j?j:a;if(!J[D+8>>2]){break f}j=J[D+20>>2];if(!j){break f}ba=1;if(!d|!c){break g}w=e+f|0;la=j+J[a+172>>2]|0;W=n<<2;X=n<<1;N=q>>>0<9?o?o:m:o;Y=N;ba=0;l=0;ca=2;j=0;while(1){f=(Y|0)>=4?4:Y;S=f>>>0<=1?1:f;fa=P(n,O);ga=P(c,O);Q=O<<2;T=P(Q,n);da=O&1;ha=P(da,12)+z|0;_=P(!da,12)+z|0;$=n;x=0;while(1){n:{o:{p:{q:{r:{s:{t:{u:{v:{w:{x:{y:{if(x&1){break y}if(da){if(M[z+16>>2]<=x>>>0){break b}aa=K[(J[z+12>>2]+(x<<2)|0)+2|0];break y}z:{if(U){U=U-1|0;break z}A:{B:{C:{if(J[a+32>>2]){D:{if(s>>>0>15){break D}m=0;if(e>>>0>>0){m=K[e|0];e=e+1|0}f=s+8|0;j=m<>>0>7){s=f;break D}m=0;if(e>>>0>>0){m=K[e|0];e=e+1|0}s=s|16;j=m<>>0>=M[a+44>>2]){break c}m=J[J[a+40>>2]+(f<<2)>>2];E:{if((m|0)<0){f=J[a+52>>2];k=J[a+56>>2];p=10;while(1){m=(j>>>p&1)+(m^-1)|0;if(m>>>0>=k>>>0){break c}p=p+1|0;m=I[f+(m<<1)>>1];if((m|0)<0){continue}break}break E}p=m>>>16|0;m=m&65535}s=s-p|0;p=j>>>p|0;U=0;if((m|0)!=256){j=p;l=m;break z}if(s>>>0>=5){break A}m=0;if(e>>>0>>0){break C}break B}break d}m=K[e|0];e=e+1|0}p=m<>>5|0;F:{if(!(p&16)){e=k;break F}G:{if(s>>>0>4){e=k;break G}f=0;if(k>>>0>=w>>>0){e=k}else{f=K[k|0];e=k+1|0}j=f<>>5|0;m=j<<4&240|m;if(!(j&16)){j=p;break F}if(!(s>>>0>4)){q=0;if(e>>>0>>0){q=K[e|0];e=e+1|0}p=q<>>5|0;m=p<<8&3840|m;if(!(p&16)){e=k;break F}H:{if(s>>>0>4){e=k;break H}f=0;if(k>>>0>=w>>>0){e=k}else{f=K[k|0];e=k+1|0}j=f<>>5|0;m=j<<12&61440|m;if(!(j&16)){j=p;break F}if(!(s>>>0>4)){q=0;if(e>>>0>>0){q=K[e|0];e=e+1|0}p=q<>>5|0;m=p<<16&983040|m;if(!(p&16)){e=k;break F}I:{if(s>>>0>4){e=k;break I}f=0;if(k>>>0>=w>>>0){e=k}else{f=K[k|0];e=k+1|0}j=f<>>5|0;m=j<<20&15728640|m;if(!(j&16)){j=p;break F}if(!(s>>>0>4)){q=0;if(e>>>0>>0){q=K[e|0];e=e+1|0}p=q<>>5|0;m=p<<24&251658240|m;if(!(p&16)){e=f;j=k;break F}J:{if(s>>>0>4){e=f;break J}q=0;if(f>>>0>=w>>>0){e=f}else{q=K[f|0];e=f+1|0}k=q<>>5|0;m=k<<28|m}U=m+2|0}if(M[z+16>>2]<=x>>>0){break b}H[(J[z+12>>2]+(x<<2)|0)+2|0]=l>>>4;aa=l}K:{L:{M:{N:{O:{P:{Q:{R:{S:{T:{U:{V:{W:{o=aa&3;switch(o-1|0){case 0:break U;case 1:break V;case 2:break W;default:break T}}if(!J[a+68>>2]){break d}X:{if(s>>>0>15){break X}m=0;if(e>>>0>>0){m=K[e|0];e=e+1|0}f=s+8|0;j=m<>>0>7){s=f;break X}m=0;if(e>>>0>>0){m=K[e|0];e=e+1|0}s=s|16;j=m<>>0>=M[a+80>>2]){break c}k=J[J[a+76>>2]+(f<<2)>>2];Y:{if((k|0)<0){f=J[a+88>>2];p=J[a+92>>2];m=10;while(1){k=(j>>>m&1)+(k^-1)|0;if(k>>>0>=p>>>0){break c}m=m+1|0;k=I[f+(k<<1)>>1];if((k|0)<0){continue}break}break Y}m=k>>>16|0;k=k&65535}p=0;f=k+E|0;k=J[D+8>>2];E=f-(f>>>0>=k>>>0?k:0)|0;s=s-m|0;j=j>>>m|0;break S}if(!i){if(!(x?O:0)){if(!G){break g}break h}f=x-1|0;if(f>>>0>=M[_+4>>2]){break b}E=L[J[_>>2]+(f<<2)>>1];p=0;break S}f=x+ga|0;if(f>>>0>=M[F+4>>2]){break b}f=J[J[F>>2]+(f<<2)>>2];E=f&65535;p=f>>>16|0;break S}if(O){if(M[_+4>>2]<=x>>>0){break b}E=L[J[_>>2]+(x<<2)>>1];p=0;break S}if(G){break h}break g}p=0;if(!x){break R}}if(M[ha+4>>2]<=x>>>0){break b}y=x<<2;I[y+J[ha>>2]>>1]=E;if((o|0)==2?i:0){break L}f=ea-1|0;if(ea){break N}if(!J[a+104>>2]){break d}Z:{if(s>>>0>15){break Z}m=0;if(e>>>0>>0){m=K[e|0];e=e+1|0}f=s+8|0;j=m<>>0>7){s=f;break Z}m=0;if(e>>>0>>0){m=K[e|0];e=e+1|0}s=s|16;j=m<>>0>=M[a+116>>2]){break c}p=J[J[a+112>>2]+(f<<2)>>2];_:{if((p|0)<0){f=J[a+124>>2];k=J[a+128>>2];m=10;while(1){o=(j>>>m&1)+(p^-1)|0;if(o>>>0>=k>>>0){break c}m=m+1|0;p=I[f+(o<<1)>>1];if((p|0)<0){continue}break}break _}m=p>>>16|0;p=p&65535}s=s-m|0;j=j>>>m|0;if((p|0)==(la|0)){if(!J[a+140>>2]){break d}$:{if(s>>>0>15){break $}m=0;if(e>>>0>>0){m=K[e|0];e=e+1|0}f=s+8|0;j=m<>>0>7){s=f;break $}m=0;if(e>>>0>>0){m=K[e|0];e=e+1|0}s=s|16;j=m<>>0>=M[a+152>>2]){break c}m=J[J[a+148>>2]+(f<<2)>>2];aa:{if((m|0)<0){f=J[a+160>>2];k=J[a+164>>2];p=10;while(1){m=(j>>>p&1)+(m^-1)|0;if(m>>>0>=k>>>0){break c}p=p+1|0;m=I[f+(m<<1)>>1];if((m|0)<0){continue}break}break aa}p=m>>>16|0;m=m&65535}s=s-p|0;j=j>>>p|0;if((m|0)!=63){break O}if(s>>>0<8){break Q}break P}ea=0;k=J[D+20>>2];if((p|0)>=(k|0)){break M}if(!J[a+172>>2]){break L}f=J[t+28>>2];k=f+1|0;J[t+28>>2]=k;m=J[t+20>>2];if(m>>>0<=f>>>0){break b}J[J[t+16>>2]+(f<<2)>>2]=p;if((k|0)!=(m|0)){break L}J[t+28>>2]=k>>>1;break L}if(G){break h}break g}m=0;if(e>>>0>>0){m=K[e|0];e=e+1|0}j=m<>>8|0;if(!(j&128)){e=k;j=p;break O}ba:{if(s>>>0>7){e=k;break ba}f=0;if(k>>>0>=w>>>0){e=k}else{f=K[k|0];e=k+1|0}p=f<>>8|0;if(!(p&128)){break O}if(!(s>>>0>7)){f=0;if(e>>>0>>0){f=K[e|0];e=e+1|0}j=f<>>8|0;m=j<<14&2080768|m;if(!(j&128)){e=k;j=p;break O}ca:{if(s>>>0>7){f=k;break ca}q=0;if(k>>>0>=w>>>0){f=k}else{q=K[k|0];f=k+1|0}p=q<>>8|0;m=p<<21&266338304|m;if(!(p&128)){e=f;j=k;break O}da:{if(s>>>0>7){e=f;break da}q=0;if(f>>>0>=w>>>0){e=f}else{q=K[f|0];e=f+1|0}k=q<>>8|0}if(m+3>>>0>R>>>0){break K}f=m+2|0}ea=f;p=J[D+20>>2];k=p}if(!J[a+172>>2]){break w}f=p-k|0;m=J[t+20>>2];if((f|0)>=(m|0)){if(G){break h}break g}if(f>>>0>=m>>>0){break b}k=(k|0)==(p|0);m=J[t+16>>2];o=m+(f<<2)|0;p=J[o>>2];if(k){break L}f=m+(f<<1&-4)|0;k=J[f>>2];J[f>>2]=p;J[o>>2]=k}f=J[D+8>>2];if(f>>>0<=E>>>0){break K}if(M[D+20>>2]>p>>>0){break x}}if(G){break h}break g}ea:{if(i){f=x+ga|0;if(f>>>0>=M[F+4>>2]){break ea}J[J[F>>2]+(f<<2)>>2]=p<<16|E;f=J[D+8>>2]}if(f>>>0>E>>>0){if(M[D+20>>2]>p>>>0){f=($|0)>=4?4:$;u=f>>>0>1;k=u?f:1;f=J[D+4>>2]+(E<<3)|0;C=J[D+16>>2]+P(p,11)|0;fa:{ga:{ha:{ia:{ja:{ka:{la:{ma:{na:{oa:{pa:{qa:{switch(g|0){case 27:if((h|0)!=2){break pa}m=(K[f+4|0]<<4)+168640|0;f=K[f+1|0];f=(f<<3|f>>>2)&255;o=J[m+12>>2]+f|0;o=(o|0)>0?o:0;o=P((o|0)>=255?255:o,15)+128|0;I[t+6>>1]=(o>>>8|0)+o>>>8;o=f+J[m+8>>2]|0;o=(o|0)>0?o:0;o=P((o|0)>=255?255:o,15)+128|0;I[t+4>>1]=(o>>>8|0)+o>>>8;o=f+J[m+4>>2]|0;o=(o|0)>0?o:0;o=P((o|0)>=255?255:o,15)+128|0;I[t+2>>1]=(o>>>8|0)+o>>>8;f=f+J[m>>2]|0;f=(f|0)>0?f:0;f=P((f|0)>=255?255:f,15)+128|0;I[t>>1]=(f>>>8|0)+f>>>8;if((N|0)==(Q|0)){break n}r=k&-2;v=k&1;k=(y+T<<1)+b|0;o=0;while(1){ra:{if((n|0)==(y|0)){break ra}f=K[o+C|0];p=0;q=0;if(u){while(1){m=p<<1;I[m+k>>1]=L[((f>>>m&3)<<1)+t>>1];m=m|2;I[m+k>>1]=L[((f>>>m&3)<<1)+t>>1];p=p+2|0;q=q+2|0;if((r|0)!=(q|0)){continue}break}}if(!v){break ra}m=p<<1;I[m+k>>1]=L[((f>>>m&3)<<1)+t>>1]}k=k+X|0;o=o+1|0;if((S|0)!=(o|0)){continue}break};break n;default:Z(114101,40075,8614,70577);B();case 2:break fa;case 4:break ga;case 6:break ha;case 7:break ia;case 8:case 9:break ja;case 10:break ka;case 11:break la;case 12:break ma;case 13:break na;case 15:break oa;case 18:break qa;case 16:case 17:break n;case 28:break o;case 26:break p;case 24:case 25:break q;case 22:break r;case 21:break s;case 23:break t;case 20:break u;case 0:break v}}Z(114101,40075,8608,70577);B()}Z(21765,40075,8571,70577);B()}Z(114101,40075,8325,70577);B()}Z(114101,40075,8310,70577);B()}Z(114101,40075,8300,70577);B()}Z(114101,40075,8290,70577);B()}Z(114101,40075,8280,70577);B()}Z(114101,40075,8270,70577);B()}Z(114101,40075,8258,70577);B()}Z(114101,40075,8207,70577);B()}Z(114101,40075,8172,70577);B()}Z(114101,40075,8162,70577);B()}break c}break c}break b}Z(112303,40075,8082,70577);B()}k=K[f+4|0];if(k>>>0<=7){m=P(x+fa|0,h)+b|0;o=K[f|0];ia=ia&7|(o>>>0>=31?31:o)<<3;o=K[f+2|0];ja=ja&7|(o>>>0>=31?31:o)<<3;ca=ca&3|k<<5|k<<2;f=K[f+1|0];ka=ka&7|(f>>>0>=31?31:f)<<3;J[m>>2]=ia|(ja<<16|ca<<24|ka<<8);J[m+4>>2]=K[C+4|0]|K[C+5|0]<<8|(K[C+6|0]<<16|K[C+7|0]<<24);break n}Z(103419,40075,420,67400);B()}f=P(x+fa|0,h)+b|0;I[f+2>>1]=p;I[f>>1]=E;break n}sa:{if((h|0)==4){m=(K[f+4|0]<<4)+168640|0;f=K[f+1|0];f=f<<3|f>>>2;o=J[m+12>>2]+f|0;o=(o|0)>0?o:0;J[t+12>>2]=(o|0)>=255?255:o;o=f+J[m+8>>2]|0;o=(o|0)>0?o:0;J[t+8>>2]=(o|0)>=255?255:o;o=f+J[m+4>>2]|0;o=(o|0)>0?o:0;J[t+4>>2]=(o|0)>=255?255:o;f=f+J[m>>2]|0;f=(f|0)>0?f:0;J[t>>2]=(f|0)>=255?255:f;m=(y+T<<2)+b|0;if((n-y|0)>3){k=0;if((N|0)==(Q|0)){break n}while(1){f=K[k+C|0];H[m+3|0]=J[((f&3)<<2|t)>>2];H[m+7|0]=J[(f&12|t)>>2];H[m+11|0]=J[(f>>>2&12|t)>>2];H[m+15|0]=J[(f>>>4&12|t)>>2];m=m+W|0;k=k+1|0;if((S|0)!=(k|0)){continue}break}break n}if((N|0)==(Q|0)){break n}q=k&-2;r=k&1;o=0;break sa}Z(21823,40075,8357,70577);B()}while(1){ta:{if((n|0)==(y|0)){break ta}k=K[o+C|0];p=0;f=0;if(u){while(1){H[((p<<2)+m|0)+3|0]=J[((k>>>(p<<1)&3)<<2|t)>>2];v=p|1;H[((v<<2)+m|0)+3|0]=J[((k>>>(v<<1)&3)<<2|t)>>2];p=p+2|0;f=f+2|0;if((q|0)!=(f|0)){continue}break}}if(!r){break ta}H[((p<<2)+m|0)+3|0]=J[((k>>>(p<<1)&3)<<2|t)>>2]}m=m+W|0;o=o+1|0;if((S|0)!=(o|0)){continue}break}break n}if((h|0)==4){p=K[f|0];o=K[f+1|0];q=K[f+4|0];m=K[f+2|0];H[t+11|0]=255;H[t+7|0]=255;H[t+3|0]=255;f=(q<<4)+168640|0;q=J[f+12>>2];m=(m<<3|m>>>2)&255;u=q+m|0;u=(u|0)>0?u:0;H[t+14|0]=(u|0)>=255?255:u;o=(o<<3|o>>>2)&255;u=o+q|0;u=(u|0)>0?u:0;H[t+13|0]=(u|0)>=255?255:u;p=(p<<3|p>>>2)&255;q=p+q|0;q=(q|0)>0?q:0;H[t+12|0]=(q|0)>=255?255:q;q=J[f+8>>2];u=q+m|0;u=(u|0)>0?u:0;H[t+10|0]=(u|0)>=255?255:u;u=o+q|0;u=(u|0)>0?u:0;H[t+9|0]=(u|0)>=255?255:u;q=p+q|0;q=(q|0)>0?q:0;H[t+8|0]=(q|0)>=255?255:q;q=J[f+4>>2];u=q+m|0;u=(u|0)>0?u:0;H[t+6|0]=(u|0)>=255?255:u;u=o+q|0;u=(u|0)>0?u:0;H[t+5|0]=(u|0)>=255?255:u;q=p+q|0;q=(q|0)>0?q:0;H[t+4|0]=(q|0)>=255?255:q;f=J[f>>2];m=f+m|0;m=(m|0)>0?m:0;H[t+2|0]=(m|0)>=255?255:m;m=f+o|0;m=(m|0)>0?m:0;H[t+1|0]=(m|0)>=255?255:m;f=f+p|0;f=(f|0)>0?f:0;H[t|0]=(f|0)>=255?255:f;if((N|0)==(Q|0)){break n}q=(y+T<<2)+b|0;o=0;while(1){if((n|0)!=(y|0)){u=K[o+C|0];p=0;while(1){f=(p<<2)+q|0;m=(u>>>(p<<1)&3)<<2|t;H[f|0]=K[m|0];H[f+1|0]=K[m+1|0];H[f+2|0]=K[m+2|0];p=p+1|0;if((k|0)!=(p|0)){continue}break}}q=q+W|0;o=o+1|0;if((S|0)!=(o|0)){continue}break}break n}Z(21823,40075,8397,70577);B()}if((h|0)==4){p=K[f|0];o=K[f+1|0];q=K[f+4|0];m=K[f+2|0];H[t+11|0]=255;H[t+7|0]=255;H[t+3|0]=255;f=(q<<4)+168640|0;q=J[f+12>>2];m=(m<<3|m>>>2)&255;u=q+m|0;u=(u|0)>0?u:0;H[t+14|0]=(u|0)>=255?255:u;o=(o<<3|o>>>2)&255;u=o+q|0;u=(u|0)>0?u:0;H[t+13|0]=(u|0)>=255?255:u;p=(p<<3|p>>>2)&255;q=p+q|0;q=(q|0)>0?q:0;H[t+12|0]=(q|0)>=255?255:q;q=J[f+8>>2];u=q+m|0;u=(u|0)>0?u:0;H[t+10|0]=(u|0)>=255?255:u;u=o+q|0;u=(u|0)>0?u:0;H[t+9|0]=(u|0)>=255?255:u;q=p+q|0;q=(q|0)>0?q:0;H[t+8|0]=(q|0)>=255?255:q;q=J[f+4>>2];u=q+m|0;u=(u|0)>0?u:0;H[t+6|0]=(u|0)>=255?255:u;u=o+q|0;u=(u|0)>0?u:0;H[t+5|0]=(u|0)>=255?255:u;q=p+q|0;q=(q|0)>0?q:0;H[t+4|0]=(q|0)>=255?255:q;f=J[f>>2];m=f+m|0;m=(m|0)>0?m:0;H[t+2|0]=(m|0)>=255?255:m;m=f+o|0;m=(m|0)>0?m:0;H[t+1|0]=(m|0)>=255?255:m;f=f+p|0;f=(f|0)>0?f:0;H[t|0]=(f|0)>=255?255:f;if((N|0)==(Q|0)){break n}q=(y+T<<2)+b|0;o=0;while(1){if((n|0)!=(y|0)){u=K[o+C|0];p=0;while(1){f=(p<<2)+q|0;m=(u>>>(p<<1)&3)<<2|t;H[f|0]=K[m|0];H[f+1|0]=K[m+1|0];m=K[m+2|0];H[f+3|0]=255;H[f+2|0]=m;p=p+1|0;if((k|0)!=(p|0)){continue}break}}q=q+W|0;o=o+1|0;if((S|0)!=(o|0)){continue}break}break n}Z(21823,40075,8426,70577);B()}if((h|0)==2){m=(K[f+4|0]<<4)+168640|0;q=J[m+12>>2];o=K[f+1|0];o=(o<<3|o>>>2)&255;p=q+o|0;p=(p|0)>0?p:0;p=P((p|0)>=255?255:p,63)+128|0;V=(p>>>8|0)+p>>>3&8160;p=K[f|0];p=(p<<3|p>>>2)&255;r=p+q|0;r=(r|0)>0?r:0;r=(r|0)>=255?255:r;v=q;f=K[f+2|0];q=(f<<3|f>>>2)&255;f=v+q|0;f=(f|0)>0?f:0;v=(f|0)>=255?255:f;f=(g|0)==24;A=P(f?r:v,31)+128|0;r=P(f?v:r,31)+128|0;I[t+6>>1]=V|(A>>>8|0)+A<<3&63488|((r>>>8|0)+r&32512)>>>8;r=J[m+8>>2];v=r+o|0;v=(v|0)>0?v:0;v=P((v|0)>=255?255:v,63)+128|0;V=(v>>>8|0)+v>>>3&8160;v=p+r|0;v=(v|0)>0?v:0;v=(v|0)>=255?255:v;r=q+r|0;r=(r|0)>0?r:0;r=(r|0)>=255?255:r;A=P(f?v:r,31)+128|0;r=P(f?r:v,31)+128|0;I[t+4>>1]=V|(A>>>8|0)+A<<3&63488|((r>>>8|0)+r&32512)>>>8;r=J[m+4>>2];v=r+o|0;v=(v|0)>0?v:0;v=P((v|0)>=255?255:v,63)+128|0;V=(v>>>8|0)+v>>>3&8160;v=p+r|0;v=(v|0)>0?v:0;v=(v|0)>=255?255:v;r=q+r|0;r=(r|0)>0?r:0;r=(r|0)>=255?255:r;A=P(f?v:r,31)+128|0;r=P(f?r:v,31)+128|0;I[t+2>>1]=V|(A>>>8|0)+A<<3&63488|((r>>>8|0)+r&32512)>>>8;m=J[m>>2];o=m+o|0;o=(o|0)>0?o:0;o=P((o|0)>=255?255:o,63)+128|0;v=(o>>>8|0)+o>>>3&8160;o=m+p|0;o=(o|0)>0?o:0;o=(o|0)>=255?255:o;m=m+q|0;m=(m|0)>0?m:0;m=(m|0)>=255?255:m;p=P(f?o:m,31)+128|0;f=P(f?m:o,31)+128|0;I[t>>1]=v|(p>>>8|0)+p<<3&63488|((f>>>8|0)+f&32512)>>>8;if((N|0)==(Q|0)){break n}r=k&-2;v=k&1;k=(y+T<<1)+b|0;o=0;while(1){ua:{if((n|0)==(y|0)){break ua}f=K[o+C|0];p=0;q=0;if(u){while(1){m=p<<1;I[m+k>>1]=L[((f>>>m&3)<<1)+t>>1];m=m|2;I[m+k>>1]=L[((f>>>m&3)<<1)+t>>1];p=p+2|0;q=q+2|0;if((r|0)!=(q|0)){continue}break}}if(!v){break ua}m=p<<1;I[m+k>>1]=L[((f>>>m&3)<<1)+t>>1]}k=k+X|0;o=o+1|0;if((S|0)!=(o|0)){continue}break}break n}Z(21765,40075,8457,70577);B()}if((h|0)==2){m=(K[f+4|0]<<4)+168640|0;q=J[m+12>>2];o=K[f|0];o=(o<<3|o>>>2)&255;p=q+o|0;p=(p|0)>0?p:0;p=P((p|0)>=255?255:p,15)+128|0;v=(p>>>8|0)+p<<4&61440;p=K[f+1|0];p=(p<<3|p>>>2)&255;r=p+q|0;r=(r|0)>0?r:0;r=P((r|0)>=255?255:r,15)+128|0;f=K[f+2|0];f=(f<<3|f>>>2)&255;q=f+q|0;q=(q|0)>0?q:0;q=P((q|0)>=255?255:q,15)+128|0;I[t+6>>1]=v|(r>>>8|0)+r&16128|(q>>>8|0)+q>>>4&1008;q=J[m+8>>2];r=q+o|0;r=(r|0)>0?r:0;r=P((r|0)>=255?255:r,15)+128|0;v=(r>>>8|0)+r<<4&61440;r=p+q|0;r=(r|0)>0?r:0;r=P((r|0)>=255?255:r,15)+128|0;q=f+q|0;q=(q|0)>0?q:0;q=P((q|0)>=255?255:q,15)+128|0;I[t+4>>1]=v|(r>>>8|0)+r&16128|(q>>>8|0)+q>>>4&1008;q=J[m+4>>2];r=q+o|0;r=(r|0)>0?r:0;r=P((r|0)>=255?255:r,15)+128|0;v=(r>>>8|0)+r<<4&61440;r=p+q|0;r=(r|0)>0?r:0;r=P((r|0)>=255?255:r,15)+128|0;q=f+q|0;q=(q|0)>0?q:0;q=P((q|0)>=255?255:q,15)+128|0;I[t+2>>1]=v|(r>>>8|0)+r&16128|(q>>>8|0)+q>>>4&1008;m=J[m>>2];o=m+o|0;o=(o|0)>0?o:0;o=P((o|0)>=255?255:o,15)+128|0;q=(o>>>8|0)+o<<4&61440;o=m+p|0;o=(o|0)>0?o:0;o=P((o|0)>=255?255:o,15)+128|0;f=f+m|0;f=(f|0)>0?f:0;f=P((f|0)>=255?255:f,15)+128|0;I[t>>1]=q|(o>>>8|0)+o&16128|(f>>>8|0)+f>>>4&1008;if((N|0)==(Q|0)){break n}r=k&-2;v=k&1;k=(y+T<<1)+b|0;f=0;while(1){va:{if((n|0)==(y|0)){break va}m=K[f+C|0];p=0;q=0;if(u){while(1){o=p<<1;A=o+k|0;I[A>>1]=L[((m>>>o&3)<<1)+t>>1]|L[A>>1]&15;o=o|2;A=o+k|0;I[A>>1]=L[((m>>>o&3)<<1)+t>>1]|L[A>>1]&15;p=p+2|0;q=q+2|0;if((r|0)!=(q|0)){continue}break}}if(!v){break va}o=p<<1;p=o+k|0;I[p>>1]=L[((m>>>o&3)<<1)+t>>1]|L[p>>1]&15}k=k+X|0;f=f+1|0;if((S|0)!=(f|0)){continue}break}break n}Z(21765,40075,8500,70577);B()}if((h|0)!=2){break i}m=(K[f+4|0]<<4)+168640|0;q=J[m+12>>2];o=K[f+1|0];o=(o<<3|o>>>2)&255;p=q+o|0;p=(p|0)>0?p:0;p=P((p|0)>=255?255:p,15)+128|0;v=(p>>>8|0)+p&16128;p=K[f|0];p=(p<<3|p>>>2)&255;r=p+q|0;r=(r|0)>0?r:0;r=P((r|0)>=255?255:r,15)+128|0;f=K[f+2|0];f=(f<<3|f>>>2)&255;q=f+q|0;q=(q|0)>0?q:0;q=P((q|0)>=255?255:q,15)+128|0;I[t+6>>1]=v|(r>>>8|0)+r<<4&61440|((q>>>8|0)+q&16128)>>>4|15;q=J[m+8>>2];r=q+o|0;r=(r|0)>0?r:0;r=P((r|0)>=255?255:r,15)+128|0;v=(r>>>8|0)+r&16128;r=p+q|0;r=(r|0)>0?r:0;r=P((r|0)>=255?255:r,15)+128|0;q=f+q|0;q=(q|0)>0?q:0;q=P((q|0)>=255?255:q,15)+128|0;I[t+4>>1]=v|(r>>>8|0)+r<<4&61440|((q>>>8|0)+q&16128)>>>4|15;q=J[m+4>>2];r=q+o|0;r=(r|0)>0?r:0;r=P((r|0)>=255?255:r,15)+128|0;v=(r>>>8|0)+r&16128;r=p+q|0;r=(r|0)>0?r:0;r=P((r|0)>=255?255:r,15)+128|0;q=f+q|0;q=(q|0)>0?q:0;q=P((q|0)>=255?255:q,15)+128|0;I[t+2>>1]=v|(r>>>8|0)+r<<4&61440|((q>>>8|0)+q&16128)>>>4|15;m=J[m>>2];o=m+o|0;o=(o|0)>0?o:0;o=P((o|0)>=255?255:o,15)+128|0;q=(o>>>8|0)+o&16128;o=m+p|0;o=(o|0)>0?o:0;o=P((o|0)>=255?255:o,15)+128|0;f=f+m|0;f=(f|0)>0?f:0;f=P((f|0)>=255?255:f,15)+128|0;I[t>>1]=q|(o>>>8|0)+o<<4&61440|((f>>>8|0)+f&16128)>>>4|15;if((N|0)==(Q|0)){break n}r=k&-2;v=k&1;k=(y+T<<1)+b|0;o=0;while(1){wa:{if((n|0)==(y|0)){break wa}f=K[o+C|0];p=0;q=0;if(u){while(1){m=p<<1;I[m+k>>1]=L[((f>>>m&3)<<1)+t>>1];m=m|2;I[m+k>>1]=L[((f>>>m&3)<<1)+t>>1];p=p+2|0;q=q+2|0;if((r|0)!=(q|0)){continue}break}}if(!v){break wa}m=p<<1;I[m+k>>1]=L[((f>>>m&3)<<1)+t>>1]}k=k+X|0;o=o+1|0;if((S|0)!=(o|0)){continue}break}}aa=aa>>>2|0;$=$-4|0;x=x+1|0;if((x|0)!=(c|0)){continue}break}Y=Y-4|0;O=O+1|0;ba=O>>>0>=d>>>0;if((d|0)!=(O|0)){continue}break}break g}Z(72594,40075,7830,70577);B()}Z(21765,40075,8540,70577);B()}cj(G)}if(U|!ba){break f}ma=1;if(!G){break f}cj(G)}a=J[t+16>>2];if(!a){break e}cj(a)}Ui=t+32|0;return ma}Z(144962,54542,447,48247);B()}Z(58877,54122,365,84789);B()}Z(58877,54122,366,84789);B()}Z(114101,54542,437,82187);B()}function kta(a,b,c,d){a=a|0;b=b|0;c=c|0;d=d|0;var e=0,f=0,g=Q(0),h=Q(0),i=Q(0),j=Q(0),k=Q(0),l=Q(0),m=Q(0),n=Q(0),o=Q(0),p=Q(0),q=Q(0),r=Q(0),s=Q(0),t=Q(0),u=Q(0),v=Q(0),w=0,x=Q(0),y=Q(0),z=Q(0),A=0,B=0,C=Q(0),D=Q(0),E=Q(0),F=Q(0),G=Q(0),H=Q(0),I=0,K=0;e=Ui-208|0;Ui=e;f=Zi[J[J[a>>2]+16>>2]](a)|0;Zi[J[J[f>>2]+52>>2]](f,b,Q(1));a:{b:{c:{d:{e:{f:{g:{h:{i:{j:{f=J[c+4>>2];switch(f|0){case 31:break j;case 28:break c;case 13:break d;case 11:break e;case 10:break f;case 9:break g;case 8:break h;case 0:break i;default:break b}}f=J[c+16>>2];if((f|0)<=0){break a}while(1){w=f-1|0;B=J[c+24>>2]+P(w,80)|0;A=J[B+64>>2];r=N[B+56>>2];o=N[B+48>>2];q=N[B+52>>2];l=N[B+32>>2];i=N[B>>2];k=N[B+16>>2];m=N[B+36>>2];x=N[B+4>>2];z=N[B+20>>2];y=N[B+40>>2];C=N[B+8>>2];D=N[B+24>>2];E=N[b+48>>2];F=N[b+52>>2];G=N[b+56>>2];g=N[b+8>>2];h=N[b>>2];j=N[b+4>>2];v=N[b+24>>2];u=N[b+16>>2];t=N[b+20>>2];s=N[b+40>>2];p=N[b+32>>2];n=N[b+36>>2];J[e+60>>2]=0;J[e+44>>2]=0;J[e+28>>2]=0;J[e+12>>2]=0;N[e+40>>2]=Q(y*s)+Q(Q(C*p)+Q(D*n));N[e+36>>2]=Q(m*s)+Q(Q(x*p)+Q(z*n));N[e+32>>2]=Q(l*s)+Q(Q(i*p)+Q(k*n));N[e+24>>2]=Q(y*v)+Q(Q(C*u)+Q(D*t));N[e+20>>2]=Q(m*v)+Q(Q(x*u)+Q(z*t));N[e+16>>2]=Q(l*v)+Q(Q(i*u)+Q(k*t));N[e+8>>2]=Q(y*g)+Q(Q(C*h)+Q(D*j));N[e+4>>2]=Q(m*g)+Q(Q(x*h)+Q(z*j));N[e>>2]=Q(l*g)+Q(Q(i*h)+Q(k*j));N[e+56>>2]=G+Q(Q(s*r)+Q(Q(p*o)+Q(q*n)));N[e+52>>2]=F+Q(Q(v*r)+Q(Q(u*o)+Q(q*t)));N[e+48>>2]=E+Q(Q(g*r)+Q(Q(h*o)+Q(q*j)));Zi[J[J[a>>2]+24>>2]](a,e,A,d);B=f>>>0>1;f=w;if(B){continue}break}break a}f=J[c+40>>2];J[e+8>>2]=J[c+36>>2];J[e+12>>2]=f;f=J[c+32>>2];J[e>>2]=J[c+28>>2];J[e+4>>2]=f;g=Q(Zi[J[J[c>>2]+44>>2]](c));h=Q(Zi[J[J[c>>2]+44>>2]](c));j=Q(Q(Zi[J[J[c>>2]+44>>2]](c))+N[e+8>>2]);N[e+8>>2]=j;g=Q(g+N[e>>2]);N[e>>2]=g;h=Q(h+N[e+4>>2]);N[e+4>>2]=h;a=Zi[J[J[a>>2]+16>>2]](a)|0;J[e+204>>2]=0;N[e+200>>2]=-j;N[e+196>>2]=-h;N[e+192>>2]=-g;Zi[J[J[a>>2]+68>>2]](a,e+192|0,e,b,d);break a}g=Q(Zi[J[J[c>>2]+44>>2]](c));Gv(Zi[J[J[a>>2]+16>>2]](a)|0,g,b);break a}f=J[c+92>>2];if((f|0)<=0){break a}while(1){d=f-1|0;w=J[c+100>>2]+(d<<4)|0;g=N[w+8>>2];h=N[w>>2];j=N[w+4>>2];w=Zi[J[J[a>>2]+16>>2]](a)|0;l=N[J[c+120>>2]+(d<<2)>>2];i=N[b+48>>2];k=N[b+52>>2];m=N[b+56>>2];v=N[b+8>>2];u=N[b>>2];t=N[b+4>>2];s=N[b+24>>2];p=N[b+16>>2];n=N[b+20>>2];r=N[b+40>>2];o=N[b+32>>2];q=N[b+36>>2];J[e+60>>2]=0;J[e+44>>2]=0;J[e+28>>2]=0;J[e+12>>2]=0;x=Q(o*Q(0));z=Q(q*Q(0));N[e+40>>2]=r+Q(x+z);y=Q(r*Q(0));N[e+36>>2]=y+Q(x+q);N[e+32>>2]=y+Q(o+z);x=Q(p*Q(0));z=Q(n*Q(0));N[e+24>>2]=s+Q(x+z);y=Q(s*Q(0));N[e+20>>2]=y+Q(x+n);N[e+16>>2]=y+Q(p+z);x=Q(u*Q(0));z=Q(t*Q(0));N[e+8>>2]=v+Q(x+z);y=Q(v*Q(0));N[e+4>>2]=y+Q(x+t);N[e>>2]=y+Q(u+z);N[e+56>>2]=m+Q(Q(r*g)+Q(Q(o*h)+Q(j*q)));N[e+52>>2]=k+Q(Q(s*g)+Q(Q(p*h)+Q(j*n)));N[e+48>>2]=i+Q(Q(v*g)+Q(Q(u*h)+Q(j*t)));Gv(w,l,e);w=f>>>0>1;f=d;if(w){continue}break}break a}w=c+28|0;c=J[c+52>>2];f=(c+2|0)%3<<2;v=N[w+f>>2];A=w;w=c<<2;g=N[A+w>>2];J[e+200>>2]=0;J[e+204>>2]=0;J[e+192>>2]=0;J[e+196>>2]=0;B=e+192|0;N[B+w>>2]=-g;J[e+184>>2]=0;J[e+188>>2]=0;J[e+176>>2]=0;J[e+180>>2]=0;A=w;w=e+176|0;N[A+w>>2]=g;A=J[b+12>>2];J[e+8>>2]=J[b+8>>2];J[e+12>>2]=A;A=J[b+4>>2];J[e>>2]=J[b>>2];J[e+4>>2]=A;A=J[b+28>>2];J[e+24>>2]=J[b+24>>2];J[e+28>>2]=A;A=J[b+20>>2];J[e+16>>2]=J[b+16>>2];J[e+20>>2]=A;A=J[b+44>>2];J[e+40>>2]=J[b+40>>2];J[e+44>>2]=A;A=J[b+36>>2];J[e+32>>2]=J[b+32>>2];J[e+36>>2]=A;u=N[b+8>>2];t=N[b+24>>2];g=N[b+40>>2];s=N[b+48>>2];p=N[b>>2];n=N[b+4>>2];r=N[b+52>>2];o=N[b+16>>2];q=N[b+20>>2];h=N[b+56>>2];j=N[b+32>>2];l=N[b+36>>2];J[e+60>>2]=0;i=h;k=g;g=N[e+200>>2];h=N[e+192>>2];m=Q(j*h);j=N[e+196>>2];N[e+56>>2]=i+Q(Q(k*g)+Q(m+Q(l*j)));N[e+52>>2]=r+Q(Q(t*g)+Q(Q(o*h)+Q(j*q)));N[e+48>>2]=s+Q(Q(u*g)+Q(Q(p*h)+Q(n*j)));Gv(Zi[J[J[a>>2]+16>>2]](a)|0,v,e);A=J[b+12>>2];J[e+8>>2]=J[b+8>>2];J[e+12>>2]=A;A=J[b+4>>2];J[e>>2]=J[b>>2];J[e+4>>2]=A;A=J[b+28>>2];J[e+24>>2]=J[b+24>>2];J[e+28>>2]=A;A=J[b+20>>2];J[e+16>>2]=J[b+16>>2];J[e+20>>2]=A;A=J[b+44>>2];J[e+40>>2]=J[b+40>>2];J[e+44>>2]=A;A=J[b+36>>2];J[e+32>>2]=J[b+32>>2];J[e+36>>2]=A;u=N[b+8>>2];t=N[b+24>>2];g=N[b+40>>2];s=N[b+48>>2];p=N[b>>2];n=N[b+4>>2];r=N[b+52>>2];o=N[b+16>>2];q=N[b+20>>2];h=N[b+56>>2];j=N[b+32>>2];l=N[b+36>>2];J[e+60>>2]=0;i=h;k=g;g=N[e+184>>2];h=N[e+176>>2];m=Q(j*h);j=N[e+180>>2];N[e+56>>2]=i+Q(Q(k*g)+Q(m+Q(l*j)));N[e+52>>2]=r+Q(Q(t*g)+Q(Q(o*h)+Q(j*q)));N[e+48>>2]=s+Q(Q(u*g)+Q(Q(p*h)+Q(n*j)));Gv(Zi[J[J[a>>2]+16>>2]](a)|0,v,e);g=N[b+48>>2];h=N[b+52>>2];j=N[b+56>>2];c=(c+1|0)%3<<2;A=c+w|0;N[A>>2]=v;K=c+B|0;N[K>>2]=v;I=Zi[J[J[a>>2]+16>>2]](a)|0;u=N[b+8>>2];t=N[b+24>>2];s=N[b+40>>2];p=N[b>>2];n=N[b+4>>2];r=N[b+16>>2];o=N[b+20>>2];q=N[b+32>>2];l=N[b+36>>2];J[e+12>>2]=0;i=N[e+200>>2];k=N[e+192>>2];m=N[e+196>>2];N[e+8>>2]=j+Q(Q(s*i)+Q(Q(q*k)+Q(l*m)));N[e+4>>2]=h+Q(Q(t*i)+Q(Q(r*k)+Q(m*o)));N[e>>2]=g+Q(Q(u*i)+Q(Q(p*k)+Q(n*m)));J[e+172>>2]=0;i=s;s=N[e+184>>2];k=q;q=N[e+176>>2];m=l;l=N[e+180>>2];N[e+168>>2]=j+Q(Q(i*s)+Q(Q(k*q)+Q(m*l)));N[e+164>>2]=h+Q(Q(t*s)+Q(Q(r*q)+Q(o*l)));N[e+160>>2]=g+Q(Q(u*s)+Q(Q(p*q)+Q(n*l)));c=e+160|0;Zi[J[J[I>>2]+8>>2]](I,e,c,d);u=Q(-v);N[K>>2]=u;N[A>>2]=u;I=Zi[J[J[a>>2]+16>>2]](a)|0;t=N[b+8>>2];s=N[b+24>>2];p=N[b+40>>2];n=N[b>>2];r=N[b+4>>2];o=N[b+16>>2];q=N[b+20>>2];l=N[b+32>>2];i=N[b+36>>2];J[e+12>>2]=0;k=N[e+200>>2];m=N[e+192>>2];x=N[e+196>>2];N[e+8>>2]=j+Q(Q(p*k)+Q(Q(l*m)+Q(i*x)));N[e+4>>2]=h+Q(Q(s*k)+Q(Q(o*m)+Q(x*q)));N[e>>2]=g+Q(Q(t*k)+Q(Q(n*m)+Q(r*x)));J[e+172>>2]=0;k=p;p=N[e+184>>2];m=l;l=N[e+176>>2];x=i;i=N[e+180>>2];N[e+168>>2]=j+Q(Q(k*p)+Q(Q(m*l)+Q(x*i)));N[e+164>>2]=h+Q(Q(s*p)+Q(Q(o*l)+Q(q*i)));N[e+160>>2]=g+Q(Q(t*p)+Q(Q(n*l)+Q(r*i)));Zi[J[J[I>>2]+8>>2]](I,e,c,d);J[K>>2]=0;J[A>>2]=0;B=f+B|0;N[B>>2]=v;w=f+w|0;N[w>>2]=v;f=Zi[J[J[a>>2]+16>>2]](a)|0;v=N[b+8>>2];t=N[b+24>>2];s=N[b+40>>2];p=N[b>>2];n=N[b+4>>2];r=N[b+16>>2];o=N[b+20>>2];q=N[b+32>>2];l=N[b+36>>2];J[e+12>>2]=0;i=N[e+200>>2];k=N[e+192>>2];m=N[e+196>>2];N[e+8>>2]=j+Q(Q(s*i)+Q(Q(q*k)+Q(l*m)));N[e+4>>2]=h+Q(Q(t*i)+Q(Q(r*k)+Q(m*o)));N[e>>2]=g+Q(Q(v*i)+Q(Q(p*k)+Q(n*m)));J[e+172>>2]=0;i=s;s=N[e+184>>2];k=q;q=N[e+176>>2];m=l;l=N[e+180>>2];N[e+168>>2]=j+Q(Q(i*s)+Q(Q(k*q)+Q(m*l)));N[e+164>>2]=h+Q(Q(t*s)+Q(Q(r*q)+Q(o*l)));N[e+160>>2]=g+Q(Q(v*s)+Q(Q(p*q)+Q(n*l)));Zi[J[J[f>>2]+8>>2]](f,e,c,d);N[B>>2]=u;N[w>>2]=u;a=Zi[J[J[a>>2]+16>>2]](a)|0;v=N[b+8>>2];u=N[b+24>>2];t=N[b+40>>2];s=N[b>>2];p=N[b+4>>2];n=N[b+16>>2];r=N[b+20>>2];o=N[b+32>>2];q=N[b+36>>2];J[e+12>>2]=0;l=N[e+200>>2];i=N[e+192>>2];k=N[e+196>>2];N[e+8>>2]=j+Q(Q(t*l)+Q(Q(o*i)+Q(q*k)));N[e+4>>2]=h+Q(Q(u*l)+Q(Q(n*i)+Q(k*r)));N[e>>2]=g+Q(Q(v*l)+Q(Q(s*i)+Q(p*k)));J[e+172>>2]=0;i=j;j=N[e+184>>2];l=Q(t*j);t=N[e+176>>2];k=Q(o*t);o=N[e+180>>2];N[e+168>>2]=i+Q(l+Q(k+Q(q*o)));N[e+164>>2]=h+Q(Q(u*j)+Q(Q(n*t)+Q(r*o)));N[e+160>>2]=g+Q(Q(v*j)+Q(Q(s*t)+Q(p*o)));Zi[J[J[a>>2]+8>>2]](a,e,c,d);break a}v=N[b+48>>2];u=N[b+52>>2];t=N[b+56>>2];s=N[c+56>>2];f=J[c+68>>2];g=N[c+60>>2];J[e+8>>2]=0;J[e+12>>2]=0;J[e>>2]=0;J[e+4>>2]=0;B=f<<2;N[B+e>>2]=g*Q(.5);J[e+200>>2]=0;J[e+204>>2]=0;J[e+192>>2]=0;J[e+196>>2]=0;A=(f+1|0)%3<<2;N[A+(e+192|0)>>2]=s;J[e+184>>2]=0;J[e+188>>2]=0;J[e+176>>2]=0;J[e+180>>2]=0;N[(e+176|0)+((f+2|0)%3<<2)>>2]=s;w=Zi[J[J[a>>2]+16>>2]](a)|0;p=N[b+8>>2];n=N[b>>2];r=N[b+4>>2];o=N[b+24>>2];q=N[b+16>>2];l=N[b+20>>2];i=N[b+40>>2];k=N[b+32>>2];m=N[b+36>>2];J[e+172>>2]=0;g=N[e+8>>2];h=N[e>>2];j=N[e+4>>2];N[e+168>>2]=t+Q(Q(i*g)+Q(Q(k*h)+Q(m*j)));N[e+164>>2]=u+Q(Q(o*g)+Q(Q(q*h)+Q(j*l)));N[e+160>>2]=v+Q(Q(p*g)+Q(Q(n*h)+Q(r*j)));J[e+156>>2]=0;F=i;x=N[e+200>>2];i=Q(x-g);G=k;z=N[e+192>>2];k=Q(z-h);H=m;y=N[e+196>>2];m=Q(y-j);N[e+152>>2]=t+Q(Q(F*i)+Q(Q(G*k)+Q(H*m)));N[e+148>>2]=u+Q(Q(o*i)+Q(Q(q*k)+Q(l*m)));N[e+144>>2]=v+Q(Q(p*i)+Q(Q(n*k)+Q(r*m)));c=e+160|0;f=e+144|0;Zi[J[J[w>>2]+8>>2]](w,c,f,d);w=Zi[J[J[a>>2]+16>>2]](a)|0;p=N[b+8>>2];n=N[b>>2];r=N[b+4>>2];o=N[b+24>>2];q=N[b+16>>2];l=N[b+20>>2];i=N[b+40>>2];k=N[b+32>>2];m=N[b+36>>2];J[e+172>>2]=0;N[e+168>>2]=t+Q(Q(i*g)+Q(Q(k*h)+Q(j*m)));N[e+164>>2]=u+Q(Q(o*g)+Q(Q(q*h)+Q(j*l)));N[e+160>>2]=v+Q(Q(p*g)+Q(Q(n*h)+Q(j*r)));J[e+156>>2]=0;F=i;C=Q(-g);i=Q(C-x);G=k;x=Q(-h);k=Q(x-z);H=m;z=Q(-j);m=Q(z-y);N[e+152>>2]=t+Q(Q(F*i)+Q(Q(G*k)+Q(H*m)));N[e+148>>2]=u+Q(Q(o*i)+Q(Q(q*k)+Q(m*l)));N[e+144>>2]=v+Q(Q(p*i)+Q(Q(n*k)+Q(m*r)));Zi[J[J[w>>2]+8>>2]](w,c,f,d);w=Zi[J[J[a>>2]+16>>2]](a)|0;p=N[b+8>>2];n=N[b>>2];r=N[b+4>>2];o=N[b+24>>2];q=N[b+16>>2];l=N[b+20>>2];i=N[b+40>>2];k=N[b+32>>2];m=N[b+36>>2];J[e+172>>2]=0;N[e+168>>2]=t+Q(Q(i*g)+Q(Q(k*h)+Q(j*m)));N[e+164>>2]=u+Q(Q(o*g)+Q(Q(q*h)+Q(j*l)));N[e+160>>2]=v+Q(Q(p*g)+Q(Q(n*h)+Q(j*r)));J[e+156>>2]=0;F=i;y=N[e+184>>2];i=Q(y-g);G=k;D=N[e+176>>2];k=Q(D-h);H=m;E=N[e+180>>2];m=Q(E-j);N[e+152>>2]=t+Q(Q(F*i)+Q(Q(G*k)+Q(H*m)));N[e+148>>2]=u+Q(Q(o*i)+Q(Q(q*k)+Q(l*m)));N[e+144>>2]=v+Q(Q(p*i)+Q(Q(n*k)+Q(r*m)));Zi[J[J[w>>2]+8>>2]](w,c,f,d);w=Zi[J[J[a>>2]+16>>2]](a)|0;p=N[b+8>>2];n=N[b>>2];r=N[b+4>>2];o=N[b+24>>2];q=N[b+16>>2];l=N[b+20>>2];i=N[b+40>>2];k=N[b+32>>2];m=N[b+36>>2];J[e+172>>2]=0;N[e+168>>2]=t+Q(Q(i*g)+Q(Q(k*h)+Q(j*m)));N[e+164>>2]=u+Q(Q(o*g)+Q(Q(q*h)+Q(j*l)));N[e+160>>2]=v+Q(Q(p*g)+Q(Q(n*h)+Q(j*r)));J[e+156>>2]=0;F=i;i=Q(C-y);y=k;k=Q(x-D);x=m;m=Q(z-E);N[e+152>>2]=t+Q(Q(F*i)+Q(Q(y*k)+Q(x*m)));N[e+148>>2]=u+Q(Q(o*i)+Q(Q(q*k)+Q(m*l)));N[e+144>>2]=v+Q(Q(p*i)+Q(Q(n*k)+Q(m*r)));Zi[J[J[w>>2]+8>>2]](w,c,f,d);J[e+168>>2]=0;J[e+172>>2]=0;J[e+160>>2]=0;J[e+164>>2]=0;J[c+B>>2]=1065353216;J[e+152>>2]=0;J[e+156>>2]=0;J[e+144>>2]=0;J[e+148>>2]=0;J[f+A>>2]=1065353216;a=Zi[J[J[a>>2]+16>>2]](a)|0;p=N[b+8>>2];n=N[b>>2];r=N[b+4>>2];o=N[b+24>>2];q=N[b+16>>2];l=N[b+20>>2];i=N[b+40>>2];k=N[b+32>>2];m=N[b+36>>2];J[e+140>>2]=0;N[e+136>>2]=t-Q(Q(i*g)+Q(Q(k*h)+Q(j*m)));N[e+132>>2]=u-Q(Q(o*g)+Q(Q(q*h)+Q(j*l)));N[e+128>>2]=v-Q(Q(p*g)+Q(Q(n*h)+Q(j*r)));J[e+124>>2]=0;g=N[e+168>>2];h=N[e+160>>2];j=N[e+164>>2];N[e+120>>2]=Q(i*g)+Q(Q(k*h)+Q(m*j));N[e+116>>2]=Q(o*g)+Q(Q(q*h)+Q(l*j));N[e+112>>2]=Q(p*g)+Q(Q(n*h)+Q(r*j));J[e+108>>2]=0;g=N[e+152>>2];h=N[e+144>>2];j=N[e+148>>2];N[e+104>>2]=Q(i*g)+Q(Q(k*h)+Q(m*j));N[e+100>>2]=Q(o*g)+Q(Q(q*h)+Q(l*j));N[e+96>>2]=Q(p*g)+Q(Q(n*h)+Q(r*j));Zi[J[J[a>>2]+56>>2]](a,e+128|0,e+112|0,e+96|0,s,s,Q(0),Q(6.2831854820251465),d,0,Q(10));break a}f=J[c+52>>2];s=Q(Zi[J[J[c>>2]+84>>2]](c));w=J[c+40>>2];J[e+8>>2]=J[c+36>>2];J[e+12>>2]=w;w=J[c+32>>2];J[e>>2]=J[c+28>>2];J[e+4>>2]=w;g=Q(Zi[J[J[c>>2]+44>>2]](c));h=Q(Zi[J[J[c>>2]+44>>2]](c));N[e+8>>2]=Q(Zi[J[J[c>>2]+44>>2]](c))+N[e+8>>2];N[e>>2]=g+N[e>>2];N[e+4>>2]=h+N[e+4>>2];B=f<<2;c=B+e|0;g=N[c>>2];v=N[b+48>>2];u=N[b+52>>2];t=N[b+56>>2];J[e+8>>2]=0;J[e+12>>2]=0;J[e>>2]=0;J[e+4>>2]=0;N[c>>2]=g;J[e+200>>2]=0;J[e+204>>2]=0;J[e+192>>2]=0;J[e+196>>2]=0;A=(f+1|0)%3<<2;N[A+(e+192|0)>>2]=s;c=Zi[J[J[a>>2]+16>>2]](a)|0;o=N[b+8>>2];q=N[b>>2];l=N[b+4>>2];i=N[b+24>>2];k=N[b+16>>2];m=N[b+20>>2];x=N[b+40>>2];z=N[b+32>>2];y=N[b+36>>2];J[e+188>>2]=0;g=N[e+8>>2];p=N[e+200>>2];C=Q(g+p);h=N[e>>2];n=N[e+192>>2];D=Q(h+n);j=N[e+4>>2];r=N[e+196>>2];E=Q(j+r);N[e+184>>2]=t+Q(Q(x*C)+Q(Q(z*D)+Q(y*E)));N[e+180>>2]=u+Q(Q(i*C)+Q(Q(k*D)+Q(E*m)));N[e+176>>2]=v+Q(Q(o*C)+Q(Q(q*D)+Q(E*l)));J[e+172>>2]=0;F=x;x=Q(p-g);G=z;z=Q(n-h);H=y;y=Q(r-j);N[e+168>>2]=t+Q(Q(F*x)+Q(Q(G*z)+Q(H*y)));N[e+164>>2]=u+Q(Q(i*x)+Q(Q(k*z)+Q(y*m)));N[e+160>>2]=v+Q(Q(o*x)+Q(Q(q*z)+Q(y*l)));f=e+176|0;w=e+160|0;Zi[J[J[c>>2]+8>>2]](c,f,w,d);c=Zi[J[J[a>>2]+16>>2]](a)|0;o=N[b+8>>2];q=N[b>>2];l=N[b+4>>2];i=N[b+24>>2];k=N[b+16>>2];m=N[b+20>>2];x=N[b+40>>2];z=N[b+32>>2];y=N[b+36>>2];J[e+188>>2]=0;C=Q(g-p);D=Q(h-n);E=Q(j-r);N[e+184>>2]=t+Q(Q(x*C)+Q(Q(z*D)+Q(y*E)));N[e+180>>2]=u+Q(Q(i*C)+Q(Q(k*D)+Q(E*m)));N[e+176>>2]=v+Q(Q(o*C)+Q(Q(q*D)+Q(E*l)));J[e+172>>2]=0;p=Q(Q(-g)-p);n=Q(Q(-h)-n);r=Q(Q(-j)-r);N[e+168>>2]=t+Q(Q(x*p)+Q(Q(z*n)+Q(y*r)));N[e+164>>2]=u+Q(Q(i*p)+Q(Q(k*n)+Q(r*m)));N[e+160>>2]=v+Q(Q(o*p)+Q(Q(q*n)+Q(r*l)));Zi[J[J[c>>2]+8>>2]](c,f,w,d);J[e+184>>2]=0;J[e+188>>2]=0;J[e+176>>2]=0;J[e+180>>2]=0;J[f+B>>2]=1065353216;J[e+168>>2]=0;J[e+172>>2]=0;J[e+160>>2]=0;J[e+164>>2]=0;J[w+A>>2]=1065353216;c=Zi[J[J[a>>2]+16>>2]](a)|0;i=N[b+8>>2];k=N[b>>2];m=N[b+4>>2];x=N[b+24>>2];z=N[b+16>>2];y=N[b+20>>2];o=N[b+40>>2];q=N[b+32>>2];l=N[b+36>>2];J[e+156>>2]=0;N[e+152>>2]=t-Q(Q(o*g)+Q(Q(q*h)+Q(j*l)));N[e+148>>2]=u-Q(Q(x*g)+Q(Q(z*h)+Q(j*y)));N[e+144>>2]=v-Q(Q(i*g)+Q(Q(k*h)+Q(j*m)));J[e+140>>2]=0;p=N[e+184>>2];n=N[e+176>>2];r=N[e+180>>2];N[e+136>>2]=Q(o*p)+Q(Q(q*n)+Q(l*r));N[e+132>>2]=Q(x*p)+Q(Q(z*n)+Q(y*r));N[e+128>>2]=Q(i*p)+Q(Q(k*n)+Q(m*r));J[e+124>>2]=0;F=o;o=N[e+168>>2];G=q;q=N[e+160>>2];H=l;l=N[e+164>>2];N[e+120>>2]=Q(F*o)+Q(Q(G*q)+Q(H*l));N[e+116>>2]=Q(x*o)+Q(Q(z*q)+Q(y*l));N[e+112>>2]=Q(i*o)+Q(Q(k*q)+Q(m*l));f=e+144|0;w=e+128|0;B=e+112|0;Zi[J[J[c>>2]+56>>2]](c,f,w,B,s,s,Q(0),Q(6.2831854820251465),d,0,Q(10));a=Zi[J[J[a>>2]+16>>2]](a)|0;i=N[b+8>>2];k=N[b>>2];m=N[b+4>>2];x=N[b+24>>2];z=N[b+16>>2];y=N[b+20>>2];C=N[b+40>>2];D=N[b+32>>2];E=N[b+36>>2];J[e+156>>2]=0;N[e+152>>2]=t+Q(Q(C*g)+Q(Q(D*h)+Q(j*E)));N[e+148>>2]=u+Q(Q(x*g)+Q(Q(z*h)+Q(j*y)));N[e+144>>2]=v+Q(Q(i*g)+Q(Q(k*h)+Q(j*m)));J[e+140>>2]=0;N[e+136>>2]=Q(C*p)+Q(Q(D*n)+Q(r*E));N[e+132>>2]=Q(x*p)+Q(Q(z*n)+Q(r*y));N[e+128>>2]=Q(i*p)+Q(Q(k*n)+Q(r*m));J[e+124>>2]=0;N[e+120>>2]=Q(C*o)+Q(Q(D*q)+Q(l*E));N[e+116>>2]=Q(x*o)+Q(Q(z*q)+Q(l*y));N[e+112>>2]=Q(i*o)+Q(Q(k*q)+Q(l*m));Zi[J[J[a>>2]+56>>2]](a,f,w,B,s,s,Q(0),Q(6.2831854820251465),d,0,Q(10));break a}j=N[c+64>>2];g=N[c+56>>2];v=Q(j*g);h=N[c+52>>2];u=Q(j*h);i=j;j=N[c+48>>2];t=Q(i*j);k:{if(Q(R(g))>Q(.7071067690849304)){p=Q(Q(h*h)+Q(g*g));s=Q(Q(1)/Q(Y(p)));p=Q(p*s);o=Q(h*s);h=Q(o*Q(100));n=Q(s*Q(-g));r=Q(j*n);o=Q(o*Q(-j));s=Q(0);break k}s=Q(Q(j*j)+Q(h*h));p=Q(Q(1)/Q(Y(s)));r=Q(s*p);h=Q(p*Q(-h));s=Q(h*Q(100));o=Q(g*h);n=Q(j*p);p=Q(n*Q(-g));h=Q(0)}c=Zi[J[J[a>>2]+16>>2]](a)|0;g=N[b+48>>2];j=N[b+8>>2];q=N[b>>2];l=N[b+4>>2];i=N[b+52>>2];k=N[b+24>>2];m=N[b+16>>2];x=N[b+20>>2];z=N[b+56>>2];y=N[b+40>>2];C=N[b+32>>2];D=N[b+36>>2];J[e+12>>2]=0;E=Q(v+h);F=Q(t+s);G=Q(n*Q(100));n=Q(u+G);N[e+8>>2]=z+Q(Q(y*E)+Q(Q(C*F)+Q(D*n)));N[e+4>>2]=i+Q(Q(k*E)+Q(Q(m*F)+Q(n*x)));N[e>>2]=g+Q(Q(j*E)+Q(Q(q*F)+Q(n*l)));J[e+204>>2]=0;h=Q(v-h);s=Q(t-s);n=Q(u-G);N[e+200>>2]=z+Q(Q(y*h)+Q(Q(C*s)+Q(D*n)));N[e+196>>2]=i+Q(Q(k*h)+Q(Q(m*s)+Q(n*x)));N[e+192>>2]=g+Q(Q(j*h)+Q(Q(q*s)+Q(n*l)));f=e+192|0;Zi[J[J[c>>2]+8>>2]](c,e,f,d);a=Zi[J[J[a>>2]+16>>2]](a)|0;g=N[b+48>>2];h=N[b+8>>2];j=N[b>>2];s=N[b+4>>2];n=N[b+52>>2];q=N[b+24>>2];l=N[b+16>>2];i=N[b+20>>2];k=N[b+56>>2];m=N[b+40>>2];x=N[b+32>>2];z=N[b+36>>2];J[e+12>>2]=0;y=Q(r*Q(100));r=Q(v+y);C=Q(p*Q(100));p=Q(t+C);D=Q(o*Q(100));o=Q(u+D);N[e+8>>2]=k+Q(Q(m*r)+Q(Q(x*p)+Q(z*o)));N[e+4>>2]=n+Q(Q(q*r)+Q(Q(l*p)+Q(o*i)));N[e>>2]=g+Q(Q(h*r)+Q(Q(j*p)+Q(o*s)));J[e+204>>2]=0;v=Q(v-y);t=Q(t-C);u=Q(u-D);N[e+200>>2]=k+Q(Q(m*v)+Q(Q(x*t)+Q(z*u)));N[e+196>>2]=n+Q(Q(q*v)+Q(Q(l*t)+Q(u*i)));N[e+192>>2]=g+Q(Q(h*v)+Q(Q(j*t)+Q(u*s)));Zi[J[J[a>>2]+8>>2]](a,e,f,d);break a}if(f-21>>>0<=8){J[e+200>>2]=1566444395;J[e+204>>2]=0;J[e+192>>2]=1566444395;J[e+196>>2]=1566444395;J[e+184>>2]=-581039253;J[e+188>>2]=0;J[e+176>>2]=-581039253;J[e+180>>2]=-581039253;J[e+8>>2]=Zi[J[J[a>>2]+16>>2]](a);J[e+4>>2]=244912;J[e>>2]=244888;f=J[d+12>>2];J[e+20>>2]=J[d+8>>2];J[e+24>>2]=f;f=J[d+4>>2];J[e+12>>2]=J[d>>2];J[e+16>>2]=f;f=J[b+12>>2];J[e+36>>2]=J[b+8>>2];J[e+40>>2]=f;f=J[b+4>>2];J[e+28>>2]=J[b>>2];J[e+32>>2]=f;f=J[b+28>>2];J[e+52>>2]=J[b+24>>2];J[e+56>>2]=f;f=J[b+20>>2];J[e+44>>2]=J[b+16>>2];J[e+48>>2]=f;f=J[b+44>>2];J[e+68>>2]=J[b+40>>2];J[e+72>>2]=f;f=J[b+36>>2];J[e+60>>2]=J[b+32>>2];J[e+64>>2]=f;f=J[b+60>>2];J[e+84>>2]=J[b+56>>2];J[e+88>>2]=f;f=J[b+52>>2];J[e+76>>2]=J[b+48>>2];J[e+80>>2]=f;Zi[J[J[c>>2]+60>>2]](c,e,e+176|0,e+192|0);f=J[c+4>>2]}if((f|0)==3){J[e+200>>2]=1566444395;J[e+204>>2]=0;J[e+192>>2]=1566444395;J[e+196>>2]=1566444395;J[e+184>>2]=-581039253;J[e+188>>2]=0;J[e+176>>2]=-581039253;J[e+180>>2]=-581039253;J[e+8>>2]=Zi[J[J[a>>2]+16>>2]](a);J[e+4>>2]=244912;J[e>>2]=244888;f=J[d+12>>2];J[e+20>>2]=J[d+8>>2];J[e+24>>2]=f;f=J[d+4>>2];J[e+12>>2]=J[d>>2];J[e+16>>2]=f;f=J[b+12>>2];J[e+36>>2]=J[b+8>>2];J[e+40>>2]=f;f=J[b+4>>2];J[e+28>>2]=J[b>>2];J[e+32>>2]=f;f=J[b+28>>2];J[e+52>>2]=J[b+24>>2];J[e+56>>2]=f;f=J[b+20>>2];J[e+44>>2]=J[b+16>>2];J[e+48>>2]=f;f=J[b+44>>2];J[e+68>>2]=J[b+40>>2];J[e+72>>2]=f;f=J[b+36>>2];J[e+60>>2]=J[b+32>>2];J[e+64>>2]=f;f=J[b+60>>2];J[e+84>>2]=J[b+56>>2];J[e+88>>2]=f;f=J[b+52>>2];J[e+76>>2]=J[b+48>>2];J[e+80>>2]=f;f=J[c+88>>2];Zi[J[J[f>>2]+8>>2]](f,e+4|0,e+176|0,e+192|0);f=J[c+4>>2]}if((f|0)>6){break a}if((Zi[J[J[c>>2]+88>>2]](c)|0)<=0){break a}f=0;while(1){Zi[J[J[c>>2]+92>>2]](c,f,e,e+192|0);g=N[b+48>>2];h=N[b+8>>2];j=N[b>>2];v=N[b+4>>2];u=N[b+52>>2];t=N[b+24>>2];s=N[b+16>>2];p=N[b+20>>2];n=N[b+56>>2];r=N[b+40>>2];o=N[b+32>>2];q=N[b+36>>2];J[e+188>>2]=0;l=N[e+8>>2];i=N[e>>2];k=N[e+4>>2];N[e+184>>2]=n+Q(Q(r*l)+Q(Q(o*i)+Q(q*k)));N[e+180>>2]=u+Q(Q(t*l)+Q(Q(s*i)+Q(k*p)));N[e+176>>2]=g+Q(Q(h*l)+Q(Q(j*i)+Q(v*k)));J[e+172>>2]=0;i=n;n=N[e+200>>2];l=Q(r*n);r=N[e+192>>2];k=Q(o*r);o=N[e+196>>2];N[e+168>>2]=i+Q(l+Q(k+Q(q*o)));N[e+164>>2]=u+Q(Q(t*n)+Q(Q(s*r)+Q(p*o)));N[e+160>>2]=g+Q(Q(h*n)+Q(Q(j*r)+Q(v*o)));w=Zi[J[J[a>>2]+16>>2]](a)|0;Zi[J[J[w>>2]+8>>2]](w,e+176|0,e+160|0,d);f=f+1|0;if((Zi[J[J[c>>2]+88>>2]](c)|0)>(f|0)){continue}break}}Ui=e+208|0}function Ix(a,b,c,d){var e=0,f=0,g=0,h=0,i=0,j=0,k=0,l=0,m=0,n=0,o=0,p=0,q=0,r=0,s=0,t=0,u=Q(0),v=Q(0),w=Q(0),x=Q(0),y=Q(0),z=Q(0),A=Q(0),C=Q(0),D=0,E=0,F=Q(0),G=Q(0),O=Q(0),R=Q(0),S=Q(0),T=Q(0),U=Q(0),V=Q(0);l=Ui-144|0;Ui=l;J[l+120>>2]=0;f=a;if(J[f+1936>>2]){Zi[J[79393]](J[f+1940>>2],0,0,0);a=J[f+312>>2];if(a){J[f+308>>2]=0;e=1}g=J[f+664>>2];if(g){J[f+660>>2]=a;e=e+1|0;a=a+g|0}g=J[f+1016>>2];if(g){J[f+1012>>2]=a;e=e+1|0;a=a+g|0}g=J[f+1368>>2];if(g){J[f+1364>>2]=a;e=e+1|0;a=a+g|0}Zi[J[79393]](J[f+1940>>2],a<<5,0,0);e=zq(f,e);a=fC(f,1620,f);J[f+1952>>2]=J[f+1952>>2]+1;i=a<<6;a=e;g=J[f+312>>2];if(g){Zi[J[79394]](J[f+1940>>2],J[f+308>>2]<<5,g<<5,J[f+336>>2]);J[e+24>>2]=16777214;J[e+16>>2]=f;J[e+20>>2]=0;J[e+36>>2]=J[e+36>>2]&-64|32;J[e+28>>2]=J[f+1952>>2];J[e+32>>2]=J[J[f+172>>2]+144>>2];J[e+36>>2]=i|J[e+36>>2]&-16321;a=e+48|0}g=J[f+664>>2];if(g){Zi[J[79394]](J[f+1940>>2],J[f+660>>2]<<5,g<<5,J[f+688>>2]);J[a+24>>2]=16777214;J[a+16>>2]=f+352;J[a+20>>2]=0;J[a+36>>2]=J[a+36>>2]&-64|32;J[a+28>>2]=J[f+1952>>2];J[a+32>>2]=J[J[f+524>>2]+144>>2];J[a+36>>2]=i|J[a+36>>2]&-16321;a=a+48|0}g=J[f+1016>>2];if(g){Zi[J[79394]](J[f+1940>>2],J[f+1012>>2]<<5,g<<5,J[f+1040>>2]);J[a+24>>2]=16777214;J[a+16>>2]=f+704;J[a+20>>2]=0;J[a+36>>2]=J[a+36>>2]&-64|32;J[a+28>>2]=J[f+1952>>2];J[a+32>>2]=J[J[f+876>>2]+144>>2];J[a+36>>2]=i|J[a+36>>2]&-16321;a=a+48|0}g=J[f+1368>>2];if(g){Zi[J[79394]](J[f+1940>>2],J[f+1364>>2]<<5,g<<5,J[f+1392>>2]);J[a+24>>2]=16777214;J[a+16>>2]=f+1056;J[a+20>>2]=0;J[a+36>>2]=J[a+36>>2]&-64|32;J[a+28>>2]=J[f+1952>>2];J[a+32>>2]=J[J[f+1228>>2]+144>>2];J[a+36>>2]=i|J[a+36>>2]&-16321;a=a+48|0}yq(f,e,a)}g=d?J[d+64>>2]:4;a:{b:{c:{e=J[f+2280>>2];d:{if(!e|e+1>>>0<2){break d}a=e&65535;if(a>>>0>=M[f+2272>>2]){break c}i=J[J[f+2264>>2]+(a<<2)>>2];if(!i|L[J[f+2268>>2]+(a<<1)>>1]!=(e>>>16|0)){break d}if(K[i+320|0]&2){Cx(f,e,i+240|0,i+256|0)}N[f+2288>>2]=N[i+48>>2];N[f+2292>>2]=N[i+52>>2];N[f+2296>>2]=N[i+56>>2];N[f+2300>>2]=N[i+60>>2];N[f+2304>>2]=N[i+64>>2];N[f+2308>>2]=N[i+68>>2];N[f+2312>>2]=N[i+72>>2];N[f+2316>>2]=N[i+76>>2];N[f+2320>>2]=N[i+80>>2];N[f+2324>>2]=N[i+84>>2];N[f+2328>>2]=N[i+88>>2];N[f+2332>>2]=N[i+92>>2];N[f+2336>>2]=N[i+96>>2];N[f+2340>>2]=N[i+100>>2];N[f+2344>>2]=N[i+104>>2];N[f+2348>>2]=N[i+108>>2];N[f+2352>>2]=N[i+112>>2];N[f+2356>>2]=N[i+116>>2];N[f+2360>>2]=N[i+120>>2];N[f+2364>>2]=N[i+124>>2];N[f+2368>>2]=N[i+128>>2];N[f+2372>>2]=N[i+132>>2];N[f+2376>>2]=N[i+136>>2];N[f+2380>>2]=N[i+140>>2];N[f+2384>>2]=N[i+144>>2];N[f+2388>>2]=N[i+148>>2];N[f+2392>>2]=N[i+152>>2];N[f+2396>>2]=N[i+156>>2];N[f+2400>>2]=N[i+160>>2];N[f+2404>>2]=N[i+164>>2];N[f+2408>>2]=N[i+168>>2];N[f+2412>>2]=N[i+172>>2];N[f+2416>>2]=N[i+176>>2];N[f+2420>>2]=N[i+180>>2];N[f+2424>>2]=N[i+184>>2];N[f+2428>>2]=N[i+188>>2];N[f+2432>>2]=N[i+192>>2];N[f+2436>>2]=N[i+196>>2];N[f+2440>>2]=N[i+200>>2];N[f+2444>>2]=N[i+204>>2];N[f+2448>>2]=N[i+208>>2];N[f+2452>>2]=N[i+212>>2];N[f+2456>>2]=N[i+216>>2];N[f+2460>>2]=N[i+220>>2];N[f+2464>>2]=N[i+224>>2];N[f+2468>>2]=N[i+228>>2];N[f+2472>>2]=N[i+232>>2];N[f+2476>>2]=N[i+236>>2];d=K[f+2504|0]&8?i+176|0:d}if(J[f+2196>>2]==J[f+2192>>2]){J[l+124>>2]=0;a=J[f+2112>>2];if((a|0)!=J[f+2116>>2]){p=J[f+2180>>2];k=J[f+2176>>2];J[l>>2]=a;e:{f:{e=p-k>>2;if((e|0)>=129){a=e;while(1){i=eA(a<<2);if(i){break f}i=a>>>0>1;a=a>>>1|0;if(i){continue}break}}Rr(k,p,l,e,0,0);break e}Rr(k,p,l,e,i,a);cj(i)}e=J[f+2112>>2];J[l>>2]=e;a=J[f+2176>>2];yL(a,0,J[f+2180>>2]-a>>2,e,l,f,1625)}}if(!d){if(!(J[f+2224>>2]|J[f+2228>>2])){break b}J[f+2224>>2]=0;J[f+2228>>2]=0;d=J[f+2116>>2];k=J[f+2112>>2];if((d|0)==(k|0)){break b}e=0;a=0;i=(d-k|0)/48|0;if(i-1>>>0>=3){g=i&-4;while(1){d=k+P(a,48)|0;J[d+36>>2]=J[d+36>>2]|16384;d=k+P(a|1,48)|0;J[d+36>>2]=J[d+36>>2]|16384;d=k+P(a|2,48)|0;J[d+36>>2]=J[d+36>>2]|16384;d=k+P(a|3,48)|0;J[d+36>>2]=J[d+36>>2]|16384;a=a+4|0;m=m+4|0;if((g|0)!=(m|0)){continue}break}}g=i&3;if(!g){break b}while(1){d=k+P(a,48)|0;J[d+36>>2]=J[d+36>>2]|16384;a=a+1|0;e=e+1|0;if((g|0)!=(e|0)){continue}break}break b}a=Ul(d,64);e=Yi;if((a|0)==J[f+2224>>2]&(e|0)==J[f+2228>>2]){break b}J[f+2224>>2]=a;J[f+2228>>2]=e;a=0;F=N[d>>2];G=N[d+16>>2];O=N[d+32>>2];R=N[d+48>>2];S=N[d+4>>2];T=N[d+20>>2];U=N[d+36>>2];V=N[d+52>>2];v=N[d+12>>2];w=N[d+8>>2];x=N[d+28>>2];u=N[d+24>>2];y=N[d+44>>2];z=N[d+40>>2];A=N[d+60>>2];C=N[d+56>>2];J[l+96>>2]=g;N[l+92>>2]=A-C;N[l+88>>2]=y-z;N[l+84>>2]=x-u;N[l+80>>2]=v-w;N[l+76>>2]=C+A;N[l+72>>2]=z+y;N[l+68>>2]=u+x;N[l+64>>2]=w+v;N[l+60>>2]=A-V;N[l+56>>2]=y-U;N[l+52>>2]=x-T;N[l+48>>2]=v-S;N[l+44>>2]=V+A;N[l+40>>2]=U+y;N[l+36>>2]=T+x;N[l+32>>2]=S+v;N[l+28>>2]=A-R;N[l+24>>2]=y-O;N[l+20>>2]=x-G;N[l+16>>2]=v-F;N[l+12>>2]=R+A;N[l+8>>2]=O+y;N[l+4>>2]=G+x;N[l>>2]=F+v;if((g|0)>0){while(1){d=(a<<4)+l|0;w=N[d+8>>2];z=N[d+4>>2];C=N[d>>2];u=Q(Y(Q(Q(w*w)+Q(Q(z*z)+Q(C*C)))));N[d+12>>2]=N[d+12>>2]/u;N[d+8>>2]=w/u;N[d+4>>2]=z/u;N[d>>2]=C/u;a=a+1|0;if((g|0)!=(a|0)){continue}break}}J[l+140>>2]=0;e=J[f+2112>>2];r=J[f+2116>>2];if((e|0)==(r|0)){break b}while(1){d=e;a=d;while(1){g:{if(a>>>0>=r>>>0){e=a;break g}e=a+48|0;if(r>>>0<=e>>>0){break g}i=J[a+36>>2];g=J[a+84>>2];a=e;if(!((g^i)&16320)){continue}}break}if(d>>>0>=r>>>0){break b}h:{a=J[d+36>>2]>>>6&255;g=J[f+2128>>2];if(a>>>0<(J[f+2132>>2]-g|0)/12>>>0){g=g+P(a,12)|0;a=J[g+4>>2];if(a){break h}if((d|0)==(e|0)){continue}q=0;a=0;p=(e-d|0)/48|0;if(p-1>>>0>=3){i=p&-4;k=0;while(1){g=d+P(a,48)|0;J[g+36>>2]=J[g+36>>2]|16384;g=d+P(a|1,48)|0;J[g+36>>2]=J[g+36>>2]|16384;g=d+P(a|2,48)|0;J[g+36>>2]=J[g+36>>2]|16384;g=d+P(a|3,48)|0;J[g+36>>2]=J[g+36>>2]|16384;a=a+4|0;k=k+4|0;if((i|0)!=(k|0)){continue}break}}i=p&3;if(!i){continue}while(1){g=d+P(a,48)|0;J[g+36>>2]=J[g+36>>2]|16384;a=a+1|0;q=q+1|0;if((i|0)!=(q|0)){continue}break}continue}break a}J[l+124>>2]=l;J[l+128>>2]=J[g+8>>2];J[l+132>>2]=d;J[l+136>>2]=(e-d|0)/48;Zi[a|0](l+124|0);continue}}Z(2686,54166,244,5438);B()}i:{if(!b){jL(f,0,0);break i}jL(f,J[b+256>>2],b)}j:{k:{if(J[f+2164>>2]!=J[f+2160>>2]){J[l+124>>2]=0;i=J[f+2164>>2];g=J[f+2160>>2];J[l>>2]=J[f+2144>>2];l:{m:{d=i-g>>2;if((d|0)>=129){a=d;while(1){e=eA(a<<2);if(e){break m}e=a>>>0>1;a=a>>>1|0;if(e){continue}break}}Qr(g,i,l,d,0,0);break l}Qr(g,i,l,d,e,a);cj(e)}J[f+2092>>2]=J[f+2088>>2];a=0;J[l+20>>2]=0;J[l+12>>2]=0;J[l+16>>2]=0;J[l+4>>2]=0;J[l+8>>2]=0;J[l>>2]=f;J[l+124>>2]=0;d=J[f+2128>>2];e=J[f+2132>>2];if((d|0)!=(e|0)){e=(e-d|0)/12|0;while(1){if(a>>>0>=e>>>0){break a}d=P(a,12)+d|0;J[l+4>>2]=J[d+8>>2];Zi[J[d>>2]](l);a=a+1|0;d=J[f+2128>>2];e=(J[f+2132>>2]-d|0)/12|0;if((a|0)!=(e|0)){continue}break}}J[l+8>>2]=1;t=J[f+2112>>2];J[l+12>>2]=t;a=J[f+2164>>2];e=J[f+2160>>2];J[l+124>>2]=0;if((a|0)!=(e|0)){r=a-e>>2;a=1;while(1){d=J[f+2160>>2]+(a<<2)|0;k=t+P(J[e>>2],48)|0;p=J[k+36>>2];n:{o:{if(a>>>0>=r>>>0){break o}i=t+P(J[d>>2],48)|0;g=p^J[i+36>>2];if(g&16320|g&15){break o}if(J[k+28>>2]==J[i+28>>2]){break n}}i=p>>>6&255;if((i|0)!=255){g=J[f+2128>>2];if(i>>>0>=(J[f+2132>>2]-g|0)/12>>>0){break k}i=g+P(i,12)|0;g=J[i+8>>2];J[l+20>>2]=d;J[l+16>>2]=e;J[l+4>>2]=g;Zi[J[i>>2]](l)}e=d}a=a+1|0;if(r>>>0>=a>>>0){continue}break}}J[l+16>>2]=0;J[l+20>>2]=0;J[l+8>>2]=2;J[l+12>>2]=0;J[l+124>>2]=0;d=J[f+2128>>2];a=J[f+2132>>2];if((d|0)!=(a|0)){e=(a-d|0)/12|0;a=0;while(1){if(a>>>0>=e>>>0){break j}d=P(a,12)+d|0;J[l+4>>2]=J[d+8>>2];Zi[J[d>>2]](l);a=a+1|0;d=J[f+2128>>2];e=(J[f+2132>>2]-d|0)/12|0;if((a|0)!=(e|0)){continue}break}}r=b;q=0;h=Ui-496|0;Ui=h;p:{q:{if(f){o=J[f+2480>>2];J[h+456>>2]=0;J[h+460>>2]=0;J[h+448>>2]=0;J[h+452>>2]=0;J[h+440>>2]=0;J[h+444>>2]=0;J[h+432>>2]=0;J[h+436>>2]=0;J[h+424>>2]=0;J[h+428>>2]=0;J[h+416>>2]=0;J[h+420>>2]=0;J[h+408>>2]=0;J[h+412>>2]=0;J[h+400>>2]=0;J[h+404>>2]=0;t=J[f+2484>>2];if(t){Zi[J[79423]](o,J[t+4>>2]);jC(f,t+128|0,h+400|0)}Zi[J[79479]](h+384|0,o);b=J[f+2088>>2];m=J[f+2092>>2];if((b|0)!=(m|0)){E=h+128|0;a=t;while(1){j=J[(q<<2)+b>>2];if(J[j+312>>2]){sL(f,J[J[j+172>>2]+144>>2],h+120|0);r:{if(r){if(!iL(J[h+120>>2],E,J[r+256>>2],r)){break r}}s:{if(t){break s}b=J[j+172>>2];if((b|0)==(a|0)){break s}Zi[J[79423]](o,J[b+4>>2]);J[h+456>>2]=0;J[h+460>>2]=0;J[h+448>>2]=0;J[h+452>>2]=0;J[h+440>>2]=0;J[h+444>>2]=0;J[h+432>>2]=0;J[h+436>>2]=0;J[h+424>>2]=0;J[h+428>>2]=0;J[h+416>>2]=0;J[h+420>>2]=0;J[h+408>>2]=0;J[h+412>>2]=0;J[h+400>>2]=0;J[h+404>>2]=0;jC(f,b+128|0,h+400|0);a=b}m=J[f+2480>>2];t:{u:{d=J[a+116>>2];b=J[a+112>>2];if((d|0)!=(b|0)){b=(d-b|0)/40|0;p=b>>>0<=1?1:b;k=j+80|0;i=j+16|0;b=0;while(1){d=J[a+112>>2];if((J[a+116>>2]-d|0)/40>>>0<=b>>>0){break u}s=J[d+P(b,40)>>2];g=J[s+24>>2];e=J[s+28>>2];d=J[s+16>>2];YK(f,m,i,k,Zi[J[79421]](J[a+4>>2])|0,d,g,e,s);b=b+1|0;if((p|0)!=(b|0)){continue}break}}break t}Z(145396,53895,494,84789);B()}b=J[j>>2];if(b){CL(f,a,b)}if(c){CL(f,a,c)}D=J[f+2480>>2];Zi[J[79479]](h+104|0,o);b=J[h+116>>2];J[h+472>>2]=J[h+112>>2];J[h+476>>2]=b;b=J[h+108>>2];J[h+464>>2]=J[h+104>>2];J[h+468>>2]=b;d=L[h+470>>1];e=L[h+466>>1]|L[h+468>>1]<<16;b=L[h+472>>1];n=L[h+464>>1];g=K[j+320|0];if(g&1){b=L[j+252>>1]<<4&240|(L[j+248>>1]&15|b&-256)}if(g&4){b=L[j+256>>1]<<11&2048|b&-2049}v:{if(!(g&2)){break v}w:{if(!(K[j+295|0]&16)){break w}g=K[f+2504|0];if(g&2){H[f+2504|0]=g&253;break w}Zi[J[79439]](D,255);Zi[J[79390]](D,32,0,0,0,0,Q(1),0)}m=K[j+295|0];p=J[j+264>>2];n=n&8176|m&15|p<<13;i=J[j+272>>2]&7;g=d&-8192;k=e&2096640;e=K[j+294|0];d=e>>>11|0;e=k|e<<21;g=d|g|K[j+292|0]<<5;k=e;e=K[j+293|0];d=e>>>3|0;e=k|e<<29;k=d|g;s=e;g=J[j+260>>2]&7;e=g;d=e>>>26|0;e=s|e<<6;k=d|k;s=e;e=J[j+268>>2]&7;d=e>>>29|0;s=s|e<<3|i;d=d|k;if(m&32){k=J[j+284>>2];e=J[j+276>>2];e=J[j+288>>2]<<12&28672|(k<<15&229376|(J[j+280>>2]<<9&3584|(s&-2096641|e<<18&1835008)));m=0;d=m|(d|m);break v}k=p<<9&3584|(s&-2096641|g<<18);g=g>>>14|d|e>>>17;e=e<<15|k|i<<12;d=i>>>20|g}I[h+488>>1]=b;I[h+480>>1]=n;I[h+482>>1]=e;I[h+484>>1]=e>>>16;I[h+486>>1]=d;I[h+494>>1]=L[h+478>>1];b=L[h+474>>1]|L[h+476>>1]<<16;I[h+490>>1]=b;I[h+492>>1]=b>>>16;b=J[h+492>>2];d=h- -64|0;J[d>>2]=J[h+488>>2];J[d+4>>2]=b;b=J[h+476>>2];J[h+48>>2]=J[h+472>>2];J[h+52>>2]=b;b=J[h+468>>2];J[h+40>>2]=J[h+464>>2];J[h+44>>2]=b;b=J[h+484>>2];J[h+56>>2]=J[h+480>>2];J[h+60>>2]=b;gL(D,h+56|0,h+40|0);p=a+128|0;b=0;d=J[h+400>>2];g=J[h+404>>2];e=!(g|d);d=e?J[j+176>>2]:d;g=e?J[j+180>>2]:g;k=g;e=d;x:{if(!(g|d)){break x}d=Zi[J[79477]](d,g)|0;if(!d){break x}while(1){g=J[p>>2];i=(J[p+4>>2]-g|0)/48>>>0>b>>>0?g+P(b,48)|0:0;g=b&255;Zi[J[79467]](o,b,g,e,k);bn(f,i,g,e,k);b=b+1|0;if((d|0)!=(b|0)){continue}break}b=d}d=J[h+408>>2];g=J[h+412>>2];e=!(g|d);d=e?J[j+184>>2]:d;e=e?J[j+188>>2]:g;i=e;y:{if(!(d|e)){break y}n=0;g=Zi[J[79477]](d,e)|0;if(!g){break y}while(1){e=J[p>>2];k=b&255;e=k>>>0<(J[p+4>>2]-e|0)/48>>>0?e+P(k,48)|0:0;Zi[J[79467]](o,k,n&255,d,i);bn(f,e,k,d,i);b=b+1|0;n=n+1|0;if((g|0)!=(n|0)){continue}break}}d=J[h+416>>2];g=J[h+420>>2];e=!(g|d);d=e?J[j+192>>2]:d;e=e?J[j+196>>2]:g;i=e;z:{if(!(d|e)){break z}n=0;g=Zi[J[79477]](d,e)|0;if(!g){break z}while(1){e=J[p>>2];k=b&255;e=k>>>0<(J[p+4>>2]-e|0)/48>>>0?e+P(k,48)|0:0;Zi[J[79467]](o,k,n&255,d,i);bn(f,e,k,d,i);b=b+1|0;n=n+1|0;if((g|0)!=(n|0)){continue}break}}d=J[h+424>>2];g=J[h+428>>2];e=!(g|d);d=e?J[j+200>>2]:d;e=e?J[j+204>>2]:g;i=e;A:{if(!(d|e)){break A}n=0;g=Zi[J[79477]](d,e)|0;if(!g){break A}while(1){e=J[p>>2];k=b&255;e=k>>>0<(J[p+4>>2]-e|0)/48>>>0?e+P(k,48)|0:0;Zi[J[79467]](o,k,n&255,d,i);bn(f,e,k,d,i);b=b+1|0;n=n+1|0;if((g|0)!=(n|0)){continue}break}}d=J[h+432>>2];g=J[h+436>>2];e=!(g|d);d=e?J[j+208>>2]:d;e=e?J[j+212>>2]:g;i=e;B:{if(!(d|e)){break B}n=0;g=Zi[J[79477]](d,e)|0;if(!g){break B}while(1){e=J[p>>2];k=b&255;e=k>>>0<(J[p+4>>2]-e|0)/48>>>0?e+P(k,48)|0:0;Zi[J[79467]](o,k,n&255,d,i);bn(f,e,k,d,i);b=b+1|0;n=n+1|0;if((g|0)!=(n|0)){continue}break}}d=J[h+440>>2];g=J[h+444>>2];e=!(g|d);d=e?J[j+216>>2]:d;e=e?J[j+220>>2]:g;i=e;C:{if(!(d|e)){break C}n=0;g=Zi[J[79477]](d,e)|0;if(!g){break C}while(1){e=J[p>>2];k=b&255;e=k>>>0<(J[p+4>>2]-e|0)/48>>>0?e+P(k,48)|0:0;Zi[J[79467]](o,k,n&255,d,i);bn(f,e,k,d,i);b=b+1|0;n=n+1|0;if((g|0)!=(n|0)){continue}break}}d=J[h+448>>2];g=J[h+452>>2];e=!(g|d);d=e?J[j+224>>2]:d;e=e?J[j+228>>2]:g;i=e;D:{if(!(d|e)){break D}n=0;g=Zi[J[79477]](d,e)|0;if(!g){break D}while(1){e=J[p>>2];k=b&255;e=k>>>0<(J[p+4>>2]-e|0)/48>>>0?e+P(k,48)|0:0;Zi[J[79467]](o,k,n&255,d,i);bn(f,e,k,d,i);b=b+1|0;n=n+1|0;if((g|0)!=(n|0)){continue}break}}d=J[h+456>>2];g=J[h+460>>2];e=!(g|d);d=e?J[j+232>>2]:d;e=e?J[j+236>>2]:g;i=e;E:{if(!(d|e)){break E}n=0;g=Zi[J[79477]](d,e)|0;if(!g){break E}while(1){e=J[p>>2];k=b&255;e=k>>>0<(J[p+4>>2]-e|0)/48>>>0?e+P(k,48)|0:0;Zi[J[79467]](o,k,n&255,d,i);bn(f,e,k,d,i);b=b+1|0;n=n+1|0;if((g|0)!=(n|0)){continue}break}}d=J[a+4>>2];b=J[j+144>>2];if(b){Zi[J[79408]](o,b,0)}b=J[j+156>>2];if(b){Zi[J[79406]](o,b,0,J[j+296>>2],d)}b=J[j+148>>2];if(b){Zi[J[79408]](o,b,1)}b=J[j+160>>2];if(b){Zi[J[79406]](o,b,1,J[j+300>>2],d)}b=J[j+152>>2];if(b){Zi[J[79408]](o,b,2)}b=J[j+164>>2];if(b){Zi[J[79406]](o,b,2,J[j+304>>2],d)}g=J[j+312>>2];e=J[j+308>>2];d=J[j+240>>2];b=J[j+168>>2];F:{if(b){Zi[J[79410]](o,d,e,g,J[j+244>>2],b,J[j+316>>2]);break F}Zi[J[79411]](o,d,e,g,J[j+316>>2])}b=J[j+144>>2];if(b){Zi[J[79409]](o,b)}b=J[j+156>>2];if(b){Zi[J[79407]](o,b)}b=J[j+148>>2];if(b){Zi[J[79409]](o,b)}b=J[j+160>>2];if(b){Zi[J[79407]](o,b)}b=J[j+152>>2];if(b){Zi[J[79409]](o,b)}b=J[j+164>>2];if(b){Zi[J[79407]](o,b)}b=0;d=J[h+400>>2];g=J[h+404>>2];e=!(g|d);d=e?J[j+176>>2]:d;e=e?J[j+180>>2]:g;G:{if(!(d|e)){break G}if(!(Zi[J[79477]](d,e)|0)){break G}while(1){Zi[J[79468]](o,b,d,e);b=b+1|0;if(Zi[J[79477]](d,e)>>>0>b>>>0){continue}break}}d=J[h+408>>2];g=J[h+412>>2];e=!(g|d);d=e?J[j+184>>2]:d;e=e?J[j+188>>2]:g;H:{if(!(d|e)){break H}m=0;if(!(Zi[J[79477]](d,e)|0)){break H}while(1){Zi[J[79468]](o,b&255,d,e);b=b+1|0;m=m+1|0;if(Zi[J[79477]](d,e)>>>0>m>>>0){continue}break}}d=J[h+416>>2];g=J[h+420>>2];e=!(g|d);d=e?J[j+192>>2]:d;e=e?J[j+196>>2]:g;I:{if(!(d|e)){break I}m=0;if(!(Zi[J[79477]](d,e)|0)){break I}while(1){Zi[J[79468]](o,b&255,d,e);b=b+1|0;m=m+1|0;if(Zi[J[79477]](d,e)>>>0>m>>>0){continue}break}}d=J[h+424>>2];g=J[h+428>>2];e=!(g|d);d=e?J[j+200>>2]:d;e=e?J[j+204>>2]:g;J:{if(!(d|e)){break J}m=0;if(!(Zi[J[79477]](d,e)|0)){break J}while(1){Zi[J[79468]](o,b&255,d,e);b=b+1|0;m=m+1|0;if(Zi[J[79477]](d,e)>>>0>m>>>0){continue}break}}d=J[h+432>>2];g=J[h+436>>2];e=!(g|d);d=e?J[j+208>>2]:d;e=e?J[j+212>>2]:g;K:{if(!(d|e)){break K}m=0;if(!(Zi[J[79477]](d,e)|0)){break K}while(1){Zi[J[79468]](o,b&255,d,e);b=b+1|0;m=m+1|0;if(Zi[J[79477]](d,e)>>>0>m>>>0){continue}break}}d=J[h+440>>2];g=J[h+444>>2];e=!(g|d);d=e?J[j+216>>2]:d;e=e?J[j+220>>2]:g;L:{if(!(d|e)){break L}m=0;if(!(Zi[J[79477]](d,e)|0)){break L}while(1){Zi[J[79468]](o,b&255,d,e);b=b+1|0;m=m+1|0;if(Zi[J[79477]](d,e)>>>0>m>>>0){continue}break}}d=J[h+448>>2];g=J[h+452>>2];e=!(g|d);d=e?J[j+224>>2]:d;e=e?J[j+228>>2]:g;M:{if(!(d|e)){break M}m=0;if(!(Zi[J[79477]](d,e)|0)){break M}while(1){Zi[J[79468]](o,b&255,d,e);b=b+1|0;m=m+1|0;if(Zi[J[79477]](d,e)>>>0>m>>>0){continue}break}}d=J[h+456>>2];g=J[h+460>>2];e=!(g|d);d=e?J[j+232>>2]:d;e=e?J[j+236>>2]:g;if(!(d|e)){break r}m=0;if(!(Zi[J[79477]](d,e)|0)){break r}while(1){Zi[J[79468]](o,b&255,d,e);b=b+1|0;m=m+1|0;if(Zi[J[79477]](d,e)>>>0>m>>>0){continue}break}}m=J[f+2092>>2];b=J[f+2088>>2]}q=q+1|0;if(q>>>0>2>>>0){continue}break}}a=J[h+396>>2];J[h+96>>2]=J[h+392>>2];J[h+100>>2]=a;a=J[h+388>>2];J[h+88>>2]=J[h+384>>2];J[h+92>>2]=a;Zi[J[79479]](h+72|0,o);a=J[h+100>>2];J[h+32>>2]=J[h+96>>2];J[h+36>>2]=a;a=J[h+84>>2];J[h+16>>2]=J[h+80>>2];J[h+20>>2]=a;a=J[h+92>>2];J[h+24>>2]=J[h+88>>2];J[h+28>>2]=a;a=J[h+76>>2];J[h+8>>2]=J[h+72>>2];J[h+12>>2]=a;gL(o,h+24|0,h+8|0);a=J[f+2212>>2];q=J[f+2208>>2];N:{if((a|0)==(q|0)){break N}b=a-q>>4;a=b>>>0<=1?1:b;D=a&3;m=0;O:{if(b>>>0<4){a=-1;b=0;break O}s=a&-4;b=0;a=-1;n=0;while(1){t=b|1;r=q+(t<<4)|0;p=J[r+8>>2];k=b|2;i=q+(k<<4)|0;g=J[i+8>>2];e=b|3;d=q+(e<<4)|0;c=J[d+8>>2];E=q+(b<<4)|0;a=J[d+12>>2]|c?-1:J[i+12>>2]|g?e:J[r+12>>2]|p?k:J[E+8>>2]|J[E+12>>2]?t:(a|0)==-1?b:a;b=b+4|0;n=n+4|0;if((s|0)!=(n|0)){continue}break}}if(D){while(1){d=q+(b<<4)|0;a=J[d+8>>2]|J[d+12>>2]?-1:(a|0)==-1?b:a;b=b+1|0;m=m+1|0;if((D|0)!=(m|0)){continue}break}}if((a|0)==-1){break N}if(J[f+2216>>2]-q>>4>>>0>>0){break q}J[f+2212>>2]=q+(a<<4)}a=0}else{a=-1}Ui=h+496|0;break p}Z(144782,53895,514,59583);B()}}Ui=l+144|0;return}Z(145241,40146,951,9715);B()}}Z(145396,53895,487,84789);B()}function dG(a,b,c,d,e,f,g){var h=0,i=0,j=0,k=0,l=0,m=0,n=0,o=0,p=0,q=0,r=0,s=0,t=0,u=0,v=0,w=0,x=0,y=0,z=0,A=0,C=0,D=0,E=0,F=0,G=0,N=0,O=0,P=0,Q=0,R=0,S=0,T=0,U=0,V=0,W=0,X=0,Y=0,_=0,$=0,aa=0,ba=0,ca=0,da=0,ea=0,fa=0,ga=0,ha=0;p=Ui-160|0;Ui=p;D=e?J[f>>2]+e|0:0;F=-1;X=g&4;F=X?F:J[f>>2]+((d^-1)+e|0)|0;a:{b:{if(d>>>0<=e>>>0){h=F+1|0;if(!(h&F)){break b}}J[f>>2]=0;J[c>>2]=0;n=-3;break a}j=J[c>>2];u=j+b|0;T=a+7488|0;J[p+156>>2]=T;U=a+7360|0;J[p+152>>2]=U;G=a+6208|0;J[p+148>>2]=G;x=a+7884|0;J[p+144>>2]=x;y=a+7852|0;J[p+140>>2]=y;Y=a+7564|0;J[p+136>>2]=Y;E=J[a+60>>2];v=J[a+40>>2];m=J[a+36>>2];t=J[a+32>>2];k=J[a+56>>2];i=J[a+4>>2];n=-1;q=e;l=b;c:{d:{e:{f:{g:{h:{i:{j:{k:{l:{m:{n:{o:{p:{q:{r:{s:{t:{u:{v:{w:{x:{y:{z:{A:{B:{C:{D:{E:{F:{G:{H:{I:{J:{K:{L:{M:{N:{O:{P:{Q:{o=J[a>>2];switch(o|0){case 2:break l;case 41:break o;case 53:break p;case 26:break r;case 25:break s;case 24:break t;case 23:break u;case 18:break v;case 16:break w;case 14:break x;case 51:break A;case 6:break B;case 3:break C;case 34:break E;case 42:break F;case 32:break G;case 10:case 17:case 21:case 35:case 36:case 37:case 39:break H;case 27:break I;case 11:break J;case 38:break K;case 9:break L;case 52:break M;case 7:break N;case 5:break O;case 1:break P;case 0:break Q;default:break c}}J[a+28>>2]=1;k=0;J[a+8>>2]=0;J[a+12>>2]=0;J[a+16>>2]=1;v=0;m=0;t=0;i=0;if(g&1){break P}break k}if((j|0)<=0){J[a>>2]=1;break d}J[a+8>>2]=K[b|0];l=b+1|0;break l}if((j|0)<=0){break m}_=i+8|0;l=b+1|0;k=K[b|0]<>2]=32;break d}J[a>>2]=5;break d}if(l>>>0>=u>>>0){J[a>>2]=2;n=g&2?1:-4;break c}m=K[l|0];J[a+12>>2]=m;q=J[a+8>>2];j=(((m|q<<8)>>>0)%31|m&32)!=0|(q&15)!=8;m=1;l=l+1|0;R:{if(!X){s=j;j=256<<(q>>>4);if(!(s|(j>>>0>32768|h>>>0>>0))){break R}break f}if(j){break f}}m=0}q=e;h=0}S:while(1){T:{U:{V:{W:{X:{Y:{Z:{_:{$:{aa:{ba:{ca:{da:{ea:{fa:{ga:{ha:{ia:{ja:{ka:{la:{ma:{na:{oa:{pa:{qa:{ra:{sa:{ta:{ua:{va:{wa:{xa:{ya:{za:{Aa:{Ba:{Ca:{Da:{Ea:{Fa:{Ga:{switch(h|0){case 0:if(i>>>0>2){break Fa}h=1;continue;case 7:break za;case 6:break Aa;case 5:break Ba;case 4:break Ca;case 3:break Da;case 2:break Ea;case 1:break Ga;case 17:break oa;case 16:break pa;case 15:break qa;case 14:break ra;case 13:break sa;case 12:break ta;case 11:break ua;case 10:break va;case 9:break wa;case 8:break ya;default:break na}}if(l>>>0>=u>>>0){break g}n=l+1|0;j=K[l|0]<>>0>2){l=n;k=j;i=h;break Fa}if(n>>>0>=u>>>0){l=n;k=j;i=h;break g}i=i+16|0;k=K[l+1|0]<>2]=h;j=h>>>1|0;J[a+24>>2]=j;i=i-3|0;k=k>>>3|0;if(h>>>0>=2){break xa}_=i;break ma}i=_&-8;k=k>>>(_&7)|0;m=0;h=0;break ka}while(1){if(l>>>0>=u>>>0){J[a>>2]=6;n=g&2?1:-4;break c}k=K[l|0]<>>0>4294967287;l=l+1|0;i=i+8|0;if(j){continue}break}h=1;break ka}if(l>>>0>=u>>>0){J[a>>2]=7;n=g&2?1:-4;break c}H[(a+m|0)+7903|0]=K[l|0];l=l+1|0;h=2;break ka}while(1){if(l>>>0>=u>>>0){J[a>>2]=51;n=g&2?1:-4;break c}k=K[l|0]<>>0>4294967287;l=l+1|0;i=i+8|0;if(j){continue}break}break W}if(q>>>0>>0){H[q|0]=t;m=m-1|0;q=q+1|0;k=N;break X}n=2;o=52;k=N;break e}if(q>>>0>>0){break la}n=2;o=9;break e}if(l>>>0>>0){h=D-q|0;j=u-l|0;j=h>>>0>>0?h:j;j=j>>>0>>0?j:m;m=m-j|0;q=hj(q,l,j)+j|0;l=j+l|0;break V}J[a>>2]=38;n=g&2?1:-4;break c}n=-1;o=10;C=0;Ha:{switch(j-1|0){case 0:break Ha;case 2:break e;default:break ja}}J[a+44>>2]=288;J[a+48>>2]=32;J[y+24>>2]=84215045;J[y+28>>2]=84215045;J[y+16>>2]=84215045;J[y+20>>2]=84215045;J[y+8>>2]=84215045;J[y+12>>2]=84215045;J[y>>2]=84215045;J[y+4>>2]=84215045;ij(Y,8,144);ij(a+7708|0,9,112);j=a+7836|0;H[j|0]=7;H[j+1|0]=7;H[j+2|0]=7;H[j+3|0]=7;H[j+4|0]=7;H[j+5|0]=7;H[j+6|0]=7;H[j+7|0]=7;j=a+7828|0;H[j|0]=7;H[j+1|0]=7;H[j+2|0]=7;H[j+3|0]=7;H[j+4|0]=7;H[j+5|0]=7;H[j+6|0]=7;H[j+7|0]=7;j=a+7820|0;H[j|0]=7;H[j+1|0]=7;H[j+2|0]=7;H[j+3|0]=7;H[j+4|0]=7;H[j+5|0]=7;H[j+6|0]=7;H[j+7|0]=7;j=a+7844|0;H[j|0]=8;H[j+1|0]=8;H[j+2|0]=8;H[j+3|0]=8;H[j+4|0]=8;H[j+5|0]=8;H[j+6|0]=8;H[j+7|0]=8;O=1;break aa}while(1){if(l>>>0>=u>>>0){J[a>>2]=11;n=g&2?1:-4;m=C;break c}k=K[l|0]<>>0

>>0){continue}break}h=1;break ca}if(l>>>0>=u>>>0){break Y}n=l+1|0;j=K[l|0]<>>0>2){k=j;i=h;break Ia}if(n>>>0>=u>>>0){l=n;k=j;i=h;break Y}i=i+16|0;k=K[l+1|0]<>>0>=u>>>0){J[a>>2]=16;n=g&2?1:-4;break c}k=K[l|0]<>>0<15){break ia}break ha}while(1){if(l>>>0>=u>>>0){J[a>>2]=18;n=g&2?1:-4;break c}k=K[l|0]<>>0>i>>>0){continue}break}$=t-16|0;h=3;break $}if(l>>>0>=u>>>0){J[a>>2]=23;n=g&2?1:-4;break c}k=K[l|0]<>>0<15){break ga}break fa}if(q>>>0>=D>>>0){n=2;o=24;break e}H[q|0]=m;q=q+1|0;break _}while(1){if(l>>>0>=u>>>0){J[a>>2]=25;n=g&2?1:-4;break c}k=K[l|0]<>>0>i>>>0){continue}break}h=3;break Z}if(l>>>0>=u>>>0){J[a>>2]=26;n=g&2?1:-4;break c}k=K[l|0]<>>0<15){break ea}break da}while(1){if(l>>>0>=u>>>0){J[a>>2]=27;n=g&2?1:-4;k=z;break c}z=K[l|0]<>>0>i>>>0){continue}break}h=6;break Z}if(q>>>0>>0){H[q|0]=K[(E-t&F)+d|0];q=q+1|0;E=E+1|0;h=7;break Z}n=2;o=53;break e}h=2;continue}h=8;continue}while(1){Ja:{Ka:{La:{Ma:{Na:{Oa:{switch(h|0){case 0:if(m>>>0>3){break Na}if(!i){i=0;break Ma}if(i>>>0>7){break Ka}h=3;continue S;case 1:H[(a+m|0)+7903|0]=k;i=i-8|0;k=k>>>8|0;break Ja;default:break Oa}}m=m+1|0;break La}m=K[a+7903|0]|K[a+7904|0]<<8;if((m^(K[a+7905|0]|K[a+7906|0]<<8))==65535){break X}n=-1;o=39;break e}h=4;continue S}h=0;continue}h=1;continue}h=2;continue}}h=0;break ca}h=1;break $}h=2;break $}h=0;break Z}h=1;break Z}h=4;break Z}h=5;break Z}while(1){Pa:{Qa:{Ra:{if(!h){if(C>>>0>2){break Ra}P=H[C+158691|0];if(P>>>0<=i>>>0){break Pa}h=9;continue S}J[((C<<2)+a|0)+44>>2]=L[(C<<1)+185940>>1]+((-1<>>P|0;break Qa}J[x>>2]=0;J[x+4>>2]=0;m=0;H[x+15|0]=0;H[x+16|0]=0;H[x+17|0]=0;H[x+18|0]=0;J[x+8>>2]=0;J[x+12>>2]=0;h=0;break ba}h=0;continue}h=1;continue}}while(1){Sa:{Ta:{Ua:{if(!h){if(M[a+52>>2]<=m>>>0){break Ua}if(i>>>0>2){break Sa}h=10;continue S}H[K[m+185920|0]+x|0]=k&7;m=m+1|0;i=i-3|0;k=k>>>3|0;break Ta}J[a+52>>2]=19;O=J[a+24>>2];break aa}h=0;continue}h=1;continue}}h=0}while(1){Va:{Wa:{Xa:{Ya:{Za:{_a:{$a:{ab:{bb:{switch(h|0){case 0:if((O|0)<0){break _}J[p+16>>2]=0;J[p+20>>2]=0;J[p+24>>2]=0;J[p+28>>2]=0;J[p+32>>2]=0;J[p+36>>2]=0;J[p+40>>2]=0;J[p+44>>2]=0;J[p+48>>2]=0;J[p+52>>2]=0;J[p+56>>2]=0;J[p+60>>2]=0;J[p>>2]=0;J[p+4>>2]=0;J[p+8>>2]=0;J[p+12>>2]=0;j=O<<2;aa=J[j+(p+136|0)>>2];V=J[j+(p+148|0)>>2];ha=ij(((O<<11)+a|0)- -64|0,0,2048);cb:{db:{eb:{fb:{ba=J[a+24>>2];switch(ba|0){case 1:break eb;case 0:break fb;default:break db}}ij(G,0,1152);break cb}ij(U,0,128);break cb}ij(T,0,76)}h=0;o=0;n=0;s=0;w=0;ca=0;Q=0;j=0;da=0;A=0;ea=0;fa=0;ga=0;R=0;S=J[((ba<<2)+a|0)+44>>2];if(S){if(S>>>0>=4){h=S&-4;while(1){s=o+aa|0;j=(K[s|0]<<2)+p|0;J[j>>2]=J[j>>2]+1;j=(K[s+1|0]<<2)+p|0;J[j>>2]=J[j>>2]+1;j=(K[s+2|0]<<2)+p|0;J[j>>2]=J[j>>2]+1;j=(K[s+3|0]<<2)+p|0;J[j>>2]=J[j>>2]+1;o=o+4|0;n=n+4|0;if((h|0)!=(n|0)){continue}break}}h=S&3;if(h){while(1){j=(K[o+aa|0]<<2)+p|0;J[j>>2]=J[j>>2]+1;o=o+1|0;Q=Q+1|0;if((h|0)!=(Q|0)){continue}break}}h=J[p+56>>2];n=J[p+48>>2];s=J[p+44>>2];w=J[p+40>>2];ca=J[p+36>>2];Q=J[p+32>>2];da=J[p+24>>2];A=J[p+20>>2];ea=J[p+16>>2];fa=J[p+12>>2];ga=J[p+8>>2];R=J[p+4>>2];o=J[p+52>>2];j=J[p+28>>2]}J[p+64>>2]=0;J[p+68>>2]=0;W=J[p+60>>2];r=R<<1;J[p+72>>2]=r;r=r+ga<<1;J[p+76>>2]=r;r=r+fa<<1;J[p+80>>2]=r;r=r+ea<<1;J[p+84>>2]=r;r=r+A<<1;J[p+88>>2]=r;r=r+da<<1;J[p+92>>2]=r;r=j+r<<1;J[p+96>>2]=r;r=r+Q<<1;J[p+100>>2]=r;r=r+ca<<1;J[p+104>>2]=r;r=r+w<<1;J[p+108>>2]=r;r=r+s<<1;J[p+112>>2]=r;r=n+r<<1;J[p+116>>2]=r;r=o+r<<1;J[p+120>>2]=r;r=h+r<<1;J[p+124>>2]=r;r=r+W<<1;J[p+128>>2]=r;if(!((r|0)==65536|(((((((((((((R+ga|0)+fa|0)+ea|0)+A|0)+da|0)+j|0)+Q|0)+ca|0)+w|0)+s|0)+n|0)+o|0)+h|0)+W>>>0<=1)){n=-1;o=35;break e}if(S){j=-1;A=0;while(1){r=K[A+aa|0];gb:{if(!r){break gb}n=(p- -64|0)+(r<<2)|0;h=J[n>>2];J[n>>2]=h+1;R=r&3;n=0;hb:{if(r>>>0<4){o=0;break hb}W=r&252;o=0;w=0;while(1){s=(h>>>2&1|(h&2|(h<<2&4|o<<3)))<<1;o=s|h>>>3&1;h=h>>>4|0;w=w+4|0;if((W|0)!=(w|0)){continue}break}}if(R){while(1){s=o<<1;o=s|h&1;h=h>>>1|0;n=n+1|0;if((R|0)!=(n|0)){continue}break}}if(r>>>0<=10){if(s>>>0>1023){break gb}n=r<<9|A;h=1<>1]=n;o=h+o|0;if(o>>>0<1024){continue}break}break gb}h=((o&1023)<<1)+ha|0;n=I[h>>1];if(!n){I[h>>1]=j;n=j;j=j-2|0}h=s>>>9|0;ib:{if((r|0)==11){break ib}w=r-1|0;jb:{if(!(r-(w>>>0>=11?11:w)&1)){w=r;break jb}h=((s>>>9&2)+V|0)+((n^-1)<<1)|0;n=I[h>>1];if(!n){I[h>>1]=j;n=j;j=j-2|0}h=s>>>10|0}if(r>>>0<13){break ib}while(1){s=((h&2)+V|0)+((n^-1)<<1)|0;n=I[s>>1];if(!n){I[s>>1]=j;n=j;j=j-2|0}s=((h>>>1&2)+V|0)+((n^-1)<<1)|0;n=I[s>>1];if(!n){I[s>>1]=j;n=j;j=j-2|0}h=h>>>2|0;w=w-2|0;if(w>>>0>11){continue}break}}I[((h&2)+V|0)+((n^-1)<<1)>>1]=A}A=A+1|0;if((S|0)!=(A|0)){continue}break}}h=0;if((ba|0)!=2){break Wa}break _a;case 1:h=I[(((k&1023)<<1)+a|0)+4160>>1];kb:{if((h|0)>=0){if(h>>>0<512|h>>>9>>>0>i>>>0){break kb}break Za}if(i>>>0<11){break kb}o=10;while(1){h=I[((k>>>o&1)+(h^-1)<<1)+T>>1];if((h|0)<0){j=o+2|0;o=o+1|0;if(i>>>0>=j>>>0){continue}}break}if((h|0)>=0){break Za}}h=11;continue S;case 2:t=I[(((k&1023)<<1)+a|0)+4160>>1];if((t|0)>=0){break ab}h=10;while(1){j=k>>>h|0;h=h+1|0;t=I[((j&1)+(t^-1)<<1)+T>>1];if((t|0)<0){continue}break};break $a;default:break bb}}n=H[$+154488|0]+((-1<>>v|0;j=(a+7907|0)+m|0;ij(j,(t|0)==16?K[j-1|0]:0,n);h=m+n|0;break _a}h=t>>>9|0;t=t&511}i=i-h|0;k=k>>>h|0;if(t>>>0>15){break Ya}H[(a+m|0)+7907|0]=t;h=m+1|0}j=J[a+48>>2];n=J[a+44>>2];m=j+n|0;if(m>>>0<=h>>>0){break Xa}if(i>>>0<=14){if((u-l|0)<=1){m=h;h=1;continue}k=K[l|0]<>>0<=i>>>0){break Va}h=12;continue S}if((h|0)!=(m|0)){n=-1;o=21;m=h;break e}m=a+7907|0;hj(Y,m,n);hj(y,m+n|0,j);m=h}O=J[a+24>>2]-1|0;J[a+24>>2]=O;h=0;continue}h=3;continue}}h=2}lb:while(1){mb:{nb:{ob:{pb:{qb:{rb:{sb:{tb:{ub:{vb:{wb:{xb:{yb:{zb:{Ab:{Bb:{switch(h|0){case 0:h=I[(((k&1023)<<1)+a|0)- -64>>1];Cb:{if((h|0)>=0){if(h>>>0<512|h>>>9>>>0>i>>>0){break Cb}break mb}if(i>>>0<11){break Cb}o=10;while(1){h=I[((k>>>o&1)+(h^-1)<<1)+G>>1];if((h|0)<0){j=o+2|0;o=o+1|0;if(i>>>0>=j>>>0){continue}}break}if((h|0)>=0){break mb}}h=13;continue S;case 1:m=I[(((k&1023)<<1)+a|0)- -64>>1];if((m|0)>=0){break Ab}h=10;while(1){j=k>>>h|0;h=h+1|0;m=I[((j&1)+(m^-1)<<1)+G>>1];if((m|0)<0){continue}break};break zb;case 3:break pb;case 4:break qb;case 5:break vb;case 6:break wb;case 2:break Bb;default:break xb}}n=a- -64|0;while(1){j=u-l|0;if(!((D-q|0)>1&(j|0)>=4)){if(i>>>0>14){break mb}if((j|0)<=1){h=0;continue lb}k=K[l|0]<>>0>14)){k=(K[l|0]|K[l+1|0]<<8)<>1];Db:{if((m|0)<0){h=10;while(1){j=k>>>h|0;h=h+1|0;m=I[((j&1)+(m^-1)<<1)+G>>1];if((m|0)<0){continue}break}break Db}h=m>>>9|0}i=s-h|0;k=k>>>h|0;if(m&256){break yb}if(!(i>>>0>14)){k=(K[l|0]|K[l+1|0]<<8)<>1];Eb:{if((o|0)<0){h=10;while(1){j=k>>>h|0;h=h+1|0;o=I[((j&1)+(o^-1)<<1)+G>>1];if((o|0)<0){continue}break}break Eb}h=o>>>9|0}H[q|0]=m;i=s-h|0;k=k>>>h|0;if(!(o&256)){H[q+1|0]=o;q=q+2|0;continue}break}q=q+1|0;m=o;break yb}h=m>>>9|0;m=m&511}i=i-h|0;k=k>>>h|0;if(m>>>0>255){break yb}h=14;continue S}h=m&511;m=256;if((h|0)==256){break U}j=h-257|0;m=L[(j<<1)+185728>>1];v=0;if(h-285>>>0<4294967276){break ob}v=K[j+185792|0];if(v>>>0>i>>>0){h=15;continue S}h=3;continue}if(!m){m=-1;break tb}m=m-1|0;h=18;continue S}i=i-v|0;k=z>>>v|0;t=((-1<>1];Fb:{if((h|0)<0){o=10;while(1){j=k>>>o|0;o=o+1|0;h=I[((j&1)+(h^-1)<<1)+U>>1];if((h|0)<0){continue}break}break Fb}o=h>>>9|0;h=h&511}t=L[(h<<1)+185824>>1];i=i-o|0;z=k>>>o|0;v=0;if(h-30>>>0<4294967270){k=z;break ub}v=K[h+185888|0];if(v>>>0<=i>>>0){break sb}h=17;continue S}E=q-d|0;Gb:{if(!X){break Gb}n=-1;if(t-1>>>0>>0){break Gb}o=37;break e}h=(E-t&F)+d|0;if((h>>>0>>0?q:h)+m>>>0>D>>>0){break rb}Hb:{if(m>>>0<3){break Hb}n=m-3|0;j=((n>>>0)/3|0)+1&3;if(j){o=0;while(1){H[q|0]=K[h|0];H[q+1|0]=K[h+1|0];H[q+2|0]=K[h+2|0];m=m-3|0;h=h+3|0;q=q+3|0;o=o+1|0;if((j|0)!=(o|0)){continue}break}}if(n>>>0<9){break Hb}while(1){H[q|0]=K[h|0];H[q+1|0]=K[h+1|0];H[q+2|0]=K[h+2|0];H[q+3|0]=K[h+3|0];H[q+4|0]=K[h+4|0];H[q+5|0]=K[h+5|0];H[q+6|0]=K[h+6|0];H[q+7|0]=K[h+7|0];H[q+8|0]=K[h+8|0];H[q+9|0]=K[h+9|0];H[q+10|0]=K[h+10|0];H[q+11|0]=K[h+11|0];h=h+12|0;q=q+12|0;m=m-12|0;if(m>>>0>2){continue}break}}if(!m){break tb}H[q|0]=K[h|0];if((m|0)==2){H[q+1|0]=K[h+1|0]}q=m+q|0}h=2;continue}h=6;continue}h=7;continue}h=I[(((k&1023)<<1)+a|0)+2112>>1];Ib:{if((h|0)>=0){if(h>>>0<512|h>>>9>>>0>i>>>0){break Ib}break nb}if(i>>>0<11){break Ib}o=10;while(1){h=I[((k>>>o&1)+(h^-1)<<1)+U>>1];if((h|0)<0){j=o+2|0;o=o+1|0;if(i>>>0>=j>>>0){continue}}break}if((h|0)>=0){break nb}}h=16;continue S}i=i-v|0;m=((-1<>>v|0}if(i>>>0>14){break nb}if((u-l|0)<=1){h=4;continue}k=k|(K[l|0]<>2]=14;n=g&2?1:-4;break c}if(!m|!i){break V}if(i>>>0>7){break W}h=5;continue}i=i-8|0;N=k>>>8|0;t=k&255;h=6;continue}if(m){break T}m=0}if(H[a+20|0]&1){break i}h=0;continue}h=7;continue}}Jb:{k=i&-8;if(!(!k|b>>>0>=l>>>0)){j=k-8|0;k=j>>>3|0;d=(b^-1)+l|0;d=d>>>0>k>>>0?k:d;l=(d^-1)+l|0;k=j-(d<<3)|0}if(!k){k=0;if(!(g&1)){break Jb}m=0;i=0;h=0;break h}Z(18492,53876,4727,18621);B()}o=34;i=0;n=0;break e}while(1){Kb:{Lb:{Mb:{Nb:{Ob:{switch(h|0){case 0:if(m>>>0>3){n=0;o=34;break e}if(!i){i=0;break Kb}if(i>>>0>7){break Nb}h=1;continue;case 1:break Ob;default:break Mb}}while(1){if(l>>>0>=u>>>0){J[a>>2]=41;n=g&2?1:-4;break c}k=K[l|0]<>>0>4294967287;l=l+1|0;i=i+8|0;if(d){continue}break}}i=i-8|0;h=k&255;k=k>>>8|0;break Lb}if(l>>>0>=u>>>0){J[a>>2]=42;n=g&2?1:-4;break c}h=K[l|0];l=l+1|0}J[a+16>>2]=J[a+16>>2]<<8|h;m=m+1|0;h=0;continue}h=2;continue}}J[a>>2]=3;n=g&2?1:-4;break c}o=36;q=e}J[a>>2]=o;if(i>>>0<8|b>>>0>=l>>>0){break c}h=i-8|0;j=h>>>3|0;d=(b^-1)+l|0;d=d>>>0>j>>>0?j:d;i=h-(d<<3)|0;l=(d^-1)+l|0;break c}n=g&2?1:-4}J[a+4>>2]=i;J[a+60>>2]=E;J[a+40>>2]=v;J[a+36>>2]=m;J[a+32>>2]=t;J[a+56>>2]=(-1<>2]=l-b;q=q-e|0;J[f>>2]=q;if(!(g&9)|(n|0)<0){break a}b=J[a+28>>2];h=b>>>16|0;i=b&65535;if(q){l=(q>>>0)%5552|0;while(1){b=0;if(l>>>0>=8){b=l&8184;k=0;while(1){z=K[e|0]+i|0;N=z+K[e+1|0]|0;j=N+K[e+2|0]|0;m=j+K[e+3|0]|0;f=m+K[e+4|0]|0;d=f+K[e+5|0]|0;c=d+K[e+6|0]|0;i=c+K[e+7|0]|0;h=i+(c+(d+(f+(m+(j+(N+(h+z|0)|0)|0)|0)|0)|0)|0)|0;e=e+8|0;c=k+15|0;k=k+8|0;if(c>>>0>>0){continue}break}}if(b>>>0>>0){o=0;m=b;k=e;c=l&3;if(c){while(1){m=m+1|0;i=K[k|0]+i|0;h=i+h|0;k=k+1|0;o=o+1|0;if((c|0)!=(o|0)){continue}break}}if(b-l>>>0<=4294967292){while(1){f=K[k|0]+i|0;d=f+K[k+1|0]|0;c=d+K[k+2|0]|0;i=c+K[k+3|0]|0;h=i+(c+(d+(f+h|0)|0)|0)|0;k=k+4|0;m=m+4|0;if((m|0)!=(l|0)){continue}break}}e=(l-b|0)+e|0}q=q-l|0;h=(h>>>0)%65521|0;i=(i>>>0)%65521|0;l=5552;if(q){continue}break}}b=h<<16|i;J[a+28>>2]=b;if(n){break a}n=0;if(!(g&1)){break a}n=(b|0)!=J[a+16>>2]?-2:0}Ui=p+160|0;return n}function dK(a,b,c,d,e,f,g){var h=0,i=0,j=0,k=0,l=0,m=0,n=0,o=0,p=0,q=Q(0),r=Q(0),s=0,t=Q(0),u=0,v=Q(0),w=0,y=0,A=0,C=0,D=0,E=0;h=Ui-1952|0;Ui=h;j=e+2|0;n=e+f|0;C=J[a+8>>2]-J[a+12>>2]>>4;a:{b:{c:{if((f|0)<=1){c=h+1808|0;ij(c,0,129);d=J[b+140>>2];d:{if(!d){break d}i=c+d|0;l=J[b+144>>2];e=-1;if((d|0)!=1){k=d&-2;e=0;while(1){c=e;o=(((l|0)<=0?127:-1)+l|0)%128|0;H[i+(c^-1)|0]=K[o+b|0];l=(o+((o|0)<=0?127:-1)|0)%128|0;H[i+(c^-2)|0]=K[l+b|0];e=c+2|0;m=m+2|0;if((k|0)!=(m|0)){continue}break}e=-3-c|0}if(!(d&1)){break d}H[e+i|0]=K[((((l|0)<=0?127:-1)+l|0)%128|0)+b|0]}c=J[b+132>>2];b=J[b+136>>2];J[h+44>>2]=f+2;J[h+40>>2]=b;J[h+36>>2]=n;J[h+32>>2]=j;J[h+48>>2]=h+1808;J[h+28>>2]=c;J[h+24>>2]=g;J[h+20>>2]=0;J[h+16>>2]=35821;b=h+1296|0;Gj(b,512,150125,h+16|0);J[h>>2]=b;a=fj(a,31902,h);break c}if(M[c+4>>2]<=3){o=K[e|0]|K[e+1|0]<<8}else{j=e+4|0;o=K[e|0]|K[e+1|0]<<8|(K[e+2|0]<<16|K[e+3|0]<<24)}J[h+1216>>2]=o;i=b;b=Ui-144|0;Ui=b;l=h+1216|0;J[b+12>>2]=l;k=b+16|0;Pr(k,128,1123,l);p=yj(k);if(p){l=J[i+144>>2];k=0;while(1){s=K[(b+16|0)+k|0];J[i+144>>2]=l+1;H[i+l|0]=s;l=J[i+144>>2];if(l>>>0>M[i+140>>2]){J[i+140>>2]=l}l=l&127;J[i+144>>2]=l;k=k+1|0;if((p|0)!=(k|0)){continue}break}}Ui=b+144|0;if(j>>>0>n>>>0){b=h+1808|0;ij(b,0,129);c=J[i+140>>2];e:{if(!c){break e}d=b+c|0;l=J[i+144>>2];e=-1;if((c|0)!=1){g=c&-2;e=0;while(1){b=e;f=(((l|0)<=0?127:-1)+l|0)%128|0;H[d+(b^-1)|0]=K[f+i|0];l=(f+((f|0)<=0?127:-1)|0)%128|0;H[d+(b^-2)|0]=K[i+l|0];e=b+2|0;m=m+2|0;if((g|0)!=(m|0)){continue}break}e=-3-b|0}if(!(c&1)){break e}H[d+e|0]=K[i+((((l|0)<=0?127:-1)+l|0)%128|0)|0]}b=J[i+132>>2];c=J[i+136>>2];J[h+84>>2]=j;J[h+88>>2]=n;J[h+96>>2]=n-j;J[h+100>>2]=h+1808;J[h+92>>2]=c;J[h+80>>2]=b;b=h+1296|0;Gj(b,512,150010,h+80|0);J[h+64>>2]=b;a=fj(a,31902,h- -64|0);break c}Fj(a,0,0);if(o){D=g+1|0;while(1){l=j+2|0;if(n>>>0>>0){b=h+1808|0;ij(b,0,129);d=J[i+140>>2];f:{if(!d){break f}e=b+d|0;k=J[i+144>>2];m=-1;if((d|0)!=1){p=d&-2;m=0;c=0;while(1){b=m;f=(((k|0)<=0?127:-1)+k|0)%128|0;H[e+(b^-1)|0]=K[f+i|0];k=(f+((f|0)<=0?127:-1)|0)%128|0;H[e+(b^-2)|0]=K[i+k|0];m=b+2|0;c=c+2|0;if((p|0)!=(c|0)){continue}break}m=-3-b|0}if(!(d&1)){break f}H[e+m|0]=K[i+((((k|0)<=0?127:-1)+k|0)%128|0)|0]}b=J[i+132>>2];J[h+152>>2]=J[i+136>>2];J[h+148>>2]=n;J[h+144>>2]=l;J[h+156>>2]=(n-j|0)+2;J[h+160>>2]=h+1808;J[h+140>>2]=b;J[h+136>>2]=g;J[h+132>>2]=o;J[h+128>>2]=21380;b=h+1296|0;Gj(b,512,150125,h+128|0);J[h+112>>2]=b;a=fj(a,31902,h+112|0);break c}p=H[j+1|0];g:{h:{i:{j:{k=K[j|0];switch(k-3|0){case 0:break h;case 1:break j;default:break i}}b=J[i+144>>2];J[i+144>>2]=b+1;H[b+i|0]=75;j=J[i+140>>2];b=J[i+144>>2];if(j>>>0>>0){J[i+140>>2]=b;j=b}m=b&127;H[m+i|0]=83;b=m+1|0;if(j>>>0<=m>>>0){J[i+140>>2]=b;j=b}b=b&127;J[i+144>>2]=b;k:{if(M[c+4>>2]<=1){m=yj(l)+1|0;w=n-l|0;if((m|0)>(w|0)){k=0;s=h+1296|0;ij(s,0,129);A=j&1;s=j+s|0;if((j|0)!=1){E=j&-2;j=0;while(1){b=(((b|0)<=0?127:-1)+b|0)%128|0;H[s+(k^-1)|0]=K[b+i|0];b=(b+((b|0)<=0?127:-1)|0)%128|0;H[s+(k^-2)|0]=K[i+b|0];k=k+2|0;j=j+2|0;if((E|0)!=(j|0)){continue}break}}if(A){H[s+(k^-1)|0]=K[i+((((b|0)<=0?127:-1)+b|0)%128|0)|0]}b=J[i+132>>2];j=J[i+136>>2];J[h+1076>>2]=m;J[h+1080>>2]=w;J[h+1092>>2]=h+1296;J[h+1084>>2]=b;J[h+1088>>2]=j;J[h+1072>>2]=o;fj(a,149891,h+1072|0)}xj(a,l);break k}m=YJ(a,l,n,o,i)}l=l+m|0;if(n>>>0>=l>>>0){break g}b=h+1808|0;ij(b,0,129);c=J[i+140>>2];l:{if(!c){break l}d=b+c|0;k=J[i+144>>2];m=-1;if((c|0)!=1){f=c&-2;m=0;j=0;while(1){b=m;e=(((k|0)<=0?127:-1)+k|0)%128|0;H[d+(b^-1)|0]=K[e+i|0];k=(e+((e|0)<=0?127:-1)|0)%128|0;H[d+(b^-2)|0]=K[i+k|0];m=b+2|0;j=j+2|0;if((f|0)!=(j|0)){continue}break}m=-3-b|0}if(!(c&1)){break l}H[d+m|0]=K[i+((((k|0)<=0?127:-1)+k|0)%128|0)|0]}b=J[i+132>>2];c=J[i+136>>2];J[h+1052>>2]=n-l;J[h+1048>>2]=c;J[h+1044>>2]=n;J[h+1040>>2]=l;J[h+1056>>2]=h+1808;J[h+1036>>2]=b;J[h+1032>>2]=g;J[h+1028>>2]=o;J[h+1024>>2]=56323;b=h+1296|0;Gj(b,512,150125,h+1024|0);J[h+1008>>2]=b;a=fj(a,31902,h+1008|0);break c}if((k|0)!=64){break g}}b=J[i+144>>2];J[i+144>>2]=b+1;H[b+i|0]=75;b=J[i+140>>2];m=J[i+144>>2];if(b>>>0>>0){J[i+140>>2]=m;b=m}m=m&127;H[m+i|0]=78;l=m+1|0;if(b>>>0<=m>>>0){J[i+140>>2]=l}J[i+144>>2]=l&127;m:{n:{o:{switch(J[c+4>>2]){case 0:if((k|0)!=3){J[h+1168>>2]=k;fj(a,78165,h+1168|0)}u=+((K[j+2|0]|K[j+3|0]<<8)>>>0);b=J[a+8>>2];J[b+8>>2]=3;O[b>>3]=u;J[a+8>>2]=J[a+8>>2]+16;l=j+4|0;break m;case 1:case 2:if((k|0)!=3){J[h+1184>>2]=k;fj(a,78165,h+1184|0)}b=H[j+2|0];k=b&127;p:{if((b|0)>=0){l=j+3|0;break p}b=H[j+3|0];k=(b&127)<<7|k;if((b|0)>=0){l=j+4|0;break p}b=H[j+4|0];k=(b&127)<<14|k;if((b|0)>=0){l=j+5|0;break p}b=H[j+5|0];k=(b&127)<<21|k;if((b|0)>=0){l=j+6|0;break p}b=H[j+6|0];if((b|0)>=0){l=j+7|0;k=b<<28|k;break p}l=j+8|0;if(H[j+7|0]<0){break n}}b=J[a+8>>2];J[b+8>>2]=3;O[b>>3]=k>>>0;J[a+8>>2]=J[a+8>>2]+16;break m;case 3:case 4:if(!((k|0)==3|(k|0)==64)){J[h+1200>>2]=k;fj(a,78165,h+1200|0)}u=+((K[j+2|0]|K[j+3|0]<<8|(K[j+4|0]<<16|K[j+5|0]<<24))>>>0);b=J[a+8>>2];J[b+8>>2]=3;O[b>>3]=(k|0)==64?-u:u;J[a+8>>2]=J[a+8>>2]+16;l=j+6|0;break m;default:break o}}Z(114101,41830,794,5654);B()}fj(a,56976,0)}if(l>>>0<=n>>>0){break g}b=h+1808|0;ij(b,0,129);c=J[i+140>>2];q:{if(!c){break q}d=b+c|0;k=J[i+144>>2];m=-1;if((c|0)!=1){f=c&-2;m=0;j=0;while(1){b=m;e=(((k|0)<=0?127:-1)+k|0)%128|0;H[d+(b^-1)|0]=K[e+i|0];k=(e+((e|0)<=0?127:-1)|0)%128|0;H[d+(b^-2)|0]=K[i+k|0];m=b+2|0;j=j+2|0;if((f|0)!=(j|0)){continue}break}m=-3-b|0}if(!(c&1)){break q}H[d+m|0]=K[i+((((k|0)<=0?127:-1)+k|0)%128|0)|0]}b=J[i+132>>2];c=J[i+136>>2];J[h+1148>>2]=n-l;J[h+1144>>2]=c;J[h+1140>>2]=n;J[h+1136>>2]=l;J[h+1152>>2]=h+1808;J[h+1132>>2]=b;J[h+1128>>2]=g;J[h+1124>>2]=o;J[h+1120>>2]=35888;b=h+1296|0;Gj(b,512,150125,h+1120|0);J[h+1104>>2]=b;a=fj(a,31902,h+1104|0);break c}r:{s:{switch((p&255)-1|0){case 0:b=J[i+144>>2];J[i+144>>2]=b+1;H[b+i|0]=86;b=J[i+140>>2];j=J[i+144>>2];if(b>>>0>>0){J[i+140>>2]=j;b=j}j=j&127;H[j+i|0]=66;m=j+1|0;if(b>>>0<=j>>>0){J[i+140>>2]=m}J[i+144>>2]=m&127;b=H[l|0];j=J[a+8>>2];J[j+8>>2]=1;J[j>>2]=(b|0)!=0;J[a+8>>2]=J[a+8>>2]+16;j=l+1|0;if(n>>>0>=j>>>0){break r}b=h+1808|0;ij(b,0,129);c=J[i+140>>2];t:{if(!c){break t}d=b+c|0;l=J[i+144>>2];e=-1;if((c|0)!=1){k=c&-2;e=0;m=0;while(1){b=e;f=(((l|0)<=0?127:-1)+l|0)%128|0;H[d+(b^-1)|0]=K[f+i|0];l=(f+((f|0)<=0?127:-1)|0)%128|0;H[d+(b^-2)|0]=K[i+l|0];e=b+2|0;m=m+2|0;if((k|0)!=(m|0)){continue}break}e=-3-b|0}if(!(c&1)){break t}H[d+e|0]=K[i+((((l|0)<=0?127:-1)+l|0)%128|0)|0]}b=J[i+132>>2];c=J[i+136>>2];J[h+236>>2]=n-j;J[h+232>>2]=c;J[h+228>>2]=n;J[h+224>>2]=j;J[h+240>>2]=h+1808;J[h+220>>2]=b;J[h+216>>2]=g;J[h+212>>2]=o;J[h+208>>2]=49474;b=h+1296|0;Gj(b,512,150125,h+208|0);J[h+192>>2]=b;a=fj(a,31902,h+192|0);break c;case 2:b=J[i+144>>2];J[i+144>>2]=b+1;H[b+i|0]=86;b=J[i+140>>2];j=J[i+144>>2];if(b>>>0>>0){J[i+140>>2]=j;b=j}j=j&127;H[j+i|0]=78;m=j+1|0;if(b>>>0<=j>>>0){J[i+140>>2]=m}J[i+144>>2]=m&127;b=l-d|0;b=((b+3&-4)-b|0)+l|0;j=K[b|0]|K[b+1|0]<<8|(K[b+2|0]<<16|K[b+3|0]<<24);m=K[b+4|0]|K[b+5|0]<<8|(K[b+6|0]<<16|K[b+7|0]<<24);x(0,j|0);x(1,m|0);u=+z();j=J[a+8>>2];J[j+8>>2]=3;O[j>>3]=u;J[a+8>>2]=J[a+8>>2]+16;j=b+8|0;if(n>>>0>=j>>>0){break r}b=h+1808|0;ij(b,0,129);c=J[i+140>>2];u:{if(!c){break u}d=b+c|0;l=J[i+144>>2];e=-1;if((c|0)!=1){k=c&-2;e=0;m=0;while(1){b=e;f=(((l|0)<=0?127:-1)+l|0)%128|0;H[d+(b^-1)|0]=K[f+i|0];l=(f+((f|0)<=0?127:-1)|0)%128|0;H[d+(b^-2)|0]=K[i+l|0];e=b+2|0;m=m+2|0;if((k|0)!=(m|0)){continue}break}e=-3-b|0}if(!(c&1)){break u}H[d+e|0]=K[i+((((l|0)<=0?127:-1)+l|0)%128|0)|0]}b=J[i+132>>2];c=J[i+136>>2];J[h+364>>2]=n-j;J[h+360>>2]=c;J[h+356>>2]=n;J[h+352>>2]=j;J[h+368>>2]=h+1808;J[h+348>>2]=b;J[h+344>>2]=g;J[h+340>>2]=o;J[h+336>>2]=35899;b=h+1296|0;Gj(b,512,150125,h+336|0);J[h+320>>2]=b;a=fj(a,31902,h+320|0);break c;case 3:b=J[i+144>>2];J[i+144>>2]=b+1;H[b+i|0]=86;j=J[i+140>>2];b=J[i+144>>2];if(j>>>0>>0){J[i+140>>2]=b;j=b}m=b&127;H[m+i|0]=83;b=m+1|0;if(j>>>0<=m>>>0){J[i+140>>2]=b;j=b}b=b&127;J[i+144>>2]=b;v:{if(M[c+4>>2]<=1){m=yj(l)+1|0;s=n-l|0;if((m|0)>(s|0)){k=0;p=h+1296|0;ij(p,0,129);w=j&1;p=j+p|0;if((j|0)!=1){A=j&-2;j=0;while(1){b=(((b|0)<=0?127:-1)+b|0)%128|0;H[p+(k^-1)|0]=K[b+i|0];b=(b+((b|0)<=0?127:-1)|0)%128|0;H[p+(k^-2)|0]=K[i+b|0];k=k+2|0;j=j+2|0;if((A|0)!=(j|0)){continue}break}}if(w){H[p+(k^-1)|0]=K[i+((((b|0)<=0?127:-1)+b|0)%128|0)|0]}b=J[i+132>>2];j=J[i+136>>2];J[h+452>>2]=m;J[h+456>>2]=s;J[h+468>>2]=h+1296;J[h+460>>2]=b;J[h+464>>2]=j;J[h+448>>2]=o;fj(a,149891,h+448|0)}xj(a,l);break v}m=YJ(a,l,n,o,i)}j=l+m|0;if(n>>>0>=j>>>0){break r}b=h+1808|0;ij(b,0,129);c=J[i+140>>2];w:{if(!c){break w}d=b+c|0;l=J[i+144>>2];e=-1;if((c|0)!=1){k=c&-2;e=0;m=0;while(1){b=e;f=(((l|0)<=0?127:-1)+l|0)%128|0;H[d+(b^-1)|0]=K[f+i|0];l=(f+((f|0)<=0?127:-1)|0)%128|0;H[d+(b^-2)|0]=K[i+l|0];e=b+2|0;m=m+2|0;if((k|0)!=(m|0)){continue}break}e=-3-b|0}if(!(c&1)){break w}H[d+e|0]=K[i+((((l|0)<=0?127:-1)+l|0)%128|0)|0]}b=J[i+132>>2];c=J[i+136>>2];J[h+428>>2]=n-j;J[h+424>>2]=c;J[h+420>>2]=n;J[h+416>>2]=j;J[h+432>>2]=h+1808;J[h+412>>2]=b;J[h+408>>2]=g;J[h+404>>2]=o;J[h+400>>2]=56457;b=h+1296|0;Gj(b,512,150125,h+400|0);J[h+384>>2]=b;a=fj(a,31902,h+384|0);break c;case 6:b=J[i+144>>2];J[i+144>>2]=b+1;H[b+i|0]=86;b=J[i+140>>2];j=J[i+144>>2];if(b>>>0>>0){J[i+140>>2]=j;b=j}m=j&127;H[m+i|0]=85;j=m+1|0;if(b>>>0<=m>>>0){J[i+140>>2]=j;b=j}m=j&127;J[i+144>>2]=m;k=l+1|0;j=k-d|0;k=((j+3&-4)-j|0)+k|0;if(k&3){break b}if(k>>>0>n>>>0){j=0;c=h+1808|0;ij(c,0,129);e=b+c|0;l=-1;if((b|0)!=1){l=b&-2;c=0;while(1){d=j;f=(((m|0)<=0?127:-1)+m|0)%128|0;H[e+(j^-1)|0]=K[f+i|0];m=(f+((f|0)<=0?127:-1)|0)%128|0;H[e+(j^-2)|0]=K[i+m|0];j=j+2|0;c=c+2|0;if((l|0)!=(c|0)){continue}break}l=-3-d|0}if(b&1){H[e+l|0]=K[i+((((m|0)<=0?127:-1)+m|0)%128|0)|0]}b=J[i+132>>2];c=J[i+136>>2];J[h+524>>2]=n-k;J[h+520>>2]=c;J[h+516>>2]=n;J[h+512>>2]=k;J[h+528>>2]=h+1808;J[h+508>>2]=b;J[h+504>>2]=g;J[h+500>>2]=o;J[h+496>>2]=83145;b=h+1296|0;Gj(b,512,150125,h+496|0);J[h+480>>2]=b;a=fj(a,31902,h+480|0);break c}x:{y:{z:{A:{B:{C:{D:{b=H[l|0];switch(b&255){case 5:break y;case 4:break z;case 3:break A;case 2:break B;case 1:break C;case 0:break D;default:break x}}Es(i,109013);b=J[k>>2];j=J[k+4>>2];N[h+1304>>2]=N[k+8>>2];J[h+1296>>2]=b;J[h+1300>>2]=j;b=h+1296|0;cl(a,b);j=k+12|0;if(n>>>0>=j>>>0){break r}c=h+1808|0;Fs(i,c);d=J[i+132>>2];e=J[i+136>>2];J[h+604>>2]=n-j;J[h+600>>2]=e;J[h+596>>2]=n;J[h+592>>2]=j;J[h+608>>2]=c;J[h+588>>2]=d;J[h+584>>2]=g;J[h+580>>2]=o;J[h+576>>2]=109002;Gj(b,512,150125,h+576|0);J[h+560>>2]=b;a=fj(a,31902,h+560|0);break c}Es(i,107142);b=J[k>>2];j=J[k+4>>2];m=J[k+12>>2];J[h+1304>>2]=J[k+8>>2];J[h+1308>>2]=m;J[h+1296>>2]=b;J[h+1300>>2]=j;b=h+1296|0;yo(a,b);j=k+16|0;if(n>>>0>=j>>>0){break r}c=h+1808|0;Fs(i,c);d=J[i+132>>2];e=J[i+136>>2];J[h+668>>2]=n-j;J[h+664>>2]=e;J[h+660>>2]=n;J[h+656>>2]=j;J[h+672>>2]=c;J[h+652>>2]=d;J[h+648>>2]=g;J[h+644>>2]=o;J[h+640>>2]=107020;Gj(b,512,150125,h+640|0);J[h+624>>2]=b;a=fj(a,31902,h+624|0);break c}Es(i,107145);b=J[k>>2];j=J[k+4>>2];m=J[k+12>>2];J[h+1304>>2]=J[k+8>>2];J[h+1308>>2]=m;J[h+1296>>2]=b;J[h+1300>>2]=j;b=h+1296|0;tq(a,b);j=k+16|0;if(n>>>0>=j>>>0){break r}c=h+1808|0;Fs(i,c);d=J[i+132>>2];e=J[i+136>>2];J[h+732>>2]=n-j;J[h+728>>2]=e;J[h+724>>2]=n;J[h+720>>2]=j;J[h+736>>2]=c;J[h+716>>2]=d;J[h+712>>2]=g;J[h+708>>2]=o;J[h+704>>2]=16780;Gj(b,512,150125,h+704|0);J[h+688>>2]=b;a=fj(a,31902,h+688|0);break c}Es(i,107165);r=N[k>>2];N[h+1232>>2]=r;q=N[k+4>>2];N[h+1236>>2]=q;t=N[k+8>>2];N[h+1240>>2]=t;N[h+1236>>2]=q;N[h+1232>>2]=r;N[h+1244>>2]=N[k+12>>2];N[h+1240>>2]=t;N[h+1236>>2]=q;q=N[k+16>>2];N[h+1248>>2]=q;r=N[k+20>>2];N[h+1252>>2]=r;t=N[k+24>>2];N[h+1252>>2]=r;N[h+1248>>2]=q;N[h+1256>>2]=t;v=N[k+28>>2];N[h+1256>>2]=t;N[h+1248>>2]=q;N[h+1252>>2]=r;N[h+1260>>2]=v;q=N[k+32>>2];N[h+1264>>2]=q;r=N[k+36>>2];N[h+1268>>2]=r;t=N[k+40>>2];N[h+1268>>2]=r;N[h+1264>>2]=q;N[h+1272>>2]=t;v=N[k+44>>2];N[h+1272>>2]=t;N[h+1264>>2]=q;N[h+1268>>2]=r;N[h+1276>>2]=v;q=N[k+48>>2];N[h+1280>>2]=q;r=N[k+52>>2];N[h+1284>>2]=r;t=N[k+56>>2];N[h+1284>>2]=r;N[h+1280>>2]=q;N[h+1288>>2]=t;v=N[k+60>>2];N[h+1288>>2]=t;N[h+1280>>2]=q;N[h+1284>>2]=r;N[h+1292>>2]=v;Kp(a,h+1232|0);j=k- -64|0;if(n>>>0>=j>>>0){break r}b=h+1808|0;Fs(i,b);c=J[i+132>>2];d=J[i+136>>2];J[h+796>>2]=n-j;J[h+792>>2]=d;J[h+788>>2]=n;J[h+784>>2]=j;J[h+800>>2]=b;J[h+780>>2]=c;J[h+776>>2]=g;J[h+772>>2]=o;J[h+768>>2]=106936;b=h+1296|0;Gj(b,512,150125,h+768|0);J[h+752>>2]=b;a=fj(a,31902,h+752|0);break c}Es(i,93878);Bk(a,K[k|0]|K[k+1|0]<<8|(K[k+2|0]<<16|K[k+3|0]<<24),K[k+4|0]|K[k+5|0]<<8|(K[k+6|0]<<16|K[k+7|0]<<24));j=k+8|0;if(n>>>0>=j>>>0){break r}b=h+1808|0;Fs(i,b);c=J[i+132>>2];d=J[i+136>>2];J[h+860>>2]=n-j;J[h+856>>2]=d;J[h+852>>2]=n;J[h+848>>2]=j;J[h+864>>2]=b;J[h+844>>2]=c;J[h+840>>2]=g;J[h+836>>2]=o;J[h+832>>2]=53414;b=h+1296|0;Gj(b,512,150125,h+832|0);J[h+816>>2]=b;a=fj(a,31902,h+816|0);break c}Es(i,92244);b=h+1256|0;J[b>>2]=0;J[b+4>>2]=0;j=h+1248|0;J[j>>2]=0;J[j+4>>2]=0;m=h+1240|0;J[m>>2]=0;J[m+4>>2]=0;J[h+1232>>2]=0;J[h+1236>>2]=0;l=K[k+12|0]|K[k+13|0]<<8|(K[k+14|0]<<16|K[k+15|0]<<24);J[m>>2]=K[k+8|0]|K[k+9|0]<<8|(K[k+10|0]<<16|K[k+11|0]<<24);J[m+4>>2]=l;m=K[k+20|0]|K[k+21|0]<<8|(K[k+22|0]<<16|K[k+23|0]<<24);J[j>>2]=K[k+16|0]|K[k+17|0]<<8|(K[k+18|0]<<16|K[k+19|0]<<24);J[j+4>>2]=m;j=K[k+28|0]|K[k+29|0]<<8|(K[k+30|0]<<16|K[k+31|0]<<24);J[b>>2]=K[k+24|0]|K[k+25|0]<<8|(K[k+26|0]<<16|K[k+27|0]<<24);J[b+4>>2]=j;b=K[k+4|0]|K[k+5|0]<<8|(K[k+6|0]<<16|K[k+7|0]<<24);J[h+1232>>2]=K[k|0]|K[k+1|0]<<8|(K[k+2|0]<<16|K[k+3|0]<<24);J[h+1236>>2]=b;wm(a,h+1232|0);j=k+32|0;if(n>>>0>=j>>>0){break r}b=h+1808|0;Fs(i,b);c=J[i+132>>2];d=J[i+136>>2];J[h+924>>2]=n-j;J[h+920>>2]=d;J[h+916>>2]=n;J[h+912>>2]=j;J[h+928>>2]=b;J[h+908>>2]=c;J[h+904>>2]=g;J[h+900>>2]=o;J[h+896>>2]=49406;b=h+1296|0;Gj(b,512,150125,h+896|0);J[h+880>>2]=b;a=fj(a,31902,h+880|0);break c}J[h+552>>2]=k;J[h+548>>2]=y;J[h+544>>2]=b;a=fj(a,30613,h+544|0);break c;case 4:j=dK(a,i,c,d,l,f,D)+l|0;if(n>>>0>=j>>>0){break r}b=h+1808|0;ij(b,0,129);c=J[i+140>>2];E:{if(!c){break E}d=b+c|0;l=J[i+144>>2];e=-1;if((c|0)!=1){k=c&-2;e=0;m=0;while(1){b=e;f=(((l|0)<=0?127:-1)+l|0)%128|0;H[d+(b^-1)|0]=K[f+i|0];l=(f+((f|0)<=0?127:-1)|0)%128|0;H[d+(b^-2)|0]=K[i+l|0];e=b+2|0;m=m+2|0;if((k|0)!=(m|0)){continue}break}e=-3-b|0}if(!(c&1)){break E}H[d+e|0]=K[i+((((l|0)<=0?127:-1)+l|0)%128|0)|0]}b=J[i+132>>2];c=J[i+136>>2];J[h+988>>2]=n-j;J[h+984>>2]=c;J[h+980>>2]=n;J[h+976>>2]=j;J[h+992>>2]=h+1808;J[h+972>>2]=b;J[h+968>>2]=g;J[h+964>>2]=o;J[h+960>>2]=67726;b=h+1296|0;Gj(b,512,150125,h+960|0);J[h+944>>2]=b;a=fj(a,31902,h+944|0);break c;default:break s}}b=(p|0)==-1?60960:J[(p<<2)+257632>>2];J[h+184>>2]=l;J[h+180>>2]=y;J[h+176>>2]=b;a=fj(a,30555,h+176|0);break c}Kj(a,-3);if(j>>>0>n>>>0){b=h+1808|0;ij(b,0,129);c=J[i+140>>2];F:{if(!c){break F}d=b+c|0;l=J[i+144>>2];e=-1;if((c|0)!=1){k=c&-2;e=0;m=0;while(1){b=e;f=(((l|0)<=0?127:-1)+l|0)%128|0;H[d+(b^-1)|0]=K[f+i|0];l=(f+((f|0)<=0?127:-1)|0)%128|0;H[d+(b^-2)|0]=K[i+l|0];e=b+2|0;m=m+2|0;if((k|0)!=(m|0)){continue}break}e=-3-b|0}if(!(c&1)){break F}H[d+e|0]=K[i+((((l|0)<=0?127:-1)+l|0)%128|0)|0]}b=J[i+132>>2];c=J[i+136>>2];J[h+300>>2]=n-j;J[h+296>>2]=c;J[h+292>>2]=n;J[h+288>>2]=j;J[h+304>>2]=h+1808;J[h+284>>2]=b;J[h+280>>2]=g;J[h+276>>2]=o;J[h+272>>2]=71421;b=h+1296|0;Gj(b,512,150125,h+272|0);J[h+256>>2]=b;a=fj(a,31902,h+256|0);break c}y=y+1|0;if((y|0)!=(o|0)){continue}break}}if((C+1|0)!=J[a+8>>2]-J[a+12>>2]>>4){break a}a=J[i+144>>2];J[i+144>>2]=a+1;H[a+i|0]=125;a=J[i+144>>2];if(a>>>0>M[i+140>>2]){J[i+140>>2]=a}J[i+144>>2]=a&127;a=j-e|0}Ui=h+1952|0;return a}Z(113492,41830,974,67851);B()}Z(143334,41830,1063,67851);B()}function HV(a,b,c,d){var e=0,f=0,g=0,h=0,i=0,j=0,k=0,l=0,m=0,n=0,o=0,p=0,q=0,r=0,s=0,t=0,u=0,w=0,y=0,B=0,D=0,E=0,F=0,G=0,I=0,L=0,N=0;q=Ui-48|0;Ui=q;a:{b:{if(c>>>0>2){break b}c=c<<2;E=J[c+216268>>2];F=J[c+216256>>2];while(1){c=J[b+4>>2];c:{if((c|0)!=J[b+104>>2]){J[b+4>>2]=c+1;c=K[c|0];break c}c=Uk(b)}if((c|0)==32|c-9>>>0<5){continue}break}r=1;d:{e:{switch(c-43|0){case 0:case 2:break e;default:break d}}r=(c|0)==45?-1:1;c=J[b+4>>2];if((c|0)!=J[b+104>>2]){J[b+4>>2]=c+1;c=K[c|0];break d}c=Uk(b)}f:{g:{if((c&-33)==73){while(1){if((f|0)==7){break g}c=J[b+4>>2];h:{if((c|0)!=J[b+104>>2]){J[b+4>>2]=c+1;c=K[c|0];break h}c=Uk(b)}e=f+1758|0;f=f+1|0;if(H[e|0]==(c|32)){continue}break}}if((f|0)!=3){e=(f|0)==8;if(e){break g}if(!d|f>>>0<4){break f}if(e){break g}}c=J[b+116>>2];if((c|0)>=0|(c|0)>0){J[b+4>>2]=J[b+4>>2]-1}if(!d|f>>>0<4){break g}c=(c|0)<0;while(1){if(!c){J[b+4>>2]=J[b+4>>2]-1}f=f-1|0;if(f>>>0>3){continue}break}}h=Ui-16|0;Ui=h;o=(C(Q(Q(r|0)*Q(Infinity))),v(2));b=o&8388607;d=o>>>23|0;c=d&255;i:{if(c){if((c|0)!=255){c=b;b=b>>>7|0;g=c<<25;i=b;d=(d&255)+16256|0;break i}c=b;b=b>>>7|0;g=c<<25;i=b;d=32767;break i}d=0;if(!b){break i}c=b;b=S(b);Mm(h,c,0,0,0,b+81|0);g=J[h+8>>2];i=J[h+12>>2]^65536;j=J[h>>2];k=J[h+4>>2];d=16265-b|0}J[q>>2]=j;J[q+4>>2]=k;c=q;J[c+8>>2]=g;J[c+12>>2]=i|(o&-2147483648|d<<16);Ui=h+16|0;g=J[c+8>>2];i=J[c+12>>2];j=J[c>>2];k=J[c+4>>2];break a}j:{k:{l:{m:{n:{if(f){break n}f=0;if((c&-33)!=78){break n}while(1){if((f|0)==2){break m}c=J[b+4>>2];o:{if((c|0)!=J[b+104>>2]){J[b+4>>2]=c+1;c=K[c|0];break o}c=Uk(b)}e=f+48244|0;f=f+1|0;if(H[e|0]==(c|32)){continue}break}}switch(f|0){case 0:break j;case 3:break m;default:break l}}p:{c=J[b+4>>2];q:{if((c|0)!=J[b+104>>2]){J[b+4>>2]=c+1;c=K[c|0];break q}c=Uk(b)}if((c|0)==40){f=1;break p}i=2147450880;if(J[b+116>>2]<0){break a}J[b+4>>2]=J[b+4>>2]-1;break a}while(1){r:{c=J[b+4>>2];s:{if((c|0)!=J[b+104>>2]){J[b+4>>2]=c+1;c=K[c|0];break s}c=Uk(b)}if(!(c-48>>>0<10|c-65>>>0<26|(c|0)==95)){if(c-97>>>0>=26){break r}}f=f+1|0;continue}break}i=2147450880;if((c|0)==41){break a}c=J[b+116>>2];if((c|0)>=0|(c|0)>0){J[b+4>>2]=J[b+4>>2]-1}t:{if(d){if(f){break t}break a}break k}while(1){if((c|0)>0|(c|0)>=0){J[b+4>>2]=J[b+4>>2]-1}f=f-1|0;if(f){continue}break}break a}c=J[b+116>>2];if((c|0)>0){c=1}else{c=(c|0)>=0}if(c){J[b+4>>2]=J[b+4>>2]-1}}J[245744]=28;No(b,0,0);break b}u:{if((c|0)!=48){break u}f=J[b+4>>2];v:{if((f|0)!=J[b+104>>2]){J[b+4>>2]=f+1;f=K[f|0];break v}f=Uk(b)}if((f&-33)==88){e=Ui-432|0;Ui=e;c=J[b+4>>2];w:{if((c|0)!=J[b+104>>2]){J[b+4>>2]=c+1;c=K[c|0];break w}c=Uk(b)}x:{y:{while(1){if((c|0)!=48){z:{if((c|0)!=46){break x}c=J[b+4>>2];if((c|0)==J[b+104>>2]){break z}J[b+4>>2]=c+1;c=K[c|0];break y}}else{c=J[b+4>>2];if((c|0)!=J[b+104>>2]){s=1;J[b+4>>2]=c+1;c=K[c|0]}else{s=1;c=Uk(b)}continue}break}c=Uk(b)}if((c|0)!=48){y=1;break x}while(1){c=o;o=c-1|0;p=p-!c|0;c=J[b+4>>2];A:{if((c|0)!=J[b+104>>2]){J[b+4>>2]=c+1;c=K[c|0];break A}c=Uk(b)}if((c|0)==48){continue}break}y=1;s=1}k=1073676288;while(1){B:{f=c;C:{D:{G=c-48|0;if(G>>>0<10){break D}L=(c|0)!=46;f=c|32;if(L&f-97>>>0>5){break B}if(L){break D}if(y){break B}y=1;o=g;p=i;break C}c=(c|0)>57?f-87|0:G;E:{if((i|0)<=0&g>>>0<=7|(i|0)<0){l=c+(l<<4)|0;break E}if(!i&g>>>0<=28){Bn(e+48|0,c);il(e+32|0,B,D,j,k,0,0,0,1073414144);B=J[e+32>>2];D=J[e+36>>2];j=J[e+40>>2];k=J[e+44>>2];il(e+16|0,J[e+48>>2],J[e+52>>2],J[e+56>>2],J[e+60>>2],B,D,j,k);qn(e,J[e+16>>2],J[e+20>>2],J[e+24>>2],J[e+28>>2],h,m,u,w);u=J[e+8>>2];w=J[e+12>>2];h=J[e>>2];m=J[e+4>>2];break E}if(n|!c){break E}il(e+80|0,B,D,j,k,0,0,0,1073610752);qn(e- -64|0,J[e+80>>2],J[e+84>>2],J[e+88>>2],J[e+92>>2],h,m,u,w);u=J[e+72>>2];w=J[e+76>>2];n=1;h=J[e+64>>2];m=J[e+68>>2]}g=g+1|0;i=g?i:i+1|0;s=1}c=J[b+4>>2];if((c|0)!=J[b+104>>2]){J[b+4>>2]=c+1;c=K[c|0]}else{c=Uk(b)}continue}break}F:{if(!s){c=J[b+116>>2];if((c|0)>0){c=1}else{c=(c|0)>=0}G:{H:{if(c){c=J[b+4>>2];J[b+4>>2]=c-1;if(!d){break H}J[b+4>>2]=c-2;if(!y){break G}J[b+4>>2]=c-3;break G}if(d){break G}}No(b,0,0)}A(0);b=v(1)|0;d=v(0)|0;A(+(r|0));c=v(1)|0;v(0)|0;x(0,d|0);x(1,b&2147483647|c&-2147483648);sp(e+96|0,+z());h=J[e+96>>2];m=J[e+100>>2];c=J[e+108>>2];b=J[e+104>>2];break F}if((i|0)<=0&g>>>0<=7|(i|0)<0){j=g;k=i;while(1){l=l<<4;j=j+1|0;k=j?k:k+1|0;if((j|0)!=8|k){continue}break}}I:{J:{K:{if((c&-33)==80){j=MG(b,d);c=Yi;k=c;if(j|(c|0)!=-2147483648){break I}if(d){c=J[b+116>>2];if((c|0)>0){c=1}else{c=(c|0)>=0}if(c){break K}break J}h=0;m=0;No(b,0,0);c=0;b=0;break F}j=0;k=0;if(J[b+116>>2]<0){break I}}J[b+4>>2]=J[b+4>>2]-1}j=0;k=0}if(!l){A(0);b=v(1)|0;d=v(0)|0;A(+(r|0));c=v(1)|0;v(0)|0;x(0,d|0);x(1,b&2147483647|c&-2147483648);sp(e+112|0,+z());h=J[e+112>>2];m=J[e+116>>2];c=J[e+124>>2];b=J[e+120>>2];break F}b=y?o:g;d=j+(b<<2)|0;b=k+((y?p:i)<<2|b>>>30)|0;g=d-32|0;c=0-E|0;i=(d>>>0>>0?b+1|0:b)-(d>>>0<32)|0;b=i;if((b|0)>0){b=1}else{b=c>>>0>>0&(b|0)>=0}if(b){J[245744]=68;Bn(e+160|0,r);il(e+144|0,J[e+160>>2],J[e+164>>2],J[e+168>>2],J[e+172>>2],-1,-1,-1,2147418111);il(e+128|0,J[e+144>>2],J[e+148>>2],J[e+152>>2],J[e+156>>2],-1,-1,-1,2147418111);h=J[e+128>>2];m=J[e+132>>2];c=J[e+140>>2];b=J[e+136>>2];break F}b=E-226|0;c=b>>31;if((i|0)>=(c|0)&b>>>0<=g>>>0|(c|0)<(i|0)){if((l|0)>=0){while(1){qn(e+416|0,h,m,u,w,0,0,0,-1073807360);b=CV(h,m,u,w,1073610752);b=(b|0)>=0;qn(e+400|0,h,m,u,w,b?J[e+416>>2]:h,b?J[e+420>>2]:m,b?J[e+424>>2]:u,b?J[e+428>>2]:w);c=l<<1;l=c|b;b=g;g=b-1|0;i=i-!b|0;u=J[e+408>>2];w=J[e+412>>2];h=J[e+400>>2];m=J[e+404>>2];if((c|0)>=0){continue}break}}b=i-((E>>31)+(g>>>0>>0)|0)|0;c=(g-E|0)+32|0;b=c>>>0<32?b+1|0:b;c=c>>>0>>0&(b|0)<=0|(b|0)<0?(c|0)>0?c:0:F;L:{if((c|0)>=113){Bn(e+384|0,r);o=J[e+392>>2];p=J[e+396>>2];B=J[e+384>>2];D=J[e+388>>2];j=0;b=0;break L}sp(e+352|0,zp(1,144-c|0));Bn(e+336|0,r);B=J[e+336>>2];D=J[e+340>>2];o=J[e+344>>2];p=J[e+348>>2];FS(e+368|0,J[e+352>>2],J[e+356>>2],J[e+360>>2],J[e+364>>2],p);t=J[e+376>>2];I=J[e+380>>2];j=J[e+372>>2];b=J[e+368>>2]}d=!(l&1)&((Mr(h,m,u,w,0,0,0,0)|0)!=0&(c|0)<32);Et(e+320|0,d|l);il(e+304|0,B,D,o,p,J[e+320>>2],J[e+324>>2],J[e+328>>2],J[e+332>>2]);c=b;qn(e+272|0,J[e+304>>2],J[e+308>>2],J[e+312>>2],J[e+316>>2],b,j,t,I);b=d;il(e+288|0,B,D,o,p,b?0:h,b?0:m,b?0:u,b?0:w);qn(e+256|0,J[e+288>>2],J[e+292>>2],J[e+296>>2],J[e+300>>2],J[e+272>>2],J[e+276>>2],J[e+280>>2],J[e+284>>2]);iF(e+240|0,J[e+256>>2],J[e+260>>2],J[e+264>>2],J[e+268>>2],c,j,t,I);b=J[e+240>>2];d=J[e+244>>2];c=J[e+248>>2];j=J[e+252>>2];if(!Mr(b,d,c,j,0,0,0,0)){J[245744]=68}NG(e+224|0,b,d,c,j,g);h=J[e+224>>2];m=J[e+228>>2];c=J[e+236>>2];b=J[e+232>>2];break F}J[245744]=68;Bn(e+208|0,r);il(e+192|0,J[e+208>>2],J[e+212>>2],J[e+216>>2],J[e+220>>2],0,0,0,65536);il(e+176|0,J[e+192>>2],J[e+196>>2],J[e+200>>2],J[e+204>>2],0,0,0,65536);h=J[e+176>>2];m=J[e+180>>2];c=J[e+188>>2];b=J[e+184>>2]}J[q+16>>2]=h;J[q+20>>2]=m;J[q+24>>2]=b;J[q+28>>2]=c;Ui=e+432|0;g=J[q+24>>2];i=J[q+28>>2];j=J[q+16>>2];k=J[q+20>>2];break a}if(J[b+116>>2]<0){break u}J[b+4>>2]=J[b+4>>2]-1}f=b;h=c;t=d;d=0;e=Ui-8976|0;Ui=e;G=0-E|0;I=G-F|0;M:{N:{while(1){if((h|0)!=48){O:{if((h|0)!=46){break M}b=J[f+4>>2];if((b|0)==J[f+104>>2]){break O}J[f+4>>2]=b+1;h=K[b|0];break N}}else{b=J[f+4>>2];if((b|0)!=J[f+104>>2]){J[f+4>>2]=b+1;h=K[b|0]}else{h=Uk(f)}d=1;continue}break}h=Uk(f)}if((h|0)==48){while(1){b=g;g=b-1|0;i=i-!b|0;b=J[f+4>>2];P:{if((b|0)!=J[f+104>>2]){J[f+4>>2]=b+1;h=K[b|0];break P}h=Uk(f)}if((h|0)==48){continue}break}d=1}y=1}J[e+784>>2]=0;Q:{R:{b=(h|0)==46;c=h-48|0;S:{T:{U:{if(b|c>>>0<=9){while(1){V:{if(b&1){if(!y){g=j;i=k;y=1;break V}b=!d;break U}b=k;j=j+1|0;k=j?b:b+1|0;if((l|0)<=2044){s=(h|0)==48?s:j;b=(e+784|0)+(l<<2)|0;if(n){c=(P(J[b>>2],10)+h|0)-48|0}J[b>>2]=c;d=1;c=n+1|0;b=(c|0)==9;n=b?0:c;l=b+l|0;break V}if((h|0)==48){break V}J[e+8960>>2]=J[e+8960>>2]|1;s=18396}b=J[f+4>>2];W:{if((b|0)!=J[f+104>>2]){J[f+4>>2]=b+1;h=K[b|0];break W}h=Uk(f)}b=(h|0)==46;c=h-48|0;if(b|c>>>0<10){continue}break}}g=y?g:j;i=y?i:k;if(!(!d|(h&-33)!=69)){h=MG(f,t);b=Yi;m=b;X:{if(h|(b|0)!=-2147483648){break X}if(!t){break S}h=0;m=0;if(J[f+116>>2]<0){break X}J[f+4>>2]=J[f+4>>2]-1}b=i+m|0;g=g+h|0;i=g>>>0>>0?b+1|0:b;break R}b=!d;if((h|0)<0){break T}}if(J[f+116>>2]<0){break T}J[f+4>>2]=J[f+4>>2]-1}if(!b){break R}J[245744]=28}No(f,0,0);g=0;i=0;c=0;b=0;break Q}b=J[e+784>>2];if(!b){A(0);b=v(1)|0;d=v(0)|0;A(+(r|0));c=v(1)|0;v(0)|0;x(0,d|0);x(1,b&2147483647|c&-2147483648);sp(e,+z());g=J[e+8>>2];i=J[e+12>>2];c=J[e+4>>2];b=J[e>>2];break Q}if(!(j>>>0>9&(k|0)>=0|(k|0)>0|((g|0)!=(j|0)|(i|0)!=(k|0))|(b>>>F|0?(F|0)<=30:0))){Bn(e+48|0,r);Et(e+32|0,b);il(e+16|0,J[e+48>>2],J[e+52>>2],J[e+56>>2],J[e+60>>2],J[e+32>>2],J[e+36>>2],J[e+40>>2],J[e+44>>2]);g=J[e+24>>2];i=J[e+28>>2];c=J[e+20>>2];b=J[e+16>>2];break Q}b=G>>>1|0;if(b>>>0>>0&(i|0)>=0|(i|0)>0){J[245744]=68;Bn(e+96|0,r);il(e+80|0,J[e+96>>2],J[e+100>>2],J[e+104>>2],J[e+108>>2],-1,-1,-1,2147418111);il(e- -64|0,J[e+80>>2],J[e+84>>2],J[e+88>>2],J[e+92>>2],-1,-1,-1,2147418111);g=J[e+72>>2];i=J[e+76>>2];c=J[e+68>>2];b=J[e+64>>2];break Q}b=E-226|0;c=g>>>0>>0;b=b>>31;if(c&(i|0)<=(b|0)|(b|0)>(i|0)){J[245744]=68;Bn(e+144|0,r);il(e+128|0,J[e+144>>2],J[e+148>>2],J[e+152>>2],J[e+156>>2],0,0,0,65536);il(e+112|0,J[e+128>>2],J[e+132>>2],J[e+136>>2],J[e+140>>2],0,0,0,65536);g=J[e+120>>2];i=J[e+124>>2];c=J[e+116>>2];b=J[e+112>>2];break Q}if(n){if((n|0)<=8){b=(e+784|0)+(l<<2)|0;f=J[b>>2];while(1){f=P(f,10);n=n+1|0;if((n|0)!=9){continue}break}J[b>>2]=f}l=l+1|0}n=g;Y:{if(g>>>0>17&(i|0)>=0|(i|0)>0|(s|0)>=9|(g|0)<(s|0)){break Y}if(!i&(g|0)==9){Bn(e+192|0,r);Et(e+176|0,J[e+784>>2]);il(e+160|0,J[e+192>>2],J[e+196>>2],J[e+200>>2],J[e+204>>2],J[e+176>>2],J[e+180>>2],J[e+184>>2],J[e+188>>2]);g=J[e+168>>2];i=J[e+172>>2];c=J[e+164>>2];b=J[e+160>>2];break Q}if((i|0)<=0&g>>>0<=8|(i|0)<0){Bn(e+272|0,r);Et(e+256|0,J[e+784>>2]);il(e+240|0,J[e+272>>2],J[e+276>>2],J[e+280>>2],J[e+284>>2],J[e+256>>2],J[e+260>>2],J[e+264>>2],J[e+268>>2]);Bn(e+224|0,J[(0-n<<2)+216256>>2]);KV(e+208|0,J[e+240>>2],J[e+244>>2],J[e+248>>2],J[e+252>>2],J[e+224>>2],J[e+228>>2],J[e+232>>2],J[e+236>>2]);g=J[e+216>>2];i=J[e+220>>2];c=J[e+212>>2];b=J[e+208>>2];break Q}b=(P(n,-3)+F|0)+27|0;c=J[e+784>>2];if(c>>>b|0?(b|0)<=30:0){break Y}Bn(e+352|0,r);Et(e+336|0,c);il(e+320|0,J[e+352>>2],J[e+356>>2],J[e+360>>2],J[e+364>>2],J[e+336>>2],J[e+340>>2],J[e+344>>2],J[e+348>>2]);Bn(e+304|0,J[(n<<2)+216184>>2]);il(e+288|0,J[e+320>>2],J[e+324>>2],J[e+328>>2],J[e+332>>2],J[e+304>>2],J[e+308>>2],J[e+312>>2],J[e+316>>2]);g=J[e+296>>2];i=J[e+300>>2];c=J[e+292>>2];b=J[e+288>>2];break Q}while(1){b=l;l=b-1|0;if(!J[(e+784|0)+(l<<2)>>2]){continue}break}s=0;c=(n|0)%9|0;Z:{if(!c){c=0;break Z}d=(i|0)<0?c+9|0:c;_:{if(!b){c=0;b=0;break _}g=J[(0-d<<2)+216256>>2];i=1e9/(g|0)|0;h=0;f=0;c=0;while(1){j=h;k=e+784|0;h=k+(f<<2)|0;l=J[h>>2];t=(l>>>0)/(g>>>0)|0;j=j+t|0;J[h>>2]=j;j=!j&(c|0)==(f|0);c=j?c+1&2047:c;n=j?n-9|0:n;h=P(i,l-P(g,t)|0);f=f+1|0;if((f|0)!=(b|0)){continue}break}if(!h){break _}J[k+(b<<2)>>2]=h;b=b+1|0}n=(n-d|0)+9|0}while(1){f=(e+784|0)+(c<<2)|0;t=(n|0)<36;$:{while(1){if(!t&((n|0)!=36|M[f>>2]>=10384593)){break $}l=b+2047|0;d=0;while(1){j=b;g=d;h=l&2047;l=(e+784|0)+(h<<2)|0;d=J[l>>2];b=d>>>3|0;d=d<<29;g=g+d|0;i=d>>>0>g>>>0?b+1|0:b;if(!i&g>>>0<1000000001){d=0}else{b=g;d=lxa(b,i,1e9);k=ixa(d,Yi,1e9,0);g=b-k|0;i=i-(Yi+(b>>>0>>0)|0)|0}J[l>>2]=g;b=(c|0)==(h|0)?j:g|i?j:h;g=j-1&2047;b=(g|0)!=(h|0)?j:b;l=h-1|0;if((c|0)!=(h|0)){continue}break}s=s-29|0;b=j;if(!d){continue}break}c=c-1&2047;if((c|0)==(b|0)){h=(b+2046&2047)<<2;b=e+784|0;j=h+b|0;J[j>>2]=J[j>>2]|J[b+(g<<2)>>2];b=g}n=n+9|0;J[(e+784|0)+(c<<2)>>2]=d;continue}break}aa:{ba:while(1){g=b+1&2047;i=(e+784|0)+((b-1&2047)<<2)|0;while(1){j=(n|0)>45?9:1;ca:{while(1){d=c;f=0;da:{while(1){ea:{c=d+f&2047;if((c|0)==(b|0)){break ea}c=J[(e+784|0)+(c<<2)>>2];h=J[(f<<2)+216208>>2];if(c>>>0>>0){break ea}if(c>>>0>h>>>0){break da}f=f+1|0;if((f|0)!=4){continue}}break}if((n|0)!=36){break da}g=0;i=0;f=0;j=0;k=0;while(1){c=d+f&2047;if((c|0)==(b|0)){b=b+1&2047;J[((b<<2)+e|0)+780>>2]=0}Et(e+768|0,J[(e+784|0)+(c<<2)>>2]);il(e+752|0,g,i,j,k,0,0,1342177280,1075633366);qn(e+736|0,J[e+752>>2],J[e+756>>2],J[e+760>>2],J[e+764>>2],J[e+768>>2],J[e+772>>2],J[e+776>>2],J[e+780>>2]);j=J[e+744>>2];k=J[e+748>>2];g=J[e+736>>2];i=J[e+740>>2];f=f+1|0;if((f|0)!=4){continue}break}Bn(e+720|0,r);il(e+704|0,g,i,j,k,J[e+720>>2],J[e+724>>2],J[e+728>>2],J[e+732>>2]);j=J[e+712>>2];k=J[e+716>>2];g=0;i=0;h=J[e+704>>2];m=J[e+708>>2];t=s+113|0;f=t-E|0;n=(f|0)<(F|0);c=n?(f|0)>0?f:0:F;if((c|0)<=112){break ca}break aa}s=j+s|0;c=b;if((b|0)==(d|0)){continue}break}k=1e9>>>j|0;l=-1<>2];h=h+(m>>>j|0)|0;J[f>>2]=h;h=!h&(c|0)==(d|0);c=h?c+1&2047:c;n=h?n-9|0:n;f=P(k,l&m);d=d+1&2047;if((d|0)!=(b|0)){continue}break}if(!f){continue}if((c|0)!=(g|0)){J[t+(b<<2)>>2]=f;b=g;continue ba}J[i>>2]=J[i>>2]|1;continue}break}break}sp(e+656|0,zp(1,225-c|0));FS(e+688|0,J[e+656>>2],J[e+660>>2],J[e+664>>2],J[e+668>>2],k);B=J[e+696>>2];D=J[e+700>>2];u=J[e+688>>2];w=J[e+692>>2];sp(e+640|0,zp(1,113-c|0));nJ(e+672|0,h,m,j,k,J[e+640>>2],J[e+644>>2],J[e+648>>2],J[e+652>>2]);g=J[e+672>>2];i=J[e+676>>2];o=J[e+680>>2];p=J[e+684>>2];iF(e+624|0,h,m,j,k,g,i,o,p);qn(e+608|0,u,w,B,D,J[e+624>>2],J[e+628>>2],J[e+632>>2],J[e+636>>2]);j=J[e+616>>2];k=J[e+620>>2];h=J[e+608>>2];m=J[e+612>>2]}l=d+4&2047;fa:{if((l|0)==(b|0)){break fa}l=J[(e+784|0)+(l<<2)>>2];ga:{if(l>>>0<=499999999){if(!l&(d+5&2047)==(b|0)){break ga}sp(e+496|0,+(r|0)*.25);qn(e+480|0,g,i,o,p,J[e+496>>2],J[e+500>>2],J[e+504>>2],J[e+508>>2]);o=J[e+488>>2];p=J[e+492>>2];g=J[e+480>>2];i=J[e+484>>2];break ga}if((l|0)!=5e8){sp(e+592|0,+(r|0)*.75);qn(e+576|0,g,i,o,p,J[e+592>>2],J[e+596>>2],J[e+600>>2],J[e+604>>2]);o=J[e+584>>2];p=J[e+588>>2];g=J[e+576>>2];i=J[e+580>>2];break ga}N=+(r|0);if((d+5&2047)==(b|0)){sp(e+528|0,N*.5);qn(e+512|0,g,i,o,p,J[e+528>>2],J[e+532>>2],J[e+536>>2],J[e+540>>2]);o=J[e+520>>2];p=J[e+524>>2];g=J[e+512>>2];i=J[e+516>>2];break ga}sp(e+560|0,N*.75);qn(e+544|0,g,i,o,p,J[e+560>>2],J[e+564>>2],J[e+568>>2],J[e+572>>2]);o=J[e+552>>2];p=J[e+556>>2];g=J[e+544>>2];i=J[e+548>>2]}if((c|0)>111){break fa}nJ(e+464|0,g,i,o,p,0,0,0,1073676288);if(Mr(J[e+464>>2],J[e+468>>2],J[e+472>>2],J[e+476>>2],0,0,0,0)){break fa}qn(e+448|0,g,i,o,p,0,0,0,1073676288);o=J[e+456>>2];p=J[e+460>>2];g=J[e+448>>2];i=J[e+452>>2]}qn(e+432|0,h,m,j,k,g,i,o,p);iF(e+416|0,J[e+432>>2],J[e+436>>2],J[e+440>>2],J[e+444>>2],u,w,B,D);j=J[e+424>>2];k=J[e+428>>2];h=J[e+416>>2];m=J[e+420>>2];ha:{if((I-2|0)>=(t&2147483647)){break ha}J[e+408>>2]=j;J[e+412>>2]=k&2147483647;J[e+400>>2]=h;J[e+404>>2]=m;il(e+384|0,h,m,j,k,0,0,0,1073610752);d=CV(J[e+400>>2],J[e+404>>2],J[e+408>>2],J[e+412>>2],1081081856);b=(d|0)>=0;j=b?J[e+392>>2]:j;k=b?J[e+396>>2]:k;h=b?J[e+384>>2]:h;m=b?J[e+388>>2]:m;g=Mr(g,i,o,p,0,0,0,0);s=b+s|0;if((s+110|0)<=(I|0)){if(!(n&((c|0)!=(f|0)|(d|0)<0)&(g|0)!=0)){break ha}}J[245744]=68}NG(e+368|0,h,m,j,k,s);g=J[e+376>>2];i=J[e+380>>2];c=J[e+372>>2];b=J[e+368>>2]}J[q+40>>2]=g;J[q+44>>2]=i;J[q+32>>2]=b;J[q+36>>2]=c;Ui=e+8976|0;g=J[q+40>>2];i=J[q+44>>2];j=J[q+32>>2];k=J[q+36>>2];break a}i=0}J[a>>2]=j;J[a+4>>2]=k;J[a+8>>2]=g;J[a+12>>2]=i;Ui=q+48|0}function A1(a){a=a|0;var b=0,c=0,d=0,e=0,f=0,g=0,h=0,i=0,j=0,k=0,l=0,m=0,n=0,o=0,p=0,q=0;j=Ui-32|0;Ui=j;b=j+24|0;J[b>>2]=0;J[b+4>>2]=0;J[j+16>>2]=0;J[j+20>>2]=0;n=1;m=j+16|0;lj(32768,1,m,b,m|4);e=Aj(a,1,0);g=fl(a,1);i=Ui-16448|0;Ui=i;J[i+16432>>2]=0;J[i+16424>>2]=0;J[i+16428>>2]=0;b=i+16392|0;c=-6;a:{if(K[3576]!=49){break a}c=-2;if(!b){break a}J[b+24>>2]=0;d=J[b+32>>2];if(!d){J[b+40>>2]=0;J[b+32>>2]=2312;d=2312}if(!J[b+36>>2]){J[b+36>>2]=2313}c=-4;d=Zi[d|0](J[b+40>>2],1,5832)|0;if(!d){break a}J[b+28>>2]=d;J[d+28>>2]=0;J[d+24>>2]=1;J[d+4>>2]=42;J[d>>2]=b;J[d+80>>2]=15;J[d+76>>2]=32768;J[d+48>>2]=15;J[d+84>>2]=32767;J[d+44>>2]=32768;J[d+88>>2]=5;J[d+52>>2]=32767;J[d+56>>2]=Zi[J[b+32>>2]](J[b+40>>2],32768,2);J[d+64>>2]=Zi[J[b+32>>2]](J[b+40>>2],J[d+44>>2],2);c=Zi[J[b+32>>2]](J[b+40>>2],J[d+76>>2],2)|0;J[d+5828>>2]=0;J[d+68>>2]=c;J[d+5788>>2]=16384;c=Zi[J[b+32>>2]](J[b+40>>2],16384,4)|0;J[d+8>>2]=c;f=J[d+5788>>2];J[d+12>>2]=f<<2;b:{if(!(!J[d+68>>2]|(!J[d+56>>2]|!J[d+64>>2]))){if(c){break b}}J[d+4>>2]=666;J[b+24>>2]=J[71622];xE(b);c=-4;break a}J[d+136>>2]=0;J[d+132>>2]=3;H[d+36|0]=8;J[d+5784>>2]=c+f;J[d+5796>>2]=P(f,3)-3;c=-2;c:{if(!J[b+36>>2]|(!b|!J[b+32>>2])){break c}d=J[b+28>>2];if(!d|(b|0)!=J[d>>2]){break c}d:{e:{f=J[d+4>>2];switch(f-57|0){case 1:case 2:case 3:case 4:case 5:case 6:case 7:case 8:case 9:case 10:case 11:case 13:case 14:case 15:case 17:case 18:case 19:case 20:case 21:case 22:case 23:case 24:case 25:case 26:case 27:case 28:case 29:case 30:case 31:case 32:case 33:case 35:case 36:case 37:case 38:case 39:case 40:case 41:case 42:case 43:case 44:case 45:case 47:case 48:case 49:case 50:case 51:case 52:case 53:case 54:case 55:break c;case 0:case 12:case 16:case 34:case 46:case 56:break d;default:break e}}if((f|0)==666){break d}if((f|0)!=42){break c}}J[b+44>>2]=2;J[b+8>>2]=0;J[b+20>>2]=0;J[b+24>>2]=0;J[d+20>>2]=0;J[d+16>>2]=J[d+8>>2];c=J[d+24>>2];if((c|0)<0){c=0-c|0;J[d+24>>2]=c}c=(c|0)==2;J[d+4>>2]=c?57:42;f:{if(c){c=Gl(0,0,0);break f}c=dq(0,0,0)}J[b+48>>2]=c;J[d+40>>2]=-2;J[d+5820>>2]=0;J[d+5824>>2]=0;I[d+5816>>1]=0;J[d+2872>>2]=286432;J[d+2864>>2]=d+2684;J[d+2860>>2]=286412;J[d+2852>>2]=d+2440;J[d+2848>>2]=286392;J[d+2840>>2]=d+148;SI(d);c=0}if(!c){b=J[b+28>>2];J[b+60>>2]=J[b+44>>2]<<1;d=(J[b+76>>2]<<1)-2|0;f=J[b+68>>2];I[d+f>>1]=0;ij(f,0,d);J[b+5812>>2]=0;J[b+116>>2]=0;J[b+120>>2]=2;J[b+104>>2]=0;J[b+108>>2]=0;J[b+92>>2]=0;J[b+96>>2]=2;J[b+72>>2]=0;d=P(J[b+132>>2],12)+286272|0;J[b+144>>2]=L[d+4>>1];J[b+140>>2]=L[d>>1];J[b+128>>2]=L[d+2>>1];J[b+124>>2]=L[d+6>>1]}}g:{h:{i:{j:{d=c;b=d+6|0;if(b>>>0<=8){if((b|0)!=6){break g}J[i+16392>>2]=e;J[i+16396>>2]=g;while(1){J[i+16408>>2]=16384;J[i+16404>>2]=i;g=0;c=-2;f=i+16392|0;k:{if(!f|!J[f+32>>2]|!J[f+36>>2]){break k}b=J[f+28>>2];if(!b|(f|0)!=J[b>>2]){break k}l:{m:{d=J[b+4>>2];switch(d-57|0){case 1:case 2:case 3:case 4:case 5:case 6:case 7:case 8:case 9:case 10:case 11:case 13:case 14:case 15:case 17:case 18:case 19:case 20:case 21:case 22:case 23:case 24:case 25:case 26:case 27:case 28:case 29:case 30:case 31:case 32:case 33:case 35:case 36:case 37:case 38:case 39:case 40:case 41:case 42:case 43:case 44:case 45:case 47:case 48:case 49:case 50:case 51:case 52:case 53:case 54:case 55:break k;case 0:case 12:case 16:case 34:case 46:case 56:break l;default:break m}}if((d|0)==666){break l}if((d|0)!=42){break k}}n:{o:{if(!J[f+12>>2]){break o}c=J[f+4>>2];if(J[f>>2]?0:c){break o}break n}J[f+24>>2]=J[71620];c=-2;break k}p:{q:{if(!J[f+16>>2]){break q}J[b+40>>2]=4;r:{if(J[b+20>>2]){zm(b);g=J[b+20>>2];d=J[f+16>>2];c=d>>>0>g>>>0?g:d;s:{if(!c){break s}hj(J[f+12>>2],J[b+16>>2],c);J[f+12>>2]=c+J[f+12>>2];J[b+16>>2]=c+J[b+16>>2];J[f+20>>2]=c+J[f+20>>2];d=J[f+16>>2]-c|0;J[f+16>>2]=d;e=J[b+20>>2];g=e-c|0;J[b+20>>2]=g;if((c|0)!=(e|0)){break s}J[b+16>>2]=J[b+8>>2]}if(d){d=J[b+4>>2];break r}break p}if(c){break r}}t:{u:{v:{w:{x:{if((d|0)!=42){if((d|0)!=666){break x}if(!J[f+4>>2]){break v}break q}if(!J[b+24>>2]){J[b+4>>2]=113;break w}e=(J[b+48>>2]<<12)-30720|0;c=0;y:{if(J[b+136>>2]>1){break y}d=J[b+132>>2];if((d|0)<2){break y}c=64;if(d>>>0<6){break y}c=(d|0)==6?128:192}J[b+20>>2]=g+1;c=c|e;c=J[b+108>>2]?c|32:c;H[J[b+8>>2]+g|0]=c>>>8;d=J[b+20>>2];J[b+20>>2]=d+1;H[d+J[b+8>>2]|0]=(c|(c>>>0)%31)^31;if(J[b+108>>2]){c=J[f+48>>2];d=J[b+20>>2];J[b+20>>2]=d+1;H[d+J[b+8>>2]|0]=c>>>24;d=J[b+20>>2];J[b+20>>2]=d+1;H[d+J[b+8>>2]|0]=c>>>16;c=J[f+48>>2];d=J[b+20>>2];J[b+20>>2]=d+1;H[d+J[b+8>>2]|0]=c>>>8;d=J[b+20>>2];J[b+20>>2]=d+1;H[d+J[b+8>>2]|0]=c}J[f+48>>2]=dq(0,0,0);J[b+4>>2]=113;ws(f);if(J[b+20>>2]){break p}d=J[b+4>>2]}z:{A:{B:{C:{if((d|0)==57){J[f+48>>2]=Gl(0,0,0);c=J[b+20>>2];J[b+20>>2]=c+1;H[c+J[b+8>>2]|0]=31;c=J[b+20>>2];J[b+20>>2]=c+1;H[c+J[b+8>>2]|0]=139;c=J[b+20>>2];J[b+20>>2]=c+1;H[c+J[b+8>>2]|0]=8;D:{c=J[b+28>>2];if(!c){c=J[b+20>>2];J[b+20>>2]=c+1;H[c+J[b+8>>2]|0]=0;c=J[b+20>>2];J[b+20>>2]=c+1;H[c+J[b+8>>2]|0]=0;c=J[b+20>>2];J[b+20>>2]=c+1;H[c+J[b+8>>2]|0]=0;c=J[b+20>>2];J[b+20>>2]=c+1;H[c+J[b+8>>2]|0]=0;c=J[b+20>>2];J[b+20>>2]=c+1;H[c+J[b+8>>2]|0]=0;c=2;d=J[b+132>>2];if((d|0)!=9){c=(d|0)<2?4:(J[b+136>>2]>1)<<2}d=J[b+20>>2];J[b+20>>2]=d+1;H[d+J[b+8>>2]|0]=c;c=J[b+20>>2];J[b+20>>2]=c+1;H[c+J[b+8>>2]|0]=3;J[b+4>>2]=113;ws(f);if(!J[b+20>>2]){break D}break p}d=J[c+36>>2];e=J[c+28>>2];g=J[c+16>>2];h=J[c+44>>2];k=J[c>>2];l=J[b+20>>2];J[b+20>>2]=l+1;c=2;H[l+J[b+8>>2]|0]=((h|0)!=0)<<1|(k|0)!=0|((g|0)!=0)<<2|((e|0)!=0)<<3|((d|0)!=0)<<4;d=J[J[b+28>>2]+4>>2];e=J[b+20>>2];J[b+20>>2]=e+1;H[e+J[b+8>>2]|0]=d;d=J[J[b+28>>2]+4>>2];e=J[b+20>>2];J[b+20>>2]=e+1;H[e+J[b+8>>2]|0]=d>>>8;d=L[J[b+28>>2]+6>>1];e=J[b+20>>2];J[b+20>>2]=e+1;H[e+J[b+8>>2]|0]=d;d=K[J[b+28>>2]+7|0];e=J[b+20>>2];J[b+20>>2]=e+1;H[e+J[b+8>>2]|0]=d;d=J[b+132>>2];if((d|0)!=9){c=(d|0)<2?4:(J[b+136>>2]>1)<<2}d=J[b+20>>2];J[b+20>>2]=d+1;H[d+J[b+8>>2]|0]=c;c=J[J[b+28>>2]+12>>2];d=J[b+20>>2];J[b+20>>2]=d+1;H[d+J[b+8>>2]|0]=c;c=J[b+28>>2];if(J[c+16>>2]){c=J[c+20>>2];d=J[b+20>>2];J[b+20>>2]=d+1;H[d+J[b+8>>2]|0]=c;c=J[J[b+28>>2]+20>>2];d=J[b+20>>2];J[b+20>>2]=d+1;H[d+J[b+8>>2]|0]=c>>>8;c=J[b+28>>2]}if(J[c+44>>2]){J[f+48>>2]=Gl(J[f+48>>2],J[b+8>>2],J[b+20>>2])}J[b+4>>2]=69;J[b+32>>2]=0;break C}d=J[b+4>>2]}switch(d-69|0){case 34:break z;case 22:break A;case 4:break B;case 0:break C;default:break w}}e=J[b+28>>2];d=J[e+16>>2];if(d){h=J[b+12>>2];c=J[b+20>>2];g=J[b+32>>2];e=L[e+20>>1]-g|0;if(h>>>0>>0){d=d+g|0;g=h-c|0;hj(J[b+8>>2]+c|0,d,g);d=J[b+12>>2];J[b+20>>2]=d;if(!(!J[J[b+28>>2]+44>>2]|c>>>0>=d>>>0)){J[f+48>>2]=Gl(J[f+48>>2],J[b+8>>2]+c|0,d-c|0)}J[b+32>>2]=g+J[b+32>>2];c=J[f+28>>2];zm(c);d=J[c+20>>2];h=J[f+16>>2];d=d>>>0>>0?d:h;E:{if(!d){break E}hj(J[f+12>>2],J[c+16>>2],d);J[f+12>>2]=d+J[f+12>>2];J[c+16>>2]=d+J[c+16>>2];J[f+20>>2]=d+J[f+20>>2];J[f+16>>2]=J[f+16>>2]-d;h=J[c+20>>2];J[c+20>>2]=h-d;if((d|0)!=(h|0)){break E}J[c+16>>2]=J[c+8>>2]}if(J[b+20>>2]){break p}e=e-g|0;g=J[b+12>>2];if(e>>>0>g>>>0){while(1){hj(J[b+8>>2],J[J[b+28>>2]+16>>2]+J[b+32>>2]|0,g);c=J[b+12>>2];J[b+20>>2]=c;if(!(!J[J[b+28>>2]+44>>2]|!c)){J[f+48>>2]=Gl(J[f+48>>2],J[b+8>>2],c)}J[b+32>>2]=J[b+32>>2]+g;c=J[f+28>>2];zm(c);d=J[c+20>>2];h=J[f+16>>2];d=d>>>0>>0?d:h;F:{if(!d){break F}hj(J[f+12>>2],J[c+16>>2],d);J[f+12>>2]=d+J[f+12>>2];J[c+16>>2]=d+J[c+16>>2];J[f+20>>2]=d+J[f+20>>2];J[f+16>>2]=J[f+16>>2]-d;h=J[c+20>>2];J[c+20>>2]=h-d;if((d|0)!=(h|0)){break F}J[c+16>>2]=J[c+8>>2]}if(J[b+20>>2]){break p}e=e-g|0;g=J[b+12>>2];if(e>>>0>g>>>0){continue}break}}g=J[b+32>>2];d=J[J[b+28>>2]+16>>2];c=0}hj(J[b+8>>2]+c|0,d+g|0,e);d=J[b+20>>2]+e|0;J[b+20>>2]=d;if(!(!J[J[b+28>>2]+44>>2]|c>>>0>=d>>>0)){J[f+48>>2]=Gl(J[f+48>>2],J[b+8>>2]+c|0,d-c|0)}J[b+32>>2]=0}J[b+4>>2]=73}if(J[J[b+28>>2]+28>>2]){e=J[b+20>>2];while(1){d=J[b+28>>2];c=J[b+20>>2];if((c|0)==J[b+12>>2]){if(!(!J[d+44>>2]|c>>>0<=e>>>0)){J[f+48>>2]=Gl(J[f+48>>2],J[b+8>>2]+e|0,c-e|0)}c=J[f+28>>2];zm(c);d=J[c+20>>2];e=J[f+16>>2];d=d>>>0>>0?d:e;G:{if(!d){break G}hj(J[f+12>>2],J[c+16>>2],d);J[f+12>>2]=d+J[f+12>>2];J[c+16>>2]=d+J[c+16>>2];J[f+20>>2]=d+J[f+20>>2];J[f+16>>2]=J[f+16>>2]-d;e=J[c+20>>2];J[c+20>>2]=e-d;if((d|0)!=(e|0)){break G}J[c+16>>2]=J[c+8>>2]}if(J[b+20>>2]){break p}d=J[b+28>>2];e=0;c=0}d=J[d+28>>2];g=J[b+32>>2];J[b+32>>2]=g+1;d=K[d+g|0];J[b+20>>2]=c+1;H[J[b+8>>2]+c|0]=d;if(d){continue}break}H:{if(!J[J[b+28>>2]+44>>2]){break H}c=J[b+20>>2];if(c>>>0<=e>>>0){break H}J[f+48>>2]=Gl(J[f+48>>2],J[b+8>>2]+e|0,c-e|0)}J[b+32>>2]=0}J[b+4>>2]=91}I:{if(!J[J[b+28>>2]+36>>2]){break I}e=J[b+20>>2];while(1){d=J[b+28>>2];c=J[b+20>>2];if((c|0)==J[b+12>>2]){if(!(!J[d+44>>2]|c>>>0<=e>>>0)){J[f+48>>2]=Gl(J[f+48>>2],J[b+8>>2]+e|0,c-e|0)}c=J[f+28>>2];zm(c);d=J[c+20>>2];e=J[f+16>>2];d=d>>>0>>0?d:e;J:{if(!d){break J}hj(J[f+12>>2],J[c+16>>2],d);J[f+12>>2]=d+J[f+12>>2];J[c+16>>2]=d+J[c+16>>2];J[f+20>>2]=d+J[f+20>>2];J[f+16>>2]=J[f+16>>2]-d;e=J[c+20>>2];J[c+20>>2]=e-d;if((d|0)!=(e|0)){break J}J[c+16>>2]=J[c+8>>2]}if(J[b+20>>2]){break p}d=J[b+28>>2];e=0;c=0}d=J[d+36>>2];g=J[b+32>>2];J[b+32>>2]=g+1;d=K[d+g|0];J[b+20>>2]=c+1;H[J[b+8>>2]+c|0]=d;if(d){continue}break}if(!J[J[b+28>>2]+44>>2]){break I}c=J[b+20>>2];if(c>>>0<=e>>>0){break I}J[f+48>>2]=Gl(J[f+48>>2],J[b+8>>2]+e|0,c-e|0)}J[b+4>>2]=103}if(J[J[b+28>>2]+44>>2]){c=J[b+20>>2];if(M[b+12>>2]>>0){ws(f);if(J[b+20>>2]){break p}c=0}d=J[f+48>>2];J[b+20>>2]=c+1;H[J[b+8>>2]+c|0]=d;c=J[f+48>>2];d=J[b+20>>2];J[b+20>>2]=d+1;H[d+J[b+8>>2]|0]=c>>>8;J[f+48>>2]=Gl(0,0,0)}J[b+4>>2]=113;ws(f);if(!J[b+20>>2]){break w}break p}if(J[f+4>>2]){break u}}if(J[b+116>>2]){break u}if(J[b+4>>2]==666){break t}}c=J[b+132>>2];K:{if(!c){c=DS(b,4);break K}L:{switch(J[b+136>>2]-2|0){case 0:g=b+148|0;M:{N:{while(1){O:{if(J[b+116>>2]){break O}$w(b);if(J[b+116>>2]){break O}break N}J[b+96>>2]=0;c=K[J[b+56>>2]+J[b+108>>2]|0];d=J[b+5792>>2];J[b+5792>>2]=d+1;H[d+J[b+5784>>2]|0]=0;d=J[b+5792>>2];J[b+5792>>2]=d+1;H[d+J[b+5784>>2]|0]=0;d=J[b+5792>>2];J[b+5792>>2]=d+1;H[d+J[b+5784>>2]|0]=c;c=g+(c<<2)|0;I[c>>1]=L[c>>1]+1;J[b+116>>2]=J[b+116>>2]-1;e=J[b+108>>2]+1|0;J[b+108>>2]=e;if(J[b+5792>>2]!=J[b+5796>>2]){continue}c=J[b+92>>2];if((c|0)>=0){d=c+J[b+56>>2]|0}else{d=0}Lo(b,d,e-c|0,0);J[b+92>>2]=J[b+108>>2];c=J[b>>2];d=J[c+28>>2];zm(d);e=J[d+20>>2];h=J[c+16>>2];e=e>>>0>>0?e:h;P:{if(!e){break P}hj(J[c+12>>2],J[d+16>>2],e);J[c+12>>2]=e+J[c+12>>2];J[d+16>>2]=e+J[d+16>>2];J[c+20>>2]=e+J[c+20>>2];J[c+16>>2]=J[c+16>>2]-e;c=J[d+20>>2];J[d+20>>2]=c-e;if((c|0)!=(e|0)){break P}J[d+16>>2]=J[d+8>>2]}if(J[J[b>>2]+16>>2]){continue}break}c=0;break M}J[b+5812>>2]=0;c=J[b+92>>2];if((c|0)>=0){d=c+J[b+56>>2]|0}else{d=0}Lo(b,d,J[b+108>>2]-c|0,1);J[b+92>>2]=J[b+108>>2];c=J[b>>2];d=J[c+28>>2];zm(d);e=J[d+20>>2];g=J[c+16>>2];e=e>>>0>>0?e:g;Q:{if(!e){break Q}hj(J[c+12>>2],J[d+16>>2],e);J[c+12>>2]=e+J[c+12>>2];J[d+16>>2]=e+J[d+16>>2];J[c+20>>2]=e+J[c+20>>2];J[c+16>>2]=J[c+16>>2]-e;c=J[d+20>>2];J[d+20>>2]=c-e;if((c|0)!=(e|0)){break Q}J[d+16>>2]=J[d+8>>2]}c=J[J[b>>2]+16>>2]?3:2}break K;case 1:o=b+2440|0;l=b+148|0;R:{S:{while(1){T:{U:{V:{h=J[b+116>>2];W:{if(h>>>0>=259){J[b+96>>2]=0;e=J[b+108>>2];break W}$w(b);h=J[b+116>>2];if(!h){break S}J[b+96>>2]=0;e=J[b+108>>2];if(h>>>0<3){break V}}if(!e){break V}g=J[b+56>>2]+e|0;d=K[g-1|0];if((d|0)!=K[g|0]|(d|0)!=K[g+1|0]|(d|0)!=K[g+2|0]){break V}p=g+258|0;k=2;X:{Y:{Z:{_:{$:{aa:{ba:{while(1){c=g+k|0;if((d|0)!=K[c+1|0]){break Y}if((d|0)!=K[c+2|0]){break Z}if((d|0)!=K[c+3|0]){break _}if((d|0)!=K[c+4|0]){break $}if((d|0)!=K[c+5|0]){break aa}if((d|0)!=K[c+6|0]){break ba}if((d|0)==K[c+7|0]){q=k>>>0>249;k=k+8|0;c=g+k|0;if(q){break X}if((d|0)==K[c|0]){continue}break X}break}c=c+7|0;break X}c=c+6|0;break X}c=c+5|0;break X}c=c+4|0;break X}c=c+3|0;break X}c=c+2|0;break X}c=c+1|0}c=(c-p|0)+258|0;d=c>>>0>>0?c:h;J[b+96>>2]=d;c=J[b+5792>>2];if(d>>>0<3){break U}J[b+5792>>2]=c+1;H[c+J[b+5784>>2]|0]=1;c=J[b+5792>>2];J[b+5792>>2]=c+1;H[c+J[b+5784>>2]|0]=0;c=J[b+5792>>2];J[b+5792>>2]=c+1;e=c+J[b+5784>>2]|0;c=d-3|0;H[e|0]=c;c=(l+(K[(c&255)+194128|0]<<2)|0)+1028|0;I[c>>1]=L[c>>1]+1;c=(K[193616]<<2)+o|0;I[c>>1]=L[c>>1]+1;c=J[b+96>>2];J[b+96>>2]=0;J[b+116>>2]=J[b+116>>2]-c;e=c+J[b+108>>2]|0;J[b+108>>2]=e;break T}c=J[b+5792>>2]}d=K[J[b+56>>2]+e|0];J[b+5792>>2]=c+1;H[c+J[b+5784>>2]|0]=0;c=J[b+5792>>2];J[b+5792>>2]=c+1;H[c+J[b+5784>>2]|0]=0;c=J[b+5792>>2];J[b+5792>>2]=c+1;H[c+J[b+5784>>2]|0]=d;c=l+(d<<2)|0;I[c>>1]=L[c>>1]+1;J[b+116>>2]=J[b+116>>2]-1;e=J[b+108>>2]+1|0;J[b+108>>2]=e}if(J[b+5792>>2]!=J[b+5796>>2]){continue}c=J[b+92>>2];if((c|0)>=0){d=c+J[b+56>>2]|0}else{d=0}Lo(b,d,e-c|0,0);J[b+92>>2]=J[b+108>>2];c=J[b>>2];d=J[c+28>>2];zm(d);e=J[d+20>>2];g=J[c+16>>2];e=e>>>0>>0?e:g;ca:{if(!e){break ca}hj(J[c+12>>2],J[d+16>>2],e);J[c+12>>2]=e+J[c+12>>2];J[d+16>>2]=e+J[d+16>>2];J[c+20>>2]=e+J[c+20>>2];J[c+16>>2]=J[c+16>>2]-e;c=J[d+20>>2];J[d+20>>2]=c-e;if((c|0)!=(e|0)){break ca}J[d+16>>2]=J[d+8>>2]}if(J[J[b>>2]+16>>2]){continue}break}c=0;break R}J[b+5812>>2]=0;c=J[b+92>>2];if((c|0)>=0){d=c+J[b+56>>2]|0}else{d=0}Lo(b,d,J[b+108>>2]-c|0,1);J[b+92>>2]=J[b+108>>2];c=J[b>>2];d=J[c+28>>2];zm(d);e=J[d+20>>2];g=J[c+16>>2];e=e>>>0>>0?e:g;da:{if(!e){break da}hj(J[c+12>>2],J[d+16>>2],e);J[c+12>>2]=e+J[c+12>>2];J[d+16>>2]=e+J[d+16>>2];J[c+20>>2]=e+J[c+20>>2];J[c+16>>2]=J[c+16>>2]-e;c=J[d+20>>2];J[d+20>>2]=c-e;if((c|0)!=(e|0)){break da}J[d+16>>2]=J[d+8>>2]}c=J[J[b>>2]+16>>2]?3:2}break K;default:break L}}c=Zi[J[(P(c,12)+286272|0)+8>>2]](b,4)|0}if((c&-2)==2){J[b+4>>2]=666}if(!(c&-3)){c=0;if(J[f+16>>2]){break k}break p}if((c|0)!=1){break t}xz(b,0,0,0);ws(f);if(J[f+16>>2]){break t}break p}c=1;d=J[b+24>>2];if((d|0)<=0){break k}c=J[f+48>>2];ea:{if((d|0)==2){d=J[b+20>>2];J[b+20>>2]=d+1;H[d+J[b+8>>2]|0]=c;c=J[f+48>>2];d=J[b+20>>2];J[b+20>>2]=d+1;H[d+J[b+8>>2]|0]=c>>>8;c=L[f+50>>1];d=J[b+20>>2];J[b+20>>2]=d+1;H[d+J[b+8>>2]|0]=c;c=K[f+51|0];d=J[b+20>>2];J[b+20>>2]=d+1;H[d+J[b+8>>2]|0]=c;c=J[f+8>>2];d=J[b+20>>2];J[b+20>>2]=d+1;H[d+J[b+8>>2]|0]=c;c=J[f+8>>2];d=J[b+20>>2];J[b+20>>2]=d+1;H[d+J[b+8>>2]|0]=c>>>8;c=L[f+10>>1];d=J[b+20>>2];J[b+20>>2]=d+1;H[d+J[b+8>>2]|0]=c;c=K[f+11|0];break ea}d=J[b+20>>2];J[b+20>>2]=d+1;H[d+J[b+8>>2]|0]=c>>>24;d=J[b+20>>2];J[b+20>>2]=d+1;H[d+J[b+8>>2]|0]=c>>>16;c=J[f+48>>2];d=J[b+20>>2];J[b+20>>2]=d+1;H[d+J[b+8>>2]|0]=c>>>8}d=J[b+20>>2];J[b+20>>2]=d+1;H[d+J[b+8>>2]|0]=c;ws(f);c=J[b+24>>2];if((c|0)>0){J[b+24>>2]=0-c}c=!J[b+20>>2];break k}J[f+24>>2]=J[71623];c=-5;break k}J[b+40>>2]=-1;c=0}if((c|0)==-2){break j}if(!PJ(m,i,16384-J[i+16408>>2]|0)){xE(f);d=-1;break g}if(!J[i+16408>>2]){continue}break}if(J[i+16396>>2]){break i}if((c|0)!=1){break h}xE(i+16392|0);d=0;break g}d=-1e3;break g}Z(89655,42682,106,35192);B()}Z(112995,42682,115,35192);B()}Z(96919,42682,116,35192);B()}Ui=i+16448|0;fa:{if(!d){b=a;a=J[j+16>>2];mj(b,a,J[j+20>>2]-a|0);break fa}J[j>>2]=d;fj(a,140724,j);n=0}ga:{if(H[j+28|0]&1){break ga}a=J[j+16>>2];if(!a){break ga}cj(a)}Ui=j+32|0;return n|0}function qla(a){a=a|0;var b=0,c=0,d=0,e=0,f=0,g=0,h=0,i=0,j=0,k=0,l=Q(0),m=0,n=0,o=0,p=0,q=0,r=Q(0),s=0,t=0,u=Q(0),v=0,w=Q(0),x=0,y=0,z=Q(0),A=Q(0),C=0,D=Q(0),E=Q(0),F=0,G=Q(0),O=Q(0),R=0,S=0,T=Q(0),U=Q(0),V=Q(0),W=Q(0),X=Q(0),Y=Q(0),_=0,$=0,aa=0,ba=Q(0),ca=Q(0),da=Q(0),ea=Q(0),fa=0,ga=0,ha=0,ia=Q(0),ja=Q(0),ka=Q(0),la=Q(0),ma=0,na=0,oa=Q(0),pa=Q(0),qa=Q(0),ra=0,sa=0,ta=0,ua=0,va=0;d=Ui-128|0;Ui=d;S=J[a+8>>2]-J[a+12>>2]>>4;j=pk(a);h=J[J[j+80>>2]+8>>2];Mn(a,80464,d+124|0,d+120|0,0);a:{b:{if((S|0)<2){break b}if(!kj(a,2)){break b}g=Pl(a,2);c=J[g>>2];b=J[g+4>>2];N[d+104>>2]=N[g+8>>2];J[d+96>>2]=c;J[d+100>>2]=b;break a}yn(d+48|0,j);N[d+96>>2]=N[d+48>>2];b=J[d+56>>2];J[d+100>>2]=J[d+52>>2];J[d+104>>2]=b}c:{d:{if((S|0)<3){break d}if(!kj(a,3)){break d}b=Is(a,3);N[d+80>>2]=N[b>>2];N[d+84>>2]=N[b+4>>2];N[d+88>>2]=N[b+8>>2];N[d+92>>2]=N[b+12>>2];break c}jt(d+48|0,j);b=J[d+52>>2];J[d+80>>2]=J[d+48>>2];J[d+84>>2]=b;b=J[d+60>>2];J[d+88>>2]=J[d+56>>2];J[d+92>>2]=b}b=d- -64|0;J[b>>2]=0;J[b+4>>2]=0;J[d+72>>2]=0;J[d+76>>2]=0;J[d+56>>2]=0;J[d+60>>2]=0;J[d+48>>2]=0;J[d+52>>2]=0;J[d+68>>2]=-1;wN(d+48|0,8,32);e:{f:{g:{h:{if((S|0)<=3){break h}if(kj(a,4)){if((kj(a,4)|0)!=5){break f}uj(a,4);b=J[a+8>>2];J[b+8>>2]=0;J[a+8>>2]=b+16;if($j(a,-2)){while(1){c=Tl(a,-2);b=Yi;J[d>>2]=tR(a,-1);pl(d+48|0,c,b,d);gj(a,-2);if($j(a,-2)){continue}break}}gj(a,-2)}if((S|0)==4){break h}if(!kj(a,5)){break h}b=Gm(a,5);if(b){N[d+32>>2]=N[b>>2];N[d+36>>2]=N[b+4>>2];N[d+40>>2]=N[b+8>>2];break g}l=Q(wj(a,5));N[d+40>>2]=l;N[d+36>>2]=l;N[d+32>>2]=l;break g}$D(d,j);N[d+32>>2]=N[d>>2];b=J[d+8>>2];J[d+36>>2]=J[d+4>>2];J[d+40>>2]=b}Bj(a);ha=Lk(a,-1e4);J[d+16>>2]=0;J[d+20>>2]=0;J[d+24>>2]=0;J[d+28>>2]=0;J[d+8>>2]=0;J[d+12>>2]=0;J[d>>2]=0;J[d+4>>2]=0;J[d+20>>2]=-1;c=J[d+120>>2];b=J[c+4>>2];if(!b){b=J[c>>2]}t=J[b+8>>2];e=Ui-544|0;Ui=e;ia=N[d+40>>2];ja=N[d+36>>2];ka=N[d+32>>2];z=N[d+92>>2];D=N[d+88>>2];E=N[d+84>>2];A=N[d+80>>2];oa=N[d+104>>2];pa=N[d+100>>2];qa=N[d+96>>2];m=J[h>>2];c=e+480|0;go(c,1);Tj(J[m+3232>>2]);b=J[m+3240>>2];J[m+3240>>2]=b+1;Lj(J[m+3232>>2]);J[e+132>>2]=b;J[e+128>>2]=J[54660];b=e+512|0;Gj(b,32,76612,e+128|0);em(c,b,yj(b));Us(d,32,J[t+8>>2]);c=e+472|0;J[c>>2]=0;J[c+4>>2]=0;J[e+464>>2]=0;J[e+468>>2]=0;b=e+464|0;lj(J[t+8>>2],4,b,c,b|4);i:{j:{k:{l:{m:{n:{o:{p:{q:{k=J[t+8>>2];r:{if(k){s=m+3144|0;F=1;while(1){if(f>>>0>=k>>>0){break k}b=J[t+4>>2];J[e+448>>2]=0;i=b+P(f,80)|0;c=J[i+4>>2];s:{if(!c){break s}b=J[m>>2];if(wk(b,c,e+448|0)){break s}n=Gy(m,J[e+448>>2],J[i+4>>2]);if(!n){break q}J[n+136>>2]=J[n+136>>2]&-2561|J[t+20>>2]<<9&512|2048;r=N[i+72>>2];l=N[i+64>>2];u=N[i+68>>2];if(!(l!=Q(0)|u!=Q(0)|r!=Q(0))){l=N[i+56>>2];u=l;r=l}q=J[i+32>>2];j=J[i+36>>2];g=J[i+40>>2];h=J[i+44>>2];c=J[i+20>>2];b=J[i+16>>2];w=N[i+24>>2];N[n+40>>2]=r;N[n+36>>2]=u;N[n+32>>2]=l;N[n+24>>2]=w;J[n+16>>2]=b;J[n+20>>2]=c;J[n+8>>2]=g;J[n+12>>2]=h;J[n>>2]=q;J[n+4>>2]=j;c=n+104|0;cv(c,e+480|0,1);h=J[i>>2];b=ul(h,H[J[54660]]);t:{if(!b){J[e+112>>2]=h;dj(4,88293,119239,e+112|0);F=0;break t}em(c,h,(b-h|0)+1|0)}c=e+192|0;cv(c,e+480|0,1);b=J[i>>2];em(c,b,yj(b));J[e+168>>2]=jp(c);J[e+172>>2]=Yi;b=J[i>>2];_u(d,Ul(b,yj(b)),Yi,e+168|0);b=J[e+468>>2];if((b|0)==J[e+472>>2]){break l}J[e+468>>2]=b+4;J[b>>2]=n;b=J[e+168>>2];j=J[e+172>>2];J[e+148>>2]=n;u:{c=J[m+3148>>2];v:{if(!c){break v}o=J[J[s>>2]+(mxa(b,j,c)<<2)>>2];if((o|0)==-1){break v}g=J[m+3152>>2];while(1){h=g+(o<<4)|0;if((b|0)==J[h>>2]&(j|0)==J[h+4>>2]){break u}o=J[h+12>>2];if((o|0)!=-1){continue}break}}if(J[n+96>>2]!=J[74028]|J[n+100>>2]!=J[74029]){break u}J[n+96>>2]=b;J[n+100>>2]=j;pl(s,b,j,e+148|0);if(M[m+3168>>2]<=L[m+1058>>1]){break s}Z(145129,38296,1032,34215);B()}J[e+100>>2]=J[i>>2];J[e+96>>2]=e+512;dj(4,88293,101658,e+96|0);F=0}f=f+1|0;k=J[t+8>>2];if(f>>>0>>0){continue}break}Vs(e+480|0);if(F&1){break r}break p}Vs(e+480|0)}f=J[t+8>>2];w:{if(!f){f=0;break w}k=1;o=0;while(1){if(f>>>0<=o>>>0){break k}n=J[t+4>>2]+P(o,80)|0;b=bj(J[n>>2]);g=Yi;x:{c=J[d+4>>2];y:{if(!c){break y}f=J[J[d>>2]+(mxa(b,g,c)<<2)>>2];if((f|0)==-1){break y}h=J[d+8>>2];while(1){j=h+P(f,24)|0;if((b|0)==J[j>>2]&(g|0)==J[j+4>>2]){break x}f=J[j+16>>2];if((f|0)!=-1){continue}break}}Z(72430,38296,1415,50236);B()}c=J[m+3148>>2];if(!c){break n}b=J[j+8>>2];h=J[j+12>>2];f=J[J[m+3144>>2]+(mxa(b,h,c)<<2)>>2];if((f|0)==-1){break n}c=J[m+3152>>2];while(1){g=c+(f<<4)|0;if(J[g>>2]!=(b|0)|J[g+4>>2]!=(h|0)){f=J[g+12>>2];if((f|0)!=-1){continue}break n}break}i=J[g+8>>2];if(!i){break n}f=J[n+12>>2];if(f){q=i+104|0;b=0;while(1){z:{A:{B:{if(b>>>0>>0){s=b<<2;g=J[s+J[n+8>>2]>>2];h=yj(g);C:{if(K[g|0]==K[J[54660]]){c=Ul(g,h);h=Yi;break C}c=e+192|0;cv(c,q,0);em(c,g,h);c=jp(c);h=Yi}g=J[d+4>>2];D:{if(!g){break D}f=J[J[d>>2]+(mxa(c,h,g)<<2)>>2];if((f|0)==-1){break D}g=J[d+8>>2];while(1){j=g+P(f,24)|0;if(J[j>>2]!=(c|0)|J[j+4>>2]!=(h|0)){f=J[j+16>>2];if((f|0)!=-1){continue}break D}break}c=J[j+8>>2];h=J[j+12>>2]}g=J[m+3148>>2];if(!g){break B}f=J[J[m+3144>>2]+(mxa(c,h,g)<<2)>>2];if((f|0)==-1){break B}g=J[m+3152>>2];while(1){j=g+(f<<4)|0;if(J[j>>2]!=(c|0)|J[j+4>>2]!=(h|0)){f=J[j+12>>2];if((f|0)!=-1){continue}break B}break}c=J[j+8>>2];if(!c){break B}g=Ay(c,i);if(!g){break z}if(M[n+12>>2]<=b>>>0){break m}h=J[s+J[n+8>>2]>>2];c=J[n>>2];J[e+88>>2]=g;J[e+84>>2]=h;J[e+80>>2]=c;dj(4,88293,140075,e+80|0);break A}break m}if(M[n+12>>2]<=b>>>0){break m}J[e+64>>2]=J[s+J[n+8>>2]>>2];dj(4,88293,30277,e- -64|0)}k=0}b=b+1|0;f=J[n+12>>2];if(b>>>0>>0){continue}break}}f=J[t+8>>2];o=o+1|0;if(f>>>0>o>>>0){continue}break}if(!(k&1)){break p}}b=J[e+468>>2];s=J[e+464>>2];if((b|0)!=(s|0)){q=b-s>>2;ba=Q(-E);la=Q(-A);ca=Q(-D);b=0;while(1){if((b|0)==(q|0)){break j}i=J[s+(b<<2)>>2];g=J[i+136>>2]>>>16|0;E:{if((g|0)!=32767){c=J[i+80>>2];h=J[c+1036>>2];if(g>>>0>=J[c+1040>>2]-h>>2>>>0){break j}if(J[h+(g<<2)>>2]){break E}}N[i+40>>2]=ia*N[i+40>>2];N[i+36>>2]=ja*N[i+36>>2];N[i+32>>2]=ka*N[i+32>>2];u=N[i+8>>2];w=N[i+4>>2];r=N[i+12>>2];l=N[i>>2];N[i+12>>2]=Q(ca*u)+Q(Q(ba*w)+Q(Q(z*r)-Q(A*l)));N[i+8>>2]=Q(ba*l)+Q(Q(A*w)+Q(Q(z*u)+Q(D*r)));N[i+4>>2]=Q(la*u)+Q(Q(D*l)+Q(Q(z*w)+Q(E*r)));N[i>>2]=Q(ca*w)+Q(Q(E*u)+Q(Q(z*l)+Q(A*r)));G=Q(ia*N[i+24>>2]);O=Q(ja*N[i+20>>2]);l=Q(ka*N[i+16>>2]);u=Q(Q(la*G)+Q(Q(z*O)+Q(D*l)));w=Q(Q(D*G)+Q(Q(A*l)+Q(E*O)));r=Q(Q(ba*l)+Q(Q(z*G)+Q(A*O)));l=Q(Q(ca*O)+Q(Q(z*l)+Q(E*G)));N[i+24>>2]=oa+Q(Q(u*A)+Q(Q(Q(w*D)+Q(z*r))-Q(l*E)));N[i+20>>2]=pa+Q(Q(l*D)+Q(Q(Q(w*E)+Q(z*u))-Q(r*A)));N[i+16>>2]=qa+Q(Q(r*E)+Q(Q(Q(w*A)+Q(z*l))-Q(u*D)))}g=J[i+140>>2]&32767;j=J[m+3128>>2];if(g>>>0>=J[m+3132>>2]-j>>6>>>0){break j}T=N[i>>2];U=N[i+4>>2];da=N[i+12>>2];ea=N[i+8>>2];h=J[i+16>>2];c=J[i+20>>2];l=N[i+24>>2];V=N[i+40>>2];W=N[i+36>>2];g=j+(g<<6)|0;X=N[i+32>>2];N[g+12>>2]=X*Q(0);N[g+28>>2]=W*Q(0);N[g+44>>2]=V*Q(0);J[g+60>>2]=1065353216;N[g+56>>2]=l;J[g+48>>2]=h;J[g+52>>2]=c;G=Q(U+U);r=Q(T*G);Y=Q(ea+ea);l=Q(da*Y);N[g+4>>2]=X*Q(r+l);O=Q(T*Y);u=Q(G*da);N[g+8>>2]=X*Q(O-u);N[g+16>>2]=W*Q(r-l);w=Q(U*Y);r=Q(T+T);l=Q(da*r);N[g+24>>2]=W*Q(w+l);N[g+32>>2]=V*Q(O+u);N[g+36>>2]=V*Q(w-l);l=Q(Q(1)-Q(T*r));r=Q(ea*Y);N[g+20>>2]=W*Q(l-r);u=l;l=Q(U*G);N[g+40>>2]=V*Q(u-l);N[g>>2]=X*Q(Q(Q(1)-l)-r);b=b+1|0;if((q|0)!=(b|0)){continue}break}f=J[t+8>>2]}c=e+456|0;J[c>>2]=0;J[c+4>>2]=0;J[e+448>>2]=0;J[e+452>>2]=0;b=e+448|0;lj(f,4,b,c,b|4);F:{G:{H:{I:{f=J[t+8>>2];if(f){q=1;while(1){J:{K:{L:{if(f>>>0>_>>>0){C=J[t+4>>2]+P(_,80)|0;b=bj(J[C>>2]);g=Yi;M:{c=J[d+4>>2];N:{if(!c){break N}f=J[J[d>>2]+(mxa(b,g,c)<<2)>>2];if((f|0)==-1){break N}h=J[d+8>>2];while(1){j=h+P(f,24)|0;if((b|0)==J[j>>2]&(g|0)==J[j+4>>2]){break M}f=J[j+16>>2];if((f|0)!=-1){continue}break}}Z(72507,38296,1490,50236);B()}o=0;c=J[m+3148>>2];O:{if(!c){break O}b=J[j+8>>2];h=J[j+12>>2];f=J[J[m+3144>>2]+(mxa(b,h,c)<<2)>>2];if((f|0)==-1){break O}c=J[m+3152>>2];while(1){g=c+(f<<4)|0;if(J[g>>2]!=(b|0)|J[g+4>>2]!=(h|0)){f=J[g+12>>2];if((f|0)!=-1){continue}break O}break}o=J[g+8>>2]}if(!vv(m,o)){break L}b=J[e+452>>2];if((b|0)!=J[e+456>>2]){J[e+452>>2]=b+4;J[b>>2]=o;b=J[o+84>>2];ma=J[b+4>>2];if(!ma){break J}ra=J[b>>2];sa=o+156|0;fa=0;F=0;while(1){P:{x=P(F,96)+ra|0;R=J[x+16>>2];if(J[R+80>>2]){if(!(H[R+102|0]&1)){c=e+168|0;J[c+20>>2]=256;J[c+12>>2]=e+192;J[c+16>>2]=0;J[c+4>>2]=2270;J[c>>2]=2271;J[c+8>>2]=c;c=nk(c,J[x>>2],J[x+4>>2]);b=J[C>>2];J[e+8>>2]=J[t>>2];J[e+4>>2]=b;J[e>>2]=c;dj(4,88293,121524,e);break K}f=0;Q:{R:{S:{c=J[C+52>>2];T:{if(!c){break T}U:{while(1){if(M[C+52>>2]<=f>>>0){break S}b=J[C+48>>2]+P(f,92)|0;if((bj(J[b>>2])|0)==J[x>>2]&(Yi|0)==J[x+4>>2]){break U}f=f+1|0;if((c|0)!=(f|0)){continue}break}f=0;break T}f=VD(b+12|0);if(f){break T}c=e+168|0;J[c+20>>2]=256;J[c+12>>2]=e+192;J[c+16>>2]=0;J[c+4>>2]=2270;J[c>>2]=2271;J[c+8>>2]=c;c=nk(c,J[x>>2],J[x+4>>2]);b=J[C>>2];J[e+56>>2]=J[t>>2];J[e+52>>2]=b;J[e+48>>2]=c;dj(4,88293,134244,e+48|0);f=0;q=0}c=bj(J[C>>2]);g=Yi;k=0;b=J[d+52>>2];V:{if(!b){break V}b=J[J[d+48>>2]+(mxa(c,g,b)<<2)>>2];if((b|0)==-1){break V}h=J[d+56>>2];while(1){b=h+(b<<4)|0;if(J[b>>2]!=(c|0)|J[b+4>>2]!=(g|0)){b=J[b+12>>2];if((b|0)!=-1){continue}break V}break}if(jj(J[R+4>>2],80659)){break V}k=uR(J[b+8>>2])}if(!q){cj(k);cj(f);break K}if(!(!f|!k)){v=0;p=Ui-48|0;Ui=p;J[p+12>>2]=0;J[p+16>>2]=0;J[p+44>>2]=0;J[p+36>>2]=0;J[p+40>>2]=0;J[p+28>>2]=0;J[p+32>>2]=0;J[p+20>>2]=0;J[p+24>>2]=0;W:{X:{$=J[k+4>>2];if($){i=p+16|0;s=p+28|0;q=p+32|0;j=p+36|0;g=p+40|0;h=p+44|0;c=p+20|0;aa=J[k+16>>2];y=J[p+24>>2];while(1){b=p+12|0;Y:{Z:{_:{$:{aa:{ba:{ca:{da:{n=v<<2;switch(J[n+aa>>2]){case 4:break ba;case 3:break ca;case 2:break da;case 0:break Y;case 1:break Z;case 7:break _;case 6:break $;case 5:break aa;default:break X}}b=s;break Y}b=q;break Y}b=j;break Y}b=g;break Y}b=h;break Y}y=(yj(J[k+32>>2]+J[n+J[k+12>>2]>>2]|0)+y|0)+1|0;J[p+24>>2]=y;b=c;break Y}b=i}J[b>>2]=J[b>>2]+1;v=v+1|0;if(($|0)!=(v|0)){continue}break}}na=J[f+4>>2];if(na){n=p+16|0;i=p+28|0;s=p+32|0;q=p+36|0;j=p+40|0;g=p+44|0;h=p+20|0;ta=J[f+8>>2];v=0;y=J[p+24>>2];while(1){ea:{fa:{if(!$){break fa}b=ta+(v<<3)|0;c=J[b>>2];ua=J[b+4>>2];va=J[k+8>>2];b=0;while(1){aa=va+(b<<3)|0;if(J[aa>>2]!=(c|0)|J[aa+4>>2]!=(ua|0)){b=b+1|0;if(($|0)!=(b|0)){continue}break fa}break}if((b|0)!=-1){break ea}}b=p+12|0;ga:{ha:{ia:{ja:{ka:{la:{ma:{na:{c=v<<2;switch(J[c+J[f+16>>2]>>2]){case 0:break ga;case 1:break ha;case 7:break ia;case 6:break ja;case 5:break ka;case 4:break la;case 3:break ma;case 2:break na;default:break X}}b=i;break ga}b=s;break ga}b=q;break ga}b=j;break ga}b=g;break ga}y=(yj(J[f+32>>2]+J[c+J[f+12>>2]>>2]|0)+y|0)+1|0;J[p+24>>2]=y;b=h;break ga}b=n}J[b>>2]=J[b>>2]+1}v=v+1|0;if((na|0)!=(v|0)){continue}break}}s=WD(p+12|0);if(J[k+4>>2]){b=0;while(1){qR(s,k,b);b=b+1|0;if(b>>>0>2]){continue}break}}y=J[f+4>>2];if(y){v=0;while(1){q=J[k+4>>2];oa:{pa:{if(!q){break pa}b=J[f+8>>2]+(v<<3)|0;c=J[b>>2];j=J[b+4>>2];g=J[k+8>>2];b=0;while(1){h=g+(b<<3)|0;if(J[h>>2]!=(c|0)|J[h+4>>2]!=(j|0)){b=b+1|0;if((q|0)!=(b|0)){continue}break pa}break}if((b|0)!=-1){break oa}}qR(s,f,v);y=J[f+4>>2]}v=v+1|0;if(y>>>0>v>>>0){continue}break}}b=J[s>>2];cj(s);Ui=p+48|0;break W}Z(62644,39139,569,2800);B()}cj(k);cj(f);if(b){J[e+152>>2]=0;J[e+156>>2]=0;J[e+160>>2]=0;J[e+148>>2]=o;break R}c=e+168|0;J[c+20>>2]=256;J[c+12>>2]=e+192;J[c+16>>2]=0;J[c+4>>2]=2270;J[c>>2]=2271;J[c+8>>2]=c;c=nk(c,J[x>>2],J[x+4>>2]);b=J[C>>2];J[e+24>>2]=J[t>>2];J[e+20>>2]=b;J[e+16>>2]=c;dj(4,88293,147327,e+16|0);break K}J[e+152>>2]=0;J[e+156>>2]=0;J[e+160>>2]=0;J[e+148>>2]=o;b=f?f:k;if(b){break R}b=0;break Q}Z(12664,54836,160,84789);B()}J[e+160>>2]=b;J[e+156>>2]=82;J[e+152>>2]=83}J[e+164>>2]=(fa<<2)+sa;if(Zi[J[R+80>>2]](e+148|0)|0){break P}q=1;R=J[x+16>>2]}fa=(I[R+102>>1]&1)+fa|0;F=F+1|0;if((ma|0)!=(F|0)){continue}break J}break}h=e+168|0;J[h+20>>2]=256;J[h+12>>2]=e+192;J[h+16>>2]=0;J[h+4>>2]=2270;J[h>>2]=2271;J[h+8>>2]=h;h=nk(h,J[x>>2],J[x+4>>2]);c=J[C>>2];J[e+40>>2]=J[t>>2];J[e+36>>2]=c;J[e+32>>2]=h;dj(4,88293,134344,e+32|0);cj(b);break K}break l}break k}iR(m,o);zy(m,o);Hy(m,J[o+148>>2]);gt(m,o);ft(m,o)}q=0}f=J[t+8>>2];_=_+1|0;if(f>>>0>_>>>0){continue}break}if(!q){break I}}o=J[e+452>>2];b=J[e+448>>2];k=o-b>>2;if((b|0)==(o|0)){break H}f=0;while(1){if(f>>>0>=k>>>0){break j}if(!ZD(m,J[(f<<2)+b>>2])){break I}f=f+1|0;o=J[e+452>>2];b=J[e+448>>2];k=o-b>>2;if((f|0)!=(k|0)){continue}break}break H}k=J[e+448>>2];b=J[e+452>>2];if((k|0)!=(b|0)){b=b-k>>2;f=0;while(1){if(b>>>0<=f>>>0){break j}uv(m,J[(f<<2)+k>>2],0);k=J[e+448>>2];b=J[e+452>>2]-k>>2;f=f+1|0;if((b|0)!=(f|0)){continue}break}}ij(J[d>>2],255,J[d+4>>2]<<2);J[d+20>>2]=-1;J[d+24>>2]=0;J[d+12>>2]=J[d+8>>2];o=0;break G}if((b|0)==(o|0)){o=1;break G}f=0;while(1){if((f|0)==(k|0)){break j}h=J[(f<<2)+b>>2];c=J[h+148>>2];if(c&32768){break F}g=J[h+140>>2];if(!(g&32768)){J[h+148>>2]=c|32768;h=L[m+3266>>1];qa:{if((h|0)!=32767){c=J[m+1036>>2];if(h>>>0>=J[m+1040>>2]-c>>2>>>0){break j}I[J[c+(h<<2)>>2]+146>>1]=g;break qa}I[m+3264>>1]=g}I[m+3266>>1]=g}o=1;f=f+1|0;if((k|0)!=(f|0)){continue}break}}if(H[e+460|0]&1){break o}b=J[e+448>>2];if(!b){break o}cj(b);break o}Z(113139,38296,1053,62174);B()}vj(b,J[e+448>>2]);Vs(e+480|0)}k=J[e+464>>2];b=J[e+468>>2];if((k|0)!=(b|0)){b=b-k>>2;f=0;while(1){if(b>>>0<=f>>>0){break j}c=f<<2;gt(m,J[c+k>>2]);b=J[e+464>>2];if(J[e+468>>2]-b>>2>>>0<=f>>>0){break j}ft(m,J[b+c>>2]);k=J[e+464>>2];b=J[e+468>>2]-k>>2;f=f+1|0;if((b|0)!=(f|0)){continue}break}}ij(J[d>>2],255,J[d+4>>2]<<2);J[d+20>>2]=-1;J[d+24>>2]=0;J[d+12>>2]=J[d+8>>2];o=0}ra:{if(H[e+476|0]&1){break ra}b=J[e+464>>2];if(!b){break ra}cj(b)}Ui=e+544|0;b=o;break i}Z(13563,38296,1418,50236);B()}Z(12664,54836,151,84789);B()}Z(112520,53895,557,53220);B()}Z(12664,54836,244,84789);B()}Z(145396,53895,487,84789);B()}Nj(a,-1e4,ha);Ok(a);hk(a,-1e4,ha);q=0;Fj(a,0,0);sa:{if(!b){break sa}Fj(a,0,1);Nk(a,640,0);ej(a,-2,5326);Mj(a,-2);j=J[d+4>>2];if(!j){break sa}while(1){b=J[J[d>>2]+(ga<<2)>>2];if((b|0)!=-1){while(1){c=J[d+8>>2]+P(b,24)|0;Bk(a,J[c>>2],J[c+4>>2]);Bk(a,J[c+8>>2],J[c+12>>2]);Xj(a,-3);b=J[c+16>>2];if((b|0)!=-1){continue}break}j=J[d+4>>2]}ga=ga+1|0;if(ga>>>0>>0){continue}break}}j=-1;b=0;while(1){ta:{ua:{j=q?J[q+12>>2]:j;if((j|0)!=-1){break ua}g=J[d+52>>2];if(g>>>0<=b>>>0){break ta}h=J[d+48>>2];while(1){c=b+1|0;j=J[h+(b<<2)>>2];if((j|0)!=-1){b=c;break ua}b=c;if((g|0)!=(b|0)){continue}break}break ta}c=J[d+56>>2];if(!c){break ta}q=c+(j<<4)|0;cj(J[q+8>>2]);continue}break}if((S+1|0)==J[a+8>>2]-J[a+12>>2]>>4){va:{if(H[d+28|0]&1){break va}a=J[d+8>>2];if(a){cj(a)}a=J[d>>2];if(!a){break va}cj(a)}a=1;break e}Z(143334,36705,398,62003);B()}a=fj(a,61914,0)}wa:{if(H[d+76|0]&1){break wa}b=J[d+56>>2];if(b){cj(b)}b=J[d+48>>2];if(!b){break wa}cj(b)}Ui=d+128|0;return a|0}function QF(a,b,c,d,e){var f=0,g=0,h=0,i=0,j=0,k=0,l=0,m=0,n=0,o=0,p=0,q=0,r=0,s=0,t=0;o=Ui-32|0;Ui=o;while(1){r=b-72|0;s=b-48|0;p=b-24|0;a:{while(1){b:{c:{d:{e:{f:{h=b-a|0;l=(h|0)/24|0;switch(l|0){case 0:case 1:break a;case 5:break c;case 4:break d;case 3:break e;case 2:break f;default:break b}}d=J[c>>2];c=J[d+12>>2];if(!c){break a}b=b-24|0;e=J[b>>2];d=J[d+8>>2];f=0;g:{while(1){if(!jj(e,J[d+P(f,1552)>>2])){break g}f=f+1|0;if((c|0)!=(f|0)){continue}break}f=-1}e=J[a>>2];h=0;h:{while(1){if(!jj(e,J[d+P(h,1552)>>2])){break h}h=h+1|0;if((c|0)!=(h|0)){continue}break}h=-1}if((f|0)>=(h|0)){break a}c=J[a+20>>2];J[o+24>>2]=J[a+16>>2];J[o+28>>2]=c;c=J[a+12>>2];J[o+16>>2]=J[a+8>>2];J[o+20>>2]=c;c=J[a+4>>2];J[o+8>>2]=J[a>>2];J[o+12>>2]=c;c=J[b+20>>2];J[a+16>>2]=J[b+16>>2];J[a+20>>2]=c;c=J[b+12>>2];J[a+8>>2]=J[b+8>>2];J[a+12>>2]=c;c=J[b+4>>2];J[a>>2]=J[b>>2];J[a+4>>2]=c;a=J[o+28>>2];J[b+16>>2]=J[o+24>>2];J[b+20>>2]=a;a=J[o+20>>2];J[b+8>>2]=J[o+16>>2];J[b+12>>2]=a;a=J[o+12>>2];J[b>>2]=J[o+8>>2];J[b+4>>2]=a;break a}yp(a,a+24|0,b-24|0,c);break a}Kz(a,a+24|0,a+48|0,b-24|0,c);break a}FF(a,a+24|0,a+48|0,a+72|0,b-24|0,c);break a}if((h|0)<=575){if(e&1){h=c;k=Ui-32|0;Ui=k;g=b;i:{if((g|0)==(a|0)){break i}f=a+24|0;if(!J[J[h>>2]+12>>2]|(g|0)==(f|0)){break i}c=a;while(1){d=a;a=f;e=J[h>>2];b=J[e+12>>2];j:{if(!b){break j}j=J[d+24>>2];e=J[e+8>>2];f=0;k:{while(1){if(!jj(j,J[e+P(f,1552)>>2])){break k}f=f+1|0;if((b|0)!=(f|0)){continue}break}f=-1}l=J[d>>2];i=0;l:{while(1){if(!jj(l,J[e+P(i,1552)>>2])){break l}i=i+1|0;if((b|0)!=(i|0)){continue}break}i=-1}if((f|0)>=(i|0)){break j}J[k+24>>2]=J[d+44>>2];b=J[d+40>>2];J[k+16>>2]=J[d+36>>2];J[k+20>>2]=b;b=J[d+32>>2];J[k+8>>2]=J[d+28>>2];J[k+12>>2]=b;e=a;while(1){m:{b=d;d=J[b+4>>2];J[e>>2]=J[b>>2];J[e+4>>2]=d;d=J[b+20>>2];J[e+16>>2]=J[b+16>>2];J[e+20>>2]=d;d=J[b+12>>2];J[e+8>>2]=J[b+8>>2];J[e+12>>2]=d;if((b|0)==(c|0)){b=c;break m}f=J[h>>2];e=J[f+12>>2];if(!e){break m}d=b-24|0;l=J[f+8>>2];f=0;n:{while(1){if(!jj(j,J[l+P(f,1552)>>2])){break n}f=f+1|0;if((e|0)!=(f|0)){continue}break}f=-1}m=J[d>>2];i=0;o:{while(1){if(!jj(m,J[l+P(i,1552)>>2])){break o}i=i+1|0;if((e|0)!=(i|0)){continue}break}i=-1}e=b;if((f|0)<(i|0)){continue}}break}J[b>>2]=j;d=J[k+12>>2];J[b+4>>2]=J[k+8>>2];J[b+8>>2]=d;d=J[k+20>>2];J[b+12>>2]=J[k+16>>2];J[b+16>>2]=d;J[b+20>>2]=J[k+24>>2]}f=a+24|0;if((g|0)!=(f|0)){continue}break}}Ui=k+32|0;break a}f=c;k=Ui-32|0;Ui=k;h=b;p:{if((h|0)==(a|0)){break p}e=a+24|0;if(!J[J[f>>2]+12>>2]|(h|0)==(e|0)){break p}while(1){b=a;a=e;d=J[f>>2];c=J[d+12>>2];q:{if(!c){break q}i=J[b+24>>2];d=J[d+8>>2];e=0;r:{while(1){if(!jj(i,J[d+P(e,1552)>>2])){break r}e=e+1|0;if((c|0)!=(e|0)){continue}break}e=-1}j=J[b>>2];g=0;s:{while(1){if(!jj(j,J[d+P(g,1552)>>2])){break s}g=g+1|0;if((c|0)!=(g|0)){continue}break}g=-1}if((e|0)>=(g|0)){break q}J[k+24>>2]=J[b+44>>2];c=J[b+40>>2];J[k+16>>2]=J[b+36>>2];J[k+20>>2]=c;c=J[b+32>>2];J[k+8>>2]=J[b+28>>2];J[k+12>>2]=c;d=a;while(1){t:{c=b;e=J[b+4>>2];J[d>>2]=J[b>>2];J[d+4>>2]=e;e=J[b+20>>2];J[d+16>>2]=J[b+16>>2];J[d+20>>2]=e;e=J[b+12>>2];J[d+8>>2]=J[b+8>>2];J[d+12>>2]=e;e=J[f>>2];d=J[e+12>>2];if(!d){break t}b=b-24|0;j=J[e+8>>2];e=0;u:{while(1){if(!jj(i,J[j+P(e,1552)>>2])){break u}e=e+1|0;if((d|0)!=(e|0)){continue}break}e=-1}l=J[b>>2];g=0;v:{while(1){if(!jj(l,J[j+P(g,1552)>>2])){break v}g=g+1|0;if((d|0)!=(g|0)){continue}break}g=-1}d=c;if((e|0)<(g|0)){continue}}break}J[c>>2]=i;b=J[k+12>>2];J[c+4>>2]=J[k+8>>2];J[c+8>>2]=b;b=J[k+20>>2];J[c+12>>2]=J[k+16>>2];J[c+16>>2]=b;J[c+20>>2]=J[k+24>>2]}e=a+24|0;if((h|0)!=(e|0)){continue}break}}Ui=k+32|0;break a}if(!d){if((a|0)==(b|0)){break a}d=l-2>>>1|0;while(1){j=0;k=Ui-32|0;Ui=k;h=d;d=P(h,24)+a|0;e=(d-a|0)/24|0;w:{if((l|0)<2){break w}r=l-2>>>1|0;if((r|0)<(e|0)){break w}e=e<<1;m=e|1;f=P(m,24)+a|0;g=J[c>>2];x:{y:{q=e+2|0;z:{A:{if((q|0)>=(l|0)){i=J[g+12>>2];break A}i=J[g+12>>2];if(!i){break z}n=f+24|0;e=J[f>>2];p=J[g+8>>2];B:{while(1){if(!jj(e,J[p+P(j,1552)>>2])){break B}j=j+1|0;if((j|0)!=(i|0)){continue}break}j=-1}s=J[n>>2];e=0;C:{while(1){if(!jj(s,J[p+P(e,1552)>>2])){break C}e=e+1|0;if((i|0)!=(e|0)){continue}break}e=-1}e=(e|0)>(j|0);m=e?q:m;f=e?n:f}if(i){break y}}n=J[d>>2];break x}e=J[f>>2];g=J[g+8>>2];j=0;D:{while(1){if(!jj(e,J[g+P(j,1552)>>2])){break D}j=j+1|0;if((j|0)!=(i|0)){continue}break}j=-1}n=J[d>>2];e=0;E:{while(1){if(!jj(n,J[g+P(e,1552)>>2])){break E}e=e+1|0;if((i|0)!=(e|0)){continue}break}e=-1}if((e|0)>(j|0)){break w}}J[k+24>>2]=J[d+20>>2];e=J[d+16>>2];J[k+16>>2]=J[d+12>>2];J[k+20>>2]=e;e=J[d+8>>2];J[k+8>>2]=J[d+4>>2];J[k+12>>2]=e;while(1){F:{e=d;d=f;g=J[f+4>>2];J[e>>2]=J[f>>2];J[e+4>>2]=g;g=J[f+20>>2];J[e+16>>2]=J[f+16>>2];J[e+20>>2]=g;g=J[f+12>>2];J[e+8>>2]=J[f+8>>2];J[e+12>>2]=g;if((m|0)>(r|0)){break F}e=m<<1;m=e|1;f=P(m,24)+a|0;p=J[c>>2];s=e+2|0;G:{H:{if((s|0)>=(l|0)){i=J[p+12>>2];break H}i=J[p+12>>2];if(!i){j=-1;g=-1;break G}g=f+24|0;e=J[f>>2];q=J[p+8>>2];j=0;I:{while(1){if(!jj(e,J[q+P(j,1552)>>2])){break I}j=j+1|0;if((j|0)!=(i|0)){continue}break}j=-1}t=J[g>>2];e=0;J:{while(1){if(!jj(t,J[q+P(e,1552)>>2])){break J}e=e+1|0;if((i|0)!=(e|0)){continue}break}e=-1}e=(e|0)>(j|0);m=e?s:m;f=e?g:f}g=-1;if(!i){j=-1;break G}e=J[f>>2];p=J[p+8>>2];j=0;K:{while(1){if(!jj(e,J[p+P(j,1552)>>2])){break K}j=j+1|0;if((j|0)!=(i|0)){continue}break}j=-1}e=0;while(1){if(!jj(n,J[p+P(e,1552)>>2])){g=e;break G}e=e+1|0;if((i|0)!=(e|0)){continue}break}}if((g|0)<=(j|0)){continue}}break}J[d>>2]=n;e=J[k+12>>2];J[d+4>>2]=J[k+8>>2];J[d+8>>2]=e;e=J[k+20>>2];J[d+12>>2]=J[k+16>>2];J[d+16>>2]=e;J[d+20>>2]=J[k+24>>2]}Ui=k+32|0;d=h-1|0;if(h){continue}break}l=Ui-32|0;Ui=l;e=b;b=b-a|0;if((b|0)>=25){d=a;a=(b>>>0)/24|0;while(1){b=d;f=J[b+20>>2];J[l+24>>2]=J[b+16>>2];J[l+28>>2]=f;f=J[b+12>>2];J[l+16>>2]=J[b+8>>2];J[l+20>>2]=f;f=J[b+4>>2];J[l+8>>2]=J[b>>2];J[l+12>>2]=f;k=a;n=a-2>>>1|0;a=0;while(1){g=a<<1;f=g|1;h=b;a=h+P(a,24)|0;b=a+24|0;p=g+2|0;L:{if((p|0)>=(k|0)){a=f;break L}j=J[c>>2];g=J[j+12>>2];if(!g){a=f;break L}i=a+48|0;q=J[a+24>>2];m=J[j+8>>2];a=0;M:{while(1){if(!jj(q,J[m+P(a,1552)>>2])){break M}a=a+1|0;if((g|0)!=(a|0)){continue}break}a=-1}q=J[i>>2];j=0;N:{while(1){if(!jj(q,J[m+P(j,1552)>>2])){break N}j=j+1|0;if((g|0)!=(j|0)){continue}break}j=-1}g=f;f=(a|0)<(j|0);a=f?p:g;b=f?i:b}f=J[b+4>>2];J[h>>2]=J[b>>2];J[h+4>>2]=f;f=J[b+20>>2];J[h+16>>2]=J[b+16>>2];J[h+20>>2]=f;f=J[b+12>>2];J[h+8>>2]=J[b+8>>2];J[h+12>>2]=f;if((a|0)<=(n|0)){continue}break}e=e-24|0;O:{if((b|0)==(e|0)){a=J[l+12>>2];J[b>>2]=J[l+8>>2];J[b+4>>2]=a;a=J[l+28>>2];J[b+16>>2]=J[l+24>>2];J[b+20>>2]=a;a=J[l+20>>2];J[b+8>>2]=J[l+16>>2];J[b+12>>2]=a;break O}a=J[e+4>>2];J[b>>2]=J[e>>2];J[b+4>>2]=a;a=J[e+20>>2];J[b+16>>2]=J[e+16>>2];J[b+20>>2]=a;a=J[e+12>>2];J[b+8>>2]=J[e+8>>2];J[b+12>>2]=a;a=J[l+12>>2];J[e>>2]=J[l+8>>2];J[e+4>>2]=a;a=J[l+20>>2];J[e+8>>2]=J[l+16>>2];J[e+12>>2]=a;a=J[l+28>>2];J[e+16>>2]=J[l+24>>2];J[e+20>>2]=a;h=Ui-32|0;Ui=h;a=b+24|0;f=(a-d|0)/24|0;P:{if((f|0)<2){break P}g=J[c>>2];n=J[g+12>>2];if(!n){break P}b=a-24|0;m=f-2>>>1|0;f=d+P(m,24)|0;i=J[f>>2];p=J[g+8>>2];g=0;Q:{while(1){if(!jj(i,J[p+P(g,1552)>>2])){break Q}g=g+1|0;if((n|0)!=(g|0)){continue}break}g=-1}j=J[b>>2];i=0;R:{while(1){if(!jj(j,J[p+P(i,1552)>>2])){break R}i=i+1|0;if((n|0)!=(i|0)){continue}break}i=-1}if((g|0)>=(i|0)){break P}a=a-20|0;J[h+24>>2]=J[a+16>>2];g=J[a+12>>2];J[h+16>>2]=J[a+8>>2];J[h+20>>2]=g;g=J[a+4>>2];J[h+8>>2]=J[a>>2];J[h+12>>2]=g;while(1){S:{a=f;g=J[f+4>>2];J[b>>2]=J[f>>2];J[b+4>>2]=g;g=J[f+20>>2];J[b+16>>2]=J[f+16>>2];J[b+20>>2]=g;g=J[f+12>>2];J[b+8>>2]=J[f+8>>2];J[b+12>>2]=g;if(!m){break S}g=J[c>>2];b=J[g+12>>2];if(!b){break S}m=m-1>>>1|0;f=d+P(m,24)|0;i=J[f>>2];n=J[g+8>>2];g=0;T:{while(1){if(!jj(i,J[n+P(g,1552)>>2])){break T}g=g+1|0;if((b|0)!=(g|0)){continue}break}g=-1}i=0;U:{while(1){if(!jj(j,J[n+P(i,1552)>>2])){break U}i=i+1|0;if((b|0)!=(i|0)){continue}break}i=-1}b=a;if((g|0)<(i|0)){continue}}break}J[a>>2]=j;b=J[h+12>>2];J[a+4>>2]=J[h+8>>2];J[a+8>>2]=b;b=J[h+20>>2];J[a+12>>2]=J[h+16>>2];J[a+16>>2]=b;J[a+20>>2]=J[h+24>>2]}Ui=h+32|0}a=k-1|0;if((k|0)>2){continue}break}}Ui=l+32|0;break a}g=P(l>>>1|0,24);f=g+a|0;V:{if(h>>>0>=3073){yp(a,f,p,c);h=a+24|0;k=f-24|0;yp(h,k,s,c);h=g+h|0;yp(a+48|0,h,r,c);yp(k,f,h,c);h=J[a+20>>2];J[o+24>>2]=J[a+16>>2];J[o+28>>2]=h;h=J[a+12>>2];J[o+16>>2]=J[a+8>>2];J[o+20>>2]=h;h=J[a+4>>2];J[o+8>>2]=J[a>>2];J[o+12>>2]=h;h=J[f+20>>2];J[a+16>>2]=J[f+16>>2];J[a+20>>2]=h;h=J[f+12>>2];J[a+8>>2]=J[f+8>>2];J[a+12>>2]=h;h=J[f+4>>2];J[a>>2]=J[f>>2];J[a+4>>2]=h;h=J[o+28>>2];J[f+16>>2]=J[o+24>>2];J[f+20>>2]=h;h=J[o+20>>2];J[f+8>>2]=J[o+16>>2];J[f+12>>2]=h;h=J[o+12>>2];J[f>>2]=J[o+8>>2];J[f+4>>2]=h;break V}yp(f,a,p,c)}d=d-1|0;W:{q=e&1;if(q){break W}f=J[c>>2];g=J[f+12>>2];if(g){h=J[a-24>>2];k=J[f+8>>2];f=0;X:{while(1){if(!jj(h,J[k+P(f,1552)>>2])){break X}f=f+1|0;if((g|0)!=(f|0)){continue}break}f=-1}i=J[a>>2];h=0;Y:{while(1){if(!jj(i,J[k+P(h,1552)>>2])){break Y}h=h+1|0;if((g|0)!=(h|0)){continue}break}h=-1}if((f|0)<(h|0)){break W}}e=0;g=0;i=0;k=Ui-48|0;Ui=k;l=J[a>>2];J[k+16>>2]=J[a+20>>2];f=J[a+16>>2];J[k+8>>2]=J[a+12>>2];J[k+12>>2]=f;f=J[a+8>>2];J[k>>2]=J[a+4>>2];J[k+4>>2]=f;f=b;n=f-24|0;Z:{_:{m=J[c>>2];j=J[m+12>>2];if(!j){break _}h=J[m+8>>2];$:{while(1){if(!jj(l,J[h+P(g,1552)>>2])){break $}g=g+1|0;if((j|0)!=(g|0)){continue}break}g=-1}q=J[n>>2];aa:{while(1){if(!jj(q,J[h+P(i,1552)>>2])){break aa}i=i+1|0;if((j|0)!=(i|0)){continue}break}i=-1}ba:{if((g|0)>=(i|0)){if(!j){break _}h=a;while(1){h=h+24|0;if(h>>>0>=f>>>0){break ba}q=J[m+8>>2];g=0;ca:{while(1){if(!jj(l,J[q+P(g,1552)>>2])){break ca}g=g+1|0;if((j|0)!=(g|0)){continue}break}g=-1}t=J[h>>2];i=0;da:{while(1){if(!jj(t,J[q+P(i,1552)>>2])){break da}i=i+1|0;if((j|0)!=(i|0)){continue}break}i=-1}if((g|0)>=(i|0)){continue}break}break ba}q=J[m+8>>2];h=a;while(1){h=h+24|0;g=0;ea:{while(1){if(!jj(l,J[q+P(g,1552)>>2])){break ea}g=g+1|0;if((j|0)!=(g|0)){continue}break}g=-1}t=J[h>>2];i=0;fa:{while(1){if(!jj(t,J[q+P(i,1552)>>2])){break fa}i=i+1|0;if((j|0)!=(i|0)){continue}break}i=-1}if((g|0)>=(i|0)){continue}break}}i=f>>>0<=h>>>0;g=i?f:n;if(!j|i){break Z}m=J[m+8>>2];while(1){f=f-24|0;g=0;ga:{while(1){if(!jj(l,J[m+P(g,1552)>>2])){break ga}g=g+1|0;if((j|0)!=(g|0)){continue}break}g=-1}n=J[f>>2];i=0;ha:{while(1){if(!jj(n,J[m+P(i,1552)>>2])){break ha}i=i+1|0;if((j|0)!=(i|0)){continue}break}i=-1}if((g|0)<(i|0)){continue}break}g=f;break Z}h=a+24|0;i=(f>>>0>h>>>0?f:h)-24|0;g=(i|0)!=(a|0);h=P(g+((i-(a+g|0)>>>0)/24|0)|0,24)+h|0;g=h>>>0>>0?n:f}if(g>>>0>h>>>0){while(1){f=J[h+20>>2];J[k+40>>2]=J[h+16>>2];J[k+44>>2]=f;f=J[h+12>>2];J[k+32>>2]=J[h+8>>2];J[k+36>>2]=f;f=J[h+4>>2];J[k+24>>2]=J[h>>2];J[k+28>>2]=f;f=J[g+20>>2];J[h+16>>2]=J[g+16>>2];J[h+20>>2]=f;f=J[g+12>>2];J[h+8>>2]=J[g+8>>2];J[h+12>>2]=f;f=J[g+4>>2];J[h>>2]=J[g>>2];J[h+4>>2]=f;f=J[k+44>>2];J[g+16>>2]=J[k+40>>2];J[g+20>>2]=f;f=J[k+36>>2];J[g+8>>2]=J[k+32>>2];J[g+12>>2]=f;f=J[k+28>>2];J[g>>2]=J[k+24>>2];J[g+4>>2]=f;f=J[c>>2];j=J[f+8>>2];m=J[f+12>>2];while(1){h=h+24|0;i=0;ia:{while(1){if(!jj(l,J[j+P(i,1552)>>2])){break ia}i=i+1|0;if((m|0)!=(i|0)){continue}break}i=-1}n=J[h>>2];f=0;ja:{while(1){if(!jj(n,J[j+P(f,1552)>>2])){break ja}f=f+1|0;if((m|0)!=(f|0)){continue}break}f=-1}if((f|0)<=(i|0)){continue}break}while(1){g=g-24|0;i=0;ka:{while(1){if(!jj(l,J[j+P(i,1552)>>2])){break ka}i=i+1|0;if((m|0)!=(i|0)){continue}break}i=-1}n=J[g>>2];f=0;la:{while(1){if(!jj(n,J[j+P(f,1552)>>2])){break la}f=f+1|0;if((m|0)!=(f|0)){continue}break}f=-1}if((f|0)>(i|0)){continue}break}if(g>>>0>h>>>0){continue}break}}f=h-24|0;if((f|0)!=(a|0)){g=J[f+4>>2];J[a>>2]=J[f>>2];J[a+4>>2]=g;g=J[f+20>>2];J[a+16>>2]=J[f+16>>2];J[a+20>>2]=g;g=J[f+12>>2];J[a+8>>2]=J[f+8>>2];J[a+12>>2]=g}J[f>>2]=l;a=h-20|0;J[a+16>>2]=J[k+16>>2];f=J[k+12>>2];J[a+8>>2]=J[k+8>>2];J[a+12>>2]=f;f=J[k+4>>2];J[a>>2]=J[k>>2];J[a+4>>2]=f;Ui=k+48|0;a=h;continue}break}f=b;k=Ui-48|0;Ui=k;m=J[a>>2];J[k+16>>2]=J[a+20>>2];h=J[a+16>>2];J[k+8>>2]=J[a+12>>2];J[k+12>>2]=h;h=J[a+8>>2];J[k>>2]=J[a+4>>2];J[k+4>>2]=h;ma:{na:{n=J[c>>2];l=J[n+12>>2];if(!l){h=a+24|0;break na}p=J[n+8>>2];h=a;while(1){g=h;h=g+24|0;j=J[g+24>>2];i=0;oa:{while(1){if(!jj(j,J[p+P(i,1552)>>2])){break oa}i=i+1|0;if((l|0)!=(i|0)){continue}break}i=-1}j=0;pa:{while(1){if(!jj(m,J[p+P(j,1552)>>2])){break pa}j=j+1|0;if((l|0)!=(j|0)){continue}break}j=-1}if((i|0)<(j|0)){continue}break}if((a|0)!=(g|0)){g=J[n+8>>2];while(1){f=f-24|0;j=J[f>>2];i=0;qa:{while(1){if(!jj(j,J[g+P(i,1552)>>2])){break qa}i=i+1|0;if((l|0)!=(i|0)){continue}break}i=-1}j=0;ra:{while(1){if(!jj(m,J[g+P(j,1552)>>2])){break ra}j=j+1|0;if((l|0)!=(j|0)){continue}break}j=-1}if((i|0)>=(j|0)){continue}break}break ma}if(!l){break na}while(1){if(f>>>0<=h>>>0){break ma}f=f-24|0;j=J[f>>2];g=J[n+8>>2];i=0;sa:{while(1){if(!jj(j,J[g+P(i,1552)>>2])){break sa}i=i+1|0;if((l|0)!=(i|0)){continue}break}i=-1}j=0;ta:{while(1){if(!jj(m,J[g+P(j,1552)>>2])){break ta}j=j+1|0;if((l|0)!=(j|0)){continue}break}j=-1}if((i|0)>=(j|0)){continue}break}break ma}while(1){g=f;f=f-24|0;if(g>>>0>h>>>0){continue}break}f=g}r=f>>>0<=h>>>0;if(!r){while(1){g=J[h+20>>2];J[k+40>>2]=J[h+16>>2];J[k+44>>2]=g;g=J[h+12>>2];J[k+32>>2]=J[h+8>>2];J[k+36>>2]=g;g=J[h+4>>2];J[k+24>>2]=J[h>>2];J[k+28>>2]=g;g=J[f+20>>2];J[h+16>>2]=J[f+16>>2];J[h+20>>2]=g;g=J[f+12>>2];J[h+8>>2]=J[f+8>>2];J[h+12>>2]=g;g=J[f+4>>2];J[h>>2]=J[f>>2];J[h+4>>2]=g;g=J[k+44>>2];J[f+16>>2]=J[k+40>>2];J[f+20>>2]=g;g=J[k+36>>2];J[f+8>>2]=J[k+32>>2];J[f+12>>2]=g;g=J[k+28>>2];J[f>>2]=J[k+24>>2];J[f+4>>2]=g;n=J[c>>2];p=J[n+8>>2];l=J[n+12>>2];while(1){g=h;h=g+24|0;g=J[g+24>>2];i=0;ua:{while(1){if(!jj(g,J[p+P(i,1552)>>2])){break ua}i=i+1|0;if((l|0)!=(i|0)){continue}break}i=-1}j=0;va:{while(1){if(!jj(m,J[p+P(j,1552)>>2])){break va}j=j+1|0;if((l|0)!=(j|0)){continue}break}j=-1}if((i|0)<(j|0)){continue}break}g=J[n+8>>2];while(1){f=f-24|0;j=J[f>>2];i=0;wa:{while(1){if(!jj(j,J[g+P(i,1552)>>2])){break wa}i=i+1|0;if((l|0)!=(i|0)){continue}break}i=-1}j=0;xa:{while(1){if(!jj(m,J[g+P(j,1552)>>2])){break xa}j=j+1|0;if((l|0)!=(j|0)){continue}break}j=-1}if((i|0)>=(j|0)){continue}break}if(f>>>0>h>>>0){continue}break}}f=h-24|0;if((f|0)!=(a|0)){g=J[f+4>>2];J[a>>2]=J[f>>2];J[a+4>>2]=g;g=J[f+20>>2];J[a+16>>2]=J[f+16>>2];J[a+20>>2]=g;g=J[f+12>>2];J[a+8>>2]=J[f+8>>2];J[a+12>>2]=g}J[f>>2]=m;h=h-20|0;J[h+16>>2]=J[k+16>>2];g=J[k+12>>2];J[h+8>>2]=J[k+8>>2];J[h+12>>2]=g;g=J[k+4>>2];J[h>>2]=J[k>>2];J[h+4>>2]=g;H[o+12|0]=r;J[o+8>>2]=f;Ui=k+48|0;h=J[o+8>>2];ya:{if(K[o+12|0]!=1){break ya}g=pU(a,h,c);f=h+24|0;if(pU(f,b,c)){b=h;if(!g){continue}break a}if(!g){break ya}a=f;continue}QF(a,h,c,d,q);a=h+24|0;e=0;continue}break}Ui=o+32|0}function Sm(a,b,c,d){var e=0,f=0,g=0,h=0,i=0,j=0,k=0,l=0,m=0,n=0,o=0,p=0,q=0,r=0,s=0,t=0,u=0,v=0,w=0,x=0,y=0,z=0,A=0,C=0,D=0,E=0,F=0,G=0,M=0;o=Ui-48|0;Ui=o;a:{b:{e=K[a|0]&127;c:{if((e|0)==69){break c}q=K[e+166256|0];J[b+104>>2]=q;e=J[((q<<3)+162928|0)+4>>2];d:{if((q|0)==8){c=(e>>>3|0)+a|0;f=e&7;H[b+112|0]=(K[c+1|0]<<8|K[c|0])>>>f;c=(e+8>>>3|0)+a|0;H[b+113|0]=(K[c+1|0]<<8|K[c|0])>>>f;c=(e+16>>>3|0)+a|0;H[b+114|0]=(K[c+1|0]<<8|K[c|0])>>>f;c=(e+24>>>3|0)+a|0;H[b+115|0]=(K[c+1|0]<<8|K[c|0])>>>f;if(!d){break d}H[b+118|0]=0;H[b+119|0]=K[(e+32>>>3|0)+a|0]>>>f&1;c=e+33|0;n=(c>>>3|0)+a|0;c=c&7;d=K[n|0]>>>c|0;d=c>>>0>=6?K[n+1|0]<<8-c|d:d;J[b+124>>2]=0;J[b+120>>2]=d&7;c=e+36|0;d=(c>>>3|0)+a|0;n=c&7;c=K[d|0]>>>n|0;if((n|0)==7){c=c|K[d+1|0]<<1}J[b+136>>2]=c&3;c=e+38|0;n=(c>>>3|0)+a|0;d=c&7;c=K[n|0]>>>d|0;if(d>>>0>=4){c=c|K[n+1|0]<<8-d}J[b+140>>2]=c&31;c=e+43|0;n=(c>>>3|0)+a|0;d=c&7;c=K[n|0]>>>d|0;if(d>>>0>=4){c=c|K[n+1|0]<<8-d}J[b+144>>2]=c&31;a=(e+48>>>3|0)+a|0;c=K[a|0];a=K[a+1|0];J[b+128>>2]=0;J[b+132>>2]=0;J[b+148>>2]=(a<<8-f|c>>>f)&31;break d}e:{if(d){H[b+116|0]=K[(e>>>3|0)+a|0]>>>(e&7)&1;d=e+1|0;u=1<>>3|0)+a|0]>>>(d&7)&1;d=e+2|0}H[b+117|0]=j;l=d&7;H[b+118|0]=K[(d>>>3|0)+a|0]>>>l&1;e=d+1|0;H[b+119|0]=K[(e>>>3|0)+a|0]>>>(e&7)&1;e=d+2|0;if(e>>>0>=112){break a}j=(e>>>3|0)+a|0;g=e&7;e=K[j|0]>>>g|0;if(g>>>0>=6){e=e|K[j+1|0]<<8-g}J[b+120>>2]=e&7;e=d+5|0;if(e>>>0>=112){break a}j=(e>>>3|0)+a|0;g=e&7;e=K[j|0]>>>g|0;if(g>>>0>=6){e=e|K[j+1|0]<<8-g}J[b+124>>2]=e&7;g=d+8|0;j=0;if(!u){if(g>>>0>=112){break a}g=(g>>>3|0)+a|0;e=K[g|0]>>>l|0;if(l>>>0>=4){e=e|K[g+1|0]<<8-l}j=e&31;g=d+13|0}J[b+128>>2]=j;if(q-18>>>0>=4294967286){if(g>>>0>=112){break a}j=(g>>>3|0)+a|0;e=g&7;d=K[j|0]>>>e|0;if(e){d=d|K[j+1|0]<<8-e}J[b+132>>2]=d&255;g=g+8|0;break e}J[b+132>>2]=0;break e}g=e+K[q+166384|0]|0}D=1;f:{g:{h:{i:{j:{k:{l:{m:{n:{j=q>>>0>16;u=1;o:{if(j){break o}if(!(1<>>0>=112){break a}l=(g>>>3|0)+a|0;e=g&7;d=K[l|0]>>>e|0;if(e>>>0>=4){d=d|K[l+1|0]<<8-e}J[b+108>>2]=d&31;g=g+5|0;D=0;u=2}d=0;if(j){break g}if(1<>2];if(d>>>0<=18){break j}break c}if(g>>>0>=112){break a}u=3;j=(g>>>3|0)+a|0;e=g&7;d=K[j|0]>>>e|0;if(e>>>0>=5){d=d|K[j+1|0]<<8-e}d=d&15;J[b+108>>2]=d;g=g+4|0;D=0;break k}d=J[b+108>>2];if(d>>>0<=29){break h}break c}d=J[b+108>>2]}if(d>>>0>10){break c}d=P(d,6)+161650|0;break i}d=P(d,6)+161522|0}d=L[d>>1];t=1;break f}d=L[(P(d,6)+161328|0)+2>>1]}t=1;p:{q:{switch(q-6|0){case 0:case 5:case 7:if(g>>>0>=112){break a}j=(g>>>3|0)+a|0;l=g&7;e=K[j|0]>>>l|0;if((l|0)==7){e=e|K[j+1|0]<<1}J[b+16>>2]=e&3;g=g+2|0;break p;case 11:break q;default:break f}}J[b+16>>2]=3}t=2;s=1}J[b+4>>2]=u;H[b+20|0]=s;J[b+8>>2]=d&65535;J[b>>2]=K[q+163120|0];J[b+12>>2]=K[q+166416|0];h=1;z=K[q+163248|0];r=P(z,u)<<1;k=K[q+163088|0];F=K[q+163152|0];d=P(F,12)+163280|0;j=J[d+8>>2];m=J[d>>2];r:{s:{t:{w=J[d+4>>2];u:{if(w){p=3;i=4;e=5;break u}if(!j){break t}p=5;i=2;e=3}d=i+r|0;A=(d>>>0)/(e>>>0)|0;l=d>>>0>>0;if(!l){break s}A=0;break r}e=0;break r}h=w?8:7;C=A-1|0;d=r-P(C,e)|0;E=j?(d|0)==1?3:(d|0)==2?5:7:7;x=d-1|0;v=(x<<2)+172060|0;d=0;while(1){i=(d|0)!=(C|0);j=i|!w;i=j?i?h:E:8;i=x>>>0>3|j?i:J[v>>2];if(g>>>0>=112){break a}G=(g>>>3|0)+a|0;y=g&7;j=K[G|0]>>>y|0;M=(o+16|0)+(d<<2)|0;y=8-y|0;if(y>>>0>>0){j=j|K[G+1|0]<>2]=(-1<>>0<10){C=b+21|0;E=-1<>>0>=112){break x}x=(g>>>3|0)+a|0;v=g&7;d=K[x|0]>>>v|0;g=g+m|0;v=8-v|0;if(v>>>0>>0){d=d|K[x+1|0]<>>0>=A>>>0){break w}l=J[(o+16|0)+(w<<2)>>2];w=w+1|0;j=e}j=j-1|0;v=l;l=(l>>>0)/(p>>>0)|0;d=d|v-P(p,l)<>>0<2){p=166240;l=166240;break A}d=J[b+108>>2];if((u|0)==3){p=(d<<4)+162240|0;l=P(d,3)+162816|0;break A}if((q|0)==7){l=P(d,3)+162864|0;p=(d<<4)+162416|0;break z}p=(d<<4)+161760|0;l=P(d,3)+162720|0}if((q|0)!=18){break z}e=b+39|0;i=0;while(1){f=k-!i|0;if(f>>>0<10){n=e+i|0;if(f){j=(g>>>3|0)+a|0;l=g&7;d=K[j|0]>>>l|0;g=g+f|0;l=8-l|0;if(l>>>0>>0){d=d|K[j+1|0]<=64?64:d;if(h>>>0>64){break b}if((g|0)!=128){i=0;while(1){d=h-i|0;e=g&7;j=8-e|0;j=(d|0)<(j|0)?d:j;d=(-1<>>3|0)+a|0]>>>e;e=i&31;if((i&63)>>>0>=32){m=d<>>32-e;d=d<>>0>i>>>0){continue}break}}a=-1<>>0>=32){g=f>>>g|0}else{g=((1<>>g}H[b+40|0]=g&e;g=n;e=d<<1;d=e&31;if((e&63)>>>0>=32){d=f>>>d|0}else{d=((1<>>d}H[b+41|0]=d&a;e=e+k|0;d=e&31;if((e&63)>>>0>=32){d=f>>>d|0}else{d=((1<>>d}H[b+42|0]=d&a;e=e+k|0;d=e&31;if((e&63)>>>0>=32){d=f>>>d|0}else{d=((1<>>d}H[b+43|0]=d&a;e=e+k|0;d=e&31;if((e&63)>>>0>=32){d=f>>>d|0}else{d=((1<>>d}H[b+44|0]=d&a;e=e+k|0;d=e&31;if((e&63)>>>0>=32){d=f>>>d|0}else{d=((1<>>d}H[b+45|0]=d&a;e=e+k|0;d=e&31;if((e&63)>>>0>=32){d=f>>>d|0}else{d=((1<>>d}H[b+46|0]=d&a;e=e+k|0;d=e&31;if((e&63)>>>0>=32){d=f>>>d|0}else{d=((1<>>d}H[b+47|0]=d&a;e=e+k|0;d=e&31;if((e&63)>>>0>=32){d=f>>>d|0}else{d=((1<>>d}H[b+48|0]=d&a;e=e+k|0;d=e&31;if((e&63)>>>0>=32){d=f>>>d|0}else{d=((1<>>d}H[b+49|0]=d&a;e=e+k|0;d=e&31;if((e&63)>>>0>=32){d=f>>>d|0}else{d=((1<>>d}H[b+50|0]=d&a;e=e+k|0;d=e&31;if((e&63)>>>0>=32){d=f>>>d|0}else{d=((1<>>d}H[b+51|0]=d&a;e=e+k|0;d=e&31;if((e&63)>>>0>=32){d=f>>>d|0}else{d=((1<>>d}H[b+52|0]=d&a;e=e+k|0;d=e&31;if((e&63)>>>0>=32){d=f>>>d|0}else{d=((1<>>d}H[b+53|0]=d&a;e=e+k|0;d=e&31;if((e&63)>>>0>=32){d=f>>>d|0}else{d=((1<>>d}H[b+54|0]=d&a;e=e+k|0;d=e&31;if((e&63)>>>0>=32){d=f>>>d|0}else{d=((1<>>d}H[b+55|0]=d&a;e=e+k|0;d=e&31;if((e&63)>>>0>=32){d=f>>>d|0}else{d=((1<>>d}H[b+56|0]=d&a;e=e+k|0;d=e&31;if((e&63)>>>0>=32){d=f>>>d|0}else{d=((1<>>d}H[b+57|0]=d&a;e=e+k|0;d=e&31;if((e&63)>>>0>=32){d=f>>>d|0}else{d=((1<>>d}H[b+58|0]=d&a;e=e+k|0;d=e&31;if((e&63)>>>0>=32){d=f>>>d|0}else{d=((1<>>d}H[b+59|0]=d&a;e=e+k|0;d=e&31;if((e&63)>>>0>=32){d=f>>>d|0}else{d=((1<>>d}H[b+60|0]=d&a;e=e+k|0;d=e&31;if((e&63)>>>0>=32){d=f>>>d|0}else{d=((1<>>d}H[b+61|0]=d&a;e=e+k|0;d=e&31;if((e&63)>>>0>=32){d=f>>>d|0}else{d=((1<>>d}H[b+62|0]=d&a;e=e+k|0;d=e&31;if((e&63)>>>0>=32){d=f>>>d|0}else{d=((1<>>d}H[b+63|0]=d&a;e=e+k|0;d=e&31;if((e&63)>>>0>=32){d=f>>>d|0}else{d=((1<>>d}H[b+64|0]=d&a;e=e+k|0;d=e&31;if((e&63)>>>0>=32){d=f>>>d|0}else{d=((1<>>d}H[b+65|0]=d&a;e=e+k|0;d=e&31;if((e&63)>>>0>=32){d=f>>>d|0}else{d=((1<>>d}H[b+66|0]=d&a;e=e+k|0;d=e&31;if((e&63)>>>0>=32){d=f>>>d|0}else{d=((1<>>d}H[b+67|0]=d&a;e=e+k|0;d=e&31;if((e&63)>>>0>=32){d=f>>>d|0}else{d=((1<>>d}H[b+68|0]=d&a;e=e+k|0;d=e&31;if((e&63)>>>0>=32){d=f>>>d|0}else{d=((1<>>d}H[b+69|0]=d&a;e=e+k|0;d=e&31;if((e&63)>>>0>=32){d=f>>>d|0}else{d=((1<>>d}g=d&a;a=70;break B}C:{D:{if(D){if(!(1<>>23&15;H[b+52|0]=f>>>19&15;H[b+51|0]=f>>>15&15;H[b+50|0]=f>>>11&15;H[b+49|0]=f>>>7&15;H[b+48|0]=f>>>3&15;H[b+47|0]=((f&2147483647)<<1|n>>>31)&15;H[b+46|0]=n>>>27&15;H[b+45|0]=n>>>23&15;H[b+44|0]=n>>>19&15;H[b+43|0]=n>>>15&15;H[b+42|0]=n>>>11&15;H[b+41|0]=n>>>7&15;H[b+40|0]=n>>>3&15;g=f>>>27&15;break C}g=K[l+2|0];j=K[l|0];l=K[l+1|0];h=!g|(!j|!l);H[b+39|0]=(h?e:a)&n;m=(j|0)==1|(l|0)==1|(g|0)==1;r=n;i=h?d:k;h=i&31;if((i&63)>>>0>=32){h=f>>>h|0}else{h=((1<>>h}H[b+40|0]=h&(m?e:a);i=i+(m?d:k)|0;m=(j|0)==2|(l|0)==2|(g|0)==2;h=i&31;if((i&63)>>>0>=32){h=f>>>h|0}else{h=((1<>>h}H[b+41|0]=h&(m?e:a);i=i+(m?d:k)|0;m=(j|0)==3|(l|0)==3|(g|0)==3;h=i&31;if((i&63)>>>0>=32){h=f>>>h|0}else{h=((1<>>h}H[b+42|0]=h&(m?e:a);i=i+(m?d:k)|0;m=(j|0)==4|(l|0)==4|(g|0)==4;h=i&31;if((i&63)>>>0>=32){h=f>>>h|0}else{h=((1<>>h}H[b+43|0]=h&(m?e:a);i=i+(m?d:k)|0;m=(j|0)==5|(l|0)==5|(g|0)==5;h=i&31;if((i&63)>>>0>=32){h=f>>>h|0}else{h=((1<>>h}H[b+44|0]=h&(m?e:a);i=i+(m?d:k)|0;m=(j|0)==6|(l|0)==6|(g|0)==6;h=i&31;if((i&63)>>>0>=32){h=f>>>h|0}else{h=((1<>>h}H[b+45|0]=h&(m?e:a);i=i+(m?d:k)|0;m=(j|0)==7|(l|0)==7|(g|0)==7;h=i&31;if((i&63)>>>0>=32){h=f>>>h|0}else{h=((1<>>h}H[b+46|0]=h&(m?e:a);i=i+(m?d:k)|0;m=(j|0)==8|(l|0)==8|(g|0)==8;h=i&31;if((i&63)>>>0>=32){h=f>>>h|0}else{h=((1<>>h}H[b+47|0]=h&(m?e:a);i=i+(m?d:k)|0;m=(j|0)==9|(l|0)==9|(g|0)==9;h=i&31;if((i&63)>>>0>=32){h=f>>>h|0}else{h=((1<>>h}H[b+48|0]=h&(m?e:a);i=i+(m?d:k)|0;m=(j|0)==10|(l|0)==10|(g|0)==10;h=i&31;if((i&63)>>>0>=32){h=f>>>h|0}else{h=((1<>>h}H[b+49|0]=h&(m?e:a);i=i+(m?d:k)|0;m=(j|0)==11|(l|0)==11|(g|0)==11;h=i&31;if((i&63)>>>0>=32){h=f>>>h|0}else{h=((1<>>h}H[b+50|0]=h&(m?e:a);i=i+(m?d:k)|0;m=(j|0)==12|(l|0)==12|(g|0)==12;h=i&31;if((i&63)>>>0>=32){h=f>>>h|0}else{h=((1<>>h}H[b+51|0]=h&(m?e:a);i=i+(m?d:k)|0;m=(j|0)==13|(l|0)==13|(g|0)==13;h=i&31;if((i&63)>>>0>=32){h=f>>>h|0}else{h=((1<>>h}H[b+52|0]=h&(m?e:a);i=i+(m?d:k)|0;m=(j|0)==14|(l|0)==14|(g|0)==14;h=i&31;if((i&63)>>>0>=32){h=f>>>h|0}else{h=((1<>>h}H[b+53|0]=h&(m?e:a);h=i+(m?d:k)|0;d=h&31;if((h&63)>>>0>=32){d=f>>>d|0}else{d=((1<>>d}H[b+54|0]=d&((j|0)==15?e:(l|0)==15?e:(g|0)==15?e:a);break y}H[b+39|0]=e&n;g=n;e=d&31;if((d&63)>>>0>=32){l=f>>>e|0}else{l=((1<>>e}H[b+40|0]=l&a;e=d+k|0;d=e&31;if((e&63)>>>0>=32){d=f>>>d|0}else{d=((1<>>d}H[b+41|0]=d&a;e=e+k|0;d=e&31;if((e&63)>>>0>=32){d=f>>>d|0}else{d=((1<>>d}H[b+42|0]=d&a;e=e+k|0;d=e&31;if((e&63)>>>0>=32){d=f>>>d|0}else{d=((1<>>d}H[b+43|0]=d&a;e=e+k|0;d=e&31;if((e&63)>>>0>=32){d=f>>>d|0}else{d=((1<>>d}H[b+44|0]=d&a;e=e+k|0;d=e&31;if((e&63)>>>0>=32){d=f>>>d|0}else{d=((1<>>d}H[b+45|0]=d&a;e=e+k|0;d=e&31;if((e&63)>>>0>=32){d=f>>>d|0}else{d=((1<>>d}H[b+46|0]=d&a;e=e+k|0;d=e&31;if((e&63)>>>0>=32){d=f>>>d|0}else{d=((1<>>d}H[b+47|0]=d&a;e=e+k|0;d=e&31;if((e&63)>>>0>=32){d=f>>>d|0}else{d=((1<>>d}H[b+48|0]=d&a;e=e+k|0;d=e&31;if((e&63)>>>0>=32){d=f>>>d|0}else{d=((1<>>d}H[b+49|0]=d&a;e=e+k|0;d=e&31;if((e&63)>>>0>=32){d=f>>>d|0}else{d=((1<>>d}H[b+50|0]=d&a;e=e+k|0;d=e&31;if((e&63)>>>0>=32){d=f>>>d|0}else{d=((1<>>d}H[b+51|0]=d&a;e=e+k|0;d=e&31;if((e&63)>>>0>=32){d=f>>>d|0}else{d=((1<>>d}H[b+52|0]=d&a;e=e+k|0;d=e&31;if((e&63)>>>0>=32){d=f>>>d|0}else{d=((1<>>d}H[b+53|0]=d&a;e=e+k|0;d=e&31;if((e&63)>>>0>=32){d=f>>>d|0}else{d=((1<>>d}g=d&a}a=54}H[a+b|0]=g}if(!c|q-18>>>0>4294967292){break d}i=0;H[o+14|0]=0;I[o+12>>1]=0;d=b+21|0;a=z>>>0<=1?1:z;e=a&254;n=a&1;g=F<<9;j=0;E:{while(1){c=g+319216|0;f=P(i,z);a=d+(f<<1)|0;if((K[c+(K[a+3|0]<<1)|0]+K[c+(K[a+1|0]<<1)|0]|0)+K[c+(K[a+5|0]<<1)|0]>>>0>>0){a=0;j=0;while(1){c=d+(a+f<<1)|0;l=K[c+1|0];H[c+1|0]=K[c|0];H[c|0]=l;l=K[c+2|0];H[c+2|0]=K[c+3|0];H[c+3|0]=l;a=a+2|0;j=j+2|0;if((e|0)!=(j|0)){continue}break}if(n){a=d+(a+f<<1)|0;c=K[a+1|0];H[a+1|0]=K[a|0];H[a|0]=c}j=1;H[(o+12|0)+i|0]=1;i=i+1|0;if((u|0)!=(i|0)){continue}break E}i=i+1|0;if((u|0)!=(i|0)){continue}break}if(!(j&1)){break d}}c=b+39|0;a=-1<>2];if(M[J[b-4>>2]+116>>2]>=M[a+116>>2]){break b}J[g+8>>2]=a;a=J[f+4>>2];J[g>>2]=J[f>>2];J[g+4>>2]=a;b=b-12|0;J[f+8>>2]=J[b+8>>2];a=J[b+4>>2];J[f>>2]=J[b>>2];J[f+4>>2]=a;J[b+8>>2]=J[g+8>>2];a=J[g+4>>2];J[b>>2]=J[g>>2];J[b+4>>2]=a;break b}e=b-12|0;b=b-4|0;d=J[J[b>>2]+116>>2];a=J[f+20>>2];c=J[a+116>>2];if(c>>>0>=M[J[f+8>>2]+116>>2]){if(c>>>0<=d>>>0){break b}J[g+8>>2]=a;a=J[f+16>>2];J[g>>2]=J[f+12>>2];J[g+4>>2]=a;J[f+20>>2]=J[e+8>>2];a=J[e+4>>2];J[f+12>>2]=J[e>>2];J[f+16>>2]=a;J[e+8>>2]=J[g+8>>2];a=J[g+4>>2];J[e>>2]=J[g>>2];J[e+4>>2]=a;if(M[J[f+20>>2]+116>>2]>=M[J[f+8>>2]+116>>2]){break b}J[g+8>>2]=J[f+8>>2];a=J[f+4>>2];J[g>>2]=J[f>>2];J[g+4>>2]=a;J[f+8>>2]=J[f+20>>2];a=J[f+16>>2];J[f>>2]=J[f+12>>2];J[f+4>>2]=a;J[f+20>>2]=J[g+8>>2];a=J[g+4>>2];J[f+12>>2]=J[g>>2];J[f+16>>2]=a;break b}if(c>>>0>d>>>0){J[g+8>>2]=J[f+8>>2];a=J[f+4>>2];J[g>>2]=J[f>>2];J[g+4>>2]=a;J[f+8>>2]=J[e+8>>2];a=J[e+4>>2];J[f>>2]=J[e>>2];J[f+4>>2]=a;J[e+8>>2]=J[g+8>>2];a=J[g+4>>2];J[e>>2]=J[g>>2];J[e+4>>2]=a;break b}J[g+8>>2]=J[f+8>>2];a=J[f+4>>2];J[g>>2]=J[f>>2];J[g+4>>2]=a;J[f+8>>2]=J[f+20>>2];a=J[f+16>>2];J[f>>2]=J[f+12>>2];J[f+4>>2]=a;J[f+20>>2]=J[g+8>>2];a=J[g+4>>2];J[f+12>>2]=J[g>>2];J[f+16>>2]=a;if(M[J[b>>2]+116>>2]>=M[J[f+20>>2]+116>>2]){break b}J[g+8>>2]=J[f+20>>2];a=J[f+16>>2];J[g>>2]=J[f+12>>2];J[g+4>>2]=a;J[f+20>>2]=J[e+8>>2];a=J[e+4>>2];J[f+12>>2]=J[e>>2];J[f+16>>2]=a;J[e+8>>2]=J[g+8>>2];a=J[g+4>>2];J[e>>2]=J[g>>2];J[e+4>>2]=a;break b}_v(f,f+12|0,f+24|0,f+36|0);a=J[f+44>>2];if(M[J[b-4>>2]+116>>2]>=M[a+116>>2]){break b}J[g+8>>2]=a;a=J[f+40>>2];J[g>>2]=J[f+36>>2];J[g+4>>2]=a;b=b-12|0;J[f+44>>2]=J[b+8>>2];a=J[b+4>>2];J[f+36>>2]=J[b>>2];J[f+40>>2]=a;J[b+8>>2]=J[g+8>>2];a=J[g+4>>2];J[b>>2]=J[g>>2];J[b+4>>2]=a;a=J[f+32>>2];if(M[J[f+44>>2]+116>>2]>=M[a+116>>2]){break b}J[g+8>>2]=a;a=J[f+28>>2];J[g>>2]=J[f+24>>2];J[g+4>>2]=a;J[f+32>>2]=J[f+44>>2];a=J[f+40>>2];J[f+24>>2]=J[f+36>>2];J[f+28>>2]=a;J[f+44>>2]=J[g+8>>2];a=J[g+4>>2];J[f+36>>2]=J[g>>2];J[f+40>>2]=a;a=J[f+20>>2];if(M[J[f+32>>2]+116>>2]>=M[a+116>>2]){break b}J[g+8>>2]=a;a=J[f+16>>2];J[g>>2]=J[f+12>>2];J[g+4>>2]=a;J[f+20>>2]=J[f+32>>2];a=J[f+28>>2];J[f+12>>2]=J[f+24>>2];J[f+16>>2]=a;J[f+32>>2]=J[g+8>>2];a=J[g+4>>2];J[f+24>>2]=J[g>>2];J[f+28>>2]=a;a=J[f+8>>2];if(M[J[f+20>>2]+116>>2]>=M[a+116>>2]){break b}J[g+8>>2]=a;a=J[f+4>>2];J[g>>2]=J[f>>2];J[g+4>>2]=a;J[f+8>>2]=J[f+20>>2];a=J[f+16>>2];J[f>>2]=J[f+12>>2];J[f+4>>2]=a;J[f+20>>2]=J[g+8>>2];a=J[g+4>>2];J[f+12>>2]=J[g>>2];J[f+16>>2]=a;break b}if((i|0)<=287){a=f+12|0;c=(b|0)==(f|0)|(b|0)==(a|0);if(e&1){if(c){break b}j=f;while(1){c=a;h=J[j+20>>2];if(M[h+116>>2]>2]+116>>2]){d=J[a>>2];l=J[a+4>>2];i=a;while(1){i:{a=j;e=J[a+4>>2];J[i>>2]=J[a>>2];J[i+4>>2]=e;J[i+8>>2]=J[a+8>>2];if((a|0)==(f|0)){a=f;break i}j=a-12|0;i=a;if(M[h+116>>2]>2]+116>>2]){continue}}break}J[a+8>>2]=h;J[a>>2]=d;J[a+4>>2]=l}j=c;a=j+12|0;if((b|0)!=(a|0)){continue}break}break b}if(c){break b}while(1){j=J[f+20>>2];if(M[j+116>>2]>2]+116>>2]){d=J[a>>2];l=J[a+4>>2];i=a;while(1){c=f;e=J[f+4>>2];J[i>>2]=J[f>>2];J[i+4>>2]=e;J[i+8>>2]=J[f+8>>2];f=f-12|0;i=c;if(M[j+116>>2]>2]+116>>2]){continue}break}J[i+8>>2]=j;J[i>>2]=d;J[i+4>>2]=l}f=a;a=f+12|0;if((b|0)!=(a|0)){continue}break}break b}if(!d){if((b|0)==(f|0)){break b}d=b;if((b|0)!=(f|0)){o=Ui-16|0;q=b-f|0;t=(q|0)/12|0;if(!((q|0)<13|q>>>0<24)){r=t-2>>>1|0;a=r;while(1){l=a;j:{if((a|0)>(r|0)){break j}b=P(a,12)+f|0;c=a<<1;e=c|1;a=P(e,12)+f|0;c=c+2|0;if((c|0)<(t|0)){i=c;c=M[J[a+8>>2]+116>>2]>2]+116>>2];e=c?i:e;a=(c?12:0)+a|0}p=J[b+8>>2];if(M[J[a+8>>2]+116>>2]>2]){break j}i=J[b>>2];h=J[b+4>>2];while(1){k:{c=a;j=J[a+4>>2];J[b>>2]=J[a>>2];J[b+4>>2]=j;J[b+8>>2]=J[a+8>>2];if((e|0)>(r|0)){break k}b=e<<1;e=b|1;a=P(e,12)+f|0;b=b+2|0;if((b|0)<(t|0)){j=b;b=M[J[a+8>>2]+116>>2]>2]+116>>2];e=b?j:e;a=(b?12:0)+a|0}b=c;if(M[J[a+8>>2]+116>>2]>=M[p+116>>2]){continue}}break}J[c+8>>2]=p;J[c>>2]=i;J[c+4>>2]=h}a=l-1|0;if((l|0)>0){continue}break}}if((q|0)>=13){a=(q>>>0)/12|0;while(1){J[o+8>>2]=J[f+8>>2];b=J[f+4>>2];J[o>>2]=J[f>>2];J[o+4>>2]=b;l=a;j=a-2>>>1|0;e=0;b=f;while(1){i=e<<1;c=i|1;h=P(e,12)+b|0;a=h+12|0;e=i+2|0;l:{if((e|0)>=(l|0)){e=c;break l}i=c;c=M[J[h+20>>2]+116>>2]>2]+116>>2];e=c?e:i;a=c?h+24|0:a}c=J[a+4>>2];J[b>>2]=J[a>>2];J[b+4>>2]=c;J[b+8>>2]=J[a+8>>2];b=a;if((e|0)<=(j|0)){continue}break}d=d-12|0;m:{if((a|0)==(d|0)){b=J[o+4>>2];J[a>>2]=J[o>>2];J[a+4>>2]=b;J[a+8>>2]=J[o+8>>2];break m}b=J[d+4>>2];J[a>>2]=J[d>>2];J[a+4>>2]=b;J[a+8>>2]=J[d+8>>2];b=J[o+4>>2];J[d>>2]=J[o>>2];J[d+4>>2]=b;J[d+8>>2]=J[o+8>>2];b=(a-f|0)+12|0;if((b|0)<13){break m}b=((b>>>0)/12|0)-2>>>1|0;c=P(b,12)+f|0;p=J[a+8>>2];if(M[J[c+8>>2]+116>>2]>=M[p+116>>2]){break m}e=J[a>>2];h=J[a+4>>2];while(1){n:{i=c;j=J[i+4>>2];J[a>>2]=J[i>>2];J[a+4>>2]=j;J[a+8>>2]=J[i+8>>2];if(!b){break n}a=i;b=b-1>>>1|0;c=P(b,12)+f|0;if(M[J[c+8>>2]+116>>2]>2]){continue}}break}J[i+8>>2]=p;J[i>>2]=e;J[i+4>>2]=h}a=l-1|0;if((l|0)>2){continue}break}}}break b}h=P(a>>>1|0,12)+f|0;l=J[J[u>>2]+116>>2];o:{if(i>>>0>=1537){a=J[h+8>>2];i=J[a+116>>2];p:{if(i>>>0>=M[J[f+8>>2]+116>>2]){if(i>>>0<=l>>>0){break p}J[g+8>>2]=a;a=J[h+4>>2];J[g>>2]=J[h>>2];J[g+4>>2]=a;J[h+8>>2]=J[k+8>>2];a=J[k+4>>2];J[h>>2]=J[k>>2];J[h+4>>2]=a;J[k+8>>2]=J[g+8>>2];a=J[g+4>>2];J[k>>2]=J[g>>2];J[k+4>>2]=a;if(M[J[h+8>>2]+116>>2]>=M[J[f+8>>2]+116>>2]){break p}J[g+8>>2]=J[f+8>>2];a=J[f+4>>2];J[g>>2]=J[f>>2];J[g+4>>2]=a;J[f+8>>2]=J[h+8>>2];a=J[h+4>>2];J[f>>2]=J[h>>2];J[f+4>>2]=a;J[h+8>>2]=J[g+8>>2];a=J[g+4>>2];J[h>>2]=J[g>>2];J[h+4>>2]=a;break p}if(i>>>0>l>>>0){J[g+8>>2]=J[f+8>>2];a=J[f+4>>2];J[g>>2]=J[f>>2];J[g+4>>2]=a;J[f+8>>2]=J[k+8>>2];a=J[k+4>>2];J[f>>2]=J[k>>2];J[f+4>>2]=a;J[k+8>>2]=J[g+8>>2];a=J[g+4>>2];J[k>>2]=J[g>>2];J[k+4>>2]=a;break p}J[g+8>>2]=J[f+8>>2];a=J[f+4>>2];J[g>>2]=J[f>>2];J[g+4>>2]=a;J[f+8>>2]=J[h+8>>2];a=J[h+4>>2];J[f>>2]=J[h>>2];J[f+4>>2]=a;J[h+8>>2]=J[g+8>>2];a=J[g+4>>2];J[h>>2]=J[g>>2];J[h+4>>2]=a;if(M[J[u>>2]+116>>2]>=M[J[h+8>>2]+116>>2]){break p}J[g+8>>2]=J[h+8>>2];a=J[h+4>>2];J[g>>2]=J[h>>2];J[g+4>>2]=a;J[h+8>>2]=J[k+8>>2];a=J[k+4>>2];J[h>>2]=J[k>>2];J[h+4>>2]=a;J[k+8>>2]=J[g+8>>2];a=J[g+4>>2];J[k>>2]=J[g>>2];J[k+4>>2]=a}i=J[J[t>>2]+116>>2];j=h-12|0;a=J[J[j+8>>2]+116>>2];q:{if(a>>>0>=M[J[f+20>>2]+116>>2]){if(a>>>0<=i>>>0){break q}J[g+8>>2]=J[j+8>>2];a=J[j+4>>2];J[g>>2]=J[j>>2];J[g+4>>2]=a;J[j+8>>2]=J[n+8>>2];a=J[n+4>>2];J[j>>2]=J[n>>2];J[j+4>>2]=a;J[n+8>>2]=J[g+8>>2];a=J[g+4>>2];J[n>>2]=J[g>>2];J[n+4>>2]=a;if(M[J[j+8>>2]+116>>2]>=M[J[f+20>>2]+116>>2]){break q}J[g+8>>2]=J[f+20>>2];a=J[f+16>>2];J[g>>2]=J[f+12>>2];J[g+4>>2]=a;J[f+20>>2]=J[j+8>>2];a=J[j+4>>2];J[f+12>>2]=J[j>>2];J[f+16>>2]=a;J[j+8>>2]=J[g+8>>2];a=J[g+4>>2];J[j>>2]=J[g>>2];J[j+4>>2]=a;break q}if(a>>>0>i>>>0){J[g+8>>2]=J[f+20>>2];a=J[f+16>>2];J[g>>2]=J[f+12>>2];J[g+4>>2]=a;J[f+20>>2]=J[n+8>>2];a=J[n+4>>2];J[f+12>>2]=J[n>>2];J[f+16>>2]=a;J[n+8>>2]=J[g+8>>2];a=J[g+4>>2];J[n>>2]=J[g>>2];J[n+4>>2]=a;break q}J[g+8>>2]=J[f+20>>2];a=J[f+16>>2];J[g>>2]=J[f+12>>2];J[g+4>>2]=a;J[f+20>>2]=J[j+8>>2];a=J[j+4>>2];J[f+12>>2]=J[j>>2];J[f+16>>2]=a;J[j+8>>2]=J[g+8>>2];a=J[g+4>>2];J[j>>2]=J[g>>2];J[j+4>>2]=a;if(M[J[t>>2]+116>>2]>=M[J[j+8>>2]+116>>2]){break q}J[g+8>>2]=J[j+8>>2];a=J[j+4>>2];J[g>>2]=J[j>>2];J[g+4>>2]=a;J[j+8>>2]=J[n+8>>2];a=J[n+4>>2];J[j>>2]=J[n>>2];J[j+4>>2]=a;J[n+8>>2]=J[g+8>>2];a=J[g+4>>2];J[n>>2]=J[g>>2];J[n+4>>2]=a}l=J[J[o>>2]+116>>2];a=J[h+20>>2];i=J[a+116>>2];r:{if(i>>>0>=M[J[f+32>>2]+116>>2]){if(i>>>0<=l>>>0){break r}J[g+8>>2]=a;a=J[h+16>>2];J[g>>2]=J[h+12>>2];J[g+4>>2]=a;J[h+20>>2]=J[m+8>>2];a=J[m+4>>2];J[h+12>>2]=J[m>>2];J[h+16>>2]=a;J[m+8>>2]=J[g+8>>2];a=J[g+4>>2];J[m>>2]=J[g>>2];J[m+4>>2]=a;if(M[J[h+20>>2]+116>>2]>=M[J[f+32>>2]+116>>2]){break r}J[g+8>>2]=J[f+32>>2];a=J[f+28>>2];J[g>>2]=J[f+24>>2];J[g+4>>2]=a;J[f+32>>2]=J[h+20>>2];a=J[h+16>>2];J[f+24>>2]=J[h+12>>2];J[f+28>>2]=a;J[h+20>>2]=J[g+8>>2];a=J[g+4>>2];J[h+12>>2]=J[g>>2];J[h+16>>2]=a;break r}if(i>>>0>l>>>0){J[g+8>>2]=J[f+32>>2];a=J[f+28>>2];J[g>>2]=J[f+24>>2];J[g+4>>2]=a;J[f+32>>2]=J[m+8>>2];a=J[m+4>>2];J[f+24>>2]=J[m>>2];J[f+28>>2]=a;J[m+8>>2]=J[g+8>>2];a=J[g+4>>2];J[m>>2]=J[g>>2];J[m+4>>2]=a;break r}J[g+8>>2]=J[f+32>>2];a=J[f+28>>2];J[g>>2]=J[f+24>>2];J[g+4>>2]=a;J[f+32>>2]=J[h+20>>2];a=J[h+16>>2];J[f+24>>2]=J[h+12>>2];J[f+28>>2]=a;J[h+20>>2]=J[g+8>>2];a=J[g+4>>2];J[h+12>>2]=J[g>>2];J[h+16>>2]=a;if(M[J[o>>2]+116>>2]>=M[J[h+20>>2]+116>>2]){break r}J[g+8>>2]=J[h+20>>2];a=J[h+16>>2];J[g>>2]=J[h+12>>2];J[g+4>>2]=a;J[h+20>>2]=J[m+8>>2];a=J[m+4>>2];J[h+12>>2]=J[m>>2];J[h+16>>2]=a;J[m+8>>2]=J[g+8>>2];a=J[g+4>>2];J[m>>2]=J[g>>2];J[m+4>>2]=a}l=J[J[h+20>>2]+116>>2];a=J[h+8>>2];i=J[a+116>>2];s:{if(i>>>0>=M[J[j+8>>2]+116>>2]){if(i>>>0<=l>>>0){break s}J[g+8>>2]=a;a=J[h+4>>2];J[g>>2]=J[h>>2];J[g+4>>2]=a;J[h+8>>2]=J[h+20>>2];a=J[h+16>>2];J[h>>2]=J[h+12>>2];J[h+4>>2]=a;J[h+20>>2]=J[g+8>>2];a=J[g+4>>2];J[h+12>>2]=J[g>>2];J[h+16>>2]=a;if(M[J[h+8>>2]+116>>2]>=M[J[j+8>>2]+116>>2]){break s}J[g+8>>2]=J[j+8>>2];a=J[j+4>>2];J[g>>2]=J[j>>2];J[g+4>>2]=a;J[j+8>>2]=J[h+8>>2];a=J[h+4>>2];J[j>>2]=J[h>>2];J[j+4>>2]=a;J[h+8>>2]=J[g+8>>2];a=J[g+4>>2];J[h>>2]=J[g>>2];J[h+4>>2]=a;break s}if(i>>>0>l>>>0){J[g+8>>2]=J[j+8>>2];a=J[j+4>>2];J[g>>2]=J[j>>2];J[g+4>>2]=a;J[j+8>>2]=J[h+20>>2];a=J[h+16>>2];J[j>>2]=J[h+12>>2];J[j+4>>2]=a;J[h+20>>2]=J[g+8>>2];a=J[g+4>>2];J[h+12>>2]=J[g>>2];J[h+16>>2]=a;break s}J[g+8>>2]=J[j+8>>2];a=J[j+4>>2];J[g>>2]=J[j>>2];J[g+4>>2]=a;J[j+8>>2]=J[h+8>>2];a=J[h+4>>2];J[j>>2]=J[h>>2];J[j+4>>2]=a;J[h+8>>2]=J[g+8>>2];a=J[g+4>>2];J[h>>2]=J[g>>2];J[h+4>>2]=a;if(M[J[h+20>>2]+116>>2]>=M[J[h+8>>2]+116>>2]){break s}J[g+8>>2]=J[h+8>>2];a=J[h+4>>2];J[g>>2]=J[h>>2];J[g+4>>2]=a;J[h+8>>2]=J[h+20>>2];a=J[h+16>>2];J[h>>2]=J[h+12>>2];J[h+4>>2]=a;J[h+20>>2]=J[g+8>>2];a=J[g+4>>2];J[h+12>>2]=J[g>>2];J[h+16>>2]=a}J[g+8>>2]=J[f+8>>2];a=J[f+4>>2];J[g>>2]=J[f>>2];J[g+4>>2]=a;J[f+8>>2]=J[h+8>>2];a=J[h+4>>2];J[f>>2]=J[h>>2];J[f+4>>2]=a;J[h+8>>2]=J[g+8>>2];a=J[g+4>>2];J[h>>2]=J[g>>2];J[h+4>>2]=a;break o}a=J[f+8>>2];i=J[a+116>>2];if(i>>>0>=M[J[h+8>>2]+116>>2]){if(i>>>0<=l>>>0){break o}J[g+8>>2]=a;a=J[f+4>>2];J[g>>2]=J[f>>2];J[g+4>>2]=a;J[f+8>>2]=J[k+8>>2];a=J[k+4>>2];J[f>>2]=J[k>>2];J[f+4>>2]=a;J[k+8>>2]=J[g+8>>2];a=J[g+4>>2];J[k>>2]=J[g>>2];J[k+4>>2]=a;if(M[J[f+8>>2]+116>>2]>=M[J[h+8>>2]+116>>2]){break o}J[g+8>>2]=J[h+8>>2];a=J[h+4>>2];J[g>>2]=J[h>>2];J[g+4>>2]=a;J[h+8>>2]=J[f+8>>2];a=J[f+4>>2];J[h>>2]=J[f>>2];J[h+4>>2]=a;J[f+8>>2]=J[g+8>>2];a=J[g+4>>2];J[f>>2]=J[g>>2];J[f+4>>2]=a;break o}if(i>>>0>l>>>0){J[g+8>>2]=J[h+8>>2];a=J[h+4>>2];J[g>>2]=J[h>>2];J[g+4>>2]=a;J[h+8>>2]=J[k+8>>2];a=J[k+4>>2];J[h>>2]=J[k>>2];J[h+4>>2]=a;J[k+8>>2]=J[g+8>>2];a=J[g+4>>2];J[k>>2]=J[g>>2];J[k+4>>2]=a;break o}J[g+8>>2]=J[h+8>>2];a=J[h+4>>2];J[g>>2]=J[h>>2];J[g+4>>2]=a;J[h+8>>2]=J[f+8>>2];a=J[f+4>>2];J[h>>2]=J[f>>2];J[h+4>>2]=a;J[f+8>>2]=J[g+8>>2];a=J[g+4>>2];J[f>>2]=J[g>>2];J[f+4>>2]=a;a=J[f+8>>2];if(M[J[u>>2]+116>>2]>=M[a+116>>2]){break o}J[g+8>>2]=a;a=J[f+4>>2];J[g>>2]=J[f>>2];J[g+4>>2]=a;J[f+8>>2]=J[k+8>>2];a=J[k+4>>2];J[f>>2]=J[k>>2];J[f+4>>2]=a;J[k+8>>2]=J[g+8>>2];a=J[g+4>>2];J[k>>2]=J[g>>2];J[k+4>>2]=a}d=d-1|0;v=e&1;if(v){s=J[f+8>>2];j=J[s+116>>2];break c}s=J[f+8>>2];j=J[s+116>>2];if(j>>>0>M[J[f-4>>2]+116>>2]){break c}i=f;t:{if(M[J[u>>2]+116>>2]>j>>>0){while(1){e=J[i+20>>2];a=i+12|0;i=a;if(M[e+116>>2]<=j>>>0){continue}break t}}while(1){a=i+12|0;if(b>>>0<=a>>>0){break t}e=J[i+20>>2];i=a;if(M[e+116>>2]<=j>>>0){continue}break}}i=b;if(i>>>0>a>>>0){while(1){e=i-4|0;i=i-12|0;if(M[J[e>>2]+116>>2]>j>>>0){continue}break}}l=J[f>>2];h=J[f+4>>2];if(a>>>0>>0){while(1){J[g+8>>2]=J[a+8>>2];e=J[a+4>>2];J[g>>2]=J[a>>2];J[g+4>>2]=e;J[a+8>>2]=J[i+8>>2];e=J[i+4>>2];J[a>>2]=J[i>>2];J[a+4>>2]=e;J[i+8>>2]=J[g+8>>2];e=J[g+4>>2];J[i>>2]=J[g>>2];J[i+4>>2]=e;p=J[s+116>>2];while(1){j=J[a+20>>2];e=a+12|0;a=e;if(p>>>0>=M[j+116>>2]){continue}break}a=i;while(1){j=a-4|0;i=a-12|0;a=i;if(p>>>0>2]+116>>2]){continue}break}a=e;if(i>>>0>a>>>0){continue}break}}i=a-12|0;if((i|0)!=(f|0)){e=J[i+4>>2];J[f>>2]=J[i>>2];J[f+4>>2]=e;J[f+8>>2]=J[i+8>>2]}J[i>>2]=l;J[i+4>>2]=h;J[a-4>>2]=s;e=0;continue}_v(f,f+12|0,f+24|0,b-12|0);break b}p=J[f>>2];w=J[f+4>>2];l=f;while(1){a=l;l=a+12|0;if(M[J[a+20>>2]+116>>2]>>0){continue}break}i=b;u:{if((a|0)==(f|0)){while(1){if(i>>>0<=l>>>0){h=i;break u}a=i-4|0;h=i-12|0;i=h;if(M[J[a>>2]+116>>2]>=j>>>0){continue}break u}}while(1){a=i-4|0;h=i-12|0;i=h;if(M[J[a>>2]+116>>2]>=j>>>0){continue}break}}a=l;i=h;if(a>>>0>>0){while(1){J[g+8>>2]=J[a+8>>2];j=J[a+4>>2];J[g>>2]=J[a>>2];J[g+4>>2]=j;J[a+8>>2]=J[i+8>>2];j=J[i+4>>2];J[a>>2]=J[i>>2];J[a+4>>2]=j;J[i+8>>2]=J[g+8>>2];j=J[g+4>>2];J[i>>2]=J[g>>2];J[i+4>>2]=j;q=J[s+116>>2];while(1){r=J[a+20>>2];j=a+12|0;a=j;if(M[r+116>>2]>>0){continue}break}a=i;while(1){r=a-4|0;i=a-12|0;a=i;if(M[J[r>>2]+116>>2]>=q>>>0){continue}break}a=j;if(i>>>0>a>>>0){continue}break}}i=a-12|0;if((i|0)!=(f|0)){j=J[i+4>>2];J[f>>2]=J[i>>2];J[f+4>>2]=j;J[f+8>>2]=J[i+8>>2]}J[i>>2]=p;J[i+4>>2]=w;J[a-4>>2]=s;if(h>>>0<=l>>>0){l=oU(f,i);if(oU(a,b)){b=i;a=f;if(!l){continue a}break b}if(l){continue}}PF(f,i,c,d,v);e=0;continue}break}break}Ui=g+16|0}function oS(a,b,c,d,e,f){var g=0,h=0,i=0,j=0,k=0,l=0,m=0,n=0,o=0,p=0,q=0,r=0,s=0,t=0,u=0,v=0,w=0,x=0,y=0,z=0,A=0,C=0,D=0,E=0;j=Ui-1824|0;Ui=j;ij(j+80|0,0,704);J[248826]=0;k=c+1|0;n=ra(2130,k|0)|0;g=J[248826];J[248826]=0;h=-1;a:{b:{if(!g){break b}i=J[248827];if(!i){break b}h=J[g>>2]==(j+1820|0)?J[g+4>>2]:0;if(!h){break a}Vi=i}g=Vi;c:{if((h|0)==1){break c}J[j+64>>2]=n;H[hj(n,b,c)+c|0]=10;J[248826]=0;J[j+68>>2]=0;J[j+72>>2]=k;J[j+76>>2]=a;J[j+60>>2]=e;J[j+56>>2]=d;o=j+752|0;p=j+760|0;m=j+756|0;la(2131,128,16,o|0,p|0,m|0);g=J[248826];J[248826]=0;h=-1;d:{if(!g){break d}i=J[248827];if(!i){break d}h=J[g>>2]==(j+1820|0)?J[g+4>>2]:0;if(!h){break a}Vi=i}t=j+764|0;A=j+76|0;y=j+60|0;l=j+68|0;r=j+72|0;q=j- -64|0;if((h|0)!=1){C=j+780|0;s=j+768|0;if(H[j+780|0]&1){J[248826]=0;ca(2132,151729,54052,501,2284);g=J[248826];J[248826]=0;e:{if(!g){break e}i=J[248827];if(!i){break e}if(!(J[g>>2]==(j+1820|0)?J[g+4>>2]:0)){break a}Vi=i}g=Vi;break c}J[248826]=0;u=j+772|0;la(2131,256,1,s|0,j+776|0,u|0);g=J[248826];J[248826]=0;h=-1;f:{if(!g){break f}i=J[248827];if(!i){break f}h=J[g>>2]==(j+1820|0)?J[g+4>>2]:0;if(!h){break a}Vi=i}if((h|0)!=1){J[j+748>>2]=1;z=j+80|0;a=z;J[a+4>>2]=1;J[a>>2]=j+1820;v=j+748|0;g=0}else{g=Vi}}else{g=Vi}}g:while(1){h:{i:{if(g){a=g;c=J[q>>2];if(c){break i}break h}k=J[r>>2];J[248826]=0;c=-1;n=ra(2130,((k|0)<0?-1:k)|0)|0;g=J[248826];J[248826]=0;j:{if(!g){break j}i=J[248827];if(!i){break j}c=J[g>>2]==(j+1820|0)?J[g+4>>2]:0;if(!c){break a}Vi=i}g=Vi;if((c|0)==1){continue}a=k-1|0;D=(a|0)>0?a:0;w=j+236|0;while(1){e=J[q>>2];x=J[v>>2];d=1;h=J[l>>2];c=h;while(1){g=0;while(1){b=g;k:{if((c|0)>=(k|0)){a=0;break k}h=c+1|0;J[l>>2]=h;a=c+e|0;c=h;a=H[a|0];if((a|0)!=13){break k}while(1){if((h|0)==(k|0)){h=k;c=h;a=0;break k}c=h+1|0;J[l>>2]=c;a=e+h|0;h=c;a=H[a|0];if((a|0)==13){continue}break}}g=1;l:{m:{n:{if(d&1){d=0;if((a|0)==35|(a|0)==59){continue}if((a|0)==10){break n}break m}if((a|0)!=10){break m}}d=1;x=x+1|0;J[v>>2]=x;break l}d=0;if(b&1){continue}}break}J[248826]=0;E=ra(2133,a|0)|0;g=J[248826];J[248826]=0;b=-1;o:{if(!g){break o}i=J[248827];if(!i){break o}b=J[g>>2]==(j+1820|0)?J[g+4>>2]:0;if(!b){break a}Vi=i}g=Vi;if((b|0)==1){continue g}if(E){continue}break}if(!(!a|(c|0)<=0)){b=c-1|0;J[l>>2]=b;H[b+e|0]=a;k=J[r>>2];h=J[l>>2]}p:{q:{r:{s:{if((h|0)<(k|0)){a=J[q>>2];J[l>>2]=h+1;b=a+h|0;a=K[b|0];if(!(!a|(h|0)<0)){J[l>>2]=h;H[b|0]=a}if((a|0)==91){J[248826]=0;qa(2134,j+56|0,91);g=J[248826];J[248826]=0;h=-1;t:{if(!g){break t}i=J[248827];if(!i){break t}h=J[g>>2]==(j+1820|0)?J[g+4>>2]:0;if(!h){break a}Vi=i}g=Vi;if((h|0)==1){continue g}J[248826]=0;Ya(2135,j+56|0,w|0,512);g=J[248826];J[248826]=0;h=-1;u:{if(!g){break u}i=J[248827];if(!i){break u}h=J[g>>2]==(j+1820|0)?J[g+4>>2]:0;if(!h){break a}Vi=i}g=Vi;if((h|0)==1){continue g}J[248826]=0;qa(2134,j+56|0,93);g=J[248826];J[248826]=0;h=-1;if(!g){break r}i=J[248827];if(!i){break r}h=J[g>>2]==(j+1820|0)?J[g+4>>2]:0;if(h){break s}break a}J[248826]=0;a=ra(2136,w|0)|0;g=J[248826];J[248826]=0;c=-1;v:{if(!g){break v}i=J[248827];if(!i){break v}c=J[g>>2]==(j+1820|0)?J[g+4>>2]:0;if(!c){break a}Vi=i}g=Vi;if((c|0)==1){continue g}b=j+784|0;hj(b,w,a);J[248826]=0;b=a+b|0;H[b|0]=46;H[b+1|0]=0;Ya(2135,j+56|0,b+1|0,1023-a|0);g=J[248826];J[248826]=0;h=-1;w:{if(!g){break w}i=J[248827];if(!i){break w}h=J[g>>2]==(j+1820|0)?J[g+4>>2]:0;if(!h){break a}Vi=i}g=Vi;if((h|0)==1){continue g}c=J[l>>2];d=J[r>>2];x:{if((c|0)>=(d|0)){break x}b=J[q>>2];while(1){h=c+1|0;J[l>>2]=h;c=K[b+c|0];if((c|0)==13){while(1){if((d|0)==(h|0)){break x}a=h+1|0;J[l>>2]=a;c=b+h|0;h=a;c=K[c|0];if((c|0)==13){continue}break}}if(!((c|0)!=32&(c|0)!=9)){c=h;if((d|0)>(h|0)){continue}break x}break}if(!c|(h|0)<=0){break x}a=h-1|0;J[l>>2]=a;H[a+b|0]=c}J[248826]=0;qa(2134,j+56|0,61);g=J[248826];J[248826]=0;h=-1;y:{if(!g){break y}i=J[248827];if(!i){break y}h=J[g>>2]==(j+1820|0)?J[g+4>>2]:0;if(!h){break a}Vi=i}g=Vi;if((h|0)==1){continue g}e=J[q>>2];a=J[r>>2];c=J[l>>2];z:{A:{if((a|0)<=(c|0)){break A}B:{while(1){h=c+1|0;J[l>>2]=h;c=K[c+e|0];if((c|0)==13){while(1){if((a|0)==(h|0)){k=0;c=a;break z}b=h+1|0;J[l>>2]=b;c=e+h|0;h=b;c=K[c|0];if((c|0)==13){continue}break}}if((c|0)!=32&(c|0)!=9){break B}c=h;if((a|0)>(h|0)){continue}break}break A}if((h|0)<=0){c=h;break A}if(!c){c=h;break A}a=h-1|0;J[l>>2]=a;H[a+e|0]=c;e=J[q>>2];a=J[r>>2];c=J[l>>2]}if((a|0)<=(c|0)){k=0;break z}h=c+1|0;J[l>>2]=h;k=H[c+e|0];if((k|0)!=13){c=h;break z}while(1){if((a|0)==(h|0)){c=a;k=0;break z}c=h+1|0;J[l>>2]=c;b=e+h|0;h=c;k=H[b|0];if((k|0)==13){continue}break}}g=0;while(1){C:{switch(k-10|0){default:H[g+n|0]=k;if((g|0)==(D|0)){a=J[v>>2];b=J[A>>2];J[248826]=0;J[j>>2]=b;J[j+4>>2]=a;ca(2137,3,99340,79863,j|0);g=J[248826];J[248826]=0;h=-1;D:{if(!g){break D}i=J[248827];if(!i){break D}h=J[g>>2]==(j+1820|0)?J[g+4>>2]:0;if(!h){break a}Vi=i}g=Vi;if((h|0)==1){continue g}J[248826]=0;qa(2138,z|0,-2);g=J[248826];J[248826]=0;E:{if(!g){break E}i=J[248827];if(!i){break E}if(!(J[g>>2]==(j+1820|0)?J[g+4>>2]:0)){break a}Vi=i}g=Vi;continue g}else{F:{if((a|0)<=(c|0)){k=0;break F}h=c+1|0;J[l>>2]=h;b=c+e|0;c=h;k=H[b|0];if((k|0)!=13){break F}while(1){if((a|0)==(h|0)){c=a;k=0;break F}c=h+1|0;J[l>>2]=c;b=e+h|0;h=c;k=H[b|0];if((k|0)==13){continue}break}}g=g+1|0;continue}case 0:case 3:break C}}break}if((c|0)>0){a=c-1|0;J[l>>2]=a;H[a+e|0]=k}H[g+n|0]=0;h=0;d=J[j+56>>2];b=n;G:{if((d|0)<=0){break G}while(1){a=J[J[y>>2]+(h<<2)>>2];J[248826]=0;b=La(2139,102549,a|0,9)|0;g=J[248826];J[248826]=0;c=-1;H:{if(!g){break H}i=J[248827];if(!i){break H}c=J[g>>2]==(j+1820|0)?J[g+4>>2]:0;if(!c){break a}Vi=i}g=Vi;if((c|0)==1){continue g}I:{if(b){break I}J[248826]=0;b=ma(2140,a|0,61)|0;g=J[248826];J[248826]=0;c=-1;J:{if(!g){break J}i=J[248827];if(!i){break J}c=J[g>>2]==(j+1820|0)?J[g+4>>2]:0;if(!c){break a}Vi=i}g=Vi;if((c|0)==1){continue g}J[248826]=0;e=b+1|0;b=ma(2140,e|0,61)|0;g=J[248826];J[248826]=0;c=-1;K:{if(!g){break K}i=J[248827];if(!i){break K}c=J[g>>2]==(j+1820|0)?J[g+4>>2]:0;if(!c){break a}Vi=i}g=Vi;if((c|0)==1){continue g}if(b){J[248826]=0;a=La(2139,j+784|0,e|0,b-e|0)|0;g=J[248826];J[248826]=0;c=-1;L:{if(!g){break L}i=J[248827];if(!i){break L}c=J[g>>2]==(j+1820|0)?J[g+4>>2]:0;if(!c){break a}Vi=i}g=Vi;if((c|0)==1){continue g}if(a){break I}b=b+1|0;break G}J[248826]=0;J[j+32>>2]=a;ca(2137,3,99340,28820,j+32|0);g=J[248826];J[248826]=0;c=-1;M:{if(!g){break M}i=J[248827];if(!i){break M}c=J[g>>2]==(j+1820|0)?J[g+4>>2]:0;if(!c){break a}Vi=i}g=Vi;if((c|0)==1){continue g}d=J[j+56>>2]}h=h+1|0;if((h|0)<(d|0)){continue}break}b=n}J[248826]=0;c=tb(2141,j+784|0)|0;a=Vi;d=c;g=J[248826];J[248826]=0;h=-1;N:{if(!g){break N}i=J[248827];if(!i){break N}h=J[g>>2]==(j+1820|0)?J[g+4>>2]:0;if(!h){break a}Vi=i}g=Vi;if((h|0)==1){continue g}O:{e=J[m>>2];c=J[o>>2];if((e|0)==(c|0)){break O}if(J[c>>2]!=(d|0)|J[c+4>>2]!=(a|0)){e=e-c>>4;g=e>>>0<=1?1:e;h=0;while(1){h=h+1|0;if((g|0)==(h|0)){break O}k=c+(h<<4)|0;if((d|0)!=J[k>>2]|(a|0)!=J[k+4>>2]){continue}break}if(e>>>0<=h>>>0){break O}}J[248826]=0;J[j+16>>2]=j+784;ca(2137,3,99340,128913,j+16|0);g=J[248826];J[248826]=0;h=-1;P:{if(!g){break P}i=J[248827];if(!i){break P}h=J[g>>2]==(j+1820|0)?J[g+4>>2]:0;if(!h){break a}Vi=i}g=Vi;if((h|0)==1){continue g}break p}J[248826]=0;c=ma(2142,j+56|0,b|0)|0;g=J[248826];J[248826]=0;h=-1;Q:{if(!g){break Q}i=J[248827];if(!i){break Q}h=J[g>>2]==(j+1820|0)?J[g+4>>2]:0;if(!h){break a}Vi=i}g=Vi;if((h|0)==1){continue g}h=J[m>>2];b=J[p>>2];if((h|0)==(b|0)){if(H[t|0]&1){J[248826]=0;ca(2132,151729,54052,501,2284);g=J[248826];J[248826]=0;R:{if(!g){break R}i=J[248827];if(!i){break R}if(!(J[g>>2]==(j+1820|0)?J[g+4>>2]:0)){break a}Vi=i}g=Vi;continue g}e=J[o>>2];J[248826]=0;la(2131,(b-e>>4)+32|0,16,o|0,p|0,m|0);g=J[248826];J[248826]=0;h=-1;S:{if(!g){break S}i=J[248827];if(!i){break S}h=J[g>>2]==(j+1820|0)?J[g+4>>2]:0;if(!h){break a}Vi=i}g=Vi;if((h|0)==1){continue g}h=J[m>>2];b=J[p>>2]}if((b|0)==(h|0)){J[248826]=0;ca(2132,112520,54052,557,53220);g=J[248826];J[248826]=0;T:{if(!g){break T}i=J[248827];if(!i){break T}if(!(J[g>>2]==(j+1820|0)?J[g+4>>2]:0)){break a}Vi=i}g=Vi;continue g}J[m>>2]=h+16;J[h+8>>2]=c;J[h>>2]=d;J[h+4>>2]=a;break p}J[248826]=0;Ba(2143,n|0);g=J[248826];J[248826]=0;h=-1;U:{if(!g){break U}i=J[248827];if(!i){break U}h=J[g>>2]==(j+1820|0)?J[g+4>>2]:0;if(!h){break a}Vi=i}g=Vi;if((h|0)==1){continue g}c=0;if(J[j+56>>2]<=0){break q}while(1){a=J[J[y>>2]+(c<<2)>>2];J[248826]=0;b=La(2139,102549,a|0,9)|0;g=J[248826];J[248826]=0;h=-1;V:{if(!g){break V}i=J[248827];if(!i){break V}h=J[g>>2]==(j+1820|0)?J[g+4>>2]:0;if(!h){break a}Vi=i}g=Vi;if((h|0)==1){continue g}W:{if(b){break W}J[248826]=0;b=ma(2140,a|0,61)|0;g=J[248826];J[248826]=0;h=-1;X:{if(!g){break X}i=J[248827];if(!i){break X}h=J[g>>2]==(j+1820|0)?J[g+4>>2]:0;if(!h){break a}Vi=i}g=Vi;if((h|0)==1){continue g}J[248826]=0;b=b+1|0;d=ma(2140,b|0,61)|0;g=J[248826];J[248826]=0;h=-1;Y:{if(!g){break Y}i=J[248827];if(!i){break Y}h=J[g>>2]==(j+1820|0)?J[g+4>>2]:0;if(!h){break a}Vi=i}g=Vi;if((h|0)==1){continue g}if(!d){J[248826]=0;J[j+48>>2]=a;ca(2137,3,99340,28820,j+48|0);g=J[248826];J[248826]=0;h=-1;Z:{if(!g){break Z}i=J[248827];if(!i){break Z}h=J[g>>2]==(j+1820|0)?J[g+4>>2]:0;if(!h){break a}Vi=i}g=Vi;if((h|0)==1){continue g}break W}J[248826]=0;b=sb(2144,b|0,d-b|0)|0;a=Vi;e=b;g=J[248826];J[248826]=0;h=-1;_:{if(!g){break _}i=J[248827];if(!i){break _}h=J[g>>2]==(j+1820|0)?J[g+4>>2]:0;if(!h){break a}Vi=i}g=Vi;if((h|0)==1){continue g}h=J[m>>2];b=J[o>>2];if((h|0)!=(b|0)){if((e|0)==J[b>>2]&(a|0)==J[b+4>>2]){break W}g=h-b>>4;n=g>>>0<=1?1:g;h=0;while(1){h=h+1|0;if((n|0)!=(h|0)){k=b+(h<<4)|0;if((e|0)!=J[k>>2]|(a|0)!=J[k+4>>2]){continue}}break}if(g>>>0>h>>>0){break W}}J[248826]=0;d=ma(2142,j+56|0,d+1|0)|0;g=J[248826];J[248826]=0;h=-1;$:{if(!g){break $}i=J[248827];if(!i){break $}h=J[g>>2]==(j+1820|0)?J[g+4>>2]:0;if(!h){break a}Vi=i}g=Vi;if((h|0)==1){continue g}h=J[m>>2];b=J[p>>2];if((h|0)==(b|0)){if(H[t|0]&1){J[248826]=0;ca(2132,151729,54052,501,2284);g=J[248826];J[248826]=0;aa:{if(!g){break aa}i=J[248827];if(!i){break aa}if(!(J[g>>2]==(j+1820|0)?J[g+4>>2]:0)){break a}Vi=i}g=Vi;continue g}h=J[o>>2];J[248826]=0;la(2131,(b-h>>4)+32|0,16,o|0,p|0,m|0);g=J[248826];J[248826]=0;h=-1;ba:{if(!g){break ba}i=J[248827];if(!i){break ba}h=J[g>>2]==(j+1820|0)?J[g+4>>2]:0;if(!h){break a}Vi=i}g=Vi;if((h|0)==1){continue g}h=J[m>>2];b=J[p>>2]}if((b|0)==(h|0)){J[248826]=0;ca(2132,112520,54052,557,53220);g=J[248826];J[248826]=0;ca:{if(!g){break ca}i=J[248827];if(!i){break ca}if(!(J[g>>2]==(j+1820|0)?J[g+4>>2]:0)){break a}Vi=i}g=Vi;continue g}J[m>>2]=h+16;J[h+8>>2]=d;J[h>>2]=e;J[h+4>>2]=a}c=c+1|0;if((c|0)>2]){continue}break}break q}Vi=i}g=Vi;if((h|0)==1){continue g}break p}J[248826]=0;a=ra(2145,32)|0;g=J[248826];J[248826]=0;c=-1;da:{if(!g){break da}i=J[248827];if(!i){break da}c=J[g>>2]==(j+1820|0)?J[g+4>>2]:0;if(!c){break a}Vi=i}g=Vi;if((c|0)==1){continue g}J[a>>2]=0;J[a+4>>2]=0;J[a+24>>2]=0;J[a+28>>2]=0;J[a+16>>2]=0;J[a+20>>2]=0;b=a+8|0;J[b>>2]=0;J[b+4>>2]=0;c=J[m>>2];d=J[o>>2];if((c|0)!=(d|0)){J[248826]=0;la(2131,c-d>>4,16,a|0,b|0,a+4|0);g=J[248826];J[248826]=0;c=-1;ea:{if(!g){break ea}i=J[248827];if(!i){break ea}c=J[g>>2]==(j+1820|0)?J[g+4>>2]:0;if(!c){break a}Vi=i}g=Vi;if((c|0)==1){continue g}e=J[m>>2];c=J[o>>2];d=e-c|0;b=J[a>>2];if(d>>>0>J[a+8>>2]-b>>>0){J[248826]=0;ca(2132,144782,54052,514,59583);g=J[248826];J[248826]=0;fa:{if(!g){break fa}i=J[248827];if(!i){break fa}if(!(J[g>>2]==(j+1820|0)?J[g+4>>2]:0)){break a}Vi=i}g=Vi;continue g}J[a+4>>2]=b+d;if((c|0)==(e|0)){J[248826]=0;ca(2132,145396,54052,487,84789);g=J[248826];J[248826]=0;ga:{if(!g){break ga}i=J[248827];if(!i){break ga}if(!(J[g>>2]==(j+1820|0)?J[g+4>>2]:0)){break a}Vi=i}g=Vi;continue g}hj(b,c,d)}b=J[u>>2];c=J[s>>2];if((b|0)!=(c|0)){if(H[a+28|0]&1){J[248826]=0;ca(2132,151729,54052,501,2284);g=J[248826];J[248826]=0;ha:{if(!g){break ha}i=J[248827];if(!i){break ha}if(!(J[g>>2]==(j+1820|0)?J[g+4>>2]:0)){break a}Vi=i}g=Vi;continue g}J[248826]=0;la(2131,b-c|0,1,a+16|0,a+24|0,a+20|0);g=J[248826];J[248826]=0;c=-1;ia:{if(!g){break ia}i=J[248827];if(!i){break ia}c=J[g>>2]==(j+1820|0)?J[g+4>>2]:0;if(!c){break a}Vi=i}g=Vi;if((c|0)==1){continue g}e=J[u>>2];c=J[s>>2];d=e-c|0;b=J[a+16>>2];if(d>>>0>J[a+24>>2]-b>>>0){J[248826]=0;ca(2132,144782,54052,514,59583);g=J[248826];J[248826]=0;ja:{if(!g){break ja}i=J[248827];if(!i){break ja}if(!(J[g>>2]==(j+1820|0)?J[g+4>>2]:0)){break a}Vi=i}g=Vi;continue g}J[a+20>>2]=b+d;if((c|0)==(e|0)){J[248826]=0;ca(2132,145396,54052,487,84789);g=J[248826];J[248826]=0;ka:{if(!g){break ka}i=J[248827];if(!i){break ka}if(!(J[g>>2]==(j+1820|0)?J[g+4>>2]:0)){break a}Vi=i}g=Vi;continue g}hj(b,c,d)}J[f>>2]=a;a=0;c=J[q>>2];if(!c){break h}break i}k=J[r>>2];continue}}J[248826]=0;Ba(2143,c|0);g=J[248826];J[248826]=0;h=-1;la:{if(!g){break la}i=J[248827];if(!i){break la}h=J[g>>2]==(j+1820|0)?J[g+4>>2]:0;if(!h){break a}Vi=i}g=Vi;if((h|0)==1){continue}}ma:{if(H[C|0]&1){break ma}b=J[s>>2];if(!b){break ma}J[248826]=0;Ba(2143,b|0);g=J[248826];J[248826]=0;h=-1;na:{if(!g){break na}i=J[248827];if(!i){break na}h=J[g>>2]==(j+1820|0)?J[g+4>>2]:0;if(!h){break a}Vi=i}g=Vi;if((h|0)==1){continue}}oa:{if(H[t|0]&1){break oa}b=J[o>>2];if(!b){break oa}J[248826]=0;Ba(2143,b|0);g=J[248826];J[248826]=0;h=-1;pa:{if(!g){break pa}i=J[248827];if(!i){break pa}h=J[g>>2]==(j+1820|0)?J[g+4>>2]:0;if(!h){break a}Vi=i}g=Vi;if((h|0)==1){continue}}break}Ui=j+1824|0;return a}ir(g,i);B()}function ox(a){var b=0,c=0,d=0,e=0,f=0,g=0,h=0,i=0;g=Ui-32|0;Ui=g;b=J[a+124>>2];pj(g+12|0,b,0,37704,155);Nk(b,2113,0);xj(b,158859);Wk(b,1,0);Nk(b,2114,0);xj(b,68765);Wk(b,1,0);Nk(b,2115,0);xj(b,67726);Wk(b,1,0);Nk(b,2116,0);xj(b,44091);Wk(b,1,0);Nk(b,2117,0);xj(b,19950);Wk(b,1,0);Nk(b,2118,0);xj(b,56548);Wk(b,1,0);Nk(b,2119,0);xj(b,53156);Wk(b,1,0);Nk(b,2120,0);xj(b,55914);Wk(b,1,0);rj(b,-10002,53156);rj(b,-1,70822);ej(b,-2,70829);gj(b,-2);f=J[b+8>>2]-J[b+12>>2]|0;iu(b,53420);d=Ui-32|0;Ui=d;c=d+12|0;pj(c,b,0,37704,676);e=Dq(53420,yj(53420));uj(b,-1);h=J[84547];i=J[b+8>>2];J[i+8>>2]=3;O[i>>3]=h|0;J[b+8>>2]=J[b+8>>2]+16;h=J[b+8>>2];J[h+8>>2]=3;O[h>>3]=e|0;J[b+8>>2]=J[b+8>>2]+16;Kj(b,-3);gj(b,-2);oj(c);Ui=d+32|0;J[84567]=e;uk(b,0,252784);mj(b,36298,4);Nk(b,1710,0);Kj(b,-3);mj(b,56234,10);Nk(b,1711,0);Kj(b,-3);mj(b,17189,8);Nk(b,1712,0);Kj(b,-3);Nk(b,1713,0);ej(b,-10002,53420);Nk(b,1714,0);ej(b,-10002,4854);Nk(b,1715,0);ej(b,-10002,106047);gj(b,-2);if(f>>4!=J[b+8>>2]-J[b+12>>2]>>4){Z(143244,41058,346,53498);B()}d=J[b+8>>2]-J[b+12>>2]|0;J[84570]=vm(b,49412,173180,252864);uk(b,55920,252912);gj(b,-2);if(d>>4!=J[b+8>>2]-J[b+12>>2]>>4){Z(143244,41102,578,55924);B()}d=J[b+8>>2]-J[b+12>>2]|0;J[215724]=vm(b,32205,173220,253280);J[215720]=vm(b,108973,173228,253328);J[215721]=vm(b,106998,173236,253424);J[215722]=vm(b,16786,173244,253520);J[215723]=vm(b,106883,173252,253584);uk(b,53139,253648);gj(b,-2);if(d>>4!=J[b+8>>2]-J[b+12>>2]>>4){Z(143244,40932,2778,53145);B()}d=J[b+8>>2]-J[b+12>>2]|0;uj(b,-10002);uk(b,17236,252944);e=J[b+8>>2];J[e+8>>2]=3;O[e>>3]=1;J[b+8>>2]=J[b+8>>2]+16;ej(b,-2,97332);e=J[b+8>>2];J[e+8>>2]=3;O[e>>3]=2;J[b+8>>2]=J[b+8>>2]+16;ej(b,-2,90577);e=J[b+8>>2];J[e+8>>2]=3;O[e>>3]=0;J[b+8>>2]=J[b+8>>2]+16;ej(b,-2,97350);gj(b,-3);if(d>>4!=J[b+8>>2]-J[b+12>>2]>>4){Z(143244,39097,1498,17333);B()}d=J[b+8>>2]-J[b+12>>2]>>4;rj(b,-10002,68765);a:{b:{c:{if((kj(b,-1)|0)==5){if((kj(b,-1)|0)!=5){break c}Fj(b,0,0);Nk(b,1720,0);Ik(b,-2,1);ej(b,-2,19533)}gj(b,-2);if((d|0)!=J[b+8>>2]-J[b+12>>2]>>4){break b}break a}Z(144366,41758,222,66163);B()}Z(143244,41758,237,66163);B()}d=J[b+8>>2]-J[b+12>>2]|0;uj(b,-10002);uk(b,44756,252832);e=J[b+8>>2];J[e+8>>2]=2;J[e>>2]=0;J[b+8>>2]=J[b+8>>2]+16;ej(b,-2,49522);gj(b,-3);if(d>>4!=J[b+8>>2]-J[b+12>>2]>>4){Z(143244,40292,200,44761);B()}d=J[b+8>>2]-J[b+12>>2]|0;uj(b,-10002);uk(b,82747,253984);gj(b,-3);if(d>>4!=J[b+8>>2]-J[b+12>>2]>>4){Z(143244,42659,150,82760);B()}d=J[b+8>>2]-J[b+12>>2]|0;uj(b,-10002);uk(b,106011,252800);gj(b,-3);if(d>>4!=J[b+8>>2]-J[b+12>>2]>>4){Z(143244,39337,208,106017);B()}d=Ui-288|0;Ui=d;ij(d+12|0,0,136);J[d+140>>2]=268435456;J[d+8>>2]=-2;e=d+148|0;if(e){hj(e,985404,140)}e=d+8|0;if(e){hj(985404,e,140)}Ui=d+288|0;uk(b,15431,254224);mj(b,91446,8);xj(b,110136);Xj(b,-3);uk(b,0,254128);uk(b,0,254624);mj(b,20302,3);Fj(b,0,0);uk(b,0,254160);Kj(b,-3);Qv(b,1066,254288);Qv(b,1042,254288);Qv(b,1054,254288);Jr(b,1066,1033);Jr(b,1042,1033);Jr(b,1054,1033);uk(b,0,254480);Qv(b,1091,254656);Qv(b,1106,254656);Jr(b,1091,1024);Jr(b,1106,1024);Jr(b,1091,1078);Jr(b,1106,1078);uk(b,0,254816);mj(b,94846,8);d=J[b+8>>2];J[d+8>>2]=3;O[d>>3]=1024;J[b+8>>2]=J[b+8>>2]+16;Xj(b,-3);uk(b,0,254256);gj(b,-2);e=J[b+8>>2];f=e-J[b+12>>2]>>4;d=Ui-16|0;Ui=d;J[e+8>>2]=3;O[e>>3]=1437217655;J[b+8>>2]=J[b+8>>2]+16;A(+(ok(b,-1)+6755399441055744));v(1)|0;e=v(0)|0;if((e|0)!=1437217655){d:{if(e){break d}if(kk(b,-1)){break d}Yk(b,-1,36031)}J[d>>2]=(e|0)==1127743488?96116:54676;fj(b,136734,d)}uk(b,14490,254016);Ui=d+16|0;gj(b,(J[b+8>>2]-J[b+12>>2]>>4^-1)+f|0);d=J[a+8>>2];e=Ui-32|0;Ui=e;f=pj(e+12|0,b,0,39523,613);uk(b,25734,173172);c=J[b+8>>2];J[c+8>>2]=3;O[c>>3]=1;J[b+8>>2]=J[b+8>>2]+16;ej(b,-2,88034);c=J[b+8>>2];J[c+8>>2]=3;O[c>>3]=16;J[b+8>>2]=J[b+8>>2]+16;ej(b,-2,87859);c=J[b+8>>2];J[c+8>>2]=3;O[c>>3]=32;J[b+8>>2]=J[b+8>>2]+16;ej(b,-2,87818);e:{if(!d){break e}if(!kp(d,0)){break e}c=J[b+8>>2];J[c+8>>2]=3;O[c>>3]=2;J[b+8>>2]=J[b+8>>2]+16;ej(b,-2,87993);c=J[b+8>>2];J[c+8>>2]=3;O[c>>3]=4;J[b+8>>2]=J[b+8>>2]+16;ej(b,-2,87952);c=J[b+8>>2];J[c+8>>2]=3;O[c>>3]=8;J[b+8>>2]=J[b+8>>2]+16;ej(b,-2,87911)}c=J[b+8>>2];J[c+8>>2]=3;O[c>>3]=0;J[b+8>>2]=J[b+8>>2]+16;ej(b,-2,86582);c=J[b+8>>2];J[c+8>>2]=3;O[c>>3]=1;J[b+8>>2]=J[b+8>>2]+16;ej(b,-2,86544);c=J[b+8>>2];J[c+8>>2]=3;O[c>>3]=2;J[b+8>>2]=J[b+8>>2]+16;ej(b,-2,86563);c=J[b+8>>2];J[c+8>>2]=3;O[c>>3]=3;J[b+8>>2]=J[b+8>>2]+16;ej(b,-2,86599);c=J[b+8>>2];J[c+8>>2]=3;O[c>>3]=4;J[b+8>>2]=J[b+8>>2]+16;ej(b,-2,96949);c=J[b+8>>2];J[c+8>>2]=3;O[c>>3]=5;J[b+8>>2]=J[b+8>>2]+16;ej(b,-2,96690);c=J[b+8>>2];J[c+8>>2]=3;O[c>>3]=6;J[b+8>>2]=J[b+8>>2]+16;ej(b,-2,92319);c=J[b+8>>2];J[c+8>>2]=3;O[c>>3]=7;J[b+8>>2]=J[b+8>>2]+16;ej(b,-2,97210);c=J[b+8>>2];J[c+8>>2]=3;O[c>>3]=0;J[b+8>>2]=J[b+8>>2]+16;ej(b,-2,90945);c=J[b+8>>2];J[c+8>>2]=3;O[c>>3]=1;J[b+8>>2]=J[b+8>>2]+16;ej(b,-2,95507);c=J[b+8>>2];J[c+8>>2]=3;O[c>>3]=2;J[b+8>>2]=J[b+8>>2]+16;ej(b,-2,90134);c=J[b+8>>2];J[c+8>>2]=3;O[c>>3]=3;J[b+8>>2]=J[b+8>>2]+16;ej(b,-2,90075);c=J[b+8>>2];J[c+8>>2]=3;O[c>>3]=4;J[b+8>>2]=J[b+8>>2]+16;ej(b,-2,89882);c=J[b+8>>2];J[c+8>>2]=3;O[c>>3]=5;J[b+8>>2]=J[b+8>>2]+16;ej(b,-2,89823);c=J[b+8>>2];J[c+8>>2]=3;O[c>>3]=6;J[b+8>>2]=J[b+8>>2]+16;ej(b,-2,101229);c=J[b+8>>2];J[c+8>>2]=3;O[c>>3]=7;J[b+8>>2]=J[b+8>>2]+16;ej(b,-2,101170);c=J[b+8>>2];J[c+8>>2]=3;O[c>>3]=8;J[b+8>>2]=J[b+8>>2]+16;ej(b,-2,100933);c=J[b+8>>2];J[c+8>>2]=3;O[c>>3]=9;J[b+8>>2]=J[b+8>>2]+16;ej(b,-2,100874);c=J[b+8>>2];J[c+8>>2]=3;O[c>>3]=10;J[b+8>>2]=J[b+8>>2]+16;ej(b,-2,94984);c=J[b+8>>2];J[c+8>>2]=3;O[c>>3]=11;J[b+8>>2]=J[b+8>>2]+16;ej(b,-2,89990);c=J[b+8>>2];J[c+8>>2]=3;O[c>>3]=12;J[b+8>>2]=J[b+8>>2]+16;ej(b,-2,89921);c=J[b+8>>2];J[c+8>>2]=3;O[c>>3]=13;J[b+8>>2]=J[b+8>>2]+16;ej(b,-2,101041);c=J[b+8>>2];J[c+8>>2]=3;O[c>>3]=14;J[b+8>>2]=J[b+8>>2]+16;ej(b,-2,100972);c=J[b+8>>2];J[c+8>>2]=3;O[c>>3]=0;J[b+8>>2]=J[b+8>>2]+16;ej(b,-2,90212);c=J[b+8>>2];J[c+8>>2]=3;O[c>>3]=1;J[b+8>>2]=J[b+8>>2]+16;ej(b,-2,88827);c=J[b+8>>2];J[c+8>>2]=3;O[c>>3]=2;J[b+8>>2]=J[b+8>>2]+16;ej(b,-2,92711);c=J[b+8>>2];J[c+8>>2]=3;O[c>>3]=3;J[b+8>>2]=J[b+8>>2]+16;ej(b,-2,90244);c=J[b+8>>2];J[c+8>>2]=3;O[c>>3]=4;J[b+8>>2]=J[b+8>>2]+16;ej(b,-2,92731);c=J[b+8>>2];J[c+8>>2]=3;O[c>>3]=5;J[b+8>>2]=J[b+8>>2]+16;ej(b,-2,92670);c=J[b+8>>2];J[c+8>>2]=3;O[c>>3]=6;J[b+8>>2]=J[b+8>>2]+16;ej(b,-2,92689);c=J[b+8>>2];J[c+8>>2]=3;O[c>>3]=7;J[b+8>>2]=J[b+8>>2]+16;ej(b,-2,88466);c=J[b+8>>2];J[c+8>>2]=3;O[c>>3]=0;J[b+8>>2]=J[b+8>>2]+16;ej(b,-2,90828);c=J[b+8>>2];J[c+8>>2]=3;O[c>>3]=1;J[b+8>>2]=J[b+8>>2]+16;ej(b,-2,90963);c=J[b+8>>2];J[c+8>>2]=3;O[c>>3]=2;J[b+8>>2]=J[b+8>>2]+16;ej(b,-2,96671);c=J[b+8>>2];J[c+8>>2]=3;O[c>>3]=3;J[b+8>>2]=J[b+8>>2]+16;ej(b,-2,90545);c=J[b+8>>2];J[c+8>>2]=3;O[c>>3]=4;J[b+8>>2]=J[b+8>>2]+16;ej(b,-2,90866);c=J[b+8>>2];J[c+8>>2]=3;O[c>>3]=5;J[b+8>>2]=J[b+8>>2]+16;ej(b,-2,90561);c=J[b+8>>2];J[c+8>>2]=3;O[c>>3]=6;J[b+8>>2]=J[b+8>>2]+16;ej(b,-2,90887);c=J[b+8>>2];J[c+8>>2]=3;O[c>>3]=7;J[b+8>>2]=J[b+8>>2]+16;ej(b,-2,86773);c=J[b+8>>2];J[c+8>>2]=3;O[c>>3]=0;J[b+8>>2]=J[b+8>>2]+16;ej(b,-2,87219);c=J[b+8>>2];J[c+8>>2]=3;O[c>>3]=1;J[b+8>>2]=J[b+8>>2]+16;ej(b,-2,93185);c=J[b+8>>2];J[c+8>>2]=3;O[c>>3]=2;J[b+8>>2]=J[b+8>>2]+16;ej(b,-2,93210);c=J[b+8>>2];J[c+8>>2]=3;O[c>>3]=0;J[b+8>>2]=J[b+8>>2]+16;ej(b,-2,98721);c=J[b+8>>2];J[c+8>>2]=3;O[c>>3]=1;J[b+8>>2]=J[b+8>>2]+16;ej(b,-2,85213);c=J[b+8>>2];J[c+8>>2]=3;O[c>>3]=2;J[b+8>>2]=J[b+8>>2]+16;ej(b,-2,90908);c=J[b+8>>2];J[c+8>>2]=3;O[c>>3]=3;J[b+8>>2]=J[b+8>>2]+16;ej(b,-2,98737);c=J[b+8>>2];J[c+8>>2]=3;O[c>>3]=0;J[b+8>>2]=J[b+8>>2]+16;ej(b,-2,87701);c=J[b+8>>2];J[c+8>>2]=3;O[c>>3]=1;J[b+8>>2]=J[b+8>>2]+16;ej(b,-2,86616);c=J[b+8>>2];J[c+8>>2]=3;O[c>>3]=2;J[b+8>>2]=J[b+8>>2]+16;ej(b,-2,90604);c=J[b+8>>2];J[c+8>>2]=3;O[c>>3]=3;J[b+8>>2]=J[b+8>>2]+16;ej(b,-2,86639);c=J[b+8>>2];J[c+8>>2]=3;O[c>>3]=4;J[b+8>>2]=J[b+8>>2]+16;ej(b,-2,90626);c=J[b+8>>2];J[c+8>>2]=3;O[c>>3]=5;J[b+8>>2]=J[b+8>>2]+16;ej(b,-2,86677);c=J[b+8>>2];J[c+8>>2]=3;O[c>>3]=6;J[b+8>>2]=J[b+8>>2]+16;ej(b,-2,90663);c=J[b+8>>2];J[c+8>>2]=3;O[c>>3]=1;J[b+8>>2]=J[b+8>>2]+16;ej(b,-2,95793);c=J[b+8>>2];J[c+8>>2]=3;O[c>>3]=2;J[b+8>>2]=J[b+8>>2]+16;ej(b,-2,88845);c=J[b+8>>2];J[c+8>>2]=3;O[c>>3]=4;J[b+8>>2]=J[b+8>>2]+16;ej(b,-2,96348);c=J[b+8>>2];J[c+8>>2]=3;O[c>>3]=8;J[b+8>>2]=J[b+8>>2]+16;ej(b,-2,86401);c=J[b+8>>2];J[c+8>>2]=3;O[c>>3]=16;J[b+8>>2]=J[b+8>>2]+16;ej(b,-2,90050);c=J[b+8>>2];J[c+8>>2]=3;O[c>>3]=0;J[b+8>>2]=J[b+8>>2]+16;ej(b,-2,90394);c=J[b+8>>2];J[c+8>>2]=3;O[c>>3]=1;J[b+8>>2]=J[b+8>>2]+16;ej(b,-2,96278);c=J[b+8>>2];J[c+8>>2]=3;O[c>>3]=2;J[b+8>>2]=J[b+8>>2]+16;ej(b,-2,88415);c=J[b+8>>2];J[c+8>>2]=3;O[c>>3]=3;J[b+8>>2]=J[b+8>>2]+16;ej(b,-2,88395);c=J[b+8>>2];J[c+8>>2]=3;O[c>>3]=0;J[b+8>>2]=J[b+8>>2]+16;ej(b,-2,87724);c=J[b+8>>2];J[c+8>>2]=3;O[c>>3]=1;J[b+8>>2]=J[b+8>>2]+16;ej(b,-2,90844);c=J[b+8>>2];J[c+8>>2]=3;O[c>>3]=2;J[b+8>>2]=J[b+8>>2]+16;ej(b,-2,85058);c=J[b+8>>2];J[c+8>>2]=3;O[c>>3]=3;J[b+8>>2]=J[b+8>>2]+16;ej(b,-2,98862);c=J[b+8>>2];J[c+8>>2]=3;O[c>>3]=4;J[b+8>>2]=J[b+8>>2]+16;ej(b,-2,89310);c=J[b+8>>2];J[c+8>>2]=3;O[c>>3]=6;J[b+8>>2]=J[b+8>>2]+16;ej(b,-2,93435);c=J[b+8>>2];J[c+8>>2]=3;O[c>>3]=7;J[b+8>>2]=J[b+8>>2]+16;ej(b,-2,92480);f:{if(!d){break f}if(Zi[J[79453]](d,0)|0){c=J[b+8>>2];J[c+8>>2]=3;O[c>>3]=0;J[b+8>>2]=J[b+8>>2]+16;ej(b,-2,96618)}if(Zi[J[79453]](d,1)|0){c=J[b+8>>2];J[c+8>>2]=3;O[c>>3]=1;J[b+8>>2]=J[b+8>>2]+16;ej(b,-2,101090)}if(Zi[J[79453]](d,2)|0){c=J[b+8>>2];J[c+8>>2]=3;O[c>>3]=2;J[b+8>>2]=J[b+8>>2]+16;ej(b,-2,99354)}if(Zi[J[79453]](d,3)|0){c=J[b+8>>2];J[c+8>>2]=3;O[c>>3]=3;J[b+8>>2]=J[b+8>>2]+16;ej(b,-2,101376)}if(Zi[J[79453]](d,4)|0){c=J[b+8>>2];J[c+8>>2]=3;O[c>>3]=4;J[b+8>>2]=J[b+8>>2]+16;ej(b,-2,90743)}if(Zi[J[79453]](d,5)|0){c=J[b+8>>2];J[c+8>>2]=3;O[c>>3]=5;J[b+8>>2]=J[b+8>>2]+16;ej(b,-2,90768)}if(Zi[J[79453]](d,8)|0){c=J[b+8>>2];J[c+8>>2]=3;O[c>>3]=8;J[b+8>>2]=J[b+8>>2]+16;ej(b,-2,110251)}if(Zi[J[79453]](d,9)|0){c=J[b+8>>2];J[c+8>>2]=3;O[c>>3]=9;J[b+8>>2]=J[b+8>>2]+16;ej(b,-2,110186)}if(Zi[J[79453]](d,10)|0){c=J[b+8>>2];J[c+8>>2]=3;O[c>>3]=10;J[b+8>>2]=J[b+8>>2]+16;ej(b,-2,110283)}if(Zi[J[79453]](d,11)|0){c=J[b+8>>2];J[c+8>>2]=3;O[c>>3]=11;J[b+8>>2]=J[b+8>>2]+16;ej(b,-2,110218)}if(Zi[J[79453]](d,12)|0){c=J[b+8>>2];J[c+8>>2]=3;O[c>>3]=12;J[b+8>>2]=J[b+8>>2]+16;ej(b,-2,110316)}if(Zi[J[79453]](d,13)|0){c=J[b+8>>2];J[c+8>>2]=3;O[c>>3]=13;J[b+8>>2]=J[b+8>>2]+16;ej(b,-2,109282)}if(Zi[J[79453]](d,14)|0){c=J[b+8>>2];J[c+8>>2]=3;O[c>>3]=14;J[b+8>>2]=J[b+8>>2]+16;ej(b,-2,109304)}if(Zi[J[79453]](d,15)|0){c=J[b+8>>2];J[c+8>>2]=3;O[c>>3]=15;J[b+8>>2]=J[b+8>>2]+16;ej(b,-2,109327)}if(Zi[J[79453]](d,16)|0){c=J[b+8>>2];J[c+8>>2]=3;O[c>>3]=16;J[b+8>>2]=J[b+8>>2]+16;ej(b,-2,106891)}if(Zi[J[79453]](d,17)|0){c=J[b+8>>2];J[c+8>>2]=3;O[c>>3]=17;J[b+8>>2]=J[b+8>>2]+16;ej(b,-2,110340)}if(Zi[J[79453]](d,18)|0){c=J[b+8>>2];J[c+8>>2]=3;O[c>>3]=18;J[b+8>>2]=J[b+8>>2]+16;ej(b,-2,109016)}if(Zi[J[79453]](d,19)|0){c=J[b+8>>2];J[c+8>>2]=3;O[c>>3]=19;J[b+8>>2]=J[b+8>>2]+16;ej(b,-2,107168)}if(Zi[J[79453]](d,20)|0){c=J[b+8>>2];J[c+8>>2]=3;O[c>>3]=20;J[b+8>>2]=J[b+8>>2]+16;ej(b,-2,106696)}if(Zi[J[79453]](d,21)|0){c=J[b+8>>2];J[c+8>>2]=3;O[c>>3]=21;J[b+8>>2]=J[b+8>>2]+16;ej(b,-2,103457)}if(Zi[J[79453]](d,22)|0){c=J[b+8>>2];J[c+8>>2]=3;O[c>>3]=22;J[b+8>>2]=J[b+8>>2]+16;ej(b,-2,94611)}if(Zi[J[79453]](d,23)|0){c=J[b+8>>2];J[c+8>>2]=3;O[c>>3]=23;J[b+8>>2]=J[b+8>>2]+16;ej(b,-2,94697)}if(Zi[J[79453]](d,24)|0){c=J[b+8>>2];J[c+8>>2]=3;O[c>>3]=24;J[b+8>>2]=J[b+8>>2]+16;ej(b,-2,94633)}if(Zi[J[79453]](d,25)|0){c=J[b+8>>2];J[c+8>>2]=3;O[c>>3]=25;J[b+8>>2]=J[b+8>>2]+16;ej(b,-2,94719)}if(Zi[J[79453]](d,26)|0){c=J[b+8>>2];J[c+8>>2]=3;O[c>>3]=26;J[b+8>>2]=J[b+8>>2]+16;ej(b,-2,94570)}if(Zi[J[79453]](d,27)|0){c=J[b+8>>2];J[c+8>>2]=3;O[c>>3]=27;J[b+8>>2]=J[b+8>>2]+16;ej(b,-2,94590)}if(Zi[J[79453]](d,28)|0){c=J[b+8>>2];J[c+8>>2]=3;O[c>>3]=28;J[b+8>>2]=J[b+8>>2]+16;ej(b,-2,94656)}if(Zi[J[79453]](d,29)|0){c=J[b+8>>2];J[c+8>>2]=3;O[c>>3]=29;J[b+8>>2]=J[b+8>>2]+16;ej(b,-2,94676)}if(Zi[J[79453]](d,30)|0){c=J[b+8>>2];J[c+8>>2]=3;O[c>>3]=30;J[b+8>>2]=J[b+8>>2]+16;ej(b,-2,93343)}if(Zi[J[79453]](d,31)|0){c=J[b+8>>2];J[c+8>>2]=3;O[c>>3]=31;J[b+8>>2]=J[b+8>>2]+16;ej(b,-2,85946)}if(!(Zi[J[79453]](d,32)|0)){break f}d=J[b+8>>2];J[d+8>>2]=3;O[d>>3]=32;J[b+8>>2]=J[b+8>>2]+16;ej(b,-2,93322)}gj(b,-2);oj(f);Ui=e+32|0;Nk(b,1700,0);ej(b,-10002,12766);Nk(b,1701,0);ej(b,-10002,12765);rj(b,-10002,53156);g:{if(kj(b,-1)){d=sj(4);J[d>>2]=0;e=J[b+8>>2];J[e+8>>2]=2;J[e>>2]=d;J[b+8>>2]=J[b+8>>2]+16;ej(b,-10002,75598);J[d>>2]=P(J[d>>2],214013)+2531011;Nk(b,1702,0);ej(b,-2,48698);Nk(b,1703,0);ej(b,-2,75587);break g}dj(3,86858,75938,0)}gj(b,-2);d=J[b+8>>2];J[d+8>>2]=2;J[d>>2]=a;J[b+8>>2]=J[b+8>>2]+16;d=Dq(173152,16);mj(b,173152,16);uj(b,-2);Kj(b,-10002);e=J[b+8>>2];J[e+8>>2]=3;O[e>>3]=d|0;J[b+8>>2]=J[b+8>>2]+16;Pk(b,-2);Kj(b,-10002);J[84549]=d;d=J[b+8>>2];J[d+8>>2]=2;J[d>>2]=b;J[b+8>>2]=J[b+8>>2]+16;ej(b,-10002,76382);Fj(b,0,0);J[84548]=J[84548]+1;J[a+128>>2]=to(b,-1e4);J[215684]=1754;J[215683]=1755;J[215682]=0;J[215681]=1756;J[215680]=1757;J[215679]=1758;J[215676]=1759;VJ(a,862704);J[84561]=0;J[84562]=0;J[84560]=1707;J[84559]=1708;J[84558]=1709;J[84563]=0;J[84564]=0;J[84565]=0;J[84566]=0;VJ(a,338232);b=J[a+108>>2];d=J[a+112>>2];if((b|0)!=(d|0)){while(1){e=J[J[b>>2]>>2];if(e){Zi[e|0](a);d=J[a+112>>2]}b=b+4|0;if((d|0)!=(b|0)){continue}break}}oj(g+12|0);Ui=g+32|0}function SF(a,b,c,d,e){var f=0,g=0,h=0,i=0,j=0,k=0,l=0,m=0,n=0,o=0;f=Ui-32|0;Ui=f;a:{b:while(1){l=b-12|0;m=b-36|0;n=b-24|0;while(1){c:{d:{e:{f:{g:{h=a;g=b-a|0;a=(g|0)/12|0;switch(a|0){case 0:case 1:break a;case 4:break c;case 5:break e;case 3:break f;case 2:break g;default:break d}}a=b-12|0;if(!(Zi[J[c>>2]](a,h)|0)){break a}J[f+24>>2]=J[h+8>>2];b=J[h+4>>2];J[f+16>>2]=J[h>>2];J[f+20>>2]=b;J[h+8>>2]=J[a+8>>2];b=J[a+4>>2];J[h>>2]=J[a>>2];J[h+4>>2]=b;J[a+8>>2]=J[f+24>>2];b=J[f+20>>2];J[a>>2]=J[f+16>>2];J[a+4>>2]=b;break a}a=h+12|0;e=Zi[J[c>>2]](a,h)|0;b=b-12|0;d=Zi[J[c>>2]](b,a)|0;if(!e){if(!d){break a}J[f+24>>2]=J[a+8>>2];d=J[a+4>>2];J[f+16>>2]=J[a>>2];J[f+20>>2]=d;J[a+8>>2]=J[b+8>>2];d=J[b+4>>2];J[a>>2]=J[b>>2];J[a+4>>2]=d;J[b+8>>2]=J[f+24>>2];d=J[f+20>>2];J[b>>2]=J[f+16>>2];J[b+4>>2]=d;if(!(Zi[J[c>>2]](a,h)|0)){break a}J[f+24>>2]=J[h+8>>2];b=J[h+4>>2];J[f+16>>2]=J[h>>2];J[f+20>>2]=b;J[h+8>>2]=J[a+8>>2];b=J[a+4>>2];J[h>>2]=J[a>>2];J[h+4>>2]=b;J[a+8>>2]=J[f+24>>2];b=J[f+20>>2];J[a>>2]=J[f+16>>2];J[a+4>>2]=b;break a}if(d){J[f+24>>2]=J[h+8>>2];a=J[h+4>>2];J[f+16>>2]=J[h>>2];J[f+20>>2]=a;J[h+8>>2]=J[b+8>>2];a=J[b+4>>2];J[h>>2]=J[b>>2];J[h+4>>2]=a;J[b+8>>2]=J[f+24>>2];a=J[f+20>>2];J[b>>2]=J[f+16>>2];J[b+4>>2]=a;break a}J[f+24>>2]=J[h+8>>2];d=J[h+4>>2];J[f+16>>2]=J[h>>2];J[f+20>>2]=d;J[h+8>>2]=J[a+8>>2];d=J[a+4>>2];J[h>>2]=J[a>>2];J[h+4>>2]=d;J[a+8>>2]=J[f+24>>2];d=J[f+20>>2];J[a>>2]=J[f+16>>2];J[a+4>>2]=d;if(!(Zi[J[c>>2]](b,a)|0)){break a}J[f+24>>2]=J[a+8>>2];c=J[a+4>>2];J[f+16>>2]=J[a>>2];J[f+20>>2]=c;J[a+8>>2]=J[b+8>>2];c=J[b+4>>2];J[a>>2]=J[b>>2];J[a+4>>2]=c;J[b+8>>2]=J[f+24>>2];a=J[f+20>>2];J[b>>2]=J[f+16>>2];J[b+4>>2]=a;break a}a=h+12|0;d=h+24|0;e=h+36|0;aw(h,a,d,e,c);b=b-12|0;if(!(Zi[J[c>>2]](b,e)|0)){break a}J[f+24>>2]=J[e+8>>2];g=J[e+4>>2];J[f+16>>2]=J[e>>2];J[f+20>>2]=g;J[e+8>>2]=J[b+8>>2];g=J[b+4>>2];J[e>>2]=J[b>>2];J[e+4>>2]=g;J[b+8>>2]=J[f+24>>2];g=J[f+20>>2];J[b>>2]=J[f+16>>2];J[b+4>>2]=g;if(!(Zi[J[c>>2]](e,d)|0)){break a}J[f+24>>2]=J[d+8>>2];b=J[d+4>>2];J[f+16>>2]=J[d>>2];J[f+20>>2]=b;J[d+8>>2]=J[e+8>>2];b=J[e+4>>2];J[d>>2]=J[e>>2];J[d+4>>2]=b;J[e+8>>2]=J[f+24>>2];b=J[f+20>>2];J[e>>2]=J[f+16>>2];J[e+4>>2]=b;if(!(Zi[J[c>>2]](d,a)|0)){break a}J[f+24>>2]=J[a+8>>2];b=J[a+4>>2];J[f+16>>2]=J[a>>2];J[f+20>>2]=b;J[a+8>>2]=J[d+8>>2];b=J[d+4>>2];J[a>>2]=J[d>>2];J[a+4>>2]=b;J[d+8>>2]=J[f+24>>2];b=J[f+20>>2];J[d>>2]=J[f+16>>2];J[d+4>>2]=b;if(!(Zi[J[c>>2]](a,h)|0)){break a}J[f+24>>2]=J[h+8>>2];b=J[h+4>>2];J[f+16>>2]=J[h>>2];J[f+20>>2]=b;J[h+8>>2]=J[a+8>>2];b=J[a+4>>2];J[h>>2]=J[a>>2];J[h+4>>2]=b;J[a+8>>2]=J[f+24>>2];b=J[f+20>>2];J[a>>2]=J[f+16>>2];J[a+4>>2]=b;break a}if((g|0)<=287){a=h+12|0;d=(b|0)==(h|0)|(b|0)==(a|0);if(e&1){if(d){break a}i=h;while(1){d=a;if(Zi[J[c>>2]](a,i)|0){J[f+24>>2]=J[a+8>>2];e=J[a+4>>2];J[f+16>>2]=J[a>>2];J[f+20>>2]=e;g=a;while(1){h:{a=i;e=J[a+4>>2];J[g>>2]=J[a>>2];J[g+4>>2]=e;J[g+8>>2]=J[a+8>>2];if((a|0)==(h|0)){a=h;break h}g=a;i=a-12|0;if(Zi[J[c>>2]](f+16|0,i)|0){continue}}break}e=J[f+20>>2];J[a>>2]=J[f+16>>2];J[a+4>>2]=e;J[a+8>>2]=J[f+24>>2]}i=d;a=i+12|0;if((b|0)!=(a|0)){continue}break}break a}if(d){break a}while(1){if(Zi[J[c>>2]](a,h)|0){J[f+24>>2]=J[a+8>>2];d=J[a+4>>2];J[f+16>>2]=J[a>>2];J[f+20>>2]=d;g=a;while(1){d=J[h+4>>2];J[g>>2]=J[h>>2];J[g+4>>2]=d;J[g+8>>2]=J[h+8>>2];g=h;h=h-12|0;if(Zi[J[c>>2]](f+16|0,h)|0){continue}break}d=J[f+20>>2];J[g>>2]=J[f+16>>2];J[g+4>>2]=d;J[g+8>>2]=J[f+24>>2]}h=a;a=a+12|0;if((b|0)!=(a|0)){continue}break}break a}if(!d){if((b|0)==(h|0)){break a}e=c;k=Ui-32|0;Ui=k;d=b;if((b|0)!=(h|0)){m=b-h|0;l=(m|0)/12|0;if(!((m|0)<13|m>>>0<24)){i=l-2>>>1|0;a=i;while(1){g=a;i:{if((a|0)>(i|0)){break i}b=P(a,12)+h|0;c=a<<1;j=c|1;a=P(j,12)+h|0;n=c+2|0;if((n|0)<(l|0)){o=a+12|0;c=Zi[J[e>>2]](a,o)|0;j=c?n:j;a=c?o:a}if(Zi[J[e>>2]](a,b)|0){break i}J[k+24>>2]=J[b+8>>2];c=J[b+4>>2];J[k+16>>2]=J[b>>2];J[k+20>>2]=c;while(1){j:{c=a;n=J[a+4>>2];J[b>>2]=J[a>>2];J[b+4>>2]=n;J[b+8>>2]=J[a+8>>2];if((i|0)<(j|0)){break j}b=j<<1;j=b|1;a=P(j,12)+h|0;n=b+2|0;if((n|0)<(l|0)){o=a+12|0;b=Zi[J[e>>2]](a,o)|0;j=b?n:j;a=b?o:a}b=c;if(!(Zi[J[e>>2]](a,k+16|0)|0)){continue}}break}a=J[k+20>>2];J[c>>2]=J[k+16>>2];J[c+4>>2]=a;J[c+8>>2]=J[k+24>>2]}a=g-1|0;if((g|0)>0){continue}break}}if((m|0)>=13){a=(m>>>0)/12|0;while(1){J[k+8>>2]=J[h+8>>2];b=J[h+4>>2];J[k>>2]=J[h>>2];J[k+4>>2]=b;g=a;l=a-2>>>1|0;j=0;b=h;while(1){i=j<<1;c=i|1;j=P(j,12)+b|0;a=j+12|0;m=i+2|0;if(!((m|0)>=(g|0))){j=j+24|0;i=Zi[J[e>>2]](a,j)|0;a=i?j:a;c=i?m:c}j=c;c=J[a+4>>2];J[b>>2]=J[a>>2];J[b+4>>2]=c;J[b+8>>2]=J[a+8>>2];b=a;if((j|0)<=(l|0)){continue}break}d=d-12|0;k:{if((a|0)==(d|0)){b=J[k+4>>2];J[a>>2]=J[k>>2];J[a+4>>2]=b;J[a+8>>2]=J[k+8>>2];break k}b=J[d+4>>2];J[a>>2]=J[d>>2];J[a+4>>2]=b;J[a+8>>2]=J[d+8>>2];b=J[k+4>>2];J[d>>2]=J[k>>2];J[d+4>>2]=b;J[d+8>>2]=J[k+8>>2];b=(a-h|0)+12|0;if((b|0)<13){break k}j=((b>>>0)/12|0)-2>>>1|0;b=P(j,12)+h|0;if(!(Zi[J[e>>2]](b,a)|0)){break k}J[k+24>>2]=J[a+8>>2];c=J[a+4>>2];J[k+16>>2]=J[a>>2];J[k+20>>2]=c;while(1){l:{c=b;i=J[b+4>>2];J[a>>2]=J[b>>2];J[a+4>>2]=i;J[a+8>>2]=J[b+8>>2];if(!j){break l}a=b;j=j-1>>>1|0;b=P(j,12)+h|0;if(Zi[J[e>>2]](b,k+16|0)|0){continue}}break}a=J[k+20>>2];J[c>>2]=J[k+16>>2];J[c+4>>2]=a;J[c+8>>2]=J[k+24>>2]}a=g-1|0;if((g|0)>2){continue}break}}}Ui=k+32|0;break a}a=P(a>>>1|0,12)+h|0;i=J[c>>2];m:{if(g>>>0>=1537){i=Zi[i|0](a,h)|0;g=Zi[J[c>>2]](l,a)|0;n:{if(!i){if(!g){break n}J[f+24>>2]=J[a+8>>2];g=J[a+4>>2];J[f+16>>2]=J[a>>2];J[f+20>>2]=g;J[a+8>>2]=J[l+8>>2];g=J[l+4>>2];J[a>>2]=J[l>>2];J[a+4>>2]=g;J[l+8>>2]=J[f+24>>2];g=J[f+20>>2];J[l>>2]=J[f+16>>2];J[l+4>>2]=g;if(!(Zi[J[c>>2]](a,h)|0)){break n}J[f+24>>2]=J[h+8>>2];g=J[h+4>>2];J[f+16>>2]=J[h>>2];J[f+20>>2]=g;J[h+8>>2]=J[a+8>>2];g=J[a+4>>2];J[h>>2]=J[a>>2];J[h+4>>2]=g;J[a+8>>2]=J[f+24>>2];g=J[f+20>>2];J[a>>2]=J[f+16>>2];J[a+4>>2]=g;break n}if(g){J[f+24>>2]=J[h+8>>2];g=J[h+4>>2];J[f+16>>2]=J[h>>2];J[f+20>>2]=g;J[h+8>>2]=J[l+8>>2];g=J[l+4>>2];J[h>>2]=J[l>>2];J[h+4>>2]=g;J[l+8>>2]=J[f+24>>2];g=J[f+20>>2];J[l>>2]=J[f+16>>2];J[l+4>>2]=g;break n}J[f+24>>2]=J[h+8>>2];g=J[h+4>>2];J[f+16>>2]=J[h>>2];J[f+20>>2]=g;J[h+8>>2]=J[a+8>>2];g=J[a+4>>2];J[h>>2]=J[a>>2];J[h+4>>2]=g;J[a+8>>2]=J[f+24>>2];g=J[f+20>>2];J[a>>2]=J[f+16>>2];J[a+4>>2]=g;if(!(Zi[J[c>>2]](l,a)|0)){break n}J[f+24>>2]=J[a+8>>2];g=J[a+4>>2];J[f+16>>2]=J[a>>2];J[f+20>>2]=g;J[a+8>>2]=J[l+8>>2];g=J[l+4>>2];J[a>>2]=J[l>>2];J[a+4>>2]=g;J[l+8>>2]=J[f+24>>2];g=J[f+20>>2];J[l>>2]=J[f+16>>2];J[l+4>>2]=g}g=a-12|0;i=h+12|0;k=Zi[J[c>>2]](g,i)|0;j=Zi[J[c>>2]](n,g)|0;o:{if(!k){if(!j){break o}J[f+24>>2]=J[g+8>>2];j=J[g+4>>2];J[f+16>>2]=J[g>>2];J[f+20>>2]=j;J[g+8>>2]=J[n+8>>2];j=J[n+4>>2];J[g>>2]=J[n>>2];J[g+4>>2]=j;J[n+8>>2]=J[f+24>>2];j=J[f+20>>2];J[n>>2]=J[f+16>>2];J[n+4>>2]=j;if(!(Zi[J[c>>2]](g,i)|0)){break o}J[f+24>>2]=J[i+8>>2];j=J[i+4>>2];J[f+16>>2]=J[i>>2];J[f+20>>2]=j;J[i+8>>2]=J[g+8>>2];j=J[g+4>>2];J[i>>2]=J[g>>2];J[i+4>>2]=j;J[g+8>>2]=J[f+24>>2];i=J[f+20>>2];J[g>>2]=J[f+16>>2];J[g+4>>2]=i;break o}if(j){J[f+24>>2]=J[i+8>>2];j=J[i+4>>2];J[f+16>>2]=J[i>>2];J[f+20>>2]=j;J[i+8>>2]=J[n+8>>2];j=J[n+4>>2];J[i>>2]=J[n>>2];J[i+4>>2]=j;J[n+8>>2]=J[f+24>>2];i=J[f+20>>2];J[n>>2]=J[f+16>>2];J[n+4>>2]=i;break o}J[f+24>>2]=J[i+8>>2];j=J[i+4>>2];J[f+16>>2]=J[i>>2];J[f+20>>2]=j;J[i+8>>2]=J[g+8>>2];j=J[g+4>>2];J[i>>2]=J[g>>2];J[i+4>>2]=j;J[g+8>>2]=J[f+24>>2];i=J[f+20>>2];J[g>>2]=J[f+16>>2];J[g+4>>2]=i;if(!(Zi[J[c>>2]](n,g)|0)){break o}J[f+24>>2]=J[g+8>>2];i=J[g+4>>2];J[f+16>>2]=J[g>>2];J[f+20>>2]=i;J[g+8>>2]=J[n+8>>2];i=J[n+4>>2];J[g>>2]=J[n>>2];J[g+4>>2]=i;J[n+8>>2]=J[f+24>>2];i=J[f+20>>2];J[n>>2]=J[f+16>>2];J[n+4>>2]=i}i=a+12|0;j=h+24|0;o=Zi[J[c>>2]](i,j)|0;k=Zi[J[c>>2]](m,i)|0;p:{if(!o){if(!k){break p}J[f+24>>2]=J[i+8>>2];k=J[i+4>>2];J[f+16>>2]=J[i>>2];J[f+20>>2]=k;J[i+8>>2]=J[m+8>>2];k=J[m+4>>2];J[i>>2]=J[m>>2];J[i+4>>2]=k;J[m+8>>2]=J[f+24>>2];k=J[f+20>>2];J[m>>2]=J[f+16>>2];J[m+4>>2]=k;if(!(Zi[J[c>>2]](i,j)|0)){break p}J[f+24>>2]=J[j+8>>2];k=J[j+4>>2];J[f+16>>2]=J[j>>2];J[f+20>>2]=k;J[j+8>>2]=J[i+8>>2];k=J[i+4>>2];J[j>>2]=J[i>>2];J[j+4>>2]=k;J[i+8>>2]=J[f+24>>2];j=J[f+20>>2];J[i>>2]=J[f+16>>2];J[i+4>>2]=j;break p}if(k){J[f+24>>2]=J[j+8>>2];k=J[j+4>>2];J[f+16>>2]=J[j>>2];J[f+20>>2]=k;J[j+8>>2]=J[m+8>>2];k=J[m+4>>2];J[j>>2]=J[m>>2];J[j+4>>2]=k;J[m+8>>2]=J[f+24>>2];j=J[f+20>>2];J[m>>2]=J[f+16>>2];J[m+4>>2]=j;break p}J[f+24>>2]=J[j+8>>2];k=J[j+4>>2];J[f+16>>2]=J[j>>2];J[f+20>>2]=k;J[j+8>>2]=J[i+8>>2];k=J[i+4>>2];J[j>>2]=J[i>>2];J[j+4>>2]=k;J[i+8>>2]=J[f+24>>2];j=J[f+20>>2];J[i>>2]=J[f+16>>2];J[i+4>>2]=j;if(!(Zi[J[c>>2]](m,i)|0)){break p}J[f+24>>2]=J[i+8>>2];j=J[i+4>>2];J[f+16>>2]=J[i>>2];J[f+20>>2]=j;J[i+8>>2]=J[m+8>>2];j=J[m+4>>2];J[i>>2]=J[m>>2];J[i+4>>2]=j;J[m+8>>2]=J[f+24>>2];j=J[f+20>>2];J[m>>2]=J[f+16>>2];J[m+4>>2]=j}k=Zi[J[c>>2]](a,g)|0;j=Zi[J[c>>2]](i,a)|0;q:{if(!k){if(!j){break q}J[f+24>>2]=J[a+8>>2];j=J[a+4>>2];J[f+16>>2]=J[a>>2];J[f+20>>2]=j;J[a+8>>2]=J[i+8>>2];j=J[i+4>>2];J[a>>2]=J[i>>2];J[a+4>>2]=j;J[i+8>>2]=J[f+24>>2];j=J[f+20>>2];J[i>>2]=J[f+16>>2];J[i+4>>2]=j;if(!(Zi[J[c>>2]](a,g)|0)){break q}J[f+24>>2]=J[g+8>>2];i=J[g+4>>2];J[f+16>>2]=J[g>>2];J[f+20>>2]=i;J[g+8>>2]=J[a+8>>2];i=J[a+4>>2];J[g>>2]=J[a>>2];J[g+4>>2]=i;J[a+8>>2]=J[f+24>>2];g=J[f+20>>2];J[a>>2]=J[f+16>>2];J[a+4>>2]=g;break q}if(j){J[f+24>>2]=J[g+8>>2];j=J[g+4>>2];J[f+16>>2]=J[g>>2];J[f+20>>2]=j;J[g+8>>2]=J[i+8>>2];j=J[i+4>>2];J[g>>2]=J[i>>2];J[g+4>>2]=j;J[i+8>>2]=J[f+24>>2];g=J[f+20>>2];J[i>>2]=J[f+16>>2];J[i+4>>2]=g;break q}J[f+24>>2]=J[g+8>>2];j=J[g+4>>2];J[f+16>>2]=J[g>>2];J[f+20>>2]=j;J[g+8>>2]=J[a+8>>2];j=J[a+4>>2];J[g>>2]=J[a>>2];J[g+4>>2]=j;J[a+8>>2]=J[f+24>>2];g=J[f+20>>2];J[a>>2]=J[f+16>>2];J[a+4>>2]=g;if(!(Zi[J[c>>2]](i,a)|0)){break q}J[f+24>>2]=J[a+8>>2];g=J[a+4>>2];J[f+16>>2]=J[a>>2];J[f+20>>2]=g;J[a+8>>2]=J[i+8>>2];g=J[i+4>>2];J[a>>2]=J[i>>2];J[a+4>>2]=g;J[i+8>>2]=J[f+24>>2];g=J[f+20>>2];J[i>>2]=J[f+16>>2];J[i+4>>2]=g}J[f+24>>2]=J[h+8>>2];g=J[h+4>>2];J[f+16>>2]=J[h>>2];J[f+20>>2]=g;J[h+8>>2]=J[a+8>>2];g=J[a+4>>2];J[h>>2]=J[a>>2];J[h+4>>2]=g;J[a+8>>2]=J[f+24>>2];g=J[f+20>>2];J[a>>2]=J[f+16>>2];J[a+4>>2]=g;break m}i=Zi[i|0](h,a)|0;g=Zi[J[c>>2]](l,h)|0;if(!i){if(!g){break m}J[f+24>>2]=J[h+8>>2];g=J[h+4>>2];J[f+16>>2]=J[h>>2];J[f+20>>2]=g;J[h+8>>2]=J[l+8>>2];g=J[l+4>>2];J[h>>2]=J[l>>2];J[h+4>>2]=g;J[l+8>>2]=J[f+24>>2];g=J[f+20>>2];J[l>>2]=J[f+16>>2];J[l+4>>2]=g;if(!(Zi[J[c>>2]](h,a)|0)){break m}J[f+24>>2]=J[a+8>>2];g=J[a+4>>2];J[f+16>>2]=J[a>>2];J[f+20>>2]=g;J[a+8>>2]=J[h+8>>2];g=J[h+4>>2];J[a>>2]=J[h>>2];J[a+4>>2]=g;J[h+8>>2]=J[f+24>>2];a=J[f+20>>2];J[h>>2]=J[f+16>>2];J[h+4>>2]=a;break m}if(g){J[f+24>>2]=J[a+8>>2];g=J[a+4>>2];J[f+16>>2]=J[a>>2];J[f+20>>2]=g;J[a+8>>2]=J[l+8>>2];g=J[l+4>>2];J[a>>2]=J[l>>2];J[a+4>>2]=g;J[l+8>>2]=J[f+24>>2];a=J[f+20>>2];J[l>>2]=J[f+16>>2];J[l+4>>2]=a;break m}J[f+24>>2]=J[a+8>>2];g=J[a+4>>2];J[f+16>>2]=J[a>>2];J[f+20>>2]=g;J[a+8>>2]=J[h+8>>2];g=J[h+4>>2];J[a>>2]=J[h>>2];J[a+4>>2]=g;J[h+8>>2]=J[f+24>>2];a=J[f+20>>2];J[h>>2]=J[f+16>>2];J[h+4>>2]=a;if(!(Zi[J[c>>2]](l,h)|0)){break m}J[f+24>>2]=J[h+8>>2];a=J[h+4>>2];J[f+16>>2]=J[h>>2];J[f+20>>2]=a;J[h+8>>2]=J[l+8>>2];a=J[l+4>>2];J[h>>2]=J[l>>2];J[h+4>>2]=a;J[l+8>>2]=J[f+24>>2];a=J[f+20>>2];J[l>>2]=J[f+16>>2];J[l+4>>2]=a}d=d-1|0;r:{o=e&1;if(o){break r}if(Zi[J[c>>2]](h-12|0,h)|0){break r}J[f+8>>2]=J[h+8>>2];a=J[h+4>>2];J[f>>2]=J[h>>2];J[f+4>>2]=a;a=h;s:{if(Zi[J[c>>2]](f,l)|0){while(1){a=a+12|0;if(!(Zi[J[c>>2]](f,a)|0)){continue}break s}}while(1){a=a+12|0;if(b>>>0<=a>>>0){break s}if(!(Zi[J[c>>2]](f,a)|0)){continue}break}}g=b;if(g>>>0>a>>>0){while(1){g=g-12|0;if(Zi[J[c>>2]](f,g)|0){continue}break}}if(a>>>0>>0){while(1){J[f+24>>2]=J[a+8>>2];e=J[a+4>>2];J[f+16>>2]=J[a>>2];J[f+20>>2]=e;J[a+8>>2]=J[g+8>>2];e=J[g+4>>2];J[a>>2]=J[g>>2];J[a+4>>2]=e;J[g+8>>2]=J[f+24>>2];e=J[f+20>>2];J[g>>2]=J[f+16>>2];J[g+4>>2]=e;while(1){a=a+12|0;if(!(Zi[J[c>>2]](f,a)|0)){continue}break}while(1){g=g-12|0;if(Zi[J[c>>2]](f,g)|0){continue}break}if(a>>>0>>0){continue}break}}e=a-12|0;if((e|0)!=(h|0)){g=J[e+4>>2];J[h>>2]=J[e>>2];J[h+4>>2]=g;J[h+8>>2]=J[e+8>>2]}h=J[f+4>>2];J[e>>2]=J[f>>2];J[e+4>>2]=h;J[e+8>>2]=J[f+8>>2];e=0;continue}J[f+8>>2]=J[h+8>>2];a=J[h+4>>2];J[f>>2]=J[h>>2];J[f+4>>2]=a;j=h;while(1){i=j;j=i+12|0;if(Zi[J[c>>2]](j,f)|0){continue}break}k=b;t:{if((h|0)==(i|0)){while(1){if(j>>>0>=k>>>0){break t}k=k-12|0;if(!(Zi[J[c>>2]](k,f)|0)){continue}break t}}while(1){k=k-12|0;if(!(Zi[J[c>>2]](k,f)|0)){continue}break}}a=j;g=k;if(a>>>0>>0){while(1){J[f+24>>2]=J[a+8>>2];i=J[a+4>>2];J[f+16>>2]=J[a>>2];J[f+20>>2]=i;J[a+8>>2]=J[g+8>>2];i=J[g+4>>2];J[a>>2]=J[g>>2];J[a+4>>2]=i;J[g+8>>2]=J[f+24>>2];i=J[f+20>>2];J[g>>2]=J[f+16>>2];J[g+4>>2]=i;while(1){i=a;a=a+12|0;if(Zi[J[c>>2]](a,f)|0){continue}break}while(1){g=g-12|0;if(!(Zi[J[c>>2]](g,f)|0)){continue}break}if(a>>>0>>0){continue}break}}if((h|0)!=(i|0)){a=J[i+4>>2];J[h>>2]=J[i>>2];J[h+4>>2]=a;J[h+8>>2]=J[i+8>>2]}a=J[f+4>>2];J[i>>2]=J[f>>2];J[i+4>>2]=a;J[i+8>>2]=J[f+8>>2];if(j>>>0>=k>>>0){g=rU(h,i,c);a=i+12|0;if(rU(a,b,c)){b=i;a=h;if(!g){continue b}break a}if(g){continue}}SF(h,i,c,d,o);a=i+12|0;e=0;continue}break}break}aw(h,h+12|0,h+24|0,b-12|0,c)}Ui=f+32|0}function uw(a,b,c){var d=0,e=0,f=0,g=0,h=0,i=0,j=0,k=0,l=0,m=0,n=0,o=0,p=0,q=0,r=0,s=0,t=0,u=0,v=0,w=0,x=0,y=0;i=Ui+-64|0;Ui=i;d=-10240;a:{if(!a|!b){break a}g=a;b:{if(!J[g+28>>2]){break b}while(1){u=g;g=J[g+340>>2];if(g){if(J[g+28>>2]){continue}break b}break}g=Zj(1,344);J[u+340>>2]=g;if(!g){d=-10368;break a}ij(g,0,344);g=J[u+340>>2]}J[i+48>>2]=0;J[i+32>>2]=0;J[i+16>>2]=0;J[i+40>>2]=0;J[i+44>>2]=0;J[i+24>>2]=0;J[i+28>>2]=0;J[i+8>>2]=0;J[i+12>>2]=0;c:{if(!g){break c}J[i+52>>2]=b;J[i+56>>2]=c;d:{if(Qk(i+52|0,b+c|0,i+56|0,48)){d=-8576;break d}k=J[i+56>>2];c=(k+J[i+52>>2]|0)-b|0;J[g+8>>2]=c;d=Zj(1,c);J[g+12>>2]=d;if(!d){d=-10368;break c}b=hj(d,b,c);J[g>>2]=1;d=b+(c-k|0)|0;J[i+52>>2]=d;J[g+24>>2]=d;s=b+c|0;b=Qk(i+52|0,s,i+56|0,48);e:{f:{if(b){hn(g);d=b-8576|0;break f}o=J[i+52>>2]+J[i+56>>2]|0;J[g+20>>2]=o-J[g+24>>2];m=g+28|0;g:{h:{i:{b=Qk(i+52|0,o,i+60|0,160);if(b){if((b|0)!=-98){break i}J[m>>2]=0;break g}b=J[i+52>>2]+J[i+60>>2]|0;c=ks(i+52|0,b,m);if(c){d=c-8704|0;break h}if((b|0)==J[i+52>>2]){break g}d=-8806;break d}d=b-8576|0}if(d){break d}}b=i+52|0;c=J[b>>2];d=-8928;j:{if((o-c|0)<=0){break j}d=-8930;if((K[c|0]|128)!=130){break j}J[b>>2]=c+1;d=g+32|0;J[d>>2]=K[c|0];c=Vo(b,o,d+4|0);if(c){d=c-8832|0;break j}c=J[b>>2];J[d+8>>2]=c;J[b>>2]=c+J[d+4>>2];d=0}if(d){break d}c=g+44|0;d=mH(b,o,c,i+40|0);if(d){break d}b=J[m>>2];if(b>>>0>2){d=-9600;break d}J[g+28>>2]=b+1;b=-10240;k:{if(J[g+336>>2]){break k}p=g+328|0;k=g+332|0;l:{m:{if(!c){break m}n:{o:{switch(J[c+4>>2]-5|0){case 4:l=266352;if(!Wj(158714,J[c+8>>2],9)){break l}l=266376;if(!Wj(158681,J[c+8>>2],9)){break l}l=266400;if(!Wj(154439,J[c+8>>2],9)){break l}l=266424;if(!Wj(154492,J[c+8>>2],9)){break l}l=266448;if(!Wj(154478,J[c+8>>2],9)){break l}if(Wj(154452,J[c+8>>2],9)){break n}l=266472;break l;case 0:if(Wj(154415,J[c+8>>2],5)){break m}l=266496;break l;case 2:if(Wj(158775,J[c+8>>2],7)){break m}l=266520;break l;case 3:break o;default:break m}}d=J[c+8>>2];c=K[d|0]|K[d+1|0]<<8|(K[d+2|0]<<16|K[d+3|0]<<24);b=(c|0)==-834107862;d=K[d+4|0]|K[d+5|0]<<8|(K[d+6|0]<<16|K[d+7|0]<<24);l=266544;if(b&(d|0)==16974909){break l}l=266568;if((d|0)==33752125&b){break l}l=266592;if((d|0)==50529341&b){break l}if((c|0)!=-834107862|(d|0)!=67306557){break m}l=266616;break l}if(Wj(158626,J[c+8>>2],9)){break m}h=266640}l=h}b=l;c=-46;p:{if(!b){break p}J[p>>2]=J[b+16>>2];J[k>>2]=J[b+20>>2];c=0}if(c){b=c-9728|0;break k}q:{r:{if(J[g+332>>2]==6){b=-10368;r=Zj(1,8);if(!r){break k}h=Ui-48|0;Ui=h;J[p>>2]=4;J[r>>2]=4;j=r+4|0;J[j>>2]=20;s:{if(J[i+40>>2]!=48){b=-9058;break s}b=J[i+48>>2];J[h+44>>2]=b;c=J[i+44>>2];if(!c){b=0;break s}t:{u:{k=b+c|0;b=Qk(h+44|0,k,h+40|0,160);if(b){if((b|0)!=-98){break u}d=J[h+44>>2];break t}d=J[h+44>>2]+J[h+40>>2]|0;c=Ui-16|0;Ui=c;J[c+8>>2]=0;J[c>>2]=0;J[c+4>>2]=0;e=h+28|0;b=Hw(h+44|0,d,e,c);if(!b){b=J[c+4>>2]?-104:0;f=J[c>>2];b=(f|0)!=5?f?-104:b:b}Ui=c+16|0;b=b?b-8960|0:0;if(b){break s}b=xH(e,p);if(b){b=b-8960|0;break s}if(J[h+44>>2]==(d|0)){break t}b=-9062;break s}b=b-8960|0;break s}if((d|0)==(k|0)){b=0;break s}v:{w:{b=Qk(h+44|0,k,h+40|0,161);if(b){if((b|0)!=-98){break w}d=J[h+44>>2];break v}d=J[h+44>>2]+J[h+40>>2]|0;b=Hw(h+44|0,d,h+28|0,h+16|0);b=b?b-8960|0:0;if(b){break s}b=-8366;if(J[h+32>>2]!=9){break s}if(Wj(158639,J[h+36>>2],9)){break s}c=Ui-32|0;Ui=c;l=-9058;x:{if(J[h+16>>2]!=48){break x}p=J[h+24>>2];J[c+28>>2]=p;e=J[h+20>>2];l=-9056;if((e|0)<=0){break x}J[c+16>>2]=K[p|0];p=e+p|0;b=Qk(c+28|0,p,c+20|0,6);if(b){l=b-8960|0;break x}b=J[c+28>>2];J[c+24>>2]=b;J[c+28>>2]=b+J[c+20>>2];b=xH(c+16|0,r);if(b){l=b-8960|0;break x}l=0;if((p|0)==J[c+28>>2]){break x}b=Qk(c+28|0,p,c+12|0,5);l=b-8960|0;if(b|J[c+12>>2]){break x}l=(p|0)!=J[c+28>>2]?-9062:0}b=l;Ui=c+32|0;if(b){break s}if(J[h+44>>2]==(d|0)){break v}b=-9062;break s}b=b-8960|0;break s}if((d|0)==(k|0)){b=0;break s}y:{z:{b=Qk(h+44|0,k,h+40|0,162);if(b){if((b|0)!=-98){break z}d=J[h+44>>2];break y}d=J[h+44>>2]+J[h+40>>2]|0;b=ks(h+44|0,d,j);if(b){b=b-8960|0;break s}if(J[h+44>>2]==(d|0)){break y}b=-9062;break s}b=b-8960|0;break s}b=0;if((d|0)==(k|0)){break s}A:{B:{b=Qk(h+44|0,k,h+40|0,163);if(b){if((b|0)!=-98){break B}d=J[h+44>>2];break A}d=J[h+44>>2]+J[h+40>>2]|0;b=ks(h+44|0,d,h+12|0);if(b){b=b-8960|0;break s}b=-9062;if(J[h+44>>2]!=(d|0)){break s}if(J[h+12>>2]==1){break A}b=-8960;break s}b=b-8960|0;break s}b=(d|0)!=(k|0)?-9062:0}Ui=h+48|0;if(b){cj(r);break k}J[g+336>>2]=r;break r}b=-8960;C:{switch(J[i+40>>2]){case 0:case 5:break C;default:break q}}if(J[i+44>>2]){break q}}b=0}}d=b;if(b){break d}J[g+64>>2]=J[i+52>>2];b=Qk(i+52|0,o,i+56|0,48);if(b){hn(g);d=b-8576|0;break f}b=i+52|0;d=lH(b,J[i+52>>2]+J[i+56>>2]|0,g+80|0);if(d){break d}J[g+60>>2]=J[i+52>>2]-J[g+64>>2];d=g+144|0;k=g+168|0;c=Ui-16|0;Ui=c;h=Qk(b,o,c+12|0,48);D:{if(h){d=h-9216|0;break D}h=J[b>>2]+J[c+12>>2]|0;d=kH(b,h,d);if(d){break D}d=kH(b,h,k);if(d){break D}d=(h|0)!=J[b>>2]?-9318:0}Ui=c+16|0;if(d){break d}J[g+76>>2]=J[i+52>>2];b=Qk(b,o,i+56|0,48);if(b){hn(g);d=b-8576|0;break f}b=J[i+56>>2];if(b){d=lH(i+52|0,b+J[i+52>>2]|0,g+112|0);if(d){break d}}b=J[i+52>>2];J[g+200>>2]=b;J[g+72>>2]=b-J[g+76>>2];c=i+52|0;d=tA(c,o,g+204|0);if(d){break d}J[g+196>>2]=J[i+52>>2]-J[g+200>>2];E:{b=J[g+28>>2];if((b&-2)==2){d=uF(c,o,g+212|0,1);if(d){break E}b=J[m>>2]}F:{if((b&-2)!=2){break F}j=i+52|0;d=uF(j,o,g+224|0,2);if(d){break E}if(J[m>>2]!=3){break F}m=Ui-32|0;Ui=m;G:{if(J[j>>2]==(o|0)){d=0;break G}b=Ui-16|0;Ui=b;c=Qk(j,o,g+240|0,163);H:{if(c){d=c-9472|0;break H}J[g+236>>2]=163;c=J[j>>2];J[g+244>>2]=c;c=c+J[g+240>>2]|0;d=Qk(j,c,b+12|0,48);if(d){d=d-9472|0;break H}d=(c|0)!=(J[j>>2]+J[b+12>>2]|0)?-9574:0}Ui=b+16|0;if(d){break G}d=J[j>>2];v=J[g+244>>2]+J[g+240>>2]|0;if(d>>>0>>0){w=g+288|0;t=g+284|0;r=g+296|0;h=g+248|0;p=g+264|0;y=m+20|0;while(1){J[m+24>>2]=0;J[m+16>>2]=0;J[m+20>>2]=0;J[m+12>>2]=0;J[m+8>>2]=0;b=Qk(j,v,m+28|0,48);if(b){d=b-9472|0;break G}b=J[j>>2]+J[m+28>>2]|0;c=Qk(j,b,y,6);if(c){d=c-9472|0;break G}J[m+16>>2]=6;c=J[j>>2];J[m+24>>2]=c;J[j>>2]=c+J[m+20>>2];c=dI(j,b,m+12|0);if(!((c|0)==-98|!c)){d=c-9472|0;break G}c=Qk(j,b,m+28|0,4);if(c){d=c-9472|0;break G}k=J[j>>2]+J[m+28>>2]|0;if((k|0)!=(b|0)){d=-9574;break G}d=-46;I:{if((m|0)==-16){break I}J:{K:{L:{switch(J[m+20>>2]-3|0){case 0:c=J[m+24>>2];b=267152;if(!Wj(154427,c,3)){break J}b=267172;if(!Wj(154435,c,3)){break J}b=267192;if(!Wj(151689,c,3)){break J}if(Wj(154431,c,3)){break K}b=267212;break J;case 6:break L;default:break I}}if(Wj(158823,J[m+24>>2],9)){break I}b=267232;break J}if(Wj(154411,c,3)){break I}b=267252}J[m+8>>2]=J[b+16>>2];d=0}M:{if(d){J[j>>2]=k;if(!J[m+12>>2]){break M}d=-9570;break G}b=J[m+8>>2];c=J[g+280>>2];if(b&c){d=-9472;break G}J[g+280>>2]=b|c;N:{O:{P:{Q:{R:{S:{if((b|0)<=255){switch(b-4|0){case 0:break N;case 4:break Q;case 28:break S;default:break P}}if((b|0)==65536){break R}if((b|0)!=2048){if((b|0)!=256){break P}c=0;b=Ui-16|0;Ui=b;J[t>>2]=0;J[w>>2]=0;d=Qk(j,k,b+12|0,48);T:{if(d){c=d-9472|0;break T}if((k|0)==J[j>>2]){break T}d=dI(j,k,t);U:{if(!d){break U}if((d|0)==-98){d=ks(j,k,t)}if(d){c=d-9472|0;break T}if(!J[t>>2]){break U}J[t>>2]=1}if((k|0)==J[j>>2]){break T}c=ks(j,k,w);if(c){c=c-9472|0;break T}c=-9574;if((k|0)!=J[j>>2]){break T}J[w>>2]=J[w>>2]+1;c=0}Ui=b+16|0;d=c;if(!d){break M}break G}d=r;V:{W:{f=J[j>>2];if((k-f|0)<=0){break W}c=-98;if(K[f|0]!=48){break V}b=f+1|0;J[j>>2]=b;c=k-b|0;if((c|0)<=0){break W}e=H[b|0];X:{Y:{if((e|0)>=0){e=f+2|0;J[j>>2]=e;b=K[f+1|0];break Y}b=-100;Z:{switch((e&127)-1|0){case 0:if((c|0)==1){break W}b=K[f+2|0];e=f+3|0;J[j>>2]=e;break Y;case 1:if(c>>>0<3){break W}b=K[f+3|0];c=K[f+2|0];e=f+4|0;J[j>>2]=e;b=c<<8|b;break Y;case 2:if(c>>>0<4){break W}b=K[f+4|0];c=K[f+3|0];n=K[f+2|0];e=f+5|0;J[j>>2]=e;b=c<<8|n<<16|b;break Y;case 3:break Z;default:break X}}if(c>>>0<5){break W}b=K[f+2|0]|K[f+3|0]<<8|(K[f+4|0]<<16|K[f+5|0]<<24);e=f+6|0;J[j>>2]=e;b=b<<24|(b&65280)<<8|(b>>>8&65280|b>>>24)}if(k-e>>>0>>0){break W}c=-102;if((k|0)!=(b+e|0)){break V}if(e>>>0>>0){while(1){J[d>>2]=K[e|0];if((k-e|0)<=0){break W}c=-98;if(K[e|0]!=6){break V}J[j>>2]=e+1;b=Vo(j,k,d+4|0);if(b){break X}b=J[j>>2];J[d+8>>2]=b;e=b+J[d+4>>2]|0;J[j>>2]=e;if(e>>>0>>0){b=d;d=Zj(1,16);J[b+12>>2]=d;c=-106;if(!d){break V}e=J[j>>2]}if(e>>>0>>0){continue}break}}J[d+12>>2]=0;b=(k|0)!=J[j>>2]?-102:0}c=b;break V}c=-96}if(c){break O}if(J[g+304>>2]){break M}d=-9572;break G}e=Ui-48|0;Ui=e;b=Qk(j,k,e+44|0,48);_:{if(b){b=b-9472|0;break _}b=-9574;f=J[j>>2];if((k|0)!=(f+J[e+44>>2]|0)){break _}$:{if(f>>>0>=k>>>0){c=h;break $}c=h;while(1){J[e+32>>2]=0;J[e+36>>2]=0;J[e+24>>2]=0;J[e+28>>2]=0;J[e+16>>2]=0;J[e+20>>2]=0;J[e+8>>2]=0;J[e+12>>2]=0;J[e>>2]=0;J[e+4>>2]=0;if((k-f|0)<=0){b=-9568;break _}x=K[f|0];J[j>>2]=f+1;b=Vo(j,k,e+40|0);if(b){b=b-9472|0;break _}if((x&192)!=128){b=-9570;break _}d=Ui-48|0;Ui=d;b=-8320;aa:{ba:{ca:{f=J[c>>2]&223;switch(f-128|0){case 2:break ba;case 0:break ca;default:break aa}}n=J[c+8>>2];J[d+40>>2]=n;b=-10240;if((f|0)!=128){break aa}da:{ea:{q=d+40|0;n=n+J[c+4>>2]|0;l=d+44|0;b=Qk(q,n,l,6);if(b){break ea}b=-8320;if(J[d+44>>2]!=8){break aa}f=J[d+40>>2];if((K[f|0]|K[f+1|0]<<8|(K[f+2|0]<<16|K[f+3|0]<<24))!=83953195|(K[f+4|0]|K[f+5|0]<<8|(K[f+6|0]<<16|K[f+7|0]<<24))!=67634949){break aa}b=f+8|0;fa:{if(b>>>0>=n>>>0){break fa}J[d+40>>2]=b;b=Qk(q,n,l,160);if(b){break ea}b=Qk(q,n,l,48);if(b){break ea}b=Qk(q,n,l,6);if(b){break ea}J[d+16>>2]=6;b=J[d+40>>2];J[d+24>>2]=b;f=J[d+44>>2];J[d+20>>2]=f;b=b+f|0;if(b>>>0>=n>>>0){break fa}J[d+40>>2]=b;b=Qk(q,n,l,4);if(b){break ea}J[d+28>>2]=4;b=J[d+44>>2];J[d+32>>2]=b;f=J[d+40>>2];J[d+36>>2]=f;b=b+f|0;J[d+40>>2]=b;if((b|0)==(n|0)){break da}}Zi[J[66509]](d+4|0,0,36)|0;b=-9574;break aa}b=b-9472|0;if(b){break aa}}b=0;J[e>>2]=0;f=J[d+8>>2];J[e+4>>2]=J[d+4>>2];J[e+8>>2]=f;f=J[d+16>>2];J[e+12>>2]=J[d+12>>2];J[e+16>>2]=f;f=J[d+24>>2];J[e+20>>2]=J[d+20>>2];J[e+24>>2]=f;f=J[d+32>>2];J[e+28>>2]=J[d+28>>2];J[e+32>>2]=f;J[e+36>>2]=J[d+36>>2];break aa}J[e+4>>2]=0;J[e+8>>2]=0;J[e>>2]=2;b=0;J[e+36>>2]=0;J[e+28>>2]=0;J[e+32>>2]=0;J[e+20>>2]=0;J[e+24>>2]=0;J[e+12>>2]=0;J[e+16>>2]=0;f=J[c+4>>2];J[e+4>>2]=J[c>>2];J[e+8>>2]=f;J[e+12>>2]=J[c+8>>2]}Ui=d+48|0;if(!(!b|(b|0)==-8320)){d=J[h+12>>2];if(d){while(1){c=J[d+12>>2];Zi[J[66509]](d,0,16)|0;cj(d);d=c;if(d){continue}break}}J[h+12>>2]=0;break _}ga:{if(!J[c+8>>2]){break ga}if(J[c+12>>2]){b=-9472;break _}b=c;c=Zj(1,16);J[b+12>>2]=c;if(c){break ga}b=-9578;break _}J[c>>2]=x;b=J[j>>2];J[c+8>>2]=b;d=J[e+40>>2];J[c+4>>2]=d;f=b+d|0;J[j>>2]=f;if(f>>>0>>0){continue}break}}J[c+12>>2]=0;b=(k|0)!=J[j>>2]?-9574:0}Ui=e+48|0;d=b;if(!b){break M}break G}b=Ui-16|0;Ui=b;J[b+8>>2]=0;J[b>>2]=0;J[b+4>>2]=0;c=fI(j,k,b);ha:{if(c){d=c-9472|0;break ha}d=-9572;if(J[b>>2]!=1){break ha}H[g+312|0]=K[J[b+8>>2]];d=0}Ui=b+16|0;if(!d){break M}break G}d=p;b=0;n=Ui-16|0;Ui=n;c=Qk(j,k,n+12|0,48);ia:{if(c){c=c-9472|0;break ia}c=-9574;f=J[n+12>>2];if(!f){break ia}e=J[j>>2];if((k|0)!=(f+e|0)){break ia}while(1){if(e>>>0>>0){e=Qk(j,k,n+12|0,48);if(e){c=e-9472|0;break ia}e=J[j>>2]+J[n+12>>2]|0;f=Qk(j,e,n+12|0,6);if(f){c=f-9472|0;break ia}f=J[j>>2];q=J[n+12>>2];ja:{if((q|0)==4){if(!Wj(183144,f,4)){break ja}}b=-8320}ka:{if(!J[d+8>>2]){break ka}if(J[d+12>>2]){c=-9472;break ia}l=d;d=Zj(1,16);J[l+12>>2]=d;if(d){break ka}c=-9578;break ia}J[d+8>>2]=f;J[d>>2]=6;J[d+4>>2]=q;f=q+J[j>>2]|0;J[j>>2]=f;if(e>>>0>f>>>0){f=Qk(j,e,n+12|0,48);if(f){c=f-9472|0;break ia}f=J[j>>2]+J[n+12>>2]|0;J[j>>2]=f}if((e|0)==(f|0)){continue}break ia}break}J[d+12>>2]=0;c=(k|0)!=J[j>>2]?-9574:b}Ui=n+16|0;d=c;if(!c){break M}if((c|0)!=-8320){break G}if(!J[m+12>>2]){break M}break G}if(J[m+12>>2]){d=-8320;break G}J[j>>2]=k;break M}d=c-9472|0;if(!d){break M}break G}b=Ui-16|0;Ui=b;J[b+8>>2]=0;J[b>>2]=0;J[b+4>>2]=0;c=fI(j,k,b);la:{if(c){c=c-9472|0;break la}d=J[b>>2];if(!d){c=-9572;break la}c=0;J[g+292>>2]=0;k=J[b+8>>2];e=K[k|0];J[g+292>>2]=e;if((d|0)==1){break la}e=e|K[k+1|0]<<8;J[g+292>>2]=e;if((d|0)==2){break la}e=e|K[k+2|0]<<16;J[g+292>>2]=e;if((d|0)==3){break la}J[g+292>>2]=e|K[k+3|0]<<24}Ui=b+16|0;d=c;if(c){break G}}d=J[j>>2];if(v>>>0>d>>>0){continue}break}}d=(d|0)!=(v|0)?-9574:0}Ui=m+32|0;if(d){break d}}d=-8678;if(J[i+52>>2]!=(o|0)){break d}d=mH(i+52|0,s,i+8|0,i+24|0);if(d){break d}d=-9856;b=J[g+48>>2];if((b|0)!=J[i+12>>2]){break d}if(Wj(J[g+52>>2],J[i+16>>2],b)){break d}b=J[i+44>>2];if((b|0)!=J[i+28>>2]){break d}if(b){if(Wj(J[i+48>>2],J[i+32>>2],b)){break d}}b=Ui-16|0;Ui=b;c=i+52|0;h=J[c>>2];d=-9440;ma:{if((s-h|0)<=0){break ma}d=K[h|0];h=eI(c,s,b+12|0);if(h){d=h-9344|0;break ma}J[g+316>>2]=d;d=J[b+12>>2];J[g+320>>2]=d;h=J[c>>2];J[g+324>>2]=h;J[c>>2]=d+h;d=0}Ui=b+16|0;if(d){break d}d=-8678;if(J[i+52>>2]!=(s|0)){break d}break e}hn(g)}if(d){break c}}d=0;break a}hn(g)}if(u){J[u+340>>2]=0}if((a|0)==(g|0)){break a}cj(g)}Ui=i- -64|0;return d}function YM(a,b,c){var d=0,e=0,f=0,g=0,h=0,i=0,j=0,k=0,l=0,m=0,n=0,o=0,p=0,q=0,r=0,s=0,t=0,u=0,v=0,w=0;h=Ui-272|0;Ui=h;r=a+2208|0;q=a+4|0;s=h+100|0;a:{b:{c:{d:{while(1){H[h+100|0]=0;J[h+96>>2]=-1;J[h+84>>2]=0;J[h+76>>2]=0;J[h+80>>2]=0;J[h+72>>2]=a;J[h+88>>2]=-1;J[h+92>>2]=0;H[h+164|0]=K[h+164|0]&252;J[h+184>>2]=0;J[h+188>>2]=0;J[h+176>>2]=0;J[h+180>>2]=0;J[h+168>>2]=0;J[h+172>>2]=0;J[a+2128>>2]=0;J[a+2176>>2]=J[a+2176>>2]+1;d=h+72|0;n=J[a>>2];p=L[a+2198>>1];m=K[a+2196|0];f=J[a+2160>>2];j=Ui-16|0;Ui=j;e=J[218568];Tj(e);e:{f:{g=J[218567];if(!g){J[j+8>>2]=32;J[j+12>>2]=10;if(lS(j+8|0)){break f}g=J[218567]}Lj(e);J[d+104>>2]=g;k=-1;l=J[d>>2]+2128|0;i=bl();g:{h:{i:{o=d+108|0;e=mS(g,n,p,m,f,o,l,1,0);switch(e+4|0){case 0:case 3:case 4:break g;case 1:break i;default:break h}}e=-3;if(J[l>>2]!=-3){break g}}j:{if((f|0)<=0){break j}f=(i-bl()|0)+f|0;if((f|0)>0){break j}e=-2;break g}e=mS(g,n,p,m,f,o,l,0,1)}if(!e){f=J[d+108>>2];e=J[d+104>>2];k=J[e+28>>2];Tj(k);k:{l:{i=f&65535;l=J[e+12>>2];e=J[e+8>>2];if(i>>>0>6>>>0){e=e+(i<<6)|0;if(L[e+54>>1]!=(f>>>16|0)){break b}if(J[e+48>>2]!=2){break l}f=J[e+44>>2];Lj(k);break k}break a}Z(95091,40434,466,15438);B()}J[d+112>>2]=f;f=J[d+108>>2];e=J[d+104>>2];k=J[e+28>>2];Tj(k);m:{n:{i=f&65535;l=J[e+12>>2];e=J[e+8>>2];if(i>>>0>6>>>0){e=e+(i<<6)|0;if(L[e+54>>1]!=(f>>>16|0)){break b}if(J[e+48>>2]!=2){break n}f=J[e+40>>2];Lj(k);break m}break a}Z(95091,40434,475,15462);B()}J[d+116>>2]=f;kx();kx();k=0}Ui=j+16|0;break e}Z(92848,38120,83,49485);B()}if(k){d=-1;break d}d=J[a+2204>>2];if(!(!d|!J[d>>2])){d=0;break d}o:{if(!J[a+2160>>2]){break o}d=bl()-J[a+2168>>2]|0;if((d|0)>2]){break o}d=0;break d}d=Rm(h+72|0,c,yj(c));p:{q:{if(d){J[a+2128>>2]=d;break q}d=Rm(h+72|0,154413,1);if(d){J[a+2128>>2]=d;break q}d=Rm(h+72|0,b,yj(b));if(d){J[a+2128>>2]=d;break q}d=Rm(h+72|0,158608,11);if(d){J[a+2128>>2]=d;break q}d=Rm(h+72|0,154183,6);if(d){J[a+2128>>2]=d;break q}d=J[a>>2];d=Rm(h+72|0,d,yj(d));if(d){J[a+2128>>2]=d;break q}d=Rm(h+72|0,158623,2);if(d){J[a+2128>>2]=d;break q}r:{s:{d=J[a+2152>>2];t:{if(d){if(Zi[d|0](h+72|0,J[a+2132>>2])|0){break t}}u:{if(H[a+2200|0]&1){break u}d=J[a+2192>>2];if(!d){break u}f=d;d=h+192|0;if(aN(f,q,d)){break u}e=h+72|0;f=Rm(e,154279,15);v:{if(f){break v}f=Rm(e,d,yj(d));if(f){break v}f=Rm(e,158623,2);if(!f){break u}}J[a+2128>>2]=f;break q}w:{x:{y:{if(!jj(c,86459)){break y}if(!jj(c,86422)){break y}if(!jj(c,93547)){break y}f=0;break x}d=h+72|0;f=Zi[J[a+2144>>2]](d,J[a+2132>>2])|0;if(!(!(H[a+2196|0]&1)|(!(K[a+2200|0]&2)|f>>>0<16385))){d=Rm(d,158558,28);if(d){break r}d=0;break w}J[h+64>>2]=f;d=h+192|0;Gj(d,64,158587,h- -64|0);d=Rm(h+72|0,d,yj(d));if(d){break s}}d=1}e=Rm(h+72|0,158623,2);if(e){J[a+2128>>2]=e;break q}z:{if(!jj(c,86459)){break z}if(!jj(c,86422)){break z}if(jj(c,93547)){break t}}if(!d){d=0;if(f){while(1){e=f-d|0;e=e>>>0>=16384?16384:e;J[h+48>>2]=e;k=h+192|0;Gj(k,64,158544,h+48|0);A:{i=h+72|0;g=Rm(i,k,yj(k));if(!g){if(Zi[J[a+2148>>2]](i,d,e,J[a+2132>>2])|0){break t}g=Rm(i,158623,2);if(!g){break A}}J[a+2128>>2]=g;break t}d=d+e|0;if(d>>>0>>0){continue}break}}d=Rm(h+72|0,158620,5);if(!d){break t}J[a+2128>>2]=d;break q}Zi[J[a+2148>>2]](h+72|0,0,f,J[a+2132>>2])|0}d=-1;n=jj(c,98184);if(J[a+2128>>2]){break p}f=0;J[h+92>>2]=0;d=-2;while(1){B:{J[h+192>>2]=0;e=f+r|0;f=65536-f|0;C:{D:{k=J[h+188>>2];E:{if(k){f=NB(k,e,f,h+192|0);break E}f=tB(J[h+184>>2],e,f,h+192|0)}f=(f|0)==-3?-101:f;F:{if((f|0)!=-101?f:0){break F}e=J[a+2204>>2];if(!(!e|!J[e>>2])){f=-3;break F}G:{if(!J[a+2160>>2]){break G}e=bl()-J[a+2168>>2]|0;if((e|0)>2]){break G}f=-3;break F}if((f|0)==-101){break C}if(!f){break D}}J[a+2128>>2]=f;d=-1;break B}f=J[h+192>>2];e=f+J[h+92>>2]|0;J[h+92>>2]=e;H[e+r|0]=0;g=h+72|0;j=!f;i=Ui-32|0;Ui=i;k=Bm(r,158621);e=Bm(r,158623);H:{if(!e){f=1;break H}l=K[e|0];H[e|0]=0;J[i>>2]=i+28;J[i+4>>2]=i+24;J[i+8>>2]=i+20;f=-1;if((Lt(r,78587,i)|0)!=3){break H}I:{if(k){k=k+4|0}else{if(!j|J[i+20>>2]!=204){break I}k=e+1|0;k=yj(k)+k|0}j=Hk(r,32);if(!j){break H}j=Hk(j+1|0,32);if(!j){break H}VM(g,J[i+28>>2],J[i+24>>2],J[i+20>>2],j+1|0);p=K[k|0];f=0;H[k|0]=0;j=fp(e+2|0,158623,i+16|0);if(j){while(1){l=Hk(j,58);e=l;if(!e){f=-1;break H}while(1){m=K[e+1|0];e=e+1|0;if((m|0)==32){continue}break}m=K[l|0];H[l|0]=0;WM(g,j,e);H[l|0]=m;j=fp(0,158623,i+16|0);if(j){continue}break}}H[k|0]=p;NR(g,k-r|0);break H}H[e|0]=l;f=1}Ui=i+32|0;J:{K:{if((f|0)!=1){if((f|0)==-1){break B}f=J[h+84>>2];if((f|0)==204){break K}d=J[h+96>>2];break J}if(J[h+192>>2]){break C}dj(3,99340,120186,0);d=-7;break B}J[h+96>>2]=0;d=0}L:{M:{N:{O:{P:{if((f|0)==304){break P}e=K[h+164|0];if(e&1|(d|0)!=-1){break P}H[h+164|0]=e|2;break O}if((f|0)!=304){break O}if(d+1>>>0<=1){d=0;if(!(!J[a+2192>>2]|H[a+2200|0]&1)){d=h+72|0;i=!n;f=0;e=Ui-96|0;Ui=e;J[a+2180>>2]=J[a+2180>>2]+1;Q:{if(H[a+2200|0]&1){break Q}k=J[a+2192>>2];if(!k){dj(3,99340,13472,0);break Q}H[e+32|0]=0;l=k;k=a+4|0;if(aN(l,k,e+32|0)){dj(3,99340,130928,0);break Q}R:{if(!K[d+28|0]){break R}f=e+32|0;g=d+28|0;if(!jj(f,g)){break R}J[e+4>>2]=g;J[e>>2]=f;dj(5,99340,136986,e);f=-8;break Q}J[e+28>>2]=0;J[e+24>>2]=0;f=-8;if($M(J[a+2192>>2],k,e+32|0,e+28|0,e+24|0,e+16|0)){break Q}S:{if(!i){f=a+2208|0;while(1){i=Sl(f,1,65536,J[e+28>>2]);H[i+f|0]=0;Zi[J[a+2136>>2]](d,J[a+2132>>2],J[d+12>>2],f,i,J[e+24>>2],0);if(i){continue}break}break S}Zi[J[a+2136>>2]](d,J[a+2132>>2],J[d+12>>2],0,0,J[e+24>>2],98184)}_M(J[a+2192>>2],k,e+32|0,J[e+28>>2]);f=J[a+2192>>2];i=J[f+48>>2];Tj(i);d=bj(k);k=Yi;g=J[f+20>>2];if(g){T:{g=J[J[f+16>>2]+(mxa(d,k,g)<<2)>>2];if((g|0)==-1){break T}j=J[f+24>>2];while(1){f=j+P(g,136)|0;if(J[f>>2]!=(d|0)|J[f+4>>2]!=(k|0)){g=J[f+128>>2];if((g|0)!=-1){continue}break T}break}H[f+112|0]=K[f+112|0]&254|1}}Lj(i);f=0}Ui=e+96|0;d=f}J[h+92>>2]=0;break L}J[h+16>>2]=d;dj(3,99340,144125,h+16|0);d=-3;break N}U:{if(H[a+2200|0]&1|(f|0)!=200){break U}d=J[a+2192>>2];if(!d|!n){break U}n=J[h+168>>2];l=Ui-224|0;Ui=l;f=d;t=J[d+48>>2];Tj(t);J[h+172>>2]=0;V:{W:{X:{Y:{Z:{_:{if(!(n|K[s|0])){break _}d=bj(q);i=Yi;k=l+192|0;go(k,0);em(k,q,yj(q));em(k,s,yj(s));e=f+16|0;k=jp(k);p=Yi;$:{aa:{j=J[f+20>>2];ba:{if(!j){break ba}g=J[J[e>>2]+(mxa(d,i,j)<<2)>>2];if((g|0)==-1){break ba}m=J[f+24>>2];while(1){g=m+P(g,136)|0;if((d|0)==J[g>>2]&(i|0)==J[g+4>>2]){break aa}g=J[g+128>>2];if((g|0)!=-1){continue}break}}ij(l+72|0,0,120);g=J[f+40>>2];if((g|0)==((J[f+32>>2]-J[f+24>>2]|0)/136|0)){g=g+128|0;j=(g<<1>>>0)/3|0;sN(e,j>>>0<=1?1:j,g)}m=l+72|0;ca:{da:{ea:{fa:{ga:{u=J[e+16>>2];o=J[e+8>>2];if(J[e+24>>2]!=((u-o|0)/136|0)){g=J[e+4>>2];ha:{if(!g){break ha}j=J[J[e>>2]+(mxa(d,i,g)<<2)>>2];if((j|0)==-1){break ha}while(1){g=o+P(j,136)|0;if((d|0)==J[g>>2]&(i|0)==J[g+4>>2]){break ga}j=J[g+128>>2];if((j|0)!=-1){continue}break}}g=J[e+12>>2];ia:{if((u|0)!=(g|0)){J[e+12>>2]=g+136;break ia}g=J[e+20>>2];if((g|0)==-1){break fa}g=o+P(g,136)|0;J[e+20>>2]=J[g+128>>2]}J[g>>2]=d;J[g+4>>2]=i;hj(g+8|0,m,114);J[g+128>>2]=-1;m=J[e+8>>2];o=J[e>>2]+(mxa(d,i,J[e+4>>2])<<2)|0;j=J[o>>2];if((j|0)==-1){break ea}while(1){o=m+P(j,136)|0;j=J[o+128>>2];if((j|0)!=-1){continue}break}J[o+128>>2]=(g-m|0)/136;break da}Z(144851,55689,229,9606);B()}hj(g+8|0,m,114);break ca}Z(152203,55689,537,2838);B()}J[o>>2]=(g-m|0)/136}J[e+24>>2]=J[e+24>>2]+1}j=J[f+20>>2];break $}if(!(!K[s|0]|((k|0)!=J[g+80>>2]|(p|0)!=J[g+84>>2]))){J[l+68>>2]=s;J[l+64>>2]=q;dj(3,99340,134859,l- -64|0);break _}g=L[g+120>>1];if(g&255){J[l+52>>2]=s;J[l+48>>2]=q;dj(3,99340,123543,l+48|0);break _}if(!(g&256)){break $}J[l+36>>2]=s;J[l+32>>2]=q;dj(3,99340,123611,l+32|0);break _}g=0;ja:{if(!j){break ja}j=J[J[e>>2]+(mxa(d,i,j)<<2)>>2];if((j|0)==-1){break ja}e=J[f+24>>2];while(1){g=e+P(j,136)|0;if((d|0)==J[g>>2]&(i|0)==J[g+4>>2]){break ja}j=J[g+128>>2];if((j|0)!=-1){continue}break}g=0}e=g?g+8|0:0;ek(e,s,64);g=J[f+84>>2];ka:{m=yj(q)+1|0;d=J[g+4>>2];if(m>>>0<=d>>>0){i=J[g>>2];j=J[i>>2];la:{if(m>>>0<=d-j>>>0){d=i;break la}d=nj(d+8|0);J[d+4>>2]=i;j=0;J[d>>2]=0;J[g>>2]=d}J[d>>2]=j+m;d=hj((d+j|0)+8|0,q,m);break ka}Z(59925,39570,67,81716);B()}J[e+72>>2]=k;J[e+76>>2]=p;J[e+64>>2]=d;J[e+80>>2]=zs();J[e+84>>2]=Yi;if(n){g=zs();d=Yi;i=P(n,1e6);j=i;i=g+i|0;d=j>>>0>i>>>0?d+1|0:d}else{i=0;d=0}J[e+88>>2]=i;J[e+92>>2]=d;I[e+112>>1]=L[e+112>>1]|256;e=L[f+56>>1];d=L[f+58>>1];if((e|0)==(d|0)){break _}i=J[f+52>>2];if(!i){break Z}if(d>>>0>=e>>>0){break Y}I[f+58>>1]=d+1;e=L[i+(d<<1)>>1];d=J[f>>2];g=yj(d)+10|0;i=sj(g);J[l+20>>2]=e;J[l+16>>2]=d;Gj(i,g,76499,l+16|0);g=ol(i,82669);if(!g){J[l>>2]=i;dj(4,99340,149371,l);cj(i);d=J[f+52>>2];if(!d){break X}k=L[f+58>>1]-1|0;i=k&65535;if(i>>>0>=L[f+56>>1]){break W}I[f+58>>1]=k;I[d+(i<<1)>>1]=e;break _}d=J[f+64>>2];if(e>>>0>=J[f+68>>2]-d>>6>>>0){break a}d=d+(e<<6)|0;I[d+56>>1]=e;go(d+8|0,0);J[d+40>>2]=k;J[d+44>>2]=p;J[d>>2]=i;J[d+4>>2]=g;J[d+48>>2]=bj(q);J[d+52>>2]=Yi;H[d+58|0]=K[d+58|0]&254;J[h+172>>2]=d}Lj(t);Ui=l+224|0;break V}Z(49493,54391,151,43112);B()}Z(2701,54391,152,43112);B()}Z(49493,54391,140,53220);B()}Z(2650,54391,141,53220);B()}f=J[h+84>>2]}d=h+72|0;Zi[J[a+2136>>2]](d,J[a+2132>>2],f,0,0,0,0);ma:{if(!jj(c,98184)){d=Sx(a,d,0,J[a+2136>>2],0,c);break ma}d=J[h+88>>2];if(H[h+164|0]&1){f=d+r|0;d=J[h+92>>2]-d|0;f=el(r,f,d);J[h+88>>2]=0;J[h+92>>2]=d;while(1){na:{J[h+192>>2]=0;e=d+f|0;H[e|0]=0;k=Bm(f,158623);oa:{if(k){J[h+32>>2]=h+192;Lt(f,6386,h+32|0);J[h+88>>2]=(k-f|0)+2;e=h+72|0;d=Sx(a,e,J[h+192>>2],J[a+2136>>2],1,c);if(d){break ma}d=Sx(a,e,2,2277,0,c);if(d){break ma}if(J[h+192>>2]){break oa}d=0;break ma}if((d|0)>=65536){d=-2;break ma}d=65536-d|0;k=J[h+188>>2];pa:{if(k){d=NB(k,e,d,h+268|0);break pa}d=tB(J[h+184>>2],e,d,h+268|0)}d=(d|0)==-3?-101:d;if((d|0)!=-101?d:0){break na}e=J[a+2204>>2];if(J[e>>2]?e:0){break na}if(J[a+2160>>2]){e=bl()-J[a+2168>>2]|0;if((e|0)>=J[a+2160>>2]){break na}}if((d|0)==-101){break oa}if(d){break na}J[h+92>>2]=J[h+92>>2]+J[h+268>>2]}d=J[h+92>>2];continue}break}d=-1;break ma}if((d|0)==-1){break M}d=Sx(a,h+72|0,J[h+96>>2],J[a+2136>>2],1,c)}f=J[h+172>>2];if(!f){break N}if(d){H[f+58|0]=K[f+58|0]|1;f=J[h+172>>2]}i=Ui-1200|0;Ui=i;l=J[a+2192>>2];t=J[l+48>>2];Tj(t);qa:{ra:{sa:{ta:{k=J[f+4>>2];if(!(!k|!J[f>>2])){e=J[f+40>>2];n=J[f+44>>2];vk(k);J[f+4>>2]=0;ua:{g=J[l+20>>2];va:{if(!g){break va}u=l+16|0;k=J[f+48>>2];p=J[f+52>>2];j=J[J[u>>2]+(mxa(k,p,g)<<2)>>2];if((j|0)==-1){break va}m=J[l+24>>2];while(1){g=m+P(j,136)|0;if((k|0)==J[g>>2]&(p|0)==J[g+4>>2]){break ua}j=J[g+128>>2];if((j|0)!=-1){continue}break}}Z(2794,41889,565,71638);B()}if(H[f+58|0]&1){Fm(J[f>>2]);break ra}j=i+176|0;cN(J[l>>2],e,n,j);wa:{if(_k(j)){if(!Fm(j)){break wa}J[i+16>>2]=j;dj(4,99340,29760,i+16|0);break ra}j=i+176|0;m=ul(j,47);o=K[m|0];H[m|0]=0;xa:{if(_k(j)){break xa}if(fH(j)){v=lr(J[245744])}else{v=0}if(!v){break xa}J[i+32>>2]=j;dj(4,99340,146651,i+32|0);break ra}H[m|0]=o}j=L[g+120>>1];if(!(j&256)){break ta}if((e|0)!=J[g+80>>2]|(n|0)!=J[g+84>>2]){break sa}I[g+120>>1]=j&65279;J[g+104>>2]=jp(f+8|0);J[g+108>>2]=Yi;j=i+176|0;if(gx(j,J[f>>2])){e=i+48|0;ij(e,0,128);g=J[245744];if(e){n=L[((g>>>0<=153?g:0)<<1)+215472>>1]+213556|0;m=yj(n);J[245744]=g;g=m+1|0;g=g>>>0>128?128:g;H[(hj(e,n,g)+g|0)-1|0]=0}g=J[f>>2];J[i+12>>2]=J[245744];J[i>>2]=g;J[i+8>>2]=e;J[i+4>>2]=j;dj(4,99340,140629,i);break ra}bN(l,f);H[l+88|0]=1;break qa}Z(65871,41889,557,71638);B()}Z(51205,41889,609,71638);B()}Z(53301,41889,610,71638);B()}bN(l,f);tN(u,k,p)}Lj(t);Ui=i+1200|0;J[h+172>>2]=0}f=J[h+92>>2];if(!f){break L}J[h>>2]=f;J[h+4>>2]=c;J[h+8>>2]=J[h+84>>2];dj(4,99340,79207,h);d=-3;break p}Z(110563,38120,909,62542);B()}ya:{switch(d|0){case 0:break ya;case 1:break d;default:break p}}d=J[h+84>>2]!=200;break d}f=J[h+92>>2];if((f|0)<=65535){continue}}break}H[h+164|0]=K[h+164|0]|2;break p}J[a+2128>>2]=d;break q}J[a+2128>>2]=d}d=-1}H[h+164|0]=K[h+164|0]|2;f=J[a+2204>>2];if(J[f>>2]?f:0){break d}if(J[a+2160>>2]){f=bl()-J[a+2168>>2]|0;if((f|0)>=J[a+2160>>2]){break d}}f=J[h+180>>2];e=J[h+176>>2];k=J[e+28>>2];Tj(k);za:{Aa:{i=f&65535;l=J[e+12>>2];e=J[e+8>>2];if(i>>>0>6>>>0){e=e+(i<<6)|0;if(L[e+54>>1]!=(f>>>16|0)){break b}if(J[e+48>>2]!=2){break Aa}f=L[e+56>>1];Lj(k);break za}break a}Z(95091,40434,484,12252);B()}if(J[h+92>>2]|!f){break d}J[a+2188>>2]=J[a+2188>>2]+1;Rx(h+72|0);w=w+1|0;if((w|0)!=33){continue}break}dj(3,99340,114147,0);d=-1e3;break c}Rx(h+72|0)}Ui=h+272|0;return d}Z(8293,40434,187,45738);B()}Z(145396,54052,487,84789);B()}function Iia(a){a=a|0;var b=Q(0),c=Q(0),d=0,e=Q(0),f=Q(0),g=Q(0),h=Q(0),i=Q(0),j=0,k=Q(0),l=Q(0),m=Q(0),n=Q(0),o=Q(0),p=Q(0),q=0,r=Q(0),s=Q(0),t=Q(0),u=Q(0),v=Q(0),w=Q(0),x=0,y=0,z=Q(0),A=Q(0),C=Q(0),D=Q(0),E=Q(0),F=Q(0),G=Q(0),I=Q(0),L=Q(0),O=Q(0),R=Q(0),S=0,T=Q(0),U=0,V=0,W=Q(0),X=Q(0),Y=Q(0),_=Q(0),$=Q(0),aa=Q(0),ba=0,ca=0,da=0,ea=0,fa=Q(0),ga=Q(0),ha=Q(0),ia=0,ja=0,ka=0,la=0,ma=Q(0),na=Q(0),oa=Q(0),pa=Q(0),qa=0,ra=0,sa=0,ta=0;S=Ui-32|0;Ui=S;U=J[a+4>>2];ia=J[U+4>>2];ja=J[U>>2];ca=(ia-ja|0)/40|0;a:{x=(J[U+24>>2]-J[U+16>>2]|0)/336|0;ka=J[U+112>>2];b:{if(x>>>0>>0){J[S>>2]=x;dj(3,88458,11101,S);a=-1e3;break b}da=J[U+84>>2];ea=J[a+8>>2];if(K[ea+24|0]==1){c:{x=J[ea+4>>2];a=Ui-864|0;Ui=a;d:{e:{f:{d=J[da+4>>2];y=J[da>>2];if((d|0)!=(y|0)){d=d-y>>2;qa=d>>>0<=1?1:d;while(1){d=J[da>>2];if(J[da+4>>2]-d>>2>>>0<=ba>>>0){break a}y=J[d+(ba<<2)>>2];g:{if(!y){break g}d=J[y+4>>2];j=J[y>>2];if((d|0)==(j|0)){break g}d=(d-j|0)/304|0;ra=d>>>0<=1?1:d;sa=J[y+64>>2];V=0;while(1){j=J[y>>2];if((J[y+4>>2]-j|0)/304>>>0<=V>>>0){break a}d=J[sa+16>>2];if(M[d+4>>2]<=V>>>0){break f}d=J[d>>2];J[a+856>>2]=0;J[a+860>>2]=1065353216;J[a+848>>2]=0;J[a+852>>2]=1065353216;d=P(V,160)+d|0;j=j+P(V,304)|0;h:{i:{if(!J[j+280>>2]){c=Q(1);e=Q(0);break i}if(!(K[j+296|0]&4)&J[d+4>>2]==1){break h}c=N[d+8>>2];c=c<=Q(0)?Q(0):Q(N[j+264>>2]/c);e=Q(Q(1)-c)}N[a+856>>2]=c;N[a+852>>2]=e}f=N[y+60>>2];k=N[y+44>>2];c=Q(N[d+16>>2]*k);e=N[d+24>>2];e=H[y+82|0]&1?Q(e*k):e;b=N[y+52>>2];i=N[y+56>>2];g=Q(N[d+20>>2]*k);u=Q(Q(Q(f*c)+Q(e*b))-Q(i*g));h=N[y+48>>2];r=Q(Q(i*e)+Q(Q(h*c)+Q(b*g)));p=Q(Q(Q(f*g)+Q(i*c))-Q(h*e));c=Q(Q(Q(f*e)+Q(h*g))-Q(b*c));v=Q(N[y+36>>2]+Q(Q(u*i)+Q(Q(Q(r*b)+Q(f*p))-Q(c*h))));s=Q(N[y+40>>2]+Q(Q(p*h)+Q(Q(Q(r*i)+Q(f*c))-Q(u*b))));u=Q(N[y+32>>2]+Q(Q(c*b)+Q(Q(Q(r*h)+Q(f*u))-Q(p*i))));r=N[d+44>>2];p=N[d+32>>2];l=N[d+36>>2];m=N[d+40>>2];c=Q(Q(Q(Q(f*r)-Q(h*p))-Q(b*l))-Q(i*m));e=Q(Q(Q(h*l)+Q(Q(f*m)+Q(r*i)))-Q(b*p));g=Q(Q(Q(i*p)+Q(Q(f*l)+Q(r*b)))-Q(h*m));f=Q(Q(Q(b*m)+Q(Q(f*p)+Q(r*h)))-Q(i*l));j:{k:{switch(J[d+76>>2]-2|0){case 1:if(M[d+88>>2]<=1){break e}d=J[d+84>>2];if(!J[d+24>>2]){break d}b=Q(N[J[d+20>>2]+4>>2]*Q(.5));d=0;while(1){j=(a+32|0)+P(d,48)|0;J[j+36>>2]=0;J[j+16>>2]=0;J[j+8>>2]=0;h=Q(Q(Q(d>>>0)*Q(6.2831854820251465))*Q(.0625));i=Q(b*Hj(h));N[j+40>>2]=i;h=Q(b*Rj(h));N[j+32>>2]=h;N[j+24>>2]=i;N[j+20>>2]=h;N[j+4>>2]=i;N[j>>2]=h;d=d+1|0;if((d|0)!=17){continue}break};r=Q(-g);p=Q(-f);l=Q(-e);d=1;while(1){j=0;ta=(P(d,48)+a|0)-16|0;while(1){la=j<<4;q=la+ta|0;b=Q(k*N[q+8>>2]);i=Q(k*N[q+4>>2]);h=Q(k*N[q>>2]);m=Q(Q(p*b)+Q(Q(c*i)+Q(e*h)));o=Q(Q(e*b)+Q(Q(f*h)+Q(g*i)));n=Q(Q(r*h)+Q(Q(c*b)+Q(f*i)));b=Q(Q(l*i)+Q(Q(c*h)+Q(g*b)));N[a+24>>2]=s+Q(Q(m*f)+Q(Q(Q(o*e)+Q(c*n))-Q(b*g)));N[a+20>>2]=v+Q(Q(b*e)+Q(Q(Q(o*g)+Q(c*m))-Q(n*f)));N[a+16>>2]=u+Q(Q(n*g)+Q(Q(Q(o*f)+Q(c*b))-Q(m*e)));q=la+((a+32|0)+P(d,48)|0)|0;b=Q(k*N[q+8>>2]);i=Q(k*N[q+4>>2]);h=Q(k*N[q>>2]);m=Q(Q(p*b)+Q(Q(c*i)+Q(e*h)));o=Q(Q(e*b)+Q(Q(f*h)+Q(g*i)));n=Q(Q(r*h)+Q(Q(c*b)+Q(f*i)));b=Q(Q(l*i)+Q(Q(c*h)+Q(g*b)));N[a+8>>2]=s+Q(Q(m*f)+Q(Q(Q(o*e)+Q(c*n))-Q(b*g)));N[a+4>>2]=v+Q(Q(b*e)+Q(Q(Q(o*g)+Q(c*m))-Q(n*f)));N[a>>2]=u+Q(Q(n*g)+Q(Q(Q(o*f)+Q(c*b))-Q(m*e)));om(x,a+16|0,a,a+848|0);j=j+1|0;if((j|0)!=3){continue}break}d=d+1|0;if((d|0)!=17){continue}break};break j;case 2:j=J[d+88>>2];if(j>>>0<=1){break e}d=J[d+84>>2];if(!J[d+24>>2]){break d}if((j|0)==2){break e}if(!J[d+40>>2]){break d}b=N[J[d+20>>2]+4>>2];i=N[J[d+36>>2]+4>>2];N[a+40>>2]=s;N[a+36>>2]=v;N[a+32>>2]=u;r=Q(-e);h=Q(k*Q(0));A=Q(r*h);b=Q(b*Q(.5));l=Q(k*b);F=Q(c*l);m=Q(k*i);O=Q(g*m);R=Q(A+Q(F+O));o=Q(e*m);W=Q(f*l);C=Q(h*g);t=Q(o+Q(W+C));p=Q(-f);n=Q(p*m);G=Q(c*h);E=Q(e*l);D=Q(n+Q(G+E));m=Q(c*m);w=Q(f*h);z=Q(m+w);X=Q(g*l);l=Q(z-X);N[a+20>>2]=v+Q(Q(R*e)+Q(Q(Q(t*g)+Q(c*D))-Q(l*f)));N[a+24>>2]=s+Q(Q(D*f)+Q(Q(Q(t*e)+Q(c*l))-Q(R*g)));N[a+16>>2]=u+Q(Q(l*g)+Q(Q(Q(t*f)+Q(c*R))-Q(D*e)));d=a+32|0;j=a+16|0;q=a+848|0;om(x,d,j,q);N[a+40>>2]=s;N[a+36>>2]=v;N[a+32>>2]=u;R=Q(-b);l=Q(k*R);Y=Q(e*l);t=Q(n+Q(G+Y));L=Q(f*l);D=Q(o+Q(L+C));I=z;z=Q(g*l);C=Q(I-z);I=A;A=Q(c*l);l=Q(I+Q(A+O));N[a+24>>2]=s+Q(Q(t*f)+Q(Q(Q(D*e)+Q(c*C))-Q(l*g)));N[a+20>>2]=v+Q(Q(l*e)+Q(Q(Q(D*g)+Q(c*t))-Q(C*f)));N[a+16>>2]=u+Q(Q(C*g)+Q(Q(Q(D*f)+Q(c*l))-Q(t*e)));om(x,d,j,q);N[a+40>>2]=s;N[a+36>>2]=v;N[a+32>>2]=u;C=Q(h*e);t=Q(n+Q(F+C));D=Q(o+Q(w+X));l=Q(-g);F=Q(l*h);h=Q(F+Q(m+W));G=Q(G+O);O=Q(G-E);N[a+24>>2]=s+Q(Q(t*f)+Q(Q(Q(D*e)+Q(c*h))-Q(O*g)));N[a+20>>2]=v+Q(Q(O*e)+Q(Q(Q(D*g)+Q(c*t))-Q(h*f)));N[a+16>>2]=u+Q(Q(h*g)+Q(Q(Q(D*f)+Q(c*O))-Q(t*e)));om(x,d,j,q);N[a+40>>2]=s;N[a+36>>2]=v;N[a+32>>2]=u;h=Q(n+Q(A+C));o=Q(o+Q(w+z));m=Q(F+Q(m+L));n=Q(G-Y);N[a+24>>2]=s+Q(Q(h*f)+Q(Q(Q(o*e)+Q(c*m))-Q(n*g)));N[a+20>>2]=v+Q(Q(n*e)+Q(Q(Q(o*g)+Q(c*h))-Q(m*f)));N[a+16>>2]=u+Q(Q(m*g)+Q(Q(Q(o*f)+Q(c*n))-Q(h*e)));om(x,d,j,q);N[a+280>>2]=i;h=Q(b*Q(-.3826834261417389));N[a+276>>2]=h;N[a+272>>2]=b*Q(.9238795638084412);N[a+264>>2]=i;N[a+260>>2]=b*Q(-.7071065306663513);N[a+256>>2]=b*Q(.7071070075035095);N[a+248>>2]=i;N[a+244>>2]=b*Q(-.9238794445991516);N[a+240>>2]=b*Q(.3826836049556732);N[a+232>>2]=i;N[a+228>>2]=R;N[a+224>>2]=b*Q(1.1924880638503055e-8);N[a+216>>2]=i;N[a+212>>2]=b*Q(-.9238796830177307);N[a+208>>2]=b*Q(-.382683128118515);N[a+200>>2]=i;N[a+196>>2]=b*Q(-.70710688829422);N[a+192>>2]=b*Q(-.7071066498756409);N[a+184>>2]=i;N[a+180>>2]=h;N[a+176>>2]=b*Q(-.9238795042037964);N[a+168>>2]=i;N[a+164>>2]=b*Q(-8.742277657347586e-8);N[a+160>>2]=R;N[a+152>>2]=i;N[a+148>>2]=b*Q(.38268327713012695);N[a+144>>2]=b*Q(-.9238796234130859);N[a+136>>2]=i;h=Q(b*Q(.7071067690849304));N[a+132>>2]=h;N[a+128>>2]=b*Q(-.7071067690849304);N[a+120>>2]=i;m=Q(b*Q(.9238795042037964));N[a+116>>2]=m;N[a+112>>2]=b*Q(-.38268351554870605);N[a+104>>2]=i;N[a+100>>2]=b;N[a+96>>2]=b*Q(-4.371138828673793e-8);N[a+88>>2]=i;N[a+84>>2]=m;N[a+80>>2]=b*Q(.3826834261417389);N[a+72>>2]=i;N[a+68>>2]=h;N[a+64>>2]=h;N[a+56>>2]=i;N[a+52>>2]=b*Q(.3826834559440613);N[a+48>>2]=m;N[a+40>>2]=i;N[a+36>>2]=b*Q(0);N[a+32>>2]=b;d=1;while(1){j=(a+32|0)+(d<<4)|0;q=j-16|0;b=Q(k*N[q+8>>2]);i=Q(k*N[q+4>>2]);h=Q(k*N[q>>2]);m=Q(Q(p*b)+Q(Q(c*i)+Q(e*h)));o=Q(Q(e*b)+Q(Q(f*h)+Q(g*i)));n=Q(Q(l*h)+Q(Q(c*b)+Q(f*i)));b=Q(Q(r*i)+Q(Q(c*h)+Q(g*b)));N[a+24>>2]=s+Q(Q(m*f)+Q(Q(Q(o*e)+Q(c*n))-Q(b*g)));N[a+20>>2]=v+Q(Q(b*e)+Q(Q(Q(o*g)+Q(c*m))-Q(n*f)));N[a+16>>2]=u+Q(Q(n*g)+Q(Q(Q(o*f)+Q(c*b))-Q(m*e)));b=Q(k*N[j+8>>2]);i=Q(k*N[j+4>>2]);h=Q(k*N[j>>2]);m=Q(Q(p*b)+Q(Q(c*i)+Q(e*h)));o=Q(Q(e*b)+Q(Q(f*h)+Q(g*i)));n=Q(Q(l*h)+Q(Q(c*b)+Q(f*i)));b=Q(Q(r*i)+Q(Q(c*h)+Q(g*b)));N[a+8>>2]=s+Q(Q(m*f)+Q(Q(Q(o*e)+Q(c*n))-Q(b*g)));N[a+4>>2]=v+Q(Q(b*e)+Q(Q(Q(o*g)+Q(c*m))-Q(n*f)));N[a>>2]=u+Q(Q(n*g)+Q(Q(Q(o*f)+Q(c*b))-Q(m*e)));j=a+16|0;q=a+848|0;om(x,j,a,q);d=d+1|0;if((d|0)!=16){continue}break};b=Q(k*N[a+280>>2]);i=Q(k*N[a+276>>2]);h=Q(k*N[a+272>>2]);m=Q(Q(p*b)+Q(Q(c*i)+Q(e*h)));o=Q(Q(e*b)+Q(Q(f*h)+Q(g*i)));n=Q(Q(l*h)+Q(Q(c*b)+Q(f*i)));b=Q(Q(r*i)+Q(Q(c*h)+Q(g*b)));N[a+24>>2]=s+Q(Q(m*f)+Q(Q(Q(o*e)+Q(c*n))-Q(b*g)));N[a+20>>2]=v+Q(Q(b*e)+Q(Q(Q(o*g)+Q(c*m))-Q(n*f)));N[a+16>>2]=u+Q(Q(n*g)+Q(Q(Q(o*f)+Q(c*b))-Q(m*e)));A=s;b=Q(k*N[a+40>>2]);s=Q(k*N[a+36>>2]);k=Q(k*N[a+32>>2]);i=Q(Q(p*b)+Q(Q(c*s)+Q(e*k)));h=Q(Q(e*b)+Q(Q(f*k)+Q(g*s)));p=Q(Q(l*k)+Q(Q(c*b)+Q(f*s)));k=Q(Q(r*s)+Q(Q(c*k)+Q(g*b)));N[a+8>>2]=A+Q(Q(i*f)+Q(Q(Q(h*e)+Q(c*p))-Q(k*g)));N[a+4>>2]=v+Q(Q(k*e)+Q(Q(Q(h*g)+Q(c*i))-Q(p*f)));N[a>>2]=u+Q(Q(p*g)+Q(Q(Q(h*f)+Q(c*k))-Q(i*e)));om(x,j,a,q);break j;case 0:break k;default:break j}}j=J[d+88>>2];if(j>>>0<=1){break e}d=J[d+84>>2];if(!J[d+24>>2]){break d}if((j|0)==2){break e}if(!J[d+40>>2]){break d}if(j>>>0<=3){break e}if(!J[d+56>>2]){break d}C=Q(-e);w=Q(N[J[d+36>>2]+4>>2]*Q(.5));b=Q(k*Q(-w));i=Q(C*b);t=Q(N[J[d+20>>2]+4>>2]*Q(.5));h=Q(k*Q(-t));X=Q(c*h);E=Q(N[J[d+52>>2]+4>>2]*Q(.5));r=Q(k*Q(-E));G=Q(g*r);W=Q(X+G);m=Q(i+W);p=Q(e*r);z=Q(f*h);D=Q(g*b);Y=Q(z+D);o=Q(p+Y);L=Q(-f);l=Q(L*r);A=Q(c*b);_=Q(e*h);$=Q(A+_);n=Q(l+$);F=Q(-g);h=Q(F*h);I=Q(c*r);fa=Q(f*b);aa=Q(I+fa);b=Q(h+aa);O=Q(v+Q(Q(m*e)+Q(Q(Q(o*g)+Q(c*n))-Q(b*f))));N[a+36>>2]=O;R=Q(s+Q(Q(n*f)+Q(Q(Q(o*e)+Q(c*b))-Q(m*g))));N[a+40>>2]=R;m=Q(u+Q(Q(b*g)+Q(Q(Q(o*f)+Q(c*m))-Q(n*e))));N[a+32>>2]=m;T=A;b=Q(k*t);A=Q(e*b);ga=Q(T+A);o=Q(l+ga);T=Q(f*b);ma=Q(T+D);n=Q(p+ma);r=Q(F*b);t=Q(r+aa);aa=Q(c*b);F=Q(aa+G);b=Q(i+F);G=Q(s+Q(Q(o*f)+Q(Q(Q(n*e)+Q(c*t))-Q(b*g))));N[a+24>>2]=G;D=Q(v+Q(Q(b*e)+Q(Q(Q(n*g)+Q(c*o))-Q(t*f))));N[a+20>>2]=D;o=Q(u+Q(Q(t*g)+Q(Q(Q(n*f)+Q(c*b))-Q(o*e))));N[a+16>>2]=o;d=a+32|0;j=a+16|0;q=a+848|0;om(x,d,j,q);N[a+40>>2]=G;N[a+36>>2]=D;N[a+32>>2]=o;b=Q(k*w);ha=Q(c*b);na=Q(ha+A);n=Q(l+na);A=T;T=Q(g*b);oa=Q(A+T);t=Q(p+oa);A=I;I=Q(f*b);pa=Q(A+I);w=Q(r+pa);b=Q(C*b);C=Q(b+F);A=Q(s+Q(Q(n*f)+Q(Q(Q(t*e)+Q(c*w))-Q(C*g))));N[a+24>>2]=A;F=Q(v+Q(Q(C*e)+Q(Q(Q(t*g)+Q(c*n))-Q(w*f))));N[a+20>>2]=F;n=Q(u+Q(Q(w*g)+Q(Q(Q(t*f)+Q(c*C))-Q(n*e))));N[a+16>>2]=n;om(x,d,j,q);N[a+40>>2]=A;N[a+36>>2]=F;N[a+32>>2]=n;ha=Q(ha+_);l=Q(l+ha);T=Q(z+T);p=Q(p+T);t=Q(h+pa);w=Q(b+W);C=Q(s+Q(Q(l*f)+Q(Q(Q(p*e)+Q(c*t))-Q(w*g))));N[a+24>>2]=C;W=Q(v+Q(Q(w*e)+Q(Q(Q(p*g)+Q(c*l))-Q(t*f))));N[a+20>>2]=W;t=Q(u+Q(Q(t*g)+Q(Q(Q(p*f)+Q(c*w))-Q(l*e))));N[a+16>>2]=t;om(x,d,j,q);N[a+40>>2]=C;N[a+36>>2]=W;N[a+32>>2]=t;N[a+24>>2]=R;N[a+20>>2]=O;N[a+16>>2]=m;om(x,d,j,q);k=Q(k*E);p=Q(L*k);w=Q(p+$);l=Q(e*k);E=Q(l+Y);$=Q(c*k);L=Q($+fa);z=Q(h+L);_=Q(g*k);fa=Q(X+_);k=Q(i+fa);X=Q(s+Q(Q(w*f)+Q(Q(Q(E*e)+Q(c*z))-Q(k*g))));N[a+40>>2]=X;Y=Q(v+Q(Q(k*e)+Q(Q(Q(E*g)+Q(c*w))-Q(z*f))));N[a+36>>2]=Y;k=Q(u+Q(Q(z*g)+Q(Q(Q(E*f)+Q(c*k))-Q(w*e))));N[a+32>>2]=k;w=Q(p+ga);E=Q(l+ma);z=Q(r+L);aa=Q(aa+_);i=Q(i+aa);L=Q(s+Q(Q(w*f)+Q(Q(Q(E*e)+Q(c*z))-Q(i*g))));N[a+24>>2]=L;_=Q(v+Q(Q(i*e)+Q(Q(Q(E*g)+Q(c*w))-Q(z*f))));N[a+20>>2]=_;i=Q(u+Q(Q(z*g)+Q(Q(Q(E*f)+Q(c*i))-Q(w*e))));N[a+16>>2]=i;om(x,d,j,q);N[a+40>>2]=L;N[a+36>>2]=_;N[a+32>>2]=i;w=Q(p+na);E=Q(l+oa);ga=Q($+I);r=Q(r+ga);z=Q(b+aa);$=Q(s+Q(Q(w*f)+Q(Q(Q(E*e)+Q(c*r))-Q(z*g))));N[a+24>>2]=$;I=Q(v+Q(Q(z*e)+Q(Q(Q(E*g)+Q(c*w))-Q(r*f))));N[a+20>>2]=I;r=Q(u+Q(Q(r*g)+Q(Q(Q(E*f)+Q(c*z))-Q(w*e))));N[a+16>>2]=r;om(x,d,j,q);N[a+40>>2]=$;N[a+36>>2]=I;N[a+32>>2]=r;z=s;s=Q(p+ha);p=Q(l+T);h=Q(h+ga);b=Q(b+fa);l=Q(z+Q(Q(s*f)+Q(Q(Q(p*e)+Q(c*h))-Q(b*g))));N[a+24>>2]=l;v=Q(v+Q(Q(b*e)+Q(Q(Q(p*g)+Q(c*s))-Q(h*f))));N[a+20>>2]=v;c=Q(u+Q(Q(h*g)+Q(Q(Q(p*f)+Q(c*b))-Q(s*e))));N[a+16>>2]=c;om(x,d,j,q);N[a+40>>2]=l;N[a+36>>2]=v;N[a+32>>2]=c;N[a+24>>2]=X;N[a+20>>2]=Y;N[a+16>>2]=k;om(x,d,j,q);N[a+40>>2]=R;N[a+36>>2]=O;N[a+32>>2]=m;N[a+24>>2]=X;N[a+20>>2]=Y;N[a+16>>2]=k;om(x,d,j,q);N[a+40>>2]=G;N[a+36>>2]=D;N[a+32>>2]=o;N[a+24>>2]=L;N[a+20>>2]=_;N[a+16>>2]=i;om(x,d,j,q);N[a+40>>2]=A;N[a+36>>2]=F;N[a+32>>2]=n;N[a+24>>2]=$;N[a+20>>2]=I;N[a+16>>2]=r;om(x,d,j,q);N[a+40>>2]=C;N[a+36>>2]=W;N[a+32>>2]=t;N[a+24>>2]=l;N[a+20>>2]=v;N[a+16>>2]=c;om(x,d,j,q)}V=V+1|0;if((ra|0)!=(V|0)){continue}break}}ba=ba+1|0;if((qa|0)!=(ba|0)){continue}break}}Ui=a+864|0;break c}Z(12664,55442,270,84789);B()}Z(12664,55442,225,84789);B()}Z(12664,55442,180,84789);B()}}x=zq(J[ea+4>>2],ka);d=fC(J[ea+4>>2],300,U);a=x;if((ia|0)!=(ja|0)){V=ca>>>0<=1?1:ca;ba=d<<6|16;y=0;while(1){d=J[U>>2];if((J[U+4>>2]-d|0)/40>>>0<=y>>>0){break a}q=d+P(y,40)|0;l:{if(!(H[q+32|0]&1)){break l}J[75600]=J[75600]+1;J[S+24>>2]=1;J[S+28>>2]=0;J[S+8>>2]=1;J[S+12>>2]=0;d=J[q+20>>2];ca=(J[d+4>>2]-J[d>>2]|0)/18568|0;if(!ca){break l}j=0;while(1){AC(da,J[q+16>>2],j,S+20|0);d=J[S+20>>2];ia=J[d+64>>2];ja=J[d+48>>2];ka=J[d+52>>2];c=N[d+56>>2];J[a+16>>2]=d;J[a+20>>2]=0;N[a+8>>2]=c;J[a>>2]=ja;J[a+4>>2]=ka;J[a+28>>2]=J[d+100>>2];J[a+32>>2]=J[J[ia>>2]+144>>2];J[a+36>>2]=ba|J[a+36>>2]&-16384;a=a+48|0;j=j+1|0;if((ca|0)!=(j|0)){continue}break}}y=y+1|0;if((V|0)!=(y|0)){continue}break}}yq(J[ea+4>>2],x,a);a=0}Ui=S+32|0;return a|0}Z(145396,53895,487,84789);B()}function TE(a,b,c){var d=0,e=0,f=0,g=0,h=Q(0),i=0,j=0,k=0,l=0,m=0,n=0,o=0,p=0,q=0,r=0,s=0,t=Q(0),u=0,v=0,w=0,x=0,y=0,z=Q(0),A=Q(0),C=Q(0),D=0,E=0,F=Q(0),G=0,I=Q(0),L=Q(0),M=Q(0),O=Q(0),S=0,T=Q(0),U=Q(0),V=Q(0),W=0,X=0;j=Ui-48|0;Ui=j;a:{b:{c:{if(c&4){e=K[a+4|0]|K[a+5|0]<<8|(K[a+6|0]<<16|K[a+7|0]<<24);H[j+47|0]=K[(e>>>30|0)+169104|0];H[j+32|0]=K[(e&3)+169104|0];H[j+46|0]=K[(e>>>28&3)+169104|0];H[j+45|0]=K[(e>>>26&3)+169104|0];H[j+44|0]=K[(e>>>24&3)+169104|0];H[j+43|0]=K[(e>>>22&3)+169104|0];H[j+42|0]=K[(e>>>20&3)+169104|0];H[j+41|0]=K[(e>>>18&3)+169104|0];H[j+40|0]=K[(e>>>16&3)+169104|0];H[j+39|0]=K[(e>>>14&3)+169104|0];H[j+38|0]=K[(e>>>12&3)+169104|0];H[j+37|0]=K[(e>>>10&3)+169104|0];H[j+36|0]=K[(e>>>8&3)+169104|0];H[j+35|0]=K[(e>>>6&3)+169104|0];H[j+34|0]=K[(e>>>4&3)+169104|0];H[j+33|0]=K[(e>>>2&3)+169104|0];E=-1;break c}d=K[b+2|0];d:{e:{f:{D=K[b+4|0];f=K[b|0];l=K[b+1|0];g:{if((D|0)!=(f|0)|(l|0)!=K[b+5|0]|((d|0)!=K[b+6|0]|(f|0)!=K[b+8|0])){break g}if((l|0)!=K[b+9|0]|(d|0)!=K[b+10|0]|((f|0)!=K[b+12|0]|(l|0)!=K[b+13|0])){break g}if((d|0)!=K[b+14|0]|(f|0)!=K[b+16|0]|((l|0)!=K[b+17|0]|(d|0)!=K[b+18|0])){break g}if((f|0)!=K[b+20|0]|(l|0)!=K[b+21|0]|((d|0)!=K[b+22|0]|(f|0)!=K[b+24|0])){break g}if((l|0)!=K[b+25|0]|(d|0)!=K[b+26|0]|((f|0)!=K[b+28|0]|(l|0)!=K[b+29|0])){break g}if((d|0)!=K[b+30|0]|(f|0)!=K[b+32|0]|((l|0)!=K[b+33|0]|(d|0)!=K[b+34|0])){break g}if((f|0)!=K[b+36|0]|(l|0)!=K[b+37|0]|((d|0)!=K[b+38|0]|(f|0)!=K[b+40|0])){break g}if((l|0)!=K[b+41|0]|(d|0)!=K[b+42|0]|((f|0)!=K[b+44|0]|(l|0)!=K[b+45|0])){break g}if((d|0)!=K[b+46|0]|(f|0)!=K[b+48|0]|((l|0)!=K[b+49|0]|(d|0)!=K[b+50|0])){break g}if((f|0)!=K[b+52|0]|(l|0)!=K[b+53|0]|((d|0)!=K[b+54|0]|(f|0)!=K[b+56|0])){break g}if((l|0)!=K[b+57|0]|(d|0)!=K[b+58|0]|((f|0)!=K[b+60|0]|(l|0)!=K[b+61|0])){break g}if((d|0)==K[b+62|0]){break f}}E=1;g=f;q=f;i=f;p=d;n=d;G=d;o=l;e=l;S=e;while(1){m=(E<<2)+b|0;r=K[m+2|0];p=(p|0)<(r|0)?p:r;s=K[m+1|0];o=(o|0)<(s|0)?o:s;m=K[m|0];q=(m|0)>(q|0)?q:m;n=(n|0)>(r|0)?n:r;e=(e|0)>(s|0)?e:s;i=(i|0)>(m|0)?i:m;G=r+G|0;S=s+S|0;g=g+m|0;E=E+1|0;if((E|0)!=16){continue}break}G=G+8>>>4|0;S=S+8>>>4|0;E=g+8>>>4|0;g=0;while(1){m=(g<<2)+b|0;r=K[m+2|0]-G|0;s=K[m+1|0]-S|0;u=P(r,s)+u|0;m=K[m|0]-E|0;w=P(m,r)+w|0;x=P(m,s)+x|0;v=P(r,r)+v|0;k=P(s,s)+k|0;y=P(m,m)+y|0;g=g+1|0;if((g|0)!=16){continue}break}z=Q(n-p|0);T=Q(Q(v>>>0)*Q(.003921568859368563));t=Q(i-q|0);L=Q(Q(w|0)*Q(.003921568859368563));M=Q(Q(u|0)*Q(.003921568859368563));h=Q(e-o|0);I=Q(Q(z*T)+Q(Q(t*L)+Q(M*h)));A=Q(Q(y>>>0)*Q(.003921568859368563));O=Q(Q(x|0)*Q(.003921568859368563));C=Q(Q(z*L)+Q(Q(t*A)+Q(O*h)));U=Q(Q(k>>>0)*Q(.003921568859368563));h=Q(Q(z*M)+Q(Q(t*O)+Q(U*h)));z=Q(Q(I*T)+Q(Q(C*L)+Q(h*M)));t=Q(Q(I*L)+Q(Q(C*A)+Q(h*O)));h=Q(Q(I*M)+Q(Q(C*O)+Q(h*U)));V=Q(Q(z*T)+Q(Q(t*L)+Q(h*M)));F=Q(Q(z*L)+Q(Q(t*A)+Q(h*O)));C=Q(F*A);A=Q(Q(z*M)+Q(Q(t*O)+Q(h*U)));I=Q(Q(V*L)+Q(C+Q(A*O)));t=Q(R(I));C=Q(Q(V*M)+Q(Q(F*O)+Q(A*U)));h=Q(R(C));z=h=Q(2)){break e}e=117;i=601;g=306;break d}e=1;i=170;d=(d<<1)+318192|0;c=(l<<1)+318704|0;b=(f<<1)+318192|0;g=K[d+1|0]|(K[c+1|0]<<5|K[b+1|0]<<11);b=K[d|0]|(K[c|0]<<5|K[b|0]<<11);h:{if((g|0)==(b|0)){if(!b){i=85;b=0;break h}i=0;g=b-1|0}if(b>>>0>=g>>>0){e=b;b=g;break h}i=i|85;e=g}H[a+2|0]=b;H[a|0]=e;c=P(i,16843009);H[a+4|0]=c;H[a+5|0]=c>>>8;H[a+6|0]=c>>>16;H[a+7|0]=c>>>24;H[a+3|0]=b>>>8;H[a+1|0]=e>>>8;break b}z=t;t=Q(Q(1024)/h);h=Q(z*t);i:{if(Q(R(h))(f|0)?15:d?14:W)<<2)+b|0;e=P(K[i|0],31)+128|0;g=(l|0)<(q|0);d=g?q:l;l=(d|0)<(y|0);q=e+(e>>>8|0)>>>8|0;e=P(K[i+1|0],63)+128|0;W=(e>>>8|0)+e>>>8|0;e=P(K[i+2|0],31)+128|0;i=(e>>>8|0)+e>>>8|0;d=l?y:d;e=(d|0)<(x|0);g=e?3:l?2:g;d=e?x:d;e=(d|0)<(w|0);g=e?4:g;d=e?w:d;e=(d|0)<(r|0);g=e?5:g;d=e?r:d;e=(d|0)<(s|0);g=e?6:g;d=e?s:d;e=(d|0)<(u|0);g=e?7:g;d=e?u:d;e=(d|0)<(m|0);g=e?8:g;d=e?m:d;e=(d|0)<(v|0);g=e?9:g;d=e?v:d;e=(d|0)<(k|0);g=e?10:g;d=e?k:d;e=(d|0)<(D|0);g=e?11:g;d=e?D:d;e=(d|0)<(p|0);g=e?12:g;d=e?p:d;e=(d|0)<(n|0);g=e?13:g;d=e?n:d;e=(d|0)<(o|0);d=(((f|0)>((e?o:d)|0)?15:e?14:g)<<2)+b|0;e=P(K[d|0],31)+128|0;g=(e>>>8|0)+e>>>8|0;e=P(K[d+1|0],63)+128|0;f=(e>>>8|0)+e>>>8|0;e=P(K[d+2|0],31)+128|0;BU(b,q,W,i,g,f,(e>>>8|0)+e>>>8|0,j+32|0)}D=c&2?3:(c&1)+1|0;e=0;while(1){n=j+32|0;u=0;m=0;v=0;p=0;o=0;i=0;c=0;g=0;while(1){k=K[g+n|0];d=(g<<2)+b|0;l=K[d+2|0];o=P(k,l)+o|0;f=K[d+1|0];v=P(f,k)+v|0;d=K[d|0];u=P(d,k)+u|0;c=J[(k<<2)+169552>>2]+c|0;i=i+l|0;p=f+p|0;m=d+m|0;g=g+1|0;if((g|0)!=16){continue}break}z=Q((c>>>16&255)>>>0);t=Q((c&255)>>>0);c=c>>>8&255;h=Q(Q(z*t)-Q(P(c,c)>>>0));d=Q(R(h))>>0);I=Q(Q(Q(m>>>0)*Q(3))-A);h=Q(Q(3)/h);C=Q(h*t);F=Q(h*Q(-Q(c>>>0)));N[j+20>>2]=Q(C*A)+Q(F*I);z=Q(h*z);N[j+8>>2]=Q(F*A)+Q(z*I);t=Q(v>>>0);h=Q(Q(Q(p>>>0)*Q(3))-t);N[j+24>>2]=Q(C*t)+Q(h*F);N[j+12>>2]=Q(F*t)+Q(h*z);t=Q(o>>>0);h=Q(Q(Q(i>>>0)*Q(3))-t);N[j+28>>2]=Q(C*t)+Q(h*F);N[j+16>>2]=Q(F*t)+Q(h*z);l:{if(!(N[j+20>>2]>2]>Q(255))){break l}q=K[b|0];y=K[b+4|0];c=q>>>0>>0?q:y;x=K[b+8|0];c=c>>>0>>0?c:x;w=K[b+12|0];c=c>>>0>>0?c:w;r=K[b+16|0];c=c>>>0>>0?c:r;s=K[b+20|0];c=c>>>0>>0?c:s;u=K[b+24|0];c=c>>>0>>0?c:u;m=K[b+28|0];c=c>>>0>>0?c:m;v=K[b+32|0];c=c>>>0>>0?c:v;k=K[b+36|0];c=c>>>0>>0?c:k;p=K[b+40|0];c=c>>>0

>>0?c:p;n=K[b+44|0];c=c>>>0>>0?c:n;o=K[b+48|0];c=c>>>0>>0?c:o;i=K[b+52|0];c=c>>>0>>0?c:i;l=K[b+56|0];c=c>>>0>>0?c:l;f=K[b+60|0];g=c>>>0>>0?c:f;c=q>>>0>y>>>0?q:y;c=c>>>0>x>>>0?c:x;c=c>>>0>w>>>0?c:w;c=c>>>0>r>>>0?c:r;c=c>>>0>s>>>0?c:s;c=c>>>0>u>>>0?c:u;c=c>>>0>m>>>0?c:m;c=c>>>0>v>>>0?c:v;c=c>>>0>k>>>0?c:k;c=c>>>0>p>>>0?c:p;c=c>>>0>n>>>0?c:n;c=c>>>0>o>>>0?c:o;c=c>>>0>i>>>0?c:i;c=c>>>0>l>>>0?c:l;if((g|0)!=((c>>>0>f>>>0?c:f)|0)){break l}h=Q(g>>>0);N[j+20>>2]=h;N[j+8>>2]=h}m:{if(!(N[j+24>>2]>2]>Q(255))){break m}q=K[b+1|0];y=K[b+5|0];c=q>>>0>>0?q:y;x=K[b+9|0];c=c>>>0>>0?c:x;w=K[b+13|0];c=c>>>0>>0?c:w;r=K[b+17|0];c=c>>>0>>0?c:r;s=K[b+21|0];c=c>>>0>>0?c:s;u=K[b+25|0];c=c>>>0>>0?c:u;m=K[b+29|0];c=c>>>0>>0?c:m;v=K[b+33|0];c=c>>>0>>0?c:v;k=K[b+37|0];c=c>>>0>>0?c:k;p=K[b+41|0];c=c>>>0

>>0?c:p;n=K[b+45|0];c=c>>>0>>0?c:n;o=K[b+49|0];c=c>>>0>>0?c:o;i=K[b+53|0];c=c>>>0>>0?c:i;l=K[b+57|0];c=c>>>0>>0?c:l;f=K[b+61|0];g=c>>>0>>0?c:f;c=q>>>0>y>>>0?q:y;c=c>>>0>x>>>0?c:x;c=c>>>0>w>>>0?c:w;c=c>>>0>r>>>0?c:r;c=c>>>0>s>>>0?c:s;c=c>>>0>u>>>0?c:u;c=c>>>0>m>>>0?c:m;c=c>>>0>v>>>0?c:v;c=c>>>0>k>>>0?c:k;c=c>>>0>p>>>0?c:p;c=c>>>0>n>>>0?c:n;c=c>>>0>o>>>0?c:o;c=c>>>0>i>>>0?c:i;c=c>>>0>l>>>0?c:l;if((g|0)!=((c>>>0>f>>>0?c:f)|0)){break m}h=Q(g>>>0);N[j+24>>2]=h;N[j+12>>2]=h}if(!(N[j+28>>2]>2]>Q(255))){break k}q=K[b+2|0];y=K[b+6|0];c=q>>>0>>0?q:y;x=K[b+10|0];c=c>>>0>>0?c:x;w=K[b+14|0];c=c>>>0>>0?c:w;r=K[b+18|0];c=c>>>0>>0?c:r;s=K[b+22|0];c=c>>>0>>0?c:s;u=K[b+26|0];c=c>>>0>>0?c:u;m=K[b+30|0];c=c>>>0>>0?c:m;v=K[b+34|0];c=c>>>0>>0?c:v;k=K[b+38|0];c=c>>>0>>0?c:k;p=K[b+42|0];c=c>>>0

>>0?c:p;n=K[b+46|0];c=c>>>0>>0?c:n;o=K[b+50|0];c=c>>>0>>0?c:o;i=K[b+54|0];c=c>>>0>>0?c:i;l=K[b+58|0];c=c>>>0>>0?c:l;f=K[b+62|0];g=c>>>0>>0?c:f;c=q>>>0>y>>>0?q:y;c=c>>>0>x>>>0?c:x;c=c>>>0>w>>>0?c:w;c=c>>>0>r>>>0?c:r;c=c>>>0>s>>>0?c:s;c=c>>>0>u>>>0?c:u;c=c>>>0>m>>>0?c:m;c=c>>>0>v>>>0?c:v;c=c>>>0>k>>>0?c:k;c=c>>>0>p>>>0?c:p;c=c>>>0>n>>>0?c:n;c=c>>>0>o>>>0?c:o;c=c>>>0>i>>>0?c:i;c=c>>>0>l>>>0?c:l;if((g|0)!=((c>>>0>f>>>0?c:f)|0)){break k}h=Q(g>>>0);N[j+28>>2]=h;N[j+16>>2]=h}n:{if(d){if((E|0)<0){S=(K[b+61|0]+(K[b+57|0]+(K[b+53|0]+(K[b+49|0]+(K[b+45|0]+(K[b+41|0]+(K[b+37|0]+(K[b+33|0]+(K[b+29|0]+(K[b+25|0]+(K[b+21|0]+(K[b+17|0]+(K[b+13|0]+(K[b+9|0]+(K[b+1|0]+K[b+5|0]|0)|0)|0)|0)|0)|0)|0)|0)|0)|0)|0)|0)|0)|0)|0)+8>>>4|0;E=(K[b+60|0]+(K[b+56|0]+(K[b+52|0]+(K[b+48|0]+(K[b+44|0]+(K[b+40|0]+(K[b+36|0]+(K[b+32|0]+(K[b+28|0]+(K[b+24|0]+(K[b+20|0]+(K[b+16|0]+(K[b+12|0]+(K[b+8|0]+(K[b|0]+K[b+4|0]|0)|0)|0)|0)|0)|0)|0)|0)|0)|0)|0)|0)|0)|0)|0)+8>>>4|0;G=(K[b+62|0]+(K[b+58|0]+(K[b+54|0]+(K[b+50|0]+(K[b+46|0]+(K[b+42|0]+(K[b+38|0]+(K[b+34|0]+(K[b+30|0]+(K[b+26|0]+(K[b+22|0]+(K[b+18|0]+(K[b+14|0]+(K[b+10|0]+(K[b+2|0]+K[b+6|0]|0)|0)|0)|0)|0)|0)|0)|0)|0)|0)|0)|0)|0)|0)|0)+8>>>4|0}f=(G<<1)+318192|0;i=K[f+1|0];d=(S<<1)+318704|0;g=K[d+1|0];c=(E<<1)+318192|0;p=K[c+1|0];q=K[d|0];n=K[c|0];c=K[f|0];break n}h=Q(Q(N[j+16>>2]*Q(.12156862765550613))+Q(.5));o:{if(Q(R(h))>2]*Q(.24705882370471954))+Q(.5));p:{if(Q(R(h))0;o=g?c:63;g=(o|0)>0;h=Q(Q(N[j+8>>2]*Q(.12156862765550613))+Q(.5));q:{if(Q(R(h))=31?31:l;c=(l|0)>0;h=Q(Q(N[j+28>>2]*Q(.12156862765550613))+Q(.5));r:{if(Q(R(h))=31?31:d;d=(f|0)>0;i=i?n:0;g=g?o:0;p=c?l:0;h=Q(Q(N[j+24>>2]*Q(.24705882370471954))+Q(.5));s:{if(Q(R(h))=63?63:k;q=(c|0)>0?c:0;h=Q(Q(N[j+20>>2]*Q(.12156862765550613))+Q(.5));t:{if(Q(R(h))=31?31:c;n=(c|0)>0?c:0;c=d?f:0}BU(b,n,q,c,p,g,i,j+32|0);e=e+1|0;if((D|0)!=(e|0)){continue}break}e=(c|(q<<5|n<<11))&65535;b=(g<<5|p<<11|i)&65535;if((e|0)==(b|0)){b=e?0:1431655765;H[a+4|0]=b;H[a+5|0]=b>>>8;H[a+6|0]=b>>>16;H[a+7|0]=b>>>24;c=e>>>0<=1?1:e;H[a|0]=c;b=e-1|0;b=b>>>0<=e>>>0?b:0;H[a+2|0]=b;H[a+1|0]=c>>>8;H[a+3|0]=b>>>8;break b}c=b>>>0>>0?e:b;k=b>>>0>e>>>0;b=k?e:b;if(c>>>0<=b>>>0){break a}H[a+2|0]=b;H[a|0]=c;H[a+3|0]=b>>>8;H[a+1|0]=c>>>8;D=K[j+46|0];p=K[j+47|0];n=K[j+44|0];o=K[j+45|0];G=K[j+42|0];i=K[j+43|0];l=K[j+40|0];f=K[j+41|0];g=K[j+38|0];d=K[j+39|0];e=K[j+36|0];c=K[j+37|0];b=K[K[j+32|0]+169108|0]|K[K[j+33|0]+169108|0]<<2|K[K[j+34|0]+169108|0]<<4|K[K[j+35|0]+169108|0]<<6;k=k?85:0;H[a+4|0]=b^k;b=K[g+169108|0]<<12|K[d+169108|0]<<14|(b|(K[e+169108|0]<<8|K[c+169108|0]<<10));H[a+5|0]=k^b>>>8;b=K[G+169108|0]<<20|K[i+169108|0]<<22|(b|(K[l+169108|0]<<16|K[f+169108|0]<<18));H[a+6|0]=k^b>>>16;H[a+7|0]=k^(K[D+169108|0]<<28|K[p+169108|0]<<30|(b|(K[n+169108|0]<<24|K[o+169108|0]<<26)))>>>24}Ui=j+48|0;return}Z(105747,40075,15159,110154);B()}function pI(a,b){var c=0,d=0,e=0,f=0,g=0,h=0,i=0,j=0,k=0,l=0,m=0,n=0,o=0,p=0,q=0,r=0,s=0,t=0,u=0,v=0;n=Ui-16|0;Ui=n;a:while(1){p=J[J[J[a+20>>2]+4>>2]>>2];t=p+20|0;g=J[a+12>>2];h=J[a+24>>2];k=J[J[p+16>>2]+8>>2];while(1){b:{e=h;h=e+4|0;f=J[e>>2];c=K[a+56|0];c:{if(!(c&12)){break c}d=J[a+64>>2]-1|0;J[a+64>>2]=d;d:{if(d){if(!(c&4)){break c}g=J[a+24>>2];J[a+24>>2]=h;break d}g=J[a+24>>2];J[a+24>>2]=h;if(!(c&8)){break d}J[a+64>>2]=J[a+60>>2];DI(a,3,-1)}e:{if(!(c&4)){break e}c=J[J[J[J[a+20>>2]+4>>2]>>2]+16>>2];i=J[c+12>>2];d=(h-i>>2)-1|0;j=J[c+20>>2];f:{if(!j){c=0;if(!d|g>>>0>=h>>>0){break f}break e}c=J[j+(d<<2)>>2];if(!d|g>>>0>=h>>>0){break f}if(J[(j+(g-i|0)|0)-4>>2]==(c|0)){break e}}DI(a,2,c)}if(K[a+6|0]==1){J[a+24>>2]=e;break b}g=J[a+12>>2]}j=f>>>6&255;d=(j<<4)+g|0;g:{h:{i:{switch(f&63){case 0:c=(f>>>19&8176)+g|0;e=J[c+4>>2];J[d>>2]=J[c>>2];J[d+4>>2]=e;J[d+8>>2]=J[c+8>>2];continue;case 1:c=(f>>>10&4194288)+k|0;e=J[c+4>>2];J[d>>2]=J[c>>2];J[d+4>>2]=e;J[d+8>>2]=J[c+8>>2];continue;case 2:J[d+8>>2]=1;J[d>>2]=f>>>23;h=f&8372224?e+8|0:h;continue;case 3:f=(f>>>19&8176)+g|0;while(1){J[f+8>>2]=0;f=f-16|0;if(f>>>0>=d>>>0){continue}break};continue;case 4:c=J[J[(f>>>21&2044)+t>>2]+8>>2];e=J[c+4>>2];J[d>>2]=J[c>>2];J[d+4>>2]=e;J[d+8>>2]=J[c+8>>2];continue;case 5:c=J[p+12>>2];J[n+8>>2]=5;J[n>>2]=c;J[a+24>>2]=h;gu(a,n,(f>>>10&4194288)+k|0,d);g=J[a+12>>2];continue;case 6:J[a+24>>2]=h;gu(a,(f>>>19&8176)+g|0,(f>>>10&4080)+(f&4194304?k:g)|0,d);g=J[a+12>>2];continue;case 7:c=J[p+12>>2];J[n+8>>2]=5;J[n>>2]=c;J[a+24>>2]=h;Lw(a,n,(f>>>10&4194288)+k|0,d);g=J[a+12>>2];continue;case 8:c=J[(f>>>21&2044)+t>>2];e=J[c+8>>2];f=J[d+4>>2];J[e>>2]=J[d>>2];J[e+4>>2]=f;q=e;e=J[d+8>>2];J[q+8>>2]=e;if((e|0)<4){continue}e=J[d>>2];if(!(K[e+5|0]&3)|!(K[c+5|0]&4)){continue}ap(a,c,e);continue;case 9:J[a+24>>2]=h;c=f>>>19|0;Lw(a,d,(f|0)<0?(c&4080)+k|0:(c&8176)+g|0,(f>>>10&4080)+(f&4194304?k:g)|0);g=J[a+12>>2];continue;case 10:c=f>>>23|0;e=c>>>3&31;f=f>>>14&511;g=f>>>3&31;c=pq(a,e?(c&7|8)<>2]=5;J[d>>2]=c;J[a+24>>2]=h;c=J[a+16>>2];if(M[c+68>>2]>=M[c+64>>2]){Om(a)}g=J[a+12>>2];continue;case 11:c=(f>>>19&8176)+g|0;e=J[c+4>>2];J[d+16>>2]=J[c>>2];J[d+20>>2]=e;J[d+24>>2]=J[c+8>>2];J[a+24>>2]=h;gu(a,c,(f>>>10&4080)+(f&4194304?k:g)|0,d);g=J[a+12>>2];continue;case 12:e=f>>>19|0;e=(f|0)<0?(e&4080)+k|0:(e&8176)+g|0;c=(f>>>10&4080)+(f&4194304?k:g)|0;if(!(J[e+8>>2]!=3|J[c+8>>2]!=3)){l=O[c>>3];m=O[e>>3];J[d+8>>2]=3;O[d>>3]=m+l;continue}J[a+24>>2]=h;Or(a,d,e,c,5);g=J[a+12>>2];continue;case 13:e=f>>>19|0;e=(f|0)<0?(e&4080)+k|0:(e&8176)+g|0;c=(f>>>10&4080)+(f&4194304?k:g)|0;if(!(J[e+8>>2]!=3|J[c+8>>2]!=3)){l=O[c>>3];m=O[e>>3];J[d+8>>2]=3;O[d>>3]=m-l;continue}J[a+24>>2]=h;Or(a,d,e,c,6);g=J[a+12>>2];continue;case 14:e=f>>>19|0;e=(f|0)<0?(e&4080)+k|0:(e&8176)+g|0;c=(f>>>10&4080)+(f&4194304?k:g)|0;if(!(J[e+8>>2]!=3|J[c+8>>2]!=3)){l=O[c>>3];m=O[e>>3];J[d+8>>2]=3;O[d>>3]=m*l;continue}J[a+24>>2]=h;Or(a,d,e,c,7);g=J[a+12>>2];continue;case 15:e=f>>>19|0;e=(f|0)<0?(e&4080)+k|0:(e&8176)+g|0;c=(f>>>10&4080)+(f&4194304?k:g)|0;if(!(J[e+8>>2]!=3|J[c+8>>2]!=3)){l=O[c>>3];m=O[e>>3];J[d+8>>2]=3;O[d>>3]=m/l;continue}J[a+24>>2]=h;Or(a,d,e,c,8);g=J[a+12>>2];continue;case 16:e=f>>>19|0;e=(f|0)<0?(e&4080)+k|0:(e&8176)+g|0;c=(f>>>10&4080)+(f&4194304?k:g)|0;if(!(J[e+8>>2]!=3|J[c+8>>2]!=3)){l=O[c>>3];m=O[e>>3];J[d+8>>2]=3;O[d>>3]=m-l*V(m/l);continue}J[a+24>>2]=h;Or(a,d,e,c,9);g=J[a+12>>2];continue;case 17:e=f>>>19|0;e=(f|0)<0?(e&4080)+k|0:(e&8176)+g|0;c=(f>>>10&4080)+(f&4194304?k:g)|0;if(!(J[e+8>>2]!=3|J[c+8>>2]!=3)){l=O[c>>3];m=O[e>>3];J[d+8>>2]=3;O[d>>3]=Zq(m,l);continue}J[a+24>>2]=h;Or(a,d,e,c,10);g=J[a+12>>2];continue;case 18:c=(f>>>19&8176)+g|0;if(J[c+8>>2]==3){l=O[c>>3];J[d+8>>2]=3;O[d>>3]=-l;continue}J[a+24>>2]=h;Or(a,d,c,c,11);g=J[a+12>>2];continue;case 19:c=1;j:{k:{l:{e=(f>>>19&8176)+g|0;switch(J[e+8>>2]){case 0:break j;case 1:break l;default:break k}}c=!J[e>>2];break j}c=0}J[d+8>>2]=1;J[d>>2]=c;continue;case 20:m:{n:{o:{c=(f>>>19&8176)+g|0;switch(J[c+8>>2]-4|0){case 0:break n;case 1:break o;default:break m}}c=yI(J[c>>2]);J[d+8>>2]=3;O[d>>3]=c|0;continue}c=J[J[c>>2]+12>>2];J[d+8>>2]=3;O[d>>3]=c>>>0;continue}J[a+24>>2]=h;if(!CE(a,c,173288,d,12)){Tw(a,c,57589)}g=J[a+12>>2];continue;case 21:J[a+24>>2]=h;c=f>>>14&511;e=f>>>23|0;OA(a,(c-e|0)+1|0,c);c=J[a+16>>2];if(M[c+68>>2]>=M[c+64>>2]){Om(a)}g=J[a+12>>2];c=g+(j<<4)|0;e=(e<<4)+g|0;d=J[e+4>>2];J[c>>2]=J[e>>2];J[c+4>>2]=d;J[c+8>>2]=J[e+8>>2];continue;case 22:h=((f>>>12&1048572)+h|0)-524284|0;continue;case 23:J[a+24>>2]=h;c=f>>>19|0;c=(f|0)<0?(c&4080)+k|0:(c&8176)+g|0;f=(f>>>10&4080)+(f&4194304?k:g)|0;if(J[c+8>>2]==J[f+8>>2]){e=1;p:{q:{r:{s:{t:{switch(J[c+8>>2]){case 3:e=O[c>>3]==O[f>>3];break p;case 7:d=J[c>>2];g=J[f>>2];if((d|0)==(g|0)){break p}e=0;i=J[d+8>>2];if(!i|K[i+6|0]&16){break p}g=J[g+8>>2];d=Zo(i,4,J[J[a+16>>2]+204>>2]);if(!d){break p}if((g|0)==(i|0)){break s}if(!g|K[g+6|0]&16){break p}g=Zo(g,4,J[J[a+16>>2]+204>>2]);if(!g){break p}if(os(d,g)){break s}break p;case 0:break p;case 1:case 2:break q;case 5:break t;default:break r}}d=J[c>>2];g=J[f>>2];if((d|0)==(g|0)){break p}e=0;i=J[d+8>>2];if(!i|K[i+6|0]&16){break p}g=J[g+8>>2];d=Zo(i,4,J[J[a+16>>2]+204>>2]);if(!d){break p}if((g|0)==(i|0)){break s}if(!g|K[g+6|0]&16){break p}g=Zo(g,4,J[J[a+16>>2]+204>>2]);if(!g){break p}if(!os(d,g)){break p}}g=J[a+32>>2];i=J[d+4>>2];e=J[a+8>>2];J[e>>2]=J[d>>2];J[e+4>>2]=i;J[e+8>>2]=J[d+8>>2];i=J[c+4>>2];d=J[a+8>>2];J[d+16>>2]=J[c>>2];J[d+20>>2]=i;J[d+24>>2]=J[c+8>>2];d=J[f+4>>2];c=J[a+8>>2];J[c+32>>2]=J[f>>2];J[c+36>>2]=d;J[c+40>>2]=J[f+8>>2];c=J[a+8>>2];if((J[a+28>>2]-c|0)<=48){Ml(a,3);c=J[a+8>>2]}J[a+8>>2]=c+48;$o(a,c,1);d=J[a+8>>2];c=d-16|0;J[a+8>>2]=c;f=J[c+4>>2];e=J[a+32>>2]+(e-g|0)|0;J[e>>2]=J[c>>2];J[e+4>>2]=f;J[e+8>>2]=J[d-8>>2];e=0;u:{v:{c=J[a+8>>2];switch(J[c+8>>2]){case 0:break p;case 1:break v;default:break u}}e=J[c>>2]!=0;break p}e=1;break p}e=J[c>>2]==J[f>>2];break p}e=J[c>>2]==J[f>>2]}e=(e|0)!=0}else{e=0}if((e|0)==(j|0)){h=((J[h>>2]>>>12&1048572)+h|0)-524284|0}h=h+4|0;g=J[a+12>>2];continue;case 24:J[a+24>>2]=h;c=f>>>19|0;if((oI(a,(f|0)<0?(c&4080)+k|0:(c&8176)+g|0,(f>>>10&4080)+(f&4194304?k:g)|0)|0)==(j|0)){h=((J[h>>2]>>>12&1048572)+h|0)-524284|0}h=h+4|0;g=J[a+12>>2];continue;case 25:J[a+24>>2]=h;w:{x:{e=f>>>19|0;e=(f|0)<0?(e&4080)+k|0:(e&8176)+g|0;d=J[e+8>>2];c=(f>>>10&4080)+(f&4194304?k:g)|0;if((d|0)!=J[c+8>>2]){break x}y:{switch(d-3|0){case 0:g=O[e>>3]<=O[c>>3];break w;case 1:e=J[e>>2];d=e+16|0;g=J[c>>2];i=g+16|0;f=jj(d,i);z:{if(f){break z}c=J[e+12>>2];g=J[g+12>>2];while(1){e=yj(d);if((e|0)==(g|0)){f=(c|0)!=(g|0);break z}if((c|0)==(e|0)){f=-1;break z}e=e+1|0;g=g-e|0;c=c-e|0;d=d+e|0;i=e+i|0;f=jj(d,i);if(!f){continue}break}}g=(f|0)<=0;break w;default:break y}}g=BE(a,e,c,14);if((g|0)!=-1){break w}d=BE(a,c,e,13);if((d|0)==-1){break x}g=!d;break w}g=zI(a,e,c)}if((g|0)==(j|0)){h=((J[h>>2]>>>12&1048572)+h|0)-524284|0}h=h+4|0;g=J[a+12>>2];continue;case 26:c=1;A:{B:{switch(J[d+8>>2]){case 1:c=!J[d>>2];break A;case 0:break A;default:break B}}c=0}if((f>>>14&511)!=(c|0)){h=((J[h>>2]>>>12&1048572)+h|0)-524284|0}h=h+4|0;continue;case 27:c=1;C:{D:{E:{e=(f>>>19&8176)+g|0;j=J[e+8>>2];switch(j|0){case 0:break C;case 1:break E;default:break D}}c=!J[e>>2];break C}c=0}if((f>>>14&511)!=(c|0)){c=J[e+4>>2];e=J[e>>2];J[d+8>>2]=j;J[d>>2]=e;J[d+4>>2]=c;h=((J[h>>2]>>>12&1048572)+h|0)-524284|0}h=h+4|0;continue;case 28:c=f>>>14&511;e=c-1|0;if(f>>>0>=8388608){J[a+8>>2]=(f>>>19&8176)+d}J[a+24>>2]=h;e=Vw(a,d,e);if((e|0)!=1){if(e){break b}b=b+1|0;continue a}if(c){J[a+8>>2]=J[J[a+20>>2]+8>>2]}g=J[a+12>>2];continue;case 29:if(f>>>0>=8388608){J[a+8>>2]=(f>>>19&8176)+d}J[a+24>>2]=h;c=Vw(a,d,-1);if((c|0)!=1){if(c){break b}c=J[a+20>>2];h=c-24|0;e=J[c+4>>2];g=c-20|0;f=J[g>>2];d=f;q=h;if(J[a+104>>2]){Hp(a,J[h>>2]);d=J[g>>2]}h=d+(J[c>>2]-e|0)|0;J[q>>2]=h;J[a+12>>2]=h;h=0;if(e>>>0>2]){while(1){g=h<<4;d=g+f|0;g=e+g|0;k=J[g+4>>2];J[d>>2]=J[g>>2];J[d+4>>2]=k;J[d+8>>2]=J[g+8>>2];h=h+1|0;if(M[a+8>>2]>e+(h<<4)>>>0){continue}break}}h=f+(h<<4)|0;J[a+8>>2]=h;J[c-16>>2]=h;J[c-12>>2]=J[a+24>>2];h=c-4|0;J[h>>2]=J[h>>2]+1;J[a+20>>2]=J[a+20>>2]-24;continue a}g=J[a+12>>2];continue;case 30:if(f>>>0>=8388608){J[a+8>>2]=((f>>>19&8176)+d|0)-16}if(J[a+104>>2]){Hp(a,g)}J[a+24>>2]=h;h=XA(a,d);b=b-1|0;if(!b){break b}if(!h){continue a}J[a+8>>2]=J[J[a+20>>2]+8>>2];continue a;case 31:v=O[d+32>>3];l=v+O[d>>3];m=O[d+16>>3];F:{if(v>0){if(!(l<=m)){continue}break F}if(!(l>=m)){continue}}J[d+56>>2]=3;O[d+48>>3]=l;J[d+8>>2]=3;O[d>>3]=l;h=((f>>>12&1048572)+h|0)-524284|0;continue;case 32:J[a+24>>2]=h;G:{c=J[d+8>>2];if((c|0)!=3){if((c|0)!=4){break G}if(!mq(J[d>>2]+16|0,n)){break G}l=O[n>>3];J[d+8>>2]=3;O[d>>3]=l}c=J[d+24>>2];if((c|0)!=3){if((c|0)!=4){break h}if(!mq(J[d+16>>2]+16|0,n)){break h}l=O[n>>3];J[d+24>>2]=3;O[d+16>>3]=l}c=J[d+40>>2];if((c|0)==3){break g}H:{if((c|0)!=4){break H}if(!mq(J[d+32>>2]+16|0,n)){break H}l=O[n>>3];J[d+40>>2]=3;O[d+32>>3]=l;break g}xl(a,35973,0);B()}xl(a,36001,0);break g;case 33:c=J[d+36>>2];J[d+80>>2]=J[d+32>>2];J[d+84>>2]=c;J[d+88>>2]=J[d+40>>2];c=J[d+20>>2];J[d+64>>2]=J[d+16>>2];J[d+68>>2]=c;J[d+72>>2]=J[d+24>>2];c=J[d+4>>2];J[d+48>>2]=J[d>>2];J[d+52>>2]=c;J[d+56>>2]=J[d+8>>2];J[a+24>>2]=h;J[a+8>>2]=d+96;$o(a,d+48|0,f>>>14&511);J[a+8>>2]=J[J[a+20>>2]+8>>2];g=J[a+12>>2];c=g+(j<<4)|0;e=J[c+56>>2];if(e){J[c+40>>2]=e;e=J[c+52>>2];J[c+32>>2]=J[c+48>>2];J[c+36>>2]=e;h=((J[h>>2]>>>12&1048572)+h|0)-524284|0}h=h+4|0;continue;case 34:i=f>>>14&511;if(f>>>0>8388607){c=f>>>23|0}else{c=J[a+8>>2];J[a+8>>2]=J[J[a+20>>2]+8>>2];c=(c-d>>4)-1|0}if(!i){i=J[e+4>>2];h=e+8|0}if(J[d+8>>2]!=5){continue}f=(P(i,50)+c|0)-50|0;j=J[d>>2];if((f|0)>J[j+28>>2]){I:{if(J[j+16>>2]==173648){_z(a,j,f,0);break I}_z(a,j,f,1<>2];J[i>>2]=J[c>>2];J[i+4>>2]=o;q=i;i=J[c+8>>2];J[q+8>>2]=i;J:{if(!(K[J[c>>2]+5|0]&3)|(i|0)<4){break J}i=K[j+5|0];if(!(i&4)){break J}c=J[a+16>>2];H[j+5|0]=i&251;J[j+24>>2]=J[c+40>>2];J[c+40>>2]=j}f=f-1|0;c=e-1|0;if((e|0)>1){continue}break};continue;case 35:Hp(a,d);continue;case 36:c=J[J[J[p+16>>2]+16>>2]+(f>>>12&1048572)>>2];o=K[c+72|0];r=BI(a,o,J[p+12>>2]);J[r+16>>2]=c;if(o){u=r+20|0;f=0;while(1){e=J[h>>2];c=e>>>23|0;q=(f<<2)+u|0;K:{if((e&63)==4){c=J[(c<<2)+t>>2];break K}i=(c<<4)+g|0;e=a+104|0;j=J[a+16>>2];L:{M:{while(1){c=J[e>>2];if(!c){break M}s=J[c+8>>2];if(s>>>0>>0){break M}e=c;if((i|0)!=(s|0)){continue}break}e=K[c+5|0];if(!(e&(K[j+20|0]^-1)&3)){break L}H[c+5|0]=e^3;break L}c=lk(a,0,0,32);H[c+4|0]=10;s=K[j+20|0];J[c+8>>2]=i;H[c+5|0]=s&3;J[c>>2]=J[e>>2];J[e>>2]=c;J[c+16>>2]=j+120;e=J[j+140>>2];J[c+20>>2]=e;J[e+16>>2]=c;J[j+140>>2]=c}}J[q>>2]=c;h=h+4|0;f=f+1|0;if((o|0)!=(f|0)){continue}break}}J[d+8>>2]=6;J[d>>2]=r;J[a+24>>2]=h;c=J[a+16>>2];if(M[c+68>>2]>=M[c+64>>2]){Om(a)}g=J[a+12>>2];continue;case 37:break i;default:continue}}i=J[a+20>>2];e=(K[J[p+16>>2]+73|0]^-1)+(J[i>>2]-J[i+4>>2]>>4)|0;if(f>>>0>8388607){c=(f>>>23|0)-1|0}else{J[a+24>>2]=h;if((J[a+28>>2]-J[a+8>>2]|0)<=e<<4){Ml(a,e)}g=J[a+12>>2];d=g+(j<<4)|0;J[a+8>>2]=d+(e<<4);c=e}if((c|0)<=0){continue}f=0;r=0-e|0;while(1){N:{if((e|0)>(f|0)){o=f<<4;j=o+(J[i>>2]+(r<<4)|0)|0;u=J[j+4>>2];o=d+o|0;J[o>>2]=J[j>>2];J[o+4>>2]=u;J[o+8>>2]=J[j+8>>2];break N}J[((f<<4)+d|0)+8>>2]=0}f=f+1|0;if((c|0)!=(f|0)){continue}break}continue}xl(a,35944,0)}J[d+8>>2]=3;O[d>>3]=O[d>>3]-O[d+32>>3];h=((f>>>12&1048572)+h|0)-524284|0;continue}break}break}Ui=n+16|0}function jba(a,b,c){a=a|0;b=b|0;c=c|0;var d=0,e=0,f=0,g=0,h=0,i=0,j=0,k=0,l=0,m=0,n=0,o=0,p=0,q=0,r=0,s=0,t=0,u=0,v=0;g=Ui-48|0;Ui=g;d=K[c+480|0];e=d&2;if(e){dj(3,89301,119301,0)}k=d&1;r=b&48;if(!((k|0)==(e>>>1|0)|(r|0)!=48)){J[g+4>>2]=e?62928:34859;J[g>>2]=k?62928:34859;dj(3,89301,122454,g)}s=b&1;l=L[c+86>>1];m=L[c+84>>1];n=L[c+70>>1];o=L[c+68>>1];i=L[c+6>>1];f=L[c+4>>1];a:{b:{c:{d:{e:{f:{g:{h:{i:{j:{k:{l:{m:{n:{o:{p:{if(L[a+220>>1]&512){p=L[c+54>>1];q=L[c+52>>1];h=L[c+38>>1];j=L[c+36>>1];e=L[c+22>>1];d=L[c+20>>1];t=b&2;if(!s){break o}if(t){break p}e=i;d=f;break n}if(s){break k}break l}if((d&65535)!=(f|0)){break j}d=f;f=e&65535;e=i;if((f|0)!=(e|0)){break j}break n}if(t){break n}if(b&4){break m}if(!(b&8)){break l}i=p;f=q;break k}if(!(b&4)){h=e;j=d;break m}if((d&65535)!=(j&65535)){break j}j=d;d=h&65535;h=e;if((e&65535)!=(d|0)){break j}}e=h&65535;i=e;d=j&65535;f=d;if(!(b&8)){break k}if((d|0)!=(q|0)|(e|0)!=(p|0)){break j}break k}i=-1;f=-1}p=b&32;q=b&16;if(!r){break i}if(!p){if((f|0)==-1){break i}if((f|0)!=(o|0)){break j}if((i|0)==(n|0)){break i}break j}if(!q){if((f|0)==-1){break i}if((f|0)!=(m|0)){break j}if((i|0)==(l|0)){break i}break j}if((f|0)!=-1){if((f|0)!=(o|0)|(i|0)!=(n|0)|((f|0)!=(m|0)|(i|0)!=(l|0))){break j}break i}if((m|0)!=(o|0)){break j}if((l|0)==(n|0)){break i}}dj(4,89301,154102,0);a=0;b=0;break h}d=ij(nj(456),0,452);J[d+28>>2]=0;J[d+32>>2]=0;J[d+24>>2]=1;J[d+16>>2]=2;J[d+20>>2]=1;J[d+8>>2]=3;J[d+12>>2]=5;J[d+36>>2]=0;J[d+40>>2]=0;H[d+43|0]=0;H[d+44|0]=0;H[d+45|0]=0;H[d+46|0]=0;J[d+92>>2]=0;J[d+96>>2]=0;J[d+84>>2]=1;J[d+88>>2]=1;J[d+76>>2]=5;J[d+80>>2]=2;J[d+68>>2]=0;J[d+72>>2]=3;J[d+100>>2]=0;J[d+104>>2]=0;H[d+107|0]=0;H[d+108|0]=0;H[d+109|0]=0;H[d+110|0]=0;J[d+148>>2]=1;J[d+152>>2]=1;J[d+140>>2]=5;J[d+144>>2]=2;J[d+132>>2]=0;J[d+136>>2]=3;J[d+156>>2]=0;J[d+160>>2]=0;J[d+164>>2]=0;J[d+168>>2]=0;H[d+171|0]=0;H[d+172|0]=0;H[d+173|0]=0;H[d+174|0]=0;J[d+212>>2]=1;J[d+216>>2]=1;J[d+204>>2]=5;J[d+208>>2]=2;J[d+196>>2]=0;J[d+200>>2]=3;J[d+220>>2]=0;J[d+224>>2]=0;J[d+228>>2]=0;J[d+232>>2]=0;H[d+235|0]=0;H[d+236|0]=0;H[d+237|0]=0;H[d+238|0]=0;J[d+260>>2]=0;J[d+264>>2]=3;J[d+268>>2]=5;J[d+272>>2]=2;J[d+276>>2]=1;J[d+280>>2]=1;J[d+284>>2]=0;J[d+288>>2]=0;J[d+292>>2]=0;J[d+296>>2]=0;H[d+299|0]=0;H[d+300|0]=0;H[d+301|0]=0;H[d+302|0]=0;J[d+324>>2]=0;J[d+328>>2]=3;J[d+332>>2]=5;J[d+336>>2]=2;J[d+340>>2]=1;J[d+344>>2]=1;J[d+348>>2]=0;J[d+352>>2]=0;J[d+356>>2]=0;J[d+360>>2]=0;H[d+363|0]=0;H[d+364|0]=0;H[d+365|0]=0;H[d+366|0]=0;J[d+404>>2]=1;J[d+408>>2]=1;J[d+396>>2]=5;J[d+400>>2]=2;J[d+388>>2]=0;J[d+392>>2]=3;H[d+427|0]=0;H[d+428|0]=0;H[d+429|0]=0;H[d+430|0]=0;J[d+420>>2]=0;J[d+424>>2]=0;J[d+412>>2]=0;J[d+416>>2]=0;J[d+452>>2]=b;J[g+20>>2]=0;Cc(1,g+20|0);J[d+448>>2]=ho(a,J[g+20>>2]);q:{if(!(K[J[79491]+220|0]&2)){break q}e=_()|0;if(!e){break q}Cj(e,15639,3431);Z(114101,40535,3431,15639);B()}Pa(36160,J[g+20>>2]);if(K[J[79491]+220|0]&2){e=_()|0;if(e){break g}}i=c+96|0;if(b&1){f=Up(1);e=(f<<4)+c|0;h=J[e+12>>2];J[g+32>>2]=J[e+8>>2];J[g+36>>2]=h;h=J[e+4>>2];J[g+24>>2]=J[e>>2];J[g+28>>2]=h;f=i+P(f,48)|0;h=J[f>>2];j=J[f+4>>2];l=J[f+8>>2];m=J[f+12>>2];n=J[f+16>>2];o=J[f+20>>2];s=J[f+24>>2];t=J[f+28>>2];u=J[f+32>>2];v=J[f+36>>2];e=K[f+39|0]|K[f+40|0]<<8|(K[f+41|0]<<16|K[f+42|0]<<24);f=K[f+43|0]|K[f+44|0]<<8|(K[f+45|0]<<16|K[f+46|0]<<24);J[d+56>>2]=2;H[d+39|0]=e;H[d+40|0]=e>>>8;H[d+41|0]=e>>>16;H[d+42|0]=e>>>24;H[d+43|0]=f;H[d+44|0]=f>>>8;H[d+45|0]=f>>>16;H[d+46|0]=f>>>24;J[d+32>>2]=u;J[d+36>>2]=v;J[d+24>>2]=s;J[d+28>>2]=t;J[d+16>>2]=n;J[d+20>>2]=o;J[d+8>>2]=l;J[d+12>>2]=m;J[d>>2]=h;J[d+4>>2]=j;e=Zi[J[79454]](a,g+24|0)|0;J[d>>2]=0;J[d+4>>2]=0;J[d+48>>2]=e;J[d+52>>2]=Yi}if(b&2){h=Up(2);e=(h<<4)+c|0;f=J[e+12>>2];J[g+32>>2]=J[e+8>>2];J[g+36>>2]=f;f=J[e+4>>2];J[g+24>>2]=J[e>>2];J[g+28>>2]=f;e=i+P(h,48)|0;h=K[e+43|0]|K[e+44|0]<<8|(K[e+45|0]<<16|K[e+46|0]<<24);f=d- -64|0;j=K[e+39|0]|K[e+40|0]<<8|(K[e+41|0]<<16|K[e+42|0]<<24);H[f+39|0]=j;H[f+40|0]=j>>>8;H[f+41|0]=j>>>16;H[f+42|0]=j>>>24;H[f+43|0]=h;H[f+44|0]=h>>>8;H[f+45|0]=h>>>16;H[f+46|0]=h>>>24;h=J[e+36>>2];J[f+32>>2]=J[e+32>>2];J[f+36>>2]=h;h=J[e+28>>2];J[f+24>>2]=J[e+24>>2];J[f+28>>2]=h;h=J[e+20>>2];J[f+16>>2]=J[e+16>>2];J[f+20>>2]=h;h=J[e+12>>2];J[f+8>>2]=J[e+8>>2];J[f+12>>2]=h;h=J[e+4>>2];J[f>>2]=J[e>>2];J[f+4>>2]=h;J[d+120>>2]=2;e=Zi[J[79454]](a,g+24|0)|0;J[d+64>>2]=0;J[d+68>>2]=0;J[d+112>>2]=e;J[d+116>>2]=Yi}if(b&4){f=Up(4);e=(f<<4)+c|0;h=J[e+12>>2];J[g+32>>2]=J[e+8>>2];J[g+36>>2]=h;h=J[e+4>>2];J[g+24>>2]=J[e>>2];J[g+28>>2]=h;e=i+P(f,48)|0;f=K[e+43|0]|K[e+44|0]<<8|(K[e+45|0]<<16|K[e+46|0]<<24);h=K[e+39|0]|K[e+40|0]<<8|(K[e+41|0]<<16|K[e+42|0]<<24);H[d+167|0]=h;H[d+168|0]=h>>>8;H[d+169|0]=h>>>16;H[d+170|0]=h>>>24;H[d+171|0]=f;H[d+172|0]=f>>>8;H[d+173|0]=f>>>16;H[d+174|0]=f>>>24;f=J[e+36>>2];J[d+160>>2]=J[e+32>>2];J[d+164>>2]=f;f=J[e+28>>2];J[d+152>>2]=J[e+24>>2];J[d+156>>2]=f;f=J[e+20>>2];J[d+144>>2]=J[e+16>>2];J[d+148>>2]=f;f=J[e+12>>2];J[d+136>>2]=J[e+8>>2];J[d+140>>2]=f;f=J[e+4>>2];J[d+128>>2]=J[e>>2];J[d+132>>2]=f;J[d+184>>2]=2;e=Zi[J[79454]](a,g+24|0)|0;J[d+128>>2]=0;J[d+132>>2]=0;J[d+176>>2]=e;J[d+180>>2]=Yi}if(b&8){e=Up(8);b=(e<<4)+c|0;f=J[b+12>>2];J[g+32>>2]=J[b+8>>2];J[g+36>>2]=f;f=J[b+4>>2];J[g+24>>2]=J[b>>2];J[g+28>>2]=f;b=i+P(e,48)|0;e=K[b+43|0]|K[b+44|0]<<8|(K[b+45|0]<<16|K[b+46|0]<<24);f=K[b+39|0]|K[b+40|0]<<8|(K[b+41|0]<<16|K[b+42|0]<<24);H[d+231|0]=f;H[d+232|0]=f>>>8;H[d+233|0]=f>>>16;H[d+234|0]=f>>>24;H[d+235|0]=e;H[d+236|0]=e>>>8;H[d+237|0]=e>>>16;H[d+238|0]=e>>>24;e=J[b+36>>2];J[d+224>>2]=J[b+32>>2];J[d+228>>2]=e;e=J[b+28>>2];J[d+216>>2]=J[b+24>>2];J[d+220>>2]=e;e=J[b+20>>2];J[d+208>>2]=J[b+16>>2];J[d+212>>2]=e;e=J[b+12>>2];J[d+200>>2]=J[b+8>>2];J[d+204>>2]=e;e=J[b+4>>2];J[d+192>>2]=J[b>>2];J[d+196>>2]=e;J[d+248>>2]=2;b=Zi[J[79454]](a,g+24|0)|0;J[d+192>>2]=0;J[d+196>>2]=0;J[d+240>>2]=b;J[d+244>>2]=Yi}r:{if(!r){break r}if((r|0)==48){if(k){b=J[c+76>>2];J[g+32>>2]=J[c+72>>2];J[g+36>>2]=b;b=J[c+68>>2];J[g+24>>2]=J[c+64>>2];J[g+28>>2]=b;b=K[c+331|0]|K[c+332|0]<<8|(K[c+333|0]<<16|K[c+334|0]<<24);e=K[c+327|0]|K[c+328|0]<<8|(K[c+329|0]<<16|K[c+330|0]<<24);H[d+423|0]=e;H[d+424|0]=e>>>8;H[d+425|0]=e>>>16;H[d+426|0]=e>>>24;H[d+427|0]=b;H[d+428|0]=b>>>8;H[d+429|0]=b>>>16;H[d+430|0]=b>>>24;b=J[c+324>>2];J[d+416>>2]=J[c+320>>2];J[d+420>>2]=b;b=J[c+316>>2];J[d+408>>2]=J[c+312>>2];J[d+412>>2]=b;b=J[c+308>>2];J[d+400>>2]=J[c+304>>2];J[d+404>>2]=b;b=J[c+300>>2];J[d+392>>2]=J[c+296>>2];J[d+396>>2]=b;b=J[c+292>>2];J[d+384>>2]=J[c+288>>2];J[d+388>>2]=b;J[d+440>>2]=2;b=Zi[J[79454]](a,g+24|0)|0;J[d+384>>2]=0;J[d+388>>2]=0;J[d+432>>2]=b;J[d+436>>2]=Yi;break r}if(K[a+220|0]&32){b=J[c+292>>2];J[d+384>>2]=J[c+288>>2];J[d+388>>2]=b;b=K[c+331|0]|K[c+332|0]<<8|(K[c+333|0]<<16|K[c+334|0]<<24);e=K[c+327|0]|K[c+328|0]<<8|(K[c+329|0]<<16|K[c+330|0]<<24);H[d+423|0]=e;H[d+424|0]=e>>>8;H[d+425|0]=e>>>16;H[d+426|0]=e>>>24;H[d+427|0]=b;H[d+428|0]=b>>>8;H[d+429|0]=b>>>16;H[d+430|0]=b>>>24;b=J[c+324>>2];J[d+416>>2]=J[c+320>>2];J[d+420>>2]=b;b=J[c+316>>2];J[d+408>>2]=J[c+312>>2];J[d+412>>2]=b;b=J[c+308>>2];J[d+400>>2]=J[c+304>>2];J[d+404>>2]=b;b=J[c+300>>2];J[d+392>>2]=J[c+296>>2];J[d+396>>2]=b;J[d+440>>2]=1;J[g+24>>2]=0;wa(1,g+24|0);J[d+432>>2]=ho(a,J[g+24>>2]);if(K[J[79491]+220|0]&2){b=_()|0;if(b){break a}}J[d+384>>2]=0;J[d+388>>2]=0;break r}b=J[c+292>>2];J[d+256>>2]=J[c+288>>2];J[d+260>>2]=b;b=K[c+331|0]|K[c+332|0]<<8|(K[c+333|0]<<16|K[c+334|0]<<24);e=K[c+327|0]|K[c+328|0]<<8|(K[c+329|0]<<16|K[c+330|0]<<24);H[d+295|0]=e;H[d+296|0]=e>>>8;H[d+297|0]=e>>>16;H[d+298|0]=e>>>24;H[d+299|0]=b;H[d+300|0]=b>>>8;H[d+301|0]=b>>>16;H[d+302|0]=b>>>24;b=J[c+324>>2];J[d+288>>2]=J[c+320>>2];J[d+292>>2]=b;b=J[c+316>>2];J[d+280>>2]=J[c+312>>2];J[d+284>>2]=b;b=J[c+308>>2];J[d+272>>2]=J[c+304>>2];J[d+276>>2]=b;b=J[c+300>>2];J[d+264>>2]=J[c+296>>2];J[d+268>>2]=b;J[d+312>>2]=1;J[g+24>>2]=0;wa(1,g+24|0);J[d+304>>2]=ho(a,J[g+24>>2]);if(K[J[79491]+220|0]&2){b=_()|0;if(b){break a}}b=J[c+340>>2];J[d+256>>2]=J[c+336>>2];J[d+260>>2]=b;b=K[c+379|0]|K[c+380|0]<<8|(K[c+381|0]<<16|K[c+382|0]<<24);e=K[c+375|0]|K[c+376|0]<<8|(K[c+377|0]<<16|K[c+378|0]<<24);H[d+295|0]=e;H[d+296|0]=e>>>8;H[d+297|0]=e>>>16;H[d+298|0]=e>>>24;H[d+299|0]=b;H[d+300|0]=b>>>8;H[d+301|0]=b>>>16;H[d+302|0]=b>>>24;b=J[c+372>>2];J[d+288>>2]=J[c+368>>2];J[d+292>>2]=b;b=J[c+364>>2];J[d+280>>2]=J[c+360>>2];J[d+284>>2]=b;b=J[c+356>>2];J[d+272>>2]=J[c+352>>2];J[d+276>>2]=b;b=J[c+348>>2];J[d+264>>2]=J[c+344>>2];J[d+268>>2]=b;J[d+312>>2]=1;J[g+24>>2]=0;wa(1,g+24|0);J[d+304>>2]=ho(a,J[g+24>>2]);if(K[J[79491]+220|0]&2){b=_()|0;if(b){break a}}J[d+256>>2]=0;J[d+260>>2]=0;break r}if(q){b=J[c+76>>2];J[g+32>>2]=J[c+72>>2];J[g+36>>2]=b;b=J[c+68>>2];J[g+24>>2]=J[c+64>>2];J[g+28>>2]=b;b=K[c+331|0]|K[c+332|0]<<8|(K[c+333|0]<<16|K[c+334|0]<<24);e=K[c+327|0]|K[c+328|0]<<8|(K[c+329|0]<<16|K[c+330|0]<<24);H[d+295|0]=e;H[d+296|0]=e>>>8;H[d+297|0]=e>>>16;H[d+298|0]=e>>>24;H[d+299|0]=b;H[d+300|0]=b>>>8;H[d+301|0]=b>>>16;H[d+302|0]=b>>>24;b=J[c+324>>2];J[d+288>>2]=J[c+320>>2];J[d+292>>2]=b;b=J[c+316>>2];J[d+280>>2]=J[c+312>>2];J[d+284>>2]=b;b=J[c+308>>2];J[d+272>>2]=J[c+304>>2];J[d+276>>2]=b;b=J[c+300>>2];J[d+264>>2]=J[c+296>>2];J[d+268>>2]=b;b=J[c+292>>2];J[d+256>>2]=J[c+288>>2];J[d+260>>2]=b;J[d+312>>2]=k?2:1;s:{if(!k){J[g+44>>2]=0;wa(1,g+44|0);J[d+304>>2]=ho(a,J[g+44>>2]);if(!(K[J[79491]+220|0]&2)){break s}b=_()|0;if(!b){break s}break a}J[d+304>>2]=Zi[J[79454]](a,g+24|0);J[d+308>>2]=Yi}J[d+256>>2]=0;J[d+260>>2]=0;break r}if(!p){break r}b=J[c+340>>2];J[d+320>>2]=J[c+336>>2];J[d+324>>2]=b;b=K[c+379|0]|K[c+380|0]<<8|(K[c+381|0]<<16|K[c+382|0]<<24);e=K[c+375|0]|K[c+376|0]<<8|(K[c+377|0]<<16|K[c+378|0]<<24);H[d+359|0]=e;H[d+360|0]=e>>>8;H[d+361|0]=e>>>16;H[d+362|0]=e>>>24;H[d+363|0]=b;H[d+364|0]=b>>>8;H[d+365|0]=b>>>16;H[d+366|0]=b>>>24;b=J[c+372>>2];J[d+352>>2]=J[c+368>>2];J[d+356>>2]=b;b=J[c+364>>2];J[d+344>>2]=J[c+360>>2];J[d+348>>2]=b;b=J[c+356>>2];J[d+336>>2]=J[c+352>>2];J[d+340>>2]=b;b=J[c+348>>2];J[d+328>>2]=J[c+344>>2];J[d+332>>2]=b;J[d+376>>2]=1;J[g+24>>2]=0;wa(1,g+24|0);J[d+368>>2]=ho(a,J[g+24>>2]);if(K[J[79491]+220|0]&2){b=_()|0;if(b){break a}}J[d+320>>2]=0;J[d+324>>2]=0}uP(a,d);b=Ja(36160)|0;if((b|0)!=36053){break f}Pa(36160,ab()|0);if(K[J[79491]+220|0]&2){b=_()|0;if(b){break e}}e=J[a+92>>2];c=8;b=J[a+100>>2];t:{if(b){c=0;u:{while(1){if(J[e+(c<<2)>>2]){c=c+1|0;if((c|0)!=(b|0)){continue}break u}break}if((c|0)!=-1){break t}}c=b+8|0;if(c>>>0>=65536){break d}}J[a+92>>2]=ml(e,c<<2);J[a+96>>2]=ml(J[a+96>>2],c<<1);b=J[a+92>>2]+(J[a+100>>2]<<2)|0;J[b>>2]=0;J[b+4>>2]=0;J[b+24>>2]=0;J[b+28>>2]=0;J[b+16>>2]=0;J[b+20>>2]=0;J[b+8>>2]=0;J[b+12>>2]=0;b=J[a+96>>2]+(J[a+100>>2]<<1)|0;I[b>>1]=0;I[b+2>>1]=0;I[b+4>>1]=0;I[b+6>>1]=0;I[b+8>>1]=0;I[b+10>>1]=0;I[b+12>>1]=0;I[b+14>>1]=0;b=J[a+100>>2]+8|0;J[a+100>>2]=b}if(!b){break b}e=J[a+92>>2];c=0;while(1){f=e+(c<<2)|0;if(J[f>>2]){c=c+1|0;if((c|0)!=(b|0)){continue}break b}break}if((c|0)==-1){break b}b=L[a+104>>1];b=b>>>0>65533?1:b+1|0;I[a+104>>1]=b;I[J[a+96>>2]+(c<<1)>>1]=b;J[f>>2]=d;a=L[a+104>>1]<<16|c;if((a|0)==-1){break c}b=2}Ui=g+48|0;Yi=b;return a|0}Cj(e,15639,3433);Z(114101,40535,3433,15639);B()}hy(b);Z(62644,40535,3490,15639);B()}Cj(b,15639,3492);Z(114101,40535,3492,15639);B()}Z(94407,54166,208,62238);B()}Z(96071,54166,266,9606);B()}Z(96003,54166,253,9606);B()}Cj(b,13858,3238);Z(114101,40535,3238,13858);B()}function xka(a){a=a|0;var b=0,c=0,d=0,e=0,f=0,g=0,h=0,i=0,j=0,k=0,l=0,m=0,n=0,o=Q(0),p=0,q=0,r=0,s=0,t=0,u=Q(0),v=Q(0),w=Q(0),x=0,y=0;l=Ui-48|0;Ui=l;a:{b:{c=J[a+16>>2];c:{if(!c){J[J[a+12>>2]>>2]=0;break c}r=J[a>>2];e=J[r+8>>2];J[l+32>>2]=0;J[l+36>>2]=0;J[l+24>>2]=1148846080;J[l+16>>2]=1148846080;J[l+20>>2]=1148846080;J[l+8>>2]=-998637568;J[l>>2]=-998637568;J[l+4>>2]=-998637568;x=c>>>0>>0?c:e;J[l+40>>2]=x;J[l+36>>2]=228;J[l+32>>2]=229;k=J[r>>2];d:{e:{f:{if(K[r+17|0]==1){s=Ui-16|0;Ui=s;g:{h:{if(J[k+4>>2]==J[k+8>>2]){J[s>>2]=128655;dj(4,89293,31902,s);break h}f=nj(100);g=Ui+-64|0;Ui=g;c=J[k+92>>2];J[f+16>>2]=0;J[f+20>>2]=0;J[f>>2]=0;J[f+4>>2]=0;J[f+32>>2]=c;J[f+24>>2]=0;J[f+28>>2]=0;J[f+8>>2]=0;J[f+12>>2]=0;J[f+20>>2]=-1;J[f+36>>2]=0;J[f+40>>2]=0;y=f+44|0;c=y;J[c>>2]=0;J[c+4>>2]=0;t=f+52|0;J[t+8>>2]=0;J[t+4>>2]=k+16;J[t>>2]=243520;J[f+64>>2]=k;H[f+96|0]=K[f+96|0]&254|H[k+96|0]&1;c=nj(88);J[g+56>>2]=0;J[g+60>>2]=1;J[g+48>>2]=4096;J[g+52>>2]=0;J[g+40>>2]=0;J[g+44>>2]=4096;J[g+32>>2]=0;J[g+36>>2]=0;J[c>>2]=245396;d=Yj(360);J[d+308>>2]=953267991;H[d+332|0]=K[d+332|0]&240;J[c+32>>2]=d;d=J[g+60>>2];e=Yj(4);J[e>>2]=d?246848:246888;J[c+36>>2]=e;d=Yj(24);e=J[c+32>>2];h=J[c+36>>2];J[d+16>>2]=0;J[d+20>>2]=3;H[d+4|0]=0;J[d+12>>2]=e;J[d+8>>2]=h;J[d>>2]=244988;J[c+40>>2]=d;d=Yj(8);J[d>>2]=245432;H[d+4|0]=0;J[c+44>>2]=d;d=Yj(8);J[d>>2]=245452;H[d+4|0]=0;J[c+48>>2]=d;d=Yj(8);J[d>>2]=245472;H[d+4|0]=0;J[c+52>>2]=d;d=Yj(8);J[d>>2]=245492;H[d+4|0]=0;J[c+56>>2]=d;d=Yj(8);J[d>>2]=245512;H[d+4|0]=0;J[c+60>>2]=d;d=Yj(8);J[d>>2]=245532;H[d+4|0]=0;J[c+64>>2]=d;d=Yj(8);J[d>>2]=245552;H[d+4|0]=0;J[c+72>>2]=d;d=Yj(8);J[d>>2]=245552;J[c+76>>2]=d;H[d+4|0]=1;d=Yj(8);J[d>>2]=245572;H[d+4|0]=0;J[c+68>>2]=d;d=Yj(16);J[d+8>>2]=1;J[d+12>>2]=1;J[d>>2]=245592;H[d+4|0]=0;J[c+84>>2]=d;d=Yj(16);J[d+8>>2]=1;J[d+12>>2]=1;J[d>>2]=245592;J[c+80>>2]=d;H[d+4|0]=1;n=J[g+52>>2];e=J[g+32>>2];i:{if(e){H[c+12|0]=0;break i}H[c+12|0]=1;e=Yj(20);d=J[g+56>>2];H[e+16|0]=0;J[e+8>>2]=0;J[e+12>>2]=0;J[e>>2]=0;J[e+4>>2]=0;h=Yj(d);J[e+4>>2]=d;J[e>>2]=h}J[c+8>>2]=e;e=J[g+36>>2];j:{if(e){H[c+20|0]=0;break j}H[c+20|0]=1;e=Yj(20);d=J[g+44>>2];J[e+4>>2]=d;J[e>>2]=1140;d=Yj(P(d,1140));J[e+12>>2]=d;J[e+16>>2]=d;i=J[e+4>>2];J[e+8>>2]=i;h=i-1|0;k:{if(!h){break k}j=J[e>>2];q=h&7;if(q){while(1){m=d;d=d+j|0;J[m>>2]=d;h=h-1|0;b=b+1|0;if((q|0)!=(b|0)){continue}break}}if(i-2>>>0<7){break k}while(1){b=d+j|0;J[d>>2]=b;d=b;b=b+j|0;J[d>>2]=b;d=b;b=b+j|0;J[d>>2]=b;d=b;b=b+j|0;J[d>>2]=b;d=b;b=b+j|0;J[d>>2]=b;d=b;b=b+j|0;J[d>>2]=b;d=b;b=b+j|0;J[d>>2]=b;d=b+j|0;J[b>>2]=d;h=h-8|0;if(h){continue}break}}J[d>>2]=0}J[c+16>>2]=e;b=J[g+40>>2];l:{if(b){H[c+28|0]=0;J[c+24>>2]=b;break l}H[c+28|0]=1;j=Yj(20);b=J[g+48>>2];J[j+4>>2]=b;d=(n|0)<=80?80:n;J[j>>2]=d;d=Yj(P(b,d));J[j+12>>2]=d;J[j+16>>2]=d;n=J[j+4>>2];J[j+8>>2]=n;h=n-1|0;m:{if(!h){break m}e=J[j>>2];i=h&7;if(i){b=0;while(1){m=d;d=e+d|0;J[m>>2]=d;h=h-1|0;b=b+1|0;if((i|0)!=(b|0)){continue}break}}if(n-2>>>0<7){break m}while(1){b=e+d|0;J[d>>2]=b;d=b;b=b+e|0;J[d>>2]=b;d=b;b=b+e|0;J[d>>2]=b;d=b;b=b+e|0;J[d>>2]=b;d=b;b=b+e|0;J[d>>2]=b;d=b;b=b+e|0;J[d>>2]=b;d=b;b=b+e|0;J[d>>2]=b;d=b+e|0;J[b>>2]=d;h=h-8|0;if(h){continue}break}}J[d>>2]=0;J[c+24>>2]=j}b=c;J[f+68>>2]=b;e=0;c=nj(5388);H[c+24|0]=1;J[c+4>>2]=2;J[c+20>>2]=0;J[c+5384>>2]=b;J[c+12>>2]=0;J[c+16>>2]=0;J[c+188>>2]=1139;J[c>>2]=244504;J[c+28>>2]=245684;J[c+192>>2]=Zi[J[J[b>>2]+12>>2]](b);J[c+196>>2]=Zi[J[J[b>>2]+8>>2]](b);h=c+200|0;while(1){d=h+P(e,144)|0;b=0;while(1){j=J[c+5384>>2];J[d+(b<<2)>>2]=Zi[J[J[j>>2]+20>>2]](j,e,b);j=b|1;n=J[c+5384>>2];J[d+(j<<2)>>2]=Zi[J[J[n>>2]+20>>2]](n,e,j);b=b+2|0;if((b|0)!=36){continue}break}e=e+1|0;if((e|0)!=36){continue}break}J[f+72>>2]=c;u=N[l>>2];v=N[l+4>>2];w=N[l+8>>2];o=N[k+72>>2];J[g+44>>2]=0;N[g+40>>2]=o*w;N[g+36>>2]=o*v;N[g+32>>2]=o*u;u=N[l+16>>2];v=N[l+20>>2];w=N[l+24>>2];J[g+28>>2]=0;N[g+24>>2]=o*w;N[g+20>>2]=o*v;N[g+16>>2]=o*u;e=Yj(116);j=L[l+40>>1];J[e+104>>2]=0;J[e+108>>2]=0;H[e+100|0]=0;J[e+96>>2]=0;J[e+92>>2]=0;I[e+6>>1]=65535;I[e+4>>1]=65534;J[e>>2]=244076;b=mT(Yj(76));H[e+100|0]=1;J[e+92>>2]=b;b=Yj(24);J[b+4>>2]=0;J[b+8>>2]=0;J[b+20>>2]=0;J[b>>2]=244140;J[b+12>>2]=0;J[b+16>>2]=0;J[b+8>>2]=0;H[b+20|0]=1;J[e+112>>2]=b;b=Yj(156);d=J[e+112>>2];J[b>>2]=244216;J[b+36>>2]=0;H[b+40|0]=1;J[b+28>>2]=0;J[b+32>>2]=0;J[b+20>>2]=0;J[b+12>>2]=-1;J[b+16>>2]=0;J[b+4>>2]=0;J[b+8>>2]=0;J[b+76>>2]=0;H[b+80|0]=1;J[b+68>>2]=0;J[b+72>>2]=0;J[b+60>>2]=0;J[b+52>>2]=-1;J[b+56>>2]=0;J[b+44>>2]=0;J[b+48>>2]=0;c=!d;H[b+152|0]=c;H[b+153|0]=0;H[b+154|0]=1;J[b+124>>2]=0;J[b+100>>2]=0;J[b+104>>2]=0;J[b+136>>2]=0;J[b+128>>2]=0;J[b+132>>2]=0;J[b+116>>2]=10;J[b+120>>2]=1;J[b+108>>2]=1;J[b+112>>2]=0;if(c){d=mT(Yj(76))}J[b+148>>2]=0;J[b+96>>2]=d;J[b+140>>2]=0;J[b+144>>2]=0;J[b+84>>2]=0;J[b+88>>2]=0;J[b+92>>2]=0;J[e+108>>2]=b;H[b+153|0]=1;b=J[g+36>>2];J[e+8>>2]=J[g+32>>2];J[e+12>>2]=b;b=J[g+44>>2];J[e+16>>2]=J[g+40>>2];J[e+20>>2]=b;b=J[g+28>>2];J[e+32>>2]=J[g+24>>2];J[e+36>>2]=b;b=J[g+20>>2];J[e+24>>2]=J[g+16>>2];J[e+28>>2]=b;d=0;J[e+52>>2]=0;o=Q(L[e+6>>1]);N[e+48>>2]=o/Q(N[e+32>>2]-N[e+16>>2]);N[e+44>>2]=o/Q(N[e+28>>2]-N[e+12>>2]);N[e+40>>2]=o/Q(N[e+24>>2]-N[e+8>>2]);n=j+1|0;h=n&65535;i=h<<6;b=Yj(i);n:{if(!h){I[e+58>>1]=n;J[e+60>>2]=b;I[e+64>>1]=1;I[e+56>>1]=0;break n}c=b;q=h&7;if(q){while(1){J[c+8>>2]=0;J[c>>2]=0;c=c- -64|0;d=d+1|0;if((q|0)!=(d|0)){continue}break}}if((h-1&67108863)>>>0>=7){d=b+i|0;while(1){J[c+456>>2]=0;J[c+448>>2]=0;J[c+392>>2]=0;J[c+384>>2]=0;J[c+328>>2]=0;J[c+320>>2]=0;J[c+264>>2]=0;J[c+256>>2]=0;J[c+200>>2]=0;J[c+192>>2]=0;J[c+136>>2]=0;J[c+128>>2]=0;J[c+72>>2]=0;J[c+64>>2]=0;J[c+8>>2]=0;J[c>>2]=0;c=c+512|0;if((d|0)!=(c|0)){continue}break}}I[e+58>>1]=n;J[e+60>>2]=b;c=1;I[e+64>>1]=1;I[e+56>>1]=0;if(!j){break n}d=h-1|0;j=d&7;if(h-2>>>0>=7){n=d&-8;d=0;while(1){i=c+1|0;I[(b+(c<<6)|0)+48>>1]=i;m=b+(i<<6)|0;i=c+2|0;I[m+48>>1]=i;m=b+(i<<6)|0;i=c+3|0;I[m+48>>1]=i;m=b+(i<<6)|0;i=c+4|0;I[m+48>>1]=i;m=b+(i<<6)|0;i=c+5|0;I[m+48>>1]=i;m=b+(i<<6)|0;i=c+6|0;I[m+48>>1]=i;m=b+(i<<6)|0;i=c+7|0;I[m+48>>1]=i;c=c+8|0;I[(b+(i<<6)|0)+48>>1]=c;d=d+8|0;if((n|0)!=(d|0)){continue}break}}if(!j){break n}d=0;while(1){m=b+(c<<6)|0;c=c+1|0;I[m+48>>1]=c;d=d+1|0;if((j|0)!=(d|0)){continue}break}}I[(b+(h<<6)|0)-16>>1]=0;b=h<<3;c=Yj(b);J[e+68>>2]=c;J[e+80>>2]=c;c=Yj(b);J[e+72>>2]=c;J[e+84>>2]=c;b=Yj(b);J[e+76>>2]=b;J[e+88>>2]=b;b=J[e+60>>2];I[b+54>>1]=1;I[b+48>>1]=0;J[b>>2]=0;c=J[e+68>>2];I[c>>1]=0;I[c+2>>1]=0;d=L[e+6>>1];I[c+6>>1]=0;I[c+4>>1]=d;I[b+56>>1]=1;I[b+50>>1]=0;c=J[e+72>>2];I[c>>1]=0;I[c+2>>1]=0;d=L[e+6>>1];I[c+6>>1]=0;I[c+4>>1]=d;I[b+58>>1]=1;I[b+52>>1]=0;b=J[e+76>>2];I[b>>1]=0;I[b+2>>1]=0;c=L[e+6>>1];I[b+6>>1]=0;I[b+4>>1]=c;J[e>>2]=244012;J[f+76>>2]=e;c=cT(nj(128));J[f+80>>2]=c;b=nj(268);e=J[f+72>>2];h=J[f+76>>2];d=J[f+68>>2];H[b+20|0]=1;J[b+16>>2]=0;H[b+84|0]=1;J[b+80>>2]=0;J[b+76>>2]=h;J[b+64>>2]=0;J[b+68>>2]=0;H[b+60|0]=0;J[b+56>>2]=1025758986;H[b+54|0]=1;I[b+52>>1]=256;J[b+48>>2]=0;H[b+44|0]=0;J[b+36>>2]=1;J[b+40>>2]=1065353216;J[b+28>>2]=0;J[b+32>>2]=0;J[b+24>>2]=e;J[b+8>>2]=0;J[b+12>>2]=0;J[b>>2]=244624;d=Zi[J[J[d>>2]+16>>2]](d)|0;J[b+68>>2]=d;J[b+72>>2]=d;J[b+108>>2]=1050253722;J[b+100>>2]=1058642330;J[b+104>>2]=1065353216;J[b+96>>2]=0;J[b+88>>2]=0;J[b+92>>2]=0;J[b+140>>2]=0;J[b+132>>2]=1045220557;J[b+136>>2]=1036831949;J[b+116>>2]=0;J[b+120>>2]=10;J[b+168>>2]=128;J[b+160>>2]=260;J[b+164>>2]=2;J[b+152>>2]=0;J[b+156>>2]=1062836634;J[b+144>>2]=0;J[b+148>>2]=-1130113270;J[b+124>>2]=1101004800;J[b+128>>2]=1065353216;J[b>>2]=243748;J[b+172>>2]=c;H[b+196|0]=1;J[b+192>>2]=0;J[b+184>>2]=0;J[b+188>>2]=0;H[b+216|0]=1;J[b+220>>2]=0;J[b+224>>2]=-1054867456;J[b+212>>2]=0;J[b+228>>2]=0;J[b+232>>2]=0;J[b+236>>2]=1015580809;J[b+204>>2]=0;J[b+208>>2]=0;H[b+260|0]=1;H[b+242|0]=0;J[b+264>>2]=0;J[b+256>>2]=0;J[b+248>>2]=0;J[b+252>>2]=0;if(c){c=0}else{J[b+172>>2]=cT(Yj(128));c=1}H[b+241|0]=c;c=Yj(68);J[c>>2]=245712;J[c+16>>2]=0;H[c+20|0]=1;J[c+8>>2]=0;J[c+12>>2]=0;J[c+36>>2]=0;H[c+40|0]=1;H[c+60|0]=1;J[c+28>>2]=0;J[c+32>>2]=0;J[c+56>>2]=0;H[c+64|0]=1;J[c+48>>2]=0;J[c+52>>2]=0;H[b+240|0]=1;J[b+176>>2]=c;J[f+84>>2]=b;N[g>>2]=N[k+44>>2];N[g+4>>2]=N[k+48>>2];o=N[k+52>>2];J[g+12>>2]=0;N[g+8>>2]=o;Zi[J[J[b>>2]+68>>2]](b,g);b=J[f+84>>2];Zi[J[J[b>>2]+12>>2]](b,t);J[f+88>>2]=J[l+32>>2];J[f+92>>2]=J[l+36>>2];if(H[f+48|0]&1){break a}lj(J[k+88>>2],48,f+36|0,y,f+40|0);Zu(f,96,128);Ui=g- -64|0;b=J[k+4>>2];if((b|0)==J[k+8>>2]){break b}J[k+4>>2]=b+4;J[b>>2]=f}Ui=s+16|0;break g}d=f;if(d){break f}break e}g=Ui-16|0;Ui=g;o:{p:{if(J[k+4>>2]==J[k+8>>2]){J[g>>2]=128655;dj(4,89293,31902,g);break p}b=nj(103120);c=J[k+88>>2];J[b+16>>2]=0;J[b+20>>2]=0;J[b>>2]=0;J[b+4>>2]=0;J[b+32>>2]=c;J[b+24>>2]=0;J[b+28>>2]=0;J[b+8>>2]=0;J[b+12>>2]=0;J[b+20>>2]=-1;J[b+36>>2]=k;c=b+40|0;J[c+4>>2]=0;J[c+8>>2]=128;e=sj(1024);J[c>>2]=e;ij(e,0,J[c+8>>2]<<3);J[c+60>>2]=0;J[c+64>>2]=0;J[c+52>>2]=0;J[c+56>>2]=0;J[c+44>>2]=0;J[c+48>>2]=0;J[c+36>>2]=0;J[c+40>>2]=0;J[c+28>>2]=0;J[c+32>>2]=0;J[c+20>>2]=0;J[c+24>>2]=0;J[c+12>>2]=0;J[c+16>>2]=0;q:{r:{if(!K[335777]){e=1;while(1){if(f>>>0>=14){break r}p=e+335136|0;f=(J[(f<<2)+247184>>2]<(e|0))+f|0;H[p|0]=f;if(f>>>0>13){break r}f=f+(J[(f<<2)+247184>>2]<=(e|0))|0;H[p+1|0]=f;e=e+2|0;if((e|0)!=641){continue}break}H[335777]=1}f=c;break q}Z(21483,39627,73,32499);B()}c=f+68|0;J[c+102796>>2]=0;J[c+102408>>2]=0;J[c+102400>>2]=0;J[c+102404>>2]=0;p=0;e=f+102872|0;J[e>>2]=-1;J[e+8>>2]=0;J[e+12>>2]=16;c=sj(576);J[e+4>>2]=c;ij(c,0,P(J[e+12>>2],36));c=J[e+4>>2];h=J[e+12>>2];s:{if((h|0)<=1){h=h-1|0;break s}while(1){h=P(p,36);p=p+1|0;J[(h+c|0)+20>>2]=p;c=J[e+4>>2];J[(h+c|0)+32>>2]=-1;h=J[e+12>>2]-1|0;if((p|0)<(h|0)){continue}break}}J[(P(h,36)+c|0)+20>>2]=-1;J[(J[e+4>>2]+P(J[e+12>>2],36)|0)-4>>2]=-1;J[e+24>>2]=0;c=e;J[c+16>>2]=0;J[c+20>>2]=0;J[c+48>>2]=16;J[c+52>>2]=0;J[c+28>>2]=0;e=sj(192);J[c+36>>2]=16;J[c+40>>2]=0;J[c+44>>2]=e;J[c+32>>2]=sj(64);J[c+76>>2]=0;J[c+72>>2]=248048;J[c+68>>2]=248012;J[c+60>>2]=0;J[c+64>>2]=0;J[f+102952>>2]=0;J[f+102956>>2]=0;J[f+102980>>2]=0;J[f+102984>>2]=0;c=f+102960|0;J[c>>2]=0;J[c+4>>2]=0;J[f+102992>>2]=16777473;H[f+102976|0]=1;c=J[k+48>>2];e=J[k+44>>2];J[f+102988>>2]=0;J[f+102868>>2]=4;J[f+102968>>2]=e;J[f+102972>>2]=c;J[f+102996>>2]=0;J[f+103e3>>2]=0;c=f+103004|0;J[c>>2]=0;J[c+4>>2]=0;c=f+103012|0;J[c>>2]=0;J[c+4>>2]=0;c=f+103020|0;J[c>>2]=0;J[c+4>>2]=0;J[f+102948>>2]=f;c=b+103076|0;J[c>>2]=0;J[c+4>>2]=0;J[b+103068>>2]=0;J[b+103072>>2]=0;f=b+103084|0;J[f+4>>2]=0;J[f>>2]=247248;J[f+8>>2]=k+16;J[f>>2]=243424;e=b+103096|0;J[e+4>>2]=b;J[e>>2]=243468;J[b+103108>>2]=J[l+32>>2];J[b+103112>>2]=J[l+36>>2];H[b+103116|0]=K[b+103116|0]&254|H[k+92|0]&1;if(H[b+103080|0]&1){break a}lj(J[k+84>>2],48,b+103068|0,c,b+103072|0);Zu(b,96,128);c=b+40|0;J[c+102984>>2]=f;J[c+102944>>2]=e;H[b+103033|0]=0;f=J[k+4>>2];if((f|0)==J[k+8>>2]){break b}J[k+4>>2]=f+4;J[f>>2]=b}Ui=g+16|0;break o}p=b;if(!b){break e}}f=nj(168);b=ij(f,0,168);c=K[r+17|0];J[b+132>>2]=c?d:p;d=K[a+4|0];H[b+145|0]=c|2;H[b+144|0]=d;lj(x,4,b+148|0,b+156|0,b+152|0);b=0;break d}f=0;b=-1e3}J[J[a+12>>2]>>2]=f}Ui=l+48|0;return b|0}Z(112520,53895,557,53220);B()}Z(151729,53895,501,2284);B()}function G6(a){a=a|0;var b=0,c=0,d=0,e=0,f=0,g=Q(0),h=Q(0),i=0,j=Q(0),k=0,l=0,m=Q(0),n=Q(0),o=0,p=0,q=0,r=Q(0),s=0,t=Q(0),u=0,v=Q(0),w=Q(0),x=Q(0),y=Q(0),z=Q(0),A=Q(0),C=Q(0),D=Q(0),E=Q(0),F=0,G=Q(0),O=0,S=Q(0),T=Q(0),U=0,V=0,W=Q(0),X=0,_=0,$=0,aa=0,ba=0,ca=0,da=0,ea=0,fa=Q(0),ga=Q(0),ha=Q(0),ia=Q(0),ja=Q(0),ka=Q(0),la=Q(0),ma=Q(0),na=Q(0),oa=Q(0),pa=Q(0),qa=Q(0),ra=Q(0),sa=Q(0),ta=Q(0),ua=Q(0),va=Q(0),wa=0,xa=0,ya=0,za=0,Aa=0,Ba=Q(0),Ca=0,Da=0,Ea=0,Fa=Q(0),Ga=0,Ha=Q(0),Ia=0,Ja=Q(0),Ka=0,La=Q(0),Ma=0,Na=0,Oa=0,Pa=0;u=Ui-80|0;Ui=u;k=J[a+4>>2];a:{b:{c:{switch(J[a+8>>2]-1|0){case 1:a=J[k+2020>>2];if((a|0)==J[k+2028>>2]){break b}Zi[J[79393]](J[k+2e3>>2],0,0,0);Zi[J[79393]](J[k+2e3>>2],P(a,112),J[k+2004>>2],0);d=J[k+2028>>2];a=J[k+2020>>2];J[k+2028>>2]=a;a=a-d|0;d=(a>>>0)/6|0;J[84182]=d+J[84182];J[u+40>>2]=d;J[u+44>>2]=0;J[u+24>>2]=d;J[u+28>>2]=0;a=P(a,112);J[84204]=a+J[84204];J[u+32>>2]=a;J[u+36>>2]=0;J[u+16>>2]=a;J[u+20>>2]=0;break b;case 0:break c;default:break b}}Ca=J[a+20>>2];Da=J[a+12>>2];a=J[a+16>>2];J[u+76>>2]=0;e=J[(P(J[a>>2],48)+Da|0)+16>>2];f=J[e+176>>2];d=J[f+8>>2];s=J[f+12>>2];d:{if(!(d|s)){fa=Q(1);ga=Q(1);w=Q(0);break d}g=Q(Zi[J[79460]](d,s)>>>0);ga=Q(Q(1)/g);w=Q(Zi[J[79461]](J[f+8>>2],J[f+12>>2])>>>0);fa=Q(Q(1)/w);T=Q(Q(M[f+152>>2])/g);w=Q(Q(M[f+156>>2])/w)}e:{i=J[k+2016>>2];s=J[k+1968>>2];if(i>>>0>=(J[k+1972>>2]-s|0)/336>>>0){J[u>>2]=i;dj(3,90423,23753,u);break e}f:{d=J[k+1984>>2];if(i>>>0>2]-d>>2>>>0){Ka=J[k+2004>>2];p=J[d+(i<<2)>>2];J[k+2016>>2]=i+1;l=s+P(i,336)|0;J[l+248>>2]=J[e+184>>2];J[l+252>>2]=J[e+188>>2];s=K[l+320|0]|1;H[l+320|0]=s;J[l+172>>2]=J[e+180>>2];d=J[f+12>>2];J[l+176>>2]=J[f+8>>2];J[l+180>>2]=d;J[l+308>>2]=J[k+2020>>2];d=J[e+4>>2];J[l+260>>2]=J[e>>2];J[l+264>>2]=d;d=J[e+12>>2];J[l+268>>2]=J[e+8>>2];J[l+272>>2]=d;d=J[e+20>>2];J[l+276>>2]=J[e+16>>2];J[l+280>>2]=d;d=J[e+28>>2];J[l+284>>2]=J[e+24>>2];J[l+288>>2]=d;J[l+292>>2]=J[e+32>>2];H[l+320|0]=K[e+276|0]>>>3&2|s&253;N[u+60>>2]=w;N[u+56>>2]=T;N[u+52>>2]=fa;N[u+48>>2]=ga;rC(p);$K(p,e+112|0,K[e+218|0]);cC(p,J[84222],J[84223],u+48|0,1,0);J[l>>2]=p;g:{if((a|0)!=(Ca|0)){while(1){b=J[(P(J[a>>2],48)+Da|0)+16>>2];s=J[b+204>>2];p=J[k+2032>>2];if(s>>>0>=J[k+2036>>2]-p>>>0){break f}Ea=J[k+2068>>2];d=J[k+2020>>2];ya=P(d,112)+Ka|0;za=J[k+2024>>2]-d|0;ba=0;X=0;q=Ui-1072|0;Ui=q;J[q+1068>>2]=0;r=N[b+228>>2];i=K[b+219|0];T=N[b+220>>2];j=N[b+232>>2];g=N[f+52>>2];w=N[f+48>>2];J[q+20>>2]=f;h=j;j=Q(w+g);Fa=Q(h*j);N[q+24>>2]=Fa;d=J[q+24>>2];J[q+8>>2]=J[q+20>>2];J[q+12>>2]=d;Aa=p+s|0;ca=$F(Aa,i?T:Q(1e6),q+32|0,q+28|0,q+8|0,i^1);w=N[b+220>>2];T=Q(0);h:{i:{j:{s=K[b+276|0];switch((s&3)-1|0){case 1:break i;case 0:break j;default:break h}}T=Q(w*Q(.5));break h}T=w}d=K[f+179|0];if(d&1){T=Q(T+Q(Q(d>>>1>>>0)*Q(-.5)))}m=N[f+48>>2];w=N[f+52>>2];t=Q(m+w);n=N[b+228>>2];g=N[b+224>>2];k:{l:{switch((s>>>2&3)-1|0){case 0:w=Q(Q(Q(g*Q(.5))+Q(Q(Q(Q(ca>>>0)*Q(t*n))-Q(t*Q(n+Q(-1))))*Q(.5)))-m);break k;case 1:w=Q(Q(Q(t*n)*Q(ca-1>>>0))+w);break k;default:break l}}w=Q(g-m)}_=1;$=K[f+178|0];m:{if(!($&1)){dj(4,90423,153166,0);d=0;break m}da=J[b+212>>2];aa=J[b+208>>2];F=J[b+200>>2];n=N[b+64>>2];m=N[b+48>>2];g=N[f+56>>2];ha=N[f+68>>2];ia=N[f+64>>2];Ga=$&2;p=0;O=0;if($&6){_=(($>>>2&1)+(Ga>>>1|0)|0)+1|0;n:{if((ca|0)<=0){break n}while(1){U=(q+32|0)+(ba<<3)|0;J[q+16>>2]=L[U+4>>1]+Aa;V=0;if(L[U+6>>1]){while(1){o=(Oa=jr(q+16|0),Pa=J[f>>2],Na=J[f+32>>2],Zi[Na](Oa|0,Pa|0)|0);if(!o){o=Zi[J[f+32>>2]](126,J[f>>2])|0}o:{if(!o){break o}e=X+6|0;if(P(e,_)>>>0>za>>>0){break n}if(!J[o+4>>2]){break o}i=J[o+16>>2];s=J[f+160>>2];d=J[o>>2];if(!mL(f,d)){DL(f,Ea,o,s-i<<16>>16)}d=vL(f,d);X=d?e:X;O=((d|0)!=0)+O|0}V=V+1|0;if(V>>>0>1]){continue}break}}ba=ba+1|0;if((ca|0)!=(ba|0)){continue}break}}O=P(O,6)}p:{if((ca|0)<=0){break p}La=Q(j*r);ja=Q(Q(da>>>24>>>0)/Q(255));ka=Q(Q((da&255)>>>0)/Q(255));la=Q(Q(aa>>>24>>>0)/Q(255));ma=Q(Q((aa&255)>>>0)/Q(255));na=Q(Q(F>>>24>>>0)/Q(255));oa=Q(Q((F&255)>>>0)/Q(255));pa=Q(Q((da>>>16&255)>>>0)/Q(255));qa=Q(Q((da>>>8&255)>>>0)/Q(255));ra=Q(Q((aa>>>16&255)>>>0)/Q(255));sa=Q(Q((aa>>>8&255)>>>0)/Q(255));ta=Q(Q((F>>>16&255)>>>0)/Q(255));ua=Q(Q((F>>>8&255)>>>0)/Q(255));va=Q(Q(.25)/Q(g*Q(Y(Q(Q(m*m)+Q(n*n))))));Ma=$&4;E=_>>>0<2?Q(1):Q(0);$=P(P(_-2|0,O),112)+ya|0;da=P(P(_-1|0,O),112)+ya|0;ea=0;while(1){d=(q+32|0)+(ea<<3)|0;g=N[d>>2];j=Q(0);q:{r:{switch((K[b+276|0]&3)-1|0){case 0:j=Q(g*Q(.5));break q;case 1:break r;default:break q}}j=g}J[q+16>>2]=L[d+4>>1]+Aa;s:{aa=L[d+6>>1];if(aa){Ha=Q(w-Q(Q(ea>>>0)*La));Ba=Q(T-j);X=0;while(1){o=(Pa=jr(q+16|0),Oa=J[f>>2],Na=J[f+32>>2],Zi[Na](Pa|0,Oa|0)|0);if(!o){o=Zi[J[f+32>>2]](126,J[f>>2])|0}if(o){s=p+6|0;if(P(s,_)>>>0>za>>>0){break s}F=J[o+4>>2];t:{if(!F){break t}U=J[o>>2];V=J[o+16>>2];i=J[f+160>>2];e=J[o+20>>2];g=N[o+12>>2];u:{if(Q(R(g))>16)}i=vL(f,U);if(!i){break t}ba=I[i+10>>1];i=I[i+8>>1];x=N[b+96>>2];y=N[b+80>>2];z=N[b+64>>2];A=N[b+48>>2];C=N[b+100>>2];D=N[b+84>>2];t=N[b+68>>2];n=N[b+52>>2];m=N[b+104>>2];r=N[b+88>>2];j=N[b+72>>2];g=N[b+56>>2];O=P(p,112);c=O+da|0;S=Q(Ba+Q(d|0));U=e<<16>>16;v=Q(Ha-Q(U|0));N[c+12>>2]=N[b+108>>2]+Q(Q(N[b+92>>2]*Q(0))+Q(Q(N[b+60>>2]*S)+Q(v*N[b+76>>2])));N[c+8>>2]=m+Q(Q(r*Q(0))+Q(Q(g*S)+Q(v*j)));N[c+4>>2]=C+Q(Q(D*Q(0))+Q(Q(n*S)+Q(v*t)));N[c>>2]=x+Q(Q(y*Q(0))+Q(Q(A*S)+Q(v*z)));x=N[b+96>>2];y=N[b+80>>2];z=N[b+48>>2];A=N[b+64>>2];C=N[b+100>>2];D=N[b+84>>2];t=N[b+52>>2];n=N[b+68>>2];m=N[b+104>>2];r=N[b+88>>2];j=N[b+56>>2];g=N[b+72>>2];V=V<<16>>16;W=Q(Ha+Q(V|0));N[c+124>>2]=N[b+108>>2]+Q(Q(N[b+92>>2]*Q(0))+Q(Q(N[b+60>>2]*S)+Q(W*N[b+76>>2])));N[c+120>>2]=m+Q(Q(r*Q(0))+Q(Q(j*S)+Q(W*g)));N[c+116>>2]=C+Q(Q(D*Q(0))+Q(Q(t*S)+Q(W*n)));wa=c+112|0;N[wa>>2]=x+Q(Q(y*Q(0))+Q(Q(z*S)+Q(W*A)));x=N[b+96>>2];y=N[b+80>>2];z=N[b+48>>2];A=N[b+64>>2];C=N[b+100>>2];D=N[b+84>>2];t=N[b+52>>2];n=N[b+68>>2];m=N[b+104>>2];r=N[b+88>>2];j=N[b+56>>2];g=N[b+72>>2];e=F<<16>>16;Ja=Q(e|0);h=Q(S+Ja);N[c+236>>2]=N[b+108>>2]+Q(Q(N[b+92>>2]*Q(0))+Q(Q(N[b+60>>2]*h)+Q(v*N[b+76>>2])));N[c+232>>2]=m+Q(Q(r*Q(0))+Q(Q(j*h)+Q(v*g)));N[c+228>>2]=C+Q(Q(D*Q(0))+Q(Q(t*h)+Q(v*n)));xa=c+224|0;N[xa>>2]=x+Q(Q(y*Q(0))+Q(Q(z*h)+Q(v*A)));x=N[b+96>>2];y=N[b+80>>2];z=N[b+48>>2];A=N[b+64>>2];C=N[b+100>>2];D=N[b+84>>2];t=N[b+52>>2];n=N[b+68>>2];m=N[b+104>>2];r=N[b+88>>2];j=N[b+56>>2];g=N[b+72>>2];N[c+572>>2]=N[b+108>>2]+Q(Q(N[b+92>>2]*Q(0))+Q(Q(N[b+60>>2]*h)+Q(W*N[b+76>>2])));N[c+568>>2]=m+Q(Q(r*Q(0))+Q(Q(j*h)+Q(W*g)));N[c+564>>2]=C+Q(Q(D*Q(0))+Q(Q(t*h)+Q(W*n)));F=c+560|0;N[F>>2]=x+Q(Q(y*Q(0))+Q(Q(z*h)+Q(W*A)));d=K[f+177|0];N[c+68>>2]=ja;N[c+64>>2]=pa;N[c+60>>2]=qa;N[c+56>>2]=ka;N[c+52>>2]=la;N[c+48>>2]=ra;N[c+44>>2]=sa;N[c+40>>2]=ma;N[c+180>>2]=ja;N[c+176>>2]=pa;N[c+172>>2]=qa;N[c+168>>2]=ka;N[c+164>>2]=la;N[c+160>>2]=ra;N[c+156>>2]=sa;N[c+152>>2]=ma;N[c+84>>2]=ha;N[c+80>>2]=va;N[c+76>>2]=ia;J[c+72>>2]=1061158912;N[c+36>>2]=na;N[c+32>>2]=ta;N[c+28>>2]=ua;N[c+24>>2]=oa;i=d+i|0;g=Q(ga*Q(i>>>0));N[c+128>>2]=g;N[c+16>>2]=g;p=d+ba|0;d=Ia<<16>>16;r=Q(fa*Q(p+d>>>0));N[c+580>>2]=r;j=Q(ga*Q(e+i>>>0));N[c+576>>2]=j;g=Q(fa*Q(p+(d+(U+V|0)|0)>>>0));N[c+244>>2]=g;N[c+240>>2]=j;N[c+132>>2]=r;N[c+20>>2]=g;N[c+292>>2]=ja;N[c+288>>2]=pa;N[c+284>>2]=qa;N[c+280>>2]=ka;N[c+276>>2]=la;N[c+272>>2]=ra;N[c+268>>2]=sa;N[c+264>>2]=ma;N[c+196>>2]=ha;N[c+192>>2]=va;N[c+188>>2]=ia;J[c+184>>2]=1061158912;N[c+148>>2]=na;N[c+144>>2]=ta;N[c+140>>2]=ua;N[c+136>>2]=oa;N[c+248>>2]=oa;N[c+252>>2]=ua;N[c+256>>2]=ta;N[c+260>>2]=na;N[c+300>>2]=ia;N[c+304>>2]=va;N[c+308>>2]=ha;N[c+600>>2]=ma;N[c+604>>2]=sa;N[c+608>>2]=ra;N[c+612>>2]=la;N[c+616>>2]=ka;N[c+620>>2]=qa;N[c+624>>2]=pa;N[c+628>>2]=ja;J[c+296>>2]=1061158912;N[c+644>>2]=ha;N[c+640>>2]=va;N[c+636>>2]=ia;J[c+632>>2]=1061158912;N[c+596>>2]=na;N[c+592>>2]=ta;N[c+588>>2]=ua;N[c+584>>2]=oa;i=hj(c+336|0,xa,112);p=hj(c+448|0,wa,112);if(Ga){d=hj(O+$|0,c,112);hj(d+112|0,wa,112);hj(d+224|0,xa,112);hj(d+336|0,i,112);hj(d+448|0,p,112);hj(d+560|0,F,112);J[d+656>>2]=0;J[d+648>>2]=0;J[d+652>>2]=1065353216;J[d+544>>2]=0;J[d+536>>2]=0;J[d+540>>2]=1065353216;J[d+432>>2]=0;J[d+424>>2]=0;J[d+428>>2]=1065353216;J[d+320>>2]=0;J[d+312>>2]=0;J[d+316>>2]=1065353216;J[d+208>>2]=0;J[d+200>>2]=0;J[d+204>>2]=1065353216;J[d+96>>2]=0;J[d+88>>2]=0;J[d+92>>2]=1065353216}if(Ma){h=N[f+40>>2];G=N[f+44>>2];e=hj(O+ya|0,c,112);i=hj(e+112|0,wa,112);p=hj(e+224|0,xa,112);d=hj(e+560|0,F,112);x=N[b+96>>2];y=N[b+80>>2];z=N[b+48>>2];A=N[b+64>>2];C=N[b+100>>2];D=N[b+84>>2];t=N[b+52>>2];n=N[b+68>>2];m=N[b+104>>2];r=N[b+88>>2];j=N[b+56>>2];g=N[b+72>>2];h=Q(S+h);v=Q(v+G);N[e+12>>2]=N[b+108>>2]+Q(Q(N[b+92>>2]*Q(0))+Q(Q(N[b+60>>2]*h)+Q(v*N[b+76>>2])));N[e+8>>2]=m+Q(Q(r*Q(0))+Q(Q(j*h)+Q(v*g)));N[e+4>>2]=C+Q(Q(D*Q(0))+Q(Q(t*h)+Q(v*n)));N[e>>2]=x+Q(Q(y*Q(0))+Q(Q(z*h)+Q(v*A)));x=N[b+96>>2];y=N[b+80>>2];z=N[b+48>>2];A=N[b+64>>2];C=N[b+100>>2];D=N[b+84>>2];t=N[b+52>>2];n=N[b+68>>2];m=N[b+104>>2];r=N[b+88>>2];j=N[b+56>>2];g=N[b+72>>2];G=Q(W+G);N[e+124>>2]=N[b+108>>2]+Q(Q(N[b+92>>2]*Q(0))+Q(Q(N[b+60>>2]*h)+Q(G*N[b+76>>2])));N[e+120>>2]=m+Q(Q(r*Q(0))+Q(Q(j*h)+Q(G*g)));N[e+116>>2]=C+Q(Q(D*Q(0))+Q(Q(t*h)+Q(G*n)));N[i>>2]=x+Q(Q(y*Q(0))+Q(Q(z*h)+Q(G*A)));x=N[b+96>>2];y=N[b+80>>2];z=N[b+48>>2];A=N[b+64>>2];C=N[b+100>>2];D=N[b+84>>2];t=N[b+52>>2];n=N[b+68>>2];m=N[b+104>>2];r=N[b+88>>2];j=N[b+56>>2];g=N[b+72>>2];h=Q(h+Ja);N[e+236>>2]=N[b+108>>2]+Q(Q(N[b+92>>2]*Q(0))+Q(Q(N[b+60>>2]*h)+Q(v*N[b+76>>2])));N[e+232>>2]=m+Q(Q(r*Q(0))+Q(Q(j*h)+Q(v*g)));N[e+228>>2]=C+Q(Q(D*Q(0))+Q(Q(t*h)+Q(v*n)));N[p>>2]=x+Q(Q(y*Q(0))+Q(Q(z*h)+Q(v*A)));x=N[b+96>>2];y=N[b+80>>2];z=N[b+48>>2];A=N[b+64>>2];C=N[b+100>>2];D=N[b+84>>2];t=N[b+52>>2];n=N[b+68>>2];m=N[b+104>>2];r=N[b+88>>2];j=N[b+56>>2];g=N[b+72>>2];N[e+572>>2]=N[b+108>>2]+Q(Q(N[b+92>>2]*Q(0))+Q(Q(N[b+60>>2]*h)+Q(G*N[b+76>>2])));N[e+568>>2]=m+Q(Q(r*Q(0))+Q(Q(j*h)+Q(G*g)));N[e+564>>2]=C+Q(Q(D*Q(0))+Q(Q(t*h)+Q(G*n)));N[d>>2]=x+Q(Q(y*Q(0))+Q(Q(z*h)+Q(G*A)));hj(e+336|0,p,112);hj(e+448|0,i,112);J[e+656>>2]=1065353216;J[e+648>>2]=0;J[e+652>>2]=0;J[e+544>>2]=1065353216;J[e+536>>2]=0;J[e+540>>2]=0;J[e+432>>2]=1065353216;J[e+424>>2]=0;J[e+428>>2]=0;J[e+320>>2]=1065353216;J[e+312>>2]=0;J[e+316>>2]=0;J[e+208>>2]=1065353216;J[e+200>>2]=0;J[e+204>>2]=0;J[e+96>>2]=1065353216;J[e+88>>2]=0;J[e+92>>2]=0}N[c+96>>2]=E;N[c+92>>2]=E;J[c+88>>2]=1065353216;N[c+656>>2]=E;N[c+652>>2]=E;J[c+648>>2]=1065353216;N[c+544>>2]=E;N[c+540>>2]=E;J[c+536>>2]=1065353216;N[c+432>>2]=E;N[c+428>>2]=E;J[c+424>>2]=1065353216;N[c+320>>2]=E;N[c+316>>2]=E;J[c+312>>2]=1065353216;N[c+208>>2]=E;N[c+204>>2]=E;J[c+200>>2]=1065353216;p=s}Ba=Q(Ba+Q(Fa+N[o+8>>2]))}X=X+1|0;if((aa|0)!=(X|0)){continue}break}}ea=ea+1|0;if((ca|0)!=(ea|0)){continue}break p}break}J[q>>2]=(za>>>0)/6;dj(3,90423,124952,q)}d=P(p,_)}Ui=q+1072|0;o=d+J[k+2020>>2]|0;J[k+2020>>2]=o;a=a+4|0;if((Ca|0)!=(a|0)){continue}break g}}o=J[k+2020>>2]}J[l+312>>2]=o-J[l+308>>2];Bo(k,l);break e}break a}break a}}Ui=u+80|0;return}Z(145396,53895,487,84789);B()}function Pq(a){var b=0,c=0,d=0,e=0,f=0,g=0,h=0,i=0,j=0,k=0,l=0,m=0,n=0,o=0,p=0,q=0,r=0;d=Ui-800|0;Ui=d;b=J[a+52>>2];c=L[b+52>>1]+1|0;I[b+52>>1]=c;if((c&65535)>>>0>=201){Wn(a,20933,0)}r=d+208|0;while(1){c=J[a+16>>2];b=c-260|0;if(!(1<>>0<=27:0)){q=J[a+4>>2];a:{b:{c:{d:{e:{f:{g:{h:{i:{j:{k:{switch(c-258|0){case 8:o=J[a+48>>2];J[d+776>>2]=-1;tk(a);Il(a,d+200|0,0);if(J[d+200>>2]==1){J[d+200>>2]=3}ku(J[a+48>>2],d+200|0);c=J[d+220>>2];if(J[a+16>>2]==274){break j}b=0;break i;case 19:p=J[a+48>>2];tk(a);c=J[p+24>>2];J[p+28>>2]=c;Il(a,d+200|0,0);if(J[d+200>>2]==1){J[d+200>>2]=3}ku(J[a+48>>2],d+200|0);H[d+786|0]=1;J[d+780>>2]=-1;n=J[d+220>>2];b=K[p+50|0];H[d+785|0]=0;H[d+784|0]=b;J[d+776>>2]=J[p+20>>2];J[p+20>>2]=d+776;if(J[a+16>>2]!=259){b=J[a+52>>2];J[d+16>>2]=Cl(a,259);qk(a,gk(b,74053,d+16|0))}tk(a);h=J[a+48>>2];H[d+210|0]=0;J[d+204>>2]=-1;b=K[h+50|0];H[d+209|0]=0;H[d+208|0]=b;J[d+200>>2]=J[h+20>>2];J[h+20>>2]=d+200;Pq(a);j=J[h+20>>2];J[h+20>>2]=J[j>>2];k=K[j+8|0];l=J[J[h+12>>2]+48>>2];e=K[l+50|0];if(k>>>0>>0){g=l+172|0;o=J[l+24>>2];m=J[J[l>>2]+24>>2];f=0;b=e;i=b-k&3;if(i){while(1){b=b-1|0;J[(m+P(L[g+(b<<1)>>1],12)|0)+8>>2]=o;f=f+1|0;if((i|0)!=(f|0)){continue}break}}if(k-e>>>0<=4294967292){while(1){e=g+(b<<1)|0;J[(m+P(L[e-2>>1],12)|0)+8>>2]=o;J[(m+P(L[e-4>>1],12)|0)+8>>2]=o;J[(m+P(L[e-6>>1],12)|0)+8>>2]=o;b=b-4|0;J[(m+P(L[g+(b<<1)>>1],12)|0)+8>>2]=o;if(b>>>0>k>>>0){continue}break}}H[l+50|0]=b}if(K[j+9|0]){tm(h,35,k,0,0)}J[h+36>>2]=K[h+50|0];_m(h,J[j+4>>2]);Qw(p,oq(p),c);pp(a,262,277,q);g=J[p+20>>2];J[p+20>>2]=J[g>>2];l=K[g+8|0];j=J[J[p+12>>2]+48>>2];c=K[j+50|0];if(l>>>0>>0){i=j+172|0;m=J[j+24>>2];k=J[J[j>>2]+24>>2];f=0;b=c;e=b-l&3;if(e){while(1){b=b-1|0;J[(k+P(L[i+(b<<1)>>1],12)|0)+8>>2]=m;f=f+1|0;if((e|0)!=(f|0)){continue}break}}if(l-c>>>0<=4294967292){while(1){c=i+(b<<1)|0;J[(k+P(L[c-2>>1],12)|0)+8>>2]=m;J[(k+P(L[c-4>>1],12)|0)+8>>2]=m;J[(k+P(L[c-6>>1],12)|0)+8>>2]=m;b=b-4|0;J[(k+P(L[i+(b<<1)>>1],12)|0)+8>>2]=m;if(b>>>0>l>>>0){continue}break}}H[j+50|0]=b}if(K[g+9|0]){tm(p,35,l,0,0)}J[p+36>>2]=K[p+50|0];_m(p,J[g+4>>2]);_m(p,n);break b;case 1:tk(a);uU(a);pp(a,262,259,q);break b;case 6:m=J[a+48>>2];H[d+786|0]=1;J[d+780>>2]=-1;b=K[m+50|0];H[d+785|0]=0;H[d+784|0]=b;J[d+776>>2]=J[m+20>>2];J[m+20>>2]=d+776;tk(a);if(J[a+16>>2]!=285){b=J[a+52>>2];J[d+96>>2]=Cl(a,285);qk(a,gk(b,74053,d+96|0))}c=J[a+24>>2];tk(a);l:{m:{n:{b=J[a+16>>2];switch(b-44|0){case 1:case 2:case 3:case 4:case 5:case 6:case 7:case 8:case 9:case 10:case 11:case 12:case 13:case 14:case 15:case 16:break l;case 17:break n;case 0:break d;default:break m}}i=J[a+48>>2];e=J[i+36>>2];sn(a,Ep(a,135521,11),0);sn(a,Ep(a,135858,11),1);sn(a,Ep(a,137254,10),2);sn(a,c,3);if(J[a+16>>2]!=61){b=J[a+52>>2];J[d+48>>2]=Cl(a,61);qk(a,gk(b,74053,d+48|0))}tk(a);b=d+200|0;Il(a,b,0);kn(J[a+48>>2],b);if(J[a+16>>2]!=44){b=J[a+52>>2];J[d+32>>2]=Cl(a,44);qk(a,gk(b,74053,d+32|0))}tk(a);b=d+200|0;Il(a,b,0);kn(J[a+48>>2],b);if(J[a+16>>2]==44){tk(a);Il(a,b,0);kn(J[a+48>>2],b);lB(a,e,q,1,1);break c}c=J[i+36>>2];n=Ui-16|0;Ui=n;J[n+8>>2]=3;O[n>>3]=1;b=At(i,n,n);Ui=n+16|0;Rw(i,1,c,b);fr(i,1);lB(a,e,q,1,1);break c}if((b|0)==267){break d}}qk(a,74067);break c;case 14:h=J[a+48>>2];e=J[h+24>>2];J[h+28>>2]=e;J[d+780>>2]=-1;H[d+786|0]=1;c=K[h+50|0];H[d+785|0]=0;H[d+784|0]=c;b=J[h+20>>2];J[d+180>>2]=-1;J[d+776>>2]=b;H[d+185|0]=0;H[d+186|0]=0;H[d+184|0]=c;J[d+176>>2]=d+776;J[h+20>>2]=d+176;tk(a);Pq(a);pp(a,276,272,q);Il(a,d+200|0,0);if(J[d+200>>2]==1){J[d+200>>2]=3}ku(J[a+48>>2],d+200|0);n=J[d+220>>2];o:{if(!K[d+185|0]){j=J[h+20>>2];J[h+20>>2]=J[j>>2];k=K[j+8|0];l=J[J[h+12>>2]+48>>2];c=K[l+50|0];if(k>>>0>>0){g=l+172|0;o=J[l+24>>2];m=J[J[l>>2]+24>>2];f=0;b=c;i=b-k&3;if(i){while(1){b=b-1|0;J[(m+P(L[g+(b<<1)>>1],12)|0)+8>>2]=o;f=f+1|0;if((i|0)!=(f|0)){continue}break}}if(k-c>>>0<=4294967292){while(1){c=g+(b<<1)|0;J[(m+P(L[c-2>>1],12)|0)+8>>2]=o;J[(m+P(L[c-4>>1],12)|0)+8>>2]=o;J[(m+P(L[c-6>>1],12)|0)+8>>2]=o;b=b-4|0;J[(m+P(L[g+(b<<1)>>1],12)|0)+8>>2]=o;if(b>>>0>k>>>0){continue}break}}H[l+50|0]=b}if(K[j+9|0]){tm(h,35,k,0,0)}J[h+36>>2]=K[h+50|0];_m(h,J[j+4>>2]);Qw(J[a+48>>2],n,e);break o}c=0;f=0;i=J[a+48>>2];b=J[i+20>>2];p:{if(b){while(1){if(K[b+10|0]){c=b;break p}f=K[b+9|0]|f;b=J[b>>2];if(b){continue}break}}qk(a,52019)}if(f){tm(i,35,K[c+8|0],0,0)}lu(i,c+4|0,oq(i));_m(J[a+48>>2],n);g=J[h+20>>2];J[h+20>>2]=J[g>>2];l=K[g+8|0];j=J[J[h+12>>2]+48>>2];c=K[j+50|0];if(l>>>0>>0){n=j+172|0;m=J[j+24>>2];k=J[J[j>>2]+24>>2];f=0;b=c;i=b-l&3;if(i){while(1){b=b-1|0;J[(k+P(L[n+(b<<1)>>1],12)|0)+8>>2]=m;f=f+1|0;if((i|0)!=(f|0)){continue}break}}if(l-c>>>0<=4294967292){while(1){c=n+(b<<1)|0;J[(k+P(L[c-2>>1],12)|0)+8>>2]=m;J[(k+P(L[c-4>>1],12)|0)+8>>2]=m;J[(k+P(L[c-6>>1],12)|0)+8>>2]=m;b=b-4|0;J[(k+P(L[n+(b<<1)>>1],12)|0)+8>>2]=m;if(b>>>0>l>>>0){continue}break}}H[j+50|0]=b}if(K[g+9|0]){tm(h,35,l,0,0)}J[h+36>>2]=K[h+50|0];_m(h,J[g+4>>2]);Qw(J[a+48>>2],oq(h),e)}n=J[h+20>>2];J[h+20>>2]=J[n>>2];j=K[n+8|0];g=J[J[h+12>>2]+48>>2];c=K[g+50|0];if(j>>>0>>0){i=g+172|0;k=J[g+24>>2];l=J[J[g>>2]+24>>2];f=0;b=c;e=b-j&3;if(e){while(1){b=b-1|0;J[(l+P(L[i+(b<<1)>>1],12)|0)+8>>2]=k;f=f+1|0;if((e|0)!=(f|0)){continue}break}}if(j-c>>>0<=4294967292){while(1){c=i+(b<<1)|0;J[(l+P(L[c-2>>1],12)|0)+8>>2]=k;J[(l+P(L[c-4>>1],12)|0)+8>>2]=k;J[(l+P(L[c-6>>1],12)|0)+8>>2]=k;b=b-4|0;J[(l+P(L[i+(b<<1)>>1],12)|0)+8>>2]=k;if(b>>>0>j>>>0){continue}break}}H[g+50|0]=b}if(K[n+9|0]){tm(h,35,j,0,0)}J[h+36>>2]=K[h+50|0];_m(h,J[n+4>>2]);break b;case 0:break g;case 7:break k;case 10:break e;case 15:break f;default:break h}}tk(a);IG(a,d+200|0);while(1){c=J[a+16>>2];if((c|0)!=46){b=d+776|0;if((c|0)==58){oB(a,d+200|0);c=1}else{c=0}sU(a,b,c,q);SA(J[a+48>>2],d+200|0,b);b=J[a+48>>2];J[(J[J[b>>2]+20>>2]+(J[b+24>>2]<<2)|0)-4>>2]=q;break b}else{oB(a,d+200|0);continue}}}b=1}while(1){q:{r:{s:{t:{if(!b){b=J[a+52>>2];J[d>>2]=Cl(a,274);qk(a,gk(b,74053,d));break t}tk(a);uU(a);b=J[a+16>>2];if((b|0)!=261){if((b|0)!=260){break s}lu(o,d+776|0,oq(o));_m(o,c);tk(a);h=J[a+48>>2];H[d+210|0]=0;J[d+204>>2]=-1;b=K[h+50|0];H[d+209|0]=0;H[d+208|0]=b;J[d+200>>2]=J[h+20>>2];J[h+20>>2]=d+200;Pq(a);g=J[h+20>>2];J[h+20>>2]=J[g>>2];l=K[g+8|0];j=J[J[h+12>>2]+48>>2];c=K[j+50|0];if(l>>>0>>0){n=j+172|0;m=J[j+24>>2];k=J[J[j>>2]+24>>2];i=0;b=c;e=b-l&3;if(e){while(1){b=b-1|0;J[(k+P(L[n+(b<<1)>>1],12)|0)+8>>2]=m;i=i+1|0;if((e|0)!=(i|0)){continue}break}}if(l-c>>>0<=4294967292){while(1){c=n+(b<<1)|0;J[(k+P(L[c-2>>1],12)|0)+8>>2]=m;J[(k+P(L[c-4>>1],12)|0)+8>>2]=m;J[(k+P(L[c-6>>1],12)|0)+8>>2]=m;b=b-4|0;J[(k+P(L[n+(b<<1)>>1],12)|0)+8>>2]=m;if(b>>>0>l>>>0){continue}break}}H[j+50|0]=b}if(K[g+9|0]){tm(h,35,l,0,0)}J[h+36>>2]=K[h+50|0];_m(h,J[g+4>>2]);break r}lu(o,d+776|0,oq(o));_m(o,c);tk(a);Il(a,d+200|0,0);if(J[d+200>>2]==1){J[d+200>>2]=3}ku(J[a+48>>2],d+200|0);c=J[d+220>>2];if(J[a+16>>2]!=274){break q}}b=1;continue}lu(o,d+776|0,c)}_m(o,J[d+776>>2]);pp(a,262,266,q);break b}b=0;continue}}b=J[a+48>>2];aA(a,r);if(J[d+208>>2]==13){b=J[J[b>>2]+12>>2]+(J[d+216>>2]<<2)|0;J[b>>2]=J[b>>2]&-8372225|16384;break b}J[d+200>>2]=0;uV(a,d+200|0,1);break b}tk(a);c=0;f=0;e=J[a+48>>2];b=J[e+20>>2];u:{if(b){while(1){if(K[b+10|0]){c=b;break u}f=K[b+9|0]|f;b=J[b>>2];if(b){continue}break}}qk(a,52019)}if(f){tm(e,35,K[c+8|0],0,0)}lu(e,c+4|0,oq(e));b=0;break a}i=J[a+48>>2];tk(a);c=0;e=J[a+16>>2];b=e-260|0;v:{if(!(b>>>0>27|!(1<>2];x:{if((e|0)!=44){if(J[d+200>>2]-13>>>0<=1){break x}c=Zn(i,c);break v}while(1){tk(a);c=d+200|0;kn(J[a+48>>2],c);Il(a,c,0);b=b+1|0;if(J[a+16>>2]==44){continue}break}if(J[d+200>>2]-13>>>0>=2){break w}}Pw(i,d+200|0,-1);if(!((e|0)==44|J[d+200>>2]!=13)){b=J[J[i>>2]+12>>2]+(J[d+208>>2]<<2)|0;J[b>>2]=J[b>>2]&-64|29}c=K[i+50|0];b=-1;break v}kn(i,d+200|0);c=K[i+50|0]}uI(i,c,b);b=0;break a}tk(a);f=J[a+16>>2];if((f|0)==265){tk(a);e=J[a+48>>2];if(J[a+16>>2]!=285){b=J[a+52>>2];J[d+144>>2]=Cl(a,285);qk(a,gk(b,74053,d+144|0))}b=J[a+24>>2];tk(a);sn(a,b,0);J[d+784>>2]=J[e+36>>2];J[d+776>>2]=6;J[d+792>>2]=-1;J[d+796>>2]=-1;fr(e,1);c=J[a+48>>2];b=K[c+50|0]+1|0;H[c+50|0]=b;J[(J[J[c>>2]+24>>2]+P(L[(c+((b&255)<<1)|0)+170>>1],12)|0)+4>>2]=J[c+24>>2];c=J[a+4>>2];bH(a,d+200|0);J[J[d+200>>2]+60>>2]=c;if(J[a+16>>2]!=40){b=J[a+52>>2];J[d+128>>2]=Cl(a,40);qk(a,gk(b,74053,d+128|0))}tk(a);ZG(a);if(J[a+16>>2]!=41){b=J[a+52>>2];J[d+112>>2]=Cl(a,41);qk(a,gk(b,74053,d+112|0))}tk(a);Pq(a);J[J[d+200>>2]+64>>2]=J[a+4>>2];pp(a,262,265,c);AE(a);b=d+176|0;SG(a,d+200|0,b);SA(e,d+776|0,b);J[(J[J[e>>2]+24>>2]+P(L[(e+(K[e+50|0]<<1)|0)+170>>1],12)|0)+4>>2]=J[e+24>>2];b=1;break a}c=0;while(1){if((f|0)!=285){b=J[a+52>>2];J[d+160>>2]=Cl(a,285);qk(a,gk(b,74053,d+160|0))}b=J[a+24>>2];tk(a);sn(a,b,c);b=c+1|0;e=J[a+16>>2];if((e|0)==44){tk(a);f=J[a+16>>2];c=b;continue}break}y:{if((e|0)==61){tk(a);Il(a,d+200|0,0);f=1;if(J[a+16>>2]!=44){break y}while(1){tk(a);e=d+200|0;kn(J[a+48>>2],e);Il(a,e,0);f=f+1|0;if(J[a+16>>2]==44){continue}break}break y}f=0;J[d+200>>2]=0}fF(J[a+48>>2],b,f,d+200|0);g=J[a+48>>2];e=K[g+50|0]+b|0;H[g+50|0]=e;n=g+172|0;i=e&255;j=J[g+24>>2];g=J[J[g>>2]+24>>2];f=0;e=b&3;if(e){while(1){J[(g+P(L[n+(i-b<<1)>>1],12)|0)+4>>2]=j;b=b-1|0;f=f+1|0;if((e|0)!=(f|0)){continue}break}}if(c>>>0<3){break b}while(1){c=n+(i-b<<1)|0;J[(g+P(L[c>>1],12)|0)+4>>2]=j;J[(g+P(L[c+2>>1],12)|0)+4>>2]=j;J[(g+P(L[c+4>>1],12)|0)+4>>2]=j;J[(g+P(L[c+6>>1],12)|0)+4>>2]=j;b=b-4|0;if(b){continue}break}break b}g=J[a+48>>2];i=J[g+36>>2];sn(a,Ep(a,137143,15),0);sn(a,Ep(a,139034,11),1);sn(a,Ep(a,137559,13),2);sn(a,c,3);b=4;f=J[a+16>>2];if((f|0)==44){while(1){tk(a);if(J[a+16>>2]!=285){c=J[a+52>>2];J[d+80>>2]=Cl(a,285);qk(a,gk(c,74053,d+80|0))}c=J[a+24>>2];tk(a);sn(a,c,b);b=b+1|0;f=J[a+16>>2];if((f|0)==44){continue}break}}if((f|0)!=267){c=J[a+52>>2];J[d+64>>2]=Cl(a,267);qk(a,gk(c,74053,d- -64|0))}tk(a);e=J[a+4>>2];Il(a,d+200|0,0);f=1;if(J[a+16>>2]==44){while(1){tk(a);c=d+200|0;kn(J[a+48>>2],c);Il(a,c,0);f=f+1|0;if(J[a+16>>2]==44){continue}break}}fF(J[a+48>>2],3,f,d+200|0);n=J[g+36>>2]+3|0;c=J[g>>2];if((n|0)>K[c+75|0]){if(n>>>0>=250){qk(J[g+12>>2],4813);c=J[g>>2]}H[c+75|0]=n}lB(a,i,e,b-3|0,0)}pp(a,262,264,q);n=J[m+20>>2];J[m+20>>2]=J[n>>2];j=K[n+8|0];g=J[J[m+12>>2]+48>>2];c=K[g+50|0];if(j>>>0>>0){i=g+172|0;k=J[g+24>>2];l=J[J[g>>2]+24>>2];f=0;b=c;e=b-j&3;if(e){while(1){b=b-1|0;J[(l+P(L[i+(b<<1)>>1],12)|0)+8>>2]=k;f=f+1|0;if((e|0)!=(f|0)){continue}break}}if(j-c>>>0<=4294967292){while(1){c=i+(b<<1)|0;J[(l+P(L[c-2>>1],12)|0)+8>>2]=k;J[(l+P(L[c-4>>1],12)|0)+8>>2]=k;J[(l+P(L[c-6>>1],12)|0)+8>>2]=k;b=b-4|0;J[(l+P(L[i+(b<<1)>>1],12)|0)+8>>2]=k;if(b>>>0>j>>>0){continue}break}}H[g+50|0]=b}if(K[n+9|0]){tm(m,35,j,0,0)}J[m+36>>2]=K[m+50|0];_m(m,J[n+4>>2])}b=1}if(J[a+16>>2]==59){tk(a)}c=J[a+48>>2];J[c+36>>2]=K[c+50|0];if(b){continue}}break}a=J[a+52>>2];I[a+52>>1]=L[a+52>>1]-1;Ui=d+800|0}function ZF(a,b,c){var d=0,e=0,f=0,g=0,h=0,i=0,j=0,k=0,l=0,m=0,n=0,o=0,p=0,q=0,r=0,s=0,t=0,u=0,v=0,w=0,x=0;j=Ui-304|0;Ui=j;a:{b:{if(!J[a+4>>2]){zz(a);if(!J[a+4>>2]){break b}}i=K[b|0];if(!i){break a}c:{d:{e:{f:{g:{while(1){h:{d=i&255;i:{if((d|0)==32|d-9>>>0<5){while(1){i=b;b=b+1|0;d=K[i+1|0];if((d|0)==32|d-9>>>0<5){continue}break}No(a,0,0);while(1){b=J[a+4>>2];j:{if((b|0)!=J[a+104>>2]){J[a+4>>2]=b+1;b=K[b|0];break j}b=Uk(a)}if((b|0)==32|b-9>>>0<5){continue}break}b=J[a+4>>2];d=J[a+116>>2];if((d|0)>0){d=1}else{d=(d|0)>=0}if(d){b=b-1|0;J[a+4>>2]=b}b=b-J[a+44>>2]|0;e=b;h=u+J[a+124>>2]|0;d=b>>31;b=q+J[a+120>>2]|0;h=d+(b>>>0>>0?h+1|0:h)|0;q=b+e|0;u=q>>>0>>0?h+1|0:h;break i}k:{l:{m:{if((d|0)==37){d=K[b+1|0];if((d|0)==42){break m}if((d|0)!=37){break l}}No(a,0,0);n:{if(K[b|0]==37){while(1){d=J[a+4>>2];o:{if((d|0)!=J[a+104>>2]){J[a+4>>2]=d+1;i=K[d|0];break o}i=Uk(a)}if((i|0)==32|i-9>>>0<5){continue}break}b=b+1|0;break n}d=J[a+4>>2];if((d|0)!=J[a+104>>2]){J[a+4>>2]=d+1;i=K[d|0];break n}i=Uk(a)}if(K[b|0]!=(i|0)){b=J[a+116>>2];if((b|0)>0){b=1}else{b=(b|0)>=0}if(b){J[a+4>>2]=J[a+4>>2]-1}if(x|(i|0)>=0){break a}break b}d=J[a+4>>2]-J[a+44>>2]|0;e=d;f=u+J[a+124>>2]|0;i=d>>31;d=q+J[a+120>>2]|0;g=i+(d>>>0>>0?f+1|0:f)|0;q=d+e|0;u=q>>>0>>0?g+1|0:g;i=b;break i}k=0;i=b+2|0;break k}i=d-48|0;if(!(K[b+2|0]!=36|i>>>0>9)){d=Ui-16|0;J[d+12>>2]=c;e=d;d=i>>>0>1?((i<<2)+c|0)-4|0:c;J[e+8>>2]=d+4;k=J[d>>2];i=b+3|0;break k}k=J[c>>2];c=c+4|0;i=b+1|0}r=0;f=0;b=K[i|0];if(b-48>>>0<=9){while(1){f=(P(f,10)+b|0)-48|0;b=K[i+1|0];i=i+1|0;if(b-48>>>0<10){continue}break}}if((b|0)==109){l=0;r=(k|0)!=0;b=K[i+1|0];n=0;i=i+1|0}e=i;i=e+1|0;d=3;g=r;p:{q:{switch((b&255)-65|0){case 39:b=K[e+1|0]==104;i=b?e+2|0:i;d=b?-2:-1;break p;case 43:b=K[e+1|0]==108;i=b?e+2|0:i;d=b?3:1;break p;case 51:case 57:d=1;break p;case 11:d=2;break p;case 41:break p;case 0:case 2:case 4:case 5:case 6:case 18:case 23:case 26:case 32:case 34:case 35:case 36:case 37:case 38:case 40:case 45:case 46:case 47:case 50:case 52:case 55:break q;default:break d}}d=0;i=e}e=d;d=K[i|0];b=(d&47)==3;o=b?1:e;w=b?d|32:d;r:{if((w|0)==91){break r}s:{if((w|0)!=110){if((w|0)!=99){break s}f=(f|0)<=1?1:f;break r}pG(k,o,q,u);break i}No(a,0,0);while(1){b=J[a+4>>2];t:{if((b|0)!=J[a+104>>2]){J[a+4>>2]=b+1;b=K[b|0];break t}b=Uk(a)}if((b|0)==32|b-9>>>0<5){continue}break}b=J[a+4>>2];d=J[a+116>>2];if((d|0)>0){d=1}else{d=(d|0)>=0}if(d){b=b-1|0;J[a+4>>2]=b}b=b-J[a+44>>2]|0;e=b;h=u+J[a+124>>2]|0;d=b>>31;b=q+J[a+120>>2]|0;u=d+(b>>>0>>0?h+1|0:h)|0;q=b+e|0;u=q>>>0>>0?u+1|0:u}p=f;s=f>>31;No(a,f,s);b=J[a+4>>2];u:{if((b|0)!=J[a+104>>2]){J[a+4>>2]=b+1;break u}if((Uk(a)|0)<0){break e}}b=J[a+116>>2];if((b|0)>0){b=1}else{b=(b|0)>=0}if(b){J[a+4>>2]=J[a+4>>2]-1}b=16;v:{w:{x:{y:{z:{switch(w-88|0){default:b=w-65|0;if(b>>>0>6|!(1<>2]-J[a+44>>2]|0;if(J[a+120>>2]!=(0-d|0)|J[a+124>>2]!=(0-((d>>31)+((d|0)!=0)|0)|0)){break x}break f;case 3:case 11:case 27:if((w|16)==115){ij(j+32|0,-1,257);H[j+32|0]=0;if((w|0)!=115){break w}H[j+65|0]=0;H[j+46|0]=0;I[j+42>>1]=0;I[j+44>>1]=0;break w}e=K[i+1|0];d=(e|0)==94;ij(j+32|0,d,257);H[j+32|0]=0;b=d?i+2|0:i+1|0;A:{B:{C:{d=K[(d?2:1)+i|0];if((d|0)!=45){if((d|0)==93){break C}t=(e|0)!=94;break A}t=(e|0)!=94;H[j+78|0]=t;break B}t=(e|0)!=94;H[j+126|0]=t}b=b+1|0}i=b;while(1){d=K[i|0];D:{if((d|0)!=45){if(!d){break e}if((d|0)==93){break w}break D}d=45;h=K[i+1|0];if(!h|(h|0)==93){break D}e=i+1|0;b=K[i-1|0];E:{if(h>>>0<=b>>>0){d=h;break E}while(1){b=b+1|0;H[b+(j+32|0)|0]=t;d=K[e|0];if(d>>>0>b>>>0){continue}break}}i=e}H[(d+j|0)+33|0]=t;i=i+1|0;continue};case 23:b=8;break y;case 12:case 29:b=10;break y;case 1:case 2:case 4:case 5:case 6:case 7:case 8:case 10:case 16:case 18:case 19:case 20:case 21:case 22:case 25:case 26:case 28:case 30:case 31:break v;case 0:case 24:case 32:break y;case 17:break z}}b=0}e=0;h=0;f=0;g=0;v=0;s=Ui-16|0;Ui=s;F:{if(!((b|0)!=1&b>>>0<=36)){J[245744]=28;break F}while(1){d=J[a+4>>2];G:{if((d|0)!=J[a+104>>2]){J[a+4>>2]=d+1;d=K[d|0];break G}d=Uk(a)}if((d|0)==32|d-9>>>0<5){continue}break}H:{I:{switch(d-43|0){case 0:case 2:break I;default:break H}}v=(d|0)==45?-1:0;d=J[a+4>>2];if((d|0)!=J[a+104>>2]){J[a+4>>2]=d+1;d=K[d|0];break H}d=Uk(a)}J:{K:{L:{M:{if(!((b|0)!=0&(b|0)!=16|(d|0)!=48)){d=J[a+4>>2];N:{if((d|0)!=J[a+104>>2]){J[a+4>>2]=d+1;d=K[d|0];break N}d=Uk(a)}if((d&-33)==88){b=16;d=J[a+4>>2];O:{if((d|0)!=J[a+104>>2]){J[a+4>>2]=d+1;d=K[d|0];break O}d=Uk(a)}if(K[d+217345|0]<16){break L}b=J[a+116>>2];if((b|0)>0){b=1}else{b=(b|0)>=0}if(b){J[a+4>>2]=J[a+4>>2]-1}No(a,0,0);break F}if(b){break M}b=8;break L}b=b?b:10;if(b>>>0>K[d+217345|0]){break M}b=J[a+116>>2];if((b|0)>0){b=1}else{b=(b|0)>=0}if(b){J[a+4>>2]=J[a+4>>2]-1}No(a,0,0);J[245744]=28;break F}if((b|0)!=10){break L}f=d-48|0;if(f>>>0<=9){d=0;while(1){d=P(d,10)+f|0;b=d>>>0<429496729;e=J[a+4>>2];P:{if((e|0)!=J[a+104>>2]){J[a+4>>2]=e+1;e=K[e|0];break P}e=Uk(a)}f=e-48|0;if(b&f>>>0<=9){continue}break}e=d}if(f>>>0>9){break J}b=ixa(e,0,10,0);g=Yi;while(1){Q:{h=g;e=b+f|0;h=e>>>0>>0?h+1|0:h;b=(h|0)==429496729&e>>>0<2576980378|h>>>0<429496729;d=J[a+4>>2];R:{if((d|0)!=J[a+104>>2]){J[a+4>>2]=d+1;d=K[d|0];break R}d=Uk(a)}p=d-48|0;if(!(b&p>>>0<=9)){if(p>>>0<=9){break Q}break J}b=ixa(e,h,10,0);g=Yi;f=p;if((g|0)==-1&(f^-1)>>>0>=b>>>0|(g|0)!=-1){continue}}break}b=10;break K}if(b-1&b){g=K[d+217345|0];if(g>>>0>>0){while(1){f=P(b,f)+g|0;e=f>>>0<119304647;d=J[a+4>>2];S:{if((d|0)!=J[a+104>>2]){J[a+4>>2]=d+1;d=K[d|0];break S}d=Uk(a)}g=K[d+217345|0];if(e&g>>>0>>0){continue}break}e=f}if(b>>>0<=g>>>0){break K}m=b;while(1){f=ixa(e,h,m,0);p=Yi;g=g&255;if((p|0)==-1&(g^-1)>>>0>>0){break K}h=p;e=f+g|0;h=e>>>0>>0?h+1|0:h;d=J[a+4>>2];T:{if((d|0)!=J[a+104>>2]){J[a+4>>2]=d+1;d=K[d|0];break T}d=Uk(a)}g=K[d+217345|0];if(b>>>0<=g>>>0){break K}Am(s,m,0,0,0,e,h,0,0);if(!(J[s+8>>2]|J[s+12>>2])){continue}break}break K}p=H[(P(b,23)>>>5&7)+217601|0];f=K[d+217345|0];if(f>>>0>>0){while(1){d=g<>>0<134217728;d=J[a+4>>2];U:{if((d|0)!=J[a+104>>2]){J[a+4>>2]=d+1;d=K[d|0];break U}d=Uk(a)}f=K[d+217345|0];if(e&f>>>0>>0){continue}break}e=g}if(b>>>0<=f>>>0){break K}m=p&31;if((p&63)>>>0>=32){g=0;m=-1>>>m|0}else{g=-1>>>m|0;m=g|(1<>>0>m>>>0){break K}while(1){t=f&255;d=e;f=p&31;if((p&63)>>>0>=32){h=d<>>32-f|h<>2];V:{if((d|0)!=J[a+104>>2]){J[a+4>>2]=d+1;d=K[d|0];break V}d=Uk(a)}f=K[d+217345|0];if(b>>>0<=f>>>0){break K}if((h|0)==(g|0)&e>>>0<=m>>>0|h>>>0>>0){continue}break}}if(K[d+217345|0]>=b>>>0){break J}while(1){d=J[a+4>>2];W:{if((d|0)!=J[a+104>>2]){J[a+4>>2]=d+1;d=K[d|0];break W}d=Uk(a)}if(K[d+217345|0]>>0){continue}break}J[245744]=68;v=0;e=-1;h=-1}b=J[a+116>>2];if((b|0)>0){b=1}else{b=(b|0)>=0}if(b){J[a+4>>2]=J[a+4>>2]-1}X:{if((e&h)!=-1){break X}}d=e^v;e=d-v|0;b=v>>31;h=(b^h)-((d>>>0>>0)+b|0)|0}Ui=s+16|0;d=J[a+4>>2]-J[a+44>>2]|0;if(J[a+120>>2]==(0-d|0)&J[a+124>>2]==(0-((d>>31)+((d|0)!=0)|0)|0)){break f}if(!(!k|(w|0)!=112)){J[k>>2]=e;break v}pG(k,o,e,h);break v}if(!k){break v}e=J[j+16>>2];h=J[j+20>>2];f=J[j+8>>2];s=J[j+12>>2];Y:{switch(o|0){case 0:o=Ui-32|0;Ui=o;d=h&65535;b=0;g=h>>>16&32767;m=g;Z:{if(g-16257>>>0<=253){b=(d&33554431)<<7|e>>>25;d=0;e=e&33554431;_:{if(!(!d&(e|0)==16777216?!(f|s):!d&e>>>0<16777216)){b=b+1|0;break _}if(e^16777216|f|(d|s)){break _}b=(b&1)+b|0}d=b>>>0>8388607;b=d?0:b;f=m+(d?-16255:-16256)|0;break Z}if(!(!(e|f|(d|s))|((g|0)!=32767|(b|0)!=0))){b=(d&33554431)<<7|e>>>25|4194304;f=255;break Z}if(m>>>0>16510){f=255;break Z}p=!(b|g);g=p?16256:16257;r=g-m|0;if((r|0)>112){f=0;break Z}b=e;d=p?d:d|65536;Mm(o+16|0,f,s,b,d,128-r|0);Lr(o,f,s,b,d,r);d=J[o+8>>2];b=(J[o+12>>2]&33554431)<<7|d>>>25;r=d&33554431;d=J[o>>2]|(g|0)!=(m|0)&(J[o+16>>2]|J[o+24>>2]|(J[o+20>>2]|J[o+28>>2]))!=0;f=J[o+4>>2];e=0;$:{if(!(!e&(r|0)==16777216?!(d|f):!e&r>>>0<16777216)){b=b+1|0;break $}if(r^16777216|d|(e|f)){break $}b=(b&1)+b|0}f=b>>>0>8388607;b=f?b^8388608:b}Ui=o+32|0;J[k>>2]=h&-2147483648|f<<23|b;break v;case 1:O[k>>3]=gF(f,s,e,h);break v;case 2:break Y;default:break v}}J[k>>2]=f;J[k+4>>2]=s;J[k+8>>2]=e;J[k+12>>2]=h;break v}m=(w|0)!=99;d=m?31:f+1|0;aa:{if((o|0)==1){f=k;if(r){f=sj(d<<2);if(!f){break g}}J[j+296>>2]=0;J[j+300>>2]=0;b=0;while(1){n=f;ba:{while(1){e=J[a+4>>2];ca:{if((e|0)!=J[a+104>>2]){J[a+4>>2]=e+1;e=K[e|0];break ca}e=Uk(a)}if(!K[(e+j|0)+33|0]){break ba}H[j+27|0]=e;g=j+28|0;e=j+296|0;h=e?e:994804;f=J[h>>2];da:{ea:{l=j+27|0;fa:{ga:{if(!l){if(f){break ga}e=0;break da}ha:{if(f){v=1;break ha}e=K[l|0];f=e<<24>>24;if((f|0)>=0){if(g){J[g>>2]=e}e=(f|0)!=0;break da}if(!J[J[245847]>>2]){e=1;if(!g){break fa}J[g>>2]=f&57343;e=1;break da}e=e-194|0;if(e>>>0>50){break ga}f=J[(e<<2)+217616>>2];break ea}t=K[l|0];e=t>>>3|0;if((e-16|(f>>26)+e)>>>0>7){break ga}while(1){v=v-1|0;f=t-128|f<<6;if((f|0)>=0){J[h>>2]=0;if(g){J[g>>2]=f}e=1-v|0;break da}if(!v){break ea}l=l+1|0;t=K[l|0];if((t&192)==128){continue}break}}J[h>>2]=0;J[245744]=25;e=-1}break da}J[h>>2]=f;e=-2}if((e|0)==-2){continue}if((e|0)==-1){l=0;break e}if(n){J[(b<<2)+n>>2]=J[j+28>>2];b=b+1|0}if(!r|(b|0)!=(d|0)){continue}break}g=1;l=0;d=d<<1|1;f=ml(n,d<<2);if(f){continue}break d}break}l=0;d=n;if(j+296|0?J[j+296>>2]:0){break e}break aa}if(r){b=0;f=sj(d);if(!f){break g}while(1){n=f;while(1){e=J[a+4>>2];ia:{if((e|0)!=J[a+104>>2]){J[a+4>>2]=e+1;e=K[e|0];break ia}e=Uk(a)}if(!K[(e+j|0)+33|0]){d=0;l=n;break aa}H[b+n|0]=e;b=b+1|0;if((d|0)!=(b|0)){continue}break}g=1;d=d<<1|1;f=ml(n,d);if(f){continue}break}l=n;n=0;break d}b=0;if(k){while(1){d=J[a+4>>2];ja:{if((d|0)!=J[a+104>>2]){J[a+4>>2]=d+1;d=K[d|0];break ja}d=Uk(a)}if(K[(d+j|0)+33|0]){H[b+k|0]=d;b=b+1|0;continue}else{d=0;n=k;l=k;break aa}}}while(1){b=J[a+4>>2];ka:{if((b|0)!=J[a+104>>2]){J[a+4>>2]=b+1;b=K[b|0];break ka}b=Uk(a)}if(K[(b+j|0)+33|0]){continue}break}n=0;l=0;d=0;b=0}f=J[a+4>>2];e=J[a+116>>2];if((e|0)>0){e=1}else{e=(e|0)>=0}if(e){f=f-1|0;J[a+4>>2]=f}e=f-J[a+44>>2]|0;f=e+J[a+120>>2]|0;h=J[a+124>>2]+(e>>31)|0;h=e>>>0>f>>>0?h+1|0:h;if(!(h|f)|!(m|(f|0)==(p|0)&(h|0)==(s|0))){break h}if(r){J[k>>2]=n}la:{if((w|0)==99){break la}if(d){J[(b<<2)+d>>2]=0}if(!l){l=0;break la}H[b+l|0]=0}n=d}b=J[a+4>>2]-J[a+44>>2]|0;e=b;f=u+J[a+124>>2]|0;d=b>>31;b=q+J[a+120>>2]|0;g=d+(b>>>0>>0?f+1|0:f)|0;q=b+e|0;u=q>>>0>>0?g+1|0:g;x=((k|0)!=0)+x|0}b=i+1|0;i=K[i+1|0];if(i){continue}break a}break}n=d;break f}g=1;l=0;n=0;break d}g=r;break c}g=r}x=x?x:-1}if(!g){break a}cj(l);cj(n);break a}x=-1}Ui=j+304|0;return x}function Caa(a,b,c){a=a|0;b=b|0;c=c|0;var d=0,e=0,f=0,g=0,h=0,i=0,j=0,k=0,l=0,m=0,n=0;l=Ui-16|0;Ui=l;J[l+12>>2]=0;a:{b:{c:{d:{e:{f:{g:{h:{i:{j:{k:{l:{m:{n:{o:{p:{q:{r:{s:{t:{u:{v:{w:{x:{y:{z:{A:{B:{C:{D:{E:{h=J[c+8>>2];if((h|0)!=7){d=J[J[79491]+172>>2];if(d>>>0>1]){break E}if(d>>>0>1]){break D}m=1;F:{if((h|0)==3){break F}d=h-9|0;if(d>>>0>=13|!(8013>>>d&1)){d=(h|0)==16|h-33>>>0<13}else{d=1}if(d){break F}d=L[c+40>>1];h=yD(J[c+8>>2])>>>3|0;h=P(d,h>>>0<=1?1:h);if(!(h&3)){break F}cb(3317,2-(h&1)|0);m=0;if(!(K[J[79491]+220|0]&2)){break F}h=_()|0;if(h){break C}}if((b|0)==2097152|b>>>0>2097152){break B}d=J[79491];h=0;G:{if(a+1>>>0<2){break G}f=a&65535;if(f>>>0>=M[d+100>>2]){break A}g=J[J[d+92>>2]+(f<<2)>>2];h=0;if(!g){break G}h=L[J[d+96>>2]+(f<<1)>>1]==(a>>>16|0)?g:0}f=L[h+76>>1];g=(K[c+46|0]&127)+1|0;I[h+76>>1]=f>>>0>g>>>0?f:g;f=J[h+48>>2];if(f>>>0<=3){n=J[(f<<2)+161296>>2]}i=5121;f=6409;g=6409;H:{I:{switch(J[c+8>>2]){case 4:i=33635;case 2:f=6407;g=6407;break H;case 5:i=32819;case 3:f=6408;g=6408;break H;case 8:g=-1;f=35841;break H;case 9:g=-1;f=35840;break H;case 10:g=-1;f=35843;break H;case 11:g=-1;f=35842;break H;case 12:g=-1;f=36196;break H;case 13:g=-1;f=37488;break H;case 14:g=-1;f=37490;break H;case 15:g=-1;f=37496;break H;case 16:g=-1;f=37808;break H;case 33:g=-1;f=37809;break H;case 34:g=-1;f=37810;break H;case 35:g=-1;f=37811;break H;case 36:g=-1;f=37812;break H;case 37:g=-1;f=37813;break H;case 38:g=-1;f=37814;break H;case 39:g=-1;f=37815;break H;case 40:g=-1;f=37816;break H;case 41:g=-1;f=37817;break H;case 42:g=-1;f=37818;break H;case 43:g=-1;f=37819;break H;case 44:g=-1;f=37820;break H;case 45:g=-1;f=37821;break H;case 17:g=-1;f=33776;break H;case 18:g=-1;f=33779;break H;case 19:g=-1;f=36283;break H;case 20:g=-1;f=36285;break H;case 21:g=-1;f=36492;break H;case 22:f=6407;d=K[d+220|0]&8;g=d?34843:6407;i=d?5131:36193;break H;case 23:f=6407;g=K[d+220|0]&8?34837:6407;i=5126;break H;case 24:f=6408;d=K[d+220|0]&8;g=d?34842:6408;i=d?5131:36193;break H;case 25:f=6408;g=K[d+220|0]&8?34836:6408;i=5126;break H;case 26:g=33325;i=5131;f=6403;break H;case 28:g=33326;i=5126;f=6403;break H;case 27:g=33327;i=5131;f=33319;break H;case 29:g=33328;i=5126;f=33319;break H;case 6:g=K[d+220|0]&8?33190:33189;i=5125;f=6402;break H;default:Z(114101,40535,4168,20500);B();case 0:break H;case 1:break I}}f=6410;g=6410}d=J[c+4>>2];J[h>>2]=J[c>>2];J[h+4>>2]=d;d=K[c+43|0]|K[c+44|0]<<8|(K[c+45|0]<<16|K[c+46|0]<<24);e=K[c+39|0]|K[c+40|0]<<8|(K[c+41|0]<<16|K[c+42|0]<<24);H[h+39|0]=e;H[h+40|0]=e>>>8;H[h+41|0]=e>>>16;H[h+42|0]=e>>>24;H[h+43|0]=d;H[h+44|0]=d>>>8;H[h+45|0]=d>>>16;H[h+46|0]=d>>>24;d=J[c+36>>2];J[h+32>>2]=J[c+32>>2];J[h+36>>2]=d;d=J[c+28>>2];J[h+24>>2]=J[c+24>>2];J[h+28>>2]=d;d=J[c+20>>2];J[h+16>>2]=J[c+16>>2];J[h+20>>2]=d;d=J[c+12>>2];J[h+8>>2]=J[c+8>>2];J[h+12>>2]=d;d=H[c+46|0];J:{if((d|0)<0){break J}if(!d){I[h+66>>1]=L[c+40>>1];I[h+68>>1]=L[c+42>>1];I[h+70>>1]=L[c+44>>1];d=K[c+46|0]}if(d&127){break J}J[h+56>>2]=J[c+4>>2]}if(L[h+64>>1]){while(1){e=J[79491];d=J[e+108>>2];j=J[e+112>>2]-d>>2;e=J[J[h+52>>2]+(k<<2)>>2];if(j>>>0<=e>>>0){break z}ja(n|0,J[d+(e<<2)>>2]);if(K[J[79491]+220|0]&2){d=_()|0;if(d){break y}}if(H[c+46|0]>=0){Zi[J[79458]](a,b,J[c+12>>2],J[c+16>>2],J[c+20>>2],J[c+24>>2],Q(1))}K:{L:{switch(J[c+8>>2]){case 0:case 1:case 2:case 3:case 4:case 5:case 6:case 22:case 23:case 24:case 25:case 26:case 27:case 28:case 29:M:{switch(J[h+48>>2]){case 0:case 3:d=J[c>>2];e=H[c+46|0];N:{if((e|0)<0){ga(3553,e&127,J[c+28>>2],J[c+32>>2],L[c+40>>1],L[c+42>>1],f|0,i|0,d+P(J[c+4>>2],k)|0);break N}fa(3553,e|0,g|0,L[c+40>>1],L[c+42>>1],0,f|0,i|0,d+P(J[c+4>>2],k)|0)}if(!(K[J[79491]+220|0]&2)){break K}d=_()|0;if(!d){break K}Cj(d,63005,4278);Z(114101,40535,4278,63005);B();case 1:if(!(H[J[79491]+221|0]&1)){break x}d=H[c+46|0];O:{if((d|0)<0){kc(35866,d&127,J[c+28>>2],J[c+36>>2],J[c+32>>2],L[c+40>>1],L[c+42>>1],L[c+44>>1],f|0,i|0,J[c>>2]);break O}mc(35866,d|0,g|0,L[c+40>>1],L[c+42>>1],L[c+44>>1],0,f|0,i|0,J[c>>2])}if(!(K[J[79491]+220|0]&2)){break K}d=_()|0;if(!d){break K}Cj(d,63005,4291);Z(114101,40535,4291,63005);B();case 2:if(L[h+64>>1]!=1){break w}d=J[c>>2];e=H[c+46|0];if((e|0)<0){ga(34069,e&127,J[c+28>>2],J[c+32>>2],L[c+40>>1],L[c+42>>1],f|0,i|0,d|0);if(K[J[79491]+220|0]&2){e=_()|0;if(e){break v}}ga(34070,K[c+46|0]&127,J[c+28>>2],J[c+32>>2],L[c+40>>1],L[c+42>>1],f|0,i|0,d+J[c+4>>2]|0);if(K[J[79491]+220|0]&2){e=_()|0;if(e){break u}}ga(34071,K[c+46|0]&127,J[c+28>>2],J[c+32>>2],L[c+40>>1],L[c+42>>1],f|0,i|0,d+(J[c+4>>2]<<1)|0);if(K[J[79491]+220|0]&2){e=_()|0;if(e){break t}}ga(34072,K[c+46|0]&127,J[c+28>>2],J[c+32>>2],L[c+40>>1],L[c+42>>1],f|0,i|0,d+P(J[c+4>>2],3)|0);if(K[J[79491]+220|0]&2){e=_()|0;if(e){break s}}ga(34073,K[c+46|0]&127,J[c+28>>2],J[c+32>>2],L[c+40>>1],L[c+42>>1],f|0,i|0,d+(J[c+4>>2]<<2)|0);if(K[J[79491]+220|0]&2){e=_()|0;if(e){break r}}ga(34074,K[c+46|0]&127,J[c+28>>2],J[c+32>>2],L[c+40>>1],L[c+42>>1],f|0,i|0,d+P(J[c+4>>2],5)|0);if(!(K[J[79491]+220|0]&2)){break K}d=_()|0;if(!d){break K}Cj(d,63005,4310);Z(114101,40535,4310,63005);B()}fa(34069,e|0,g|0,L[c+40>>1],L[c+42>>1],0,f|0,i|0,d|0);if(K[J[79491]+220|0]&2){e=_()|0;if(e){break q}}fa(34070,K[c+46|0]&127,g|0,L[c+40>>1],L[c+42>>1],0,f|0,i|0,d+J[c+4>>2]|0);if(K[J[79491]+220|0]&2){e=_()|0;if(e){break p}}fa(34071,K[c+46|0]&127,g|0,L[c+40>>1],L[c+42>>1],0,f|0,i|0,d+(J[c+4>>2]<<1)|0);if(K[J[79491]+220|0]&2){e=_()|0;if(e){break o}}fa(34072,K[c+46|0]&127,g|0,L[c+40>>1],L[c+42>>1],0,f|0,i|0,d+P(J[c+4>>2],3)|0);if(K[J[79491]+220|0]&2){e=_()|0;if(e){break n}}fa(34073,K[c+46|0]&127,g|0,L[c+40>>1],L[c+42>>1],0,f|0,i|0,d+(J[c+4>>2]<<2)|0);if(K[J[79491]+220|0]&2){e=_()|0;if(e){break m}}fa(34074,K[c+46|0]&127,g|0,L[c+40>>1],L[c+42>>1],0,f|0,i|0,d+P(J[c+4>>2],5)|0);if(!(K[J[79491]+220|0]&2)){break K}d=_()|0;if(!d){break K}Cj(d,63005,4325);Z(114101,40535,4325,63005);B();default:break M}}Z(114101,40535,4330,63005);B();case 8:case 9:case 10:case 11:case 12:case 13:case 14:case 15:case 16:case 17:case 18:case 19:case 20:case 21:case 33:case 34:case 35:case 36:case 37:case 38:case 39:case 40:case 41:case 42:case 43:case 44:case 45:e=J[c+4>>2];if(!e){break K}P:{switch(J[h+48>>2]){case 0:d=H[c+46|0];Q:{if((d|0)<0){ha(3553,d&127,J[c+28>>2],J[c+32>>2],L[c+40>>1],L[c+42>>1],f|0,e|0,J[c>>2]);break Q}ia(3553,d|0,f|0,L[c+40>>1],L[c+42>>1],0,e|0,J[c>>2])}if(!(K[J[79491]+220|0]&2)){break K}d=_()|0;if(!d){break K}Cj(d,63005,4373);Z(114101,40535,4373,63005);B();case 1:d=H[c+46|0];R:{if((d|0)<0){Vc(35866,d&127,J[c+28>>2],J[c+32>>2],J[c+36>>2],L[c+40>>1],L[c+42>>1],L[c+44>>1],f|0,i|0,J[c>>2]);break R}j=d;d=L[c+44>>1];kb(35866,j|0,f|0,L[c+40>>1],L[c+42>>1],d|0,0,P(d,e)|0,J[c>>2])}if(!(K[J[79491]+220|0]&2)){break K}d=_()|0;if(!d){break K}Cj(d,63005,4385);Z(114101,40535,4385,63005);B();case 2:d=J[c>>2];j=H[c+46|0];if((j|0)<0){ha(34069,j&127,J[c+28>>2],J[c+32>>2],L[c+40>>1],L[c+42>>1],f|0,e|0,d|0);if(K[J[79491]+220|0]&2){e=_()|0;if(e){break l}}e=J[c+4>>2];ha(34070,K[c+46|0]&127,J[c+28>>2],J[c+32>>2],L[c+40>>1],L[c+42>>1],f|0,e|0,d+e|0);if(K[J[79491]+220|0]&2){e=_()|0;if(e){break k}}e=J[c+4>>2];ha(34071,K[c+46|0]&127,J[c+28>>2],J[c+32>>2],L[c+40>>1],L[c+42>>1],f|0,e|0,d+(e<<1)|0);if(K[J[79491]+220|0]&2){e=_()|0;if(e){break j}}e=J[c+4>>2];ha(34072,K[c+46|0]&127,J[c+28>>2],J[c+32>>2],L[c+40>>1],L[c+42>>1],f|0,e|0,d+P(e,3)|0);if(K[J[79491]+220|0]&2){e=_()|0;if(e){break i}}e=J[c+4>>2];ha(34074,K[c+46|0]&127,J[c+28>>2],J[c+32>>2],L[c+40>>1],L[c+42>>1],f|0,e|0,d+(e<<2)|0);if(K[J[79491]+220|0]&2){e=_()|0;if(e){break h}}e=J[c+4>>2];ha(34073,K[c+46|0]&127,J[c+28>>2],J[c+32>>2],L[c+40>>1],L[c+42>>1],f|0,e|0,d+P(e,5)|0);if(!(K[J[79491]+220|0]&2)){break K}d=_()|0;if(!d){break K}Cj(d,63005,4403);Z(114101,40535,4403,63005);B()}ia(34069,j|0,f|0,L[c+40>>1],L[c+42>>1],0,e|0,d|0);if(K[J[79491]+220|0]&2){e=_()|0;if(e){break g}}e=J[c+4>>2];ia(34070,K[c+46|0]&127,f|0,L[c+40>>1],L[c+42>>1],0,e|0,d+e|0);if(K[J[79491]+220|0]&2){e=_()|0;if(e){break f}}e=J[c+4>>2];ia(34071,K[c+46|0]&127,f|0,L[c+40>>1],L[c+42>>1],0,e|0,d+(e<<1)|0);if(K[J[79491]+220|0]&2){e=_()|0;if(e){break e}}e=J[c+4>>2];ia(34072,K[c+46|0]&127,f|0,L[c+40>>1],L[c+42>>1],0,e|0,d+P(e,3)|0);if(K[J[79491]+220|0]&2){e=_()|0;if(e){break d}}e=J[c+4>>2];ia(34074,K[c+46|0]&127,f|0,L[c+40>>1],L[c+42>>1],0,e|0,d+(e<<2)|0);if(K[J[79491]+220|0]&2){e=_()|0;if(e){break c}}e=J[c+4>>2];ia(34073,K[c+46|0]&127,f|0,L[c+40>>1],L[c+42>>1],0,e|0,d+P(e,5)|0);if(!(K[J[79491]+220|0]&2)){break K}d=_()|0;if(!d){break K}Cj(d,63005,4418);Z(114101,40535,4418,63005);B();default:break P}}Z(114101,40535,4423,63005);B();default:break L}}Z(114101,40535,4428,63005);B()}k=k+1|0;if(k>>>0>1]){continue}break}}ja(n|0,0);if(K[J[79491]+220|0]&2){a=_()|0;if(a){break b}}S:{if(m){break S}cb(3317,4);if(!(K[J[79491]+220|0]&2)){break S}a=_()|0;if(a){break a}}Ui=l+16|0;return}Z(92461,40535,4183,63005);B()}Z(59847,40535,4186,63005);B()}Z(59800,40535,4187,63005);B()}Cj(h,63005,4209);Z(114101,40535,4209,63005);B()}Z(94863,55553,306,33926);B()}Z(2686,54166,244,5438);B()}Z(145396,53895,487,84789);B()}Cj(d,63005,4243);Z(114101,40535,4243,63005);B()}Z(10242,40535,4282,63005);B()}Z(110784,40535,4295,63005);B()}Cj(e,63005,4300);Z(114101,40535,4300,63005);B()}Cj(e,63005,4302);Z(114101,40535,4302,63005);B()}Cj(e,63005,4304);Z(114101,40535,4304,63005);B()}Cj(e,63005,4306);Z(114101,40535,4306,63005);B()}Cj(e,63005,4308);Z(114101,40535,4308,63005);B()}Cj(e,63005,4315);Z(114101,40535,4315,63005);B()}Cj(e,63005,4317);Z(114101,40535,4317,63005);B()}Cj(e,63005,4319);Z(114101,40535,4319,63005);B()}Cj(e,63005,4321);Z(114101,40535,4321,63005);B()}Cj(e,63005,4323);Z(114101,40535,4323,63005);B()}Cj(e,63005,4393);Z(114101,40535,4393,63005);B()}Cj(e,63005,4395);Z(114101,40535,4395,63005);B()}Cj(e,63005,4397);Z(114101,40535,4397,63005);B()}Cj(e,63005,4399);Z(114101,40535,4399,63005);B()}Cj(e,63005,4401);Z(114101,40535,4401,63005);B()}Cj(e,63005,4408);Z(114101,40535,4408,63005);B()}Cj(e,63005,4410);Z(114101,40535,4410,63005);B()}Cj(e,63005,4412);Z(114101,40535,4412,63005);B()}Cj(e,63005,4414);Z(114101,40535,4414,63005);B()}Cj(e,63005,4416);Z(114101,40535,4416,63005);B()}Cj(a,63005,4434);Z(114101,40535,4434,63005);B()}Cj(a,63005,4440);Z(114101,40535,4440,63005);B()}function ID(a){var b=0,c=0,d=0,e=0,f=Q(0),g=0,h=0,i=0;b=J[a>>2];h=b;i=J[b+8>>2]-J[b+12>>2]>>4;J[77572]=J[a+4>>2];e=J[b+8>>2]-J[b+12>>2]|0;J[77573]=vm(b,34859,160356,224480);J[77574]=vm(b,49251,160364,224512);uk(b,34859,224560);d=J[b+8>>2];J[d+8>>2]=3;O[d>>3]=0;J[b+8>>2]=J[b+8>>2]+16;ej(b,-2,102944);d=J[b+8>>2];J[d+8>>2]=3;O[d>>3]=1;J[b+8>>2]=J[b+8>>2]+16;ej(b,-2,105776);d=J[b+8>>2];J[d+8>>2]=3;O[d>>3]=2;J[b+8>>2]=J[b+8>>2]+16;ej(b,-2,109436);d=J[b+8>>2];J[d+8>>2]=3;O[d>>3]=3;J[b+8>>2]=J[b+8>>2]+16;ej(b,-2,108655);d=J[b+8>>2];J[d+8>>2]=3;O[d>>3]=4;J[b+8>>2]=J[b+8>>2]+16;ej(b,-2,102928);d=J[b+8>>2];J[d+8>>2]=3;O[d>>3]=5;J[b+8>>2]=J[b+8>>2]+16;ej(b,-2,105759);d=J[b+8>>2];J[d+8>>2]=3;O[d>>3]=6;J[b+8>>2]=J[b+8>>2]+16;ej(b,-2,109419);d=J[b+8>>2];J[d+8>>2]=3;O[d>>3]=7;J[b+8>>2]=J[b+8>>2]+16;ej(b,-2,108638);d=J[b+8>>2];J[d+8>>2]=3;O[d>>3]=8;J[b+8>>2]=J[b+8>>2]+16;ej(b,-2,109454);gj(b,-2);if(e>>4!=J[b+8>>2]-J[b+12>>2]>>4){Z(143244,39971,1195,33291);B()}b=J[a>>2];e=J[b+8>>2]-J[b+12>>2]|0;uk(b,83957,224704);gj(b,-2);if(e>>4!=J[b+8>>2]-J[b+12>>2]>>4){Z(143244,42815,104,33390);B()}b=Ui-32|0;Ui=b;e=J[a>>2];d=pj(b+12|0,e,0,40650,396);uk(e,49991,224912);gj(e,-2);oj(d);Ui=b+32|0;b=J[a>>2];e=J[b+8>>2]-J[b+12>>2]|0;uk(b,4692,224944);d=J[b+8>>2];J[d+8>>2]=3;O[d>>3]=0;J[b+8>>2]=J[b+8>>2]+16;ej(b,-2,94115);d=J[b+8>>2];J[d+8>>2]=3;O[d>>3]=1;J[b+8>>2]=J[b+8>>2]+16;ej(b,-2,91181);d=J[b+8>>2];J[d+8>>2]=3;O[d>>3]=2;J[b+8>>2]=J[b+8>>2]+16;ej(b,-2,94138);d=J[b+8>>2];J[d+8>>2]=3;O[d>>3]=3;J[b+8>>2]=J[b+8>>2]+16;ej(b,-2,91157);gj(b,-2);if(e>>4!=J[b+8>>2]-J[b+12>>2]>>4){Z(143244,37079,421,33436);B()}e=Ui-32|0;Ui=e;b=J[a>>2];d=pj(e+12|0,b,0,40250,678);uk(b,43600,225584);c=J[b+8>>2];J[c+8>>2]=3;O[c>>3]=1;J[b+8>>2]=J[b+8>>2]+16;ej(b,-2,90812);c=J[b+8>>2];J[c+8>>2]=3;O[c>>3]=2;J[b+8>>2]=J[b+8>>2]+16;ej(b,-2,90805);c=J[b+8>>2];J[c+8>>2]=3;O[c>>3]=4;J[b+8>>2]=J[b+8>>2]+16;ej(b,-2,111521);c=J[b+8>>2];J[c+8>>2]=3;O[c>>3]=-3;J[b+8>>2]=J[b+8>>2]+16;ej(b,-2,111531);c=J[b+8>>2];J[c+8>>2]=3;O[c>>3]=-7;J[b+8>>2]=J[b+8>>2]+16;ej(b,-2,111542);gj(b,-2);oj(d);Ui=e+32|0;e=Ui-32|0;Ui=e;b=J[a>>2];uk(b,25691,224992);d=J[b+8>>2];J[d+8>>2]=3;O[d>>3]=0;J[b+8>>2]=J[b+8>>2]+16;ej(b,-2,94058);d=J[b+8>>2];J[d+8>>2]=3;O[d>>3]=1;J[b+8>>2]=J[b+8>>2]+16;ej(b,-2,97193);d=J[b+8>>2];J[d+8>>2]=3;O[d>>3]=2;J[b+8>>2]=J[b+8>>2]+16;ej(b,-2,96261);d=J[b+8>>2];J[d+8>>2]=3;O[d>>3]=3;J[b+8>>2]=J[b+8>>2]+16;ej(b,-2,90430);d=J[b+8>>2];J[d+8>>2]=3;O[d>>3]=4;J[b+8>>2]=J[b+8>>2]+16;ej(b,-2,97003);d=J[b+8>>2];J[d+8>>2]=3;O[d>>3]=5;J[b+8>>2]=J[b+8>>2]+16;ej(b,-2,92614);d=J[b+8>>2];J[d+8>>2]=3;O[d>>3]=0;J[b+8>>2]=J[b+8>>2]+16;ej(b,-2,95241);d=J[b+8>>2];J[d+8>>2]=3;O[d>>3]=1;J[b+8>>2]=J[b+8>>2]+16;ej(b,-2,85235);d=J[b+8>>2];J[d+8>>2]=3;O[d>>3]=2;J[b+8>>2]=J[b+8>>2]+16;ej(b,-2,95774);d=J[b+8>>2];J[d+8>>2]=3;O[d>>3]=3;J[b+8>>2]=J[b+8>>2]+16;ej(b,-2,92303);gj(b,-2);d=nj(16);J[d>>2]=0;J[d+4>>2]=0;J[d+8>>2]=0;J[d+12>>2]=0;a:{b:{c:{if(eo(J[60922],d)){break c}c=am(J[a+4>>2],80935,e+28|0);if(c){J[e+20>>2]=c;J[e+16>>2]=80935;dj(4,88458,130787,e+16|0);break c}if(My(J[a+8>>2],J[e+28>>2],d+8|0)){break b}J[e>>2]=80935;dj(4,88458,134507,e)}cj(d);break a}c=J[b+8>>2];J[c+8>>2]=2;J[c>>2]=d;J[b+8>>2]=J[b+8>>2]+16;c=yj(160400);d=Dq(160400,c);mj(b,160400,c);uj(b,-2);Kj(b,-10002);c=J[b+8>>2];J[c+8>>2]=3;O[c>>3]=d|0;J[b+8>>2]=J[b+8>>2]+16;Pk(b,-2);Kj(b,-10002);J[78152]=d}Ui=e+32|0;b=J[a>>2];uk(b,2907,224816);e=J[b+8>>2];J[e+8>>2]=3;O[e>>3]=0;J[b+8>>2]=J[b+8>>2]+16;ej(b,-2,98037);e=J[b+8>>2];J[e+8>>2]=3;O[e>>3]=1;J[b+8>>2]=J[b+8>>2]+16;ej(b,-2,94264);e=J[b+8>>2];J[e+8>>2]=3;O[e>>3]=2;J[b+8>>2]=J[b+8>>2]+16;ej(b,-2,98023);gj(b,-2);b=J[a>>2];uk(b,2878,224736);e=J[b+8>>2];J[e+8>>2]=3;O[e>>3]=0;J[b+8>>2]=J[b+8>>2]+16;ej(b,-2,98037);e=J[b+8>>2];J[e+8>>2]=3;O[e>>3]=1;J[b+8>>2]=J[b+8>>2]+16;ej(b,-2,94264);e=J[b+8>>2];J[e+8>>2]=3;O[e>>3]=2;J[b+8>>2]=J[b+8>>2]+16;ej(b,-2,98023);gj(b,-2);b=J[a>>2];uk(b,61237,225488);gj(b,-2);b=J[a>>2];e=J[b+8>>2]-J[b+12>>2]|0;uk(b,70934,225376);gj(b,-2);if(e>>4!=J[b+8>>2]-J[b+12>>2]>>4){Z(143244,42276,751,33370);B()}e=J[a+16>>2];b=J[a>>2];d=J[b+8>>2]-J[b+12>>2]>>4;uk(b,69784,225216);c=J[b+8>>2];J[c+8>>2]=3;O[c>>3]=0;J[b+8>>2]=J[b+8>>2]+16;ej(b,-2,98721);c=J[b+8>>2];J[c+8>>2]=3;O[c>>3]=2;J[b+8>>2]=J[b+8>>2]+16;ej(b,-2,90908);c=J[b+8>>2];J[c+8>>2]=3;O[c>>3]=1;J[b+8>>2]=J[b+8>>2]+16;ej(b,-2,85213);c=J[b+8>>2];J[c+8>>2]=3;O[c>>3]=3;J[b+8>>2]=J[b+8>>2]+16;ej(b,-2,98737);c=J[b+8>>2];J[c+8>>2]=3;O[c>>3]=1;J[b+8>>2]=J[b+8>>2]+16;ej(b,-2,88034);c=J[b+8>>2];J[c+8>>2]=3;O[c>>3]=2;J[b+8>>2]=J[b+8>>2]+16;ej(b,-2,87993);c=J[b+8>>2];J[c+8>>2]=3;O[c>>3]=4;J[b+8>>2]=J[b+8>>2]+16;ej(b,-2,87952);c=J[b+8>>2];J[c+8>>2]=3;O[c>>3]=8;J[b+8>>2]=J[b+8>>2]+16;ej(b,-2,87911);c=J[b+8>>2];J[c+8>>2]=3;O[c>>3]=16;J[b+8>>2]=J[b+8>>2]+16;ej(b,-2,87859);c=J[b+8>>2];J[c+8>>2]=3;O[c>>3]=32;J[b+8>>2]=J[b+8>>2]+16;ej(b,-2,87818);c=J[b+8>>2];J[c+8>>2]=3;O[c>>3]=1;J[b+8>>2]=J[b+8>>2]+16;ej(b,-2,95793);c=J[b+8>>2];J[c+8>>2]=3;O[c>>3]=2;J[b+8>>2]=J[b+8>>2]+16;ej(b,-2,88845);c=J[b+8>>2];J[c+8>>2]=3;O[c>>3]=4;J[b+8>>2]=J[b+8>>2]+16;ej(b,-2,96348);d:{if(!e){break d}if(Zi[J[79453]](e,0)|0){c=J[b+8>>2];J[c+8>>2]=3;O[c>>3]=0;J[b+8>>2]=J[b+8>>2]+16;ej(b,-2,96618)}if(Zi[J[79453]](e,2)|0){c=J[b+8>>2];J[c+8>>2]=3;O[c>>3]=2;J[b+8>>2]=J[b+8>>2]+16;ej(b,-2,99354)}if(Zi[J[79453]](e,3)|0){c=J[b+8>>2];J[c+8>>2]=3;O[c>>3]=3;J[b+8>>2]=J[b+8>>2]+16;ej(b,-2,101376)}if(Zi[J[79453]](e,6)|0){c=J[b+8>>2];J[c+8>>2]=3;O[c>>3]=6;J[b+8>>2]=J[b+8>>2]+16;ej(b,-2,93435)}if(Zi[J[79453]](e,7)|0){c=J[b+8>>2];J[c+8>>2]=3;O[c>>3]=7;J[b+8>>2]=J[b+8>>2]+16;ej(b,-2,92480)}if(Zi[J[79453]](e,8)|0){c=J[b+8>>2];J[c+8>>2]=3;O[c>>3]=8;J[b+8>>2]=J[b+8>>2]+16;ej(b,-2,110251)}if(Zi[J[79453]](e,9)|0){c=J[b+8>>2];J[c+8>>2]=3;O[c>>3]=9;J[b+8>>2]=J[b+8>>2]+16;ej(b,-2,110186)}if(Zi[J[79453]](e,10)|0){c=J[b+8>>2];J[c+8>>2]=3;O[c>>3]=10;J[b+8>>2]=J[b+8>>2]+16;ej(b,-2,110283)}if(Zi[J[79453]](e,11)|0){c=J[b+8>>2];J[c+8>>2]=3;O[c>>3]=11;J[b+8>>2]=J[b+8>>2]+16;ej(b,-2,110218)}if(Zi[J[79453]](e,12)|0){c=J[b+8>>2];J[c+8>>2]=3;O[c>>3]=12;J[b+8>>2]=J[b+8>>2]+16;ej(b,-2,110316)}if(Zi[J[79453]](e,15)|0){c=J[b+8>>2];J[c+8>>2]=3;O[c>>3]=15;J[b+8>>2]=J[b+8>>2]+16;ej(b,-2,109327)}if(Zi[J[79453]](e,16)|0){c=J[b+8>>2];J[c+8>>2]=3;O[c>>3]=16;J[b+8>>2]=J[b+8>>2]+16;ej(b,-2,106891)}if(Zi[J[79453]](e,17)|0){c=J[b+8>>2];J[c+8>>2]=3;O[c>>3]=17;J[b+8>>2]=J[b+8>>2]+16;ej(b,-2,110340)}if(Zi[J[79453]](e,18)|0){c=J[b+8>>2];J[c+8>>2]=3;O[c>>3]=18;J[b+8>>2]=J[b+8>>2]+16;ej(b,-2,109016)}if(Zi[J[79453]](e,19)|0){c=J[b+8>>2];J[c+8>>2]=3;O[c>>3]=19;J[b+8>>2]=J[b+8>>2]+16;ej(b,-2,107168)}if(Zi[J[79453]](e,20)|0){c=J[b+8>>2];J[c+8>>2]=3;O[c>>3]=20;J[b+8>>2]=J[b+8>>2]+16;ej(b,-2,106696)}if(Zi[J[79453]](e,21)|0){c=J[b+8>>2];J[c+8>>2]=3;O[c>>3]=21;J[b+8>>2]=J[b+8>>2]+16;ej(b,-2,103457)}if(Zi[J[79453]](e,22)|0){c=J[b+8>>2];J[c+8>>2]=3;O[c>>3]=22;J[b+8>>2]=J[b+8>>2]+16;ej(b,-2,94611)}if(Zi[J[79453]](e,23)|0){c=J[b+8>>2];J[c+8>>2]=3;O[c>>3]=23;J[b+8>>2]=J[b+8>>2]+16;ej(b,-2,94697)}if(Zi[J[79453]](e,24)|0){c=J[b+8>>2];J[c+8>>2]=3;O[c>>3]=24;J[b+8>>2]=J[b+8>>2]+16;ej(b,-2,94633)}if(Zi[J[79453]](e,25)|0){c=J[b+8>>2];J[c+8>>2]=3;O[c>>3]=25;J[b+8>>2]=J[b+8>>2]+16;ej(b,-2,94719)}if(Zi[J[79453]](e,26)|0){c=J[b+8>>2];J[c+8>>2]=3;O[c>>3]=26;J[b+8>>2]=J[b+8>>2]+16;ej(b,-2,94570)}if(Zi[J[79453]](e,27)|0){c=J[b+8>>2];J[c+8>>2]=3;O[c>>3]=27;J[b+8>>2]=J[b+8>>2]+16;ej(b,-2,94590)}if(Zi[J[79453]](e,28)|0){c=J[b+8>>2];J[c+8>>2]=3;O[c>>3]=28;J[b+8>>2]=J[b+8>>2]+16;ej(b,-2,94656)}if(!(Zi[J[79453]](e,29)|0)){break d}e=J[b+8>>2];J[e+8>>2]=3;O[e>>3]=29;J[b+8>>2]=J[b+8>>2]+16;ej(b,-2,94676)}e=J[b+8>>2];J[e+8>>2]=3;O[e>>3]=0;J[b+8>>2]=J[b+8>>2]+16;ej(b,-2,87724);e=J[b+8>>2];J[e+8>>2]=3;O[e>>3]=3;J[b+8>>2]=J[b+8>>2]+16;ej(b,-2,98862);gj(b,-2);if(J[b+8>>2]-J[b+12>>2]>>4!=(d|0)){Z(143244,42133,3437,14317);B()}J[78228]=J[a+4>>2];J[78229]=J[a+16>>2];b=J[a>>2];e=J[b+8>>2]-J[b+12>>2]|0;uk(b,6568,225664);d=J[b+8>>2];J[d+8>>2]=3;O[d>>3]=0;J[b+8>>2]=J[b+8>>2]+16;ej(b,-2,86491);d=J[b+8>>2];J[d+8>>2]=3;O[d>>3]=1;J[b+8>>2]=J[b+8>>2]+16;ej(b,-2,97557);d=J[b+8>>2];J[d+8>>2]=3;O[d>>3]=2;J[b+8>>2]=J[b+8>>2]+16;ej(b,-2,97145);d=J[b+8>>2];J[d+8>>2]=3;O[d>>3]=3;J[b+8>>2]=J[b+8>>2]+16;ej(b,-2,97899);d=J[b+8>>2];J[d+8>>2]=3;O[d>>3]=4;J[b+8>>2]=J[b+8>>2]+16;ej(b,-2,97921);d=J[b+8>>2];J[d+8>>2]=3;O[d>>3]=0;J[b+8>>2]=J[b+8>>2]+16;ej(b,-2,91114);d=J[b+8>>2];J[d+8>>2]=3;O[d>>3]=1;J[b+8>>2]=J[b+8>>2]+16;ej(b,-2,91204);d=J[b+8>>2];J[d+8>>2]=3;O[d>>3]=2;J[b+8>>2]=J[b+8>>2]+16;ej(b,-2,94395);gj(b,-2);if(e>>4!=J[b+8>>2]-J[b+12>>2]>>4){Z(143244,37214,400,14317);B()}J[78498]=J[a+12>>2];b=J[a>>2];e=J[b+8>>2]-J[b+12>>2]|0;uk(b,1346,224784);d=J[b+8>>2];J[d+8>>2]=3;O[d>>3]=-1;J[b+8>>2]=J[b+8>>2]+16;ej(b,-2,94249);d=J[b+8>>2];J[d+8>>2]=3;O[d>>3]=-2;J[b+8>>2]=J[b+8>>2]+16;ej(b,-2,97990);d=J[b+8>>2];J[d+8>>2]=3;O[d>>3]=-3;J[b+8>>2]=J[b+8>>2]+16;ej(b,-2,97970);gj(b,-2);if(e>>4!=J[b+8>>2]-J[b+12>>2]>>4){Z(143244,36518,208,14317);B()}b=J[a>>2];e=J[b+8>>2]-J[b+12>>2]|0;uk(b,17236,225552);d=J[b+8>>2];J[d+8>>2]=3;O[d>>3]=2;J[b+8>>2]=J[b+8>>2]+16;ej(b,-2,97946);d=J[b+8>>2];J[d+8>>2]=3;O[d>>3]=-2;J[b+8>>2]=J[b+8>>2]+16;ej(b,-2,89508);d=J[b+8>>2];J[d+8>>2]=3;O[d>>3]=-1;J[b+8>>2]=J[b+8>>2]+16;ej(b,-2,96846);gj(b,-2);if(e>>4!=J[b+8>>2]-J[b+12>>2]>>4){Z(143244,39051,415,33266);B()}J[78398]=J[a+4>>2];J[78399]=J[a+20>>2];J[78404]=Co();b=J[a+24>>2];if(b){b=J[b+124>>2]}else{b=0}a=J[a+24>>2];if(a){a=J[a>>2]}else{a=0}d=J[b+8>>2]-J[b+12>>2]>>4;c=J[64198];e=Ui-16|0;Ui=e;J[e+12>>2]=659;g=J[84556];if((g|0)==((J[84554]-J[84552]|0)/12|0)){g=g+128|0;gN(338200,(P(g,100)>>>0)/80|0,g)}av(338200,c,e+12|0);Ui=e+16|0;if(a){f=Q(pS(a,9545,Q(0))*Q(1e6));e:{if(f=Q(0)){a=~~f>>>0;if(Q(R(f))>=Q(1)){e=~~(f>Q(0)?Q(T(Q(V(Q(f*Q(2.3283064365386963e-10)))),Q(4294967296))):Q(W(Q(Q(f-Q(~~f>>>0>>>0))*Q(2.3283064365386963e-10)))))>>>0}else{e=0}break e}a=0;e=0}J[77882]=a;J[77883]=e}uk(b,36507,224864);gj(b,-2);if(J[b+8>>2]-J[b+12>>2]>>4!=(d|0)){Z(143244,39266,267,33312);B()}if(J[h+8>>2]-J[h+12>>2]>>4!=(i|0)){Z(143244,37549,149,25801);B()}return 1}function gB(a){var b=0;b=fq(sj(yj(a)+1|0),a);a=Bm(b,86397);if(a){H[a|0]=0}a=Bm(b,99332);if(a){H[a|0]=0}a=Bm(b,89063);if(a){H[a|0]=0}a=Bm(b,95976);if(a){H[a|0]=0}a=Bm(b,92608);if(a){H[a|0]=0}a=2551;a:{if(!jj(b,63341)){break a}a=2552;if(!jj(b,35632)){break a}a=2553;if(!jj(b,47249)){break a}a=2554;if(!jj(b,35245)){break a}a=2555;if(!jj(b,34583)){break a}a=2556;if(!jj(b,34465)){break a}a=2557;if(!jj(b,63530)){break a}a=2558;if(!jj(b,32897)){break a}a=2559;if(!jj(b,46251)){break a}a=2560;if(!jj(b,61604)){break a}a=2561;if(!jj(b,82135)){break a}a=2562;if(!jj(b,61701)){break a}a=2563;if(!jj(b,83615)){break a}a=2564;if(!jj(b,83937)){break a}a=2565;if(!jj(b,17432)){break a}a=2566;if(!jj(b,36256)){break a}a=2567;if(!jj(b,32867)){break a}a=2568;if(!jj(b,57646)){break a}a=2569;if(!jj(b,49730)){break a}a=2570;if(!jj(b,50718)){break a}a=2571;if(!jj(b,35743)){break a}a=2572;if(!jj(b,98611)){break a}a=2573;if(!jj(b,98670)){break a}a=2574;if(!jj(b,98581)){break a}a=2575;if(!jj(b,98634)){break a}a=2576;if(!jj(b,49163)){break a}a=2577;if(!jj(b,35711)){break a}a=2578;if(!jj(b,70710)){break a}a=2579;if(!jj(b,19501)){break a}a=2580;if(!jj(b,19358)){break a}a=2581;if(!jj(b,49147)){break a}a=2582;if(!jj(b,19318)){break a}a=2583;if(!jj(b,35662)){break a}a=2584;if(!jj(b,22426)){break a}a=2585;if(!jj(b,82104)){break a}a=2586;if(!jj(b,50784)){break a}a=2587;if(!jj(b,57799)){break a}a=2588;if(!jj(b,35647)){break a}a=2589;if(!jj(b,67740)){break a}a=2590;if(!jj(b,4052)){break a}a=2591;if(!jj(b,17307)){break a}a=2592;if(!jj(b,18345)){break a}a=2593;if(!jj(b,67757)){break a}a=2594;if(!jj(b,4079)){break a}a=2595;if(!jj(b,53230)){break a}a=2596;if(!jj(b,53212)){break a}a=2597;if(!jj(b,34439)){break a}a=2598;if(!jj(b,98543)){break a}a=2599;if(!jj(b,70680)){break a}a=2600;if(!jj(b,19468)){break a}a=2601;if(!jj(b,43583)){break a}a=2602;if(!jj(b,19340)){break a}a=2603;if(!jj(b,19299)){break a}a=2604;if(!jj(b,22370)){break a}a=2605;if(!jj(b,82729)){break a}a=2606;if(!jj(b,48594)){break a}a=2607;if(!jj(b,19561)){break a}a=2608;if(!jj(b,47229)){break a}a=2609;if(!jj(b,7091)){break a}a=2610;if(!jj(b,7484)){break a}a=2611;if(!jj(b,32763)){break a}a=2612;if(!jj(b,6990)){break a}a=2613;if(!jj(b,7372)){break a}a=2614;if(!jj(b,7028)){break a}a=2615;if(!jj(b,7552)){break a}a=2616;if(!jj(b,55989)){break a}a=2617;if(!jj(b,7455)){break a}a=2618;if(!jj(b,7523)){break a}a=2619;if(!jj(b,55970)){break a}a=2620;if(!jj(b,17063)){break a}a=2621;if(!jj(b,70031)){break a}a=2622;if(!jj(b,56565)){break a}a=2623;if(!jj(b,7723)){break a}a=2624;if(!jj(b,7335)){break a}a=2625;if(!jj(b,7821)){break a}a=2626;if(!jj(b,7537)){break a}a=2627;if(!jj(b,47208)){break a}a=2628;if(!jj(b,7836)){break a}a=2629;if(!jj(b,7611)){break a}a=2630;if(!jj(b,7002)){break a}a=2631;if(!jj(b,13320)){break a}a=2632;if(!jj(b,35156)){break a}a=2633;if(!jj(b,75252)){break a}a=2634;if(!jj(b,34522)){break a}a=2635;if(!jj(b,49044)){break a}a=2636;if(!jj(b,34422)){break a}a=2637;if(!jj(b,35621)){break a}a=2638;if(!jj(b,63183)){break a}a=2639;if(!jj(b,53052)){break a}a=2640;if(!jj(b,49088)){break a}a=2641;if(!jj(b,52302)){break a}a=2642;if(!jj(b,15065)){break a}a=2643;if(!jj(b,20806)){break a}a=2644;if(!jj(b,34099)){break a}a=2645;if(!jj(b,68667)){break a}a=2646;if(!jj(b,68689)){break a}a=2647;if(!jj(b,32551)){break a}a=2648;if(!jj(b,3130)){break a}a=2649;if(!jj(b,70049)){break a}a=2650;if(!jj(b,82071)){break a}a=2651;if(!jj(b,61679)){break a}a=2652;if(!jj(b,50751)){break a}a=2653;if(!jj(b,61628)){break a}a=2654;if(!jj(b,43711)){break a}a=2655;if(!jj(b,61584)){break a}a=2656;if(!jj(b,98598)){break a}a=2657;if(!jj(b,57549)){break a}a=2658;if(!jj(b,7743)){break a}a=2659;if(!jj(b,52171)){break a}a=2660;if(!jj(b,7355)){break a}a=2661;if(!jj(b,98654)){break a}a=2662;if(!jj(b,57974)){break a}a=2663;if(!jj(b,8132)){break a}a=2664;if(!jj(b,52396)){break a}a=2665;if(!jj(b,7710)){break a}a=2666;if(!jj(b,57945)){break a}a=2667;if(!jj(b,8101)){break a}a=2668;if(!jj(b,52384)){break a}a=2669;if(!jj(b,7697)){break a}a=2670;if(!jj(b,57916)){break a}a=2671;if(!jj(b,8009)){break a}a=2672;if(!jj(b,52372)){break a}a=2673;if(!jj(b,7684)){break a}a=2674;if(!jj(b,57887)){break a}a=2675;if(!jj(b,7917)){break a}a=2676;if(!jj(b,52342)){break a}a=2677;if(!jj(b,7652)){break a}a=2678;if(!jj(b,8040)){break a}a=2679;if(!jj(b,7948)){break a}a=2680;if(!jj(b,7856)){break a}a=2681;if(!jj(b,49197)){break a}a=2682;if(!jj(b,49179)){break a}a=2683;if(!jj(b,57986)){break a}a=2684;if(!jj(b,8145)){break a}a=2685;if(!jj(b,57957)){break a}a=2686;if(!jj(b,8114)){break a}a=2687;if(!jj(b,57928)){break a}a=2688;if(!jj(b,8022)){break a}a=2689;if(!jj(b,57899)){break a}a=2690;if(!jj(b,7930)){break a}a=2691;if(!jj(b,33506)){break a}a=2692;if(!jj(b,10231)){break a}a=2532;if(!jj(b,86160)){break a}a=2533;if(!jj(b,86176)){break a}a=2534;if(!jj(b,85990)){break a}a=2535;if(!jj(b,86003)){break a}a=2536;if(!jj(b,86019)){break a}a=2537;if(!jj(b,86220)){break a}a=2538;if(!jj(b,86033)){break a}a=2539;if(!jj(b,86072)){break a}a=2540;if(!jj(b,86049)){break a}a=2541;if(!jj(b,86119)){break a}a=2542;if(!jj(b,86094)){break a}a=2543;if(!jj(b,89001)){break a}a=2544;if(!jj(b,89043)){break a}a=2545;if(!jj(b,89022)){break a}a=2546;if(!jj(b,88982)){break a}a=2547;if(!jj(b,92595)){break a}a=2548;if(!jj(b,95890)){break a}a=2549;if(!jj(b,95917)){break a}a=jj(b,95863)?0:2550}b:{if(a){break b}a=2532;c:{if(!jj(b,23624)){break c}a=2533;if(!jj(b,23637)){break c}a=2534;if(!jj(b,3042)){break c}a=2535;if(!jj(b,3052)){break c}a=2536;if(!jj(b,3065)){break c}a=2537;if(!jj(b,33475)){break c}a=2538;if(!jj(b,7108)){break c}a=2539;if(!jj(b,7272)){break c}a=2540;if(!jj(b,7121)){break c}a=2541;if(!jj(b,8247)){break c}a=2542;if(!jj(b,8225)){break c}a=2543;if(!jj(b,3992)){break c}a=2544;if(!jj(b,17286)){break c}a=2545;if(!jj(b,17268)){break c}a=2546;if(!jj(b,3976)){break c}a=2547;if(!jj(b,19454)){break c}a=2548;if(!jj(b,76010)){break c}a=2549;if(!jj(b,76032)){break c}a=jj(b,32637)?0:2550}if(a){break b}a=2697;d:{if(!jj(b,35343)){break d}a=2698;if(!jj(b,18379)){break d}a=2699;if(!jj(b,98373)){break d}a=2700;if(!jj(b,98429)){break d}a=2701;if(!jj(b,98409)){break d}a=2702;if(!jj(b,98386)){break d}a=2703;if(!jj(b,98445)){break d}a=2704;if(!jj(b,23624)){break d}a=2705;if(!jj(b,23637)){break d}a=2706;if(!jj(b,3042)){break d}a=2707;if(!jj(b,3052)){break d}a=2708;if(!jj(b,3065)){break d}a=2709;if(!jj(b,7108)){break d}a=2710;if(!jj(b,7121)){break d}a=2711;if(!jj(b,19454)){break d}a=2712;if(!jj(b,7988)){break d}a=2713;if(!jj(b,8080)){break d}a=2714;if(!jj(b,7896)){break d}a=2715;if(!jj(b,8059)){break d}a=2716;if(!jj(b,7875)){break d}a=2717;if(!jj(b,7967)){break d}a=2718;if(!jj(b,34504)){break d}a=2719;if(!jj(b,66248)){break d}a=2720;if(!jj(b,33139)){break d}a=2721;if(!jj(b,3992)){break d}a=2722;if(!jj(b,17286)){break d}a=2723;if(!jj(b,17268)){break d}a=2724;if(!jj(b,3976)){break d}a=2725;if(!jj(b,8175)){break d}a=2726;if(!jj(b,51827)){break d}a=2727;if(!jj(b,51927)){break d}a=2728;if(!jj(b,68247)){break d}a=2729;if(!jj(b,62692)){break d}a=2730;if(!jj(b,21268)){break d}a=2731;if(!jj(b,56083)){break d}a=2732;if(!jj(b,33528)){break d}a=2733;if(!jj(b,7631)){break d}a=2734;if(!jj(b,7174)){break d}a=2735;if(!jj(b,52354)){break d}a=2736;if(!jj(b,52100)){break d}a=2737;if(!jj(b,7665)){break d}a=2738;if(!jj(b,7210)){break d}a=2739;if(!jj(b,7158)){break d}a=2740;if(!jj(b,47270)){break d}a=2741;if(!jj(b,52145)){break d}a=2742;if(!jj(b,52132)){break d}a=2743;if(!jj(b,52119)){break d}a=2744;if(!jj(b,52087)){break d}a=2745;if(!jj(b,7258)){break d}a=2746;if(!jj(b,7244)){break d}a=2747;if(!jj(b,7230)){break d}a=2748;if(!jj(b,7196)){break d}a=2749;if(!jj(b,7507)){break d}a=2750;if(!jj(b,7141)){break d}a=2751;if(!jj(b,7805)){break d}a=2752;if(!jj(b,52286)){break d}a=2753;if(!jj(b,52273)){break d}a=2754;if(!jj(b,83860)){break d}a=2755;if(!jj(b,25231)){break d}a=2756;if(!jj(b,7313)){break d}a=2757;if(!jj(b,5559)){break d}a=2758;if(!jj(b,7567)){break d}a=2759;if(!jj(b,66086)){break d}a=2760;if(!jj(b,57089)){break d}a=2761;if(!jj(b,76010)){break d}a=2762;if(!jj(b,76032)){break d}a=2763;if(!jj(b,81991)){break d}a=2764;if(!jj(b,81969)){break d}a=2765;if(!jj(b,81978)){break d}a=2766;if(!jj(b,81941)){break d}a=2767;if(!jj(b,81958)){break d}a=2768;if(!jj(b,8209)){break d}a=2769;if(!jj(b,7599)){break d}a=2770;if(!jj(b,8191)){break d}a=2771;if(!jj(b,8268)){break d}a=2772;if(!jj(b,19232)){break d}a=2773;if(!jj(b,19246)){break d}a=2774;if(!jj(b,34073)){break d}a=2775;if(!jj(b,34085)){break d}a=2776;if(!jj(b,52187)){break d}a=2777;if(!jj(b,7434)){break d}a=2778;if(!jj(b,57565)){break d}a=2779;if(!jj(b,7784)){break d}a=2780;if(!jj(b,7410)){break d}a=2781;if(!jj(b,7760)){break d}a=2782;if(!jj(b,32637)){break d}a=2783;if(!jj(b,51903)){break d}a=2784;if(!jj(b,21105)){break d}a=2785;if(!jj(b,21081)){break d}a=2786;if(!jj(b,51805)){break d}a=2787;if(!jj(b,51852)){break d}a=2788;if(!jj(b,51877)){break d}a=2789;if(!jj(b,3145)){break d}a=2790;if(!jj(b,3164)){break d}a=2791;if(!jj(b,52207)){break d}a=2792;if(!jj(b,34538)){break d}a=2793;if(!jj(b,34601)){break d}a=2794;if(!jj(b,98566)){break d}a=2795;if(!jj(b,98358)){break d}a=2796;if(!jj(b,7291)){break d}a=2797;if(!jj(b,85823)){break d}a=2693;if(!jj(b,86195)){break d}a=2798;if(!jj(b,99259)){break d}a=2550;if(!jj(b,95863)){break d}a=2799;if(!jj(b,85847)){break d}a=2694;if(!jj(b,86238)){break d}a=2800;if(!jj(b,99284)){break d}a=2548;if(!jj(b,95890)){break d}a=2695;if(!jj(b,85871)){break d}a=2801;if(!jj(b,86263)){break d}a=2802;if(!jj(b,99309)){break d}a=2549;if(!jj(b,95917)){break d}a=2543;if(!jj(b,89001)){break d}a=2544;if(!jj(b,89043)){break d}a=2545;if(!jj(b,89022)){break d}a=2546;if(!jj(b,88982)){break d}a=2696;if(!jj(b,86143)){break d}a=jj(b,92595)?0:2547}if(a){break b}a=2693;e:{if(!jj(b,32637)){break e}a=2694;if(!jj(b,76010)){break e}a=2695;if(!jj(b,76032)){break e}a=2543;if(!jj(b,3992)){break e}a=2544;if(!jj(b,17286)){break e}a=2545;if(!jj(b,17268)){break e}a=2546;if(!jj(b,3976)){break e}a=jj(b,19454)?0:2696}}cj(b);return a}function XP(a,b,c,d,e,f,g,h){var i=0,j=Q(0),k=0,l=0,m=0,n=0,o=Q(0),p=0,q=Q(0),r=0,s=0,t=Q(0),u=Q(0),v=Q(0),w=0,x=Q(0),y=Q(0),z=Q(0),A=Q(0),C=Q(0),D=0,E=0,F=0,G=Q(0),L=Q(0),O=Q(0),S=Q(0),T=Q(0),U=Q(0),V=Q(0),W=Q(0),X=Q(0),Y=Q(0),_=Q(0),$=Q(0),aa=Q(0),ba=Q(0),ca=0,da=0,ea=0,fa=0,ga=0,ha=Q(0),ia=Q(0),ja=Q(0),ka=Q(0),la=Q(0),ma=0,na=Q(0),oa=Q(0);i=Ui-384|0;Ui=i;r=J[h+8>>2];a:{b:{c:{w=J[b+8>>2];if(!Tp(a,w)){n=J[r>>2];m=J[r+4>>2]-n|0;k=((m|0)/352|0)+1|0;if(k>>>0<=(J[r+8>>2]-n|0)/352>>>0){J[r+4>>2]=n+P(k,352);if(m>>>0<4294966944){k=J[h+12>>2];J[h+12>>2]=k+1;l=m+n|0;J[l+336>>2]=k;Ao(l);e=J[e>>2];H[l+320|0]=K[l+320|0]|2;d:{if(e){J[l+268>>2]=2;J[l+272>>2]=2;J[l+260>>2]=5;J[l+264>>2]=0;H[l+292|0]=K[e|0];H[l+293|0]=K[e+1|0];H[l+294|0]=K[e+2|0];H[l+295|0]=K[l+295|0]&208|K[e+3|0]&15;if(K[h+16|0]!=1){break d}H[h+16|0]=0;H[l+295|0]=K[l+295|0]|16;break d}H[l+294|0]=255;I[l+292>>1]=65280;J[l+268>>2]=0;J[l+272>>2]=0;J[l+260>>2]=7;J[l+264>>2]=0;H[l+295|0]=K[l+295|0]&208|15}e=iv(a,w);if(e>>>0<5){H[l+320|0]=K[l+320|0]|1;e=e<<2;J[l+252>>2]=J[e+159332>>2];J[l+248>>2]=J[e+159312>>2];J[l+156>>2]=J[r+48>>2];e=J[r+52>>2];J[l+240>>2]=1;J[l+144>>2]=e;J[l+308>>2]=(J[r+72>>2]-J[r+68>>2]|0)/40;e=Fo(a,w);J[l+172>>2]=J[(e?e:h+4|0)>>2];if(f){np(l,f)}h=ev(a,w,i+16|0);e:{f:{g:{h:{switch(J[i+16>>2]-1|0){case 0:break g;case 1:break h;default:break f}}h=J[h+80>>2];if(h){break g}Z(63544,40837,1118,63496);B()}f=J[h>>2];h=J[h+4>>2];if(!(f|h)){break f}J[l+176>>2]=f;J[l+180>>2]=h;ma=1;e=0;w=0;E=Ui-32|0;Ui=E;J[E+28>>2]=0;i:{if(!g){break i}if(!(f|h)){while(1){f=J[((e<<4)+b|0)+8>>2];fv(a,f);ay(E,a,f);gv(a,f);e=e+1|0;if((e|0)!=(g|0)){continue}break}e=P(g,6);break i}while(1){j:{k:{m=J[((w<<4)+b|0)+8>>2];f=fv(a,m);if(!f){break k}n=J[J[f+16>>2]+96>>2];if(!n){break k}k=J[n+104>>2]!=0;break j}n=0;k=0}ay(E,a,m);A=N[E+4>>2];q=N[E>>2];o=N[E+8>>2];j=N[E+12>>2];h=gv(a,m);l:{m:{n:{if(Q(j+Q(o+Q(q+A)))!=Q(0)){break n}f=e+6|0;if(!h){break m}if(!k){break n}f=nD(a,m);if(f>>>0>=M[n+80>>2]){break l}f=J[(J[n+100>>2]+P(J[J[n+76>>2]+(f<<2)>>2],56)|0)+44>>2]+e|0;break m}f=e+54|0}e=f;w=w+1|0;if((w|0)==(g|0)){break i}continue}break}break a}Ui=E+32|0;break e}e=J[r+92>>2];J[l+176>>2]=J[r+88>>2];J[l+180>>2]=e;J[i+368>>2]=0;if(g){h=0;while(1){e=J[((h<<4)+b|0)+8>>2];fv(a,e);ay(i+16|0,a,e);gv(a,e);h=h+1|0;if((h|0)!=(g|0)){continue}break}e=P(g,6)}else{e=0}}p=r+72|0;F=r+76|0;o:{f=J[r+76>>2];if(e>>>0>(f-J[r+72>>2]|0)/40>>>0){if(H[r+80|0]&1){break o}h=f;f=r+68|0;lj(((h-J[f>>2]|0)/40|0)+(e>>>0<=128?128:e)|0,40,f,F,p)}f=Zi[J[79463]](J[l+176>>2],J[l+180>>2])|0;e=Zi[J[79464]](J[l+176>>2],J[l+180>>2])|0;if(!(!f|!e)){if(!g){break c}ka=Q(Q(1)/Q(e>>>0));na=Q(-ka);la=Q(Q(1)/Q(f>>>0));oa=Q(-la);while(1){n=J[((ea<<4)+b|0)+8>>2];fm(i+368|0,a,n,3);T=N[(ea<<2)+d>>2];U=N[i+376>>2];V=N[i+372>>2];W=N[i+368>>2];m=gv(a,n);ay(i+352|0,a,n);p:{q:{k=Q(Q(Q(N[i+352>>2]+N[i+356>>2])+N[i+360>>2])+N[i+364>>2])!=Q(0);r:{if(!k){if(!((m|0)!=0&ma)){break r}break q}if(ma){break q}}s:{f=J[p>>2];if((f|0)!=J[F>>2]){e=(ea<<6)+c|0;ba=N[e+24>>2];X=N[e+8>>2];q=N[e+40>>2];t=N[e+56>>2];Y=N[e+20>>2];_=N[e+4>>2];o=N[e+36>>2];u=N[e+52>>2];$=N[e+16>>2];aa=N[e>>2];j=N[e+32>>2];y=N[e+48>>2];J[p>>2]=f+40;J[f+36>>2]=0;N[f+32>>2]=T;N[f+28>>2]=U;N[f+24>>2]=V;N[f+20>>2]=W;J[f+12>>2]=0;J[f+16>>2]=0;G=Q(q*Q(0));L=Q(X*Q(0));q=Q(ba*Q(0));O=Q(t+Q(G+Q(L+q)));N[f+8>>2]=O;z=Q(o*Q(0));x=Q(_*Q(0));o=Q(Y*Q(0));S=Q(u+Q(z+Q(x+o)));N[f+4>>2]=S;C=Q(j*Q(0));v=Q(aa*Q(0));j=Q($*Q(0));A=Q(y+Q(C+Q(v+j)));N[f>>2]=A;e=J[p>>2];if((e|0)==J[F>>2]){break b}J[p>>2]=e+40;J[e+36>>2]=0;N[e+32>>2]=T;N[e+28>>2]=U;N[e+24>>2]=V;N[e+20>>2]=W;J[e+12>>2]=1065353216;J[e+16>>2]=0;N[e+8>>2]=t+Q(G+Q(X+q));N[e+4>>2]=u+Q(z+Q(_+o));N[e>>2]=y+Q(C+Q(aa+j));e=J[p>>2];if((e|0)==J[F>>2]){break b}J[p>>2]=e+40;J[e+36>>2]=0;N[e+32>>2]=T;N[e+28>>2]=U;N[e+24>>2]=V;N[e+20>>2]=W;J[e+12>>2]=1065353216;J[e+16>>2]=1065353216;q=Q(t+Q(G+Q(X+ba)));N[e+8>>2]=q;o=Q(u+Q(z+Q(_+Y)));N[e+4>>2]=o;j=Q(Q(C+Q(aa+$))+y);N[e>>2]=j;e=J[p>>2];if((e|0)==J[F>>2]){break b}J[p>>2]=e+40;J[e+36>>2]=0;N[e+32>>2]=T;N[e+28>>2]=U;N[e+24>>2]=V;N[e+20>>2]=W;J[e+12>>2]=0;J[e+16>>2]=0;N[e+8>>2]=O;N[e+4>>2]=S;N[e>>2]=A;e=J[p>>2];if((e|0)==J[F>>2]){break b}J[p>>2]=e+40;J[e+36>>2]=0;N[e+32>>2]=T;N[e+28>>2]=U;N[e+24>>2]=V;N[e+20>>2]=W;J[e+12>>2]=1065353216;J[e+16>>2]=1065353216;N[e+8>>2]=q;N[e+4>>2]=o;N[e>>2]=j;e=J[p>>2];if((e|0)==J[F>>2]){break s}J[p>>2]=e+40;J[e+36>>2]=0;N[e+32>>2]=T;N[e+28>>2]=U;N[e+24>>2]=V;N[e+20>>2]=W;J[e+12>>2]=0;J[e+16>>2]=1065353216;N[e+8>>2]=t+Q(G+Q(L+ba));N[e+4>>2]=u+Q(z+Q(x+Y));N[e>>2]=Q(C+Q(v+$))+y;fa=fa+6|0;break p}break b}break b}t:{u:{e=fv(a,n);if(!e){break u}f=J[J[e+16>>2]+96>>2];if(!f){break u}e=nD(a,n);if(e>>>0>2]){w=J[f+104>>2]!=0;e=J[J[f+76>>2]+(e<<2)>>2];h=J[J[f+112>>2]+(e<<2)>>2];break t}break a}e=0;f=0;w=0;h=0}H[i+351|0]=0;H[i+350|0]=0;if(m){DO(a,n,i+351|0,i+350|0)}ha=Q(0);ia=Q(0);v:{w:{if(!w){break w}da=J[f+100>>2]+P(e,56)|0;ia=N[da+52>>2];ha=N[da+48>>2];if(k){break w}r=J[da+44>>2];if(r){E=K[i+350|0];X=E?Q(-1):Q(1);w=K[i+351|0];Y=w?Q(-1):Q(1);n=J[da+28>>2]>>>1|0;D=(ea<<6)+c|0;m=J[da+32>>2];k=J[da+24>>2];_=Q(h>>>0);f=0;while(1){s=J[p>>2];if((s|0)==J[F>>2]){break v}e=J[J[da+40>>2]+(f<<2)>>2];h=((w|0)==(E|0)?e:n+(e^-1)|0)<<3;e=h+k|0;$=N[e>>2];aa=N[e+4>>2];e=h+m|0;h=J[e>>2];e=J[e+4>>2];G=N[D+48>>2];z=N[D+32>>2];C=N[D>>2];L=N[D+16>>2];O=N[D+52>>2];x=N[D+36>>2];S=N[D+4>>2];v=N[D+20>>2];A=N[D+56>>2];q=N[D+40>>2];o=N[D+8>>2];j=N[D+24>>2];J[p>>2]=s+40;N[s+36>>2]=_;N[s+32>>2]=T;N[s+28>>2]=U;N[s+24>>2]=V;N[s+20>>2]=W;J[s+12>>2]=h;J[s+16>>2]=e;t=o;o=Q(Q(Q($-ha)*Y)+Q(.5));u=j;j=Q(Q(Q(aa-ia)*X)+Q(.5));N[s+8>>2]=A+Q(Q(q*Q(0))+Q(Q(t*o)+Q(u*j)));N[s+4>>2]=O+Q(Q(x*Q(0))+Q(Q(S*o)+Q(j*v)));N[s>>2]=G+Q(Q(z*Q(0))+Q(Q(C*o)+Q(j*L)));f=f+1|0;if((r|0)!=(f|0)){continue}break}}fa=r+fa|0;break p}J[i+300>>2]=1065353216;J[i+288>>2]=0;vO(i+272|0,a,n);j=N[i+276>>2];S=j>Q(.0010000000474974513)?Q(Q(1)/j):Q(0);j=N[i+272>>2];v=j>Q(.0010000000474974513)?Q(Q(1)/j):Q(0);m=m?m:159152;o=N[m+12>>2];x:{y:{x=N[m>>2];q=N[m+8>>2];if(x==q){break y}j=N[m+20>>2];if(j==o){break y}e=i+320|0;k=K[i+350|0];N[(e|(k?12:0))>>2]=x;f=K[i+351|0];A=N[i+364>>2];N[(e|(k?8:4))>>2]=Q(la*A)+x;t=N[i+356>>2];N[(e|(k?4:8))>>2]=Q(oa*t)+q;N[(e|(k?0:12))>>2]=q;e=i+304|0;o=N[m+4>>2];N[(e|(f?12:0))>>2]=o;u=N[i+352>>2];N[(e|(f?8:4))>>2]=o+Q(na*u);D=1;q=N[i+360>>2];o=j;j=Q(Q(ka*q)+j);break x}D=0;e=i+320|0;k=K[i+351|0];N[(e|(k?12:0))>>2]=x;f=K[i+350|0];u=N[i+352>>2];N[(e|(k?8:4))>>2]=Q(la*u)+x;q=N[i+360>>2];j=N[m+16>>2];N[(e|(k?4:8))>>2]=Q(oa*q)+j;N[(e|(k?0:12))>>2]=j;e=i+304|0;j=N[m+4>>2];N[(e|(f?12:0))>>2]=j;A=N[i+364>>2];N[(e|(f?8:4))>>2]=j+Q(ka*A);t=N[i+356>>2];j=Q(Q(na*t)+o)}e=i+304|0;N[(e|(f?4:8))>>2]=j;ca=0;N[(e|(f?0:12))>>2]=o;N[i+292>>2]=S*A;N[i+296>>2]=Q(1)-Q(S*t);ja=Q(v*u);t=Q(Q(1)-Q(v*q));e=(ea<<6)+c|0;u=N[e+60>>2];A=N[e+28>>2];y=N[e+12>>2];ba=N[e+56>>2];q=N[e+24>>2];X=N[e+8>>2];Y=N[e+52>>2];o=N[e+20>>2];_=N[e+4>>2];$=N[e+48>>2];j=N[e+16>>2];aa=N[e>>2];G=Q(N[e+44>>2]*Q(0));z=Q(N[e+40>>2]*Q(0));C=Q(N[e+36>>2]*Q(0));L=Q(N[e+32>>2]*Q(0));while(1){e=(i+16|0)+(ca<<6)|0;v=N[(i+288|0)+(ca<<2)>>2];O=Q(v*A);N[e+60>>2]=u+Q(G+Q(y+O));x=Q(v*q);N[e+56>>2]=ba+Q(z+Q(X+x));S=Q(v*o);N[e+52>>2]=Y+Q(C+Q(_+S));v=Q(v*j);N[e+48>>2]=$+Q(L+Q(aa+v));N[e+44>>2]=u+Q(G+Q(Q(y*t)+O));N[e+40>>2]=ba+Q(z+Q(Q(X*t)+x));N[e+36>>2]=Y+Q(C+Q(Q(_*t)+S));N[e+32>>2]=$+Q(L+Q(Q(aa*t)+v));N[e+28>>2]=u+Q(G+Q(Q(y*ja)+O));N[e+24>>2]=ba+Q(z+Q(Q(X*ja)+x));N[e+20>>2]=Y+Q(C+Q(Q(_*ja)+S));N[e+16>>2]=$+Q(L+Q(Q(aa*ja)+v));N[e+12>>2]=u+Q(G+Q(Q(y*Q(0))+O));N[e+8>>2]=ba+Q(z+Q(Q(X*Q(0))+x));N[e+4>>2]=Y+Q(C+Q(Q(_*Q(0))+S));N[e>>2]=$+Q(L+Q(Q(aa*Q(0))+v));ca=ca+1|0;if((ca|0)!=4){continue}break}y=Q(h>>>0);ga=0;while(1){j=Q(Q(ga>>>0)-ia);z:{if(Q(R(j))>>0)-ia);A:{if(Q(R(j))>>0)-ha);C:{if(Q(R(j))>2];S=N[s+4>>2];v=N[s>>2];n=n+(h<<6)|0;k=n+k|0;X=N[k+8>>2];Y=N[k+4>>2];_=N[k>>2];s=e;ca=ca+1|0;j=Q(Q(ca>>>0)-ha);D:{if(Q(R(j))>2];aa=N[s+4>>2];G=N[s>>2];k=k+n|0;A=N[k+8>>2];q=N[k+4>>2];o=N[k>>2];E:{if(D){z=N[E>>2];ba=z;k=e<<2;e=i+304|0;t=N[k+e>>2];C=t;L=N[e+(m<<2)>>2];u=L;O=N[da>>2];j=O;break E}L=N[w>>2];t=L;k=e<<2;e=i+320|0;O=N[k+e>>2];ba=O;C=N[r>>2];u=C;z=N[e+(m<<2)>>2];j=z}e=J[p>>2];if((e|0)!=J[F>>2]){J[p>>2]=e+40;N[e+36>>2]=y;N[e+32>>2]=T;N[e+28>>2]=U;N[e+24>>2]=V;N[e+20>>2]=W;N[e+16>>2]=u;N[e+12>>2]=j;N[e+8>>2]=X;N[e+4>>2]=Y;N[e>>2]=_;e=J[p>>2];if((e|0)==J[F>>2]){break b}J[p>>2]=e+40;N[e+36>>2]=y;N[e+32>>2]=T;N[e+28>>2]=U;N[e+24>>2]=V;N[e+20>>2]=W;N[e+16>>2]=C;N[e+12>>2]=O;N[e+8>>2]=A;N[e+4>>2]=q;N[e>>2]=o;e=J[p>>2];if((e|0)==J[F>>2]){break b}J[p>>2]=e+40;N[e+36>>2]=y;N[e+32>>2]=T;N[e+28>>2]=U;N[e+24>>2]=V;N[e+20>>2]=W;N[e+16>>2]=t;N[e+12>>2]=ba;N[e+8>>2]=$;N[e+4>>2]=aa;N[e>>2]=G;e=J[p>>2];if((e|0)==J[F>>2]){break b}J[p>>2]=e+40;N[e+36>>2]=y;N[e+32>>2]=T;N[e+28>>2]=U;N[e+24>>2]=V;N[e+20>>2]=W;N[e+16>>2]=u;N[e+12>>2]=j;N[e+8>>2]=X;N[e+4>>2]=Y;N[e>>2]=_;e=J[p>>2];if((e|0)==J[F>>2]){break b}J[p>>2]=e+40;N[e+36>>2]=y;N[e+32>>2]=T;N[e+28>>2]=U;N[e+24>>2]=V;N[e+20>>2]=W;N[e+16>>2]=t;N[e+12>>2]=ba;N[e+8>>2]=$;N[e+4>>2]=aa;N[e>>2]=G;e=J[p>>2];if((e|0)==J[F>>2]){break b}J[p>>2]=e+40;N[e+36>>2]=y;N[e+32>>2]=T;N[e+28>>2]=U;N[e+24>>2]=V;N[e+20>>2]=W;N[e+16>>2]=L;N[e+12>>2]=z;N[e+8>>2]=x;N[e+4>>2]=S;N[e>>2]=v;if((ca|0)==3){break B}continue}break}break b}if((ga|0)!=3){continue}break}fa=fa+54|0;break p}break b}ea=ea+1|0;if((ea|0)!=(g|0)){continue}break}break c}Z(112158,40837,1588,24008);B()}Z(151729,53895,501,2284);B()}J[i>>2]=e;dj(4,88458,155274,i);Z(114101,40837,1062,69697);B()}Z(145396,53895,487,84789);B()}Z(144782,53895,514,59583);B()}Z(85250,40837,1541,24008);B()}J[l+312>>2]=fa;Ui=i+384|0;return}Z(112520,53895,557,53220);B()}Z(12664,54737,138,84789);B()}function PS(a){var b=0,c=0,d=Q(0),e=Q(0),f=0,g=0,h=Q(0),i=0,j=Q(0),k=0,l=Q(0),m=Q(0),n=0,o=0,p=0,q=Q(0),r=Q(0),s=Q(0),t=Q(0),u=Q(0),v=Q(0),w=Q(0),x=Q(0),y=Q(0),z=Q(0),A=Q(0),B=Q(0),C=0,D=Q(0),E=Q(0),F=Q(0),G=Q(0),I=Q(0),L=Q(0),M=Q(0),O=Q(0),P=Q(0),R=Q(0),S=Q(0),T=Q(0),U=Q(0),V=0,W=0,X=0,Y=Q(0),Z=Q(0),_=0;n=Ui-16|0;Ui=n;a:{if(!K[a+356|0]){c=K[a+312|0];break a}J[a+336>>2]=0;J[a+340>>2]=0;H[a+356|0]=0;H[a+352|0]=0;J[a+344>>2]=0;J[a+348>>2]=0;k=K[a+332|0]&-16;H[a+332|0]=k;b=a+316|0;b:{c:{d:{switch(J[a>>2]){case 1:c=J[a+168>>2];J[a+260>>2]=J[a+164>>2];J[a+264>>2]=c;c=J[a+88>>2];J[a+244>>2]=J[a+84>>2];J[a+248>>2]=c;c=J[a+176>>2];J[a+268>>2]=J[a+172>>2];J[a+272>>2]=c;c=J[a+96>>2];J[a+252>>2]=J[a+92>>2];J[a+256>>2]=c;H[a+352|0]=0;J[a+288>>2]=0;N[a+280>>2]=N[a+248>>2]-N[a+264>>2];N[a+276>>2]=N[a+244>>2]-N[a+260>>2];N[a+284>>2]=N[a+252>>2]-N[a+268>>2];J[a+344>>2]=0;J[a+348>>2]=0;J[a+336>>2]=1065353216;J[a+340>>2]=0;c=1;break b;case 2:g=1;l=N[a+8>>2];d=Q(N[a+24>>2]-l);j=N[a+12>>2];h=Q(N[a+28>>2]-j);q=Q(h*Q(Q(0)-j));m=N[a+4>>2];j=Q(N[a+20>>2]-m);l=Q(q+Q(Q(j*Q(Q(0)-m))+Q(Q(Q(0)-l)*d)));b=l>Q(0);c=1;e:{if(!b){break e}e=Q(Q(h*h)+Q(Q(j*j)+Q(d*d)));if(!(e>l)){e=Q(1);c=2;break e}e=Q(l/e);c=3}J[a+344>>2]=0;J[a+348>>2]=0;N[a+340>>2]=e;J[a+256>>2]=0;l=Q(Q(1)-e);N[a+336>>2]=l;H[a+332|0]=c|k;d=N[a+92>>2];m=Q(d+Q(e*Q(N[a+108>>2]-d)));N[a+252>>2]=m;d=N[a+88>>2];r=Q(d+Q(e*Q(N[a+104>>2]-d)));N[a+248>>2]=r;d=N[a+84>>2];s=Q(d+Q(e*Q(N[a+100>>2]-d)));N[a+244>>2]=s;t=N[a+180>>2];d=N[a+164>>2];u=N[a+184>>2];h=N[a+168>>2];w=N[a+188>>2];j=N[a+172>>2];J[a+288>>2]=0;j=Q(j+Q(e*Q(w-j)));N[a+284>>2]=m-j;h=Q(h+Q(e*Q(u-h)));N[a+280>>2]=r-h;d=Q(d+Q(e*Q(t-d)));N[a+276>>2]=s-d;J[a+272>>2]=0;N[a+268>>2]=j;N[a+264>>2]=h;N[a+260>>2]=d;if(!b){J[a>>2]=1;g=0}if(!(c&1)){J[a>>2]=g;c=a+4|0;g=g<<4;b=g+c|0;k=J[b+4>>2];J[c>>2]=J[b>>2];J[c+4>>2]=k;k=J[b+12>>2];J[c+8>>2]=J[b+8>>2];J[c+12>>2]=k;c=a+84|0;b=c+g|0;k=J[b+12>>2];J[c+8>>2]=J[b+8>>2];J[c+12>>2]=k;k=J[b+4>>2];J[c>>2]=J[b>>2];J[c+4>>2]=k;c=a+164|0;b=c+g|0;g=J[b+12>>2];J[c+8>>2]=J[b+8>>2];J[c+12>>2]=g;g=J[b+4>>2];J[c>>2]=J[b>>2];J[c+4>>2]=g}c=l>=Q(0)&e>=Q(0);break b;case 3:J[n+8>>2]=0;J[n+12>>2]=0;J[n>>2]=0;J[n+4>>2]=0;k=a+4|0;Cv(n,k,a+20|0,a+36|0,b);J[a+256>>2]=0;e=N[a+336>>2];d=N[a+340>>2];h=N[a+344>>2];j=Q(Q(Q(e*N[a+92>>2])+Q(d*N[a+108>>2]))+Q(h*N[a+124>>2]));N[a+252>>2]=j;l=Q(Q(Q(e*N[a+88>>2])+Q(d*N[a+104>>2]))+Q(h*N[a+120>>2]));N[a+248>>2]=l;m=Q(Q(Q(e*N[a+84>>2])+Q(d*N[a+100>>2]))+Q(h*N[a+116>>2]));N[a+244>>2]=m;r=N[a+196>>2];s=N[a+164>>2];t=N[a+180>>2];u=N[a+200>>2];w=N[a+168>>2];A=N[a+184>>2];q=N[a+204>>2];B=N[a+172>>2];x=N[a+188>>2];J[a+288>>2]=0;v=j;j=Q(Q(Q(e*B)+Q(d*x))+Q(h*q));N[a+284>>2]=v-j;q=l;l=Q(Q(Q(e*w)+Q(d*A))+Q(h*u));N[a+280>>2]=q-l;q=m;m=Q(Q(Q(e*s)+Q(d*t))+Q(h*r));N[a+276>>2]=q-m;J[a+272>>2]=0;N[a+268>>2]=j;N[a+264>>2]=l;N[a+260>>2]=m;o=a+164|0;p=a+84|0;f:{g:{h:{i:{j:{b=J[a>>2];k:{if((b|0)>=4){g=K[a+332|0];if(g&8){c=b;break k}c=b-1|0;J[a>>2]=c;f=c<<4;b=f+k|0;i=J[b+4>>2];J[a+52>>2]=J[b>>2];J[a+56>>2]=i;i=J[b+12>>2];J[a+60>>2]=J[b+8>>2];J[a+64>>2]=i;b=f+p|0;i=J[b+4>>2];J[a+132>>2]=J[b>>2];J[a+136>>2]=i;i=J[b+12>>2];J[a+140>>2]=J[b+8>>2];J[a+144>>2]=i;b=f+o|0;f=J[b+4>>2];J[a+212>>2]=J[b>>2];J[a+216>>2]=f;f=J[b+12>>2];J[a+220>>2]=J[b+8>>2];J[a+224>>2]=f;break k}c=3;if((b|0)!=3){break j}g=K[a+332|0]}if(g&4){break i}c=c-1|0;J[a>>2]=c;f=c<<4;b=f+k|0;i=J[b+4>>2];J[a+36>>2]=J[b>>2];J[a+40>>2]=i;i=J[b+12>>2];J[a+44>>2]=J[b+8>>2];J[a+48>>2]=i;b=f+p|0;i=J[b+12>>2];J[a+124>>2]=J[b+8>>2];J[a+128>>2]=i;i=J[b+4>>2];J[a+116>>2]=J[b>>2];J[a+120>>2]=i;b=f+o|0;f=J[b+12>>2];J[a+204>>2]=J[b+8>>2];J[a+208>>2]=f;f=J[b+4>>2];J[a+196>>2]=J[b>>2];J[a+200>>2]=f;break i}c=2;if((b|0)<2){break h}g=K[a+332|0]}if(g&2){break g}c=c-1|0;J[a>>2]=c;f=c<<4;b=f+k|0;i=J[b+4>>2];J[a+20>>2]=J[b>>2];J[a+24>>2]=i;i=J[b+12>>2];J[a+28>>2]=J[b+8>>2];J[a+32>>2]=i;b=f+p|0;i=J[b+12>>2];J[a+108>>2]=J[b+8>>2];J[a+112>>2]=i;i=J[b+4>>2];J[a+100>>2]=J[b>>2];J[a+104>>2]=i;b=f+o|0;f=J[b+12>>2];J[a+188>>2]=J[b+8>>2];J[a+192>>2]=f;f=J[b+4>>2];J[a+180>>2]=J[b>>2];J[a+184>>2]=f;break g}c=1;if((b|0)!=1){break f}g=K[a+332|0]}if(g&1){break f}c=c-1|0;J[a>>2]=c;b=c<<4;c=b+k|0;g=J[c+4>>2];J[k>>2]=J[c>>2];J[k+4>>2]=g;g=J[c+12>>2];J[k+8>>2]=J[c+8>>2];J[k+12>>2]=g;c=b+p|0;g=J[c+12>>2];J[p+8>>2]=J[c+8>>2];J[p+12>>2]=g;g=J[c+4>>2];J[p>>2]=J[c>>2];J[p+4>>2]=g;c=b+o|0;b=J[c+12>>2];J[o+8>>2]=J[c+8>>2];J[o+12>>2]=b;b=J[c+4>>2];J[o>>2]=J[c>>2];J[o+4>>2]=b}c=0;if(!(h>=Q(0))|(!(e>=Q(0))|!(d>=Q(0)))){break b}c=N[a+348>>2]>=Q(0);break b;case 0:break b;case 4:break d;default:break c}}J[n+8>>2]=0;J[n+12>>2]=0;J[n>>2]=0;J[n+4>>2]=0;c=Ui-48|0;Ui=c;H[c+24|0]=0;g=J[n+12>>2];J[b+8>>2]=J[n+8>>2];J[b+12>>2]=g;g=J[n+4>>2];J[b>>2]=J[n>>2];J[b+4>>2]=g;f=K[b+16|0];H[b+16|0]=f|15;F=N[n+8>>2];k=a+4|0;e=N[k+8>>2];G=Q(F-e);g=a+36|0;y=N[g+8>>2];d=Q(y-e);o=a+52|0;z=N[o>>2];h=N[k>>2];j=Q(z-h);p=a+20|0;l=N[p+4>>2];m=N[k+4>>2];r=Q(l-m);v=N[o+4>>2];s=Q(v-m);t=N[p>>2];u=Q(t-h);M=Q(Q(j*r)-Q(s*u));D=N[g>>2];w=Q(D-h);A=N[p+8>>2];q=Q(A-e);O=N[o+8>>2];B=Q(O-e);P=Q(Q(s*q)-Q(B*r));E=N[g+4>>2];x=Q(E-m);R=Q(Q(B*u)-Q(j*q));I=Q(Q(d*M)+Q(Q(w*P)+Q(x*R)));S=Q(Q(u*x)-Q(r*w));T=Q(Q(r*d)-Q(q*x));U=Q(Q(q*w)-Q(u*d));L=Q(Q(B*S)+Q(Q(j*T)+Q(U*s)));Y=Q(e-A);e=Q(z-t);z=Q(E-l);v=Q(v-l);D=Q(D-t);E=Q(Q(e*z)-Q(v*D));y=Q(y-A);Z=Q(v*y);v=Q(O-A);z=Q(Z-Q(v*z));y=Q(Q(v*D)-Q(e*y));e=Q(Q(Y*E)+Q(Q(Q(h-t)*z)+Q(Q(m-l)*y)));v=q;q=Q(Q(w*s)-Q(x*j));s=Q(Q(x*B)-Q(d*s));x=Q(u*s);u=Q(Q(d*j)-Q(w*B));d=Q(Q(v*q)+Q(x+Q(r*u)));j=N[n>>2];h=Q(j-h);r=N[n+4>>2];m=Q(r-m);i=Q(I*I)>2];d=Q(h-F);e=Q(d*d);l=N[c+8>>2];d=Q(l-j);m=Q(d*d);j=N[c+12>>2];d=Q(j-r);d=Q(e+Q(m+Q(d*d)));e=Q(34028234663852886e22);if(!(d>2]=N[c+20>>2];N[b+8>>2]=h;N[b+4>>2]=j;N[b>>2]=l;H[b+16|0]=K[c+24|0]&7|f&-16;f=J[c+32>>2];C=J[c+28>>2];e=N[c+36>>2];J[b+32>>2]=0;N[b+28>>2]=e;J[b+20>>2]=C;J[b+24>>2]=f;e=d}n:{if(!W){break n}Cv(n,k,g,o,c+8|0);h=N[c+16>>2];d=Q(h-N[n+8>>2]);m=Q(d*d);j=N[c+8>>2];d=Q(j-N[n>>2]);q=Q(d*d);l=N[c+12>>2];d=Q(l-N[n+4>>2]);d=Q(m+Q(q+Q(d*d)));if(!(d>2]=N[c+20>>2];N[b+8>>2]=h;N[b+4>>2]=l;N[b>>2]=j;f=K[c+24|0];H[b+16|0]=K[b+16|0]&240|(f&1|f<<1&12);e=N[c+28>>2];f=J[c+36>>2];C=J[c+32>>2];J[b+24>>2]=0;J[b+28>>2]=C;J[b+32>>2]=f;N[b+20>>2]=e;e=d}o:{if(!i){break o}Cv(n,k,o,p,c+8|0);h=N[c+16>>2];d=Q(h-N[n+8>>2]);m=Q(d*d);j=N[c+8>>2];d=Q(j-N[n>>2]);q=Q(d*d);l=N[c+12>>2];d=Q(l-N[n+4>>2]);d=Q(m+Q(q+Q(d*d)));if(!(d>2]=N[c+20>>2];N[b+8>>2]=h;N[b+4>>2]=l;N[b>>2]=j;f=K[c+24|0];H[b+16|0]=K[b+16|0]&240|(f&1|f>>>1&2|f<<2&8);e=N[c+28>>2];h=N[c+36>>2];N[b+32>>2]=N[c+32>>2];J[b+28>>2]=0;N[b+24>>2]=h;N[b+20>>2]=e;e=d}_=1;if(!V){break l}Cv(n,p,o,g,c+8|0);l=e;e=N[c+16>>2];d=Q(e-N[n+8>>2]);m=Q(d*d);d=N[c+8>>2];h=Q(d-N[n>>2]);q=Q(h*h);h=N[c+12>>2];j=Q(h-N[n+4>>2]);if(!(l>Q(m+Q(q+Q(j*j))))){break l}N[b+12>>2]=N[c+20>>2];N[b+8>>2]=e;N[b+4>>2]=h;N[b>>2]=d;g=K[c+24|0];H[b+16|0]=K[b+16|0]&240|(g&4|g<<1&2|g<<2&8);e=N[c+28>>2];d=N[c+36>>2];N[b+32>>2]=N[c+32>>2];N[b+28>>2]=d;N[b+24>>2]=e;J[b+20>>2]=0}Ui=c+48|0;if(_){J[a+256>>2]=0;d=N[a+336>>2];h=N[a+340>>2];j=N[a+344>>2];e=N[a+348>>2];l=Q(Q(Q(Q(d*N[a+92>>2])+Q(h*N[a+108>>2]))+Q(j*N[a+124>>2]))+Q(e*N[a+140>>2]));N[a+252>>2]=l;m=Q(Q(Q(Q(d*N[a+88>>2])+Q(h*N[a+104>>2]))+Q(j*N[a+120>>2]))+Q(e*N[a+136>>2]));N[a+248>>2]=m;r=Q(Q(Q(Q(d*N[a+84>>2])+Q(h*N[a+100>>2]))+Q(j*N[a+116>>2]))+Q(e*N[a+132>>2]));N[a+244>>2]=r;J[a+288>>2]=0;J[a+272>>2]=0;s=Q(Q(Q(Q(d*N[a+164>>2])+Q(h*N[a+180>>2]))+Q(j*N[a+196>>2]))+Q(e*N[a+212>>2]));N[a+260>>2]=s;t=Q(Q(Q(Q(d*N[a+168>>2])+Q(h*N[a+184>>2]))+Q(j*N[a+200>>2]))+Q(e*N[a+216>>2]));N[a+264>>2]=t;d=Q(Q(Q(Q(d*N[a+172>>2])+Q(h*N[a+188>>2]))+Q(j*N[a+204>>2]))+Q(e*N[a+220>>2]));N[a+268>>2]=d;N[a+276>>2]=r-s;N[a+280>>2]=m-t;N[a+284>>2]=l-d;o=a+164|0;p=a+84|0;p:{q:{r:{s:{t:{b=J[a>>2];u:{if((b|0)>=4){g=K[a+332|0];if(g&8){c=b;break u}c=b-1|0;J[a>>2]=c;f=c<<4;b=f+k|0;i=J[b+4>>2];J[a+52>>2]=J[b>>2];J[a+56>>2]=i;i=J[b+12>>2];J[a+60>>2]=J[b+8>>2];J[a+64>>2]=i;b=f+p|0;i=J[b+12>>2];J[a+140>>2]=J[b+8>>2];J[a+144>>2]=i;i=J[b+4>>2];J[a+132>>2]=J[b>>2];J[a+136>>2]=i;b=f+o|0;f=J[b+12>>2];J[a+220>>2]=J[b+8>>2];J[a+224>>2]=f;f=J[b+4>>2];J[a+212>>2]=J[b>>2];J[a+216>>2]=f;break u}c=3;if((b|0)!=3){break t}g=K[a+332|0]}if(g&4){break s}c=c-1|0;J[a>>2]=c;f=c<<4;b=f+k|0;i=J[b+4>>2];J[a+36>>2]=J[b>>2];J[a+40>>2]=i;i=J[b+12>>2];J[a+44>>2]=J[b+8>>2];J[a+48>>2]=i;b=f+p|0;i=J[b+12>>2];J[a+124>>2]=J[b+8>>2];J[a+128>>2]=i;i=J[b+4>>2];J[a+116>>2]=J[b>>2];J[a+120>>2]=i;b=f+o|0;f=J[b+12>>2];J[a+204>>2]=J[b+8>>2];J[a+208>>2]=f;f=J[b+4>>2];J[a+196>>2]=J[b>>2];J[a+200>>2]=f;break s}c=2;if((b|0)<2){break r}g=K[a+332|0]}if(g&2){break q}c=c-1|0;J[a>>2]=c;f=c<<4;b=f+k|0;i=J[b+4>>2];J[a+20>>2]=J[b>>2];J[a+24>>2]=i;i=J[b+12>>2];J[a+28>>2]=J[b+8>>2];J[a+32>>2]=i;b=f+p|0;i=J[b+12>>2];J[a+108>>2]=J[b+8>>2];J[a+112>>2]=i;i=J[b+4>>2];J[a+100>>2]=J[b>>2];J[a+104>>2]=i;b=f+o|0;f=J[b+12>>2];J[a+188>>2]=J[b+8>>2];J[a+192>>2]=f;f=J[b+4>>2];J[a+180>>2]=J[b>>2];J[a+184>>2]=f;break q}c=1;if((b|0)!=1){break p}g=K[a+332|0]}if(g&1){break p}c=c-1|0;J[a>>2]=c;b=c<<4;c=b+k|0;g=J[c+4>>2];J[k>>2]=J[c>>2];J[k+4>>2]=g;g=J[c+12>>2];J[k+8>>2]=J[c+8>>2];J[k+12>>2]=g;c=b+p|0;g=J[c+12>>2];J[p+8>>2]=J[c+8>>2];J[p+12>>2]=g;g=J[c+4>>2];J[p>>2]=J[c>>2];J[p+4>>2]=g;c=b+o|0;b=J[c+12>>2];J[o+8>>2]=J[c+8>>2];J[o+12>>2]=b;b=J[c+4>>2];J[o>>2]=J[c>>2];J[o+4>>2]=b}c=N[a+336>>2]>=Q(0)&N[a+340>>2]>=Q(0)&N[a+344>>2]>=Q(0)&e>=Q(0);break b}c=1;if(K[a+352|0]==1){break c}J[a+276>>2]=0;J[a+280>>2]=0;H[a+312|0]=1;J[a+284>>2]=0;J[a+288>>2]=0;break a}c=0}H[a+312|0]=c}Ui=n+16|0;return c&1}function cu(a,b,c,d,e,f){var g=0,h=0,i=0,j=0,k=0,l=0,m=0,n=0,o=0,p=0,q=0,r=0,s=0,t=0,u=0,v=0,w=0;i=Ui-432|0;Ui=i;g=-20352;a:{if(!J[a+48>>2]){break a}b:{if(!J[a+60>>2]){g=-19584;if(Wm(c,0)){break b}if(Wm(c,1)){break b}h=Xk(c)-1|0;if((h|0)!=J[a+92>>2]){break b}if((h|0)==254){if(Wm(c,2)){break b}}g=0;break a}g=-19584;if((Pj(c,1)|0)<0){break a}g=(_j(c,a+76|0)|0)>=0?-19584:0}}c:{if(g){break c}g=KH(a,d);if(g){break c}if(!J[a+48>>2]){g=-20352;break c}if(!J[a+60>>2]){h=i+96|0;g=h;J[g+8>>2]=0;J[g>>2]=1;J[g+4>>2]=0;t=i+108|0;g=t;J[g+8>>2]=0;J[g>>2]=1;J[g+4>>2]=0;l=i+120|0;g=l;J[g+8>>2]=0;J[g>>2]=1;J[g+4>>2]=0;g=i+12|0;J[g+8>>2]=0;J[g>>2]=1;J[g+4>>2]=0;g=sk(g,d);d:{if(g){break d}g=sk(h,d);if(g){break d}g=sk(t,d+12|0);if(g){break d}g=sk(l,d+24|0);if(g){break d}g=kl(b,1);if(g){break d}o=b+24|0;g=kl(o,0);if(g){break d}Dj(b+12|0);p=a+4|0;while(1){g=i+96|0;if((_j(g,p)|0)>=0){g=tn(g,g,p);if(!g){continue}break d}break}if(e){m=i+96|0;g=Ui-16|0;Ui=g;k=J[a+88>>2];h=g+4|0;J[h+8>>2]=0;J[h>>2]=1;J[h+4>>2]=0;j=k+7>>>3|0;h=Fk(h,j,e,f);e:{f:{if(h){break f}k=a+4|0;while(1){h=g+4|0;if((_j(h,k)|0)>=0){h=yk(h,1);if(!h){continue}break f}break}g:{h=g+4|0;if((Pj(h,1)|0)>0){break g}h=Fk(h,j,e,f);if(h){break f}while(1){h=g+4|0;if((_j(h,k)|0)<0){if((Pj(h,1)|0)>0){break g}h=Fk(h,j,e,f);if(h){break f}while(1){h=g+4|0;if((_j(h,k)|0)<0){if((Pj(h,1)|0)>0){break g}h=Fk(h,j,e,f);if(h){break f}while(1){h=g+4|0;if((_j(h,k)|0)<0){if((Pj(h,1)|0)>0){break g}h=Fk(h,j,e,f);if(h){break f}while(1){h=g+4|0;if((_j(h,k)|0)<0){if((Pj(h,1)|0)>0){break g}h=Fk(h,j,e,f);if(h){break f}while(1){h=g+4|0;if((_j(h,k)|0)<0){if((Pj(h,1)|0)>0){break g}h=Fk(h,j,e,f);if(h){break f}while(1){h=g+4|0;if((_j(h,k)|0)<0){if((Pj(h,1)|0)>0){break g}h=Fk(h,j,e,f);if(h){break f}while(1){h=g+4|0;if((_j(h,k)|0)<0){if((Pj(h,1)|0)>0){break g}h=Fk(h,j,e,f);if(h){break f}while(1){h=g+4|0;if((_j(h,k)|0)<0){if((Pj(h,1)|0)>0){break g}h=Fk(h,j,e,f);if(h){break f}while(1){h=g+4|0;if((_j(h,k)|0)<0){if((Pj(h,1)|0)>0){break g}h=Fk(h,j,e,f);if(h){break f}while(1){h=g+4|0;if((_j(h,k)|0)<0){if((Pj(h,1)|0)>0){break g}h=Fk(h,j,e,f);if(h){break f}while(1){if((_j(g+4|0,k)|0)<0){h=-19712;break e}h=yk(g+4|0,1);if(!h){continue}break}break f}h=yk(g+4|0,1);if(!h){continue}break}break f}h=yk(g+4|0,1);if(!h){continue}break}break f}h=yk(g+4|0,1);if(!h){continue}break}break f}h=yk(g+4|0,1);if(!h){continue}break}break f}h=yk(g+4|0,1);if(!h){continue}break}break f}h=yk(g+4|0,1);if(!h){continue}break}break f}h=yk(g+4|0,1);if(!h){continue}break}break f}h=yk(g+4|0,1);if(!h){continue}break}break f}h=yk(g+4|0,1);if(!h){continue}break}break f}h=yk(g+4|0,1);if(!h){continue}break}break f}k=g+4|0;h=Ak(m,m,k);if(h){break f}h=Nl(m,a);if(h){break f}h=m+24|0;h=jl(a,h,h,k)}Dj(g+4|0)}Ui=g+16|0;g=h;if(g){break d}}u=a+16|0;j=Xk(c);while(1){if(j){j=j-1|0;m=Wm(c,j)&255;g=yw(b,i+96|0,m);if(g){break d}g=yw(o,l,m);if(g){break d}g=i+372|0;J[g+8>>2]=0;J[g>>2]=1;J[g+4>>2]=0;J[i+428>>2]=0;J[i+420>>2]=1;J[i+424>>2]=0;J[i+416>>2]=0;J[i+408>>2]=1;J[i+412>>2]=0;J[i+92>>2]=0;J[i+84>>2]=1;J[i+88>>2]=0;J[i+80>>2]=0;J[i+72>>2]=1;J[i+76>>2]=0;J[i+68>>2]=0;J[i+60>>2]=1;J[i+64>>2]=0;J[i+56>>2]=0;J[i+48>>2]=1;J[i+52>>2]=0;J[i+44>>2]=0;J[i+36>>2]=1;J[i+40>>2]=0;J[i+32>>2]=0;J[i+24>>2]=1;J[i+28>>2]=0;g=Ql(g,b,o);h:{if(g){break h}while(1){g=i+372|0;if((_j(g,p)|0)>=0){g=tn(g,g,p);if(!g){continue}break h}break}h=i+420|0;g=i+372|0;g=Ak(h,g,g);if(g){break h}g=Nl(h,a);if(g){break h}g=wl(i+408|0,b,o);if(g){break h}while(1){i:{if(J[i+408>>2]>=0){break i}g=i+408|0;if(!Pj(g,0)){break i}g=Ql(g,g,p);if(!g){continue}break h}break}k=i+84|0;n=i+408|0;g=Ak(k,n,n);if(g){break h}g=Nl(k,a);if(g){break h}s=i+72|0;v=i+420|0;g=En(a,s,v,k);if(g){break h}w=i+60|0;h=i+96|0;g=Zt(a,w,h,l);if(g){break h}q=i+48|0;g=En(a,q,h,l);if(g){break h}r=i+36|0;g=jl(a,r,q,i+372|0);if(g){break h}q=i+24|0;g=jl(a,q,w,n);if(g){break h}g=Ql(h,r,q);if(g){break h}g=Nl(h,a);if(g){break h}g=jl(a,h,h,h);if(g){break h}g=En(a,l,r,q);if(g){break h}g=jl(a,l,l,l);if(g){break h}g=jl(a,l,i+12|0,l);if(g){break h}g=jl(a,b,v,k);if(g){break h}g=jl(a,o,u,s);if(g){break h}g=Zt(a,o,k,o);if(g){break h}g=jl(a,o,s,o)}Dj(i+372|0);Dj(i+420|0);Dj(i+408|0);Dj(i+84|0);Dj(i+72|0);Dj(i+60|0);Dj(i+48|0);Dj(i+36|0);Dj(i+24|0);if(g){break d}g=yw(b,i+96|0,m);if(g){break d}g=yw(o,l,m);if(!g){continue}break d}break}h=b+24|0;g=Bp(h,h,a+4|0);j:{if(g){break j}g=Ak(b,b,h);if(g){break j}g=Nl(b,a);if(g){break j}g=kl(h,1)}}Dj(i+96|0);Dj(t);Dj(l);Dj(i+12|0);if(g){break c}g=0;if(!J[a+48>>2]|!J[a+60>>2]){break c}}j=0;n=d+12|0;if(!_j(n,a+52|0)){j=!_j(d,a+40|0)}g=J[a+92>>2];h=(g>>>0>383?5:4)+j|0;p=g>>>0<=h>>>0?2:h;m=p-1|0;t=g+m|0;k=(t>>>0)/(p>>>0)|0;o=1<>2];if(l){break m}}l=Zj(o,36);if(!l){g=-19840;break k}g=0;h=0;while(1){g=P(g,36)+l|0;J[g+8>>2]=0;J[g>>2]=1;J[g+4>>2]=0;J[g+20>>2]=0;J[g+12>>2]=1;J[g+16>>2]=0;J[g+32>>2]=0;J[g+24>>2]=1;J[g+28>>2]=0;h=h+1|0;g=h&255;if(o>>>0>g>>>0){continue}break}g=sk(l,d);if(g){break l}g=sk(l+12|0,n);if(g){break l}g=sk(l+24|0,d+24|0);if(g){break l}n=P(k,m);if(n){d=0;while(1){g=(d>>>0)/(k>>>0)|0;m=1<>>1|0,36)+l|0;g=sk(h,m);if(g){break l}g=sk(h+12|0,m+12|0);if(g){break l}g=sk(h+24|0,m+24|0);if(g){break l}}g=qB(a,h,h);if(g){break l}d=d+1|0;if((n|0)!=(d|0)){continue}break}}h=1;n:{o:{m=o&255;if(m>>>0>1){g=0;while(1){d=i+96|0;J[d+(g<<2)>>2]=P(h,36)+l;g=g+1|0;h=h<<1&254;if(m>>>0>h>>>0){continue}break}g=qJ(a,d,g);if(g){break l}d=1;break o}g=bx(a,g);if(g){break l}g=0;break n}while(1){n=P(d,36)+l|0;h=d;while(1){if(h){h=h-1|0;g=P(h,36);g=rB(a,g+n|0,g+l|0,n);if(!g){continue}break l}break}d=d<<1&254;if(m>>>0>d>>>0){continue}break}n=l+36|0;d=m-1|0;s=d&3;r=0;p:{if(m-2>>>0<3){d=1;g=0;break p}u=d&-4;g=0;h=1;q=0;while(1){d=i+96|0;J[d+(g<<2)>>2]=n+P(g,36);d=d+(h<<2)|0;g=n+P(h,36)|0;J[d+4>>2]=g+36;J[d>>2]=g;J[d+8>>2]=g+72;g=h+3|0;d=h+4|0;h=d;q=q+4|0;if((u|0)!=(q|0)){continue}break}}if(!s){break n}h=g;while(1){J[(i+96|0)+(h<<2)>>2]=n+P(h,36);g=d;d=g+1|0;h=g;r=r+1|0;if((s|0)!=(r|0)){continue}break}}g=qJ(a,i+96|0,g);if(g){break l}if(!j){break m}J[a+120>>2]=m;J[a+116>>2]=l}J[i+380>>2]=0;J[i+372>>2]=1;J[i+376>>2]=0;J[i+428>>2]=0;J[i+420>>2]=1;J[i+424>>2]=0;d=a+76|0;if((Wm(d,0)|0)!=1){g=-20352;break l}m=!Wm(c,0);h=i+372|0;g=sk(h,c);q:{if(g){break q}j=i+420|0;g=wl(j,d,c);if(g){break q}g=Xt(h,j,m);if(g){break q}g=0;ij(i+96|0,0,k+1|0);if(p>>>0>t>>>0){break q}while(1){d=(i+96|0)+g|0;c=0;while(1){h=Wm(i+372|0,P(c,k)+g|0);H[d|0]=K[d|0]|h<>2]=0;J[i+372>>2]=1;J[i+376>>2]=0;n=i+384|0;d=n;J[d+8>>2]=0;J[d>>2]=1;J[d+4>>2]=0;h=i+396|0;J[h+8>>2]=0;J[h>>2]=1;J[h+4>>2]=0;g=pJ(a,b,l,o&255,K[(i+96|0)+k|0]);r:{if(g){break r}j=b+24|0;g=kl(j,1);if(g){break r}s:{t:{u:{if(e){d=J[a+88>>2];J[c+8>>2]=0;J[c>>2]=1;J[c+4>>2]=0;J[i+416>>2]=0;J[i+408>>2]=1;J[i+412>>2]=0;d=d+7>>>3|0;g=Fk(c,d,e,f);if(g){break t}c=a+4|0;while(1){g=i+420|0;if((_j(g,c)|0)>=0){g=yk(g,1);if(!g){continue}break t}break}g=i+420|0;if((Pj(g,1)|0)>0){break u}g=Fk(g,d,e,f);if(g){break t}while(1){g=i+420|0;if((_j(g,c)|0)<0){if((Pj(g,1)|0)>0){break u}g=Fk(g,d,e,f);if(g){break t}while(1){g=i+420|0;if((_j(g,c)|0)<0){if((Pj(g,1)|0)>0){break u}g=Fk(g,d,e,f);if(g){break t}while(1){g=i+420|0;if((_j(g,c)|0)<0){if((Pj(g,1)|0)>0){break u}g=Fk(g,d,e,f);if(g){break t}while(1){g=i+420|0;if((_j(g,c)|0)<0){if((Pj(g,1)|0)>0){break u}g=Fk(g,d,e,f);if(g){break t}while(1){g=i+420|0;if((_j(g,c)|0)<0){if((Pj(g,1)|0)>0){break u}g=Fk(g,d,e,f);if(g){break t}while(1){g=i+420|0;if((_j(g,c)|0)<0){if((Pj(g,1)|0)>0){break u}g=Fk(g,d,e,f);if(g){break t}while(1){g=i+420|0;if((_j(g,c)|0)<0){if((Pj(g,1)|0)>0){break u}g=Fk(g,d,e,f);if(g){break t}while(1){g=i+420|0;if((_j(g,c)|0)<0){if((Pj(g,1)|0)>0){break u}g=Fk(g,d,e,f);if(g){break t}while(1){g=i+420|0;if((_j(g,c)|0)<0){if((Pj(g,1)|0)>0){break u}g=Fk(g,d,e,f);if(g){break t}while(1){g=i+420|0;if((_j(g,c)|0)<0){if((Pj(g,1)|0)>0){break u}g=Fk(g,d,e,f);if(g){break t}while(1){if((_j(i+420|0,c)|0)<0){g=-19712;break r}g=yk(i+420|0,1);if(!g){continue}break}break t}g=yk(i+420|0,1);if(!g){continue}break}break t}g=yk(i+420|0,1);if(!g){continue}break}break t}g=yk(i+420|0,1);if(!g){continue}break}break t}g=yk(i+420|0,1);if(!g){continue}break}break t}g=yk(i+420|0,1);if(!g){continue}break}break t}g=yk(i+420|0,1);if(!g){continue}break}break t}g=yk(i+420|0,1);if(!g){continue}break}break t}g=yk(i+420|0,1);if(!g){continue}break}break t}g=yk(i+420|0,1);if(!g){continue}break}break t}g=yk(i+420|0,1);if(!g){continue}break}break t}g=0;if(p>>>0>t>>>0){break r}break s}d=i+420|0;g=Ak(j,j,d);if(g){break t}g=Nl(j,a);if(g){break t}c=i+408|0;g=jl(a,c,d,d);if(g){break t}g=jl(a,b,b,c);if(g){break t}g=jl(a,c,c,d);if(g){break t}d=b+12|0;g=jl(a,d,d,c)}Dj(i+420|0);Dj(i+408|0);if(g|p>>>0>t>>>0){break r}}c=o&255;while(1){g=qB(a,b,b);if(g){break r}d=i+372|0;k=k-1|0;g=pJ(a,d,l,c,K[k+(i+96|0)|0]);if(g){break r}g=rB(a,b,b,d);if(g){break r}if(k){continue}break}}c=i+372|0;Dj(c);Dj(n);Dj(h);if(g){break l}J[c+8>>2]=0;J[c>>2]=1;J[c+4>>2]=0;d=b+12|0;g=wl(c,a+4|0,d);if(g){Dj(c);break l}c=i+372|0;g=Xt(d,c,Pj(d,0)?m:0);Dj(c);if(g){break l}g=bx(a,b)}if(J[a+116>>2]!=(l|0)){a=o&255;d=a>>>0<=1?1:a;a=0;while(1){c=P(a,36)+l|0;Dj(c);Dj(c+12|0);Dj(c+24|0);a=a+1|0;if((d|0)!=(a|0)){continue}break}cj(l)}if(g){break k}g=0;break c}if(!b){break c}Dj(b);Dj(b+12|0);Dj(b+24|0)}Ui=i+432|0;return g}function WR(a){var b=0,c=0,d=0,e=0,f=0,g=0,h=0,i=0,j=0,k=0,l=0,m=0;h=Ui-96|0;Ui=h;J[h+48>>2]=J[a+4>>2];J[h+52>>2]=J[a+300>>2];b=J[a+284>>2];a:{if(b){c=b?J[b+124>>2]:0;break a}b=J[a+288>>2];if(b){c=J[b+124>>2]}else{c=0}}J[h+56>>2]=c;J[h+16>>2]=5;Py(h+48|0,h+16|0);b=J[a+160>>2];if(b){vj(J[a+300>>2],b)}wR(J[a+156>>2]);b:{c:{d=J[a+156>>2];c=J[d+29088>>2];b=J[d+29084>>2];if((c|0)!=(b|0)){b=c-b>>2;c=b>>>0<=1?1:b;d:{while(1){b=J[d+29084>>2];if((b|0)!=J[d+29088>>2]){b=J[b>>2];Ny(b);lt(b);f=f+1|0;if((c|0)!=(f|0)){continue}break d}break}break c}b=J[d+29084>>2]}J[d+29088>>2]=b;b=J[218568];Tj(b);j=J[218567];Lj(b);if(j){e:{f=0;i=J[j+28>>2];Tj(i);f:{c=J[j+12>>2];b=J[j+8>>2];if((c|0)!=(b|0)){e=c-b>>6;while(1){b=J[j+8>>2];if(J[j+12>>2]-b>>6>>>0<=g>>>0){break f}b=b+(g<<6)|0;g:{if(J[b+48>>2]!=2){break g}f=f+1|0;c=K[b+58|0];if(c&1){break g}d=J[b+44>>2];if((d|0)!=-1){sq(d);c=K[b+58|0]}H[b+58|0]=c|1}g=g+1|0;if((e|0)!=(g|0)){continue}break}}H[j+32|0]=K[j+32|0]&254;Lj(i);break e}break b}}i=J[a+300>>2];if(!(!i|!J[a+204>>2])){c=a+180|0;b=Ui-32|0;Ui=b;h:{i:{f=J[74548];if(f){while(1){if(J[f+8>>2]){J[b+28>>2]=c;J[b+24>>2]=i;e=(l=b+24|0,m=QK(i,J[f>>2]),k=J[f+8>>2],Zi[k](l|0,m|0)|0);d=J[f>>2];if(e){break i}J[b>>2]=d;dj(0,96538,148261,b)}f=J[f+12>>2];if(f){continue}break}}break h}c=e+21|0;if(c>>>0>21){c=97515}else{c=J[(c<<2)+223356>>2]}J[b+20>>2]=c;J[b+16>>2]=d;dj(4,96538,31267,b+16|0)}Ui=b+32|0}J[h+80>>2]=0;J[h+84>>2]=0;J[h+88>>2]=0;J[h+92>>2]=0;J[h+72>>2]=0;J[h+76>>2]=0;J[h+64>>2]=0;J[h+68>>2]=0;J[h+84>>2]=-1;d=h+48|0;UR(a,d);e=Ui-16|0;Ui=e;f=J[73936];if(f){while(1){c=(J[d+8>>2]+P(L[f+16>>1],112)|0)+8|0;b=J[f+8>>2];j:{if(!b){break j}if(!(Zi[b|0](d,c)|0)){break j}J[e>>2]=J[f+12>>2];dj(4,88293,27311,e)}f=J[f>>2];if(f){continue}break}}Ui=e+16|0;c=h+16|0;J[c>>2]=0;J[c+4>>2]=0;J[c+24>>2]=0;J[c+28>>2]=0;J[c+16>>2]=0;J[c+20>>2]=0;J[c+8>>2]=0;J[c+12>>2]=0;J[c+4>>2]=J[a+300>>2];J[c+8>>2]=J[a+156>>2];b=J[a+284>>2];k:{if(b){b=b?J[b+124>>2]:0;break k}d=c;b=J[a+288>>2];if(b){b=J[b+124>>2]}else{b=0}J[d>>2]=b;mQ(c);b=J[a+296>>2];if(b){b=J[b+124>>2]}else{b=0}}J[c>>2]=b;mQ(c);e=Ui-16|0;Ui=e;b=J[218568];Tj(b);l:{m:{g=J[218567];if(!g){J[e+8>>2]=32;J[e+12>>2]=10;if(lS(e+8|0)){break m}g=J[218567]}Lj(b);d=J[g+28>>2];Tj(d);c=J[g+12>>2];b=J[g+8>>2];if((c|0)!=(b|0)){c=c-b>>6;i=0;while(1){b=J[g+8>>2];if(J[g+12>>2]-b>>6>>>0<=i>>>0){break b}b=b+(i<<6)|0;if(J[b+48>>2]==1){Ku(J[b+40>>2]);Ln(J[b+44>>2]);J[b+40>>2]=0;J[b+44>>2]=0;J[b+56>>2]=0;J[b+60>>2]=0;J[b+48>>2]=0;J[b+52>>2]=0;J[b+32>>2]=0;J[b+36>>2]=0;J[b+24>>2]=0;J[b+28>>2]=0;J[b+16>>2]=0;J[b+20>>2]=0;J[b+8>>2]=0;J[b+12>>2]=0;J[b>>2]=0;J[b+4>>2]=0;J[b+44>>2]=-1}i=i+1|0;if((c|0)!=(i|0)){continue}break}}H[g+32|0]=K[g+32|0]|1;Lj(d);Ui=e+16|0;break l}Z(92848,38120,83,49485);B()}d=J[a+156>>2];c=J[d+29088>>2];b=J[d+29084>>2];if((c|0)!=(b|0)){b=c-b>>2;c=b>>>0<=1?1:b;f=0;while(1){b=J[d+29084>>2];if((b|0)==J[d+29088>>2]){break c}b=J[b>>2];Ny(b);lt(b);f=f+1|0;if((c|0)!=(f|0)){continue}break}b=J[d+29084>>2]}J[d+29088>>2]=b;On(J[d+29080>>2]);n:{if(H[d+29096|0]&1){break n}b=J[d+29084>>2];if(!b){break n}cj(b)}cj(d);b=J[a+436>>2];if(b){vj(J[a+300>>2],b)}b=J[a+416>>2];if(b){vj(J[a+300>>2],b)}b=J[a+428>>2];if(b){vj(J[a+300>>2],b)}b=J[a+432>>2];if(b){vj(J[a+300>>2],b)}g=0;e=J[245446];if(e){J[e+33904>>2]=0;if(J[e+12>>2]){xJ();On(J[e+16>>2])}c=Ui-16|0;Ui=c;d=J[e>>2];b=L[d+22>>1];if(b){J[c>>2]=0-b;dj(4,96825,139923,c)}o:{if(H[d+24|0]&1){break o}b=J[d+16>>2];if(!b){break o}cj(b)}p:{if(H[d+12|0]&1){break p}b=J[d>>2];if(!b){break p}cj(b)}cj(d);Ui=c+16|0;i=J[e+20>>2];if((i|0)!=J[e+24>>2]){while(1){b=(g<<6)+i|0;J[b+56>>2]=-1;cj(J[b+4>>2]);J[b+56>>2]=0;J[b+60>>2]=0;J[b+48>>2]=0;J[b+52>>2]=0;J[b+40>>2]=0;J[b+44>>2]=0;J[b+32>>2]=0;J[b+36>>2]=0;J[b+24>>2]=0;J[b+28>>2]=0;J[b+16>>2]=0;J[b+20>>2]=0;J[b+8>>2]=0;J[b+12>>2]=0;J[b>>2]=0;J[b+4>>2]=0;g=g+1|0;i=J[e+20>>2];if(g>>>0>2]-i>>6>>>0){continue}break}}cj(J[e+33932>>2]);cj(J[e+33936>>2]);cj(J[e+33940>>2]);cj(J[e+33944>>2]);cj(J[e+33948>>2]);cj(J[e+33952>>2]);b=J[e+132>>2];if(b){cj(b)}b=J[e+1188>>2];if(b){cj(b)}b=J[e+2244>>2];if(b){cj(b)}b=J[e+3300>>2];if(b){cj(b)}b=J[e+4356>>2];if(b){cj(b)}b=J[e+5412>>2];if(b){cj(b)}b=J[e+6468>>2];if(b){cj(b)}b=J[e+7524>>2];if(b){cj(b)}b=J[e+8580>>2];if(b){cj(b)}b=J[e+9636>>2];if(b){cj(b)}b=J[e+10692>>2];if(b){cj(b)}b=J[e+11748>>2];if(b){cj(b)}b=J[e+12804>>2];if(b){cj(b)}b=J[e+13860>>2];if(b){cj(b)}b=J[e+14916>>2];if(b){cj(b)}b=J[e+15972>>2];if(b){cj(b)}b=J[e+17028>>2];if(b){cj(b)}b=J[e+18084>>2];if(b){cj(b)}b=J[e+19140>>2];if(b){cj(b)}b=J[e+20196>>2];if(b){cj(b)}b=J[e+21252>>2];if(b){cj(b)}b=J[e+22308>>2];if(b){cj(b)}b=J[e+23364>>2];if(b){cj(b)}b=J[e+24420>>2];if(b){cj(b)}b=J[e+25476>>2];if(b){cj(b)}b=J[e+26532>>2];if(b){cj(b)}b=J[e+27588>>2];if(b){cj(b)}b=J[e+28644>>2];if(b){cj(b)}b=J[e+29700>>2];if(b){cj(b)}b=J[e+30756>>2];if(b){cj(b)}b=J[e+31812>>2];if(b){cj(b)}b=J[e+32868>>2];if(b){cj(b)}b=J[e+8>>2];if(b){if(K[e+33958|0]==1){Zi[J[J[e+4>>2]+32>>2]](b);b=J[e+8>>2]}Zi[J[J[e+4>>2]+8>>2]](b)}q:{if(H[e+104|0]&1){break q}b=J[e+84>>2];if(b){cj(b)}b=J[e+76>>2];if(!b){break q}cj(b)}r:{if(H[e+72|0]&1){break r}b=J[e+64>>2];if(!b){break r}cj(b)}s:{if(H[e+60|0]&1){break s}b=J[e+48>>2];if(!b){break s}cj(b)}t:{if(H[e+44|0]&1){break t}b=J[e+36>>2];if(!b){break t}cj(b)}u:{if(H[e+32|0]&1){break u}b=J[e+20>>2];if(!b){break u}cj(b)}cj(e);J[245446]=0}c=J[a+424>>2];if(c){v:{if(H[c+68|0]&1){break v}b=J[c+48>>2];if(b){cj(b)}b=J[c+40>>2];if(!b){break v}cj(b)}w:{if(H[c+36|0]&1){break w}b=J[c+16>>2];if(b){cj(b)}b=J[c+8>>2];if(!b){break w}cj(b)}x:{if(H[c+6|0]&1){break x}b=J[c>>2];if(!b){break x}cj(b)}cj(c)}d=J[a+228>>2];if(d){b=J[d+2108>>2];if(b){Fl(b);J[d+2108>>2]=0}J[d+2080>>2]=0;J[84392]=0;JB(J[d+2104>>2]);if(J[d+1936>>2]){c=J[d+172>>2];b=J[c+8>>2];if((b|0)!=-1){Zi[J[79419]](b)}b=J[c+12>>2];if((b|0)!=-1){Zi[J[79420]](b)}Kx(d,c);Kx(d,J[d+876>>2]);b=J[d+336>>2];if(b){cj(b)}b=J[d+688>>2];if(b){cj(b)}b=J[d+1040>>2];if(b){cj(b)}b=J[d+1392>>2];if(b){cj(b)}Zi[J[79392]](J[d+1940>>2]);ll(J[d+1944>>2])}g=0;i=J[d+1984>>2];if((i|0)!=J[d+1988>>2]){while(1){Jx(J[(g<<2)+i>>2]);g=g+1|0;i=J[d+1984>>2];if(g>>>0>2]-i>>2>>>0){continue}break}}cj(J[d+2004>>2]);Zi[J[79392]](J[d+2e3>>2]);ll(J[d+2008>>2]);ll(J[d+2012>>2]);Eo(J[d+2496>>2],J[d+2500>>2]);b=J[d+2264>>2];if(b){cj(b);cj(J[d+2268>>2])}y:{if(H[d+2260|0]&1){break y}b=J[d+2240>>2];if(b){cj(b)}b=J[d+2232>>2];if(!b){break y}cj(b)}z:{if(H[d+2220|0]&1){break z}b=J[d+2208>>2];if(!b){break z}cj(b)}A:{if(H[d+2204|0]&1){break A}b=J[d+2192>>2];if(!b){break A}cj(b)}B:{if(H[d+2188|0]&1){break B}b=J[d+2176>>2];if(!b){break B}cj(b)}C:{if(H[d+2172|0]&1){break C}b=J[d+2160>>2];if(!b){break C}cj(b)}D:{if(H[d+2156|0]&1){break D}b=J[d+2144>>2];if(!b){break D}cj(b)}E:{if(H[d+2140|0]&1){break E}b=J[d+2128>>2];if(!b){break E}cj(b)}F:{if(H[d+2124|0]&1){break F}b=J[d+2112>>2];if(!b){break F}cj(b)}G:{if(H[d+2100|0]&1){break G}b=J[d+2088>>2];if(!b){break G}cj(b)}H:{if(H[d+2060|0]&1){break H}b=J[d+2048>>2];if(!b){break H}cj(b)}I:{if(H[d+2044|0]&1){break I}b=J[d+2032>>2];if(!b){break I}cj(b)}J:{if(H[d+1996|0]&1){break J}b=J[d+1984>>2];if(!b){break J}cj(b)}K:{if(H[d+1980|0]&1){break K}b=J[d+1968>>2];if(!b){break K}cj(b)}cj(d)}c=J[a+420>>2];if(c){f=0;if(c){d=J[c+3476>>2];if(d){g=J[d>>2];if((g|0)!=J[d+4>>2]){while(1){b=J[(f<<2)+g>>2];Zi[J[b+4>>2]](c,b);f=f+1|0;g=J[d>>2];if(f>>>0>2]-g>>2>>>0){continue}break}}if(!(!g|H[d+12|0]&1)){cj(g)}cj(d)}J[c+3476>>2]=0}ll(J[a+420>>2])}g=a+284|0;c=J[a+304>>2];if(c){L:{if(H[c+188|0]&1){break L}b=J[c+176>>2];if(!b){break L}cj(b)}M:{if(H[c+164|0]&1){break M}b=J[c+152>>2];if(!b){break M}cj(b)}N:{if(H[c+148|0]&1){break N}b=J[c+136>>2];if(!b){break N}cj(b)}O:{if(H[c+132|0]&1){break O}b=J[c+120>>2];if(!b){break O}cj(b)}P:{if(H[c+116|0]&1){break P}b=J[c+104>>2];if(!b){break P}cj(b)}Q:{if(H[c+100|0]&1){break Q}b=J[c+88>>2];if(!b){break Q}cj(b)}R:{if(H[c+84|0]&1){break R}b=J[c+72>>2];if(!b){break R}cj(b)}S:{if(H[c+68|0]&1){break S}b=J[c+56>>2];if(!b){break S}cj(b)}T:{if(H[c+52|0]&1){break T}b=J[c+40>>2];if(!b){break T}cj(b)}cj(c)}i=J[a+284>>2];U:{if(!i){b=J[a+288>>2];if(b){HB(b);KB(J[a+288>>2])}b=J[a+292>>2];if(b){HB(b);KB(J[a+292>>2])}i=J[a+296>>2];if(!i){break U}g=a+296|0}HB(i);KB(J[g>>2])}b=J[a+300>>2];if(b){SK(b)}b=J[a+224>>2];if(b){Zi[J[79380]](b);Zi[J[79378]](J[a+224>>2])}if(J[a+8>>2]){bc();c=J[a+8>>2];if(c){V:{if(H[c+76|0]&1){break V}b=J[c+64>>2];if(!b){break V}cj(b)}cj(c)}J[83763]=0;yb()}b=J[a+312>>2];c=J[a+316>>2];if(b|c){Eo(b,c)}b=J[a+232>>2];W:{if(!b){break W}if(K[a+249|0]==1){gM(b);break W}hM(b)}J[h>>2]=J[a+4>>2];J[h+4>>2]=0;J[h+8>>2]=J[a+156>>2];J[h+12>>2]=J[a+420>>2];d=Ui-16|0;Ui=d;f=J[215795];if(f){while(1){c=J[f+24>>2];X:{if(!c){break X}b=K[f+52|0];if(!(b&1)){break X}H[f+52|0]=b&254;if(!(Zi[c|0](h)|0)){break X}J[d>>2]=f+4;dj(4,91468,28993,d)}f=J[f>>2];if(f){continue}break}}Ui=d+16|0;c=J[216330];if(c){b=J[c>>2];if(b){cj(b);cj(J[c+4>>2])}cj(c)}J[216330]=0;c=J[a+4>>2];if(c){f=J[216331];if(f){while(1){b=J[f+8>>2];if(b){Zi[b|0](c)}f=J[f+24>>2];if(f){continue}break}}if(c){Y:{if(H[c+28|0]&1){break Y}b=J[c+16>>2];if(!b){break Y}cj(b)}Z:{if(H[c+12|0]&1){break Z}b=J[c>>2];if(!b){break Z}cj(b)}cj(c)}}_:{if(H[a+412|0]&1){break _}b=J[a+400>>2];if(!b){break _}cj(b)}$:{if(H[a+208|0]&1){break $}b=J[a+188>>2];if(b){cj(b)}b=J[a+180>>2];if(!b){break $}cj(b)}aa:{if(H[a+176|0]&1){break aa}b=J[a+164>>2];if(!b){break aa}cj(b)}cj(a);ba:{if(H[h+92|0]&1){break ba}a=J[h+72>>2];if(a){cj(a)}a=J[h+64>>2];if(!a){break ba}cj(a)}Ui=h+96|0;return}Z(145396,53895,487,84789);B()}Z(145396,54052,487,84789);B()}function sj(a){a=a|0;var b=0,c=0,d=0,e=0,f=0,g=0,h=0,i=0,j=0,k=0,l=0;k=Ui-16|0;Ui=k;a:{b:{c:{d:{e:{f:{g:{h:{i:{j:{if(a>>>0<=244){e=J[248702];h=a>>>0<11?16:a+11&504;a=h>>>3|0;b=e>>>a|0;if(b&3){c=a+((b^-1)&1)|0;b=c<<3;a=b+994848|0;b=J[b+994856>>2];d=J[b+8>>2];k:{if((a|0)==(d|0)){J[248702]=oxa(-2,c)&e;break k}J[d+12>>2]=a;J[a+8>>2]=d}a=b+8|0;c=c<<3;J[b+4>>2]=c|3;b=b+c|0;J[b+4>>2]=J[b+4>>2]|1;break a}i=J[248704];if(i>>>0>=h>>>0){break j}if(b){c=2<>2];d=J[c+8>>2];l:{if((b|0)==(d|0)){e=oxa(-2,a)&e;J[248702]=e;break l}J[d+12>>2]=b;J[b+8>>2]=d}J[c+4>>2]=h|3;g=c+h|0;a=a<<3;f=a-h|0;J[g+4>>2]=f|1;J[a+c>>2]=f;if(i){a=(i&-8)+994848|0;d=J[248707];b=1<<(i>>>3);m:{if(!(b&e)){J[248702]=b|e;b=a;break m}b=J[a+8>>2]}J[a+8>>2]=d;J[b+12>>2]=d;J[d+12>>2]=a;J[d+8>>2]=b}a=c+8|0;J[248707]=g;J[248704]=f;break a}l=J[248703];if(!l){break j}c=J[(hxa(l)<<2)+995112>>2];f=(J[c+4>>2]&-8)-h|0;b=c;while(1){n:{a=J[b+16>>2];if(!a){a=J[b+20>>2];if(!a){break n}}d=(J[a+4>>2]&-8)-h|0;b=d>>>0>>0;f=b?d:f;c=b?a:c;b=a;continue}break}j=J[c+24>>2];a=J[c+12>>2];if((c|0)!=(a|0)){b=J[c+8>>2];J[b+12>>2]=a;J[a+8>>2]=b;break b}b=J[c+20>>2];if(b){d=c+20|0}else{b=J[c+16>>2];if(!b){break i}d=c+16|0}while(1){g=d;a=b;d=a+20|0;b=J[a+20>>2];if(b){continue}d=a+16|0;b=J[a+16>>2];if(b){continue}break}J[g>>2]=0;break b}h=-1;if(a>>>0>4294967231){break j}b=a+11|0;h=b&-8;g=J[248703];if(!g){break j}i=31;f=0-h|0;if(a>>>0<=16777204){a=S(b>>>8|0);i=((h>>>38-a&1)-(a<<1)|0)+62|0}b=J[(i<<2)+995112>>2];o:{p:{q:{if(!b){a=0;break q}a=0;c=h<<((i|0)!=31?25-(i>>>1|0)|0:0);while(1){r:{e=(J[b+4>>2]&-8)-h|0;if(e>>>0>=f>>>0){break r}d=b;f=e;if(f){break r}f=0;a=b;break p}e=J[b+20>>2];b=J[((c>>>29&4)+b|0)+16>>2];a=e?(e|0)==(b|0)?a:e:a;c=c<<1;if(b){continue}break}}if(!(a|d)){d=0;a=2<>2]}if(!a){break o}}while(1){c=(J[a+4>>2]&-8)-h|0;b=c>>>0>>0;f=b?c:f;d=b?a:d;b=J[a+16>>2];if(b){a=b}else{a=J[a+20>>2]}if(a){continue}break}}if(!d|J[248704]-h>>>0<=f>>>0){break j}i=J[d+24>>2];a=J[d+12>>2];if((d|0)!=(a|0)){b=J[d+8>>2];J[b+12>>2]=a;J[a+8>>2]=b;break c}b=J[d+20>>2];if(b){c=d+20|0}else{b=J[d+16>>2];if(!b){break h}c=d+16|0}while(1){e=c;a=b;c=a+20|0;b=J[a+20>>2];if(b){continue}c=a+16|0;b=J[a+16>>2];if(b){continue}break}J[e>>2]=0;break c}d=J[248704];if(d>>>0>=h>>>0){a=J[248707];b=d-h|0;s:{if(b>>>0>=16){c=a+h|0;J[c+4>>2]=b|1;J[a+d>>2]=b;J[a+4>>2]=h|3;break s}J[a+4>>2]=d|3;b=a+d|0;J[b+4>>2]=J[b+4>>2]|1;c=0;b=0}J[248704]=b;J[248707]=c;a=a+8|0;break a}c=J[248705];if(c>>>0>h>>>0){b=c-h|0;J[248705]=b;a=J[248708];c=a+h|0;J[248708]=c;J[c+4>>2]=b|1;J[a+4>>2]=h|3;a=a+8|0;break a}a=0;f=h+47|0;if(J[248820]){b=J[248822]}else{J[248823]=-1;J[248824]=-1;J[248821]=4096;J[248822]=4096;J[248820]=k+12&-16^1431655768;J[248825]=0;J[248813]=0;b=4096}e=f+b|0;g=0-b|0;b=e&g;if(b>>>0<=h>>>0){break a}i=J[248812];if(i){j=J[248810];d=j+b|0;if(d>>>0<=j>>>0|d>>>0>i>>>0){break a}}t:{if(!(K[995252]&4)){u:{v:{w:{x:{d=J[248708];if(d){a=995256;while(1){i=J[a>>2];if(i>>>0<=d>>>0&d>>>0>2]>>>0){break x}a=J[a+8>>2];if(a){continue}break}}c=Vr(0);if((c|0)==-1){break u}e=b;a=J[248821];d=a-1|0;if(d&c){e=(b-c|0)+(c+d&0-a)|0}if(e>>>0<=h>>>0){break u}d=J[248812];if(d){g=J[248810];a=g+e|0;if(a>>>0<=g>>>0|a>>>0>d>>>0){break u}}a=Vr(e);if((c|0)!=(a|0)){break w}break t}e=g&e-c;c=Vr(e);if((c|0)==(J[a>>2]+J[a+4>>2]|0)){break v}a=c}if((a|0)==-1){break u}if(h+48>>>0<=e>>>0){c=a;break t}c=J[248822];c=c+(f-e|0)&0-c;if((Vr(c)|0)==-1){break u}e=c+e|0;c=a;break t}if((c|0)!=-1){break t}}J[248813]=J[248813]|4}c=Vr(b);a=Vr(0);if((c|0)==-1|(a|0)==-1|a>>>0<=c>>>0){break e}e=a-c|0;if(e>>>0<=h+40>>>0){break e}}a=J[248810]+e|0;J[248810]=a;if(a>>>0>M[248811]){J[248811]=a}y:{f=J[248708];if(f){a=995256;while(1){b=J[a>>2];d=J[a+4>>2];if((b+d|0)==(c|0)){break y}a=J[a+8>>2];if(a){continue}break}break g}a=J[248706];if(!(a>>>0<=c>>>0?a:0)){J[248706]=c}a=0;J[248815]=e;J[248814]=c;J[248710]=-1;J[248711]=J[248820];J[248817]=0;while(1){b=a<<3;d=b+994848|0;J[b+994856>>2]=d;J[b+994860>>2]=d;a=a+1|0;if((a|0)!=32){continue}break}a=e-40|0;b=-8-c&7;d=a-b|0;J[248705]=d;b=b+c|0;J[248708]=b;J[b+4>>2]=d|1;J[(a+c|0)+4>>2]=40;J[248709]=J[248824];break f}if(J[a+12>>2]&8|(c>>>0<=f>>>0|b>>>0>f>>>0)){break g}J[a+4>>2]=d+e;a=-8-f&7;b=a+f|0;J[248708]=b;c=J[248705]+e|0;a=c-a|0;J[248705]=a;J[b+4>>2]=a|1;J[(c+f|0)+4>>2]=40;J[248709]=J[248824];break f}a=0;break b}a=0;break c}if(M[248706]>c>>>0){J[248706]=c}d=c+e|0;a=995256;z:{while(1){b=J[a>>2];if((b|0)!=(d|0)){a=J[a+8>>2];if(a){continue}break z}break}if(!(K[a+12|0]&8)){break d}}a=995256;while(1){A:{b=J[a>>2];if(b>>>0<=f>>>0){d=b+J[a+4>>2]|0;if(d>>>0>f>>>0){break A}}a=J[a+8>>2];continue}break}a=e-40|0;b=-8-c&7;g=a-b|0;J[248705]=g;b=b+c|0;J[248708]=b;J[b+4>>2]=g|1;J[(a+c|0)+4>>2]=40;J[248709]=J[248824];a=(d+(39-d&7)|0)-47|0;b=a>>>0>>0?f:a;J[b+4>>2]=27;a=J[248817];J[b+16>>2]=J[248816];J[b+20>>2]=a;a=J[248815];J[b+8>>2]=J[248814];J[b+12>>2]=a;J[248816]=b+8;J[248815]=e;J[248814]=c;J[248817]=0;a=b+24|0;while(1){J[a+4>>2]=7;c=a+8|0;a=a+4|0;if(c>>>0>>0){continue}break}if((b|0)==(f|0)){break f}J[b+4>>2]=J[b+4>>2]&-2;c=b-f|0;J[f+4>>2]=c|1;J[b>>2]=c;B:{if(c>>>0<=255){a=(c&-8)+994848|0;b=J[248702];c=1<<(c>>>3);C:{if(!(b&c)){J[248702]=b|c;b=a;break C}b=J[a+8>>2]}J[a+8>>2]=f;J[b+12>>2]=f;d=8;c=12;break B}a=31;if(c>>>0<=16777215){a=S(c>>>8|0);a=((c>>>38-a&1)-(a<<1)|0)+62|0}J[f+28>>2]=a;J[f+16>>2]=0;J[f+20>>2]=0;b=(a<<2)+995112|0;D:{d=J[248703];e=1<>2]=f;break E}a=c<<((a|0)!=31?25-(a>>>1|0)|0:0);d=J[b>>2];while(1){b=d;if((c|0)==(J[b+4>>2]&-8)){break D}d=a>>>29|0;a=a<<1;e=(d&4)+b|0;d=J[e+16>>2];if(d){continue}break}J[e+16>>2]=f}J[f+24>>2]=b;b=f;a=b;d=12;c=8;break B}a=J[b+8>>2];J[a+12>>2]=f;J[b+8>>2]=f;J[f+8>>2]=a;a=0;d=12;c=24}J[d+f>>2]=b;J[c+f>>2]=a}a=J[248705];if(a>>>0<=h>>>0){break e}b=a-h|0;J[248705]=b;a=J[248708];c=a+h|0;J[248708]=c;J[c+4>>2]=b|1;J[a+4>>2]=h|3;a=a+8|0;break a}J[245744]=48;a=0;break a}J[a>>2]=c;J[a+4>>2]=J[a+4>>2]+e;i=(-8-c&7)+c|0;J[i+4>>2]=h|3;e=b+(-8-b&7)|0;f=h+i|0;g=e-f|0;F:{if(J[248708]==(e|0)){J[248708]=f;a=J[248705]+g|0;J[248705]=a;J[f+4>>2]=a|1;break F}if(J[248707]==(e|0)){J[248707]=f;a=J[248704]+g|0;J[248704]=a;J[f+4>>2]=a|1;J[a+f>>2]=a;break F}a=J[e+4>>2];if((a&3)==1){j=a&-8;c=J[e+12>>2];G:{if(a>>>0<=255){b=J[e+8>>2];if((b|0)==(c|0)){J[248702]=J[248702]&oxa(-2,a>>>3|0);break G}J[b+12>>2]=c;J[c+8>>2]=b;break G}h=J[e+24>>2];H:{if((c|0)!=(e|0)){a=J[e+8>>2];J[a+12>>2]=c;J[c+8>>2]=a;break H}I:{a=J[e+20>>2];if(a){b=e+20|0}else{a=J[e+16>>2];if(!a){break I}b=e+16|0}while(1){d=b;c=a;b=a+20|0;a=J[a+20>>2];if(a){continue}b=c+16|0;a=J[c+16>>2];if(a){continue}break}J[d>>2]=0;break H}c=0}if(!h){break G}a=J[e+28>>2];b=(a<<2)+995112|0;J:{if(J[b>>2]==(e|0)){J[b>>2]=c;if(c){break J}J[248703]=J[248703]&oxa(-2,a);break G}J[h+(J[h+16>>2]==(e|0)?16:20)>>2]=c;if(!c){break G}}J[c+24>>2]=h;a=J[e+16>>2];if(a){J[c+16>>2]=a;J[a+24>>2]=c}a=J[e+20>>2];if(!a){break G}J[c+20>>2]=a;J[a+24>>2]=c}g=g+j|0;e=e+j|0;a=J[e+4>>2]}J[e+4>>2]=a&-2;J[f+4>>2]=g|1;J[f+g>>2]=g;if(g>>>0<=255){a=(g&-8)+994848|0;b=J[248702];c=1<<(g>>>3);K:{if(!(b&c)){J[248702]=b|c;b=a;break K}b=J[a+8>>2]}J[a+8>>2]=f;J[b+12>>2]=f;J[f+12>>2]=a;J[f+8>>2]=b;break F}c=31;if(g>>>0<=16777215){a=S(g>>>8|0);c=((g>>>38-a&1)-(a<<1)|0)+62|0}J[f+28>>2]=c;J[f+16>>2]=0;J[f+20>>2]=0;a=(c<<2)+995112|0;L:{b=J[248703];d=1<>2]=f;break M}c=g<<((c|0)!=31?25-(c>>>1|0)|0:0);b=J[a>>2];while(1){a=b;if((J[a+4>>2]&-8)==(g|0)){break L}b=c>>>29|0;c=c<<1;d=(b&4)+a|0;b=J[d+16>>2];if(b){continue}break}J[d+16>>2]=f}J[f+24>>2]=a;J[f+12>>2]=f;J[f+8>>2]=f;break F}b=J[a+8>>2];J[b+12>>2]=f;J[a+8>>2]=f;J[f+24>>2]=0;J[f+12>>2]=a;J[f+8>>2]=b}a=i+8|0;break a}N:{if(!i){break N}b=J[d+28>>2];c=(b<<2)+995112|0;O:{if(J[c>>2]==(d|0)){J[c>>2]=a;if(a){break O}g=oxa(-2,b)&g;J[248703]=g;break N}J[i+(J[i+16>>2]==(d|0)?16:20)>>2]=a;if(!a){break N}}J[a+24>>2]=i;b=J[d+16>>2];if(b){J[a+16>>2]=b;J[b+24>>2]=a}b=J[d+20>>2];if(!b){break N}J[a+20>>2]=b;J[b+24>>2]=a}P:{if(f>>>0<=15){a=f+h|0;J[d+4>>2]=a|3;a=a+d|0;J[a+4>>2]=J[a+4>>2]|1;break P}J[d+4>>2]=h|3;e=d+h|0;J[e+4>>2]=f|1;J[f+e>>2]=f;if(f>>>0<=255){a=(f&-8)+994848|0;b=J[248702];c=1<<(f>>>3);Q:{if(!(b&c)){J[248702]=b|c;b=a;break Q}b=J[a+8>>2]}J[a+8>>2]=e;J[b+12>>2]=e;J[e+12>>2]=a;J[e+8>>2]=b;break P}a=31;if(f>>>0<=16777215){a=S(f>>>8|0);a=((f>>>38-a&1)-(a<<1)|0)+62|0}J[e+28>>2]=a;J[e+16>>2]=0;J[e+20>>2]=0;b=(a<<2)+995112|0;R:{c=1<>2]=e;J[e+24>>2]=b;break S}a=f<<((a|0)!=31?25-(a>>>1|0)|0:0);b=J[b>>2];while(1){c=b;if((J[b+4>>2]&-8)==(f|0)){break R}g=a>>>29|0;a=a<<1;g=b+(g&4)|0;b=J[g+16>>2];if(b){continue}break}J[g+16>>2]=e;J[e+24>>2]=c}J[e+12>>2]=e;J[e+8>>2]=e;break P}a=J[c+8>>2];J[a+12>>2]=e;J[c+8>>2]=e;J[e+24>>2]=0;J[e+12>>2]=c;J[e+8>>2]=a}a=d+8|0;break a}T:{if(!j){break T}b=J[c+28>>2];d=(b<<2)+995112|0;U:{if(J[d>>2]==(c|0)){J[d>>2]=a;if(a){break U}J[248703]=oxa(-2,b)&l;break T}J[j+(J[j+16>>2]==(c|0)?16:20)>>2]=a;if(!a){break T}}J[a+24>>2]=j;b=J[c+16>>2];if(b){J[a+16>>2]=b;J[b+24>>2]=a}b=J[c+20>>2];if(!b){break T}J[a+20>>2]=b;J[b+24>>2]=a}V:{if(f>>>0<=15){a=f+h|0;J[c+4>>2]=a|3;a=a+c|0;J[a+4>>2]=J[a+4>>2]|1;break V}J[c+4>>2]=h|3;g=c+h|0;J[g+4>>2]=f|1;J[f+g>>2]=f;if(i){a=(i&-8)+994848|0;d=J[248707];b=1<<(i>>>3);W:{if(!(b&e)){J[248702]=b|e;b=a;break W}b=J[a+8>>2]}J[a+8>>2]=d;J[b+12>>2]=d;J[d+12>>2]=a;J[d+8>>2]=b}J[248707]=g;J[248704]=f}a=c+8|0}Ui=k+16|0;return a|0}function lV(a,b,c,d,e){var f=0,g=Q(0),h=0,i=Q(0),j=Q(0),k=Q(0),l=Q(0),m=Q(0),n=0,o=0,p=Q(0),q=0,r=Q(0),s=Q(0),t=0,u=Q(0),v=0,w=Q(0),y=Q(0),z=Q(0),A=Q(0),B=0,C=Q(0),E=Q(0),F=Q(0),G=0,L=Q(0),M=0,O=0;B=Ui-384|0;Ui=B;q=a;h=Ui-144|0;Ui=h;k=N[c+4>>2];l=N[e+4>>2];p=N[c>>2];u=N[e>>2];f=B+4|0;g=N[c+12>>2];m=N[e+12>>2];s=N[e+8>>2];i=N[c+8>>2];j=Q(Q(g*m)+Q(s*i));N[f+272>>2]=j;m=Q(Q(g*s)-Q(i*m));N[f+268>>2]=m;k=Q(l-k);l=Q(u-p);p=Q(Q(g*k)-Q(i*l));N[f+264>>2]=p;g=Q(Q(g*l)+Q(i*k));N[f+260>>2]=g;i=N[d+24>>2];k=N[d+28>>2];u=Q(p+Q(Q(m*i)+Q(j*k)));N[f+280>>2]=u;s=Q(g+Q(Q(j*i)-Q(m*k)));N[f+276>>2]=s;w=N[b+44>>2];c=J[b+44>>2];j=N[b+40>>2];J[f+284>>2]=J[b+40>>2];J[f+288>>2]=c;r=N[b+28>>2];e=J[b+28>>2];i=N[b+24>>2];J[f+292>>2]=J[b+24>>2];J[f+296>>2]=e;y=N[b+36>>2];a=J[b+36>>2];m=N[b+32>>2];J[f+300>>2]=J[b+32>>2];J[f+304>>2]=a;z=N[b+52>>2];o=J[b+52>>2];C=N[b+48>>2];J[f+308>>2]=J[b+48>>2];J[f+312>>2]=o;n=K[b+56|0];g=Q(m-i);l=Q(y-r);k=Q(Y(Q(Q(g*g)+Q(l*l))));if(!(k>2]=l;A=Q(-g);N[f+328>>2]=A;p=Q(Q(l*Q(s-i))-Q(Q(u-r)*g));a:{b:{c:{d:{e:{if(n&1){k=j;j=Q(i-j);i=r;r=w;i=Q(i-r);w=Q(Y(Q(Q(j*j)+Q(i*i))));if(!(w>2]=i;N[f+320>>2]=-j;k=Q(Q(i*Q(s-k))-Q(Q(u-r)*j));b=Q(Q(j*l)+Q(i*A))>=Q(0);if(a&1){break e}break d}if(!(a&1)){break b}k=Q(0);b=0}j=Q(C-m);i=Q(z-y);r=Q(Y(Q(Q(j*j)+Q(i*i))));if(!(r>2]=i;N[f+336>>2]=-j;r=Q(Q(g*i)-Q(l*j));m=Q(Q(i*Q(s-m))-Q(Q(u-y)*j));c=n&1;if(!(!c|!(a&1))){if(!(!(r>Q(0))|b^1)){a=p>=Q(0)|k>=Q(0)|m>=Q(0);H[f+376|0]=a;if(a){a=J[f+328>>2];J[f+340>>2]=J[f+324>>2];J[f+344>>2]=a;a=J[f+320>>2];J[f+356>>2]=J[f+316>>2];J[f+360>>2]=a;a=J[f+336>>2];J[f+364>>2]=J[f+332>>2];J[f+368>>2]=a;break a}N[f+368>>2]=g;N[f+360>>2]=g;N[f+344>>2]=g;g=Q(-l);N[f+364>>2]=g;N[f+356>>2]=g;N[f+340>>2]=g;break a}if(b){f:{if(!(k>=Q(0))){a=p>=Q(0)&m>=Q(0);H[f+376|0]=a;if(a){break f}N[f+368>>2]=g;N[f+360>>2]=j;N[f+344>>2]=g;g=Q(-l);N[f+364>>2]=g;N[f+356>>2]=-i;N[f+340>>2]=g;break a}H[f+376|0]=1}b=J[f+328>>2];a=J[f+324>>2];J[f+340>>2]=a;J[f+344>>2]=b;J[f+364>>2]=a;J[f+368>>2]=b;a=J[f+320>>2];J[f+356>>2]=J[f+316>>2];J[f+360>>2]=a;break a}if(r>Q(0)){g:{if(!(m>=Q(0))){a=p>=Q(0)&k>=Q(0);H[f+376|0]=a;if(a){break g}N[f+360>>2]=g;N[f+344>>2]=g;g=Q(-l);N[f+356>>2]=g;N[f+340>>2]=g;N[f+368>>2]=-N[f+320>>2];N[f+364>>2]=-N[f+316>>2];break a}H[f+376|0]=1}b=J[f+328>>2];a=J[f+324>>2];J[f+356>>2]=a;J[f+360>>2]=b;J[f+340>>2]=a;J[f+344>>2]=b;a=J[f+336>>2];J[f+364>>2]=J[f+332>>2];J[f+368>>2]=a;break a}a=p>=Q(0)&k>=Q(0)&m>=Q(0);H[f+376|0]=a;if(a){b=J[f+328>>2];a=J[f+324>>2];J[f+364>>2]=a;J[f+368>>2]=b;J[f+356>>2]=a;J[f+360>>2]=b;J[f+340>>2]=a;J[f+344>>2]=b;break a}N[f+360>>2]=j;N[f+344>>2]=g;N[f+356>>2]=-i;N[f+340>>2]=-l;N[f+368>>2]=-N[f+320>>2];N[f+364>>2]=-N[f+316>>2];break a}if(!c){break c}}if(b){a=p>=Q(0)|k>=Q(0);H[f+376|0]=a;if(a){a=J[f+328>>2];b=J[f+324>>2];J[f+340>>2]=b;J[f+344>>2]=a;c=J[f+320>>2];J[f+356>>2]=J[f+316>>2];J[f+360>>2]=c;J[f+364>>2]=b^-2147483648;J[f+368>>2]=a^-2147483648;break a}N[f+344>>2]=g;N[f+368>>2]=g;N[f+340>>2]=-l;b=J[f+328>>2];a=J[f+324>>2];J[f+356>>2]=a;J[f+360>>2]=b;J[f+364>>2]=a^-2147483648;break a}a=p>=Q(0)&k>=Q(0);H[f+376|0]=a;if(a){b=J[f+328>>2];a=J[f+324>>2];J[f+356>>2]=a;J[f+360>>2]=b;J[f+340>>2]=a;J[f+344>>2]=b;J[f+364>>2]=a^-2147483648;J[f+368>>2]=b^-2147483648;break a}N[f+344>>2]=g;N[f+340>>2]=-l;a=J[f+328>>2];J[f+356>>2]=J[f+324>>2];J[f+360>>2]=a;N[f+368>>2]=-N[f+320>>2];N[f+364>>2]=-N[f+316>>2];break a}if(r>Q(0)){a=p>=Q(0)|m>=Q(0);H[f+376|0]=a;if(a){a=J[f+328>>2];b=J[f+324>>2];J[f+340>>2]=b;J[f+344>>2]=a;c=J[f+336>>2];J[f+364>>2]=J[f+332>>2];J[f+368>>2]=c;J[f+356>>2]=b^-2147483648;J[f+360>>2]=a^-2147483648;break a}N[f+360>>2]=g;N[f+344>>2]=g;g=Q(-l);N[f+356>>2]=g;N[f+340>>2]=g;a=J[f+328>>2];J[f+364>>2]=J[f+324>>2];J[f+368>>2]=a;break a}a=p>=Q(0)&m>=Q(0);H[f+376|0]=a;if(a){b=J[f+328>>2];a=J[f+324>>2];J[f+364>>2]=a;J[f+368>>2]=b;J[f+340>>2]=a;J[f+344>>2]=b;J[f+356>>2]=a^-2147483648;J[f+360>>2]=b^-2147483648;break a}N[f+360>>2]=j;N[f+344>>2]=g;N[f+356>>2]=-i;N[f+340>>2]=-l;a=J[f+328>>2];J[f+364>>2]=J[f+324>>2];J[f+368>>2]=a;break a}a=p>=Q(0);H[f+376|0]=a;if(a){b=J[f+328>>2];a=J[f+324>>2];J[f+340>>2]=a;J[f+344>>2]=b;a=a^-2147483648;J[f+364>>2]=a;J[f+356>>2]=a;a=b^-2147483648;J[f+368>>2]=a;J[f+360>>2]=a;break a}N[f+344>>2]=g;N[f+340>>2]=-l;b=J[f+328>>2];a=J[f+324>>2];J[f+364>>2]=a;J[f+368>>2]=b;J[f+356>>2]=a;J[f+360>>2]=b}a=J[d+416>>2];J[f+256>>2]=a;c=0;h:{if((a|0)<=0){J[f+372>>2]=1017370378;J[q+68>>2]=0;break h}b=f+128|0;e=d+288|0;n=d+160|0;while(1){g=N[f+260>>2];a=c<<3;o=a+f|0;i=N[f+268>>2];t=a+n|0;j=N[t>>2];m=N[f+272>>2];k=N[t+4>>2];N[o+4>>2]=Q(Q(i*j)+Q(m*k))+N[f+264>>2];N[o>>2]=g+Q(Q(m*j)-Q(i*k));o=a+b|0;g=N[f+268>>2];a=a+e|0;i=N[a>>2];j=N[f+272>>2];m=N[a+4>>2];N[o+4>>2]=Q(g*i)+Q(j*m);N[o>>2]=Q(j*i)-Q(g*m);c=c+1|0;if((c|0)>2]){continue}break}J[f+372>>2]=1017370378;v=K[f+376|0];e=J[f+256>>2];c=0;J[q+68>>2]=0;if((e|0)<=0){break h}n=e&1;m=N[f+344>>2];k=N[f+340>>2];l=N[f+296>>2];p=N[f+292>>2];i:{if((e|0)==1){j=Q(34028234663852886e22);break i}o=e&2147483646;j=Q(34028234663852886e22);b=0;while(1){a=(c<<3)+f|0;g=Q(Q(k*Q(N[a+8>>2]-p))+Q(m*Q(N[a+12>>2]-l)));i=Q(Q(k*Q(N[a>>2]-p))+Q(m*Q(N[a+4>>2]-l)));i=j>i?i:j;j=g>2]-p))+Q(m*Q(N[a+4>>2]-l)));j=gQ(.019999999552965164)){break h}t=f+128|0;r=N[f+360>>2];y=N[f+356>>2];C=N[f+368>>2];A=N[f+364>>2];w=N[f+304>>2];L=N[f+300>>2];a=-1;g=Q(-34028234663852886e22);c=0;n=1;j:{k:{l:{m:{n:{while(1){b=a;i=g;a=c;o:{p:{while(1){c=a<<3;o=c+t|0;z=N[o>>2];u=Q(-z);c=c+f|0;g=N[c>>2];E=N[c+4>>2];s=N[o+4>>2];F=Q(Q(u*Q(g-p))-Q(Q(E-l)*s));g=Q(Q(u*Q(g-L))-Q(Q(E-w)*s));g=g>F?F:g;if(g>Q(.019999999552965164)){break o}s=Q(-s);q:{if(Q(Q(z*m)+Q(k*s))>=Q(0)){if(!(g>i)|Q(Q(Q(u-A)*k)+Q(m*Q(s-C)))i){break p}}a=a+1|0;if((e|0)!=(a|0)){continue}break}g=i;a=b;if(n){break n}break o}n=0;c=a+1|0;if((e|0)!=(c|0)){continue}}break}if(g>Q(.019999999552965164)){break h}if(Q(Q(j*Q(.9800000190734863))+Q(.0010000000474974513))>2]=1;c=0;if((e|0)==1){break k}j=Q(Q(k*N[f+128>>2])+Q(m*N[f+132>>2]));b=((e|0)<=2?2:e)-1|0;M=b&1;if((e|0)<3){break l}O=b&-2;b=0;while(1){n=t+(a<<3)|0;g=Q(Q(k*N[n>>2])+Q(m*N[n+4>>2]));n=g>2])+Q(m*N[o+4>>2]));g=n?g:j;o=i>2]=2;c=J[f+292>>2];n=J[f+296>>2];I[h+122>>1]=256;H[h+121|0]=a;b=0;H[h+120|0]=0;J[h+112>>2]=c;J[h+116>>2]=n;c=J[f+300>>2];n=J[f+304>>2];I[h+134>>1]=256;H[h+133|0]=a;H[h+132|0]=0;J[h+124>>2]=c;J[h+128>>2]=n;J[h+56>>2]=a;c=a+1|0;e=(c|0)<(e|0)?c:0;J[h+60>>2]=e;v=a<<3;n=v+f|0;c=J[n>>2];n=J[n+4>>2];J[h+64>>2]=c;J[h+68>>2]=n;o=(e<<3)+f|0;e=J[o>>2];o=J[o+4>>2];J[h+72>>2]=e;J[h+76>>2]=o;v=t+v|0;t=v;g=N[t>>2];t=J[t>>2];l=N[v+4>>2];v=J[v+4>>2];J[h+80>>2]=t;J[h+84>>2]=v;break j}if(!M){break k}b=a;a=t+(a<<3)|0;c=Q(Q(k*N[a>>2])+Q(m*N[a+4>>2]))>2];a=J[a+4>>2];b=1;I[h+122>>1]=1;H[h+121|0]=c;H[h+120|0]=0;J[h+112>>2]=n;J[h+116>>2]=a;a=c+1|0;a=(a|0)<(e|0)?a:0;c=(a<<3)+f|0;e=J[c>>2];c=J[c+4>>2];I[h+134>>1]=1;H[h+133|0]=a;H[h+132|0]=0;J[h+124>>2]=e;J[h+128>>2]=c;if(v&1){J[h+56>>2]=0;J[h+60>>2]=1;a=J[f+296>>2];n=a;c=J[f+292>>2];J[h+64>>2]=c;J[h+68>>2]=a;a=J[f+304>>2];o=a;e=J[f+300>>2];J[h+72>>2]=e;J[h+76>>2]=a;l=N[f+328>>2];t=J[f+328>>2];g=N[f+324>>2];J[h+80>>2]=J[f+324>>2];J[h+84>>2]=t;a=0;break j}J[h+56>>2]=1;J[h+60>>2]=0;a=J[f+304>>2];n=a;c=J[f+300>>2];J[h+64>>2]=c;J[h+68>>2]=a;a=J[f+296>>2];o=a;e=J[f+292>>2];J[h+72>>2]=e;J[h+76>>2]=a;g=N[f+324>>2];l=Q(-N[f+328>>2]);N[h+84>>2]=l;g=Q(-g);N[h+80>>2]=g;a=1}N[h+88>>2]=l;N[h+100>>2]=-l;N[h+104>>2]=g;N[h+92>>2]=-g;N[h+108>>2]=Q(g*(x(2,o),D()))-Q(l*(x(2,e),D()));g=Q(Q(l*(x(2,c),D()))-Q((x(2,n),D())*g));N[h+96>>2]=g;c=h+32|0;if((vz(c,h+112|0,h+88|0,g,a)|0)<2){break h}if((vz(h,c,h+100|0,N[h+108>>2],J[h+60>>2])|0)<2){break h}r:{if(b){m=N[h+84>>2];a=J[h+84>>2];j=N[h+80>>2];J[q+48>>2]=J[h+80>>2];J[q+52>>2]=a;d=J[h+68>>2];n=d;g=N[h+68>>2];i=N[h+64>>2];a=J[h+64>>2];break r}a=(J[h+56>>2]<<3)+d|0;c=J[a+292>>2];J[q+48>>2]=J[a+288>>2];J[q+52>>2]=c;n=J[a+164>>2];j=N[h+80>>2];g=N[h+68>>2];i=N[h+64>>2];m=N[h+84>>2];a=J[a+160>>2]}J[q+56>>2]=a;J[q+60>>2]=n;a=0;k=N[f+372>>2];l=N[h>>2];p=N[h+4>>2];u=Q(Q(j*Q(l-i))+Q(Q(p-g)*m));if(k>=u){s:{if(b){k=N[f+272>>2];p=Q(p-N[f+264>>2]);s=N[f+268>>2];l=Q(l-N[f+260>>2]);N[q+4>>2]=Q(k*p)-Q(s*l);N[q>>2]=Q(k*l)+Q(p*s);J[q+16>>2]=J[h+8>>2];break s}a=J[h+4>>2];J[q>>2]=J[h>>2];J[q+4>>2]=a;H[q+18|0]=K[h+11|0];H[q+19|0]=K[h+10|0];H[q+16|0]=K[h+9|0];H[q+17|0]=K[h+8|0]}N[q+20>>2]=-u;k=N[f+372>>2];a=1}r=j;j=N[h+12>>2];r=Q(r*Q(j-i));i=N[h+16>>2];g=Q(r+Q(Q(i-g)*m));if(g<=k){c=P(a,24)+q|0;t:{if(!b){b=J[h+16>>2];J[c>>2]=J[h+12>>2];J[c+4>>2]=b;H[c+18|0]=K[h+23|0];H[c+19|0]=K[h+22|0];H[c+16|0]=K[h+21|0];H[c+17|0]=K[h+20|0];break t}m=N[f+272>>2];i=Q(i-N[f+264>>2]);k=N[f+268>>2];j=Q(j-N[f+260>>2]);N[c+4>>2]=Q(m*i)-Q(k*j);N[c>>2]=Q(m*j)+Q(i*k);J[c+16>>2]=J[h+20>>2]}N[c+20>>2]=-g;a=a+1|0}J[q+68>>2]=a}Ui=h+144|0;Ui=B+384|0}function oQ(a,b,c,d,e,f,g,h){var i=Q(0),j=Q(0),k=Q(0),l=Q(0),m=0,n=Q(0),o=Q(0),p=Q(0),q=Q(0),r=Q(0),s=Q(0),t=Q(0),u=Q(0),v=Q(0),w=Q(0),x=Q(0),y=Q(0),z=0;m=Ui+-64|0;Ui=m;J[m+60>>2]=0;J[m+56>>2]=0;J[m+52>>2]=0;J[m+48>>2]=0;a=zv(a,d,e,m+60|0,m+56|0,m+52|0,m+48|0);a:{if(a){b=tj(d,e);J[m+36>>2]=a;J[m+32>>2]=b;dj(4,88458,133102,m+32|0);break a}z=J[m+52>>2];if((z&-2)!=2){J[m+16>>2]=tj(d,e);J[m+20>>2]=J[m+52>>2];dj(4,88458,116200,m+16|0);break a}b:{c:{d:{e:{f:{g:{h:{switch(f|0){case 0:i=b?Q(1):Q(0);f=J[m+60>>2];a=(f-g|0)+h|0;d=J[m+48>>2];e=J[m+56>>2];if((z|0)==2){break b}if(!e){break a}b=0;while(1){j=Q(K[f+2|0]);k=Q(K[f|0]);l=Q(K[f+1|0]);n=Q(Q(N[c+56>>2]*i)+Q(Q(N[c+40>>2]*j)+Q(Q(N[c+8>>2]*k)+Q(N[c+24>>2]*l))));i:{if(n=Q(0)){g=~~n>>>0;break i}g=0}q=N[c+48>>2];r=N[c+32>>2];o=N[c>>2];p=N[c+16>>2];n=N[c+52>>2];s=N[c+36>>2];t=N[c+4>>2];v=N[c+20>>2];H[a+2|0]=g;n=Q(Q(n*i)+Q(Q(s*j)+Q(Q(t*k)+Q(v*l))));j:{if(n=Q(0)){g=~~n>>>0;break j}g=0}H[a+1|0]=g;j=Q(Q(q*i)+Q(Q(r*j)+Q(Q(o*k)+Q(p*l))));k:{if(j=Q(0)){g=~~j>>>0;break k}g=0}H[a|0]=g;a=a+d|0;f=d+f|0;b=b+1|0;if((e|0)!=(b|0)){continue}break};break a;case 1:i=b?Q(1):Q(0);f=J[m+60>>2];a=(f-g|0)+h|0;e=J[m+48>>2];d=J[m+56>>2];if((z|0)==2){break c}if(!d){break a}n=N[c+40>>2];q=N[c+24>>2];r=N[c+8>>2];o=N[c+36>>2];p=N[c+20>>2];s=N[c+4>>2];t=N[c+32>>2];v=N[c+16>>2];w=N[c>>2];b=0;x=Q(N[c+56>>2]*i);u=Q(N[c+52>>2]*i);y=Q(N[c+48>>2]*i);while(1){i=Q(L[f+4>>1]);j=Q(L[f>>1]);k=Q(L[f+2>>1]);l=Q(x+Q(Q(n*i)+Q(Q(r*j)+Q(q*k))));l:{if(l=Q(0)){c=~~l>>>0;break l}c=0}I[a+4>>1]=c;l=Q(u+Q(Q(o*i)+Q(Q(s*j)+Q(p*k))));m:{if(l=Q(0)){c=~~l>>>0;break m}c=0}I[a+2>>1]=c;i=Q(y+Q(Q(t*i)+Q(Q(w*j)+Q(v*k))));n:{if(i=Q(0)){c=~~i>>>0;break n}c=0}I[a>>1]=c;c=e<<1;a=c+a|0;f=c+f|0;b=b+1|0;if((d|0)!=(b|0)){continue}break};break a;case 2:i=b?Q(1):Q(0);f=J[m+60>>2];a=(f-g|0)+h|0;d=J[m+48>>2];b=J[m+56>>2];if((z|0)==2){break d}if(!b){break a}n=N[c+40>>2];q=N[c+24>>2];r=N[c+8>>2];o=N[c+36>>2];p=N[c+20>>2];s=N[c+4>>2];t=N[c+32>>2];v=N[c+16>>2];w=N[c>>2];g=0;x=Q(N[c+56>>2]*i);u=Q(N[c+52>>2]*i);y=Q(N[c+48>>2]*i);c=d<<2;while(1){i=Q(M[f+8>>2]);j=Q(M[f>>2]);k=Q(M[f+4>>2]);l=Q(x+Q(Q(n*i)+Q(Q(r*j)+Q(q*k))));o:{if(l=Q(0)){d=~~l>>>0;break o}d=0}J[a+8>>2]=d;l=Q(u+Q(Q(o*i)+Q(Q(s*j)+Q(p*k))));p:{if(l=Q(0)){d=~~l>>>0;break p}d=0}J[a+4>>2]=d;i=Q(y+Q(Q(t*i)+Q(Q(w*j)+Q(v*k))));q:{if(i=Q(0)){d=~~i>>>0;break q}d=0}J[a>>2]=d;a=a+c|0;f=c+f|0;g=g+1|0;if((b|0)!=(g|0)){continue}break};break a;case 4:i=b?Q(1):Q(0);f=J[m+60>>2];a=(f-g|0)+h|0;d=J[m+48>>2];e=J[m+56>>2];if((z|0)==2){break e}if(!e){break a}b=0;while(1){j=Q(H[f+2|0]);k=Q(H[f|0]);l=Q(H[f+1|0]);n=Q(Q(N[c+56>>2]*i)+Q(Q(N[c+40>>2]*j)+Q(Q(N[c+8>>2]*k)+Q(N[c+24>>2]*l))));r:{if(Q(R(n))>2];q=N[c+32>>2];r=N[c>>2];o=N[c+16>>2];p=N[c+52>>2];s=N[c+36>>2];t=N[c+4>>2];v=N[c+20>>2];H[a+2|0]=g;p=Q(Q(p*i)+Q(Q(s*j)+Q(Q(t*k)+Q(v*l))));s:{if(Q(R(p))>2];a=(f-g|0)+h|0;e=J[m+48>>2];d=J[m+56>>2];if((z|0)==2){break f}if(!d){break a}l=N[c+40>>2];n=N[c+24>>2];q=N[c+8>>2];r=N[c+36>>2];o=N[c+20>>2];p=N[c+4>>2];s=N[c+32>>2];t=N[c+16>>2];v=N[c>>2];b=0;w=Q(N[c+56>>2]*i);x=Q(N[c+52>>2]*i);u=Q(N[c+48>>2]*i);while(1){i=Q(I[f+4>>1]);j=Q(I[f>>1]);k=Q(I[f+2>>1]);y=Q(w+Q(Q(l*i)+Q(Q(q*j)+Q(n*k))));u:{if(Q(R(y))>1]=c;y=Q(x+Q(Q(r*i)+Q(Q(p*j)+Q(o*k))));v:{if(Q(R(y))>1]=c;i=Q(u+Q(Q(s*i)+Q(Q(v*j)+Q(t*k))));w:{if(Q(R(i))>1]=c;c=e<<1;a=c+a|0;f=c+f|0;b=b+1|0;if((d|0)!=(b|0)){continue}break};break a;case 6:i=b?Q(1):Q(0);f=J[m+60>>2];a=(f-g|0)+h|0;d=J[m+48>>2];b=J[m+56>>2];if((z|0)==2){break g}if(!b){break a}l=N[c+40>>2];n=N[c+24>>2];q=N[c+8>>2];r=N[c+36>>2];o=N[c+20>>2];p=N[c+4>>2];s=N[c+32>>2];t=N[c+16>>2];v=N[c>>2];g=0;w=Q(N[c+56>>2]*i);x=Q(N[c+52>>2]*i);u=Q(N[c+48>>2]*i);c=d<<2;while(1){i=Q(J[f+8>>2]);j=Q(J[f>>2]);k=Q(J[f+4>>2]);y=Q(w+Q(Q(l*i)+Q(Q(q*j)+Q(n*k))));x:{if(Q(R(y))>2]=d;y=Q(x+Q(Q(r*i)+Q(Q(p*j)+Q(o*k))));y:{if(Q(R(y))>2]=d;i=Q(u+Q(Q(s*i)+Q(Q(v*j)+Q(t*k))));z:{if(Q(R(i))>2]=d;a=a+c|0;f=c+f|0;g=g+1|0;if((b|0)!=(g|0)){continue}break};break a;case 8:i=b?Q(1):Q(0);f=J[m+60>>2];a=(f-g|0)+h|0;d=J[m+48>>2];b=J[m+56>>2];if((z|0)!=2){if(!b){break a}g=0;d=d<<2;while(1){n=N[c+48>>2];q=N[c+32>>2];r=N[c>>2];o=N[c+16>>2];p=N[c+52>>2];s=N[c+36>>2];t=N[c+4>>2];v=N[c+20>>2];j=N[f+8>>2];k=N[f>>2];l=N[f+4>>2];N[a+8>>2]=Q(N[c+56>>2]*i)+Q(Q(N[c+40>>2]*j)+Q(Q(N[c+8>>2]*k)+Q(l*N[c+24>>2])));N[a+4>>2]=Q(p*i)+Q(Q(s*j)+Q(Q(t*k)+Q(l*v)));N[a>>2]=Q(n*i)+Q(Q(q*j)+Q(Q(r*k)+Q(l*o)));a=a+d|0;f=d+f|0;g=g+1|0;if((b|0)!=(g|0)){continue}break}break a}if(!b){break a}g=0;d=d<<2;while(1){l=N[c+48>>2];n=N[c+32>>2];q=N[c>>2];r=N[c+16>>2];o=N[c+52>>2];p=N[c+36>>2];s=N[c+4>>2];t=N[c+20>>2];j=N[f>>2];k=N[f+4>>2];N[a+8>>2]=Q(N[c+56>>2]*i)+Q(Q(N[c+40>>2]*Q(0))+Q(Q(N[c+8>>2]*j)+Q(k*N[c+24>>2])));N[a+4>>2]=Q(o*i)+Q(Q(p*Q(0))+Q(Q(s*j)+Q(k*t)));N[a>>2]=Q(l*i)+Q(Q(n*Q(0))+Q(Q(q*j)+Q(k*r)));a=a+d|0;f=d+f|0;g=g+1|0;if((b|0)!=(g|0)){continue}break};break a;default:break h}}J[m+4>>2]=tj(d,e);J[m>>2]=f;dj(4,88458,127709,m);break a}if(!b){break a}k=N[c+24>>2];l=N[c+8>>2];n=N[c+20>>2];q=N[c+4>>2];r=N[c+16>>2];o=N[c>>2];g=0;p=Q(N[c+40>>2]*Q(0));s=Q(N[c+56>>2]*i);t=Q(N[c+36>>2]*Q(0));v=Q(N[c+52>>2]*i);w=Q(N[c+32>>2]*Q(0));x=Q(N[c+48>>2]*i);c=d<<2;while(1){i=Q(J[f>>2]);j=Q(J[f+4>>2]);u=Q(s+Q(p+Q(Q(l*i)+Q(k*j))));A:{if(Q(R(u))>2]=d;u=Q(v+Q(t+Q(Q(q*i)+Q(n*j))));B:{if(Q(R(u))>2]=d;i=Q(x+Q(w+Q(Q(o*i)+Q(r*j))));C:{if(Q(R(i))>2]=d;a=a+c|0;f=c+f|0;g=g+1|0;if((b|0)!=(g|0)){continue}break}break a}if(!d){break a}k=N[c+24>>2];l=N[c+8>>2];n=N[c+20>>2];q=N[c+4>>2];r=N[c+16>>2];o=N[c>>2];b=0;p=Q(N[c+40>>2]*Q(0));s=Q(N[c+56>>2]*i);t=Q(N[c+36>>2]*Q(0));v=Q(N[c+52>>2]*i);w=Q(N[c+32>>2]*Q(0));x=Q(N[c+48>>2]*i);while(1){i=Q(I[f>>1]);j=Q(I[f+2>>1]);u=Q(s+Q(p+Q(Q(l*i)+Q(k*j))));D:{if(Q(R(u))>1]=c;u=Q(v+Q(t+Q(Q(q*i)+Q(n*j))));E:{if(Q(R(u))>1]=c;i=Q(x+Q(w+Q(Q(o*i)+Q(r*j))));F:{if(Q(R(i))>1]=c;c=e<<1;a=c+a|0;f=c+f|0;b=b+1|0;if((d|0)!=(b|0)){continue}break}break a}if(!e){break a}b=0;while(1){j=Q(H[f|0]);k=Q(H[f+1|0]);l=Q(Q(N[c+56>>2]*i)+Q(Q(N[c+40>>2]*Q(0))+Q(Q(N[c+8>>2]*j)+Q(N[c+24>>2]*k))));G:{if(Q(R(l))>2];n=N[c+32>>2];q=N[c>>2];r=N[c+16>>2];o=N[c+52>>2];p=N[c+36>>2];s=N[c+4>>2];t=N[c+20>>2];H[a+2|0]=g;o=Q(Q(o*i)+Q(Q(p*Q(0))+Q(Q(s*j)+Q(t*k))));H:{if(Q(R(o))>2];n=N[c+8>>2];q=N[c+20>>2];r=N[c+4>>2];o=N[c+16>>2];p=N[c>>2];g=0;s=Q(N[c+40>>2]*Q(0));t=Q(N[c+56>>2]*i);v=Q(N[c+36>>2]*Q(0));w=Q(N[c+52>>2]*i);x=Q(N[c+32>>2]*Q(0));u=Q(N[c+48>>2]*i);c=d<<2;while(1){i=Q(M[f>>2]);j=Q(M[f+4>>2]);k=Q(t+Q(s+Q(Q(n*i)+Q(l*j))));J:{if(k=Q(0)){d=~~k>>>0;break J}d=0}J[a+8>>2]=d;k=Q(w+Q(v+Q(Q(r*i)+Q(q*j))));K:{if(k=Q(0)){d=~~k>>>0;break K}d=0}J[a+4>>2]=d;i=Q(u+Q(x+Q(Q(p*i)+Q(o*j))));L:{if(i=Q(0)){d=~~i>>>0;break L}d=0}J[a>>2]=d;a=a+c|0;f=c+f|0;g=g+1|0;if((b|0)!=(g|0)){continue}break}break a}if(!d){break a}l=N[c+24>>2];n=N[c+8>>2];q=N[c+20>>2];r=N[c+4>>2];o=N[c+16>>2];p=N[c>>2];b=0;s=Q(N[c+40>>2]*Q(0));t=Q(N[c+56>>2]*i);v=Q(N[c+36>>2]*Q(0));w=Q(N[c+52>>2]*i);x=Q(N[c+32>>2]*Q(0));u=Q(N[c+48>>2]*i);while(1){i=Q(L[f>>1]);j=Q(L[f+2>>1]);k=Q(t+Q(s+Q(Q(n*i)+Q(l*j))));M:{if(k=Q(0)){c=~~k>>>0;break M}c=0}I[a+4>>1]=c;k=Q(w+Q(v+Q(Q(r*i)+Q(q*j))));N:{if(k=Q(0)){c=~~k>>>0;break N}c=0}I[a+2>>1]=c;i=Q(u+Q(x+Q(Q(p*i)+Q(o*j))));O:{if(i=Q(0)){c=~~i>>>0;break O}c=0}I[a>>1]=c;c=e<<1;a=c+a|0;f=c+f|0;b=b+1|0;if((d|0)!=(b|0)){continue}break}break a}if(!e){break a}b=0;while(1){j=Q(K[f|0]);k=Q(K[f+1|0]);l=Q(Q(N[c+56>>2]*i)+Q(Q(N[c+40>>2]*Q(0))+Q(Q(N[c+8>>2]*j)+Q(N[c+24>>2]*k))));P:{if(l=Q(0)){g=~~l>>>0;break P}g=0}n=N[c+48>>2];q=N[c+32>>2];r=N[c>>2];o=N[c+16>>2];l=N[c+52>>2];p=N[c+36>>2];s=N[c+4>>2];t=N[c+20>>2];H[a+2|0]=g;l=Q(Q(l*i)+Q(Q(p*Q(0))+Q(Q(s*j)+Q(t*k))));Q:{if(l=Q(0)){g=~~l>>>0;break Q}g=0}H[a+1|0]=g;j=Q(Q(n*i)+Q(Q(q*Q(0))+Q(Q(r*j)+Q(o*k))));R:{if(j=Q(0)){g=~~j>>>0;break R}g=0}H[a|0]=g;a=a+d|0;f=d+f|0;b=b+1|0;if((e|0)!=(b|0)){continue}break}}Ui=m- -64|0}function Il(a,b,c){var d=0,e=0,f=0,g=0,h=0,i=0,j=0,k=0,l=0,m=0,n=0;n=Ui-32|0;Ui=n;f=1;g=J[a+52>>2];d=L[g+52>>1]+1|0;I[g+52>>1]=d;if((d&65535)>>>0>=201){Wn(a,20933,0)}a:{b:{c:{d:{e:{f:{g:{h:{i:{j:{k:{l:{m:{n:{d=J[a+16>>2];switch(d-263|0){case 0:break i;case 12:break j;case 6:break k;case 23:break l;case 7:break m;case 21:break d;case 1:case 3:case 4:case 5:case 8:case 9:case 10:case 11:case 13:case 14:case 15:case 17:case 18:case 19:case 20:case 22:break e;case 2:break g;case 16:break h;default:break n}}o:{switch(d-35|0){case 10:f=0;break m;case 0:break o;case 1:case 2:case 3:case 4:case 5:case 6:case 7:case 8:case 9:break e;default:break f}}f=2}tk(a);Il(a,b,8);i=J[a+48>>2];e=Ui-32|0;Ui=e;J[e+24>>2]=-1;J[e+28>>2]=-1;J[e+16>>2]=0;J[e+20>>2]=0;J[e+8>>2]=5;p:{q:{switch(f|0){case 0:if(!(!(J[b>>2]!=5|J[b+16>>2]!=-1)&J[b+20>>2]==-1)){Zn(i,b)}$p(i,18,b,e+8|0);break p;case 1:ln(i,b);r:{s:{t:{switch(J[b>>2]-1|0){case 0:case 2:J[b>>2]=2;break r;case 1:case 3:case 4:J[b>>2]=3;break r;case 9:d=J[b+8>>2];f=J[J[i>>2]+12>>2]+(d<<2)|0;u:{if((d|0)>0){g=f-4|0;d=J[g>>2];if(H[(d&63)+173568|0]<0){break u}}d=J[f>>2];g=f}J[g>>2]=d&-16321|!(d&16320)<<6;break r;case 10:d=J[i+36>>2];f=d+1|0;g=J[i>>2];v:{if((d|0)>>0>=250){qk(J[i+12>>2],4813);g=J[i>>2];d=J[i+36>>2]+1|0}H[g+75|0]=f}J[i+36>>2]=d;vE(i,b,d-1|0);if(J[b>>2]!=12){break s}break;case 11:break t;default:break r}}d=J[b+8>>2];if(d&256|(d|0)>2]=J[i+36>>2]-1}d=El(i,J[b+8>>2]<<23|19,J[J[i+12>>2]+8>>2]);J[b>>2]=11;J[b+8>>2]=d}j=J[b+20>>2];g=J[b+16>>2];J[b+20>>2]=g;J[b+16>>2]=j;if((g|0)!=-1){h=J[J[i>>2]+12>>2];while(1){f=h+(g<<2)|0;w:{if((g|0)>0){d=f-4|0;j=J[d>>2];if(H[(j&63)+173568|0]<0){break w}}j=J[f>>2];d=f}if((j&63)==27){J[d>>2]=j>>>17&32704|j&8372250}d=(J[f>>2]>>>14|0)-131071|0;if((d|0)!=-1){g=(d+g|0)+1|0;if((g|0)!=-1){continue}}break}j=J[b+16>>2]}if((j|0)==-1){break p}i=J[J[i>>2]+12>>2];while(1){f=i+(j<<2)|0;x:{if((j|0)>0){d=f-4|0;g=J[d>>2];if(H[(g&63)+173568|0]<0){break x}}g=J[f>>2];d=f}if((g&63)==27){J[d>>2]=g>>>17&32704|g&8372250}d=(J[f>>2]>>>14|0)-131071|0;if((d|0)==-1){break p}j=(d+j|0)+1|0;if((j|0)!=-1){continue}break};break p;case 2:break q;default:break p}}Zn(i,b);$p(i,20,b,e+8|0)}Ui=e+32|0;break a}J[b+8>>2]=rs(J[a+48>>2],J[a+24>>2]);J[b>>2]=4;J[b+16>>2]=-1;J[b+20>>2]=-1;break c}J[b+8>>2]=0;J[b>>2]=1;J[b+16>>2]=-1;J[b+20>>2]=-1;break c}J[b+8>>2]=0;J[b>>2]=2;J[b+16>>2]=-1;J[b+20>>2]=-1;break c}J[b+8>>2]=0;J[b>>2]=3;J[b+16>>2]=-1;J[b+20>>2]=-1;break c}g=J[a+48>>2];f=J[g>>2];d=K[f+74|0];if(!d){qk(a,45435);f=J[g>>2];d=K[f+74|0]}H[f+74|0]=d&251;J[b+8>>2]=tm(g,37,0,1,0);J[b>>2]=14;J[b+16>>2]=-1;J[b+20>>2]=-1;break c}tk(a);sU(a,b,0,J[a+4>>2]);break a}if((d|0)==123){break b}}aA(a,b);break a}J[b+8>>2]=0;J[b>>2]=5;J[b+16>>2]=-1;J[b+20>>2]=-1;O[b+8>>3]=O[a+24>>3]}tk(a);break a}GS(a,b)}f=0;d=15;y:{z:{A:{B:{C:{D:{E:{F:{G:{H:{I:{J:{K:{L:{M:{N:{O:{g=J[a+16>>2];switch(g-37|0){case 1:case 2:case 3:case 4:case 7:case 9:case 11:case 12:case 13:case 14:case 15:case 16:case 17:case 18:case 19:case 20:case 21:case 22:case 24:case 26:case 27:case 28:case 29:case 30:case 31:case 32:case 33:case 34:case 35:case 36:case 37:case 38:case 39:case 40:case 41:case 42:case 43:case 44:case 45:case 46:case 47:case 48:case 49:case 50:case 51:case 52:case 53:case 54:case 55:case 56:break y;case 6:break z;case 25:break D;case 23:break F;case 57:break J;case 0:break K;case 10:break L;case 5:break M;case 8:break N;default:break O}}switch(g-257|0){case 14:break A;case 0:break B;case 24:break C;case 25:break E;case 23:break G;case 26:break H;case 21:break I;default:break y}}f=1;break z}f=2;break z}f=3;break z}f=4;break z}f=5;break z}f=6;break z}f=7;break z}f=8;break z}f=9;break z}f=10;break z}f=11;break z}f=12;break z}f=13;break z}f=14}while(1){m=(f<<1)+173616|0;if(K[m|0]<=c>>>0){d=f;break y}tk(a);k=J[a+48>>2];P:{Q:{R:{S:{switch(f|0){case 13:ku(k,b);break P;case 14:ln(k,b);T:{U:{V:{switch(J[b>>2]-1|0){case 1:i=J[k+32>>2];J[k+32>>2]=-1;g=El(k,2147450902,J[J[k+12>>2]+8>>2]);if((i|0)==-1){break U}if((g|0)==-1){g=i;break T}l=J[J[k>>2]+12>>2];d=g;while(1){e=d;j=l+(e<<2)|0;h=J[j>>2];d=(h>>>14|0)-131071|0;if((d|0)!=-1){d=(d+e|0)+1|0;if((d|0)!=-1){continue}}break};i=i+(e^-1)|0;d=i>>31;if((d^i)-d>>>0>=131072){qk(J[k+12>>2],56034);h=J[j>>2]}J[j>>2]=(h&16383|i<<14)+2147467264;break U;case 9:g=J[b+8>>2];break U;case 0:case 2:break Q;default:break V}}g=JI(k,b,1)}if((g|0)==-1){break Q}}d=J[b+16>>2];if((d|0)==-1){break R}h=J[J[k>>2]+12>>2];while(1){j=d;i=h+(d<<2)|0;e=J[i>>2];l=(e>>>14|0)-131071|0;if((l|0)!=-1){d=(d+l|0)+1|0;if((d|0)!=-1){continue}}break};g=(j^-1)+g|0;d=g>>31;if((d^g)-d>>>0>=131072){qk(J[k+12>>2],56034);e=J[i>>2]}J[i>>2]=(e&16383|g<<14)+2147467264;break Q;case 6:ln(k,b);W:{if(J[b>>2]!=12){break W}d=J[b+8>>2];if(d&256|(d|0)>2]=J[k+36>>2]-1}d=J[k+36>>2];g=d+1|0;i=J[k>>2];X:{if((d|0)>>0>=250){qk(J[k+12>>2],4813);i=J[k>>2];d=J[k+36>>2]+1|0}H[i+75|0]=g}J[k+36>>2]=d;ys(k,b,d-1|0);break P;case 0:case 1:case 2:case 3:case 4:case 5:if(!(J[b>>2]!=5|J[b+16>>2]!=-1)&J[b+20>>2]==-1){break P}hm(k,b);break P;default:break S}}hm(k,b);break P}J[b+16>>2]=g}e=J[b+20>>2];J[k+28>>2]=J[k+24>>2];Y:{if((e|0)==-1){break Y}d=J[k+32>>2];if((d|0)!=-1){h=J[J[k>>2]+12>>2];while(1){i=d;g=h+(d<<2)|0;j=J[g>>2];l=(j>>>14|0)-131071|0;if((l|0)!=-1){d=(d+l|0)+1|0;if((d|0)!=-1){continue}}break}i=e+(i^-1)|0;d=i>>31;if((d^i)-d>>>0>=131072){qk(J[k+12>>2],56034);j=J[g>>2]}J[g>>2]=(j&16383|i<<14)+2147467264;break Y}J[k+32>>2]=e}J[b+20>>2]=-1}h=n+8|0;i=Il(a,h,K[m+1|0]);e=J[a+48>>2];Z:{_:{$:{aa:{ba:{ca:{da:{switch(f|0){case 13:ln(e,h);k=J[b+20>>2];if((k|0)==-1){break $}d=J[h+20>>2];if((d|0)==-1){break ca}m=J[J[e>>2]+12>>2];while(1){f=d;g=m+(d<<2)|0;j=J[g>>2];l=(j>>>14|0)-131071|0;if((l|0)!=-1){d=(d+l|0)+1|0;if((d|0)!=-1){continue}}break};f=k+(f^-1)|0;d=f>>31;if((d^f)-d>>>0>=131072){qk(J[e+12>>2],56034);j=J[g>>2]}J[g>>2]=(j&16383|f<<14)+2147467264;break $;case 14:ln(e,h);k=J[b+16>>2];if((k|0)==-1){break aa}d=J[h+16>>2];if((d|0)==-1){break ba}m=J[J[e>>2]+12>>2];while(1){f=d;g=m+(d<<2)|0;j=J[g>>2];l=(j>>>14|0)-131071|0;if((l|0)!=-1){d=(d+l|0)+1|0;if((d|0)!=-1){continue}}break};f=k+(f^-1)|0;d=f>>31;if((d^f)-d>>>0>=131072){qk(J[e+12>>2],56034);j=J[g>>2]}J[g>>2]=(j&16383|f<<14)+2147467264;break aa;case 6:ea:{if(J[h+16>>2]!=J[h+20>>2]){Zn(e,h);break ea}ln(e,h)}fa:{if(J[h>>2]!=11){break fa}d=J[J[e>>2]+12>>2];f=J[h+8>>2];j=J[d+(f<<2)>>2];if((j&63)!=21){break fa}ga:{if(J[b>>2]!=12){break ga}g=J[b+8>>2];if(g&256|(g|0)>2]=J[e+36>>2]-1;f=J[h+8>>2];j=J[d+(f<<2)>>2]}J[d+(f<<2)>>2]=j&8388607|J[b+8>>2]<<23;J[b>>2]=11;J[b+8>>2]=J[h+8>>2];break Z}ln(e,h);ha:{if(J[h>>2]!=12){break ha}d=J[h+8>>2];if(d&256|(d|0)>2]=J[e+36>>2]-1}d=J[e+36>>2];g=d+1|0;j=J[e>>2];ia:{if((d|0)>>0>=250){qk(J[e+12>>2],4813);j=J[e>>2];d=J[e+36>>2]+1|0}H[j+75|0]=g}J[e+36>>2]=d;ys(e,h,d-1|0);$p(e,21,b,h);break Z;case 0:$p(e,12,b,h);break Z;case 1:$p(e,13,b,h);break Z;case 2:$p(e,14,b,h);break Z;case 3:$p(e,15,b,h);break Z;case 4:$p(e,16,b,h);break Z;case 5:$p(e,17,b,h);break Z;case 8:d=hm(e,b);g=hm(e,h);ja:{if(J[h>>2]!=12){break ja}f=J[h+8>>2];if(f&256|(f|0)>2]=J[e+36>>2]-1}ka:{if(J[b>>2]!=12){break ka}f=J[b+8>>2];if(f&256|(f|0)>2]=J[e+36>>2]-1}d=Oq(e,23,1,d,g);break _;case 7:d=hm(e,b);g=hm(e,h);la:{if(J[h>>2]!=12){break la}f=J[h+8>>2];if(f&256|(f|0)>2]=J[e+36>>2]-1}ma:{if(J[b>>2]!=12){break ma}f=J[b+8>>2];if(f&256|(f|0)>2]=J[e+36>>2]-1}d=Oq(e,23,0,d,g);break _;case 9:d=hm(e,b);g=hm(e,h);na:{if(J[h>>2]!=12){break na}f=J[h+8>>2];if(f&256|(f|0)>2]=J[e+36>>2]-1}oa:{if(J[b>>2]!=12){break oa}f=J[b+8>>2];if(f&256|(f|0)>2]=J[e+36>>2]-1}d=Oq(e,24,1,d,g);break _;case 10:d=hm(e,b);g=hm(e,h);pa:{if(J[h>>2]!=12){break pa}f=J[h+8>>2];if(f&256|(f|0)>2]=J[e+36>>2]-1}qa:{if(J[b>>2]!=12){break qa}f=J[b+8>>2];if(f&256|(f|0)>2]=J[e+36>>2]-1}d=Oq(e,25,1,d,g);break _;case 11:d=hm(e,b);g=hm(e,h);ra:{if(J[h>>2]!=12){break ra}f=J[h+8>>2];if(f&256|(f|0)>2]=J[e+36>>2]-1}sa:{if(J[b>>2]!=12){break sa}f=J[b+8>>2];if(f&256|(f|0)>2]=J[e+36>>2]-1}d=Oq(e,24,1,g,d);break _;case 12:break da;default:break Z}}d=hm(e,b);g=hm(e,h);ta:{if(J[h>>2]!=12){break ta}f=J[h+8>>2];if(f&256|(f|0)>2]=J[e+36>>2]-1}ua:{if(J[b>>2]!=12){break ua}f=J[b+8>>2];if(f&256|(f|0)>2]=J[e+36>>2]-1}d=Oq(e,25,1,g,d);J[b>>2]=10;J[b+8>>2]=d;break Z}J[h+20>>2]=k;break $}J[h+16>>2]=k}d=J[h+4>>2];J[b>>2]=J[h>>2];J[b+4>>2]=d;d=J[h+20>>2];J[b+16>>2]=J[h+16>>2];J[b+20>>2]=d;d=J[h+12>>2];J[b+8>>2]=J[h+8>>2];J[b+12>>2]=d;break Z}d=J[h+4>>2];J[b>>2]=J[h>>2];J[b+4>>2]=d;d=J[h+20>>2];J[b+16>>2]=J[h+16>>2];J[b+20>>2]=d;d=J[h+12>>2];J[b+8>>2]=J[h+8>>2];J[b+12>>2]=d;break Z}J[b>>2]=10;J[b+8>>2]=d}d=15;f=i;if((f|0)!=15){continue}break}}a=J[a+52>>2];I[a+52>>1]=L[a+52>>1]-1;Ui=n+32|0;return d}function fra(a,b,c,d,e,f,g,h,i,j,k){a=a|0;b=b|0;c=c|0;d=d|0;e=e|0;f=f|0;g=g|0;h=h|0;i=i|0;j=j|0;k=k|0;var l=Q(0),m=Q(0),n=Q(0),o=0,p=0,q=0,r=Q(0),s=Q(0),t=0,u=Q(0),v=Q(0),w=Q(0),x=Q(0),y=0,z=Q(0),A=0,B=0,C=0,D=0,E=Q(0),F=Q(0),G=Q(0),I=Q(0),L=0,O=0,R=Q(0),S=Q(0),T=Q(0),U=Q(0),V=Q(0),W=0,X=Q(0),Z=0,_=0,$=0,aa=0;a=Ui-80|0;Ui=a;m=N[f+48>>2];l=N[e+48>>2];n=N[f+52>>2];r=N[e+52>>2];v=N[f+56>>2];u=N[e+56>>2];J[a+76>>2]=0;N[a+72>>2]=u-v;N[a+68>>2]=r-n;N[a+64>>2]=l-m;p=Ui-10336|0;Ui=p;q=e;k=a+8|0;e=p+10208|0;$I(c,q,d,f,k,e,1);b=p+9964|0;J[b>>2]=0;J[b+4>>2]=0;J[p+9956>>2]=0;J[p+9960>>2]=0;J[p+10192>>2]=0;J[p+10196>>2]=0;J[p+10204>>2]=2;J[p+9972>>2]=0;Z=a- -64|0;b=Z;m=N[b>>2];l=N[b+4>>2];n=N[b+8>>2];J[p+32>>2]=0;N[p+28>>2]=-n;N[p+24>>2]=-l;N[p+20>>2]=-m;a:{b:{c:{switch(aJ(p+9828|0,e,p+20|0)-1|0){case 0:J[p+68>>2]=0;J[p+72>>2]=0;J[p+76>>2]=0;J[p+9808>>2]=0;J[p+20>>2]=9;J[p+9812>>2]=0;J[p+9816>>2]=0;J[p+60>>2]=0;J[p+64>>2]=0;o=p+2128|0;e=0;while(1){j=o+P(127-e|0,60)|0;J[j+52>>2]=C;J[j+48>>2]=0;if(C){J[C+48>>2]=j}J[p+9820>>2]=j;C=o+P(126-e|0,60)|0;J[C+52>>2]=j;J[C+48>>2]=0;J[j+48>>2]=C;J[p+9820>>2]=C;e=e+2|0;if((e|0)!=128){continue}break};J[p+9824>>2]=128;m=N[b>>2];l=N[b+4>>2];n=N[b+8>>2];C=0;J[p+16>>2]=0;N[p+12>>2]=-n;N[p+8>>2]=-l;N[p+4>>2]=-m;o=p+20|0;A=Ui-32|0;Ui=A;d:{e:{W=p+9828|0;t=J[W+372>>2];if(M[t+32>>2]<2){break e}if(!uo(W)){break e}e=J[o+9792>>2];if(e){y=J[o+9804>>2];b=J[o+9796>>2];while(1){j=J[e+48>>2];B=J[e+52>>2];if(B){J[B+48>>2]=j}if(j){J[j+52>>2]=J[e+52>>2]}if(J[o+9792>>2]==(e|0)){J[o+9792>>2]=J[e+52>>2]}J[e+48>>2]=0;j=J[o+9800>>2];J[e+52>>2]=j;if(j){J[j+48>>2]=e}b=b-1|0;J[o+9800>>2]=e;y=y+1|0;e=J[o+9792>>2];if(e){continue}break}J[o+9804>>2]=y;J[o+9796>>2]=b}J[o+9788>>2]=0;J[o>>2]=0;j=J[t>>2];b=J[t+12>>2];m=N[b+16>>2];r=Q(N[j+16>>2]-m);e=J[t+4>>2];l=N[b+20>>2];v=Q(N[e+20>>2]-l);y=J[t+8>>2];n=N[b+24>>2];u=Q(N[y+24>>2]-n);s=Q(N[j+20>>2]-l);w=Q(N[e+24>>2]-n);x=Q(N[y+16>>2]-m);n=Q(N[j+24>>2]-n);m=Q(N[e+16>>2]-m);l=Q(N[y+20>>2]-l);f:{if(!(Q(Q(Q(Q(r*v)*u)+Q(Q(Q(Q(Q(s*w)*x)+Q(Q(n*m)*l))-Q(Q(r*w)*l))-Q(Q(s*m)*u)))-Q(Q(n*v)*x))>2]=j;J[t>>2]=e;J[t+16>>2]=pxa(J[t+16>>2],J[t+20>>2],32);J[t+20>>2]=Yi;b=j}j=pu(o,e,b,y,1);y=pu(o,J[t+4>>2],J[t>>2],J[t+12>>2],1);B=pu(o,J[t+8>>2],J[t+4>>2],J[t+12>>2],1);D=pu(o,J[t>>2],J[t+8>>2],J[t+12>>2],1);if(J[o+9796>>2]!=4){break e}b=J[o+9792>>2];e=J[b+52>>2];if(e){l=N[b+20>>2];m=N[b+16>>2];n=Q(m*m);while(1){m=N[e+16>>2];m=Q(m*m);r=N[e+20>>2];t=m=l;b=t?e:b;l=t?r:l;n=t?m:n;e=J[e+52>>2];if(e){continue}break}}t=J[b+32>>2];L=J[b+28>>2];O=J[b+24>>2];m=N[b+20>>2];r=N[b+16>>2];x=N[b+12>>2];v=N[b+8>>2];u=N[b+4>>2];s=N[b>>2];J[j+36>>2]=y;H[j+56|0]=0;J[y+36>>2]=j;H[y+56|0]=0;J[j+40>>2]=B;H[j+57|0]=0;J[B+36>>2]=j;H[B+56|0]=1;J[j+44>>2]=D;H[j+58|0]=0;J[D+36>>2]=j;H[D+56|0]=2;J[y+40>>2]=D;H[y+57|0]=2;J[D+44>>2]=y;H[D+58|0]=1;J[y+44>>2]=B;H[y+58|0]=1;J[B+40>>2]=y;H[B+57|0]=2;H[B+58|0]=1;J[B+44>>2]=D;J[D+40>>2]=B;H[D+57|0]=2;J[o>>2]=0;B=o+60|0;y=0;while(1){g:{h:{e=J[o+9788>>2];if(e>>>0<=63){J[A+12>>2]=0;J[A+4>>2]=0;J[A+8>>2]=0;J[o+9788>>2]=e+1;y=y+1|0;H[b+59|0]=y;l=N[b+8>>2];n=N[b>>2];w=N[b+4>>2];j=B+(e<<5)|0;J[j+12>>2]=0;E=l;l=Q(Q(1)/Q(Y(Q(Q(l*l)+Q(Q(n*n)+Q(w*w))))));N[j+8>>2]=E*l;N[j+4>>2]=w*l;N[j>>2]=n*l;Jn(A+16|0,W,j);e=J[A+28>>2];J[j+24>>2]=J[A+24>>2];J[j+28>>2]=e;e=J[A+20>>2];J[j+16>>2]=J[A+16>>2];J[j+20>>2]=e;if(!(Q(Q(Q(N[b+8>>2]*N[j+24>>2])+Q(Q(N[b>>2]*N[j+16>>2])+Q(N[b+4>>2]*N[j+20>>2])))-N[b+16>>2])>Q(9999999747378752e-20))){J[o>>2]=7;break g}D=b+56|0;$=b+36|0;e=0;while(1){_=hB(o,y,j,J[(e<<2)+$>>2],K[e+D|0],A+4|0);if(!_){break h}aa=e>>>0<2;e=e+1|0;if(aa){continue}break}break h}J[o>>2]=6;break g}if(!(M[A+12>>2]>2&_)){J[o>>2]=4;break g}e=J[A+4>>2];j=J[A+8>>2];J[e+40>>2]=j;H[e+57|0]=2;J[j+44>>2]=e;H[j+58|0]=1;e=J[b+48>>2];j=J[b+52>>2];if(j){J[j+48>>2]=e}if(e){J[e+52>>2]=J[b+52>>2]}if(J[o+9792>>2]==(b|0)){J[o+9792>>2]=J[b+52>>2]}J[o+9796>>2]=J[o+9796>>2]-1;J[b+48>>2]=0;e=J[o+9800>>2];J[b+52>>2]=e;if(e){J[e+48>>2]=b}J[o+9800>>2]=b;J[o+9804>>2]=J[o+9804>>2]+1;b=J[o+9792>>2];e=J[b+52>>2];if(e){l=N[b+20>>2];n=N[b+16>>2];n=Q(n*n);while(1){w=N[e+16>>2];w=Q(w*w);z=N[e+20>>2];j=w=l;b=j?e:b;l=j?z:l;n=j?w:n;e=J[e+52>>2];if(e){continue}break}}l=N[b+20>>2];if(l>=m){t=J[b+32>>2];L=J[b+28>>2];O=J[b+24>>2];r=N[b+16>>2];x=N[b+12>>2];v=N[b+8>>2];u=N[b+4>>2];s=N[b>>2];m=l}if((y|0)!=255){continue}}break}N[o+56>>2]=r;N[o+52>>2]=x;N[o+48>>2]=v;N[o+44>>2]=u;N[o+40>>2]=s;J[o+36>>2]=3;J[o+12>>2]=t;J[o+8>>2]=L;J[o+4>>2]=O;m=Q(s*r);s=Q(N[L+16>>2]-m);l=Q(u*r);u=Q(N[t+20>>2]-l);n=Q(N[L+20>>2]-l);w=Q(N[t+16>>2]-m);x=Q(Q(s*u)-Q(n*w));E=n;n=Q(v*r);r=Q(N[t+24>>2]-n);v=Q(N[L+24>>2]-n);u=Q(Q(E*r)-Q(v*u));r=Q(Q(v*w)-Q(s*r));r=Q(Y(Q(Q(x*x)+Q(Q(u*u)+Q(r*r)))));N[o+20>>2]=r;v=Q(N[t+16>>2]-m);u=Q(N[O+20>>2]-l);s=Q(N[t+20>>2]-l);w=Q(N[O+16>>2]-m);x=Q(Q(v*u)-Q(s*w));z=Q(x*x);E=s;s=Q(N[O+24>>2]-n);x=Q(N[t+24>>2]-n);u=Q(Q(E*s)-Q(x*u));v=Q(Q(x*w)-Q(v*s));v=Q(Y(Q(z+Q(Q(u*u)+Q(v*v)))));N[o+24>>2]=v;u=Q(N[O+16>>2]-m);s=Q(N[L+20>>2]-l);l=Q(N[O+20>>2]-l);m=Q(N[L+16>>2]-m);w=Q(Q(u*s)-Q(l*m));E=l;l=Q(N[L+24>>2]-n);n=Q(N[O+24>>2]-n);s=Q(Q(E*l)-Q(n*s));m=Q(Q(n*m)-Q(u*l));l=Q(Y(Q(Q(w*w)+Q(Q(s*s)+Q(m*m)))));m=Q(l+Q(r+v));N[o+28>>2]=l/m;N[o+24>>2]=v/m;N[o+20>>2]=r/m;e=J[o>>2];break d}e=8;J[o>>2]=8;l=Q(0);n=Q(1);m=Q(0);r=N[p+12>>2];v=N[p+4>>2];u=N[p+8>>2];s=Q(Q(r*r)+Q(Q(v*v)+Q(u*u)));if(s>Q(0)){n=Q(Q(1)/Q(Y(s)));m=Q(n*Q(-r));l=Q(n*Q(-u));n=Q(n*Q(-v))}J[o+52>>2]=0;J[o+56>>2]=0;N[o+48>>2]=m;N[o+44>>2]=l;N[o+40>>2]=n;J[o+36>>2]=1;b=J[t>>2];J[o+20>>2]=1065353216;J[o+4>>2]=b}Ui=A+32|0;if((e|0)==9){break b}i:{if(!J[p+56>>2]){m=Q(0);l=Q(0);n=Q(0);break i}e=p+40|0;j=p+24|0;n=Q(0);l=Q(0);m=Q(0);while(1){b=J[p+10328>>2];o=p+4|0;t=J[p+10332>>2];A=J[p+10208>>2]+(t>>1)|0;y=C<<2;B=J[y+j>>2];if(t&1){b=J[b+J[A>>2]>>2]}Zi[b|0](o,A,B);r=N[e+y>>2];n=Q(n+Q(r*N[p+12>>2]));l=Q(l+Q(r*N[p+8>>2]));m=Q(m+Q(N[p+4>>2]*r));C=C+1|0;if(C>>>0>2]){continue}break}}C=1;J[k>>2]=1;r=N[q+48>>2];v=N[q+8>>2];u=N[q>>2];s=N[q+4>>2];w=N[q+52>>2];x=N[q+24>>2];z=N[q+16>>2];F=N[q+20>>2];G=N[q+56>>2];I=N[q+40>>2];R=N[q+32>>2];S=N[q+36>>2];J[k+16>>2]=0;N[k+12>>2]=G+Q(Q(I*n)+Q(Q(R*m)+Q(l*S)));N[k+8>>2]=w+Q(Q(x*n)+Q(Q(z*m)+Q(l*F)));N[k+4>>2]=r+Q(Q(v*n)+Q(Q(u*m)+Q(l*s)));w=N[q+48>>2];x=N[q+8>>2];z=N[q>>2];F=N[q+4>>2];G=N[q+52>>2];I=N[q+24>>2];R=N[q+16>>2];S=N[q+20>>2];T=N[q+56>>2];U=N[q+40>>2];V=N[q+32>>2];X=N[q+36>>2];v=N[p+60>>2];u=N[p+64>>2];s=N[p+68>>2];r=N[p+76>>2];J[k+48>>2]=0;J[k+32>>2]=0;N[k+52>>2]=-r;N[k+44>>2]=-s;N[k+40>>2]=-u;N[k+36>>2]=-v;n=Q(n-Q(r*s));m=Q(m-Q(v*r));l=Q(l-Q(r*u));N[k+28>>2]=T+Q(Q(U*n)+Q(Q(V*m)+Q(X*l)));N[k+24>>2]=G+Q(Q(I*n)+Q(Q(R*m)+Q(l*S)));N[k+20>>2]=w+Q(Q(x*n)+Q(Q(z*m)+Q(l*F)));break a;case 1:break c;default:break a}}J[k>>2]=2;break a}J[k>>2]=3}Ui=p+10336|0;j:{if(!C){m=Q(0);l=Q(0);n=Q(0);r=Q(0);v=Q(0);u=Q(0);e=Ui-544|0;Ui=e;b=e+384|0;$I(c,q,d,f,k,b,0);J[e+140>>2]=0;J[e+144>>2]=0;J[e+132>>2]=0;J[e+136>>2]=0;J[e+368>>2]=0;J[e+372>>2]=0;J[e+380>>2]=2;J[e+148>>2]=0;k:{l:{f=aJ(e+4|0,b,Z);if(!f){c=J[e+376>>2];if(!J[c+32>>2]){break l}d=0;while(1){b=c;c=d<<2;j=b+c|0;s=N[j+16>>2];b=J[e+504>>2];o=e+528|0;p=J[e+508>>2];t=J[e+384>>2]+(p>>1)|0;j=J[j>>2];if(p&1){b=J[b+J[t>>2]>>2]}Zi[b|0](o,t,j);j=J[e+508>>2];b=J[e+388>>2]+(j>>1)|0;F=Q(s*N[e+536>>2]);G=Q(s*N[e+532>>2]);I=Q(s*N[e+528>>2]);c=J[c+J[e+376>>2]>>2];w=Q(-N[c+8>>2]);x=Q(-N[c+4>>2]);z=Q(-N[c>>2]);c=J[e+504>>2];c=j&1?J[J[b>>2]+c>>2]:c;m=Q(m+F);n=Q(n+G);l=Q(l+I);J[e+524>>2]=0;N[e+520>>2]=Q(N[e+432>>2]*w)+Q(Q(N[e+424>>2]*z)+Q(N[e+428>>2]*x));N[e+516>>2]=Q(N[e+416>>2]*w)+Q(Q(N[e+408>>2]*z)+Q(N[e+412>>2]*x));N[e+512>>2]=Q(N[e+400>>2]*w)+Q(Q(N[e+392>>2]*z)+Q(N[e+396>>2]*x));Zi[c|0](e+528|0,b,e+512|0);w=N[e+536>>2];x=N[e+528>>2];z=N[e+532>>2];u=Q(u+Q(s*Q(N[e+496>>2]+Q(Q(N[e+480>>2]*w)+Q(Q(N[e+472>>2]*x)+Q(z*N[e+476>>2]))))));v=Q(v+Q(s*Q(N[e+492>>2]+Q(Q(N[e+464>>2]*w)+Q(Q(N[e+456>>2]*x)+Q(z*N[e+460>>2]))))));r=Q(r+Q(s*Q(Q(Q(N[e+448>>2]*w)+Q(Q(N[e+440>>2]*x)+Q(N[e+444>>2]*z)))+N[e+488>>2])));d=d+1|0;c=J[e+376>>2];if(d>>>0>2]){continue}break}break l}J[k>>2]=(f|0)==1?1:2;break k}s=N[q+48>>2];w=N[q+8>>2];x=N[q>>2];z=N[q+4>>2];F=N[q+52>>2];G=N[q+24>>2];I=N[q+16>>2];R=N[q+20>>2];S=N[q+56>>2];T=N[q+40>>2];U=N[q+32>>2];V=N[q+36>>2];J[k+16>>2]=0;N[k+12>>2]=S+Q(Q(T*m)+Q(Q(U*l)+Q(n*V)));N[k+8>>2]=F+Q(Q(G*m)+Q(Q(I*l)+Q(n*R)));N[k+4>>2]=s+Q(Q(w*m)+Q(Q(x*l)+Q(n*z)));w=N[q+48>>2];x=N[q+8>>2];z=N[q>>2];F=N[q+4>>2];G=N[q+52>>2];I=N[q+24>>2];R=N[q+16>>2];S=N[q+20>>2];T=N[q+56>>2];U=N[q+40>>2];V=N[q+32>>2];X=N[q+36>>2];m=Q(m-u);l=Q(l-r);n=Q(n-v);s=Q(Y(Q(Q(m*m)+Q(Q(l*l)+Q(n*n)))));N[k+52>>2]=s;J[k+48>>2]=0;J[k+32>>2]=0;E=m;m=s>Q(9999999747378752e-20)?Q(Q(1)/s):Q(1);N[k+44>>2]=E*m;N[k+40>>2]=n*m;N[k+36>>2]=l*m;N[k+28>>2]=T+Q(Q(U*u)+Q(Q(V*r)+Q(v*X)));N[k+24>>2]=G+Q(Q(I*u)+Q(Q(R*r)+Q(v*S)));N[k+20>>2]=w+Q(Q(x*u)+Q(Q(z*r)+Q(v*F)))}Ui=e+544|0;if(f){break j}}b=J[a+16>>2];J[h>>2]=J[a+12>>2];J[h+4>>2]=b;b=J[a+24>>2];J[h+8>>2]=J[a+20>>2];J[h+12>>2]=b;b=J[a+40>>2];J[i+8>>2]=J[a+36>>2];J[i+12>>2]=b;b=J[a+32>>2];J[i>>2]=J[a+28>>2];J[i+4>>2]=b;b=J[a+56>>2];J[g+8>>2]=J[a+52>>2];J[g+12>>2]=b;b=J[a+48>>2];J[g>>2]=J[a+44>>2];J[g+4>>2]=b}Ui=a+80|0;return C|0}function xsa(a,b,c,d,e){a=a|0;b=b|0;c=c|0;d=d|0;e=e|0;var f=0,g=Q(0),h=Q(0),i=Q(0),j=Q(0),k=0,l=0,m=0,n=0,o=0,p=Q(0),q=Q(0),r=Q(0),s=Q(0),t=Q(0),u=Q(0),v=Q(0),w=Q(0),x=Q(0),y=Q(0),z=Q(0),A=Q(0),B=Q(0),C=Q(0),D=Q(0),E=Q(0),F=Q(0),G=Q(0),I=Q(0),L=Q(0),M=Q(0),O=Q(0),P=0,S=0,T=0,U=0,V=0,W=0,X=Q(0),Z=0,_=Q(0),$=Q(0),aa=Q(0),ba=Q(0);f=Ui-656|0;Ui=f;o=J[a+20>>2];if(!o){o=J[a+4>>2];o=Zi[J[J[o>>2]+12>>2]](o,b,c)|0;H[a+16|0]=1;J[a+20>>2]=o}J[e+4>>2]=o;n=J[b+192>>2];o=J[c+192>>2];a:{b:{if(!(J[n+4>>2]!=10|J[o+4>>2]!=10)){Zi[J[J[n>>2]+28>>2]](n)|0;Zi[J[J[o>>2]+28>>2]](o)|0;q=N[J[a+20>>2]+1120>>2];d=J[n+52>>2];m=d<<2;a=m+b|0;u=N[a+36>>2];I=N[c+60>>2];p=Q(I-N[b+60>>2]);x=N[a+4>>2];L=N[c+52>>2];A=Q(L-N[b+52>>2]);s=N[a+20>>2];M=N[c+56>>2];C=Q(M-N[b+56>>2]);B=Q(Q(u*p)+Q(Q(x*A)+Q(s*C)));a=c;b=J[o+52>>2];c=b<<2;a=a+c|0;D=N[a+36>>2];E=N[a+4>>2];F=N[a+20>>2];j=Q(-Q(Q(D*p)+Q(Q(E*A)+Q(F*C))));a=o+28|0;i=N[a+c>>2];c=n+28|0;r=N[c+m>>2];a=a+((b+2|0)%3<<2)|0;b=c+((d+2|0)%3<<2)|0;v=Q(Q(u*D)+Q(Q(x*E)+Q(s*F)));g=Q(Q(1)-Q(v*v));c:{if(g==Q(0)){break c}h=Q(-r);g=Q(Q(Q(j*v)+B)/g);if(h>g){break c}h=g;if(!(r>2];O=N[b>>2];g=Q(Q(h*v)+j);j=Q(-i);d:{e:{if(gi){g=j;break d}if(!(i>r)){g=j;h=i;break d}g=j;break e}if(!(g>i)){break d}h=Q(-r);j=Q(Q(i*v)+B);if(h>j){g=i;break d}if(!(j>r)){g=i;h=j;break d}g=i}h=r}v=Q(D*g);i=Q(v+Q(p-Q(u*h)));B=Q(E*g);j=Q(B+Q(A-Q(x*h)));p=Q(F*g);g=Q(p+Q(C-Q(s*h)));h=Q(Q(i*i)+Q(Q(j*j)+Q(g*g)));A=Q(Y(h));r=Q(Q(A-O)-G);if(!(r>q)){f:{if(h<=Q(14210854715202004e-30)){if(Q(R(u))>Q(.7071067690849304)){J[f+12>>2]=0;g=Q(Q(1)/Q(Y(Q(Q(s*s)+Q(u*u)))));h=Q(s*g);N[f+20>>2]=h;g=Q(g*Q(-u));N[f+16>>2]=g;i=Q(0);break f}J[f+20>>2]=0;h=Q(Q(1)/Q(Y(Q(Q(x*x)+Q(s*s)))));g=Q(x*h);N[f+16>>2]=g;i=Q(h*Q(-s));N[f+12>>2]=i;h=Q(0);break f}J[f+24>>2]=0;h=i;i=Q(Q(-1)/A);h=Q(h*i);N[f+20>>2]=h;g=Q(g*i);N[f+16>>2]=g;i=Q(j*i);N[f+12>>2]=i}J[f+532>>2]=0;N[f+528>>2]=Q(I+v)+Q(G*h);N[f+524>>2]=Q(M+p)+Q(G*g);N[f+520>>2]=Q(L+B)+Q(G*i)}if(r>2]+16>>2]](e,f+12|0,f+520|0,r)}c=J[e+4>>2];if(J[c+1116>>2]){break b}break a}Z=az(f+444|0,n,o,J[a+8>>2],J[a+12>>2]);J[Z+32>>2]=o;J[Z+28>>2]=n;h=Q(Q(Q(Zi[J[J[n>>2]+44>>2]](n))+Q(Zi[J[J[o>>2]+44>>2]](o)))+N[J[a+20>>2]+1120>>2]);N[f+648>>2]=h*h;J[f+652>>2]=J[d+40>>2];m=J[b+16>>2];J[f+528>>2]=J[b+12>>2];J[f+532>>2]=m;m=J[b+8>>2];J[f+520>>2]=J[b+4>>2];J[f+524>>2]=m;m=J[b+32>>2];J[f+544>>2]=J[b+28>>2];J[f+548>>2]=m;m=J[b+24>>2];J[f+536>>2]=J[b+20>>2];J[f+540>>2]=m;m=J[b+48>>2];J[f+560>>2]=J[b+44>>2];J[f+564>>2]=m;m=J[b+40>>2];J[f+552>>2]=J[b+36>>2];J[f+556>>2]=m;m=J[b+64>>2];J[f+576>>2]=J[b+60>>2];J[f+580>>2]=m;m=J[b+56>>2];J[f+568>>2]=J[b+52>>2];J[f+572>>2]=m;m=J[c+16>>2];J[f+592>>2]=J[c+12>>2];J[f+596>>2]=m;m=J[c+8>>2];J[f+584>>2]=J[c+4>>2];J[f+588>>2]=m;m=J[c+32>>2];J[f+608>>2]=J[c+28>>2];J[f+612>>2]=m;m=J[c+24>>2];J[f+600>>2]=J[c+20>>2];J[f+604>>2]=m;m=J[c+48>>2];J[f+624>>2]=J[c+44>>2];J[f+628>>2]=m;m=J[c+40>>2];J[f+616>>2]=J[c+36>>2];J[f+620>>2]=m;m=J[c+64>>2];J[f+640>>2]=J[c+60>>2];J[f+644>>2]=m;m=J[c+56>>2];J[f+632>>2]=J[c+52>>2];J[f+636>>2]=m;Rq(Z,f+520|0,e,J[d+20>>2]);g:{if(!J[a+28>>2]|J[J[e+4>>2]+1116>>2]>=J[a+32>>2]){break g}m=f+632|0;P=f+616|0;S=f+600|0;T=f+584|0;U=f+568|0;V=f+552|0;W=f+536|0;g=N[Z+12>>2];i=N[Z+4>>2];j=N[Z+8>>2];h=Q(Q(1)/Q(Y(Q(Q(g*g)+Q(Q(i*i)+Q(j*j))))));r=Q(j*h);G=Q(i*h);B=Q(g*h);h:{if(Q(R(B))>Q(.7071067690849304)){g=Q(Q(1)/Q(Y(Q(Q(r*r)+Q(B*B)))));h=Q(r*g);i=Q(g*Q(-B));g=Q(0);break h}g=Q(Q(1)/Q(Y(Q(Q(G*G)+Q(r*r)))));i=Q(G*g);h=Q(0);g=Q(g*Q(-r))}j=Q(Zi[J[J[n>>2]+16>>2]](n));s=Q(Zi[J[J[o>>2]+16>>2]](o));u=N[61732];o=j>2];J[f+384>>2]=J[n+8>>2];J[f+388>>2]=k;k=J[n+4>>2];J[f+376>>2]=J[n>>2];J[f+380>>2]=k;n=o?W:S;k=J[n+12>>2];J[f+400>>2]=J[n+8>>2];J[f+404>>2]=k;k=J[n+4>>2];J[f+392>>2]=J[n>>2];J[f+396>>2]=k;n=o?V:P;k=J[n+12>>2];J[f+416>>2]=J[n+8>>2];J[f+420>>2]=k;k=J[n+4>>2];J[f+408>>2]=J[n>>2];J[f+412>>2]=k;n=o?U:m;k=J[n+12>>2];J[f+432>>2]=J[n+8>>2];J[f+436>>2]=k;k=J[n+4>>2];J[f+424>>2]=J[n>>2];J[f+428>>2]=k;k=J[a+28>>2];if((k|0)<=0){break g}j=Q(u/(o?j:s));j=Q((j>Q(.39269909262657166)?Q(.39269909262657166):j)*Q(.5));u=Hj(j);s=Rj(j);j=Q(Q(h*h)+Q(Q(g*g)+Q(i*i)));if(!(j>Q(1.1920928955078125e-7))){break g}p=h;h=Q(u/Q(Y(j)));u=Q(p*h);x=Q(i*h);v=Q(g*h);ba=Q(Y(Q(Q(B*B)+Q(Q(G*G)+Q(r*r)))));n=0;while(1){j=Q(Q(Q(Q(6.2831854820251465)/Q(k|0))*Q(n>>>0))*Q(.5));i=Q(Hj(j)/ba);h=Q(B*i);g=Q(r*i);i=Q(G*i);j=Rj(j);i:{if(!o){k=J[b+16>>2];J[f+528>>2]=J[b+12>>2];J[f+532>>2]=k;k=J[b+8>>2];J[f+520>>2]=J[b+4>>2];J[f+524>>2]=k;k=J[b+32>>2];J[W+8>>2]=J[b+28>>2];J[W+12>>2]=k;k=J[b+24>>2];J[W>>2]=J[b+20>>2];J[W+4>>2]=k;k=J[b+48>>2];J[V+8>>2]=J[b+44>>2];J[V+12>>2]=k;k=J[b+40>>2];J[V>>2]=J[b+36>>2];J[V+4>>2]=k;k=J[b+64>>2];J[U+8>>2]=J[b+60>>2];J[U+12>>2]=k;k=J[b+56>>2];J[U>>2]=J[b+52>>2];J[U+4>>2]=k;A=N[c+36>>2];C=N[c+4>>2];D=N[c+20>>2];E=N[c+40>>2];F=N[c+8>>2];I=N[c+24>>2];L=N[c+44>>2];M=N[c+12>>2];O=N[c+28>>2];J[f+628>>2]=0;J[f+612>>2]=0;J[f+596>>2]=0;w=Q(Q(i*u)+Q(Q(Q(j*x)-Q(s*g))-Q(h*v)));t=Q(Q(h*u)+Q(Q(g*x)+Q(Q(j*s)+Q(v*i))));y=Q(Q(h*x)+Q(Q(Q(j*v)-Q(s*i))-Q(g*u)));z=Q(Q(g*v)+Q(Q(Q(j*u)-Q(s*h))-Q(i*x)));q=Q(Q(Q(w*h)+Q(Q(t*i)+Q(j*y)))-Q(z*g));p=Q(Q(Q(Q(t*j)-Q(y*i))-Q(w*g))-Q(z*h));X=Q(Q(Q(y*g)+Q(Q(t*h)+Q(j*z)))-Q(w*i));h=Q(Q(Q(z*i)+Q(Q(t*g)+Q(j*w)))-Q(y*h));g=Q(Q(2)/Q(Q(p*p)+Q(Q(X*X)+Q(Q(q*q)+Q(h*h)))));t=Q(q*g);y=Q(q*t);i=Q(h*g);z=Q(h*i);j=Q(Q(1)-Q(y+z));g=Q(X*g);_=Q(q*g);$=Q(p*i);w=Q(_-$);aa=Q(h*g);t=Q(p*t);h=Q(aa+t);N[f+624>>2]=Q(L*j)+Q(Q(M*w)+Q(O*h));N[f+620>>2]=Q(E*j)+Q(Q(F*w)+Q(h*I));N[f+616>>2]=Q(A*j)+Q(Q(C*w)+Q(h*D));h=Q(aa-t);j=Q(q*i);q=Q(p*g);i=Q(j+q);p=Q(X*g);g=Q(Q(1)-Q(y+p));N[f+608>>2]=Q(L*h)+Q(Q(M*i)+Q(O*g));N[f+604>>2]=Q(E*h)+Q(Q(F*i)+Q(g*I));N[f+600>>2]=Q(A*h)+Q(Q(C*i)+Q(g*D));h=Q(_+$);g=Q(Q(1)-Q(z+p));i=Q(j-q);N[f+592>>2]=Q(L*h)+Q(Q(M*g)+Q(O*i));N[f+588>>2]=Q(E*h)+Q(Q(F*g)+Q(i*I));N[f+584>>2]=Q(A*h)+Q(Q(C*g)+Q(i*D));break i}A=N[b+36>>2];C=N[b+4>>2];D=N[b+20>>2];E=N[b+40>>2];F=N[b+8>>2];I=N[b+24>>2];L=N[b+44>>2];M=N[b+12>>2];O=N[b+28>>2];J[f+564>>2]=0;J[f+548>>2]=0;J[f+532>>2]=0;w=Q(Q(i*u)+Q(Q(Q(j*x)-Q(s*g))-Q(h*v)));t=Q(Q(h*u)+Q(Q(g*x)+Q(Q(j*s)+Q(v*i))));y=Q(Q(h*x)+Q(Q(Q(j*v)-Q(s*i))-Q(g*u)));z=Q(Q(g*v)+Q(Q(Q(j*u)-Q(s*h))-Q(i*x)));q=Q(Q(Q(w*h)+Q(Q(t*i)+Q(j*y)))-Q(z*g));p=Q(Q(Q(Q(t*j)-Q(y*i))-Q(w*g))-Q(z*h));X=Q(Q(Q(y*g)+Q(Q(t*h)+Q(j*z)))-Q(w*i));h=Q(Q(Q(z*i)+Q(Q(t*g)+Q(j*w)))-Q(y*h));g=Q(Q(2)/Q(Q(p*p)+Q(Q(X*X)+Q(Q(q*q)+Q(h*h)))));t=Q(q*g);y=Q(q*t);i=Q(h*g);z=Q(h*i);j=Q(Q(1)-Q(y+z));g=Q(X*g);_=Q(q*g);$=Q(p*i);w=Q(_-$);aa=Q(h*g);t=Q(p*t);h=Q(aa+t);N[f+560>>2]=Q(L*j)+Q(Q(M*w)+Q(O*h));N[f+556>>2]=Q(E*j)+Q(Q(F*w)+Q(h*I));N[f+552>>2]=Q(A*j)+Q(Q(C*w)+Q(h*D));h=Q(aa-t);j=Q(q*i);q=Q(p*g);i=Q(j+q);p=Q(X*g);g=Q(Q(1)-Q(y+p));N[f+544>>2]=Q(L*h)+Q(Q(M*i)+Q(O*g));N[f+540>>2]=Q(E*h)+Q(Q(F*i)+Q(g*I));N[f+536>>2]=Q(A*h)+Q(Q(C*i)+Q(g*D));h=Q(_+$);g=Q(Q(1)-Q(z+p));i=Q(j-q);N[f+528>>2]=Q(L*h)+Q(Q(M*g)+Q(O*i));N[f+524>>2]=Q(E*h)+Q(Q(F*g)+Q(i*I));N[f+520>>2]=Q(A*h)+Q(Q(C*g)+Q(i*D));k=J[c+16>>2];J[T+8>>2]=J[c+12>>2];J[T+12>>2]=k;k=J[c+8>>2];J[T>>2]=J[c+4>>2];J[T+4>>2]=k;k=J[c+32>>2];J[S+8>>2]=J[c+28>>2];J[S+12>>2]=k;k=J[c+24>>2];J[S>>2]=J[c+20>>2];J[S+4>>2]=k;k=J[c+48>>2];J[P+8>>2]=J[c+44>>2];J[P+12>>2]=k;k=J[c+40>>2];J[P>>2]=J[c+36>>2];J[P+4>>2]=k;k=J[c+64>>2];J[m+8>>2]=J[c+60>>2];J[m+12>>2]=k;k=J[c+56>>2];J[m>>2]=J[c+52>>2];J[m+4>>2]=k}k=J[d+20>>2];J[f+172>>2]=e;J[f+12>>2]=245036;l=J[f+532>>2];J[f+184>>2]=J[f+528>>2];J[f+188>>2]=l;l=J[f+524>>2];J[f+176>>2]=J[f+520>>2];J[f+180>>2]=l;l=J[W+12>>2];J[f+200>>2]=J[W+8>>2];J[f+204>>2]=l;l=J[W+4>>2];J[f+192>>2]=J[W>>2];J[f+196>>2]=l;l=J[V+12>>2];J[f+216>>2]=J[V+8>>2];J[f+220>>2]=l;l=J[V+4>>2];J[f+208>>2]=J[V>>2];J[f+212>>2]=l;l=J[U+12>>2];J[f+232>>2]=J[U+8>>2];J[f+236>>2]=l;l=J[U+4>>2];J[f+224>>2]=J[U>>2];J[f+228>>2]=l;l=J[T+12>>2];J[f+248>>2]=J[T+8>>2];J[f+252>>2]=l;l=J[T+4>>2];J[f+240>>2]=J[T>>2];J[f+244>>2]=l;l=J[S+12>>2];J[f+264>>2]=J[S+8>>2];J[f+268>>2]=l;l=J[S+4>>2];J[f+256>>2]=J[S>>2];J[f+260>>2]=l;l=J[P+12>>2];J[f+280>>2]=J[P+8>>2];J[f+284>>2]=l;l=J[P+4>>2];J[f+272>>2]=J[P>>2];J[f+276>>2]=l;l=J[m+12>>2];J[f+296>>2]=J[m+8>>2];J[f+300>>2]=l;l=J[m+4>>2];J[f+288>>2]=J[m>>2];J[f+292>>2]=l;l=J[f+388>>2];J[f+312>>2]=J[f+384>>2];J[f+316>>2]=l;l=J[f+380>>2];J[f+304>>2]=J[f+376>>2];J[f+308>>2]=l;l=J[f+404>>2];J[f+328>>2]=J[f+400>>2];J[f+332>>2]=l;l=J[f+396>>2];J[f+320>>2]=J[f+392>>2];J[f+324>>2]=l;l=J[f+420>>2];J[f+344>>2]=J[f+416>>2];J[f+348>>2]=l;l=J[f+412>>2];J[f+336>>2]=J[f+408>>2];J[f+340>>2]=l;l=J[f+436>>2];J[f+360>>2]=J[f+432>>2];J[f+364>>2]=l;l=J[f+428>>2];J[f+352>>2]=J[f+424>>2];J[f+356>>2]=l;J[f+372>>2]=k;H[f+368|0]=o;Rq(Z,f+520|0,f+12|0,k);n=n+1|0;k=J[a+28>>2];if((n|0)<(k|0)){continue}break}}if(K[a+16|0]!=1){break a}c=J[e+4>>2];if(!J[c+1116>>2]){break a}}a=J[c+1108>>2]==J[e+136>>2];Qq(c,(a?8:72)+e|0,(a?72:8)+e|0)}Ui=f+656|0}function kba(a,b,c){a=a|0;b=b|0;c=c|0;var d=0,e=0,f=0,g=0,h=0,i=0,j=0,k=0,l=0,m=0,n=0,o=0,p=0,q=0,r=0,s=0,t=0,u=0,v=0,w=0;f=Ui-1120|0;Ui=f;J[a+188>>2]=J[a+188>>2]+1;v=nj(2108);h=ij(v,0,2108);j=jb()|0;a:{b:{c:{d:{e:{f:{if(K[J[79491]+220|0]&2){d=_()|0;if(d){break f}}e=J[b>>2];o=a+112|0;q=a+108|0;l=J[q>>2];d=J[o>>2]-l>>2;if(e>>>0>>0){g=d;d=J[c>>2];if(g>>>0>d>>>0){g=J[l+(d<<2)>>2];Qa(j|0,J[l+(e<<2)>>2]);g:{if(K[J[79491]+220|0]&2){d=_()|0;if(d){break g}}Qa(j|0,g|0);h:{if(K[J[79491]+220|0]&2){d=_()|0;if(d){break h}}w=h+2048|0;Fa(j|0);na(j|0,35714,f+16|0);if(!J[f+16>>2]){dj(4,89301,121650,0);a=f+848|0;na(j|0,35716,a|0);b=J[f+848>>2];if((b|0)>0){c=a;a=sj(b);eb(j|0,b|0,c|0,a|0);J[f>>2]=a;dj(3,89301,154860,f);cj(a)}i:{if(H[h+2104|0]&1){break i}a=J[h+2092>>2];if(!a){break i}cj(a)}j:{if(H[h+2088|0]&1){break j}a=J[h+2076>>2];if(!a){break j}cj(a)}k:{if(H[h+2060|0]&1){break k}a=J[w>>2];if(!a){break k}cj(a)}cj(h);Oa(j|0);v=0;if(!(K[J[79491]+220|0]&2)){break d}a=_()|0;if(!a){break d}Cj(a,48980,2768);Z(114101,40535,2768,48980);B()}J[h+2068>>2]=ho(a,j);J[h+2072>>2]=J[b+84>>2];g=f+16|0;ij(g,0,512);J[f+872>>2]=0;J[f+876>>2]=0;J[f+864>>2]=0;J[f+868>>2]=0;J[f+856>>2]=0;J[f+860>>2]=0;J[f+848>>2]=0;J[f+852>>2]=0;d=f+848|0;oP(h,b+4|0,g,J[b+88>>2],d);oP(h,c+4|0,g,J[c+88>>2],d);H[h+2064|0]=J[f+872>>2];H[h+2065|0]=J[f+876>>2];l:{if(K[a+220|0]&8){l=J[b+8>>2]-J[b+4>>2]|0;e=(l|0)/56|0;g=J[c+8>>2]-J[c+4>>2]|0;d=(g|0)/56|0;if(H[h+2104|0]&1){break l}e=d+e|0;n=h+2092|0;s=h+2096|0;lj(e,56,n,h+2100|0,s);d=J[h+2092>>2];if(e>>>0>(J[h+2100>>2]-d|0)/56>>>0){break b}J[s>>2]=d+P(e,56);ij(d,0,g+l|0);t=a+116|0;l=1;while(1){g=0;m:{e=J[b+4>>2];if((e|0)==J[b+8>>2]){break m}n:{o:{p:{q:{r:{s:{t:{u:{v:{w:{x:{y:{z:{while(1){d=J[h+2068>>2];j=J[q>>2];if(d>>>0>2]-j>>2>>>0){u=J[j+(d<<2)>>2];r=wc(u|0,J[P(g,56)+e>>2])|0;if(K[J[79491]+220|0]&2){d=_()|0;if(d){break z}}if((r|0)!=-1){Ha(u|0,r|0,35391,f+848|0);if(K[J[79491]+220|0]&2){d=_()|0;if(d){break y}}Ha(u|0,r|0,35392,f+592|0);if(K[J[79491]+220|0]&2){d=_()|0;if(d){break x}}Ha(u|0,r|0,35394,f+560|0);if(K[J[79491]+220|0]&2){d=_()|0;if(d){break w}}d=J[n>>2];if(r>>>0>=(J[s>>2]-d|0)/56>>>0){break c}k=d+P(r,56)|0;if(H[k+12|0]&1){break a}lj(J[f+560>>2],4,k,k+8|0,k+4|0);e=J[f+560>>2];d=J[k>>2];if(e>>>0>J[k+8>>2]-d>>2>>>0){break b}J[k+4>>2]=d+(e<<2);if(H[k+28|0]&1){break a}lj(e,4,k+16|0,k+24|0,k+20|0);d=J[f+560>>2];e=J[k+16>>2];if(d>>>0>J[k+24>>2]-e>>2>>>0){break b}J[k+40>>2]=i;J[k+20>>2]=e+(d<<2);d=J[f+592>>2];J[k+44>>2]=d;J[k+48>>2]=J[f+560>>2];d=nj((d|0)<0?-1:d);J[k+32>>2]=d;ij(d,0,J[k+44>>2]);Ha(u|0,r|0,35395,J[k>>2]);if(K[J[79491]+220|0]&2){d=_()|0;if(d){break v}}fb(u|0,J[f+560>>2],J[k>>2],35387,J[k+16>>2]);if(K[J[79491]+220|0]&2){d=_()|0;if(d){break u}}J[f+1116>>2]=0;Na(1,f+1116|0);e=J[a+112>>2];m=J[a+108>>2];d=e-m>>2;p=J[f+1116>>2];j=J[a+128>>2];A:{if((j|0)!=J[a+124>>2]){j=j-4|0;e=J[j>>2];J[a+128>>2]=j;break A}m=J[t>>2];if((m|0)==(e|0)){if(H[a+120|0]&1){break a}lj(d+32|0,4,q,t,o);m=J[t>>2];e=J[o>>2]}if((e|0)==(m|0)){break t}j=e+4|0;J[o>>2]=j;J[e>>2]=0;e=d;m=J[q>>2];d=j-m>>2}if(d>>>0<=e>>>0){break c}J[(e<<2)+m>>2]=p;J[k+36>>2]=e;if(K[J[79491]+220|0]&2){d=_()|0;if(d){break s}}ba(35345,J[f+1116>>2]);if(K[J[79491]+220|0]&2){d=_()|0;if(d){break r}}Ka(35345,J[f+592>>2],J[k+32>>2],35044);if(K[J[79491]+220|0]&2){d=_()|0;if(d){break q}}mb(35345,J[k+40>>2],J[f+1116>>2]);if(K[J[79491]+220|0]&2){d=_()|0;if(d){break p}}hc(u|0,r|0,J[k+40>>2]);if(K[J[79491]+220|0]&2){d=_()|0;if(d){break o}}ba(35345,0);if(K[J[79491]+220|0]&2){d=_()|0;if(d){break n}}i=i+1|0}g=g+1|0;e=J[b+4>>2];if(g>>>0<(J[b+8>>2]-e|0)/56>>>0){continue}break m}break}break c}Cj(d,19481,2309);Z(114101,40535,2309,19481);B()}Cj(d,19481,2318);Z(114101,40535,2318,19481);B()}Cj(d,19481,2322);Z(114101,40535,2322,19481);B()}Cj(d,19481,2326);Z(114101,40535,2326,19481);B()}Cj(d,19481,2341);Z(114101,40535,2341,19481);B()}Cj(d,19481,2343);Z(114101,40535,2343,19481);B()}Z(112520,53895,557,53220);B()}Cj(d,19481,2349);Z(114101,40535,2349,19481);B()}Cj(d,19481,2351);Z(114101,40535,2351,19481);B()}Cj(d,19481,2354);Z(114101,40535,2354,19481);B()}Cj(d,19481,2357);Z(114101,40535,2357,19481);B()}Cj(d,19481,2359);Z(114101,40535,2359,19481);B()}Cj(d,19481,2361);Z(114101,40535,2361,19481);B()}d=l;l=0;b=c;if(d){continue}break}}b=J[h+2068>>2];c=J[q>>2];if(b>>>0>2]-c>>2>>>0){o=J[c+(b<<2)>>2];na(o|0,35718,f+1116|0);B:{if(K[J[79491]+220|0]&2){b=_()|0;if(b){break B}}J[f+584>>2]=0;J[f+588>>2]=0;J[f+576>>2]=0;J[f+580>>2]=0;J[f+568>>2]=0;J[f+572>>2]=0;J[f+560>>2]=0;J[f+564>>2]=0;p=f+560|0;c=0;e=0;i=Ui-48|0;Ui=i;g=i+40|0;b=g;J[b>>2]=0;J[b+4>>2]=0;J[i+32>>2]=0;J[i+36>>2]=0;j=K[h+2064|0];C:{if(!j){break C}d=i+32|4;while(1){l=K[h+2065|0];while(1){D:{if(c>>>0>>0){while(1){b=c<<4;c=c+1|0;n=((e<<9)+h|0)+b|0;b=J[n>>2];if(b){break D}if((c|0)!=(l|0)){continue}break}}c=0;e=e+1|0;if((j|0)!=(e|0)){continue}break C}break}E:{F:{switch(J[b+40>>2]-1|0){case 1:case 2:J[i+24>>2]=0;J[i+28>>2]=0;J[i+16>>2]=0;J[i+20>>2]=0;J[i+8>>2]=0;J[i+12>>2]=0;b=J[b>>2];J[i+20>>2]=n;J[i+8>>2]=b;sP(i+8|0,p);break E;case 0:break F;default:break E}}b=J[i+36>>2];if((b|0)==J[i+32>>2]){if(H[i+44|0]&1){break a}lj((J[i+40>>2]-b|0)+128|0,1,i+32|0,g,d);J[i+36>>2]=J[i+40>>2]}b=J[n>>2];WO(933,p,n,J[n+4>>2],J[b+32>>2],J[b>>2],J[b+16>>2],i+32|0,0,0)}j=K[h+2064|0];if(j>>>0>e>>>0){continue}break}}G:{if(H[i+44|0]&1){break G}b=J[i+32>>2];if(!b){break G}cj(b)}Ui=i+48|0;if(!(H[h+2060|0]&1)){t=h+2052|0;lj(J[f+1116>>2],32,w,h+2056|0,t);c=J[f+1116>>2];b=J[h+2048>>2];if(c>>>0<=J[h+2056>>2]-b>>5>>>0){J[t>>2]=b+(c<<5);J[f+556>>2]=0;if((c|0)<=0){break e}e=0;while(1){zc(o|0,e|0,256,f+544|0,f+552|0,f+548|0,f+848|0);H:{if(!(K[J[79491]+220|0]&2)){break H}b=_()|0;if(!b){break H}Cj(b,20386,2594);Z(114101,40535,2594,20386);B()}J[f+540>>2]=-1;I:{J:{if(!(K[a+220|0]&8)){break J}fb(o|0,1,f+556|0,35386,f+540|0);g=J[f+540>>2];if((g|0)==-1){break J}b=J[h+2092>>2];if(g>>>0>=(J[h+2096>>2]-b|0)/56>>>0){break c}c=b+P(g,56)|0;b=J[c+4>>2];d=J[c>>2];K:{if((b|0)!=(d|0)){b=b-d>>2;c=b>>>0<=1?1:b;e=0;b=J[f+556>>2];while(1){if((b|0)==J[d+(e<<2)>>2]){break K}e=e+1|0;if((c|0)!=(e|0)){continue}break}}e=0}b=e<<16|g;d=g>>31|1;break I}b=vc(o|0,f+848|0)|0;d=b>>31}l=b;g=f+848|0;e=J[f+544>>2];c=e-1|0;L:{if((c|0)<0){break L}while(1){b=c;p=f+848|0;j=b+p|0;c=K[j|0];M:{if((c|0)!=91){if((c|0)!=46){break M}g=e+p|0;break L}H[j|0]=0}c=b-1|0;e=b;if((b|0)>0){continue}break}}b=yj(g);J[f+544>>2]=b;e=0;N:{if(!b){break N}while(1){c=e+g|0;if(K[c|0]!=46){e=e+1|0;if((b|0)!=(e|0)){continue}break N}break}if((e|0)==-1){break N}b=f+592|0;hj(b,g,e);H[b+e|0]=0;b=J[f+580>>2];s=J[f+576>>2];if((b|0)==(s|0)){break N}m=(b-s|0)/12|0;i=m>>>0<=1?1:m;O:{q=J[f+560>>2];if(q){j=c+1|0;e=0;while(1){if((e|0)==(m|0)){break c}P:{n=s+P(e,12)|0;b=J[n+4>>2];if((b|0)>=0){break P}c=q+(b&2147483647)|0;b=f+592|0;if(jj(c,b)){break P}c=J[n>>2];if((c|0)>=0){break O}p=q+(c&2147483647)|0;if(jj(p,j)){break P}g=b;c=J[n+8>>2];e=b;Q:{if((c|0)>=0){break Q}c=q+(c&2147483647)|0;e=b;if(!K[c|0]){break Q}b=yj(c);hj(g,c,b);b=b+g|0;H[b|0]=46;e=b+1|0}b=yj(p);H[hj(e,p,b)+b|0]=0;break N}e=e+1|0;if((i|0)!=(e|0)){continue}break}break N}if(m>>>0>i-1>>>0){break N}break c}Z(65949,40535,2515,66058);B()}b=J[f+556>>2];c=J[w>>2];if(b>>>0>2]-c>>5>>>0){e=c+(b<<5)|0;J[e>>2]=Gk(g);b=bj(g);J[e+16>>2]=l;J[e+20>>2]=d;J[e+8>>2]=b;J[e+12>>2]=Yi;J[e+28>>2]=J[f+552>>2];R:{S:{T:{U:{V:{W:{X:{Y:{Z:{_:{$:{aa:{ba:{ca:{da:{ea:{fa:{b=J[f+548>>2];if((b|0)<=35663){c=0;switch(b-5120|0){case 6:break aa;case 5:break ba;case 4:break ca;case 3:break da;case 2:break ea;case 1:break fa;case 0:break R;default:break S}}ga:{switch(b-35664|0){case 1:break _;case 0:break $;case 3:case 4:case 5:case 6:case 7:case 8:case 9:case 13:case 15:break S;case 16:break T;case 14:break V;case 12:break W;case 11:break X;case 10:break Y;case 2:break Z;default:break ga}}if((b|0)==36289){break U}if((b|0)!=36941){break S}c=16;break R}c=1;break R}c=2;break R}c=3;break R}c=4;break R}c=5;break R}c=6;break R}c=12;break R}c=13;break R}c=7;break R}c=14;break R}c=15;break R}c=8;break R}c=9;break R}c=11;break R}c=10;break R}c=-1}J[e+24>>2]=c;ha:{if(!(K[J[79491]+220|0]&2)|(d&l)!=-1){break ha}if(!(_()|0)){break ha}while(1){if(_()|0){continue}break}}e=J[f+556>>2]+1|0;J[f+556>>2]=e;if(J[f+1116>>2]>(e|0)){continue}break e}break}break c}break b}break a}Cj(b,20386,2558);Z(114101,40535,2558,20386);B()}break c}break a}Cj(d,48980,2750);Z(114101,40535,2750,48980);B()}Cj(d,48980,2748);Z(114101,40535,2748,48980);B()}break c}break c}Cj(d,48980,2739);Z(114101,40535,2739,48980);B()}ia:{if(H[f+588|0]&1){break ia}a=J[f+576>>2];if(!a){break ia}cj(a)}ja:{if(H[f+572|0]&1){break ja}a=J[f+560>>2];if(!a){break ja}cj(a)}tP(h)}Ui=f+1120|0;return v|0}Z(145396,53895,487,84789);B()}Z(144782,53895,514,59583);B()}Z(151729,53895,501,2284);B()}function cV(a,b,c){var d=0,e=Q(0),f=0,g=Q(0),h=Q(0),i=Q(0),j=0,k=0,l=Q(0),m=Q(0),n=0,o=Q(0),p=0,q=Q(0),r=0,s=0,t=0,u=0,v=0,w=Q(0),x=0,y=Q(0),z=0,A=Q(0),C=Q(0),D=Q(0),E=0,F=Q(0),G=Q(0),M=0,O=0,R=Q(0),S=Q(0),T=Q(0),U=0,V=0,W=0,X=Q(0),_=Q(0),$=Q(0),aa=Q(0),ba=Q(0);d=Ui-176|0;Ui=d;J[83780]=J[83780]+1;j=c- -64|0;r=J[j+4>>2];J[d+168>>2]=J[j>>2];J[d+172>>2]=r;j=J[c+60>>2];J[d+160>>2]=J[c+56>>2];J[d+164>>2]=j;j=J[c+84>>2];J[d+152>>2]=J[c+80>>2];J[d+156>>2]=j;j=J[c+76>>2];J[d+144>>2]=J[c+72>>2];J[d+148>>2]=j;j=d+32|0;r=c;a:{b:{c:{c=L[b+4>>1];if(c>>>0<4){J[j+108>>2]=c;d:{e:{if(!c){break e}v=b+9|0;p=b+6|0;while(1){c=j+P(n,36)|0;z=K[p+n|0];J[c+28>>2]=z;k=K[n+v|0];J[c+32>>2]=k;if((z|0)>=J[r+20>>2]|(k|0)>=J[r+48>>2]){break a}k=J[r+44>>2]+(k<<3)|0;e=N[k>>2];h=N[k+4>>2];i=N[d+160>>2];g=N[d+168>>2];z=J[r+16>>2]+(z<<3)|0;l=N[z>>2];m=N[z+4>>2];o=N[d+172>>2];w=Q(Q(Q(g*l)+Q(m*o))+N[d+164>>2]);N[c+4>>2]=w;l=Q(i+Q(Q(o*l)-Q(g*m)));N[c>>2]=l;m=N[d+144>>2];o=N[d+148>>2];i=N[d+152>>2];g=N[d+156>>2];J[c+24>>2]=0;o=Q(o+Q(Q(i*e)+Q(h*g)));N[c+12>>2]=o;e=Q(m+Q(Q(g*e)-Q(i*h)));N[c+8>>2]=e;N[c+20>>2]=o-w;N[c+16>>2]=e-l;n=n+1|0;c=J[j+108>>2];if((n|0)<(c|0)){continue}break}if((c|0)>1){h=N[b>>2];i=Q(h*Q(.5));f:{g:{switch(c-2|0){case 1:e=N[j+16>>2];g=N[j+20>>2];e=Q(Q(Q(N[j+52>>2]-e)*Q(N[j+92>>2]-g))-Q(Q(N[j+56>>2]-g)*Q(N[j+88>>2]-e)));break f;case 0:break g;default:break b}}e=Q(N[j+16>>2]-N[j+52>>2]);g=Q(e*e);e=Q(N[j+20>>2]-N[j+56>>2]);e=Q(Y(Q(g+Q(e*e))))}if(!(i>e|e>Q(h+h))){if(!(e>2]=0;break e}if(c){break d}}J[j+28>>2]=0;J[j+32>>2]=0;if(J[r+20>>2]<=0|J[r+48>>2]<=0){break a}c=J[r+44>>2];e=N[c>>2];h=N[c+4>>2];i=N[d+160>>2];g=N[d+168>>2];c=J[r+16>>2];l=N[c>>2];m=N[c+4>>2];o=N[d+172>>2];w=Q(Q(Q(g*l)+Q(m*o))+N[d+164>>2]);N[j+4>>2]=w;l=Q(i+Q(Q(o*l)-Q(g*m)));N[j>>2]=l;m=N[d+144>>2];o=N[d+148>>2];i=N[d+152>>2];g=N[d+156>>2];J[j+108>>2]=1;o=Q(o+Q(Q(i*e)+Q(h*g)));N[j+12>>2]=o;e=Q(m+Q(Q(g*e)-Q(i*h)));N[j+8>>2]=e;N[j+20>>2]=o-w;N[j+16>>2]=e-l}break c}Z(109203,42232,113,68091);B()}h:{i:{j:{x=J[d+140>>2];if(x-1>>>0>=3){if(!x){break i}break j}j=d+68|0;z=d+104|0;F=N[d+152>>2];X=Q(-F);O=J[83781];_=N[d+148>>2];$=N[d+144>>2];o=N[d+156>>2];aa=N[d+164>>2];ba=N[d+160>>2];w=N[d+168>>2];y=N[d+172>>2];k:{while(1){c=f;V=(x|0)<=0;l:{if(V){break l}k=0;if((x|0)!=1){f=x&2147483646;v=0;while(1){n=k<<2;p=d+20|0;t=d+32|0;u=t+P(k,36)|0;J[n+p>>2]=J[u+28>>2];s=n;n=d+8|0;J[s+n>>2]=J[u+32>>2];s=p;p=k|1;u=p<<2;p=t+P(p,36)|0;J[s+u>>2]=J[p+28>>2];J[n+u>>2]=J[p+32>>2];k=k+2|0;v=v+2|0;if((f|0)!=(v|0)){continue}break}}if(!(x&1)){break l}f=k<<2;n=(d+32|0)+P(k,36)|0;J[f+(d+20|0)>>2]=J[n+28>>2];J[f+(d+8|0)>>2]=J[n+32>>2]}m:{n:{o:{p:{q:{r:{switch(x-1|0){case 1:m=N[d+84>>2];e=N[d+48>>2];h=Q(m-e);q=N[d+88>>2];g=N[d+52>>2];i=Q(q-g);l=Q(Q(e*h)+Q(g*i));if(l>=Q(0)){J[d+140>>2]=1;J[d+56>>2]=1065353216;break o}m=Q(Q(m*h)+Q(q*i));if(!(m<=Q(0))){break q}J[d+140>>2]=1;J[d+92>>2]=1065353216;f=J[j+12>>2];J[d+40>>2]=J[j+8>>2];J[d+44>>2]=f;f=J[j+20>>2];J[d+48>>2]=J[j+16>>2];J[d+52>>2]=f;f=J[j+28>>2];J[d+56>>2]=J[j+24>>2];J[d+60>>2]=f;J[d- -64>>2]=J[j+32>>2];f=J[j+4>>2];J[d+32>>2]=J[j>>2];J[d+36>>2]=f;break o;default:Z(62644,42232,509,70532);B();case 0:break o;case 2:break r}}e=N[d+120>>2];h=N[d+48>>2];A=Q(e-h);i=N[d+124>>2];g=N[d+52>>2];D=Q(i-g);l=N[d+84>>2];C=Q(l-h);m=N[d+88>>2];R=Q(m-g);G=Q(Q(h*C)+Q(g*R));q=Q(Q(h*A)+Q(g*D));s:{if(!(!(G>=Q(0))|!(q>=Q(0)))){J[d+140>>2]=1;J[d+56>>2]=1065353216;break s}S=Q(Q(C*D)-Q(R*A));T=Q(Q(Q(h*m)-Q(g*l))*S);C=Q(Q(l*C)+Q(m*R));if(!(!(T<=Q(0))|(!(C>Q(0))|!(G>2]=2;e=Q(Q(1)/Q(C-G));N[d+92>>2]=e*Q(-G);N[d+56>>2]=C*e;break s}A=Q(Q(e*A)+Q(i*D));D=Q(S*Q(Q(e*g)-Q(i*h)));if(!(!(qQ(0))))){J[d+140>>2]=2;e=Q(Q(1)/Q(A-q));N[d+128>>2]=e*Q(-q);N[d+56>>2]=A*e;J[d+100>>2]=J[d+136>>2];f=J[d+132>>2];J[d+92>>2]=J[d+128>>2];J[d+96>>2]=f;f=J[d+124>>2];J[d+84>>2]=J[d+120>>2];J[d+88>>2]=f;f=J[d+116>>2];J[d+76>>2]=J[d+112>>2];J[d+80>>2]=f;f=J[d+108>>2];J[d+68>>2]=J[d+104>>2];J[d+72>>2]=f;break s}g=Q(e-l);q=Q(i-m);h=Q(Q(l*g)+Q(m*q));if(!(!(C<=Q(0))|!(h>=Q(0)))){J[d+140>>2]=1;J[d+92>>2]=1065353216;f=J[d+72>>2];J[d+32>>2]=J[d+68>>2];J[d+36>>2]=f;f=J[d+80>>2];J[d+40>>2]=J[d+76>>2];J[d+44>>2]=f;f=J[d+88>>2];J[d+48>>2]=J[d+84>>2];J[d+52>>2]=f;f=J[d+96>>2];J[d+56>>2]=J[d+92>>2];J[d+60>>2]=f;J[d+64>>2]=J[d+100>>2];break s}t:{g=Q(Q(e*g)+Q(i*q));if(!(!(A<=Q(0))|!(g<=Q(0)))){J[d+140>>2]=1;J[d+128>>2]=1065353216;break t}e=Q(Q(Q(l*i)-Q(m*e))*S);if(!(!(hQ(0))))){J[d+140>>2]=2;e=Q(Q(1)/Q(g-h));N[d+128>>2]=e*Q(-h);N[d+92>>2]=g*e;break t}J[d+140>>2]=3;h=Q(Q(1)/Q(T+Q(e+D)));N[d+128>>2]=T*h;N[d+92>>2]=D*h;N[d+56>>2]=e*h;break s}f=J[d+108>>2];J[d+32>>2]=J[d+104>>2];J[d+36>>2]=f;f=J[d+116>>2];J[d+40>>2]=J[d+112>>2];J[d+44>>2]=f;f=J[d+124>>2];J[d+48>>2]=J[d+120>>2];J[d+52>>2]=f;f=J[d+132>>2];J[d+56>>2]=J[d+128>>2];J[d+60>>2]=f;J[d+64>>2]=J[d+136>>2]}u:{switch(J[d+140>>2]){case 2:g=N[d+52>>2];i=Q(N[d+88>>2]-g);e=N[d+48>>2];h=Q(N[d+84>>2]-e);break p;case 0:break i;case 3:break m;case 1:break o;default:break u}}break j}J[d+140>>2]=2;q=Q(Q(1)/Q(m-l));N[d+92>>2]=q*Q(-l);N[d+56>>2]=m*q}v:{if(Q(Q(e*i)-Q(h*g))>Q(0)){i=Q(-i);break v}h=Q(-h)}f=z;break n}h=Q(-N[d+52>>2]);i=Q(-N[d+48>>2]);f=j}if(Q(Q(i*i)+Q(h*h))>2];v=0;p=J[r+20>>2];w:{if((p|0)<2){break w}g=Q(Q(y*Q(-i))-Q(w*h));l=Q(Q(w*i)-Q(y*h));e=Q(Q(N[f>>2]*g)+Q(l*N[f+4>>2]));k=1;t=p-1|0;E=t&1;if((p|0)!=2){U=t&-2;t=0;while(1){u=f+(k<<3)|0;m=Q(Q(N[u>>2]*g)+Q(l*N[u+4>>2]));u=m>e;M=k+1|0;s=f+(M<<3)|0;q=Q(Q(N[s>>2]*g)+Q(l*N[s+4>>2]));e=u?m:e;s=q>e;e=s?q:e;v=s?M:u?k:v;k=k+2|0;t=t+2|0;if((U|0)!=(t|0)){continue}break}}if(!E){break w}s=k;k=f+(k<<3)|0;v=Q(Q(N[k>>2]*g)+Q(l*N[k+4>>2]))>e?s:v}J[n+28>>2]=v;if((v|0)<0|(p|0)<=(v|0)){break h}f=f+(v<<3)|0;e=N[f>>2];g=N[f+4>>2];l=Q(Q(Q(w*e)+Q(y*g))+aa);N[n+4>>2]=l;m=Q(ba+Q(Q(y*e)-Q(w*g)));N[n>>2]=m;t=J[r+44>>2];p=0;u=J[r+48>>2];x:{if((u|0)<2){break x}g=Q(Q(o*i)+Q(h*F));h=Q(Q(X*i)+Q(h*o));e=Q(Q(N[t>>2]*g)+Q(h*N[t+4>>2]));k=1;f=u-1|0;U=f&1;if((u|0)!=2){M=f&-2;f=0;while(1){s=t+(k<<3)|0;i=Q(Q(N[s>>2]*g)+Q(h*N[s+4>>2]));s=i>e;W=k+1|0;E=t+(W<<3)|0;q=Q(Q(N[E>>2]*g)+Q(h*N[E+4>>2]));e=s?i:e;E=q>e;e=E?q:e;p=E?W:s?k:p;k=k+2|0;f=f+2|0;if((M|0)!=(f|0)){continue}break}}if(!U){break x}f=t+(k<<3)|0;p=Q(Q(N[f>>2]*g)+Q(h*N[f+4>>2]))>e?k:p}J[n+32>>2]=p;if((p|0)<0|(p|0)>=(u|0)){break k}f=t+(p<<3)|0;e=N[f>>2];h=N[f+4>>2];i=Q(Q(Q(F*e)+Q(o*h))+_);N[n+12>>2]=i;e=Q($+Q(Q(o*e)-Q(F*h)));N[n+8>>2]=e;N[n+20>>2]=i-l;N[n+16>>2]=e-m;O=O+1|0;J[83781]=O;f=c+1|0;k=0;if(!V){while(1){c=k<<2;if(!(J[c+(d+20|0)>>2]!=(v|0)|J[c+(d+8|0)>>2]!=(p|0))){c=f;break m}k=k+1|0;if((x|0)!=(k|0)){continue}break}}x=J[d+140>>2]+1|0;J[d+140>>2]=x;c=20;if((f|0)!=20){continue}}break}f=J[83782];J[83782]=(c|0)<(f|0)?f:c;y:{z:{A:{B:{C:{D:{f=d+32|0;switch(J[f+108>>2]){case 1:break z;case 3:break B;case 2:break C;case 0:break D;default:break A}}Z(62644,42232,228,17878);B()}e=N[f>>2];h=N[f+36>>2];i=N[f+24>>2];g=N[f+60>>2];N[a+4>>2]=Q(i*N[f+4>>2])+Q(g*N[f+40>>2]);N[a>>2]=Q(i*e)+Q(g*h);e=N[f+8>>2];h=N[f+44>>2];i=N[f+24>>2];g=N[f+60>>2];N[a+12>>2]=Q(i*N[f+12>>2])+Q(g*N[f+48>>2]);N[a+8>>2]=Q(i*e)+Q(g*h);break y}e=N[f+72>>2];h=N[f>>2];i=N[f+36>>2];g=N[f+24>>2];l=N[f+60>>2];m=N[f+96>>2];o=Q(Q(Q(g*N[f+4>>2])+Q(l*N[f+40>>2]))+Q(m*N[f+76>>2]));N[a+4>>2]=o;e=Q(Q(Q(g*h)+Q(l*i))+Q(m*e));N[a>>2]=e;N[a+12>>2]=o;N[a+8>>2]=e;break y}Z(62644,42232,247,17878);B()}j=J[f+4>>2];J[a>>2]=J[f>>2];J[a+4>>2]=j;j=J[f+12>>2];J[a+8>>2]=J[f+8>>2];J[a+12>>2]=j}J[a+20>>2]=c;e=Q(N[a>>2]-N[a+8>>2]);g=Q(e*e);e=Q(N[a+4>>2]-N[a+12>>2]);N[a+16>>2]=Y(Q(g+Q(e*e)));e=Q(0);E:{F:{G:{H:{c=J[f+108>>2];switch(c|0){case 1:break E;case 2:break F;case 3:break G;case 0:break H;default:break b}}Z(62644,42232,257,82256);B()}e=N[f+16>>2];h=N[f+20>>2];e=Q(Q(Q(N[f+52>>2]-e)*Q(N[f+92>>2]-h))-Q(Q(N[f+56>>2]-h)*Q(N[f+88>>2]-e)));break E}e=Q(N[f+16>>2]-N[f+52>>2]);g=Q(e*e);e=Q(N[f+20>>2]-N[f+56>>2]);e=Q(Y(Q(g+Q(e*e))))}I[b+4>>1]=c;N[b>>2]=e;c=b+9|0;j=b+6|0;b=0;while(1){n=f+P(b,36)|0;H[b+j|0]=J[n+28>>2];H[b+c|0]=J[n+32>>2];b=b+1|0;if((b|0)>2]){continue}break}I:{if(K[r+88|0]!=1){break I}e=N[a+16>>2];h=N[r+24>>2];i=N[r+52>>2];g=Q(h+i);if(!(!(e>g)|!(e>Q(1.1920928955078125e-7)))){N[a+16>>2]=e-g;l=N[a+8>>2];m=N[a>>2];e=Q(l-m);o=N[a+12>>2];w=N[a+4>>2];g=Q(o-w);y=Q(Y(Q(Q(e*e)+Q(g*g))));if(!(y>2]=o-Q(i*g);N[a+8>>2]=l-Q(i*e);N[a+4>>2]=w+Q(h*g);N[a>>2]=m+Q(h*e);break I}J[a+16>>2]=0;e=Q(Q(N[a+4>>2]+N[a+12>>2])*Q(.5));N[a+12>>2]=e;h=Q(Q(N[a>>2]+N[a+8>>2])*Q(.5));N[a+8>>2]=h;N[a+4>>2]=e;N[a>>2]=h}Ui=d+176|0;return}break h}Z(62644,42232,218,12985);B()}Z(62644,42232,205,12985);B()}break a}Z(62644,42232,270,82256);B()}Z(11412,55795,103,4803);B()}function kia(a){a=a|0;var b=0,c=0,d=0,e=Q(0),f=0,g=0,h=0,i=Q(0),j=0,k=Q(0),l=0,m=0,n=Q(0),o=Q(0),p=0,q=0,r=0,s=Q(0),t=Q(0),u=0,v=Q(0),w=0,x=Q(0),y=Q(0),z=0,A=Q(0),C=0,D=Q(0),E=Q(0),F=Q(0),G=Q(0),O=Q(0),S=Q(0),T=Q(0),U=Q(0),V=Q(0),W=Q(0),X=Q(0),Y=Q(0),_=Q(0),$=Q(0),aa=Q(0),ba=Q(0),ca=0,da=0,ea=0,fa=Q(0),ga=Q(0),ha=Q(0),ia=Q(0),ja=Q(0),ka=Q(0),la=Q(0),ma=0;c=Ui-384|0;Ui=c;b=J[a+8>>2];C=J[b>>2];f=J[a+4>>2];J[f+316>>2]=0;m=K[b+8|0];J[c+156>>2]=0;b=J[f+4>>2];a=J[f>>2];l=(b-a|0)/240|0;a:{b:{if((a|0)==(b|0)){break b}c:{if((K[J[J[J[J[a+144>>2]+80>>2]+8>>2]>>2]+3272|0]&4)>>>2|0){g=l>>>0<=1?1:l;while(1){a=J[f>>2];if((J[f+4>>2]-a|0)/240>>>0<=d>>>0){break a}a=a+P(d,240)|0;k=N[a+84>>2];v=N[a+88>>2];D=N[a+92>>2];e=N[a+80>>2];i=N[a+72>>2];n=N[a+64>>2];o=N[a+68>>2];b=op(J[a+144>>2]);ka=N[a+96>>2];la=N[a+112>>2];U=N[a+100>>2];V=N[a+116>>2];E=N[b+48>>2];y=N[b+32>>2];s=N[b>>2];t=N[b+16>>2];F=N[b+52>>2];x=N[b+36>>2];A=N[b+4>>2];W=N[b+20>>2];G=N[b+56>>2];X=N[b+40>>2];Y=N[b+8>>2];_=N[b+24>>2];$=N[b+44>>2];aa=N[b+12>>2];ba=N[b+28>>2];O=N[b+60>>2];N[a+60>>2]=Q(Q(i*$)+Q(Q(n*aa)+Q(o*ba)))+O;N[a+56>>2]=G+Q(Q(X*i)+Q(Q(Y*n)+Q(o*_)));N[a+52>>2]=F+Q(Q(x*i)+Q(Q(A*n)+Q(o*W)));N[a+48>>2]=E+Q(Q(y*i)+Q(Q(s*n)+Q(o*t)));O=Q(O*Q(0));T=Q(e+e);fa=Q(Q(1)-Q(e*T));S=Q(k+k);ga=Q(k*S);i=Q(fa-ga);n=Q(v+v);ha=Q(e*n);ia=Q(S*D);o=Q(ha+ia);ja=Q(k*n);T=Q(T*D);k=Q(ja-T);N[a+44>>2]=O+Q(Q($*i)+Q(Q(aa*o)+Q(ba*k)));G=Q(G*Q(0));N[a+40>>2]=G+Q(Q(X*i)+Q(Q(Y*o)+Q(k*_)));F=Q(F*Q(0));N[a+36>>2]=F+Q(Q(x*i)+Q(Q(A*o)+Q(k*W)));E=Q(E*Q(0));N[a+32>>2]=E+Q(Q(y*i)+Q(Q(s*o)+Q(k*t)));k=Q(ja+T);o=Q(e*S);D=Q(D*n);e=Q(o-D);v=Q(v*n);i=Q(fa-v);n=Q(V*U);N[a+28>>2]=Q(O+Q(Q($*k)+Q(Q(aa*e)+Q(ba*i))))*n;S=Q(Q(G+Q(Q(X*k)+Q(Q(Y*e)+Q(i*_))))*n);N[a+24>>2]=S;U=Q(Q(F+Q(Q(x*k)+Q(Q(A*e)+Q(i*W))))*n);N[a+20>>2]=U;V=Q(Q(E+Q(Q(y*k)+Q(Q(s*e)+Q(i*t))))*n);N[a+16>>2]=V;e=Q(ha-ia);k=Q(Q(Q(1)-ga)-v);i=Q(o+D);n=Q(la*ka);N[a+12>>2]=Q(O+Q(Q($*e)+Q(Q(aa*k)+Q(ba*i))))*n;o=Q(Q(G+Q(Q(X*e)+Q(Q(Y*k)+Q(i*_))))*n);N[a+8>>2]=o;x=Q(Q(F+Q(Q(x*e)+Q(Q(A*k)+Q(i*W))))*n);N[a+4>>2]=x;e=Q(Q(E+Q(Q(y*e)+Q(Q(s*k)+Q(i*t))))*n);N[a>>2]=e;a=J[f+120>>2];if(J[f+124>>2]-a>>2>>>0<=d>>>0){break a}k=Q(Q(o+S)*Q(.5));i=Q(k*k);k=Q(Q(x+U)*Q(.5));e=Q(Q(e+V)*Q(.5));N[a+(d<<2)>>2]=i+Q(Q(k*k)+Q(e*e));d=d+1|0;if((g|0)!=(d|0)){continue}break}break c}g=l>>>0<=1?1:l;while(1){a=J[f>>2];if((J[f+4>>2]-a|0)/240>>>0<=d>>>0){break a}a=a+P(d,240)|0;e=N[a+80>>2];k=N[a+84>>2];i=N[a+92>>2];n=N[a+88>>2];b=J[a+64>>2];p=J[a+68>>2];o=N[a+72>>2];J[c+172>>2]=0;J[c+188>>2]=0;J[c+204>>2]=0;J[c+220>>2]=1065353216;N[c+216>>2]=o;J[c+208>>2]=b;J[c+212>>2]=p;y=Q(k+k);s=Q(e*y);o=Q(n+n);t=Q(i*o);N[c+164>>2]=s+t;x=Q(e*o);A=Q(y*i);N[c+168>>2]=x-A;N[c+176>>2]=s-t;s=Q(k*o);v=i;i=Q(e+e);t=Q(v*i);N[c+184>>2]=s+t;N[c+192>>2]=x+A;N[c+196>>2]=s-t;e=Q(Q(1)-Q(e*i));i=Q(n*o);N[c+180>>2]=e-i;v=e;e=Q(k*y);N[c+200>>2]=v-e;N[c+160>>2]=Q(Q(1)-e)-i;b=op(J[a+144>>2]);N[c+80>>2]=N[b>>2];N[c+84>>2]=N[b+4>>2];N[c+88>>2]=N[b+8>>2];N[c+92>>2]=N[b+12>>2];N[c+96>>2]=N[b+16>>2];N[c+100>>2]=N[b+20>>2];N[c+104>>2]=N[b+24>>2];N[c+108>>2]=N[b+28>>2];N[c+112>>2]=N[b+32>>2];N[c+116>>2]=N[b+36>>2];N[c+120>>2]=N[b+40>>2];N[c+124>>2]=N[b+44>>2];N[c+128>>2]=N[b+48>>2];N[c+132>>2]=N[b+52>>2];N[c+136>>2]=N[b+56>>2];N[c+140>>2]=N[b+60>>2];Jp(c+16|0,c+80|0,c+160|0);k=N[c+44>>2];i=N[c+40>>2];n=N[c+36>>2];o=N[c+32>>2];y=N[c+28>>2];s=N[c+24>>2];t=N[c+20>>2];e=N[c+16>>2];b=J[c+72>>2];p=J[c+76>>2];j=J[c+64>>2];r=J[c+68>>2];h=J[c+56>>2];q=J[c+60>>2];ea=J[c+52>>2];J[a+32>>2]=J[c+48>>2];J[a+36>>2]=ea;J[a+40>>2]=h;J[a+44>>2]=q;J[a+48>>2]=j;J[a+52>>2]=r;J[a+56>>2]=b;J[a+60>>2]=p;v=e;e=Q(N[a+112>>2]*N[a+96>>2]);x=Q(v*e);N[a>>2]=x;t=Q(e*t);N[a+4>>2]=t;s=Q(e*s);N[a+8>>2]=s;N[a+12>>2]=e*y;e=Q(N[a+116>>2]*N[a+100>>2]);o=Q(o*e);N[a+16>>2]=o;n=Q(e*n);N[a+20>>2]=n;i=Q(e*i);N[a+24>>2]=i;N[a+28>>2]=e*k;a=J[f+120>>2];if(J[f+124>>2]-a>>2>>>0<=d>>>0){break a}e=Q(Q(s+i)*Q(.5));i=Q(e*e);e=Q(Q(t+n)*Q(.5));v=Q(e*e);e=Q(Q(x+o)*Q(.5));N[a+(d<<2)>>2]=i+Q(v+Q(e*e));d=d+1|0;if((g|0)!=(d|0)){continue}break}}if(m&1){break b}l=l>>>0<=1?1:l;m=J[f>>2];g=(J[f+4>>2]-m|0)/240|0;a=0;while(1){if((a|0)==(g|0)){break a}b=m+P(a,240)|0;e=N[b+52>>2];d:{if(Q(R(e))>2]=d|0;e=N[b+48>>2];e:{if(Q(R(e))>2]=d|0;a=a+1|0;if((l|0)!=(a|0)){continue}break}}J[c+80>>2]=0;a=J[f+4>>2];b=J[f>>2];f:{g:{if((a|0)==(b|0)){p=0;break g}a=(a-b|0)/240|0;ea=a>>>0<=1?1:a;l=c+192|0;p=0;while(1){h:{i:{j:{k:{l:{a=J[f>>2];if((J[f+4>>2]-a|0)/240>>>0>ca>>>0){g=a+P(ca,240)|0;if((L[g+234>>1]&132)!=132){break h}a=J[C+2484>>2];if(!a){b=J[g+148>>2];a=J[g+152>>2];m:{if(a){a=J[a>>2];if(a){break m}}a=J[b+4>>2]}a=J[a>>2]}a=J[a+16>>2];if(a){b=L[a+202>>1]}else{b=0}ij(c+160|0,0,216);j=J[g+148>>2];m=J[j+20>>2];J[c+224>>2]=m;ma=(da>>>0)%(b>>>0)|0;if(m){a=J[g+152>>2];if(!a){j=J[j+16>>2];if(j){a=0;if((m|0)!=1){r=m&-2;d=0;while(1){h=a<<2;q=c+160|0;z=J[(j+(a<<4)|0)+8>>2];J[h+q>>2]=z;J[l+h>>2]=J[z+96>>2];u=q;h=a|1;q=h<<2;h=J[(j+(h<<4)|0)+8>>2];J[u+q>>2]=h;J[l+q>>2]=J[h+96>>2];a=a+2|0;d=d+2|0;if((r|0)!=(d|0)){continue}break}}if(!(m&1)){break l}d=a<<2;a=J[(j+(a<<4)|0)+8>>2];J[d+(c+160|0)>>2]=a;J[d+l>>2]=J[a+96>>2];break l}d=0;j=J[24];a=0;if(m>>>0>=4){z=m&-4;r=0;while(1){h=a<<2;q=c+160|0;J[h+q>>2]=0;J[l+h>>2]=j;u=h|4;J[u+q>>2]=0;J[l+u>>2]=j;u=h|8;J[u+q>>2]=0;J[l+u>>2]=j;h=h|12;J[h+q>>2]=0;J[l+h>>2]=j;a=a+4|0;r=r+4|0;if((z|0)!=(r|0)){continue}break}}m=m&3;if(!m){break l}while(1){r=a<<2;J[r+(c+160|0)>>2]=0;J[l+r>>2]=j;a=a+1|0;d=d+1|0;if((m|0)!=(d|0)){continue}break}break l}r=J[a+4>>2];if(r){h=J[a+8>>2]-r>>4;a=0;while(1){n:{if(a>>>0>>0){d=J[(r+(a<<4)|0)+8>>2];if(d){break n}}d=J[(J[j+16>>2]+(a<<4)|0)+8>>2]}q=a<<2;J[q+(c+160|0)>>2]=d;J[l+q>>2]=J[d+96>>2];a=a+1|0;if((m|0)!=(a|0)){continue}break}break l}j=J[j+16>>2];if(j){a=0;if((m|0)!=1){r=m&-2;d=0;while(1){h=a<<2;q=c+160|0;z=J[(j+(a<<4)|0)+8>>2];J[h+q>>2]=z;J[l+h>>2]=J[z+96>>2];u=q;h=a|1;q=h<<2;h=J[(j+(h<<4)|0)+8>>2];J[u+q>>2]=h;J[l+q>>2]=J[h+96>>2];a=a+2|0;d=d+2|0;if((r|0)!=(d|0)){continue}break}}if(!(m&1)){break l}d=a<<2;a=J[(j+(a<<4)|0)+8>>2];J[d+(c+160|0)>>2]=a;J[d+l>>2]=J[a+96>>2];break l}d=0;j=J[24];a=0;if(m>>>0>=4){z=m&-4;r=0;while(1){h=a<<2;q=c+160|0;J[h+q>>2]=0;J[l+h>>2]=j;u=h|4;J[u+q>>2]=0;J[l+u>>2]=j;u=h|8;J[u+q>>2]=0;J[l+u>>2]=j;h=h|12;J[h+q>>2]=0;J[l+h>>2]=j;a=a+4|0;r=r+4|0;if((z|0)!=(r|0)){continue}break}}m=m&3;if(!m){break l}while(1){r=a<<2;J[r+(c+160|0)>>2]=0;J[l+r>>2]=j;a=a+1|0;d=d+1|0;if((m|0)!=(d|0)){continue}break}break l}if(!(K[g+235|0]&2)){break k}break j}break a}PP(c+160|0,J[g+208>>2],J[g+212>>2],J[g+216>>2]);if(!(!J[J[c+336>>2]+20>>2]|K[c+368|0]!=1)){a=J[g+152>>2];o:{p:{if(!a){break p}d=J[a+4>>2];if(!d|(d|0)==J[a+8>>2]){break p}a=J[d+8>>2];if(a){break o}}a=J[J[J[g+148>>2]+16>>2]+8>>2]}a=J[a+96>>2];a=J[a+100>>2]+P(J[(J[a+76>>2]+(J[(J[a+24>>2]+P(J[g+200>>2],36)|0)+12>>2]<<2)|0)+(J[g+216>>2]<<2)>>2],56)|0;p=J[a+44>>2]+p|0;d=J[a+28>>2]>>>1|0;a=P(d,b);w=d+w|0;break i}if(K[g+235|0]&2){break j}}a=b<<2;p=p+6|0;w=w+4|0;break i}a=b<<4;p=p+54|0;w=w+16|0}da=((b+da|0)-ma|0)+a|0}ca=ca+1|0;if((ea|0)!=(ca|0)){continue}break}a=2;if(M[f+320>>2]>>0){break f}}a=(M[f+328>>2]

>>0)<<1}J[f+328>>2]=p;J[f+324>>2]=w;J[f+320>>2]=da;H[f+344|0]=a|K[f+344|0]&253;b=J[f+4>>2];d=J[f>>2];a=(b-d|0)/240|0;q:{if((b|0)!=(d|0)){if(K[f+344|0]&2){b=J[f+300>>2];if(b){bm(b);J[f+300>>2]=0}J[f+300>>2]=im(C,0);J[f+304>>2]=ml(J[f+304>>2],J[f+320>>2]);b=M[f+324>>2]<65537;H[f+344|0]=b|K[f+344|0]&254;J[f+336>>2]=ml(J[f+336>>2],J[f+328>>2]<<(b?1:2));b=J[f+312>>2];if(b){bm(b);J[f+312>>2]=0}J[f+312>>2]=im(C,1);H[f+344|0]=K[f+344|0]&253}l=zq(C,a);r=Su(C,313,314,f)<<6|16;m=a>>>0<=1?1:a;w=0;b=0;d=l;while(1){a=J[f>>2];if(!b&(J[f+4>>2]-a|0)/240>>>0<=w>>>0|b){break q}a=a+P(w,240)|0;g=L[a+234>>1];if((g&132)==132){r:{if(!(g&256)){g=J[a+156>>2];if(!g|!K[g+52|0]){break r}}p=J[a+148>>2];j=J[p>>2];g=c+160|0;J[g>>2]=0;J[g+4>>2]=0;J[g+16>>2]=0;J[g+8>>2]=0;J[g+12>>2]=0;Ek(g,j+12|0,4);j=J[a+156>>2];if(j){yr(j,g)}j=c+160|0;Ek(j,J[p+16>>2],J[p+20>>2]<<4);Ek(j,J[p+4>>2],4);g=J[a+152>>2];if(g){p=J[g>>2];if(p){Ek(j,p,4)}p=J[g+4>>2];Ek(c+160|0,p,J[g+8>>2]-p|0)}J[a+196>>2]=mn(c+160|0);I[a+234>>1]=L[a+234>>1]&65279}g=J[a+48>>2];p=J[a+52>>2];e=N[a+56>>2];J[d+16>>2]=w;J[d+20>>2]=b;N[d+8>>2]=e;J[d>>2]=g;J[d+4>>2]=p;J[d+28>>2]=J[a+196>>2];g=J[a+148>>2];a=J[a+152>>2];s:{if(a){a=J[a>>2];if(a){break s}}a=J[g+4>>2]}J[d+32>>2]=J[J[a>>2]+144>>2];J[d+36>>2]=r|J[d+36>>2]&-16384;J[76076]=J[76076]+1;J[c+8>>2]=1;J[c+12>>2]=0;J[c>>2]=1;J[c+4>>2]=0;d=d+48|0}w=w+1|0;b=w?b:b+1|0;if((m|0)!=(w|0)|b){continue}break}yq(C,l,d)}Ui=c+384|0;return 0}}Z(145396,53895,487,84789);B()}function hs(a,b){var c=0,d=0,e=0,f=0,g=0,h=0,i=0,j=0,k=0,l=0,m=0,n=0,o=0,p=0,q=0,r=0,s=0,t=0,u=0,v=0,w=0,x=0,y=0,z=0,A=0,B=0,C=0,D=0,E=0,F=0,G=0,H=0,I=0,L=0,M=0,N=0,O=0,P=0,Q=0,R=0,S=0,T=0,U=0,V=0,W=0,X=0,Y=0,Z=0,_=0,$=0,aa=0,ba=0,ca=0,da=0,ea=0,fa=0,ga=0,ha=0,ia=0,ja=0,ka=0,la=0,ma=0,na=0,oa=0,pa=0,qa=0,ra=0,sa=0,ta=0,ua=0,va=0,wa=0,xa=0,ya=0,za=0,Aa=0,Ba=0,Ca=0;d=K[b+52|0]|K[b+53|0]<<8|(K[b+54|0]<<16|K[b+55|0]<<24);d=d<<24|(d&65280)<<8|(d>>>8&65280|d>>>24);e=K[b+16|0]|K[b+17|0]<<8|(K[b+18|0]<<16|K[b+19|0]<<24);z=e<<24|(e&65280)<<8|(e>>>8&65280|e>>>24);e=K[b+8|0]|K[b+9|0]<<8|(K[b+10|0]<<16|K[b+11|0]<<24);l=e<<24|(e&65280)<<8|(e>>>8&65280|e>>>24);e=K[b+40|0]|K[b+41|0]<<8|(K[b+42|0]<<16|K[b+43|0]<<24);r=e<<24|(e&65280)<<8|(e>>>8&65280|e>>>24);e=K[b+60|0]|K[b+61|0]<<8|(K[b+62|0]<<16|K[b+63|0]<<24);i=e<<24|(e&65280)<<8|(e>>>8&65280|e>>>24);e=oxa(z^l^r^i,1);f=K[b+28|0]|K[b+29|0]<<8|(K[b+30|0]<<16|K[b+31|0]<<24);ra=f<<24|(f&65280)<<8|(f>>>8&65280|f>>>24);f=K[b+20|0]|K[b+21|0]<<8|(K[b+22|0]<<16|K[b+23|0]<<24);sa=f<<24|(f&65280)<<8|(f>>>8&65280|f>>>24);f=oxa(e^(d^(ra^sa)),1);c=K[b+48|0]|K[b+49|0]<<8|(K[b+50|0]<<16|K[b+51|0]<<24);m=c<<24|(c&65280)<<8|(c>>>8&65280|c>>>24);c=K[b+12|0]|K[b+13|0]<<8|(K[b+14|0]<<16|K[b+15|0]<<24);u=c<<24|(c&65280)<<8|(c>>>8&65280|c>>>24);c=K[b+4|0]|K[b+5|0]<<8|(K[b+6|0]<<16|K[b+7|0]<<24);j=c<<24|(c&65280)<<8|(c>>>8&65280|c>>>24);c=K[b+36|0]|K[b+37|0]<<8|(K[b+38|0]<<16|K[b+39|0]<<24);s=c<<24|(c&65280)<<8|(c>>>8&65280|c>>>24);c=K[b+56|0]|K[b+57|0]<<8|(K[b+58|0]<<16|K[b+59|0]<<24);q=c<<24|(c&65280)<<8|(c>>>8&65280|c>>>24);c=oxa(u^j^s^q,1);g=K[b+24|0]|K[b+25|0]<<8|(K[b+26|0]<<16|K[b+27|0]<<24);ta=g<<24|(g&65280)<<8|(g>>>8&65280|g>>>24);A=oxa(c^(m^(z^ta)),1);B=oxa(A^(i^(s^ra)),1);C=oxa(B^(e^(m^r)),1);g=oxa(C^(f^(d^i)),1);h=K[b+44|0]|K[b+45|0]<<8|(K[b+46|0]<<16|K[b+47|0]<<24);ma=h<<24|(h&65280)<<8|(h>>>8&65280|h>>>24);h=K[b|0]|K[b+1|0]<<8|(K[b+2|0]<<16|K[b+3|0]<<24);x=h<<24|(h&65280)<<8|(h>>>8&65280|h>>>24);b=K[b+32|0]|K[b+33|0]<<8|(K[b+34|0]<<16|K[b+35|0]<<24);y=b<<24|(b&65280)<<8|(b>>>8&65280|b>>>24);w=oxa(d^(x^l^y),1);b=oxa(ma^(u^sa)^w,1);D=oxa(b^(q^(y^ta)),1);E=oxa(D^(c^(s^ma)),1);F=oxa(E^(A^(m^q)),1);G=oxa(F^(B^(c^i)),1);H=oxa(G^(C^(e^A)),1);h=oxa(H^(f^B^g),1);I=oxa(f^(w^(r^y)),1);L=oxa(I^(b^(d^ma)),1);M=oxa(L^(q^w^D),1);N=oxa(M^(b^c^E),1);O=oxa(N^(A^D^F),1);P=oxa(O^(B^E^G),1);Q=oxa(P^(C^F^H),1);p=oxa(Q^(g^G^h),1);R=oxa(e^w^I^g,1);k=oxa(R^(b^f^L),1);S=oxa(C^I^R^h,1);v=oxa(S^(g^L^k),1);T=oxa(H^R^S^p,1);U=oxa(T^(h^k^v),1);V=oxa(D^I^M^k,1);W=oxa(V^(E^L^N),1);X=oxa(W^(F^M^O),1);Y=oxa(X^(G^N^P),1);Z=oxa(Y^(H^O^Q),1);_=oxa(Z^(h^P^p),1);$=oxa(_^(Q^S^T),1);aa=oxa($^(p^v^U),1);ba=oxa(M^R^V^v,1);ca=oxa(ba^(k^N^W),1);da=oxa(ca^(O^V^X),1);ea=oxa(da^(P^W^Y),1);fa=oxa(ea^(Q^X^Z),1);ga=oxa(fa^(p^Y^_),1);na=oxa(ga^(T^Z^$),1);ua=oxa(na^(U^_^aa),1);ha=oxa(S^V^ba^U,1);ia=oxa(ha^(v^W^ca),1);ja=oxa(ia^(X^ba^da),1);ka=oxa(ja^(Y^ca^ea),1);va=oxa(ka^(Z^da^fa),1);wa=oxa(va^(_^ea^ga),1);za=oxa(wa^($^fa^na),1);Aa=oxa(za^(aa^ga^ua),1);la=oxa(T^ba^ha^aa,1);xa=oxa(la^($^ha)^ua,1);oa=oxa(U^ca^ia^la,1);Ba=J[a+24>>2];pa=J[a+8>>2];n=Ba+(oxa(pa,5)+x|0)|0;qa=J[a+20>>2];ya=J[a+12>>2];x=J[a+16>>2];t=(n+(qa^ya&(x^qa))|0)+1518500249|0;n=oxa(t,30);o=j+qa|0;j=oxa(ya,30);o=((o+(x^(j^x)&pa)|0)+oxa(t,5)|0)+1518500249|0;Ca=l+x|0;l=oxa(pa,30);t=((Ca+(j^t&(l^j))|0)+oxa(o,5)|0)+1518500249|0;u=(oxa(t,5)+((j+u|0)+(l^o&(n^l))|0)|0)+1518500249|0;j=oxa(t,30);o=oxa(o,30);l=(((l+z|0)+(n^t&(o^n))|0)+oxa(u,5)|0)+1518500249|0;z=(oxa(l,5)+((n+sa|0)+(o^(j^o)&u)|0)|0)+1518500249|0;n=oxa(z,30);t=o+ta|0;o=oxa(u,30);t=((t+(j^l&(o^j))|0)+oxa(z,5)|0)+1518500249|0;l=oxa(l,30);u=(((j+ra|0)+(o^z&(l^o))|0)+oxa(t,5)|0)+1518500249|0;y=(oxa(u,5)+((o+y|0)+(l^t&(n^l))|0)|0)+1518500249|0;j=oxa(u,30);l=l+s|0;s=oxa(t,30);o=((l+(n^u&(s^n))|0)+oxa(y,5)|0)+1518500249|0;l=(oxa(o,5)+((n+r|0)+(s^y&(j^s))|0)|0)+1518500249|0;n=oxa(l,30);r=oxa(y,30);s=(((s+ma|0)+(j^o&(r^j))|0)+oxa(l,5)|0)+1518500249|0;j=j+m|0;m=oxa(o,30);j=((j+(r^l&(m^r))|0)+oxa(s,5)|0)+1518500249|0;r=(oxa(j,5)+((d+r|0)+(m^s&(n^m))|0)|0)+1518500249|0;d=oxa(j,30);m=m+q|0;q=oxa(s,30);j=((m+(n^j&(q^n))|0)+oxa(r,5)|0)+1518500249|0;n=(oxa(j,5)+((i+n|0)+(q^r&(d^q))|0)|0)+1518500249|0;i=oxa(n,30);m=oxa(j,30);l=q+w|0;q=oxa(r,30);w=((l+(d^j&(q^d))|0)+oxa(n,5)|0)+1518500249|0;c=(oxa(w,5)+((c+d|0)+(q^n&(m^q))|0)|0)+1518500249|0;d=oxa(c,30);n=oxa(w,30);b=(b+m|0)+(i^c&(n^i))|0;m=(oxa(c,5)+((e+q|0)+(m^w&(i^m))|0)|0)+1518500249|0;b=(b+oxa(m,5)|0)+1518500249|0;i=(oxa(b,5)+((i+A|0)+(m^(d^n))|0)|0)+1859775393|0;e=oxa(i,30);c=oxa(b,30);j=f+n|0;f=oxa(m,30);b=((j+(b^(f^d))|0)+oxa(i,5)|0)+1859775393|0;i=(oxa(b,5)+((d+D|0)+(i^(c^f))|0)|0)+1859775393|0;d=oxa(i,30);m=oxa(b,30);j=(c+I|0)+(i^(m^e))|0;c=(oxa(i,5)+((f+B|0)+(b^(c^e))|0)|0)+1859775393|0;b=(j+oxa(c,5)|0)+1859775393|0;i=(oxa(b,5)+((e+E|0)+(c^(d^m))|0)|0)+1859775393|0;e=oxa(i,30);f=oxa(b,30);c=oxa(c,30);b=(((m+C|0)+(b^(c^d))|0)+oxa(i,5)|0)+1859775393|0;i=(oxa(b,5)+((d+L|0)+(i^(c^f))|0)|0)+1859775393|0;d=oxa(i,30);j=f+g|0;g=oxa(b,30);c=(oxa(i,5)+((c+F|0)+(b^(e^f))|0)|0)+1859775393|0;b=((j+(i^(g^e))|0)+oxa(c,5)|0)+1859775393|0;i=(oxa(b,5)+((e+M|0)+(c^(d^g))|0)|0)+1859775393|0;e=oxa(i,30);f=oxa(b,30);c=oxa(c,30);b=(((g+G|0)+(b^(c^d))|0)+oxa(i,5)|0)+1859775393|0;g=(oxa(b,5)+((d+R|0)+(i^(c^f))|0)|0)+1859775393|0;d=oxa(g,30);i=oxa(b,30);c=(oxa(g,5)+((c+N|0)+(b^(e^f))|0)|0)+1859775393|0;b=(((f+H|0)+(g^(i^e))|0)+oxa(c,5)|0)+1859775393|0;g=(oxa(b,5)+((e+k|0)+(c^(d^i))|0)|0)+1859775393|0;f=oxa(g,30);k=oxa(c,30);e=(((i+O|0)+(b^(k^d))|0)+oxa(g,5)|0)+1859775393|0;c=d+h|0;h=oxa(b,30);c=((c+(g^(h^k))|0)+oxa(e,5)|0)+1859775393|0;b=(oxa(c,5)+((k+V|0)+(e^(f^h))|0)|0)+1859775393|0;d=oxa(c,30);k=h+P|0;h=oxa(e,30);e=((k+(c^(h^f))|0)+oxa(b,5)|0)+1859775393|0;c=(oxa(e,5)+((f+S|0)+(h&(b|d)|b&d)|0)|0)-1894007588|0;f=oxa(c,30);b=oxa(b,30);g=oxa(e,30);k=(d+Q|0)+(b&(g|c)|c&g)|0;c=(oxa(c,5)+((h+W|0)+(d&(b|e)|b&e)|0)|0)-1894007588|0;d=(k+oxa(c,5)|0)-1894007588|0;b=(oxa(d,5)+((b+v|0)+(g&(c|f)|c&f)|0)|0)-1894007588|0;e=oxa(d,30);c=oxa(c,30);d=(((g+X|0)+(f&(c|d)|c&d)|0)+oxa(b,5)|0)-1894007588|0;g=(oxa(d,5)+((f+p|0)+(c&(b|e)|b&e)|0)|0)-1894007588|0;f=oxa(g,30);b=oxa(b,30);h=oxa(d,30);c=(oxa(g,5)+((c+ba|0)+(e&(b|d)|b&d)|0)|0)-1894007588|0;d=(((e+Y|0)+(b&(h|g)|g&h)|0)+oxa(c,5)|0)-1894007588|0;b=(oxa(d,5)+((b+T|0)+(h&(c|f)|c&f)|0)|0)-1894007588|0;e=oxa(d,30);c=oxa(c,30);d=(((h+ca|0)+(f&(c|d)|c&d)|0)+oxa(b,5)|0)-1894007588|0;g=(oxa(d,5)+((f+Z|0)+(c&(b|e)|b&e)|0)|0)-1894007588|0;f=oxa(g,30);b=oxa(b,30);h=oxa(d,30);c=(oxa(g,5)+((c+U|0)+(e&(b|d)|b&d)|0)|0)-1894007588|0;d=(((e+da|0)+(b&(h|g)|g&h)|0)+oxa(c,5)|0)-1894007588|0;b=(oxa(d,5)+((b+_|0)+(h&(c|f)|c&f)|0)|0)-1894007588|0;e=oxa(d,30);c=oxa(c,30);d=(((h+ha|0)+(f&(c|d)|c&d)|0)+oxa(b,5)|0)-1894007588|0;g=(oxa(d,5)+((f+ea|0)+(c&(b|e)|b&e)|0)|0)-1894007588|0;f=oxa(g,30);b=oxa(b,30);h=oxa(d,30);d=(oxa(g,5)+((c+$|0)+(e&(b|d)|b&d)|0)|0)-1894007588|0;e=(((e+ia|0)+(b&(h|g)|g&h)|0)+oxa(d,5)|0)-1894007588|0;c=oxa(e,30);g=oxa(d,30);k=(h+aa|0)+(f&(g|e)|e&g)|0;h=(oxa(e,5)+((b+fa|0)+(h&(d|f)|d&f)|0)|0)-1894007588|0;b=(k+oxa(h,5)|0)-1894007588|0;f=(oxa(b,5)+((f+ja|0)+(h^(c^g))|0)|0)-899497514|0;d=oxa(f,30);e=oxa(b,30);k=g+ga|0;g=oxa(h,30);b=((k+(b^(g^c))|0)+oxa(f,5)|0)-899497514|0;c=(oxa(b,5)+((c+la|0)+(f^(e^g))|0)|0)-899497514|0;f=oxa(c,30);h=oxa(b,30);k=(e+na|0)+(c^(h^d))|0;c=(oxa(c,5)+((g+ka|0)+(b^(d^e))|0)|0)-899497514|0;b=(k+oxa(c,5)|0)-899497514|0;g=(oxa(b,5)+((d+oa|0)+(c^(f^h))|0)|0)-899497514|0;d=oxa(g,30);e=oxa(b,30);c=oxa(c,30);b=(((h+va|0)+(b^(c^f))|0)+oxa(g,5)|0)-899497514|0;g=(oxa(b,5)+((f+ua|0)+(g^(c^e))|0)|0)-899497514|0;f=oxa(g,30);h=oxa(b,30);p=(e+wa|0)+(g^(h^d))|0;k=c;c=oxa(da^ha^ja^oa,1);e=(((k+c|0)+(b^(d^e))|0)+oxa(g,5)|0)-899497514|0;b=(p+oxa(e,5)|0)-899497514|0;d=(oxa(b,5)+((d+xa|0)+(e^(f^h))|0)|0)-899497514|0;g=oxa(d,30);p=oxa(b,30);e=oxa(e,30);k=h;h=oxa(c^(ea^ia^ka),1);b=(((k+h|0)+(b^(e^f))|0)+oxa(d,5)|0)-899497514|0;d=(((f+za|0)+(d^(p^e))|0)+oxa(b,5)|0)-899497514|0;f=oxa(d,30);k=oxa(b,30);v=oxa(aa^ia^oa^xa,1);b=(((v+e|0)+(b^(g^p))|0)+oxa(d,5)|0)-899497514|0;i=p;p=oxa(h^(fa^ja^va),1);d=(((i+p|0)+(d^(g^k))|0)+oxa(b,5)|0)-899497514|0;e=(((g+Aa|0)+(f^k^b)|0)+oxa(d,5)|0)-899497514|0;g=oxa(e,30);J[a+24>>2]=g+Ba;i=k;k=oxa(v^(c^(ja^la)),1);b=oxa(b,30);c=(((i+k|0)+(d^(b^f))|0)+oxa(e,5)|0)-899497514|0;v=oxa(c,30);J[a+20>>2]=v+qa;p=oxa(p^(ga^ka^wa),1)+f|0;d=oxa(d,30);e=((p+(e^(d^b))|0)+oxa(c,5)|0)-899497514|0;J[a+16>>2]=oxa(e,30)+x;b=(((oxa(la^na^xa^Aa,1)+b|0)+(c^(d^g))|0)+oxa(e,5)|0)-899497514|0;J[a+12>>2]=b+ya;J[a+8>>2]=(((d+(oxa(k^(h^(ka^oa)),1)+pa|0)|0)+(e^(g^v))|0)+oxa(b,5)|0)-899497514;return 0}function YK(a,b,c,d,e,f,g,h,i){var j=0,k=Q(0),l=Q(0),m=Q(0),n=Q(0),o=Q(0),p=Q(0),q=Q(0),r=Q(0),s=Q(0),t=Q(0),u=Q(0),v=Q(0),w=Q(0),x=Q(0),y=Q(0),z=Q(0),A=Q(0),B=Q(0),C=Q(0),D=Q(0),E=Q(0),F=Q(0),G=Q(0),H=Q(0),I=Q(0),K=Q(0),M=Q(0),O=Q(0),P=Q(0),R=Q(0),S=Q(0),T=Q(0),U=Q(0),V=Q(0),W=Q(0),X=Q(0),Y=Q(0),Z=Q(0),_=Q(0),$=Q(0),aa=Q(0),ba=Q(0),ca=Q(0),da=Q(0),ea=Q(0),fa=Q(0),ga=Q(0),ha=Q(0),ia=Q(0),ja=Q(0),ka=Q(0),la=Q(0);j=Ui+-64|0;Ui=j;a:{b:{switch(f|0){case 0:J[j>>2]=L[i+32>>1];Zi[J[79428]](b,J[i>>2],J[j>>2],g,h);break a;case 9:J[j>>2]=L[i+32>>1];Zi[J[79429]](b,J[i>>2],J[j>>2]>>>2|0,g,h);break a;case 1:c:{switch(e-5|0){case 0:case 4:l=N[a+2428>>2];y=N[a+2424>>2];s=N[a+2416>>2];t=N[a+2420>>2];m=N[a+2444>>2];q=N[a+2440>>2];u=N[a+2432>>2];E=N[a+2436>>2];k=N[a+2460>>2];v=N[a+2456>>2];w=N[a+2448>>2];x=N[a+2452>>2];n=N[a+2476>>2];r=N[a+2472>>2];o=Q(r*Q(0));p=N[a+2464>>2];G=Q(p*Q(0));z=N[a+2468>>2];H=Q(z*Q(0));A=Q(G+H);N[j+60>>2]=n+Q(o+A);N[j+56>>2]=Q(n*Q(.5))+Q(Q(r*Q(.5))+A);n=Q(n*Q(0));N[j+52>>2]=n+Q(o+Q(G+z));N[j+48>>2]=n+Q(o+Q(p+H));n=Q(v*Q(0));o=Q(w*Q(0));r=Q(x*Q(0));p=Q(o+r);N[j+44>>2]=k+Q(n+p);N[j+40>>2]=Q(k*Q(.5))+Q(Q(v*Q(.5))+p);k=Q(k*Q(0));N[j+36>>2]=k+Q(n+Q(o+x));N[j+32>>2]=k+Q(n+Q(w+r));k=Q(q*Q(0));v=Q(u*Q(0));w=Q(E*Q(0));x=Q(v+w);N[j+28>>2]=m+Q(k+x);N[j+24>>2]=Q(m*Q(.5))+Q(Q(q*Q(.5))+x);m=Q(m*Q(0));N[j+20>>2]=m+Q(k+Q(v+E));N[j+16>>2]=m+Q(k+Q(u+w));m=Q(y*Q(0));k=Q(s*Q(0));q=Q(t*Q(0));u=Q(k+q);N[j+12>>2]=l+Q(m+u);N[j+8>>2]=Q(l*Q(.5))+Q(Q(y*Q(.5))+u);l=Q(l*Q(0));N[j+4>>2]=l+Q(m+Q(k+t));N[j>>2]=l+Q(m+Q(s+q));Zi[J[79429]](b,j,1,g,h);break a;default:break c}}Zi[J[79429]](b,a+2416|0,1,g,h);break a;case 2:Zi[J[79429]](b,c,1,g,h);break a;case 3:Zi[J[79429]](b,d,1,g,h);break a;case 4:Zi[J[79429]](b,a+2288|0,1,g,h);break a;case 5:d:{switch(e-5|0){case 0:case 4:l=N[a+2364>>2];y=N[a+2360>>2];s=N[a+2352>>2];t=N[a+2356>>2];m=N[a+2380>>2];q=N[a+2376>>2];u=N[a+2368>>2];E=N[a+2372>>2];k=N[a+2396>>2];v=N[a+2392>>2];w=N[a+2384>>2];x=N[a+2388>>2];n=N[a+2412>>2];r=N[a+2408>>2];o=Q(r*Q(0));p=N[a+2400>>2];G=Q(p*Q(0));z=N[a+2404>>2];H=Q(z*Q(0));A=Q(G+H);N[j+60>>2]=n+Q(o+A);N[j+56>>2]=Q(n*Q(.5))+Q(Q(r*Q(.5))+A);n=Q(n*Q(0));N[j+52>>2]=n+Q(o+Q(G+z));N[j+48>>2]=n+Q(o+Q(p+H));n=Q(v*Q(0));o=Q(w*Q(0));r=Q(x*Q(0));p=Q(o+r);N[j+44>>2]=k+Q(n+p);N[j+40>>2]=Q(k*Q(.5))+Q(Q(v*Q(.5))+p);k=Q(k*Q(0));N[j+36>>2]=k+Q(n+Q(o+x));N[j+32>>2]=k+Q(n+Q(w+r));k=Q(q*Q(0));v=Q(u*Q(0));w=Q(E*Q(0));x=Q(v+w);N[j+28>>2]=m+Q(k+x);N[j+24>>2]=Q(m*Q(.5))+Q(Q(q*Q(.5))+x);m=Q(m*Q(0));N[j+20>>2]=m+Q(k+Q(v+E));N[j+16>>2]=m+Q(k+Q(u+w));m=Q(y*Q(0));k=Q(s*Q(0));q=Q(t*Q(0));u=Q(k+q);N[j+12>>2]=l+Q(m+u);N[j+8>>2]=Q(l*Q(.5))+Q(Q(y*Q(.5))+u);l=Q(l*Q(0));N[j+4>>2]=l+Q(m+Q(k+t));N[j>>2]=l+Q(m+Q(s+q));Zi[J[79429]](b,j,1,g,h);break a;default:break d}}Zi[J[79429]](b,a+2352|0,1,g,h);break a;case 6:G=N[c+60>>2];z=N[c+56>>2];H=N[c+48>>2];A=N[c+52>>2];l=N[c+44>>2];m=N[a+2336>>2];p=N[c+40>>2];k=N[a+2320>>2];I=N[c+32>>2];y=N[a+2288>>2];K=N[c+36>>2];s=N[a+2304>>2];t=N[a+2344>>2];C=N[c+12>>2];q=N[a+2328>>2];D=N[c+8>>2];u=N[a+2296>>2];B=N[c>>2];E=N[a+2312>>2];F=N[c+4>>2];M=N[c+28>>2];v=N[a+2340>>2];O=N[c+24>>2];w=N[a+2324>>2];R=N[c+16>>2];x=N[a+2292>>2];S=N[c+20>>2];n=N[a+2308>>2];J[j+56>>2]=0;J[j+60>>2]=1065353216;J[j+48>>2]=0;J[j+52>>2]=0;P=Q(Q(m*C)+Q(Q(k*D)+Q(Q(y*B)+Q(s*F))));T=Q(Q(v*M)+Q(Q(w*O)+Q(Q(x*R)+Q(n*S))));V=Q(Q(v*C)+Q(Q(w*D)+Q(Q(x*B)+Q(F*n))));U=Q(Q(m*M)+Q(Q(k*O)+Q(Q(y*R)+Q(s*S))));o=Q(Q(P*T)-Q(V*U));W=o;o=Q(Q(t*l)+Q(Q(q*p)+Q(Q(u*I)+Q(E*K))));r=Q(Q(v*l)+Q(Q(w*p)+Q(Q(x*I)+Q(n*K))));C=Q(Q(t*C)+Q(Q(q*D)+Q(Q(u*B)+Q(F*E))));D=Q(Q(t*M)+Q(Q(q*O)+Q(Q(u*R)+Q(E*S))));B=Q(Q(C*U)-Q(P*D));F=Q(Q(V*D)-Q(C*T));p=Q(Q(m*l)+Q(Q(k*p)+Q(Q(y*I)+Q(s*K))));l=Q(Q(1)/Q(Q(W*o)+Q(Q(r*B)+Q(F*p))));I=Q(W*l);N[j+40>>2]=I;K=Q(B*l);N[j+36>>2]=K;B=Q(F*l);N[j+32>>2]=B;m=Q(Q(m*G)+Q(Q(k*z)+Q(Q(y*H)+Q(s*A))));k=Q(Q(v*G)+Q(Q(w*z)+Q(Q(x*H)+Q(n*A))));y=Q(Q(t*G)+Q(Q(q*z)+Q(Q(u*H)+Q(E*A))));N[j+44>>2]=-Q(Q(m*B)+Q(Q(k*K)+Q(y*I)));s=Q(Q(Q(p*V)-Q(r*P))*l);N[j+24>>2]=s;t=Q(Q(Q(o*P)-Q(p*C))*l);N[j+20>>2]=t;q=Q(Q(Q(r*C)-Q(o*V))*l);N[j+16>>2]=q;N[j+28>>2]=-Q(Q(m*q)+Q(Q(k*t)+Q(y*s)));s=Q(Q(Q(U*r)-Q(T*p))*l);N[j+8>>2]=s;t=Q(Q(Q(D*p)-Q(U*o))*l);N[j+4>>2]=t;l=Q(Q(Q(T*o)-Q(D*r))*l);N[j>>2]=l;N[j+12>>2]=-Q(Q(m*l)+Q(Q(k*t)+Q(y*s)));Zi[J[79429]](b,j,1,g,h);break a;case 7:l=N[c+12>>2];m=N[c+8>>2];k=N[c>>2];y=N[c+4>>2];s=N[c+28>>2];t=N[c+24>>2];q=N[c+16>>2];u=N[c+20>>2];E=N[c+44>>2];v=N[c+40>>2];w=N[c+32>>2];x=N[c+36>>2];n=N[a+2336>>2];o=N[a+2320>>2];r=N[a+2288>>2];p=N[a+2304>>2];G=N[a+2340>>2];z=N[a+2324>>2];H=N[a+2292>>2];A=N[a+2308>>2];I=N[a+2344>>2];K=N[a+2328>>2];C=N[a+2296>>2];D=N[a+2312>>2];B=N[a+2348>>2];F=N[c+60>>2];M=N[a+2332>>2];O=N[c+56>>2];R=N[a+2300>>2];S=N[c+48>>2];P=N[a+2316>>2];T=N[c+52>>2];N[j+60>>2]=Q(B*F)+Q(Q(M*O)+Q(Q(R*S)+Q(P*T)));N[j+56>>2]=Q(I*F)+Q(Q(K*O)+Q(Q(C*S)+Q(D*T)));N[j+52>>2]=Q(G*F)+Q(Q(z*O)+Q(Q(H*S)+Q(A*T)));N[j+48>>2]=Q(n*F)+Q(Q(o*O)+Q(Q(r*S)+Q(p*T)));N[j+44>>2]=Q(B*E)+Q(Q(M*v)+Q(Q(R*w)+Q(P*x)));N[j+40>>2]=Q(I*E)+Q(Q(K*v)+Q(Q(C*w)+Q(D*x)));N[j+36>>2]=Q(G*E)+Q(Q(z*v)+Q(Q(H*w)+Q(A*x)));N[j+32>>2]=Q(n*E)+Q(Q(o*v)+Q(Q(r*w)+Q(p*x)));N[j+28>>2]=Q(B*s)+Q(Q(M*t)+Q(Q(R*q)+Q(P*u)));N[j+24>>2]=Q(I*s)+Q(Q(K*t)+Q(Q(C*q)+Q(D*u)));N[j+20>>2]=Q(G*s)+Q(Q(z*t)+Q(Q(H*q)+Q(A*u)));N[j+16>>2]=Q(n*s)+Q(Q(o*t)+Q(Q(r*q)+Q(p*u)));N[j+12>>2]=Q(B*l)+Q(Q(M*m)+Q(Q(R*k)+Q(y*P)));N[j+8>>2]=Q(I*l)+Q(Q(K*m)+Q(Q(C*k)+Q(y*D)));N[j+4>>2]=Q(G*l)+Q(Q(z*m)+Q(Q(H*k)+Q(y*A)));N[j>>2]=Q(n*l)+Q(Q(o*m)+Q(Q(r*k)+Q(p*y)));Zi[J[79429]](b,j,1,g,h);break a;case 8:break b;default:break a}}e:{switch(e-5|0){case 0:case 4:l=N[c+12>>2];m=N[c+8>>2];k=N[c>>2];y=N[c+4>>2];s=N[c+28>>2];t=N[c+24>>2];q=N[c+16>>2];u=N[c+20>>2];E=N[c+44>>2];v=N[c+40>>2];w=N[c+32>>2];x=N[c+36>>2];B=N[a+2476>>2];I=N[a+2472>>2];R=Q(I*Q(0));V=N[a+2464>>2];U=Q(V*Q(0));X=N[a+2468>>2];_=Q(X*Q(0));K=Q(U+_);n=Q(B+Q(R+K));o=N[c+60>>2];F=N[a+2460>>2];C=N[a+2456>>2];S=Q(C*Q(0));$=N[a+2448>>2];Y=Q($*Q(0));W=N[a+2452>>2];aa=Q(W*Q(0));D=Q(Y+aa);r=Q(F+Q(S+D));p=N[c+56>>2];M=N[a+2428>>2];Z=N[a+2424>>2];P=Q(Z*Q(0));ba=N[a+2416>>2];ca=Q(ba*Q(0));da=N[a+2420>>2];ea=Q(da*Q(0));fa=Q(ca+ea);G=Q(M+Q(P+fa));z=N[c+48>>2];O=N[a+2444>>2];ga=N[a+2440>>2];T=Q(ga*Q(0));ha=N[a+2432>>2];ia=Q(ha*Q(0));ja=N[a+2436>>2];ka=Q(ja*Q(0));la=Q(ia+ka);H=Q(O+Q(T+la));A=N[c+52>>2];N[j+60>>2]=Q(n*o)+Q(Q(r*p)+Q(Q(G*z)+Q(H*A)));I=Q(Q(B*Q(.5))+Q(Q(I*Q(.5))+K));K=Q(Q(F*Q(.5))+Q(Q(C*Q(.5))+D));C=Q(Q(M*Q(.5))+Q(Q(Z*Q(.5))+fa));D=Q(Q(O*Q(.5))+Q(Q(ga*Q(.5))+la));N[j+56>>2]=Q(o*I)+Q(Q(p*K)+Q(Q(z*C)+Q(A*D)));Z=Q(B*Q(0));B=Q(Z+Q(R+Q(U+X)));U=Q(F*Q(0));F=Q(U+Q(S+Q(Y+W)));X=Q(M*Q(0));M=Q(X+Q(P+Q(ca+da)));Y=Q(O*Q(0));O=Q(Y+Q(T+Q(ia+ja)));N[j+52>>2]=Q(o*B)+Q(Q(p*F)+Q(Q(z*M)+Q(A*O)));W=o;o=Q(Z+Q(R+Q(V+_)));R=p;p=Q(U+Q(S+Q($+aa)));S=z;z=Q(X+Q(P+Q(ba+ea)));P=A;A=Q(Y+Q(T+Q(ha+ka)));N[j+48>>2]=Q(W*o)+Q(Q(R*p)+Q(Q(S*z)+Q(P*A)));N[j+44>>2]=Q(n*E)+Q(Q(r*v)+Q(Q(G*w)+Q(H*x)));N[j+40>>2]=Q(I*E)+Q(Q(K*v)+Q(Q(C*w)+Q(D*x)));N[j+36>>2]=Q(B*E)+Q(Q(F*v)+Q(Q(M*w)+Q(O*x)));N[j+32>>2]=Q(o*E)+Q(Q(p*v)+Q(Q(z*w)+Q(A*x)));N[j+28>>2]=Q(n*s)+Q(Q(r*t)+Q(Q(G*q)+Q(H*u)));N[j+24>>2]=Q(I*s)+Q(Q(K*t)+Q(Q(C*q)+Q(D*u)));N[j+20>>2]=Q(B*s)+Q(Q(F*t)+Q(Q(M*q)+Q(O*u)));N[j+16>>2]=Q(o*s)+Q(Q(p*t)+Q(Q(z*q)+Q(A*u)));N[j+12>>2]=Q(n*l)+Q(Q(r*m)+Q(Q(G*k)+Q(H*y)));N[j+8>>2]=Q(I*l)+Q(Q(K*m)+Q(Q(C*k)+Q(D*y)));N[j+4>>2]=Q(B*l)+Q(Q(F*m)+Q(Q(M*k)+Q(O*y)));N[j>>2]=Q(o*l)+Q(Q(p*m)+Q(Q(z*k)+Q(A*y)));Zi[J[79429]](b,j,1,g,h);break a;default:break e}}l=N[c+12>>2];m=N[c+8>>2];k=N[c>>2];y=N[c+4>>2];s=N[c+28>>2];t=N[c+24>>2];q=N[c+16>>2];u=N[c+20>>2];E=N[c+44>>2];v=N[c+40>>2];w=N[c+32>>2];x=N[c+36>>2];n=N[a+2464>>2];o=N[a+2448>>2];r=N[a+2416>>2];p=N[a+2432>>2];G=N[a+2468>>2];z=N[a+2452>>2];H=N[a+2420>>2];A=N[a+2436>>2];I=N[a+2472>>2];K=N[a+2456>>2];C=N[a+2424>>2];D=N[a+2440>>2];B=N[a+2476>>2];F=N[c+60>>2];M=N[a+2460>>2];O=N[c+56>>2];R=N[a+2428>>2];S=N[c+48>>2];P=N[a+2444>>2];T=N[c+52>>2];N[j+60>>2]=Q(B*F)+Q(Q(M*O)+Q(Q(R*S)+Q(P*T)));N[j+56>>2]=Q(I*F)+Q(Q(K*O)+Q(Q(C*S)+Q(D*T)));N[j+52>>2]=Q(G*F)+Q(Q(z*O)+Q(Q(H*S)+Q(A*T)));N[j+48>>2]=Q(n*F)+Q(Q(o*O)+Q(Q(r*S)+Q(p*T)));N[j+44>>2]=Q(B*E)+Q(Q(M*v)+Q(Q(R*w)+Q(P*x)));N[j+40>>2]=Q(I*E)+Q(Q(K*v)+Q(Q(C*w)+Q(D*x)));N[j+36>>2]=Q(G*E)+Q(Q(z*v)+Q(Q(H*w)+Q(A*x)));N[j+32>>2]=Q(n*E)+Q(Q(o*v)+Q(Q(r*w)+Q(p*x)));N[j+28>>2]=Q(B*s)+Q(Q(M*t)+Q(Q(R*q)+Q(P*u)));N[j+24>>2]=Q(I*s)+Q(Q(K*t)+Q(Q(C*q)+Q(D*u)));N[j+20>>2]=Q(G*s)+Q(Q(z*t)+Q(Q(H*q)+Q(A*u)));N[j+16>>2]=Q(n*s)+Q(Q(o*t)+Q(Q(r*q)+Q(p*u)));N[j+12>>2]=Q(B*l)+Q(Q(M*m)+Q(Q(R*k)+Q(y*P)));N[j+8>>2]=Q(I*l)+Q(Q(K*m)+Q(Q(C*k)+Q(y*D)));N[j+4>>2]=Q(G*l)+Q(Q(z*m)+Q(Q(H*k)+Q(y*A)));N[j>>2]=Q(n*l)+Q(Q(o*m)+Q(Q(r*k)+Q(p*y)));Zi[J[79429]](b,j,1,g,h)}Ui=j- -64|0} +function HI(a,b){var c=0,d=0,e=0,f=0,g=0,h=0,i=0,j=0,k=0,l=0;f=Ui-208|0;Ui=f;J[J[a+60>>2]+4>>2]=0;a:{b:{c:while(1){e=J[a>>2];while(1){d:{c=287;e:{f:{g:{h:{switch(e+1|0){case 11:case 14:eB(a);continue c;case 46:c=J[a+56>>2];e=J[c>>2];J[c>>2]=e-1;i:{if(e){d=c;c=J[c+4>>2];J[d+4>>2]=c+1;e=K[c|0];break i}e=Rk(c)}J[a>>2]=e;c=45;if((e|0)!=45){break a}c=J[a+56>>2];e=J[c>>2];J[c>>2]=e-1;j:{if(e){d=c;c=J[c+4>>2];J[d+4>>2]=c+1;e=K[c|0];break j}e=Rk(c)}J[a>>2]=e;if((e|0)==91){c=kw(a);J[J[a+60>>2]+4>>2]=0;if((c|0)>=0){break g}e=J[a>>2]}while(1){c=e+1|0;if(1<>>0<=14:0){continue c}c=J[a+56>>2];e=J[c>>2];J[c>>2]=e-1;if(e){d=c;c=J[c+4>>2];J[d+4>>2]=c+1;e=K[c|0];J[a>>2]=e}else{e=Rk(c);J[a>>2]=e}continue};case 92:c=kw(a);if((c|0)>=0){RG(a,b,c);c=286;break a}if((c|0)==-1){c=91;break a}b=f+128|0;Xn(b,J[a+64>>2]+16|0,80);c=J[a+52>>2];e=J[a+4>>2];J[f+24>>2]=33714;J[f+20>>2]=e;J[f+16>>2]=b;b=gk(c,30545,f+16|0);c=J[a+52>>2];vl(a,0);J[f+4>>2]=J[J[a+60>>2]>>2];J[f>>2]=b;gk(c,147143,f);al(J[a+52>>2],3);case 62:b=J[a+56>>2];c=J[b>>2];J[b>>2]=c-1;k:{if(c){c=b;b=J[b+4>>2];J[c+4>>2]=b+1;b=K[b|0];break k}b=Rk(b)}J[a>>2]=b;c=61;if((b|0)!=61){break a}b=J[a+56>>2];c=J[b>>2];J[b>>2]=c-1;l:{if(c){c=b;b=J[b+4>>2];J[c+4>>2]=b+1;b=K[b|0];break l}b=Rk(b)}J[a>>2]=b;c=280;break a;case 61:b=J[a+56>>2];c=J[b>>2];J[b>>2]=c-1;m:{if(c){c=b;b=J[b+4>>2];J[c+4>>2]=b+1;b=K[b|0];break m}b=Rk(b)}J[a>>2]=b;if((b|0)!=61){c=60;break a}b=J[a+56>>2];c=J[b>>2];J[b>>2]=c-1;n:{if(c){c=b;b=J[b+4>>2];J[c+4>>2]=b+1;b=K[b|0];break n}b=Rk(b)}J[a>>2]=b;c=282;break a;case 63:b=J[a+56>>2];c=J[b>>2];J[b>>2]=c-1;o:{if(c){c=b;b=J[b+4>>2];J[c+4>>2]=b+1;b=K[b|0];break o}b=Rk(b)}J[a>>2]=b;if((b|0)!=61){c=62;break a}b=J[a+56>>2];c=J[b>>2];J[b>>2]=c-1;p:{if(c){c=b;b=J[b+4>>2];J[c+4>>2]=b+1;b=K[b|0];break p}b=Rk(b)}J[a>>2]=b;c=281;break a;case 127:b=J[a+56>>2];c=J[b>>2];J[b>>2]=c-1;q:{if(c){c=b;b=J[b+4>>2];J[c+4>>2]=b+1;b=K[b|0];break q}b=Rk(b)}J[a>>2]=b;if((b|0)!=61){c=126;break a}b=J[a+56>>2];c=J[b>>2];J[b>>2]=c-1;r:{if(c){c=b;b=J[b+4>>2];J[c+4>>2]=b+1;b=K[b|0];break r}b=Rk(b)}J[a>>2]=b;c=283;break a;case 0:break a;case 47:break d;case 10:case 12:case 13:case 33:break e;case 35:case 40:break h;default:break f}}vl(a,e);c=J[a+56>>2];d=J[c>>2];J[c>>2]=d-1;s:{if(d){d=c;c=J[c+4>>2];J[d+4>>2]=c+1;c=K[c|0];break s}c=Rk(c)}J[a>>2]=c;if((c|0)!=(e|0)){while(1){t:{u:{v:{switch(c+1|0){case 0:c=f+128|0;Xn(c,J[a+64>>2]+16|0,80);d=J[a+52>>2];g=J[a+4>>2];J[f+56>>2]=56470;J[f+52>>2]=g;J[f+48>>2]=c;c=gk(d,30545,f+48|0);d=J[a+52>>2];J[f+36>>2]=102377;J[f+32>>2]=c;gk(d,147143,f+32|0);al(J[a+52>>2],3);c=J[a>>2];break t;case 11:case 14:c=f+128|0;Xn(c,J[a+64>>2]+16|0,80);d=J[a+52>>2];g=J[a+4>>2];J[f+88>>2]=56470;J[f+84>>2]=g;J[f+80>>2]=c;c=gk(d,30545,f+80|0);d=J[a+52>>2];vl(a,0);J[f+68>>2]=J[J[a+60>>2]>>2];J[f+64>>2]=c;gk(d,147143,f- -64|0);al(J[a+52>>2],3);c=J[a>>2];break t;default:if((c|0)==92){break u}break;case 1:case 2:case 3:case 4:case 5:case 6:case 7:case 8:case 9:case 10:case 12:case 13:break v}}vl(a,c);c=J[a+56>>2];d=J[c>>2];J[c>>2]=d-1;w:{if(d){d=c;c=J[c+4>>2];J[d+4>>2]=c+1;c=K[c|0];break w}c=Rk(c)}J[a>>2]=c;break t}c=J[a+56>>2];d=J[c>>2];J[c>>2]=d-1;x:{if(d){d=c;c=J[c+4>>2];J[d+4>>2]=c+1;d=K[c|0];break x}d=Rk(c)}J[a>>2]=d;c=7;y:{z:{A:{B:{C:{D:{switch(d-97|0){default:switch(d+1|0){case 0:break B;case 11:case 14:break C;default:break A};case 5:c=12;break y;case 13:c=10;break y;case 17:c=13;break y;case 19:c=9;break y;case 0:break y;case 1:break z;case 2:case 3:case 4:case 6:case 7:case 8:case 9:case 10:case 11:case 12:case 14:case 15:case 16:case 18:case 20:break A;case 21:break D}}c=11;break y}vl(a,10);eB(a)}c=J[a>>2];break t}E:{F:{c=d-48|0;if(c>>>0<=9){d=J[a+56>>2];g=J[d>>2];J[d>>2]=g-1;if(!g){break F}h=d;d=J[d+4>>2];J[h+4>>2]=d+1;d=K[d|0];break E}vl(a,d);c=J[a+56>>2];d=J[c>>2];J[c>>2]=d-1;if(d){d=c;c=J[c+4>>2];J[d+4>>2]=c+1;J[a>>2]=K[c|0];c=J[a>>2];break t}J[a>>2]=Rk(c);c=J[a>>2];break t}d=Rk(d)}J[a>>2]=d;G:{if(d-48>>>0>9){break G}g=J[a+56>>2];h=J[g>>2];J[g>>2]=h-1;c=(d+P(c,10)|0)-48|0;H:{if(h){d=J[g+4>>2];J[g+4>>2]=d+1;d=K[d|0];break H}d=Rk(g)}J[a>>2]=d;if(d-48>>>0>9){break G}g=J[a+56>>2];h=J[g>>2];J[g>>2]=h-1;c=(d+P(c,10)|0)-48|0;I:{if(h){d=J[g+4>>2];J[g+4>>2]=d+1;d=K[d|0];break I}d=Rk(g)}J[a>>2]=d;if(c>>>0<256){break G}d=f+128|0;Xn(d,J[a+64>>2]+16|0,80);g=J[a+52>>2];h=J[a+4>>2];J[f+120>>2]=68122;J[f+116>>2]=h;J[f+112>>2]=d;d=gk(g,30545,f+112|0);g=J[a+52>>2];vl(a,0);J[f+100>>2]=J[J[a+60>>2]>>2];J[f+96>>2]=d;gk(g,147143,f+96|0);al(J[a+52>>2],3)}vl(a,c);c=J[a>>2];break t}c=8}vl(a,c);c=J[a+56>>2];d=J[c>>2];J[c>>2]=d-1;if(d){d=c;c=J[c+4>>2];J[d+4>>2]=c+1;J[a>>2]=K[c|0];c=J[a>>2];break t}J[a>>2]=Rk(c);c=J[a>>2]}if((c|0)!=(e|0)){continue}break}}vl(a,e);c=J[a+56>>2];e=J[c>>2];J[c>>2]=e-1;J:{if(e){d=c;c=J[c+4>>2];J[d+4>>2]=c+1;c=K[c|0];break J}c=Rk(c)}J[a>>2]=c;e=J[a+52>>2];c=J[a+60>>2];c=zk(e,J[c>>2]+1|0,J[c+4>>2]-2|0);a=mu(e,J[J[a+48>>2]+4>>2],c);if(!J[a+8>>2]){J[a+8>>2]=1;J[a>>2]=1}J[b>>2]=c;c=286;break a}RG(a,0,c);J[J[a+60>>2]+4>>2]=0;continue c}if(e-48>>>0<=9){break b}if(!((e|0)!=95&(e|32)-97>>>0>25)){while(1){vl(a,e);c=J[a+56>>2];e=J[c>>2];J[c>>2]=e-1;K:{if(e){d=c;c=J[c+4>>2];J[d+4>>2]=c+1;e=K[c|0];break K}e=Rk(c)}J[a>>2]=e;if(e-48>>>0<10|(e|32)-97>>>0<26|(e|0)==95){continue}break}e=J[a+52>>2];c=J[a+60>>2];c=zk(e,J[c>>2],J[c+4>>2]);a=mu(e,J[J[a+48>>2]+4>>2],c);if(!J[a+8>>2]){J[a+8>>2]=1;J[a>>2]=1}a=K[c+6|0];if(a){c=a|256;break a}J[b>>2]=c;c=285;break a}b=J[a+56>>2];c=J[b>>2];J[b>>2]=c-1;L:{if(c){c=b;b=J[b+4>>2];J[c+4>>2]=b+1;b=K[b|0];break L}b=Rk(b)}J[a>>2]=b;c=e;break a}c=J[a+56>>2];e=J[c>>2];J[c>>2]=e-1;if(e){d=c;c=J[c+4>>2];J[d+4>>2]=c+1;e=K[c|0];J[a>>2]=e}else{e=Rk(c);J[a>>2]=e}continue}break}break}vl(a,46);c=J[a+56>>2];e=J[c>>2];J[c>>2]=e-1;M:{if(e){d=c;c=J[c+4>>2];J[d+4>>2]=c+1;c=K[c|0];break M}c=Rk(c)}J[a>>2]=c;e=c&255;if(!(e?(e|0)!=46:0)){vl(a,c);b=J[a+56>>2];c=J[b>>2];J[b>>2]=c-1;N:{if(c){c=b;b=J[b+4>>2];J[c+4>>2]=b+1;b=K[b|0];break N}b=Rk(b)}J[a>>2]=b;c=b&255;if(!((c|0)==46|!c)){c=278;break a}vl(a,b);b=J[a+56>>2];c=J[b>>2];J[b>>2]=c-1;O:{if(c){c=b;b=J[b+4>>2];J[c+4>>2]=b+1;b=K[b|0];break O}b=Rk(b)}J[a>>2]=b;c=279;break a}if(c-48>>>0<=9){break b}c=46;break a}g=Ui-112|0;Ui=g;c=a;a=J[a>>2];while(1){vl(c,a);a=J[c+56>>2];e=J[a>>2];J[a>>2]=e-1;P:{if(e){d=a;a=J[a+4>>2];J[d+4>>2]=a+1;a=K[a|0];break P}a=Rk(a)}J[c>>2]=a;if((a|0)==46|a-48>>>0<10){continue}break}e=a&255;Q:{if(!(!e|(e|0)==101)&(e|0)!=69){break Q}vl(c,a);a=J[c+56>>2];e=J[a>>2];J[a>>2]=e-1;R:{if(e){d=a;a=J[a+4>>2];J[d+4>>2]=a+1;a=K[a|0];break R}a=Rk(a)}J[c>>2]=a;d=a&255;if(d>>>0>63){break Q}e=d&31;if((d&63)>>>0>=32){d=1<>>32-e}if(!(h&1|d&10240)){break Q}vl(c,a);a=J[c+56>>2];e=J[a>>2];J[a>>2]=e-1;S:{if(e){d=a;a=J[a+4>>2];J[d+4>>2]=a+1;a=K[a|0];break S}a=Rk(a)}J[c>>2]=a}if((a|0)!=95){d=a-48>>>0<10|(a|32)-97>>>0<26}else{d=1}if(d){while(1){vl(c,a);a=J[c+56>>2];e=J[a>>2];J[a>>2]=e-1;T:{if(e){d=a;a=J[a+4>>2];J[d+4>>2]=a+1;a=K[a|0];break T}a=Rk(a)}J[c>>2]=a;e=a-48>>>0<10|(a|32)-97>>>0<26;if(e|(a|0)==95){continue}break}}vl(c,0);a=J[c+60>>2];e=J[a>>2];d=J[a+4>>2];if(d){h=K[c+68|0];a=d;k=a&3;if(k){while(1){a=a-1|0;i=e+a|0;if(K[i|0]==46){H[i|0]=h}j=j+1|0;if((k|0)!=(j|0)){continue}break}}if(d>>>0>=4){d=e-3|0;k=e-2|0;i=e-1|0;while(1){j=a+i|0;if(K[j|0]==46){H[j|0]=h}j=a+k|0;if(K[j|0]==46){H[j|0]=h}j=a+d|0;if(K[j|0]==46){H[j|0]=h}a=a-4|0;j=e+a|0;if(K[j|0]==46){H[j|0]=h}if(a){continue}break}}e=J[J[c+60>>2]>>2]}U:{if(mq(e,b)){break U}h=K[c+68|0];k=K[J[50997]];H[c+68|0]=k;a=J[c+60>>2];e=J[a>>2];d=J[a+4>>2];if(d){a=d;j=a&3;if(j){i=0;while(1){a=a-1|0;l=e+a|0;if((h|0)==K[l|0]){H[l|0]=k}i=i+1|0;if((j|0)!=(i|0)){continue}break}}if(d>>>0>=4){d=e-3|0;i=e-2|0;j=e-1|0;while(1){l=a+j|0;if((h|0)==K[l|0]){H[l|0]=k}l=a+i|0;if((h|0)==K[l|0]){H[l|0]=k}l=a+d|0;if((h|0)==K[l|0]){H[l|0]=k}a=a-4|0;l=e+a|0;if((h|0)==K[l|0]){H[l|0]=k}if(a){continue}break}}e=J[J[c+60>>2]>>2]}if(mq(e,b)){break U}a=J[c+60>>2];b=J[a+4>>2];V:{if(!b){break V}e=J[a>>2];d=K[c+68|0];a=b;h=a&3;if(h){i=0;while(1){a=a-1|0;k=e+a|0;if((d|0)==K[k|0]){H[k|0]=46}i=i+1|0;if((h|0)!=(i|0)){continue}break}}if(b>>>0<4){break V}b=e-3|0;h=e-2|0;k=e-1|0;while(1){i=a+k|0;if((d|0)==K[i|0]){H[i|0]=46}i=a+h|0;if((d|0)==K[i|0]){H[i|0]=46}i=a+b|0;if((d|0)==K[i|0]){H[i|0]=46}a=a-4|0;i=e+a|0;if((d|0)==K[i|0]){H[i|0]=46}if(a){continue}break}}a=g+32|0;Xn(a,J[c+64>>2]+16|0,80);b=J[c+52>>2];e=J[c+4>>2];J[g+24>>2]=35927;J[g+20>>2]=e;J[g+16>>2]=a;a=gk(b,30545,g+16|0);b=J[c+52>>2];vl(c,0);J[g+4>>2]=J[J[c+60>>2]>>2];J[g>>2]=a;gk(b,147143,g);al(J[c+52>>2],3)}Ui=g+112|0;c=284}Ui=f+208|0;return c}function Tia(a){a=a|0;var b=Q(0),c=Q(0),d=0,e=0,f=Q(0),g=Q(0),h=Q(0),i=Q(0),j=0,k=Q(0),l=Q(0),m=0,n=Q(0),o=Q(0),p=Q(0),q=Q(0),r=Q(0),s=Q(0),t=Q(0),u=Q(0),v=0,w=Q(0),x=0,y=Q(0),z=Q(0),A=Q(0),C=Q(0),D=Q(0),E=0,F=0,G=0,I=0,L=0,M=Q(0),O=Q(0),R=Q(0),S=Q(0),T=Q(0),U=Q(0),V=Q(0),W=0,X=Q(0),Y=Q(0),_=Q(0),$=Q(0),aa=Q(0),ba=Q(0),ca=Q(0),da=Q(0),ea=0,fa=Q(0),ga=Q(0),ha=Q(0),ia=Q(0),ja=Q(0),ka=Q(0),la=Q(0),ma=Q(0),na=Q(0),oa=Q(0),pa=0,qa=0,ra=0,sa=Q(0),ta=Q(0),ua=Q(0),va=Q(0),wa=Q(0),xa=Q(0),ya=Q(0),za=0,Aa=0,Ba=0;d=Ui-144|0;Ui=d;Aa=J[J[a+8>>2]>>2];E=J[a+4>>2];J[d+140>>2]=0;a:{b:{c:{d:{e:{F=J[E+4>>2];a=J[E>>2];f:{if((F|0)==(a|0)){break f}a=F-a>>2;j=a>>>0<=1?1:a;while(1){a=J[E>>2];if(J[E+4>>2]-a>>2>>>0<=ra>>>0){break b}e=J[a+(ra<<2)>>2];if((K[e+262|0]&5)==5){m=op(J[e>>2]);u=N[e+16>>2];w=N[e+20>>2];p=N[e+28>>2];h=N[e+24>>2];q=N[e+56>>2];c=N[e+52>>2];t=N[e+48>>2];F=J[e+32>>2];a=J[e+36>>2];n=N[e+40>>2];J[d+124>>2]=1065353216;N[d+120>>2]=n;J[d+112>>2]=F;J[d+116>>2]=a;N[d+76>>2]=t*Q(0);N[d+92>>2]=c*Q(0);N[d+108>>2]=q*Q(0);f=Q(w+w);b=Q(u*f);k=Q(h+h);n=Q(p*k);N[d+68>>2]=t*Q(b+n);r=Q(u*k);o=Q(f*p);N[d+72>>2]=t*Q(r-o);N[d+80>>2]=c*Q(b-n);i=Q(w*k);b=Q(u+u);n=Q(p*b);N[d+88>>2]=c*Q(i+n);N[d+96>>2]=q*Q(r+o);N[d+100>>2]=q*Q(i-n);n=Q(Q(1)-Q(u*b));b=Q(h*k);N[d+84>>2]=c*Q(n-b);c=n;n=Q(w*f);N[d+104>>2]=q*Q(c-n);N[d+64>>2]=t*Q(Q(Q(1)-n)-b);g:{if((K[J[e>>2]+137|0]&2)>>>1|0){fa=N[m+60>>2];ga=N[m+44>>2];ha=N[m+12>>2];ia=N[m+28>>2];ja=N[m+48>>2];ka=N[m+32>>2];la=N[m>>2];ma=N[m+16>>2];na=N[m+52>>2];oa=N[m+36>>2];y=N[m+4>>2];z=N[m+20>>2];g=N[d+108>>2];A=N[d+104>>2];C=N[d+96>>2];s=N[d+100>>2];l=N[d+124>>2];D=N[d+120>>2];u=N[d+112>>2];w=N[d+116>>2];q=N[d+76>>2];c=N[d+72>>2];t=N[d+64>>2];p=N[d+68>>2];h=N[m+56>>2];k=N[d+92>>2];f=N[m+40>>2];r=N[d+88>>2];o=N[m+8>>2];i=N[d+80>>2];b=N[m+24>>2];n=N[d+84>>2];M=Q(Q(h*k)+Q(Q(f*r)+Q(Q(o*i)+Q(b*n))));N[e+88>>2]=M;O=Q(Q(na*k)+Q(Q(oa*r)+Q(Q(y*i)+Q(z*n))));N[e+84>>2]=O;R=Q(Q(ja*k)+Q(Q(ka*r)+Q(Q(la*i)+Q(ma*n))));N[e+80>>2]=R;S=Q(Q(fa*q)+Q(Q(ga*c)+Q(Q(ha*t)+Q(p*ia))));N[e+76>>2]=S;T=Q(Q(h*q)+Q(Q(f*c)+Q(Q(o*t)+Q(p*b))));N[e+72>>2]=T;U=Q(Q(na*q)+Q(Q(oa*c)+Q(Q(y*t)+Q(p*z))));N[e+68>>2]=U;V=Q(Q(ja*q)+Q(Q(ka*c)+Q(Q(la*t)+Q(ma*p))));N[e+64>>2]=V;X=Q(Q(fa*l)+Q(Q(ga*D)+Q(Q(ha*u)+Q(ia*w))));Y=Q(Q(h*l)+Q(Q(f*D)+Q(Q(o*u)+Q(b*w))));_=Q(Q(na*l)+Q(Q(oa*D)+Q(Q(y*u)+Q(z*w))));$=Q(Q(ja*l)+Q(Q(ka*D)+Q(Q(la*u)+Q(ma*w))));aa=Q(Q(fa*g)+Q(Q(ga*A)+Q(Q(ha*C)+Q(ia*s))));ba=Q(Q(h*g)+Q(Q(f*A)+Q(Q(o*C)+Q(b*s))));ca=Q(Q(na*g)+Q(Q(oa*A)+Q(Q(y*C)+Q(z*s))));da=Q(Q(ja*g)+Q(Q(ka*A)+Q(Q(la*C)+Q(ma*s))));n=Q(Q(fa*k)+Q(Q(ga*r)+Q(Q(ha*i)+Q(ia*n))));break g}Jp(d,m,d- -64|0);V=N[d>>2];N[e+64>>2]=V;U=N[d+4>>2];N[e+68>>2]=U;T=N[d+8>>2];N[e+72>>2]=T;S=N[d+12>>2];N[e+76>>2]=S;R=N[d+16>>2];N[e+80>>2]=R;O=N[d+20>>2];N[e+84>>2]=O;M=N[d+24>>2];N[e+88>>2]=M;X=N[d+60>>2];Y=N[d+56>>2];_=N[d+52>>2];$=N[d+48>>2];aa=N[d+44>>2];ba=N[d+40>>2];ca=N[d+36>>2];da=N[d+32>>2];n=N[d+28>>2]}N[e+124>>2]=X;N[e+120>>2]=Y;N[e+116>>2]=_;N[e+112>>2]=$;N[e+108>>2]=aa;N[e+104>>2]=ba;N[e+100>>2]=ca;N[e+96>>2]=da;N[e+92>>2]=n;I=0;ea=0;a=J[e+132>>2];if(a){ea=a+112|0}a=J[e+232>>2];e=J[e+228>>2];if((a|0)!=(e|0)){I=a-e>>7;F=I>>>0<=1?1:I;W=0;while(1){x=e+(W<<7)|0;if(H[x+124|0]&1){v=J[x+104>>2];m=J[x+116>>2];h:{if((m|0)!=-1){a=J[ea>>2];if(m>>>0>=(J[ea+4>>2]-a|0)/176>>>0){break a}a=a+P(m,176)|0;C=N[a+88>>2];ta=Q(C*Q(0));s=N[v+24>>2];l=N[a+80>>2];ua=Q(l*Q(0));D=N[v+16>>2];u=N[a+84>>2];va=Q(u*Q(0));w=N[v+20>>2];g=Q(Q(Q(ta*s)+Q(Q(ua*D)+Q(va*w)))+Q(1));A=N[a+48>>2];r=Q(A+A);t=N[a+56>>2];q=Q(t+t);o=Q(A*q);f=N[a+52>>2];p=Q(f+f);h=N[a+60>>2];i=Q(p*h);wa=Q(Q(o-i)*l);xa=N[a+72>>2];k=Q(Q(1)-Q(A*r));b=Q(f*p);ya=Q(Q(k-b)*C);f=Q(f*q);r=Q(r*h);fa=Q(Q(f+r)*u);c=Q(xa+Q(Q(ya*s)+Q(Q(wa*D)+Q(fa*w))));ga=N[a+64>>2];ha=Q(Q(o+i)*C);o=Q(t*q);ia=Q(Q(Q(Q(1)-b)-o)*l);i=Q(A*p);b=Q(h*q);ja=Q(Q(i-b)*u);h=Q(ga+Q(Q(ha*s)+Q(Q(ia*D)+Q(ja*w))));ka=N[a+68>>2];la=Q(Q(f-r)*C);ma=Q(Q(i+b)*l);na=Q(Q(k-o)*u);b=Q(ka+Q(Q(la*s)+Q(Q(ma*D)+Q(na*w))));A=Q(Q(X*g)+Q(Q(aa*c)+Q(Q(S*h)+Q(n*b))));C=Q(Q(Y*g)+Q(Q(ba*c)+Q(Q(T*h)+Q(M*b))));s=Q(Q(_*g)+Q(Q(ca*c)+Q(Q(U*h)+Q(O*b))));l=Q(Q($*g)+Q(Q(da*c)+Q(Q(V*h)+Q(R*b))));c=N[v+40>>2];D=Q(c*Q(0));sa=N[v>>2];b=Q(sa+sa);t=N[v+8>>2];y=Q(t+t);h=Q(sa*y);i=N[v+4>>2];o=Q(i+i);p=N[v+12>>2];k=Q(o*p);u=Q(Q(h+k)*c);f=Q(Q(1)-Q(sa*b));r=Q(i*o);w=Q(Q(f-r)*c);i=Q(i*y);b=Q(b*p);c=Q(Q(i-b)*c);z=Q(D+Q(Q(ta*w)+Q(Q(ua*u)+Q(va*c))));g=Q(Q(xa*D)+Q(Q(ya*w)+Q(Q(wa*u)+Q(fa*c))));q=Q(Q(ga*D)+Q(Q(ha*w)+Q(Q(ia*u)+Q(ja*c))));c=Q(Q(ka*D)+Q(Q(la*w)+Q(Q(ma*u)+Q(na*c))));D=Q(Q(X*z)+Q(Q(aa*g)+Q(Q(S*q)+Q(n*c))));u=Q(Q(Y*z)+Q(Q(ba*g)+Q(Q(T*q)+Q(M*c))));w=Q(Q(_*z)+Q(Q(ca*g)+Q(Q(U*q)+Q(O*c))));q=Q(Q($*z)+Q(Q(da*g)+Q(Q(V*q)+Q(R*c))));g=N[v+36>>2];oa=Q(g*Q(0));c=Q(Q(i+b)*g);o=Q(sa*o);i=Q(p*y);p=Q(Q(o-i)*g);b=Q(t*y);f=Q(Q(f-b)*g);y=Q(oa+Q(Q(ta*c)+Q(Q(ua*p)+Q(va*f))));z=Q(Q(xa*oa)+Q(Q(ya*c)+Q(Q(wa*p)+Q(fa*f))));g=Q(Q(ga*oa)+Q(Q(ha*c)+Q(Q(ia*p)+Q(ja*f))));f=Q(Q(ka*oa)+Q(Q(la*c)+Q(Q(ma*p)+Q(na*f))));c=Q(Q(X*y)+Q(Q(aa*z)+Q(Q(S*g)+Q(n*f))));t=Q(Q(Y*y)+Q(Q(ba*z)+Q(Q(T*g)+Q(M*f))));p=Q(Q(_*y)+Q(Q(ca*z)+Q(Q(U*g)+Q(O*f))));f=Q(Q($*y)+Q(Q(da*z)+Q(Q(V*g)+Q(R*f))));g=N[v+32>>2];y=Q(g*Q(0));z=Q(Q(h-k)*g);r=Q(Q(Q(Q(1)-r)-b)*g);b=Q(Q(o+i)*g);g=Q(y+Q(Q(ta*z)+Q(Q(ua*r)+Q(va*b))));h=Q(Q(xa*y)+Q(Q(ya*z)+Q(Q(wa*r)+Q(fa*b))));k=Q(Q(ga*y)+Q(Q(ha*z)+Q(Q(ia*r)+Q(ja*b))));b=Q(Q(ka*y)+Q(Q(la*z)+Q(Q(ma*r)+Q(na*b))));r=Q(Q(X*g)+Q(Q(aa*h)+Q(Q(S*k)+Q(n*b))));o=Q(Q(Y*g)+Q(Q(ba*h)+Q(Q(T*k)+Q(M*b))));i=Q(Q(_*g)+Q(Q(ca*h)+Q(Q(U*k)+Q(O*b))));b=Q(Q($*g)+Q(Q(da*h)+Q(Q(V*k)+Q(R*b))));break h}c=N[v+40>>2];s=Q(c*Q(0));g=N[v>>2];b=Q(g+g);t=N[v+8>>2];A=Q(t+t);h=Q(g*A);i=N[v+4>>2];o=Q(i+i);p=N[v+12>>2];k=Q(o*p);l=Q(Q(h+k)*c);f=Q(Q(1)-Q(g*b));r=Q(i*o);q=Q(Q(f-r)*c);i=Q(i*A);b=Q(b*p);c=Q(Q(i-b)*c);D=Q(Q(X*s)+Q(Q(aa*q)+Q(Q(S*l)+Q(n*c))));u=Q(Q(Y*s)+Q(Q(ba*q)+Q(Q(T*l)+Q(M*c))));w=Q(Q(_*s)+Q(Q(ca*q)+Q(Q(U*l)+Q(O*c))));q=Q(Q($*s)+Q(Q(da*q)+Q(Q(V*l)+Q(R*c))));c=N[v+36>>2];C=Q(c*Q(0));s=Q(Q(i+b)*c);o=Q(g*o);i=Q(p*A);l=Q(Q(o-i)*c);b=Q(t*A);f=Q(Q(f-b)*c);c=Q(Q(X*C)+Q(Q(aa*s)+Q(Q(S*l)+Q(n*f))));t=Q(Q(Y*C)+Q(Q(ba*s)+Q(Q(T*l)+Q(M*f))));p=Q(Q(_*C)+Q(Q(ca*s)+Q(Q(U*l)+Q(O*f))));f=Q(Q($*C)+Q(Q(da*s)+Q(Q(V*l)+Q(R*f))));s=N[v+32>>2];l=Q(s*Q(0));h=Q(Q(h-k)*s);k=Q(Q(Q(Q(1)-r)-b)*s);b=Q(Q(o+i)*s);r=Q(Q(X*l)+Q(Q(aa*h)+Q(Q(S*k)+Q(n*b))));o=Q(Q(Y*l)+Q(Q(ba*h)+Q(Q(T*k)+Q(M*b))));i=Q(Q(_*l)+Q(Q(ca*h)+Q(Q(U*k)+Q(O*b))));b=Q(Q($*l)+Q(Q(da*h)+Q(Q(V*k)+Q(R*b))));l=N[v+24>>2];h=N[v+16>>2];k=N[v+20>>2];A=Q(X+Q(Q(aa*l)+Q(Q(S*h)+Q(n*k))));C=Q(Y+Q(Q(ba*l)+Q(Q(T*h)+Q(M*k))));s=Q(_+Q(Q(ca*l)+Q(Q(U*h)+Q(O*k))));l=Q($+Q(Q(da*l)+Q(Q(V*h)+Q(R*k))))}N[x+60>>2]=A;N[x+56>>2]=C;N[x+52>>2]=s;N[x+48>>2]=l;N[x+44>>2]=D;N[x+40>>2]=u;N[x+36>>2]=w;N[x+32>>2]=q;N[x+28>>2]=c;N[x+24>>2]=t;N[x+20>>2]=p;N[x+16>>2]=f;N[x+12>>2]=r;N[x+8>>2]=o;N[x+4>>2]=i;N[x>>2]=b}W=W+1|0;if((F|0)!=(W|0)){continue}break}}G=G+I|0}ra=ra+1|0;if((j|0)!=(ra|0)){continue}break}if((J[E+60>>2]-J[E+52>>2]|0)/336>>>0>=G>>>0){break f}if(H[E+64|0]&1){break e}lj(G,336,E+52|0,E+60|0,E+56|0)}a=J[E+4>>2];ea=J[E>>2];I=a-ea>>2;e=(a|0)==(ea|0);if(e){break c}a=I>>>0<=1?1:I;m=a&1;if(I>>>0<2){a=0;break d}j=a&-2;a=0;G=0;while(1){F=ea+(a<<2)|0;W=J[F>>2];if(K[W+262|0]&2){L=(J[W+232>>2]-J[W+228>>2]>>7)+L|0}F=J[F+4>>2];if(K[F+262|0]&2){L=(J[F+232>>2]-J[F+228>>2]>>7)+L|0}a=a+2|0;G=G+2|0;if((j|0)!=(G|0)){continue}break}break d}Z(151729,53895,501,2284);B()}if(!m){break c}a=J[ea+(a<<2)>>2];if(!(K[a+262|0]&2)){break c}L=(J[a+232>>2]-J[a+228>>2]>>7)+L|0}F=zq(Aa,L);j=Su(Aa,754,755,E);a=F;i:{if(!e){x=J[E+128>>2];ra=I>>>0<=1?1:I;I=j<<6;e=0;while(1){j=J[E>>2];if(J[E+4>>2]-j>>2>>>0<=za>>>0){break b}qa=J[j+(za<<2)>>2];j:{if(!(K[qa+262|0]&2)){break j}m=J[qa+232>>2];j=J[qa+228>>2];if((m|0)==(j|0)){break j}j=m-j>>7;ea=j>>>0<=1?1:j;L=0;while(1){j=J[qa+228>>2];if(J[qa+232>>2]-j>>7>>>0<=L>>>0){break a}pa=j+(L<<7)|0;if(H[pa+124|0]&1){v=J[J[pa+100>>2]+8>>2];j=J[qa+208>>2];if(!j){j=J[qa+128>>2];m=J[j+28>>2];G=(J[j+32>>2]-m|0)/24|0;j=J[pa+120>>2];if(G>>>0<=j>>>0){break i}j=J[(m+P(j,24)|0)+4>>2]}W=x>>>0>e+v>>>0;e=W?e:0;G=J[j>>2];m=J[pa+48>>2];j=J[pa+52>>2];n=N[pa+56>>2];J[a+16>>2]=pa;J[a+20>>2]=0;N[a+8>>2]=n;J[a>>2]=m;J[a+4>>2]=j;J[a+28>>2]=J[pa+112>>2];J[a+32>>2]=J[G+144>>2];j=Ba+1|0;Ba=W?Ba:j>>>0>=15?15:j;J[a+36>>2]=Ba&15|(I|J[a+36>>2]&-16336);j=sr(G,1);G=J[a+36>>2]&-49;k:{if(j){J[a+24>>2]=0;break k}G=G|16}e=e+v|0;J[a+36>>2]=G;a=a+48|0}L=L+1|0;if((ea|0)!=(L|0)){continue}break}}za=za+1|0;if((ra|0)!=(za|0)){continue}break}}yq(Aa,F,a);Ui=d+144|0;return 0}}Z(145396,53895,494,84789);B()}Z(145396,53895,487,84789);B()}function mS(a,b,c,d,e,f,g,h,i){var j=0,k=0,l=0,m=0,n=0,o=0,p=0,q=0,r=0,s=0,t=0,u=0,v=0,w=0,x=0,y=0,z=0,A=0,C=0,D=0,E=0,F=0;k=Ui-144|0;Ui=k;l=-4;a:{b:{if(!(H[a+32|0]&1)){break b}q=k+52|0;l=q;J[l>>2]=0;J[l+4>>2]=0;J[l+16>>2]=0;J[l+8>>2]=0;J[l+12>>2]=0;l=bl();i=NJ(b,q,h,i);c:{if((e|0)<=0){break c}e=(l-bl()|0)+e|0;if((e|0)>0){break c}l=-2;break b}J[k+120>>2]=J[q+16>>2];h=J[q+12>>2];J[k+112>>2]=J[q+8>>2];J[k+116>>2]=h;h=J[q+4>>2];J[k+104>>2]=J[q>>2];J[k+108>>2]=h;I[k+128>>1]=c;H[k+48|0]=d;h=k+72|0;go(h,0);em(h,k+104|0,20);em(h,k+128|0,2);em(h,k+48|0,1);x=jp(h);y=Yi;d:{if(!i){n=J[a+28>>2];Tj(n);i=J[a+8>>2];p=J[a+12>>2];l=bl();j=Yi;if((i|0)!=(p|0)){h=p-i>>6;p=h>>>0<=1?1:h;i=0;while(1){h=J[a+8>>2];if(J[a+12>>2]-h>>6>>>0<=i>>>0){break a}h=h+(i<<6)|0;e:{if(J[h+48>>2]!=1){break e}m=J[h+36>>2];if((m|0)==(j|0)&M[h+32>>2]>l>>>0|j>>>0>>0){break e}m=J[h+40>>2];if(m){Ku(m);J[h+40>>2]=0}m=J[h+44>>2];if((m|0)!=-1){sq(m);Ln(J[h+44>>2])}J[h+40>>2]=0;J[h+44>>2]=0;J[h>>2]=0;J[h+4>>2]=0;J[h+56>>2]=0;J[h+60>>2]=0;J[h+48>>2]=0;J[h+52>>2]=0;J[h+32>>2]=0;J[h+36>>2]=0;J[h+24>>2]=0;J[h+28>>2]=0;J[h+16>>2]=0;J[h+20>>2]=0;J[h+8>>2]=0;J[h+12>>2]=0;J[h+44>>2]=-1}i=i+1|0;if((p|0)!=(i|0)){continue}break}}f:{i=J[a+12>>2];l=J[a+8>>2];if((i|0)==(l|0)){break f}h=1;p=i-l>>6;j=p>>>0<=1?1:p;l=0;g:{h:{i:{j:{switch(J[q>>2]-1|0){case 0:while(1){i=J[a+8>>2];if(J[a+12>>2]-i>>6>>>0<=l>>>0){break a}i=i+(l<<6)|0;if(!(J[i+48>>2]!=1|((x|0)!=J[i+24>>2]|(y|0)!=J[i+28>>2]))){if(vB(J[i+44>>2])){break g}}l=l+1|0;h=p>>>0>l>>>0;if((j|0)!=(l|0)){continue}break};break i;case 1:break j;default:break h}}while(1){i=J[a+8>>2];if(J[a+12>>2]-i>>6>>>0<=l>>>0){break a}i=i+(l<<6)|0;if(!(J[i+48>>2]!=1|((x|0)!=J[i+24>>2]|(y|0)!=J[i+28>>2]))){if(uB(J[i+44>>2])){break g}}l=l+1|0;h=p>>>0>l>>>0;if((j|0)!=(l|0)){continue}break}}if(!h){break f}l=0;Lj(n);break b}if(p>>>0>j-1>>>0){break f}break a}J[i+48>>2]=2;I[i+56>>1]=L[i+56>>1]+1;p=L[a+24>>1];p=p>>>0<=1?1:p;I[a+24>>1]=p+1;I[i+54>>1]=p;J[f>>2]=l&65535|p<<16;if(!h){break f}l=0;Lj(n);break b}h=J[a+12>>2];i=J[a+8>>2];if((h|0)!=(i|0)){if(!J[i+48>>2]){h=i;p=0;break d}m=h-i>>6;o=m>>>0<=1?1:m;p=o-1|0;h=0;l=0;k:{while(1){l=l+1|0;if((o|0)==(l|0)){break k}j=i+(l<<6)|0;if(J[j+48>>2]){continue}break}p=l;h=j}if(l>>>0>>0){break d}}l=-1;Lj(n);break b}J[g>>2]=-100;l=-2;break b}J[h+48>>2]=2;Lj(n);J[k+48>>2]=-1;J[k+44>>2]=0;J[k+120>>2]=J[q+16>>2];i=J[q+12>>2];J[k+112>>2]=J[q+8>>2];J[k+116>>2]=i;i=J[q+4>>2];J[k+104>>2]=J[q>>2];J[k+108>>2]=i;l=bl();m=Yi;J[k+88>>2]=J[k+120>>2];i=J[k+116>>2];J[k+80>>2]=J[k+112>>2];J[k+84>>2]=i;j=J[k+108>>2];i=J[k+104>>2];J[k+72>>2]=i;J[k+76>>2]=j;i=i-1|0;if(i>>>0<=2){i=J[(i<<2)+183100>>2]}else{i=0}i=GG(i,1,6);J[k+48>>2]=i;if((i|0)<0){i=Pm(36957,219,J[245744])}else{i=0}J[g>>2]=i;l:{m:{n:{o:{p:{q:{if(i){break q}i=J[k+48>>2];r:{s:{if((e|0)>0){j=IJ(i,0);J[g>>2]=j;i=J[k+48>>2];if(j){break r}J[k+16>>2]=J[k+120>>2];j=J[k+116>>2];J[k+8>>2]=J[k+112>>2];J[k+12>>2]=j;j=J[k+108>>2];J[k>>2]=J[k+104>>2];J[k+4>>2]=j;i=OJ(i,k,c);J[g>>2]=i;if(i){break s}n=KJ(k+128|0);i=n;j=J[i+4>>2];o=J[i>>2];if((j|0)!=(o|0)){J[i+4>>2]=j+((o-j|0)+7&-8)}i=1;JJ(n,1,J[k+48>>2]);o=LJ(n,e);J[g>>2]=o;j=J[k+48>>2];t:{if((o|0)!=-3){j=IJ(j,1);J[g>>2]=j;if(!j){break t}j=J[k+48>>2]}Ln(j);i=0}u:{if(H[n+12|0]&1){break u}j=J[n>>2];if(!j){break u}cj(j)}if(!i){break q}i=bl();j=i-l|0;if((Yi|0)==((i>>>0>>0)+m|0)&e>>>0>=j>>>0){break o}Ln(J[k+48>>2]);J[k+48>>2]=-1;l=-2;break n}J[k+40>>2]=J[k+88>>2];l=J[k+84>>2];J[k+32>>2]=J[k+80>>2];J[k+36>>2]=l;l=J[k+76>>2];J[k+24>>2]=J[k+72>>2];J[k+28>>2]=l;i=OJ(i,k+24|0,c);J[g>>2]=i;if(!i){break p}}i=J[k+48>>2]}Ln(i)}J[k+48>>2]=-1;l=-2;break n}bl()}if(!d){break m}A=J[k+48>>2];i=e;v=i>>31;n=Ui-624|0;Ui=n;l=bl();o=Zj(1,48);d=Zj(1,188);J[o+8>>2]=d;r=Zj(1,320);J[o+4>>2]=r;e=Zj(1,632);J[o>>2]=e;j=Zj(1,280);J[o+12>>2]=j;s=Zj(1,16);J[o+16>>2]=s;ij(d,0,188);TH(r);EH(e);e=SH(r,e,13919);v:{if(e){J[n+100>>2]=e;J[n+96>>2]=Ju(e);J[n+104>>2]=(e|0)<0?45:32;b=e>>31;J[n+108>>2]=(b^e)-b;dj(4,99340,143106,n+96|0);b=-2e3;break v}m=0;H[d+166|0]=255;H[d+167|0]=255;H[d+168|0]=255;H[d+169|0]=255;I[d+164>>1]=0;J[d+160>>2]=16;J[d+152>>2]=1e3;J[d+156>>2]=6e4;H[d+170|0]=255;H[d+171|0]=255;J[d+184>>2]=J[d+184>>2]&-40464|40456;J[d+180>>2]=16974595;if(!K[874672]){t=183152;u=874688;w=52392;while(1){e=280672;z=52392;w:{while(1){if((w|0)!=(z|0)){z=J[e+40>>2];e=e+40|0;if(z){continue}break w}break}e=J[e+8>>2]-36|0;if(1<>>0<=6:0){break w}J[u>>2]=w;m=m+4|0}u=m+874688|0;w=J[t+4>>2];if(w){t=t+4|0;if((m|0)<548){continue}}break}J[u>>2]=0;H[874672]=1}J[d+8>>2]=874688;J[d+12>>2]=874688;J[d+4>>2]=874688;J[d+80>>2]=183112;J[d>>2]=874688;J[d+96>>2]=286240;e=IH();J[d+176>>2]=1024;J[d+100>>2]=e;J[d+28>>2]=r;J[d+24>>2]=2269;J[d+184>>2]=J[d+184>>2]&-13;kx();kx();t=!(i|v);if(!t){J[d+156>>2]=(((i|0)<=5e5?5e5:i)>>>0)/1e3;J[d+152>>2]=1}J[s+8>>2]=i;J[s+12>>2]=v;Iw(j);if(J[218810]){J[d+184>>2]=J[d+184>>2]&-13|8;e=J[218810];J[d+92>>2]=0;J[d+88>>2]=e}J[j+184>>2]=0;J[j>>2]=d;m=Zj(1,16749);J[j+100>>2]=m;e=-32512;x:{y:{if(!m){m=0;break y}r=Zj(1,16749);J[j+184>>2]=r;if(!r){break y}e=m;m=(J[d+184>>2]^-1)<<2&8;e=e+m|0;J[j+108>>2]=e;m=m+r|0;J[j+192>>2]=m;r=J[d+184>>2]&2;u=m+(r?13:5)|0;J[j+204>>2]=u;J[j+200>>2]=u;J[j+196>>2]=m+(r?11:3);J[j+188>>2]=m+(r?3:-8);d=J[d+184>>2]&2;m=e+(d?13:5)|0;J[j+120>>2]=m;J[j+116>>2]=m;J[j+112>>2]=e+(d?11:3);J[j+104>>2]=e+(d?3:-8);e=iw(j);d=0;if(!e){break x}m=J[j+100>>2]}cj(m);cj(J[j+184>>2]);J[j>>2]=0;J[j+116>>2]=0;J[j+120>>2]=0;J[j+108>>2]=0;J[j+112>>2]=0;J[j+100>>2]=0;J[j+104>>2]=0;J[j+200>>2]=0;J[j+204>>2]=0;J[j+192>>2]=0;J[j+196>>2]=0;J[j+184>>2]=0;J[j+188>>2]=0;d=e}if(d){J[n+68>>2]=d;J[n+64>>2]=Ju(d);J[n+72>>2]=(d|0)<0?45:32;b=d>>31;J[n+76>>2]=(b^d)-b;dj(4,99340,143009,n- -64|0);b=-2001;break v}e=0;z:{A:{if(!b){break A}e=yj(b);if(e>>>0<=255){break A}d=-28928;break z}d=J[j+236>>2];if(d){D=d,E=0,F=yj(d),C=J[66509],Zi[C](D|0,E|0,F|0)|0;cj(J[j+236>>2])}if(!b){J[j+236>>2]=0;d=0;break z}m=Zj(1,e+1|0);J[j+236>>2]=m;d=-32512;if(!m){break z}H[hj(m,b,e)+e|0]=0;d=0}b=d;if(b){J[n+52>>2]=b;J[n+48>>2]=Ju(b);J[n+56>>2]=(b|0)<0?45:32;b=b>>31;J[n+60>>2]=(d^b)-b;dj(4,99340,143054,n+48|0);b=-2001;break v}J[s>>2]=-1;J[s>>2]=A;J[j+44>>2]=2304;J[j+40>>2]=0;J[j+36>>2]=2303;J[j+48>>2]=s;J[j+96>>2]=2306;J[j+92>>2]=2305;J[j+88>>2]=o;nK(o,0,0);while(1){b=-28928;d=J[o+12>>2];B:{if(!d){break B}if(!J[d>>2]){break B}while(1){b=0;if(J[d+4>>2]==16){break B}b=-28928;e=J[d>>2];if(!e){break B}b=-28800;if(H[e+184|0]&1){break B}b=Zr(d);if(!b){continue}break}}d=b;if((d&-129)==-26880){continue}break}b=bl();C:{D:{E:{F:{if(t){break F}b=b-l|0;e=b>>31;if((v|0)==(e|0)&b>>>0<=i>>>0|e>>>0>>0){break F}b=n+112|0;ij(b,0,512);H[b|0]=0;J[n+32>>2]=-26624;J[n+36>>2]=b;dj(4,99340,31529,n+32|0);break E}if(!d){break C}b=n+112|0;ij(b,0,512);H[b|0]=0;J[n+16>>2]=d;J[n+20>>2]=b;dj(4,99340,31529,n+16|0);if((d|0)==-9984){e=123739;b=-2003;break D}b=-2001;if((d|0)!=-26624){break v}}e=9566;b=-2002}dj(4,99340,e,0);break v}G:{H:{d=J[o+12>>2];b=J[d+60>>2];if(b){break H}b=J[d+64>>2];if(b){break H}b=-1;break G}b=J[b+104>>2]}if(b){j=n+112|0;l=j;e=Ui-32|0;Ui=e;m=280496;i=74571;d=512;I:{while(1){o=J[m>>2];if(o&b){J[e+20>>2]=i;J[e+16>>2]=154406;i=Dn(l,d,154578,e+16|0);if((i|0)<0|d>>>0<=i>>>0){break I}d=d-i|0;l=i+l|0;b=b^o}i=J[m+12>>2];m=m+8|0;if(i){continue}break}if(b){J[e>>2]=154406;b=Dn(l,d,158501,e);if((b|0)<0|b>>>0>=d>>>0){break I}}}Ui=e+32|0;J[n>>2]=j;dj(4,99340,154818,n);b=-2001;break v}J[k+44>>2]=o;b=0}Ui=n+624|0;if(!b){break m}J[k+44>>2]=0;J[g>>2]=(b|0)==-2002?-3:-1e3;l=-3}i=J[a+28>>2];Tj(i);J[h+48>>2]=0;a=J[h+40>>2];if(a){Ku(a);J[h+40>>2]=0}a=J[h+44>>2];if((a|0)!=-1){sq(a);Ln(J[h+44>>2])}J[h+40>>2]=0;J[h+44>>2]=0;J[h>>2]=0;J[h+4>>2]=0;J[h+56>>2]=0;J[h+60>>2]=0;J[h+48>>2]=0;J[h+52>>2]=0;J[h+32>>2]=0;J[h+36>>2]=0;J[h+24>>2]=0;J[h+28>>2]=0;J[h+16>>2]=0;J[h+20>>2]=0;J[h+8>>2]=0;J[h+12>>2]=0;J[h+44>>2]=-1;break l}i=J[a+28>>2];Tj(i);b=L[a+24>>1];b=b>>>0<=1?1:b;I[a+24>>1]=b+1;I[h+54>>1]=b;J[f>>2]=p&65535|b<<16;J[h+44>>2]=J[k+48>>2];b=J[k+44>>2];l=0;I[h+56>>1]=0;J[h+24>>2]=x;J[h+28>>2]=y;J[h+40>>2]=b;J[h+48>>2]=2;a=ixa(J[a>>2],J[a+4>>2],1e6,0);d=Yi;e=bl();b=e+a|0;a=Yi+d|0;J[h+32>>2]=b;J[h+36>>2]=b>>>0>>0?a+1|0:a;a=J[q+4>>2];J[h>>2]=J[q>>2];J[h+4>>2]=a;a=J[q+12>>2];J[h+8>>2]=J[q+8>>2];J[h+12>>2]=a;J[h+16>>2]=J[q+16>>2];I[h+52>>1]=c;H[h+58|0]=K[h+58|0]&254}Lj(i)}Ui=k+144|0;return l}Z(145396,54052,487,84789);B()}function oba(a){a=a|0;var b=0,c=0,d=0,e=0,f=0,g=0,h=0,i=0,j=0;f=Ui-176|0;Ui=f;a:{b:{c:{d:{if(!J[79491]){d=nj(224);e=ij(d,0,224);J[e+188>>2]=1;b=K[a+32|0]<<1&2;I[e+220>>1]=b;I[e+220>>1]=b|K[a+32|0]<<1&4;h=J[a+8>>2];J[e+176>>2]=h;i=J[a+12>>2];J[e+180>>2]=i;J[e+164>>2]=J[a+16>>2];J[e+168>>2]=J[a+20>>2];b=J[a>>2];J[e+48>>2]=b;J[e+52>>2]=J[a+4>>2];if(!h){J[e+176>>2]=2}if(!i){J[e+180>>2]=2}e:{if(Ts(b,1)){b=J[e+204>>2];J[e+200>>2]=J[e+200>>2]|63;J[e+204>>2]=b;J[e+192>>2]=J[e+192>>2]|1;if(H[e+120|0]&1){break a}lj(1024,4,e+108|0,e+116|0,e+112|0);if(H[e+136|0]&1){break a}lj(256,4,e+124|0,e+132|0,e+128|0);break e}Z(143438,40535,561,9319);B()}J[79491]=d;I[d+220>>1]=L[d+220>>1]|8;i=f+112|0;I[i+2>>1]=448;I[i+4>>1]=65532;I[i>>1]=1343;I[i+8>>1]=L[i+8>>1]&59392|512;I[i+6>>1]=L[i+6>>1]&49152|31;b=J[f+124>>2];J[d+152>>2]=J[f+120>>2];J[d+156>>2]=b;b=J[f+116>>2];J[d+144>>2]=J[f+112>>2];J[d+148>>2]=b;I[d+220>>1]=L[d+220>>1]|16;b=ua(7938)|0;I[d+220>>1]=L[d+220>>1]&65527|!Bm(b,131255)<<3;b=bd()|0;if(!b){break d}$(b|0,17245)|0;$(b|0,5728)|0;$(b|0,16791)|0;$(b|0,16839)|0;$(b|0,3017)|0;$(b|0,71356)|0;$(b|0,52642)|0;$(b|0,70833)|0;$(b|0,99345)|0;$(b|0,80670)|0;$(b|0,80747)|0;$(b|0,82277)|0;$(b|0,105728)|0;$(b|0,66344)|0;$(b|0,12742)|0;$(b|0,43561)|0;$(b|0,21501)|0;$(b|0,16890)|0;$(b|0,36182)|0;$(b|0,16867)|0;$(b|0,36152)|0;$(b|0,16193)|0;$(b|0,109244)|0;$(b|0,16814)|0;$(b|0,80546)|0;$(b|0,80860)|0;$(b|0,110106)|0;$(b|0,80609)|0;$(b|0,80984)|0;$(b|0,82775)|0;$(b|0,44176)|0;$(b|0,19541)|0;$(b|0,62774)|0;$(b|0,19379)|0;$(b|0,9186)|0;$(b|0,6790)|0;b=ua(7939)|0;if(!b){break c}b=Gk(b);J[d+72>>2]=b;J[f+112>>2]=0;j=fp(b,154413,i);if(j){h=d- -64|0;e=d+60|0;i=d+56|0;while(1){g=J[e>>2];b=J[h>>2];if((g|0)==(b|0)){if(H[d+68|0]&1){break a}lj((g-J[i>>2]>>2)+4|0,4,i,h,e);g=J[e>>2];b=J[h>>2]}if((b|0)==(g|0)){break b}J[e>>2]=g+4;J[g>>2]=j;j=fp(0,154413,f+112|0);if(j){continue}break}}if(!J[79489]){J[79489]=mP(34562,34484,d)}if(!J[79490]){J[79490]=mP(19454,19385,d)}f:{g:{h:{b=J[d+60>>2];e=J[d+56>>2];i:{if((b|0)!=(e|0)){b=b-e>>2;h=b>>>0<=1?1:b;j:{k:{while(1){if(!jj(80576,J[e+(c<<2)>>2])){break k}c=c+1|0;if((h|0)!=(c|0)){continue}break}c=0;while(1){if(!jj(80609,J[e+(c<<2)>>2])){break k}c=c+1|0;if((h|0)!=(c|0)){continue}break}break j}b=J[d+204>>2];J[d+200>>2]=J[d+200>>2]|3840;J[d+204>>2]=b}c=0;l:{m:{while(1){if(!jj(62870,J[e+(c<<2)>>2])){break m}c=c+1|0;if((h|0)!=(c|0)){continue}break}c=0;while(1){if(!jj(80860,J[e+(c<<2)>>2])){break m}c=c+1|0;if((h|0)!=(c|0)){continue}break}c=0;while(1){if(!jj(110106,J[e+(c<<2)>>2])){break m}c=c+1|0;if((h|0)!=(c|0)){continue}break}break l}b=J[d+204>>2];J[d+200>>2]=J[d+200>>2]|4096;J[d+204>>2]=b}c=0;n:{o:{while(1){if(!jj(80952,J[e+(c<<2)>>2])){break o}c=c+1|0;if((h|0)!=(c|0)){continue}break}c=0;while(1){if(!jj(80984,J[e+(c<<2)>>2])){break o}c=c+1|0;if((h|0)!=(c|0)){continue}break}break n}b=J[d+204>>2];J[d+200>>2]=J[d+200>>2]|393216;J[d+204>>2]=b}c=0;p:{q:{while(1){if(!jj(80776,J[e+(c<<2)>>2])){break q}c=c+1|0;if((h|0)!=(c|0)){continue}break}c=0;while(1){if(!jj(80744,J[e+(c<<2)>>2])){break q}c=c+1|0;if((h|0)!=(c|0)){continue}break}c=0;while(1){if(!jj(80747,J[e+(c<<2)>>2])){break q}c=c+1|0;if((h|0)!=(c|0)){continue}break}break p}b=J[d+204>>2];J[d+200>>2]=J[d+200>>2]|1572864;J[d+204>>2]=b}c=0;r:{s:{while(1){if(!jj(80699,J[e+(c<<2)>>2])){break s}c=c+1|0;if((h|0)!=(c|0)){continue}break}c=0;while(1){if(!jj(80667,J[e+(c<<2)>>2])){break s}c=c+1|0;if((h|0)!=(c|0)){continue}break}c=0;while(1){if(!jj(80670,J[e+(c<<2)>>2])){break s}c=c+1|0;if((h|0)!=(c|0)){continue}break}break r}b=J[d+204>>2];J[d+200>>2]=J[d+200>>2]|2097152;J[d+204>>2]=b}c=0;t:{while(1){if(jj(1804,J[e+(c<<2)>>2])){c=c+1|0;if((h|0)!=(c|0)){continue}break t}break}b=J[d+204>>2];J[d+200>>2]=J[d+200>>2]|32768;J[d+204>>2]=b}c=0;u:{v:{w:{while(1){if(!jj(36054,J[e+(c<<2)>>2])){break w}c=c+1|0;if((h|0)!=(c|0)){continue}break}c=0;while(1){if(!jj(80514,J[e+(c<<2)>>2])){break w}c=c+1|0;if((h|0)!=(c|0)){continue}break}c=0;while(1){if(!jj(80517,J[e+(c<<2)>>2])){break w}c=c+1|0;if((h|0)!=(c|0)){continue}break}c=0;while(1){if(!jj(80546,J[e+(c<<2)>>2])){break w}c=c+1|0;if((h|0)!=(c|0)){continue}break}break v}j=L[d+220>>1]|8192;I[d+220>>1]=j;break u}j=L[d+220>>1]}if(j&8){break i}c=0;break h}j=L[d+220>>1];if(!(j&8)){break f}}b=J[d+204>>2];J[d+200>>2]=J[d+200>>2]|1069547520;J[d+204>>2]=b;break g}x:{while(1){if(jj(16839,J[e+(c<<2)>>2])){c=c+1|0;if((h|0)!=(c|0)){continue}break x}break}b=J[d+204>>2];J[d+200>>2]=J[d+200>>2]|20971520;J[d+204>>2]=b}c=0;y:{while(1){if(jj(16814,J[e+(c<<2)>>2])){c=c+1|0;if((h|0)!=(c|0)){continue}break y}break}b=J[d+204>>2];J[d+200>>2]=J[d+200>>2]|41943040;J[d+204>>2]=b}c=0;while(1){if(!jj(17245,J[e+(c<<2)>>2])){break g}c=c+1|0;if((h|0)!=(c|0)){continue}break}break f}I[d+220>>1]=j|4096}J[f+172>>2]=0;va(34466,f+172|0);b=J[f+172>>2];if((b|0)>0){e=nj(b>>>0>1073741823?-1:b<<2);va(34467,e|0);h=J[f+172>>2];if((h|0)>0){g=0;while(1){z:{A:{B:{C:{D:{b=J[e+(g<<2)>>2];switch(b-37488|0){case 1:case 3:case 4:case 5:case 6:case 7:break z;case 2:break A;case 0:break B;case 8:break C;default:break D}}if((b|0)!=37808){break z}I[d+220>>1]=L[d+220>>1]|8192;break z}b=J[d+204>>2];J[d+200>>2]=J[d+200>>2]|32768;J[d+204>>2]=b;break z}b=J[d+204>>2];J[d+200>>2]=J[d+200>>2]|8192;J[d+204>>2]=b;break z}b=J[d+204>>2];J[d+200>>2]=J[d+200>>2]|16384;J[d+204>>2]=b}g=g+1|0;if((h|0)!=(g|0)){continue}break}}cj(e)}b=L[d+220>>1];if(!(!(b&8)|!(H[d+202|0]&1|b&8192))){J[f+160>>2]=J[40244];b=J[40243];J[f+152>>2]=J[40242];J[f+156>>2]=b;b=J[40241];J[f+144>>2]=J[40240];J[f+148>>2]=b;b=J[40239];J[f+136>>2]=J[40238];J[f+140>>2]=b;b=J[40237];J[f+128>>2]=J[40236];J[f+132>>2]=b;b=J[40233];J[f+112>>2]=J[40232];J[f+116>>2]=b;b=J[40235];J[f+120>>2]=J[40234];J[f+124>>2]=b;gb(1,f+108|0);ja(35866,J[f+108>>2]);kb(35866,0,37808,4,4,2,0,32,f+112|0);if(_()|0){b=J[d+204>>2];J[d+200>>2]=J[d+200>>2]&-65537;J[d+204>>2]=b}hb(1,f+108|0)}J[d+208>>2]=16;I[d+220>>1]=L[d+220>>1]|32;J[f+112>>2]=1024;va(3379,f+112|0);J[d+172>>2]=J[f+112>>2];E:{if(!(K[J[79491]+220|0]&2)){break E}if(!(_()|0)){break E}while(1){if(_()|0){continue}break}}J[f+108>>2]=65536;g=65536;b=L[d+220>>1]&8;if(b){va(33e3,f+108|0);g=J[f+108>>2]}J[d+184>>2]=(g|0)<=65536?65536:g;F:{if(!(K[J[79491]+220|0]&2)){break F}if(!(_()|0)){break F}while(1){if(_()|0){continue}break}}J[f+104>>2]=65536;if(b){va(33001,f+104|0)}G:{if(!(K[J[79491]+220|0]&2)){break G}if(!(_()|0)){break G}while(1){if(_()|0){continue}break}}g=J[d+56>>2];j=J[d+60>>2];H:{if((g|0)==(j|0)){break H}b=j-g>>2;h=b>>>0<=1?1:b;c=0;I:{while(1){if(jj(62870,J[(c<<2)+g>>2])){c=c+1|0;if((h|0)!=(c|0)){continue}break I}break}b=J[d+204>>2];J[d+200>>2]=J[d+200>>2]|4096;J[d+204>>2]=b}c=0;while(1){if(jj(82274,J[(c<<2)+g>>2])){c=c+1|0;if((h|0)!=(c|0)){continue}break H}break}I[d+220>>1]=L[d+220>>1]|128;xc(34047,d+216|0);g=J[d+56>>2];j=J[d+60>>2]}J:{K:{i=L[d+220>>1];if(i&8){break K}if((g|0)==(j|0)){break J}b=j-g>>2;b=b>>>0<=1?1:b;c=0;while(1){if(!jj(3930,J[(c<<2)+g>>2])){break K}c=c+1|0;if((b|0)!=(c|0)){continue}break}break J}i=i|768;I[d+220>>1]=i}L:{if((g|0)==(j|0)){break L}b=j-g>>2;b=b>>>0<=1?1:b;c=0;M:{while(1){if(!jj(12739,J[(c<<2)+g>>2])){break M}c=c+1|0;if((b|0)!=(c|0)){continue}break}c=0;while(1){if(!jj(12742,J[(c<<2)+g>>2])){break M}c=c+1|0;if((b|0)!=(c|0)){continue}break}break L}J[d+192>>2]=J[d+192>>2]|2}N:{if(!(i&4)){break N}g=0;dj(2,89301,92558,0);J[f+96>>2]=ua(7937);dj(2,89301,28485,f+96|0);J[f+80>>2]=ua(7938);dj(2,89301,28882,f+80|0);J[f+64>>2]=ua(7936);dj(2,89301,28474,f- -64|0);dj(2,89301,102584,0);c=J[d+56>>2];if((c|0)!=J[d+60>>2]){while(1){J[f+48>>2]=J[(g<<2)+c>>2];dj(2,89301,31803,f+48|0);g=g+1|0;c=J[d+56>>2];if(g>>>0>2]-c>>2>>>0){continue}break}}dj(2,89301,102596,0);if(kp(d,0)){J[f+32>>2]=94076;dj(2,89301,31803,f+32|0)}if(kp(d,1)){J[f+16>>2]=85183;dj(2,89301,31803,f+16|0)}if(!kp(d,2)){break N}J[f>>2]=90448;dj(2,89301,31803,f)}I[d+220>>1]=L[d+220>>1]&65471;Bc(1,f+100|0);J[d+160>>2]=ho(d,J[f+100>>2]);_O(d,J[a+28>>2]);g=J[79491]}Ui=f+176|0;return g|0}Z(152687,40535,1098,59301);B()}Z(20224,40535,1190,59301);B()}Z(112520,53895,557,53220);B()}Z(151729,53895,501,2284);B()}function oz(a,b,c){a=a|0;b=b|0;c=c|0;var d=0,e=0,f=0,g=0,h=0,i=0,j=0,k=0,l=0,m=0,n=0,o=0,p=0,q=0,r=0,s=0,t=0,u=0,v=0,w=0,x=0,y=0,z=0,A=Q(0),C=0,D=0,E=0,F=0,G=Q(0),M=0,N=0,O=0,S=0,T=0,U=0,V=0,W=0,X=0,Y=0,_=0,$=0,aa=0,ba=0,ca=Q(0),da=0,ea=0,fa=0,ga=0,ha=0,ia=0,ja=0,ka=0,la=0,ma=0,na=0;v=Ui-96|0;Ui=v;a:{e=K[b|0];F=b+c|0;k=K[F|0];d=e>>>0>k>>>0?e:k;l=(c<<1)+b|0;n=K[l|0];d=d>>>0>n>>>0?d:n;p=P(c,3)+b|0;o=K[p|0];d=d>>>0>o>>>0?d:o;q=(c<<2)+b|0;i=K[q|0];d=d>>>0>i>>>0?d:i;S=P(c,5)+b|0;f=K[S|0];d=d>>>0>f>>>0?d:f;T=P(c,6)+b|0;m=K[T|0];d=d>>>0>m>>>0?d:m;U=P(c,7)+b|0;w=K[U|0];d=d>>>0>w>>>0?d:w;V=(c<<3)+b|0;h=K[V|0];d=d>>>0>h>>>0?d:h;W=P(c,9)+b|0;x=K[W|0];d=d>>>0>x>>>0?d:x;X=P(c,10)+b|0;y=K[X|0];d=d>>>0>y>>>0?d:y;Y=P(c,11)+b|0;z=K[Y|0];d=d>>>0>z>>>0?d:z;_=P(c,12)+b|0;j=K[_|0];d=d>>>0>j>>>0?d:j;$=P(c,13)+b|0;C=K[$|0];d=d>>>0>C>>>0?d:C;aa=P(c,14)+b|0;g=K[aa|0];d=d>>>0>g>>>0?d:g;ba=P(c,15)+b|0;E=K[ba|0];d=d>>>0>E>>>0?d:E;e=e>>>0>>0?e:k;e=e>>>0>>0?e:n;e=e>>>0>>0?e:o;e=e>>>0>>0?e:i;e=e>>>0>>0?e:f;e=e>>>0>>0?e:m;e=e>>>0>>0?e:w;e=e>>>0>>0?e:h;e=e>>>0>>0?e:x;e=e>>>0>>0?e:y;e=e>>>0>>0?e:z;e=e>>>0>>0?e:j;e=e>>>0>>0?e:C;e=e>>>0>>0?e:g;k=e>>>0>>0?e:E;b:{if((d|0)==(k|0)){I[a>>1]=k|3328;b=K[168768]|K[168769]<<8|(K[168770]<<16|K[168771]<<24);H[a+2|0]=b;H[a+3|0]=b>>>8;H[a+4|0]=b>>>16;H[a+5|0]=b>>>24;b=K[168772]|K[168773]<<8;H[a+6|0]=b;H[a+7|0]=b>>>8;break b}e=d-k|0;if(e>>>0<=5){c=d-2|0;c=(c>>>0<256?c:d>>>0>1?-1:0)&255;I[a>>1]=c|7424;d=(K[b|0]-c|0)+3|0;if(d>>>0>=6){break a}b=(K[F|0]-c|0)+3|0;if(b>>>0>5){break a}e=(K[l|0]-c|0)+3|0;if(e>>>0>5){break a}k=(K[p|0]-c|0)+3|0;if(k>>>0>5){break a}n=(K[q|0]-c|0)+3|0;if(n>>>0>5){break a}o=(K[S|0]-c|0)+3|0;if(o>>>0>5){break a}i=(K[T|0]-c|0)+3|0;if(i>>>0>5){break a}f=(K[U|0]-c|0)+3|0;if(f>>>0>5){break a}m=(K[V|0]-c|0)+3|0;if(m>>>0>5){break a}w=(K[W|0]-c|0)+3|0;if(w>>>0>5){break a}h=(K[X|0]-c|0)+3|0;if(h>>>0>5){break a}x=(K[Y|0]-c|0)+3|0;if(x>>>0>5){break a}y=(K[_|0]-c|0)+3|0;if(y>>>0>5){break a}z=(K[$|0]-c|0)+3|0;if(z>>>0>5){break a}j=(K[aa|0]-c|0)+3|0;if(j>>>0>5){break a}C=(K[ba|0]-c|0)+3|0;if(C>>>0>5){break a}c=K[b+169568|0]<<1;b=K[d+169568|0]<<13;d=0;c=b|c;g=d;b=K[e+169568|0];d=b>>>11|0;b=g|b<<21;d=c|d;e=b;c=K[k+169568|0];b=c>>>23|0;c=e|c<<9;e=b|d;d=K[n+169568|0]<<10;n=c;c=K[o+169568|0];b=c>>>2|0;c=n|c<<30;e=b|(d|e);b=K[i+169568|0];d=b>>>14|0;n=b<<18|c;c=K[f+169568|0];b=c>>>26|0;c=n|c<<6;e=b|(d|e);d=K[m+169568|0]<<7;n=c;c=K[w+169568|0];b=c>>>5|0;c=n|c<<27;e=b|(d|e);b=K[h+169568|0];d=b>>>17|0;n=b<<15|c;c=K[x+169568|0];b=c>>>29|0;k=n|c<<3;b=b|(d|e)|K[y+169568|0]<<4;H[a+3|0]=b;H[a+2|0]=b>>>8;c=K[z+169568|0];d=c>>>8|0;e=k|c<<24;b=b|d;d=b;c=K[j+169568|0];b=c>>>20|0;c=K[C+169568|0]|c<<12|e;H[a+7|0]=c;H[a+4|0]=(d&16777215)<<8|e>>>24;b=b|d;H[a+6|0]=(b&255)<<24|c>>>8;H[a+5|0]=(b&65535)<<16|c>>>16;break b}A=Q(e>>>0);G=Yq(Q(A/Q(25)));c:{if(Q(R(G))=15?15:e;n=(e|0)<=1?1:e;J[v+64>>2]=n;A=Yq(Q(A/Q(19)));d:{if(Q(R(A))=15?15:e;e=(e|0)<=1?1:e;J[v+68>>2]=e;J[v+72>>2]=e;J[v+76>>2]=e;A=Q(k>>>0);G=Q(Q(d>>>0)-A);ca=Yq(Q(Q(G*Q(.5199999809265137))+A));e:{if(Q(R(ca))>>0<256?d:(d^-1)>>31)&255;J[v+80>>2]=E;A=Yq(Q(Q(G*Q(.5263158082962036))+A));f:{if(Q(R(A))>>0<256?d:(d^-1)>>31)&255;J[v+84>>2]=w;J[v+88>>2]=w;J[v+92>>2]=w;S=P(e,9);T=P(n,12);F=e<<1;U=P(e,6);V=P(e,7);W=P(n,7);X=e<<2;Y=P(e,5);_=n<<2;$=P(e,-10);aa=P(n,-13);ba=P(e,-3);da=P(e,-7);ea=e<<3;fa=n<<3;ga=P(e,-5);ha=P(e,-6);ia=P(n,-5);ja=n<<1;ka=v+48|0;la=v+32|0;ma=v+16|0;o=0;na=(e|n)!=1;x=0;y=0;z=0;C=0;while(1){d=-1;i=-1;f=-1;m=-1;k=0;h=K[P(c,o)+b|0];g:{if((h+7&255)>>>0<=13){while(1){j=k+168784|0;g=w+P(e,H[j+104|0])|0;l=((g>>>0<256?g:(g^-1)>>31)&255)-h|0;g=l>>31;g=((g^l)-g<<3)+k|0;m=g>>>0>m>>>0?m:g;g=w+P(e,H[j+88|0])|0;l=((g>>>0<256?g:(g^-1)>>31)&255)-h|0;g=l>>31;g=((g^l)-g<<3)+k|0;f=f>>>0>>0?f:g;g=w+P(e,H[j- -64|0])|0;l=((g>>>0<256?g:(g^-1)>>31)&255)-h|0;g=l>>31;g=((g^l)-g<<3)+k|0;i=g>>>0>i>>>0?i:g;j=E+P(n,H[j+16|0])|0;g=((j>>>0<256?j:(j^-1)>>31)&255)-h|0;j=g>>31;j=((g^j)-j<<3)+k|0;d=d>>>0>>0?d:j;k=k+1|0;if((k|0)!=8){continue}break g}}d=w-h|0;k=E-h|0;if(!na){j=d-1|0;i=j>>31;q=d-2|0;f=q>>31;r=d-3|0;m=r>>31;s=d-10|0;h=s>>31;t=d+1|0;g=t>>31;u=d+2|0;l=u>>31;D=d+9|0;p=D>>31;i=(i^j)-i<<3;j=(f^q)-f<<3;f=j|1;i=f>>>0>i>>>0?i:f;f=(m^r)-m<<3|2;f=f>>>0>i>>>0?i:f;i=(h^s)-h<<3|3;f=f>>>0>>0?f:i;m=d>>31;m=(m^d)-m<<3|4;f=f>>>0>>0?f:m;q=(g^t)-g<<3;m=q|5;f=f>>>0>>0?f:m;m=(l^u)-l<<3|6;f=f>>>0>>0?f:m;h=(p^D)-p<<3|7;m=f>>>0>>0?f:h;r=d-5|0;f=r>>31;s=d-7|0;g=s>>31;t=d+4|0;l=t>>31;u=d+6|0;p=u>>31;f=(f^r)-f<<3|1;f=f>>>0>j>>>0?j:f;g=(g^s)-g<<3|2;f=f>>>0>>0?f:g;f=f>>>0>>0?f:i;g=q|4;f=f>>>0>>0?f:g;l=(l^t)-l<<3|5;f=f>>>0>>0?f:l;l=(p^u)-p<<3|6;f=f>>>0>>0?f:l;f=f>>>0>>0?f:h;r=d-6|0;l=r>>31;s=d-8|0;p=s>>31;t=d+5|0;q=t>>31;u=d+7|0;d=u>>31;l=(l^r)-l<<3|1;j=j>>>0>>0?j:l;l=(p^s)-p<<3|2;j=j>>>0>>0?j:l;i=i>>>0>j>>>0?j:i;i=g>>>0>i>>>0?i:g;j=(q^t)-q<<3|5;i=i>>>0>>0?i:j;d=(d^u)-d<<3|6;d=d>>>0>i>>>0?i:d;i=d>>>0>>0?d:h;r=k-2|0;d=r>>31;s=k-5|0;h=s>>31;t=k-8|0;j=t>>31;u=k-13|0;g=u>>31;D=k+1|0;l=D>>31;M=k+4|0;p=M>>31;N=k+7|0;q=N>>31;O=k+12|0;k=O>>31;d=(d^r)-d<<3;h=(h^s)-h<<3|1;d=d>>>0>>0?d:h;h=(j^t)-j<<3|2;d=d>>>0>>0?d:h;h=(g^u)-g<<3|3;d=d>>>0>>0?d:h;h=(l^D)-l<<3|4;d=d>>>0>>0?d:h;h=(p^M)-p<<3|5;d=d>>>0>>0?d:h;h=(q^N)-q<<3|6;d=d>>>0>>0?d:h;k=(k^O)-k<<3|7;d=d>>>0>>0?d:k;break g}j=d-e|0;i=j>>31;q=d-F|0;f=q>>31;r=d+ba|0;m=r>>31;s=d+$|0;h=s>>31;t=d+e|0;g=t>>31;u=d+F|0;l=u>>31;D=d+S|0;p=D>>31;i=(i^j)-i<<3;j=(f^q)-f<<3;f=j|1;i=f>>>0>i>>>0?i:f;f=(m^r)-m<<3|2;f=f>>>0>i>>>0?i:f;i=(h^s)-h<<3|3;f=f>>>0>>0?f:i;m=d>>31;m=(m^d)-m<<3|4;f=f>>>0>>0?f:m;q=(g^t)-g<<3;m=q|5;f=f>>>0>>0?f:m;m=(l^u)-l<<3|6;f=f>>>0>>0?f:m;h=(p^D)-p<<3|7;m=f>>>0>>0?f:h;r=d+ga|0;f=r>>31;s=d+da|0;g=s>>31;t=d+X|0;l=t>>31;u=d+U|0;p=u>>31;f=(f^r)-f<<3|1;f=f>>>0>j>>>0?j:f;g=(g^s)-g<<3|2;f=f>>>0>>0?f:g;f=f>>>0>>0?f:i;g=q|4;f=f>>>0>>0?f:g;l=(l^t)-l<<3|5;f=f>>>0>>0?f:l;l=(p^u)-p<<3|6;f=f>>>0>>0?f:l;f=f>>>0>>0?f:h;r=d+ha|0;l=r>>31;s=d-ea|0;p=s>>31;t=d+Y|0;q=t>>31;u=d+V|0;d=u>>31;l=(l^r)-l<<3|1;j=j>>>0>>0?j:l;l=(p^s)-p<<3|2;j=j>>>0>>0?j:l;i=i>>>0>j>>>0?j:i;i=g>>>0>i>>>0?i:g;j=(q^t)-q<<3|5;i=i>>>0>>0?i:j;d=(d^u)-d<<3|6;d=d>>>0>i>>>0?i:d;i=d>>>0>>0?d:h;r=k-ja|0;d=r>>31;s=k+ia|0;h=s>>31;t=k-fa|0;j=t>>31;u=k+aa|0;g=u>>31;D=k+n|0;l=D>>31;M=k+_|0;p=M>>31;N=k+W|0;q=N>>31;O=k+T|0;k=O>>31;d=(d^r)-d<<3;h=(h^s)-h<<3|1;d=d>>>0>>0?d:h;h=(j^t)-j<<3|2;d=d>>>0>>0?d:h;h=(g^u)-g<<3|3;d=d>>>0>>0?d:h;h=(l^D)-l<<3|4;d=d>>>0>>0?d:h;h=(p^M)-p<<3|5;d=d>>>0>>0?d:h;h=(q^N)-q<<3|6;d=d>>>0>>0?d:h;k=(k^O)-k<<3|7;d=d>>>0>>0?d:k}H[o+v|0]=d&7;H[o+ma|0]=i&7;H[o+la|0]=f&7;H[o+ka|0]=m&7;k=m>>>3|0;C=P(k,k)+C|0;k=f>>>3|0;z=P(k,k)+z|0;k=i>>>3|0;y=P(k,k)+y|0;d=d>>>3|0;x=P(d,d)+x|0;o=o+1|0;if((o|0)!=16){continue}break}c=x>>>0>y>>>0;d=c?y:x;b=d>>>0>z>>>0;b=(b?z:d)>>>0>C>>>0?3:b?2:c;c=b<<2;I[a>>1]=K[c|v+80]|((K[b+169574|0]&15)<<8|L[(c|v- -64)>>1]<<12);n=(b<<4)+v|0;e=n;c=K[e+13|0];k=K[e+15|0];d=K[e+14|0];i=K[e+1|0]<<1|K[e|0]<<13;b=K[e+2|0];e=b>>>11|0;b=b<<21;o=e|i;g=b;e=K[n+3|0];b=e>>>23|0;e=g|e<<9;o=b|o;b=e;e=K[n+4|0]<<10;b=b|0;o=e|o;g=b;e=K[n+5|0];b=e>>>2|0;e=g|e<<30;o=b|o;g=e;b=K[n+6|0];e=b>>>14|0;b=g|b<<18;o=e|o;g=b;e=K[n+7|0];b=e>>>26|0;e=g|e<<6;o=b|o;b=e;e=K[n+8|0]<<7;b=b|0;o=e|o;g=b;e=K[n+9|0];b=e>>>5|0;e=g|e<<27;o=b|o;g=e;b=K[n+10|0];e=b>>>17|0;b=g|b<<15;o=e|o;g=b;e=K[n+11|0];b=e>>>29|0;e=g|e<<3;o=b|o;b=e;e=K[n+12|0]<<4;n=b|0;b=e|o;e=b;H[a+3|0]=e;H[a+2|0]=e>>>8;n=n|c<<24;b=e|c>>>8;e=d>>>20|0;d=d<<12|k|n;H[a+7|0]=d;H[a+4|0]=(b&16777215)<<8|n>>>24;b=b|e;H[a+6|0]=(b&255)<<24|d>>>8;H[a+5|0]=(b&65535)<<16|d>>>16}Ui=v+96|0;return}Z(106832,40075,15816,82525);B()}function aJ(a,b,c){var d=Q(0),e=0,f=0,g=Q(0),h=Q(0),i=Q(0),j=Q(0),k=0,l=0,m=0,n=Q(0),o=Q(0),p=Q(0),q=Q(0),r=Q(0),s=0,t=Q(0),u=0,v=Q(0),w=Q(0),x=Q(0),y=0,z=Q(0),A=Q(0),B=Q(0),C=0,D=0,E=0,F=Q(0),G=Q(0),H=Q(0),I=Q(0),K=Q(0),L=Q(0),M=Q(0),O=Q(0),R=Q(0),S=0,T=0,U=Q(0),V=Q(0),W=Q(0),X=Q(0),Z=Q(0),_=0,$=Q(0),aa=Q(0),ba=0;e=Ui-96|0;Ui=e;J[a+376>>2]=0;J[a+364>>2]=4;J[a+368>>2]=0;k=a+316|0;J[a+360>>2]=k;J[a+356>>2]=a+284;J[a+352>>2]=a+252;J[a+348>>2]=a+220;f=J[b+4>>2];J[a>>2]=J[b>>2];J[a+4>>2]=f;f=J[b+20>>2];J[a+16>>2]=J[b+16>>2];J[a+20>>2]=f;f=J[b+12>>2];J[a+8>>2]=J[b+8>>2];J[a+12>>2]=f;f=J[b+36>>2];J[a+32>>2]=J[b+32>>2];J[a+36>>2]=f;f=J[b+28>>2];J[a+24>>2]=J[b+24>>2];J[a+28>>2]=f;f=J[b+52>>2];J[a+48>>2]=J[b+48>>2];J[a+52>>2]=f;f=J[b+44>>2];J[a+40>>2]=J[b+40>>2];J[a+44>>2]=f;m=b- -64|0;f=J[m+4>>2];l=a- -64|0;J[l>>2]=J[m>>2];J[l+4>>2]=f;f=J[b+60>>2];J[a+56>>2]=J[b+56>>2];J[a+60>>2]=f;f=J[b+84>>2];J[a+80>>2]=J[b+80>>2];J[a+84>>2]=f;f=J[b+76>>2];J[a+72>>2]=J[b+72>>2];J[a+76>>2]=f;f=J[b+100>>2];J[a+96>>2]=J[b+96>>2];J[a+100>>2]=f;f=J[b+92>>2];J[a+88>>2]=J[b+88>>2];J[a+92>>2]=f;f=J[b+108>>2];J[a+104>>2]=J[b+104>>2];J[a+108>>2]=f;f=J[b+116>>2];J[a+112>>2]=J[b+112>>2];J[a+116>>2]=f;f=J[b+124>>2];b=J[b+120>>2];J[a+144>>2]=0;J[a+180>>2]=0;J[a+120>>2]=b;J[a+124>>2]=f;b=J[c+4>>2];J[a+128>>2]=J[c>>2];J[a+132>>2]=b;b=J[c+12>>2];J[a+136>>2]=J[c+8>>2];J[a+140>>2]=b;J[a+364>>2]=3;J[a+164>>2]=0;J[a+328>>2]=0;J[a+180>>2]=1;J[a+148>>2]=k;h=N[a+136>>2];i=N[a+128>>2];d=N[a+132>>2];g=Q(Q(h*h)+Q(Q(i*i)+Q(d*d)));b=g>Q(0);h=b?Q(-h):Q(0);i=b?Q(-i):Q(1);d=b?Q(-d):Q(0);j=Q(Q(1)/Q(Y(Q(Q(h*h)+Q(Q(i*i)+Q(d*d))))));N[a+324>>2]=h*j;N[a+320>>2]=d*j;N[a+316>>2]=i*j;Jn(e+16|0,a,k);b=J[e+28>>2];J[a+340>>2]=J[e+24>>2];J[a+344>>2]=b;b=J[e+20>>2];J[a+332>>2]=J[e+16>>2];J[a+336>>2]=b;J[a+164>>2]=1065353216;c=J[a+148>>2];b=J[c+20>>2];J[a+128>>2]=J[c+16>>2];J[a+132>>2]=b;b=J[c+28>>2];J[a+136>>2]=J[c+24>>2];J[a+140>>2]=b;b=J[c+28>>2];J[e+72>>2]=J[c+24>>2];J[e+76>>2]=b;b=J[c+20>>2];J[e+64>>2]=J[c+16>>2];J[e+68>>2]=b;b=J[c+28>>2];J[e+56>>2]=J[c+24>>2];J[e+60>>2]=b;b=J[c+20>>2];J[e+48>>2]=J[c+16>>2];J[e+52>>2]=b;b=J[c+28>>2];J[e+40>>2]=J[c+24>>2];J[e+44>>2]=b;b=J[c+20>>2];J[e+32>>2]=J[c+16>>2];J[e+36>>2]=b;b=J[c+28>>2];J[e+24>>2]=J[c+24>>2];J[e+28>>2]=b;b=J[c+20>>2];J[e+16>>2]=J[c+16>>2];J[e+20>>2]=b;y=a+148|0;C=a+348|0;d=N[a+136>>2];n=N[a+132>>2];j=N[a+128>>2];u=J[a+368>>2];while(1){a:{b:{o=Q(Y(Q(Q(d*d)+Q(Q(j*j)+Q(n*n)))));c:{if(o>2]=1;break c}s=P(u,36)+y|0;f=J[s+32>>2];c=(f<<2)+s|0;J[c+16>>2]=0;b=J[a+364>>2]-1|0;J[a+364>>2]=b;E=c;c=J[(b<<2)+C>>2];J[E>>2]=c;J[s+32>>2]=f+1;J[c+12>>2]=0;i=Q(Q(1)/o);N[c+8>>2]=i*Q(-d);N[c+4>>2]=i*Q(-n);N[c>>2]=i*Q(-j);Jn(e+80|0,a,c);b=J[e+92>>2];J[c+24>>2]=J[e+88>>2];J[c+28>>2]=b;b=J[e+84>>2];J[c+16>>2]=J[e+80>>2];J[c+20>>2]=b;d:{f=J[s+32>>2];m=J[((f<<2)+s|0)-4>>2];j=N[m+24>>2];d=Q(j-N[e+24>>2]);w=Q(d*d);h=N[m+16>>2];d=Q(h-N[e+16>>2]);p=Q(d*d);i=N[m+20>>2];d=Q(i-N[e+20>>2]);if(Q(w+Q(p+Q(d*d)))>2]);w=Q(d*d);d=Q(h-N[e+32>>2]);p=Q(d*d);d=Q(i-N[e+36>>2]);if(Q(w+Q(p+Q(d*d)))>2]);w=Q(d*d);d=Q(h-N[e+48>>2]);p=Q(d*d);d=Q(i-N[e+52>>2]);if(Q(w+Q(p+Q(d*d)))>2]);w=Q(d*d);d=Q(h-N[e+64>>2]);p=Q(d*d);d=Q(i-N[e+68>>2]);if(Q(w+Q(p+Q(d*d)))>2];_=_+1&3;c=(e+16|0)+(_<<4)|0;J[c+8>>2]=J[m+24>>2];J[c+12>>2]=b;b=J[m+20>>2];J[c>>2]=J[m+16>>2];J[c+4>>2]=b;d=Q(Q(Q(N[a+136>>2]*j)+Q(Q(N[a+128>>2]*h)+Q(N[a+132>>2]*i)))/o);U=d>U?d:U;if(Q(Q(o*Q(-9999999747378752e-20))+Q(o-U))<=Q(0)){u=J[a+368>>2];c=P(u,36)+y|0;b=J[c+32>>2]-1|0;J[c+32>>2]=b;c=J[c+(b<<2)>>2];b=J[a+364>>2];J[a+364>>2]=b+1;J[(b<<2)+C>>2]=c;break c}J[e+12>>2]=0;e:{f:{g:{switch(f-2|0){case 0:c=J[s+4>>2];h=N[c+24>>2];b=J[s>>2];v=N[b+24>>2];n=Q(h-v);i=N[c+16>>2];q=N[b+16>>2];o=Q(i-q);g=N[c+20>>2];r=N[b+20>>2];j=Q(g-r);d=Q(Q(n*n)+Q(Q(o*o)+Q(j*j)));if(!(d>Q(0))){break e}t=Q(Q(-Q(Q(v*n)+Q(Q(q*o)+Q(r*j))))/d);if(t>=Q(1)){J[e+12>>2]=2;J[e+80>>2]=0;J[e+84>>2]=1065353216;g=Q(Q(h*h)+Q(Q(i*i)+Q(g*g)));break f}if(t<=Q(0)){J[e+12>>2]=1;J[e+80>>2]=1065353216;J[e+84>>2]=0;g=Q(Q(v*v)+Q(Q(q*q)+Q(r*r)));break f}J[e+12>>2]=3;N[e+84>>2]=t;N[e+80>>2]=Q(1)-t;d=Q(v+Q(n*t));p=Q(d*d);d=Q(q+Q(o*t));g=Q(d*d);d=Q(r+Q(j*t));g=Q(p+Q(g+Q(d*d)));break f;case 1:g=Yw(J[s>>2]+16|0,J[s+4>>2]+16|0,J[s+8>>2]+16|0,e+80|0,e+12|0);break f;case 2:break g;default:break f}}k=Ui-32|0;Ui=k;d=Q(-1);m=J[s>>2]+16|0;V=N[m+8>>2];l=J[s+12>>2]+16|0;F=N[l+8>>2];G=Q(V-F);f=J[s+4>>2]+16|0;p=N[f+4>>2];H=N[l+4>>2];I=Q(p-H);$=Q(G*Q(-I));c=J[s+8>>2]+16|0;i=N[c>>2];K=N[l>>2];z=Q(i-K);W=N[m>>2];L=Q(W-K);aa=Q(L*I);t=N[c+8>>2];A=Q(t-F);X=N[m+4>>2];M=Q(X-H);h=N[f>>2];O=Q(h-K);v=Q(M*Q(-O));Z=N[f+8>>2];R=Q(Z-F);q=Q(L*Q(-R));g=N[c+4>>2];B=Q(g-H);r=Q(M*R);n=Q(G*O);x=Q(Q($*z)+Q(Q(aa*A)+Q(Q(v*A)+Q(Q(q*B)+Q(Q(r*z)+Q(n*B))))));h:{if(!(x>Q(0)|x>2]=0;J[k+16>>2]=0;J[k+20>>2]=0;J[k+12>>2]=0;if(Q(x*Q(Q(F*Q(aa+v))+Q(Q(K*Q(r+$))+Q(H*Q(n+q)))))>Q(0)){d=Yw(m,f,l,k+16|0,k+12|0);b=J[k+12>>2];J[e+12>>2]=b&3|b<<1&8;N[e+80>>2]=N[k+16>>2];g=N[k+20>>2];J[e+88>>2]=0;N[e+84>>2]=g;N[e+92>>2]=N[k+24>>2]}i:{if(!(Q(x*Q(Q(N[l+8>>2]*Q(Q(O*B)-Q(I*z)))+Q(Q(N[l>>2]*Q(Q(I*A)-Q(R*B)))+Q(N[l+4>>2]*Q(Q(R*z)-Q(O*A))))))>Q(0))){break i}g=Yw(f,c,l,k+16|0,k+12|0);if(!(d>2]=J[k+12>>2]<<1&14;N[e+84>>2]=N[k+16>>2];d=N[k+20>>2];J[e+80>>2]=0;N[e+88>>2]=d;N[e+92>>2]=N[k+24>>2];d=g}j:{if(!(Q(x*Q(Q(N[l+8>>2]*Q(Q(z*M)-Q(B*L)))+Q(Q(N[l>>2]*Q(Q(B*G)-Q(A*M)))+Q(N[l+4>>2]*Q(Q(A*L)-Q(z*G))))))>Q(0))){break j}g=Yw(c,m,l,k+16|0,k+12|0);if(!(d>2];J[e+12>>2]=b>>>1&1|b<<1&8|b<<2&4;N[e+88>>2]=N[k+16>>2];d=N[k+20>>2];J[e+84>>2]=0;N[e+80>>2]=d;N[e+92>>2]=N[k+24>>2];d=g}if(!(d>2]=15;q=N[c>>2];r=N[f+4>>2];n=N[l+8>>2];o=N[c+4>>2];j=N[f+8>>2];h=N[l>>2];i=N[c+8>>2];g=N[f>>2];d=N[l+4>>2];t=Q(Q(Q(Q(Q(q*r)*n)+Q(Q(Q(Q(Q(o*j)*h)+Q(Q(i*g)*d))-Q(Q(q*j)*d))-Q(Q(o*g)*n)))-Q(Q(i*r)*h))/x);N[e+80>>2]=t;q=N[m>>2];r=N[c+4>>2];n=N[l+8>>2];o=N[m+4>>2];j=N[c+8>>2];h=N[l>>2];i=N[m+8>>2];g=N[c>>2];d=N[l+4>>2];v=Q(Q(Q(Q(Q(q*r)*n)+Q(Q(Q(Q(Q(o*j)*h)+Q(Q(i*g)*d))-Q(Q(q*j)*d))-Q(Q(o*g)*n)))-Q(Q(i*r)*h))/x);N[e+84>>2]=v;q=N[f>>2];r=N[m+4>>2];n=N[l+8>>2];o=N[f+4>>2];j=N[m+8>>2];h=N[l>>2];i=N[f+8>>2];g=N[m>>2];d=N[l+4>>2];d=Q(Q(Q(Q(Q(q*r)*n)+Q(Q(Q(Q(Q(o*j)*h)+Q(Q(i*g)*d))-Q(Q(q*j)*d))-Q(Q(o*g)*n)))-Q(Q(i*r)*h))/x);N[e+88>>2]=d;N[e+92>>2]=Q(1)-Q(Q(t+v)+d);d=Q(0)}Ui=k+32|0;g=d}if(!(g>=Q(0))){break e}u=1-u|0;S=P(u,36)+y|0;J[S+32>>2]=0;J[a+136>>2]=0;J[a+140>>2]=0;J[a+128>>2]=0;J[a+132>>2]=0;J[a+368>>2]=u;E=J[e+12>>2];k=J[s+32>>2];if(!k){d=Q(0);n=Q(0);j=Q(0);break b}l=S+16|0;c=J[a+364>>2];d=Q(0);T=0;n=Q(0);j=Q(0);b=0;while(1){m=b<<2;D=J[m+s>>2];k:{if(E>>>b&1){f=T<<2;J[S+f>>2]=D;h=N[m+(e+80|0)>>2];T=T+1|0;J[S+32>>2]=T;N[f+l>>2]=h;i=N[D+24>>2];d=N[D+20>>2];j=Q(Q(h*N[D+16>>2])+N[a+128>>2]);N[a+128>>2]=j;n=Q(Q(h*d)+N[a+132>>2]);N[a+132>>2]=n;d=Q(Q(h*i)+N[a+136>>2]);N[a+136>>2]=d;break k}f=c+1|0;J[a+364>>2]=f;J[(c<<2)+C>>2]=D;c=f}b=b+1|0;if((k|0)!=(b|0)){continue}break}break b}u=J[a+368>>2];c=P(u,36)+y|0;b=J[c+32>>2]-1|0;J[c+32>>2]=b;c=J[c+(b<<2)>>2];b=J[a+364>>2];J[a+364>>2]=b+1;J[(b<<2)+C>>2]=c;break c}u=J[a+368>>2];c=P(u,36)+y|0;b=J[c+32>>2]-1|0;J[c+32>>2]=b;c=J[c+(b<<2)>>2];b=J[a+364>>2];J[a+364>>2]=b+1;J[(b<<2)+C>>2]=c}b=J[a+376>>2];break a}ba=ba+1|0;b=ba>>>0>=128?2:(E|0)==15?1:J[a+376>>2];J[a+376>>2]=b;if(!b){continue}}break}J[a+372>>2]=P(u,36)+y;d=Q(0);l:{switch(b|0){case 0:d=N[a+136>>2];p=Q(d*d);d=N[a+128>>2];g=Q(d*d);d=N[a+132>>2];d=Q(Y(Q(p+Q(g+Q(d*d)))));case 1:N[a+144>>2]=d;break;default:break l}}Ui=e+96|0;return b}function qG(a,b){var c=0,d=0,e=0,f=0,g=0,h=0,i=0,j=0,k=0,l=0,m=0,n=0,o=0,p=0,q=0;l=Ui+-64|0;Ui=l;a:{b:{c:{d:{e:{switch(b-196|0){default:if((b|0)!=255){break d}J[218569]=94363;break b;case 25:if((rl(J[a>>2])|0)!=4){J[218569]=94363;break b}J[a+18436>>2]=rl(J[a>>2]);a=1;break a;case 0:break c;case 1:case 2:case 3:case 4:case 5:case 6:case 7:case 8:case 9:case 10:case 11:case 12:case 13:case 14:case 15:case 16:case 17:case 18:case 19:case 20:case 21:case 22:case 24:break d;case 23:break e}}b=rl(J[a>>2]);g=b-2|0;if(b>>>0>=3){i=a+13444|0;while(1){b=J[a>>2];c=J[b+172>>2];f:{g:{h:{i:{j:{if(c>>>0>2]){J[b+172>>2]=c+1;c=K[c|0];break j}if(!J[b+32>>2]){e=0;break i}c=b+40|0;d=Zi[J[b+16>>2]](J[b+28>>2],c,J[b+36>>2])|0;J[b+168>>2]=J[b+168>>2]+(J[b+172>>2]-J[b+180>>2]|0);k:{if(!d){H[b+40|0]=0;J[b+32>>2]=0;d=b+41|0;c=0;break k}d=c+d|0;c=K[c|0]}J[b+176>>2]=d;J[b+172>>2]=b+41}d=c&255;if(!((c&240)==16|d>>>0<16)){J[218569]=94363;break b}e=c&15;if(e>>>0>3){break h}b=0;if(d>>>0>15){break g}}c=0;h=i+(e<<7)|0;while(1){b=J[a>>2];d=J[b+172>>2];l:{if(d>>>0>2]){J[b+172>>2]=d+1;e=K[d|0];break l}if(!J[b+32>>2]){e=0;break l}d=b+40|0;e=Zi[J[b+16>>2]](J[b+28>>2],d,J[b+36>>2])|0;J[b+168>>2]=J[b+168>>2]+(J[b+172>>2]-J[b+180>>2]|0);m:{if(!e){H[b+40|0]=0;J[b+32>>2]=0;f=b+41|0;e=0;break m}f=d+e|0;e=K[d|0]}J[b+176>>2]=f;J[b+172>>2]=b+41}I[h+(K[c+181984|0]<<1)>>1]=e&255;c=c+1|0;if((c|0)!=64){continue}break}b=-65;break f}J[218569]=94363;break b}while(1){I[(i+(e<<7)|0)+(K[b+181984|0]<<1)>>1]=rl(J[a>>2]);b=b+1|0;if((b|0)!=64){continue}break}b=-129}g=b+g|0;if((g|0)>0){continue}break}}a=!g;break a}n:{o:{if(!((b|0)!=254&(b&-16)!=224)){j=rl(J[a>>2]);if(j>>>0<=1){J[218569]=94363;break b}p:{q:{if(!((b|0)!=224|j>>>0<7)){b=J[a>>2];e=J[b+172>>2];d=J[b+176>>2];r:{if(e>>>0>>0){c=e+1|0;J[b+172>>2]=c;g=K[e|0];break r}if(!J[b+32>>2]){c=e;break r}c=b+40|0;d=Zi[J[b+16>>2]](J[b+28>>2],c,J[b+36>>2])|0;J[b+168>>2]=J[b+168>>2]+(J[b+172>>2]-J[b+180>>2]|0);s:{if(!d){H[b+40|0]=0;J[b+32>>2]=0;e=b+41|0;break s}g=K[c|0];e=c+d|0}J[b+176>>2]=e;J[b+172>>2]=b+41;b=J[a>>2];d=J[b+176>>2];c=J[b+172>>2]}t:{if(c>>>0>=d>>>0){if(!J[b+32>>2]){break t}c=b+40|0;d=Zi[J[b+16>>2]](J[b+28>>2],c,J[b+36>>2])|0;J[b+168>>2]=J[b+168>>2]+(J[b+172>>2]-J[b+180>>2]|0);u:{if(d){f=K[c|0];e=c+d|0;break u}H[b+40|0]=0;J[b+32>>2]=0;e=b+41|0}J[b+176>>2]=e;J[b+172>>2]=b+41;b=J[a>>2];d=J[b+176>>2];c=J[b+172>>2];break t}e=c+1|0;J[b+172>>2]=e;f=K[c|0];c=e}v:{if(c>>>0>=d>>>0){if(!J[b+32>>2]){break v}c=b+40|0;d=Zi[J[b+16>>2]](J[b+28>>2],c,J[b+36>>2])|0;J[b+168>>2]=J[b+168>>2]+(J[b+172>>2]-J[b+180>>2]|0);w:{if(d){h=K[c|0];e=c+d|0;break w}H[b+40|0]=0;J[b+32>>2]=0;e=b+41|0}J[b+176>>2]=e;J[b+172>>2]=b+41;b=J[a>>2];d=J[b+176>>2];c=J[b+172>>2];break v}e=c+1|0;J[b+172>>2]=e;h=K[c|0];c=e}x:{if(c>>>0>=d>>>0){if(!J[b+32>>2]){break x}c=b+40|0;d=Zi[J[b+16>>2]](J[b+28>>2],c,J[b+36>>2])|0;J[b+168>>2]=J[b+168>>2]+(J[b+172>>2]-J[b+180>>2]|0);y:{if(d){i=K[c|0];e=c+d|0;break y}H[b+40|0]=0;J[b+32>>2]=0;e=b+41|0}J[b+176>>2]=e;J[b+172>>2]=b+41;b=J[a>>2];d=J[b+176>>2];c=J[b+172>>2];break x}e=c+1|0;J[b+172>>2]=e;i=K[c|0];c=e}z:{if(c>>>0>=d>>>0){if(!J[b+32>>2]){d=0;break z}c=b+40|0;e=Zi[J[b+16>>2]](J[b+28>>2],c,J[b+36>>2])|0;J[b+168>>2]=J[b+168>>2]+(J[b+172>>2]-J[b+180>>2]|0);A:{if(e){d=K[c|0];e=c+e|0;break A}d=0;H[b+40|0]=0;J[b+32>>2]=0;e=b+41|0}J[b+176>>2]=e;J[b+172>>2]=b+41;break z}J[b+172>>2]=c+1;d=K[c|0]}c=j-7|0;if(d&255|(i|0)!=70|((h&255)!=73|(f&255)!=70)){break q}if((g&255)!=74){break q}J[a+18404>>2]=1;break q}c=j-2|0;if((b|0)!=238|j>>>0<14){break q}b=J[a>>2];e=J[b+172>>2];d=J[b+176>>2];B:{if(e>>>0>>0){c=e+1|0;J[b+172>>2]=c;k=K[e|0];break B}if(!J[b+32>>2]){c=e;break B}c=b+40|0;d=Zi[J[b+16>>2]](J[b+28>>2],c,J[b+36>>2])|0;J[b+168>>2]=J[b+168>>2]+(J[b+172>>2]-J[b+180>>2]|0);C:{if(!d){H[b+40|0]=0;J[b+32>>2]=0;e=b+41|0;break C}k=K[c|0];e=c+d|0}J[b+176>>2]=e;J[b+172>>2]=b+41;b=J[a>>2];d=J[b+176>>2];c=J[b+172>>2]}D:{if(c>>>0>=d>>>0){if(!J[b+32>>2]){break D}c=b+40|0;d=Zi[J[b+16>>2]](J[b+28>>2],c,J[b+36>>2])|0;J[b+168>>2]=J[b+168>>2]+(J[b+172>>2]-J[b+180>>2]|0);E:{if(d){g=K[c|0];e=c+d|0;break E}H[b+40|0]=0;J[b+32>>2]=0;e=b+41|0}J[b+176>>2]=e;J[b+172>>2]=b+41;b=J[a>>2];d=J[b+176>>2];c=J[b+172>>2];break D}e=c+1|0;J[b+172>>2]=e;g=K[c|0];c=e}F:{if(c>>>0>=d>>>0){if(!J[b+32>>2]){break F}c=b+40|0;d=Zi[J[b+16>>2]](J[b+28>>2],c,J[b+36>>2])|0;J[b+168>>2]=J[b+168>>2]+(J[b+172>>2]-J[b+180>>2]|0);G:{if(d){f=K[c|0];e=c+d|0;break G}H[b+40|0]=0;J[b+32>>2]=0;e=b+41|0}J[b+176>>2]=e;J[b+172>>2]=b+41;b=J[a>>2];d=J[b+176>>2];c=J[b+172>>2];break F}e=c+1|0;J[b+172>>2]=e;f=K[c|0];c=e}H:{if(c>>>0>=d>>>0){if(!J[b+32>>2]){break H}c=b+40|0;d=Zi[J[b+16>>2]](J[b+28>>2],c,J[b+36>>2])|0;J[b+168>>2]=J[b+168>>2]+(J[b+172>>2]-J[b+180>>2]|0);I:{if(d){h=K[c|0];e=c+d|0;break I}H[b+40|0]=0;J[b+32>>2]=0;e=b+41|0}J[b+176>>2]=e;J[b+172>>2]=b+41;b=J[a>>2];d=J[b+176>>2];c=J[b+172>>2];break H}e=c+1|0;J[b+172>>2]=e;h=K[c|0];c=e}J:{if(c>>>0>=d>>>0){if(!J[b+32>>2]){break J}c=b+40|0;d=Zi[J[b+16>>2]](J[b+28>>2],c,J[b+36>>2])|0;J[b+168>>2]=J[b+168>>2]+(J[b+172>>2]-J[b+180>>2]|0);K:{if(d){i=K[c|0];e=c+d|0;break K}H[b+40|0]=0;J[b+32>>2]=0;e=b+41|0}J[b+176>>2]=e;J[b+172>>2]=b+41;b=J[a>>2];d=J[b+176>>2];c=J[b+172>>2];break J}e=c+1|0;J[b+172>>2]=e;i=K[c|0];c=e}L:{if(c>>>0>=d>>>0){if(!J[b+32>>2]){d=0;break L}c=b+40|0;e=Zi[J[b+16>>2]](J[b+28>>2],c,J[b+36>>2])|0;J[b+168>>2]=J[b+168>>2]+(J[b+172>>2]-J[b+180>>2]|0);M:{if(e){d=K[c|0];e=c+e|0;break M}d=0;H[b+40|0]=0;J[b+32>>2]=0;e=b+41|0}J[b+176>>2]=e;J[b+172>>2]=b+41;break L}J[b+172>>2]=c+1;d=K[c|0]}c=j-8|0;b=J[a>>2];if(d&255|(i|0)!=101|((h&255)!=98|(f&255)!=111)){break p}if((g&255)!=100|(k|0)!=65){break p}hw(b);rl(J[a>>2]);rl(J[a>>2]);J[a+18408>>2]=hw(J[a>>2]);c=j-14|0}if(!c){break o}b=J[a>>2]}if(!J[b+16>>2]){a=J[b+172>>2];break n}d=J[b+176>>2];a=J[b+172>>2];e=d-a|0;if((e|0)>=(c|0)){break n}J[b+172>>2]=d;Zi[J[b+20>>2]](J[b+28>>2],c-e|0);a=1;break a}J[218569]=94363;break b}a=1;break a}J[b+172>>2]=a+c;a=1;break a}b=rl(J[a>>2]);i=b-2|0;N:{if(b>>>0>=3){p=a+13956|0;q=a+4|0;j=a+6724|0;while(1){b=J[a>>2];c=J[b+172>>2];O:{if(c>>>0>2]){J[b+172>>2]=c+1;d=K[c|0];break O}if(!J[b+32>>2]){d=0;break O}c=b+40|0;e=Zi[J[b+16>>2]](J[b+28>>2],c,J[b+36>>2])|0;J[b+168>>2]=J[b+168>>2]+(J[b+172>>2]-J[b+180>>2]|0);P:{if(!e){d=0;H[b+40|0]=0;J[b+32>>2]=0;e=b+41|0;break P}d=K[c|0];e=c+e|0}J[b+176>>2]=e;J[b+172>>2]=b+41}k=d&255;if(k>>>0>31){break N}e=0;c=0;g=d&15;if(g>>>0>3){break N}while(1){b=J[a>>2];d=J[b+172>>2];Q:{if(d>>>0>2]){J[b+172>>2]=d+1;d=K[d|0];break Q}if(!J[b+32>>2]){d=0;break Q}d=b+40|0;f=Zi[J[b+16>>2]](J[b+28>>2],d,J[b+36>>2])|0;J[b+168>>2]=J[b+168>>2]+(J[b+172>>2]-J[b+180>>2]|0);R:{if(!f){H[b+40|0]=0;J[b+32>>2]=0;h=b+41|0;d=0;break R}h=d+f|0;d=K[d|0]}J[b+176>>2]=h;J[b+172>>2]=b+41}b=d&255;J[(c<<2)+l>>2]=b;e=b+e|0;c=c+1|0;if((c|0)!=16){continue}break}if(e>>>0>256){break N}S:{if(k>>>0<=15){if(!uG(P(g,1680)+q|0,l)){break b}b=4;break S}if(!uG(j+P(g,1680)|0,l)){break b}b=6724}h=P(g,1680);if(e){m=(h+(a+b|0)|0)+1024|0;c=0;while(1){b=J[a>>2];d=J[b+172>>2];T:{if(d>>>0>2]){J[b+172>>2]=d+1;d=K[d|0];break T}if(!J[b+32>>2]){d=0;break T}d=b+40|0;f=Zi[J[b+16>>2]](J[b+28>>2],d,J[b+36>>2])|0;J[b+168>>2]=J[b+168>>2]+(J[b+172>>2]-J[b+180>>2]|0);U:{if(!f){H[b+40|0]=0;J[b+32>>2]=0;f=b+41|0;d=0;break U}f=d+f|0;d=K[d|0]}J[b+176>>2]=f;J[b+172>>2]=b+41}H[c+m|0]=d;c=c+1|0;if((e|0)!=(c|0)){continue}break}}if(k>>>0>=16){g=(g<<10)+p|0;f=h+j|0;h=f+1280|0;k=f+1024|0;b=0;while(1){c=K[b+f|0];m=g+(b<<1)|0;I[m>>1]=0;V:{if((c|0)==255){break V}n=K[c+k|0];d=n&15;if(!d){break V}c=K[c+h|0];o=c+d|0;if(o>>>0>9){break V}c=b<>>0<256?-1<>>9-d|0)|0;if(c+128>>>0>255){break V}I[m>>1]=n&240|c<<8|o}b=b+1|0;if((b|0)!=512){continue}break}}i=(i-17|0)-e|0;if((i|0)>0){continue}break}}a=!i;break a}J[218569]=94363}a=0}Ui=l- -64|0;return a}function CJ(a){var b=0,c=0,d=0,e=Q(0),f=0,g=0,h=0,i=0,j=0,k=0,l=0,m=0,n=0,o=0,p=Q(0),q=0,r=0,s=0,t=Q(0),u=Q(0),v=0,w=Q(0),x=Q(0),y=Q(0),z=0,A=0,C=0,D=0,E=0;g=Ui-80|0;Ui=g;J[g+56>>2]=0;a:{b:{c:{if(!J[a+8>>2]){break c}b=J[J[245446]+16>>2];d:{if(!b){c=L[a+42>>1];break d}Tj(b);c=L[a+42>>1];Lj(b)}e:{b=K[a+33959|0];if(!((b^-1)&1)){H[a+33959|0]=0;if(c&65535){break e}a=-14;break b}if(b&1){break c}if(c&65535){break e}a=-14;break b}if(!K[a+33958|0]){Zi[J[J[a+4>>2]+28>>2]](J[a+8>>2]);H[a+33958|0]=1}z=J[J[245446]+16>>2];if(z){Tj(z)}C=Zi[J[J[a+4>>2]+16>>2]](J[a+8>>2])|0;if(C){h=J[245446];q=h+112|0;while(1){b=q+P(i,1056)|0;if(J[b+20>>2]){c=J[b+16>>2];J[b+8>>2]=J[b+12>>2];J[b+12>>2]=c}b=q+P(i|1,1056)|0;if(J[b+20>>2]){c=J[b+16>>2];J[b+8>>2]=J[b+12>>2];J[b+12>>2]=c}i=i+2|0;if((i|0)!=32){continue}break}b=J[h+24>>2];c=J[h+20>>2];if((b|0)!=(c|0)){b=b-c>>6;d=b>>>0<=1?1:b;while(1){q=c+(o<<6)|0;if(K[q+60|0]&4|J[q+44>>2]){b=J[q+24>>2];J[q+16>>2]=J[q+20>>2];J[q+20>>2]=b;b=J[q+36>>2];J[q+28>>2]=J[q+32>>2];J[q+32>>2]=b}o=o+1|0;if((d|0)!=(o|0)){continue}break}}E=a+33932|0;q=C;while(1){A=J[a+33920>>2];J[a+33924>>2]=A;b=J[J[a+4>>2]+20>>2];if(b){A=Zi[b|0](J[a+8>>2])|0}J[g+52>>2]=A;J[g+48>>2]=C;J[g+44>>2]=D;c=0;J[g+60>>2]=0;s=J[245446];m=s+112|0;r=J[g+52>>2];n=r<<3;f:{if(r){while(1){l=m+P(c,1056)|0;j=J[l+20>>2];if(j){y=N[l+12>>2];i=0;t=Q(0);w=Q(0);u=Q(0);x=Q(0);while(1){b=j+(i<<3)|0;e=Q(y*N[b>>2]);p=Q(e*e);u=p>2]);e=Q(e*e);x=e>2];k=h<<3;N[b+k>>2]=t;d=k|4;N[d+b>>2]=w;b=l+536|0;N[b+k>>2]=u;N[b+d>>2]=x;J[l+1048>>2]=h+1&63;ij(j,0,n)}c=c+1|0;if((c|0)!=32){continue}break f}}while(1){r=m+P(c,1056)|0;k=J[r+20>>2];if(k){b=r+24|0;h=J[r+1048>>2];j=h<<3;J[b+j>>2]=0;d=j|4;J[d+b>>2]=0;b=r+536|0;J[b+j>>2]=0;J[b+d>>2]=0;J[r+1048>>2]=h+1&63;ij(k,0,n)}c=c+1|0;if((c|0)!=32){continue}break}}g:{h:{i:{j:{d=J[s+24>>2];b=J[s+20>>2];if((d|0)!=(b|0)){b=d-b>>6;r=b>>>0<=1?1:b;o=0;while(1){b=J[s+20>>2];if(J[s+24>>2]-b>>6>>>0<=o>>>0){break a}f=b+(o<<6)|0;c=K[f+60|0];k:{if(!(c&4)){b=0;if(!J[f+44>>2]){break k}}v=J[245446];b=J[f>>2];if(!b){Z(35417,42636,95,44337);B()}Zi[J[J[b+8>>2]+32>>2]](J[b+4>>2],g- -64|0);l:{m:{n:{o:{n=K[g+73|0];switch(n-8|0){case 0:case 8:break o;default:break n}}j=K[g+72|0];if((j-1&255)>>>0<2){break m}}b=L[f+58>>1];d=J[v+48>>2];if(b>>>0>=(J[v+52>>2]-d|0)/40>>>0){break a}d=d+P(b,40)|0;J[g>>2]=tj(J[d>>2],J[d+4>>2]);J[g+4>>2]=K[g+73|0];J[g+8>>2]=K[g+72|0];dj(4,96825,53801,g);H[f+60|0]=K[f+60|0]&251;break l}h=J[g+64>>2];c=J[v+33916>>2];if(h>>>0>c>>>0){b=L[f+58>>1];d=J[v+48>>2];if(b>>>0>=(J[v+52>>2]-d|0)/40>>>0){break a}d=d+P(b,40)|0;J[g+24>>2]=tj(J[d>>2],J[d+4>>2]);J[g+20>>2]=c;J[g+16>>2]=h;dj(4,96825,136821,g+16|0);H[f+60|0]=K[f+60|0]&251;break l}l=1;e=N[f+40>>2];p:{if(!(J[f+24>>2]|(J[f+16>>2]|J[f+20>>2]))|e==Q(0)){break p}i=J[245446];c=J[i+80>>2];q:{if(!c){break q}m=J[i+76>>2];d=J[f+8>>2];k=J[f+12>>2];b=J[m+(mxa(d,k,c)<<2)>>2];r:{if((b|0)==-1){break r}h=J[i+84>>2];while(1){b=h+(b<<4)|0;if(J[b>>2]!=(d|0)|J[b+4>>2]!=(k|0)){b=J[b+12>>2];if((b|0)!=-1){continue}break r}break}b=i+P(J[b+8>>2],1056)|0;if(!(J[b+124>>2]|J[b+120>>2]|J[b+128>>2])){break p}}d=J[245444];h=J[245445];b=J[m+(mxa(d,h,c)<<2)>>2];if((b|0)==-1){break q}c=J[i+84>>2];while(1){b=c+(b<<4)|0;if(J[b>>2]!=(d|0)|J[b+4>>2]!=(h|0)){b=J[b+12>>2];if((b|0)!=-1){continue}break q}break}b=i+P(J[b+8>>2],1056)|0;if(!(J[b+124>>2]|J[b+120>>2]|J[b+128>>2])){break p}}l=0}b=J[f+44>>2];e=Q(W(Q((e>2]))));s:{if(e=Q(0)){d=~~e>>>0;break s}d=0}if(b>>>0>>0){t:{c=K[f+60|0];if(!(c&4)|c&2){break t}j=P(j,n>>>3|0)&255;while(1){c=J[f+4>>2];J[g+76>>2]=0;n=P(j,d-b|0);k=P(b,j)+c|0;m=J[f>>2];c=J[v>>2];u:{if(!l){b=g+76|0;h=Ui-16|0;Ui=h;J[h+12>>2]=0;if(!m){Z(35417,42636,102,69453);B()}c=Zi[J[J[m+8>>2]+20>>2]](J[m+4>>2],k,n,b)|0;Ui=h+16|0;break u}b=g+76|0;v:{w:{if(c){if(!m){break w}b=Zi[J[J[m+8>>2]+28>>2]](J[m+4>>2],n,b)|0;break v}Z(9197,42636,108,43309);B()}Z(35417,42636,109,43309);B()}c=b;ij(k,0,n)}x:{y:{z:{A:{B:{h=c+5|0;switch(h|0){case 0:break A;case 5:break B;default:break x}}b=J[g+76>>2];if(b){break z}ij(k,0,n);break x}b=K[f+60|0];if(!(!(b&1)|!K[f+61|0])){As(J[f>>2]);b=H[f+61|0];if((b|0)<=0){break y}H[f+61|0]=b-1;break y}if(N[f+40>>2]>Q(M[f+44>>2])){J[f+44>>2]=0}H[f+60|0]=b|2;break y}J[f+44>>2]=J[f+44>>2]+((b>>>0)/(j>>>0)|0)}b=J[f+44>>2];if(d>>>0<=b>>>0){break x}if(!(K[f+60|0]&2)){continue}}break}C:{switch(h|0){case 0:case 5:break t;default:break C}}b=L[f+58>>1];d=J[v+48>>2];if(b>>>0>=(J[v+52>>2]-d|0)/40>>>0){break a}d=d+P(b,40)|0;h=tj(J[d>>2],J[d+4>>2]);J[g+40>>2]=c;d=g;b=93131;D:{E:{switch(c+5|0){case 4:b=89234;break D;case 3:b=88341;break D;case 2:b=89785;break D;case 1:b=97251;break D;case 0:b=92184;break D;case 5:break D;default:break E}}F:{if((c|0)==-1e3){break F}b=44519;break D}b=89589}J[d+36>>2]=b;J[g+32>>2]=h;dj(3,96825,77770,g+32|0);H[f+60|0]=K[f+60|0]&251;break l}b=J[f+44>>2]}if(b){J[g+76>>2]=0;b=J[f+44>>2];d=b>>>1|0;p=Q(+(b<<31>>>0)+ +(d>>>0)*4294967296);d=J[g+64>>2];b=d;c=b>>>1|0;e=N[f+40>>2];l=J[245446];m=J[l+33916>>2];p=Q(p/Q(e*Q(+(lxa(b<<31,c,m)>>>0)+0)));G:{if(p=Q(0)){c=~~p>>>0;break G}c=0}b=J[g+52>>2];j=b>>>0>c>>>0?c:b;if(j>>>0>M[l+33920>>2]){break j}H:{I:{c=J[l+80>>2];J:{if(!c){break J}b=J[f+8>>2];k=J[f+12>>2];c=J[J[l+76>>2]+(mxa(b,k,c)<<2)>>2];if((c|0)==-1){break J}h=J[l+84>>2];while(1){n=h+(c<<4)|0;if((b|0)==J[n>>2]&(k|0)==J[n+4>>2]){break I}c=J[n+12>>2];if((c|0)!=-1){continue}break}}dj(4,96825,70997,0);break H}if(d>>>0>m>>>0){break i}h=J[(l+P(J[n+8>>2],1056)|0)+132>>2];c=0;n=K[g+72|0];k=K[g+73|0];K:{if(!((d|0)!=(m|0)|e!=Q(1))){while(1){b=P(c,12)+981840|0;if((k|0)==J[b+4>>2]&(n|0)==J[b>>2]){break K}c=c+1|0;continue}}while(1){b=P(c,12)+981792|0;if((k|0)==J[b+4>>2]&(n|0)==J[b>>2]){break K}c=c+1|0;continue}}Zi[J[b+8>>2]](g+44|0,f,d,m,h,j)}e=Q(M[f+44>>2])}else{e=Q(0)}if(!(e<=Q(W(N[f+40>>2])))|!(K[f+60|0]&2)){break l}J[f+44>>2]=0}c=K[f+60|0];b=J[f+44>>2]}if(!(b|!(c&2))){H[f+60|0]=c&251}o=o+1|0;if((r|0)!=(o|0)){continue}break}}J[g+64>>2]=0;j=J[245446];h=((L[j+33956>>1]<<2)+j|0)+33932|0;k=J[j+84>>2];c=J[j+76>>2];b=J[245444];r=J[245445];d=mxa(b,r,J[j+80>>2]);o=J[(d<<2)+c>>2];d=k+(o<<4)|0;if(J[d>>2]!=(b|0)|J[d+4>>2]!=(r|0)){while(1){o=J[(k+(o<<4)|0)+12>>2];c=k+(o<<4)|0;if((b|0)!=J[c>>2]|(r|0)!=J[c+4>>2]){continue}break}}n=J[h>>2];s=J[g+52>>2];h=j+112|0;l=h+P(J[(k+(o<<4)|0)+8>>2],1056)|0;if(!(J[l+8>>2]|J[l+16>>2]|J[l+12>>2])){break h}if(!s){break g}m=J[l+20>>2];x=Q(Q(1)/Q(s>>>0));t=Q(M[g+44>>2]);w=Q(M[g+48>>2]);o=0;while(1){c=h+P(o,1056)|0;j=J[c+20>>2];L:{if(!j|(b|0)==J[c>>2]&(r|0)==J[c+4>>2]){break L}p=N[c+8>>2];e=N[c+12>>2];if(!(J[c+12>>2]|(J[c+16>>2]|J[c+8>>2]))){break L}e=Q(Q(e-p)/w);u=Q(Q(e*t)+p);y=Q(Q(e+u)-u);i=0;while(1){k=i<<3;c=k|4;p=N[c+j>>2];d=k+m|0;e=Q(Q(Q(x*Q(i|0))*y)+u);e=eQ(1)?Q(1):e;N[d>>2]=Q(N[k+j>>2]*e)+N[d>>2];d=c+m|0;N[d>>2]=Q(p*e)+N[d>>2];i=i+1|0;if((s|0)!=(i|0)){continue}break}}o=o+1|0;if((o|0)!=32){continue}break}if(!s){break g}p=N[l+8>>2];e=Q(Q(N[l+12>>2]-p)/Q(M[g+48>>2]));t=Q(Q(e*Q(M[g+44>>2]))+p);w=Q(Q(e+t)-t);i=0;while(1){d=i<<1|1;y=N[m+(d<<2)>>2];c=n+(i<<2)|0;p=Q(Q(Q(x*Q(i|0))*w)+t);e=Q(N[m+(i<<3)>>2]*p);e=e>Q(32767)?Q(32767):e;e=e>1]=b;d=n+(d<<1)|0;e=Q(y*p);e=e>Q(32767)?Q(32767):e;e=e>1]=b;i=i+1|0;if((s|0)!=(i|0)){continue}break}break g}Z(12395,42316,1192,4617);B()}Z(61721,42316,1154,66281);B()}ij(n,0,s<<2)}Zi[J[J[a+4>>2]+12>>2]](J[a+8>>2],J[(L[a+33956>>1]<<2)+E>>2],A)|0;I[a+33956>>1]=(L[a+33956>>1]+1>>>0)%6;D=D+1|0;q=q-1|0;if(q){continue}break}}if(!z){break c}Lj(z)}a=0}Ui=g+80|0;return a}Z(145396,53895,487,84789);B()}function ON(a){var b=0,c=0,d=0,e=0,f=0,g=0,h=0,i=0,j=0,k=0;h=Ui-320|0;Ui=h;Mb();d=J[a+3480>>2];if(!(d&4)){J[a+2412>>2]=J[a+2412>>2]|-2147483648;e=a+2372|0;d=0;while(1){g=1<>>0>56){break a}b=J[(c<<2)+863200>>2]}b:{if(Ub(b|0)|0){b=e+(d>>>3&536870908)|0;J[b>>2]=g|J[b>>2];break b}b=e+(d>>>3&536870908)|0;J[b>>2]=J[b>>2]&(g^-1)}d=d+1|0;if((d|0)!=313){continue}break}d=J[a+3480>>2]}if(!(d&2)){J[a+2432>>2]=J[a+2432>>2]|-2147483648;b=ea(Eq(0)|0)|0;J[a+2428>>2]=J[a+2428>>2]&-2|(b|0)!=0;b=ea(Eq(1)|0)|0;J[a+2428>>2]=J[a+2428>>2]&-3|((b|0)!=0)<<1;b=ea(Eq(2)|0)|0;J[a+2428>>2]=J[a+2428>>2]&-5|((b|0)!=0)<<2;b=ea(Eq(3)|0)|0;J[a+2428>>2]=J[a+2428>>2]&-9|((b|0)!=0)<<3;b=ea(Eq(4)|0)|0;J[a+2428>>2]=J[a+2428>>2]&-17|((b|0)!=0)<<4;b=ea(Eq(5)|0)|0;J[a+2428>>2]=J[a+2428>>2]&-33|((b|0)!=0)<<5;b=ea(Eq(6)|0)|0;J[a+2428>>2]=J[a+2428>>2]&-65|((b|0)!=0)<<6;b=ea(Eq(7)|0)|0;J[a+2428>>2]=J[a+2428>>2]&-129|((b|0)!=0)<<7;b=Rb()|0;J[a+2424>>2]=J[a+3480>>2]&64?0-b|0:b;Sb(a+2416|0,a+2420|0);d=J[a+3480>>2]}c:{if(!(d&8)){g=a+4|0;b=J[a+3476>>2];d=0;while(1){c=g+P(d,148)|0;e=K[c+144|0];if((e|0)!=255){i=J[b>>2];if(e>>>0>=J[b+4>>2]-i>>2>>>0){break c}e=J[i+(e<<2)>>2];Zi[J[e+8>>2]](a,e,c)}d=d+1|0;if((d|0)!=16){continue}break}d=J[a+3480>>2]}if(!(d&16)){i=0;k=ij(h,0,308);g=J[a>>2];d=0;j=Ui-16|0;Ui=j;J[j+12>>2]=0;d:{e:{f:{e=J[g+64>>2];if(J[g+72>>2]-e>>5>>>0<11){if(H[g+76|0]&1){break f}lj(11,32,g- -64|0,g+72|0,g+68|0);e=J[g+64>>2];if(J[g+72>>2]-e>>5>>>0<11){break e}J[g+68>>2]=e+352}g:{if(!J[218836]){break g}b=J[218831];J[e>>2]=J[218830];J[e+4>>2]=b;b=J[218837];J[e+24>>2]=J[218836];J[e+28>>2]=b;b=J[218835];J[e+16>>2]=J[218834];J[e+20>>2]=b;b=J[218833];J[e+8>>2]=J[218832];J[e+12>>2]=b;d=1;c=J[218831];h:{if(c-3>>>0<=1){J[218836]=0;b=6;break h}b=2;i:{switch(c|0){case 0:break h;case 5:break i;default:break g}}J[e+4>>2]=0;b=3}J[218831]=b}if(J[218844]){f=J[218839];c=(d<<5)+e|0;b=c;J[b>>2]=J[218838];J[b+4>>2]=f;b=J[218845];J[c+24>>2]=J[218844];J[c+28>>2]=b;b=J[218843];J[c+16>>2]=J[218842];J[c+20>>2]=b;b=J[218841];J[c+8>>2]=J[218840];J[c+12>>2]=b;b=2;f=J[218839];j:{k:{if(f-3>>>0>=2){l:{switch(f|0){case 0:break k;case 5:break l;default:break j}}J[c+4>>2]=0;b=3;break k}J[218844]=0;b=6}J[218839]=b}d=d+1|0}if(J[218852]){f=J[218847];c=(d<<5)+e|0;b=c;J[b>>2]=J[218846];J[b+4>>2]=f;b=J[218853];J[c+24>>2]=J[218852];J[c+28>>2]=b;b=J[218851];J[c+16>>2]=J[218850];J[c+20>>2]=b;b=J[218849];J[c+8>>2]=J[218848];J[c+12>>2]=b;b=2;f=J[218847];m:{n:{if(f-3>>>0>=2){o:{switch(f|0){case 0:break n;case 5:break o;default:break m}}J[c+4>>2]=0;b=3;break n}J[218852]=0;b=6}J[218847]=b}d=d+1|0}if(J[218860]){f=J[218855];c=(d<<5)+e|0;b=c;J[b>>2]=J[218854];J[b+4>>2]=f;b=J[218861];J[c+24>>2]=J[218860];J[c+28>>2]=b;b=J[218859];J[c+16>>2]=J[218858];J[c+20>>2]=b;b=J[218857];J[c+8>>2]=J[218856];J[c+12>>2]=b;b=2;f=J[218855];p:{q:{if(f-3>>>0>=2){r:{switch(f|0){case 0:break q;case 5:break r;default:break p}}J[c+4>>2]=0;b=3;break q}J[218860]=0;b=6}J[218855]=b}d=d+1|0}if(J[218868]){f=J[218863];c=(d<<5)+e|0;b=c;J[b>>2]=J[218862];J[b+4>>2]=f;b=J[218869];J[c+24>>2]=J[218868];J[c+28>>2]=b;b=J[218867];J[c+16>>2]=J[218866];J[c+20>>2]=b;b=J[218865];J[c+8>>2]=J[218864];J[c+12>>2]=b;b=2;f=J[218863];s:{t:{if(f-3>>>0>=2){u:{switch(f|0){case 0:break t;case 5:break u;default:break s}}J[c+4>>2]=0;b=3;break t}J[218868]=0;b=6}J[218863]=b}d=d+1|0}if(J[218876]){f=J[218871];c=(d<<5)+e|0;b=c;J[b>>2]=J[218870];J[b+4>>2]=f;b=J[218877];J[c+24>>2]=J[218876];J[c+28>>2]=b;b=J[218875];J[c+16>>2]=J[218874];J[c+20>>2]=b;b=J[218873];J[c+8>>2]=J[218872];J[c+12>>2]=b;b=2;f=J[218871];v:{w:{if(f-3>>>0>=2){x:{switch(f|0){case 0:break w;case 5:break x;default:break v}}J[c+4>>2]=0;b=3;break w}J[218876]=0;b=6}J[218871]=b}d=d+1|0}if(J[218884]){f=J[218879];c=(d<<5)+e|0;b=c;J[b>>2]=J[218878];J[b+4>>2]=f;b=J[218885];J[c+24>>2]=J[218884];J[c+28>>2]=b;b=J[218883];J[c+16>>2]=J[218882];J[c+20>>2]=b;b=J[218881];J[c+8>>2]=J[218880];J[c+12>>2]=b;b=2;f=J[218879];y:{z:{if(f-3>>>0>=2){A:{switch(f|0){case 0:break z;case 5:break A;default:break y}}J[c+4>>2]=0;b=3;break z}J[218884]=0;b=6}J[218879]=b}d=d+1|0}if(J[218892]){f=J[218887];c=(d<<5)+e|0;b=c;J[b>>2]=J[218886];J[b+4>>2]=f;b=J[218893];J[c+24>>2]=J[218892];J[c+28>>2]=b;b=J[218891];J[c+16>>2]=J[218890];J[c+20>>2]=b;b=J[218889];J[c+8>>2]=J[218888];J[c+12>>2]=b;b=2;f=J[218887];B:{C:{if(f-3>>>0>=2){D:{switch(f|0){case 0:break C;case 5:break D;default:break B}}J[c+4>>2]=0;b=3;break C}J[218892]=0;b=6}J[218887]=b}d=d+1|0}if(J[218900]){f=J[218895];c=(d<<5)+e|0;b=c;J[b>>2]=J[218894];J[b+4>>2]=f;b=J[218901];J[c+24>>2]=J[218900];J[c+28>>2]=b;b=J[218899];J[c+16>>2]=J[218898];J[c+20>>2]=b;b=J[218897];J[c+8>>2]=J[218896];J[c+12>>2]=b;b=2;f=J[218895];E:{F:{if(f-3>>>0>=2){G:{switch(f|0){case 0:break F;case 5:break G;default:break E}}J[c+4>>2]=0;b=3;break F}J[218900]=0;b=6}J[218895]=b}d=d+1|0}if(J[218908]){f=J[218903];c=(d<<5)+e|0;b=c;J[b>>2]=J[218902];J[b+4>>2]=f;b=J[218909];J[c+24>>2]=J[218908];J[c+28>>2]=b;b=J[218907];J[c+16>>2]=J[218906];J[c+20>>2]=b;b=J[218905];J[c+8>>2]=J[218904];J[c+12>>2]=b;b=2;f=J[218903];H:{I:{if(f-3>>>0>=2){J:{switch(f|0){case 0:break I;case 5:break J;default:break H}}J[c+4>>2]=0;b=3;break I}J[218908]=0;b=6}J[218903]=b}d=d+1|0}if(J[218916]){c=J[218911];e=(d<<5)+e|0;b=e;J[b>>2]=J[218910];J[b+4>>2]=c;b=J[218917];J[e+24>>2]=J[218916];J[e+28>>2]=b;b=J[218915];J[e+16>>2]=J[218914];J[e+20>>2]=b;b=J[218913];J[e+8>>2]=J[218912];J[e+12>>2]=b;b=2;c=J[218911];K:{L:{if(c-3>>>0>=2){M:{switch(c|0){case 0:break L;case 5:break M;default:break K}}J[e+4>>2]=0;b=3;break L}J[218916]=0;b=6}J[218911]=b}d=d+1|0}J[j+12>>2]=(d|0)>11?11:d;b=J[j+12>>2];if((b|0)>0){c=J[g+64>>2];f=J[g+68>>2]-c>>5;e=0;while(1){if((e|0)==(f|0)){break c}d=k+P(e,28)|0;g=c+(e<<5)|0;J[d>>2]=J[g>>2];J[d+4>>2]=J[g+4>>2];J[d+8>>2]=J[g+8>>2];J[d+12>>2]=J[g+12>>2];J[d+16>>2]=J[g+16>>2];J[d+20>>2]=J[g+20>>2];J[d+24>>2]=J[g+28>>2];e=e+1|0;if((b|0)!=(e|0)){continue}break}}Ui=j+16|0;break d}Z(151729,53895,501,2284);B()}Z(144782,53895,514,59583);B()}J[a+2920>>2]=b;if(b){g=a+2436|0;J[a+2924>>2]=J[a+2924>>2]|-2147483648;while(1){d=g+P(i,44)|0;e=k+P(i,28)|0;J[d>>2]=J[e>>2];J[d+40>>2]=J[e+24>>2];J[d+4>>2]=J[e+4>>2];J[d+8>>2]=J[e+8>>2];J[d+12>>2]=J[e+12>>2];J[d+24>>2]=J[e+16>>2];J[d+28>>2]=J[e+20>>2];i=i+1|0;if((b|0)!=(i|0)){continue}break}}d=J[a+3480>>2]}N:{if(d&32){break N}J[a+3480>>2]=d&-34;if(!(_b(h|0,h+4|0,h+8|0)|0)){break N}J[a+3480>>2]=J[a+3480>>2]|1;b=J[h+4>>2];J[a+3452>>2]=J[h>>2];J[a+3456>>2]=b;J[a+3460>>2]=J[h+8>>2]}Ui=h+320|0;return}Z(145396,53895,487,84789);B()}function cn(a,b,c){var d=Q(0),e=0,f=0,g=0,h=0,i=0,j=0,k=0,l=0,m=0,n=0,o=0,p=0,q=0,r=0,s=0,t=0,u=0,v=0,w=0,x=0,y=0,z=0,A=0,C=0,D=0,E=0;g=Ui-80|0;Ui=g;J[g+72>>2]=0;e=g- -64|0;J[e>>2]=0;J[e+4>>2]=0;J[g+56>>2]=0;J[g+60>>2]=0;J[g+48>>2]=0;J[g+40>>2]=0;J[g+44>>2]=0;J[g+32>>2]=0;J[g+36>>2]=0;H[g+31|0]=0;H[g+30|0]=0;H[g+29|0]=0;H[g+28|0]=0;H[g+27|0]=0;H[g+26|0]=0;H[g+25|0]=0;H[g+24|0]=0;H[g+23|0]=0;i=J[c>>2];if(J[i+324>>2]){x=c+88|0;y=c+100|0;z=c+76|0;A=c+52|0;C=c- -64|0;D=c+4|0;E=c+16|0;while(1){h=P(t,40)+i|0;if(J[h+20>>2]==J[c+112>>2]){n=J[h+16>>2];J[g+56>>2]=n;m=J[h+12>>2];J[g+60>>2]=m;p=0;l=0;q=0;a:{b:{c:{d:{e:{f:{g:{j=n;switch(j-1|0){case 3:break g;case 0:case 1:case 2:break a;case 6:break d;case 5:break e;case 4:break f;default:break c}}l=1;break a}j=4;break b}j=9;break b}j=16;break b}q=1;j=0;break a}l=1}J[g+68>>2]=j;u=n-5|0;w=u>>>0<3;H[g+72|0]=w|K[g+72|0]&254;o=m-1|0;v=o>>>0>6;if(!v){p=J[(o<<2)+160892>>2]}i=g+24|0;e=x;h:{i:{j:{k:{l:{m:{n:{o:{p:{q:{r:{s:{r=J[h+8>>2];switch(r-1|0){case 2:break j;case 1:break k;case 0:break m;case 8:break n;case 7:break o;case 6:break p;case 5:break q;case 4:break r;case 3:break s;default:break l}}i=g+23|0;e=y;break j}i=g+25|0;e=z;break j}i=g+27|0;e=A;break j}i=g+26|0;e=C;break j}i=g+31|0;e=D;break j}i=g+30|0;e=E;break j}f=J[h+28>>2];J[g+40>>2]=f;h=J[h+32>>2];J[g+36>>2]=m;J[g+32>>2]=h;i=K[g+48|0]&-2|h-5>>>0<3;H[g+48|0]=i;e=h-1|0;k=0;if(e>>>0>6){break i}k=J[(e<<2)+160864>>2];break i}Z(152113,39452,385,64726);B()}i=J[h+24>>2]==1;e=(i?40:28)+c|0;i=i?g+28|0:g+29|0}f=i;i=K[i|0];H[f|0]=i+1;t:{f=J[e>>2];if(!f){break t}s=K[e+8|0];if(i>>>0>=(s&127)>>>0){break t}f=J[f+(i<<2)>>2];if(!f){break t}k=0;h=J[e+4>>2];e=h-1|0;if(e>>>0<=6){k=J[(e<<2)+160864>>2]}J[g+36>>2]=7;e=K[g+48|0];J[g+32>>2]=h;i=e&-2|h-5>>>0<3;H[g+48|0]=i;J[g+44>>2]=k;f=f+((s<<24>>24>=0?P(b,k):0)<<2)|0;J[g+40>>2]=f;e=7;break h}f=J[h+28>>2];J[g+40>>2]=f;h=J[h+32>>2];J[g+36>>2]=m;J[g+32>>2]=h;i=K[g+48|0]&-2|h-5>>>0<3;H[g+48|0]=i;e=h-1|0;k=0;if(e>>>0>6){break i}k=J[(e<<2)+160864>>2]}J[g+44>>2]=k;e=m}s=P(j,p);u:{v:{if(!f){w:{if(u>>>0<=2){k=16;J[g+44>>2]=16;h=7;J[g+32>>2]=7;f=160752;J[g+40>>2]=160752;i=i|1;break w}e=r-2|0;if(e>>>0>5){f=160848}else{f=J[(e<<2)+240168>>2]}k=4;J[g+44>>2]=4;J[g+40>>2]=f;J[g+32>>2]=4;h=4;i=i&254}e=7;J[g+36>>2]=7;H[g+48|0]=i;break v}if((h|0)!=1){break v}h=0;h=v?h:J[(o<<2)+160892>>2];if((e|0)!=(m|0)){d=Q(0);x:{y:{switch(e-1|0){case 6:d=N[f>>2];break x;case 0:d=Q(H[f|0]);break x;case 1:d=Q(K[f|0]);break x;case 2:d=Q(I[f>>1]);break x;case 3:d=Q(L[f>>1]);break x;case 4:d=Q(J[f>>2]);break x;case 5:break y;default:break x}}d=Q(M[f>>2])}tD(g,d,m);f=g}if(!w){i=0;if(q){break u}while(1){hj(P(h,i)+a|0,f,h);i=i+1|0;if(i>>>0>2]){continue}break}break u}k=n-2|0;e=n-3|0;m=P(e,e);j=0;e=0;i=a;while(1){z:{if(!j){hj(i,f,h);break z}ij(i,0,h)}j=j+1|0;j=(j|0)!=(k|0)?j:0;i=h+i|0;e=e+1|0;if((m|0)!=(e|0)){continue}break}break u}if(!(!(i&1)|u>>>0>2)){p=0;i=0;i=v?i:J[(o<<2)+160892>>2];l=e-1|0;if(l>>>0<=6){p=J[(l<<2)+160892>>2]}A:{if((j|0)==(k|0)){if((e|0)==(m|0)){break A}h=0;i=a;if(q){break u}while(1){e=J[g+40>>2];f=J[g+36>>2];B:{if((f|0)==7){d=N[e+(h<<2)>>2];break B}e=e+P(h,p)|0;d=Q(0);C:{switch(f-1|0){case 0:d=Q(H[e|0]);break B;case 1:d=Q(K[e|0]);break B;case 2:d=Q(I[e>>1]);break B;case 3:d=Q(L[e>>1]);break B;case 4:d=Q(J[e>>2]);break B;case 5:break C;default:break B}}d=Q(M[e>>2])}i=tD(i,d,J[g+60>>2]);h=h+1|0;if(h>>>0>2]){continue}break}break u}o=h-5>>>0<3?h-3|0:0;m=n-3|0;l=0;e=a;h=e;if(j>>>0>>0){while(1){n=P(l,o);h=0;while(1){f=h+n|0;j=J[g+36>>2];q=J[g+60>>2];D:{if((j|0)==(q|0)){j=hj(e,J[g+40>>2]+P(f,p)|0,i);break D}k=J[g+40>>2];E:{if((j|0)==7){d=N[k+(f<<2)>>2];break E}f=k+P(f,p)|0;d=Q(0);F:{switch(j-1|0){case 0:d=Q(H[f|0]);break E;case 1:d=Q(K[f|0]);break E;case 2:d=Q(I[f>>1]);break E;case 3:d=Q(L[f>>1]);break E;case 4:d=Q(J[f>>2]);break E;case 5:break F;default:break E}}d=Q(M[f>>2])}j=0;G:{H:{switch(q-1|0){case 0:d=dQ(127)?Q(127):d;I:{if(Q(R(d))Q(255)?Q(255):d;J:{if(d=Q(0)){f=~~d>>>0;break J}f=0}H[e|0]=f;j=e+1|0;break D;case 2:d=dQ(32767)?Q(32767):d;K:{if(Q(R(d))>1]=f;j=e+2|0;break D;case 3:d=dQ(65535)?Q(65535):d;L:{if(d=Q(0)){f=~~d>>>0;break L}f=0}I[e>>1]=f;j=e+2|0;break D;case 4:d=dQ(2147483648)?Q(2147483648):d;if(Q(R(d))>2]=~~d;break G}J[e>>2]=-2147483648;break G;case 5:d=dQ(4294967296)?Q(4294967296):d;if(d=Q(0)){J[e>>2]=~~d>>>0;break G}J[e>>2]=0;break G;case 6:break H;default:break D}}N[e>>2]=d}j=e+4|0}e=i+j|0;h=h+1|0;if((m|0)!=(h|0)){continue}break}l=l+1|0;if((m|0)!=(l|0)){continue}break u}}while(1){M:{if(l>>>0>=o>>>0){j=0;while(1){d=(j|0)==(l|0)?Q(1):Q(0);N:{O:{switch(J[g+60>>2]-1|0){case 6:N[h>>2]=d;break N;case 5:if(d=Q(0)){J[h>>2]=~~d>>>0;break N}J[h>>2]=0;break N;case 4:if(Q(R(d))>2]=~~d;break N}J[h>>2]=-2147483648;break N;case 3:if(d=Q(0)){I[h>>1]=~~d>>>0;break N}I[h>>1]=0;break N;case 2:if(Q(R(d))>1]=~~d;break N}I[h>>1]=0;break N;case 1:if(d=Q(0)){H[h|0]=~~d>>>0;break N}H[h|0]=0;break N;case 0:break O;default:break N}}if(Q(R(d))>2];P:{if(j>>>0>>0){n=J[g+36>>2];if((n|0)==(k|0)){hj(h,f,i);f=f+i|0;break P}e=j+q|0;Q:{if((n|0)==7){d=N[(e<<2)+f>>2];break Q}e=P(e,p)+f|0;d=Q(0);R:{switch(n-1|0){case 0:d=Q(H[e|0]);break Q;case 1:d=Q(K[e|0]);break Q;case 2:d=Q(I[e>>1]);break Q;case 3:d=Q(L[e>>1]);break Q;case 4:d=Q(J[e>>2]);break Q;case 5:break R;default:break Q}}d=Q(M[e>>2])}S:{switch(k-1|0){case 0:d=dQ(127)?Q(127):d;if(Q(R(d))Q(255)?Q(255):d;if(d=Q(0)){H[h|0]=~~d>>>0;f=f+i|0;break P}H[h|0]=0;f=f+i|0;break P;case 2:d=dQ(32767)?Q(32767):d;if(Q(R(d))>1]=~~d;f=f+i|0;break P}I[h>>1]=0;f=f+i|0;break P;case 3:d=dQ(65535)?Q(65535):d;if(d=Q(0)){I[h>>1]=~~d>>>0;f=f+i|0;break P}I[h>>1]=0;f=f+i|0;break P;case 4:d=dQ(2147483648)?Q(2147483648):d;if(Q(R(d))>2]=~~d;f=f+i|0;break P}J[h>>2]=-2147483648;f=f+i|0;break P;case 5:d=dQ(4294967296)?Q(4294967296):d;if(d=Q(0)){J[h>>2]=~~d>>>0;f=f+i|0;break P}J[h>>2]=0;f=f+i|0;break P;case 6:N[h>>2]=d;break;default:break S}}f=f+i|0;break P}T:{switch(k-1|0){case 0:case 1:H[h|0]=0;break P;case 2:case 3:I[h>>1]=0;break P;case 4:case 5:case 6:break T;default:break P}}J[h>>2]=0}h=h+i|0;j=j+1|0;if((m|0)!=(j|0)){continue}break}}l=l+1|0;if((m|0)!=(l|0)){continue}break}break u}hj(a,f,P(i,j));break u}if(!(!(1<>>0<=k>>>0|r>>>0>7))){J[g+8>>2]=0;J[g+12>>2]=0;J[g>>2]=0;J[g+4>>2]=0;h=1;U:{V:{W:{switch(e-1|0){case 4:case 5:h=4;break V;default:h=0;break V;case 6:J[hj(g,f,k<<2)+12>>2]=1065353216;break U;case 0:case 1:break V;case 2:case 3:break W}}h=2}e=hj(g,f,P(h,k))+P(p,3)|0;X:{switch(o|0){case 0:case 1:H[e|0]=1;break U;case 2:case 3:I[e>>1]=1;break U;case 4:case 5:J[e>>2]=1;break U;case 6:break X;default:break U}}J[e>>2]=1065353216}J[g+44>>2]=4;J[g+40>>2]=g;VO(a,g+32|0,g+56|0);break u}VO(a,g+32|0,g+56|0)}i=J[c>>2];a=a+s|0}t=t+1|0;if(t>>>0>2]){continue}break}}Ui=g+80|0;return a}function OF(a,b,c,d,e){var f=0,g=0,h=0,i=0,j=0,k=0,l=0,m=0,n=0,o=0,p=0,q=0,r=0;k=Ui-16|0;Ui=k;a:{b:{c:{d:{e:{f:{while(1){g:{f=b-a>>4;switch(f|0){case 0:case 1:break a;case 2:break b;case 3:break c;case 4:break d;case 5:break e;default:break g}}if((f|0)<24){break f}h:{if(!d){break h}m=b-16|0;i=f>>>1<<4;g=i+a|0;i:{if(f>>>0<=128){rn(g,a,m,c);break i}rn(a,g,m,c);f=a+16|0;h=g-16|0;rn(f,h,b-32|0,c);f=f+i|0;rn(a+32|0,f,b-48|0,c);rn(h,g,f,c);f=J[a+12>>2];J[k+8>>2]=J[a+8>>2];J[k+12>>2]=f;f=J[a+4>>2];J[k>>2]=J[a>>2];J[k+4>>2]=f;f=J[g+12>>2];J[a+8>>2]=J[g+8>>2];J[a+12>>2]=f;f=J[g+4>>2];J[a>>2]=J[g>>2];J[a+4>>2]=f;f=J[k+12>>2];J[g+8>>2]=J[k+8>>2];J[g+12>>2]=f;f=J[k+4>>2];J[g>>2]=J[k>>2];J[g+4>>2]=f}d=d-1|0;j:{if(e&1){break j}f=a-16|0;if(fk(J[c>>2],J[f>>2],J[f+4>>2])>>>0>2],J[a>>2],J[a+4>>2])>>>0){break j}p=b-48|0;o=b-32|0;while(1){l=Ui-16|0;Ui=l;i=J[a+8>>2];n=J[a+12>>2];e=J[a+4>>2];j=e;g=J[a>>2];f=b;h=f-16|0;k:{if(fk(J[c>>2],g,e)>>>0>2],J[h>>2],J[h+4>>2])>>>0){e=a;while(1){q=fk(J[c>>2],g,j);h=e;r=J[e+16>>2];e=e+16|0;if(fk(J[c>>2],r,J[h+20>>2])>>>0<=q>>>0){continue}break}break k}e=a;while(1){e=e+16|0;if(f>>>0<=e>>>0){break k}if(fk(J[c>>2],g,j)>>>0>=fk(J[c>>2],J[e>>2],J[e+4>>2])>>>0){continue}break}}if(e>>>0>>0){while(1){f=f-16|0;if(fk(J[c>>2],g,j)>>>0>2],J[f>>2],J[f+4>>2])>>>0){continue}break}}if(e>>>0>>0){while(1){h=J[e+12>>2];J[l+8>>2]=J[e+8>>2];J[l+12>>2]=h;h=J[e+4>>2];J[l>>2]=J[e>>2];J[l+4>>2]=h;h=J[f+12>>2];J[e+8>>2]=J[f+8>>2];J[e+12>>2]=h;h=J[f+4>>2];J[e>>2]=J[f>>2];J[e+4>>2]=h;h=J[l+12>>2];J[f+8>>2]=J[l+8>>2];J[f+12>>2]=h;h=J[l+4>>2];J[f>>2]=J[l>>2];J[f+4>>2]=h;while(1){q=fk(J[c>>2],g,j);h=e;r=J[e+16>>2];e=e+16|0;if(fk(J[c>>2],r,J[h+20>>2])>>>0<=q>>>0){continue}break}while(1){f=f-16|0;if(fk(J[c>>2],g,j)>>>0>2],J[f>>2],J[f+4>>2])>>>0){continue}break}if(e>>>0>>0){continue}break}}f=e-16|0;if((f|0)!=(a|0)){h=J[f+4>>2];J[a>>2]=J[f>>2];J[a+4>>2]=h;h=J[f+12>>2];J[a+8>>2]=J[f+8>>2];J[a+12>>2]=h}J[f>>2]=g;J[f+4>>2]=j;a=e-8|0;J[a>>2]=i;J[a+4>>2]=n;Ui=l+16|0;l:{a=e;f=b-a>>4;switch(f|0){case 0:case 1:break a;case 2:break b;case 3:break c;case 4:break d;case 5:break e;default:break l}}if((f|0)<=23){e=0;break f}if(!d){break h}g=f>>>1<<4;e=g+a|0;m:{if(f>>>0>=129){rn(a,e,m,c);f=a+16|0;i=e-16|0;rn(f,i,o,c);f=f+g|0;rn(a+32|0,f,p,c);rn(i,e,f,c);f=J[a+12>>2];J[k+8>>2]=J[a+8>>2];J[k+12>>2]=f;f=J[a+4>>2];J[k>>2]=J[a>>2];J[k+4>>2]=f;f=J[e+12>>2];J[a+8>>2]=J[e+8>>2];J[a+12>>2]=f;f=J[e+4>>2];J[a>>2]=J[e>>2];J[a+4>>2]=f;f=J[k+12>>2];J[e+8>>2]=J[k+8>>2];J[e+12>>2]=f;f=J[k+4>>2];J[e>>2]=J[k>>2];J[e+4>>2]=f;break m}rn(e,a,m,c)}d=d-1|0;e=a-16|0;if(fk(J[c>>2],J[e>>2],J[e+4>>2])>>>0>=fk(J[c>>2],J[a>>2],J[a+4>>2])>>>0){continue}break}e=0}g=b;j=Ui-16|0;Ui=j;l=J[a+8>>2];p=J[a+12>>2];h=J[a>>2];m=J[a+4>>2];f=a;while(1){i=f;f=f+16|0;if(fk(J[c>>2],J[i+16>>2],J[i+20>>2])>>>0>2],h,m)>>>0){continue}break}n:{if((a|0)==(i|0)){while(1){if(f>>>0>=g>>>0){break n}g=g-16|0;if(fk(J[c>>2],J[g>>2],J[g+4>>2])>>>0>=fk(J[c>>2],h,m)>>>0){continue}break n}}while(1){g=g-16|0;if(fk(J[c>>2],J[g>>2],J[g+4>>2])>>>0>=fk(J[c>>2],h,m)>>>0){continue}break}}o=f>>>0>=g>>>0;if(!o){while(1){i=J[f+12>>2];J[j+8>>2]=J[f+8>>2];J[j+12>>2]=i;i=J[f+4>>2];J[j>>2]=J[f>>2];J[j+4>>2]=i;i=J[g+12>>2];J[f+8>>2]=J[g+8>>2];J[f+12>>2]=i;i=J[g+4>>2];J[f>>2]=J[g>>2];J[f+4>>2]=i;i=J[j+12>>2];J[g+8>>2]=J[j+8>>2];J[g+12>>2]=i;i=J[j+4>>2];J[g>>2]=J[j>>2];J[g+4>>2]=i;while(1){i=f;n=J[f+16>>2];f=f+16|0;if(fk(J[c>>2],n,J[i+20>>2])>>>0>2],h,m)>>>0){continue}break}while(1){g=g-16|0;if(fk(J[c>>2],J[g>>2],J[g+4>>2])>>>0>=fk(J[c>>2],h,m)>>>0){continue}break}if(f>>>0>>0){continue}break}}g=f-16|0;if((g|0)!=(a|0)){i=J[g+4>>2];J[a>>2]=J[g>>2];J[a+4>>2]=i;i=J[g+12>>2];J[a+8>>2]=J[g+8>>2];J[a+12>>2]=i}J[g>>2]=h;J[g+4>>2]=m;f=f-8|0;J[f>>2]=l;J[f+4>>2]=p;H[k+4|0]=o;J[k>>2]=g;Ui=j+16|0;g=J[k>>2];o:{if(K[k+4|0]!=1){break o}i=nU(a,g,c);f=g+16|0;if(nU(f,b,c)){b=g;if(!i){continue}break a}if(!i){break o}a=f;continue}OF(a,g,c,d,e&1);a=g+16|0;e=0;continue}break}if((a|0)==(b|0)){break a}e=f-2>>>1|0;while(1){i=e;g=(e<<4)+a|0;p:{if((f|0)<2){break p}p=f-2>>>1|0;d=g-a|0;if((p|0)>4){break p}d=d>>3;j=d+1|0;e=(j<<4)+a|0;d=d+2|0;if((d|0)<(f|0)){h=d;d=fk(J[c>>2],J[e>>2],J[e+4>>2])>>>0>2],J[e+16>>2],J[e+20>>2])>>>0;j=d?h:j;e=d?e+16|0:e}if(fk(J[c>>2],J[e>>2],J[e+4>>2])>>>0>2],J[g>>2],J[g+4>>2])>>>0){break p}l=J[g+8>>2];o=J[g+12>>2];h=J[g>>2];m=J[g+4>>2];while(1){q:{d=e;n=J[e+4>>2];J[g>>2]=J[e>>2];J[g+4>>2]=n;n=J[e+12>>2];J[g+8>>2]=J[e+8>>2];J[g+12>>2]=n;if((j|0)>(p|0)){break q}g=j<<1;j=g|1;e=(j<<4)+a|0;g=g+2|0;if((g|0)<(f|0)){n=g;g=fk(J[c>>2],J[e>>2],J[e+4>>2])>>>0>2],J[e+16>>2],J[e+20>>2])>>>0;j=g?n:j;e=g?e+16|0:e}g=d;if(fk(J[c>>2],J[e>>2],J[e+4>>2])>>>0>=fk(J[c>>2],h,m)>>>0){continue}}break}J[d+8>>2]=l;J[d+12>>2]=o;J[d>>2]=h;J[d+4>>2]=m}e=i-1|0;if(i){continue}break}while(1){i=b;e=0;j=Ui-16|0;Ui=j;g=f;r:{if((f|0)<2){break r}b=J[a+12>>2];J[j+8>>2]=J[a+8>>2];J[j+12>>2]=b;b=J[a+4>>2];J[j>>2]=J[a>>2];J[j+4>>2]=b;l=f-2>>>1|0;d=a;while(1){h=e<<1;f=h|1;e=(e<<4)+d|0;b=e+16|0;m=h+2|0;s:{if((m|0)>=(g|0)){e=f;break s}n=f;h=e+32|0;f=fk(J[c>>2],J[b>>2],J[b+4>>2])>>>0>2],J[h>>2],J[h+4>>2])>>>0;e=f?m:n;b=f?h:b}f=J[b+4>>2];J[d>>2]=J[b>>2];J[d+4>>2]=f;f=J[b+12>>2];J[d+8>>2]=J[b+8>>2];J[d+12>>2]=f;d=b;if((e|0)<=(l|0)){continue}break}d=i-16|0;if((d|0)==(b|0)){d=J[j+4>>2];J[b>>2]=J[j>>2];J[b+4>>2]=d;d=J[j+12>>2];J[b+8>>2]=J[j+8>>2];J[b+12>>2]=d;break r}e=J[d+4>>2];J[b>>2]=J[d>>2];J[b+4>>2]=e;e=J[d+12>>2];J[b+8>>2]=J[d+8>>2];J[b+12>>2]=e;e=J[j+4>>2];J[d>>2]=J[j>>2];J[d+4>>2]=e;e=J[j+12>>2];J[d+8>>2]=J[j+8>>2];J[d+12>>2]=e;d=(b-a|0)+16>>4;if((d|0)<2){break r}d=d-2>>>1|0;f=(d<<4)+a|0;if(fk(J[c>>2],J[f>>2],J[f+4>>2])>>>0>=fk(J[c>>2],J[b>>2],J[b+4>>2])>>>0){break r}l=J[b+8>>2];p=J[b+12>>2];h=J[b>>2];m=J[b+4>>2];while(1){t:{e=f;o=J[f+4>>2];J[b>>2]=J[f>>2];J[b+4>>2]=o;o=J[f+12>>2];J[b+8>>2]=J[f+8>>2];J[b+12>>2]=o;if(!d){break t}b=f;d=d-1>>>1|0;f=(d<<4)+a|0;if(fk(J[c>>2],J[f>>2],J[f+4>>2])>>>0>2],h,m)>>>0){continue}}break}J[e+8>>2]=l;J[e+12>>2]=p;J[e>>2]=h;J[e+4>>2]=m}Ui=j+16|0;b=i-16|0;f=g-1|0;if(g>>>0>2){continue}break}break a}f=a+16|0;d=(a|0)==(b|0)|(f|0)==(b|0);if(e&1){if(d){break a}e=a;while(1){g=f;if(fk(J[c>>2],J[e+16>>2],J[e+20>>2])>>>0>2],J[e>>2],J[e+4>>2])>>>0){h=J[e+24>>2];j=J[e+28>>2];i=J[f>>2];l=J[f+4>>2];d=f;while(1){u:{f=e;e=J[f+4>>2];J[d>>2]=J[f>>2];J[d+4>>2]=e;e=J[f+12>>2];J[d+8>>2]=J[f+8>>2];J[d+12>>2]=e;if((a|0)==(f|0)){f=a;break u}d=f;e=f-16|0;if(fk(J[c>>2],i,l)>>>0>2],J[e>>2],J[e+4>>2])>>>0){continue}}break}J[f+8>>2]=h;J[f+12>>2]=j;J[f>>2]=i;J[f+4>>2]=l}e=g;f=e+16|0;if((f|0)!=(b|0)){continue}break}break a}if(d){break a}while(1){if(fk(J[c>>2],J[a+16>>2],J[a+20>>2])>>>0>2],J[a>>2],J[a+4>>2])>>>0){g=J[a+24>>2];h=J[a+28>>2];e=J[f>>2];i=J[f+4>>2];d=f;while(1){l=J[a+4>>2];J[d>>2]=J[a>>2];J[d+4>>2]=l;l=J[a+12>>2];J[d+8>>2]=J[a+8>>2];J[d+12>>2]=l;d=a;a=a-16|0;if(fk(J[c>>2],e,i)>>>0>2],J[a>>2],J[a+4>>2])>>>0){continue}break}J[d+8>>2]=g;J[d+12>>2]=h;J[d>>2]=e;J[d+4>>2]=i}a=f;f=f+16|0;if((f|0)!=(b|0)){continue}break}break a}EF(a,a+16|0,a+32|0,a+48|0,b-16|0,c);break a}Jz(a,a+16|0,a+32|0,b-16|0,c);break a}rn(a,a+16|0,b-16|0,c);break a}b=b-16|0;if(fk(J[c>>2],J[b>>2],J[b+4>>2])>>>0>=fk(J[c>>2],J[a>>2],J[a+4>>2])>>>0){break a}c=J[a+12>>2];J[k+8>>2]=J[a+8>>2];J[k+12>>2]=c;c=J[a+4>>2];J[k>>2]=J[a>>2];J[k+4>>2]=c;c=J[b+12>>2];J[a+8>>2]=J[b+8>>2];J[a+12>>2]=c;c=J[b+4>>2];J[a>>2]=J[b>>2];J[a+4>>2]=c;a=J[k+12>>2];J[b+8>>2]=J[k+8>>2];J[b+12>>2]=a;a=J[k+4>>2];J[b>>2]=J[k>>2];J[b+4>>2]=a}Ui=k+16|0}function Vja(a){a=a|0;var b=0,c=0,d=0,e=0,f=0,g=0,h=0,i=Q(0),j=0,k=Q(0),l=0,m=0,n=0,o=0,p=0,q=0,r=Q(0),s=Q(0),t=0,u=0,v=0,w=0,x=0,y=0,z=0,A=0,C=Q(0),D=Q(0),E=Q(0),F=Q(0),G=Q(0),M=Q(0),O=Q(0),T=Q(0),U=Q(0),V=Q(0),W=Q(0),X=Q(0),Y=Q(0),_=Q(0),$=Q(0),aa=Q(0),ba=Q(0),ca=Q(0),da=Q(0),ea=Q(0),fa=Q(0),ga=Q(0),ha=Q(0),ia=Q(0),ja=Q(0),ka=Q(0),la=Q(0),ma=Q(0),na=0,oa=0,pa=0,qa=0,ra=0,sa=0,ta=0,ua=0,va=0,wa=0,xa=0;m=Ui-32|0;Ui=m;e=J[a+4>>2];y=J[a+8>>2];J[m+28>>2]=272;a=J[y+52>>2];J[m+20>>2]=0;J[m+16>>2]=e;J[m+8>>2]=a;a=J[e+32>>2];d=J[e+36>>2];if((a|0)!=(d|0)){while(1){c=J[(h<<2)+a>>2];if((K[c+22|0]&3)==3){a=J[c+8>>2];b=((J[a+264>>2]-J[a+260>>2]|0)/12|0)+(L[a+26>>1]+b|0)|0;d=J[e+36>>2];a=J[e+32>>2]}h=h+1|0;if(h>>>0>2>>>0){continue}break}}a:{b:{c:{b=(b<<1)+(b>>>3|0)|0;h=J[e>>2];c=(J[e+8>>2]-h|0)/352|0;if(b>>>0>c>>>0){if(H[e+12|0]&1){break c}lj(b,352,e,e+8|0,e+4|0);if(H[e+28|0]&1){break c}lj(b,4,e+16|0,e+24|0,e+20|0);a=J[e+16>>2];if(b>>>0>J[e+24>>2]-a>>2>>>0){break b}J[e+20>>2]=a+(b<<2);ij(a+(c<<2)|0,0,b-c<<2);d=J[e+36>>2];h=J[e>>2];a=J[e+32>>2]}J[e+4>>2]=h;J[e+72>>2]=J[e+68>>2];if((a|0)!=(d|0)){h=0;while(1){w=J[(na<<2)+a>>2];if((K[w+22|0]&3)==3){a=J[w+16>>2];if(!a){a=J[J[w+4>>2]+96>>2]}J[m+12>>2]=J[a>>2];wa=m+8|0;f=Ui-80|0;Ui=f;g=J[w+8>>2];a=J[g+12>>2];b=J[a+56>>2];J[a+60>>2]=b;J[a+76>>2]=J[a+72>>2];J[a+92>>2]=J[a+88>>2];J[a+108>>2]=J[a+104>>2];J[a+124>>2]=J[a+120>>2];J[a+140>>2]=J[a+136>>2];c=a+140|0;n=a+144|0;q=a+136|0;l=a+124|0;t=a+128|0;oa=a+120|0;pa=a+108|0;o=a+112|0;x=a+104|0;z=a+92|0;qa=a+96|0;ra=a+88|0;A=a+76|0;sa=a+80|0;ta=a+72|0;u=a+60|0;va=a- -64|0;v=a+56|0;j=J[a+64>>2]-b>>4;b=L[g+26>>1]<<1;if(j>>>0>>0){if(H[a+68|0]&1){break c}lj(b,16,v,va,u);if(H[a+84|0]&1){break c}lj(b,64,ta,sa,A);if(H[a+100|0]&1){break c}lj(b,4,ra,qa,z);if(H[a+188|0]&1){break c}lj(b,80,a+176|0,a+184|0,a+180|0);d=J[a+176>>2];if(b>>>0>(J[a+184>>2]-d|0)/80>>>0){break b}J[a+180>>2]=d+P(b,80);if(H[a+116|0]&1){break c}lj(b,24,x,o,pa);if(H[a+132|0]&1){break c}lj(b,4,oa,t,l);if(H[a+148|0]&1){break c}lj(b,2,q,n,c)}I[a+192>>1]=0;b=L[a+194>>1]+1|0;I[a+194>>1]=(b&65535)!=65535?b:0;JO(g,L[g+364>>1],0,0,x,65535);pD(g,L[g+364>>1],0,x,v);b=J[a+60>>2];j=J[a+56>>2];d=b-j>>4;ua=j;j=(b|0)==(j|0);MF(ua,b,f+16|0,j?0:62-(S(d)<<1)|0,1);b=J[a+64>>2]-J[a+56>>2]>>4;if(b>>>0>J[a+80>>2]-J[a+72>>2]>>6>>>0){if(H[a+84|0]&1){break c}lj(b,64,ta,sa,A);if(H[a+100|0]&1){break c}lj(b,4,ra,qa,z);if(H[a+188|0]&1){break c}lj(b,80,a+176|0,a+184|0,a+180|0);p=J[a+176>>2];if(b>>>0>(J[a+184>>2]-p|0)/80>>>0){break b}J[a+180>>2]=p+P(b,80);if(H[a+116|0]&1){break c}lj(b,24,x,o,pa);if(H[a+132|0]&1){break c}lj(b,4,oa,t,l);if(H[a+148|0]&1){break c}lj(b,2,q,n,c)}d:{e:{f:{if(j){break f}xa=d>>>0<=1?1:d;q=0;o=0;while(1){a=J[v>>2];if(J[u>>2]-a>>4>>>0<=o>>>0){break a}n=a+(o<<4)|0;j=L[n+8>>1];b=J[g+32>>2];if(j>>>0>=(J[g+36>>2]-b|0)/672>>>0){break a}J[f+12>>2]=1065353216;c=b+P(j,672)|0;a=J[c+476>>2];g:{if(!(a&262144)|(a>>>4&15)-5>>>0<2|J[c+504>>2]!=2){break g}b=J[c+520>>2];if(!b){break g}d=J[c+508>>2];a=d&8191;d=(d>>>13&8191)-a|0;p=d-1|0;ua=a;i=Q(N[c+544>>2]*Q(d|0));h:{if(Q(R(i))=0?(a|0)<(p|0)?a:p:0)<<5)+b|0;i=N[a+12>>2];i:{j:{k=N[a>>2];r=N[a+8>>2];if(k==r){break j}s=N[a+20>>2];if(s==i){break j}i=Q(r-k);k=Q(N[a+4>>2]-s);d=514;a=512;break i}i=Q(i-N[a+4>>2]);k=Q(N[a+16>>2]-k);d=512;a=514}N[c+64>>2]=k*Q(L[c+d>>1]);N[c+68>>2]=i*Q(L[a+c>>1])}a=f+16|0;b=Ui-80|0;Ui=b;d=L[c+656>>1];if((d|0)!=65535){p=J[g+32>>2];if(d>>>0>=(J[g+36>>2]-p|0)/672>>>0){break a}OO(g,p+P(d,672)|0,b+16|0,b+12|0,J[g+12>>2]+176|0)}k:{if(!(K[c+478|0]&64)){if(!(H[g+374|0]&1)|J[g+352>>2]==2){break k}}Yx(g,c)}N[a>>2]=N[c+384>>2];N[a+4>>2]=N[c+388>>2];N[a+8>>2]=N[c+392>>2];N[a+12>>2]=N[c+396>>2];N[a+16>>2]=N[c+400>>2];N[a+20>>2]=N[c+404>>2];N[a+24>>2]=N[c+408>>2];N[a+28>>2]=N[c+412>>2];N[a+32>>2]=N[c+416>>2];N[a+36>>2]=N[c+420>>2];N[a+40>>2]=N[c+424>>2];N[a+44>>2]=N[c+428>>2];N[a+48>>2]=N[c+432>>2];N[a+52>>2]=N[c+436>>2];N[a+56>>2]=N[c+440>>2];N[a+60>>2]=N[c+444>>2];PO(c,6,a);N[f+12>>2]=N[c+60>>2];l:{if(L[c+656>>1]==65535){break l}i=N[a+12>>2];k=N[a+8>>2];r=N[a>>2];s=N[a+4>>2];C=N[a+28>>2];D=N[a+24>>2];E=N[a+16>>2];F=N[a+20>>2];G=N[a+44>>2];M=N[a+40>>2];O=N[a+32>>2];T=N[a+36>>2];U=N[b+64>>2];V=N[b+48>>2];W=N[b+16>>2];X=N[b+32>>2];Y=N[b+68>>2];_=N[b+52>>2];$=N[b+20>>2];aa=N[b+36>>2];ba=N[b+72>>2];ca=N[b+56>>2];da=N[b+24>>2];ea=N[b+40>>2];fa=N[b+76>>2];ga=N[a+60>>2];ha=N[b+60>>2];ia=N[a+56>>2];ja=N[b+28>>2];ka=N[a+48>>2];la=N[b+44>>2];ma=N[a+52>>2];N[a+60>>2]=Q(fa*ga)+Q(Q(ha*ia)+Q(Q(ja*ka)+Q(la*ma)));N[a+56>>2]=Q(ba*ga)+Q(Q(ca*ia)+Q(Q(da*ka)+Q(ea*ma)));N[a+52>>2]=Q(Y*ga)+Q(Q(_*ia)+Q(Q($*ka)+Q(aa*ma)));N[a+48>>2]=Q(U*ga)+Q(Q(V*ia)+Q(Q(W*ka)+Q(X*ma)));N[a+44>>2]=Q(fa*G)+Q(Q(ha*M)+Q(Q(ja*O)+Q(la*T)));N[a+40>>2]=Q(ba*G)+Q(Q(ca*M)+Q(Q(da*O)+Q(ea*T)));N[a+36>>2]=Q(Y*G)+Q(Q(_*M)+Q(Q($*O)+Q(aa*T)));N[a+32>>2]=Q(U*G)+Q(Q(V*M)+Q(Q(W*O)+Q(X*T)));N[a+28>>2]=Q(fa*C)+Q(Q(ha*D)+Q(Q(ja*E)+Q(la*F)));N[a+24>>2]=Q(ba*C)+Q(Q(ca*D)+Q(Q(da*E)+Q(ea*F)));N[a+20>>2]=Q(Y*C)+Q(Q(_*D)+Q(Q($*E)+Q(aa*F)));N[a+16>>2]=Q(U*C)+Q(Q(V*D)+Q(Q(W*E)+Q(X*F)));N[a+12>>2]=Q(fa*i)+Q(Q(ha*k)+Q(Q(ja*r)+Q(s*la)));N[a+8>>2]=Q(ba*i)+Q(Q(ca*k)+Q(Q(da*r)+Q(s*ea)));N[a+4>>2]=Q(Y*i)+Q(Q(_*k)+Q(Q($*r)+Q(s*aa)));N[a>>2]=Q(U*i)+Q(Q(V*k)+Q(Q(W*r)+Q(X*s)));if(!(K[c+478|0]&128)){break l}N[f+12>>2]=N[b+12>>2]*N[f+12>>2]}Ui=b+80|0;m:{n:{a=J[c+476>>2];if(!(!(a&2097152)|a&268435456)){b=L[c+666>>1];if((b|0)!=65535|N[f+12>>2]!=Q(0)){break n}}J[n>>2]=-1;J[n+4>>2]=-1;J[n+8>>2]=0;q=q+1|0;break m}a=J[A>>2];if((a|0)==J[sa>>2]){break e}J[A>>2]=a- -64;N[a>>2]=N[f+16>>2];N[a+4>>2]=N[f+20>>2];N[a+8>>2]=N[f+24>>2];N[a+12>>2]=N[f+28>>2];N[a+16>>2]=N[f+32>>2];N[a+20>>2]=N[f+36>>2];N[a+24>>2]=N[f+40>>2];N[a+28>>2]=N[f+44>>2];N[a+32>>2]=N[f+48>>2];N[a+36>>2]=N[f+52>>2];N[a+40>>2]=N[f+56>>2];N[a+44>>2]=N[f+60>>2];N[a+48>>2]=N[f+64>>2];N[a+52>>2]=N[f+68>>2];N[a+56>>2]=N[f+72>>2];N[a+60>>2]=N[f+76>>2];a=J[z>>2];if((a|0)==J[qa>>2]){break e}i=N[f+12>>2];J[z>>2]=a+4;N[a>>2]=i;if((b|0)!=65535){d=J[x>>2];c=(J[pa>>2]-d|0)/24|0;if(c>>>0<=b>>>0){break a}a=d+P(b,24)|0;if((j|0)==L[a+20>>1]){if(J[n>>2]==J[a+8>>2]&J[a+12>>2]==J[n+4>>2]){a=L[a+16>>1];if((a|0)==65535){a=0}else{if(a>>>0>=c>>>0){break a}a=(d+P(a,24)|0)+4|0}b=J[l>>2];if((b|0)==J[t>>2]){break e}J[l>>2]=b+4;J[b>>2]=a;break m}b=J[l>>2];if((b|0)==J[t>>2]){break e}J[l>>2]=b+4;J[b>>2]=a;break m}b=J[l>>2];if((b|0)==J[t>>2]){break e}J[l>>2]=b+4;J[b>>2]=a+4;break m}a=J[l>>2];if((a|0)==J[t>>2]){break e}J[l>>2]=a+4;J[a>>2]=0}o=o+1|0;if((xa|0)!=(o|0)){continue}break}if(!q){break f}a=J[v>>2];b=J[u>>2];NF(a,b,f+12|0,(a|0)!=(b|0)?62-(S(b-a>>4)<<1)|0:0,1);a=J[v>>2];b=(J[u>>2]-a>>4)-q|0;if(b>>>0>J[va>>2]-a>>4>>>0){break b}J[u>>2]=a+(b<<4)}H[g+374|0]=K[g+374|0]&254;a=J[v>>2];Zi[J[m+28>>2]](g,a,J[ta>>2],J[ra>>2],J[oa>>2],J[u>>2]-a>>4,wa);Ui=f+80|0;break d}Z(112520,53895,557,53220);B()}b=zq(J[y+52>>2],((J[e+4>>2]-J[e>>2]|0)/352|0)-h|0);a=fC(J[y+52>>2],273,e);c=L[J[w+8>>2]+370>>1];d=J[e>>2];o:{if((J[e+4>>2]-d|0)/352>>>0<=h>>>0){a=b;break o}f=a<<6;c=c<<16;a=b;while(1){J[a+36>>2]=J[a+36>>2]&-64|32;d=P(h,352)+d|0;g=J[d+336>>2];J[a+28>>2]=h;J[a+16>>2]=d;J[a+20>>2]=0;J[a+24>>2]=c+g;J[a+32>>2]=J[J[d+172>>2]+144>>2];J[a+36>>2]=f|J[a+36>>2]&-16321;a=a+48|0;h=h+1|0;d=J[e>>2];if(h>>>0<(J[e+4>>2]-d|0)/352>>>0){continue}break}}yq(J[y+52>>2],b,a);d=J[e+36>>2];a=J[e+32>>2]}na=na+1|0;if(na>>>0>2>>>0){continue}break}}Ui=m+32|0;return 0}Z(151729,53895,501,2284);B()}Z(144782,53895,514,59583);B()}Z(145396,53895,487,84789);B()}function yM(a,b,c,d,e,f,g,h,i,j,k){var l=0,m=Q(0),n=Q(0),o=Q(0),p=Q(0),q=Q(0),r=Q(0),s=0,t=Q(0),u=Q(0),v=Q(0),w=0,x=0,y=0,z=0,A=Q(0),C=Q(0),D=Q(0),E=Q(0),F=Q(0),G=0,I=0,K=Q(0),O=Q(0),R=Q(0),S=Q(0),T=Q(0),U=Q(0),V=Q(0),W=0,X=0,Y=Q(0),_=Q(0),$=0,aa=Q(0),ba=Q(0),ca=Q(0),da=0,ea=0,fa=0,ga=0,ha=0,ia=0,ja=0,ka=Q(0),la=0,ma=Q(0),na=Q(0),oa=Q(0),pa=Q(0),qa=0,ra=0,sa=Q(0),ta=0,ua=Q(0),va=Q(0),wa=Q(0),xa=0,ya=Q(0),za=Q(0),Aa=Q(0),Ba=Q(0),Ca=Q(0),Da=0,Ea=0,Fa=0,Ga=Q(0);l=Ui-496|0;Ui=l;a:{b:{c:{if(J[g+328>>2]==336){if(!J[g+320>>2]){break c}J[l+12>>2]=0;d:{if(!c){c=1;break d}y=c&65535;s=J[a>>2];if(y>>>0>=J[a+4>>2]-s>>2>>>0){break a}z=J[s+(y<<2)>>2];if(L[z+80>>1]!=(c>>>16|0)){c=0;dj(4,96107,66969,0);break d}c=J[z+4>>2];y=J[z>>2];if((c|0)==(y|0)){c=0;break d}s=(c-y|0)/304|0;w=s>>>0<=1?1:s;c=0;e:{while(1){if(J[(y+P(c,304)|0)+280>>2]){break e}c=c+1|0;if((w|0)!=(c|0)){continue}break}c=0;break d}if(d>>>0>=s>>>0){break a}w=J[J[z+64>>2]+16>>2];if(M[w+4>>2]<=d>>>0){break b}x=J[k>>2];ja=J[g+320>>2];G=(x>>>0)/(ja>>>0)|0;s=0;c=0;f:{if(!i){break f}c=0;if(!j){break f}c=J[w>>2];w=y+P(d,304)|0;$=J[w+56>>2];da=J[w+60>>2];J[l+492>>2]=0;W=J[g+320>>2];J[w+260>>2]=0;y=G+((x|0)!=(P(G,ja)|0))|0;J[w+256>>2]=y;qa=J[w+8>>2];x=(qa|0)!=0;d=P(d,160)+c|0;ea=J[d+108>>2]==1;G=J[w+20>>2];fa=(G|0)!=0;ga=J[w+32>>2];ha=J[w+36>>2]-ga|0;ia=ha>>>0>1;X=J[g+324>>2];if(X){c=0;while(1){g:{h:{i:{j:{k:{l:{I=P(c,40)+g|0;switch(J[I+8>>2]-2|0){case 6:break h;case 3:break i;case 2:break j;case 1:break k;case 0:break l;default:break g}}I=J[I+24>>2];s=((I|0)==1|s)&-3|((s&2)>>>1|0?2:((I|0)==2)<<1);break g}s=s|32;break g}s=s|64;break g}s=s|16;break g}s=s|128}c=c+1|0;if((X|0)!=(c|0)){continue}break}}t=N[d+128>>2];m=N[d+132>>2];ka=N[d+136>>2];c=x&ea;ea=fa&ia;x=J[w+4>>2];X=J[w+48>>2];I=J[w+44>>2];fa=J[w+16>>2];ta=J[w+12>>2];la=J[w+40>>2];m:{if(J[d+12>>2]!=1){T=Q(1);E=Q(1);break m}O=N[z+56>>2];R=N[z+52>>2];K=N[z+48>>2];T=N[z+44>>2];ua=N[z+40>>2];va=N[z+36>>2];wa=N[z+32>>2];E=N[z+60>>2]}z=c&ea;ia=(j>>>0)/(W>>>0)|0;d=J[w+24>>2];c=J[w+28>>2];n:{if(d>>>0>c>>>0){o=Q(Q(c>>>0)/Q(d>>>0));n=Q(1);break n}o=Q(1);n=Q(1);if(!c){break n}n=Q(Q(d>>>0)/Q(c>>>0))}ma=Q(1);na=Q(1);if(!z){na=c>>>0>>0?Q(.5):c?Q(n*Q(.5)):Q(.5);ma=Q(o*Q(.5))}d=0;ij(l+52|0,0,100);J[l+152>>2]=0;J[l+40>>2]=g;H[l+148|0]=129;J[l+144>>2]=1;H[l+52|0]=129;J[l+48>>2]=7;J[l+36>>2]=l+160;J[l+32>>2]=l+156;J[l+28>>2]=l+384;J[l+24>>2]=l+288;J[l+20>>2]=l+224;J[l+140>>2]=l+32;J[l+44>>2]=l+36;J[l+16>>2]=l+240;H[l+124|0]=129;J[l+120>>2]=4;J[l+116>>2]=l+20;H[l+88|0]=1;J[l+84>>2]=4;J[l+80>>2]=l+28;H[l+136|0]=1;J[l+132>>2]=2;H[l+76|0]=1;J[l+72>>2]=4;J[l+128>>2]=l+16;J[l+68>>2]=l+24;c=(da-$|0)/160|0;da=c>>>0>>0?c:f;c=da+e|0;f=(J[w+60>>2]-J[w+56>>2]|0)/160|0;ra=c>>>0>>0?c:f;o:{if(ra>>>0<=e>>>0){s=y;break o}c=y+6|0;if(ia>>>0>>0){s=y;break o}xa=(G|0)==2|(G|0)==4;ya=Q(Q(ka*ka)+Q(Q(m*m)+Q(t*t)));W=x?ga:0;$=(ha<<1)-2|0;d=G-5>>>0<2?$>>>0<=1?1:$:ha;za=Q(Q(la>>>0)/Q(d>>>0));Aa=Q(b*Q(.5));ga=x?x:173872;Ba=Q(t*n);Ca=Q(m*o);la=s>>>6&(fa|0)!=0;f=(I|0)!=0;j=P(X?f|2:f,24)+173776|0;X=s&128;I=s&32;Da=s&16;Ea=s&2;Fa=s&1;oa=Q(-R);sa=Q(-K);pa=Q(-O);f=x?d:1;Ga=Q(f>>>0);while(1){s=c;c=J[w+56>>2];if((J[w+60>>2]-c|0)/160>>>0<=e>>>0){break a}c=c+P(e,160)|0;p:{if(ea){b=za;b=Q(Q(Q(Q(N[c+68>>2]-N[c+64>>2])-Aa)*(!(1<>>0>6?b:N[c+72>>2]))*Ga);q:{if(b=Q(0)){d=~~b>>>0;break q}d=0}d=(d>>>0)%(f>>>0)|0;d=d>>>0>>0?d:$-d|0;d=xa?(d^-1)+f|0:d;o=N[c+136>>2];q=N[c+132>>2];t=N[c+128>>2];if(z){x=(d+W<<3)+qa|0;ma=Q(N[x+4>>2]*Q(.5));na=Q(N[x>>2]*Q(.5));break p}b=N[c+80>>2];o=Q(o*b);q=Q(q*b);t=Q(t*b);break p}b=N[c+80>>2];o=Q(N[c+136>>2]*b);q=Q(N[c+132>>2]*b);t=Q(N[c+128>>2]*b);d=0}b=Q(T*N[c+8>>2]);n=Q(T*N[c+4>>2]);m=Q(T*N[c>>2]);r=Q(Q(sa*b)+Q(Q(E*n)+Q(O*m)));p=Q(Q(O*b)+Q(Q(K*m)+Q(R*n)));u=Q(Q(oa*m)+Q(Q(E*b)+Q(K*n)));b=Q(Q(pa*n)+Q(Q(E*m)+Q(R*b)));F=Q(ua+Q(Q(r*K)+Q(Q(Q(p*O)+Q(E*u))-Q(b*R))));U=Q(va+Q(Q(b*O)+Q(Q(Q(p*R)+Q(E*r))-Q(u*K))));V=Q(wa+Q(Q(u*R)+Q(Q(Q(p*K)+Q(E*b))-Q(r*O))));b=N[c+40>>2];p=N[c+36>>2];u=N[c+44>>2];v=N[c+32>>2];r=Q(Q(pa*b)+Q(Q(oa*p)+Q(Q(E*u)-Q(K*v))));n=Q(Q(oa*v)+Q(Q(K*p)+Q(Q(E*b)+Q(O*u))));m=Q(Q(sa*b)+Q(Q(O*v)+Q(Q(E*p)+Q(R*u))));b=Q(Q(pa*p)+Q(Q(R*b)+Q(Q(E*v)+Q(K*u))));aa=Q(T*o);Y=Q(T*q);_=Q(T*t);r:{if(!(ya>Q(0))){t=n;o=r;n=m;break r}o=Q(Ca*Y);t=Q(Ba*_);q=Q(ka*aa);p=Q(Q(Q(r*o)+Q(t*n))-Q(b*q));u=Q(Q(n*q)+Q(Q(b*t)+Q(o*m)));v=Q(Q(Q(r*q)+Q(o*b))-Q(m*t));o=Q(Q(Q(r*t)+Q(q*m))-Q(n*o));F=Q(F+Q(Q(p*b)+Q(Q(Q(u*n)+Q(r*v))-Q(o*m))));U=Q(U+Q(Q(o*n)+Q(Q(Q(u*m)+Q(r*p))-Q(v*b))));V=Q(V+Q(Q(v*m)+Q(Q(Q(u*b)+Q(r*o))-Q(p*n))));p=Q(n*Q(-0));t=Q(m*Q(-0));q=Q(b*Q(0));o=Q(p+Q(t+Q(r-q)));r=Q(r*Q(0));t=Q(t+Q(q+Q(r+n)));b=Q(p+Q(Q(m*Q(0))+Q(r+b)));n=Q(Q(Q(n*Q(0))+Q(r+m))-q)}ba=Q(aa*Q(0));S=Q(Q(-b)*ba);m=Q(Y*ma);ca=Q(_*Q(0));q=Q(S+Q(Q(o*m)+Q(ca*t)));A=Q(t*ba);p=Q(A+Q(Q(b*ca)+Q(m*n)));C=Q(o*ba);u=Q(Q(C+Q(m*b))-Q(n*ca));D=Q(ba*n);v=Q(Q(Q(o*ca)+D)-Q(t*m));m=Q(Q(q*b)+Q(Q(Q(p*t)+Q(o*u))-Q(v*n)));r=Q(Q(v*t)+Q(Q(Q(p*n)+Q(o*q))-Q(u*b)));q=Q(Q(u*n)+Q(Q(Q(p*b)+Q(o*v))-Q(q*t)));u=S;S=Q(Y*Q(0));p=Q(_*na);v=Q(u+Q(Q(o*S)+Q(p*t)));A=Q(A+Q(Q(b*p)+Q(S*n)));C=Q(Q(C+Q(S*b))-Q(n*p));D=Q(Q(Q(o*p)+D)-Q(t*S));p=Q(Q(v*b)+Q(Q(Q(A*t)+Q(o*C))-Q(D*n)));u=Q(Q(D*t)+Q(Q(Q(A*n)+Q(o*v))-Q(C*b)));v=Q(Q(C*n)+Q(Q(Q(A*b)+Q(o*D))-Q(v*t)));if(Fa){N[l+456>>2]=F+Q(p-m);N[l+452>>2]=U+Q(u-r);N[l+448>>2]=V+Q(v-q);A=Q(F+Q(p+m));N[l+440>>2]=A;C=Q(U+Q(u+r));N[l+436>>2]=C;D=Q(V+Q(v+q));N[l+432>>2]=D;N[l+424>>2]=A;N[l+420>>2]=C;N[l+416>>2]=D;N[l+408>>2]=F+Q(m-p);N[l+404>>2]=U+Q(r-u);N[l+400>>2]=V+Q(q-v);A=Q(F+Q(Q(-p)-m));N[l+472>>2]=A;C=Q(U+Q(Q(-u)-r));N[l+468>>2]=C;D=Q(V+Q(Q(-v)-q));N[l+464>>2]=D;N[l+392>>2]=A;N[l+388>>2]=C;N[l+384>>2]=D}if(Ea){N[l+360>>2]=p-m;N[l+356>>2]=u-r;N[l+352>>2]=v-q;A=Q(p+m);N[l+344>>2]=A;C=Q(u+r);N[l+340>>2]=C;D=Q(v+q);N[l+336>>2]=D;N[l+328>>2]=A;N[l+324>>2]=C;N[l+320>>2]=D;N[l+312>>2]=m-p;N[l+308>>2]=r-u;N[l+304>>2]=q-v;m=Q(Q(-p)-m);N[l+376>>2]=m;r=Q(Q(-u)-r);N[l+372>>2]=r;q=Q(Q(-v)-q);N[l+368>>2]=q;N[l+296>>2]=m;N[l+292>>2]=r;N[l+288>>2]=q}if(Da){m=N[h>>2];r=N[c+112>>2];q=N[h+4>>2];p=N[c+116>>2];u=N[h+8>>2];v=N[c+120>>2];N[l+236>>2]=N[c+124>>2]*N[h+12>>2];N[l+232>>2]=v*u;N[l+228>>2]=p*q;N[l+224>>2]=r*m}d=d+W|0;if(I){c=ga+(d<<5)|0;x=c+(J[j>>2]<<3)|0;N[l+240>>2]=N[x>>2];N[l+244>>2]=N[x+4>>2];x=c+(J[j+4>>2]<<3)|0;N[l+248>>2]=N[x>>2];N[l+252>>2]=N[x+4>>2];x=c+(J[j+8>>2]<<3)|0;N[l+256>>2]=N[x>>2];N[l+260>>2]=N[x+4>>2];x=c+(J[j+12>>2]<<3)|0;N[l+264>>2]=N[x>>2];N[l+268>>2]=N[x+4>>2];x=c+(J[j+16>>2]<<3)|0;N[l+272>>2]=N[x>>2];N[l+276>>2]=N[x+4>>2];c=c+(J[j+20>>2]<<3)|0;N[l+280>>2]=N[c>>2];N[l+284>>2]=N[c+4>>2]}if(la){N[l+156>>2]=M[ta+(J[fa+(d<<2)>>2]<<2)>>2]}if(X){J[l+220>>2]=1065353216;N[l+216>>2]=F;N[l+212>>2]=U;N[l+208>>2]=V;N[l+204>>2]=ba;N[l+188>>2]=S;N[l+172>>2]=ca;m=Q(t+t);q=Q(n*m);p=Q(b+b);u=Q(p*o);N[l+196>>2]=aa*Q(q-u);v=Q(b*m);r=Q(n+n);F=Q(r*o);N[l+192>>2]=aa*Q(v+F);N[l+184>>2]=Y*Q(q+u);q=Q(b*r);o=Q(o*m);N[l+176>>2]=Y*Q(q-o);N[l+168>>2]=_*Q(v-F);N[l+164>>2]=_*Q(q+o);b=Q(Q(1)-Q(b*p));n=Q(n*r);N[l+200>>2]=aa*Q(b-n);o=b;b=Q(t*m);N[l+180>>2]=Y*Q(o-b);N[l+160>>2]=_*Q(Q(Q(1)-n)-b)}c=l+40|0;cn(cn(cn(cn(cn(cn(P(J[g+320>>2],y)+i|0,0,c),1,c),2,c),3,c),4,c),5,c);e=e+1|0;if(ra>>>0>e>>>0){y=s;c=s+6|0;if(ia>>>0>=c>>>0){continue}}break}W=J[g+320>>2];d=J[w+260>>2];y=J[w+256>>2]}c=s-y|0;J[w+260>>2]=c+d;s=P(c,W);J[k>>2]=s+J[k>>2];c=(e>>>0>>0)<<1}J[a+56>>2]=((s>>>0)/(ja>>>0)>>>0)/6}Ui=l+496|0;return c}Z(136208,41810,676,50268);B()}Z(113905,41810,677,50268);B()}Z(12664,55442,270,84789);B()}Z(145396,53895,487,84789);B()}function mz(a,b){var c=0,d=0,e=0,f=0,g=0,h=0,i=0,j=0,k=0,l=0,m=0,n=0;c=Ui-16|0;Ui=c;j=1;a:{b:{switch(b-a>>4){case 2:b=b-16|0;e=J[b>>2];d=J[b+4>>2];f=J[a+4>>2];if((d|0)==(f|0)&M[a>>2]<=e>>>0|d>>>0>f>>>0){break a}e=J[a+12>>2];J[c+8>>2]=J[a+8>>2];J[c+12>>2]=e;e=J[a+4>>2];J[c>>2]=J[a>>2];J[c+4>>2]=e;e=J[b+12>>2];J[a+8>>2]=J[b+8>>2];J[a+12>>2]=e;e=J[b+4>>2];J[a>>2]=J[b>>2];J[a+4>>2]=e;a=J[c+12>>2];J[b+8>>2]=J[c+8>>2];J[b+12>>2]=a;a=J[c+4>>2];J[b>>2]=J[c>>2];J[b+4>>2]=a;break a;case 3:d=b-16|0;e=d;b=J[e>>2];f=J[e+4>>2];g=J[a+20>>2];h=J[a+4>>2];e=J[a+16>>2];if((g|0)==(h|0)&e>>>0>=M[a>>2]|g>>>0>h>>>0){if((f|0)==(g|0)&b>>>0>=e>>>0|f>>>0>g>>>0){break a}b=J[a+28>>2];J[c+8>>2]=J[a+24>>2];J[c+12>>2]=b;b=J[a+20>>2];J[c>>2]=J[a+16>>2];J[c+4>>2]=b;b=J[d+12>>2];J[a+24>>2]=J[d+8>>2];J[a+28>>2]=b;b=J[d+4>>2];J[a+16>>2]=J[d>>2];J[a+20>>2]=b;b=J[c+12>>2];J[d+8>>2]=J[c+8>>2];J[d+12>>2]=b;b=J[c+4>>2];J[d>>2]=J[c>>2];J[d+4>>2]=b;b=J[a+20>>2];e=J[a+4>>2];if((b|0)==(e|0)&M[a+16>>2]>=M[a>>2]|b>>>0>e>>>0){break a}b=J[a+12>>2];J[c+8>>2]=J[a+8>>2];J[c+12>>2]=b;b=J[a+4>>2];J[c>>2]=J[a>>2];J[c+4>>2]=b;b=J[a+28>>2];J[a+8>>2]=J[a+24>>2];J[a+12>>2]=b;b=J[a+20>>2];J[a>>2]=J[a+16>>2];J[a+4>>2]=b;b=J[c+12>>2];J[a+24>>2]=J[c+8>>2];J[a+28>>2]=b;b=J[c+4>>2];J[a+16>>2]=J[c>>2];J[a+20>>2]=b;break a}if((f|0)==(g|0)&b>>>0>>0|f>>>0>>0){b=J[a+12>>2];J[c+8>>2]=J[a+8>>2];J[c+12>>2]=b;b=J[a+4>>2];J[c>>2]=J[a>>2];J[c+4>>2]=b;b=J[d+12>>2];J[a+8>>2]=J[d+8>>2];J[a+12>>2]=b;b=J[d+4>>2];J[a>>2]=J[d>>2];J[a+4>>2]=b;a=J[c+12>>2];J[d+8>>2]=J[c+8>>2];J[d+12>>2]=a;a=J[c+4>>2];J[d>>2]=J[c>>2];J[d+4>>2]=a;break a}b=J[a+12>>2];J[c+8>>2]=J[a+8>>2];J[c+12>>2]=b;b=J[a+4>>2];J[c>>2]=J[a>>2];J[c+4>>2]=b;b=J[a+28>>2];J[a+8>>2]=J[a+24>>2];J[a+12>>2]=b;b=J[a+20>>2];J[a>>2]=J[a+16>>2];J[a+4>>2]=b;b=J[c+12>>2];J[a+24>>2]=J[c+8>>2];J[a+28>>2]=b;b=J[c+4>>2];J[a+16>>2]=J[c>>2];J[a+20>>2]=b;b=J[d+4>>2];e=J[a+20>>2];if((b|0)==(e|0)&M[d>>2]>=M[a+16>>2]|b>>>0>e>>>0){break a}b=J[a+28>>2];J[c+8>>2]=J[a+24>>2];J[c+12>>2]=b;b=J[a+20>>2];J[c>>2]=J[a+16>>2];J[c+4>>2]=b;b=J[d+12>>2];J[a+24>>2]=J[d+8>>2];J[a+28>>2]=b;b=J[d+4>>2];J[a+16>>2]=J[d>>2];J[a+20>>2]=b;a=J[c+12>>2];J[d+8>>2]=J[c+8>>2];J[d+12>>2]=a;a=J[c+4>>2];J[d>>2]=J[c>>2];J[d+4>>2]=a;break a;case 4:f=b-16|0;b=J[a+32>>2];g=J[a+36>>2];h=J[a+20>>2];i=J[a+4>>2];e=J[a+16>>2];d=J[a>>2];c:{if((h|0)==(i|0)&e>>>0>=d>>>0|h>>>0>i>>>0){if((g|0)==(h|0)&b>>>0>=e>>>0|g>>>0>h>>>0){break c}b=J[a+28>>2];J[c+8>>2]=J[a+24>>2];J[c+12>>2]=b;b=J[a+20>>2];J[c>>2]=J[a+16>>2];J[c+4>>2]=b;b=J[a+44>>2];J[a+24>>2]=J[a+40>>2];J[a+28>>2]=b;b=J[a+36>>2];J[a+16>>2]=J[a+32>>2];J[a+20>>2]=b;b=J[c+12>>2];J[a+40>>2]=J[c+8>>2];J[a+44>>2]=b;b=J[c+4>>2];J[a+32>>2]=J[c>>2];J[a+36>>2]=b;e=J[a+20>>2];if((i|0)==(e|0)&d>>>0<=M[a+16>>2]|e>>>0>i>>>0){break c}b=J[a+12>>2];J[c+8>>2]=J[a+8>>2];J[c+12>>2]=b;b=J[a+4>>2];J[c>>2]=J[a>>2];J[c+4>>2]=b;b=J[a+28>>2];J[a+8>>2]=J[a+24>>2];J[a+12>>2]=b;b=J[a+20>>2];J[a>>2]=J[a+16>>2];J[a+4>>2]=b;b=J[c+12>>2];J[a+24>>2]=J[c+8>>2];J[a+28>>2]=b;b=J[c+4>>2];J[a+16>>2]=J[c>>2];J[a+20>>2]=b;break c}if((g|0)==(h|0)&b>>>0>>0|g>>>0>>0){b=J[a+12>>2];J[c+8>>2]=J[a+8>>2];J[c+12>>2]=b;b=J[a+4>>2];J[c>>2]=J[a>>2];J[c+4>>2]=b;b=J[a+44>>2];J[a+8>>2]=J[a+40>>2];J[a+12>>2]=b;b=J[a+36>>2];J[a>>2]=J[a+32>>2];J[a+4>>2]=b;b=J[c+12>>2];J[a+40>>2]=J[c+8>>2];J[a+44>>2]=b;b=J[c+4>>2];J[a+32>>2]=J[c>>2];J[a+36>>2]=b;break c}e=J[a+12>>2];J[c+8>>2]=J[a+8>>2];J[c+12>>2]=e;e=J[a+4>>2];J[c>>2]=J[a>>2];J[c+4>>2]=e;e=J[a+28>>2];J[a+8>>2]=J[a+24>>2];J[a+12>>2]=e;e=J[a+20>>2];J[a>>2]=J[a+16>>2];J[a+4>>2]=e;e=J[c+12>>2];J[a+24>>2]=J[c+8>>2];J[a+28>>2]=e;e=J[c+4>>2];J[a+16>>2]=J[c>>2];J[a+20>>2]=e;e=J[a+20>>2];if((e|0)==(g|0)&M[a+16>>2]<=b>>>0|e>>>0>>0){break c}b=J[a+28>>2];J[c+8>>2]=J[a+24>>2];J[c+12>>2]=b;b=J[a+20>>2];J[c>>2]=J[a+16>>2];J[c+4>>2]=b;b=J[a+44>>2];J[a+24>>2]=J[a+40>>2];J[a+28>>2]=b;b=J[a+36>>2];J[a+16>>2]=J[a+32>>2];J[a+20>>2]=b;b=J[c+12>>2];J[a+40>>2]=J[c+8>>2];J[a+44>>2]=b;b=J[c+4>>2];J[a+32>>2]=J[c>>2];J[a+36>>2]=b}b=J[f+4>>2];e=J[a+36>>2];if((b|0)==(e|0)&M[f>>2]>=M[a+32>>2]|b>>>0>e>>>0){break a}b=J[a+44>>2];J[c+8>>2]=J[a+40>>2];J[c+12>>2]=b;b=J[a+36>>2];J[c>>2]=J[a+32>>2];J[c+4>>2]=b;b=J[f+12>>2];J[a+40>>2]=J[f+8>>2];J[a+44>>2]=b;b=J[f+4>>2];J[a+32>>2]=J[f>>2];J[a+36>>2]=b;b=J[c+12>>2];J[f+8>>2]=J[c+8>>2];J[f+12>>2]=b;b=J[c+4>>2];J[f>>2]=J[c>>2];J[f+4>>2]=b;b=J[a+36>>2];e=J[a+20>>2];if((b|0)==(e|0)&M[a+32>>2]>=M[a+16>>2]|b>>>0>e>>>0){break a}b=J[a+28>>2];J[c+8>>2]=J[a+24>>2];J[c+12>>2]=b;b=J[a+20>>2];J[c>>2]=J[a+16>>2];J[c+4>>2]=b;b=J[a+44>>2];J[a+24>>2]=J[a+40>>2];J[a+28>>2]=b;b=J[a+36>>2];J[a+16>>2]=J[a+32>>2];J[a+20>>2]=b;b=J[c+12>>2];J[a+40>>2]=J[c+8>>2];J[a+44>>2]=b;b=J[c+4>>2];J[a+32>>2]=J[c>>2];J[a+36>>2]=b;b=J[a+20>>2];e=J[a+4>>2];if((b|0)==(e|0)&M[a+16>>2]>=M[a>>2]|b>>>0>e>>>0){break a}b=J[a+12>>2];J[c+8>>2]=J[a+8>>2];J[c+12>>2]=b;b=J[a+4>>2];J[c>>2]=J[a>>2];J[c+4>>2]=b;b=J[a+28>>2];J[a+8>>2]=J[a+24>>2];J[a+12>>2]=b;b=J[a+20>>2];J[a>>2]=J[a+16>>2];J[a+4>>2]=b;b=J[c+12>>2];J[a+24>>2]=J[c+8>>2];J[a+28>>2]=b;b=J[c+4>>2];J[a+16>>2]=J[c>>2];J[a+20>>2]=b;break a;case 5:Gz(a,a+16|0,a+32|0,a+48|0,b-16|0);break a;case 0:case 1:break a;default:break b}}e=a+32|0;d=J[a+32>>2];h=J[a+36>>2];i=J[a+20>>2];k=J[a+4>>2];f=J[a+16>>2];g=J[a>>2];d:{if((i|0)==(k|0)&f>>>0>=g>>>0|i>>>0>k>>>0){if((h|0)==(i|0)&d>>>0>=f>>>0|h>>>0>i>>>0){break d}d=J[a+28>>2];J[c+8>>2]=J[a+24>>2];J[c+12>>2]=d;d=J[a+20>>2];J[c>>2]=J[a+16>>2];J[c+4>>2]=d;d=J[e+12>>2];J[a+24>>2]=J[e+8>>2];J[a+28>>2]=d;d=J[e+4>>2];J[a+16>>2]=J[e>>2];J[a+20>>2]=d;d=J[c+12>>2];J[e+8>>2]=J[c+8>>2];J[e+12>>2]=d;d=J[c+4>>2];J[e>>2]=J[c>>2];J[e+4>>2]=d;f=J[a+20>>2];if((k|0)==(f|0)&g>>>0<=M[a+16>>2]|f>>>0>k>>>0){break d}d=J[a+12>>2];J[c+8>>2]=J[a+8>>2];J[c+12>>2]=d;d=J[a+4>>2];J[c>>2]=J[a>>2];J[c+4>>2]=d;d=J[a+28>>2];J[a+8>>2]=J[a+24>>2];J[a+12>>2]=d;d=J[a+20>>2];J[a>>2]=J[a+16>>2];J[a+4>>2]=d;d=J[c+12>>2];J[a+24>>2]=J[c+8>>2];J[a+28>>2]=d;d=J[c+4>>2];J[a+16>>2]=J[c>>2];J[a+20>>2]=d;break d}if((h|0)==(i|0)&d>>>0>>0|h>>>0>>0){d=J[a+12>>2];J[c+8>>2]=J[a+8>>2];J[c+12>>2]=d;d=J[a+4>>2];J[c>>2]=J[a>>2];J[c+4>>2]=d;d=J[e+12>>2];J[a+8>>2]=J[e+8>>2];J[a+12>>2]=d;d=J[e+4>>2];J[a>>2]=J[e>>2];J[a+4>>2]=d;d=J[c+12>>2];J[e+8>>2]=J[c+8>>2];J[e+12>>2]=d;d=J[c+4>>2];J[e>>2]=J[c>>2];J[e+4>>2]=d;break d}f=J[a+12>>2];J[c+8>>2]=J[a+8>>2];J[c+12>>2]=f;f=J[a+4>>2];J[c>>2]=J[a>>2];J[c+4>>2]=f;f=J[a+28>>2];J[a+8>>2]=J[a+24>>2];J[a+12>>2]=f;f=J[a+20>>2];J[a>>2]=J[a+16>>2];J[a+4>>2]=f;f=J[c+12>>2];J[a+24>>2]=J[c+8>>2];J[a+28>>2]=f;f=J[c+4>>2];J[a+16>>2]=J[c>>2];J[a+20>>2]=f;f=J[a+20>>2];if((f|0)==(h|0)&M[a+16>>2]<=d>>>0|f>>>0>>0){break d}d=J[a+28>>2];J[c+8>>2]=J[a+24>>2];J[c+12>>2]=d;d=J[a+20>>2];J[c>>2]=J[a+16>>2];J[c+4>>2]=d;d=J[e+12>>2];J[a+24>>2]=J[e+8>>2];J[a+28>>2]=d;d=J[e+4>>2];J[a+16>>2]=J[e>>2];J[a+20>>2]=d;d=J[c+12>>2];J[e+8>>2]=J[c+8>>2];J[e+12>>2]=d;d=J[c+4>>2];J[e>>2]=J[c>>2];J[e+4>>2]=d}d=a+48|0;if((d|0)==(b|0)){break a}while(1){e:{i=J[d+4>>2];f=J[e+4>>2];g=J[d>>2];if((i|0)==(f|0)&g>>>0>=M[e>>2]|f>>>0>>0){break e}h=J[d+8>>2];k=J[d+12>>2];f=d;while(1){f:{j=e;l=J[e+4>>2];J[f>>2]=J[e>>2];J[f+4>>2]=l;l=J[e+12>>2];J[f+8>>2]=J[e+8>>2];J[f+12>>2]=l;if((a|0)==(e|0)){j=a;break f}f=j;e=f-16|0;l=J[e>>2];m=J[e+4>>2];if((m|0)==(i|0)&g>>>0>>0|i>>>0>>0){continue}}break}J[j+8>>2]=h;J[j+12>>2]=k;J[j>>2]=g;J[j+4>>2]=i;n=n+1|0;if((n|0)!=8){break e}j=(d+16|0)==(b|0);break a}e=d;j=e+16|0;d=j;if((b|0)!=(d|0)){continue}break}j=1}Ui=c+16|0;return j}function RF(a,b,c,d,e){var f=0,g=0,h=0,i=0,j=0,k=0,l=0,m=0,n=0,o=0,p=0,q=0,r=0,s=0,t=0;a:{b:{c:while(1){o=b-2|0;r=b-6|0;s=b-4|0;while(1){d:{e:{f:{g:{h:{g=a;a=b-g>>1;switch(a|0){case 0:case 1:break b;case 4:break d;case 5:break f;case 3:break g;case 2:break h;default:break e}}c=J[c>>2]+8|0;a=b-2|0;b=L[a>>1];d=L[g>>1];if(L[(c+P(b,112)|0)+104>>1]>=L[(c+P(d,112)|0)+104>>1]){break b}I[g>>1]=b;I[a>>1]=d;return}a=J[c>>2]+8|0;b=b-2|0;d=L[b>>1];e=L[(a+P(d,112)|0)+104>>1];f=L[g+2>>1];h=L[(a+P(f,112)|0)+104>>1];c=L[g>>1];i=a+P(c,112)|0;if(h>>>0>=L[i+104>>1]){if(e>>>0>=h>>>0){break b}I[g+2>>1]=d;I[b>>1]=f;b=L[g+2>>1];c=L[g>>1];if(L[(a+P(b,112)|0)+104>>1]>=L[(a+P(c,112)|0)+104>>1]){break b}break a}if(e>>>0>>0){I[g>>1]=d;I[b>>1]=c;return}I[g+2>>1]=c;I[g>>1]=f;d=L[b>>1];if(L[(a+P(d,112)|0)+104>>1]>=L[i+104>>1]){break b}I[g+2>>1]=d;I[b>>1]=c;return}$v(g,g+2|0,g+4|0,g+6|0,c);a=J[c>>2]+8|0;b=b-2|0;d=L[b>>1];c=L[g+6>>1];if(L[(a+P(d,112)|0)+104>>1]>=L[(a+P(c,112)|0)+104>>1]){break b}I[g+6>>1]=d;I[b>>1]=c;b=L[g+6>>1];c=a+P(b,112)|0;d=L[g+4>>1];if(L[c+104>>1]>=L[(a+P(d,112)|0)+104>>1]){break b}I[g+4>>1]=b;I[g+6>>1]=d;d=L[g+2>>1];if(L[c+104>>1]>=L[(a+P(d,112)|0)+104>>1]){break b}I[g+4>>1]=d;I[g+2>>1]=b;d=L[c+104>>1];c=L[g>>1];if(d>>>0>=L[(a+P(c,112)|0)+104>>1]){break b}break a}if((a|0)<=23){if(e&1){if((b|0)==(g|0)){break b}f=g+2|0;if((f|0)==(b|0)){break b}d=J[c>>2]+8|0;a=g;while(1){c=f;e=L[a+2>>1];j=d+P(e,112)|0;h=L[a>>1];if(L[j+104>>1]>1]){i=f;while(1){i:{I[i>>1]=h;f=a;if((a|0)==(g|0)){f=g;break i}i=f;a=f-2|0;h=L[a>>1];if(L[j+104>>1]>1]){continue}}break}I[f>>1]=e}a=c;f=a+2|0;if((f|0)!=(b|0)){continue}break}break b}if((b|0)==(g|0)){break b}f=g+2|0;if((f|0)==(b|0)){break b}d=J[c>>2]+8|0;while(1){c=f;e=L[g+2>>1];h=d+P(e,112)|0;f=L[g>>1];if(L[h+104>>1]>1]){a=c;while(1){I[a>>1]=f;a=g;g=g-2|0;f=L[g>>1];if(L[h+104>>1]>1]){continue}break}I[a>>1]=e}g=c;f=g+2|0;if((f|0)!=(b|0)){continue}break}break b}if(!d){if((b|0)==(g|0)){break b}l=c;e=b;if((b|0)!=(g|0)){m=b-g|0;j=m>>1;if((j|0)>=2){f=j-2>>>1|0;while(1){h=f;c=(f<<1)+g|0;j:{if((j|0)<2){break j}o=j-2>>>1|0;a=c-g|0;if((o|0)>1){break j}f=a+1|0;b=(f<<1)+g|0;i=J[l>>2];d=i+8|0;a=a+2|0;if((a|0)>=(j|0)){k=L[b>>1]}else{n=a;a=i+8|0;k=L[b>>1];i=L[b+2>>1];a=L[(a+P(k,112)|0)+104>>1]>1];f=a?n:f;b=a?b+2|0:b;k=a?i:k}r=L[c>>1];s=d+P(r,112)|0;if(L[(d+P(k&65535,112)|0)+104>>1]>1]){break j}while(1){k:{a=b;I[c>>1]=k;if((f|0)>(o|0)){break k}i=f<<1;f=i|1;b=(f<<1)+g|0;c=a;i=i+2|0;if((i|0)>=(j|0)){k=L[b>>1]}else{t=i;k=L[b>>1];n=L[b+2>>1];i=L[(d+P(k,112)|0)+104>>1]>1];f=i?t:f;b=i?b+2|0:b;k=i?n:k}if(L[(P(k&65535,112)+d|0)+104>>1]>=L[s+104>>1]){continue}}break}I[a>>1]=r}f=h-1|0;if(h){continue}break}}if((j|0)>=2){while(1){h=J[l>>2]+8|0;c=j;j=j-2>>>1|0;d=L[g>>1];f=0;b=g;while(1){i=f<<1;f=i|1;k=b+i|0;a=k+2|0;i=i+2|0;if((i|0)>=(c|0)){i=L[a>>1]}else{n=i;o=L[a>>1];k=k+4|0;m=L[k>>1];i=L[(h+P(o,112)|0)+104>>1]>1];f=i?n:f;a=i?k:a;i=i?m:o}I[b>>1]=i;b=a;if((f|0)<=(j|0)){continue}break}e=e-2|0;l:{if((e|0)==(a|0)){I[a>>1]=d;break l}I[a>>1]=L[e>>1];I[e>>1]=d;b=(a-g|0)+2>>1;if((b|0)<2){break l}d=b-2|0;b=(d&-2)+g|0;j=L[b>>1];i=L[a>>1];k=h+P(i,112)|0;if(L[(h+P(j,112)|0)+104>>1]>=L[k+104>>1]){break l}f=d>>>1|0;while(1){m:{d=b;I[a>>1]=j;if(!f){break m}j=f-1|0;f=j>>>1|0;a=b;b=(j&-2)+g|0;j=L[b>>1];if(L[(h+P(j,112)|0)+104>>1]>1]){continue}}break}I[d>>1]=i}j=c-1|0;if((c|0)>2){continue}break}}}return}l=J[c>>2]+8|0;f=L[o>>1];i=L[(l+P(f,112)|0)+104>>1];h=(a&-2)+g|0;n:{if(a>>>0>=129){m=a>>>1|0;j=L[h>>1];k=L[(l+P(j,112)|0)+104>>1];a=L[g>>1];n=l+P(a,112)|0;o:{if(k>>>0>=L[n+104>>1]){if(i>>>0>=k>>>0){break o}I[h>>1]=f;I[o>>1]=j;a=L[h>>1];f=L[g>>1];if(L[(l+P(a,112)|0)+104>>1]>=L[(l+P(f,112)|0)+104>>1]){break o}I[g>>1]=a;I[h>>1]=f;break o}p:{if(i>>>0>>0){I[g>>1]=f;break p}I[g>>1]=j;I[h>>1]=a;f=L[o>>1];if(L[(l+P(f,112)|0)+104>>1]>=L[n+104>>1]){break o}I[h>>1]=f}I[o>>1]=a}f=L[s>>1];i=L[(l+P(f,112)|0)+104>>1];m=(m<<1)+g|0;a=m-2|0;k=L[a>>1];n=L[(l+P(k,112)|0)+104>>1];j=L[g+2>>1];p=l+P(j,112)|0;q:{if(n>>>0>=L[p+104>>1]){if(i>>>0>=n>>>0){break q}I[a>>1]=f;I[s>>1]=k;f=L[a>>1];i=L[g+2>>1];if(L[(l+P(f,112)|0)+104>>1]>=L[(l+P(i,112)|0)+104>>1]){break q}I[g+2>>1]=f;I[a>>1]=i;break q}r:{if(i>>>0>>0){I[g+2>>1]=f;break r}I[g+2>>1]=k;I[a>>1]=j;f=L[s>>1];if(L[(l+P(f,112)|0)+104>>1]>=L[p+104>>1]){break q}I[a>>1]=f}I[s>>1]=j}f=L[r>>1];j=L[(l+P(f,112)|0)+104>>1];i=m+2|0;n=L[i>>1];p=L[(l+P(n,112)|0)+104>>1];k=L[g+4>>1];q=l+P(k,112)|0;s:{if(p>>>0>=L[q+104>>1]){if(j>>>0>=p>>>0){break s}I[m+2>>1]=f;I[r>>1]=n;f=L[m+2>>1];j=L[g+4>>1];if(L[(l+P(f,112)|0)+104>>1]>=L[(l+P(j,112)|0)+104>>1]){break s}I[g+4>>1]=f;I[m+2>>1]=j;break s}t:{if(j>>>0

>>0){I[g+4>>1]=f;break t}I[g+4>>1]=n;I[m+2>>1]=k;f=L[r>>1];if(L[(l+P(f,112)|0)+104>>1]>=L[q+104>>1]){break s}I[m+2>>1]=f}I[r>>1]=k}j=L[m+2>>1];f=l+P(j,112)|0;n=f;p=L[f+104>>1];u:{v:{f=L[h>>1];t=L[(l+P(f,112)|0)+104>>1];k=L[a>>1];q=l+P(k,112)|0;if(t>>>0>=L[q+104>>1]){if(p>>>0>=t>>>0){break u}I[h>>1]=j;I[m+2>>1]=f;i=h;f=k;if(L[n+104>>1]>1]){break v}f=j;break u}if(p>>>0>>0){break v}I[a>>1]=f;I[h>>1]=k;a=h;f=j;if(L[n+104>>1]>1]){break v}f=k;break u}I[a>>1]=j;I[i>>1]=k}a=L[g>>1];I[g>>1]=f;I[h>>1]=a;break n}j=L[g>>1];k=L[(l+P(j,112)|0)+104>>1];a=L[h>>1];m=l+P(a,112)|0;if(k>>>0>=L[m+104>>1]){if(i>>>0>=k>>>0){break n}I[g>>1]=f;I[o>>1]=j;a=L[g>>1];f=L[h>>1];if(L[(l+P(a,112)|0)+104>>1]>=L[(l+P(f,112)|0)+104>>1]){break n}I[h>>1]=a;I[g>>1]=f;break n}w:{if(i>>>0>>0){I[h>>1]=f;break w}I[h>>1]=j;I[g>>1]=a;f=L[o>>1];if(L[(l+P(f,112)|0)+104>>1]>=L[m+104>>1]){break n}I[g>>1]=f}I[o>>1]=a}d=d-1|0;m=L[g>>1];x:{q=e&1;if(q){break x}j=l+P(m,112)|0;f=L[j+104>>1];if(f>>>0>L[(l+P(L[g-2>>1],112)|0)+104>>1]){break x}h=g;a=g;y:{if(f>>>0>1],112)|0)+104>>1]){while(1){e=L[h+2>>1];a=h+2|0;h=a;if(f>>>0>=L[(l+P(e,112)|0)+104>>1]){continue}break y}}while(1){a=a+2|0;if(b>>>0<=a>>>0){break y}if(f>>>0>=L[(l+P(L[a>>1],112)|0)+104>>1]){continue}break}}h=b;if(a>>>0>>0){while(1){h=h-2|0;if(f>>>0>1],112)|0)+104>>1]){continue}break}}if(a>>>0>>0){k=L[h>>1];i=L[a>>1];while(1){I[a>>1]=k;I[h>>1]=i;e=L[j+104>>1];while(1){i=L[a+2>>1];a=a+2|0;if(e>>>0>=L[(l+P(i,112)|0)+104>>1]){continue}break}while(1){h=h-2|0;k=L[h>>1];if(e>>>0>1]){continue}break}if(a>>>0>>0){continue}break}}e=a-2|0;if((e|0)!=(g|0)){I[g>>1]=L[e>>1]}I[e>>1]=m;e=0;continue}l=J[c>>2]+8|0;a=l+P(m,112)|0;t=a;h=L[a+104>>1];a=g;while(1){f=a;a=a+2|0;k=L[f+2>>1];if(h>>>0>L[(l+P(k,112)|0)+104>>1]){continue}break}j=b;z:{if((g|0)==(f|0)){while(1){if(a>>>0>=j>>>0){break z}j=j-2|0;if(h>>>0<=L[(l+P(L[j>>1],112)|0)+104>>1]){continue}break z}}while(1){j=j-2|0;if(h>>>0<=L[(l+P(L[j>>1],112)|0)+104>>1]){continue}break}}if(a>>>0>>0){n=L[j>>1];h=a;i=j;while(1){I[h>>1]=n;I[i>>1]=k;p=L[t+104>>1];while(1){f=h;h=f+2|0;k=L[f+2>>1];if(p>>>0>L[(l+P(k,112)|0)+104>>1]){continue}break}while(1){i=i-2|0;n=L[i>>1];if(p>>>0<=L[(l+P(n,112)|0)+104>>1]){continue}break}if(h>>>0>>0){continue}break}}if((g|0)!=(f|0)){I[g>>1]=L[f>>1]}I[f>>1]=m;if(a>>>0>=j>>>0){h=qU(g,f,c);a=f+2|0;if(qU(a,b,c)){b=f;a=g;if(!h){continue c}break b}if(h){continue}}RF(g,f,c,d,q);a=f+2|0;e=0;continue}break}break}$v(g,g+2|0,g+4|0,b-2|0,c)}return}I[g+2>>1]=c;I[g>>1]=b}function sO(a){var b=0,c=0;a=a?J[a+124>>2]:0;c=J[a+8>>2]-J[a+12>>2]|0;vm(a,10578,196316,286592);J[219396]=vm(a,70339,196324,286624);J[219397]=vm(a,1423,196332,286704);uk(a,52074,286752);mj(a,45222,8);ej(a,-2,91223);mj(a,46356,8);ej(a,-2,91237);mj(a,34042,5);ej(a,-2,90287);mj(a,67985,5);ej(a,-2,96216);mj(a,32861,5);ej(a,-2,90039);mj(a,65297,7);ej(a,-2,95690);mj(a,6674,6);ej(a,-2,85760);mj(a,59207,4);ej(a,-2,94792);mj(a,66865,10);ej(a,-2,95946);mj(a,17492,12);ej(a,-2,88530);mj(a,57375,7);ej(a,-2,94279);mj(a,56937,8);ej(a,-2,94169);mj(a,102698,6);ej(a,-2,102755);b=J[a+8>>2];J[b+8>>2]=3;O[b>>3]=0;J[a+8>>2]=J[a+8>>2]+16;ej(a,-2,85275);b=J[a+8>>2];J[b+8>>2]=3;O[b>>3]=1;J[a+8>>2]=J[a+8>>2]+16;ej(a,-2,86359);b=J[a+8>>2];J[b+8>>2]=3;O[b>>3]=2;J[a+8>>2]=J[a+8>>2]+16;ej(a,-2,96252);b=J[a+8>>2];J[b+8>>2]=3;O[b>>3]=5;J[a+8>>2]=J[a+8>>2]+16;ej(a,-2,85315);b=J[a+8>>2];J[b+8>>2]=3;O[b>>3]=6;J[a+8>>2]=J[a+8>>2]+16;ej(a,-2,91728);b=J[a+8>>2];J[b+8>>2]=3;O[b>>3]=0;J[a+8>>2]=J[a+8>>2]+16;ej(a,-2,95580);b=J[a+8>>2];J[b+8>>2]=3;O[b>>3]=5;J[a+8>>2]=J[a+8>>2]+16;ej(a,-2,91493);b=J[a+8>>2];J[b+8>>2]=3;O[b>>3]=6;J[a+8>>2]=J[a+8>>2]+16;ej(a,-2,86426);b=J[a+8>>2];J[b+8>>2]=3;O[b>>3]=7;J[a+8>>2]=J[a+8>>2]+16;ej(a,-2,86437);b=J[a+8>>2];J[b+8>>2]=3;O[b>>3]=0;J[a+8>>2]=J[a+8>>2]+16;ej(a,-2,90699);b=J[a+8>>2];J[b+8>>2]=3;O[b>>3]=1;J[a+8>>2]=J[a+8>>2]+16;ej(a,-2,98128);b=J[a+8>>2];J[b+8>>2]=3;O[b>>3]=2;J[a+8>>2]=J[a+8>>2]+16;ej(a,-2,98096);b=J[a+8>>2];J[b+8>>2]=3;O[b>>3]=3;J[a+8>>2]=J[a+8>>2]+16;ej(a,-2,98111);b=J[a+8>>2];J[b+8>>2]=3;O[b>>3]=4;J[a+8>>2]=J[a+8>>2]+16;ej(a,-2,98142);b=J[a+8>>2];J[b+8>>2]=3;O[b>>3]=5;J[a+8>>2]=J[a+8>>2]+16;ej(a,-2,99078);b=J[a+8>>2];J[b+8>>2]=3;O[b>>3]=6;J[a+8>>2]=J[a+8>>2]+16;ej(a,-2,99044);b=J[a+8>>2];J[b+8>>2]=3;O[b>>3]=7;J[a+8>>2]=J[a+8>>2]+16;ej(a,-2,99060);b=J[a+8>>2];J[b+8>>2]=3;O[b>>3]=8;J[a+8>>2]=J[a+8>>2]+16;ej(a,-2,99093);b=J[a+8>>2];J[b+8>>2]=3;O[b>>3]=9;J[a+8>>2]=J[a+8>>2]+16;ej(a,-2,86825);b=J[a+8>>2];J[b+8>>2]=3;O[b>>3]=10;J[a+8>>2]=J[a+8>>2]+16;ej(a,-2,86791);b=J[a+8>>2];J[b+8>>2]=3;O[b>>3]=11;J[a+8>>2]=J[a+8>>2]+16;ej(a,-2,86807);b=J[a+8>>2];J[b+8>>2]=3;O[b>>3]=12;J[a+8>>2]=J[a+8>>2]+16;ej(a,-2,86840);b=J[a+8>>2];J[b+8>>2]=3;O[b>>3]=13;J[a+8>>2]=J[a+8>>2]+16;ej(a,-2,87280);b=J[a+8>>2];J[b+8>>2]=3;O[b>>3]=14;J[a+8>>2]=J[a+8>>2]+16;ej(a,-2,87246);b=J[a+8>>2];J[b+8>>2]=3;O[b>>3]=15;J[a+8>>2]=J[a+8>>2]+16;ej(a,-2,87262);b=J[a+8>>2];J[b+8>>2]=3;O[b>>3]=16;J[a+8>>2]=J[a+8>>2]+16;ej(a,-2,87295);b=J[a+8>>2];J[b+8>>2]=3;O[b>>3]=17;J[a+8>>2]=J[a+8>>2]+16;ej(a,-2,95659);b=J[a+8>>2];J[b+8>>2]=3;O[b>>3]=18;J[a+8>>2]=J[a+8>>2]+16;ej(a,-2,95627);b=J[a+8>>2];J[b+8>>2]=3;O[b>>3]=19;J[a+8>>2]=J[a+8>>2]+16;ej(a,-2,95642);b=J[a+8>>2];J[b+8>>2]=3;O[b>>3]=20;J[a+8>>2]=J[a+8>>2]+16;ej(a,-2,95673);b=J[a+8>>2];J[b+8>>2]=3;O[b>>3]=21;J[a+8>>2]=J[a+8>>2]+16;ej(a,-2,91022);b=J[a+8>>2];J[b+8>>2]=3;O[b>>3]=22;J[a+8>>2]=J[a+8>>2]+16;ej(a,-2,90990);b=J[a+8>>2];J[b+8>>2]=3;O[b>>3]=23;J[a+8>>2]=J[a+8>>2]+16;ej(a,-2,91005);b=J[a+8>>2];J[b+8>>2]=3;O[b>>3]=24;J[a+8>>2]=J[a+8>>2]+16;ej(a,-2,91036);b=J[a+8>>2];J[b+8>>2]=3;O[b>>3]=25;J[a+8>>2]=J[a+8>>2]+16;ej(a,-2,98938);b=J[a+8>>2];J[b+8>>2]=3;O[b>>3]=26;J[a+8>>2]=J[a+8>>2]+16;ej(a,-2,98906);b=J[a+8>>2];J[b+8>>2]=3;O[b>>3]=27;J[a+8>>2]=J[a+8>>2]+16;ej(a,-2,98921);b=J[a+8>>2];J[b+8>>2]=3;O[b>>3]=28;J[a+8>>2]=J[a+8>>2]+16;ej(a,-2,98952);b=J[a+8>>2];J[b+8>>2]=3;O[b>>3]=29;J[a+8>>2]=J[a+8>>2]+16;ej(a,-2,99007);b=J[a+8>>2];J[b+8>>2]=3;O[b>>3]=30;J[a+8>>2]=J[a+8>>2]+16;ej(a,-2,98969);b=J[a+8>>2];J[b+8>>2]=3;O[b>>3]=31;J[a+8>>2]=J[a+8>>2]+16;ej(a,-2,98987);b=J[a+8>>2];J[b+8>>2]=3;O[b>>3]=32;J[a+8>>2]=J[a+8>>2]+16;ej(a,-2,99024);b=J[a+8>>2];J[b+8>>2]=3;O[b>>3]=33;J[a+8>>2]=J[a+8>>2]+16;ej(a,-2,93287);b=J[a+8>>2];J[b+8>>2]=3;O[b>>3]=34;J[a+8>>2]=J[a+8>>2]+16;ej(a,-2,93255);b=J[a+8>>2];J[b+8>>2]=3;O[b>>3]=35;J[a+8>>2]=J[a+8>>2]+16;ej(a,-2,93270);b=J[a+8>>2];J[b+8>>2]=3;O[b>>3]=36;J[a+8>>2]=J[a+8>>2]+16;ej(a,-2,93301);b=J[a+8>>2];J[b+8>>2]=3;O[b>>3]=37;J[a+8>>2]=J[a+8>>2]+16;ej(a,-2,96583);b=J[a+8>>2];J[b+8>>2]=3;O[b>>3]=38;J[a+8>>2]=J[a+8>>2]+16;ej(a,-2,96547);b=J[a+8>>2];J[b+8>>2]=3;O[b>>3]=39;J[a+8>>2]=J[a+8>>2]+16;ej(a,-2,96564);b=J[a+8>>2];J[b+8>>2]=3;O[b>>3]=40;J[a+8>>2]=J[a+8>>2]+16;ej(a,-2,96599);b=J[a+8>>2];J[b+8>>2]=3;O[b>>3]=0;J[a+8>>2]=J[a+8>>2]+16;ej(a,-2,101142);b=J[a+8>>2];J[b+8>>2]=3;O[b>>3]=1;J[a+8>>2]=J[a+8>>2]+16;ej(a,-2,98086);b=J[a+8>>2];J[b+8>>2]=3;O[b>>3]=2;J[a+8>>2]=J[a+8>>2]+16;ej(a,-2,101154);b=J[a+8>>2];J[b+8>>2]=3;O[b>>3]=3;J[a+8>>2]=J[a+8>>2]+16;ej(a,-2,87690);b=J[a+8>>2];J[b+8>>2]=3;O[b>>3]=4;J[a+8>>2]=J[a+8>>2]+16;ej(a,-2,91537);b=J[a+8>>2];J[b+8>>2]=3;O[b>>3]=0;J[a+8>>2]=J[a+8>>2]+16;ej(a,-2,95608);b=J[a+8>>2];J[b+8>>2]=3;O[b>>3]=2;J[a+8>>2]=J[a+8>>2]+16;ej(a,-2,92503);b=J[a+8>>2];J[b+8>>2]=3;O[b>>3]=0;J[a+8>>2]=J[a+8>>2]+16;ej(a,-2,87749);b=J[a+8>>2];J[b+8>>2]=3;O[b>>3]=1;J[a+8>>2]=J[a+8>>2]+16;ej(a,-2,98159);b=J[a+8>>2];J[b+8>>2]=3;O[b>>3]=2;J[a+8>>2]=J[a+8>>2]+16;ej(a,-2,92538);b=J[a+8>>2];J[b+8>>2]=3;O[b>>3]=3;J[a+8>>2]=J[a+8>>2]+16;ej(a,-2,96712);b=J[a+8>>2];J[b+8>>2]=3;O[b>>3]=0;J[a+8>>2]=J[a+8>>2]+16;ej(a,-2,95554);b=J[a+8>>2];J[b+8>>2]=3;O[b>>3]=1;J[a+8>>2]=J[a+8>>2]+16;ej(a,-2,88070);b=J[a+8>>2];J[b+8>>2]=3;O[b>>3]=2;J[a+8>>2]=J[a+8>>2]+16;ej(a,-2,88057);b=J[a+8>>2];J[b+8>>2]=3;O[b>>3]=1;J[a+8>>2]=J[a+8>>2]+16;ej(a,-2,90794);b=J[a+8>>2];J[b+8>>2]=3;O[b>>3]=2;J[a+8>>2]=J[a+8>>2]+16;ej(a,-2,91689);b=J[a+8>>2];J[b+8>>2]=3;O[b>>3]=0;J[a+8>>2]=J[a+8>>2]+16;ej(a,-2,90231);b=J[a+8>>2];J[b+8>>2]=3;O[b>>3]=1;J[a+8>>2]=J[a+8>>2]+16;ej(a,-2,91096);b=J[a+8>>2];J[b+8>>2]=3;O[b>>3]=2;J[a+8>>2]=J[a+8>>2]+16;ej(a,-2,95498);b=J[a+8>>2];J[b+8>>2]=3;O[b>>3]=3;J[a+8>>2]=J[a+8>>2]+16;ej(a,-2,94742);b=J[a+8>>2];J[b+8>>2]=3;O[b>>3]=4;J[a+8>>2]=J[a+8>>2]+16;ej(a,-2,95082);b=J[a+8>>2];J[b+8>>2]=3;O[b>>3]=5;J[a+8>>2]=J[a+8>>2]+16;ej(a,-2,88450);b=J[a+8>>2];J[b+8>>2]=3;O[b>>3]=6;J[a+8>>2]=J[a+8>>2]+16;ej(a,-2,85738);b=J[a+8>>2];J[b+8>>2]=3;O[b>>3]=7;J[a+8>>2]=J[a+8>>2]+16;ej(a,-2,85730);b=J[a+8>>2];J[b+8>>2]=3;O[b>>3]=8;J[a+8>>2]=J[a+8>>2]+16;ej(a,-2,85772);b=J[a+8>>2];J[b+8>>2]=3;O[b>>3]=0;J[a+8>>2]=J[a+8>>2]+16;ej(a,-2,87771);b=J[a+8>>2];J[b+8>>2]=3;O[b>>3]=1;J[a+8>>2]=J[a+8>>2]+16;ej(a,-2,91740);b=J[a+8>>2];J[b+8>>2]=3;O[b>>3]=2;J[a+8>>2]=J[a+8>>2]+16;ej(a,-2,93532);b=J[a+8>>2];J[b+8>>2]=3;O[b>>3]=0;J[a+8>>2]=J[a+8>>2]+16;ej(a,-2,96757);b=J[a+8>>2];J[b+8>>2]=3;O[b>>3]=1;J[a+8>>2]=J[a+8>>2]+16;ej(a,-2,96802);b=J[a+8>>2];J[b+8>>2]=3;O[b>>3]=2;J[a+8>>2]=J[a+8>>2]+16;ej(a,-2,93944);b=J[a+8>>2];J[b+8>>2]=3;O[b>>3]=3;J[a+8>>2]=J[a+8>>2]+16;ej(a,-2,96735);b=J[a+8>>2];J[b+8>>2]=3;O[b>>3]=4;J[a+8>>2]=J[a+8>>2]+16;ej(a,-2,96779);b=J[a+8>>2];J[b+8>>2]=3;O[b>>3]=5;J[a+8>>2]=J[a+8>>2]+16;ej(a,-2,93921);b=J[a+8>>2];J[b+8>>2]=3;O[b>>3]=0;J[a+8>>2]=J[a+8>>2]+16;ej(a,-2,95962);b=J[a+8>>2];J[b+8>>2]=3;O[b>>3]=1;J[a+8>>2]=J[a+8>>2]+16;ej(a,-2,95127);b=J[a+8>>2];J[b+8>>2]=3;O[b>>3]=-6;J[a+8>>2]=J[a+8>>2]+16;ej(a,-2,88548);b=J[a+8>>2];J[b+8>>2]=3;O[b>>3]=-4;J[a+8>>2]=J[a+8>>2]+16;ej(a,-2,89234);b=J[a+8>>2];J[b+8>>2]=3;O[b>>3]=-9;J[a+8>>2]=J[a+8>>2]+16;ej(a,-2,89805);b=J[a+8>>2];J[b+8>>2]=3;O[b>>3]=0;J[a+8>>2]=J[a+8>>2]+16;ej(a,-2,92751);b=J[a+8>>2];J[b+8>>2]=3;O[b>>3]=1;J[a+8>>2]=J[a+8>>2]+16;ej(a,-2,90930);gj(a,-2);if(c>>4!=J[a+8>>2]-J[a+12>>2]>>4){Z(42939,37682,5478,10588);B()}return a}function aI(a,b,c){var d=0,e=0,f=0,g=0,h=0,i=0,j=0,k=0,l=0,m=0,n=0,o=0,p=0,q=0,r=0,s=0,t=0,u=0,v=0,w=0,x=0,y=0,z=0,A=0,B=0,C=0,D=0,E=0,F=0,G=0,I=0,L=0,M=0,N=0,O=0,Q=0,R=0,S=0,T=0,U=0,V=0,W=0,X=0,Y=0,Z=0,_=0,$=0,aa=0;f=Ui+-64|0;Ui=f;J[f+56>>2]=0;J[f+60>>2]=0;J[f+48>>2]=0;J[f+52>>2]=0;J[f+40>>2]=0;J[f+44>>2]=0;J[f+32>>2]=0;J[f+36>>2]=0;J[f+24>>2]=0;J[f+28>>2]=0;J[f+16>>2]=0;J[f+20>>2]=0;J[f+8>>2]=0;J[f+12>>2]=0;J[f>>2]=0;J[f+4>>2]=0;d=ij(a+4|0,0,272);a:{b:{c:{d:{if(!((c|0)==256|(c|0)==192)){h=-36;if((c|0)!=128){break a}J[a>>2]=3;hj(f,b,c>>>3|0);E=1;b=0;break d}J[a>>2]=4;a=hj(f,b,c>>>3|0);b=1;if((c|0)==192){break c}}l=K[f+22|0];g=K[f+21|0];k=K[f+20|0];h=K[f+19|0];i=K[f+18|0];e=K[f+17|0];n=K[f+16|0];break b}n=K[a+16|0];H[a+24|0]=n^-1;e=K[a+17|0];H[a+25|0]=e^-1;i=K[a+18|0];H[a+26|0]=i^-1;h=K[a+19|0];H[a+27|0]=h^-1;k=K[a+20|0];H[a+28|0]=k^-1;g=K[a+21|0];H[a+29|0]=g^-1;l=K[a+22|0];H[a+30|0]=l^-1;H[a+31|0]=K[a+23|0]^-1}T=(e&255)<<16|n<<24;L=h&255;q=T|(L|(i&255)<<8);x=K[f+1|0]<<16|K[f|0]<<24;r=K[f+3|0];j=x|(r|K[f+2|0]<<8);i=q^j;U=(g&255)<<16|k<<24;M=K[f+23|0];y=U|(M|l<<8);z=K[f+5|0]<<16|K[f+4|0]<<24;w=K[f+7|0];h=z|(w|K[f+6|0]<<8);a=y^h^1003262091;e=K[(a>>>16&255)+181296|0]<<16|K[(a>>>24|0)+181040|0]<<24|K[(a>>>8&255)+181552|0]<<8|K[(a&255)+180784|0];a=i^-1600231809;a=oxa(e,8)^(K[(a>>>16&255)+181040|0]<<16|K[(a>>>24|0)+180784|0]<<24|K[(a>>>8&255)+181296|0]<<8|K[(a&255)+181552|0]);g=oxa(a,16)^e;l=oxa(g,24)^a;V=K[f+29|0]<<16|K[f+28|0]<<24;N=K[f+31|0];A=V|(N|K[f+30|0]<<8);B=K[f+13|0]<<16|K[f+12|0]<<24;O=K[f+15|0];n=B|(O|K[f+14|0]<<8);a=l^(A^n)^1286239154;k=K[(a>>>16&255)+181296|0]<<16|K[(a>>>24|0)+181040|0]<<24|K[(a>>>8&255)+181552|0]<<8|K[(a&255)+180784|0];a=oxa(k,8);C=K[f+9|0]<<16|K[f+8|0]<<24;Q=K[f+11|0];e=C|(Q|K[f+10|0]<<8);v=i;m=a;W=K[f+25|0]<<16|K[f+24|0]<<24;R=K[f+27|0];D=W|(R|K[f+26|0]<<8);i=g^(D^(oxa(l,24)^e));a=i^-1233459112;a=m^(K[(a>>>16&255)+181040|0]<<16|K[(a>>>24|0)+180784|0]<<24|K[(a>>>8&255)+181296|0]<<8|K[(a&255)+181552|0]);g=oxa(a,16)^k;p=oxa(g,24)^a;g=j^(v^oxa(p,24)^g);a=g^-957401297;v=K[(a>>>16&255)+181040|0]<<16|K[(a>>>24|0)+180784|0]<<24|K[(a>>>8&255)+181296|0]<<8|K[(a&255)+181552|0];X=p^y;a=X^-380665154;a=K[(a>>>16&255)+181296|0]<<16|K[(a>>>24|0)+181040|0]<<24|K[(a>>>8&255)+181552|0]<<8|K[(a&255)+180784|0];k=v^oxa(a,8);m=oxa(k,16)^a;s=oxa(m,24)^k;o=s^(l^A);a=o^-237801700;k=K[(a>>>16&255)+181296|0]<<16|K[(a>>>24|0)+181040|0]<<24|K[(a>>>8&255)+181552|0]<<8|K[(a&255)+180784|0];a=oxa(k,8);v=g;g=a;i=m^(i^(oxa(s,24)^e));a=i^1426019237;a=g^(K[(a>>>16&255)+181040|0]<<16|K[(a>>>24|0)+180784|0]<<24|K[(a>>>8&255)+181296|0]<<8|K[(a&255)+181552|0]);g=oxa(a,16)^k;S=oxa(g,24)^a;m=v^oxa(S,24)^g;g=0;k=0;if(c>>>0>=129){F=p^S;a=F^-563598051;p=181040;Y=181552;g=K[(a&255)+180784|0]|(K[(a>>>16&255)+181296|0]<<16|K[(a>>>24|0)+181040|0]<<24|K[(a>>>8&255)+181552|0]<<8);G=m^q;a=G^283453434;a=oxa(g,8)^(K[(a>>>16&255)+181040|0]<<16|K[(a>>>24|0)+180784|0]<<24|K[(a>>>8&255)+181296|0]<<8|K[(a&255)+181552|0]);g=oxa(a,16)^g;I=oxa(g,24)^a;t=I^(l^s);a=t^-1276722691;l=K[(a>>>16&255)+181296|0]<<16|K[(a>>>24|0)+181040|0]<<24|K[(a>>>8&255)+181552|0]<<8|K[(a&255)+180784|0];a=oxa(l,8);v=a;u=g^(i^(oxa(I,24)^D));a=u^-1336506174;a=v^(K[(a>>>16&255)+181040|0]<<16|K[(a>>>24|0)+180784|0]<<24|K[(a>>>8&255)+181296|0]<<8|K[(a&255)+181552|0]);g=oxa(a,16)^l;a=oxa(g,24)^a;k=a^F;g=g^(oxa(a,24)^G)}a=(b<<4)+180544|0;if(K[a|0]){Y=n<<15|x>>>17;G=h<<15|C>>>17;I=j<<15|z>>>17;F=e<<15|B>>>17}if(K[a+1|0]){Z=w<<30|e>>>2;_=r<<30|h>>>2;$=O<<30|j>>>2;aa=Q<<30|n>>>2}if(K[a+2|0]){B=e<<13|B>>>19;C=h<<13|C>>>19;z=j<<13|z>>>19;x=n<<13|x>>>19}if(K[a+3|0]){p=Q<<28|n>>>4;s=w<<28|e>>>4;r=r<<28|h>>>4;l=O<<28|j>>>4}a=P(b,80)+180576|0;w=H[a|0];if((w|0)!=-1){J[(w<<2)+d>>2]=j}j=H[a+1|0];if((j|0)!=-1){J[(j<<2)+d>>2]=h}j=H[a+2|0];if((j|0)!=-1){J[(j<<2)+d>>2]=e}e=H[a+3|0];if((e|0)!=-1){J[(e<<2)+d>>2]=n}e=H[a+4|0];if((e|0)!=-1){J[(e<<2)+d>>2]=I}e=H[a+5|0];if((e|0)!=-1){J[(e<<2)+d>>2]=G}e=H[a+6|0];if((e|0)!=-1){J[(e<<2)+d>>2]=F}e=H[a+7|0];if((e|0)!=-1){J[(e<<2)+d>>2]=Y}e=H[a+8|0];if((e|0)!=-1){J[(e<<2)+d>>2]=_}e=H[a+9|0];if((e|0)!=-1){J[(e<<2)+d>>2]=Z}e=H[a+10|0];if((e|0)!=-1){J[(e<<2)+d>>2]=aa}e=H[a+11|0];if((e|0)!=-1){J[(e<<2)+d>>2]=$}e=H[a+12|0];if((e|0)!=-1){J[(e<<2)+d>>2]=z}e=H[a+13|0];if((e|0)!=-1){J[(e<<2)+d>>2]=C}e=H[a+14|0];if((e|0)!=-1){J[(e<<2)+d>>2]=B}e=H[a+15|0];if((e|0)!=-1){J[(e<<2)+d>>2]=x}e=H[a+16|0];if((e|0)!=-1){J[(e<<2)+d>>2]=r}e=H[a+17|0];if((e|0)!=-1){J[(e<<2)+d>>2]=s}e=H[a+18|0];if((e|0)!=-1){J[(e<<2)+d>>2]=p}a=H[a+19|0];if((a|0)!=-1){J[(a<<2)+d>>2]=l}j=S^X;if(!(E|c>>>0<129)){a=P(b,80)+180576|0;J[(H[a+24|0]<<2)+d>>2]=q<<15|U>>>17;J[(H[a+25|0]<<2)+d>>2]=y<<15|W>>>17;J[(H[a+26|0]<<2)+d>>2]=D<<15|V>>>17;J[(H[a+27|0]<<2)+d>>2]=A<<15|T>>>17;J[(H[a+28|0]<<2)+d>>2]=L<<30|y>>>2;J[(H[a+29|0]<<2)+d>>2]=M<<30|D>>>2;J[(H[a+30|0]<<2)+d>>2]=R<<30|A>>>2;J[(H[a+31|0]<<2)+d>>2]=N<<30|q>>>2;r=L<<28|y>>>4;J[(H[a+36|0]<<2)+d>>2]=r;s=M<<28|D>>>4;J[(H[a+37|0]<<2)+d>>2]=s;p=R<<28|A>>>4;J[(H[a+38|0]<<2)+d>>2]=p;l=N<<28|q>>>4;J[(H[a+39|0]<<2)+d>>2]=l}n=13;if(!b){a=P(b,80)+180576|0;J[(H[a+40|0]<<2)+d>>2]=m;J[(H[a+41|0]<<2)+d>>2]=j;J[(H[a+42|0]<<2)+d>>2]=i;J[(H[a+43|0]<<2)+d>>2]=o;p=i<<28|o>>>4;s=j<<28|i>>>4;r=m<<28|j>>>4;l=o<<28|m>>>4}a=i<<13|o>>>19;e=j<<13|i>>>19;q=P(b,80);h=q+180576|0;J[(H[h+44|0]<<2)+d>>2]=m<<15|j>>>17;J[(H[h+45|0]<<2)+d>>2]=j<<15|i>>>17;J[(H[h+46|0]<<2)+d>>2]=i<<15|o>>>17;J[(H[h+47|0]<<2)+d>>2]=o<<15|m>>>17;J[(H[h+48|0]<<2)+d>>2]=m<<30|j>>>2;J[(H[h+49|0]<<2)+d>>2]=j<<30|i>>>2;J[(H[h+50|0]<<2)+d>>2]=i<<30|o>>>2;J[(H[h+51|0]<<2)+d>>2]=o<<30|m>>>2;h=14;e:{if(E){i=a;break e}i=o<<13|m>>>19;o=q+180576|0;J[(H[o+52|0]<<2)+d>>2]=m<<13|j>>>19;J[(H[o+53|0]<<2)+d>>2]=e;h=15;n=14;e=a}a=q+180616|0;J[(H[a+n|0]<<2)+d>>2]=e;J[(H[a+h|0]<<2)+d>>2]=i;if(!b){a=P(b,80)+180576|0;J[(H[a+56|0]<<2)+d>>2]=r;J[(H[a+57|0]<<2)+d>>2]=s;J[(H[a+58|0]<<2)+d>>2]=p;J[(H[a+59|0]<<2)+d>>2]=l}if(!(c>>>0<129|E)){a=P(b,80)+180576|0;J[(H[a+60|0]<<2)+d>>2]=g;J[(H[a+61|0]<<2)+d>>2]=k;J[(H[a+62|0]<<2)+d>>2]=u;J[(H[a+63|0]<<2)+d>>2]=t;J[(H[a+64|0]<<2)+d>>2]=g<<15|k>>>17;J[(H[a+65|0]<<2)+d>>2]=k<<15|u>>>17;J[(H[a+66|0]<<2)+d>>2]=u<<15|t>>>17;J[(H[a+67|0]<<2)+d>>2]=t<<15|g>>>17;J[(H[a+68|0]<<2)+d>>2]=g<<30|k>>>2;J[(H[a+69|0]<<2)+d>>2]=k<<30|u>>>2;J[(H[a+70|0]<<2)+d>>2]=u<<30|t>>>2;J[(H[a+71|0]<<2)+d>>2]=t<<30|g>>>2;J[(H[a+76|0]<<2)+d>>2]=g<<28|k>>>4;J[(H[a+77|0]<<2)+d>>2]=k<<28|u>>>4;J[(H[a+78|0]<<2)+d>>2]=u<<28|t>>>4;J[(H[a+79|0]<<2)+d>>2]=t<<28|g>>>4}a=P(b,48)+d|0;e=P(b,20);c=e+180736|0;J[a+128>>2]=J[(H[c|0]<<2)+d>>2];J[a+132>>2]=J[(H[c+1|0]<<2)+d>>2];J[a+136>>2]=J[(H[c+2|0]<<2)+d>>2];J[a+140>>2]=J[(H[c+3|0]<<2)+d>>2];if(!E){c=e+180736|0;J[a+144>>2]=J[(H[c+4|0]<<2)+d>>2];J[a+148>>2]=J[(H[c+5|0]<<2)+d>>2];J[a+152>>2]=J[(H[c+6|0]<<2)+d>>2];J[a+156>>2]=J[(H[c+7|0]<<2)+d>>2]}c=e+180736|0;J[a+160>>2]=J[(H[c+8|0]<<2)+d>>2];J[a+164>>2]=J[(H[c+9|0]<<2)+d>>2];J[a+168>>2]=J[(H[c+10|0]<<2)+d>>2];J[a+172>>2]=J[(H[c+11|0]<<2)+d>>2];h=0;if(b){break a}b=P(b,20)+180736|0;J[a+176>>2]=J[(H[b+12|0]<<2)+d>>2];J[a+180>>2]=J[(H[b+13|0]<<2)+d>>2];J[a+184>>2]=J[(H[b+14|0]<<2)+d>>2];J[a+188>>2]=J[(H[b+15|0]<<2)+d>>2];J[a+192>>2]=J[(H[b+16|0]<<2)+d>>2];J[a+196>>2]=J[(H[b+17|0]<<2)+d>>2];J[a+200>>2]=J[(H[b+18|0]<<2)+d>>2];J[a+204>>2]=J[(H[b+19|0]<<2)+d>>2]}Ui=f- -64|0;return h}function PR(a,b,c,d,e){var f=0,g=0,h=0,i=0,j=0,k=0,l=0,m=0,n=0,o=0,p=0,q=0,r=0,s=0,t=0,u=0,v=Q(0),w=0,x=Q(0),y=Q(0),z=0,A=0,C=Q(0);k=Ui-384|0;Ui=k;if(!b){Z(111247,38296,261,2197);B()}s=J[c>>2];u=a;l=b;h=Ui-32|0;Ui=h;a:{b:{o=J[b+29100>>2];c:{d:{if(o>>>0>=32768){J[h>>2]=32766;dj(4,88293,77904,h);break d}a=-1;e:{f:{if(!c){break f}g=J[c+44>>2];if(!g){break f}b=J[74030];f=J[74031];i=J[c+40>>2];a=0;g:{while(1){m=i+(a<<4)|0;if(J[m>>2]==(b|0)&J[m+4>>2]==(f|0)){break g}a=a+1|0;if((g|0)!=(a|0)){continue}break}b=o;break e}a=J[m+8>>2];b=o;if(!a){break e}}b=a>>>0>o>>>0?o:a}f=nj(3280);if(!l){break b}r=J[l+29104>>2];J[f+1036>>2]=0;J[f+1040>>2]=0;a=f+1052|0;J[a>>2]=0;J[a+4>>2]=0;a=f+1044|0;J[a>>2]=0;J[a+4>>2]=0;H[f+1060|0]=K[f+1060|0]&254;ij(f+1064|0,0,2112);J[f+3244>>2]=0;J[f+3164>>2]=-1;J[f+3176>>2]=0;J[f+3180>>2]=0;g=f+3184|0;J[g>>2]=0;J[g+4>>2]=0;g=f+3192|0;J[g>>2]=0;J[g+4>>2]=0;g=f+3200|0;J[g>>2]=0;J[g+4>>2]=0;J[f+3248>>2]=0;J[f+3252>>2]=0;g=b;J[f+1032>>2]=b;J[f+4>>2]=0;J[f>>2]=0;H[f+3256|0]=K[f+3256|0]&254;lj(b,4,f+1036|0,a,f+1040|0);h:{i:{j:{k:{i=J[a>>2];a=J[f+1036>>2];if(b>>>0<=i-a>>2>>>0){l:{J[f+1040>>2]=a+(b<<2);b=L[f+1056>>1];m=g&65535;if(b>>>0>m>>>0){break k}p=J[f+1052>>2];a=sj(m<<1);J[f+1052>>2]=a;i=hj(a,p,b<<1);I[f+1056>>1]=g;m:{if(b>>>0>=m>>>0){break m}q=g-b&7;n:{if(!q){a=b;break n}a=b;while(1){I[i+(a<<1)>>1]=a;a=a+1|0;n=n+1|0;if((q|0)!=(n|0)){continue}break}}if(b-m>>>0>4294967288){break m}while(1){I[i+(a<<1)>>1]=a;b=a+1|0;I[i+(b<<1)>>1]=b;b=a+2|0;I[i+(b<<1)>>1]=b;b=a+3|0;I[i+(b<<1)>>1]=b;b=a+4|0;I[i+(b<<1)>>1]=b;b=a+5|0;I[i+(b<<1)>>1]=b;b=a+6|0;I[i+(b<<1)>>1]=b;b=a+7|0;I[i+(b<<1)>>1]=b;a=a+8|0;if((m|0)!=(a|0)){continue}break}}cj(p);if(H[f+3140|0]&1){break j}p=f+3128|0;q=f+3132|0;lj(g,64,p,f+3136|0,q);a=J[f+3128>>2];if(g>>>0>J[f+3136>>2]-a>>6>>>0){break l}J[f+3132>>2]=a+(g<<6);a=(g>>>0)/3|0;xN(f+3144|0,a>>>0<=1?1:a,g);if(H[f+3188|0]&1){break j}lj(r,4,f+3176|0,f+3184|0,f+3180|0);a=f+3224|0;J[a>>2]=0;J[a+4>>2]=0;a=f+3216|0;J[a>>2]=0;J[a+4>>2]=0;J[f+3208>>2]=0;J[f+3212>>2]=0;J[f+3240>>2]=0;J[f+3236>>2]=g;b=J[f+3248>>2];if(b>>>0>g>>>0){break k}m=J[f+3244>>2];r=g<<2;a=sj(r);J[f+3244>>2]=a;i=hj(a,m,b<<2);J[f+3248>>2]=g;o:{if(b>>>0>=g>>>0){break o}a=b;w=g-a&7;if(w){n=0;while(1){J[i+(a<<2)>>2]=a;a=a+1|0;n=n+1|0;if((w|0)!=(n|0)){continue}break}}if(b-g>>>0>4294967288){break o}while(1){J[i+(a<<2)>>2]=a;b=a+1|0;J[i+(b<<2)>>2]=b;b=a+2|0;J[i+(b<<2)>>2]=b;b=a+3|0;J[i+(b<<2)>>2]=b;b=a+4|0;J[i+(b<<2)>>2]=b;b=a+5|0;J[i+(b<<2)>>2]=b;b=a+6|0;J[i+(b<<2)>>2]=b;b=a+7|0;J[i+(b<<2)>>2]=b;a=a+8|0;if((g|0)!=(a|0)){continue}break}}cj(m);J[f+3268>>2]=0;J[f+3260>>2]=2147450879;J[f+3264>>2]=2147450879;H[f+3272|0]=K[f+3272|0]&192|40;a=J[f+1036>>2];if((a|0)==J[f+1040>>2]){break i}ij(a,0,r);a=J[p>>2];if((a|0)==J[q>>2]){break i}ij(a,204,P(g,48));ij(f+1080|0,0,2048);break h}}Z(144782,53895,514,59583);B()}Z(2627,54340,112,2284);B()}Z(151729,53895,501,2284);B()}Z(145396,53895,487,84789);B()}J[f+3232>>2]=Co();a=J[l>>2];p:{if(!a){break p}i=f+12|0;n=l+8|0;if(!c){while(1){b=n+P(j,112)|0;g=J[b+20>>2];if(g){a=J[b+16>>2];J[h+28>>2]=-1;J[h+12>>2]=a;J[h+20>>2]=o;H[h+16|0]=j;J[h+24>>2]=i+(j<<2);Zi[g|0](h+12|0)|0;a=J[l>>2]}j=j+1|0;if(j>>>0>>0){continue}break p}}while(1){g=n+P(j,112)|0;m=J[g+20>>2];if(m){a=J[g+16>>2];H[h+16|0]=j;J[h+12>>2]=a;p=J[c+44>>2];a=-1;q:{if(!p){break q}b=J[g+8>>2];g=J[g+12>>2];r=J[c+40>>2];a=0;r:{while(1){q=r+(a<<4)|0;if(J[q>>2]==(b|0)&J[q+4>>2]==(g|0)){break r}a=a+1|0;if((p|0)!=(a|0)){continue}break}a=0;break q}a=J[q+8>>2]}J[h+20>>2]=o;J[h+28>>2]=a;J[h+24>>2]=i+(j<<2);Zi[m|0](h+12|0)|0;a=J[l>>2]}j=j+1|0;if(j>>>0>>0){continue}break}}J[f+3208>>2]=bj(s);J[f+3212>>2]=Yi;a=nj(4);if(!fE(f,s,u,l,a)){break c}MR(f);cj(a)}a=0}Ui=h+32|0;break a}Z(111247,38296,273,2255);B()}s:{t:{u:{o=a;v:{if(!a){dj(4,88293,89203,0);a=-11;break v}l=J[o>>2];H[l+3272|0]=K[c+20|0]<<2&4|K[l+3272|0]&251;p=l+1064|0;a=Ky(u,J[c+32>>2],J[c+36>>2],p);w:{x:{if(a){break x}H[l+3272|0]=K[c+20|0]<<2&4|K[l+3272|0]&251;y:{z:{b=J[c+8>>2];A:{if(!b){a=0;ym(l);break A}B:{while(1){if(b>>>0<=t>>>0){break t}a=J[c+4>>2];J[k+128>>2]=0;C:{f=a+P(t,80)|0;a=J[f+4>>2];D:{if(!a){break D}if(wk(u,a,k+128|0)){break D}g=Gy(l,J[k+128>>2],J[f+4>>2]);if(g){break C}vj(u,J[k+128>>2])}J[k+64>>2]=J[f+4>>2];dj(4,88293,118255,k- -64|0);a=-13;if(t){break B}ym(l);break A}J[g+136>>2]=J[g+136>>2]&-513|J[c+20>>2]<<9&512;x=N[f+72>>2];v=N[f+64>>2];y=N[f+68>>2];if(!(v!=Q(0)|y!=Q(0)|x!=Q(0))){v=N[f+56>>2];y=v;x=v}a=J[f+32>>2];b=J[f+36>>2];h=J[f+40>>2];i=J[f+44>>2];j=J[f+20>>2];n=J[f+16>>2];C=N[f+24>>2];N[g+40>>2]=x;N[g+36>>2]=y;N[g+32>>2]=v;N[g+24>>2]=C;J[g+16>>2]=n;J[g+20>>2]=j;J[g+8>>2]=h;J[g+12>>2]=i;J[g>>2]=a;J[g+4>>2]=b;b=g+104|0;go(b,1);a=J[f>>2];h=ul(a,H[J[54660]]);E:{if(!h){J[k+96>>2]=a;dj(4,88293,119239,k+96|0);break E}em(b,a,(h-a|0)+1|0)}j=Ui-16|0;Ui=j;a=J[f>>2];a=Ul(a,yj(a));i=Yi;J[j+12>>2]=g;n=l+3144|0;F:{G:{b=J[l+3148>>2];H:{I:{if(!b){break I}h=J[J[n>>2]+(mxa(a,i,b)<<2)>>2];if((h|0)==-1){break I}m=J[l+3152>>2];while(1){h=m+(h<<4)|0;b=-3;if(J[h>>2]==(a|0)&J[h+4>>2]==(i|0)){break H}h=J[h+12>>2];if((h|0)!=-1){continue}break}}b=-4;if(J[g+96>>2]!=J[74028]|J[g+100>>2]!=J[74029]){break H}J[g+96>>2]=a;J[g+100>>2]=i;pl(n,a,i,j+12|0);if(M[l+3168>>2]>L[l+1058>>1]){break G}b=0}Ui=j+16|0;break F}Z(145129,38296,1032,34215);B()}if(b){J[k+80>>2]=J[f>>2];dj(4,88293,101705,k+80|0)}b=J[c+8>>2];t=t+1|0;if(b>>>0>t>>>0){continue}break}a=0}f=0;while(1){J:{K:{if(M[c+8>>2]>f>>>0){g=J[c+4>>2]+P(f,80)|0;i=cE(l,bj(J[g>>2]),Yi);if(!i){break K}b=0;h=J[g+12>>2];if(!h){break J}while(1){if(b>>>0>=h>>>0){break s}h=b<<2;j=J[h+J[g+8>>2]>>2];j=cE(l,rv(i,j,yj(j)),Yi);L:{if(j){j=Ay(j,i);if(!j){break L}if(M[g+12>>2]<=b>>>0){break s}h=J[h+J[g+8>>2]>>2];n=J[g>>2];J[k+56>>2]=j;J[k+52>>2]=h;J[k+48>>2]=n;dj(4,88293,140075,k+48|0);break L}if(M[g+12>>2]<=b>>>0){break s}J[k+32>>2]=J[h+J[g+8>>2]>>2];dj(4,88293,30277,k+32|0)}b=b+1|0;h=J[g+12>>2];if(b>>>0>>0){continue}break}break J}break t}Z(13563,40315,113,24498);B()}f=f+1|0;if((t|0)!=(f|0)){continue}break}ym(l);s=k+132|0;h=0;while(1){if(M[c+8>>2]<=h>>>0){break t}i=J[c+4>>2]+P(h,80)|0;j=cE(l,bj(J[i>>2]),Yi);M:{if(vv(l,j)){b=J[j+84>>2];r=J[b+4>>2];if(!r){break M}q=J[b>>2];w=j+156|0;f=0;n=0;while(1){m=q+P(f,96)|0;g=J[m+16>>2];if(J[g+80>>2]){if(!(H[g+102|0]&1)){a=k+104|0;J[a+20>>2]=256;J[a+12>>2]=k+128;J[a+16>>2]=0;J[a+4>>2]=2270;J[a>>2]=2271;J[a+8>>2]=a;a=nk(a,J[m>>2],J[m+4>>2]);J[k+4>>2]=J[i>>2];J[k>>2]=a;dj(4,88293,121417,k);break y}J[s>>2]=0;J[s+4>>2]=0;J[s+8>>2]=0;J[k+128>>2]=j;b=0;z=J[i+52>>2];N:{if(!z){break N}while(1){if(M[i+52>>2]<=b>>>0){break u}A=J[i+48>>2]+P(b,92)|0;if((bj(J[A>>2])|0)!=J[m>>2]|(Yi|0)!=J[m+4>>2]){b=b+1|0;if((z|0)==(b|0)){break N}continue}break}b=VD(A+12|0);J[k+140>>2]=b;if(!b){break z}J[s>>2]=83;J[k+136>>2]=82}J[k+144>>2]=w+(n<<2);Zi[J[g+80>>2]](k+128|0)|0;g=J[m+16>>2]}n=(I[g+102>>1]&1)+n|0;f=f+1|0;if((r|0)!=(f|0)){continue}break}break M}gt(l,j);ft(l,j);a=-13}h=h+1|0;if((t|0)!=(h|0)){continue}break}}if(J[c+16>>2]){dj(4,88293,123128,0)}if(a){break x}a=0;break w}a=J[i>>2];J[k+20>>2]=d;J[k+16>>2]=a;dj(4,88293,118152,k+16|0)}a=-13}Iq(u,p);lt(l);o=0}J[e>>2]=o}Ui=k+384|0;return a}Z(12664,54829,160,84789);B()}Z(12664,54829,244,84789);B()}Z(12664,54829,151,84789);B()}function KV(a,b,c,d,e,f,g,h,i){var j=0,k=0,l=0,m=0,n=0,o=0,p=0,q=0,r=0,s=0,t=0,u=0,v=0,w=0,x=0,y=0,z=0,A=0,B=0,C=0,D=0,E=0,F=0,G=0,H=0,I=0,K=0,L=0,N=0,O=0,P=0,Q=0,R=0;k=Ui-336|0;Ui=k;m=h;n=i&65535;o=d;p=e&65535;s=(e^i)&-2147483648;x=i>>>16&32767;u=e>>>16&32767;a:{b:{if(x-32767>>>0>4294934529&u-32767>>>0>=4294934530){break b}j=e&2147483647;if(!(!d&(j|0)==2147418112?!(b|c):j>>>0<2147418112)){r=d;s=e|32768;break a}e=i&2147483647;if(!(!h&(e|0)==2147418112?!(f|g):e>>>0<2147418112)){r=h;s=i|32768;b=f;c=g;break a}if(!(b|d|(j^2147418112|c))){if(!(f|h|(e^2147418112|g))){b=0;c=0;s=2147450880;break a}s=s|2147418112;b=0;c=0;break a}if(!(f|h|(e^2147418112|g))){b=0;c=0;break a}if(!(b|d|(c|j))){b=!(f|h|(e|g));r=b?0:r;s=b?2147450880:s;b=0;c=0;break a}if(!(f|h|(e|g))){s=s|2147418112;b=0;c=0;break a}if((j|0)==65535|j>>>0<65535){d=!(o|p);i=d;j=d?b:o;d=d<<6;i=S(i?c:p);d=d+((i|0)==32?S(j)+32|0:i)|0;Mm(k+320|0,b,c,o,p,d-15|0);q=16-d|0;o=J[k+328>>2];p=J[k+332>>2];c=J[k+324>>2];b=J[k+320>>2]}if(e>>>0>65535){break b}d=!(n|m);h=d;i=d?f:m;d=d<<6;h=S(h?g:n);d=d+((h|0)==32?S(i)+32|0:h)|0;Mm(k+304|0,f,g,m,n,d-15|0);q=(d+q|0)-16|0;m=J[k+312>>2];n=J[k+316>>2];f=J[k+304>>2];g=J[k+308>>2]}e=n|65536;y=e;z=m;d=m;j=e<<15|d>>>17;e=d<<15|g>>>17;d=e;i=0-d|0;h=j;j=1963258675-(j+((d|0)!=0)|0)|0;Am(k+288|0,d,h,0,0,i,j,0,0);d=J[k+296>>2];Am(k+272|0,0-d|0,0-(J[k+300>>2]+((d|0)!=0)|0)|0,0,0,i,j,0,0);d=J[k+280>>2];i=d<<1|J[k+276>>2]>>>31;d=J[k+284>>2]<<1|d>>>31;Am(k+256|0,i,d,0,0,e,h,0,0);j=J[k+264>>2];Am(k+240|0,i,d,0,0,0-j|0,0-(J[k+268>>2]+((j|0)!=0)|0)|0,0,0);i=J[k+248>>2];j=i<<1|J[k+244>>2]>>>31;d=J[k+252>>2]<<1|i>>>31;Am(k+224|0,j,d,0,0,e,h,0,0);i=J[k+232>>2];Am(k+208|0,j,d,0,0,0-i|0,0-(J[k+236>>2]+((i|0)!=0)|0)|0,0,0);d=J[k+216>>2];i=d<<1|J[k+212>>2]>>>31;d=J[k+220>>2]<<1|d>>>31;Am(k+192|0,i,d,0,0,e,h,0,0);j=J[k+200>>2];Am(k+176|0,i,d,0,0,0-j|0,0-(J[k+204>>2]+((j|0)!=0)|0)|0,0,0);i=e;e=J[k+184>>2];d=h;m=e<<1|J[k+180>>2]>>>31;h=m-1|0;e=(J[k+188>>2]<<1|e>>>31)-!m|0;Am(k+160|0,i,d,0,0,h,e,0,0);d=h;Am(k+144|0,f<<15,g<<15|f>>>17,0,0,d,e,0,0);v=k+112|0;A=J[k+168>>2];h=J[k+172>>2];m=J[k+160>>2];i=J[k+152>>2];l=m+i|0;n=J[k+164>>2];j=n+J[k+156>>2]|0;j=i>>>0>l>>>0?j+1|0:j;i=j;j=(n|0)==(j|0)&l>>>0>>0|j>>>0>>0;n=j+A|0;j=j>>>0>n>>>0?h+1|0:h;m=!i&l>>>0>1|(i|0)!=0;h=n+m|0;j=m>>>0>h>>>0?j+1|0:j;Am(v,d,e,0,0,0-h|0,0-(((h|0)!=0)+j|0)|0,0,0);Am(k+128|0,1-l|0,0-((l>>>0>1)+i|0)|0,0,0,d,e,0,0);K=(u-x|0)+q|0;e=J[k+116>>2];u=e;d=J[k+112>>2];j=e<<1|d>>>31;i=d<<1;n=j;d=j;h=J[k+140>>2];w=h;e=J[k+136>>2];j=h<<1|e>>>31;l=e<<1|J[k+132>>2]>>>31;h=l+i|0;d=d+j|0;d=h>>>0>>0?d+1|0:d;e=d;d=d-(h>>>0<13927)|0;t=d;v=d;l=0;j=p|65536;L=j;N=o;d=o;j=j<<1|d>>>31;P=d<<1;Q=j;E=j;d=ixa(t,l,j,0);j=Yi;B=d;C=j;G=b<<1;d=c<<1|b>>>31;x=d;A=d;j=0;q=j;m=h-13927|0;t=(e|0)==(t|0)&m>>>0>>0|e>>>0>t>>>0;e=(e|0)==(n|0)&h>>>0>>0|e>>>0>>0;d=J[k+120>>2];h=J[k+124>>2]<<1|d>>>31;d=d<<1|u>>>31;l=w>>>31|0;d=l+d|0;j=h;j=d>>>0>>0?j+1|0:j;h=d;d=d+e|0;j=h>>>0>d>>>0?j+1|0:j;e=d;d=d+t|0;l=e>>>0>d>>>0?j+1|0:j;e=d-1|0;D=l-!d|0;w=0;i=ixa(A,q,D,w);d=i+B|0;h=Yi+C|0;h=d>>>0>>0?h+1|0:h;n=(C|0)==(h|0)&d>>>0>>0|h>>>0>>0;B=e;O=c>>>31|0;F=O|o<<1;t=0;e=ixa(e,0,F,t);o=e+d|0;j=Yi+h|0;l=0;j=e>>>0>o>>>0?j+1|0:j;p=j;d=(j|0)==(h|0)&d>>>0>o>>>0|h>>>0>j>>>0;e=d;d=d+n|0;l=e>>>0>d>>>0?1:l;e=ixa(E,q,D,w);d=e+d|0;j=Yi+l|0;n=d;d=d>>>0>>0?j+1|0:j;e=ixa(E,q,B,t);l=Yi;h=e;e=ixa(F,t,D,w);i=h+e|0;j=Yi+l|0;j=e>>>0>i>>>0?j+1|0:j;e=j;j=(l|0)==(j|0)&h>>>0>i>>>0|j>>>0>>0;l=n+e|0;d=d+j|0;d=l>>>0>>0?d+1|0:d;n=l;l=d;e=0;d=e+o|0;j=i+p|0;j=d>>>0>>0?j+1|0:j;e=j;h=(j|0)==(p|0)&d>>>0>>0|j>>>0

>>0;j=l;i=h;h=h+n|0;j=i>>>0>h>>>0?j+1|0:j;u=h;l=j;o=d;C=m;d=ixa(m,0,F,t);i=Yi;h=d;m=ixa(v,r,A,r);d=d+m|0;j=Yi+i|0;j=d>>>0>>0?j+1|0:j;m=(i|0)==(j|0)&d>>>0>>0|i>>>0>j>>>0;h=j;H=G&-2;i=ixa(B,t,H,0);p=i+d|0;j=Yi+j|0;j=i>>>0>p>>>0?j+1|0:j;i=j;d=(j|0)==(h|0)&d>>>0>p>>>0|h>>>0>j>>>0;h=0;j=d+m|0;d=(j>>>0>>0?1:h)+e|0;n=j+o|0;d=n>>>0>>0?d+1|0:d;j=l;m=d;d=(d|0)==(e|0)&n>>>0>>0|d>>>0>>0;e=d;d=d+u|0;j=e>>>0>d>>>0?j+1|0:j;R=d;u=j;d=ixa(E,q,C,r);I=Yi;E=d;e=ixa(D,w,H,r);d=d+e|0;j=Yi+I|0;j=d>>>0>>0?j+1|0:j;o=d;l=ixa(v,r,F,t);e=d+l|0;h=j;d=j+Yi|0;d=e>>>0>>0?d+1|0:d;q=e;j=ixa(A,r,B,t);e=e+j|0;l=Yi+d|0;l=e>>>0>>0?l+1|0:l;D=(d|0)==(l|0)&e>>>0>>0|d>>>0>l>>>0;j=(h|0)==(I|0)&o>>>0>>0|h>>>0>>0;d=(d|0)==(h|0)&o>>>0>q>>>0|d>>>0>>0;d=d+j|0;d=d+D|0;h=l;q=h+n|0;j=(d|w)+m|0;j=h>>>0>q>>>0?j+1|0:j;o=j;d=(m|0)==(j|0)&n>>>0>q>>>0|j>>>0>>0;j=u;h=d;d=d+R|0;j=h>>>0>d>>>0?j+1|0:j;w=d;m=j;d=ixa(v,r,H,r);v=Yi;n=d;h=ixa(A,r,C,r);d=d+h|0;j=Yi+v|0;j=d>>>0>>0?j+1|0:j;u=0;h=(j|0)==(v|0)&d>>>0>>0|j>>>0>>0;n=j;d=j+p|0;j=(h|u)+i|0;j=d>>>0>>0?j+1|0:j;i=(i|0)==(j|0)&d>>>0

>>0|i>>>0>j>>>0;h=j;j=e;p=0;e=p+d|0;l=h+j|0;j=0;l=e>>>0

>>0?l+1|0:l;d=(h|0)==(l|0)&d>>>0>e>>>0|h>>>0>l>>>0;e=d;d=d+i|0;j=(e>>>0>d>>>0?1:j)+o|0;l=m;e=d;d=d+q|0;j=e>>>0>d>>>0?j+1|0:j;e=j;h=(o|0)==(j|0)&d>>>0>>0|j>>>0>>0;i=h;h=h+w|0;l=i>>>0>h>>>0?l+1|0:l;i=l;c:{if((l|0)==131071|l>>>0<131071){N=P|O;L=t|Q;Am(k+80|0,d,j,h,l,f,g,z,y);l=J[k+84>>2];q=l;j=b<<17;o=0;p=J[k+88>>2];c=o-p|0;b=J[k+80>>2];l=(l|b)!=0;m=c-l|0;n=(j-(J[k+92>>2]+(o>>>0

>>0)|0)|0)-(c>>>0>>0)|0;p=0-(((b|0)!=0)+q|0)|0;q=K+16382|0;o=0-b|0;break c}d=(e&1)<<31|d>>>1;e=h<<31|e>>>1;h=(i&1)<<31|h>>>1;i=i>>>1|0;Am(k+96|0,d,e,h,i,f,g,z,y);m=J[k+100>>2];x=m;n=0;q=J[k+104>>2];o=n-q|0;l=J[k+96>>2];p=(m|l)!=0;m=o-p|0;n=((b<<16)-(J[k+108>>2]+(n>>>0>>0)|0)|0)-(o>>>0

>>0)|0;p=0-(((l|0)!=0)+x|0)|0;G=b;x=c;q=K+16383|0;o=0-l|0}if((q|0)>=32767){s=s|2147418112;b=0;c=0;break a}d:{if((q|0)>0){b=m<<1|p>>>31;c=n<<1|m>>>31;m=h;n=i&65535|q<<16;l=p<<1|o>>>31;h=o<<1;break d}if((q|0)<=-113){b=0;c=0;break a}Lr(k- -64|0,d,e,h,i,1-q|0);Mm(k+48|0,G,x,N,L,q+112|0);d=J[k+64>>2];e=J[k+68>>2];m=J[k+72>>2];n=J[k+76>>2];Am(k+32|0,f,g,z,y,d,e,m,n);b=J[k+40>>2];c=J[k+56>>2];i=J[k+36>>2];p=b<<1|i>>>31;l=c-p|0;p=J[k+60>>2]-((J[k+44>>2]<<1|b>>>31)+(c>>>0

>>0)|0)|0;c=J[k+52>>2];q=c;b=J[k+32>>2];h=i<<1|b>>>31;o=b<<1;b=o;j=J[k+48>>2];c=(c|0)==(h|0)&b>>>0>j>>>0|c>>>0>>0;b=l-c|0;c=p-(c>>>0>l>>>0)|0;l=q-((j>>>0>>0)+h|0)|0;h=j-o|0}Am(k+16|0,f,g,z,y,3,0,0,0);Am(k,f,g,z,y,5,0,0,0);o=d;p=d&1;i=p;d=h+i|0;j=0;h=j+l|0;h=d>>>0>>0?h+1|0:h;i=d;g=(g|0)==(h|0)&d>>>0>f>>>0|g>>>0>>0;l=c;d=(h|0)==(j|0)&d>>>0

>>0|h>>>0>>0;f=b+d|0;l=d>>>0>f>>>0?l+1|0:l;j=e;b=(l|0)==(y|0);b=b&(f|0)==(z|0)?g:b&f>>>0>z>>>0|l>>>0>y>>>0;c=b;b=b+o|0;j=c>>>0>b>>>0?j+1|0:j;c=j;d=(e|0)==(j|0)&b>>>0>>0|e>>>0>j>>>0;j=n;e=d;d=d+m|0;j=e>>>0>d>>>0?j+1|0:j;g=d;e=J[k+20>>2];m=(e|0)==(h|0)&M[k+16>>2]>>0|e>>>0>>0;e=J[k+28>>2];d=J[k+24>>2];e=j>>>0<2147418112&((d|0)==(f|0)&(e|0)==(l|0)?m:(e|0)==(l|0)&d>>>0>>0|e>>>0>>0);d=c;m=e;e=b+e|0;d=m>>>0>e>>>0?d+1|0:d;b=(c|0)==(d|0)&b>>>0>e>>>0|c>>>0>d>>>0;c=b;b=b+g|0;j=c>>>0>b>>>0?j+1|0:j;g=b;c=J[k+4>>2];h=(c|0)==(h|0)&M[k>>2]>>0|c>>>0>>0;c=J[k+12>>2];b=J[k+8>>2];b=j>>>0<2147418112&((b|0)==(f|0)&(c|0)==(l|0)?h:(c|0)==(l|0)&b>>>0>>0|c>>>0>>0);c=b;b=b+e|0;l=c>>>0>b>>>0?d+1|0:d;c=l;e=(d|0)==(l|0)&b>>>0>>0|d>>>0>l>>>0;d=j;f=e;e=e+g|0;d=f>>>0>e>>>0?d+1|0:d;r=e|r;s=d|s}J[a>>2]=b;J[a+4>>2]=c;J[a+8>>2]=r;J[a+12>>2]=s;Ui=k+336|0}function Rq(a,b,c,d){var e=0,f=Q(0),g=0,h=Q(0),i=Q(0),j=Q(0),k=Q(0),l=0,m=Q(0),n=0,o=Q(0),p=Q(0),q=Q(0),r=Q(0),s=Q(0),t=Q(0),u=Q(0),v=Q(0),w=Q(0),x=Q(0),y=Q(0),z=Q(0),A=Q(0),B=Q(0),C=Q(0),D=Q(0),E=Q(0),F=Q(0),G=Q(0),H=Q(0),I=Q(0),L=Q(0),M=0,O=Q(0),P=Q(0),R=Q(0),S=Q(0),T=Q(0),U=Q(0),V=Q(0),W=Q(0),X=Q(0),Z=Q(0),_=Q(0),$=Q(0),aa=Q(0),ba=Q(0),ca=Q(0),da=Q(0);e=Ui-272|0;Ui=e;J[a+56>>2]=0;J[e+264>>2]=0;J[e+268>>2]=0;J[e+256>>2]=0;J[e+260>>2]=0;g=J[b+12>>2];J[e+168>>2]=J[b+8>>2];J[e+172>>2]=g;g=J[b+4>>2];J[e+160>>2]=J[b>>2];J[e+164>>2]=g;g=J[b+28>>2];J[e+184>>2]=J[b+24>>2];J[e+188>>2]=g;g=J[b+20>>2];J[e+176>>2]=J[b+16>>2];J[e+180>>2]=g;g=J[b+44>>2];J[e+200>>2]=J[b+40>>2];J[e+204>>2]=g;g=J[b+36>>2];J[e+192>>2]=J[b+32>>2];J[e+196>>2]=g;g=J[b+60>>2];J[e+216>>2]=J[b+56>>2];J[e+220>>2]=g;g=J[b+52>>2];J[e+208>>2]=J[b+48>>2];J[e+212>>2]=g;g=J[b+76>>2];J[e+104>>2]=J[b+72>>2];J[e+108>>2]=g;g=J[b+68>>2];J[e+96>>2]=J[b+64>>2];J[e+100>>2]=g;g=J[b+92>>2];J[e+120>>2]=J[b+88>>2];J[e+124>>2]=g;g=J[b+84>>2];J[e+112>>2]=J[b+80>>2];J[e+116>>2]=g;g=J[b+108>>2];J[e+136>>2]=J[b+104>>2];J[e+140>>2]=g;g=J[b+100>>2];J[e+128>>2]=J[b+96>>2];J[e+132>>2]=g;g=J[b+124>>2];J[e+152>>2]=J[b+120>>2];J[e+156>>2]=g;g=J[b+116>>2];J[e+144>>2]=J[b+112>>2];J[e+148>>2]=g;f=N[e+216>>2];i=N[e+152>>2];D=Q(Q(f+i)*Q(.5));q=Q(f-D);N[e+216>>2]=q;r=Q(i-D);N[e+152>>2]=r;f=N[e+208>>2];i=N[e+144>>2];E=Q(Q(f+i)*Q(.5));s=Q(f-E);N[e+208>>2]=s;f=N[e+212>>2];h=N[e+148>>2];F=Q(Q(f+h)*Q(.5));y=Q(f-F);N[e+212>>2]=y;z=Q(i-E);N[e+144>>2]=z;A=Q(h-F);N[e+148>>2]=A;n=J[J[a+28>>2]+4>>2]-17>>>0<=1?J[J[a+32>>2]+4>>2]-17>>>0<2:n;f=N[a+44>>2];i=N[a+48>>2];J[83510]=J[83510]+1;J[a+68>>2]=0;J[a+12>>2]=0;J[a+16>>2]=0;J[a+4>>2]=0;J[a+8>>2]=1065353216;J[a+60>>2]=-1;J[a+64>>2]=0;g=K[a+52|0];Wy(J[a+24>>2]);o=g?Q(0):f;p=g?Q(0):i;u=Q(o+p);l=a+4|0;i=Q(0xde0b6b000000000);B=N[e+136>>2];C=N[e+132>>2];O=N[e+128>>2];P=N[e+120>>2];R=N[e+116>>2];S=N[e+112>>2];T=N[e+104>>2];U=N[e+100>>2];V=N[e+96>>2];W=N[e+200>>2];X=N[e+196>>2];Z=N[e+192>>2];_=N[e+184>>2];$=N[e+180>>2];aa=N[e+176>>2];ba=N[e+168>>2];ca=N[e+164>>2];da=N[e+160>>2];a:{b:{while(1){m=N[b+32>>2];v=N[b>>2];w=N[b+16>>2];x=N[b+36>>2];G=N[b+4>>2];H=N[b+20>>2];I=N[b+40>>2];f=N[a+12>>2];j=N[b+8>>2];k=N[a+4>>2];L=N[b+24>>2];h=N[a+8>>2];J[e+252>>2]=0;t=j;j=Q(-k);N[e+248>>2]=Q(Q(t*j)-Q(L*h))-Q(I*f);N[e+244>>2]=Q(Q(G*j)-Q(H*h))-Q(x*f);N[e+240>>2]=Q(Q(v*j)-Q(w*h))-Q(m*f);j=N[b+96>>2];m=N[b+64>>2];v=N[b+80>>2];w=N[b+100>>2];x=N[b+68>>2];G=N[b+84>>2];H=N[b+104>>2];I=N[b+72>>2];L=N[b+88>>2];J[e+236>>2]=0;N[e+232>>2]=Q(H*f)+Q(Q(I*k)+Q(h*L));N[e+228>>2]=Q(w*f)+Q(Q(x*k)+Q(h*G));N[e+224>>2]=Q(j*f)+Q(Q(m*k)+Q(h*v));ez(e+80|0,J[a+28>>2],e+240|0);ez(e- -64|0,J[a+32>>2],e+224|0);J[e+60>>2]=0;f=N[e+88>>2];h=N[e+80>>2];j=N[e+84>>2];k=Q(q+Q(Q(W*f)+Q(Q(Z*h)+Q(j*X))));N[e+56>>2]=k;v=Q(y+Q(Q(_*f)+Q(Q(aa*h)+Q(j*$))));N[e+52>>2]=v;w=Q(Q(Q(ba*f)+Q(Q(da*h)+Q(ca*j)))+s);N[e+48>>2]=w;J[e+44>>2]=0;f=N[e+72>>2];h=N[e+64>>2];m=N[e+68>>2];j=Q(r+Q(Q(B*f)+Q(Q(O*h)+Q(m*C))));N[e+40>>2]=j;x=Q(A+Q(Q(P*f)+Q(Q(S*h)+Q(m*R))));N[e+36>>2]=x;f=Q(Q(Q(T*f)+Q(Q(V*h)+Q(U*m)))+z);N[e+32>>2]=f;if(n){J[e+40>>2]=0;J[e+56>>2]=0;j=Q(0);k=Q(0)}J[e+28>>2]=0;h=Q(k-j);N[e+24>>2]=h;f=Q(w-f);N[e+16>>2]=f;k=Q(v-x);N[e+20>>2]=k;c:{d:{f=Q(Q(N[a+12>>2]*h)+Q(Q(N[a+4>>2]*f)+Q(k*N[a+8>>2])));e:{if(!(!(f>Q(0))|!(Q(f*f)>Q(i*N[b+128>>2])))){J[a+68>>2]=10;break e}if(QS(J[a+24>>2],e+16|0)){J[a+68>>2]=1;break e}f=Q(i-f);if(f<=Q(i*Q(9.999999974752427e-7))){J[a+68>>2]=f<=Q(0)?2:11;break e}TS(J[a+24>>2],e+16|0,e+48|0,e+32|0);g=3;f:{if(!SS(J[a+24>>2],e)){break f}f=N[e+8>>2];h=N[e>>2];k=N[e+4>>2];g=J[e+12>>2];J[l+8>>2]=J[e+8>>2];J[l+12>>2]=g;g=J[e+4>>2];J[l>>2]=J[e>>2];J[l+4>>2]=g;f=Q(Q(f*f)+Q(Q(h*h)+Q(k*k)));g=6;if(f>2];n=J[g+280>>2];J[l>>2]=J[g+276>>2];J[l+4>>2]=n;n=J[g+288>>2];J[l+8>>2]=J[g+284>>2];J[l+12>>2]=n;i=f;g=12}J[a+68>>2]=g}RS(J[a+24>>2],e+240|0,e+224|0);J[e+268>>2]=0;m=N[e+248>>2];q=N[e+232>>2];r=Q(m-q);N[e+264>>2]=r;s=N[e+244>>2];y=N[e+228>>2];z=Q(s-y);N[e+260>>2]=z;A=N[e+240>>2];B=N[e+224>>2];C=Q(A-B);N[e+256>>2]=C;f=N[a+12>>2];h=N[a+4>>2];k=N[a+8>>2];j=Q(Q(f*f)+Q(Q(h*h)+Q(k*k)));if(+j<1e-4){J[a+68>>2]=5}if(!(j>Q(14210854715202004e-30))){break c}j=Q(Q(1)/Q(Y(j)));N[e+264>>2]=r*j;N[e+260>>2]=z*j;N[e+256>>2]=C*j;t=m;m=Q(Y(i));i=Q(o/m);N[e+248>>2]=t-Q(i*f);N[e+244>>2]=s-Q(i*k);N[e+240>>2]=A-Q(i*h);i=Q(p/m);N[e+232>>2]=q+Q(i*f);N[e+228>>2]=y+Q(i*k);N[e+224>>2]=B+Q(i*h);n=1;J[a+60>>2]=1;f=Q(Q(Q(1)/j)-u);break a}g=J[a+64>>2];J[a+64>>2]=g+1;if((g|0)>1e3){break b}g=J[a+24>>2];if(J[g>>2]==4){n=J[g+280>>2];J[l>>2]=J[g+276>>2];J[l+4>>2]=n;n=J[g+288>>2];J[l+8>>2]=J[g+284>>2];J[l+12>>2]=n;J[a+68>>2]=13;break b}i=f;continue}break}J[a+60>>2]=2}n=0;f=Q(0)}M=1;g=J[a+20>>2];if(!(!J[a+68>>2]|(!J[a+72>>2]|!g))){M=!(+Q(u+f)<.01)}g:{h:{i:{j:{k:{if(!g|n&M){break k}J[83509]=J[83509]+1;J[l+8>>2]=0;J[l+12>>2]=0;J[l>>2]=0;J[l+4>>2]=0;if(Zi[J[J[g>>2]+8>>2]](g,J[a+24>>2],J[a+28>>2],J[a+32>>2],e+160|0,e+96|0,l,e+80|0,e- -64|0,d,J[b+132>>2])|0){j=Q(0);h=N[e+72>>2];u=N[e+88>>2];o=Q(h-u);m=N[e+64>>2];q=N[e+80>>2];i=Q(m-q);r=N[e+68>>2];s=N[e+84>>2];p=Q(r-s);k=Q(Q(o*o)+Q(Q(i*i)+Q(p*p)));if(k<=Q(14210854715202004e-30)){j=N[a+16>>2];o=N[a+12>>2];i=N[a+4>>2];p=N[a+8>>2];k=Q(Q(o*o)+Q(Q(i*i)+Q(p*p)))}d=a;if(k>Q(14210854715202004e-30)){h=Q(u-h);t=Q(h*h);h=Q(q-m);m=Q(h*h);h=Q(s-r);h=Q(-Q(Y(Q(t+Q(m+Q(h*h))))));if(!(!(h>2]=g;if(n){break h}break g}h=N[a+12>>2];k=N[a+4>>2];j=N[a+8>>2];if(!(Q(Q(h*h)+Q(Q(k*k)+Q(j*j)))>Q(0))){break k}i=Q(N[e+88>>2]-N[e+72>>2]);m=Q(i*i);i=Q(N[e+80>>2]-N[e+64>>2]);t=Q(i*i);i=Q(N[e+84>>2]-N[e+68>>2]);i=Q(Q(Y(Q(m+Q(t+Q(i*i)))))-u);d=5;if(!(i>2];J[e+248>>2]=J[e+88>>2];J[e+252>>2]=d;d=J[e+76>>2];J[e+232>>2]=J[e+72>>2];J[e+236>>2]=d;N[e+248>>2]=N[e+248>>2]-Q(o*h);N[e+232>>2]=Q(p*h)+N[e+232>>2];d=J[e+68>>2];J[e+224>>2]=J[e+64>>2];J[e+228>>2]=d;d=J[e+84>>2];J[e+240>>2]=J[e+80>>2];J[e+244>>2]=d;N[e+224>>2]=Q(p*k)+N[e+224>>2];N[e+228>>2]=Q(p*j)+N[e+228>>2];N[e+240>>2]=N[e+240>>2]-Q(o*k);N[e+244>>2]=N[e+244>>2]-Q(o*j);d=J[l+12>>2];J[e+264>>2]=J[l+8>>2];J[e+268>>2]=d;d=J[l+4>>2];J[e+256>>2]=J[l>>2];J[e+260>>2]=d;h=N[e+264>>2];k=N[e+256>>2];j=N[e+260>>2];f=Q(Q(1)/Q(Y(Q(Q(h*h)+Q(Q(k*k)+Q(j*j))))));N[e+264>>2]=h*f;N[e+260>>2]=j*f;N[e+256>>2]=k*f;f=i;d=6;break i}if(n){break h}break g}d=J[e+92>>2];J[e+248>>2]=J[e+88>>2];J[e+252>>2]=d;d=J[e+76>>2];J[e+232>>2]=J[e+72>>2];J[e+236>>2]=d;d=J[e+84>>2];J[e+240>>2]=J[e+80>>2];J[e+244>>2]=d;d=J[e+68>>2];J[e+224>>2]=J[e+64>>2];J[e+228>>2]=d;N[e+268>>2]=j;f=Q(Q(1)/Q(Y(k)));N[e+264>>2]=o*f;N[e+260>>2]=p*f;N[e+256>>2]=i*f;f=h;d=3}J[a+60>>2]=d}if(!(f>2]>Q(f*f))){break g}b=J[e+260>>2];J[l>>2]=J[e+256>>2];J[l+4>>2]=b;b=J[e+268>>2];J[l+8>>2]=J[e+264>>2];J[l+12>>2]=b;N[a+56>>2]=f;J[e+92>>2]=0;N[e+88>>2]=D+N[e+232>>2];N[e+84>>2]=F+N[e+228>>2];N[e+80>>2]=E+N[e+224>>2];Zi[J[J[c>>2]+16>>2]](c,e+256|0,e+80|0,f)}Ui=e+272|0}function vU(a,b,c){var d=0,e=0,f=0,g=0,h=0,i=0,j=0,k=0,l=0,m=0,n=0,o=0,p=0,q=0,r=0,s=0,t=0,u=0,v=0,w=0,x=0,y=0,z=0,A=0,C=0,D=0,E=0,F=0;l=Ui-32|0;Ui=l;a:{if(J[a+104>>2]==8){b=J[a+120>>2];H[c+3|0]=b<<5|K[a+119|0]<<1|b<<2;b=J[a+140>>2];b:{if(K[a+119|0]==1){H[c|0]=b<<3;H[c+1|0]=K[a+144|0]<<3;b=K[a+148|0]<<3;break b}H[c|0]=b|b<<4;b=J[a+144>>2];H[c+1|0]=b<<4|b;b=J[a+148>>2];b=b<<4|b}H[c+2|0]=b;a=J[(J[a+136>>2]<<2)+166496>>2];H[c+4|0]=a;H[c+5|0]=a>>>8;H[c+6|0]=a>>>16;H[c+7|0]=a>>>24;break a}d=K[a+118|0];i=K[a+119|0];H[c+3|0]=d|i<<1|J[a+120>>2]<<5|J[a+124>>2]<<2;o=d<<5;d=o+166512|0;j=((K[d+15|0]<<4)+b|0)+(K[d+14|0]<<2)|0;y=K[j|0];g=((K[d+13|0]<<4)+b|0)+(K[d+12|0]<<2)|0;z=K[g|0];e=((K[d+11|0]<<4)+b|0)+(K[d+10|0]<<2)|0;A=K[e|0];f=((K[d+9|0]<<4)+b|0)+(K[d+8|0]<<2)|0;m=K[f|0];h=((K[d+7|0]<<4)+b|0)+(K[d+6|0]<<2)|0;C=K[h|0];k=((K[d+5|0]<<4)+b|0)+(K[d+4|0]<<2)|0;D=K[k|0];n=((K[d+3|0]<<4)+b|0)+(K[d+2|0]<<2)|0;E=K[n|0];d=((K[d+1|0]<<4)+b|0)+(K[d|0]<<2)|0;p=K[d|0];q=K[j+1|0];r=K[g+1|0];s=K[e+1|0];t=K[f+1|0];u=K[h+1|0];v=K[k+1|0];w=K[n+1|0];x=K[d+1|0];j=K[j+2|0];g=K[g+2|0];e=K[e+2|0];f=K[f+2|0];h=K[h+2|0];k=K[k+2|0];n=K[n+2|0];d=K[d+2|0];H[l+11|0]=0;d=j+(g+(e+(f+(h+(k+(d+n|0)|0)|0)|0)|0)|0)|0;g=i?31:15;H[l+10|0]=((P(d,g)+1020&65535)>>>0)/2040;H[l+9|0]=((P(g,q+(r+(s+(t+(u+(v+(w+x|0)|0)|0)|0)|0)|0)|0)+1020&65535)>>>0)/2040;H[l+8|0]=((P(g,y+(z+(A+(m+(C+(D+(p+E|0)|0)|0)|0)|0)|0)|0)+1020&65535)>>>0)/2040;if(!(1<>2]&7424)){HU(l+16|0,l+8|0,J[a+128>>2],g,0);J[l+8>>2]=J[l+16>>2]}d=o+166512|0;j=((K[d+31|0]<<4)+b|0)+(K[d+30|0]<<2)|0;y=K[j|0];e=((K[d+29|0]<<4)+b|0)+(K[d+28|0]<<2)|0;z=K[e|0];f=((K[d+27|0]<<4)+b|0)+(K[d+26|0]<<2)|0;A=K[f|0];h=((K[d+25|0]<<4)+b|0)+(K[d+24|0]<<2)|0;m=K[h|0];k=((K[d+23|0]<<4)+b|0)+(K[d+22|0]<<2)|0;C=K[k|0];n=((K[d+21|0]<<4)+b|0)+(K[d+20|0]<<2)|0;D=K[n|0];o=((K[d+19|0]<<4)+b|0)+(K[d+18|0]<<2)|0;E=K[o|0];d=((K[d+17|0]<<4)+b|0)+(K[d+16|0]<<2)|0;p=K[d|0];q=K[j+1|0];r=K[e+1|0];s=K[f+1|0];t=K[h+1|0];u=K[k+1|0];v=K[n+1|0];w=K[o+1|0];x=K[d+1|0];j=K[j+2|0];e=K[e+2|0];f=K[f+2|0];h=K[h+2|0];k=K[k+2|0];n=K[n+2|0];o=K[o+2|0];d=K[d+2|0];H[l+15|0]=0;e=((P(g,j+(e+(f+(h+(k+(n+(d+o|0)|0)|0)|0)|0)|0)|0)+1020&65535)>>>0)/2040|0;H[l+14|0]=e;d=((P(g,q+(r+(s+(t+(u+(v+(w+x|0)|0)|0)|0)|0)|0)|0)+1020&65535)>>>0)/2040|0;H[l+13|0]=d;j=((P(g,y+(z+(A+(m+(C+(D+(p+E|0)|0)|0)|0)|0)|0)|0)+1020&65535)>>>0)/2040|0;H[l+12|0]=j;if(!(1<>2]&7424)){HU(l+16|0,l+12|0,J[a+128>>2],g,1);j=J[l+16>>2];e=j>>>16|0;d=j>>>8|0}c:{if(i){g=K[l+10|0];a=(e&255)-g|0;i=(a|0)>=3?3:a;a=((i|0)<=-4?-4:i)+(a>>>28&8)|g<<3;g=K[l+9|0];d=(d&255)-g|0;i=(d|0)>=3?3:d;g=((i|0)<=-4?-4:i)+(d>>>28&8)|g<<3;d=j&255;j=K[l+8|0];d=d-j|0;i=(d|0)>=3?3:d;d=((i|0)<=-4?-4:i)+(d>>>28&8)|j<<3;break c}a=K[l+10|0]<<4|e;g=K[l+9|0]<<4|d;d=K[l+8|0]<<4|j}H[c+2|0]=a;H[c+1|0]=g;H[c|0]=d;C=b+32|0;D=b+16|0;E=b+48|0;y=b+8|0;z=b+4|0;A=b+12|0;n=0;o=0;a=1;j=0;while(1){g=K[c|0];d:{e:{f=K[c+3|0];f:{if(f&2){if(!j){break e}d=K[c+2|0];i=d&7;i=((i>>>0>3?-8:0)|i)+(d>>>3|0)|0;d=g&7;g=((d>>>0>3?-8:0)|d)+((g&248)>>>3|0)|0;d=K[c+1|0];e=d<<3&56;d=(e>>>3|(e>>>0>31?-8:0))+(d>>>3|0)|0;if((i|(g|d))>>>0>=32){i=(i|0)>=31?31:i;i=(i|0)>0?i:0;g=(g|0)>=31?31:g;g=(g|0)>0?g:0;d=(d|0)>=31?31:d;d=(d|0)>0?d:0}i=i<<3|i>>>2;g=g<<3|g>>>2;d=d<<3|d>>>2;break f}d=K[c+2|0];e=K[c+1|0];g:{if(j){i=g&15;e=e&15;d=d&15;break g}i=(g&240)>>>4|0;e=(e&240)>>>4|0;d=(d&240)>>>4|0}g=P(i,17);i=P(d,17);d=P(e,17)}if(j>>>0<2){break d}Z(109829,40075,627,67416);B()}g=g&-8|(g&224)>>>5;i=P(K[c+2|0]>>>3|0,540672)>>>16|0;d=P(K[c+1|0]>>>3|0,2112)>>>8|0}H[l+31|0]=255;H[l+27|0]=255;H[l+23|0]=255;H[l+19|0]=255;e=((f>>>(j?2:5)&7)<<4)+168640|0;f=J[e+12>>2];i=i&255;h=f+i|0;h=(h|0)>0?h:0;H[l+30|0]=(h|0)>=255?255:h;d=d&255;h=d+f|0;h=(h|0)>0?h:0;H[l+29|0]=(h|0)>=255?255:h;g=g&255;f=g+f|0;f=(f|0)>0?f:0;H[l+28|0]=(f|0)>=255?255:f;f=J[e+8>>2];h=f+i|0;h=(h|0)>0?h:0;H[l+26|0]=(h|0)>=255?255:h;h=d+f|0;h=(h|0)>0?h:0;H[l+25|0]=(h|0)>=255?255:h;f=g+f|0;f=(f|0)>0?f:0;H[l+24|0]=(f|0)>=255?255:f;f=J[e+4>>2];h=f+i|0;h=(h|0)>0?h:0;H[l+22|0]=(h|0)>=255?255:h;h=d+f|0;h=(h|0)>0?h:0;H[l+21|0]=(h|0)>=255?255:h;f=g+f|0;f=(f|0)>0?f:0;H[l+20|0]=(f|0)>=255?255:f;f=i;i=J[e>>2];e=f+i|0;e=(e|0)>0?e:0;H[l+18|0]=(e|0)>=255?255:e;d=d+i|0;d=(d|0)>0?d:0;H[l+17|0]=(d|0)>=255?255:d;d=g+i|0;d=(d|0)>0?d:0;H[l+16|0]=(d|0)>=255?255:d;i=(P(K[l+25|0],183)+P(K[l+24|0],54)|0)+P(K[l+26|0],19)|0;g=(P(K[l+21|0],183)+P(K[l+20|0],54)|0)+P(K[l+22|0],19)|0;d=i+g|0;g=g+((P(K[l+17|0],183)+P(K[l+16|0],54)|0)+P(K[l+18|0],19)|0)|0;i=((i+P(K[l+28|0],54)|0)+P(K[l+29|0],183)|0)+P(K[l+30|0],19)|0;h:{if(H[c+3|0]&1){e=j<<5;f=e+A|0;j=j<<1;h=j|12;k=b+e|0;k=(P(K[k+2|0],38)+P(K[k+1|0],366)|0)+P(K[k|0],108)|0;m=K[(((k>>>0>>0)+(d>>>0>k>>>0)|0)+(i>>>0>k>>>0)|0)+169533|0];f=(P(K[f+2|0],38)+P(K[f+1|0],366)|0)+P(K[f|0],108)|0;p=K[(((f>>>0>>0)+(d>>>0>f>>>0)|0)+(f>>>0>>0)|0)+169533|0];f=e+z|0;f=(P(K[f+2|0],38)+P(K[f+1|0],366)|0)+P(K[f|0],108)|0;q=K[(((f>>>0>>0)+(d>>>0>f>>>0)|0)+(f>>>0>>0)|0)+169533|0];r=j|4;e=e+y|0;e=(P(K[e+2|0],38)+P(K[e+1|0],366)|0)+P(K[e|0],108)|0;s=K[(((e>>>0>>0)+(d>>>0>e>>>0)|0)+(e>>>0>>0)|0)+169533|0];t=j|8;e=j|1;f=e<<4;k=f+b|0;k=(P(K[k+1|0],366)+P(K[k+2|0],38)|0)+P(K[k|0],108)|0;u=K[(((k>>>0>>0)+(d>>>0>k>>>0)|0)+(i>>>0>k>>>0)|0)+169533|0];k=f+z|0;k=(P(K[k+1|0],366)+P(K[k+2|0],38)|0)+P(K[k|0],108)|0;v=K[(((k>>>0>>0)+(d>>>0>k>>>0)|0)+(i>>>0>k>>>0)|0)+169533|0];w=j|5;k=f+y|0;k=(P(K[k+1|0],366)+P(K[k+2|0],38)|0)+P(K[k|0],108)|0;x=K[(((k>>>0>>0)+(d>>>0>k>>>0)|0)+(i>>>0>k>>>0)|0)+169533|0];F=j|9;k=m>>>1<>>1<>>1<>>1<>>1<>>1<>>1<>>0>>0)+(d>>>0>h>>>0)|0)+(h>>>0>>0)|0)+169533|0];h=(P(K[f+2|0],38)+P(K[f+1|0],366)|0)+P(K[f|0],108)|0;q=K[(((h>>>0>>0)+(d>>>0>h>>>0)|0)+(h>>>0>>0)|0)+169533|0];r=j|3;h=j+D|0;k=(P(K[h+2|0],38)+P(K[h+1|0],366)|0)+P(K[h|0],108)|0;s=K[(((k>>>0>>0)+(d>>>0>k>>>0)|0)+(i>>>0>k>>>0)|0)+169533|0];t=j|1;k=j+C|0;m=(P(K[k+2|0],38)+P(K[k+1|0],366)|0)+P(K[k|0],108)|0;m=K[(((m>>>0>>0)+(d>>>0>m>>>0)|0)+(i>>>0>m>>>0)|0)+169533|0];u=j|2;e=(P(K[e+5|0],366)+P(K[e+6|0],38)|0)+P(K[e+4|0],108)|0;v=K[(((e>>>0>>0)+(d>>>0>e>>>0)|0)+(e>>>0>>0)|0)+169533|0];w=j|4;e=(P(K[h+5|0],366)+P(K[h+6|0],38)|0)+P(K[h+4|0],108)|0;h=K[(((e>>>0>>0)+(d>>>0>e>>>0)|0)+(e>>>0>>0)|0)+169533|0];x=j|5;e=(P(K[k+5|0],366)+P(K[k+6|0],38)|0)+P(K[k+4|0],108)|0;e=K[(((e>>>0>>0)+(d>>>0>e>>>0)|0)+(e>>>0>>0)|0)+169533|0];F=j|6;k=p>>>1<>>1<>>1<>>1<>>1<>>1<>>1<>>0>g>>>0)+(d>>>0>g>>>0)|0)+(g>>>0>>0)|0)+169533|0];o=d>>>1<>>8;I[c+6>>1]=n<<8|(n&65280)>>>8}Ui=l+32|0}function KF(a,b,c,d,e){var f=0,g=0,h=0,i=0,j=0,k=0,l=0,m=0,n=0,o=0,p=0,q=0,r=0,s=0;a:{b:while(1){p=b-2|0;r=b-6|0;s=b-4|0;while(1){c:{d:{e:{f:{g:{f=a;a=b-f>>1;switch(a|0){case 0:case 1:break a;case 4:break c;case 5:break e;case 3:break f;case 2:break g;default:break d}}c=J[c>>2];a=b-2|0;b=L[a>>1];d=L[f>>1];if(M[(c+P(b,12)|0)+4>>2]<=M[(c+P(d,12)|0)+4>>2]){break a}I[f>>1]=b;I[a>>1]=d;return}a=J[c>>2];b=b-2|0;d=L[b>>1];e=J[(a+P(d,12)|0)+4>>2];g=L[f+2>>1];h=J[(a+P(g,12)|0)+4>>2];c=L[f>>1];j=J[(a+P(c,12)|0)+4>>2];if(h>>>0<=j>>>0){if(e>>>0<=h>>>0){break a}I[f+2>>1]=d;I[b>>1]=g;b=L[f+2>>1];c=L[f>>1];if(M[(a+P(b,12)|0)+4>>2]<=M[(a+P(c,12)|0)+4>>2]){break a}I[f+2>>1]=c;I[f>>1]=b;return}if(e>>>0>h>>>0){I[f>>1]=d;I[b>>1]=c;return}I[f+2>>1]=c;I[f>>1]=g;d=L[b>>1];if(M[(a+P(d,12)|0)+4>>2]<=j>>>0){break a}I[f+2>>1]=d;I[b>>1]=c;return}Yv(f,f+2|0,f+4|0,f+6|0,c);a=J[c>>2];b=b-2|0;d=L[b>>1];c=L[f+6>>1];if(M[(a+P(d,12)|0)+4>>2]<=M[(a+P(c,12)|0)+4>>2]){break a}I[f+6>>1]=d;I[b>>1]=c;b=L[f+6>>1];c=J[(a+P(b,12)|0)+4>>2];d=L[f+4>>1];if(c>>>0<=M[(a+P(d,12)|0)+4>>2]){break a}I[f+4>>1]=b;I[f+6>>1]=d;d=L[f+2>>1];if(c>>>0<=M[(a+P(d,12)|0)+4>>2]){break a}I[f+4>>1]=d;I[f+2>>1]=b;d=L[f>>1];if(c>>>0<=M[(a+P(d,12)|0)+4>>2]){break a}I[f+2>>1]=d;I[f>>1]=b;return}if((a|0)<=23){if(e&1){if((b|0)==(f|0)){break a}g=f+2|0;if((g|0)==(b|0)){break a}d=J[c>>2];a=f;while(1){c=g;e=L[a+2>>1];j=J[(d+P(e,12)|0)+4>>2];h=L[a>>1];if(j>>>0>M[(d+P(h,12)|0)+4>>2]){while(1){h:{I[g>>1]=h;g=a;if((f|0)==(a|0)){g=f;break h}a=g-2|0;h=L[a>>1];if(j>>>0>M[(d+P(h,12)|0)+4>>2]){continue}}break}I[g>>1]=e}a=c;g=a+2|0;if((g|0)!=(b|0)){continue}break}break a}if((b|0)==(f|0)){break a}g=f+2|0;if((g|0)==(b|0)){break a}d=J[c>>2];while(1){c=g;e=L[f+2>>1];h=J[(d+P(e,12)|0)+4>>2];a=L[f>>1];if(h>>>0>M[(d+P(a,12)|0)+4>>2]){while(1){I[g>>1]=a;g=f;f=f-2|0;a=L[f>>1];if(h>>>0>M[(d+P(a,12)|0)+4>>2]){continue}break}I[g>>1]=e}f=c;g=f+2|0;if((g|0)!=(b|0)){continue}break}break a}if(!d){if((b|0)==(f|0)){break a}h=c;d=b;if((b|0)!=(f|0)){m=b-f|0;i=m>>1;if((i|0)>=2){l=J[c>>2];k=i-2>>>1|0;g=k;while(1){j=g;i:{if((g|0)>(k|0)){break i}c=g<<1;b=c+f|0;a=c|1;e=(a<<1)+f|0;g=L[e>>1];c=c+2|0;if((c|0)<(i|0)){o=c;p=L[e+2>>1];c=M[(l+P(g,12)|0)+4>>2]>M[(l+P(p,12)|0)+4>>2];a=c?o:a;g=c?p:g;e=c?e+2|0:e}p=L[b>>1];n=J[(l+P(p,12)|0)+4>>2];if(n>>>0>2]){break i}while(1){j:{c=e;I[b>>1]=g;if((a|0)>(k|0)){break j}b=a<<1;a=b|1;e=(a<<1)+f|0;g=L[e>>1];b=b+2|0;if((b|0)<(i|0)){o=b;r=L[e+2>>1];b=M[(l+P(g,12)|0)+4>>2]>M[(l+P(r,12)|0)+4>>2];a=b?o:a;g=b?r:g;e=b?e+2|0:e}b=c;if(n>>>0>=M[(l+P(g,12)|0)+4>>2]){continue}}break}I[c>>1]=p}g=j-1|0;if((j|0)>0){continue}break}}if((i|0)>=2){while(1){b=i;k=b-2>>>1|0;l=J[h>>2];j=L[f>>1];g=0;c=f;while(1){i=g<<1;g=i|1;p=c+i|0;a=p+2|0;e=L[a>>1];i=i+2|0;if((i|0)<(b|0)){o=i;p=p+4|0;m=L[p>>1];i=M[(l+P(e,12)|0)+4>>2]>M[(l+P(m,12)|0)+4>>2];g=i?o:g;e=i?m:e;a=i?p:a}I[c>>1]=e;c=a;if((g|0)<=(k|0)){continue}break}d=d-2|0;k:{if((d|0)==(a|0)){I[a>>1]=j;break k}I[a>>1]=L[d>>1];I[d>>1]=j;c=(a-f|0)+2>>1;if((c|0)<2){break k}i=L[a>>1];k=J[(l+P(i,12)|0)+4>>2];g=c-2|0;e=(g&-2)+f|0;c=L[e>>1];if(k>>>0>=M[(l+P(c,12)|0)+4>>2]){break k}g=g>>>1|0;while(1){l:{j=e;I[a>>1]=c;if(!g){break l}c=g-1|0;g=c>>>1|0;a=j;e=(c&-2)+f|0;c=L[e>>1];if(k>>>0>2]){continue}}break}I[j>>1]=i}i=b-1|0;if((b|0)>2){continue}break}}}return}g=(a&-2)+f|0;k=J[c>>2];h=L[p>>1];j=J[(k+P(h,12)|0)+4>>2];m:{if(a>>>0>=129){m=a>>>1|0;a=L[g>>1];l=J[(P(a,12)+k|0)+4>>2];i=L[f>>1];n=J[(P(i,12)+k|0)+4>>2];n:{if(l>>>0<=n>>>0){if(j>>>0<=l>>>0){break n}I[g>>1]=h;I[p>>1]=a;a=L[g>>1];h=L[f>>1];if(M[(P(a,12)+k|0)+4>>2]<=M[(P(h,12)+k|0)+4>>2]){break n}I[f>>1]=a;I[g>>1]=h;break n}o:{if(j>>>0>l>>>0){I[f>>1]=h;break o}I[f>>1]=a;I[g>>1]=i;a=L[p>>1];if(M[(P(a,12)+k|0)+4>>2]<=n>>>0){break n}I[g>>1]=a}I[p>>1]=i}h=L[s>>1];j=J[(P(h,12)+k|0)+4>>2];m=(m<<1)+f|0;a=m-2|0;l=L[a>>1];i=J[(P(l,12)+k|0)+4>>2];n=L[f+2>>1];o=J[(P(n,12)+k|0)+4>>2];p:{if(i>>>0<=o>>>0){if(j>>>0<=i>>>0){break p}I[a>>1]=h;I[s>>1]=l;h=L[a>>1];j=L[f+2>>1];if(M[(P(h,12)+k|0)+4>>2]<=M[(P(j,12)+k|0)+4>>2]){break p}I[f+2>>1]=h;I[a>>1]=j;break p}q:{if(j>>>0>i>>>0){I[f+2>>1]=h;break q}I[f+2>>1]=l;I[a>>1]=n;h=L[s>>1];if(M[(P(h,12)+k|0)+4>>2]<=o>>>0){break p}I[a>>1]=h}I[s>>1]=n}j=L[r>>1];l=J[(P(j,12)+k|0)+4>>2];h=m+2|0;i=L[h>>1];n=J[(P(i,12)+k|0)+4>>2];o=L[f+4>>1];q=J[(P(o,12)+k|0)+4>>2];r:{if(n>>>0<=q>>>0){if(l>>>0<=n>>>0){break r}I[m+2>>1]=j;I[r>>1]=i;j=L[m+2>>1];l=L[f+4>>1];if(M[(P(j,12)+k|0)+4>>2]<=M[(P(l,12)+k|0)+4>>2]){break r}I[f+4>>1]=j;I[m+2>>1]=l;break r}s:{if(l>>>0>n>>>0){I[f+4>>1]=j;break s}I[f+4>>1]=i;I[m+2>>1]=o;j=L[r>>1];if(M[(P(j,12)+k|0)+4>>2]<=q>>>0){break r}I[m+2>>1]=j}I[r>>1]=o}l=L[m+2>>1];n=J[(P(l,12)+k|0)+4>>2];t:{u:{j=L[g>>1];o=J[(P(j,12)+k|0)+4>>2];i=L[a>>1];q=J[(P(i,12)+k|0)+4>>2];if(o>>>0<=q>>>0){if(n>>>0<=o>>>0){break t}I[g>>1]=l;I[m+2>>1]=j;h=g;j=i;if(n>>>0>q>>>0){break u}j=l;break t}if(n>>>0>o>>>0){break u}I[a>>1]=j;I[g>>1]=i;a=g;j=l;if(n>>>0>q>>>0){break u}j=i;break t}I[a>>1]=l;I[h>>1]=i}a=L[f>>1];I[f>>1]=j;I[g>>1]=a;break m}a=L[f>>1];l=J[(P(a,12)+k|0)+4>>2];i=L[g>>1];m=J[(P(i,12)+k|0)+4>>2];if(l>>>0<=m>>>0){if(j>>>0<=l>>>0){break m}I[f>>1]=h;I[p>>1]=a;a=L[f>>1];h=L[g>>1];if(M[(P(a,12)+k|0)+4>>2]<=M[(P(h,12)+k|0)+4>>2]){break m}I[g>>1]=a;I[f>>1]=h;break m}v:{if(j>>>0>l>>>0){I[g>>1]=h;break v}I[g>>1]=a;I[f>>1]=i;a=L[p>>1];if(M[(P(a,12)+k|0)+4>>2]<=m>>>0){break m}I[f>>1]=a}I[p>>1]=i}d=d-1|0;o=L[f>>1];w:{q=e&1;if(q){break w}g=J[(P(o,12)+k|0)+4>>2];if(g>>>0>1],12)+k|0)+4>>2]){break w}h=f;a=f;x:{if(g>>>0>M[(P(L[p>>1],12)+k|0)+4>>2]){while(1){e=L[h+2>>1];a=h+2|0;h=a;if(g>>>0<=M[(P(e,12)+k|0)+4>>2]){continue}break x}}while(1){a=a+2|0;if(b>>>0<=a>>>0){break x}if(g>>>0<=M[(P(L[a>>1],12)+k|0)+4>>2]){continue}break}}h=b;if(a>>>0>>0){while(1){h=h-2|0;if(g>>>0>M[(P(L[h>>1],12)+k|0)+4>>2]){continue}break}}if(a>>>0>>0){m=L[h>>1];j=L[a>>1];while(1){I[a>>1]=m;I[h>>1]=j;while(1){j=L[a+2>>1];a=a+2|0;if(g>>>0<=M[(P(j,12)+k|0)+4>>2]){continue}break}while(1){h=h-2|0;m=L[h>>1];if(g>>>0>M[(P(m,12)+k|0)+4>>2]){continue}break}if(a>>>0>>0){continue}break}}e=a-2|0;if((e|0)!=(f|0)){I[f>>1]=L[e>>1]}I[e>>1]=o;e=0;continue}k=J[c>>2];n=J[(k+P(o,12)|0)+4>>2];l=f;while(1){g=l;l=g+2|0;a=L[g+2>>1];if(n>>>0>2]){continue}break}i=b;y:{if((f|0)==(g|0)){while(1){if(l>>>0>=i>>>0){break y}i=i-2|0;if(n>>>0>=M[(k+P(L[i>>1],12)|0)+4>>2]){continue}break y}}while(1){i=i-2|0;if(n>>>0>=M[(k+P(L[i>>1],12)|0)+4>>2]){continue}break}}if(l>>>0>>0){m=L[i>>1];h=l;j=i;while(1){I[h>>1]=m;I[j>>1]=a;while(1){g=h;h=g+2|0;a=L[g+2>>1];if(n>>>0>2]){continue}break}while(1){j=j-2|0;m=L[j>>1];if(n>>>0>=M[(k+P(m,12)|0)+4>>2]){continue}break}if(h>>>0>>0){continue}break}}if((f|0)!=(g|0)){I[f>>1]=L[g>>1]}I[g>>1]=o;if(l>>>0>=i>>>0){h=lU(f,g,c);a=g+2|0;if(lU(a,b,c)){b=g;a=f;if(!h){continue b}break a}if(h){continue}}KF(f,g,c,d,q);a=g+2|0;e=0;continue}break}break}Yv(f,f+2|0,f+4|0,b-2|0,c)}} +function vM(a,b){var c=0,d=Q(0),e=Q(0),f=0,g=0,h=Q(0),i=Q(0),j=Q(0),k=0,l=Q(0),m=0,n=0,o=0,p=0,q=0,r=0,s=0,t=Q(0),u=Q(0),v=0,w=0,x=Q(0),y=0,z=0,A=0,C=Q(0),D=Q(0),E=Q(0),F=Q(0),G=Q(0),I=0,K=0,L=0,O=0;v=Ui-48|0;Ui=v;A=J[b+4>>2];c=J[a+16>>2];if(c){Uj(c)}J[a+16>>2]=b;a:{b:{c:{if(!(H[a+12|0]&1)){lj(A,18568,a,a+8|0,a+4|0);c=J[a>>2];if((J[a+8>>2]-c|0)/18568>>>0>=A>>>0){f=P(A,18568);J[a+4>>2]=f+c;ij(c,0,f);if(A){while(1){d:{if(M[b+4>>2]>z>>>0){r=J[b>>2]+P(z,160)|0;if(J[r+60>>2]==2){J[r+60>>2]=1}c=J[a>>2];if((J[a+4>>2]-c|0)/18568>>>0>z>>>0){c=c+P(z,18568)|0;J[c+18544>>2]=bj(J[r+52>>2]);J[c+18548>>2]=Yi;J[c+18560>>2]=J[r+60>>2];o=0;n=ij(c,0,18528);w=J[r+88>>2];if(!w){break d}while(1){e:{f:{g:{h:{if(M[r+88>>2]>o>>>0){s=J[r+84>>2]+(o<<4)|0;c=J[s>>2];if((c|0)>14){break h}p=n+P(c,772)|0;g=J[s+4>>2];q=J[s+8>>2];if((q|0)!=1){f=q-2|0;c=0;i:{while(1){m=c+1|0;k=g+(m<<4)|0;j:{e=N[g+(c<<4)>>2];k:{if(e<=Q(0)){d=N[k>>2];if((c|0)==(f|0)|d>Q(0)){break k}break j}if((c|0)!=(f|0)){break j}d=N[k>>2];c=f}d=Q(Q(Q(0)-e)/Q(d-e));break i}k=(c|0)!=(f|0);c=m;if(k){continue}break}c=0;d=Q(0)}e=Q(d*d);j=Q(e*d);l=Q(j-e);c=g+(c<<4)|0;e=Q(N[c+16>>2]-N[c>>2]);h=Q(d*Q(d*Q(3)));i=Q(d*Q(d+d));d=Q(Q(l*Q(Q(e*N[c+28>>2])/N[c+24>>2]))+Q(Q(Q(Q(Q(d*Q(d*Q(-2)))*d)+h)*N[c+20>>2])+Q(Q(Q(Q(Q(i*d)-h)+Q(1))*N[c+4>>2])+Q(Q(d+Q(j-i))*Q(Q(N[c+12>>2]*e)/N[c+8>>2])))));k=0;e=Q(0);if((q|0)==1){break g}while(1){j=d;h=e;e=Q(e+Q(.015625));c=0;l:{while(1){m=c+1|0;q=g+(m<<4)|0;m:{i=N[g+(c<<4)>>2];n:{if(i<=e){d=N[q>>2];if((c|0)==(f|0)|e>2];c=f}d=Q(Q(e-i)/Q(d-i));break l}q=(c|0)!=(f|0);c=m;if(q){continue}break}c=0;d=Q(0)}c=g+(c<<4)|0;i=N[c+24>>2];l=N[c+28>>2];t=N[c+20>>2];C=N[c+4>>2];D=N[c+8>>2];E=N[c+12>>2];u=N[c>>2];F=N[c+16>>2];c=p+P(k,12)|0;N[c+4>>2]=j;N[c>>2]=h;h=Q(d*d);x=Q(h*d);G=Q(x-h);h=Q(F-u);u=Q(G*Q(Q(l*h)/i));i=Q(d*Q(d*Q(3)));l=Q(d*Q(d+d));d=Q(u+Q(Q(t*Q(Q(Q(d*Q(d*Q(-2)))*d)+i))+Q(Q(C*Q(Q(Q(l*d)-i)+Q(1)))+Q(Q(d+Q(x-l))*Q(Q(E*h)/D)))));N[c+8>>2]=Q(d-j)*Q(64);k=k+1|0;if((k|0)!=64){continue}break}break f}d=Q(N[g+4>>2]+Q(Q(Q(Q(0)-N[g>>2])*N[g+12>>2])/N[g+8>>2]));break g}Z(12664,55442,225,84789);B()}J[v+32>>2]=c;dj(3,96107,114239,v+32|0);break e}h=N[g+8>>2];i=N[g+12>>2];l=N[g>>2];t=N[g+4>>2];c=0;e=Q(0);while(1){f=p+P(c,12)|0;N[f+4>>2]=d;N[f>>2]=e;e=Q(e+Q(.015625));j=Q(t+Q(Q(Q(e-l)*i)/h));N[f+8>>2]=Q(j-d)*Q(64);d=j;c=c+1|0;if((c|0)!=64){continue}break}}N[p+768>>2]=N[s+12>>2]}o=o+1|0;if((w|0)!=(o|0)){continue}break}break d}break c}Z(12664,55442,270,84789);B()}f=n+3088|0;c=0;e=Q(0);while(1){m=f+P(c|1,12)|0;d=N[m+8>>2];j=N[m+4>>2];d=d>=Q(0)?Q(d+j):j;m=f+P(c,12)|0;j=N[m+8>>2];h=N[m+4>>2];j=j>=Q(0)?Q(j+h):h;e=ee?d:e;c=c+2|0;if((c|0)!=64){continue}break}N[n+18564>>2]=e;o=0;q=J[r+96>>2];if(q){w=n+11580|0;while(1){o:{p:{q:{if(M[r+96>>2]>o>>>0){c=J[r+92>>2]+P(o,12)|0;f=J[c>>2];if((f|0)>8){break q}s=w+P(f,772)|0;g=J[c+4>>2];p=J[c+8>>2];if((p|0)!=1){f=p-2|0;c=0;r:{while(1){m=c+1|0;k=g+(m<<4)|0;s:{e=N[g+(c<<4)>>2];t:{if(e<=Q(0)){d=N[k>>2];if((c|0)==(f|0)|d>Q(0)){break t}break s}if((c|0)!=(f|0)){break s}d=N[k>>2];c=f}d=Q(Q(Q(0)-e)/Q(d-e));break r}k=(c|0)!=(f|0);c=m;if(k){continue}break}c=0;d=Q(0)}e=Q(d*d);j=Q(e*d);l=Q(j-e);c=g+(c<<4)|0;e=Q(N[c+16>>2]-N[c>>2]);h=Q(d*Q(d*Q(3)));i=Q(d*Q(d+d));d=Q(Q(l*Q(Q(e*N[c+28>>2])/N[c+24>>2]))+Q(Q(Q(Q(Q(d*Q(d*Q(-2)))*d)+h)*N[c+20>>2])+Q(Q(Q(Q(Q(i*d)-h)+Q(1))*N[c+4>>2])+Q(Q(d+Q(j-i))*Q(Q(N[c+12>>2]*e)/N[c+8>>2])))));k=0;e=Q(0);if((p|0)==1){break p}while(1){j=d;h=e;e=Q(e+Q(.015625));c=0;u:{while(1){m=c+1|0;p=g+(m<<4)|0;v:{i=N[g+(c<<4)>>2];w:{if(i<=e){d=N[p>>2];if((c|0)==(f|0)|e>2];c=f}d=Q(Q(e-i)/Q(d-i));break u}p=(c|0)!=(f|0);c=m;if(p){continue}break}c=0;d=Q(0)}c=g+(c<<4)|0;i=N[c+24>>2];l=N[c+28>>2];t=N[c+20>>2];C=N[c+4>>2];D=N[c+8>>2];E=N[c+12>>2];u=N[c>>2];F=N[c+16>>2];c=s+P(k,12)|0;N[c+4>>2]=j;N[c>>2]=h;h=Q(d*d);x=Q(h*d);G=Q(x-h);h=Q(F-u);u=Q(G*Q(Q(l*h)/i));i=Q(d*Q(d*Q(3)));l=Q(d*Q(d+d));d=Q(u+Q(Q(t*Q(Q(Q(d*Q(d*Q(-2)))*d)+i))+Q(Q(C*Q(Q(Q(l*d)-i)+Q(1)))+Q(Q(d+Q(x-l))*Q(Q(E*h)/D)))));N[c+8>>2]=Q(d-j)*Q(64);k=k+1|0;if((k|0)!=64){continue}break}break o}d=Q(N[g+4>>2]+Q(Q(Q(Q(0)-N[g>>2])*N[g+12>>2])/N[g+8>>2]));break p}Z(12664,55442,233,84789);B()}J[v+16>>2]=f;dj(3,96107,114468,v+16|0);break o}h=N[g+8>>2];i=N[g+12>>2];l=N[g>>2];t=N[g+4>>2];c=0;e=Q(0);while(1){f=s+P(c,12)|0;N[f+4>>2]=d;N[f>>2]=e;e=Q(e+Q(.015625));j=Q(t+Q(Q(Q(e-l)*i)/h));N[f+8>>2]=Q(j-d)*Q(64);d=j;c=c+1|0;if((c|0)!=64){continue}break}}o=o+1|0;if((q|0)!=(o|0)){continue}break}}x:{if(!(H[n+18540|0]&1)){s=J[r+104>>2];K=n+18528|0;w=n+18532|0;lj(s,1544,K,n+18536|0,w);c=J[n+18528>>2];if(s>>>0<=(J[n+18536>>2]-c|0)/1544>>>0){f=P(s,1544);J[w>>2]=f+c;n=0;ij(c,0,f);if(!s){break x}y:{while(1){c=J[K>>2];if((J[w>>2]-c|0)/1544>>>0<=n>>>0){break y}if(M[r+104>>2]>n>>>0){I=J[r+100>>2]+(n<<6)|0;L=J[I+52>>2];if(L){O=c+P(n,1544)|0;o=0;while(1){z:{A:{B:{C:{if(M[I+52>>2]>o>>>0){p=J[I+48>>2]+(o<<4)|0;c=J[p>>2];if((c|0)>1){break C}q=P(c,772)+O|0;g=J[p+4>>2];y=J[p+8>>2];if((y|0)!=1){f=y-2|0;c=0;D:{while(1){m=c+1|0;k=g+(m<<4)|0;E:{e=N[g+(c<<4)>>2];F:{if(e<=Q(0)){d=N[k>>2];if((c|0)==(f|0)|d>Q(0)){break F}break E}if((c|0)!=(f|0)){break E}d=N[k>>2];c=f}d=Q(Q(Q(0)-e)/Q(d-e));break D}k=(c|0)!=(f|0);c=m;if(k){continue}break}c=0;d=Q(0)}e=Q(d*d);j=Q(e*d);l=Q(j-e);c=g+(c<<4)|0;e=Q(N[c+16>>2]-N[c>>2]);h=Q(d*Q(d*Q(3)));i=Q(d*Q(d+d));d=Q(Q(l*Q(Q(e*N[c+28>>2])/N[c+24>>2]))+Q(Q(Q(Q(Q(d*Q(d*Q(-2)))*d)+h)*N[c+20>>2])+Q(Q(Q(Q(Q(i*d)-h)+Q(1))*N[c+4>>2])+Q(Q(d+Q(j-i))*Q(Q(N[c+12>>2]*e)/N[c+8>>2])))));k=0;e=Q(0);if((y|0)==1){break B}while(1){j=d;h=e;e=Q(e+Q(.015625));c=0;G:{while(1){m=c+1|0;y=g+(m<<4)|0;H:{i=N[g+(c<<4)>>2];I:{if(i<=e){d=N[y>>2];if((c|0)==(f|0)|e>2];c=f}d=Q(Q(e-i)/Q(d-i));break G}y=(c|0)!=(f|0);c=m;if(y){continue}break}c=0;d=Q(0)}c=g+(c<<4)|0;i=N[c+24>>2];l=N[c+28>>2];t=N[c+20>>2];C=N[c+4>>2];D=N[c+8>>2];E=N[c+12>>2];u=N[c>>2];F=N[c+16>>2];c=q+P(k,12)|0;N[c+4>>2]=j;N[c>>2]=h;h=Q(d*d);x=Q(h*d);G=Q(x-h);h=Q(F-u);u=Q(G*Q(Q(l*h)/i));i=Q(d*Q(d*Q(3)));l=Q(d*Q(d+d));d=Q(u+Q(Q(t*Q(Q(Q(d*Q(d*Q(-2)))*d)+i))+Q(Q(C*Q(Q(Q(l*d)-i)+Q(1)))+Q(Q(d+Q(x-l))*Q(Q(E*h)/D)))));N[c+8>>2]=Q(d-j)*Q(64);k=k+1|0;if((k|0)!=64){continue}break}break A}d=Q(N[g+4>>2]+Q(Q(Q(Q(0)-N[g>>2])*N[g+12>>2])/N[g+8>>2]));break B}Z(12664,55442,161,84789);B()}J[v>>2]=c;dj(3,96107,114278,v);break z}h=N[g+8>>2];i=N[g+12>>2];l=N[g>>2];t=N[g+4>>2];c=0;e=Q(0);while(1){f=q+P(c,12)|0;N[f+4>>2]=d;N[f>>2]=e;e=Q(e+Q(.015625));j=Q(t+Q(Q(Q(e-l)*i)/h));N[f+8>>2]=Q(j-d)*Q(64);d=j;c=c+1|0;if((c|0)!=64){continue}break}}N[q+768>>2]=N[p+12>>2]}o=o+1|0;if((L|0)!=(o|0)){continue}break}}n=n+1|0;if((s|0)==(n|0)){break x}continue}break}Z(12664,55442,241,84789);B()}break c}break b}break a}z=z+1|0;if((A|0)!=(z|0)){continue}break}}Ui=v+48|0;return}break b}break a}Z(145396,53895,487,84789);B()}Z(144782,53895,514,59583);B()}Z(151729,53895,501,2284);B()}function Cra(a,b){a=a|0;b=Q(b);var c=0,d=0,e=0,f=Q(0),g=0,h=Q(0),i=0,j=0,k=0,l=Q(0),m=Q(0),n=Q(0),o=Q(0),p=Q(0),q=Q(0),r=Q(0),s=Q(0),t=Q(0),u=0,v=Q(0),w=Q(0),x=Q(0),y=Q(0),z=0,A=0,B=0,C=0;i=Ui-224|0;Ui=i;Xl(20349);e=J[a+204>>2];if((e|0)>0){while(1){d=J[J[a+212>>2]+(z<<2)>>2];J[d+240>>2]=1065353216;a:{b:{switch(J[d+216>>2]-2|0){case 0:case 3:break a;default:break b}}if(K[d+204|0]&3){break a}e=i+160|0;HE(d,b,e);f=N[d+248>>2];f=Q(f*f);c:{if(f==Q(0)){break c}h=Q(N[i+216>>2]-N[d+60>>2]);l=Q(h*h);h=Q(N[i+208>>2]-N[d+52>>2]);m=Q(h*h);h=Q(N[i+212>>2]-N[d+56>>2]);if(!(f>2]+4>>2]<=19){J[83472]=J[83472]+1;c=J[a+76>>2];c=Zi[J[J[c>>2]+36>>2]](c)|0;g=J[a+24>>2];J[i+68>>2]=1065353216;J[i+72>>2]=-65535;k=J[d+64>>2];J[i+84>>2]=J[d+60>>2];J[i+88>>2]=k;k=J[d+56>>2];J[i+76>>2]=J[d+52>>2];J[i+80>>2]=k;k=J[i+220>>2];J[i+100>>2]=J[i+216>>2];J[i+104>>2]=k;k=J[i+212>>2];J[i+92>>2]=J[i+208>>2];J[i+96>>2]=k;J[i+156>>2]=g;J[i+152>>2]=c;J[i+148>>2]=0;J[i+64>>2]=243948;J[i+140>>2]=0;J[i+144>>2]=d;f=N[d+244>>2];u=i+12|0;c=u;J[c+4>>2]=35;J[c+8>>2]=0;J[c>>2]=246356;J[c+44>>2]=1025758986;J[c+20>>2]=1065353216;J[c+24>>2]=0;J[c+12>>2]=1065353216;J[c+16>>2]=1065353216;J[c>>2]=246264;J[c>>2]=246688;N[i+56>>2]=f;N[i+40>>2]=f;J[i+16>>2]=8;c=J[d+188>>2];I[i+72>>1]=L[c+4>>1];I[i+74>>1]=L[c+6>>1];c=Ui-400|0;Ui=c;Xl(10040);g=J[d+16>>2];J[c+344>>2]=J[d+12>>2];J[c+348>>2]=g;g=J[d+8>>2];J[c+336>>2]=J[d+4>>2];J[c+340>>2]=g;g=J[d+32>>2];J[c+360>>2]=J[d+28>>2];J[c+364>>2]=g;g=J[d+24>>2];J[c+352>>2]=J[d+20>>2];J[c+356>>2]=g;g=J[d+48>>2];J[c+376>>2]=J[d+44>>2];J[c+380>>2]=g;g=J[d+40>>2];J[c+368>>2]=J[d+36>>2];J[c+372>>2]=g;g=J[d+64>>2];J[c+392>>2]=J[d+60>>2];J[c+396>>2]=g;g=J[d+56>>2];J[c+384>>2]=J[d+52>>2];J[c+388>>2]=g;g=J[e+12>>2];J[c+280>>2]=J[e+8>>2];J[c+284>>2]=g;g=J[e+4>>2];J[c+272>>2]=J[e>>2];J[c+276>>2]=g;g=J[e+28>>2];J[c+296>>2]=J[e+24>>2];J[c+300>>2]=g;g=J[e+20>>2];J[c+288>>2]=J[e+16>>2];J[c+292>>2]=g;g=J[e+44>>2];J[c+312>>2]=J[e+40>>2];J[c+316>>2]=g;g=J[e+36>>2];J[c+304>>2]=J[e+32>>2];J[c+308>>2]=g;g=J[e+60>>2];J[c+328>>2]=J[e+56>>2];J[c+332>>2]=g;g=J[e+52>>2];J[c+320>>2]=J[e+48>>2];J[c+324>>2]=g;k=c+336|0;A=c+12|0;g=c+256|0;Xy(k,c+272|0,A,g);J[c+236>>2]=0;f=N[c+256>>2];N[c+232>>2]=f*N[c+20>>2];N[c+228>>2]=f*N[c+16>>2];N[c+224>>2]=f*N[c+12>>2];J[c+216>>2]=0;J[c+220>>2]=0;J[c+208>>2]=0;J[c+212>>2]=0;J[c+68>>2]=0;J[c+72>>2]=0;J[c+60>>2]=0;J[c+64>>2]=0;Fv(k,g);J[c+56>>2]=0;J[c+40>>2]=0;J[c+24>>2]=0;h=N[c+268>>2];p=N[c+264>>2];f=N[c+256>>2];l=N[c+260>>2];o=Q(Q(2)/Q(Q(h*h)+Q(Q(p*p)+Q(Q(f*f)+Q(l*l)))));s=Q(p*o);r=Q(l*s);m=Q(f*o);n=Q(h*m);N[c+48>>2]=r+n;q=Q(f*s);o=Q(l*o);w=Q(h*o);N[c+44>>2]=q-w;N[c+36>>2]=r-n;r=Q(f*o);h=Q(h*s);N[c+28>>2]=r+h;N[c+20>>2]=q+w;N[c+16>>2]=r-h;f=Q(f*m);h=Q(l*o);N[c+52>>2]=Q(1)-Q(f+h);l=f;f=Q(p*s);N[c+32>>2]=Q(1)-Q(l+f);N[c+12>>2]=Q(1)-Q(h+f);k=c+240|0;Zi[J[J[u>>2]+8>>2]](u,A,g,k);f=N[c+232>>2];h=N[c+224>>2];l=N[c+228>>2];p=N[k>>2];o=N[k+4>>2];s=N[k+8>>2];r=N[g>>2];w=N[c+208>>2];m=N[g+4>>2];y=N[c+212>>2];n=N[g+8>>2];q=N[c+216>>2];t=Q(Zi[J[J[u>>2]+16>>2]](u));J[g+12>>2]=0;q=Q(q*Q(1));j=q>Q(0);N[g+8>>2]=j?n:Q(n+q);n=Q(y*Q(1));B=n>Q(0);N[g+4>>2]=B?m:Q(m+n);m=Q(w*Q(1));C=m>Q(0);N[g>>2]=C?r:Q(r+m);J[k+12>>2]=0;N[k+8>>2]=j?Q(s+q):s;N[k+4>>2]=B?Q(o+n):o;N[k>>2]=C?Q(p+m):p;f=Q(Q(t*Q(Y(Q(Q(f*f)+Q(Q(h*h)+Q(l*l))))))*Q(1));N[g>>2]=N[g>>2]-f;N[g+4>>2]=N[g+4>>2]-f;N[g+8>>2]=N[g+8>>2]-f;N[k>>2]=f+N[k>>2];N[k+4>>2]=f+N[k+4>>2];N[k+8>>2]=f+N[k+8>>2];J[c+12>>2]=244868;j=J[d+16>>2];J[c+56>>2]=J[d+12>>2];J[c+60>>2]=j;j=J[d+8>>2];J[c+48>>2]=J[d+4>>2];J[c+52>>2]=j;j=J[d+32>>2];J[c+72>>2]=J[d+28>>2];J[c+76>>2]=j;j=J[d+24>>2];J[c+64>>2]=J[d+20>>2];J[c+68>>2]=j;j=J[d+48>>2];J[c+88>>2]=J[d+44>>2];J[c+92>>2]=j;j=J[d+40>>2];J[c+80>>2]=J[d+36>>2];J[c+84>>2]=j;j=J[d+64>>2];J[c+104>>2]=J[d+60>>2];J[c+108>>2]=j;j=J[d+56>>2];J[c+96>>2]=J[d+52>>2];J[c+100>>2]=j;j=J[e+12>>2];J[c+120>>2]=J[e+8>>2];J[c+124>>2]=j;j=J[e+4>>2];J[c+112>>2]=J[e>>2];J[c+116>>2]=j;j=J[e+28>>2];J[c+136>>2]=J[e+24>>2];J[c+140>>2]=j;j=J[e+20>>2];J[c+128>>2]=J[e+16>>2];J[c+132>>2]=j;j=J[e+44>>2];J[c+152>>2]=J[e+40>>2];J[c+156>>2]=j;j=J[e+36>>2];J[c+144>>2]=J[e+32>>2];J[c+148>>2]=j;j=J[e+60>>2];J[c+168>>2]=J[e+56>>2];J[c+172>>2]=j;j=J[e+52>>2];J[c+160>>2]=J[e+48>>2];J[c+164>>2]=j;J[c+196>>2]=i- -64;N[c+200>>2]=0;J[c+204>>2]=u;J[c+192>>2]=a;f=Q(N[c+168>>2]-N[c+104>>2]);h=Q(N[c+160>>2]-N[c+96>>2]);l=Q(N[c+164>>2]-N[c+100>>2]);p=Q(Q(1)/Q(Y(Q(Q(f*f)+Q(Q(h*h)+Q(l*l))))));o=Q(f*p);m=Q(o*f);f=Q(h*p);n=Q(f*h);h=Q(l*p);N[c+44>>2]=m+Q(n+Q(l*h));l=o==Q(0)?Q(0xde0b6b000000000):Q(Q(1)/o);N[c+24>>2]=l;J[c+40>>2]=l>2]=h;J[c+36>>2]=h>2]=f;J[c+32>>2]=f>2];Zi[J[J[u>>2]+24>>2]](u,c+384|0,c+320|0,A,g,k);Wl();Ui=c+400|0;f=N[i+68>>2];if(f>2]=f;HE(d,Q(b*f),e);J[d+240>>2]=0}}Wl()}e=i+160|0;d:{if(K[d+204|0]&3){c=J[d+8>>2];J[d+68>>2]=J[d+4>>2];J[d+72>>2]=c;c=J[d+24>>2];J[d+84>>2]=J[d+20>>2];J[d+88>>2]=c;c=J[d+40>>2];J[d+100>>2]=J[d+36>>2];J[d+104>>2]=c;c=J[d+16>>2];J[d+76>>2]=J[d+12>>2];J[d+80>>2]=c;c=J[d+32>>2];J[d+92>>2]=J[d+28>>2];J[d+96>>2]=c;c=J[d+48>>2];J[d+108>>2]=J[d+44>>2];J[d+112>>2]=c;c=d+52|0;break d}c=J[e+4>>2];J[d+68>>2]=J[e>>2];J[d+72>>2]=c;c=J[e+12>>2];J[d+76>>2]=J[e+8>>2];J[d+80>>2]=c;c=J[e+20>>2];J[d+84>>2]=J[e+16>>2];J[d+88>>2]=c;c=J[e+28>>2];J[d+92>>2]=J[e+24>>2];J[d+96>>2]=c;c=J[e+36>>2];J[d+100>>2]=J[e+32>>2];J[d+104>>2]=c;c=J[e+44>>2];J[d+108>>2]=J[e+40>>2];J[d+112>>2]=c;c=e+48|0}g=J[c+4>>2];J[d+116>>2]=J[c>>2];J[d+120>>2]=g;g=J[c+8>>2];c=J[c+12>>2];k=J[d+332>>2];J[d+156>>2]=J[d+328>>2];J[d+160>>2]=k;k=J[d+324>>2];J[d+148>>2]=J[d+320>>2];J[d+152>>2]=k;J[d+124>>2]=g;J[d+128>>2]=c;c=J[d+308>>2];J[d+132>>2]=J[d+304>>2];J[d+136>>2]=c;c=J[d+316>>2];J[d+140>>2]=J[d+312>>2];J[d+144>>2]=c;c=J[e+12>>2];J[d+12>>2]=J[e+8>>2];J[d+16>>2]=c;c=J[e+4>>2];J[d+4>>2]=J[e>>2];J[d+8>>2]=c;c=J[e+28>>2];J[d+28>>2]=J[e+24>>2];J[d+32>>2]=c;c=J[e+20>>2];J[d+20>>2]=J[e+16>>2];J[d+24>>2]=c;c=J[e+44>>2];J[d+44>>2]=J[e+40>>2];J[d+48>>2]=c;c=J[e+36>>2];J[d+36>>2]=J[e+32>>2];J[d+40>>2]=c;c=J[e+60>>2];J[d+60>>2]=J[e+56>>2];J[d+64>>2]=c;c=J[e+52>>2];J[d+52>>2]=J[e+48>>2];J[d+56>>2]=c;f=N[d+12>>2];h=N[d+28>>2];l=N[d+44>>2];p=N[d+4>>2];o=N[d+8>>2];s=N[d+20>>2];r=N[d+24>>2];m=N[d+36>>2];q=N[d+388>>2];n=N[d+40>>2];w=N[d+392>>2];y=N[d+396>>2];J[d+300>>2]=0;J[d+284>>2]=0;J[d+268>>2]=0;t=Q(y*l);v=Q(q*m);x=Q(w*n);N[d+296>>2]=Q(l*t)+Q(Q(m*v)+Q(n*x));N[d+292>>2]=Q(h*t)+Q(Q(s*v)+Q(r*x));N[d+288>>2]=Q(f*t)+Q(Q(p*v)+Q(o*x));t=Q(y*h);v=Q(q*s);x=Q(w*r);N[d+280>>2]=Q(l*t)+Q(Q(m*v)+Q(n*x));N[d+276>>2]=Q(h*t)+Q(Q(s*v)+Q(r*x));N[d+272>>2]=Q(f*t)+Q(Q(p*v)+Q(o*x));t=l;l=Q(f*y);v=m;m=Q(p*q);q=n;n=Q(o*w);N[d+264>>2]=Q(t*l)+Q(Q(v*m)+Q(q*n));N[d+260>>2]=Q(h*l)+Q(Q(s*m)+Q(n*r));N[d+256>>2]=Q(f*l)+Q(Q(p*m)+Q(o*n));e=J[a+204>>2]}z=z+1|0;if((z|0)<(e|0)){continue}break}}Wl();Ui=i+224|0}function rra(a,b){a=a|0;b=b|0;var c=0,d=0,e=0,f=0,g=0,h=0,i=0,j=0,k=0,l=0,m=0,n=0,o=0,p=0,q=0,r=0,s=0,t=0,u=0,v=0,w=0,x=0,y=0,z=0;g=Ui-112|0;Ui=g;Xl(17974);J[g+100>>2]=0;J[g+104>>2]=0;H[g+108|0]=1;k=J[a+184>>2];a:{if((k|0)<=0){break a}m=Yj(k<<2);J[g+104>>2]=m;H[g+108|0]=1;J[g+100>>2]=k;if(k>>>0>=8){e=k&2147483640;while(1){h=(j<<2)+m|0;J[h>>2]=0;J[h+4>>2]=0;J[h+8>>2]=0;J[h+12>>2]=0;J[h+16>>2]=0;J[h+20>>2]=0;J[h+24>>2]=0;J[h+28>>2]=0;j=j+8|0;c=c+8|0;if((e|0)!=(c|0)){continue}break}}c=k&7;if(!c){break a}while(1){J[(j<<2)+m>>2]=0;j=j+1|0;f=f+1|0;if((c|0)!=(f|0)){continue}break}}J[g+96>>2]=k;if((Zi[J[J[a>>2]+96>>2]](a)|0)>0){j=0;while(1){c=j<<2;J[c+m>>2]=J[c+J[a+192>>2]>>2];j=j+1|0;if((Zi[J[J[a>>2]+96>>2]](a)|0)>(j|0)){continue}break}}if((k|0)>=2){WF(g+92|0,0,k-1|0)}h=Zi[J[J[a>>2]+96>>2]](a)|0;e=J[g+104>>2];m=J[a+172>>2];f=J[a+80>>2];c=J[a+72>>2];k=J[a+24>>2];H[g+48|0]=1;J[g+28>>2]=k;J[g+24>>2]=c;J[g+20>>2]=f;J[g+16>>2]=J[g+96>>2];J[g+12>>2]=h?e:0;J[g+8>>2]=m;J[g+4>>2]=b;J[g>>2]=243928;J[g+44>>2]=0;H[g+68|0]=1;J[g+36>>2]=0;J[g+40>>2]=0;J[g+64>>2]=0;H[g+88|0]=1;J[g+56>>2]=0;J[g+60>>2]=0;J[g+84>>2]=0;J[g+76>>2]=0;J[g+80>>2]=0;x=m,y=J[a+8>>2],z=Zi[J[J[k>>2]+36>>2]](k)|0,w=J[J[m>>2]+8>>2],Zi[w](x|0,y|0,z|0);m=0;d=J[a+176>>2];s=J[a+24>>2];k=a;Xl(10285);a=J[d+28>>2];b:{if((a|0)>=0){break b}if(J[d+32>>2]<0){c=J[d+36>>2];if(!(c?!c|K[d+40|0]!=1:1)){J[83765]=J[83765]+1;Zi[J[61751]](J[c-4>>2])}H[d+40|0]=1;J[d+32>>2]=0;J[d+36>>2]=0}f=a;c=0-a&3;if(c){while(1){J[J[d+36>>2]+(f<<2)>>2]=0;f=f+1|0;i=i+1|0;if((c|0)!=(i|0)){continue}break}}if(a>>>0>4294967292){break b}while(1){a=f<<2;J[a+J[d+36>>2]>>2]=0;J[(a+J[d+36>>2]|0)+4>>2]=0;J[(a+J[d+36>>2]|0)+8>>2]=0;J[(a+J[d+36>>2]|0)+12>>2]=0;f=f+4|0;if(f){continue}break}}J[d+28>>2]=0;a=0;h=d+4|0;n=J[h+4>>2];c:{if((n|0)<=0){break c}o=J[h+12>>2];while(1){c=a;e=o+(a<<3)|0;i=e;f=J[e>>2];if((f|0)!=(a|0)){while(1){c=J[o+(f<<3)>>2];J[i>>2]=c;i=o+(c<<3)|0;f=J[i>>2];if((f|0)!=(c|0)){continue}break}}J[e>>2]=c;a=a+1|0;if((n|0)!=(a|0)){continue}break}if((n|0)==1){break c}YF(h,0,n-1|0)}u=J[d+8>>2];if((u|0)>0){c=0;while(1){a=c;f=a+1|0;e=(f|0)<(u|0)?u:f;h=e-1|0;t=J[d+16>>2];l=J[t+(a<<3)>>2];while(1){d:{f=c;if((c|0)==(h|0)){f=h;c=e;break d}c=f+1|0;if((l|0)==J[t+(c<<3)>>2]){continue}}break}r=(a|0)>(f|0);e:{if(r){break e}j=1;e=(f-a|0)+1|0;n=e&1;p=J[k+16>>2];i=a;if((a|0)!=(f|0)){o=e&-2;q=0;while(1){h=t+(i<<3)|0;e=J[p+(J[h+4>>2]<<2)>>2];if((l|0)==J[e+208>>2]){e=J[e+216>>2];j=(e|0)!=4&(e|0)!=1&j}e=J[p+(J[h+12>>2]<<2)>>2];if((l|0)==J[e+208>>2]){e=J[e+216>>2];j=(e|0)!=4&(e|0)!=1&j}i=i+2|0;q=q+2|0;if((o|0)!=(q|0)){continue}break}}f:{if(!n){break f}e=J[p+(J[(t+(i<<3)|0)+4>>2]<<2)>>2];if((l|0)!=J[e+208>>2]){break f}e=J[e+216>>2];j=(e|0)!=4&(e|0)!=1&j}if(j&1){if(r){break e}while(1){e=J[J[k+16>>2]+(J[(J[d+16>>2]+(a<<3)|0)+4>>2]<<2)>>2];if((l|0)==J[e+208>>2]&(J[e+216>>2]&-2)!=4){J[e+216>>2]=2}e=(a|0)==(f|0);a=a+1|0;if(!e){continue}break}break e}while(1){e=a;h=J[J[k+16>>2]+(J[(J[d+16>>2]+(a<<3)|0)+4>>2]<<2)>>2];g:{if((l|0)!=J[h+208>>2]){break g}a=J[h+216>>2];if((a|0)!=2){break g}if((a&-2)!=4){J[h+216>>2]=3}J[h+220>>2]=0}a=e+1|0;if((f|0)!=(e|0)){continue}break}}if((c|0)<(u|0)){continue}break}}o=Zi[J[J[s>>2]+36>>2]](s)|0;if((o|0)>0){i=0;while(1){n=Zi[J[J[s>>2]+40>>2]](s,i)|0;c=J[n+1112>>2];a=J[n+1108>>2];h:{if(!(J[a+216>>2]!=2?a:0)&(!c|J[c+216>>2]==2)){break h}if(!(!(K[a+204|0]&2)|J[a+216>>2]==2)){Gr(c,0)}if(!(!(K[c+204|0]&2)|J[c+216>>2]==2)){Gr(a,0)}if(K[d+64|0]!=1){break h}if(!(Zi[J[J[s>>2]+28>>2]](s,a,c)|0)){break h}c=J[d+28>>2];i:{if((c|0)!=J[d+32>>2]){break i}r=c?c<<1:1;if((r|0)<=(c|0)){break i}j:{if(!r){a=0;break j}a=Yj(r<<2);c=J[d+28>>2]}k:{if((c|0)<=0){break k}j=0;f=0;if(c>>>0>=4){h=c&2147483644;q=0;while(1){p=f<<2;J[p+a>>2]=J[p+J[d+36>>2]>>2];e=p|4;J[e+a>>2]=J[e+J[d+36>>2]>>2];e=p|8;J[e+a>>2]=J[e+J[d+36>>2]>>2];e=p|12;J[e+a>>2]=J[e+J[d+36>>2]>>2];f=f+4|0;q=q+4|0;if((h|0)!=(q|0)){continue}break}}h=c&3;if(!h){break k}while(1){e=f<<2;J[e+a>>2]=J[e+J[d+36>>2]>>2];f=f+1|0;j=j+1|0;if((h|0)!=(j|0)){continue}break}}f=J[d+36>>2];if(!(!f|K[d+40|0]!=1)){if(f){J[83765]=J[83765]+1;Zi[J[61751]](J[f-4>>2])}c=J[d+28>>2]}J[d+36>>2]=a;H[d+40|0]=1;J[d+32>>2]=r}J[J[d+36>>2]+(c<<2)>>2]=n;J[d+28>>2]=c+1}i=i+1|0;if((o|0)!=(i|0)){continue}break}}Wl();p=J[d+8>>2];Xl(25436);l:{if(!K[d+64|0]){c=Zi[J[J[s>>2]+44>>2]](s)|0;a=Zi[J[J[s>>2]+36>>2]](s)|0;Zi[J[J[g>>2]+8>>2]](g,J[k+16>>2],J[k+8>>2],c,a,-1);break l}q=J[d+28>>2];if((q|0)>=2){XF(d+24|0,0,q-1|0)}if((p|0)>0){a=1;while(1){u=J[J[d+16>>2]+(v<<3)>>2];r=0;while(1){c=J[d+16>>2]+(v<<3)|0;if((u|0)==J[c>>2]){o=J[J[k+16>>2]+(J[c+4>>2]<<2)>>2];i=J[d+48>>2];m:{if((i|0)!=J[d+52>>2]){break m}n=i?i<<1:1;if((n|0)<=(i|0)){break m}n:{if(!n){l=0;break n}l=Yj(n<<2);i=J[d+48>>2]}o:{if((i|0)<=0){break o}f=0;c=0;if(i>>>0>=4){h=i&2147483644;j=0;while(1){t=c<<2;J[t+l>>2]=J[t+J[d+56>>2]>>2];e=t|4;J[e+l>>2]=J[e+J[d+56>>2]>>2];e=t|8;J[e+l>>2]=J[e+J[d+56>>2]>>2];e=t|12;J[e+l>>2]=J[e+J[d+56>>2]>>2];c=c+4|0;j=j+4|0;if((h|0)!=(j|0)){continue}break}}h=i&3;if(!h){break o}while(1){e=c<<2;J[e+l>>2]=J[e+J[d+56>>2]>>2];c=c+1|0;f=f+1|0;if((h|0)!=(f|0)){continue}break}}c=J[d+56>>2];if(!(!c|K[d+60|0]!=1)){if(c){J[83765]=J[83765]+1;Zi[J[61751]](J[c-4>>2])}i=J[d+48>>2]}J[d+56>>2]=l;H[d+60|0]=1;J[d+52>>2]=n}J[J[d+56>>2]+(i<<2)>>2]=o;J[d+48>>2]=i+1;c=J[o+216>>2];r=(c|0)==2|(c|0)==5|r;v=v+1|0;if((p|0)>(v|0)){continue}}break}i=0;h=0;p:{if((m|0)>=(q|0)){break p}o=J[d+36>>2];e=o+(m<<2)|0;f=J[e>>2];c=J[J[f+1108>>2]+208>>2];if((c|0)<0){c=J[J[f+1112>>2]+208>>2]}h=0;if((c|0)!=(u|0)){break p}a=m+1|0;f=(a|0)<(q|0)?q:a;i=f-1|0;a=m;while(1){q:{if((a|0)==(i|0)){a=f;break q}a=a+1|0;h=J[o+(a<<2)>>2];c=J[J[h+1108>>2]+208>>2];if((c|0)<0){c=J[J[h+1112>>2]+208>>2]}if((c|0)==(u|0)){continue}}break}i=a-m|0;h=e}f=J[d+48>>2];if(!(r&1)){Zi[J[J[g>>2]+8>>2]](g,J[d+56>>2],f,h,i,u);f=J[d+48>>2]}r:{if((f|0)>=0){break r}if(J[d+52>>2]<0){c=J[d+56>>2];if(!(c?!c|K[d+60|0]!=1:1)){J[83765]=J[83765]+1;Zi[J[61751]](J[c-4>>2])}H[d+60|0]=1;J[d+52>>2]=0;J[d+56>>2]=0}l=0;c=f;e=0-c&3;if(e){while(1){J[J[d+56>>2]+(c<<2)>>2]=0;c=c+1|0;l=l+1|0;if((e|0)!=(l|0)){continue}break}}if(f>>>0>4294967292){break r}while(1){f=c<<2;J[f+J[d+56>>2]>>2]=0;J[(f+J[d+56>>2]|0)+4>>2]=0;J[(f+J[d+56>>2]|0)+8>>2]=0;J[(f+J[d+56>>2]|0)+12>>2]=0;c=c+4|0;if(c){continue}break}}m=i?a:m;J[d+48>>2]=0;if((p|0)>(v|0)){continue}break}}}Wl();qT(g);a=J[k+172>>2];Zi[J[J[a>>2]+16>>2]](a,b,J[k+80>>2],J[k+72>>2]);J[g>>2]=243928;a=J[g+84>>2];if(!(a?!a|K[g+88|0]!=1:1)){J[83765]=J[83765]+1;Zi[J[61751]](J[a-4>>2])}J[g+84>>2]=0;H[g+88|0]=1;J[g+76>>2]=0;J[g+80>>2]=0;a=J[g+64>>2];if(!(a?!a|K[g+68|0]!=1:1)){J[83765]=J[83765]+1;Zi[J[61751]](J[a-4>>2])}J[g+64>>2]=0;H[g+68|0]=1;J[g+56>>2]=0;J[g+60>>2]=0;a=J[g+44>>2];if(!(a?!a|K[g+48|0]!=1:1)){J[83765]=J[83765]+1;Zi[J[61751]](J[a-4>>2])}a=J[g+104>>2];if(!(a?!a|K[g+108|0]!=1:1)){J[83765]=J[83765]+1;Zi[J[61751]](J[a-4>>2])}Wl();Ui=g+112|0}function Q4(a,b,c,d,e,f){a=a|0;b=b|0;c=c|0;d=d|0;e=e|0;f=f|0;var g=0,h=0,i=0,j=0,k=0,l=0,m=0,n=0,o=0,p=0,q=0,r=0,s=0;i=Ui-3152|0;Ui=i;a:{b:{h=J[a+16>>2];c:{if(!h){break c}h=J[J[a+12>>2]+(mxa(b,c,h)<<2)>>2];if((h|0)==-1){break c}k=J[J[J[a>>2]+8>>2]>>2];g=J[a+20>>2];while(1){o=g+P(h,24)|0;h=o;if(J[h>>2]==(b|0)&(c|0)==J[h+4>>2]){break b}h=J[h+16>>2];if((h|0)!=-1){continue}break}}J[i>>2]=d;dj(4,96538,153129,i);h=-2;break a}c=J[o+8>>2];b=J[c+4>>2];h=J[(k<<2)+159120>>2]>>>3|0;c=J[c>>2];Os(c,b,i+592|0,b<<1|1);d=f-16|0;J[i+584>>2]=d;J[i+588>>2]=e;e=e+16|0;J[i+580>>2]=e;f=d;d=i- -64|0;$B(k,e,f,d);d:{if(J[a>>2]){if(!XB(d,h,c,b)){break d}h=-5}else{h=-4}J[i+20>>2]=h;J[i+16>>2]=c;dj(4,96538,80346,i+16|0);break a}d=a+44|0;b=i+2128|0;Ks(d,b);vx(d,i+1104|0);e:{if(_k(b)){break e}b=ol(b,135346);if(!b){dj(4,96538,66577,0);break e}vk(b)}b=i+1104|0;f:{if(_k(b)){break f}b=ol(b,135346);if(!b){dj(4,96538,66577,0);break f}vk(b)}c=J[a>>2];b=J[c>>2];if(!b){e=J[a+4>>2];b=nj(24);J[b>>2]=0;J[b+4>>2]=0;J[b+16>>2]=0;J[b+20>>2]=0;J[b+8>>2]=0;J[b+12>>2]=0;J[c>>2]=b;f=DK(nj(48));b=J[c>>2];J[b+4>>2]=f;J[b+8>>2]=ij(nj(1048),0,1048);H[b+20|0]=K[b+20|0]|1;b=J[J[c>>2]+4>>2];c=J[J[e>>2]+4>>2];J[b>>2]=J[c>>2];J[b+28>>2]=J[c+28>>2];e=J[c+44>>2];J[b+40>>2]=J[c+40>>2];J[b+44>>2]=e;e=J[c+36>>2];J[b+32>>2]=J[c+32>>2];J[b+36>>2]=e;b=J[J[a>>2]>>2]}b=J[b+8>>2];if(!J[b+1032>>2]){c=i+2128|0;vx(d,c);c=ol(c,135346);if(!c){dj(4,96538,66619,0)}ek(b,i+2128|0,1024);J[i+48>>2]=b;dj(2,96538,29343,i+48|0);J[b+1036>>2]=0;J[b+1040>>2]=0;J[b+1032>>2]=c;H[b+1044|0]=0}q=i+2128|0;Ks(d,q);zl(q,43198,1024);e=J[J[a>>2]>>2];j=i- -64|0;l=h<<1;k=i+580|0;s=i+1104|0;h=Ui-32|0;Ui=h;J[h+28>>2]=-1;d=J[e+4>>2];b=J[d+24>>2];b=b<<24|(b&65280)<<8|(b>>>8&65280|b>>>24);c=H[e+20|0]&1?b+d|0:J[J[e+8>>2]+1024>>2];b=J[d+16>>2];b=b<<24|(b&65280)<<8|(b>>>8&65280|b>>>24);p=c+(b<<6)|0;d=J[d+28>>2];g=d<<24|(d&65280)<<8|(d>>>8&65280|d>>>24);f=c;if(b){d=b;while(1){m=d>>>1|0;r=(m<<6)+f|0;n=(Wj(j,r,g)|0)>=0;f=n?r- -64|0:f;d=n?(m^-1)+d|0:m;if(d){continue}break}}g:{if(f>>>0

>>0){d=-5;if(!Wj(f,j,g)){break g}b=f-c>>>6|0}J[h+28>>2]=b;d=0}h:{if(d){J[h+16>>2]=d;dj(4,96538,79041,h+16|0);break h}J[h+24>>2]=0;b=J[e+4>>2];c=J[b+16>>2];f=c<<24|(c&65280)<<8|(c>>>8&65280|c>>>24);m=f<<6;n=f<<4;c=nj((m+n|0)+128|0);J[h+24>>2]=c;p=c+48|0;i:{if(!(H[e+20|0]&1)){d=K[b+4|0]|K[b+5|0]<<8|(K[b+6|0]<<16|K[b+7|0]<<24);g=K[b|0]|K[b+1|0]<<8|(K[b+2|0]<<16|K[b+3|0]<<24);H[c|0]=g;H[c+1|0]=g>>>8;H[c+2|0]=g>>>16;H[c+3|0]=g>>>24;H[c+4|0]=d;H[c+5|0]=d>>>8;H[c+6|0]=d>>>16;H[c+7|0]=d>>>24;d=K[b+44|0]|K[b+45|0]<<8|(K[b+46|0]<<16|K[b+47|0]<<24);g=K[b+40|0]|K[b+41|0]<<8|(K[b+42|0]<<16|K[b+43|0]<<24);H[c+40|0]=g;H[c+41|0]=g>>>8;H[c+42|0]=g>>>16;H[c+43|0]=g>>>24;H[c+44|0]=d;H[c+45|0]=d>>>8;H[c+46|0]=d>>>16;H[c+47|0]=d>>>24;d=K[b+36|0]|K[b+37|0]<<8|(K[b+38|0]<<16|K[b+39|0]<<24);g=K[b+32|0]|K[b+33|0]<<8|(K[b+34|0]<<16|K[b+35|0]<<24);H[c+32|0]=g;H[c+33|0]=g>>>8;H[c+34|0]=g>>>16;H[c+35|0]=g>>>24;H[c+36|0]=d;H[c+37|0]=d>>>8;H[c+38|0]=d>>>16;H[c+39|0]=d>>>24;d=K[b+28|0]|K[b+29|0]<<8|(K[b+30|0]<<16|K[b+31|0]<<24);g=K[b+24|0]|K[b+25|0]<<8|(K[b+26|0]<<16|K[b+27|0]<<24);H[c+24|0]=g;H[c+25|0]=g>>>8;H[c+26|0]=g>>>16;H[c+27|0]=g>>>24;H[c+28|0]=d;H[c+29|0]=d>>>8;H[c+30|0]=d>>>16;H[c+31|0]=d>>>24;d=K[b+20|0]|K[b+21|0]<<8|(K[b+22|0]<<16|K[b+23|0]<<24);g=K[b+16|0]|K[b+17|0]<<8|(K[b+18|0]<<16|K[b+19|0]<<24);H[c+16|0]=g;H[c+17|0]=g>>>8;H[c+18|0]=g>>>16;H[c+19|0]=g>>>24;H[c+20|0]=d;H[c+21|0]=d>>>8;H[c+22|0]=d>>>16;H[c+23|0]=d>>>24;d=K[b+12|0]|K[b+13|0]<<8|(K[b+14|0]<<16|K[b+15|0]<<24);b=K[b+8|0]|K[b+9|0]<<8|(K[b+10|0]<<16|K[b+11|0]<<24);H[c+8|0]=b;H[c+9|0]=b>>>8;H[c+10|0]=b>>>16;H[c+11|0]=b>>>24;H[c+12|0]=d;H[c+13|0]=d>>>8;H[c+14|0]=d>>>16;H[c+15|0]=d>>>24;hj(hj(p,J[J[e+8>>2]+1024>>2],m)+(f+1<<6)|0,J[J[e+8>>2]+1028>>2],n);break i}d=J[b+4>>2];J[c>>2]=J[b>>2];J[c+4>>2]=d;d=J[b+44>>2];J[c+40>>2]=J[b+40>>2];J[c+44>>2]=d;d=J[b+36>>2];J[c+32>>2]=J[b+32>>2];J[c+36>>2]=d;d=J[b+28>>2];J[c+24>>2]=J[b+24>>2];J[c+28>>2]=d;d=J[b+20>>2];J[c+16>>2]=J[b+16>>2];J[c+20>>2]=d;d=J[b+12>>2];J[c+8>>2]=J[b+8>>2];J[c+12>>2]=d;c=J[b+24>>2];d=hj(p,b+(c<<24|(c&65280)<<8|(c>>>8&65280|c>>>24))|0,m)+(f+1<<6)|0;c=J[b+20>>2];hj(d,b+(c<<24|(c&65280)<<8|(c>>>8&65280|c>>>24))|0,n)}c=J[h+24>>2];b=J[c+20>>2];b=(b<<24|(b&65280)<<8|(b>>>8&65280|b>>>24))- -64|0;J[c+20>>2]=b<<24|(b&65280)<<8|(b>>>8&65280|b>>>24);g=J[h+24>>2];d=g;b=J[h+28>>2];f=Ui-32|0;Ui=f;J[f+28>>2]=e;j:{k:{if((b|0)>=0){d=d?d:J[e+4>>2];c=J[d+24>>2];c=(d+(b<<6)|0)+(c<<24|(c&65280)<<8|(c>>>8&65280|c>>>24))|0;e=J[d+20>>2];m=(e<<24|(e&65280)<<8|(e>>>8&65280|e>>>24))+d|0;e=J[d+16>>2];e=e<<24|(e&65280)<<8|(e>>>8&65280|e>>>24);l:{if(e>>>0<=b>>>0){hj(c,j,l);e=m+(b<<4)|0;break l}n=e-b|0;el(c- -64|0,c,n<<6);hj(c,j,l);e=m+(b<<4)|0;el(e+16|0,e,n<<4)}m:{if(!k){k=J[2];j=J[1];l=J[0];c=J[3];break m}J[f+24>>2]=0;J[f+20>>2]=0;n=J[k>>2];m=J[k+4>>2];c=Ui-16|0;Ui=c;n:{o:{j=J[J[f+28>>2]+8>>2];l=J[j+1032>>2];if(l){um(l,0,2);p=wo(l);b=-2;p:{if((yl(n,1,m,l)|0)!=(m|0)){break p}J[f+24>>2]=m;J[f+20>>2]=p;$n(l);b=0;if(K[j+1044|0]!=1){break p}J[c+12>>2]=J[j+1036>>2];if(J[j+1040>>2]!=J[f+20>>2]){break o}J[c+12>>2]=0;J[c+8>>2]=0;J[j+1036>>2]=J[c+12>>2];J[j+1040>>2]=J[f+24>>2]+J[f+20>>2];if(J[c+8>>2]==(J[f+24>>2]+J[f+20>>2]|0)){break p}Z(58818,41229,430,60738);B()}Ui=c+16|0;break n}Z(113970,41229,399,60738);B()}Z(15012,41229,417,60738);B()}if(b){break k}b=J[f+20>>2];l=b<<24|(b&65280)<<8|(b>>>8&65280|b>>>24);b=J[k+8>>2];c=K[b+4|0];q:{if(c&2){j=J[b>>2];b=J[k+4>>2];break q}b=J[k+4>>2];j=b<<24|(b&65280)<<8|(b>>>8&65280|b>>>24);b=-1}k=b<<24|(b&65280)<<8|(b>>>8&65280|b>>>24);b=c|4;c=b<<24|(b&65280)<<8|(b>>>8&65280|b>>>24)}b=e;H[b+12|0]=c;H[b+13|0]=c>>>8;H[b+14|0]=c>>>16;H[b+15|0]=c>>>24;H[b+8|0]=k;H[b+9|0]=k>>>8;H[b+10|0]=k>>>16;H[b+11|0]=k>>>24;H[b+4|0]=j;H[b+5|0]=j>>>8;H[b+6|0]=j>>>16;H[b+7|0]=j>>>24;H[b|0]=l;H[b+1|0]=l>>>8;H[b+2|0]=l>>>16;H[b+3|0]=l>>>24;b=J[d+16>>2];b=(b<<24|(b&65280)<<8|(b>>>8&65280|b>>>24))+1|0;J[d+16>>2]=b<<24|(b&65280)<<8|(b>>>8&65280|b>>>24);d=0;break j}Z(112544,41229,440,10327);B()}b=J[k+4>>2];J[f>>2]=J[f+24>>2];J[f+4>>2]=b;dj(4,96538,8944,f);cj(d);d=-2}Ui=f+32|0;if(d){if(g){cj(g)}J[h>>2]=d;dj(4,96538,52460,h);break h}b=Ui-32|0;Ui=b;c=ol(q,82669);r:{if(!c){J[b>>2]=q;dj(4,96538,29676,b);d=-2;break r}d=J[g+16>>2];d=d<<24|(d&65280)<<8|(d>>>8&65280|d>>>24);d=((d<<4)+(d<<6)|0)+48|0;if((yl(g,1,d,c)|0)!=(d|0)){vk(c);J[b+20>>2]=q;J[b+16>>2]=d;dj(4,96538,29622,b+16|0);d=-2;break r}$n(c);vk(c);d=0}Ui=b+32|0;if(d){if(!g){break h}cj(g);break h}J[s>>2]=g;d=0}Ui=h+32|0;if(!d){c=J[i+1104>>2];b=J[J[a>>2]>>2];e=K[b+20|0];s:{if(e&1){break s}f=J[b+4>>2];if(!f){break s}cj(f);e=K[b+20|0]}J[b+4>>2]=c;H[b+20|0]=e&254|1;J[a+8>>2]=J[J[a>>2]>>2]}t:{if(J[o+12>>2]){break t}b=J[a+8>>2];a=J[o+8>>2];if(!TB(b,J[a>>2],J[a+4>>2],o+12|0)){break t}J[i+32>>2]=J[J[o+8>>2]+8>>2];dj(4,96538,60336,i+32|0)}h=d?-3:0}Ui=i+3152|0;return h|0}function Qja(a,b){a=a|0;b=b|0;var c=0,d=0,e=0,f=0,g=0,h=0,i=0,j=0,k=0,l=Q(0),m=0,n=0,o=0,p=0,q=0,r=0,s=Q(0),t=Q(0),u=0,v=0,w=Q(0),x=0;b=Ui-32|0;Ui=b;J[b+28>>2]=0;u=J[a+8>>2];xB(J[u+464>>2],N[J[a+4>>2]+4>>2]);l=N[J[a+4>>2]+4>>2];N[u+460>>2]=l;nM(J[u+96>>2],l);d=J[u+36>>2];c=J[u+32>>2];i=d-c>>2;J[218940]=i+J[218940];J[b+16>>2]=i;J[b+20>>2]=0;J[b+8>>2]=i;J[b+12>>2]=0;a:{if((c|0)!=(d|0)){x=i>>>0<=1?1:i;while(1){c=J[u+32>>2];if(J[u+36>>2]-c>>2>>>0<=v>>>0){break a}c=J[c+(v<<2)>>2];if((K[c+22|0]&3)==3){b:{e=J[c+8>>2];f=0;i=Ui-112|0;Ui=i;N[i+108>>2]=N[J[a+4>>2]+4>>2];tr(e,2,-2,i+108|0);c:{k=J[e+32>>2];c=J[e+36>>2];if(!(!K[269788]|(k|0)==(c|0))){c=(c-k|0)/672|0;g=c>>>0<=1?1:c;while(1){p=k+P(f,672)|0;d:{if(H[p+668|0]&1|J[p+504>>2]!=2){break d}d=J[p+540>>2];n=d;c=J[p+536>>2];if(!(d|c)){break d}d=p+508|0;e:{q=J[e+416>>2];f:{if(!q){dj(4,93318,115801,0);break f}o=K[p+516|0];m=L[p+514>>1];r=L[p+512>>1];h=J[p+508>>2];if(!(Zi[q|0](J[p+496>>2],J[p+500>>2],c,n,d)|0)){break e}}J[d>>2]=0;J[d+4>>2]=0;J[d+16>>2]=0;J[d+20>>2]=0;J[d+8>>2]=0;J[d+12>>2]=0;h=L[p+650>>1];d=J[e+32>>2];if(h>>>0>=(J[e+36>>2]-d|0)/672>>>0){break a}j=L[p+648>>1];if((j|0)!=L[(d+P(h,672)|0)+648>>1]){break c}d=J[e+52>>2];m=J[e+48>>2];g:{if((d|0)==(m|0)){break g}r=p+544|0;h=h|j<<16;d=(d-m|0)/72|0;j=d>>>0<=1?1:d;d=0;while(1){o=m+P(d,72)|0;if(!((h|0)==J[o>>2]&(r|0)==J[o+4>>2])){d=d+1|0;if((j|0)!=(d|0)){continue}break g}break}H[o+68|0]=K[o+68|0]|4}J[i+48>>2]=tj(c,n);dj(3,93318,134428,i+48|0);break d}d=J[d>>2];c=d^h;if(!(c&67108863|(r|0)!=L[p+512>>1]|(c&1006632960|(m|0)!=L[p+514>>1]))){if((o|0)==K[p+516|0]){break d}}J[p+544>>2]=0;r=p+544|0;o=L[p+650>>1];h=L[p+648>>1];m=o|h<<16;j=J[e+32>>2];c=(J[e+36>>2]-j|0)/672|0;if((d&1006632960)==402653184){if(c>>>0<=o>>>0){break a}if((h|0)!=L[(j+P(o,672)|0)+648>>1]){break c}c=J[e+52>>2];j=J[e+48>>2];if((c|0)==(j|0)){break d}c=(c-j|0)/72|0;c=c>>>0<=1?1:c;d=0;while(1){h=j+P(d,72)|0;if(!((m|0)==J[h>>2]&(r|0)==J[h+4>>2])){d=d+1|0;if((c|0)!=(d|0)){continue}break d}break}H[h+68|0]=K[h+68|0]|4;break d}if(c>>>0<=o>>>0){break a}if((h|0)!=L[(j+P(o,672)|0)+648>>1]){break c}h:{c=J[e+52>>2];j=J[e+48>>2];if((c|0)==(j|0)){break h}c=(c-j|0)/72|0;c=c>>>0<=1?1:c;d=0;while(1){h=j+P(d,72)|0;if(!((m|0)==J[h>>2]&(r|0)==J[h+4>>2])){d=d+1|0;if((c|0)!=(d|0)){continue}break h}break}if(K[h+68|0]&4){break h}rD(e,m,Q(0),Q(1),J[h+56>>2],J[h+60>>2],J[h+64>>2]);break d}rD(e,m,Q(0),Q(1),0,0,0)}f=f+1|0;if((g|0)!=(f|0)){continue}break}}w=N[i+108>>2];n=0;d=0;o=0;c=Ui+-64|0;Ui=c;m=J[e+52>>2];k=J[e+48>>2];f=(m-k|0)/72|0;i:{if((k|0)==(m|0)){break i}j:{while(1){k:{g=P(n,72)+k|0;l=N[g+20>>2];t=N[g+24>>2];l:{if(l>t){break l}q=K[g+68|0];if(q&4){break l}m=J[g+52>>2];r=m-3|0;if(!(r>>>0<3|l!=t)&t!=Q(0)){break l}h=J[e+32>>2];j=(J[e+36>>2]-h|0)/672|0;k=J[g>>2];while(1){f=k&65535;if(f>>>0>=j>>>0){break k}f=h+P(f,672)|0;if(!(K[f+478|0]&16)){break l}k=L[f+656>>1];if((k|0)!=65535){continue}break}o=o+1|0;s=N[g+16>>2];if(s>2]>>2];q=q&250;H[g+68|0]=q;N[g+8>>2]=l;J[g+16>>2]=0;l=Q(-s)}s=Q(w*N[g+28>>2]);l=Q(s+l);l=Q(Q(l+Q(s*Q(.5)))-t)>=Q(0)?t:l;N[g+20>>2]=l;if(t==Q(0)){s=Q(1)}else{s=Q(t-l)>=Q(0)?Q(l/t):Q(1)}m:{n:{switch(m-1|0){default:l=s;if(!(q&8)){break m}break;case 0:case 3:break n}}l=Q(Q(1)-s)}o:{p:{switch(m-2|0){case 0:case 3:break p;default:break o}}l=Q(l+l);if(!(l>Q(1))){break o}l=Q(Q(2)-l)}J[c+40>>2]=J[g+48>>2];f=J[g+44>>2];J[c+32>>2]=J[g+40>>2];J[c+36>>2]=f;f=J[g+36>>2];J[c+24>>2]=J[g+32>>2];J[c+28>>2]=f;l=XR(c+24|0,l);t=l;l=N[g+8>>2];N[J[g+4>>2]>>2]=Q(t*Q(N[g+12>>2]-l))+l;f=L[g>>1];j=J[e+32>>2];if(f>>>0>=(J[e+36>>2]-j|0)/672>>>0){break j}f=j+P(f,672)|0;J[f+476>>2]=J[f+476>>2]|4194304;if(!(s>=Q(1))){break l}if(r>>>0<=2){N[g+20>>2]=N[g+20>>2]-N[g+24>>2];if((m|0)!=5){break l}H[g+68|0]=K[g+68|0]^8;break l}f=K[g+68|0];if(f&2){break l}H[g+68|0]=f|2;f=J[g+40>>2];if(f){Zi[f|0](g+32|0)}f=J[g+56>>2];if(!f){break l}Zi[f|0](e,J[g>>2],1,J[g+60>>2],J[g+64>>2]);break l}N[g+16>>2]=s-w}m=J[e+52>>2];k=J[e+48>>2];f=(m-k|0)/72|0;n=n+1|0;if(f>>>0>n>>>0){continue}break i}break}break a}break a}q:{r:{if(f){n=0;d=f;while(1){q=(m-k|0)/72|0;if(q>>>0<=n>>>0){break a}j=P(n,72);g=j+k|0;r=K[g+68|0];h=!(r&4);if(!(h&(!(N[g+20>>2]>=N[g+24>>2])|N[g+16>>2]!=Q(0)))){s:{if(r&2){break s}f=J[g+56>>2];if(!f){break s}H[g+68|0]=r|2;Zi[f|0](e,J[g>>2],h,J[g+60>>2],J[g+64>>2]);m=J[e+52>>2];k=J[e+48>>2];q=(m-k|0)/72|0}if(n>>>0>=q>>>0){break a}f=k+j|0;el(f,f+72|0,(m-f|0)-72|0);k=J[e+48>>2];f=((J[e+52>>2]-k|0)/72|0)-1|0;if(f>>>0>(J[e+56>>2]-k|0)/72>>>0){break r}m=P(f,72)+k|0;J[e+52>>2]=m;n=n-1|0;d=d-1|0}n=n+1|0;if(n>>>0>>0){continue}break}}J[218962]=J[218962]+d;J[c+56>>2]=d;J[c+60>>2]=0;J[c+16>>2]=d;J[c+20>>2]=0;J[218984]=J[218984]+o;J[c+48>>2]=o;J[c+52>>2]=0;J[c+8>>2]=o;J[c+12>>2]=0;Ui=c- -64|0;break q}Z(144782,53895,514,59583);B()}c=J[e+36>>2];j=J[e+32>>2];t:{if((c|0)==(j|0)){n=0;break t}f=(c-j|0)/672|0;n=0;k=0;while(1){h=j+P(k,672)|0;u:{if(H[h+668|0]&1){oD(e,L[h+650>>1]|L[h+648>>1]<<16,0);I[h+668>>1]=L[h+668>>1]&65534;f=(J[e+36>>2]-J[e+32>>2]|0)/672|0;break u}d=L[h+650>>1];if((d|0)==65535){break u}n=n+1|0;c=J[h+480>>2];if(!c){break u}Zi[J[e+400>>2]](J[e+404>>2],e,d|L[h+648>>1]<<16,c,J[h+584>>2],N[i+108>>2])}k=k+1|0;if(k>>>0>>0){continue}break}}v:{w:{x:{y:{d=J[e+264>>2];c=J[e+260>>2];if((d|0)!=(c|0)){k=(d-c|0)/12|0;f=0;while(1){c=J[e+260>>2];if((J[e+264>>2]-c|0)/12>>>0<=f>>>0){break a}m=P(f,12);q=m+c|0;z:{if(wM(J[e+224>>2],J[q>>2])){o=J[q+8>>2];A:{if(!o){break A}d=o&65535;c=J[e+32>>2];if(d>>>0>=(J[e+36>>2]-c|0)/672>>>0){break a}g=c+P(d,672)|0;if(L[g+648>>1]!=(o>>>16|0)){break y}if((d|0)!=L[g+650>>1]){break x}if(J[g+628>>2]==J[q>>2]){J[g+628>>2]=0}if(!(K[g+479|0]&32)){break A}r=k>>>0<=1?1:k;h=J[e+260>>2];j=(J[e+264>>2]-h|0)/12|0;d=0;while(1){if((d|0)==(j|0)){break a}c=h+P(d,12)|0;if((o|0)==J[c+8>>2]){J[c+8>>2]=0}d=d+1|0;if((r|0)!=(d|0)){continue}break}oO(e,g)}Xu(J[e+224>>2],J[q>>2]);d=J[e+264>>2];c=J[e+260>>2];if((d-c|0)/12>>>0<=f>>>0){break w}j=c+m|0;d=d-12|0;c=J[d+4>>2];J[j>>2]=J[d>>2];J[j+4>>2]=c;J[j+8>>2]=J[d+8>>2];c=J[e+264>>2]-12|0;J[e+264>>2]=c;if(c>>>0>2]){break v}k=k-1|0;break z}f=f+1|0}if(f>>>0>>0){continue}break}}J[219006]=J[219006]+n;J[i+96>>2]=n;J[i+100>>2]=0;J[i+40>>2]=n;J[i+44>>2]=0;c=J[e+152>>2];J[219050]=c+J[219050];J[i+88>>2]=c;J[i+92>>2]=0;J[i+32>>2]=c;J[i+36>>2]=0;c=J[e+184>>2];J[219072]=c+J[219072];J[i+80>>2]=c;J[i+84>>2]=0;J[i+24>>2]=c;J[i+28>>2]=0;c=J[e+152>>2]+J[e+184>>2]|0;J[219094]=c+J[219094];J[i+72>>2]=c;J[i+76>>2]=0;J[i+16>>2]=c;J[i+20>>2]=0;c=(J[e+264>>2]-J[e+260>>2]|0)/12|0;J[219116]=c+J[219116];J[i+64>>2]=c;J[i+68>>2]=0;J[i+8>>2]=c;J[i+12>>2]=0;Ui=i+112|0;break b}Z(47372,40876,188,69601);B()}Z(5388,40876,189,69601);B()}Z(145381,53895,537,43537);B()}Z(12682,53895,540,43537);B()}Z(47372,40876,3733,46897);B()}}v=v+1|0;if((x|0)!=(v|0)){continue}break}}Ui=b+32|0;return 0}Z(145396,53895,487,84789);B()}function GP(a,b){var c=0,d=0,e=0,f=0,g=0,h=0,i=0,j=0,k=0,l=0,m=0,n=0,o=0,p=0,q=0,r=Q(0);f=Ui-176|0;Ui=f;j=J[b>>2];J[a+16>>2]=J[b+4>>2];J[a+352>>2]=J[j+76>>2];a:{b:{c:{d:{e:{f:{g:{h:{c=J[b+8>>2];if((c|0)!=J[b+12>>2]){while(1){if(M[j+8>>2]<=e>>>0){break h}d=J[(e<<2)+c>>2];c=e<<3;g=J[c+J[j+4>>2]>>2];h=bj(g);k=Yi;i=J[b+24>>2];if(J[b+28>>2]-i>>3>>>0<=e>>>0){break a}l=d;d=c+i|0;d=UO(a,h,k,l,J[d>>2],J[d+4>>2]);if(d){break f}e=e+1|0;c=J[b+8>>2];if(e>>>0>2]-c>>2>>>0){continue}break}}c=J[b+56>>2];if((c|0)!=J[b+60>>2]){e=0;while(1){o=J[J[j+92>>2]+(e<<3)>>2];d=o;g=J[(e<<2)+c>>2];l=0;m=Ui-16|0;Ui=m;i:{if(J[a+252>>2]==J[a+244>>2]-J[a+236>>2]>>4){l=-4;break i}d=bj(d);c=Yi;k=c;J[m+12>>2]=g;pl(a+228|0,d,c,m+12|0);c=J[a+36>>2];h=J[a+32>>2];if((c|0)==(h|0)){break i}i=(c-h|0)/672|0;q=i>>>0<=1?1:i;p=q&3;c=0;if(i>>>0>=4){q=q&-4;i=0;while(1){n=h+P(c,672)|0;if(J[n+616>>2]==(d|0)&J[n+620>>2]==(k|0)){J[n+624>>2]=g}n=h+P(c|1,672)|0;if(J[n+616>>2]==(d|0)&J[n+620>>2]==(k|0)){J[n+624>>2]=g}n=h+P(c|2,672)|0;if(J[n+616>>2]==(d|0)&J[n+620>>2]==(k|0)){J[n+624>>2]=g}n=h+P(c|3,672)|0;if(J[n+616>>2]==(d|0)&J[n+620>>2]==(k|0)){J[n+624>>2]=g}c=c+4|0;i=i+4|0;if((q|0)!=(i|0)){continue}break}}if(!p){break i}i=0;while(1){q=h+P(c,672)|0;if(J[q+616>>2]==(d|0)&J[q+620>>2]==(k|0)){J[q+624>>2]=g}c=c+1|0;i=i+1|0;if((p|0)!=(i|0)){continue}break}}Ui=m+16|0;if(l){J[f+116>>2]=l;J[f+112>>2]=o;dj(4,88458,141372,f+112|0);g=0;break e}e=e+1|0;c=J[b+56>>2];if(e>>>0>2]-c>>2>>>0){continue}break}}j:{k:{if(J[b+76>>2]==J[b+72>>2]){break k}e=0;while(1){if(M[j+112>>2]<=e>>>0){break j}d=J[J[j+108>>2]+(e<<3)>>2];c=bj(d);g=Yi;h=J[b+72>>2];if(J[b+76>>2]-h>>2>>>0<=e>>>0){break a}c=TO(a,c,g,J[h+(e<<2)>>2]);if(!c){e=e+1|0;if(e>>>0>=J[b+76>>2]-J[b+72>>2]>>2>>>0){break k}continue}break}J[f+100>>2]=c;J[f+96>>2]=d;dj(4,88458,141420,f+96|0);g=0;break e}QO(a);l:{m:{n:{c=J[b+40>>2];if((c|0)==J[b+44>>2]){break n}e=0;while(1){if(M[j+16>>2]<=e>>>0){break l}h=1;i=e<<3;c=i+c|0;d=J[c>>2];if(H[c+4|0]&1){h=2;c=J[d+80>>2]}else{c=d}k=J[c+4>>2];c=J[c>>2];if(!(k|c)){break m}g=J[i+J[j+12>>2]>>2];d=SO(a,bj(g),Yi,d,h,Zi[J[79463]](c,k)|0,Zi[J[79464]](c,k)|0);if(!d){e=e+1|0;c=J[b+40>>2];if(e>>>0>=J[b+44>>2]-c>>3>>>0){break n}continue}break}J[f+84>>2]=d;J[f+80>>2]=g;dj(4,88458,141331,f+80|0);g=0;break e}o:{p:{i=J[j+60>>2];if(!i){break p}b=0;while(1){if(M[j+60>>2]<=b>>>0){break o}l=J[J[j+56>>2]+(b<<2)>>2];d=l;c=Ui-16|0;Ui=c;g=J[a+300>>2];q:{if((g|0)==J[a+292>>2]-J[a+284>>2]>>4){J[c>>2]=g;dj(4,93318,137593,c);d=-4;break q}d=bj(d);g=Yi;k=g;e=L[a+372>>1];I[a+372>>1]=e+1;I[c+14>>1]=e;lN(a+276|0,d,g,c+14|0);e=J[a+36>>2];g=J[a+32>>2];r:{if((e|0)==(g|0)){break r}h=(e-g|0)/672|0;m=h>>>0<=1?1:h;p=m&1;e=0;if(h>>>0>=2){m=m&-2;h=0;while(1){o=g+P(e,672)|0;if(J[o+568>>2]==(d|0)&J[o+572>>2]==(k|0)){I[o+576>>1]=L[c+14>>1]}o=g+P(e|1,672)|0;if(J[o+568>>2]==(d|0)&J[o+572>>2]==(k|0)){I[o+576>>1]=L[c+14>>1]}e=e+2|0;h=h+2|0;if((m|0)!=(h|0)){continue}break}}if(!p){break r}g=g+P(e,672)|0;if((d|0)!=J[g+568>>2]|(k|0)!=J[g+572>>2]){break r}I[g+576>>1]=L[c+14>>1]}d=0}Ui=c+16|0;if(!d){b=b+1|0;if((i|0)==(b|0)){break p}continue}break}J[f+68>>2]=d;J[f+64>>2]=l;dj(4,88458,141250,f- -64|0);g=0;break e}s:{t:{k=J[j+72>>2];if(!k){break t}d=J[j+52>>2];u:{if(!(H[a+320|0]&1)){v:{b=k+1|0;c=J[a+316>>2]-J[a+308>>2]>>3;lj(b>>>0>c>>>0?b:c,8,a+308|0,a+316|0,a+312|0);if(H[a+336|0]&1){break v}lj(P(b,d),4,a+324|0,a+332|0,a+328|0);J[a+328>>2]=J[a+324>>2];break u}}Z(151729,53895,501,2284);B()}b=0;while(1){if(M[j+72>>2]<=b>>>0){break s}g=J[J[j+68>>2]+P(b,12)>>2];d=g;c=Ui-16|0;Ui=c;w:{e=J[a+312>>2];x:{if((e|0)==J[a+316>>2]){J[c>>2]=e-J[a+308>>2]>>3;dj(4,93318,132486,c);d=-4;break x}e=bj(d);h=Yi;d=J[a+312>>2];if((d|0)==J[a+316>>2]){break b}J[a+312>>2]=d+8;J[d>>2]=e;J[d+4>>2]=h;d=0}Ui=c+16|0;break w}if(!d){b=b+1|0;if((k|0)==(b|0)){break t}continue}break}J[f+52>>2]=d;J[f+48>>2]=g;dj(4,88458,141172,f+48|0);g=0;break e}y:{b=J[j+52>>2];z:{if(!b){g=1;break z}i=k&65535;h=1;e=0;while(1){A:{if(b>>>0>e>>>0){b=J[j+48>>2]+P(e,304)|0;d=J[b+292>>2];c=J[b+80>>2];g=J[b+48>>2];l=J[b+52>>2];r=N[b+56>>2];m=J[b+4>>2];p=J[b>>2];N[f+168>>2]=N[b+8>>2];J[f+160>>2]=p;J[f+164>>2]=m;N[f+152>>2]=r;J[f+144>>2]=g;J[f+148>>2]=l;d=fD(a,f+160|0,f+144|0,c,d);if(!d){h=0;break A}c=J[b+100>>2];if(c){B:{l=bj(c);m=Yi;C:{D:{g=d&65535;c=J[a+32>>2];if(g>>>0<(J[a+36>>2]-c|0)/672>>>0){c=c+P(g,672)|0;if(L[c+648>>1]!=(d>>>16|0)){break D}if((g|0)!=L[c+650>>1]){break C}J[c+640>>2]=l;J[c+644>>2]=m;break B}break a}Z(47372,40876,188,69601);B()}Z(5388,40876,189,69601);B()}}c=JP(a,d,b);if(!(!k|!c)){gO(a,d,b,0,i);break A}if(c){break A}g=0;break e}break d}b=J[j+52>>2];e=e+1|0;if(b>>>0>e>>>0){continue}break}g=1;if(!h){g=0;break z}if(!b){break z}e=0;while(1){if(b>>>0<=e>>>0){break y}d=J[j+48>>2]+P(e,304)|0;h=ey(a,J[d+100>>2]);b=0;c=J[d+168>>2];E:{if(!c|!K[c|0]){break E}b=ey(a,c);if(b){break E}J[f+32>>2]=J[d+168>>2];dj(4,88458,124568,f+32|0);b=0;g=0}Zx(a,h,b,0);b=J[j+52>>2];e=e+1|0;if(b>>>0>e>>>0){continue}break}}if(!k){break e}h=J[j+72>>2];e=0;while(1){if(e>>>0>>0){i=P(e,12);d=bj(J[i+J[j+68>>2]>>2]);m=Yi;h=Ui-16|0;Ui=h;b=J[a+312>>2];p=J[a+308>>2];l=b-p>>3;F:{if((b|0)==(p|0)){b=0;break F}c=l>>>0<=1?1:l;b=0;while(1){o=p+(b<<3)|0;if(J[o>>2]==(d|0)&J[o+4>>2]==(m|0)){break F}b=b+1|0;if((c|0)!=(b|0)){continue}break}b=c}if((b|0)==(l|0)){J[h>>2]=tj(d,m);dj(4,93318,146683,h);b=0}Ui=h+16|0;h=J[j+72>>2];if(h>>>0<=e>>>0){break c}d=b&65535;b=0;c=J[j+68>>2];if(J[(i+c|0)+8>>2]){while(1){c=J[(c+i|0)+4>>2]+P(b,304)|0;h=ey(a,J[c+100>>2]);G:{if(h){gO(a,h,c,d,d);break G}J[f+16>>2]=J[c+100>>2];dj(4,88458,124617,f+16|0)}h=J[j+72>>2];if(h>>>0<=e>>>0){break c}b=b+1|0;c=J[j+68>>2];if(b>>>0>2]){continue}break}}e=e+1|0;if((k|0)!=(e|0)){continue}break g}break}break c}break d}break c}Z(12664,55274,280,84789);B()}Z(113821,40837,767,65557);B()}Z(12664,55274,263,84789);B()}Z(12664,55274,323,84789);B()}Z(12664,55274,255,84789);B()}b=f+168|0;J[b>>2]=0;J[b+4>>2]=0;J[f+160>>2]=0;J[f+164>>2]=0;c=k+1|0;d=f+160|0;lj(c,8,d,b,d|4);H:{if(!c){break H}b=0;while(1){I:{d=FO(a,b&65535,f+144|0);if(!d){d=J[f+164>>2];if((d|0)!=J[f+168>>2]){break I}break b}J[f>>2]=d;dj(4,88458,68167,f);break H}J[f+164>>2]=d+8;e=J[f+148>>2];J[d>>2]=J[f+144>>2];J[d+4>>2]=e;b=b+1|0;if(c>>>0>(b&65535)>>>0){continue}break}}b=J[a+12>>2];J[f+140>>2]=J[b+20>>2];J[f+136>>2]=J[b+24>>2];c=J[J[a+12>>2]+172>>2];b=qL(c,J[f+140>>2],J[f+136>>2],0,f+160|0);d=Yi;if((b|0)!=J[219158]|(d|0)!=J[219159]){wL(c,b,d,f+144|0);c=J[f+144>>2];J[a+380>>2]=J[f+148>>2];J[a+376>>2]=c;H[a+374|0]=K[a+374|0]|1;mO(a,b,d)}if(H[f+172|0]&1){break e}a=J[f+160>>2];if(!a){break e}cj(a);break e}J[f+132>>2]=d;J[f+128>>2]=g;dj(4,88458,141212,f+128|0);g=0}Ui=f+176|0;return g}Z(12664,55274,272,84789);B()}Z(12664,55274,289,84789);B()}Z(112520,53895,557,53220);B()}Z(145396,53895,487,84789);B()}function IF(a,b,c,d){var e=0,f=0,g=0,h=0,i=0,j=0,k=0,l=0,m=0,n=0,o=0,p=0;i=Ui-32|0;Ui=i;J[i+20>>2]=b;J[i+24>>2]=a;while(1){a:{b:{c:{d:{e:{f:{g:{h:{i:{e=b-a>>3;switch(e|0){case 2:break i;case 0:case 1:break c;case 3:break e;case 5:break g;case 4:break h;default:break f}}b=b-8|0;J[i+20>>2]=b;c=J[b+4>>2];d=J[a+4>>2];if((c|0)==(d|0)&M[b>>2]>=M[a>>2]|c>>>0>d>>>0){break c}a=J[i+24>>2];c=J[a>>2];d=J[a+4>>2];b=J[i+20>>2];e=J[b+4>>2];J[a>>2]=J[b>>2];J[a+4>>2]=e;J[b>>2]=c;J[b+4>>2]=d;break c}b=b-8|0;J[i+20>>2]=b;Hz(a,a+8|0,a+16|0,b);break c}b=b-8|0;J[i+20>>2]=b;BF(a,a+8|0,a+16|0,a+24|0,b);break c}if((e|0)<=23){if(d&1){d=Ui-32|0;Ui=d;j:{if((a|0)==(b|0)){break j}c=a;while(1){e=c+8|0;J[d+24>>2]=e;if((b|0)==(e|0)){break j}g=J[e+4>>2];f=J[c+4>>2];if((g|0)==(f|0)&M[e>>2]>2]|f>>>0>g>>>0){e=J[d+24>>2];g=J[e+4>>2];J[d+16>>2]=J[e>>2];J[d+20>>2]=g;J[d+12>>2]=c;c=J[d+24>>2];while(1){k:{e=J[d+12>>2];g=J[e+4>>2];J[c>>2]=J[e>>2];J[c+4>>2]=g;c=J[d+12>>2];if((c|0)==(a|0)){break k}e=c-8|0;J[d+12>>2]=e;g=J[d+20>>2];f=J[e+4>>2];if((g|0)==(f|0)&M[d+16>>2]>2]|f>>>0>g>>>0){continue}}break}e=J[d+20>>2];J[c>>2]=J[d+16>>2];J[c+4>>2]=e}c=J[d+24>>2];continue}}Ui=d+32|0;break c}d=Ui-32|0;Ui=d;l:{if((a|0)==(b|0)){break l}while(1){c=a+8|0;J[d+24>>2]=c;if((b|0)==(c|0)){break l}e=J[c+4>>2];g=J[a+4>>2];if((e|0)==(g|0)&M[c>>2]>2]|e>>>0>>0){c=J[d+24>>2];e=J[c+4>>2];J[d+16>>2]=J[c>>2];J[d+20>>2]=e;J[d+12>>2]=a;a=J[d+24>>2];while(1){c=J[d+12>>2];e=J[c+4>>2];J[a>>2]=J[c>>2];J[a+4>>2]=e;a=J[d+12>>2];e=a-8|0;J[d+12>>2]=e;g=J[d+20>>2];f=J[e+4>>2];c=J[d+16>>2];if((g|0)==(f|0)&c>>>0>2]|f>>>0>g>>>0){continue}break}J[a>>2]=c;J[a+4>>2]=g}a=J[d+24>>2];continue}}Ui=d+32|0;break c}if(!c){if((a|0)==(b|0)){break c}j=Ui-16|0;Ui=j;J[j+12>>2]=a;c=a;a=b;if((c|0)!=(a|0)){m:{e=a-c>>3;if((e|0)<2){break m}d=e-2>>>1|0;while(1){if((d|0)<0){break m}GF(c,e,c+(d<<3)|0);d=d-1|0;continue}}e=a-c>>3;c=a;while(1){J[j+8>>2]=c;d=J[j+12>>2];l=d;if((b|0)!=(c|0)){g=J[c+4>>2];f=J[d+4>>2];if((g|0)==(f|0)&M[c>>2]>2]|f>>>0>g>>>0){c=J[j+8>>2];g=J[c>>2];f=J[c+4>>2];h=J[d+4>>2];J[c>>2]=J[d>>2];J[c+4>>2]=h;J[d>>2]=g;J[d+4>>2]=f;c=J[j+12>>2];GF(c,e,c)}c=J[j+8>>2]+8|0;continue}break}b=a-l>>3;c=a;while(1){if((b|0)>1){h=Ui-16|0;Ui=h;J[h+12>>2]=l;n:{if((b|0)<2){break n}f=J[h+12>>2];a=f;e=J[a>>2];m=J[a+4>>2];a=0;k=Ui-16|0;Ui=k;p=(b-2|0)/2|0;while(1){d=(a<<3)+f|0;J[k+12>>2]=d+8;g=a<<1;a=g|1;g=g+2|0;o:{if((g|0)>=(b|0)){break o}n=J[d+12>>2];o=J[d+20>>2];if((n|0)==(o|0)&M[d+8>>2]>=M[d+16>>2]|n>>>0>o>>>0){break o}J[k+12>>2]=J[k+12>>2]+8;a=g}d=J[k+12>>2];g=J[d+4>>2];J[f>>2]=J[d>>2];J[f+4>>2]=g;f=J[k+12>>2];if((a|0)<=(p|0)){continue}break}Ui=k+16|0;a=c-8|0;J[h+8>>2]=a;if((a|0)==(f|0)){J[f>>2]=e;J[f+4>>2]=m;break n}a=J[h+8>>2];d=J[a+4>>2];J[f>>2]=J[a>>2];J[f+4>>2]=d;a=J[h+8>>2];J[a>>2]=e;J[a+4>>2]=m;d=J[h+12>>2];e=d;a=Ui-16|0;Ui=a;g=f+8|0;d=g-e>>3;p:{if((d|0)<2){break p}g=g-8|0;J[a+12>>2]=g;d=d-2>>>1|0;f=e+(d<<3)|0;J[a+8>>2]=f;k=J[f+4>>2];m=J[g+4>>2];if((k|0)==(m|0)&M[f>>2]>=M[g>>2]|k>>>0>m>>>0){break p}g=J[a+12>>2];f=J[g+4>>2];J[a>>2]=J[g>>2];J[a+4>>2]=f;q:{while(1){f=J[a+8>>2];k=J[f+4>>2];g=J[a+12>>2];J[g>>2]=J[f>>2];J[g+4>>2]=k;f=J[a+8>>2];J[a+12>>2]=f;if(!d){break q}d=d-1>>>1|0;g=e+(d<<3)|0;J[a+8>>2]=g;f=J[g+4>>2];k=J[a+4>>2];if((f|0)==(k|0)&M[g>>2]>2]|f>>>0>>0){continue}break}f=J[a+12>>2]}d=J[a+4>>2];J[f>>2]=J[a>>2];J[f+4>>2]=d}Ui=a+16|0}Ui=h+16|0;b=b-1|0;c=c-8|0;continue}break}}Ui=j+16|0;break c}g=b-8|0;b=e>>>1<<3;f=b+a|0;r:{if(e>>>0>=129){wp(a,f,g);a=J[i+24>>2];f=a+8|0;g=a;a=b-8|0;e=J[i+20>>2];wp(f,g+a|0,e-16|0);g=J[i+24>>2];l=g+16|0;f=g;g=b+8|0;wp(l,f+g|0,e-24|0);e=a;a=J[i+24>>2];wp(e+a|0,a+b|0,a+g|0);J[i+12>>2]=b+J[i+24>>2];a=J[i+24>>2];e=J[a>>2];g=J[a+4>>2];b=J[i+12>>2];f=J[b+4>>2];J[a>>2]=J[b>>2];J[a+4>>2]=f;J[b>>2]=e;J[b+4>>2]=g;break r}wp(f,a,g)}c=c-1|0;j=d&1;if(j){b=J[i+20>>2];break d}b=J[i+20>>2];g=J[i+24>>2];a=g;e=a-8|0;f=J[e>>2];e=J[e+4>>2];h=J[a+4>>2];if((e|0)==(h|0)&M[a>>2]>f>>>0|e>>>0>>0){break d}e=Ui-32|0;Ui=e;a=b;J[e+24>>2]=a;J[e+28>>2]=g;d=J[e+28>>2];f=J[d+4>>2];J[e+16>>2]=J[d>>2];J[e+20>>2]=f;d=a-8|0;f=J[d>>2];j=J[e+20>>2];d=J[d+4>>2];s:{if((j|0)==(d|0)&f>>>0>M[e+16>>2]|d>>>0>j>>>0){while(1){d=J[e+28>>2];J[e+28>>2]=d+8;f=J[e+20>>2];j=J[d+12>>2];if((f|0)==(j|0)&M[e+16>>2]>=M[d+8>>2]|f>>>0>j>>>0){continue}break s}}while(1){d=J[e+28>>2]+8|0;J[e+28>>2]=d;if(a>>>0<=d>>>0){break s}f=J[e+20>>2];j=J[d+4>>2];if((f|0)==(j|0)&M[e+16>>2]>=M[d>>2]|f>>>0>j>>>0){continue}break}}if(M[e+28>>2]>>0){while(1){a=a-8|0;J[e+24>>2]=a;d=J[e+20>>2];f=J[a+4>>2];if((d|0)==(f|0)&M[e+16>>2]>2]|d>>>0>>0){continue}break}}while(1){d=a;a=J[e+28>>2];if(d>>>0>a>>>0){f=J[a>>2];j=J[a+4>>2];d=J[e+24>>2];h=J[d+4>>2];J[a>>2]=J[d>>2];J[a+4>>2]=h;J[d>>2]=f;J[d+4>>2]=j;while(1){a=J[e+28>>2];J[e+28>>2]=a+8;d=J[e+20>>2];f=J[a+12>>2];if((d|0)==(f|0)&M[e+16>>2]>=M[a+8>>2]|d>>>0>f>>>0){continue}break}while(1){a=J[e+24>>2]-8|0;J[e+24>>2]=a;d=J[e+20>>2];f=J[a+4>>2];if((d|0)==(f|0)&M[e+16>>2]>2]|d>>>0>>0){continue}break}a=J[e+24>>2];continue}break}d=a-8|0;J[e+12>>2]=d;if((d|0)!=(g|0)){a=J[e+12>>2];d=J[a+4>>2];J[g>>2]=J[a>>2];J[g+4>>2]=d;d=J[e+12>>2];a=J[e+28>>2]}g=J[e+20>>2];J[d>>2]=J[e+16>>2];J[d+4>>2]=g;Ui=e+32|0;J[i+24>>2]=a;d=0;break a}b=b-8|0;J[i+20>>2]=b;wp(a,a+8|0,b);break c}g=J[i+24>>2];e=Ui-32|0;Ui=e;a=b;J[e+20>>2]=a;J[e+24>>2]=g;f=J[e+24>>2];h=J[f+4>>2];J[e+8>>2]=J[f>>2];J[e+12>>2]=h;while(1){f=J[e+24>>2];J[e+24>>2]=f+8;h=J[f+12>>2];k=J[e+12>>2];if((h|0)==(k|0)&M[f+8>>2]>2]|h>>>0>>0){continue}break}t:{if((g|0)==(J[e+24>>2]-8|0)){while(1){if(M[e+24>>2]>=a>>>0){break t}a=a-8|0;J[e+20>>2]=a;f=J[a+4>>2];h=J[e+12>>2];if((f|0)==(h|0)&M[a>>2]>=M[e+8>>2]|f>>>0>h>>>0){continue}break t}}while(1){a=a-8|0;J[e+20>>2]=a;f=J[a+4>>2];h=J[e+12>>2];if((f|0)==(h|0)&M[a>>2]>=M[e+8>>2]|f>>>0>h>>>0){continue}break}}f=J[e+24>>2];H[e+7|0]=f>>>0>=a>>>0;while(1){if(a>>>0>f>>>0){a=J[e+24>>2];h=J[a>>2];k=J[a+4>>2];f=J[e+20>>2];l=J[f+4>>2];J[a>>2]=J[f>>2];J[a+4>>2]=l;J[f>>2]=h;J[f+4>>2]=k;while(1){a=J[e+24>>2];J[e+24>>2]=a+8;f=J[a+12>>2];h=J[e+12>>2];if((f|0)==(h|0)&M[a+8>>2]>2]|f>>>0>>0){continue}break}while(1){a=J[e+20>>2]-8|0;J[e+20>>2]=a;f=J[a+4>>2];h=J[e+12>>2];if((f|0)==(h|0)&M[a>>2]>=M[e+8>>2]|f>>>0>h>>>0){continue}break}a=J[e+20>>2];f=J[e+24>>2];continue}break}a=f-8|0;J[e>>2]=a;if((a|0)!=(g|0)){a=J[e>>2];f=J[a+4>>2];J[g>>2]=J[a>>2];J[g+4>>2]=f;a=J[e>>2]}g=J[e+12>>2];J[a>>2]=J[e+8>>2];J[a+4>>2]=g;J[i+12>>2]=J[e>>2];H[i+16|0]=K[e+7|0];Ui=e+32|0;a=J[i+12>>2];if(K[i+16|0]!=1){break b}e=iU(J[i+24>>2],a);g=a+8|0;if(iU(g,b)){if(e){break c}J[i+20>>2]=a;b=a;break a}if(!e){break b}J[i+24>>2]=g;break a}Ui=i+32|0;return}IF(J[i+24>>2],a,c,j);J[i+24>>2]=a+8;d=0}a=J[i+24>>2];continue}}function yt(a,b){var c=0,d=0,e=0,f=0,g=Q(0),h=Q(0),i=Q(0),j=0,k=Q(0),l=Q(0),m=Q(0),n=Q(0),o=Q(0),p=0,q=Q(0),r=0,s=Q(0),t=Q(0),u=Q(0),w=Q(0),x=Q(0),y=Q(0);if(!(K[a+102868|0]&2)){a:{b:{switch(J[b>>2]-1|0){case 4:c=qp(Hl(a,168),b);J[c>>2]=247292;c:{d:{e:{f:{if(!((J[b+20>>2]&2147483647)>>>0>2139095039|(J[b+24>>2]&2147483647)>>>0>=2139095040)){e=J[b+28>>2];d=e&2147483647;e=(e|0)<0;if(d-1>>>0<8388607&e|(d|0)==2139095040|d>>>0>2139095040|e&d-8388608>>>0<2130706432){break f}e=J[b+32>>2];d=e&2147483647;e=(e|0)<0;if(d-1>>>0<8388607&e|(d|0)==2139095040|d>>>0>2139095040|e&d-8388608>>>0<2130706432){break e}e=J[b+36>>2];d=e&2147483647;e=(e|0)<0;if(d-1>>>0<8388607&e|(d|0)==2139095040|d>>>0>2139095040|e&d-8388608>>>0<2130706432){break d}k=N[b+24>>2];e=J[b+24>>2];g=N[b+20>>2];J[c+76>>2]=J[b+20>>2];J[c+80>>2]=e;d=J[c+52>>2];h=N[d+24>>2];i=Q(k-N[d+16>>2]);l=N[d+20>>2];g=Q(g-N[d+12>>2]);N[c+72>>2]=Q(h*i)-Q(l*g);N[c+68>>2]=Q(h*g)+Q(i*l);N[c+104>>2]=N[b+28>>2];J[c+96>>2]=0;J[c+100>>2]=0;N[c+84>>2]=N[b+32>>2];N[c+88>>2]=N[b+36>>2];J[c+108>>2]=0;J[c+92>>2]=0;break c}Z(145548,37965,34,13105);B()}Z(58426,37965,35,13105);B()}Z(58129,37965,36,13105);B()}Z(58250,37965,37,13105);B()}break a;case 1:c=qp(Hl(a,256),b);J[c>>2]=247532;d=J[b+24>>2];J[c+68>>2]=J[b+20>>2];J[c+72>>2]=d;d=J[b+32>>2];J[c+76>>2]=J[b+28>>2];J[c+80>>2]=d;h=N[b+40>>2];e=J[b+40>>2];g=N[b+36>>2];d=J[b+36>>2];J[c+84>>2]=d;J[c+88>>2]=e;i=Q(Y(Q(Q(g*g)+Q(h*h))));if(!(i>2]=h;g=Q(i*g);N[c+84>>2]=g;d=(C(g),v(2))}J[c+96>>2]=d;N[c+92>>2]=-h;g=N[b+44>>2];J[c+252>>2]=0;N[c+100>>2]=g;J[c+104>>2]=0;J[c+108>>2]=0;J[c+112>>2]=0;J[c+116>>2]=0;N[c+120>>2]=N[b+52>>2];N[c+124>>2]=N[b+56>>2];N[c+128>>2]=N[b+64>>2];N[c+132>>2]=N[b+68>>2];H[c+136|0]=K[b+48|0];d=K[b+60|0];J[c+184>>2]=0;J[c+188>>2]=0;J[c+140>>2]=0;H[c+137|0]=d;J[c+192>>2]=0;J[c+196>>2]=0;break a;case 0:c=qp(Hl(a,228),b);J[c>>2]=247628;d=J[b+24>>2];J[c+68>>2]=J[b+20>>2];J[c+72>>2]=d;d=J[b+32>>2];J[c+76>>2]=J[b+28>>2];J[c+80>>2]=d;g=N[b+36>>2];J[c+84>>2]=0;J[c+88>>2]=0;N[c+116>>2]=g;J[c+92>>2]=0;J[c+96>>2]=0;N[c+120>>2]=N[b+44>>2];N[c+124>>2]=N[b+48>>2];N[c+104>>2]=N[b+60>>2];N[c+108>>2]=N[b+56>>2];H[c+112|0]=K[b+40|0];d=K[b+52|0];J[c+224>>2]=0;H[c+100|0]=d;break a;case 3:c=qp(Hl(a,196),b);J[c>>2]=247580;d=J[b+24>>2];J[c+68>>2]=J[b+20>>2];J[c+72>>2]=d;d=J[b+32>>2];J[c+76>>2]=J[b+28>>2];J[c+80>>2]=d;d=J[b+40>>2];J[c+92>>2]=J[b+36>>2];J[c+96>>2]=d;d=J[b+48>>2];J[c+100>>2]=J[b+44>>2];J[c+104>>2]=d;h=N[b+52>>2];N[c+84>>2]=h;i=N[b+56>>2];N[c+88>>2]=i;g=N[b+60>>2];if(g==Q(0)){Z(58476,37806,65,13055);B()}J[c+116>>2]=0;N[c+112>>2]=g;N[c+108>>2]=Q(g*i)+h;break a;case 5:c=qp(Hl(a,276),b);J[c>>2]=247340;f=J[b+20>>2];J[c+68>>2]=f;p=J[b+24>>2];J[c+72>>2]=p;j=J[f+4>>2];J[c+76>>2]=j;r=J[p+4>>2];J[c+80>>2]=r;g:{h:{if(j-1>>>0<2){if(r-1>>>0>=2){break h}d=J[f+48>>2];J[c+84>>2]=d;e=J[f+52>>2];J[c+48>>2]=e;i:{if((j|0)==1){h=N[d+56>>2];i=N[e+56>>2];d=J[f+72>>2];J[c+108>>2]=J[f+68>>2];J[c+112>>2]=d;d=J[f+80>>2];J[c+92>>2]=J[f+76>>2];J[c+96>>2]=d;g=N[f+116>>2];J[c+124>>2]=0;J[c+128>>2]=0;N[c+140>>2]=g;g=Q(Q(i-h)-g);break i}h=N[d+24>>2];q=N[e+16>>2];s=N[d+16>>2];i=N[d+20>>2];n=N[e+12>>2];k=N[d+12>>2];l=N[e+20>>2];o=N[e+24>>2];t=N[f+72>>2];e=J[f+72>>2];m=N[f+68>>2];J[c+108>>2]=J[f+68>>2];J[c+112>>2]=e;u=N[f+80>>2];d=J[f+80>>2];g=N[f+76>>2];j=J[f+76>>2];J[c+92>>2]=j;J[c+96>>2]=d;N[c+140>>2]=N[f+100>>2];w=N[f+84>>2];j=J[f+84>>2];x=N[f+88>>2];f=J[f+88>>2];J[c+124>>2]=j;J[c+128>>2]=f;k=Q(n-k);n=u;k=Q(k+Q(Q(o*g)-Q(l*n)));g=Q(Q(q-s)+Q(Q(l*g)+Q(o*n)));g=Q(Q(Q(Q(Q(h*k)+Q(i*g))-m)*w)+Q(Q(Q(Q(h*g)-Q(i*k))-t)*x))}d=J[p+48>>2];J[c+88>>2]=d;e=J[p+52>>2];J[c+52>>2]=e;j:{if((r|0)==1){i=N[d+56>>2];l=N[e+56>>2];d=J[b+24>>2];e=J[d+72>>2];J[c+116>>2]=J[d+68>>2];J[c+120>>2]=e;e=J[d+80>>2];J[c+100>>2]=J[d+76>>2];J[c+104>>2]=e;h=N[d+116>>2];J[c+132>>2]=0;J[c+136>>2]=0;N[c+144>>2]=h;h=Q(Q(l-i)-h);break j}i=N[d+24>>2];s=N[e+16>>2];n=N[d+16>>2];l=N[d+20>>2];k=N[e+12>>2];m=N[d+12>>2];o=N[e+20>>2];q=N[e+24>>2];f=J[b+24>>2];d=f;w=N[d+68>>2];d=J[d+68>>2];t=N[f+72>>2];e=J[f+72>>2];J[c+116>>2]=d;J[c+120>>2]=e;u=N[f+80>>2];d=J[f+80>>2];h=N[f+76>>2];j=J[f+76>>2];J[c+100>>2]=j;J[c+104>>2]=d;N[c+144>>2]=N[f+100>>2];x=N[f+84>>2];j=J[f+84>>2];y=N[f+88>>2];f=J[f+88>>2];J[c+132>>2]=j;J[c+136>>2]=f;m=Q(k-m);k=u;m=Q(m+Q(Q(q*h)-Q(o*k)));h=Q(Q(s-n)+Q(Q(o*h)+Q(q*k)));h=Q(Q(Q(Q(Q(i*m)+Q(l*h))-w)*x)+Q(Q(Q(Q(i*h)-Q(l*m))-t)*y))}i=N[b+28>>2];J[c+156>>2]=0;N[c+152>>2]=i;N[c+148>>2]=Q(i*h)+g;break g}Z(13176,37859,53,13069);B()}Z(13118,37859,54,13069);B()}break a;case 6:c=qp(Hl(a,224),b);J[c>>2]=247772;d=J[b+24>>2];J[c+76>>2]=J[b+20>>2];J[c+80>>2]=d;d=J[b+32>>2];J[c+84>>2]=J[b+28>>2];J[c+88>>2]=d;d=J[b+40>>2];e=J[b+36>>2];J[c+204>>2]=0;J[c+104>>2]=e;J[c+92>>2]=e;J[c+96>>2]=d;J[c+108>>2]=0;J[c+208>>2]=0;J[c+212>>2]=0;J[c+112>>2]=0;J[c+116>>2]=0;J[c+100>>2]=d^-2147483648;N[c+120>>2]=N[b+48>>2];N[c+124>>2]=N[b+52>>2];H[c+128|0]=K[b+44|0];N[c+68>>2]=N[b+56>>2];g=N[b+60>>2];J[c+216>>2]=0;J[c+220>>2]=0;N[c+72>>2]=g;J[c+172>>2]=0;J[c+176>>2]=0;J[c+180>>2]=0;J[c+184>>2]=0;break a;case 7:c=qp(Hl(a,208),b);J[c>>2]=247724;d=J[b+24>>2];J[c+80>>2]=J[b+20>>2];J[c+84>>2]=d;d=J[b+32>>2];J[c+88>>2]=J[b+28>>2];J[c+92>>2]=d;N[c+96>>2]=N[b+36>>2];N[c+68>>2]=N[b+40>>2];g=N[b+44>>2];J[c+112>>2]=0;J[c+104>>2]=0;J[c+108>>2]=0;N[c+72>>2]=g;break a;case 8:c=qp(Hl(a,180),b);J[c>>2]=247388;d=J[b+24>>2];J[c+68>>2]=J[b+20>>2];J[c+72>>2]=d;d=J[b+28>>2];e=J[b+32>>2];J[c+92>>2]=0;J[c+84>>2]=0;J[c+88>>2]=0;J[c+76>>2]=d;J[c+80>>2]=e;N[c+96>>2]=N[b+36>>2];N[c+100>>2]=N[b+40>>2];break a;case 9:c=qp(Hl(a,168),b);J[c>>2]=247676;d=J[b+24>>2];J[c+68>>2]=J[b+20>>2];J[c+72>>2]=d;d=J[b+32>>2];J[c+76>>2]=J[b+28>>2];J[c+80>>2]=d;N[c+84>>2]=N[b+36>>2];J[c+160>>2]=0;J[c+164>>2]=0;J[c+88>>2]=0;J[c+92>>2]=0;break a;default:Z(62644,38073,113,62025);B();case 2:break b}}c=qp(Hl(a,176),b);J[c>>2]=247436;d=J[b+24>>2];J[c+80>>2]=J[b+20>>2];J[c+84>>2]=d;d=J[b+32>>2];J[c+88>>2]=J[b+28>>2];J[c+92>>2]=d;N[c+104>>2]=N[b+36>>2];N[c+68>>2]=N[b+40>>2];N[c+72>>2]=N[b+44>>2];J[c+96>>2]=0;J[c+100>>2]=0;J[c+76>>2]=0}J[c+8>>2]=0;d=J[a+102956>>2];J[c+12>>2]=d;if(d){J[d+8>>2]=c}J[a+102956>>2]=c;J[a+102964>>2]=J[a+102964>>2]+1;J[c+24>>2]=0;a=J[c+52>>2];J[c+16>>2]=a;J[c+20>>2]=c;d=J[c+48>>2];e=J[d+108>>2];J[c+28>>2]=e;j=c+16|0;if(e){J[e+8>>2]=j}J[d+108>>2]=j;J[c+40>>2]=0;J[c+32>>2]=d;J[c+36>>2]=c;d=J[a+108>>2];J[c+44>>2]=d;e=c+32|0;if(d){J[d+8>>2]=e}J[a+108>>2]=e;k:{if(K[b+16|0]){break k}a=J[J[b+12>>2]+112>>2];if(!a){break k}b=J[b+8>>2];while(1){if((b|0)==J[a>>2]){d=J[a+4>>2];J[d+4>>2]=J[d+4>>2]|8}a=J[a+12>>2];if(a){continue}break}}return c}Z(62630,42374,215,13093);B()}function AQ(a,b,c,d){var e=0,f=Q(0),g=Q(0),h=0,i=Q(0),j=Q(0),k=0,l=0,m=Q(0),n=Q(0),o=Q(0),p=Q(0),q=Q(0),r=Q(0),s=0,t=Q(0),u=Q(0),v=Q(0),w=0,x=Q(0),y=0,z=0,A=0,B=0,C=0,D=0,E=0,F=0,G=Q(0),M=Q(0);y=Ui-48|0;Ui=y;k=0;a:{if(!b){break a}e=J[c>>2];h=J[e+140>>2];k=h;h=jM(y+12|0);MP(b,c,e,k,d,h);I[c+24>>1]=L[h+30>>1];b:{if(K[a+17|0]==1){k=J[e+168>>2];if((k|0)<0){dj(4,88458,124472,0);k=0;break a}s=J[b+132>>2];C=J[e+144>>2];z=J[e+152>>2];A=J[e+156>>2];e=Ui-208|0;Ui=e;c:{if(!k){dj(4,89293,124531,0);break c}f=N[h+8>>2];d:{if(!J[h+4>>2]){if(f!=Q(0)){break d}dj(4,89293,116754,0);break c}if(!(f>Q(0))){break d}dj(4,89293,116811,0);break c}g=Q(1);a=J[s+88>>2];b=J[h>>2];B=(a|0)!=0&(b|0)!=0;if(B){Zi[a|0](b,e+160|0);f=N[e+200>>2];g=N[e+192>>2];i=N[e+196>>2];g=g>2]+72>>2];a=Yj(92);H[a+28|0]=1;J[a+4>>2]=31;J[a+8>>2]=0;J[a+24>>2]=0;J[a+88>>2]=0;J[a+80>>2]=1065353216;J[a+84>>2]=1065353216;J[a+72>>2]=0;J[a+76>>2]=1065353216;J[a+64>>2]=0;J[a+68>>2]=1;J[a+56>>2]=-581039253;J[a+60>>2]=0;J[a+48>>2]=-581039253;J[a+52>>2]=-581039253;J[a+40>>2]=1566444395;J[a+44>>2]=0;J[a+32>>2]=1566444395;J[a+36>>2]=1566444395;J[a+16>>2]=0;J[a+20>>2]=0;J[a>>2]=246068;F=(g!=Q(1)|b)&1;while(1){b=J[(l<<2)+C>>2];e:{if(!F){break e}f:{switch(oxa(J[b+4>>2],31)|0){case 4:d=Yj(52);f=N[b+12>>2];i=N[b+28>>2];b=d;J[b+4>>2]=35;J[b+8>>2]=0;J[b>>2]=246356;J[b+44>>2]=1025758986;J[b+20>>2]=1065353216;J[b+24>>2]=0;J[b+12>>2]=1065353216;J[b+16>>2]=1065353216;J[b>>2]=246264;f=Q(i*f);N[b+44>>2]=f;N[b+28>>2]=f;J[b+4>>2]=8;J[b>>2]=246688;break e;case 0:d=Yj(52);f=N[b+28>>2];i=N[b+32>>2];m=N[b+36>>2];j=Q(Zi[J[J[b>>2]+44>>2]](b));r=Q(Zi[J[J[b>>2]+44>>2]](b));o=Q(Zi[J[J[b>>2]+44>>2]](b));b=Dv(d);J[b+4>>2]=0;J[b>>2]=245812;n=Q(Zi[E|0](b));t=Q(Zi[J[J[b>>2]+44>>2]](b));u=Q(Zi[J[J[b>>2]+44>>2]](b));J[b+40>>2]=0;N[b+36>>2]=Q(Q(m+o)*N[b+20>>2])-u;N[b+32>>2]=Q(Q(i+r)*N[b+16>>2])-t;N[b+28>>2]=Q(Q(f+j)*N[b+12>>2])-n;break e;case 5:d=Yj(56);w=J[b+52>>2];b=b+28|0;f=N[(w<<2)+b>>2];b=ZT(d,N[b+((w+2|0)%3<<2)>>2],Q(f+f));break e;case 2:break f;default:break e}}b=GT(Yj(108),J[b+100>>2],J[b+92>>2],16)}g:{if(D){w=l<<4;d=w+z|0;r=N[d>>2];o=N[d+4>>2];n=N[d+8>>2];d=w+A|0;i=N[d+12>>2];j=N[d+8>>2];f=N[d>>2];m=N[d+4>>2];J[e+68>>2]=0;N[e+64>>2]=q*n;N[e+60>>2]=q*o;N[e+56>>2]=q*r;J[e+52>>2]=0;J[e+36>>2]=0;J[e+20>>2]=0;o=Q(Q(2)/Q(Q(i*i)+Q(Q(j*j)+Q(Q(f*f)+Q(m*m)))));r=Q(j*o);n=Q(m*r);t=Q(f*o);u=Q(i*t);N[e+44>>2]=n+u;v=Q(f*r);o=Q(m*o);p=Q(i*o);N[e+40>>2]=v-p;N[e+32>>2]=n-u;n=Q(f*o);i=Q(i*r);N[e+24>>2]=n+i;N[e+16>>2]=v+p;N[e+12>>2]=n-i;f=Q(f*t);i=Q(m*o);N[e+48>>2]=Q(1)-Q(f+i);p=f;f=Q(j*r);N[e+28>>2]=Q(1)-Q(p+f);N[e+8>>2]=Q(1)-Q(i+f);gz(a,e+8|0,b);break g}if(!(H[333216]&1)){if(!(H[333268]&1)){J[83306]=0;J[83307]=0;J[83305]=1065353216;J[83311]=0;J[83312]=0;J[83310]=1065353216;J[83315]=1065353216;J[83316]=0;H[333268]=1;J[83308]=0;J[83309]=0;J[83313]=0;J[83314]=0}J[83300]=0;J[83301]=0;H[333216]=1;d=J[83306];J[83288]=J[83305];J[83289]=d;d=J[83310];J[83292]=J[83309];J[83293]=d;d=J[83314];J[83296]=J[83313];J[83297]=d;J[83302]=0;J[83303]=0;d=J[83308];J[83290]=J[83307];J[83291]=d;d=J[83312];J[83294]=J[83311];J[83295]=d;d=J[83316];J[83298]=J[83315];J[83299]=d}gz(a,333152,b)}l=l+1|0;if((k|0)!=(l|0)){continue}break}if(g!=Q(1)){J[e+20>>2]=0;N[e+16>>2]=g;N[e+12>>2]=g;N[e+8>>2]=g;Zi[J[J[a>>2]+24>>2]](a,e+8|0)}J[e+152>>2]=0;J[e+156>>2]=0;J[e+144>>2]=0;J[e+148>>2]=0;b=J[h+4>>2];if(!b){Zi[J[J[a>>2]+32>>2]](a,N[h+8>>2],e+144|0);b=J[h+4>>2]}h:{if((b|0)!=3){b=nj(20);d=J[s+92>>2];l=J[s+88>>2];k=J[h>>2];J[b+4>>2]=J[s+64>>2];J[b+8>>2]=k;J[b+12>>2]=l;J[b+16>>2]=d;J[b>>2]=243624;f=N[h+8>>2];d=J[e+156>>2];J[e+92>>2]=J[e+152>>2];J[e+96>>2]=d;J[e+28>>2]=0;J[e+32>>2]=0;J[e+48>>2]=0;J[e+52>>2]=0;J[e+76>>2]=0;J[e+68>>2]=0;J[e+72>>2]=0;J[e+80>>2]=a;J[e+12>>2]=b;N[e+8>>2]=f;a=J[e+148>>2];J[e+84>>2]=J[e+144>>2];J[e+88>>2]=a;J[e+136>>2]=1008981770;J[e+140>>2]=1008981770;J[e+128>>2]=1000593162;J[e+132>>2]=1008981770;H[e+124|0]=0;J[e+116>>2]=1061997773;J[e+120>>2]=1065353216;J[e+20>>2]=0;J[e+24>>2]=0;J[e+16>>2]=1065353216;J[e+36>>2]=1065353216;J[e+40>>2]=0;J[e+44>>2]=0;J[e+56>>2]=1065353216;J[e+60>>2]=0;J[e+64>>2]=0;N[e+108>>2]=N[h+12>>2];N[e+112>>2]=N[h+16>>2];N[e+100>>2]=N[h+20>>2];N[e+104>>2]=N[h+24>>2];b=PE(Yj(608));H[b+492|0]=1;J[b>>2]=243976;J[b+488>>2]=0;J[b+480>>2]=0;J[b+484>>2]=0;dT(b,e+8|0);a=J[h+32>>2];J[b+548>>2]=0;f=a&1?Q(0):Q(1);N[b+544>>2]=f;N[b+540>>2]=f;N[b+536>>2]=f;l=2;i:{switch(J[h+4>>2]-1|0){case 1:l=1;case 0:J[b+204>>2]=l;break;default:break i}}if(!(K[h+32|0]&4)){break h}a=J[s+84>>2];Zi[J[J[a>>2]+156>>2]](a,b,I[h+28>>1],I[h+30>>1]);break h}b=PE(Yj(276));H[b+272|0]=1;J[b>>2]=245640;J[b+268>>2]=0;J[b+260>>2]=0;J[b+264>>2]=0;J[b+232>>2]=3;j:{if(B){g=N[e+172>>2];m=N[e+168>>2];f=N[e+160>>2];i=N[e+164>>2];j=Q(Q(2)/Q(Q(g*g)+Q(Q(m*m)+Q(Q(f*f)+Q(i*i)))));q=Q(m*j);n=Q(i*q);x=Q(f*j);t=Q(g*x);r=Q(n+t);u=Q(f*q);j=Q(i*j);v=Q(g*j);o=Q(u-v);n=Q(n-t);p=Q(f*j);g=Q(g*q);t=Q(p+g);u=Q(u+v);v=Q(p-g);f=Q(f*x);g=Q(i*j);j=Q(Q(1)-Q(f+g));p=f;f=Q(m*q);m=Q(Q(1)-Q(p+f));q=Q(Q(1)-Q(g+f));g=N[J[s+64>>2]+72>>2];f=Q(N[e+184>>2]*g);x=Q(N[e+180>>2]*g);g=Q(N[e+176>>2]*g);i=Q(0);p=Q(0);break j}k:{if(H[333216]&1){i=N[83303];x=N[83301];g=N[83300];f=N[83302];break k}if(!(H[333268]&1)){J[83306]=0;J[83307]=0;J[83305]=1065353216;J[83311]=0;J[83312]=0;J[83310]=1065353216;J[83315]=1065353216;J[83316]=0;H[333268]=1;J[83308]=0;J[83309]=0;J[83313]=0;J[83314]=0}J[83300]=0;J[83301]=0;H[333216]=1;d=J[83306];J[83288]=J[83305];J[83289]=d;d=J[83310];J[83292]=J[83309];J[83293]=d;d=J[83314];J[83296]=J[83313];J[83297]=d;J[83302]=0;J[83303]=0;d=J[83308];J[83290]=J[83307];J[83291]=d;d=J[83312];J[83294]=J[83311];J[83295]=d;d=J[83316];J[83298]=J[83315];J[83299]=d;i=Q(0);g=Q(0);f=Q(0)}G=N[83299];j=N[83298];r=N[83297];o=N[83296];M=N[83295];n=N[83294];m=N[83293];t=N[83292];u=N[83290];v=N[83289];q=N[83288];p=N[83291]}N[b+64>>2]=i;N[b+60>>2]=f;N[b+56>>2]=x;N[b+52>>2]=g;N[b+48>>2]=G;N[b+44>>2]=j;N[b+40>>2]=r;N[b+36>>2]=o;N[b+32>>2]=M;N[b+28>>2]=n;N[b+24>>2]=m;N[b+20>>2]=t;N[b+16>>2]=p;N[b+12>>2]=u;N[b+8>>2]=v;N[b+4>>2]=q;Zi[J[J[b>>2]+12>>2]](b,a);J[b+204>>2]=J[b+204>>2]|4;if(!(K[h+32|0]&4)){break h}a=J[s+84>>2];Zi[J[J[a>>2]+32>>2]](a,b,I[h+28>>1],I[h+30>>1])}J[b+236>>2]=J[h>>2];l=nj(8);J[l>>2]=b;I[l+4>>1]=L[h+28>>1];I[l+6>>1]=L[h+30>>1]}Ui=e+208|0;k=0;if(!l){break a}a=J[c+8>>2];if(a){iM(s,a)}J[c+8>>2]=l;break b}d=J[b+132>>2];a=YL(d,h,J[e+148>>2],J[e+152>>2],J[e+156>>2],J[e+168>>2]&2147483647);k=0;if(!a){break a}e=J[c+8>>2];if(e){vC(d,e)}J[c+8>>2]=a;if(J[J[c>>2]+168>>2]<0){kM(a)}CP(b,c)}k=1}Ui=y+48|0;return k}function kU(a,b){var c=0,d=0,e=0,f=0,g=0,h=0,i=0,j=0,k=0,l=0,m=0;d=Ui-16|0;Ui=d;g=1;a:{b:{switch(b-a>>4){case 2:if(J[b-8>>2]<=J[a+8>>2]){break a}c=J[a+12>>2];J[d+8>>2]=J[a+8>>2];J[d+12>>2]=c;c=J[a+4>>2];J[d>>2]=J[a>>2];J[d+4>>2]=c;c=b-16|0;b=J[c+12>>2];J[a+8>>2]=J[c+8>>2];J[a+12>>2]=b;b=J[c+4>>2];J[a>>2]=J[c>>2];J[a+4>>2]=b;a=J[d+12>>2];J[c+8>>2]=J[d+8>>2];J[c+12>>2]=a;a=J[d+4>>2];J[c>>2]=J[d>>2];J[c+4>>2]=a;break a;case 3:e=b-16|0;c=b-8|0;f=J[c>>2];b=J[a+24>>2];if((b|0)<=J[a+8>>2]){if((b|0)>=(f|0)){break a}b=J[a+28>>2];J[d+8>>2]=J[a+24>>2];J[d+12>>2]=b;b=J[a+20>>2];J[d>>2]=J[a+16>>2];J[d+4>>2]=b;b=J[e+12>>2];J[a+24>>2]=J[e+8>>2];J[a+28>>2]=b;b=J[e+4>>2];J[a+16>>2]=J[e>>2];J[a+20>>2]=b;b=J[d+12>>2];J[e+8>>2]=J[d+8>>2];J[e+12>>2]=b;b=J[d+4>>2];J[e>>2]=J[d>>2];J[e+4>>2]=b;if(J[a+24>>2]<=J[a+8>>2]){break a}b=J[a+12>>2];J[d+8>>2]=J[a+8>>2];J[d+12>>2]=b;b=J[a+4>>2];J[d>>2]=J[a>>2];J[d+4>>2]=b;b=J[a+28>>2];J[a+8>>2]=J[a+24>>2];J[a+12>>2]=b;b=J[a+20>>2];J[a>>2]=J[a+16>>2];J[a+4>>2]=b;b=J[d+12>>2];J[a+24>>2]=J[d+8>>2];J[a+28>>2]=b;b=J[d+4>>2];J[a+16>>2]=J[d>>2];J[a+20>>2]=b;break a}if((b|0)<(f|0)){b=J[a+12>>2];J[d+8>>2]=J[a+8>>2];J[d+12>>2]=b;b=J[a+4>>2];J[d>>2]=J[a>>2];J[d+4>>2]=b;b=J[e+12>>2];J[a+8>>2]=J[e+8>>2];J[a+12>>2]=b;b=J[e+4>>2];J[a>>2]=J[e>>2];J[a+4>>2]=b;a=J[d+12>>2];J[e+8>>2]=J[d+8>>2];J[e+12>>2]=a;a=J[d+4>>2];J[e>>2]=J[d>>2];J[e+4>>2]=a;break a}b=J[a+12>>2];J[d+8>>2]=J[a+8>>2];J[d+12>>2]=b;b=J[a+4>>2];J[d>>2]=J[a>>2];J[d+4>>2]=b;b=J[a+28>>2];J[a+8>>2]=J[a+24>>2];J[a+12>>2]=b;b=J[a+20>>2];J[a>>2]=J[a+16>>2];J[a+4>>2]=b;b=J[d+12>>2];J[a+24>>2]=J[d+8>>2];J[a+28>>2]=b;b=J[d+4>>2];J[a+16>>2]=J[d>>2];J[a+20>>2]=b;if(J[c>>2]<=J[a+24>>2]){break a}b=J[a+28>>2];J[d+8>>2]=J[a+24>>2];J[d+12>>2]=b;b=J[a+20>>2];J[d>>2]=J[a+16>>2];J[d+4>>2]=b;b=J[e+12>>2];J[a+24>>2]=J[e+8>>2];J[a+28>>2]=b;b=J[e+4>>2];J[a+16>>2]=J[e>>2];J[a+20>>2]=b;a=J[d+12>>2];J[e+8>>2]=J[d+8>>2];J[e+12>>2]=a;a=J[d+4>>2];J[e>>2]=J[d>>2];J[e+4>>2]=a;break a;case 4:e=J[a+40>>2];c=J[a+24>>2];f=J[a+8>>2];c:{if((c|0)<=(f|0)){if((c|0)>=(e|0)){break c}c=J[a+28>>2];J[d+8>>2]=J[a+24>>2];J[d+12>>2]=c;c=J[a+20>>2];J[d>>2]=J[a+16>>2];J[d+4>>2]=c;c=J[a+44>>2];J[a+24>>2]=J[a+40>>2];J[a+28>>2]=c;c=J[a+36>>2];J[a+16>>2]=J[a+32>>2];J[a+20>>2]=c;c=J[d+12>>2];J[a+40>>2]=J[d+8>>2];J[a+44>>2]=c;c=J[d+4>>2];J[a+32>>2]=J[d>>2];J[a+36>>2]=c;if((f|0)>=J[a+24>>2]){break c}c=J[a+12>>2];J[d+8>>2]=J[a+8>>2];J[d+12>>2]=c;c=J[a+4>>2];J[d>>2]=J[a>>2];J[d+4>>2]=c;c=J[a+28>>2];J[a+8>>2]=J[a+24>>2];J[a+12>>2]=c;c=J[a+20>>2];J[a>>2]=J[a+16>>2];J[a+4>>2]=c;c=J[d+12>>2];J[a+24>>2]=J[d+8>>2];J[a+28>>2]=c;c=J[d+4>>2];J[a+16>>2]=J[d>>2];J[a+20>>2]=c;break c}if((c|0)<(e|0)){c=J[a+12>>2];J[d+8>>2]=J[a+8>>2];J[d+12>>2]=c;c=J[a+4>>2];J[d>>2]=J[a>>2];J[d+4>>2]=c;c=J[a+44>>2];J[a+8>>2]=J[a+40>>2];J[a+12>>2]=c;c=J[a+36>>2];J[a>>2]=J[a+32>>2];J[a+4>>2]=c;c=J[d+12>>2];J[a+40>>2]=J[d+8>>2];J[a+44>>2]=c;c=J[d+4>>2];J[a+32>>2]=J[d>>2];J[a+36>>2]=c;break c}c=J[a+12>>2];J[d+8>>2]=J[a+8>>2];J[d+12>>2]=c;c=J[a+4>>2];J[d>>2]=J[a>>2];J[d+4>>2]=c;c=J[a+28>>2];J[a+8>>2]=J[a+24>>2];J[a+12>>2]=c;c=J[a+20>>2];J[a>>2]=J[a+16>>2];J[a+4>>2]=c;c=J[d+12>>2];J[a+24>>2]=J[d+8>>2];J[a+28>>2]=c;c=J[d+4>>2];J[a+16>>2]=J[d>>2];J[a+20>>2]=c;if((e|0)<=J[a+24>>2]){break c}c=J[a+28>>2];J[d+8>>2]=J[a+24>>2];J[d+12>>2]=c;c=J[a+20>>2];J[d>>2]=J[a+16>>2];J[d+4>>2]=c;c=J[a+44>>2];J[a+24>>2]=J[a+40>>2];J[a+28>>2]=c;c=J[a+36>>2];J[a+16>>2]=J[a+32>>2];J[a+20>>2]=c;c=J[d+12>>2];J[a+40>>2]=J[d+8>>2];J[a+44>>2]=c;c=J[d+4>>2];J[a+32>>2]=J[d>>2];J[a+36>>2]=c}if(J[b-8>>2]<=J[a+40>>2]){break a}c=J[a+44>>2];J[d+8>>2]=J[a+40>>2];J[d+12>>2]=c;c=J[a+36>>2];J[d>>2]=J[a+32>>2];J[d+4>>2]=c;c=b-16|0;b=J[c+12>>2];J[a+40>>2]=J[c+8>>2];J[a+44>>2]=b;b=J[c+4>>2];J[a+32>>2]=J[c>>2];J[a+36>>2]=b;b=J[d+12>>2];J[c+8>>2]=J[d+8>>2];J[c+12>>2]=b;b=J[d+4>>2];J[c>>2]=J[d>>2];J[c+4>>2]=b;if(J[a+40>>2]<=J[a+24>>2]){break a}b=J[a+28>>2];J[d+8>>2]=J[a+24>>2];J[d+12>>2]=b;b=J[a+20>>2];J[d>>2]=J[a+16>>2];J[d+4>>2]=b;b=J[a+44>>2];J[a+24>>2]=J[a+40>>2];J[a+28>>2]=b;b=J[a+36>>2];J[a+16>>2]=J[a+32>>2];J[a+20>>2]=b;b=J[d+12>>2];J[a+40>>2]=J[d+8>>2];J[a+44>>2]=b;b=J[d+4>>2];J[a+32>>2]=J[d>>2];J[a+36>>2]=b;if(J[a+24>>2]<=J[a+8>>2]){break a}b=J[a+12>>2];J[d+8>>2]=J[a+8>>2];J[d+12>>2]=b;b=J[a+4>>2];J[d>>2]=J[a>>2];J[d+4>>2]=b;b=J[a+28>>2];J[a+8>>2]=J[a+24>>2];J[a+12>>2]=b;b=J[a+20>>2];J[a>>2]=J[a+16>>2];J[a+4>>2]=b;b=J[d+12>>2];J[a+24>>2]=J[d+8>>2];J[a+28>>2]=b;b=J[d+4>>2];J[a+16>>2]=J[d>>2];J[a+20>>2]=b;break a;case 5:DF(a,a+16|0,a+32|0,a+48|0,b-16|0);break a;case 0:case 1:break a;default:break b}}e=a+32|0;h=J[a+40>>2];c=J[a+24>>2];f=J[a+8>>2];d:{if((c|0)<=(f|0)){if((c|0)>=(h|0)){break d}c=J[a+28>>2];J[d+8>>2]=J[a+24>>2];J[d+12>>2]=c;c=J[a+20>>2];J[d>>2]=J[a+16>>2];J[d+4>>2]=c;c=J[e+12>>2];J[a+24>>2]=J[e+8>>2];J[a+28>>2]=c;c=J[e+4>>2];J[a+16>>2]=J[e>>2];J[a+20>>2]=c;c=J[d+12>>2];J[e+8>>2]=J[d+8>>2];J[e+12>>2]=c;c=J[d+4>>2];J[e>>2]=J[d>>2];J[e+4>>2]=c;if((f|0)>=J[a+24>>2]){break d}c=J[a+12>>2];J[d+8>>2]=J[a+8>>2];J[d+12>>2]=c;c=J[a+4>>2];J[d>>2]=J[a>>2];J[d+4>>2]=c;c=J[a+28>>2];J[a+8>>2]=J[a+24>>2];J[a+12>>2]=c;c=J[a+20>>2];J[a>>2]=J[a+16>>2];J[a+4>>2]=c;c=J[d+12>>2];J[a+24>>2]=J[d+8>>2];J[a+28>>2]=c;c=J[d+4>>2];J[a+16>>2]=J[d>>2];J[a+20>>2]=c;break d}if((c|0)<(h|0)){c=J[a+12>>2];J[d+8>>2]=J[a+8>>2];J[d+12>>2]=c;c=J[a+4>>2];J[d>>2]=J[a>>2];J[d+4>>2]=c;c=J[e+12>>2];J[a+8>>2]=J[e+8>>2];J[a+12>>2]=c;c=J[e+4>>2];J[a>>2]=J[e>>2];J[a+4>>2]=c;c=J[d+12>>2];J[e+8>>2]=J[d+8>>2];J[e+12>>2]=c;c=J[d+4>>2];J[e>>2]=J[d>>2];J[e+4>>2]=c;break d}c=J[a+12>>2];J[d+8>>2]=J[a+8>>2];J[d+12>>2]=c;c=J[a+4>>2];J[d>>2]=J[a>>2];J[d+4>>2]=c;c=J[a+28>>2];J[a+8>>2]=J[a+24>>2];J[a+12>>2]=c;c=J[a+20>>2];J[a>>2]=J[a+16>>2];J[a+4>>2]=c;c=J[d+12>>2];J[a+24>>2]=J[d+8>>2];J[a+28>>2]=c;c=J[d+4>>2];J[a+16>>2]=J[d>>2];J[a+20>>2]=c;if((h|0)<=J[a+24>>2]){break d}c=J[a+28>>2];J[d+8>>2]=J[a+24>>2];J[d+12>>2]=c;c=J[a+20>>2];J[d>>2]=J[a+16>>2];J[d+4>>2]=c;c=J[e+12>>2];J[a+24>>2]=J[e+8>>2];J[a+28>>2]=c;c=J[e+4>>2];J[a+16>>2]=J[e>>2];J[a+20>>2]=c;c=J[d+12>>2];J[e+8>>2]=J[d+8>>2];J[e+12>>2]=c;c=J[d+4>>2];J[e>>2]=J[d>>2];J[e+4>>2]=c}f=a+48|0;if((f|0)==(b|0)){break a}while(1){e:{i=J[f+8>>2];if((i|0)<=J[e+8>>2]){break e}l=J[f+12>>2];h=J[f>>2];m=J[f+4>>2];c=f;while(1){f:{g=e;j=J[e+4>>2];J[c>>2]=J[e>>2];J[c+4>>2]=j;j=J[e+12>>2];J[c+8>>2]=J[e+8>>2];J[c+12>>2]=j;if((a|0)==(e|0)){g=a;break f}e=g-16|0;c=g;if(J[c-8>>2]<(i|0)){continue}}break}J[g+12>>2]=l;J[g+8>>2]=i;J[g>>2]=h;J[g+4>>2]=m;k=k+1|0;if((k|0)!=8){break e}g=(f+16|0)==(b|0);break a}e=f;f=e+16|0;if((f|0)!=(b|0)){continue}break}g=1}Ui=d+16|0;return g}function u4(a,b,c,d,e,f,g,h){a=a|0;b=b|0;c=c|0;d=d|0;e=e|0;f=f|0;g=g|0;h=h|0;var i=0,j=0,k=0,l=0,m=0,n=0,o=0,p=0,q=0,r=0,s=0,t=0,u=0,v=0;d=-2;i=J[a+2200>>2];a:{if(!i){break a}i=J[J[a+2196>>2]+(mxa(b,c,i)<<2)>>2];if((i|0)==-1){break a}k=J[a+2204>>2];while(1){i=k+P(i,24)|0;if(J[i>>2]!=(b|0)|J[i+4>>2]!=(c|0)){i=J[i+20>>2];if((i|0)!=-1){continue}break a}break}d=-3;if(ex(J[a+2188>>2],J[i+16>>2])){break a}q=e;d=0;b=-1;b:{i=J[a+2188>>2];if(!i){break b}b=-33;n=J[i+96>>2];if(n>>>0<=e>>>0){break b}s=g;o=-3;c:{d:{e:{if(J[i+20>>2]!=1){break e}b=J[i+88>>2];if((b|0)<0){break e}m=Ui-32|0;Ui=m;f:{if(!i|!J[i+72>>2]){break f}e=Zi[J[i+40>>2]](J[i+52>>2],1,9560)|0;if(!e){J[i+28>>2]=16;break f}g=e- -64|0;d=J[i+72>>2];c=0;g:{if(!d){break g}c=0;if(b>>>0>=M[i+16>>2]){break g}c=J[d>>2]+J[J[d+16>>2]+(b<<2)>>2]|0}h:{if(!tw(i,b,c,g)){break h}if(K[e+84|0]&97){J[i+28>>2]=5;break h}i:{switch(L[e+86>>1]){default:J[i+28>>2]=4;break h;case 0:case 8:break i}}d=0;J[e+9552>>2]=0;J[e+8>>2]=0;J[e+4>>2]=0;J[e>>2]=i;J[e+1184>>2]=0;J[e+1176>>2]=0;J[e+1180>>2]=0;J[e+48>>2]=0;J[e+52>>2]=0;J[e+24>>2]=0;J[e+28>>2]=0;c=J[e+124>>2];b=J[e+120>>2];J[e+56>>2]=b;J[e+60>>2]=c;if((Zi[J[i+56>>2]](J[i+68>>2],b,c,m,30)|0)!=30){J[i+28>>2]=20;Zi[J[i+44>>2]](J[i+52>>2],e);break f}if(J[m>>2]!=67324752){J[i+28>>2]=9;Zi[J[i+44>>2]](J[i+52>>2],e);break f}g=L[m+28>>1];k=J[e+56>>2];c=k+L[m+26>>1]|0;b=J[e+60>>2];b=c>>>0>>0?b+1|0:b;k=c;c=c+g|0;g=k>>>0>c>>>0?b+1|0:b;b=c+30|0;g=b>>>0<30?g+1|0:g;k=b;J[e+56>>2]=b;J[e+60>>2]=g;l=J[i>>2];b=J[e+96>>2];r=k+b|0;c=J[e+100>>2];j=c+g|0;o=J[i+4>>2];j=b>>>0>r>>>0?j+1|0:j;if((o|0)==(j|0)&l>>>0>>0|j>>>0>o>>>0){J[i+28>>2]=9;Zi[J[i+44>>2]](J[i+52>>2],e);break f}g=J[J[i+72>>2]+72>>2];j:{if(g){J[e+32>>2]=b;J[e+36>>2]=c;J[e+1176>>2]=g+k;g=b;k=c;d=16;break j}k:{if(L[e+86>>1]){g=!c&b>>>0>=65536|(c|0)!=0;b=g?65536:b;J[e+16>>2]=b;J[e+20>>2]=g?0:c;b=Zi[J[i+40>>2]](J[i+52>>2],1,b)|0;J[e+1176>>2]=b;if(b){b=J[e+96>>2];c=J[e+100>>2];break k}J[i+28>>2]=16;Zi[J[i+44>>2]](J[i+52>>2],e);break f}J[e+16>>2]=0;J[e+20>>2]=0}g=0;k=0;d=32}d=d+e|0;J[d>>2]=g;J[d+4>>2]=k;J[e+40>>2]=b;J[e+44>>2]=c;if(!L[e+86>>1]){d=e;break f}J[e+1188>>2]=0;b=Zi[J[i+40>>2]](J[i+52>>2],1,32768)|0;J[e+1180>>2]=b;if(b){d=e;break f}J[i+28>>2]=16;b=J[e+1176>>2];if(b){Zi[J[i+44>>2]](J[i+52>>2],b)}}Zi[J[i+44>>2]](J[i+52>>2],e);d=0}Ui=m+32|0;b=-34;c=d;if(!c){break b}o=0;l:{if(!(J[i+96>>2]|J[i+100>>2])){break l}r=n>>>0>>0?n-q|0:f;if(!r){break l}m=r;n=0;while(1){t=o+s|0;l=t;d=0;p=Ui-16|0;Ui=p;m:{if(!c){break m}b=J[c>>2];if(!b|!l){break m}e=J[b+72>>2];if(!e){break m}if(!(!L[c+86>>1]|K[c+5|0]&4)){u=c+1188|0;b=J[c+1184>>2];while(1){e=J[c+1180>>2];f=J[c+48>>2]&32767;J[p+8>>2]=32768-f;j=e+f|0;n:{o:{if(b){break o}b=J[c+32>>2];p:{if(b|J[c+36>>2]){g=J[c+40>>2];k=J[c+44>>2];break p}g=J[c+40>>2];k=J[c+44>>2];b=0;f=J[c>>2];if(J[J[f+72>>2]+72>>2]){break p}b=J[c+16>>2];v=g;e=J[c+20>>2];g=(k|0)==(e|0)&b>>>0>>0|e>>>0>>0;b=g?b:v;J[c+32>>2]=b;J[c+36>>2]=g?e:k;b=Zi[J[f+56>>2]](J[f+68>>2],J[c+56>>2],J[c+60>>2],J[c+1176>>2],b)|0;if((b|0)!=J[c+32>>2]|J[c+36>>2]){b=J[c>>2];if(b){J[b+28>>2]=20}J[c+8>>2]=-1;break m}J[c+24>>2]=0;J[c+28>>2]=0;e=J[c+60>>2];f=b+J[c+56>>2]|0;e=f>>>0>>0?e+1|0:e;J[c+56>>2]=f;J[c+60>>2]=e;e=J[c+40>>2];g=e-b|0;e=J[c+44>>2]-(b>>>0>e>>>0)|0;k=e;J[c+40>>2]=g;J[c+44>>2]=e;e=J[c+1180>>2]}J[p+12>>2]=b;J[c+8>>2]=dG(u,J[c+1176>>2]+J[c+24>>2]|0,p+12|0,e,j,p+8|0,((g|k)!=0)<<1);e=J[c+32>>2];b=J[p+12>>2];f=e-b|0;e=J[c+36>>2]-(b>>>0>e>>>0)|0;J[c+32>>2]=f;J[c+36>>2]=e;e=J[c+28>>2];f=J[c+24>>2];b=f+b|0;J[c+24>>2]=b;J[c+28>>2]=b>>>0>>0?e+1|0:e;b=J[p+8>>2];J[c+1184>>2]=b;if(b){break o}b=0;break n}e=m-d|0;g=b>>>0>e>>>0?e:b;hj(d+l|0,j,g);b=J[c+9552>>2]^-1;f=g;if(g>>>0>3){while(1){b=J[(((K[j|0]^b)&255)<<2)+184704>>2]^b>>>8;b=b>>>8^J[(((b^K[j+1|0])&255)<<2)+184704>>2];b=b>>>8^J[(((b^K[j+2|0])&255)<<2)+184704>>2];b=b>>>8^J[(((b^K[j+3|0])&255)<<2)+184704>>2];j=j+4|0;f=f-4|0;if(f>>>0>3){continue}break}}q:{if(!f){break q}if(f&1){b=J[(((K[j|0]^b)&255)<<2)+184704>>2]^b>>>8;j=j+1|0;e=f-1|0}else{e=f}if((f|0)==1){break q}while(1){b=J[(((K[j|0]^b)&255)<<2)+184704>>2]^b>>>8;b=J[(((b^K[j+1|0])&255)<<2)+184704>>2]^b>>>8;j=j+2|0;e=e-2|0;if(e){continue}break}}J[c+9552>>2]=b^-1;b=J[c+1184>>2]-g|0;J[c+1184>>2]=b;j=J[c+52>>2];e=g+J[c+48>>2]|0;j=e>>>0>>0?j+1|0:j;J[c+48>>2]=e;J[c+52>>2]=j;k=J[c+108>>2];if((j|0)==(k|0)&e>>>0>M[c+104>>2]|j>>>0>k>>>0){b=J[c>>2];if(b){J[b+28>>2]=11}J[c+8>>2]=-1;break m}d=d+g|0}if(d>>>0>=m>>>0){break m}if(J[c+8>>2]-1>>>0<2){continue}break}break m}d=J[c+40>>2];f=J[c+44>>2];d=!f&d>>>0>m>>>0|f?m:d;r:{s:{t:{if(J[e+72>>2]){hj(l,J[c+1176>>2],d);J[c+1176>>2]=J[c+1176>>2]+d;break t}if((Zi[J[b+56>>2]](J[b+68>>2],J[c+56>>2],J[c+60>>2],l,d)|0)==(d|0)){break t}b=J[c>>2];if(b){J[b+28>>2]=20}J[c+8>>2]=-1;d=0;if(K[c+5|0]&4){break r}f=c+9552|0;j=J[c+9552>>2]^-1;break s}if(K[c+5|0]&4){break r}j=J[c+9552>>2]^-1;u:{if(d>>>0<=3){e=d;break u}e=d;while(1){b=J[(((K[l|0]^j)&255)<<2)+184704>>2]^j>>>8;b=b>>>8^J[(((b^K[l+1|0])&255)<<2)+184704>>2];b=b>>>8^J[(((b^K[l+2|0])&255)<<2)+184704>>2];j=b>>>8^J[(((b^K[l+3|0])&255)<<2)+184704>>2];l=l+4|0;e=e-4|0;if(e>>>0>3){continue}break}}f=c+9552|0;if(!e){break s}if(e&1){j=J[(((K[l|0]^j)&255)<<2)+184704>>2]^j>>>8;l=l+1|0;b=e-1|0}else{b=e}if((e|0)==1){break s}while(1){e=J[(((K[l|0]^j)&255)<<2)+184704>>2]^j>>>8;j=J[(((e^K[l+1|0])&255)<<2)+184704>>2]^e>>>8;l=l+2|0;b=b-2|0;if(b){continue}break}}J[f>>2]=j^-1}g=J[c+60>>2];e=J[c+56>>2];b=e+d|0;J[c+56>>2]=b;J[c+60>>2]=b>>>0>>0?g+1|0:g;e=J[c+52>>2];b=d+J[c+48>>2]|0;e=b>>>0>>0?e+1|0:e;J[c+48>>2]=b;J[c+52>>2]=e;b=J[c+40>>2];e=J[c+44>>2]-(d>>>0>b>>>0)|0;b=b-d|0;J[c+40>>2]=b;J[c+44>>2]=e}Ui=p+16|0;if(!d){break l}b=d+n|0;if(b>>>0>q>>>0){e=q-n|0;if(e>>>0>=r>>>0){break d}d=d-e|0;d=d>>>0>m>>>0?m:d;if(d>>>0>r>>>0){break c}if((q|0)!=(n|0)){el(t,e+s|0,d)}o=d+o|0;q=d+q|0;m=m-d|0}if(!J[i+100>>2]&M[i+96>>2]<=b>>>0){break l}n=b;if(m){continue}break}}e=J[c>>2];if(!e){break e}d=J[e+72>>2];if(!d){break e}v:{if(J[c+8>>2]|K[c+5|0]&4){break v}if(J[c+48>>2]!=J[c+104>>2]|J[c+52>>2]!=J[c+108>>2]){b=13}else{if(J[c+9552>>2]==J[c+88>>2]){break v}b=11}J[e+28>>2]=b;J[c+8>>2]=-1}if(!J[d+72>>2]){Zi[J[e+44>>2]](J[e+52>>2],J[c+1176>>2]);e=J[c>>2]}b=J[c+1180>>2];if(b){Zi[J[e+44>>2]](J[e+52>>2],b);e=J[c>>2]}Zi[J[e+44>>2]](J[e+52>>2],c)}b=o;break b}Z(59163,40231,1740,14837);B()}Z(59145,40231,1745,14837);B()}if((b|0)<0){b=2}else{J[h>>2]=b;b=0}Gt(J[a+2188>>2]);d=b?-3:0}return d|0}function fK(a,b,c,d,e,f,g){var h=0,i=0,j=0,k=0,l=0,m=0,n=0,o=0,p=0,q=0,r=0,s=0,t=0;j=Ui-336|0;Ui=j;t=J[a+8>>2]-J[a+12>>2]>>4;Oj(a,f,5);p=Jw(a,f);l=J[g+4>>2];k=J[g>>2];h=l-k>>2;a:{b:{c:{d:{e:{f:{g:{if((k|0)==(l|0)){break g}if(J[k>>2]!=(p|0)){m=h>>>0<=1?1:h;while(1){i=i+1|0;if((m|0)!=(i|0)&J[k+(i<<2)>>2]!=(p|0)){continue}break}if(h>>>0<=i>>>0){break g}}a=fj(a,153519,0);break f}q=g+4|0;i=J[g+8>>2];if((i|0)==(l|0)){if(H[g+12|0]&1){break e}lj(h+8|0,4,g,g+8|0,q);l=J[g+4>>2];i=J[g+8>>2]}if((i|0)==(l|0)){break d}J[q>>2]=l+4;J[l>>2]=p;uj(a,f);f=J[a+8>>2];J[f+8>>2]=0;J[a+8>>2]=f+16;if(e>>>0<=3){fj(a,68106,0)}i=d+4|0;h:{if(!$j(a,-2)){l=0;break h}n=d+e|0;l=0;while(1){if((l|0)==-1){J[j+320>>2]=-1;fj(a,5754,j+320|0)}m=kj(a,-2);k=kj(a,-1);if(m-5>>>0<=4294967293){J[j+304>>2]=(m|0)==-1?60960:J[(m<<2)+257632>>2];fj(a,137011,j+304|0)}l=l+1|0;if((n-i|0)<=1){J[j+292>>2]=l;J[j+288>>2]=e;fj(a,77099,j+288|0)}i:{j:{switch(m-3|0){case 1:H[i+1|0]=k;H[i|0]=4;J[j+332>>2]=0;h=Ij(a,-2,j+332|0);f=J[j+332>>2];r=f+4|0;s=i+2|0;if((r|0)>(n-s|0)){J[j+232>>2]=l;J[j+228>>2]=h;J[j+224>>2]=e;fj(a,77248,j+224|0);f=J[j+332>>2]}H[i+2|0]=f;H[i+3|0]=f>>>8;H[i+4|0]=f>>>16;H[i+5|0]=f>>>24;hj(i+6|0,h,f);i=r+s|0;break i;case 0:break j;default:break i}}o=ok(a,-2);H[i+1|0]=k;H[i|0]=o>=0?3:64;f=i+2|0;k:{l:{switch(J[b+4>>2]){case 0:if((n-f|0)<=1){fj(a,68106,0)}if(o>65535){J[j+240>>2]=65535;fj(a,77501,j+240|0)}if(o<4294967296&o>=0){f=~~o>>>0}else{f=0}H[i+2|0]=f;H[i+3|0]=f>>>8;i=i+4|0;break i;case 1:case 2:if(o>4294967295){J[j+256>>2]=-1;fj(a,77501,j+256|0)}if(o<4294967296&o>=0){i=~~o>>>0}else{i=0}m:{if(i>>>0<128){break m}while(1){if(f>>>0>=n>>>0){break m}H[f|0]=i|128;f=f+1|0;h=i>>>0>16383;i=i>>>7|0;if(h){continue}break}}if(f>>>0>=n>>>0){break k}H[f|0]=i&127;i=f+1|0;break i;case 3:case 4:if((n-f|0)<=3){fj(a,68106,0)}o=o<0?-o:o;if(o>4294967295){J[j+272>>2]=-1;fj(a,77501,j+272|0)}f=i;if(o<4294967296&o>=0){h=~~o>>>0}else{h=0}H[f+2|0]=h;H[f+3|0]=h>>>8;H[f+4|0]=h>>>16;H[f+5|0]=h>>>24;i=i+6|0;break i;default:break l}}Z(114101,41830,234,5636);B()}fj(a,68106,0);i=f}n:{o:{switch(k-1|0){case 0:if((n-i|0)<=0){f=(m|0)==-1?60960:J[(m<<2)+257632>>2];J[j+24>>2]=l;J[j+20>>2]=f;J[j+16>>2]=e;fj(a,77170,j+16|0)}H[i|0]=ck(a,-1);i=i+1|0;break n;case 2:f=i-c|0;h=(f+3&-4)-f|0;if((h|0)>(n-i|0)){f=(m|0)==-1?60960:J[(m<<2)+257632>>2];J[j+56>>2]=l;J[j+52>>2]=f;J[j+48>>2]=e;fj(a,77170,j+48|0)}f=ij(i,0,h)+h|0;i=n-f|0;if(!((i|0)>=8&(h|0)<=(i|0))){i=(m|0)==-1?60960:J[(m<<2)+257632>>2];J[j+40>>2]=l;J[j+36>>2]=i;J[j+32>>2]=e;fj(a,77170,j+32|0)}A(+ok(a,-1));i=v(1)|0;h=v(0)|0;H[f|0]=h;H[f+1|0]=h>>>8;H[f+2|0]=h>>>16;H[f+3|0]=h>>>24;H[f+4|0]=i;H[f+5|0]=i>>>8;H[f+6|0]=i>>>16;H[f+7|0]=i>>>24;i=f+8|0;break n;case 3:J[j+332>>2]=0;h=Ij(a,-1,j+332|0);f=J[j+332>>2];k=f+4|0;if((k|0)>(n-i|0)){J[j+72>>2]=l;J[j+68>>2]=h;J[j+64>>2]=e;fj(a,77248,j- -64|0);f=J[j+332>>2]}H[i|0]=f;H[i+1|0]=f>>>8;H[i+2|0]=f>>>16;H[i+3|0]=f>>>24;hj(i+4|0,h,f);i=i+k|0;break n;case 6:if((n-i|0)<=0){f=(m|0)==-1?60960:J[(m<<2)+257632>>2];J[j+216>>2]=l;J[j+212>>2]=f;J[j+208>>2]=e;fj(a,77170,j+208|0)}h=i+1|0;f=h-c|0;f=(f+3&-4)-f|0;if((f|0)>(n-h|0)){k=(m|0)==-1?60960:J[(m<<2)+257632>>2];J[j+200>>2]=l;J[j+196>>2]=k;J[j+192>>2]=e;fj(a,77170,j+192|0)}h=ij(h,0,f)+f|0;f=Gm(a,-1);if(f){if((n-h|0)<=11){k=(m|0)==-1?60960:J[(m<<2)+257632>>2];J[j+184>>2]=l;J[j+180>>2]=k;J[j+176>>2]=e;fj(a,77170,j+176|0)}H[i|0]=0;N[h>>2]=N[f>>2];N[h+4>>2]=N[f+4>>2];N[h+8>>2]=N[f+8>>2];i=h+12|0;break n}f=un(a,-1);if(f){if((n-h|0)<=15){k=(m|0)==-1?60960:J[(m<<2)+257632>>2];J[j+168>>2]=l;J[j+164>>2]=k;J[j+160>>2]=e;fj(a,77170,j+160|0)}H[i|0]=1;N[h>>2]=N[f>>2];N[h+4>>2]=N[f+4>>2];N[h+8>>2]=N[f+8>>2];N[h+12>>2]=N[f+12>>2];i=h+16|0;break n}f=Au(a,-1);if(f){if((n-h|0)<=15){k=(m|0)==-1?60960:J[(m<<2)+257632>>2];J[j+152>>2]=l;J[j+148>>2]=k;J[j+144>>2]=e;fj(a,77170,j+144|0)}H[i|0]=2;N[h>>2]=N[f>>2];N[h+4>>2]=N[f+4>>2];N[h+8>>2]=N[f+8>>2];N[h+12>>2]=N[f+12>>2];i=h+16|0;break n}f=zB(a,-1);if(f){if((n-h|0)<=63){k=(m|0)==-1?60960:J[(m<<2)+257632>>2];J[j+136>>2]=l;J[j+132>>2]=k;J[j+128>>2]=e;fj(a,77170,j+128|0)}H[i|0]=3;N[h>>2]=N[f>>2];N[h+4>>2]=N[f+4>>2];N[h+8>>2]=N[f+8>>2];N[h+12>>2]=N[f+12>>2];N[h+16>>2]=N[f+16>>2];N[h+20>>2]=N[f+20>>2];N[h+24>>2]=N[f+24>>2];N[h+28>>2]=N[f+28>>2];N[h+32>>2]=N[f+32>>2];N[h+36>>2]=N[f+36>>2];N[h+40>>2]=N[f+40>>2];N[h+44>>2]=N[f+44>>2];N[h+48>>2]=N[f+48>>2];N[h+52>>2]=N[f+52>>2];N[h+56>>2]=N[f+56>>2];N[h+60>>2]=N[f+60>>2];i=h- -64|0;break n}if(Lp(a,-1)){k=Vj(a,-1);f=J[k>>2];k=J[k+4>>2];if((n-h|0)<=7){m=(m|0)==-1?60960:J[(m<<2)+257632>>2];J[j+88>>2]=l;J[j+84>>2]=m;J[j+80>>2]=e;fj(a,77170,j+80|0)}H[i|0]=4;H[h|0]=f;H[h+1|0]=f>>>8;H[h+2|0]=f>>>16;H[h+3|0]=f>>>24;f=k;H[h+4|0]=f;H[h+5|0]=f>>>8;H[h+6|0]=f>>>16;H[h+7|0]=f>>>24;i=h+8|0;break n}if(Fu(a,-1)){f=Vj(a,-1);if((n-h|0)<=31){k=(m|0)==-1?60960:J[(m<<2)+257632>>2];J[j+104>>2]=l;J[j+100>>2]=k;J[j+96>>2]=e;fj(a,77170,j+96|0)}H[i|0]=5;i=K[f+28|0]|K[f+29|0]<<8|(K[f+30|0]<<16|K[f+31|0]<<24);k=K[f+24|0]|K[f+25|0]<<8|(K[f+26|0]<<16|K[f+27|0]<<24);H[h+24|0]=k;H[h+25|0]=k>>>8;H[h+26|0]=k>>>16;H[h+27|0]=k>>>24;H[h+28|0]=i;H[h+29|0]=i>>>8;H[h+30|0]=i>>>16;H[h+31|0]=i>>>24;i=K[f+20|0]|K[f+21|0]<<8|(K[f+22|0]<<16|K[f+23|0]<<24);k=K[f+16|0]|K[f+17|0]<<8|(K[f+18|0]<<16|K[f+19|0]<<24);H[h+16|0]=k;H[h+17|0]=k>>>8;H[h+18|0]=k>>>16;H[h+19|0]=k>>>24;H[h+20|0]=i;H[h+21|0]=i>>>8;H[h+22|0]=i>>>16;H[h+23|0]=i>>>24;i=K[f+12|0]|K[f+13|0]<<8|(K[f+14|0]<<16|K[f+15|0]<<24);k=K[f+8|0]|K[f+9|0]<<8|(K[f+10|0]<<16|K[f+11|0]<<24);H[h+8|0]=k;H[h+9|0]=k>>>8;H[h+10|0]=k>>>16;H[h+11|0]=k>>>24;H[h+12|0]=i;H[h+13|0]=i>>>8;H[h+14|0]=i>>>16;H[h+15|0]=i>>>24;i=K[f+4|0]|K[f+5|0]<<8|(K[f+6|0]<<16|K[f+7|0]<<24);f=K[f|0]|K[f+1|0]<<8|(K[f+2|0]<<16|K[f+3|0]<<24);H[h|0]=f;H[h+1|0]=f>>>8;H[h+2|0]=f>>>16;H[h+3|0]=f>>>24;H[h+4|0]=i;H[h+5|0]=i>>>8;H[h+6|0]=i>>>16;H[h+7|0]=i>>>24;i=h+32|0;break n}J[j+112>>2]=J[64415];fj(a,29792,j+112|0);i=h;break n;case 4:i=fK(a,b,c,i,n-i|0,-1,g)+i|0;break n;default:break o}}J[j>>2]=(k|0)==-1?60960:J[(k<<2)+257632>>2];fj(a,29792,j)}gj(a,-2);if($j(a,-2)){continue}break}}gj(a,-2);b=J[g+4>>2];if((b|0)==J[g>>2]){break c}b=b-4|0;c=J[b>>2];J[q>>2]=b;if((c|0)!=(p|0)){break b}H[d|0]=l;H[d+1|0]=l>>>8;H[d+2|0]=l>>>16;H[d+3|0]=l>>>24;if(J[a+8>>2]-J[a+12>>2]>>4!=(t|0)){break a}a=i-d|0}Ui=j+336|0;return a}Z(151729,53895,501,2284);B()}Z(112520,53895,557,53220);B()}Z(112533,53895,443,51980);B()}Z(83313,41830,707,67838);B()}Z(143244,41830,711,67838);B()}function yga(a){a=a|0;var b=0,c=0,d=0,e=0,f=0,g=0,h=Q(0),i=0,j=Q(0),k=Q(0),l=Q(0),m=Q(0),n=Q(0),o=Q(0),p=Q(0),q=Q(0),r=Q(0),s=0,t=0,u=0,v=Q(0),w=Q(0),x=Q(0),y=Q(0),z=0;c=Ui-128|0;Ui=c;s=pj(c+108|0,a,1,39481,780);i=mk(a,2);t=Yi;b=J[J[pk(a)+80>>2]+8>>2];J[c+104>>2]=0;J[c+100>>2]=0;d=c- -64|0;J[d>>2]=0;J[d+4>>2]=0;J[c+56>>2]=0;J[c+60>>2]=0;J[c+48>>2]=0;J[c+52>>2]=0;J[c+40>>2]=0;J[c+44>>2]=0;f=c+40|0;Al(a,1,b,80935,c+104|0,f,c+100|0);d=J[c+104>>2];u=J[c+100>>2];a:{if(H[u+145|0]&1){dj(4,88458,25611,0);b=1;break a}b=3;g=J[d+12>>2];b:{if(!g){break b}while(1){if(J[g>>2]!=(i|0)|J[g+4>>2]!=(t|0)){g=J[g+16>>2];if(g){continue}break b}break}b=4;d=J[g+12>>2];if(!d){break a}g=J[g+8>>2];J[c+96>>2]=g;h=N[J[J[u+132>>2]+36>>2]+68>>2];H[f|0]=K[d+61|0];b=0;c:{d:{e:{switch(g|0){case 0:N[f+4>>2]=h*N[d+104>>2];N[f+8>>2]=N[d+68>>2];N[f+12>>2]=N[d+72>>2];break d;case 1:N[f+4>>2]=h*N[d+84>>2];break d;case 2:N[f+12>>2]=N[d+116>>2];N[f+16>>2]=N[d+120>>2];N[f+20>>2]=N[d+124>>2];N[f+24>>2]=h*N[d+104>>2];N[f+28>>2]=N[d+108>>2];H[f+32|0]=K[d+112|0];H[f+33|0]=K[d+100|0];N[f+4>>2]=Q(N[J[d+52>>2]+56>>2]-N[J[d+48>>2]+56>>2])-N[d+116>>2];N[f+8>>2]=N[J[d+52>>2]+72>>2]-N[J[d+48>>2]+72>>2];break d;case 3:b=J[d+88>>2];g=J[d+84>>2];J[f+20>>2]=0;J[f+12>>2]=g;J[f+16>>2]=b;N[f+24>>2]=N[d+100>>2];H[f+28|0]=K[d+136|0];N[f+32>>2]=h*N[d+120>>2];N[f+36>>2]=h*N[d+124>>2];H[f+40|0]=K[d+137|0];N[f+44>>2]=h*N[d+128>>2];N[f+48>>2]=N[d+132>>2];b=J[d+52>>2];m=N[b+24>>2];g=J[d+48>>2];h=N[g+24>>2];k=N[d+76>>2];l=N[b+20>>2];n=N[d+80>>2];o=N[d+68>>2];j=N[g+20>>2];p=N[d+72>>2];q=N[d+84>>2];r=N[d+88>>2];N[f+4>>2]=Q(Q(Q(N[b+12>>2]+Q(Q(m*k)-Q(l*n)))-Q(N[g+12>>2]+Q(Q(h*o)-Q(j*p))))*Q(Q(h*q)-Q(j*r)))+Q(Q(Q(Q(Q(l*k)+Q(m*n))+N[b+16>>2])-Q(Q(Q(j*o)+Q(h*p))+N[g+16>>2]))*Q(Q(j*q)+Q(h*r)));g=f;b=J[d+52>>2];k=N[b+20>>2];l=Q(N[d+76>>2]-N[b+28>>2]);n=N[b+24>>2];o=Q(N[d+80>>2]-N[b+32>>2]);p=Q(Q(k*l)+Q(n*o));f=J[d+48>>2];h=N[f+20>>2];q=Q(N[d+68>>2]-N[f+28>>2]);j=N[f+24>>2];r=Q(N[d+72>>2]-N[f+32>>2]);v=Q(Q(h*q)+Q(j*r));w=N[d+84>>2];x=N[d+88>>2];y=Q(Q(j*w)-Q(h*x));m=N[f+72>>2];k=Q(Q(n*l)-Q(k*o));l=Q(Q(j*q)-Q(h*r));h=Q(Q(h*w)+Q(j*x));j=N[b+72>>2];N[g+8>>2]=Q(Q(Q(Q(p+N[b+48>>2])-Q(v+N[f+48>>2]))*Q(y*m))-Q(Q(Q(k+N[b+44>>2])-Q(l+N[f+44>>2]))*Q(h*m)))+Q(Q(y*Q(Q(v*m)+Q(Q(N[b+64>>2]-Q(p*j))-N[f+64>>2])))+Q(h*Q(Q(Q(N[b+68>>2]+Q(k*j))-N[f+68>>2])-Q(l*m))));break d;case 4:N[f+8>>2]=N[d+68>>2];N[f+12>>2]=N[d+72>>2];N[f+4>>2]=N[d+96>>2];break d;case 5:break e;default:break c}}b=J[d+96>>2];g=J[d+92>>2];J[f+20>>2]=0;J[f+12>>2]=g;J[f+16>>2]=b;N[f+24>>2]=h*N[d+120>>2];N[f+28>>2]=N[d+124>>2];H[f+32|0]=K[d+128|0];N[f+36>>2]=N[d+68>>2];N[f+40>>2]=N[d+72>>2];b=J[d+52>>2];m=N[b+24>>2];g=J[d+48>>2];h=N[g+24>>2];k=N[d+84>>2];l=N[b+20>>2];n=N[d+88>>2];o=N[d+76>>2];j=N[g+20>>2];p=N[d+80>>2];q=N[d+92>>2];r=N[d+96>>2];N[f+4>>2]=Q(Q(Q(N[b+12>>2]+Q(Q(m*k)-Q(l*n)))-Q(N[g+12>>2]+Q(Q(h*o)-Q(j*p))))*Q(Q(h*q)-Q(j*r)))+Q(Q(Q(Q(Q(l*k)+Q(m*n))+N[b+16>>2])-Q(Q(Q(j*o)+Q(h*p))+N[g+16>>2]))*Q(Q(j*q)+Q(h*r)));N[f+8>>2]=N[J[d+52>>2]+72>>2]-N[J[d+48>>2]+72>>2]}b=1}b=b?0:6}}f:{if(b){J[c>>2]=tj(i,t);J[c+8>>2]=b;J[c+4>>2]=J[(b<<2)+225184>>2];z=Jj(s,140303,c);break f}Fj(a,0,0);b=K[c+40|0];i=J[a+8>>2];J[i+8>>2]=1;J[i>>2]=(b|0)!=0;J[a+8>>2]=J[a+8>>2]+16;ej(a,-2,74113);g:{h:{switch(J[c+96>>2]){case 0:e=+N[c+44>>2];b=J[a+8>>2];J[b+8>>2]=3;O[b>>3]=e;J[a+8>>2]=J[a+8>>2]+16;ej(a,-2,52830);e=+N[c+48>>2];b=J[a+8>>2];J[b+8>>2]=3;O[b>>3]=e;J[a+8>>2]=J[a+8>>2]+16;ej(a,-2,3848);e=+N[c+52>>2];b=J[a+8>>2];J[b+8>>2]=3;O[b>>3]=e;J[a+8>>2]=J[a+8>>2]+16;ej(a,-2,56727);break g;case 1:e=+N[c+44>>2];b=J[a+8>>2];J[b+8>>2]=3;O[b>>3]=e;J[a+8>>2]=J[a+8>>2]+16;ej(a,-2,52746);break g;case 2:e=+N[c+52>>2];b=J[a+8>>2];J[b+8>>2]=3;O[b>>3]=e;J[a+8>>2]=J[a+8>>2]+16;ej(a,-2,66887);e=+N[c+56>>2];b=J[a+8>>2];J[b+8>>2]=3;O[b>>3]=e;J[a+8>>2]=J[a+8>>2]+16;ej(a,-2,66822);e=+N[c+60>>2];b=J[a+8>>2];J[b+8>>2]=3;O[b>>3]=e;J[a+8>>2]=J[a+8>>2]+16;ej(a,-2,66834);e=+N[c+64>>2];b=J[a+8>>2];J[b+8>>2]=3;O[b>>3]=e;J[a+8>>2]=J[a+8>>2]+16;ej(a,-2,60846);e=+N[c+68>>2];b=J[a+8>>2];J[b+8>>2]=3;O[b>>3]=e;J[a+8>>2]=J[a+8>>2]+16;ej(a,-2,75634);b=K[c+72|0];i=J[a+8>>2];J[i+8>>2]=1;J[i>>2]=(b|0)!=0;J[a+8>>2]=J[a+8>>2]+16;ej(a,-2,14355);b=K[c+73|0];i=J[a+8>>2];J[i+8>>2]=1;J[i>>2]=(b|0)!=0;J[a+8>>2]=J[a+8>>2]+16;ej(a,-2,32057);e=+N[c+44>>2];b=J[a+8>>2];J[b+8>>2]=3;O[b>>3]=e;J[a+8>>2]=J[a+8>>2]+16;ej(a,-2,66765);e=+N[c+48>>2];b=J[a+8>>2];J[b+8>>2]=3;O[b>>3]=e;J[a+8>>2]=J[a+8>>2]+16;ej(a,-2,75612);break g;case 3:N[c+24>>2]=N[c+60>>2];b=J[c+56>>2];J[c+16>>2]=J[c+52>>2];J[c+20>>2]=b;cl(a,c+16|0);ej(a,-2,84160);e=+N[c+64>>2];b=J[a+8>>2];J[b+8>>2]=3;O[b>>3]=e;J[a+8>>2]=J[a+8>>2]+16;ej(a,-2,66887);b=K[c+68|0];i=J[a+8>>2];J[i+8>>2]=1;J[i>>2]=(b|0)!=0;J[a+8>>2]=J[a+8>>2]+16;ej(a,-2,14355);e=+N[c+72>>2];b=J[a+8>>2];J[b+8>>2]=3;O[b>>3]=e;J[a+8>>2]=J[a+8>>2]+16;ej(a,-2,47064);e=+N[c+76>>2];b=J[a+8>>2];J[b+8>>2]=3;O[b>>3]=e;J[a+8>>2]=J[a+8>>2]+16;ej(a,-2,47082);b=K[c+80|0];i=J[a+8>>2];J[i+8>>2]=1;J[i>>2]=(b|0)!=0;J[a+8>>2]=J[a+8>>2]+16;ej(a,-2,32057);e=+N[c+84>>2];b=J[a+8>>2];J[b+8>>2]=3;O[b>>3]=e;J[a+8>>2]=J[a+8>>2]+16;ej(a,-2,70086);e=+N[c+88>>2];b=J[a+8>>2];J[b+8>>2]=3;O[b>>3]=e;J[a+8>>2]=J[a+8>>2]+16;ej(a,-2,75634);e=+N[c+44>>2];b=J[a+8>>2];J[b+8>>2]=3;O[b>>3]=e;J[a+8>>2]=J[a+8>>2]+16;ej(a,-2,47046);e=+N[c+48>>2];b=J[a+8>>2];J[b+8>>2]=3;O[b>>3]=e;J[a+8>>2]=J[a+8>>2]+16;ej(a,-2,75612);break g;case 4:e=+N[c+44>>2];b=J[a+8>>2];J[b+8>>2]=3;O[b>>3]=e;J[a+8>>2]=J[a+8>>2]+16;ej(a,-2,66887);e=+N[c+48>>2];b=J[a+8>>2];J[b+8>>2]=3;O[b>>3]=e;J[a+8>>2]=J[a+8>>2]+16;ej(a,-2,3848);e=+N[c+52>>2];b=J[a+8>>2];J[b+8>>2]=3;O[b>>3]=e;J[a+8>>2]=J[a+8>>2]+16;ej(a,-2,56727);break g;case 5:break h;default:break f}}N[c+24>>2]=N[c+60>>2];b=J[c+56>>2];J[c+16>>2]=J[c+52>>2];J[c+20>>2]=b;cl(a,c+16|0);ej(a,-2,84160);e=+N[c+64>>2];b=J[a+8>>2];J[b+8>>2]=3;O[b>>3]=e;J[a+8>>2]=J[a+8>>2]+16;ej(a,-2,60846);e=+N[c+68>>2];b=J[a+8>>2];J[b+8>>2]=3;O[b>>3]=e;J[a+8>>2]=J[a+8>>2]+16;ej(a,-2,75634);b=K[c+72|0];i=J[a+8>>2];J[i+8>>2]=1;J[i>>2]=(b|0)!=0;J[a+8>>2]=J[a+8>>2]+16;ej(a,-2,32057);e=+N[c+76>>2];b=J[a+8>>2];J[b+8>>2]=3;O[b>>3]=e;J[a+8>>2]=J[a+8>>2]+16;ej(a,-2,3848);e=+N[c+80>>2];b=J[a+8>>2];J[b+8>>2]=3;O[b>>3]=e;J[a+8>>2]=J[a+8>>2]+16;ej(a,-2,56727);e=+N[c+44>>2];b=J[a+8>>2];J[b+8>>2]=3;O[b>>3]=e;J[a+8>>2]=J[a+8>>2]+16;ej(a,-2,47046);e=+N[c+48>>2];b=J[a+8>>2];J[b+8>>2]=3;O[b>>3]=e;J[a+8>>2]=J[a+8>>2]+16;ej(a,-2,75612)}z=1}oj(s);Ui=c+128|0;return z|0}function xna(a,b){a=a|0;b=b|0;var c=0,d=0,e=0,f=0,g=0,h=0,i=0,j=0,k=0,l=0,m=0,n=0,o=0;c=Ui-784|0;Ui=c;a:{b:{c:{d:{e:{k=J[b>>2];e=J[k+3148>>2];f:{if(!e){break f}i=J[k+3144>>2];d=J[a+48>>2];n=J[a+52>>2];f=J[i+(mxa(d,n,e)<<2)>>2];if((f|0)==-1){break f}h=J[k+3152>>2];while(1){f=h+(f<<4)|0;if(J[f>>2]!=(d|0)|J[f+4>>2]!=(n|0)){f=J[f+12>>2];if((f|0)!=-1){continue}break f}break}g=J[f+8>>2];if(g){break e}}h=c+208|0;J[h+20>>2]=512;J[h+12>>2]=c+272;J[h+16>>2]=0;J[h+4>>2]=2270;J[h>>2]=2271;J[h+8>>2]=h;n=dm(J[a>>2],J[a+4>>2]);l=nk(h,J[a+16>>2],J[a+20>>2]);f=nk(h,J[a+24>>2],J[a+28>>2]);e=nk(h,J[a+48>>2],J[a+52>>2]);a=nk(h,J[a+64>>2],J[a+68>>2]);J[c+16>>2]=f;J[c+12>>2]=l;J[c+8>>2]=n;J[c+4>>2]=a;J[c>>2]=e;dj(4,88293,26311,c);H[b+4|0]=0;break d}g:{d=J[a+80>>2];if(!d){break g}if((d|0)==J[55211]){a=0;l=Ui-16|0;Ui=l;h:{f=J[k+3180>>2];j=J[k+3176>>2];i:{if((f|0)==(j|0)){break i}e=f-j>>2;while(1){b=a;a=a+1|0;d=(b<<2)+j|0;m=(g|0)==J[d>>2]|m;if(!(!(m&1)|b>>>0>=e-1>>>0)){if(a>>>0>=e>>>0){break b}J[d>>2]=J[(a<<2)+j>>2];j=J[k+3176>>2];f=J[k+3180>>2]}e=f-j>>2;if(a>>>0>>0){continue}break}if(!(m&1)){break i}if((f|0)==(j|0)){break h}f=f-4|0;J[k+3180>>2]=f}j:{if(J[k+3184>>2]!=(f|0)){J[k+3180>>2]=f+4;J[f>>2]=g;break j}J[l>>2]=f-j>>2;dj(3,88293,132800,l)}Ui=l+16|0;break d}break a}if((d|0)==J[55212]){m=J[k+3180>>2];o=J[k+3176>>2];if((m|0)==(o|0)){break d}b=m-o>>2;f=0;while(1){a=f;f=a+1|0;d=(a<<2)+o|0;j=(g|0)==J[d>>2]|j;if(!(!(j&1)|a>>>0>=b-1>>>0)){if(b>>>0<=f>>>0){break b}J[d>>2]=J[(f<<2)+o>>2];m=J[k+3180>>2];o=J[k+3176>>2]}b=m-o>>2;if(f>>>0>>0){continue}break}if(!(j&1)){break d}if((m|0)==(o|0)){break a}J[k+3180>>2]=m-4;break d}if((d|0)!=J[55236]){break g}b=0;f=J[a+100>>2];l=f;d=J[a+96>>2];k:{if(!(f|d)){break k}f=J[i+(mxa(d,f,e)<<2)>>2];l:{if((f|0)==-1){break l}while(1){b=h+(f<<4)|0;if(J[b>>2]!=(d|0)|J[b+4>>2]!=(l|0)){f=J[b+12>>2];if((f|0)!=-1){continue}break l}break}b=J[b+8>>2];if(b){break k}}J[c+80>>2]=tj(d,l);dj(3,88293,134814,c+80|0);b=0}J[c+304>>2]=0;J[c+308>>2]=0;J[c+324>>2]=0;J[c+328>>2]=0;J[c+276>>2]=0;J[c+280>>2]=0;J[c+272>>2]=1065353216;J[c+284>>2]=0;J[c+288>>2]=0;J[c+296>>2]=0;J[c+300>>2]=0;J[c+292>>2]=1065353216;J[c+316>>2]=0;J[c+320>>2]=0;J[c+312>>2]=1065353216;J[c+332>>2]=1065353216;if(b){d=J[b+140>>2]&32767;e=J[k+3128>>2];if(d>>>0>=J[k+3132>>2]-e>>6>>>0){break b}d=e+(d<<6)|0;N[c+272>>2]=N[d>>2];N[c+276>>2]=N[d+4>>2];N[c+280>>2]=N[d+8>>2];N[c+284>>2]=N[d+12>>2];N[c+288>>2]=N[d+16>>2];N[c+292>>2]=N[d+20>>2];N[c+296>>2]=N[d+24>>2];N[c+300>>2]=N[d+28>>2];N[c+304>>2]=N[d+32>>2];N[c+308>>2]=N[d+36>>2];N[c+312>>2]=N[d+40>>2];N[c+316>>2]=N[d+44>>2];N[c+320>>2]=N[d+48>>2];N[c+324>>2]=N[d+52>>2];N[c+328>>2]=N[d+56>>2];N[c+332>>2]=N[d+60>>2]}m:{if(!J[a+104>>2]){d=J[g+140>>2]&32767;e=J[k+3128>>2];if(d>>>0>=J[k+3132>>2]-e>>6>>>0){break b}e=e+(d<<6)|0;if(K[g+137|0]&2){d=c+144|0;wJ(d,g);oF(c+208|0,c+272|0,d);N[e>>2]=N[c+208>>2];N[e+4>>2]=N[c+212>>2];N[e+8>>2]=N[c+216>>2];N[e+12>>2]=N[c+220>>2];N[e+16>>2]=N[c+224>>2];N[e+20>>2]=N[c+228>>2];N[e+24>>2]=N[c+232>>2];N[e+28>>2]=N[c+236>>2];N[e+32>>2]=N[c+240>>2];N[e+36>>2]=N[c+244>>2];N[e+40>>2]=N[c+248>>2];N[e+44>>2]=N[c+252>>2];N[e+48>>2]=N[c+256>>2];N[e+52>>2]=N[c+260>>2];N[e+56>>2]=N[c+264>>2];N[e+60>>2]=N[c+268>>2];break m}d=c+144|0;wJ(d,g);Jp(c+208|0,c+272|0,d);N[e>>2]=N[c+208>>2];N[e+4>>2]=N[c+212>>2];N[e+8>>2]=N[c+216>>2];N[e+12>>2]=N[c+220>>2];N[e+16>>2]=N[c+224>>2];N[e+20>>2]=N[c+228>>2];N[e+24>>2]=N[c+232>>2];N[e+28>>2]=N[c+236>>2];N[e+32>>2]=N[c+240>>2];N[e+36>>2]=N[c+244>>2];N[e+40>>2]=N[c+248>>2];N[e+44>>2]=N[c+252>>2];N[e+48>>2]=N[c+256>>2];N[e+52>>2]=N[c+260>>2];N[e+56>>2]=N[c+264>>2];N[e+60>>2]=N[c+268>>2];break m}if(K[g+137|0]&2){e=c+144|0;Ft(e,c+272|0);d=c+208|0;oF(d,e,uS(k+3128|0,J[g+140>>2]&32767));rq(c+96|0,d);N[g>>2]=N[c+96>>2];N[g+4>>2]=N[c+100>>2];N[g+8>>2]=N[c+104>>2];N[g+12>>2]=N[c+108>>2];N[g+16>>2]=N[c+112>>2];N[g+20>>2]=N[c+116>>2];N[g+24>>2]=N[c+120>>2];N[g+32>>2]=N[c+128>>2];N[g+36>>2]=N[c+132>>2];N[g+40>>2]=N[c+136>>2];break m}e=c+144|0;Ft(e,c+272|0);d=c+208|0;Jp(d,e,uS(k+3128|0,J[g+140>>2]&32767));rq(e,d);N[g>>2]=N[c+144>>2];N[g+4>>2]=N[c+148>>2];N[g+8>>2]=N[c+152>>2];N[g+12>>2]=N[c+156>>2];N[g+16>>2]=N[c+160>>2];N[g+20>>2]=N[c+164>>2];N[g+24>>2]=N[c+168>>2];N[g+32>>2]=N[c+176>>2];N[g+36>>2]=N[c+180>>2];N[g+40>>2]=N[c+184>>2]}e=Ay(g,b);if(!e){break d}d=tj(J[g+96>>2],J[g+100>>2]);a=tj(J[a+96>>2],J[a+100>>2]);J[c+72>>2]=e;J[c+68>>2]=a;J[c+64>>2]=d;dj(3,88293,122400,c- -64|0);break d}i=J[g+84>>2];j=J[i+4>>2];e=J[a+60>>2];h=e;d=J[a+56>>2];if(!(e|d)){if(!j){break d}f=k+12|0;e=g+156|0;n=0;n:{while(1){d=J[i>>2]+P(o,96)|0;h=J[d+16>>2];if(!h){break n}l=J[h+100>>2];o:{if(J[h+68>>2]){J[c+208>>2]=0;J[c+272>>2]=g;J[c+276>>2]=J[f+(J[d+20>>2]<<2)>>2];d=J[h+16>>2];J[c+288>>2]=a;J[c+284>>2]=e+(n<<2)&l<<15>>31;J[c+280>>2]=d;if(Zi[J[h+68>>2]](c+272|0)|0){H[b+4|0]=0}j=J[i+4>>2];h=(l&65536)>>>16|0;break o}h=l>>>16&1}n=h+n|0;o=o+1|0;if(o>>>0>>0){continue}break}break d}Z(63839,38296,2402,45606);B()}p:{if(j){i=J[i>>2];f=0;while(1){n=i+P(f,96)|0;if((d|0)==J[n>>2]&(h|0)==J[n+4>>2]){break p}m=m+1|0;f=f+1|0;if((j|0)!=(f|0)){continue}break}}i=c+208|0;J[i+20>>2]=512;J[i+12>>2]=c+272;J[i+16>>2]=0;J[i+4>>2]=2270;J[i>>2]=2271;J[i+8>>2]=i;h=dm(J[a>>2],J[a+4>>2]);n=nk(i,J[a+16>>2],J[a+20>>2]);l=nk(i,J[a+24>>2],J[a+28>>2]);f=nk(i,J[a+48>>2],J[a+52>>2]);e=nk(i,J[a+56>>2],J[a+60>>2]);a=nk(i,J[a+64>>2],J[a+68>>2]);J[c+52>>2]=l;J[c+48>>2]=n;J[c+44>>2]=h;J[c+40>>2]=a;J[c+36>>2]=e;J[c+32>>2]=f;dj(4,88293,26393,c+32|0);H[b+4|0]=0;break d}d=f&65535;n=i+P(d,96)|0;h=J[n+16>>2];if(!h){break c}if(J[h+68>>2]){j=0;q:{if(!d){break q}e=m&3;f=0;d=m&65535;if(d-1>>>0>=3){d=d&65532;m=0;while(1){j=((((I[J[(i+P(f,96)|0)+16>>2]+102>>1]&1)+j|0)+(I[J[(i+P(f|1,96)|0)+16>>2]+102>>1]&1)|0)+(I[J[(i+P(f|2,96)|0)+16>>2]+102>>1]&1)|0)+(I[J[(i+P(f|3,96)|0)+16>>2]+102>>1]&1)|0;f=f+4|0;m=m+4|0;if((d|0)!=(m|0)){continue}break}}if(!e){break q}while(1){j=(I[J[(i+P(f,96)|0)+16>>2]+102>>1]&1)+j|0;f=f+1|0;l=l+1|0;if((e|0)!=(l|0)){continue}break}}e=J[h+100>>2];J[c+208>>2]=0;J[c+272>>2]=g;J[c+276>>2]=J[(k+(J[n+20>>2]<<2)|0)+12>>2];d=J[h+16>>2];J[c+288>>2]=a;J[c+284>>2]=(g+(j<<2)|0)+156&e<<15>>31;J[c+280>>2]=d;if(Zi[J[h+68>>2]](c+272|0)|0){H[b+4|0]=0}break d}dj(3,88293,45478,0)}Ui=c+784|0;return}Z(63839,38296,2355,45606);B()}Z(145396,53895,487,84789);B()}Z(112533,53895,572,43112);B()}function tG(a,b,c,d,e,f,g,h){var i=0,j=0,k=0,l=0,m=0,n=0,o=0,p=0,q=0,r=0,s=0,t=0,u=0,v=0,w=0,x=0,y=0,z=0,A=0,C=0,D=0,E=0,F=0,G=0,L=0,M=0,N=0,O=0,Q=0,R=0,S=0,T=0,U=0,V=0,W=0,X=0,Y=0,_=0,$=0,aa=0;r=J[J[a>>2]+8>>2];E=r+1|0;a:{b:{c:{F=(d|0)==(r|0);if(!(!F&(d|0)!=(E|0))){d:{e:{if((e|f)<0){break e}if(f){if((2147483647/(f>>>0)|0)<(e|0)){break e}}k=(g|0)==16;i=d<>>0)|0)){break d}}J[a+12>>2]=0;break b}i=sj(P(i,l));J[a+12>>2]=i;if(!i){break b}if((e|r)<0){break a}if(e){if((2147483647/(e>>>0)|0)<(r|0)){break a}}o=P(e,r);if((o|g)<0){break a}f:{if(!g){break f}if((2147483647/(g>>>0)|0)<(o|0)){break a}j=P(g,o);if((j|0)<2147483641){break f}break a}if((f|0)<0){break a}t=j+7>>>3|0;if(f){if(2147483647/(f>>>0)>>>0>>0){break a}}if(P(f,t)>>>0>(t^2147483647)>>>0|P(t+1|0,f)>>>0>c>>>0){break a}v=sj(t<<1);if(!v){break b}if(f){V=P(d,e)<7;aa=(g|0)!=16;while(1){g:{h:{i:{j:{k:{c=K[b|0];if(c>>>0<=4){n=J[a+12>>2];m=b+1|0;j=(u&1?t:0)+v|0;b=P((u^-1)&1,t)+v|0;if(!u){c=K[c+181964|0]}l:{m:{n:{o:{switch(c&255){case 4:if((l|0)<=0){break h}c=0;k=0;if(R){break m}break i;case 3:if((l|0)<=0){break j}c=0;k=0;if(R){break n}break k;case 2:if((p|0)<=0){break g}c=0;k=0;if((p|0)!=1){while(1){H[c+j|0]=K[b+c|0]+K[c+m|0];i=c|1;H[i+j|0]=K[b+i|0]+K[i+m|0];c=c+2|0;k=k+2|0;if((Y|0)!=(k|0)){continue}break}}if(!_){break g}H[c+j|0]=K[b+c|0]+K[c+m|0];break g;case 0:hj(j,m,p);break g;case 5:break l;case 1:break o;default:break g}}c=hj(j,m,l);if((l|0)>=(p|0)){break g}b=l;if(D){H[b+c|0]=K[c|0]+K[b+m|0];b=z}if((w|0)==-1){break g}while(1){H[b+c|0]=K[c+(b-l|0)|0]+K[b+m|0];i=b+1|0;H[i+c|0]=K[c+(i-l|0)|0]+K[i+m|0];b=b+2|0;if((p|0)!=(b|0)){continue}break}break g}while(1){H[c+j|0]=K[c+m|0]+(K[b+c|0]>>>1|0);i=c|1;H[i+j|0]=K[i+m|0]+(K[b+i|0]>>>1|0);c=c+2|0;k=k+2|0;if((O|0)!=(k|0)){continue}break}break k}while(1){H[c+j|0]=K[b+c|0]+K[c+m|0];i=c|1;H[i+j|0]=K[b+i|0]+K[i+m|0];c=c+2|0;k=k+2|0;if((O|0)!=(k|0)){continue}break}break i}c=hj(j,m,l);if((l|0)>=(p|0)){break g}b=l;if(D){H[b+c|0]=K[b+m|0]+(K[c|0]>>>1|0);b=z}if((w|0)==-1){break g}while(1){H[b+c|0]=K[b+m|0]+(K[c+(b-l|0)|0]>>>1|0);i=b+1|0;H[i+c|0]=K[i+m|0]+(K[c+(i-l|0)|0]>>>1|0);b=b+2|0;if((p|0)!=(b|0)){continue}break}break g}J[218569]=93899;cj(v);return 0}if(!Q){break j}H[c+j|0]=K[c+m|0]+(K[b+c|0]>>>1|0)}if((l|0)>=(p|0)){break g}c=l;if(D){H[c+j|0]=K[c+m|0]+(K[j|0]+K[b+c|0]>>>1|0);c=z}if((w|0)==-1){break g}while(1){H[c+j|0]=K[c+m|0]+(K[(c-l|0)+j|0]+K[b+c|0]>>>1|0);i=c+1|0;H[i+j|0]=K[i+m|0]+(K[(i-l|0)+j|0]+K[b+i|0]>>>1|0);c=c+2|0;if((p|0)!=(c|0)){continue}break}break g}if(!Q){break h}H[c+j|0]=K[b+c|0]+K[c+m|0]}c=l;if((p|0)<=(c|0)){break g}while(1){i=c-l|0;q=K[i+b|0];i=K[j+i|0];k=K[b+c|0];T=i>>>0>>0?i:k;U=i>>>0>k>>>0?i:k;i=P(q,3)-(i+k|0)|0;H[c+j|0]=K[c+m|0]+((i|0)>(T|0)?(U|0)>(i|0)?q:T:U);c=c+1|0;if((p|0)!=(c|0)){continue}break}}b=n+P(u,V)|0;p:{q:{if(!$){c=1;c=h?c:K[g+181825|0];r:{switch(g-1|0){case 0:if(!o){break q}i=0;k=b;n=0;q=0;if(A){while(1){if(!(n&6)){i=K[j|0];j=j+1|0}H[k|0]=i<<24>>24>>>7&c;H[k+1|0]=i<<25>>24>>>7&c;n=n+2|0;i=i<<2;k=k+2|0;q=q+2|0;if((x|0)!=(q|0)){continue}break}}if(!y){break q}if(!(n&7)){i=K[j|0]}H[k|0]=i<<24>>24>>>7&c;break q;case 1:if(!o){break q}i=0;k=b;n=0;q=0;if(A){while(1){if(!(n&2)){i=K[j|0];j=j+1|0}H[k+1|0]=P(i>>>4&3,c);H[k|0]=P((i&192)>>>6|0,c);n=n+2|0;i=i<<4;k=k+2|0;q=q+2|0;if((x|0)!=(q|0)){continue}break}}if(!y){break q}if(!(n&3)){i=K[j|0]}H[k|0]=P((i&192)>>>6|0,c);break q;case 3:if(!o){break q}k=0;i=b;n=0;if(A){while(1){q=K[j|0];H[i+1|0]=P(q&15,c);H[i|0]=P(q>>>4|0,c);k=k+2|0;i=i+2|0;j=j+1|0;n=n+2|0;if((x|0)!=(n|0)){continue}break}}if(!y){break q}H[i|0]=P(((k&1?0:K[j|0])&240)>>>4|0,c);break q;default:break r}}Z(110810,55719,4810,6851);B()}if((g|0)==8){if((d|0)==(r|0)){hj(b,j,o);break p}s:{switch(r-1|0){case 0:if((s|0)<0){break p}c=s;if(L){H[b+S|0]=255;H[b+C|0]=K[c+j|0];c=G}if(!s){break p}while(1){i=(c<<1)+b|0;H[i+1|0]=255;H[i|0]=K[c+j|0];i=c-1|0;k=(i<<1)+b|0;H[k+1|0]=255;H[k|0]=K[j+i|0];c=c-2|0;if(i){continue}break};break p;case 2:break s;default:break c}}i=s;if((i|0)<0){break p}while(1){c=i;k=(c<<2)+b|0;H[k+3|0]=255;n=P(c,3)+j|0;H[k+2|0]=K[n+2|0];H[k+1|0]=K[n+1|0];H[k|0]=K[n|0];i=c-1|0;if(c){continue}break}break p}if(aa){break p}if((d|0)==(r|0)){if(!o){break p}c=0;if(o>>>0>=4){while(1){i=K[j|0]|K[j+1|0]<<8;I[b>>1]=i<<8|i>>>8;i=K[j+2|0]|K[j+3|0]<<8;I[b+2>>1]=i<<8|i>>>8;i=K[j+4|0]|K[j+5|0]<<8;I[b+4>>1]=i<<8|i>>>8;i=K[j+6|0]|K[j+7|0]<<8;I[b+6>>1]=i<<8|i>>>8;j=j+8|0;b=b+8|0;c=c+4|0;if((W|0)!=(c|0)){continue}break}}c=0;if(!M){break p}while(1){i=K[j|0]|K[j+1|0]<<8;I[b>>1]=i<<8|i>>>8;j=j+2|0;b=b+2|0;c=c+1|0;if((M|0)!=(c|0)){continue}break}break p}if((d|0)==(E|0)){t:{switch(r-1|0){case 0:if(!e){break p}i=0;if(e>>>0>=4){while(1){c=K[j|0]|K[j+1|0]<<8;I[b+2>>1]=65535;I[b>>1]=c<<8|c>>>8;c=K[j+2|0]|K[j+3|0]<<8;I[b+6>>1]=65535;I[b+4>>1]=c<<8|c>>>8;c=K[j+4|0]|K[j+5|0]<<8;I[b+10>>1]=65535;I[b+8>>1]=c<<8|c>>>8;c=K[j+6|0]|K[j+7|0]<<8;I[b+14>>1]=65535;I[b+12>>1]=c<<8|c>>>8;j=j+8|0;b=b+16|0;i=i+4|0;if((X|0)!=(i|0)){continue}break}}i=0;if(!N){break p}while(1){c=K[j|0]|K[j+1|0]<<8;I[b+2>>1]=65535;I[b>>1]=c<<8|c>>>8;j=j+2|0;b=b+4|0;i=i+1|0;if((N|0)!=(i|0)){continue}break};break p;default:Z(109192,55719,4842,6851);B();case 2:break t}}i=0;if(!e){break p}while(1){c=K[j|0]|K[j+1|0]<<8;I[b>>1]=c<<8|c>>>8;c=K[j+2|0]|K[j+3|0]<<8;I[b+2>>1]=c<<8|c>>>8;c=K[j+4|0]|K[j+5|0]<<8;I[b+6>>1]=65535;I[b+4>>1]=c<<8|c>>>8;j=j+6|0;b=b+8|0;i=i+1|0;if((i|0)!=(e|0)){continue}break}break p}Z(48322,55719,4835,6851);B()}if(F){break p}u:{switch(r-1|0){case 0:if((s|0)<0){break p}j=s;if(L){H[b+S|0]=255;H[b+C|0]=K[b+j|0];j=G}if(!s){break p}while(1){c=(j<<1)+b|0;H[c+1|0]=255;H[c|0]=K[b+j|0];c=j-1|0;i=(c<<1)+b|0;H[i+1|0]=255;H[i|0]=K[b+c|0];j=j-2|0;if(c){continue}break};break p;case 2:break u;default:break c}}c=s;if((c|0)<0){break p}while(1){k=(c<<2)+b|0;H[k+3|0]=255;i=c;j=P(c,3)+b|0;H[k+2|0]=K[j+2|0];H[k+1|0]=K[j+1|0];H[k|0]=K[j|0];c=c-1|0;if(i){continue}break}}b=m+p|0;u=u+1|0;if((u|0)!=(f|0)){continue}break}}cj(v);return 1}Z(110604,55719,4710,6851);B()}Z(109192,55719,4684,102807);B()}J[218569]=3003;return 0}J[218569]=93899;return 0}function ym(a){var b=0,c=0,d=Q(0),e=0,f=Q(0),g=0,h=Q(0),i=Q(0),j=Q(0),k=Q(0),l=0,m=Q(0),n=Q(0),o=Q(0),p=Q(0),q=Q(0),r=Q(0),s=Q(0),t=Q(0),u=Q(0),v=Q(0),w=Q(0),x=Q(0),y=Q(0),z=Q(0),A=Q(0),C=0,D=0,E=Q(0),F=Q(0),G=Q(0),I=Q(0),M=Q(0),O=Q(0),P=Q(0),R=Q(0),S=Q(0),T=Q(0),U=0,V=0,W=Q(0),X=Q(0),_=0,$=0,aa=Q(0),ba=Q(0),ca=Q(0),da=Q(0),ea=Q(0);g=Ui-48|0;Ui=g;J[g+12>>2]=0;b=J[a+1084>>2];c=J[a+1080>>2];a:{if((b|0)!=(c|0)){b=b-c>>1;C=b>>>0<=1?1:b;while(1){b:{b=J[a+1080>>2];if(J[a+1084>>2]-b>>1>>>0>e>>>0){c=L[b+(e<<1)>>1];l=J[a+1036>>2];if(c>>>0>=J[a+1040>>2]-l>>2>>>0){break a}b=J[l+(c<<2)>>2];l=J[b+48>>2];c:{d:{if((l|0)!=J[b+64>>2]){d=N[b+52>>2];break d}d=N[b+52>>2];if(J[b+68>>2]!=J[b+52>>2]){break d}if(J[b+56>>2]==J[b+72>>2]){break c}}N[b+68>>2]=d;J[b+64>>2]=l;f=N[b+56>>2];N[b+72>>2]=f;N[g+24>>2]=f;N[g+20>>2]=d;J[g+16>>2]=l;Kn(g+32|0,g+16|0);N[b>>2]=N[g+32>>2];N[b+4>>2]=N[g+36>>2];N[b+8>>2]=N[g+40>>2];N[b+12>>2]=N[g+44>>2]}l=J[a+3128>>2];if(c>>>0>=J[a+3132>>2]-l>>6>>>0){break a}d=N[b>>2];f=N[b+4>>2];i=N[b+12>>2];q=N[b+8>>2];D=J[b+20>>2];_=J[b+16>>2];m=N[b+24>>2];k=N[b+40>>2];h=N[b+36>>2];c=l+(c<<6)|0;s=N[b+32>>2];N[c+12>>2]=s*Q(0);N[c+28>>2]=h*Q(0);N[c+44>>2]=k*Q(0);J[c+60>>2]=1065353216;N[c+56>>2]=m;J[c+48>>2]=_;J[c+52>>2]=D;v=Q(f+f);n=Q(d*v);m=Q(q+q);r=Q(i*m);N[c+4>>2]=s*Q(n+r);w=Q(d*m);x=Q(v*i);N[c+8>>2]=s*Q(w-x);N[c+16>>2]=h*Q(n-r);n=Q(f*m);A=i;i=Q(d+d);r=Q(A*i);N[c+24>>2]=h*Q(n+r);N[c+32>>2]=k*Q(w+x);N[c+36>>2]=k*Q(n-r);A=h;d=Q(Q(1)-Q(d*i));h=Q(q*m);N[c+20>>2]=A*Q(d-h);A=d;d=Q(f*v);N[c+40>>2]=k*Q(A-d);N[c>>2]=s*Q(Q(Q(1)-d)-h);if(L[b+138>>1]<<16==2147418112){break b}Z(85395,38296,2513,20369);B()}break a}e=e+1|0;if((C|0)!=(e|0)){continue}break}}_=a+1080|0;e:{f:{g:{h:{if(K[a+3272|0]&4){C=1;while(1){D=(C<<4)+_|0;b=J[D+4>>2];c=J[D>>2];if((b|0)!=(c|0)){b=b-c>>1;$=b>>>0<=1?1:b;l=0;while(1){b=J[D>>2];if(J[D+4>>2]-b>>1>>>0<=l>>>0){break a}e=L[b+(l<<1)>>1];c=J[a+1036>>2];if(e>>>0>=J[a+1040>>2]-c>>2>>>0){break a}b=J[c+(e<<2)>>2];c=J[b+48>>2];i:{j:{if((c|0)!=J[b+64>>2]){d=N[b+52>>2];break j}d=N[b+52>>2];if(J[b+68>>2]!=J[b+52>>2]){break j}if(J[b+56>>2]==J[b+72>>2]){break i}}N[b+68>>2]=d;J[b+64>>2]=c;f=N[b+56>>2];N[b+72>>2]=f;N[g+24>>2]=f;N[g+20>>2]=d;J[g+16>>2]=c;Kn(g+32|0,g+16|0);N[b>>2]=N[g+32>>2];N[b+4>>2]=N[g+36>>2];N[b+8>>2]=N[g+40>>2];N[b+12>>2]=N[g+44>>2]}U=J[a+3128>>2];V=J[a+3132>>2]-U>>6;if(V>>>0<=e>>>0){break a}c=J[b+136>>2]>>>16|0;if((c|0)==32767){break g}if(c>>>0>=V>>>0){break a}c=U+(c<<6)|0;f=N[c+48>>2];k=N[c+32>>2];h=N[c>>2];i=N[c+16>>2];q=N[c+52>>2];s=N[c+36>>2];m=N[c+4>>2];v=N[c+20>>2];n=N[c+56>>2];r=N[c+40>>2];w=N[c+8>>2];x=N[c+24>>2];y=N[b+32>>2];o=N[b+36>>2];j=N[b+40>>2];t=N[b+4>>2];E=N[b+8>>2];F=N[b+12>>2];d=N[b>>2];e=U+(e<<6)|0;M=N[c+60>>2];O=N[c+44>>2];u=N[b+24>>2];P=N[c+12>>2];p=N[b+16>>2];z=N[b+20>>2];R=N[c+28>>2];N[e+60>>2]=M+Q(Q(O*u)+Q(Q(P*p)+Q(z*R)));N[e+56>>2]=n+Q(Q(r*u)+Q(Q(w*p)+Q(z*x)));N[e+52>>2]=q+Q(Q(s*u)+Q(Q(m*p)+Q(z*v)));N[e+48>>2]=f+Q(Q(k*u)+Q(Q(h*p)+Q(z*i)));u=Q(j*Q(0));G=Q(d+d);I=Q(Q(1)-Q(d*G));T=Q(t+t);W=Q(t*T);p=Q(j*Q(I-W));z=Q(E+E);X=Q(d*z);A=Q(T*F);S=Q(j*Q(X+A));t=Q(t*z);G=Q(G*F);j=Q(j*Q(t-G));N[e+44>>2]=Q(M*u)+Q(Q(O*p)+Q(Q(P*S)+Q(R*j)));N[e+40>>2]=Q(n*u)+Q(Q(r*p)+Q(Q(w*S)+Q(j*x)));N[e+36>>2]=Q(q*u)+Q(Q(s*p)+Q(Q(m*S)+Q(j*v)));N[e+32>>2]=Q(f*u)+Q(Q(k*p)+Q(Q(h*S)+Q(j*i)));j=Q(o*Q(0));t=Q(o*Q(t+G));u=Q(d*T);F=Q(F*z);d=Q(o*Q(u-F));E=Q(E*z);o=Q(o*Q(I-E));N[e+28>>2]=Q(M*j)+Q(Q(O*t)+Q(Q(P*d)+Q(R*o)));N[e+24>>2]=Q(n*j)+Q(Q(r*t)+Q(Q(w*d)+Q(o*x)));N[e+20>>2]=Q(q*j)+Q(Q(s*t)+Q(Q(m*d)+Q(o*v)));N[e+16>>2]=Q(f*j)+Q(Q(k*t)+Q(Q(h*d)+Q(o*i)));d=Q(y*Q(0));o=Q(y*Q(X-A));j=Q(y*Q(Q(Q(1)-W)-E));y=Q(y*Q(u+F));N[e+12>>2]=Q(M*d)+Q(Q(O*o)+Q(Q(P*j)+Q(R*y)));N[e+8>>2]=Q(n*d)+Q(Q(r*o)+Q(Q(w*j)+Q(y*x)));N[e+4>>2]=Q(q*d)+Q(Q(s*o)+Q(Q(m*j)+Q(y*v)));N[e>>2]=Q(f*d)+Q(Q(k*o)+Q(Q(h*j)+Q(y*i)));l=l+1|0;if(($|0)!=(l|0)){continue}break}}C=C+1|0;if((C|0)!=128){continue}break}break h}C=1;while(1){e=(C<<4)+_|0;b=J[e+4>>2];c=J[e>>2];if((b|0)!=(c|0)){b=b-c>>1;$=b>>>0<=1?1:b;l=0;while(1){b=J[e>>2];if(J[e+4>>2]-b>>1>>>0<=l>>>0){break a}D=L[b+(l<<1)>>1];c=J[a+1036>>2];if(D>>>0>=J[a+1040>>2]-c>>2>>>0){break a}b=J[c+(D<<2)>>2];c=J[b+48>>2];k:{l:{if((c|0)!=J[b+64>>2]){d=N[b+52>>2];break l}d=N[b+52>>2];if(J[b+68>>2]!=J[b+52>>2]){break l}if(J[b+56>>2]==J[b+72>>2]){break k}}N[b+68>>2]=d;J[b+64>>2]=c;f=N[b+56>>2];N[b+72>>2]=f;N[g+24>>2]=f;N[g+20>>2]=d;J[g+16>>2]=c;Kn(g+32|0,g+16|0);N[b>>2]=N[g+32>>2];N[b+4>>2]=N[g+36>>2];N[b+8>>2]=N[g+40>>2];N[b+12>>2]=N[g+44>>2]}U=J[a+3128>>2];V=J[a+3132>>2]-U>>6;if(V>>>0<=D>>>0){break a}c=J[b+136>>2]>>>16|0;if((c|0)==32767){break f}if(c>>>0>=V>>>0){break e}f=N[b+4>>2];h=N[b+8>>2];k=Q(h+h);s=Q(f*k);d=N[b>>2];r=Q(d+d);m=N[b+12>>2];v=Q(r*m);S=N[b+40>>2];i=Q(Q(s-v)*S);w=Q(d*k);n=Q(f+f);x=Q(n*m);q=Q(Q(w+x)*S);T=N[b+36>>2];s=Q(Q(s+v)*T);aa=Q(d*n);ba=Q(m*k);m=Q(Q(aa-ba)*T);G=N[b+32>>2];v=Q(Q(w-x)*G);d=Q(Q(1)-Q(d*r));ca=Q(f*n);n=Q(Q(d-ca)*S);da=Q(h*k);r=Q(Q(d-da)*T);c=U+(c<<6)|0;w=N[c+60>>2];x=N[c+56>>2];y=N[c+52>>2];o=N[c+48>>2];j=N[c+28>>2];t=N[c+24>>2];E=N[c+20>>2];F=N[c+16>>2];M=N[c+12>>2];O=N[c+8>>2];u=N[c+4>>2];P=N[c>>2];p=N[b+24>>2];z=N[b+20>>2];R=N[b+16>>2];d=N[c+32>>2];I=d;f=N[c+36>>2];W=f;k=N[c+40>>2];X=k;h=N[c+44>>2];A=h;ea=Q(Q(h*h)+Q(Q(k*k)+Q(Q(f*f)+Q(d*d))));if(ea>Q(0)){I=Q(Q(1)/Q(Y(ea)));A=Q(h*I);X=Q(k*I);W=Q(f*I);I=Q(d*I)}b=U+(D<<6)|0;N[b+60>>2]=w+Q(Q(A*p)+Q(Q(M*R)+Q(z*j)));N[b+56>>2]=x+Q(Q(X*p)+Q(Q(O*R)+Q(z*t)));N[b+52>>2]=y+Q(Q(W*p)+Q(Q(u*R)+Q(z*E)));N[b+48>>2]=o+Q(Q(I*p)+Q(Q(P*R)+Q(z*F)));p=Q(S*Q(0));N[b+44>>2]=Q(w*p)+Q(Q(h*n)+Q(Q(M*q)+Q(i*j)));N[b+40>>2]=Q(x*p)+Q(Q(k*n)+Q(Q(O*q)+Q(i*t)));N[b+36>>2]=Q(y*p)+Q(Q(f*n)+Q(Q(u*q)+Q(i*E)));N[b+32>>2]=Q(o*p)+Q(Q(d*n)+Q(Q(P*q)+Q(i*F)));i=Q(T*Q(0));N[b+28>>2]=Q(w*i)+Q(Q(h*s)+Q(Q(M*m)+Q(r*j)));N[b+24>>2]=Q(x*i)+Q(Q(k*s)+Q(Q(O*m)+Q(r*t)));N[b+20>>2]=Q(y*i)+Q(Q(f*s)+Q(Q(u*m)+Q(r*E)));N[b+16>>2]=Q(o*i)+Q(Q(d*s)+Q(Q(P*m)+Q(r*F)));i=Q(G*Q(0));A=Q(h*v);h=Q(Q(Q(Q(1)-ca)-da)*G);q=Q(Q(aa+ba)*G);N[b+12>>2]=Q(w*i)+Q(A+Q(Q(M*h)+Q(q*j)));N[b+8>>2]=Q(x*i)+Q(Q(k*v)+Q(Q(O*h)+Q(q*t)));N[b+4>>2]=Q(y*i)+Q(Q(f*v)+Q(Q(u*h)+Q(q*E)));N[b>>2]=Q(o*i)+Q(Q(d*v)+Q(Q(P*h)+Q(q*F)));l=l+1|0;if(($|0)!=(l|0)){continue}break}}C=C+1|0;if((C|0)!=128){continue}break}}H[a+3272|0]=K[a+3272|0]&247;Ui=g+48|0;return}Z(85534,38296,2530,20369);B()}Z(85534,38296,2550,20369);B()}}Z(145396,53895,487,84789);B()}function Aia(a){a=a|0;var b=0,c=0,d=0,e=0,f=0,g=0,h=0,i=0,j=0,k=0,l=0,m=0,n=0,o=Q(0),p=0,q=0,r=Q(0),s=0,t=0,u=0,v=0,w=Q(0),x=Q(0),y=Q(0),z=Q(0);g=Ui+-64|0;Ui=g;f=J[a+4>>2];b=J[f+32>>2];a:{b:{c:{d:{e:{d=J[J[a+12>>2]>>2];if(d>>>0>2]-b>>3>>>0){b=J[b+(d<<3)>>2];e=J[f+16>>2];if(b>>>0>=(J[f+20>>2]-e|0)/20>>>0){break c}i=e+P(b,20)|0;j=J[a+16>>2];b=J[j+80>>2];f:{if((b|0)==J[56938]){b=J[f+72>>2];if((b|0)!=J[f+76>>2]){s=J[i>>2];b=J[i+4>>2];if(!b){b=J[s+8>>2]}e=J[f+68>>2];if(!e){break e}d=J[f+76>>2];if(d>>>0>=M[f+72>>2]){break d}n=J[b>>2];J[f+76>>2]=d+1;u=J[e+(d<<2)>>2];b=J[f>>2];if(u>>>0>=(J[f+4>>2]-b|0)/96>>>0){break c}b=b+P(u,96)|0;J[b>>2]=s;e=K[b+88|0];H[b+88|0]=e&248;J[b+72>>2]=J[a>>2];d=J[a+16>>2];h=J[d+36>>2];J[b+40>>2]=J[d+32>>2];J[b+44>>2]=h;l=J[d+60>>2];h=b- -64|0;J[h>>2]=J[d+56>>2];J[h+4>>2]=l;h=J[d+52>>2];J[b+56>>2]=J[d+48>>2];J[b+60>>2]=h;h=J[d+44>>2];J[b+48>>2]=J[d+40>>2];J[b+52>>2]=h;N[b+80>>2]=N[j+96>>2];d=J[j+112>>2];J[b+84>>2]=d;H[b+88|0]=e&240|((d|0)!=-1)<<3;H[b+8|0]=0;H[b+9|0]=0;H[b+10|0]=0;H[b+11|0]=0;H[b+12|0]=0;H[b+13|0]=0;H[b+14|0]=0;H[b+15|0]=0;H[b+32|0]=0;H[b+33|0]=0;H[b+34|0]=0;H[b+35|0]=0;H[b+36|0]=0;H[b+37|0]=0;H[b+38|0]=0;H[b+39|0]=0;H[b+24|0]=0;H[b+25|0]=0;H[b+26|0]=0;H[b+27|0]=0;H[b+28|0]=0;H[b+29|0]=0;H[b+30|0]=0;H[b+31|0]=0;H[b+16|0]=0;H[b+17|0]=0;H[b+18|0]=0;H[b+19|0]=0;H[b+20|0]=0;H[b+21|0]=0;H[b+22|0]=0;H[b+23|0]=0;J[b+76>>2]=0;l=Ui-32|0;Ui=l;g:{h:{v=J[n+28>>2];if(v>>>0<2){h=J[245446];t=J[h+16>>2];if(t){Tj(t)}p=L[h+40>>1];i:{if((p|0)==L[h+42>>1]){J[b+4>>2]=0;J[l>>2]=p;dj(4,96825,146082,l);c=-3;break i}d=-1;j:{e=J[h>>2];if(L[e+20>>1]==L[e+22>>1]){break j}k:{l:{d=J[245440];if(!d){break l}while(1){m:{if((v|0)!=J[d+4>>2]){d=J[d+40>>2];if(d){continue}if(c){break m}break l}m=J[d+8>>2];q=(m|0)>(k|0);k=c?q?m:k:m;c=c?q?d:c:d;d=J[d+40>>2];if(d){continue}}break}break k}Z(113606,40121,76,35436);B()}d=-4;if(!c){break j}n:{k=J[e+16>>2];if(k){d=L[e+22>>1];if(d>>>0>=L[e+20>>1]){break d}I[e+22>>1]=d+1;k=L[k+(d<<1)>>1];m=J[e>>2];if(k>>>0>=(J[e+4>>2]-m|0)/12>>>0){break c}m=m+P(k,12)|0;J[m+8>>2]=c;J[m>>2]=k;d=Zi[J[c+12>>2]](n,m+4|0)|0;if(d){c=J[e+16>>2];if(!c){break b}m=L[e+22>>1]-1|0;q=m&65535;if(q>>>0>=L[e+20>>1]){break n}I[e+22>>1]=m;I[c+(q<<1)>>1]=k;break j}J[l+28>>2]=m;d=0;break j}break e}break a}if(d){c=tj(J[n>>2],J[n+4>>2]);J[l+20>>2]=d;J[l+16>>2]=c;dj(4,96825,141755,l+16|0);k=0;c=-8;break i}d=J[h+36>>2];if(!d){break e}c=L[h+42>>1];if(c>>>0>=L[h+40>>1]){break d}k=1;I[h+42>>1]=c+1;p=L[d+(c<<1)>>1];c=-8}if(t){Lj(t)}if(k){I[n+32>>1]=L[n+32>>1]+1;c=J[h+20>>2];if(J[h+24>>2]-c>>6>>>0<=p>>>0){break c}c=c+(p<<6)|0;if(L[c+56>>1]!=65535){break h}d=L[n+24>>1];I[c+56>>1]=p;I[c+58>>1]=d;J[c+32>>2]=1056964608;J[c+36>>2]=1056964608;J[c+24>>2]=1065353216;J[c+28>>2]=0;J[c+16>>2]=0;J[c+20>>2]=1065353216;H[c+60|0]=K[c+60|0]&248;J[c>>2]=J[l+28>>2];d=J[245445];J[c+8>>2]=J[245444];J[c+12>>2]=d;J[b+4>>2]=c;c=0}Ui=l+32|0;break g}Z(114101,42316,642,70456);B()}Z(57681,42316,668,70456);B()}if(!c){l=J[b+4>>2];c=J[b>>2];d=J[c>>2];f=J[c+4>>2];c=-13;e=J[245446];h=J[e+16>>2];if(h){Tj(h);e=J[245446]}n=J[e+80>>2];o:{if(!n){break o}k=J[J[e+76>>2]+(mxa(d,f,n)<<2)>>2];if((k|0)==-1){break o}n=J[e+84>>2];while(1){e=n+(k<<4)|0;if((d|0)!=J[e>>2]|J[e+4>>2]!=(f|0)){k=J[e+12>>2];if((k|0)!=-1){continue}break o}break}J[l+8>>2]=d;J[l+12>>2]=f;c=0}if(h){Lj(h)}if(c){J[g+16>>2]=c;dj(4,88458,140885,g+16|0)}o=N[i+16>>2];r=N[j+108>>2];w=N[i+8>>2];x=N[j+104>>2];c=J[b+4>>2];y=N[i+12>>2];z=N[j+100>>2];e=0;J[g+60>>2]=0;J[g+52>>2]=0;J[g+56>>2]=0;N[g+48>>2]=z*y;d=c;c=g+48|0;Cs(d,0,c);d=J[b+4>>2];J[g+60>>2]=0;J[g+52>>2]=0;J[g+56>>2]=0;N[g+48>>2]=x+w;Cs(d,1,c);d=J[b+4>>2];J[g+60>>2]=0;J[g+52>>2]=0;J[g+56>>2]=0;N[g+48>>2]=r*o;Cs(d,2,c);c=J[b+4>>2];d=K[s+24|0];h=d?d:-1;f=d;d=H[s+25|0]&1;f=(d?h:f)<<24>>24;i=J[J[245446]+16>>2];p:{if(!i){H[c+61|0]=f;H[c+60|0]=d|K[c+60|0]&254;break p}Tj(i);H[c+61|0]=f;H[c+60|0]=d|K[c+60|0]&254;Lj(i)}c=J[a+16>>2];d=J[c+4>>2];J[b+8>>2]=J[c>>2];J[b+12>>2]=d;d=J[c+28>>2];J[b+32>>2]=J[c+24>>2];J[b+36>>2]=d;d=J[c+20>>2];J[b+24>>2]=J[c+16>>2];J[b+28>>2]=d;d=J[c+12>>2];J[b+16>>2]=J[c+8>>2];J[b+20>>2]=d;a=J[J[a+16>>2]+76>>2];if((a|0)==-1){H[b+88|0]=K[b+88|0]&247;a=0}J[b+76>>2]=a;break f}d=J[f+68>>2];if(!d){break b}b=J[f+76>>2]-1|0;if(b>>>0>=M[f+72>>2]){break a}J[f+76>>2]=b;J[d+(b<<2)>>2]=u;a=J[a+16>>2];J[g+32>>2]=c;jo(a,130621,g+32|0);e=0;break f}J[g>>2]=b;jo(j,146178,g);e=0;break f}if((b|0)==J[56958]){c=J[f>>2];b=J[f+4>>2];if((c|0)==(b|0)){e=0;break f}d=J[j+96>>2];if((d|0)==-1){e=0;while(1){d=P(e,96)+c|0;if(!(!J[d+4>>2]|J[d>>2]!=J[i>>2]|J[d+72>>2]!=J[a>>2])){H[d+88|0]=K[d+88|0]|1;c=J[f>>2];b=J[f+4>>2]}e=e+1|0;if(e>>>0<(b-c|0)/96>>>0){continue}break}e=0;break f}f=(b-c|0)/96|0;e=J[a>>2];a=0;while(1){b=P(a,96)+c|0;if(!(!J[b+4>>2]|J[b>>2]!=J[i>>2]|((e|0)!=J[b+72>>2]|(d|0)!=J[b+84>>2]))){H[b+88|0]=K[b+88|0]|1;e=0;break f}a=a+1|0;if(f>>>0>a>>>0){continue}break}e=0;break f}if((b|0)==J[56974]){e=J[f>>2];b=J[f+4>>2];if((e|0)==(b|0)){e=0;break f}j=K[j+96|0]<<2|2;while(1){d=P(c,96)+e|0;if(!(!J[d+4>>2]|J[d>>2]!=J[i>>2]|J[d+72>>2]!=J[a>>2])){H[d+88|0]=j|K[d+88|0]&249;e=J[f>>2];b=J[f+4>>2]}c=c+1|0;if(c>>>0<(b-e|0)/96>>>0){continue}break}e=0;break f}if((b|0)==J[57010]){b=J[a>>2];o=N[j+96>>2];N[i+12>>2]=o;a=J[f+4>>2];c=J[f>>2];if((a|0)==(c|0)){e=0;break f}d=J[i>>2];a=(a-c|0)/96|0;i=a>>>0<=1?1:a;c=0;while(1){a=J[f>>2];if((J[f+4>>2]-a|0)/96>>>0<=c>>>0){break c}q:{a=a+P(c,96)|0;e=J[a+4>>2];if(!e){break q}j=J[a>>2];if((j|0)!=(d|0)|(b|0)!=J[a+72>>2]){break q}r=N[j+12>>2];J[g+60>>2]=0;J[g+52>>2]=0;J[g+56>>2]=0;N[g+48>>2]=o*r;if(!Cs(e,0,g+48|0)){break q}e=-1e3;break f}e=0;c=c+1|0;if((i|0)!=(c|0)){continue}break}break f}e=0;if((b|0)!=J[57026]){break f}b=J[a>>2];o=N[j+96>>2];N[i+8>>2]=o;a=J[f+4>>2];c=J[f>>2];if((a|0)==(c|0)){break f}d=J[i>>2];a=(a-c|0)/96|0;i=a>>>0<=1?1:a;c=0;while(1){a=J[f>>2];if((J[f+4>>2]-a|0)/96>>>0<=c>>>0){break c}r:{a=a+P(c,96)|0;e=J[a+4>>2];if(!e){break r}j=J[a>>2];if((j|0)!=(d|0)|(b|0)!=J[a+72>>2]){break r}r=N[j+16>>2];J[g+60>>2]=0;J[g+52>>2]=0;J[g+56>>2]=0;N[g+48>>2]=o+r;if(!Cs(e,1,g+48|0)){break r}e=-1e3;break f}e=0;c=c+1|0;if((i|0)!=(c|0)){continue}break}}Ui=g- -64|0;return e|0}break c}Z(49493,54340,151,43112);B()}Z(2701,54340,152,43112);B()}Z(145396,53895,487,84789);B()}Z(49493,54340,140,53220);B()}Z(2650,54340,141,53220);B()}function fs(a,b){var c=0,d=0,e=0,f=0,g=0,h=0,i=0,j=0,k=0,l=0,m=0,n=0,o=0,p=0,q=0,r=0,s=0,t=0,u=0,v=0,w=0,x=0,y=0,z=0,A=0,B=0,C=0,D=0,E=0,F=0,G=0,H=0,I=0,L=0,M=0,N=0,O=0,P=0,Q=0,R=0,S=0,T=0;z=Ui-640|0;Ui=z;while(1){c=g<<3;l=c+z|0;c=b+c|0;o=K[c|0]|K[c+1|0]<<8|(K[c+2|0]<<16|K[c+3|0]<<24);j=K[c+4|0]|K[c+5|0]<<8|(K[c+6|0]<<16|K[c+7|0]<<24);e=o<<24|(o&65280)<<8;d=o&16711680;q=d<<24;d=d>>>8|0;i=o&-16777216;c=i>>>24|0;J[l>>2]=q|i<<8|(((j&255)<<24|o>>>8)&-16777216|((j&16777215)<<8|o>>>24)&16711680|(j>>>8&65280|j>>>24));f=c|d|e;c=0;J[l+4>>2]=f|(c|c);g=g+1|0;if((g|0)!=16){continue}break}d=16;j=J[z>>2];o=J[z+4>>2];while(1){l=j;g=(d<<3)+z|0;b=g-56|0;i=J[b>>2];e=J[b+4>>2];c=g-16|0;b=J[c>>2];c=J[c+4>>2];j=pxa(b,c,45);q=Yi;f=pxa(b,c,3)^j;j=c;c=c>>>6|0;j=f^((j&63)<<26|b>>>6);b=j+i|0;c=(c^(Yi^q))+e|0;c=(b>>>0>>0?c+1|0:c)+o|0;l=b+l|0;b=l>>>0>>0?c+1|0:c;c=g-120|0;j=J[c>>2];c=J[c+4>>2];o=c;c=pxa(j,c,63);i=Yi;e=((o&127)<<25|j>>>7)^(pxa(j,o,56)^c);l=e+l|0;c=(Yi^i^o>>>7)+b|0;J[g>>2]=l;J[g+4>>2]=e>>>0>l>>>0?c+1|0:c;d=d+1|0;if((d|0)!=80){continue}break}b=0;l=J[a+20>>2];M=l;C=J[a+16>>2];n=C;o=J[a+28>>2];N=o;D=J[a+24>>2];j=D;q=J[a+36>>2];O=q;E=J[a+32>>2];m=E;f=J[a+44>>2];P=f;F=J[a+40>>2];k=F;d=J[a+52>>2];Q=d;G=J[a+48>>2];v=G;g=J[a+60>>2];R=g;H=J[a+56>>2];w=H;i=J[a+68>>2];S=i;I=J[a+64>>2];r=I;e=J[a+76>>2];T=e;L=J[a+72>>2];s=L;while(1){A=b<<3;c=A+174960|0;p=J[c>>2];x=J[c+4>>2];c=pxa(v,d,50);y=Yi;c=pxa(v,d,46)^c;y=Yi^y;t=pxa(v,d,23)^c;s=t+s|0;c=(Yi^y)+e|0;c=(s>>>0>>0?c+1|0:c)+x|0;e=p+s|0;c=e>>>0>>0?c+1|0:c;s=r^v&(r^w);e=s+e|0;c=(i^d&(g^i))+c|0;c=e>>>0>>0?c+1|0:c;s=z+A|0;p=J[s>>2];e=p+e|0;c=J[s+4>>2]+c|0;x=e;c=e>>>0

>>0?c+1|0:c;y=c;s=c;c=pxa(n,l,36);p=Yi;c=pxa(n,l,30)^c;t=Yi^p;h=pxa(n,l,25)^c;p=h+((j|n)&m|j&n)|0;c=((l|o)&q|l&o)+(Yi^t)|0;c=(h>>>0>p>>>0?c+1|0:c)+s|0;e=e+p|0;c=e>>>0

>>0?c+1|0:c;s=e;p=pxa(e,c,36);t=Yi;h=p;p=c;h=h^pxa(e,c,30);t=Yi^t;u=pxa(e,c,25)^h;h=j&(e|n)|e&n;e=u+h|0;c=(o&(c|l)|c&l)+(Yi^t)|0;c=e>>>0>>0?c+1|0:c;h=e;t=c;e=A|8;c=e+174960|0;u=J[c>>2];c=i+J[c+4>>2]|0;i=r+u|0;c=i>>>0>>0?c+1|0:c;e=e+z|0;r=J[e>>2];i=r+i|0;c=J[e+4>>2]+c|0;c=i>>>0>>0?c+1|0:c;r=i;e=c;c=f+y|0;i=k+x|0;c=i>>>0>>0?c+1|0:c;k=w^(v^w)&i;f=k+r|0;r=e;e=c;c=r+(g^c&(d^g))|0;c=f>>>0>>0?c+1|0:c;k=pxa(i,e,50);r=Yi;k=pxa(i,e,46)^k;r=Yi^r;k=pxa(i,e,23)^k;f=k+f|0;c=(Yi^r)+c|0;c=f>>>0>>0?c+1|0:c;k=f;y=c;c=c+t|0;f=f+h|0;c=k>>>0>f>>>0?c+1|0:c;r=f;x=pxa(f,c,36);t=Yi;h=x;x=c;h=h^pxa(f,c,30);t=Yi^t;u=pxa(f,c,25)^h;h=n&(f|s)|f&s;f=u+h|0;c=(l&(c|p)|c&p)+(Yi^t)|0;c=f>>>0>>0?c+1|0:c;h=f;t=c;f=A|16;c=f+174960|0;u=J[c>>2];c=g+J[c+4>>2]|0;g=w+u|0;c=g>>>0>>0?c+1|0:c;f=f+z|0;w=J[f>>2];g=w+g|0;c=J[f+4>>2]+c|0;c=g>>>0>>0?c+1|0:c;w=g;f=c;c=q+y|0;g=k+m|0;c=g>>>0>>0?c+1|0:c;k=v^(i^v)&g;m=k+w|0;q=c;c=(d^c&(d^e))+f|0;c=k>>>0>m>>>0?c+1|0:c;f=pxa(g,q,50);k=Yi;f=pxa(g,q,46)^f;k=Yi^k;y=m;m=pxa(g,q,23)^f;f=y+m|0;c=(Yi^k)+c|0;c=f>>>0>>0?c+1|0:c;m=f;k=c;c=c+t|0;f=f+h|0;c=m>>>0>f>>>0?c+1|0:c;w=f;y=pxa(f,c,36);t=Yi;h=y;y=c;h=h^pxa(f,c,30);t=Yi^t;u=pxa(f,c,25)^h;h=s&(f|r)|f&r;f=u+h|0;c=(p&(c|x)|c&x)+(Yi^t)|0;t=f;f=f>>>0>>0?c+1|0:c;h=A|24;c=h+174960|0;u=J[c>>2];c=d+J[c+4>>2]|0;d=v+u|0;c=d>>>0>>0?c+1|0:c;v=h+z|0;h=J[v>>2];d=h+d|0;c=J[v+4>>2]+c|0;v=d;d=d>>>0>>0?c+1|0:c;c=k+o|0;j=j+m|0;c=j>>>0>>0?c+1|0:c;k=i^(g^i)&j;m=k+v|0;o=c;c=(e^c&(e^q))+d|0;c=k>>>0>m>>>0?c+1|0:c;d=pxa(j,o,50);k=Yi;d=pxa(j,o,46)^d;k=Yi^k;h=m;m=pxa(j,o,23)^d;d=h+m|0;c=(Yi^k)+c|0;c=d>>>0>>0?c+1|0:c;m=d;h=f;f=c;c=h+c|0;d=d+t|0;c=m>>>0>d>>>0?c+1|0:c;v=d;k=pxa(d,c,36);h=Yi;t=c;k=pxa(d,c,30)^k;h=Yi^h;u=pxa(d,c,25)^k;k=r&(d|w)|d&w;d=u+k|0;c=(x&(c|y)|c&y)+(Yi^h)|0;h=d;k=d>>>0>>0?c+1|0:c;d=A|32;c=d+174960|0;u=J[c>>2];c=e+J[c+4>>2]|0;e=i;i=i+u|0;c=e>>>0>i>>>0?c+1|0:c;u=i;i=d+z|0;e=J[i>>2];d=u+e|0;c=J[i+4>>2]+c|0;i=d;d=d>>>0>>0?c+1|0:c;c=f+l|0;l=n+m|0;c=l>>>0>>0?c+1|0:c;e=g^(g^j)&l;i=e+i|0;f=d;d=c;c=f+(q^c&(o^q))|0;c=e>>>0>i>>>0?c+1|0:c;e=pxa(l,d,50);f=Yi;e=pxa(l,d,46)^e;f=Yi^f;e=pxa(l,d,23)^e;i=e+i|0;c=(Yi^f)+c|0;e=e>>>0>i>>>0?c+1|0:c;c=e+k|0;k=i+h|0;c=k>>>0>>0?c+1|0:c;f=pxa(k,c,36);n=Yi;h=f;f=c;m=h^pxa(k,c,30);h=Yi^n;n=pxa(k,c,25)^m;m=w&(k|v)|k&v;n=n+m|0;c=(y&(c|t)|c&t)+(Yi^h)|0;h=n;n=h>>>0>>0?c+1|0:c;c=A|40;u=c+z|0;c=c+174960|0;B=J[c>>2];m=J[u>>2]+B|0;c=J[u+4>>2]+J[c+4>>2]|0;c=q+(m>>>0>>0?c+1|0:c)|0;q=g;g=g+m|0;c=q>>>0>g>>>0?c+1|0:c;q=g;g=c;c=e+p|0;e=s;s=i+s|0;c=e>>>0>s>>>0?c+1|0:c;e=q;q=j^(j^l)&s;i=e+q|0;e=c;c=(o^c&(d^o))+g|0;c=i>>>0>>0?c+1|0:c;g=pxa(s,e,50);q=Yi;g=pxa(s,e,46)^g;q=Yi^q;m=i;i=pxa(s,e,23)^g;g=m+i|0;c=(Yi^q)+c|0;i=g>>>0>>0?c+1|0:c;c=i+n|0;m=g+h|0;c=m>>>0>>0?c+1|0:c;q=pxa(m,c,36);n=Yi;h=q;q=c;p=h^pxa(m,c,30);h=Yi^n;n=pxa(m,c,25)^p;p=v&(k|m)|k&m;n=n+p|0;c=(t&(c|f)|c&f)+(Yi^h)|0;h=n;n=h>>>0

>>0?c+1|0:c;c=A|48;u=c+z|0;c=c+174960|0;B=J[c>>2];p=J[u>>2]+B|0;c=J[u+4>>2]+J[c+4>>2]|0;c=o+(p>>>0>>0?c+1|0:c)|0;o=j;j=j+p|0;c=o>>>0>j>>>0?c+1|0:c;o=j;j=c;c=i+x|0;i=r;r=g+r|0;c=i>>>0>r>>>0?c+1|0:c;g=l^(l^s)&r;o=g+o|0;i=c;c=(d^c&(d^e))+j|0;c=g>>>0>o>>>0?c+1|0:c;j=pxa(r,i,50);g=Yi;j=pxa(r,i,46)^j;g=Yi^g;p=o;o=pxa(r,i,23)^j;j=p+o|0;c=(Yi^g)+c|0;p=n;g=j;n=g>>>0>>0?c+1|0:c;c=p+n|0;j=g+h|0;c=g>>>0>j>>>0?c+1|0:c;o=pxa(j,c,36);p=Yi;h=o;o=c;x=h^pxa(j,c,30);h=Yi^p;p=pxa(j,c,25)^x;x=k&(j|m)|j&m;p=p+x|0;c=(f&(c|q)|c&q)+(Yi^h)|0;h=p;p=h>>>0>>0?c+1|0:c;c=A|56;A=c+z|0;c=c+174960|0;u=J[c>>2];x=J[A>>2]+u|0;c=J[A+4>>2]+J[c+4>>2]|0;c=d+(x>>>0>>0?c+1|0:c)|0;d=l;l=l+x|0;c=d>>>0>l>>>0?c+1|0:c;d=l;l=c;c=n+y|0;w=g+w|0;c=w>>>0>>0?c+1|0:c;n=s^(s^r)&w;d=n+d|0;g=c;c=(e^c&(e^i))+l|0;c=d>>>0>>0?c+1|0:c;l=pxa(w,g,50);n=Yi;l=pxa(w,g,46)^l;n=Yi^n;y=d;d=pxa(w,g,23)^l;l=y+d|0;c=(Yi^n)+c|0;n=p;p=d>>>0>l>>>0?c+1|0:c;c=n+p|0;d=l;n=d+h|0;l=d>>>0>n>>>0?c+1|0:c;c=p+t|0;v=d+v|0;d=v>>>0>>0?c+1|0:c;c=b>>>0<72;b=b+8|0;if(c){continue}break}c=e+T|0;b=s+L|0;c=b>>>0>>0?c+1|0:c;J[a+72>>2]=b;J[a+76>>2]=c;c=i+S|0;b=r+I|0;c=b>>>0>>0?c+1|0:c;J[a+64>>2]=b;J[a+68>>2]=c;c=g+R|0;b=w+H|0;c=b>>>0>>0?c+1|0:c;J[a+56>>2]=b;J[a+60>>2]=c;c=d+Q|0;b=v+G|0;c=b>>>0>>0?c+1|0:c;J[a+48>>2]=b;J[a+52>>2]=c;c=f+P|0;b=k+F|0;c=b>>>0>>0?c+1|0:c;J[a+40>>2]=b;J[a+44>>2]=c;c=q+O|0;b=m+E|0;c=b>>>0>>0?c+1|0:c;J[a+32>>2]=b;J[a+36>>2]=c;c=o+N|0;b=j+D|0;c=b>>>0>>0?c+1|0:c;J[a+24>>2]=b;J[a+28>>2]=c;c=l+M|0;b=n+C|0;c=b>>>0>>0?c+1|0:c;J[a+16>>2]=b;J[a+20>>2]=c;Ui=z+640|0;return 0}function Dja(a){a=a|0;var b=0,c=0,d=0,e=Q(0),f=Q(0),g=0,h=Q(0),i=Q(0),j=Q(0),k=Q(0),l=Q(0),m=Q(0),n=Q(0),o=Q(0),p=0,q=Q(0),r=Q(0),s=Q(0),t=Q(0),u=Q(0),v=Q(0),w=0,x=Q(0),y=Q(0),z=0,A=Q(0),C=Q(0),D=Q(0),E=Q(0),F=Q(0),G=Q(0),M=0,O=0,P=Q(0),S=Q(0),T=Q(0),U=Q(0),V=Q(0),W=Q(0),X=Q(0),Y=Q(0),_=0,$=0;b=Ui-448|0;Ui=b;J[b+300>>2]=0;z=J[a+4>>2];d=J[z>>2];a=J[a+8>>2];O=J[a>>2];p=J[z+4>>2];c=p-d>>8;J[76460]=c+J[76460];J[b+288>>2]=c;J[b+292>>2]=0;J[b+8>>2]=c;J[b+12>>2]=0;a:{if((d|0)!=(p|0)){a=K[a+8|0];J[b+444>>2]=0;d=J[z+4>>2];p=J[z>>2];if((d|0)!=(p|0)){g=a&1;a=d-p>>8;w=a>>>0<=1?1:a;p=0;while(1){a=J[z>>2];if(J[z+4>>2]-a>>8>>>0<=p>>>0){break a}a=a+(p<<8)|0;if((L[a+246>>1]&3)==3){h=Q(0);k=Q(0);d=a- -64|0;j=Q(N[d+4>>2]*N[a+52>>2]);l=Q(N[d>>2]*N[a+48>>2]);q=N[a+44>>2];e=N[a+40>>2];i=N[a+36>>2];m=N[a+32>>2];x=N[a+24>>2];D=N[a+20>>2];E=N[a+16>>2];b:{c:{d:{e:{f:{g:{h:{d=J[a+192>>2];switch(d|0){case 2:case 3:case 4:break g;case 0:case 1:case 5:break h;case 8:break d;case 7:break e;default:break b}}h=Q(l*Q(-.5));break f}h=Q(-l)}switch(d|0){case 1:case 2:break d;case 0:case 3:break e;default:break b}}k=Q(j*Q(-.5));break c}k=Q(-j)}}J[b+76>>2]=1065353216;J[b+60>>2]=0;J[b+44>>2]=0;J[b+28>>2]=0;A=Q(m*Q(-0));C=Q(e*Q(0));l=Q(q*Q(0));f=Q(A+Q(C+Q(l+i)));j=Q(i*Q(-0));n=Q(m*Q(0));u=Q(j+Q(n+Q(l+e)));t=Q(u+u);y=Q(f*t);v=Q(e*Q(-0));n=Q(v+Q(j+Q(q-n)));s=Q(i*Q(0));j=Q(v+Q(s+Q(l+m)));r=Q(j+j);o=Q(n*r);N[b+52>>2]=y-o;F=Q(j*t);v=Q(f+f);G=Q(n*v);N[b+48>>2]=F+G;N[b+40>>2]=y+o;y=Q(j*v);n=Q(n*t);N[b+32>>2]=y-n;N[b+24>>2]=F-G;N[b+20>>2]=y+n;o=x;n=Q(A+Q(Q(q*k)+Q(e*h)));x=Q(C+Q(Q(m*h)+Q(i*k)));l=Q(Q(l+Q(m*k))-Q(i*h));h=Q(Q(Q(q*h)+s)-Q(e*k));N[b+72>>2]=o+Q(Q(n*m)+Q(Q(Q(x*e)+Q(q*l))-Q(h*i)));N[b+68>>2]=D+Q(Q(h*e)+Q(Q(Q(x*i)+Q(q*n))-Q(l*m)));N[b+64>>2]=E+Q(Q(l*i)+Q(Q(Q(x*m)+Q(q*h))-Q(n*e)));h=Q(Q(1)-Q(j*r));k=Q(f*v);N[b+56>>2]=h-k;i=h;h=Q(u*t);N[b+36>>2]=i-h;N[b+16>>2]=Q(Q(1)-k)-h;d=op(J[a>>2]);N[b+368>>2]=N[d>>2];N[b+372>>2]=N[d+4>>2];N[b+376>>2]=N[d+8>>2];N[b+380>>2]=N[d+12>>2];N[b+384>>2]=N[d+16>>2];N[b+388>>2]=N[d+20>>2];N[b+392>>2]=N[d+24>>2];N[b+396>>2]=N[d+28>>2];N[b+400>>2]=N[d+32>>2];N[b+404>>2]=N[d+36>>2];N[b+408>>2]=N[d+40>>2];N[b+412>>2]=N[d+44>>2];N[b+416>>2]=N[d+48>>2];N[b+420>>2]=N[d+52>>2];N[b+424>>2]=N[d+56>>2];N[b+428>>2]=N[d+60>>2];i:{if((K[J[a>>2]+137|0]&2)>>>1|0){e=N[b+428>>2];k=N[b+76>>2];i=N[b+412>>2];m=N[b+72>>2];q=N[b+380>>2];j=N[b+64>>2];l=N[b+396>>2];f=N[b+68>>2];F=Q(Q(e*k)+Q(Q(i*m)+Q(Q(q*j)+Q(l*f))));t=N[b+424>>2];u=N[b+408>>2];n=N[b+376>>2];v=N[b+392>>2];G=Q(Q(t*k)+Q(Q(u*m)+Q(Q(n*j)+Q(v*f))));x=N[b+420>>2];D=N[b+404>>2];E=N[b+372>>2];A=N[b+388>>2];h=Q(Q(x*k)+Q(Q(D*m)+Q(Q(E*j)+Q(A*f))));C=N[b+416>>2];y=N[b+400>>2];o=Q(y*m);m=N[b+368>>2];r=Q(m*j);j=N[b+384>>2];k=Q(Q(C*k)+Q(o+Q(r+Q(j*f))));f=N[b+60>>2];s=N[b+56>>2];r=N[b+48>>2];o=N[b+52>>2];P=Q(Q(e*f)+Q(Q(i*s)+Q(Q(q*r)+Q(l*o))));S=Q(Q(t*f)+Q(Q(u*s)+Q(Q(n*r)+Q(v*o))));T=Q(Q(x*f)+Q(Q(D*s)+Q(Q(E*r)+Q(A*o))));U=Q(Q(C*f)+Q(Q(y*s)+Q(Q(m*r)+Q(j*o))));f=N[b+44>>2];s=N[b+40>>2];r=N[b+32>>2];o=N[b+36>>2];V=Q(Q(e*f)+Q(Q(i*s)+Q(Q(q*r)+Q(l*o))));W=Q(Q(t*f)+Q(Q(u*s)+Q(Q(n*r)+Q(v*o))));X=Q(Q(x*f)+Q(Q(D*s)+Q(Q(E*r)+Q(A*o))));s=Q(Q(C*f)+Q(Q(y*s)+Q(Q(m*r)+Q(j*o))));o=e;e=N[b+28>>2];r=i;i=N[b+24>>2];Y=q;q=N[b+16>>2];f=N[b+20>>2];l=Q(Q(o*e)+Q(Q(r*i)+Q(Q(Y*q)+Q(f*l))));t=Q(Q(t*e)+Q(Q(u*i)+Q(Q(n*q)+Q(f*v))));u=Q(Q(x*e)+Q(Q(D*i)+Q(Q(E*q)+Q(f*A))));i=Q(Q(C*e)+Q(Q(y*i)+Q(Q(m*q)+Q(j*f))));break i}Jp(b+304|0,b+368|0,b+16|0);F=N[b+364>>2];G=N[b+360>>2];h=N[b+356>>2];k=N[b+352>>2];P=N[b+348>>2];S=N[b+344>>2];T=N[b+340>>2];U=N[b+336>>2];V=N[b+332>>2];W=N[b+328>>2];X=N[b+324>>2];s=N[b+320>>2];l=N[b+316>>2];t=N[b+312>>2];u=N[b+308>>2];i=N[b+304>>2]}N[a+188>>2]=F;N[a+184>>2]=G;e=N[a+72>>2];N[a+172>>2]=P*e;N[a+168>>2]=S*e;N[a+164>>2]=T*e;N[a+160>>2]=U*e;e=N[a+68>>2];N[a+156>>2]=V*e;N[a+152>>2]=W*e;N[a+148>>2]=X*e;N[a+144>>2]=s*e;e=N[a+64>>2];N[a+140>>2]=l*e;N[a+136>>2]=t*e;N[a+132>>2]=u*e;N[a+128>>2]=i*e;if(Q(R(h))>2]=g?h:Q(d|0);if(Q(R(k))>2]=g?k:Q(d|0)}p=p+1|0;if((w|0)!=(p|0)){continue}break}}_=c>>>0<=1?1:c;$=b+132|0;p=0;while(1){j:{k:{l:{m:{n:{a=J[z>>2];if(J[z+4>>2]-a>>8>>>0>p>>>0){c=a+(p<<8)|0;a=L[c+246>>1];if((a&3)!=3){break j}o:{if(!(a&8)){a=J[c+220>>2];if(!a|!K[a+52|0]){break o}}a=Ui-32|0;Ui=a;w=J[c+216>>2];g=J[w>>2];d=J[c+224>>2];if(!d){d=J[w+4>>2]}J[a+8>>2]=J[d>>2];M=J[c+228>>2];if(!M){M=J[w+8>>2]}d=a+12|0;J[d>>2]=0;J[d+4>>2]=0;J[d+16>>2]=0;J[d+8>>2]=0;J[d+12>>2]=0;Ek(d,a+8|0,4);Ek(d,M,4);Ek(d,g+92|0,4);Ek(d,g+32|0,16);Ek(d,g+48|0,16);Ek(d,g- -64|0,16);g=J[c+220>>2];if(g){yr(g,d)}J[c+196>>2]=mn(a+12|0);I[c+246>>1]=L[c+246>>1]&65527;Ui=a+32|0}d=pC(b+16|0);a=J[J[c+216>>2]>>2];N[b+80>>2]=N[c+80>>2];N[b+84>>2]=N[c+84>>2];N[b+88>>2]=N[c+88>>2];N[b+92>>2]=N[c+92>>2];N[b+96>>2]=N[c+96>>2];N[b+100>>2]=N[c+100>>2];N[b+104>>2]=N[c+104>>2];N[b+108>>2]=N[c+108>>2];N[b+112>>2]=N[c+112>>2];N[b+116>>2]=N[c+116>>2];N[b+120>>2]=N[c+120>>2];N[b+124>>2]=N[c+124>>2];J[b+128>>2]=J[c+240>>2];N[d>>2]=N[c+128>>2];N[b+20>>2]=N[c+132>>2];N[b+24>>2]=N[c+136>>2];N[b+28>>2]=N[c+140>>2];N[b+32>>2]=N[c+144>>2];N[b+36>>2]=N[c+148>>2];N[b+40>>2]=N[c+152>>2];N[b+44>>2]=N[c+156>>2];N[b+48>>2]=N[c+160>>2];N[b+52>>2]=N[c+164>>2];N[b+56>>2]=N[c+168>>2];N[b+60>>2]=N[c+172>>2];N[b+64>>2]=N[c+176>>2];N[b+68>>2]=N[c+180>>2];N[b+72>>2]=N[c+184>>2];h=N[c+188>>2];I[b+204>>1]=0;N[b+76>>2]=h;H[b+224|0]=K[c+246|0]>>>4&1;N[b+216>>2]=N[c+232>>2];N[b+220>>2]=N[c+236>>2];N[b+208>>2]=N[c+48>>2];N[b+212>>2]=N[c+52>>2];H[b+272|0]=K[b+272|0]&254;g=J[a+88>>2];if(g>>>0<=8){g=g<<2;J[b+232>>2]=J[g+159788>>2];J[b+228>>2]=J[g+159752>>2]}a=J[a+92>>2];if(a>>>0>=5|!(27>>>a&1)){break n}a=a<<2;J[b+200>>2]=J[a+159844>>2];J[b+196>>2]=J[a+159824>>2];a=J[c+220>>2];if(!a){break k}g=J[a+4>>2]-J[a>>2]>>2;w=g>>>0>=16?16:g;a=0;if(g){break m}break l}break a}J[b>>2]=a;dj(4,88458,155267,b);Z(114101,40690,452,20457);B()}while(1){J[(a<<2)+$>>2]=kQ(J[c+220>>2],a);a=a+1|0;if((w|0)!=(a|0)){continue}break}}H[b+206|0]=w}g=J[c+216>>2];a=J[c+228>>2];if(!a){a=J[g+8>>2]}w=J[a+4>>2];a=J[c+224>>2];if(!a){a=J[g+4>>2]}oC(O,w,J[a>>2],J[c+196>>2],d)}p=p+1|0;if((_|0)!=(p|0)){continue}break}nC(O,1,0)}Ui=b+448|0;return 0}Z(145396,53895,487,84789);B()}function tr(a,b,c,d){var e=0,f=0,g=0,h=0,i=0,j=0,k=0,l=0,m=0;k=Ui-192|0;Ui=k;J[k+188>>2]=0;a:{b:{c:{g=J[a+16>>2];d:{if(!g){break d}e=J[J[a+12>>2]>>2];l=J[e+8>>2]-J[e+12>>2]>>4;g=J[g+(b<<2)>>2];if(!((c|0)==-2&(g|0)==-2)){Nj(e,-1e4,J[a>>2]);Ok(e);e:{if((c|0)!=-2){BB(e,c);if((kj(e,-1)|0)!=6){gj(e,-2);a=J[e+8>>2];J[a+8>>2]=0;J[e+8>>2]=a+16;Ok(e);dj(3,93318,101848,0);break d}yB(e,c);break e}Nj(e,-1e4,g)}if((kj(e,-1)|0)!=6){break c}Nj(e,-1e4,J[a>>2]);c=1;f:{g:{switch(b-2|0){case 0:f=+N[d>>2];a=J[e+8>>2];J[a+8>>2]=3;O[a>>3]=f;J[e+8>>2]=J[e+8>>2]+16;c=2;break f;case 1:Bk(e,J[d+64>>2],J[d+68>>2]);a=J[d+80>>2];h:{if(a){mx(e,a,d+96|0,1);break h}a=J[d+84>>2];if(a){Du(e,d+96|0,a);break h}Fj(e,0,0)}wm(e,d);c=4;break f;case 2:break g;default:break f}}g=J[d>>2];a=J[g>>2];c=J[g+4>>2];i:{if(a|c){Bk(e,a,c);break i}a=J[e+8>>2];J[a+8>>2]=0;J[e+8>>2]=a+16}Fj(e,0,0);h=L[g+956>>1];if(h&1){f=+M[g+804>>2];a=J[e+8>>2];J[a+8>>2]=3;O[a>>3]=f;J[e+8>>2]=J[e+8>>2]+16;ej(e,-2,76148);a=J[g+808>>2];c=J[e+8>>2];J[c+8>>2]=3;O[c>>3]=a|0;J[e+8>>2]=J[e+8>>2]+16;ej(e,-2,72289);a=L[g+956>>1]>>>1&1;c=J[e+8>>2];J[c+8>>2]=1;J[c>>2]=a;J[e+8>>2]=J[e+8>>2]+16;ej(e,-2,44503);h=L[g+956>>1]}if(h&8){mj(e,g+544|0,J[g+800>>2]);ej(e,-2,66005);h=L[g+956>>1]}if(h&16){hj(k+32|0,g+812|0,144);mj(e,21132,12);h=0;Fj(e,32,0);while(1){a=J[e+8>>2];J[a+8>>2]=3;c=a;a=h+1|0;O[c>>3]=a|0;J[e+8>>2]=J[e+8>>2]+16;f=+N[(k+32|0)+(h<<2)>>2];c=J[e+8>>2];J[c+8>>2]=3;O[c>>3]=f;J[e+8>>2]=J[e+8>>2]+16;Kj(e,-3);h=a;if((a|0)!=32){continue}break}Kj(e,-3);mj(e,19953,15);h=0;Fj(e,32,0);while(1){a=J[e+8>>2];J[a+8>>2]=3;c=a;a=h+1|0;O[c>>3]=a|0;J[e+8>>2]=J[e+8>>2]+16;c=k+32|0;if(c){h=J[(c+(h>>>3&536870908)|0)+128>>2]>>>h&1}else{h=0}m=J[e+8>>2];J[m+8>>2]=3;O[m>>3]=h>>>0;J[e+8>>2]=J[e+8>>2]+16;Kj(e,-3);h=a;if((a|0)!=32){continue}break}Kj(e,-3);mj(e,18598,12);Fj(e,4,0);a=J[e+8>>2];J[a+8>>2]=3;O[a>>3]=1;J[e+8>>2]=J[e+8>>2]+16;if(c){H[k+28|0]=K[c+136|0]}f=c?+K[k+28|0]:0;a=J[e+8>>2];J[a+8>>2]=3;O[a>>3]=f;J[e+8>>2]=J[e+8>>2]+16;Kj(e,-3);a=J[e+8>>2];J[a+8>>2]=3;O[a>>3]=2;J[e+8>>2]=J[e+8>>2]+16;if(c){H[k+28|0]=K[c+137|0]}f=c?+K[k+28|0]:0;a=J[e+8>>2];J[a+8>>2]=3;O[a>>3]=f;J[e+8>>2]=J[e+8>>2]+16;Kj(e,-3);a=J[e+8>>2];J[a+8>>2]=3;O[a>>3]=3;J[e+8>>2]=J[e+8>>2]+16;if(c){H[k+28|0]=K[c+138|0]}f=c?+K[k+28|0]:0;a=J[e+8>>2];J[a+8>>2]=3;O[a>>3]=f;J[e+8>>2]=J[e+8>>2]+16;Kj(e,-3);a=J[e+8>>2];J[a+8>>2]=3;O[a>>3]=4;J[e+8>>2]=J[e+8>>2]+16;if(c){H[k+28|0]=K[c+139|0]}f=c?+K[k+28|0]:0;a=J[e+8>>2];J[a+8>>2]=3;O[a>>3]=f;J[e+8>>2]=J[e+8>>2]+16;Kj(e,-3);Kj(e,-3)}if(J[g>>2]|J[g+4>>2]){mj(e,60977,5);f=+N[g+8>>2];a=J[e+8>>2];J[a+8>>2]=3;O[a>>3]=f;J[e+8>>2]=J[e+8>>2]+16;Xj(e,-3);mj(e,74456,7);a=L[g+956>>1]>>>6&1;c=J[e+8>>2];J[c+8>>2]=1;J[c>>2]=a;J[e+8>>2]=J[e+8>>2]+16;Xj(e,-3);mj(e,74514,8);a=L[g+956>>1]>>>7&1;c=J[e+8>>2];J[c+8>>2]=1;J[c>>2]=a;J[e+8>>2]=J[e+8>>2]+16;Xj(e,-3);mj(e,74177,8);a=H[g+957|0]&1;c=J[e+8>>2];J[c+8>>2]=1;J[c>>2]=a;J[e+8>>2]=J[e+8>>2]+16;Xj(e,-3)}a=L[g+956>>1];if(a&512){mj(e,6387,1);f=+N[g+12>>2];a=J[e+8>>2];J[a+8>>2]=3;O[a>>3]=f;J[e+8>>2]=J[e+8>>2]+16;Xj(e,-3);mj(e,4511,1);f=+N[g+16>>2];a=J[e+8>>2];J[a+8>>2]=3;O[a>>3]=f;J[e+8>>2]=J[e+8>>2]+16;Xj(e,-3);mj(e,5725,2);f=+N[g+20>>2];a=J[e+8>>2];J[a+8>>2]=3;O[a>>3]=f;J[e+8>>2]=J[e+8>>2]+16;Xj(e,-3);mj(e,3779,2);f=+N[g+24>>2];a=J[e+8>>2];J[a+8>>2]=3;O[a>>3]=f;J[e+8>>2]=J[e+8>>2]+16;Xj(e,-3);mj(e,5990,8);f=+N[g+28>>2];a=J[e+8>>2];J[a+8>>2]=3;O[a>>3]=f;J[e+8>>2]=J[e+8>>2]+16;Xj(e,-3);mj(e,4374,8);f=+N[g+32>>2];a=J[e+8>>2];J[a+8>>2]=3;O[a>>3]=f;J[e+8>>2]=J[e+8>>2]+16;Xj(e,-3);mj(e,5718,9);f=+N[g+36>>2];a=J[e+8>>2];J[a+8>>2]=3;O[a>>3]=f;J[e+8>>2]=J[e+8>>2]+16;Xj(e,-3);mj(e,3772,9);f=+N[g+40>>2];a=J[e+8>>2];J[a+8>>2]=3;O[a>>3]=f;J[e+8>>2]=J[e+8>>2]+16;Xj(e,-3);a=L[g+956>>1]}if(a&1024){mj(e,6007,5);f=+N[g+44>>2];a=J[e+8>>2];J[a+8>>2]=3;O[a>>3]=f;J[e+8>>2]=J[e+8>>2]+16;Xj(e,-3);mj(e,4391,5);f=+N[g+48>>2];a=J[e+8>>2];J[a+8>>2]=3;O[a>>3]=f;J[e+8>>2]=J[e+8>>2]+16;Xj(e,-3);mj(e,1237,5);f=+N[g+52>>2];a=J[e+8>>2];J[a+8>>2]=3;O[a>>3]=f;J[e+8>>2]=J[e+8>>2]+16;Xj(e,-3)}h=J[g+540>>2];if((h|0)>0){mj(e,53619,5);Fj(e,h,0);m=g+56|0;c=0;while(1){a=J[e+8>>2];J[a+8>>2]=3;i=a;a=c+1|0;O[i>>3]=a|0;J[e+8>>2]=J[e+8>>2]+16;Fj(e,0,6);mj(e,72520,2);c=P(c,44)+m|0;i=J[c+40>>2];j=J[e+8>>2];J[j+8>>2]=3;O[j>>3]=i|0;J[e+8>>2]=J[e+8>>2]+16;Kj(e,-3);mj(e,11341,9);i=J[c>>2];j=J[e+8>>2];J[j+8>>2]=3;O[j>>3]=i|0;J[e+8>>2]=J[e+8>>2]+16;Kj(e,-3);mj(e,74456,7);i=!J[c+4>>2];j=J[e+8>>2];J[j+8>>2]=1;J[j>>2]=i;J[e+8>>2]=J[e+8>>2]+16;Kj(e,-3);mj(e,74514,8);i=J[c+4>>2]-3>>>0<2;j=J[e+8>>2];J[j+8>>2]=1;J[j>>2]=i;J[e+8>>2]=J[e+8>>2]+16;Kj(e,-3);mj(e,6387,1);i=J[c+8>>2];j=J[e+8>>2];J[j+8>>2]=3;O[j>>3]=i|0;J[e+8>>2]=J[e+8>>2]+16;Kj(e,-3);mj(e,4511,1);i=J[c+12>>2];j=J[e+8>>2];J[j+8>>2]=3;O[j>>3]=i|0;J[e+8>>2]=J[e+8>>2]+16;Kj(e,-3);mj(e,5990,8);f=+J[c+16>>2];i=J[e+8>>2];J[i+8>>2]=3;O[i>>3]=f;J[e+8>>2]=J[e+8>>2]+16;Xj(e,-3);mj(e,4374,8);f=+J[c+20>>2];i=J[e+8>>2];J[i+8>>2]=3;O[i>>3]=f;J[e+8>>2]=J[e+8>>2]+16;Xj(e,-3);mj(e,5725,2);i=J[c+24>>2];j=J[e+8>>2];J[j+8>>2]=3;O[j>>3]=i|0;J[e+8>>2]=J[e+8>>2]+16;Kj(e,-3);mj(e,3779,2);i=J[c+28>>2];j=J[e+8>>2];J[j+8>>2]=3;O[j>>3]=i|0;J[e+8>>2]=J[e+8>>2]+16;Kj(e,-3);mj(e,5718,9);f=+J[c+32>>2];i=J[e+8>>2];J[i+8>>2]=3;O[i>>3]=f;J[e+8>>2]=J[e+8>>2]+16;Xj(e,-3);mj(e,3772,9);f=+J[c+36>>2];c=J[e+8>>2];J[c+8>>2]=3;O[c>>3]=f;J[e+8>>2]=J[e+8>>2]+16;Xj(e,-3);Kj(e,-3);c=a;if((h|0)!=(a|0)){continue}break}Kj(e,-3)}c=3;if(!(K[g+956|0]&32)){break f}mj(e,9386,4);a=J[g+800>>2];j:{if(!a){mj(e,158859,0);break j}mj(e,g+544|0,a)}Kj(e,-3)}g=J[(b<<2)+286512>>2];a=Ui-128|0;Ui=a;Ui=a+128|0;J[k+28>>2]=0;k:{l:{if(Ol(e,c,-1,0)){if(J[e+8>>2]-J[e+12>>2]>>4!=(l|0)){break b}break l}a=J[e+8>>2]-J[e+12>>2]>>4;m:{if((b|0)==4){n:{if((a-l|0)!=1){break n}if((kj(e,-1)|0)!=1){break n}H[d+4|0]=(ck(e,-1)|0)!=0;gj(e,-2);h=0;break k}h=0;if((a|0)==(l|0)){break k}J[k>>2]=g;dj(4,93318,121768,k);break m}h=0;if((a|0)==(l|0)){break k}J[k+20>>2]=0;J[k+16>>2]=g;dj(4,93318,117683,k+16|0)}gj(e,l)}h=-2}a=J[e+8>>2];J[a+8>>2]=0;J[e+8>>2]=a+16;Ok(e);if(J[e+8>>2]-J[e+12>>2]>>4==(l|0)){break d}Z(143244,40876,2036,10546);B()}if(J[e+8>>2]-J[e+12>>2]>>4!=(l|0)){break a}}Ui=k+192|0;return h}Z(144344,40876,1712,10546);B()}Z(143244,40876,1997,10546);B()}Z(143244,40876,2039,10546);B()}function Gn(a,b,c){var d=0,e=0,f=0,g=0,h=0,i=0,j=0,k=0,l=0,m=0,n=0,o=0,p=0,q=0,r=0;m=a+16|0;a:{b:while(1){o=b+1|0;r=b-1|0;while(1){c:{d:{e:{f:{g:{h:{i:{j:{k:{l:{g=c;e=K[c|0];if((e|0)!=37){m:{switch(e-36|0){default:if(e){break k}return b;case 4:if(K[g+1|0]==41){c=J[a+12>>2];if((c|0)>=32){fj(J[a+8>>2],22490,0)}e=m+(c<<3)|0;J[e+4>>2]=-2;J[e>>2]=b;J[a+12>>2]=c+1;h=Gn(a,b,g+2|0);if(h){break c}break a}c=J[a+12>>2];if((c|0)>=32){fj(J[a+8>>2],22490,0)}e=m+(c<<3)|0;J[e+4>>2]=-1;J[e>>2]=b;J[a+12>>2]=c+1;h=Gn(a,b,g+1|0);if(h){break c}break a;case 1:case 2:case 3:break k;case 0:break l;case 5:break m}}e=g+1|0;d=J[a+12>>2];n:{while(1){if((d|0)>0){d=d-1|0;if(J[(m+(d<<3)|0)+4>>2]!=-1){continue}break n}break}d=fj(J[a+8>>2],63644,0)}c=m+(d<<3)|0;J[c+4>>2]=b-J[c>>2];h=Gn(a,b,e);if(h){break c}J[c+4>>2]=-1;return 0}o:{c=K[g+1|0];if((c|0)!=102){if((c|0)!=98){break o}d=K[g+2|0];if(!(K[g+3|0]?d:0)){fj(J[a+8>>2],44680,0);d=K[g+2|0]}h=0;c=d&255;if((c|0)!=K[b|0]){break c}f=1;d=b+1|0;e=J[a+4>>2];if(d>>>0>=e>>>0){break c}j=K[g+3|0];while(1){i=K[b+1|0];p:{if((i|0)==(j|0)){f=f-1|0;if(f){break p}c=g+4|0;b=b+2|0;continue b}f=((c|0)==(i|0))+f|0}b=d;d=d+1|0;if((e|0)!=(d|0)){continue}break}break c}if(K[g+2|0]==91){j=g+3|0;break e}fj(J[a+8>>2],44621,0);j=g+3|0;e=K[g+2|0];if((e|0)==91){break e}c=j;if((e|0)!=37){break d}if(!K[c|0]){fj(J[a+8>>2],145758,0)}c=g+4|0;break d}if(c-48>>>0>=10){if(!c){fj(J[a+8>>2],145758,0)}j=g+1|0;c=g+2|0;break j}q:{r:{if(c>>>0<49){break r}d=c-49|0;if((d|0)>=J[a+12>>2]){break r}if(J[(m+(d<<3)|0)+4>>2]!=-1){break q}}d=fj(J[a+8>>2],5334,0)}h=0;c=m+(d<<3)|0;e=J[c+4>>2];if(e>>>0>J[a+4>>2]-b>>>0){break c}if(Wj(J[c>>2],b,e)|!b){break c}c=g+2|0;b=b+e|0;continue b}if(!K[g+1|0]){break i}j=g+1|0;c=j;break j}j=g+1|0;c=j;if((e|0)!=91){break j}c=K[g+1|0]==94;d=c?g+2|0:j;f=K[g+(c?2:1)|0];while(1){c=d+1|0;if(!(f&255)){fj(J[a+8>>2],145726,0);f=K[d|0]}d=(f&255)!=37?c:K[d+1|0]?d+2|0:c;f=K[d|0];if((f|0)!=93){continue}break}c=d+1|0}l=J[a+4>>2];q=l>>>0<=b>>>0;e=0;if(q){break f}h=K[b|0];f=1;s:{t:{u:{e=K[g|0];switch(e-37|0){case 1:case 2:case 3:case 4:case 5:case 6:case 7:case 8:break s;case 0:break u;case 9:break g;default:break t}}f=Wo(h,K[j|0]);break g}if((e|0)==91){break h}}f=(e|0)==(h|0);break g}h=J[a+4>>2]==(b|0)?b:0;break c}i=K[g+1|0];f=(i|0)==94;d=f?j:g;e=d+1|0;k=c-1|0;if(e>>>0>=k>>>0){break g}i=(i|0)!=94;while(1){p=K[d+2|0];v:{w:{n=K[d+1|0];if((n|0)==37){if(!Wo(h,p)){break w}f=i;break g}x:{if((p|0)!=45){break x}d=d+3|0;if(k>>>0<=d>>>0){break x}if(h>>>0>>0|h>>>0>K[d|0]){break v}f=i;break g}d=e;if((h|0)!=(n|0)){break v}f=i;break g}d=d+2|0}e=d+1|0;if(k>>>0>e>>>0){continue}break}}e=(f|0)!=0}y:{d=K[c|0];if((d|0)!=63){z:{switch(d-42|0){case 3:k=c+1|0;h=Gn(a,b,k);if(h){break c}o=c-1|0;while(1){h=0;if(M[a+4>>2]<=b>>>0){break c}f=K[b|0];A:{B:{C:{D:{E:{F:{c=K[g|0];switch(c-37|0){case 9:break A;case 1:case 2:case 3:case 4:case 5:case 6:case 7:case 8:break D;case 0:break F;default:break E}}c=Wo(f,K[j|0]);break B}if((c|0)==91){break C}}c=(c|0)==(f|0);break B}e=K[g+1|0];c=(e|0)==94;d=c?j:g;i=d+1|0;if(o>>>0<=i>>>0){break B}e=(e|0)!=94;while(1){m=K[d+2|0];G:{H:{l=K[d+1|0];if((l|0)==37){if(!Wo(f,m)){break H}c=e;break B}I:{if((m|0)!=45){break I}d=d+3|0;if(o>>>0<=d>>>0){break I}if(f>>>0>>0|f>>>0>K[d|0]){break G}c=e;break B}d=i;if((f|0)!=(l|0)){break G}c=e;break B}d=d+2|0}i=d+1|0;if(o>>>0>i>>>0){continue}break}}if(!c){break c}}b=b+1|0;h=Gn(a,b,k);if(!h){continue}break};break c;default:if(!e){return 0}b=o;continue b;case 0:break y;case 1:break z}}if(!e){return 0}d=0;k=b+1|0;J:{if(k>>>0>=l>>>0){break J}m=c-1|0;o=l+(b^-1)|0;l=K[g|0];r=l-37|0;q=(l|0)==91;while(1){h=K[d+k|0];K:{L:{M:{N:{switch(r|0){case 0:e=Wo(h,K[j|0]);break L;default:if(q){break M}break;case 9:break K;case 1:case 2:case 3:case 4:case 5:case 6:case 7:case 8:break N}}e=(h|0)==(l|0);break L}i=K[g+1|0];e=(i|0)==94;f=e?j:g;b=f+1|0;if(m>>>0<=b>>>0){break L}i=(i|0)!=94;while(1){p=K[f+2|0];O:{P:{n=K[f+1|0];if((n|0)==37){if(!Wo(h,p)){break P}e=i;break L}Q:{if((p|0)!=45){break Q}f=f+3|0;if(m>>>0<=f>>>0){break Q}if(h>>>0>>0|h>>>0>K[f|0]){break O}e=i;break L}f=b;if((h|0)!=(n|0)){break O}e=i;break L}f=f+2|0}b=f+1|0;if(m>>>0>b>>>0){continue}break}}if(!e){break J}}d=d+1|0;if((o|0)!=(d|0)){continue}break}d=o}b=c+1|0;while(1){h=0;if((d|0)<0){break c}c=d+k|0;d=d-1|0;h=Gn(a,c,b);if(!h){continue}break}break c}if(e){h=Gn(a,o,c+1|0);if(h){break c}}c=c+1|0;continue}d=0;R:{if(q){break R}o=l-b|0;l=c-1|0;k=K[g|0];r=k-37|0;q=(k|0)==91;while(1){m=K[b+d|0];S:{T:{U:{V:{switch(r|0){case 0:e=Wo(m,K[j|0]);break T;default:if(q){break U}break;case 9:break S;case 1:case 2:case 3:case 4:case 5:case 6:case 7:case 8:break V}}e=(m|0)==(k|0);break T}i=K[g+1|0];e=(i|0)==94;f=e?j:g;h=f+1|0;if(l>>>0<=h>>>0){break T}i=(i|0)!=94;while(1){p=K[f+2|0];W:{X:{n=K[f+1|0];if((n|0)==37){if(!Wo(m,p)){break X}e=i;break T}Y:{if((p|0)!=45){break Y}f=f+3|0;if(l>>>0<=f>>>0){break Y}if(m>>>0>>0|m>>>0>K[f|0]){break W}e=i;break T}f=h;if((m|0)!=(n|0)){break W}e=i;break T}f=f+2|0}h=f+1|0;if(l>>>0>h>>>0){continue}break}}if(!e){break R}}d=d+1|0;if((o|0)!=(d|0)){continue}break}d=o}c=c+1|0;while(1){h=0;if((d|0)<0){break c}e=b+d|0;d=d-1|0;h=Gn(a,e,c);if(!h){continue}break}break c}c=K[g+3|0]==94;d=c?g+4|0:j;f=K[g+(c?4:3)|0];while(1){c=d+1|0;if(!(f&255)){fj(J[a+8>>2],145726,0);f=K[d|0]}d=(f&255)!=37?c:K[d+1|0]?d+2|0:c;f=K[d|0];if((f|0)!=93){continue}break}c=d+1|0}h=0;d=0;d=J[a>>2]!=(b|0)?K[r|0]:d;i=g+2|0;e=K[j|0];g=(e|0)==94;f=g?j:i;j=f+1|0;l=c-1|0;if(j>>>0>=l>>>0){break c}k=d&255;e=(e|0)!=94;i=j;d=f;Z:{while(1){p=K[d+2|0];_:{$:{n=K[d+1|0];if((n|0)==37){if(!Wo(k,p)){break $}i=e;break Z}aa:{if((p|0)!=45){break aa}d=d+3|0;if(l>>>0<=d>>>0){break aa}if(k>>>0>>0|k>>>0>K[d|0]){break _}i=e;break Z}d=i;if((k|0)!=(n|0)){break _}i=e;break Z}d=d+2|0}i=d+1|0;if(l>>>0>i>>>0){continue}break}i=g}if(i){break c}d=K[b|0];ba:{while(1){i=K[f+2|0];k=K[f+1|0];ca:{if((k|0)==37){if(Wo(d,i)){break ba}f=f+2|0;break ca}da:{if((i|0)!=45){break da}f=f+3|0;if(l>>>0<=f>>>0){break da}if(d>>>0>>0|d>>>0>K[f|0]){break ca}break ba}f=j;if((d|0)==(k|0)){break ba}}j=f+1|0;if(l>>>0>j>>>0){continue}break}e=g}if(e){continue}}break}break}return h}J[a+12>>2]=J[a+12>>2]-1;return 0}function ls(a,b,c){var d=0,e=0,f=0,g=0,h=0,i=0,j=0,k=0,l=0,m=0,n=0;j=Ui-2048|0;Ui=j;e=10;a:{b:{if((c|0)==128){break b}if((c|0)!=256){h=-32;if((c|0)!=192){break a}e=12;break b}e=14}J[a>>2]=e;c:{d:{if(K[865392]){d=a+8|0;J[a+4>>2]=d;break d}d=1;while(1){h=j+1024|0;J[h+(f<<2)>>2]=d;J[(d<<2)+j>>2]=f;g=h;h=f|1;d=d<<1&254^(d>>>0>=128?27:0)^d;J[g+(h<<2)>>2]=d;J[(d<<2)+j>>2]=h;d=d^(d<<1&254^(d>>>0>=128?27:0));f=f+2|0;if((f|0)!=256){continue}break}J[216360]=27;J[216361]=54;J[216358]=64;J[216359]=128;J[216356]=16;J[216357]=32;J[216354]=4;J[216355]=8;J[216352]=1;J[216353]=2;H[865456]=99;H[874003]=0;d=1;while(1){f=J[((0-J[(d<<2)+j>>2]<<2)+j|0)+2044>>2];h=f<<1|f>>>7;g=h&255;i=h<<1&254;k=g>>>7|i;h=k<<1&254;l=g;g=h|i>>>7;f=k^(f^(l^(g<<1&254|h>>>7)))^g^99;H[d+865456|0]=f;H[f+873904|0]=d;d=d+1|0;if((d|0)!=256){continue}break}k=J[j+44>>2];l=J[j+52>>2];m=J[j+36>>2];n=J[j+56>>2];g=0;while(1){f=H[g+865456|0];h=f<<1&254^((f|0)<0?27:0);d=g<<2;i=(f^h)<<24;f=f&255;f=h|(i|(f<<8|f<<16));J[d+869808>>2]=f;J[d+870832>>2]=oxa(f,8);J[d+871856>>2]=oxa(f,16);J[d+872880>>2]=oxa(f,24);h=0;f=0;i=K[g+873904|0];if(i){f=j+1024|0;i=J[(i<<2)+j>>2];h=J[f+((i+m|0)%255<<2)>>2]<<8^J[((i+n|0)%255<<2)+f>>2]^J[((i+l|0)%255<<2)+f>>2]<<16;f=J[((i+k|0)%255<<2)+f>>2]}f=f<<24^h;J[d+865712>>2]=f;J[d+866736>>2]=oxa(f,8);J[d+867760>>2]=oxa(f,16);J[d+868784>>2]=oxa(f,24);g=g+1|0;if((g|0)!=256){continue}break}H[865392]=1;d=a+8|0;J[a+4>>2]=d;if(c>>>0<32){break c}}h=a+8|0;g=c>>>5|0;f=0;while(1){c=f<<2;l=c+h|0;c=b+c|0;J[l>>2]=K[c|0]|K[c+1|0]<<8|(K[c+2|0]<<16|K[c+3|0]<<24);f=f+1|0;if((g|0)!=(f|0)){continue}break}}h=0;e:{switch(e-9|0){case 1:a=J[d+12>>2];b=K[(a>>>8&255)+865456|0]^(J[216352]^J[d>>2])^K[(a>>>16&255)+865456|0]<<8^K[(a>>>24|0)+865456|0]<<16^K[(a&255)+865456|0]<<24;J[d+16>>2]=b;c=b^J[d+4>>2];J[d+20>>2]=c;e=c^J[d+8>>2];J[d+24>>2]=e;a=a^e;J[d+28>>2]=a;b=b^(J[216353]^K[(a>>>8&255)+865456|0]^K[(a>>>16&255)+865456|0]<<8^K[(a>>>24|0)+865456|0]<<16^K[(a&255)+865456|0]<<24);J[d+32>>2]=b;c=b^c;J[d+36>>2]=c;e=c^e;J[d+40>>2]=e;a=a^e;J[d+44>>2]=a;b=b^(J[216354]^K[(a>>>8&255)+865456|0]^K[(a>>>16&255)+865456|0]<<8^K[(a>>>24|0)+865456|0]<<16^K[(a&255)+865456|0]<<24);J[d+48>>2]=b;c=b^c;J[d+52>>2]=c;e=c^e;J[d+56>>2]=e;a=a^e;J[d+60>>2]=a;b=b^(J[216355]^K[(a>>>8&255)+865456|0]^K[(a>>>16&255)+865456|0]<<8^K[(a>>>24|0)+865456|0]<<16^K[(a&255)+865456|0]<<24);J[d+64>>2]=b;c=b^c;J[d+68>>2]=c;e=c^e;J[d+72>>2]=e;a=a^e;J[d+76>>2]=a;b=b^(J[216356]^K[(a>>>8&255)+865456|0]^K[(a>>>16&255)+865456|0]<<8^K[(a>>>24|0)+865456|0]<<16^K[(a&255)+865456|0]<<24);J[d+80>>2]=b;c=b^c;J[d+84>>2]=c;e=c^e;J[d+88>>2]=e;a=a^e;J[d+92>>2]=a;b=b^(J[216357]^K[(a>>>8&255)+865456|0]^K[(a>>>16&255)+865456|0]<<8^K[(a>>>24|0)+865456|0]<<16^K[(a&255)+865456|0]<<24);J[d+96>>2]=b;c=b^c;J[d+100>>2]=c;e=c^e;J[d+104>>2]=e;a=a^e;J[d+108>>2]=a;b=b^(J[216358]^K[(a>>>8&255)+865456|0]^K[(a>>>16&255)+865456|0]<<8^K[(a>>>24|0)+865456|0]<<16^K[(a&255)+865456|0]<<24);J[d+112>>2]=b;c=b^c;J[d+116>>2]=c;e=c^e;J[d+120>>2]=e;a=a^e;J[d+124>>2]=a;b=b^(J[216359]^K[(a>>>8&255)+865456|0]^K[(a>>>16&255)+865456|0]<<8^K[(a>>>24|0)+865456|0]<<16^K[(a&255)+865456|0]<<24);J[d+128>>2]=b;c=b^c;J[d+132>>2]=c;e=c^e;J[d+136>>2]=e;a=a^e;J[d+140>>2]=a;b=b^(J[216360]^K[(a>>>8&255)+865456|0]^K[(a>>>16&255)+865456|0]<<8^K[(a>>>24|0)+865456|0]<<16^K[(a&255)+865456|0]<<24);J[d+144>>2]=b;c=b^c;J[d+148>>2]=c;e=c^e;J[d+152>>2]=e;a=a^e;J[d+156>>2]=a;b=b^(J[216361]^K[(a>>>8&255)+865456|0]^K[(a>>>16&255)+865456|0]<<8^K[(a>>>24|0)+865456|0]<<16^K[(a&255)+865456|0]<<24);J[d+160>>2]=b;b=b^c;J[d+164>>2]=b;b=b^e;J[d+168>>2]=b;J[d+172>>2]=a^b;break a;case 5:f=J[d>>2];c=0;while(1){a=J[d+28>>2];f=K[(a>>>8&255)+865456|0]^(J[(c<<2)+865408>>2]^f)^K[(a>>>16&255)+865456|0]<<8^K[(a>>>24|0)+865456|0]<<16^K[(a&255)+865456|0]<<24;J[d+32>>2]=f;b=J[d+4>>2]^f;J[d+36>>2]=b;b=b^J[d+8>>2];J[d+40>>2]=b;b=b^J[d+12>>2];J[d+44>>2]=b;b=J[d+16>>2]^K[(b&255)+865456|0]^K[(b>>>8&255)+865456|0]<<8^K[(b>>>16&255)+865456|0]<<16^K[(b>>>24|0)+865456|0]<<24;J[d+48>>2]=b;b=b^J[d+20>>2];J[d+52>>2]=b;b=b^J[d+24>>2];J[d+56>>2]=b;J[d+60>>2]=a^b;d=d+32|0;c=c+1|0;if((c|0)!=7){continue}break};break a;case 0:case 2:case 4:B();case 3:break e;default:break a}}b=J[a+28>>2];f=K[(b>>>8&255)+865456|0]^(J[216352]^J[a+8>>2])^K[(b>>>16&255)+865456|0]<<8^K[(b>>>24|0)+865456|0]<<16^K[(b&255)+865456|0]<<24;J[a+32>>2]=f;g=J[a+12>>2];c=g^f;J[a+36>>2]=c;d=c^J[a+16>>2];J[a+40>>2]=d;i=J[a+20>>2];c=i^d;J[a+44>>2]=c;c=c^J[a+24>>2];J[a+48>>2]=c;e=b^c;J[a+52>>2]=e;e=J[216353]^K[(e>>>8&255)+865456|0]^K[(e>>>16&255)+865456|0]<<8^K[(e>>>24|0)+865456|0]<<16^K[(e&255)+865456|0]<<24;k=e^f;J[a+56>>2]=k;e=e^g;J[a+60>>2]=e;J[a+64>>2]=d^e;f=e^i;J[a+68>>2]=f;J[a+72>>2]=c^f;b=b^f;J[a+76>>2]=b;g=k^(J[216354]^K[(b>>>8&255)+865456|0]^K[(b>>>16&255)+865456|0]<<8^K[(b>>>24|0)+865456|0]<<16^K[(b&255)+865456|0]<<24);J[a+80>>2]=g;J[a+84>>2]=e^g;d=d^g;J[a+88>>2]=d;J[a+92>>2]=d^f;k=c^d;J[a+96>>2]=k;f=b^k;J[a+100>>2]=f;f=J[216355]^K[(f>>>8&255)+865456|0]^K[(f>>>16&255)+865456|0]<<8^K[(f>>>24|0)+865456|0]<<16^K[(f&255)+865456|0]<<24;l=f^g;J[a+104>>2]=l;g=f^e;J[a+108>>2]=g;f=f^i;J[a+116>>2]=f;J[a+112>>2]=d^g;J[a+120>>2]=f^k;b=b^f;J[a+124>>2]=b;e=l^(J[216356]^K[(b>>>8&255)+865456|0]^K[(b>>>16&255)+865456|0]<<8^K[(b>>>24|0)+865456|0]<<16^K[(b&255)+865456|0]<<24);J[a+128>>2]=e;g=e^g;J[a+132>>2]=g;d=d^e;J[a+136>>2]=d;c=c^e;J[a+144>>2]=c;i=d^f;J[a+140>>2]=i;b=b^c;J[a+148>>2]=b;e=e^(J[216357]^K[(b>>>8&255)+865456|0]^K[(b>>>16&255)+865456|0]<<8^K[(b>>>24|0)+865456|0]<<16^K[(b&255)+865456|0]<<24);J[a+152>>2]=e;f=e^g;J[a+156>>2]=f;d=d^f;J[a+160>>2]=d;g=d^i;J[a+164>>2]=g;c=c^g;J[a+168>>2]=c;b=b^c;J[a+172>>2]=b;e=e^(J[216358]^K[(b>>>8&255)+865456|0]^K[(b>>>16&255)+865456|0]<<8^K[(b>>>24|0)+865456|0]<<16^K[(b&255)+865456|0]<<24);J[a+176>>2]=e;f=f^e;J[a+180>>2]=f;d=d^f;J[a+184>>2]=d;g=d^g;J[a+188>>2]=g;c=c^g;J[a+192>>2]=c;b=b^c;J[a+196>>2]=b;e=e^(J[216359]^K[(b>>>8&255)+865456|0]^K[(b>>>16&255)+865456|0]<<8^K[(b>>>24|0)+865456|0]<<16^K[(b&255)+865456|0]<<24);J[a+200>>2]=e;e=f^e;J[a+204>>2]=e;e=d^e;J[a+208>>2]=e;e=e^g;J[a+212>>2]=e;c=c^e;J[a+216>>2]=c;J[a+220>>2]=b^c}Ui=j+2048|0;return h}function wV(a,b,c,d,e){var f=0,g=0,h=0,i=0,j=0,k=0,l=0,m=0,n=0,o=0,p=0,q=0,r=0,s=0,t=0,u=0,v=0,w=0,x=0,y=0;j=Ui-128|0;Ui=j;a:{b:{if(!b){break b}c:{d:{while(1){g=K[c|0];e:{if((g|0)!=37){f=n;if(!g){break c}H[a+f|0]=g;n=f+1|0;break e}g=0;h=1;f:{g:{h:{f=K[c+1|0];switch(f-45|0){case 1:case 2:break f;case 0:case 3:break g;default:break h}}if((f|0)!=95){break f}}g=f;f=K[c+2|0];h=2}r=0;v=f&255;k=(c+h|0)+((v|0)==43)|0;i:{if(H[k|0]-48>>>0<=9){c=fw(k,j+12|0,10);h=J[j+12>>2];break i}J[j+12>>2]=k;c=0;h=k}f=K[h|0];i=f-67|0;j:{if(i>>>0>22|!(1<>24;switch(p-37|0){case 31:break q;case 62:break r;case 77:break s;case 0:break w;case 53:break x;case 85:break y;case 52:break z;case 84:break A;case 51:break B;case 83:break C;case 82:break E;case 49:break F;case 50:break G;case 48:break H;case 80:break I;case 47:break J;case 79:break K;case 46:break L;case 78:break M;case 45:break N;case 75:break O;case 73:break P;case 40:break Q;case 72:break R;case 69:break S;case 36:break T;case 35:break U;case 34:case 66:break V;case 33:break W;case 63:break X;case 64:break Y;case 30:break Z;case 29:break _;case 61:case 67:break $;case 28:break aa;case 60:break ba;default:break k}}f=J[d+24>>2];if(f>>>0<=6){break u}break m}f=J[d+24>>2];if(f>>>0>6){break m}g=f+131079|0;break t}f=J[d+16>>2];if(f>>>0>11){break m}g=f+131086|0;break t}f=J[d+16>>2];if(f>>>0>11){break m}g=f+131098|0;break t}f=J[d+20>>2];g=f>>31;f=f+1900|0;g=f>>>0<1900?g+1|0:g;f=jxa(f,g,100);h=Yi;break p}x=95}f=J[d+12>>2];h=f>>31;break p}l=77090;break q}i=J[d+20>>2];g=i>>31;f=i+1900|0;h=f>>>0<1900?g+1|0:g;m=J[d+28>>2];ca:{if((m|0)<=2){i=i+1899|0;g=i>>>0<1899?g+1|0:g;m=i;i=(Ez(d)|0)==1;f=i?f:m;h=i?h:g;break ca}if(m>>>0<361){break ca}i=i+1901|0;g=i>>>0<1901?g+1|0:g;m=i;i=(Ez(d)|0)==1;f=i?m:f;h=i?g:h}if((p|0)==103){break v}break o}f=J[d+8>>2];h=f>>31;break p}g=2;h=J[d+8>>2];if(!h){f=12;h=0;break n}p=(h|0)>12;f=p?h-12|0:h;i=h>>31;h=p?i-(h>>>0<12)|0:i;break n}f=J[d+28>>2]+1|0;h=f>>31;g=3;break n}f=J[d+16>>2]+1|0;h=f>>31;break p}f=J[d+4>>2];h=f>>31;break p}J[j+124>>2]=1;g=158634;break k}g=J[d+8>>2]>11?131111:131110;break t}l=92218;break q}m=0;s=0;t=Ui-16|0;Ui=t;f=J[d+20>>2];h=f>>31;l=J[d+16>>2];if(l>>>0>=12){i=(l|0)/12|0;g=l-P(i,12)|0;l=(g|0)<0?g+12|0:g;g=i+(g>>31)|0;h=h+(g>>31)|0;i=f;f=f+g|0;h=i>>>0>f>>>0?h+1|0:h}i=t+12|0;da:{if((f>>>0<2|0)==(h|0)&f-2>>>0<=136){g=f-68>>2;ea:{fa:{if(!(f&3)){g=g-1|0;if(!i){break ea}h=1;break fa}if(!i){break ea}h=0}J[i>>2]=h}f=(P(f,31536e3)+P(g,86400)|0)+2087447296|0;g=f>>31;break da}g=f-100|0;p=g;f=h-(f>>>0<100)|0;u=f;f=jxa(g,f,400);q=ixa(f,Yi,400,0);h=g-q|0;g=u-(Yi+(g>>>0>>0)|0)|0;q=f+(g>>31)|0;ga:{ha:{ia:{f=(g|0)<0?h+400|0:h;if(f){ja:{if((f|0)>=200){if(f>>>0>=300){m=3;f=f-300|0;break ja}m=2;f=f-200|0;break ja}m=(f|0)>99;f=m?f-100|0:f}if(f){break ia}g=0}else{g=1}if(i){break ha}break ga}s=f>>>2|0;g=!(f&3);if(!i){break ga}}J[i>>2]=g}h=ixa(p,u,31536e3,0);i=Yi;p=h;f=((P(m,24)+P(q,97)|0)+s|0)-g|0;h=ixa(f,f>>31,86400,0);f=p+h|0;g=Yi+i|0;g=f>>>0>>0?g+1|0:g;f=f+946771200|0;g=f>>>0<946771200?g+1|0:g}s=J[d+12>>2];i=J[d+8>>2];u=i>>31;p=J[d+4>>2];q=p>>31;Ui=t+16|0;h=J[d>>2];m=h;y=h>>31;h=J[(l<<2)+215792>>2];l=(l|0)>1?J[t+12>>2]?h+86400|0:h:h;h=(l>>31)+g|0;g=f+l|0;h=g>>>0>>0?h+1|0:h;f=s-1|0;l=ixa(f,f>>31,86400,0);f=l+g|0;g=Yi+h|0;g=f>>>0>>0?g+1|0:g;h=ixa(i,u,3600,0);f=h+f|0;g=Yi+g|0;g=f>>>0>>0?g+1|0:g;h=ixa(p,q,60,0);f=h+f|0;g=Yi+g|0;h=(f>>>0>>0?g+1|0:g)+y|0;g=f+m|0;h=g>>>0>>0?h+1|0:h;i=J[d+36>>2];f=g-i|0;h=h-((i>>31)+(g>>>0>>0)|0)|0;break D}f=J[d>>2];h=f>>31;break p}J[j+124>>2]=1;g=158637;break k}l=89339;break q}f=J[d+24>>2];f=f?f:7;h=f>>31;break D}f=((J[d+28>>2]-J[d+24>>2]|0)+7>>>0)/7|0;h=0;break p}f=((J[d+28>>2]-((J[d+24>>2]+6>>>0)%7|0)|0)+7>>>0)/7|0;h=0;break p}f=Ez(d);h=0;break p}f=J[d+24>>2];h=f>>31}g=1;break n}m=131113;break r}m=131114;break r}f=J[d+20>>2];g=f>>31;f=f+1900|0;g=f>>>0<1900?g+1|0:g;g=kxa(f,g);f=Yi;p=f;h=g;g=f>>31;i=h^g;f=i-g|0;h=(g^p)-((g>>>0>i>>>0)+g|0)|0;break p}f=J[d+20>>2];h=f>>31;i=f;g=h;f=f+1900|0;h=f>>>0<1900?g+1|0:g;if(i>>>0<8100&(g|0)<=0|(g|0)<0){break o}J[o+48>>2]=f;J[o+52>>2]=h;J[j+124>>2]=Dn(k,100,72022,o+48|0);g=k;break k}if(J[d+32>>2]<0){J[j+124>>2]=0;g=158859;break k}f=J[d+36>>2];g=(f|0)/3600|0;J[o+64>>2]=P(g,100)+((f-P(g,3600)<<16>>16)/60<<16>>16);J[j+124>>2]=Dn(k,100,72163,o- -64|0);g=k;break k}if(J[d+32>>2]<0){J[j+124>>2]=0;g=158859;break k}g=J[d+40>>2];cx();break l}J[j+124>>2]=1;g=151691;break k}f=kxa(f,h);h=Yi;break p}g=f|131072}g=AV(g,e);break l}m=131115}l=AV(m,e)}f=wV(k,100,l,d,e);J[j+124>>2]=f;g=f?k:0;break k}g=2;break n}g=4}ka:{i=w?w:x;if((i|0)!=95){if((i|0)!=45){break ka}J[o+16>>2]=f;J[o+20>>2]=h;J[j+124>>2]=Dn(k,100,72023,o+16|0);g=k;break k}J[o+40>>2]=f;J[o+44>>2]=h;J[o+32>>2]=g;J[j+124>>2]=Dn(k,100,72016,o+32|0);g=k;break k}J[o+8>>2]=f;J[o+12>>2]=h;J[o>>2]=g;J[j+124>>2]=Dn(k,100,72009,o);g=k;break k}g=135229}J[j+124>>2]=yj(g)}Ui=o+80|0;h=g;if(!g){break d}la:{if(!r){g=J[j+124>>2];break la}ma:{na:{oa:{f=K[h|0];switch(f-43|0){case 0:case 2:break na;default:break oa}}g=J[j+124>>2];break ma}f=K[h+1|0];h=h+1|0;g=J[j+124>>2]-1|0}pa:{if((f&255)!=48){break pa}while(1){f=H[h+1|0];if(f-48>>>0>9){break pa}h=h+1|0;g=g-1|0;if((f|0)==48){continue}break}}J[j+124>>2]=g;f=0;while(1){k=f;f=f+1|0;if(H[h+k|0]-48>>>0<10){continue}break}f=g>>>0>>0?r:g;i=a+n|0;qa:{if(J[d+20>>2]<-1900){k=45}else{if((v|0)!=43|k+(f-g|0)>>>0<(K[J[j+12>>2]]==67?3:5)>>>0){break qa}k=43}H[i|0]=k;f=f-1|0;n=n+1|0}if(f>>>0<=g>>>0|b>>>0<=n>>>0){break la}while(1){H[a+n|0]=48;n=n+1|0;f=f-1|0;if(f>>>0<=g>>>0){break la}if(b>>>0>n>>>0){continue}break}}f=b-n|0;f=f>>>0>g>>>0?g:f;J[j+124>>2]=f;hj(a+n|0,h,f);n=J[j+124>>2]+n|0}c=c+1|0;if(b>>>0>n>>>0){continue}break}if(!b){break b}}n=(b|0)==(n|0)?b-1|0:n;f=0}H[a+n|0]=0;break a}f=0}Ui=j+128|0;return f}function oE(a,b,c,d){var e=0,f=0,g=0,h=0,i=0,j=0,k=0,l=0,m=0,n=0,o=0,p=0,q=0,r=0,s=0;l=Ui-144|0;Ui=l;ij(l+16|0,0,128);e=K[c+24|0];if(e){while(1){j=J[c+20>>2]+P(h,24)|0;if((J[j+4>>2]&-268435456)==805306368){e=$R(b);i=J[j+4>>2]&4194303;f=Ui-16|0;Ui=f;J[f+12>>2]=e;J[f+8>>2]=i;i=ZC(f+8|0,8);e=0;g=J[a+4>>2];a:{if(!g){break a}g=J[J[a>>2]+((i>>>0)%(g>>>0)<<2)>>2];if((g|0)==-1){break a}k=J[a+8>>2];while(1){g=k+P(g,12)|0;if((i|0)!=J[g>>2]){g=J[g+8>>2];if((g|0)!=-1){continue}break a}break}e=J[g+4>>2]}Ui=f+16|0;b:{c:{g=J[j+4>>2];if((g&-268435456)==805306368){f=J[a+40>>2]+15&-16;J[a+40>>2]=f;i=4;d:{e:{switch((J[j+4>>2]>>>22&63)-9|0){case 2:i=J[J[j+8>>2]+16>>2];break d;case 0:break d;default:break e}}i=jE(g>>>22&63);f=J[a+40>>2]}e=P(e,i)+f|0;J[a+40>>2]=e;if(!(K[a+44|0]|e>>>0<=M[a+36>>2])){Z(71484,37410,68,74204);B()}if((J[j+4>>2]&-268435456)!=805306368){break c}if(!K[d+12|0]){e=J[d+4>>2]+J[j+12>>2]|0;J[e+4>>2]=0;J[e>>2]=f}break b}Z(97371,41995,375,35288);B()}Z(97371,41995,276,35270);B()}e=K[c+24|0]}h=h+1|0;if(h>>>0<(e&255)>>>0){continue}break}}f:{g:{if(Ry(b)){break g}while(1){e=2;if(!Dr(b,l+12|0)){break f}f=J[l+12>>2];if(f>>>0<8){break f}j=f&7;h:{i:{j:{e=K[c+24|0];if(e){f=f>>>3|0;i=J[c+20>>2];h=0;while(1){g=i+P(h,24)|0;if((f|0)==(J[g+4>>2]&4194303)){break j}h=h+1|0;if((e|0)!=(h|0)){continue}break}}e=YR(b,j);if(!e){break i}break f}if(h>>>0>=128){break h}H[(l+16|0)+h|0]=1;k:{l:{switch((J[g+4>>2]>>>22&63)-9|0){case 2:i=Ui-32|0;Ui=i;m:{n:{o:{if(J[g+8>>2]){e=2;p:{if((j|0)!=2){break p}e=2;if(!Dr(b,i+28|0)){break p}q:{if((J[g+4>>2]&-268435456)==805306368){h=J[g+8>>2];if(!h){break o}f=0;if(K[d+12|0]){break q}h=J[h+16>>2];e=J[d+4>>2]+J[g+12>>2]|0;f=P(h,J[e+4>>2])+J[e>>2]|0;ij(f,0,h);J[e+4>>2]=J[e+4>>2]+1;h=J[g+8>>2];break q}f=J[d+4>>2]+J[g+12>>2]|0;h=J[g+8>>2];if(M[d+8>>2]>2]>>>0){break n}}e=J[h+16>>2];j=i+12|0;H[j+12|0]=K[d+12|0];J[j+4>>2]=f;J[j>>2]=h;J[j+8>>2]=e+f;J[i+8>>2]=0;J[i>>2]=0;J[i+4>>2]=0;e=2;if(!aS(b,J[i+28>>2],i)){break p}e=oE(a,i,J[g+8>>2],j)}Ui=i+32|0;break m}Z(31981,41995,149,72146);B()}Z(31981,41995,259,68522);B()}Z(71564,41995,170,72146);B()}break k;case 0:h=Ui-16|0;Ui=h;f=2;r:{s:{t:{if((j|0)!=2){break t}if(!Dr(b,h+12|0)){break t}if(!cS(b,J[h+12>>2],h+8|0)){break t}j=J[h+12>>2];m=J[h+8>>2];e=J[g+4>>2];if((e&-268435456)==805306368){u:{v:{if((e&-268435456)==805306368){if(J[g+8>>2]){break v}e=kE(a,j+1|0);if(!K[d+12|0]){k=J[d+4>>2]+J[g+12>>2]|0;i=J[k>>2];if(H[a+48|0]&1){if(!J[k+4>>2]){i=i-J[a+32>>2]|0;J[k>>2]=i}i=J[a+32>>2]+i|0}f=j;j=hj(e,m,j);H[f+j|0]=0;f=(J[k+4>>2]<<2)+i|0;if(H[a+48|0]&1){e=j-J[a+32>>2]|0}H[f|0]=e;H[f+1|0]=e>>>8;H[f+2|0]=e>>>16;H[f+3|0]=e>>>24;J[k+4>>2]=J[k+4>>2]+1}break u}Z(97371,41995,312,56577);B()}Z(112919,41995,313,56577);B()}f=0;break t}if((e&264241152)!=37748736){break s}e=kE(a,j+1|0);if(K[d+12|0]){f=0;break t}i=J[d+4>>2];k=J[g+12>>2];f=0;n=j;j=hj(e,m,j);H[n+j|0]=0;i=i+k|0;if(H[a+48|0]&1){e=j-J[a+32>>2]|0}J[i>>2]=e}Ui=h+16|0;e=f;break r}Z(94022,41995,288,56555);B()}break k;case 3:e=Ui-16|0;Ui=e;f=2;w:{x:{y:{z:{A:{if((j|0)!=2){break A}if(!Dr(b,e+12|0)){break A}if(!cS(b,J[e+12>>2],e+8|0)){break A}f=J[g+4>>2];if((f&-268435456)==805306368){break z}if((f&264241152)!=50331648){break y}j=J[e+8>>2];h=J[a+40>>2]+15&-16;i=J[e+12>>2];f=h+i|0;J[a+40>>2]=f;if(!(K[a+44|0]|f>>>0<=M[a+36>>2])){Z(71484,37410,86,22234);B()}f=0;if(K[d+12|0]){break A}k=hj(h,j,i);j=J[d+4>>2]+J[g+12>>2]|0;if(J[j+4>>2]){break x}h=H[a+48|0]&1?k-J[a+32>>2]|0:h;J[j+4>>2]=i;J[j>>2]=h}Ui=e+16|0;e=f;break w}Z(97420,41995,134,72115);B()}Z(88947,41995,349,22225);B()}Z(112687,41995,359,22225);B()}break k;default:break l}}h=0;f=0;o=0;p=0;k=Ui-16|0;Ui=k;B:{C:{m=J[g+4>>2]>>>22&63;i=m-1|0;if(!(i>>>0>=14|!(15871>>>i&1))){e=2;D:{if((j|0)!=J[(i<<2)+159064>>2]){break D}E:{F:{switch(m-1|0){case 1:f=k+8|0;e=J[b+8>>2];h=J[b+4>>2]-e|0;if((h|0)>=4){i=K[e|0]|K[e+1|0]<<8|(K[e+2|0]<<16|K[e+3|0]<<24);J[b+8>>2]=e+4;J[f>>2]=i}e=2;if((h|0)<=3){break D}if((J[g+4>>2]&-268435456)==805306368){Lq(d,g,f,4);break E}_p(d,g,k+8|0,4);break E;case 0:f=k+8|0;e=J[b+8>>2];h=J[b+4>>2]-e|0;if((h|0)>=8){i=K[e|0]|K[e+1|0]<<8|(K[e+2|0]<<16|K[e+3|0]<<24);j=K[e+4|0]|K[e+5|0]<<8|(K[e+6|0]<<16|K[e+7|0]<<24);J[b+8>>2]=e+8;J[f>>2]=i;J[f+4>>2]=j}e=2;if((h|0)<=7){break D}if((J[g+4>>2]&-268435456)==805306368){Lq(d,g,f,8);break E}_p(d,g,k+8|0,8);break E;case 4:f=k+8|0;e=2;if(!mE(b,f)){break D}if((J[g+4>>2]&-268435456)==805306368){Lq(d,g,f,4);break E}_p(d,g,k+8|0,4);break E;case 12:f=k+8|0;e=2;if(!mE(b,f)){break D}if((J[g+4>>2]&-268435456)==805306368){Lq(d,g,f,4);break E}_p(d,g,k+8|0,4);break E;case 2:f=k+8|0;e=2;if(!lE(b,f)){break D}if((J[g+4>>2]&-268435456)==805306368){Lq(d,g,f,8);break E}_p(d,g,k+8|0,8);break E;case 3:f=k+8|0;e=2;if(!lE(b,f)){break D}if((J[g+4>>2]&-268435456)==805306368){Lq(d,g,f,8);break E}_p(d,g,k+8|0,8);break E;case 13:f=k+8|0;e=2;if(!mE(b,f)){break D}if((J[g+4>>2]&-268435456)==805306368){Lq(d,g,f,4);break E}_p(d,g,k+8|0,4);break E;case 7:break F;default:break C}}q=k+8|0;G:{e=J[b+8>>2];r=J[b+4>>2];if(e>>>0<=r>>>0){while(1){i=((h|0)!=10|(f|0)!=0)&e>>>0>>0;if(!i){break G}j=e+1|0;J[b+8>>2]=j;s=H[e|0];e=s&127;n=ixa(h,f,7,0);m=n&31;if((n&63)>>>0>=32){n=e<>>32-m;e=e<>2]&-268435456)==805306368){Lq(d,g,q,1);break E}_p(d,g,k+8|0,1)}e=0}Ui=k+16|0;break B}Z(114101,54520,83,70144);B()}Z(114101,41995,72,72130);B()}}if(e){break f}e=K[g+20|0];if(!(e&127)){break i}H[g+20|0]=e|128}if(!Ry(b)){continue}break g}break}Z(89264,42473,169,68533);B()}e=K[c+24|0];if(e){h=0;while(1){b=J[c+20>>2]+P(h,24)|0;H:{if(K[b+20|0]&127){break H}f=J[b+4>>2]&-268435456;if((f|0)!=268435456){if(K[(l+16|0)+h|0]|(f|0)!=536870912){break H}a=J[c+4>>2];J[l+4>>2]=J[b>>2];J[l>>2]=a;dj(3,94457,26215,l);e=5;break f}if(K[(l+16|0)+h|0]){break H}eS(a,b,d);e=K[c+24|0]}h=h+1|0;if(h>>>0<(e&255)>>>0){continue}break}}e=0}Ui=l+144|0;return e}function tJ(a,b){var c=0,d=0,e=0,f=0,g=0,h=0,i=0,j=0,k=0,l=0,m=0,n=0,o=0,p=0,q=0,r=0,s=0;s=b;a:{b:{if(!a|!K[a|0]){break b}n=Zj(1,184);if(!n){break b}J[n+88>>2]=-1;J[n+80>>2]=9;c:{d:{b=n;if(!b|!a){if(b){break d}a=0;break c}g=ol(a,82700);if(!g){J[b+28>>2]=17;a=0;break c}if(um(g,0,2)){vk(g);J[b+28>>2]=22;a=0;break c}a=wo(g);if(a>>>0>21){d=a>>31;e:{f:{if(J[b+72>>2]|J[b+20>>2]){J[b+28>>2]=24;break f}f=J[b+40>>2];if(!f){J[b+40>>2]=2308;f=2308}if(!J[b+44>>2]){J[b+44>>2]=2309}if(!J[b+48>>2]){J[b+48>>2]=2310}J[b>>2]=0;J[b+4>>2]=0;J[b+28>>2]=0;J[b+8>>2]=0;J[b+12>>2]=0;J[b+16>>2]=0;e=Zi[f|0](J[b+52>>2],1,88)|0;J[b+72>>2]=e;if(e){break e}J[b+28>>2]=16}vk(g);a=0;break c}ij(e,0,88);e=J[b+72>>2];J[e+52>>2]=0;J[e+56>>2]=0;J[e+48>>2]=2057;J[e+44>>2]=4;J[e+28>>2]=4;J[e+12>>2]=1;J[b+56>>2]=2311;J[b+20>>2]=1;J[b+24>>2]=4;J[b+68>>2]=b;J[e+60>>2]=g;J[b>>2]=a;J[b+4>>2]=d;J[e+64>>2]=0;J[e+68>>2]=0;h=Ui-4192|0;Ui=h;d=b;a=J[b>>2];b=J[b+4>>2];g=b;g:{if(!b&a>>>0<=21){J[d+28>>2]=8;break g}f=J[d+68>>2];c=g-(a>>>0<4096)|0;j=a>>>0>4096&(g|0)>=0|(g|0)>0;b=j?a-4096|0:0;e=a-b|0;i=g;g=j?c:0;a=i-(g+(a>>>0>>0)|0)|0;c=!a&e>>>0>=4096|a?4096:e;h:{if((Zi[J[d+56>>2]](f,b,g,h+96|0,c)|0)!=(c|0)){break h}i:{while(1){if(c>>>0>=4){a=c-4|0;e=0;while(1){c=(h+96|0)+a|0;if((K[c|0]|K[c+1|0]<<8|(K[c+2|0]<<16|K[c+3|0]<<24))==101010256){c=J[d>>2];i=J[d+4>>2];f=e+g|0;j=a+b|0;f=j>>>0>>0?f+1|0:f;k=c-j|0;c=i-((c>>>0>>0)+f|0)|0;if(!c&k>>>0>21|c){break i}}f=!!a&(e|0)>=0|(e|0)>0;c=a;a=c-1|0;e=e-!c|0;if(f){continue}break}}if(b|g){a=J[d>>2];e=a-b|0;f=J[d+4>>2];c=f-((a>>>0>>0)+g|0)|0;if(!c&e>>>0>65556|c){break h}i=(g|0)<=0&b>>>0<=4093|(g|0)<0;e=i?4093:b;b=e-4093|0;c=a-b|0;g=(i?0:g)-(e>>>0<4093)|0;a=f-(g+(a>>>0>>0)|0)|0;c=!a&c>>>0>=4096|a?4096:c;if((Zi[J[d+56>>2]](J[d+68>>2],b,g,h+96|0,c)|0)==(c|0)){continue}break h}break}if(d){break h}c=0;break g}c=J[d+68>>2];e=g;f=a+b|0;e=f>>>0>>0?e+1|0:e;if((Zi[J[d+56>>2]](c,f,e,h+96|0,22)|0)!=22){J[d+28>>2]=20;c=0;break g}if(J[h+96>>2]!=101010256){J[d+28>>2]=8;c=0;break g}j:{if(f>>>0<76&(e|0)<=0|(e|0)<0){break j}if((Zi[J[d+56>>2]](J[d+68>>2],f-20|0,e-(f>>>0<20)|0,h- -64|0,20)|0)!=20|J[h+64>>2]!=117853008){break j}J[J[d+72>>2]+52>>2]=1}k:{if(!J[J[d+72>>2]+52>>2]){break k}if((e|0)<=0&f>>>0<=75|(e|0)<0){J[d+28>>2]=8;c=0;break g}if((Zi[J[d+56>>2]](J[d+68>>2],f-76|0,e-(f>>>0<76)|0,h,56)|0)==56&J[h>>2]==101075792){break k}b=J[d>>2];g=b-56|0;c=J[h+76>>2];b=J[d+4>>2]-(b>>>0<56)|0;a=J[h+72>>2];if((c|0)==(b|0)&a>>>0>g>>>0|b>>>0>>0){J[d+28>>2]=8;c=0;break g}if((Zi[J[d+56>>2]](J[d+68>>2],a,c,h,56)|0)==56&J[h>>2]==101075792){break k}J[d+28>>2]=8;c=0;break g}c=L[h+106>>1];J[d+16>>2]=c;i=J[d+72>>2];o=J[i+52>>2];l:{if(!o){g=0;j=J[h+108>>2];p=L[h+100>>1];a=L[h+104>>1];k=L[h+102>>1];b=J[h+112>>2];break l}if(!J[h+8>>2]&M[h+4>>2]<=43){J[d+28>>2]=9;c=0;break g}if(J[h+80>>2]!=1){J[d+28>>2]=10;c=0;break g}if(J[h+36>>2]){J[d+28>>2]=2;c=0;break g}b=J[h+44>>2];j=J[h+40>>2];g=J[h+28>>2];a=J[h+24>>2];c=J[h+32>>2];J[d+16>>2]=c;if(g){J[d+28>>2]=2;c=0;break g}if(b){J[d+28>>2]=15;c=0;break g}g=J[h+52>>2];p=J[h+16>>2];k=J[h+20>>2];b=J[h+48>>2]}if((a|0)!=(c|0)){J[d+28>>2]=10;c=0;break g}if(!(!(k|p)|(p|0)==1&(k|0)==1)){J[d+28>>2]=10;c=0;break g}a=ixa(c,0,46,0);k=Yi;if(!k&a>>>0>j>>>0|k){J[d+28>>2]=9;c=0;break g}a=g;m=b+j|0;k=m>>>0>>0?a+1|0:a;q=J[d+4>>2];a=q;l=J[d>>2];if((k|0)==(a|0)&l>>>0>>0|a>>>0>>0){J[d+28>>2]=9;c=0;break g}if((e|0)==(k|0)&f>>>0>>0|e>>>0>>0){J[d+28>>2]=9;c=0;break g}a=f-m|0;e=e-((f>>>0>>0)+k|0)|0;if(o){if(!e&a>>>0<=75){J[d+28>>2]=9;c=0;break g}f=a;a=a-76|0;e=e-(f>>>0<76)|0}if(!((J[d+24>>2]&-2)!=4|(J[i+64>>2]|J[i+68>>2])!=0)){J[i+64>>2]=a;J[i+68>>2]=e;J[d>>2]=l-a;J[d+4>>2]=q-((a>>>0>l>>>0)+e|0)}J[d+8>>2]=b;J[d+12>>2]=g;m:{n:{if(!c){break n}a=i;if(M[a+8>>2]>>0){if(!dH(d,a,j)){break m}c=J[d+16>>2];a=J[d+72>>2]}J[i+4>>2]=j;f=a;if(M[a+24>>2]>>0){if(!dH(d,a+16|0,c)){break m}f=J[d+72>>2]}J[a+20>>2]=c;if((Zi[J[d+56>>2]](J[d+68>>2],b,g,J[f>>2],j)|0)!=(j|0)){J[d+28>>2]=20;c=0;break g}if(!J[d+16>>2]){break n}a=b+46|0;g=a>>>0<46?g+1|0:g;m=a;c=J[J[d+72>>2]>>2];while(1){o:{if(j>>>0>=46){if((K[c|0]|K[c+1|0]<<8|(K[c+2|0]<<16|K[c+3|0]<<24))==33639248){break o}}J[d+28>>2]=9;c=0;break g}a=J[d+72>>2];J[J[a+16>>2]+(r<<2)>>2]=c-J[a>>2];k=K[c+24|0]|K[c+25|0]<<8|(K[c+26|0]<<16|K[c+27|0]<<24);i=K[c+20|0]|K[c+21|0]<<8|(K[c+22|0]<<16|K[c+23|0]<<24);p:{if(J[a+56>>2]){break p}f=K[c+30|0]|K[c+31|0]<<8;if(!f){break p}a=i>>>0>k>>>0?i:k;q=a;b=K[c+42|0]|K[c+43|0]<<8|(K[c+44|0]<<16|K[c+45|0]<<24);e=0;a=!e&a>>>0>b>>>0|(e|0)!=0;if(((a?q:b)|0)!=-1|(a?e:0)){break p}b=K[c+28|0]|K[c+29|0]<<8;q:{if((b+f|0)+46>>>0>j>>>0){a=sj(f);if(!a){J[d+28>>2]=16;c=0;break g}l=J[d+68>>2];e=g;o=b+m|0;e=o>>>0>>0?e+1|0:e;b=a;if((Zi[J[d+56>>2]](l,o,e,b,f)|0)==(f|0)){break q}cj(b);J[d+28>>2]=20;c=0;break g}a=(b+c|0)+46|0;b=0}while(1){if(f>>>0<=3){cj(b);J[d+28>>2]=9;c=0;break g}e=K[a+2|0]|K[a+3|0]<<8;l=e+4|0;if(l>>>0>f>>>0){cj(b);J[d+28>>2]=9;c=0;break g}r:{if((K[a|0]|K[a+1|0]<<8)==1){a=J[d+72>>2];J[a+52>>2]=1;J[a+56>>2]=1;break r}a=a+l|0;f=(f-e|0)-4|0;if(f){continue}}break}cj(b)}b=(i|0)==-1;if(!(!(!k|i?!(K[c+10|0]|K[c+11|0]<<8|(K[c+12|0]<<16|K[c+13|0]<<24))&(i|0)!=(k|0):1)|(b|(k|0)==-1))){J[d+28>>2]=9;c=0;break g}a=K[c+34|0]|K[c+35|0]<<8;if(!((a|0)!=65535&((a|0)==(p|0)|(a|0)==1))){J[d+28>>2]=10;c=0;break g}s:{if(b){break s}e=J[d>>2];a=J[d+4>>2];b=i;i=K[c+42|0]|K[c+43|0]<<8|(K[c+44|0]<<16|K[c+45|0]<<24);b=b+i|0;f=0;f=b>>>0>>0?1:f;b=b+30|0;f=b>>>0<30?f+1|0:f;if((f|0)==(a|0)&b>>>0<=e>>>0|a>>>0>f>>>0){break s}J[d+28>>2]=9;c=0;break g}if(K[c+9|0]&32){J[d+28>>2]=5;c=0;break g}a=(((K[c+28|0]|K[c+29|0]<<8)+(K[c+30|0]|K[c+31|0]<<8)|0)+(K[c+32|0]|K[c+33|0]<<8)|0)+46|0;if(a>>>0>j>>>0){J[d+28>>2]=9;c=0;break g}c=a+c|0;j=j-a|0;r=r+1|0;if(r>>>0>2]){continue}break}}c=1;break g}J[d+28>>2]=16;c=0;break g}J[d+28>>2]=7;c=0}Ui=h+4192|0;if(c){a=1}else{cH(d,0);a=0}break c}vk(g);J[b+28>>2]=8;a=0;break c}J[b+28>>2]=24;a=0}b=n;if(a){break a}cj(b)}b=0}J[s>>2]=b;return!b}function Kia(a){a=a|0;var b=0,c=0,d=0,e=0,f=0,g=0,h=0,i=0,j=0,k=Q(0),l=0,m=0,n=Q(0),o=Q(0),p=Q(0),q=0,r=0,s=Q(0),t=0,u=0,v=Q(0),w=Q(0),x=Q(0),y=Q(0),z=Q(0),A=Q(0),C=0,D=Q(0),E=Q(0),F=Q(0),G=Q(0),M=Q(0),O=Q(0),R=0,S=Q(0),T=Q(0),U=0,V=0,W=0;d=Ui-144|0;Ui=d;h=J[a+4>>2];a:{b:{c:{e=J[a+16>>2];c=J[e+64>>2];b=J[57046];g=J[e+68>>2];d:{if((c|0)==J[b+8>>2]&(g|0)==J[b+12>>2]){f=J[h+84>>2];b=J[J[a+12>>2]>>2];J[d+140>>2]=0;if(J[e+84>>2]==20){c=sj(16);J[d+140>>2]=c;J[d+136>>2]=J[e+96>>2];g=K[e+112|0]|K[e+113|0]<<8|(K[e+114|0]<<16|K[e+115|0]<<24);i=K[e+108|0]|K[e+109|0]<<8|(K[e+110|0]<<16|K[e+111|0]<<24);H[c+8|0]=i;H[c+9|0]=i>>>8;H[c+10|0]=i>>>16;H[c+11|0]=i>>>24;H[c+12|0]=g;H[c+13|0]=g>>>8;H[c+14|0]=g>>>16;H[c+15|0]=g>>>24;g=K[e+104|0]|K[e+105|0]<<8|(K[e+106|0]<<16|K[e+107|0]<<24);i=K[e+100|0]|K[e+101|0]<<8|(K[e+102|0]<<16|K[e+103|0]<<24);H[c|0]=i;H[c+1|0]=i>>>8;H[c+2|0]=i>>>16;H[c+3|0]=i>>>24;H[c+4|0]=g;H[c+5|0]=g>>>8;H[c+6|0]=g>>>16;H[c+7|0]=g>>>24}i=h+4|0;l=J[a>>2];g=J[e+56>>2];q=J[e+60>>2];r=J[h+8>>2];c=J[h+4>>2];if((r|0)==(c|0)){if(H[h+12|0]&1){break c}lj(((c-J[h>>2]|0)/40|0)+4|0,40,h,h+8|0,i);r=J[h+8>>2];c=J[h+4>>2]}m=c;c=J[h>>2];e=m-c|0;j=((e|0)/40|0)+1|0;if(j>>>0>(r-c|0)/40>>>0){break b}J[i>>2]=c+P(j,40);if(e>>>0>=4294967256){break a}c=c+e|0;J[c+8>>2]=g;J[c+12>>2]=q;J[c>>2]=l;J[c+28>>2]=(b-J[h+48>>2]|0)/48;Ns(J[J[h+80>>2]>>2],J[b+32>>2]);J[c+16>>2]=BM(J[h+84>>2],J[b+32>>2],d+136|0);g=J[b+32>>2];J[c+24>>2]=h;J[c+20>>2]=g;I[c+32>>1]=L[c+32>>1]&65534|I[b+36>>1]&1;J[h+112>>2]=J[h+112>>2]+((J[g+4>>2]-J[g>>2]|0)/18568|0);c=J[c+16>>2];v=N[b+24>>2];w=N[b+20>>2];x=N[b+28>>2];y=N[b+16>>2];n=N[b>>2];o=N[b+8>>2];p=N[b+4>>2];g=d+80|0;_D(g,J[a>>2]);S=N[d+96>>2];T=N[d+100>>2];k=N[d+92>>2];D=N[d+116>>2];s=Q(p*D);p=N[d+88>>2];E=N[d+112>>2];z=Q(n*E);n=N[d+80>>2];F=N[d+120>>2];A=Q(o*F);G=Q(Q(Q(k*s)+Q(p*z))-Q(n*A));o=N[d+84>>2];M=Q(Q(p*A)+Q(Q(n*z)+Q(o*s)));O=Q(Q(Q(k*A)+Q(n*s))-Q(o*z));s=Q(Q(Q(k*z)+Q(o*A))-Q(p*s));N[d+88>>2]=N[d+104>>2]+Q(Q(G*n)+Q(Q(Q(M*p)+Q(k*O))-Q(s*o)));N[d+84>>2]=T+Q(Q(s*p)+Q(Q(Q(M*o)+Q(k*G))-Q(O*n)));N[d+80>>2]=S+Q(Q(O*o)+Q(Q(Q(M*n)+Q(k*s))-Q(G*p)));Px(f,c,g);N[d+92>>2]=Q(Q(Q(k*x)-Q(n*y))-Q(o*w))-Q(p*v);N[d+88>>2]=Q(Q(n*w)+Q(Q(k*v)+Q(x*p)))-Q(o*y);N[d+84>>2]=Q(Q(p*y)+Q(Q(k*w)+Q(x*o)))-Q(n*v);N[d+80>>2]=Q(Q(o*v)+Q(Q(k*y)+Q(x*n)))-Q(p*w);Ox(f,c,g);k=D>E?E:D;Nx(f,c,k>F?F:k);qM(f,c,(K[J[a>>2]+137|0]&2)>>>1|0);if(!(H[b+36|0]&1)){break d}yC(f,c);break d}b=J[57062];if((c|0)==J[b+8>>2]&(g|0)==J[b+12>>2]){c=J[h+4>>2];g=J[h>>2];if((c|0)==(g|0)){break d}c=(c-g|0)/40|0;g=c>>>0<=1?1:c;while(1){c=J[h>>2];if((J[h+4>>2]-c|0)/40>>>0<=i>>>0){break a}c=c+P(i,40)|0;e:{if(J[c>>2]!=J[a>>2]){break e}b=J[a+16>>2];if(J[c+8>>2]!=J[b+56>>2]|J[c+12>>2]!=J[b+60>>2]){break e}xC(J[h+84>>2],J[c+16>>2],K[e+96|0])}i=i+1|0;if((g|0)!=(i|0)){continue}break}break d}b=J[57096];if((c|0)==J[b+8>>2]&(g|0)==J[b+12>>2]){c=J[h+4>>2];g=J[h>>2];if((c|0)!=(g|0)){c=(c-g|0)/40|0;u=c>>>0<=1?1:c;while(1){c=J[h>>2];if((J[h+4>>2]-c|0)/40>>>0<=i>>>0){break a}b=c+P(i,40)|0;if(J[b>>2]==J[a>>2]){c=J[e+104>>2];f=J[e+108>>2];g=J[e+96>>2];j=J[e+100>>2];l=J[b+16>>2];q=J[h+84>>2];f:{if(K[e+176|0]==1){N[d+16>>2]=N[e+112>>2];N[d+20>>2]=N[e+116>>2];N[d+24>>2]=N[e+120>>2];N[d+28>>2]=N[e+124>>2];N[d+32>>2]=N[e+128>>2];N[d+36>>2]=N[e+132>>2];N[d+40>>2]=N[e+136>>2];N[d+44>>2]=N[e+140>>2];N[d+48>>2]=N[e+144>>2];N[d+52>>2]=N[e+148>>2];N[d+56>>2]=N[e+152>>2];N[d+60>>2]=N[e+156>>2];N[d+64>>2]=N[e+160>>2];N[d+68>>2]=N[e+164>>2];N[d+72>>2]=N[e+168>>2];N[d+76>>2]=N[e+172>>2];b=Ui+-64|0;Ui=b;N[b>>2]=N[d+16>>2];N[b+4>>2]=N[d+20>>2];N[b+8>>2]=N[d+24>>2];N[b+12>>2]=N[d+28>>2];N[b+16>>2]=N[d+32>>2];N[b+20>>2]=N[d+36>>2];N[b+24>>2]=N[d+40>>2];N[b+28>>2]=N[d+44>>2];N[b+32>>2]=N[d+48>>2];N[b+36>>2]=N[d+52>>2];N[b+40>>2]=N[d+56>>2];N[b+44>>2]=N[d+60>>2];N[b+48>>2]=N[d+64>>2];N[b+52>>2]=N[d+68>>2];N[b+56>>2]=N[d+72>>2];N[b+60>>2]=N[d+76>>2];rM(q,l,g,j,c,f,b,1);break f}N[d>>2]=N[e+112>>2];N[d+4>>2]=N[e+116>>2];N[d+8>>2]=N[e+120>>2];N[d+12>>2]=N[e+124>>2];b=Ui+-64|0;Ui=b;m=J[d>>2];t=J[d+4>>2];R=J[d+12>>2];J[b+8>>2]=J[d+8>>2];J[b+12>>2]=R;J[b>>2]=m;J[b+4>>2]=t;rM(q,l,g,j,c,f,b,0)}Ui=b- -64|0;r=r+1|0}i=i+1|0;if((u|0)!=(i|0)){continue}break}if(r){break d}}dj(3,88458,116516,0);break d}b=c;c=J[57120];if((b|0)!=J[c+8>>2]|J[c+12>>2]!=(g|0)){break d}c=J[h+4>>2];g=J[h>>2];if((c|0)!=(g|0)){c=(c-g|0)/40|0;R=c>>>0<=1?1:c;while(1){c=J[h>>2];if((J[h+4>>2]-c|0)/40>>>0<=i>>>0){break a}f=c+P(i,40)|0;if(J[f>>2]==J[a>>2]){b=J[h+84>>2];c=J[e+96>>2];U=J[e+100>>2];g=J[e+104>>2];V=J[e+108>>2];q=0;f=J[f+16>>2];g:{if(!f){j=0;break g}j=f&65535;l=J[b+4>>2];b=J[b>>2];if(j>>>0>=l-b>>2>>>0){break a}j=J[b+(j<<2)>>2];if(L[j+80>>1]==(f>>>16|0)){break g}j=0;dj(4,96107,66969,0)}b=J[j+4>>2];f=J[j>>2];if((b|0)!=(f|0)){b=(b-f|0)/304|0;W=b>>>0<=1?1:b;while(1){b=J[j>>2];if((J[j+4>>2]-b|0)/304>>>0<=q>>>0){break a}l=b+P(q,304)|0;b=l;h:{if((c|0)!=J[b+128>>2]|(U|0)!=J[b+132>>2]){break h}b=J[b+76>>2];f=J[l+72>>2];if((b|0)==(f|0)){break h}u=l+72|0;b=(b-f|0)/96|0;m=b>>>0<=1?1:b;b=0;while(1){C=P(b,96);t=C+f|0;if(J[t>>2]==(g|0)&J[t+4>>2]==(V|0)){i:{j:{m=b;b=J[u+4>>2];t=J[u>>2];if(m>>>0<(b-t|0)/96>>>0){f=t+C|0;m=b-96|0;C=J[m+4>>2];J[f>>2]=J[m>>2];J[f+4>>2]=C;N[f+16>>2]=N[b-80>>2];N[f+20>>2]=N[b-76>>2];N[f+24>>2]=N[b-72>>2];N[f+28>>2]=N[b-68>>2];N[f+32>>2]=N[b+-64>>2];N[f+36>>2]=N[b-60>>2];N[f+40>>2]=N[b-56>>2];N[f+44>>2]=N[b-52>>2];N[f+48>>2]=N[b-48>>2];N[f+52>>2]=N[b-44>>2];N[f+56>>2]=N[b-40>>2];N[f+60>>2]=N[b-36>>2];N[f+64>>2]=N[b-32>>2];N[f+68>>2]=N[b-28>>2];N[f+72>>2]=N[b-24>>2];N[f+76>>2]=N[b-20>>2];H[f+80|0]=K[b-16|0];J[u+4>>2]=m;if(m>>>0>>0){break j}break i}Z(145381,53895,537,43537);B()}Z(12682,53895,540,43537);B()}H[l+296|0]=K[l+296|0]|8;break h}b=b+1|0;if((m|0)!=(b|0)){continue}break}}q=q+1|0;if((W|0)!=(q|0)){continue}break}}r=r+1|0}i=i+1|0;if((R|0)!=(i|0)){continue}break}if(r){break d}}dj(3,88458,126683,0)}Ui=d+144|0;return 0}Z(151729,53895,501,2284);B()}Z(144782,53895,514,59583);B()}Z(145396,53895,487,84789);B()}function zua(a,b,c){a=a|0;b=b|0;c=c|0;var d=0,e=0,f=0,g=0,h=0,i=0,j=0,k=0,l=0,m=0,n=0,o=0,p=0,q=0,r=0,s=0,t=0,u=0,v=0,w=0,x=0,y=0,z=0,A=0,C=0,D=0,E=Q(0),F=0,G=0,N=0,O=0,S=0,T=0,U=0,V=Q(0),W=Q(0),X=Q(0),Y=Q(0);g=Ui-448|0;Ui=g;a:{d=K[b|0];v=b+c|0;k=K[v|0];e=d>>>0>k>>>0?d:k;w=(c<<1)+b|0;f=K[w|0];e=e>>>0>f>>>0?e:f;x=P(c,3)+b|0;i=K[x|0];e=e>>>0>i>>>0?e:i;y=(c<<2)+b|0;l=K[y|0];e=e>>>0>l>>>0?e:l;z=P(c,5)+b|0;s=K[z|0];e=e>>>0>s>>>0?e:s;A=P(c,6)+b|0;m=K[A|0];e=e>>>0>m>>>0?e:m;C=P(c,7)+b|0;h=K[C|0];e=e>>>0>h>>>0?e:h;D=(c<<3)+b|0;t=K[D|0];e=e>>>0>t>>>0?e:t;F=P(c,9)+b|0;n=K[F|0];e=e>>>0>n>>>0?e:n;G=P(c,10)+b|0;o=K[G|0];e=e>>>0>o>>>0?e:o;N=P(c,11)+b|0;p=K[N|0];e=e>>>0>p>>>0?e:p;O=P(c,12)+b|0;q=K[O|0];e=e>>>0>q>>>0?e:q;S=P(c,13)+b|0;r=K[S|0];e=e>>>0>r>>>0?e:r;T=P(c,14)+b|0;j=K[T|0];e=e>>>0>j>>>0?e:j;U=P(c,15)+b|0;u=K[U|0];e=e>>>0>u>>>0?e:u;d=d>>>0>>0?d:k;d=d>>>0>>0?d:f;d=d>>>0>>0?d:i;d=d>>>0>>0?d:l;d=d>>>0>>0?d:s;d=d>>>0>>0?d:m;d=d>>>0>>0?d:h;d=d>>>0>>0?d:t;d=d>>>0>>0?d:n;d=d>>>0>>0?d:o;d=d>>>0

>>0?d:p;d=d>>>0>>0?d:q;d=d>>>0>>0?d:r;d=d>>>0>>0?d:j;d=d>>>0>>0?d:u;b:{if((e|0)==(d|0)){I[a>>1]=d|3328;b=K[168768]|K[168769]<<8|(K[168770]<<16|K[168771]<<24);H[a+2|0]=b;H[a+3|0]=b>>>8;H[a+4|0]=b>>>16;H[a+5|0]=b>>>24;b=K[168772]|K[168773]<<8;H[a+6|0]=b;H[a+7|0]=b>>>8;break b}k=e-d|0;if(k>>>0<=5){c=e-2|0;c=(c>>>0<256?c:e>>>0>1?-1:0)&255;I[a>>1]=c|7424;e=(K[b|0]-c|0)+3|0;if(e>>>0>=6){break a}b=(K[v|0]-c|0)+3|0;if(b>>>0>5){break a}d=(K[w|0]-c|0)+3|0;if(d>>>0>5){break a}k=(K[x|0]-c|0)+3|0;if(k>>>0>5){break a}f=(K[y|0]-c|0)+3|0;if(f>>>0>5){break a}i=(K[z|0]-c|0)+3|0;if(i>>>0>5){break a}l=(K[A|0]-c|0)+3|0;if(l>>>0>5){break a}s=(K[C|0]-c|0)+3|0;if(s>>>0>5){break a}m=(K[D|0]-c|0)+3|0;if(m>>>0>5){break a}h=(K[F|0]-c|0)+3|0;if(h>>>0>5){break a}t=(K[G|0]-c|0)+3|0;if(t>>>0>5){break a}n=(K[N|0]-c|0)+3|0;if(n>>>0>5){break a}o=(K[O|0]-c|0)+3|0;if(o>>>0>5){break a}p=(K[S|0]-c|0)+3|0;if(p>>>0>5){break a}q=(K[T|0]-c|0)+3|0;if(q>>>0>5){break a}r=(K[U|0]-c|0)+3|0;if(r>>>0>5){break a}c=K[b+169568|0]<<1;b=K[e+169568|0]<<13;e=0;c=b|c;j=e;b=K[d+169568|0];e=b>>>11|0;b=j|b<<21;e=c|e;d=b;c=K[k+169568|0];b=c>>>23|0;c=d|c<<9;d=b|e;e=K[f+169568|0]<<10;f=c;c=K[i+169568|0];b=c>>>2|0;c=f|c<<30;d=b|(d|e);b=K[l+169568|0];e=b>>>14|0;f=b<<18|c;c=K[s+169568|0];b=c>>>26|0;c=f|c<<6;d=b|(d|e);e=K[m+169568|0]<<7;f=c;c=K[h+169568|0];b=c>>>5|0;c=f|c<<27;d=b|(d|e);b=K[t+169568|0];e=b>>>17|0;f=b<<15|c;c=K[n+169568|0];b=c>>>29|0;k=f|c<<3;b=b|(d|e)|K[o+169568|0]<<4;H[a+3|0]=b;H[a+2|0]=b>>>8;c=K[p+169568|0];e=c>>>8|0;d=k|c<<24;b=b|e;e=b;c=K[q+169568|0];b=c>>>20|0;c=K[r+169568|0]|c<<12|d;H[a+7|0]=c;H[a+4|0]=(e&16777215)<<8|d>>>24;b=b|e;H[a+6|0]=(b&255)<<24|c>>>8;H[a+5|0]=(b&65535)<<16|c>>>16;break b}V=Q(d>>>0);X=Q(Q(e>>>0)-V);Y=Q(k>>>0);d=0;while(1){f=d<<2;j=f+(g+320|0)|0;e=(d<<3)+168784|0;k=H[e+3|0];E=Q(H[e+7|0]-k|0);W=Yq(Q(Y/E));c:{if(Q(R(W))=15?15:e;J[j>>2]=(e|0)<=1?1:e;f=f+(g+384|0)|0;E=Yq(Q(Q(X*Q(Q(0-k|0)/E))+V));d:{if(Q(R(E))>2]=(e>>>0<256?e:(e^-1)>>31)&255;d=d+1|0;if((d|0)!=16){continue}break}J[g+312>>2]=0;J[g+316>>2]=0;J[g+304>>2]=0;J[g+308>>2]=0;J[g+296>>2]=0;J[g+300>>2]=0;J[g+288>>2]=0;J[g+292>>2]=0;J[g+280>>2]=0;J[g+284>>2]=0;J[g+272>>2]=0;J[g+276>>2]=0;J[g+264>>2]=0;J[g+268>>2]=0;J[g+256>>2]=0;J[g+260>>2]=0;l=0;while(1){k=(l<<3)+168784|0;e=l<<2;u=e+(g+256|0)|0;s=J[u>>2];f=J[e+(g+384|0)>>2];i=J[e+(g+320|0)>>2];t=(l<<4)+g|0;m=0;d=-1;h=0;while(1){e=K[P(c,m)+b|0];e:{if((e|0)==(d|0)){H[m+t|0]=h&7;e=h>>>3|0;s=P(e,e)+s|0;break e}d=f+P(i,H[k|0])|0;v=((d>>>0<256?d:(d^-1)>>31)&255)-e|0;d=v>>31;h=f+P(i,H[k+1|0])|0;w=((h>>>0<256?h:(h^-1)>>31)&255)-e|0;h=w>>31;n=f+P(i,H[k+2|0])|0;x=((n>>>0<256?n:(n^-1)>>31)&255)-e|0;n=x>>31;o=f+P(i,H[k+3|0])|0;y=((o>>>0<256?o:(o^-1)>>31)&255)-e|0;o=y>>31;p=f+P(i,H[k+4|0])|0;z=((p>>>0<256?p:(p^-1)>>31)&255)-e|0;p=z>>31;q=f+P(i,H[k+5|0])|0;A=((q>>>0<256?q:(q^-1)>>31)&255)-e|0;q=A>>31;r=f+P(i,H[k+6|0])|0;C=((r>>>0<256?r:(r^-1)>>31)&255)-e|0;r=C>>31;j=f+P(i,H[k+7|0])|0;D=((j>>>0<256?j:(j^-1)>>31)&255)-e|0;j=D>>31;d=(d^v)-d<<3;h=(h^w)-h<<3|1;d=d>>>0>>0?d:h;h=(n^x)-n<<3|2;d=d>>>0>>0?d:h;h=(o^y)-o<<3|3;d=d>>>0>>0?d:h;h=(p^z)-p<<3|4;d=d>>>0>>0?d:h;h=(q^A)-q<<3|5;d=d>>>0>>0?d:h;h=(r^C)-r<<3|6;d=d>>>0>>0?d:h;h=(j^D)-j<<3|7;h=d>>>0>>0?d:h;H[m+t|0]=h&7;d=h>>>3|0;s=P(d,d)+s|0;d=e}m=m+1|0;if((m|0)!=16){continue}break}J[u>>2]=s;l=l+1|0;if((l|0)!=16){continue}break}b=J[g+260>>2];c=J[g+256>>2];e=b>>>0>>0;d=J[g+264>>2];b=e?b:c;c=d>>>0>>0;f=c?2:e;e=J[g+268>>2];b=c?d:b;c=e>>>0>>0;f=c?3:f;d=J[g+272>>2];b=c?e:b;c=d>>>0>>0;f=c?4:f;e=J[g+276>>2];b=c?d:b;c=e>>>0>>0;f=c?5:f;d=J[g+280>>2];b=c?e:b;c=d>>>0>>0;f=c?6:f;e=J[g+284>>2];b=c?d:b;c=e>>>0>>0;f=c?7:f;d=J[g+288>>2];b=c?e:b;c=d>>>0>>0;f=c?8:f;e=J[g+292>>2];b=c?d:b;c=e>>>0>>0;f=c?9:f;d=J[g+296>>2];b=c?e:b;c=d>>>0>>0;f=c?10:f;e=J[g+300>>2];b=c?d:b;c=e>>>0>>0;f=c?11:f;d=J[g+304>>2];b=c?e:b;c=d>>>0>>0;f=c?12:f;e=J[g+308>>2];b=c?d:b;c=e>>>0>>0;f=c?13:f;d=J[g+312>>2];b=c?e:b;c=d>>>0>>0;b=M[g+316>>2]<(c?d:b)>>>0?15:c?14:f;c=b<<2;I[a>>1]=L[c+(g+320|0)>>1]<<12|b<<8&3840|K[c+(g+384|0)|0];f=(b<<4)+g|0;d=f;c=K[d+13|0];k=K[d+15|0];e=K[d+14|0];l=K[d+1|0]<<1|K[d|0]<<13;b=K[d+2|0];d=b>>>11|0;b=b<<21;i=d|l;j=b;d=K[f+3|0];b=d>>>23|0;d=j|d<<9;i=b|i;b=d;d=K[f+4|0]<<10;b=b|0;i=d|i;j=b;d=K[f+5|0];b=d>>>2|0;d=j|d<<30;i=b|i;j=d;b=K[f+6|0];d=b>>>14|0;b=j|b<<18;i=d|i;j=b;d=K[f+7|0];b=d>>>26|0;d=j|d<<6;i=b|i;b=d;d=K[f+8|0]<<7;b=b|0;i=d|i;j=b;d=K[f+9|0];b=d>>>5|0;d=j|d<<27;i=b|i;j=d;b=K[f+10|0];d=b>>>17|0;b=j|b<<15;i=d|i;j=b;d=K[f+11|0];b=d>>>29|0;d=j|d<<3;i=b|i;b=d;d=K[f+12|0]<<4;f=b|0;b=d|i;d=b;H[a+3|0]=d;H[a+2|0]=d>>>8;f=f|c<<24;b=d|c>>>8;d=e>>>20|0;e=e<<12|k|f;H[a+7|0]=e;H[a+4|0]=(b&16777215)<<8|f>>>24;b=b|d;H[a+6|0]=(b&255)<<24|e>>>8;H[a+5|0]=(b&65535)<<16|e>>>16}Ui=g+448|0;return}Z(106832,40075,15973,1829);B()}function Sqa(a,b,c,d,e){a=a|0;b=b|0;c=c|0;d=d|0;e=e|0;var f=0,g=Q(0),h=Q(0),i=Q(0),j=Q(0),k=Q(0),l=Q(0),m=Q(0),n=Q(0),o=Q(0),p=Q(0),q=Q(0),r=Q(0),s=Q(0),t=Q(0),u=Q(0),v=0;f=Ui-32|0;Ui=f;o=N[d+48>>2];k=N[d+8>>2];p=N[d>>2];u=N[d+4>>2];q=N[d+52>>2];i=N[d+24>>2];r=N[d+16>>2];l=N[d+20>>2];s=N[d+56>>2];j=N[d+40>>2];g=N[b+8>>2];t=N[d+32>>2];h=N[b>>2];m=N[d+36>>2];n=N[b+4>>2];J[f+28>>2]=0;j=Q(j*g);m=Q(n*m);N[f+24>>2]=s+Q(j+Q(Q(t*h)+m));i=Q(i*g);l=Q(n*l);N[f+20>>2]=q+Q(i+Q(Q(r*h)+l));k=Q(k*g);g=Q(p*h);h=Q(n*u);N[f+16>>2]=o+Q(k+Q(g+h));g=N[c>>2];J[f+12>>2]=0;N[f+8>>2]=s+Q(j+Q(Q(t*g)+m));N[f+4>>2]=q+Q(i+Q(Q(r*g)+l));N[f>>2]=o+Q(k+Q(Q(p*g)+h));v=f+16|0;Zi[J[J[a>>2]+8>>2]](a,v,f,e);o=N[d+48>>2];k=N[d+8>>2];u=N[d>>2];p=N[d+4>>2];q=N[d+52>>2];i=N[d+24>>2];l=N[d+16>>2];r=N[d+20>>2];s=N[d+56>>2];j=N[d+40>>2];g=N[b+8>>2];m=N[d+32>>2];h=N[c>>2];t=N[d+36>>2];n=N[b+4>>2];J[f+28>>2]=0;j=Q(j*g);m=Q(m*h);N[f+24>>2]=s+Q(j+Q(m+Q(n*t)));i=Q(i*g);l=Q(l*h);N[f+20>>2]=q+Q(i+Q(l+Q(n*r)));k=Q(k*g);h=Q(u*h);N[f+16>>2]=o+Q(k+Q(h+Q(n*p)));g=N[c+4>>2];J[f+12>>2]=0;N[f+8>>2]=s+Q(j+Q(m+Q(t*g)));N[f+4>>2]=q+Q(i+Q(l+Q(r*g)));N[f>>2]=o+Q(k+Q(h+Q(p*g)));Zi[J[J[a>>2]+8>>2]](a,v,f,e);o=N[d+48>>2];k=N[d+8>>2];p=N[d>>2];u=N[d+4>>2];q=N[d+52>>2];i=N[d+24>>2];r=N[d+16>>2];l=N[d+20>>2];s=N[d+56>>2];j=N[d+40>>2];g=N[b+8>>2];t=N[d+32>>2];h=N[c>>2];m=N[d+36>>2];n=N[c+4>>2];J[f+28>>2]=0;j=Q(j*g);m=Q(n*m);N[f+24>>2]=s+Q(j+Q(Q(t*h)+m));i=Q(i*g);l=Q(n*l);N[f+20>>2]=q+Q(i+Q(Q(r*h)+l));k=Q(k*g);g=Q(p*h);h=Q(n*u);N[f+16>>2]=o+Q(k+Q(g+h));g=N[b>>2];J[f+12>>2]=0;N[f+8>>2]=s+Q(j+Q(Q(t*g)+m));N[f+4>>2]=q+Q(i+Q(Q(r*g)+l));N[f>>2]=o+Q(k+Q(Q(p*g)+h));Zi[J[J[a>>2]+8>>2]](a,v,f,e);o=N[d+48>>2];k=N[d+8>>2];u=N[d>>2];p=N[d+4>>2];q=N[d+52>>2];i=N[d+24>>2];l=N[d+16>>2];r=N[d+20>>2];s=N[d+56>>2];j=N[d+40>>2];g=N[b+8>>2];m=N[d+32>>2];h=N[b>>2];t=N[d+36>>2];n=N[c+4>>2];J[f+28>>2]=0;j=Q(j*g);m=Q(m*h);N[f+24>>2]=s+Q(j+Q(m+Q(n*t)));i=Q(i*g);l=Q(l*h);N[f+20>>2]=q+Q(i+Q(l+Q(n*r)));k=Q(k*g);h=Q(u*h);N[f+16>>2]=o+Q(k+Q(h+Q(n*p)));g=N[b+4>>2];J[f+12>>2]=0;N[f+8>>2]=s+Q(j+Q(m+Q(t*g)));N[f+4>>2]=q+Q(i+Q(l+Q(r*g)));N[f>>2]=o+Q(k+Q(h+Q(p*g)));Zi[J[J[a>>2]+8>>2]](a,v,f,e);o=N[d+48>>2];p=N[d+8>>2];k=N[d>>2];u=N[d+4>>2];q=N[d+52>>2];r=N[d+24>>2];i=N[d+16>>2];l=N[d+20>>2];s=N[d+56>>2];t=N[d+40>>2];g=N[b+8>>2];j=N[d+32>>2];h=N[b>>2];m=N[d+36>>2];n=N[b+4>>2];J[f+28>>2]=0;j=Q(Q(j*h)+Q(n*m));N[f+24>>2]=s+Q(Q(t*g)+j);i=Q(Q(i*h)+Q(n*l));N[f+20>>2]=q+Q(Q(r*g)+i);h=Q(Q(k*h)+Q(n*u));N[f+16>>2]=o+Q(Q(p*g)+h);g=N[c+8>>2];J[f+12>>2]=0;N[f+8>>2]=s+Q(Q(t*g)+j);N[f+4>>2]=q+Q(Q(r*g)+i);N[f>>2]=o+Q(Q(p*g)+h);Zi[J[J[a>>2]+8>>2]](a,v,f,e);o=N[d+48>>2];p=N[d+8>>2];k=N[d>>2];u=N[d+4>>2];q=N[d+52>>2];r=N[d+24>>2];i=N[d+16>>2];l=N[d+20>>2];s=N[d+56>>2];t=N[d+40>>2];g=N[b+8>>2];j=N[d+32>>2];h=N[c>>2];m=N[d+36>>2];n=N[b+4>>2];J[f+28>>2]=0;j=Q(Q(j*h)+Q(n*m));N[f+24>>2]=s+Q(Q(t*g)+j);i=Q(Q(i*h)+Q(n*l));N[f+20>>2]=q+Q(Q(r*g)+i);h=Q(Q(k*h)+Q(n*u));N[f+16>>2]=o+Q(Q(p*g)+h);g=N[c+8>>2];J[f+12>>2]=0;N[f+8>>2]=s+Q(Q(t*g)+j);N[f+4>>2]=q+Q(Q(r*g)+i);N[f>>2]=o+Q(Q(p*g)+h);Zi[J[J[a>>2]+8>>2]](a,v,f,e);o=N[d+48>>2];p=N[d+8>>2];k=N[d>>2];u=N[d+4>>2];q=N[d+52>>2];r=N[d+24>>2];i=N[d+16>>2];l=N[d+20>>2];s=N[d+56>>2];t=N[d+40>>2];g=N[b+8>>2];j=N[d+32>>2];h=N[c>>2];m=N[d+36>>2];n=N[c+4>>2];J[f+28>>2]=0;j=Q(Q(j*h)+Q(n*m));N[f+24>>2]=s+Q(Q(t*g)+j);i=Q(Q(i*h)+Q(n*l));N[f+20>>2]=q+Q(Q(r*g)+i);h=Q(Q(k*h)+Q(n*u));N[f+16>>2]=o+Q(Q(p*g)+h);g=N[c+8>>2];J[f+12>>2]=0;N[f+8>>2]=s+Q(Q(t*g)+j);N[f+4>>2]=q+Q(Q(r*g)+i);N[f>>2]=o+Q(Q(p*g)+h);Zi[J[J[a>>2]+8>>2]](a,v,f,e);o=N[d+48>>2];p=N[d+8>>2];k=N[d>>2];u=N[d+4>>2];q=N[d+52>>2];r=N[d+24>>2];i=N[d+16>>2];l=N[d+20>>2];s=N[d+56>>2];t=N[d+40>>2];g=N[b+8>>2];j=N[d+32>>2];h=N[b>>2];m=N[d+36>>2];n=N[c+4>>2];J[f+28>>2]=0;j=Q(Q(j*h)+Q(n*m));N[f+24>>2]=s+Q(Q(t*g)+j);i=Q(Q(i*h)+Q(n*l));N[f+20>>2]=q+Q(Q(r*g)+i);h=Q(Q(k*h)+Q(n*u));N[f+16>>2]=o+Q(Q(p*g)+h);g=N[c+8>>2];J[f+12>>2]=0;N[f+8>>2]=s+Q(Q(t*g)+j);N[f+4>>2]=q+Q(Q(r*g)+i);N[f>>2]=o+Q(Q(p*g)+h);Zi[J[J[a>>2]+8>>2]](a,v,f,e);o=N[d+48>>2];k=N[d+8>>2];p=N[d>>2];u=N[d+4>>2];q=N[d+52>>2];i=N[d+24>>2];r=N[d+16>>2];l=N[d+20>>2];s=N[d+56>>2];j=N[d+40>>2];g=N[c+8>>2];t=N[d+32>>2];h=N[b>>2];m=N[d+36>>2];n=N[b+4>>2];J[f+28>>2]=0;j=Q(j*g);m=Q(n*m);N[f+24>>2]=s+Q(j+Q(Q(t*h)+m));i=Q(i*g);l=Q(n*l);N[f+20>>2]=q+Q(i+Q(Q(r*h)+l));k=Q(k*g);g=Q(p*h);h=Q(n*u);N[f+16>>2]=o+Q(k+Q(g+h));g=N[c>>2];J[f+12>>2]=0;N[f+8>>2]=s+Q(j+Q(Q(t*g)+m));N[f+4>>2]=q+Q(i+Q(Q(r*g)+l));N[f>>2]=o+Q(k+Q(Q(p*g)+h));Zi[J[J[a>>2]+8>>2]](a,v,f,e);o=N[d+48>>2];k=N[d+8>>2];u=N[d>>2];p=N[d+4>>2];q=N[d+52>>2];i=N[d+24>>2];l=N[d+16>>2];r=N[d+20>>2];s=N[d+56>>2];j=N[d+40>>2];g=N[c+8>>2];m=N[d+32>>2];h=N[c>>2];t=N[d+36>>2];n=N[b+4>>2];J[f+28>>2]=0;j=Q(j*g);m=Q(m*h);N[f+24>>2]=s+Q(j+Q(m+Q(n*t)));i=Q(i*g);l=Q(l*h);N[f+20>>2]=q+Q(i+Q(l+Q(n*r)));k=Q(k*g);h=Q(u*h);N[f+16>>2]=o+Q(k+Q(h+Q(n*p)));g=N[c+4>>2];J[f+12>>2]=0;N[f+8>>2]=s+Q(j+Q(m+Q(t*g)));N[f+4>>2]=q+Q(i+Q(l+Q(r*g)));N[f>>2]=o+Q(k+Q(h+Q(p*g)));Zi[J[J[a>>2]+8>>2]](a,v,f,e);o=N[d+48>>2];k=N[d+8>>2];p=N[d>>2];u=N[d+4>>2];q=N[d+52>>2];i=N[d+24>>2];r=N[d+16>>2];l=N[d+20>>2];s=N[d+56>>2];j=N[d+40>>2];g=N[c+8>>2];t=N[d+32>>2];h=N[c>>2];m=N[d+36>>2];n=N[c+4>>2];J[f+28>>2]=0;j=Q(j*g);m=Q(n*m);N[f+24>>2]=s+Q(j+Q(Q(t*h)+m));i=Q(i*g);l=Q(n*l);N[f+20>>2]=q+Q(i+Q(Q(r*h)+l));k=Q(k*g);g=Q(p*h);h=Q(n*u);N[f+16>>2]=o+Q(k+Q(g+h));g=N[b>>2];J[f+12>>2]=0;N[f+8>>2]=s+Q(j+Q(Q(t*g)+m));N[f+4>>2]=q+Q(i+Q(Q(r*g)+l));N[f>>2]=o+Q(k+Q(Q(p*g)+h));Zi[J[J[a>>2]+8>>2]](a,v,f,e);o=N[d+48>>2];k=N[d+8>>2];u=N[d>>2];p=N[d+4>>2];q=N[d+52>>2];i=N[d+24>>2];l=N[d+16>>2];r=N[d+20>>2];s=N[d+56>>2];j=N[d+40>>2];g=N[c+8>>2];m=N[d+32>>2];h=N[b>>2];t=N[d+36>>2];n=N[c+4>>2];J[f+28>>2]=0;j=Q(j*g);m=Q(m*h);N[f+24>>2]=s+Q(j+Q(m+Q(n*t)));i=Q(i*g);l=Q(l*h);N[f+20>>2]=q+Q(i+Q(l+Q(n*r)));k=Q(k*g);h=Q(u*h);N[f+16>>2]=o+Q(k+Q(h+Q(n*p)));g=N[b+4>>2];J[f+12>>2]=0;N[f+8>>2]=s+Q(j+Q(m+Q(t*g)));N[f+4>>2]=q+Q(i+Q(l+Q(r*g)));N[f>>2]=o+Q(k+Q(h+Q(p*g)));Zi[J[J[a>>2]+8>>2]](a,v,f,e);Ui=f+32|0}function sga(a){a=a|0;var b=0,c=0,d=0,e=0,f=Q(0),g=0,h=0,i=0,j=0,k=0,l=Q(0),m=Q(0),n=Q(0),o=Q(0),p=0,q=Q(0),r=0,s=0,t=0,u=Q(0),v=Q(0),w=Q(0),x=0;g=Ui-128|0;Ui=g;s=pj(g+108|0,a,1,39481,428);J[g+96>>2]=0;J[g+100>>2]=0;J[g+88>>2]=0;J[g+92>>2]=0;J[g+80>>2]=0;J[g+84>>2]=0;J[g+72>>2]=0;J[g+76>>2]=0;a:{b:{if(!$l(a,g+72|0)){a=fj(a,10087,0);break b}nr(a,J[78152]);j=Vj(a,-1);gj(a,-2);b=J[J[J[pk(a)+80>>2]+8>>2]>>2];j=J[j+8>>2];if(M[J[b+4>>2]>>2]>j>>>0){j=J[(b+(j<<2)|0)+12>>2]}else{j=0}if(!j){a=Jj(s,120224,0);break b}b=Pl(a,1);f=N[b+8>>2];l=N[b+4>>2];m=N[b>>2];b=Pl(a,2);n=N[b+8>>2];o=N[b+4>>2];q=N[b>>2];Oj(a,3,5);b=J[a+8>>2];J[b+8>>2]=0;J[a+8>>2]=b+16;if($j(a,3)){while(1){b=Vl(j,Tl(a,-1),Yi,0);gj(a,-2);c=b|c;if($j(a,3)){continue}break}}t=kj(a,4);if((t|0)==5){uj(a,4);rj(a,-1,49663);if(kj(a,-1)){p=(ck(a,-1)|0)!=0}else{p=0}gj(a,-2);gj(a,-2)}b=g- -64|0;J[b>>2]=0;J[b+4>>2]=0;J[g+56>>2]=0;J[g+60>>2]=0;e=g+56|0;lj(32,64,e,b,e|4);d=PL(g);I[d+40>>1]=c;N[d+24>>2]=n;N[d+20>>2]=o;N[d+16>>2]=q;N[d+8>>2]=f;N[d+4>>2]=l;N[d>>2]=m;I[d+42>>1]=L[d+42>>1]&65534|p;k=J[j+132>>2];c:{d:{e:{if(H[j+145|0]&1){b=Ui-208|0;Ui=b;J[b+204>>2]=0;l=N[d+24>>2];m=N[d+8>>2];f=Q(l-m);v=Q(f*f);n=N[d+20>>2];o=N[d+4>>2];f=Q(n-o);w=Q(f*f);q=N[d+16>>2];u=N[d>>2];f=Q(q-u);f:{if(Q(v+Q(w+Q(f*f)))<=Q(0)){dj(3,89293,115116,0);break f}c=J[k+64>>2];f=N[c+72>>2];J[b+200>>2]=0;N[b+196>>2]=m*f;N[b+192>>2]=o*f;N[b+188>>2]=u*f;J[b+184>>2]=0;N[b+180>>2]=l*f;N[b+176>>2]=n*f;N[b+172>>2]=q*f;f=N[c+76>>2];if(H[d+42|0]&1){c=L[d+40>>1];d=J[d+32>>2];H[b+36|0]=1;J[b+16>>2]=0;J[b+4>>2]=1065353216;J[b+8>>2]=0;J[b+32>>2]=0;H[b+56|0]=1;J[b+24>>2]=0;J[b+28>>2]=0;J[b+52>>2]=0;H[b+76|0]=1;J[b+44>>2]=0;J[b+48>>2]=0;J[b+72>>2]=0;H[b+96|0]=1;J[b+64>>2]=0;J[b+68>>2]=0;J[b+92>>2]=0;J[b+84>>2]=0;J[b+88>>2]=0;h=J[b+200>>2];J[b+108>>2]=J[b+196>>2];J[b+112>>2]=h;h=J[b+192>>2];J[b+100>>2]=J[b+188>>2];J[b+104>>2]=h;h=J[b+184>>2];J[b+124>>2]=J[b+180>>2];J[b+128>>2]=h;h=J[b+176>>2];J[b+116>>2]=J[b+172>>2];J[b+120>>2]=h;J[b+132>>2]=d;J[b>>2]=243648;I[b+14>>1]=c;I[b+12>>1]=65535;c=J[k+84>>2];Zi[J[J[c>>2]+28>>2]](c,b+188|0,b+172|0,b);k=J[b+24>>2];d=J[e>>2];c=J[e+8>>2]-d>>6;if(k>>>0>c>>>0){if(H[e+12|0]&1){break e}lj(k,64,e,e+8|0,e+4|0);d=J[e>>2];c=J[e+8>>2]-d>>6}if(c>>>0>>0){break d}c=(k<<6)+d|0;J[e+4>>2]=c;if((k|0)>0){while(1){c=J[e>>2];if(J[e+4>>2]-c>>6>>>0<=i>>>0){break a}h=i<<2;d=J[h+J[b+32>>2]>>2];x=J[b+52>>2];r=J[b+72>>2];c=c+(i<<6)|0;N[c>>2]=N[h+J[b+92>>2]>>2];H[c+54|0]=K[c+54|0]|1;h=r;r=i<<4;h=h+r|0;N[c+16>>2]=f*N[h>>2];N[c+20>>2]=f*N[h+4>>2];N[c+24>>2]=f*N[h+8>>2];h=r+x|0;N[c+32>>2]=N[h>>2];N[c+36>>2]=N[h+4>>2];N[c+40>>2]=N[h+8>>2];if(d){J[c+48>>2]=J[d+236>>2];I[c+52>>1]=L[J[d+188>>2]+4>>1]}i=i+1|0;if((k|0)!=(i|0)){continue}break}d=J[e>>2];c=J[e+4>>2]}$z(d,c-d>>6,64,977);J[b>>2]=243672;c=J[b+92>>2];if(!(c?!c|K[b+96|0]!=1:1)){J[83765]=J[83765]+1;Zi[J[61751]](J[c-4>>2])}J[b+92>>2]=0;H[b+96|0]=1;J[b+84>>2]=0;J[b+88>>2]=0;c=J[b+72>>2];if(!(c?!c|K[b+76|0]!=1:1)){J[83765]=J[83765]+1;Zi[J[61751]](J[c-4>>2])}J[b+72>>2]=0;H[b+76|0]=1;J[b+64>>2]=0;J[b+68>>2]=0;c=J[b+52>>2];if(!(c?!c|K[b+56|0]!=1:1)){J[83765]=J[83765]+1;Zi[J[61751]](J[c-4>>2])}J[b+52>>2]=0;H[b+56|0]=1;J[b+44>>2]=0;J[b+48>>2]=0;c=J[b+32>>2];if(!c|K[b+36|0]!=1){break f}if(c){J[83765]=J[83765]+1;Zi[J[61751]](J[c-4>>2])}break f}c=L[d+40>>1];d=J[d+32>>2];i=J[b+200>>2];J[b+28>>2]=J[b+196>>2];J[b+32>>2]=i;i=J[b+184>>2];J[b+44>>2]=J[b+180>>2];J[b+48>>2]=i;J[b+12>>2]=-65535;J[b+16>>2]=0;J[b+4>>2]=1065353216;J[b+8>>2]=0;i=J[b+192>>2];J[b+20>>2]=J[b+188>>2];J[b+24>>2]=i;i=J[b+176>>2];J[b+36>>2]=J[b+172>>2];J[b+40>>2]=i;J[b+84>>2]=d;J[b>>2]=243600;Wu(b+96|0);I[b+14>>1]=c;I[b+12>>1]=65535;c=J[k+84>>2];Zi[J[J[c>>2]+28>>2]](c,b+188|0,b+172|0,b);if(!J[b+8>>2]){break f}d=e+4|0;i=J[e+8>>2];c=J[e+4>>2];if((i|0)==(c|0)){if(H[e+12|0]&1){break e}lj((c-J[e>>2]>>6)+1|0,64,e,e+8|0,d);i=J[e+8>>2]}c=J[e>>2];if((i|0)==(c|0)){break d}J[d>>2]=c- -64;e=J[b+8>>2];N[c>>2]=N[b+4>>2];H[c+54|0]=K[c+54|0]|1;N[c+16>>2]=f*N[b+68>>2];N[c+20>>2]=f*N[b+72>>2];N[c+24>>2]=f*N[b+76>>2];N[c+32>>2]=N[b+52>>2];N[c+36>>2]=N[b+56>>2];N[c+40>>2]=N[b+60>>2];if(!e){break f}J[c+48>>2]=J[e+236>>2];I[c+52>>1]=L[J[e+188>>2]+4>>1]}Ui=b+208|0;break c}c=Ui-144|0;Ui=c;J[c+140>>2]=0;l=N[d+20>>2];m=N[d+4>>2];f=Q(l-m);q=Q(f*f);n=N[d+16>>2];o=N[d>>2];f=Q(n-o);g:{if(Q(q+Q(f*f))<=Q(0)){dj(3,89293,115116,0);break g}f=N[J[k+36>>2]+64>>2];J[c+20>>2]=0;J[c+16>>2]=243500;h=Wu(c+32|0);I[c+112>>1]=65535;J[c+100>>2]=0;b=L[c+116>>1];J[c+96>>2]=d;I[c+116>>1]=I[d+42>>1]&1|b&65534;b=J[k+36>>2];J[c+104>>2]=e;J[c+20>>2]=b;N[c+12>>2]=m*f;N[c+8>>2]=o*f;N[c+4>>2]=l*f;N[c>>2]=n*f;J[c+108>>2]=J[d+32>>2];I[c+114>>1]=L[d+40>>1];H[c+86|0]=K[c+86|0]&254;JU(k+40|0,c+16|0,c+8|0,c);if(!(H[d+42|0]&1)){if(!(H[c+86|0]&1)){break g}i=e+4|0;d=J[e+8>>2];b=J[e+4>>2];if((d|0)==(b|0)){if(H[e+12|0]&1){break e}lj((b-J[e>>2]>>6)+1|0,64,e,e+8|0,i);d=J[e+8>>2]}b=J[e>>2];if((d|0)==(b|0)){break d}J[i>>2]=b- -64;N[b>>2]=N[h>>2];N[b+16>>2]=N[c+48>>2];N[b+20>>2]=N[c+52>>2];N[b+24>>2]=N[c+56>>2];N[b+32>>2]=N[c+64>>2];N[b+36>>2]=N[c+68>>2];N[b+40>>2]=N[c+72>>2];J[b+48>>2]=J[c+80>>2];e=K[c+83|0]|K[c+84|0]<<8|(K[c+85|0]<<16|K[c+86|0]<<24);H[b+51|0]=e;H[b+52|0]=e>>>8;H[b+53|0]=e>>>16;H[b+54|0]=e>>>24;break g}b=J[e>>2];$z(b,J[e+4>>2]-b>>6,64,949)}Ui=c+144|0;break c}Z(151729,53895,501,2284);B()}Z(144782,53895,514,59583);B()}b=J[g+60>>2];e=J[g+56>>2];h:{if((b|0)==(e|0)){j=J[a+8>>2];J[j+8>>2]=0;J[a+8>>2]=j+16;break h}c=0;Fj(a,0,0);p=p?b-e>>6:1;if(!p){break h}if((t|0)==5){while(1){Fj(a,0,0);b=J[g+56>>2];if(J[g+60>>2]-b>>6>>>0<=c>>>0){break a}_P(a,j,b+(c<<6)|0);c=c+1|0;Ik(a,-2,c);if((c|0)!=(p|0)){continue}break h}}while(1){b=J[g+56>>2];if(J[g+60>>2]-b>>6>>>0<=c>>>0){break a}_P(a,j,b+(c<<6)|0);c=c+1|0;if((p|0)!=(c|0)){continue}break}}a=1;if(H[g+68|0]&1){break b}j=J[g+56>>2];if(!j){break b}cj(j)}oj(s);Ui=g+128|0;return a|0}Z(145396,53895,487,84789);B()}function pn(a,b,c,d,e){var f=0,g=0,h=0,i=0,j=0,k=0,l=0,m=0,n=0,o=0,p=0,q=0,r=0,s=0,t=0,u=0,v=0,w=0,x=0;h=Ui-416|0;Ui=h;a:{b:{c:{if((a|0)==8){a=J[c>>2];J[e+4>>2]=a;J[e>>2]=a;a=J[c>>2];J[e+12>>2]=a;J[e+8>>2]=a;a=J[c>>2];J[e+20>>2]=a;J[e+16>>2]=a;a=J[c>>2];J[e+28>>2]=a;J[e+24>>2]=a;a=J[c>>2];J[e+36>>2]=a;J[e+32>>2]=a;a=J[c>>2];J[e+44>>2]=a;J[e+40>>2]=a;a=J[c>>2];J[e+52>>2]=a;J[e+48>>2]=a;a=J[c>>2];J[e+60>>2]=a;J[e+56>>2]=a;break c}c=K[a+163248|0];i=c>>>0>=4?4:c;q=d+21|0;r=K[a+163088|0];f=K[a+163152|0];j=K[a+163184|0];c=a-15|0;d:{if(c>>>0>=3){n=j>>>0<=1?1:j;p=i>>>0<=3?3:i;o=p-i|0;m=o+1&3;t=f<<9;u=c>>>0>2;s=c>>>0>4294967288;v=a-18>>>0<4294967286;while(1){f=(h+384|0)+(l<<3)|0;g=t+319216|0;c=q+(P(i,l)<<1)|0;H[f|0]=K[g+(K[c|0]<<1)|0];H[f+4|0]=K[g+(K[c+1|0]<<1)|0];H[f+1|0]=K[g+(K[c+2|0]<<1)|0];H[f+5|0]=K[g+(K[c+3|0]<<1)|0];e:{if(!u){break e}H[f+2|0]=K[g+(K[c+4|0]<<1)|0];H[f+6|0]=K[g+(K[c+5|0]<<1)|0];if(v){break e}H[f+3|0]=K[g+(K[c+6|0]<<1)|0];H[f+7|0]=K[g+(K[c+7|0]<<1)|0]}f:{if(s){break f}k=f|4;g=0;c=i;if(m){while(1){H[c+f|0]=255;H[c+k|0]=255;c=c+1|0;g=g+1|0;if((m|0)!=(g|0)){continue}break}}if(o>>>0<3){break f}while(1){H[c+f|0]=255;H[c+k|0]=255;g=c+1|0;H[g+f|0]=255;H[g+k|0]=255;g=c+2|0;H[g+f|0]=255;H[g+k|0]=255;g=c+3|0;H[g+f|0]=255;H[g+k|0]=255;c=c+4|0;if((g|0)!=(p|0)){continue}break}}l=l+1|0;if((n|0)!=(l|0)){continue}break}break d}n=j>>>0<=1?1:j;c=0;p=f<<9;while(1){k=p+319216|0;g=q+(c<<2)|0;l=K[k+(K[g|0]<<1)|0];o=K[k+(K[g+2|0]<<1)|0];m=K[k+(K[g+1|0]<<1)|0];f=(h+384|0)+(c<<3)|0;H[f+7|0]=K[k+(K[g+3|0]<<1)|0];H[f+6|0]=m;H[f+5|0]=m;H[f+4|0]=m;H[f+3|0]=o;H[f+2|0]=l;H[f+1|0]=l;H[f|0]=l;c=c+1|0;if((n|0)!=(c|0)){continue}break}}f=1<>2];g:{if(a-15>>>0<=2){k=j>>>0<=1?1:j;i=0;while(1){c=(h+384|0)+(i<<3)|0;j=K[c+7|0];l=j<<8|j;j=K[c+3|0];m=j<<8|j;j=K[c+4|0];q=j<<8|j;c=K[c|0];n=c<<8|c;p=(i<<7)+h|0;c=0;while(1){g=c<<2;j=g+p|0;g=J[g+r>>2];o=64-g|0;H[j+3|0]=(P(o,m)+P(g,l)|0)+32>>>14;g=(P(n,o)+P(g,q)|0)+32>>>14|0;H[j+2|0]=g;H[j+1|0]=g;H[j|0]=g;c=c+1|0;if((f|0)!=(c|0)){continue}break}i=i+1|0;if((k|0)!=(i|0)){continue}break}break g}p=((i>>>0<=3?3:i)-(i>>>0<=1?1:i)|0)+1|0;o=j>>>0<=1?1:j;j=0;t=a-15>>>0<3;u=a-18>>>0<4294967286;while(1){s=(j<<7)+h|0;v=s|1;i=(h+384|0)+(j<<3)|0;w=K[i+4|0];x=K[i|0];c=0;while(1){n=c<<2;k=n+s|0;g=J[n+r>>2];l=P(64-g|0,257);m=P(g,257);H[k|0]=(P(l,x)+P(m,w)|0)+32>>>14;H[k+1|0]=(P(l,K[i+1|0])+P(m,K[i+5|0])|0)+32>>>14;q=1;g=1;h:{if(t){break h}H[k+2|0]=(P(l,K[i+2|0])+P(m,K[i+6|0])|0)+32>>>14;if(u){g=2;break h}H[k+3|0]=(P(l,K[i+3|0])+P(m,K[i+7|0])|0)+32>>>14;q=0;g=3}if(q){ij(n+(g+v|0)|0,255,p)}c=c+1|0;if((f|0)!=(c|0)){continue}break}j=j+1|0;if((o|0)!=(j|0)){continue}break}}i:{j:{k:{l:{m:{n:{i=1<>>0>>0){break l}break a}c=(b<<4)+162240|0}a=K[d+39|0];if(a>>>0>>0){break k}break b}J[e>>2]=J[(a<<2)+h>>2];a=K[d+40|0];if(a>>>0>=f>>>0){break a}J[e+4>>2]=J[(a<<2)+h>>2];a=K[d+41|0];if(a>>>0>=f>>>0){break a}J[e+8>>2]=J[(a<<2)+h>>2];a=K[d+42|0];if(a>>>0>=f>>>0){break a}J[e+12>>2]=J[(a<<2)+h>>2];a=K[d+43|0];if(a>>>0>=f>>>0){break a}J[e+16>>2]=J[(a<<2)+h>>2];a=K[d+44|0];if(a>>>0>=f>>>0){break a}J[e+20>>2]=J[(a<<2)+h>>2];a=K[d+45|0];if(a>>>0>=f>>>0){break a}J[e+24>>2]=J[(a<<2)+h>>2];a=K[d+46|0];if(a>>>0>=f>>>0){break a}J[e+28>>2]=J[(a<<2)+h>>2];a=K[d+47|0];if(a>>>0>=f>>>0){break a}J[e+32>>2]=J[(a<<2)+h>>2];a=K[d+48|0];if(a>>>0>=f>>>0){break a}J[e+36>>2]=J[(a<<2)+h>>2];a=K[d+49|0];if(a>>>0>=f>>>0){break a}J[e+40>>2]=J[(a<<2)+h>>2];a=K[d+50|0];if(a>>>0>=f>>>0){break a}J[e+44>>2]=J[(a<<2)+h>>2];a=K[d+51|0];if(a>>>0>=f>>>0){break a}J[e+48>>2]=J[(a<<2)+h>>2];a=K[d+52|0];if(a>>>0>=f>>>0){break a}J[e+52>>2]=J[(a<<2)+h>>2];a=K[d+53|0];if(a>>>0>=f>>>0){break a}J[e+56>>2]=J[(a<<2)+h>>2];a=K[d+54|0];if(a>>>0>=f>>>0){break a}c=(a<<2)+h|0;break i}J[e>>2]=J[((K[c|0]<<7)+h|0)+(a<<2)>>2];a=K[d+40|0];if(a>>>0>=f>>>0){break b}J[e+4>>2]=J[((K[c+1|0]<<7)+h|0)+(a<<2)>>2];a=K[d+41|0];if(a>>>0>=f>>>0){break b}J[e+8>>2]=J[((K[c+2|0]<<7)+h|0)+(a<<2)>>2];a=K[d+42|0];if(a>>>0>=f>>>0){break b}J[e+12>>2]=J[((K[c+3|0]<<7)+h|0)+(a<<2)>>2];a=K[d+43|0];if(a>>>0>=f>>>0){break b}J[e+16>>2]=J[((K[c+4|0]<<7)+h|0)+(a<<2)>>2];a=K[d+44|0];if(a>>>0>=f>>>0){break b}J[e+20>>2]=J[((K[c+5|0]<<7)+h|0)+(a<<2)>>2];a=K[d+45|0];if(a>>>0>=f>>>0){break b}J[e+24>>2]=J[((K[c+6|0]<<7)+h|0)+(a<<2)>>2];a=K[d+46|0];if(a>>>0>=f>>>0){break b}J[e+28>>2]=J[((K[c+7|0]<<7)+h|0)+(a<<2)>>2];a=K[d+47|0];if(a>>>0>=f>>>0){break b}J[e+32>>2]=J[((K[c+8|0]<<7)+h|0)+(a<<2)>>2];a=K[d+48|0];if(a>>>0>=f>>>0){break b}J[e+36>>2]=J[((K[c+9|0]<<7)+h|0)+(a<<2)>>2];a=K[d+49|0];if(a>>>0>=f>>>0){break b}J[e+40>>2]=J[((K[c+10|0]<<7)+h|0)+(a<<2)>>2];a=K[d+50|0];if(a>>>0>=f>>>0){break b}J[e+44>>2]=J[((K[c+11|0]<<7)+h|0)+(a<<2)>>2];a=K[d+51|0];if(a>>>0>=f>>>0){break b}J[e+48>>2]=J[((K[c+12|0]<<7)+h|0)+(a<<2)>>2];a=K[d+52|0];if(a>>>0>=f>>>0){break b}J[e+52>>2]=J[((K[c+13|0]<<7)+h|0)+(a<<2)>>2];a=K[d+53|0];if(a>>>0>=f>>>0){break b}J[e+56>>2]=J[((K[c+14|0]<<7)+h|0)+(a<<2)>>2];a=K[d+54|0];if(a>>>0>=f>>>0){break b}c=((K[c+15|0]<<7)+h|0)+(a<<2)|0;break i}p:{if(i&141376){j=d+39|0;g=h|3;k=h|2;l=h|1;c=0;while(1){b=j+(c<<1)|0;a=K[b|0];if(a>>>0>=f>>>0){break p}b=K[b+1|0];if(b>>>0>=f>>>0){break p}i=(c<<2)+e|0;H[i|0]=K[((J[d+16>>2]?a:b)<<2)+h|0];H[i+1|0]=K[l+((J[d+16>>2]==1?b:a)<<2)|0];H[i+2|0]=K[k+((J[d+16>>2]==2?b:a)<<2)|0];H[i+3|0]=K[g+((J[d+16>>2]==3?b:a)<<2)|0];c=c+1|0;if((c|0)!=16){continue}break}break c}Z(110765,40075,12755,80501);B()}Z(20870,40075,12764,80501);B()}J[e+60>>2]=J[c>>2]}Ui=h+416|0;return}Z(20836,40075,12748,80501);B()}Z(20836,40075,12740,80501);B()}function Hna(a){a=a|0;var b=0,c=0,d=0,e=0,f=0,g=0,h=0,i=0,j=0;i=Ui-176|0;Ui=i;J[i+172>>2]=0;a:{d=J[J[a+12>>2]>>2];h=J[J[d>>2]+24>>2];if((h|0)==-2){break a}c=J[a+8>>2];if(c){b=J[c+124>>2]}else{b=0}j=J[b+8>>2]-J[b+12>>2]>>4;Nj(b,-1e4,J[d+12>>2]);Ok(b);Nj(b,-1e4,h);Nj(b,-1e4,J[d+12>>2]);d=J[a+4>>2];c=J[d>>2];d=J[d+4>>2];b:{if(c|d){Bk(b,c,d);break b}c=J[b+8>>2];J[c+8>>2]=0;J[b+8>>2]=c+16}Fj(b,0,16);e=J[b+8>>2];h=e-J[b+12>>2]>>4;c=J[a+4>>2];d=L[c+956>>1];if(d&1){f=+M[c+804>>2];J[e+8>>2]=3;O[e>>3]=f;J[b+8>>2]=J[b+8>>2]+16;ej(b,h,76148);c=J[J[a+4>>2]+808>>2];d=J[b+8>>2];J[d+8>>2]=3;O[d>>3]=c|0;J[b+8>>2]=J[b+8>>2]+16;ej(b,h,72289);c=L[J[a+4>>2]+956>>1]>>>1&1;d=J[b+8>>2];J[d+8>>2]=1;J[d>>2]=c;J[b+8>>2]=J[b+8>>2]+16;ej(b,h,44503);c=J[a+4>>2];d=L[c+956>>1]}if(d&8){mj(b,c+544|0,J[c+800>>2]);ej(b,h,66005);c=J[a+4>>2];d=L[c+956>>1]}if(d&16){hj(i+16|0,c+812|0,144);mj(b,21132,12);c=0;Fj(b,32,0);while(1){d=J[b+8>>2];J[d+8>>2]=3;g=d;d=c+1|0;O[g>>3]=d|0;J[b+8>>2]=J[b+8>>2]+16;f=+N[(i+16|0)+(c<<2)>>2];c=J[b+8>>2];J[c+8>>2]=3;O[c>>3]=f;J[b+8>>2]=J[b+8>>2]+16;Kj(b,-3);c=d;if((c|0)!=32){continue}break}Kj(b,-3);mj(b,19953,15);c=0;Fj(b,32,0);while(1){d=J[b+8>>2];J[d+8>>2]=3;g=d;d=c+1|0;O[g>>3]=d|0;J[b+8>>2]=J[b+8>>2]+16;e=i+16|0;if(e){c=J[(e+(c>>>3&536870908)|0)+128>>2]>>>c&1}else{c=0}g=J[b+8>>2];J[g+8>>2]=3;O[g>>3]=c>>>0;J[b+8>>2]=J[b+8>>2]+16;Kj(b,-3);c=d;if((c|0)!=32){continue}break}Kj(b,-3);mj(b,18598,12);Fj(b,4,0);c=J[b+8>>2];J[c+8>>2]=3;O[c>>3]=1;J[b+8>>2]=J[b+8>>2]+16;if(e){H[i+12|0]=K[e+136|0]}f=e?+K[i+12|0]:0;c=J[b+8>>2];J[c+8>>2]=3;O[c>>3]=f;J[b+8>>2]=J[b+8>>2]+16;Kj(b,-3);c=J[b+8>>2];J[c+8>>2]=3;O[c>>3]=2;J[b+8>>2]=J[b+8>>2]+16;if(e){H[i+12|0]=K[e+137|0]}f=e?+K[i+12|0]:0;c=J[b+8>>2];J[c+8>>2]=3;O[c>>3]=f;J[b+8>>2]=J[b+8>>2]+16;Kj(b,-3);c=J[b+8>>2];J[c+8>>2]=3;O[c>>3]=3;J[b+8>>2]=J[b+8>>2]+16;if(e){H[i+12|0]=K[e+138|0]}f=e?+K[i+12|0]:0;c=J[b+8>>2];J[c+8>>2]=3;O[c>>3]=f;J[b+8>>2]=J[b+8>>2]+16;Kj(b,-3);c=J[b+8>>2];J[c+8>>2]=3;O[c>>3]=4;J[b+8>>2]=J[b+8>>2]+16;if(e){H[i+12|0]=K[e+139|0]}f=e?+K[i+12|0]:0;c=J[b+8>>2];J[c+8>>2]=3;O[c>>3]=f;J[b+8>>2]=J[b+8>>2]+16;Kj(b,-3);Kj(b,-3);c=J[a+4>>2]}if(J[c>>2]|J[c+4>>2]){mj(b,60977,5);f=+N[J[a+4>>2]+8>>2];c=J[b+8>>2];J[c+8>>2]=3;O[c>>3]=f;J[b+8>>2]=J[b+8>>2]+16;Kj(b,h);mj(b,74456,7);c=L[J[a+4>>2]+956>>1]>>>6&1;d=J[b+8>>2];J[d+8>>2]=1;J[d>>2]=c;J[b+8>>2]=J[b+8>>2]+16;Kj(b,h);mj(b,74514,8);c=L[J[a+4>>2]+956>>1]>>>7&1;d=J[b+8>>2];J[d+8>>2]=1;J[d>>2]=c;J[b+8>>2]=J[b+8>>2]+16;Kj(b,h);mj(b,74177,8);c=H[J[a+4>>2]+957|0]&1;d=J[b+8>>2];J[d+8>>2]=1;J[d>>2]=c;J[b+8>>2]=J[b+8>>2]+16;Kj(b,h);c=J[a+4>>2]}d=L[c+956>>1];if(d&512){mj(b,6387,1);f=+N[J[a+4>>2]+12>>2];c=J[b+8>>2];J[c+8>>2]=3;O[c>>3]=f;J[b+8>>2]=J[b+8>>2]+16;Kj(b,h);mj(b,4511,1);f=+N[J[a+4>>2]+16>>2];c=J[b+8>>2];J[c+8>>2]=3;O[c>>3]=f;J[b+8>>2]=J[b+8>>2]+16;Kj(b,h);mj(b,5725,2);f=+N[J[a+4>>2]+20>>2];c=J[b+8>>2];J[c+8>>2]=3;O[c>>3]=f;J[b+8>>2]=J[b+8>>2]+16;Kj(b,h);mj(b,3779,2);f=+N[J[a+4>>2]+24>>2];c=J[b+8>>2];J[c+8>>2]=3;O[c>>3]=f;J[b+8>>2]=J[b+8>>2]+16;Kj(b,h);mj(b,5990,8);f=+N[J[a+4>>2]+28>>2];c=J[b+8>>2];J[c+8>>2]=3;O[c>>3]=f;J[b+8>>2]=J[b+8>>2]+16;Kj(b,h);mj(b,4374,8);f=+N[J[a+4>>2]+32>>2];c=J[b+8>>2];J[c+8>>2]=3;O[c>>3]=f;J[b+8>>2]=J[b+8>>2]+16;Kj(b,h);mj(b,5718,9);f=+N[J[a+4>>2]+36>>2];c=J[b+8>>2];J[c+8>>2]=3;O[c>>3]=f;J[b+8>>2]=J[b+8>>2]+16;Kj(b,h);mj(b,3772,9);f=+N[J[a+4>>2]+40>>2];c=J[b+8>>2];J[c+8>>2]=3;O[c>>3]=f;J[b+8>>2]=J[b+8>>2]+16;Kj(b,h);c=J[a+4>>2];d=L[c+956>>1]}if(d&1024){mj(b,6007,5);f=+N[J[a+4>>2]+44>>2];c=J[b+8>>2];J[c+8>>2]=3;O[c>>3]=f;J[b+8>>2]=J[b+8>>2]+16;Kj(b,h);mj(b,4391,5);f=+N[J[a+4>>2]+48>>2];c=J[b+8>>2];J[c+8>>2]=3;O[c>>3]=f;J[b+8>>2]=J[b+8>>2]+16;Kj(b,h);mj(b,1237,5);f=+N[J[a+4>>2]+52>>2];c=J[b+8>>2];J[c+8>>2]=3;O[c>>3]=f;J[b+8>>2]=J[b+8>>2]+16;Kj(b,h);c=J[a+4>>2]}h=J[c+540>>2];if((h|0)>0){mj(b,53619,5);Fj(b,h,0);d=0;while(1){e=J[a+4>>2];c=J[b+8>>2];J[c+8>>2]=3;g=c;c=d+1|0;O[g>>3]=c|0;J[b+8>>2]=J[b+8>>2]+16;Fj(b,0,6);mj(b,72520,2);d=P(d,44)+e|0;e=J[d+96>>2];g=J[b+8>>2];J[g+8>>2]=3;O[g>>3]=e|0;J[b+8>>2]=J[b+8>>2]+16;Kj(b,-3);mj(b,11341,9);e=J[d+56>>2];g=J[b+8>>2];J[g+8>>2]=3;O[g>>3]=e|0;J[b+8>>2]=J[b+8>>2]+16;Kj(b,-3);mj(b,74456,7);e=!J[d+60>>2];g=J[b+8>>2];J[g+8>>2]=1;J[g>>2]=e;J[b+8>>2]=J[b+8>>2]+16;Kj(b,-3);mj(b,74514,8);e=J[d+60>>2]-3>>>0<2;g=J[b+8>>2];J[g+8>>2]=1;J[g>>2]=e;J[b+8>>2]=J[b+8>>2]+16;Kj(b,-3);mj(b,6387,1);e=J[d- -64>>2];g=J[b+8>>2];J[g+8>>2]=3;O[g>>3]=e|0;J[b+8>>2]=J[b+8>>2]+16;Kj(b,-3);mj(b,4511,1);e=J[d+68>>2];g=J[b+8>>2];J[g+8>>2]=3;O[g>>3]=e|0;J[b+8>>2]=J[b+8>>2]+16;Kj(b,-3);mj(b,5990,8);f=+J[d+72>>2];e=J[b+8>>2];J[e+8>>2]=3;O[e>>3]=f;J[b+8>>2]=J[b+8>>2]+16;Kj(b,-3);mj(b,4374,8);f=+J[d+76>>2];e=J[b+8>>2];J[e+8>>2]=3;O[e>>3]=f;J[b+8>>2]=J[b+8>>2]+16;Kj(b,-3);mj(b,5725,2);e=J[d+80>>2];g=J[b+8>>2];J[g+8>>2]=3;O[g>>3]=e|0;J[b+8>>2]=J[b+8>>2]+16;Kj(b,-3);mj(b,3779,2);e=J[d+84>>2];g=J[b+8>>2];J[g+8>>2]=3;O[g>>3]=e|0;J[b+8>>2]=J[b+8>>2]+16;Kj(b,-3);mj(b,5718,9);f=+J[d+88>>2];e=J[b+8>>2];J[e+8>>2]=3;O[e>>3]=f;J[b+8>>2]=J[b+8>>2]+16;Xj(b,-3);mj(b,3772,9);f=+J[d+92>>2];d=J[b+8>>2];J[d+8>>2]=3;O[d>>3]=f;J[b+8>>2]=J[b+8>>2]+16;Xj(b,-3);Kj(b,-3);d=c;if((c|0)!=(h|0)){continue}break}Kj(b,-3);c=J[a+4>>2]}if(K[c+956|0]&32){c=J[c+800>>2];mj(b,9386,4);c:{if(!c){mj(b,158859,0);break c}mj(b,J[a+4>>2]+544|0,c)}Kj(b,-3)}a=J[b+8>>2]-J[b+12>>2]>>4;c=Ui-128|0;Ui=c;Ui=c+128|0;J[i+12>>2]=0;c=-1e3;d:{if(Ol(b,3,-1,0)){break d}c=0;d=J[b+8>>2]-J[b+12>>2]>>4;a=a-3|0;h=d-a|0;if((h|0)<0){break d}c=J[54669];e:{f:{if((a|0)!=(d|0)){break f}if((kj(b,-1)|0)!=1){break f}c=(ck(b,-1)|0)!=0;break e}J[i>>2]=c;dj(4,88293,121835,i);c=-1e3}gj(b,-2-h|0)}a=J[b+8>>2];J[a+8>>2]=0;J[b+8>>2]=a+16;Ok(b);if(J[b+8>>2]-J[b+12>>2]>>4==(j|0)){break a}Z(143244,37648,749,9478);B()}Ui=i+176|0;return c|0}function Nm(a,b){var c=0,d=0,e=0,f=0,g=0,h=0,i=0,j=0,k=0,l=0,m=0,n=0,o=0,p=0,q=0,r=0,s=0;g=Ui-32|0;Ui=g;c=J[a+212>>2];f=J[a+20>>2];d=J[a+192>>2];e=K[a+16|0];i=1-e|0;h=e;e=J[J[a>>2]+184>>2]&2;H[d+1|0]=e?i:h;H[d+2|0]=e?0-((f|0)==2?1:f)|0:f;d=J[a+224>>2];f=J[a+188>>2];e=J[a+220>>2];H[f|0]=e;H[f+1|0]=e>>>8;H[f+2|0]=e>>>16;H[f+3|0]=e>>>24;H[f+4|0]=d;H[f+5|0]=d>>>8;H[f+6|0]=d>>>16;H[f+7|0]=d>>>24;H[J[a+196>>2]]=c>>>8;H[J[a+196>>2]+1|0]=c;i=J[a+76>>2];a:{if(i){c=J[a+200>>2];J[g+12>>2]=c;J[g+16>>2]=(J[a+184>>2]-c|0)+16749;J[g+24>>2]=J[a+212>>2];J[g+20>>2]=J[a+204>>2]-c;c=J[a+188>>2];f=K[c+4|0]|K[c+5|0]<<8|(K[c+6|0]<<16|K[c+7|0]<<24);J[g>>2]=K[c|0]|K[c+1|0]<<8|(K[c+2|0]<<16|K[c+3|0]<<24);J[g+4>>2]=f;c=J[a+20>>2];f=K[a+16|0];h=1-f|0;e=f;f=J[a>>2];d=J[f+184>>2]&2;H[g+9|0]=d?h:e;H[g+10|0]=d?0-((c|0)==2?1:c)|0:c;H[g+8|0]=J[a+208>>2];n=J[f+24>>2];q=J[f+28>>2];e=Ui-112|0;Ui=e;c=-27648;b:{if(!i|!g){break b}o=J[g+12>>2];if(!o){break b}k=J[g+16>>2];j=J[g+20>>2];if(k>>>0>>0){break b}h=J[g+24>>2];if(h>>>0>k-j>>>0){break b}f=J[i+80>>2];if(f){d=J[f+4>>2]}else{d=0}if(h>>>0>16384){c=-28928;break b}m=g+24|0;r=i+80|0;f=j+o|0;j=k-(h+j|0)|0;o=1;c:{d:{e:{f:{g:{h:{k=d-2|0;switch(k|0){case 5:break g;case 0:break h;default:break f}}if(J[i+76>>2]){break e}}if(M[i+12>>2]>j>>>0){break d}if(J[i+208>>2]<=0){break b}d=J[g+4>>2];J[e+64>>2]=J[g>>2];J[e+68>>2]=d;H[e+72|0]=K[g+8|0];d=K[g+9|0]|K[g+10|0]<<8;H[e+73|0]=d;H[e+74|0]=d>>>8;H[e+76|0]=h;H[e+75|0]=h>>>8;d=i+52|0;Jl(d,e- -64|0,13);Jl(d,f,J[g+24>>2]);h=e+16|0;Dm(d,h);Fn(d);hj(J[g+24>>2]+f|0,h,J[i+12>>2]);d=J[i+12>>2];h=d+J[g+24>>2]|0;J[g+24>>2]=h;j=j-d|0;o=0}i:{switch(k|0){case 4:case 6:case 8:break i;case 0:break e;default:break b}}c=-27136;l=J[i+16>>2];if(l>>>0>j>>>0){break b}j=J[i+4>>2];k=J[i+8>>2];d=j-k|0;if(d>>>0>M[g+20>>2]){break b}j=(j|0)!=12;j:{if(!(j|(k|0)!=4)){J[e+16>>2]=J[i+20>>2];hj(e+16|4,g,d);hj(f-d|0,g,d);l=J[i+16>>2];j=J[i+4>>2];h=J[g+24>>2];break j}c=-27648;if(j){break b}j=12;if((k|0)!=12){break b}J[e+24>>2]=J[i+28>>2];c=J[i+24>>2];J[e+16>>2]=J[i+20>>2];J[e+20>>2]=c;H[e+20|0]=K[e+20|0]^K[g|0];H[e+21|0]=K[e+21|0]^K[g+1|0];H[e+22|0]=K[e+22|0]^K[g+2|0];H[e+23|0]=K[e+23|0]^K[g+3|0];H[e+24|0]=K[e+24|0]^K[g+4|0];H[e+25|0]=K[e+25|0]^K[g+5|0];H[e+26|0]=K[e+26|0]^K[g+6|0];H[e+27|0]=K[e+27|0]^K[g+7|0]}c=J[g+4>>2];J[e+64>>2]=J[g>>2];J[e+68>>2]=c;H[e+72|0]=K[g+8|0];c=K[g+9|0]|K[g+10|0]<<8;H[e+76|0]=h;H[e+75|0]=h>>>8;H[e+73|0]=c;H[e+74|0]=c>>>8;k=e+16|0;n=e- -64|0;p=f+h|0;k:{l:{m:{n:{q=J[r>>2];switch(J[q+4>>2]-6|0){case 2:break m;case 0:break n;default:break l}}J[m>>2]=h;m=J[r+60>>2];c=BH(m,1,k,j,n);o:{if(c){break o}c=AA(m,h,f,f);if(c){break o}c=DH(m,p,l)}break k}J[m>>2]=h;m=J[r+60>>2];c=-13;p:{if(!l){break p}c=OS(m,0,h,k,j,n,f,f,p,l)}break k}c=-24704;q:{if(J[q>>2]!=73){break q}c=-24832;if((l|0)!=16|J[q+16>>2]!=(j|0)){break q}J[m>>2]=h;c=MS(J[r+60>>2],0,h,k,n,f,f,p)}}if(c){break b}c=J[i+16>>2];J[g+20>>2]=J[g+20>>2]-d;J[g+24>>2]=J[g+24>>2]+(c+d|0);c=-27648;if(!o){break b}break c}c=-27136;d=h+1|0;h=J[i+4>>2];d=(d>>>0)%(h>>>0)|0;d=d?h-d|0:0;k=d+1|0;if(k>>>0>j>>>0){break b}h=k>>>0<=1?1:k;p=h&3;if(k>>>0>=4){s=h&-4;h=0;while(1){H[(J[m>>2]+f|0)+l|0]=d;H[((J[m>>2]+f|0)+l|0)+1|0]=d;H[((J[m>>2]+f|0)+l|0)+2|0]=d;H[((J[m>>2]+f|0)+l|0)+3|0]=d;l=l+4|0;h=h+4|0;if((s|0)!=(h|0)){continue}break}}if(p){h=0;while(1){H[(J[m>>2]+f|0)+l|0]=d;l=l+1|0;h=h+1|0;if((p|0)!=(h|0)){continue}break}}l=k+J[m>>2]|0;J[m>>2]=l;if(J[i+208>>2]>=2){if(!n){c=-27648;break b}d=J[i+4>>2];if(d>>>0>M[g+20>>2]){break b}h=i+20|0;c=Zi[n|0](q,h,d)|0;if(c){break b}c=J[i+4>>2];hj(f-c|0,h,c);l=J[m>>2]}d=i+20|0;c=XH(r,d,J[i+4>>2],f,l,f,e+12|0);if(c){break b}c=J[m>>2];if((c|0)!=J[e+12>>2]){c=-27648;break b}r:{if(J[i+208>>2]<=1){hj(d,i+120|0,J[i+4>>2]);break r}d=c;c=J[i+4>>2];J[g+24>>2]=d+c;J[g+20>>2]=J[g+20>>2]-c;f=f-c|0}if(!o){break c}if(M[i+12>>2]>j-k>>>0){break d}c=J[g+4>>2];J[e+64>>2]=J[g>>2];J[e+68>>2]=c;H[e+72|0]=K[g+8|0];c=K[g+9|0]|K[g+10|0]<<8;H[e+73|0]=c;H[e+74|0]=c>>>8;c=L[g+24>>1];c=c<<8|c>>>8;H[e+75|0]=c;H[e+76|0]=c>>>8;c=i+52|0;Jl(c,e- -64|0,13);Jl(c,f,J[g+24>>2]);d=e+16|0;Dm(c,d);Fn(c);hj(J[g+24>>2]+f|0,d,J[i+12>>2]);J[g+24>>2]=J[g+24>>2]+J[i+12>>2];c=0;break b}c=-27136;break b}c=0}Ui=e+112|0;if(c){break a}c=-27648;if(J[g+20>>2]){break a}J[a+208>>2]=K[g+8|0];c=J[g+24>>2];J[a+212>>2]=c;H[J[a+196>>2]]=c>>>8;H[J[a+196>>2]+1|0]=J[g+24>>2]}i=J[a+192>>2];f=(J[a+200>>2]-i|0)+c|0;d=J[J[a>>2]+184>>2];if(d&2){c=-27648;h=J[a+216>>2];s:{if(!(d&1)){d=0;if(J[a+4>>2]-1>>>0<2){break s}}t:{d=J[a+68>>2];if(d){d=L[d+592>>1];if(d){break t}}d=L[a+228>>1];break s}e=L[a+228>>1];d=e?e>>>0>>0?e:d:d}d=d&65535;d=d-1>>>0>=16748?16749:d;if(h>>>0>d>>>0|f>>>0>d-h>>>0){break a}}H[i|0]=J[a+208>>2];J[a+216>>2]=f+J[a+216>>2];f=f+J[a+192>>2]|0;J[a+192>>2]=f;d=J[J[a>>2]+184>>2]&2;c=f+(d?13:5)|0;J[a+200>>2]=c;J[a+196>>2]=f+(d?11:3);J[a+188>>2]=f+(d?3:-8);e=a+220|0;f=J[a+76>>2];if(!(!f|J[a+20>>2]<2)){c=(J[f+4>>2]+c|0)-J[f+8>>2]|0}J[a+204>>2]=c;c=8;u:{while(1){f=c;c=J[J[a>>2]+184>>2]&2;if(f>>>0<=c>>>0){break u}c=f-1|0;i=e+c|0;d=K[i|0]+1|0;H[i|0]=d;if((d|0)!=(d&255)){continue}break}c=J[J[a>>2]+184>>2]&2}if((c|0)==(f|0)){c=-27520;break a}if(!(!c|b)){c=zG(a);if((c|0)<0){break a}b=!c}v:{if((b|0)!=1){break v}if(!J[a+36>>2]){c=-28928;break a}c=J[a+216>>2];if(!c){break v}w:{while(1){c=Zi[J[a+36>>2]](J[a+48>>2],J[a+192>>2]-c|0,c)|0;if((c|0)<=0){break w}b=J[a+216>>2];if(b>>>0>>0){c=-27648;break a}c=b-c|0;J[a+216>>2]=c;if(c){continue}break}c=J[a>>2];b=J[a+184>>2]+((J[c+184>>2]^-1)<<2&8)|0;J[a+192>>2]=b;f=J[c+184>>2]&2;c=b+(f?13:5)|0;J[a+200>>2]=c;J[a+196>>2]=b+(f?11:3);J[a+188>>2]=b+(f?3:-8);b=J[a+76>>2];if(!(!b|J[a+20>>2]<2)){c=(J[b+4>>2]+c|0)-J[b+8>>2]|0}J[a+204>>2]=c;break v}if(c){break a}}c=0}Ui=g+32|0;return c}function LP(a,b,c,d){var e=0,f=0,g=0,h=0,i=0,j=0,k=0,l=0,m=0,n=0,o=0,p=0,q=0,r=0,s=0,t=0,u=Q(0);m=Ui-336|0;Ui=m;a:{b:{c:{d:{f=J[d+8>>2];if(f>>>0>=33){J[m+68>>2]=a;f=32;J[m+64>>2]=32;dj(4,88458,26904,m- -64|0);break d}if(f){break d}f=0;break c}while(1){if(M[d+8>>2]<=g>>>0){break b}e=(m+80|0)+(g<<3)|0;J[e>>2]=bj(J[J[d+4>>2]+(g<<2)>>2]);J[e+4>>2]=Yi;g=g+1|0;if((g|0)!=(f|0)){continue}break}}e=m+80|0;AF(e,e+(f<<3)|0);h=J[b>>2];eC(h,f,e);J[h+168>>2]=J[d+20>>2];l=J[d+28>>2];i=J[d+24>>2];r=J[d+36>>2];if(!r){break a}e=J[d+32>>2];g=0;while(1){q=e+(g<<4)|0;f=J[q>>2];o=bj(f);j=Yi;e:{if(Tu(h,o,j,m+76|0)){Dx(h,o,j,J[q+4>>2]);bL(h,o,j,J[q+8>>2],J[q+12>>2]);break e}J[m+52>>2]=f;J[m+48>>2]=a;dj(3,88458,117202,m+48|0)}g=g+1|0;if((r|0)!=(g|0)){continue}break}break a}Z(12664,55219,122,84789);B()}if(l){g=0;while(1){j=i+(g<<4)|0;f=J[j>>2];r=bj(f);e=Yi;f:{if(Tu(h,r,e,m+76|0)){Dx(h,r,e,J[j+4>>2]);bL(h,r,e,J[j+8>>2],J[j+12>>2]);break f}J[m+36>>2]=f;J[m+32>>2]=a;dj(3,88458,117087,m+32|0)}g=g+1|0;if((l|0)!=(g|0)){continue}break}}r=0;f=0;g:{e=J[d+64>>2];if(e){f=e;g=0;while(1){if(f>>>0<=g>>>0){break g}q=P(g,56);f=q+J[d+60>>2]|0;e=J[f+8>>2];o=J[f+12>>2];f=255;i=J[h+68>>2];n=J[h+64>>2];h:{if((i|0)==(n|0)){break h}f=(i-n|0)/56|0;l=f>>>0<=1?1:f;f=0;while(1){j=n+P(f,56)|0;if((e|0)==J[j+8>>2]&(o|0)==J[j+12>>2]){break h}f=f+1|0;if((l|0)!=(f|0)){continue}break}f=255}if((f&255)==255){if(M[d+64>>2]<=g>>>0){break g}J[m+20>>2]=J[q+J[d+60>>2]>>2];J[m+16>>2]=a;dj(3,88458,117426,m+16|0)}f=J[d+64>>2];g=g+1|0;if(f>>>0>g>>>0){continue}break}}g=0;s=Ui-144|0;Ui=s;i:{j:{k:{l:{q=J[d+60>>2];m:{if(!q|!f){break m}p=J[h+64>>2];e=J[h+68>>2];if((p|0)==(e|0)){break m}o=(e-p|0)/56|0;l=o>>>0<=1?1:o;n:{while(1){n=q+P(g,56)|0;i=n;e=J[i+8>>2];j=J[i+12>>2];k=0;o:{while(1){i=P(k,56)+p|0;if(J[i+8>>2]!=(e|0)|J[i+12>>2]!=(j|0)){k=k+1|0;if((l|0)!=(k|0)){continue}break o}break}e=k&255;if((e|0)==255){break o}if(e>>>0>>0){e=P(e,56)+p|0;J[e+28>>2]=J[n+28>>2];H[e+24|0]=K[n+24|0];t=0;j=J[n+40>>2];i=j-1|0;if(i>>>0<=6){t=J[(i<<2)+172864>>2]}J[e+40>>2]=j;J[e+20>>2]=t;J[e+16>>2]=J[n+16>>2];J[e+32>>2]=J[n+32>>2];J[e+36>>2]=H[h+172|0]&1?J[n+36>>2]:0;t=1;g=g+1|0;if((g|0)!=(f|0)){continue}break n}break j}g=g+1|0;if((g|0)!=(f|0)){continue}break}if(!t){break m}}g=0;k=0;while(1){e=J[h+80>>2];if((J[h+84>>2]-e|0)/40>>>0<=k>>>0){break j}I[(e+P(k,40)|0)+36>>1]=g;j=P(k,56);i=Gq(lp(J[(j+p|0)+28>>2]));p=J[h+64>>2];e=(J[h+68>>2]-p|0)/56|0;if(e>>>0<=k>>>0){break j}g=P(i,J[(j+p|0)+20>>2])+g|0;k=k+1|0;if(e>>>0>k>>>0){continue}break}if(H[h+108|0]&1){break l}lj(g,1,h+96|0,h+104|0,h+100|0);e=J[h+96>>2];if(J[h+104>>2]-e>>>0>>0){break k}J[h+100>>2]=e+g;if(J[h+68>>2]!=J[h+64>>2]){g=0;while(1){j=J[h+68>>2];o=J[h+64>>2];p:{if((j|0)==(o|0)){break p}n=q+P(g,56)|0;i=n;e=J[i+8>>2];l=J[i+12>>2];i=(j-o|0)/56|0;j=i>>>0<=1?1:i;k=0;while(1){i=o+P(k,56)|0;if(J[i+8>>2]!=(e|0)|J[i+12>>2]!=(l|0)){k=k+1|0;if((j|0)!=(k|0)){continue}break p}break}o=k&255;if((o|0)==255){break p}l=J[h+80>>2];if(o>>>0>=(J[h+84>>2]-l|0)/40>>>0){break j}J[s+12>>2]=J[n+44>>2];J[s+8>>2]=J[n+48>>2];j=Gq(lp(J[n+28>>2]));p=0;e=J[n+40>>2]-1|0;if(e>>>0<=6){p=J[(e<<2)+172864>>2]}l=l+P(o,40)|0;e=L[l+36>>1];i=J[h+96>>2];if(e>>>0>=J[h+100>>2]-i>>>0){break j}t=e+i|0;i=P(L[l+38>>1],P(j,p));e=J[s+8>>2];hj(t,J[s+12>>2],e>>>0>i>>>0?i:e);e=J[n>>2];if(!e){break p}j=Ui+-64|0;Ui=j;J[j+48>>2]=e;i=s+16|0;Gj(i,128,6280,j+48|0);J[l>>2]=bj(i);J[l+4>>2]=Yi;J[j+32>>2]=e;Gj(i,128,4419,j+32|0);J[l+8>>2]=bj(i);J[l+12>>2]=Yi;J[j+16>>2]=e;Gj(i,128,1252,j+16|0);J[l+16>>2]=bj(i);J[l+20>>2]=Yi;J[j>>2]=e;Gj(i,128,6905,j);J[l+24>>2]=bj(i);J[l+28>>2]=Yi;Ui=j- -64|0}g=g+1|0;if((g|0)!=(f|0)){continue}break}}BL(J[J[h>>2]+2480>>2],h)}Ui=s+144|0;break i}Z(151729,53895,501,2284);B()}Z(144782,53895,514,59583);B()}Z(145396,53895,487,84789);B()}q:{if(J[d+52>>2]){n=J[d+48>>2];p=0;while(1){s=0;t=0;k=n+P(p,48)|0;f=bj(J[k>>2]);i=Yi;j=J[k+4>>2];l=(j|0)==2?1:(j|0)==1?2:3;q=J[k+8>>2];j=(q|0)==2?1:(q|0)==1?2:3;e=J[k+12>>2];if(e>>>0<=6){t=J[(e<<2)+160076>>2]}e=J[k+16>>2];if(e>>>0<=2){s=J[(e<<2)+160104>>2]}u=N[k+20>>2];f=aL(h,f,i,r,l,j,t,s,u)+r|0;e=J[k+28>>2];if(e){g=0;while(1){if(e>>>0<=g>>>0){break q}i=J[k+24>>2]+(g<<3)|0;f=aL(h,J[i>>2],J[i+4>>2],f,l,j,t,s,u)+f|0;g=g+1|0;e=J[k+28>>2];if(g>>>0>>0){continue}break}}if((f|0)==(r|0)){J[m+4>>2]=J[k>>2];J[m>>2]=a;dj(3,88458,117319,m)}r=f;p=p+1|0;if(p>>>0>2]){continue}break}}e=b+40|0;f=b+4|0;a=Aq(h,J[c+40>>2],J[c+44>>2]);if((a|0)!=-1){J[f+(a<<2)>>2]=J[c+8>>2];d=e+(a<<3)|0;a=J[c+44>>2];J[d>>2]=J[c+40>>2];J[d+4>>2]=a;J[b+104>>2]=J[b+104>>2]+1}a=Aq(h,J[c+48>>2],J[c+52>>2]);if((a|0)!=-1){J[f+(a<<2)>>2]=J[c+12>>2];d=e+(a<<3)|0;a=J[c+52>>2];J[d>>2]=J[c+48>>2];J[d+4>>2]=a;J[b+104>>2]=J[b+104>>2]+1}a=Aq(h,J[c+56>>2],J[c+60>>2]);if((a|0)!=-1){J[f+(a<<2)>>2]=J[c+16>>2];d=e+(a<<3)|0;a=J[c+60>>2];J[d>>2]=J[c+56>>2];J[d+4>>2]=a;J[b+104>>2]=J[b+104>>2]+1}a=Aq(h,J[c+64>>2],J[c+68>>2]);if((a|0)!=-1){J[f+(a<<2)>>2]=J[c+20>>2];d=e+(a<<3)|0;a=J[c+68>>2];J[d>>2]=J[c+64>>2];J[d+4>>2]=a;J[b+104>>2]=J[b+104>>2]+1}a=Aq(h,J[c+72>>2],J[c+76>>2]);if((a|0)!=-1){J[f+(a<<2)>>2]=J[c+24>>2];d=e+(a<<3)|0;a=J[c+76>>2];J[d>>2]=J[c+72>>2];J[d+4>>2]=a;J[b+104>>2]=J[b+104>>2]+1}a=Aq(h,J[c+80>>2],J[c+84>>2]);if((a|0)!=-1){J[f+(a<<2)>>2]=J[c+28>>2];d=e+(a<<3)|0;a=J[c+84>>2];J[d>>2]=J[c+80>>2];J[d+4>>2]=a;J[b+104>>2]=J[b+104>>2]+1}a=Aq(h,J[c+88>>2],J[c+92>>2]);if((a|0)!=-1){J[f+(a<<2)>>2]=J[c+32>>2];d=e+(a<<3)|0;a=J[c+92>>2];J[d>>2]=J[c+88>>2];J[d+4>>2]=a;J[b+104>>2]=J[b+104>>2]+1}a=Aq(h,J[c+96>>2],J[c+100>>2]);if((a|0)!=-1){J[f+(a<<2)>>2]=J[c+36>>2];d=e+(a<<3)|0;a=J[c+100>>2];J[d>>2]=J[c+96>>2];J[d+4>>2]=a;J[b+104>>2]=J[b+104>>2]+1}Ui=m+336|0;return}Z(12664,55219,107,84789);B()}Z(12664,55219,165,84789);B()}function iia(a){a=a|0;var b=0,c=0,d=0,e=0,f=0,g=0,h=0,i=0,j=Q(0),k=0,l=0,m=0,n=0;c=J[a+4>>2];b=J[c+16>>2];f=J[J[a+24>>2]>>2];if(f>>>0>2]-b>>3>>>0){b=J[b+(f<<3)>>2];g=J[c>>2];if(b>>>0<(J[c+4>>2]-g|0)/240>>>0){a:{e=g+P(b,240)|0;b:{f=J[a+16>>2];g=J[a+20>>2];c:{if((f|0)==J[76160]&(g|0)==J[76161]|(f|0)==J[76162]&(g|0)==J[76163]){break c}if((f|0)==J[76164]&(g|0)==J[76165]){break c}if((f|0)!=J[76166]|(g|0)!=J[76167]){break b}}return ly(f,g,a+32|0,e+96|0,304640)|0}d:{e:{if((f|0)==J[76170]&(g|0)==J[76171]|(f|0)==J[76172]&(g|0)==J[76173]){break e}if((f|0)==J[76174]&(g|0)==J[76175]){break e}if((f|0)!=J[76176]|(g|0)!=J[76177]){break d}}if(J[J[J[e+148>>2]>>2]+48>>2]==1){return-9}return ly(f,g,a+32|0,e+112|0,304680)|0}f:{g:{h:{if((f|0)==J[76180]&(g|0)==J[76181]|(f|0)==J[76182]&(g|0)==J[76183]){break h}if((f|0)==J[76184]&(g|0)==J[76185]|(f|0)==J[76186]&(g|0)==J[76187]){break h}if((f|0)!=J[76188]|(g|0)!=J[76189]){break g}}if(J[J[J[e+148>>2]>>2]+48>>2]==1){return-9}b=ky(f,g,a+32|0,e+128|0,304720);if(b){break f}I[e+234>>1]=L[e+234>>1]&65023|(Q(Q(Q(N[e+128>>2]+N[e+132>>2])+N[e+136>>2])+N[e+140>>2])!=Q(0))<<9;return 0}if((f|0)==J[76192]&(g|0)==J[76193]){if(J[a+32>>2]){return-4}n=O[a+40>>3];a=L[e+234>>1];I[e+234>>1]=a|16;j=Q(n);j=jQ(1)?Q(1):j;j=a&1?Q(j*Q(.5)):j;N[e+224>>2]=a&2?Q(Q(1)-j):j;return 0}if((f|0)==J[76194]&(g|0)==J[76195]){if(J[a+32>>2]){return-4}N[e+228>>2]=O[a+40>>3];return 0}if((f|0)==J[76046]&(g|0)==J[76047]){f=J[J[J[a+8>>2]+80>>2]>>2];c=J[a+40>>2];h=J[a+44>>2];g=Ui-80|0;Ui=g;b=J[e+152>>2];if(!b){b=nj(20);J[b>>2]=0;J[b+4>>2]=0;J[b+16>>2]=0;J[b+8>>2]=0;J[b+12>>2]=0;J[e+152>>2]=b}a=g+8|0;J[a+8>>2]=c;J[a+12>>2]=h;J[a>>2]=1;a=xn(f,a,J[76024],J[76025],b);if(!a){wP(f,J[e+152>>2],J[b>>2])}Ui=g+80|0;b=L[e+234>>1];I[e+234>>1]=(a?b&256:256)|b&65279;return a|0}if((f|0)==J[76044]&(g|0)==J[76045]){i=J[J[J[a+8>>2]+80>>2]>>2];b=H[a+112|0]&1;f=b?J[a+104>>2]:0;k=b?J[a+108>>2]:0;g=J[a+40>>2];l=J[a+44>>2];m=Ui-80|0;Ui=m;d=J[e+152>>2];if(!d){a=nj(20);J[a>>2]=0;J[a+4>>2]=0;J[a+16>>2]=0;J[a+8>>2]=0;J[a+12>>2]=0;J[e+152>>2]=a;wP(i,a,J[J[e+148>>2]+4>>2]);d=J[e+152>>2]}c=J[d+4>>2];h=J[d+8>>2];i:{j:{if(!(f|k)){a=c;if((h|0)!=(c|0)){break j}break a}b=-1;if((c|0)==(h|0)){break i}a=h-c>>4;h=a>>>0<=1?1:a;d=0;while(1){a=c+(d<<4)|0;if((f|0)==J[a>>2]&(k|0)==J[a+4>>2]){break j}d=d+1|0;if((h|0)!=(d|0)){continue}break}break i}b=m+8|0;J[b+8>>2]=g;J[b+12>>2]=l;J[b>>2]=1;b=xn(i,b,J[76032],J[76033],a+8|0)}Ui=m+80|0;a=L[e+234>>1];a=(b?a&256:256)|a&65279;I[e+234>>1]=a;if(b){break f}k:{f=LD(e);if(!f){break k}a=L[e+234>>1];c=J[e+208>>2];g=J[e+212>>2];b=0;h=J[f+20>>2];l:{if(!h){break l}i=J[J[f+16>>2]+(mxa(c,g,h)<<2)>>2];if((i|0)==-1){break l}h=J[f+24>>2];while(1){b=h+(i<<4)|0;if((c|0)==J[b>>2]&(g|0)==J[b+4>>2]){break l}i=J[b+12>>2];if((i|0)!=-1){continue}break}b=0}if(!(b?b+8|0:0)){break k}j=N[e+224>>2];j=a&2?Q(Q(1)-j):j;b=J[e+208>>2];c=J[e+212>>2];m:{if(!(a&1)){break m}j=Q(j+j);if(!(j>Q(1))){break m}j=Q(Q(2)-j)}ry(e,b,c,j,N[e+228>>2]);return 0}b=0;J[e+216>>2]=0;J[e+208>>2]=0;J[e+212>>2]=0;I[e+234>>1]=a&65527;if(M[J[f+96>>2]+28>>2]>M[e+200>>2]){break f}J[e+200>>2]=0;return 0}b=-13;if(J[76198]==(f|0)&J[76199]==(g|0)|J[76196]==(f|0)&J[76197]==(g|0)){break f}h=J[e+148>>2];b=J[e+152>>2];n:{if(b){b=J[b>>2];if(b){break n}}b=J[h+4>>2]}d=J[b>>2];b=Wp(d,f,g,a+32|0,J[a+104>>2],315,e);if((b|0)!=-1){break f}c=c+52|0;h=Ui-80|0;Ui=h;o:{i=J[a+32>>2];b=-3;p:{if(i>>>0>4|!(1<>2];t:{if((b|0)==65535){b=J[c+8>>2];if((b|0)==J[c+4>>2]){b=(b-J[c>>2]>>3)+16|0;if(b>>>0>65534){break s}FM(c,b)}l=sj(24);b=l;d=J[h+28>>2];J[b>>2]=J[h+24>>2];J[b+4>>2]=d;m=J[c>>2];i=J[c+4>>2]-m|0;k=i>>3;u:{v:{b=J[c+48>>2];w:{if((b|0)!=-1){d=J[c+16>>2];if(b>>>0>=J[c+20>>2]-d>>3>>>0){break a}i=(b<<3)+d|0;J[c+48>>2]=J[i+4>>2];b=k+1|0;break w}b=k+1|0;d=J[c+16>>2];if(b>>>0>J[c+24>>2]-d>>3>>>0){break v}J[c+20>>2]=(b<<3)+d;if((i|0)==-8){break a}i=d+i|0}J[i>>2]=k;J[i+4>>2]=-1;if(J[c+8>>2]-m>>3>>>0>>0){break v}J[c+4>>2]=m+(b<<3);b=J[c+32>>2];if(J[c+36>>2]-b>>2>>>0<=k>>>0){break a}k=b+(k<<2)|0;b=i-d>>3;J[k>>2]=b;break u}Z(144782,53895,514,59583);B()}d=J[c+16>>2];if(b>>>0>=J[c+20>>2]-d>>3>>>0){break a}d=J[d+(b<<3)>>2];i=J[c>>2];if(d>>>0>=J[c+4>>2]-i>>3>>>0){break a}d=i+(d<<3)|0;H[d+5|0]=0;H[d+6|0]=0;H[d+4|0]=1;J[d>>2]=l;H[d+7|0]=0;d=J[c+16>>2];if(b>>>0>=J[c+20>>2]-d>>3>>>0){break a}d=J[d+(b<<3)>>2];l=J[c+4>>2];c=J[c>>2];if(d>>>0>=l-c>>3>>>0){break a}J[e+204>>2]=b;d=J[c+(d<<3)>>2];b=0;break t}d=J[c+16>>2];if(b>>>0>=J[c+20>>2]-d>>3>>>0){break a}b=J[d+(b<<3)>>2];l=J[c+4>>2];c=J[c>>2];if(b>>>0>=l-c>>3>>>0){break a}i=c+(b<<3)|0;k=J[i>>2];b=K[i+4|0];if(b){d=0;c=J[h+24>>2];m=J[h+28>>2];while(1){l=k+P(d,24)|0;if((c|0)==J[l>>2]&(m|0)==J[l+4>>2]){break r}d=d+1|0;if((d|0)!=(b|0)){continue}break}}c=b+1|0;H[i+4|0]=c;d=ml(k,P(c&255,24));J[i>>2]=d;i=J[h+28>>2];c=P(b,24)+d|0;J[c>>2]=J[h+24>>2];J[c+4>>2]=i}b=P(b,24)+d|0;J[b+8>>2]=0;J[b+12>>2]=0;J[b+16>>2]=0;J[b+20>>2]=0;if(PD(e,J[h+24>>2],J[h+28>>2],h+20|0)){c=J[h+20>>2];J[h+36>>2]=J[c+44>>2];J[h+16>>2]=J[c+48>>2]}b=b+8|0;e=J[h+36>>2];c=J[h+32>>2];i=Gq(lp(J[c+28>>2]));if(J[c+20>>2]>0){d=0;while(1){N[(d<<2)+b>>2]=XO(J[c+28>>2],e+P(d,i)|0);d=d+1|0;if((d|0)>2]){continue}break}}c=J[h+24>>2];m=J[h+28>>2];break q}J[h>>2]=65535;dj(4,88458,133348,h);b=-8;break p}b=(k+P(d,24)|0)+8|0}x:{if((c|0)!=(f|0)|(g|0)!=(m|0)){N[(J[h+72>>2]<<2)+b>>2]=O[a+40>>3];break x}if(!J[a+32>>2]){N[b>>2]=O[a+40>>3];break x}c=J[a+44>>2];J[b>>2]=J[a+40>>2];J[b+4>>2]=c;c=J[a+52>>2];J[b+8>>2]=J[a+48>>2];J[b+12>>2]=c}b=0}Ui=h+80|0;break o}}return b|0}}}Z(145396,53895,487,84789);B()}function _ma(a){a=a|0;var b=0,c=0,d=0,e=0,f=0,g=0,h=0,i=0,j=0,k=0,l=0,m=0,n=0,o=0,p=0,q=0,r=0,s=0,t=0,u=0,v=0,w=0,x=0,y=0;g=Ui-48|0;Ui=g;i=J[a>>2];p=i+12|0;x=i+1080|0;a:{while(1){b:{q=(t<<4)+x|0;c=J[q+4>>2];d=J[q>>2];if((c|0)==(d|0)){break b}c=c-d>>1;y=c>>>0<=1?1:c;o=0;c:{d:{while(1){e:{f:{g:{h:{i:{j:{k:{l:{m:{n:{o:{c=J[q>>2];if(J[q+4>>2]-c>>1>>>0>o>>>0){j=L[c+(o<<1)>>1];d=J[i+1036>>2];if(j>>>0>=J[i+1040>>2]-d>>2>>>0){break a}l=j<<2;b=J[l+d>>2];c=J[b+84>>2];h=J[J[a+16>>2]+8>>2];if((c|0)!=(h|0)){if(!J[c+4>>2]){break f}j=b+156|0;f=0;d=0;while(1){e=J[c>>2]+P(f,96)|0;c=J[e+16>>2];l=J[a+16>>2];p:{if(J[l>>2]!=J[e+8>>2]|J[l+4>>2]!=J[e+12>>2]){break p}l=J[c+76>>2];if(!l){break p}m=J[c+100>>2];J[g+24>>2]=h;J[g+20>>2]=b;J[g+28>>2]=J[(J[e+20>>2]<<2)+p>>2];e=J[c+16>>2];J[g+36>>2]=j+(d<<2)&m<<15>>31;J[g+32>>2]=e;Zi[l|0](g+20|0)}d=(I[c+102>>1]&1)+d|0;f=f+1|0;c=J[b+84>>2];if(f>>>0>2]){continue}break}break f}c=J[i+1036>>2];if(j>>>0>=J[i+1040>>2]-c>>2>>>0){break a}e=J[c+l>>2];if(K[e+149|0]&128){break o}if(K[e+141|0]&128){break n}m=J[J[a+16>>2]+12>>2];f=J[h+4>>2];q:{if(!f){d=0;break q}b=J[a+4>>2];k=J[h>>2];d=0;c=0;while(1){n=J[(k+P(c,96)|0)+16>>2];if(!n){break m}d=(I[n+102>>1]&1)+d|0;c=c+1|0;if((f|0)!=(c|0)){continue}break}}b=nj((d<<2)+160|0);J[b+88>>2]=-1;J[b+84>>2]=h;J[b+72>>2]=0;J[b+64>>2]=0;J[b+68>>2]=0;J[b+56>>2]=0;J[b+48>>2]=0;J[b+52>>2]=0;J[b+40>>2]=1065353216;J[b+32>>2]=1065353216;J[b+36>>2]=1065353216;J[b+24>>2]=0;J[b+16>>2]=0;J[b+20>>2]=0;J[b+8>>2]=0;J[b+12>>2]=1065353216;J[b>>2]=0;J[b+4>>2]=0;J[b+80>>2]=0;c=J[74029];J[b+96>>2]=J[74028];J[b+100>>2]=c;c=b+104|0;go(c,0);J[b+144>>2]=2147450879;J[b+152>>2]=d;d=J[b+136>>2]&61440|2147418112;J[b+136>>2]=d;f=J[b+140>>2]&-2147483648;J[b+140>>2]=f|2147450879;h=J[b+148>>2]&-2147483648;J[b+148>>2]=h|2147450879;J[b+80>>2]=J[e+80>>2];f=f|J[e+140>>2]&32767;J[b+140>>2]=f|2147418112;J[b+140>>2]=f|J[e+140>>2]&2147418112;d=d|K[e+136|0];J[b+136>>2]=d;d=d|J[e+136>>2]&1024;J[b+136>>2]=d;d=d&62719|L[e+138>>1]<<16;J[b+136>>2]=d;f=h|J[e+148>>2]&2147418112;J[b+148>>2]=f|32767;J[b+148>>2]=f|J[e+148>>2]&32767;N[b>>2]=N[e>>2];N[b+4>>2]=N[e+4>>2];N[b+8>>2]=N[e+8>>2];N[b+12>>2]=N[e+12>>2];N[b+16>>2]=N[e+16>>2];N[b+20>>2]=N[e+20>>2];N[b+24>>2]=N[e+24>>2];N[b+32>>2]=N[e+32>>2];N[b+36>>2]=N[e+36>>2];N[b+40>>2]=N[e+40>>2];N[b+48>>2]=N[e+48>>2];N[b+52>>2]=N[e+52>>2];N[b+56>>2]=N[e+56>>2];N[b+64>>2]=N[e+64>>2];N[b+68>>2]=N[e+68>>2];N[b+72>>2]=N[e+72>>2];J[b+136>>2]=d|J[e+136>>2]&512;d=J[e+100>>2];J[b+96>>2]=J[e+96>>2];J[b+100>>2]=d;J[b+88>>2]=J[e+88>>2];u=e+104|0;cv(c,u,1);J[b+136>>2]=J[b+136>>2]&-2049|J[e+136>>2]&2048;if(!vv(J[J[i+8>>2]>>2],b)){Vs(c);cj(ij(b,204,160));break f}r:{if(!(H[e+137|0]&1)){J[e+84>>2]=m;break r}h=J[b+84>>2];k=J[h+4>>2];if(k){r=b+156|0;c=0;d=0;while(1){s=J[h>>2]+P(d,96)|0;n=J[s+16>>2];v=J[n+100>>2];f=((v&65536)>>>16|0)+c|0;if(f>>>0>M[b+152>>2]){break l}w=J[n+36>>2];if(w){k=J[i+8>>2];J[g+24>>2]=b;J[g+20>>2]=k;J[g+28>>2]=J[(J[s+20>>2]<<2)+p>>2];k=J[n+16>>2];J[g+36>>2]=r+(c<<2)&v<<15>>31;J[g+32>>2]=k;Zi[w|0](g+20|0)|0;k=J[h+4>>2]}c=f;d=d+1|0;if(k>>>0>d>>>0){continue}break}}J[b+136>>2]=J[b+136>>2]|256;J[e+84>>2]=m;if(!(J[e+136>>2]&256)){break r}ER(i,e)}J[g+44>>2]=0;m=J[e+84>>2];if(J[m+4>>2]){k=e+156|0;c=0;f=0;while(1){n=J[m>>2]+P(f,96)|0;h=J[n+16>>2];J[g+40>>2]=0;r=J[h+100>>2]&65536;d=(r>>>16|0)+c|0;if(d>>>0>M[e+152>>2]){break k}s=J[i+8>>2];J[g+24>>2]=e;J[g+20>>2]=s;J[g+28>>2]=J[(J[n+20>>2]<<2)+p>>2];n=J[h+16>>2];J[g+36>>2]=r?k+(c<<2)|0:0;J[g+32>>2]=n;Zi[J[h+32>>2]](g+20|0)|0;c=d;f=f+1|0;if(f>>>0>2]){continue}break}}Vs(u);c=J[i+1036>>2];if(j>>>0>=J[i+1040>>2]-c>>2>>>0){break a}J[c+l>>2]=b;h=J[i+3168>>2];k=J[i+3160>>2];j=J[i+3152>>2];if((h|0)==k-j>>4){break j}f=J[b+96>>2];l=J[b+100>>2];m=J[i+3148>>2];s:{if(!m){break s}d=J[J[i+3144>>2]+(mxa(f,l,m)<<2)>>2];if((d|0)==-1){break s}while(1){c=j+(d<<4)|0;if(J[c>>2]==(f|0)&(l|0)==J[c+4>>2]){break i}d=J[c+12>>2];if((d|0)!=-1){continue}break}}c=J[i+3156>>2];t:{if((k|0)!=(c|0)){J[i+3156>>2]=c+16;break t}c=J[i+3164>>2];if((c|0)==-1){break h}c=j+(c<<4)|0;J[i+3164>>2]=J[c+12>>2]}J[c+12>>2]=-1;J[c+8>>2]=b;J[c>>2]=f;J[c+4>>2]=l;f=J[i+3144>>2]+(mxa(f,l,m)<<2)|0;d=J[f>>2];u:{if((d|0)==-1){J[f>>2]=c-j>>4;h=J[i+3168>>2];break u}while(1){f=j+(d<<4)|0;d=J[f+12>>2];if((d|0)!=-1){continue}break}J[f+12>>2]=c-j>>4}J[i+3168>>2]=h+1;break g}break a}Z(113139,38296,3685,70439);B()}Z(113110,38296,3686,70439);B()}J[g+4>>2]=b;J[g>>2]=c;dj(4,88293,126457,g);Z(62644,38296,752,70489);B()}Z(12526,38296,1713,18133);B()}Z(12526,38296,921,18115);B()}Z(144851,55629,229,9606);B()}J[c+8>>2]=b;break g}Z(152203,55629,537,2838);B()}d=J[i+3180>>2];c=J[i+3176>>2];v:{if((d|0)==(c|0)){break v}d=d-c>>2;f=d>>>0<=1?1:d;d=0;while(1){h=c+(d<<2)|0;if((e|0)!=J[h>>2]){d=d+1|0;if((f|0)!=(d|0)){continue}break v}break}J[h>>2]=b}cj(ij(e,204,160));J[b+148>>2]=J[b+148>>2]&-32769;c=J[b+140>>2];if(c&32768){break f}c=c&32767;d=J[i+1036>>2];if(c>>>0>=J[i+1040>>2]-d>>2>>>0){break e}if((b|0)!=J[d+(c<<2)>>2]){break d}e=J[b+84>>2];h=J[e+4>>2];if(!h){break f}l=b+156|0;d=0;f=0;while(1){m=J[e>>2]+P(f,96)|0;j=J[m+16>>2];k=J[j+100>>2];c=((k&65536)>>>16|0)+d|0;if(c>>>0>M[b+152>>2]){break c}n=J[j+44>>2];if(n){h=J[i+8>>2];J[g+24>>2]=b;J[g+20>>2]=h;J[g+28>>2]=J[(J[m+20>>2]<<2)+p>>2];h=J[j+16>>2];J[g+36>>2]=l+(d<<2)&k<<15>>31;J[g+32>>2]=h;Zi[n|0](g+20|0)|0;h=J[e+4>>2]}d=c;f=f+1|0;if(h>>>0>f>>>0){continue}break}}o=o+1|0;if((y|0)!=(o|0)){continue}break b}break}break a}Z(70199,38296,1076,62150);B()}Z(12526,38296,1090,62150);B()}t=t+1|0;if((t|0)!=128){continue}break}Ui=g+48|0;return}Z(145396,53895,487,84789);B()}function A0(a,b,c,d,e,f){a=a|0;b=+b;c=c|0;d=d|0;e=e|0;f=f|0;var g=0,h=0,i=0,j=0,k=0,l=0,m=0,n=0,o=0,p=0,q=0,r=0,s=0,t=0,u=0,w=0,x=0,y=0,z=0;n=Ui-560|0;Ui=n;J[n+44>>2]=0;A(+b);h=v(1)|0;v(0)|0;a:{if((h|0)<0){t=1;z=6239;b=-b;A(+b);h=v(1)|0;v(0)|0;break a}if(e&2048){t=1;z=6242;break a}t=e&1;z=t?6245:6240;r=!t}b:{if((h&2146435072)==2146435072){h=t+3|0;Cm(a,32,c,h,e&-65537);rm(a,z,t);d=f&32;rm(a,b!=b?d?48243:91619:d?57603:94391,3);Cm(a,32,c,h,e^8192);m=(c|0)>(h|0)?c:h;break b}w=n+16|0;c:{d:{e:{b=kB(b,n+44|0);b=b+b;if(b!=0){h=J[n+44>>2];J[n+44>>2]=h-1;y=f|32;if((y|0)!=97){break e}break c}y=f|32;if((y|0)==97){break c}k=J[n+44>>2];l=(d|0)<0?6:d;break d}k=h-29|0;J[n+44>>2]=k;b=b*268435456;l=(d|0)<0?6:d}p=(n+48|0)+((k|0)>=0?288:0)|0;h=p;while(1){if(b<4294967296&b>=0){d=~~b>>>0}else{d=0}J[h>>2]=d;h=h+4|0;b=(b-+(d>>>0))*1e9;if(b!=0){continue}break}f:{if((k|0)<=0){d=k;g=h;i=p;break f}i=p;d=k;while(1){j=d>>>0>=29?29:d;g=h-4|0;g:{if(i>>>0>g>>>0){break g}o=0;while(1){d=J[g>>2];m=j&31;x=o;if((j&63)>>>0>=32){o=d<>>32-m;d=d<>>0>x>>>0?m+1|0:m;o=lxa(x,m,1e9);J[g>>2]=x-ixa(o,Yi,1e9,0);g=g-4|0;if(i>>>0<=g>>>0){continue}break}if(!m&x>>>0<1e9){break g}i=i-4|0;J[i>>2]=o}while(1){g=h;if(i>>>0>>0){h=g-4|0;if(!J[h>>2]){continue}}break}d=J[n+44>>2]-j|0;J[n+44>>2]=d;h=g;if((d|0)>0){continue}break}}if((d|0)<0){u=((l+25>>>0)/9|0)+1|0;s=(y|0)==102;while(1){d=0-d|0;m=d>>>0>=9?9:d;h:{if(g>>>0<=i>>>0){h=!J[i>>2]<<2;break h}o=1e9>>>m|0;j=-1<>2];J[h>>2]=x+(d>>>m|0);d=P(o,d&j);h=h+4|0;if(h>>>0>>0){continue}break}h=!J[i>>2]<<2;if(!d){break h}J[g>>2]=d;g=g+4|0}d=m+J[n+44>>2]|0;J[n+44>>2]=d;i=h+i|0;h=s?p:i;g=g-h>>2>(u|0)?h+(u<<2)|0:g;if((d|0)<0){continue}break}}d=0;i:{if(g>>>0<=i>>>0){break i}d=P(p-i>>2,9);h=10;j=J[i>>2];if(j>>>0<10){break i}while(1){d=d+1|0;h=P(h,10);if(j>>>0>=h>>>0){continue}break}}h=(l-((y|0)!=102?d:0)|0)-((y|0)==103&(l|0)!=0)|0;if((h|0)<(P(g-p>>2,9)-9|0)){o=h+9216|0;j=(o|0)/9|0;k=((n+48|0)+((k|0)<0?-4092:-3804)|0)+(j<<2)|0;h=10;m=o-P(j,9)|0;if((m|0)<=7){while(1){h=P(h,10);m=m+1|0;if((m|0)!=8){continue}break}}o=J[k>>2];u=(o>>>0)/(h>>>0)|0;s=o-P(h,u)|0;j=k+4|0;j:{if(!s&(j|0)==(g|0)){break j}k:{if(!(u&1)){b=9007199254740992;if(!(H[k-4|0]&1)|((h|0)!=1e9|i>>>0>=k>>>0)){break k}}b=9007199254740994}q=(g|0)==(j|0)?1:1.5;j=h>>>1|0;q=j>>>0>s>>>0?.5:(j|0)==(s|0)?q:1.5;if(!(K[z|0]!=45|r)){q=-q;b=-b}j=o-s|0;J[k>>2]=j;if(b+q==b){break j}d=h+j|0;J[k>>2]=d;if(d>>>0>=1e9){while(1){J[k>>2]=0;k=k-4|0;if(k>>>0>>0){i=i-4|0;J[i>>2]=0}d=J[k>>2]+1|0;J[k>>2]=d;if(d>>>0>999999999){continue}break}}d=P(p-i>>2,9);h=10;j=J[i>>2];if(j>>>0<10){break j}while(1){d=d+1|0;h=P(h,10);if(j>>>0>=h>>>0){continue}break}}h=k+4|0;g=g>>>0>h>>>0?h:g}while(1){j=g;o=g>>>0<=i>>>0;if(!o){g=g-4|0;if(!J[g>>2]){continue}}break}l:{if((y|0)!=103){k=e&8;break l}g=l?l:1;h=(g|0)>(d|0)&(d|0)>-5;l=(h?d^-1:-1)+g|0;f=(h?-1:-2)+f|0;k=e&8;if(k){break l}g=-9;m:{if(o){break m}k=J[j-4>>2];if(!k){break m}m=10;g=0;if((k>>>0)%10|0){break m}while(1){h=g;g=g+1|0;m=P(m,10);if(!((k>>>0)%(m>>>0)|0)){continue}break}g=h^-1}h=P(j-p>>2,9);if((f&-33)==70){k=0;h=(g+h|0)-9|0;h=(h|0)>0?h:0;l=(h|0)>(l|0)?l:h;break l}k=0;h=((d+h|0)+g|0)-9|0;h=(h|0)>0?h:0;l=(h|0)>(l|0)?l:h}m=-1;s=l|k;if(((s?2147483645:2147483646)|0)<(l|0)){break b}r=(((s|0)!=0)+l|0)+1|0;o=f&-33;n:{if((o|0)==70){if((r^2147483647)<(d|0)){break b}g=(d|0)>0?d:0;break n}h=d>>31;g=us((h^d)-h|0,0,w);if((w-g|0)<=1){while(1){g=g-1|0;H[g|0]=48;if((w-g|0)<2){continue}break}}u=g-2|0;H[u|0]=f;H[g-1|0]=(d|0)<0?45:43;g=w-u|0;if((g|0)>(r^2147483647)){break b}}d=g+r|0;if((d|0)>(t^2147483647)){break b}r=d+t|0;Cm(a,32,c,r,e);rm(a,z,t);Cm(a,48,c,r,e^65536);o:{p:{q:{if((o|0)==70){h=n+16|9;f=i>>>0>p>>>0?p:i;i=f;while(1){g=us(J[i>>2],0,h);r:{if((f|0)!=(i|0)){if(n+16>>>0>=g>>>0){break r}while(1){g=g-1|0;H[g|0]=48;if(n+16>>>0>>0){continue}break}break r}if((g|0)!=(h|0)){break r}g=g-1|0;H[g|0]=48}rm(a,g,h-g|0);i=i+4|0;if(p>>>0>=i>>>0){continue}break}if(s){rm(a,135027,1)}if((l|0)<=0|i>>>0>=j>>>0){break q}while(1){g=us(J[i>>2],0,h);if(g>>>0>n+16>>>0){while(1){g=g-1|0;H[g|0]=48;if(n+16>>>0>>0){continue}break}}rm(a,g,(l|0)>=9?9:l);g=l-9|0;i=i+4|0;if(j>>>0<=i>>>0){break p}d=(l|0)>9;l=g;if(d){continue}break}break p}s:{if((l|0)<0){break s}f=i>>>0>>0?j:i+4|0;p=n+16|9;h=i;while(1){g=us(J[h>>2],0,p);if((p|0)==(g|0)){g=g-1|0;H[g|0]=48}t:{if((h|0)!=(i|0)){if(n+16>>>0>=g>>>0){break t}while(1){g=g-1|0;H[g|0]=48;if(n+16>>>0>>0){continue}break}break t}rm(a,g,1);g=g+1|0;if(!(l|k)){break t}rm(a,135027,1)}d=p-g|0;rm(a,g,(d|0)<(l|0)?d:l);l=l-d|0;h=h+4|0;if(f>>>0<=h>>>0){break s}if((l|0)>=0){continue}break}}Cm(a,48,l+18|0,18,0);rm(a,u,w-u|0);break o}g=l}Cm(a,48,g+9|0,9,0)}Cm(a,32,c,r,e^8192);m=(c|0)>(r|0)?c:r;break b}k=(f<<26>>31&9)+z|0;u:{if(d>>>0>11){break u}g=12-d|0;q=16;while(1){q=q*16;g=g-1|0;if(g){continue}break}if(K[k|0]==45){b=-(q+(-b-q));break u}b=b+q-q}h=J[n+44>>2];g=h>>31;g=us((g^h)-g|0,0,w);if((w|0)==(g|0)){g=g-1|0;H[g|0]=48;h=J[n+44>>2]}p=t|2;i=f&32;l=g-2|0;H[l|0]=f+15;H[g-1|0]=(h|0)<0?45:43;g=e&8;h=n+16|0;while(1){f=h;if(R(b)<2147483648){j=~~b}else{j=-2147483648}H[h|0]=i|K[j+217328|0];b=(b-+(j|0))*16;h=f+1|0;if(!(!((d|0)>0|g)&b==0|(h-(n+16|0)|0)!=1)){H[f+1|0]=46;h=f+2|0}if(b!=0){continue}break}m=-1;g=w-l|0;f=g+p|0;if((2147483645-f|0)<(d|0)){break b}j=f;f=n+16|0;i=h-f|0;d=d?(i-2|0)<(d|0)?d+2|0:i:i;h=j+d|0;Cm(a,32,c,h,e);rm(a,k,p);Cm(a,48,c,h,e^65536);rm(a,f,i);Cm(a,48,d-i|0,0,0);rm(a,l,g);Cm(a,32,c,h,e^8192);m=(c|0)>(h|0)?c:h}Ui=n+560|0;return m|0}function UP(a,b,c,d,e,f,g,h){var i=0,j=0,k=Q(0),l=0,m=Q(0),n=0,o=0,p=0,q=Q(0),r=Q(0),s=Q(0),t=Q(0),u=Q(0),v=Q(0),w=Q(0),x=0,y=0,z=0,A=Q(0),C=Q(0),D=0,E=0,F=0,G=Q(0),L=Q(0),O=Q(0),S=Q(0),T=Q(0),U=Q(0),W=Q(0),X=Q(0),Y=Q(0),_=Q(0),$=Q(0),aa=0,ba=0,ca=Q(0),da=Q(0),ea=Q(0),fa=Q(0),ga=Q(0),ha=Q(0),ia=Q(0),ja=Q(0),ka=Q(0),la=Q(0),ma=Q(0),na=Q(0),oa=Q(0),pa=Q(0),qa=0,ra=Q(0);l=Ui-48|0;Ui=l;j=J[h+8>>2];a:{n=J[b+8>>2];if((Tp(a,n)|0)==2){i=J[j>>2];p=J[j+4>>2]-i|0;o=((p|0)/352|0)+1|0;if(o>>>0<=(J[j+8>>2]-i|0)/352>>>0){J[j+4>>2]=i+P(o,352);if(p>>>0<4294966944){o=J[h+12>>2];J[h+12>>2]=o+1;i=i+p|0;J[i+336>>2]=o;Ao(i);e=J[e>>2];H[i+320|0]=K[i+320|0]|2;b:{if(e){J[i+268>>2]=2;J[i+272>>2]=2;J[i+260>>2]=5;J[i+264>>2]=0;H[i+292|0]=K[e|0];H[i+293|0]=K[e+1|0];H[i+294|0]=K[e+2|0];H[i+295|0]=K[i+295|0]&208|K[e+3|0]&15;if(K[h+16|0]!=1){break b}H[h+16|0]=0;H[i+295|0]=K[i+295|0]|16;break b}H[i+294|0]=255;I[i+292>>1]=65280;J[i+268>>2]=0;J[i+272>>2]=0;J[i+260>>2]=7;J[i+264>>2]=0;H[i+295|0]=K[i+295|0]&208|15}if(f){np(i,f)}e=iv(a,n);if(e>>>0<5){H[i+320|0]=K[i+320|0]|1;e=e<<2;J[i+252>>2]=J[e+159332>>2];J[i+248>>2]=J[e+159312>>2];J[i+156>>2]=J[j+48>>2];e=J[j+52>>2];J[i+240>>2]=2;J[i+144>>2]=e;e=J[j+68>>2];f=J[j+72>>2];J[i+312>>2]=0;J[i+308>>2]=(f-e|0)/40;e=Fo(a,n);J[i+172>>2]=J[(e?e:h+4|0)>>2];h=ev(a,n,l+32|0);c:{d:{e:{f:{switch(J[l+32>>2]-1|0){case 0:break e;case 1:break f;default:break d}}h=J[h+80>>2];if(h){break e}Z(63544,40837,1118,63496);B()}e=J[h>>2];f=J[h+4>>2];if(e|f){break c}}e=J[j+88>>2];f=J[j+92>>2]}n=j+72|0;x=j+68|0;J[i+176>>2]=e;J[i+180>>2]=f;g:{if(g){f=0;h=0;while(1){e=cy(a,J[((h<<4)+b|0)+8>>2]);f=(((e>>>0<=4?4:e)<<1)+f|0)+12|0;h=h+1|0;if((h|0)!=(g|0)){continue}break}y=j+76|0;e=J[j+76>>2];if((e-J[j+72>>2]|0)/40>>>0>>0){if(H[j+80|0]&1){break g}lj(((e-J[x>>2]|0)/40|0)+(f>>>0<=128?128:f)|0,40,x,y,n)}while(1){aa=(z<<4)+b|0;f=J[aa+8>>2];vO(l+32|0,a,f);h:{m=N[l+32>>2];if((m>=Q(0)?m:Q(-m))>2]+96>>2];if(!e){break m}h=nD(a,f);if(h>>>0>=M[e+80>>2]){break l}p=J[J[e+112>>2]+(J[J[e+76>>2]+(h<<2)>>2]<<2)>>2]}fm(l+16|0,a,f,3);L=N[(z<<2)+d>>2];O=N[l+24>>2];S=N[l+20>>2];T=N[l+16>>2];e=cy(a,f);k=AO(a,f);A=N[l+32>>2];u=Q(0);ba=yO(a,f);U=Q(1);W=xO(a,f);m=WQ(360)?Q(360):m)*Q(3.1415927410125732))/Q(180));da=Q(Q(6.2831854820251465)/Q((e>>>0<=4?4:e)>>>0));m=Q(Q(V(Q(Q(ca/da)+Q(.9990000128746033))))+Q(1));n:{if(m=Q(0)){e=~~m>>>0;break n}e=0}j=gv(a,f);if(!j){o=0;C=Q(1);v=Q(-1);break i}DO(a,f,l+15|0,l+14|0);u=N[j>>2];o:{if(u==N[j+8>>2]){o=0;h=K[l+14|0];f=K[l+15|0];if(f&1){break o}break k}h=K[l+14|0];f=K[l+15|0];o=N[j+12>>2]!=N[j+20>>2];if(!((o?h:f)&1)){break k}}m=Q(N[j+16>>2]-u);u=Q(u+m);U=Q(-m);break j}Z(12664,54737,138,84789);B()}U=Q(N[j+16>>2]-u)}D=o?5:1;E=o?1:3;if((o?f:h)&1){v=N[j+(E<<2)>>2];m=Q(N[j+(D<<2)>>2]-v);C=Q(v+m);v=Q(-m);break i}C=N[j+(E<<2)>>2];v=Q(N[j+(D<<2)>>2]-C)}f=J[n>>2]-J[x>>2]|0;qa=(f|0)/-40|0;if(e){m=Q(k/A);D=e-1|0;j=(z<<6)+c|0;X=Q(p>>>0);A=Q(0);w=Q(.7853981852531433);E=1;p=0;p:{while(1){k=(p|0)==(D|0)?ca:Q(da*Q(p>>>0));t=Q(.5);if(!ba){f=w>A&k>=w;A=f?w:k;w=f?Q(w+Q(1.5707963705062866)):w;p=p-f|0;k=A}q=W>>0)*Q(.001953125));h=J[71566];r=Q(Q(Q(Q(1)-k)*N[h+(f>>>7&508)>>2])+Q(N[h+(((f>>>9|0)+1&127)<<2)>>2]*k));k=Q(Q(m*r)+Q(.5));F=+Q(q+Q(-1.5707963705062866))*10430.378350470453;r:{if(R(F)<2147483648){f=~~F;break r}f=-2147483648}q=Q(Q((f&511)>>>0)*Q(.001953125));q=Q(Q(Q(Q(1)-q)*N[h+(f>>>7&508)>>2])+Q(N[h+(((f>>>9|0)+1&127)<<2)>>2]*q));s=Q(Q(m*q)+Q(.5));Y=Q((o?s:k)*U);ea=Q(N[j+40>>2]*Q(0));fa=N[j+8>>2];ga=N[j+24>>2];_=Q(ea+Q(Q(fa*k)+Q(s*ga)));G=N[j+56>>2];ha=Q(N[j+36>>2]*Q(0));ia=N[j+4>>2];ja=N[j+20>>2];$=Q(ha+Q(Q(ia*k)+Q(s*ja)));ka=N[j+52>>2];la=Q(N[j+32>>2]*Q(0));ma=N[j>>2];na=N[j+16>>2];ra=Q(la+Q(Q(ma*k)+Q(na*s)));oa=N[j+48>>2];if(!ba){t=q>=Q(0)?q:Q(-q);pa=r>=Q(0)?r:Q(-r);t=Q(Q(.5)/(t>pa?t:pa))}Y=Q(Y+u);k=Q(Q((o?k:Q(Q(1)-s))*v)+C);s=Q(G+_);_=Q(ka+$);$=Q(oa+ra);h=J[n>>2];s:{if(E){if(J[y>>2]==(h|0)){break s}J[n>>2]=h+40;N[h+36>>2]=X;N[h+32>>2]=L;N[h+28>>2]=O;N[h+24>>2]=S;N[h+20>>2]=T;N[h+16>>2]=k;N[h+12>>2]=Y;N[h+8>>2]=s;N[h+4>>2]=_;N[h>>2]=$;h=J[n>>2]}if(J[y>>2]==(h|0)){break a}J[n>>2]=h+40;N[h+36>>2]=X;N[h+32>>2]=L;N[h+28>>2]=O;N[h+24>>2]=S;N[h+20>>2]=T;N[h+16>>2]=k;N[h+12>>2]=Y;N[h+8>>2]=s;N[h+4>>2]=_;N[h>>2]=$;f=J[n>>2];if((f|0)==J[y>>2]){break a}J[n>>2]=f+40;N[f+36>>2]=X;N[f+32>>2]=L;N[f+28>>2]=O;N[f+24>>2]=S;N[f+20>>2]=T;k=Q(Q(t*r)+Q(.5));r=Q(Q(t*q)+Q(.5));q=Q(Q((o?k:Q(Q(1)-r))*v)+C);N[f+16>>2]=q;s=Q(Q((o?r:k)*U)+u);N[f+12>>2]=s;t=Q(G+Q(ea+Q(Q(fa*k)+Q(ga*r))));N[f+8>>2]=t;G=Q(ka+Q(ha+Q(Q(ia*k)+Q(ja*r))));N[f+4>>2]=G;k=Q(oa+Q(la+Q(Q(ma*k)+Q(na*r))));N[f>>2]=k;if((p|0)==(D|0)){f=J[n>>2];if((f|0)==J[y>>2]){break a}J[n>>2]=f+40;N[f+36>>2]=X;N[f+32>>2]=L;N[f+28>>2]=O;N[f+24>>2]=S;N[f+20>>2]=T;N[f+16>>2]=q;N[f+12>>2]=s;N[f+8>>2]=t;N[f+4>>2]=G;N[f>>2]=k}E=0;p=p+1|0;if((e|0)==(p|0)){break p}continue}break}break a}f=J[n>>2]-J[x>>2]|0}e=cy(a,J[aa+8>>2]);if(qa+((f|0)/40|0)>>>0<=((e>>>0<=4?4:e)<<1)+12>>>0){break h}Z(144515,40837,2074,24125);B()}z=z+1|0;if((z|0)!=(g|0)){continue}break}}J[i+312>>2]=((J[n>>2]-J[x>>2]|0)/40|0)-J[i+308>>2];Ui=l+48|0;return}Z(151729,53895,501,2284);B()}J[l>>2]=e;dj(4,88458,155274,l);Z(114101,40837,1062,69697);B()}Z(145396,53895,487,84789);B()}Z(144782,53895,514,59583);B()}Z(96227,40837,1877,24125);B()}Z(112520,53895,557,53220);B()}function uo(a){var b=0,c=0,d=0,e=0,f=0,g=Q(0),h=0,i=0,j=0,k=Q(0),l=Q(0),m=Q(0),n=Q(0),o=Q(0),p=Q(0),q=Q(0),r=0,s=Q(0);d=Ui-32|0;Ui=d;a:{b:{c:{d:{e:{f:{g:{b=J[a+372>>2];switch(J[b+32>>2]-1|0){case 3:break d;case 2:break e;case 1:break f;case 0:break g;default:break b}}b=J[a+364>>2];f=J[a+372>>2];c=J[f+32>>2];e=(c<<2)+f|0;J[e+16>>2]=0;b=b-1|0;J[a+364>>2]=b;h=e;e=a+348|0;b=J[e+(b<<2)>>2];J[h>>2]=b;J[f+32>>2]=c+1;J[b+8>>2]=0;J[b+12>>2]=0;J[b>>2]=1065353216;J[b+4>>2]=0;f=d+16|0;Jn(f,a,b);c=J[d+28>>2];J[b+24>>2]=J[d+24>>2];J[b+28>>2]=c;c=J[d+20>>2];J[b+16>>2]=J[d+16>>2];J[b+20>>2]=c;b=1;if(uo(a)){break a}b=J[a+372>>2];c=J[b+32>>2]-1|0;J[b+32>>2]=c;i=J[a+364>>2];b=J[b+(c<<2)>>2];J[e+(i<<2)>>2]=b;c=J[a+372>>2];j=J[c+32>>2];h=(j<<2)+c|0;J[h+16>>2]=0;J[a+364>>2]=i;J[h>>2]=b;J[c+32>>2]=j+1;J[b+8>>2]=-2147483648;J[b+12>>2]=0;J[b>>2]=-1082130432;J[b+4>>2]=-2147483648;Jn(f,a,b);c=J[d+28>>2];J[b+24>>2]=J[d+24>>2];J[b+28>>2]=c;c=J[d+20>>2];J[b+16>>2]=J[d+16>>2];J[b+20>>2]=c;b=1;if(uo(a)){break a}b=J[a+372>>2];c=J[b+32>>2]-1|0;J[b+32>>2]=c;c=J[b+(c<<2)>>2];b=J[a+364>>2];J[a+364>>2]=b+1;i=e+(b<<2)|0;J[i>>2]=c;c=J[a+372>>2];j=J[c+32>>2];h=(j<<2)+c|0;J[h+16>>2]=0;J[a+364>>2]=b;b=J[i>>2];J[h>>2]=b;J[c+32>>2]=j+1;J[b+8>>2]=0;J[b+12>>2]=0;J[b>>2]=0;J[b+4>>2]=1065353216;Jn(f,a,b);c=J[d+28>>2];J[b+24>>2]=J[d+24>>2];J[b+28>>2]=c;c=J[d+20>>2];J[b+16>>2]=J[d+16>>2];J[b+20>>2]=c;b=1;if(uo(a)){break a}b=J[a+372>>2];c=J[b+32>>2]-1|0;J[b+32>>2]=c;i=J[a+364>>2];b=J[b+(c<<2)>>2];J[e+(i<<2)>>2]=b;c=J[a+372>>2];j=J[c+32>>2];h=(j<<2)+c|0;J[h+16>>2]=0;J[a+364>>2]=i;J[h>>2]=b;J[c+32>>2]=j+1;J[b+8>>2]=-2147483648;J[b+12>>2]=0;J[b>>2]=-2147483648;J[b+4>>2]=-1082130432;Jn(f,a,b);c=J[d+28>>2];J[b+24>>2]=J[d+24>>2];J[b+28>>2]=c;c=J[d+20>>2];J[b+16>>2]=J[d+16>>2];J[b+20>>2]=c;b=1;if(uo(a)){break a}b=J[a+372>>2];c=J[b+32>>2]-1|0;J[b+32>>2]=c;c=J[b+(c<<2)>>2];b=J[a+364>>2];J[a+364>>2]=b+1;i=e+(b<<2)|0;J[i>>2]=c;c=J[a+372>>2];j=J[c+32>>2];h=(j<<2)+c|0;J[h+16>>2]=0;J[a+364>>2]=b;b=J[i>>2];J[h>>2]=b;J[c+32>>2]=j+1;J[b+8>>2]=1065353216;J[b+12>>2]=0;J[b>>2]=0;J[b+4>>2]=0;Jn(f,a,b);c=J[d+28>>2];J[b+24>>2]=J[d+24>>2];J[b+28>>2]=c;c=J[d+20>>2];J[b+16>>2]=J[d+16>>2];J[b+20>>2]=c;b=1;if(uo(a)){break a}b=J[a+372>>2];c=J[b+32>>2]-1|0;J[b+32>>2]=c;i=J[a+364>>2];b=J[b+(c<<2)>>2];J[e+(i<<2)>>2]=b;c=J[a+372>>2];j=J[c+32>>2];h=(j<<2)+c|0;J[h+16>>2]=0;J[a+364>>2]=i;J[h>>2]=b;J[c+32>>2]=j+1;J[b+8>>2]=-1082130432;J[b+12>>2]=0;J[b>>2]=-2147483648;J[b+4>>2]=-2147483648;Jn(f,a,b);f=J[d+28>>2];J[b+24>>2]=J[d+24>>2];J[b+28>>2]=f;f=J[d+20>>2];J[b+16>>2]=J[d+16>>2];J[b+20>>2]=f;b=1;if(uo(a)){break a}b=J[a+372>>2];f=J[b+32>>2]-1|0;J[b+32>>2]=f;b=J[b+(f<<2)>>2];h=a;a=J[a+364>>2];J[h+364>>2]=a+1;J[e+(a<<2)>>2]=b;b=0;break a}e=a+348|0;f=J[b+4>>2];b=J[b>>2];n=Q(N[f+24>>2]-N[b+24>>2]);o=Q(N[f+20>>2]-N[b+20>>2]);p=Q(N[f+16>>2]-N[b+16>>2]);f=0;while(1){J[d+8>>2]=0;J[d+12>>2]=0;J[d>>2]=0;J[d+4>>2]=0;J[d+(f<<2)>>2]=1065353216;g=N[d+4>>2];m=N[d>>2];k=Q(Q(p*g)-Q(o*m));q=N[d+8>>2];l=Q(Q(o*q)-Q(n*g));m=Q(Q(n*m)-Q(p*q));g=Q(Q(k*k)+Q(Q(l*l)+Q(m*m)));if(g>Q(0)){c=J[a+372>>2];i=J[c+32>>2];b=(i<<2)+c|0;J[b+16>>2]=0;j=J[a+364>>2]-1|0;J[a+364>>2]=j;h=b;b=J[e+(j<<2)>>2];J[h>>2]=b;J[c+32>>2]=i+1;J[b+12>>2]=0;g=Q(Q(1)/Q(Y(g)));N[b+8>>2]=k*g;N[b+4>>2]=m*g;N[b>>2]=l*g;i=d+16|0;Jn(i,a,b);c=J[d+28>>2];J[b+24>>2]=J[d+24>>2];J[b+28>>2]=c;c=J[d+20>>2];J[b+16>>2]=J[d+16>>2];J[b+20>>2]=c;if(uo(a)){break c}b=J[a+372>>2];c=J[b+32>>2]-1|0;J[b+32>>2]=c;j=J[a+364>>2];b=J[b+(c<<2)>>2];J[e+(j<<2)>>2]=b;c=J[a+372>>2];h=J[c+32>>2];r=(h<<2)+c|0;J[r+16>>2]=0;J[a+364>>2]=j;J[r>>2]=b;J[c+32>>2]=h+1;J[b+12>>2]=0;N[b+8>>2]=g*Q(-k);N[b+4>>2]=g*Q(-m);N[b>>2]=g*Q(-l);Jn(i,a,b);c=J[d+28>>2];J[b+24>>2]=J[d+24>>2];J[b+28>>2]=c;c=J[d+20>>2];J[b+16>>2]=J[d+16>>2];J[b+20>>2]=c;if(uo(a)){break c}b=J[a+372>>2];c=J[b+32>>2]-1|0;J[b+32>>2]=c;b=J[b+(c<<2)>>2];c=J[a+364>>2];J[a+364>>2]=c+1;J[e+(c<<2)>>2]=b}f=f+1|0;if((f|0)!=3){continue}break}break b}e=J[b+4>>2];f=J[b>>2];g=N[f+16>>2];m=Q(N[e+16>>2]-g);c=J[b+8>>2];k=N[f+20>>2];l=Q(N[c+20>>2]-k);n=Q(N[e+20>>2]-k);g=Q(N[c+16>>2]-g);k=Q(Q(m*l)-Q(n*g));p=n;n=N[f+24>>2];o=Q(N[c+24>>2]-n);n=Q(N[e+24>>2]-n);l=Q(Q(p*o)-Q(n*l));m=Q(Q(n*g)-Q(m*o));g=Q(Q(k*k)+Q(Q(l*l)+Q(m*m)));if(!(g>Q(0))){break b}J[b+28>>2]=0;e=J[a+364>>2]-1|0;J[a+364>>2]=e;f=a+348|0;e=J[f+(e<<2)>>2];J[b+32>>2]=4;J[b+12>>2]=e;J[e+12>>2]=0;g=Q(Q(1)/Q(Y(g)));N[e+8>>2]=k*g;N[e+4>>2]=m*g;N[e>>2]=l*g;c=d+16|0;Jn(c,a,e);b=J[d+28>>2];J[e+24>>2]=J[d+24>>2];J[e+28>>2]=b;b=J[d+20>>2];J[e+16>>2]=J[d+16>>2];J[e+20>>2]=b;if(uo(a)){break c}b=J[a+372>>2];e=J[b+32>>2]-1|0;J[b+32>>2]=e;i=J[a+364>>2];b=J[b+(e<<2)>>2];J[f+(i<<2)>>2]=b;e=J[a+372>>2];j=J[e+32>>2];h=(j<<2)+e|0;J[h+16>>2]=0;J[a+364>>2]=i;J[h>>2]=b;J[e+32>>2]=j+1;J[b+12>>2]=0;N[b+8>>2]=g*Q(-k);N[b+4>>2]=g*Q(-m);N[b>>2]=g*Q(-l);Jn(c,a,b);e=J[d+28>>2];J[b+24>>2]=J[d+24>>2];J[b+28>>2]=e;e=J[d+20>>2];J[b+16>>2]=J[d+16>>2];J[b+20>>2]=e;b=1;if(uo(a)){break a}b=J[a+372>>2];e=J[b+32>>2]-1|0;J[b+32>>2]=e;b=J[b+(e<<2)>>2];e=a;a=J[a+364>>2];J[e+364>>2]=a+1;J[f+(a<<2)>>2]=b;break b}a=J[b>>2];e=J[b+12>>2];g=N[e+16>>2];m=Q(N[a+16>>2]-g);f=J[b+4>>2];k=N[e+20>>2];n=Q(N[f+20>>2]-k);b=J[b+8>>2];l=N[e+24>>2];o=Q(N[b+24>>2]-l);p=Q(N[a+20>>2]-k);q=Q(N[f+24>>2]-l);s=Q(N[b+16>>2]-g);l=Q(N[a+24>>2]-l);g=Q(N[f+16>>2]-g);k=Q(N[b+20>>2]-k);g=Q(Q(Q(Q(m*n)*o)+Q(Q(Q(Q(Q(p*q)*s)+Q(Q(l*g)*k))-Q(Q(m*q)*k))-Q(Q(p*g)*o)))-Q(Q(l*n)*s));if(!(g>Q(0)|g>2]-17>>>0<=1?J[d+4>>2]-17>>>0<2:E;k=0;while(1){$y();r=N[e+32>>2];o=N[e>>2];p=N[e+16>>2];w=N[e+36>>2];q=N[e+4>>2];s=N[e+20>>2];t=N[e+40>>2];m=N[e+8>>2];n=N[e+24>>2];y=k<<4;z=y+(a+1264|0)|0;J[z+12>>2]=0;C=m;l=y+334048|0;x=N[l>>2];m=Q(-x);u=N[l+4>>2];v=N[l+8>>2];N[z+8>>2]=Q(Q(C*m)-Q(n*u))-Q(t*v);N[z+4>>2]=Q(Q(q*m)-Q(s*u))-Q(w*v);N[z>>2]=Q(Q(o*m)-Q(p*u))-Q(r*v);r=N[f+40>>2];o=N[f+8>>2];p=N[f+24>>2];w=N[f+36>>2];q=N[f+4>>2];s=N[f+20>>2];t=N[f+32>>2];m=N[f>>2];n=N[f+16>>2];l=y+(a+272|0)|0;J[l+12>>2]=0;N[l>>2]=Q(t*v)+Q(Q(m*x)+Q(u*n));N[l+4>>2]=Q(w*v)+Q(Q(q*x)+Q(u*s));N[l+8>>2]=Q(r*v)+Q(Q(o*x)+Q(u*p));k=k+1|0;if((k|0)!=42){continue}break}k=42;z=Zi[J[J[c>>2]+76>>2]](c)|0;if((z|0)>0){while(1){Zi[J[J[c>>2]+80>>2]](c,A,a+3248|0);w=N[e+8>>2];q=N[e>>2];s=N[e+4>>2];t=N[e+24>>2];m=N[e+16>>2];n=N[e+20>>2];B=a+3256|0;r=N[B>>2];o=N[a+3248>>2];p=N[a+3252>>2];N[B>>2]=Q(N[e+40>>2]*r)+Q(Q(N[e+32>>2]*o)+Q(p*N[e+36>>2]));J[a+3260>>2]=0;N[a+3252>>2]=Q(t*r)+Q(Q(m*o)+Q(p*n));N[a+3248>>2]=Q(w*r)+Q(Q(q*o)+Q(s*p));$y();l=J[B+4>>2];D=k<<4;y=D+334048|0;J[y+8>>2]=J[B>>2];J[y+12>>2]=l;l=J[a+3252>>2];J[y>>2]=J[a+3248>>2];J[y+4>>2]=l;r=N[e+32>>2];o=N[e>>2];p=N[e+16>>2];w=N[e+36>>2];q=N[e+4>>2];s=N[e+20>>2];t=N[e+40>>2];m=N[e+8>>2];n=N[e+24>>2];l=D+(a+1264|0)|0;J[l+12>>2]=0;C=m;x=N[a+3248>>2];m=Q(-x);u=N[a+3252>>2];v=N[B>>2];N[l+8>>2]=Q(Q(C*m)-Q(n*u))-Q(t*v);N[l+4>>2]=Q(Q(q*m)-Q(s*u))-Q(w*v);N[l>>2]=Q(Q(o*m)-Q(p*u))-Q(r*v);r=N[f+32>>2];o=N[f>>2];p=N[f+16>>2];w=N[f+36>>2];q=N[f+4>>2];s=N[f+20>>2];t=N[f+40>>2];m=N[f+8>>2];n=N[f+24>>2];l=D+(a+272|0)|0;J[l+12>>2]=0;N[l+8>>2]=Q(t*v)+Q(Q(m*x)+Q(u*n));N[l+4>>2]=Q(w*v)+Q(Q(q*x)+Q(u*s));N[l>>2]=Q(r*v)+Q(Q(o*x)+Q(u*p));k=k+1|0;A=A+1|0;if((z|0)!=(A|0)){continue}break}}z=Zi[J[J[d>>2]+76>>2]](d)|0;if((z|0)>0){A=0;while(1){Zi[J[J[d>>2]+80>>2]](d,A,a+3248|0);w=N[f+8>>2];q=N[f>>2];s=N[f+4>>2];t=N[f+24>>2];m=N[f+16>>2];n=N[f+20>>2];B=a+3256|0;r=N[B>>2];o=N[a+3248>>2];p=N[a+3252>>2];N[B>>2]=Q(N[f+40>>2]*r)+Q(Q(N[f+32>>2]*o)+Q(p*N[f+36>>2]));J[a+3260>>2]=0;N[a+3252>>2]=Q(t*r)+Q(Q(m*o)+Q(p*n));N[a+3248>>2]=Q(w*r)+Q(Q(q*o)+Q(s*p));$y();l=J[B+4>>2];D=k<<4;y=D+334048|0;J[y+8>>2]=J[B>>2];J[y+12>>2]=l;l=J[a+3252>>2];J[y>>2]=J[a+3248>>2];J[y+4>>2]=l;r=N[e+32>>2];o=N[e>>2];p=N[e+16>>2];w=N[e+36>>2];q=N[e+4>>2];s=N[e+20>>2];t=N[e+40>>2];m=N[e+8>>2];n=N[e+24>>2];l=D+(a+1264|0)|0;J[l+12>>2]=0;C=m;x=N[a+3248>>2];m=Q(-x);u=N[a+3252>>2];v=N[B>>2];N[l+8>>2]=Q(Q(C*m)-Q(n*u))-Q(t*v);N[l+4>>2]=Q(Q(q*m)-Q(s*u))-Q(w*v);N[l>>2]=Q(Q(o*m)-Q(p*u))-Q(r*v);r=N[f+32>>2];o=N[f>>2];p=N[f+16>>2];w=N[f+36>>2];q=N[f+4>>2];s=N[f+20>>2];t=N[f+40>>2];m=N[f+8>>2];n=N[f+24>>2];l=D+(a+272|0)|0;J[l+12>>2]=0;N[l+8>>2]=Q(t*v)+Q(Q(m*x)+Q(u*n));N[l+4>>2]=Q(w*v)+Q(Q(q*x)+Q(u*s));N[l>>2]=Q(r*v)+Q(Q(o*x)+Q(u*p));k=k+1|0;A=A+1|0;if((z|0)!=(A|0)){continue}break}}Zi[J[J[c>>2]+68>>2]](c,a+1264|0,a+3248|0,k);Zi[J[J[d>>2]+68>>2]](d,a+272|0,a+2256|0,k);a:{if((k|0)<=0){q=Q(0xde0b6b000000000);o=Q(0);p=Q(0);w=Q(0);break a}A=0;q=Q(0xde0b6b000000000);w=Q(0);p=Q(0);o=Q(0);while(1){$y();y=A<<4;z=y+334048|0;s=E?Q(0):N[z+8>>2];t=N[z>>2];m=N[z+4>>2];b:{if(!(+Q(Q(s*s)+Q(Q(t*t)+Q(m*m)))>.01)){break b}l=y+(a+2256|0)|0;C=N[l+8>>2];u=N[l>>2];v=N[l+4>>2];l=y+(a+3248|0)|0;x=N[l+8>>2];r=N[l>>2];n=N[l+4>>2];n=Q(Q(s*(E?Q(0):Q(Q(N[f+56>>2]+Q(Q(N[f+40>>2]*C)+Q(Q(N[f+32>>2]*u)+Q(v*N[f+36>>2]))))-Q(N[e+56>>2]+Q(Q(N[e+40>>2]*x)+Q(Q(N[e+32>>2]*r)+Q(n*N[e+36>>2])))))))+Q(Q(t*Q(Q(N[f+48>>2]+Q(Q(N[f+8>>2]*C)+Q(Q(N[f>>2]*u)+Q(v*N[f+4>>2]))))-Q(N[e+48>>2]+Q(Q(N[e+8>>2]*x)+Q(Q(N[e>>2]*r)+Q(n*N[e+4>>2]))))))+Q(m*Q(Q(N[f+52>>2]+Q(Q(N[f+24>>2]*C)+Q(Q(N[f+16>>2]*u)+Q(v*N[f+20>>2]))))-Q(N[e+52>>2]+Q(Q(N[e+24>>2]*x)+Q(Q(N[e+16>>2]*r)+Q(n*N[e+20>>2]))))))));if(!(n>2];o=t;p=m;w=s;q=n}A=A+1|0;if((A|0)!=(k|0)){continue}break}}fz(c);fz(d);k=0;c:{if(q>2]=0;t=N[e+48>>2];m=N[e+52>>2];n=N[e+56>>2];b=J[e+12>>2];c=a- -64|0;J[c>>2]=J[e+8>>2];J[c+4>>2]=b;b=J[e+4>>2];J[a+56>>2]=J[e>>2];J[a+60>>2]=b;b=J[e+28>>2];J[a+80>>2]=J[e+24>>2];J[a+84>>2]=b;b=J[e+20>>2];J[a+72>>2]=J[e+16>>2];J[a+76>>2]=b;b=J[e+44>>2];J[a+96>>2]=J[e+40>>2];J[a+100>>2]=b;c=J[e+36>>2];b=J[e+32>>2];J[a+116>>2]=0;q=Q(q+Q(Q(r+s)+Q(.5)));N[a+112>>2]=n+Q(w*q);N[a+108>>2]=m+Q(p*q);N[a+104>>2]=t+Q(o*q);J[a+88>>2]=b;J[a+92>>2]=c;b=J[f+12>>2];J[a+128>>2]=J[f+8>>2];J[a+132>>2]=b;b=J[f+4>>2];J[a+120>>2]=J[f>>2];J[a+124>>2]=b;b=J[f+28>>2];J[a+144>>2]=J[f+24>>2];J[a+148>>2]=b;b=J[f+20>>2];J[a+136>>2]=J[f+16>>2];J[a+140>>2]=b;b=J[f+44>>2];J[a+160>>2]=J[f+40>>2];J[a+164>>2]=b;b=J[f+36>>2];J[a+152>>2]=J[f+32>>2];J[a+156>>2]=b;b=J[f+60>>2];J[a+176>>2]=J[f+56>>2];J[a+180>>2]=b;b=J[f+52>>2];J[a+168>>2]=J[f+48>>2];J[a+172>>2]=b;J[a+184>>2]=1566444395;H[a+52|0]=0;J[a+12>>2]=246908;J[d+16>>2]=0;N[d+12>>2]=-w;N[d+8>>2]=-p;N[d+4>>2]=-o;Rq(d,a+56|0,a+12|0,j);k=K[a+52|0];if((k|0)!=1){break c}s=N[a+40>>2];t=N[a+32>>2];m=N[a+36>>2];n=N[a+48>>2];J[h+12>>2]=0;n=Q(q-n);N[h+8>>2]=s-Q(w*n);N[h+4>>2]=m-Q(p*n);N[h>>2]=t-Q(o*n);b=J[a+44>>2];J[i+8>>2]=J[a+40>>2];J[i+12>>2]=b;b=J[a+36>>2];J[i>>2]=J[a+32>>2];J[i+4>>2]=b;N[g+12>>2]=F;N[g+8>>2]=w;N[g+4>>2]=p;N[g>>2]=o}Ui=a+4240|0;return k|0}function GR(a,b){var c=0,d=0,e=0,f=0,g=0,h=0,i=0,j=0,k=0,l=0,m=0,n=0,o=0,p=0,q=0;n=Ui-16|0;Ui=n;J[n+12>>2]=0;g=b;a:{b:{c:{d:{p=J[a+8>>2];d=qv(p);if(H[d+108|0]&1){b=J[d+48>>2];if(!b){break d}e=J[J[d+44>>2]+((g>>>0)%(b>>>0)<<2)>>2];if((e|0)==-1){break d}c=J[d+52>>2];while(1){b=c+P(e,12)|0;if(J[b>>2]!=(g|0)){e=J[b+8>>2];if((e|0)!=-1){continue}break d}break}e=L[b+4>>1];if((e|0)==65535){break d}while(1){c=e&65535;b=J[d+16>>2];if(c>>>0>=J[d+20>>2]-b>>1>>>0){break a}b=L[b+(c<<1)>>1];f=J[d>>2];if(b>>>0>=(J[d+4>>2]-f|0)/104>>>0){break a}b=f+P(b,104)|0;H[b+96|0]=K[b+96|0]&252;e=L[b+94>>1];if((e|0)!=65535){continue}break}break d}b=J[d+48>>2];if(!b){break d}e=J[J[d+44>>2]+((g>>>0)%(b>>>0)<<2)>>2];if((e|0)==-1){break d}f=J[d+52>>2];while(1){c=f+P(e,12)|0;if(J[c>>2]!=(g|0)){e=J[c+8>>2];if((e|0)!=-1){continue}break d}break}e:{f:{g:{c=L[c+4>>1];if((c|0)!=65535){b=J[d+4>>2];e=J[d>>2];i=(b-e|0)/104|0;while(1){h=c&65535;f=J[d+16>>2];if(h>>>0>=J[d+20>>2]-f>>1>>>0){break a}o=(b-e|0)/104|0;b=L[f+(h<<1)>>1];if(o>>>0<=b>>>0){break a}b=P(b,104)+e|0;H[b+96|0]=K[b+96|0]&252;f=J[b+76>>2];if(f){Zi[f|0](J[b>>2],J[b+8>>2],J[b+12>>2],J[b+16>>2],J[b+20>>2],0,J[b+80>>2],J[b+84>>2]);kR(d,b)}f=J[b+36>>2];if(f){Zi[f|0](b+28|0)}f=J[d+32>>2];if(!f){break c}e=L[d+38>>1]-1|0;h=e&65535;if(h>>>0>=L[d+36>>1]){break b}I[d+38>>1]=e;I[f+(h<<1)>>1]=c;e=J[d>>2];h=(b-e|0)/104|0;f=h&65535;j=J[d+4>>2];if(f>>>0>=(j-e|0)/104>>>0){break g}c=L[b+94>>1];k=P(f,104);hj(k+e|0,j-104|0,97);b=J[d+4>>2]-104|0;J[d+4>>2]=b;e=J[d>>2];if(e>>>0>b>>>0){break f}i=i-1|0;if(f>>>0>>0){j=L[(e+k|0)+92>>1];f=J[d+16>>2];if(j>>>0>=J[d+20>>2]-f>>1>>>0){break a}I[f+(j<<1)>>1]=h}if((c&65535)!=65535){continue}break}b=J[d+48>>2]}if(!b){break e}h:{i:{i=J[d+44>>2]+((g>>>0)%(b>>>0)<<2)|0;e=J[i>>2];if((e|0)!=-1){b=0;f=J[d+52>>2];c=f+P(e,12)|0;if(J[c>>2]==(g|0)){break h}break i}Z(85666,55629,340,62656);B()}while(1){b=c;e=J[b+8>>2];if((e|0)!=-1){c=f+P(e,12)|0;if(J[c>>2]!=(g|0)){continue}break h}break}Z(152754,55629,366,62656);B()}J[d+68>>2]=J[d+68>>2]-1;c=b?b+8|0:i;b=f+P(e,12)|0;J[c>>2]=J[b+8>>2];c=J[d+64>>2];J[d+64>>2]=e;J[b+8>>2]=c;break d}Z(145381,53895,537,43537);B()}Z(12682,53895,540,43537);B()}Z(113800,55629,334,62656);B()}j:{k:{l:{m:{n:{o:{if(K[g+149|0]&128){f=L[a+3266>>1];d=J[g+140>>2]&32767;if(L[g+146>>1]==32767&(f|0)!=(d|0)){break o}i=a+3264|0;e=i;c=L[a+3264>>1];if((d|0)!=(c|0)){h=J[a+1036>>2];j=J[a+1040>>2]-h>>2;b=c;while(1){if(c>>>0>=j>>>0){break a}c=J[h+(c<<2)>>2];e=c+146|0;c=L[c+146>>1];if((c|0)==(f&65535)){I[a+3266>>1]=b;f=b;b=L[e>>1]}else{b=c}c=b&65535;if((d|0)!=(c|0)){continue}break}}b=L[g+146>>1];I[e>>1]=b;if(!((e|0)!=(i|0)|(b|0)!=32767)){I[a+3266>>1]=32767}I[g+146>>1]=32767;J[g+148>>2]=J[g+148>>2]&-32769}i=J[g+84>>2];j=J[a>>2];d=a;a=0;f=0;c=Ui-32|0;Ui=c;J[c+28>>2]=0;p:{q:{h=J[g+84>>2];if(J[h+4>>2]){k=d+12|0;l=g+156|0;while(1){m=J[h>>2]+P(f,96)|0;e=J[m+16>>2];J[c+24>>2]=0;q=J[e+100>>2]&65536;b=(q>>>16|0)+a|0;if(b>>>0>M[g+152>>2]){break q}o=J[d+8>>2];J[c+8>>2]=g;J[c+4>>2]=o;J[c+12>>2]=J[k+(J[m+20>>2]<<2)>>2];m=J[e+16>>2];J[c+20>>2]=q?(a<<2)+l|0:0;J[c+16>>2]=m;Zi[J[e+32>>2]](c+4|0)|0;a=b;f=f+1|0;if(f>>>0>2]){continue}break}}Ui=c+32|0;break p}Z(12526,38296,921,18115);B()}Vs(g+104|0);if(K[g+137|0]&8){f=J[g+96>>2];e=J[g+100>>2];if(!K[874264]){nl();H[874264]=1}if(K[874164]==1){h=J[218540];Tj(h);if(!K[874264]){nl();H[874264]=1}a=J[218551];r:{if(!a){break r}a=J[J[218550]+(mxa(f,e,a)<<2)>>2];if((a|0)==-1){break r}b=J[218552];while(1){a=b+P(a,24)|0;if(J[a>>2]!=(f|0)|J[a+4>>2]!=(e|0)){a=J[a+16>>2];if((a|0)!=-1){continue}break r}break}cj(J[a+8>>2]);b=0;s:{a=J[218551];if(a){t:{u:{v:{w:{x:{k=J[218550]+(mxa(f,e,a)<<2)|0;c=J[k>>2];if((c|0)!=-1){l=J[218552];a=l+P(c,24)|0;if((f|0)!=J[a>>2]|J[a+4>>2]!=(e|0)){break x}break w}Z(85666,55689,340,62656);B()}while(1){c=J[a+16>>2];if((c|0)==-1){break v}b=a;a=l+P(c,24)|0;if(J[a>>2]!=(f|0)|J[a+4>>2]!=(e|0)){continue}break}}J[218556]=J[218556]-1;f=J[a+16>>2];if(b){break u}J[k>>2]=f;break t}Z(152754,55689,366,62656);B()}J[b+16>>2]=f}b=J[218555];J[218555]=c;J[a+16>>2]=b;break s}Z(113800,55689,334,62656);B()}}Lj(h)}}c=J[g+88>>2];if(c>>>0>2]){a=J[p>>2];Tj(J[a+3232>>2]);f=J[a+3244>>2];if(!f){break c}b=J[a+3252>>2]-1|0;if(b>>>0>=M[a+3248>>2]){break j}J[a+3252>>2]=b;J[f+(b<<2)>>2]=c;Lj(J[a+3232>>2])}gt(d,g);a=d+(K[g+136|0]<<4)|0;b=J[a+1084>>2];a=J[a+1080>>2];if((b|0)==(a|0)){break n}if((L[g+142>>1]&32767)>>>0>=b-a>>1>>>0){break m}iR(d,g);zy(d,g);kt(d,g);Hy(d,J[g+148>>2]);if((i|0)!=296128){vj(j,i)}a=J[d+1052>>2];if(!a){break c}b=L[d+1058>>1]-1|0;c=b&65535;if(c>>>0>=L[d+1056>>1]){break j}f=J[g+140>>2];I[d+1058>>1]=b;I[a+(c<<1)>>1]=f&32767;b=J[g+140>>2]&32767;a=J[d+1036>>2];if(b>>>0>=J[d+1040>>2]-a>>2>>>0){break a}c=0;J[a+(b<<2)>>2]=0;b=J[d+3176>>2];i=J[d+3180>>2];y:{if((b|0)==(i|0)){break y}f=i-b>>2;e=0;while(1){a=c;c=a+1|0;h=(a<<2)+b|0;e=J[h>>2]==(g|0)|e;if(!(!(e&1)|a>>>0>=f-1>>>0)){if(c>>>0>=f>>>0){break a}J[h>>2]=J[(c<<2)+b>>2];i=J[d+3180>>2];b=J[d+3176>>2]}f=i-b>>2;if(f>>>0>c>>>0){continue}break}if(!(e&1)){break y}if((b|0)==(i|0)){break l}J[d+3180>>2]=i-4}cj(ij(g,204,160));if(M[d+3168>>2]>L[d+1058>>1]){break k}Ui=n+16|0;return}Z(85573,38296,1941,62164);B()}Z(112463,38296,1984,70422);B()}Z(145303,38296,1985,70422);B()}Z(112533,53895,572,43112);B()}Z(145129,38296,2022,70422);B()}break b}Z(49493,54340,140,53220);B()}Z(2650,54340,141,53220);B()}Z(145396,53895,487,84789);B()}function FK(a,b){var c=0,d=0,e=0,f=0,g=0,h=0,i=0,j=0,k=0,l=0,m=0,n=0,o=0,p=0;j=Ui-48|0;Ui=j;J[j+8>>2]=0;a:{b:{c=0;c:{if((b|0)<0){break c}n=a+163900|0;m=a+88112|0;while(1){d:{e:{f:{g:{d=b&65535;g=P(d,72)+m|0;switch(J[g+60>>2]+17|0){case 1:break f;case 0:break g;default:break d}}J[j+44>>2]=0;if(J[g+64>>2]){break b}if(!J[g+8>>2]){J[g+60>>2]=-7;b=I[g+32>>1];if((b&65535)!=65535){c=P(b,72)+m|0;d=L[c+38>>1];if(!d){break a}I[c+38>>1]=d-1}if(!yx(a,b)){break d}c=1;break c}h=J[g+40>>2];if(h){f=j+12|0;k=-2;b=J[a+163892>>2];h:{if(!b|!h|(h|0)!=J[b+72>>2]){break h}b=J[b>>2];d=b+8392|0;i=Ui-48|0;Ui=i;e=J[h+4>>2];c=J[h+16>>2];if(J[c+36>>2]!=-1){c=J[c+36>>2]}else{c=-1}c=KK(b,e,c,h+28|0,h+32|0,d);H[f+12|0]=0;J[f+4>>2]=-17;J[f+8>>2]=0;J[f>>2]=c;i:{j:{k:{l:{m:{if(c){break m}k=J[h+32>>2];n:{if(k){e=J[d>>2];c=J[d+4>>2];break n}if(H[d+12|0]&1){break l}lj(1,1,d,d+8|0,d+4|0);e=J[d>>2];J[d+4>>2]=e;k=J[h+32>>2];c=e}if((c-e|0)!=(k|0)){break k}c=J[h+28>>2];if(c>>>0>>0){break j}l=J[h+20>>2];if(l){J[i+8>>2]=b;b=J[h+24>>2];J[i+20>>2]=e;J[i+12>>2]=b;J[i+24>>2]=k;J[i+28>>2]=c&1073741823|((c|0)!=(k|0))<<30|-2147483648;b=J[h+4>>2];J[i+44>>2]=f+12;J[i+40>>2]=f+8;J[i+32>>2]=h+8;J[i+16>>2]=b;J[f+4>>2]=Zi[l|0](i+8|0);break m}J[f+4>>2]=0}Ui=i+48|0;break i}Z(151729,53895,501,2284);B()}Z(59599,41281,45,69876);B()}Z(59950,41281,46,69876);B()}J[j+36>>2]=J[h+32>>2];J[j+32>>2]=J[h+28>>2];J[j+40>>2]=J[d>>2];k=0;if(K[f+12|0]!=1){break h}H[d|0]=0;H[d+1|0]=0;H[d+2|0]=0;H[d+3|0]=0;H[d+4|0]=0;H[d+5|0]=0;H[d+6|0]=0;H[d+7|0]=0;H[d+8|0]=0;H[d+9|0]=0;H[d+10|0]=0;H[d+11|0]=0;H[d+12|0]=0;H[d+13|0]=0;H[d+14|0]=0;H[d+15|0]=0}if((k|0)==-1){break d}H[a+181684|0]=0;l=J[j+32>>2];k=J[j+36>>2];o=J[j+40>>2];GK(a);o:{p:{b=J[j+12>>2];if(b){break p}b=J[j+16>>2];if(b){break p}b=J[g+60>>2];break o}J[g+60>>2]=b}q:{if((b|0)==-17){break q}WB(a,g);b=I[g+32>>1];if((b|0)==-1){break q}b=P(b,72)+m|0;c=L[b+38>>1];if(!c){break a}I[b+38>>1]=c-1}J[g+56>>2]=J[j+20>>2];if(L[g+34>>1]==65535){c=J[g+60>>2];if((c|0)==-17){_B(a,g,o,k,l)}UB(a,J[g+24>>2],J[g+28>>2]);b=J[g+40>>2];J[J[a+163892>>2]+72>>2]=0;J[b>>2]=0;J[b+4>>2]=0;J[g+40>>2]=0;yx(a,L[g+32>>1]);if((c|0)!=-17){break d}c=1;break c}b=J[a+181680>>2];h=0;p=k+2|0;r:{s:{t:{u:{v:{i=k+3&-2;if(i>>>0<=8192){e=J[b+96>>2];if(e){break v}c=0;break u}e=sj(p);I[e>>1]=8;break r}f=J[b+4>>2];if(i>>>0<=f>>>0){c=0;break s}f=J[b+8>>2];h=i+f|0;if(h>>>0<=16384){c=0;break t}h=8;c=1}w:{e=J[b+100>>2];if(!e){break w}d=b+12|0;f=J[b+16>>2];if(i>>>0<=f>>>0){c=1;b=d;break s}c=h;f=J[b+20>>2];h=i+f|0;if(h>>>0>=16385){break w}c=1;b=d;break t}e=J[b+104>>2];x:{if(e){d=b+24|0;f=J[b+28>>2];if(i>>>0<=f>>>0){c=2;b=d;break s}f=J[b+32>>2];h=i+f|0;if(h>>>0>=16385){break x}c=2;b=d;break t}c=(c|0)==8?2:c}e=J[b+108>>2];y:{if(e){d=b+36|0;f=J[b+40>>2];if(i>>>0<=f>>>0){c=3;b=d;break s}f=J[b+44>>2];h=i+f|0;if(h>>>0>=16385){break y}c=3;b=d;break t}c=(c|0)==8?3:c}e=J[b+112>>2];z:{if(e){d=b+48|0;f=J[b+52>>2];if(i>>>0<=f>>>0){c=4;b=d;break s}f=J[b+56>>2];h=i+f|0;if(h>>>0>=16385){break z}c=4;b=d;break t}c=(c|0)==8?4:c}e=J[b+116>>2];A:{if(e){d=b+60|0;f=J[b+64>>2];if(i>>>0<=f>>>0){c=5;b=d;break s}f=J[b+68>>2];h=i+f|0;if(h>>>0>=16385){break A}c=5;b=d;break t}c=(c|0)==8?5:c}e=J[b+120>>2];B:{if(e){d=b+72|0;f=J[b+76>>2];if(i>>>0<=f>>>0){c=6;b=d;break s}f=J[b+80>>2];h=i+f|0;if(h>>>0>=16385){break B}c=6;b=d;break t}c=(c|0)==8?6:c}C:{D:{E:{e=J[b+124>>2];if(e){d=b+84|0;f=J[b+88>>2];if(i>>>0<=f>>>0){c=7;b=d;break s}f=J[b+92>>2];h=i+f|0;if(h>>>0>=16385){break E}c=7;b=d;break t}c=(c|0)==8?7:c;break D}if((c|0)==8){break C}}e=nj(16384);d=P(c,12)+b|0;J[d+8>>2]=i;J[d>>2]=1;J[d+4>>2]=0;I[e>>1]=c;J[(b+96|0)+(c<<2)>>2]=e;break r}e=sj(p);I[e>>1]=8;break r}J[b+8>>2]=h;J[b>>2]=J[b>>2]+1;e=e+f|0;I[e>>1]=c;break r}d=f-i|0;J[b+4>>2]=d;J[b>>2]=J[b>>2]+1;e=d+e|0;I[e>>1]=c}b=e+2|0;J[g+44>>2]=b;hj(b,o,k);J[g+52>>2]=l;J[g+48>>2]=k;b=J[g+40>>2];J[J[a+163892>>2]+72>>2]=0;J[b>>2]=0;J[b+4>>2]=0;J[g+40>>2]=0;break d}if(J[g+44>>2]){if(!FK(a,I[g+34>>1])){break d}c=1;break c}b=qr(J[a+163896>>2],J[g+24>>2],J[g+28>>2]);if(b){J[b+28>>2]=J[b+28>>2]+1;b=J[b+8>>2];J[g+60>>2]=0;J[g+64>>2]=b;WB(a,g);b=L[g+32>>1];if((b|0)!=65535){c=P(b<<16>>16,72)+m|0;d=L[c+38>>1];if(!d){break a}I[c+38>>1]=d-1}if(!yx(a,b)){break d}c=1;break c}if(K[a+181684|0]){break d}e=J[a+163904>>2];F:{if(!e){break F}c=J[g+24>>2];i=J[g+28>>2];b=J[J[n>>2]+(mxa(c,i,e)<<2)>>2];if((b|0)==-1){break F}e=J[a+163908>>2];while(1){b=e+(b<<4)|0;if((c|0)==J[b>>2]&(i|0)==J[b+4>>2]){break d}b=J[b+12>>2];if((b|0)!=-1){continue}break}}J[j+20>>2]=0;J[j+24>>2]=0;J[j+28>>2]=0;J[j+16>>2]=d;J[j+12>>2]=a;b=J[g+8>>2];J[j+24>>2]=J[b+16>>2];c=J[b+12>>2];J[j+20>>2]=b;J[j+28>>2]=c;c=J[g>>2];d=J[g+4>>2];h=0;b=J[a+163892>>2];if(!J[b+72>>2]){J[b+8>>2]=d;J[b+4>>2]=c;h=b+4|0;J[b+72>>2]=h;c=J[j+16>>2];J[b+12>>2]=J[j+12>>2];J[b+16>>2]=c;c=J[j+24>>2];J[b+20>>2]=J[j+20>>2];J[b+24>>2]=c;J[b+28>>2]=J[j+28>>2]}J[g+40>>2]=h;if(!h){break e}c=J[g+24>>2];d=J[g+28>>2];G:{b=J[a+163904>>2];H:{if(!b){break H}b=J[J[n>>2]+(mxa(c,d,b)<<2)>>2];if((b|0)==-1){break H}e=J[a+163908>>2];while(1){a=e+(b<<4)|0;if((c|0)==J[a>>2]&(d|0)==J[a+4>>2]){break G}b=J[a+12>>2];if((b|0)!=-1){continue}break}}H[j+40|0]=1;BN(n,c,d,j+40|0);c=1;break c}Z(111186,40201,295,18722);B()}if(!yx(a,L[g+32>>1])){break d}c=1;break c}H[a+181684|0]=1}b=I[g+36>>1];if((b|0)>=0){continue}break}c=0}Ui=j+48|0;return c}Z(69967,40201,796,36303);B()}Z(112042,40201,319,12185);B()}function TT(a,b,c,d,e,f){var g=0,h=0,i=Q(0),j=Q(0),k=Q(0),l=Q(0),m=Q(0),n=Q(0),o=Q(0),p=Q(0),q=Q(0),r=Q(0),s=Q(0),t=Q(0),u=Q(0),v=Q(0),w=Q(0),x=0,y=0,z=Q(0),A=Q(0),B=Q(0),C=Q(0),D=Q(0),E=Q(0),F=0,G=Q(0),I=Q(0),L=Q(0);g=Ui-656|0;Ui=g;y=g+604|0;h=y;J[h+4>>2]=35;J[h+8>>2]=0;J[h>>2]=246356;J[h+44>>2]=1025758986;J[h+20>>2]=1065353216;J[h+24>>2]=0;J[h+12>>2]=1065353216;J[h+16>>2]=1065353216;J[h>>2]=246264;J[h+44>>2]=0;J[h+28>>2]=0;J[h+4>>2]=8;J[h>>2]=246688;h=J[d+4>>2];a:{if((h|0)<=19){J[g+596>>2]=0;J[g+600>>2]=0;J[g+428>>2]=244680;N[g+592>>2]=N[f+4>>2];H[g+400|0]=0;J[g+376>>2]=953267991;h=g+48|0;J[h+12>>2]=d;J[h+8>>2]=y;J[h+4>>2]=g+68;J[h>>2]=246988;b:{if(!FE(h,a,b,e,e,g+428|0)){break b}i=N[g+568>>2];j=N[g+560>>2];l=N[g+564>>2];if(!(Q(Q(i*i)+Q(Q(j*j)+Q(l*l)))>Q(9999999747378752e-20))){break b}t=N[g+592>>2];if(!(t>2])){break b}m=N[a+40>>2];p=N[a+32>>2];u=N[a+36>>2];w=N[a+8>>2];v=N[a>>2];q=N[a+4>>2];r=N[a+24>>2];s=N[a+16>>2];k=N[a+20>>2];J[g+572>>2]=0;m=Q(Q(m*i)+Q(Q(p*j)+Q(l*u)));p=Q(Q(w*i)+Q(Q(v*j)+Q(l*q)));j=Q(Q(r*i)+Q(Q(s*j)+Q(l*k)));i=Q(Q(1)/Q(Y(Q(Q(m*m)+Q(Q(p*p)+Q(j*j))))));N[g+568>>2]=m*i;N[g+564>>2]=j*i;N[g+560>>2]=p*i;J[g+24>>2]=0;J[g+20>>2]=c;a=J[g+572>>2];J[g+36>>2]=J[g+568>>2];J[g+40>>2]=a;a=J[g+564>>2];J[g+28>>2]=J[g+560>>2];J[g+32>>2]=a;N[g+44>>2]=t;Q(Zi[J[J[f>>2]+12>>2]](f,g+20|0,1))}break a}if(h-21>>>0<=8){i=N[e+8>>2];q=Q(-N[e+48>>2]);j=N[e+24>>2];r=N[e+52>>2];l=N[e+40>>2];s=N[e+56>>2];m=Q(Q(Q(i*q)-Q(j*r))-Q(l*s));p=N[e+4>>2];t=N[e+20>>2];u=N[e+36>>2];w=Q(Q(Q(p*q)-Q(t*r))-Q(u*s));v=N[e>>2];k=Q(v*q);q=N[e+16>>2];k=Q(k-Q(q*r));r=N[e+32>>2];s=Q(k-Q(r*s));if((h|0)==21){k=N[a+56>>2];n=N[a+48>>2];o=N[a+52>>2];J[g+440>>2]=0;N[g+436>>2]=m+Q(Q(l*k)+Q(Q(i*n)+Q(j*o)));N[g+432>>2]=w+Q(Q(u*k)+Q(Q(p*n)+Q(t*o)));N[g+428>>2]=s+Q(Q(r*k)+Q(Q(v*n)+Q(q*o)));k=N[b+56>>2];n=N[b+48>>2];o=N[b+52>>2];J[g+32>>2]=0;N[g+28>>2]=m+Q(Q(l*k)+Q(Q(i*n)+Q(j*o)));N[g+24>>2]=w+Q(Q(u*k)+Q(Q(p*n)+Q(t*o)));N[g+20>>2]=s+Q(Q(r*k)+Q(Q(v*n)+Q(q*o)));h=g+428|0;x=g+20|0;a=WS(g+68|0,h,x,J[f+16>>2]);J[a+52>>2]=d;J[a+48>>2]=c;J[a+44>>2]=f;J[a>>2]=244704;c=J[e+12>>2];b=a- -64|0;J[b>>2]=J[e+8>>2];J[b+4>>2]=c;b=J[e+4>>2];J[a+56>>2]=J[e>>2];J[a+60>>2]=b;b=J[e+28>>2];J[a+80>>2]=J[e+24>>2];J[a+84>>2]=b;b=J[e+20>>2];J[a+72>>2]=J[e+16>>2];J[a+76>>2]=b;b=J[e+44>>2];J[a+96>>2]=J[e+40>>2];J[a+100>>2]=b;b=J[e+36>>2];J[a+88>>2]=J[e+32>>2];J[a+92>>2]=b;b=J[e+60>>2];J[a+112>>2]=J[e+56>>2];J[a+116>>2]=b;b=J[e+52>>2];J[a+104>>2]=J[e+48>>2];J[a+108>>2]=b;N[a+40>>2]=N[f+4>>2];b=Ui-16|0;Ui=b;c=J[d+48>>2];J[b+12>>2]=a;J[b+8>>2]=c;J[b+4>>2]=245936;c=J[d+52>>2];d=b+4|0;a=Ui-32|0;Ui=a;J[a+24>>2]=0;J[a+28>>2]=0;J[a+16>>2]=0;J[a+20>>2]=0;J[a+8>>2]=0;J[a+12>>2]=0;J[a>>2]=0;J[a+4>>2]=0;c:{if(K[c+60|0]==1){iT(c,d,h,x,a+16|0,a,J[c+56>>2]);break c}hT(c,d,h,x,a+16|0,a)}Ui=a+32|0;Ui=b+16|0;break a}k=N[a+56>>2];n=N[a+48>>2];o=N[a+52>>2];N[g+436>>2]=m+Q(Q(l*k)+Q(Q(i*n)+Q(j*o)));J[g+440>>2]=0;N[g+432>>2]=w+Q(Q(u*k)+Q(Q(p*n)+Q(t*o)));N[g+428>>2]=s+Q(Q(r*k)+Q(Q(v*n)+Q(q*o)));k=N[b+56>>2];n=N[b+48>>2];o=N[b+52>>2];J[g+32>>2]=0;N[g+28>>2]=m+Q(Q(l*k)+Q(Q(i*n)+Q(j*o)));N[g+24>>2]=w+Q(Q(u*k)+Q(Q(p*n)+Q(t*o)));N[g+20>>2]=s+Q(Q(r*k)+Q(Q(v*n)+Q(q*o)));a=WS(g+68|0,g+428|0,g+20|0,J[f+16>>2]);J[a+52>>2]=d;J[a+48>>2]=c;J[a+44>>2]=f;J[a>>2]=244728;c=J[e+12>>2];b=a- -64|0;J[b>>2]=J[e+8>>2];J[b+4>>2]=c;b=J[e+4>>2];J[a+56>>2]=J[e>>2];J[a+60>>2]=b;b=J[e+28>>2];J[a+80>>2]=J[e+24>>2];J[a+84>>2]=b;b=J[e+20>>2];J[a+72>>2]=J[e+16>>2];J[a+76>>2]=b;b=J[e+44>>2];J[a+96>>2]=J[e+40>>2];J[a+100>>2]=b;b=J[e+36>>2];J[a+88>>2]=J[e+32>>2];J[a+92>>2]=b;b=J[e+60>>2];J[a+112>>2]=J[e+56>>2];J[a+116>>2]=b;b=J[e+52>>2];J[a+104>>2]=J[e+48>>2];J[a+108>>2]=b;N[a+40>>2]=N[f+4>>2];b=J[g+440>>2];J[g+56>>2]=J[g+436>>2];J[g+60>>2]=b;b=J[g+432>>2];J[g+48>>2]=J[g+428>>2];J[g+52>>2]=b;i=N[g+20>>2];if(i>2]){N[g+48>>2]=i}j=N[g+24>>2];if(j>2]){N[g+52>>2]=j}l=N[g+28>>2];if(l>2]){N[g+56>>2]=l}m=N[g+32>>2];if(m>2]){N[g+60>>2]=m}b=J[g+440>>2];J[g+8>>2]=J[g+436>>2];J[g+12>>2]=b;b=J[g+432>>2];J[g>>2]=J[g+428>>2];J[g+4>>2]=b;if(i>N[g>>2]){N[g>>2]=i}if(j>N[g+4>>2]){N[g+4>>2]=j}if(l>N[g+8>>2]){N[g+8>>2]=l}if(m>N[g+12>>2]){N[g+12>>2]=m}Zi[J[J[d>>2]+60>>2]](d,a,g+48|0,g);break a}if((h|0)!=31|J[d+16>>2]<=0){break a}F=J[c+192>>2];while(1){h=J[d+24>>2]+P(x,80)|0;y=J[h+64>>2];q=N[h+56>>2];r=N[h+48>>2];s=N[h+52>>2];k=N[h+32>>2];n=N[h>>2];o=N[h+16>>2];z=N[h+36>>2];A=N[h+4>>2];B=N[h+20>>2];C=N[h+40>>2];D=N[h+8>>2];E=N[h+24>>2];G=N[e+48>>2];I=N[e+52>>2];L=N[e+56>>2];i=N[e+8>>2];j=N[e>>2];l=N[e+4>>2];m=N[e+24>>2];p=N[e+16>>2];t=N[e+20>>2];u=N[e+40>>2];w=N[e+32>>2];v=N[e+36>>2];J[g+128>>2]=0;J[g+112>>2]=0;J[g+96>>2]=0;J[g+80>>2]=0;N[g+108>>2]=Q(C*u)+Q(Q(D*w)+Q(E*v));N[g+104>>2]=Q(z*u)+Q(Q(A*w)+Q(B*v));N[g+100>>2]=Q(k*u)+Q(Q(n*w)+Q(o*v));N[g+92>>2]=Q(C*m)+Q(Q(D*p)+Q(E*t));N[g+88>>2]=Q(z*m)+Q(Q(A*p)+Q(B*t));N[g+84>>2]=Q(k*m)+Q(Q(n*p)+Q(o*t));N[g+76>>2]=Q(C*i)+Q(Q(D*j)+Q(E*l));N[g+72>>2]=Q(z*i)+Q(Q(A*j)+Q(B*l));N[g+68>>2]=Q(k*i)+Q(Q(n*j)+Q(o*l));N[g+124>>2]=L+Q(Q(u*q)+Q(Q(w*r)+Q(s*v)));N[g+120>>2]=I+Q(Q(m*q)+Q(Q(p*r)+Q(s*t)));N[g+116>>2]=G+Q(Q(i*q)+Q(Q(j*r)+Q(s*l)));J[c+192>>2]=y;J[g+444>>2]=0;J[g+436>>2]=0;J[g+440>>2]=-65535;J[g+448>>2]=x;J[g+428>>2]=244752;J[g+452>>2]=f;N[g+432>>2]=N[f+4>>2];TT(a,b,c,y,g+68|0,g+428|0);J[c+192>>2]=F;x=x+1|0;if((x|0)>2]){continue}break}}Ui=g+656|0}function RT(a,b){var c=0,d=0,e=0,f=0,g=0,h=0,i=0,j=0,k=0,l=0,m=0,n=0,o=0,p=0,q=0,r=0,s=0;f=Ui-96|0;Ui=f;m=J[a+8>>2];if((m|0)>0){while(1){g=J[J[a+16>>2]+(c<<2)>>2];if(J[g+232>>2]==1){Zi[J[J[g>>2]+24>>2]](g,b);m=J[a+8>>2]}c=c+1|0;if((c|0)<(m|0)){continue}break}}J[f+28>>2]=0;H[f+32|0]=1;H[f+52|0]=1;J[f+20>>2]=0;J[f+24>>2]=0;J[f+48>>2]=0;H[f+72|0]=1;J[f+40>>2]=0;J[f+44>>2]=0;J[f+68>>2]=0;H[f+92|0]=1;J[f+60>>2]=0;J[f+64>>2]=0;J[f+88>>2]=0;J[f+80>>2]=0;J[f+84>>2]=0;a:{if((m|0)<=0){break a}while(1){g=J[J[J[a+16>>2]+(r<<2)>>2]+192>>2];J[f+12>>2]=g;c=g+(g<<15^-1)|0;c=P(c>>10^c,9);c=c>>6^c;c=(c<<11^-1)+c|0;c=J[f+64>>2]-1&(c>>16^c);b:{c:{if(c>>>0>=M[f+20>>2]){break c}c=J[J[f+28>>2]+(c<<2)>>2];if((c|0)==-1){break c}d=J[f+48>>2];e=J[f+88>>2];while(1){if((g|0)!=J[e+(c<<3)>>2]){c=J[d+(c<<2)>>2];if((c|0)!=-1){continue}break c}break}if(J[f+68>>2]){break b}}J[f+4>>2]=g;g=0;d:{e:{d=f+16|0;m=J[d+48>>2];c=J[f+4>>2];e=(c<<15^-1)+c|0;e=P(e>>10^e,9);e=e>>6^e;e=(e<<11^-1)+e|0;o=m-1&(e>>16^e);f:{if(o>>>0>=M[d+4>>2]){break f}e=J[J[d+12>>2]+(o<<2)>>2];if((e|0)==-1){break f}j=J[d+32>>2];h=J[d+72>>2];while(1){if((c|0)==J[h+(e<<3)>>2]){break e}e=J[j+(e<<2)>>2];if((e|0)!=-1){continue}break}}s=J[d+44>>2];c=s;g:{if((m|0)!=(c|0)){break g}c=m;i=c?c<<1:1;if((c|0)>=(i|0)){break g}h:{if(!i){j=0;break h}j=Yj(i<<2);c=J[d+44>>2]}i:{if((c|0)<=0){break i}h=0;e=0;if(c>>>0>=4){n=c&2147483644;while(1){l=e<<2;J[l+j>>2]=J[l+J[d+52>>2]>>2];k=l|4;J[k+j>>2]=J[k+J[d+52>>2]>>2];k=l|8;J[k+j>>2]=J[k+J[d+52>>2]>>2];l=l|12;J[l+j>>2]=J[l+J[d+52>>2]>>2];e=e+4|0;g=g+4|0;if((n|0)!=(g|0)){continue}break}}g=c&3;if(!g){break i}while(1){l=e<<2;J[l+j>>2]=J[l+J[d+52>>2]>>2];e=e+1|0;h=h+1|0;if((g|0)!=(h|0)){continue}break}}g=J[d+52>>2];if(!(!g|K[d+56|0]!=1)){if(g){J[83765]=J[83765]+1;Zi[J[61751]](J[g-4>>2])}c=J[d+44>>2]}J[d+52>>2]=j;H[d+56|0]=1;J[d+48>>2]=i}J[J[d+52>>2]+(c<<2)>>2]=J[f+12>>2];J[d+44>>2]=c+1;c=J[d+64>>2];j:{if((c|0)!=J[d+68>>2]){break j}l=c?c<<1:1;if((l|0)<=(c|0)){break j}k:{if(!l){j=0;break k}j=Yj(l<<3);c=J[d+64>>2]}l:{if((c|0)<=0){break l}h=0;e=0;if(c>>>0>=4){n=c&2147483644;g=0;while(1){i=e<<3;k=i+j|0;p=i+J[d+72>>2]|0;q=J[p+4>>2];J[k>>2]=J[p>>2];J[k+4>>2]=q;k=i|8;p=k+j|0;k=k+J[d+72>>2]|0;q=J[k+4>>2];J[p>>2]=J[k>>2];J[p+4>>2]=q;k=i|16;p=k+j|0;k=k+J[d+72>>2]|0;q=J[k+4>>2];J[p>>2]=J[k>>2];J[p+4>>2]=q;i=i|24;k=i+j|0;i=i+J[d+72>>2]|0;p=J[i+4>>2];J[k>>2]=J[i>>2];J[k+4>>2]=p;e=e+4|0;g=g+4|0;if((n|0)!=(g|0)){continue}break}}c=c&3;if(!c){break l}while(1){g=e<<3;i=g+j|0;g=g+J[d+72>>2]|0;n=J[g+4>>2];J[i>>2]=J[g>>2];J[i+4>>2]=n;e=e+1|0;h=h+1|0;if((c|0)!=(h|0)){continue}break}}c=J[d+72>>2];if(!(c?!c|K[d+76|0]!=1:1)){J[83765]=J[83765]+1;Zi[J[61751]](J[c-4>>2])}J[d+72>>2]=j;H[d+76|0]=1;J[d+68>>2]=l;c=J[d+64>>2]}g=J[f+8>>2];c=J[d+72>>2]+(c<<3)|0;J[c>>2]=J[f+4>>2];J[c+4>>2]=g;J[d+64>>2]=J[d+64>>2]+1;h=J[d+48>>2];if((h|0)>(m|0)){e=0;j=0;l=0;o=0;m=J[d+4>>2];m:{if((m|0)>=(h|0)){break m}n:{if((h|0)<=J[d+8>>2]){e=J[d+12>>2];break n}if(h){e=Yj(h<<2);c=J[d+4>>2]}else{c=m}g=J[d+12>>2];o:{p:{if((c|0)>0){if(c>>>0>=4){n=c&2147483644;while(1){i=j<<2;J[i+e>>2]=J[g+i>>2];k=i|4;J[k+e>>2]=J[g+k>>2];k=i|8;J[k+e>>2]=J[g+k>>2];i=i|12;J[i+e>>2]=J[g+i>>2];j=j+4|0;l=l+4|0;if((n|0)!=(l|0)){continue}break}}c=c&3;if(!c){break p}while(1){i=j<<2;J[i+e>>2]=J[g+i>>2];j=j+1|0;o=o+1|0;if((c|0)!=(o|0)){continue}break}break p}if(g){break p}break o}if(g?K[d+16|0]==1:0){J[83765]=J[83765]+1;Zi[J[61751]](J[g-4>>2])}}J[d+12>>2]=e;H[d+16|0]=1;J[d+8>>2]=h}c=m<<2;n=h<<2;ij(c+e|0,0,n-c|0);J[d+4>>2]=h;g=J[d+24>>2];if((g|0)<(h|0)){q:{if((h|0)<=J[d+28>>2]){e=J[d+32>>2];break q}r:{if(!h){e=0;c=g;break r}e=Yj(n);c=J[d+24>>2]}i=J[d+32>>2];s:{t:{if((c|0)>0){o=0;j=0;if(c>>>0>=4){p=c&2147483644;l=0;while(1){k=j<<2;J[k+e>>2]=J[i+k>>2];q=k|4;J[q+e>>2]=J[i+q>>2];q=k|8;J[q+e>>2]=J[i+q>>2];k=k|12;J[k+e>>2]=J[i+k>>2];j=j+4|0;l=l+4|0;if((p|0)!=(l|0)){continue}break}}c=c&3;if(!c){break t}while(1){l=j<<2;J[l+e>>2]=J[i+l>>2];j=j+1|0;o=o+1|0;if((c|0)!=(o|0)){continue}break}break t}if(i){break t}break s}if(i?K[d+36|0]==1:0){J[83765]=J[83765]+1;Zi[J[61751]](J[i-4>>2])}}J[d+32>>2]=e;H[d+36|0]=1;J[d+28>>2]=h}c=g<<2;ij(c+e|0,0,n-c|0)}J[d+24>>2]=h;if((h|0)>0){ij(J[d+12>>2],255,n);ij(J[d+32>>2],255,n)}if((m|0)<=0){break m}c=J[d+32>>2];g=J[d+12>>2];e=J[d+72>>2];j=0;while(1){h=J[e+(j<<3)>>2];h=(h<<15^-1)+h|0;h=P(h>>10^h,9);h=h>>6^h;h=(h<<11^-1)+h|0;h=g+((J[d+48>>2]-1&(h>>16^h))<<2)|0;J[c+(j<<2)>>2]=J[h>>2];J[h>>2]=j;j=j+1|0;if((m|0)!=(j|0)){continue}break}}c=J[f+4>>2];c=(c<<15^-1)+c|0;c=P(c>>10^c,9);c=c>>6^c;c=(c<<11^-1)+c|0;o=J[d+48>>2]-1&(c>>16^c)}c=J[d+12>>2]+(o<<2)|0;J[J[d+32>>2]+(s<<2)>>2]=J[c>>2];J[c>>2]=s;break d}J[J[d+52>>2]+(e<<2)>>2]=J[f+12>>2]}c=J[f+12>>2];Zi[J[J[c>>2]+56>>2]](c,b);m=J[a+8>>2]}r=r+1|0;if((r|0)<(m|0)){continue}break}a=J[f+88>>2];if(!a|K[f+92|0]!=1){break a}if(a){J[83765]=J[83765]+1;Zi[J[61751]](J[a-4>>2])}}J[f+88>>2]=0;H[f+92|0]=1;J[f+80>>2]=0;J[f+84>>2]=0;a=J[f+68>>2];if(!(a?!a|K[f+72|0]!=1:1)){J[83765]=J[83765]+1;Zi[J[61751]](J[a-4>>2])}J[f+68>>2]=0;H[f+72|0]=1;J[f+60>>2]=0;J[f+64>>2]=0;a=J[f+48>>2];if(!(a?!a|K[f+52|0]!=1:1)){J[83765]=J[83765]+1;Zi[J[61751]](J[a-4>>2])}J[f+48>>2]=0;H[f+52|0]=1;J[f+40>>2]=0;J[f+44>>2]=0;a=J[f+28>>2];if(!(a?!a|K[f+32|0]!=1:1)){J[83765]=J[83765]+1;Zi[J[61751]](J[a-4>>2])}Ui=f+96|0}function JP(a,b,c){var d=0,e=0,f=0,g=0,h=0,i=0,j=Q(0),k=0;f=Ui-640|0;Ui=f;d=J[c+4>>2];h=J[c>>2];N[f+104>>2]=N[c+8>>2];J[f+96>>2]=h;J[f+100>>2]=d;g=f+96|0;a:{b:{c:{d:{e=b&65535;d=J[a+32>>2];if(e>>>0<(J[a+36>>2]-d|0)/672>>>0){d=d+P(e,672)|0;if(L[d+648>>1]!=(b>>>16|0)){break b}if((e|0)!=L[d+650>>1]){break a}e=J[g+4>>2];i=J[g>>2];j=N[g+8>>2];J[d+12>>2]=1065353216;N[d+8>>2]=j;J[d>>2]=i;J[d+4>>2]=e;J[d+476>>2]=J[d+476>>2]|4194304;break d}break c}Pn(a,b,10,c+16|0);d=J[c+20>>2];h=J[c+16>>2];N[f+616>>2]=N[c+24>>2];J[f+608>>2]=h;J[f+612>>2]=d;d=f+624|0;Kn(d,f+608|0);h=J[f+628>>2];J[f+96>>2]=J[f+624>>2];J[f+100>>2]=h;h=J[f+636>>2];J[f+104>>2]=J[f+632>>2];J[f+108>>2]=h;h=1;Pn(a,b,1,g);Pn(a,b,2,c+32|0);e=J[c+68>>2];g=J[c+64>>2];N[f+632>>2]=N[c+72>>2];J[f+624>>2]=g;J[f+628>>2]=e;N[f+636>>2]=N[c+232>>2];Pn(a,b,3,d);Pn(a,b,4,c+48|0);e=J[c+132>>2];g=J[c+128>>2];N[f+632>>2]=N[c+136>>2];J[f+624>>2]=g;J[f+628>>2]=e;N[f+636>>2]=N[c+236>>2];Pn(a,b,5,d);e=J[c+148>>2];g=J[c+144>>2];N[f+632>>2]=N[c+152>>2];J[f+624>>2]=g;J[f+628>>2]=e;N[f+636>>2]=N[c+240>>2];Pn(a,b,6,d);Pn(a,b,7,c+192|0);aO(a,b,J[c+268>>2]);d=J[c+92>>2];e:{if(!(!d|!K[d|0])){e=yj(d);h=e+1|0;if(h>>>0>=513){h=J[c+100>>2];J[f+60>>2]=512;J[f+56>>2]=511-e;J[f+48>>2]=d;J[f+52>>2]=h?h:74777;dj(4,88458,131438,f+48|0);h=0;break e}e=f+96|0;ek(e,d,h);d=Hk(e,47);if(d){H[d|0]=0;d=d+1|0}else{d=0}g=f+96|0;h=$C(a,b,g);if(h){e=J[c+100>>2];J[f+88>>2]=h;J[f+84>>2]=e?e:74777;J[f+80>>2]=g;dj(4,88458,130399,f+80|0)}h=!h;if(!d){break e}e=_x(a,b,bj(d),Yi,Q(0),Q(1),0,0,0);if(e){h=J[c+100>>2];J[f+76>>2]=e;J[f+64>>2]=d;J[f+72>>2]=h?h:74777;J[f+68>>2]=f+96;dj(4,88458,130317,f- -64|0);h=0}f:{d=b&65535;e=J[a+32>>2];if(d>>>0<(J[a+36>>2]-e|0)/672>>>0){e=e+P(d,672)|0;if(L[e+648>>1]!=(b>>>16|0)){break b}if((d|0)!=L[e+650>>1]){break a}d=-1;if(!(!J[e+520>>2]|J[e+504>>2]!=2)){d=J[e+508>>2];d=(d>>>13&8191)-(d&8191)|0}break f}break c}if((d|0)!=1){break e}jv(a,b,1);break e}$C(a,b,158859)}d=J[c+172>>2];g:{if(!(!d|!K[d|0])){e=cD(a,b,d);if(!e){break g}d=J[c+100>>2];g=J[c+172>>2];J[f+40>>2]=e;J[f+32>>2]=g;J[f+36>>2]=d?d:74777;dj(4,88458,130518,f+32|0)}cD(a,b,158859)}d=J[c+84>>2];g=(d|0)==2?1:d;h:{e=b&65535;d=J[a+32>>2];if(e>>>0<(J[a+36>>2]-d|0)/672>>>0){d=d+P(e,672)|0;if(L[d+648>>1]!=(b>>>16|0)){break b}if((e|0)!=L[d+650>>1]){break a}J[d+476>>2]=J[d+476>>2]&-16|g&15;break h}break c}cO(a,b,J[c+112>>2]);WN(a,b,J[c+104>>2]);VN(a,b,J[c+108>>2]);g=J[c+160>>2];i:{e=b&65535;d=J[a+32>>2];if(e>>>0<(J[a+36>>2]-d|0)/672>>>0){d=d+P(e,672)|0;if(L[d+648>>1]!=(b>>>16|0)){break b}if((e|0)!=L[d+650>>1]){break a}J[d+476>>2]=J[d+476>>2]&-196609|g<<16&196608;break i}break c}g=K[c+176|0];j:{e=b&65535;d=J[a+32>>2];if(e>>>0<(J[a+36>>2]-d|0)/672>>>0){d=d+P(e,672)|0;if(L[d+648>>1]!=(b>>>16|0)){break b}if((e|0)!=L[d+650>>1]){break a}J[d+476>>2]=J[d+476>>2]&-8388609|(g?8388608:0);break j}break c}g=J[c+224>>2];k:{e=b&65535;d=J[a+32>>2];if(e>>>0<(J[a+36>>2]-d|0)/672>>>0){d=d+P(e,672)|0;if(L[d+648>>1]!=(b>>>16|0)){break b}if((e|0)!=L[d+650>>1]){break a}J[d+476>>2]=J[d+476>>2]&-50331649|g<<24&50331648;break k}break c}g=K[c+228|0];l:{e=b&65535;d=J[a+32>>2];if(e>>>0<(J[a+36>>2]-d|0)/672>>>0){d=d+P(e,672)|0;if(L[d+648>>1]!=(b>>>16|0)){break b}if((e|0)!=L[d+650>>1]){break a}J[d+476>>2]=J[d+476>>2]&-67108865|(g?67108864:0);break l}break c}g=K[c+229|0];m:{e=b&65535;d=J[a+32>>2];if(e>>>0<(J[a+36>>2]-d|0)/672>>>0){d=d+P(e,672)|0;if(L[d+648>>1]!=(b>>>16|0)){break b}if((e|0)!=L[d+650>>1]){break a}J[d+476>>2]=J[d+476>>2]&-134217729|(g?134217728:0);break m}break c}if(K[c+284|0]==1){n:{e=b&65535;d=J[a+32>>2];if(e>>>0<(J[a+36>>2]-d|0)/672>>>0){d=d+P(e,672)|0;if(L[d+648>>1]!=(b>>>16|0)){break b}if((e|0)!=L[d+650>>1]){break a}J[d+476>>2]=J[d+476>>2]&-268435457|268435456;break n}break c}}lO(a,b,K[c+296|0]);XN(a,b,K[c+297|0]);bD(a,b,bj(J[c+300>>2]),Yi);o:{p:{switch(J[c+80>>2]-1|0){case 0:ZN(a,b,J[c+88>>2]);kO(a,b,J[c+96>>2]);g=K[c+164|0];q:{e=b&65535;d=J[a+32>>2];if(e>>>0<(J[a+36>>2]-d|0)/672>>>0){d=d+P(e,672)|0;if(L[d+648>>1]!=(b>>>16|0)){break b}if((e|0)!=L[d+650>>1]){break a}J[d+476>>2]=J[d+476>>2]&-524289|(g?524288:0);break q}break c}$N(a,b,N[c+260>>2]);_N(a,b,N[c+264>>2]);break o;case 1:eO(a,b,J[c+216>>2]);iO(a,b,N[c+212>>2]);fO(a,b,J[c+208>>2]);dO(a,b,N[c+220>>2]);break o;case 4:aD(a,b,bj(J[c+288>>2]),Yi);break o;case 2:c=J[c+100>>2];J[f+4>>2]=-7;J[f>>2]=c?c:74777;dj(4,88458,130455,f);h=0;break o;case 5:break p;default:break o}}e=J[a+360>>2];d=hv(a,b);i=EO(a,b);r:{e=J[J[e>>2]+468>>2];g=J[e+20>>2];s:{if(!g){break s}g=J[J[e+16>>2]+((d>>>0)%(g>>>0)<<2)>>2];if((g|0)==-1){break s}k=J[e+24>>2];while(1){e=P(g,12)+k|0;if((d|0)==J[e>>2]){break r}g=J[e+8>>2];if((g|0)!=-1){continue}break}}H[301280]=1;J[f+16>>2]=d;dj(4,88458,9017,f+16|0);B()}e=J[e+4>>2];g=J[e+28>>2];if(!g){break o}J[f+108>>2]=b;J[f+104>>2]=a;e=J[e+4>>2];J[f+112>>2]=d;J[f+96>>2]=i;J[f+100>>2]=e;Zi[g|0](f+95|0,f+96|0,c)}t:{c=b&65535;d=J[a+36>>2];a=J[a+32>>2];if(c>>>0<(d-a|0)/672>>>0){a=a+P(c,672)|0;if(L[a+648>>1]!=(b>>>16|0)){break b}if((c|0)!=L[a+650>>1]){break a}hj(a+192|0,a,192);J[a+464>>2]=J[a+476>>2];J[a+468>>2]=J[a+468>>2]|1;break t}break c}Ui=f+640|0;return h}Z(145396,53895,487,84789);B()}Z(47372,40876,188,69601);B()}Z(5388,40876,189,69601);B()}function oC(a,b,c,d,e){var f=Q(0),g=0,h=0,i=Q(0),j=Q(0),k=Q(0),l=0,m=Q(0),n=Q(0),o=0,p=0,q=Q(0),r=Q(0),s=Q(0),t=0,u=Q(0),v=Q(0),w=Q(0),x=Q(0),y=Q(0),z=Q(0),A=Q(0),C=Q(0),D=Q(0),E=Q(0),F=Q(0),G=Q(0),M=Q(0),O=Q(0);h=Ui-368|0;Ui=h;J[h+360>>2]=c;J[h+364>>2]=b;J[h+356>>2]=0;a:{b:{c:{b=J[a+2052>>2];d:{if((b|0)==J[a+2056>>2]){J[h>>2]=(b-J[a+2048>>2]|0)/288;dj(3,90423,8913,h);break d}if(!d){b=h- -64|0;go(b,0);em(b,h+364|0,4);em(b,e+188|0,2);if(H[e+256|0]&1){em(b,e+220|0,36)}if(c){em(h- -64|0,h+360|0,4)}d=jp(h- -64|0);o=Yi}g=J[a+2040>>2];p=J[a+2032>>2];c=g-p|0;t=J[e+112>>2];b=yj(t);l=J[a+2036>>2];p=l-p|0;if(c>>>0<(b+p|0)+1>>>0){J[h+16>>2]=c;dj(3,90423,116118,h+16|0);break d}if(b>>>0>g-l>>>0){break c}hj(l,t,b);b=b+J[a+2036>>2]|0;J[a+2036>>2]=b;if((b|0)==J[a+2040>>2]){break a}J[a+2036>>2]=b+1;H[b|0]=0;b=J[h+360>>2];if(!b){b=J[J[h+364>>2]+16>>2]}J[h+360>>2]=b;b=aC(h- -64|0);N[b+48>>2]=N[e>>2];N[b+52>>2]=N[e+4>>2];N[b+56>>2]=N[e+8>>2];N[b+60>>2]=N[e+12>>2];N[b+64>>2]=N[e+16>>2];N[b+68>>2]=N[e+20>>2];N[b+72>>2]=N[e+24>>2];N[b+76>>2]=N[e+28>>2];N[b+80>>2]=N[e+32>>2];N[b+84>>2]=N[e+36>>2];N[b+88>>2]=N[e+40>>2];N[b+92>>2]=N[e+44>>2];N[b+96>>2]=N[e+48>>2];N[b+100>>2]=N[e+52>>2];N[b+104>>2]=N[e+56>>2];f=N[e+60>>2];J[b+204>>2]=p;N[b+108>>2]=f;c=J[h+364>>2];J[b+176>>2]=c;l=J[h+360>>2];J[b+236>>2]=-1;J[b+240>>2]=-1;J[b+192>>2]=d;J[b+196>>2]=o;J[b+180>>2]=l;f=Q(N[e+72>>2]*Q(255));e:{if(f=Q(0)){d=~~f>>>0;break e}d=0}g=d<<16;f=Q(Q(N[e+76>>2]*N[c+72>>2])*Q(255));f:{if(f=Q(0)){d=~~f>>>0;break f}d=0}g=g|d<<24;f=Q(N[e+68>>2]*Q(255));g:{if(f=Q(0)){d=~~f>>>0;break g}d=0}d=g|d<<8;f=Q(N[e+64>>2]*Q(255));h:{if(f=Q(0)){g=~~f>>>0;break h}g=0}J[b+200>>2]=g|d;f=Q(N[e+88>>2]*Q(255));i:{if(f=Q(0)){d=~~f>>>0;break i}d=0}g=d<<16;f=Q(Q(N[e+92>>2]*N[c+76>>2])*Q(255));j:{if(f=Q(0)){d=~~f>>>0;break j}d=0}g=g|d<<24;f=Q(N[e+84>>2]*Q(255));k:{if(f=Q(0)){d=~~f>>>0;break k}d=0}d=g|d<<8;f=Q(N[e+80>>2]*Q(255));l:{if(f=Q(0)){g=~~f>>>0;break l}g=0}J[b+208>>2]=g|d;f=Q(N[e+104>>2]*Q(255));m:{if(f=Q(0)){d=~~f>>>0;break m}d=0}g=d<<16;f=Q(Q(N[e+108>>2]*N[c+80>>2])*Q(255));n:{if(f=Q(0)){d=~~f>>>0;break n}d=0}g=g|d<<24;f=Q(N[e+100>>2]*Q(255));o:{if(f=Q(0)){d=~~f>>>0;break o}d=0}d=g|d<<8;f=Q(N[e+96>>2]*Q(255));p:{if(f=Q(0)){g=~~f>>>0;break p}g=0}J[b+212>>2]=g|d;I[b+216>>1]=L[e+188>>1];f=N[e+192>>2];N[b+220>>2]=f;N[b+224>>2]=N[e+196>>2];i=N[e+200>>2];N[b+228>>2]=i;j=N[e+204>>2];N[b+232>>2]=j;d=K[e+208|0];H[b+219|0]=d;o=K[e+216|0];l=K[e+212|0];g=J[e+224>>2];J[b>>2]=J[e+220>>2];J[b+4>>2]=g;g=J[e+232>>2];J[b+8>>2]=J[e+228>>2];J[b+12>>2]=g;g=J[e+240>>2];J[b+16>>2]=J[e+236>>2];J[b+20>>2]=g;g=J[e+248>>2];J[b+24>>2]=J[e+244>>2];J[b+28>>2]=g;J[b+32>>2]=J[e+252>>2];H[b+276|0]=K[e+256|0]<<4&16|(o<<2&12|(K[b+276|0]&224|l&3));J[b+184>>2]=J[e+180>>2];J[b+188>>2]=J[e+184>>2];N[h+60>>2]=j;N[h+56>>2]=i;H[h+52|0]=d;N[h+48>>2]=f;nL(c,J[e+112>>2],h+48|0,h+28|0);i=N[b+220>>2];f=Q(0);c=J[h+364>>2];q:{r:{s:{d=K[b+276|0];o=d&3;switch(o-1|0){case 1:break r;case 0:break s;default:break q}}f=Q(i*Q(.5));break q}f=i}i=N[c+48>>2];m=N[c+52>>2];j=Q(i+m);k=N[b+228>>2];n=N[b+224>>2];c=J[h+44>>2];t:{u:{switch((d>>>2&3)-1|0){case 0:k=Q(Q(Q(n*Q(.5))+Q(Q(Q(Q(c>>>0)*Q(j*k))-Q(j*Q(k+Q(-1))))*Q(.5)))-i);break t;case 1:k=Q(Q(Q(j*k)*Q(c-1>>>0))+m);break t;default:break u}}k=Q(n-i)}j=Q(N[h+28>>2]*Q(.5));v:{w:{switch(o|0){case 0:f=Q(f+j);break v;case 2:break w;default:break v}}f=Q(f-j)}n=N[b+108>>2];q=N[b+92>>2];m=N[b+60>>2];u=N[b+76>>2];v=N[b+96>>2];r=N[b+80>>2];w=N[b+48>>2];x=N[b+64>>2];y=N[b+100>>2];s=N[b+84>>2];z=N[b+52>>2];A=N[b+68>>2];C=N[b+104>>2];D=Q(N[b+88>>2]*Q(0));E=N[b+56>>2];i=Q(i+k);k=Q(N[h+32>>2]*Q(.5));i=Q(i-k);F=N[b+72>>2];G=Q(C+Q(D+Q(Q(E*f)+Q(i*F))));N[b+264>>2]=G;s=Q(s*Q(0));M=Q(y+Q(s+Q(Q(z*f)+Q(i*A))));N[b+260>>2]=M;r=Q(r*Q(0));O=Q(v+Q(r+Q(Q(w*f)+Q(i*x))));N[b+256>>2]=O;q=Q(q*Q(0));j=Q(f+j);k=Q(k+i);f=Q(Q(n+Q(q+Q(Q(m*j)+Q(u*k))))-Q(n+Q(q+Q(Q(m*f)+Q(i*u)))));i=Q(f*f);f=Q(Q(C+Q(D+Q(Q(E*j)+Q(k*F))))-G);m=Q(f*f);f=Q(Q(y+Q(s+Q(Q(z*j)+Q(k*A))))-M);n=Q(f*f);f=Q(Q(v+Q(r+Q(Q(w*j)+Q(x*k))))-O);N[b+272>>2]=i+Q(m+Q(n+Q(f*f)));c=K[e+190|0];if(c>>>0>=17){break b}H[b+218|0]=c;d=hj(b+112|0,e+116|0,c<<2&252);c=J[a+2052>>2];if((c|0)==J[a+2056>>2]){break a}J[a+2052>>2]=c+288;J[c+32>>2]=J[b+32>>2];a=J[b+28>>2];J[c+24>>2]=J[b+24>>2];J[c+28>>2]=a;a=J[b+20>>2];J[c+16>>2]=J[b+16>>2];J[c+20>>2]=a;a=J[b+12>>2];J[c+8>>2]=J[b+8>>2];J[c+12>>2]=a;a=J[b+4>>2];J[c>>2]=J[b>>2];J[c+4>>2]=a;N[c+48>>2]=N[b+48>>2];N[c+52>>2]=N[b+52>>2];N[c+56>>2]=N[b+56>>2];N[c+60>>2]=N[b+60>>2];N[c+64>>2]=N[b+64>>2];N[c+68>>2]=N[b+68>>2];N[c+72>>2]=N[b+72>>2];N[c+76>>2]=N[b+76>>2];N[c+80>>2]=N[b+80>>2];N[c+84>>2]=N[b+84>>2];N[c+88>>2]=N[b+88>>2];N[c+92>>2]=N[b+92>>2];N[c+96>>2]=N[b+96>>2];N[c+100>>2]=N[b+100>>2];N[c+104>>2]=N[b+104>>2];N[c+108>>2]=N[b+108>>2];hj(c+112|0,d,132);N[c+256>>2]=N[b+256>>2];N[c+260>>2]=N[b+260>>2];N[c+264>>2]=N[b+264>>2];J[c+272>>2]=J[b+272>>2];H[c+276|0]=K[b+276|0]}Ui=h+368|0;return}Z(11738,53895,564,4042);B()}Z(88738,39812,237,9400);B()}Z(112520,53895,557,53220);B()}function KT(a,b,c,d,e,f){a=a|0;b=b|0;c=c|0;d=d|0;e=e|0;f=f|0;var g=0,h=0,i=Q(0),j=0,k=Q(0),l=Q(0),m=Q(0),n=Q(0),o=Q(0),p=Q(0),q=Q(0),r=Q(0),s=Q(0),t=Q(0),u=Q(0),v=0,w=0,x=0,y=Q(0),z=0,A=0;g=Ui-576|0;Ui=g;Wy(J[a+4>>2]);i=N[b+52>>2];k=N[c+52>>2];o=N[b+48>>2];l=N[c+48>>2];m=N[b+56>>2];n=N[c+56>>2];J[g+572>>2]=0;q=Q(n-m);N[g+568>>2]=q;p=Q(l-o);N[g+560>>2]=p;r=Q(k-i);N[g+564>>2]=r;w=c;h=g+184|0;c=g+324|0;Xy(b,w,h,c);J[g+556>>2]=0;i=N[g+324>>2];k=Q(i*N[g+192>>2]);N[g+552>>2]=k;o=Q(i*N[g+184>>2]);N[g+544>>2]=o;i=Q(i*N[g+188>>2]);N[g+548>>2]=i;l=N[d+52>>2];m=N[e+52>>2];n=N[d+48>>2];s=N[e+48>>2];t=N[d+56>>2];u=N[e+56>>2];J[g+540>>2]=0;t=Q(u-t);N[g+536>>2]=t;u=Q(s-n);N[g+528>>2]=u;y=Q(m-l);N[g+532>>2]=y;Xy(d,e,h,c);J[g+524>>2]=0;l=N[g+324>>2];m=Q(l*N[g+192>>2]);N[g+520>>2]=m;n=Q(l*N[g+184>>2]);N[g+512>>2]=n;l=Q(l*N[g+188>>2]);N[g+516>>2]=l;e=J[a+12>>2];k=Q(Q(Y(Q(Q(k*k)+Q(Q(o*o)+Q(i*i)))))*Q(Zi[J[J[e>>2]+16>>2]](e)));e=J[a+16>>2];s=Q(k+Q(Q(Zi[J[J[e>>2]+16>>2]](e))*Q(Y(Q(Q(m*m)+Q(Q(n*n)+Q(l*l)))))));m=Q(t-q);n=Q(u-p);q=Q(y-r);if(Q(s+Q(Y(Q(Q(m*m)+Q(Q(n*n)+Q(q*q))))))!=Q(0)){e=g+444|0;J[e+4>>2]=35;J[e+8>>2]=0;J[e>>2]=246356;J[e+44>>2]=1025758986;J[e+20>>2]=1065353216;J[e+24>>2]=0;J[e+12>>2]=1065353216;J[e+16>>2]=1065353216;J[e>>2]=246264;J[e+44>>2]=0;J[e+28>>2]=0;J[e+4>>2]=8;J[e>>2]=246688;H[g+440|0]=0;J[g+436>>2]=1566444395;J[g+400>>2]=246800;e=J[a+12>>2];x=J[e+4>>2];z=J[a+16>>2];A=J[z+4>>2];i=Q(Zi[J[J[e>>2]+44>>2]](e));v=J[a+16>>2];k=Q(Zi[J[J[v>>2]+44>>2]](v));v=J[a+4>>2];w=J[a+8>>2];J[c+72>>2]=1;J[c+60>>2]=-1;H[c+52|0]=0;N[c+48>>2]=k;N[c+44>>2]=i;J[c+40>>2]=A;J[c+36>>2]=x;J[c+32>>2]=z;J[c+28>>2]=e;J[c+24>>2]=v;J[c+20>>2]=w;J[c+12>>2]=0;J[c+16>>2]=0;J[c+4>>2]=0;J[c+8>>2]=1065353216;J[c>>2]=246868;J[g+312>>2]=1566444395;J[g+316>>2]=0;e=J[b+12>>2];J[g+192>>2]=J[b+8>>2];J[g+196>>2]=e;e=J[b+4>>2];J[g+184>>2]=J[b>>2];J[g+188>>2]=e;e=J[b+28>>2];J[g+208>>2]=J[b+24>>2];J[g+212>>2]=e;e=J[b+20>>2];J[g+200>>2]=J[b+16>>2];J[g+204>>2]=e;e=J[b+44>>2];J[g+224>>2]=J[b+40>>2];J[g+228>>2]=e;e=J[b+36>>2];J[g+216>>2]=J[b+32>>2];J[g+220>>2]=e;e=J[b+60>>2];J[g+240>>2]=J[b+56>>2];J[g+244>>2]=e;e=J[b+52>>2];J[g+232>>2]=J[b+48>>2];J[g+236>>2]=e;e=J[d+12>>2];J[g+256>>2]=J[d+8>>2];J[g+260>>2]=e;e=J[d+4>>2];J[g+248>>2]=J[d>>2];J[g+252>>2]=e;e=J[d+28>>2];J[g+272>>2]=J[d+24>>2];J[g+276>>2]=e;e=J[d+20>>2];J[g+264>>2]=J[d+16>>2];J[g+268>>2]=e;e=J[d+44>>2];J[g+288>>2]=J[d+40>>2];J[g+292>>2]=e;e=J[d+36>>2];J[g+280>>2]=J[d+32>>2];J[g+284>>2]=e;e=J[d+60>>2];J[g+304>>2]=J[d+56>>2];J[g+308>>2]=e;e=J[d+52>>2];J[g+296>>2]=J[d+48>>2];J[g+300>>2]=e;Rq(c,h,g+400|0,0);c=J[g+432>>2];J[g+504>>2]=J[g+428>>2];J[g+508>>2]=c;c=J[g+424>>2];J[g+496>>2]=J[g+420>>2];J[g+500>>2]=c;a:{if(K[g+440|0]!=1){break a}k=N[g+412>>2];o=N[g+408>>2];l=N[g+404>>2];p=N[g+436>>2];b:{if(!(p>Q(.0010000000474974513))){r=Q(s+Q(Q(m*k)+Q(Q(n*l)+Q(q*o))));i=Q(0);m=N[g+416>>2];break b}c=g+168|0;e=0;i=Q(0);while(1){j=J[f+168>>2];if(j){J[g+192>>2]=1065353216;J[g+196>>2]=0;J[g+184>>2]=1065353216;J[g+188>>2]=1065353216;Zi[J[J[j>>2]+16>>2]](j,g+496|0,Q(.20000000298023224),g+184|0)}j=0;if((e|0)==64){break a}r=Q(s+Q(Q(m*k)+Q(Q(n*l)+Q(q*o))));if(r<=Q(1.1920928955078125e-7)){break a}k=i;i=Q(i+Q(p/r));if(k>=i|i>Q(1)|i>2];if(j){J[g+192>>2]=0;J[g+196>>2]=0;J[g+184>>2]=1065353216;J[g+188>>2]=0;Zi[J[J[j>>2]+16>>2]](j,c,Q(.20000000298023224),g+184|0)}Zi[J[J[f>>2]>>2]](f,i);H[g+52|0]=0;J[g+48>>2]=1566444395;J[g+12>>2]=246800;j=az(g+324|0,J[a+12>>2],J[a+16>>2],J[a+4>>2],J[a+8>>2]);h=J[g+132>>2];J[g+192>>2]=J[g+128>>2];J[g+196>>2]=h;h=J[g+124>>2];J[g+184>>2]=J[g+120>>2];J[g+188>>2]=h;J[g+312>>2]=1566444395;J[g+316>>2]=0;h=J[g+148>>2];J[g+208>>2]=J[g+144>>2];J[g+212>>2]=h;h=J[g+140>>2];J[g+200>>2]=J[g+136>>2];J[g+204>>2]=h;h=J[g+156>>2];J[g+216>>2]=J[g+152>>2];J[g+220>>2]=h;h=J[g+164>>2];J[g+224>>2]=J[g+160>>2];J[g+228>>2]=h;h=J[c+12>>2];J[g+240>>2]=J[c+8>>2];J[g+244>>2]=h;h=J[c+4>>2];J[g+232>>2]=J[c>>2];J[g+236>>2]=h;h=g- -64|0;x=J[h+4>>2];J[g+256>>2]=J[h>>2];J[g+260>>2]=x;h=J[g+60>>2];J[g+248>>2]=J[g+56>>2];J[g+252>>2]=h;h=J[g+84>>2];J[g+272>>2]=J[g+80>>2];J[g+276>>2]=h;h=J[g+76>>2];J[g+264>>2]=J[g+72>>2];J[g+268>>2]=h;h=J[g+100>>2];J[g+288>>2]=J[g+96>>2];J[g+292>>2]=h;h=J[g+92>>2];J[g+280>>2]=J[g+88>>2];J[g+284>>2]=h;h=J[g+116>>2];J[g+304>>2]=J[g+112>>2];J[g+308>>2]=h;h=J[g+108>>2];J[g+296>>2]=J[g+104>>2];J[g+300>>2]=h;Rq(j,g+184|0,g+12|0,0);j=K[g+52|0];if((j|0)!=1){break a}p=N[g+48>>2];if(p>2]=i;a=J[g+16>>2];b=J[g+20>>2];c=J[g+28>>2];J[f+140>>2]=J[g+24>>2];J[f+144>>2]=c;J[f+132>>2]=a;J[f+136>>2]=b;a=J[g+44>>2];J[f+156>>2]=J[g+40>>2];J[f+160>>2]=a;a=J[g+36>>2];J[f+148>>2]=J[g+32>>2];J[f+152>>2]=a;break a}e=e+1|0;j=J[g+44>>2];J[g+504>>2]=J[g+40>>2];J[g+508>>2]=j;j=J[g+36>>2];J[g+496>>2]=J[g+32>>2];J[g+500>>2]=j;l=N[g+16>>2];o=N[g+20>>2];k=N[g+24>>2];if(p>Q(.0010000000474974513)){continue}break}m=N[g+28>>2]}j=0;if(N[f+172>>2]>=r){break a}N[f+144>>2]=m;N[f+140>>2]=k;N[f+136>>2]=o;N[f+132>>2]=l;N[f+164>>2]=i;a=J[g+500>>2];J[f+148>>2]=J[g+496>>2];J[f+152>>2]=a;a=J[g+508>>2];J[f+156>>2]=J[g+504>>2];J[f+160>>2]=a;j=1}}Ui=g+576|0;return j|0}function Una(a,b){a=a|0;b=b|0;var c=0,d=0,e=0,f=0,g=0,h=0,i=0,j=Q(0),k=Q(0),l=0,m=0,n=0,o=0,p=0,q=0,r=0,s=0,t=0,u=0;h=Ui-224|0;Ui=h;J[h+220>>2]=0;f=J[a+8>>2];H[f+108|0]=K[f+108|0]|1;t=J[f+4>>2];u=J[f>>2];g=(t-u|0)/104|0;J[73942]=g+J[73942];J[h+56>>2]=g;J[h+60>>2]=0;J[h+208>>2]=g;J[h+212>>2]=0;a:{b:{c:{o=(t|0)==(u|0);d:{if(o){break d}p=g>>>0<=1?1:g;e:{while(1){c=J[f>>2];if((J[f+4>>2]-c|0)/104>>>0>i>>>0){d=c+P(i,104)|0;c=K[d+96|0];f:{if(!(c&1)|!(c&16)|N[d+60>>2]>N[J[a+4>>2]+4>>2]){break f}H[d+96|0]=c&239;g:{if(c&4){break g}c=J[d+48>>2];if(c){N[d+52>>2]=N[c>>2];break g}q=Zp(h+96|0);m=h+80|0;J[m>>2]=0;H[m+8|0]=K[m+8|0]&254;J[m>>2]=0;r=J[d+16>>2];s=J[d+20>>2];n=J[d+8>>2];e=J[d+12>>2];l=J[d>>2];c=J[m+12>>2];J[h+48>>2]=J[m+8>>2];J[h+52>>2]=c;c=J[m+4>>2];J[h+40>>2]=J[m>>2];J[h+44>>2]=c;Cr(l,n,e,r,s,h+40|0,q);N[d+52>>2]=O[h+136>>3]}c=J[f+48>>2];if(!c){break f}l=J[d>>2];e=J[J[f+44>>2]+((l>>>0)%(c>>>0)<<2)>>2];if((e|0)==-1){break f}c=J[f+52>>2];while(1){e=c+P(e,12)|0;if((l|0)!=J[e>>2]){e=J[e+8>>2];if((e|0)!=-1){continue}break f}break}e=L[e+4>>1];if((e|0)==65535){break f}while(1){l=e&65535;n=J[f+16>>2];if(l>>>0>=J[f+20>>2]-n>>1>>>0){break a}l=L[n+(l<<1)>>1];c=J[f>>2];if(l>>>0>=(J[f+4>>2]-c|0)/104>>>0){break a}e=c+P(l,104)|0;h:{if((i|0)==(l|0)){break h}c=K[e+96|0];if(c&16|(J[e+8>>2]!=J[d+8>>2]|J[e+12>>2]!=J[d+12>>2])|(!(N[e+60>>2]<=Q(0))|(J[e+16>>2]!=J[d+16>>2]|J[e+20>>2]!=J[d+20>>2]))){break h}H[e+96|0]=c&236}e=L[e+94>>1];if((e|0)!=65535){continue}break}}i=i+1|0;if((p|0)!=(i|0)){continue}break e}break}break a}if(o){break d}p=g>>>0<=1?1:g;e=0;i:{while(1){c=J[f>>2];if((J[f+4>>2]-c|0)/104>>>0>e>>>0){d=c+P(e,104)|0;n=K[d+96|0];j:{if(!(n&1)){break j}j=N[d+60>>2];k=N[J[a+4>>2]+4>>2];if(j>k){N[d+60>>2]=j-k;break j}l=0;J[d+60>>2]=0;c=J[d+24>>2];k:{if(!c){break k}j=Q(Q(k-j)+N[d+64>>2]);N[d+64>>2]=j;l:{m:{switch(c-1|0){case 0:case 1:case 2:k=N[d+68>>2];if(!(k<=j)){break k}N[d+64>>2]=k;l=1;break k;case 3:case 4:k=N[d+68>>2];if(!(k>Q(0))|!(j>=k)){break k}while(1){j=Q(j-k);if(k<=j){continue}break};break l;case 5:break m;default:break k}}k=N[d+68>>2];if(!(k>Q(0))|!(j>=k)){break k}while(1){n=n^8;j=Q(j-k);if(k<=j){continue}break}H[d+96|0]=n}N[d+64>>2]=j}n:{if(n&4){break n}j=Q(1);k=N[d+64>>2];if(k>2]){k=Q(k*N[d+72>>2]);j=kQ(1)?Q(1):k}j=n&8?Q(Q(1)-j):j;o:{p:{switch(c-3|0){case 0:case 3:break p;default:break o}}j=Q(j+j);if(!(j>Q(1))){break o}j=Q(Q(2)-j)}J[h+32>>2]=J[d+44>>2];c=J[d+40>>2];J[h+24>>2]=J[d+36>>2];J[h+28>>2]=c;c=J[d+32>>2];J[h+16>>2]=J[d+28>>2];J[h+20>>2]=c;j=XR(h+16|0,j);k=N[d+52>>2];k=Q(Q(j*Q(N[d+56>>2]-k))+k);c=J[d+48>>2];if(c){N[c>>2]=k;break n}m=h+80|0;J[m>>2]=0;H[m+8|0]=K[m+8|0]&254;J[m>>2]=0;q=J[d+16>>2];r=J[d+20>>2];s=J[d+8>>2];n=J[d+12>>2];i=J[d>>2];c=J[m+12>>2];J[h+72>>2]=J[m+8>>2];J[h+76>>2]=c;c=J[m+4>>2];J[h+64>>2]=J[m>>2];J[h+68>>2]=c;m=h+96|0;J[m>>2]=0;O[m+8>>3]=k;c=J[h+76>>2];J[h+8>>2]=J[h+72>>2];J[h+12>>2]=c;c=J[h+68>>2];J[h>>2]=J[h+64>>2];J[h+4>>2]=c;RD(i,s,n,q,r,h,m)}if(!l){break j}H[d+96|0]=K[d+96|0]&252|2}e=e+1|0;if((p|0)!=(e|0)){continue}break i}break}break a}if(o){break d}i=J[f>>2];n=J[f+4>>2];d=0;while(1){q:{r:{s:{t:{u:{v:{if((n-i|0)/104>>>0>d>>>0){m=P(d,104);e=m+i|0;c=K[e+96|0];if(!(c&1)){a=J[e+76>>2];w:{if(!a){c=g;break w}Zi[a|0](J[e>>2],J[e+8>>2],J[e+12>>2],J[e+16>>2],J[e+20>>2],(c&2)>>>1|0,J[e+80>>2],J[e+84>>2]);a=J[f>>2];c=(J[f+4>>2]-a|0)/104|0;if((g|0)!=(c|0)){if(d>>>0>=c>>>0){break a}e=a+m|0}kR(f,e);a=J[e+36>>2];if(!a){break w}Zi[a|0](e+28|0)}o=J[e>>2];l=0;p=J[f+48>>2];x:{if(!p){break x}i=J[J[f+44>>2]+((o>>>0)%(p>>>0)<<2)>>2];if((i|0)==-1){break x}g=J[f+52>>2];while(1){a=g+P(i,12)|0;if((o|0)==J[a>>2]){l=a;break x}i=J[a+8>>2];if((i|0)!=-1){continue}break}}g=l+4|0;q=l?g:0;a=L[q>>1];if((a|0)!=65535){r=L[e+92>>1];y:{if((r|0)!=(a|0)){s=J[f+16>>2];n=J[f+20>>2]-s>>1;i=a;while(1){g=i&65535;if(g>>>0>=n>>>0){break a}g=L[(g<<1)+s>>1];l=J[f>>2];if(g>>>0>=(J[f+4>>2]-l|0)/104>>>0){break a}g=l+P(g,104)|0;i=L[g+94>>1];if((i|0)==65535){break y}if((i|0)!=(r|0)){continue}break}g=g+94|0}I[g>>1]=L[e+94>>1];i=J[f+32>>2];if(!i){break v}l=L[f+38>>1]-1|0;g=l&65535;if(g>>>0>=L[f+36>>1]){break u}a=L[e+92>>1];I[f+38>>1]=l;I[i+(g<<1)>>1]=a;a=L[q>>1]}if((a|0)!=65535){break r}}if(!p){break t}z:{g=J[f+44>>2]+((o>>>0)%(p>>>0)<<2)|0;i=J[g>>2];if((i|0)!=-1){a=0;l=J[f+52>>2];e=l+P(i,12)|0;if((o|0)!=J[e>>2]){break z}break s}Z(85666,55629,340,62656);B()}while(1){a=e;i=J[e+8>>2];if((i|0)!=-1){e=l+P(i,12)|0;if((o|0)!=J[e>>2]){continue}break s}break}Z(152754,55629,366,62656);B()}d=d+1|0;break q}break a}Z(49493,54340,140,53220);B()}Z(2650,54340,141,53220);B()}Z(113800,55629,334,62656);B()}J[f+68>>2]=J[f+68>>2]-1;a=a?a+8|0:g;g=l+P(i,12)|0;J[a>>2]=J[g+8>>2];a=J[f+64>>2];J[f+64>>2]=i;J[g+8>>2]=a}g=J[f+4>>2];a=J[f>>2];if((g-a|0)/104>>>0<=d>>>0){break c}hj(a+m|0,g-104|0,97);n=J[f+4>>2]-104|0;J[f+4>>2]=n;i=J[f>>2];if(n>>>0>>0){break b}g=c-1|0;if(d>>>0>=g>>>0){break q}a=L[(i+m|0)+92>>1];c=J[f+16>>2];if(a>>>0>=J[f+20>>2]-c>>1>>>0){break a}I[c+(a<<1)>>1]=d}if(d>>>0>>0){continue}break}}H[f+108|0]=K[f+108|0]&254;H[b|0]=(t|0)!=(u|0);Ui=h+224|0;return 0}Z(145381,53895,537,43537);B()}Z(12682,53895,540,43537);B()}Z(145396,53895,487,84789);B()}function UG(a,b,c,d,e,f,g){var h=0,i=0,j=0,k=0,l=0,m=0,n=0,o=0,p=0,q=0,r=0,s=0,t=0,u=0,v=0,w=0,x=0,y=0,z=0,A=0;j=Ui+-64|0;Ui=j;J[j+60>>2]=b;z=j+39|0;u=j+40|0;a:{b:{c:{d:{e:while(1){h=0;f:while(1){k=b;if((o^2147483647)<(h|0)){break d}o=h+o|0;g:{h:{i:{j:{h=b;i=K[h|0];if(i){while(1){k:{b=i&255;l:{if(!b){b=h;break l}if((b|0)!=37){break k}i=h;while(1){if(K[i+1|0]!=37){b=i;break l}h=h+1|0;m=K[i+2|0];b=i+2|0;i=b;if((m|0)==37){continue}break}}h=h-k|0;y=o^2147483647;if((h|0)>(y|0)){break d}if(a){rm(a,k,h)}if(h){continue f}J[j+60>>2]=b;h=b+1|0;q=-1;i=H[b+1|0]-48|0;if(!(K[b+2|0]!=36|i>>>0>9)){x=1;q=i;h=b+3|0}J[j+60>>2]=h;n=0;i=H[h|0];b=i-32|0;m:{if(b>>>0>31){m=h;break m}m=h;b=1<>2]=m;n=b|n;i=H[h+1|0];b=i-32|0;if(b>>>0>=32){break m}h=m;b=1<>>0>9)){p:{if(!a){J[(b<<2)+e>>2]=10;b=0;break p}b=J[(b<<3)+d>>2]}p=b;b=m+3|0;h=1;break o}if(x){break j}b=m+1|0;if(!a){J[j+60>>2]=b;x=0;p=0;break n}h=J[c>>2];J[c>>2]=h+4;p=J[h>>2];h=0}x=h;J[j+60>>2]=b;if((p|0)>=0){break n}p=0-p|0;n=n|8192;break n}p=cJ(j+60|0);if((p|0)<0){break d}b=J[j+60>>2]}h=0;l=-1;v=0;q:{if(K[b|0]!=46){break q}if(K[b+1|0]==42){i=H[b+2|0]-48|0;r:{if(!(K[b+3|0]!=36|i>>>0>9)){b=b+4|0;s:{if(!a){J[(i<<2)+e>>2]=10;l=0;break s}l=J[(i<<3)+d>>2]}break r}if(x){break j}b=b+2|0;l=0;if(!a){break r}i=J[c>>2];J[c>>2]=i+4;l=J[i>>2]}J[j+60>>2]=b;v=(l|0)>=0;break q}J[j+60>>2]=b+1;l=cJ(j+60|0);b=J[j+60>>2];v=1}while(1){i=h;m=28;s=b;r=H[b|0];if(r-123>>>0<4294967238){break c}b=b+1|0;h=K[(r+P(h,58)|0)+216799|0];if(h-1>>>0<8){continue}break}J[j+60>>2]=b;t:{if((h|0)!=27){if(!h){break c}if((q|0)>=0){if(!a){J[(q<<2)+e>>2]=h;continue e}h=(q<<3)+d|0;m=J[h+4>>2];J[j+48>>2]=J[h>>2];J[j+52>>2]=m;break t}if(!a){break g}WG(j+48|0,h,c,g);break t}if((q|0)>=0){break c}h=0;if(!a){continue f}}if(K[a|0]&32){break b}r=n&-65537;n=n&8192?r:n;q=0;w=6229;m=u;u:{v:{w:{x:{y:{z:{A:{B:{C:{D:{E:{F:{G:{H:{I:{J:{K:{h=H[s|0];h=i?(h&15)==3?h&-45:h:h;switch(h-88|0){case 9:case 13:case 14:case 15:break u;case 27:break A;case 11:break B;case 12:case 17:break E;case 23:break F;case 0:case 32:break G;case 24:break H;case 22:break I;case 29:break J;case 1:case 2:case 3:case 4:case 5:case 6:case 7:case 8:case 10:case 16:case 18:case 19:case 20:case 21:case 25:case 26:case 28:case 30:case 31:break h;default:break K}}L:{switch(h-65|0){case 0:case 4:case 5:case 6:break u;case 2:break z;case 1:case 3:break h;default:break L}}if((h|0)==83){break y}break h}i=J[j+48>>2];s=J[j+52>>2];w=6229;break D}h=0;M:{switch(i&255){case 0:J[J[j+48>>2]>>2]=o;continue f;case 1:J[J[j+48>>2]>>2]=o;continue f;case 2:i=J[j+48>>2];J[i>>2]=o;J[i+4>>2]=o>>31;continue f;case 3:I[J[j+48>>2]>>1]=o;continue f;case 4:H[J[j+48>>2]]=o;continue f;case 6:J[J[j+48>>2]>>2]=o;continue f;case 7:break M;default:continue f}}i=J[j+48>>2];J[i>>2]=o;J[i+4>>2]=o>>31;continue f}l=l>>>0<=8?8:l;n=n|8;h=120}b=u;A=h&32;k=J[j+52>>2];s=k;i=J[j+48>>2];t=i;if(i|k){while(1){b=b-1|0;H[b|0]=A|K[(t&15)+217328|0];r=!k&t>>>0>15|(k|0)!=0;t=(k&15)<<28|t>>>4;k=k>>>4|0;if(r){continue}break}}k=b;if(!(i|s)|!(n&8)){break C}w=(h>>>4|0)+6229|0;q=2;break C}b=u;k=J[j+52>>2];s=k;i=J[j+48>>2];t=i;if(i|k){while(1){b=b-1|0;H[b|0]=t&7|48;r=!k&t>>>0>7|(k|0)!=0;t=(k&7)<<29|t>>>3;k=k>>>3|0;if(r){continue}break}}k=b;if(!(n&8)){break C}b=u-b|0;l=(b|0)<(l|0)?l:b+1|0;break C}i=J[j+48>>2];b=J[j+52>>2];s=b;if((b|0)<0){h=0-(b+((i|0)!=0)|0)|0;s=h;i=0-i|0;J[j+48>>2]=i;J[j+52>>2]=h;q=1;w=6229;break D}if(n&2048){q=1;w=6230;break D}q=n&1;w=q?6231:6229}k=us(i,s,u)}if((l|0)<0&v){break d}n=v?n&-65537:n;if(!(l|(i|s)!=0)){k=u;l=0;break h}b=!(i|s)+(u-k|0)|0;l=(b|0)<(l|0)?l:b;break h}i=J[j+48>>2];break i}b=J[j+48>>2];k=b?b:137573;b=jG(k,l>>>0>=2147483647?2147483647:l);m=b+k|0;if((l|0)>=0){n=r;l=b;break h}n=r;l=b;if(K[m|0]){break d}break h}h=J[j+48>>2];if(h|J[j+52>>2]){break x}i=0;break i}if(l){i=J[j+48>>2];break w}h=0;Cm(a,32,p,0,n);break v}J[j+12>>2]=0;J[j+8>>2]=h;i=j+8|0;J[j+48>>2]=i;l=-1}h=0;while(1){N:{k=J[i>>2];if(!k){break N}k=xF(j+4|0,k);if((k|0)<0){break b}if(k>>>0>l-h>>>0){break N}i=i+4|0;h=h+k|0;if(l>>>0>h>>>0){continue}}break}m=61;if((h|0)<0){break c}Cm(a,32,p,h,n);if(!h){h=0;break v}m=0;i=J[j+48>>2];while(1){k=J[i>>2];if(!k){break v}l=j+4|0;k=xF(l,k);m=k+m|0;if(m>>>0>h>>>0){break v}rm(a,l,k);i=i+4|0;if(h>>>0>m>>>0){continue}break}}Cm(a,32,p,h,n^8192);h=(h|0)<(p|0)?p:h;continue f}if((l|0)<0&v){break d}m=61;h=Zi[f|0](a,O[j+48>>3],p,l,n,h)|0;if((h|0)>=0){continue f}break c}i=K[h+1|0];h=h+1|0;continue}}if(a){break a}if(!x){break g}h=1;while(1){a=J[(h<<2)+e>>2];if(a){WG((h<<3)+d|0,a,c,g);o=1;h=h+1|0;if((h|0)!=10){continue}break a}break}if(h>>>0>=10){o=1;break a}while(1){if(J[(h<<2)+e>>2]){break j}o=1;h=h+1|0;if((h|0)!=10){continue}break}break a}m=28;break c}H[j+39|0]=i;l=1;k=z;n=r}i=m-k|0;l=(i|0)<(l|0)?l:i;if((l|0)>(q^2147483647)){break d}m=61;b=l+q|0;h=(b|0)<(p|0)?p:b;if((y|0)<(h|0)){break c}Cm(a,32,h,b,n);rm(a,w,q);Cm(a,48,h,b,n^65536);Cm(a,48,l,i,0);rm(a,k,i);Cm(a,32,h,b,n^8192);b=J[j+60>>2];continue}break}break}o=0;break a}m=61}J[245744]=m}o=-1}Ui=j- -64|0;return o}function SM(a,b){var c=0,d=0,e=0,f=0,g=0,h=0,i=0,j=0,k=0,l=0,m=0;j=Ui-960|0;Ui=j;ij(J[a+40>>2],255,J[a+44>>2]<<2);J[a+60>>2]=-1;J[a+64>>2]=0;J[a+52>>2]=J[a+48>>2];c=j+8|0;ij(c,0,952);k=a+40|0;Sp(k,0,0,c);c=J[a+4>>2];a:{b:{c:{if(J[b+4>>2]){d:{if(!c){c=nj(100);J[a+4>>2]=c;ij(c,0,100);c=J[a+4>>2];J[c>>2]=J[J[a>>2]+72>>2]+2372;break d}J[c+88>>2]=J[c+84>>2]}if(H[c+96|0]&1){break b}lj(J[b+4>>2],16,c+84|0,c+92|0,c+88|0);if(!J[b+4>>2]){break c}while(1){g=J[b>>2]+(d<<3)|0;e=bj(J[g+4>>2]);f=Yi;h=J[a+4>>2];c=J[h+88>>2];if((c|0)==J[h+92>>2]){break a}g=J[g>>2];J[h+88>>2]=c+16;J[c+8>>2]=e;J[c+12>>2]=f;J[c>>2]=g;Sp(k,e,f,j+8|0);d=d+1|0;if(d>>>0>2]){continue}break}break c}if(!c){break c}e:{if(H[c+96|0]&1){break e}d=J[c+84>>2];if(!d){break e}cj(d)}cj(c);J[a+4>>2]=0}c=J[a+8>>2];f:{g:{h:{i:{if(J[b+12>>2]){j:{if(!c){c=nj(52);J[a+8>>2]=c;J[c+48>>2]=0;J[c+40>>2]=0;J[c+44>>2]=0;J[c+32>>2]=0;J[c+36>>2]=0;J[c+24>>2]=0;J[c+28>>2]=0;J[c+16>>2]=0;J[c+20>>2]=0;J[c+8>>2]=0;J[c+12>>2]=0;J[c>>2]=0;J[c+4>>2]=0;c=J[a+8>>2];J[c>>2]=J[J[a>>2]+72>>2]+2416;break j}J[c+40>>2]=J[c+36>>2]}if(H[c+48|0]&1){break b}lj(J[b+12>>2],16,c+36|0,c+44|0,c+40|0);d=J[b+12>>2];if(d){c=0;while(1){if(c>>>0>=d>>>0){break h}g=J[b+8>>2]+(c<<3)|0;e=bj(J[g+4>>2]);f=Yi;h=J[a+8>>2];d=J[h+40>>2];if((d|0)==J[h+44>>2]){break a}g=J[g>>2];J[h+40>>2]=d+16;J[d+8>>2]=e;J[d+12>>2]=f;J[d>>2]=g;Sp(k,e,f,j+8|0);c=c+1|0;d=J[b+12>>2];if(c>>>0>>0){continue}break}}Sp(k,0,0,j+8|0);break i}if(!c){break i}k:{if(H[c+48|0]&1){break k}d=J[c+36>>2];if(!d){break k}cj(d)}cj(c);J[a+8>>2]=0}d=J[a+88>>2];if(d){e=J[a+92>>2];if(e){c=0;while(1){f=J[(d+(c<<3)|0)+4>>2];if(f){cj(f)}c=c+1|0;if((e|0)!=(c|0)){continue}break}}cj(d)}J[a+88>>2]=0;d=J[b+20>>2];J[a+92>>2]=d;l:{if(!d){break l}h=J[b+16>>2];e=nj(d>>>0>536870911?-1:d<<3);c=0;while(1){f=c<<3;g=f+e|0;f=f+h|0;J[g>>2]=J[f>>2];m=g;g=J[f+4>>2];i=yj(g);l=i+1|0;f=nj(l);J[m+4>>2]=f;ek(f,g,l);H[f+i|0]=0;c=c+1|0;if((d|0)!=(c|0)){continue}break}J[a+88>>2]=e;e=J[a+12>>2];f=J[a+16>>2];if((e|0)!=(f|0)){d=0;while(1){c=J[(d<<2)+e>>2];if(c){m:{if(H[c+336|0]&1){break m}e=J[c+316>>2];if(e){cj(e)}e=J[c+308>>2];if(!e){break m}cj(e)}n:{if(H[c+304|0]&1){break n}e=J[c+292>>2];if(!e){break n}cj(e)}cj(c);f=J[a+16>>2];e=J[a+12>>2]}d=d+1|0;if(d>>>0>2>>>0){continue}break}}J[a+16>>2]=e;d=Km(a,0);if(d){c=J[a+16>>2];if((c|0)==J[a+20>>2]){break a}J[a+16>>2]=c+4;J[c>>2]=d}d=Km(a,1);if(d){c=J[a+16>>2];if((c|0)==J[a+20>>2]){break a}J[a+16>>2]=c+4;J[c>>2]=d}d=Km(a,2);if(d){c=J[a+16>>2];if((c|0)==J[a+20>>2]){break a}J[a+16>>2]=c+4;J[c>>2]=d}d=Km(a,3);if(d){c=J[a+16>>2];if((c|0)==J[a+20>>2]){break a}J[a+16>>2]=c+4;J[c>>2]=d}d=Km(a,4);if(d){c=J[a+16>>2];if((c|0)==J[a+20>>2]){break a}J[a+16>>2]=c+4;J[c>>2]=d}d=Km(a,5);if(d){c=J[a+16>>2];if((c|0)==J[a+20>>2]){break a}J[a+16>>2]=c+4;J[c>>2]=d}d=Km(a,6);if(d){c=J[a+16>>2];if((c|0)==J[a+20>>2]){break a}J[a+16>>2]=c+4;J[c>>2]=d}d=Km(a,7);if(d){c=J[a+16>>2];if((c|0)==J[a+20>>2]){break a}J[a+16>>2]=c+4;J[c>>2]=d}d=Km(a,8);if(d){c=J[a+16>>2];if((c|0)==J[a+20>>2]){break a}J[a+16>>2]=c+4;J[c>>2]=d}d=Km(a,9);if(d){c=J[a+16>>2];if((c|0)==J[a+20>>2]){break a}J[a+16>>2]=c+4;J[c>>2]=d}d=Km(a,10);if(d){c=J[a+16>>2];if((c|0)==J[a+20>>2]){break a}J[a+16>>2]=c+4;J[c>>2]=d}d=Km(a,11);if(d){c=J[a+16>>2];if((c|0)==J[a+20>>2]){break a}J[a+16>>2]=c+4;J[c>>2]=d}d=Km(a,12);if(d){c=J[a+16>>2];if((c|0)==J[a+20>>2]){break a}J[a+16>>2]=c+4;J[c>>2]=d}d=Km(a,13);if(d){c=J[a+16>>2];if((c|0)==J[a+20>>2]){break a}J[a+16>>2]=c+4;J[c>>2]=d}d=Km(a,14);if(d){c=J[a+16>>2];if((c|0)==J[a+20>>2]){break a}J[a+16>>2]=c+4;J[c>>2]=d}d=Km(a,15);if(!d){break l}c=J[a+16>>2];if((c|0)==J[a+20>>2]){break a}J[a+16>>2]=c+4;J[c>>2]=d}c=J[a+28>>2];e=J[b+28>>2];o:{if(e){p:{if(!c){c=nj(996);J[a+28>>2]=c;ij(c,0,996);c=J[a+28>>2];J[c>>2]=J[J[a>>2]+72>>2]+2436;break p}J[c+984>>2]=J[c+980>>2]}if(H[c+992|0]&1){break b}lj(e,16,c+980|0,c+988|0,c+984|0);c=0;while(1){if(M[b+28>>2]<=c>>>0){break g}i=J[b+24>>2]+(c<<3)|0;f=bj(J[i+4>>2]);h=Yi;g=J[a+28>>2];d=J[g+984>>2];if((d|0)==J[g+988>>2]){break a}i=J[i>>2];J[g+984>>2]=d+16;J[d+8>>2]=f;J[d+12>>2]=h;J[d>>2]=i;d=j+8|0;Sp(k,f,h,d);c=c+1|0;if((e|0)!=(c|0)){continue}break}Sp(k,0,0,d);break o}if(!c){break o}q:{if(H[c+992|0]&1){break q}d=J[c+980>>2];if(!d){break q}cj(d)}cj(c);J[a+28>>2]=0}c=J[a+36>>2];e=J[b+36>>2];r:{if(e){s:{if(!c){c=nj(540);J[a+36>>2]=c;ij(c,0,540);break s}J[c+528>>2]=J[c+524>>2]}if(H[c+536|0]&1){break b}lj(e,16,c+524|0,c+532|0,c+528|0);c=0;while(1){if(M[b+36>>2]<=c>>>0){break f}i=J[b+32>>2]+(c<<3)|0;f=bj(J[i+4>>2]);h=Yi;g=J[a+36>>2];d=J[g+528>>2];if((d|0)==J[g+532>>2]){break a}i=J[i>>2];J[g+528>>2]=d+16;J[d+8>>2]=f;J[d+12>>2]=h;J[d>>2]=i;d=j+8|0;Sp(k,f,h,d);c=c+1|0;if((e|0)!=(c|0)){continue}break}Sp(k,0,0,d);break r}if(!c){break r}t:{if(H[c+536|0]&1){break t}b=J[c+524>>2];if(!b){break t}cj(b)}cj(c);J[a+36>>2]=0}if(!J[a+32>>2]){b=a;a=nj(24);J[b+32>>2]=a;J[a+16>>2]=0;J[a+20>>2]=0;J[a+8>>2]=0;J[a+12>>2]=0;J[a>>2]=0;J[a+4>>2]=0}Ui=j+960|0;return}Z(12664,54713,358,84789);B()}Z(12664,54713,374,84789);B()}Z(12664,54713,382,84789);B()}Z(151729,53895,501,2284);B()}Z(112520,53895,557,53220);B()}function js(a,b){var c=0,d=0,e=0;d=Ui-16|0;Ui=d;po(a);J[a>>2]=b;a:{b:{switch(b-1|0){case 0:J[a+76>>2]=1;J[a+80>>2]=6;J[a+28>>2]=1;J[a+32>>2]=6;J[a+4>>2]=1;J[a+8>>2]=6;J[a+64>>2]=1;J[a+68>>2]=1;J[a+52>>2]=1;J[a+56>>2]=6;J[a+40>>2]=1;J[a+44>>2]=6;J[a+84>>2]=175776;J[a+36>>2]=175680;J[a+12>>2]=175648;J[a+72>>2]=267340;J[a+60>>2]=175744;J[a+48>>2]=175712;J[a+88>>2]=Xk(a+4|0);b=Xk(a+76|0);J[a+96>>2]=1;J[a+92>>2]=b;b=0;break a;case 1:J[a+76>>2]=1;J[a+80>>2]=7;J[a+28>>2]=1;J[a+32>>2]=7;J[a+4>>2]=1;J[a+8>>2]=8;J[a+64>>2]=1;J[a+68>>2]=1;J[a+52>>2]=1;J[a+56>>2]=7;J[a+40>>2]=1;J[a+44>>2]=7;J[a+84>>2]=175936;J[a+36>>2]=175840;J[a+12>>2]=175808;J[a+72>>2]=267340;J[a+60>>2]=175904;J[a+48>>2]=175872;J[a+88>>2]=Xk(a+4|0);b=Xk(a+76|0);J[a+96>>2]=1;J[a+92>>2]=b;b=0;break a;case 2:J[a+76>>2]=1;J[a+80>>2]=8;J[a+28>>2]=1;J[a+32>>2]=8;J[a+4>>2]=1;J[a+8>>2]=8;J[a+64>>2]=1;J[a+68>>2]=1;J[a+52>>2]=1;J[a+56>>2]=8;J[a+40>>2]=1;J[a+44>>2]=8;J[a+84>>2]=176096;J[a+36>>2]=176e3;J[a+12>>2]=175968;J[a+72>>2]=267340;J[a+60>>2]=176064;J[a+48>>2]=176032;J[a+88>>2]=Xk(a+4|0);b=Xk(a+76|0);J[a+96>>2]=1;J[a+92>>2]=b;b=0;break a;case 3:J[a+76>>2]=1;J[a+80>>2]=12;J[a+28>>2]=1;J[a+32>>2]=12;J[a+4>>2]=1;J[a+8>>2]=12;J[a+64>>2]=1;J[a+68>>2]=1;J[a+52>>2]=1;J[a+56>>2]=12;J[a+40>>2]=1;J[a+44>>2]=12;J[a+84>>2]=176320;J[a+36>>2]=176176;J[a+12>>2]=176128;J[a+72>>2]=267340;J[a+60>>2]=176272;J[a+48>>2]=176224;J[a+88>>2]=Xk(a+4|0);b=Xk(a+76|0);J[a+96>>2]=1;J[a+92>>2]=b;b=0;break a;case 4:J[a+76>>2]=1;J[a+80>>2]=17;J[a+28>>2]=1;J[a+32>>2]=17;J[a+4>>2]=1;J[a+8>>2]=17;J[a+64>>2]=1;J[a+68>>2]=1;J[a+52>>2]=1;J[a+56>>2]=17;J[a+40>>2]=1;J[a+44>>2]=17;J[a+84>>2]=176688;J[a+36>>2]=176448;J[a+12>>2]=176368;J[a+72>>2]=267340;J[a+60>>2]=176608;J[a+48>>2]=176528;J[a+88>>2]=Xk(a+4|0);b=Xk(a+76|0);J[a+96>>2]=1;J[a+92>>2]=b;b=0;break a;case 9:J[a+76>>2]=1;J[a+80>>2]=6;J[a+28>>2]=1;J[a+32>>2]=1;J[a+16>>2]=1;J[a+20>>2]=1;J[a+4>>2]=1;J[a+8>>2]=6;J[a+64>>2]=1;J[a+68>>2]=1;J[a+52>>2]=1;J[a+56>>2]=6;J[a+40>>2]=1;J[a+44>>2]=6;J[a+84>>2]=176864;J[a+36>>2]=176796;J[a+24>>2]=176792;J[a+12>>2]=176768;J[a+100>>2]=2185;J[a+72>>2]=267340;J[a+60>>2]=176832;J[a+48>>2]=176800;J[a+88>>2]=Xk(a+4|0);b=Xk(a+76|0);J[a+96>>2]=1;J[a+92>>2]=b;b=0;break a;case 10:J[a+76>>2]=1;J[a+80>>2]=8;J[a+28>>2]=1;J[a+32>>2]=1;J[a+16>>2]=1;J[a+20>>2]=1;J[a+4>>2]=1;J[a+8>>2]=7;J[a+64>>2]=1;J[a+68>>2]=1;J[a+52>>2]=1;J[a+56>>2]=7;J[a+40>>2]=1;J[a+44>>2]=7;J[a+84>>2]=177008;J[a+36>>2]=176928;J[a+24>>2]=176924;J[a+12>>2]=176896;J[a+100>>2]=2186;J[a+72>>2]=267340;J[a+60>>2]=176976;J[a+48>>2]=176944;J[a+88>>2]=Xk(a+4|0);b=Xk(a+76|0);J[a+96>>2]=1;J[a+92>>2]=b;b=0;break a;case 11:J[a+76>>2]=1;J[a+80>>2]=8;J[a+28>>2]=1;J[a+32>>2]=1;J[a+16>>2]=1;J[a+20>>2]=1;J[a+4>>2]=1;J[a+8>>2]=8;J[a+64>>2]=1;J[a+68>>2]=1;J[a+52>>2]=1;J[a+56>>2]=8;J[a+40>>2]=1;J[a+44>>2]=8;J[a+84>>2]=177152;J[a+36>>2]=177076;J[a+24>>2]=177072;J[a+12>>2]=177040;J[a+100>>2]=2187;J[a+72>>2]=267340;J[a+60>>2]=177120;J[a+48>>2]=177088;J[a+88>>2]=Xk(a+4|0);b=Xk(a+76|0);J[a+96>>2]=1;J[a+92>>2]=b;b=0;break a;case 5:J[a+76>>2]=1;J[a+80>>2]=8;J[a+28>>2]=1;J[a+32>>2]=8;J[a+16>>2]=1;J[a+20>>2]=8;J[a+4>>2]=1;J[a+8>>2]=8;J[a+64>>2]=1;J[a+68>>2]=1;J[a+52>>2]=1;J[a+56>>2]=8;J[a+40>>2]=1;J[a+44>>2]=8;J[a+84>>2]=177344;J[a+36>>2]=177248;J[a+24>>2]=177216;J[a+12>>2]=177184;J[a+72>>2]=267340;J[a+60>>2]=177312;J[a+48>>2]=177280;J[a+88>>2]=Xk(a+4|0);b=Xk(a+76|0);J[a+96>>2]=1;J[a+92>>2]=b;b=0;break a;case 6:J[a+76>>2]=1;J[a+80>>2]=12;J[a+28>>2]=1;J[a+32>>2]=12;J[a+16>>2]=1;J[a+20>>2]=12;J[a+4>>2]=1;J[a+8>>2]=12;J[a+64>>2]=1;J[a+68>>2]=1;J[a+52>>2]=1;J[a+56>>2]=12;J[a+40>>2]=1;J[a+44>>2]=12;J[a+84>>2]=177616;J[a+36>>2]=177472;J[a+24>>2]=177424;J[a+12>>2]=177376;J[a+72>>2]=267340;J[a+60>>2]=177568;J[a+48>>2]=177520;J[a+88>>2]=Xk(a+4|0);b=Xk(a+76|0);J[a+96>>2]=1;J[a+92>>2]=b;b=0;break a;case 7:J[a+76>>2]=1;J[a+80>>2]=16;J[a+28>>2]=1;J[a+32>>2]=16;J[a+16>>2]=1;J[a+20>>2]=16;J[a+4>>2]=1;J[a+8>>2]=16;J[a+64>>2]=1;J[a+68>>2]=1;J[a+52>>2]=1;J[a+56>>2]=16;J[a+40>>2]=1;J[a+44>>2]=16;J[a+84>>2]=177984;J[a+36>>2]=177792;J[a+24>>2]=177728;J[a+12>>2]=177664;J[a+72>>2]=267340;J[a+60>>2]=177920;J[a+48>>2]=177856;J[a+88>>2]=Xk(a+4|0);b=Xk(a+76|0);J[a+96>>2]=1;J[a+92>>2]=b;b=0;break a;case 8:J[a+100>>2]=2188;c:{b=zw(a+16|0,109383);if(b){break c}c=a+4|0;b=kl(c,1);if(b){break c}b=Vn(c,255);if(b){break c}b=km(c,c,19);if(b){break c}J[a+88>>2]=Xk(c);c=a+76|0;b=zw(c,98053);if(b){break c}b=hq(c,252,1);if(b){break c}b=kl(a+40|0,9);if(b){break c}b=kl(a- -64|0,1);if(b){break c}Dj(a+52|0);J[a+92>>2]=254;b=0;break a}po(a);break a;case 12:J[a+100>>2]=2189;e=d+4|0;b=e;J[b+8>>2]=0;J[b>>2]=1;J[b+4>>2]=0;d:{b=zw(a+16|0,101477);if(b){break d}c=a+4|0;b=kl(c,1);if(b){break d}b=Vn(c,224);if(b){break d}b=km(c,c,1);if(b){break d}b=Vn(c,224);if(b){break d}b=km(c,c,1);if(b){break d}J[a+88>>2]=Xk(c);b=kl(a+40|0,5);if(b){break d}b=kl(a- -64|0,1);if(b){break d}Dj(a+52|0);c=a+76|0;b=hq(c,446,1);if(b){break d}b=zw(e,98805);if(b){break d}b=wl(c,c,e);if(b){break d}J[a+92>>2]=447;Dj(e);b=0;break a}Dj(d+4|0);po(a);break a;default:break b}}po(a);b=-20096}Ui=d+16|0;return b}function UT(a,b,c,d,e,f,g,h){var i=0,j=Q(0),k=0,l=Q(0),m=Q(0),n=Q(0),o=Q(0),p=Q(0),q=Q(0),r=Q(0),s=Q(0),t=Q(0),u=Q(0),v=Q(0),w=Q(0),x=Q(0),y=Q(0),z=Q(0),A=Q(0),B=Q(0),C=Q(0),D=Q(0),E=Q(0),F=Q(0),G=Q(0),I=Q(0),L=0,M=Q(0),O=Q(0),R=0,S=0;i=Ui-640|0;Ui=i;k=J[e+4>>2];a:{if((k|0)<=19){N[i+636>>2]=h;J[i+632>>2]=0;J[i+464>>2]=244680;N[i+628>>2]=N[g+4>>2];H[i+436|0]=0;J[i+412>>2]=953267991;J[i+24>>2]=246848;k=i+84|0;J[k+16>>2]=e;J[k+12>>2]=a;J[k+8>>2]=i+24;J[k+4>>2]=i+104;J[k>>2]=246780;b:{if(!(Zi[J[J[k>>2]+8>>2]](k,b,c,f,f,i+464|0)|0)){break b}h=N[i+604>>2];l=N[i+596>>2];m=N[i+600>>2];n=Q(Q(h*h)+Q(Q(l*l)+Q(m*m)));if(!(n>Q(9999999747378752e-20))){break b}j=N[i+628>>2];if(!(j>2])){break b}p=h;h=Q(Q(1)/Q(Y(n)));N[i+604>>2]=p*h;N[i+600>>2]=m*h;N[i+596>>2]=l*h;J[i+44>>2]=0;J[i+40>>2]=d;a=J[i+608>>2];J[i+56>>2]=J[i+604>>2];J[i+60>>2]=a;a=J[i+596>>2];b=J[i+600>>2];c=J[i+624>>2];J[i+72>>2]=J[i+620>>2];J[i+76>>2]=c;J[i+48>>2]=a;J[i+52>>2]=b;a=J[i+616>>2];J[i+64>>2]=J[i+612>>2];J[i+68>>2]=a;N[i+80>>2]=j;Q(Zi[J[J[g>>2]+12>>2]](g,i+40|0,1))}break a}if(k-21>>>0<=8){n=N[f+8>>2];j=Q(-N[f+48>>2]);t=N[f+24>>2];o=N[f+52>>2];u=N[f+40>>2];v=N[f+56>>2];w=Q(Q(Q(n*j)-Q(t*o))-Q(u*v));h=N[f+4>>2];m=N[f+20>>2];q=N[f+36>>2];x=Q(Q(Q(h*j)-Q(m*o))-Q(q*v));l=N[f>>2];p=N[f+16>>2];j=Q(Q(l*j)-Q(p*o));o=N[f+32>>2];v=Q(j-Q(o*v));if((k|0)==21){j=N[b+56>>2];r=N[b+48>>2];s=N[b+52>>2];J[i+52>>2]=0;N[i+48>>2]=w+Q(Q(u*j)+Q(Q(n*r)+Q(t*s)));N[i+44>>2]=x+Q(Q(q*j)+Q(Q(h*r)+Q(m*s)));N[i+40>>2]=v+Q(Q(o*j)+Q(Q(l*r)+Q(p*s)));j=N[c+56>>2];r=N[c+48>>2];s=N[c+52>>2];J[i+96>>2]=0;N[i+92>>2]=w+Q(Q(u*j)+Q(Q(n*r)+Q(t*s)));N[i+88>>2]=x+Q(Q(q*j)+Q(Q(h*r)+Q(m*s)));N[i+84>>2]=v+Q(Q(o*j)+Q(Q(l*r)+Q(p*s)));j=N[c+32>>2];w=N[c>>2];x=N[c+16>>2];v=N[c+36>>2];r=N[c+4>>2];s=N[c+20>>2];y=N[c+40>>2];z=N[c+8>>2];A=N[c+24>>2];J[i+516>>2]=0;J[i+520>>2]=0;J[i+524>>2]=0;J[i+508>>2]=0;J[i+512>>2]=0;J[i+492>>2]=0;J[i+476>>2]=0;N[i+504>>2]=Q(y*u)+Q(Q(z*n)+Q(t*A));N[i+500>>2]=Q(v*u)+Q(Q(r*n)+Q(t*s));N[i+496>>2]=Q(j*u)+Q(Q(w*n)+Q(t*x));N[i+488>>2]=Q(y*q)+Q(Q(z*h)+Q(m*A));N[i+484>>2]=Q(v*q)+Q(Q(r*h)+Q(m*s));N[i+480>>2]=Q(j*q)+Q(Q(w*h)+Q(m*x));N[i+472>>2]=Q(y*o)+Q(Q(z*l)+Q(p*A));N[i+468>>2]=Q(v*o)+Q(Q(r*l)+Q(p*s));N[i+464>>2]=Q(j*o)+Q(Q(w*l)+Q(p*x));b=XS(i+104|0,a,b,c,f,Q(Zi[J[J[e>>2]+44>>2]](e)));J[b+216>>2]=e;J[b+212>>2]=d;J[b+208>>2]=g;J[b>>2]=244776;N[b+200>>2]=N[g+4>>2];c=i+24|0;d=i+8|0;Zi[J[J[a>>2]+8>>2]](a,i+464|0,c,d);a=Ui-16|0;Ui=a;f=J[e+48>>2];J[a+12>>2]=b;J[a+8>>2]=f;J[a+4>>2]=245956;f=a+4|0;g=i+40|0;k=i+84|0;b=J[e+52>>2];c:{if(K[b+60|0]==1){iT(b,f,g,k,c,d,J[b+56>>2]);break c}hT(b,f,g,k,c,d)}Ui=a+16|0;break a}r=N[c+56>>2];s=N[c+48>>2];y=N[c+52>>2];z=N[b+56>>2];A=N[b+48>>2];C=N[b+52>>2];j=N[c+32>>2];B=N[c>>2];D=N[c+16>>2];E=N[c+36>>2];F=N[c+4>>2];G=N[c+20>>2];I=N[c+40>>2];M=N[c+8>>2];O=N[c+24>>2];J[i+516>>2]=0;J[i+520>>2]=0;J[i+524>>2]=0;J[i+508>>2]=0;J[i+512>>2]=0;J[i+492>>2]=0;J[i+476>>2]=0;N[i+504>>2]=Q(I*u)+Q(Q(M*n)+Q(t*O));N[i+500>>2]=Q(E*u)+Q(Q(F*n)+Q(t*G));N[i+496>>2]=Q(j*u)+Q(Q(B*n)+Q(t*D));N[i+488>>2]=Q(I*q)+Q(Q(M*h)+Q(m*O));N[i+484>>2]=Q(E*q)+Q(Q(F*h)+Q(m*G));N[i+480>>2]=Q(j*q)+Q(Q(B*h)+Q(m*D));N[i+472>>2]=Q(I*o)+Q(Q(M*l)+Q(p*O));N[i+468>>2]=Q(E*o)+Q(Q(F*l)+Q(p*G));N[i+464>>2]=Q(j*o)+Q(Q(B*l)+Q(p*D));b=XS(i+104|0,a,b,c,f,Q(Zi[J[J[e>>2]+44>>2]](e)));J[b+216>>2]=e;J[b+212>>2]=d;J[b+208>>2]=g;J[b>>2]=244800;N[b+200>>2]=N[g+4>>2];Zi[J[J[a>>2]+8>>2]](a,i+464|0,i+40|0,i+84|0);J[i+36>>2]=0;B=Q(v+Q(Q(o*z)+Q(Q(l*A)+Q(p*C))));j=B;l=Q(v+Q(Q(o*r)+Q(Q(l*s)+Q(p*y))));if(j>l){N[i+24>>2]=l;j=l}o=Q(x+Q(Q(q*z)+Q(Q(h*A)+Q(m*C))));p=o;m=Q(x+Q(Q(q*r)+Q(Q(h*s)+Q(m*y))));if(o>m){N[i+28>>2]=m;p=m}q=Q(w+Q(Q(u*z)+Q(Q(n*A)+Q(t*C))));h=q;n=Q(w+Q(Q(u*r)+Q(Q(n*s)+Q(t*y))));if(h>n){N[i+32>>2]=n;h=n}J[i+20>>2]=0;N[i+24>>2]=N[i+40>>2]+j;N[i+28>>2]=N[i+44>>2]+p;N[i+32>>2]=N[i+48>>2]+h;N[i+8>>2]=N[i+84>>2]+(l>B?l:B);N[i+12>>2]=N[i+88>>2]+(m>o?m:o);N[i+16>>2]=N[i+92>>2]+(n>q?n:q);Zi[J[J[e>>2]+60>>2]](e,b,i+24|0,i+8|0);break a}if((k|0)!=31){break a}Xl(70940);if(J[e+16>>2]>0){S=J[d+192>>2];while(1){k=J[e+24>>2]+P(L,80)|0;R=J[k+64>>2];w=N[k+56>>2];x=N[k+48>>2];v=N[k+52>>2];r=N[k+32>>2];s=N[k>>2];y=N[k+16>>2];z=N[k+36>>2];A=N[k+4>>2];C=N[k+20>>2];B=N[k+40>>2];D=N[k+8>>2];E=N[k+24>>2];F=N[f+48>>2];G=N[f+52>>2];I=N[f+56>>2];l=N[f+8>>2];m=N[f>>2];n=N[f+4>>2];j=N[f+24>>2];p=N[f+16>>2];t=N[f+20>>2];u=N[f+40>>2];q=N[f+32>>2];o=N[f+36>>2];J[i+164>>2]=0;J[i+148>>2]=0;J[i+132>>2]=0;J[i+116>>2]=0;N[i+144>>2]=Q(B*u)+Q(Q(D*q)+Q(E*o));N[i+140>>2]=Q(z*u)+Q(Q(A*q)+Q(C*o));N[i+136>>2]=Q(r*u)+Q(Q(s*q)+Q(y*o));N[i+128>>2]=Q(B*j)+Q(Q(D*p)+Q(E*t));N[i+124>>2]=Q(z*j)+Q(Q(A*p)+Q(C*t));N[i+120>>2]=Q(r*j)+Q(Q(s*p)+Q(y*t));N[i+112>>2]=Q(B*l)+Q(Q(D*m)+Q(E*n));N[i+108>>2]=Q(z*l)+Q(Q(A*m)+Q(C*n));N[i+104>>2]=Q(r*l)+Q(Q(s*m)+Q(y*n));N[i+160>>2]=I+Q(Q(u*w)+Q(Q(q*x)+Q(v*o)));N[i+156>>2]=G+Q(Q(j*w)+Q(Q(p*x)+Q(v*t)));N[i+152>>2]=F+Q(Q(l*w)+Q(Q(m*x)+Q(v*n)));J[d+192>>2]=R;J[i+480>>2]=L;J[i+464>>2]=244824;J[i+472>>2]=-65535;J[i+476>>2]=g;N[i+468>>2]=N[g+4>>2];UT(a,b,c,d,R,i+104|0,i+464|0,h);J[d+192>>2]=S;L=L+1|0;if((L|0)>2]){continue}break}}Wl()}Ui=i+640|0}function Cr(a,b,c,d,e,f,g){var h=0,i=Q(0),j=0,k=0,l=0,m=0,n=0,o=0,p=0;h=Ui-224|0;Ui=h;a:{if(!a){k=-6;break a}I[g+108>>1]=I[g+108>>1]&1;if(!(b|c)){J[g+104>>2]=0;b:{if((d|0)==J[74064]&(e|0)==J[74065]){J[g+104>>2]=a+32;b=J[74067];J[g>>2]=J[74066];J[g+4>>2]=b;b=J[74069];J[g+8>>2]=J[74068];J[g+12>>2]=b;b=J[74071];J[g+16>>2]=J[74070];J[g+20>>2]=b;N[h+208>>2]=N[a+32>>2];N[h+212>>2]=N[a+36>>2];N[h+216>>2]=N[a+40>>2];J[h>>2]=3;N[h+8>>2]=N[h+208>>2];N[h+12>>2]=N[h+212>>2];N[h+16>>2]=N[h+216>>2];hj(g+32|0,h,72);break b}if((d|0)==J[74066]&(e|0)==J[74067]){J[g+104>>2]=a+32;i=N[a+32>>2];J[h>>2]=0;O[h+8>>3]=i;hj(g+32|0,h,72);break b}if((d|0)==J[74068]&(e|0)==J[74069]){J[g+104>>2]=a+36;i=N[a+36>>2];J[h>>2]=0;O[h+8>>3]=i;hj(g+32|0,h,72);break b}if((d|0)==J[74070]&(e|0)==J[74071]){J[g+104>>2]=a+40;i=N[a+40>>2];J[h>>2]=0;O[h+8>>3]=i;hj(g+32|0,h,72);break b}if((d|0)==J[74038]&(e|0)==J[74039]){J[g+104>>2]=a+16;b=J[74041];J[g>>2]=J[74040];J[g+4>>2]=b;b=J[74043];J[g+8>>2]=J[74042];J[g+12>>2]=b;b=J[74045];J[g+16>>2]=J[74044];J[g+20>>2]=b;N[h+192>>2]=N[a+16>>2];N[h+196>>2]=N[a+20>>2];N[h+200>>2]=N[a+24>>2];J[h>>2]=3;N[h+8>>2]=N[h+192>>2];N[h+12>>2]=N[h+196>>2];N[h+16>>2]=N[h+200>>2];hj(g+32|0,h,72);break b}if((d|0)==J[74040]&(e|0)==J[74041]){J[g+104>>2]=a+16;i=N[a+16>>2];J[h>>2]=0;O[h+8>>3]=i;hj(g+32|0,h,72);break b}if((d|0)==J[74042]&(e|0)==J[74043]){J[g+104>>2]=a+20;i=N[a+20>>2];J[h>>2]=0;O[h+8>>3]=i;hj(g+32|0,h,72);break b}if((d|0)==J[74044]&(e|0)==J[74045]){J[g+104>>2]=a+24;i=N[a+24>>2];J[h>>2]=0;O[h+8>>3]=i;hj(g+32|0,h,72);break b}if((d|0)==J[74046]&(e|0)==J[74047]){if(!(!(J[a+48>>2]!=J[a+64>>2]|J[a+52>>2]!=J[a+68>>2])&J[a+56>>2]==J[a+72>>2])){et(a)}J[g+104>>2]=a;b=J[74049];J[g>>2]=J[74048];J[g+4>>2]=b;b=J[74051];J[g+8>>2]=J[74050];J[g+12>>2]=b;b=J[74053];J[g+16>>2]=J[74052];J[g+20>>2]=b;b=J[74055];J[g+24>>2]=J[74054];J[g+28>>2]=b;N[h+176>>2]=N[a>>2];N[h+180>>2]=N[a+4>>2];N[h+184>>2]=N[a+8>>2];N[h+188>>2]=N[a+12>>2];J[h>>2]=5;N[h+8>>2]=N[h+176>>2];N[h+12>>2]=N[h+180>>2];N[h+16>>2]=N[h+184>>2];N[h+20>>2]=N[h+188>>2];hj(g+32|0,h,72);break b}if((d|0)==J[74048]&(e|0)==J[74049]){if(!(!(J[a+48>>2]!=J[a+64>>2]|J[a+52>>2]!=J[a+68>>2])&J[a+56>>2]==J[a+72>>2])){et(a)}J[g+104>>2]=a;i=N[a>>2];J[h>>2]=0;O[h+8>>3]=i;hj(g+32|0,h,72);break b}if((d|0)==J[74050]&(e|0)==J[74051]){if(!(!(J[a+48>>2]!=J[a+64>>2]|J[a+52>>2]!=J[a+68>>2])&J[a+56>>2]==J[a+72>>2])){et(a)}J[g+104>>2]=a+4;i=N[a+4>>2];J[h>>2]=0;O[h+8>>3]=i;hj(g+32|0,h,72);break b}if((d|0)==J[74052]&(e|0)==J[74053]){if(!(!(J[a+48>>2]!=J[a+64>>2]|J[a+52>>2]!=J[a+68>>2])&J[a+56>>2]==J[a+72>>2])){et(a)}J[g+104>>2]=a+8;i=N[a+8>>2];J[h>>2]=0;O[h+8>>3]=i;hj(g+32|0,h,72);break b}if((d|0)==J[74054]&(e|0)==J[74055]){if(!(!(J[a+48>>2]!=J[a+64>>2]|J[a+52>>2]!=J[a+68>>2])&J[a+56>>2]==J[a+72>>2])){et(a)}J[g+104>>2]=a+12;i=N[a+12>>2];J[h>>2]=0;O[h+8>>3]=i;hj(g+32|0,h,72);break b}if((d|0)==J[74056]&(e|0)==J[74057]){b=a+48|0;i=N[a+48>>2];if(!(J[a+64>>2]!=J[a+48>>2]|J[a+52>>2]!=J[a+68>>2]|J[a+56>>2]!=J[a+72>>2])){yy(a);i=N[a+48>>2]}J[g+104>>2]=b;b=J[74059];J[g>>2]=J[74058];J[g+4>>2]=b;b=J[74061];J[g+8>>2]=J[74060];J[g+12>>2]=b;b=J[74063];J[g+16>>2]=J[74062];J[g+20>>2]=b;N[h+160>>2]=i;N[h+164>>2]=N[a+52>>2];N[h+168>>2]=N[a+56>>2];J[h>>2]=3;N[h+8>>2]=N[h+160>>2];N[h+12>>2]=N[h+164>>2];N[h+16>>2]=N[h+168>>2];hj(g+32|0,h,72);break b}if((d|0)==J[74058]&(e|0)==J[74059]){b=a+48|0;i=N[a+48>>2];if(!(J[a+64>>2]!=J[a+48>>2]|J[a+52>>2]!=J[a+68>>2]|J[a+56>>2]!=J[a+72>>2])){yy(a);i=N[a+48>>2]}J[g+104>>2]=b;J[h>>2]=0;O[h+8>>3]=i;hj(g+32|0,h,72);break b}if((d|0)==J[74060]&(e|0)==J[74061]){if(!(J[a+48>>2]!=J[a+64>>2]|J[a+52>>2]!=J[a+68>>2]|J[a+56>>2]!=J[a+72>>2])){yy(a)}J[g+104>>2]=a+52;i=N[a+52>>2];J[h>>2]=0;O[h+8>>3]=i;hj(g+32|0,h,72);break b}if(J[74062]!=(d|0)|J[74063]!=(e|0)){break b}if(!(J[a+48>>2]!=J[a+64>>2]|J[a+52>>2]!=J[a+68>>2]|J[a+56>>2]!=J[a+72>>2])){yy(a)}J[g+104>>2]=a+56;i=N[a+56>>2];J[h>>2]=0;O[h+8>>3]=i;hj(g+32|0,h,72)}k=J[g+104>>2]?0:-1;break a}k=-5;j=J[a+84>>2];n=J[j+4>>2];if(!n){break a}m=J[j>>2];j=0;while(1){o=P(j,96)+m|0;if(J[o>>2]!=(b|0)|J[o+4>>2]!=(c|0)){l=l+1|0;j=j+1|0;if((n|0)!=(j|0)){continue}break a}break}b=j&65535;o=P(b,96)+m|0;c=J[o+16>>2];if(!J[c+84>>2]){k=-1;break a}j=0;if(H[c+102|0]&1){c:{if(!b){b=0;break c}n=l&3;k=0;b=0;l=l&65535;if(l-1>>>0>=3){p=l&65532;l=0;while(1){b=((((I[J[(P(j,96)+m|0)+16>>2]+102>>1]&1)+b|0)+(I[J[(P(j|1,96)+m|0)+16>>2]+102>>1]&1)|0)+(I[J[(P(j|2,96)+m|0)+16>>2]+102>>1]&1)|0)+(I[J[(P(j|3,96)+m|0)+16>>2]+102>>1]&1)|0;j=j+4|0;l=l+4|0;if((p|0)!=(l|0)){continue}break}}if(!n){break c}while(1){b=(I[J[(P(j,96)+m|0)+16>>2]+102>>1]&1)+b|0;j=j+1|0;k=k+1|0;if((n|0)!=(k|0)){continue}break}}j=((b<<2)+a|0)+156|0}b=h+144|0;J[b>>2]=0;H[b+8|0]=K[b+8|0]&254;J[h+112>>2]=J[c+16>>2];b=J[(J[a+80>>2]+(J[o+20>>2]<<2)|0)+12>>2];J[h+128>>2]=d;J[h+132>>2]=e;J[h+120>>2]=a;J[h+116>>2]=b;H[h+152|0]=K[f+8|0];a=J[f+4>>2];J[h+144>>2]=J[f>>2];J[h+148>>2]=a;J[h+136>>2]=j;a=Zp(h);k=Zi[J[c+84>>2]](h+112|0,a)|0;if(k){break a}hj(g,a,110)}Ui=h+224|0;return k}function CU(a,b,c,d,e,f,g,h){var i=0,j=0,k=0,l=0,m=0,n=0,o=0,p=0,q=0,r=0,s=0,t=0,u=0,v=0;a:{b:{c:{d:{e:{f:{if(f>>>0<22){g:{if(!(H[a+585|0]&1)|c>>>0<78|((K[b|0]|K[b+1|0]<<8)!=17011|(K[b+2|0]|K[b+3|0]<<8)!=19)){break g}if((K[b+4|0]|K[b+5|0]<<8)!=77|(K[b+8|0]|K[b+9|0]<<8|(K[b+10|0]<<16|K[b+11|0]<<24))+77>>>0>c>>>0){break g}j=K[b+14|0]|(K[b+15|0]<<8|K[b+16|0]<<16);if(!j|!(K[b+17|0]|(K[b+18|0]<<8|K[b+19|0]<<16))){break g}k=K[b+65|0]|K[b+66|0]<<8|(K[b+67|0]<<16|K[b+68|0]<<24);if(k>>>0>=c>>>0|c-k>>>0>>0){break g}o=J[(f<<2)+171956>>2];m=b+k|0;r=K[b+21|0]&4;while(1){i=m+P(l,23)|0;if(K[i+1|0]<<8|K[i+2|0]<<16|K[i|0]|K[i+3|0]){l=l+1|0;if((j|0)!=(l|0)){continue}break g}break}k=K[b+20|0];h:{if(k){break h}if(H[i+4|0]&1){break g}if(!r){break h}p=j;j=l+1|0;if(p>>>0<=j>>>0){break g}j=m+P(j,23)|0;if(!(H[j+4|0]&1)|(K[i+9|0]|K[i+10|0]<<8)!=(K[j+9|0]|K[j+10|0]<<8)|(K[i+11|0]|K[i+12|0]<<8)!=(K[j+11|0]|K[j+12|0]<<8)){break g}}q=(f|0)==9?r?9:8:f;i:{if((q&30)!=8){break i}f=P(K[i+11|0]|K[i+12|0]<<8,K[i+9|0]|K[i+10|0]<<8);if(f>>>0>=e>>>0){break i}ij(P(f,o)+d|0,0,P(o,e-f|0));k=K[b+20|0]}if((k&255)==1){f=b;n=K[i+9|0]|K[i+10|0]<<8;j=K[i+11|0]|K[i+12|0]<<8;o=K[i+5|0]|K[i+6|0]<<8;m=K[i+7|0]|K[i+8|0]<<8;s=(r|0)!=0;k=0;a=0;l=K[i+13|0]|K[i+14|0]<<8|(K[i+15|0]<<16|K[i+16|0]<<24);p=K[i+17|0]|K[i+18|0]<<8|(K[i+19|0]<<16|K[i+20|0]<<24);b=l+p|0;a=l>>>0>b>>>0?1:a;j:{if(!a&b>>>0>c>>>0|a){break j}a=8;if((q&-2)==8){if((nxa(n<<2)|0)!=1){break j}if((nxa(j<<2)|0)!=1){break j}}b=4;k:{l:{m:{n:{o:{p:{c=(q|0)==9?s?9:8:q;switch(c|0){case 13:break m;case 0:case 2:case 4:case 8:case 9:case 11:case 18:case 19:case 20:break n;case 1:case 3:case 5:case 6:case 7:case 10:case 12:case 17:case 21:break o;case 14:case 15:case 16:break p;default:break a}}b=2;break m}a=16}if(c-13>>>0>3){break l}b=a}if(P(h?h:m,g?g:o)>>>0<=e>>>0){break k}break j}if(P(j,n)>>>0>e>>>0){break j}b=a;if((c|0)==17){break j}}q:{switch(c-1|0){default:k=en(d,n,j,f+l|0,p,0,b,o,m,g,h,-1,-1);break j;case 0:k=en(d,n,j,f+l|0,p,1,b,o,m,g,h,-1,-1);break j;case 1:k=en(d,n,j,f+l|0,p,2,b,o,m,g,h,-1,-1);break j;case 2:k=en(d,n,j,f+l|0,p,3,b,o,m,g,h,-1,-1);break j;case 3:k=en(d,n,j,f+l|0,p,4,b,o,m,g,h,0,-1);break j;case 4:k=en(d,n,j,f+l|0,p,5,b,o,m,g,h,0,3);break j;case 5:case 6:k=en(d,n,j,f+l|0,p,8,b,o,m,g,h,-1,-1);break j;case 7:k=en(d,n,j,f+l|0,p,6,b,o,m,g,h,-1,-1);break j;case 8:k=en(d,n,j,f+l|0,p,7,b,o,m,g,h,-1,-1);break j;case 9:k=en(d,n,j,f+l|0,p,12,b,o,m,g,h,-1,-1);break j;case 19:k=en(d,n,j,f+l|0,p,18,b,o,m,g,h,0,-1);break j;case 20:k=en(d,n,j,f+l|0,p,19,b,o,m,g,h,0,3);break j;case 12:k=en(d,n,j,f+l|0,p,22,b,o,m,g,h,-1,-1);break j;case 13:k=en(d,n,j,f+l|0,p,24,b,o,m,g,h,-1,-1);break j;case 14:k=en(d,n,j,f+l|0,p,25,b,o,m,g,h,-1,-1);break j;case 10:case 11:case 16:case 17:case 18:break j;case 15:break q}}k=en(d,n,j,f+l|0,p,29,b,o,m,g,h,-1,-1)}return k}if(H[i+4|0]&1){break f}r:{if(!r){l=K[i+11|0]|K[i+12|0]<<8;m=K[i+9|0]|K[i+10|0]<<8;f=K[i+3|0];break r}if(!(H[i+27|0]&1)){break e}m=K[i+9|0]|K[i+10|0]<<8;if((m|0)!=(K[i+32|0]|K[i+33|0]<<8)){break d}l=K[i+11|0]|K[i+12|0]<<8;if((l|0)!=(K[i+34|0]|K[i+35|0]<<8)){break c}f=K[i+3|0];if((f|0)!=K[i+26|0]){break b}}k=0;n=a;j=d;o=b;d=m;s=K[i+5|0]|K[i+6|0]<<8;t=K[i+7|0]|K[i+8|0]<<8;u=f&255;v=K[i+13|0]|K[i+14|0]<<8|(K[i+15|0]<<16|K[i+16|0]<<24);p=K[i+17|0]|K[i+18|0]<<8|(K[i+19|0]<<16|K[i+20|0]<<24);if(r){k=K[i+40|0]|K[i+41|0]<<8|(K[i+42|0]<<16|K[i+43|0]<<24);m=K[i+36|0]|K[i+37|0]<<8|(K[i+38|0]<<16|K[i+39|0]<<24)}else{m=0}f=k;r=(r|0)!=0;i=K[o+23|0]==3;k=0;a=0;s:{b=p+v|0;a=b>>>0>>0?1:a;if(!a&b>>>0>c>>>0|a){break s}t:{u:{if(f){a=0;b=f+m|0;if(!(b>>>0>>0?1:a)&b>>>0<=c>>>0){break u}break s}if(r){break t}}a=8;if((q&-2)==8){if((nxa(d<<2)|0)!=1){break s}if((nxa(l<<2)|0)!=1){break s}}b=4;v:{w:{x:{y:{z:{A:{q=(q|0)==9?r?9:8:q;switch(q|0){case 13:break x;case 0:case 2:case 4:case 8:case 9:case 11:case 18:case 19:case 20:break y;case 1:case 3:case 5:case 6:case 7:case 10:case 12:case 17:case 21:break z;case 14:case 15:case 16:break A;default:break a}}b=2;break x}a=16}if(q-13>>>0>3){break w}b=a}if(P(h?h:t,g?g:s)>>>0<=e>>>0){break v}break s}if(P(d,l)>>>0>e>>>0){break s}b=a;if((q|0)==17){break s}}e=m+o|0;c=o+v|0;a=p;B:{switch(q-1|0){default:k=xt(n,j,d,l,c,a,0,b,i,0,u,s,t,g,h);break s;case 12:if(r){if(!xt(n,j,d,l,e,f,23,4,i,1,u,s,t,g,h)){break s}b=21}else{b=22}k=xt(n,j,d,l,c,a,b,4,i,0,u,s,t,g,h);break s;case 13:case 14:k=xt(n,j,d,l,c,a,(q|0)==14?24:25,2,i,0,u,s,t,g,h);break s;case 0:case 1:case 2:case 3:case 4:case 5:case 6:case 7:case 8:case 9:case 10:case 11:case 16:case 17:case 18:case 19:case 20:break s;case 15:break B}}if(r){if(!xt(n,j,d,l,e,f,27,2,i,1,u,s,t,g,h)){break s}b=26}else{b=28}k=xt(n,j,d,l,c,a,b,2,i,0,u,s,t,g,h);break s}Z(25152,40075,8720,68720);B()}n=k}return n}break a}Z(113387,40075,10803,49880);B()}Z(113999,40075,10808,49880);B()}Z(5881,40075,10809,49880);B()}Z(4265,40075,10810,49880);B()}Z(5097,40075,10811,49880);B()}Z(114101,40075,10867,49757);B()}function bQ(a,b,c,d,e,f,g,h,i){var j=Q(0),k=Q(0),l=Q(0),m=0,n=0,o=0,p=0,q=Q(0),r=0,s=0,t=0,u=Q(0),v=Q(0),w=0,x=0,y=0,z=Q(0),A=Q(0),C=0;x=J[a+8>>2]-J[a+12>>2]>>4;J[i+16>>2]=b;J[i+20>>2]=c;J[i>>2]=0;o=Zi[J[79460]](d,e)|0;d=Zi[J[79461]](d,e)|0;b=ixa(f,0,56,0);c=nj(Yi?-1:b);J[i+104>>2]=f;J[i+100>>2]=c;ij(c,0,b);b=ixa(g,0,36,0);c=nj(Yi?-1:b);J[i+28>>2]=g;J[i+24>>2]=c;ij(c,0,b);n=f<<3;b=nj(f>>>0>536870911?-1:n);J[i+72>>2]=f;J[i+68>>2]=b;b=h<<5;c=nj(b);J[i+88>>2]=b;J[i+84>>2]=c;y=ij(c,0,b);w=f<<5;s=nj(n>>>0>1073741823?-1:w);a:{b:{c:{d:{if(f){rj(a,-1,23613);z=Q(Q(1)/Q(d>>>0));A=Q(Q(1)/Q(o>>>0));h=0;d=s;while(1){b=J[a+8>>2];J[b+8>>2]=3;o=h+1|0;O[b>>3]=o>>>0;J[a+8>>2]=J[a+8>>2]+16;Ck(a,-2);e:{f:{if(M[i+104>>2]>h>>>0){b=J[i+100>>2]+P(h,56)|0;TF(a,25047,b+24|0,b+28|0);TF(a,17417,b+32|0,b+36|0);rj(a,-1,25223);e=fl(a,-1);m=nj(e>>>0>1073741823?-1:e<<2);c=J[a+8>>2];J[c+8>>2]=0;J[a+8>>2]=c+16;if($j(a,-2)){c=m-4|0;while(1){r=ok(a,-2);g:{if(R(r)<2147483648){p=~~r;break g}p=-2147483648}t=(p<<2)+c|0;r=ok(a,-1);h:{if(R(r)<2147483648){p=~~r;break h}p=-2147483648}J[t>>2]=p;gj(a,-2);if($j(a,-2)){continue}break}}gj(a,-2);J[b+44>>2]=e;J[b+40>>2]=m;rj(a,-1,72520);if(Mk(a,-1)){c=bj(Ij(a,-1,0));e=Yi}else{c=0;e=0}gj(a,-2);if(M[i+72>>2]<=h>>>0){break f}h=J[i+68>>2]+(h<<3)|0;J[h>>2]=c;J[h+4>>2]=e;rj(a,-1,52997);c=In(a,52997,0);gj(a,-2);rj(a,-1,14691);e=In(a,14691,0);gj(a,-2);rj(a,-1,5854);j=hr(a,5854,Q(.5));gj(a,-2);rj(a,-1,4238);k=hr(a,4238,Q(.5));gj(a,-2);gj(a,-2);N[b+52>>2]=Q(Q(1)-k)+Q(-.5);N[b+48>>2]=j+Q(-.5);j=Q(c|0);k=Q(e|0);m=J[b+28>>2];i:{j:{k:{if(!(e?c:0)){if(!m){if(k=Q(0)){c=~~k>>>0}else{c=0}J[b+4>>2]=c;if(!(j=Q(0))){break j}J[b>>2]=~~j>>>0;break i}p=m-1|0;t=J[b+24>>2];e=0;if(m>>>0>=3){C=(p>>>1|0)+1&-2;h=0;while(1){c=(e<<2)+t|0;l=N[c>>2];j=j>l?j:l;l=N[c+8>>2];j=j>l?j:l;l=N[c+4>>2];k=k>l?k:l;l=N[c+12>>2];k=k>l?k:l;e=e+4|0;h=h+2|0;if((C|0)!=(h|0)){continue}break}}if(!(p&2)){c=(e<<2)+t|0;l=N[c>>2];j=j>l?j:l;l=N[c+4>>2];k=k>l?k:l}l:{if(k=Q(0)){c=~~k>>>0;break l}c=0}J[b+4>>2]=c;if(j=Q(0)){J[b>>2]=~~j>>>0;break k}J[b>>2]=0;break k}if(k=Q(0)){c=~~k>>>0}else{c=0}J[b+4>>2]=c;if(j=Q(0)){c=~~j>>>0}else{c=0}J[b>>2]=c;if(!m){break i}}c=0;while(1){if(c>>>0>=m>>>0){break d}e=J[b+24>>2];h=e+(c<<2)|0;N[h>>2]=Q(N[h>>2]/j)+Q(-.5);h=c|1;if(h>>>0>=m>>>0){break d}e=e+(h<<2)|0;N[e>>2]=1-+Q(N[e>>2]/k)+-.5;c=c+2|0;if(m>>>0>c>>>0){continue}break}break i}J[b>>2]=0}c=0;j=Q(-34028234663852886e22);k=Q(34028234663852886e22);u=Q(34028234663852886e22);v=Q(-34028234663852886e22);e=J[b+36>>2];if(!e){break e}while(1){if(c>>>0>=e>>>0){break c}h=c|1;if(h>>>0>=e>>>0){break c}m=h<<2;h=J[b+32>>2];m=m+h|0;q=N[m>>2];h=h+(c<<2)|0;l=Q(A*N[h>>2]);N[h>>2]=l;q=Q(z*q);N[m>>2]=Q(1)-q;v=q>v?q:v;j=jl?l:k;c=c+2|0;if(e>>>0>c>>>0){continue}break}break e}Z(12664,54737,162,84789);B()}Z(12664,54737,130,84789);B()}N[d+24>>2]=j;N[d+16>>2]=j;N[d+8>>2]=k;N[d>>2]=k;j=Q(Q(1)-v);N[d+28>>2]=j;k=Q(Q(1)-u);N[d+20>>2]=k;N[d+12>>2]=k;N[d+4>>2]=j;d=d+32|0;h=o;if((h|0)!=(f|0)){continue}break}gj(a,-2)}e=f;m:{n:{if(g){rj(a,-1,20110);d=e-1|0;c=0;while(1){b=J[a+8>>2];J[b+8>>2]=3;h=b;b=c+1|0;O[h>>3]=b>>>0;J[a+8>>2]=J[a+8>>2]+16;Ck(a,-2);if(M[i+28>>2]<=c>>>0){break b}c=J[i+24>>2]+P(c,36)|0;J[c+20>>2]=30;J[c+24>>2]=1;rj(a,-1,72520);J[c>>2]=Ij(a,-1,0);gj(a,-2);rj(a,-1,52997);J[c+4>>2]=sl(a,-1);gj(a,-2);rj(a,-1,14691);J[c+8>>2]=sl(a,-1);gj(a,-2);rj(a,-1,10376);h=sl(a,-1);gj(a,-2);rj(a,-1,71372);o=sl(a,-1);gj(a,-2);rj(a,-1,51422);if(kk(a,-1)){m=sl(a,-1);if(m>>>0>=7){break n}J[c+24>>2]=J[(m<<2)+160448>>2]}gj(a,-2);rj(a,-1,19855);if(kk(a,-1)){J[c+20>>2]=sl(a,-1)}gj(a,-2);rj(a,-1,50577);if((kj(a,-1)|0)==1){J[c+32>>2]=ck(a,-1)}gj(a,-2);rj(a,-1,50151);if((kj(a,-1)|0)==1){J[c+28>>2]=ck(a,-1)}gj(a,-2);gj(a,-2);J[c+16>>2]=d+o;J[c+12>>2]=d+h;e=o+(e-h|0)|0;c=b;if((c|0)!=(g|0)){continue}break}gj(a,-2)}J[i+108>>2]=1;d=e<<2;b=nj(e>>>0>1073741823?-1:d);J[i+80>>2]=e;J[i+76>>2]=b;c=0;b=ij(b,0,d);d=hj(y,s,w);if(!f){break m}while(1){if((c|0)==(e|0)){break a}J[b+(c<<2)>>2]=c;c=c+1|0;if((c|0)!=(f|0)){continue}break}break m}Z(114101,42133,1775,51463);B()}e=J[i+28>>2];if(e){c=d+(n<<2)|0;d=0;h=f;while(1){if(d>>>0>=e>>>0){break b}b=J[i+24>>2]+P(d,36)|0;g=J[b+16>>2];b=J[b+12>>2];if((g|0)!=(b|0)){e=g-b|0;o=b-f|0;g=0;while(1){m=g+o|0;b=s+(m<<5)|0;n=J[b+4>>2];J[c>>2]=J[b>>2];J[c+4>>2]=n;n=J[b+28>>2];J[c+24>>2]=J[b+24>>2];J[c+28>>2]=n;n=J[b+20>>2];J[c+16>>2]=J[b+16>>2];J[c+20>>2]=n;n=J[b+12>>2];J[c+8>>2]=J[b+8>>2];J[c+12>>2]=n;if(M[i+80>>2]<=h>>>0){break a}J[J[i+76>>2]+(h<<2)>>2]=m;c=c+32|0;h=h+1|0;g=g+1|0;if((e|0)!=(g|0)){continue}break}e=J[i+28>>2]}d=d+1|0;if(d>>>0>>0){continue}break}}cj(s);if(J[a+8>>2]-J[a+12>>2]>>4==(x|0)){return}Z(143244,42133,2161,83062);B()}Z(12664,54737,59,84789);B()}Z(12664,54737,67,84789);B()}Z(12664,54737,96,84789);B()}Z(12664,54737,138,84789);B()}function LV(a,b,c,d,e){a=a|0;b=b|0;c=c|0;d=d|0;e=e|0;var f=Q(0),g=Q(0),h=Q(0),i=Q(0),j=Q(0),k=Q(0),l=Q(0),m=0,n=Q(0),o=Q(0),p=0,q=Q(0),r=Q(0),s=Q(0),t=Q(0),u=Q(0),v=0,w=Q(0),x=Q(0),y=Q(0),z=Q(0),A=Q(0),B=Q(0),C=Q(0),D=Q(0),E=Q(0),F=Q(0),G=Q(0),H=Q(0),I=Q(0),K=Q(0),L=0,M=0,O=0;d=Ui-144|0;Ui=d;J[d+104>>2]=0;E=N[b+120>>2];t=N[b+56>>2];F=N[b+112>>2];z=N[b+48>>2];G=N[b+116>>2];H=N[b+52>>2];f=N[b+96>>2];g=N[b+64>>2];j=N[b+80>>2];l=N[b+100>>2];w=N[b+68>>2];x=N[b+84>>2];h=N[b+32>>2];r=N[b>>2];q=N[b+16>>2];u=N[b+36>>2];y=N[b+4>>2];A=N[b+20>>2];n=N[b+104>>2];B=N[b+40>>2];k=N[b+72>>2];s=N[b+8>>2];i=N[b+88>>2];C=N[b+24>>2];J[d+100>>2]=0;J[d+84>>2]=0;J[d+68>>2]=0;J[d+52>>2]=0;N[d+80>>2]=Q(n*B)+Q(Q(k*s)+Q(C*i));N[d+76>>2]=Q(n*u)+Q(Q(k*y)+Q(A*i));N[d+72>>2]=Q(n*h)+Q(Q(k*r)+Q(q*i));N[d+64>>2]=Q(l*B)+Q(Q(w*s)+Q(C*x));N[d+60>>2]=Q(l*u)+Q(Q(w*y)+Q(A*x));N[d+56>>2]=Q(l*h)+Q(Q(w*r)+Q(q*x));N[d+48>>2]=Q(f*B)+Q(Q(g*s)+Q(j*C));N[d+44>>2]=Q(f*u)+Q(Q(g*y)+Q(j*A));N[d+40>>2]=Q(f*h)+Q(Q(g*r)+Q(j*q));s=n;n=Q(t-E);t=k;k=Q(z-F);o=i;i=Q(H-G);N[d+96>>2]=Q(s*n)+Q(Q(t*k)+Q(o*i));N[d+92>>2]=Q(l*n)+Q(Q(w*k)+Q(i*x));N[d+88>>2]=Q(f*n)+Q(Q(g*k)+Q(i*j));r=N[a+12>>2];w=Q(0);x=Q(0);n=Q(0);p=Ui-32|0;Ui=p;q=N[d+96>>2];m=J[a+8>>2];f=N[m+60>>2];z=Q(q-f);g=N[m+52>>2];l=Q(N[m+68>>2]-g);k=N[m+56>>2];i=Q(N[m+88>>2]-k);h=Q(N[m+72>>2]-k);u=Q(N[m+84>>2]-g);j=Q(Q(l*i)-Q(h*u));o=j;s=Q(j*j);j=Q(N[m+92>>2]-f);t=Q(h*j);h=Q(N[m+76>>2]-f);f=Q(t-Q(h*i));i=Q(Q(h*u)-Q(l*j));h=Q(Q(1)/Q(Y(Q(s+Q(Q(f*f)+Q(i*i))))));j=Q(o*h);u=N[d+88>>2];l=Q(f*h);o=Q(Q(u-g)*l);y=N[d+92>>2];g=Q(i*h);f=Q(Q(z*j)+Q(o+Q(Q(y-k)*g)));if(f>2];r=Q(N[v+28>>2]*N[v+12>>2]);A=Q(i+r);v=!(A>f);if(f=Q(0)}a:{if(v|L){break a}v=J[d+100>>2];J[p+24>>2]=J[d+96>>2];J[p+28>>2]=v;v=J[d+92>>2];J[p+16>>2]=J[d+88>>2];J[p+20>>2]=v;J[p+12>>2]=0;N[p+8>>2]=j;N[p+4>>2]=g;N[p>>2]=l;B=N[m+92>>2];s=N[m+76>>2];C=Q(B-s);E=N[m+84>>2];t=N[m+68>>2];D=Q(E-t);k=N[p+4>>2];F=N[m+88>>2];z=N[m+72>>2];h=Q(F-z);i=N[p>>2];G=N[p+24>>2];I=Q(Q(Q(D*k)-Q(h*i))*Q(G-s));o=h;h=N[p+8>>2];H=N[p+16>>2];K=N[p+20>>2];C=Q(I+Q(Q(Q(Q(o*h)-Q(C*k))*Q(H-t))+Q(Q(K-z)*Q(Q(C*i)-Q(D*h)))));o=s;s=N[m+60>>2];D=Q(o-s);o=t;t=N[m+52>>2];I=Q(o-t);o=z;z=N[m+56>>2];o=Q(o-z);D=Q(Q(Q(Q(I*k)-Q(o*i))*Q(G-s))+Q(Q(Q(Q(o*h)-Q(D*k))*Q(H-t))+Q(Q(K-z)*Q(Q(D*i)-Q(I*h)))));t=Q(t-E);z=Q(z-F);o=Q(Q(Q(t*k)-Q(z*i))*Q(G-B));B=Q(s-B);k=Q(o+Q(Q(Q(Q(z*h)-Q(B*k))*Q(H-E))+Q(Q(K-F)*Q(Q(B*i)-Q(t*h)))));b:{if(!(!(k>Q(0))|!(D>Q(0)))){v=1;if(C>Q(0)){break b}}v=D<=Q(0)&C<=Q(0)&k<=Q(0)}c:{if(v){w=Q(q-Q(f*j));x=Q(y-Q(f*g));n=Q(u-Q(f*l));break c}if((Zi[J[J[m>>2]+88>>2]](m)|0)<=0){break a}B=Q(A*A);m=0;while(1){v=J[a+8>>2];Zi[J[J[v>>2]+92>>2]](v,m,p+16|0,p);g=Q(0);q=N[p+24>>2];k=Q(N[p+8>>2]-q);f=Q(N[d+96>>2]-q);u=N[p+16>>2];i=Q(N[p>>2]-u);j=Q(N[d+88>>2]-u);y=N[p+20>>2];l=Q(N[d+92>>2]-y);h=Q(N[p+4>>2]-y);A=Q(Q(k*f)+Q(Q(i*j)+Q(l*h)));d:{if(!(A>Q(0))){break d}g=Q(Q(k*k)+Q(Q(i*i)+Q(h*h)));if(g>A){g=Q(A/g);f=Q(f-Q(k*g));l=Q(l-Q(h*g));j=Q(j-Q(i*g));break d}f=Q(f-k);l=Q(l-h);j=Q(j-i);g=Q(1)}if(B>Q(Q(f*f)+Q(Q(j*j)+Q(l*l)))){n=Q(u+Q(i*g));x=Q(y+Q(h*g));M=1;w=Q(q+Q(k*g))}v=J[a+8>>2];m=m+1|0;if((Zi[J[J[v>>2]+88>>2]](v)|0)>(m|0)){continue}break}if(!M){break a}q=N[d+96>>2];y=N[d+92>>2];u=N[d+88>>2]}f=Q(q-w);g=Q(u-n);j=Q(y-x);l=Q(Q(f*f)+Q(Q(g*g)+Q(j*j)));e:{if(l>2]=0;i=f;l=Q(Y(l));f=Q(Q(1)/l);N[d+120>>2]=i*f;N[d+116>>2]=j*f;N[d+112>>2]=g*f;J[d+140>>2]=0;N[d+136>>2]=w;N[d+132>>2]=x;N[d+128>>2]=n;N[d+104>>2]=-Q(r-l);break e}if(Q(Q(f*Q(0))+Q(Q(g*Q(0))+Q(j*Q(0))))>=Q(0)){break a}J[d+140>>2]=0;N[d+136>>2]=w;N[d+132>>2]=x;N[d+128>>2]=n;J[d+108>>2]=0}O=1}Ui=p+32|0;f:{if(!O){break f}if(e){l=N[b+72>>2];w=N[b+64>>2];x=N[b+68>>2];n=N[b+88>>2];k=N[b+80>>2];i=N[b+84>>2];h=N[b+104>>2];r=N[b+96>>2];q=N[b+100>>2];f=N[d+120>>2];g=N[d+112>>2];j=N[d+116>>2];J[d+36>>2]=0;u=Q(Q(h*f)+Q(Q(r*g)+Q(j*q)));N[d+32>>2]=-u;y=Q(Q(n*f)+Q(Q(k*g)+Q(j*i)));N[d+28>>2]=-y;A=Q(Q(l*f)+Q(Q(w*g)+Q(x*j)));N[d+24>>2]=-A;B=N[b+112>>2];s=N[b+116>>2];f=N[b+120>>2];J[d+20>>2]=0;g=N[d+136>>2];o=Q(h*g);j=N[d+128>>2];h=N[d+132>>2];o=Q(f+Q(o+Q(Q(r*j)+Q(q*h))));f=N[d+104>>2];N[d+16>>2]=o+Q(u*f);N[d+12>>2]=Q(s+Q(Q(n*g)+Q(Q(k*j)+Q(i*h))))+Q(y*f);N[d+8>>2]=Q(B+Q(Q(l*g)+Q(Q(w*j)+Q(x*h))))+Q(A*f);Zi[J[J[c>>2]+16>>2]](c,d+24|0,d+8|0,f);break f}f=N[b+72>>2];g=N[b+64>>2];j=N[b+68>>2];l=N[b+88>>2];w=N[b+80>>2];x=N[b+84>>2];n=N[b+104>>2];k=N[b+96>>2];i=N[b+100>>2];J[d+36>>2]=0;h=N[d+120>>2];r=N[d+112>>2];q=N[d+116>>2];N[d+32>>2]=Q(n*h)+Q(Q(k*r)+Q(i*q));N[d+28>>2]=Q(l*h)+Q(Q(w*r)+Q(q*x));N[d+24>>2]=Q(f*h)+Q(Q(g*r)+Q(j*q));h=N[b+112>>2];r=N[b+116>>2];q=N[b+120>>2];J[d+20>>2]=0;s=n;n=N[d+136>>2];t=k;k=N[d+128>>2];o=i;i=N[d+132>>2];N[d+16>>2]=q+Q(Q(s*n)+Q(Q(t*k)+Q(o*i)));N[d+12>>2]=r+Q(Q(l*n)+Q(Q(w*k)+Q(x*i)));N[d+8>>2]=h+Q(Q(f*n)+Q(Q(g*k)+Q(j*i)));Zi[J[J[c>>2]+16>>2]](c,d+24|0,d+8|0,N[d+104>>2])}Ui=d+144|0}function DE(a,b){var c=0,d=0,e=0,f=0,g=0,h=0,i=0,j=0,k=0,l=0,m=0,n=0,o=0,p=0,q=0,r=0,s=0,t=0,u=0,v=0,w=0,x=0;n=Ui-32|0;m=J[b>>2];c=J[b+8>>2];e=J[c>>2];j=J[c+12>>2];J[a+5200>>2]=0;J[a+5204>>2]=573;r=-1;c=0;a:{if((j|0)>0){d=a+5208|0;f=a+2908|0;while(1){g=(c<<2)+m|0;b:{if(L[g>>1]){g=J[a+5200>>2]+1|0;J[a+5200>>2]=g;J[f+(g<<2)>>2]=c;H[c+d|0]=0;r=c;break b}I[g+2>>1]=0}c=c+1|0;if((j|0)!=(c|0)){continue}break}c=J[a+5200>>2];if((c|0)>1){break a}}d=a+5208|0;f=a+2908|0;while(1){c=c+1|0;J[a+5200>>2]=c;t=f+(c<<2)|0;g=r+1|0;i=(r|0)<2;c=i?g:0;J[t>>2]=c;k=c<<2;I[k+m>>1]=1;H[c+d|0]=0;J[a+5800>>2]=J[a+5800>>2]-1;if(e){J[a+5804>>2]=J[a+5804>>2]-L[(e+k|0)+2>>1]}r=i?g:r;c=J[a+5200>>2];if((c|0)<2){continue}break}}J[b+4>>2]=r;k=a+5208|0;i=a+2908|0;c=c>>>1|0;while(1){d=c;h=J[i+(c<<2)>>2];g=c<<1;f=J[a+5200>>2];c:{if((g|0)>(f|0)){break c}o=k+h|0;p=(h<<2)+m|0;e=c;while(1){c=g;d:{if((c|0)>=(f|0)){break d}f=c|1;l=J[i+(f<<2)>>2];s=L[(l<<2)+m>>1];q=J[i+(c<<2)>>2];u=L[(q<<2)+m>>1];if(s>>>0>=u>>>0){if((s|0)!=(u|0)){break d}if(K[k+l|0]>K[k+q|0]){break d}}c=f}g=L[p>>1];f=J[i+(c<<2)>>2];l=L[(f<<2)+m>>1];if(g>>>0>>0){c=e;break c}if(!((g|0)!=(l|0)|K[o|0]>K[f+k|0])){c=e;break c}J[i+(e<<2)>>2]=f;e=c;g=c<<1;f=J[a+5200>>2];if((g|0)<=(f|0)){continue}break}}J[i+(c<<2)>>2]=h;c=d-1|0;if((d|0)>1){continue}break}k=a+5208|0;i=a+2908|0;d=J[a+5200>>2];while(1){g=j;f=d-1|0;J[a+5200>>2]=f;j=J[a+2912>>2];h=J[i+(d<<2)>>2];J[a+2912>>2]=h;c=1;e:{if((d|0)<3){break e}o=k+h|0;d=2;p=(h<<2)+m|0;e=1;while(1){f:{if((d|0)>=(f|0)){break f}c=d|1;f=J[i+(c<<2)>>2];l=L[(f<<2)+m>>1];s=J[i+(d<<2)>>2];q=L[(s<<2)+m>>1];if(l>>>0>=q>>>0){if((l|0)!=(q|0)|K[f+k|0]>K[k+s|0]){break f}}d=c}f=L[p>>1];c=d;d=J[i+(c<<2)>>2];l=L[(d<<2)+m>>1];if(f>>>0>>0){c=e;break e}if(!((f|0)!=(l|0)|K[o|0]>K[d+k|0])){c=e;break e}J[i+(e<<2)>>2]=d;e=c;d=c<<1;f=J[a+5200>>2];if((d|0)<=(f|0)){continue}break}}d=2;J[i+(c<<2)>>2]=h;e=J[a+5204>>2]-1|0;J[a+5204>>2]=e;c=J[a+2912>>2];J[i+(e<<2)>>2]=j;e=J[a+5204>>2]-1|0;J[a+5204>>2]=e;J[i+(e<<2)>>2]=c;h=(g<<2)+m|0;e=(c<<2)+m|0;f=(j<<2)+m|0;I[h>>1]=L[e>>1]+L[f>>1];o=g+k|0;j=K[k+j|0];c=K[c+k|0];H[o|0]=(c>>>0>>0?j:c)+1;I[e+2>>1]=g;I[f+2>>1]=g;J[a+2912>>2]=g;f=1;c=1;e=J[a+5200>>2];g:{if((e|0)<2){break g}while(1){h:{if((d|0)>=(e|0)){break h}c=d|1;e=J[i+(c<<2)>>2];j=L[(e<<2)+m>>1];p=J[i+(d<<2)>>2];l=L[(p<<2)+m>>1];if(j>>>0>=l>>>0){if((j|0)!=(l|0)|K[e+k|0]>K[k+p|0]){break h}}d=c}j=L[h>>1];c=d;e=J[i+(c<<2)>>2];d=L[(e<<2)+m>>1];if(j>>>0>>0){c=f;break g}if(!((d|0)!=(j|0)|K[o|0]>K[e+k|0])){c=f;break g}J[i+(f<<2)>>2]=e;f=c;d=c<<1;e=J[a+5200>>2];if((d|0)<=(e|0)){continue}break}}j=g+1|0;J[i+(c<<2)>>2]=g;d=J[a+5200>>2];if((d|0)>1){continue}break}c=J[a+5204>>2]-1|0;J[a+5204>>2]=c;J[i+(c<<2)>>2]=J[a+2912>>2];f=J[b+4>>2];c=J[b+8>>2];e=J[c+16>>2];o=J[c+8>>2];u=J[c+4>>2];p=J[c>>2];j=J[b>>2];t=a+2900|0;b=t;I[b>>1]=0;I[b+2>>1]=0;I[b+4>>1]=0;I[b+6>>1]=0;v=a+2892|0;b=v;I[b>>1]=0;I[b+2>>1]=0;I[b+4>>1]=0;I[b+6>>1]=0;w=a+2884|0;b=w;I[b>>1]=0;I[b+2>>1]=0;I[b+4>>1]=0;I[b+6>>1]=0;I[a+2876>>1]=0;I[a+2878>>1]=0;I[a+2880>>1]=0;I[a+2882>>1]=0;k=0;I[(j+(J[i+(J[a+5204>>2]<<2)>>2]<<2)|0)+2>>1]=0;b=J[a+5204>>2];i:{if((b|0)>571){break i}g=a+2876|0;c=b+1|0;d=0;while(1){b=J[i+(c<<2)>>2];x=b<<2;l=j+x|0;h=L[(j+(L[l+2>>1]<<2)|0)+2>>1];s=(h|0)>=(e|0);q=s?e:h+1|0;I[l+2>>1]=q;j:{if((b|0)>(f|0)){break j}h=g+(q<<1)|0;I[h>>1]=L[h>>1]+1;h=0;h=(b|0)>=(o|0)?J[u+(b-o<<2)>>2]:h;b=L[l>>1];J[a+5800>>2]=J[a+5800>>2]+P(q+h|0,b);if(!p){break j}J[a+5804>>2]=J[a+5804>>2]+P(b,L[(p+x|0)+2>>1]+h|0)}d=d+s|0;c=c+1|0;if((c|0)!=573){continue}break}if(!d){break i}h=g+(e<<1)|0;while(1){c=e;while(1){b=c;c=c-1|0;o=g+(c<<1)|0;p=L[o>>1];if(!p){continue}break}I[o>>1]=p-1;b=g+(b<<1)|0;I[b>>1]=L[b>>1]+2;I[h>>1]=L[h>>1]-1;b=(d|0)>2;d=d-2|0;if(b){continue}break}if(!e){break i}c=573;while(1){b=L[g+(e<<1)>>1];if(b){while(1){c=c-1|0;d=J[i+(c<<2)>>2];if((d|0)>(f|0)){continue}d=j+(d<<2)|0;h=L[d+2>>1];if((h|0)!=(e|0)){J[a+5800>>2]=J[a+5800>>2]+P(L[d>>1],e-h|0);I[d+2>>1]=e}b=b-1|0;if(b){continue}break}}e=e-1|0;if(e){continue}break}}b=L[a+2876>>1]<<1;I[n+2>>1]=b;b=b+L[a+2878>>1]<<1;I[n+4>>1]=b;b=b+L[a+2880>>1]<<1;I[n+6>>1]=b;b=b+L[a+2882>>1]<<1;I[n+8>>1]=b;b=b+L[w>>1]<<1;I[n+10>>1]=b;b=b+L[a+2886>>1]<<1;I[n+12>>1]=b;b=b+L[a+2888>>1]<<1;I[n+14>>1]=b;b=b+L[a+2890>>1]<<1;I[n+16>>1]=b;b=b+L[v>>1]<<1;I[n+18>>1]=b;b=b+L[a+2894>>1]<<1;I[n+20>>1]=b;b=b+L[a+2896>>1]<<1;I[n+22>>1]=b;b=b+L[a+2898>>1]<<1;I[n+24>>1]=b;b=b+L[t>>1]<<1;I[n+26>>1]=b;b=b+L[a+2902>>1]<<1;I[n+28>>1]=b;I[n+30>>1]=b+L[a+2904>>1]<<1;if((r|0)>=0){while(1){e=(k<<2)+m|0;a=L[e+2>>1];if(a){b=(a<<1)+n|0;c=L[b>>1];I[b>>1]=c+1;b=a&3;d=0;k:{if(a>>>0<4){g=0;break k}j=a&65532;g=0;a=0;while(1){f=c>>>3&1|(c>>>2&1|(c&2|(c&1|g)<<2))<<1;g=f<<1;c=c>>>4|0;a=a+4|0;if((j|0)!=(a|0)){continue}break}}if(b){while(1){f=c&1|g;g=f<<1;c=c>>>1|0;d=d+1|0;if((b|0)!=(d|0)){continue}break}}I[e>>1]=f}a=(k|0)!=(r|0);k=k+1|0;if(a){continue}break}}}function aga(a){a=a|0;var b=0,c=0,d=0,e=0,f=0,g=0,h=0,i=0,j=0,k=0,l=Q(0),m=Q(0),n=Q(0),o=0,p=Q(0),q=0,r=0,s=0,t=0,u=0,v=Q(0),w=Q(0),x=Q(0),y=Q(0),z=Q(0),A=Q(0),C=Q(0),D=Q(0),E=Q(0),F=Q(0),G=Q(0),I=Q(0),K=0;b=Ui-160|0;Ui=b;c=J[a+4>>2];a:{b:{c:{d:{e:{f:{g:{h:{i:{switch(J[a+8>>2]){case 0:J[c+60>>2]=J[c+56>>2];a=J[c+104>>2];g=J[c+112>>2]-a>>2;e=J[c+108>>2];j=e-a>>2;f=J[c+120>>2];a=J[c+124>>2]-f|0;d=a>>2;if(g>>>0>>0){if(H[c+116|0]&1){break b}lj(d+g|0,4,c+104|0,c+112|0,c+108|0);e=J[c+108>>2];a=J[c+104>>2];j=e-a>>2;g=J[c+112>>2]-a>>2;f=J[c+120>>2];a=J[c+124>>2]-f|0;d=a>>2}if(g-j>>>0>>0){break g}hj(e,f,a);J[c+124>>2]=J[c+120>>2];J[c+108>>2]=J[c+108>>2]+a;break h;case 2:break h;case 1:break i;default:break c}}t=J[a+20>>2];K=J[a>>2];u=J[a+12>>2];f=J[a+16>>2];J[b+52>>2]=0;d=J[(P(J[f>>2],48)+u|0)+16>>2];a=J[d+192>>2];if(!a){a=J[J[d+152>>2]+8>>2]}j:{k:{l:{a=J[a>>2];switch(J[a+168>>2]){case 1:break k;case 0:break l;default:break d}}J[b+156>>2]=a;J[b+140>>2]=0;a=J[c+108>>2];d=J[c+104>>2];m:{if((a|0)!=(d|0)){a=(a-d>>2)-1|0;if(a>>>0>J[c+112>>2]-d>>2>>>0){break a}a=d+(a<<2)|0;e=J[a>>2];J[c+108>>2]=a;break m}e=Zi[J[79391]](J[c+136>>2],0,0,1)|0}J[b+136>>2]=e;if(!e){break f}a=J[c+124>>2];g=J[c+128>>2];if((a|0)==(g|0)){if(H[c+132|0]&1){break b}d=a;a=c+120|0;lj((d-J[a>>2]>>2)+2|0,4,a,c+128|0,c+124|0);g=J[c+128>>2];a=J[c+124>>2]}if((a|0)==(g|0)){break e}J[c+124>>2]=a+4;J[a>>2]=e;r=J[c+60>>2];d=J[c+56>>2];a=((r-d|0)/336|0)+1|0;if(a>>>0>(J[c+64>>2]-d|0)/336>>>0){break a}J[c+60>>2]=d+P(a,336);q=J[(P(J[f>>2],48)+u|0)+16>>2];k=J[q+152>>2];a=J[q+156>>2];if(!a){a=J[k+4>>2]}J[b+132>>2]=J[k+144>>2];i=J[a+20>>2];if((f|0)!=(t|0)){a=f;while(1){o=J[(P(J[a>>2],48)+u|0)+16>>2];d=J[o+156>>2];if(!d){d=J[J[o+152>>2]+4>>2]}j=J[d+16>>2]+j|0;a=a+4|0;if((t|0)!=(a|0)){continue}break}}i=P(j,i);if(i>>>0>M[c+144>>2]){J[c+144>>2]=i;J[c+140>>2]=ml(J[c+140>>2],i)}if((f|0)!=(t|0)){d=J[c+140>>2];e=f;while(1){h=J[(P(J[e>>2],48)+u|0)+16>>2];s=J[h+152>>2];g=J[h+156>>2];if(!g){g=J[s+4>>2]}n:{if(!J[g+16>>2]){break n}J[b+144>>2]=0;J[b+56>>2]=0;a=on(J[g+4>>2],b+144|0,b+56|0);if(a){J[b+16>>2]=a;dj(4,88458,133029,b+16|0);break n}o=hj(d,J[b+144>>2],J[b+56>>2]);d=J[s+160>>2];a=J[s+164>>2];if(d|a){oQ(J[g+4>>2],1,h+80|0,d,a,J[s+168>>2],J[b+144>>2],o)}a=J[s+176>>2];d=J[s+180>>2];if(a|d){F=N[h+128>>2];G=N[h+132>>2];I=N[h+136>>2];v=N[h+120>>2];w=N[h+116>>2];y=N[h+96>>2];z=N[h+80>>2];x=N[h+112>>2];A=N[h+104>>2];C=N[h+84>>2];D=N[h+100>>2];E=N[h+88>>2];J[b+120>>2]=0;J[b+124>>2]=1065353216;J[b+112>>2]=0;J[b+116>>2]=0;l=Q(Q(z*D)-Q(C*y));m=Q(Q(E*y)-Q(z*A));n=Q(Q(C*A)-Q(E*D));p=Q(Q(1)/Q(Q(v*l)+Q(Q(w*m)+Q(x*n))));l=Q(l*p);N[b+104>>2]=l;m=Q(m*p);N[b+100>>2]=m;n=Q(n*p);N[b+96>>2]=n;N[b+108>>2]=-Q(Q(F*n)+Q(Q(G*m)+Q(I*l)));l=Q(Q(Q(x*C)-Q(w*z))*p);N[b+88>>2]=l;m=Q(Q(Q(v*z)-Q(x*E))*p);N[b+84>>2]=m;n=Q(Q(Q(w*E)-Q(v*C))*p);N[b+80>>2]=n;N[b+92>>2]=-Q(Q(F*n)+Q(Q(G*m)+Q(I*l)));l=Q(Q(Q(y*w)-Q(D*x))*p);N[b+72>>2]=l;m=Q(Q(Q(A*x)-Q(y*v))*p);N[b+68>>2]=m;n=Q(Q(Q(D*v)-Q(A*w))*p);N[b+64>>2]=n;N[b+76>>2]=-Q(Q(F*n)+Q(Q(G*m)+Q(I*l)));oQ(J[g+4>>2],0,b- -64|0,a,d,J[s+184>>2],J[b+144>>2],o)}d=o+J[b+56>>2]|0}e=e+4|0;if((t|0)!=(e|0)){continue}break}e=J[b+136>>2]}J[75430]=J[75430]+j;J[b+144>>2]=j;J[b+148>>2]=0;J[b+8>>2]=j;J[b+12>>2]=0;J[75452]=i+J[75452];J[b+56>>2]=i;J[b+60>>2]=0;J[b>>2]=i;J[b+4>>2]=0;a=J[(P(J[f>>2],48)+u|0)+16>>2];J[b+96>>2]=0;J[b+100>>2]=0;J[b+116>>2]=0;J[b+120>>2]=0;J[b+68>>2]=0;J[b+72>>2]=0;J[b+64>>2]=1065353216;J[b+76>>2]=0;J[b+80>>2]=0;J[b+88>>2]=0;J[b+92>>2]=0;J[b+84>>2]=1065353216;J[b+108>>2]=0;J[b+112>>2]=0;J[b+104>>2]=1065353216;J[b+124>>2]=1065353216;nQ(r,k+152|0,b+156|0,k+12|0,a+160|0,b+132|0,b+136|0,j,b- -64|0,J[q+148>>2]);Zi[J[79393]](e,i,J[c+140>>2],1);Bo(K,r);break j}J[b+56>>2]=a;J[b+156>>2]=0;if((f|0)!=(t|0)){while(1){i=J[c+60>>2];d=J[c+56>>2];a=((i-d|0)/336|0)+1|0;if(a>>>0>(J[c+64>>2]-d|0)/336>>>0){break a}J[c+60>>2]=d+P(a,336);k=J[(P(J[f>>2],48)+u|0)+16>>2];r=J[k+152>>2];e=J[k+156>>2];if(!e){e=J[r+4>>2]}o:{a=J[c+76>>2];p:{if(!a){break p}d=J[e+8>>2];o=J[e+12>>2];a=J[J[c+72>>2]+(mxa(d,o,a)<<2)>>2];if((a|0)==-1){break p}j=J[c+80>>2];while(1){q=j+P(a,24)|0;if(J[q>>2]==(d|0)&(o|0)==J[q+4>>2]){break o}a=J[q+20>>2];if((a|0)!=-1){continue}break}}Z(113732,40994,771,88486);B()}J[75430]=J[75430]+J[e+16>>2];a=J[e+16>>2];J[b+40>>2]=a;J[b+44>>2]=0;J[b+64>>2]=a;J[b+68>>2]=0;a=J[e+20>>2];J[75452]=J[75452]+P(a,J[e+16>>2]);a=P(a,J[e+16>>2]);J[b+32>>2]=a;J[b+36>>2]=0;J[b+144>>2]=a;J[b+148>>2]=0;d=b;a=J[k+196>>2];if(!a){a=J[J[k+152>>2]+144>>2]}J[d+140>>2]=a;nQ(i,r+152|0,b+56|0,r+12|0,k+160|0,b+140|0,q+8|0,J[e+16>>2],k+80|0,J[k+148>>2]);Bo(K,i);f=f+4|0;if((t|0)!=(f|0)){continue}break}}}}Ui=b+160|0;return}Z(11738,53895,564,4042);B()}Z(34656,40994,667,88505);B()}Z(112520,53895,557,53220);B()}Z(62644,40994,802,53766);B()}Z(62644,40994,877,53625);B()}Z(151729,53895,501,2284);B()}Z(144782,53895,514,59583);B()}function JF(a,b,c,d){var e=0,f=0,g=0,h=0,i=0,j=0,k=0,l=0,m=0;g=Ui-32|0;Ui=g;J[g+20>>2]=b;J[g+24>>2]=a;while(1){a:{b:{c:{d:{e:{f:{g:{h:{i:{e=b-a>>2;switch(e|0){case 2:break i;case 0:case 1:break c;case 3:break e;case 5:break g;case 4:break h;default:break f}}b=b-4|0;J[g+20>>2]=b;if(M[b>>2]>=M[a>>2]){break c}a=J[g+24>>2];b=J[a>>2];c=a;a=J[g+20>>2];J[c>>2]=J[a>>2];J[a>>2]=b;break c}b=b-4|0;J[g+20>>2]=b;Iz(a,a+4|0,a+8|0,b);break c}b=b-4|0;J[g+20>>2]=b;CF(a,a+4|0,a+8|0,a+12|0,b);break c}if((e|0)<=23){if(d&1){d=Ui-16|0;Ui=d;j:{if((a|0)==(b|0)){break j}c=a;while(1){e=c+4|0;J[d+8>>2]=e;if((b|0)==(e|0)){break j}if(M[e>>2]>2]){J[d+4>>2]=J[J[d+8>>2]>>2];J[d>>2]=c;c=J[d+8>>2];while(1){k:{J[c>>2]=J[J[d>>2]>>2];c=J[d>>2];if((c|0)==(a|0)){break k}e=c-4|0;J[d>>2]=e;if(M[d+4>>2]>2]){continue}}break}J[c>>2]=J[d+4>>2]}c=J[d+8>>2];continue}}Ui=d+16|0;break c}c=Ui-16|0;Ui=c;l:{if((a|0)==(b|0)){break l}while(1){d=a+4|0;J[c+8>>2]=d;if((b|0)==(d|0)){break l}if(M[d>>2]>2]){J[c+4>>2]=J[J[c+8>>2]>>2];J[c>>2]=a;a=J[c+8>>2];while(1){J[a>>2]=J[J[c>>2]>>2];a=J[c>>2];d=a-4|0;J[c>>2]=d;f=J[d>>2];d=J[c+4>>2];if(f>>>0>d>>>0){continue}break}J[a>>2]=d}a=J[c+8>>2];continue}}Ui=c+16|0;break c}if(!c){if((a|0)==(b|0)){break c}f=Ui-16|0;Ui=f;J[f+12>>2]=a;c=a;a=b;if((c|0)!=(a|0)){m:{e=a-c>>2;if((e|0)<2){break m}d=e-2>>>1|0;while(1){if((d|0)<0){break m}HF(c,e,c+(d<<2)|0);d=d-1|0;continue}}e=a-c>>2;c=a;while(1){J[f+8>>2]=c;d=J[f+12>>2];j=d;if((b|0)!=(c|0)){if(M[c>>2]>2]){c=J[f+8>>2];h=J[c>>2];J[c>>2]=J[d>>2];J[d>>2]=h;c=J[f+12>>2];HF(c,e,c)}c=J[f+8>>2]+4|0;continue}break}b=a-j>>2;c=a;while(1){if((b|0)>1){h=Ui-16|0;Ui=h;J[h+12>>2]=j;n:{if((b|0)<2){break n}e=J[h+12>>2];k=J[e>>2];a=0;i=Ui-16|0;Ui=i;m=(b-2|0)/2|0;while(1){l=(a<<2)+e|0;J[i+12>>2]=l+4;d=a<<1;a=d|1;d=d+2|0;if(!((d|0)>=(b|0)|M[l+4>>2]>=M[l+8>>2])){J[i+12>>2]=J[i+12>>2]+4;a=d}J[e>>2]=J[J[i+12>>2]>>2];e=J[i+12>>2];if((a|0)<=(m|0)){continue}break}Ui=i+16|0;a=c-4|0;J[h+8>>2]=a;if((a|0)==(e|0)){J[e>>2]=k;break n}J[e>>2]=J[J[h+8>>2]>>2];J[J[h+8>>2]>>2]=k;d=J[h+12>>2];i=d;a=Ui-16|0;Ui=a;e=e+4|0;d=e-d>>2;o:{if((d|0)<2){break o}e=e-4|0;J[a+12>>2]=e;d=d-2>>>1|0;k=i+(d<<2)|0;J[a+8>>2]=k;if(M[k>>2]>=M[e>>2]){break o}J[a+4>>2]=J[J[a+12>>2]>>2];p:{while(1){J[J[a+12>>2]>>2]=J[J[a+8>>2]>>2];e=J[a+8>>2];J[a+12>>2]=e;if(!d){break p}d=d-1>>>1|0;e=i+(d<<2)|0;J[a+8>>2]=e;if(M[e>>2]>2]){continue}break}e=J[a+12>>2]}J[e>>2]=J[a+4>>2]}Ui=a+16|0}Ui=h+16|0;b=b-1|0;c=c-4|0;continue}break}}Ui=f+16|0;break c}f=b-4|0;b=e>>>1<<2;h=b+a|0;q:{if(e>>>0>=129){xp(a,h,f);a=J[g+24>>2];i=a+4|0;f=a;a=b-4|0;e=J[g+20>>2];xp(i,f+a|0,e-8|0);f=J[g+24>>2];j=f+8|0;i=f;f=b+4|0;xp(j,i+f|0,e-12|0);i=a;a=J[g+24>>2];xp(i+a|0,a+b|0,a+f|0);J[g+12>>2]=b+J[g+24>>2];a=J[g+24>>2];b=J[a>>2];f=a;a=J[g+12>>2];J[f>>2]=J[a>>2];J[a>>2]=b;break q}xp(h,a,f)}c=c-1|0;i=d&1;if(i){b=J[g+20>>2];break d}b=J[g+20>>2];f=J[g+24>>2];a=f;if(M[a-4>>2]>2]){break d}e=Ui-16|0;Ui=e;a=b;J[e+8>>2]=a;J[e+12>>2]=f;J[e+4>>2]=J[J[e+12>>2]>>2];r:{if(M[e+4>>2]>2]){while(1){d=J[e+12>>2];J[e+12>>2]=d+4;if(M[e+4>>2]>=M[d+4>>2]){continue}break r}}while(1){d=J[e+12>>2]+4|0;J[e+12>>2]=d;if(a>>>0<=d>>>0){break r}if(M[e+4>>2]>=M[d>>2]){continue}break}}if(M[e+12>>2]>>0){while(1){a=a-4|0;J[e+8>>2]=a;if(M[e+4>>2]>2]){continue}break}}while(1){d=a;a=J[e+12>>2];if(d>>>0>a>>>0){d=J[a>>2];i=a;a=J[e+8>>2];J[i>>2]=J[a>>2];J[a>>2]=d;while(1){a=J[e+12>>2];J[e+12>>2]=a+4;if(M[e+4>>2]>=M[a+4>>2]){continue}break}while(1){a=J[e+8>>2]-4|0;J[e+8>>2]=a;if(M[e+4>>2]>2]){continue}break}a=J[e+8>>2];continue}break}d=a-4|0;J[e>>2]=d;if((d|0)!=(f|0)){J[f>>2]=J[J[e>>2]>>2];d=J[e>>2];a=J[e+12>>2]}J[d>>2]=J[e+4>>2];Ui=e+16|0;J[g+24>>2]=a;d=0;break a}b=b-4|0;J[g+20>>2]=b;xp(a,a+4|0,b);break c}f=J[g+24>>2];e=Ui-32|0;Ui=e;a=b;J[e+20>>2]=a;J[e+24>>2]=f;J[e+16>>2]=J[J[e+24>>2]>>2];while(1){h=J[e+24>>2];J[e+24>>2]=h+4;if(M[h+4>>2]>2]){continue}break}s:{if((f|0)==(J[e+24>>2]-4|0)){while(1){if(M[e+24>>2]>=a>>>0){break s}a=a-4|0;J[e+20>>2]=a;if(M[a>>2]>=M[e+16>>2]){continue}break s}}while(1){a=a-4|0;J[e+20>>2]=a;if(M[a>>2]>=M[e+16>>2]){continue}break}}h=J[e+24>>2];H[e+15|0]=h>>>0>=a>>>0;while(1){if(a>>>0>h>>>0){a=J[e+24>>2];h=J[a>>2];j=a;a=J[e+20>>2];J[j>>2]=J[a>>2];J[a>>2]=h;while(1){a=J[e+24>>2];J[e+24>>2]=a+4;if(M[a+4>>2]>2]){continue}break}while(1){a=J[e+20>>2]-4|0;J[e+20>>2]=a;if(M[a>>2]>=M[e+16>>2]){continue}break}a=J[e+20>>2];h=J[e+24>>2];continue}break}a=h-4|0;J[e+8>>2]=a;if((a|0)!=(f|0)){J[f>>2]=J[J[e+8>>2]>>2];a=J[e+8>>2]}J[a>>2]=J[e+16>>2];J[g+12>>2]=J[e+8>>2];H[g+16|0]=K[e+15|0];Ui=e+32|0;a=J[g+12>>2];if(K[g+16|0]!=1){break b}e=jU(J[g+24>>2],a);f=a+4|0;if(jU(f,b)){if(e){break c}J[g+20>>2]=a;b=a;break a}if(!e){break b}J[g+24>>2]=f;break a}Ui=g+32|0;return}JF(J[g+24>>2],a,c,i);J[g+24>>2]=a+4;d=0}a=J[g+24>>2];continue}}function OQ(a,b,c){var d=0,e=0,f=0,g=Q(0),h=0,i=0,j=0,k=0,l=0,m=0,n=0,o=0,p=0,q=0,r=0,s=0,t=0,u=0,v=0,w=0,x=0,y=0,z=0,A=Q(0),C=0,D=0,E=0;e=Ui-32|0;Ui=e;a:{b:{c:{d:{m=wk(b,J[J[c>>2]>>2],c+8|0);e:{if(m){break e}y=J[J[J[c+8>>2]+24>>2]>>2];if(J[y+4>>2]){r=c+16|0;v=c+20|0;i=c+12|0;while(1){n=J[y>>2]+P(j,80)|0;o=J[n+60>>2];f=J[v>>2];d=(f-J[r>>2]|0)/12|0;if(o>>>0>d>>>0){if(H[c+24|0]&1){break b}lj((o-d|0)+((f-J[i>>2]|0)/12|0)|0,12,i,v,r);o=J[n+60>>2]}k=0;if(o){while(1){f=J[r>>2];if((f|0)==J[v>>2]){break a}d=J[n+56>>2];J[r>>2]=f+12;J[f+8>>2]=d+(k<<7);J[f+4>>2]=n;J[f>>2]=0;k=k+1|0;if((o|0)!=(k|0)){continue}break}}j=j+1|0;if(j>>>0>2]){continue}break}}f=J[c+12>>2];d=J[c+16>>2];PF(f,d,e,(d|0)!=(f|0)?62-(S((d-f|0)/12|0)<<1)|0:0,1);s=e+8|0;d=s;J[d>>2]=0;J[d+4>>2]=0;J[e>>2]=0;J[e+4>>2]=0;d=J[c+12>>2];f:{if((d|0)==J[c+16>>2]){break f}u=e|4;while(1){w=P(C,12)+d|0;h=J[w+8>>2];t=nj(24);d=t;J[d>>2]=0;J[d+4>>2]=0;J[d+16>>2]=0;J[d+20>>2]=0;J[d+8>>2]=0;J[d+12>>2]=0;z=M[h+36>>2]/3|0;d=Zi[J[79402]](a,1)|0;f=J[h+92>>2];D=J[h+88>>2];g:{h:{i:{x=J[h+96>>2];j:{if((x|0)!=1){E=3;i=f>>>1|0;break j}if(!d){break i}E=5;i=f>>>2|0}n=J[e>>2];d=(J[e+8>>2]-n|0)/72|0;if(d>>>0>>0){if(H[e+12|0]&1){break b}lj(z,72,e,s,u);n=J[e>>2];d=(J[e+8>>2]-n|0)/72|0}if(d>>>0>>0){break h}r=P(z,72);J[e+4>>2]=r+n;l=J[h+36>>2];v=(l>>>0)/3|0;f=0;k=0;k=l?J[h+32>>2]:k;f=J[h+44>>2]?J[h+40>>2]:f;p=0;q=0;q=J[h+52>>2]?J[h+48>>2]:q;p=J[h+60>>2]?J[h+56>>2]:p;m=0;o=0;o=J[h+68>>2]?J[h+64>>2]:o;m=J[h+80>>2]?J[h+76>>2]:m;h=0;d=n;if(l>>>0>=3){while(1){N[d>>2]=N[k>>2];k:{if(!f){J[d+12>>2]=0;g=N[k+4>>2];J[d+16>>2]=0;N[d+4>>2]=g;N[d+8>>2]=N[k+8>>2];g=Q(0);f=0;break k}N[d+12>>2]=N[f>>2];N[d+4>>2]=N[k+4>>2];N[d+16>>2]=N[f+4>>2];N[d+8>>2]=N[k+8>>2];g=N[f+8>>2];f=f+12|0}N[d+20>>2]=g;l=0;l:{if(!p){j=0;g=Q(1);break l}j=p+4|0;g=N[p>>2]}N[d+40>>2]=g;if(q){l=q+4|0;g=N[q>>2]}else{g=Q(0)}N[d+24>>2]=g;q=0;m:{if(!j){p=0;g=Q(1);break m}p=j+4|0;g=N[j>>2]}N[d+44>>2]=g;if(l){q=l+4|0;g=N[l>>2]}else{g=Q(0)}N[d+28>>2]=g;l=0;n:{if(!p){j=0;g=Q(1);break n}j=p+4|0;g=N[p>>2]}N[d+48>>2]=g;if(q){l=q+4|0;g=N[q>>2]}else{g=Q(0)}N[d+32>>2]=g;q=0;o:{if(!j){p=0;g=Q(1);break o}p=j+4|0;g=N[j>>2]}N[d+52>>2]=g;g=Q(0);if(l){q=l+4|0;A=N[l>>2]}else{A=g}N[d+36>>2]=A;l=0;j=0;if(o){j=o+4|0;A=N[o>>2]}else{A=Q(0)}N[d+56>>2]=A;if(m){l=m+4|0;g=N[m>>2]}N[d+64>>2]=g;m=0;o=0;if(j){o=j+4|0;g=N[j>>2]}else{g=Q(0)}N[d+60>>2]=g;k=k+12|0;if(l){m=l+4|0;g=N[l>>2]}else{g=Q(0)}N[d+68>>2]=g;d=d+72|0;h=h+1|0;if((v|0)!=(h|0)){continue}break}}d=Zi[J[79391]](a,r,n,2)|0;J[t+8>>2]=z;J[t>>2]=d;J[t+12>>2]=0;J[t+4>>2]=0;if(!D){break g}d=Zi[J[79397]](a,i<<((x|0)==1?2:1),D,2)|0;J[t+16>>2]=E;J[t+4>>2]=d;J[t+12>>2]=i;break g}dj(4,88458,145988,0);break g}Z(144782,53895,514,59583);B()}J[w>>2]=t;C=C+1|0;d=J[c+12>>2];if(C>>>0<(J[c+16>>2]-d|0)/12>>>0){continue}break}if(H[e+12|0]&1){break f}a=J[e>>2];if(!a){break f}cj(a)}if(H[c+40|0]&1){break b}d=J[J[c>>2]+12>>2];a=J[y+12>>2];x=a>>>0>>0?d:a;u=c+28|0;w=c+36|0;h=c+32|0;lj(x,24,u,w,h);if(x){v=e+4|0;j=0;while(1){d=J[c>>2];a=J[d+12>>2];f=a>>>0>j>>>0?j:0;if(a>>>0<=f>>>0){break d}a=J[d+8>>2];J[e+16>>2]=0;J[e+20>>2]=0;J[e+8>>2]=0;J[e+12>>2]=0;J[e>>2]=0;J[e+4>>2]=0;s=a+P(f,24)|0;m=wk(b,J[s+4>>2],v);if(m){break e}J[e>>2]=Gk(J[s>>2]);J[e+8>>2]=J[s+16>>2];J[e+12>>2]=J[s+20>>2];i=J[s+12>>2];J[e+20>>2]=i;a=i<<4;f=nj(i>>>0>268435455?-1:a);J[e+16>>2]=f;d=0;ij(f,0,a);if(i){while(1){if(M[s+12>>2]<=d>>>0){break c}f=J[e+16>>2];r=J[s+8>>2]+(d<<3)|0;n=e+28|0;m=wk(b,J[r+4>>2],n);if(m){break e}a=CD(J[r+4>>2]);f=(d<<4)+f|0;i=J[e+28>>2];a=(a|0)==2;J[f+12>>2]=a?i:0;J[f+8>>2]=J[(a?i:n)>>2];i=bj(J[r>>2]);J[f>>2]=i;a=Yi;J[f+4>>2]=a;if(!(a|i)){a=J[J[e+4>>2]>>2];i=J[a+128>>2];if((J[a+132>>2]-i|0)/48>>>0>d>>>0){i=i+P(d,48)|0;a=J[i>>2];i=J[i+4>>2]}else{a=0;i=0}J[f>>2]=a;J[f+4>>2]=i}d=d+1|0;a=J[e+20>>2];if(d>>>0>>0){continue}break}f=J[e+16>>2];d=a}J[e+28>>2]=J[J[e+4>>2]>>2];OF(f,(d<<4)+f|0,e+28|0,d?62-(S(d)<<1)|0:0,1);d=J[h>>2];k=J[w>>2];if((d|0)==(k|0)){if(H[c+40|0]&1){break b}lj(((d-J[u>>2]|0)/24|0)+1|0,24,u,w,h);k=J[w>>2];d=J[h>>2]}if((d|0)==(k|0)){break a}J[h>>2]=d+24;a=J[e+20>>2];J[d+16>>2]=J[e+16>>2];J[d+20>>2]=a;a=J[e+12>>2];J[d+8>>2]=J[e+8>>2];J[d+12>>2]=a;a=J[e+4>>2];J[d>>2]=J[e>>2];J[d+4>>2]=a;j=j+1|0;if((x|0)!=(j|0)){continue}break}}b=J[h>>2];a=J[u>>2];J[e>>2]=y;m=0;QF(a,b,e,(a|0)!=(b|0)?62-(S((b-a|0)/24|0)<<1)|0:0,1);a=J[c+8>>2];if(!(J[a+28>>2]|J[a+20>>2])){break e}k=J[u>>2];if((k|0)==J[h>>2]){break e}d=0;while(1){if(J[J[J[(P(d,24)+k|0)+4>>2]>>2]+168>>2]!=1){d=d+1|0;k=J[u>>2];if(d>>>0<(J[h>>2]-k|0)/24>>>0){continue}break e}break}dj(4,88458,122825,0);m=-15}Ui=e+32|0;return m}Z(12664,55193,101,84789);B()}Z(12664,55193,48,84789);B()}Z(151729,53895,501,2284);B()}Z(112520,53895,557,53220);B()}function tU(a,b,c){var d=0,e=0,f=0,g=0;d=Ui-800|0;Ui=d;g=-56;a:{if(c>>>0>384){break a}g=0;f=d+384|0;ij(f,0,416);e=d+8|0;Iw(e);H[d+407|0]=48;H[d+403|0]=c;H[d+402|0]=c>>>8;I[d+400>>1]=0;H[hj(d+408|0,b,c)+c|0]=128;J[d+328>>2]=454695192;J[d+332>>2]=522067228;J[d+320>>2]=319951120;J[d+324>>2]=387323156;J[d+312>>2]=185207048;J[d+316>>2]=252579084;J[d+304>>2]=50462976;J[d+308>>2]=117835012;e=ls(e,d+304|0,256);b:{if(e){break b}J[d+296>>2]=0;J[d+300>>2]=0;J[d+288>>2]=0;J[d+292>>2]=0;b=f;f=c+25|0;c=f;while(1){if(c){H[d+288|0]=K[d+288|0]^K[b|0];H[d+289|0]=K[d+289|0]^K[b+1|0];H[d+290|0]=K[d+290|0]^K[b+2|0];H[d+291|0]=K[d+291|0]^K[b+3|0];H[d+292|0]=K[d+292|0]^K[b+4|0];H[d+293|0]=K[d+293|0]^K[b+5|0];H[d+294|0]=K[d+294|0]^K[b+6|0];H[d+295|0]=K[d+295|0]^K[b+7|0];H[d+296|0]=K[d+296|0]^K[b+8|0];H[d+297|0]=K[d+297|0]^K[b+9|0];H[d+298|0]=K[d+298|0]^K[b+10|0];H[d+299|0]=K[d+299|0]^K[b+11|0];H[d+300|0]=K[d+300|0]^K[b+12|0];H[d+301|0]=K[d+301|0]^K[b+13|0];H[d+302|0]=K[d+302|0]^K[b+14|0];H[d+303|0]=K[d+303|0]^K[b+15|0];e=c-16|0;c=c>>>0>=e>>>0?e:0;b=b+16|0;e=d+288|0;e=ro(d+8|0,1,e,e);if(!e){continue}break b}break}b=J[d+300>>2];J[d+344>>2]=J[d+296>>2];J[d+348>>2]=b;b=J[d+292>>2];J[d+336>>2]=J[d+288>>2];J[d+340>>2]=b;J[d+288>>2]=0;J[d+292>>2]=0;J[d+296>>2]=0;J[d+300>>2]=0;H[d+387|0]=K[d+387|0]+1;b=d+384|0;c=f;while(1){if(c){H[d+288|0]=K[d+288|0]^K[b|0];H[d+289|0]=K[d+289|0]^K[b+1|0];H[d+290|0]=K[d+290|0]^K[b+2|0];H[d+291|0]=K[d+291|0]^K[b+3|0];H[d+292|0]=K[d+292|0]^K[b+4|0];H[d+293|0]=K[d+293|0]^K[b+5|0];H[d+294|0]=K[d+294|0]^K[b+6|0];H[d+295|0]=K[d+295|0]^K[b+7|0];H[d+296|0]=K[d+296|0]^K[b+8|0];H[d+297|0]=K[d+297|0]^K[b+9|0];H[d+298|0]=K[d+298|0]^K[b+10|0];H[d+299|0]=K[d+299|0]^K[b+11|0];H[d+300|0]=K[d+300|0]^K[b+12|0];H[d+301|0]=K[d+301|0]^K[b+13|0];H[d+302|0]=K[d+302|0]^K[b+14|0];H[d+303|0]=K[d+303|0]^K[b+15|0];e=c-16|0;c=c>>>0>=e>>>0?e:0;b=b+16|0;e=d+288|0;e=ro(d+8|0,1,e,e);if(!e){continue}break b}break}b=J[d+300>>2];J[d+360>>2]=J[d+296>>2];J[d+364>>2]=b;b=J[d+292>>2];J[d+352>>2]=J[d+288>>2];J[d+356>>2]=b;J[d+288>>2]=0;J[d+292>>2]=0;J[d+296>>2]=0;J[d+300>>2]=0;H[d+387|0]=K[d+387|0]+1;b=d+384|0;while(1){if(f){H[d+288|0]=K[d+288|0]^K[b|0];H[d+289|0]=K[d+289|0]^K[b+1|0];H[d+290|0]=K[d+290|0]^K[b+2|0];H[d+291|0]=K[d+291|0]^K[b+3|0];H[d+292|0]=K[d+292|0]^K[b+4|0];H[d+293|0]=K[d+293|0]^K[b+5|0];H[d+294|0]=K[d+294|0]^K[b+6|0];H[d+295|0]=K[d+295|0]^K[b+7|0];H[d+296|0]=K[d+296|0]^K[b+8|0];H[d+297|0]=K[d+297|0]^K[b+9|0];H[d+298|0]=K[d+298|0]^K[b+10|0];H[d+299|0]=K[d+299|0]^K[b+11|0];H[d+300|0]=K[d+300|0]^K[b+12|0];H[d+301|0]=K[d+301|0]^K[b+13|0];H[d+302|0]=K[d+302|0]^K[b+14|0];H[d+303|0]=K[d+303|0]^K[b+15|0];c=f-16|0;f=c>>>0<=f>>>0?c:0;b=b+16|0;c=d+288|0;e=ro(d+8|0,1,c,c);if(!e){continue}break b}break}b=J[d+300>>2];J[d+376>>2]=J[d+296>>2];J[d+380>>2]=b;b=J[d+292>>2];J[d+368>>2]=J[d+288>>2];J[d+372>>2]=b;H[d+387|0]=K[d+387|0]+1;f=d+8|0;e=ls(f,d+336|0,256);if(e){break b}b=d+368|0;e=ro(f,1,b,b);if(e){break b}c=K[b+4|0]|K[b+5|0]<<8|(K[b+6|0]<<16|K[b+7|0]<<24);e=K[b|0]|K[b+1|0]<<8|(K[b+2|0]<<16|K[b+3|0]<<24);H[a|0]=e;H[a+1|0]=e>>>8;H[a+2|0]=e>>>16;H[a+3|0]=e>>>24;H[a+4|0]=c;H[a+5|0]=c>>>8;H[a+6|0]=c>>>16;H[a+7|0]=c>>>24;c=K[b+12|0]|K[b+13|0]<<8|(K[b+14|0]<<16|K[b+15|0]<<24);e=K[b+8|0]|K[b+9|0]<<8|(K[b+10|0]<<16|K[b+11|0]<<24);H[a+8|0]=e;H[a+9|0]=e>>>8;H[a+10|0]=e>>>16;H[a+11|0]=e>>>24;H[a+12|0]=c;H[a+13|0]=c>>>8;H[a+14|0]=c>>>16;H[a+15|0]=c>>>24;e=ro(f,1,b,b);if(e){break b}c=K[b+4|0]|K[b+5|0]<<8|(K[b+6|0]<<16|K[b+7|0]<<24);e=K[b|0]|K[b+1|0]<<8|(K[b+2|0]<<16|K[b+3|0]<<24);H[a+16|0]=e;H[a+17|0]=e>>>8;H[a+18|0]=e>>>16;H[a+19|0]=e>>>24;H[a+20|0]=c;H[a+21|0]=c>>>8;H[a+22|0]=c>>>16;H[a+23|0]=c>>>24;c=K[b+12|0]|K[b+13|0]<<8|(K[b+14|0]<<16|K[b+15|0]<<24);e=K[b+8|0]|K[b+9|0]<<8|(K[b+10|0]<<16|K[b+11|0]<<24);H[a+24|0]=e;H[a+25|0]=e>>>8;H[a+26|0]=e>>>16;H[a+27|0]=e>>>24;H[a+28|0]=c;H[a+29|0]=c>>>8;H[a+30|0]=c>>>16;H[a+31|0]=c>>>24;e=ro(f,1,b,b);if(e){break b}c=K[b+4|0]|K[b+5|0]<<8|(K[b+6|0]<<16|K[b+7|0]<<24);e=K[b|0]|K[b+1|0]<<8|(K[b+2|0]<<16|K[b+3|0]<<24);H[a+32|0]=e;H[a+33|0]=e>>>8;H[a+34|0]=e>>>16;H[a+35|0]=e>>>24;H[a+36|0]=c;H[a+37|0]=c>>>8;H[a+38|0]=c>>>16;H[a+39|0]=c>>>24;c=K[b+12|0]|K[b+13|0]<<8|(K[b+14|0]<<16|K[b+15|0]<<24);b=K[b+8|0]|K[b+9|0]<<8|(K[b+10|0]<<16|K[b+11|0]<<24);H[a+40|0]=b;H[a+41|0]=b>>>8;H[a+42|0]=b>>>16;H[a+43|0]=b>>>24;H[a+44|0]=c;H[a+45|0]=c>>>8;H[a+46|0]=c>>>16;H[a+47|0]=c>>>24;e=0}b=d+8|0;if(b){Zi[J[66509]](b,0,280)|0}Zi[J[66509]](d+384|0,0,416)|0;Zi[J[66509]](d+336|0,0,48)|0;Zi[J[66509]](d+304|0,0,32)|0;Zi[J[66509]](d+288|0,0,16)|0;if(!e){break a}Zi[J[66509]](a,0,48)|0;g=e}Ui=d+800|0;return g}function ts(a,b,c,d){var e=0,f=0,g=0,h=0,i=0,j=0,k=0;g=Ui-48|0;Ui=g;a:{b:{switch(kj(a,-1)|0){case 4:LI(a,d,-1);break a;case 3:MI(a,b,d,-1);break a;case 1:c=ck(a,-1);a=J[d+8>>2];b=a-J[d+4>>2]|0;if(c){if((b|0)>=-4){ql(d,a+4|0);a=J[d+8>>2]}a=J[d>>2]+a|0;H[a|0]=116;H[a+1|0]=114;H[a+2|0]=117;H[a+3|0]=101;J[d+8>>2]=J[d+8>>2]+4;break a}if((b|0)>=-5){ql(d,a+5|0);a=J[d+8>>2]}a=J[d>>2]+a|0;b=K[62644]|K[62645]<<8|(K[62646]<<16|K[62647]<<24);H[a|0]=b;H[a+1|0]=b>>>8;H[a+2|0]=b>>>16;H[a+3|0]=b>>>24;H[a+4|0]=K[62648];J[d+8>>2]=J[d+8>>2]+5;break a;case 5:h=c+1|0;c:{if(J[b+1320>>2]>(c|0)){if(dr(a,3)){break c}}gn(d);J[g+32>>2]=h;fj(a,141071,g+32|0)}d:{j=sm(a,-1);if(!j){break d}c=J[a+8>>2];J[c+8>>2]=2;J[c>>2]=862900;J[a+8>>2]=J[a+8>>2]+16;Ll(a,-1e4);c=eu(a,-1,-2);gj(a,-3);if(!c){break d}f=fl(a,-1);c=J[d+8>>2];if((c-J[d+4>>2]|0)>=-1){ql(d,c+1|0);c=J[d+8>>2]}J[d+8>>2]=c+1;H[J[d>>2]+c|0]=91;e:{if((f|0)<=0){break e}Nj(a,-1,1);ts(a,b,h,d);gj(a,-2);if((f|0)==1){break e}c=2;while(1){e=J[d+8>>2];if((e-J[d+4>>2]|0)>=-1){ql(d,e+1|0);e=J[d+8>>2]}J[d+8>>2]=e+1;H[J[d>>2]+e|0]=44;Nj(a,-1,c);ts(a,b,h,d);gj(a,-2);e=(c|0)!=(f|0);c=c+1|0;if(e){continue}break}}b=J[d+8>>2];if((b-J[d+4>>2]|0)>=-1){ql(d,b+1|0);b=J[d+8>>2]}J[d+8>>2]=b+1;H[J[d>>2]+b|0]=93;break a}c=J[a+8>>2];J[c+8>>2]=0;J[a+8>>2]=c+16;f:{g:{h:{if(!$j(a,-2)){c=0;break h}c=0;while(1){if((kj(a,-2)|0)!=3){break g}i=ok(a,-2);if(i==0|!(i>=1)|V(i)!=i){break g}gj(a,-2);f=+(c|0)>2];if(!((f|0)<=0|(P(e,f)|0)>=(c|0)|J[b+1316>>2]>=(c|0))){if(J[b+1308>>2]){break f}gn(d);c=kj(a,-1);if((c|0)==-1){c=60960}else{c=J[(c<<2)+257632>>2]}J[g+20>>2]=3951;J[g+16>>2]=c;fj(a,28377,g+16|0);break f}if((c|0)>0){e=J[d+8>>2];if((e-J[d+4>>2]|0)>=-1){ql(d,e+1|0);e=J[d+8>>2]}J[d+8>>2]=e+1;H[J[d>>2]+e|0]=91;Nj(a,-1,1);ts(a,b,h,d);gj(a,-2);if((c|0)!=1){e=2;while(1){f=J[d+8>>2];if((f-J[d+4>>2]|0)>=-1){ql(d,f+1|0);f=J[d+8>>2]}J[d+8>>2]=f+1;H[J[d>>2]+f|0]=44;Nj(a,-1,e);ts(a,b,h,d);gj(a,-2);f=(c|0)!=(e|0);e=e+1|0;if(f){continue}break}}b=J[d+8>>2];if((b-J[d+4>>2]|0)>=-1){ql(d,b+1|0);b=J[d+8>>2]}J[d+8>>2]=b+1;H[J[d>>2]+b|0]=93;break a}if(J[b+1336>>2]|c){break f}NI(d);break a}gj(a,-3)}i:{if(!j){break i}sm(a,-1);c=J[a+8>>2];J[c+8>>2]=2;J[c>>2]=862904;J[a+8>>2]=J[a+8>>2]+16;Ll(a,-1e4);c=eu(a,-1,-2);gj(a,-3);if(!c){break i}NI(d);break a}e=Ui-16|0;Ui=e;c=J[d+8>>2];if((c-J[d+4>>2]|0)>=-1){ql(d,c+1|0);c=J[d+8>>2]}J[d+8>>2]=c+1;H[J[d>>2]+c|0]=123;c=J[a+8>>2];J[c+8>>2]=0;J[a+8>>2]=c+16;j:{if(!$j(a,-2)){break j}while(1){k:{l:{switch(kj(a,-2)-3|0){case 0:c=J[d+8>>2];if((c-J[d+4>>2]|0)>=-1){ql(d,c+1|0);c=J[d+8>>2]}J[d+8>>2]=c+1;H[J[d>>2]+c|0]=34;MI(a,b,d,-2);c=J[d+8>>2];if((c-J[d+4>>2]|0)>=-2){ql(d,c+2|0);c=J[d+8>>2]}c=J[d>>2]+c|0;H[c|0]=34;H[c+1|0]=58;J[d+8>>2]=J[d+8>>2]+2;break k;case 1:LI(a,d,-2);c=J[d+8>>2];if((c-J[d+4>>2]|0)>=-1){ql(d,c+1|0);c=J[d+8>>2]}J[d+8>>2]=c+1;H[J[d>>2]+c|0]=58;break k;default:break l}}gn(d);c=kj(a,-2);if((c|0)==-1){c=60960}else{c=J[(c<<2)+257632>>2]}J[e+4>>2]=56334;J[e>>2]=c;fj(a,28377,e)}ts(a,b,h,d);gj(a,-2);if(!$j(a,-2)){break j}c=J[d+8>>2];if((c-J[d+4>>2]|0)>=-1){ql(d,c+1|0);c=J[d+8>>2]}J[d+8>>2]=c+1;H[J[d>>2]+c|0]=44;continue}}a=J[d+8>>2];if((a-J[d+4>>2]|0)>=-1){ql(d,a+1|0);a=J[d+8>>2]}J[d+8>>2]=a+1;H[J[d>>2]+a|0]=125;Ui=e+16|0;break a;case 0:a=J[d+8>>2];if((a-J[d+4>>2]|0)>=-4){ql(d,a+4|0);a=J[d+8>>2]}a=J[d>>2]+a|0;H[a|0]=110;H[a+1|0]=117;H[a+2|0]=108;H[a+3|0]=108;J[d+8>>2]=J[d+8>>2]+4;break a;case 2:if(!Vj(a,-1)){a=J[d+8>>2];if((a-J[d+4>>2]|0)>=-4){ql(d,a+4|0);a=J[d+8>>2]}a=J[d>>2]+a|0;H[a|0]=110;H[a+1|0]=117;H[a+2|0]=108;H[a+3|0]=108;J[d+8>>2]=J[d+8>>2]+4;break a}if((Vj(a,-1)|0)!=862900){break a}b=J[d+8>>2];if((b-J[d+4>>2]|0)>=-1){ql(d,b+1|0);b=J[d+8>>2]}J[d+8>>2]=b+1;H[J[d>>2]+b|0]=91;b=J[d+8>>2];if((b-J[d+4>>2]|0)>=-1){ql(d,b+1|0);b=J[d+8>>2]}J[d+8>>2]=b+1;H[J[d>>2]+b|0]=93;break a;case 6:case 7:case 8:e=J[a+8>>2]-J[a+12>>2]>>4;uj(a,-1);rj(a,-10002,56236);uj(a,-2);b=0;kq(a,1,1,0);h=Ij(a,-1,g+44|0);f=P(J[g+44>>2],6)+2|0;c=J[d+8>>2];if((f|0)>(J[d+4>>2]+(c^-1)|0)){ql(d,c+f|0);c=J[d+8>>2]}J[d+8>>2]=c+1;H[J[d>>2]+c|0]=34;if(J[g+44>>2]){while(1){c=K[b+h|0];f=J[(c<<2)+255056>>2];m:{if(f){nG(d,f);break m}f=J[d+8>>2];J[d+8>>2]=f+1;H[f+J[d>>2]|0]=c}b=b+1|0;if(b>>>0>2]){continue}break}}b=J[d+8>>2];J[d+8>>2]=b+1;H[b+J[d>>2]|0]=34;gj(a,-3);if(J[a+8>>2]-J[a+12>>2]>>4==(e|0)){break a}Z(137639,82638,646,56274);B();default:break b}}gn(d);b=kj(a,-1);if((b|0)==-1){b=60960}else{b=J[(b<<2)+257632>>2]}J[g+4>>2]=73439;J[g>>2]=b;fj(a,28377,g)}Ui=g+48|0}function Lo(a,b,c,d){var e=0,f=0,g=0,h=0,i=0,j=0,k=0,l=0,m=0,n=0,o=0,p=0;a:{b:{if(J[a+132>>2]>0){f=J[a>>2];if(J[f+44>>2]==2){c:{if(L[a+148>>1]|L[a+152>>1]|(L[a+156>>1]|L[a+160>>1])){break c}if(L[a+164>>1]|L[a+168>>1]|(L[a+172>>1]|L[a+204>>1])){break c}if(L[a+208>>1]|L[a+212>>1]|(L[a+216>>1]|L[a+220>>1])){break c}if(L[a+224>>1]|L[a+228>>1]|(L[a+232>>1]|L[a+236>>1])){break c}if(L[a+240>>1]|L[a+244>>1]|(L[a+248>>1]|L[a+260>>1])){break c}if(L[a+272>>1]|(L[a+264>>1]|L[a+268>>1])){break c}d:{if(L[a+200>>1]|(L[a+184>>1]|L[a+188>>1])){break d}i=a+148|0;h=32;while(1){e=i+(h<<2)|0;if(L[e>>1]|L[e+4>>1]|(L[e+8>>1]|L[e+12>>1])){break d}h=h+4|0;if((h|0)!=256){continue}break}break c}g=1}J[f+44>>2]=g}DE(a,a+2840|0);DE(a,a+2852|0);e=L[a+150>>1];n=a+148|0;l=J[a+2844>>2];I[(n+(l<<2)|0)+6>>1]=65535;h=0;if((l|0)>=0){i=e?7:138;m=e?4:3;o=a+2684|0;j=-1;f=0;while(1){g=e;p=f;f=f+1|0;e=L[(n+(f<<2)|0)+2>>1];k=h+1|0;e:{if(!((g|0)!=(e|0)|(k|0)>=(i|0))){h=k;break e}f:{if((m|0)>(k|0)){h=o+(g<<2)|0;I[h>>1]=k+L[h>>1];break f}if(g){if((g|0)!=(j|0)){h=o+(g<<2)|0;I[h>>1]=L[h>>1]+1}I[a+2748>>1]=L[a+2748>>1]+1;break f}if((h|0)<=9){I[a+2752>>1]=L[a+2752>>1]+1;break f}I[a+2756>>1]=L[a+2756>>1]+1}h=0;g:{if(!e){m=3;i=138;break g}i=(e|0)==(g|0);m=i?3:4;i=i?6:7}j=g}if((l|0)!=(p|0)){continue}break}}e=L[a+2442>>1];n=a+2440|0;l=J[a+2856>>2];I[(n+(l<<2)|0)+6>>1]=65535;h=0;if((l|0)>=0){i=e?7:138;m=e?4:3;o=a+2684|0;j=-1;f=0;while(1){g=e;p=f;f=f+1|0;e=L[(n+(f<<2)|0)+2>>1];k=h+1|0;h:{if(!((g|0)!=(e|0)|(k|0)>=(i|0))){h=k;break h}i:{if((m|0)>(k|0)){h=o+(g<<2)|0;I[h>>1]=k+L[h>>1];break i}if(g){if((g|0)!=(j|0)){h=o+(g<<2)|0;I[h>>1]=L[h>>1]+1}I[a+2748>>1]=L[a+2748>>1]+1;break i}if((h|0)<=9){I[a+2752>>1]=L[a+2752>>1]+1;break i}I[a+2756>>1]=L[a+2756>>1]+1}h=0;j:{if(!e){m=3;i=138;break j}i=(e|0)==(g|0);m=i?3:4;i=i?6:7}j=g}if((l|0)!=(p|0)){continue}break}}DE(a,a+2864|0);g=J[a+5800>>2];f=18;k:{if(L[a+2746>>1]){break k}f=17;if(L[a+2690>>1]){break k}f=16;if(L[a+2742>>1]){break k}f=15;if(L[a+2694>>1]){break k}f=14;if(L[a+2738>>1]){break k}f=13;if(L[a+2698>>1]){break k}f=12;if(L[a+2734>>1]){break k}f=11;if(L[a+2702>>1]){break k}f=10;if(L[a+2730>>1]){break k}f=9;if(L[a+2706>>1]){break k}f=8;if(L[a+2726>>1]){break k}f=7;if(L[a+2710>>1]){break k}f=6;if(L[a+2722>>1]){break k}f=5;if(L[a+2714>>1]){break k}f=4;if(L[a+2718>>1]){break k}f=L[a+2686>>1]?3:2}e=g+P(f,3)|0;J[a+5800>>2]=e+17;e=e+27>>>3|0;g=J[a+5804>>2]+10>>>3|0;if(J[a+136>>2]==4|e>>>0>=g>>>0){break b}break a}g=c+5|0}e=g}l:{if(!(!b|c+4>>>0>e>>>0)){xz(a,b,c,d);break l}b=J[a+5820>>2];if((e|0)==(g|0)){c=d+2|0;m:{if((b|0)>=14){b=L[a+5816>>1]|c<>1]=b;e=J[a+20>>2];J[a+20>>2]=e+1;H[e+J[a+8>>2]|0]=b;b=J[a+20>>2];J[a+20>>2]=b+1;H[b+J[a+8>>2]|0]=K[a+5817|0];b=J[a+5820>>2];I[a+5816>>1]=(c&65535)>>>16-b;b=b-13|0;break m}I[a+5816>>1]=L[a+5816>>1]|c<>2]=b;HS(a,194384,195536);break l}c=d+4|0;n:{if((b|0)>=14){b=L[a+5816>>1]|c<>1]=b;e=J[a+20>>2];J[a+20>>2]=e+1;H[e+J[a+8>>2]|0]=b;b=J[a+20>>2];J[a+20>>2]=b+1;H[b+J[a+8>>2]|0]=K[a+5817|0];b=J[a+5820>>2];h=(c&65535)>>>16-b|0;b=b-13|0;break n}h=L[a+5816>>1]|c<>2]=b;i=J[a+2844>>2];e=i+65280|0;c=J[a+2856>>2];o:{if((b|0)>=12){b=e<>1]=b;h=J[a+20>>2];J[a+20>>2]=h+1;H[h+J[a+8>>2]|0]=b;b=J[a+20>>2];J[a+20>>2]=b+1;H[b+J[a+8>>2]|0]=K[a+5817|0];b=J[a+5820>>2];e=(e&65535)>>>16-b|0;g=b-11|0;break o}e=e<>2]=g;p:{if((g|0)>=12){b=c<>1]=b;e=J[a+20>>2];J[a+20>>2]=e+1;H[e+J[a+8>>2]|0]=b;b=J[a+20>>2];J[a+20>>2]=b+1;H[b+J[a+8>>2]|0]=K[a+5817|0];b=J[a+5820>>2];h=(c&65535)>>>16-b|0;b=b-11|0;break p}h=c<>2]=b;g=f+65533|0;q:{if((b|0)>=13){b=g<>1]=b;e=J[a+20>>2];J[a+20>>2]=e+1;H[e+J[a+8>>2]|0]=b;b=J[a+20>>2];J[a+20>>2]=b+1;H[b+J[a+8>>2]|0]=K[a+5817|0];e=J[a+5820>>2];b=(g&65535)>>>16-e|0;e=e-12|0;break q}e=b+4|0;b=g<>2]=e;h=a+2684|0;g=0;while(1){j=L[(h+(K[g+196e3|0]<<2)|0)+2>>1];b=j<>1]=b;r:{if((e|0)>=14){e=J[a+20>>2];J[a+20>>2]=e+1;H[e+J[a+8>>2]|0]=b;b=J[a+20>>2];J[a+20>>2]=b+1;H[b+J[a+8>>2]|0]=K[a+5817|0];e=J[a+5820>>2];b=j>>>16-e|0;I[a+5816>>1]=b;e=e-13|0;break r}e=e+3|0}J[a+5820>>2]=e;j=(g|0)!=(f|0);g=g+1|0;if(j){continue}break}b=a+148|0;LG(a,b,i);e=a+2440|0;LG(a,e,c);HS(a,b,e)}SI(a);if(d){e=J[a+5820>>2];s:{t:{if((e|0)>=9){b=J[a+20>>2];J[a+20>>2]=b+1;H[b+J[a+8>>2]|0]=K[a+5816|0];b=K[a+5817|0];break t}if((e|0)<=0){break s}b=K[a+5816|0]}c=J[a+20>>2];J[a+20>>2]=c+1;H[c+J[a+8>>2]|0]=b;e=J[a+5820>>2]}J[a+5820>>2]=0;I[a+5816>>1]=0;J[a+5824>>2]=(e-1&7)+1}}function E5(a){a=a|0;var b=0,c=0,d=0,e=0,f=0,g=0,h=0,i=0,j=0,k=0,l=0,m=0,n=0,o=0,p=0,q=0,r=0,s=0,t=0,u=0,v=0,w=0;b=Ui-1104|0;Ui=b;d=J[a+8>>2]-J[a+12>>2]>>4;k=d;Bj(a);n=qj(a,-1,J[84364],139081);gj(a,-2);a:{b:{c:{d:{e:{f:{g:{if((d|0)==J[a+8>>2]-J[a+12>>2]>>4){d=kj(a,1);l=Zi[J[79469]](J[J[n+304>>2]+2480>>2])|0;m=(d|0)==5?1:2;Oj(a,m,5);J[b+748>>2]=0;J[b+752>>2]=0;H[b+755|0]=0;H[b+756|0]=0;H[b+757|0]=0;H[b+758|0]=0;J[b+736>>2]=1;J[b+728>>2]=2;J[b+732>>2]=1;J[b+720>>2]=3;J[b+724>>2]=5;J[b+712>>2]=0;J[b+716>>2]=0;J[b+704>>2]=1;J[b+708>>2]=16842752;J[b+696>>2]=0;J[b+700>>2]=0;J[b+688>>2]=1;J[b+692>>2]=16842752;J[b+680>>2]=0;J[b+684>>2]=0;J[b+672>>2]=1;J[b+676>>2]=16842752;J[b+664>>2]=0;J[b+668>>2]=0;J[b+656>>2]=1;J[b+660>>2]=16842752;J[b+648>>2]=0;J[b+652>>2]=0;J[b+640>>2]=1;J[b+644>>2]=16842752;J[b+632>>2]=0;J[b+636>>2]=0;J[b+624>>2]=1;J[b+628>>2]=16842752;J[b+616>>2]=0;J[b+620>>2]=0;J[b+740>>2]=0;J[b+744>>2]=0;J[b+796>>2]=0;J[b+800>>2]=0;H[b+803|0]=0;H[b+804|0]=0;H[b+805|0]=0;H[b+806|0]=0;J[b+844>>2]=0;J[b+848>>2]=0;H[b+851|0]=0;H[b+852|0]=0;H[b+853|0]=0;H[b+854|0]=0;J[b+784>>2]=1;J[b+776>>2]=2;J[b+780>>2]=1;J[b+768>>2]=3;J[b+772>>2]=5;J[b+760>>2]=0;J[b+764>>2]=0;J[b+788>>2]=0;J[b+792>>2]=0;J[b+832>>2]=1;J[b+808>>2]=0;J[b+812>>2]=0;J[b+816>>2]=3;J[b+820>>2]=5;J[b+824>>2]=2;J[b+828>>2]=1;J[b+836>>2]=0;J[b+840>>2]=0;J[b+880>>2]=1;J[b+856>>2]=0;J[b+860>>2]=0;J[b+864>>2]=3;J[b+868>>2]=5;J[b+872>>2]=2;J[b+876>>2]=1;H[b+899|0]=0;H[b+900|0]=0;H[b+901|0]=0;H[b+902|0]=0;J[b+892>>2]=0;J[b+896>>2]=0;H[b+947|0]=0;H[b+948|0]=0;H[b+949|0]=0;H[b+950|0]=0;J[b+940>>2]=0;J[b+944>>2]=0;H[b+995|0]=0;H[b+996|0]=0;H[b+997|0]=0;H[b+998|0]=0;J[b+988>>2]=0;J[b+992>>2]=0;J[b+884>>2]=0;J[b+888>>2]=0;J[b+920>>2]=2;J[b+924>>2]=1;J[b+912>>2]=3;J[b+916>>2]=5;J[b+904>>2]=0;J[b+908>>2]=0;J[b+928>>2]=1;J[b+932>>2]=0;J[b+936>>2]=0;J[b+968>>2]=2;J[b+972>>2]=1;J[b+960>>2]=3;J[b+964>>2]=5;J[b+952>>2]=0;J[b+956>>2]=0;J[b+976>>2]=1;J[b+980>>2]=0;J[b+984>>2]=0;p=ij(b+1e3|0,0,96);H[b+1096|0]=K[b+1096|0]&252;d=J[a+8>>2];J[d+8>>2]=0;J[a+8>>2]=d+16;if($j(a,m)){q=b+1016|0;i=b+952|0;r=b+904|0;s=b+712|0;t=b+696|0;u=b+680|0;while(1){f=Ej(a,-2);d=f-1|0;if(!(1<>>0<=31:0)){J[b+608>>2]=f;f=fj(a,133241,b+608|0)}h:{i:{c=f-1|0;if(c>>>0<=31){if(1<>2]=f;J[b+496>>2]=35504;e=fj(a,141700,b+496|0);break a}d=Up(f);e=d<<2;J[e+p>>2]=0;J[e+q>>2]=2;e=P(d,48)+s|0;d=(b+616|0)+(d<<4)|0}Oj(a,-1,5);c=J[a+8>>2];J[c+8>>2]=0;J[a+8>>2]=c+16;c=0;if(!$j(a,-2)){break b}o=f|o;g=0;j=0;while(1){h=Aj(a,-2,0);v=$k(h,17039,6);w=$k(h,52997,5);h=$k(h,14691,6);gj(a,-2);c=!v|c;g=!w|g;j=!h|j;if($j(a,-2)){continue}break}g=c&g;if(!(g&j&1)){break c}c=J[a+8>>2];J[c+8>>2]=0;J[a+8>>2]=c+16;if($j(a,-2)){j=(f|0)!=16;h=(f|0)!=32;g=f-16|0;while(1){c=Aj(a,-2,0);if(!kj(a,-1)){J[b+548>>2]=c;J[b+544>>2]=35504;e=fj(a,118684,b+544|0);break a}j:{if(!$k(c,17039,6)){c=Ej(a,-1);J[e+8>>2]=c;if(!((c|0)==6|j)){e=fj(a,131096,0);break a}if((c|0)==7|h){break j}e=fj(a,131035,0);break a}if(!$k(c,52997,5)){c=Ej(a,-1);I[e+40>>1]=c;I[d+4>>1]=c;break j}if(!$k(c,14691,6)){c=Ej(a,-1);I[e+42>>1]=c;I[d+6>>1]=c;break j}if(!$k(c,33647,10)){J[e+12>>2]=Ej(a,-1);break j}if(!$k(c,33683,10)){J[e+16>>2]=Ej(a,-1);break j}if(!$k(c,43554,6)){J[e+20>>2]=Ej(a,-1);break j}if(!$k(c,43547,6)){J[e+24>>2]=Ej(a,-1);break j}k:{if(!$k(c,21428,5)){c=Ej(a,-1);if(!g){break k}if(!(c&1)|(g|0)!=16){break j}dj(3,90423,119388,0);break j}gj(a,-3);if(J[a+8>>2]-J[a+12>>2]>>4!=(k|0)){break g}J[b+596>>2]=21428;J[b+592>>2]=43547;J[b+588>>2]=43554;J[b+584>>2]=33683;J[b+580>>2]=33647;J[b+576>>2]=14691;J[b+564>>2]=c;J[b+572>>2]=52997;J[b+568>>2]=17039;J[b+560>>2]=35504;e=fj(a,118892,b+560|0);break a}H[b+1096|0]=K[b+1096|0]&254|c&1}gj(a,-2);if($j(a,-2)){continue}break}}gj(a,-2);if(!(L[d+4>>1]<=l>>>0&L[d+6>>1]<=l>>>0)){gj(a,-2);if(J[a+8>>2]-J[a+12>>2]>>4!=(k|0)){break f}e=nP(f);i=L[d+4>>1];d=L[d+6>>1];J[b+540>>2]=l;J[b+536>>2]=d;J[b+532>>2]=i;J[b+528>>2]=e;e=fj(a,121114,b+528|0);break a}if($j(a,m)){continue}break}}d=J[J[n+304>>2]+2480>>2];e=b+12|0;hj(e,b+616|0,484);d=xD(d,o,e);e=Yi;if((e|0)!=2){break e}i=J[a+8>>2];J[i+8>>2]=3;O[i>>3]=+(d>>>0)+ +(e>>>0)*4294967296;J[a+8>>2]=J[a+8>>2]+16;e=1;if((k+1|0)!=J[a+8>>2]-J[a+12>>2]>>4){break d}break a}Z(143244,37616,478,51340);B()}Z(143244,37616,991,15683);B()}Z(143244,37616,1010,15683);B()}Z(88119,37616,1017,15683);B()}Z(143334,37616,1026,15683);B()}c=g&1?2:c&1}J[b+512>>2]=J[(c<<2)+248096>>2];e=fj(a,149527,b+512|0)}Ui=b+1104|0;return e|0}function SV(a,b){var c=0,d=0,e=0,f=0,g=0,h=0,i=0,j=0,k=0;e=Ui-192|0;Ui=e;c=J[a>>2];d=L[c+52>>1]+1|0;I[c+52>>1]=d;if((d&65535)>>>0>=201){d=J[a+12>>2];J[e+180>>2]=43509;J[e+176>>2]=d;gk(c,50977,e+176|0);al(J[a>>2],3);c=J[a>>2]}f=VA(c);c=J[J[a>>2]+8>>2];J[c+8>>2]=9;J[c>>2]=f;d=J[a>>2];g=J[d+8>>2];if((J[d+28>>2]-g|0)<=16){Ml(d,1);d=J[a>>2];g=J[d+8>>2]}J[d+8>>2]=g+16;c=Cz(a);J[f+32>>2]=c?c:b;J[f+60>>2]=up(a);J[f+64>>2]=up(a);if(Hn(J[a+4>>2],e+184|0,1)){b=J[a>>2];c=J[a+12>>2];J[e+164>>2]=71449;J[e+160>>2]=c;gk(b,50977,e+160|0);al(J[a>>2],3)}H[f+72|0]=K[e+184|0];if(Hn(J[a+4>>2],e+184|0,1)){b=J[a>>2];c=J[a+12>>2];J[e+148>>2]=71449;J[e+144>>2]=c;gk(b,50977,e+144|0);al(J[a>>2],3)}H[f+73|0]=K[e+184|0];if(Hn(J[a+4>>2],e+184|0,1)){b=J[a>>2];c=J[a+12>>2];J[e+132>>2]=71449;J[e+128>>2]=c;gk(b,50977,e+128|0);al(J[a>>2],3)}H[f+74|0]=K[e+184|0];if(Hn(J[a+4>>2],e+184|0,1)){b=J[a>>2];c=J[a+12>>2];J[e+116>>2]=71449;J[e+112>>2]=c;gk(b,50977,e+112|0);al(J[a>>2],3)}H[f+75|0]=K[e+184|0];c=up(a);d=J[a>>2];a:{if(c+1>>>0<=1073741823){b=c<<2;d=lk(d,0,0,b);break a}b=c<<2;d=Dl(d)}J[f+44>>2]=c;J[f+12>>2]=d;if(Hn(J[a+4>>2],d,b)){b=J[a>>2];c=J[a+12>>2];J[e+100>>2]=71449;J[e+96>>2]=c;gk(b,50977,e+96|0);al(J[a>>2],3)}h=up(a);b=J[a>>2];b:{if(h+1>>>0<=268435455){b=lk(b,0,0,h<<4);break b}b=Dl(b)}J[f+40>>2]=h;c=b;J[f+8>>2]=c;c:{if((h|0)<=0){break c}b=0;g=0;if(h>>>0>=8){j=h&2147483640;while(1){d=c+(g<<4)|0;J[d+8>>2]=0;J[d+24>>2]=0;J[d+40>>2]=0;J[d+56>>2]=0;J[d+72>>2]=0;J[d+88>>2]=0;J[d+104>>2]=0;J[d+120>>2]=0;g=g+8|0;i=i+8|0;if((j|0)!=(i|0)){continue}break}}d=h&7;if(d){while(1){J[(c+(g<<4)|0)+8>>2]=0;g=g+1|0;b=b+1|0;if((d|0)!=(b|0)){continue}break}}if((h|0)<=0){break c}d=0;while(1){b=J[f+8>>2];if(Hn(J[a+4>>2],e+184|0,1)){c=J[a>>2];g=J[a+12>>2];J[e+84>>2]=71449;J[e+80>>2]=g;gk(c,50977,e+80|0);al(J[a>>2],3)}b=(d<<4)+b|0;d:{e:{switch(K[e+184|0]){case 0:J[b+8>>2]=0;break d;case 1:if(Hn(J[a+4>>2],e+184|0,1)){c=J[a>>2];g=J[a+12>>2];J[e+52>>2]=71449;J[e+48>>2]=g;gk(c,50977,e+48|0);al(J[a>>2],3)}c=K[e+184|0];J[b+8>>2]=1;J[b>>2]=(c|0)!=0;break d;case 3:if(Hn(J[a+4>>2],e+184|0,8)){c=J[a>>2];g=J[a+12>>2];J[e+68>>2]=71449;J[e+64>>2]=g;gk(c,50977,e- -64|0);al(J[a>>2],3)}k=O[e+184>>3];J[b+8>>2]=3;O[b>>3]=k;break d;case 4:c=Cz(a);J[b+8>>2]=4;J[b>>2]=c;break d;default:break e}}b=J[a>>2];c=J[a+12>>2];J[e+36>>2]=14042;J[e+32>>2]=c;gk(b,50977,e+32|0);al(J[a>>2],3)}d=d+1|0;if((h|0)!=(d|0)){continue}break}}c=up(a);b=J[a>>2];f:{if(c+1>>>0<=1073741823){b=lk(b,0,0,c<<2);break f}b=Dl(b)}J[f+52>>2]=c;J[f+16>>2]=b;g:{if((c|0)<=0){break g}b=0;d=0;if(c>>>0>=4){i=c&2147483644;g=0;while(1){h=d<<2;J[h+J[f+16>>2]>>2]=0;J[(h+J[f+16>>2]|0)+4>>2]=0;J[(h+J[f+16>>2]|0)+8>>2]=0;J[(h+J[f+16>>2]|0)+12>>2]=0;d=d+4|0;g=g+4|0;if((i|0)!=(g|0)){continue}break}}g=c&3;if(g){while(1){J[J[f+16>>2]+(d<<2)>>2]=0;d=d+1|0;b=b+1|0;if((g|0)!=(b|0)){continue}break}}d=0;if((c|0)<=0){break g}while(1){b=SV(a,J[f+32>>2]);J[J[f+16>>2]+(d<<2)>>2]=b;d=d+1|0;if((c|0)!=(d|0)){continue}break}}c=up(a);d=J[a>>2];h:{if(c+1>>>0<=1073741823){b=c<<2;d=lk(d,0,0,b);break h}b=c<<2;d=Dl(d)}J[f+48>>2]=c;J[f+20>>2]=d;if(Hn(J[a+4>>2],d,b)){b=J[a>>2];c=J[a+12>>2];J[e+20>>2]=71449;J[e+16>>2]=c;gk(b,50977,e+16|0);al(J[a>>2],3)}g=up(a);b=J[a>>2];i:{if(g+1>>>0<=357913941){c=lk(b,0,0,P(g,12));break i}c=Dl(b)}J[f+56>>2]=g;J[f+24>>2]=c;if((g|0)>0){b=0;d=0;if(g>>>0>=8){h=g&2147483640;i=0;while(1){J[c+P(d,12)>>2]=0;J[c+P(d|1,12)>>2]=0;J[c+P(d|2,12)>>2]=0;J[c+P(d|3,12)>>2]=0;J[c+P(d|4,12)>>2]=0;J[c+P(d|5,12)>>2]=0;J[c+P(d|6,12)>>2]=0;J[c+P(d|7,12)>>2]=0;d=d+8|0;i=i+8|0;if((h|0)!=(i|0)){continue}break}}h=g&7;if(h){while(1){J[c+P(d,12)>>2]=0;d=d+1|0;b=b+1|0;if((h|0)!=(b|0)){continue}break}}d=0;while(1){c=Cz(a);b=P(d,12);J[b+J[f+24>>2]>>2]=c;c=up(a);J[(b+J[f+24>>2]|0)+4>>2]=c;c=up(a);J[(b+J[f+24>>2]|0)+8>>2]=c;d=d+1|0;if((g|0)!=(d|0)){continue}break}}b=up(a);c=J[a>>2];j:{if(b+1>>>0<=1073741823){c=lk(c,0,0,b<<2);break j}c=Dl(c)}J[f+36>>2]=b;J[f+28>>2]=c;if((b|0)>0){g=0;d=0;if(b>>>0>=4){h=b&2147483644;i=0;while(1){c=d<<2;J[c+J[f+28>>2]>>2]=0;J[(c+J[f+28>>2]|0)+4>>2]=0;J[(c+J[f+28>>2]|0)+8>>2]=0;J[(c+J[f+28>>2]|0)+12>>2]=0;d=d+4|0;i=i+4|0;if((h|0)!=(i|0)){continue}break}}c=b&3;if(c){while(1){J[J[f+28>>2]+(d<<2)>>2]=0;d=d+1|0;g=g+1|0;if((c|0)!=(g|0)){continue}break}}d=0;while(1){c=Cz(a);J[J[f+28>>2]+(d<<2)>>2]=c;d=d+1|0;if((b|0)!=(d|0)){continue}break}}if(!hG(f,J[f+44>>2],255)){b=J[a>>2];c=J[a+12>>2];J[e+4>>2]=69558;J[e>>2]=c;gk(b,50977,e);al(J[a>>2],3)}a=J[a>>2];J[a+8>>2]=J[a+8>>2]-16;I[a+52>>1]=L[a+52>>1]-1;Ui=e+192|0;return f}function nga(a){a=a|0;var b=0,c=0,d=0,e=0,f=0,g=Q(0),h=Q(0),i=Q(0),j=0,k=0;c=Ui-112|0;Ui=c;j=pj(c+92|0,a,0,39481,892);d=mk(a,2);f=Yi;b=J[J[pk(a)+80>>2]+8>>2];J[c+88>>2]=0;J[c+84>>2]=0;J[c+48>>2]=0;J[c+52>>2]=0;J[c+40>>2]=0;J[c+44>>2]=0;J[c+32>>2]=0;J[c+36>>2]=0;J[c+24>>2]=0;J[c+28>>2]=0;Al(a,1,b,80935,c+88|0,c+24|0,c+84|0);e=J[c+88>>2];a:{if(H[J[c+84>>2]+145|0]&1){dj(4,88458,25611,0);b=1;break a}b=3;e=J[e+12>>2];b:{if(!e){break b}while(1){if((d|0)!=J[e>>2]|J[e+4>>2]!=(f|0)){e=J[e+16>>2];if(e){continue}break b}break}b=4;if(!J[e+12>>2]){break a}J[c+80>>2]=J[e+8>>2];b=0}}c:{if(b){J[c+20>>2]=b;J[c+16>>2]=J[(b<<2)+225184>>2];b=Jj(j,140493,c+16|0);break c}H[c+24|0]=0;d:{e:{f:{g:{h:{i:{j:{b=J[c+80>>2];switch(b|0){case 4:break f;case 3:break g;case 2:break h;case 1:break i;case 0:break j;case 5:break e;default:break d}}J[c+36>>2]=0;J[c+28>>2]=1065353216;J[c+32>>2]=0;break d}J[c+28>>2]=0;break d}I[c+50>>1]=0;I[c+52>>1]=0;I[c+54>>1]=0;I[c+56>>1]=0;J[c+44>>2]=0;J[c+48>>2]=0;J[c+36>>2]=0;J[c+40>>2]=0;break d}H[c+45|0]=0;H[c+46|0]=0;H[c+47|0]=0;H[c+48|0]=0;H[c+49|0]=0;H[c+50|0]=0;H[c+51|0]=0;H[c+52|0]=0;H[c- -64|0]=0;J[c+68>>2]=0;J[c+72>>2]=0;J[c+36>>2]=1065353216;J[c+40>>2]=0;J[c+44>>2]=0;J[c+56>>2]=0;J[c+60>>2]=0;break d}J[c+36>>2]=0;J[c+28>>2]=0;J[c+32>>2]=0;break d}J[c+48>>2]=0;J[c+52>>2]=0;H[c+56|0]=0;J[c+60>>2]=0;J[c+64>>2]=0;J[c+36>>2]=1065353216;J[c+40>>2]=0;J[c+44>>2]=0}e=c+24|0;AP(a,b,3,e);b=J[c+88>>2];k=J[c+84>>2];k:{if(H[k+145|0]&1){dj(4,88458,25611,0);a=1;break k}a=3;b=J[b+12>>2];l:{if(!b){break l}while(1){if(J[b>>2]!=(d|0)|J[b+4>>2]!=(f|0)){b=J[b+16>>2];if(b){continue}break l}break}a=4;d=J[b+12>>2];if(!d){break k}g=N[J[J[k+132>>2]+36>>2]+64>>2];a=0;m:{n:{o:{switch(J[b+8>>2]){case 0:N[d+104>>2]=g*N[e+4>>2];N[d+68>>2]=N[e+8>>2];N[d+72>>2]=N[e+12>>2];break n;case 1:N[d+84>>2]=g*N[e+4>>2];break n;case 2:p:{h=N[e+16>>2];i=N[e+20>>2];if(h<=i){if(h==N[d+120>>2]&i==N[d+124>>2]){break p}a=J[d+48>>2];b=L[a+4>>1];if(!(b&2)){J[a+144>>2]=0;I[a+4>>1]=b|2}a=J[d+52>>2];b=L[a+4>>1];if(!(b&2)){J[a+144>>2]=0;I[a+4>>1]=b|2}N[d+124>>2]=i;N[d+120>>2]=h;J[d+92>>2]=0;break p}Z(33858,37910,473,18473);B()}g=Q(g*N[e+24>>2]);a=J[d+48>>2];b=L[a+4>>1];if(!(b&2)){J[a+144>>2]=0;I[a+4>>1]=b|2}a=J[d+52>>2];b=L[a+4>>1];if(!(b&2)){J[a+144>>2]=0;I[a+4>>1]=b|2}N[d+104>>2]=g;g=N[e+28>>2];a=J[d+48>>2];b=L[a+4>>1];if(!(b&2)){J[a+144>>2]=0;I[a+4>>1]=b|2}a=J[d+52>>2];b=L[a+4>>1];if(!(b&2)){J[a+144>>2]=0;I[a+4>>1]=b|2}N[d+108>>2]=g;b=K[e+32|0];if((b|0)!=K[d+112|0]){a=J[d+48>>2];f=L[a+4>>1];if(!(f&2)){J[a+144>>2]=0;I[a+4>>1]=f|2}a=J[d+52>>2];f=L[a+4>>1];if(!(f&2)){J[a+144>>2]=0;I[a+4>>1]=f|2}J[d+92>>2]=0;H[d+112|0]=b}b=K[e+33|0];a=J[d+48>>2];e=L[a+4>>1];if(!(e&2)){J[a+144>>2]=0;I[a+4>>1]=e|2}a=J[d+52>>2];e=L[a+4>>1];if(!(e&2)){J[a+144>>2]=0;I[a+4>>1]=e|2}H[d+100|0]=b;break n;case 3:b=K[e+28|0];if((b|0)!=K[d+136|0]){a=J[d+48>>2];f=L[a+4>>1];if(!(f&2)){J[a+144>>2]=0;I[a+4>>1]=f|2}a=J[d+52>>2];f=L[a+4>>1];if(!(f&2)){J[a+144>>2]=0;I[a+4>>1]=f|2}J[d+112>>2]=0;H[d+136|0]=b}q:{h=Q(g*N[e+32>>2]);i=Q(g*N[e+36>>2]);if(h<=i){if(h==N[d+120>>2]&i==N[d+124>>2]){break q}a=J[d+48>>2];b=L[a+4>>1];if(!(b&2)){J[a+144>>2]=0;I[a+4>>1]=b|2}a=J[d+52>>2];b=L[a+4>>1];if(!(b&2)){J[a+144>>2]=0;I[a+4>>1]=b|2}N[d+124>>2]=i;N[d+120>>2]=h;J[d+112>>2]=0;break q}Z(33858,38017,575,18473);B()}b=K[e+40|0];a=J[d+48>>2];f=L[a+4>>1];if(!(f&2)){J[a+144>>2]=0;I[a+4>>1]=f|2}a=J[d+52>>2];f=L[a+4>>1];if(!(f&2)){J[a+144>>2]=0;I[a+4>>1]=f|2}H[d+137|0]=b;g=Q(g*N[e+44>>2]);a=J[d+48>>2];b=L[a+4>>1];if(!(b&2)){J[a+144>>2]=0;I[a+4>>1]=b|2}a=J[d+52>>2];b=L[a+4>>1];if(!(b&2)){J[a+144>>2]=0;I[a+4>>1]=b|2}N[d+128>>2]=g;g=N[e+48>>2];a=J[d+48>>2];b=L[a+4>>1];if(!(b&2)){J[a+144>>2]=0;I[a+4>>1]=b|2}a=J[d+52>>2];b=L[a+4>>1];if(!(b&2)){J[a+144>>2]=0;I[a+4>>1]=b|2}N[d+132>>2]=g;break n;case 4:N[d+68>>2]=N[e+8>>2];N[d+72>>2]=N[e+12>>2];break n;case 5:break o;default:break m}}g=Q(g*N[e+24>>2]);a=J[d+48>>2];b=L[a+4>>1];if(!(b&2)){J[a+144>>2]=0;I[a+4>>1]=b|2}a=J[d+52>>2];b=L[a+4>>1];if(!(b&2)){J[a+144>>2]=0;I[a+4>>1]=b|2}N[d+120>>2]=g;g=N[e+28>>2];a=J[d+48>>2];b=L[a+4>>1];if(!(b&2)){J[a+144>>2]=0;I[a+4>>1]=b|2}a=J[d+52>>2];b=L[a+4>>1];if(!(b&2)){J[a+144>>2]=0;I[a+4>>1]=b|2}N[d+124>>2]=g;b=K[e+32|0];a=J[d+48>>2];f=L[a+4>>1];if(!(f&2)){J[a+144>>2]=0;I[a+4>>1]=f|2}a=J[d+52>>2];f=L[a+4>>1];if(!(f&2)){J[a+144>>2]=0;I[a+4>>1]=f|2}H[d+128|0]=b;N[d+68>>2]=N[e+36>>2];N[d+72>>2]=N[e+40>>2]}a=1}a=a?0:6}}b=0;if(!a){break c}J[c+4>>2]=a;J[c>>2]=J[(a<<2)+225184>>2];b=Jj(j,140263,c)}oj(j);Ui=c+112|0;return b|0}function oqa(a,b,c,d,e,f,g,h,i,j){a=a|0;b=b|0;c=c|0;d=d|0;e=e|0;f=f|0;g=g|0;h=h|0;i=i|0;j=j|0;var k=0,l=0,m=0,n=Q(0);f=J[a+8>>2];a:{if((f|0)<=0){break a}e=J[a+16>>2];if(K[h+60|0]&8){g=J[a+56>>2];i=g+220|0;d=0;if((f|0)!=1){l=f&2147483646;while(1){j=e+P(d,136)|0;k=J[j+112>>2];N[k+112>>2]=N[j+84>>2];N[k+120>>2]=N[(g+P(J[j+100>>2],136)|0)+84>>2];N[k+124>>2]=N[i+P(J[j+100>>2],136)>>2];j=e+P(d|1,136)|0;k=J[j+112>>2];N[k+112>>2]=N[j+84>>2];N[k+120>>2]=N[(g+P(J[j+100>>2],136)|0)+84>>2];N[k+124>>2]=N[i+P(J[j+100>>2],136)>>2];d=d+2|0;m=m+2|0;if((l|0)!=(m|0)){continue}break}}if(!(f&1)){break a}d=e+P(d,136)|0;e=J[d+112>>2];N[e+112>>2]=N[d+84>>2];N[e+120>>2]=N[(g+P(J[d+100>>2],136)|0)+84>>2];N[e+124>>2]=N[i+P(J[d+100>>2],136)>>2];break a}g=0;d=0;if(f>>>0>=4){j=f&2147483644;i=0;while(1){k=e+P(d,136)|0;N[J[k+112>>2]+112>>2]=N[k+84>>2];k=e+P(d|1,136)|0;N[J[k+112>>2]+112>>2]=N[k+84>>2];k=e+P(d|2,136)|0;N[J[k+112>>2]+112>>2]=N[k+84>>2];k=e+P(d|3,136)|0;N[J[k+112>>2]+112>>2]=N[k+84>>2];d=d+4|0;i=i+4|0;if((j|0)!=(i|0)){continue}break}}f=f&3;if(!f){break a}while(1){i=e+P(d,136)|0;N[J[i+112>>2]+112>>2]=N[i+84>>2];d=d+1|0;g=g+1|0;if((f|0)!=(g|0)){continue}break}}f=J[a+28>>2];b:{if((f|0)<=0){break b}e=J[a+36>>2];g=0;d=0;if(f>>>0>=4){j=f&2147483644;i=0;while(1){k=e+P(d,136)|0;l=J[k+112>>2];N[l+28>>2]=N[l+28>>2]+N[k+84>>2];k=e+P(d|1,136)|0;l=J[k+112>>2];N[l+28>>2]=N[l+28>>2]+N[k+84>>2];k=e+P(d|2,136)|0;l=J[k+112>>2];N[l+28>>2]=N[l+28>>2]+N[k+84>>2];k=e+P(d|3,136)|0;l=J[k+112>>2];N[l+28>>2]=N[l+28>>2]+N[k+84>>2];d=d+4|0;i=i+4|0;if((j|0)!=(i|0)){continue}break}}f=f&3;if(!f){break b}while(1){i=e+P(d,136)|0;j=J[i+112>>2];N[j+28>>2]=N[j+28>>2]+N[i+84>>2];d=d+1|0;g=g+1|0;if((f|0)!=(g|0)){continue}break}}c:{if(J[h+44>>2]){if((c|0)<=0){break c}d=0;while(1){e=J[(d<<2)+b>>2];if(!(!e|J[e+232>>2]!=2)){n=N[h+12>>2];f=Ui+-64|0;Ui=f;if(N[e+336>>2]!=Q(0)){J[e+316>>2]=0;J[e+332>>2]=0;N[e+312>>2]=N[e+312>>2]+N[e+512>>2];N[e+308>>2]=N[e+308>>2]+N[e+508>>2];N[e+304>>2]=N[e+304>>2]+N[e+504>>2];N[e+320>>2]=N[e+320>>2]+N[e+520>>2];N[e+324>>2]=N[e+324>>2]+N[e+524>>2];N[e+328>>2]=N[e+328>>2]+N[e+528>>2];qt(e+4|0,e+568|0,e+584|0,n,f);g=J[f+12>>2];J[e+12>>2]=J[f+8>>2];J[e+16>>2]=g;g=J[f+4>>2];J[e+4>>2]=J[f>>2];J[e+8>>2]=g;g=J[f+28>>2];J[e+28>>2]=J[f+24>>2];J[e+32>>2]=g;g=J[f+20>>2];J[e+20>>2]=J[f+16>>2];J[e+24>>2]=g;g=J[f+36>>2];J[e+36>>2]=J[f+32>>2];J[e+40>>2]=g;g=J[f+44>>2];J[e+44>>2]=J[f+40>>2];J[e+48>>2]=g;g=J[f+52>>2];J[e+52>>2]=J[f+48>>2];J[e+56>>2]=g;g=J[f+60>>2];J[e+60>>2]=J[f+56>>2];J[e+64>>2]=g}Ui=f- -64|0}d=d+1|0;if((d|0)!=(c|0)){continue}break}break c}e=0;if((c|0)<=0){break c}while(1){d=J[(e<<2)+b>>2];if(!(!d|J[d+232>>2]!=2|N[d+336>>2]==Q(0))){J[d+316>>2]=0;J[d+332>>2]=0;N[d+312>>2]=N[d+312>>2]+N[d+512>>2];N[d+308>>2]=N[d+308>>2]+N[d+508>>2];N[d+304>>2]=N[d+304>>2]+N[d+504>>2];N[d+320>>2]=N[d+320>>2]+N[d+520>>2];N[d+324>>2]=N[d+324>>2]+N[d+524>>2];N[d+328>>2]=N[d+328>>2]+N[d+528>>2]}e=e+1|0;if((e|0)!=(c|0)){continue}break}}b=J[a+8>>2];d:{if((b|0)>=0){break d}if(J[a+12>>2]<0){c=J[a+16>>2];if(!(c?!c|K[a+20|0]!=1:1)){J[83765]=J[83765]+1;Zi[J[61751]](J[c-4>>2])}H[a+20|0]=1;J[a+12>>2]=0;J[a+16>>2]=0}e=0;d=b;c=0-d&3;if(c){while(1){ij(J[a+16>>2]+P(d,136)|0,0,136);d=d+1|0;e=e+1|0;if((c|0)!=(e|0)){continue}break}}if(b>>>0>4294967292){break d}while(1){b=P(d,136);ij(b+J[a+16>>2]|0,0,136);ij((b+J[a+16>>2]|0)+136|0,0,136);ij((b+J[a+16>>2]|0)+272|0,0,136);ij((b+J[a+16>>2]|0)+408|0,0,136);d=d+4|0;if(d){continue}break}}J[a+8>>2]=0;b=J[a+28>>2];e:{if((b|0)>=0){break e}if(J[a+32>>2]<0){c=J[a+36>>2];if(!(c?!c|K[a+40|0]!=1:1)){J[83765]=J[83765]+1;Zi[J[61751]](J[c-4>>2])}H[a+40|0]=1;J[a+32>>2]=0;J[a+36>>2]=0}e=0;d=b;c=0-d&3;if(c){while(1){ij(J[a+36>>2]+P(d,136)|0,0,136);d=d+1|0;e=e+1|0;if((c|0)!=(e|0)){continue}break}}if(b>>>0>4294967292){break e}while(1){b=P(d,136);ij(b+J[a+36>>2]|0,0,136);ij((b+J[a+36>>2]|0)+136|0,0,136);ij((b+J[a+36>>2]|0)+272|0,0,136);ij((b+J[a+36>>2]|0)+408|0,0,136);d=d+4|0;if(d){continue}break}}J[a+28>>2]=0;b=J[a+48>>2];f:{if((b|0)>=0){break f}if(J[a+52>>2]<0){c=J[a+56>>2];if(!(c?!c|K[a+60|0]!=1:1)){J[83765]=J[83765]+1;Zi[J[61751]](J[c-4>>2])}H[a+60|0]=1;J[a+52>>2]=0;J[a+56>>2]=0}e=0;d=b;c=0-d&3;if(c){while(1){ij(J[a+56>>2]+P(d,136)|0,0,136);d=d+1|0;e=e+1|0;if((c|0)!=(e|0)){continue}break}}if(b>>>0>4294967292){break f}while(1){b=P(d,136);ij(b+J[a+56>>2]|0,0,136);ij((b+J[a+56>>2]|0)+136|0,0,136);ij((b+J[a+56>>2]|0)+272|0,0,136);ij((b+J[a+56>>2]|0)+408|0,0,136);d=d+4|0;if(d){continue}break}}J[a+48>>2]=0;return Q(Q(0))}function $fa(a){a=a|0;var b=0,c=0,d=0,e=0,f=0,g=0,h=0,i=0,j=0,k=0,l=0,m=0,n=0,o=0,p=0,q=0,r=0,s=0,t=0,u=0,v=0,w=0,x=0,y=Q(0);e=Ui-800|0;Ui=e;b=J[a+4>>2];a:{b:{c:{d:{e:{f:{switch(J[a+8>>2]){case 0:J[b+124>>2]=0;J[b+20>>2]=J[b+16>>2];c=J[a>>2];i=J[b+88>>2];if(L[i+20>>1]>2]){Vu(c,i)}k=J[a>>2];a=J[b+4>>2];c=J[b>>2];g:{if((a|0)==(c|0)){a=J[b+120>>2];break g}l=J[b+84>>2];a=(a-c|0)/40|0;m=a>>>0<=1?1:a;n=J[b+80>>2];while(1){a=J[b>>2];if((J[b+4>>2]-a|0)/40>>>0<=f>>>0){break a}h=a+P(f,40)|0;h:{i:{if(!(H[h+32|0]&1)){break i}a=J[h+20>>2];o=(J[a+4>>2]-J[a>>2]|0)/18568|0;if(!o){break i}a=0;c=d;while(1){AC(l,J[h+16>>2],a,e+456|0);i=J[e+456>>2];d=J[k+2484>>2];if(!d){d=J[J[i- -64>>2]>>2]}d=J[d+16>>2];if(d){i=L[d+202>>1]}else{i=0}d=J[e+456>>2];p=xM(J[b+84>>2],J[d+92>>2],J[d+96>>2]);d=p+c|0;j=J[n+16>>2];if(d>>>0>j>>>0){if(!(K[b+132|0]&2)){J[e>>2]=j;J[e+4>>2]=J[65016];dj(3,88458,125609,e);H[b+132|0]=K[b+132|0]|2}g=P(P(i,(j-c|0)+1|0),6)+g|0;break h}g=P(P(i,p+1|0),6)+g|0;c=d;a=a+1|0;if((o|0)!=(a|0)){continue}break}}f=f+1|0;if((m|0)!=(f|0)){continue}}break}a=J[b+120>>2];if(g>>>0<=a>>>0){break g}J[b+120>>2]=g;a=g}Qs(J[b+88>>2],a,0,0);break c;case 1:p=J[a+20>>2];t=J[a>>2];u=J[a+12>>2];h=J[a+16>>2];J[e+796>>2]=0;j=J[(P(J[h>>2],48)+u|0)+16>>2];v=J[b+84>>2];a=J[b+80>>2];l=J[t+2484>>2];if(!l){l=J[J[j- -64>>2]>>2]}c=J[l+16>>2];ij(e+456|0,0,336);J[e+784>>2]=336;f=e+120|0;ij(f,0,336);J[e+448>>2]=336;ct(l,c,f,1);k=J[b+120>>2];j:{m=J[e+440>>2];n=P(m,6);f=J[a+12>>2];a=J[a+16>>2];a=P(n,a>>>0>f>>>0?f:a);c=J[b+100>>2];d=J[b+92>>2];if(a>>>0>c-d>>>0){if(H[b+104|0]&1){break j}lj(a,1,b+92|0,b+100|0,b+96|0);c=J[b+100>>2];d=J[b+92>>2];if(a>>>0>c-d>>>0){break b}J[b+96>>2]=a+d}i=J[b+124>>2];a=(i>>>0)%(m>>>0)|0;if(a){i=(i+m|0)-a|0;J[b+124>>2]=i}J[e+116>>2]=0;x=(i>>>0)/(m>>>0)|0;f=i;if((h|0)==(p|0)|k>>>0<=f>>>0){break d}o=c-d|0;c=f;while(1){d=J[(P(J[h>>2],48)+u|0)+16>>2];dt(0,65535,J[d+76>>2],J[d+80>>2],e+120|0,e+456|0);a=0;w=xM(v,J[d+92>>2],J[d+96>>2]);if(w){while(1){f=J[d+96>>2];g=J[d+92>>2];y=N[b+128>>2];s=J[e+116>>2];J[e+104>>2]=1065353216;J[e+108>>2]=1065353216;J[e+96>>2]=1065353216;J[e+100>>2]=1065353216;q=g;r=f;g=o-s|0;f=(g>>>0)/(n>>>0)|0;q=yM(v,y,q,r,a,f,e+456|0,e+96|0,J[b+92>>2],o,e+116|0);r=g>>>0>>0;g=J[e+116>>2];s=r|o>>>0<=g>>>0;k:{l:{m:{switch(q-1|0){case 0:J[e+32>>2]=J[h>>2];dj(3,88458,127037,e+32|0);a=a+f|0;if(!s){break k}g=J[e+116>>2];break l;default:a=a+f|0;if(s){break l}break k;case 1:break m}}a=a+f|0}f=c+g|0;if(k>>>0>>0){f=k-c|0;g=f-((f>>>0)%(n>>>0)|0)|0;f=g+c|0}fL(J[b+88>>2],c,g,J[b+92>>2]);J[e+116>>2]=0;c=f}if(a>>>0>>0){continue}break}}if(c>>>0>=k>>>0){break e}h=h+4|0;if((p|0)!=(h|0)){continue}break}break e}Z(151729,53895,501,2284);B();case 2:break f;default:break c}}if(!J[b+124>>2]){break c}a=J[b+108>>2];J[75622]=a+J[75622];J[e+88>>2]=a;J[e+92>>2]=0;J[e+64>>2]=a;J[e+68>>2]=0;a=J[b+100>>2]-J[b+92>>2]|0;J[75644]=a+J[75644];J[e+80>>2]=a;J[e+84>>2]=0;J[e+56>>2]=a;J[e+60>>2]=0;a=J[b+120>>2];J[75666]=a+J[75666];J[e+72>>2]=a;J[e+76>>2]=0;J[e+48>>2]=a;J[e+52>>2]=0;J[b+116>>2]=J[b+116>>2]+1;break c}a=J[e+116>>2];if(!a){f=c;break d}f=a+c|0;if(k>>>0>>0){a=k-c|0;a=a-((a>>>0)%(n>>>0)|0)|0;f=c+a|0}fL(J[b+88>>2],c,a,J[b+92>>2])}c=J[b+16>>2];d=J[b+20>>2]-c|0;g=(d|0)/336|0;a=g+1|0;if(a>>>0>(J[b+24>>2]-c|0)/336>>>0){break b}J[b+20>>2]=c+P(a,336);h=J[j+72>>2];if(h){a=J[h>>2];h=J[h+4>>2]}else{a=0;h=0}if(d>>>0>=4294966960){break a}c=c+d|0;Ao(c);J[c+172>>2]=J[J[j- -64>>2]>>2];d=J[l+16>>2];J[c+312>>2]=(f-i>>>0)/(m>>>0);J[c+308>>2]=x;J[c+176>>2]=a;J[c+180>>2]=h;J[c+156>>2]=d;a=Rs(J[b+88>>2]);J[c+240>>2]=1;J[c+144>>2]=a;H[c+320|0]=K[c+320|0]|1;n:{o:{p:{q:{r:{s:{a=J[j+68>>2];switch(a|0){case 4:break p;case 3:break q;case 1:case 2:break r;case 0:break s;default:break o}}J[c+248>>2]=1;J[c+252>>2]=7;break n}J[c+248>>2]=1;J[c+252>>2]=1;break n}J[c+248>>2]=4;J[c+252>>2]=7;break n}J[c+248>>2]=5;J[c+252>>2]=1;break n}J[e+16>>2]=a;dj(4,88458,155274,e+16|0)}d=J[b+32>>2];a=J[b+36>>2]-d>>2;if(a>>>0<=g>>>0){break a}if(!J[(g<<2)+d>>2]){a=Fx();d=J[b+32>>2];if(g>>>0>=J[b+36>>2]-d>>2>>>0){break a}J[d+(g<<2)>>2]=a;d=J[b+32>>2];a=J[b+36>>2]-d>>2}if(a>>>0<=g>>>0){break a}a=J[(g<<2)+d>>2];J[c>>2]=a;rC(a);g=J[j+88>>2];if(g){i=J[j+84>>2];h=J[c>>2];a=0;while(1){d=i+P(a,96)|0;q=J[d>>2];r=J[d+4>>2];j=d+16|0;d=K[d+80|0];cC(h,q,r,j,d?4:1,d?9:0);a=a+1|0;if((g|0)!=(a|0)){continue}break}}Bo(t,c);J[b+124>>2]=f;J[b+108>>2]=J[b+108>>2]+J[c+312>>2]}Ui=e+800|0;return}Z(144782,53895,514,59583);B()}Z(145396,53895,487,84789);B()}function Kqa(a,b,c,d){a=a|0;b=b|0;c=c|0;d=Q(d);var e=0,f=0,g=Q(0),h=Q(0),i=Q(0),j=0,k=Q(0),l=Q(0),m=Q(0),n=Q(0),o=0,p=0,q=Q(0),r=Q(0),s=Q(0),t=Q(0),u=Q(0),v=Q(0),w=Q(0),x=Q(0),y=Q(0),z=0,A=Q(0),B=Q(0),C=0,D=Q(0),E=Q(0),F=Q(0),G=Q(0),I=Q(0),L=Q(0),M=Q(0),O=Q(0),S=Q(0),T=Q(0),U=Q(0),V=Q(0),W=Q(0),X=0;e=Ui-288|0;Ui=e;f=J[a+4>>2];a:{if(N[f+1120>>2]>2];z=J[a+136>>2];j=(p|0)==(z|0);q=N[(j?40:104)+a>>2];m=N[(j?8:72)+a>>2];t=N[(j?24:88)+a>>2];s=N[(j?44:108)+a>>2];u=N[(j?12:76)+a>>2];w=N[(j?28:92)+a>>2];v=N[(j?48:112)+a>>2];x=N[(j?64:128)+a>>2];y=N[b+8>>2];A=N[(j?16:80)+a>>2];B=N[(j?56:120)+a>>2];D=N[(j?32:96)+a>>2];F=N[(j?60:124)+a>>2];G=N[(j?104:40)+a>>2];I=N[(j?72:8)+a>>2];L=N[(j?88:24)+a>>2];M=N[(j?108:44)+a>>2];O=N[(j?76:12)+a>>2];S=N[(j?92:28)+a>>2];h=N[(j?112:48)+a>>2];g=N[c+8>>2];k=N[(j?128:64)+a>>2];n=N[(j?80:16)+a>>2];E=N[(j?120:56)+a>>2];T=N[(j?96:32)+a>>2];U=N[(j?124:60)+a>>2];V=N[b>>2];W=N[b+4>>2];i=N[c>>2];l=N[c+4>>2];J[e+40>>2]=0;J[e+24>>2]=0;r=h;h=Q(g-k);k=Q(i-E);E=Q(n*k);n=Q(l-U);N[e+36>>2]=Q(r*h)+Q(E+Q(T*n));N[e+32>>2]=Q(M*h)+Q(Q(O*k)+Q(n*S));N[e+28>>2]=Q(G*h)+Q(Q(I*k)+Q(n*L));h=Q(g+Q(d*y));g=Q(h-x);k=Q(i+Q(d*V));i=Q(k-B);n=Q(l+Q(d*W));l=Q(n-F);N[e+20>>2]=Q(v*g)+Q(Q(A*i)+Q(D*l));N[e+16>>2]=Q(s*g)+Q(Q(u*i)+Q(l*w));N[e+12>>2]=Q(q*g)+Q(Q(m*i)+Q(l*t));o=J[b+12>>2];J[e+84>>2]=J[b+8>>2];J[e+88>>2]=o;C=J[b>>2];b=J[b+4>>2];H[e+128|0]=0;J[e+140>>2]=0;J[e+144>>2]=0;J[e+148>>2]=0;J[e+152>>2]=0;o=144;J[e+156>>2]=0;J[e+76>>2]=C;J[e+80>>2]=b;J[e+284>>2]=0;J[e+252>>2]=0;J[e+220>>2]=0;J[e+96>>2]=0;J[e+100>>2]=0;N[e+92>>2]=d;J[e+120>>2]=0;J[e+124>>2]=0;J[e+132>>2]=0;J[e+136>>2]=0;J[e+72>>2]=0;N[e+68>>2]=h;N[e+64>>2]=n;N[e+60>>2]=k;b=J[c+12>>2];J[e+52>>2]=J[c+8>>2];J[e+56>>2]=b;b=J[c+4>>2];J[e+44>>2]=J[c>>2];J[e+48>>2]=b;C=J[f+1116>>2];b:{if((C|0)<=0){b=-1;break b}X=f+4|0;d=N[e+20>>2];g=N[e+16>>2];l=N[e+12>>2];i=N[f+1120>>2];i=Q(i*i);c=0;b=-1;while(1){f=X+P(c,276)|0;h=Q(N[f+8>>2]-d);m=Q(h*h);h=Q(N[f>>2]-l);r=Q(h*h);h=Q(N[f+4>>2]-g);h=Q(m+Q(r+Q(h*h)));f=h>2];f=J[a+140>>2];d=Q(N[c+224>>2]*N[f+224>>2]);d=d>2]=d>Q(10)?Q(10):d;N[e+100>>2]=N[c+228>>2]*N[f+228>>2];c:{if((p|0)!=(z|0)){f=156;p=152;c=148;break c}f=152;o=148;p=156;c=144}c=J[c+a>>2];o=J[a+o>>2];f=J[a+f>>2];J[e+116>>2]=J[a+p>>2];J[e+112>>2]=f;J[e+108>>2]=o;J[e+104>>2]=c;c=J[a+4>>2];d:{if((b|0)>=0){c=c+P(b,276)|0;f=J[c+148>>2];o=J[c+112>>2];i=N[c+276>>2];d=N[c+212>>2];g=N[c+244>>2];hj(c+4|0,e+12|0,272);N[c+244>>2]=g;N[c+212>>2]=d;N[c+128>>2]=i;N[c+124>>2]=g;N[c+116>>2]=d;J[c+112>>2]=o;J[c+148>>2]=f;break d}o=e+12|0;f=J[c+1116>>2];e:{if((f|0)==4){s=Q(0);q=N[o>>2];f:{g:{h:{i:{d=N[c+84>>2];g=N[o+80>>2];b=d>2];d=b?d:g;b=i>2];d=b?i:d;b=g>2]<(b?g:d);p=f?3:b?2:p;j:{if(!p){v=N[c+836>>2];x=N[c+560>>2];g=Q(v-x);h=Q(-g);k=N[o+8>>2];n=N[o+4>>2];y=N[c+832>>2];i=N[c+556>>2];m=Q(y-i);t=Q(-m);u=N[c+840>>2];w=N[c+564>>2];d=Q(u-w);l=Q(-d);break j}t=N[c+280>>2];s=Q(q-t);v=N[c+836>>2];x=N[c+560>>2];g=Q(v-x);n=N[o+4>>2];l=N[c+284>>2];d=Q(n-l);y=N[c+832>>2];i=N[c+556>>2];m=Q(y-i);h=Q(Q(s*g)-Q(d*m));D=Q(h*h);r=d;u=N[c+840>>2];w=N[c+564>>2];d=Q(u-w);k=N[o+8>>2];h=N[c+288>>2];A=Q(k-h);B=Q(Q(r*d)-Q(A*g));s=Q(Q(A*m)-Q(s*d));s=Q(D+Q(Q(B*B)+Q(s*s)));if((p|0)==1){break i}h=Q(-g);t=Q(-m);l=Q(-d)}q=Q(q-N[c+4>>2]);r=Q(q*g);g=Q(n-N[c+8>>2]);n=Q(r+Q(g*t));r=Q(g*d);d=Q(k-N[c+12>>2]);h=Q(r+Q(d*h));l=Q(Q(d*m)+Q(q*l));n=Q(Q(n*n)+Q(Q(h*h)+Q(l*l)));h=N[c+288>>2];l=N[c+284>>2];t=N[c+280>>2];if(f){break h}k=Q(0);if(b){break g}break h}d=Q(k-N[c+12>>2]);g=Q(n-N[c+8>>2]);q=Q(q-N[c+4>>2]);n=Q(0)}k=Q(v-l);m=Q(y-t);v=Q(Q(q*k)-Q(g*m));u=Q(u-h);k=Q(Q(g*u)-Q(d*k));r=Q(k*k);k=Q(Q(d*m)-Q(q*u));k=Q(Q(v*v)+Q(r+Q(k*k)));m=Q(0);if(f){break f}}l=Q(x-l);i=Q(i-t);m=Q(Q(q*l)-Q(g*i));r=g;g=Q(w-h);l=Q(Q(r*g)-Q(d*l));d=Q(Q(d*i)-Q(q*g));m=Q(Q(m*m)+Q(Q(l*l)+Q(d*d)))}d=Q(R(s));b=d>Q(-0xde0b6b000000000);f=b?0:-1;g=Q(R(n));d=b?d:Q(-0xde0b6b000000000);b=g>d;f=b?1:f;i=Q(R(k));d=b?g:d;b=i>d;f=Q(R(m))>(b?i:d)?3:b?2:f;b=c+P(f,276)|0;p=J[b+112>>2];if(!p){break e}z=J[83761];if(!z){break e}Zi[z|0](p)|0;J[b+112>>2]=0;break e}J[c+1116>>2]=f+1}b=(f|0)>0?f:0;hj((c+P(b,276)|0)+4|0,o,276)}o=J[83481];if(!o){break a}f=J[a+136>>2];c=J[a+140>>2];if(!(K[f+204|0]&8|K[c+204|0]&8)){break a}Zi[o|0]((J[a+4>>2]+P(b,276)|0)+4|0,j?f:c,J[e+104>>2],J[e+112>>2],j?c:f,J[e+108>>2],J[e+116>>2])|0}Ui=e+288|0}function KO(a,b,c){var d=0,e=0,f=0,g=0,h=0,i=0,j=0,k=0,l=0,m=0,n=Q(0);h=Ui+-64|0;Ui=h;a:{b:{c:{d:{e:{f:{g:{h:{d=L[a+24>>1];e=L[a+26>>1];if((d|0)!=(e|0)){f=J[a+20>>2];if(!f){break f}if(d>>>0<=e>>>0){break e}I[a+26>>1]=e+1;f=L[f+(e<<1)>>1];g=J[a+32>>2];if(f>>>0>=(J[a+36>>2]-g|0)/672>>>0){if(f>>>0>=(J[a+40>>2]-g|0)/672>>>0){break d}J[a+36>>2]=(g+P(f,672)|0)+672}if((d|0)!=(f|0)){break h}}J[h>>2]=d;dj(4,93318,132547,h);a=-4;break g}k=L[a+368>>1];d=k;j=d>>>0<=1?1:d;J[c>>2]=f|j<<16;d=J[a+32>>2];if(f>>>0>=(J[a+36>>2]-d|0)/672>>>0){break c}d=ij(d+P(f,672)|0,0,672);e=J[219395];J[219395]=e+1;J[h+16>>2]=e;Gj(h+32|0,18,76627,h+16|0);g=b&65535;e=J[a+32>>2];if(g>>>0>=(J[a+36>>2]-e|0)/672>>>0){break c}l=b>>>16|0;e=e+P(g,672)|0;if((l|0)!=L[e+648>>1]){break b}m=L[e+650>>1];if((m|0)!=(g|0)){break a}N[d>>2]=N[e>>2];N[d+4>>2]=N[e+4>>2];N[d+8>>2]=N[e+8>>2];N[d+12>>2]=N[e+12>>2];N[d+16>>2]=N[e+16>>2];N[d+20>>2]=N[e+20>>2];N[d+24>>2]=N[e+24>>2];N[d+28>>2]=N[e+28>>2];N[d+32>>2]=N[e+32>>2];N[d+36>>2]=N[e+36>>2];N[d+40>>2]=N[e+40>>2];N[d+44>>2]=N[e+44>>2];N[d+48>>2]=N[e+48>>2];N[d+52>>2]=N[e+52>>2];N[d+56>>2]=N[e+56>>2];N[d+60>>2]=N[e+60>>2];N[d+64>>2]=N[e+64>>2];N[d+68>>2]=N[e+68>>2];N[d+72>>2]=N[e+72>>2];N[d+76>>2]=N[e+76>>2];N[d+80>>2]=N[e+80>>2];N[d+84>>2]=N[e+84>>2];N[d+88>>2]=N[e+88>>2];N[d+92>>2]=N[e+92>>2];N[d+96>>2]=N[e+96>>2];N[d+100>>2]=N[e+100>>2];N[d+104>>2]=N[e+104>>2];N[d+108>>2]=N[e+108>>2];N[d+112>>2]=N[e+112>>2];N[d+116>>2]=N[e+116>>2];N[d+120>>2]=N[e+120>>2];N[d+124>>2]=N[e+124>>2];N[d+128>>2]=N[e+128>>2];N[d+132>>2]=N[e+132>>2];N[d+136>>2]=N[e+136>>2];N[d+140>>2]=N[e+140>>2];N[d+144>>2]=N[e+144>>2];N[d+148>>2]=N[e+148>>2];N[d+152>>2]=N[e+152>>2];N[d+156>>2]=N[e+156>>2];N[d+160>>2]=N[e+160>>2];N[d+164>>2]=N[e+164>>2];N[d+168>>2]=N[e+168>>2];N[d+172>>2]=N[e+172>>2];N[d+176>>2]=N[e+176>>2];N[d+180>>2]=N[e+180>>2];N[d+184>>2]=N[e+184>>2];N[d+188>>2]=N[e+188>>2];N[d+192>>2]=N[e+192>>2];N[d+196>>2]=N[e+196>>2];N[d+200>>2]=N[e+200>>2];N[d+204>>2]=N[e+204>>2];N[d+208>>2]=N[e+208>>2];N[d+212>>2]=N[e+212>>2];N[d+216>>2]=N[e+216>>2];N[d+220>>2]=N[e+220>>2];N[d+224>>2]=N[e+224>>2];N[d+228>>2]=N[e+228>>2];N[d+232>>2]=N[e+232>>2];N[d+236>>2]=N[e+236>>2];N[d+240>>2]=N[e+240>>2];N[d+244>>2]=N[e+244>>2];N[d+248>>2]=N[e+248>>2];N[d+252>>2]=N[e+252>>2];N[d+256>>2]=N[e+256>>2];N[d+260>>2]=N[e+260>>2];N[d+264>>2]=N[e+264>>2];N[d+268>>2]=N[e+268>>2];N[d+272>>2]=N[e+272>>2];N[d+276>>2]=N[e+276>>2];N[d+280>>2]=N[e+280>>2];N[d+284>>2]=N[e+284>>2];N[d+288>>2]=N[e+288>>2];N[d+292>>2]=N[e+292>>2];N[d+296>>2]=N[e+296>>2];N[d+300>>2]=N[e+300>>2];N[d+304>>2]=N[e+304>>2];N[d+308>>2]=N[e+308>>2];N[d+312>>2]=N[e+312>>2];N[d+316>>2]=N[e+316>>2];N[d+320>>2]=N[e+320>>2];N[d+324>>2]=N[e+324>>2];N[d+328>>2]=N[e+328>>2];N[d+332>>2]=N[e+332>>2];N[d+336>>2]=N[e+336>>2];N[d+340>>2]=N[e+340>>2];N[d+344>>2]=N[e+344>>2];N[d+348>>2]=N[e+348>>2];N[d+352>>2]=N[e+352>>2];N[d+356>>2]=N[e+356>>2];N[d+360>>2]=N[e+360>>2];N[d+364>>2]=N[e+364>>2];N[d+368>>2]=N[e+368>>2];N[d+372>>2]=N[e+372>>2];N[d+376>>2]=N[e+376>>2];N[d+380>>2]=N[e+380>>2];N[d+384>>2]=N[e+384>>2];N[d+388>>2]=N[e+388>>2];N[d+392>>2]=N[e+392>>2];N[d+396>>2]=N[e+396>>2];N[d+400>>2]=N[e+400>>2];N[d+404>>2]=N[e+404>>2];N[d+408>>2]=N[e+408>>2];N[d+412>>2]=N[e+412>>2];N[d+416>>2]=N[e+416>>2];N[d+420>>2]=N[e+420>>2];N[d+424>>2]=N[e+424>>2];N[d+428>>2]=N[e+428>>2];N[d+432>>2]=N[e+432>>2];N[d+436>>2]=N[e+436>>2];N[d+440>>2]=N[e+440>>2];N[d+444>>2]=N[e+444>>2];N[d+448>>2]=N[e+448>>2];N[d+452>>2]=N[e+452>>2];N[d+456>>2]=N[e+456>>2];N[d+460>>2]=N[e+460>>2];hj(d+464|0,e+464|0,168);i=J[e+484>>2];if(i){J[d+484>>2]=Gk(i)}i=bj(h+32|0);I[d+664>>1]=65535;I[d+650>>1]=f;I[d+648>>1]=j;J[d+640>>2]=i;J[d+644>>2]=Yi;J[d+652>>2]=-1;J[d+656>>2]=-1;I[d+660>>1]=65535;I[a+368>>1]=(k>>>0<65534?1:2)+j;f=J[e+480>>2];if(f){J[d+584>>2]=Zi[J[a+396>>2]](J[a+404>>2],a,J[c>>2],f,J[e+584>>2]);J[d+480>>2]=J[e+480>>2]}if(J[e+536>>2]|J[e+540>>2]){n=CO(a,b);b=J[a+32>>2];if((J[a+36>>2]-b|0)/672>>>0<=g>>>0){break c}b=b+P(g,672)|0;if(L[b+648>>1]!=(l|0)){break b}if(L[b+650>>1]!=(m|0)){break a}_x(a,J[c>>2],J[e+536>>2],J[e+540>>2],N[b+544>>2],n,0,0,0)}if(J[e+628>>2]){J[d+628>>2]=0;b=J[e+620>>2];J[d+616>>2]=J[e+616>>2];J[d+620>>2]=b}$x(a,J[c>>2],0);a=0}Ui=h- -64|0;return a}Z(49493,54340,151,43112);B()}Z(2701,54340,152,43112);B()}Z(144782,53895,514,59583);B()}Z(145396,53895,487,84789);B()}Z(47372,40876,188,69601);B()}Z(5388,40876,189,69601);B()}function NQ(a){var b=0,c=0,d=0,e=0,f=0,g=0,h=0,i=0,j=0,k=0,l=0,m=0,n=0,o=0,p=0;e=Ui-32|0;Ui=e;b=J[a>>2];n=J[b+4>>2];m=sj(P(n,24));a:{b:{c:{d:{e:{f:{g:{if(n){i=J[b>>2];b=0;while(1){d=i+(b<<6)|0;f=J[d+60>>2];h=P(b,24)+m|0;J[h>>2]=J[d+56>>2];J[h+4>>2]=f;f=J[d+4>>2];J[h+8>>2]=f;g=h;h=J[d+8>>2];H[g+12|0]=h;h=h&255;if(!h){break f}if(f>>>0>=9){break e}d=M[d+J[(f<<2)+16e4>>2]>>2]/(h>>>0)|0;h=d;d=!l&c>>>0>d>>>0|(l|0)!=0;c=d?c:h;l=d?l:0;b=b+1|0;if((n|0)!=(b|0)){continue}break}J[a+16>>2]=c;b=Nq(c,m,n&255,a+4|0);if(b){break c}l=0;while(1){c=J[a>>2];if(M[c+4>>2]<=l>>>0){break d}b=J[c>>2];J[e+28>>2]=0;J[e+24>>2]=0;J[e+20>>2]=0;J[e+16>>2]=0;c=P(l,24)+m|0;if(zv(J[a+4>>2],J[c>>2],J[c+4>>2],e+28|0,e+24|0,e+20|0,e+16|0)){c=126290;break b}c=124296;h:{i:{j:{k:{l:{m:{n:{o:{p:{q:{h=b+(l<<6)|0;switch(J[h+4>>2]){case 8:break i;case 7:break j;case 6:break k;case 5:break l;case 4:break m;case 3:break n;case 2:break o;case 1:break p;case 0:break q;default:break b}}i=J[e+24>>2];if(!i){break h}f=J[e+20>>2];if(!f){break h}j=J[e+16>>2];d=0;c=J[e+28>>2];while(1){k=P(d,f);b=0;while(1){g=b+k|0;r:{if(g>>>0>=M[h+16>>2]){H[b+c|0]=0;dj(4,88458,114573,0);break r}H[b+c|0]=J[J[h+12>>2]+(g<<2)>>2]}b=b+1|0;if((f|0)!=(b|0)){continue}break}c=c+j|0;d=d+1|0;if((i|0)!=(d|0)){continue}break}break h}i=J[e+24>>2];if(!i){break h}f=J[e+20>>2];if(!f){break h}d=0;c=J[e+28>>2];j=J[e+16>>2]<<1;while(1){k=P(d,f);b=0;while(1){g=b+k|0;s:{if(g>>>0>=M[h+16>>2]){I[(b<<1)+c>>1]=0;dj(4,88458,114573,0);break s}I[(b<<1)+c>>1]=J[J[h+12>>2]+(g<<2)>>2]}b=b+1|0;if((f|0)!=(b|0)){continue}break}c=c+j|0;d=d+1|0;if((i|0)!=(d|0)){continue}break}break h}i=J[e+24>>2];if(!i){break h}f=J[e+20>>2];if(!f){break h}d=0;c=J[e+28>>2];j=J[e+16>>2]<<2;while(1){k=P(d,f);b=0;while(1){g=b+k|0;t:{if(g>>>0>=M[h+16>>2]){J[(b<<2)+c>>2]=0;dj(4,88458,114573,0);break t}J[(b<<2)+c>>2]=J[J[h+12>>2]+(g<<2)>>2]}b=b+1|0;if((f|0)!=(b|0)){continue}break}c=c+j|0;d=d+1|0;if((i|0)!=(d|0)){continue}break}break h}i=J[e+24>>2];if(!i){break h}f=J[e+20>>2];if(!f){break h}d=0;c=J[e+28>>2];j=J[e+16>>2]<<3;while(1){k=P(d,f);b=0;while(1){g=b+k|0;u:{if(g>>>0>=M[h+32>>2]){g=(b<<3)+c|0;J[g>>2]=0;J[g+4>>2]=0;dj(4,88458,114573,0);break u}g=J[h+28>>2]+(g<<3)|0;p=J[g+4>>2];o=(b<<3)+c|0;J[o>>2]=J[g>>2];J[o+4>>2]=p}b=b+1|0;if((f|0)!=(b|0)){continue}break}c=c+j|0;d=d+1|0;if((i|0)!=(d|0)){continue}break}break h}i=J[e+24>>2];if(!i){break h}f=J[e+20>>2];if(!f){break h}j=J[e+16>>2];d=0;c=J[e+28>>2];while(1){k=P(d,f);b=0;while(1){g=b+k|0;v:{if(g>>>0>=M[h+24>>2]){H[b+c|0]=0;dj(4,88458,114573,0);break v}H[b+c|0]=J[J[h+20>>2]+(g<<2)>>2]}b=b+1|0;if((f|0)!=(b|0)){continue}break}c=c+j|0;d=d+1|0;if((i|0)!=(d|0)){continue}break}break h}i=J[e+24>>2];if(!i){break h}f=J[e+20>>2];if(!f){break h}d=0;c=J[e+28>>2];j=J[e+16>>2]<<1;while(1){k=P(d,f);b=0;while(1){g=b+k|0;w:{if(g>>>0>=M[h+24>>2]){I[(b<<1)+c>>1]=0;dj(4,88458,114573,0);break w}I[(b<<1)+c>>1]=J[J[h+20>>2]+(g<<2)>>2]}b=b+1|0;if((f|0)!=(b|0)){continue}break}c=c+j|0;d=d+1|0;if((i|0)!=(d|0)){continue}break}break h}i=J[e+24>>2];if(!i){break h}f=J[e+20>>2];if(!f){break h}d=0;c=J[e+28>>2];j=J[e+16>>2]<<2;while(1){k=P(d,f);b=0;while(1){g=b+k|0;x:{if(g>>>0>=M[h+24>>2]){J[(b<<2)+c>>2]=0;dj(4,88458,114573,0);break x}J[(b<<2)+c>>2]=J[J[h+20>>2]+(g<<2)>>2]}b=b+1|0;if((f|0)!=(b|0)){continue}break}c=c+j|0;d=d+1|0;if((i|0)!=(d|0)){continue}break}break h}i=J[e+24>>2];if(!i){break h}f=J[e+20>>2];if(!f){break h}d=0;c=J[e+28>>2];j=J[e+16>>2]<<3;while(1){k=P(d,f);b=0;while(1){g=b+k|0;y:{if(g>>>0>=M[h+40>>2]){g=(b<<3)+c|0;J[g>>2]=0;J[g+4>>2]=0;dj(4,88458,114573,0);break y}g=J[h+36>>2]+(g<<3)|0;p=J[g+4>>2];o=(b<<3)+c|0;J[o>>2]=J[g>>2];J[o+4>>2]=p}b=b+1|0;if((f|0)!=(b|0)){continue}break}c=c+j|0;d=d+1|0;if((i|0)!=(d|0)){continue}break}break h}i=J[e+24>>2];if(!i){break h}f=J[e+20>>2];if(!f){break h}d=0;c=J[e+28>>2];j=J[e+16>>2]<<2;while(1){k=P(d,f);b=0;while(1){g=b+k|0;z:{if(g>>>0>=M[h+48>>2]){J[(b<<2)+c>>2]=0;dj(4,88458,114573,0);break z}N[(b<<2)+c>>2]=N[J[h+44>>2]+(g<<2)>>2]}b=b+1|0;if((f|0)!=(b|0)){continue}break}c=c+j|0;d=d+1|0;if((i|0)!=(d|0)){continue}break}}l=l+1|0;if((n|0)!=(l|0)){continue}break}break g}J[a+16>>2]=0;b=Nq(0,m,0,a+4|0);if(b){break c}}cj(m);J[a+20>>2]=Ty(J[a+4>>2]);a=1;break a}Z(112130,40012,125,35258);B()}Z(152622,40012,75,12214);B()}Z(12664,55087,100,84789);B()}J[e>>2]=b;dj(4,88458,140754,e);cj(m);a=0;break a}dj(4,88458,c,0);cj(m);a=0}Ui=e+32|0;return a}function oU(a,b){var c=0,d=0,e=0,f=0,g=0,h=0,i=0,j=0,k=0,l=0;c=Ui-16|0;Ui=c;h=1;a:{b:{switch((b-a|0)/12|0){case 2:d=J[a+8>>2];if(M[J[b-4>>2]+116>>2]>=M[d+116>>2]){break a}J[c+8>>2]=d;d=J[a+4>>2];J[c>>2]=J[a>>2];J[c+4>>2]=d;d=b-12|0;J[a+8>>2]=J[d+8>>2];b=J[d+4>>2];J[a>>2]=J[d>>2];J[a+4>>2]=b;J[d+8>>2]=J[c+8>>2];a=J[c+4>>2];J[d>>2]=J[c>>2];J[d+4>>2]=a;break a;case 3:f=b-12|0;d=b-4|0;e=J[J[d>>2]+116>>2];b=J[a+20>>2];g=J[b+116>>2];if(g>>>0>=M[J[a+8>>2]+116>>2]){if(e>>>0>=g>>>0){break a}J[c+8>>2]=b;b=J[a+16>>2];J[c>>2]=J[a+12>>2];J[c+4>>2]=b;J[a+20>>2]=J[f+8>>2];b=J[f+4>>2];J[a+12>>2]=J[f>>2];J[a+16>>2]=b;J[f+8>>2]=J[c+8>>2];b=J[c+4>>2];J[f>>2]=J[c>>2];J[f+4>>2]=b;if(M[J[a+20>>2]+116>>2]>=M[J[a+8>>2]+116>>2]){break a}J[c+8>>2]=J[a+8>>2];b=J[a+4>>2];J[c>>2]=J[a>>2];J[c+4>>2]=b;J[a+8>>2]=J[a+20>>2];b=J[a+16>>2];J[a>>2]=J[a+12>>2];J[a+4>>2]=b;J[a+20>>2]=J[c+8>>2];b=J[c+4>>2];J[a+12>>2]=J[c>>2];J[a+16>>2]=b;break a}if(e>>>0>>0){J[c+8>>2]=J[a+8>>2];b=J[a+4>>2];J[c>>2]=J[a>>2];J[c+4>>2]=b;J[a+8>>2]=J[f+8>>2];b=J[f+4>>2];J[a>>2]=J[f>>2];J[a+4>>2]=b;J[f+8>>2]=J[c+8>>2];a=J[c+4>>2];J[f>>2]=J[c>>2];J[f+4>>2]=a;break a}J[c+8>>2]=J[a+8>>2];b=J[a+4>>2];J[c>>2]=J[a>>2];J[c+4>>2]=b;J[a+8>>2]=J[a+20>>2];b=J[a+16>>2];J[a>>2]=J[a+12>>2];J[a+4>>2]=b;J[a+20>>2]=J[c+8>>2];b=J[c+4>>2];J[a+12>>2]=J[c>>2];J[a+16>>2]=b;if(M[J[d>>2]+116>>2]>=M[J[a+20>>2]+116>>2]){break a}J[c+8>>2]=J[a+20>>2];b=J[a+16>>2];J[c>>2]=J[a+12>>2];J[c+4>>2]=b;J[a+20>>2]=J[f+8>>2];b=J[f+4>>2];J[a+12>>2]=J[f>>2];J[a+16>>2]=b;J[f+8>>2]=J[c+8>>2];a=J[c+4>>2];J[f>>2]=J[c>>2];J[f+4>>2]=a;break a;case 4:_v(a,a+12|0,a+24|0,b-12|0);break a;case 5:_v(a,a+12|0,a+24|0,a+36|0);d=J[a+44>>2];if(M[J[b-4>>2]+116>>2]>=M[d+116>>2]){break a}J[c+8>>2]=d;d=J[a+40>>2];J[c>>2]=J[a+36>>2];J[c+4>>2]=d;d=b-12|0;J[a+44>>2]=J[d+8>>2];b=J[d+4>>2];J[a+36>>2]=J[d>>2];J[a+40>>2]=b;J[d+8>>2]=J[c+8>>2];b=J[c+4>>2];J[d>>2]=J[c>>2];J[d+4>>2]=b;b=J[a+32>>2];if(M[J[a+44>>2]+116>>2]>=M[b+116>>2]){break a}J[c+8>>2]=b;b=J[a+28>>2];J[c>>2]=J[a+24>>2];J[c+4>>2]=b;J[a+32>>2]=J[a+44>>2];b=J[a+40>>2];J[a+24>>2]=J[a+36>>2];J[a+28>>2]=b;J[a+44>>2]=J[c+8>>2];b=J[c+4>>2];J[a+36>>2]=J[c>>2];J[a+40>>2]=b;b=J[a+20>>2];if(M[J[a+32>>2]+116>>2]>=M[b+116>>2]){break a}J[c+8>>2]=b;b=J[a+16>>2];J[c>>2]=J[a+12>>2];J[c+4>>2]=b;J[a+20>>2]=J[a+32>>2];b=J[a+28>>2];J[a+12>>2]=J[a+24>>2];J[a+16>>2]=b;J[a+32>>2]=J[c+8>>2];b=J[c+4>>2];J[a+24>>2]=J[c>>2];J[a+28>>2]=b;b=J[a+8>>2];if(M[J[a+20>>2]+116>>2]>=M[b+116>>2]){break a}J[c+8>>2]=b;b=J[a+4>>2];J[c>>2]=J[a>>2];J[c+4>>2]=b;J[a+8>>2]=J[a+20>>2];b=J[a+16>>2];J[a>>2]=J[a+12>>2];J[a+4>>2]=b;J[a+20>>2]=J[c+8>>2];b=J[c+4>>2];J[a+12>>2]=J[c>>2];J[a+16>>2]=b;break a;case 0:case 1:break a;default:break b}}e=a+24|0;f=J[a+32>>2];j=J[f+116>>2];d=J[a+20>>2];i=J[d+116>>2];g=J[a+8>>2];c:{if(i>>>0>=M[g+116>>2]){if(j>>>0>=i>>>0){break c}J[c+8>>2]=d;d=J[a+16>>2];J[c>>2]=J[a+12>>2];J[c+4>>2]=d;J[a+20>>2]=J[e+8>>2];d=J[e+4>>2];J[a+12>>2]=J[e>>2];J[a+16>>2]=d;J[e+8>>2]=J[c+8>>2];d=J[c+4>>2];J[e>>2]=J[c>>2];J[e+4>>2]=d;if(M[J[a+20>>2]+116>>2]>=M[g+116>>2]){break c}J[c+8>>2]=J[a+8>>2];d=J[a+4>>2];J[c>>2]=J[a>>2];J[c+4>>2]=d;J[a+8>>2]=J[a+20>>2];d=J[a+16>>2];J[a>>2]=J[a+12>>2];J[a+4>>2]=d;J[a+20>>2]=J[c+8>>2];d=J[c+4>>2];J[a+12>>2]=J[c>>2];J[a+16>>2]=d;break c}if(j>>>0>>0){J[c+8>>2]=J[a+8>>2];d=J[a+4>>2];J[c>>2]=J[a>>2];J[c+4>>2]=d;J[a+8>>2]=J[e+8>>2];d=J[e+4>>2];J[a>>2]=J[e>>2];J[a+4>>2]=d;J[e+8>>2]=J[c+8>>2];d=J[c+4>>2];J[e>>2]=J[c>>2];J[e+4>>2]=d;break c}J[c+8>>2]=J[a+8>>2];d=J[a+4>>2];J[c>>2]=J[a>>2];J[c+4>>2]=d;J[a+8>>2]=J[a+20>>2];d=J[a+16>>2];J[a>>2]=J[a+12>>2];J[a+4>>2]=d;J[a+20>>2]=J[c+8>>2];d=J[c+4>>2];J[a+12>>2]=J[c>>2];J[a+16>>2]=d;if(M[f+116>>2]>=M[J[a+20>>2]+116>>2]){break c}J[c+8>>2]=J[a+20>>2];d=J[a+16>>2];J[c>>2]=J[a+12>>2];J[c+4>>2]=d;J[a+20>>2]=J[e+8>>2];d=J[e+4>>2];J[a+12>>2]=J[e>>2];J[a+16>>2]=d;J[e+8>>2]=J[c+8>>2];d=J[c+4>>2];J[e>>2]=J[c>>2];J[e+4>>2]=d}g=a+36|0;if((g|0)==(b|0)){break a}while(1){d:{k=J[g+8>>2];if(M[k+116>>2]>=M[J[e+8>>2]+116>>2]){break d}f=J[g>>2];j=J[g+4>>2];d=g;while(1){e:{h=e;i=J[e+4>>2];J[d>>2]=J[e>>2];J[d+4>>2]=i;J[d+8>>2]=J[e+8>>2];if((a|0)==(e|0)){h=a;break e}e=h-12|0;d=h;if(M[k+116>>2]>2]+116>>2]){continue}}break}J[h+8>>2]=k;J[h>>2]=f;J[h+4>>2]=j;l=l+1|0;if((l|0)!=8){break d}h=(g+12|0)==(b|0);break a}e=g;g=e+12|0;if((g|0)!=(b|0)){continue}break}h=1}Ui=c+16|0;return h}function is(a,b){var c=0,d=0,e=0,f=0,g=0,h=0,i=0,j=0,k=0,l=0,m=0,n=0,o=0,p=0,q=0,r=0,s=0,t=0,u=0,v=0,w=0,x=0,y=0,z=0,A=0;l=K[b+16|0]|K[b+17|0]<<8|(K[b+18|0]<<16|K[b+19|0]<<24);i=K[b+32|0]|K[b+33|0]<<8|(K[b+34|0]<<16|K[b+35|0]<<24);m=K[b+48|0]|K[b+49|0]<<8|(K[b+50|0]<<16|K[b+51|0]<<24);n=K[b+36|0]|K[b+37|0]<<8|(K[b+38|0]<<16|K[b+39|0]<<24);o=K[b+52|0]|K[b+53|0]<<8|(K[b+54|0]<<16|K[b+55|0]<<24);p=K[b+4|0]|K[b+5|0]<<8|(K[b+6|0]<<16|K[b+7|0]<<24);g=K[b+20|0]|K[b+21|0]<<8|(K[b+22|0]<<16|K[b+23|0]<<24);h=J[a+12>>2];j=K[b|0]|K[b+1|0]<<8|(K[b+2|0]<<16|K[b+3|0]<<24);A=J[a+8>>2];q=J[a+20>>2];k=J[a+16>>2];c=h+oxa(((j+A|0)+(q^(q^k)&h)|0)-680876936|0,7)|0;r=K[b+12|0]|K[b+13|0]<<8|(K[b+14|0]<<16|K[b+15|0]<<24);s=K[b+8|0]|K[b+9|0]<<8|(K[b+10|0]<<16|K[b+11|0]<<24);e=oxa(((p+q|0)+(c&(h^k)^k)|0)-389564586|0,12)+c|0;d=oxa(((s+k|0)+(e&(c^h)^h)|0)+606105819|0,17)+e|0;f=oxa(((h+r|0)+(c^d&(c^e))|0)-1044525330|0,22)+d|0;c=oxa(((c+l|0)+(e^f&(d^e))|0)-176418897|0,7)+f|0;t=K[b+28|0]|K[b+29|0]<<8|(K[b+30|0]<<16|K[b+31|0]<<24);u=K[b+24|0]|K[b+25|0]<<8|(K[b+26|0]<<16|K[b+27|0]<<24);e=oxa(((e+g|0)+(d^c&(d^f))|0)+1200080426|0,12)+c|0;d=oxa(((d+u|0)+(f^e&(c^f))|0)-1473231341|0,17)+e|0;f=oxa(((f+t|0)+(c^d&(c^e))|0)-45705983|0,22)+d|0;c=oxa(((c+i|0)+(e^f&(d^e))|0)+1770035416|0,7)+f|0;v=K[b+44|0]|K[b+45|0]<<8|(K[b+46|0]<<16|K[b+47|0]<<24);w=K[b+40|0]|K[b+41|0]<<8|(K[b+42|0]<<16|K[b+43|0]<<24);e=oxa(((e+n|0)+(d^c&(d^f))|0)-1958414417|0,12)+c|0;d=oxa(((w+d|0)+(f^e&(c^f))|0)-42063|0,17)+e|0;f=oxa(((f+v|0)+(c^d&(c^e))|0)-1990404162|0,22)+d|0;c=oxa(((c+m|0)+(e^f&(d^e))|0)+1804603682|0,7)+f|0;x=K[b+60|0]|K[b+61|0]<<8|(K[b+62|0]<<16|K[b+63|0]<<24);z=c+p|0;y=K[b+56|0]|K[b+57|0]<<8|(K[b+58|0]<<16|K[b+59|0]<<24);e=oxa(((e+o|0)+(d^c&(d^f))|0)-40341101|0,12)+c|0;b=oxa(((y+d|0)+(f^e&(c^f))|0)-1502002290|0,17)+e|0;c=oxa(((f+x|0)+(c^b&(c^e))|0)+1236535329|0,22)+b|0;d=oxa((z+((b^c)&e^b)|0)-165796510|0,5)+c|0;f=b+v|0;b=oxa(((e+u|0)+(c^b&(c^d))|0)-1069501632|0,9)+d|0;e=oxa((f+(d^c&(b^d))|0)+643717713|0,14)+b|0;c=oxa(((c+j|0)+(b^d&(b^e))|0)-373897302|0,20)+e|0;d=oxa(((d+g|0)+((e^c)&b^e)|0)-701558691|0,5)+c|0;b=oxa(((b+w|0)+(c^e&(c^d))|0)+38016083|0,9)+d|0;e=oxa(((e+x|0)+(d^c&(b^d))|0)-660478335|0,14)+b|0;c=oxa(((c+l|0)+(b^d&(b^e))|0)-405537848|0,20)+e|0;d=oxa(((d+n|0)+((e^c)&b^e)|0)+568446438|0,5)+c|0;f=e+r|0;e=oxa(((b+y|0)+(c^e&(c^d))|0)-1019803690|0,9)+d|0;f=oxa((f+(d^(e^d)&c)|0)-187363961|0,14)+e|0;c=oxa(((c+i|0)+(e^(e^f)&d)|0)+1163531501|0,20)+f|0;b=oxa(((d+o|0)+((f^c)&e^f)|0)-1444681467|0,5)+c|0;d=oxa(((e+s|0)+(c^f&(b^c))|0)-51403784|0,9)+b|0;e=oxa(((f+t|0)+(b^c&(d^b))|0)+1735328473|0,14)+d|0;z=d+i|0;f=d^e;c=oxa(((c+m|0)+(d^f&b)|0)-1926607734|0,20)+e|0;d=oxa(((b+g|0)+(c^f)|0)-378558|0,4)+c|0;b=oxa((z+(c^e^d)|0)-2022574463|0,11)+d|0;e=oxa(((e+v|0)+(b^(c^d))|0)+1839030562|0,16)+b|0;c=oxa(((c+y|0)+(e^(b^d))|0)-35309556|0,23)+e|0;d=oxa(((d+p|0)+(c^(b^e))|0)-1530992060|0,4)+c|0;b=oxa(((b+l|0)+(d^(c^e))|0)+1272893353|0,11)+d|0;e=oxa(((e+t|0)+(b^(c^d))|0)-155497632|0,16)+b|0;c=oxa(((c+w|0)+(e^(b^d))|0)-1094730640|0,23)+e|0;d=oxa(((d+o|0)+(c^(b^e))|0)+681279174|0,4)+c|0;b=oxa(((b+j|0)+(d^(c^e))|0)-358537222|0,11)+d|0;e=oxa(((e+r|0)+(b^(c^d))|0)-722521979|0,16)+b|0;c=oxa(((c+u|0)+(e^(b^d))|0)+76029189|0,23)+e|0;d=oxa(((d+n|0)+(c^(b^e))|0)-640364487|0,4)+c|0;b=oxa(((b+m|0)+(d^(c^e))|0)-421815835|0,11)+d|0;f=d+j|0;j=b^d;d=oxa(((e+x|0)+(b^(c^d))|0)+530742520|0,16)+b|0;e=oxa(((c+s|0)+(j^d)|0)-995338651|0,23)+d|0;c=oxa((f+((e|b^-1)^d)|0)-198630844|0,6)+e|0;f=e+g|0;g=d+y|0;d=oxa(((b+t|0)+(e^(c|d^-1))|0)+1126891415|0,10)+c|0;e=oxa((g+(c^(d|e^-1))|0)-1416354905|0,15)+d|0;b=oxa((f+((e|c^-1)^d)|0)-57434055|0,21)+e|0;f=e+w|0;g=d+r|0;d=oxa(((c+m|0)+(e^(b|d^-1))|0)+1700485571|0,6)+b|0;e=oxa((g+(b^(d|e^-1))|0)-1894986606|0,10)+d|0;c=oxa((f+((e|b^-1)^d)|0)-1051523|0,15)+e|0;f=e+x|0;i=d+i|0;d=oxa(((b+p|0)+(e^(c|d^-1))|0)-2054922799|0,21)+c|0;e=oxa((i+(c^(d|e^-1))|0)+1873313359|0,6)+d|0;b=oxa((f+((e|c^-1)^d)|0)-30611744|0,10)+e|0;c=oxa(((c+u|0)+(e^(b|d^-1))|0)-1560198380|0,15)+b|0;d=oxa(((d+o|0)+(b^(c|e^-1))|0)+1309151649|0,21)+c|0;e=oxa(((e+l|0)+((d|b^-1)^c)|0)-145523070|0,6)+d|0;J[a+8>>2]=e+A;b=oxa(((b+v|0)+(d^(e|c^-1))|0)-1120210379|0,10)+e|0;J[a+20>>2]=b+q;c=oxa(((c+s|0)+(e^(b|d^-1))|0)+718787259|0,15)+b|0;J[a+16>>2]=c+k;J[a+12>>2]=oxa(((d+n|0)+(b^(c|e^-1))|0)-343485551|0,21)+(c+h|0);return 0}function il(a,b,c,d,e,f,g,h,i){var j=0,k=0,l=0,m=0,n=0,o=0,p=0,q=0,r=0,s=0,t=0,u=0,v=0,w=0,x=0,y=0,z=0,A=0,B=0,C=0,D=0,E=0,F=0,G=0,H=0,I=0,K=0,L=0,M=0,N=0,O=0,P=0,Q=0,R=0;k=Ui-96|0;Ui=k;u=i&65535;o=(e^i)&-2147483648;r=e&65535;y=r;Q=i>>>16&32767;R=e>>>16&32767;a:{b:{if(Q-32767>>>0>4294934529&R-32767>>>0>=4294934530){break b}s=e&2147483647;q=s;j=d;if(!(!d&(q|0)==2147418112?!(b|c):q>>>0<2147418112)){m=d;o=e|32768;break a}s=i&2147483647;p=s;e=h;if(!(!e&(p|0)==2147418112?!(f|g):p>>>0<2147418112)){m=e;o=i|32768;b=f;c=g;break a}if(!(b|j|(q^2147418112|c))){if(!(e|f|(g|p))){o=2147450880;b=0;c=0;break a}o=o|2147418112;b=0;c=0;break a}if(!(e|f|(p^2147418112|g))){e=b|j;d=c|q;b=0;c=0;if(!(d|e)){o=2147450880;break a}o=o|2147418112;break a}if(!(b|j|(c|q))){b=0;c=0;break a}if(!(e|f|(g|p))){b=0;c=0;break a}if((q|0)==65535|q>>>0<65535){j=!(d|r);i=j?b:d;s=j<<6;e=S(i)+32|0;i=S(j?c:r);i=s+((i|0)==32?e:i)|0;Mm(k+80|0,b,c,d,r,i-15|0);t=16-i|0;d=J[k+88>>2];y=J[k+92>>2];c=J[k+84>>2];b=J[k+80>>2]}if(p>>>0>65535){break b}i=!(h|u);e=i?f:h;r=i<<6;j=S(e)+32|0;e=S(i?g:u);e=r+((e|0)==32?j:e)|0;Mm(k- -64|0,f,g,h,u,e-15|0);t=(t-e|0)+16|0;h=J[k+72>>2];u=J[k+76>>2];f=J[k+64>>2];g=J[k+68>>2]}e=f;f=g<<15|f>>>17;i=e<<15;e=0;v=i&-32768;K=c;s=ixa(v,e,c,0);e=Yi;z=e;L=f;q=b;c=ixa(f,0,b,0);b=c+s|0;f=Yi+e|0;i=b;c=b>>>0>>0?f+1|0:f;f=b;j=0;b=ixa(q,l,v,l);p=j+b|0;e=Yi+f|0;e=b>>>0>p>>>0?e+1|0:e;r=e;M=(f|0)==(e|0)&j>>>0>p>>>0|e>>>0>>0;N=d;w=ixa(v,l,d,0);O=Yi;b=ixa(K,l,L,l);x=b+w|0;j=Yi+O|0;j=b>>>0>x>>>0?j+1|0:j;b=u<<15|h>>>17;A=h<<15|g>>>17;d=ixa(A,0,q,l);B=d+x|0;f=Yi+j|0;f=d>>>0>B>>>0?f+1|0:f;C=f;d=(c|0)==(z|0)&i>>>0>>0|c>>>0>>0;D=c+B|0;f=d+f|0;f=c>>>0>D>>>0?f+1|0:f;u=f;g=D;c=f;E=y|65536;y=ixa(v,l,E,n);P=Yi;d=ixa(N,m,L,l);F=d+y|0;e=Yi+P|0;e=d>>>0>F>>>0?e+1|0:e;i=e;G=b|-2147483648;b=ixa(G,0,q,l);H=b+F|0;f=Yi+e|0;f=b>>>0>H>>>0?f+1|0:f;d=ixa(A,m,K,l);b=d+H|0;I=f;f=f+Yi|0;z=b;s=b>>>0>>0?f+1|0:f;f=b;b=0;q=b+g|0;e=c+f|0;e=b>>>0>q>>>0?e+1|0:e;v=e;f=e;b=q+M|0;c=b>>>0>>0?f+1|0:f;t=((R+Q|0)+t|0)-16383|0;d=ixa(G,m,K,l);h=Yi;e=ixa(E,m,L,l);g=e+d|0;f=Yi+h|0;f=e>>>0>g>>>0?f+1|0:f;n=(h|0)==(f|0)&d>>>0>g>>>0|f>>>0>>0;h=f;e=ixa(A,m,N,m);d=e+g|0;f=Yi+f|0;f=d>>>0>>0?f+1|0:f;e=f;g=(f|0)==(h|0)&d>>>0>>0|f>>>0>>0;f=0;h=g;g=g+n|0;f=h>>>0>g>>>0?1:f;h=g;g=ixa(G,m,E,m);h=h+g|0;f=Yi+f|0;M=h;g=g>>>0>h>>>0?f+1|0:f;h=d;l=e;e=(j|0)==(O|0)&w>>>0>x>>>0|j>>>0>>0;f=0;j=(j|0)==(C|0)&x>>>0>B>>>0|j>>>0>C>>>0;n=j;j=e+j|0;e=(n>>>0>j>>>0?1:f)+l|0;f=g;d=d+j|0;e=d>>>0>>0?e+1|0:e;n=e;w=d;d=(e|0)==(l|0)&d>>>0>>0|e>>>0>>0;e=d;d=d+M|0;f=e>>>0>d>>>0?f+1|0:f;j=d;h=f;e=ixa(A,m,E,m);l=Yi;g=ixa(G,m,N,m);d=g+e|0;f=Yi+l|0;f=d>>>0>>0?f+1|0:f;g=f;f=(l|0)==(f|0)&d>>>0>>0|f>>>0>>0;x=g+j|0;e=f+h|0;e=g>>>0>x>>>0?e+1|0:e;l=x;h=e;j=d;e=0;d=e+w|0;f=j+n|0;f=d>>>0>>0?f+1|0:f;e=f;g=(n|0)==(f|0)&d>>>0>>0|f>>>0>>0;f=h;h=g;g=g+l|0;f=h>>>0>g>>>0?f+1|0:f;w=g;g=f;h=d;j=e;e=(s|0)==(I|0)&z>>>0>>0|s>>>0>>0;d=(i|0)==(P|0)&y>>>0>F>>>0|i>>>0

>>0;i=(i|0)==(I|0)&F>>>0>H>>>0|i>>>0>I>>>0;d=d+i|0;d=d+e|0;n=s;i=n+h|0;e=d+j|0;f=g;d=i;e=d>>>0>>0?e+1|0:e;h=(e|0)==(j|0)&h>>>0>d>>>0|e>>>0>>0;g=h+w|0;f=h>>>0>g>>>0?f+1|0:f;j=g;g=f;h=d;f=0;i=e;n=(u|0)==(v|0)&q>>>0>>0|u>>>0>v>>>0;l=n;n=n+((u|0)==(C|0)&B>>>0>D>>>0|u>>>0>>0)|0;e=e+(l>>>0>n>>>0?1:f)|0;f=g;d=d+n|0;e=d>>>0>>0?e+1|0:e;h=(e|0)==(i|0)&d>>>0>>0|e>>>0>>0;g=h;h=h+j|0;f=g>>>0>h>>>0?f+1|0:f;i=f;c:{if(f&65536){t=t+1|0;break c}j=r>>>31|0;g=0;f=i<<1|h>>>31;h=h<<1|e>>>31;i=f;f=e<<1|d>>>31;d=d<<1|c>>>31;e=f;f=r<<1|p>>>31;p=p<<1;r=f;f=c<<1|b>>>31;b=b<<1|j;c=f|g}if((t|0)>=32767){o=o|2147418112;b=0;c=0;break a}d:{if((t|0)<=0){g=1-t|0;if(g>>>0<=127){f=t+127|0;Mm(k+48|0,p,r,b,c,f);Mm(k+32|0,d,e,h,i,f);Lr(k+16|0,p,r,b,c,g);Lr(k,d,e,h,i,g);p=J[k+32>>2]|J[k+16>>2]|(J[k+48>>2]|J[k+56>>2]|(J[k+52>>2]|J[k+60>>2]))!=0;r=J[k+36>>2]|J[k+20>>2];b=J[k+40>>2]|J[k+24>>2];c=J[k+44>>2]|J[k+28>>2];d=J[k>>2];e=J[k+4>>2];g=J[k+8>>2];f=J[k+12>>2];break d}b=0;c=0;break a}g=h;f=i&65535|t<<16}m=g|m;o=f|o;if(!(!b&(c|0)==-2147483648?!(p|r):(c|0)>0|(c|0)>=0)){b=d+1|0;j=b?e:e+1|0;e=o;c=j;d=!(j|b);m=d+m|0;o=d>>>0>m>>>0?e+1|0:e;break a}if(b|p|(c^-2147483648|r)){b=d;c=e;break a}f=e;b=d&1;c=b;b=b+d|0;c=c>>>0>b>>>0?f+1|0:f;d=(f|0)==(c|0)&b>>>0>>0|c>>>0>>0;f=o;m=d+m|0;o=m>>>0>>0?f+1|0:f}J[a>>2]=b;J[a+4>>2]=c;J[a+8>>2]=m;J[a+12>>2]=o;Ui=k+96|0}function FE(a,b,c,d,e,f){a=a|0;b=b|0;c=c|0;d=d|0;e=e|0;f=f|0;var g=0,h=Q(0),i=Q(0),j=Q(0),k=Q(0),l=Q(0),m=Q(0),n=Q(0),o=Q(0),p=Q(0),q=0,r=Q(0),s=Q(0),t=Q(0),u=Q(0),v=Q(0),w=0,x=Q(0),y=Q(0),z=Q(0),A=Q(0),B=Q(0),C=Q(0),D=Q(0),E=Q(0),F=Q(0),G=Q(0),H=Q(0),I=Q(0),K=Q(0),L=Q(0),M=Q(0),O=Q(0),P=Q(0),R=Q(0),S=Q(0),T=Q(0),U=Q(0),V=Q(0),W=Q(0),X=Q(0),Z=Q(0),_=Q(0),$=Q(0),aa=Q(0),ba=Q(0),ca=Q(0),da=Q(0),ea=0,fa=0;g=Ui-96|0;Ui=g;Wy(J[a+4>>2]);W=N[d+40>>2];X=N[d+36>>2];Z=N[d+32>>2];_=N[d+24>>2];$=N[d+20>>2];aa=N[d+16>>2];ba=N[d+8>>2];ca=N[d+4>>2];da=N[d>>2];G=N[b+32>>2];H=N[b>>2];I=N[b+16>>2];K=N[b+36>>2];L=N[b+4>>2];M=N[b+20>>2];O=N[b+40>>2];z=N[b+56>>2];m=N[c+56>>2];A=N[d+56>>2];l=N[e+56>>2];P=N[b+8>>2];B=N[b+48>>2];i=N[c+48>>2];C=N[d+48>>2];h=N[e+48>>2];R=N[b+24>>2];D=N[b+52>>2];j=N[c+52>>2];E=N[d+52>>2];k=N[e+52>>2];q=J[a+8>>2];J[g+60>>2]=0;y=Q(Q(i-B)-Q(h-C));i=Q(-y);t=Q(Q(j-D)-Q(k-E));u=Q(Q(m-z)-Q(l-A));N[g+56>>2]=Q(Q(P*i)-Q(R*t))-Q(O*u);N[g+52>>2]=Q(Q(L*i)-Q(M*t))-Q(K*u);N[g+48>>2]=Q(Q(H*i)-Q(I*t))-Q(G*u);Zi[J[J[q>>2]+60>>2]](g+80|0,q,g+48|0);h=N[b+52>>2];j=N[b+24>>2];k=N[b+16>>2];n=N[b+20>>2];v=N[b+48>>2];o=N[b+8>>2];p=N[b>>2];r=N[b+4>>2];i=N[b+56>>2];m=N[b+40>>2];l=N[b+32>>2];s=N[b+36>>2];J[g+76>>2]=0;x=i;i=N[g+88>>2];S=Q(m*i);m=N[g+80>>2];T=Q(l*m);l=N[g+84>>2];s=Q(x+Q(S+Q(T+Q(s*l))));N[g+72>>2]=s;v=Q(v+Q(Q(o*i)+Q(Q(p*m)+Q(r*l))));N[g+64>>2]=v;h=Q(h+Q(Q(j*i)+Q(Q(k*m)+Q(l*n))));N[g+68>>2]=h;q=J[a+12>>2];i=N[d+32>>2];m=N[d>>2];l=N[d+16>>2];j=N[d+36>>2];k=N[d+4>>2];n=N[d+20>>2];o=N[d+40>>2];p=N[d+8>>2];r=N[d+24>>2];J[g+28>>2]=0;N[g+24>>2]=Q(o*u)+Q(Q(p*y)+Q(t*r));N[g+20>>2]=Q(j*u)+Q(Q(k*y)+Q(t*n));N[g+16>>2]=Q(i*u)+Q(Q(m*y)+Q(t*l));Zi[J[J[q>>2]+60>>2]](g+32|0,q,g+16|0);k=N[d+56>>2];n=N[d+40>>2];o=N[d+32>>2];p=N[d+36>>2];j=N[d+48>>2];r=N[d+8>>2];U=N[d>>2];V=N[d+4>>2];i=N[d+52>>2];m=N[d+24>>2];l=N[d+16>>2];F=N[d+20>>2];J[g+60>>2]=0;J[g+92>>2]=0;x=i;i=N[g+40>>2];S=Q(m*i);m=N[g+32>>2];T=Q(l*m);l=N[g+36>>2];F=Q(x+Q(S+Q(T+Q(F*l))));N[g+52>>2]=F;h=Q(h-F);N[g+84>>2]=h;j=Q(j+Q(Q(r*i)+Q(Q(U*m)+Q(V*l))));N[g+48>>2]=j;j=Q(v-j);N[g+80>>2]=j;i=Q(k+Q(Q(n*i)+Q(Q(o*m)+Q(l*p))));N[g+56>>2]=i;k=Q(s-i);N[g+88>>2]=k;v=Q(0);i=Q(0);m=Q(0);l=Q(0);n=Q(0);a:{b:{if(!(Q(Q(k*k)+Q(Q(j*j)+Q(h*h)))>Q(9999999747378752e-20))){break b}q=32;while(1){if(!q){break b}w=J[a+8>>2];J[g+12>>2]=0;h=Q(-N[g+80>>2]);j=N[g+84>>2];k=N[g+88>>2];N[g+8>>2]=Q(Q(P*h)-Q(R*j))-Q(O*k);N[g+4>>2]=Q(Q(L*h)-Q(M*j))-Q(K*k);N[g>>2]=Q(Q(H*h)-Q(I*j))-Q(G*k);ea=g+16|0;Zi[J[J[w>>2]+60>>2]](ea,w,g);J[g+76>>2]=0;h=N[g+24>>2];j=N[g+16>>2];k=N[g+20>>2];N[g+72>>2]=z+Q(Q(O*h)+Q(Q(G*j)+Q(K*k)));N[g+68>>2]=D+Q(Q(R*h)+Q(Q(I*j)+Q(M*k)));N[g+64>>2]=B+Q(Q(P*h)+Q(Q(H*j)+Q(L*k)));w=J[a+12>>2];J[g+12>>2]=0;h=N[g+88>>2];j=N[g+80>>2];k=N[g+84>>2];N[g+8>>2]=Q(W*h)+Q(Q(ba*j)+Q(_*k));N[g+4>>2]=Q(X*h)+Q(Q(ca*j)+Q($*k));N[g>>2]=Q(Z*h)+Q(Q(da*j)+Q(aa*k));Zi[J[J[w>>2]+60>>2]](ea,w,g);J[g+60>>2]=0;J[g+44>>2]=0;k=N[g+24>>2];o=N[g+16>>2];p=N[g+20>>2];h=Q(E+Q(Q(_*k)+Q(Q(aa*o)+Q($*p))));N[g+52>>2]=h;r=Q(N[g+68>>2]-h);N[g+36>>2]=r;h=N[g+84>>2];j=Q(C+Q(Q(ba*k)+Q(Q(da*o)+Q(ca*p))));N[g+48>>2]=j;s=Q(N[g+64>>2]-j);N[g+32>>2]=s;j=N[g+80>>2];k=Q(A+Q(Q(W*k)+Q(Q(Z*o)+Q(X*p))));N[g+56>>2]=k;o=Q(N[g+72>>2]-k);N[g+40>>2]=o;if(n>Q(1)){break a}k=N[g+88>>2];o=Q(Q(k*o)+Q(Q(j*s)+Q(r*h)));if(o>Q(0)){i=Q(Q(k*u)+Q(Q(j*y)+Q(t*h)));if(i>=Q(-14210854715202004e-30)){break a}m=N[b+48>>2];l=N[c+48>>2];B=N[b+52>>2];D=N[c+52>>2];z=N[b+56>>2];p=N[c+56>>2];C=N[d+48>>2];s=N[e+48>>2];E=N[d+52>>2];U=N[e+52>>2];A=N[d+56>>2];V=N[e+56>>2];J[g+44>>2]=0;N[g+36>>2]=r;n=Q(n-Q(o/i));i=Q(Q(1)-n);A=Q(Q(A*i)+Q(n*V));E=Q(Q(i*E)+Q(n*U));C=Q(Q(i*C)+Q(n*s));z=Q(Q(i*z)+Q(n*p));D=Q(Q(i*B)+Q(n*D));B=Q(Q(i*m)+Q(n*l));m=h;l=k;i=j}w=g+32|0;if(!QS(J[a+4>>2],w)){TS(J[a+4>>2],w,g- -64|0,g+48|0)}if(!SS(J[a+4>>2],g+80|0)){break b}q=q-1|0;h=N[g+88>>2];k=Q(h*h);h=N[g+80>>2];x=Q(h*h);h=N[g+84>>2];if(Q(k+Q(x+Q(h*h)))>Q(9999999747378752e-20)){continue}break}}N[f+164>>2]=n;n=Q(0);h=Q(0);j=Q(Q(l*l)+Q(Q(i*i)+Q(m*m)));if(j>=Q(14210854715202004e-30)){x=l;l=Q(Q(1)/Q(Y(j)));h=Q(x*l);v=Q(i*l);n=Q(m*l)}J[f+144>>2]=0;N[f+140>>2]=h;N[f+136>>2]=n;N[f+132>>2]=v;if(Q(-N[f+172>>2])<=Q(Q(h*u)+Q(Q(v*y)+Q(t*n)))){break a}RS(J[a+4>>2],g+16|0,g);a=J[g+12>>2];J[f+156>>2]=J[g+8>>2];J[f+160>>2]=a;a=J[g+4>>2];J[f+148>>2]=J[g>>2];J[f+152>>2]=a;fa=1}Ui=g+96|0;return fa|0}function Kka(a){a=a|0;var b=0,c=0,d=0,e=0,f=0,g=0,h=0,i=0,j=0,k=Q(0);g=Ui-96|0;Ui=g;j=J[a+8>>2];b=J[J[a+12>>2]>>2];d=J[a+16>>2];c=d;f=J[c+64>>2];e=J[c+68>>2];c=J[74956];i=J[74957];a:{if(!(((f|0)!=J[74954]|(e|0)!=J[74955])&((c|0)!=(f|0)|(i|0)!=(e|0)))){a=d;d=a+32|0;i=(c|0)==(f|0)&(e|0)==(i|0);h=Ui+-64|0;Ui=h;b:{c:{if(j){if(!b){break c}e=J[b+136>>2];if(!e){e=J[J[J[b+32>>2]>>2]>>2]}d:{if(J[b+36>>2]){J[h+52>>2]=e;J[h+48>>2]=75923;jo(a,149311,h+48|0);a=a?0:-1e3;break d}if(J[b+60>>2]){J[h+36>>2]=e;J[h+32>>2]=75962;jo(a,149311,h+32|0);a=a?0:-1e3;break d}J[b+56>>2]=J[b+56>>2]&-524289;c=b- -64|0;e:{if(a){f=J[a+4>>2];J[c>>2]=J[a>>2];J[c+4>>2]=f;f=J[a+28>>2];J[c+24>>2]=J[a+24>>2];J[c+28>>2]=f;f=J[a+20>>2];J[c+16>>2]=J[a+16>>2];J[c+20>>2]=f;f=J[a+12>>2];J[c+8>>2]=J[a+8>>2];J[c+12>>2]=f;break e}H[c|0]=0;H[c+1|0]=0;H[c+2|0]=0;H[c+3|0]=0;H[c+4|0]=0;H[c+5|0]=0;H[c+6|0]=0;H[c+7|0]=0;H[c+24|0]=0;H[c+25|0]=0;H[c+26|0]=0;H[c+27|0]=0;H[c+28|0]=0;H[c+29|0]=0;H[c+30|0]=0;H[c+31|0]=0;H[c+16|0]=0;H[c+17|0]=0;H[c+18|0]=0;H[c+19|0]=0;H[c+20|0]=0;H[c+21|0]=0;H[c+22|0]=0;H[c+23|0]=0;H[c+8|0]=0;H[c+9|0]=0;H[c+10|0]=0;H[c+11|0]=0;H[c+12|0]=0;H[c+13|0]=0;H[c+14|0]=0;H[c+15|0]=0}f:{if(d){a=J[d+4>>2];J[b+96>>2]=J[d>>2];J[b+100>>2]=a;a=J[d+28>>2];J[b+120>>2]=J[d+24>>2];J[b+124>>2]=a;a=J[d+20>>2];J[b+112>>2]=J[d+16>>2];J[b+116>>2]=a;a=J[d+12>>2];J[b+104>>2]=J[d+8>>2];J[b+108>>2]=a;break f}H[b+96|0]=0;H[b+97|0]=0;H[b+98|0]=0;H[b+99|0]=0;H[b+100|0]=0;H[b+101|0]=0;H[b+102|0]=0;H[b+103|0]=0;H[b+120|0]=0;H[b+121|0]=0;H[b+122|0]=0;H[b+123|0]=0;H[b+124|0]=0;H[b+125|0]=0;H[b+126|0]=0;H[b+127|0]=0;H[b+112|0]=0;H[b+113|0]=0;H[b+114|0]=0;H[b+115|0]=0;H[b+116|0]=0;H[b+117|0]=0;H[b+118|0]=0;H[b+119|0]=0;H[b+104|0]=0;H[b+105|0]=0;H[b+106|0]=0;H[b+107|0]=0;H[b+108|0]=0;H[b+109|0]=0;H[b+110|0]=0;H[b+111|0]=0}J[b+132>>2]=0;J[b+128>>2]=0;J[b+56>>2]=J[b+56>>2]|2097152;a=J[j>>2];if(i){J[b+60>>2]=IK(a,e);a=0;break d}e=J[b+136>>2];if(!e){e=J[J[J[b+32>>2]>>2]>>2]}g:{if(!wk(a,e,b+36|0)){J[b+56>>2]=J[b+56>>2]&-2097153;a=0;e=J[b+128>>2];if(e){break g}if(!Pp(J[b+64>>2],J[b+68>>2])){break d}c=Jk(b+96|0,b- -64|0,J[74964],J[74965],0,0,0,0,0,0);if(!c){break d}J[h>>2]=c;dj(3,88458,79983,h);break d}J[h+16>>2]=e;dj(4,88458,129952,h+16|0);J[b+56>>2]=J[b+56>>2]&-2097153;a=-1e3;e=J[b+128>>2];if(!e){break d}}c=J[b+136>>2];if(!c){c=J[J[J[b+32>>2]>>2]>>2]}Zi[e|0](c,a,J[b+132>>2])}Ui=h- -64|0;break b}Z(113593,36568,479,50204);B()}Z(113549,36568,480,50204);B()}a=a?-1e3:0;break a}if((f|0)==J[74958]&(e|0)==J[74959]){a=J[b+60>>2];if(a){zo(a);J[b+60>>2]=0}a=J[b+36>>2];if(!a){a=J[b+136>>2];if(!a){a=J[J[J[b+32>>2]>>2]>>2]}J[g>>2]=a;jo(d,129812,g);a=0;break a}vj(J[j>>2],a);a=0;J[b+36>>2]=0;J[b+56>>2]=J[b+56>>2]&-983041|524288;c=J[d+4>>2];J[b>>2]=J[d>>2];J[b+4>>2]=c;c=J[d+12>>2];J[b+8>>2]=J[d+8>>2];J[b+12>>2]=c;c=J[d+20>>2];J[b+16>>2]=J[d+16>>2];J[b+20>>2]=c;c=J[d+28>>2];J[b+24>>2]=J[d+24>>2];J[b+28>>2]=c;break a}if((f|0)==J[74960]&(e|0)==J[74961]){a=J[b+36>>2];if(a){if(!(H[b+58|0]&1)){pv(a);J[b+56>>2]=J[b+56>>2]|65536;a=0;break a}a=J[b+136>>2];if(!a){a=J[J[J[b+32>>2]>>2]>>2]}J[g+32>>2]=a;jo(d,127370,g+32|0);a=0;break a}a=J[b+136>>2];if(!a){a=J[J[J[b+32>>2]>>2]>>2]}J[g+16>>2]=a;jo(d,129879,g+16|0);a=0;break a}if((f|0)==J[74962]&(e|0)==J[74963]){h:{if(!(H[b+58|0]&1)){break h}a=J[b+36>>2];if(!a){break h}sv(a);J[b+56>>2]=J[b+56>>2]&-65537;a=0;break a}a=J[b+136>>2];if(!a){a=J[J[J[b+32>>2]>>2]>>2]}J[g+48>>2]=a;jo(d,127412,g+48|0);a=0;break a}c=J[55237];if((f|0)==J[c+8>>2]&(e|0)==J[c+12>>2]){c=J[b+36>>2];if(c){f=J[b+56>>2];if(!(f&393216)){J[b+56>>2]=f|262144;a=0;if(f&65536){break a}pv(c);J[b+56>>2]=J[b+56>>2]|65536;break a}a=J[b+136>>2];if(!a){a=J[J[J[b+32>>2]>>2]>>2]}J[g+80>>2]=a;jo(d,75162,g+80|0);a=0;break a}a=J[b+136>>2];if(!a){a=J[J[J[b+32>>2]>>2]>>2]}J[g+64>>2]=a;jo(d,129879,g- -64|0);a=0;break a}c=J[55238];if((f|0)==J[c+8>>2]&(e|0)==J[c+12>>2]){c=Ui-16|0;Ui=c;a=J[b+56>>2];i:{if((a&393216)==393216){J[b+56>>2]=a&-262145;a=0;break i}a=J[b+136>>2];if(!a){a=J[J[J[b+32>>2]>>2]>>2]}J[c>>2]=a;jo(d,129420,c);a=d?0:-1e3}Ui=c+16|0;a=a?-1e3:0;break a}if(J[d+80>>2]==J[56768]){a=0;k=N[d+96>>2];J[b+44>>2]=J[d+100>>2]!=0;N[b+48>>2]=k>2]=0;J[b+48>>2]=1065353216}Ui=g+96|0;return a|0}function tK(a,b,c,d,e,f){var g=Q(0),h=Q(0),i=Q(0),j=Q(0),k=Q(0),l=Q(0),m=Q(0),n=Q(0),o=Q(0),p=Q(0),q=Q(0),r=Q(0),s=Q(0),t=Q(0),u=Q(0),v=Q(0),w=Q(0),x=Q(0),y=Q(0),z=0,A=Q(0),C=Q(0),D=Q(0),E=0,F=Q(0),G=0,H=0,I=0,K=0,L=0,M=Q(0),O=0,R=0;G=J[a+52>>2];L=G?J[a+48>>2]:0;I=J[a+40>>2];z=J[a+36>>2];K=(z>>>0)/3|0;a:{b:{if(!((c|0)!=(d|0)?J[a+112>>2]:0)){if(z>>>0<3){break b}a=0;if(!G){while(1){k=N[b+32>>2];l=N[b+16>>2];m=N[b>>2];p=N[b+36>>2];q=N[b+20>>2];r=N[b+4>>2];c=P(a,12)+I|0;h=N[c+8>>2];i=N[c>>2];j=N[c+4>>2];N[e+8>>2]=Q(N[b+40>>2]*h)+Q(Q(N[b+8>>2]*i)+Q(j*N[b+24>>2]));N[e+4>>2]=Q(p*h)+Q(Q(r*i)+Q(j*q));N[e>>2]=Q(k*h)+Q(Q(m*i)+Q(j*l));e=e+12|0;a=a+1|0;if((K|0)!=(a|0)){continue}break b}}while(1){k=N[b+32>>2];l=N[b+16>>2];m=N[b>>2];p=N[b+36>>2];q=N[b+20>>2];r=N[b+4>>2];c=P(a,12)+I|0;h=N[c+8>>2];i=N[c>>2];j=N[c+4>>2];N[e+8>>2]=Q(N[b+40>>2]*h)+Q(Q(N[b+8>>2]*i)+Q(j*N[b+24>>2]));N[e+4>>2]=Q(p*h)+Q(Q(r*i)+Q(j*q));N[e>>2]=Q(k*h)+Q(Q(m*i)+Q(j*l));c=(a<<4)+L|0;h=N[c+8>>2];i=N[c>>2];j=N[c+4>>2];k=N[b+32>>2];l=N[b>>2];m=N[b+16>>2];p=N[b+36>>2];q=N[b+4>>2];r=N[b+20>>2];v=N[b+40>>2];n=N[b+8>>2];o=N[b+24>>2];N[f+12>>2]=N[c+12>>2];N[f+8>>2]=Q(v*h)+Q(Q(n*i)+Q(j*o));N[f+4>>2]=Q(p*h)+Q(Q(q*i)+Q(j*r));N[f>>2]=Q(k*h)+Q(Q(l*i)+Q(j*m));f=f+16|0;e=e+12|0;a=a+1|0;if((K|0)!=(a|0)){continue}break}break b}if(z>>>0<3){break b}d=d-c>>6;O=J[a+100>>2];R=J[a+108>>2];z=0;while(1){E=z<<2;h=Q(0);i=Q(0);j=Q(0);M=Q(0);if(G){a=(E<<2)+L|0;j=N[a>>2];M=N[a+12>>2];i=N[a+4>>2];h=N[a+8>>2]}p=Q(0);q=Q(0);r=Q(0);v=Q(0);n=Q(0);o=Q(0);s=Q(0);a=E<<2;E=a+O|0;g=N[E>>2];c:{if(g==Q(0)){break c}H=a+R|0;a=J[H>>2];if(a>>>0>=d>>>0){break a}a=(a<<6)+c|0;v=Q(Q(g*Q(Q(N[a+44>>2]*h)+Q(Q(N[a+12>>2]*j)+Q(i*N[a+28>>2]))))+Q(0));k=N[a+40>>2];l=N[a+8>>2];n=N[a+24>>2];r=Q(Q(g*Q(Q(k*h)+Q(Q(l*j)+Q(i*n))))+Q(0));o=N[a+36>>2];t=N[a+4>>2];u=N[a+20>>2];q=Q(Q(g*Q(Q(o*h)+Q(Q(t*j)+Q(i*u))))+Q(0));w=N[a+32>>2];x=N[a>>2];y=N[a+16>>2];p=Q(Q(g*Q(Q(w*h)+Q(Q(x*j)+Q(i*y))))+Q(0));A=k;a=P(z,12)+I|0;k=N[a+8>>2];s=l;l=N[a>>2];m=N[a+4>>2];s=Q(Q(g*Q(Q(A*k)+Q(Q(s*l)+Q(m*n))))+Q(0));o=Q(Q(g*Q(Q(o*k)+Q(Q(t*l)+Q(m*u))))+Q(0));n=Q(Q(g*Q(Q(w*k)+Q(Q(x*l)+Q(m*y))))+Q(0));g=N[E+4>>2];if(g==Q(0)){break c}a=J[H+4>>2];if(a>>>0>=d>>>0){break a}a=(a<<6)+c|0;v=Q(v+Q(g*Q(Q(N[a+44>>2]*h)+Q(Q(N[a+12>>2]*j)+Q(i*N[a+28>>2])))));t=N[a+40>>2];u=N[a+8>>2];w=N[a+24>>2];r=Q(r+Q(g*Q(Q(t*h)+Q(Q(u*j)+Q(i*w)))));x=N[a+36>>2];y=N[a+4>>2];C=N[a+20>>2];q=Q(q+Q(g*Q(Q(x*h)+Q(Q(y*j)+Q(i*C)))));D=N[a+32>>2];A=N[a>>2];F=N[a+16>>2];p=Q(p+Q(g*Q(Q(D*h)+Q(Q(A*j)+Q(i*F)))));s=Q(s+Q(g*Q(Q(t*k)+Q(Q(u*l)+Q(m*w)))));o=Q(o+Q(g*Q(Q(x*k)+Q(Q(y*l)+Q(m*C)))));n=Q(n+Q(g*Q(Q(D*k)+Q(Q(A*l)+Q(m*F)))));g=N[E+8>>2];if(g==Q(0)){break c}a=J[H+8>>2];if(a>>>0>=d>>>0){break a}a=(a<<6)+c|0;v=Q(v+Q(g*Q(Q(N[a+44>>2]*h)+Q(Q(N[a+12>>2]*j)+Q(i*N[a+28>>2])))));t=N[a+40>>2];u=N[a+8>>2];w=N[a+24>>2];r=Q(r+Q(g*Q(Q(t*h)+Q(Q(u*j)+Q(i*w)))));x=N[a+36>>2];y=N[a+4>>2];C=N[a+20>>2];q=Q(q+Q(g*Q(Q(x*h)+Q(Q(y*j)+Q(i*C)))));D=N[a+32>>2];A=N[a>>2];F=N[a+16>>2];p=Q(p+Q(g*Q(Q(D*h)+Q(Q(A*j)+Q(i*F)))));s=Q(s+Q(g*Q(Q(t*k)+Q(Q(u*l)+Q(m*w)))));o=Q(o+Q(g*Q(Q(x*k)+Q(Q(y*l)+Q(m*C)))));n=Q(n+Q(g*Q(Q(D*k)+Q(Q(A*l)+Q(m*F)))));g=N[E+12>>2];if(g==Q(0)){break c}a=J[H+12>>2];if(a>>>0>=d>>>0){break a}a=(a<<6)+c|0;v=Q(v+Q(g*Q(Q(N[a+44>>2]*h)+Q(Q(N[a+12>>2]*j)+Q(i*N[a+28>>2])))));t=N[a+40>>2];u=N[a+8>>2];w=N[a+24>>2];r=Q(r+Q(g*Q(Q(t*h)+Q(Q(u*j)+Q(i*w)))));x=N[a+36>>2];y=N[a+4>>2];C=N[a+20>>2];q=Q(q+Q(g*Q(Q(x*h)+Q(Q(y*j)+Q(i*C)))));D=N[a+32>>2];F=Q(D*h);h=N[a>>2];A=i;i=N[a+16>>2];p=Q(p+Q(g*Q(F+Q(Q(h*j)+Q(A*i)))));s=Q(s+Q(g*Q(Q(t*k)+Q(Q(u*l)+Q(m*w)))));o=Q(o+Q(g*Q(Q(x*k)+Q(Q(y*l)+Q(m*C)))));n=Q(n+Q(g*Q(Q(D*k)+Q(Q(h*l)+Q(m*i)))))}h=N[b+32>>2];i=N[b>>2];j=N[b+16>>2];k=N[b+36>>2];l=N[b+4>>2];m=N[b+20>>2];N[e+8>>2]=Q(N[b+40>>2]*s)+Q(Q(N[b+8>>2]*n)+Q(o*N[b+24>>2]));N[e+4>>2]=Q(k*s)+Q(Q(l*n)+Q(o*m));N[e>>2]=Q(h*s)+Q(Q(i*n)+Q(o*j));if(G){h=N[b+48>>2];i=N[b+32>>2];j=N[b>>2];k=N[b+16>>2];l=N[b+52>>2];m=N[b+36>>2];n=N[b+4>>2];o=N[b+20>>2];s=N[b+56>>2];g=N[b+40>>2];t=N[b+8>>2];u=N[b+24>>2];N[f+12>>2]=M;N[f+8>>2]=Q(s*v)+Q(Q(g*r)+Q(Q(t*p)+Q(q*u)));N[f+4>>2]=Q(l*v)+Q(Q(m*r)+Q(Q(n*p)+Q(q*o)));N[f>>2]=Q(h*v)+Q(Q(i*r)+Q(Q(j*p)+Q(q*k)));f=f+16|0}e=e+12|0;z=z+1|0;if((K|0)!=(z|0)){continue}break}}return}Z(145396,53895,494,84789);B()}function Zfa(a){a=a|0;var b=0,c=0,d=0,e=0,f=0,g=0,h=0,i=0,j=Q(0),k=Q(0),l=0,m=0,n=Q(0),o=Q(0),p=0,q=0,r=Q(0),s=Q(0),t=Q(0),u=0,v=0,w=0,x=Q(0),y=Q(0),z=Q(0),A=0,C=0,D=0,E=Q(0),F=Q(0),G=Q(0),I=Q(0),O=0,R=0,S=Q(0),T=Q(0),U=Q(0),V=Q(0),W=0,X=0,Y=0,_=0,$=Q(0),aa=Q(0),ba=0,ca=Q(0),da=Q(0),ea=Q(0),fa=Q(0),ga=Q(0),ha=Q(0),ia=Q(0),ja=0,ka=0,la=0,ma=0,na=Q(0);p=Ui-80|0;Ui=p;b=J[a+4>>2];a:{b:{c:{d:{e:{f:{switch(J[a+8>>2]){case 0:J[b+52>>2]=J[b+44>>2];J[b+24>>2]=J[b+20>>2];break e;case 2:d=J[b+52>>2];a=J[b+44>>2];if((d|0)==(a|0)){break e}d=d-a|0;Qs(J[b+40>>2],d,a,2);c=(d|0)/20|0;l=(c>>>0)/6|0;J[76314]=l+J[76314];a=p;J[a+64>>2]=l;J[a+68>>2]=0;J[a+24>>2]=l;J[a+28>>2]=0;J[76336]=c+J[76336];J[a+56>>2]=c;J[a+60>>2]=0;J[a+16>>2]=c;J[a+20>>2]=0;J[76358]=d+J[76358];J[a+48>>2]=d;J[a+52>>2]=0;J[a+8>>2]=d;J[a+12>>2]=0;J[b+64>>2]=J[b+64>>2]+1;break e;case 1:break f;default:break e}}c=J[a+20>>2];W=J[a>>2];X=J[a+12>>2];l=J[a+16>>2];J[p+76>>2]=0;d=L[(X+P(J[l>>2],48)|0)+16>>1];a=J[b+4>>2];if(d>>>0>=J[b+8>>2]-a>>2>>>0){break a}q=J[a+(d<<2)>>2];if(!(H[q+166|0]&1)){break d}Y=J[q+156>>2];A=J[q+152>>2];if(!A){A=J[Y>>2]}d=J[b+24>>2];a=J[b+20>>2];i=((d-a|0)/336|0)+1|0;if(i>>>0>(J[b+28>>2]-a|0)/336>>>0){break c}J[b+24>>2]=a+P(i,336);O=J[b+52>>2];a=O;u=Ui-16|0;Ui=u;J[u+12>>2]=0;g:{h:{ja=c;i:{if((c|0)==(l|0)){break i}c=J[A+96>>2];ka=J[c+84>>2];_=J[b+4>>2];la=J[b+8>>2]-_>>2;$=Q(M[c+36>>2]);aa=Q(M[c+32>>2]);while(1){i=X+P(J[l>>2],48)|0;c=J[i+16>>2];i=J[i+20>>2];f=c&65535;if(f>>>0>=la>>>0){break a}h=c>>>16|0;f=J[(f<<2)+_>>2];e=J[f+156>>2];C=J[e+4>>2];if(h>>>0>=M[C+8>>2]){break h}v=J[e+40>>2];D=J[e+32>>2]&2147483647;w=v+D|0;j:{m=(i>>>11&2097120)+v|0;k:{if((w|0)<=(m|0)){break k}R=J[e+36>>2];ba=J[e+28>>2];e=R+ba|0;i=(((i&134217727)<<5|c>>>27)&2097120)+R|0;if((e|0)<=(i|0)){break k}c=m+32|0;w=(c|0)<(w|0)?c:w;c=i+32|0;ma=(c|0)<(e|0)?c:e;S=N[(J[C+4>>2]+(h<<5)|0)+4>>2];v=P(h,D)-v|0;C=J[f+100>>2];while(1){T=Q($*Q(m|0));D=P(m+v|0,ba);m=m+1|0;U=Q($*Q(m|0));c=i;while(1){e=D+(c-R|0)|0;h=L[C+(e<<1)>>1];l:{if((h|0)==65535){c=c+1|0;break l}g=J[b+48>>2];if(g>>>0<=a>>>0){break j}e=K[e+J[f+104>>2]|0];r=N[f+80>>2];s=N[f+64>>2];x=N[f+32>>2];j=N[f+48>>2];E=N[f+84>>2];t=N[f+68>>2];y=N[f+36>>2];n=N[f+52>>2];F=N[f+88>>2];G=Q(N[f+72>>2]*S);z=N[f+40>>2];k=Q(aa*Q(c|0));o=Q(z*k);I=N[f+56>>2];ca=Q(T*I);da=Q(F+Q(G+Q(o+ca)));N[a+8>>2]=da;t=Q(t*S);ea=Q(y*k);fa=Q(T*n);ga=Q(E+Q(t+Q(ea+fa)));N[a+4>>2]=ga;s=Q(s*S);k=Q(x*k);ha=Q(T*j);ia=Q(r+Q(s+Q(k+ha)));N[a>>2]=ia;h=(h<<5)+ka|0;e=P(e&7,24)+159520|0;g=h+(J[e>>2]<<3)|0;N[a+12>>2]=N[g>>2];na=N[g+4>>2];V=o;o=Q(U*I);N[a+28>>2]=F+Q(G+Q(V+o));n=Q(U*n);N[a+24>>2]=E+Q(t+Q(ea+n));V=k;k=Q(U*j);N[a+20>>2]=r+Q(s+Q(V+k));N[a+16>>2]=na;g=h+(J[e+4>>2]<<3)|0;N[a+32>>2]=N[g>>2];I=N[g+4>>2];c=c+1|0;j=Q(aa*Q(c|0));z=Q(z*j);o=Q(F+Q(G+Q(z+o)));N[a+48>>2]=o;y=Q(y*j);n=Q(E+Q(t+Q(y+n)));N[a+44>>2]=n;x=Q(x*j);j=Q(r+Q(s+Q(x+k)));N[a+40>>2]=j;N[a+36>>2]=I;g=h+(J[e+8>>2]<<3)|0;N[a+52>>2]=N[g>>2];k=N[g+4>>2];N[a+68>>2]=o;N[a+64>>2]=n;N[a+60>>2]=j;N[a+56>>2]=k;g=h+(J[e+12>>2]<<3)|0;N[a+72>>2]=N[g>>2];j=N[g+4>>2];N[a+88>>2]=F+Q(G+Q(z+ca));N[a+84>>2]=E+Q(t+Q(y+fa));N[a+80>>2]=r+Q(s+Q(x+ha));N[a+76>>2]=j;g=h+(J[e+16>>2]<<3)|0;N[a+92>>2]=N[g>>2];r=N[g+4>>2];N[a+108>>2]=da;N[a+104>>2]=ga;N[a+100>>2]=ia;N[a+96>>2]=r;e=h+(J[e+20>>2]<<3)|0;N[a+112>>2]=N[e>>2];N[a+116>>2]=N[e+4>>2];a=a+120|0}if((c|0)<(ma|0)){continue}break}if((m|0)<(w|0)){continue}break}}l=l+4|0;if((ja|0)!=(l|0)){continue}break i}break}J[u>>2]=(g-J[b+44>>2]|0)/120;dj(4,88458,11500,u);a=J[b+48>>2]}Ui=u+16|0;break g}Z(12664,55417,190,84789);B()}J[b+52>>2]=a;a=J[b+40>>2];if(L[a+20>>1]>2]){Vu(W,a)}Ao(d);J[d+156>>2]=J[b+36>>2];a=Rs(J[b+40>>2]);J[d+240>>2]=1;J[d+144>>2]=a;J[d+308>>2]=(O-J[b+44>>2]|0)/20;J[d+312>>2]=(J[b+52>>2]-O|0)/20;a=J[q+148>>2];if(!a){a=J[J[q+156>>2]+24>>2]}J[d+172>>2]=J[a>>2];a=J[A+80>>2];b=J[a+4>>2];J[d+176>>2]=J[a>>2];J[d+180>>2]=b;a=J[q+144>>2];if(a){np(d,a)}a=J[J[Y+4>>2]+16>>2];if(a>>>0>=5){break b}H[d+320|0]=K[d+320|0]|1;a=a<<2;J[d+252>>2]=J[a+159732>>2];J[d+248>>2]=J[a+159712>>2];Bo(W,d)}Ui=p+80|0;return}Z(75320,42414,694,53766);B()}Z(144782,53895,514,59583);B()}J[p+32>>2]=a;dj(4,88458,155274,p+32|0);Z(114101,42414,750,53766);B()}Z(145396,53895,487,84789);B()}function tA(a,b,c){var d=0,e=0,f=0,g=0,h=0,i=0,j=0,k=0,l=0,m=0,n=0,o=0,p=0,q=0,r=0,s=0,t=0,u=0,v=0,w=0;g=Ui-48|0;Ui=g;J[g+12>>2]=0;b=Qk(a,b,g+32|0,48);a:{if(b){b=b-15616|0;break a}b=J[a>>2];J[g+24>>2]=0;J[g+16>>2]=0;J[g+20>>2]=0;k=b+J[g+32>>2]|0;e=g+36|0;b=Hw(a,k,e,g+16|0);b:{if(!b){b=-15488;d=-46;c:{if(!e){break c}d:{e:{switch(J[e+4>>2]-5|0){case 4:if(Wj(158850,J[e+8>>2],9)){break c}e=266688;break d;case 2:if(Wj(158801,J[e+8>>2],7)){break c}e=266708;break d;case 0:break e;default:break c}}if(Wj(154472,J[e+8>>2],5)){break c}e=266728}J[g+12>>2]=J[e+16>>2];d=0}if(d){break a}if(J[g+12>>2]!=1){break b}b=-14976;f:{switch(J[g+16>>2]){case 0:case 5:break f;default:break a}}if(!J[g+20>>2]){break b}break a}b=b-14976|0;if(b){break a}}b=eI(a,k,g+32|0);if(b){b=b-15104|0;break a}if((J[a>>2]+J[g+32>>2]|0)!=(k|0)){b=-15206;break a}b=J[g+12>>2]-1|0;if(b>>>0<=3){b=J[(b<<2)+267804>>2]}else{b=0}if(!b){b=-15488;break a}b=sA(c,b);if(b){break a}g:{b=J[g+12>>2];h:{i:{if((b|0)==1){b=cA(a,k,J[c+4>>2]);break i}if((b&-2)!=2){b=-15488;break h}l=J[c+4>>2];d=Ui-256|0;Ui=d;j:{k:{l:{f=g+16|0;m:{if(J[f>>2]==6){e=-46;n:{if(!f){break n}o:{p:{q:{r:{s:{switch(J[f+4>>2]-5|0){case 3:b=J[f+8>>2];if((K[b|0]|K[b+1|0]<<8|(K[b+2|0]<<16|K[b+3|0]<<24))!=-834107862|(K[b+4|0]|K[b+5|0]<<8|(K[b+6|0]<<16|K[b+7|0]<<24))!=16843581){break r}b=266768;break o;case 4:break p;case 0:break s;default:break n}}f=J[f+8>>2];if(Wj(175600,f,5)){break q}b=266788;break o}if((K[b|0]|K[b+1|0]<<8|(K[b+2|0]<<16|K[b+3|0]<<24))!=-834107862|(K[b+4|0]|K[b+5|0]<<8|(K[b+6|0]<<16|K[b+7|0]<<24))!=117506877){break n}b=266808;break o}b=266828;if(!Wj(175606,f,5)){break o}b=266848;if(!Wj(175612,f,5)){break o}b=266868;if(!Wj(175618,f,5)){break o}b=266888;if(!Wj(175624,f,5)){break o}if(Wj(175630,f,5)){break n}b=266908;break o}f=J[f+8>>2];b=266928;if(!Wj(158662,f,9)){break o}b=266948;if(!Wj(154502,f,9)){break o}if(Wj(154462,f,9)){break n}b=266968}J[d+128>>2]=J[b+16>>2];e=0}if(e){e=-14848;break j}b=J[d+128>>2];break m}Cw(d);b=J[f+4>>2];e=J[f+8>>2];J[d+132>>2]=e;t:{u:{v:{f=d+132|0;b=b+e|0;e=ks(f,b,d+124|0);if(e){break v}if(J[d+124>>2]-4>>>0<4294967293){break l}i=d+128|0;e=Qk(f,b,i,48);if(e){break k}h=J[d+132>>2]+J[d+128>>2]|0;e=Qk(f,h,i,6);if(e){break k}e=-14720;if(J[d+128>>2]!=7){break k}j=J[d+132>>2];if(Wj(j,158833,7)){break k}J[d+132>>2]=j+7;j=d+4|0;e=Gw(f,h,j);if(e){break v}J[d+88>>2]=Xk(j);e=-15718;if((h|0)!=J[d+132>>2]){break k}e=Qk(f,b,i,48);if(e){break k}h=J[d+132>>2]+J[d+128>>2]|0;e=Qk(f,h,i,4);if(e){break v}e=Vm(d+16|0,J[d+132>>2],J[d+128>>2]);if(e){break v}J[d+132>>2]=J[d+132>>2]+J[d+128>>2];e=Qk(f,h,i,4);if(e){break v}e=Vm(d+28|0,J[d+132>>2],J[d+128>>2]);if(e){break v}J[d+132>>2]=J[d+132>>2]+J[d+128>>2];e=Qk(f,h,i,3);f=J[d+132>>2];if(!e){f=J[d+128>>2]+f|0;J[d+132>>2]=f}e=-15718;if((f|0)!=(h|0)){break k}e=Qk(d+132|0,b,d+128|0,4);if(e){break v}e=d+40|0;f=BA(d,e,J[d+132>>2],J[d+128>>2]);if(f){if((f|0)!=-20096|(K[J[d+132>>2]]&254)!=2){break l}if(J[d+128>>2]!=(Um(j)+1|0)){break l}if(Vm(e,J[d+132>>2]+1|0,J[d+128>>2]-1|0)){break l}if(kl(d+52|0,K[J[d+132>>2]]-2|0)){break l}e=-15616;if(kl(d- -64|0,1)){break k}}J[d+132>>2]=J[d+132>>2]+J[d+128>>2];f=d+76|0;e=Gw(d+132|0,b,f);if(e){break v}J[d+92>>2]=Xk(f);break u}e=e-15616|0;if(e){break t}}Cw(d+132|0);b=IH();w:{if(J[b>>2]){i=d+52|0;h=d+184|0;j=d+196|0;m=d- -64|0;n=d+172|0;o=d+40|0;p=d+208|0;q=d+76|0;r=d+160|0;s=d+28|0;t=d+148|0;u=d+16|0;v=d+136|0;w=d+4|0;while(1){e=d+132|0;po(e);f=js(e,J[b>>2]);if(f){break w}e=b;x:{if(J[d+88>>2]!=J[d+220>>2]|J[d+92>>2]!=J[d+224>>2]){break x}if(_j(w,v)){break x}if(_j(u,t)){break x}if(_j(s,r)){break x}if(_j(q,p)){break x}if(_j(o,n)){break x}if(_j(m,j)){break x}f=0;if((Wm(i,0)|0)!=(Wm(h,0)|0)){break x}break w}b=e+4|0;if(J[e+4>>2]){continue}break}}f=0}po(d+132|0);b=J[b>>2];J[d+128>>2]=b;e=f?f:b?0:-20096}po(d);if(e){break j}}e=J[l>>2];if(!(!e|(b|0)==(e|0))){e=-15616;break j}e=js(l,b);break j}e=-15616}po(d)}Ui=d+256|0;b=e;if(b){break h}b=J[c+4>>2];d=b+136|0;e=J[a>>2];e=BA(b,d,e,k-e|0);if(!e){e=KH(b,d)}J[a>>2]=k;b=e}if(b){break h}if(J[a>>2]==(k|0)){break g}b=-15206}if(c){a=J[c>>2];if(a){Zi[J[a+40>>2]](J[c+4>>2])}Zi[J[66509]](c,0,8)|0}break a}b=0}Ui=g+48|0;return b}function z7(a){a=a|0;var b=0,c=0,d=0,e=0,f=0,g=0,h=0,i=0,j=0;b=Ui-4608|0;Ui=b;a:{if(!ak(J[a>>2],75143,1)){J[b+4>>2]=0;J[b>>2]=75143;dj(4,95071,76649,b);break a}H[981584]=1;H[b+360|0]=1;J[b+328>>2]=25785;d=HC();J[245392]=d;c=J[a+4>>2];b:{if(!d){break b}a=J[a+8>>2];if(!a){break b}J[245434]=c;d=J[a+8>>2]-J[a+12>>2]>>4;uk(a,62032,287952);JM(a);gj(a,-2);c:{d:{if((d|0)==J[a+8>>2]-J[a+12>>2]>>4){d=J[a+8>>2]-J[a+12>>2]|0;uk(a,69784,288032);JM(a);gj(a,-2);if(d>>4!=J[a+8>>2]-J[a+12>>2]>>4){break d}break c}Z(143244,41468,477,14317);B()}Z(143244,41468,468,74251);B()}}J[245393]=c;J[245390]=J[c+8408>>2];a=J[c+8416>>2];H[981585]=0;J[245391]=a;if(!a){break a}c=J[J[a>>2]+20>>2];if(c){a=Zi[c|0](J[a+4>>2],b+1392|0)|0}else{a=-1}if(a){dj(4,95071,74928,0);break a}e:{f:{g:{h:{i:{if(!PK(J[b+1392>>2],980536)){d=J[J[b+1392>>2]+8>>2];c=J[d+32>>2];a=0;j:{if(!c){break j}d=J[d+28>>2];a=1;if(K[d+32|0]&2){break j}a=0;while(1){a=a+1|0;if((c|0)!=(a|0)){if(!(K[(d+P(a,48)|0)+32|0]&2)){continue}}break}a=a>>>0>>0}H[981585]=a;if(a){J[b+320>>2]=980536;dj(2,95071,28266,b+320|0)}if(!J[245391]){break a}c=zK(J[245390],J[71977],b+1392|0);a=J[b+1396>>2];c=c?0:a;J[245394]=c;if(c){break g}h=J[245391];i=J[245390];g=bo(bj(43210),Yi);if(!g){J[b+160>>2]=43210;dj(4,95071,148116,b+160|0);break i}j=J[71982];c=b+3584|0;cm(980536,J[71983],c,1024);a=b+368|0;d=a|4;k:{l:{if(!_k(c)){break l}J[b+304>>2]=c;dj(2,95071,146870,b+304|0);ij(a,0,1024);J[b+368>>2]=980445562;a=b+1392|0;ij(a,0,1024);f=ol(c,82700);if(f){Sl(a,1,1024,f);H[b+2415|0]=0;while(1){c=a;a=a+1|0;e=H[c|0];if((e|0)==32|e-9>>>0<5){continue}break}a=c;if(e){while(1){e=K[a+1|0];a=a+1|0;if(e){continue}break}}while(1){a=a-1|0;e=H[a|0];if((e|0)==32|e-9>>>0<5){continue}break}a=(a-c|0)+1|0;a=a>>>0>=1019?1019:a;H[hj(d,c,a)+a|0]=0;vk(f)}J[b+288>>2]=d;dj(2,95071,148913,b+288|0);if(!_k(d)){J[b+272>>2]=d;dj(2,95071,149219,b+272|0);break l}J[b+256>>2]=d;dj(2,95071,146847,b+256|0);a=b+1392|0;ep(b+368|0,a);if(!Nn(g,a,h,b+364|0)){break k}}c=b+3584|0;cm(980536,j,c,1024);m:{if(!_k(c)){break m}J[b+240>>2]=c;dj(2,95071,146870,b+240|0);ij(b+368|0,0,1024);J[b+368>>2]=980445562;a=b+1392|0;ij(a,0,1024);f=ol(c,82700);if(f){Sl(a,1,1024,f);H[b+2415|0]=0;while(1){c=a;a=a+1|0;e=H[c|0];if((e|0)==32|e-9>>>0<5){continue}break}a=c;if(e){while(1){e=K[a+1|0];a=a+1|0;if(e){continue}break}}while(1){a=a-1|0;e=H[a|0];if((e|0)==32|e-9>>>0<5){continue}break}a=(a-c|0)+1|0;a=a>>>0>=1019?1019:a;H[hj(d,c,a)+a|0]=0;vk(f)}J[b+224>>2]=d;dj(2,95071,148913,b+224|0);if(!_k(d)){J[b+208>>2]=d;dj(2,95071,149219,b+208|0);break m}J[b+192>>2]=d;dj(2,95071,146847,b+192|0);a=b+1392|0;ep(b+368|0,a);if(!Nn(g,a,h,b+364|0)){break k}}dj(2,95071,24563,0);break i}J[b+176>>2]=b+368;dj(2,95071,147570,b+176|0);a=J[b+364>>2];if(!a){break i}OM();break h}dj(4,95071,74869,0);break a}c=bo(bj(67284),Yi);if(!c){J[b+80>>2]=67284;dj(4,95071,148116,b+80|0);a=0;break h}g=J[71978];d=J[71979];a=b+3584|0;hj(a,196352,1024);e=d;f=yj(a);d=f+a|0;cm(980536,e,d,1024-f|0);n:{o:{p:{q:{if(!_k(d)){break q}J[b+144>>2]=d;dj(2,95071,146822,b+144|0);d=a;a=b+1392|0;ep(d,a);switch(Nn(c,a,h,b+368|0)+5|0){case 0:break o;case 5:break p;default:break q}}a=b+3584|0;hj(a,196352,1024);e=g;g=yj(a);d=g+a|0;cm(980536,e,d,1024-g|0);if(!_k(d)){break n}J[b+128>>2]=d;dj(2,95071,146822,b+128|0);d=a;a=b+1392|0;ep(d,a);switch(Nn(c,a,h,b+368|0)+5|0){case 0:break o;case 5:break p;default:break n}}J[b+96>>2]=b+3584;dj(2,95071,147598,b+96|0);a=J[b+368>>2];break h}J[b+112>>2]=980536;dj(4,95071,146903,b+112|0);OM()}a=0;dj(2,95071,21209,0)}d=J[71984];h=J[71982];c=b+1392|0;cm(980536,J[71983],c,1024);if(_k(c)){J[b+64>>2]=c;dj(4,95071,148568,b- -64|0);Fm(c)}c=b+1392|0;cm(980536,h,c,1024);if(_k(c)){J[b+48>>2]=c;dj(4,95071,148568,b+48|0);Fm(c)}c=b+1392|0;cm(980536,d,c,1024);if(_k(c)){J[b+32>>2]=c;dj(4,95071,148568,b+32|0);Fm(c)}if(!a){break f}c=or(i,J[71977],a,10,1);r:{if(c){c=c+21|0;if(c>>>0>21){c=97515}else{c=J[(c<<2)+223356>>2]}J[b+16>>2]=c;dj(4,95071,29276,b+16|0);break r}Mu(J[245390])}J[245394]=a}J[245395]=0;break e}J[245394]=0;dj(0,95071,36339,0);J[245395]=0;a=J[245394];if(!a){break a}}c=J[J[a>>2]+20>>2];if(c){Zi[c|0](J[a+4>>2],981580)|0}}Ui=b+4608|0;return 0}function _r(a){var b=0,c=0,d=0,e=0,f=0,g=0,h=0,i=0,j=0;b=J[a+68>>2];if(K[b+492|0]!=1){c=J[b+496>>2];J[b+500>>2]=c;J[b+504>>2]=J[c>>2]+12;e=J[a+76>>2];c=J[b+512>>2];if((e|0)!=(c|0)){J[a+76>>2]=c;J[b+512>>2]=e;i=J[a+220>>2];e=J[a+224>>2];c=J[b+520>>2];J[a+220>>2]=J[b+516>>2];J[a+224>>2]=c;J[b+516>>2]=i;J[b+520>>2]=e;b=J[a+192>>2];c=J[J[a>>2]+184>>2]&2;d=b+(c?13:5)|0;J[a+200>>2]=d;J[a+196>>2]=b+(c?11:3);J[a+188>>2]=b+(c?3:-8);b=J[a+76>>2];if(!(!b|J[a+20>>2]<2)){d=(J[b+4>>2]+d|0)-J[b+8>>2]|0}J[a+204>>2]=d;b=J[a+68>>2]}H[b+492|0]=1}f=J[b+500>>2];a:{if(f){while(1){b:{if(K[f+8|0]!=22){j=K[a+180|0];d=0;break b}j=K[a+180|0];d=0;c=J[f>>2];if(K[c|0]!=20){break b}d=1;if(J[b+504>>2]!=(c+12|0)){break b}e=J[a+76>>2];c=J[b+512>>2];if((e|0)==(c|0)){break b}J[a+76>>2]=c;J[b+512>>2]=e;i=J[a+220>>2];e=J[a+224>>2];c=J[b+520>>2];J[a+220>>2]=J[b+516>>2];J[a+224>>2]=c;J[b+516>>2]=i;J[b+520>>2]=e;c=J[a+192>>2];e=J[J[a>>2]+184>>2]&2;b=c+(e?13:5)|0;J[a+200>>2]=b;J[a+196>>2]=c+(e?11:3);J[a+188>>2]=c+(e?3:-8);c=J[a+76>>2];if(!(!c|J[a+20>>2]<2)){b=(J[c+4>>2]+b|0)-J[c+8>>2]|0}J[a+204>>2]=b}b=zG(a);if((b|0)<0){break a}c:{d:{e:{f:{g:{h:{i:{if(K[f+8|0]==20){if(b){break f}if(!J[a+36>>2]){return-28928}b=J[a+216>>2];if(!b){break c}j:{while(1){b=Zi[J[a+36>>2]](J[a+48>>2],J[a+192>>2]-b|0,b)|0;if((b|0)<=0){break j}c=J[a+216>>2];if(c>>>0>>0){return-27648}b=c-b|0;J[a+216>>2]=b;if(b){continue}break}b=J[a>>2];c=J[a+184>>2]+((J[b+184>>2]^-1)<<2&8)|0;J[a+192>>2]=c;b=J[b+184>>2]&2;f=c+(b?13:5)|0;J[a+200>>2]=f;J[a+196>>2]=c+(b?11:3);J[a+188>>2]=c+(b?3:-8);b=J[a+76>>2];if(!b){break d}if(J[a+20>>2]>1){break i}break d}if(!b){break c}break a}g=J[a+68>>2];if(b>>>0>=12){h=J[f>>2];e=J[g+504>>2];i=J[f+4>>2]-12|0;if(!i|(b|0)!=12){break h}}k:{if(!d){break k}c=J[a+76>>2];b=J[g+512>>2];if((c|0)==(b|0)){break k}J[a+76>>2]=b;J[g+512>>2]=c;e=J[a+220>>2];c=J[a+224>>2];b=J[g+520>>2];J[a+220>>2]=J[g+516>>2];J[a+224>>2]=b;J[g+516>>2]=e;J[g+520>>2]=c;b=J[a+192>>2];c=J[J[a>>2]+184>>2]&2;d=b+(c?13:5)|0;J[a+200>>2]=d;J[a+196>>2]=b+(c?11:3);J[a+188>>2]=b+(c?3:-8);b=J[a+76>>2];if(!(!b|J[a+20>>2]<2)){d=(J[b+4>>2]+d|0)-J[b+8>>2]|0}J[a+204>>2]=d}if(!J[a+36>>2]){return-28928}b=J[a+216>>2];if(!b){break c}while(1){b=Zi[J[a+36>>2]](J[a+48>>2],J[a+192>>2]-b|0,b)|0;if((b|0)<=0){break g}c=J[a+216>>2];if(c>>>0>>0){return-27648}b=c-b|0;J[a+216>>2]=b;if(b){continue}break}b=J[a>>2];c=J[a+184>>2]+((J[b+184>>2]^-1)<<2&8)|0;J[a+192>>2]=c;b=J[b+184>>2]&2;f=c+(b?13:5)|0;J[a+200>>2]=f;J[a+196>>2]=c+(b?11:3);J[a+188>>2]=c+(b?3:-8);b=J[a+76>>2];if(!b|J[a+20>>2]<=1){break d}}J[a+204>>2]=(J[b+4>>2]+f|0)-J[b+8>>2];break c}g=J[a+204>>2];c=K[h|0]|K[h+1|0]<<8|(K[h+2|0]<<16|K[h+3|0]<<24);H[g|0]=c;H[g+1|0]=c>>>8;H[g+2|0]=c>>>16;H[g+3|0]=c>>>24;c=K[h+4|0]|K[h+5|0]<<8;H[g+4|0]=c;H[g+5|0]=c>>>8;c=(e-h|0)-12|0;H[J[a+204>>2]+6|0]=c>>>16;H[J[a+204>>2]+7|0]=c>>>8;H[J[a+204>>2]+8|0]=c;c=i-c|0;b=b-12|0;c=b>>>0>c>>>0?c:b;H[J[a+204>>2]+9|0]=c>>>16;H[J[a+204>>2]+10|0]=c>>>8;H[J[a+204>>2]+11|0]=c;hj(J[a+204>>2]+12|0,e,c);J[a+212>>2]=c+12;J[a+208>>2]=K[f+8|0];b=J[a+68>>2];c=c+J[b+504>>2]|0;J[b+504>>2]=c;d=J[f+4>>2];break e}if(!b){break c}break a}hj(J[a+204>>2],J[f>>2],J[f+4>>2]);d=J[f+4>>2];J[a+212>>2]=d;J[a+208>>2]=K[f+8|0];b=J[a+68>>2];c=J[b+504>>2]+d|0;J[b+504>>2]=c}if(J[f>>2]+d>>>0<=c>>>0){c=J[f+12>>2];l:{if(c){J[b+500>>2]=c;d=J[c>>2]+12|0;break l}J[b+500>>2]=0;d=0}J[b+504>>2]=d}b=Nm(a,(j|0)==1);if(b){break a}break c}J[a+204>>2]=f}b=J[a+68>>2];f=J[b+500>>2];if(f){continue}break}}if(!J[a+36>>2]){return-28928}b=J[a+216>>2];m:{if(!b){break m}n:{while(1){b=Zi[J[a+36>>2]](J[a+48>>2],J[a+192>>2]-b|0,b)|0;if((b|0)<=0){break n}c=J[a+216>>2];if(c>>>0>>0){return-27648}b=c-b|0;J[a+216>>2]=b;if(b){continue}break}b=J[a>>2];c=J[a+184>>2]+((J[b+184>>2]^-1)<<2&8)|0;J[a+192>>2]=c;b=J[b+184>>2]&2;d=c+(b?13:5)|0;J[a+200>>2]=d;J[a+196>>2]=c+(b?11:3);J[a+188>>2]=c+(b?3:-8);b=J[a+76>>2];if(!(!b|J[a+20>>2]<2)){d=(J[b+4>>2]+d|0)-J[b+8>>2]|0}J[a+204>>2]=d;break m}if(b){break a}}e=J[a+68>>2];if(J[a+4>>2]==16){H[e+492|0]=3;return 0}H[e+492|0]=2;b=0;c=J[a+92>>2];if(!c){break a}d=J[a+88>>2];a=J[e+488>>2];Zi[c|0](d,a>>>2|0,a)}return b}function Gz(a,b,c,d,e){var f=0,g=0,h=0,i=0,j=0,k=0;g=Ui-16|0;f=J[c>>2];j=J[c+4>>2];i=J[b+4>>2];k=J[a+4>>2];h=J[b>>2];a:{if((i|0)==(k|0)&h>>>0>=M[a>>2]|i>>>0>k>>>0){if((i|0)==(j|0)&f>>>0>=h>>>0|i>>>0>>0){break a}f=J[b+12>>2];J[g+8>>2]=J[b+8>>2];J[g+12>>2]=f;f=J[b+4>>2];J[g>>2]=J[b>>2];J[g+4>>2]=f;f=J[c+12>>2];J[b+8>>2]=J[c+8>>2];J[b+12>>2]=f;f=J[c+4>>2];J[b>>2]=J[c>>2];J[b+4>>2]=f;f=J[g+12>>2];J[c+8>>2]=J[g+8>>2];J[c+12>>2]=f;f=J[g+4>>2];J[c>>2]=J[g>>2];J[c+4>>2]=f;f=J[b+4>>2];h=J[a+4>>2];if((f|0)==(h|0)&M[b>>2]>=M[a>>2]|f>>>0>h>>>0){break a}f=J[a+12>>2];J[g+8>>2]=J[a+8>>2];J[g+12>>2]=f;f=J[a+4>>2];J[g>>2]=J[a>>2];J[g+4>>2]=f;f=J[b+12>>2];J[a+8>>2]=J[b+8>>2];J[a+12>>2]=f;f=J[b+4>>2];J[a>>2]=J[b>>2];J[a+4>>2]=f;f=J[g+12>>2];J[b+8>>2]=J[g+8>>2];J[b+12>>2]=f;f=J[g+4>>2];J[b>>2]=J[g>>2];J[b+4>>2]=f;break a}if((i|0)==(j|0)&f>>>0>>0|i>>>0>j>>>0){f=J[a+12>>2];J[g+8>>2]=J[a+8>>2];J[g+12>>2]=f;f=J[a+4>>2];J[g>>2]=J[a>>2];J[g+4>>2]=f;f=J[c+12>>2];J[a+8>>2]=J[c+8>>2];J[a+12>>2]=f;f=J[c+4>>2];J[a>>2]=J[c>>2];J[a+4>>2]=f;f=J[g+12>>2];J[c+8>>2]=J[g+8>>2];J[c+12>>2]=f;f=J[g+4>>2];J[c>>2]=J[g>>2];J[c+4>>2]=f;break a}f=J[a+12>>2];J[g+8>>2]=J[a+8>>2];J[g+12>>2]=f;f=J[a+4>>2];J[g>>2]=J[a>>2];J[g+4>>2]=f;f=J[b+12>>2];J[a+8>>2]=J[b+8>>2];J[a+12>>2]=f;f=J[b+4>>2];J[a>>2]=J[b>>2];J[a+4>>2]=f;f=J[g+12>>2];J[b+8>>2]=J[g+8>>2];J[b+12>>2]=f;f=J[g+4>>2];J[b>>2]=J[g>>2];J[b+4>>2]=f;f=J[c+4>>2];h=J[b+4>>2];if((f|0)==(h|0)&M[c>>2]>=M[b>>2]|f>>>0>h>>>0){break a}f=J[b+12>>2];J[g+8>>2]=J[b+8>>2];J[g+12>>2]=f;f=J[b+4>>2];J[g>>2]=J[b>>2];J[g+4>>2]=f;f=J[c+12>>2];J[b+8>>2]=J[c+8>>2];J[b+12>>2]=f;f=J[c+4>>2];J[b>>2]=J[c>>2];J[b+4>>2]=f;f=J[g+12>>2];J[c+8>>2]=J[g+8>>2];J[c+12>>2]=f;f=J[g+4>>2];J[c>>2]=J[g>>2];J[c+4>>2]=f}f=J[d+4>>2];h=J[c+4>>2];b:{if((f|0)==(h|0)&M[d>>2]>=M[c>>2]|f>>>0>h>>>0){break b}f=J[c+12>>2];J[g+8>>2]=J[c+8>>2];J[g+12>>2]=f;f=J[c+4>>2];J[g>>2]=J[c>>2];J[g+4>>2]=f;f=J[d+12>>2];J[c+8>>2]=J[d+8>>2];J[c+12>>2]=f;f=J[d+4>>2];J[c>>2]=J[d>>2];J[c+4>>2]=f;f=J[g+12>>2];J[d+8>>2]=J[g+8>>2];J[d+12>>2]=f;f=J[g+4>>2];J[d>>2]=J[g>>2];J[d+4>>2]=f;f=J[c+4>>2];h=J[b+4>>2];if((f|0)==(h|0)&M[c>>2]>=M[b>>2]|f>>>0>h>>>0){break b}f=J[b+12>>2];J[g+8>>2]=J[b+8>>2];J[g+12>>2]=f;f=J[b+4>>2];J[g>>2]=J[b>>2];J[g+4>>2]=f;f=J[c+12>>2];J[b+8>>2]=J[c+8>>2];J[b+12>>2]=f;f=J[c+4>>2];J[b>>2]=J[c>>2];J[b+4>>2]=f;f=J[g+12>>2];J[c+8>>2]=J[g+8>>2];J[c+12>>2]=f;f=J[g+4>>2];J[c>>2]=J[g>>2];J[c+4>>2]=f;f=J[b+4>>2];h=J[a+4>>2];if((f|0)==(h|0)&M[b>>2]>=M[a>>2]|f>>>0>h>>>0){break b}f=J[a+12>>2];J[g+8>>2]=J[a+8>>2];J[g+12>>2]=f;f=J[a+4>>2];J[g>>2]=J[a>>2];J[g+4>>2]=f;f=J[b+12>>2];J[a+8>>2]=J[b+8>>2];J[a+12>>2]=f;f=J[b+4>>2];J[a>>2]=J[b>>2];J[a+4>>2]=f;f=J[g+12>>2];J[b+8>>2]=J[g+8>>2];J[b+12>>2]=f;f=J[g+4>>2];J[b>>2]=J[g>>2];J[b+4>>2]=f}f=J[e+4>>2];h=J[d+4>>2];c:{if((f|0)==(h|0)&M[e>>2]>=M[d>>2]|f>>>0>h>>>0){break c}f=J[d+12>>2];J[g+8>>2]=J[d+8>>2];J[g+12>>2]=f;f=J[d+4>>2];J[g>>2]=J[d>>2];J[g+4>>2]=f;f=J[e+12>>2];J[d+8>>2]=J[e+8>>2];J[d+12>>2]=f;f=J[e+4>>2];J[d>>2]=J[e>>2];J[d+4>>2]=f;f=J[g+12>>2];J[e+8>>2]=J[g+8>>2];J[e+12>>2]=f;f=J[g+4>>2];J[e>>2]=J[g>>2];J[e+4>>2]=f;e=J[d+4>>2];f=J[c+4>>2];if((e|0)==(f|0)&M[d>>2]>=M[c>>2]|e>>>0>f>>>0){break c}e=J[c+12>>2];J[g+8>>2]=J[c+8>>2];J[g+12>>2]=e;e=J[c+4>>2];J[g>>2]=J[c>>2];J[g+4>>2]=e;e=J[d+12>>2];J[c+8>>2]=J[d+8>>2];J[c+12>>2]=e;e=J[d+4>>2];J[c>>2]=J[d>>2];J[c+4>>2]=e;e=J[g+12>>2];J[d+8>>2]=J[g+8>>2];J[d+12>>2]=e;e=J[g+4>>2];J[d>>2]=J[g>>2];J[d+4>>2]=e;d=J[c+4>>2];e=J[b+4>>2];if((d|0)==(e|0)&M[c>>2]>=M[b>>2]|d>>>0>e>>>0){break c}d=J[b+12>>2];J[g+8>>2]=J[b+8>>2];J[g+12>>2]=d;d=J[b+4>>2];J[g>>2]=J[b>>2];J[g+4>>2]=d;d=J[c+12>>2];J[b+8>>2]=J[c+8>>2];J[b+12>>2]=d;d=J[c+4>>2];J[b>>2]=J[c>>2];J[b+4>>2]=d;d=J[g+12>>2];J[c+8>>2]=J[g+8>>2];J[c+12>>2]=d;d=J[g+4>>2];J[c>>2]=J[g>>2];J[c+4>>2]=d;c=J[b+4>>2];d=J[a+4>>2];if((c|0)==(d|0)&M[b>>2]>=M[a>>2]|c>>>0>d>>>0){break c}c=J[a+12>>2];J[g+8>>2]=J[a+8>>2];J[g+12>>2]=c;c=J[a+4>>2];J[g>>2]=J[a>>2];J[g+4>>2]=c;c=J[b+12>>2];J[a+8>>2]=J[b+8>>2];J[a+12>>2]=c;c=J[b+4>>2];J[a>>2]=J[b>>2];J[a+4>>2]=c;a=J[g+12>>2];J[b+8>>2]=J[g+8>>2];J[b+12>>2]=a;a=J[g+4>>2];J[b>>2]=J[g>>2];J[b+4>>2]=a}}function ZD(a,b){var c=0,d=0,e=Q(0),f=Q(0),g=0,h=Q(0),i=Q(0),j=Q(0),k=Q(0),l=Q(0),m=Q(0),n=Q(0),o=0,p=Q(0),q=Q(0),r=Q(0),s=Q(0),t=Q(0),u=Q(0),v=0,w=Q(0),x=Q(0),y=0,z=0,A=Q(0),C=Q(0),D=Q(0),E=Q(0),F=Q(0),G=Q(0),H=Q(0),I=Q(0),K=Q(0),L=Q(0),O=Q(0),R=Q(0),S=Q(0),T=0,U=Q(0),V=Q(0),W=Q(0),X=0,Y=0,_=0,$=0,aa=0;d=Ui-144|0;Ui=d;o=1;a:{b:{c:{d:{if(!b){break d}c=J[b+136>>2];e:{if(c&256){J[d>>2]=tj(J[b+96>>2],J[b+100>>2]);dj(3,88293,118989,d);break e}J[b+136>>2]=c|256}c=J[b+140>>2]&32767;g=J[a+1036>>2];if(c>>>0>=J[a+1040>>2]-g>>2>>>0){break a}if(J[g+(c<<2)>>2]!=(b|0)){break c}g=J[a+3128>>2];v=J[a+3132>>2]-g>>6;if(v>>>0<=c>>>0){break a}c=g+(c<<6)|0;z=J[b+136>>2];o=z>>>16|0;f:{if((o|0)==32767){e=N[b>>2];k=N[b+4>>2];i=N[b+12>>2];p=N[b+8>>2];h=N[b+40>>2];f=N[b+36>>2];j=N[b+32>>2];g=J[b+20>>2];o=J[b+16>>2];l=N[b+24>>2];J[c+60>>2]=1065353216;N[c+56>>2]=l;J[c+48>>2]=o;J[c+52>>2]=g;N[c+12>>2]=j*Q(0);N[c+28>>2]=f*Q(0);N[c+44>>2]=h*Q(0);q=Q(k+k);m=Q(e*q);l=Q(p+p);n=Q(i*l);N[c+4>>2]=j*Q(m+n);s=Q(e*l);t=Q(q*i);N[c+8>>2]=j*Q(s-t);N[c+16>>2]=f*Q(m-n);m=Q(k*l);u=i;i=Q(e+e);n=Q(u*i);N[c+24>>2]=f*Q(m+n);N[c+32>>2]=h*Q(s+t);N[c+36>>2]=h*Q(m-n);u=f;e=Q(Q(1)-Q(e*i));f=Q(p*l);N[c+20>>2]=u*Q(e-f);i=e;e=Q(k*q);N[c+40>>2]=h*Q(i-e);N[c>>2]=j*Q(Q(Q(1)-e)-f);break f}if(o>>>0>=v>>>0){break a}g=g+(o<<6)|0;if(z&512){k=N[b+32>>2];h=N[b+36>>2];f=N[b+40>>2];j=N[b+4>>2];A=N[b+8>>2];C=N[b+12>>2];e=N[b>>2];i=N[g+48>>2];p=N[g+32>>2];l=N[g>>2];q=N[g+16>>2];m=N[g+52>>2];n=N[g+36>>2];s=N[g+4>>2];t=N[g+20>>2];E=N[g+56>>2];F=N[g+40>>2];G=N[g+8>>2];H=N[g+24>>2];I=N[g+60>>2];K=N[g+44>>2];r=N[b+24>>2];L=N[g+12>>2];w=N[b+16>>2];x=N[b+20>>2];O=N[g+28>>2];N[c+60>>2]=I+Q(Q(K*r)+Q(Q(L*w)+Q(x*O)));N[c+56>>2]=E+Q(Q(F*r)+Q(Q(G*w)+Q(x*H)));N[c+52>>2]=m+Q(Q(n*r)+Q(Q(s*w)+Q(x*t)));N[c+48>>2]=i+Q(Q(p*r)+Q(Q(l*w)+Q(x*q)));r=Q(f*Q(0));D=Q(e+e);U=Q(Q(1)-Q(e*D));S=Q(j+j);V=Q(j*S);w=Q(f*Q(U-V));x=Q(A+A);W=Q(e*x);u=Q(S*C);R=Q(f*Q(W+u));j=Q(j*x);D=Q(D*C);f=Q(f*Q(j-D));N[c+44>>2]=Q(I*r)+Q(Q(K*w)+Q(Q(L*R)+Q(O*f)));N[c+40>>2]=Q(E*r)+Q(Q(F*w)+Q(Q(G*R)+Q(f*H)));N[c+36>>2]=Q(m*r)+Q(Q(n*w)+Q(Q(s*R)+Q(f*t)));N[c+32>>2]=Q(i*r)+Q(Q(p*w)+Q(Q(l*R)+Q(f*q)));f=Q(h*Q(0));j=Q(h*Q(j+D));r=Q(e*S);C=Q(C*x);e=Q(h*Q(r-C));A=Q(A*x);h=Q(h*Q(U-A));N[c+28>>2]=Q(I*f)+Q(Q(K*j)+Q(Q(L*e)+Q(O*h)));N[c+24>>2]=Q(E*f)+Q(Q(F*j)+Q(Q(G*e)+Q(h*H)));N[c+20>>2]=Q(m*f)+Q(Q(n*j)+Q(Q(s*e)+Q(h*t)));N[c+16>>2]=Q(i*f)+Q(Q(p*j)+Q(Q(l*e)+Q(h*q)));e=Q(k*Q(0));h=Q(k*Q(W-u));f=Q(k*Q(Q(Q(1)-V)-A));k=Q(k*Q(r+C));N[c+12>>2]=Q(I*e)+Q(Q(K*h)+Q(Q(L*f)+Q(O*k)));N[c+8>>2]=Q(E*e)+Q(Q(F*h)+Q(Q(G*f)+Q(k*H)));N[c+4>>2]=Q(m*e)+Q(Q(n*h)+Q(Q(s*f)+Q(k*t)));N[c>>2]=Q(i*e)+Q(Q(p*h)+Q(Q(l*f)+Q(k*q)));break f}e=N[b>>2];k=N[b+4>>2];i=N[b+12>>2];p=N[b+8>>2];h=N[b+40>>2];f=N[b+36>>2];j=N[b+32>>2];o=J[b+20>>2];v=J[b+16>>2];l=N[b+24>>2];J[d+76>>2]=1065353216;N[d+72>>2]=l;J[d+64>>2]=v;J[d+68>>2]=o;N[d+28>>2]=j*Q(0);N[d+44>>2]=f*Q(0);N[d+60>>2]=h*Q(0);q=Q(k+k);m=Q(e*q);l=Q(p+p);n=Q(i*l);N[d+20>>2]=j*Q(m+n);s=Q(e*l);t=Q(q*i);N[d+24>>2]=j*Q(s-t);N[d+32>>2]=f*Q(m-n);m=Q(k*l);u=i;i=Q(e+e);n=Q(u*i);N[d+40>>2]=f*Q(m+n);N[d+48>>2]=h*Q(s+t);N[d+52>>2]=h*Q(m-n);u=f;e=Q(Q(1)-Q(e*i));f=Q(p*l);N[d+36>>2]=u*Q(e-f);i=e;e=Q(k*q);N[d+56>>2]=h*Q(i-e);N[d+16>>2]=j*Q(Q(Q(1)-e)-f);Jp(d+80|0,g,d+16|0);N[c>>2]=N[d+80>>2];N[c+4>>2]=N[d+84>>2];N[c+8>>2]=N[d+88>>2];N[c+12>>2]=N[d+92>>2];N[c+16>>2]=N[d+96>>2];N[c+20>>2]=N[d+100>>2];N[c+24>>2]=N[d+104>>2];N[c+28>>2]=N[d+108>>2];N[c+32>>2]=N[d+112>>2];N[c+36>>2]=N[d+116>>2];N[c+40>>2]=N[d+120>>2];N[c+44>>2]=N[d+124>>2];N[c+48>>2]=N[d+128>>2];N[c+52>>2]=N[d+132>>2];N[c+56>>2]=N[d+136>>2];N[c+60>>2]=N[d+140>>2]}o=1;z=J[b+84>>2];y=J[z+4>>2];if(!y){break d}$=a+12|0;aa=b+156|0;c=0;v=0;while(1){X=J[z>>2]+P(v,96)|0;T=J[X+16>>2];Y=J[T+100>>2];g=((Y&65536)>>>16|0)+c|0;if(g>>>0>M[b+152>>2]){break b}_=J[T+36>>2];if(_){y=J[a+8>>2];J[d+84>>2]=b;J[d+80>>2]=y;J[d+88>>2]=J[(J[X+20>>2]<<2)+$>>2];y=J[T+16>>2];J[d+96>>2]=(c<<2)+aa&Y<<15>>31;J[d+92>>2]=y;o=!(Zi[_|0](d+80|0)|0)&o;y=J[z+4>>2]}c=g;v=v+1|0;if(v>>>0>>0){continue}break}}Ui=d+144|0;return o}Z(70199,38296,1746,70395);B()}Z(12526,38296,1713,18133);B()}Z(145396,53895,487,84789);B()}function $oa(a,b){a=a|0;b=b|0;var c=0,d=0,e=0,f=0,g=0,h=0,i=0,j=0,k=0;k=a+2440|0;i=a+148|0;while(1){a:{b:{if(M[a+116>>2]>=262){h=J[a+112>>2];d=J[a+96>>2];break b}$w(a);c=J[a+116>>2];if(!(c>>>0>=262|b)){return 0}if(c){h=J[a+112>>2];d=J[a+96>>2];if(c>>>0>2){break b}J[a+100>>2]=h;J[a+120>>2]=d;g=2;J[a+96>>2]=2;break a}if(J[a+104>>2]){d=K[(J[a+56>>2]+J[a+108>>2]|0)-1|0];c=J[a+5792>>2];J[a+5792>>2]=c+1;H[c+J[a+5784>>2]|0]=0;c=J[a+5792>>2];J[a+5792>>2]=c+1;H[c+J[a+5784>>2]|0]=0;c=J[a+5792>>2];J[a+5792>>2]=c+1;H[c+J[a+5784>>2]|0]=d;c=(d<<2)+i|0;I[c>>1]=L[c>>1]+1;J[a+104>>2]=0}d=J[a+108>>2];J[a+5812>>2]=d>>>0>=2?2:d;if((b|0)==4){c=J[a+92>>2];if((c|0)>=0){b=c+J[a+56>>2]|0}else{b=0}Lo(a,b,d-c|0,1);J[a+92>>2]=J[a+108>>2];e=J[a>>2];d=J[e+28>>2];zm(d);c=J[d+20>>2];b=J[e+16>>2];c=b>>>0>c>>>0?c:b;c:{if(!c){break c}hj(J[e+12>>2],J[d+16>>2],c);J[e+12>>2]=c+J[e+12>>2];J[d+16>>2]=c+J[d+16>>2];J[e+20>>2]=c+J[e+20>>2];J[e+16>>2]=J[e+16>>2]-c;b=J[d+20>>2];J[d+20>>2]=b-c;if((b|0)!=(c|0)){break c}J[d+16>>2]=J[d+8>>2]}return(J[J[a>>2]+16>>2]?3:2)|0}d:{if(!J[a+5792>>2]){break d}c=J[a+92>>2];if((c|0)>=0){b=c+J[a+56>>2]|0}else{b=0}Lo(a,b,d-c|0,0);J[a+92>>2]=J[a+108>>2];e=J[a>>2];d=J[e+28>>2];zm(d);c=J[d+20>>2];b=J[e+16>>2];c=b>>>0>c>>>0?c:b;e:{if(!c){break e}hj(J[e+12>>2],J[d+16>>2],c);J[e+12>>2]=c+J[e+12>>2];J[d+16>>2]=c+J[d+16>>2];J[e+20>>2]=c+J[e+20>>2];J[e+16>>2]=J[e+16>>2]-c;b=J[d+20>>2];J[d+20>>2]=b-c;if((b|0)!=(c|0)){break e}J[d+16>>2]=J[d+8>>2]}if(J[J[a>>2]+16>>2]){break d}return 0}return 1}g=2;f=J[a+108>>2];c=J[a+84>>2]&(K[(f+J[a+56>>2]|0)+2|0]^J[a+72>>2]<>2]);J[a+72>>2]=c;c=J[a+68>>2]+(c<<1)|0;e=L[c>>1];I[J[a+64>>2]+((f&J[a+52>>2])<<1)>>1]=e;I[c>>1]=f;J[a+100>>2]=h;J[a+120>>2]=d;J[a+96>>2]=2;if(!e){break a}f:{if(J[a+44>>2]-262>>>0>>0|M[a+128>>2]<=d>>>0){break f}g=FI(a,e);J[a+96>>2]=g;if(g>>>0>5){break f}if(J[a+136>>2]!=1){if((g|0)!=3){break f}g=3;if(J[a+108>>2]-J[a+112>>2]>>>0<4097){break f}}g=2;J[a+96>>2]=2}d=J[a+120>>2]}if(!(d>>>0<3|d>>>0>>0)){c=J[a+5792>>2];J[a+5792>>2]=c+1;f=J[a+116>>2];e=J[a+108>>2];h=e+(J[a+100>>2]^-1)|0;H[c+J[a+5784>>2]|0]=h;c=J[a+5792>>2];J[a+5792>>2]=c+1;H[c+J[a+5784>>2]|0]=h>>>8;c=J[a+5792>>2];J[a+5792>>2]=c+1;j=c+J[a+5784>>2]|0;c=d-3|0;H[j|0]=c;c=((K[(c&255)+194128|0]<<2)+i|0)+1028|0;I[c>>1]=L[c>>1]+1;c=h-1&65535;c=(K[(c>>>0<256?c:(c>>>7|0)+256|0)+193616|0]<<2)+k|0;I[c>>1]=L[c>>1]+1;c=J[a+120>>2];g=c-2|0;J[a+120>>2]=g;J[a+116>>2]=(J[a+116>>2]-c|0)+1;j=(e+f|0)-3|0;d=J[a+108>>2];h=J[a+5796>>2];f=J[a+5792>>2];while(1){c=d;d=c+1|0;J[a+108>>2]=d;if(d>>>0<=j>>>0){e=J[a+84>>2]&(K[(c+J[a+56>>2]|0)+3|0]^J[a+72>>2]<>2]);J[a+72>>2]=e;e=J[a+68>>2]+(e<<1)|0;I[J[a+64>>2]+((J[a+52>>2]&d)<<1)>>1]=L[e>>1];I[e>>1]=d}g=g-1|0;J[a+120>>2]=g;if(g){continue}break}J[a+96>>2]=2;J[a+104>>2]=0;c=c+2|0;J[a+108>>2]=c;if((f|0)!=(h|0)){continue}e=J[a+92>>2];if((e|0)>=0){d=e+J[a+56>>2]|0}else{d=0}Lo(a,d,c-e|0,0);J[a+92>>2]=J[a+108>>2];f=J[a>>2];e=J[f+28>>2];zm(e);d=J[e+20>>2];c=J[f+16>>2];d=c>>>0>d>>>0?d:c;g:{if(!d){break g}hj(J[f+12>>2],J[e+16>>2],d);J[f+12>>2]=d+J[f+12>>2];J[e+16>>2]=d+J[e+16>>2];J[f+20>>2]=d+J[f+20>>2];J[f+16>>2]=J[f+16>>2]-d;c=J[e+20>>2];J[e+20>>2]=c-d;if((c|0)!=(d|0)){break g}J[e+16>>2]=J[e+8>>2]}if(J[J[a>>2]+16>>2]){continue}return 0}if(J[a+104>>2]){d=K[(J[a+56>>2]+J[a+108>>2]|0)-1|0];c=J[a+5792>>2];J[a+5792>>2]=c+1;H[c+J[a+5784>>2]|0]=0;c=J[a+5792>>2];J[a+5792>>2]=c+1;H[c+J[a+5784>>2]|0]=0;c=J[a+5792>>2];J[a+5792>>2]=c+1;H[c+J[a+5784>>2]|0]=d;c=(d<<2)+i|0;I[c>>1]=L[c>>1]+1;h:{if(J[a+5792>>2]!=J[a+5796>>2]){break h}d=J[a+92>>2];if((d|0)>=0){c=d+J[a+56>>2]|0}else{c=0}Lo(a,c,J[a+108>>2]-d|0,0);J[a+92>>2]=J[a+108>>2];f=J[a>>2];e=J[f+28>>2];zm(e);d=J[e+20>>2];c=J[f+16>>2];d=c>>>0>d>>>0?d:c;if(!d){break h}hj(J[f+12>>2],J[e+16>>2],d);J[f+12>>2]=d+J[f+12>>2];J[e+16>>2]=d+J[e+16>>2];J[f+20>>2]=d+J[f+20>>2];J[f+16>>2]=J[f+16>>2]-d;c=J[e+20>>2];J[e+20>>2]=c-d;if((c|0)!=(d|0)){break h}J[e+16>>2]=J[e+8>>2]}J[a+108>>2]=J[a+108>>2]+1;J[a+116>>2]=J[a+116>>2]-1;if(J[J[a>>2]+16>>2]){continue}}else{J[a+104>>2]=1;J[a+108>>2]=J[a+108>>2]+1;J[a+116>>2]=J[a+116>>2]-1;continue}break}return 0}function dw(a,b){var c=0,d=0,e=0,f=0,g=0,h=0,i=0,j=0,k=0,l=0,m=0,n=0,o=0,p=0;n=Ui-16|0;Ui=n;J[a+52>>2]=0;c=J[a+40>>2];a:{if((c|0)>0){while(1){f=J[J[a+32>>2]+(h<<2)>>2];J[a+56>>2]=f;if((f|0)!=-1){if(!((f|0)>2]&(f|0)>=0)){Z(2361,55750,166,99541);B()}j=J[a+4>>2]+P(f,36)|0;e=Ui-1040|0;Ui=e;J[e+1036>>2]=256;i=e+8|0;J[e+4>>2]=i;J[e+8>>2]=J[a>>2];l=(f|0)<0;c=i;d=1;while(1){b:{d=d-1|0;J[e+1032>>2]=d;k=J[(d<<2)+c>>2];c:{if((k|0)==-1){break c}m=J[a+4>>2];g=m+P(k,36)|0;if(N[j>>2]>N[g+8>>2]|N[j+4>>2]>N[g+12>>2]|(N[g>>2]>N[j+8>>2]|N[g+4>>2]>N[j+12>>2])){break c}if(J[g+24>>2]==-1){if((f|0)>=J[a+12>>2]|l){break a}g=J[J[g+16>>2]+16>>2];if((g|0)==J[J[(m+P(f,36)|0)+16>>2]+16>>2]&J[J[g+12>>2]+4>>2]==4){break c}c=J[a+56>>2];if((k|0)!=(c|0)){d=J[a+52>>2];if((d|0)==J[a+48>>2]){J[a+48>>2]=d<<1;c=J[a+44>>2];d=sj(P(d,24));J[a+44>>2]=d;hj(d,c,P(J[a+52>>2],12));cj(c);d=J[a+52>>2];c=J[a+56>>2]}g=J[a+44>>2]+P(d,12)|0;J[g+4>>2]=(c|0)<(k|0)?k:c;J[g>>2]=(c|0)>(k|0)?k:c;J[a+52>>2]=d+1}c=J[e+4>>2];d=J[e+1032>>2];if((d|0)>0){continue}break b}d:{if(J[e+1036>>2]!=(d|0)){break d}J[e+1036>>2]=d<<1;d=sj(d<<3);J[e+4>>2]=d;hj(d,c,J[e+1032>>2]<<2);if((c|0)==(i|0)){break d}cj(c)}c=J[e+4>>2];J[c+(J[e+1032>>2]<<2)>>2]=J[g+24>>2];d=J[e+1032>>2]+1|0;J[e+1032>>2]=d;e:{if((d|0)!=J[e+1036>>2]){break e}J[e+1036>>2]=d<<1;d=sj(d<<3);J[e+4>>2]=d;hj(d,c,J[e+1032>>2]<<2);if((c|0)==(i|0)){break e}cj(c)}c=J[e+4>>2];J[c+(J[e+1032>>2]<<2)>>2]=J[g+28>>2];d=J[e+1032>>2]+1|0;J[e+1032>>2]=d}if((d|0)>0){continue}}break}if((c|0)!=(i|0)){cj(c)}Ui=e+1040|0;c=J[a+40>>2]}h=h+1|0;if((h|0)<(c|0)){continue}break}i=J[a+52>>2]}J[a+40>>2]=0;c=J[a+44>>2];J[n+12>>2]=1614;SF(c,c+P(i,12)|0,n+12|0,i?62-(S(i)<<1)|0:0,1);f:{g:{if(J[a+52>>2]<=0){break g}h=J[a+44>>2];i=0;while(1){h:{k=P(i,12)+h|0;c=J[k>>2];if((c|0)>=0){e=J[a+12>>2];if((e|0)>(c|0)){break h}}break f}d=J[k+4>>2];if((d|0)<0|(e|0)<=(d|0)){break f}o=P(c,36);c=J[a+4>>2];g=J[(o+c|0)+16>>2];e=J[g+16>>2];j=J[e+8>>2];c=J[(c+P(d,36)|0)+16>>2];d=J[c+16>>2];l=J[d+8>>2];i:{if((j|0)==(l|0)){break i}f=J[c+20>>2];g=J[g+20>>2];c=J[l+112>>2];if(c){while(1){j:{if((j|0)!=J[c>>2]){break j}h=J[c+4>>2];m=J[h+60>>2];p=J[h+56>>2];o=J[h+52>>2];h=J[h+48>>2];if(!((h|0)!=(e|0)|(d|0)!=(o|0)|(g|0)!=(p|0))){if((f|0)==(m|0)){break i}}if((d|0)!=(h|0)|(e|0)!=(o|0)|(f|0)!=(p|0)){break j}if((g|0)==(m|0)){break i}}c=J[c+12>>2];if(c){continue}break}}if(!qV(l,j)){break i}c=J[b+68>>2];if(c){if(!(Zi[J[J[c>>2]+8>>2]](c,e,g,d,f)|0)){break i}}h=J[b+76>>2];if(!K[336092]){H[335920]=1;J[83979]=1595;J[83978]=1596;H[335800]=1;J[83949]=1597;J[83948]=1598;H[335944]=1;J[83985]=1599;J[83984]=1600;H[335824]=0;J[83955]=1595;J[83954]=1596;H[335860]=1;J[83964]=1601;J[83963]=1602;H[335980]=1;J[83994]=1603;J[83993]=1604;H[335932]=0;J[83982]=1605;J[83981]=1606;H[335884]=1;J[83970]=1605;J[83969]=1606;H[335812]=0;J[83952]=1601;J[83951]=1602;H[336004]=1;J[84e3]=1607;J[83999]=1608;H[335836]=0;J[83958]=1603;J[83957]=1604;J[83987]=1608;J[83988]=1607;J[84014]=1609;J[84015]=1610;H[336064]=1;H[335956]=0;J[83990]=1609;J[83991]=1610;J[84008]=1611;J[84009]=1612;H[336040]=1;H[335968]=0;H[335848]=0;J[83961]=1612;J[83960]=1611;H[336092]=1}k:{l:{j=J[J[e+12>>2]+4>>2];if(j>>>0<5){l=J[J[d+12>>2]+4>>2];if(l>>>0>=5){break l}c=0;l=(P(j,60)+335792|0)+P(l,12)|0;j=J[l>>2];if(!j){break k}if(K[l+8|0]==1){c=Zi[j|0](e,g,d,f,h)|0;break k}c=Zi[j|0](d,f,e,g,h)|0;break k}Z(12352,38952,85,62025);B()}Z(12309,38952,86,62025);B()}if(!c){break i}e=J[J[c+52>>2]+8>>2];d=J[J[c+48>>2]+8>>2];J[c+8>>2]=0;f=J[b+60>>2];J[c+12>>2]=f;if(f){J[f+8>>2]=c}J[b+60>>2]=c;J[c+24>>2]=0;J[c+16>>2]=e;J[c+20>>2]=c;f=J[d+112>>2];J[c+28>>2]=f;g=c+16|0;if(f){J[f+8>>2]=g}J[d+112>>2]=g;J[c+40>>2]=0;J[c+32>>2]=d;J[c+36>>2]=c;f=J[e+112>>2];J[c+44>>2]=f;c=c+32|0;if(f){J[f+8>>2]=c}J[e+112>>2]=c;c=L[d+4>>1];if(!(c&2)){J[d+144>>2]=0;I[d+4>>1]=c|2}c=L[e+4>>1];if(!(c&2)){J[e+144>>2]=0;I[e+4>>1]=c|2}J[b+64>>2]=J[b+64>>2]+1}h=J[a+44>>2];c=J[a+52>>2];while(1){i=i+1|0;if((c|0)<=(i|0)){break g}e=P(i,12)+h|0;if(J[e>>2]==J[k>>2]&J[e+4>>2]==J[k+4>>2]){continue}break}if((c|0)>(i|0)){continue}break}}Ui=n+16|0;return}}Z(2361,55750,160,83552);B()}function NT(a,b,c){var d=0,e=0,f=0,g=0,h=0,i=0,j=Q(0),k=Q(0),l=Q(0),m=Q(0),n=Q(0),o=Q(0),p=Q(0),q=Q(0),r=Q(0),s=Q(0),t=Q(0),u=Q(0),v=Q(0),w=Q(0),x=Q(0),y=Q(0),z=Q(0),A=Q(0),B=Q(0),C=Q(0),D=Q(0),E=Q(0),F=Q(0),G=Q(0),H=Q(0),I=Q(0),K=Q(0),L=Q(0),M=0;d=Ui-208|0;Ui=d;e=J[a+4>>2];H=N[e+64>>2];I=N[e+48>>2];K=N[e+32>>2];L=N[e+16>>2];E=N[e+52>>2];F=N[e+56>>2];G=N[e+60>>2];j=N[e+12>>2];k=N[e+4>>2];l=N[e+8>>2];m=N[e+28>>2];n=N[e+20>>2];o=N[e+24>>2];p=N[e+44>>2];q=N[e+36>>2];r=N[e+40>>2];f=J[e+192>>2];g=J[e+80>>2];J[d+152>>2]=J[e+76>>2];J[d+156>>2]=g;g=J[e+72>>2];J[d+144>>2]=J[e+68>>2];J[d+148>>2]=g;g=J[e+96>>2];J[d+168>>2]=J[e+92>>2];J[d+172>>2]=g;g=J[e+88>>2];J[d+160>>2]=J[e+84>>2];J[d+164>>2]=g;g=J[e+112>>2];J[d+184>>2]=J[e+108>>2];J[d+188>>2]=g;g=J[e+104>>2];J[d+176>>2]=J[e+100>>2];J[d+180>>2]=g;g=J[e+128>>2];J[d+200>>2]=J[e+124>>2];J[d+204>>2]=g;g=J[e+120>>2];J[d+192>>2]=J[e+116>>2];J[d+196>>2]=g;e=J[f+24>>2]+P(c,80)|0;s=N[e+56>>2];t=N[e+48>>2];u=N[e+52>>2];v=N[e+32>>2];w=N[e>>2];x=N[e+16>>2];y=N[e+36>>2];z=N[e+4>>2];A=N[e+20>>2];B=N[e+40>>2];C=N[e+8>>2];D=N[e+24>>2];J[d+140>>2]=0;J[d+124>>2]=0;J[d+108>>2]=0;J[d+92>>2]=0;N[d+120>>2]=Q(B*p)+Q(Q(C*q)+Q(r*D));N[d+116>>2]=Q(y*p)+Q(Q(z*q)+Q(r*A));N[d+112>>2]=Q(v*p)+Q(Q(w*q)+Q(r*x));N[d+104>>2]=Q(B*m)+Q(Q(C*n)+Q(o*D));N[d+100>>2]=Q(y*m)+Q(Q(z*n)+Q(o*A));N[d+96>>2]=Q(v*m)+Q(Q(w*n)+Q(o*x));N[d+88>>2]=Q(B*j)+Q(Q(C*k)+Q(l*D));N[d+84>>2]=Q(y*j)+Q(Q(z*k)+Q(l*A));N[d+80>>2]=Q(v*j)+Q(Q(w*k)+Q(l*x));N[d+136>>2]=G+Q(Q(p*s)+Q(Q(q*t)+Q(r*u)));N[d+132>>2]=F+Q(Q(m*s)+Q(Q(n*t)+Q(o*u)));N[d+128>>2]=E+Q(Q(j*s)+Q(Q(k*t)+Q(l*u)));Zi[J[J[b>>2]+8>>2]](b,d+80|0,d- -64|0,d+48|0);e=J[a+8>>2];f=J[e+192>>2];Zi[J[J[f>>2]+8>>2]](f,e+4|0,d+32|0,d+16|0);f=1;e=1;a:{if(N[d+64>>2]>N[d+16>>2]){break a}e=1;if(N[d+48>>2]>2]){break a}e=0}if(!(N[d+52>>2]>2]|(N[d+56>>2]>2]|N[d+72>>2]>N[d+24>>2]?f:e)|N[d+68>>2]>N[d+20>>2])){f=J[d+84>>2];e=J[a+4>>2];J[e+4>>2]=J[d+80>>2];J[e+8>>2]=f;f=J[d+92>>2];J[e+12>>2]=J[d+88>>2];J[e+16>>2]=f;f=d+96|0;g=f+8|0;i=J[g+4>>2];J[e+28>>2]=J[g>>2];J[e+32>>2]=i;g=J[d+100>>2];J[e+20>>2]=J[d+96>>2];J[e+24>>2]=g;g=d+112|0;i=g+8|0;h=J[i+4>>2];J[e+44>>2]=J[i>>2];J[e+48>>2]=h;i=J[d+116>>2];J[e+36>>2]=J[d+112>>2];J[e+40>>2]=i;i=d+128|0;h=i+8|0;M=J[h+4>>2];J[e+60>>2]=J[h>>2];J[e+64>>2]=M;h=J[d+132>>2];J[e+52>>2]=J[d+128>>2];J[e+56>>2]=h;h=J[d+84>>2];e=J[a+4>>2];J[e+68>>2]=J[d+80>>2];J[e+72>>2]=h;h=J[d+92>>2];J[e+76>>2]=J[d+88>>2];J[e+80>>2]=h;h=J[d+100>>2];J[e+84>>2]=J[d+96>>2];J[e+88>>2]=h;h=J[f+12>>2];J[e+92>>2]=J[f+8>>2];J[e+96>>2]=h;f=J[d+116>>2];J[e+100>>2]=J[d+112>>2];J[e+104>>2]=f;f=J[g+12>>2];J[e+108>>2]=J[g+8>>2];J[e+112>>2]=f;f=J[d+132>>2];J[e+116>>2]=J[d+128>>2];J[e+120>>2]=f;f=J[i+12>>2];J[e+124>>2]=J[i+8>>2];J[e+128>>2]=f;e=J[a+4>>2];g=J[e+192>>2];J[e+192>>2]=b;b=c<<2;if(!J[b+J[a+24>>2]>>2]){f=J[a+12>>2];e=Zi[J[J[f>>2]+8>>2]](f,e,J[a+8>>2],J[a+28>>2])|0;J[b+J[a+24>>2]>>2]=e;e=J[a+4>>2]}f=J[a+20>>2];Zi[J[J[f>>2]+(J[f+136>>2]==(e|0)?8:12)>>2]](f,-1,c);b=J[b+J[a+24>>2]>>2];Zi[J[J[b>>2]+8>>2]](b,J[a+4>>2],J[a+8>>2],J[a+16>>2],J[a+20>>2]);b=J[J[a+16>>2]+20>>2];b:{if(!b){break b}if(!(Zi[J[J[b>>2]+44>>2]](b)&2)){break b}b=J[J[a+16>>2]+20>>2];J[d+8>>2]=1065353216;J[d+12>>2]=0;J[d>>2]=1065353216;J[d+4>>2]=1065353216;Zi[J[J[b>>2]+48>>2]](b,d- -64|0,d+48|0,d);b=J[J[a+16>>2]+20>>2];J[d+8>>2]=1065353216;J[d+12>>2]=0;J[d>>2]=1065353216;J[d+4>>2]=1065353216;Zi[J[J[b>>2]+48>>2]](b,d+32|0,d+16|0,d)}b=J[a+4>>2];N[b+64>>2]=H;N[b+60>>2]=G;N[b+56>>2]=F;N[b+52>>2]=E;N[b+48>>2]=I;N[b+44>>2]=p;N[b+40>>2]=r;N[b+36>>2]=q;N[b+32>>2]=K;N[b+28>>2]=m;N[b+24>>2]=o;N[b+20>>2]=n;N[b+16>>2]=L;N[b+12>>2]=j;N[b+8>>2]=l;N[b+4>>2]=k;J[b+192>>2]=g;b=J[d+148>>2];a=J[a+4>>2];J[a+68>>2]=J[d+144>>2];J[a+72>>2]=b;b=J[d+156>>2];J[a+76>>2]=J[d+152>>2];J[a+80>>2]=b;b=J[d+172>>2];J[a+92>>2]=J[d+168>>2];J[a+96>>2]=b;b=J[d+164>>2];J[a+84>>2]=J[d+160>>2];J[a+88>>2]=b;b=J[d+180>>2];J[a+100>>2]=J[d+176>>2];J[a+104>>2]=b;b=J[d+188>>2];J[a+108>>2]=J[d+184>>2];J[a+112>>2]=b;b=J[d+196>>2];J[a+116>>2]=J[d+192>>2];J[a+120>>2]=b;b=J[d+204>>2];J[a+124>>2]=J[d+200>>2];J[a+128>>2]=b}Ui=d+208|0}function bp(a,b){var c=0,d=0,e=0,f=0,g=0,h=0,i=0,j=0,k=0,l=0,m=0,n=0;g=Ui-32|0;Ui=g;a:{b:{c:{e=J[a+8>>2];if(e>>>0>2]){h=J[a+16>>2];f=K[e|0];d=J[h+(f<<2)>>2];J[b>>2]=d;if((d|0)==11){break c}c=e;break b}J[b>>2]=10;break a}while(1){c=e+1|0;J[a+8>>2]=c;f=K[e+1|0];d=J[h+(f<<2)>>2];J[b>>2]=d;e=c;if((d|0)==11){continue}break}}i=c-J[a>>2]|0;J[b+4>>2]=i;d:{switch(d-10|0){case 2:J[b+4>>2]=i;J[b>>2]=12;J[b+8>>2]=48114;break a;default:J[a+8>>2]=c+1;break a;case 0:break a;case 3:break d}}e:{f:{g:{h:{i:{j:{switch(f-34|0){case 0:if(K[c|0]==34){n=h+1024|0;e=c+1|0;J[a+8>>2]=e;J[J[a+12>>2]+8>>2]=0;while(1){k:{l:{d=K[e|0];m:{if((d|0)!=92){if((d|0)==34){break l}if(d){break m}a=J[a>>2];J[b>>2]=12;J[b+4>>2]=e-a;J[b+8>>2]=56432;break a}n:{d=K[K[e+1|0]+n|0];if((d|0)!=117){if(d){break n}a=J[a>>2];J[b>>2]=12;J[b+4>>2]=e-a;J[b+8>>2]=69516;break a}i=-48;d=K[e+2|0];if((d-48&255)>>>0<10){j=-48;break k}j=-87;d=d|32;if((d-97&255)>>>0<6){break k}d=g+16|0;break f}J[a+8>>2]=e+1}c=J[a+12>>2];e=J[c+8>>2];J[c+8>>2]=e+1;H[e+J[c>>2]|0]=d;e=J[a+8>>2]+1|0;J[a+8>>2]=e;continue}J[a+8>>2]=e+1;c=J[a+12>>2];H[J[c>>2]+J[c+8>>2]|0]=0;J[b>>2]=4;a=J[a+12>>2];J[b+16>>2]=J[a+8>>2];J[b+8>>2]=J[a>>2];break a}o:{c=K[e+3|0];if((c-48&255)>>>0<10){break o}i=-87;c=c|32;if((c-97&255)>>>0<=5){break o}d=g+12|0;break f}k=-48;p:{f=K[e+4|0];if((f-48&255)>>>0<10){l=-48;break p}l=-87;f=f|32;if((f-97&255)>>>0<=5){break p}d=g+8|0;break f}q:{h=K[e+5|0];if((h-48&255)>>>0<10){break q}k=-87;h=h|32;if((h-97&255)>>>0<=5){break q}d=g+4|0;break f}d=(((((c&255)+i<<8)+((d&255)+j<<12)|0)+((f&255)+l<<4)|0)+(h&255)|0)+k|0;if((d|0)<0){break e}r:{s:{t:{if((d&63488)==55296){if(d&1024|K[e+6|0]!=92|K[e+7|0]!=117){break e}k=-48;c=K[e+8|0];if((c-48&255)>>>0<10){l=-48;break t}l=-87;c=c|32;if((c-97&255)>>>0<6){break t}d=g+16|0;break g}if(d>>>0<=127){H[g|0]=d;c=6;e=1;break r}if(d>>>0<=2047){H[g+1|0]=d&63|128;c=6;H[g|0]=d>>>6|192;e=2;break r}c=6;if(d>>>0>65535){break s}H[g+2|0]=d&63|128;H[g|0]=d>>>12|224;c=6;H[g+1|0]=d>>>6&63|128;e=3;break r}u:{f=K[e+9|0];if((f-48&255)>>>0<10){break u}k=-87;f=f|32;if((f-97&255)>>>0<=5){break u}d=g+12|0;break g}j=-48;v:{h=K[e+10|0];if((h-48&255)>>>0<10){m=-48;break v}m=-87;h=h|32;if((h-97&255)>>>0<=5){break v}d=g+8|0;break g}w:{i=K[e+11|0];if((i-48&255)>>>0<10){break w}j=-87;i=i|32;if((i-97&255)>>>0<=5){break w}d=g+4|0;break g}c=(((((f&255)+k<<8)+((c&255)+l<<12)|0)+((h&255)+m<<4)|0)+(i&255)|0)+j|0;if((c&-2147419136)!=56320){break e}d=(d<<10&1047552|c&1023)+65536|0;c=12}H[g+3|0]=d&63|128;H[g|0]=d>>>18|240;H[g+2|0]=d>>>6&63|128;H[g+1|0]=d>>>12&63|128;e=4}f=J[a+12>>2];hj(J[f>>2]+J[f+8>>2]|0,g,e);J[f+8>>2]=e+J[f+8>>2];e=J[a+8>>2]+c|0;J[a+8>>2]=e;continue}}Z(151671,82638,1154,48091);B();default:if((f-48&255)>>>0>9){break i}break;case 11:break j}}if(J[h+1344>>2]){break h}f=c;x:{y:{z:{d=K[c|0];switch(d-43|0){case 0:break x;case 2:break z;default:break y}}f=c+1|0;d=K[c+1|0]}if((d&255)==48){e=K[f+1|0];if((e&223)==88|(e-48&255)>>>0<10){break x}break h}if(d<<24>>24<58){break h}if(!It(f,57603,3)){break x}if(It(f,48243,3)){break h}}J[b+4>>2]=i;J[b>>2]=12;J[b+8>>2]=35912;break a}if(!$k(c,60828,4)){J[b+8>>2]=1;J[b>>2]=6;J[a+8>>2]=J[a+8>>2]+4;break a}if(!$k(c,62644,5)){J[b+8>>2]=0;J[b>>2]=6;J[a+8>>2]=J[a+8>>2]+5;break a}if(!$k(c,49522,4)){J[b>>2]=7;J[a+8>>2]=c+4;break a}A:{if(!J[h+1344>>2]){break A}e=1;B:{C:{D:{f=K[c|0];switch(f-43|0){case 0:break B;case 2:break D;default:break C}}f=K[c+1|0];c=c+1|0}if((f|0)==48){c=K[c+1|0];e=(c&223)==88|(c-48&255)>>>0<10;break B}e=0;if(f<<24>>24<58){break B}e=1;if(!It(c,57603,3)){break B}e=!It(c,48243,3)}if(!e){break A}c=Ui-16|0;Ui=c;J[b>>2]=5;O[b+8>>3]=mJ(J[a+8>>2],c+12|0);e=J[a+8>>2];f=J[c+12>>2];E:{if((e|0)==(f|0)){a=J[a>>2];J[b+8>>2]=35912;J[b>>2]=12;J[b+4>>2]=e-a;break E}J[a+8>>2]=f}Ui=c+16|0;break a}J[b+4>>2]=i;J[b>>2]=12;J[b+8>>2]=48114;break a}J[b>>2]=5;O[b+8>>3]=mJ(c,g+16|0);c=J[a+8>>2];e=J[g+16>>2];if((c|0)==(e|0)){a=J[a>>2];J[b+8>>2]=35912;J[b>>2]=12;J[b+4>>2]=c-a;break a}J[a+8>>2]=e;break a}J[d>>2]=-1;break e}J[d>>2]=-1}a=J[a>>2];J[b>>2]=12;J[b+4>>2]=e-a;J[b+8>>2]=69488}Ui=g+32|0}function Qt(a){var b=0,c=0,d=0,e=0,f=0,g=0;c=J[a+36>>2];H[c+5|0]=K[c+5|0]|4;a:{b:{c:{d:{switch(K[c+4|0]-5|0){case 0:J[a+36>>2]=J[c+24>>2];b=J[c+8>>2];e:{if(!b){break e}if(K[b+5|0]&3){dl(a,b);b=J[c+8>>2];if(!b){break e}}if(K[b+6|0]&8){break e}b=Zo(b,3,J[a+200>>2]);if(!b|J[b+8>>2]!=4){break e}b=J[b>>2]+16|0;d=Hk(b,107);b=Hk(b,118);if(!(d|b)){break e}e=(d|0)!=0;H[c+5|0]=K[c+5|0]&231|(((b|0)!=0)<<4|e<<3);J[c+24>>2]=J[a+44>>2];J[a+44>>2]=c;if(b?d:0){break b}if(b){break c}}b=J[c+28>>2];if(b){while(1){b=b-1|0;d=J[c+12>>2]+(b<<4)|0;f:{if(J[d+8>>2]<4){break f}d=J[d>>2];if(!(K[d+5|0]&3)){break f}dl(a,d)}if(b){continue}break}}b=-1<>2]+(b<<5)|0;e=J[b+8>>2];g:{if(e){if((e|0)<4){break g}b=J[b>>2];if(!(K[b+5|0]&3)){break g}dl(a,b);break g}if(J[b+24>>2]<4){break g}J[b+24>>2]=11}b=d-1|0;if(d){continue}break b}}while(1){d=b;b=J[c+16>>2]+(b<<5)|0;f=J[b+24>>2];e=J[b+8>>2];h:{if(!e){if((f|0)<4){break h}J[b+24>>2]=11;break h}i:{if((f|0)<4){break i}f=J[b+16>>2];if(!(K[f+5|0]&3)){break i}dl(a,f);e=J[b+8>>2]}if((e|0)<4){break h}b=J[b>>2];if(!(K[b+5|0]&3)){break h}dl(a,b)}b=d-1|0;if(d){continue}break};break a;case 1:J[a+36>>2]=J[c+8>>2];b=J[c+12>>2];if(K[b+5|0]&3){dl(a,b)}j:{if(K[c+6|0]){d=K[c+7|0];if(!d){d=0;break j}e=c+24|0;b=0;while(1){f=e+(b<<4)|0;k:{if(J[f+8>>2]<4){break k}f=J[f>>2];if(!(K[f+5|0]&3)){break k}dl(a,f);d=K[c+7|0]}b=b+1|0;if(b>>>0<(d&255)>>>0){continue}break}break j}b=J[c+16>>2];if(K[b+5|0]&3){dl(a,b)}d=K[c+7|0];if(!d){d=0;break j}e=c+20|0;b=0;while(1){f=J[e+(b<<2)>>2];if(K[f+5|0]&3){dl(a,f);d=K[c+7|0]}b=b+1|0;if(b>>>0<(d&255)>>>0){continue}break}}a=d&255;if(K[c+6|0]){return(a<<4)+24|0}return(a<<2)+20|0;case 3:J[a+36>>2]=J[c+108>>2];J[c+108>>2]=J[a+40>>2];J[a+40>>2]=c;H[c+5|0]=K[c+5|0]&251;l:{if(J[c+80>>2]<4){break l}b=J[c+72>>2];if(!(K[b+5|0]&3)){break l}dl(a,b)}e=J[c+8>>2];d=e;b=J[c+40>>2];f=J[c+20>>2];if(b>>>0<=f>>>0){while(1){g=J[b+8>>2];d=d>>>0>>0?g:d;b=b+24|0;if(f>>>0>=b>>>0){continue}break}}b=J[c+32>>2];if(e>>>0>b>>>0){while(1){m:{if(J[b+8>>2]<4){break m}f=J[b>>2];if(!(K[f+5|0]&3)){break m}dl(a,f);e=J[c+8>>2]}b=b+16|0;if(e>>>0>b>>>0){continue}break}}if(b>>>0<=d>>>0){while(1){J[b+8>>2]=0;b=b+16|0;if(d>>>0>=b>>>0){continue}break}}a=J[c+48>>2];n:{if((a|0)>2e4){break n}e=d-J[c+32>>2]|0;d=J[c+40>>2];if(!((a|0)<17|(a|0)<=(J[c+20>>2]-d|0)/24<<2)){b=a>>>1|0;o:{if(b>>>0<=178956969){a=lk(c,d,P(a,24),P(b,24));break o}a=Dl(c)}J[c+48>>2]=b;J[c+40>>2]=a;J[c+20>>2]=a+(J[c+20>>2]-d|0);J[c+36>>2]=(a+P(b,24)|0)-24}a=J[c+44>>2];if((a|0)<=e>>2|(a|0)<91){break n}_n(c,a>>>1|0)}return(P(J[c+48>>2],24)+(J[c+44>>2]<<4)|0)+120|0;case 4:J[a+36>>2]=J[c+68>>2];b=J[c+32>>2];if(b){H[b+5|0]=K[b+5|0]&252}e=J[c+40>>2];if((e|0)>0){b=0;while(1){d=J[c+8>>2]+(b<<4)|0;p:{if(J[d+8>>2]<4){break p}d=J[d>>2];if(!(K[d+5|0]&3)){break p}dl(a,d);e=J[c+40>>2]}b=b+1|0;if((e|0)>(b|0)){continue}break}}e=J[c+36>>2];if((e|0)>0){b=0;while(1){d=J[J[c+28>>2]+(b<<2)>>2];if(d){H[d+5|0]=K[d+5|0]&252;e=J[c+36>>2]}b=b+1|0;if((e|0)>(b|0)){continue}break}}e=J[c+52>>2];if((e|0)>0){b=0;while(1){d=J[J[c+16>>2]+(b<<2)>>2];if(!(!d|!(K[d+5|0]&3))){dl(a,d);e=J[c+52>>2]}b=b+1|0;if((e|0)>(b|0)){continue}break}}a=J[c+56>>2];if((a|0)>0){b=0;while(1){d=J[J[c+24>>2]+P(b,12)>>2];if(d){H[d+5|0]=K[d+5|0]&252;a=J[c+56>>2]}b=b+1|0;if((b|0)<(a|0)){continue}break}e=J[c+52>>2]}b=((P(a,12)+(J[c+40>>2]<<4)|0)+(J[c+36>>2]+(J[c+48>>2]+(J[c+44>>2]+e|0)|0)<<2)|0)+76|0;break;default:break d}}return b}f=K[c+7|0];e=-1<>2]+(b<<5)|0;e=J[b+24>>2];q:{if(J[b+8>>2]){if((e|0)<4){break q}b=J[b+16>>2];if(!(K[b+5|0]&3)){break q}dl(a,b);break q}if((e|0)<4){break q}J[b+24>>2]=11}b=d-1|0;if(d){continue}break b}}if(e&1){a=J[c+16>>2]+(b<<5)|0;if(!(J[a+8>>2]|J[a+24>>2]<4)){J[a+24>>2]=11}b=-2-e|0}if(!f){break b}while(1){a=J[c+16>>2]+(b<<5)|0;if(!(J[a+8>>2]|J[a+24>>2]<4)){J[a+24>>2]=11}d=b-1|0;a=J[c+16>>2]+(d<<5)|0;if(!(J[a+8>>2]|J[a+24>>2]<4)){J[a+24>>2]=11}b=b-2|0;if(d){continue}break}}H[c+5|0]=K[c+5|0]&251}return((J[c+28>>2]<<4)+(32<>2]==6){e=J[b>>2];break a}f=er(a,b,16);k=J[a+32>>2];if(J[f+8>>2]!=6){Tw(a,b,49651)}d=J[a+8>>2];if(d>>>0>b>>>0){while(1){e=d-16|0;l=J[e+4>>2];J[d>>2]=J[e>>2];J[d+4>>2]=l;J[d+8>>2]=J[d-8>>2];d=e;if(d>>>0>b>>>0){continue}break}d=J[a+8>>2]}if((J[a+28>>2]-d|0)<=16){d=J[a+44>>2];_n(a,(d|0)<=0?d+1|0:d<<1);d=J[a+8>>2]}J[a+8>>2]=d+16;d=J[f+4>>2];e=J[f>>2];b=J[a+32>>2]+(b-k|0)|0;J[b>>2]=e;J[b+4>>2]=d;J[b+8>>2]=J[f+8>>2]}f=J[a+32>>2];d=J[a+20>>2];J[d+12>>2]=J[a+24>>2];l=b-f|0;b:{c:{d:{if(!K[e+6|0]){k=J[e+16>>2];b=K[k+75|0];if((J[a+28>>2]-J[a+8>>2]|0)<=b<<4){d=J[a+44>>2];_n(a,(b|0)>(d|0)?d+b|0:d<<1);f=J[a+32>>2]}e=f+l|0;g=K[k+74|0];e:{if(!g){d=e+16|0;b=d+(K[k+73|0]<<4)|0;if(b>>>0>=M[a+8>>2]){break e}J[a+8>>2]=b;break e}d=J[a+8>>2];b=d-e>>4;e=b-1|0;f=K[k+73|0];if((f|0)>=(b|0)){i=f-b|0;m=i+1&7;if(m){b=0;while(1){J[d+8>>2]=0;e=e+1|0;d=d+16|0;b=b+1|0;if((m|0)!=(b|0)){continue}break}}if(i>>>0>=7){while(1){J[d+120>>2]=0;J[d+104>>2]=0;J[d+88>>2]=0;J[d+72>>2]=0;J[d+56>>2]=0;J[d+40>>2]=0;J[d+24>>2]=0;J[d+8>>2]=0;d=d+128|0;e=e+8|0;if((f|0)!=(e|0)){continue}break}}J[a+8>>2]=d;e=f}if(g&4){b=J[a+16>>2];if(M[b+68>>2]>=M[b+64>>2]){Om(a)}b=e-f|0;h=pq(a,b,1);if((b|0)>0){d=0;m=0-b<<4;while(1){i=d<<4;n=J[a+8>>2];d=d+1|0;g=Sw(a,h,d);i=i+(m+n|0)|0;n=J[i+4>>2];J[g>>2]=J[i>>2];J[g+4>>2]=n;J[g+8>>2]=J[i+8>>2];if((b|0)!=(d|0)){continue}break}}d=mu(a,h,zk(a,48363,1));J[d+8>>2]=3;O[d>>3]=b|0;d=J[a+8>>2]}f:{if(!f){break f}i=d-(e<<4)|0;b=0;if((f|0)!=1){n=f&254;m=0;while(1){g=J[a+8>>2];J[a+8>>2]=g+16;e=i+(b<<4)|0;o=J[e+4>>2];J[g>>2]=J[e>>2];J[g+4>>2]=o;J[g+8>>2]=J[e+8>>2];J[e+8>>2]=0;g=J[a+8>>2];J[a+8>>2]=g+16;o=J[e+20>>2];J[g>>2]=J[e+16>>2];J[g+4>>2]=o;J[g+8>>2]=J[e+24>>2];J[e+24>>2]=0;b=b+2|0;m=m+2|0;if((n|0)!=(m|0)){continue}break}}if(!(f&1)){break f}e=J[a+8>>2];J[a+8>>2]=e+16;b=i+(b<<4)|0;f=J[b+4>>2];J[e>>2]=J[b>>2];J[e+4>>2]=f;J[e+8>>2]=J[b+8>>2];J[b+8>>2]=0}if(h){b=J[a+8>>2];J[a+8>>2]=b+16;J[b+8>>2]=5;J[b>>2]=h}e=J[a+32>>2]+l|0}b=J[a+20>>2];g:{if((b|0)!=J[a+36>>2]){break g}h=J[a+48>>2];if((h|0)>=20001){break c}l=J[a+40>>2];g=h<<1;h:{if((g|1)>>>0<=178956970){b=lk(a,l,P(h,24),P(h,48));break h}b=Dl(a)}J[a+48>>2]=g;f=b;J[a+40>>2]=b;b=b+(J[a+20>>2]-l|0)|0;J[a+20>>2]=b;J[a+36>>2]=(f+P(g,24)|0)-24;if((h|0)<10001){break g}xl(a,6476,0);b=J[a+20>>2]}h=b+24|0;J[a+20>>2]=h;J[b+24>>2]=d;J[b+28>>2]=e;J[a+12>>2]=d;e=(K[k+75|0]<<4)+d|0;J[b+32>>2]=e;f=J[k+12>>2];J[a+24>>2]=f;J[b+40>>2]=c;c=0;J[b+44>>2]=0;d=J[a+8>>2];if(e>>>0>d>>>0){while(1){J[d+8>>2]=0;d=d+16|0;if(e>>>0>d>>>0){continue}break}}J[a+8>>2]=e;if(!(H[a+56|0]&1)){break d}d=f+4|0;J[a+24>>2]=d;f=J[a+68>>2];if(!(!f|!K[a+57|0])){b=J[a+32>>2];J[j+32>>2]=-1;J[j+12>>2]=0;J[j+108>>2]=(h-J[a+40>>2]|0)/24;d=e-b|0;if((J[a+28>>2]-e|0)<=320){b=J[a+44>>2];_n(a,(b|0)<20?b+20|0:b<<1);h=J[a+20>>2];e=J[a+8>>2]}J[h+8>>2]=e+320;H[a+57|0]=0;Zi[f|0](a,j+12|0);H[a+57|0]=1;b=d+J[a+32>>2]|0;J[J[a+20>>2]+8>>2]=b;J[a+8>>2]=b;d=J[a+24>>2]}J[a+24>>2]=d-4;break d}if((J[a+28>>2]-J[a+8>>2]|0)<=320){b=J[a+44>>2];_n(a,(b|0)<20?b+20|0:b<<1);d=J[a+20>>2]}i:{if(J[a+36>>2]!=(d|0)){break i}e=J[a+48>>2];if((e|0)>=20001){break b}d=J[a+40>>2];f=e<<1;j:{if((f|1)>>>0<=178956970){b=lk(a,d,P(e,24),P(e,48));break j}b=Dl(a)}J[a+48>>2]=f;J[a+40>>2]=b;d=b+(J[a+20>>2]-d|0)|0;J[a+20>>2]=d;J[a+36>>2]=(b+P(f,24)|0)-24;if((e|0)<10001){break i}xl(a,6476,0);d=J[a+20>>2]}e=d+24|0;J[a+20>>2]=e;f=J[a+32>>2];b=f+l|0;J[d+28>>2]=b;b=b+16|0;J[d+24>>2]=b;J[a+12>>2]=b;b=J[a+8>>2];J[d+40>>2]=c;c=b+320|0;J[d+32>>2]=c;k:{if(!(H[a+56|0]&1)){break k}d=J[a+68>>2];if(!d|!K[a+57|0]){break k}J[j+32>>2]=-1;J[j+12>>2]=0;J[j+108>>2]=(e-J[a+40>>2]|0)/24;h=b-f|0;if((J[a+28>>2]-b|0)<=320){b=J[a+44>>2];_n(a,(b|0)<20?b+20|0:b<<1);e=J[a+20>>2];b=J[a+8>>2]}J[e+8>>2]=b+320;H[a+57|0]=0;Zi[d|0](a,j+12|0);H[a+57|0]=1;e=J[a+20>>2];b=J[a+32>>2];J[e+8>>2]=b+(c-f|0);J[a+8>>2]=b+h}b=Zi[J[J[J[e+4>>2]>>2]+16>>2]](a)|0;if((b|0)<0){c=2;break d}XA(a,J[a+8>>2]-(b<<4)|0);c=1}Ui=j+112|0;return c}al(a,5);B()}al(a,5);B()}function rU(a,b,c){var d=0,e=0,f=0,g=0,h=0,i=0,j=0;d=Ui-16|0;Ui=d;h=1;a:{b:{switch((b-a|0)/12|0){case 2:b=b-12|0;if(!(Zi[J[c>>2]](b,a)|0)){break a}J[d+8>>2]=J[a+8>>2];c=J[a+4>>2];J[d>>2]=J[a>>2];J[d+4>>2]=c;J[a+8>>2]=J[b+8>>2];c=J[b+4>>2];J[a>>2]=J[b>>2];J[a+4>>2]=c;J[b+8>>2]=J[d+8>>2];a=J[d+4>>2];J[b>>2]=J[d>>2];J[b+4>>2]=a;break a;case 3:e=a+12|0;g=Zi[J[c>>2]](e,a)|0;b=b-12|0;f=Zi[J[c>>2]](b,e)|0;if(!g){if(!f){break a}J[d+8>>2]=J[e+8>>2];f=J[e+4>>2];J[d>>2]=J[e>>2];J[d+4>>2]=f;J[e+8>>2]=J[b+8>>2];f=J[b+4>>2];J[e>>2]=J[b>>2];J[e+4>>2]=f;J[b+8>>2]=J[d+8>>2];f=J[d+4>>2];J[b>>2]=J[d>>2];J[b+4>>2]=f;if(!(Zi[J[c>>2]](e,a)|0)){break a}J[d+8>>2]=J[a+8>>2];b=J[a+4>>2];J[d>>2]=J[a>>2];J[d+4>>2]=b;J[a+8>>2]=J[e+8>>2];b=J[e+4>>2];J[a>>2]=J[e>>2];J[a+4>>2]=b;J[e+8>>2]=J[d+8>>2];a=J[d+4>>2];J[e>>2]=J[d>>2];J[e+4>>2]=a;break a}if(f){J[d+8>>2]=J[a+8>>2];c=J[a+4>>2];J[d>>2]=J[a>>2];J[d+4>>2]=c;J[a+8>>2]=J[b+8>>2];c=J[b+4>>2];J[a>>2]=J[b>>2];J[a+4>>2]=c;J[b+8>>2]=J[d+8>>2];a=J[d+4>>2];J[b>>2]=J[d>>2];J[b+4>>2]=a;break a}J[d+8>>2]=J[a+8>>2];f=J[a+4>>2];J[d>>2]=J[a>>2];J[d+4>>2]=f;J[a+8>>2]=J[e+8>>2];f=J[e+4>>2];J[a>>2]=J[e>>2];J[a+4>>2]=f;J[e+8>>2]=J[d+8>>2];a=J[d+4>>2];J[e>>2]=J[d>>2];J[e+4>>2]=a;if(!(Zi[J[c>>2]](b,e)|0)){break a}J[d+8>>2]=J[e+8>>2];a=J[e+4>>2];J[d>>2]=J[e>>2];J[d+4>>2]=a;J[e+8>>2]=J[b+8>>2];a=J[b+4>>2];J[e>>2]=J[b>>2];J[e+4>>2]=a;J[b+8>>2]=J[d+8>>2];a=J[d+4>>2];J[b>>2]=J[d>>2];J[b+4>>2]=a;break a;case 4:aw(a,a+12|0,a+24|0,b-12|0,c);break a;case 5:e=a+12|0;f=a+24|0;g=a+36|0;aw(a,e,f,g,c);b=b-12|0;if(!(Zi[J[c>>2]](b,g)|0)){break a}J[d+8>>2]=J[g+8>>2];i=J[g+4>>2];J[d>>2]=J[g>>2];J[d+4>>2]=i;J[g+8>>2]=J[b+8>>2];i=J[b+4>>2];J[g>>2]=J[b>>2];J[g+4>>2]=i;J[b+8>>2]=J[d+8>>2];i=J[d+4>>2];J[b>>2]=J[d>>2];J[b+4>>2]=i;if(!(Zi[J[c>>2]](g,f)|0)){break a}J[d+8>>2]=J[f+8>>2];b=J[f+4>>2];J[d>>2]=J[f>>2];J[d+4>>2]=b;J[f+8>>2]=J[g+8>>2];b=J[g+4>>2];J[f>>2]=J[g>>2];J[f+4>>2]=b;J[g+8>>2]=J[d+8>>2];b=J[d+4>>2];J[g>>2]=J[d>>2];J[g+4>>2]=b;if(!(Zi[J[c>>2]](f,e)|0)){break a}J[d+8>>2]=J[e+8>>2];b=J[e+4>>2];J[d>>2]=J[e>>2];J[d+4>>2]=b;J[e+8>>2]=J[f+8>>2];b=J[f+4>>2];J[e>>2]=J[f>>2];J[e+4>>2]=b;J[f+8>>2]=J[d+8>>2];b=J[d+4>>2];J[f>>2]=J[d>>2];J[f+4>>2]=b;if(!(Zi[J[c>>2]](e,a)|0)){break a}J[d+8>>2]=J[a+8>>2];b=J[a+4>>2];J[d>>2]=J[a>>2];J[d+4>>2]=b;J[a+8>>2]=J[e+8>>2];b=J[e+4>>2];J[a>>2]=J[e>>2];J[a+4>>2]=b;J[e+8>>2]=J[d+8>>2];a=J[d+4>>2];J[e>>2]=J[d>>2];J[e+4>>2]=a;break a;case 0:case 1:break a;default:break b}}e=a+12|0;i=Zi[J[c>>2]](e,a)|0;f=a+24|0;g=Zi[J[c>>2]](f,e)|0;c:{if(!i){if(!g){break c}J[d+8>>2]=J[e+8>>2];g=J[e+4>>2];J[d>>2]=J[e>>2];J[d+4>>2]=g;J[e+8>>2]=J[f+8>>2];g=J[f+4>>2];J[e>>2]=J[f>>2];J[e+4>>2]=g;J[f+8>>2]=J[d+8>>2];g=J[d+4>>2];J[f>>2]=J[d>>2];J[f+4>>2]=g;if(!(Zi[J[c>>2]](e,a)|0)){break c}J[d+8>>2]=J[a+8>>2];g=J[a+4>>2];J[d>>2]=J[a>>2];J[d+4>>2]=g;J[a+8>>2]=J[e+8>>2];g=J[e+4>>2];J[a>>2]=J[e>>2];J[a+4>>2]=g;J[e+8>>2]=J[d+8>>2];g=J[d+4>>2];J[e>>2]=J[d>>2];J[e+4>>2]=g;break c}if(g){J[d+8>>2]=J[a+8>>2];e=J[a+4>>2];J[d>>2]=J[a>>2];J[d+4>>2]=e;J[a+8>>2]=J[f+8>>2];e=J[f+4>>2];J[a>>2]=J[f>>2];J[a+4>>2]=e;J[f+8>>2]=J[d+8>>2];e=J[d+4>>2];J[f>>2]=J[d>>2];J[f+4>>2]=e;break c}J[d+8>>2]=J[a+8>>2];g=J[a+4>>2];J[d>>2]=J[a>>2];J[d+4>>2]=g;J[a+8>>2]=J[e+8>>2];g=J[e+4>>2];J[a>>2]=J[e>>2];J[a+4>>2]=g;J[e+8>>2]=J[d+8>>2];g=J[d+4>>2];J[e>>2]=J[d>>2];J[e+4>>2]=g;if(!(Zi[J[c>>2]](f,e)|0)){break c}J[d+8>>2]=J[e+8>>2];g=J[e+4>>2];J[d>>2]=J[e>>2];J[d+4>>2]=g;J[e+8>>2]=J[f+8>>2];g=J[f+4>>2];J[e>>2]=J[f>>2];J[e+4>>2]=g;J[f+8>>2]=J[d+8>>2];e=J[d+4>>2];J[f>>2]=J[d>>2];J[f+4>>2]=e}g=a+36|0;if((g|0)==(b|0)){break a}i=0;while(1){d:{if(!(Zi[J[c>>2]](g,f)|0)){break d}J[d+8>>2]=J[g+8>>2];h=J[g+4>>2];J[d>>2]=J[g>>2];J[d+4>>2]=h;e=g;while(1){e:{h=f;j=J[f+4>>2];J[e>>2]=J[f>>2];J[e+4>>2]=j;J[e+8>>2]=J[f+8>>2];if((a|0)==(f|0)){h=a;break e}e=h;f=e-12|0;if(Zi[J[c>>2]](d,f)|0){continue}}break}e=J[d+4>>2];J[h>>2]=J[d>>2];J[h+4>>2]=e;J[h+8>>2]=J[d+8>>2];i=i+1|0;if((i|0)!=8){break d}h=(g+12|0)==(b|0);break a}f=g;g=f+12|0;if((g|0)!=(b|0)){continue}break}h=1}Ui=d+16|0;return h}function Xsa(a,b,c,d,e){a=a|0;b=b|0;c=c|0;d=d|0;e=e|0;var f=0,g=0,h=0,i=0,j=0,k=Q(0),l=Q(0),m=Q(0),n=Q(0),o=Q(0),p=Q(0),q=Q(0),r=Q(0),s=Q(0),t=Q(0),u=Q(0),v=Q(0),w=Q(0),x=Q(0),y=Q(0),z=Q(0),A=Q(0),B=Q(0),C=Q(0),D=Q(0),E=Q(0),F=Q(0),G=Q(0),I=0,L=Q(0),M=0,O=0;f=Ui-176|0;Ui=f;g=K[a+28|0];h=g?b:c;g=g?c:b;I=J[g+192>>2];if(J[I+68>>2]!=J[a+40>>2]){M=J[a+12>>2];if((M|0)>0){while(1){O=i<<2;j=J[O+J[a+20>>2]>>2];if(j){Zi[J[J[j>>2]>>2]](j)|0;j=J[a+4>>2];Zi[J[J[j>>2]+52>>2]](j,J[J[a+20>>2]+O>>2])}i=i+1|0;if((M|0)!=(i|0)){continue}break}}PT(a,b,c)}j=J[I+64>>2];b=J[a+4>>2];c=J[a+20>>2];J[f+172>>2]=J[a+32>>2];J[f+168>>2]=c;J[f+164>>2]=e;J[f+160>>2]=d;J[f+156>>2]=b;J[f+152>>2]=h;J[f+148>>2]=g;J[f+144>>2]=245284;J[f+60>>2]=0;J[f+52>>2]=0;J[f+56>>2]=0;H[f+64|0]=1;d=J[a+12>>2];if((d|0)>0){b=0;while(1){c=J[J[a+20>>2]+(b<<2)>>2];if(c){Zi[J[J[c>>2]+16>>2]](c,f+48|0);i=0;d=J[f+52>>2];if((d|0)>0){while(1){c=J[J[f+60>>2]+(i<<2)>>2];if(J[c+1116>>2]){J[e+4>>2]=c;d=c;c=J[c+1108>>2]==J[e+136>>2];Qq(d,(c?8:72)+e|0,(c?72:8)+e|0);J[e+4>>2]=0;d=J[f+52>>2]}i=i+1|0;if((i|0)<(d|0)){continue}break}}c=J[f+60>>2];if(!(c?!c|K[f+64|0]!=1:1)){J[83765]=J[83765]+1;Zi[J[61751]](J[c-4>>2])}J[f+60>>2]=0;H[f+64|0]=1;J[f+52>>2]=0;J[f+56>>2]=0;d=J[a+12>>2]}b=b+1|0;if((d|0)>(b|0)){continue}break}}a:{b:{if(j){u=N[g+60>>2];L=N[g+52>>2];v=N[g+56>>2];w=N[h+60>>2];x=N[h+52>>2];y=N[h+56>>2];l=N[g+36>>2];m=N[g+4>>2];n=N[g+20>>2];o=N[g+40>>2];p=N[g+8>>2];q=N[g+24>>2];k=N[h+36>>2];z=N[h+4>>2];A=N[h+20>>2];B=N[h+40>>2];C=N[h+8>>2];D=N[h+24>>2];E=N[h+44>>2];r=N[g+44>>2];F=N[h+12>>2];s=N[g+12>>2];G=N[h+28>>2];t=N[g+28>>2];J[f+108>>2]=0;J[f+92>>2]=0;J[f+76>>2]=0;J[f+60>>2]=0;N[f+88>>2]=Q(E*r)+Q(Q(F*s)+Q(t*G));N[f+84>>2]=Q(B*r)+Q(Q(C*s)+Q(t*D));N[f+80>>2]=Q(k*r)+Q(Q(z*s)+Q(t*A));N[f+72>>2]=Q(E*o)+Q(Q(F*p)+Q(q*G));N[f+68>>2]=Q(B*o)+Q(Q(C*p)+Q(q*D));N[f+64>>2]=Q(k*o)+Q(Q(z*p)+Q(q*A));N[f+56>>2]=Q(E*l)+Q(Q(F*m)+Q(n*G));N[f+52>>2]=Q(B*l)+Q(Q(C*m)+Q(n*D));N[f+48>>2]=Q(k*l)+Q(Q(z*m)+Q(n*A));k=Q(-L);N[f+104>>2]=Q(Q(Q(s*k)-Q(t*v))-Q(r*u))+Q(Q(r*w)+Q(Q(s*x)+Q(t*y)));N[f+100>>2]=Q(Q(Q(p*k)-Q(q*v))-Q(o*u))+Q(Q(o*w)+Q(Q(p*x)+Q(q*y)));N[f+96>>2]=Q(Q(Q(m*k)-Q(n*v))-Q(l*u))+Q(Q(l*w)+Q(Q(m*x)+Q(n*y)));b=J[h+192>>2];Zi[J[J[b>>2]+8>>2]](b,f+48|0,f+128|0,f+112|0);b=J[f+140>>2];J[f+24>>2]=J[f+136>>2];J[f+28>>2]=b;b=J[f+124>>2];J[f+40>>2]=J[f+120>>2];J[f+44>>2]=b;b=J[f+116>>2];J[f+32>>2]=J[f+112>>2];J[f+36>>2]=b;b=J[f+132>>2];J[f+16>>2]=J[f+128>>2];J[f+20>>2]=b;Hv(J[j>>2],f+16|0,f+144|0);break b}e=0;b=J[a+12>>2];if((b|0)<=0){break a}while(1){NT(f+144|0,J[(J[I+24>>2]+P(e,80)|0)+64>>2],e);e=e+1|0;if((b|0)!=(e|0)){continue}break}}e=J[a+12>>2];if((e|0)<=0){break a}j=h+4|0;i=0;while(1){d=i<<2;c:{if(!J[d+J[a+20>>2]>>2]){break c}b=J[I+24>>2]+P(i,80)|0;c=J[b+64>>2];u=N[b+56>>2];v=N[b+48>>2];w=N[b+52>>2];x=N[b+32>>2];y=N[b>>2];k=N[b+16>>2];z=N[b+36>>2];A=N[b+4>>2];B=N[b+20>>2];C=N[b+40>>2];D=N[b+8>>2];E=N[b+24>>2];F=N[g+52>>2];G=N[g+56>>2];L=N[g+60>>2];l=N[g+12>>2];m=N[g+4>>2];n=N[g+8>>2];o=N[g+28>>2];p=N[g+20>>2];q=N[g+24>>2];r=N[g+44>>2];s=N[g+36>>2];t=N[g+40>>2];b=0;J[f+108>>2]=0;J[f+92>>2]=0;J[f+76>>2]=0;J[f+60>>2]=0;N[f+88>>2]=Q(C*r)+Q(Q(D*s)+Q(t*E));N[f+84>>2]=Q(z*r)+Q(Q(A*s)+Q(t*B));N[f+80>>2]=Q(x*r)+Q(Q(y*s)+Q(t*k));N[f+72>>2]=Q(C*o)+Q(Q(D*p)+Q(q*E));N[f+68>>2]=Q(z*o)+Q(Q(A*p)+Q(q*B));N[f+64>>2]=Q(x*o)+Q(Q(y*p)+Q(q*k));N[f+56>>2]=Q(C*l)+Q(Q(D*m)+Q(n*E));N[f+52>>2]=Q(z*l)+Q(Q(A*m)+Q(n*B));N[f+48>>2]=Q(x*l)+Q(Q(y*m)+Q(n*k));N[f+104>>2]=L+Q(Q(r*u)+Q(Q(s*v)+Q(t*w)));N[f+100>>2]=G+Q(Q(o*u)+Q(Q(p*v)+Q(q*w)));N[f+96>>2]=F+Q(Q(l*u)+Q(Q(m*v)+Q(n*w)));Zi[J[J[c>>2]+8>>2]](c,f+48|0,f+16|0,f+128|0);c=J[h+192>>2];Zi[J[J[c>>2]+8>>2]](c,j,f+112|0,f);c=0;d:{if(N[f+16>>2]>N[f>>2]){break d}c=0;if(N[f+128>>2]>2]){break d}c=1}if(!(N[f+20>>2]>N[f+4>>2])&(!(N[f+132>>2]>2])&(N[f+136>>2]>2]|N[f+24>>2]>N[f+8>>2]?b:c))){break c}b=J[d+J[a+20>>2]>>2];Zi[J[J[b>>2]>>2]](b)|0;b=J[a+4>>2];Zi[J[J[b>>2]+52>>2]](b,J[d+J[a+20>>2]>>2]);J[d+J[a+20>>2]>>2]=0}i=i+1|0;if((e|0)!=(i|0)){continue}break}}Ui=f+176|0}function pO(a,b,c){var d=0,e=0,f=0,g=0,h=0,i=0,j=0,k=0,l=0,m=0,n=0,o=0,p=0,q=0,r=0,s=0,t=0,u=0,v=0,w=0,x=0;if((a|0)!=(b|0)){o=b-a|0;l=o>>4;if((l|0)>=2){q=l-2>>>1|0;d=q;while(1){g=d;a:{if((d|0)>(q|0)){break a}f=d<<1&536870910;j=f|1;d=(j<<4)+a|0;k=f+2|0;b:{if((k|0)>=(l|0)){f=J[d>>2];e=J[d+4>>2];break b}e=J[d+4>>2];n=J[d+20>>2];f=J[d>>2];h=J[d+16>>2];m=(e|0)==(n|0)&f>>>0>>0|e>>>0>>0;d=m?d+16|0:d;j=m?k:j;k=h;h=(e|0)==(n|0)&f>>>0>h>>>0|e>>>0>n>>>0;f=h?f:k;e=h?e:n}h=(g<<4)+a|0;n=J[h>>2];p=J[h+4>>2];k=p;if((k|0)==(e|0)&f>>>0>>0|e>>>0>>0){break a}m=J[h+8>>2];t=J[h+12>>2];while(1){c:{f=d;e=J[d+4>>2];J[h>>2]=J[d>>2];J[h+4>>2]=e;e=J[d+12>>2];J[h+8>>2]=J[d+8>>2];J[h+12>>2]=e;if((j|0)>(q|0)){break c}e=j<<1;j=e|1;d=(j<<4)+a|0;h=f;u=e+2|0;d:{if((u|0)>=(l|0)){e=J[d>>2];k=J[d+4>>2];break d}r=J[d+4>>2];i=J[d+20>>2];e=J[d>>2];k=J[d+16>>2];v=(r|0)==(i|0)&e>>>0>>0|i>>>0>r>>>0;d=v?d+16|0:d;j=v?u:j;s=k;k=(i|0)==(r|0)&e>>>0>k>>>0|i>>>0>>0;e=k?e:s;k=k?r:i}if((p|0)==(k|0)&e>>>0>=n>>>0|k>>>0>p>>>0){continue}}break}J[f+8>>2]=m;J[f+12>>2]=t;J[f>>2]=n;J[f+4>>2]=p}d=g-1|0;if((g|0)>0){continue}break}}i=Ui-16|0;g=b;e:{if((g|0)==(c|0)){break e}if((l|0)<=1){while(1){d=J[g+4>>2];f=J[a+4>>2];if((d|0)==(f|0)&M[g>>2]>2]|d>>>0>>0){d=J[g+12>>2];J[i+8>>2]=J[g+8>>2];J[i+12>>2]=d;d=J[g+4>>2];J[i>>2]=J[g>>2];J[i+4>>2]=d;d=J[a+12>>2];J[g+8>>2]=J[a+8>>2];J[g+12>>2]=d;d=J[a+4>>2];J[g>>2]=J[a>>2];J[g+4>>2]=d;d=J[i+12>>2];J[a+8>>2]=J[i+8>>2];J[a+12>>2]=d;d=J[i+4>>2];J[a>>2]=J[i>>2];J[a+4>>2]=d}g=g+16|0;if((g|0)!=(c|0)){continue}break e}}t=a+32|0;n=a+16|0;u=l-2>>>1|0;v=(o|0)==32;while(1){d=J[g+4>>2];f=J[a+4>>2];f:{if((d|0)==(f|0)&M[g>>2]>=M[a>>2]|d>>>0>f>>>0){break f}d=J[g+12>>2];J[i+8>>2]=J[g+8>>2];J[i+12>>2]=d;d=J[g+4>>2];J[i>>2]=J[g>>2];J[i+4>>2]=d;d=J[a+12>>2];J[g+8>>2]=J[a+8>>2];J[g+12>>2]=d;d=J[a+4>>2];J[g>>2]=J[a>>2];J[g+4>>2]=d;d=J[i+12>>2];J[a+8>>2]=J[i+8>>2];J[a+12>>2]=d;d=J[i+4>>2];J[a>>2]=J[i>>2];J[a+4>>2]=d;f=J[a+16>>2];h=J[a+20>>2];j=1;if(v){d=n}else{e=J[t+4>>2];d=J[t>>2];k=(e|0)==(h|0)&d>>>0>f>>>0|e>>>0>h>>>0;j=k?2:1;o=d;d=(e|0)==(h|0)&d>>>0>>0|e>>>0>>0;f=d?f:o;h=d?h:e;d=k?t:n}o=J[a+4>>2];e=o;k=J[a>>2];if((e|0)==(h|0)&k>>>0>f>>>0|e>>>0>h>>>0){break f}r=J[a+8>>2];x=J[a+12>>2];f=a;while(1){g:{h=d;e=J[d+4>>2];J[f>>2]=J[d>>2];J[f+4>>2]=e;e=J[d+12>>2];J[f+8>>2]=J[d+8>>2];J[f+12>>2]=e;if((j|0)>(u|0)){break g}e=j<<1;j=e|1;d=(j<<4)+a|0;f=h;w=e+2|0;h:{if((w|0)>=(l|0)){e=J[d>>2];m=J[d+4>>2];break h}p=J[d+4>>2];q=J[d+20>>2];e=J[d>>2];m=J[d+16>>2];s=(p|0)==(q|0)&e>>>0>>0|p>>>0>>0;d=s?d+16|0:d;j=s?w:j;s=m;m=(p|0)==(q|0)&e>>>0>m>>>0|p>>>0>q>>>0;e=m?e:s;m=m?p:q}if((o|0)==(m|0)&e>>>0>=k>>>0|m>>>0>o>>>0){continue}}break}J[h+8>>2]=r;J[h+12>>2]=x;J[h>>2]=k;J[h+4>>2]=o}g=g+16|0;if((g|0)!=(c|0)){continue}break}}if((l|0)>=2){while(1){c=J[a+12>>2];J[i+8>>2]=J[a+8>>2];J[i+12>>2]=c;c=J[a+4>>2];J[i>>2]=J[a>>2];J[i+4>>2]=c;e=l;f=e-2>>>1|0;j=0;h=a;while(1){g=j<<1;c=g|1;j=(j<<4)+h|0;d=j+16|0;g=g+2|0;i:{if((g|0)>=(e|0)){j=c;break i}o=g;k=c;c=j+32|0;g=J[c>>2];j=J[d+4>>2];l=J[c+4>>2];g=(j|0)==(l|0)&g>>>0>M[d>>2]|j>>>0>>0;j=g?o:k;d=g?c:d}c=J[d+4>>2];J[h>>2]=J[d>>2];J[h+4>>2]=c;c=J[d+12>>2];J[h+8>>2]=J[d+8>>2];J[h+12>>2]=c;h=d;if((f|0)>=(j|0)){continue}break}b=b-16|0;j:{if((d|0)==(b|0)){c=J[i+4>>2];J[d>>2]=J[i>>2];J[d+4>>2]=c;c=J[i+12>>2];J[d+8>>2]=J[i+8>>2];J[d+12>>2]=c;break j}c=J[b+4>>2];J[d>>2]=J[b>>2];J[d+4>>2]=c;c=J[b+12>>2];J[d+8>>2]=J[b+8>>2];J[d+12>>2]=c;c=J[i+4>>2];J[b>>2]=J[i>>2];J[b+4>>2]=c;c=J[i+12>>2];J[b+8>>2]=J[i+8>>2];J[b+12>>2]=c;c=(d-a|0)+16>>4;if((c|0)<2){break j}h=c-2>>>1|0;f=(h<<4)+a|0;j=J[f>>2];l=J[d+4>>2];c=J[f+4>>2];g=J[d>>2];if((l|0)==(c|0)&j>>>0>=g>>>0|c>>>0>l>>>0){break j}j=J[d+8>>2];n=J[d+12>>2];while(1){k:{c=f;k=J[f+4>>2];J[d>>2]=J[f>>2];J[d+4>>2]=k;k=J[f+12>>2];J[d+8>>2]=J[f+8>>2];J[d+12>>2]=k;if(!h){break k}d=f;h=h-1>>>1|0;f=(h<<4)+a|0;k=J[f>>2];m=J[f+4>>2];if((l|0)==(m|0)&g>>>0>k>>>0|l>>>0>m>>>0){continue}}break}J[c+8>>2]=j;J[c+12>>2]=n;J[c>>2]=g;J[c+4>>2]=l}l=e-1|0;if((e|0)>2){continue}break}}}}function SQ(a,b,c,d,e,f){var g=0,h=0,i=0,j=0,k=0,l=0,m=0,n=0,o=0,p=0,q=0,r=0,s=0;h=Ui-112|0;Ui=h;a:{b:{c:{d:{i=0;e:{if(dk(c,d,J[58116],e+140|0,0)){break e}J[e+128>>2]=bj(J[J[e+140>>2]+20>>2]);J[e+132>>2]=Yi;c=J[J[e+140>>2]+28>>2];f:{g:{if(c>>>0>=17){J[h+80>>2]=f;dj(3,88458,128974,h+80|0);c=16;break g}if(!c){break f}}d=0;while(1){f=J[e+140>>2];if(M[f+28>>2]<=d>>>0){break d}i=(d<<3)+e|0;J[i>>2]=bj(J[J[f+24>>2]+(d<<2)>>2]);J[i+4>>2]=Yi;d=d+1|0;if((d|0)!=(c|0)){continue}break}}l=J[e+140>>2];n=J[l+36>>2];p=J[l+32>>2];c=J[l>>2];h:{if(!c|!K[c|0]){break h}if(wk(b,c,h+96|0)){break h}if(am(b,81707,h+92|0)){break h}if(ZB(b,J[h+96>>2],h+88|0)|J[h+88>>2]!=J[h+92>>2]){break h}b=J[h+96>>2];J[e+136>>2]=b;c=-2147483648;J[e+168>>2]=J[e+168>>2]|-2147483648;d=J[b+12>>2];f=J[b+8>>2];b=d-f>>2;i=b+n|0;J[e+148>>2]=sj(i<<2);i=i<<4;J[e+152>>2]=sj(i);J[e+156>>2]=sj(i);if((d|0)!=(f|0)){f=b>>>0<=1?1:b;d=0;while(1){i=J[e+136>>2];c=J[i+8>>2];if(J[i+12>>2]-c>>2>>>0<=d>>>0){break c}i=d<<2;J[i+J[e+148>>2]>>2]=J[c+i>>2];i=d<<4;c=i+J[e+152>>2]|0;J[c+8>>2]=0;J[c>>2]=0;J[c+4>>2]=0;c=i+J[e+156>>2]|0;J[c>>2]=0;J[c+4>>2]=0;J[c+8>>2]=0;J[c+12>>2]=0;d=d+1|0;if((f|0)!=(d|0)){continue}break}c=J[e+168>>2]&-2147483648}J[e+164>>2]=b;J[e+168>>2]=b&2147483647|c}i:{j:{k:{l:{m:{n:{if(!p){d=J[e+168>>2];break n}o:{if(K[a+17|0]==1){b=n<<2;J[e+144>>2]=sj(b);c=n<<4;J[e+152>>2]=sj(c);J[e+156>>2]=sj(c);J[e+160>>2]=sj(b);d=J[e+168>>2];break o}d=J[e+168>>2];if((d|0)<0){break o}b=n<<2;J[e+148>>2]=sj(b);c=n<<4;J[e+152>>2]=sj(c);J[e+156>>2]=sj(c);J[e+160>>2]=sj(b)}b=d&2147483647;if(n){f=e+144|0;i=e+148|0;while(1){d=J[l+36>>2];c=J[a>>2];p:{if(K[a+17|0]==1){if(d>>>0<=m>>>0){break b}d=J[l+44>>2];k=J[l+40>>2];q:{r:{s:{t:{u:{v:{w:{x:{g=J[l+32>>2]+P(m,80)|0;j=J[g>>2];switch(j|0){case 3:break u;case 2:break v;case 1:break w;case 0:break x;default:break s}}g=J[g+48>>2];if(d>>>0>>0){break r}d=UL(c,N[k+(g<<2)>>2]);break t}g=J[g+48>>2];if(d>>>0>>0){break r}d=k+(g<<2)|0;g=J[d>>2];k=J[d+4>>2];N[h+104>>2]=N[d+8>>2];J[h+96>>2]=g;J[h+100>>2]=k;d=uC(c,h+96|0);break t}g=J[g+48>>2];if(d>>>0>>0){break r}d=c;c=k+(g<<2)|0;d=tC(d,N[c>>2],N[c+4>>2]);break t}j=J[g+52>>2];g=J[g+48>>2];if(d>>>0>>0){break r}if(d>>>0<=g>>>0){break a}d=WL(c,k+(g<<2)|0,(j>>>0)/3|0)}c=f;if(!d){break q}break p}J[h>>2]=j;dj(4,88458,79825,h);break q}J[h+16>>2]=m;dj(4,88458,77357,h+16|0)}J[e+168>>2]=J[e+168>>2]&-2147483648|b&2147483647;i=0;break e}if(d>>>0<=m>>>0){break b}g=J[l+44>>2];k=J[l+40>>2];y:{z:{A:{B:{C:{d=J[l+32>>2]+P(m,80)|0;j=J[d>>2];switch(j|0){case 3:break z;case 2:break A;case 1:break B;case 0:break C;default:break m}}d=J[d+48>>2];if(g>>>0>>0){break l}d=ZL(c,N[k+(d<<2)>>2]);break y}d=J[d+48>>2];if(g>>>0>>0){break l}d=k+(d<<2)|0;g=J[d>>2];k=J[d+4>>2];N[h+104>>2]=N[d+8>>2];J[h+96>>2]=g;J[h+100>>2]=k;d=_L(c,h+96|0);break y}J[h+64>>2]=131153;dj(4,88458,31902,h- -64|0);break k}q=J[d+48>>2];d=J[d+52>>2];if(g>>>0>>0){break l}j=d<<1;d=(j>>>0)/3|0;o=nj(j>>>0>3221225471?-1:d<<2);if(j>>>0>=3){s=d>>>0<=1?1:d;d=0;while(1){r=((d&1)+q|0)+P(d>>>1|0,3)|0;if(g>>>0<=r>>>0){break a}N[(d<<2)+o>>2]=N[k+(r<<2)>>2];d=d+1|0;if((s|0)!=(d|0)){continue}break}}d=VL(c,o,(j>>>0)/6|0);cj(o)}c=i;if(!d){break j}}g=b<<2;J[g+J[c>>2]>>2]=d;c=P(m,80)+p|0;k=J[c+16>>2];j=J[c+20>>2];o=b<<4;d=o+J[e+152>>2]|0;N[d+8>>2]=N[c+24>>2];J[d>>2]=k;J[d+4>>2]=j;d=o+J[e+156>>2]|0;N[d>>2]=N[c+32>>2];N[d+4>>2]=N[c+36>>2];N[d+8>>2]=N[c+40>>2];N[d+12>>2]=N[c+44>>2];J[g+J[e+160>>2]>>2]=J[c>>2];b=b+1|0;m=m+1|0;if((n|0)!=(m|0)){continue}break}b=b&2147483647}d=J[e+168>>2]&-2147483648|b;J[e+168>>2]=d}if(!(d&2147483647)){break i}i=1;break e}J[h+32>>2]=j;dj(4,88458,79825,h+32|0);break k}J[h+48>>2]=m;dj(4,88458,77357,h+48|0)}J[e+168>>2]=J[e+168>>2]&-2147483648|b&2147483647;i=0;break e}J[e+168>>2]=J[e+168>>2]&-2147483648|b&2147483647;i=0;break e}dj(4,88458,16246,0);i=0}Ui=h+112|0;return i}Z(12664,54972,118,84789);B()}Z(145396,53895,487,84789);B()}Z(12664,54972,89,84789);B()}Z(12664,54972,97,84789);B()}function FC(a,b,c,d,e){var f=0,g=0,h=0,i=0,j=0,k=0,l=0,m=0,n=0,o=0,p=0,q=0,r=0,s=0,t=0,u=0,v=0;if(d>>>0>1073741824){J[e>>2]=-1;return 4}q=e;e=c;c=d;d=-1;a:{if(!a|(c|0)<0){break a}n=a;if(!c){if((b|0)!=1){break a}d=K[a|0]?-1:0;break a}if(!b){break a}k=c+e|0;r=k-32|0;l=b+n|0;s=l-16|0;t=k-5|0;m=k-7|0;u=l-4|0;v=l-8|0;o=k-12|0;p=l-15|0;b=n;a=e;b:{while(1){c:{c=b+1|0;d:{e:{f:{h=K[b|0];d=h>>>4|0;g:{h:{if((d|0)!=15){if(a>>>0>r>>>0|c>>>0>=s>>>0){break h}b=K[c+4|0]|K[c+5|0]<<8|(K[c+6|0]<<16|K[c+7|0]<<24);f=K[c|0]|K[c+1|0]<<8|(K[c+2|0]<<16|K[c+3|0]<<24);H[a|0]=f;H[a+1|0]=f>>>8;H[a+2|0]=f>>>16;H[a+3|0]=f>>>24;H[a+4|0]=b;H[a+5|0]=b>>>8;H[a+6|0]=b>>>16;H[a+7|0]=b>>>24;b=K[c+12|0]|K[c+13|0]<<8|(K[c+14|0]<<16|K[c+15|0]<<24);f=K[c+8|0]|K[c+9|0]<<8|(K[c+10|0]<<16|K[c+11|0]<<24);H[a+8|0]=f;H[a+9|0]=f>>>8;H[a+10|0]=f>>>16;H[a+11|0]=f>>>24;H[a+12|0]=b;H[a+13|0]=b>>>8;H[a+14|0]=b>>>16;H[a+15|0]=b>>>24;f=a+d|0;a=c+d|0;i=K[a|0]|K[a+1|0]<<8;g=f-i|0;b=a+2|0;h=h&15;if((h|0)==15){break g}if(i>>>0<8){break g}if(e>>>0>g>>>0){break d}a=K[g+4|0]|K[g+5|0]<<8|(K[g+6|0]<<16|K[g+7|0]<<24);c=K[g|0]|K[g+1|0]<<8|(K[g+2|0]<<16|K[g+3|0]<<24);H[f|0]=c;H[f+1|0]=c>>>8;H[f+2|0]=c>>>16;H[f+3|0]=c>>>24;H[f+4|0]=a;H[f+5|0]=a>>>8;H[f+6|0]=a>>>16;H[f+7|0]=a>>>24;a=K[g+12|0]|K[g+13|0]<<8|(K[g+14|0]<<16|K[g+15|0]<<24);c=K[g+8|0]|K[g+9|0]<<8|(K[g+10|0]<<16|K[g+11|0]<<24);H[f+8|0]=c;H[f+9|0]=c>>>8;H[f+10|0]=c>>>16;H[f+11|0]=c>>>24;H[f+12|0]=a;H[f+13|0]=a>>>8;H[f+14|0]=a>>>16;H[f+15|0]=a>>>24;a=K[g+16|0]|K[g+17|0]<<8;H[f+16|0]=a;H[f+17|0]=a>>>8;a=(f+h|0)+4|0;continue}d=0;if(c>>>0>=p>>>0){break b}while(1){i:{b=K[c|0];d=b+d|0;c=c+1|0;if(p>>>0<=c>>>0){break i}if((b|0)==255){continue}}break}d=d+15|0;if(d>>>0>(a^-1)>>>0|(c^-1)>>>0>>0){break b}}f=a+d|0;if(o>>>0>>0){break f}j=c+d|0;if(j>>>0>v>>>0){break f}while(1){b=K[c+4|0]|K[c+5|0]<<8|(K[c+6|0]<<16|K[c+7|0]<<24);d=K[c|0]|K[c+1|0]<<8|(K[c+2|0]<<16|K[c+3|0]<<24);H[a|0]=d;H[a+1|0]=d>>>8;H[a+2|0]=d>>>16;H[a+3|0]=d>>>24;H[a+4|0]=b;H[a+5|0]=b>>>8;H[a+6|0]=b>>>16;H[a+7|0]=b>>>24;c=c+8|0;a=a+8|0;if(f>>>0>a>>>0){continue}break}h=h&15;i=K[j|0]|K[j+1|0]<<8;g=f-i|0;b=j+2|0}a=b;d=0;if((h|0)==15){break e}b=a;break d}if((c+d|0)!=(l|0)|f>>>0>k>>>0){break b}el(a,c,d);d=f-e|0;break a}while(1){b=a+1|0;if(u>>>0<=b>>>0){break c}c=K[a|0];d=c+d|0;a=b;if((c|0)==255){continue}break}c=a;h=d+15|0;if(h>>>0>(f^-1)>>>0){break b}}if(e>>>0>g>>>0){break c}j=h+4|0;a=j+f|0;j:{if(i>>>0<=7){H[f|0]=0;H[f+1|0]=0;H[f+2|0]=0;H[f+3|0]=0;H[f|0]=K[g|0];H[f+1|0]=K[g+1|0];H[f+2|0]=K[g+2|0];H[f+3|0]=K[g+3|0];c=g;g=i<<2;c=c+J[g+185952>>2]|0;d=K[c|0]|K[c+1|0]<<8|(K[c+2|0]<<16|K[c+3|0]<<24);H[f+4|0]=d;H[f+5|0]=d>>>8;H[f+6|0]=d>>>16;H[f+7|0]=d>>>24;c=c-J[g+185984>>2]|0;break j}c=K[g+4|0]|K[g+5|0]<<8|(K[g+6|0]<<16|K[g+7|0]<<24);d=K[g|0]|K[g+1|0]<<8|(K[g+2|0]<<16|K[g+3|0]<<24);H[f|0]=d;H[f+1|0]=d>>>8;H[f+2|0]=d>>>16;H[f+3|0]=d>>>24;H[f+4|0]=c;H[f+5|0]=c>>>8;H[f+6|0]=c>>>16;H[f+7|0]=c>>>24;c=g+8|0}d=f+8|0;if(a>>>0>o>>>0){if(a>>>0>t>>>0){break c}f=c;g=d;if(m>>>0>g>>>0){while(1){h=K[f+4|0]|K[f+5|0]<<8|(K[f+6|0]<<16|K[f+7|0]<<24);i=K[f|0]|K[f+1|0]<<8|(K[f+2|0]<<16|K[f+3|0]<<24);H[g|0]=i;H[g+1|0]=i>>>8;H[g+2|0]=i>>>16;H[g+3|0]=i>>>24;H[g+4|0]=h;H[g+5|0]=h>>>8;H[g+6|0]=h>>>16;H[g+7|0]=h>>>24;f=f+8|0;g=g+8|0;if(m>>>0>g>>>0){continue}break}c=(m-d|0)+c|0;d=m}if(a>>>0<=d>>>0){continue}while(1){H[d|0]=K[c|0];c=c+1|0;d=d+1|0;if(d>>>0>>0){continue}break}continue}g=K[c+4|0]|K[c+5|0]<<8|(K[c+6|0]<<16|K[c+7|0]<<24);h=K[c|0]|K[c+1|0]<<8|(K[c+2|0]<<16|K[c+3|0]<<24);H[d|0]=h;H[d+1|0]=h>>>8;H[d+2|0]=h>>>16;H[d+3|0]=h>>>24;H[d+4|0]=g;H[d+5|0]=g>>>8;H[d+6|0]=g>>>16;H[d+7|0]=g>>>24;if(j>>>0<17){continue}d=f+16|0;while(1){f=K[c+12|0]|K[c+13|0]<<8|(K[c+14|0]<<16|K[c+15|0]<<24);g=K[c+8|0]|K[c+9|0]<<8|(K[c+10|0]<<16|K[c+11|0]<<24);H[d|0]=g;H[d+1|0]=g>>>8;H[d+2|0]=g>>>16;H[d+3|0]=g>>>24;H[d+4|0]=f;H[d+5|0]=f>>>8;H[d+6|0]=f>>>16;H[d+7|0]=f>>>24;c=c+8|0;d=d+8|0;if(d>>>0>>0){continue}break}continue}break}c=b}d=(c^-1)+n|0}J[q>>2]=d;return d>>>30&2}function ika(a){a=a|0;var b=0,c=0,d=0,e=0,f=0,g=0,h=0,i=0,j=0,k=0,l=0,m=0,n=0,o=0,p=0,q=0;d=Ui-128|0;Ui=d;a:{b:{j=J[a+80>>2];b=J[j+36>>2];c:{if((b|0)==J[j+40>>2]){io(52083,10980,b-J[j+32>>2]>>2);a=-1e3;break c}l=J[a+76>>2];e=J[l>>2];i=nj(40);b=i;J[b+8>>2]=0;J[b+12>>2]=0;J[b+4>>2]=l;J[b>>2]=j;J[b+32>>2]=0;J[b+36>>2]=0;J[b+24>>2]=0;J[b+28>>2]=0;J[b+16>>2]=0;J[b+20>>2]=0;J[b+12>>2]=J[a>>2];c=L[a+92>>1];H[b+22|0]=1;I[b+20>>1]=c;ij(d+36|0,0,84);J[d+8>>2]=512;J[d+12>>2]=128;J[d+120>>2]=0;J[d+124>>2]=0;J[d+40>>2]=256;J[d+32>>2]=128;J[d+24>>2]=8;J[d+28>>2]=4;J[d+16>>2]=32;J[d+20>>2]=32;b=J[e+80>>2];if(b>>>0>=8193){break b}J[d+48>>2]=i;J[d+8>>2]=b;J[d+28>>2]=64;b=J[e+116>>2];J[d+20>>2]=128;J[d+24>>2]=16;J[d+16>>2]=b;J[d+12>>2]=J[j+456>>2];J[d+36>>2]=J[j+440>>2];b=J[j+96>>2];J[d+100>>2]=258;J[d+44>>2]=b;J[d+116>>2]=259;J[d+112>>2]=260;J[d+108>>2]=261;J[d+104>>2]=262;J[d+96>>2]=263;J[d+92>>2]=i;J[d+88>>2]=264;J[d+84>>2]=i;J[d+80>>2]=265;J[d+76>>2]=i;J[d+72>>2]=266;J[d+68>>2]=i;J[d+64>>2]=267;J[d+60>>2]=268;J[d+56>>2]=269;J[d+52>>2]=270;J[d+124>>2]=J[j+464>>2];m=Ui-16|0;Ui=m;f=J[l+92>>2];g=J[f>>2];b=g;q=J[b+8>>2]-J[b+12>>2]>>4;c=Sj(b,456);ij(c+8|0,0,448);J[c+8>>2]=-2;J[c>>2]=-2;J[c+4>>2]=-2;d:{e:{b=J[f+44>>2];e=J[f+48>>2];if((b|0)==(e|0)){if(H[f+52|0]&1){break e}e=b;b=f+40|0;lj((e-J[b>>2]>>2)+32|0,4,b,f+48|0,f+44|0);e=J[f+48>>2];b=J[f+44>>2]}if((b|0)==(e|0)){break a}J[f+44>>2]=b+4;J[b>>2]=c;uj(g,-1);J[c>>2]=Lk(g,-1e4);Fj(g,0,0);J[c+8>>2]=Lk(g,-1e4);Fj(g,0,0);b=Lk(g,-1e4);J[c+16>>2]=0;J[c+12>>2]=f;J[c+4>>2]=b;J[c+224>>2]=J[d+44>>2];if(H[c+44|0]&1){break e}lj(J[d+8>>2],672,c+32|0,c+40|0,c+36|0);f:{b=J[d+8>>2];k=b&65535;e=L[c+24>>1];if(k>>>0>=e>>>0){n=J[c+20>>2];h=sj(k<<1);J[c+20>>2]=h;h=hj(h,n,e<<1);I[c+24>>1]=b;g:{if(e>>>0>=k>>>0){break g}o=b-e&7;h:{if(!o){b=e;break h}b=e;while(1){I[h+(b<<1)>>1]=b;b=b+1|0;p=p+1|0;if((p|0)!=(o|0)){continue}break}}if(e-k>>>0>4294967288){break g}while(1){I[h+(b<<1)>>1]=b;e=b+1|0;I[h+(e<<1)>>1]=e;e=b+2|0;I[h+(e<<1)>>1]=e;e=b+3|0;I[h+(e<<1)>>1]=e;e=b+4|0;I[h+(e<<1)>>1]=e;e=b+5|0;I[h+(e<<1)>>1]=e;e=b+6|0;I[h+(e<<1)>>1]=e;e=b+7|0;I[h+(e<<1)>>1]=e;b=b+8|0;if((k|0)!=(b|0)){continue}break}}cj(n);if(H[c+60|0]&1){break e}lj(J[d+12>>2],72,c+48|0,c+56|0,c+52|0);b=J[d+20>>2];WC(c+128|0,b<<1,b);b=J[d+16>>2];if(b){WC(c+160|0,b<<1,b)}b=J[d+24>>2];Rp(c+192|0,b<<1,b);b=J[d+28>>2];Rp(c+96|0,b<<1,b);b=J[d+32>>2];qN(c+228|0,b<<1,b);if(H[c+272|0]&1){break e}lj(J[d+36>>2],12,c+260|0,c+268|0,c+264|0);b=c+276|0;e=J[d+40>>2];kN(b,e<<1,e);if(H[c+320|0]&1){break e}lj(1,8,c+308|0,c+316|0,c+312|0);e=J[d+120>>2];J[c+356>>2]=0;J[c+352>>2]=e;e=J[d+48>>2];J[c+364>>2]=-1;J[c+368>>2]=0;J[c+360>>2]=e;J[c+376>>2]=J[f+28>>2];J[c+380>>2]=J[f+32>>2];J[c+416>>2]=J[d+100>>2];J[c+388>>2]=J[d+52>>2];J[c+392>>2]=J[d+56>>2];J[c+396>>2]=J[d+60>>2];J[c+400>>2]=J[d+64>>2];J[c+404>>2]=J[d+68>>2];J[c+408>>2]=J[d+72>>2];J[c+412>>2]=J[d+76>>2];J[c+424>>2]=J[d+80>>2];J[c+428>>2]=J[d+84>>2];J[c+432>>2]=J[d+88>>2];J[c+436>>2]=J[d+92>>2];J[c+440>>2]=J[d+96>>2];J[c+420>>2]=J[d+104>>2];J[c+444>>2]=J[d+108>>2];J[c+448>>2]=J[d+112>>2];J[c+452>>2]=J[d+116>>2];J[c+384>>2]=J[d+124>>2];e=J[219157];f=J[219156];h=L[c+372>>1];I[c+372>>1]=h+1;I[m+14>>1]=h;lN(b,f,e,m+14|0);e=J[219159];f=J[219158];J[c+344>>2]=f;J[c+348>>2]=e;b=J[c+308>>2];J[c+312>>2]=b;if((b|0)==J[c+316>>2]){break a}J[c+312>>2]=b+8;J[b>>2]=f;J[b+4>>2]=e;if(H[c+336|0]&1){break e}lj(0,4,c+324|0,c+332|0,c+328|0);rj(g,-1e4,70339);Mj(g,-2);Ok(g);FB(J[c+384>>2]);b=J[g+8>>2];J[b+8>>2]=0;J[g+8>>2]=b+16;Ok(g);if(J[g+8>>2]-J[g+12>>2]>>4!=(q|0)){break f}Ui=m+16|0;break d}Z(2627,54340,112,2284);B()}Z(143244,40876,414,65539);B()}Z(151729,53895,501,2284);B()}J[i+8>>2]=c;if(!GP(c,l)){IO(J[i+8>>2]);i:{if(H[i+36|0]&1){break i}a=J[i+24>>2];if(!a){break i}cj(a)}cj(i);a=-1e3;break c}J[J[a+88>>2]>>2]=i;a=J[j+36>>2];if((a|0)==J[j+40>>2]){break a}J[j+36>>2]=a+4;J[a>>2]=i;a=0}Ui=d+128|0;return a|0}Z(109352,40837,926,61972);B()}Z(112520,53895,557,53220);B()}function qia(a,b){a=a|0;b=b|0;var c=0,d=0,e=0,f=0,g=0,h=0,i=0,j=Q(0),k=0,l=0,m=0;k=Ui-80|0;Ui=k;h=J[a+4>>2];c=J[h+16>>2];e=J[J[a+24>>2]>>2];if(e>>>0>2]-c>>3>>>0){c=J[c+(e<<3)>>2];d=J[h>>2];if(c>>>0<(J[h+4>>2]-d|0)/240>>>0){a:{g=d+P(c,240)|0;b:{c:{e=J[a+16>>2];f=J[a+20>>2];d:{if((e|0)==J[76160]&(f|0)==J[76161]|(e|0)==J[76162]&(f|0)==J[76163]){break d}if((e|0)==J[76164]&(f|0)==J[76165]){break d}if((e|0)!=J[76166]|(f|0)!=J[76167]){break c}}d=uy(b,e,f,g+96|0,304640);break b}e:{f:{if((e|0)==J[76170]&(f|0)==J[76171]|(e|0)==J[76172]&(f|0)==J[76173]){break f}if((e|0)==J[76174]&(f|0)==J[76175]){break f}if((e|0)!=J[76176]|(f|0)!=J[76177]){break e}}d=uy(b,e,f,g+112|0,304680);break b}g:{h:{if((e|0)==J[76180]&(f|0)==J[76181]|(e|0)==J[76182]&(f|0)==J[76183]){break h}if((e|0)==J[76184]&(f|0)==J[76185]|(e|0)==J[76186]&(f|0)==J[76187]){break h}if((e|0)!=J[76188]|(f|0)!=J[76189]){break g}}d=ty(b,e,f,g+128|0,304720);break b}if((e|0)==J[76192]&(f|0)==J[76193]){j=N[g+224>>2];a=L[g+234>>1];j=a&2?Q(Q(1)-j):j;i:{if(!(a&1)){break i}j=Q(j+j);if(!(j>Q(1))){break i}j=Q(Q(2)-j)}a=k+8|0;J[a>>2]=0;O[a+8>>3]=j;hj(b+32|0,a,72);d=0;break b}if((e|0)==J[76194]&(f|0)==J[76195]){j=N[g+228>>2];a=k+8|0;J[a>>2]=0;O[a+8>>3]=j;hj(b+32|0,a,72);d=0;break b}if((e|0)==J[76046]&(f|0)==J[76047]){c=J[J[J[a+8>>2]+80>>2]>>2];e=J[g+148>>2];a=J[g+152>>2];j:{if(a){a=J[a>>2];if(a){break j}}a=J[e+4>>2]}d=Lm(c,a,b);break b}if((e|0)==J[76044]&(f|0)==J[76045]){k:{if(H[a+40|0]&1){I[b+108>>1]=L[b+108>>1]|2;d=J[g+148>>2];e=J[a+32>>2];f=J[a+36>>2];l:{m:{c=J[g+152>>2];n:{if(!c){break n}i=J[c+8>>2];h=J[c+4>>2];if((i|0)==(h|0)){break n}c=i-h>>4;l=c>>>0<=1?1:c;c=0;while(1){i=h+(c<<4)|0;if(J[i>>2]==(e|0)&J[i+4>>2]==(f|0)){break m}c=c+1|0;if((l|0)!=(c|0)){continue}break}}h=J[d+20>>2];c=0;if(!h){break l}d=J[d+16>>2];c=0;while(1){i=d+(c<<4)|0;if(J[i>>2]==(e|0)&J[i+4>>2]==(f|0)){break m}c=c+1|0;if((h|0)!=(c|0)){continue}break}c=0;break l}c=J[i+8>>2]}if(c){break k}}c=LD(g);if(c){break k}d=-10;break b}d=Lm(J[J[J[a+8>>2]+80>>2]>>2],c,b);break b}if((e|0)==J[76052]&(f|0)==J[76053]){c=LD(g);d=-10;if(!c){break b}d=Lm(J[J[J[a+8>>2]+80>>2]>>2],J[c+80>>2],b);break b}if((e|0)==J[76196]&(f|0)==J[76197]){c=J[g+212>>2];a=k+8|0;J[a+8>>2]=J[g+208>>2];J[a+12>>2]=c;J[a>>2]=1;hj(b+32|0,a,72);d=0;break b}if((e|0)==J[76198]&(f|0)==J[76199]){c=b+32|0;a=J[g+152>>2];o:{p:{if(!a){break p}b=J[a+4>>2];if(!b|(b|0)==J[a+8>>2]){break p}b=J[b+8>>2];if(b){break o}}b=J[J[J[g+148>>2]+16>>2]+8>>2]}a=J[b+96>>2];b=J[g+200>>2];if(M[a+28>>2]<=b>>>0){Z(12664,54737,96,84789);B()}a=J[a+24>>2]+P(b,36)|0;j=Q(J[a+16>>2]-J[a+12>>2]>>>0);a=k+8|0;J[a>>2]=0;O[a+8>>3]=j;hj(c,a,72);d=0;break b}d=J[g+148>>2];c=J[g+152>>2];q:{if(c){c=J[c>>2];if(c){break q}}c=J[d+4>>2]}i=J[c>>2];d=0;if(!bt(i,e,f,J[a+32>>2],b,0,316,g)){break b}a=J[g+204>>2];d=Ui-160|0;Ui=d;c=-1;r:{if(uL(i,e,f,d+104|0)){c=J[d+124>>2];J[b>>2]=J[d+120>>2];J[b+4>>2]=c;c=J[d+132>>2];J[b+8>>2]=J[d+128>>2];J[b+12>>2]=c;c=J[d+140>>2];J[b+16>>2]=J[d+136>>2];J[b+20>>2]=c;c=J[d+148>>2];J[b+24>>2]=J[d+144>>2];J[b+28>>2]=c;s:{t:{u:{if((a|0)==65535){a=J[d+104>>2];h=J[d+108>>2];break u}c=J[h+68>>2];if(a>>>0>=J[h+72>>2]-c>>3>>>0){break a}c=J[c+(a<<3)>>2];i=J[h+52>>2];if(c>>>0>=J[h+56>>2]-i>>3>>>0){break a}a=J[d+104>>2];h=J[d+108>>2];c=i+(c<<3)|0;l=K[c+4|0];if(!l){break u}i=J[c>>2];c=0;while(1){m=i+P(c,24)|0;if((a|0)==J[m>>2]&(h|0)==J[m+4>>2]){break t}c=c+1|0;if((l|0)!=(c|0)){continue}break}}if(PD(g,a,h,d+28|0)){a=J[d+28>>2];J[d+116>>2]=J[a+44>>2];J[d+32>>2]=J[a+48>>2]}g=J[d+116>>2];a=J[d+112>>2];h=Gq(lp(J[a+28>>2]));if(J[a+20>>2]>0){c=0;while(1){N[d+(c<<2)>>2]=XO(J[a+28>>2],g+P(c,h)|0);c=c+1|0;if((c|0)>2]){continue}break}}g=d+32|0;qQ(g,d,J[J[d+112>>2]+20>>2],J[d+152>>2],(e|0)!=J[d+104>>2]|(f|0)!=J[d+108>>2]);break s}g=d+32|0;qQ(g,(i+P(c,24)|0)+8|0,J[J[d+112>>2]+20>>2],J[d+152>>2],(a|0)!=(e|0)|(f|0)!=(h|0))}hj(b+32|0,g,72);c=0}Ui=d+160|0;break r}d=c}Ui=k+80|0;return d|0}}}Z(145396,53895,487,84789);B()}function OS(a,b,c,d,e,f,g,h,i,j){var k=0,l=0,m=0,n=0,o=0;k=Ui+-64|0;Ui=k;l=-13;a:{if((j|0)==2|e-14>>>0<4294967289|(j&1|j>>>0>16)){break a}o=14-e|0;H[k+32|0]=o|((j<<2)+248&248|64);hj(k+32|1,d,e);H[k+47|0]=c;m=c;b:{if((e|0)==14){break b}m=m>>>8|0;H[k+46|0]=m;if((e|0)==13){break b}m=c>>>16|0;H[k+45|0]=m;if((e|0)==12){break b}m=c>>>24|0;H[k+44|0]=m;if((e|0)==11){break b}m=0;H[k+43|0]=0;if((e|0)==10){break b}H[k+42|0]=0;if((e|0)==9){break b}H[k+41|0]=0;if((e|0)==8){break b}H[k+40|0]=0}if(m>>>0>255){break a}H[k+16|0]=K[k+32|0];m=K[k+33|0]|K[k+34|0]<<8|(K[k+35|0]<<16|K[k+36|0]<<24);H[k+17|0]=m;H[k+18|0]=m>>>8;H[k+19|0]=m>>>16;H[k+20|0]=m>>>24;m=K[k+41|0]|K[k+42|0]<<8|(K[k+43|0]<<16|K[k+44|0]<<24);l=K[k+37|0]|K[k+38|0]<<8|(K[k+39|0]<<16|K[k+40|0]<<24);H[k+21|0]=l;H[k+22|0]=l>>>8;H[k+23|0]=l>>>16;H[k+24|0]=l>>>24;H[k+25|0]=m;H[k+26|0]=m>>>8;H[k+27|0]=m>>>16;H[k+28|0]=m>>>24;m=K[k+45|0]|K[k+46|0]<<8;H[k+29|0]=m;H[k+30|0]=m>>>8;H[k+31|0]=K[k+47|0];m=k+16|0;n=k+60|0;l=qo(a,m,16,m,n);if(l){break a}J[k+32>>2]=0;J[k+36>>2]=0;J[k+40>>2]=0;J[k+44>>2]=0;I[k+32>>1]=3328;hj(k+32|2,f,13);H[k+16|0]=K[k+16|0];H[k+17|0]=K[k+17|0]^13;H[k+18|0]=K[k+18|0]^K[k+34|0];H[k+19|0]=K[k+19|0]^K[k+35|0];H[k+20|0]=K[k+20|0]^K[k+36|0];H[k+21|0]=K[k+21|0]^K[k+37|0];H[k+22|0]=K[k+22|0]^K[k+38|0];H[k+23|0]=K[k+23|0]^K[k+39|0];H[k+24|0]=K[k+24|0]^K[k+40|0];H[k+25|0]=K[k+25|0]^K[k+41|0];H[k+26|0]=K[k+26|0]^K[k+42|0];H[k+27|0]=K[k+27|0]^K[k+43|0];H[k+28|0]=K[k+28|0]^K[k+44|0];H[k+29|0]=K[k+29|0]^K[k+45|0];H[k+30|0]=K[k+30|0]^K[k+46|0];H[k+31|0]=K[k+31|0]^K[k+47|0];l=qo(a,m,16,m,n);if(l){break a}H[k|0]=o;m=15-e|0;ij(hj(k|1,d,e)+e|0,0,m);H[k+15|0]=1;if(c){while(1){f=c>>>0>=16?16:c;if(!b){d=k+32|0;ij(d+f|0,0,c>>>0<=15?16-f|0:0);hj(d,g,f);H[k+16|0]=K[k+16|0]^K[k+32|0];H[k+17|0]=K[k+17|0]^K[k+33|0];H[k+18|0]=K[k+18|0]^K[k+34|0];H[k+19|0]=K[k+19|0]^K[k+35|0];H[k+20|0]=K[k+20|0]^K[k+36|0];H[k+21|0]=K[k+21|0]^K[k+37|0];H[k+22|0]=K[k+22|0]^K[k+38|0];H[k+23|0]=K[k+23|0]^K[k+39|0];H[k+24|0]=K[k+24|0]^K[k+40|0];H[k+25|0]=K[k+25|0]^K[k+41|0];H[k+26|0]=K[k+26|0]^K[k+42|0];H[k+27|0]=K[k+27|0]^K[k+43|0];H[k+28|0]=K[k+28|0]^K[k+44|0];H[k+29|0]=K[k+29|0]^K[k+45|0];H[k+30|0]=K[k+30|0]^K[k+46|0];H[k+31|0]=K[k+31|0]^K[k+47|0];d=k+16|0;l=qo(a,d,16,d,k+60|0);if(l){break a}}l=qo(a,k,16,k+32|0,k+60|0);if(l){break a}e=0;if((c|0)!=1){o=f&30;d=0;while(1){n=k+32|0;H[e+h|0]=K[n+e|0]^K[e+g|0];l=e|1;H[l+h|0]=K[l+n|0]^K[g+l|0];e=e+2|0;d=d+2|0;if((o|0)!=(d|0)){continue}break}}if(f&1){H[e+h|0]=K[(k+32|0)+e|0]^K[e+g|0]}if((b|0)==1){d=k+32|0;ij(d+f|0,0,c>>>0<=15?16-f|0:0);hj(d,h,f);H[k+16|0]=K[k+16|0]^K[k+32|0];H[k+17|0]=K[k+17|0]^K[k+33|0];H[k+18|0]=K[k+18|0]^K[k+34|0];H[k+19|0]=K[k+19|0]^K[k+35|0];H[k+20|0]=K[k+20|0]^K[k+36|0];H[k+21|0]=K[k+21|0]^K[k+37|0];H[k+22|0]=K[k+22|0]^K[k+38|0];H[k+23|0]=K[k+23|0]^K[k+39|0];H[k+24|0]=K[k+24|0]^K[k+40|0];H[k+25|0]=K[k+25|0]^K[k+41|0];H[k+26|0]=K[k+26|0]^K[k+42|0];H[k+27|0]=K[k+27|0]^K[k+43|0];H[k+28|0]=K[k+28|0]^K[k+44|0];H[k+29|0]=K[k+29|0]^K[k+45|0];H[k+30|0]=K[k+30|0]^K[k+46|0];H[k+31|0]=K[k+31|0]^K[k+47|0];d=k+16|0;l=qo(a,d,16,d,k+60|0);if(l){break a}}c=c-f|0;g=f+g|0;h=f+h|0;e=0;l=0;while(1){c:{e=k-e|0;d=K[e+15|0]+1|0;H[e+15|0]=d;if((d|0)==(d&255)){break c}l=l+1|0;e=l&255;if(m>>>0>e>>>0){continue}}break}if(c){continue}break}}e=0;l=0;while(1){H[(k-e|0)+15|0]=0;l=l+1|0;e=l&255;if(m>>>0>e>>>0){continue}break}l=qo(a,k,16,k+32|0,k+60|0);if(l){break a}H[k+16|0]=K[k+32|0]^K[k+16|0];H[k+17|0]=K[k+33|0]^K[k+17|0];H[k+18|0]=K[k+34|0]^K[k+18|0];H[k+19|0]=K[k+35|0]^K[k+19|0];H[k+20|0]=K[k+36|0]^K[k+20|0];H[k+21|0]=K[k+37|0]^K[k+21|0];H[k+22|0]=K[k+38|0]^K[k+22|0];H[k+23|0]=K[k+39|0]^K[k+23|0];H[k+24|0]=K[k+40|0]^K[k+24|0];H[k+25|0]=K[k+41|0]^K[k+25|0];H[k+26|0]=K[k+42|0]^K[k+26|0];H[k+27|0]=K[k+43|0]^K[k+27|0];H[k+28|0]=K[k+44|0]^K[k+28|0];H[k+29|0]=K[k+45|0]^K[k+29|0];H[k+30|0]=K[k+46|0]^K[k+30|0];H[k+31|0]=K[k+47|0]^K[k+31|0];hj(i,k+16|0,j);l=0}Ui=k- -64|0;return l}function xV(a,b,c,d,e){var f=0,g=0,h=0,i=0,j=0,k=0,l=0,m=0,n=0,o=0,p=0,q=0,r=0,s=0,t=0,u=0,v=0,w=0,x=0;i=Ui-560|0;Ui=i;g=c;c=(c-3|0)/24|0;s=(c|0)>0?c:0;k=g+P(s,-24)|0;n=J[(e<<2)+198624>>2];j=d-1|0;if((n+j|0)>=0){g=d+n|0;c=s-j|0;while(1){O[(i+320|0)+(h<<3)>>3]=(c|0)<0?0:+J[(c<<2)+198640>>2];c=c+1|0;h=h+1|0;if((g|0)!=(h|0)){continue}break}}q=k-24|0;g=0;h=(n|0)>0?n:0;m=(d|0)<=0;while(1){a:{if(m){f=0;break a}o=g+j|0;c=0;f=0;while(1){f=O[(c<<3)+a>>3]*O[(i+320|0)+(o-c<<3)>>3]+f;c=c+1|0;if((d|0)!=(c|0)){continue}break}}O[(g<<3)+i>>3]=f;c=(g|0)==(h|0);g=g+1|0;if(!c){continue}break}w=47-k|0;t=48-k|0;x=k-25|0;g=n;b:{while(1){f=O[(g<<3)+i>>3];c=0;h=g;o=(g|0)<=0;if(!o){while(1){m=(i+480|0)+(c<<2)|0;l=f*5.960464477539063e-8;c:{if(R(l)<2147483648){j=~~l;break c}j=-2147483648}l=+(j|0);f=l*-16777216+f;d:{if(R(f)<2147483648){j=~~f;break d}j=-2147483648}J[m>>2]=j;h=h-1|0;f=O[(h<<3)+i>>3]+l;c=c+1|0;if((g|0)!=(c|0)){continue}break}}f=zp(f,q);f=f+V(f*.125)*-8;e:{if(R(f)<2147483648){m=~~f;break e}m=-2147483648}f=f-+(m|0);f:{g:{h:{u=(q|0)<=0;i:{if(!u){h=(g<<2)+i|0;j=J[h+476>>2];c=j>>t;r=h;h=j-(c<>2]=h;m=c+m|0;j=h>>w;break i}if(q){break h}j=J[((g<<2)+i|0)+476>>2]>>23}if((j|0)<=0){break f}break g}j=2;if(f>=.5){break g}j=0;break f}c=0;h=0;if(!o){while(1){o=(i+480|0)+(c<<2)|0;r=J[o>>2];j:{k:{if(h){h=16777215}else{if(!r){break k}h=16777216}J[o>>2]=h-r;h=1;break j}h=0}c=c+1|0;if((g|0)!=(c|0)){continue}break}}l:{if(u){break l}c=8388607;m:{switch(x|0){case 1:c=4194303;break;case 0:break m;default:break l}}o=(g<<2)+i|0;J[o+476>>2]=J[o+476>>2]&c}m=m+1|0;if((j|0)!=2){break f}f=1-f;j=2;if(!h){break f}f=f-zp(1,q)}if(f==0){h=0;c=g;n:{if((g|0)<=(n|0)){break n}while(1){c=c-1|0;h=J[(i+480|0)+(c<<2)>>2]|h;if((c|0)>(n|0)){continue}break}if(!h){break n}k=q;while(1){k=k-24|0;g=g-1|0;if(!J[(i+480|0)+(g<<2)>>2]){continue}break}break b}c=1;while(1){h=c;c=c+1|0;if(!J[(i+480|0)+(n-h<<2)>>2]){continue}break}h=g+h|0;while(1){j=d+g|0;g=g+1|0;O[(i+320|0)+(j<<3)>>3]=J[(s+g<<2)+198640>>2];c=0;f=0;if((d|0)>0){while(1){f=O[(c<<3)+a>>3]*O[(i+320|0)+(j-c<<3)>>3]+f;c=c+1|0;if((d|0)!=(c|0)){continue}break}}O[(g<<3)+i>>3]=f;if((g|0)<(h|0)){continue}break}g=h;continue}break}f=zp(f,24-k|0);o:{if(f>=16777216){d=(i+480|0)+(g<<2)|0;l=f*5.960464477539063e-8;p:{if(R(l)<2147483648){c=~~l;break p}c=-2147483648}f=+(c|0)*-16777216+f;q:{if(R(f)<2147483648){a=~~f;break q}a=-2147483648}J[d>>2]=a;g=g+1|0;break o}if(R(f)<2147483648){c=~~f}else{c=-2147483648}k=q}J[(i+480|0)+(g<<2)>>2]=c}f=zp(1,k);r:{if((g|0)<0){break r}d=g;while(1){a=d;O[(d<<3)+i>>3]=f*+J[(i+480|0)+(d<<2)>>2];d=d-1|0;f=f*5.960464477539063e-8;if(a){continue}break}if((g|0)<0){break r}h=g;while(1){f=0;c=0;a=g-h|0;d=(a|0)>(n|0)?n:a;if((d|0)>=0){while(1){f=O[(c<<3)+201408>>3]*O[(c+h<<3)+i>>3]+f;k=(c|0)!=(d|0);c=c+1|0;if(k){continue}break}}O[(i+160|0)+(a<<3)>>3]=f;a=(h|0)>0;h=h-1|0;if(a){continue}break}}s:{t:{u:{switch(e|0){case 3:v:{if((g|0)<=0){break v}f=O[(i+160|0)+(g<<3)>>3];c=g;while(1){l=f;d=i+160|0;a=c-1|0;e=d+(a<<3)|0;v=O[e>>3];f=v+f;O[d+(c<<3)>>3]=l+(v-f);O[e>>3]=f;e=c>>>0>1;c=a;if(e){continue}break}if((g|0)==1){break v}f=O[d+(g<<3)>>3];c=g;while(1){l=f;d=i+160|0;a=c-1|0;e=d+(a<<3)|0;p=O[e>>3];f=p+f;O[d+(c<<3)>>3]=l+(p-f);O[e>>3]=f;d=c>>>0>2;c=a;if(d){continue}break}p=0;if((g|0)==1){break v}while(1){p=p+O[(i+160|0)+(g<<3)>>3];a=(g|0)>2;g=g-1|0;if(a){continue}break}}f=O[i+160>>3];if(j){break t}O[b>>3]=f;f=O[i+168>>3];O[b+16>>3]=p;O[b+8>>3]=f;break s;case 0:f=0;if((g|0)>=0){while(1){a=g;g=g-1|0;f=f+O[(i+160|0)+(a<<3)>>3];if(a){continue}break}}O[b>>3]=j?-f:f;break s;case 1:case 2:break u;default:break s}}f=0;if((g|0)>=0){d=g;while(1){a=d;d=d-1|0;f=f+O[(i+160|0)+(a<<3)>>3];if(a){continue}break}}O[b>>3]=j?-f:f;f=O[i+160>>3]-f;c=1;if((g|0)>0){while(1){f=f+O[(i+160|0)+(c<<3)>>3];a=(c|0)!=(g|0);c=c+1|0;if(a){continue}break}}O[b+8>>3]=j?-f:f;break s}O[b>>3]=-f;f=O[i+168>>3];O[b+16>>3]=-p;O[b+8>>3]=-f}Ui=i+560|0;return m&7}function $A(a,b,c,d,e,f){var g=0,h=0,i=0,j=0,k=0,l=0,m=0,n=0,o=0,p=0,q=0,r=0,s=0,t=0,u=0,v=0,w=0,x=0,y=0,z=0,A=0,B=0,C=0;i=Ui+-64|0;J[i+48>>2]=0;J[i+52>>2]=0;J[i+56>>2]=0;J[i+60>>2]=0;J[i+32>>2]=0;J[i+36>>2]=0;J[i+40>>2]=0;J[i+44>>2]=0;a:{b:{c:{d:{e:{if(c){if(c>>>0>=4){n=c&-4;while(1){m=i+32|0;l=(k<<1)+b|0;h=m+(L[l>>1]<<1)|0;I[h>>1]=L[h>>1]+1;h=m+(L[l+2>>1]<<1)|0;I[h>>1]=L[h>>1]+1;h=m+(L[l+4>>1]<<1)|0;I[h>>1]=L[h>>1]+1;h=m+(L[l+6>>1]<<1)|0;I[h>>1]=L[h>>1]+1;k=k+4|0;g=g+4|0;if((n|0)!=(g|0)){continue}break}}h=c&3;if(h){while(1){g=(i+32|0)+(L[(k<<1)+b>>1]<<1)|0;I[g>>1]=L[g>>1]+1;k=k+1|0;j=j+1|0;if((h|0)!=(j|0)){continue}break}}k=J[e>>2];g=L[i+62>>1];if(!g){break e}l=15;break d}k=J[e>>2]}g=0;if(L[i+60>>1]){l=14;break d}if(L[i+58>>1]){l=13;break d}if(L[i+56>>1]){l=12;break d}if(L[i+54>>1]){l=11;break d}if(L[i+52>>1]){l=10;break d}if(L[i+50>>1]){l=9;break d}if(L[i+48>>1]){l=8;break d}if(L[i+46>>1]){l=7;break d}if(L[i+44>>1]){l=6;break d}if(L[i+42>>1]){l=5;break d}if(L[i+40>>1]){l=4;break d}if(L[i+38>>1]){l=3;break d}if(L[i+36>>1]){l=2;break d}if(!L[i+34>>1]){a=J[d>>2];J[d>>2]=a+4;I[a>>1]=320;I[a+2>>1]=0;a=J[d>>2];J[d>>2]=a+4;I[a>>1]=320;I[a+2>>1]=0;m=1;break b}r=(k|0)!=0;l=1;k=1;break c}r=k>>>0>>0?k:l;p=1;k=1;while(1){if(L[(i+32|0)+(k<<1)>>1]){break c}k=k+1|0;if((l|0)!=(k|0)){continue}break}k=l}j=-1;o=L[i+34>>1];if(o>>>0>2){break a}s=L[i+36>>1];h=(4-(o<<1)&65534)-s|0;if((h|0)<0){break a}q=L[i+38>>1];h=(h<<1)-q|0;if((h|0)<0){break a}t=L[i+40>>1];h=(h<<1)-t|0;if((h|0)<0){break a}u=L[i+42>>1];h=(h<<1)-u|0;if((h|0)<0){break a}w=L[i+44>>1];h=(h<<1)-w|0;if((h|0)<0){break a}z=L[i+46>>1];h=(h<<1)-z|0;if((h|0)<0){break a}A=L[i+48>>1];h=(h<<1)-A|0;if((h|0)<0){break a}x=L[i+50>>1];h=(h<<1)-x|0;if((h|0)<0){break a}y=L[i+52>>1];h=(h<<1)-y|0;if((h|0)<0){break a}C=L[i+54>>1];h=(h<<1)-C|0;if((h|0)<0){break a}v=L[i+56>>1];h=(h<<1)-v|0;if((h|0)<0){break a}m=L[i+58>>1];h=(h<<1)-m|0;if((h|0)<0){break a}n=L[i+60>>1];h=(h<<1)-n|0;if((h|0)<0){break a}h=h<<1;if(h>>>0>>0|(!a|p?(g|0)!=(h|0):0)){break a}B=k>>>0>>0;j=0;I[i+2>>1]=0;I[i+4>>1]=o;g=o+s|0;I[i+6>>1]=g;g=g+q|0;I[i+8>>1]=g;g=g+t|0;I[i+10>>1]=g;g=g+u|0;I[i+12>>1]=g;g=g+w|0;I[i+14>>1]=g;g=g+z|0;I[i+16>>1]=g;g=g+A|0;I[i+18>>1]=g;g=g+x|0;I[i+20>>1]=g;g=g+y|0;I[i+22>>1]=g;g=g+C|0;I[i+24>>1]=g;g=g+v|0;I[i+26>>1]=g;g=g+m|0;I[i+28>>1]=g;I[i+30>>1]=g+n;f:{if(!c){break f}if((c|0)!=1){m=c&-2;g=0;while(1){h=L[(j<<1)+b>>1];if(h){h=(h<<1)+i|0;n=L[h>>1];I[h>>1]=n+1;I[(n<<1)+f>>1]=j}n=j|1;h=L[(n<<1)+b>>1];if(h){h=(h<<1)+i|0;v=L[h>>1];I[h>>1]=v+1;I[(v<<1)+f>>1]=n}j=j+2|0;g=g+2|0;if((m|0)!=(g|0)){continue}break}}if(!(c&1)){break f}c=L[(j<<1)+b>>1];if(!c){break f}c=(c<<1)+i|0;g=L[c>>1];I[c>>1]=g+1;I[(g<<1)+f>>1]=j}m=B?r:k;s=20;z=0;n=f;w=n;A=0;g:{h:{switch(a|0){case 1:j=1;if(m>>>0>9){break a}w=193424;n=193360;s=257;A=1;break g;case 0:break g;default:break h}}w=193552;n=193488;z=(a|0)==2;s=0;if((a|0)!=2){break g}j=1;if(m>>>0>9){break a}}q=1<>2];u=0;g=m;o=0;p=0;a=-1;while(1){h=1<>1];c=0;j:{if(g+1>>>0>>0){break j}if(g>>>0>>0){g=0;c=96;break j}c=g-s<<1;g=L[c+n>>1];c=K[c+w|0]}v=p>>>o|0;x=k-o|0;B=-1<>1]=g;H[y+1|0]=x;H[y|0]=c;if(j){continue}break}g=1<>>1|0;if(c&p){continue}break}g=(i+32|0)+(k<<1)|0;j=L[g>>1]-1|0;I[g>>1]=j;p=c?c+(c-1&p)|0:0;u=u+1|0;if(!(j&65535)){if((k|0)==(l|0)){break i}k=L[(L[(u<<1)+f>>1]<<1)+b>>1]}if(k>>>0<=m>>>0){continue}c=p&C;if((c|0)==(a|0)){continue}break}o=o?o:m;g=k-o|0;r=1<>>0>>0){B=o+1|0;a=l-o|0;j=k;k:{while(1){j=r-L[(i+32|0)+(j<<1)>>1]|0;if((j|0)<=0){break k}r=j<<1;j=g+B|0;g=g+1|0;if(j>>>0>>0){continue}break}g=a}r=1<>>0>852&A|q>>>0>592&z){break a}a=J[d>>2];j=a+(c<<2)|0;H[j+1|0]=m;H[j|0]=g;t=(h<<2)+t|0;I[j+2>>1]=t-a>>>2;a=c;continue}break}if(p){a=(p<<2)+t|0;I[a+2>>1]=0;H[a+1|0]=x;H[a|0]=64}J[d>>2]=J[d>>2]+(q<<2)}J[e>>2]=m;j=0}return j}function nqa(a,b,c,d,e,f,g,h,i,j){a=a|0;b=b|0;c=c|0;d=d|0;e=e|0;f=f|0;g=g|0;h=h|0;i=i|0;j=j|0;var k=0,l=0,m=0,n=0,o=0,p=0,q=0,r=Q(0),s=Q(0),t=0,u=0,v=0;Xl(20047);if(J[h+20>>2]>0){while(1){a:{if(!(J[h+60>>2]&1)|t&7){break a}q=J[a+48>>2];o=J[a+8>>2];if((o|0)>0){m=P(J[a+124>>2],1664525)+1013904223|0;b:{if((o|0)==1){break b}l=J[a+76>>2];n=J[l+4>>2];m=P(m,1664525)+1013904223|0;k=m^m>>>16;k=k>>>8^k;k=k>>>4^k;k=k>>>2^k;k=l+(((k>>>1^k)&1)<<2)|0;J[l+4>>2]=J[k>>2];J[k>>2]=n;if((o|0)==2){break b}n=J[l+8>>2];m=P(m,1664525)+1013904223|0;k=m^m>>>16;k=k>>>8^k;k=k>>>4^k;k=l+(((k>>>2^k)>>>0)%3<<2)|0;J[l+8>>2]=J[k>>2];J[k>>2]=n;if((o|0)==3){break b}k=4;n=J[l+12>>2];m=P(m,1664525)+1013904223|0;p=m^m>>>16;p=p>>>8^p;p=p>>>4^p;p=l+(((p>>>2^p)&3)<<2)|0;J[l+12>>2]=J[p>>2];J[p>>2]=n;if((o|0)==4){break b}while(1){n=l+(k<<2)|0;v=J[n>>2];u=n;m=P(m,1664525)+1013904223|0;n=m;c:{if(k>>>0>65535){break c}p=m>>>16^m;n=p;if(k>>>0>255){break c}p=p^p>>>8;n=p;if(k>>>0>15){break c}n=p^p>>>4}k=k+1|0;n=((n>>>0)%(k>>>0)<<2)+l|0;J[u>>2]=J[n>>2];J[n>>2]=v;if((k|0)!=(o|0)){continue}break}}J[a+124>>2]=m}if((q|0)<=0){break a}m=P(J[a+124>>2],1664525)+1013904223|0;d:{if((q|0)==1){break d}l=J[a+96>>2];n=J[l+4>>2];m=P(m,1664525)+1013904223|0;k=m^m>>>16;k=k>>>8^k;k=k>>>4^k;k=k>>>2^k;k=l+(((k>>>1^k)&1)<<2)|0;J[l+4>>2]=J[k>>2];J[k>>2]=n;if((q|0)==2){break d}n=J[l+8>>2];m=P(m,1664525)+1013904223|0;k=m^m>>>16;k=k>>>8^k;k=k>>>4^k;k=l+(((k>>>2^k)>>>0)%3<<2)|0;J[l+8>>2]=J[k>>2];J[k>>2]=n;if((q|0)==3){break d}k=4;n=J[l+12>>2];m=P(m,1664525)+1013904223|0;o=m^m>>>16;o=o>>>8^o;o=o>>>4^o;o=l+(((o>>>2^o)&3)<<2)|0;J[l+12>>2]=J[o>>2];J[o>>2]=n;if((q|0)==4){break d}while(1){n=l+(k<<2)|0;p=J[n>>2];u=n;m=P(m,1664525)+1013904223|0;n=m;e:{if(k>>>0>65535){break e}o=m>>>16^m;n=o;if(k>>>0>255){break e}o=o^o>>>8;n=o;if(k>>>0>15){break e}n=o^o>>>4}k=k+1|0;n=((n>>>0)%(k>>>0)<<2)+l|0;J[u>>2]=J[n>>2];J[n>>2]=p;if((k|0)!=(q|0)){continue}break}}J[a+124>>2]=m}l=J[a+28>>2];f:{if(H[h+61|0]&1){if((l|0)>0){k=0;while(1){l=J[a+36>>2]+P(k,136)|0;Yy(J[l+104>>2],J[l+108>>2],l);k=k+1|0;if((k|0)>2]){continue}break}}g:{if((g|0)<=0){break g}m=0;if((g|0)!=1){n=g&2147483646;k=0;while(1){q=(m<<2)+f|0;l=J[q>>2];Zi[J[J[l>>2]+24>>2]](l,J[l+20>>2],J[l+24>>2],N[h+12>>2]);l=J[q+4>>2];Zi[J[J[l>>2]+24>>2]](l,J[l+20>>2],J[l+24>>2],N[h+12>>2]);m=m+2|0;k=k+2|0;if((n|0)!=(k|0)){continue}break}}if(!(g&1)){break g}l=J[(m<<2)+f>>2];Zi[J[J[l>>2]+24>>2]](l,J[l+20>>2],J[l+24>>2],N[h+12>>2])}n=J[a+8>>2];if((n|0)>0){k=0;while(1){l=J[a+16>>2]+P(J[J[a+76>>2]+(k<<2)>>2],136)|0;bT(J[l+104>>2],J[l+108>>2],l);k=k+1|0;if((n|0)!=(k|0)){continue}break}}n=J[a+48>>2];if((n|0)<=0){break f}m=0;while(1){l=J[a+56>>2]+P(J[J[a+96>>2]+(m<<2)>>2],136)|0;r=N[(J[a+16>>2]+P(J[l+100>>2],136)|0)+84>>2];if(r>Q(0)){s=N[l+88>>2];N[l+128>>2]=r*s;N[l+124>>2]=s*Q(-r);Yy(J[l+104>>2],J[l+108>>2],l)}m=m+1|0;if((n|0)!=(m|0)){continue}break}break f}if((l|0)>0){k=0;while(1){l=J[a+36>>2]+P(k,136)|0;Yy(J[l+104>>2],J[l+108>>2],l);k=k+1|0;if((k|0)>2]){continue}break}}h:{if((g|0)<=0){break h}m=0;if((g|0)!=1){n=g&2147483646;k=0;while(1){q=(m<<2)+f|0;l=J[q>>2];Zi[J[J[l>>2]+24>>2]](l,J[l+20>>2],J[l+24>>2],N[h+12>>2]);l=J[q+4>>2];Zi[J[J[l>>2]+24>>2]](l,J[l+20>>2],J[l+24>>2],N[h+12>>2]);m=m+2|0;k=k+2|0;if((n|0)!=(k|0)){continue}break}}if(!(g&1)){break h}l=J[(m<<2)+f>>2];Zi[J[J[l>>2]+24>>2]](l,J[l+20>>2],J[l+24>>2],N[h+12>>2])}n=J[a+8>>2];if((n|0)>0){k=0;while(1){l=J[a+16>>2]+P(J[J[a+76>>2]+(k<<2)>>2],136)|0;bT(J[l+104>>2],J[l+108>>2],l);k=k+1|0;if((n|0)!=(k|0)){continue}break}}n=J[a+48>>2];if((n|0)<=0){break f}m=0;while(1){l=J[a+56>>2]+P(J[J[a+96>>2]+(m<<2)>>2],136)|0;r=N[(J[a+16>>2]+P(J[l+100>>2],136)|0)+84>>2];if(r>Q(0)){s=N[l+88>>2];N[l+128>>2]=r*s;N[l+124>>2]=s*Q(-r);Yy(J[l+104>>2],J[l+108>>2],l)}m=m+1|0;if((n|0)!=(m|0)){continue}break}}t=t+1|0;if((t|0)>2]){continue}break}}Zi[J[J[a>>2]+24>>2]](a,b,c,d,e,f,g,h,i,j);Wl();return Q(Q(0))}function pz(a,b){var c=0,d=0,e=0,f=0,g=0,h=0,i=0,j=0,k=0,l=0,m=0,n=0,o=0,p=0,q=0,r=0,s=0,t=0,u=0;c=K[b|0];d=K[b+16|0];e=c>>>0>>0?c:d;g=K[b+32|0];i=e>>>0>>0?e:g;e=K[b+48|0];j=e>>>0>i>>>0?i:e;i=K[b+4|0];l=K[b+20|0];k=i>>>0>>0?i:l;m=K[b+36|0];h=k>>>0>>0?k:m;k=K[b+52|0];h=h>>>0>>0?h:k;o=h>>>0>j>>>0?j:h;j=K[b+8|0];h=K[b+24|0];p=h>>>0>j>>>0?j:h;f=K[b+40|0];n=f>>>0>p>>>0?p:f;p=K[b+56|0];n=n>>>0

>>0?n:p;q=n>>>0>o>>>0?o:n;o=K[b+12|0];n=K[b+28|0];r=n>>>0>o>>>0?o:n;t=K[b+44|0];s=r>>>0>>0?r:t;r=K[b+60|0];s=r>>>0>s>>>0?s:r;q=q>>>0>>0?q:s;H[a+1|0]=q;c=c>>>0>d>>>0?c:d;c=c>>>0>g>>>0?c:g;c=c>>>0>e>>>0?c:e;d=i>>>0>l>>>0?i:l;d=d>>>0>m>>>0?d:m;d=d>>>0>k>>>0?d:k;c=c>>>0>d>>>0?c:d;d=h>>>0>>0?j:h;d=d>>>0>f>>>0?d:f;d=d>>>0>p>>>0?d:p;c=c>>>0>d>>>0?c:d;d=n>>>0>>0?o:n;d=d>>>0>t>>>0?d:t;d=d>>>0>r>>>0?d:r;d=c>>>0>d>>>0?c:d;H[a|0]=d;if((d|0)==(q|0)){H[a+2|0]=0;H[a+3|0]=0;H[a+4|0]=0;H[a+5|0]=0;H[a+6|0]=0;H[a+7|0]=0;return}f=K[b+44|0];p=K[b+40|0];o=K[b+32|0];n=K[b+36|0];t=K[b+48|0];r=K[b+52|0];s=K[b+56|0];u=K[b+60|0];e=P(q,-14)+4|0;c=e+P(K[b+20|0],14)|0;g=d-q|0;i=P(g,13);l=P(g,11);m=P(g,9);k=P(g,7);j=P(g,5);h=P(g,3);d=J[((((((((c|0)>=(i|0))+((l|0)<=(c|0))|0)+((m|0)<=(c|0))|0)+((k|0)<=(c|0))|0)+((j|0)<=(c|0))|0)+((h|0)<=(c|0))|0)+((c|0)>=(g|0))<<2)+169008>>2];c=e+P(K[b+16|0],14)|0;d=(d|J[((((((((c|0)>=(i|0))+((c|0)>=(l|0))|0)+((c|0)>=(m|0))|0)+((c|0)>=(k|0))|0)+((c|0)>=(j|0))|0)+((c|0)>=(h|0))|0)+((c|0)>=(g|0))<<2)+168976>>2])<<12;c=e+P(K[b+4|0],14)|0;d=d|J[((((((((c|0)>=(i|0))+((c|0)>=(l|0))|0)+((c|0)>=(m|0))|0)+((c|0)>=(k|0))|0)+((c|0)>=(j|0))|0)+((c|0)>=(h|0))|0)+((c|0)>=(g|0))<<2)+169008>>2];c=e+P(K[b|0],14)|0;d=d|J[((((((((c|0)>=(i|0))+((c|0)>=(l|0))|0)+((c|0)>=(m|0))|0)+((c|0)>=(k|0))|0)+((c|0)>=(j|0))|0)+((c|0)>=(h|0))|0)+((c|0)>=(g|0))<<2)+168976>>2];c=e+P(K[b+8|0],14)|0;q=J[((((((((c|0)>=(i|0))+((c|0)>=(l|0))|0)+((c|0)>=(m|0))|0)+((c|0)>=(k|0))|0)+((c|0)>=(j|0))|0)+((c|0)>=(h|0))|0)+((c|0)>=(g|0))<<2)+169040>>2];c=e+P(K[b+24|0],14)|0;d=d|(q|J[((((((((c|0)>=(i|0))+((c|0)>=(l|0))|0)+((c|0)>=(m|0))|0)+((c|0)>=(k|0))|0)+((c|0)>=(j|0))|0)+((c|0)>=(h|0))|0)+((c|0)>=(g|0))<<2)+169040>>2]<<12);c=e+P(K[b+12|0],14)|0;b=e+P(K[b+28|0],14)|0;b=d|(J[((((((((c|0)>=(i|0))+((c|0)>=(l|0))|0)+((c|0)>=(m|0))|0)+((c|0)>=(k|0))|0)+((c|0)>=(j|0))|0)+((c|0)>=(h|0))|0)+((c|0)>=(g|0))<<2)+169072>>2]|J[((((((((b|0)>=(i|0))+((b|0)>=(l|0))|0)+((b|0)>=(m|0))|0)+((b|0)>=(k|0))|0)+((b|0)>=(j|0))|0)+((b|0)>=(h|0))|0)+((b|0)>=(g|0))<<2)+169072>>2]<<12);H[a+2|0]=b;c=e+P(f,14)|0;d=J[((((((((c|0)>=(i|0))+((c|0)>=(l|0))|0)+((c|0)>=(m|0))|0)+((c|0)>=(k|0))|0)+((c|0)>=(j|0))|0)+((c|0)>=(h|0))|0)+((c|0)>=(g|0))<<2)+169072>>2];c=e+P(p,14)|0;f=J[((((((((c|0)>=(i|0))+((c|0)>=(l|0))|0)+((c|0)>=(m|0))|0)+((c|0)>=(k|0))|0)+((c|0)>=(j|0))|0)+((c|0)>=(h|0))|0)+((c|0)>=(g|0))<<2)+169040>>2];c=e+P(o,14)|0;o=J[((((((((c|0)>=(i|0))+((c|0)>=(l|0))|0)+((c|0)>=(m|0))|0)+((c|0)>=(k|0))|0)+((c|0)>=(j|0))|0)+((c|0)>=(h|0))|0)+((c|0)>=(g|0))<<2)+168976>>2];c=e+P(n,14)|0;c=d|(f|(o|J[((((((((c|0)>=(i|0))+((c|0)>=(l|0))|0)+((c|0)>=(m|0))|0)+((c|0)>=(k|0))|0)+((c|0)>=(j|0))|0)+((c|0)>=(h|0))|0)+((c|0)>=(g|0))<<2)+169008>>2]));d=c>>>8|0;f=e+P(t,14)|0;n=J[((((((((f|0)>=(i|0))+((f|0)>=(l|0))|0)+((f|0)>=(m|0))|0)+((f|0)>=(k|0))|0)+((f|0)>=(j|0))|0)+((f|0)>=(h|0))|0)+((f|0)>=(g|0))<<2)+168976>>2];f=e+P(r,14)|0;o=J[((((((((f|0)>=(i|0))+((f|0)>=(l|0))|0)+((f|0)>=(m|0))|0)+((f|0)>=(k|0))|0)+((f|0)>=(j|0))|0)+((f|0)>=(h|0))|0)+((f|0)>=(g|0))<<2)+169008>>2];f=e+P(s,14)|0;e=e+P(u,14)|0;d=(n|(o|(J[((((((((f|0)>=(i|0))+((f|0)>=(l|0))|0)+((f|0)>=(m|0))|0)+((f|0)>=(k|0))|0)+((f|0)>=(j|0))|0)+((f|0)>=(h|0))|0)+((f|0)>=(g|0))<<2)+169040>>2]|J[((((((((e|0)>=(i|0))+((e|0)>=(l|0))|0)+((e|0)>=(m|0))|0)+((e|0)>=(k|0))|0)+((e|0)>=(j|0))|0)+((e|0)>=(h|0))|0)+((e|0)>=(g|0))<<2)+169072>>2])))<<4|d;H[a+7|0]=d>>>8;H[a+6|0]=d;H[a+4|0]=b>>>16;H[a+3|0]=b>>>8;H[a+5|0]=c|b>>>24}function VP(a,b,c,d,e,f,g,h){var i=0,j=0,k=0,l=0,m=0,n=0,o=0,p=0,q=0,r=0,s=0,t=0,u=0,v=0,w=Q(0),x=Q(0);j=Ui-112|0;Ui=j;v=J[b+12>>2];k=J[h+8>>2];a:{b:{c:{d:{l=J[b+8>>2];if((Tp(a,l)|0)==5){p=P(J[k+444>>2],240);i=J[k>>2];n=J[k+4>>2]-i|0;t=(n|0)/352|0;o=t+1|0;if(o>>>0>(J[k+8>>2]-i|0)/352>>>0){break c}m=p;q=J[k+452>>2];J[k+4>>2]=i+P(o,352);if(n>>>0>=4294966944){break b}p=J[h+12>>2];J[h+12>>2]=p+1;i=i+n|0;J[i+336>>2]=p;n=J[v+72>>2];if(n){p=J[n>>2];n=J[n+4>>2]}else{p=0;n=0}m=m-q|0;Ao(i);J[i+156>>2]=J[k+48>>2];o=J[k+52>>2];J[i+240>>2]=1;J[i+144>>2]=o;J[i+308>>2]=(J[k+72>>2]-J[k+68>>2]|0)/40;o=Fo(a,l);o=J[(o?o:h+4|0)>>2];J[i+176>>2]=p;J[i+180>>2]=n;J[i+172>>2]=o;if(!g){break d}while(1){p=J[((s<<4)+b|0)+12>>2];n=J[p+92>>2];o=J[p+96>>2];q=J[k+96>>2];l=J[q>>2];e:{f:{u=J[q+4>>2]-l>>2;q=n&65535;if(u>>>0>q>>>0){l=J[l+(q<<2)>>2];if(L[l+80>>1]!=(n>>>16|0)){break f}n=J[l>>2];if(o>>>0>=(J[l+4>>2]-n|0)/304>>>0){break b}n=n+P(o,304)|0;n=P((J[n+60>>2]-J[n+56>>2]|0)/160|0,6);break e}break b}dj(4,96107,66969,0);B()}rq(j- -64|0,(s<<6)+c|0);o=J[p+92>>2];l=J[k+96>>2];N[j+56>>2]=N[j+88>>2];q=J[j+84>>2];J[j+48>>2]=J[j+80>>2];J[j+52>>2]=q;q=o;o=j+48|0;Px(l,q,o);l=J[p+92>>2];q=J[k+96>>2];u=J[j+68>>2];J[j+48>>2]=J[j+64>>2];J[j+52>>2]=u;u=J[j+76>>2];J[j+56>>2]=J[j+72>>2];J[j+60>>2]=u;Ox(q,l,o);w=N[j+96>>2];x=N[j+100>>2];Nx(J[k+96>>2],J[p+92>>2],w>>0)/40|0;c=c>>>0>r>>>0?r:c;l=J[k+76>>2];s=J[k+72>>2];if(c>>>0>(l-s|0)/40>>>0){if(H[k+80|0]&1){break a}lj(((l-J[n>>2]|0)/40|0)+(c>>>0<=128?128:c)|0,40,n,o,p);s=J[p>>2]}g:{if(!g){r=0;break g}q=k+104|0;r=0;c=0;while(1){l=(c<<4)+b|0;fm(j- -64|0,a,J[l+8>>2],3);N[j+60>>2]=N[(c<<2)+d>>2];N[j+56>>2]=N[j+72>>2];u=J[j+68>>2];J[j+48>>2]=J[j+64>>2];J[j+52>>2]=u;l=J[l+12>>2];J[j+44>>2]=0;h:{i:{switch(yM(J[k+96>>2],N[k+460>>2],J[l+92>>2],J[l+96>>2],0,-1,q,j+48|0,s,m,j+44|0)-1|0){case 1:J[j+32>>2]=J[k+444>>2];dj(3,88458,125305,j+32|0);break h;case 0:break i;default:break h}}J[j+16>>2]=c;dj(3,88458,127120,j+16|0)}l=J[j+44>>2];m=m-l|0;l=(l>>>0)/40|0;r=l+r|0;s=P(l,40)+s|0;c=c+1|0;if((g|0)!=(c|0)){continue}break}}J[k+452>>2]=J[k+452>>2]+P(r,40);J[i+312>>2]=r;j:{a=J[(J[v+68>>2]<<2)+301124>>2];if(a>>>0<5){H[i+320|0]=K[i+320|0]|1;a=a<<2;J[i+252>>2]=J[a+159332>>2];J[i+248>>2]=J[a+159312>>2];a=J[k+16>>2];if(J[k+20>>2]-a>>2>>>0<=t>>>0){break b}m=J[a+(t<<2)>>2];c=J[v+88>>2];if(!(m|!c)){m=Hq();a=J[k+16>>2];if(J[k+20>>2]-a>>2>>>0<=t>>>0){break b}J[a+(t<<2)>>2]=m;c=J[v+88>>2]}if(c){a=0;while(1){c=J[v+84>>2]+P(a,96)|0;b=J[c>>2];k=J[c+4>>2];r=c+16|0;t=K[c+80|0]?4:1;c=0;k:{l:{m:{n:{d=J[m+4>>2]-J[m>>2]>>2;if((d|0)>0){while(1){g=J[m>>2];if(J[m+4>>2]-g>>2>>>0<=c>>>0){break b}g=J[g+(c<<2)>>2];if((b|0)==J[g+8>>2]&J[g+12>>2]==(k|0)){break n}c=c+1|0;if((d|0)!=(c|0)){continue}break}}l=m+4|0;d=hC(b,k);c=J[m+4>>2];g=J[m+8>>2];if((c|0)==(g|0)){if(H[m+12|0]&1){break a}lj((c-J[m>>2]>>2)+4|0,4,m,m+8|0,l);c=J[m+4>>2];g=J[m+8>>2]}if((c|0)==(g|0)){break l}J[l>>2]=c+4;J[c>>2]=d;break m}d=J[m>>2];if(J[m+4>>2]-d>>2>>>0<=c>>>0){break b}d=J[d+(c<<2)>>2]}Ru(d,r,t);yP(m,b,k,r,t);break k}Z(112520,53895,557,53220);B()}a=a+1|0;if(a>>>0>2]){continue}break}}a=m?m:f;if(a){np(i,a)}a=J[e>>2];H[i+320|0]=K[i+320|0]|2;o:{if(a){J[i+268>>2]=2;J[i+272>>2]=2;J[i+260>>2]=5;J[i+264>>2]=0;H[i+292|0]=K[a|0];H[i+293|0]=K[a+1|0];H[i+294|0]=K[a+2|0];H[i+295|0]=K[i+295|0]&208|K[a+3|0]&15;if(K[h+16|0]!=1){break o}H[h+16|0]=0;H[i+295|0]=K[i+295|0]|16;break o}H[i+294|0]=255;I[i+292>>1]=65280;J[i+268>>2]=0;J[i+272>>2]=0;J[i+260>>2]=7;J[i+264>>2]=0;H[i+295|0]=K[i+295|0]&208|15}a=J[n>>2];b=s-a|0;if(b>>>0>J[o>>2]-a>>>0){break j}J[p>>2]=a+b;Ui=j+112|0;return}J[j>>2]=a;dj(4,88458,155274,j);Z(114101,40837,1062,69697);B()}}Z(144782,53895,514,59583);B()}Z(145396,53895,487,84789);B()}Z(151729,53895,501,2284);B()}function ez(a,b,c){a=a|0;b=b|0;c=c|0;var d=Q(0),e=0,f=Q(0),g=Q(0),h=0,i=Q(0),j=Q(0),k=0,l=0,m=Q(0),n=Q(0),o=Q(0),p=0,q=Q(0),r=0,s=Q(0),t=0,u=Q(0),v=Q(0),w=0,x=Q(0),y=Q(0),z=Q(0),A=Q(0),B=Q(0),C=Q(0);e=Ui-48|0;Ui=e;a:{b:{switch(J[b+4>>2]){case 8:J[a>>2]=0;J[a+4>>2]=0;J[a+8>>2]=0;J[a+12>>2]=0;break a;case 0:d=N[b+28>>2];j=N[c>>2];f=N[b+32>>2];i=N[c+4>>2];g=N[b+36>>2];o=N[c+8>>2];J[a+12>>2]=0;N[a+8>>2]=o>=Q(0)?g:Q(-g);N[a+4>>2]=i>=Q(0)?f:Q(-f);N[a>>2]=j>=Q(0)?d:Q(-d);break a;case 1:d=N[c+8>>2];f=N[c>>2];g=N[c+4>>2];j=Q(Q(d*N[b+60>>2])+Q(Q(f*N[b+52>>2])+Q(g*N[b+56>>2])));i=Q(Q(d*N[b+76>>2])+Q(Q(f*N[b+68>>2])+Q(g*N[b+72>>2])));c=j>2])+Q(Q(f*N[b+84>>2])+Q(g*N[b+88>>2])))>(c?i:j)?2:c)<<4)|0;c=J[b>>2];h=J[b+4>>2];d=N[b+8>>2];J[a+12>>2]=0;N[a+8>>2]=d;J[a>>2]=c;J[a+4>>2]=h;break a;case 13:h=J[b+40>>2];J[e+40>>2]=J[b+36>>2];J[e+44>>2]=h;h=J[b+32>>2];J[e+32>>2]=J[b+28>>2];J[e+36>>2]=h;N[e+28>>2]=N[c>>2];f=N[c+4>>2];N[e+24>>2]=f;d=N[c+8>>2];N[e+20>>2]=d;p=e+32|4;k=e+24|0;c=e+12|0;h=e+28|0;l=e+16|0;r=e+8|0;c:{d:{e:{b=J[b+52>>2];switch(b-1|0){case 1:break d;case 0:break e;default:break c}}p=e+32|0;k=e+28|0;c=e+16|0;h=e+24|0;l=e+12|0;break c}p=e+32|0;k=e+28|0;c=e+16|0;h=e+20|0;l=e+8|0;r=e+12|0;d=f}f=N[(e+32|0)+(b<<2)>>2];g=N[p>>2];j=N[k>>2];i=Q(Q(j*j)+Q(d*d));f:{if(i!=Q(0)){g=Q(g/Q(Y(i)));N[c>>2]=g*j;N[l>>2]=N[h>>2]>2]=g;N[l>>2]=N[h>>2]>2]=s;d=N[e+16>>2];f=N[e+12>>2];g=N[e+8>>2];J[a+12>>2]=0;N[a+8>>2]=g;N[a+4>>2]=f;N[a>>2]=d;break a;case 10:p=b+28|0;h=J[b+52>>2];l=h<<2;u=N[p+l>>2];m=N[p+((h+2|0)%3<<2)>>2];d=Q(1);f=N[c+8>>2];g=N[c>>2];j=N[c+4>>2];i=Q(Q(f*f)+Q(Q(g*g)+Q(j*j)));if(!(i>2]=0;J[e+44>>2]=0;J[e+32>>2]=0;J[e+36>>2]=0;N[l+(e+32|0)>>2]=u;f=Q(-0xde0b6b000000000);g=Q(0);j=Q(0);x=Q(m*Q(s*N[b+20>>2]));n=N[b+44>>2];y=Q(s*n);i=Q(Q(x+N[e+40>>2])-y);z=Q(m*Q(d*N[b+12>>2]));A=Q(d*n);o=Q(Q(z+N[e+32>>2])-A);B=Q(m*Q(v*N[b+16>>2]));C=Q(v*n);m=Q(Q(B+N[e+36>>2])-C);n=Q(Q(s*i)+Q(Q(d*o)+Q(v*m)));if(n>Q(-0xde0b6b000000000)){g=m;j=i;q=o;f=n}J[e+40>>2]=0;J[e+44>>2]=0;J[e+32>>2]=0;J[e+36>>2]=0;N[(e+32|0)+(h<<2)>>2]=-u;i=N[e+40>>2];o=N[e+32>>2];m=N[e+36>>2];J[a+12>>2]=0;u=f;f=Q(Q(x+i)-y);n=d;d=Q(Q(z+o)-A);i=Q(Q(B+m)-C);b=u>2]=b?f:j;N[a+4>>2]=b?i:g;N[a>>2]=b?d:q;break a;case 5:i=N[b+20>>2];o=N[b+16>>2];m=N[b+12>>2];l=J[b+88>>2];b=J[b+92>>2];g:{if((b|0)<=0){h=-1;break g}f=Q(N[c+8>>2]*i);g=Q(N[c+4>>2]*o);j=Q(N[c>>2]*m);r=b&1;h:{if((b|0)==1){d=Q(-0xde0b6b000000000);h=-1;b=0;break h}w=b&2147483646;d=Q(-0xde0b6b000000000);h=-1;b=0;while(1){c=l+(b<<4)|0;n=Q(Q(f*N[c+8>>2])+Q(Q(j*N[c>>2])+Q(g*N[c+4>>2])));c=n>d;t=b|1;k=l+(t<<4)|0;q=Q(Q(f*N[k+8>>2])+Q(Q(j*N[k>>2])+Q(g*N[k+4>>2])));d=c?n:d;k=q>d;d=k?q:d;h=k?t:c?b:h;b=b+2|0;p=p+2|0;if((w|0)!=(p|0)){continue}break}}if(!r){break g}c=b;b=l+(b<<4)|0;h=Q(Q(f*N[b+8>>2])+Q(Q(j*N[b>>2])+Q(g*N[b+4>>2])))>d?c:h}b=l+(h<<4)|0;d=N[b>>2];f=N[b+4>>2];g=N[b+8>>2];J[a+12>>2]=0;N[a+8>>2]=i*g;N[a+4>>2]=o*f;N[a>>2]=m*d;break a;case 4:i=N[b+20>>2];o=N[b+16>>2];m=N[b+12>>2];l=J[b+100>>2];b=J[b+92>>2];i:{if((b|0)<=0){h=-1;break i}f=Q(N[c+8>>2]*i);g=Q(N[c+4>>2]*o);j=Q(N[c>>2]*m);r=b&1;j:{if((b|0)==1){d=Q(-0xde0b6b000000000);h=-1;b=0;break j}w=b&2147483646;d=Q(-0xde0b6b000000000);h=-1;b=0;while(1){c=l+(b<<4)|0;n=Q(Q(f*N[c+8>>2])+Q(Q(j*N[c>>2])+Q(g*N[c+4>>2])));c=n>d;t=b|1;k=l+(t<<4)|0;q=Q(Q(f*N[k+8>>2])+Q(Q(j*N[k>>2])+Q(g*N[k+4>>2])));d=c?n:d;k=q>d;d=k?q:d;h=k?t:c?b:h;b=b+2|0;p=p+2|0;if((w|0)!=(p|0)){continue}break}}if(!r){break i}c=b;b=l+(b<<4)|0;h=Q(Q(f*N[b+8>>2])+Q(Q(j*N[b>>2])+Q(g*N[b+4>>2])))>d?c:h}b=l+(h<<4)|0;d=N[b>>2];f=N[b+4>>2];g=N[b+8>>2];J[a+12>>2]=0;N[a+8>>2]=i*g;N[a+4>>2]=o*f;N[a>>2]=m*d;break a;default:break b}}Zi[J[J[b>>2]+64>>2]](a,b,c)}Ui=e+48|0}function kga(a){a=a|0;var b=0,c=0,d=0,e=Q(0),f=Q(0),g=0,h=0,i=0,j=Q(0),k=0,l=Q(0),m=0,n=0,o=0,p=Q(0),q=Q(0),r=0,s=0;b=Ui-272|0;Ui=b;o=pj(b+220|0,a,0,39481,1465);c=mk(a,2);h=Yi;d=J[J[pk(a)+80>>2]+8>>2];J[b+212>>2]=0;J[b+208>>2]=0;J[b+264>>2]=0;J[b+268>>2]=0;J[b+256>>2]=0;J[b+260>>2]=0;J[b+248>>2]=0;J[b+252>>2]=0;J[b+240>>2]=0;J[b+244>>2]=0;Al(a,1,d,80935,b+212|0,b+240|0,b+208|0);J[b+248>>2]=0;J[b+240>>2]=0;J[b+244>>2]=0;a:{if(!iQ(J[b+212>>2],c,h,b+216|0)){J[b+192>>2]=tj(c,h);a=Jj(o,71294,b+192|0);break a}Oj(a,3,5);uj(a,3);rj(a,-1,64474);d=Ej(a,-1);J[b+252>>2]=d;gj(a,-2);b:{c:{d:{switch(d|0){case 0:rj(a,-1,33817);e=Q(wj(a,-1));N[b+240>>2]=e;gj(a,-2);if(!(e>2]=33817;O[b+40>>3]=e;J[b+32>>2]=c;fj(a,154363,b+32|0);break c;case 1:rj(a,-1,20243);d=Pl(a,-1);J[b+248>>2]=J[d+8>>2];i=J[d+4>>2];J[b+240>>2]=J[d>>2];J[b+244>>2]=i;gj(a,-2);if(N[d>>2]>2];J[b+112>>2]=6267;J[b+96>>2]=i;O[b+104>>3]=e;fj(a,154363,b+96|0)}if(!(N[d+4>>2]>2];J[b+80>>2]=4406;J[b+64>>2]=c;O[b+72>>3]=e;fj(a,154363,b- -64|0);break c;case 2:break d;default:break b}}rj(a,-1,33817);e=Q(wj(a,-1));N[b+240>>2]=e;gj(a,-2);rj(a,-1,14691);f=Q(wj(a,-1));N[b+244>>2]=f;gj(a,-2);if(e>2]=33817;O[b+168>>3]=e;J[b+160>>2]=d;fj(a,154363,b+160|0)}if(!(f>2]=14691;O[b+136>>3]=f;J[b+128>>2]=c;fj(a,154363,b+128|0)}d=J[b+208>>2];h=Ui-32|0;Ui=h;i=J[b+216>>2];g=J[b+212>>2];r=J[J[g>>2]+168>>2]&2147483647;e:{if(i>>>0>=r>>>0){break e}f:{if(H[d+145|0]&1){c=J[g+20>>2];g:{if(c){c=J[c+(i<<2)>>2];break g}c=bM(J[g+8>>2],i)}h:{switch(J[b+252>>2]){case 1:k=J[J[d+132>>2]+64>>2];e=N[b+240>>2];f=N[b+244>>2];N[h+24>>2]=N[b+248>>2]*Q(.5);N[h+20>>2]=f*Q(.5);N[h+16>>2]=e*Q(.5);k=uC(k,h+16|0);SP(J[J[d+132>>2]+64>>2],g,c,k,i);break e;case 2:k=tC(J[J[d+132>>2]+64>>2],Q(N[b+240>>2]*Q(.5)),N[b+244>>2]);SP(J[J[d+132>>2]+64>>2],g,c,k,i);break e;case 0:break f;default:break h}}Z(114101,38329,1932,64925);B()}c=cM(J[g+8>>2],i);i:{switch(J[b+252>>2]){case 0:e=Q(Q(N[b+240>>2]*Q(.5))*N[J[J[d+132>>2]+36>>2]+64>>2]);N[c+12>>2]=e;N[c+8>>2]=e;$E(J[g+8>>2]);break e;case 1:k=J[d+132>>2];d=J[J[g>>2]+156>>2]+(i<<4)|0;N[h>>2]=N[d>>2];N[h+4>>2]=N[d+4>>2];N[h+8>>2]=N[d+8>>2];N[h+12>>2]=N[d+12>>2];e=Q(N[b+240>>2]*Q(.5));q=Q(N[b+244>>2]*Q(.5));j:{if(J[c+4>>2]!=2){break j}p=N[J[k+36>>2]+64>>2];e=Q(e*p);f=N[h+8>>2];j=N[h+4>>2];l=Q(Q(N[h+12>>2]*f)+Q(N[h>>2]*j));f=Q(Q(j*j)+Q(f*f));j=rp(Q(l+l),Q(Q(1)-Q(f+f)));f=Q(q*p);N[c+188>>2]=f;N[c+180>>2]=f;N[c+176>>2]=e;N[c+168>>2]=e;J[c+416>>2]=4;J[c+312>>2]=-1082130432;J[c+316>>2]=0;J[c+304>>2]=0;J[c+308>>2]=1065353216;J[c+296>>2]=1065353216;J[c+300>>2]=0;J[c+288>>2]=0;J[c+292>>2]=-1082130432;N[c+60>>2]=f;N[c+52>>2]=f;N[c+48>>2]=e;N[c+40>>2]=e;e=Q(-e);N[c+184>>2]=e;f=Q(-f);N[c+172>>2]=f;N[c+164>>2]=f;N[c+160>>2]=e;N[c+56>>2]=e;N[c+44>>2]=f;N[c+36>>2]=f;N[c+32>>2]=e;d=J[c+28>>2];J[c+24>>2]=J[c+24>>2];J[c+28>>2]=d;k=c+288|0;m=c+160|0;q=N[c+28>>2];p=N[c+24>>2];d=0;e=Rj(j);f=Hj(j);while(1){n=d<<3;g=m+n|0;j=N[g>>2];l=N[g+4>>2];N[g+4>>2]=q+Q(Q(f*j)+Q(e*l));N[g>>2]=p+Q(Q(e*j)-Q(f*l));g=k+n|0;j=N[g>>2];l=N[g+4>>2];N[g+4>>2]=Q(f*j)+Q(e*l);N[g>>2]=Q(e*j)-Q(f*l);d=d+1|0;g=J[c+416>>2];if((d|0)<(g|0)){continue}break}if((g|0)<=0){break j}g=c+32|0;k=c+160|0;d=0;while(1){m=d<<3;n=m+g|0;m=k+m|0;s=J[m+4>>2];J[n>>2]=J[m>>2];J[n+4>>2]=s;d=d+1|0;if((d|0)>2]){continue}break}}break e;default:break i}}Z(114101,38329,1950,64925);B()}e=Q(N[b+240>>2]*Q(.5));if(J[c+4>>2]!=8){Z(95347,42530,1292,98238);B()}N[c+44>>2]=e;N[c+28>>2]=e}Ui=h+32|0;if(i>>>0>=r>>>0){J[b+16>>2]=J[b+216>>2];a=Jj(o,77320,b+16|0);break a}gj(a,-2);a=0;break a}J[b>>2]=d;a=Jj(o,78268,b)}oj(o);Ui=b+272|0;return a|0} +function Cga(a){a=a|0;var b=0,c=0,d=0,e=0,f=Q(0),g=0,h=0,i=0,j=Q(0),k=Q(0),l=Q(0),m=Q(0),n=0,o=0,p=0,q=0,r=0,s=0;b=Ui-160|0;Ui=b;o=pj(b+140|0,a,0,39481,695);h=Ej(a,1);a:{if((h|0)>=6){J[b>>2]=h;r=Jj(o,79772,b);break a}g=mk(a,3);s=Yi;c=Pl(a,4);N[b+112>>2]=N[c>>2];N[b+116>>2]=N[c+4>>2];N[b+120>>2]=N[c+8>>2];c=Pl(a,6);N[b+96>>2]=N[c>>2];N[b+100>>2]=N[c+4>>2];N[b+104>>2]=N[c+8>>2];c=J[J[pk(a)+80>>2]+8>>2];J[b+92>>2]=0;J[b+88>>2]=0;J[b+48>>2]=0;J[b+52>>2]=0;J[b+40>>2]=0;J[b+44>>2]=0;J[b+32>>2]=0;J[b+36>>2]=0;J[b+24>>2]=0;J[b+28>>2]=0;d=b+24|0;Al(a,2,c,80935,b+92|0,d,b+88|0);J[b+84>>2]=0;J[b+80>>2]=0;J[b+48>>2]=0;J[b+52>>2]=0;J[b+40>>2]=0;J[b+44>>2]=0;J[b+32>>2]=0;J[b+36>>2]=0;J[b+24>>2]=0;J[b+28>>2]=0;Al(a,5,c,80935,b+84|0,d,b+80|0);if(J[b+88>>2]!=J[b+80>>2]){r=Jj(o,71662,0);break a}H[b+24|0]=0;b:{c:{switch(h|0){case 0:J[b+36>>2]=0;J[b+28>>2]=1065353216;J[b+32>>2]=0;break b;case 1:J[b+28>>2]=0;break b;case 2:I[b+50>>1]=0;I[b+52>>1]=0;I[b+54>>1]=0;I[b+56>>1]=0;J[b+44>>2]=0;J[b+48>>2]=0;J[b+36>>2]=0;J[b+40>>2]=0;break b;case 3:H[b+45|0]=0;H[b+46|0]=0;H[b+47|0]=0;H[b+48|0]=0;H[b+49|0]=0;H[b+50|0]=0;H[b+51|0]=0;H[b+52|0]=0;H[b- -64|0]=0;J[b+68>>2]=0;J[b+72>>2]=0;J[b+36>>2]=1065353216;J[b+40>>2]=0;J[b+44>>2]=0;J[b+56>>2]=0;J[b+60>>2]=0;break b;case 4:J[b+36>>2]=0;J[b+28>>2]=0;J[b+32>>2]=0;break b;case 5:break c;default:break b}}J[b+48>>2]=0;J[b+52>>2]=0;H[b+56|0]=0;J[b+60>>2]=0;J[b+64>>2]=0;J[b+36>>2]=1065353216;J[b+40>>2]=0;J[b+44>>2]=0}c=b+24|0;AP(a,h,7,c);p=J[b+92>>2];q=J[b+84>>2];e=J[b+88>>2];d:{if(H[e+145|0]&1){dj(4,88458,25611,0);a=1;break d}a=5;if((K[J[e+132>>2]+102908|0]&2)>>>1|0){break d}d=J[p+12>>2];if(d){while(1){a=2;if(J[d>>2]==(g|0)&J[d+4>>2]==(s|0)){break d}d=J[d+16>>2];if(d){continue}break}}d=J[p+8>>2];i=J[q+8>>2];a=Ui-80|0;Ui=a;e=J[e+132>>2];f=N[J[e+36>>2]+64>>2];j=Q(f*N[b+100>>2]);k=Q(f*N[b+96>>2]);l=Q(f*N[b+116>>2]);m=Q(f*N[b+112>>2]);e:{f:{switch(h|0){case 0:N[a+40>>2]=j;N[a+36>>2]=k;N[a+32>>2]=l;N[a+28>>2]=m;J[a+20>>2]=i;J[a+16>>2]=d;J[a+8>>2]=3;J[a+12>>2]=0;N[a+44>>2]=f*N[c+4>>2];N[a+48>>2]=N[c+8>>2];N[a+52>>2]=N[c+12>>2];H[a+24|0]=K[c|0];n=yt(e+40|0,a+8|0);break e;case 1:N[a+40>>2]=j;N[a+36>>2]=k;N[a+32>>2]=l;N[a+28>>2]=m;J[a+20>>2]=i;J[a+16>>2]=d;J[a+8>>2]=10;J[a+12>>2]=0;N[a+44>>2]=f*N[c+4>>2];H[a+24|0]=K[c|0];n=yt(e+40|0,a+8|0);break e;case 2:N[a+40>>2]=j;N[a+36>>2]=k;N[a+32>>2]=l;N[a+28>>2]=m;J[a+20>>2]=i;J[a+16>>2]=d;J[a+8>>2]=1;J[a+12>>2]=0;N[a+44>>2]=N[c+12>>2];N[a+52>>2]=N[c+16>>2];N[a+56>>2]=N[c+20>>2];N[a+68>>2]=N[c+24>>2];N[a+64>>2]=N[c+28>>2];H[a+48|0]=K[c+32|0];H[a+60|0]=K[c+33|0];H[a+24|0]=K[c|0];n=yt(e+40|0,a+8|0);break e;case 3:N[a+40>>2]=j;N[a+36>>2]=k;N[a+32>>2]=l;N[a+28>>2]=m;J[a+20>>2]=i;J[a+16>>2]=d;J[a+8>>2]=2;J[a+12>>2]=0;d=J[c+16>>2];J[a+44>>2]=J[c+12>>2];J[a+48>>2]=d;N[a+52>>2]=N[c+24>>2];H[a+56|0]=K[c+28|0];N[a+60>>2]=f*N[c+32>>2];N[a+64>>2]=f*N[c+36>>2];H[a+68|0]=K[c+40|0];N[a+72>>2]=f*N[c+44>>2];N[a+76>>2]=N[c+48>>2];H[a+24|0]=K[c|0];n=yt(e+40|0,a+8|0);break e;case 4:N[a+40>>2]=j;N[a+36>>2]=k;N[a+32>>2]=l;N[a+28>>2]=m;J[a+20>>2]=i;J[a+16>>2]=d;J[a+8>>2]=8;J[a+12>>2]=0;N[a+44>>2]=N[c+4>>2];N[a+48>>2]=N[c+8>>2];N[a+52>>2]=N[c+12>>2];H[a+24|0]=K[c|0];n=yt(e+40|0,a+8|0);break e;case 5:break f;default:break e}}N[a+40>>2]=j;N[a+36>>2]=k;N[a+32>>2]=l;N[a+28>>2]=m;J[a+20>>2]=i;J[a+16>>2]=d;J[a+8>>2]=7;J[a+12>>2]=0;d=J[c+16>>2];J[a+44>>2]=J[c+12>>2];J[a+48>>2]=d;N[a+56>>2]=N[c+24>>2];N[a+60>>2]=N[c+28>>2];H[a+52|0]=K[c+32|0];N[a+64>>2]=N[c+36>>2];N[a+68>>2]=N[c+40>>2];H[a+24|0]=K[c|0];n=yt(e+40|0,a+8|0)}Ui=a+80|0;a=nj(24);J[a+16>>2]=J[p+12>>2];J[a+12>>2]=n;J[a>>2]=g;J[a+4>>2]=s;J[p+12>>2]=a;J[a+8>>2]=h;g=nj(12);c=J[q+16>>2];J[g+8>>2]=a;J[g>>2]=c;J[g+4>>2]=q;J[q+16>>2]=g;J[a+20>>2]=g;a=0}if(!a){break a}J[b+20>>2]=a;J[b+16>>2]=J[(a<<2)+225184>>2];r=Jj(o,140149,b+16|0)}oj(o);Ui=b+160|0;return r|0}function DP(a,b,c,d,e){var f=0,g=0,h=0,i=0,j=Q(0),k=Q(0),l=0,m=0,n=0,o=0,p=0;f=Ui-80|0;Ui=f;g=f- -64|0;J[g>>2]=0;J[g+4>>2]=0;J[f+56>>2]=0;J[f+60>>2]=0;J[f+48>>2]=0;J[f+52>>2]=0;J[f+72>>2]=0;J[f+76>>2]=0;J[f+40>>2]=0;J[f+44>>2]=0;J[g>>2]=752;J[f+56>>2]=b;J[f+32>>2]=0;J[f+36>>2]=0;J[f+32>>2]=c;J[f+68>>2]=b;J[f+52>>2]=753;a:{b:{g=J[c+20>>2];if(!g){break b}h=J[g>>2];J[f+40>>2]=h;if(!h){break b}J[f+36>>2]=g+4;g=J[c+28>>2];if(!g){J[f+48>>2]=0;break a}J[f+48>>2]=J[g>>2];break a}if(!J[c+28>>2]){break a}dj(3,88458,15325,0)}c=J[J[c+24>>2]>>2];J[f+24>>2]=d;J[f+28>>2]=e;J[f+16>>2]=0;J[f+20>>2]=0;J[f+44>>2]=c;l=Ui-16|0;Ui=l;c:{d:{e:{f:{c=J[a+8>>2];g:{if((c|0)==J[a+4>>2]){J[l>>2]=c-J[a>>2]>>2;dj(4,94359,132604,l);a=2;break g}d=ij(nj(192),0,192);c=DC(a);J[d+64>>2]=c;h:{i:{j:{e=J[a+16>>2];if(c>>>0>2]-e>>3>>>0){c=J[e+(c<<3)>>2];e=J[a+4>>2];a=J[a>>2];if(c>>>0>=e-a>>2>>>0){break f}J[a+(c<<2)>>2]=d;c=J[f+16>>2];a=J[f+20>>2];h=a;J[d+88>>2]=J[f+52>>2];J[d+92>>2]=J[f+56>>2];J[d+96>>2]=J[f+60>>2];J[d+100>>2]=J[f+64>>2];J[d+104>>2]=J[f+68>>2];J[d+108>>2]=J[f+72>>2];J[d+68>>2]=J[f+32>>2];J[d+72>>2]=J[f+36>>2];e=J[f+40>>2];J[d+76>>2]=e;g=J[f+44>>2];J[d+80>>2]=g;J[d+84>>2]=J[f+48>>2];i=K[d+186|0];m=i|4;H[d+186|0]=m;k:{l:{m:{if(a|c){o=J[g+4>>2];if(!o){break l}p=J[g>>2];a=0;break m}J[d+168>>2]=0;J[d+172>>2]=0;J[d+160>>2]=J[g>>2];a=J[g+4>>2];H[d+186|0]=i|12;J[d+164>>2]=a;break k}while(1){n=p+P(a,80)|0;if(J[n+48>>2]!=(c|0)|J[n+52>>2]!=(h|0)){a=a+1|0;if((o|0)!=(a|0)){continue}break l}break}J[d+168>>2]=c;J[d+172>>2]=h;J[d+164>>2]=1;J[d+160>>2]=n;H[d+186|0]=i|12;break k}J[d+168>>2]=0;J[d+172>>2]=0;J[d+160>>2]=0;J[d+164>>2]=0;H[d+186|0]=m&247}a=J[g+24>>2];n:{if(!e){I[d+184>>1]=a;break n}g=J[e+4>>2];I[d+184>>1]=a>>>0>g>>>0?a:g;if(H[d+124|0]&1){break e}lj(g,176,d+112|0,d+120|0,d+116|0);i=J[d+112>>2];if(g>>>0>(J[d+120>>2]-i|0)/176>>>0){break d}J[d+116>>2]=i+P(g,176);if(g){m=J[e+4>>2];h=0;while(1){if((h|0)==(m|0)){break j}a=i+P(h,176)|0;c=J[e>>2]+P(h,192)|0;N[a+164>>2]=N[c+176>>2];J[a+160>>2]=J[c>>2];N[a>>2]=N[c+32>>2];N[a+4>>2]=N[c+36>>2];N[a+8>>2]=N[c+40>>2];N[a+12>>2]=N[c+44>>2];N[a+16>>2]=N[c+48>>2];N[a+20>>2]=N[c+52>>2];N[a+24>>2]=N[c+56>>2];N[a+32>>2]=N[c+64>>2];N[a+36>>2]=N[c+68>>2];N[a+40>>2]=N[c+72>>2];N[a+48>>2]=N[c+80>>2];N[a+52>>2]=N[c+84>>2];N[a+56>>2]=N[c+88>>2];N[a+60>>2]=N[c+92>>2];N[a+64>>2]=N[c+96>>2];N[a+68>>2]=N[c+100>>2];N[a+72>>2]=N[c+104>>2];N[a+80>>2]=N[c+112>>2];N[a+84>>2]=N[c+116>>2];N[a+88>>2]=N[c+120>>2];h=h+1|0;if((g|0)!=(h|0)){continue}break}}if(H[d+156|0]&1){break e}lj(J[e+12>>2],48,d+144|0,d+152|0,d+148|0);c=J[e+12>>2];a=J[d+144>>2];if(c>>>0>(J[d+152>>2]-a|0)/48>>>0){break d}c=P(c,48);J[d+148>>2]=c+a;ij(a,0,c);if(H[d+140|0]&1){break e}lj(J[e+12>>2],8,d+128|0,d+136|0,d+132|0);c=J[e+12>>2];a=J[d+128>>2];if(c>>>0>J[d+136>>2]-a>>3>>>0){break d}J[d+132>>2]=a+(c<<3)}c=J[f+24>>2];g=J[f+28>>2];if((c|0)==J[216274]&(g|0)==J[216275]){break h}a=J[d+84>>2];if(!a){break i}h=J[a+4>>2];if(!h){break i}i=J[a>>2];a=0;while(1){e=i+(a<<5)|0;if(J[e>>2]!=(c|0)|J[e+4>>2]!=(g|0)){a=a+1|0;if((h|0)!=(a|0)){continue}break i}break}a=K[d+186|0];h=a&1;i=d+(h<<5)|0;H[i+28|0]=K[i+28|0]&254;h=!h;H[d+186|0]=h|a&254;a=d+(h<<5)|0;J[a>>2]=e;J[a+8>>2]=c;J[a+12>>2]=g;J[a+24>>2]=4;H[a+28|0]=K[a+28|0]&252|1;k=N[e+8>>2];j=Q(k*Q(0));o:{if(!(Q(R(j))>k)){break o}j=vs(j,k);if(!(Q(R(j))>2]=j;J[(d+(h<<5)|0)+20>>2]=1065353216;break h}break f}Z(12664,55323,259,84789);B()}a=d+((H[d+186|0]&1)<<5)|0;H[a+28|0]=K[a+28|0]&254}if(K[f+76|0]==1){uK(d,Q(0))}J[b+132>>2]=d;a=0}Ui=l+16|0;break c}Z(145396,53895,487,84789);B()}Z(151729,53895,501,2284);B()}Z(144782,53895,514,59583);B()}p:{if(!a){b=0;break p}J[f>>2]=a;dj(4,88458,130661,f);b=-1e3;if((a|0)!=2){break p}dj(4,88458,15771,0)}Ui=f+80|0;return b}function Nma(a){a=a|0;var b=0,c=0,d=0,e=0,f=0,g=0,h=0,i=0,j=0,k=0,l=0,m=Q(0),n=0,o=0,p=0,q=0,r=0,s=0,t=Q(0),u=Q(0),v=0,w=0,x=Q(0),y=0,z=0,A=0,C=0;b=Ui-544|0;Ui=b;s=J[a+8>>2]-J[a+12>>2]>>4;J[b+284>>2]=256;J[b+276>>2]=b+288;J[b+280>>2]=0;J[b+268>>2]=2270;J[b+264>>2]=2271;J[b+272>>2]=b+264;Bj(a);g=qj(a,-1,J[74197],139276);gj(a,-2);g=J[g+4>>2];J[b+256>>2]=0;J[b+260>>2]=0;J[b+248>>2]=0;J[b+252>>2]=0;J[b+240>>2]=0;J[b+244>>2]=0;J[b+232>>2]=0;J[b+236>>2]=0;k=b+232|0;$l(a,k);J[b+224>>2]=0;J[b+228>>2]=0;J[b+216>>2]=0;J[b+220>>2]=0;J[b+208>>2]=0;J[b+212>>2]=0;J[b+200>>2]=0;J[b+204>>2]=0;Sk(a,1,b+200|0,k);n=J[J[g+80>>2]+8>>2];a:{if(!n){break a}g=J[n>>2];if(!g){break a}d=J[g+3216>>2];j=J[g+3220>>2]}if((d|0)!=J[b+200>>2]|J[b+204>>2]!=(j|0)){fj(a,120648,0)}b:{if(Mk(a,2)){d=bj(Ij(a,2,0));k=Yi;break b}d=Tl(a,2);k=Yi}g=d;c:{o=xk(n,J[b+216>>2],J[b+220>>2]);if(!o){J[b>>2]=nk(b+264|0,J[b+216>>2],J[b+220>>2]);d=fj(a,134772,b);break c}p=Ej(a,3);if((p|0)>=7){d=fj(a,46848,0);break c}i=ij(b+128|0,0,72);if(it(a,4,i)){d=fj(a,46783,0);break c}d:{e:{f:{g:{if(kk(a,5)){f=Ej(a,5);c=0;if((f|0)<42){break g}d=fj(a,14018,0);break c}if(!EB(a,5)){break f}l=kK(a,5);uj(a,5);h=109;f=41;e=Lk(a,-1e4);c=a}t=Q(wj(a,6));j=0;if((s|0)<7){break d}u=Q(wj(a,7));if((s|0)==7){break e}if((kj(a,8)|0)!=6){break e}q=$m(a,8);j=110;break d}d=fj(a,32154,0);break c}j=0}J[b+116>>2]=h;J[b+124>>2]=e;J[b+104>>2]=e;J[b+120>>2]=c;d=J[b+120>>2];J[b+96>>2]=J[b+116>>2];J[b+100>>2]=d;J[b+112>>2]=l;J[b+108>>2]=f;d=J[b+112>>2];J[b+88>>2]=J[b+108>>2];J[b+92>>2]=d;d=J[b+224>>2];r=J[b+228>>2];c=Ui-336|0;Ui=c;h:{if(!o){e=-6;break h}f=Zp(c+224|0);J[c+208>>2]=0;H[c+216|0]=K[c+216|0]&254;J[c+208>>2]=0;e=J[c+220>>2];J[c+88>>2]=J[c+216>>2];J[c+92>>2]=e;e=J[c+212>>2];J[c+80>>2]=J[c+208>>2];J[c+84>>2]=e;e=Cr(o,d,r,g,k,c+80|0,f);if(e){break h}if(H[f+108|0]&1){e=-9;break h}l=J[i>>2];h=J[f+32>>2];if((l|0)!=(h|0)){e=-4;if(h-3>>>0>1|l){break h}m=Q(O[i+8>>3]);i:{if((h|0)==3){N[c+120>>2]=m;N[c+116>>2]=m;N[c+112>>2]=m;J[c+136>>2]=3;N[c+144>>2]=N[c+112>>2];N[c+148>>2]=N[c+116>>2];N[c+152>>2]=N[c+120>>2];break i}N[c+108>>2]=m;N[c+104>>2]=m;N[c+100>>2]=m;N[c+96>>2]=m;Yp(c+136|0,c+96|0)}hj(i,c+136|0,72);l=J[f+32>>2]}e=-3;j:{k:{switch(l|0){case 4:case 5:l=4;case 3:n=qv(n);J[c+72>>2]=J[b+104>>2];h=J[b+100>>2];e=c- -64|0;J[e>>2]=J[b+96>>2];J[e+4>>2]=h;e=J[b+92>>2];J[c+56>>2]=J[b+88>>2];J[c+60>>2]=e;e=-7;if(!XD(n,o,d,r,g,k,p,0,Q(0),Q(0),c+56|0,t,u,j,q,1)){break h}J[b+96>>2]=0;q=i+8|0;w=f+40|0;h=0;while(1){j=h<<2;m=N[j+q>>2];x=N[j+w>>2];i=f+(h<<3)|0;y=J[i>>2];z=J[i+4>>2];i=J[f+104>>2];J[c+48>>2]=J[b+104>>2];v=J[b+100>>2];J[c+40>>2]=J[b+96>>2];J[c+44>>2]=v;v=J[b+92>>2];J[c+32>>2]=J[b+88>>2];J[c+36>>2]=v;if(!XD(n,o,d,r,y,z,p,i?i+j|0:0,x,m,c+32|0,t,u,0,0,0)){break h}h=h+1|0;if((h|0)!=(l|0)){continue}break};break j;case 0:break k;default:break h}}e=qv(n);l=J[f+104>>2];A=O[f+40>>3];C=O[i+8>>3];J[c+24>>2]=J[b+104>>2];f=J[b+100>>2];J[c+16>>2]=J[b+96>>2];J[c+20>>2]=f;f=J[b+92>>2];J[c+8>>2]=J[b+88>>2];J[c+12>>2]=f;if(XD(e,o,d,r,g,k,p,l,Q(A),Q(C),c+8|0,t,u,j,q,0)){break j}e=-7;break h}e=0}Ui=c+336|0;l:{switch(e+9|0){case 8:mj(a,158859,0);wm(a,b+200|0);lm(a,2);d=Ij(a,-1,0);gj(a,-2);J[b+36>>2]=nk(b+264|0,g,k);J[b+32>>2]=d;d=fj(a,149102,b+32|0);break c;case 5:case 6:mj(a,158859,0);wm(a,b+200|0);lm(a,2);d=Ij(a,-1,0);gj(a,-2);e=nk(b+264|0,g,k);J[b+52>>2]=d;J[b+48>>2]=e;d=fj(a,64118,b+48|0);break c;case 4:d=nk(b+264|0,J[b+224>>2],J[b+228>>2]);J[b+68>>2]=Ij(a,1,0);J[b+64>>2]=d;d=fj(a,147897,b- -64|0);break c;case 0:mj(a,158859,0);wm(a,b+200|0);lm(a,2);d=Ij(a,-1,0);gj(a,-2);e=nk(b+264|0,g,k);J[b+84>>2]=d;J[b+80>>2]=e;d=fj(a,73124,b+80|0);break c;default:J[b+16>>2]=e;d=fj(a,78523,b+16|0);break c;case 9:break l}}d=0;if(J[a+8>>2]-J[a+12>>2]>>4==(s|0)){break c}Z(42939,37509,1698,61848);B()}Ui=b+544|0;return d|0}function TQ(a,b,c,d,e,f,g){var h=0,i=0,j=0,k=0,l=0,m=0,n=0,o=0,p=0,q=0;h=Ui-160|0;Ui=h;J[h+156>>2]=0;a:{b:{c:{i=J[c+4>>2];d:{e:{if(J[i+4>>2]){o=c+72|0;q=c+12|0;l=K[d+4|0];while(1){f:{g:{h:{i=J[i>>2]+P(k,60)|0;j=J[i+16>>2];if(j>>>0<39){m=J[c+8>>2];p=J[i+56>>2];J[h+152>>2]=J[i+24>>2];j=J[(j<<2)+160184>>2];m=m+n|0;i:{if(J[i+36>>2]-3>>>0>=2){break i}J[h+152>>2]=15;j=iP(b,j,J[i>>2],J[i+4>>2]);if(ZO(a,i,K[J[c+4>>2]+12|0],m,j,q,o,h+152|0)){break i}J[h+80>>2]=a;dj(4,88458,27521,h+80|0);break f}if(!(Zi[J[79453]](b,j)|0)){break f}J[h+140>>2]=0;J[h+144>>2]=0;H[h+147|0]=0;H[h+148|0]=0;H[h+149|0]=0;H[h+150|0]=0;J[h+132>>2]=0;J[h+136>>2]=0;J[h+120>>2]=2;J[h+124>>2]=1;J[h+112>>2]=3;J[h+116>>2]=5;J[h+104>>2]=0;J[h+108>>2]=0;J[h+128>>2]=1;Zi[J[79387]](b,h+116|0,h+120|0);J[h+112>>2]=j;I[h+144>>1]=J[i>>2];I[h+146>>1]=J[i+4>>2];a=J[c+4>>2];I[h+148>>1]=J[a+12>>2];J[h+132>>2]=L[d>>1];c=L[d+2>>1];H[h+150|0]=l&l<<26>>24>>>7&31|l<<1&128;J[h+136>>2]=c;d=l&32;if(!(e|f)){H[h+103|0]=1;c=J[a+8>>2]-1|0;if(c>>>0>=4){break h}J[h+88>>2]=J[(c<<2)+160340>>2];I[h+92>>1]=J[i>>2];I[h+94>>1]=J[i+4>>2];I[h+96>>1]=J[a+12>>2];I[h+98>>1]=J[i+8>>2];I[h+100>>1]=J[i+12>>2];H[h+102|0]=J[h+152>>2];a=J[a+16>>2];if(a){H[h+103|0]=a}e=Zi[J[79454]](b,h+88|0)|0;f=Yi;break g}a=Zi[J[79460]](e,f)|0;c=Zi[J[79461]](e,f)|0;j=kP(a,K[h+150|0]&127);l=kP(c,K[h+150|0]&127);c=lP(a>>>0>c>>>0?a:c);a=H[h+150|0];j:{if(!d){break j}k=a&127;if(k>>>0<=c>>>0){break j}J[h+68>>2]=c;J[h+64>>2]=k;dj(4,88458,114903,h- -64|0);a=-1;break d}if((a|0)>=0){break g}c=L[h+146>>1];k=J[h+136>>2];n=J[h+132>>2];p=L[h+144>>1];if(l>>>0>=c+k>>>0&j>>>0>=n+p>>>0){break g}J[h+56>>2]=a&127;J[h+52>>2]=l;J[h+48>>2]=j;J[h+44>>2]=k;J[h+40>>2]=n;J[h+36>>2]=c;J[h+32>>2]=p;dj(4,88458,114810,h+32|0);a=-1;break d}Z(114101,41539,104,17090);B()}Z(114101,41539,52,64599);B()}k:{if(M[i+24>>2]>1){break k}j=2;l:{switch(J[h+116>>2]-3|0){case 0:j=1;break;case 2:break l;default:break k}}J[h+116>>2]=j}m:{a=Zi[J[79469]](b)|0;b=L[h+144>>1];c=L[h+146>>1];n:{if(!(a>>>0>=b>>>0&c>>>0<=a>>>0)){J[h+28>>2]=a;J[h+24>>2]=a;J[h+20>>2]=c;J[h+16>>2]=b;dj(4,88458,123883,h+16|0);J[h+144>>2]=65537;J[h+108>>2]=4;J[h+112>>2]=3;J[h+104>>2]=160160;H[h+150|0]=K[h+150|0]&128;break n}o:{a=J[i+24>>2];if(a>>>0<16){if(d){break o}if(!J[h+152>>2]){break e}j=0;while(1){a=j<<2;b=J[a+q>>2];p:{if(!b){if(M[i+24>>2]<=j>>>0){break c}J[h+104>>2]=J[a+J[i+20>>2]>>2]+m;if(M[i+32>>2]<=j>>>0){break b}a=a+J[i+28>>2]|0;break p}J[h+104>>2]=b;a=a+o|0}J[h+108>>2]=J[a>>2];H[h+150|0]=K[h+150|0]&128|j&127;a=j<<1;b=J[i+52>>2];if(a>>>0>=b>>>0){break a}c=J[i+48>>2];d=J[c+(a<<2)>>2];I[h+144>>1]=d;a=a|1;if(a>>>0>=b>>>0){break a}a=J[c+(a<<2)>>2];I[h+146>>1]=a;if(!(d&65535)){I[h+144>>1]=1}if(!(a&65535)){I[h+146>>1]=1}Zi[J[79457]](e,f,h+104|0,0,0);j=j+1|0;if(j>>>0>2]){continue}break}break e}Z(87093,41539,247,24498);B()}b=J[q>>2];q:{if(!b){if(!a){break c}J[h+104>>2]=J[J[i+20>>2]>>2]+m;if(!J[i+32>>2]){break m}o=J[i+28>>2];break q}J[h+104>>2]=b}J[h+108>>2]=J[o>>2]}Zi[J[79457]](e,f,h+104|0,0,0);break e}break b}n=n+p|0;k=k+1|0;i=J[c+4>>2];if(k>>>0>2]){continue}break}}J[h>>2]=a;dj(4,88458,123821,h);r:{if(e|f){break r}I[h+112>>1]=1;J[h+104>>2]=0;J[h+108>>2]=65537;I[h+118>>1]=257;I[h+114>>1]=1;I[h+116>>1]=1;e=Zi[J[79454]](b,h+104|0)|0;a=Yi;f=a;if(a|e){break r}a=-13;break d}J[h+140>>2]=0;J[h+144>>2]=0;H[h+147|0]=0;H[h+148|0]=0;H[h+149|0]=0;H[h+150|0]=0;J[h+132>>2]=0;J[h+136>>2]=0;J[h+128>>2]=1;J[h+120>>2]=2;J[h+124>>2]=1;J[h+112>>2]=3;J[h+116>>2]=5;J[h+104>>2]=0;J[h+108>>2]=0;Zi[J[79387]](b,h+116|0,h+120|0);J[h+144>>2]=65537;J[h+108>>2]=4;J[h+112>>2]=3;J[h+104>>2]=160160;H[h+150|0]=K[h+150|0]&128;Zi[J[79457]](e,f,h+104|0,0,0)}J[g>>2]=e;J[g+4>>2]=f;a=0}Ui=h+160|0;return a}Z(12664,55030,249,84789);B()}Z(12664,55030,257,84789);B()}Z(12664,55030,274,84789);B()} +function vH(a,b,c,d,e,f,g,h){var i=0,j=0,k=0,l=0,m=0,n=0,o=0,p=0,q=0,r=0,s=0;i=-16640;a:{switch(J[a+164>>2]){case 0:k=Ui-1024|0;Ui=k;l=J[a+4>>2];b:{c:{d:{e:{f:{g:{h:{if((d|0)==1){i=-16512;if(J[a+164>>2]|l-1025>>>0<4294966287){break b}i=Vt(a,b,c,f,k);if(i){break c}c=l&1;b=2;d=K[k+1|0]^2;f=K[k|0];if((l|0)!=3){break h}i=0;break g}i=-16512;if(l-1025>>>0<4294966287){break b}if(!d){break f}i=Vt(a,b,c,f,k);if(!i){break e}break c}o=(l&2046)-4|0;a=0;while(1){n=j;i=b+k|0;j=!K[i|0]|a;a=a^-1;i=j|!K[i+1|0];j=n+((j-1&a&128)>>>7|0)+((a&i-1&128)>>>7)|0;b=b+2|0;n=(m|0)==(o|0);a=i;m=m+2|0;if(!n){continue}break}}m=d|f;if(!c){break d}a=i^-1;i=!K[b+k|0]|i;j=((a&i-1&128)>>>7|0)+j|0;break d}i=$q(a,f,k);if(i){break c}}f=l&1;m=K[k|0]|K[k+1|0]^1;i:{if((l|0)==3){b=2;i=0;break i}o=(l&2046)-4|0;i=0;b=2;a=0;while(1){d=b+k|0;n=K[d|0];i=!n|i;c=i&255;p=K[d+1|0];i=i|!p;d=i&255;m=(d?0:p^-1)&255|((c?0:n^-1)&255|m);j=!d+(!c+j|0)|0;b=b+2|0;c=(a|0)==(o|0);a=a+2|0;if(!c){continue}break}}if(!f){break d}b=K[b+k|0];i=!b|i;a=i&255;m=(a?0:b^-1)&255|m;j=!a+j|0}a=l-11|0;d=a>>>0>h>>>0?h:a;n=!(i&255)|(j-8>>>31|m);b=n?d:(l-j|0)-3|0;c=d-b|0;p=(c|0)>=0;if(!(!(n|c>>>31)|l>>>0<12)){ij(k|11,0,a)}j=p?b:d;a=k+l|0;l=a-d|0;j:{if(!d){break j}c=a-1|0;a=d-1|0;if(a){q=a&-4;o=a&3;r=d-2>>>0<3;m=0;while(1){s=m-j|0;k:{if((s|0)>=0){b=0;i=0;a=0;if(!r){while(1){f=i+l|0;H[f|0]=K[f+1|0];H[f+1|0]=K[f+2|0];H[f+2|0]=K[f+3|0];i=i+4|0;H[f+3|0]=K[l+i|0];a=a+4|0;if((q|0)!=(a|0)){continue}break}}if(!o){break k}while(1){a=i+l|0;i=i+1|0;H[a|0]=K[l+i|0];b=b+1|0;if((o|0)!=(b|0)){continue}break}break k}b=0;i=0;a=0;if(!r){while(1){f=i+l|0;H[f|0]=K[f|0];H[f+1|0]=K[f+1|0];H[f+2|0]=K[f+2|0];i=i+4|0;H[f+3|0]=K[f+3|0];a=a+4|0;if((q|0)!=(a|0)){continue}break}}if(!o){break k}while(1){a=i+l|0;i=i+1|0;H[a|0]=K[a|0];b=b+1|0;if((o|0)!=(b|0)){continue}break}}H[c|0]=K[c|0]&s>>31;m=m+1|0;if((d|0)!=(m|0)){continue}break}break j}b=0;i=0;if(d>>>0>=4){f=d&-4;a=0;while(1){H[c|0]=K[c|0]&i-j>>31;H[c|0]=K[c|0]&(i|1)-j>>31;H[c|0]=K[c|0]&(i|2)-j>>31;H[c|0]=K[c|0]&(i|3)-j>>31;i=i+4|0;a=a+4|0;if((f|0)!=(a|0)){continue}break}}a=d&3;if(!a){break j}while(1){H[c|0]=K[c|0]&i-j>>31;i=i+1|0;b=b+1|0;if((a|0)!=(b|0)){continue}break}}if(h){hj(g,l,d)}i=n?-16640:p?0:-17408;J[e>>2]=j}Zi[J[66509]](k,0,1024)|0}Ui=k+1024|0;return i;case 1:k=Ui-1104|0;Ui=k;l:{if((d|0)==1){i=-16512;if(J[a+164>>2]!=1){break l}}i=-16512;o=J[a+4>>2];if(o-1025>>>0<4294966287){break l}m=J[a+168>>2]-3|0;if(m>>>0<=5){m=J[(m<<2)+266328>>2]}else{m=0}if(!m){break l}l=(m?J[m+8>>2]:0)&255;n=l<<1;if(o>>>0>>0){break l}m:{if(!d){i=$q(a,f,k+80|0);break m}i=Vt(a,b,c,f,k+80|0)}n:{if(i){break n}a=k+4|0;J[a>>2]=0;J[a+4>>2]=0;J[a+8>>2]=0;i=oo(a,m,0);if(i){Kl(a);break n}a=k+80|1;j=a+l|0;o:{b=o+(l^-1)|0;c=k+4|0;i=Xr(a,l,j,b,c);if(!i){i=Xr(j,b,a,l,c);if(!i){break o}}Kl(k+4|0);break n}Kl(k+4|0);if(m){i=Zi[J[m+28>>2]](0,0,k+16|0)|0}else{i=-20736}if(i){break n}m=K[k+80|0];if(l){d=l&3;b=0;p:{if(l>>>0<4){i=0;break p}f=l&252;i=0;a=0;while(1){c=(k+16|0)+i|0;m=K[j+3|0]^K[c+3|0]|(K[j|0]^K[c|0]|m|K[j+1|0]^K[c+1|0]|K[j+2|0]^K[c+2|0]);i=i+4|0;j=j+4|0;a=a+4|0;if((f|0)!=(a|0)){continue}break}}if(d){while(1){m=K[j|0]^K[(k+16|0)+i|0]|m;j=j+1|0;i=i+1|0;b=b+1|0;if((d|0)!=(b|0)){continue}break}}j=(k+80|0)+(n|1)|0}a=0;b=o-2|0;q:{if((b|0)==(n|0)){break q}b=b-n|0;c=b>>>0<=1?1:b;d=c&1;r:{if(b>>>0<2){i=0;f=0;break r}l=c&-2;i=0;f=0;b=0;while(1){c=i;i=f+j|0;c=c|K[i|0];i=c|K[i+1|0];a=(((c|0-c&128)>>>7^1)+a|0)+((i|0-i&128)>>>7^1)|0;f=f+2|0;b=b+2|0;if((l|0)!=(b|0)){continue}break}}if(!d){break q}b=a;a=K[f+j|0]|i;a=b+((0-a&128|a)>>>7^1)|0}a=a+j|0;if(m&255|K[a|0]^1){i=-16640;break n}b=a+1|0;a=o+((k+80|0)-b|0)|0;if(a>>>0>h>>>0){i=-17408;break n}J[e>>2]=a;i=0;if(!a){break n}hj(g,b,a)}Zi[J[66509]](k+80|0,0,1024)|0;Zi[J[66509]](k+16|0,0,64)|0}Ui=k+1104|0;break;default:break a}}return i}function To(a,b,c,d,e){var f=0,g=0,h=0,i=0,j=0,k=0,l=0,m=0,n=0,o=0,p=0,q=0,r=0,s=0;g=Ui-1600|0;Ui=g;l=J[d+4>>2];a:{if(!l){h=-4;break a}i=J[d+8>>2];j=i-4|0;f=l;b:{while(1){if(J[j+(f<<2)>>2]){break b}f=f-1|0;if(f){continue}break}h=-4;break a}h=-4;if(J[d>>2]<=0){break a}k=J[i>>2];if(!(k&1)){break a}c:{i=J[c+4>>2];if(!i){break c}j=J[c+8>>2]-4|0;f=i;while(1){if(!J[j+(f<<2)>>2]){f=f-1|0;if(f){continue}break c}break}if(J[c>>2]>=0){break c}break a}J[g+1576>>2]=0;J[g+1568>>2]=1;J[g+1572>>2]=0;J[g+1564>>2]=0;J[g+1556>>2]=1;J[g+1560>>2]=0;J[g+12>>2]=0;J[g+4>>2]=1;J[g+8>>2]=0;ij(g+16|0,0,1536);j=1;d:{if(!i){break d}f=J[c+8>>2];e:{while(1){i=i-1|0;if(!i){m=J[f>>2];i=32;break e}m=J[f+(i<<2)>>2];if(!m){continue}break}i=(i<<5)+32|0}f=0;if((m|0)>=0){h=-2147483648;while(1){j=f;if(f>>>0<=30){f=f+1|0;h=h>>>1|0;if(!(m&h)){continue}}break}f=j^-1}else{f=0}f=f+i|0;j=6;if(f>>>0>671){break d}j=5;if(f>>>0>239){break d}j=4;if(f>>>0>79){break d}j=f>>>0>23?3:1}h=-16;f=l+1|0;f:{if(f>>>0>1e4){break f}g:{h:{i:{m=J[a+4>>2];if(m>>>0>>0){i=Zj(f,4);if(!i){break g}l=J[a+8>>2];if(l){m=m<<2;hj(i,l,m);Zi[J[66509]](l,0,m)|0;cj(J[a+8>>2])}J[a+8>>2]=i;J[a+4>>2]=f;m=g+16|12;break i}m=g+16|12;if(f){break i}break h}i=Zj(f,4);if(!i){break g}J[g+36>>2]=i;J[g+32>>2]=f;if(f>>>0>5e3){break f}p=f<<1;n=Zj(p,4);if(!n){break g}J[g+1564>>2]=n;J[g+1560>>2]=p}r=J[b>>2];if((r|0)==-1){f=g+4|0;h=sk(f,b);if(h){break f}J[g+4>>2]=1;b=f}j:{if(!(J[e+8>>2]?e:0)){f=g+1568|0;h=kl(f,1);if(h){break f}h=Vn(f,J[d+4>>2]<<6);if(h){break f}h=Bl(f,f,d);if(h){break f}if(!e){break j}f=J[g+1572>>2];J[e>>2]=J[g+1568>>2];J[e+4>>2]=f;J[e+8>>2]=J[g+1576>>2];break j}J[g+1576>>2]=J[e+8>>2];f=J[e+4>>2];J[g+1568>>2]=J[e>>2];J[g+1572>>2]=f}k:{if((_j(b,d)|0)>=0){h=Bl(m,b,d);if(!h){break k}break f}h=sk(m,b);if(h){break f}}b=g+1568|0;f=k+((k<<1)+4&8)|0;f=P(2-P(f,k)|0,f);f=P(2-P(f,k)|0,f);l=P(P(f,k)-2|0,f);f=g+1556|0;h=Ro(m,b,d,l,f);if(h){break f}h=sk(a,b);if(h){break f}J[g+1596>>2]=1;J[g+1584>>2]=1;J[g+1588>>2]=1;J[g+1592>>2]=g+1596;h=Ro(a,g+1584|0,d,l,f);if(h){break f}l:{if(j>>>0<2){break l}k=j-1|0;f=1<>2]+1|0);if(h){break f}h=sk(i,m);if(h){break f}b=0;while(1){h=Ro(i,i,d,l,g+1556|0);if(h){break f}b=b+1|0;if((k|0)!=(b|0)){continue}break}while(1){b=f+1|0;if(b>>>j|0){break l}k=g+16|0;i=k+P(b,12)|0;h=Aw(i,J[d+4>>2]+1|0);if(h){break f}h=sk(i,k+P(f,12)|0);if(h){break f}f=b;h=Ro(i,m,d,l,g+1556|0);if(!h){continue}break}break f}q=J[c+4>>2];k=0;i=0;b=0;while(1){if(!i){if(!q){if(o){b=1<>2]=1;J[g+1584>>2]=1;J[g+1588>>2]=1;J[g+1592>>2]=g+1596;h=Ro(a,g+1584|0,d,l,g+1556|0);if(h|(r|0)!=-1){break f}h=0;if(!J[c+4>>2]|!(H[J[c+8>>2]]&1)){break f}J[a>>2]=-1;h=Ql(a,d,a);break f}q=q-1|0;i=32}f=b;b=0;i=i-1|0;h=J[J[c+8>>2]+(q<<2)>>2]>>>i&1;if(!(h|f)){continue}if(!(h|(f|0)!=1)){b=1;h=Ro(a,a,d,l,g+1556|0);if(!h){continue}break f}o=o+1|0;k=h<>>j|0)){while(1){a=(g+16|0)+P(i,12)|0;b=J[a+8>>2];if(b){Zi[J[66509]](b,0,J[a+4>>2]<<2)|0;cj(J[a+8>>2])}J[a+8>>2]=0;J[a>>2]=1;J[a+4>>2]=0;i=i+1|0;if(!(i>>>j|0)){continue}break}}a=J[g+36>>2];if(a){Zi[J[66509]](a,0,J[g+32>>2]<<2)|0;cj(J[g+36>>2])}J[g+36>>2]=0;J[g+28>>2]=1;J[g+32>>2]=0;if(n){Zi[J[66509]](n,0,p<<2)|0;cj(n)}a=J[g+12>>2];if(a){Zi[J[66509]](a,0,J[g+8>>2]<<2)|0;cj(J[g+12>>2])}J[g+12>>2]=0;J[g+4>>2]=1;J[g+8>>2]=0;if(J[e+8>>2]?e:0){break a}a=J[g+1576>>2];if(!a){break a}Zi[J[66509]](a,0,J[g+1572>>2]<<2)|0;cj(J[g+1576>>2])}Ui=g+1600|0;return h}function qR(a,b,c){var d=0,e=0,f=0,g=0,h=0,i=Q(0);a:{b:{c:{switch(J[J[b+16>>2]+(c<<2)>>2]){case 0:e=J[a+4>>2];d=J[a>>2];if(e>>>0>=M[d+4>>2]){break b}i=N[J[b+24>>2]+(J[J[b+12>>2]+(c<<2)>>2]<<2)>>2];b=J[b+8>>2]+(c<<3)|0;c=J[b>>2];b=J[b+4>>2];J[a+4>>2]=e+1;f=J[d+8>>2]+(e<<3)|0;J[f>>2]=c;J[f+4>>2]=b;b=e<<2;J[b+J[d+16>>2]>>2]=0;c=b+J[d+12>>2]|0;b=J[a+8>>2];J[c>>2]=b;N[J[d+24>>2]+(b<<2)>>2]=i;J[a+8>>2]=b+1;return;case 1:e=J[a+4>>2];d=J[a>>2];if(e>>>0>=M[d+4>>2]){break b}f=J[b+20>>2]+(J[J[b+12>>2]+(c<<2)>>2]<<3)|0;g=J[f>>2];f=J[f+4>>2];b=J[b+8>>2]+(c<<3)|0;c=J[b>>2];b=J[b+4>>2];J[a+4>>2]=e+1;h=J[d+8>>2]+(e<<3)|0;J[h>>2]=c;J[h+4>>2]=b;b=e<<2;J[b+J[d+16>>2]>>2]=1;c=b+J[d+12>>2]|0;b=J[a+12>>2];J[c>>2]=b;c=J[d+20>>2]+(b<<3)|0;J[c>>2]=g;J[c+4>>2]=f;J[a+12>>2]=b+1;return;case 2:e=J[a+4>>2];d=J[a>>2];if(e>>>0>=M[d+4>>2]){break b}f=J[J[b+12>>2]+(c<<2)>>2];c=J[b+8>>2]+(c<<3)|0;g=J[c>>2];c=J[c+4>>2];h=J[b+28>>2];J[a+4>>2]=e+1;b=J[d+8>>2]+(e<<3)|0;J[b>>2]=g;J[b+4>>2]=c;b=e<<2;J[b+J[d+16>>2]>>2]=2;c=b+J[d+12>>2]|0;b=J[a+20>>2];J[c>>2]=b;b=b+J[d+28>>2]|0;c=f+h|0;d=K[c+4|0]|K[c+5|0]<<8|(K[c+6|0]<<16|K[c+7|0]<<24);e=K[c|0]|K[c+1|0]<<8|(K[c+2|0]<<16|K[c+3|0]<<24);H[b|0]=e;H[b+1|0]=e>>>8;H[b+2|0]=e>>>16;H[b+3|0]=e>>>24;H[b+4|0]=d;H[b+5|0]=d>>>8;H[b+6|0]=d>>>16;H[b+7|0]=d>>>24;d=K[c+28|0]|K[c+29|0]<<8|(K[c+30|0]<<16|K[c+31|0]<<24);e=K[c+24|0]|K[c+25|0]<<8|(K[c+26|0]<<16|K[c+27|0]<<24);H[b+24|0]=e;H[b+25|0]=e>>>8;H[b+26|0]=e>>>16;H[b+27|0]=e>>>24;H[b+28|0]=d;H[b+29|0]=d>>>8;H[b+30|0]=d>>>16;H[b+31|0]=d>>>24;d=K[c+20|0]|K[c+21|0]<<8|(K[c+22|0]<<16|K[c+23|0]<<24);e=K[c+16|0]|K[c+17|0]<<8|(K[c+18|0]<<16|K[c+19|0]<<24);H[b+16|0]=e;H[b+17|0]=e>>>8;H[b+18|0]=e>>>16;H[b+19|0]=e>>>24;H[b+20|0]=d;H[b+21|0]=d>>>8;H[b+22|0]=d>>>16;H[b+23|0]=d>>>24;d=K[c+12|0]|K[c+13|0]<<8|(K[c+14|0]<<16|K[c+15|0]<<24);c=K[c+8|0]|K[c+9|0]<<8|(K[c+10|0]<<16|K[c+11|0]<<24);H[b+8|0]=c;H[b+9|0]=c>>>8;H[b+10|0]=c>>>16;H[b+11|0]=c>>>24;H[b+12|0]=d;H[b+13|0]=d>>>8;H[b+14|0]=d>>>16;H[b+15|0]=d>>>24;J[a+20>>2]=J[a+20>>2]+32;return;case 3:e=J[a+4>>2];d=J[a>>2];if(e>>>0>=M[d+4>>2]){break b}f=J[J[b+12>>2]+(c<<2)>>2];c=J[b+8>>2]+(c<<3)|0;g=J[c>>2];c=J[c+4>>2];h=J[b+24>>2];J[a+4>>2]=e+1;b=J[d+8>>2]+(e<<3)|0;J[b>>2]=g;J[b+4>>2]=c;b=e<<2;J[b+J[d+16>>2]>>2]=3;c=b+J[d+12>>2]|0;b=J[a+8>>2];J[c>>2]=b;c=J[d+24>>2]+(b<<2)|0;d=(f<<2)+h|0;N[c>>2]=N[d>>2];N[c+4>>2]=N[d+4>>2];N[c+8>>2]=N[d+8>>2];J[a+8>>2]=b+3;return;case 4:e=J[a+4>>2];d=J[a>>2];if(e>>>0>=M[d+4>>2]){break b}f=J[J[b+12>>2]+(c<<2)>>2];c=J[b+8>>2]+(c<<3)|0;g=J[c>>2];h=J[c+4>>2];c=J[b+24>>2];J[a+4>>2]=e+1;b=J[d+8>>2]+(e<<3)|0;J[b>>2]=g;J[b+4>>2]=h;b=e<<2;J[b+J[d+16>>2]>>2]=4;break a;case 5:e=J[a+4>>2];d=J[a>>2];if(e>>>0>=M[d+4>>2]){break b}f=J[J[b+12>>2]+(c<<2)>>2];c=J[b+8>>2]+(c<<3)|0;g=J[c>>2];h=J[c+4>>2];c=J[b+24>>2];J[a+4>>2]=e+1;b=J[d+8>>2]+(e<<3)|0;J[b>>2]=g;J[b+4>>2]=h;b=e<<2;J[b+J[d+16>>2]>>2]=5;break a;case 6:e=J[a+4>>2];d=J[a>>2];if(e>>>0>=M[d+4>>2]){break b}f=K[J[b+32>>2]+J[J[b+12>>2]+(c<<2)>>2]|0];b=J[b+8>>2]+(c<<3)|0;c=J[b>>2];b=J[b+4>>2];J[a+4>>2]=e+1;g=J[d+8>>2]+(e<<3)|0;J[g>>2]=c;J[g+4>>2]=b;b=e<<2;J[b+J[d+16>>2]>>2]=6;c=b+J[d+12>>2]|0;b=J[a+16>>2];J[c>>2]=b;H[b+J[d+32>>2]|0]=(f|0)!=0;J[a+16>>2]=J[a+16>>2]+1;return;case 7:e=J[a+4>>2];d=J[a>>2];if(e>>>0>=M[d+4>>2]){break b}f=J[J[b+12>>2]+(c<<2)>>2];c=J[b+8>>2]+(c<<3)|0;g=J[c>>2];c=J[c+4>>2];b=J[b+32>>2];J[a+4>>2]=e+1;h=J[d+8>>2]+(e<<3)|0;J[h>>2]=g;J[h+4>>2]=c;c=e<<2;J[c+J[d+16>>2]>>2]=7;e=c+J[d+12>>2]|0;c=J[a+16>>2];J[e>>2]=c;c=c+J[d+32>>2]|0;d=b+f|0;b=yj(d)+1|0;hj(c,d,b);J[a+16>>2]=b+J[a+16>>2];return;default:break c}}Z(62644,39139,603,2811);B()}Z(12601,39139,270,2838);B()}e=J[a+8>>2];J[J[d+12>>2]+b>>2]=e;b=J[d+24>>2]+(e<<2)|0;c=(f<<2)+c|0;N[b>>2]=N[c>>2];N[b+4>>2]=N[c+4>>2];N[b+8>>2]=N[c+8>>2];N[b+12>>2]=N[c+12>>2];J[a+8>>2]=e+4}function zU(a,b,c){var d=0,e=0,f=0,g=0,h=0,i=0,j=0,k=0,l=0,m=0,n=0,o=0,p=0,q=0,r=0,s=0,t=0,u=0,v=0,w=0,x=0,y=0,z=0,A=0,C=0,D=0,E=0,F=0,G=0,H=0,N=0,O=0,P=0,Q=0,R=0;e=Ui-256|0;Ui=e;a:{b:{if(!b){b=J[a>>2];tt(a,b,b+J[a+4>>2]|0);b=J[a+12>>2];vt(a+12|0,b,b+(J[a+16>>2]<<2)|0);h=1;b=J[a+24>>2];ut(a+24|0,b,b+(J[a+28>>2]<<1)|0);break b}f=J[a+4>>2];if((f|0)!=(b|0)){if(b>>>0>=f>>>0){if(M[a+8>>2]>>0){An(a,b,(f+1|0)==(b|0),1);f=J[a+4>>2]}ij(J[a>>2]+f|0,0,b-f|0)}J[a+4>>2]=b}hj(J[a>>2],c,b);if(J[a+16>>2]){J[a+16>>2]=0}o=a+12|0;f=0;if(M[a+20>>2]<1024){An(o,1024,0,4);f=J[a+16>>2]}ij(J[a+12>>2]+(f<<2)|0,0,1024-f<<2);J[a+16>>2]=1024;if(J[a+28>>2]){J[a+28>>2]=0}m=a+24|0;d=b<<1;if(d){if(d>>>0>M[a+32>>2]){An(m,d,0,2);g=J[a+28>>2]}ij(J[a+24>>2]+(g<<1)|0,0,d-g<<1);J[a+28>>2]=d}ij(e+128|0,0,128);f=0;while(1){d=K[c+f|0];if(d>>>0>31){break b}d=(e+128|0)+(d<<2)|0;J[d>>2]=J[d>>2]+1;f=f+1|0;if((f|0)!=(b|0)){continue}break}J[e+4>>2]=0;p=J[e+132>>2];d=p<<1;J[e+8>>2]=d;q=J[e+136>>2];d=d+q<<1;J[e+12>>2]=d;r=J[e+140>>2];d=d+r<<1;J[e+16>>2]=d;s=J[e+144>>2];d=d+s<<1;J[e+20>>2]=d;t=J[e+148>>2];d=d+t<<1;J[e+24>>2]=d;u=J[e+152>>2];d=d+u<<1;J[e+28>>2]=d;v=J[e+156>>2];d=d+v<<1;J[e+32>>2]=d;w=J[e+160>>2];d=d+w<<1;J[e+36>>2]=d;x=J[e+164>>2];d=d+x<<1;J[e+40>>2]=d;y=J[e+168>>2];d=d+y<<1;J[e+44>>2]=d;z=J[e+172>>2];d=d+z<<1;J[e+48>>2]=d;A=J[e+176>>2];d=d+A<<1;J[e+52>>2]=d;C=J[e+180>>2];d=d+C<<1;J[e+56>>2]=d;D=J[e+184>>2];d=d+D<<1;J[e+60>>2]=d;E=J[e+188>>2];d=d+E<<1;J[e+64>>2]=d;F=J[e+192>>2];d=d+F<<1;J[e+68>>2]=d;G=J[e+196>>2];d=d+G<<1;J[e+72>>2]=d;H=J[e+200>>2];d=d+H<<1;J[e+76>>2]=d;N=J[e+204>>2];d=d+N<<1;J[e+80>>2]=d;O=J[e+208>>2];d=d+O<<1;J[e+84>>2]=d;P=J[e+212>>2];d=d+P<<1;J[e+88>>2]=d;Q=J[e+216>>2];d=d+Q<<1;J[e+92>>2]=d;R=J[e+220>>2];d=d+R<<1;J[e+96>>2]=d;j=J[e+224>>2];d=j+d<<1;J[e+100>>2]=d;k=J[e+228>>2];d=k+d<<1;J[e+104>>2]=d;l=J[e+232>>2];d=l+d<<1;J[e+108>>2]=d;n=J[e+236>>2];d=n+d<<1;J[e+112>>2]=d;g=J[e+240>>2];d=g+d<<1;J[e+116>>2]=d;f=J[e+244>>2];d=f+d<<1;J[e+120>>2]=d;i=J[e+248>>2];d=i+d<<1;J[e+124>>2]=d;if((d|0)!=-2147483648){if((i+(f+(g+(n+(l+(k+(j+((((((((((((((((((((((p+q|0)+r|0)+s|0)+t|0)+u|0)+v|0)+w|0)+x|0)+y|0)+z|0)+A|0)+C|0)+D|0)+E|0)+F|0)+G|0)+H|0)+N|0)+O|0)+P|0)+Q|0)+R|0)|0)|0)|0)|0)|0)|0)|0)!=1){break b}}h=1;if((b|0)<=0){break b}l=0;d=-1;while(1){j=K[c+l|0];c:{if(!j){break c}i=(j<<2)+e|0;f=J[i>>2];J[i>>2]=f+1;n=j&3;h=0;d:{if(j>>>0<4){g=0;break d}i=j&252;g=0;k=0;while(1){g=f>>>3&1|(f>>>2&1|(f&2|(f<<2&4|g<<3)))<<1;f=f>>>4|0;k=k+4|0;if((i|0)!=(k|0)){continue}break}}if(n){while(1){g=f&1|g<<1;f=f>>>1|0;h=h+1|0;if((n|0)!=(h|0)){continue}break}}if(j>>>0<=10){if(g>>>0>=1024){break c}n=j<<16|l;h=1<>2];while(1){if(M[a+16>>2]<=g>>>0){break a}i=f+(g<<2)|0;if(J[i>>2]){h=0;break b}J[i>>2]=n;g=g+h|0;if(g>>>0<1024){continue}break}break c}i=g&1023;if(i>>>0>=M[a+16>>2]){break a}i=J[o>>2]+(i<<2)|0;f=J[i>>2];e:{if(f){i=d;d=f;break e}J[i>>2]=d;i=d-2|0}if((d|0)>=0){h=0;break b}k=g>>>9|0;if((j|0)>11){while(1){h=0;k=k>>>1|0;f=d-(k&1)|0;if((f|0)>=0){break b}g=J[a+28>>2];d=f^-1;f:{if((g|0)>(d|0)){f=g;break f}f=0-f|0;if((g|0)==(f|0)){f=g;break f}if(f>>>0>=g>>>0){if(M[a+32>>2]>>0){An(m,f,(g+1|0)==(f|0),2);g=J[a+28>>2]}ij(J[m>>2]+(g<<1)|0,0,f-g<<1)}J[a+28>>2]=f}if(d>>>0>=f>>>0){break a}f=J[m>>2]+(d<<1)|0;d=I[f>>1];g:{if(!d){I[f>>1]=i;d=i;i=d-2|0;break g}if((d|0)>=0){break b}}j=j-1|0;if((j|0)>11){continue}break}}f=(k>>>1&1)-d|0;if((f|0)<=0){h=0;break b}d=f-1|0;h=J[a+28>>2];h:{if((h|0)>=(f|0)){f=h;break h}if(f>>>0>=h>>>0){if(M[a+32>>2]>>0){An(m,f,(h+1|0)==(f|0),2);h=J[a+28>>2]}ij(J[m>>2]+(h<<1)|0,0,f-h<<1)}J[a+28>>2]=f}if(d>>>0>=f>>>0){break a}h=0;d=J[m>>2]+(d<<1)|0;if(L[d>>1]){break b}I[d>>1]=l;d=i}h=1;l=l+1|0;if((l|0)!=(b|0)){continue}break}}Ui=e+256|0;return h}Z(58877,54122,366,84789);B()}function YL(a,b,c,d,e,f){var g=0,h=0,i=0,j=Q(0),k=Q(0),l=0,m=0,n=Q(0),o=0;h=Ui-112|0;Ui=h;a:{if(!f){dj(4,89293,124531,0);break a}j=N[b+8>>2];b:{if(!J[b+4>>2]){if(j!=Q(0)){break b}dj(4,89293,116754,0);break a}if(!(j>Q(0))){break b}dj(4,89293,116811,0);break a}o=J[a+36>>2];J[h+80>>2]=0;J[h+84>>2]=0;J[h+72>>2]=0;J[h+76>>2]=0;J[h+64>>2]=0;J[h+68>>2]=0;J[h+108>>2]=1065353216;I[h+96>>1]=257;j=Q(1);g=J[a+103108>>2];c:{if(!g){break c}i=J[b>>2];if(i){Zi[g|0](i,h);j=N[o+64>>2];N[h+68>>2]=N[h+20>>2]*j;N[h+64>>2]=j*N[h+16>>2];j=N[h+8>>2];k=N[h+4>>2];n=Q(Q(N[h+12>>2]*j)+Q(N[h>>2]*k));j=Q(Q(k*k)+Q(j*j));N[h+72>>2]=rp(Q(n+n),Q(Q(1)-Q(j+j)));j=N[h+32>>2];k=N[h+36>>2];j=j>2];J[h+60>>2]=g?(g|0)!=2:2;J[h+104>>2]=J[b>>2];N[h+88>>2]=N[b+20>>2];N[h+92>>2]=N[b+24>>2];g=K[b+32|0];H[h+98|0]=g&1;H[h+100|0]=g>>>2&1;H[h+99|0]=g>>>1&1;d:{m=a+40|0;if(!(K[m+102868|0]&2)){a=Hl(m,152);e:{f:{g:{h:{i:{j:{i=h+60|0;if(!((J[i+4>>2]&2147483647)>>>0>2139095039|(J[i+8>>2]&2147483647)>>>0>=2139095040)){if((J[i+16>>2]&2147483647)>>>0>2139095039|(J[i+20>>2]&2147483647)>>>0>=2139095040){break j}if((J[i+12>>2]&2147483647)>>>0>=2139095040){break i}if((J[i+24>>2]&2147483647)>>>0>=2139095040){break h}l=J[i+32>>2];g=l&2147483647;l=(l|0)<0;if(g-1>>>0<8388607&l|(g|0)==2139095040|g>>>0>2139095040|l&g-8388608>>>0<2130706432){break g}l=J[i+28>>2];g=l&2147483647;l=(l|0)<0;if(g-1>>>0<8388607&l|(g|0)==2139095040|g>>>0>2139095040|l&g-8388608>>>0<2130706432){break f}g=K[i+39|0]?8:0;I[a+4>>1]=g;if(K[i+38|0]==1){g=g|16;I[a+4>>1]=g}if(K[i+36|0]==1){g=g|4;I[a+4>>1]=g}if(K[i+37|0]==1){g=g|2;I[a+4>>1]=g}if(K[i+40|0]==1){I[a+4>>1]=g|32}J[a+88>>2]=m;l=J[i+8>>2];g=J[i+4>>2];J[a+12>>2]=g;J[a+16>>2]=l;k=N[i+12>>2];J[a+44>>2]=g;J[a+48>>2]=l;J[a+36>>2]=g;J[a+40>>2]=l;J[a+28>>2]=0;J[a+32>>2]=0;N[a+24>>2]=Rj(k);N[a+20>>2]=Hj(k);k=N[i+12>>2];J[a+108>>2]=0;J[a+112>>2]=0;J[a+60>>2]=0;N[a+56>>2]=k;N[a+52>>2]=k;J[a+92>>2]=0;J[a+96>>2]=0;g=J[i+20>>2];J[a+64>>2]=J[i+16>>2];J[a+68>>2]=g;N[a+72>>2]=N[i+24>>2];N[a+132>>2]=N[i+28>>2];N[a+136>>2]=N[i+32>>2];k=N[i+48>>2];J[a+144>>2]=0;J[a+84>>2]=0;J[a+76>>2]=0;J[a+80>>2]=0;N[a+140>>2]=k;g=J[i>>2];J[a+124>>2]=0;J[a+128>>2]=0;J[a>>2]=g;k=(g|0)==2?Q(1):Q(0);N[a+120>>2]=k;N[a+116>>2]=k;g=J[i+44>>2];J[a+100>>2]=0;J[a+104>>2]=0;J[a+148>>2]=g;break e}Z(145570,36890,27,3765);B()}Z(145519,36890,28,3765);B()}Z(139360,36890,29,3765);B()}Z(135433,36890,30,3765);B()}Z(58308,36890,31,3765);B()}Z(58368,36890,32,3765);B()}J[a+92>>2]=0;g=J[m+102952>>2];J[a+96>>2]=g;if(g){J[g+92>>2]=a}J[m+102952>>2]=a;J[m+102960>>2]=J[m+102960>>2]+1;break d}Z(62630,42374,110,3678);B()}g=a;k:{if(!(!d|!e)){a=0;while(1){m=(a^-1)+f|0;l=m<<4;i=l+d|0;k=N[i>>2];n=N[i+4>>2];i=e+l|0;i=GL(o,J[(m<<2)+c>>2],k,n,N[i+8>>2],N[i+12>>2],j);I[h+26>>1]=0;J[h+4>>2]=J[b>>2];I[h+22>>1]=L[b+28>>1];m=L[b+30>>1];J[h+16>>2]=1065353216;J[h>>2]=i;I[h+24>>1]=m;N[h+8>>2]=N[b+12>>2];N[h+12>>2]=N[b+16>>2];H[h+20|0]=J[b+4>>2]==3;cF(g,h);a=a+1|0;if((f|0)!=(a|0)){continue}break}break k}c=(f<<2)+c|0;a=0;while(1){d=GL(o,J[c+((a^-1)<<2)>>2],Q(0),Q(0),Q(0),Q(1),j);I[h+26>>1]=0;J[h+4>>2]=J[b>>2];I[h+22>>1]=L[b+28>>1];e=L[b+30>>1];J[h+16>>2]=1065353216;J[h>>2]=d;I[h+24>>1]=e;N[h+8>>2]=N[b+12>>2];N[h+12>>2]=N[b+16>>2];H[h+20|0]=J[b+4>>2]==3;cF(g,h);a=a+1|0;if((f|0)!=(a|0)){continue}break}}if(J[g>>2]!=2){break a}f=J[g+100>>2];if(!f){break a}k=N[b+8>>2];j=Q(0);while(1){a=J[f+12>>2];Zi[J[J[a>>2]+28>>2]](a,h,Q(1));j=Q(j+N[h>>2]);f=J[f+4>>2];if(f){continue}break}if(j<=Q(0)){break a}l:{b=J[g+100>>2];if(b){j=Q(k/j);a=(C(j),v(2));c=a&2147483647;if(!(!c|a-1>>>0<8388607|c-8388608>>>0<2130706432&(a|0)>=0)){break l}while(1){N[b>>2]=j;b=J[b+4>>2];if(b){continue}break}}Hr(g);break a}Z(58185,55589,303,1737);B()}Ui=h+112|0;return g}function Zra(a,b){a=a|0;b=b|0;var c=0,d=0,e=0,f=0,g=0,h=0,i=0,j=0,k=0,l=0,m=Q(0);f=Ui-32|0;Ui=f;g=a+4|0;AT(g,((P(J[a+112>>2],J[a+16>>2])|0)/100|0)+1|0);if(J[a+124>>2]){c=((P(J[a+108>>2],J[a+56>>2])|0)/100|0)+1|0;AT(a+44|0,c);c=J[a+124>>2]-c|0;J[a+124>>2]=(c|0)>0?c:0}c=(J[a+104>>2]+1|0)%2|0;J[a+104>>2]=c;i=a+84|0;c=J[i+(c<<2)>>2];if(c){h=a+44|0;while(1){d=J[c+52>>2];l=d?d+56|0:i+(J[c+60>>2]<<2)|0;d=J[c+56>>2];J[l>>2]=d;if(d){J[d+52>>2]=J[c+52>>2]}J[c+52>>2]=0;e=J[a+92>>2];J[c+56>>2]=e;if(e){J[e+52>>2]=c}J[a+92>>2]=c;bz(g,J[c+48>>2]);e=J[c+28>>2];J[f+8>>2]=J[c+24>>2];J[f+12>>2]=e;e=J[c+20>>2];J[f>>2]=J[c+16>>2];J[f+4>>2]=e;e=J[c+44>>2];J[f+24>>2]=J[c+40>>2];J[f+28>>2]=e;e=J[c+36>>2];J[f+16>>2]=J[c+32>>2];J[f+20>>2]=e;e=cz(h,f,c);J[c+60>>2]=2;J[c+48>>2]=e;c=d;if(c){continue}break}H[a+154|0]=1;J[a+124>>2]=J[a+56>>2]}J[f>>2]=244280;J[f+4>>2]=a;c=K[a+153|0];a:{b:{if((c|0)==1){dz(g,J[a+4>>2],J[a+44>>2],f);if(H[a+153|0]&1){break b}break a}if(!c){break a}}c=J[g>>2];dz(g,c,c,f)}c:{if(K[a+154|0]!=1){break c}c=J[a+96>>2];i=Zi[J[J[c>>2]+28>>2]](c)|0;c=J[i+4>>2];if((c|0)<=0){break c}d=J[a+120>>2];g=(P(J[a+116>>2],c)|0)/100|0;d=(d|0)>(g|0)?d:g;e=(c|0)<(d|0)?c:d;d:{if((d|0)>0){c=0;while(1){g=J[i+12>>2]+((J[a+144>>2]+c|0)%J[i+4>>2]<<4)|0;h=J[g>>2];d=J[h+48>>2];j=J[g+4>>2];g=J[j+48>>2];e:{f:{if(!(N[d>>2]<=N[g+16>>2])|!(N[d+16>>2]>=N[g>>2])|(!(N[d+4>>2]<=N[g+20>>2])|!(N[d+20>>2]>=N[g+4>>2]))){break f}if(!(N[d+8>>2]<=N[g+24>>2])){break f}if(N[d+24>>2]>=N[g+8>>2]){break e}}d=J[a+96>>2];Zi[J[J[d>>2]+12>>2]](d,h,j,b)|0;c=c-1|0;e=e-1|0}c=c+1|0;if((e|0)>(c|0)){continue}break}c=J[i+4>>2];if((c|0)<=0){break d}}J[a+144>>2]=(J[a+144>>2]+e|0)%(c|0);break c}J[a+144>>2]=0}H[a+154|0]=0;J[a+120>>2]=1;J[a+140>>2]=J[a+140>>2]+1;c=J[a+132>>2];d=J[a+128>>2];if(d){m=Q(Q(c>>>0)/Q(d>>>0))}else{m=Q(0)}N[a+136>>2]=m;J[a+132>>2]=c>>>1;J[a+128>>2]=d>>>1;Ui=f+32|0;f=0;i=0;c=0;d=J[a+96>>2];if(Zi[J[J[d>>2]+56>>2]](d)|0){d=J[a+96>>2];e=Zi[J[J[d>>2]+28>>2]](d)|0;d=J[e+4>>2];if((d|0)>=2){Sr(e,0,d-1|0);d=J[e+4>>2]}if((d|0)>0){while(1){j=J[e+12>>2]+(i<<4)|0;g=J[j+4>>2];l=c;c=J[j>>2];g:{h:{if((l|0)==(c|0)&(f|0)==(g|0)){break h}f=J[c+48>>2];h=J[g+48>>2];if(!(N[f>>2]<=N[h+16>>2])|!(N[f+16>>2]>=N[h>>2])|(!(N[f+4>>2]<=N[h+20>>2])|!(N[f+20>>2]>=N[h+4>>2]))){break h}if(!(N[f+8>>2]<=N[h+24>>2])){break h}if(N[f+24>>2]>=N[h+8>>2]){break g}}d=J[a+96>>2];Zi[J[J[d>>2]+32>>2]](d,j,b);J[j>>2]=0;J[j+4>>2]=0;k=k+1|0;d=J[e+4>>2]}f=g;i=i+1|0;if((i|0)<(d|0)){continue}break}if((d|0)>=2){Sr(e,0,d-1|0);d=J[e+4>>2]}a=d-k|0;i:{if((k|0)>=0){break i}if((a|0)>J[e+8>>2]){f=0;j:{if((d|0)==(k|0)){break j}f=Yj(a<<4);c=J[e+4>>2];if((c|0)<=0){break j}i=0;if((c|0)!=1){l=c&2147483646;b=0;while(1){j=i<<4;g=j+f|0;h=j+J[e+12>>2]|0;J[g>>2]=J[h>>2];J[g+4>>2]=J[h+4>>2];J[g+8>>2]=J[h+8>>2];J[g+12>>2]=J[h+12>>2];h=j|16;g=h+f|0;h=h+J[e+12>>2]|0;J[g>>2]=J[h>>2];J[g+4>>2]=J[h+4>>2];J[g+8>>2]=J[h+8>>2];J[g+12>>2]=J[h+12>>2];i=i+2|0;b=b+2|0;if((l|0)!=(b|0)){continue}break}}if(!(c&1)){break j}c=i<<4;b=c+f|0;c=c+J[e+12>>2]|0;J[b>>2]=J[c>>2];J[b+4>>2]=J[c+4>>2];J[b+8>>2]=J[c+8>>2];J[b+12>>2]=J[c+12>>2]}b=J[e+12>>2];if(!(b?!b|K[e+16|0]!=1:1)){J[83765]=J[83765]+1;Zi[J[61751]](J[b-4>>2])}J[e+12>>2]=f;H[e+16|0]=1;J[e+8>>2]=a}b=0;f=0-k&3;if(f){while(1){c=J[e+12>>2]+(d<<4)|0;J[c>>2]=0;J[c+4>>2]=0;J[c+8>>2]=0;J[c+12>>2]=0;d=d+1|0;b=b+1|0;if((f|0)!=(b|0)){continue}break}}if(k>>>0>4294967292){break i}while(1){b=d<<4;c=b+J[e+12>>2]|0;J[c>>2]=0;J[c+4>>2]=0;J[c+8>>2]=0;J[c+12>>2]=0;c=b+J[e+12>>2]|0;J[c+24>>2]=0;J[c+28>>2]=0;J[c+16>>2]=0;J[c+20>>2]=0;c=b+J[e+12>>2]|0;J[c+40>>2]=0;J[c+44>>2]=0;J[c+32>>2]=0;J[c+36>>2]=0;b=b+J[e+12>>2]|0;J[b+56>>2]=0;J[b+60>>2]=0;J[b+48>>2]=0;J[b+52>>2]=0;d=d+4|0;if((a|0)!=(d|0)){continue}break}}d=a}J[e+4>>2]=d}}function hV(a){var b=0,c=Q(0),d=Q(0),e=Q(0),f=Q(0),g=Q(0),h=Q(0),i=Q(0),j=Q(0),k=Q(0),l=Q(0),m=Q(0),n=Q(0),o=Q(0),p=Q(0),q=Q(0),r=Q(0),s=Q(0),t=Q(0),u=Q(0),v=Q(0),w=Q(0),x=Q(0),y=0,z=Q(0),A=Q(0),C=Q(0),D=0,E=Q(0),F=0,G=0,H=0,I=0,K=Q(0),L=Q(0);a:{if(J[a+48>>2]>0){y=J[a+28>>2];while(1){b:{c:{b=J[a+40>>2]+P(F,152)|0;H=J[b+144>>2];if(H-1>>>0<=1){f=N[b+132>>2];i=N[b+124>>2];C=N[b+128>>2];p=N[b+120>>2];d=N[b+136>>2];g=Q(d*N[b+16>>2]);n=Q(-g);j=N[b+20>>2];G=P(J[b+116>>2],12);D=G+y|0;q=N[D>>2];k=N[D+8>>2];l=N[b+12>>2];I=P(J[b+112>>2],12);y=I+y|0;r=N[y>>2];m=N[y+8>>2];s=N[b+4>>2];c=N[b+76>>2];o=N[D+4>>2];t=N[b+8>>2];w=N[y+4>>2];x=N[b>>2];h=N[b+72>>2];e=Q(-h);z=Q(j-Q(N[b+28>>2]*Q(Q(Q(Q(Q(q-Q(k*l))-r)+Q(m*s))*c)+Q(Q(Q(Q(o+Q(k*t))-w)-Q(m*x))*e))));g=g>z?z:g;g=g>2]=g;g=Q(g-j);j=Q(g*e);u=l;l=Q(c*g);g=Q(k+Q(f*Q(Q(t*j)-Q(u*l))));k=Q(m-Q(C*Q(Q(x*j)-Q(s*l))));m=Q(o+Q(i*j));n=Q(q+Q(i*l));j=Q(w-Q(p*j));l=Q(r-Q(p*l));D=(H|0)==1;if(!D){break c}break b}Z(109763,39721,318,17949);B()}d=Q(d*N[b+52>>2]);q=Q(-d);r=N[b+56>>2];s=N[b+48>>2];o=N[b+40>>2];t=N[b+44>>2];w=N[b+36>>2];x=Q(r-Q(N[b+64>>2]*Q(Q(Q(Q(Q(n-Q(g*s))-l)+Q(k*o))*c)+Q(Q(Q(Q(m+Q(g*t))-j)-Q(k*w))*e))));d=d>x?x:d;d=d>2]=d;d=Q(d-r);e=Q(d*e);d=Q(c*d);g=Q(Q(f*Q(Q(t*e)-Q(s*d)))+g);k=Q(Q(Q(-C)*Q(Q(w*e)-Q(o*d)))+k);m=Q(m+Q(i*e));n=Q(n+Q(i*d));j=Q(j-Q(p*e));l=Q(l-Q(p*d))}d:{if(D){e=N[b+16>>2];d=N[b+12>>2];q=N[b+4>>2];r=N[b+8>>2];s=N[b>>2];o=Q(e-Q(N[b+24>>2]*Q(Q(Q(Q(Q(Q(n-Q(g*d))-l)+Q(k*q))*h)+Q(c*Q(Q(Q(m+Q(g*r))-j)-Q(k*s))))-N[b+32>>2])));o=o>Q(0)?o:Q(0);N[b+16>>2]=o;u=f;f=Q(o-e);c=Q(c*f);h=Q(h*f);g=Q(Q(u*Q(Q(r*c)-Q(d*h)))+g);k=Q(k-Q(C*Q(Q(s*c)-Q(q*h))));m=Q(m+Q(i*c));n=Q(n+Q(i*h));j=Q(j-Q(p*c));l=Q(l-Q(p*h));break d}e=N[b+16>>2];if(!(e>=Q(0))){break a}d=N[b+52>>2];if(!(d>=Q(0))){break a}e:{q=N[b+12>>2];r=N[b+4>>2];s=N[b+8>>2];o=N[b>>2];u=N[b+104>>2];t=Q(Q(Q(Q(Q(Q(Q(n-Q(g*q))-l)+Q(k*r))*h)+Q(c*Q(Q(Q(m+Q(g*s))-j)-Q(k*o))))-N[b+32>>2])-Q(Q(N[b+96>>2]*e)+Q(d*u)));w=N[b+48>>2];x=N[b+40>>2];z=N[b+44>>2];E=N[b+36>>2];K=N[b+100>>2];A=Q(Q(Q(Q(Q(Q(Q(n-Q(g*w))-l)+Q(k*x))*h)+Q(c*Q(Q(Q(m+Q(g*z))-j)-Q(k*E))))-N[b+68>>2])-Q(Q(K*e)+Q(d*N[b+108>>2])));v=Q(Q(N[b+80>>2]*t)+Q(N[b+88>>2]*A));if(!(v<=Q(0))){break e}L=Q(Q(N[b+84>>2]*t)+Q(A*N[b+92>>2]));if(!(L<=Q(0))){break e}t=Q(-L);N[b+52>>2]=t;A=Q(-v);N[b+16>>2]=A;u=f;e=Q(A-e);f=Q(c*e);e=Q(h*e);d=Q(t-d);c=Q(c*d);h=Q(h*d);g=Q(Q(u*Q(Q(Q(s*f)-Q(q*e))+Q(Q(z*c)-Q(w*h))))+g);k=Q(k-Q(C*Q(Q(Q(o*f)-Q(r*e))+Q(Q(E*c)-Q(x*h)))));c=Q(f+c);m=Q(m+Q(i*c));f=i;i=Q(e+h);n=Q(n+Q(f*i));j=Q(j-Q(p*c));l=Q(l-Q(p*i));break d}v=Q(t*Q(-N[b+24>>2]));if(!(!(v>=Q(0))|!(Q(Q(K*v)+A)>=Q(0)))){J[b+52>>2]=0;N[b+16>>2]=v;u=f;d=Q(Q(0)-d);f=Q(c*d);d=Q(h*d);e=Q(v-e);c=Q(c*e);h=Q(h*e);g=Q(Q(u*Q(Q(Q(z*f)-Q(w*d))+Q(Q(s*c)-Q(q*h))))+g);k=Q(k-Q(C*Q(Q(Q(E*f)-Q(x*d))+Q(Q(o*c)-Q(r*h)))));c=Q(f+c);m=Q(m+Q(i*c));f=i;i=Q(d+h);n=Q(n+Q(f*i));j=Q(j-Q(p*c));l=Q(l-Q(p*i));break d}v=Q(A*Q(-N[b+60>>2]));if(!(!(v>=Q(0))|!(Q(Q(u*v)+t)>=Q(0)))){N[b+52>>2]=v;J[b+16>>2]=0;u=f;e=Q(Q(0)-e);f=Q(c*e);e=Q(h*e);d=Q(v-d);c=Q(c*d);h=Q(h*d);g=Q(Q(u*Q(Q(Q(s*f)-Q(q*e))+Q(Q(z*c)-Q(w*h))))+g);k=Q(k-Q(C*Q(Q(Q(o*f)-Q(r*e))+Q(Q(E*c)-Q(x*h)))));c=Q(f+c);m=Q(m+Q(i*c));f=i;i=Q(e+h);n=Q(n+Q(f*i));j=Q(j-Q(p*c));l=Q(l-Q(p*i));break d}if(!(t>=Q(0))|!(A>=Q(0))){break d}J[b+52>>2]=0;J[b+16>>2]=0;u=f;e=Q(Q(0)-e);f=Q(c*e);e=Q(h*e);d=Q(Q(0)-d);c=Q(c*d);h=Q(h*d);g=Q(Q(u*Q(Q(Q(s*f)-Q(q*e))+Q(Q(z*c)-Q(w*h))))+g);k=Q(k-Q(C*Q(Q(Q(o*f)-Q(r*e))+Q(Q(E*c)-Q(x*h)))));c=Q(f+c);m=Q(m+Q(i*c));f=i;i=Q(e+h);n=Q(n+Q(f*i));j=Q(j-Q(p*c));l=Q(l-Q(p*i))}N[y+4>>2]=j;N[y>>2]=l;b=J[a+28>>2];N[(b+I|0)+8>>2]=k;b=b+G|0;N[b+4>>2]=m;N[b>>2]=n;y=J[a+28>>2];N[(G+y|0)+8>>2]=g;F=F+1|0;if((F|0)>2]){continue}break}}return}Z(58223,39721,413,17949);B()}function sH(a){var b=0,c=0,d=0,e=0,f=0,g=0,h=0,i=0,j=0,k=0,l=0,m=0,n=0,o=0,p=0,q=0;e=Ui-368|0;Ui=e;f=J[a+68>>2];j=J[a+84>>2];o=J[a+64>>2];J[j+76>>2]=J[o+128>>2];J[j+208>>2]=J[a+20>>2];b=-28928;k=J[f+1120>>2];i=J[67261];d=0;a:{if(!i){break a}c=269040;n=J[k+8>>2];if((n|0)!=J[67260]){while(1){i=J[c+12>>2];d=0;if(!i){break a}g=J[c+8>>2];c=c+8|0;if((g|0)!=(n|0)){continue}break}}d=i}n=d;b:{if(!n){break b}c=J[k+12>>2]-3|0;if(c>>>0<=5){i=J[(c<<2)+266328>>2]}else{i=0}if(!i){break b}c=J[a+20>>2];c:{if((c|0)<=2){J[f+1112>>2]=2290;J[f+1108>>2]=2291;J[f+1116>>2]=2292;break c}b=-27648;if((c|0)!=3){break b}if(J[k+12>>2]==7){J[f+1112>>2]=2293;J[f+1108>>2]=2294;J[f+1116>>2]=2295;break c}J[f+1112>>2]=2296;J[f+1108>>2]=2297;J[f+1116>>2]=2298}if(!J[f+2252>>2]){c=J[a+68>>2];d:{if(J[c+2272>>2]!=1){c=f+1128|0;b=64;g=15391;break d}Zi[J[c+1108>>2]](a,e);c=e;if(J[a+20>>2]!=3){b=36;g=15382;break d}b=J[k+12>>2]==7?48:32;g=15382}d=f+1192|0;b=Zi[J[f+1116>>2]](d,J[f+1124>>2],g,c,b,o+52|0,48)|0;if(b){break b}Zi[J[66509]](d,0,1060)|0}d=f+1184|0;c=d;g=J[c+4>>2];J[e+360>>2]=J[c>>2];J[e+364>>2]=g;l=f+1176|0;c=l;g=J[c+4>>2];J[e+352>>2]=J[c>>2];J[e+356>>2]=g;c=f+1168|0;g=J[c+4>>2];J[e+344>>2]=J[c>>2];J[e+348>>2]=g;g=f+1160|0;h=J[g+4>>2];J[e+336>>2]=J[g>>2];J[e+340>>2]=h;h=f+1152|0;b=J[h+4>>2];J[e+328>>2]=J[h>>2];J[e+332>>2]=b;b=f+1144|0;m=J[b+4>>2];J[e+320>>2]=J[b>>2];J[e+324>>2]=m;m=J[f+1132>>2];J[e+304>>2]=J[f+1128>>2];J[e+308>>2]=m;m=f+1136|0;p=J[m+4>>2];J[e+312>>2]=J[m>>2];J[e+316>>2]=p;p=J[g+4>>2];J[f+1128>>2]=J[g>>2];J[f+1132>>2]=p;p=J[c+4>>2];J[m>>2]=J[c>>2];J[m+4>>2]=p;m=J[l+4>>2];J[b>>2]=J[l>>2];J[b+4>>2]=m;b=J[d+4>>2];J[h>>2]=J[d>>2];J[h+4>>2]=b;h=J[e+308>>2];b=J[e+304>>2];H[g|0]=b;H[g+1|0]=b>>>8;H[g+2|0]=b>>>16;H[g+3|0]=b>>>24;H[g+4|0]=h;H[g+5|0]=h>>>8;H[g+6|0]=h>>>16;H[g+7|0]=h>>>24;h=J[e+316>>2];b=J[e+312>>2];H[c|0]=b;H[c+1|0]=b>>>8;H[c+2|0]=b>>>16;H[c+3|0]=b>>>24;H[c+4|0]=h;H[c+5|0]=h>>>8;H[c+6|0]=h>>>16;H[c+7|0]=h>>>24;c=l;l=J[e+324>>2];h=J[e+320>>2];H[c|0]=h;H[c+1|0]=h>>>8;H[c+2|0]=h>>>16;H[c+3|0]=h>>>24;H[c+4|0]=l;H[c+5|0]=l>>>8;H[c+6|0]=l>>>16;H[c+7|0]=l>>>24;c=d;d=J[e+332>>2];l=J[e+328>>2];H[c|0]=l;H[c+1|0]=l>>>8;H[c+2|0]=l>>>16;H[c+3|0]=l>>>24;H[c+4|0]=d;H[c+5|0]=d>>>8;H[c+6|0]=d>>>16;H[c+7|0]=d>>>24;Zi[J[66509]](e+304|0,0,64)|0;l=o+52|0;h=f+1128|0;b=Zi[J[f+1116>>2]](l,48,47549,h,64,e+48|0,256)|0;if(b){break b}b=-27648;d=J[n+4>>2];if(d>>>0>10){break b}m=J[n+8>>2];c=1<>2]:0)&255;b=J[o+124>>2]==1?10:c;J[j+12>>2]=b;i=J[n+16>>2];J[j+4>>2]=i;if(J[n+4>>2]==7){break g}k=J[n+24>>2];d=k+b|0;d=J[o+128>>2]!=1?d-((b>>>0)%(k>>>0)|0)|0:d;J[j>>2]=d;b=-27648;h:{switch(J[a+20>>2]){case 0:case 1:break f;case 2:case 3:break h;default:break e}}b=d+i|0;break g}c=0;J[j+12>>2]=0;i=12;b=K[k+36|0];d=(d|0)==10?12:4;J[j+8>>2]=d;J[j+4>>2]=12;b=b&2?8:16;J[j+16>>2]=b;b=(b-d|0)+12|0}J[j>>2]=b}b=-27648;if(H[J[a>>2]+184|0]&1){break e}k=e+48|0;p=k+(c<<1)|0;d=m>>>3|0;o=p+d|0;m=d+o|0;q=J[j+8>>2];i=q?q:i;hj(j+20|0,m,i);hj(j+36|0,i+m|0,i);if(J[a+20>>2]<=0){break e}if(c){iq(j+52|0,k,c);iq(j- -64|0,c+k|0,c)}b=J[a>>2];k=J[b+68>>2];if(k){Zi[k|0](J[b+76>>2],l,e+48|0,c,d,i)|0;b=J[a>>2]}k=J[b+72>>2];if(k){m=J[b+76>>2];q=e+48|0;b=J[f+1116>>2];a=2;i:{if((b|0)==2292){break i}a=3;if((b|0)==2295){break i}a=((b|0)==2298)<<2}Zi[k|0](m,l,q,c,d,i,g,h,a)|0}a=j+80|0;b=Dw(a,n);if(b){break e}c=j+144|0;b=Dw(c,n);if(b){break e}b=Ew(a,p,J[n+8>>2],1);if(b){break e}b=Ew(c,o,J[n+8>>2],0);if(b){break e}b=0;if(J[n+4>>2]!=2){break e}b=VH(a);if(b){break e}b=VH(c)}Zi[J[66509]](e+48|0,0,256)|0;Zi[J[66509]](h,0,64)|0}Ui=e+368|0;return b}function yha(a){a=a|0;var b=0,c=0,d=0,e=0,f=0,g=0,h=0,i=0,j=0,k=0,l=0,m=0,n=Q(0),o=0,p=0,q=Q(0),r=0;l=Ui-32|0;Ui=l;p=pj(l+12|0,a,1,42133,2551);c=mk(a,1);a:{b:{d=Xp(a,J[78228],c,Yi,80832);g=J[d+96>>2];if(g){b=J[d+80>>2];f=Zi[J[79460]](J[b>>2],J[b+4>>2])|0;b=J[d+80>>2];k=Zi[J[79461]](J[b>>2],J[b+4>>2])|0;Fj(a,0,0);c=J[g+16>>2];b=J[g+20>>2];c:{if(c|b){Bk(a,c,b);break c}xj(a,J[g>>2])}ej(a,-2,62928);mj(a,20110,10);Fj(a,0,0);o=J[g+104>>2];d:{e:{f:{b=J[g+28>>2];if(b){while(1){if(b>>>0<=e>>>0){break d}i=J[g+24>>2]+P(e,36)|0;m=J[i+12>>2];if(m>>>0>=M[g+80>>2]){break e}j=J[J[g+76>>2]+(m<<2)>>2];d=J[i+16>>2];c=J[a+8>>2];J[c+8>>2]=3;e=e+1|0;O[c>>3]=e|0;J[a+8>>2]=J[a+8>>2]+16;Fj(a,0,0);xj(a,J[i>>2]);ej(a,-2,72520);b=J[i+4>>2];c=J[a+8>>2];J[c+8>>2]=3;O[c>>3]=b|0;J[a+8>>2]=J[a+8>>2]+16;ej(a,-2,52997);b=J[i+8>>2];c=J[a+8>>2];J[c+8>>2]=3;O[c>>3]=b|0;J[a+8>>2]=J[a+8>>2]+16;ej(a,-2,14691);b=J[i+20>>2];c=J[a+8>>2];J[c+8>>2]=3;O[c>>3]=b|0;J[a+8>>2]=J[a+8>>2]+16;ej(a,-2,19855);c=J[i+24>>2];if(c>>>0>=7){break f}b=J[(c<<2)+160420>>2];c=J[a+8>>2];J[c+8>>2]=3;O[c>>3]=b|0;J[a+8>>2]=J[a+8>>2]+16;ej(a,-2,51422);c=J[a+8>>2];J[c+8>>2]=3;b=j+1|0;O[c>>3]=b|0;J[a+8>>2]=J[a+8>>2]+16;ej(a,-2,10376);c=J[a+8>>2];J[c+8>>2]=3;O[c>>3]=d+(b-m|0)|0;J[a+8>>2]=J[a+8>>2]+16;ej(a,-2,71372);b=J[i+28>>2];c=J[a+8>>2];J[c+8>>2]=1;J[c>>2]=(b|0)!=0;J[a+8>>2]=J[a+8>>2]+16;ej(a,-2,50151);b=J[i+32>>2];c=J[a+8>>2];J[c+8>>2]=1;J[c>>2]=(b|0)!=0;J[a+8>>2]=J[a+8>>2]+16;ej(a,-2,50577);Xj(a,-3);b=J[g+28>>2];if(e>>>0>>0){continue}break}}Xj(a,-3);mj(a,23613,10);Fj(a,0,0);if(o){q=Q(f>>>0);r=+(k>>>0);b=0;while(1){g:{h:{i:{j:{if(M[g+104>>2]>b>>>0){d=J[g+100>>2];c=J[a+8>>2];J[c+8>>2]=3;e=c;c=b+1|0;O[e>>3]=c|0;J[a+8>>2]=J[a+8>>2]+16;Fj(a,0,0);f=P(b,56)+d|0;if(H[f+28|0]&1){break j}if(H[f+36|0]&1){break i}if(M[f+44>>2]%3|0){break h}h=+M[f>>2];b=J[a+8>>2];J[b+8>>2]=3;O[b>>3]=h;J[a+8>>2]=J[a+8>>2]+16;ej(a,-2,52997);h=+M[f+4>>2];b=J[a+8>>2];J[b+8>>2]=3;O[b>>3]=h;J[a+8>>2]=J[a+8>>2]+16;ej(a,-2,14691);h=+N[f+48>>2]+.5;b=J[a+8>>2];J[b+8>>2]=3;O[b>>3]=h;J[a+8>>2]=J[a+8>>2]+16;ej(a,-2,5854);h=+Q(Q(1)-Q(N[f+52>>2]+Q(.5)));b=J[a+8>>2];J[b+8>>2]=3;O[b>>3]=h;J[a+8>>2]=J[a+8>>2]+16;ej(a,-2,4238);mj(a,25047,8);b=0;Fj(a,0,0);e=J[f+28>>2];if(!e){break g}while(1){if(b>>>0>=e>>>0){break b}k=b|1;if(k>>>0>=e>>>0){break b}d=J[f+24>>2];n=N[d+(k<<2)>>2];j=J[f+4>>2];h=+Q((+N[d+(b<<2)>>2]+.5)*+M[f>>2]);d=J[a+8>>2];J[d+8>>2]=3;O[d>>3]=h;J[a+8>>2]=J[a+8>>2]+16;Ik(a,-2,k);d=J[a+8>>2];J[d+8>>2]=3;O[d>>3]=Q((.5-+n)*+(j>>>0));J[a+8>>2]=J[a+8>>2]+16;b=b+2|0;Ik(a,-2,b);e=J[f+28>>2];if(e>>>0>b>>>0){continue}break}break g}Z(12664,54737,162,84789);B()}Z(113354,42133,2630,25892);B()}Z(113326,42133,2631,25892);B()}Z(113294,42133,2632,25892);B()}Xj(a,-3);mj(a,17417,3);b=0;Fj(a,0,0);k:{e=J[f+36>>2];if(!e){break k}l:{while(1){if(b>>>0>>0){j=b|1;if(j>>>0>=e>>>0){break l}d=J[f+32>>2];n=N[d+(j<<2)>>2];h=+Q(N[d+(b<<2)>>2]*q);d=J[a+8>>2];J[d+8>>2]=3;O[d>>3]=h;J[a+8>>2]=J[a+8>>2]+16;Ik(a,-2,j);d=J[a+8>>2];J[d+8>>2]=3;O[d>>3]=Q((1-+n)*r);J[a+8>>2]=J[a+8>>2]+16;b=b+2|0;Ik(a,-2,b);e=J[f+36>>2];if(e>>>0>b>>>0){continue}break k}break}break a}break a}Xj(a,-3);mj(a,25223,7);b=0;Fj(a,0,0);m:{e=J[f+44>>2];if(!e){break m}while(1){if(b>>>0>>0){j=J[J[f+40>>2]+(b<<2)>>2];d=J[a+8>>2];J[d+8>>2]=3;O[d>>3]=j|0;J[a+8>>2]=J[a+8>>2]+16;b=b+1|0;Ik(a,-2,b);e=J[f+44>>2];if(e>>>0>b>>>0){continue}break m}break}Z(12664,54737,75,84789);B()}Xj(a,-3);Xj(a,-3);b=c;if((o|0)!=(b|0)){continue}break}}Xj(a,-3);oj(p);Ui=l+32|0;return 1}Z(114101,42133,1758,51431);B()}Z(12664,54737,138,84789);B()}Z(12664,54737,96,84789);B()}Z(15128,42133,2557,25892);B()}Z(12664,54737,59,84789);B()}Z(12664,54737,67,84789);B()}function Mha(a){a=a|0;var b=0,c=0,d=0,e=0,f=0,g=0,h=0,i=0,j=0,k=0,l=0,m=0,n=0,o=0,p=0,q=0,r=0,s=0;b=Ui-672|0;Ui=b;j=pj(b+396|0,a,2,42133,1042);e=b+320|0;ij(e,0,72);JQ(a,e);k=J[b+356>>2]-3>>>0<2;g=J[b+360>>2];if(!g){i=nj(P(J[b+380>>2],P(J[b+372>>2],J[b+368>>2])))}q=$m(sx(a),4);J[b+248>>2]=J[b+352>>2];e=J[b+348>>2];J[b+240>>2]=J[b+344>>2];J[b+244>>2]=e;d=16;e=J[b+340>>2];J[b+232>>2]=J[b+336>>2];J[b+236>>2]=e;e=J[b+332>>2];J[b+224>>2]=J[b+328>>2];J[b+228>>2]=e;J[b+284>>2]=J[b+388>>2];e=J[b+324>>2];J[b+216>>2]=J[b+320>>2];J[b+220>>2]=e;e=J[b+384>>2];J[b+276>>2]=J[b+380>>2];J[b+280>>2]=e;e=J[b+364>>2];J[b+312>>2]=0;J[b+316>>2]=0;J[b+304>>2]=0;J[b+308>>2]=0;J[b+296>>2]=0;J[b+300>>2]=0;J[b+288>>2]=0;J[b+292>>2]=0;J[b+272>>2]=1;J[b+264>>2]=1;J[b+268>>2]=1;J[b+260>>2]=e;J[b+252>>2]=0;J[b+256>>2]=0;e=b+40|0;hj(e,b+216|0,72);c=b+288|0;cQ(e,c);J[b+208>>2]=0;J[b+212>>2]=0;J[b+200>>2]=0;J[b+204>>2]=0;ND(c,b+200|0);J[b+196>>2]=0;f=J[b+200>>2];e=J[b+204>>2]-f|0;l=J[b+320>>2];e=wq(J[78228],0,l,f,e,e,b+196|0);rQ(c,!g);a:{b:{if(e){c=J[b+328>>2];d=J[b+332>>2];J[b+32>>2]=tj(c,d);J[b+24>>2]=c;J[b+28>>2]=d;J[b+16>>2]=e;c=b+416|0;Gj(c,256,(e|0)==-3?31635:(e|0)==-15?31570:31677,b+16|0);J[b>>2]=c;a=fj(a,31902,b);break b}c=J[b+332>>2];m=c;e=J[b+328>>2];xv(J[b+336>>2],e,c);c=J[78230];c:{d:{e:{f:{f=J[78232];g:{if(f){d=0;h:{while(1){if(J[c+(d<<2)>>2]){d=d+1|0;if((f|0)!=(d|0)){continue}break h}break}if((d|0)!=-1){break g}}d=f+16|0;if(d>>>0>=65536){break f}}J[78230]=ml(c,d<<2);f=ml(J[78231],d<<1);J[78231]=f;d=J[78232];c=J[78230]+(d<<2)|0;J[c>>2]=0;J[c+4>>2]=0;J[c+56>>2]=0;J[c+60>>2]=0;J[c+48>>2]=0;J[c+52>>2]=0;J[c+40>>2]=0;J[c+44>>2]=0;J[c+32>>2]=0;J[c+36>>2]=0;J[c+24>>2]=0;J[c+28>>2]=0;J[c+16>>2]=0;J[c+20>>2]=0;J[c+8>>2]=0;J[c+12>>2]=0;c=f+(d<<1)|0;I[c+24>>1]=0;I[c+26>>1]=0;I[c+28>>1]=0;I[c+30>>1]=0;I[c+16>>1]=0;I[c+18>>1]=0;I[c+20>>1]=0;I[c+22>>1]=0;I[c+8>>1]=0;I[c+10>>1]=0;I[c+12>>1]=0;I[c+14>>1]=0;I[c>>1]=0;I[c+2>>1]=0;I[c+4>>1]=0;I[c+6>>1]=0;J[78232]=d+16}J[b+188>>2]=1;J[b+192>>2]=16842752;J[b+180>>2]=J[b+340>>2];n=J[b+368>>2];I[b+184>>1]=n;o=J[b+372>>2];I[b+186>>1]=o;c=Zi[J[79454]](J[78229],b+180|0)|0;r=Yi;f=nj(40);d=f;J[d>>2]=0;J[d+4>>2]=0;J[d+32>>2]=0;J[d+36>>2]=0;J[d+24>>2]=0;J[d+28>>2]=0;J[d+16>>2]=0;J[d+20>>2]=0;J[d+8>>2]=0;J[d+12>>2]=0;h=J[78232];if(!h){break a}s=J[78230];d=0;while(1){p=(d<<2)+s|0;if(J[p>>2]){d=d+1|0;if((h|0)!=(d|0)){continue}break a}break}if((d|0)==-1){break a}h=L[156466];h=h>>>0>65533?1:h+1|0;I[156466]=h;I[J[78231]+(d<<1)>>1]=h;J[p>>2]=f;d=L[156466]<<16|d;if((d|0)==-1){break e}J[f+8>>2]=a;h=J[b+196>>2];J[f+32>>2]=d;J[f+16>>2]=h;J[f+24>>2]=g;J[f+12>>2]=q;J[f+20>>2]=i;J[f>>2]=e;J[f+4>>2]=m;H[b+175|0]=0;H[b+176|0]=0;H[b+177|0]=0;H[b+178|0]=0;J[b+168>>2]=0;J[b+172>>2]=0;J[b+152>>2]=1;J[b+156>>2]=1;J[b+144>>2]=5;J[b+148>>2]=2;J[b+132>>2]=0;J[b+136>>2]=0;J[b+160>>2]=0;J[b+164>>2]=0;J[b+140>>2]=J[b+344>>2];I[b+174>>1]=o;I[b+172>>1]=n;i=b+136|0;if(!g){on(0,b+132|0,i);if(!k){break c}Z(113704,42133,1129,81922);B()}uj(a,3);J[f+28>>2]=Lk(a,-1e4);on(J[f+24>>2],b+132|0,i);if(k){break d}break c}Z(94407,54166,208,62238);B()}Z(96071,54166,266,9606);B()}J[b+128>>2]=1;g=iP(J[78229],J[b+140>>2],L[b+172>>1],L[b+174>>1]);J[b+140>>2]=g;J[b+116>>2]=J[b+136>>2];J[b+460>>2]=1;J[b+448>>2]=1;J[b+456>>2]=b+116;if(ZO(l,b+416|0,1,J[b+132>>2],g,b+124|0,b+120|0,b+128|0)){g=J[b+124>>2];J[b+132>>2]=g;J[b+136>>2]=J[b+120>>2];J[f+20>>2]=g;break c}a=Jj(j,83400,0);break b}Zi[J[79457]](c,r,b+132|0,694,f);Bk(a,e,m);e=J[a+8>>2];J[e+8>>2]=3;O[e>>3]=d>>>0;J[a+8>>2]=J[a+8>>2]+16;a=2}i:{if(H[b+212|0]&1){break i}e=J[b+200>>2];if(!e){break i}cj(e)}oj(j);Ui=b+672|0;return a|0}Z(96003,54166,253,9606);B()}function lM(a,b,c){a=a|0;b=b|0;c=c|0;var d=0,e=0,f=0,g=0,h=0,i=0,j=0,k=0,l=Q(0),m=Q(0),n=0,o=Q(0),p=Q(0),q=Q(0);f=J[b>>2];J[a+8>>2]=f;i=J[a+24>>2];a:{if((i|0)!=J[a+28>>2]){break a}h=i?i<<1:1;if((h|0)<=(i|0)){break a}if(h){d=Yj(h<<2);i=J[a+24>>2]}b:{if((i|0)<=0){break b}f=0;if(i>>>0>=4){n=i&2147483644;while(1){g=f<<2;J[g+d>>2]=J[g+J[a+32>>2]>>2];k=g|4;J[k+d>>2]=J[k+J[a+32>>2]>>2];k=g|8;J[k+d>>2]=J[k+J[a+32>>2]>>2];g=g|12;J[g+d>>2]=J[g+J[a+32>>2]>>2];f=f+4|0;e=e+4|0;if((n|0)!=(e|0)){continue}break}}e=i&3;if(!e){break b}while(1){g=f<<2;J[g+d>>2]=J[g+J[a+32>>2]>>2];f=f+1|0;j=j+1|0;if((e|0)!=(j|0)){continue}break}}f=J[a+32>>2];if(!(!f|K[a+36|0]!=1)){if(f){J[83765]=J[83765]+1;Zi[J[61751]](J[f-4>>2])}i=J[a+24>>2]}J[a+32>>2]=d;H[a+36|0]=1;J[a+28>>2]=h;f=J[b>>2]}J[J[a+32>>2]+(i<<2)>>2]=f;J[a+24>>2]=i+1;c:{if(c){o=N[b+16>>2];p=N[b+12>>2];m=N[b+8>>2];l=N[b+20>>2];break c}c=J[a+8>>2];l=N[b+16>>2];m=N[b+8>>2];q=N[b+12>>2];o=Q(Q(N[c+44>>2]*l)+Q(Q(N[c+36>>2]*m)+Q(q*N[c+40>>2])));p=Q(Q(N[c+28>>2]*l)+Q(Q(N[c+20>>2]*m)+Q(q*N[c+24>>2])));m=Q(Q(N[c+12>>2]*l)+Q(Q(N[c+4>>2]*m)+Q(N[c+8>>2]*q)));l=Q(0)}d=J[a+44>>2];d:{if((d|0)!=J[a+48>>2]){break d}i=d?d<<1:1;if((i|0)<=(d|0)){break d}e:{if(!i){c=0;break e}c=Yj(i<<4);d=J[a+44>>2]}f:{if((d|0)<=0){break f}f=0;if((d|0)!=1){n=d&2147483646;j=0;while(1){g=f<<4;h=g+c|0;e=g+J[a+52>>2]|0;k=J[e+4>>2];J[h>>2]=J[e>>2];J[h+4>>2]=k;k=J[e+12>>2];J[h+8>>2]=J[e+8>>2];J[h+12>>2]=k;e=g|16;g=e+c|0;e=e+J[a+52>>2]|0;h=J[e+4>>2];J[g>>2]=J[e>>2];J[g+4>>2]=h;h=J[e+12>>2];J[g+8>>2]=J[e+8>>2];J[g+12>>2]=h;f=f+2|0;j=j+2|0;if((n|0)!=(j|0)){continue}break}}if(!(d&1)){break f}d=f<<4;f=d+c|0;d=d+J[a+52>>2]|0;e=J[d+4>>2];J[f>>2]=J[d>>2];J[f+4>>2]=e;e=J[d+12>>2];J[f+8>>2]=J[d+8>>2];J[f+12>>2]=e}d=J[a+52>>2];if(!(d?!d|K[a+56|0]!=1:1)){J[83765]=J[83765]+1;Zi[J[61751]](J[d-4>>2])}J[a+52>>2]=c;H[a+56|0]=1;J[a+48>>2]=i;d=J[a+44>>2]}c=J[a+52>>2]+(d<<4)|0;N[c+12>>2]=l;N[c+8>>2]=o;N[c+4>>2]=p;N[c>>2]=m;J[a+44>>2]=J[a+44>>2]+1;l=N[b+24>>2];o=Q(Q(1)-l);p=Q(Q(o*N[a+108>>2])+Q(l*N[a+124>>2]));m=Q(Q(o*N[a+104>>2])+Q(l*N[a+120>>2]));l=Q(Q(o*N[a+100>>2])+Q(l*N[a+116>>2]));d=J[a+64>>2];g:{if((d|0)!=J[a+68>>2]){break g}i=d?d<<1:1;if((i|0)<=(d|0)){break g}h:{if(!i){c=0;break h}c=Yj(i<<4);d=J[a+64>>2]}i:{if((d|0)<=0){break i}f=0;if((d|0)!=1){n=d&2147483646;j=0;while(1){g=f<<4;h=g+c|0;e=g+J[a+72>>2]|0;k=J[e+4>>2];J[h>>2]=J[e>>2];J[h+4>>2]=k;k=J[e+12>>2];J[h+8>>2]=J[e+8>>2];J[h+12>>2]=k;e=g|16;g=e+c|0;e=e+J[a+72>>2]|0;h=J[e+4>>2];J[g>>2]=J[e>>2];J[g+4>>2]=h;h=J[e+12>>2];J[g+8>>2]=J[e+8>>2];J[g+12>>2]=h;f=f+2|0;j=j+2|0;if((n|0)!=(j|0)){continue}break}}if(!(d&1)){break i}d=f<<4;f=d+c|0;d=d+J[a+72>>2]|0;e=J[d+4>>2];J[f>>2]=J[d>>2];J[f+4>>2]=e;e=J[d+12>>2];J[f+8>>2]=J[d+8>>2];J[f+12>>2]=e}d=J[a+72>>2];if(!(d?!d|K[a+76|0]!=1:1)){J[83765]=J[83765]+1;Zi[J[61751]](J[d-4>>2])}J[a+72>>2]=c;H[a+76|0]=1;J[a+68>>2]=i;d=J[a+64>>2]}c=J[a+72>>2]+(d<<4)|0;N[c+8>>2]=p;N[c+4>>2]=m;N[c>>2]=l;J[a+64>>2]=J[a+64>>2]+1;e=J[a+84>>2];j:{if((e|0)!=J[a+88>>2]){break j}g=e?e<<1:1;if((g|0)<=(e|0)){break j}k:{if(!g){d=0;break k}d=Yj(g<<2);e=J[a+84>>2]}c=J[a+92>>2];l:{m:{if((e|0)>0){i=0;f=0;if(e>>>0>=4){n=e&2147483644;h=0;while(1){j=f<<2;N[j+d>>2]=N[c+j>>2];k=j|4;N[k+d>>2]=N[c+k>>2];k=j|8;N[k+d>>2]=N[c+k>>2];j=j|12;N[j+d>>2]=N[c+j>>2];f=f+4|0;h=h+4|0;if((n|0)!=(h|0)){continue}break}}j=e&3;if(!j){break m}while(1){h=f<<2;N[h+d>>2]=N[c+h>>2];f=f+1|0;i=i+1|0;if((j|0)!=(i|0)){continue}break}break m}if(!c){break l}}if(K[a+96|0]!=1){break l}if(c){J[83765]=J[83765]+1;Zi[J[61751]](J[c-4>>2])}e=J[a+84>>2]}J[a+92>>2]=d;H[a+96|0]=1;J[a+88>>2]=g}N[J[a+92>>2]+(e<<2)>>2]=N[b+24>>2];J[a+84>>2]=e+1;return Q(N[a+4>>2])}function Sk(a,b,c,d){var e=0,f=0,g=0,h=0,i=0,j=0,k=0;e=Ui-192|0;Ui=e;a:{if(Kk(a,b,J[84570])){b=Vj(a,b);g=J[b+4>>2];J[c>>2]=J[b>>2];J[c+4>>2]=g;g=J[b+28>>2];J[c+24>>2]=J[b+24>>2];J[c+28>>2]=g;g=J[b+20>>2];J[c+16>>2]=J[b+16>>2];J[c+20>>2]=g;g=J[b+12>>2];J[c+8>>2]=J[b+8>>2];J[c+12>>2]=g;b=0;if(!d){break a}H[d|0]=0;H[d+1|0]=0;H[d+2|0]=0;H[d+3|0]=0;H[d+4|0]=0;H[d+5|0]=0;H[d+6|0]=0;H[d+7|0]=0;H[d+24|0]=0;H[d+25|0]=0;H[d+26|0]=0;H[d+27|0]=0;H[d+28|0]=0;H[d+29|0]=0;H[d+30|0]=0;H[d+31|0]=0;H[d+16|0]=0;H[d+17|0]=0;H[d+18|0]=0;H[d+19|0]=0;H[d+20|0]=0;H[d+21|0]=0;H[d+22|0]=0;H[d+23|0]=0;H[d+8|0]=0;H[d+9|0]=0;H[d+10|0]=0;H[d+11|0]=0;H[d+12|0]=0;H[d+13|0]=0;H[d+14|0]=0;H[d+15|0]=0;$l(a,d);break a}J[e+184>>2]=0;J[e+188>>2]=0;J[e+176>>2]=0;J[e+180>>2]=0;J[e+168>>2]=0;J[e+172>>2]=0;b:{if(!Mk(a,b)){break b}f=Ij(a,b,0);h=GM(f,e+168|0);g=h?0:f;i=(g|0)!=0;k=!h;if(!g|h){break b}h=0;k=1;j=J[e+172>>2];if(!(!j|!J[e+180>>2])){i=1;g=f;if(K[J[e+176>>2]]!=47){break b}b=-4;if(j>>>0>63){break a}b=e+96|0;ek(b,J[e+168>>2],j+1|0);c:{d:{e:{b=eo(b,e+88|0);switch(b+6|0){case 2:break d;case 0:case 6:break e;default:break c}}b=J[e+92>>2];J[c>>2]=J[e+88>>2];J[c+4>>2]=b;J[c+16>>2]=Ul(J[e+176>>2],J[e+180>>2]);J[c+20>>2]=Yi;J[c+24>>2]=Ul(J[e+184>>2],J[e+188>>2]);J[c+28>>2]=Yi;b=0;if(!d){break a}H[d|0]=0;H[d+1|0]=0;H[d+2|0]=0;H[d+3|0]=0;H[d+4|0]=0;H[d+5|0]=0;H[d+6|0]=0;H[d+7|0]=0;H[d+24|0]=0;H[d+25|0]=0;H[d+26|0]=0;H[d+27|0]=0;H[d+28|0]=0;H[d+29|0]=0;H[d+30|0]=0;H[d+31|0]=0;H[d+16|0]=0;H[d+17|0]=0;H[d+18|0]=0;H[d+19|0]=0;H[d+20|0]=0;H[d+21|0]=0;H[d+22|0]=0;H[d+23|0]=0;H[d+8|0]=0;H[d+9|0]=0;H[d+10|0]=0;H[d+11|0]=0;H[d+12|0]=0;H[d+13|0]=0;H[d+14|0]=0;H[d+15|0]=0;$l(a,d);break a}J[e+80>>2]=e+96;b=fj(a,127004,e+80|0);break a}J[e+68>>2]=b;J[e+64>>2]=e+96;b=fj(a,130750,e- -64|0);break a}i=1;g=f}J[e+120>>2]=0;J[e+124>>2]=0;J[e+112>>2]=0;J[e+116>>2]=0;J[e+104>>2]=0;J[e+108>>2]=0;J[e+96>>2]=0;J[e+100>>2]=0;f=e+96|0;H[f|0]=0;H[f+1|0]=0;H[f+2|0]=0;H[f+3|0]=0;H[f+4|0]=0;H[f+5|0]=0;H[f+6|0]=0;H[f+7|0]=0;H[f+24|0]=0;H[f+25|0]=0;H[f+26|0]=0;H[f+27|0]=0;H[f+28|0]=0;H[f+29|0]=0;H[f+30|0]=0;H[f+31|0]=0;H[f+16|0]=0;H[f+17|0]=0;H[f+18|0]=0;H[f+19|0]=0;H[f+20|0]=0;H[f+21|0]=0;H[f+22|0]=0;H[f+23|0]=0;H[f+8|0]=0;H[f+9|0]=0;H[f+10|0]=0;H[f+11|0]=0;H[f+12|0]=0;H[f+13|0]=0;H[f+14|0]=0;H[f+15|0]=0;$l(a,f);if(d){f=J[e+100>>2];J[d>>2]=J[e+96>>2];J[d+4>>2]=f;f=J[e+124>>2];J[d+24>>2]=J[e+120>>2];J[d+28>>2]=f;f=J[e+116>>2];J[d+16>>2]=J[e+112>>2];J[d+20>>2]=f;f=J[e+108>>2];J[d+8>>2]=J[e+104>>2];J[d+12>>2]=f}f:{if(J[a+8>>2]-J[a+12>>2]>>4>=(b|0)){if(kj(a,b)){break f}}a=J[e+100>>2];J[c>>2]=J[e+96>>2];J[c+4>>2]=a;a=J[e+124>>2];J[c+24>>2]=J[e+120>>2];J[c+28>>2]=a;a=J[e+116>>2];J[c+16>>2]=J[e+112>>2];J[c+20>>2]=a;a=J[e+108>>2];J[c+8>>2]=J[e+104>>2];J[c+12>>2]=a;b=0;break a}g:{h:{if(i){H[c|0]=0;H[c+1|0]=0;H[c+2|0]=0;H[c+3|0]=0;H[c+4|0]=0;H[c+5|0]=0;H[c+6|0]=0;H[c+7|0]=0;H[c+24|0]=0;H[c+25|0]=0;H[c+26|0]=0;H[c+27|0]=0;H[c+28|0]=0;H[c+29|0]=0;H[c+30|0]=0;H[c+31|0]=0;H[c+16|0]=0;H[c+17|0]=0;H[c+18|0]=0;H[c+19|0]=0;H[c+20|0]=0;H[c+21|0]=0;H[c+22|0]=0;H[c+23|0]=0;H[c+8|0]=0;H[c+9|0]=0;H[c+10|0]=0;H[c+11|0]=0;H[c+12|0]=0;H[c+13|0]=0;H[c+14|0]=0;H[c+15|0]=0;if(k){h=AB(a,g,c,e+96|0)}i:{switch(h+5|0){case 1:J[e+32>>2]=g;b=fj(a,127204,e+32|0);break a;case 3:J[e+48>>2]=g;b=fj(a,126849,e+48|0);break a;case 0:break g;case 5:break h;default:break i}}J[e+4>>2]=h;J[e>>2]=g;b=fj(a,130829,e);break a}d=Bu(a,b);if(!d){b=Yk(a,b,49412);break a}a=J[e+100>>2];J[c>>2]=J[e+96>>2];J[c+4>>2]=a;a=J[d>>2];b=J[d+4>>2];J[c+24>>2]=0;J[c+28>>2]=0;J[c+16>>2]=a;J[c+20>>2]=b}b=0;break a}J[e+16>>2]=g;b=fj(a,133530,e+16|0)}Ui=e+192|0;return b}function gla(a){a=a|0;var b=0,c=0,d=0,e=0,f=0,g=0,h=0,i=0,j=0,k=0,l=0,m=0,n=0;b=Ui-272|0;Ui=b;a:{b:{c:{h=J[a+80>>2];d:{if(J[h+4>>2]==J[h+8>>2]){a=Ui-16|0;Ui=a;J[a+4>>2]=64;J[a>>2]=83969;dj(4,88458,75503,a);Ui=a+16|0;a=-1e3;break d}m=J[a+76>>2];f=J[a+84>>2];i=J[a>>2];J[b+80>>2]=i;J[b+88>>2]=h;H[b+226|0]=0;l=L[a+92>>1];I[b+224>>1]=l;e=J[f+2264>>2];g=4;e:{f:{g:{h:{j=J[f+2272>>2];i:{if(j){g=0;j:{while(1){if(J[e+(g<<2)>>2]){g=g+1|0;if((j|0)!=(g|0)){continue}break j}break}if((g|0)!=-1){break i}}g=j+4|0;if(g>>>0>=65536){break h}}J[f+2264>>2]=ml(e,g<<2);J[f+2268>>2]=ml(J[f+2268>>2],g<<1);e=J[f+2264>>2]+(J[f+2272>>2]<<2)|0;J[e>>2]=0;J[e+4>>2]=0;J[e+8>>2]=0;J[e+12>>2]=0;e=J[f+2268>>2]+(J[f+2272>>2]<<1)|0;I[e>>1]=0;I[e+2>>1]=0;I[e+4>>1]=0;I[e+6>>1]=0;j=J[f+2272>>2]+4|0;J[f+2272>>2]=j}g=0;d=ij(nj(336),0,336);if(!j){break f}e=J[f+2264>>2];while(1){k=(g<<2)+e|0;if(J[k>>2]){g=g+1|0;if((j|0)!=(g|0)){continue}break f}break}if((g|0)==-1){break f}e=L[f+2276>>1];e=e>>>0>65533?1:e+1|0;I[f+2276>>1]=e;I[J[f+2268>>2]+(g<<1)>>1]=e;J[k>>2]=d;e=L[f+2276>>1]<<16|g;if((e|0)==-1){break g}J[d+272>>2]=0;J[d+276>>2]=0;J[d+32>>2]=e;J[d+280>>2]=1065353216;J[d+284>>2]=1065353216;J[d+288>>2]=0;J[d+292>>2]=0;J[d+296>>2]=0;J[d+300>>2]=0;J[d+304>>2]=0;J[d+308>>2]=0;J[d+312>>2]=0;J[d+316>>2]=0;break e}Z(94407,54166,208,62238);B()}Z(96071,54166,266,9606);B()}Z(96003,54166,253,9606);B()}J[b+84>>2]=e;d=J[m>>2];N[b+48>>2]=N[d>>2];N[b+52>>2]=N[d+4>>2];N[b+56>>2]=N[d+8>>2];N[b+60>>2]=N[d+12>>2];H[b+68|0]=(J[d+20>>2]!=0)<<1|J[d+16>>2]!=0;N[b+64>>2]=N[d+24>>2];k=b+24|0;d=k;J[d>>2]=0;J[d+4>>2]=0;J[b+16>>2]=0;J[b+20>>2]=0;J[b+8>>2]=0;J[b+12>>2]=0;d=J[J[i+80>>2]+8>>2];k:{if(!d){break k}d=J[d>>2];if(!d){break k}c=J[d+3216>>2];n=J[d+3220>>2]}J[b>>2]=c;J[b+4>>2]=n;c=J[i+100>>2];J[b+16>>2]=J[i+96>>2];J[b+20>>2]=c;Go(i,l,k);l:{if(e+1>>>0<2){break l}c=e&65535;if(c>>>0>2]){d=J[J[f+2264>>2]+(c<<2)>>2];if(!d|L[J[f+2268>>2]+(c<<1)>>1]!=(e>>>16|0)){break l}c=J[b+4>>2];J[d>>2]=J[b>>2];J[d+4>>2]=c;c=J[b+28>>2];J[d+24>>2]=J[b+24>>2];J[d+28>>2]=c;c=J[b+20>>2];J[d+16>>2]=J[b+16>>2];J[d+20>>2]=c;c=J[b+12>>2];J[d+8>>2]=J[b+8>>2];J[d+12>>2]=c;break l}Z(2686,54166,244,5438);B()}xq(f,e,b+32|0);d=b+256|0;yn(d,i);c=b+240|0;jt(c,i);Cx(f,e,d,c);kC(f,e,b+96|0);lC(f,J[b+84>>2],b+160|0);c=J[h+4>>2];if((c|0)==J[h+8>>2]){break a}J[h+4>>2]=c+160;e=J[b+84>>2];J[c>>2]=J[b+80>>2];J[c+4>>2]=e;J[c+8>>2]=J[b+88>>2];N[c+16>>2]=N[b+96>>2];N[c+20>>2]=N[b+100>>2];N[c+24>>2]=N[b+104>>2];N[c+28>>2]=N[b+108>>2];N[c+32>>2]=N[b+112>>2];N[c+36>>2]=N[b+116>>2];N[c+40>>2]=N[b+120>>2];N[c+44>>2]=N[b+124>>2];N[c+48>>2]=N[b+128>>2];N[c+52>>2]=N[b+132>>2];N[c+56>>2]=N[b+136>>2];N[c+60>>2]=N[b+140>>2];N[c+64>>2]=N[b+144>>2];N[c+68>>2]=N[b+148>>2];N[c+72>>2]=N[b+152>>2];N[c+76>>2]=N[b+156>>2];N[c+80>>2]=N[b+160>>2];N[c+84>>2]=N[b+164>>2];N[c+88>>2]=N[b+168>>2];N[c+92>>2]=N[b+172>>2];N[c+96>>2]=N[b+176>>2];N[c+100>>2]=N[b+180>>2];N[c+104>>2]=N[b+184>>2];N[c+108>>2]=N[b+188>>2];N[c+112>>2]=N[b+192>>2];N[c+116>>2]=N[b+196>>2];N[c+120>>2]=N[b+200>>2];N[c+124>>2]=N[b+204>>2];N[c+128>>2]=N[b+208>>2];N[c+132>>2]=N[b+212>>2];N[c+136>>2]=N[b+216>>2];N[c+140>>2]=N[b+220>>2];H[c+146|0]=K[b+226|0];I[c+144>>1]=L[b+224>>1];e=J[h+4>>2];if((e|0)==J[h>>2]){break c}c=e-160|0;J[J[a+88>>2]>>2]=c;xy(h,c);d=h+20|0;a=J[h+20>>2];e=J[h+24>>2];if((a|0)==(e|0)){if(H[h+28|0]&1){break b}k=a;a=h+16|0;lj((k-J[a>>2]>>2)+1|0,4,a,h+24|0,d);e=J[h+24>>2];a=J[d>>2]}if((a|0)==(e|0)){break a}J[d>>2]=a+4;J[a>>2]=c;bC(f,J[b+84>>2],1);a=0}Ui=b+272|0;return a|0}Z(145396,53895,487,84789);B()}Z(151729,53895,501,2284);B()}Z(112520,53895,557,53220);B()}function qra(a,b,c,d,e,f){a=a|0;b=b|0;c=c|0;d=d|0;e=e|0;f=f|0;var g=0,h=0,i=0,j=0,k=0,l=0,m=0,n=0,o=0,p=0,q=0,r=0;i=J[a+16>>2];a:{b:{c:{d:{if((f|0)>=0){if((i|0)>0){break d}break c}if((0-i|0)==(e|0)){break a}f=J[a+8>>2];Q(Zi[J[J[f>>2]+12>>2]](f,b,c,d,e,J[a+12>>2],i,J[a+4>>2],J[a+20>>2],J[a+24>>2],J[a+28>>2]));return}l=J[a+12>>2];while(1){q=l+(g<<2)|0;j=J[q>>2];h=J[J[j+20>>2]+208>>2];if((h|0)<0){h=J[J[j+24>>2]+208>>2]}if((f|0)==(h|0)){break c}g=g+1|0;if((i|0)!=(g|0)){continue}break}q=0;break b}if((g|0)>=(i|0)){break b}h=i-g|0;k=h&1;j=J[a+12>>2];if((i|0)!=(g+1|0)){i=j+4|0;m=h&-2;l=0;while(1){n=g<<2;r=J[n+j>>2];h=J[J[r+20>>2]+208>>2];if((h|0)<0){h=J[J[r+24>>2]+208>>2]}g=g+2|0;o=((f|0)==(h|0))+o|0;n=J[i+n>>2];h=J[J[n+20>>2]+208>>2];if((h|0)<0){h=J[J[n+24>>2]+208>>2]}o=((f|0)==(h|0))+o|0;l=l+2|0;if((m|0)!=(l|0)){continue}break}}if(!k){break b}h=J[j+(g<<2)>>2];g=J[J[h+20>>2]+208>>2];if((g|0)<0){g=J[J[h+24>>2]+208>>2]}o=((f|0)==(g|0))+o|0}f=J[a+4>>2];if(J[f+68>>2]>=2){if((c|0)>0){g=J[a+40>>2];h=J[a+36>>2];j=0;while(1){n=(j<<2)+b|0;e:{if((g|0)!=(h|0)){break e}i=g?g<<1:1;if((i|0)<=(g|0)){h=g;break e}f:{if(!i){f=0;break f}f=Yj(i<<2);g=J[a+36>>2]}h=g;g:{if((g|0)<=0){break g}l=0;g=0;if(h>>>0>=4){r=h&2147483644;k=0;while(1){m=g<<2;J[m+f>>2]=J[m+J[a+44>>2]>>2];p=m|4;J[p+f>>2]=J[p+J[a+44>>2]>>2];p=m|8;J[p+f>>2]=J[p+J[a+44>>2]>>2];m=m|12;J[m+f>>2]=J[m+J[a+44>>2]>>2];g=g+4|0;k=k+4|0;if((r|0)!=(k|0)){continue}break}}k=h&3;if(!k){break g}while(1){m=g<<2;J[m+f>>2]=J[m+J[a+44>>2]>>2];g=g+1|0;l=l+1|0;if((k|0)!=(l|0)){continue}break}}g=J[a+44>>2];if(!(!g|K[a+48|0]!=1)){if(g){J[83765]=J[83765]+1;Zi[J[61751]](J[g-4>>2])}h=J[a+36>>2]}J[a+44>>2]=f;H[a+48|0]=1;J[a+40>>2]=i;g=i}J[J[a+44>>2]+(h<<2)>>2]=J[n>>2];h=h+1|0;J[a+36>>2]=h;j=j+1|0;if((j|0)!=(c|0)){continue}break}}if((e|0)>0){g=J[a+60>>2];h=J[a+56>>2];j=0;while(1){i=(j<<2)+d|0;h:{if((g|0)!=(h|0)){break h}b=g?g<<1:1;if((b|0)<=(g|0)){h=g;break h}i:{if(!b){f=0;break i}f=Yj(b<<2);g=J[a+56>>2]}h=g;j:{if((g|0)<=0){break j}l=0;g=0;if(h>>>0>=4){m=h&2147483644;k=0;while(1){c=g<<2;J[c+f>>2]=J[c+J[a+64>>2]>>2];n=c|4;J[n+f>>2]=J[n+J[a+64>>2]>>2];n=c|8;J[n+f>>2]=J[n+J[a+64>>2]>>2];c=c|12;J[c+f>>2]=J[c+J[a+64>>2]>>2];g=g+4|0;k=k+4|0;if((m|0)!=(k|0)){continue}break}}c=h&3;if(!c){break j}while(1){k=g<<2;J[k+f>>2]=J[k+J[a+64>>2]>>2];g=g+1|0;l=l+1|0;if((c|0)!=(l|0)){continue}break}}c=J[a+64>>2];if(!(!c|K[a+68|0]!=1)){if(c){J[83765]=J[83765]+1;Zi[J[61751]](J[c-4>>2])}h=J[a+56>>2]}J[a+64>>2]=f;H[a+68|0]=1;J[a+60>>2]=b;g=b}J[J[a+64>>2]+(h<<2)>>2]=J[i>>2];h=h+1|0;J[a+56>>2]=h;j=j+1|0;if((j|0)!=(e|0)){continue}break}}j=0;k:{if((o|0)<=0){h=J[a+76>>2];break k}g=J[a+80>>2];h=J[a+76>>2];while(1){d=(j<<2)+q|0;l:{if((g|0)!=(h|0)){break l}b=g?g<<1:1;if((b|0)<=(g|0)){h=g;break l}m:{if(!b){f=0;break m}f=Yj(b<<2);g=J[a+76>>2]}h=g;n:{if((g|0)<=0){break n}l=0;g=0;if(h>>>0>=4){e=h&2147483644;k=0;while(1){c=g<<2;J[c+f>>2]=J[c+J[a+84>>2]>>2];i=c|4;J[i+f>>2]=J[i+J[a+84>>2]>>2];i=c|8;J[i+f>>2]=J[i+J[a+84>>2]>>2];c=c|12;J[c+f>>2]=J[c+J[a+84>>2]>>2];g=g+4|0;k=k+4|0;if((e|0)!=(k|0)){continue}break}}c=h&3;if(!c){break n}while(1){e=g<<2;J[e+f>>2]=J[e+J[a+84>>2]>>2];g=g+1|0;l=l+1|0;if((c|0)!=(l|0)){continue}break}}c=J[a+84>>2];if(!(!c|K[a+88|0]!=1)){if(c){J[83765]=J[83765]+1;Zi[J[61751]](J[c-4>>2])}h=J[a+76>>2]}J[a+84>>2]=f;H[a+88|0]=1;J[a+80>>2]=b;g=b}J[J[a+84>>2]+(h<<2)>>2]=J[d>>2];h=h+1|0;J[a+76>>2]=h;j=j+1|0;if((o|0)!=(j|0)){continue}break}}if(J[J[a+4>>2]+68>>2]>=(J[a+56>>2]+h|0)){break a}qT(a);break a}if((0-o|0)==(e|0)){break a}g=J[a+8>>2];Q(Zi[J[J[g>>2]+12>>2]](g,b,c,d,e,q,o,f,J[a+20>>2],J[a+24>>2],J[a+28>>2]))}}function cR(a,b){var c=0,d=0,e=0,f=0,g=Q(0),h=Q(0),i=0,j=0,k=0,l=0,m=Q(0);d=Ui-80|0;Ui=d;c=J[a>>2];J[d+72>>2]=0;a=L[c+1058>>1];J[73988]=a+J[73988];J[d+64>>2]=a;J[d+68>>2]=0;J[d>>2]=a;J[d+4>>2]=0;a:{b:{if(H[c+3272|0]&1){dj(4,88293,123683,0);break b}e=L[c+3264>>1];if((e|0)!=32767){while(1){e=e&65535;a=J[c+1036>>2];if(e>>>0>=J[c+1040>>2]-a>>2>>>0){break a}a=J[a+(e<<2)>>2];HR(c,a);e=L[a+146>>1];I[a+146>>1]=32767;if((e|0)!=32767){continue}break}}J[c+3264>>2]=2147450879}e=1;H[c+3272|0]=K[c+3272|0]|1;a=J[b+12>>2];J[d+56>>2]=J[b+8>>2];J[d+60>>2]=a;a=J[b+4>>2];J[d+48>>2]=J[b>>2];J[d+52>>2]=a;g=N[c+3268>>2];h=N[b>>2];N[d+56>>2]=h>Q(.0010000000474974513)?Q(g/h):g;k=J[J[c+4>>2]>>2];if(k){i=c+3216|0;l=c+12|0;while(1){a=J[c+4>>2];j=L[(a+(f<<1)|0)+28568>>1];a=P(j,112)+a|0;if(!(!(K[a+110|0]&2)|!(K[c+3272|0]&8))){ym(c)}if(J[a+60>>2]){J[d+16>>2]=0;J[d+32>>2]=J[c+8>>2];J[d+36>>2]=d+48;J[d+40>>2]=J[l+(j<<2)>>2];J[d+44>>2]=J[a+24>>2];H[d+76|0]=0;a=Zi[J[a+60>>2]](d+32|0,d+76|0)|0;H[c+3272|0]=K[c+3272|0]|K[d+76|0]<<3;e=!a&e}e=e&tv(c,i,1);f=f+1|0;if((k|0)!=(f|0)){continue}break}}f=J[b+12>>2];c:{if(!f){break c}g=N[b>>2];if(!(g>Q(.0010000000474974513))){break c}a=K[c+3272|0];if(a&32){H[c+3272|0]=a&223;f=J[b+12>>2];g=N[b>>2];h=Q(N[b+8>>2]*g)}else{h=N[c+3268>>2]}m=Q(h+N[b+4>>2]);g=Q(g*Q(Q(1)/Q(f>>>0)));h=Q(m/g);d:{if(h=Q(0)){a=~~h>>>0;break d}a=0}N[c+3268>>2]=m-Q(Q(a>>>0)*g);if(!a){break c}b=J[d+60>>2];J[d+40>>2]=J[d+56>>2];J[d+44>>2]=b;b=J[d+52>>2];J[d+32>>2]=J[d+48>>2];J[d+36>>2]=b;N[d+36>>2]=g;if(!k){break c}l=c+12|0;i=0;while(1){f=0;while(1){b=J[c+4>>2];j=L[(b+(f<<1)|0)+28568>>1];b=P(j,112)+b|0;if(!(!(K[b+110|0]&2)|!(K[c+3272|0]&8))){ym(c)}if(J[b+64>>2]){J[d+76>>2]=0;J[d+16>>2]=J[c+8>>2];J[d+20>>2]=d+32;J[d+24>>2]=J[l+(j<<2)>>2];J[d+28>>2]=J[b+24>>2];H[d+15|0]=0;b=Zi[J[b+64>>2]](d+16|0,d+15|0)|0;H[c+3272|0]=K[c+3272|0]|K[d+15|0]<<3;e=!b&e}J[d+76>>2]=0;H[d+20|0]=1;J[d+16>>2]=c;e:{if(!Do(J[c+3216>>2],J[c+3220>>2])){break e}if(K[c+3272|0]&8){ym(c)}if(!Jm(J[c+3216>>2],J[c+3220>>2],84,d+16|0)){break e}H[c+3272|0]=K[c+3272|0]|8;if(!Do(J[c+3216>>2],J[c+3220>>2])){break e}if(K[c+3272|0]&8){ym(c)}if(!Jm(J[c+3216>>2],J[c+3220>>2],84,d+16|0)){break e}H[c+3272|0]=K[c+3272|0]|8;if(!Do(J[c+3216>>2],J[c+3220>>2])){break e}if(K[c+3272|0]&8){ym(c)}if(!Jm(J[c+3216>>2],J[c+3220>>2],84,d+16|0)){break e}H[c+3272|0]=K[c+3272|0]|8;if(!Do(J[c+3216>>2],J[c+3220>>2])){break e}if(K[c+3272|0]&8){ym(c)}if(!Jm(J[c+3216>>2],J[c+3220>>2],84,d+16|0)){break e}H[c+3272|0]=K[c+3272|0]|8;if(!Do(J[c+3216>>2],J[c+3220>>2])){break e}if(K[c+3272|0]&8){ym(c)}if(!Jm(J[c+3216>>2],J[c+3220>>2],84,d+16|0)){break e}H[c+3272|0]=K[c+3272|0]|8;if(!Do(J[c+3216>>2],J[c+3220>>2])){break e}if(K[c+3272|0]&8){ym(c)}if(!Jm(J[c+3216>>2],J[c+3220>>2],84,d+16|0)){break e}H[c+3272|0]=K[c+3272|0]|8;if(!Do(J[c+3216>>2],J[c+3220>>2])){break e}if(K[c+3272|0]&8){ym(c)}if(!Jm(J[c+3216>>2],J[c+3220>>2],84,d+16|0)){break e}H[c+3272|0]=K[c+3272|0]|8;if(!Do(J[c+3216>>2],J[c+3220>>2])){break e}if(K[c+3272|0]&8){ym(c)}if(!Jm(J[c+3216>>2],J[c+3220>>2],84,d+16|0)){break e}H[c+3272|0]=K[c+3272|0]|8;if(!Do(J[c+3216>>2],J[c+3220>>2])){break e}if(K[c+3272|0]&8){ym(c)}if(!Jm(J[c+3216>>2],J[c+3220>>2],84,d+16|0)){break e}H[c+3272|0]=K[c+3272|0]|8;if(!Do(J[c+3216>>2],J[c+3220>>2])){break e}if(K[c+3272|0]&8){ym(c)}if(!Jm(J[c+3216>>2],J[c+3220>>2],84,d+16|0)){break e}H[c+3272|0]=K[c+3272|0]|8}e=K[d+20|0]&e;f=f+1|0;if((k|0)!=(f|0)){continue}break}i=i+1|0;if((a|0)!=(i|0)){continue}break}}a=K[c+3272|0];H[c+3272|0]=a&254;if(a&8){ym(c)}Ui=d+80|0;return e&1}Z(145396,53895,487,84789);B()}function DF(a,b,c,d,e){var f=0,g=0,h=0;g=Ui-16|0;f=J[c+8>>2];h=J[b+8>>2];a:{if((h|0)<=J[a+8>>2]){if((f|0)<=(h|0)){break a}f=J[b+12>>2];J[g+8>>2]=J[b+8>>2];J[g+12>>2]=f;f=J[b+4>>2];J[g>>2]=J[b>>2];J[g+4>>2]=f;f=J[c+12>>2];J[b+8>>2]=J[c+8>>2];J[b+12>>2]=f;f=J[c+4>>2];J[b>>2]=J[c>>2];J[b+4>>2]=f;f=J[g+12>>2];J[c+8>>2]=J[g+8>>2];J[c+12>>2]=f;f=J[g+4>>2];J[c>>2]=J[g>>2];J[c+4>>2]=f;if(J[b+8>>2]<=J[a+8>>2]){break a}f=J[a+12>>2];J[g+8>>2]=J[a+8>>2];J[g+12>>2]=f;f=J[a+4>>2];J[g>>2]=J[a>>2];J[g+4>>2]=f;f=J[b+12>>2];J[a+8>>2]=J[b+8>>2];J[a+12>>2]=f;f=J[b+4>>2];J[a>>2]=J[b>>2];J[a+4>>2]=f;f=J[g+12>>2];J[b+8>>2]=J[g+8>>2];J[b+12>>2]=f;f=J[g+4>>2];J[b>>2]=J[g>>2];J[b+4>>2]=f;break a}if((f|0)>(h|0)){f=J[a+12>>2];J[g+8>>2]=J[a+8>>2];J[g+12>>2]=f;f=J[a+4>>2];J[g>>2]=J[a>>2];J[g+4>>2]=f;f=J[c+12>>2];J[a+8>>2]=J[c+8>>2];J[a+12>>2]=f;f=J[c+4>>2];J[a>>2]=J[c>>2];J[a+4>>2]=f;f=J[g+12>>2];J[c+8>>2]=J[g+8>>2];J[c+12>>2]=f;f=J[g+4>>2];J[c>>2]=J[g>>2];J[c+4>>2]=f;break a}f=J[a+12>>2];J[g+8>>2]=J[a+8>>2];J[g+12>>2]=f;f=J[a+4>>2];J[g>>2]=J[a>>2];J[g+4>>2]=f;f=J[b+12>>2];J[a+8>>2]=J[b+8>>2];J[a+12>>2]=f;f=J[b+4>>2];J[a>>2]=J[b>>2];J[a+4>>2]=f;f=J[g+12>>2];J[b+8>>2]=J[g+8>>2];J[b+12>>2]=f;f=J[g+4>>2];J[b>>2]=J[g>>2];J[b+4>>2]=f;if(J[c+8>>2]<=J[b+8>>2]){break a}f=J[b+12>>2];J[g+8>>2]=J[b+8>>2];J[g+12>>2]=f;f=J[b+4>>2];J[g>>2]=J[b>>2];J[g+4>>2]=f;f=J[c+12>>2];J[b+8>>2]=J[c+8>>2];J[b+12>>2]=f;f=J[c+4>>2];J[b>>2]=J[c>>2];J[b+4>>2]=f;f=J[g+12>>2];J[c+8>>2]=J[g+8>>2];J[c+12>>2]=f;f=J[g+4>>2];J[c>>2]=J[g>>2];J[c+4>>2]=f}b:{if(J[d+8>>2]<=J[c+8>>2]){break b}f=J[c+12>>2];J[g+8>>2]=J[c+8>>2];J[g+12>>2]=f;f=J[c+4>>2];J[g>>2]=J[c>>2];J[g+4>>2]=f;f=J[d+12>>2];J[c+8>>2]=J[d+8>>2];J[c+12>>2]=f;f=J[d+4>>2];J[c>>2]=J[d>>2];J[c+4>>2]=f;f=J[g+12>>2];J[d+8>>2]=J[g+8>>2];J[d+12>>2]=f;f=J[g+4>>2];J[d>>2]=J[g>>2];J[d+4>>2]=f;if(J[c+8>>2]<=J[b+8>>2]){break b}f=J[b+12>>2];J[g+8>>2]=J[b+8>>2];J[g+12>>2]=f;f=J[b+4>>2];J[g>>2]=J[b>>2];J[g+4>>2]=f;f=J[c+12>>2];J[b+8>>2]=J[c+8>>2];J[b+12>>2]=f;f=J[c+4>>2];J[b>>2]=J[c>>2];J[b+4>>2]=f;f=J[g+12>>2];J[c+8>>2]=J[g+8>>2];J[c+12>>2]=f;f=J[g+4>>2];J[c>>2]=J[g>>2];J[c+4>>2]=f;if(J[b+8>>2]<=J[a+8>>2]){break b}f=J[a+12>>2];J[g+8>>2]=J[a+8>>2];J[g+12>>2]=f;f=J[a+4>>2];J[g>>2]=J[a>>2];J[g+4>>2]=f;f=J[b+12>>2];J[a+8>>2]=J[b+8>>2];J[a+12>>2]=f;f=J[b+4>>2];J[a>>2]=J[b>>2];J[a+4>>2]=f;f=J[g+12>>2];J[b+8>>2]=J[g+8>>2];J[b+12>>2]=f;f=J[g+4>>2];J[b>>2]=J[g>>2];J[b+4>>2]=f}c:{if(J[e+8>>2]<=J[d+8>>2]){break c}f=J[d+12>>2];J[g+8>>2]=J[d+8>>2];J[g+12>>2]=f;f=J[d+4>>2];J[g>>2]=J[d>>2];J[g+4>>2]=f;f=J[e+12>>2];J[d+8>>2]=J[e+8>>2];J[d+12>>2]=f;f=J[e+4>>2];J[d>>2]=J[e>>2];J[d+4>>2]=f;f=J[g+12>>2];J[e+8>>2]=J[g+8>>2];J[e+12>>2]=f;f=J[g+4>>2];J[e>>2]=J[g>>2];J[e+4>>2]=f;if(J[d+8>>2]<=J[c+8>>2]){break c}e=J[c+12>>2];J[g+8>>2]=J[c+8>>2];J[g+12>>2]=e;e=J[c+4>>2];J[g>>2]=J[c>>2];J[g+4>>2]=e;e=J[d+12>>2];J[c+8>>2]=J[d+8>>2];J[c+12>>2]=e;e=J[d+4>>2];J[c>>2]=J[d>>2];J[c+4>>2]=e;e=J[g+12>>2];J[d+8>>2]=J[g+8>>2];J[d+12>>2]=e;e=J[g+4>>2];J[d>>2]=J[g>>2];J[d+4>>2]=e;if(J[c+8>>2]<=J[b+8>>2]){break c}d=J[b+12>>2];J[g+8>>2]=J[b+8>>2];J[g+12>>2]=d;d=J[b+4>>2];J[g>>2]=J[b>>2];J[g+4>>2]=d;d=J[c+12>>2];J[b+8>>2]=J[c+8>>2];J[b+12>>2]=d;d=J[c+4>>2];J[b>>2]=J[c>>2];J[b+4>>2]=d;d=J[g+12>>2];J[c+8>>2]=J[g+8>>2];J[c+12>>2]=d;d=J[g+4>>2];J[c>>2]=J[g>>2];J[c+4>>2]=d;if(J[b+8>>2]<=J[a+8>>2]){break c}c=J[a+12>>2];J[g+8>>2]=J[a+8>>2];J[g+12>>2]=c;c=J[a+4>>2];J[g>>2]=J[a>>2];J[g+4>>2]=c;c=J[b+12>>2];J[a+8>>2]=J[b+8>>2];J[a+12>>2]=c;c=J[b+4>>2];J[a>>2]=J[b>>2];J[a+4>>2]=c;a=J[g+12>>2];J[b+8>>2]=J[g+8>>2];J[b+12>>2]=a;a=J[g+4>>2];J[b>>2]=J[g>>2];J[b+4>>2]=a}}function DS(a,b){a=a|0;b=b|0;var c=0,d=0,e=0,f=0,g=0,h=0,i=0,j=0,k=0,l=0,m=0,n=0;c=J[a+12>>2]-5|0;d=J[a+44>>2];m=c>>>0>>0?c:d;g=J[J[a>>2]+4>>2];n=(b|0)!=4;a:{while(1){f=1;e=J[a>>2];d=J[e+16>>2];h=J[a+5820>>2]+42>>3;if(d>>>0>>0){break a}j=J[a+108>>2];k=J[a+92>>2];i=j-k|0;c=i+J[e+4>>2]|0;d=d-h|0;h=c>>>0>>0?c:d;d=h>>>0>=65535?65535:h;if(m>>>0>d>>>0){if(!b|(!h&n|(c|0)!=(d|0))){break a}}h=(b|0)==4&(c|0)==(d|0);xz(a,0,0,h);H[(J[a+8>>2]+J[a+20>>2]|0)-4|0]=d;H[(J[a+8>>2]+J[a+20>>2]|0)-3|0]=d>>>8;c=d^-1;H[(J[a+8>>2]+J[a+20>>2]|0)-2|0]=c;H[(J[a+8>>2]+J[a+20>>2]|0)-1|0]=c>>>8;c=J[a>>2];e=J[c+28>>2];zm(e);f=J[e+20>>2];l=J[c+16>>2];f=f>>>0>>0?f:l;b:{if(!f){break b}hj(J[c+12>>2],J[e+16>>2],f);J[c+12>>2]=f+J[c+12>>2];J[e+16>>2]=f+J[e+16>>2];J[c+20>>2]=f+J[c+20>>2];J[c+16>>2]=J[c+16>>2]-f;c=J[e+20>>2];J[e+20>>2]=c-f;if((c|0)!=(f|0)){break b}J[e+16>>2]=J[e+8>>2]}if((j|0)!=(k|0)){c=d>>>0>i>>>0?i:d;hj(J[J[a>>2]+12>>2],J[a+56>>2]+J[a+92>>2]|0,c);e=J[a>>2];J[e+12>>2]=c+J[e+12>>2];J[e+16>>2]=J[e+16>>2]-c;J[e+20>>2]=c+J[e+20>>2];J[a+92>>2]=c+J[a+92>>2];d=d-c|0}if(d){c=J[a>>2];e=J[c+12>>2];f=J[c+4>>2];if(f){i=f;f=d>>>0>f>>>0?f:d;J[c+4>>2]=i-f;e=hj(e,J[c>>2],f);c:{d:{switch(J[J[c+28>>2]+24>>2]-1|0){case 0:J[c+48>>2]=dq(J[c+48>>2],e,f);break c;case 1:break d;default:break c}}J[c+48>>2]=Gl(J[c+48>>2],e,f)}J[c>>2]=f+J[c>>2];J[c+8>>2]=f+J[c+8>>2];c=J[a>>2];e=J[c+12>>2]}J[c+12>>2]=d+e;J[c+16>>2]=J[c+16>>2]-d;J[c+20>>2]=J[c+20>>2]+d}if(!h){continue}break}e=J[a>>2];f=0}c=J[e+4>>2];e:{if((c|0)==(g|0)){d=J[a+108>>2];break e}c=g-c|0;d=J[a+44>>2];f:{if(c>>>0>=d>>>0){J[a+5808>>2]=2;hj(J[a+56>>2],J[e>>2]-d|0,d);d=J[a+44>>2];J[a+5812>>2]=d;J[a+108>>2]=d;break f}e=J[a+108>>2];g:{if(c>>>0>2]-e>>>0){break g}e=e-d|0;J[a+108>>2]=e;g=J[a+56>>2];hj(g,d+g|0,e);d=J[a+5808>>2];if(d>>>0<=1){J[a+5808>>2]=d+1}e=J[a+108>>2];if(e>>>0>=M[a+5812>>2]){break g}J[a+5812>>2]=e}hj(J[a+56>>2]+e|0,J[J[a>>2]>>2]-c|0,c);d=c+J[a+108>>2]|0;J[a+108>>2]=d;e=J[a+5812>>2];g=J[a+44>>2]-e|0;J[a+5812>>2]=(c>>>0>>0?c:g)+e}J[a+92>>2]=d}if(M[a+5828>>2]>>0){J[a+5828>>2]=d}h:{i:{if(f){j:{k:{switch(b|0){case 0:case 4:break j;default:break k}}if(J[J[a>>2]+4>>2]|J[a+92>>2]!=(d|0)){break j}return 1}e=J[a+60>>2]-d|0;l:{if(e>>>0>=M[J[a>>2]+4>>2]){break l}f=J[a+92>>2];c=J[a+44>>2];if((f|0)<(c|0)){break l}d=d-c|0;J[a+108>>2]=d;J[a+92>>2]=f-c;f=J[a+56>>2];hj(f,c+f|0,d);c=J[a+5808>>2];if(c>>>0<=1){J[a+5808>>2]=c+1}e=J[a+44>>2]+e|0;d=J[a+108>>2];if(d>>>0>=M[a+5812>>2]){break l}J[a+5812>>2]=d}c=J[a>>2];f=J[c+4>>2];e=e>>>0>>0?e:f;if(e){g=J[a+56>>2];J[c+4>>2]=f-e;d=hj(d+g|0,J[c>>2],e);m:{n:{switch(J[J[c+28>>2]+24>>2]-1|0){case 0:J[c+48>>2]=dq(J[c+48>>2],d,e);break m;case 1:break n;default:break m}}J[c+48>>2]=Gl(J[c+48>>2],d,e)}J[c>>2]=e+J[c>>2];J[c+8>>2]=e+J[c+8>>2];d=e+J[a+108>>2]|0;J[a+108>>2]=d;c=J[a+5812>>2];f=J[a+44>>2]-c|0;J[a+5812>>2]=(e>>>0>>0?e:f)+c}if(M[a+5828>>2]>>0){J[a+5828>>2]=d}i=J[a+92>>2];f=d-i|0;c=J[a+12>>2]-(J[a+5820>>2]+42>>3)|0;e=c>>>0>=65535?65535:c;c=J[a+44>>2];if(f>>>0<(c>>>0>e>>>0?e:c)>>>0){c=0;if(J[J[a>>2]+4>>2]|(!b|!((b|0)==4|(d|0)!=(i|0)))){break i}}g=0;c=e>>>0>f>>>0?f:e;g=J[J[a>>2]+4>>2]|(b|0)!=4?g:e>>>0>=f>>>0;xz(a,i+J[a+56>>2]|0,c,g);J[a+92>>2]=c+J[a+92>>2];b=J[a>>2];c=J[b+28>>2];zm(c);d=J[c+20>>2];e=J[b+16>>2];d=d>>>0>>0?d:e;o:{if(!d){break o}hj(J[b+12>>2],J[c+16>>2],d);J[b+12>>2]=d+J[b+12>>2];J[c+16>>2]=d+J[c+16>>2];J[b+20>>2]=d+J[b+20>>2];J[b+16>>2]=J[b+16>>2]-d;b=J[c+20>>2];J[c+20>>2]=b-d;if((b|0)!=(d|0)){break o}J[c+16>>2]=J[c+8>>2]}if(!g){break h}c=2}else{c=3}J[a+5824>>2]=8}return c|0}return 0}function Cx(a,b,c,d){var e=0,f=Q(0),g=Q(0),h=Q(0),i=Q(0),j=Q(0),k=Q(0),l=Q(0),m=Q(0),n=Q(0),o=Q(0),p=Q(0),q=Q(0),r=Q(0),s=Q(0),t=Q(0),u=Q(0),v=Q(0),w=Q(0),x=Q(0),y=Q(0),z=Q(0),A=Q(0),C=Q(0),D=Q(0),E=Q(0),F=Q(0),G=Q(0),I=Q(0),O=Q(0),P=Q(0),R=Q(0),S=0,T=Q(0),U=Q(0),V=Q(0),W=Q(0);a:{b:{if(b+1>>>0<2){break b}S=b&65535;if(S>>>0>=M[a+2272>>2]){break a}e=J[J[a+2264>>2]+(S<<2)>>2];if(!e|L[J[a+2268>>2]+(S<<1)>>1]!=(b>>>16|0)){break b}a=J[a+2480>>2];g=Q(M[(Zi[J[79381]](a)|0)+80>>2]);i=Q(M[(Zi[J[79381]](a)|0)+84>>2]);b=K[e+308|0];c:{if(b&2){p=Q(1);Zi[J[79381]](a)|0;m=Q(Zb());j=N[e+304>>2];i=Q(Q(i/m)/j);n=Q(i*Q(.5));h=Q(i*Q(-.5));i=Q(Q(1)/Q(n-h));n=Q(i*Q(-Q(h+n)));g=Q(Q(g/m)/j);j=Q(g*Q(.5));g=Q(g*Q(-.5));m=Q(Q(1)/Q(j-g));j=Q(m*Q(-Q(g+j)));h=N[e+296>>2];f=N[e+300>>2];g=Q(Q(1)/Q(h-f));h=Q(Q(h+f)*g);f=Q(i+i);i=Q(m+m);m=Q(g+g);g=Q(0);break c}p=N[e+296>>2];n=N[e+300>>2];j=Q(Q(1)/Q(p-n));m=Q(Q(p+n)*j);h=N[e+288>>2];f=gG(Q(Q(N[e+292>>2]*Q(-.5))+Q(1.5707963705062866)));i=Q(f/(b&1?Q(g/i):h));g=Q(Q(p*n)*j);h=Q(g+g);j=Q(0);n=Q(0);p=Q(0);g=Q(-1)}J[e+116>>2]=0;J[e+120>>2]=0;N[e+112>>2]=i;J[e+136>>2]=0;J[e+140>>2]=0;N[e+132>>2]=f;N[e+172>>2]=p;N[e+168>>2]=h;N[e+164>>2]=n;N[e+160>>2]=j;N[e+156>>2]=g;N[e+152>>2]=m;J[e+124>>2]=0;J[e+128>>2]=0;J[e+144>>2]=0;J[e+148>>2]=0;v=N[c+8>>2];w=N[c+4>>2];x=N[c>>2];i=N[d>>2];g=N[d+4>>2];p=N[d+12>>2];n=N[d+8>>2];J[e+108>>2]=1065353216;J[e+92>>2]=0;J[e+76>>2]=0;J[e+60>>2]=0;f=Q(p*Q(0));k=Q(n*Q(0));m=Q(i+Q(f+k));o=Q(i*Q(0));r=Q(g*Q(0));j=Q(Q(o+r)-n);s=Q(g*Q(-0));h=Q(s+Q(o-p));l=Q(Q(f-g)-k);q=Q(v-Q(v+Q(Q(i*m)+Q(Q(Q(n*j)+Q(p*h))-Q(g*l)))));t=q;u=Q(q*q);q=Q(w-Q(w+Q(Q(l*n)+Q(Q(Q(j*g)+Q(p*m))-Q(h*i)))));h=Q(x-Q(x+Q(Q(h*g)+Q(Q(Q(j*i)+Q(p*l))-Q(m*n)))));l=Q(Q(1)/Q(Y(Q(u+Q(Q(q*q)+Q(h*h))))));m=Q(t*l);N[e+88>>2]=m;j=Q(q*l);N[e+72>>2]=j;h=Q(h*l);N[e+56>>2]=h;t=Q(Q(x*h)+Q(Q(w*j)+Q(v*m)));N[e+104>>2]=-t;l=Q(s+Q(f+i));q=Q(k+Q(o+g));f=Q(Q(f+r)-n);k=Q(Q(p+k)-o);o=Q(Q(g*l)+Q(Q(Q(i*q)+Q(p*f))-Q(n*k)));r=Q(Q(k*i)+Q(Q(Q(q*n)+Q(p*l))-Q(f*g)));f=Q(Q(f*n)+Q(Q(Q(q*g)+Q(p*k))-Q(l*i)));k=Q(Q(1)/Q(Y(Q(Q(r*r)+Q(Q(f*f)+Q(o*o))))));o=Q(o*k);l=Q(f*k);f=Q(Q(o*j)-Q(l*h));q=f;s=Q(f*f);f=Q(r*k);k=Q(Q(f*h)-Q(o*m));o=Q(Q(l*m)-Q(f*j));l=Q(Q(1)/Q(Y(Q(s+Q(Q(k*k)+Q(o*o))))));f=Q(q*l);N[e+80>>2]=f;k=Q(k*l);N[e+64>>2]=k;o=Q(o*l);N[e+48>>2]=o;l=Q(Q(h*k)-Q(j*o));N[e+84>>2]=l;q=Q(Q(m*o)-Q(h*f));N[e+68>>2]=q;r=Q(Q(j*f)-Q(m*k));N[e+52>>2]=r;s=Q(-Q(Q(x*o)+Q(Q(w*k)+Q(v*f))));N[e+96>>2]=s;u=Q(Q(x*r)+Q(Q(w*q)+Q(v*l)));N[e+100>>2]=-u;y=N[e+144>>2];z=N[e+124>>2];T=N[e+160>>2];A=N[e+112>>2];C=N[e+128>>2];U=N[e+164>>2];D=N[e+148>>2];E=N[e+116>>2];F=N[e+132>>2];V=N[e+168>>2];G=N[e+152>>2];I=N[e+120>>2];O=N[e+136>>2];W=N[e+172>>2];P=N[e+156>>2];R=N[e+140>>2];N[e+268>>2]=p;N[e+264>>2]=n;N[e+260>>2]=g;N[e+256>>2]=i;N[e+248>>2]=v;N[e+244>>2]=w;N[e+240>>2]=x;N[e+236>>2]=W+Q(Q(Q(z*s)-Q(R*u))-Q(P*t));N[e+232>>2]=V+Q(Q(Q(I*s)-Q(O*u))-Q(G*t));N[e+228>>2]=U+Q(Q(Q(E*s)-Q(F*u))-Q(D*t));N[e+224>>2]=T+Q(Q(Q(A*s)-Q(C*u))-Q(y*t));g=Q(W*Q(0));N[e+220>>2]=g+Q(Q(P*m)+Q(Q(z*f)+Q(l*R)));i=Q(V*Q(0));N[e+216>>2]=i+Q(Q(G*m)+Q(Q(I*f)+Q(l*O)));p=Q(U*Q(0));N[e+212>>2]=p+Q(Q(D*m)+Q(Q(E*f)+Q(F*l)));n=Q(T*Q(0));N[e+208>>2]=n+Q(Q(y*m)+Q(Q(A*f)+Q(C*l)));N[e+204>>2]=g+Q(Q(P*j)+Q(Q(z*k)+Q(q*R)));N[e+200>>2]=i+Q(Q(G*j)+Q(Q(I*k)+Q(q*O)));N[e+196>>2]=p+Q(Q(D*j)+Q(Q(E*k)+Q(F*q)));N[e+192>>2]=n+Q(Q(y*j)+Q(Q(A*k)+Q(C*q)));N[e+188>>2]=g+Q(Q(P*h)+Q(Q(z*o)+Q(r*R)));N[e+184>>2]=i+Q(Q(G*h)+Q(Q(I*o)+Q(r*O)));N[e+180>>2]=p+Q(Q(D*h)+Q(Q(E*o)+Q(F*r)));N[e+176>>2]=n+Q(Q(y*h)+Q(Q(A*o)+Q(C*r)));H[e+320|0]=K[e+320|0]&253}return}Z(2686,54166,244,5438);B()}function pha(a){a=a|0;var b=0,c=0,d=0,e=0,f=0,g=0,h=0,i=0,j=0,k=0;j=Ui-16|0;Ui=j;k=J[a+8>>2]-J[a+12>>2]>>4;a:{b:{if(kk(a,1)){i=ok(a,1);c:{if(i<0x10000000000000000&i>=0){g=~~i>>>0;if(R(i)>=1){d=~~(i>0?T(V(i*2.3283064365386963e-10),4294967295):W((i-+(~~i>>>0>>>0))*2.3283064365386963e-10))>>>0}else{d=0}break c}d=0}if(ur(J[78229],g,d)){break b}c=fj(a,127240,0);break a}g=mk(a,1);d=Yi;e=d;b=g;c=Xp(a,J[78228],b,d,80845);d=c;g=J[d+64>>2];d=J[d+68>>2];if(ur(J[78229],g,d)){break b}J[j>>2]=tj(b,e);c=fj(a,125716,j);break a}if((d|0)!=2){c=fj(a,15564,0);break a}Fj(a,0,0);b=J[a+8>>2];J[b+8>>2]=3;O[b>>3]=+(g>>>0)+ +(d>>>0)*4294967296;J[a+8>>2]=J[a+8>>2]+16;ej(a,-2,66984);mj(a,18304,11);Fj(a,0,0);d:{if(!c){c=1;b=Zi[J[79450]](g,d,1)|0;f=Yi;e:{if(!(b|f)){c=0;break e}e=J[a+8>>2];J[e+8>>2]=3;O[e>>3]=1;J[a+8>>2]=J[a+8>>2]+16;Fj(a,0,0);Qn(a,b,f);b=J[a+8>>2];J[b+8>>2]=3;O[b>>3]=1;J[a+8>>2]=J[a+8>>2]+16;ej(a,-2,63884);Xj(a,-3)}b=Zi[J[79450]](g,d,2)|0;f=Yi;if(b|f){e=J[a+8>>2];J[e+8>>2]=3;c=c+1|0;O[e>>3]=c|0;J[a+8>>2]=J[a+8>>2]+16;Fj(a,0,0);Qn(a,b,f);b=J[a+8>>2];J[b+8>>2]=3;O[b>>3]=2;J[a+8>>2]=J[a+8>>2]+16;ej(a,-2,63884);Xj(a,-3)}b=Zi[J[79450]](g,d,4)|0;f=Yi;if(b|f){e=J[a+8>>2];J[e+8>>2]=3;c=c+1|0;O[e>>3]=c|0;J[a+8>>2]=J[a+8>>2]+16;Fj(a,0,0);Qn(a,b,f);b=J[a+8>>2];J[b+8>>2]=3;O[b>>3]=4;J[a+8>>2]=J[a+8>>2]+16;ej(a,-2,63884);Xj(a,-3)}b=Zi[J[79450]](g,d,8)|0;f=Yi;if(b|f){e=J[a+8>>2];J[e+8>>2]=3;c=c+1|0;O[e>>3]=c|0;J[a+8>>2]=J[a+8>>2]+16;Fj(a,0,0);Qn(a,b,f);b=J[a+8>>2];J[b+8>>2]=3;O[b>>3]=8;J[a+8>>2]=J[a+8>>2]+16;ej(a,-2,63884);Xj(a,-3)}b=Zi[J[79450]](g,d,16)|0;f=Yi;if(b|f){e=J[a+8>>2];J[e+8>>2]=3;c=c+1|0;O[e>>3]=c|0;J[a+8>>2]=J[a+8>>2]+16;Fj(a,0,0);Qn(a,b,f);b=J[a+8>>2];J[b+8>>2]=3;O[b>>3]=16;J[a+8>>2]=J[a+8>>2]+16;ej(a,-2,63884);Xj(a,-3)}g=Zi[J[79450]](g,d,32)|0;d=Yi;if(!(g|d)){break d}b=J[a+8>>2];J[b+8>>2]=3;O[b>>3]=c+1|0;J[a+8>>2]=J[a+8>>2]+16;Fj(a,0,0);Qn(a,g,d);g=J[a+8>>2];J[g+8>>2]=3;O[g>>3]=32;J[a+8>>2]=J[a+8>>2]+16;ej(a,-2,63884);Xj(a,-3);break d}b=Zi[J[79450]](g,d,1)|0;e=Yi;if(b|e){f=J[a+8>>2];J[f+8>>2]=3;O[f>>3]=1;J[a+8>>2]=J[a+8>>2]+16;Fj(a,0,0);Qn(a,b,e);b=J[a+8>>2];J[b+8>>2]=3;O[b>>3]=1;J[a+8>>2]=J[a+8>>2]+16;ej(a,-2,63884);Bk(a,J[c+24>>2],J[c+28>>2]);ej(a,-2,62928);Xj(a,-3);f=1}b=Zi[J[79450]](g,d,2)|0;e=Yi;if(b|e){h=J[a+8>>2];J[h+8>>2]=3;f=f+1|0;O[h>>3]=f|0;J[a+8>>2]=J[a+8>>2]+16;Fj(a,0,0);Qn(a,b,e);b=J[a+8>>2];J[b+8>>2]=3;O[b>>3]=2;J[a+8>>2]=J[a+8>>2]+16;ej(a,-2,63884);Bk(a,J[c+32>>2],J[c+36>>2]);ej(a,-2,62928);Xj(a,-3)}b=Zi[J[79450]](g,d,4)|0;e=Yi;if(b|e){h=J[a+8>>2];J[h+8>>2]=3;f=f+1|0;O[h>>3]=f|0;J[a+8>>2]=J[a+8>>2]+16;Fj(a,0,0);Qn(a,b,e);b=J[a+8>>2];J[b+8>>2]=3;O[b>>3]=4;J[a+8>>2]=J[a+8>>2]+16;ej(a,-2,63884);Bk(a,J[c+40>>2],J[c+44>>2]);ej(a,-2,62928);Xj(a,-3)}b=Zi[J[79450]](g,d,8)|0;e=Yi;if(b|e){h=J[a+8>>2];J[h+8>>2]=3;f=f+1|0;O[h>>3]=f|0;J[a+8>>2]=J[a+8>>2]+16;Fj(a,0,0);Qn(a,b,e);b=J[a+8>>2];J[b+8>>2]=3;O[b>>3]=8;J[a+8>>2]=J[a+8>>2]+16;ej(a,-2,63884);Bk(a,J[c+48>>2],J[c+52>>2]);ej(a,-2,62928);Xj(a,-3)}b=Zi[J[79450]](g,d,16)|0;e=Yi;if(b|e){h=J[a+8>>2];J[h+8>>2]=3;f=f+1|0;O[h>>3]=f|0;J[a+8>>2]=J[a+8>>2]+16;Fj(a,0,0);Qn(a,b,e);b=J[a+8>>2];J[b+8>>2]=3;O[b>>3]=16;J[a+8>>2]=J[a+8>>2]+16;ej(a,-2,63884);Bk(a,J[c+56>>2],J[c+60>>2]);ej(a,-2,62928);Xj(a,-3)}g=Zi[J[79450]](g,d,32)|0;d=Yi;if(!(g|d)){break d}b=J[a+8>>2];J[b+8>>2]=3;O[b>>3]=f+1|0;J[a+8>>2]=J[a+8>>2]+16;Fj(a,0,0);Qn(a,g,d);g=J[a+8>>2];J[g+8>>2]=3;O[g>>3]=32;J[a+8>>2]=J[a+8>>2]+16;ej(a,-2,63884);Xj(a,-3)}Xj(a,-3);c=1;if((k+1|0)==J[a+8>>2]-J[a+12>>2]>>4){break a}Z(143411,42133,1709,44317);B()}Ui=j+16|0;return c|0}function Cda(a){a=a|0;var b=0,c=0,d=0,e=0,f=0,g=0,h=0,i=0,j=0;f=J[J[a+16>>2]+8>>2];h=J[a>>2];a=J[h+4>>2];b=J[h+8>>2];if((a|0)!=(b|0)){a=b-a>>2;j=a>>>0<=1?1:a;while(1){a:{b:{c:{a=J[h+4>>2];if(J[h+8>>2]-a>>2>>>0>i>>>0){e=J[a+(i<<2)>>2];d=J[e+152>>2];if(!d){break a}g=J[e+192>>2];a=g;if(!a){a=J[d+8>>2]}b=J[e+156>>2];if(!b){b=J[d+4>>2]}if((d|0)==(f|0)|J[a>>2]==(f|0)|(b|0)==(f|0)){break b}a=J[e+160>>2];if(g){d:{e:{if(a){break e}a=J[g+4>>2];if(a){break e}a=J[d+12>>2];if(a){break e}b=0;c=0;a=J[d+8>>2];if(!a){break d}a=J[a+4>>2];if(!a){break d}}b=J[a>>2];c=J[a+4>>2]}if(!c&(b|0)==(f|0)){break b}a=J[e+164>>2];f:{g:{if(a){break g}a=J[g+8>>2];if(a){break g}a=J[d+16>>2];if(a){break g}b=0;c=0;a=J[d+8>>2];if(!a){break f}a=J[a+8>>2];if(!a){break f}}b=J[a>>2];c=J[a+4>>2]}if(!c&(b|0)==(f|0)){break b}a=J[e+168>>2];h:{i:{if(a){break i}a=J[g+12>>2];if(a){break i}a=J[d+20>>2];if(a){break i}b=0;c=0;a=J[d+8>>2];if(!a){break h}a=J[a+12>>2];if(!a){break h}}b=J[a>>2];c=J[a+4>>2]}if(!c&(b|0)==(f|0)){break b}a=J[e+172>>2];j:{k:{if(a){break k}a=J[g+16>>2];if(a){break k}a=J[d+24>>2];if(a){break k}b=0;c=0;a=J[d+8>>2];if(!a){break j}a=J[a+16>>2];if(!a){break j}}b=J[a>>2];c=J[a+4>>2]}if(!c&(b|0)==(f|0)){break b}a=J[e+176>>2];l:{m:{if(a){break m}a=J[g+20>>2];if(a){break m}a=J[d+28>>2];if(a){break m}b=0;c=0;a=J[d+8>>2];if(!a){break l}a=J[a+20>>2];if(!a){break l}}b=J[a>>2];c=J[a+4>>2]}if(!c&(b|0)==(f|0)){break b}a=J[e+180>>2];n:{o:{if(a){break o}a=J[g+24>>2];if(a){break o}a=J[d+32>>2];if(a){break o}b=0;c=0;a=J[d+8>>2];if(!a){break n}a=J[a+24>>2];if(!a){break n}}b=J[a>>2];c=J[a+4>>2]}if(!c&(b|0)==(f|0)){break b}a=J[e+184>>2];p:{q:{if(a){break q}a=J[g+28>>2];if(a){break q}a=J[d+36>>2];if(a){break q}b=0;c=0;a=J[d+8>>2];if(!a){break p}a=J[a+28>>2];if(!a){break p}}b=J[a>>2];c=J[a+4>>2]}if(!c&(b|0)==(f|0)){break b}a=J[e+188>>2];r:{s:{if(a){break s}a=J[g+32>>2];if(a){break s}a=J[d+40>>2];if(a){break s}b=0;c=0;a=J[d+8>>2];if(!a){break r}a=J[a+32>>2];if(!a){break r}}b=J[a>>2];c=J[a+4>>2]}if(!c&(b|0)==(f|0)){break b}break a}t:{u:{if(a){break u}a=J[d+12>>2];if(a){break u}b=0;c=0;a=J[d+8>>2];if(!a){break t}a=J[a+4>>2];if(!a){break t}}b=J[a>>2];c=J[a+4>>2]}if((b|0)!=(f|0)|c){break c}break b}Z(145396,53895,494,84789);B()}a=J[e+164>>2];v:{w:{if(a){break w}a=J[d+16>>2];if(a){break w}b=0;c=0;a=J[d+8>>2];if(!a){break v}a=J[a+8>>2];if(!a){break v}}b=J[a>>2];c=J[a+4>>2]}if(!c&(b|0)==(f|0)){break b}a=J[e+168>>2];x:{y:{if(a){break y}a=J[d+20>>2];if(a){break y}b=0;c=0;a=J[d+8>>2];if(!a){break x}a=J[a+12>>2];if(!a){break x}}b=J[a>>2];c=J[a+4>>2]}if(!c&(b|0)==(f|0)){break b}a=J[e+172>>2];z:{A:{if(a){break A}a=J[d+24>>2];if(a){break A}b=0;c=0;a=J[d+8>>2];if(!a){break z}a=J[a+16>>2];if(!a){break z}}b=J[a>>2];c=J[a+4>>2]}if(!c&(b|0)==(f|0)){break b}a=J[e+176>>2];B:{C:{if(a){break C}a=J[d+28>>2];if(a){break C}b=0;c=0;a=J[d+8>>2];if(!a){break B}a=J[a+20>>2];if(!a){break B}}b=J[a>>2];c=J[a+4>>2]}if(!c&(b|0)==(f|0)){break b}a=J[e+180>>2];D:{E:{if(a){break E}a=J[d+32>>2];if(a){break E}b=0;c=0;a=J[d+8>>2];if(!a){break D}a=J[a+24>>2];if(!a){break D}}b=J[a>>2];c=J[a+4>>2]}if(!c&(b|0)==(f|0)){break b}a=J[e+184>>2];F:{G:{if(a){break G}a=J[d+36>>2];if(a){break G}b=0;c=0;a=J[d+8>>2];if(!a){break F}a=J[a+28>>2];if(!a){break F}}b=J[a>>2];c=J[a+4>>2]}if(!c&(b|0)==(f|0)){break b}a=J[e+188>>2];H:{I:{if(a){break I}a=J[d+40>>2];if(a){break I}b=0;c=0;a=J[d+8>>2];if(!a){break H}a=J[a+32>>2];if(!a){break H}}b=J[a>>2];c=J[a+4>>2]}if((b|0)!=(f|0)|c){break a}}H[e+204|0]=K[e+204|0]|4}i=i+1|0;if((j|0)!=(i|0)){continue}break}}}function EK(a,b){var c=0,d=0,e=0,f=0,g=0,h=0,i=0,j=0,k=0,l=0,m=0;e=Ui-80|0;Ui=e;g=e+6|0;ij(g,0,74);yJ(g);m=J[39782]>>>3|0;f=e-(m+15&-16)|0;Ui=f;l=e+22|0;$B(2,l,yj(l),f);a:{b:{g=J[a+8>>2];k=J[g+24>>2];if(!k){break b}g=J[g+20>>2];i=1;if(!Wj(f,J[g>>2],m)){break a}while(1){j=j+1|0;if((k|0)==(j|0)){break b}if(Wj(f,J[g+(j<<3)>>2],m)){continue}break}i=j>>>0>>0;break a}J[e>>2]=l;dj(4,96538,136571,e);i=0}Ui=e+80|0;if(i){h=Ui+-64|0;Ui=h;k=J[J[a+8>>2]+4>>2];m=J[(k<<2)+159120>>2]>>>3|0;c=h-(m+15&-16)|0;Ui=c;g=J[a+4>>2];j=J[g>>2];l=J[g+4>>2];g=Ui-16|0;Ui=g;c:{d:{switch(k-2|0){case 0:gS(j,l,c);break c;case 1:if(oA(j,l,c,0)){H[c|0]=0;H[c+1|0]=0;H[c+2|0]=0;H[c+3|0]=0;H[c+4|0]=0;H[c+5|0]=0;H[c+6|0]=0;H[c+7|0]=0;H[c+16|0]=0;H[c+17|0]=0;H[c+18|0]=0;H[c+19|0]=0;H[c+8|0]=0;H[c+9|0]=0;H[c+10|0]=0;H[c+11|0]=0;H[c+12|0]=0;H[c+13|0]=0;H[c+14|0]=0;H[c+15|0]=0}break c;case 2:if(Tt(j,l,c,0)){H[c|0]=0;H[c+1|0]=0;H[c+2|0]=0;H[c+3|0]=0;H[c+4|0]=0;H[c+5|0]=0;H[c+6|0]=0;H[c+7|0]=0;H[c+16|0]=0;H[c+17|0]=0;H[c+18|0]=0;H[c+19|0]=0;H[c+8|0]=0;H[c+9|0]=0;H[c+10|0]=0;H[c+11|0]=0;H[c+12|0]=0;H[c+13|0]=0;H[c+14|0]=0;H[c+15|0]=0}break c;default:break d}}J[g>>2]=k;dj(4,96538,137856,g)}Ui=g+16|0;J[h+60>>2]=0;J[h+56>>2]=0;J[h+52>>2]=0;J[h+48>>2]=0;g=vu(b,h+60|0);e:{if(g){J[h+36>>2]=b;J[h+32>>2]=g;dj(4,96538,29131,h+32|0);a=-9;break e}f:{k=J[h+60>>2];g=sj(k);if(g){k=wu(b,g,k,h+52|0);if(k){J[h+20>>2]=b;J[h+16>>2]=k;dj(4,96538,29207,h+16|0);break f}j=J[h+52>>2];k=J[h+60>>2];if((j|0)!=(k|0)){J[h+8>>2]=j;J[h+4>>2]=k;J[h>>2]=b;dj(4,96538,22087,h);break f}a=J[a+4>>2];l=J[a+8>>2];k=J[a+12>>2];d=Ui-1568|0;Ui=d;a=d+1048|0;J[a>>2]=0;J[a+4>>2]=0;b=d+96|0;TH(b);a=d+416|0;EH(a);i=SH(b,a,10424);g:{if(i){b=d+1056|0;ij(b,0,512);H[b|0]=0;a=i>>31;J[d+84>>2]=(a^i)-a;J[d+80>>2]=(i|0)<0?135229:158859;J[d+88>>2]=b;dj(4,99340,31415,d+80|0);J[d+64>>2]=i;dj(4,99340,80162,d- -64|0);f=1;break g}i=d+1048|0;e=Ui-32|0;Ui=e;h:{if(!j){f=-15616;break h}b=e+12|0;a=b;J[a>>2]=0;J[a+4>>2]=0;J[a+8>>2]=0;i:{j=g+j|0;a=j-1|0;if(K[a|0]){break i}f=uA(b,135096,135127,g,e+24|0);if((f|0)!=-4224){if(!f){J[e+28>>2]=J[e+12>>2];a=J[66951];if(!a){f=-15488;break h}f=sA(i,a);if(f){break h}f=cA(e+28|0,J[e+28>>2]+J[e+16>>2]|0,J[i+4>>2]);if(i?f:0){a=J[i>>2];if(a){Zi[J[a+40>>2]](J[i+4>>2])}Zi[J[66509]](i,0,8)|0}br(e+12|0);break h}br(e+12|0);break h}if(K[a|0]){break i}b=e+12|0;f=uA(b,135044,135071,g,e+24|0);if((f|0)==-4224){break i}if(!f){a=J[e+12>>2];J[e+28>>2]=a;f=tA(e+28|0,a+J[e+16>>2]|0,i);br(b);break h}br(e+12|0);break h}br(e+12|0);a=J[66951];if(!a){f=-15488;break h}f=sA(i,a);if(f){break h}J[e+28>>2]=g;f=cA(e+28|0,j,J[i+4>>2]);if(!f){f=0;break h}if(i){a=J[i>>2];if(a){Zi[J[a+40>>2]](J[i+4>>2])}Zi[J[66509]](i,0,8)|0}if((f|0)!=-15202){break h}J[e+28>>2]=g;f=tA(e+28|0,j,i)}Ui=e+32|0;if(f){a=d+1056|0;ij(a,0,512);f=1;H[a|0]=0;J[d+52>>2]=1;J[d+48>>2]=158859;J[d+56>>2]=a;dj(4,99340,31415,d+48|0);J[d+32>>2]=1;dj(4,99340,80066,d+32|0);break g}b=sj(64);J[h+48>>2]=b;j=-16512;j:{a=J[d+1052>>2];if(J[a+4>>2]==(k|0)){f=0;j=vH(a,2269,d+96|0,0,d+92|0,l,b,64);if(!j){break j}}b=d+1056|0;ij(b,0,512);H[b|0]=0;a=j>>31;J[d+20>>2]=(a^j)-a;J[d+16>>2]=(j|0)<0?135229:158859;J[d+24>>2]=b;dj(4,99340,31415,d+16|0);J[d>>2]=j;dj(4,99340,80114,d);cj(J[h+48>>2]);f=1;break g}J[h+56>>2]=J[d+92>>2]}UH(d+96|0);FH(d+416|0);b=d+1048|0;if(b){a=J[b>>2];if(a){Zi[J[a+40>>2]](J[b+4>>2])}Zi[J[66509]](b,0,8)|0}Ui=d+1568|0;a=f?-1:0;if(a){break e}a=XB(J[h+48>>2],J[h+56>>2],c,m);cj(J[h+48>>2]);cj(g);break e}Z(57530,36812,132,53425);B()}cj(g);a=-9}Ui=h- -64|0}else{a=-19}return a}function UV(a,b,c){var d=0,e=0,f=0,g=0,h=0;d=Ui-16|0;Ui=d;e=J[a+32>>2];a:{b:{if((e|0)==(b|0)|!e|J[c+12>>2]){J[d+8>>2]=0;b=J[c+16>>2];if(b){break a}b=Zi[J[c+4>>2]](J[c>>2],d+8|0,4,J[c+8>>2])|0;break b}J[d+8>>2]=J[e+12>>2]+1;b=J[c+16>>2];if(b){break a}b=Zi[J[c+4>>2]](J[c>>2],d+8|0,4,J[c+8>>2])|0;J[c+16>>2]=b;if(b){break a}b=Zi[J[c+4>>2]](J[c>>2],e+16|0,J[d+8>>2],J[c+8>>2])|0}J[c+16>>2]=b}J[d+8>>2]=J[a+60>>2];c:{d:{e:{if(b){break e}e=d+8|0;b=Zi[J[c+4>>2]](J[c>>2],e,4,J[c+8>>2])|0;J[c+16>>2]=b;J[d+8>>2]=J[a+64>>2];if(b){break e}b=Zi[J[c+4>>2]](J[c>>2],e,4,J[c+8>>2])|0;J[c+16>>2]=b;H[d+8|0]=K[a+72|0];if(b){break e}b=Zi[J[c+4>>2]](J[c>>2],e,1,J[c+8>>2])|0;J[c+16>>2]=b;H[d+8|0]=K[a+73|0];if(b){break e}b=Zi[J[c+4>>2]](J[c>>2],e,1,J[c+8>>2])|0;J[c+16>>2]=b;H[d+8|0]=K[a+74|0];if(b){break e}b=Zi[J[c+4>>2]](J[c>>2],e,1,J[c+8>>2])|0;J[c+16>>2]=b;H[d+8|0]=K[a+75|0];if(b){break e}b=Zi[J[c+4>>2]](J[c>>2],e,1,J[c+8>>2])|0;J[c+16>>2]=b;f=J[a+12>>2];g=J[a+44>>2];J[d+8>>2]=g;if(b){break e}b=Zi[J[c+4>>2]](J[c>>2],e,4,J[c+8>>2])|0;J[c+16>>2]=b;if(!b){break d}}g=J[a+40>>2];break c}b=Zi[J[c+4>>2]](J[c>>2],f,g<<2,J[c+8>>2])|0;J[c+16>>2]=b;g=J[a+40>>2];J[d+8>>2]=g;if(b){break c}b=Zi[J[c+4>>2]](J[c>>2],d+8|0,4,J[c+8>>2])|0;J[c+16>>2]=b}if((g|0)>0){f=0;while(1){h=J[a+8>>2]+(f<<4)|0;e=J[h+8>>2];H[d+8|0]=e;if(!b){b=Zi[J[c+4>>2]](J[c>>2],d+8|0,1,J[c+8>>2])|0;J[c+16>>2]=b;e=J[h+8>>2]}f:{g:{h:{switch(e-1|0){case 0:H[d+8|0]=J[h>>2];if(b){break f}b=Zi[J[c+4>>2]](J[c>>2],d+8|0,1,J[c+8>>2])|0;break g;case 2:O[d+8>>3]=O[h>>3];if(b){break f}b=Zi[J[c+4>>2]](J[c>>2],d+8|0,8,J[c+8>>2])|0;break g;case 3:break h;default:break f}}e=J[h>>2];if(!e){J[d+8>>2]=0;if(b){break f}b=Zi[J[c+4>>2]](J[c>>2],d+8|0,4,J[c+8>>2])|0;break g}J[d+8>>2]=J[e+12>>2]+1;if(b){break f}b=Zi[J[c+4>>2]](J[c>>2],d+8|0,4,J[c+8>>2])|0;J[c+16>>2]=b;if(b){break f}b=Zi[J[c+4>>2]](J[c>>2],e+16|0,J[d+8>>2],J[c+8>>2])|0}J[c+16>>2]=b}f=f+1|0;if((g|0)!=(f|0)){continue}break}}e=J[a+52>>2];J[d+8>>2]=e;if(!b){J[c+16>>2]=Zi[J[c+4>>2]](J[c>>2],d+8|0,4,J[c+8>>2])}if((e|0)>0){b=0;while(1){UV(J[J[a+16>>2]+(b<<2)>>2],J[a+32>>2],c);b=b+1|0;if((e|0)!=(b|0)){continue}break}}f=0;e=J[a+20>>2];f=J[c+12>>2]?f:J[a+48>>2];J[d+8>>2]=f;b=J[c+16>>2];i:{if(b){break i}b=Zi[J[c+4>>2]](J[c>>2],d+8|0,4,J[c+8>>2])|0;J[c+16>>2]=b;if(b){break i}b=Zi[J[c+4>>2]](J[c>>2],e,f<<2,J[c+8>>2])|0;J[c+16>>2]=b}g=0;g=J[c+12>>2]?g:J[a+56>>2];J[d+8>>2]=g;if(!b){b=Zi[J[c+4>>2]](J[c>>2],d+8|0,4,J[c+8>>2])|0;J[c+16>>2]=b}if((g|0)>0){f=0;while(1){e=P(f,12);h=J[e+J[a+24>>2]>>2];j:{k:{if(!h){J[d+8>>2]=0;if(b){break j}b=Zi[J[c+4>>2]](J[c>>2],d+8|0,4,J[c+8>>2])|0;break k}J[d+8>>2]=J[h+12>>2]+1;if(b){break j}b=Zi[J[c+4>>2]](J[c>>2],d+8|0,4,J[c+8>>2])|0;J[c+16>>2]=b;if(b){break j}b=Zi[J[c+4>>2]](J[c>>2],h+16|0,J[d+8>>2],J[c+8>>2])|0}J[c+16>>2]=b}J[d+8>>2]=J[(e+J[a+24>>2]|0)+4>>2];l:{if(b){break l}h=d+8|0;b=Zi[J[c+4>>2]](J[c>>2],h,4,J[c+8>>2])|0;J[c+16>>2]=b;J[d+8>>2]=J[(e+J[a+24>>2]|0)+8>>2];if(b){break l}b=Zi[J[c+4>>2]](J[c>>2],h,4,J[c+8>>2])|0;J[c+16>>2]=b}f=f+1|0;if((g|0)!=(f|0)){continue}break}}g=0;g=J[c+12>>2]?g:J[a+36>>2];J[d+8>>2]=g;if(!b){b=Zi[J[c+4>>2]](J[c>>2],d+8|0,4,J[c+8>>2])|0;J[c+16>>2]=b}if((g|0)>0){f=0;while(1){e=J[J[a+28>>2]+(f<<2)>>2];m:{n:{if(!e){J[d+8>>2]=0;if(b){break m}b=Zi[J[c+4>>2]](J[c>>2],d+8|0,4,J[c+8>>2])|0;break n}J[d+8>>2]=J[e+12>>2]+1;if(b){break m}b=Zi[J[c+4>>2]](J[c>>2],d+8|0,4,J[c+8>>2])|0;J[c+16>>2]=b;if(b){break m}b=Zi[J[c+4>>2]](J[c>>2],e+16|0,J[d+8>>2],J[c+8>>2])|0}J[c+16>>2]=b}f=f+1|0;if((g|0)!=(f|0)){continue}break}}Ui=d+16|0}function UQ(a,b,c,d,e){var f=0,g=0,h=0,i=0,j=0,k=0,l=0;g=Ui-32|0;Ui=g;i=-13;a:{b:{c:{d:{if(!dk(b,c,J[62898],g+28|0,0)){i=wk(a,J[J[g+28>>2]>>2],e+28|0);e:{if(i){break e}b=J[e+24>>2];f:{if(!b){if(!pr(a,J[J[g+28>>2]>>2],g+8|0)){b=J[g+8>>2];c=J[b+4>>2];J[e+16>>2]=J[b>>2];J[e+20>>2]=c}f=J[e+28>>2];c=J[d+2080>>2];b=c;i=J[b+8>>2]-J[b+12>>2]|0;b=ij(Sj(b,332),0,316);J[b+324>>2]=-2;J[b+328>>2]=-2;J[b+316>>2]=0;J[b+320>>2]=-2;J[b+308>>2]=f;f=J[d+2104>>2];J[b+304>>2]=d;J[b+312>>2]=f;lj(J[d+2084>>2],40,b,b+8|0,b+4|0);TC(b+16|0,16,8);uj(c,-1);J[b+320>>2]=Lk(c,-1e4);Fj(c,0,0);J[b+324>>2]=Lk(c,-1e4);Fj(c,0,0);J[b+328>>2]=Lk(c,-1e4);rj(c,-1e4,70318);Mj(c,-2);Ok(c);FB(J[b+312>>2]);d=J[c+8>>2];J[d+8>>2]=0;J[c+8>>2]=d+16;Ok(c);if(i>>4!=J[c+8>>2]-J[c+12>>2]>>4){Z(143244,37616,3339,70288);B()}J[e+24>>2]=b;break f}J[b+308>>2]=J[e+28>>2];b=J[e+24>>2];ij(J[b+16>>2],255,J[b+20>>2]<<2);J[b+36>>2]=-1;J[b+40>>2]=0;J[b+28>>2]=J[b+24>>2]}b=g+16|0;J[b>>2]=0;J[b+4>>2]=0;J[g+8>>2]=0;J[g+12>>2]=0;c=g+8|0;lj(J[J[g+28>>2]+16>>2],8,c,b,c|4);if(H[e+12|0]&1){break d}lj(J[J[g+28>>2]+16>>2],4,e,e+8|0,e+4|0);b=J[g+28>>2];i=J[b+16>>2];g:{if(i){c=0;while(1){if(c>>>0>=i>>>0){break b}h:{d=J[b+12>>2];b=c<<3;i=wk(a,J[(d+b|0)+4>>2],g+4|0);if(!i){d=J[g+28>>2];if(M[d+16>>2]<=c>>>0){break b}f=CD(J[(b+J[d+12>>2]|0)+4>>2]);if(f){break h}d=c;c=J[g+28>>2];if(d>>>0>=M[c+16>>2]){break b}J[g>>2]=ul(J[(b+J[c+12>>2]|0)+4>>2],46);dj(4,88458,128013,g);i=-15}b=J[e>>2];d=J[e+4>>2];if((b|0)==(d|0)){break g}c=0;while(1){f=J[(c<<2)+b>>2];if(f){vj(a,f);d=J[e+4>>2];b=J[e>>2]}c=c+1|0;if(c>>>0>2>>>0){continue}break}break g}d=J[e+4>>2];if((d|0)==J[e+8>>2]){break a}i=J[g+4>>2];J[e+4>>2]=d+4;J[d>>2]=i;i=J[g+28>>2];if(M[i+16>>2]<=c>>>0){break b}d=J[g+12>>2];if((d|0)==J[g+16>>2]){break a}b=J[b+J[i+12>>2]>>2];J[g+12>>2]=d+8;J[d+4>>2]=f;J[d>>2]=b;c=c+1|0;b=J[g+28>>2];i=J[b+16>>2];if(c>>>0>>0){continue}break}}i=0;b=J[e>>2];if((b|0)==J[e+4>>2]){break g}c=0;while(1){d=J[g+8>>2];if(J[g+12>>2]-d>>3>>>0<=c>>>0){break c}b=J[(c<<2)+b>>2];a=0;f=0;i:{j:{k:{d=d+(c<<3)|0;k=J[d+4>>2];switch(k-1|0){case 0:case 2:break j;case 1:break k;default:break i}}a=J[b+64>>2];f=J[b+68>>2];break i}a=J[b>>2]}j=J[d>>2];d=Ui-16|0;Ui=d;h=J[e+24>>2];b=h+16|0;l=J[h+40>>2];h=J[h+32>>2]-J[h+24>>2]|0;if((l|0)==h>>5){TC(b,h>>3,h>>4)}J[d+8>>2]=0;J[d+12>>2]=0;J[d>>2]=a;J[d+4>>2]=f;J[d+8>>2]=k;a=bj(j);k=Yi;l:{m:{n:{o:{p:{l=J[b+16>>2];j=J[b+8>>2];if(J[b+24>>2]!=l-j>>5){f=J[b+4>>2];q:{if(!f){break q}h=J[J[b>>2]+(mxa(a,k,f)<<2)>>2];if((h|0)==-1){break q}while(1){f=j+(h<<5)|0;if(J[f>>2]==(a|0)&(k|0)==J[f+4>>2]){break p}h=J[f+24>>2];if((h|0)!=-1){continue}break}}f=J[b+12>>2];r:{if((l|0)!=(f|0)){J[b+12>>2]=f+32;break r}f=J[b+20>>2];if((f|0)==-1){break o}f=j+(f<<5)|0;J[b+20>>2]=J[f+24>>2]}J[f>>2]=a;J[f+4>>2]=k;h=J[d+4>>2];J[f+8>>2]=J[d>>2];J[f+12>>2]=h;h=J[d+12>>2];J[f+16>>2]=J[d+8>>2];J[f+20>>2]=h;J[f+24>>2]=-1;j=J[b+8>>2];a=J[b>>2]+(mxa(a,k,J[b+4>>2])<<2)|0;h=J[a>>2];if((h|0)==-1){break n}while(1){a=j+(h<<5)|0;h=J[a+24>>2];if((h|0)!=-1){continue}break}J[a+24>>2]=f-j>>5;break m}Z(144851,55629,229,9606);B()}a=J[d+4>>2];J[f+8>>2]=J[d>>2];J[f+12>>2]=a;a=J[d+12>>2];J[f+16>>2]=J[d+8>>2];J[f+20>>2]=a;break l}Z(152203,55629,537,2838);B()}J[a>>2]=f-j>>5}J[b+24>>2]=J[b+24>>2]+1}Ui=d+16|0;c=c+1|0;b=J[e>>2];if(c>>>0>2]-b>>2>>>0){continue}break}}if(H[g+20|0]&1){break e}a=J[g+8>>2];if(!a){break e}cj(a)}Uj(J[g+28>>2])}Ui=g+32|0;return i}Z(151729,53895,501,2284);B()}Z(145396,53895,487,84789);B()}Z(12664,55140,63,84789);B()}Z(112520,53895,557,53220);B()}function Tfa(a,b,c,d,e,f,g){a=a|0;b=b|0;c=c|0;d=d|0;e=e|0;f=f|0;g=g|0;var h=0,i=0,j=0,k=0,l=0,m=0,n=0,o=0,p=0,q=0,r=0,s=0,t=0,u=0,v=0,w=0,x=0,y=0,z=0,A=0,C=0,D=0,E=0,F=0,G=0,I=0,L=0,M=0,N=0,O=0,Q=0,R=0,S=0;l=Ui-80|0;Ui=l;J[l+56>>2]=0;a:{if(f){q=J[g+8>>2];J[q+452>>2]=0;H[g+16|0]=1;h=J[b+8>>2];C=iv(a,h);p=Tp(a,h);u=hv(a,h);k=ev(a,h,l+60|0);b:{c:{d:{switch(J[l+60>>2]-1|0){case 0:break c;case 1:break d;default:break b}}k=J[k+80>>2];if(k){break c}break a}x=J[k>>2];y=J[k+4>>2]}i=mD(a,h);if(i){m=J[i+4>>2]}n=by(a,h);D=J[e>>2];e:{if(!n){break e}if(K[n+52|0]){i=l+60|0;J[i>>2]=0;J[i+4>>2]=0;J[i+16>>2]=0;J[i+8>>2]=0;J[i+12>>2]=0;yr(n,i);r=mn(i);bO(a,h,r);break e}r=wO(a,h)}i=(p|0)==6;f:{g:{switch(p-1|0){case 0:h=Fo(a,h);if(h){j=J[h>>2];break f}j=0;if(!m){break f}j=J[m+16>>2];break f;case 4:z=J[J[b+12>>2]+104>>2];break;default:break g}}h=Fo(a,h);j=J[(h?h:g+4|0)>>2]}E=i?6:p;v=i?6:0;I=g+4|0;k=0;h=0;while(1){s=r;t=m;L=x;M=y;A=u;N=p;O=C;G=(k<<4)+b|0;o=J[G+8>>2];C=iv(a,o);p=Tp(a,o);u=hv(a,o);m=ev(a,o,l+60|0);x=0;y=0;h:{i:{j:{switch(J[l+60>>2]-1|0){case 0:break i;case 1:break j;default:break h}}m=J[m+80>>2];if(m){break i}break a}x=J[m>>2];y=J[m+4>>2]}r=0;m=0;i=mD(a,o);if(i){m=J[i+4>>2]}i=h;h=j;Q=z;R=D;w=n;S=E;F=v;D=J[(k<<2)+e>>2];n=by(a,o);k:{if(!n){break k}if(K[n+52|0]){j=l+60|0;J[j>>2]=0;J[j+4>>2]=0;J[j+16>>2]=0;J[j+8>>2]=0;J[j+12>>2]=0;yr(n,j);r=mn(j);bO(a,o,r);break k}r=wO(a,o)}v=(p|0)==6;z=0;l:{m:{switch(p-1|0){case 0:j=Fo(a,o);if(j){j=J[j>>2];break l}j=0;if(!m){break l}j=J[m+16>>2];break l;case 4:z=J[J[G+12>>2]+104>>2];break;default:break m}}j=Fo(a,o);j=J[(j?j:I)>>2]}E=v?6:p;v=v?6:0;n:{if(!k){h=i;break n}if(!((E|0)!=(S|0)|(v|0)!=(F|0)|(C|0)!=(O|0)|((x|0)!=(L|0)|(y|0)!=(M|0))|(h|0)!=(j|0)|(m|0)!=(t|0)|(D|0)!=(R|0)|(z|0)!=(Q|0)|(s|0)!=(r|0))){h=i;break n}s=k-i|0;h=k;o:{p:{switch(N|0){case 1:h=i<<2;TP(a,(i<<4)+b|0,(i<<6)+c|0,h+d|0,e+h|0,w,s,g);break o;case 0:h=i<<2;XP(a,(i<<4)+b|0,(i<<6)+c|0,h+d|0,e+h|0,w,s,g);break o;case 2:h=i<<2;UP(a,(i<<4)+b|0,(i<<6)+c|0,h+d|0,e+h|0,w,s,g);break o;case 5:h=i<<2;VP(a,(i<<4)+b|0,(i<<6)+c|0,h+d|0,e+h|0,w,s,g);break o;case 6:break p;default:break n}}q:{r:{t=J[q+468>>2];h=J[t+20>>2];s:{if(!h){break s}h=J[J[t+16>>2]+((A>>>0)%(h>>>0)<<2)>>2];if((h|0)==-1){break s}t=J[t+24>>2];while(1){h=t+P(h,12)|0;if(J[h>>2]==(A|0)){break r}h=J[h+8>>2];if((h|0)!=-1){continue}break}}h=0;if(K[301280]){break q}H[301280]=1;J[l+32>>2]=A;dj(4,88458,9017,l+32|0);break q}h=J[h+4>>2]}F=h;h=i<<2;WP(a,A,F,(i<<4)+b|0,(i<<6)+c|0,h+d|0,e+h|0,w,s,g)}h=k}k=k+1|0;if((k|0)!=(f|0)){continue}break}t:{if((f|0)==(h|0)){break t}f=f-h|0;u:{switch(p|0){case 1:j=a;a=h<<2;TP(j,(h<<4)+b|0,(h<<6)+c|0,a+d|0,a+e|0,n,f,g);break t;case 0:j=a;a=h<<2;XP(j,(h<<4)+b|0,(h<<6)+c|0,a+d|0,a+e|0,n,f,g);break t;case 2:j=a;a=h<<2;UP(j,(h<<4)+b|0,(h<<6)+c|0,a+d|0,a+e|0,n,f,g);break t;case 5:j=a;a=h<<2;VP(j,(h<<4)+b|0,(h<<6)+c|0,a+d|0,a+e|0,n,f,g);break t;case 6:break u;default:break t}}v:{w:{i=J[q+468>>2];k=J[i+20>>2];x:{if(!k){break x}j=J[J[i+16>>2]+((u>>>0)%(k>>>0)<<2)>>2];if((j|0)==-1){break x}k=J[i+24>>2];while(1){i=k+P(j,12)|0;if(J[i>>2]==(u|0)){break w}j=J[i+8>>2];if((j|0)!=-1){continue}break}}j=0;if(K[301280]){break v}H[301280]=1;J[l+16>>2]=u;dj(4,88458,9017,l+16|0);break v}j=J[i+4>>2]}i=a;a=h<<2;WP(i,u,j,(h<<4)+b|0,(h<<6)+c|0,a+d|0,a+e|0,n,f,g)}a=J[q+68>>2];Zi[J[79393]](J[q+52>>2],J[q+72>>2]-a|0,a,0);a=(J[q+72>>2]-J[q+68>>2]|0)/40|0;J[75256]=a+J[75256];J[l+48>>2]=a;J[l+52>>2]=0;J[l+8>>2]=a;J[l+12>>2]=0}Ui=l+80|0;return}Z(63544,40837,1118,63496);B()}function Sja(a,b){a=a|0;b=b|0;var c=0,d=0,e=0,f=0,g=0,h=0,i=0,j=0,k=0,l=0,m=0,n=0,o=0,p=0,q=0,r=0,s=0;e=Ui-80|0;Ui=e;h=nj(84);c=h;J[c+32>>2]=0;J[c+36>>2]=0;J[c>>2]=0;J[c+4>>2]=0;J[c+40>>2]=0;J[c+44>>2]=0;J[c+24>>2]=0;J[c+28>>2]=0;J[c+16>>2]=0;J[c+20>>2]=0;J[c+8>>2]=0;J[c+12>>2]=0;J[c+36>>2]=-1;J[c+48>>2]=J[a+4>>2];i=bj(35504);f=J[a+24>>2];d=Yi;c=J[J[a+16>>2]+(mxa(i,d,J[a+20>>2])<<2)>>2];g=f+(c<<4)|0;if(J[g>>2]!=(i|0)|J[g+4>>2]!=(d|0)){while(1){c=J[(f+(c<<4)|0)+12>>2];g=f+(c<<4)|0;if((i|0)!=J[g>>2]|(d|0)!=J[g+4>>2]){continue}break}}J[h+52>>2]=J[(f+(c<<4)|0)+8>>2];i=bj(82235);f=J[a+24>>2];d=Yi;c=J[J[a+16>>2]+(mxa(i,d,J[a+20>>2])<<2)>>2];g=f+(c<<4)|0;if(J[g>>2]!=(i|0)|J[g+4>>2]!=(d|0)){while(1){c=J[(f+(c<<4)|0)+12>>2];g=f+(c<<4)|0;if((i|0)!=J[g>>2]|(d|0)!=J[g+4>>2]){continue}break}}J[h+56>>2]=J[(f+(c<<4)|0)+8>>2];i=bj(80655);f=J[a+24>>2];d=Yi;c=J[J[a+16>>2]+(mxa(i,d,J[a+20>>2])<<2)>>2];g=f+(c<<4)|0;if(J[g>>2]!=(i|0)|J[g+4>>2]!=(d|0)){while(1){c=J[(f+(c<<4)|0)+12>>2];g=f+(c<<4)|0;if((i|0)!=J[g>>2]|(d|0)!=J[g+4>>2]){continue}break}}J[h+60>>2]=J[(f+(c<<4)|0)+8>>2];J[h+64>>2]=ak(J[a>>2],10980,64);J[h+68>>2]=ak(J[a>>2],10828,64);J[h+72>>2]=ak(J[a>>2],11634,1024);J[h+80>>2]=ak(J[a>>2],11351,1024);J[h+76>>2]=ak(J[a>>2],11311,1024);c=ak(J[a>>2],11672,128);if(!(H[h+12|0]&1)){lj(c,4,h,h+8|0,h+4|0);sO(J[h+60>>2]);I[b+104>>1]=300;J[b+16>>2]=h;J[b+100>>2]=J[b+100>>2]&-65537|65536;J[b+100>>2]=J[b+100>>2]&-131073;J[b+20>>2]=240;J[b+24>>2]=241;J[b+28>>2]=242;J[b+32>>2]=243;J[b+36>>2]=244;J[b+40>>2]=245;J[b+44>>2]=246;J[b+52>>2]=247;J[b+60>>2]=248;J[b+68>>2]=249;J[b+72>>2]=250;J[b+76>>2]=251;J[b+84>>2]=252;J[b+88>>2]=253;J[b+92>>2]=254;J[b+96>>2]=255;J[b+48>>2]=256;J[e+60>>2]=0;J[e+64>>2]=0;J[e+68>>2]=0;J[e+72>>2]=0;J[e+52>>2]=0;J[e+56>>2]=0;J[e+44>>2]=0;J[e+48>>2]=0;J[e+64>>2]=-1;J[e+24>>2]=J[a>>2];J[e+32>>2]=J[h+52>>2];J[e+28>>2]=J[h+48>>2];J[e+36>>2]=J[h+56>>2];J[e+40>>2]=J[h+60>>2];Rp(e+44|0,7,J[a+32>>2]-J[a+24>>2]>>4);b=J[a+20>>2];if(b){o=J[e+60>>2];g=J[e+52>>2];q=o-g>>4;r=J[a+16>>2];i=J[e+56>>2];while(1){d=J[(m<<2)+r>>2];if((d|0)!=-1){s=J[a+24>>2];j=J[e+68>>2];p=J[e+44>>2];b=i;while(1){a:{b:{c:{if((j|0)!=(q|0)){k=(d<<4)+s|0;c=k;f=J[c>>2];l=J[c+4>>2];n=J[e+48>>2];d:{if(!n){break d}d=J[(mxa(f,l,n)<<2)+p>>2];if((d|0)==-1){break d}while(1){c=(d<<4)+g|0;if((f|0)==J[c>>2]&(l|0)==J[c+4>>2]){break c}d=J[c+12>>2];if((d|0)!=-1){continue}break}}e:{if((b|0)!=(o|0)){i=b+16|0;J[e+56>>2]=i;c=i;break e}c=J[e+64>>2];if((c|0)==-1){break b}d=(c<<4)+g|0;J[e+64>>2]=J[d+12>>2];c=b;b=d}J[b>>2]=f;J[b+4>>2]=l;d=J[k+8>>2];J[b+12>>2]=-1;J[b+8>>2]=d;f=(mxa(f,l,n)<<2)+p|0;d=J[f>>2];f:{if((d|0)==-1){J[f>>2]=b-g>>4;j=J[e+68>>2];break f}while(1){f=(d<<4)+g|0;d=J[f+12>>2];if((d|0)!=-1){continue}break}J[f+12>>2]=b-g>>4}j=j+1|0;J[e+68>>2]=j;b=c;break a}Z(144851,55629,229,9606);B()}J[c+8>>2]=J[k+8>>2];break a}Z(152203,55629,537,2838);B()}d=J[k+12>>2];if((d|0)!=-1){continue}break}b=J[a+20>>2]}m=m+1|0;if(m>>>0>>0){continue}break}}g:{if(K[301312]){break g}h:{d=J[75286];if(d){b=h+16|0;while(1){a=nj(32);J[e+76>>2]=a;J[a>>2]=d;J[d+12>>2]=a;a=Zi[J[d+4>>2]](e+24|0,a)|0;if(a){break h}a=J[h+40>>2];if((a|0)==((J[h+32>>2]-J[h+24>>2]|0)/12|0)){a=a+4|0;c=(a>>>0)/3|0;JN(b,c>>>0<=1?1:c,a)}av(b,J[d+20>>2],e+76|0);d=J[d>>2];if(d){continue}break}}H[301312]=1;break g}J[e+16>>2]=J[d+16>>2];dj(4,88458,29443,e+16|0);J[e>>2]=a;dj(4,88458,79293,e)}i:{if(H[e+72|0]&1){break i}a=J[e+52>>2];if(a){cj(a)}a=J[e+44>>2];if(!a){break i}cj(a)}Ui=e+80|0;return 0}Z(151729,53895,501,2284);B()}function MU(a,b,c,d){var e=0,f=0,g=Q(0),h=0,i=0,j=Q(0),k=Q(0),l=Q(0),m=Q(0),n=0,o=Q(0),p=Q(0),q=0,r=0,s=0,t=Q(0),u=Q(0),v=Q(0),w=Q(0),x=Q(0),y=0,z=Q(0),A=Q(0),C=Q(0),D=Q(0),E=0,F=0;o=N[a+48>>2];l=Q(Q(1)-d);p=Q(Q(l*N[a+68>>2])+Q(d*N[a+72>>2]));t=Rj(p);m=N[a+44>>2];p=Hj(p);C=Q(Q(Q(l*N[a+56>>2])+Q(d*N[a+64>>2]))-Q(Q(p*m)+Q(o*t)));x=Q(Q(Q(l*N[a+52>>2])+Q(d*N[a+60>>2]))-Q(Q(t*m)-Q(p*o)));j=N[a+12>>2];m=Q(Q(l*N[a+32>>2])+Q(d*N[a+36>>2]));o=Rj(m);v=N[a+8>>2];m=Hj(m);D=Q(Q(Q(l*N[a+20>>2])+Q(d*N[a+28>>2]))-Q(Q(m*v)+Q(j*o)));v=Q(Q(Q(l*N[a+16>>2])+Q(d*N[a+24>>2]))-Q(Q(o*v)-Q(m*j)));a:{b:{switch(J[a+80>>2]){case 0:l=N[a+96>>2];j=N[a+92>>2];q=J[a>>2];n=J[q+16>>2];r=J[q+20>>2];c:{if((r|0)<2){break c}k=Q(Q(o*j)+Q(m*l));g=Q(Q(o*l)-Q(m*j));d=Q(Q(N[n>>2]*k)+Q(g*N[n+4>>2]));e=1;h=r-1|0;E=h&1;d:{if((r|0)==2){h=0;break d}F=h&-2;h=0;r=0;while(1){s=(e<<3)+n|0;u=Q(Q(N[s>>2]*k)+Q(g*N[s+4>>2]));s=u>d;y=e+1|0;i=(y<<3)+n|0;w=Q(Q(N[i>>2]*k)+Q(g*N[i+4>>2]));d=s?u:d;i=w>d;d=i?w:d;h=i?y:s?e:h;e=e+2|0;r=r+2|0;if((F|0)!=(r|0)){continue}break}}if(!E){break c}i=e;e=(e<<3)+n|0;h=Q(Q(N[e>>2]*k)+Q(g*N[e+4>>2]))>d?i:h}J[b>>2]=h;r=J[a+4>>2];e=J[r+16>>2];h=J[r+20>>2];e:{if((h|0)<2){break e}k=Q(Q(t*Q(-j))-Q(p*l));g=Q(Q(p*j)-Q(t*l));d=Q(Q(N[e>>2]*k)+Q(g*N[e+4>>2]));a=1;f=h-1|0;E=f&1;f:{if((h|0)==2){f=0;break f}F=f&-2;f=0;h=0;while(1){s=e+(a<<3)|0;u=Q(Q(N[s>>2]*k)+Q(g*N[s+4>>2]));s=u>d;y=a+1|0;i=e+(y<<3)|0;w=Q(Q(N[i>>2]*k)+Q(g*N[i+4>>2]));d=s?u:d;i=w>d;d=i?w:d;f=i?y:s?a:f;a=a+2|0;h=h+2|0;if((F|0)!=(h|0)){continue}break}}if(!E){break e}i=a;a=e+(a<<3)|0;f=Q(Q(N[a>>2]*k)+Q(g*N[a+4>>2]))>d?i:f}J[c>>2]=f;a=J[b>>2];if((a|0)<0|(a|0)>=J[q+20>>2]|((f|0)<0|J[r+20>>2]<=(f|0))){break a}g=x;b=e+(f<<3)|0;d=N[b>>2];x=N[b+4>>2];u=v;a=(a<<3)+n|0;v=N[a>>2];k=N[a+4>>2];return Q(Q(Q(Q(g+Q(Q(t*d)-Q(p*x)))-Q(u+Q(Q(o*v)-Q(m*k))))*j)+Q(l*Q(Q(C+Q(Q(p*d)+Q(t*x)))-Q(D+Q(Q(m*v)+Q(o*k))))));case 1:u=N[a+84>>2];w=N[a+88>>2];d=N[a+92>>2];j=N[a+96>>2];J[b>>2]=-1;l=Q(Q(m*d)+Q(o*j));j=Q(Q(o*d)-Q(m*j));h=J[a+4>>2];b=J[h+16>>2];f=J[h+20>>2];g:{if((f|0)<2){break g}k=Q(Q(t*Q(-j))-Q(p*l));g=Q(Q(p*j)-Q(t*l));d=Q(Q(N[b>>2]*k)+Q(g*N[b+4>>2]));a=1;e=f-1|0;r=e&1;h:{if((f|0)==2){e=0;break h}s=e&-2;e=0;f=0;while(1){n=b+(a<<3)|0;z=Q(Q(N[n>>2]*k)+Q(g*N[n+4>>2]));n=z>d;i=a+1|0;q=b+(i<<3)|0;A=Q(Q(N[q>>2]*k)+Q(g*N[q+4>>2]));d=n?z:d;q=A>d;d=q?A:d;e=q?i:n?a:e;a=a+2|0;f=f+2|0;if((s|0)!=(f|0)){continue}break}}if(!r){break g}i=a;a=b+(a<<3)|0;e=Q(Q(N[a>>2]*k)+Q(g*N[a+4>>2]))>d?i:e}J[c>>2]=e;if((e|0)<0|J[h+20>>2]<=(e|0)){break a}g=x;a=b+(e<<3)|0;d=N[a>>2];x=N[a+4>>2];return Q(Q(Q(Q(g+Q(Q(t*d)-Q(p*x)))-Q(v+Q(Q(o*u)-Q(m*w))))*j)+Q(l*Q(Q(C+Q(Q(p*d)+Q(t*x)))-Q(D+Q(Q(m*u)+Q(o*w))))));case 2:u=N[a+84>>2];w=N[a+88>>2];d=N[a+92>>2];j=N[a+96>>2];J[c>>2]=-1;l=Q(Q(p*d)+Q(t*j));j=Q(Q(t*d)-Q(p*j));h=J[a>>2];c=J[h+16>>2];f=J[h+20>>2];i:{if((f|0)<2){break i}k=Q(Q(o*Q(-j))-Q(m*l));g=Q(Q(m*j)-Q(o*l));d=Q(Q(N[c>>2]*k)+Q(g*N[c+4>>2]));a=1;e=f-1|0;r=e&1;j:{if((f|0)==2){e=0;break j}s=e&-2;e=0;f=0;while(1){n=c+(a<<3)|0;z=Q(Q(N[n>>2]*k)+Q(g*N[n+4>>2]));n=z>d;i=a+1|0;q=c+(i<<3)|0;A=Q(Q(N[q>>2]*k)+Q(g*N[q+4>>2]));d=n?z:d;q=A>d;d=q?A:d;e=q?i:n?a:e;a=a+2|0;f=f+2|0;if((s|0)!=(f|0)){continue}break}}if(!r){break i}i=a;a=c+(a<<3)|0;e=Q(Q(N[a>>2]*k)+Q(g*N[a+4>>2]))>d?i:e}J[b>>2]=e;if((e|0)<0|J[h+20>>2]<=(e|0)){break a}g=v;a=c+(e<<3)|0;d=N[a>>2];v=N[a+4>>2];return Q(Q(Q(Q(g+Q(Q(o*d)-Q(m*v)))-Q(x+Q(Q(t*u)-Q(p*w))))*j)+Q(l*Q(Q(D+Q(Q(m*d)+Q(o*v)))-Q(C+Q(Q(p*u)+Q(t*w))))));default:break b}}Z(62644,39003,183,46401);B()}Z(11412,55795,103,4803);B()}function mU(a,b){var c=0,d=0,e=0,f=0,g=0,h=0,i=0,j=0,k=Q(0),l=Q(0),m=Q(0),n=Q(0),o=Q(0),p=Q(0),q=Q(0),r=Q(0),s=Q(0),t=Q(0),u=Q(0),v=Q(0),w=Q(0),x=Q(0),y=Q(0),z=Q(0),A=Q(0),B=Q(0),C=Q(0),D=Q(0),E=Q(0),F=Q(0),G=Q(0),H=Q(0),I=Q(0);g=Ui-48|0;Ui=g;h=1;a:{b:{switch((b-a|0)/160|0){case 2:if(M[b-16>>2]>=M[a+144>>2]){break a}rk(a,b-160|0);break a;case 3:d=b-160|0;e=a+160|0;b=b-16|0;f=J[b>>2];c=J[a+304>>2];if(c>>>0>=M[a+144>>2]){if(c>>>0<=f>>>0){break a}rk(e,d);if(M[a+304>>2]>=M[a+144>>2]){break a}rk(a,e);break a}if(c>>>0>f>>>0){rk(a,d);break a}rk(a,e);if(M[b>>2]>=M[a+304>>2]){break a}rk(e,d);break a;case 4:Zv(a,a+160|0,a+320|0,b-160|0);break a;case 5:d=a+160|0;f=a+320|0;c=a+480|0;Zv(a,d,f,c);if(M[b-16>>2]>=M[a+624>>2]){break a}rk(c,b-160|0);if(M[a+624>>2]>=M[a+464>>2]){break a}rk(f,c);if(M[a+464>>2]>=M[a+304>>2]){break a}rk(d,f);if(M[a+304>>2]>=M[a+144>>2]){break a}rk(a,d);break a;case 0:case 1:break a;default:break b}}e=a+160|0;f=a+320|0;d=J[a+464>>2];c=J[a+304>>2];c:{if(c>>>0>=M[a+144>>2]){if(c>>>0<=d>>>0){break c}rk(e,f);if(M[a+304>>2]>=M[a+144>>2]){break c}rk(a,e);break c}if(c>>>0>d>>>0){rk(a,f);break c}rk(a,e);if(M[a+464>>2]>=M[a+304>>2]){break c}rk(e,f)}e=a+480|0;if((e|0)==(b|0)){break a}while(1){d:{h=J[e+144>>2];if(h>>>0>=M[f+144>>2]){break d}k=N[e+56>>2];l=N[e+52>>2];m=N[e+48>>2];n=N[e+44>>2];o=N[e+40>>2];p=N[e+36>>2];q=N[e+32>>2];r=N[e+28>>2];s=N[e+24>>2];t=N[e+20>>2];u=N[e+16>>2];v=N[e+8>>2];w=N[e+4>>2];x=N[e>>2];J[g+44>>2]=J[e+88>>2];c=J[e+84>>2];J[g+36>>2]=J[e+80>>2];J[g+40>>2]=c;c=J[e+76>>2];J[g+28>>2]=J[e+72>>2];J[g+32>>2]=c;c=J[e+68>>2];J[g+20>>2]=J[e+64>>2];J[g+24>>2]=c;y=N[e+136>>2];z=N[e+132>>2];A=N[e+128>>2];B=N[e+124>>2];C=N[e+120>>2];D=N[e+116>>2];E=N[e+112>>2];F=N[e+108>>2];G=N[e+104>>2];H=N[e+100>>2];I=N[e+96>>2];J[g+8>>2]=J[e+156>>2];c=J[e+152>>2];J[g>>2]=J[e+148>>2];J[g+4>>2]=c;c=e;while(1){e:{d=f;N[c>>2]=N[d>>2];N[c+4>>2]=N[d+4>>2];N[c+8>>2]=N[d+8>>2];N[c+16>>2]=N[d+16>>2];N[c+20>>2]=N[d+20>>2];N[c+24>>2]=N[d+24>>2];N[c+28>>2]=N[d+28>>2];N[c+32>>2]=N[d+32>>2];N[c+36>>2]=N[d+36>>2];N[c+40>>2]=N[d+40>>2];N[c+44>>2]=N[d+44>>2];N[c+48>>2]=N[d+48>>2];N[c+52>>2]=N[d+52>>2];N[c+56>>2]=N[d+56>>2];f=J[d+68>>2];J[c+64>>2]=J[d+64>>2];J[c+68>>2]=f;f=J[d+76>>2];J[c+72>>2]=J[d+72>>2];J[c+76>>2]=f;f=J[d+84>>2];J[c+80>>2]=J[d+80>>2];J[c+84>>2]=f;J[c+88>>2]=J[d+88>>2];N[c+96>>2]=N[d+96>>2];N[c+100>>2]=N[d+100>>2];N[c+104>>2]=N[d+104>>2];N[c+108>>2]=N[d+108>>2];N[c+112>>2]=N[d+112>>2];N[c+116>>2]=N[d+116>>2];N[c+120>>2]=N[d+120>>2];N[c+124>>2]=N[d+124>>2];N[c+128>>2]=N[d+128>>2];N[c+132>>2]=N[d+132>>2];N[c+136>>2]=N[d+136>>2];f=J[d+148>>2];J[c+144>>2]=J[d+144>>2];J[c+148>>2]=f;f=J[d+156>>2];J[c+152>>2]=J[d+152>>2];J[c+156>>2]=f;if((a|0)==(d|0)){c=a;break e}f=d-160|0;c=d;if(h>>>0>2]){continue}}break}N[c+56>>2]=k;N[c+52>>2]=l;N[c+48>>2]=m;N[c+44>>2]=n;N[c+40>>2]=o;N[c+36>>2]=p;N[c+32>>2]=q;N[c+28>>2]=r;N[c+24>>2]=s;N[c+20>>2]=t;N[c+16>>2]=u;N[c+8>>2]=v;N[c+4>>2]=w;N[c>>2]=x;i=d- -64|0;J[i+24>>2]=J[g+44>>2];f=J[g+40>>2];J[i+16>>2]=J[g+36>>2];J[i+20>>2]=f;f=J[g+32>>2];J[i+8>>2]=J[g+28>>2];J[i+12>>2]=f;f=J[g+24>>2];J[i>>2]=J[g+20>>2];J[i+4>>2]=f;N[c+136>>2]=y;N[c+132>>2]=z;N[c+128>>2]=A;N[c+124>>2]=B;N[c+120>>2]=C;N[c+116>>2]=D;N[c+112>>2]=E;N[c+108>>2]=F;N[c+104>>2]=G;N[c+100>>2]=H;N[c+96>>2]=I;J[d+144>>2]=h;J[c+156>>2]=J[g+8>>2];f=J[g+4>>2];J[c+148>>2]=J[g>>2];J[c+152>>2]=f;j=j+1|0;if((j|0)!=8){break d}h=(e+160|0)==(b|0);break a}f=e;c=e+160|0;e=c;if((b|0)!=(c|0)){continue}break}h=1}Ui=g+48|0;return h}function yp(a,b,c,d){var e=0,f=0,g=0,h=0,i=0,j=0,k=0,l=0;f=Ui-32|0;Ui=f;e=J[d>>2];h=J[e+12>>2];a:{if(!h){break a}k=J[b>>2];i=J[e+8>>2];e=0;b:{while(1){if(!jj(k,J[P(e,1552)+i>>2])){break b}e=e+1|0;if((h|0)!=(e|0)){continue}break}e=-1}g=J[a>>2];c:{while(1){if(!jj(g,J[P(j,1552)+i>>2])){break c}j=j+1|0;if((h|0)!=(j|0)){continue}break}j=-1}l=J[c>>2];g=0;d:{e:{if((e|0)<(j|0)){f:{while(1){if(!jj(l,J[P(g,1552)+i>>2])){break f}g=g+1|0;if((h|0)!=(g|0)){continue}break}g=-1}e=0;g:{while(1){if(!jj(k,J[P(e,1552)+i>>2])){break g}e=e+1|0;if((h|0)!=(e|0)){continue}break}e=-1}if((e|0)<=(g|0)){break e}b=J[a+20>>2];J[f+24>>2]=J[a+16>>2];J[f+28>>2]=b;b=J[a+12>>2];J[f+16>>2]=J[a+8>>2];J[f+20>>2]=b;b=J[a+4>>2];J[f+8>>2]=J[a>>2];J[f+12>>2]=b;b=J[c+20>>2];J[a+16>>2]=J[c+16>>2];J[a+20>>2]=b;b=J[c+12>>2];J[a+8>>2]=J[c+8>>2];J[a+12>>2]=b;b=J[c+4>>2];J[a>>2]=J[c>>2];J[a+4>>2]=b;a=J[f+28>>2];J[c+16>>2]=J[f+24>>2];J[c+20>>2]=a;a=J[f+20>>2];J[c+8>>2]=J[f+16>>2];J[c+12>>2]=a;a=J[f+12>>2];J[c>>2]=J[f+8>>2];J[c+4>>2]=a;break a}h:{while(1){if(!jj(l,J[P(g,1552)+i>>2])){break h}g=g+1|0;if((h|0)!=(g|0)){continue}break}g=-1}e=0;i:{while(1){if(!jj(k,J[P(e,1552)+i>>2])){break i}e=e+1|0;if((h|0)!=(e|0)){continue}break}e=-1}if((e|0)<=(g|0)){break a}e=J[b+20>>2];J[f+24>>2]=J[b+16>>2];J[f+28>>2]=e;e=J[b+12>>2];J[f+16>>2]=J[b+8>>2];J[f+20>>2]=e;e=J[b+4>>2];J[f+8>>2]=J[b>>2];J[f+12>>2]=e;e=J[c+20>>2];J[b+16>>2]=J[c+16>>2];J[b+20>>2]=e;e=J[c+12>>2];J[b+8>>2]=J[c+8>>2];J[b+12>>2]=e;e=J[c+4>>2];J[b>>2]=J[c>>2];J[b+4>>2]=e;e=J[f+28>>2];J[c+16>>2]=J[f+24>>2];J[c+20>>2]=e;e=J[f+20>>2];J[c+8>>2]=J[f+16>>2];J[c+12>>2]=e;e=J[f+12>>2];J[c>>2]=J[f+8>>2];J[c+4>>2]=e;d=J[d>>2];c=J[d+12>>2];if(!c){break a}e=J[b>>2];g=J[d+8>>2];d=0;j:{while(1){if(!jj(e,J[g+P(d,1552)>>2])){break j}d=d+1|0;if((c|0)!=(d|0)){continue}break}d=-1}h=J[a>>2];e=0;k:{while(1){if(!jj(h,J[g+P(e,1552)>>2])){break k}e=e+1|0;if((c|0)!=(e|0)){continue}break}e=-1}if((d|0)>=(e|0)){break a}c=J[a+20>>2];J[f+24>>2]=J[a+16>>2];J[f+28>>2]=c;c=J[a+12>>2];J[f+16>>2]=J[a+8>>2];J[f+20>>2]=c;c=J[a+4>>2];J[f+8>>2]=J[a>>2];J[f+12>>2]=c;c=J[b+20>>2];J[a+16>>2]=J[b+16>>2];J[a+20>>2]=c;c=J[b+12>>2];J[a+8>>2]=J[b+8>>2];J[a+12>>2]=c;c=J[b+4>>2];J[a>>2]=J[b>>2];J[a+4>>2]=c;a=J[f+28>>2];J[b+16>>2]=J[f+24>>2];J[b+20>>2]=a;a=J[f+20>>2];J[b+8>>2]=J[f+16>>2];J[b+12>>2]=a;a=J[f+12>>2];J[b>>2]=J[f+8>>2];J[b+4>>2]=a;break d}e=J[a+20>>2];J[f+24>>2]=J[a+16>>2];J[f+28>>2]=e;e=J[a+12>>2];J[f+16>>2]=J[a+8>>2];J[f+20>>2]=e;e=J[a+4>>2];J[f+8>>2]=J[a>>2];J[f+12>>2]=e;e=J[b+20>>2];J[a+16>>2]=J[b+16>>2];J[a+20>>2]=e;e=J[b+12>>2];J[a+8>>2]=J[b+8>>2];J[a+12>>2]=e;e=J[b+4>>2];J[a>>2]=J[b>>2];J[a+4>>2]=e;a=J[f+28>>2];J[b+16>>2]=J[f+24>>2];J[b+20>>2]=a;a=J[f+20>>2];J[b+8>>2]=J[f+16>>2];J[b+12>>2]=a;a=J[f+12>>2];J[b>>2]=J[f+8>>2];J[b+4>>2]=a;d=J[d>>2];a=J[d+12>>2];if(!a){break a}e=J[c>>2];g=J[d+8>>2];d=0;l:{while(1){if(!jj(e,J[g+P(d,1552)>>2])){break l}d=d+1|0;if((a|0)!=(d|0)){continue}break}d=-1}h=J[b>>2];e=0;m:{while(1){if(!jj(h,J[g+P(e,1552)>>2])){break m}e=e+1|0;if((a|0)!=(e|0)){continue}break}e=-1}if((d|0)>=(e|0)){break a}a=J[b+20>>2];J[f+24>>2]=J[b+16>>2];J[f+28>>2]=a;a=J[b+12>>2];J[f+16>>2]=J[b+8>>2];J[f+20>>2]=a;a=J[b+4>>2];J[f+8>>2]=J[b>>2];J[f+12>>2]=a;a=J[c+20>>2];J[b+16>>2]=J[c+16>>2];J[b+20>>2]=a;a=J[c+12>>2];J[b+8>>2]=J[c+8>>2];J[b+12>>2]=a;a=J[c+4>>2];J[b>>2]=J[c>>2];J[b+4>>2]=a;a=J[f+28>>2];J[c+16>>2]=J[f+24>>2];J[c+20>>2]=a;a=J[f+20>>2];J[c+8>>2]=J[f+16>>2];J[c+12>>2]=a;a=J[f+12>>2];J[c>>2]=J[f+8>>2];J[c+4>>2]=a}}Ui=f+32|0}function wA(a,b,c,d){var e=0,f=0,g=0,h=0,i=0,j=0,k=0,l=0,m=0,n=0,o=0,p=0,q=0,r=0,s=0,t=0;f=Ui-80|0;Ui=f;h=-12;g=J[d+4>>2];a:{if(!g){break a}i=J[d+8>>2];k=i-4|0;e=g;while(1){if(!J[k+(e<<2)>>2]){e=e-1|0;if(e){continue}break a}break}if(!J[d>>2]){break a}h=0;J[f+60>>2]=0;J[f+52>>2]=1;J[f+56>>2]=0;J[f+48>>2]=0;J[f+40>>2]=1;J[f+44>>2]=0;J[f+36>>2]=0;J[f+28>>2]=1;J[f+32>>2]=0;J[f+24>>2]=0;J[f+16>>2]=1;J[f+20>>2]=0;J[f+12>>2]=0;J[f+4>>2]=1;J[f+8>>2]=0;e=J[c+4>>2];b:{if(!e){break b}m=J[c+8>>2]-4|0;while(1){if(J[m+(e<<2)>>2]){h=e;break b}e=e-1|0;if(e){continue}break}}c:{while(1){if(J[k+(g<<2)>>2]){break c}g=g-1|0;if(g){continue}break}g=0}d:{e:{if(!(g|h)|g>>>0>>0){break e}if(g>>>0<=h>>>0){while(1){if(!h){break e}h=h-1|0;e=h<<2;g=J[e+J[c+8>>2]>>2];e=J[e+i>>2];if(g>>>0>e>>>0){break e}if(e>>>0<=g>>>0){continue}break}}if(a){d=J[a+4>>2];f:{if(d){e=J[a+8>>2];d=d<<2;break f}e=Zj(1,4);if(!e){e=-16;break d}d=J[a+8>>2];if(d){Zi[J[66509]](d,0,0)|0;cj(J[a+8>>2])}J[a+8>>2]=e;J[a+4>>2]=1;d=4}ij(e,0,d);J[J[a+8>>2]>>2]=0;J[a>>2]=1}h=0;if(!b){break a}e=sk(b,c);if(e){break d}break a}e=sk(f+52|0,c);if(e){break d}e=sk(f+40|0,d);if(e){break d}J[f+52>>2]=1;J[f+40>>2]=1;e=-16;h=J[c+4>>2]+2|0;if(h>>>0>1e4){break d}g:{if(h){g=Zj(h,4);if(!g){break d}J[f+36>>2]=g;J[f+32>>2]=h;h=h<<2;break g}h=4;g=Zj(1,4);if(!g){break d}J[f+36>>2]=g;J[f+32>>2]=1}ij(g,0,h);o=J[f+36>>2];J[o>>2]=0;J[f+28>>2]=1;e=Aw(f+16|0,2);if(e){break d}e=Aw(f+4|0,3);if(e){break d}h=0;g=f+40|0;e=Xk(g)&31;if((e|0)!=31){h=e^31;e=Vn(f+52|0,h);if(e){break d}e=Vn(g,h);if(e){break d}}i=J[f+56>>2];p=J[f+44>>2];g=i-p|0;k=g<<5;e=Vn(f+40|0,k);if(e){break d}m=p-1|0;g=(g<<2)+o|0;while(1){e=f+52|0;j=f+40|0;if((_j(e,j)|0)>=0){J[g>>2]=J[g>>2]+1;e=wl(e,e,j);if(!e){continue}break d}break}e=yk(f+40|0,k);if(e){break d}e=i-1|0;if(m>>>0>>0){q=p^-1;t=(q<<2)+o|0;while(1){g=-1;k=e;j=J[f+60>>2];n=e<<2;e=J[j+n>>2];r=m<<2;l=J[r+J[f+48>>2]>>2];if(e>>>0>>0){e=lxa(J[(j+(i<<2)|0)-8>>2],e,l);g=Yi;g=!g&(e|0)==-1|g?-1:e}j=i<<2;J[j+t>>2]=g;s=i+q|0;g=(s<<2)+o|0;J[g>>2]=J[g>>2]+1;while(1){J[g>>2]=J[g>>2]-1;e=kl(f+16|0,0);if(e){break d}e=J[f+48>>2];l=J[f+24>>2];J[l>>2]=m?J[(e+(p<<2)|0)-8>>2]:0;J[l+4>>2]=J[e+r>>2];e=J[g>>2];J[f+68>>2]=1;J[f+72>>2]=1;J[f+64>>2]=e;J[f+76>>2]=f- -64;e=f+16|0;e=Ak(e,e,f+68|0);if(e){break d}e=kl(f+4|0,0);if(e){break d}e=J[f+60>>2];i=J[f+12>>2];J[i>>2]=k>>>0>=2?J[(e+j|0)-12>>2]:0;J[i+4>>2]=J[(e+j|0)-8>>2];J[i+8>>2]=J[e+n>>2];i=f+16|0;if((_j(i,f+4|0)|0)>0){continue}break}e=J[g>>2];J[f+68>>2]=1;J[f+72>>2]=1;J[f+64>>2]=e;J[f+76>>2]=f- -64;l=f+40|0;e=Ak(i,l,f+68|0);if(e){break d}n=s<<5;e=Vn(i,n);if(e){break d}j=f+52|0;e=wl(j,j,i);if(e){break d}if((Pj(j,0)|0)<0){e=sk(i,l);if(e){break d}e=Vn(i,n);if(e){break d}e=Ql(j,j,i);if(e){break d}J[g>>2]=J[g>>2]-1}i=k;e=i-1|0;if(m>>>0>>0){continue}break}}if(a){e=sk(a,f+28|0);if(e){break d}J[a>>2]=P(J[d>>2],J[c>>2])}if(!b){e=0;break d}a=f+52|0;e=yk(a,h);if(e){break d}J[f+52>>2]=J[c>>2];e=sk(b,a);if(e){break d}e=0;if(Pj(b,0)){break d}J[b>>2]=1}a=J[f+60>>2];if(a){Zi[J[66509]](a,0,J[f+56>>2]<<2)|0;cj(J[f+60>>2])}J[f+60>>2]=0;J[f+52>>2]=1;J[f+56>>2]=0;a=J[f+48>>2];if(a){Zi[J[66509]](a,0,J[f+44>>2]<<2)|0;cj(J[f+48>>2])}J[f+48>>2]=0;J[f+40>>2]=1;J[f+44>>2]=0;a=J[f+36>>2];if(a){Zi[J[66509]](a,0,J[f+32>>2]<<2)|0;cj(J[f+36>>2])}J[f+36>>2]=0;J[f+28>>2]=1;J[f+32>>2]=0;a=J[f+24>>2];if(a){Zi[J[66509]](a,0,J[f+20>>2]<<2)|0;cj(J[f+24>>2])}J[f+24>>2]=0;J[f+16>>2]=1;J[f+20>>2]=0;a=J[f+12>>2];if(a){Zi[J[66509]](a,0,J[f+8>>2]<<2)|0;cj(a)}h=e}Ui=f+80|0;return h}function DQ(a,b,c,d,e){var f=0,g=0,h=0,i=0,j=0,k=0;a:{b:{c:{switch(J[a+40>>2]){case 0:if(!e){break a}f=J[a+36>>2];h=(b>>>0)/(f>>>0)|0;b=b-P(f,h)|0;i=J[a+32>>2];h=J[a+16>>2]+P(i,h)|0;a=d;d=(d>>>0)/(f>>>0)|0;a=a-P(d,f)|0;g=J[c+16>>2];c=J[c+32>>2];d=g+P(c,d)|0;while(1){H[b+h|0]=K[a+d|0];j=1;a=a+1|0;a=(a|0)!=(f|0)?a:0;d=(a?0:c)+d|0;b=b+1|0;b=(b|0)!=(f|0)?b:0;h=(b?0:i)+h|0;e=e-1|0;if(e){continue}break};break b;case 1:if(!e){break a}f=J[a+36>>2];i=(b>>>0)/(f>>>0)|0;b=b-P(f,i)|0;g=d;d=(d>>>0)/(f>>>0)|0;h=g-P(d,f)|0;j=1;g=i;i=J[a+32>>2];a=J[a+16>>2]+(P(g,i)<<1)|0;g=J[c+16>>2];c=J[c+32>>2];d=g+(P(c,d)<<1)|0;while(1){I[(b<<1)+a>>1]=L[(h<<1)+d>>1];g=d;d=h+1|0;h=(d|0)!=(f|0)?d:0;d=g+((h?0:c)<<1)|0;g=a;a=b+1|0;b=(a|0)!=(f|0)?a:0;a=g+((b?0:i)<<1)|0;e=e-1|0;if(e){continue}break};break b;case 2:if(!e){break a}f=J[a+36>>2];j=(b>>>0)/(f>>>0)|0;b=b-P(f,j)|0;i=d;d=(d>>>0)/(f>>>0)|0;h=i-P(d,f)|0;i=J[a+32>>2];a=J[a+16>>2]+(P(i,j)<<2)|0;g=J[c+16>>2];c=J[c+32>>2];d=g+(P(c,d)<<2)|0;while(1){J[(b<<2)+a>>2]=J[(h<<2)+d>>2];j=1;g=d;d=h+1|0;h=(d|0)!=(f|0)?d:0;d=g+((h?0:c)<<2)|0;g=a;a=b+1|0;b=(a|0)!=(f|0)?a:0;a=g+((b?0:i)<<2)|0;e=e-1|0;if(e){continue}break};break b;case 3:if(!e){break a}f=J[a+36>>2];j=(b>>>0)/(f>>>0)|0;b=b-P(f,j)|0;i=d;d=(d>>>0)/(f>>>0)|0;h=i-P(d,f)|0;i=J[a+32>>2];a=J[a+16>>2]+(P(i,j)<<3)|0;g=J[c+16>>2];c=J[c+32>>2];d=g+(P(c,d)<<3)|0;while(1){g=(h<<3)+d|0;k=J[g+4>>2];j=(b<<3)+a|0;J[j>>2]=J[g>>2];J[j+4>>2]=k;j=1;g=d;d=h+1|0;h=(d|0)!=(f|0)?d:0;d=g+((h?0:c)<<3)|0;g=a;a=b+1|0;b=(a|0)!=(f|0)?a:0;a=g+((b?0:i)<<3)|0;e=e-1|0;if(e){continue}break};break b;case 4:if(!e){break a}f=J[a+36>>2];h=(b>>>0)/(f>>>0)|0;b=b-P(f,h)|0;i=J[a+32>>2];h=J[a+16>>2]+P(i,h)|0;a=d;d=(d>>>0)/(f>>>0)|0;a=a-P(d,f)|0;g=J[c+16>>2];c=J[c+32>>2];d=g+P(c,d)|0;while(1){H[b+h|0]=K[a+d|0];j=1;a=a+1|0;a=(a|0)!=(f|0)?a:0;d=(a?0:c)+d|0;b=b+1|0;b=(b|0)!=(f|0)?b:0;h=(b?0:i)+h|0;e=e-1|0;if(e){continue}break};break b;case 5:if(!e){break a}f=J[a+36>>2];i=(b>>>0)/(f>>>0)|0;b=b-P(f,i)|0;g=d;d=(d>>>0)/(f>>>0)|0;h=g-P(d,f)|0;j=1;g=i;i=J[a+32>>2];a=J[a+16>>2]+(P(g,i)<<1)|0;g=J[c+16>>2];c=J[c+32>>2];d=g+(P(c,d)<<1)|0;while(1){I[(b<<1)+a>>1]=L[(h<<1)+d>>1];g=d;d=h+1|0;h=(d|0)!=(f|0)?d:0;d=g+((h?0:c)<<1)|0;g=a;a=b+1|0;b=(a|0)!=(f|0)?a:0;a=g+((b?0:i)<<1)|0;e=e-1|0;if(e){continue}break};break b;case 6:if(!e){break a}f=J[a+36>>2];j=(b>>>0)/(f>>>0)|0;b=b-P(f,j)|0;i=d;d=(d>>>0)/(f>>>0)|0;h=i-P(d,f)|0;i=J[a+32>>2];a=J[a+16>>2]+(P(i,j)<<2)|0;g=J[c+16>>2];c=J[c+32>>2];d=g+(P(c,d)<<2)|0;while(1){J[(b<<2)+a>>2]=J[(h<<2)+d>>2];j=1;g=d;d=h+1|0;h=(d|0)!=(f|0)?d:0;d=g+((h?0:c)<<2)|0;g=a;a=b+1|0;b=(a|0)!=(f|0)?a:0;a=g+((b?0:i)<<2)|0;e=e-1|0;if(e){continue}break};break b;case 7:if(!e){break a}f=J[a+36>>2];j=(b>>>0)/(f>>>0)|0;b=b-P(f,j)|0;i=d;d=(d>>>0)/(f>>>0)|0;h=i-P(d,f)|0;i=J[a+32>>2];a=J[a+16>>2]+(P(i,j)<<3)|0;g=J[c+16>>2];c=J[c+32>>2];d=g+(P(c,d)<<3)|0;while(1){g=(h<<3)+d|0;k=J[g+4>>2];j=(b<<3)+a|0;J[j>>2]=J[g>>2];J[j+4>>2]=k;j=1;g=d;d=h+1|0;h=(d|0)!=(f|0)?d:0;d=g+((h?0:c)<<3)|0;g=a;a=b+1|0;b=(a|0)!=(f|0)?a:0;a=g+((b?0:i)<<3)|0;e=e-1|0;if(e){continue}break};break b;case 8:break c;default:break b}}if(!e){break a}f=J[a+36>>2];j=(b>>>0)/(f>>>0)|0;b=b-P(f,j)|0;i=d;d=(d>>>0)/(f>>>0)|0;h=i-P(d,f)|0;i=J[a+32>>2];a=J[a+16>>2]+(P(i,j)<<2)|0;g=J[c+16>>2];c=J[c+32>>2];d=g+(P(c,d)<<2)|0;while(1){N[(b<<2)+a>>2]=N[(h<<2)+d>>2];j=1;g=d;d=h+1|0;h=(d|0)!=(f|0)?d:0;d=g+((h?0:c)<<2)|0;g=a;a=b+1|0;b=(a|0)!=(f|0)?a:0;a=g+((b?0:i)<<2)|0;e=e-1|0;if(e){continue}break}}return j}return 1}function nM(a,b){var c=0,d=0,e=0,f=0,g=0,h=Q(0),i=0,j=Q(0),k=Q(0),l=Q(0),m=Q(0),n=Q(0),o=Q(0),p=0,q=Q(0),r=Q(0),s=Q(0),t=Q(0),u=0,v=0,w=0,x=0,y=0,z=0,A=0,C=0,D=0;i=Ui-48|0;Ui=i;J[i+4>>2]=0;a:{b:{c=J[a+4>>2];d=J[a>>2];if((c|0)!=(d|0)){c=c-d>>2;C=c>>>0<=1?1:c;t=Q(Q(1)/b);while(1){c:{d:{e:{c=J[a>>2];if(J[a+4>>2]-c>>2>>>0>u>>>0){d=J[c+(u<<2)>>2];if(!d){break c}c=J[d+4>>2];e=J[d>>2];g=(c|0)==(e|0);if(g){break c}c=(c-e|0)/304|0;v=c>>>0<=1?1:c;c=0;while(1){if(!J[(e+P(c,304)|0)+280>>2]){c=c+1|0;if((v|0)!=(c|0)){continue}break d}break}N[d+76>>2]=b+N[d+76>>2];D=L[d+80>>1]<<16|u;w=J[d+64>>2];g=0;while(1){c=J[d>>2];if((J[d+4>>2]-c|0)/304>>>0<=g>>>0){break b}e=J[w>>2];if((J[w+4>>2]-e|0)/18568>>>0<=g>>>0){break b}f=J[w+16>>2];if(M[f+4>>2]<=g>>>0){break a}e=e+P(g,18568)|0;j=N[d+60>>2];p=J[f>>2]+P(g,160)|0;h=N[d+44>>2];k=Q(N[p+20>>2]*h);n=N[d+56>>2];l=Q(N[p+16>>2]*h);o=N[d+48>>2];m=Q(N[p+24>>2]*h);q=Q(Q(Q(j*k)+Q(n*l))-Q(o*m));h=N[d+52>>2];r=Q(Q(n*m)+Q(Q(o*l)+Q(h*k)));s=Q(Q(Q(j*m)+Q(o*k))-Q(h*l));k=Q(Q(Q(j*l)+Q(h*m))-Q(n*k));l=Q(N[d+40>>2]+Q(Q(q*o)+Q(Q(Q(r*n)+Q(j*s))-Q(k*h))));m=Q(N[d+36>>2]+Q(Q(k*n)+Q(Q(Q(r*h)+Q(j*q))-Q(s*o))));j=Q(N[d+32>>2]+Q(Q(s*h)+Q(Q(Q(r*o)+Q(j*k))-Q(q*n))));c=c+P(g,304)|0;f=K[c+296|0];f:{if(f&2){if(!(b>Q(0))){break f}N[c+104>>2]=t*Q(l-N[c+120>>2]);N[c+100>>2]=t*Q(m-N[c+116>>2]);N[c+96>>2]=t*Q(j-N[c+112>>2]);break f}H[c+296|0]=f|2}N[c+120>>2]=l;N[c+116>>2]=m;N[c+112>>2]=j;wC(d,e,c,p,b);f=J[c+56>>2];x=J[c+60>>2];J[i+28>>2]=0;J[c+48>>2]=0;J[c+52>>2]=0;J[c+40>>2]=0;J[c+44>>2]=0;J[c+32>>2]=0;J[c+36>>2]=0;J[c+24>>2]=0;J[c+28>>2]=0;J[c+16>>2]=0;J[c+20>>2]=0;J[c+8>>2]=0;J[c+12>>2]=0;J[c>>2]=0;J[c+4>>2]=0;x=(x-f|0)/160|0;f=J[e+18552>>2];g:{if(!f){break g}if(pQ(f,J[e+18544>>2],J[e+18548>>2],c)){f=K[c+296|0];if(f&1){break g}H[c+296|0]=f|1;J[i>>2]=tj(J[e+18544>>2],J[e+18548>>2]);dj(3,96107,71223,i);break g}if(J[c+52>>2]!=56){break e}H[c+296|0]=K[c+296|0]&254}f=i+28|0;oM(D,g,d,c,p);if(!(!J[c+216>>2]|(!(K[c+296|0]&8)|!J[c+208>>2]))){e=0;J[f>>2]=0;J[f+4>>2]=0;J[f+16>>2]=0;J[f+8>>2]=0;J[f+12>>2]=0;Ek(f,c+216|0,4);Ek(f,c+212|0,4);f=J[c+232>>2];if(f){p=J[c+228>>2];while(1){y=i+28|0;z=p+P(e,96)|0;Ek(y,z,8);Ek(y,z+16|0,16);e=e+1|0;if((f|0)!=(e|0)){continue}break}}J[i+24>>2]=J[i+44>>2];e=J[i+40>>2];J[i+16>>2]=J[i+36>>2];J[i+20>>2]=e;e=J[i+32>>2];J[i+8>>2]=J[i+28>>2];J[i+12>>2]=e;J[c+248>>2]=mn(i+8|0);e=i+28|0;Ek(e,c+208|0,4);J[c+244>>2]=mn(e);H[c+296|0]=K[c+296|0]&247}A=x+A|0;g=g+1|0;if((v|0)!=(g|0)){continue}break}break c}break b}Z(151939,41810,799,46938);B()}if(g){break c}e=0;while(1){c=J[d>>2];if((J[d+4>>2]-c|0)/304>>>0<=e>>>0){break b}c=c+P(e,304)|0;J[c+260>>2]=0;g=J[J[d+64>>2]+16>>2];if(M[g+4>>2]<=e>>>0){break a}j=N[d+60>>2];g=J[g>>2]+P(e,160)|0;h=N[d+44>>2];k=Q(N[g+20>>2]*h);n=N[d+56>>2];l=Q(N[g+16>>2]*h);o=N[d+48>>2];m=Q(N[g+24>>2]*h);q=Q(Q(Q(j*k)+Q(n*l))-Q(o*m));h=N[d+52>>2];r=Q(Q(n*m)+Q(Q(o*l)+Q(h*k)));s=Q(Q(Q(j*m)+Q(o*k))-Q(h*l));k=Q(Q(Q(j*l)+Q(h*m))-Q(n*k));l=Q(N[d+40>>2]+Q(Q(q*o)+Q(Q(Q(r*n)+Q(j*s))-Q(k*h))));m=Q(N[d+36>>2]+Q(Q(k*n)+Q(Q(Q(r*h)+Q(j*q))-Q(s*o))));j=Q(N[d+32>>2]+Q(Q(s*h)+Q(Q(Q(r*o)+Q(j*k))-Q(q*n))));g=K[c+296|0];h:{if(g&2){if(!(b>Q(0))){break h}N[c+104>>2]=t*Q(l-N[c+120>>2]);N[c+100>>2]=t*Q(m-N[c+116>>2]);N[c+96>>2]=t*Q(j-N[c+112>>2]);break h}H[c+296|0]=g|2}N[c+120>>2]=l;N[c+116>>2]=m;N[c+112>>2]=j;e=e+1|0;if((v|0)!=(e|0)){continue}break}}u=u+1|0;if((C|0)!=(u|0)){continue}break}}J[216186]=A;Ui=i+48|0;return}Z(145396,53895,487,84789);B()}Z(12664,55442,270,84789);B()}function dT(a,b){var c=0,d=Q(0),e=Q(0),f=Q(0),g=Q(0),h=Q(0),i=Q(0),j=Q(0),k=Q(0),l=Q(0),m=Q(0),n=Q(0),o=Q(0),p=Q(0),q=Q(0),r=Q(0),s=Q(0),t=Q(0),u=0;J[a+304>>2]=0;J[a+308>>2]=0;J[a+232>>2]=2;J[a+544>>2]=1065353216;J[a+548>>2]=0;J[a+536>>2]=1065353216;J[a+540>>2]=1065353216;J[a+352>>2]=0;J[a+356>>2]=0;J[a+348>>2]=1065353216;J[a+340>>2]=1065353216;J[a+344>>2]=1065353216;J[a+404>>2]=0;J[a+408>>2]=0;J[a+312>>2]=0;J[a+316>>2]=0;J[a+320>>2]=0;J[a+324>>2]=0;J[a+328>>2]=0;J[a+332>>2]=0;J[a+360>>2]=0;J[a+364>>2]=0;J[a+368>>2]=0;J[a+372>>2]=0;J[a+376>>2]=0;J[a+380>>2]=0;J[a+384>>2]=0;J[a+412>>2]=0;J[a+416>>2]=0;J[a+420>>2]=0;J[a+424>>2]=0;J[a+428>>2]=0;J[a+432>>2]=0;J[a+436>>2]=0;J[a+440>>2]=1056964608;N[a+464>>2]=N[b+108>>2];N[a+468>>2]=N[b+112>>2];c=J[b+4>>2];J[a+600>>2]=0;J[a+604>>2]=0;J[a+472>>2]=c;H[a+444|0]=K[b+116|0];N[a+448>>2]=N[b+120>>2];N[a+452>>2]=N[b+124>>2];N[a+456>>2]=N[b+128>>2];N[a+460>>2]=N[b+132>>2];a:{if(c){Zi[J[J[c>>2]+8>>2]](c,a+4|0);break a}c=J[b+12>>2];J[a+4>>2]=J[b+8>>2];J[a+8>>2]=c;c=J[b+20>>2];J[a+12>>2]=J[b+16>>2];J[a+16>>2]=c;c=J[b+36>>2];J[a+28>>2]=J[b+32>>2];J[a+32>>2]=c;c=J[b+28>>2];J[a+20>>2]=J[b+24>>2];J[a+24>>2]=c;c=J[b+44>>2];J[a+36>>2]=J[b+40>>2];J[a+40>>2]=c;c=J[b+52>>2];J[a+44>>2]=J[b+48>>2];J[a+48>>2]=c;c=J[b+60>>2];J[a+52>>2]=J[b+56>>2];J[a+56>>2]=c;c=b- -64|0;u=J[c+4>>2];J[a+60>>2]=J[c>>2];J[a+64>>2]=u}J[a+132>>2]=0;J[a+136>>2]=0;c=J[a+24>>2];J[a+84>>2]=J[a+20>>2];J[a+88>>2]=c;c=J[a+8>>2];J[a+68>>2]=J[a+4>>2];J[a+72>>2]=c;c=J[a+40>>2];J[a+100>>2]=J[a+36>>2];J[a+104>>2]=c;c=J[a+56>>2];J[a+116>>2]=J[a+52>>2];J[a+120>>2]=c;J[a+156>>2]=0;J[a+160>>2]=0;J[a+148>>2]=0;J[a+152>>2]=0;J[a+140>>2]=0;J[a+144>>2]=0;c=J[a+16>>2];J[a+76>>2]=J[a+12>>2];J[a+80>>2]=c;c=J[a+32>>2];J[a+92>>2]=J[a+28>>2];J[a+96>>2]=c;c=J[a+48>>2];J[a+108>>2]=J[a+44>>2];J[a+112>>2]=c;c=J[a+64>>2];J[a+124>>2]=J[a+60>>2];J[a+128>>2]=c;N[a+224>>2]=N[b+100>>2];N[a+228>>2]=N[b+104>>2];Zi[J[J[a>>2]+12>>2]](a,J[b+72>>2]);c=J[83474];J[83474]=c+1;J[a+500>>2]=c;c=J[a+204>>2];d=N[b>>2];if(d==Q(0)){c=c|1}else{k=Q(Q(1)/d);c=c&-2}N[a+336>>2]=k;J[a+204>>2]=c;J[a+368>>2]=0;N[a+364>>2]=d*N[a+380>>2];N[a+360>>2]=d*N[a+376>>2];N[a+356>>2]=d*N[a+372>>2];f=N[b+84>>2];g=N[b+80>>2];d=N[b+76>>2];t=Q(k*N[a+340>>2]);N[a+552>>2]=t;N[a+556>>2]=k*N[a+344>>2];N[a+560>>2]=k*N[a+348>>2];J[a+564>>2]=0;J[a+400>>2]=0;d=d!=Q(0)?Q(Q(1)/d):Q(0);N[a+388>>2]=d;g=g!=Q(0)?Q(Q(1)/g):Q(0);N[a+392>>2]=g;f=f!=Q(0)?Q(Q(1)/f):Q(0);N[a+396>>2]=f;h=N[b+92>>2];e=N[b+96>>2];N[a+440>>2]=eQ(1)?Q(1):e;N[a+436>>2]=hQ(1)?Q(1):h;J[a+268>>2]=0;J[a+284>>2]=0;J[a+300>>2]=0;J[a+496>>2]=0;h=N[a+44>>2];e=Q(f*h);n=N[a+36>>2];i=Q(d*n);o=N[a+40>>2];j=Q(g*o);N[a+296>>2]=Q(h*e)+Q(Q(n*i)+Q(o*j));p=N[a+28>>2];q=N[a+20>>2];r=N[a+24>>2];N[a+292>>2]=Q(p*e)+Q(Q(q*i)+Q(r*j));s=N[a+12>>2];l=Q(s*e);e=N[a+4>>2];m=Q(e*i);i=N[a+8>>2];N[a+288>>2]=l+Q(m+Q(i*j));j=Q(f*p);l=Q(d*q);m=Q(g*r);N[a+280>>2]=Q(h*j)+Q(Q(n*l)+Q(o*m));N[a+276>>2]=Q(p*j)+Q(Q(q*l)+Q(r*m));N[a+272>>2]=Q(s*j)+Q(Q(e*l)+Q(i*m));f=Q(f*s);d=Q(d*e);g=Q(g*i);N[a+264>>2]=Q(h*f)+Q(Q(n*d)+Q(o*g));N[a+260>>2]=Q(p*f)+Q(Q(q*d)+Q(g*r));N[a+256>>2]=Q(s*f)+Q(Q(e*d)+Q(i*g));J[a+528>>2]=0;J[a+532>>2]=0;J[a+520>>2]=0;J[a+524>>2]=0;J[a+512>>2]=0;J[a+516>>2]=0;J[a+504>>2]=0;J[a+508>>2]=0;N[a+552>>2]=t;J[a+564>>2]=0;J[a+568>>2]=0;J[a+572>>2]=0;J[a+576>>2]=0;J[a+580>>2]=0;J[a+584>>2]=0;J[a+588>>2]=0;J[a+592>>2]=0;J[a+596>>2]=0;N[a+556>>2]=k*N[a+344>>2];N[a+560>>2]=k*N[a+348>>2]}function yQ(a,b){var c=0,d=0,e=0,f=0,g=Q(0),h=Q(0),i=0,j=Q(0),k=Q(0),l=0,m=Q(0),n=0,o=Q(0),p=0,q=0,r=Q(0),s=Q(0),t=Q(0),u=0,v=Q(0),w=0,x=0,y=0,z=0,A=0,C=Q(0),D=Q(0),E=Q(0),F=0,G=0,I=0,K=0,O=0,R=Q(0),S=0,T=Q(0);f=Ui-48|0;Ui=f;c=1;a:{b:{c:{d:{e:{d=J[J[J[b+128>>2]+8>>2]+20>>2];f:{if(!d){break f}w=b+220|0;x=b+216|0;p=b+212|0;F=J[b>>2];u=J[J[F+80>>2]+8>>2];i=J[b+212>>2];G=J[b+216>>2]-i>>2;A=J[d>>2];l=J[A+4>>2];d=J[b+220>>2]-i>>2;if(l>>>0>d>>>0){if(H[b+224|0]&1){break b}lj(d+(l-G|0)|0,4,p,w,x);i=J[p>>2];d=J[w>>2]-i>>2}if(d>>>0>>0){break c}J[x>>2]=(l<<2)+i;I=a+116|0;K=a+108|0;d=J[a+108>>2];g:{if(J[a+116>>2]-d>>2>>>0>>0){if(H[a+120|0]&1){break b}i=a+112|0;lj(l,4,K,I,i);J[a+112>>2]=J[a+108>>2];break g}J[a+112>>2]=d;if(!l){break f}i=a+112|0}a=0;h:{while(1){i:{if(a>>>0>>0){d=J[p>>2];if(J[x>>2]-d>>2>>>0<=a>>>0){break a}c=J[d+(a<<2)>>2];break i}d=Ui-16|0;Ui=d;e=J[u>>2];n=J[e>>2];J[d+12>>2]=296128;c=Gy(e,296128,0);j:{if(c){if(vv(J[u>>2],c)){break j}gt(e,c);ft(e,c);c=0;break j}c=0;e=J[d+12>>2];if((e|0)==296128){break j}vj(n,e)}Ui=d+16|0;if(!c){c=J[p>>2];if(J[w>>2]-c>>2>>>0>=a>>>0){break h}break c}e=gE(u);if((e|0)==-1){Oy(u,c,0);c=J[p>>2];if(J[w>>2]-c>>2>>>0>=a>>>0){break h}break c}d=eE(e);y=Yi;if(c){J[c+88>>2]=e}z=Ui-16|0;Ui=z;n=J[u>>2];J[z+12>>2]=c;O=n+3144|0;k:{l:{e=J[n+3148>>2];m:{n:{if(!e){break n}e=J[J[O>>2]+(mxa(d,y,e)<<2)>>2];if((e|0)==-1){break n}S=J[n+3152>>2];while(1){e=(e<<4)+S|0;q=-3;if(J[e>>2]==(d|0)&J[e+4>>2]==(y|0)){break m}e=J[e+12>>2];if((e|0)!=-1){continue}break}}q=-4;if(J[c+96>>2]!=J[74028]|J[c+100>>2]!=J[74029]){break m}J[c+96>>2]=d;J[c+100>>2]=y;pl(O,d,y,z+12|0);if(M[n+3168>>2]>L[n+1058>>1]){break l}q=0}e=q;Ui=z+16|0;break k}Z(145129,38296,1032,34215);B()}if(e){Oy(u,c,0);c=J[p>>2];if(J[w>>2]-c>>2>>>0>=a>>>0){break h}break c}J[c+136>>2]=J[c+136>>2]&-1025|1024;d=J[p>>2];if(J[x>>2]-d>>2>>>0<=a>>>0){break a}J[d+(a<<2)>>2]=c}o:{if(a){j=Q(1);g=Q(0);k=Q(0);r=Q(0);s=Q(0);R=Q(0);C=Q(1);D=Q(1);E=Q(1);h=Q(0);break o}k=N[b+28>>2];D=N[b+52>>2];j=Q(D*Q(0));g=N[b+24>>2];C=N[b+48>>2];r=Q(C*Q(0));o=N[b+16>>2];E=N[b+56>>2];s=Q(E*Q(0));t=Q(Q(Q(k*j)+Q(g*r))-Q(o*s));h=N[b+20>>2];m=Q(Q(g*s)+Q(Q(o*r)+Q(h*j)));v=Q(Q(Q(k*s)+Q(o*j))-Q(h*r));j=Q(Q(Q(k*r)+Q(h*s))-Q(g*j));R=Q(N[b+40>>2]+Q(Q(t*o)+Q(Q(Q(m*g)+Q(k*v))-Q(j*h))));s=Q(N[b+36>>2]+Q(Q(j*g)+Q(Q(Q(m*h)+Q(k*t))-Q(v*o))));r=Q(N[b+32>>2]+Q(Q(v*h)+Q(Q(Q(m*o)+Q(k*j))-Q(t*g))));v=Q(g*Q(-0));m=Q(h*Q(-0));t=Q(o*Q(0));j=Q(v+Q(m+Q(k-t)));T=m;m=Q(k*Q(0));k=Q(T+Q(t+Q(m+g)));g=Q(Q(Q(g*Q(0))+Q(m+h))-t);h=Q(v+Q(Q(h*Q(0))+Q(m+o)))}N[f+40>>2]=R;N[f+36>>2]=s;N[f+32>>2]=r;d=J[f+32>>2];e=J[f+36>>2];N[c+24>>2]=N[f+40>>2];J[c+16>>2]=d;J[c+20>>2]=e;N[f+28>>2]=j;N[f+24>>2]=k;N[f+20>>2]=g;N[f+16>>2]=h;d=J[f+16>>2];e=J[f+20>>2];n=J[f+28>>2];J[c+8>>2]=J[f+24>>2];J[c+12>>2]=n;J[c>>2]=d;J[c+4>>2]=e;N[f+8>>2]=E;N[f+4>>2]=D;N[f>>2]=C;d=J[f>>2];e=J[f+4>>2];N[c+40>>2]=N[f+8>>2];J[c+32>>2]=d;J[c+36>>2]=e;d=J[i>>2];if((d|0)==J[I>>2]){break e}J[i>>2]=d+4;J[d>>2]=c;a=a+1|0;if((l|0)!=(a|0)){continue}break}a=0;while(1){b=(a^-1)+l|0;d=J[K>>2];e=J[i>>2]-d>>2;if(b>>>0>=e>>>0){break a}q=J[d+(b<<2)>>2];if(b){if(b>>>0>=M[A+4>>2]){break d}b=J[J[A>>2]+P(b,192)>>2];if(b>>>0>=e>>>0){break a}b=J[d+(b<<2)>>2]}else{b=F}Ay(q,b);c=1;a=a+1|0;if((l|0)!=(a|0)){continue}break}break f}J[x>>2]=(a<<2)+c;c=0}Ui=f+48|0;return c}Z(112520,53895,557,53220);B()}Z(12664,55343,259,84789);B()}Z(144782,53895,514,59583);B()}Z(151729,53895,501,2284);B()}Z(145396,53895,487,84789);B()}function eK(a,b,c,d,e,f,g){var h=0,i=0,j=0,k=0,l=0,m=0,n=0,o=0,p=0,q=0,r=0,s=0;m=Ui-48|0;Ui=m;Oj(a,f,5);if(K[b+24|0]){while(1){j=J[b+20>>2]+P(r,24)|0;xj(a,J[j>>2]);Ll(a,f);a:{if(!kj(a,-1)){h=J[j+4>>2];if((h&-268435456)==268435456){i=J[j+16>>2];if(i){hK(a,j,c,d,e,i,g);break a}if((h&264241152)==46137344){h=J[j+8>>2];i=K[h+24|0];if(!i){break a}j=J[j+12>>2]+c|0;n=0;while(1){k=J[h+20>>2]+P(n,24)|0;o=J[k+16>>2];if(o){hK(a,k,j,d,e,o,j);i=K[h+24|0]}n=n+1|0;if(i>>>0>n>>>0){continue}break}break a}b:{c:{d:{e:{f:{g:{h:{i:{h=h>>>22&63;switch(h-2|0){case 12:break c;case 7:break d;case 0:break e;case 6:break f;case 2:break g;case 11:break h;case 3:break i;default:break b}}J[J[j+12>>2]+c>>2]=0;break a}J[J[j+12>>2]+c>>2]=0;break a}h=J[j+12>>2]+c|0;J[h>>2]=0;J[h+4>>2]=0;break a}H[J[j+12>>2]+c|0]=0;break a}J[J[j+12>>2]+c>>2]=0;break a}h=J[d>>2];j:{if(M[e>>2]>>0){fj(a,14407,0);break j}H[h|0]=0;J[J[j+12>>2]+c>>2]=J[d>>2]-g}J[d>>2]=J[d>>2]+1;break a}J[J[j+12>>2]+c>>2]=0;break a}J[m+4>>2]=J[j>>2];J[m>>2]=h;fj(a,27584,m);break a}J[m+16>>2]=J[j>>2];fj(a,67432,m+16|0);break a}i=J[j+12>>2]+c|0;k=kj(a,-1);n=0;p=1;s=(J[j+4>>2]&-268435456)!=805306368;k:{if(s){h=i;o=0;break k}Oj(a,-1,5);o=4;l:{m:{switch((J[j+4>>2]>>>22&63)-2|0){case 6:o=1;break l;case 9:o=J[J[j+8>>2]+16>>2];break l;default:Z(62644,41159,215,94447);B();case 0:case 3:case 7:case 11:case 12:break l;case 2:break m}}o=8}p=fl(a,-1);h=J[d>>2]+15&-16;J[d>>2]=h;l=P(o,p)+h|0;if(l>>>0>M[e>>2]){fj(a,125966,0);break a}J[i+4>>2]=p;J[i>>2]=h-c;J[d>>2]=l;if(!p){break a}}while(1){if(!s){Nj(a,-1,n+1|0)}n:{o:{p:{q:{r:{s:{t:{u:{v:{w:{x:{i=J[j+4>>2]>>>22&63;switch(i-2|0){case 9:break q;case 12:break r;case 7:break s;case 0:break t;case 6:break u;case 2:break v;case 11:break w;case 3:break x;default:break p}}if(!k){J[h>>2]=0;break n}J[h>>2]=Ej(a,-1);break n}if(!k){J[h>>2]=0;break n}J[h>>2]=Ej(a,-1);break n}if(!k){J[h>>2]=0;J[h+4>>2]=0;break n}J[h>>2]=Tl(a,-1);J[h+4>>2]=Yi;break n}if(!k){H[h|0]=0;break n}H[h|0]=(ck(a,-1)|0)!=0;break n}if(!k){J[h>>2]=0;break n}N[h>>2]=wj(a,-1);break n}if(k){i=Aj(a,-1,0)}else{i=158859}q=J[d>>2];l=yj(i)+1|0;y:{if(q+l>>>0>M[e>>2]){fj(a,14407,0);break y}hj(q,i,l);J[h>>2]=J[d>>2]-g}J[d>>2]=l+J[d>>2];break n}if(!k){J[h>>2]=0;break n}J[h>>2]=Ej(a,-1);break n}if(!k){break n}l=J[j+8>>2];i=J[l+4>>2];if(!$k(i,108973,8)){break o}if(!$k(i,108838,7)){i=Pl(a,-1);l=J[i>>2];q=J[i+4>>2];N[h+8>>2]=N[i+8>>2];J[h>>2]=l;J[h+4>>2]=q;break n}if(!$k(i,106998,8)){i=Qm(a,-1);N[h>>2]=N[i>>2];N[h+4>>2]=N[i+4>>2];N[h+8>>2]=N[i+8>>2];N[h+12>>2]=N[i+12>>2];break n}if(!$k(i,16786,5)){i=Is(a,-1);N[h>>2]=N[i>>2];N[h+4>>2]=N[i+4>>2];N[h+8>>2]=N[i+8>>2];N[h+12>>2]=N[i+12>>2];break n}if(!$k(i,106883,8)){i=an(a,-1);N[h>>2]=N[i>>2];N[h+4>>2]=N[i+4>>2];N[h+8>>2]=N[i+8>>2];N[h+12>>2]=N[i+12>>2];N[h+16>>2]=N[i+16>>2];N[h+20>>2]=N[i+20>>2];N[h+24>>2]=N[i+24>>2];N[h+28>>2]=N[i+28>>2];N[h+32>>2]=N[i+32>>2];N[h+36>>2]=N[i+36>>2];N[h+40>>2]=N[i+40>>2];N[h+44>>2]=N[i+44>>2];N[h+48>>2]=N[i+48>>2];N[h+52>>2]=N[i+52>>2];N[h+56>>2]=N[i+56>>2];N[h+60>>2]=N[i+60>>2];break n}eK(a,l,h,d,e,J[a+8>>2]-J[a+12>>2]>>4,g);break n}J[m+36>>2]=J[j>>2];J[m+32>>2]=i;fj(a,27682,m+32|0);break n}i=Pl(a,-1);N[h>>2]=N[i>>2];N[h+4>>2]=N[i+4>>2];N[h+8>>2]=N[i+8>>2]}if(!s){gj(a,-2);h=h+o|0}n=n+1|0;if((p|0)!=(n|0)){continue}break}}gj(a,-2);r=r+1|0;if(r>>>0>2]=0;J[b+2192>>2]=0;e=b+2220|0;J[e>>2]=0;J[e+4>>2]=0;e=b+2212|0;J[e>>2]=0;J[e+4>>2]=0;e=b+2204|0;J[e>>2]=0;J[e+4>>2]=0;j=b+2196|0;e=j;J[e>>2]=0;J[e+4>>2]=0;i=hj(b,a,2188);J[d+112>>2]=a+140;b=d+1152|0;Gj(b,1024,31902,d+112|0);a=0;e=b;f=K[b|0];b:{if(!f){break b}while(1){g=a;c:{if(!((f|0)!=92&(f|0)!=47)){H[a+b|0]=47;while(1){f=K[e|0];if((f|0)!=92&(f|0)!=47){break c}e=e+1|0;continue}}H[b+g|0]=f;f=K[e+1|0];e=e+1|0}a=g+1|0;if(a>>>0<1024?f:0){continue}break}if(!g){a=1;break b}e=(a+b|0)-1|0;if(K[e|0]!=47){break b}H[e|0]=0}H[b+(a>>>0>=1023?1023:a)|0]=0;d:{if(kr(d+128|0,b)){J[d+96>>2]=b;dj(4,96538,147774,d+96|0);a=J[i+2192>>2];if(a){co(a)}a=J[i+2188>>2];if(a){uu(a)}if(H[i+2224|0]&1){break d}a=J[i+2204>>2];if(a){cj(a)}a=J[j>>2];if(!a){break d}cj(a);break d}a=d+128|0;e=i+2188|0;if(tJ(a,e)){J[d+80>>2]=a;dj(4,96538,148774,d+80|0);a=J[i+2192>>2];if(a){co(a)}a=J[e>>2];if(a){uu(a)}if(H[i+2224|0]&1){break d}a=J[i+2204>>2];if(a){cj(a)}a=J[j>>2];if(!a){break d}cj(a);break d}b=J[i+2188>>2];g=J[55865];if(uJ(b,g)){J[d+64>>2]=g;dj(4,96538,146599,d- -64|0);b=-2;break a}J[d+2336>>2]=b?J[b+96>>2]:0;f=J[d+2336>>2];a=nj(f);tu(b,a,f);Gt(b);k=i+2192|0;if(Qu(a,J[d+2336>>2],k)){J[d+48>>2]=g;dj(4,96538,60456,d+48|0);cj(a);b=-4;break a}cj(a);h=J[e>>2];a=h;if(a){b=J[a+16>>2]}else{b=-1}a=d+3376|0;J[a>>2]=0;J[a+4>>2]=0;a=d+3384|0;J[a>>2]=0;J[a+4>>2]=0;a=d+3368|0;J[a>>2]=0;J[a+4>>2]=0;J[d+3360>>2]=0;J[d+3364>>2]=0;J[d+3380>>2]=-1;a=(b<<1>>>0)/3|0;RC(d+3360|0,a>>>0<=1?1:a,b);if(b){l=i+140|0;m=i+8|0;n=d+2200|0;g=d+2196|0;a=0;while(1){e:{if(ex(h,a)){J[d+36>>2]=l;J[d+32>>2]=m;dj(4,96538,26034,d+32|0);break e}e=h?J[h+92>>2]:0;f=K[e|0];J[d+20>>2]=e;J[d+16>>2]=(f|0)==47?158859:114114;e=d+2336|0;Gj(e,1024,26090,d+16|0);f=YC(e,yj(e));o=Yi;J[d+2192>>2]=0;J[g>>2]=h?J[h+96>>2]:0;e=h?J[h+88>>2]:-1;if((e|0)>=0){J[n>>2]=e}Gt(h);Ux(d+3360|0,f,o,d+2192|0)}a=a+1|0;if((b|0)!=(a|0)){continue}break}}a=J[J[k>>2]+8>>2];l=J[(J[a>>2]<<2)+159120>>2]>>>3|0;f=J[a+32>>2];a=f+b|0;b=(a<<1>>>0)/3|0;RC(j,b>>>0<=1?1:b,a);if(f){e=0;while(1){g=J[J[J[k>>2]+8>>2]+28>>2]+P(e,48)|0;a=d+2336|0;Os(J[g>>2],l,a,129);J[d>>2]=K[d+2336|0]==47?158859:114114;J[d+4>>2]=a;a=d+2192|0;Gj(a,128,26090,d);H[d+2320|0]=0;b=YC(a,yj(a));h=Yi;a=J[d+3364>>2];f:{if(!a){break f}a=J[J[d+3360>>2]+(mxa(b,h,a)<<2)>>2];if((a|0)==-1){break f}m=J[d+3368>>2];while(1){a=m+P(a,24)|0;if(J[a>>2]!=(b|0)|J[a+4>>2]!=(h|0)){a=J[a+20>>2];if((a|0)!=-1){continue}break f}break}J[a+8>>2]=g;J[d+2180>>2]=g;J[d+2184>>2]=J[g+24>>2];J[d+2188>>2]=J[a+16>>2];Ux(j,J[g+16>>2],J[g+20>>2],d+2180|0)}e=e+1|0;if((f|0)!=(e|0)){continue}break}}b=0;f=d+2344|0;e=-1;a=0;while(1){g:{h:{e=b?J[b+20>>2]:e;if((e|0)!=-1){break h}g=J[d+3364>>2];if(g>>>0<=a>>>0){break g}h=J[d+3360>>2];while(1){b=a+1|0;e=J[h+(a<<2)>>2];if((e|0)!=-1){a=b;break h}a=b;if((g|0)!=(a|0)){continue}break}break g}b=J[d+3368>>2];if(!b){break g}b=b+P(e,24)|0;J[f>>2]=J[b+16>>2];h=J[b+12>>2];g=J[b+8>>2];J[d+2336>>2]=g;J[d+2340>>2]=h;if(g){continue}Ux(j,J[b>>2],J[b+4>>2],d+2336|0);continue}break}i:{if(H[d+3388|0]&1){break i}a=J[d+3368>>2];if(a){cj(a)}a=J[d+3360>>2];if(!a){break i}cj(a)}J[c>>2]=i;b=0;break a}cj(i);b=-2}Ui=d+3392|0;return b|0}function jma(a){a=a|0;var b=0,c=0,d=0,e=Q(0),f=0,g=0,h=0,i=0,j=0,k=0;h=Ui-32|0;Ui=h;i=pj(h+12|0,a,0,36839,480);b=qj(a,1,J[79308],3640);d=J[b+8>>2];c=J[b+12>>2];a:{if(!(d|c)){break a}if(xk(J[b+4>>2],d,c)){break a}J[h>>2]=tj(J[b+8>>2],J[b+12>>2]);fj(a,102051,h)}d=Ui-224|0;Ui=d;a=J[b>>2];j=J[a+8>>2];zj(154519,0);zj(156485,0);J[d+208>>2]=J[a>>2];zj(157794,d+208|0);e=N[a+12>>2];O[d+200>>3]=N[a+16>>2];O[d+192>>3]=e;zj(156804,d+192|0);O[d+176>>3]=N[a+56>>2];zj(155843,d+176|0);e=N[a+64>>2];O[d+168>>3]=N[a+68>>2];O[d+160>>3]=e;zj(156628,d+160|0);O[d+144>>3]=N[a+72>>2];zj(155426,d+144|0);O[d+128>>3]=N[a+132>>2];zj(155753,d+128|0);O[d+112>>3]=N[a+136>>2];zj(155721,d+112|0);J[d+96>>2]=L[a+4>>1]&4;zj(157577,d+96|0);J[d+80>>2]=L[a+4>>1]&2;zj(157663,d+80|0);J[d+64>>2]=L[a+4>>1]&16;zj(157606,d- -64|0);J[d+48>>2]=L[a+4>>1]&8;zj(157493,d+48|0);J[d+32>>2]=L[a+4>>1]&32;zj(157638,d+32|0);O[d+16>>3]=N[a+140>>2];zj(155954,d+16|0);J[d>>2]=J[a+8>>2];zj(157343,d);zj(158634,0);a=J[a+100>>2];if(a){while(1){zj(154517,0);b=Ui-512|0;Ui=b;zj(156463,0);O[b+496>>3]=N[a+16>>2];zj(155574,b+496|0);O[b+480>>3]=N[a+20>>2];zj(155543,b+480|0);O[b+464>>3]=N[a>>2];zj(155399,b+464|0);J[b+448>>2]=K[a+44|0];zj(157548,b+448|0);c=J[a+12>>2];b:{if(H[c+20|0]&1){f=Zi[J[J[c>>2]+12>>2]](c)|0;if((f|0)<=0){break b}c=0;while(1){g=P(c,6);J[b+436>>2]=L[g+J[a+40>>2]>>1];J[b+432>>2]=c;zj(157865,b+432|0);J[b+420>>2]=L[(g+J[a+40>>2]|0)+2>>1];J[b+416>>2]=c;zj(157949,b+416|0);J[b+404>>2]=I[(g+J[a+40>>2]|0)+4>>1];J[b+400>>2]=c;zj(158030,b+400|0);c=c+1|0;if((f|0)!=(c|0)){continue}break}break b}J[b+384>>2]=L[J[a+40>>2]>>1];zj(157823,b+384|0);J[b+368>>2]=L[J[a+40>>2]+2>>1];zj(157911,b+368|0);J[b+352>>2]=I[J[a+40>>2]+4>>1];zj(157991,b+352|0)}c:{d:{e:{f:{g:{h:{c=J[a+12>>2];switch(J[c+4>>2]){case 3:break f;case 2:break g;case 1:break h;case 0:break e;default:break c}}zj(156221,0);O[b+144>>3]=N[c+8>>2];zj(155459,b+144|0);e=N[c+40>>2];O[b+136>>3]=N[c+44>>2];O[b+128>>3]=e;zj(157219,b+128|0);e=N[c+24>>2];O[b+120>>3]=N[c+28>>2];O[b+112>>3]=e;zj(157175,b+112|0);e=N[c+32>>2];O[b+104>>3]=N[c+36>>2];O[b+96>>3]=e;zj(157131,b+96|0);e=N[c+48>>2];O[b+88>>3]=N[c+52>>2];O[b+80>>3]=e;zj(157087,b+80|0);J[b+64>>2]=K[c+56|0];zj(157758,b- -64|0);J[b+48>>2]=K[c+57|0];zj(157722,b+48|0);break d}g=0;zj(156143,0);J[b+208>>2]=16;zj(156502,b+208|0);f=J[c+416>>2];if((f|0)>0){k=c+160|0;while(1){f=(g<<3)+k|0;e=N[f>>2];O[b+192>>3]=N[f+4>>2];J[b+176>>2]=g;O[b+184>>3]=e;zj(156842,b+176|0);g=g+1|0;f=J[c+416>>2];if((g|0)<(f|0)){continue}break}}J[b+160>>2]=f;zj(158073,b+160|0);break d}g=0;zj(156170,0);J[b+336>>2]=J[c+28>>2];zj(156502,b+336|0);f=J[c+28>>2];if((f|0)>0){while(1){f=J[c+24>>2]+(g<<3)|0;e=N[f>>2];O[b+320>>3]=N[f+4>>2];J[b+304>>2]=g;O[b+312>>3]=e;zj(156842,b+304|0);g=g+1|0;f=J[c+28>>2];if((g|0)<(f|0)){continue}break}}J[b+288>>2]=f;zj(158097,b+288|0);e=N[c+32>>2];O[b+280>>3]=N[c+36>>2];O[b+272>>3]=e;zj(156672,b+272|0);e=N[c+40>>2];O[b+264>>3]=N[c+44>>2];O[b+256>>3]=e;zj(156719,b+256|0);J[b+240>>2]=K[c+48|0];zj(157385,b+240|0);J[b+224>>2]=K[c+49|0];zj(157424,b+224|0);break d}zj(156195,0);O[b+32>>3]=N[c+8>>2];zj(155459,b+32|0);e=N[c+24>>2];O[b+24>>3]=N[c+28>>2];O[b+16>>3]=e;zj(156766,b+16|0)}zj(158634,0);zj(156119,0);zj(158634,0);J[b>>2]=j;zj(157306,b)}Ui=b+512|0;zj(154512,0);a=J[a+4>>2];if(a){continue}break}}zj(154514,0);Ui=d+224|0;oj(i);Ui=h+32|0;return 0}function Rt(a,b,c){var d=0,e=0,f=0,g=0,h=0,i=0,j=0,k=0,l=0,m=0,n=0,o=0,p=0,q=0,r=0,s=0,t=0,u=0,w=0,x=0;p=Ui-112|0;Ui=p;r=p|4;a:{b:{c:{d:{e:{f:{g:{while(1){h:{i:{switch(J[c+8>>2]-1|0){case 2:i=O[c>>3];if(i==0){d=J[b+16>>2];e=d;break h}d=J[b+16>>2];A(+i);e=v(1)|0;f=v(0)|0;f=e+f|0;e=((f>>>0)%((-1<>>0)<<5)+d|0;break h;case 3:d=J[b+16>>2];e=d+((J[J[c>>2]+8>>2]&(-1<>2];e=d+((J[c>>2]&(-1<>2];e=d+(M[c>>2]%((-1<>>0)<<5)|0;break h;default:break i}}d=J[b+16>>2];e=d+(M[c>>2]%((-1<>>0)<<5)|0}if((e|0)!=173648&!J[e+8>>2]){break b}f=J[b+20>>2];j:{k:{while(1){j=f;f=f-32|0;J[b+20>>2]=f;if(d>>>0>=j>>>0){break k}if(J[j-8>>2]){continue}break}switch(J[e+24>>2]-1|0){case 2:break j;case 1:break e;case 0:break f;case 3:break g;default:break d}}q=0;s=ij(p,0,108);k=J[b+28>>2];h=1;j=1;n=0;while(1){l:{f=j;if((k|0)<(f|0)){f=k;if((h|0)>(f|0)){break l}}d=0;if((f|0)>=(h|0)){l=J[b+12>>2]-8|0;d=f-h|0;g=d+1|0;o=g&3;e=0;m:{if(d>>>0<3){d=0;break m}t=l+48|0;u=l+32|0;w=l+16|0;x=g&-4;d=0;g=0;while(1){m=d;d=h<<4;d=(((m+(J[d+l>>2]!=0)|0)+(J[d+w>>2]!=0)|0)+(J[d+u>>2]!=0)|0)+(J[d+t>>2]!=0)|0;h=h+4|0;g=g+4|0;if((x|0)!=(g|0)){continue}break}}if(o){while(1){d=(J[l+(h<<4)>>2]!=0)+d|0;h=h+1|0;e=e+1|0;if((o|0)!=(e|0)){continue}break}}h=f+1|0}f=(n<<2)+s|0;J[f>>2]=J[f>>2]+d;j=j<<1;q=d+q|0;n=n+1|0;if((n|0)!=27){continue}}break}d=-1<>2]+(d<<5)|0;if(J[d+8>>2]){l=0;n:{if(J[d+24>>2]!=3){break n}i=O[d+16>>3];o:{if(R(i)<2147483648){d=~~i;break o}d=-2147483648}if(+(d|0)!=i){break n}d=d-1|0;if(d>>>0>67108863){break n}l=1;d=(QA(d)<<2)+r|0;J[d>>2]=J[d>>2]+1}e=e+l|0;f=f+1|0}d=j-1|0;if(j){continue}break}k=e+q|0;e=0;h=1;j=0;o=0;d=0;l=0;m=0;p:{if(J[c+8>>2]!=3){break p}i=O[c>>3];q:{if(R(i)<2147483648){g=~~i;break q}g=-2147483648}m=0;if(+(g|0)!=i){break p}g=g-1|0;m=0;if(g>>>0>67108863){break p}n=(QA(g)<<2)+r|0;J[n>>2]=J[n>>2]+1;m=1}k=m+k|0;r:{if((k|0)<=0){break r}while(1){g=J[(l<<2)+s>>2];n=(g|0)>0;m=e;e=d+g|0;g=n&(m|0)<(e|0);j=g?h:j;o=g?e:o;d=n?e:d;if((k|0)==(d|0)){break r}l=l+1|0;e=h&2147483647;h=h<<1;if(e>>>0>>0){continue}break}}_z(a,b,j,((f+q|0)-o|0)+1|0);e=nu(b,c);H[b+6|0]=0;if((e|0)!=173288){break a}d=49673;s:{switch(J[c+8>>2]){case 3:i=O[c>>3];if(i==i){continue}d=91077;break;case 0:break s;default:continue}}xl(a,d,0);continue}break}i=O[e+16>>3];if(i==0){break c}A(+i);h=v(1)|0;k=v(0)|0;k=h+k|0;d=((k>>>0)%((-1<>>0)<<5)+d|0;break c}d=((J[J[e+16>>2]+8>>2]&(-1<>2]&(-1<>2]%((-1<>>0)<<5)+d|0;break c}d=(M[e+16>>2]%((-1<>>0)<<5)+d|0}if((d|0)!=(e|0)){while(1){j=d;d=J[d+28>>2];if((e|0)!=(d|0)){continue}break}J[j+28>>2]=f;d=J[e+28>>2];J[f+24>>2]=J[e+24>>2];J[f+28>>2]=d;d=J[e+20>>2];J[f+16>>2]=J[e+16>>2];J[f+20>>2]=d;d=J[e+12>>2];J[f+8>>2]=J[e+8>>2];J[f+12>>2]=d;d=J[e+4>>2];J[f>>2]=J[e>>2];J[f+4>>2]=d;J[e+28>>2]=0;J[e+8>>2]=0;break b}J[j-4>>2]=J[e+28>>2];J[e+28>>2]=f;e=f}f=J[c+4>>2];J[e+16>>2]=J[c>>2];J[e+20>>2]=f;f=J[c+8>>2];J[e+24>>2]=f;if(!(K[J[c>>2]+5|0]&3)|(f|0)<4){break a}c=K[b+5|0];if(!(c&4)){break a}a=J[a+16>>2];H[b+5|0]=c&251;J[b+24>>2]=J[a+40>>2];J[a+40>>2]=b}Ui=p+112|0;return e}function yv(a,b,c,d){var e=0,f=0,g=0,h=0,i=0,j=0,k=0,l=0,m=0,n=0,o=0,p=0,q=0,r=0,s=0,t=0;n=Ui-16|0;Ui=n;g=n+8|0;J[g+4>>2]=c;J[g>>2]=d;a:{b:{c:{d:{e:{f:{if(K[b+24|0]){while(1){j=J[b+20>>2]+P(s,24)|0;k=J[j+4>>2];e=H[j+20|0];g:{if(e&127?(e|0)>=0:0){break g}q=4;h:{i:{j:{k:{e=k>>>22&63;switch(e-9|0){case 0:break h;case 3:break j;case 2:break k;default:break i}}q=J[J[j+8>>2]+16>>2];break h}q=8;break h}q=jE(e);k=J[j+4>>2]}r=J[j+12>>2]+a|0;t=1;if((k&-268435456)==805306368){t=J[r+4>>2];if(!t){break g}r=J[r>>2]}k=0;while(1){f=P(k,q)+r|0;l:{m:{n:{o:{p:{q:{r:{s:{t:{u:{v:{w:{x:{y:{z:{e=J[j+4>>2];switch((e>>>22&63)-1|0){case 13:break m;case 12:break n;case 11:break o;case 10:break p;case 9:break q;case 8:break r;case 7:break s;case 6:break t;case 5:break u;case 4:break v;case 3:break w;case 2:break x;case 1:break y;case 17:break c;case 0:break z;case 16:break d;case 15:break e;case 14:break f;default:break b}}i=3;if(!Io(g,e&4194303,1)){break a}e=Ui-16|0;Ui=e;A(+O[f>>3]);f=v(1)|0;h=v(0)|0;H[e+8|0]=h;H[e+9|0]=h>>>8;H[e+10|0]=h>>>16;H[e+11|0]=h>>>24;H[e+12|0]=f;H[e+13|0]=f>>>8;H[e+14|0]=f>>>16;H[e+15|0]=f>>>24;f=Zi[J[g>>2]](J[g+4>>2],e+8|0,8)|0;Ui=e+16|0;if(!f){break a}break l}i=3;if(!Io(g,e&4194303,5)){break a}e=Ui-16|0;Ui=e;f=J[f>>2];H[e+12|0]=f;H[e+13|0]=f>>>8;H[e+14|0]=f>>>16;H[e+15|0]=f>>>24;f=Zi[J[g>>2]](J[g+4>>2],e+12|0,4)|0;Ui=e+16|0;if(!f){break a}break l}i=3;if(!Io(g,e&4194303,0)){break a}if(!ZR(g,J[f>>2],J[f+4>>2])){break a}break l}i=3;if(!Io(g,e&4194303,0)){break a}if(!ZR(g,J[f>>2],J[f+4>>2])){break a}break l}i=3;if(!Io(g,e&4194303,0)){break a}h=0;l=Ui-16|0;Ui=l;e=J[f>>2];A:{if((e|0)<0){h=e;f=e>>31;e=0;while(1){o=e;m=l+1|0;H[m+e|0]=h|128;e=e+1|0;p=!f&h>>>0>16383|(f|0)!=0;h=(f&127)<<25|h>>>7;f=f>>>7|0;if(p){continue}break}H[e+m|0]=h;e=Zi[J[g>>2]](J[g+4>>2],m,o+2|0)|0;break A}if(e>>>0>=128){while(1){H[(l+11|0)+h|0]=e|128;h=h+1|0;f=e>>>0>16383;e=e>>>7|0;if(f){continue}break}}f=l+11|0;H[f+h|0]=e;e=Zi[J[g>>2]](J[g+4>>2],f,h+1|0)|0}Ui=l+16|0;if(!e){break a}break l}Z(62644,41257,102,68466);B()}Z(62644,41257,106,68466);B()}i=3;if(!Io(g,e&4194303,0)){break a}e=Ui-16|0;Ui=e;H[e+11|0]=K[f|0];f=Zi[J[g>>2]](J[g+4>>2],e+11|0,1)|0;Ui=e+16|0;if(!f){break a}break l}i=3;if(!Io(g,e&4194303,2)){break a}e=0;o=0;h=Ui-16|0;Ui=h;p=J[f>>2];B:{if(!p){H[h+6|0]=0;o=Zi[J[g>>2]](J[g+4>>2],h+6|0,1)|0;break B}l=yj(p);f=l;if(f>>>0>=128){while(1){H[(h+11|0)+e|0]=f|128;e=e+1|0;m=f>>>0>16383;f=f>>>7|0;if(m){continue}break}}m=h+11|0;H[m+e|0]=f;if(!(Zi[J[g>>2]](J[g+4>>2],m,e+1|0)|0)){break B}o=Zi[J[g>>2]](J[g+4>>2],p,l)|0}Ui=h+16|0;if(!o){break a}break l}Z(62644,41257,116,68466);B()}J[n+4>>2]=0;i=yv(f,J[j+8>>2],n+4|0,178);if(i){break a}i=3;if(!Io(g,J[j+4>>2]&4194303,2)){break a}if(!Qy(g,J[n+4>>2])){break a}i=yv(f,J[j+8>>2],c,d);if(i){break a}break l}i=3;if(!Io(g,e&4194303,2)){break a}if(!Qy(g,J[f+4>>2])){break a}if(!(Zi[J[g>>2]](J[g+4>>2],J[f>>2],J[f+4>>2])|0)){break a}break l}i=3;if(!Io(g,e&4194303,0)){break a}if(Qy(g,J[f>>2])){break l}break a}i=3;if(!Io(g,e&4194303,0)){break a}if(!Qy(g,J[f>>2])){break a}}k=k+1|0;if((t|0)!=(k|0)){continue}break}}s=s+1|0;if(s>>>0>2]+4>>2];f=J[a+8>>2];J[b+80>>2]=0;a:{b:{d=J[f+4>>2];c=J[f>>2];if((d|0)!=(c|0)){d=(d-c|0)/240|0;e=d>>>0<=1?1:d;while(1){d=J[f>>2];if((J[f+4>>2]-d|0)/240>>>0<=g>>>0){break b}d=d+P(g,240)|0;c=L[d+234>>1];c:{if(!(c&4)){break c}if((c&136)==136){a=J[d+152>>2];d:{e:{if(!a){break e}h=J[a+4>>2];if(!h|(h|0)==J[a+8>>2]){break e}a=J[h+8>>2];if(a){break d}}a=J[J[J[d+148>>2]+16>>2]+8>>2]}h=J[d+200>>2];a=J[a+96>>2];if(h>>>0>=M[a+28>>2]){break a}a=J[a+24>>2];k=Q(Q(Q(m*N[d+220>>2])*N[d+228>>2])+N[d+224>>2]);N[d+224>>2]=k;if(k>=Q(1)){a=J[(a+P(h,36)|0)+24>>2];f:{if(a>>>0<=6){l=Q(1);if(1<>2]=l}c=c|16;I[d+234>>1]=c}if(!(c&16)){break c}I[d+234>>1]=c&65519;xP(d)}g=g+1|0;if((e|0)!=(g|0)){continue}break}}J[b+76>>2]=0;d=J[f+4>>2];c=J[f>>2];g:{if((d|0)==(c|0)){break g}d=(d-c|0)/240|0;n=d>>>0<=1?1:d;o=b+84|0;d=b+88|0;h=b+104|0;g=0;while(1){c=J[f>>2];if((J[f+4>>2]-c|0)/240>>>0<=g>>>0){break b}a=c+P(g,240)|0;i=L[a+234>>1];h:{if((i&12)!=12){break h}c=J[a+152>>2];i:{j:{if(!c){break j}e=J[c+4>>2];if(!e|(e|0)==J[c+8>>2]){break j}c=J[e+8>>2];if(c){break i}}c=J[J[J[a+148>>2]+16>>2]+8>>2]}e=J[a+200>>2];c=J[c+96>>2];if(e>>>0>=M[c+28>>2]){break a}c=J[(J[c+24>>2]+P(e,36)|0)+24>>2];if(!(N[a+224>>2]>=Q(1))|(c>>>0>6|!(1<>1]=i&65527;if(!(J[a+184>>2]|J[a+188>>2])){break h}i=b- -64|0;c=i;J[c>>2]=0;J[c+4>>2]=0;J[b+56>>2]=0;J[b+60>>2]=0;J[b+48>>2]=0;J[b+52>>2]=0;J[b+40>>2]=0;J[b+44>>2]=0;J[d+16>>2]=0;J[d+20>>2]=0;J[d+8>>2]=0;J[d+12>>2]=0;J[d>>2]=0;J[d+4>>2]=0;c=0;e=0;j=J[J[J[a+144>>2]+80>>2]+8>>2];k:{if(!j){break k}j=J[j>>2];if(!j){break k}c=J[j+3216>>2];e=J[j+3220>>2]}J[b+80>>2]=c;J[b+84>>2]=e;l:{if(Pp(c,e)){if(!Go(J[a+144>>2],L[a+232>>1],h)){break l}}dj(4,88458,101920,0);break g}c=J[a+144>>2];e=J[c+100>>2];J[b+56>>2]=J[c+96>>2];J[b+60>>2]=e;c=J[d+4>>2];J[b+48>>2]=J[d>>2];J[b+52>>2]=c;c=J[h+4>>2];J[i>>2]=J[h>>2];J[i+4>>2]=c;c=J[b+84>>2];J[b+40>>2]=J[b+80>>2];J[b+44>>2]=c;if(!xk(J[J[J[a+144>>2]+80>>2]+8>>2],J[a+176>>2],J[a+180>>2])){d=tj(J[a+160>>2],J[a+164>>2]);c=tj(J[a+176>>2],J[a+180>>2]);J[b+8>>2]=tj(J[a+184>>2],J[a+188>>2]);J[b+4>>2]=c;J[b>>2]=d;dj(4,88458,26560,b);break g}J[b+24>>2]=J[a+216>>2]+1;c=J[a+212>>2];J[b+32>>2]=J[a+208>>2];J[b+36>>2]=c;c=J[a+192>>2];J[d>>2]=0;J[d+4>>2]=0;J[b+80>>2]=0;J[b+84>>2]=0;e=b+80|0;lj(16,1,e,d,o);Kq(b+24|0,J[58924],e);e=J[b+80>>2];c=Fy(J[58924],e,J[b+84>>2]-e|0,b+40|0,a+160|0,c,1);m:{if(H[b+92|0]&1){break m}e=J[b+80>>2];if(!e){break m}cj(e)}J[a+192>>2]=0;H[a+160|0]=0;H[a+161|0]=0;H[a+162|0]=0;H[a+163|0]=0;H[a+164|0]=0;H[a+165|0]=0;H[a+166|0]=0;H[a+167|0]=0;H[a+184|0]=0;H[a+185|0]=0;H[a+186|0]=0;H[a+187|0]=0;H[a+188|0]=0;H[a+189|0]=0;H[a+190|0]=0;H[a+191|0]=0;H[a+176|0]=0;H[a+177|0]=0;H[a+178|0]=0;H[a+179|0]=0;H[a+180|0]=0;H[a+181|0]=0;H[a+182|0]=0;H[a+183|0]=0;H[a+168|0]=0;H[a+169|0]=0;H[a+170|0]=0;H[a+171|0]=0;H[a+172|0]=0;H[a+173|0]=0;H[a+174|0]=0;H[a+175|0]=0;if(!c){break h}dj(4,88458,101987,0)}g=g+1|0;if((n|0)!=(g|0)){continue}break}}Ps(J[f+300>>2]);a=J[f+300>>2];if(a){I[a+20>>1]=0}Ps(J[f+312>>2]);a=J[f+312>>2];if(a){I[a+20>>1]=0}J[f+332>>2]=0;Ui=b+112|0;return 0}Z(145396,53895,487,84789);B()}Z(12664,54737,96,84789);B()}function NB(a,b,c,d){var e=0,f=0,g=0,h=0,i=0,j=0;h=Ui-16|0;Ui=h;i=-3;j=c-1|0;a:{b:{e=J[a+12>>2];if(!e){break b}c=J[e>>2];if(!c){break b}c:{d:{e:{if(!(K[c+184|0]&2)){break e}if(!J[e+36>>2]){break b}f=J[e+216>>2];f:{if(!f){break f}g:{while(1){f=Zi[J[e+36>>2]](J[e+48>>2],J[e+192>>2]-f|0,f)|0;if((f|0)<=0){break g}c=-27648;g=J[e+216>>2];if(g>>>0>>0){break a}f=g-f|0;J[e+216>>2]=f;if(f){continue}break}c=J[e>>2];f=J[e+184>>2]+((J[c+184>>2]^-1)<<2&8)|0;J[e+192>>2]=f;g=J[c+184>>2]&2;c=f+(g?13:5)|0;J[e+200>>2]=c;J[e+196>>2]=f+(g?11:3);J[e+188>>2]=f+(g?3:-8);f=J[e+76>>2];if(!(!f|J[e+20>>2]<2)){c=(J[f+4>>2]+c|0)-J[f+8>>2]|0}J[e+204>>2]=c;break f}if(f){break d}}c=J[e+68>>2];if(!c|K[c+492|0]!=1){break e}f=_r(e);if(f){break d}}h:{i:{if(J[e+4>>2]!=16){break i}j:{if(J[e+8>>2]==3){break j}c=J[e>>2];f=J[c+184>>2];if(!(f&8192)){break j}g=c;c=f&2;f=(g+c|0)+164|0;g=8-c|0;if((Wj(c+J[e+104>>2]|0,f,g)|0)<=0&(Wj((c+e|0)+220|0,f,g)|0)<=0){break j}f=pH(e);if(!f){break j}if((f|0)!=-27392){break d}}if(J[e+4>>2]==16){break h}if(J[e>>2]){break i}break b}while(1){if(J[e+4>>2]==16){break h}f=J[e>>2];if(!f){break b}c=-28800;if(H[f+184|0]&1){break a}f=Zr(e);if(!f){continue}break}if((f|0)!=-27392){break d}}c=J[e+124>>2];if(!c){while(1){c=J[e+96>>2];k:{if(!c){break k}if((Zi[c|0](J[e+88>>2])|0)!=-1){break k}c=J[e+92>>2];if(!c){break k}f=J[J[e>>2]+148>>2];Zi[c|0](J[e+88>>2],f>>>2|0,f)}c=0;f=So(e);if(f){if((f|0)!=-29312){break d}break c}f=J[e+128>>2];if(!(J[e+132>>2]|(f|0)!=23)){f=So(e);if(f){if((f|0)==-29312){break c}break d}f=J[e+128>>2]}l:{m:{if((f|0)==22){n:{f=J[J[e>>2]+184>>2];if(f&1){break n}o:{if(K[J[e+120>>2]]){c=f&2;break o}c=f&2;if(J[e+168>>2]==((c?12:4)|0)){break n}}if(c){break m}c=-30464;break a}if(!(!(f&8192)|!(J[e+244>>2]|f&48))){if((f&3)==2){J[e+8>>2]=3}p:{c=iw(e);if(c){break p}f=J[J[e>>2]+184>>2];q:{if(!(f&2)|J[e+8>>2]!=3){break q}c=J[e+68>>2];if(f&1){J[c+472>>2]=1;break q}J[c+476>>2]=1}J[e+4>>2]=0;J[e+8>>2]=1;while(1){f=J[e>>2];if(!f){break b}c=-28800;if(H[f+184|0]&1){break a}c=Zr(e);if(c){break p}if(J[e+4>>2]!=16){continue}break}break m}if((c|0)!=-27392){break c}break m}c=-27648;if(J[e+20>>2]<=0){break a}J[e+208>>2]=21;J[e+212>>2]=2;H[J[e+204>>2]]=1;H[J[e+204>>2]+1|0]=100;c=Nm(e,1);if(c){break c}break m}r:{if(J[e+8>>2]!=3){break r}c=J[J[e>>2]+160>>2];if((c|0)<0){break r}g=J[e+12>>2];J[e+12>>2]=g+1;if((c|0)>(g|0)){break r}c=-30464;break a}if((f|0)!=23){c=-26880;if((f|0)==21){break a}c=-30464;break a}c=J[e+120>>2];J[e+124>>2]=c;if(J[e+4>>2]!=16){break l}c=J[e+92>>2];if(!c){break m}Zi[c|0](J[e+88>>2],0,0)}c=J[e+124>>2]}if(!c){continue}break}}g=c;c=J[e+132>>2];f=c>>>0>j>>>0?j:c;hj(b,g,f);c=J[e+132>>2];J[e+132>>2]=c-f;if((c|0)==(f|0)){J[e+176>>2]=0;J[e+124>>2]=0;c=f;break a}J[e+124>>2]=J[e+124>>2]+f}c=f;break a}break a}c=-28928}s:{t:{if((c|0)<=-26753){if((c|0)==-28672){break s}if((c|0)!=-26880){break t}break s}if((c|0)==-26752|(c|0)==-26624){break s}}i=0;u:{if((c|0)<=0){oH(J[a+12>>2]);i=-5;v:{w:{if((c|0)<=-81){if((c|0)==-30848){break s}if((c|0)==-26624){break w}if((c|0)==-26496){break s}break u}switch(c+80|0){case 0:break s;case 4:break v;default:break u}}i=-3;break s}i=-101;break s}H[b+c|0]=0;J[d>>2]=c;break s}J[h+12>>2]=0-c;J[h+8>>2]=c?45:32;J[h+4>>2]=c;J[h>>2]=Ju(c);dj(3,99340,142908,h);i=-1e3}Ui=h+16|0;return i}function tja(a){a=a|0;var b=0,c=0,d=0,e=Q(0),f=Q(0),g=Q(0),h=Q(0),i=Q(0),j=Q(0),k=0,l=Q(0),m=0,n=Q(0),o=Q(0),p=Q(0),q=Q(0),r=Q(0),s=Q(0),t=Q(0),u=Q(0),v=Q(0),w=Q(0),x=Q(0),y=Q(0),z=Q(0),A=Q(0),C=Q(0),D=Q(0),E=Q(0),F=Q(0),G=Q(0),I=Q(0),L=Q(0),M=Q(0),O=Q(0),P=Q(0),R=Q(0),S=0,T=0;d=Ui-80|0;Ui=d;m=J[a+80>>2];c=m+4|0;a:{b=J[m+12>>2];b:{if((b|0)==J[m+8>>2]){io(53249,10994,b-J[c>>2]>>2);a=-1e3;break b}S=DC(c);b=ij(nj(208),0,208);c=J[m+20>>2];if(J[m+24>>2]-c>>3>>>0<=S>>>0){break a}c=J[c+(S<<3)>>2];k=J[m+4>>2];if(c>>>0>=J[m+8>>2]-k>>2>>>0){break a}J[k+(c<<2)>>2]=b;c=J[a>>2];J[b>>2]=c;e=N[a+32>>2];l=N[a+36>>2];f=N[a+44>>2];n=N[a+40>>2];k=J[a+20>>2];T=J[a+16>>2];g=N[a+24>>2];J[b+28>>2]=0;J[b+44>>2]=0;J[b+60>>2]=0;J[b+76>>2]=1065353216;N[b+72>>2]=g;J[b+64>>2]=T;J[b+68>>2]=k;j=Q(l+l);i=Q(e*j);g=Q(n+n);h=Q(f*g);N[b+20>>2]=i+h;o=Q(e*g);p=Q(j*f);N[b+24>>2]=o-p;N[b+32>>2]=i-h;i=Q(l*g);h=f;f=Q(e+e);h=Q(h*f);N[b+40>>2]=i+h;N[b+48>>2]=o+p;N[b+52>>2]=i-h;e=Q(Q(1)-Q(e*f));f=Q(n*g);N[b+36>>2]=e-f;h=e;e=Q(l*j);N[b+56>>2]=h-e;N[b+16>>2]=Q(Q(1)-e)-f;J[b+152>>2]=J[a+76>>2];J[b+84>>2]=0;J[b+88>>2]=0;J[b+80>>2]=1065353216;J[b+92>>2]=0;J[b+96>>2]=0;J[b+104>>2]=0;J[b+108>>2]=0;J[b+100>>2]=1065353216;J[b+112>>2]=0;J[b+116>>2]=0;J[b+124>>2]=0;J[b+128>>2]=0;J[b+120>>2]=1065353216;J[b+132>>2]=0;J[b+136>>2]=0;J[b+200>>2]=0;J[b+140>>2]=1065353216;H[b+204|0]=K[b+204|0]|1;c=op(c);c:{if((K[J[b>>2]+137|0]&2)>>>1|0){e=N[b+76>>2];l=N[b+72>>2];f=N[b+64>>2];n=N[b+68>>2];g=N[b+28>>2];j=N[b+24>>2];i=N[b+16>>2];h=N[b+20>>2];o=N[b+44>>2];p=N[b+40>>2];q=N[b+32>>2];r=N[b+36>>2];s=N[c+48>>2];t=N[c+32>>2];u=N[c>>2];v=N[c+16>>2];w=N[c+52>>2];x=N[c+36>>2];y=N[c+4>>2];z=N[c+20>>2];A=N[c+56>>2];C=N[c+40>>2];D=N[c+8>>2];E=N[c+24>>2];F=N[c+60>>2];G=N[b+60>>2];I=N[c+44>>2];L=N[b+56>>2];M=N[c+12>>2];O=N[b+48>>2];P=N[c+28>>2];R=N[b+52>>2];N[b+124>>2]=Q(F*G)+Q(Q(I*L)+Q(Q(M*O)+Q(P*R)));N[b+120>>2]=Q(A*G)+Q(Q(C*L)+Q(Q(D*O)+Q(E*R)));N[b+116>>2]=Q(w*G)+Q(Q(x*L)+Q(Q(y*O)+Q(z*R)));N[b+112>>2]=Q(s*G)+Q(Q(t*L)+Q(Q(u*O)+Q(v*R)));N[b+108>>2]=Q(F*o)+Q(Q(I*p)+Q(Q(M*q)+Q(P*r)));N[b+104>>2]=Q(A*o)+Q(Q(C*p)+Q(Q(D*q)+Q(E*r)));N[b+100>>2]=Q(w*o)+Q(Q(x*p)+Q(Q(y*q)+Q(z*r)));N[b+96>>2]=Q(s*o)+Q(Q(t*p)+Q(Q(u*q)+Q(v*r)));N[b+92>>2]=Q(F*g)+Q(Q(I*j)+Q(Q(M*i)+Q(h*P)));N[b+88>>2]=Q(A*g)+Q(Q(C*j)+Q(Q(D*i)+Q(h*E)));N[b+84>>2]=Q(w*g)+Q(Q(x*j)+Q(Q(y*i)+Q(h*z)));N[b+80>>2]=Q(s*g)+Q(Q(t*j)+Q(Q(u*i)+Q(v*h)));g=Q(Q(F*e)+Q(Q(I*l)+Q(Q(M*f)+Q(P*n))));j=Q(Q(A*e)+Q(Q(C*l)+Q(Q(D*f)+Q(E*n))));i=Q(Q(w*e)+Q(Q(x*l)+Q(Q(y*f)+Q(z*n))));e=Q(Q(s*e)+Q(Q(t*l)+Q(Q(u*f)+Q(v*n))));break c}Jp(d,c,b+16|0);N[b+80>>2]=N[d>>2];N[b+84>>2]=N[d+4>>2];N[b+88>>2]=N[d+8>>2];N[b+92>>2]=N[d+12>>2];N[b+96>>2]=N[d+16>>2];N[b+100>>2]=N[d+20>>2];N[b+104>>2]=N[d+24>>2];N[b+108>>2]=N[d+28>>2];N[b+112>>2]=N[d+32>>2];N[b+116>>2]=N[d+36>>2];N[b+120>>2]=N[d+40>>2];N[b+124>>2]=N[d+44>>2];g=N[d+60>>2];j=N[d+56>>2];i=N[d+52>>2];e=N[d+48>>2]}N[b+140>>2]=g;N[b+136>>2]=j;N[b+132>>2]=i;N[b+128>>2]=e;c=J[b+192>>2];if(!c){c=J[J[b+152>>2]+8>>2]}if(J[J[c>>2]+168>>2]==1){c=J[b+156>>2];if(!c){c=J[J[b+152>>2]+4>>2]}J[d>>2]=0;J[d+4>>2]=0;J[d+16>>2]=0;J[d+8>>2]=0;J[d+12>>2]=0;k=d+76|0;Fr(J[c+4>>2],k);Ek(d,c+4|0,4);Ek(d,k,4);k=mn(d);J[b+200>>2]=k;vQ(m,c,k)}ZP(b);J[J[a+88>>2]>>2]=S;a=0}Ui=d+80|0;return a|0}Z(145396,53895,487,84789);B()}function Yx(a,b){var c=Q(0),d=Q(0),e=Q(0),f=Q(0),g=0,h=Q(0),i=Q(0),j=Q(0),k=Q(0),l=Q(0),m=Q(0),n=Q(0),o=Q(0),p=Q(0),q=0,r=0,s=0,t=Q(0),u=Q(0),v=Q(0),w=Q(0),x=Q(0),y=Q(0),z=Q(0),A=Q(0),C=Q(0),D=Q(0),E=Q(0),F=Q(0),G=Q(0),H=Q(0),I=0,K=Q(0);q=Ui-32|0;Ui=q;r=J[b+160>>2];a:{b:{if((r|0)!=J[b+176>>2]){e=N[b+164>>2];break b}e=N[b+164>>2];if(J[b+180>>2]!=J[b+164>>2]){break b}if(J[b+168>>2]==J[b+184>>2]){break a}}N[b+180>>2]=e;J[b+176>>2]=r;N[b+188>>2]=N[b+172>>2];c=N[b+168>>2];N[b+184>>2]=c;N[q+8>>2]=c;N[q+4>>2]=e;J[q>>2]=r;Kn(q+16|0,q);r=J[q+16>>2];g=J[q+20>>2];s=J[q+28>>2];J[b+24>>2]=J[q+24>>2];J[b+28>>2]=s;J[b+16>>2]=r;J[b+20>>2]=g}J[b+456>>2]=1065353216;J[b+460>>2]=1065353216;J[b+448>>2]=1065353216;J[b+452>>2]=1065353216;A=N[b+40>>2];i=N[b+36>>2];j=N[b+32>>2];u=N[b+8>>2];D=N[b+4>>2];E=N[b>>2];c:{r=J[a+352>>2];d:{if((r|0)==2){c=Q(1);f=Q(1);e=Q(1);C=Q(1);break d}e:{f:{if(!r){break f}g=L[b+656>>1];if((g|0)==65535){break f}s=J[a+32>>2];if(g>>>0>=(J[a+36>>2]-s|0)/672>>>0){break c}g=s+P(g,672)|0;C=N[g+452>>2];e=N[g+448>>2];break e}g=J[a+12>>2];C=Q(Q(M[g+24>>2])/Q(M[a+380>>2]));e=Q(Q(M[g+20>>2])/Q(M[a+376>>2]));if(L[b+656>>1]==65535|r){break e}c=Q(1);f=Q(1);break d}f=e;c=C;g:{h:{i:{j:{g=J[b+476>>2];switch(g>>>16&3){case 1:break i;case 0:break j;default:break g}}s=eC}f=s?e:c;c=f}s=J[a+12>>2];k:{l:{if(!r){break l}I=L[b+656>>1];if((I|0)==65535){break l}k=Q(0);if((J[a+36>>2]-J[a+32>>2]|0)/672>>>0>I>>>0){break k}break c}l=Q(Q(Q(M[s+24>>2])-Q(c*Q(M[a+380>>2])))*Q(.5));k=Q(Q(Q(M[s+20>>2])-Q(f*Q(M[a+376>>2])))*Q(.5))}N[b+452>>2]=c;N[b+448>>2]=f;a=(g>>>10&3)-1>>>0<2;D=Q(Q(D*(a?C:c))+(a?Q(0):l));a=(g>>>8&3)-1>>>0<2;E=Q(Q(E*(a?e:f))+(a?Q(0):k));u=Q(u+Q(0))}N[b+440>>2]=u;N[b+436>>2]=D;N[b+432>>2]=E;k=N[b+16>>2];m=Q(k+k);t=N[b+24>>2];l=Q(t+t);d=Q(k*l);p=N[b+20>>2];n=Q(p+p);o=N[b+28>>2];h=Q(n*o);v=Q(d-h);w=Q(v*Q(0));x=Q(Q(1)-Q(k*m));y=Q(p*n);z=Q(x-y);F=Q(p*l);G=Q(m*o);m=Q(F+G);H=Q(m*Q(0));p=Q(Q(z*A)+Q(w+H));N[b+424>>2]=p;z=Q(z*Q(0));c=Q(i*c);m=Q(z+Q(w+Q(m*c)));N[b+408>>2]=m;f=Q(j*f);w=Q(z+Q(Q(v*f)+H));N[b+392>>2]=w;i=Q(F-G);n=Q(k*n);o=Q(o*l);j=Q(n+o);v=Q(j*Q(0));l=Q(t*l);t=Q(x-l);x=Q(t*Q(0));k=Q(Q(i*A)+Q(v+x));N[b+420>>2]=k;d=Q(d+h);h=Q(Q(Q(1)-y)-l);y=Q(h*Q(0));n=Q(n-o);o=Q(n*Q(0));A=Q(Q(d*A)+Q(y+o));N[b+416>>2]=A;i=Q(i*Q(0));l=Q(i+Q(v+Q(t*c)));N[b+404>>2]=l;d=Q(d*Q(0));t=Q(d+Q(y+Q(n*c)));N[b+400>>2]=t;n=Q(i+Q(Q(j*f)+x));N[b+388>>2]=n;f=Q(d+Q(Q(h*f)+o));N[b+384>>2]=f;if(!(L[b+656>>1]==65535|(r|0)!=1)){o=Q(u*Q(0));c=Q(E*Q(0));v=Q(D*Q(0));j=Q(c+v);i=N[b+444>>2];N[b+444>>2]=Q(o+j)+i;i=Q(i*Q(0));N[b+440>>2]=i+Q(u+j);u=Q(p*Q(0));x=Q(A*Q(0));y=Q(k*Q(0));d=Q(x+y);j=N[b+428>>2];N[b+428>>2]=Q(u+d)+j;j=Q(j*Q(0));N[b+424>>2]=j+Q(p+d);p=Q(m*Q(0));z=Q(t*Q(0));F=Q(l*Q(0));h=Q(z+F);d=N[b+412>>2];N[b+412>>2]=Q(p+h)+d;d=Q(d*Q(0));N[b+408>>2]=d+Q(m+h);m=Q(w*Q(0));G=Q(f*Q(0));H=Q(n*Q(0));K=Q(G+H);h=N[b+396>>2];N[b+396>>2]=Q(m+K)+h;h=Q(h*Q(0));N[b+392>>2]=h+Q(w+K);w=c;c=Q(Q(1)/C);N[b+436>>2]=i+Q(o+Q(w+Q(c*D)));e=Q(Q(1)/e);N[b+432>>2]=i+Q(o+Q(Q(e*E)+v));N[b+420>>2]=j+Q(u+Q(x+Q(c*k)));N[b+416>>2]=j+Q(u+Q(Q(e*A)+y));N[b+404>>2]=d+Q(p+Q(z+Q(c*l)));N[b+400>>2]=d+Q(p+Q(Q(e*t)+F));N[b+388>>2]=h+Q(m+Q(G+Q(c*n)));N[b+384>>2]=h+Q(m+Q(Q(e*f)+H))}J[b+476>>2]=J[b+476>>2]&-4194305;Ui=q+32|0;return}Z(145396,53895,487,84789);B()}function hA(a,b,c,d){var e=0,f=0,g=0,h=0,i=0,j=0;if(a>>>0>=16){while(1){e=ixa(J[b>>2],0,d,0);g=Yi;e=e+f|0;h=e+J[c>>2]|0;J[c>>2]=h;i=ixa(J[b+4>>2],0,d,0);j=Yi;f=((e>>>0>>0)+g|0)+(e>>>0>h>>>0)|0;e=i+f|0;g=e+J[c+4>>2]|0;J[c+4>>2]=g;h=ixa(J[b+8>>2],0,d,0);i=Yi;f=((e>>>0>>0)+j|0)+(e>>>0>g>>>0)|0;e=h+f|0;g=e+J[c+8>>2]|0;J[c+8>>2]=g;h=ixa(J[b+12>>2],0,d,0);j=Yi;f=((e>>>0>>0)+i|0)+(e>>>0>g>>>0)|0;e=h+f|0;g=e+J[c+12>>2]|0;J[c+12>>2]=g;h=ixa(J[b+16>>2],0,d,0);i=Yi;f=((e>>>0>>0)+j|0)+(e>>>0>g>>>0)|0;e=h+f|0;g=e+J[c+16>>2]|0;J[c+16>>2]=g;h=ixa(J[b+20>>2],0,d,0);j=Yi;f=((e>>>0>>0)+i|0)+(e>>>0>g>>>0)|0;e=h+f|0;g=e+J[c+20>>2]|0;J[c+20>>2]=g;h=ixa(J[b+24>>2],0,d,0);i=Yi;f=((e>>>0>>0)+j|0)+(e>>>0>g>>>0)|0;e=h+f|0;g=e+J[c+24>>2]|0;J[c+24>>2]=g;h=ixa(J[b+28>>2],0,d,0);j=Yi;f=((e>>>0>>0)+i|0)+(e>>>0>g>>>0)|0;e=h+f|0;g=e+J[c+28>>2]|0;J[c+28>>2]=g;h=ixa(J[b+32>>2],0,d,0);i=Yi;f=((e>>>0>>0)+j|0)+(e>>>0>g>>>0)|0;e=h+f|0;g=e+J[c+32>>2]|0;J[c+32>>2]=g;h=ixa(J[b+36>>2],0,d,0);j=Yi;f=((e>>>0>>0)+i|0)+(e>>>0>g>>>0)|0;e=h+f|0;g=e+J[c+36>>2]|0;J[c+36>>2]=g;h=ixa(J[b+40>>2],0,d,0);i=Yi;f=((e>>>0>>0)+j|0)+(e>>>0>g>>>0)|0;e=h+f|0;g=e+J[c+40>>2]|0;J[c+40>>2]=g;h=ixa(J[b+44>>2],0,d,0);j=Yi;f=((e>>>0>>0)+i|0)+(e>>>0>g>>>0)|0;e=h+f|0;g=e+J[c+44>>2]|0;J[c+44>>2]=g;h=ixa(J[b+48>>2],0,d,0);i=Yi;f=((e>>>0>>0)+j|0)+(e>>>0>g>>>0)|0;e=h+f|0;g=e+J[c+48>>2]|0;J[c+48>>2]=g;h=ixa(J[b+52>>2],0,d,0);j=Yi;f=((e>>>0>>0)+i|0)+(e>>>0>g>>>0)|0;e=h+f|0;g=e+J[c+52>>2]|0;J[c+52>>2]=g;h=ixa(J[b+56>>2],0,d,0);i=Yi;f=((e>>>0>>0)+j|0)+(e>>>0>g>>>0)|0;e=h+f|0;g=e+J[c+56>>2]|0;J[c+56>>2]=g;h=ixa(J[b+60>>2],0,d,0);f=((e>>>0>>0)+i|0)+(e>>>0>g>>>0)|0;e=h+f|0;g=e+J[c+60>>2]|0;J[c+60>>2]=g;f=(Yi+(e>>>0>>0)|0)+(e>>>0>g>>>0)|0;c=c- -64|0;b=b- -64|0;a=a-16|0;if(a>>>0>15){continue}break}}if(a>>>0>=8){while(1){e=ixa(J[b>>2],0,d,0);g=Yi;e=e+f|0;h=e+J[c>>2]|0;J[c>>2]=h;i=ixa(J[b+4>>2],0,d,0);j=Yi;f=((e>>>0>>0)+g|0)+(e>>>0>h>>>0)|0;e=i+f|0;g=e+J[c+4>>2]|0;J[c+4>>2]=g;h=ixa(J[b+8>>2],0,d,0);i=Yi;f=((e>>>0>>0)+j|0)+(e>>>0>g>>>0)|0;e=h+f|0;g=e+J[c+8>>2]|0;J[c+8>>2]=g;h=ixa(J[b+12>>2],0,d,0);j=Yi;f=((e>>>0>>0)+i|0)+(e>>>0>g>>>0)|0;e=h+f|0;g=e+J[c+12>>2]|0;J[c+12>>2]=g;h=ixa(J[b+16>>2],0,d,0);i=Yi;f=((e>>>0>>0)+j|0)+(e>>>0>g>>>0)|0;e=h+f|0;g=e+J[c+16>>2]|0;J[c+16>>2]=g;h=ixa(J[b+20>>2],0,d,0);j=Yi;f=((e>>>0>>0)+i|0)+(e>>>0>g>>>0)|0;e=h+f|0;g=e+J[c+20>>2]|0;J[c+20>>2]=g;h=ixa(J[b+24>>2],0,d,0);i=Yi;f=((e>>>0>>0)+j|0)+(e>>>0>g>>>0)|0;e=h+f|0;g=e+J[c+24>>2]|0;J[c+24>>2]=g;h=ixa(J[b+28>>2],0,d,0);f=((e>>>0>>0)+i|0)+(e>>>0>g>>>0)|0;e=h+f|0;g=e+J[c+28>>2]|0;J[c+28>>2]=g;f=(Yi+(e>>>0>>0)|0)+(e>>>0>g>>>0)|0;c=c+32|0;b=b+32|0;a=a-8|0;if(a>>>0>7){continue}break}}a:{if(!a){break a}e=d;if(a&1){d=ixa(J[b>>2],0,e,0);d=d+f|0;h=d+J[c>>2]|0;J[c>>2]=h;f=(Yi+(d>>>0>>0)|0)+(d>>>0>h>>>0)|0;c=c+4|0;b=b+4|0;d=a-1|0}else{d=a}if((a|0)==1){break a}while(1){a=ixa(J[b>>2],0,e,0);g=Yi;a=a+f|0;h=a+J[c>>2]|0;J[c>>2]=h;i=ixa(J[b+4>>2],0,e,0);f=((a>>>0>>0)+g|0)+(a>>>0>h>>>0)|0;a=i+f|0;g=a+J[c+4>>2]|0;J[c+4>>2]=g;f=(Yi+(a>>>0>>0)|0)+(a>>>0>g>>>0)|0;c=c+8|0;b=b+8|0;d=d-2|0;if(d){continue}break}}a=J[c>>2];b=a+f|0;J[c>>2]=b;if(a>>>0>b>>>0){while(1){a=J[c+4>>2]+1|0;J[c+4>>2]=a;c=c+4|0;if(!a){continue}break}}}function Jia(a){a=a|0;var b=0,c=0,d=0,e=0,f=0,g=0,h=Q(0),i=0,j=0,k=0,l=0,m=Q(0),n=0,o=Q(0),p=0,q=0,r=Q(0),s=0,t=Q(0),u=Q(0),v=0,w=0,x=0,y=0,z=Q(0),A=0,C=0,D=0,E=0;k=J[a+8>>2];J[k+112>>2]=0;H[k+132|0]=K[k+132|0]&254;a:{b=J[k+4>>2];c=J[k>>2];if((b|0)!=(c|0)){c=(b-c|0)/40|0;y=c>>>0<=1?1:c;while(1){c=J[k>>2];if((J[k+4>>2]-c|0)/40>>>0<=q>>>0){break a}s=c+P(q,40)|0;c=J[s+20>>2];if((c|0)==J[a+4>>2]){n=J[k+84>>2];r=Q(0);b:{c:{p=J[s+16>>2];if(p){c=p&65535;b=J[n>>2];if(c>>>0>=J[n+4>>2]-b>>2>>>0){break a}d=J[b+(c<<2)>>2];if(L[d+80>>1]==(p>>>16|0)){break c}dj(4,96107,66969,0)}break b}c=J[d+72>>2];if(c){cj(c);J[d+16>>2]=0;J[d+72>>2]=0}l=J[d+64>>2];j=J[l+16>>2];d:{e:{f:{g:{e=(J[l+4>>2]-J[l>>2]|0)/18568|0;g=J[d+4>>2]-J[d>>2]|0;f=(g|0)/304|0;h:{if((e|0)==(f|0)){break h}if(e>>>0>>0){c=e;while(1){b=J[d>>2];if((J[d+4>>2]-b|0)/304>>>0<=c>>>0){break a}b=b+P(c,304)|0;if(H[b+68|0]&1){break e}b=b+56|0;lj(0,160,b,b+8|0,b+4|0);c=c+1|0;if((f|0)!=(c|0)){continue}break}}if(H[d+12|0]&1){break e}lj(e,304,d,d+8|0,d+4|0);c=J[d>>2];if(e>>>0>(J[d+8>>2]-c|0)/304>>>0){break g}J[d+4>>2]=c+P(e,304);if(e>>>0<=f>>>0){break h}ij(c+g|0,0,P(e-f|0,304));b=zs();c=f;while(1){i=J[d>>2];if((J[d+4>>2]-i|0)/304>>>0<=c>>>0){break a}g=L[n+54>>1];I[n+54>>1]=g+1;if(M[j+4>>2]<=c>>>0){break d}i=i+P(c,304)|0;g=g+(c+b|0)|0;zC(i,J[j>>2]+P(c,160)|0,g);J[i+276>>2]=g;c=c+1|0;if((e|0)!=(c|0)){continue}break}}f=e>>>0>f>>>0?f:e;if(f){c=0;while(1){b=J[d>>2];if((J[d+4>>2]-b|0)/304>>>0<=c>>>0){break a}if(M[j+4>>2]<=c>>>0){break d}b=b+P(c,304)|0;zC(b,J[j>>2]+P(c,160)|0,J[b+272>>2]);c=c+1|0;if((f|0)!=(c|0)){continue}break}}g=J[d+4>>2];i=J[d>>2];j=(g-i|0)/304|0;if((g|0)==(i|0)){J[d+76>>2]=0;tM(n,p);break b}e=j>>>0<=1?1:j;f=J[l>>2];if(e-1>>>0>=(J[l+4>>2]-f|0)/18568>>>0){break a}z=N[d+76>>2];c=0;while(1){h=z;b=i+P(c,304)|0;t=N[b+288>>2];m=N[b+284>>2];u=N[(f+P(c,18568)|0)+18564>>2];if(h>Q(t+Q(m+u))){o=Q(Q(1)/m);h=Q(o*Q(h-t));i:{if(h=Q(0)){b=~~h>>>0;break i}b=0}h=Q(h-Q(b>>>0));o=Q(o*u);j:{if(o=Q(0)){b=~~o>>>0;break j}b=0}h=Q(Q(m*Q(h+Q(b+1>>>0)))+t)}r=h>2]=r;if((g|0)!=(i|0)){A=j>>>0<=1?1:j;c=0;while(1){f=J[d>>2];if((J[d+4>>2]-f|0)/304>>>0<=c>>>0){break a}v=J[l>>2];if((J[l+4>>2]-v|0)/18568>>>0<=c>>>0){break a}b=J[l+16>>2];if(M[b+4>>2]<=c>>>0){break d}C=J[b>>2];b=f+P(c,304)|0;w=J[b+272>>2];D=J[b+284>>2];E=J[b+288>>2];m=N[b+292>>2];x=J[b+56>>2];j=J[b+64>>2];g=K[b+68|0];f=J[b+128>>2];e=J[b+132>>2];i=e;b=ij(b,0,304);J[b+128>>2]=f;J[b+132>>2]=e;H[b+68|0]=g&1;J[b+64>>2]=j;J[b+56>>2]=x;N[b+292>>2]=m;J[b+284>>2]=D;J[b+288>>2]=E;J[b+276>>2]=w;J[b+272>>2]=w;J[b+60>>2]=x;m=N[d+76>>2];J[b+280>>2]=1;g=J[d+72>>2];if(g){e=J[d+16>>2]+1|0;J[d+16>>2]=e;Zi[J[d+68>>2]](e,f,i,1,g);e=K[b+296|0]}else{e=0}H[b+296|0]=e&251;h=Q(0);if(m>Q(0)){e=v+P(c,18568)|0;f=C+P(c,160)|0;while(1){wC(d,e,b,f,Q(.01666666753590107));h=Q(h+Q(.01666666753590107));if(m>h){continue}break}}c=c+1|0;if((A|0)!=(c|0)){continue}break}}tM(n,p);break b}Z(151729,53895,501,2284);B()}Z(12664,55442,270,84789);B()}c=J[s+20>>2]}J[k+112>>2]=J[k+112>>2]+((J[c+4>>2]-J[c>>2]|0)/18568|0);q=q+1|0;if((y|0)!=(q|0)){continue}break}}return}Z(145396,53895,487,84789);B()}function RI(a,b,c){var d=0,e=0,f=0,g=0,h=0,i=0,j=0,k=0,l=0,m=0,n=0,o=0,p=0,q=Q(0);k=(c<<1&-4)+7&-8;j=J[a+8>>2];h=((b<<2)+a|0)+1080|0;g=J[a+92>>2];a:{if(g){e=J[a+100>>2];f=e+k|0;i=0;if((f|0)>J[a+104>>2]){break a}J[a+100>>2]=f;i=e+g|0;break a}i=0;if(!k){break a}i=sj(k)}J[h>>2]=i;m=(k<<1)+j|0;j=((b<<2)+a|0)+1088|0;h=J[a+92>>2];b:{if(h){g=J[a+100>>2];f=g+k|0;e=0;if((f|0)>J[a+104>>2]){break b}J[a+100>>2]=f;e=g+h|0;break b}e=0;if(!k){break b}e=sj(k)}J[j>>2]=e;g=(c&-4)+7&-8;p=g+m|0;J[a+8>>2]=p;m=((b<<2)+a|0)+1096|0;j=J[a+92>>2];c:{if(j){h=J[a+100>>2];g=h+g|0;f=0;if((g|0)>J[a+104>>2]){break c}J[a+100>>2]=g;f=h+j|0;break c}f=0;if(!g){break c}f=sj(g)}J[m>>2]=f;d:{if(!f|(!i|!e)){break d}m=c>>2;if((m|0)>0){o=+(c>>>0);while(1){j=d<<2;l=+(n<<2>>>0)*3.141592653589793/o;N[i+j>>2]=Vy(l);h=d|1;g=h<<2;N[i+g>>2]=-Q(Ur(l));l=+(h>>>0)*3.141592653589793/o*.5;N[e+j>>2]=Q(Vy(l))*Q(.5);N[e+g>>2]=Q(Ur(l))*Q(.5);d=d+2|0;n=n+1|0;if((m|0)!=(n|0)){continue}break}}j=c>>3;if((j|0)>0){o=+(c>>>0);d=0;n=0;while(1){e=d|1;l=+(e<<1>>>0)*3.141592653589793/o;N[f+(d<<2)>>2]=Vy(l);N[f+(e<<2)>>2]=-Q(Ur(l));d=d+2|0;n=n+1|0;if((j|0)!=(n|0)){continue}break}}h=k+p|0;J[a+8>>2]=h;e:{d=((b<<2)+a|0)+1104|0;f:{g:{i=J[a+92>>2];h:{if(i){e=J[a+100>>2];f=e+k|0;if((f|0)>J[a+104>>2]){break h}J[a+100>>2]=f;f=e+i|0;break f}if(k){break g}}d=1104;break e}f=sj(k)}J[d>>2]=f;if(!f){break d}e=c>>1;if((e|0)>0){l=+(e>>>0);d=0;while(1){q=Q(Ur((+(d>>>0)+.5)/l*.5*3.141592653589793));N[f+(d<<2)>>2]=Ur(+Q(q*q)*1.5707963267948966);d=d+1|0;if((e|0)!=(d|0)){continue}break}}f=(m&-2)+7&-8;J[a+8>>2]=f+h;d=((b<<2)+a|0)+1112|0;i=J[a+92>>2];i:{if(i){e=J[a+100>>2];f=e+f|0;if((f|0)>J[a+104>>2]){d=1112;break e}J[a+100>>2]=f;b=e+i|0;break i}if(!f){d=1112;break e}b=sj(f)}J[d>>2]=b;if(!b){break d}a=0;j:{if((c|0)<0){break j}if(c>>>0<=16383){a=H[c+197376|0];if(c>>>0<=15){break j}a=H[(c>>>5|0)+197376|0]+5|0;if(c>>>0<=511){break j}a=H[(c>>>10|0)+197376|0]+10|0;break j}if(c>>>0<=16777215){a=H[(c>>>15|0)+197376|0]+15|0;if(c>>>0<=524287){break j}a=H[(c>>>20|0)+197376|0]+20|0;break j}a=H[(c>>>25|0)+197376|0]+25|0;if(c>>>0<=536870911){break j}a=H[(c>>>30|0)+197376|0]+30|0}k:{if((j|0)<=0){break k}h=36-a|0;i=0;d=0;if(j>>>0>=4){f=j&2147483644;c=0;while(1){g=d>>>8&65280|d>>>24;a=g|(d<<24|(d&65280)<<8);a=a>>>4&252645135|(a&252645135)<<4;a=a>>>2&858993459|(a&858993459)<<2;I[b+(d<<1)>>1]=(a>>>1&1431655765|(a&1431655765)<<1)>>>h<<2;e=d|1;a=g|(e<<24|(e&65280)<<8);a=a>>>4&252645135|(a&252645135)<<4;a=a>>>2&858993459|(a&858993459)<<2;I[b+(e<<1)>>1]=(a>>>1&1431655765|(a&1431655765)<<1)>>>h<<2;e=d|2;a=g|(e<<24|(e&65280)<<8);a=a>>>4&252645135|(a&252645135)<<4;a=a>>>2&858993459|(a&858993459)<<2;I[b+(e<<1)>>1]=(a>>>1&1431655765|(a&1431655765)<<1)>>>h<<2;e=d|3;a=g|(e<<24|(e&65280)<<8);a=a>>>4&252645135|(a&252645135)<<4;a=a>>>2&858993459|(a&858993459)<<2;I[b+(e<<1)>>1]=(a>>>1&1431655765|(a&1431655765)<<1)>>>h<<2;d=d+4|0;c=c+4|0;if((f|0)!=(c|0)){continue}break}}c=j&3;if(!c){break k}while(1){a=d<<24|(d&65280)<<8|(d>>>8&65280|d>>>24);a=a>>>4&252645135|(a&252645135)<<4;a=a>>>2&858993459|(a&858993459)<<2;I[b+(d<<1)>>1]=(a>>>1&1431655765|(a&1431655765)<<1)>>>h<<2;d=d+1|0;i=i+1|0;if((c|0)!=(i|0)){continue}break}}return 1}J[(a+d|0)+(b<<2)>>2]=0}J[a+112>>2]=3;return 0}function OO(a,b,c,d,e){var f=0,g=Q(0),h=0,i=Q(0),j=Q(0),k=Q(0),l=Q(0),m=Q(0),n=Q(0),o=Q(0),p=Q(0),q=Q(0),r=Q(0),s=Q(0),t=Q(0),u=Q(0),v=Q(0),w=Q(0),x=Q(0),y=Q(0),z=Q(0),A=Q(0),C=Q(0),D=Q(0),E=Q(0),F=Q(0),G=Q(0),M=Q(0),O=Q(0),R=Q(0),S=Q(0),T=Q(0),U=Q(0),V=Q(0),W=Q(0),X=Q(0),Y=Q(0),_=0,$=0,aa=0,ba=0,ca=0;f=Ui-80|0;Ui=f;_=L[e+18>>1];aa=L[b+664>>1];a:{if((_|0)!=(aa|0)){I[b+664>>1]=_;h=L[e+16>>1];I[e+16>>1]=h+1;I[b+662>>1]=h;break a}h=L[b+662>>1]}b:{c:{d:{ba=J[e>>2];if((J[e+4>>2]-ba|0)/80>>>0>h>>>0){$=L[b+656>>1];if(($|0)!=65535){ca=J[a+32>>2];if((J[a+36>>2]-ca|0)/672>>>0<=$>>>0){break b}OO(a,P($,672)+ca|0,f+16|0,f+12|0,e)}e=P(h,80)+ba|0;e:{if(!(K[b+478|0]&64)){if(!(H[a+374|0]&1)|J[a+352>>2]==2){break e}}Yx(a,b);break d}if((_|0)!=(aa|0)){break d}N[c>>2]=N[e>>2];N[c+4>>2]=N[e+4>>2];N[c+8>>2]=N[e+8>>2];N[c+12>>2]=N[e+12>>2];N[c+16>>2]=N[e+16>>2];N[c+20>>2]=N[e+20>>2];N[c+24>>2]=N[e+24>>2];N[c+28>>2]=N[e+28>>2];N[c+32>>2]=N[e+32>>2];N[c+36>>2]=N[e+36>>2];N[c+40>>2]=N[e+40>>2];N[c+44>>2]=N[e+44>>2];N[c+48>>2]=N[e+48>>2];N[c+52>>2]=N[e+52>>2];N[c+56>>2]=N[e+56>>2];N[c+60>>2]=N[e+60>>2];N[d>>2]=N[e+64>>2];break c}break b}N[c>>2]=N[b+384>>2];N[c+4>>2]=N[b+388>>2];N[c+8>>2]=N[b+392>>2];N[c+12>>2]=N[b+396>>2];N[c+16>>2]=N[b+400>>2];N[c+20>>2]=N[b+404>>2];N[c+24>>2]=N[b+408>>2];N[c+28>>2]=N[b+412>>2];N[c+32>>2]=N[b+416>>2];N[c+36>>2]=N[b+420>>2];N[c+40>>2]=N[b+424>>2];N[c+44>>2]=N[b+428>>2];N[c+48>>2]=N[b+432>>2];N[c+52>>2]=N[b+436>>2];N[c+56>>2]=N[b+440>>2];N[c+60>>2]=N[b+444>>2];N[d>>2]=N[b+60>>2];i=N[c+12>>2];j=N[c+8>>2];k=N[c+4>>2];g=N[c>>2];f:{if(L[b+656>>1]==65535){l=i;m=j;n=k;break f}o=N[c+28>>2];p=N[c+24>>2];q=N[c+16>>2];r=N[c+20>>2];s=N[c+44>>2];t=N[c+40>>2];u=N[c+32>>2];v=N[c+36>>2];w=N[c+60>>2];x=N[c+56>>2];y=N[c+48>>2];z=N[c+52>>2];A=N[f+64>>2];C=N[f+48>>2];D=N[f+16>>2];E=N[f+32>>2];F=N[f+68>>2];G=N[f+52>>2];M=N[f+20>>2];O=N[f+36>>2];R=N[f+72>>2];S=N[f+56>>2];T=N[f+24>>2];U=N[f+40>>2];V=N[f+76>>2];W=N[f+60>>2];X=N[f+28>>2];Y=N[f+44>>2];l=Q(Q(V*i)+Q(Q(W*j)+Q(Q(X*g)+Q(k*Y))));N[c+12>>2]=l;m=Q(Q(R*i)+Q(Q(S*j)+Q(Q(T*g)+Q(k*U))));N[c+8>>2]=m;n=Q(Q(F*i)+Q(Q(G*j)+Q(Q(M*g)+Q(k*O))));N[c+4>>2]=n;g=Q(Q(A*i)+Q(Q(C*j)+Q(Q(D*g)+Q(E*k))));N[c>>2]=g;N[c+60>>2]=Q(V*w)+Q(Q(W*x)+Q(Q(X*y)+Q(Y*z)));N[c+56>>2]=Q(R*w)+Q(Q(S*x)+Q(Q(T*y)+Q(U*z)));N[c+52>>2]=Q(F*w)+Q(Q(G*x)+Q(Q(M*y)+Q(O*z)));N[c+48>>2]=Q(A*w)+Q(Q(C*x)+Q(Q(D*y)+Q(E*z)));N[c+44>>2]=Q(V*s)+Q(Q(W*t)+Q(Q(X*u)+Q(Y*v)));N[c+40>>2]=Q(R*s)+Q(Q(S*t)+Q(Q(T*u)+Q(U*v)));N[c+36>>2]=Q(F*s)+Q(Q(G*t)+Q(Q(M*u)+Q(O*v)));N[c+32>>2]=Q(A*s)+Q(Q(C*t)+Q(Q(D*u)+Q(E*v)));N[c+28>>2]=Q(V*o)+Q(Q(W*p)+Q(Q(X*q)+Q(Y*r)));N[c+24>>2]=Q(R*o)+Q(Q(S*p)+Q(Q(T*q)+Q(U*r)));N[c+20>>2]=Q(F*o)+Q(Q(G*p)+Q(Q(M*q)+Q(O*r)));N[c+16>>2]=Q(A*o)+Q(Q(C*p)+Q(Q(D*q)+Q(E*r)));if(!(K[b+478|0]&128)){break f}N[d>>2]=N[f+12>>2]*N[d>>2];l=N[c+12>>2];m=N[c+8>>2];n=N[c+4>>2];g=N[c>>2]}N[e+12>>2]=l;N[e+8>>2]=m;N[e+4>>2]=n;N[e>>2]=g;N[e+16>>2]=N[c+16>>2];N[e+20>>2]=N[c+20>>2];N[e+24>>2]=N[c+24>>2];N[e+28>>2]=N[c+28>>2];N[e+32>>2]=N[c+32>>2];N[e+36>>2]=N[c+36>>2];N[e+40>>2]=N[c+40>>2];N[e+44>>2]=N[c+44>>2];N[e+48>>2]=N[c+48>>2];N[e+52>>2]=N[c+52>>2];N[e+56>>2]=N[c+56>>2];N[e+60>>2]=N[c+60>>2];N[e+64>>2]=N[d>>2]}Ui=f+80|0;return}Z(145396,53895,487,84789);B()}function uK(a,b){var c=0,d=0,e=Q(0),f=Q(0),g=Q(0),h=0,i=Q(0),j=0,k=Q(0),l=Q(0),m=0,n=Q(0),o=Q(0),p=0,q=Q(0),r=Q(0),s=0,t=0,u=0,v=Q(0),w=Q(0),x=Q(0),y=Q(0),z=Q(0),A=Q(0),C=Q(0),D=Q(0);a:{b:{c:{c=K[a+186|0];d:{if(!(c&4)){break d}u=c&1;m=(u<<5)+a|0;if(!(H[m+28|0]&1)|!J[m>>2]){break d}j=J[a+76>>2];c=J[a+116>>2];p=J[a+112>>2];if((c|0)!=(p|0)){c=(c-p|0)/176|0;s=c>>>0<=1?1:c;t=J[j+4>>2];while(1){if((h|0)==(t|0)){break c}c=p+P(h,176)|0;d=J[j>>2]+P(h,192)|0;N[c>>2]=N[d+32>>2];N[c+4>>2]=N[d+36>>2];N[c+8>>2]=N[d+40>>2];N[c+12>>2]=N[d+44>>2];N[c+16>>2]=N[d+48>>2];N[c+20>>2]=N[d+52>>2];N[c+24>>2]=N[d+56>>2];N[c+32>>2]=N[d+64>>2];N[c+36>>2]=N[d+68>>2];e=N[d+72>>2];J[c+88>>2]=1065353216;J[c+80>>2]=1065353216;J[c+84>>2]=1065353216;J[c+72>>2]=0;J[c+64>>2]=0;J[c+68>>2]=0;J[c+56>>2]=0;J[c+60>>2]=1065353216;J[c+48>>2]=0;J[c+52>>2]=0;N[c+40>>2]=e;h=h+1|0;if((s|0)!=(h|0)){continue}break}}c=J[a+132>>2];d=J[a+128>>2];if((c|0)!=(d|0)){c=c-d>>3;h=c>>>0<=1?1:c;p=J[j+12>>2];c=0;while(1){if((c|0)==(p|0)){break b}s=d+(c<<3)|0;t=J[j+8>>2]+(c<<5)|0;N[s>>2]=N[t+24>>2];H[s+4|0]=K[t+20|0];c=c+1|0;if((h|0)!=(c|0)){continue}break}}d=K[a+186|0];e:{if(!(d&2)){c=d;break e}e=Q(b+N[a+180>>2]);N[a+180>>2]=e;if(!(e>=N[a+176>>2])){c=d;break e}c=d&253;H[a+186|0]=c;d=(((d^-1)&1)<<5)+a|0;H[d+28|0]=K[d+28|0]&254}f:{if(c&2){e=Q(N[a+180>>2]/N[a+176>>2]);g=Q(Q(1)-e);OB(a,a,b,u?g:e);PB(a,a,J[a+112>>2],J[a+116>>2],Q(1));c=a+32|0;q=b;b=u?e:g;OB(a,c,q,b);PB(a,c,J[a+112>>2],J[a+116>>2],b);break f}OB(a,m,b,Q(1));PB(a,m,J[a+112>>2],J[a+116>>2],Q(1))}h=J[a+116>>2];d=J[a+112>>2];j=(h-d|0)/176|0;if(!(!(K[a+186|0]&2)|(d|0)==(h|0))){m=j>>>0<=1?1:j;c=0;while(1){a=d+P(c,176)|0;e=N[a+12>>2];b=N[a+8>>2];g=N[a+4>>2];i=N[a>>2];f=Q(Q(e*e)+Q(Q(b*b)+Q(Q(g*g)+Q(i*i))));if(f>Q(.0010000000474974513)){f=Q(Q(1)/Q(Y(f)));e=Q(e*f);g=Q(g*f);i=Q(i*f);b=Q(b*f)}N[a+12>>2]=e;N[a+8>>2]=b;N[a+4>>2]=g;N[a>>2]=i;c=c+1|0;if((m|0)!=(c|0)){continue}break}}if((d|0)==(h|0)){break d}m=j>>>0<=1?1:j;h=0;while(1){a=d+P(h,176)|0;c=J[a+160>>2];g:{if((c|0)!=-1){if(c>>>0>=j>>>0){break a}c=d+P(c,176)|0;x=N[c+64>>2];y=N[c+68>>2];r=N[c+72>>2];v=N[c+88>>2];b=N[c+56>>2];e=N[c+52>>2];g=N[c+60>>2];i=N[c+48>>2];o=N[c+80>>2];z=N[a+40>>2];A=N[a+16>>2];C=N[a+24>>2];D=N[a+20>>2];f=N[a+8>>2];k=N[a+4>>2];l=N[a+12>>2];n=N[a>>2];q=N[a+32>>2];w=N[c+84>>2];N[a+84>>2]=w*N[a+36>>2];N[a+80>>2]=o*q;N[a+60>>2]=Q(Q(Q(g*l)-Q(i*n))-Q(e*k))-Q(b*f);N[a+56>>2]=Q(Q(i*k)+Q(Q(g*f)+Q(b*l)))-Q(e*n);N[a+52>>2]=Q(Q(b*n)+Q(Q(g*k)+Q(e*l)))-Q(i*f);N[a+48>>2]=Q(Q(e*f)+Q(Q(g*n)+Q(i*l)))-Q(b*k);q=r;f=Q(D*w);k=Q(A*o);l=Q(C*v);n=Q(Q(Q(g*f)+Q(b*k))-Q(i*l));o=Q(Q(b*l)+Q(Q(i*k)+Q(e*f)));r=Q(Q(Q(g*l)+Q(i*f))-Q(e*k));f=Q(Q(Q(g*k)+Q(e*l))-Q(b*f));N[a+72>>2]=q+Q(Q(i*n)+Q(Q(Q(b*o)+Q(g*r))-Q(e*f)));N[a+68>>2]=y+Q(Q(f*b)+Q(Q(Q(o*e)+Q(g*n))-Q(r*i)));N[a+64>>2]=x+Q(Q(r*e)+Q(Q(Q(o*i)+Q(g*f))-Q(n*b)));b=Q(v*z);break g}N[a+48>>2]=N[a>>2];c=J[a+8>>2];J[a+52>>2]=J[a+4>>2];J[a+56>>2]=c;c=J[a+16>>2];J[a+60>>2]=J[a+12>>2];J[a+64>>2]=c;c=J[a+24>>2];J[a+68>>2]=J[a+20>>2];J[a+72>>2]=c;c=J[a+36>>2];J[a+80>>2]=J[a+32>>2];J[a+84>>2]=c;b=N[a+40>>2]}N[a+88>>2]=b;h=h+1|0;if((m|0)!=(h|0)){continue}break}}return}Z(12664,55323,259,84789);B()}Z(12664,55323,267,84789);B()}Z(145396,53895,487,84789);B()}function swa(a,b,c,d,e,f){a=a|0;b=b|0;c=c|0;d=d|0;e=e|0;f=f|0;var g=0,h=0,i=0;h=Ui-16|0;Ui=h;i=-34;a:{if(c&15){break a}b:{if(b){i=0;if(!c){break a}if((b|0)!=1){break b}while(1){H[f|0]=K[d|0]^K[e|0];H[f+1|0]=K[d+1|0]^K[e+1|0];H[f+2|0]=K[d+2|0]^K[e+2|0];H[f+3|0]=K[d+3|0]^K[e+3|0];H[f+4|0]=K[d+4|0]^K[e+4|0];H[f+5|0]=K[d+5|0]^K[e+5|0];H[f+6|0]=K[d+6|0]^K[e+6|0];H[f+7|0]=K[d+7|0]^K[e+7|0];H[f+8|0]=K[d+8|0]^K[e+8|0];H[f+9|0]=K[d+9|0]^K[e+9|0];H[f+10|0]=K[d+10|0]^K[e+10|0];H[f+11|0]=K[d+11|0]^K[e+11|0];H[f+12|0]=K[d+12|0]^K[e+12|0];H[f+13|0]=K[d+13|0]^K[e+13|0];H[f+14|0]=K[d+14|0]^K[e+14|0];H[f+15|0]=K[d+15|0]^K[e+15|0];Bw(a,f,f);b=K[f+12|0]|K[f+13|0]<<8|(K[f+14|0]<<16|K[f+15|0]<<24);g=K[f+8|0]|K[f+9|0]<<8|(K[f+10|0]<<16|K[f+11|0]<<24);H[d+8|0]=g;H[d+9|0]=g>>>8;H[d+10|0]=g>>>16;H[d+11|0]=g>>>24;H[d+12|0]=b;H[d+13|0]=b>>>8;H[d+14|0]=b>>>16;H[d+15|0]=b>>>24;b=K[f+4|0]|K[f+5|0]<<8|(K[f+6|0]<<16|K[f+7|0]<<24);g=K[f|0]|K[f+1|0]<<8|(K[f+2|0]<<16|K[f+3|0]<<24);H[d|0]=g;H[d+1|0]=g>>>8;H[d+2|0]=g>>>16;H[d+3|0]=g>>>24;H[d+4|0]=b;H[d+5|0]=b>>>8;H[d+6|0]=b>>>16;H[d+7|0]=b>>>24;f=f+16|0;e=e+16|0;c=c-16|0;if(c){continue}break}break a}i=0;if(!c){break a}while(1){b=K[e+4|0]|K[e+5|0]<<8|(K[e+6|0]<<16|K[e+7|0]<<24);J[h>>2]=K[e|0]|K[e+1|0]<<8|(K[e+2|0]<<16|K[e+3|0]<<24);J[h+4>>2]=b;b=K[e+12|0]|K[e+13|0]<<8|(K[e+14|0]<<16|K[e+15|0]<<24);J[h+8>>2]=K[e+8|0]|K[e+9|0]<<8|(K[e+10|0]<<16|K[e+11|0]<<24);J[h+12>>2]=b;yA(a,e,f);H[f|0]=K[d|0]^K[f|0];H[f+1|0]=K[d+1|0]^K[f+1|0];H[f+2|0]=K[d+2|0]^K[f+2|0];H[f+3|0]=K[d+3|0]^K[f+3|0];H[f+4|0]=K[d+4|0]^K[f+4|0];H[f+5|0]=K[d+5|0]^K[f+5|0];H[f+6|0]=K[d+6|0]^K[f+6|0];H[f+7|0]=K[d+7|0]^K[f+7|0];H[f+8|0]=K[d+8|0]^K[f+8|0];H[f+9|0]=K[d+9|0]^K[f+9|0];H[f+10|0]=K[d+10|0]^K[f+10|0];H[f+11|0]=K[d+11|0]^K[f+11|0];H[f+12|0]=K[d+12|0]^K[f+12|0];H[f+13|0]=K[d+13|0]^K[f+13|0];H[f+14|0]=K[d+14|0]^K[f+14|0];H[f+15|0]=K[d+15|0]^K[f+15|0];b=J[h+12>>2];g=J[h+8>>2];H[d+8|0]=g;H[d+9|0]=g>>>8;H[d+10|0]=g>>>16;H[d+11|0]=g>>>24;H[d+12|0]=b;H[d+13|0]=b>>>8;H[d+14|0]=b>>>16;H[d+15|0]=b>>>24;b=J[h+4>>2];g=J[h>>2];H[d|0]=g;H[d+1|0]=g>>>8;H[d+2|0]=g>>>16;H[d+3|0]=g>>>24;H[d+4|0]=b;H[d+5|0]=b>>>8;H[d+6|0]=b>>>16;H[d+7|0]=b>>>24;f=f+16|0;e=e+16|0;c=c-16|0;if(c){continue}break}break a}while(1){H[f|0]=K[d|0]^K[e|0];H[f+1|0]=K[d+1|0]^K[e+1|0];H[f+2|0]=K[d+2|0]^K[e+2|0];H[f+3|0]=K[d+3|0]^K[e+3|0];H[f+4|0]=K[d+4|0]^K[e+4|0];H[f+5|0]=K[d+5|0]^K[e+5|0];H[f+6|0]=K[d+6|0]^K[e+6|0];H[f+7|0]=K[d+7|0]^K[e+7|0];H[f+8|0]=K[d+8|0]^K[e+8|0];H[f+9|0]=K[d+9|0]^K[e+9|0];H[f+10|0]=K[d+10|0]^K[e+10|0];H[f+11|0]=K[d+11|0]^K[e+11|0];H[f+12|0]=K[d+12|0]^K[e+12|0];H[f+13|0]=K[d+13|0]^K[e+13|0];H[f+14|0]=K[d+14|0]^K[e+14|0];H[f+15|0]=K[d+15|0]^K[e+15|0];yA(a,f,f);b=K[f+12|0]|K[f+13|0]<<8|(K[f+14|0]<<16|K[f+15|0]<<24);g=K[f+8|0]|K[f+9|0]<<8|(K[f+10|0]<<16|K[f+11|0]<<24);H[d+8|0]=g;H[d+9|0]=g>>>8;H[d+10|0]=g>>>16;H[d+11|0]=g>>>24;H[d+12|0]=b;H[d+13|0]=b>>>8;H[d+14|0]=b>>>16;H[d+15|0]=b>>>24;b=K[f+4|0]|K[f+5|0]<<8|(K[f+6|0]<<16|K[f+7|0]<<24);g=K[f|0]|K[f+1|0]<<8|(K[f+2|0]<<16|K[f+3|0]<<24);H[d|0]=g;H[d+1|0]=g>>>8;H[d+2|0]=g>>>16;H[d+3|0]=g>>>24;H[d+4|0]=b;H[d+5|0]=b>>>8;H[d+6|0]=b>>>16;H[d+7|0]=b>>>24;f=f+16|0;e=e+16|0;c=c-16|0;if(c){continue}break}}Ui=h+16|0;return i|0}function kua(a,b){a=a|0;b=b|0;var c=0,d=0,e=0,f=0,g=0,h=0,i=0,j=0,k=0,l=0,m=0,n=0;c=J[a+92>>2];if(Zi[J[J[c>>2]+56>>2]](c)|0){c=J[a+92>>2];e=Zi[J[J[c>>2]+28>>2]](c)|0;f=J[e+4>>2];if((f|0)>=2){Sr(e,0,f-1|0);f=J[e+4>>2]}j=J[a+104>>2];h=f-j|0;a:{if((j|0)>=0){break a}if(J[e+8>>2]<(h|0)){if(h){d=Yj(h<<4);c=J[e+4>>2]}else{c=f}b:{if((c|0)<=0){break b}if((c|0)!=1){n=c&2147483646;while(1){m=g<<4;i=m+d|0;k=m+J[e+12>>2]|0;J[i>>2]=J[k>>2];J[i+4>>2]=J[k+4>>2];J[i+8>>2]=J[k+8>>2];J[i+12>>2]=J[k+12>>2];k=m|16;i=k+d|0;k=k+J[e+12>>2]|0;J[i>>2]=J[k>>2];J[i+4>>2]=J[k+4>>2];J[i+8>>2]=J[k+8>>2];J[i+12>>2]=J[k+12>>2];g=g+2|0;l=l+2|0;if((n|0)!=(l|0)){continue}break}}if(!(c&1)){break b}g=g<<4;c=g+d|0;g=g+J[e+12>>2]|0;J[c>>2]=J[g>>2];J[c+4>>2]=J[g+4>>2];J[c+8>>2]=J[g+8>>2];J[c+12>>2]=J[g+12>>2]}c=J[e+12>>2];if(!(c?!c|K[e+16|0]!=1:1)){J[83765]=J[83765]+1;Zi[J[61751]](J[c-4>>2])}J[e+12>>2]=d;H[e+16|0]=1;J[e+8>>2]=h}d=0;g=0-j&3;if(g){while(1){c=J[e+12>>2]+(f<<4)|0;J[c>>2]=0;J[c+4>>2]=0;J[c+8>>2]=0;J[c+12>>2]=0;f=f+1|0;d=d+1|0;if((g|0)!=(d|0)){continue}break}}if(j>>>0>4294967292){break a}while(1){c=f<<4;d=c+J[e+12>>2]|0;J[d>>2]=0;J[d+4>>2]=0;J[d+8>>2]=0;J[d+12>>2]=0;d=c+J[e+12>>2]|0;J[d+24>>2]=0;J[d+28>>2]=0;J[d+16>>2]=0;J[d+20>>2]=0;d=c+J[e+12>>2]|0;J[d+40>>2]=0;J[d+44>>2]=0;J[d+32>>2]=0;J[d+36>>2]=0;c=c+J[e+12>>2]|0;J[c+56>>2]=0;J[c+60>>2]=0;J[c+48>>2]=0;J[c+52>>2]=0;f=f+4|0;if((h|0)!=(f|0)){continue}break}}J[e+4>>2]=h;J[a+104>>2]=0;if((h|0)>0){l=0;j=0;g=0;d=0;while(1){f=J[e+12>>2]+(j<<4)|0;c=J[f+4>>2];i=g;g=J[f>>2];c:{d:{if((i|0)==(g|0)&(d|0)==(c|0)|L[g+54>>1]>1]|(L[c+54>>1]>1]|L[g+56>>1]>1])){break d}if(L[c+56>>1]>1]|L[g+58>>1]>1]){break d}if(L[c+58>>1]>=L[g+52>>1]){break c}}h=J[a+92>>2];Zi[J[J[h>>2]+32>>2]](h,f,b);J[f>>2]=0;J[f+4>>2]=0;l=J[a+104>>2]+1|0;J[a+104>>2]=l;J[83475]=J[83475]-1;h=J[e+4>>2]}d=c;j=j+1|0;if((j|0)<(h|0)){continue}break}if((h|0)>=2){Sr(e,0,h-1|0);l=J[a+104>>2];h=J[e+4>>2]}c=h-l|0;e:{if((l|0)>=0){break e}if((c|0)>J[e+8>>2]){d=0;f:{if((h|0)==(l|0)){break f}d=Yj(c<<4);f=J[e+4>>2];if((f|0)<=0){break f}g=0;if((f|0)!=1){m=f&2147483646;b=0;while(1){k=g<<4;j=k+d|0;i=k+J[e+12>>2]|0;J[j>>2]=J[i>>2];J[j+4>>2]=J[i+4>>2];J[j+8>>2]=J[i+8>>2];J[j+12>>2]=J[i+12>>2];i=k|16;j=i+d|0;i=i+J[e+12>>2]|0;J[j>>2]=J[i>>2];J[j+4>>2]=J[i+4>>2];J[j+8>>2]=J[i+8>>2];J[j+12>>2]=J[i+12>>2];g=g+2|0;b=b+2|0;if((m|0)!=(b|0)){continue}break}}if(!(f&1)){break f}f=g<<4;b=f+d|0;f=f+J[e+12>>2]|0;J[b>>2]=J[f>>2];J[b+4>>2]=J[f+4>>2];J[b+8>>2]=J[f+8>>2];J[b+12>>2]=J[f+12>>2]}b=J[e+12>>2];if(!(b?!b|K[e+16|0]!=1:1)){J[83765]=J[83765]+1;Zi[J[61751]](J[b-4>>2])}J[e+12>>2]=d;H[e+16|0]=1;J[e+8>>2]=c}f=0;d=0-l&3;if(d){while(1){b=J[e+12>>2]+(h<<4)|0;J[b>>2]=0;J[b+4>>2]=0;J[b+8>>2]=0;J[b+12>>2]=0;h=h+1|0;f=f+1|0;if((d|0)!=(f|0)){continue}break}}if(l>>>0>4294967292){break e}while(1){b=h<<4;d=b+J[e+12>>2]|0;J[d>>2]=0;J[d+4>>2]=0;J[d+8>>2]=0;J[d+12>>2]=0;d=b+J[e+12>>2]|0;J[d+24>>2]=0;J[d+28>>2]=0;J[d+16>>2]=0;J[d+20>>2]=0;d=b+J[e+12>>2]|0;J[d+40>>2]=0;J[d+44>>2]=0;J[d+32>>2]=0;J[d+36>>2]=0;b=b+J[e+12>>2]|0;J[b+56>>2]=0;J[b+60>>2]=0;J[b+48>>2]=0;J[b+52>>2]=0;h=h+4|0;if((c|0)!=(h|0)){continue}break}}}else{c=h}J[e+4>>2]=c;J[a+104>>2]=0}}function yE(a,b){var c=0,d=0,e=0,f=0,g=0;d=Ui-48|0;Ui=d;J[d+40>>2]=0;J[d+44>>2]=0;J[d+32>>2]=0;J[d+36>>2]=0;J[d+24>>2]=0;J[d+28>>2]=0;J[d+16>>2]=0;J[d+20>>2]=0;J[d+8>>2]=0;J[d+12>>2]=0;J[d>>2]=0;J[d+4>>2]=0;c=K[a+15|0]+1|0;H[a+15|0]=c;g=a+32|0;a:{if((c|0)==(c&255)){break a}c=K[a+14|0]+1|0;H[a+14|0]=c;if((c|0)==(c&255)){break a}c=K[a+13|0]+1|0;H[a+13|0]=c;if((c|0)==(c&255)){break a}c=K[a+12|0]+1|0;H[a+12|0]=c;if((c|0)==(c&255)){break a}c=K[a+11|0]+1|0;H[a+11|0]=c;if((c|0)==(c&255)){break a}c=K[a+10|0]+1|0;H[a+10|0]=c;if((c|0)==(c&255)){break a}c=K[a+9|0]+1|0;H[a+9|0]=c;if((c|0)==(c&255)){break a}c=K[a+8|0]+1|0;H[a+8|0]=c;if((c|0)==(c&255)){break a}c=K[a+7|0]+1|0;H[a+7|0]=c;if((c|0)==(c&255)){break a}c=K[a+6|0]+1|0;H[a+6|0]=c;if((c|0)==(c&255)){break a}c=K[a+5|0]+1|0;H[a+5|0]=c;if((c|0)==(c&255)){break a}c=K[a+4|0]+1|0;H[a+4|0]=c;if((c|0)==(c&255)){break a}c=K[a+3|0]+1|0;H[a+3|0]=c;if((c|0)==(c&255)){break a}c=K[a+2|0]+1|0;H[a+2|0]=c;if((c|0)==(c&255)){break a}c=K[a+1|0]+1|0;H[a+1|0]=c;if((c|0)==(c&255)){break a}H[a|0]=K[a|0]+1}c=ro(g,1,a,d);b:{if(c){break b}c=K[a+15|0]+1|0;H[a+15|0]=c;e=d+16|0;c:{if((c|0)==(c&255)){break c}c=K[a+14|0]+1|0;H[a+14|0]=c;if((c|0)==(c&255)){break c}c=K[a+13|0]+1|0;H[a+13|0]=c;if((c|0)==(c&255)){break c}c=K[a+12|0]+1|0;H[a+12|0]=c;if((c|0)==(c&255)){break c}c=K[a+11|0]+1|0;H[a+11|0]=c;if((c|0)==(c&255)){break c}c=K[a+10|0]+1|0;H[a+10|0]=c;if((c|0)==(c&255)){break c}c=K[a+9|0]+1|0;H[a+9|0]=c;if((c|0)==(c&255)){break c}c=K[a+8|0]+1|0;H[a+8|0]=c;if((c|0)==(c&255)){break c}c=K[a+7|0]+1|0;H[a+7|0]=c;if((c|0)==(c&255)){break c}c=K[a+6|0]+1|0;H[a+6|0]=c;if((c|0)==(c&255)){break c}c=K[a+5|0]+1|0;H[a+5|0]=c;if((c|0)==(c&255)){break c}c=K[a+4|0]+1|0;H[a+4|0]=c;if((c|0)==(c&255)){break c}c=K[a+3|0]+1|0;H[a+3|0]=c;if((c|0)==(c&255)){break c}c=K[a+2|0]+1|0;H[a+2|0]=c;if((c|0)==(c&255)){break c}c=K[a+1|0]+1|0;H[a+1|0]=c;if((c|0)==(c&255)){break c}H[a|0]=K[a|0]+1}c=ro(g,1,a,e);if(c){break b}c=K[a+15|0]+1|0;H[a+15|0]=c;e=d+32|0;d:{if((c|0)==(c&255)){break d}c=K[a+14|0]+1|0;H[a+14|0]=c;if((c|0)==(c&255)){break d}c=K[a+13|0]+1|0;H[a+13|0]=c;if((c|0)==(c&255)){break d}c=K[a+12|0]+1|0;H[a+12|0]=c;if((c|0)==(c&255)){break d}c=K[a+11|0]+1|0;H[a+11|0]=c;if((c|0)==(c&255)){break d}c=K[a+10|0]+1|0;H[a+10|0]=c;if((c|0)==(c&255)){break d}c=K[a+9|0]+1|0;H[a+9|0]=c;if((c|0)==(c&255)){break d}c=K[a+8|0]+1|0;H[a+8|0]=c;if((c|0)==(c&255)){break d}c=K[a+7|0]+1|0;H[a+7|0]=c;if((c|0)==(c&255)){break d}c=K[a+6|0]+1|0;H[a+6|0]=c;if((c|0)==(c&255)){break d}c=K[a+5|0]+1|0;H[a+5|0]=c;if((c|0)==(c&255)){break d}c=K[a+4|0]+1|0;H[a+4|0]=c;if((c|0)==(c&255)){break d}c=K[a+3|0]+1|0;H[a+3|0]=c;if((c|0)==(c&255)){break d}c=K[a+2|0]+1|0;H[a+2|0]=c;if((c|0)==(c&255)){break d}c=K[a+1|0]+1|0;H[a+1|0]=c;if((c|0)==(c&255)){break d}H[a|0]=K[a|0]+1}c=ro(g,1,a,e);if(c){break b}c=0;while(1){e=c+d|0;H[e|0]=K[e|0]^K[b+c|0];e=c|1;f=e+d|0;H[f|0]=K[f|0]^K[b+e|0];e=c|2;f=e+d|0;H[f|0]=K[f|0]^K[b+e|0];e=c|3;f=e+d|0;H[f|0]=K[f|0]^K[b+e|0];c=c+4|0;if((c|0)!=48){continue}break}c=ls(g,d,256);if(c){break b}b=J[d+36>>2];J[a>>2]=J[d+32>>2];J[a+4>>2]=b;b=J[d+44>>2];J[a+8>>2]=J[d+40>>2];J[a+12>>2]=b;c=0}Zi[J[66509]](d,0,48)|0;Ui=d+48|0;return c}function apa(a,b){a=a|0;b=b|0;var c=0,d=0,e=0,f=0,g=0,h=0,i=0,j=0,k=0,l=0,m=0,n=0,o=0,p=0,q=0;m=a+2440|0;j=a+148|0;a:{while(1){b:{c:{if(M[a+116>>2]<=261){$w(a);c=J[a+116>>2];if(!(c>>>0>=262|b)){return 0}if(!c){break a}if(c>>>0<3){break c}}e=J[a+108>>2];c=J[a+84>>2]&(K[(e+J[a+56>>2]|0)+2|0]^J[a+72>>2]<>2]);J[a+72>>2]=c;c=J[a+68>>2]+(c<<1)|0;d=L[c>>1];I[J[a+64>>2]+((e&J[a+52>>2])<<1)>>1]=d;I[c>>1]=e;if(!d|J[a+44>>2]-262>>>0>>0){break c}d=FI(a,d);J[a+96>>2]=d;break b}d=J[a+96>>2]}d:{if(d>>>0>=3){c=J[a+5792>>2];J[a+5792>>2]=c+1;e=J[a+108>>2]-J[a+112>>2]|0;H[c+J[a+5784>>2]|0]=e;c=J[a+5792>>2];J[a+5792>>2]=c+1;H[c+J[a+5784>>2]|0]=e>>>8;c=J[a+5792>>2];J[a+5792>>2]=c+1;i=c+J[a+5784>>2]|0;c=d-3|0;H[i|0]=c;c=((K[(c&255)+194128|0]<<2)+j|0)+1028|0;I[c>>1]=L[c>>1]+1;c=e-1&65535;c=(K[(c>>>0<256?c:(c>>>7|0)+256|0)+193616|0]<<2)+m|0;I[c>>1]=L[c>>1]+1;d=J[a+96>>2];c=J[a+116>>2]-d|0;J[a+116>>2]=c;k=J[a+5796>>2];l=J[a+5792>>2];if(!(c>>>0<3|d>>>0>M[a+128>>2])){g=d-1|0;J[a+96>>2]=g;n=J[a+56>>2]+3|0;h=J[a+72>>2];d=J[a+108>>2];o=J[a+52>>2];p=J[a+64>>2];q=J[a+68>>2];i=J[a+84>>2];f=J[a+88>>2];while(1){c=d;d=c+1|0;J[a+108>>2]=d;h=(K[c+n|0]^h<>2]=h;e=(h<<1)+q|0;I[((d&o)<<1)+p>>1]=L[e>>1];I[e>>1]=d;g=g-1|0;J[a+96>>2]=g;if(g){continue}break}d=c+2|0;J[a+108>>2]=d;if((k|0)!=(l|0)){continue}break d}J[a+96>>2]=0;d=d+J[a+108>>2]|0;J[a+108>>2]=d;e=J[a+56>>2]+d|0;c=K[e|0];J[a+72>>2]=c;J[a+72>>2]=J[a+84>>2]&(K[e+1|0]^c<>2]);if((k|0)!=(l|0)){continue}break d}d=K[J[a+56>>2]+J[a+108>>2]|0];c=J[a+5792>>2];J[a+5792>>2]=c+1;H[c+J[a+5784>>2]|0]=0;c=J[a+5792>>2];J[a+5792>>2]=c+1;H[c+J[a+5784>>2]|0]=0;c=J[a+5792>>2];J[a+5792>>2]=c+1;H[c+J[a+5784>>2]|0]=d;c=(d<<2)+j|0;I[c>>1]=L[c>>1]+1;J[a+116>>2]=J[a+116>>2]-1;d=J[a+108>>2]+1|0;J[a+108>>2]=d;if(J[a+5792>>2]!=J[a+5796>>2]){continue}}e=J[a+92>>2];if((e|0)>=0){c=e+J[a+56>>2]|0}else{c=0}Lo(a,c,d-e|0,0);J[a+92>>2]=J[a+108>>2];f=J[a>>2];e=J[f+28>>2];zm(e);d=J[e+20>>2];c=J[f+16>>2];d=c>>>0>d>>>0?d:c;e:{if(!d){break e}hj(J[f+12>>2],J[e+16>>2],d);J[f+12>>2]=d+J[f+12>>2];J[e+16>>2]=d+J[e+16>>2];J[f+20>>2]=d+J[f+20>>2];J[f+16>>2]=J[f+16>>2]-d;c=J[e+20>>2];J[e+20>>2]=c-d;if((c|0)!=(d|0)){break e}J[e+16>>2]=J[e+8>>2]}if(J[J[a>>2]+16>>2]){continue}break}return 0}d=J[a+108>>2];J[a+5812>>2]=d>>>0>=2?2:d;if((b|0)==4){c=J[a+92>>2];if((c|0)>=0){b=c+J[a+56>>2]|0}else{b=0}Lo(a,b,d-c|0,1);J[a+92>>2]=J[a+108>>2];e=J[a>>2];d=J[e+28>>2];zm(d);c=J[d+20>>2];b=J[e+16>>2];c=b>>>0>c>>>0?c:b;f:{if(!c){break f}hj(J[e+12>>2],J[d+16>>2],c);J[e+12>>2]=c+J[e+12>>2];J[d+16>>2]=c+J[d+16>>2];J[e+20>>2]=c+J[e+20>>2];J[e+16>>2]=J[e+16>>2]-c;b=J[d+20>>2];J[d+20>>2]=b-c;if((b|0)!=(c|0)){break f}J[d+16>>2]=J[d+8>>2]}return(J[J[a>>2]+16>>2]?3:2)|0}g:{if(!J[a+5792>>2]){break g}c=J[a+92>>2];if((c|0)>=0){b=c+J[a+56>>2]|0}else{b=0}Lo(a,b,d-c|0,0);J[a+92>>2]=J[a+108>>2];e=J[a>>2];d=J[e+28>>2];zm(d);c=J[d+20>>2];b=J[e+16>>2];c=b>>>0>c>>>0?c:b;h:{if(!c){break h}hj(J[e+12>>2],J[d+16>>2],c);J[e+12>>2]=c+J[e+12>>2];J[d+16>>2]=c+J[d+16>>2];J[e+20>>2]=c+J[e+20>>2];J[e+16>>2]=J[e+16>>2]-c;b=J[d+20>>2];J[d+20>>2]=b-c;if((b|0)!=(c|0)){break h}J[d+16>>2]=J[d+8>>2]}if(J[J[a>>2]+16>>2]){break g}return 0}return 1}function Bp(a,b,c){var d=0,e=0,f=0,g=0,h=0;d=Ui-112|0;Ui=d;e=J[c+4>>2];a:{if(!e){e=-4;break a}g=J[c+8>>2];f=g-4|0;b:{while(1){if(J[f+(e<<2)>>2]){break b}e=e-1|0;if(e){continue}break}e=-4;break a}f=J[c>>2];c:{if(e>>>0<=1){e=-4;if(!f|((f|0)<0|M[g>>2]<2)){break a}break c}if((f|0)>0){break c}e=-4;break a}J[d+96>>2]=0;J[d+88>>2]=1;J[d+92>>2]=0;J[d+84>>2]=0;J[d+76>>2]=1;J[d+80>>2]=0;J[d+72>>2]=0;J[d+64>>2]=1;J[d+68>>2]=0;J[d+60>>2]=0;J[d+52>>2]=1;J[d+56>>2]=0;J[d+108>>2]=0;J[d+100>>2]=1;J[d+104>>2]=0;J[d+48>>2]=0;J[d+40>>2]=1;J[d+44>>2]=0;J[d+36>>2]=0;J[d+28>>2]=1;J[d+32>>2]=0;J[d+24>>2]=0;J[d+16>>2]=1;J[d+20>>2]=0;J[d+4>>2]=1;J[d+8>>2]=0;J[d+12>>2]=0;e=Xm(d+100|0,b,c);d:{if(e){break d}e=-14;f=J[d+104>>2];if(!f){break d}h=J[d+108>>2];g=h-4|0;while(1){if(!J[g+(f<<2)>>2]){f=f-1|0;if(f){continue}break d}break}g=J[d+100>>2];e:{f:{if(f>>>0>1){break f}if((g|0)<0){break d}f=J[h>>2];if(f>>>0>1){break f}if(f){break e}g=0-g|0}if(g){break d}}f=d+88|0;e=Bl(f,b,c);if(e){break d}e=sk(d+76|0,f);if(e){break d}e=sk(d+40|0,c);if(e){break d}e=sk(d+28|0,c);if(e){break d}e=kl(d- -64|0,1);if(e){break d}e=kl(d+52|0,0);if(e){break d}e=kl(d+16|0,0);if(e){break d}e=kl(d+4|0,1);if(e){break d}while(1){if(!(H[J[d+84>>2]]&1)){e=yk(d+76|0,1);if(e){break d}if(H[J[d+72>>2]]&1|H[J[d+60>>2]]&1){b=d- -64|0;e=Ql(b,b,d+40|0);if(e){break d}b=d+52|0;e=wl(b,b,d+88|0);if(e){break d}}e=yk(d- -64|0,1);if(e){break d}e=yk(d+52|0,1);if(!e){continue}break d}while(1){if(!(H[J[d+36>>2]]&1)){e=yk(d+28|0,1);if(e){break d}if(H[J[d+24>>2]]&1|H[J[d+12>>2]]&1){b=d+16|0;e=Ql(b,b,d+40|0);if(e){break d}b=d+4|0;e=wl(b,b,d+88|0);if(e){break d}}e=yk(d+16|0,1);if(e){break d}e=yk(d+4|0,1);if(!e){continue}break d}break}b=d+76|0;e=d+28|0;g:{if((_j(b,e)|0)>=0){e=wl(b,b,e);if(e){break d}b=d- -64|0;e=wl(b,b,d+16|0);if(e){break d}b=d+52|0;e=wl(b,b,d+4|0);if(!e){break g}break d}b=d+28|0;e=wl(b,b,d+76|0);if(e){break d}b=d+16|0;e=wl(b,b,d- -64|0);if(e){break d}b=d+4|0;e=wl(b,b,d+52|0);if(e){break d}}if(Pj(d+76|0,0)){continue}break}while(1){if((Pj(d+16|0,0)|0)>=0){while(1){b=d+16|0;if((_j(b,c)|0)>=0){e=wl(b,b,c);if(!e){continue}break d}break}e=sk(a,d+16|0);break d}b=d+16|0;e=Ql(b,b,c);if(!e){continue}break}}a=J[d+96>>2];if(a){Zi[J[66509]](a,0,J[d+92>>2]<<2)|0;cj(J[d+96>>2])}J[d+96>>2]=0;J[d+88>>2]=1;J[d+92>>2]=0;a=J[d+84>>2];if(a){Zi[J[66509]](a,0,J[d+80>>2]<<2)|0;cj(J[d+84>>2])}J[d+84>>2]=0;J[d+76>>2]=1;J[d+80>>2]=0;a=J[d+72>>2];if(a){Zi[J[66509]](a,0,J[d+68>>2]<<2)|0;cj(J[d+72>>2])}J[d+72>>2]=0;J[d+64>>2]=1;J[d+68>>2]=0;a=J[d+60>>2];if(a){Zi[J[66509]](a,0,J[d+56>>2]<<2)|0;cj(J[d+60>>2])}J[d+60>>2]=0;J[d+52>>2]=1;J[d+56>>2]=0;a=J[d+108>>2];if(a){Zi[J[66509]](a,0,J[d+104>>2]<<2)|0;cj(J[d+108>>2])}J[d+108>>2]=0;J[d+100>>2]=1;J[d+104>>2]=0;a=J[d+48>>2];if(a){Zi[J[66509]](a,0,J[d+44>>2]<<2)|0;cj(J[d+48>>2])}J[d+48>>2]=0;J[d+40>>2]=1;J[d+44>>2]=0;a=J[d+36>>2];if(a){Zi[J[66509]](a,0,J[d+32>>2]<<2)|0;cj(J[d+36>>2])}J[d+36>>2]=0;J[d+28>>2]=1;J[d+32>>2]=0;a=J[d+24>>2];if(a){Zi[J[66509]](a,0,J[d+20>>2]<<2)|0;cj(J[d+24>>2])}J[d+24>>2]=0;J[d+16>>2]=1;J[d+20>>2]=0;a=J[d+12>>2];if(!a){break a}Zi[J[66509]](a,0,J[d+8>>2]<<2)|0;cj(J[d+12>>2])}Ui=d+112|0;return e}function _B(a,b,c,d,e){var f=0,g=0,h=0,i=0,j=0,k=0;f=Ui-96|0;Ui=f;a:{b:{c:{d:{e:{f:{g:{h:{i:{j:{k:{l:{if(J[b+60>>2]==-17){if(L[b+38>>1]){break l}i=J[b+8>>2];if(!i){break k}J[f+88>>2]=0;J[f+92>>2]=0;J[f+80>>2]=0;J[f+84>>2]=0;J[f+72>>2]=0;J[f+76>>2]=0;J[f+64>>2]=0;J[f+68>>2]=0;g=J[b+28>>2];h=J[b+24>>2];J[f+84>>2]=1;J[f+56>>2]=h;J[f+60>>2]=g;J[f+76>>2]=i;g=J[a+163896>>2];J[f+52>>2]=i;J[f+20>>2]=g;J[f+24>>2]=J[i+12>>2];J[f+44>>2]=J[b+56>>2];J[f+48>>2]=f+56;J[f+28>>2]=J[b>>2];g=J[b+52>>2];h=g&2147483647;J[f+40>>2]=h;m:{if(!c){d=J[b+44>>2];if(!d){break j}c=J[b+48>>2];J[f+36>>2]=c;J[f+32>>2]=d;J[f+80>>2]=c;J[f+40>>2]=h|((c|0)!=(g|0))<<31;J[b+60>>2]=Zi[J[i+20>>2]](f+20|0);c=J[a+181680>>2];h=J[b+48>>2];n:{e=J[b+44>>2]-2|0;d=L[e>>1];if((d|0)==8){cj(e);break n}o:{p:{if(d>>>0<8){k=c+(d<<2)|0;g=J[k+96>>2];if(!g){break p}c=c+P(d,12)|0;j=J[c>>2];if(!j){break o}j=j-1|0;J[c>>2]=j;q:{if(!j){if(!d){break q}cj(g);J[k+96>>2]=0;break n}d=h+3&-2;h=J[c+4>>2];if((e|0)==(h+g|0)){J[c+4>>2]=h+(d&65535);break n}d=J[c+8>>2]-(d&65535)|0;if((e|0)!=(d+g|0)){break q}J[c+8>>2]=d}break n}Z(87143,39600,111,68876);B()}Z(111279,39600,114,68876);B()}Z(111884,39600,116,68876);B()}J[b+44>>2]=0;d=J[b+60>>2];break m}J[f+36>>2]=d;J[f+32>>2]=c;J[f+80>>2]=d;J[f+40>>2]=e&2147483647|((d|0)!=(e|0))<<31;d=Zi[J[i+20>>2]](f+20|0)|0;J[b+60>>2]=d}if(!(!J[i+24>>2]|d)){d=a+181696|0;e=a+181692|0;g=J[a+181700>>2];c=J[a+181696>>2];if((g|0)==(c|0)){if(H[a+181704|0]&1){break i}h=((c-J[e>>2]|0)/72|0)+128|0;c=a+181700|0;lj(h,72,e,c,d);g=J[c>>2];c=J[d>>2]}h=c;c=J[e>>2];h=h-c|0;e=((h|0)/72|0)+1|0;if(e>>>0>(g-c|0)/72>>>0){break h}c=c+P(e,72)|0;J[d>>2]=c;if((h|0)==-72){break g}H[c-8|0]=0;d=J[a+163896>>2];J[c-52>>2]=i;J[c-72>>2]=d;J[c-68>>2]=J[i+12>>2];d=J[b+56>>2];J[c-56>>2]=0;J[c-60>>2]=d;d=J[f+60>>2];c=c-48|0;J[c>>2]=J[f+56>>2];J[c+4>>2]=d;d=f- -64|0;e=J[d+4>>2];J[c+8>>2]=J[d>>2];J[c+12>>2]=e;d=J[f+76>>2];J[c+16>>2]=J[f+72>>2];J[c+20>>2]=d;d=J[f+84>>2];J[c+24>>2]=J[f+80>>2];J[c+28>>2]=d;d=J[f+92>>2];J[c+32>>2]=J[f+88>>2];J[c+36>>2]=d}if(J[b+44>>2]){break f}J[b+56>>2]=0;c=I[b+32>>1];if((c|0)!=-1){c=(P(c,72)+a|0)+88150|0;d=L[c>>1];if(!d){break e}I[c>>1]=d-1}WB(a,b);if(J[b+60>>2]){break b}if(!J[f+64>>2]){break d}c=qr(J[a+163896>>2],J[b+24>>2],J[b+28>>2]);if(c){J[c+28>>2]=J[c+28>>2]+1;J[b+64>>2]=J[c+8>>2];break c}c=MK(J[a+163896>>2],J[b>>2],J[b+24>>2],J[b+28>>2],f+56|0);J[b+60>>2]=c;if(c){break c}J[b+64>>2]=J[f+64>>2];break b}Z(94213,40201,519,69839);B()}Z(112769,40201,520,69839);B()}Z(64689,40201,522,69839);B()}Z(35356,40201,545,69839);B()}Z(151729,53895,501,2284);B()}Z(144782,53895,514,59583);B()}Z(112533,53895,443,51980);B()}Z(112976,40201,587,69839);B()}Z(112042,40201,319,12185);B()}Z(69984,40201,603,69839);B()}c=J[f+64>>2];if(!c){break a}r:{if(!J[i+24>>2]){break r}b=J[a+181688>>2];d=J[a+181692>>2];e=(J[a+181696>>2]-d|0)/72|0;if(b>>>0>=e>>>0){break r}while(1){g=d+P(b,72)|0;if((c|0)!=J[g+32>>2]){b=b+1|0;if((e|0)!=(b|0)){continue}break r}break}H[g+64|0]=1;break b}J[f+4>>2]=J[a+163896>>2];J[f+16>>2]=i;J[f+8>>2]=J[i+12>>2];J[f+12>>2]=f+56;Zi[J[i+28>>2]](f+4|0)|0}Ui=f+96|0;return}Z(113941,40201,633,69839);B()}function rt(a,b,c,d,e,f,g,h,i,j,k){var l=0,m=0,n=Q(0),o=Q(0),p=0,q=Q(0),r=Q(0),s=Q(0),t=Q(0),u=Q(0),v=Q(0),w=Q(0),x=Q(0),y=Q(0),z=0,A=Q(0),B=Q(0),C=Q(0),D=Q(0),E=Q(0),F=Q(0),G=0,I=0,L=Q(0),M=0,O=0;M=J[a+48>>2];l=M;a:{if((l|0)!=J[a+52>>2]){break a}G=l?l<<1:1;if((G|0)<=(l|0)){break a}if(G){I=Yj(P(G,136));l=J[a+48>>2]}p=l;b:{if((p|0)<=0){break b}l=0;if((p|0)!=1){O=p&2147483646;while(1){z=P(l,136);hj(z+I|0,z+J[a+56>>2]|0,136);z=P(l|1,136);hj(z+I|0,z+J[a+56>>2]|0,136);l=l+2|0;m=m+2|0;if((m|0)!=(O|0)){continue}break}}if(!(p&1)){break b}p=P(l,136);hj(p+I|0,p+J[a+56>>2]|0,136)}p=J[a+56>>2];if(!(p?!p|K[a+60|0]!=1:1)){J[83765]=J[83765]+1;Zi[J[61751]](J[p-4>>2])}J[a+56>>2]=I;H[a+60|0]=1;J[a+52>>2]=G;l=J[a+48>>2]}J[a+48>>2]=l+1;a=J[a+56>>2]+P(M,136)|0;J[a+100>>2]=c;m=Ui-16|0;Ui=m;l=J[g+232>>2];p=J[h+232>>2];c=J[b+4>>2];J[a+16>>2]=J[b>>2];J[a+20>>2]=c;c=J[b+12>>2];J[a+24>>2]=J[b+8>>2];J[a+28>>2]=c;l=(l|0)==2?g:0;if(!l){if(!(H[333884]&1)){J[m+8>>2]=0;J[m+12>>2]=0;J[m>>2]=0;J[m+4>>2]=0;_y(m);H[333884]=1}J[m+8>>2]=0;J[m+12>>2]=0;J[m>>2]=0;J[m+4>>2]=0;Zy(m);g=333276}J[a+104>>2]=g;c=(p|0)==2?h:0;if(!c){if(!(H[333884]&1)){J[m+8>>2]=0;J[m+12>>2]=0;J[m>>2]=0;J[m+4>>2]=0;_y(m);H[333884]=1}J[m+8>>2]=0;J[m+12>>2]=0;J[m>>2]=0;J[m+4>>2]=0;Zy(m);h=333276}J[a+108>>2]=h;q=N[d+84>>2];J[a+112>>2]=0;N[a+88>>2]=q;J[a+80>>2]=0;J[a+84>>2]=0;o=N[e+8>>2];n=N[e>>2];q=N[e+4>>2];J[a+12>>2]=0;r=N[a+20>>2];s=N[a+16>>2];A=Q(Q(n*r)-Q(q*s));N[a+8>>2]=A;t=N[a+24>>2];B=Q(Q(o*s)-Q(n*t));N[a+4>>2]=B;C=Q(Q(q*t)-Q(o*r));N[a>>2]=C;if(l){u=Q(Q(Q(N[l+280>>2]*A)+Q(Q(N[l+272>>2]*C)+Q(B*N[l+276>>2])))*N[l+540>>2]);v=Q(Q(Q(N[l+296>>2]*A)+Q(Q(N[l+288>>2]*C)+Q(B*N[l+292>>2])))*N[l+544>>2]);L=Q(Q(Q(N[l+264>>2]*A)+Q(Q(N[l+256>>2]*C)+Q(B*N[l+260>>2])))*N[l+536>>2])}J[a+60>>2]=0;N[a+56>>2]=v;N[a+52>>2]=u;N[a+48>>2]=L;o=N[f+8>>2];n=N[f>>2];q=N[f+4>>2];J[a+44>>2]=0;D=Q(Q(n*Q(-r))+Q(s*q));N[a+40>>2]=D;E=Q(Q(o*Q(-s))+Q(t*n));N[a+36>>2]=E;F=Q(Q(q*Q(-t))+Q(r*o));N[a+32>>2]=F;if(c){w=Q(Q(Q(N[c+296>>2]*D)+Q(Q(N[c+288>>2]*F)+Q(E*N[c+292>>2])))*N[c+544>>2]);x=Q(Q(Q(N[c+280>>2]*D)+Q(Q(N[c+272>>2]*F)+Q(E*N[c+276>>2])))*N[c+540>>2]);y=Q(Q(Q(N[c+264>>2]*D)+Q(Q(N[c+256>>2]*F)+Q(E*N[c+260>>2])))*N[c+536>>2])}J[a+76>>2]=0;N[a+72>>2]=w;N[a+68>>2]=x;N[a+64>>2]=y;q=i;if(l){o=N[e+4>>2];n=N[e>>2];i=N[e+8>>2];i=Q(N[l+336>>2]+Q(Q(N[b+8>>2]*Q(Q(L*o)-Q(u*n)))+Q(Q(N[b>>2]*Q(Q(u*i)-Q(v*o)))+Q(Q(Q(v*n)-Q(L*i))*N[b+4>>2]))))}else{i=Q(0)}if(c){o=N[f>>2];n=N[f+4>>2];u=Q(N[b+8>>2]*Q(Q(x*o)-Q(y*n)));v=Q(w*n);n=N[f+8>>2];n=Q(N[c+336>>2]+Q(u+Q(Q(N[b>>2]*Q(v-Q(x*n)))+Q(Q(Q(y*n)-Q(w*o))*N[b+4>>2]))))}else{n=Q(0)}n=Q(q/Q(i+n));N[a+92>>2]=n;c:{if(l){u=N[l+328>>2];v=N[l+324>>2];x=N[l+320>>2];q=Q(Q(t*N[l+312>>2])+Q(Q(s*N[l+304>>2])+Q(r*N[l+308>>2])));break c}u=Q(0);v=Q(0);x=Q(0);q=Q(Q(t*Q(0))+Q(Q(s*Q(0))+Q(r*Q(0))))}d:{if(c){w=N[c+328>>2];y=N[c+320>>2];o=N[c+324>>2];i=Q(Q(t*N[c+312>>2])+Q(Q(s*N[c+304>>2])+Q(r*N[c+308>>2])));break d}w=Q(0);y=Q(0);o=Q(0);i=Q(Q(t*Q(0))+Q(Q(s*Q(0))+Q(r*Q(0))))}J[a+124>>2]=0;J[a+128>>2]=1343554297;N[a+120>>2]=k;N[a+116>>2]=n*Q(j-Q(Q(q+Q(Q(A*u)+Q(Q(C*x)+Q(B*v))))+Q(Q(Q(D*w)+Q(Q(F*y)+Q(E*o)))-i)));Ui=m+16|0}function hG(a,b,c){var d=0,e=0,f=0,g=0,h=0,i=0,j=0,k=0,l=0,m=0,n=0,o=0,p=0,q=0,r=0,s=0,t=0;a:{i=K[a+75|0];b:{if(i>>>0>250){break b}d=K[a+74|0];if((d&5)==4|K[a+73|0]+(d&1)>>>0>i>>>0){break b}s=K[a+72|0];if((s|0)>2]){break b}l=J[a+44>>2];if((l|0)<=0){break b}m=J[a+48>>2];if(!(!m|(l|0)==(m|0))){break b}p=J[a+12>>2];if((J[(p+(l<<2)|0)-4>>2]&63)!=30){break b}m=l-1|0;c:{if((b|0)<=0){d=m;break c}t=(d&6)!=2;d=m;while(1){n=(g<<2)+p|0;h=J[n>>2];q=h&63;if(q>>>0>37){break a}j=h>>>6&255;if(j>>>0>=i>>>0){break a}k=d;d=K[q+173568|0];r=d<<24>>24;e=0;f=0;d:{e:{switch((d&3)-1|0){default:f=h>>>23|0;f:{g:{switch((d>>>4&3)-1|0){default:if(h>>>0<8388608){break f}break a;case 1:if(f>>>0>>0){break f}break a;case 0:break f;case 2:break g}}if((h|0)<0){if(J[a+40>>2]>(f&255)){break f}break a}if(f>>>0>>0){break f}break a}o=h>>>14|0;d=o&511;e=d;h:{switch((r>>>2&3)-1|0){default:e=0;h=0;if(!d){break d}break b;case 1:if(d>>>0>>0){break d}break a;case 2:break h;case 0:break d}}if(h&4194304){if(J[a+40>>2]>(o&255)){break d}break a}if(d>>>0>>0){break d}break a;case 0:f=h>>>14|0;if((d&48)!=48){break d}h=0;if(J[a+40>>2]>(f|0)){break d}break b;case 2:break d;case 1:break e}}f=(h>>>14|0)-131071|0;if((d&48)!=32){break d}h=0;o=f+g|0;e=o+1|0;if((e|0)<0|(e|0)>=(l|0)){break b}if(!e){e=0;break d}d=0;i:{while(1){if((J[(o-d<<2)+p>>2]&8372287)!=34){break i}d=d+1|0;if((e|0)!=(d|0)){continue}break}d=e}e=0;if(d&1){break b}}if((r|0)<0){h=0;if((J[n+4>>2]&63)!=22|(g+2|0)>=(l|0)){break b}}d=(c|0)==(j|0)?(r&64)>>>6|0?g:k:k;j:{k:{l:{m:{n:{o:{p:{q:{r:{switch(q-2|0){case 0:if((e|0)!=1){break j}h=0;if((g+2|0)>=(l|0)){break b}if((J[n+4>>2]&8372287)!=34){break j}break b;case 1:d=(c|0)<(j|0)?d:(c|0)>(f|0)?d:g;break j;case 2:case 6:if((f|0)<(s|0)){break j}break a;case 3:case 5:if(J[(J[a+8>>2]+(f<<4)|0)+8>>2]==4){break j}break a;case 9:e=j+1|0;if(e>>>0>=i>>>0){break a}d=(c|0)==(e|0)?g:d;break j;case 19:if((f|0)<(e|0)){break j}break a;case 31:h=0;if(!e){break b}k=e;e=j+2|0;if(k+e>>>0>=i>>>0){break b}d=(c|0)<(e|0)?d:g;break j;case 35:break l;case 34:break m;case 32:break n;case 28:break o;case 26:case 27:break p;case 20:break q;case 29:case 30:break r;default:break j}}if(j+3>>>0>>0){break q}break a}e=(f+g|0)+1|0;g=((c|0)!=255?(e|0)<=(g|0)|(b|0)<(e|0)?0:f:0)+g|0;break j}h=0;if((f+j|0)>(i|0)?f:0){break b}s:{if(!e){d=J[n+4>>2];e=d&63;if(e-28>>>0>=3&(e|0)!=34){break b}if(d>>>0<=8388607){break s}break b}d=e-1|0;if(!d){break s}if((d+j|0)>(i|0)){break b}}d=(c|0)<(j|0)?k:g;break j}if((f|0)<2|((f+j|0)-1|0)<=(i|0)){break j}break a}h=0;if((f|0)>0&(f+j|0)>=(i|0)){break b}if(e){break j}g=g+1|0;if((m|0)>(g|0)){break j}break b}h=0;if(J[a+52>>2]<=(f|0)){break b}e=K[J[J[a+16>>2]+(f<<2)>>2]+72|0];k=e+g|0;if((k|0)>=(l|0)){break b}f=1;if(!e){break k}while(1){if(K[(f<<2)+n|0]&59){break b}j=(f|0)==(e|0);f=f+1|0;if(!j){continue}break}break k}h=0;if(t){break b}e=f-1|0;if(!f){k=J[n+4>>2];f=k&63;if(f-28>>>0>=3&(f|0)!=34|k>>>0>8388607){break b}if((e+j|0)<=(i|0)){break j}break b}if((e+j|0)>(i|0)){break b}break j}g=(c|0)==255?g:k}g=g+1|0;if((g|0)<(b|0)){continue}break}}h=J[(d<<2)+p>>2]}return h}return 0}function wka(a){a=a|0;var b=0,c=0,d=0,e=0,f=Q(0),g=0,h=0,i=0,j=0,k=Q(0),l=Q(0),m=Q(0),n=0,o=Q(0),p=Q(0),q=0,r=Q(0),s=Q(0),t=Q(0);c=Ui-80|0;Ui=c;g=J[a+8>>2];h=J[J[a+12>>2]>>2];a:{b:{c:{d=J[a+16>>2];b=J[d+64>>2];e=J[55237];i=J[d+68>>2];e=(b|0)==J[e+8>>2]&(i|0)==J[e+12>>2];if(!e){n=J[55238];if(J[n+8>>2]!=(b|0)|J[n+12>>2]!=(i|0)){break c}}b=K[h+28|0];if(b&2){b=J[h+8>>2];a=J[J[a+4>>2]+132>>2];if(K[g+17|0]==1){KL(a,b,e);break b}LL(a,b,e);break b}H[h+28|0]=b&249|e<<2;break b}e=J[58140];if((b|0)==J[e+8>>2]&(i|0)==J[e+12>>2]){b=d+112|0;d=d+96|0;a=J[h+8>>2];h=J[g>>2];if(K[g+17|0]==1){a=J[a>>2];if(!(!a|J[a+232>>2]!=2|K[a+204|0]&3)){Gr(a,0);r=N[b>>2];o=N[b+4>>2];p=N[b+8>>2];l=N[d+8>>2];m=N[d+4>>2];f=N[h+72>>2];k=Q(Q(f*N[d>>2])*N[a+340>>2]);N[a+404>>2]=k+N[a+404>>2];m=Q(Q(f*m)*N[a+344>>2]);N[a+408>>2]=m+N[a+408>>2];l=Q(Q(f*l)*N[a+348>>2]);N[a+412>>2]=l+N[a+412>>2];s=N[a+52>>2];o=Q(Q(f*o)-N[a+56>>2]);p=Q(Q(f*p)-N[a+60>>2]);N[a+420>>2]=Q(Q(Q(o*l)-Q(p*m))*N[a+536>>2])+N[a+420>>2];t=N[a+544>>2];f=Q(Q(f*r)-s);N[a+424>>2]=Q(Q(Q(p*k)-Q(f*l))*N[a+540>>2])+N[a+424>>2];N[a+428>>2]=Q(t*Q(Q(f*m)-Q(o*k)))+N[a+428>>2]}break b}if(J[a>>2]==2){f=N[h+64>>2];m=Q(f*N[b+4>>2]);l=Q(f*N[b>>2]);k=Q(f*N[d+4>>2]);f=Q(f*N[d>>2]);b=L[a+4>>1];if(!(b&2)){J[a+144>>2]=0;I[a+4>>1]=b|2}N[a+76>>2]=f+N[a+76>>2];N[a+80>>2]=k+N[a+80>>2];N[a+84>>2]=N[a+84>>2]+Q(Q(Q(l-N[a+44>>2])*k)-Q(Q(m-N[a+48>>2])*f))}break b}e=J[58411];if((b|0)==J[e+8>>2]&(i|0)==J[e+12>>2]){d:{if(K[g+17|0]==1){b=c+32|0;$L(b,J[g>>2],J[h+8>>2]);N[c+48>>2]=N[c+32>>2];d=J[c+40>>2];J[c+52>>2]=J[c+36>>2];J[c+56>>2]=d;dM(b,J[h+8>>2]);break d}b=c+32|0;aM(b,J[g>>2],J[h+8>>2]);N[c+48>>2]=N[c+32>>2];d=J[c+40>>2];J[c+52>>2]=J[c+36>>2];J[c+56>>2]=d;N[b+8>>2]=N[J[h+8>>2]+72>>2];J[b>>2]=0;J[b+4>>2]=0}f=N[c+36>>2];k=N[c+32>>2];N[c+72>>2]=N[c+40>>2];N[c+68>>2]=f;N[c+64>>2]=k;a=J[a+16>>2];b=J[58432];a=Jk(a+32|0,a,J[b+8>>2],J[b+12>>2],0,0,b,c+48|0,32,0);if(!a){break b}J[c>>2]=J[J[58432]+4>>2];J[c+4>>2]=a;dj(4,88458,130228,c);j=-1e3;break b}e=J[58486];if((b|0)==J[e+8>>2]&(i|0)==J[e+12>>2]){if(K[g+17|0]==1){dj(4,88458,117829,0);j=-1e3;break b}b=J[h>>2];if(J[b+168>>2]>=0){dj(4,88458,124402,0);j=-1e3;break b}e:{j=J[d+100>>2];g=J[b+136>>2];if(j>>>0<(J[g+32>>2]&2147483647)>>>0){i=J[d+104>>2];if(i>>>0>2]){break e}}dj(4,88458,25325,0);j=-1e3;break b}f:{b=J[d+108>>2];if((b|0)==-1){break f}e=J[g>>2];if(b>>>0>2]-J[e>>2]>>3>>>0){break f}dj(4,88458,117773,0);j=-1e3;break b}e=J[d+96>>2];n=J[h+8>>2];q=K[d+120|0]<<2&4|(K[d+116|0]<<1&2|H[d+112|0]&1);H[c+30|0]=q;H[c+31|0]=q;if(IL(n,e,j,i,b,c+30|0)){n=i+P(j,J[g+28>>2])|0;j=0;i=0;e=0;if((b|0)!=-1){i=J[a+4>>2];g=J[g>>2];a=J[g>>2];if(b>>>0>=J[g+4>>2]-a>>3>>>0){Z(145396,53895,487,84789);B()}a=a+(b<<3)|0;i=Vl(i,J[a>>2],J[a+4>>2],0);e=L[h+24>>1]}ML(J[h+8>>2],J[d+96>>2],n,i,e);break b}J[c+20>>2]=J[d+96>>2];J[c+16>>2]=b;dj(4,88458,78316,c+16|0);j=-1e3;break b}a=J[58508];if(J[a+8>>2]!=(b|0)|J[a+12>>2]!=(i|0)){break b}if(K[g+17|0]==1){break a}if(J[J[h>>2]+168>>2]>=0){dj(4,88458,25496,0);j=-1e3;break b}JL(J[h+8>>2],J[d+96>>2],J[d+100>>2])}Ui=c+80|0;return j|0}Z(98496,38329,1298,68427);B()}function AK(a,b,c){var d=0,e=0,f=0,g=0,h=0,i=0,j=0,k=0,l=0,m=0,n=0,o=0,p=0,q=0,r=0,s=0,t=0,u=0,v=0;e=Ui+-64|0;Ui=e;n=J[a+32>>2];r=J[n+52>>2];Tj(r);m=K[a+46|0];s=K[a+44|0];d=J[n>>2];f=J[n+4>>2];t=e+56|0;g=t;J[g>>2]=0;J[g+4>>2]=0;J[e+48>>2]=0;J[e+52>>2]=0;a:{b:{c:{if((d|0)==(f|0)){a=0}else{d=f-d>>4;u=d>>>0<=1?1:d;v=e+48|4;d:{e:{while(1){d=J[n>>2];if(J[n+4>>2]-d>>4>>>0<=o>>>0){break b}f:{d=J[(d+(o<<4)|0)+4>>2];f=J[J[d>>2]+20>>2];if(f){d=Zi[f|0](J[d+4>>2],e+44|0)|0}else{d=-1}g:{if(d){break g}J[e+52>>2]=J[e+48>>2];h=e+48|0;j=0;f=-3;h:{d=J[J[e+44>>2]+8>>2];i=J[d+32>>2]-1|0;if((i|0)<0){break h}p=J[d+28>>2];while(1){l=((i-j|0)/2|0)+j|0;k=P(l,48)+p|0;d=k;g=J[d+16>>2];d=J[d+20>>2];if((g|0)!=(b|0)|(d|0)!=(c|0)){k=j;j=(c|0)==(d|0);q=j&b>>>0>g>>>0|c>>>0>d>>>0?l+1|0:k;d=b>>>0>>0&j|c>>>0>>0;j=d?k:q;i=d?l-1|0:i;if((j|0)<=(i|0)){continue}break h}break}i:{i=J[h>>2];f=J[h+8>>2]-i>>3;d=J[k+40>>2];if(f>>>0>>0){if(H[h+12|0]&1){break a}lj(d,8,h,h+8|0,h+4|0);i=J[h>>2];g=J[h+8>>2]-i>>3}else{g=f}f=J[h+4>>2];if(g-(f-i>>3)>>>0>>0){break i}d=d<<3;hj(f,J[k+36>>2],d);J[h+4>>2]=d+J[h+4>>2];f=0;break h}Z(11738,53895,564,4042);B()}if((f|0)==-3){break g}if(m&1){if(H[e+60|0]&1){break a}lj((J[e+56>>2]-J[e+48>>2]>>3)+1|0,8,h,t,v);d=J[e+48>>2];f=J[e+52>>2]-d|0;g=(f>>3)+1|0;if(g>>>0>J[e+56>>2]-d>>3>>>0){break e}J[e+52>>2]=d+(g<<3);if((f|0)==-8){break f}d=d+f|0;J[d>>2]=b;J[d+4>>2]=c}m=0;g=J[e+48>>2];if((g|0)==J[e+52>>2]){break g}p=J[(J[J[J[e+44>>2]+8>>2]>>2]<<2)+159120>>2]>>>3|0;while(1){f=(m<<3)+g|0;d=J[f>>2];h=J[f+4>>2];j=J[a+4>>2];j:{k:{if(!j){break k}g=J[J[a>>2]+(mxa(d,h,j)<<2)>>2];if((g|0)==-1){break k}f=J[a+8>>2];while(1){g=f+(g<<4)|0;if((d|0)==J[g>>2]&(h|0)==J[g+4>>2]){break j}g=J[g+12>>2];if((g|0)!=-1){continue}break}}i=1;if(s&1){i=!xK(n,d,h,0,e+16|0);j=J[a+4>>2]}H[e+16|0]=i;l:{m:{n:{if(!j){f=J[a+8>>2];break n}f=J[a+8>>2];g=J[J[a>>2]+(mxa(d,h,j)<<2)>>2];if((g|0)==-1){break n}while(1){g=(g<<4)+f|0;if((d|0)==J[g>>2]&(h|0)==J[g+4>>2]){break m}g=J[g+12>>2];if((g|0)!=-1){continue}break}}g=J[a+16>>2]-f>>4;f=J[a+24>>2];if((g|0)==(f|0)){f=f+32|0;AN(a,(f<<1>>>0)/3|0,f)}BN(a,d,h,e+16|0);break l}H[g+8|0]=i}if(i&s){break j}J[e+24>>2]=0;J[e+28>>2]=0;J[e+32>>2]=0;J[e+36>>2]=0;H[e+32|0]=!i;J[e+16>>2]=d;J[e+20>>2]=h;i=0;f=J[J[e+44>>2]+8>>2];j=J[f+32>>2]-1|0;o:{if((j|0)<0){break o}q=J[f+28>>2];g=0;while(1){k=((j-g|0)/2|0)+g|0;i=q+P(k,48)|0;f=J[i+16>>2];l=J[i+20>>2];if((d|0)==(f|0)&(h|0)==(l|0)){break o}i=(h|0)==(l|0)&d>>>0>f>>>0|h>>>0>l>>>0?k+1|0:g;f=(h|0)==(l|0)&d>>>0>>0|h>>>0>>0;g=f?g:i;j=f?k-1|0:j;if((g|0)<=(j|0)){continue}break}i=0}if(!i){J[e+8>>2]=b;J[e+12>>2]=c;J[e>>2]=d;J[e+4>>2]=h;dj(4,96538,4546,e);Zi[J[a+36>>2]](J[a+40>>2],e+16|0);break j}f=J[i>>2];J[e+28>>2]=p;J[e+24>>2]=f;Zi[J[a+36>>2]](J[a+40>>2],e+16|0);if(!J[i+40>>2]|K[a+45|0]!=1){break j}AK(a,d,h)}m=m+1|0;g=J[e+48>>2];if(m>>>0>2]-g>>3>>>0){continue}break}m=0}o=o+1|0;if((u|0)==(o|0)){break d}continue}break}break b}Z(144782,53895,514,59583);B()}if(H[e+60|0]&1){break c}a=J[e+48>>2]}if(!a){break c}cj(a)}Lj(r);Ui=e- -64|0;return}Z(145396,53895,487,84789);B()}Z(151729,53895,501,2284);B()}function Qia(a,b){a=a|0;b=b|0;var c=0,d=0,e=0,f=0,g=0,h=0,i=0,j=0,k=0,l=0,m=0,n=0,o=Q(0),p=0;e=Ui-736|0;Ui=e;g=J[a+8>>2];j=J[g+124>>2];o=N[J[a+4>>2]+4>>2];a=0;i=Ui-16|0;Ui=i;J[i+8>>2]=0;J[i+12>>2]=0;a:{b:{d=J[j+4>>2];c=J[j>>2];if((d|0)!=(c|0)){d=d-c>>2;d=d>>>0<=1?1:d;while(1){c=J[j>>2];if(J[j+4>>2]-c>>2>>>0<=a>>>0){break a}uK(J[c+(a<<2)>>2],o);a=a+1|0;if((d|0)!=(a|0)){continue}break}}a=J[j+4>>2];d=J[j>>2];if((a|0)==(d|0)){a=0}else{a=a-d>>2;f=a>>>0<=1?1:a;c=0;a=0;while(1){d=J[j>>2];if(J[j+4>>2]-d>>2>>>0<=a>>>0){break a}d=J[d+(a<<2)>>2];c:{if(J[d+116>>2]==J[d+112>>2]){break c}h=J[d+88>>2];if(!h){break c}Zi[h|0](J[d+92>>2],J[d+96>>2]);c=1}a=a+1|0;if((f|0)!=(a|0)){continue}break}a=c?4:0}Ui=i+16|0;break b}j=a;d:{e:{a=J[g+4>>2];d=J[g>>2];if((a|0)==(d|0)){break e}a=a-d>>2;p=a>>>0<=1?1:a;f:{while(1){a=J[g>>2];if(J[g+4>>2]-a>>2>>>0>k>>>0){d=J[a+(k<<2)>>2];c=K[d+262|0];a=c&253;H[d+262|0]=a;if((c&5)==5){g:{h:{if(c&8){break h}c=J[d+172>>2];if(!c){break g}if(K[c+52|0]){break h}a=K[d+262|0];break g}a=e+44|0;J[a>>2]=0;J[a+4>>2]=0;J[a+16>>2]=0;J[a+8>>2]=0;J[a+12>>2]=0;Ek(a,d+176|0,8);c=J[d+208>>2];if(c){Ek(a,c,4);Ek(a,c+4|0,J[c+104>>2]<<2)}a=J[d+172>>2];if(a){yr(a,e+44|0)}if(J[d+232>>2]!=J[d+228>>2]){i=0;while(1){a=J[e+48>>2];J[e+24>>2]=J[e+44>>2];J[e+28>>2]=a;J[e+40>>2]=J[e+60>>2];a=J[e+56>>2];J[e+32>>2]=J[e+52>>2];J[e+36>>2]=a;if(!K[874264]){nl();H[874264]=1}if(!(!J[e+60>>2]|K[874164]!=1)){J[e+40>>2]=0}a=J[d+228>>2];if(J[d+232>>2]-a>>7>>>0<=i>>>0){break d}n=i<<7;h=a+n|0;a=J[d+208>>2];if(!a){c=J[d+128>>2];a=J[c+28>>2];f=(J[c+32>>2]-a|0)/24|0;c=J[h+120>>2];if(f>>>0<=c>>>0){break a}a=J[(a+P(c,24)|0)+4>>2]}c=J[a>>2];l=sr(c,1);f=J[d+128>>2];a=J[f+28>>2];m=(J[f+32>>2]-a|0)/24|0;f=J[h+120>>2];if(m>>>0<=f>>>0){break d}m=e+24|0;f=a+P(f,24)|0;Ek(m,J[f+16>>2],J[f+20>>2]<<4);i:{if(!(!l|J[c+168>>2]!=1)){Ek(m,J[h+108>>2],128);a=J[d+208>>2];if((c|0)==J[a>>2]?a:0){break i}a=0;h=e+400|0;ij(h,0,336);J[e+728>>2]=336;ct(c,l,h,J[c+168>>2]==1?2:1);c=e- -64|0;ij(c,0,336);J[e+392>>2]=336;dt(0,65535,J[f+8>>2],J[f+12>>2],h,c);c=J[e+388>>2];if(!c){break i}while(1){f=(e- -64|0)+P(a,40)|0;if(J[f+20>>2]!=1){c=0;h=J[f+16>>2]-1|0;if(h>>>0<=6){c=J[(h<<2)+160504>>2]}h=e+24|0;l=J[f+28>>2];f=J[f+12>>2]-1|0;if(f>>>0<=6){f=J[(f<<2)+160476>>2]}else{f=0}Ek(h,l,P(f,c));c=J[e+388>>2]}a=a+1|0;if(c>>>0>a>>>0){continue}break}break i}c=e+24|0;a=J[f+4>>2];Ek(c,a,4);Ek(c,a+4|0,J[a+104>>2]<<2)}a=mn(e+24|0);c=J[d+228>>2];f=J[d+232>>2]-c>>7;if(f>>>0<=i>>>0){break f}J[(c+n|0)+112>>2]=a;i=i+1|0;if(f>>>0>i>>>0){continue}break}}a=K[d+262|0]&-9}H[d+262|0]=a|2;J[78888]=J[78888]+1;J[e+16>>2]=1;J[e+20>>2]=0;J[e+8>>2]=1;J[e+12>>2]=0}k=k+1|0;if((p|0)!=(k|0)){continue}break e}break}break a}break d}if(M[g+132>>2]<=15){a=0;while(1){d=a<<2;Ps(J[d+J[g+96>>2]>>2]);c=J[d+J[g+96>>2]>>2];if(c){I[c+20>>1]=0}J[d+J[g+104>>2]>>2]=0;d=M[g+132>>2]>a>>>0;a=a+1|0;if(d){continue}break}Ps(J[g+92>>2]);a=J[g+92>>2];if(a){I[a+20>>1]=0}J[g+132>>2]=0;a=K[g+144|0]+1|0;H[g+144|0]=(a&255)!=255?a:0;H[b|0]=(j|0)==4;Ui=e+736|0;return 0}Z(89067,40609,1605,62186);B()}Z(145396,53895,487,84789);B()}Z(145396,53895,494,84789);B()}function DT(a,b,c,d,e){var f=0,g=Q(0),h=Q(0),i=Q(0),j=0,k=Q(0),l=Q(0),m=Q(0),n=Q(0),o=Q(0),p=Q(0),q=Q(0),r=Q(0),s=Q(0),t=Q(0),u=Q(0),v=Q(0),w=Q(0),x=Q(0),y=Q(0),z=Q(0),A=Q(0),B=Q(0),C=Q(0),D=Q(0),E=Q(0),F=Q(0),G=Q(0),H=Q(0),I=Q(0),L=Q(0),M=Q(0),O=Q(0),P=Q(0),R=Q(0),S=Q(0),T=Q(0),U=Q(0),V=Q(0),W=Q(0),X=Q(0),Y=Q(0),Z=Q(0),_=Q(0),$=Q(0),aa=0,ba=Q(0),ca=Q(0);j=Ui-48|0;Ui=j;aa=K[a+16|0];f=aa?c:d;W=N[f+60>>2];O=N[f+52>>2];X=N[f+56>>2];c=aa?d:c;Y=N[c+60>>2];Z=N[c+52>>2];_=N[c+56>>2];d=J[c+192>>2];p=N[f+44>>2];l=N[f+12>>2];m=N[f+28>>2];n=N[f+36>>2];q=N[f+4>>2];r=N[f+20>>2];t=N[f+40>>2];x=N[c+44>>2];y=N[c+36>>2];z=N[c+40>>2];u=N[f+8>>2];A=N[c+12>>2];B=N[c+4>>2];C=N[c+8>>2];v=N[f+24>>2];F=N[c+28>>2];G=N[c+20>>2];H=N[c+24>>2];k=N[b+12>>2];o=N[b+8>>2];g=N[b>>2];h=N[b+4>>2];b=J[f+192>>2];I=N[b+56>>2];$=N[b+48>>2];L=N[b+52>>2];J[j+28>>2]=0;i=Q(Q(2)/Q(Q(k*k)+Q(Q(o*o)+Q(Q(g*g)+Q(h*h)))));s=Q(g*i);P=Q(g*s);D=Q(h*i);R=Q(h*D);w=Q(Q(1)-Q(P+R));i=Q(o*i);S=Q(g*i);T=Q(k*D);E=Q(S+T);U=Q(h*i);V=Q(k*s);h=Q(U-V);s=Q(Q(x*w)+Q(Q(y*E)+Q(z*h)));M=Q(Q(w*A)+Q(Q(E*B)+Q(C*h)));h=Q(Q(w*F)+Q(Q(E*G)+Q(H*h)));w=Q(-$);N[j+24>>2]=Q(Q(Q(Q(n*s)+Q(Q(q*M)+Q(r*h)))*w)-Q(L*Q(Q(t*s)+Q(Q(u*M)+Q(v*h)))))-Q(I*Q(Q(p*s)+Q(Q(l*M)+Q(m*h))));h=Q(U+V);D=Q(g*D);E=Q(k*i);g=Q(D-E);s=Q(o*i);k=Q(Q(1)-Q(P+s));o=Q(Q(x*h)+Q(Q(y*g)+Q(z*k)));i=Q(Q(h*A)+Q(Q(g*B)+Q(C*k)));g=Q(Q(h*F)+Q(Q(g*G)+Q(H*k)));N[j+20>>2]=Q(Q(Q(Q(n*o)+Q(Q(q*i)+Q(r*g)))*w)-Q(L*Q(Q(t*o)+Q(Q(u*i)+Q(v*g)))))-Q(I*Q(Q(p*o)+Q(Q(l*i)+Q(m*g))));g=Q(S-T);k=Q(Q(1)-Q(R+s));h=Q(D+E);o=Q(Q(x*g)+Q(Q(y*k)+Q(z*h)));i=Q(Q(g*A)+Q(Q(k*B)+Q(C*h)));g=Q(Q(g*F)+Q(Q(k*G)+Q(H*h)));N[j+16>>2]=Q(Q(Q(Q(n*o)+Q(Q(q*i)+Q(r*g)))*w)-Q(L*Q(Q(t*o)+Q(Q(u*i)+Q(v*g)))))-Q(I*Q(Q(p*o)+Q(Q(l*i)+Q(m*g))));c=j+16|0;Zi[J[J[d>>2]+60>>2]](j+32|0,d,c);D=N[f+60>>2];w=N[f+44>>2];E=N[f+40>>2];s=N[f+36>>2];M=N[f+56>>2];$=N[f+28>>2];P=N[f+24>>2];R=N[f+20>>2];S=N[f+52>>2];T=N[f+12>>2];U=N[f+8>>2];V=N[f+4>>2];ba=N[b+64>>2];o=N[b+56>>2];I=N[b+48>>2];L=N[b+52>>2];g=N[j+40>>2];k=N[j+32>>2];h=N[j+36>>2];a=J[a+12>>2];i=N[a+1120>>2];J[e+4>>2]=a;ca=i;i=Q(-O);O=Q(Q(Q(Q(p*Y)+Q(Q(l*Z)+Q(_*m)))+Q(Q(Q(l*i)-Q(m*X))-Q(p*W)))+Q(Q(g*Q(Q(x*p)+Q(Q(A*l)+Q(F*m))))+Q(Q(k*Q(Q(y*p)+Q(Q(B*l)+Q(G*m))))+Q(h*Q(Q(z*p)+Q(Q(C*l)+Q(H*m)))))));q=Q(Q(Q(Q(n*Y)+Q(Q(q*Z)+Q(_*r)))+Q(Q(Q(q*i)-Q(r*X))-Q(n*W)))+Q(Q(g*Q(Q(x*n)+Q(Q(A*q)+Q(F*r))))+Q(Q(k*Q(Q(y*n)+Q(Q(B*q)+Q(G*r))))+Q(h*Q(Q(z*n)+Q(Q(C*q)+Q(H*r)))))));r=Q(Q(Q(Q(t*Y)+Q(Q(u*Z)+Q(_*v)))+Q(Q(Q(u*i)-Q(v*X))-Q(t*W)))+Q(Q(g*Q(Q(x*t)+Q(Q(A*u)+Q(F*v))))+Q(Q(k*Q(Q(y*t)+Q(Q(B*u)+Q(G*v))))+Q(h*Q(Q(z*t)+Q(Q(C*u)+Q(H*v)))))));p=Q(Q(Q(o*O)+Q(Q(I*q)+Q(L*r)))-ba);if(ca>p){t=N[f+12>>2];u=N[f+4>>2];v=N[f+8>>2];x=N[f+28>>2];y=N[f+20>>2];z=N[f+24>>2];A=N[f+44>>2];l=N[b+56>>2];B=N[f+36>>2];m=N[b+48>>2];C=N[f+40>>2];n=N[b+52>>2];J[j+28>>2]=0;N[j+24>>2]=Q(A*l)+Q(Q(B*m)+Q(n*C));N[j+20>>2]=Q(x*l)+Q(Q(y*m)+Q(n*z));N[j+16>>2]=Q(t*l)+Q(Q(u*m)+Q(v*n));J[j+12>>2]=0;l=Q(O-Q(o*p));m=Q(q-Q(I*p));n=Q(r-Q(L*p));N[j+8>>2]=D+Q(Q(w*l)+Q(Q(s*m)+Q(n*E)));N[j+4>>2]=M+Q(Q($*l)+Q(Q(R*m)+Q(n*P)));N[j>>2]=S+Q(Q(T*l)+Q(Q(V*m)+Q(U*n)));Zi[J[J[e>>2]+16>>2]](e,c,j,p)}Ui=j+48|0}function tia(a){a=a|0;var b=0,c=0,d=0,e=0,f=0,g=0,h=0;c=J[a+8>>2];d=J[c+16>>2];a:{b:{c:{d:{h=J[J[a+16>>2]>>2];if(h>>>0>2]-d>>3>>>0){d=J[d+(h<<3)>>2];b=J[c>>2];if(d>>>0<(J[c+4>>2]-b|0)/240>>>0){e:{g=J[J[J[a+4>>2]+80>>2]>>2];b=b+P(d,240)|0;a=J[b+156>>2];if(a){zr(a)}f:{e=J[b+152>>2];if(!e){break f}g:{d=J[e+8>>2];a=J[e+4>>2];if((d|0)!=(a|0)){a=d-a>>4;d=a>>>0<=1?1:a;while(1){a=J[e+4>>2];if(J[e+8>>2]-a>>4>>>0<=f>>>0){break g}a=J[(a+(f<<4)|0)+8>>2];if(a){vj(g,a)}f=f+1|0;if((d|0)!=(f|0)){continue}break}}a=J[e>>2];if(a){vj(g,a)}d=J[b+152>>2];if(!d){break f}h:{if(H[d+16|0]&1){break h}a=J[d+4>>2];if(!a){break h}cj(a)}cj(d);break f}break a}i:{j:{e=J[b+204>>2];if((e|0)!=65535){a=J[c+68>>2];if(e>>>0>=J[c+72>>2]-a>>3>>>0){break e}a=J[a+(e<<3)>>2];d=J[c+52>>2];if(a>>>0>=J[c+56>>2]-d>>3>>>0){break e}d=d+(a<<3)|0;a=J[d>>2];if(a){if(!K[d+4|0]){break j}cj(a)}k:{a=J[c+68>>2];if(e>>>0>2]-a>>3>>>0){g=J[c+52>>2];b=J[c+56>>2]-g>>3;d=b-1|0;f=J[c+84>>2];if(d>>>0>=J[c+88>>2]-f>>2>>>0){break a}e=a+(e<<3)|0;a=J[e>>2];if(b>>>0<=a>>>0){break d}b=J[f+(d<<2)>>2];a=g+(a<<3)|0;J[a>>2]=0;J[a+4>>2]=0;a=J[c+68>>2];if(b>>>0>=J[c+72>>2]-a>>3>>>0){break a}d=J[e>>2];J[a+(b<<3)>>2]=d;a=J[c+84>>2];if(d>>>0>=J[c+88>>2]-a>>2>>>0){break a}J[a+(d<<2)>>2]=b;a=J[e>>2];g=J[c+56>>2];d=J[c+52>>2];if(a>>>0>=g-d>>3>>>0){break c}b=d+(a<<3)|0;d=g-8|0;a=J[d+4>>2];J[b>>2]=J[d>>2];J[b+4>>2]=a;a=J[c+56>>2]-8|0;J[c+56>>2]=a;if(a>>>0>2]){break b}J[e+4>>2]=J[c+100>>2];J[c+100>>2]=e-J[c+68>>2]>>3;break k}break a}}break i}Z(112190,41433,409,61209);B()}g=J[c>>2];f=(J[c+4>>2]-g|0)/240|0;l:{a=J[c+16>>2];if(h>>>0>2]-a>>3>>>0){d=f-1|0;b=J[c+32>>2];if(d>>>0>=J[c+36>>2]-b>>2>>>0){break e}e=f;f=a+(h<<3)|0;a=J[f>>2];if(e>>>0<=a>>>0){break d}b=J[b+(d<<2)>>2];ij(g+P(a,240)|0,0,240);a=J[c+16>>2];if(b>>>0>=J[c+20>>2]-a>>3>>>0){break e}d=J[f>>2];J[a+(b<<3)>>2]=d;a=J[c+32>>2];if(d>>>0>=J[c+36>>2]-a>>2>>>0){break e}J[a+(d<<2)>>2]=b;m:{a=J[f>>2];b=J[c+4>>2];d=J[c>>2];if(a>>>0<(b-d|0)/240>>>0){a=d+P(a,240)|0;N[a>>2]=N[b-240>>2];N[a+4>>2]=N[b-236>>2];N[a+8>>2]=N[b-232>>2];N[a+12>>2]=N[b-228>>2];N[a+16>>2]=N[b-224>>2];N[a+20>>2]=N[b-220>>2];N[a+24>>2]=N[b-216>>2];N[a+28>>2]=N[b-212>>2];N[a+32>>2]=N[b-208>>2];N[a+36>>2]=N[b-204>>2];N[a+40>>2]=N[b-200>>2];N[a+44>>2]=N[b-196>>2];N[a+48>>2]=N[b-192>>2];N[a+52>>2]=N[b-188>>2];N[a+56>>2]=N[b-184>>2];N[a+60>>2]=N[b-180>>2];N[a+64>>2]=N[b-176>>2];N[a+68>>2]=N[b-172>>2];N[a+72>>2]=N[b-168>>2];N[a+80>>2]=N[b-160>>2];N[a+84>>2]=N[b-156>>2];N[a+88>>2]=N[b-152>>2];N[a+92>>2]=N[b-148>>2];N[a+96>>2]=N[b-144>>2];N[a+100>>2]=N[b-140>>2];N[a+104>>2]=N[b-136>>2];N[a+112>>2]=N[b-128>>2];N[a+116>>2]=N[b-124>>2];N[a+120>>2]=N[b-120>>2];N[a+128>>2]=N[b-112>>2];N[a+132>>2]=N[b-108>>2];N[a+136>>2]=N[b-104>>2];N[a+140>>2]=N[b-100>>2];hj(a+144|0,b-96|0,92);a=J[c+4>>2]-240|0;J[c+4>>2]=a;if(a>>>0>2]){break b}break m}break c}J[f+4>>2]=J[c+48>>2];J[c+48>>2]=f-J[c+16>>2]>>3;break l}break e}return 0}}}break a}Z(59182,54416,152,68876);B()}Z(145381,53895,537,43537);B()}Z(12682,53895,540,43537);B()}Z(145396,53895,487,84789);B()}function Zq(a,b){var c=0,d=0,e=0,f=0,g=0,h=0,i=0,j=0,k=0,l=0,m=0,n=0,o=0,p=0,q=0,r=0,s=0,t=0,u=0,w=0,y=0,B=0,C=0,D=0,E=0;o=Ui-16|0;Ui=o;A(+b);g=v(1)|0;m=v(0)|0;A(+a);e=v(1)|0;c=v(0)|0;r=g>>>20|0;s=r&2047;t=s-1086|0;j=e>>>20|0;a:{b:{if(t>>>0>4294967167&j-2047>>>0>=4294965250){break b}q=m<<1;f=g<<1|m>>>31;h=f+2097152|0;if(!q&(h|0)==2097152|h>>>0<2097152){d=1;if(!(f|q)|!c&(e|0)==1072693248){break a}h=e<<1;e=c;c=h|c>>>31;e=e<<1;if(!((!q&(f|0)==-2097152|f>>>0<4292870144)&(!e&(c|0)==-2097152|c>>>0<4292870144))){d=a+b;break a}if(!e&(c|0)==2145386496){break a}d=(g|0)<0^c>>>0<2145386496?0:b*b;break a}f=(e<<1|c>>>31)+2097152|0;if(!(c<<1)&(f|0)==2097152|f>>>0<2097152){d=a*a;if((e|0)<0){d=(LS(m,g)|0)==1?-d:d}if((g|0)>0|(g|0)>=0){break a}c=Ui-16|0;O[c+8>>3]=1/d;d=O[c+8>>3];break a}if((e|0)<0){c=LS(m,g);if(!c){a=a-a;d=a/a;break a}j=j&2047;p=((c|0)==1)<<18;A(+a);e=v(1)|0;c=v(0)|0;e=e&2147483647}if(t>>>0<=4294967167){d=1;f=(e|0)==1072693248;if(f&!c){break a}if(s>>>0<=957){d=((c|0)!=0&f|e>>>0>1072693248?b:-b)+1;break a}if(((e|0)==1072693248&(c|0)!=0|e>>>0>1072693248)!=(r>>>0>2047|0)){c=Ui-16|0;O[c+8>>3]=3105036184601418e216;d=O[c+8>>3]*3105036184601418e216;break a}c=Ui-16|0;O[c+8>>3]=12882297539194267e-247;d=O[c+8>>3]*12882297539194267e-247;break a}if(j){break b}A(+(a*4503599627370496));e=v(1)|0;c=v(0)|0;e=(e&2147483647)-54525952|0}x(0,m&-134217728);x(1,g|0);u=+z();g=e-1072076117|0;f=g;l=+(f>>20);h=(f>>>13&127)<<5;B=l*O[26073]+O[h+208672>>3];m=0;g=c-m|0;f=e-((f&-1048576)+(c>>>0>>0)|0)|0;c=f;x(0,0);x(1,(g- -2147483648>>>0<2147483648?c+1|0:c)|0);a=+z();i=O[h+208648>>3];d=a*i+-1;x(0,g|0);x(1,c|0);w=(+z()-a)*i;a=d+w;n=O[26074];i=a*n;y=l*O[26072]+O[h+208664>>3];l=a+y;k=d;d=d*n;k=k*d;n=l+k;k=B+(a+(y-l))+w*(i+d)+(k+(l-n));d=a*i;a=k+a*d*(d*(d*(a*O[26080]+O[26079])+(a*O[26078]+O[26077]))+(a*O[26076]+O[26075]));d=n+a;O[o+8>>3]=a+(n-d);A(+d);c=v(1)|0;x(0,v(0)&-134217728);x(1,c|0);i=+z();a=u*i;b=(b-u)*i+b*(O[o+8>>3]+(d-i));A(+a);c=v(1)|0;v(0)|0;c:{d:{j=c>>>20&2047;if(j-969>>>0<63){break d}if(j>>>0<969){a=a+1;d=p?-a:a;break c}c=j>>>0<1033;j=0;if(c){break d}A(+a);c=v(1)|0;v(0)|0;if((c|0)<0){c=Ui-16|0;O[c+8>>3]=p?-12882297539194267e-247:12882297539194267e-247;d=O[c+8>>3]*12882297539194267e-247;break c}c=Ui-16|0;O[c+8>>3]=p?-3105036184601418e216:3105036184601418e216;d=O[c+8>>3]*3105036184601418e216;break c}k=b;b=O[25185];d=a*O[25184]+b;b=d-b;a=k+(b*O[25187]+(b*O[25186]+a));b=a*a;k=b*b*(a*O[25191]+O[25190]);b=b*(a*O[25189]+O[25188]);A(+d);v(1)|0;g=v(0)|0;e=g<<4&2032;a=k+(b+(O[e+201584>>3]+a));e=e+201592|0;f=J[e>>2];h=J[e+4>>2];e=g+p|0;c=f;f=e<<13;e=0;c=c+e|0;h=f+h|0;h=c>>>0>>0?h+1|0:h;if(!j){e:{if(!(g&-2147483648)){x(0,c|0);x(1,h-1058013184|0);b=+z();d=(b*a+b)*5486124068793689e288;break e}x(0,c|0);f=h+1071644672|0;x(1,f|0);b=+z();i=b*a;a=i+b;if(R(a)<1){c=Ui-16|0;O[c+8>>3]=22250738585072014e-324;O[c+8>>3]=O[c+8>>3]*22250738585072014e-324;x(0,0);x(1,f&-2147483648);d=a<0?-1:1;l=a+d;a=l+(i+(b-a)+(a+(d-l)))-d;a=(C=+z(),D=a,E=a==0,E?C:D)}d=a*22250738585072014e-324}break c}x(0,c|0);x(1,h|0);b=+z();d=b*a+b}}Ui=o+16|0;return d}function HW(a){a=a|0;var b=0,c=0,d=0,e=0,f=0,g=0,h=0,i=0,j=0,k=0,l=0,m=0,n=0;c=Ui-1680|0;Ui=c;l=1;i=c+1672|0;e=Aj(a,1,i);d=J[c+1672>>2];b=c+636|0;J[b+4>>2]=0;J[b+8>>2]=a;J[b>>2]=b+12;a:{if((d|0)>0){m=d+e|0;n=c+608|1;g=1;while(1){d=K[e|0];b:{if((d|0)!=37){b=J[c+636>>2];if(i>>>0<=b>>>0){_l(c+636|0);d=K[e|0];b=J[c+636>>2]}J[c+636>>2]=b+1;H[b|0]=d;e=e+1|0;break b}f=e+1|0;d=K[e+1|0];if((d|0)==37){b=37;d=J[c+636>>2];if(i>>>0<=d>>>0){_l(c+636|0);d=J[c+636>>2];b=K[f|0]}J[c+636>>2]=d+1;H[d|0]=b;e=e+2|0;break b}b=0;e=f;c:{if(!d){break c}while(1){if((d&255)>>>0>63){b=d;break c}j=d&31;if((d&63)>>>0>=32){j=1<>>32-j}if(!(k&1|j&75785)){b=d;break c}d=K[e+1|0];e=e+1|0;if(d){continue}break}}if(e-f>>>0>=6){fj(a,136281,0);b=K[e|0]}b=((b&255)-48>>>0<10)+e|0;d=(K[b|0]-48>>>0<10)+b|0;b=K[d|0];if((b|0)==46){b=K[d+1|0]-48>>>0<10;d=(b?d+2|0:d+1|0)+(K[(b?2:1)+d|0]-48>>>0<10)|0;b=K[d|0]}if((b&255)-48>>>0<=9){fj(a,137971,0)}g=g+1|0;H[c+608|0]=37;b=(d-f|0)+1|0;H[Pz(n,f,b)+b|0]=0;e=d+1|0;d:{e:{f:{g:{h:{i:{j:{k:{l:{b=K[d|0];switch(b-69|0){case 0:case 2:case 32:case 33:case 34:break f;case 46:break h;case 44:break i;case 19:case 42:case 48:case 51:break j;case 31:case 36:break k;case 30:break l;default:break g}}h=wj(a,g);m:{if(R(h)<2147483648){d=~~h;break m}d=-2147483648}J[c+16>>2]=d;Un(c+96|0,c+608|0,c+16|0);break e}b=c+608|0;b=yj(b)+b|0;d=b-1|0;f=K[d|0];H[d|0]=108;H[d+1|0]=0;H[b+1|0]=0;H[b|0]=f;h=wj(a,g);n:{if(R(h)<2147483648){d=~~h;break n}d=-2147483648}J[c+32>>2]=d;Un(c+96|0,c+608|0,c+32|0);break e}b=c+608|0;b=yj(b)+b|0;d=b-1|0;f=K[d|0];H[d|0]=108;H[d+1|0]=0;H[b+1|0]=0;H[b|0]=f;h=wj(a,g);o:{if(h<4294967296&h>=0){d=~~h>>>0;break o}d=0}J[c+48>>2]=d;Un(c+96|0,c+608|0,c+48|0);break e}d=Aj(a,g,c+1676|0);b=J[c+636>>2];if(i>>>0<=b>>>0){_l(c+636|0);b=J[c+636>>2]}J[c+636>>2]=b+1;H[b|0]=34;b=J[c+1676>>2];J[c+1676>>2]=b-1;if(b){while(1){p:{q:{r:{s:{t:{u:{b=K[d|0];switch(b|0){case 1:case 2:case 3:case 4:case 5:case 6:case 7:case 8:case 9:case 11:case 12:case 14:case 15:case 16:case 17:case 18:case 19:case 20:case 21:case 22:case 23:case 24:case 25:case 26:case 27:case 28:case 29:case 30:case 31:case 32:case 33:break q;case 0:break r;case 13:break s;case 10:case 34:break t;default:break u}}if((b|0)!=92){break q}}b=J[c+636>>2];if(i>>>0<=b>>>0){_l(c+636|0);b=J[c+636>>2]}J[c+636>>2]=b+1;H[b|0]=92;b=J[c+636>>2];if(i>>>0<=b>>>0){_l(c+636|0);b=J[c+636>>2]}f=K[d|0];J[c+636>>2]=b+1;H[b|0]=f;break p}Yn(c+636|0,36295,2);break p}Yn(c+636|0,111663,4);break p}f=J[c+636>>2];if(i>>>0<=f>>>0){_l(c+636|0);f=J[c+636>>2];b=K[d|0]}J[c+636>>2]=f+1;H[f|0]=b}b=J[c+1676>>2];J[c+1676>>2]=b-1;d=d+1|0;if(b){continue}break}}d=J[c+636>>2];if(i>>>0<=d>>>0){_l(c+636|0);d=J[c+636>>2]}J[c+636>>2]=d+1;H[d|0]=34;break b}b=Aj(a,g,c+1676|0);d=c+608|0;if(!Hk(d,46)&M[c+1676>>2]>99){break d}J[c+80>>2]=b;Un(c+96|0,d,c+80|0);break e}J[c>>2]=b<<24>>24;l=fj(a,145901,c);break a}O[c+64>>3]=wj(a,g);Sv(c+96|0,c+608|0,c- -64|0)}b=c+96|0;Yn(c+636|0,b,yj(b));break b}uj(a,g);ju(c+636|0)}if(e>>>0>>0){continue}break}}Ym(c+636|0)}Ui=c+1680|0;return l|0}function e2(a){a=a|0;var b=0,c=0,d=0,e=0,f=0,g=0;c=Ui-160|0;Ui=c;f=J[a+8>>2]-J[a+12>>2]>>4;J[c+152>>2]=0;J[c+156>>2]=0;J[c+144>>2]=0;J[c+148>>2]=0;J[c+136>>2]=0;J[c+140>>2]=0;J[c+128>>2]=0;J[c+132>>2]=0;b=c+128|0;H[b|0]=0;H[b+1|0]=0;H[b+2|0]=0;H[b+3|0]=0;H[b+4|0]=0;H[b+5|0]=0;H[b+6|0]=0;H[b+7|0]=0;H[b+24|0]=0;H[b+25|0]=0;H[b+26|0]=0;H[b+27|0]=0;H[b+28|0]=0;H[b+29|0]=0;H[b+30|0]=0;H[b+31|0]=0;H[b+16|0]=0;H[b+17|0]=0;H[b+18|0]=0;H[b+19|0]=0;H[b+20|0]=0;H[b+21|0]=0;H[b+22|0]=0;H[b+23|0]=0;H[b+8|0]=0;H[b+9|0]=0;H[b+10|0]=0;H[b+11|0]=0;H[b+12|0]=0;H[b+13|0]=0;H[b+14|0]=0;H[b+15|0]=0;a:{b:{if((f|0)<=1){Sk(a,1,b,0);break b}c:{d:{e:{if((f|0)==3){J[c+120>>2]=0;J[c+124>>2]=0;J[c+112>>2]=0;J[c+116>>2]=0;J[c+104>>2]=0;J[c+108>>2]=0;J[c+96>>2]=0;J[c+100>>2]=0;if(!kj(a,1)){b=c+96|0;H[b|0]=0;H[b+1|0]=0;H[b+2|0]=0;H[b+3|0]=0;H[b+4|0]=0;H[b+5|0]=0;H[b+6|0]=0;H[b+7|0]=0;H[b+24|0]=0;H[b+25|0]=0;H[b+26|0]=0;H[b+27|0]=0;H[b+28|0]=0;H[b+29|0]=0;H[b+30|0]=0;H[b+31|0]=0;H[b+16|0]=0;H[b+17|0]=0;H[b+18|0]=0;H[b+19|0]=0;H[b+20|0]=0;H[b+21|0]=0;H[b+22|0]=0;H[b+23|0]=0;H[b+8|0]=0;H[b+9|0]=0;H[b+10|0]=0;H[b+11|0]=0;H[b+12|0]=0;H[b+13|0]=0;H[b+14|0]=0;H[b+15|0]=0;$l(a,b)}if(!kj(a,1)){b=c+96|0;break d}b=Bu(a,1);if(b){break d}f:{b=Ij(a,1,0);e=eo(b,c+128|0);switch(e+6|0){case 0:case 6:break c;case 2:break e;default:break f}}J[c+4>>2]=e;J[c>>2]=b;b=fj(a,130714,c);break a}J[c+52>>2]=49412;J[c+48>>2]=55920;J[c+44>>2]=49412;J[c+40>>2]=55920;J[c+36>>2]=49412;J[c+32>>2]=55920;fj(a,128052,c+32|0);break b}J[c+16>>2]=b;b=fj(a,127004,c+16|0);break a}e=J[b+4>>2];J[c+128>>2]=J[b>>2];J[c+132>>2]=e}g:{h:{if(kj(a,2)){if(Mk(a,2)){b=Ij(a,2,0);i:{if(kj(a,1)){if(!Mk(a,1)){break i}if(K[Ij(a,1,0)|0]){break i}}e=yj(b);if(!e){break h}TJ(a,b,e,c+144|0);break g}J[c+144>>2]=bj(b);J[c+148>>2]=Yi;break g}J[c+144>>2]=Tl(a,2);J[c+148>>2]=Yi;break g}if(!kj(a,1)){b=J[c+116>>2];J[c+144>>2]=J[c+112>>2];J[c+148>>2]=b;break g}if(!kj(a,3)){break g}b=fj(a,115593,0);break a}J[c+88>>2]=0;J[c+92>>2]=0;J[c+80>>2]=0;J[c+84>>2]=0;J[c+72>>2]=0;J[c+76>>2]=0;J[c+64>>2]=0;J[c+68>>2]=0;b=c- -64|0;H[b|0]=0;H[b+1|0]=0;H[b+2|0]=0;H[b+3|0]=0;H[b+4|0]=0;H[b+5|0]=0;H[b+6|0]=0;H[b+7|0]=0;H[b+24|0]=0;H[b+25|0]=0;H[b+26|0]=0;H[b+27|0]=0;H[b+28|0]=0;H[b+29|0]=0;H[b+30|0]=0;H[b+31|0]=0;H[b+16|0]=0;H[b+17|0]=0;H[b+18|0]=0;H[b+19|0]=0;H[b+20|0]=0;H[b+21|0]=0;H[b+22|0]=0;H[b+23|0]=0;H[b+8|0]=0;H[b+9|0]=0;H[b+10|0]=0;H[b+11|0]=0;H[b+12|0]=0;H[b+13|0]=0;H[b+14|0]=0;H[b+15|0]=0;$l(a,b);b=J[c+84>>2];J[c+144>>2]=J[c+80>>2];J[c+148>>2]=b}if(kj(a,3)){if(Mk(a,3)){J[c+152>>2]=bj(Ij(a,3,0));J[c+156>>2]=Yi;break b}J[c+152>>2]=Tl(a,3);J[c+156>>2]=Yi;break b}j:{if(kj(a,1)){break j}if(kj(a,2)){break j}d=J[c+120>>2];g=J[c+124>>2]}J[c+152>>2]=d;J[c+156>>2]=g}d=Sj(a,32);b=J[c+156>>2];J[d+24>>2]=J[c+152>>2];J[d+28>>2]=b;b=J[c+148>>2];J[d+16>>2]=J[c+144>>2];J[d+20>>2]=b;b=J[c+140>>2];J[d+8>>2]=J[c+136>>2];J[d+12>>2]=b;b=J[c+132>>2];J[d>>2]=J[c+128>>2];J[d+4>>2]=b;rj(a,-1e4,49412);Mj(a,-2);b=1;if((f+1|0)==J[a+8>>2]-J[a+12>>2]>>4){break a}Z(143334,41102,454,6690);B()}Ui=c+160|0;return b|0}function iua(a,b,c){a=a|0;b=b|0;c=c|0;var d=0,e=0,f=0,g=0,h=0,i=0,j=0,k=0,l=0;g=J[a+108>>2];if(g){Zi[J[J[g>>2]+12>>2]](g,J[b+60>>2],c)}e=a;l=L[b+12>>1];i=J[a+60>>2]+(l<<6)|0;b=J[a+92>>2];if(!(Zi[J[J[b>>2]+56>>2]](b)|0)){a=J[a+92>>2];Zi[J[J[a>>2]+16>>2]](a,i,c)}h=L[e+56>>1];c=J[e+60>>2];I[c+54>>1]=L[c+54>>1]-2;I[c+56>>1]=L[c+56>>1]-2;I[c+58>>1]=L[c+58>>1]-2;g=J[e+68>>2];a=g+(L[i+54>>1]<<2)|0;d=L[e+6>>1];I[a>>1]=d;f=L[a+6>>1];if(f){j=(L[a+2>>1]<<6)+c|0;a:{while(1){c=J[e+60>>2];k=d&65535;b=a+4|0;d=L[b>>1];if(k>>>0>>0){break a}c=(c+(f<<6)|0)+(d&1?54:48)|0;I[c>>1]=L[c>>1]-1;I[j+54>>1]=L[j+54>>1]+1;c=L[b>>1]|L[b+2>>1]<<16;d=L[a>>1]|L[a+2>>1]<<16;I[a+4>>1]=d;I[a+6>>1]=d>>>16;I[a>>1]=c;I[a+2>>1]=c>>>16;f=L[a+10>>1];a=b;if(f){continue}break}c=J[e+60>>2]}d=L[e+6>>1];a=J[e+68>>2]}else{a=g}b=L[i+48>>1]<<2;I[b+g>>1]=d;a=a+b|0;f=L[a+6>>1];if(f){j=(L[a+2>>1]<<6)+c|0;d=L[a>>1];b:{while(1){c=J[e+60>>2];k=d&65535;b=a+4|0;d=L[b>>1];if(k>>>0>>0){break b}c=(c+(f<<6)|0)+(d&1?54:48)|0;I[c>>1]=L[c>>1]-1;I[j+48>>1]=L[j+48>>1]+1;c=L[b>>1]|L[b+2>>1]<<16;d=L[a>>1]|L[a+2>>1]<<16;I[a+4>>1]=d;I[a+6>>1]=d>>>16;I[a>>1]=c;I[a+2>>1]=c>>>16;f=L[a+10>>1];a=b;if(f){continue}break}c=J[e+60>>2]}d=L[e+6>>1]}j=h<<3;a=j+g|0;I[a-4>>1]=d;I[a-2>>1]=0;g=J[e+72>>2];a=g+(L[i+56>>1]<<2)|0;I[a>>1]=d;f=L[a+6>>1];if(f){h=(L[a+2>>1]<<6)+c|0;c:{while(1){c=J[e+60>>2];k=d&65535;b=a+4|0;d=L[b>>1];if(k>>>0>>0){break c}c=(c+(f<<6)|0)+(d&1?54:48)|0;I[c+2>>1]=L[c+2>>1]-1;I[h+56>>1]=L[h+56>>1]+1;c=L[b>>1]|L[b+2>>1]<<16;d=L[a>>1]|L[a+2>>1]<<16;I[a+4>>1]=d;I[a+6>>1]=d>>>16;I[a>>1]=c;I[a+2>>1]=c>>>16;f=L[a+10>>1];a=b;if(f){continue}break}c=J[e+60>>2]}d=L[e+6>>1];a=J[e+72>>2]}else{a=g}b=L[i+50>>1]<<2;I[b+g>>1]=d;a=a+b|0;f=L[a+6>>1];if(f){h=(L[a+2>>1]<<6)+c|0;d=L[a>>1];d:{while(1){c=J[e+60>>2];k=d&65535;b=a+4|0;d=L[b>>1];if(k>>>0>>0){break d}c=(c+(f<<6)|0)+(d&1?54:48)|0;I[c+2>>1]=L[c+2>>1]-1;I[h+50>>1]=L[h+50>>1]+1;c=L[b>>1]|L[b+2>>1]<<16;d=L[a>>1]|L[a+2>>1]<<16;I[a+4>>1]=d;I[a+6>>1]=d>>>16;I[a>>1]=c;I[a+2>>1]=c>>>16;f=L[a+10>>1];a=b;if(f){continue}break}c=J[e+60>>2]}d=L[e+6>>1]}a=g+j|0;I[a-4>>1]=d;I[a-2>>1]=0;g=J[e+76>>2];a=g+(L[i+58>>1]<<2)|0;I[a>>1]=d;f=L[a+6>>1];if(f){h=(L[a+2>>1]<<6)+c|0;e:{while(1){c=J[e+60>>2];k=d&65535;b=a+4|0;d=L[b>>1];if(k>>>0>>0){break e}c=(c+(f<<6)|0)+(d&1?54:48)|0;I[c+4>>1]=L[c+4>>1]-1;I[h+58>>1]=L[h+58>>1]+1;c=L[b>>1]|L[b+2>>1]<<16;d=L[a>>1]|L[a+2>>1]<<16;I[a+4>>1]=d;I[a+6>>1]=d>>>16;I[a>>1]=c;I[a+2>>1]=c>>>16;f=L[a+10>>1];a=b;if(f){continue}break}c=J[e+60>>2]}d=L[e+6>>1];a=J[e+76>>2]}else{a=g}b=L[i+52>>1]<<2;I[b+g>>1]=d;a=a+b|0;f=L[a+6>>1];if(f){h=(L[a+2>>1]<<6)+c|0;d=L[a>>1];f:{while(1){c=J[e+60>>2];i=d&65535;b=a+4|0;d=L[b>>1];if(i>>>0>>0){break f}c=(c+(f<<6)|0)+(d&1?54:48)|0;I[c+4>>1]=L[c+4>>1]-1;I[h+52>>1]=L[h+52>>1]+1;c=L[b>>1]|L[b+2>>1]<<16;d=L[a>>1]|L[a+2>>1]<<16;I[a+4>>1]=d;I[a+6>>1]=d>>>16;I[a>>1]=c;I[a+2>>1]=c>>>16;f=L[a+10>>1];a=b;if(f){continue}break}c=J[e+60>>2]}d=L[e+6>>1]}a=g+j|0;I[a-4>>1]=d;I[a-2>>1]=0;I[((l<<6)+c|0)+48>>1]=L[e+64>>1];I[e+64>>1]=l;I[e+56>>1]=L[e+56>>1]-1}function RD(a,b,c,d,e,f,g){var h=0,i=0,j=0,k=0,l=0,m=0,n=0,o=Q(0),p=0;j=Ui-128|0;Ui=j;a:{if(!a){h=-6;break a}b:{if(!(b|c)){if((d|0)==J[74038]&(e|0)==J[74039]){if(J[g>>2]!=3){h=-4;break a}N[a+16>>2]=N[g+8>>2];N[a+20>>2]=N[g+12>>2];N[a+24>>2]=N[g+16>>2];break a}if((d|0)==J[74040]&(e|0)==J[74041]){if(J[g>>2]){h=-4;break a}N[a+16>>2]=O[g+8>>3];break a}if((d|0)==J[74042]&(e|0)==J[74043]){if(J[g>>2]){h=-4;break a}N[a+20>>2]=O[g+8>>3];break a}if((d|0)==J[74044]&(e|0)==J[74045]){if(J[g>>2]){h=-4;break a}N[a+24>>2]=O[g+8>>3];break a}if((d|0)==J[74064]&(e|0)==J[74065]){h=-4;c:{switch(J[g>>2]){case 0:o=Q(O[g+8>>3]);N[a+40>>2]=o;N[a+36>>2]=o;N[a+32>>2]=o;h=0;break a;case 3:break c;default:break a}}N[a+32>>2]=N[g+8>>2];N[a+36>>2]=N[g+12>>2];N[a+40>>2]=N[g+16>>2];h=0;break a}if((d|0)==J[74066]&(e|0)==J[74067]){if(J[g>>2]){h=-4;break a}N[a+32>>2]=O[g+8>>3];break a}if((d|0)==J[74068]&(e|0)==J[74069]){if(J[g>>2]){h=-4;break a}N[a+36>>2]=O[g+8>>3];break a}if((d|0)==J[74070]&(e|0)==J[74071]){if(J[g>>2]){h=-4;break a}N[a+40>>2]=O[g+8>>3];break a}if((d|0)==J[74046]&(e|0)==J[74047]){if(J[g>>2]!=5){h=-4;break a}N[a>>2]=N[g+8>>2];N[a+4>>2]=N[g+12>>2];N[a+8>>2]=N[g+16>>2];N[a+12>>2]=N[g+20>>2];break a}if((d|0)==J[74048]&(e|0)==J[74049]){if(J[g>>2]){h=-4;break a}N[a>>2]=O[g+8>>3];break a}if((d|0)==J[74050]&(e|0)==J[74051]){if(J[g>>2]){h=-4;break a}N[a+4>>2]=O[g+8>>3];break a}if((d|0)==J[74052]&(e|0)==J[74053]){if(J[g>>2]){h=-4;break a}N[a+8>>2]=O[g+8>>3];break a}if((d|0)==J[74054]&(e|0)==J[74055]){if(J[g>>2]){h=-4;break a}N[a+12>>2]=O[g+8>>3];break a}if((d|0)==J[74056]&(e|0)==J[74057]){if(J[g>>2]!=3){h=-4;break a}b=J[g+8>>2];c=J[g+12>>2];N[a+56>>2]=N[g+16>>2];J[a+48>>2]=b;J[a+52>>2]=c;break b}if((d|0)==J[74058]&(e|0)==J[74059]){if(J[g>>2]){h=-4;break a}N[a+48>>2]=O[g+8>>3];break b}if((d|0)==J[74060]&(e|0)==J[74061]){if(J[g>>2]){h=-4;break a}N[a+52>>2]=O[g+8>>3];break b}if((d|0)!=J[74062]|(e|0)!=J[74063]){h=-1;break a}if(J[g>>2]){h=-4;break a}N[a+56>>2]=O[g+8>>3];break b}h=-5;i=J[a+84>>2];m=J[i+4>>2];if(!m){break a}l=J[i>>2];i=0;while(1){n=l+P(i,96)|0;if(J[n>>2]!=(b|0)|J[n+4>>2]!=(c|0)){k=k+1|0;i=i+1|0;if((m|0)!=(i|0)){continue}break a}break}b=i&65535;n=l+P(b,96)|0;c=J[n+16>>2];if(!J[c+88>>2]){h=-1;break a}i=0;if(H[c+102|0]&1){d:{if(!b){b=0;break d}m=k&3;h=0;b=0;k=k&65535;if(k-1>>>0>=3){p=k&65532;k=0;while(1){b=((((I[J[(l+P(i,96)|0)+16>>2]+102>>1]&1)+b|0)+(I[J[(l+P(i|1,96)|0)+16>>2]+102>>1]&1)|0)+(I[J[(l+P(i|2,96)|0)+16>>2]+102>>1]&1)|0)+(I[J[(l+P(i|3,96)|0)+16>>2]+102>>1]&1)|0;i=i+4|0;k=k+4|0;if((p|0)!=(k|0)){continue}break}}if(!m){break d}while(1){b=(I[J[(l+P(i,96)|0)+16>>2]+102>>1]&1)+b|0;i=i+1|0;h=h+1|0;if((m|0)!=(h|0)){continue}break}}i=((b<<2)+a|0)+156|0}h=j+40|0;ij(h,0,72);b=j+112|0;J[b>>2]=0;H[b+8|0]=K[b+8|0]&254;J[j+8>>2]=J[c+16>>2];b=J[(J[a+80>>2]+(J[n+20>>2]<<2)|0)+12>>2];J[j+32>>2]=i;J[j+24>>2]=d;J[j+28>>2]=e;J[j+16>>2]=a;J[j+12>>2]=b;hj(h,g,72);H[j+120|0]=K[f+8|0];a=J[f+4>>2];J[j+112>>2]=J[f>>2];J[j+116>>2]=a;h=Zi[J[c+88>>2]](j+8|0)|0;break a}et(a)}Ui=j+128|0;return h}function uga(a){a=a|0;var b=0,c=0,d=Q(0),e=0,f=0,g=0,h=Q(0),i=Q(0),j=0,k=Q(0),l=Q(0),m=0,n=0,o=Q(0),p=Q(0),q=0,r=0,s=Q(0),t=Q(0),u=Q(0),v=Q(0),w=Q(0);b=Ui-112|0;Ui=b;q=pj(b+60|0,a,1,39481,1378);e=mk(a,2);c=Yi;j=J[J[pk(a)+80>>2]+8>>2];J[b+52>>2]=0;J[b+48>>2]=0;J[b+104>>2]=0;J[b+108>>2]=0;J[b+96>>2]=0;J[b+100>>2]=0;J[b+88>>2]=0;J[b+92>>2]=0;J[b+80>>2]=0;J[b+84>>2]=0;Al(a,1,j,80935,b+52|0,b+80|0,b+48|0);a:{if(!iQ(J[b+52>>2],e,c,b+56|0)){J[b+16>>2]=tj(e,c);e=Jj(q,71294,b+16|0);break a}J[b+88>>2]=0;J[b+92>>2]=0;J[b+80>>2]=0;J[b+84>>2]=0;g=J[b+48>>2];e=Ui-32|0;Ui=e;j=J[b+56>>2];c=J[b+52>>2];f=J[c>>2];r=J[f+168>>2]&2147483647;b:{if(j>>>0>=r>>>0){break b}m=j<<2;f=J[m+J[f+160>>2]>>2];J[b+92>>2]=f;c:{if(H[g+145|0]&1){g=J[c+20>>2];d:{if(g){c=J[g+m>>2];break d}c=bM(J[c+8>>2],j);f=J[b+92>>2]}e:{switch(f|0){case 1:if(J[c+4>>2]){Z(95299,42530,1299,98290);B()}d=N[c+36>>2];i=N[c+28>>2];k=N[c+32>>2];l=Q(Zi[J[J[c>>2]+44>>2]](c));h=Q(Zi[J[J[c>>2]+44>>2]](c));o=Q(Zi[J[J[c>>2]+44>>2]](c));N[e+24>>2]=k+h;N[e+20>>2]=i+l;N[e+28>>2]=d+o;d=N[e+20>>2];N[b+80>>2]=d+d;d=N[e+24>>2];N[b+84>>2]=d+d;d=N[e+28>>2];N[b+88>>2]=d+d;break b;case 2:if(J[c+4>>2]!=10){Z(95398,42530,1283,98199);B()}f=J[c+52>>2];c=c+28|0;N[e+20>>2]=N[((f+2|0)%3<<2)+c>>2];N[e+16>>2]=N[c+(f<<2)>>2];d=N[e+20>>2];N[b+80>>2]=d+d;d=N[e+16>>2];N[b+84>>2]=d+d;break b;case 0:break c;default:break e}}Z(114101,38329,1841,64934);B()}f=cM(J[c+8>>2],j);f:{switch(J[b+92>>2]){case 0:N[e+20>>2]=N[f+8>>2]*N[J[J[g+132>>2]+36>>2]+68>>2];d=N[e+20>>2];N[b+80>>2]=d+d;break b;case 1:J[b+88>>2]=1065353216;J[b+80>>2]=0;J[b+84>>2]=0;g=J[g+132>>2];c=J[J[c>>2]+156>>2]+(j<<4)|0;N[e>>2]=N[c>>2];N[e+4>>2]=N[c+4>>2];N[e+8>>2]=N[c+8>>2];N[e+12>>2]=N[c+12>>2];if(J[f+4>>2]==2){m=J[f+416>>2];g:{if((m|0)<=0){i=Q(-4294967296);p=Q(-4294967296);break g}f=f+160|0;c=J[g+36>>2];o=Q(N[c+64>>2]*Q(0));d=N[e+8>>2];s=Q(Q(Q(d*Q(-2))*d)+Q(1));t=N[c+68>>2];u=Q(Q(d+d)*N[e+12>>2]);p=Q(-u);i=Q(-2147483648);d=Q(2147483648);c=0;k=Q(-2147483648);l=Q(2147483648);while(1){g=f+(c<<3)|0;v=Q(Q(t*N[g>>2])-o);w=Q(Q(t*N[g+4>>2])-o);h=Q(Q(p*v)+Q(s*w));i=i>h?i:h;l=h>l?l:h;h=Q(Q(s*v)+Q(u*w));k=h>2]=p;N[b+84>>2]=i}break b;default:break f}}Z(114101,38329,1863,64934);B()}if(J[c+4>>2]!=8){Z(95347,42530,1276,98264);B()}N[e+20>>2]=N[c+28>>2]*N[c+12>>2];d=N[e+20>>2];N[b+80>>2]=d+d}Ui=e+32|0;if(j>>>0>=r>>>0){J[b>>2]=J[b+56>>2];e=Jj(q,130051,b);break a}Fj(a,0,0);e=J[b+92>>2];c=J[a+8>>2];J[c+8>>2]=3;O[c>>3]=e|0;J[a+8>>2]=J[a+8>>2]+16;ej(a,-2,64474);e=1;h:{switch(J[b+92>>2]){case 0:n=+N[b+80>>2];c=J[a+8>>2];J[c+8>>2]=3;O[c>>3]=n;J[a+8>>2]=J[a+8>>2]+16;ej(a,-2,33817);break a;case 1:N[b+40>>2]=N[b+88>>2];c=J[b+84>>2];J[b+32>>2]=J[b+80>>2];J[b+36>>2]=c;cl(a,b+32|0);ej(a,-2,20243);break a;case 2:break h;default:break a}}n=+N[b+80>>2];c=J[a+8>>2];J[c+8>>2]=3;O[c>>3]=n;J[a+8>>2]=J[a+8>>2]+16;ej(a,-2,33817);n=+N[b+84>>2];c=J[a+8>>2];J[c+8>>2]=3;O[c>>3]=n;J[a+8>>2]=J[a+8>>2]+16;ej(a,-2,14691)}oj(q);Ui=b+112|0;return e|0}function NS(a,b){var c=0,d=0,e=0,f=0,g=0,h=0,i=0,j=0,k=0,l=0,m=0,n=0,o=0,p=0,q=0,r=0,s=0,t=0,u=0,v=0,w=0,x=0,y=0,z=0,A=0,B=0,C=0;c=Ui+-64|0;Ui=c;e=J[a+44>>2];h=J[a+40>>2];J[c+40>>2]=h;J[c+44>>2]=e;e=J[a+60>>2];p=J[a+56>>2];J[c+56>>2]=p;J[c+60>>2]=e;e=J[a+28>>2];i=J[a+24>>2];J[c+24>>2]=i;J[c+28>>2]=e;e=J[a+36>>2];j=J[a+32>>2];J[c+32>>2]=j;J[c+36>>2]=e;e=J[a+52>>2];g=J[a+48>>2];J[c+48>>2]=g;J[c+52>>2]=e;e=J[a+20>>2];k=J[a+16>>2];J[c+16>>2]=k;J[c+20>>2]=e;e=J[a+4>>2];d=J[a>>2];J[c>>2]=d;J[c+4>>2]=e;f=J[a+12>>2];e=J[a+8>>2];J[c+8>>2]=e;J[c+12>>2]=f;t=J[c+4>>2];q=J[c+44>>2];l=J[c+60>>2];u=J[c+12>>2];r=J[c+28>>2];v=J[c+36>>2];w=J[c+52>>2];s=J[c+20>>2];while(1){f=r+u|0;x=oxa(f^l,16);y=x+q|0;z=oxa(y^r,12);r=f+z|0;f=k;m=j;j=d+k|0;g=oxa(j^g,16);k=m+g|0;d=oxa(f^k,12);A=d+j|0;B=oxa(A^g,8);f=B+k|0;g=oxa(d^f,7);m=r+g|0;d=e+i|0;e=oxa(d^p,16);q=e+h|0;C=oxa(q^i,12);j=d+C|0;l=oxa(j^e,8);i=oxa(l^m,16);k=s+t|0;d=oxa(k^w,16);e=d+v|0;s=oxa(e^s,12);n=m;p=g;h=k+s|0;g=oxa(h^d,8);m=e+g|0;d=i+m|0;e=oxa(p^d,12);u=n+e|0;p=oxa(i^u,8);v=p+d|0;k=oxa(v^e,7);n=f;f=oxa(r^x,8);i=f+y|0;d=oxa(i^z,7);e=d+j|0;g=oxa(e^g,16);j=n+g|0;d=oxa(d^j,12);e=d+e|0;w=oxa(g^e,8);j=j+w|0;r=oxa(j^d,7);n=i;d=h;h=l+q|0;i=oxa(h^C,7);d=d+i|0;g=oxa(d^B,16);l=n+g|0;n=d;d=oxa(i^l,12);t=n+d|0;g=oxa(g^t,8);q=l+g|0;i=oxa(q^d,7);n=h;h=f;f=oxa(s^m,7);d=f+A|0;h=oxa(h^d,16);m=n+h|0;f=oxa(f^m,12);d=f+d|0;l=oxa(h^d,8);h=m+l|0;s=oxa(h^f,7);o=o+1|0;if((o|0)!=10){continue}break}f=J[a>>2]+d|0;J[c>>2]=f;o=J[a+4>>2]+t|0;J[c+4>>2]=o;d=J[a+8>>2]+e|0;J[c+8>>2]=d;e=J[a+12>>2]+u|0;J[c+12>>2]=e;J[c+16>>2]=J[a+16>>2]+k;J[c+20>>2]=J[a+20>>2]+s;J[c+24>>2]=J[a+24>>2]+i;J[c+28>>2]=J[a+28>>2]+r;J[c+32>>2]=J[a+32>>2]+j;J[c+36>>2]=J[a+36>>2]+v;J[c+40>>2]=J[a+40>>2]+h;J[c+44>>2]=J[a+44>>2]+q;J[c+48>>2]=J[a+48>>2]+g;J[c+52>>2]=J[a+52>>2]+w;J[c+56>>2]=J[a+56>>2]+p;J[c+60>>2]=J[a+60>>2]+l;H[b+15|0]=e>>>24;H[b+14|0]=e>>>16;H[b+13|0]=e>>>8;H[b+12|0]=e;H[b+11|0]=d>>>24;H[b+10|0]=d>>>16;H[b+9|0]=d>>>8;H[b+8|0]=d;H[b+7|0]=o>>>24;H[b+6|0]=o>>>16;H[b+5|0]=o>>>8;H[b+4|0]=o;H[b+3|0]=f>>>24;H[b+2|0]=f>>>16;H[b+1|0]=f>>>8;H[b|0]=f;a=J[c+16>>2];H[b+16|0]=a;H[b+17|0]=a>>>8;H[b+18|0]=a>>>16;H[b+19|0]=a>>>24;a=J[c+20>>2];H[b+20|0]=a;H[b+21|0]=a>>>8;H[b+22|0]=a>>>16;H[b+23|0]=a>>>24;a=J[c+24>>2];H[b+24|0]=a;H[b+25|0]=a>>>8;H[b+26|0]=a>>>16;H[b+27|0]=a>>>24;a=J[c+28>>2];H[b+28|0]=a;H[b+29|0]=a>>>8;H[b+30|0]=a>>>16;H[b+31|0]=a>>>24;a=J[c+32>>2];H[b+32|0]=a;H[b+33|0]=a>>>8;H[b+34|0]=a>>>16;H[b+35|0]=a>>>24;a=J[c+36>>2];H[b+36|0]=a;H[b+37|0]=a>>>8;H[b+38|0]=a>>>16;H[b+39|0]=a>>>24;a=J[c+40>>2];H[b+40|0]=a;H[b+41|0]=a>>>8;H[b+42|0]=a>>>16;H[b+43|0]=a>>>24;a=J[c+44>>2];H[b+44|0]=a;H[b+45|0]=a>>>8;H[b+46|0]=a>>>16;H[b+47|0]=a>>>24;a=J[c+48>>2];H[b+48|0]=a;H[b+49|0]=a>>>8;H[b+50|0]=a>>>16;H[b+51|0]=a>>>24;a=J[c+52>>2];H[b+52|0]=a;H[b+53|0]=a>>>8;H[b+54|0]=a>>>16;H[b+55|0]=a>>>24;a=J[c+56>>2];H[b+56|0]=a;H[b+57|0]=a>>>8;H[b+58|0]=a>>>16;H[b+59|0]=a>>>24;a=J[c+60>>2];H[b+60|0]=a;H[b+61|0]=a>>>8;H[b+62|0]=a>>>16;H[b+63|0]=a>>>24;Zi[J[66509]](c,0,64)|0;Ui=c- -64|0}function $y(){if(!K[335040]){J[83678]=1062847606;J[83679]=0;J[83676]=1042701022;J[83677]=1056964440;J[83674]=1062847606;J[83675]=0;J[83672]=-1093024784;J[83673]=1050556081;J[83670]=1062847606;J[83671]=0;J[83668]=-1093024784;J[83669]=-1096927567;J[83666]=1062847606;J[83667]=0;J[83664]=1042701022;J[83665]=-1090519208;J[83662]=1062847572;J[83663]=0;J[83660]=1057396286;J[83661]=0;J[83658]=1057396386;J[83659]=0;J[83656]=1060121912;J[83657]=1056964507;J[83654]=1057396420;J[83655]=0;J[83652]=-1098475836;J[83653]=1062148969;J[83650]=1057396386;J[83651]=0;J[83648]=-1084636143;J[83649]=0;J[83646]=1057396420;J[83647]=0;J[83644]=-1098475836;J[83645]=-1085334679;J[83642]=1057396386;J[83643]=0;J[83640]=1060121912;J[83641]=-1090519141;J[83638]=-2147483648;J[83639]=0;J[83636]=1058437413;J[83637]=1062149053;J[83634]=-2147483648;J[83635]=0;J[83632]=-2147483648;J[83633]=1065353216;J[83630]=-2147483648;J[83631]=0;J[83628]=-1089046235;J[83629]=1062149053;J[83626]=-2147483648;J[83627]=0;J[83624]=-1082951543;J[83625]=1050556148;J[83622]=-2147483648;J[83623]=0;J[83620]=-1082951543;J[83621]=-1096927500;J[83618]=0;J[83619]=0;J[83616]=-1089046235;J[83617]=-1085334595;J[83614]=0;J[83615]=0;J[83612]=0;J[83613]=-1082130432;J[83610]=0;J[83611]=0;J[83608]=1058437413;J[83609]=-1085334595;J[83606]=0;J[83607]=0;J[83604]=1064532105;J[83605]=-1096927500;J[83602]=0;J[83603]=0;J[83600]=1064532105;J[83601]=1050556148;J[83598]=-1090087228;J[83599]=0;J[83596]=1049007812;J[83597]=1062148969;J[83594]=-1090087262;J[83595]=0;J[83592]=-1087361736;J[83593]=1056964507;J[83590]=-1084636042;J[83591]=0;J[83588]=-1104782626;J[83589]=1056964440;J[83586]=-1090087262;J[83587]=0;J[83584]=-1087361736;J[83585]=-1090519141;J[83582]=-1084636076;J[83583]=0;J[83580]=-1090087362;J[83581]=-2147483648;J[83578]=-1090087262;J[83579]=0;J[83576]=1062847505;J[83577]=-2147483648;J[83574]=-1084636042;J[83575]=0;J[83572]=1054458864;J[83573]=1050556081;J[83570]=-1090087228;J[83571]=0;J[83568]=1049007812;J[83569]=-1085334679;J[83566]=-1084636042;J[83567]=0;J[83564]=-1104782626;J[83565]=-1090519208;J[83562]=-1084636042;J[83563]=0;J[83560]=1054458864;J[83561]=-1096927567;J[83558]=1065353216;J[83559]=0;J[83556]=-2147483648;J[83557]=0;J[83554]=1055193471;J[83555]=0;J[83552]=1063581978;J[83553]=0;J[83550]=1055193572;J[83551]=0;J[83548]=1049461434;J[83549]=1062847522;J[83546]=1055193572;J[83547]=0;J[83544]=-1086767520;J[83545]=1057396202;J[83542]=1055193572;J[83543]=0;J[83540]=-1086767520;J[83541]=-1090087446;J[83538]=1055193605;J[83539]=0;J[83536]=1049461434;J[83537]=-1084636126;J[83534]=-1092290076;J[83535]=0;J[83532]=1060716128;J[83533]=1057396202;J[83530]=-1092290043;J[83531]=0;J[83528]=-1098022214;J[83529]=1062847522;J[83526]=-1092290177;J[83527]=0;J[83524]=-1083901670;J[83525]=-2147483648;J[83522]=-1092290076;J[83523]=0;J[83520]=-1098022214;J[83521]=-1084636126;J[83518]=-1092290076;J[83519]=0;J[83516]=1060716128;J[83517]=-1090087446;J[83514]=-1082130432;J[83515]=0;J[83512]=0;J[83513]=-2147483648;H[335040]=1}}function Hva(a,b){a=a|0;b=b|0;var c=0,d=Q(0),e=0,f=Q(0),g=Q(0),h=Q(0),i=Q(0),j=Q(0),k=0,l=0,m=0,n=Q(0),o=Q(0),p=Q(0),q=Q(0),r=0,s=Q(0),t=Q(0),u=Q(0),v=Q(0),w=Q(0),x=Q(0),y=Q(0),z=Q(0),A=Q(0),B=Q(0),C=0,D=Q(0),E=Q(0),F=Q(0),G=Q(0),H=Q(0),I=Q(0),L=Q(0),M=Q(0),O=Q(0),R=Q(0),S=Q(0),T=Q(0),U=Q(0),V=Q(0),W=Q(0),X=Q(0),Y=Q(0),Z=0,_=0,$=Q(0),aa=Q(0);l=J[a+48>>2];C=J[l+8>>2];J[a+160>>2]=C;m=J[a+52>>2];r=J[m+8>>2];J[a+164>>2]=r;k=J[a+84>>2];Z=J[k+8>>2];J[a+168>>2]=Z;c=J[a+88>>2];_=J[c+8>>2];J[a+172>>2]=_;D=N[l+32>>2];e=J[l+32>>2];i=N[l+28>>2];J[a+176>>2]=J[l+28>>2];J[a+180>>2]=e;e=J[m+32>>2];J[a+184>>2]=J[m+28>>2];J[a+188>>2]=e;w=N[k+32>>2];e=J[k+32>>2];n=N[k+28>>2];J[a+192>>2]=J[k+28>>2];J[a+196>>2]=e;$=N[c+32>>2];e=J[c+32>>2];aa=N[c+28>>2];J[a+200>>2]=J[c+28>>2];J[a+204>>2]=e;E=N[l+120>>2];N[a+208>>2]=E;F=N[m+120>>2];N[a+212>>2]=F;G=N[k+120>>2];N[a+216>>2]=G;H=N[c+120>>2];N[a+220>>2]=H;x=N[l+128>>2];N[a+224>>2]=x;y=N[m+128>>2];N[a+228>>2]=y;z=N[k+128>>2];N[a+232>>2]=z;A=N[c+128>>2];N[a+236>>2]=A;l=J[a+76>>2];c=J[b+28>>2];k=P(_,12);e=c+k|0;I=N[e+8>>2];L=N[e+4>>2];M=N[e>>2];m=P(Z,12);e=m+c|0;O=N[e+8>>2];R=N[e+4>>2];S=N[e>>2];r=P(r,12);e=r+c|0;T=N[e+8>>2];U=N[e+4>>2];V=N[e>>2];e=P(C,12);c=e+c|0;W=N[c+8>>2];X=N[c+4>>2];Y=N[c>>2];c=J[b+24>>2];d=N[(c+r|0)+8>>2];f=N[(c+k|0)+8>>2];h=Rj(f);g=Hj(f);s=Rj(d);t=Hj(d);a:{if((l|0)==1){o=Q(1);j=Q(1);d=Q(x+z);break a}p=N[a+96>>2];d=N[(c+e|0)+8>>2];o=Rj(d);B=N[a+92>>2];j=Hj(d);q=N[a+128>>2];i=Q(B-i);p=Q(p-D);f=N[(c+m|0)+8>>2];d=Hj(f);u=N[a+124>>2];f=Rj(f);v=Q(Q(d*u)+Q(q*f));q=Q(Q(f*u)-Q(d*q));o=Q(Q(Q(Q(o*i)-Q(j*p))*v)-Q(Q(Q(j*i)+Q(o*p))*q));j=Q(N[a+108>>2]-n);i=Q(N[a+112>>2]-w);j=Q(Q(Q(Q(f*j)-Q(d*i))*v)-Q(Q(Q(d*j)+Q(f*i))*q));d=Q(Q(Q(x*o)*o)+Q(Q(Q(z*j)*j)+Q(E+G)))}N[a+264>>2]=j;N[a+256>>2]=o;N[a+244>>2]=v;N[a+240>>2]=q;i=Q(0);n=Q(d+Q(0));b:{if(J[a+80>>2]==1){J[a+248>>2]=0;d=N[a+152>>2];g=Q(Q(Q(d*d)*Q(y+A))+n);h=d;f=Q(0);break b}d=N[a+132>>2];B=N[a+136>>2];p=Q(Q(h*d)-Q(g*B));f=N[a+152>>2];i=Q(p*f);N[a+248>>2]=i;D=n;u=Q(N[a+100>>2]-N[a+184>>2]);w=Q(N[a+104>>2]-N[a+188>>2]);n=Q(Q(g*d)+Q(h*B));d=Q(f*Q(Q(Q(Q(s*u)-Q(t*w))*n)-Q(Q(Q(t*u)+Q(s*w))*p)));s=Q(N[a+116>>2]-aa);t=Q(N[a+120>>2]-$);h=Q(f*Q(Q(Q(Q(h*s)-Q(g*t))*n)-Q(Q(Q(g*s)+Q(h*t))*p)));g=Q(D+Q(Q(Q(y*d)*d)+Q(Q(Q(f*f)*Q(F+H))+Q(h*Q(A*h)))));f=Q(n*f)}N[a+268>>2]=h;N[a+260>>2]=d;N[a+252>>2]=f;N[a+272>>2]=g>Q(0)?Q(Q(1)/g):Q(0);c:{if(K[b+20|0]==1){g=N[a+156>>2];I=Q(I-Q(Q(A*g)*h));h=Q(H*g);L=Q(L-Q(h*f));M=Q(M-Q(h*i));O=Q(O-Q(Q(z*g)*j));h=Q(G*g);R=Q(R-Q(h*v));S=Q(S-Q(h*q));T=Q(Q(Q(y*g)*d)+T);d=Q(F*g);U=Q(U+Q(d*f));V=Q(V+Q(d*i));W=Q(Q(Q(x*g)*o)+W);d=Q(E*g);X=Q(X+Q(d*v));Y=Q(Y+Q(d*q));break c}J[a+156>>2]=0}c=J[b+28>>2]+P(C,12)|0;N[c+4>>2]=X;N[c>>2]=Y;c=J[b+28>>2];N[(c+P(J[a+160>>2],12)|0)+8>>2]=W;c=c+P(J[a+164>>2],12)|0;N[c+4>>2]=U;N[c>>2]=V;c=J[b+28>>2];N[(c+P(J[a+164>>2],12)|0)+8>>2]=T;c=c+P(J[a+168>>2],12)|0;N[c+4>>2]=R;N[c>>2]=S;c=J[b+28>>2];N[(c+P(J[a+168>>2],12)|0)+8>>2]=O;c=c+P(J[a+172>>2],12)|0;N[c+4>>2]=L;N[c>>2]=M;N[(J[b+28>>2]+P(J[a+172>>2],12)|0)+8>>2]=I}function yia(a,b){a=a|0;b=b|0;var c=0,d=0,e=0,f=0,g=0,h=0,i=0,j=0,k=0,l=0,m=Q(0),n=Q(0),o=0;b=Ui-80|0;Ui=b;h=J[a+8>>2];c=J[h+20>>2];J[75780]=J[75780]+((c-J[h+16>>2]|0)/20|0);c=(c-J[h+16>>2]|0)/20|0;J[b+56>>2]=c;J[b+60>>2]=0;J[b+72>>2]=c;J[b+76>>2]=0;f=J[h>>2];if((f|0)!=J[h+4>>2]){while(1){c=P(k,96)+f|0;a:{if(!J[c+4>>2]){break a}J[75802]=J[75802]+1;J[b+64>>2]=1;J[b+68>>2]=0;J[b+48>>2]=1;J[b+52>>2]=0;m=N[c+80>>2];n=Q(m-N[J[a+4>>2]+4>>2]);N[c+80>>2]=n;b:{if(n>2];if(m>=Q(0)){c=J[J[245446]+16>>2];if(!c){H[f+60|0]=K[f+60|0]|4;break a}Tj(c);H[f+60|0]=K[f+60|0]|4;Lj(c);break a}d=J[J[245446]+16>>2];c:{if(!d){f=K[f+60|0];break c}Tj(d);f=K[f+60|0];Lj(d)}d=K[c+88|0];if(!(d&6|(f&4)>>>2)){break b}if(d&2){H[c+88|0]=d&253;f=J[c+4>>2];c=J[245446];if(c){d:{d=(d&4)>>>2|0;c=J[c+16>>2];if(!c){H[f+60|0]=K[f+60|0]&251|(d?0:4);break d}Tj(c);H[f+60|0]=K[f+60|0]&251|(d?0:4);Lj(c)}}break a}if(!(d&1)){break a}c=DJ(J[c+4>>2]);if(!c){break a}J[b>>2]=c;dj(4,88458,141853,b);i=-1e3;break a}if(!(H[c+88|0]&1)){break a}}e=Ui-96|0;Ui=e;if(!K[303464]){i=bj(65018);H[303464]=1;J[75864]=i;J[75865]=Yi}if(!K[303480]){i=bj(74631);H[303480]=1;J[75868]=i;J[75869]=Yi}g=c;d=HJ(J[c+4>>2]);J[c+4>>2]=0;e:{f:{i=J[h+68>>2];if(i){c=J[h+76>>2]-1|0;if(c>>>0>=M[h+72>>2]){break f}J[h+76>>2]=c;J[i+(c<<2)>>2]=k;g:{if(d){J[e+16>>2]=d;dj(4,88458,141853,e+16|0);i=-1e3;break g}i=0;c=J[g+36>>2];l=c;d=J[g+32>>2];if(!(c|d)){break g}c=K[g+88|0];if(!(c&8)){break g}j=c&1?303472:303456;f=J[j>>2];o=J[j+4>>2];J[e+80>>2]=d;J[e+84>>2]=l;c=J[g+28>>2];J[e+72>>2]=J[g+24>>2];J[e+76>>2]=c;c=J[g+20>>2];d=e- -64|0;J[d>>2]=J[g+16>>2];J[d+4>>2]=c;c=J[g+12>>2];J[e+56>>2]=J[g+8>>2];J[e+60>>2]=c;d=g- -64|0;c=J[d+4>>2];J[e+48>>2]=J[d>>2];J[e+52>>2]=c;c=J[g+60>>2];J[e+40>>2]=J[g+56>>2];J[e+44>>2]=c;c=J[g+52>>2];J[e+32>>2]=J[g+48>>2];J[e+36>>2]=c;j=J[g+44>>2];l=J[g+40>>2];J[e+24>>2]=l;J[e+28>>2]=j;d=g+40|0;c=g+8|0;h:{if(!Pp(l,j)){break h}if(!Pp(J[e+56>>2],J[e+60>>2])){break h}J[e+92>>2]=J[g+84>>2];if(!Jk(e+24|0,e+56|0,f,o,0,J[g+76>>2],J[56990],e+92|0,4,0)){break h}J[e>>2]=tj(f,o);dj(4,88458,119194,e)}H[d|0]=0;H[d+1|0]=0;H[d+2|0]=0;H[d+3|0]=0;H[d+4|0]=0;H[d+5|0]=0;H[d+6|0]=0;H[d+7|0]=0;H[d+24|0]=0;H[d+25|0]=0;H[d+26|0]=0;H[d+27|0]=0;H[d+28|0]=0;H[d+29|0]=0;H[d+30|0]=0;H[d+31|0]=0;H[d+16|0]=0;H[d+17|0]=0;H[d+18|0]=0;H[d+19|0]=0;H[d+20|0]=0;H[d+21|0]=0;H[d+22|0]=0;H[d+23|0]=0;H[d+8|0]=0;H[d+9|0]=0;H[d+10|0]=0;H[d+11|0]=0;H[d+12|0]=0;H[d+13|0]=0;H[d+14|0]=0;H[d+15|0]=0;H[c|0]=0;H[c+1|0]=0;H[c+2|0]=0;H[c+3|0]=0;H[c+4|0]=0;H[c+5|0]=0;H[c+6|0]=0;H[c+7|0]=0;H[c+24|0]=0;H[c+25|0]=0;H[c+26|0]=0;H[c+27|0]=0;H[c+28|0]=0;H[c+29|0]=0;H[c+30|0]=0;H[c+31|0]=0;H[c+16|0]=0;H[c+17|0]=0;H[c+18|0]=0;H[c+19|0]=0;H[c+20|0]=0;H[c+21|0]=0;H[c+22|0]=0;H[c+23|0]=0;H[c+8|0]=0;H[c+9|0]=0;H[c+10|0]=0;H[c+11|0]=0;H[c+12|0]=0;H[c+13|0]=0;H[c+14|0]=0;H[c+15|0]=0}Ui=e+96|0;break e}Z(49493,54340,140,53220);B()}Z(2650,54340,141,53220);B()}}k=k+1|0;f=J[h>>2];if(k>>>0<(J[h+4>>2]-f|0)/96>>>0){continue}break}}BJ();Ui=b+80|0;return i|0}function mia(a){a=a|0;var b=0,c=0,d=0,e=0,f=0,g=0,h=0,i=0;d=Ui-144|0;Ui=d;b=J[a+4>>2];e=J[b+16>>2];c=J[J[a+12>>2]>>2];if(c>>>0>2]-e>>3>>>0){e=J[e+(c<<3)>>2];c=J[b+4>>2];b=J[b>>2];if(e>>>0<(c-b|0)/240>>>0){e=b+P(e,240)|0;c=J[a+16>>2];b=J[c+64>>2];f=J[55237];g=J[c+68>>2];a:{if((b|0)==J[f+8>>2]&(g|0)==J[f+12>>2]){I[e+234>>1]=L[e+234>>1]|4;break a}f=J[55238];if((b|0)==J[f+8>>2]&(g|0)==J[f+12>>2]){I[e+234>>1]=L[e+234>>1]&65531;break a}if(!J[c+80>>2]){break a}f=J[58902];if((b|0)==J[f+8>>2]&(g|0)==J[f+12>>2]){if(!ry(e,J[c+96>>2],J[c+100>>2],N[c+104>>2],N[c+108>>2])){break a}if(J[e+192>>2]){J[d+136>>2]=0;J[d+140>>2]=0;J[d+128>>2]=0;J[d+132>>2]=0;J[d+120>>2]=0;J[d+124>>2]=0;J[d+112>>2]=0;J[d+116>>2]=0;c=d- -64|0;J[c>>2]=0;J[c+4>>2]=0;J[d+56>>2]=0;J[d+60>>2]=0;J[d+48>>2]=0;J[d+52>>2]=0;b=0;g=0;f=J[J[J[e+144>>2]+80>>2]+8>>2];b:{if(!f){break b}f=J[f>>2];if(!f){break b}b=J[f+3216>>2];g=J[f+3220>>2]}J[d+40>>2]=b;J[d+44>>2]=g;c:{if(!Pp(b,g)){break c}if(Go(J[e+144>>2],L[e+232>>1],c)){break c}g=J[e+144>>2];b=J[g+96>>2];g=J[g+100>>2];J[d+56>>2]=b;J[d+60>>2]=g;J[d+128>>2]=b;J[d+132>>2]=g;b=J[d+52>>2];J[d+120>>2]=J[d+48>>2];J[d+124>>2]=b;b=J[c+4>>2];J[d+136>>2]=J[c>>2];J[d+140>>2]=b;b=J[d+44>>2];J[d+112>>2]=J[d+40>>2];J[d+116>>2]=b}c=Ui-576|0;Ui=c;J[c+572>>2]=J[e+192>>2];b=e+160|0;f=J[55290];if(Jk(d+112|0,b,J[f+8>>2],J[f+12>>2],0,0,f,c+572|0,4,0)){g=c+24|0;J[g+20>>2]=512;J[g+12>>2]=c+48;J[g+16>>2]=0;J[g+4>>2]=2270;J[g>>2]=2271;J[g+8>>2]=g;f=nk(g,J[f+8>>2],J[f+12>>2]);h=dm(J[b>>2],J[b+4>>2]);i=nk(g,J[b+16>>2],J[b+20>>2]);J[c+12>>2]=nk(g,J[b+24>>2],J[b+28>>2]);J[c+8>>2]=i;J[c+4>>2]=h;J[c>>2]=f;dj(4,88293,26152,c)}Ui=c+576|0}b=J[a+16>>2];c=J[b+4>>2];J[e+160>>2]=J[b>>2];J[e+164>>2]=c;c=J[b+28>>2];J[e+184>>2]=J[b+24>>2];J[e+188>>2]=c;c=J[b+20>>2];J[e+176>>2]=J[b+16>>2];J[e+180>>2]=c;c=J[b+12>>2];J[e+168>>2]=J[b+8>>2];J[e+172>>2]=c;J[e+192>>2]=J[J[a+16>>2]+76>>2];break a}f=J[58942];if(J[f+8>>2]==(b|0)&(g|0)==J[f+12>>2]){I[e+234>>1]=L[e+234>>1]&65503|(J[c+96>>2]!=0)<<5;break a}f=J[58958];if((b|0)==J[f+8>>2]&(g|0)==J[f+12>>2]){I[e+234>>1]=L[e+234>>1]&65471|(J[c+96>>2]!=0)<<6;break a}f=J[57150];if((b|0)==J[f+8>>2]&(g|0)==J[f+12>>2]){g=J[e+148>>2];b=J[e+152>>2];d:{if(b){b=J[b>>2];if(b){break d}}b=J[g+4>>2]}g=J[c+96>>2];f=J[c+100>>2];b=J[b>>2];N[d+16>>2]=N[c+112>>2];N[d+20>>2]=N[c+116>>2];N[d+24>>2]=N[c+120>>2];N[d+28>>2]=N[c+124>>2];if((Wp(b,g,f,Yp(d+40|0,d+16|0),J[c+128>>2],315,e)|0)!=-1){break a}a=J[a+16>>2];b=dm(J[a+32>>2],J[a+36>>2]);e=tj(J[a+48>>2],J[a+52>>2]);a=tj(J[a+56>>2],J[a+60>>2]);J[d+12>>2]=tj(J[c+96>>2],J[c+100>>2]);J[d+8>>2]=a;J[d+4>>2]=e;J[d>>2]=b;dj(4,88458,149025,d);break a}a=J[57166];if(J[a+8>>2]==(b|0)&(g|0)==J[a+12>>2]){a=J[e+156>>2];if(!a){break a}if(!wy(a,J[c+96>>2],J[c+100>>2])){break a}I[e+234>>1]=L[e+234>>1]|256;break a}a=J[57182];if(J[a+8>>2]!=(b|0)|J[a+12>>2]!=(g|0)){break a}N[e+96>>2]=N[c+96>>2];N[e+100>>2]=N[c+100>>2];N[e+104>>2]=N[c+104>>2]}Ui=d+144|0;return 0}}Z(145396,53895,487,84789);B()}function qn(a,b,c,d,e,f,g,h,i){var j=0,k=0,l=0,m=0,n=0,o=0,p=0,q=0,r=0,s=0,t=0;k=Ui-112|0;Ui=k;j=i&2147483647;a:{b:{m=e&2147483647;l=2147418112;n=!(b|c);if(!(d|m?m-l>>>0<2147549184:n)){r=j-l|0;if(!h&(r|0)==-2147418112?f|g:(r|0)==-2147418112&(h|0)!=0|r>>>0>2147549184){break b}}if(!(!d&(m|0)==2147418112?n:m>>>0<2147418112)){h=d;i=e|32768;f=b;g=c;break a}if(!(!h&(j|0)==2147418112?!(f|g):j>>>0<2147418112)){i=i|32768;break a}if(!(b|d|(m^2147418112|c))){j=d;d=!(b^f|d^h|(c^g|e^i^-2147483648));h=d?0:j;i=d?2147450880:e;f=d?0:b;g=d?0:c;break a}l=f|h;if(!(l|(j^2147418112|g))){break a}if(!(b|d|(c|m))){if(g|j|l){break a}f=b&f;g=c&g;h=d&h;i=e&i;break a}if(f|h|(g|j)){break b}f=b;g=c;h=d;i=e;break a}l=(j|0)==(m|0);p=l&(d|0)==(h|0)?(c|0)==(g|0)&b>>>0>>0|c>>>0>>0:l&d>>>0>>0|j>>>0>m>>>0;n=p;m=n?f:b;r=n?g:c;l=n?i:e;s=l;n=n?h:d;q=l&65535;j=p?d:h;l=p?e:i;d=l;l=d>>>16&32767;o=s>>>16&32767;if(!o){o=!(n|q);h=o;o=h<<6;t=S(h?m:n)+32|0;h=S(h?r:q);o=o+((h|0)==32?t:h)|0;Mm(k+96|0,m,r,n,q,o-15|0);n=J[k+104>>2];q=J[k+108>>2];r=J[k+100>>2];o=16-o|0;m=J[k+96>>2]}f=p?b:f;g=p?c:g;b=j;c=d&65535;if(!l){j=!(b|c);p=j;d=j?f:b;j=j<<6;p=S(p?g:c);j=j+((p|0)==32?S(d)+32|0:p)|0;Mm(k+80|0,f,g,b,c,j-15|0);l=16-j|0;f=J[k+80>>2];g=J[k+84>>2];b=J[k+88>>2];c=J[k+92>>2]}d=c<<3;c=b;b=d|b>>>29;j=c<<3;c=b;b=g>>>29|j;c=c|524288;j=q<<3|n>>>29;q=n<<3|r>>>29;p=j;h=e^i;j=g<<3|f>>>29;d=f<<3;c:{if((l|0)==(o|0)){break c}e=o-l|0;if(e>>>0>127){b=0;c=0;j=0;d=1;break c}Mm(k- -64|0,d,j,b,c,128-e|0);Lr(k+48|0,d,j,b,c,e);b=J[k+56>>2];c=J[k+60>>2];j=J[k+52>>2];d=J[k+48>>2]|(J[k+64>>2]|J[k+72>>2]|(J[k+68>>2]|J[k+76>>2]))!=0}n=d;l=j;p=p|524288;j=r<<3|m>>>29;m=m<<3;d:{if((h|0)<0){f=0;g=0;h=0;i=0;if(!(m^n|b^q|(j^l|c^p))){break a}d=m-n|0;e=j-((m>>>0>>0)+l|0)|0;f=q-b|0;g=(j|0)==(l|0)&m>>>0>>0|j>>>0>>0;h=f-g|0;b=(p-((b>>>0>q>>>0)+c|0)|0)-(f>>>0>>0)|0;i=b;if(b>>>0>524287){break d}c=!(b|h);g=c;i=c?d:h;c=c<<6;g=S(g?e:b);c=c+((g|0)==32?S(i)+32|0:g)|0;f=b;b=c-12|0;Mm(k+32|0,d,e,h,f,b);o=o-b|0;h=J[k+40>>2];i=J[k+44>>2];d=J[k+32>>2];e=J[k+36>>2];break d}j=j+l|0;d=m+n|0;e=d>>>0>>0?j+1|0:j;f=(l|0)==(e|0)&d>>>0>>0|e>>>0>>0;j=c+p|0;b=b+q|0;j=b>>>0>>0?j+1|0:j;h=b+f|0;i=h>>>0>>0?j+1|0:j;if(!(i&1048576)){break d}d=n&1|((e&1)<<31|d>>>1);e=h<<31|e>>>1;o=o+1|0;h=(i&1)<<31|h>>>1;i=i>>>1|0}f=0;b=s&-2147483648;m=b;if((o|0)>=32767){h=f;i=b|2147418112;g=0;break a}l=0;e:{if((o|0)>0){l=o;break e}Mm(k+16|0,d,e,h,i,o+127|0);Lr(k,d,e,h,i,1-o|0);d=J[k>>2]|(J[k+16>>2]|J[k+24>>2]|(J[k+20>>2]|J[k+28>>2]))!=0;e=J[k+4>>2];h=J[k+8>>2];i=J[k+12>>2]}c=(e&7)<<29|d>>>3;b=h<<29|e>>>3;e=f|((i&7)<<29|h>>>3);f=m|(i>>>3&65535|l<<16);f:{g:{d=d&7;if((d|0)!=4){i=f;f=d>>>0>4;g=f;f=c+f|0;g=g>>>0>f>>>0?b+1|0:b;b=(g|0)==(b|0)&c>>>0>f>>>0|b>>>0>g>>>0;h=b+e|0;i=b>>>0>h>>>0?i+1|0:i;break g}j=f;d=c&1;f=c+d|0;g=d>>>0>f>>>0?b+1|0:b;b=(g|0)==(b|0)&c>>>0>f>>>0|b>>>0>g>>>0;h=b+e|0;i=b>>>0>h>>>0?j+1|0:j;break f}if(!d){break a}}}J[a>>2]=f;J[a+4>>2]=g;J[a+8>>2]=h;J[a+12>>2]=i;Ui=k+112|0}function dR(a,b,c,d,e,f,g,h,i){var j=0,k=0,l=Q(0),m=Q(0),n=Q(0),o=Q(0),p=Q(0),q=Q(0),r=0,s=Q(0),t=Q(0),u=Q(0),v=0,w=Q(0),x=Q(0),y=Q(0),z=Q(0),A=Q(0),C=0,D=0;j=Ui-80|0;Ui=j;a:{b:{if(!b){a=0;dj(4,88293,121354,0);break b}k=J[a>>2];c:{if(K[k+3272|0]&2){dj(3,88293,128504,0);break c}a=Gy(k,b,c);if(!a){break c}Ns(J[k>>2],b);o=N[g>>2];q=N[g+4>>2];m=N[g+8>>2];N[a+24>>2]=m;N[a+20>>2]=q;N[a+16>>2]=o;l=N[h>>2];n=N[h+4>>2];w=N[h+8>>2];p=N[h+12>>2];N[a+12>>2]=p;N[a+8>>2]=w;N[a+4>>2]=n;N[a>>2]=l;s=N[i>>2];t=N[i+4>>2];u=N[i+8>>2];N[a+40>>2]=u;N[a+36>>2]=t;N[a+32>>2]=s;d:{e:{f:{g=J[a+140>>2]&32767;b=J[k+3128>>2];if(g>>>0>2]-b>>6>>>0){b=b+(g<<6)|0;J[b+60>>2]=1065353216;N[b+56>>2]=m;N[b+52>>2]=q;N[b+48>>2]=o;N[b+44>>2]=u*Q(0);N[b+28>>2]=t*Q(0);N[b+12>>2]=s*Q(0);o=Q(w+w);m=Q(n*o);x=Q(l+l);y=Q(x*p);N[b+36>>2]=Q(m-y)*u;z=Q(l*o);q=Q(n+n);A=Q(q*p);N[b+32>>2]=Q(z+A)*u;N[b+24>>2]=Q(m+y)*t;m=Q(l*q);p=Q(p*o);N[b+16>>2]=Q(m-p)*t;N[b+8>>2]=Q(z-A)*s;N[b+4>>2]=Q(m+p)*s;l=Q(Q(1)-Q(l*x));n=Q(n*q);N[b+40>>2]=Q(l-n)*u;m=l;l=Q(w*o);N[b+20>>2]=Q(m-l)*t;N[b>>2]=Q(Q(Q(1)-n)-l)*s;b=a+104|0;go(b,1);g=b;b=J[54660];em(g,b,yj(b));J[j+60>>2]=a;g=k+3144|0;g:{h:{b=J[k+3148>>2];i:{if(!b){break i}b=J[J[g>>2]+(mxa(d,e,b)<<2)>>2];if((b|0)==-1){break i}h=J[k+3152>>2];while(1){b=h+(b<<4)|0;if((d|0)==J[b>>2]&(e|0)==J[b+4>>2]){break h}b=J[b+12>>2];if((b|0)!=-1){continue}break}}if(J[a+96>>2]!=J[74028]|J[a+100>>2]!=J[74029]){break g}J[a+96>>2]=d;J[a+100>>2]=e;pl(g,d,e,j+60|0);if(M[k+3168>>2]<=L[k+1058>>1]){break g}Z(145129,38296,1032,34215);B()}J[j+48>>2]=tj(d,e);dj(4,88293,123782,j+48|0);ft(k,a);break c}if(!vv(k,a)){gt(k,a);ft(k,a);break c}b=J[a+84>>2];e=J[b+4>>2];if(!e){break e}h=J[b>>2];C=a+156|0;d=j- -64|0;i=0;j:{if(!f){g=0;b=0;while(1){v=P(b,96)+h|0;f=J[v+16>>2];r=J[f+100>>2];if(!(jj(J[f+4>>2],80659)|!J[f+80>>2])){J[d>>2]=0;J[d+4>>2]=0;J[d+8>>2]=0;J[j+76>>2]=(g<<2)+C&r<<15>>31;J[j+60>>2]=a;J[j+72>>2]=0;J[d>>2]=83;J[j+68>>2]=82;if(Zi[J[J[v+16>>2]+80>>2]](j+60|0)|0){break f}}g=((r&65536)>>>16|0)+g|0;b=b+1|0;i=e>>>0<=b>>>0;if((b|0)!=(e|0)){continue}break}break j}g=0;b=0;while(1){D=P(b,96)+h|0;r=J[D+16>>2];v=J[r+100>>2];if(!(jj(J[r+4>>2],80659)|!J[r+80>>2])){J[d>>2]=0;J[d+4>>2]=0;J[d+8>>2]=0;J[j+76>>2]=(g<<2)+C&v<<15>>31;J[j+60>>2]=a;J[j+72>>2]=uR(f);J[d>>2]=83;J[j+68>>2]=82;if(Zi[J[J[D+16>>2]+80>>2]](j+60|0)|0){break f}}g=((v&65536)>>>16|0)+g|0;b=b+1|0;i=e>>>0<=b>>>0;if((b|0)!=(e|0)){continue}break}}if(!i){break d}break e}break a}J[j+32>>2]=c;dj(4,88293,134461,j+32|0);if(!i){break d}}if(!ZD(k,a)){J[j+16>>2]=c;dj(4,88293,118216,j+16|0);break d}k:{c=J[a+148>>2];if(!(c&32768)){b=J[a+140>>2];if(b&32768){break b}J[a+148>>2]=c|32768;c=L[k+3266>>1];l:{if((c|0)!=32767){d=J[k+1036>>2];if(c>>>0>=J[k+1040>>2]-d>>2>>>0){break k}I[J[d+(c<<2)>>2]+146>>1]=b;break l}I[k+3264>>1]=b}I[k+3266>>1]=b;break b}Z(113139,38296,1053,62174);B()}break a}uv(k,a,0)}J[j>>2]=c;dj(4,88293,118308,j);a=0}Ui=j+80|0;return a}Z(145396,53895,487,84789);B()}function MS(a,b,c,d,e,f,g,h){var i=0,j=0,k=0,l=0,m=0,n=0,o=0,p=0,q=0,r=0,s=0;i=Ui+-64|0;Ui=i;a:{b:{c:{d=ZH(a,d);if(d){break c}J[i+56>>2]=0;J[i+60>>2]=0;J[i+48>>2]=0;J[i+52>>2]=0;J[i+40>>2]=0;J[i+44>>2]=0;J[i+32>>2]=0;J[i+36>>2]=0;J[i+24>>2]=0;J[i+28>>2]=0;J[i+16>>2]=0;J[i+20>>2]=0;J[i+8>>2]=0;J[i+12>>2]=0;J[i>>2]=0;J[i+4>>2]=0;d=Fw(a,64,i,i);if(d){break c}j=a+132|0;J[j>>2]=K[i+3|0]<<24&251658240|(K[i|0]|K[i+1|0]<<8|K[i+2|0]<<16);J[j+4>>2]=(K[i+4|0]|K[i+5|0]<<8|(K[i+6|0]<<16|K[i+7|0]<<24))&268435452;J[j+8>>2]=(K[i+8|0]|K[i+9|0]<<8|(K[i+10|0]<<16|K[i+11|0]<<24))&268435452;J[j+12>>2]=(K[i+12|0]|K[i+13|0]<<8|(K[i+14|0]<<16|K[i+15|0]<<24))&268435452;J[j+16>>2]=K[i+16|0]|K[i+17|0]<<8|(K[i+18|0]<<16|K[i+19|0]<<24);J[j+20>>2]=K[i+20|0]|K[i+21|0]<<8|(K[i+22|0]<<16|K[i+23|0]<<24);J[j+24>>2]=K[i+24|0]|K[i+25|0]<<8|(K[i+26|0]<<16|K[i+27|0]<<24);d=K[i+28|0]|K[i+29|0]<<8|(K[i+30|0]<<16|K[i+31|0]<<24);J[j+32>>2]=0;J[j+36>>2]=0;J[j+28>>2]=d;J[j+40>>2]=0;J[j+44>>2]=0;J[j+48>>2]=0;Zi[J[66509]](j+52|0,0,16)|0;J[j+68>>2]=0;break b}Zi[J[66509]](i,0,64)|0;break a}J[a+208>>2]=0;J[a+212>>2]=0;J[a+228>>2]=b;J[a+224>>2]=1;J[a+216>>2]=0;J[a+220>>2]=0;Zi[J[66509]](i,0,64)|0;d=-84;if(J[a+224>>2]!=1){break a}b=J[a+212>>2];d=J[a+208>>2]+13|0;b=d>>>0<13?b+1|0:b;J[a+208>>2]=d;J[a+212>>2]=b;d=ar(j,e,13);if(d){break a}d=YH(a,c,f,g);if(d){break a}d=Ui-16|0;Ui=d;c=-84;d:{e:{f:{switch(J[a+224>>2]){case 1:b=J[a+208>>2]&15;if(!b){break e}H[d+7|0]=0;H[d+8|0]=0;H[d+9|0]=0;H[d+10|0]=0;H[d+11|0]=0;H[d+12|0]=0;H[d+13|0]=0;H[d+14|0]=0;J[d>>2]=0;J[d+4>>2]=0;c=ar(a+132|0,d,16-b|0);if(!c){break e}break d;case 0:break d;case 2:break f;default:break e}}b=J[a+216>>2]&15;if(!b){break e}H[d+7|0]=0;H[d+8|0]=0;H[d+9|0]=0;H[d+10|0]=0;H[d+11|0]=0;H[d+12|0]=0;H[d+13|0]=0;H[d+14|0]=0;J[d>>2]=0;J[d+4>>2]=0;c=ar(a+132|0,d,16-b|0);if(c){break d}}J[a+224>>2]=3;b=J[a+212>>2];J[d>>2]=J[a+208>>2];J[d+4>>2]=b;b=J[a+220>>2];J[d+8>>2]=J[a+216>>2];J[d+12>>2]=b;k=a+132|0;c=ar(k,d,16);if(c){break d}a=J[k+68>>2];if(a){c=k+52|0;H[c+a|0]=1;b=J[k+68>>2];a=b+1|0;J[k+68>>2]=a;ij(a+c|0,0,15-b|0);bA(k,1,c,0)}q=J[k+28>>2];r=J[k+24>>2];j=J[k+20>>2];m=J[k+48>>2];n=J[k+44>>2];e=n;o=J[k+40>>2];c=o;a=0;b=0;p=J[k+36>>2];l=J[k+32>>2];g=l+5|0;a=g>>>0<5?1:a;f=p+a|0;b=a>>>0>f>>>0?b+1|0:b;a=0;c=b+c|0;if(b>>>0>c>>>0){a=a+1|0}b=0;s=l;e=a+e|0;if(e>>>0>>0){b=b+1|0}a=b+m>>>2|0;l=a-1|0;m=0-a|0;a=s&l|m&g;b=a+J[k+16>>2]|0;H[h|0]=b;H[h+3|0]=b>>>24;H[h+2|0]=b>>>16;H[h+1|0]=b>>>8;g=a>>>0>b>>>0;b=0;a=l&p|f&m;f=a+j|0;a=a>>>0>f>>>0?1:b;b=f+g|0;a=b>>>0>>0?a+1|0:a;H[h+4|0]=b;H[h+7|0]=(a&16777215)<<8|b>>>24;H[h+6|0]=(a&65535)<<16|b>>>16;H[h+5|0]=(a&255)<<24|b>>>8;b=0;c=l&o|c&m;f=c+r|0;b=c>>>0>f>>>0?1:b;f=a+f|0;c=f;H[h+8|0]=c;b=a>>>0>c>>>0?b+1|0:b;H[h+11|0]=(b&16777215)<<8|c>>>24;a=b;H[h+10|0]=(a&65535)<<16|c>>>16;H[h+9|0]=(a&255)<<24|c>>>8;a=(q+(l&n|e&m)|0)+a|0;H[h+12|0]=a;H[h+15|0]=a>>>24;H[h+14|0]=a>>>16;H[h+13|0]=a>>>8;c=0}Ui=d+16|0;d=c}Ui=i- -64|0;return d}function WP(a,b,c,d,e,f,g,h,i,j){var k=0,l=0,m=0,n=0,o=0,p=0,q=0,r=0,s=Q(0),t=0,u=0,v=0,w=0,x=0,y=Q(0),z=Q(0),A=0,C=0,D=Q(0),E=Q(0),F=Q(0),G=Q(0),L=Q(0),M=Q(0),O=Q(0),R=Q(0);m=Ui-80|0;Ui=m;o=J[j+8>>2];a:{b:{c:{d:{e:{t=J[d+8>>2];if((Tp(a,t)|0)==6){if(!b){break e}l=J[j+8>>2];k=J[l>>2];n=J[l+4>>2]-k|0;p=((n|0)/352|0)+1|0;if(p>>>0>(J[l+8>>2]-k|0)/352>>>0){break a}J[l+4>>2]=k+P(p,352);if(n>>>0>=4294966944){break d}l=J[j+12>>2];J[j+12>>2]=l+1;k=k+n|0;J[k+336>>2]=l;C=(J[o+72>>2]-J[o+68>>2]|0)/40|0;if(!i){break b}u=o+72|0;w=o+68|0;x=o+76|0;while(1){l=J[((r<<4)+d|0)+8>>2];n=EO(a,l);J[m+72>>2]=l;J[m+68>>2]=a;p=J[c+4>>2];J[m+76>>2]=b;J[m+60>>2]=n;J[m+64>>2]=p;J[m+48>>2]=0;J[m+52>>2]=0;J[m+40>>2]=0;J[m+44>>2]=0;Zi[J[c+24>>2]](m+60|0,J[o+60>>2],J[o+56>>2],J[o+64>>2],m+40|0);s=N[(r<<2)+f>>2];n=J[o+64>>2];p=J[m+40>>2];q=J[m+44>>2];fm(m+16|0,a,l,3);N[m+28>>2]=s;l=q-p|0;p=(l>>>0)/(n>>>0)|0;if(l>>>0>=n>>>0){n=(r<<6)+e|0;v=J[m+40>>2];q=0;while(1){D=N[n+48>>2];E=N[n+32>>2];F=N[n>>2];G=N[n+16>>2];L=N[n+52>>2];M=N[n+36>>2];O=N[n+4>>2];R=N[n+20>>2];l=v+P(q,40)|0;s=N[l+8>>2];y=N[l>>2];z=N[l+4>>2];N[l+8>>2]=N[n+56>>2]+Q(Q(N[n+40>>2]*s)+Q(Q(N[n+8>>2]*y)+Q(z*N[n+24>>2])));N[l+4>>2]=L+Q(Q(M*s)+Q(Q(O*y)+Q(z*R)));N[l>>2]=D+Q(Q(E*s)+Q(Q(F*y)+Q(z*G)));N[l+20>>2]=N[m+16>>2]*N[l+20>>2];N[l+24>>2]=N[m+20>>2]*N[l+24>>2];N[l+28>>2]=N[m+24>>2]*N[l+28>>2];N[l+32>>2]=N[m+28>>2]*N[l+32>>2];q=q+1|0;if(p>>>0>q>>>0){continue}break}}l=J[x>>2];q=J[u>>2];if(p>>>0>(l-q|0)/40>>>0){if(H[o+80|0]&1){break c}lj(((l-J[w>>2]|0)/40|0)+(p>>>0<=128?128:p)|0,40,w,x,u);q=J[u>>2];l=J[x>>2]}n=J[w>>2];v=q-n|0;q=p+((v|0)/40|0)|0;if(q>>>0>(l-n|0)/40>>>0){break a}J[u>>2]=n+P(q,40);hj(n+v|0,J[m+40>>2],P(p,40));f:{if(H[m+52|0]&1){break f}l=J[m+40>>2];if(!l){break f}cj(l)}A=p+A|0;r=r+1|0;if((r|0)!=(i|0)){continue}break}break b}Z(91703,40837,1398,24073);B()}Z(113834,40837,1399,24073);B()}Z(145396,53895,487,84789);B()}Z(151729,53895,501,2284);B()}Ao(k);J[k+156>>2]=J[o+48>>2];b=J[o+52>>2];J[k+312>>2]=A;J[k+308>>2]=C;J[k+240>>2]=1;J[k+144>>2]=b;b=Fo(a,t);J[k+172>>2]=J[(b?b:j+4|0)>>2];b=iv(a,t);if(b>>>0<5){c=K[k+320|0];H[k+320|0]=c|1;b=b<<2;J[k+252>>2]=J[b+159332>>2];J[k+248>>2]=J[b+159312>>2];b=J[g>>2];H[k+320|0]=c|3;g:{if(b){J[k+268>>2]=2;J[k+272>>2]=2;J[k+260>>2]=5;J[k+264>>2]=0;H[k+292|0]=K[b|0];H[k+293|0]=K[b+1|0];H[k+294|0]=K[b+2|0];H[k+295|0]=K[k+295|0]&208|K[b+3|0]&15;if(K[j+16|0]!=1){break g}H[j+16|0]=0;H[k+295|0]=K[k+295|0]|16;break g}H[k+294|0]=255;I[k+292>>1]=65280;J[k+268>>2]=0;J[k+272>>2]=0;J[k+260>>2]=7;J[k+264>>2]=0;H[k+295|0]=K[k+295|0]&208|15}if(h){np(k,h)}a=ev(a,t,m+60|0);h:{i:{j:{k:{switch(J[m+60>>2]-1|0){case 0:break j;case 1:break k;default:break i}}a=J[a+80>>2];if(a){break j}Z(63544,40837,1118,63496);B()}c=J[a+4>>2];a=J[a>>2];if(c|a){break h}}a=J[o+88>>2];c=J[o+92>>2]}J[k+176>>2]=a;J[k+180>>2]=c;Ui=m+80|0;return}J[m>>2]=b;dj(4,88458,155274,m);Z(114101,40837,1062,69697);B()}Z(144782,53895,514,59583);B()}function Yja(a){a=a|0;var b=0,c=0,d=0,e=0,f=0,g=0,h=0,i=0,j=0,k=0,l=0,m=0,n=0,o=0;i=Ui-976|0;Ui=i;b=J[J[a+12>>2]>>2];a:{if(H[b+22|0]&1){o=J[b+8>>2];h=ij(i+16|0,0,960);b=h;l=J[a+4>>2];d=l;c=J[d+4>>2];J[b>>2]=J[d>>2];J[b+4>>2]=c;N[b+8>>2]=N[d+8>>2];c=L[b+956>>1]&-65|L[d+956>>1]&64;I[b+956>>1]=c;c=c&-129|L[d+956>>1]&128;I[b+956>>1]=c;c=c&-257|L[d+956>>1]&256;I[b+956>>1]=c;c=c&-513|L[d+956>>1]&512;I[b+956>>1]=c;N[b+12>>2]=N[d+12>>2];N[b+16>>2]=N[d+16>>2];N[b+20>>2]=N[d+20>>2];N[b+24>>2]=N[d+24>>2];N[b+28>>2]=N[d+28>>2];N[b+32>>2]=N[d+32>>2];N[b+36>>2]=N[d+36>>2];N[b+40>>2]=N[d+40>>2];J[b+804>>2]=J[d+804>>2];c=I[d+956>>1]&1|c&-2;I[b+956>>1]=c;c=c&-3|L[d+956>>1]&2;I[b+956>>1]=c;c=c&-5|L[d+956>>1]&4;I[b+956>>1]=c;c=c&-9|L[d+956>>1]&8;I[b+956>>1]=c;hj(b+812|0,d+812|0,144);c=L[d+956>>1]&16|c&-17;I[b+956>>1]=c;N[b+44>>2]=N[d+44>>2];N[b+48>>2]=N[d+48>>2];N[b+52>>2]=N[d+52>>2];I[b+956>>1]=L[d+956>>1]&1024|c&64511;J[b+808>>2]=J[d+808>>2];g=J[d+540>>2];J[b+540>>2]=g;b:{if((g|0)<=0){break b}j=b+56|0;k=d+56|0;d=0;if(g>>>0>=4){f=g&2147483644;while(1){b=P(d,44);c=b+j|0;b=b+k|0;e=J[b+4>>2];J[c>>2]=J[b>>2];J[c+4>>2]=e;J[c+40>>2]=J[b+40>>2];e=J[b+36>>2];J[c+32>>2]=J[b+32>>2];J[c+36>>2]=e;e=J[b+28>>2];J[c+24>>2]=J[b+24>>2];J[c+28>>2]=e;e=J[b+20>>2];J[c+16>>2]=J[b+16>>2];J[c+20>>2]=e;e=J[b+12>>2];J[c+8>>2]=J[b+8>>2];J[c+12>>2]=e;b=P(d|1,44);c=b+j|0;b=b+k|0;J[c+40>>2]=J[b+40>>2];e=J[b+36>>2];J[c+32>>2]=J[b+32>>2];J[c+36>>2]=e;e=J[b+28>>2];J[c+24>>2]=J[b+24>>2];J[c+28>>2]=e;e=J[b+20>>2];J[c+16>>2]=J[b+16>>2];J[c+20>>2]=e;e=J[b+12>>2];J[c+8>>2]=J[b+8>>2];J[c+12>>2]=e;e=J[b+4>>2];J[c>>2]=J[b>>2];J[c+4>>2]=e;b=P(d|2,44);c=b+j|0;b=b+k|0;J[c+40>>2]=J[b+40>>2];e=J[b+36>>2];J[c+32>>2]=J[b+32>>2];J[c+36>>2]=e;e=J[b+28>>2];J[c+24>>2]=J[b+24>>2];J[c+28>>2]=e;e=J[b+20>>2];J[c+16>>2]=J[b+16>>2];J[c+20>>2]=e;e=J[b+12>>2];J[c+8>>2]=J[b+8>>2];J[c+12>>2]=e;e=J[b+4>>2];J[c>>2]=J[b>>2];J[c+4>>2]=e;b=P(d|3,44);c=b+j|0;b=b+k|0;J[c+40>>2]=J[b+40>>2];e=J[b+36>>2];J[c+32>>2]=J[b+32>>2];J[c+36>>2]=e;e=J[b+28>>2];J[c+24>>2]=J[b+24>>2];J[c+28>>2]=e;e=J[b+20>>2];J[c+16>>2]=J[b+16>>2];J[c+20>>2]=e;e=J[b+12>>2];J[c+8>>2]=J[b+8>>2];J[c+12>>2]=e;e=J[b+4>>2];J[c>>2]=J[b>>2];J[c+4>>2]=e;d=d+4|0;m=m+4|0;if((m|0)!=(f|0)){continue}break}}g=g&3;if(!g){break b}while(1){b=P(d,44);c=b+j|0;b=b+k|0;f=J[b+4>>2];J[c>>2]=J[b>>2];J[c+4>>2]=f;J[c+40>>2]=J[b+40>>2];f=J[b+36>>2];J[c+32>>2]=J[b+32>>2];J[c+36>>2]=f;f=J[b+28>>2];J[c+24>>2]=J[b+24>>2];J[c+28>>2]=f;f=J[b+20>>2];J[c+16>>2]=J[b+16>>2];J[c+20>>2]=f;f=J[b+12>>2];J[c+8>>2]=J[b+8>>2];J[c+12>>2]=f;d=d+1|0;n=n+1|0;if((g|0)!=(n|0)){continue}break}}J[h+800>>2]=ek(h+544|0,l+544|0,256);I[h+956>>1]=L[h+956>>1]&65503|L[J[a+4>>2]+956>>1]&32;d=i+15|0;b=0;a=Ui-16|0;Ui=a;H[a+12|0]=0;c:{while(1){J[a+8>>2]=h+P(b,960);c=tr(o,4,-2,a+8|0);if(c){break c}H[b+d|0]=K[a+12|0];b=b+1|0;if((b|0)!=1){continue}break}c=0}Ui=a+16|0;d=c?-1e3:1;if(H[i+15|0]&1|c){break a}}d=0}Ui=i+976|0;return d|0}function FF(a,b,c,d,e,f){var g=0,h=0,i=0,j=0,k=0,l=0;h=Ui-32|0;Ui=h;Kz(a,b,c,d,f);g=J[f>>2];j=J[g+12>>2];a:{if(!j){break a}i=J[e>>2];k=J[g+8>>2];g=0;b:{while(1){if(!jj(i,J[k+P(g,1552)>>2])){break b}g=g+1|0;if((j|0)!=(g|0)){continue}break}g=-1}l=J[d>>2];i=0;c:{while(1){if(!jj(l,J[k+P(i,1552)>>2])){break c}i=i+1|0;if((j|0)!=(i|0)){continue}break}i=-1}if((g|0)>=(i|0)){break a}g=J[d+20>>2];J[h+24>>2]=J[d+16>>2];J[h+28>>2]=g;g=J[d+12>>2];J[h+16>>2]=J[d+8>>2];J[h+20>>2]=g;g=J[d+4>>2];J[h+8>>2]=J[d>>2];J[h+12>>2]=g;g=J[e+20>>2];J[d+16>>2]=J[e+16>>2];J[d+20>>2]=g;g=J[e+12>>2];J[d+8>>2]=J[e+8>>2];J[d+12>>2]=g;g=J[e+4>>2];J[d>>2]=J[e>>2];J[d+4>>2]=g;g=J[h+28>>2];J[e+16>>2]=J[h+24>>2];J[e+20>>2]=g;g=J[h+20>>2];J[e+8>>2]=J[h+16>>2];J[e+12>>2]=g;g=J[h+12>>2];J[e>>2]=J[h+8>>2];J[e+4>>2]=g;g=J[f>>2];e=J[g+12>>2];if(!e){break a}i=J[d>>2];j=J[g+8>>2];g=0;d:{while(1){if(!jj(i,J[j+P(g,1552)>>2])){break d}g=g+1|0;if((e|0)!=(g|0)){continue}break}g=-1}k=J[c>>2];i=0;e:{while(1){if(!jj(k,J[j+P(i,1552)>>2])){break e}i=i+1|0;if((e|0)!=(i|0)){continue}break}i=-1}if((g|0)>=(i|0)){break a}e=J[c+20>>2];J[h+24>>2]=J[c+16>>2];J[h+28>>2]=e;e=J[c+12>>2];J[h+16>>2]=J[c+8>>2];J[h+20>>2]=e;e=J[c+4>>2];J[h+8>>2]=J[c>>2];J[h+12>>2]=e;e=J[d+20>>2];J[c+16>>2]=J[d+16>>2];J[c+20>>2]=e;e=J[d+12>>2];J[c+8>>2]=J[d+8>>2];J[c+12>>2]=e;e=J[d+4>>2];J[c>>2]=J[d>>2];J[c+4>>2]=e;e=J[h+28>>2];J[d+16>>2]=J[h+24>>2];J[d+20>>2]=e;e=J[h+20>>2];J[d+8>>2]=J[h+16>>2];J[d+12>>2]=e;e=J[h+12>>2];J[d>>2]=J[h+8>>2];J[d+4>>2]=e;e=J[f>>2];d=J[e+12>>2];if(!d){break a}i=J[c>>2];e=J[e+8>>2];g=0;f:{while(1){if(!jj(i,J[e+P(g,1552)>>2])){break f}g=g+1|0;if((d|0)!=(g|0)){continue}break}g=-1}j=J[b>>2];i=0;g:{while(1){if(!jj(j,J[e+P(i,1552)>>2])){break g}i=i+1|0;if((d|0)!=(i|0)){continue}break}i=-1}if((g|0)>=(i|0)){break a}d=J[b+20>>2];J[h+24>>2]=J[b+16>>2];J[h+28>>2]=d;d=J[b+12>>2];J[h+16>>2]=J[b+8>>2];J[h+20>>2]=d;d=J[b+4>>2];J[h+8>>2]=J[b>>2];J[h+12>>2]=d;d=J[c+20>>2];J[b+16>>2]=J[c+16>>2];J[b+20>>2]=d;d=J[c+12>>2];J[b+8>>2]=J[c+8>>2];J[b+12>>2]=d;d=J[c+4>>2];J[b>>2]=J[c>>2];J[b+4>>2]=d;d=J[h+28>>2];J[c+16>>2]=J[h+24>>2];J[c+20>>2]=d;d=J[h+20>>2];J[c+8>>2]=J[h+16>>2];J[c+12>>2]=d;d=J[h+12>>2];J[c>>2]=J[h+8>>2];J[c+4>>2]=d;d=J[f>>2];c=J[d+12>>2];if(!c){break a}e=J[b>>2];d=J[d+8>>2];g=0;h:{while(1){if(!jj(e,J[d+P(g,1552)>>2])){break h}g=g+1|0;if((c|0)!=(g|0)){continue}break}g=-1}e=J[a>>2];i=0;i:{while(1){if(!jj(e,J[d+P(i,1552)>>2])){break i}i=i+1|0;if((c|0)!=(i|0)){continue}break}i=-1}if((g|0)>=(i|0)){break a}c=J[a+20>>2];J[h+24>>2]=J[a+16>>2];J[h+28>>2]=c;c=J[a+12>>2];J[h+16>>2]=J[a+8>>2];J[h+20>>2]=c;c=J[a+4>>2];J[h+8>>2]=J[a>>2];J[h+12>>2]=c;c=J[b+20>>2];J[a+16>>2]=J[b+16>>2];J[a+20>>2]=c;c=J[b+12>>2];J[a+8>>2]=J[b+8>>2];J[a+12>>2]=c;c=J[b+4>>2];J[a>>2]=J[b>>2];J[a+4>>2]=c;a=J[h+28>>2];J[b+16>>2]=J[h+24>>2];J[b+20>>2]=a;a=J[h+20>>2];J[b+8>>2]=J[h+16>>2];J[b+12>>2]=a;a=J[h+12>>2];J[b>>2]=J[h+8>>2];J[b+4>>2]=a}Ui=h+32|0}function wt(a,b){var c=0,d=0,e=0,f=0,g=0,h=0,i=0,j=0,k=0;a:{b:{c:{d:{e:{f:{g:{if(b>>>0>=26){if(b>>>0>=33){break g}i=J[a+16>>2];d=J[a+4>>2];j=J[a+12>>2];g=J[a+20>>2];h:{if(g>>>0>24){break h}i:{if(d>>>0>=j>>>0){e=d;break i}e=d+1|0;J[a+4>>2]=e;f=K[d|0]}c=g+8|0;J[a+20>>2]=c;i=f<>2]=i;if(g>>>0>16){d=e;g=c;break h}f=0;j:{if(e>>>0>=j>>>0){d=e;break j}d=e+1|0;J[a+4>>2]=d;f=K[e|0]}e=g+16|0;J[a+20>>2]=e;i=f<>2]=i;if(g>>>0>8){g=e;break h}k:{if(d>>>0>=j>>>0){f=d;break k}f=d+1|0;J[a+4>>2]=f;h=K[d|0]}c=g+24|0;J[a+20>>2]=c;i=h<>2]=i;if(g){d=f;g=c;break h}e=0;l:{if(f>>>0>=j>>>0){d=f;break l}d=f+1|0;J[a+4>>2]=d;e=K[f|0]}g=32;J[a+20>>2]=32;i=e<>2]=i}f=g-25|0;J[a+20>>2]=f;e=i>>>25|0;J[a+16>>2]=e;k=b-25|0;c=0;if(!k){break b}if(k>>>0>=26){break f}if(f>>>0>=k>>>0){break c}h=0;m:{if(d>>>0>=j>>>0){c=d;break m}c=d+1|0;J[a+4>>2]=c;h=K[d|0]}d=g-17|0;J[a+20>>2]=d;e=h<>2]=e;n:{if(d>>>0>32){break n}if(d>>>0>=k>>>0){f=d;break c}h=0;o:{if(c>>>0>=j>>>0){b=c;break o}b=c+1|0;J[a+4>>2]=b;h=K[c|0]}f=g-9|0;J[a+20>>2]=f;e=h<>2]=e;if(f>>>0>32){break n}if(f>>>0>=k>>>0){break c}h=0;p:{if(b>>>0>=j>>>0){c=b;break p}c=b+1|0;J[a+4>>2]=c;h=K[b|0]}d=g-1|0;J[a+20>>2]=d;e=h<>2]=e;if(d>>>0>32){break n}if(d>>>0>=k>>>0){f=d;break c}h=0;q:{if(c>>>0>=j>>>0){b=c;break q}b=c+1|0;J[a+4>>2]=b;h=K[c|0]}f=g+7|0;J[a+20>>2]=f;e=h<>2]=e;if(g>>>0>25){break n}if(f>>>0>=k>>>0){break c}h=0;r:{if(b>>>0>=j>>>0){c=b;break r}c=b+1|0;J[a+4>>2]=c;h=K[b|0]}d=g+15|0;J[a+20>>2]=d;e=h<>2]=e;if(g>>>0>17){break n}if(d>>>0>=k>>>0){f=d;break c}b=0;if(c>>>0>>0){J[a+4>>2]=c+1;b=K[c|0]}J[a+20>>2]=g+23;J[a+16>>2]=b<>2];g=J[a+16>>2];c=0;break d}g=J[a+16>>2];i=J[a+20>>2];if(i>>>0>=b>>>0){break e}c=J[a+4>>2];j=J[a+12>>2];s:{if(c>>>0>=j>>>0){f=c;break s}f=c+1|0;J[a+4>>2]=f;e=K[c|0]}d=i+8|0;J[a+20>>2]=d;g=e<>2]=g;t:{if(d>>>0>32){break t}if(b>>>0<=d>>>0){i=d;break e}u:{if(f>>>0>=j>>>0){c=f;break u}c=f+1|0;J[a+4>>2]=c;h=K[f|0]}e=i+16|0;J[a+20>>2]=e;g=h<>2]=g;if(e>>>0>32){break t}if(b>>>0<=e>>>0){i=e;break e}f=0;v:{if(c>>>0>=j>>>0){h=c;break v}h=c+1|0;J[a+4>>2]=h;f=K[c|0]}d=i+24|0;J[a+20>>2]=d;g=f<>2]=g;if(d>>>0>32){break t}if(b>>>0<=d>>>0){i=d;break e}f=0;w:{if(h>>>0>=j>>>0){c=h;break w}c=h+1|0;J[a+4>>2]=c;f=K[h|0]}e=i+32|0;J[a+20>>2]=e;g=f<>2]=g;if(e>>>0>32){break t}if(b>>>0<=e>>>0){i=e;break e}f=0;x:{if(c>>>0>=j>>>0){h=c;break x}h=c+1|0;J[a+4>>2]=h;f=K[c|0]}c=i+40|0;J[a+20>>2]=c;g=f<>2]=g;if(c>>>0>32){break t}if(b>>>0<=c>>>0){i=c;break e}b=0;if(h>>>0>>0){J[a+4>>2]=h+1;b=K[h|0]}J[a+20>>2]=i+48;J[a+16>>2]=b<>2]=i-b;J[a+16>>2]=g>>>b;return c}c=((-1<>2]=f-k;J[a+16>>2]=e>>>k;return i&33554431|c}Z(109544,54542,334,18502);B()}function Zja(a){a=a|0;var b=0,c=0,d=0,e=0,f=0,g=0,h=0,i=0,j=0,k=0,l=0,m=0,n=0,o=0,p=0;g=Ui-96|0;Ui=g;f=J[a>>2];c=ij(nj(472),0,472);J[c+432>>2]=336;b=J[f+4>>2];a:{if((b|0)!=J[f+8>>2]){J[f+4>>2]=b+4;J[b>>2]=c;break a}J[g>>2]=b-J[f>>2]>>2;dj(3,88458,15828,g)}J[c+468>>2]=f;b:{c:{if(!(H[c+44|0]&1)){b=J[a+16>>2];d=J[f+64>>2];lj(b>>>0>>0?b:d,4,c+32|0,c+40|0,c+36|0);j=J[J[f+52>>2]+2480>>2];b=Fq();Vp(b,J[75180],J[75181],3,6,0);Vp(b,J[75188],J[75189],2,6,0);Vp(b,J[75186],J[75187],4,6,1);Vp(b,J[75192],J[75193],1,6,0);J[c+48>>2]=Zi[J[79404]](j,b);ll(b);d=J[75180];l=J[75181];J[c+136>>2]=3;J[c+128>>2]=1;J[c+132>>2]=0;J[c+104>>2]=d;J[c+108>>2]=l;H[c+140|0]=0;J[c+120>>2]=3;J[c+124>>2]=0;J[c+112>>2]=2;J[c+116>>2]=7;e=J[75188];m=J[75189];J[c+176>>2]=2;J[c+168>>2]=1;J[c+172>>2]=0;J[c+144>>2]=e;J[c+148>>2]=m;H[c+180|0]=0;J[c+160>>2]=2;J[c+164>>2]=0;J[c+152>>2]=3;J[c+156>>2]=7;i=J[75186];n=J[75187];J[c+216>>2]=4;J[c+208>>2]=1;J[c+212>>2]=0;J[c+184>>2]=i;J[c+188>>2]=n;H[c+220|0]=0;J[c+200>>2]=4;J[c+204>>2]=0;J[c+192>>2]=5;J[c+196>>2]=7;h=J[75192];o=J[75193];J[c+256>>2]=1;J[c+248>>2]=1;J[c+252>>2]=0;J[c+224>>2]=h;J[c+228>>2]=o;H[c+260|0]=0;J[c+240>>2]=1;J[c+244>>2]=0;J[c+232>>2]=4;J[c+236>>2]=7;J[c+60>>2]=4;b=nj(96);J[c+56>>2]=b;J[b+88>>2]=0;J[b+92>>2]=0;H[b+84|0]=1;J[b+80>>2]=8;J[b+72>>2]=h;J[b+76>>2]=o;J[b+64>>2]=0;J[b+68>>2]=0;H[b+60|0]=4;J[b+56>>2]=8;J[b+48>>2]=i;J[b+52>>2]=n;J[b+40>>2]=0;J[b+44>>2]=0;H[b+36|0]=2;J[b+32>>2]=8;J[b+24>>2]=e;J[b+28>>2]=m;J[b+16>>2]=0;J[b+20>>2]=0;H[b+12|0]=3;J[b+8>>2]=8;J[b>>2]=d;J[b+4>>2]=l;i=c- -64|0;d=1;d:{e:{while(1){e=b+P(k,24)|0;h=K[e+12|0];if(!h){break d}e=J[e+8>>2];if(e>>>0>8){break e}e=J[(e<<2)+173920>>2];d=d>>>0>>0?e:d;p=P(e,h)+((e+p|0)-1&0-e)|0;k=k+1|0;if((k|0)!=4){continue}break}J[i>>2]=(d+p|0)-1&0-d;break d}Z(152787,40052,154,64561);B()}b=J[c+48>>2];if(b){b=L[b+202>>1]}else{b=0}J[c+428>>2]=4;J[c+424>>2]=b;if(H[c+80|0]&1){break b}lj(512,40,c+68|0,c+76|0,c+72|0);J[c+52>>2]=Zi[J[79391]](j,0,0,0);b=g;J[b+88>>2]=-1;J[b+92>>2]=-1;J[b+80>>2]=-1;J[b+84>>2]=-1;I[b+78>>1]=257;J[b+64>>2]=0;J[b+68>>2]=131074;I[b+72>>1]=1;H[b+59|0]=0;H[b+60|0]=0;H[b+61|0]=0;H[b+62|0]=0;J[b+52>>2]=0;J[b+56>>2]=0;I[b+74>>1]=2;I[b+76>>1]=2;J[b+36>>2]=1;J[b+40>>2]=1;J[b+44>>2]=0;J[b+48>>2]=0;J[b+20>>2]=16;J[b+24>>2]=3;J[b+28>>2]=1;J[b+32>>2]=1;I[b+58>>1]=2;I[b+56>>1]=2;J[b+16>>2]=b+80;d=Zi[J[79454]](j,b- -64|0)|0;J[c+88>>2]=d;e=Yi;J[c+92>>2]=e;Zi[J[79456]](d,e,b+16|0);if(H[c+12|0]&1){break b}lj(128,352,c,c+8|0,c+4|0);if(H[c+28|0]&1){break b}lj(128,4,c+16|0,c+24|0,c+20|0);b=J[c+16>>2];d=J[c+24>>2]-b|0;if(d>>>0<=511){break c}J[c+20>>2]=b+512;ij(b,0,d);b=J[f+68>>2];J[c+440>>2]=b;d=J[f+72>>2];J[c+444>>2]=d;J[c+448>>2]=J[f+76>>2];J[c+96>>2]=CM(b,d);J[c+456>>2]=J[f+80>>2];J[c+464>>2]=CB(J[f+60>>2]);if(K[269788]){vq(J[f+48>>2],257,c)}J[J[a+12>>2]>>2]=c;Ui=g+96|0;return 0}break b}Z(144782,53895,514,59583);B()}Z(151729,53895,501,2284);B()}function Mu(a){var b=0,c=0,d=0,e=0,f=0,g=0,h=0,i=0,j=0,k=0,l=0,m=0;c=Ui-4288|0;Ui=c;cm(980536,J[55861],c+3264|0,1024);j=J[a+52>>2];Tj(j);e=c+3256|0;J[e>>2]=0;J[e+4>>2]=0;J[c+3248>>2]=0;J[c+3252>>2]=0;a:{b=J[a+4>>2];d=J[a>>2];if((b|0)==(d|0)){break a}b=b-d>>4;i=b>>>0<=1?1:b;h=c+1200|0;f=c+1068|0;k=c+3248|4;b=0;b:{c:{while(1){d=J[a>>2];if(J[a+4>>2]-d>>4>>>0>b>>>0){g=d+(b<<4)|0;if(K[g+12|0]==1){d=J[c+3252>>2];if((d|0)==J[c+3256>>2]){if(H[c+3260|0]&1){break c}lj(((d-J[c+3248>>2]|0)/12|0)+8|0,12,c+3248|0,e,k)}d=c+1060|0;Ls(J[g+4>>2],d);d:{if(!K[c+1068|0]){J[c+4>>2]=h;J[c>>2]=d;Gj(c+32|0,1024,26114,c);break d}J[c+24>>2]=h;J[c+20>>2]=f;J[c+16>>2]=c+1060;Gj(c+32|0,1024,26181,c+16|0)}l=Gk(J[g>>2]);m=Gk(c+32|0);d=J[c+3252>>2];if((d|0)==J[c+3256>>2]){break b}g=J[g+8>>2];J[c+3252>>2]=d+12;J[d+8>>2]=g;J[d+4>>2]=m;J[d>>2]=l}b=b+1|0;if((i|0)!=(b|0)){continue}break a}break}Z(145396,53895,487,84789);B()}Z(151729,53895,501,2284);B()}Z(112520,53895,557,53220);B()}g=c+3248|0;b=Ui-2400|0;Ui=b;e:{f:{d=c+3264|0;a=ol(d,82669);g:{if(!a){J[b>>2]=d;dj(4,96538,27229,b);a=-9;break g}J[b+336>>2]=91447;e=b+352|0;h:{if((yl(e,Gj(e,2048,31902,b+336|0),1,a)|0)!=1){J[b+320>>2]=d;dj(4,96538,147214,b+320|0);vk(a);break h}J[b+304>>2]=J[55862];e=b+352|0;if((yl(e,Gj(e,2048,31902,b+304|0),1,a)|0)!=1){J[b+288>>2]=d;dj(4,96538,147214,b+288|0);vk(a);break h}J[b+272>>2]=1;e=b+352|0;if((yl(e,Gj(e,2048,80444,b+272|0),1,a)|0)!=1){J[b+256>>2]=d;dj(4,96538,147214,b+256|0);vk(a);break h}J[b+240>>2]=158634;e=b+352|0;if((yl(e,Gj(e,2048,31902,b+240|0),1,a)|0)!=1){J[b+224>>2]=d;dj(4,96538,147214,b+224|0);vk(a);break h}e=J[g+4>>2];h=J[g>>2];if((e|0)!=(h|0)){e=(e-h|0)/12|0;i=e>>>0<=1?1:e;h=0;while(1){e=J[g>>2];if((J[g+4>>2]-e|0)/12>>>0<=h>>>0){break f}i:{e=e+P(h,12)|0;if(!J[e>>2]|!J[e+4>>2]|J[e+8>>2]<0){break i}J[b+208>>2]=86865;f=b+352|0;if((yl(f,Gj(f,2048,31902,b+208|0),1,a)|0)!=1){J[b+192>>2]=d;dj(4,96538,147214,b+192|0);vk(a);break h}J[b+176>>2]=J[55862];f=b+352|0;if((yl(f,Gj(f,2048,31902,b+176|0),1,a)|0)!=1){J[b+160>>2]=d;dj(4,96538,147214,b+160|0);vk(a);break h}J[b+144>>2]=J[e+8>>2];f=b+352|0;if((yl(f,Gj(f,2048,80444,b+144|0),1,a)|0)!=1){J[b+128>>2]=d;dj(4,96538,147214,b+128|0);vk(a);break h}J[b+112>>2]=J[55862];f=b+352|0;if((yl(f,Gj(f,2048,31902,b+112|0),1,a)|0)!=1){J[b+96>>2]=d;dj(4,96538,147214,b+96|0);vk(a);break h}if((xx(a,J[e>>2])|0)!=1){J[b+80>>2]=d;dj(4,96538,147214,b+80|0);vk(a);break h}if((xx(a,J[55862])|0)!=1){J[b+64>>2]=d;dj(4,96538,147214,b- -64|0);vk(a);break h}if((xx(a,J[e+4>>2])|0)!=1){J[b+48>>2]=d;dj(4,96538,147214,b+48|0);vk(a);break h}if((xx(a,158634)|0)==1){break i}J[b+32>>2]=d;dj(4,96538,147214,b+32|0);vk(a);break h}h=h+1|0;if((i|0)!=(h|0)){continue}break}}vk(a);J[b+16>>2]=d;dj(2,96538,154743,b+16|0)}a=0}Ui=b+2400|0;break e}Z(145396,53895,494,84789);B()}BK(g);j:{if(H[c+3260|0]&1){break j}b=J[c+3248>>2];if(!b){break j}cj(b)}Lj(j);Ui=c+4288|0;return a}function gC(a,b,c){var d=0,e=0,f=0,g=0,h=0,i=0,j=0,k=0,l=0;f=Ui-32|0;Ui=f;a:{b:{c:{j=J[a+2480>>2];g=Zi[J[79415]](j,b,c)|0;if(g){d=nj(176);ij(d+24|0,0,152);J[d+12>>2]=c;J[d+8>>2]=b;J[d>>2]=a;J[d+168>>2]=1;J[d+16>>2]=0;J[d+20>>2]=0;J[d+4>>2]=g;H[d+172|0]=kp(j,5)|K[d+172|0]&254;i=Zi[J[79426]](J[d+4>>2])|0;d:{e:{if(!(H[d+92|0]&1)){lj(i,40,d+80|0,d+88|0,d+84|0);a=J[d+80>>2];if(i>>>0>(J[d+88>>2]-a|0)/40>>>0){break c}J[d+84>>2]=a+P(i,40);if(H[d+76|0]&1){break a}lj(i,56,d- -64|0,d+72|0,d+68|0);a=J[d+64>>2];if(i>>>0>(J[d+72>>2]-a|0)/56>>>0){break c}J[d+68>>2]=a+P(i,56);if(!i){break d}l=H[d+172|0]&1;b=0;while(1){J[f+24>>2]=0;J[f+28>>2]=0;J[f+20>>2]=-1;J[f+16>>2]=0;J[f+12>>2]=0;J[f+8>>2]=-1;Zi[J[79427]](J[d+4>>2],b,f+24|0,f+20|0,f+12|0,f+16|0,f+8|0);e=J[d+64>>2];if((J[d+68>>2]-e|0)/56>>>0<=b>>>0){break b}g=J[f+12>>2];k=J[f+20>>2];a=J[f+24>>2];c=J[f+28>>2];e=e+P(b,56)|0;J[e+28>>2]=7;J[e+8>>2]=a;J[e+12>>2]=c;if(!(61951>>>k&1)|k>>>0>=16){break e}H[e+24|0]=0;J[e+20>>2]=g;J[e+32>>2]=1;J[e+36>>2]=0;J[e+16>>2]=1;J[e+40>>2]=J[(k<<2)+172800>>2];f:{if((a|0)==J[84232]&(c|0)==J[84233]){J[e+32>>2]=0;J[e+16>>2]=2;break f}if(!(((a|0)!=J[84240]|(c|0)!=J[84241])&(J[84242]!=(a|0)|J[84243]!=(c|0)))){J[e+32>>2]=2;J[e+16>>2]=3;break f}if((a|0)==J[84238]&(c|0)==J[84239]){J[e+32>>2]=2;J[e+16>>2]=5;break f}if((a|0)==J[84244]&(c|0)==J[84245]){J[e+32>>2]=2;J[e+16>>2]=4;break f}if((a|0)==J[84234]&(c|0)==J[84235]){J[e+32>>2]=0;J[e+16>>2]=6;break f}if((a|0)==J[84236]&(c|0)==J[84237]){J[e+32>>2]=0;J[e+16>>2]=7;break f}g:{if((a|0)==J[84246]&(c|0)==J[84247]){J[e+16>>2]=8;if(l){break g}break f}if(J[84248]!=(a|0)|J[84249]!=(c|0)){break f}J[e+16>>2]=9;if(!l){break f}}J[e+36>>2]=1}c=J[d+80>>2];if((J[d+84>>2]-c|0)/40>>>0<=b>>>0){break b}a=J[f+8>>2];c=c+P(b,40)|0;I[c+36>>1]=h;J[c+32>>2]=a;I[c+38>>1]=J[f+16>>2];h=P(Gq(lp(7)),J[f+12>>2])+h|0;b=b+1|0;if((i|0)!=(b|0)){continue}break}break d}break a}Z(152558,40773,49,64514);B()}if(H[d+108|0]&1){break a}lj(h,1,d+96|0,d+104|0,d+100|0);a=J[d+96>>2];if(J[d+104>>2]-a>>>0>>0){break c}J[d+100>>2]=a+h;ij(a,0,h);BL(j,d);g=Ui-16|0;Ui=g;a=J[d+4>>2];c=J[a+2052>>2]-J[a+2048>>2]>>5;J[g+12>>2]=0;J[g+8>>2]=0;oL(J[d+4>>2],c,g+12|0,g+8|0);b=J[g+8>>2];a=b+J[g+12>>2]|0;if(a){OC(d+32|0,a,a<<1);if(H[d+124|0]&1){break a}lj(J[g+12>>2],40,d+112|0,d+120|0,d+116|0);b=J[g+8>>2]}h:{i:{j:{if(!b){break j}if(H[d+140|0]&1){break a}lj(b,48,d+128|0,d+136|0,d+132|0);b=J[g+8>>2];if(!b){break j}h=0;while(1){a=J[d+132>>2];if((a|0)==J[d+136>>2]){break i}J[d+132>>2]=a+48;H[a+44|0]=0;J[a+40>>2]=1065353216;J[a+32>>2]=-1;J[a+36>>2]=-1;J[a+24>>2]=1;J[a+16>>2]=2;J[a+20>>2]=1;J[a+8>>2]=0;J[a+12>>2]=5;J[a>>2]=0;J[a+4>>2]=0;h=h+1|0;if((b|0)!=(h|0)){continue}break}}ZK(J[d+4>>2],c,d+32|0,d+112|0,d+128|0);Ui=g+16|0;break h}Z(112520,53895,557,53220);B()}}Ui=f+32|0;return d}Z(144782,53895,514,59583);B()}Z(145396,53895,487,84789);B()}Z(151729,53895,501,2284);B()}function CP(a,b){var c=0,d=0,e=0,f=0,g=0,h=0,i=0,j=0,k=0,l=0,m=0,n=0,o=0,p=0,q=0,r=0,s=0,t=0,u=0,v=0,w=0,x=0,y=0,z=0,A=0,C=0,D=0,E=0,F=0,G=0,I=0,N=0,O=0;i=Ui-16|0;Ui=i;d=J[b>>2];a:{if(J[d+168>>2]>=0){break a}j=J[d+136>>2];d=J[j+12>>2];g=J[j+8>>2];if((d|0)==(g|0)){break a}d=d-g>>2;s=d>>>0<=1?1:d;t=a+120|0;u=a+112|0;v=a+104|0;w=a+96|0;x=a+88|0;y=a+80|0;z=a+72|0;A=a- -64|0;C=a+56|0;D=a+48|0;E=a+40|0;F=a+32|0;G=a+24|0;I=a+16|0;N=a+8|0;p=J[j+4>>2];n=J[j>>2];q=J[n+96>>2];while(1){b:{if(M[p+8>>2]>k>>>0){l=0;m=J[p+4>>2]+(k<<5)|0;r=J[m+28>>2];if(!r){break b}while(1){c:{d:{e:{f:{if(M[m+28>>2]>l>>>0){d=J[m+24>>2]+P(l,24)|0;g=J[d+8>>2];if(g>>>0>=M[q+64>>2]|!J[(J[q+60>>2]+P(g,12)|0)+4>>2]){break c}e=J[b+8>>2];h=J[j+40>>2];c=J[d+4>>2];o=J[j+36>>2];f=J[d>>2];d=K[d+20|0]<<2&4|(H[d+12|0]&1|K[d+16|0]<<1&2);H[i+14|0]=d;H[i+15|0]=d;O=e;d=c-h|0;e=f-o|0;IL(O,k,d,e,g,i+14|0);h=J[n>>2];if(g>>>0>=J[n+4>>2]-h>>3>>>0){break f}o=e+P(d,J[j+28>>2])|0;d=h+(g<<3)|0;g=J[d>>2];d=J[d+4>>2];h=d;if(d|g){d=J[a>>2];e=J[a+4>>2];if(!(d|e)){e=0;d=a;break e}c=1;if((d|0)==(g|0)&(e|0)==(h|0)){break d}d=N;e=J[d>>2];c=J[d+4>>2];f=c;if(!(e|c)){e=1;break e}c=2;if((e|0)==(g|0)&(f|0)==(h|0)){break d}d=I;e=J[d>>2];c=J[d+4>>2];f=c;if(!(e|c)){e=2;break e}c=4;if((e|0)==(g|0)&(f|0)==(h|0)){break d}d=G;e=J[d>>2];c=J[d+4>>2];f=c;if(!(e|c)){e=3;break e}c=8;if((e|0)==(g|0)&(f|0)==(h|0)){break d}d=F;e=J[d>>2];c=J[d+4>>2];f=c;if(!(e|c)){e=4;break e}c=16;if((e|0)==(g|0)&(f|0)==(h|0)){break d}d=E;e=J[d>>2];c=J[d+4>>2];f=c;if(!(e|c)){e=5;break e}c=32;if((e|0)==(g|0)&(f|0)==(h|0)){break d}d=D;e=J[d>>2];c=J[d+4>>2];f=c;if(!(e|c)){e=6;break e}c=64;if((e|0)==(g|0)&(f|0)==(h|0)){break d}d=C;e=J[d>>2];c=J[d+4>>2];f=c;if(!(e|c)){e=7;break e}c=128;if((e|0)==(g|0)&(f|0)==(h|0)){break d}d=A;e=J[d>>2];c=J[d+4>>2];f=c;if(!(e|c)){e=8;break e}c=256;if((e|0)==(g|0)&(f|0)==(h|0)){break d}d=z;e=J[d>>2];c=J[d+4>>2];f=c;if(!(e|c)){e=9;break e}c=512;if((e|0)==(g|0)&(f|0)==(h|0)){break d}d=y;e=J[d>>2];c=J[d+4>>2];f=c;if(!(e|c)){e=10;break e}c=1024;if((e|0)==(g|0)&(f|0)==(h|0)){break d}d=x;e=J[d>>2];c=J[d+4>>2];f=c;if(!(e|c)){e=11;break e}c=2048;if((e|0)==(g|0)&(f|0)==(h|0)){break d}d=w;e=J[d>>2];c=J[d+4>>2];f=c;if(!(e|c)){e=12;break e}c=4096;if((e|0)==(g|0)&(f|0)==(h|0)){break d}d=v;e=J[d>>2];c=J[d+4>>2];f=c;if(!(e|c)){e=13;break e}c=8192;if((e|0)==(g|0)&(f|0)==(h|0)){break d}d=u;e=J[d>>2];c=J[d+4>>2];f=c;if(!(e|c)){e=14;break e}c=16384;if((e|0)==(g|0)&(f|0)==(h|0)){break d}d=t;e=J[d>>2];c=J[d+4>>2];f=c;if(!(e|c)){e=15;break e}c=32768;if((e|0)==(g|0)&(f|0)==(h|0)){break d}J[i>>2]=tj(g,h);dj(3,88458,133756,i)}c=0;break d}Z(12664,55417,165,84789);B()}Z(145396,53895,487,84789);B()}J[d>>2]=g;J[d+4>>2]=h;c=1<>2],k,o,c,L[b+24>>1])}l=l+1|0;if((r|0)!=(l|0)){continue}break}break b}Z(12664,55417,190,84789);B()}JL(J[b+8>>2],k,J[m+8>>2]);k=k+1|0;if((s|0)!=(k|0)){continue}break}}Ui=i+16|0}function Yw(a,b,c,d,e){var f=Q(0),g=Q(0),h=Q(0),i=Q(0),j=Q(0),k=Q(0),l=Q(0),m=Q(0),n=Q(0),o=Q(0),p=Q(0),q=Q(0),r=0,s=Q(0),t=Q(0),u=Q(0),v=Q(0),w=Q(0),x=Q(0),y=Q(0),z=Q(0),A=Q(0),B=Q(0),C=Q(0),D=Q(0),E=0,F=Q(0),G=Q(0),H=Q(0);f=Q(-1);n=N[a>>2];h=N[b>>2];g=Q(n-h);l=N[b+4>>2];t=N[c+4>>2];A=Q(l-t);o=N[a+4>>2];i=Q(o-l);y=N[c>>2];B=Q(h-y);v=Q(Q(g*A)-Q(i*B));p=N[b+8>>2];z=N[c+8>>2];C=Q(p-z);q=N[a+8>>2];k=Q(q-p);w=Q(Q(i*C)-Q(k*A));x=Q(Q(k*B)-Q(g*C));F=Q(Q(v*v)+Q(Q(w*w)+Q(x*x)));a:{if(!(F>Q(0))){break a}D=Q(-w);G=Q(-v);H=Q(-x);b:{if(!(Q(Q(q*Q(Q(g*x)-Q(i*w)))+Q(Q(n*Q(Q(i*v)-Q(k*x)))+Q(o*Q(Q(k*w)-Q(g*v)))))>Q(0))){i=Q(-1);k=t;j=y;g=Q(0);f=z;break b}i=Q(-1);k=Q(p-q);j=Q(h-n);m=Q(l-o);f=Q(Q(k*k)+Q(Q(j*j)+Q(m*m)));c:{if(!(f>Q(0))){g=Q(0);r=0;break c}g=Q(1);f=Q(Q(-Q(Q(q*k)+Q(Q(n*j)+Q(o*m))))/f);if(f>=Q(1)){i=Q(Q(p*p)+Q(Q(h*h)+Q(l*l)));E=2;r=2;break c}g=Q(0);if(f<=Q(0)){i=Q(Q(q*q)+Q(Q(n*n)+Q(o*o)));u=Q(1);r=1;break c}g=Q(q+Q(k*f));i=Q(g*g);g=Q(n+Q(j*f));h=Q(g*g);g=Q(o+Q(m*f));i=Q(i+Q(h+Q(g*g)));u=Q(Q(1)-f);E=2;g=f;r=3}J[e>>2]=r&1|E;J[d+8>>2]=0;N[d+4>>2]=g;N[d>>2]=u;k=N[c+4>>2];j=N[c>>2];p=N[b+8>>2];l=N[b+4>>2];h=N[b>>2];f=N[c+8>>2]}m=f;z=Q(z-q);t=Q(t-o);y=Q(y-n);d:{if(!(Q(Q(p*Q(Q(B*x)+Q(A*D)))+Q(Q(h*Q(Q(A*v)+Q(C*H)))+Q(l*Q(Q(C*w)+Q(B*G)))))>Q(0))){f=i;break d}E=iQ(0))){break e}g=Q(1);f=Q(Q(-Q(Q(p*n)+Q(Q(h*o)+Q(l*q))))/f);if(f>=Q(1)){u=Q(0);r=2;s=Q(Q(m*m)+Q(Q(j*j)+Q(k*k)));break e}g=Q(0);if(f<=Q(0)){u=Q(1);r=1;s=Q(Q(p*p)+Q(Q(h*h)+Q(l*l)));break e}u=Q(Q(1)-f);r=3;g=f;f=Q(p+Q(n*f));s=Q(f*f);f=Q(h+Q(o*g));h=Q(f*f);f=Q(l+Q(q*g));s=Q(s+Q(h+Q(f*f)))}f=s;if(!(E|i>f)){f=i;break d}J[e>>2]=r<<1;N[d+8>>2]=g;N[d+4>>2]=u;J[d>>2]=0;m=N[c+8>>2];k=N[c+4>>2];j=N[c>>2]}f:{if(!(Q(Q(m*Q(Q(y*x)+Q(t*D)))+Q(Q(j*Q(Q(t*v)+Q(z*H)))+Q(k*Q(Q(z*w)+Q(y*G)))))>Q(0))){break f}h=Q(-1);o=N[a+8>>2];l=Q(o-m);q=N[a>>2];p=Q(q-j);D=N[a+4>>2];n=Q(D-k);i=Q(Q(l*l)+Q(Q(p*p)+Q(n*n)));g:{if(!(i>Q(0))){break g}g=Q(1);i=Q(Q(-Q(Q(m*l)+Q(Q(j*p)+Q(k*n))))/i);if(i>=Q(1)){h=Q(Q(o*o)+Q(Q(q*q)+Q(D*D)));u=Q(0);r=2;break g}g=Q(0);if(i<=Q(0)){h=Q(Q(m*m)+Q(Q(j*j)+Q(k*k)));u=Q(1);r=1;break g}g=Q(m+Q(l*i));h=Q(g*g);g=Q(j+Q(p*i));j=Q(g*g);g=Q(k+Q(n*i));h=Q(h+Q(j+Q(g*g)));u=Q(Q(1)-i);r=3;g=i}if(!(fh)){break f}J[e>>2]=r<<2&4|r>>>1;J[d+4>>2]=0;N[d>>2]=g;N[d+8>>2]=u;f=h}if(!(f>2];g=N[a>>2];i=N[a+4>>2];J[e>>2]=7;i=Q(Q(Q(f*v)+Q(Q(g*w)+Q(x*i)))/F);f=Q(x*i);h=Q(N[b+4>>2]-f);g=Q(w*i);k=Q(N[b>>2]-g);j=Q(Q(B*h)-Q(A*k));m=Q(j*j);i=Q(v*i);j=Q(N[b+8>>2]-i);h=Q(Q(A*j)-Q(C*h));s=Q(h*h);h=Q(Q(C*k)-Q(B*j));j=Q(Y(Q(m+Q(s+Q(h*h)))));h=Q(Y(F));k=Q(j/h);N[d>>2]=k;j=Q(N[c+4>>2]-f);m=Q(N[c>>2]-g);l=Q(Q(y*j)-Q(t*m));s=t;t=Q(N[c+8>>2]-i);j=Q(Q(s*t)-Q(z*j));s=Q(j*j);j=Q(Q(z*m)-Q(y*t));h=Q(Q(Y(Q(Q(l*l)+Q(s+Q(j*j)))))/h);N[d+4>>2]=h;N[d+8>>2]=Q(1)-Q(k+h);f=Q(Q(i*i)+Q(Q(g*g)+Q(f*f)))}return f}function Via(a){a=a|0;var b=0,c=0,d=0,e=0,f=0,g=0,h=Q(0),i=Q(0),j=0,k=0,l=0,m=0,n=0,o=0,p=Q(0);g=Ui-128|0;Ui=g;b=J[a+4>>2];d=J[b+16>>2];e=J[J[a+12>>2]>>2];if(e>>>0>2]-d>>3>>>0){d=J[d+(e<<3)>>2];c=J[b+4>>2];b=J[b>>2];if(d>>>0>2>>>0){d=J[b+(d<<2)>>2];e=J[a+16>>2];b=J[e+64>>2];c=J[55237];f=J[e+68>>2];a:{if((b|0)==J[c+8>>2]&(f|0)==J[c+12>>2]){H[d+262|0]=K[d+262|0]|1;a=J[d+132>>2];H[a+186|0]=K[a+186|0]&251|4;break a}c=J[55238];if((b|0)==J[c+8>>2]&(f|0)==J[c+12>>2]){H[d+262|0]=K[d+262|0]&254;a=J[d+132>>2];H[a+186|0]=K[a+186|0]&251;break a}if(!J[e+80>>2]){break a}c=J[59850];if((b|0)==J[c+8>>2]&(f|0)==J[c+12>>2]){b:{c:{b=J[e+96>>2];n=J[e+100>>2];o=J[e+104>>2];i=N[e+108>>2];h=N[e+112>>2];p=N[e+116>>2];d:{e:{f=J[d+132>>2];c=J[f+84>>2];if(!c){break e}j=J[c+4>>2];if(!j){break e}k=J[c>>2];c=0;while(1){l=k+(c<<5)|0;if(J[l>>2]!=(b|0)|J[l+4>>2]!=(n|0)){c=c+1|0;if((j|0)!=(c|0)){continue}break e}break}f:{if(i>Q(0)){N[f+176>>2]=i;J[f+180>>2]=0;j=K[f+186|0];c=j&1;j=j|2;break f}j=K[f+186|0];c=j&1;k=f+(c<<5)|0;H[k+28|0]=K[k+28|0]&254}k=1;m=c^1;H[f+186|0]=m|j&254;c=f+(m<<5)|0;J[c>>2]=l;J[c+8>>2]=b;J[c+12>>2]=n;J[c+24>>2]=o;b=K[c+28|0];g:{h:{switch(o-2|0){case 0:case 3:H[c+28|0]=b|3;h=hQ(1)?Q(1):h));k=0;break g;default:break h}}H[c+28|0]=b&252|1}i=N[l+8>>2];h=Q(h*i);i:{if(!(Q(R(h))>i)){break i}h=vs(h,i);if(!(Q(R(h))>2]=k?h:Q(i-h);N[(f+(m<<5)|0)+20>>2]=p>Q(0)?p:Q(0);b=0;break d}b=f+((H[f+186|0]&1)<<5)|0;H[b+28|0]=K[b+28|0]&254;b=3}switch(b|0){case 3:break b;case 0:break c;default:break a}}b=J[a+16>>2];e=J[b+4>>2];J[d+136>>2]=J[b>>2];J[d+140>>2]=e;e=J[b+28>>2];J[d+160>>2]=J[b+24>>2];J[d+164>>2]=e;e=J[b+20>>2];J[d+152>>2]=J[b+16>>2];J[d+156>>2]=e;e=J[b+12>>2];J[d+144>>2]=J[b+8>>2];J[d+148>>2]=e;J[d+168>>2]=J[J[a+16>>2]+76>>2];break a}a=J[a+16>>2];b=dm(J[a+32>>2],J[a+36>>2]);d=tj(J[a+48>>2],J[a+52>>2]);a=tj(J[a+56>>2],J[a+60>>2]);J[g+12>>2]=tj(J[e+96>>2],J[e+100>>2]);J[g+8>>2]=a;J[g+4>>2]=d;J[g>>2]=b;dj(4,88458,149063,g);break a}c=J[59851];if((b|0)==J[c+8>>2]&(f|0)==J[c+12>>2]){a=J[d+132>>2];a=((H[a+186|0]&1)<<5)+a|0;H[a+28|0]=K[a+28|0]&254;break a}c=J[57150];if((b|0)==J[c+8>>2]&(f|0)==J[c+12>>2]){b=lQ(J[d+208>>2],J[d+128>>2]);f=J[e+100>>2];c=J[e+96>>2];N[g+32>>2]=N[e+112>>2];N[g+36>>2]=N[e+116>>2];N[g+40>>2]=N[e+120>>2];N[g+44>>2]=N[e+124>>2];if((Wp(b,c,f,Yp(g+56|0,g+32|0),J[e+128>>2],756,d)|0)!=-1){break a}a=J[a+16>>2];b=dm(J[a+32>>2],J[a+36>>2]);d=tj(J[a+48>>2],J[a+52>>2]);a=tj(J[a+56>>2],J[a+60>>2]);J[g+28>>2]=tj(J[e+96>>2],J[e+100>>2]);J[g+24>>2]=a;J[g+20>>2]=d;J[g+16>>2]=b;dj(4,88458,149025,g+16|0);break a}a=J[57166];if(J[a+8>>2]!=(b|0)|J[a+12>>2]!=(f|0)){break a}a=J[d+172>>2];if(!a){break a}if(!wy(a,J[e+96>>2],J[e+100>>2])){break a}H[d+262|0]=K[d+262|0]|8}Ui=g+128|0;return 0}}Z(145396,53895,487,84789);B()}function Uha(a,b){a=a|0;b=b|0;var c=0,d=Q(0),e=Q(0),f=Q(0),g=Q(0),h=0,i=Q(0),j=Q(0),k=Q(0),l=Q(0),m=Q(0),n=Q(0),o=Q(0),p=Q(0),q=0,r=Q(0),s=Q(0),t=Q(0),u=Q(0),v=Q(0),w=Q(0),x=Q(0),y=Q(0),z=Q(0),A=Q(0),C=Q(0),D=Q(0),E=Q(0),F=Q(0),G=Q(0),H=Q(0),L=Q(0),M=Q(0),O=Q(0),P=Q(0),R=0,S=0;c=Ui-144|0;Ui=c;h=J[a+8>>2];b=J[h+8>>2];a=J[h+4>>2];a:{if((b|0)==(a|0)){a=b;break a}b=b-a>>2;R=b>>>0<=1?1:b;b:{while(1){b=J[h+4>>2];if(J[h+8>>2]-b>>2>>>0>q>>>0){b=J[b+(q<<2)>>2];c:{if((K[b+166|0]&3)!=3){break c}a=vP(b);I[b+164>>1]=a;if(!(a&65535)){break c}f=N[b+20>>2];k=N[b+24>>2];e=N[b+28>>2];d=N[b+16>>2];J[c+124>>2]=0;J[c+108>>2]=0;J[c+92>>2]=0;g=Q(k+k);i=Q(f*g);m=Q(d+d);j=Q(e*m);N[c+116>>2]=i-j;n=Q(d*g);l=Q(f+f);o=Q(e*l);N[c+112>>2]=n+o;N[c+104>>2]=i+j;i=Q(d*l);e=Q(e*g);N[c+96>>2]=i-e;N[c+88>>2]=n-o;N[c+84>>2]=i+e;d=Q(Q(1)-Q(d*m));f=Q(f*l);N[c+120>>2]=d-f;e=d;d=Q(k*g);N[c+100>>2]=e-d;N[c+80>>2]=Q(Q(1)-f)-d;a=J[b+4>>2];S=J[b>>2];d=N[b+8>>2];J[c+140>>2]=1065353216;N[c+136>>2]=d;J[c+128>>2]=S;J[c+132>>2]=a;a=op(J[b+96>>2]);d:{if((K[J[b+96>>2]+137|0]&2)>>>1|0){d=N[a+48>>2];f=N[a+32>>2];k=N[a>>2];e=N[a+16>>2];g=N[a+52>>2];l=N[a+36>>2];i=N[a+4>>2];m=N[a+20>>2];j=N[a+56>>2];n=N[a+40>>2];o=N[a+8>>2];r=N[a+24>>2];s=N[c+140>>2];t=N[c+136>>2];u=N[c+128>>2];v=N[c+132>>2];p=N[c+92>>2];w=N[c+88>>2];x=N[c+80>>2];y=N[c+84>>2];z=N[c+108>>2];A=N[c+104>>2];C=N[c+96>>2];D=N[c+100>>2];E=N[a+60>>2];F=N[c+124>>2];G=N[a+44>>2];H=N[c+120>>2];L=N[a+12>>2];M=N[c+112>>2];O=N[a+28>>2];P=N[c+116>>2];N[b+76>>2]=Q(E*F)+Q(Q(G*H)+Q(Q(L*M)+Q(O*P)));N[b+72>>2]=Q(j*F)+Q(Q(n*H)+Q(Q(o*M)+Q(r*P)));N[b+68>>2]=Q(g*F)+Q(Q(l*H)+Q(Q(i*M)+Q(m*P)));N[b+64>>2]=Q(d*F)+Q(Q(f*H)+Q(Q(k*M)+Q(e*P)));N[b+60>>2]=Q(E*z)+Q(Q(G*A)+Q(Q(L*C)+Q(O*D)));N[b+56>>2]=Q(j*z)+Q(Q(n*A)+Q(Q(o*C)+Q(r*D)));N[b+52>>2]=Q(g*z)+Q(Q(l*A)+Q(Q(i*C)+Q(m*D)));N[b+48>>2]=Q(d*z)+Q(Q(f*A)+Q(Q(k*C)+Q(e*D)));N[b+44>>2]=Q(E*p)+Q(Q(G*w)+Q(Q(L*x)+Q(y*O)));N[b+40>>2]=Q(j*p)+Q(Q(n*w)+Q(Q(o*x)+Q(y*r)));N[b+36>>2]=Q(g*p)+Q(Q(l*w)+Q(Q(i*x)+Q(y*m)));N[b+32>>2]=Q(d*p)+Q(Q(f*w)+Q(Q(k*x)+Q(e*y)));p=Q(Q(E*s)+Q(Q(G*t)+Q(Q(L*u)+Q(O*v))));j=Q(Q(j*s)+Q(Q(n*t)+Q(Q(o*u)+Q(r*v))));g=Q(Q(g*s)+Q(Q(l*t)+Q(Q(i*u)+Q(m*v))));d=Q(Q(d*s)+Q(Q(f*t)+Q(Q(k*u)+Q(e*v))));break d}Jp(c+16|0,a,c+80|0);N[b+32>>2]=N[c+16>>2];N[b+36>>2]=N[c+20>>2];N[b+40>>2]=N[c+24>>2];N[b+44>>2]=N[c+28>>2];N[b+48>>2]=N[c+32>>2];N[b+52>>2]=N[c+36>>2];N[b+56>>2]=N[c+40>>2];N[b+60>>2]=N[c+44>>2];N[b+64>>2]=N[c+48>>2];N[b+68>>2]=N[c+52>>2];N[b+72>>2]=N[c+56>>2];N[b+76>>2]=N[c+60>>2];p=N[c+76>>2];j=N[c+72>>2];g=N[c+68>>2];d=N[c+64>>2]}N[b+92>>2]=p;N[b+88>>2]=j;N[b+84>>2]=g;N[b+80>>2]=d}q=q+1|0;if((R|0)!=(q|0)){continue}break b}break}Z(145396,53895,487,84789);B()}b=J[h+4>>2];a=J[h+8>>2]}J[76292]=J[76292]+(a-b>>2);b=J[h+8>>2]-J[h+4>>2]>>2;J[c>>2]=b;J[c+4>>2]=0;J[c+8>>2]=b;J[c+12>>2]=0;Ps(J[h+40>>2]);a=J[h+40>>2];if(a){I[a+20>>1]=0}J[h+64>>2]=0;Ui=c+144|0;return 0}function cA(a,b,c){var d=0,e=0,f=0,g=0,h=0,i=0,j=0,k=0,l=0,m=0,n=0,o=0,p=0,q=0,r=0,s=0,t=0,u=0;l=Ui-16|0;Ui=l;e=Qk(a,b,l+12|0,48);a:{if(e){o=e-15104|0;break a}o=-15206;if((J[a>>2]+J[l+12>>2]|0)!=(b|0)){break a}e=Qk(a,b,l+12|0,2);if(e){o=e-15104|0;break a}o=-15104;if(wH(c,J[a>>2],J[l+12>>2],0,0)){break a}J[a>>2]=J[a>>2]+J[l+12>>2];e=Qk(a,b,l+12|0,2);if(e){o=e-15104|0;break a}if(wH(c,0,0,J[a>>2],J[l+12>>2])){break a}J[a>>2]=J[a>>2]+J[l+12>>2];h=c+8|0;g=Pj(h,0);e=-16512;i=c+44|0;j=Pj(i,0);f=(j|0)!=0;m=c+56|0;n=Pj(m,0);r=(n|0)!=0;p=f&r;f=r|(f|!g);r=!f;k=c+32|0;d=Pj(k,0);s=d?p|r:p;t=(d|0)!=0;u=!((s|(f|t)^-1)&1);f=c+20|0;q=Pj(f,0);b:{if(u|!q){d=e}else{if(!(!n|(!j|g))){e=Ak(h,i,m);if(e){d=e-16512|0;break b}J[c+4>>2]=Um(h)}c:{q=(q|0)!=0;if(q&(r&t)){g=Ui-32|0;Ui=g;d=-4;d:{if(!i|!m|(J[i+8>>2]|J[m+8>>2])){break d}if((Pj(h,0)|0)<=0){break d}if((Pj(k,1)|0)<=0){break d}if((_j(k,h)|0)>=0){break d}if((Pj(f,1)|0)<=0){break d}if((_j(f,h)|0)>=0){break d}J[g+16>>2]=0;J[g+8>>2]=1;J[g+12>>2]=0;e=g+20|0;J[e+8>>2]=0;J[e>>2]=1;J[e+4>>2]=0;d=Ak(e,k,f);e:{if(d){break e}d=km(e,e,1);if(d){break e}p=Yt(e);e=p&65535;if(!e){d=-4;break e}d=yk(g+20|0,e);if(d){break e}e=g+8|0;j=(J[J[h+8>>2]>>2]&7)==1;kl(e,K[j+174640|0]);d=Xm(i,e,h);if(d){break e}while(1){f:{if(!Pj(i,1)){e=1;d=g+8|0;d=To(d,d,g+20|0,h,m);if(d){break e}while(1){n=g+8|0;if(Pj(n,1)){f=Ui-16|0;Ui=f;J[f+8>>2]=1;J[f+4>>2]=1;J[f>>2]=1;J[f+12>>2]=f;d=Ql(n,n,f+4|0);Ui=f+16|0;if(d){break e}d=Xm(i,n,h);if(d){break e}g:{if((Pj(i,1)|0)!=1){break g}if((_j(i,h)|0)!=-1){break g}d=wA(m,0,h,i);break e}f=g+8|0;d=km(f,f,1);if(d){break e}d=Ak(f,f,f);if(d){break e}d=Bl(f,f,h);if(d){break e}e=e+1|0;if((e&65535)>>>0<=(p&65535)>>>0){continue}}break}if(Pj(g+8|0,1)){d=-4;break e}if((j&65535)>>>0<53){break f}d=-4;break e}if((j&65535)>>>0<=52){break f}d=-4;break e}e=g+8|0;j=j+1|0;kl(e,K[(j&65535)+174640|0]);d=Xm(i,e,h);if(!d){continue}break}}Dj(g+8|0);Dj(g+20|0)}Ui=g+32|0;if(!d){break c}d=d-16512|0;break b}if(!(q&(p&!d))){break c}g=Ui-32|0;Ui=g;d=-4;h:{if(!k){break h}if(Pj(k,0)){break h}if((Pj(i,1)|0)<=0){break h}if((Pj(m,1)|0)<=0){break h}if(!Pj(f,0)){break h}e=g+20|0;J[e+8>>2]=0;J[e>>2]=1;J[e+4>>2]=0;h=g+8|0;d=h;J[d+8>>2]=0;J[d>>2]=1;J[d+4>>2]=0;d=km(e,i,1);i:{if(d){break i}d=km(h,m,1);if(d){break i}d=Xm(k,e,h);if(d){break i}d=Ak(e,e,h);if(d){break i}d=wA(e,0,e,k);if(d){break i}d=Bp(k,f,e)}Dj(g+20|0);Dj(g+8|0)}Ui=g+32|0;if(!d){break c}d=d-16512|0;break b}j:{f=q&s;if(!f){break j}h=c+80|0;g=c+92|0;e=Ui-16|0;Ui=e;j=e+4|0;d=j;J[d+8>>2]=0;J[d>>2]=1;J[d+4>>2]=0;n=c+68|0;k:{if(n){d=km(d,i,1);if(d){break k}d=Bl(n,k,j);if(d){break k}}l:{if(h){j=e+4|0;d=km(j,m,1);if(d){break k}d=Bl(h,k,j);if(d|!g){break k}break l}if(g){break l}d=0;break k}d=Bp(g,m,i)}Dj(e+4|0);Ui=e+16|0;if(!d){break j}d=d-16512|0;break b}d=Zz(c,f)}}if(d){break a}if(rA(c)){break a}o=J[a>>2]!=(b|0)?-15206:0}Ui=l+16|0;return o}function cj(a){a=a|0;var b=0,c=0,d=0,e=0,f=0,g=0,h=0;a:{if(!a){break a}d=a-8|0;b=J[a-4>>2];a=b&-8;f=d+a|0;b:{if(b&1){break b}if(!(b&2)){break a}b=J[d>>2];d=d-b|0;if(d>>>0>2];if(b>>>0<=255){e=J[d+8>>2];if((e|0)!=(c|0)){break e}J[248702]=J[248702]&oxa(-2,b>>>3|0);break b}h=J[d+24>>2];if((c|0)!=(d|0)){b=J[d+8>>2];J[b+12>>2]=c;J[c+8>>2]=b;break c}e=J[d+20>>2];if(e){b=d+20|0}else{e=J[d+16>>2];if(!e){break d}b=d+16|0}while(1){g=b;c=e;b=c+20|0;e=J[c+20>>2];if(e){continue}b=c+16|0;e=J[c+16>>2];if(e){continue}break}J[g>>2]=0;break c}b=J[f+4>>2];if((b&3)!=3){break b}J[248704]=a;J[f+4>>2]=b&-2;J[d+4>>2]=a|1;J[f>>2]=a;return}J[e+12>>2]=c;J[c+8>>2]=e;break b}c=0}if(!h){break b}b=J[d+28>>2];e=(b<<2)+995112|0;f:{if(J[e>>2]==(d|0)){J[e>>2]=c;if(c){break f}J[248703]=J[248703]&oxa(-2,b);break b}J[h+(J[h+16>>2]==(d|0)?16:20)>>2]=c;if(!c){break b}}J[c+24>>2]=h;b=J[d+16>>2];if(b){J[c+16>>2]=b;J[b+24>>2]=c}b=J[d+20>>2];if(!b){break b}J[c+20>>2]=b;J[b+24>>2]=c}if(d>>>0>=f>>>0){break a}b=J[f+4>>2];if(!(b&1)){break a}g:{h:{i:{j:{if(!(b&2)){if((f|0)==J[248708]){J[248708]=d;a=J[248705]+a|0;J[248705]=a;J[d+4>>2]=a|1;if(J[248707]!=(d|0)){break a}J[248704]=0;J[248707]=0;return}if((f|0)==J[248707]){J[248707]=d;a=J[248704]+a|0;J[248704]=a;J[d+4>>2]=a|1;J[a+d>>2]=a;return}a=(b&-8)+a|0;c=J[f+12>>2];if(b>>>0<=255){e=J[f+8>>2];if((e|0)==(c|0)){J[248702]=J[248702]&oxa(-2,b>>>3|0);break h}J[e+12>>2]=c;J[c+8>>2]=e;break h}h=J[f+24>>2];if((c|0)!=(f|0)){b=J[f+8>>2];J[b+12>>2]=c;J[c+8>>2]=b;break i}e=J[f+20>>2];if(e){b=f+20|0}else{e=J[f+16>>2];if(!e){break j}b=f+16|0}while(1){g=b;c=e;b=c+20|0;e=J[c+20>>2];if(e){continue}b=c+16|0;e=J[c+16>>2];if(e){continue}break}J[g>>2]=0;break i}J[f+4>>2]=b&-2;J[d+4>>2]=a|1;J[a+d>>2]=a;break g}c=0}if(!h){break h}b=J[f+28>>2];e=(b<<2)+995112|0;k:{if((f|0)==J[e>>2]){J[e>>2]=c;if(c){break k}J[248703]=J[248703]&oxa(-2,b);break h}J[h+((f|0)==J[h+16>>2]?16:20)>>2]=c;if(!c){break h}}J[c+24>>2]=h;b=J[f+16>>2];if(b){J[c+16>>2]=b;J[b+24>>2]=c}b=J[f+20>>2];if(!b){break h}J[c+20>>2]=b;J[b+24>>2]=c}J[d+4>>2]=a|1;J[a+d>>2]=a;if(J[248707]!=(d|0)){break g}J[248704]=a;return}if(a>>>0<=255){b=(a&-8)+994848|0;e=J[248702];a=1<<(a>>>3);l:{if(!(e&a)){J[248702]=a|e;a=b;break l}a=J[b+8>>2]}J[b+8>>2]=d;J[a+12>>2]=d;J[d+12>>2]=b;J[d+8>>2]=a;return}c=31;if(a>>>0<=16777215){b=S(a>>>8|0);c=((a>>>38-b&1)-(b<<1)|0)+62|0}J[d+28>>2]=c;J[d+16>>2]=0;J[d+20>>2]=0;g=(c<<2)+995112|0;m:{n:{b=J[248703];e=1<>>1|0)|0:0);b=J[g>>2];while(1){e=b;if((J[b+4>>2]&-8)==(a|0)){break n}b=c>>>29|0;c=c<<1;g=((b&4)+e|0)+16|0;b=J[g>>2];if(b){continue}break}c=24;b=e}e=d;f=d;a=8;break m}b=J[e+8>>2];J[b+12>>2]=d;c=8;g=e+8|0;f=0;a=24}J[g>>2]=d;J[c+d>>2]=b;J[d+12>>2]=e;J[a+d>>2]=f;a=J[248710]-1|0;J[248710]=a?a:-1}}function du(a,b,c){var d=0,e=0,f=0,g=0,h=0,i=0,j=0,k=0,l=0;d=K[b+12|0]|K[b+13|0]<<8|(K[b+14|0]<<16|K[b+15|0]<<24);e=J[a+16>>2]^(d<<24|(d&65280)<<8|(d>>>8&65280|d>>>24));d=K[b+8|0]|K[b+9|0]<<8|(K[b+10|0]<<16|K[b+11|0]<<24);i=J[a+12>>2]^(d<<24|(d&65280)<<8|(d>>>8&65280|d>>>24));d=K[b+4|0]|K[b+5|0]<<8|(K[b+6|0]<<16|K[b+7|0]<<24);g=J[a+8>>2]^(d<<24|(d&65280)<<8|(d>>>8&65280|d>>>24));b=K[b|0]|K[b+1|0]<<8|(K[b+2|0]<<16|K[b+3|0]<<24);d=J[a+4>>2]^(b<<24|(b&65280)<<8|(b>>>8&65280|b>>>24));b=a+20|0;l=J[a>>2];if(l){while(1){k=e;a=J[b>>2]^d;e=K[(a>>>16&255)+181040|0]<<16|K[(a>>>24|0)+180784|0]<<24|K[(a>>>8&255)+181296|0]<<8|K[(a&255)+181552|0];a=J[b+4>>2]^g;a=K[(a>>>16&255)+181296|0]<<16|K[(a>>>24|0)+181040|0]<<24|K[(a>>>8&255)+181552|0]<<8|K[(a&255)+180784|0];e=e^oxa(a,8);f=oxa(e,16)^a;h=oxa(f,24)^e;e=k^h;a=e^J[b+12>>2];j=K[(a>>>16&255)+181296|0]<<16|K[(a>>>24|0)+181040|0]<<24|K[(a>>>8&255)+181552|0]<<8|K[(a&255)+180784|0];a=oxa(j,8);i=f^(oxa(h,24)^i);k=a;a=i^J[b+8>>2];a=k^(K[(a>>>16&255)+181040|0]<<16|K[(a>>>24|0)+180784|0]<<24|K[(a>>>8&255)+181296|0]<<8|K[(a&255)+181552|0]);f=oxa(a,16)^j;h=oxa(f,24)^a;g=h^g;a=g^J[b+20>>2];j=K[(a>>>16&255)+181296|0]<<16|K[(a>>>24|0)+181040|0]<<24|K[(a>>>8&255)+181552|0]<<8|K[(a&255)+180784|0];a=oxa(j,8);d=f^(oxa(h,24)^d);k=a;a=d^J[b+16>>2];a=k^(K[(a>>>16&255)+181040|0]<<16|K[(a>>>24|0)+180784|0]<<24|K[(a>>>8&255)+181296|0]<<8|K[(a&255)+181552|0]);f=oxa(a,16)^j;h=oxa(f,24)^a;e=h^e;a=e^J[b+28>>2];j=K[(a>>>16&255)+181296|0]<<16|K[(a>>>24|0)+181040|0]<<24|K[(a>>>8&255)+181552|0]<<8|K[(a&255)+180784|0];a=oxa(j,8);i=f^(oxa(h,24)^i);k=a;a=i^J[b+24>>2];a=k^(K[(a>>>16&255)+181040|0]<<16|K[(a>>>24|0)+180784|0]<<24|K[(a>>>8&255)+181296|0]<<8|K[(a&255)+181552|0]);f=oxa(a,16)^j;h=oxa(f,24)^a;g=h^g;a=g^J[b+36>>2];j=K[(a>>>16&255)+181296|0]<<16|K[(a>>>24|0)+181040|0]<<24|K[(a>>>8&255)+181552|0]<<8|K[(a&255)+180784|0];a=oxa(j,8);d=f^(oxa(h,24)^d);k=g;g=a;a=d^J[b+32>>2];a=g^(K[(a>>>16&255)+181040|0]<<16|K[(a>>>24|0)+180784|0]<<24|K[(a>>>8&255)+181296|0]<<8|K[(a&255)+181552|0]);g=oxa(a,16)^j;f=oxa(g,24)^a;e=f^e;a=e^J[b+44>>2];h=K[(a>>>16&255)+181296|0]<<16|K[(a>>>24|0)+181040|0]<<24|K[(a>>>8&255)+181552|0]<<8|K[(a&255)+180784|0];j=oxa(h,8);i=g^(oxa(f,24)^i);a=i^J[b+40>>2];a=j^(K[(a>>>16&255)+181040|0]<<16|K[(a>>>24|0)+180784|0]<<24|K[(a>>>8&255)+181296|0]<<8|K[(a&255)+181552|0]);f=oxa(a,16)^h;a=oxa(f,24)^a;g=k^a;d=f^(oxa(a,24)^d);l=l-1|0;if(l){i=(J[b+60>>2]|e)^i;e=oxa(i&J[b+56>>2],1)^e;g=oxa(J[b+48>>2]&d,1)^g;d=(g|J[b+52>>2])^d;b=b- -64|0;continue}else{b=b+48|0}break}}l=J[b>>2];f=J[b+4>>2];h=J[b+8>>2];a=J[b+12>>2]^g;H[c+15|0]=a;b=d^h;H[c+11|0]=b;d=e^f;H[c+7|0]=d;e=i^l;H[c+3|0]=e;H[c+14|0]=a>>>8;H[c+13|0]=a>>>16;H[c+12|0]=a>>>24;H[c+10|0]=b>>>8;H[c+9|0]=b>>>16;H[c+8|0]=b>>>24;H[c+6|0]=d>>>8;H[c+5|0]=d>>>16;H[c+4|0]=d>>>24;H[c+2|0]=e>>>8;H[c+1|0]=e>>>16;H[c|0]=e>>>24;return 0}function M2(a){a=a|0;var b=0,c=0,d=0,e=0,f=0,g=0,h=0,i=0,j=0;c=Ui-2688|0;Ui=c;g=J[a+8>>2]-J[a+12>>2]>>4;b=c+260|0;J[b>>2]=0;J[b+4>>2]=0;J[b+16>>2]=0;J[b+8>>2]=0;J[b+12>>2]=0;b=c+420|0;J[b>>2]=0;J[b+4>>2]=0;J[b+16>>2]=0;J[b+8>>2]=0;J[b+12>>2]=0;b=c+580|0;J[b>>2]=0;J[b+4>>2]=0;J[b+16>>2]=0;J[b+8>>2]=0;J[b+12>>2]=0;b=c+740|0;J[b>>2]=0;J[b+4>>2]=0;J[b+16>>2]=0;J[b+8>>2]=0;J[b+12>>2]=0;b=c+900|0;J[b>>2]=0;J[b+4>>2]=0;J[b+16>>2]=0;J[b+8>>2]=0;J[b+12>>2]=0;b=c+1060|0;J[b>>2]=0;J[b+4>>2]=0;J[b+16>>2]=0;J[b+8>>2]=0;J[b+12>>2]=0;b=c+1220|0;J[b>>2]=0;J[b+4>>2]=0;J[b+16>>2]=0;J[b+8>>2]=0;J[b+12>>2]=0;b=c+1380|0;J[b>>2]=0;J[b+4>>2]=0;J[b+16>>2]=0;J[b+8>>2]=0;J[b+12>>2]=0;b=c+1540|0;J[b>>2]=0;J[b+4>>2]=0;J[b+16>>2]=0;J[b+8>>2]=0;J[b+12>>2]=0;b=c+1700|0;J[b>>2]=0;J[b+4>>2]=0;J[b+16>>2]=0;J[b+8>>2]=0;J[b+12>>2]=0;b=c+1860|0;J[b>>2]=0;J[b+4>>2]=0;J[b+16>>2]=0;J[b+8>>2]=0;J[b+12>>2]=0;b=c+2020|0;J[b>>2]=0;J[b+4>>2]=0;J[b+16>>2]=0;J[b+8>>2]=0;J[b+12>>2]=0;b=c+2180|0;J[b>>2]=0;J[b+4>>2]=0;J[b+16>>2]=0;J[b+8>>2]=0;J[b+12>>2]=0;b=c+2340|0;J[b>>2]=0;J[b+4>>2]=0;J[b+16>>2]=0;J[b+8>>2]=0;J[b+12>>2]=0;b=c+2500|0;J[b>>2]=0;J[b+4>>2]=0;J[b+16>>2]=0;J[b+8>>2]=0;J[b+12>>2]=0;b=c+2660|0;J[b>>2]=0;J[b+4>>2]=0;J[b+16>>2]=0;J[b+8>>2]=0;J[b+12>>2]=0;J[c+124>>2]=0;J[c+124>>2]=0;Fj(a,J[c+124>>2],0);if(J[c+124>>2]){while(1){Fj(a,0,0);e=(c+128|0)+P(f,160)|0;xj(a,e);ej(a,-2,66013);a:{if(K[e+128|0]&4){J[c+40>>2]=J[e+148>>2];b=J[e+144>>2];J[c+32>>2]=J[e+140>>2];J[c+36>>2]=b;b=J[e+136>>2];J[c+24>>2]=J[e+132>>2];J[c+28>>2]=b;b=Ui-48|0;Ui=b;b:{c:{d:{e:{d=c+24|0;switch(J[d>>2]-1|0){case 1:break d;case 0:break e;default:break c}}J[b+8>>2]=0;J[b+12>>2]=0;J[b>>2]=0;J[b+4>>2]=0;WI(2,zu(d),b,16);d=Gk(b);break b}I[b+38>>1]=0;I[b+40>>1]=0;I[b+42>>1]=0;I[b+44>>1]=0;J[b+32>>2]=0;J[b+36>>2]=0;J[b+24>>2]=0;J[b+28>>2]=0;J[b+16>>2]=0;J[b+20>>2]=0;J[b+8>>2]=0;J[b+12>>2]=0;J[b>>2]=0;J[b+4>>2]=0;WI(10,yu(d),b,46);d=Gk(b);break b}dj(4,99340,152824,0);d=0}Ui=b+48|0;if(d){xj(a,d);cj(d);break a}b=J[a+8>>2];J[b+8>>2]=0;J[a+8>>2]=b+16;cj(d);break a}b=J[a+8>>2];J[b+8>>2]=0;J[a+8>>2]=b+16}ej(a,-2,18814);f:{g:{switch(J[e+132>>2]-1|0){case 0:mj(a,106920,4);break f;case 1:mj(a,103501,4);break f;default:break g}}b=J[a+8>>2];J[b+8>>2]=0;J[a+8>>2]=b+16}ej(a,-2,3522);h:{if(K[e+128|0]&8){b=K[e+152|0];d=K[e+153|0];h=K[e+154|0];i=K[e+155|0];j=K[e+156|0];J[c+20>>2]=K[e+157|0];J[c+16>>2]=j;J[c+12>>2]=i;J[c+8>>2]=h;J[c+4>>2]=d;J[c>>2]=b;b=c+48|0;Gj(b,64,6199,c);xj(a,b);break h}b=J[a+8>>2];J[b+8>>2]=0;J[a+8>>2]=b+16}ej(a,-2,82521);b=J[e+128>>2]&1;d=J[a+8>>2];J[d+8>>2]=1;J[d>>2]=b;J[a+8>>2]=J[a+8>>2]+16;ej(a,-2,36499);b=J[e+128>>2]>>>1&1;d=J[a+8>>2];J[d+8>>2]=1;J[d>>2]=b;J[a+8>>2]=J[a+8>>2]+16;ej(a,-2,56735);f=f+1|0;Ik(a,-2,f);if(M[c+124>>2]>f>>>0){continue}break}}if((g+1|0)!=J[a+8>>2]-J[a+12>>2]>>4){Z(143334,39097,1030,19727);B()}Ui=c+2688|0;return 1}function wna(a,b,c,d,e){a=a|0;b=b|0;c=c|0;d=d|0;e=e|0;var f=0,g=0,h=0,i=0,j=0;j=Ui-32|0;Ui=j;a:{b:{c:{d:{e:{f:{g:{h:{i:{j:{k:{l:{f=J[b+44>>2];i=J[f+64>>2];if(!i){break l}h=J[f+60>>2];b=0;while(1){if((b|0)==(i|0)){break j}g=h+(b<<5)|0;if(J[g+8>>2]!=(c|0)|J[g+12>>2]!=(d|0)){b=b+1|0;if((i|0)==(b|0)){break l}continue}break}b=0;J[e>>2]=0;a=J[g+16>>2];if(a>>>0>=M[f+120>>2]){break a}O[e+8>>3]=N[J[f+116>>2]+(a<<2)>>2];break k}m:{i=J[f+72>>2];if(!i){break m}h=J[f+68>>2];b=0;while(1){if((b|0)==(i|0)){break i}g=h+(b<<5)|0;if(J[g+8>>2]!=(c|0)|J[g+12>>2]!=(d|0)){b=b+1|0;if((i|0)==(b|0)){break m}continue}break}J[e>>2]=1;a=J[g+16>>2];if(a>>>0>=M[f+128>>2]){break h}b=J[f+124>>2]+(a<<3)|0;a=J[b+4>>2];J[e+8>>2]=J[b>>2];J[e+12>>2]=a;b=0;break k}n:{i=J[f+80>>2];if(!i){break n}h=J[f+76>>2];b=0;while(1){if((b|0)==(i|0)){break g}g=h+(b<<5)|0;if(J[g+8>>2]!=(c|0)|J[g+12>>2]!=(d|0)){b=b+1|0;if((i|0)==(b|0)){break n}continue}break}J[e>>2]=2;J[j+24>>2]=0;J[j+28>>2]=0;J[j+16>>2]=0;J[j+20>>2]=0;J[j+8>>2]=0;J[j+12>>2]=0;J[j>>2]=0;J[j+4>>2]=0;b=J[a+40>>2];Zi[J[a+44>>2]](b,j);a=J[g+16>>2];if(a>>>0>=M[f+136>>2]){break f}b=AB(b,J[J[f+132>>2]+(a<<2)>>2],e+8|0,j)?-2:0;break k}o:{h=J[f+88>>2];if(!h){break o}g=J[f+84>>2];b=0;while(1){if((b|0)==(h|0)){break e}a=g+(b<<5)|0;if(J[a+8>>2]!=(c|0)|J[a+12>>2]!=(d|0)){b=b+1|0;if((h|0)==(b|0)){break o}continue}break}J[e>>2]=3;a=J[a+16>>2];if(a>>>0>=M[f+120>>2]){break a}a=J[f+116>>2]+(a<<2)|0;N[e+8>>2]=N[a>>2];N[e+12>>2]=N[a+4>>2];N[e+16>>2]=N[a+8>>2];b=0;break k}p:{h=J[f+96>>2];if(!h){break p}g=J[f+92>>2];b=0;while(1){if((b|0)==(h|0)){break d}a=g+(b<<5)|0;if(J[a+8>>2]!=(c|0)|J[a+12>>2]!=(d|0)){b=b+1|0;if((h|0)==(b|0)){break p}continue}break}J[e>>2]=4;a=J[a+16>>2];if(a>>>0>=M[f+120>>2]){break a}a=J[f+116>>2]+(a<<2)|0;N[e+8>>2]=N[a>>2];N[e+12>>2]=N[a+4>>2];N[e+16>>2]=N[a+8>>2];N[e+20>>2]=N[a+12>>2];b=0;break k}q:{h=J[f+104>>2];if(!h){break q}g=J[f+100>>2];b=0;while(1){if((b|0)==(h|0)){break c}a=g+(b<<5)|0;if(J[a+8>>2]!=(c|0)|J[a+12>>2]!=(d|0)){b=b+1|0;if((h|0)==(b|0)){break q}continue}break}J[e>>2]=5;a=J[a+16>>2];if(a>>>0>=M[f+120>>2]){break a}a=J[f+116>>2]+(a<<2)|0;N[e+8>>2]=N[a>>2];N[e+12>>2]=N[a+4>>2];N[e+16>>2]=N[a+8>>2];N[e+20>>2]=N[a+12>>2];b=0;break k}a=1;i=J[f+112>>2];r:{if(!i){break r}h=J[f+108>>2];a=0;b=0;while(1){if((b|0)==(i|0)){break b}g=h+(b<<5)|0;if(J[g+8>>2]!=(c|0)|J[g+12>>2]!=(d|0)){b=b+1|0;a=i>>>0<=b>>>0;if((b|0)==(i|0)){break r}continue}break}J[e>>2]=6;b=J[g+16>>2];if(b>>>0>=M[f+120>>2]){break a}H[e+8|0]=N[J[f+116>>2]+(b<<2)>>2]!=Q(0)}b=0-a|0}Ui=j+32|0;return b|0}Z(12664,54938,53,84789);B()}Z(12664,54938,61,84789);B()}Z(12664,54938,117,84789);B()}Z(12664,54938,69,84789);B()}Z(12664,54938,125,84789);B()}Z(12664,54938,77,84789);B()}Z(12664,54938,85,84789);B()}Z(12664,54938,93,84789);B()}Z(12664,54938,101,84789);B()}Z(12664,54938,109,84789);B()}function Jua(a,b){a=a|0;b=b|0;var c=0,d=Q(0),e=Q(0),f=Q(0),g=0,h=Q(0),i=Q(0),j=Q(0),k=0,l=Q(0),m=Q(0),n=Q(0),o=Q(0),p=Q(0),q=Q(0),r=0,s=Q(0),t=Q(0),u=Q(0),v=Q(0),w=Q(0),x=Q(0),y=Q(0),z=Q(0),A=0,B=0,C=Q(0),D=0;g=Ui-48|0;Ui=g;k=J[a+48>>2];A=J[k+8>>2];J[a+116>>2]=A;c=J[a+52>>2];B=J[c+8>>2];J[a+120>>2]=B;l=N[k+32>>2];D=J[k+32>>2];d=N[k+28>>2];r=J[k+28>>2];J[a+140>>2]=r;J[a+144>>2]=D;q=N[c+32>>2];r=J[c+32>>2];i=N[c+28>>2];J[a+148>>2]=J[c+28>>2];J[a+152>>2]=r;s=N[k+120>>2];N[a+156>>2]=s;t=N[c+120>>2];N[a+160>>2]=t;o=N[k+128>>2];N[a+164>>2]=o;p=N[c+128>>2];N[a+168>>2]=p;j=N[a+84>>2];r=J[b+24>>2];c=P(A,12);n=N[(r+c|0)+8>>2];f=Hj(n);h=N[a+80>>2];e=Rj(n);k=J[b+28>>2];c=k+c|0;u=N[c>>2];v=N[c+4>>2];w=N[c+8>>2];c=k;k=P(B,12);c=c+k|0;x=N[c>>2];y=N[c+4>>2];z=N[c+8>>2];m=N[(k+r|0)+8>>2];h=Q(h-d);j=Q(j-l);d=Q(Q(e*h)-Q(f*j));N[a+124>>2]=d;j=Q(Q(f*h)+Q(e*j));N[a+128>>2]=j;f=N[a+92>>2];e=Hj(m);h=N[a+88>>2];l=Rj(m);i=Q(h-i);h=Q(f-q);f=Q(Q(l*i)-Q(e*h));N[a+132>>2]=f;e=Q(Q(e*i)+Q(l*h));N[a+136>>2]=e;h=Q(-j);l=Q(Q(o*h)-Q(e*p));N[g+36>>2]=l;q=Q(Q(d*o)+Q(p*f));N[g+40>>2]=q;i=Q(o+p);N[g+44>>2]=i;N[g+32>>2]=q;N[g+20>>2]=l;h=Q(Q(o*Q(d*h))-Q(p*Q(e*f)));N[g+24>>2]=h;l=Q(p*Q(e*e));e=Q(s+t);N[g+12>>2]=l+Q(Q(o*Q(j*j))+e);N[g+28>>2]=Q(p*Q(f*f))+Q(Q(o*Q(d*d))+e);N[g+16>>2]=h;c=a+172|0;j=Q(0);a:{if(N[a+68>>2]>Q(0)){d=N[g+28>>2];f=N[g+12>>2];e=N[g+16>>2];j=N[g+24>>2];J[c+8>>2]=0;J[c+20>>2]=0;J[c+24>>2]=0;J[c+28>>2]=0;J[c+32>>2]=0;h=d;d=Q(Q(f*d)-Q(j*e));d=d!=Q(0)?Q(Q(1)/d):d;N[c>>2]=h*d;N[c+16>>2]=f*d;d=Q(-d);N[c+12>>2]=j*d;N[c+4>>2]=e*d;h=i;d=N[b>>2];f=Q(N[a+68>>2]*Q(6.2831854820251465));e=i>Q(0)?Q(Q(1)/i):Q(0);i=Q(f*Q(f*e));f=Q(d*Q(Q(d*i)+Q(f*Q(Q(e+e)*N[a+72>>2]))));j=f!=Q(0)?Q(Q(1)/f):Q(0);f=Q(h+j);N[a+204>>2]=f!=Q(0)?Q(Q(1)/f):Q(0);d=Q(Q(Q(d*Q(Q(m-n)-N[a+96>>2]))*i)*j);break a}m=N[g+24>>2];f=N[g+40>>2];e=N[g+36>>2];n=N[g+28>>2];l=Q(Q(m*f)-Q(e*n));i=N[g+12>>2];h=N[g+44>>2];q=Q(n*h);d=N[g+32>>2];C=Q(m*Q(-h));d=Q(Q(N[g+20>>2]*l)+Q(Q(i*Q(q-Q(d*f)))+Q(N[g+16>>2]*Q(Q(d*e)+C))));d=d!=Q(0)?Q(Q(1)/d):d;N[c+32>>2]=Q(Q(i*n)-Q(m*m))*d;m=Q(d*Q(Q(e*m)-Q(i*f)));N[c+28>>2]=m;n=Q(l*d);N[c+24>>2]=n;N[c+20>>2]=m;N[c+16>>2]=d*Q(Q(i*h)-Q(e*e));e=Q(d*Q(Q(e*f)+C));N[c+12>>2]=e;N[c+8>>2]=n;N[c+4>>2]=e;N[c>>2]=d*Q(q-Q(f*f));d=Q(0)}N[a+76>>2]=d;N[a+100>>2]=j;b:{if(K[b+20|0]==1){e=N[b+8>>2];d=Q(e*N[a+104>>2]);N[a+104>>2]=d;f=Q(e*N[a+108>>2]);N[a+108>>2]=f;e=Q(e*N[a+112>>2]);N[a+112>>2]=e;z=Q(Q(p*Q(e+Q(Q(N[a+132>>2]*f)-Q(N[a+136>>2]*d))))+z);w=Q(w-Q(o*Q(e+Q(Q(N[a+124>>2]*f)-Q(N[a+128>>2]*d)))));y=Q(y+Q(t*f));x=Q(x+Q(t*d));v=Q(v-Q(s*f));u=Q(u-Q(s*d));break b}J[a+112>>2]=0;J[a+104>>2]=0;J[a+108>>2]=0}c=J[b+28>>2]+P(J[a+116>>2],12)|0;N[c+4>>2]=v;N[c>>2]=u;c=J[b+28>>2];N[(c+P(J[a+116>>2],12)|0)+8>>2]=w;c=c+P(J[a+120>>2],12)|0;N[c+4>>2]=y;N[c>>2]=x;N[(J[b+28>>2]+P(J[a+120>>2],12)|0)+8>>2]=z;Ui=g+48|0}function hqa(a,b,c){a=a|0;b=b|0;c=c|0;var d=0,e=0,f=0,g=0,h=0,i=0,j=0,k=0,l=0,m=0,n=0;c=J[b+8>>2];a:{if((c|0)<=0){break a}h=J[b+16>>2];if((c|0)!=1){g=c&2147483646;while(1){k=h+(e<<2)|0;d=J[k>>2];if(!(K[d+204|0]&3)){J[d+208>>2]=f;f=f+1|0}J[d+240>>2]=1065353216;J[d+212>>2]=-1;d=J[k+4>>2];if(!(K[d+204|0]&3)){J[d+208>>2]=f;f=f+1|0}J[d+240>>2]=1065353216;J[d+212>>2]=-1;e=e+2|0;i=i+2|0;if((g|0)!=(i|0)){continue}break}}if(!(c&1)){break a}c=J[h+(e<<2)>>2];if(!(K[c+204|0]&3)){J[c+208>>2]=f;f=f+1|0}J[c+240>>2]=1065353216;J[c+212>>2]=-1}e=0;h=0;k=0;i=0;c=J[a+8>>2];b:{if((c|0)>=(f|0)){break b}if(J[a+12>>2]<(f|0)){if(f){h=Yj(f<<3);d=J[a+8>>2]}else{d=c}c:{if((d|0)<=0){break c}if(d>>>0>=4){n=d&2147483644;while(1){g=e<<3;j=g+h|0;l=g+J[a+16>>2]|0;m=J[l+4>>2];J[j>>2]=J[l>>2];J[j+4>>2]=m;j=g|8;l=j+h|0;j=j+J[a+16>>2]|0;m=J[j+4>>2];J[l>>2]=J[j>>2];J[l+4>>2]=m;j=g|16;l=j+h|0;j=j+J[a+16>>2]|0;m=J[j+4>>2];J[l>>2]=J[j>>2];J[l+4>>2]=m;g=g|24;j=g+h|0;g=g+J[a+16>>2]|0;l=J[g+4>>2];J[j>>2]=J[g>>2];J[j+4>>2]=l;e=e+4|0;i=i+4|0;if((n|0)!=(i|0)){continue}break}}d=d&3;if(!d){break c}while(1){i=e<<3;g=i+h|0;i=i+J[a+16>>2]|0;n=J[i+4>>2];J[g>>2]=J[i>>2];J[g+4>>2]=n;e=e+1|0;k=k+1|0;if((d|0)!=(k|0)){continue}break}}d=J[a+16>>2];if(!(d?!d|K[a+20|0]!=1:1)){J[83765]=J[83765]+1;Zi[J[61751]](J[d-4>>2])}J[a+16>>2]=h;H[a+20|0]=1;J[a+12>>2]=f}e=c;d=f-c&3;if(d){h=0;while(1){i=J[a+16>>2]+(e<<3)|0;J[i>>2]=0;J[i+4>>2]=0;e=e+1|0;h=h+1|0;if((d|0)!=(h|0)){continue}break}}if(c-f>>>0>4294967292){break b}while(1){c=e<<3;d=c+J[a+16>>2]|0;J[d>>2]=0;J[d+4>>2]=0;d=c+J[a+16>>2]|0;J[d+8>>2]=0;J[d+12>>2]=0;d=c+J[a+16>>2]|0;J[d+16>>2]=0;J[d+20>>2]=0;c=c+J[a+16>>2]|0;J[c+24>>2]=0;J[c+28>>2]=0;e=e+4|0;if((f|0)!=(e|0)){continue}break}}J[a+8>>2]=f;d:{if((f|0)<=0){break d}e=J[a+16>>2];h=0;c=0;if(f>>>0>=4){i=f&2147483644;d=0;while(1){g=e+(c<<3)|0;J[g+4>>2]=1;J[g>>2]=c;g=c|1;k=e+(g<<3)|0;J[k+4>>2]=1;J[k>>2]=g;g=c|2;k=e+(g<<3)|0;J[k+4>>2]=1;J[k>>2]=g;g=c|3;k=e+(g<<3)|0;J[k+4>>2]=1;J[k>>2]=g;c=c+4|0;d=d+4|0;if((i|0)!=(d|0)){continue}break}}d=f&3;if(!d){break d}while(1){f=e+(c<<3)|0;J[f+4>>2]=1;J[f>>2]=c;c=c+1|0;h=h+1|0;if((d|0)!=(h|0)){continue}break}}d=0;b=J[b+76>>2];b=Zi[J[J[b>>2]+36>>2]](b)|0;h=Zi[J[J[b>>2]+36>>2]](b)|0;i=Zi[J[J[b>>2]+20>>2]](b)|0;if((h|0)>0){a=J[a+16>>2];while(1){b=i+(d<<4)|0;c=J[J[b>>2]>>2];e:{if(!c|K[c+204|0]&7){break e}b=J[J[b+4>>2]>>2];if(!b|K[b+204|0]&7){break e}b=J[b+208>>2];c=J[c+208>>2];e=a+(c<<3)|0;f=J[e>>2];if((c|0)!=(f|0)){while(1){c=J[a+(f<<3)>>2];J[e>>2]=c;e=a+(c<<3)|0;f=J[e>>2];if((f|0)!=(c|0)){continue}break}}e=a+(b<<3)|0;f=J[e>>2];if((f|0)!=(b|0)){while(1){b=J[a+(f<<3)>>2];J[e>>2]=b;e=a+(b<<3)|0;f=J[e>>2];if((f|0)!=(b|0)){continue}break}}if((b|0)==(c|0)){break e}c=a+(c<<3)|0;J[c>>2]=b;b=a+(b<<3)|0;J[b+4>>2]=J[b+4>>2]+J[c+4>>2]}d=d+1|0;if((h|0)!=(d|0)){continue}break}}}function XD(a,b,c,d,e,f,g,h,i,j,k,l,m,n,o,p){var q=0,r=0,s=0,t=0,u=0,v=0,w=0,x=0,y=0,z=0,A=0;r=Ui-48|0;Ui=r;s=J[a+4>>2];A=J[a>>2];t=s-A|0;u=(t|0)/104|0;a:{b:{c:{d:{e:{f:{g:{h:{if((t|0)==676e4){J[r>>2]=65e3;dj(4,88293,132739,r);g=0;break h}v=J[a+32>>2];if(!v){break g}q=L[a+38>>1];if(q>>>0>=L[a+36>>1]){break f}z=a+4|0;I[a+38>>1]=q+1;v=L[v+(q<<1)>>1];I[r+46>>1]=v;w=a+44|0;i:{j:{q=J[a+48>>2];k:{if(!q){break k}q=J[J[w>>2]+((b>>>0)%(q>>>0)<<2)>>2];if((q|0)==-1){break k}y=J[a+52>>2];while(1){q=y+P(q,12)|0;if(J[q>>2]==(b|0)){break j}q=J[q+8>>2];if((q|0)!=-1){continue}break}}q=J[a+68>>2];if((q|0)==((J[a+60>>2]-J[a+52>>2]|0)/12|0)){J[r+16>>2]=q;dj(4,88293,132865,r+16|0);b=J[a+32>>2];if(!b){break e}c=L[a+38>>1]-1|0;d=c&65535;if(d>>>0>=L[a+36>>1]){break d}I[a+38>>1]=c;I[b+(d<<1)>>1]=v;g=0;break h}MC(w,b,r+46|0);s=J[z>>2];break i}w=J[a+16>>2];y=J[a+20>>2]-w>>1;q=L[q+4>>1];if(y>>>0<=q>>>0){break a}q=L[w+(q<<1)>>1];if(u>>>0<=q>>>0){break a}l:{while(1){x=P(q,104)+A|0;q=L[x+94>>1];if((q|0)==65535){break l}if(q>>>0>=y>>>0){break a}q=L[w+(q<<1)>>1];if(u>>>0>q>>>0){continue}break}break a}I[x+94>>1]=v}q=J[a+8>>2];if((s|0)==(q|0)){if(H[a+12|0]&1){break c}q=(s-J[a>>2]|0)/104|0;s=(q>>>1|0)+2048>>>1|0;q=(s>>>0>=2048?2048:s)+q|0;lj(q>>>0>=65e3?65e3:q,104,a,a+8|0,z);x=J[a+8>>2]}else{x=q}q=J[a>>2];s=u+1|0;if((x-q|0)/104>>>0>>0){break b}J[z>>2]=q+P(s,104);if(t>>>0>=4294967192){break a}q=ij(q+t|0,0,104);t=L[r+46>>1];s=J[a+16>>2];if(t>>>0>=J[a+20>>2]-s>>1>>>0){break a}I[s+(t<<1)>>1]=u;u=L[r+46>>1];J[q+24>>2]=g;J[q+16>>2]=e;J[q+20>>2]=f;J[q+8>>2]=c;J[q+12>>2]=d;J[q>>2]=b;I[q+92>>1]=u;b=J[k+4>>2];J[q+28>>2]=J[k>>2];J[q+32>>2]=b;b=J[k+12>>2];J[q+36>>2]=J[k+8>>2];J[q+40>>2]=b;J[q+44>>2]=J[k+16>>2];I[q+94>>1]=65535;J[q+88>>2]=-1;J[q+84>>2]=0;J[q+80>>2]=o;J[q+76>>2]=n;b=l>Q(0);N[q+72>>2]=b?Q(Q(1)/l):Q(0);N[q+68>>2]=b?l:Q(0);N[q+60>>2]=m>Q(0)?m:Q(0);N[q+56>>2]=j;N[q+52>>2]=i;J[q+48>>2]=h;c=K[q+96|0]&-6|(p?4:0);b=c|1;m:{switch(g-2|0){case 0:case 3:b=c|9;break;default:break m}}H[q+96|0]=b|16;g=1;if(!n){break h}c=a+76|0;n:{o:{b=J[a+80>>2];p:{if(!b){break p}b=J[J[c>>2]+((o>>>0)%(b>>>0)<<2)>>2];if((b|0)==-1){break p}d=J[a+84>>2];while(1){b=d+P(b,12)|0;if(J[b>>2]==(o|0)){break o}b=J[b+8>>2];if((b|0)!=-1){continue}break}}b=(J[a+92>>2]-J[a+84>>2]|0)/12|0;a=J[a+100>>2];if((b|0)!=(a|0)){break n}J[r+32>>2]=a;dj(4,88293,132669,r+32|0);g=0;break h}b=L[b+4>>1];d=J[a+16>>2];if(b>>>0>=J[a+20>>2]-d>>1>>>0){break a}b=L[d+(b<<1)>>1];d=J[a+4>>2];a=J[a>>2];if(b>>>0>=(d-a|0)/104>>>0){break a}a=a+P(b,104)|0;I[q+90>>1]=L[a+92>>1];I[a+88>>1]=L[r+46>>1]}MC(c,o,r+46|0)}Ui=r+48|0;return g}Z(49493,54340,151,43112);B()}Z(2701,54340,152,43112);B()}Z(49493,54340,140,53220);B()}Z(2650,54340,141,53220);B()}Z(151729,53895,501,2284);B()}Z(144782,53895,514,59583);B()}Z(145396,53895,487,84789);B()}function Vt(a,b,c,d,e){var f=0,g=0,h=0,i=0,j=0,k=0,l=0,m=0;g=Ui-128|0;Ui=g;f=-16512;if(!Zz(a,1)){J[g+124>>2]=0;J[g+116>>2]=1;J[g+120>>2]=0;J[g+112>>2]=0;J[g+104>>2]=1;J[g+108>>2]=0;J[g+100>>2]=0;J[g+92>>2]=1;J[g+96>>2]=0;J[g+88>>2]=0;J[g+80>>2]=1;J[g+84>>2]=0;if(b){J[g+52>>2]=0;J[g+44>>2]=1;J[g+48>>2]=0;J[g+40>>2]=0;J[g+32>>2]=1;J[g+36>>2]=0}J[g+76>>2]=0;J[g+68>>2]=1;J[g+72>>2]=0;J[g+64>>2]=0;J[g+56>>2]=1;J[g+60>>2]=0;J[g+28>>2]=0;J[g+20>>2]=1;J[g+24>>2]=0;J[g+16>>2]=0;J[g+8>>2]=1;J[g+12>>2]=0;j=g+116|0;f=Vm(j,d,J[a+4>>2]);a:{if(f){break a}m=a+8|0;if((_j(j,m)|0)>=0){f=-4;break a}k=g+116|0;f=sk(g+20|0,k);if(f){break a}d=a+80|0;l=a+68|0;if(b){i=a+152|0;b:{if(!J[a+160>>2]){f=Fk(i,J[a+4>>2]-1|0,b,c);if(f){break b}h=a+140|0;j=a+8|0;f=Xm(h,i,j);if(f){break b}c:{if(!Pj(h,1)){break c}f=Fk(i,J[a+4>>2]-1|0,b,c);if(f){break b}f=Xm(h,i,j);if(f){break b}if(!Pj(h,1)){break c}f=Fk(i,J[a+4>>2]-1|0,b,c);if(f){break b}f=Xm(h,i,j);if(f){break b}if(!Pj(h,1)){break c}f=Fk(i,J[a+4>>2]-1|0,b,c);if(f){break b}f=Xm(h,i,j);if(f){break b}if(!Pj(h,1)){break c}f=Fk(i,J[a+4>>2]-1|0,b,c);if(f){break b}f=Xm(h,i,j);if(f){break b}if(!Pj(h,1)){break c}f=Fk(i,J[a+4>>2]-1|0,b,c);if(f){break b}f=Xm(h,i,j);if(f){break b}if(!Pj(h,1)){break c}f=Fk(i,J[a+4>>2]-1|0,b,c);if(f){break b}f=Xm(h,i,j);if(f){break b}if(!Pj(h,1)){break c}f=Fk(i,J[a+4>>2]-1|0,b,c);if(f){break b}f=Xm(h,i,j);if(f){break b}if(!Pj(h,1)){break c}f=Fk(i,J[a+4>>2]-1|0,b,c);if(f){break b}f=Xm(h,i,j);if(f){break b}if(!Pj(h,1)){break c}f=Fk(i,J[a+4>>2]-1|0,b,c);if(f){break b}f=Xm(h,i,j);if(f){break b}if(!Pj(h,1)){break c}f=Fk(i,J[a+4>>2]-1|0,b,c);if(f){break b}f=Xm(h,i,j);if(f){break b}f=-17536;if(Pj(h,1)){break b}}f=Bp(h,i,j);if(f){break b}f=To(h,h,a+20|0,j,a+104|0);break b}j=a+140|0;f=Ak(j,j,j);if(f){break b}f=j;j=a+8|0;f=Bl(f,f,j);if(f){break b}f=Ak(i,i,i);if(f){break b}f=Bl(i,i,j)}if(f){break a}f=Ak(k,k,a+140|0);if(f){break a}f=Bl(k,k,m);if(f){break a}h=g+104|0;f=km(h,a+44|0,1);if(f){break a}k=g+92|0;f=km(k,a+56|0,1);if(f){break a}i=g+80|0;f=Fk(i,28,b,c);if(f){break a}j=g+44|0;f=Ak(j,h,i);if(f){break a}f=Ql(j,j,l);if(f){break a}f=Fk(i,28,b,c);if(f){break a}c=g+32|0;f=Ak(c,k,i);if(f){break a}f=Ql(c,c,d);if(f){break a}l=j;d=c}k=g+68|0;h=g+116|0;j=a+44|0;f=To(k,h,l,j,a+116|0);if(f){break a}l=g+56|0;c=a+56|0;f=To(l,h,d,c,a+128|0);if(f){break a}f=wl(h,k,l);if(f){break a}f=Ak(k,h,a+92|0);if(f){break a}f=Bl(h,k,j);if(f){break a}f=Ak(k,h,c);if(f){break a}f=Ql(h,l,k);if(f){break a}if(b){f=Ak(h,h,a+152|0);if(f){break a}f=Bl(h,h,m);if(f){break a}}c=g+8|0;f=To(c,g+116|0,a+20|0,m,a+104|0);if(f){break a}if(_j(c,g+20|0)){f=-17280;break a}f=no(g+116|0,e,J[a+4>>2])}Dj(g+104|0);Dj(g+92|0);Dj(g+80|0);if(b){Dj(g+44|0);Dj(g+32|0)}Dj(g+116|0);Dj(g+68|0);Dj(g+56|0);Dj(g+8|0);Dj(g+20|0);f=f?f-17152|0:0}Ui=g+128|0;return f}function CR(a,b,c,d,e,f,g,h){var i=0,j=0,k=0,l=0,m=0,n=0,o=0,p=0,q=0;H[g|0]=0;a:{b:{c:{d:{e:{l=J[a+52>>2];f:{if(!l){break f}j=J[a+48>>2];if((b|0)==J[j+8>>2]&(c|0)==J[j+12>>2]){break e}while(1){i=i+1|0;if((l|0)==(i|0)){break f}k=j+(i<<5)|0;if((b|0)!=J[k+8>>2]|(c|0)!=J[k+12>>2]){continue}break}J[d>>2]=J[k>>2];J[f>>2]=J[k+20>>2];if(i>>>0>>0){break d}}g:{h:{l=J[a+4>>2];i:{if(!l){break i}j=J[a>>2];i=j;if((b|0)==J[i+8>>2]&(c|0)==J[i+12>>2]){break h}i=0;while(1){i=i+1|0;if((l|0)==(i|0)){break i}k=j+(i<<5)|0;if((b|0)!=J[k+8>>2]|(c|0)!=J[k+12>>2]){continue}break}J[d>>2]=J[k>>2];J[f>>2]=J[k+20>>2];if(i>>>0>>0){break g}}j:{k:{l=J[a+12>>2];l:{if(!l){break l}j=J[a+8>>2];if((b|0)==J[j+8>>2]&(c|0)==J[j+12>>2]){break k}i=0;while(1){i=i+1|0;if((l|0)==(i|0)){break l}k=j+(i<<5)|0;if((b|0)!=J[k+8>>2]|(c|0)!=J[k+12>>2]){continue}break}J[d>>2]=J[k>>2];J[f>>2]=J[k+20>>2];if(i>>>0>>0){break j}}m:{n:{l=J[a+20>>2];o:{if(!l){break o}j=J[a+16>>2];i=j;if((b|0)==J[i+8>>2]&(c|0)==J[i+12>>2]){break n}i=0;while(1){i=i+1|0;if((l|0)==(i|0)){break o}k=j+(i<<5)|0;if((b|0)!=J[k+8>>2]|(c|0)!=J[k+12>>2]){continue}break}J[d>>2]=J[k>>2];J[f>>2]=J[k+20>>2];if(i>>>0>>0){break m}}p:{q:{l=J[a+28>>2];r:{if(!l){break r}j=J[a+24>>2];i=j;if((b|0)==J[i+8>>2]&(c|0)==J[i+12>>2]){break q}i=0;s:{while(1){i=i+1|0;if((l|0)==(i|0)){break s}k=(i<<5)+j|0;if((b|0)!=J[k+8>>2]|(c|0)!=J[k+12>>2]){continue}break}J[d>>2]=J[k>>2];J[f>>2]=J[k+20>>2];if(i>>>0>>0){break p}j=J[a+24>>2]}k=0;n=1;while(1){m=(k<<5)+j|0;o=J[m+24>>2];if(o){q=J[m+20>>2];i=0;while(1){p=(i<<3)+q|0;if(J[p>>2]==(b|0)&J[p+4>>2]==(c|0)){J[d>>2]=J[m>>2];J[h>>2]=i;if(!n){break r}break a}i=i+1|0;if((o|0)!=(i|0)){continue}break}}k=k+1|0;n=l>>>0>k>>>0;if((k|0)!=(l|0)){continue}break}}j=J[a+32>>2];t:{u:{v:{l=J[a+36>>2];w:{if(!l){break w}if((b|0)==J[j+8>>2]&(c|0)==J[j+12>>2]){break v}i=0;while(1){i=i+1|0;if((l|0)==(i|0)){break w}k=(i<<5)+j|0;if((b|0)!=J[k+8>>2]|(c|0)!=J[k+12>>2]){continue}break}J[d>>2]=J[k>>2];J[f>>2]=J[k+20>>2];if(i>>>0>>0){break u}j=J[a+32>>2]}if(!DR(j,l,b,c,d,h)){break t}break a}J[d>>2]=J[j>>2];J[f>>2]=J[j+20>>2]}J[e>>2]=4;break c}j=J[a+40>>2];x:{y:{l=J[a+44>>2];z:{if(!l){break z}if((b|0)==J[j+8>>2]&(c|0)==J[j+12>>2]){break y}i=0;while(1){i=i+1|0;if((l|0)==(i|0)){break z}k=(i<<5)+j|0;if((b|0)!=J[k+8>>2]|J[k+12>>2]!=(c|0)){continue}break}J[d>>2]=J[k>>2];J[f>>2]=J[k+20>>2];if(i>>>0>>0){break x}j=J[a+40>>2]}a=0;if(!DR(j,l,b,c,d,h)){break b}break a}J[d>>2]=J[j>>2];J[f>>2]=J[j+20>>2]}J[e>>2]=5;break c}J[d>>2]=J[j>>2];J[f>>2]=J[j+20>>2]}J[e>>2]=3;break c}J[d>>2]=J[j>>2];J[f>>2]=J[j+20>>2]}J[e>>2]=2;break c}J[d>>2]=J[j>>2];J[f>>2]=J[j+20>>2]}J[e>>2]=1;return 1}J[d>>2]=J[j>>2];J[f>>2]=J[j+20>>2]}J[e>>2]=0;break c}J[d>>2]=J[j>>2];J[f>>2]=J[j+20>>2]}J[e>>2]=6}a=1}return a}J[e>>2]=0;H[g|0]=1;return 1}function jja(a){a=a|0;var b=0,c=0,d=0,e=0,f=0,g=0,h=Q(0),i=Q(0),j=Q(0),k=Q(0),l=Q(0),m=Q(0),n=Q(0),o=Q(0),p=Q(0),q=Q(0),r=Q(0),s=Q(0),t=Q(0),u=Q(0),v=Q(0),w=Q(0),x=Q(0),y=Q(0),z=Q(0),A=Q(0),C=Q(0),D=Q(0),E=Q(0),F=Q(0),G=Q(0),I=Q(0),L=Q(0),M=Q(0),O=Q(0),P=Q(0),R=Q(0),S=Q(0),T=0,U=0,V=0,W=0;c=Ui-112|0;Ui=c;J[c+28>>2]=0;T=J[J[a+8>>2]>>2];f=J[a+4>>2];J[c+108>>2]=0;a:{a=J[f+8>>2];b=J[f+4>>2];if((a|0)!=(b|0)){a=a-b>>2;d=a>>>0<=1?1:a;while(1){a=J[f+4>>2];if(J[f+8>>2]-a>>2>>>0<=g>>>0){break a}a=J[a+(g<<2)>>2];b:{if((K[a+204|0]&3)!=3){break b}b=op(J[a>>2]);if((K[J[a>>2]+137|0]&2)>>>1|0){h=N[a+28>>2];i=N[a+24>>2];j=N[a+16>>2];k=N[a+20>>2];l=N[a+44>>2];m=N[a+40>>2];n=N[a+32>>2];o=N[a+36>>2];p=N[a+60>>2];q=N[a+56>>2];r=N[a+48>>2];s=N[a+52>>2];t=N[b+48>>2];u=N[b+32>>2];v=N[b>>2];w=N[b+16>>2];x=N[b+52>>2];y=N[b+36>>2];z=N[b+4>>2];A=N[b+20>>2];C=N[b+56>>2];D=N[b+40>>2];E=N[b+8>>2];F=N[b+24>>2];G=N[b+60>>2];I=N[a+76>>2];L=N[b+44>>2];M=N[a+72>>2];O=N[b+12>>2];P=N[a+64>>2];R=N[b+28>>2];S=N[a+68>>2];N[a+140>>2]=Q(G*I)+Q(Q(L*M)+Q(Q(O*P)+Q(R*S)));N[a+136>>2]=Q(C*I)+Q(Q(D*M)+Q(Q(E*P)+Q(F*S)));N[a+132>>2]=Q(x*I)+Q(Q(y*M)+Q(Q(z*P)+Q(A*S)));N[a+128>>2]=Q(t*I)+Q(Q(u*M)+Q(Q(v*P)+Q(w*S)));N[a+124>>2]=Q(G*p)+Q(Q(L*q)+Q(Q(O*r)+Q(R*s)));N[a+120>>2]=Q(C*p)+Q(Q(D*q)+Q(Q(E*r)+Q(F*s)));N[a+116>>2]=Q(x*p)+Q(Q(y*q)+Q(Q(z*r)+Q(A*s)));N[a+112>>2]=Q(t*p)+Q(Q(u*q)+Q(Q(v*r)+Q(w*s)));N[a+108>>2]=Q(G*l)+Q(Q(L*m)+Q(Q(O*n)+Q(R*o)));N[a+104>>2]=Q(C*l)+Q(Q(D*m)+Q(Q(E*n)+Q(F*o)));N[a+100>>2]=Q(x*l)+Q(Q(y*m)+Q(Q(z*n)+Q(A*o)));N[a+96>>2]=Q(t*l)+Q(Q(u*m)+Q(Q(v*n)+Q(w*o)));N[a+92>>2]=Q(G*h)+Q(Q(L*i)+Q(Q(O*j)+Q(k*R)));N[a+88>>2]=Q(C*h)+Q(Q(D*i)+Q(Q(E*j)+Q(k*F)));N[a+84>>2]=Q(x*h)+Q(Q(y*i)+Q(Q(z*j)+Q(k*A)));N[a+80>>2]=Q(t*h)+Q(Q(u*i)+Q(Q(v*j)+Q(w*k)));break b}Jp(c+32|0,b,a+16|0);N[a+80>>2]=N[c+32>>2];N[a+84>>2]=N[c+36>>2];N[a+88>>2]=N[c+40>>2];N[a+92>>2]=N[c+44>>2];N[a+96>>2]=N[c+48>>2];N[a+100>>2]=N[c+52>>2];N[a+104>>2]=N[c+56>>2];N[a+108>>2]=N[c+60>>2];N[a+112>>2]=N[c+64>>2];N[a+116>>2]=N[c+68>>2];N[a+120>>2]=N[c+72>>2];N[a+124>>2]=N[c+76>>2];N[a+128>>2]=N[c+80>>2];N[a+132>>2]=N[c+84>>2];N[a+136>>2]=N[c+88>>2];N[a+140>>2]=N[c+92>>2]}g=g+1|0;if((d|0)!=(g|0)){continue}break}}d=J[f+8>>2];e=J[f+4>>2];a=d-e>>2;g=zq(T,a);U=Su(T,280,281,f);b=g;if((d|0)!=(e|0)){V=a>>>0<=1?1:a;U=U<<6|16;a=0;while(1){d=J[f+4>>2];if(J[f+8>>2]-d>>2>>>0<=a>>>0){break a}e=J[d+(a<<2)>>2];if(H[e+204|0]&1){J[75408]=J[75408]+1;J[c+16>>2]=1;J[c+20>>2]=0;J[c+8>>2]=1;J[c+12>>2]=0;d=J[e+128>>2];W=J[e+132>>2];h=N[e+136>>2];J[b+16>>2]=e;J[b+20>>2]=0;N[b+8>>2]=h;J[b>>2]=d;J[b+4>>2]=W;J[b+28>>2]=J[e+144>>2];d=J[e+192>>2];if(!d){d=J[J[e+152>>2]+8>>2]}J[b+32>>2]=J[J[d>>2]+144>>2];J[b+36>>2]=U|J[b+36>>2]&-16384;b=b+48|0}a=a+1|0;if((V|0)!=(a|0)){continue}break}}yq(T,g,b);Ui=c+112|0;return 0}Z(145396,53895,494,84789);B()}function yA(a,b,c){var d=0,e=0,f=0,g=0,h=0,i=0,j=0,k=0,l=0,m=0,n=0,o=0,p=0,q=0,r=0,s=0,t=0,u=0;e=J[a+4>>2];d=e+16|0;g=J[e+12>>2]^(K[b+12|0]|K[b+13|0]<<8|(K[b+14|0]<<16|K[b+15|0]<<24));h=J[e+8>>2]^(K[b+8|0]|K[b+9|0]<<8|(K[b+10|0]<<16|K[b+11|0]<<24));i=J[e+4>>2]^(K[b+4|0]|K[b+5|0]<<8|(K[b+6|0]<<16|K[b+7|0]<<24));b=J[e>>2]^(K[b|0]|K[b+1|0]<<8|(K[b+2|0]<<16|K[b+3|0]<<24));a=J[a>>2]>>1;if((a|0)>=2){l=a<<5;while(1){f=J[(i>>>22&1020)+868784>>2]^(J[(h>>>14&1020)+867760>>2]^(J[(g>>>6&1020)+866736>>2]^(J[((b&255)<<2)+865712>>2]^J[d>>2])));j=J[(h>>>22&1020)+868784>>2]^(J[(g>>>14&1020)+867760>>2]^(J[(b>>>6&1020)+866736>>2]^(J[((i&255)<<2)+865712>>2]^J[d+4>>2])));k=J[(g>>>22&1020)+868784>>2]^(J[(b>>>14&1020)+867760>>2]^(J[(i>>>6&1020)+866736>>2]^(J[((h&255)<<2)+865712>>2]^J[d+8>>2])));b=J[(b>>>22&1020)+868784>>2]^(J[(i>>>14&1020)+867760>>2]^(J[(h>>>6&1020)+866736>>2]^(J[((g&255)<<2)+865712>>2]^J[d+12>>2])));g=J[(f>>>22&1020)+868784>>2]^(J[(j>>>14&1020)+867760>>2]^(J[(k>>>6&1020)+866736>>2]^(J[((b&255)<<2)+865712>>2]^J[d+28>>2])));h=J[(b>>>22&1020)+868784>>2]^(J[(f>>>14&1020)+867760>>2]^(J[(j>>>6&1020)+866736>>2]^(J[((k&255)<<2)+865712>>2]^J[d+24>>2])));i=J[(k>>>22&1020)+868784>>2]^(J[(b>>>14&1020)+867760>>2]^(J[(f>>>6&1020)+866736>>2]^(J[((j&255)<<2)+865712>>2]^J[d+20>>2])));b=J[(j>>>22&1020)+868784>>2]^(J[(k>>>14&1020)+867760>>2]^(J[(b>>>6&1020)+866736>>2]^(J[((f&255)<<2)+865712>>2]^J[d+16>>2])));d=d+32|0;f=a>>>0>2;a=a-1|0;if(f){continue}break}d=(e+l|0)-16|0}a=J[(h>>>22&1020)+868784>>2]^(J[(g>>>14&1020)+867760>>2]^(J[(b>>>6&1020)+866736>>2]^(J[((i&255)<<2)+865712>>2]^J[d+4>>2])));j=K[(a>>>24|0)+873904|0];e=J[(g>>>22&1020)+868784>>2]^(J[(b>>>14&1020)+867760>>2]^(J[(i>>>6&1020)+866736>>2]^(J[((h&255)<<2)+865712>>2]^J[d+8>>2])));k=K[(e>>>16&255)+873904|0];f=J[(b>>>22&1020)+868784>>2]^(J[(i>>>14&1020)+867760>>2]^(J[(h>>>6&1020)+866736>>2]^(J[((g&255)<<2)+865712>>2]^J[d+12>>2])));l=K[(f>>>8&255)+873904|0];m=K[(e>>>24|0)+873904|0];n=K[(f>>>16&255)+873904|0];b=J[(i>>>22&1020)+868784>>2]^(J[(h>>>14&1020)+867760>>2]^(J[(g>>>6&1020)+866736>>2]^(J[((b&255)<<2)+865712>>2]^J[d>>2])));g=K[(b>>>8&255)+873904|0];h=K[(f>>>24|0)+873904|0];i=K[(b>>>16&255)+873904|0];o=K[(a>>>8&255)+873904|0];p=K[(b>>>24|0)+873904|0];q=K[(a>>>16&255)+873904|0];r=K[(e>>>8&255)+873904|0];b=K[(b&255)+873904|0];a=K[(a&255)+873904|0];e=K[(e&255)+873904|0];s=J[d+16>>2];t=J[d+20>>2];u=J[d+24>>2];d=J[d+28>>2]^K[(f&255)+873904|0];H[c+12|0]=d;e=e^u;H[c+8|0]=e;f=a^t;H[c+4|0]=f;b=b^s;H[c|0]=b;a=d^(q<<16|r<<8|p<<24);H[c+15|0]=a>>>24;H[c+14|0]=a>>>16;H[c+13|0]=a>>>8;a=e^(i<<16|o<<8|h<<24);H[c+11|0]=a>>>24;H[c+10|0]=a>>>16;H[c+9|0]=a>>>8;a=f^(n<<16|g<<8|m<<24);H[c+7|0]=a>>>24;H[c+6|0]=a>>>16;H[c+5|0]=a>>>8;a=b^(k<<16|l<<8|j<<24);H[c+3|0]=a>>>24;H[c+2|0]=a>>>16;H[c+1|0]=a>>>8}function Bw(a,b,c){var d=0,e=0,f=0,g=0,h=0,i=0,j=0,k=0,l=0,m=0,n=0,o=0,p=0,q=0,r=0,s=0,t=0,u=0;e=J[a+4>>2];d=e+16|0;g=J[e+12>>2]^(K[b+12|0]|K[b+13|0]<<8|(K[b+14|0]<<16|K[b+15|0]<<24));h=J[e+8>>2]^(K[b+8|0]|K[b+9|0]<<8|(K[b+10|0]<<16|K[b+11|0]<<24));i=J[e+4>>2]^(K[b+4|0]|K[b+5|0]<<8|(K[b+6|0]<<16|K[b+7|0]<<24));b=J[e>>2]^(K[b|0]|K[b+1|0]<<8|(K[b+2|0]<<16|K[b+3|0]<<24));a=J[a>>2]>>1;if((a|0)>=2){l=a<<5;while(1){f=J[(i>>>22&1020)+872880>>2]^(J[(b>>>14&1020)+871856>>2]^(J[(g>>>6&1020)+870832>>2]^(J[((h&255)<<2)+869808>>2]^J[d+8>>2])));j=J[(b>>>22&1020)+872880>>2]^(J[(g>>>14&1020)+871856>>2]^(J[(h>>>6&1020)+870832>>2]^(J[((i&255)<<2)+869808>>2]^J[d+4>>2])));k=J[(g>>>22&1020)+872880>>2]^(J[(h>>>14&1020)+871856>>2]^(J[(i>>>6&1020)+870832>>2]^(J[((b&255)<<2)+869808>>2]^J[d>>2])));b=J[(h>>>22&1020)+872880>>2]^(J[(i>>>14&1020)+871856>>2]^(J[(b>>>6&1020)+870832>>2]^(J[((g&255)<<2)+869808>>2]^J[d+12>>2])));g=J[(f>>>22&1020)+872880>>2]^(J[(j>>>14&1020)+871856>>2]^(J[(k>>>6&1020)+870832>>2]^(J[((b&255)<<2)+869808>>2]^J[d+28>>2])));h=J[(j>>>22&1020)+872880>>2]^(J[(k>>>14&1020)+871856>>2]^(J[(b>>>6&1020)+870832>>2]^(J[((f&255)<<2)+869808>>2]^J[d+24>>2])));i=J[(k>>>22&1020)+872880>>2]^(J[(b>>>14&1020)+871856>>2]^(J[(f>>>6&1020)+870832>>2]^(J[((j&255)<<2)+869808>>2]^J[d+20>>2])));b=J[(b>>>22&1020)+872880>>2]^(J[(f>>>14&1020)+871856>>2]^(J[(j>>>6&1020)+870832>>2]^(J[((k&255)<<2)+869808>>2]^J[d+16>>2])));d=d+32|0;f=a>>>0>2;a=a-1|0;if(f){continue}break}d=(e+l|0)-16|0}a=J[(h>>>22&1020)+872880>>2]^(J[(i>>>14&1020)+871856>>2]^(J[(b>>>6&1020)+870832>>2]^(J[((g&255)<<2)+869808>>2]^J[d+12>>2])));j=K[(a>>>24|0)+865456|0];e=J[(i>>>22&1020)+872880>>2]^(J[(b>>>14&1020)+871856>>2]^(J[(g>>>6&1020)+870832>>2]^(J[((h&255)<<2)+869808>>2]^J[d+8>>2])));k=K[(e>>>16&255)+865456|0];f=J[(b>>>22&1020)+872880>>2]^(J[(g>>>14&1020)+871856>>2]^(J[(h>>>6&1020)+870832>>2]^(J[((i&255)<<2)+869808>>2]^J[d+4>>2])));l=K[(f>>>8&255)+865456|0];b=J[(g>>>22&1020)+872880>>2]^(J[(h>>>14&1020)+871856>>2]^(J[(i>>>6&1020)+870832>>2]^(J[((b&255)<<2)+869808>>2]^J[d>>2])));g=K[(b>>>24|0)+865456|0];h=K[(a>>>16&255)+865456|0];i=K[(e>>>8&255)+865456|0];m=K[(f>>>24|0)+865456|0];n=K[(b>>>16&255)+865456|0];o=K[(a>>>8&255)+865456|0];p=K[(e>>>24|0)+865456|0];q=K[(f>>>16&255)+865456|0];r=K[(b>>>8&255)+865456|0];b=K[(b&255)+865456|0];f=K[(f&255)+865456|0];e=K[(e&255)+865456|0];s=J[d+16>>2];t=J[d+20>>2];u=J[d+24>>2];a=J[d+28>>2]^K[(a&255)+865456|0];H[c+12|0]=a;d=e^u;H[c+8|0]=d;e=f^t;H[c+4|0]=e;b=b^s;H[c|0]=b;a=a^(q<<16|r<<8|p<<24);H[c+15|0]=a>>>24;H[c+14|0]=a>>>16;H[c+13|0]=a>>>8;a=d^(n<<16|o<<8|m<<24);H[c+11|0]=a>>>24;H[c+10|0]=a>>>16;H[c+9|0]=a>>>8;a=e^(h<<16|i<<8|g<<24);H[c+7|0]=a>>>24;H[c+6|0]=a>>>16;H[c+5|0]=a>>>8;a=b^(k<<16|l<<8|j<<24);H[c+3|0]=a>>>24;H[c+2|0]=a>>>16;H[c+1|0]=a>>>8}function Ut(a,b){var c=0,d=0,e=0,f=0;f=a+80|0;d=J[a>>2]&127;c=f+d|0;H[c|0]=128;c=c+1|0;a:{if(d>>>0<=111){ij(c,0,111-d|0);break a}ij(c,0,d^127);fs(a,f);ij(f,0,112)}d=J[a+4>>2];c=J[a>>2];H[a+207|0]=c<<3;H[a+206|0]=(d&31)<<27|c>>>5;H[a+205|0]=(d&8191)<<19|c>>>13;H[a+204|0]=(d&2097151)<<11|c>>>21;H[a+203|0]=(d&536870911)<<3|c>>>29;H[a+202|0]=d>>>5;H[a+201|0]=d>>>13;H[a+200|0]=d>>>21;c=J[a+12>>2];e=J[a+8>>2];H[a+198|0]=(c&31)<<27|e>>>5;H[a+197|0]=(c&8191)<<19|e>>>13;H[a+196|0]=(c&2097151)<<11|e>>>21;H[a+195|0]=(c&536870911)<<3|e>>>29;H[a+194|0]=c>>>5;H[a+193|0]=c>>>13;H[a+192|0]=c>>>21;H[a+199|0]=e<<3|d>>>29;fs(a,f);H[b|0]=K[a+23|0];H[b+1|0]=L[a+22>>1];H[b+2|0]=J[a+20>>2]>>>8;H[b+3|0]=J[a+20>>2];c=J[a+16>>2];H[b+4|0]=(J[a+20>>2]&16777215)<<8|c>>>24;c=J[a+16>>2];H[b+5|0]=(J[a+20>>2]&65535)<<16|c>>>16;c=J[a+16>>2];H[b+6|0]=(J[a+20>>2]&255)<<24|c>>>8;H[b+7|0]=J[a+16>>2];H[b+8|0]=K[a+31|0];H[b+9|0]=L[a+30>>1];H[b+10|0]=J[a+28>>2]>>>8;H[b+11|0]=J[a+28>>2];c=J[a+24>>2];H[b+12|0]=(J[a+28>>2]&16777215)<<8|c>>>24;c=J[a+24>>2];H[b+13|0]=(J[a+28>>2]&65535)<<16|c>>>16;c=J[a+24>>2];H[b+14|0]=(J[a+28>>2]&255)<<24|c>>>8;H[b+15|0]=J[a+24>>2];H[b+16|0]=K[a+39|0];H[b+17|0]=L[a+38>>1];H[b+18|0]=J[a+36>>2]>>>8;H[b+19|0]=J[a+36>>2];c=J[a+32>>2];H[b+20|0]=(J[a+36>>2]&16777215)<<8|c>>>24;c=J[a+32>>2];H[b+21|0]=(J[a+36>>2]&65535)<<16|c>>>16;c=J[a+32>>2];H[b+22|0]=(J[a+36>>2]&255)<<24|c>>>8;H[b+23|0]=J[a+32>>2];H[b+24|0]=K[a+47|0];H[b+25|0]=L[a+46>>1];H[b+26|0]=J[a+44>>2]>>>8;H[b+27|0]=J[a+44>>2];c=J[a+40>>2];H[b+28|0]=(J[a+44>>2]&16777215)<<8|c>>>24;c=J[a+40>>2];H[b+29|0]=(J[a+44>>2]&65535)<<16|c>>>16;c=J[a+40>>2];H[b+30|0]=(J[a+44>>2]&255)<<24|c>>>8;H[b+31|0]=J[a+40>>2];H[b+32|0]=K[a+55|0];H[b+33|0]=L[a+54>>1];H[b+34|0]=J[a+52>>2]>>>8;H[b+35|0]=J[a+52>>2];c=J[a+48>>2];H[b+36|0]=(J[a+52>>2]&16777215)<<8|c>>>24;c=J[a+48>>2];H[b+37|0]=(J[a+52>>2]&65535)<<16|c>>>16;c=J[a+48>>2];H[b+38|0]=(J[a+52>>2]&255)<<24|c>>>8;H[b+39|0]=J[a+48>>2];H[b+40|0]=K[a+63|0];H[b+41|0]=L[a+62>>1];H[b+42|0]=J[a+60>>2]>>>8;H[b+43|0]=J[a+60>>2];c=J[a+56>>2];H[b+44|0]=(J[a+60>>2]&16777215)<<8|c>>>24;c=J[a+56>>2];H[b+45|0]=(J[a+60>>2]&65535)<<16|c>>>16;c=J[a+56>>2];H[b+46|0]=(J[a+60>>2]&255)<<24|c>>>8;H[b+47|0]=J[a+56>>2];if(!J[a+208>>2]){H[b+48|0]=K[a+71|0];H[b+49|0]=L[a+70>>1];H[b+50|0]=J[a+68>>2]>>>8;H[b+51|0]=J[a+68>>2];c=J[a+64>>2];H[b+52|0]=(J[a+68>>2]&16777215)<<8|c>>>24;c=J[a+64>>2];H[b+53|0]=(J[a+68>>2]&65535)<<16|c>>>16;c=J[a+64>>2];H[b+54|0]=(J[a+68>>2]&255)<<24|c>>>8;H[b+55|0]=J[a+64>>2];H[b+56|0]=K[a+79|0];H[b+57|0]=L[a+78>>1];H[b+58|0]=J[a+76>>2]>>>8;H[b+59|0]=J[a+76>>2];c=J[a+72>>2];H[b+60|0]=(J[a+76>>2]&16777215)<<8|c>>>24;c=J[a+72>>2];H[b+61|0]=(J[a+76>>2]&65535)<<16|c>>>16;c=J[a+72>>2];H[b+62|0]=(J[a+76>>2]&255)<<24|c>>>8;H[b+63|0]=J[a+72>>2]}return 0}function bsa(a,b,c,d){a=a|0;b=b|0;c=c|0;d=d|0;var e=0,f=0,g=0,h=Q(0),i=Q(0),j=Q(0),k=0,l=Q(0),m=Q(0),n=Q(0),o=Q(0),p=Q(0),q=Q(0),r=Q(0),s=Q(0),t=Q(0),u=Q(0),v=Q(0),w=Q(0),x=0,y=0,z=0;g=Ui-144|0;Ui=g;e=J[a+8>>2];x=J[a+48>>2];f=J[a+52>>2];a:{if(!f){break a}f=J[f+20>>2];if(!f){break a}if(!(Zi[J[J[f>>2]+44>>2]](f)&1)){break a}J[g+20>>2]=0;J[g+24>>2]=0;J[g+12>>2]=1065353216;J[g+16>>2]=1065353216;f=J[J[a+52>>2]+20>>2];l=N[e+52>>2];m=N[e+12>>2];n=N[e+4>>2];o=N[e+8>>2];p=N[e+56>>2];q=N[e+28>>2];r=N[e+20>>2];s=N[e+24>>2];t=N[e+60>>2];u=N[e+44>>2];h=N[b+8>>2];v=N[e+36>>2];i=N[b>>2];w=N[e+40>>2];j=N[b+4>>2];J[g+140>>2]=0;N[g+136>>2]=t+Q(Q(u*h)+Q(Q(v*i)+Q(j*w)));N[g+132>>2]=p+Q(Q(q*h)+Q(Q(r*i)+Q(j*s)));N[g+128>>2]=l+Q(Q(m*h)+Q(Q(n*i)+Q(o*j)));h=N[b+24>>2];i=N[b+16>>2];j=N[b+20>>2];J[g+124>>2]=0;N[g+120>>2]=t+Q(Q(u*h)+Q(Q(v*i)+Q(w*j)));N[g+116>>2]=p+Q(Q(q*h)+Q(Q(r*i)+Q(s*j)));N[g+112>>2]=l+Q(Q(m*h)+Q(Q(n*i)+Q(o*j)));k=g+128|0;y=g+112|0;z=g+12|0;Zi[J[J[f>>2]+8>>2]](f,k,y,z);f=J[J[a+52>>2]+20>>2];l=N[e+52>>2];m=N[e+12>>2];n=N[e+4>>2];o=N[e+8>>2];p=N[e+56>>2];q=N[e+28>>2];r=N[e+20>>2];s=N[e+24>>2];t=N[e+60>>2];u=N[e+44>>2];h=N[b+24>>2];v=N[e+36>>2];i=N[b+16>>2];w=N[e+40>>2];j=N[b+20>>2];J[g+140>>2]=0;N[g+136>>2]=t+Q(Q(u*h)+Q(Q(v*i)+Q(j*w)));N[g+132>>2]=p+Q(Q(q*h)+Q(Q(r*i)+Q(j*s)));N[g+128>>2]=l+Q(Q(m*h)+Q(Q(n*i)+Q(o*j)));h=N[b+40>>2];i=N[b+32>>2];j=N[b+36>>2];J[g+124>>2]=0;N[g+120>>2]=t+Q(Q(u*h)+Q(Q(v*i)+Q(w*j)));N[g+116>>2]=p+Q(Q(q*h)+Q(Q(r*i)+Q(s*j)));N[g+112>>2]=l+Q(Q(m*h)+Q(Q(n*i)+Q(o*j)));Zi[J[J[f>>2]+8>>2]](f,k,y,z);f=J[J[a+52>>2]+20>>2];l=N[e+52>>2];m=N[e+12>>2];n=N[e+4>>2];o=N[e+8>>2];p=N[e+56>>2];q=N[e+28>>2];r=N[e+20>>2];s=N[e+24>>2];t=N[e+60>>2];u=N[e+44>>2];h=N[b+40>>2];v=N[e+36>>2];i=N[b+32>>2];w=N[e+40>>2];j=N[b+36>>2];J[g+140>>2]=0;N[g+136>>2]=t+Q(Q(u*h)+Q(Q(v*i)+Q(j*w)));N[g+132>>2]=p+Q(Q(q*h)+Q(Q(r*i)+Q(j*s)));N[g+128>>2]=l+Q(Q(m*h)+Q(Q(n*i)+Q(o*j)));h=N[b+8>>2];i=N[b>>2];j=N[b+4>>2];J[g+124>>2]=0;N[g+120>>2]=t+Q(Q(u*h)+Q(Q(v*i)+Q(w*j)));N[g+116>>2]=p+Q(Q(q*h)+Q(Q(r*i)+Q(s*j)));N[g+112>>2]=l+Q(Q(m*h)+Q(Q(n*i)+Q(o*j)));Zi[J[J[f>>2]+8>>2]](f,k,y,z)}if(J[J[J[a+4>>2]+192>>2]+4>>2]<=19){f=Dv(g+12|0);J[f+4>>2]=1;J[f>>2]=245112;k=J[b+12>>2];J[f+60>>2]=J[b+8>>2];J[f+64>>2]=k;k=J[b+4>>2];J[f+52>>2]=J[b>>2];J[f+56>>2]=k;k=J[b+28>>2];J[f+76>>2]=J[b+24>>2];J[f+80>>2]=k;k=J[b+20>>2];J[f+68>>2]=J[b+16>>2];J[f+72>>2]=k;k=J[b+44>>2];J[f+92>>2]=J[b+40>>2];J[f+96>>2]=k;k=J[b+36>>2];J[f+84>>2]=J[b+32>>2];J[f+88>>2]=k;N[f+44>>2]=N[a+56>>2];k=J[e+192>>2];J[e+192>>2]=f;b=Zi[J[J[x>>2]+8>>2]](x,J[a+4>>2],J[a+8>>2],J[a+64>>2])|0;f=J[a+44>>2];Zi[J[J[f>>2]+(J[f+136>>2]==J[a+8>>2]?8:12)>>2]](f,c,d);Zi[J[J[b>>2]+8>>2]](b,J[a+4>>2],J[a+8>>2],J[a+52>>2],J[a+44>>2]);Zi[J[J[b>>2]>>2]](b)|0;Zi[J[J[x>>2]+52>>2]](x,b);J[e+192>>2]=k}Ui=g+144|0}function Xm(a,b,c){var d=0,e=0,f=0,g=0,h=0,i=0,j=0,k=0,l=0,m=0,n=0,o=0,p=0;d=Ui-32|0;Ui=d;J[d+28>>2]=0;J[d+20>>2]=1;J[d+24>>2]=0;J[d+16>>2]=0;J[d+8>>2]=1;J[d+12>>2]=0;e=d+20|0;b=sk(e,b);a:{if(b){break a}f=d+8|0;b=sk(f,c);if(b){break a}b=Yt(e);c=Yt(f);l=b>>>0>c>>>0?c:b;b=yk(e,l);if(b){break a}b=yk(f,l);if(b){break a}J[d+20>>2]=1;J[d+8>>2]=1;b=J[d+24>>2];b:{if(!b){break b}while(1){c=J[d+28>>2]-4|0;while(1){if(!J[c+(b<<2)>>2]){b=b-1|0;if(b){continue}break b}break}if(!J[d+20>>2]){break b}b=d+20|0;b=yk(b,Yt(b));if(b){break a}b=d+8|0;b=yk(b,Yt(b));if(b){break a}e=0;b=J[d+24>>2];c=0;c:{if(!b){break c}f=J[d+28>>2]-4|0;while(1){c=b;if(J[f+(b<<2)>>2]){break c}b=b-1|0;if(b){continue}break}c=0}b=J[d+12>>2];d:{if(!b){break d}f=J[d+16>>2]-4|0;while(1){if(J[f+(b<<2)>>2]){e=b;break d}b=b-1|0;if(b){continue}break}}e:{f:{g:{h:{if(!(c|e)){break h}i:{if(c>>>0>e>>>0){e=J[d+20>>2];break i}if(c>>>0>>0){e=0-J[d+8>>2]|0;break i}b=J[d+8>>2];e=J[d+20>>2];j:{if((e|0)>0){if((b|0)>=0){break j}break h}if(!e){break j}if((b|0)>0){break g}}b=J[d+16>>2];f=J[d+28>>2];while(1){if(!c){break h}c=c-1|0;g=c<<2;k=J[g+f>>2];g=J[b+g>>2];if(k>>>0>g>>>0){break i}if(g>>>0<=k>>>0){continue}break}e=0-e|0}if((e|0)<0){break g}}b=d+20|0;b=tn(b,b,d+8|0);if(b){break a}b=J[d+24>>2];if(!b){b=Zj(1,4);if(!b){b=-16;break a}c=J[d+28>>2];if(c){Zi[J[66509]](c,0,0)|0;cj(J[d+28>>2])}J[d+28>>2]=b;J[d+24>>2]=1;J[b>>2]=0;J[d+20>>2]=1;b=1;break e}k=b&3;e=0;f=J[d+28>>2];k:{if(b>>>0<4){c=0;break k}m=f-12|0;n=f-8|0;o=f-4|0;p=b&-4;c=0;g=0;while(1){h=b<<2;j=h+o|0;i=J[j>>2];J[j>>2]=i>>>1|c;j=h+n|0;c=J[j>>2];J[j>>2]=i<<31|c>>>1;i=h+m|0;h=J[i>>2];J[i>>2]=c<<31|h>>>1;b=b-4|0;i=f+(b<<2)|0;c=J[i>>2];J[i>>2]=h<<31|c>>>1;c=c<<31;g=g+4|0;if((p|0)!=(g|0)){continue}break}}if(!k){break f}while(1){b=b-1|0;h=f+(b<<2)|0;g=J[h>>2];J[h>>2]=g>>>1|c;c=g<<31;e=e+1|0;if((k|0)!=(e|0)){continue}break}break f}b=d+8|0;b=tn(b,b,d+20|0);if(b){break a}b=J[d+12>>2];if(!b){b=Zj(1,4);if(!b){b=-16;break a}c=J[d+16>>2];if(c){Zi[J[66509]](c,0,0)|0;cj(J[d+16>>2])}J[d+16>>2]=b;J[d+12>>2]=1;J[b>>2]=0;J[d+8>>2]=1;break f}k=b&3;e=0;f=J[d+16>>2];l:{if(b>>>0<4){c=0;break l}m=f-12|0;n=f-8|0;o=f-4|0;p=b&-4;c=0;g=0;while(1){h=b<<2;j=h+o|0;i=J[j>>2];J[j>>2]=i>>>1|c;j=h+n|0;c=J[j>>2];J[j>>2]=i<<31|c>>>1;i=h+m|0;h=J[i>>2];J[i>>2]=c<<31|h>>>1;b=b-4|0;i=f+(b<<2)|0;c=J[i>>2];J[i>>2]=h<<31|c>>>1;c=c<<31;g=g+4|0;if((p|0)!=(g|0)){continue}break}}if(!k){break f}while(1){b=b-1|0;h=f+(b<<2)|0;g=J[h>>2];J[h>>2]=g>>>1|c;c=g<<31;e=e+1|0;if((k|0)!=(e|0)){continue}break}}b=J[d+24>>2]}if(b){continue}break}}c=d+8|0;b=Vn(c,l);if(b){break a}b=sk(a,c)}a=J[d+28>>2];if(a){Zi[J[66509]](a,0,J[d+24>>2]<<2)|0;cj(J[d+28>>2])}J[d+28>>2]=0;J[d+20>>2]=1;J[d+24>>2]=0;a=J[d+16>>2];if(a){Zi[J[66509]](a,0,J[d+12>>2]<<2)|0;cj(J[d+16>>2])}Ui=d+32|0;return b}function Fsa(a,b,c,d,e){a=a|0;b=b|0;c=c|0;d=d|0;e=e|0;var f=Q(0),g=Q(0),h=Q(0),i=Q(0),j=Q(0),k=Q(0),l=Q(0),m=Q(0),n=Q(0),o=Q(0),p=Q(0),q=Q(0),r=Q(0),s=Q(0),t=Q(0),u=Q(0),v=Q(0),w=Q(0),x=Q(0),y=Q(0),z=Q(0),A=Q(0),B=Q(0),C=Q(0),D=Q(0),E=Q(0),F=Q(0),G=Q(0),H=Q(0),I=Q(0),L=Q(0),M=Q(0),O=Q(0),P=Q(0),R=Q(0),S=Q(0),T=Q(0),U=Q(0),V=Q(0),W=Q(0),X=Q(0),Y=Q(0),Z=Q(0),_=Q(0),$=Q(0),aa=Q(0),ba=Q(0),ca=Q(0),da=Q(0),ea=Q(0),fa=Q(0),ga=Q(0),ha=Q(0),ia=Q(0);d=Ui-240|0;Ui=d;j=Q(1);e=K[a+8|0];a=e?c:b;k=N[a+60>>2];h=Q(N[a+124>>2]-k);f=Q(h*h);h=N[a+116>>2];v=N[a+52>>2];g=Q(h-v);t=Q(g*g);u=N[a+120>>2];w=N[a+56>>2];g=Q(u-w);f=Q(f+Q(t+Q(g*g)));g=N[a+248>>2];a:{if(f>2];if(J[c+4>>2]-21>>>0>8){break a}g=N[b+12>>2];t=Q(-N[b+52>>2]);f=N[b+28>>2];l=N[b+56>>2];m=N[b+44>>2];i=N[b+60>>2];U=Q(Q(Q(g*t)-Q(f*l))-Q(m*i));x=N[a+124>>2];W=Q(Q(m*x)+Q(Q(g*h)+Q(f*u)));n=N[b+8>>2];o=N[b+24>>2];p=N[b+40>>2];V=Q(Q(Q(n*t)-Q(o*l))-Q(p*i));j=Q(V+Q(Q(p*x)+Q(Q(n*h)+Q(o*u))));q=N[b+36>>2];y=N[a+92>>2];X=Q(f*y);z=N[a+76>>2];Y=Q(z*g);A=N[a+108>>2];B=N[a+88>>2];Z=Q(f*B);C=N[a+72>>2];_=Q(C*g);D=N[a+104>>2];E=N[a+84>>2];$=Q(f*E);F=N[a+68>>2];aa=Q(F*g);G=N[a+100>>2];r=N[b+20>>2];ba=Q(r*y);s=N[b+4>>2];ca=Q(z*s);H=N[a+28>>2];da=Q(f*H);I=N[a+12>>2];ea=Q(I*g);L=N[a+44>>2];M=N[a+24>>2];fa=Q(f*M);O=N[a+8>>2];ga=Q(O*g);P=N[a+40>>2];R=N[a+20>>2];ha=Q(f*R);S=N[a+4>>2];ia=Q(S*g);T=N[a+36>>2];J[d+236>>2]=0;i=Q(Q(Q(s*t)-Q(r*l))-Q(q*i));l=Q(i+Q(Q(q*k)+Q(Q(s*v)+Q(r*w))));t=l;h=Q(i+Q(Q(q*x)+Q(Q(s*h)+Q(r*u))));if(h>2]=h;t=h}i=Q(V+Q(Q(p*k)+Q(Q(n*v)+Q(o*w))));u=i;if(j>2]=j;u=j}k=Q(U+Q(Q(m*k)+Q(Q(g*v)+Q(f*w))));f=k;g=Q(U+W);if(f>g){N[d+232>>2]=g;f=g}J[d+220>>2]=0;v=f;f=N[a+244>>2];N[d+232>>2]=v-f;N[d+228>>2]=u-f;N[d+224>>2]=t-f;N[d+216>>2]=f+(g>k?g:k);N[d+212>>2]=f+(j>i?j:i);N[d+208>>2]=f+(h>l?h:l);N[d+200>>2]=f;J[d+132>>2]=0;N[d+128>>2]=g;N[d+124>>2]=j;N[d+120>>2]=h;J[d+116>>2]=0;N[d+112>>2]=Q(A*m)+Q(Y+X);N[d+108>>2]=Q(D*m)+Q(_+Z);N[d+104>>2]=Q(G*m)+Q(aa+$);J[d+100>>2]=0;N[d+96>>2]=Q(A*p)+Q(Q(z*n)+Q(o*y));N[d+92>>2]=Q(D*p)+Q(Q(C*n)+Q(o*B));N[d+88>>2]=Q(G*p)+Q(Q(F*n)+Q(o*E));J[d+84>>2]=0;N[d+80>>2]=Q(A*q)+Q(ca+ba);N[d+76>>2]=Q(D*q)+Q(Q(C*s)+Q(r*B));N[d+72>>2]=Q(G*q)+Q(Q(F*s)+Q(r*E));J[d+68>>2]=0;N[d+64>>2]=k;N[d+60>>2]=i;N[d+56>>2]=l;J[d+52>>2]=0;N[d+48>>2]=Q(L*m)+Q(ea+da);N[d+44>>2]=Q(P*m)+Q(ga+fa);N[d+40>>2]=Q(T*m)+Q(ia+ha);J[d+36>>2]=0;N[d+32>>2]=Q(L*p)+Q(Q(I*n)+Q(o*H));N[d+28>>2]=Q(P*p)+Q(Q(O*n)+Q(o*M));N[d+24>>2]=Q(T*p)+Q(Q(S*n)+Q(o*R));J[d+20>>2]=0;N[d+16>>2]=Q(L*q)+Q(Q(I*s)+Q(r*H));N[d+12>>2]=Q(P*q)+Q(Q(O*s)+Q(r*M));N[d+8>>2]=Q(T*q)+Q(Q(S*s)+Q(r*R));J[d+4>>2]=245236;N[d+204>>2]=N[a+240>>2];Zi[J[J[c>>2]+60>>2]](c,d+4|0,d+224|0,d+208|0);j=Q(1);h=N[d+204>>2];if(h>2]){N[a+240>>2]=h;j=h}}Ui=d+240|0;return Q(j)}function Wz(a){var b=0,c=0,d=0,e=0,f=0,g=0,h=0,i=0,j=0;a:{b:{c:{d:{e:{f:{c=J[a+16>>2];switch(K[c+21|0]){case 4:break b;case 3:break c;case 2:break d;case 1:break e;case 0:break f;default:break a}}gI(a);return 0}if(J[c+36>>2]){return Qt(c)}b=J[c+140>>2];d=c+120|0;g:{if((b|0)==(d|0)){break g}while(1){h:{if(K[b+5|0]&7){break h}e=J[b+8>>2];if(J[e+8>>2]<4){break h}e=J[e>>2];if(!(K[e+5|0]&3)){break h}dl(c,e)}b=J[b+20>>2];if((d|0)!=(b|0)){continue}break}if(!J[c+36>>2]){break g}while(1){Qt(c);if(J[c+36>>2]){continue}break}}b=J[c+44>>2];J[c+44>>2]=0;J[c+36>>2]=b;if(K[a+5|0]&3){dl(c,a)}hI(c);if(J[c+36>>2]){while(1){Qt(c);if(J[c+36>>2]){continue}break}}b=J[c+40>>2];J[c+40>>2]=0;J[c+36>>2]=b;if(b){while(1){Qt(c);if(J[c+36>>2]){continue}break}}g=J[a+16>>2];d=J[g+112>>2];b=J[d>>2];if(b){while(1){e=K[b+5|0];i:{if(e&8){d=b;break i}if(!(e&3)){d=b;break i}j:{f=J[b+8>>2];if(!(!f|K[f+6|0]&4)){f=Zo(f,2,J[J[a+16>>2]+196>>2]);e=K[b+5|0];if(f){break j}}H[b+5|0]=e|8;d=b;break i}H[b+5|0]=e|8;e=J[b+16>>2];J[d>>2]=J[b>>2];i=(e+i|0)+32|0;e=J[g+48>>2];k:{if(!e){J[b>>2]=b;break k}J[b>>2]=J[e>>2];J[J[g+48>>2]>>2]=b}J[g+48>>2]=b}b=J[d>>2];if(b){continue}break}}b=J[c+48>>2];if(b){while(1){b=J[b>>2];H[b+5|0]=K[c+20|0]&3|K[b+5|0]&248;dl(c,b);if(J[c+48>>2]!=(b|0)){continue}break}}g=0;if(J[c+36>>2]){while(1){g=Qt(c)+g|0;if(J[c+36>>2]){continue}break}}d=J[c+44>>2];if(d){while(1){l:{if(!(K[d+5|0]&16)){break l}b=J[d+28>>2];if(!b){break l}while(1){b=b-1|0;e=J[d+12>>2]+(b<<4)|0;f=J[e+8>>2];m:{if((f|0)<4){break m}h=J[e>>2];a=K[h+5|0];if((f|0)==4){H[h+5|0]=a&252;break m}if(!(a&3)&(!(a&8)|(f|0)!=7)){break m}J[e+8>>2]=0}if(b){continue}break}}a=-1<>2]+(b<<5)|0;e=J[a+8>>2];n:{if(!e){break n}h=J[a+24>>2];o:{p:{if((h|0)<4){break p}j=J[a+16>>2];f=K[j+5|0];if((h|0)==4){H[j+5|0]=f&252;e=J[a+8>>2];break p}if(f&3){break o}}if((e|0)<4){break n}h=J[a>>2];f=K[h+5|0];if((e|0)==4){H[h+5|0]=f&252;break n}if(f&3){break o}if(!(f&8)|(e|0)!=7){break n}}J[a+8>>2]=0;if(J[a+24>>2]<4){break n}J[a+24>>2]=11}a=b-1|0;if(b){continue}break}d=J[d+24>>2];if(d){continue}break}}J[c+24>>2]=0;H[c+21|0]=2;J[c+32>>2]=c+28;H[c+20|0]=K[c+20|0]^3;J[c+72>>2]=J[c+68>>2]-(g+i|0);return 0}b=J[c+24>>2];J[c+24>>2]=b+1;d=J[c+68>>2];Ht(a,J[c>>2]+(b<<2)|0,-3);if(J[c+24>>2]>=J[c+8>>2]){H[c+21|0]=3}J[c+72>>2]=J[c+72>>2]+(J[c+68>>2]-d|0);return 10}e=J[c+68>>2];b=Ht(a,J[c+32>>2],40);J[c+32>>2]=b;if(!J[b>>2]){b=J[a+16>>2];d=J[b+8>>2];g=(d|0)/4|0;if(!((d|0)<65|g>>>0<=M[b+4>>2])){PA(a,d>>>1|0)}d=J[b+60>>2];if(d>>>0>=65){f=a;a=d>>>1|0;d=lk(f,J[b+52>>2],d,a);J[b+60>>2]=a;J[b+52>>2]=d}H[c+21|0]=4}J[c+72>>2]=J[c+72>>2]+(J[c+68>>2]-e|0);return 400}if(J[c+48>>2]){TV(a);b=100;a=J[c+72>>2];if(a>>>0<101){break a}J[c+72>>2]=a-100;return 100}J[c+76>>2]=0;H[c+21|0]=0}return b}function Mma(a){a=a|0;var b=0,c=0,d=0,e=0,f=0,g=0,h=0,i=0,j=0,k=0,l=0,m=0,n=0,o=0,p=0,q=0;b=Ui-560|0;Ui=b;p=J[a+8>>2]-J[a+12>>2]>>4;J[b+300>>2]=256;J[b+292>>2]=b+304;J[b+296>>2]=0;J[b+284>>2]=2270;J[b+280>>2]=2271;J[b+288>>2]=b+280;Bj(a);d=qj(a,-1,J[74197],139276);gj(a,-2);d=J[d+4>>2];J[b+272>>2]=0;J[b+276>>2]=0;J[b+264>>2]=0;J[b+268>>2]=0;J[b+256>>2]=0;J[b+260>>2]=0;J[b+248>>2]=0;J[b+252>>2]=0;e=b+248|0;$l(a,e);J[b+240>>2]=0;J[b+244>>2]=0;J[b+232>>2]=0;J[b+236>>2]=0;J[b+224>>2]=0;J[b+228>>2]=0;J[b+216>>2]=0;J[b+220>>2]=0;Sk(a,1,b+216|0,e);e=J[J[d+80>>2]+8>>2];a:{if(!e){break a}d=J[e>>2];if(!d){break a}f=J[d+3216>>2];k=J[d+3220>>2]}if((f|0)!=J[b+216>>2]|(k|0)!=J[b+220>>2]){fj(a,120648,0)}b:{if((p|0)<2){break b}if(!kj(a,2)){break b}if(Mk(a,2)){j=bj(Ij(a,2,0));l=Yi;break b}j=Tl(a,2);l=Yi}k=xk(e,J[b+232>>2],J[b+236>>2]);c:{if(!k){J[b>>2]=nk(b+280|0,J[b+232>>2],J[b+236>>2]);m=fj(a,134772,b);break c}J[b+200>>2]=0;H[b+208|0]=K[b+208|0]&254;J[b+200>>2]=0;f=J[b+240>>2];n=J[b+244>>2];d=Ui-144|0;Ui=d;d:{e:{f:{if(!k){g=-6;break f}e=qv(e);h=J[e+48>>2];g:{if(!h){break g}h=J[J[e+44>>2]+((k>>>0)%(h>>>0)<<2)>>2];if((h|0)==-1){break g}i=J[e+52>>2];while(1){c=i+P(h,12)|0;if((k|0)==J[c>>2]){break g}h=J[c+8>>2];if((h|0)!=-1){continue}break}c=0}i=c+4|0;if(!(j|l)){if(!c){break f}c=L[i>>1];if((c|0)==65535){break f}h:{while(1){c=c&65535;h=J[e+16>>2];if(c>>>0>2]-h>>1>>>0){c=L[h+(c<<1)>>1];i=J[e>>2];if(c>>>0>=(J[e+4>>2]-i|0)/104>>>0){break h}c=i+P(c,104)|0;if(J[c+8>>2]==(f|0)&J[c+12>>2]==(n|0)){H[c+96|0]=K[c+96|0]&252}c=L[c+94>>1];if((c|0)!=65535){continue}break f}break}break e}break e}h=Zp(d+32|0);J[d+16>>2]=0;H[d+24|0]=K[d+24|0]&254;J[d+16>>2]=0;g=J[d+28>>2];J[d+8>>2]=J[d+24>>2];J[d+12>>2]=g;g=J[d+20>>2];J[d>>2]=J[d+16>>2];J[d+4>>2]=g;g=Cr(k,f,n,j,l,d,h);if(g){break f}i=c?i:0;g=-3;i:{j:{k:{o=J[h+32>>2];switch(o|0){case 3:break i;case 4:case 5:break j;case 0:break k;default:break f}}QD(e,i,f,n,j,l);g=0;break f}o=4}QD(e,i,f,n,j,l);g=0;c=0;while(1){q=(c<<3)+h|0;QD(e,i,f,n,J[q>>2],J[q+4>>2]);c=c+1|0;if((c|0)!=(o|0)){continue}break}}Ui=d+144|0;f=g;break d}Z(145396,53895,487,84789);B()}l:{switch(f+5|0){case 1:case 2:f=Zp(b+88|0);g=J[b+212>>2];J[b+72>>2]=J[b+208>>2];J[b+76>>2]=g;g=J[b+204>>2];J[b+64>>2]=J[b+200>>2];J[b+68>>2]=g;Cr(k,J[b+240>>2],J[b+244>>2],j,l,b- -64|0,f);J[b+48>>2]=nk(b+280|0,j,l);m=fj(a,64228,b+48|0);break c;case 0:j=nk(b+280|0,J[b+240>>2],J[b+244>>2]);J[b+84>>2]=Ij(a,1,0);J[b+80>>2]=j;m=fj(a,147897,b+80|0);break c;default:J[b+16>>2]=f;m=fj(a,78476,b+16|0);break c;case 5:if(J[a+8>>2]-J[a+12>>2]>>4==(p|0)){break c}Z(42939,37509,1796,20121);B();case 4:break l}}mj(a,158859,0);wm(a,b+216|0);lm(a,2);f=Ij(a,-1,0);gj(a,-2);J[b+36>>2]=nk(b+280|0,j,l);J[b+32>>2]=f;m=fj(a,149102,b+32|0)}Ui=b+560|0;return m|0}function Lz(a,b,c,d,e,f,g,h){var i=0,j=0,k=0,l=0,m=0,n=0,o=0,p=0,q=0,r=0,s=0,t=0,u=0;a:{if(!f){break a}while(1){b:{c:{if(!((f|0)<=(h|0)|(e|0)<=(h|0))){if(!e){break a}m=J[d>>2];i=J[b>>2];k=m+(i<<3)|0;j=J[k>>2];k=J[k+4>>2];while(1){l=J[a>>2];n=m+(l<<3)|0;q=J[n>>2];n=J[n+4>>2];if((n|0)==(k|0)&j>>>0>>0|k>>>0>>0){break c}a=a+4|0;e=e-1|0;if(e){continue}break}break a}if((e|0)>(f|0)){break b}if((a|0)==(b|0)){break a}j=g;i=a;while(1){J[j>>2]=J[i>>2];j=j+4|0;i=i+4|0;if((i|0)!=(b|0)){continue}break}k=J[d>>2];while(1){if((b|0)==(c|0)){el(a,g,j-g|0);return}f=J[b>>2];h=k+(f<<3)|0;d=J[h>>2];i=J[g>>2];l=k+(i<<3)|0;e=J[l>>2];o=f;m=i;f=J[h+4>>2];h=J[l+4>>2];i=(f|0)==(h|0)&d>>>0>>0|f>>>0>>0;J[a>>2]=i?o:m;b=(i<<2)+b|0;a=a+4|0;g=(((f|0)==(h|0)&d>>>0>=e>>>0|f>>>0>h>>>0)<<2)+g|0;if((j|0)!=(g|0)){continue}break}break a}d:{if((e|0)<(f|0)){n=(f|0)/2|0;l=(n<<2)+b|0;e:{if((a|0)==(b|0)){k=a;break e}i=b-a>>2;k=m+(J[l>>2]<<3)|0;j=J[k>>2];q=J[k+4>>2];k=a;while(1){o=i>>>1|0;p=(o<<2)+k|0;r=m+(J[p>>2]<<3)|0;s=J[r>>2];t=k;u=p+4|0;k=J[r+4>>2];p=(k|0)==(q|0)&j>>>0>>0|k>>>0>q>>>0;k=p?t:u;i=p?o:(o^-1)+i|0;if(i){continue}break}}q=k-a>>2;break d}if((e|0)==1){J[a>>2]=i;J[b>>2]=l;return}q=(e|0)/2|0;k=(q<<2)+a|0;f:{if((b|0)==(c|0)){l=b;break f}i=c-b>>2;l=m+(J[k>>2]<<3)|0;j=J[l>>2];n=J[l+4>>2];l=b;while(1){o=i>>>1|0;p=(o<<2)+l|0;r=m+(J[p>>2]<<3)|0;s=J[r>>2];u=p+4|0;t=l;l=J[r+4>>2];p=(n|0)==(l|0)&j>>>0>s>>>0|l>>>0>>0;l=p?u:t;i=p?(o^-1)+i|0:o;if(i){continue}break}}n=l-b>>2}f=f-n|0;e=e-q|0;j=l;g:{if((b|0)==(k|0)){break g}j=k;if((b|0)==(l|0)){break g}j=k+4|0;if((j|0)==(b|0)){i=J[k>>2];b=l-b|0;j=el(k,j,b)+b|0;J[j>>2]=i;break g}if((b+4|0)==(l|0)){b=l-4|0;i=b-k|0;j=l-i|0;m=J[b>>2];if((b|0)!=(k|0)){el(j,k,i)}J[k>>2]=m;break g}i=b;j=k;r=b-k|0;p=r>>2;o=p;s=l-b|0;m=s>>2;if((p|0)==(m|0)){while(1){m=J[j>>2];J[j>>2]=J[i>>2];J[i>>2]=m;j=j+4|0;if((j|0)==(b|0)){j=b;break g}i=i+4|0;if((l|0)!=(i|0)){continue}break}j=b;break g}while(1){b=m;m=(o|0)%(b|0)|0;o=b;if(m){continue}break}b=(b<<2)+k|0;while(1){b=b-4|0;i=r+b|0;j=J[b>>2];m=b;while(1){J[m>>2]=J[i>>2];m=i;o=i+r|0;i=l-i>>2;i=(i|0)>(p|0)?o:(p-i<<2)+k|0;if((i|0)!=(b|0)){continue}break}J[m>>2]=j;if((b|0)!=(k|0)){continue}break}j=k+s|0}h:{if((n+q|0)<(e+f|0)){Lz(a,k,j,d,q,n,g,h);a=j;b=l;break h}Lz(j,l,c,d,e,f,g,h);f=n;e=q;c=j;b=k}if(f){continue}break a}break}if((b|0)==(c|0)){break a}j=g;i=b;while(1){J[j>>2]=J[i>>2];j=j+4|0;i=i+4|0;if((i|0)!=(c|0)){continue}break}while(1){if((a|0)!=(b|0)){h=J[d>>2];f=j-4|0;e=J[f>>2];k=h+(e<<3)|0;i=J[k>>2];l=b-4|0;m=J[l>>2];h=h+(m<<3)|0;n=J[h>>2];c=c-4|0;o=e;e=J[k+4>>2];h=J[h+4>>2];e=(e|0)==(h|0)&i>>>0>>0|e>>>0>>0;J[c>>2]=e?m:o;b=e?l:b;j=e?j:f;if((j|0)!=(g|0)){continue}break a}break}while(1){c=c-4|0;j=j-4|0;J[c>>2]=J[j>>2];if((g|0)!=(j|0)){continue}break}}}function dz(a,b,c,d){var e=0,f=0,g=0,h=0,i=0,j=0,k=0,l=0,m=0,n=0,o=0,p=0,q=0,r=0;if(!(!b|!c)){if(!(J[a+24>>2]>127|J[a+28>>2]>127)){l=Yj(1024);g=J[a+24>>2];a:{if((g|0)<=0){break a}if(g>>>0>=4){p=g&2147483644;while(1){f=n<<3;i=f+l|0;h=f+J[a+32>>2]|0;m=J[h+4>>2];J[i>>2]=J[h>>2];J[i+4>>2]=m;i=f|8;h=i+l|0;i=i+J[a+32>>2]|0;m=J[i+4>>2];J[h>>2]=J[i>>2];J[h+4>>2]=m;i=f|16;h=i+l|0;i=i+J[a+32>>2]|0;m=J[i+4>>2];J[h>>2]=J[i>>2];J[h+4>>2]=m;f=f|24;i=f+l|0;f=f+J[a+32>>2]|0;h=J[f+4>>2];J[i>>2]=J[f>>2];J[i+4>>2]=h;n=n+4|0;e=e+4|0;if((p|0)!=(e|0)){continue}break}}e=g&3;if(!e){break a}while(1){f=n<<3;g=f+l|0;f=f+J[a+32>>2]|0;p=J[f+4>>2];J[g>>2]=J[f>>2];J[g+4>>2]=p;n=n+1|0;j=j+1|0;if((e|0)!=(j|0)){continue}break}}e=J[a+32>>2];if(!(e?!e|K[a+36|0]!=1:1)){J[83765]=J[83765]+1;Zi[J[61751]](J[e-4>>2])}J[a+32>>2]=l;H[a+36|0]=1;J[a+28>>2]=128}J[a+24>>2]=128;e=J[a+32>>2];J[e+4>>2]=c;J[e>>2]=b;b=124;e=1;while(1){j=J[a+32>>2];l=e;e=e-1|0;i=e<<3;c=j+i|0;g=J[c+4>>2];f=J[c>>2];if((b|0)<(e|0)){b=J[a+24>>2];p=b<<1;if(!((p|0)<=J[a+28>>2]|(b|0)>=(p|0))){b:{if(!b){j=0;break b}j=Yj(b<<4);m=J[a+24>>2];if((m|0)<=0){break b}b=0;n=0;if(m>>>0>=4){r=m&2147483644;c=0;while(1){h=n<<3;k=h+j|0;o=h+J[a+32>>2]|0;q=J[o+4>>2];J[k>>2]=J[o>>2];J[k+4>>2]=q;k=h|8;o=k+j|0;k=k+J[a+32>>2]|0;q=J[k+4>>2];J[o>>2]=J[k>>2];J[o+4>>2]=q;k=h|16;o=k+j|0;k=k+J[a+32>>2]|0;q=J[k+4>>2];J[o>>2]=J[k>>2];J[o+4>>2]=q;h=h|24;k=h+j|0;h=h+J[a+32>>2]|0;o=J[h+4>>2];J[k>>2]=J[h>>2];J[k+4>>2]=o;n=n+4|0;c=c+4|0;if((r|0)!=(c|0)){continue}break}}c=m&3;if(!c){break b}while(1){h=n<<3;m=h+j|0;h=h+J[a+32>>2]|0;r=J[h+4>>2];J[m>>2]=J[h>>2];J[m+4>>2]=r;n=n+1|0;b=b+1|0;if((c|0)!=(b|0)){continue}break}}b=J[a+32>>2];if(!(b?!b|K[a+36|0]!=1:1)){J[83765]=J[83765]+1;Zi[J[61751]](J[b-4>>2])}J[a+32>>2]=j;H[a+36|0]=1;J[a+28>>2]=p}J[a+24>>2]=p;b=p-4|0}c:{if((f|0)==(g|0)){if(!J[f+40>>2]){break c}c=j+i|0;e=J[f+36>>2];J[c+4>>2]=e;J[c>>2]=e;c=l<<3;e=c+J[a+32>>2]|0;g=J[f+40>>2];J[e+4>>2]=g;J[e>>2]=g;e=J[f+40>>2];c=c+J[a+32>>2]|0;J[c+8>>2]=J[f+36>>2];J[c+12>>2]=e;e=l+2|0;break c}if(!(N[f>>2]<=N[g+16>>2])|!(N[f+16>>2]>=N[g>>2])|(!(N[f+4>>2]<=N[g+20>>2])|!(N[f+20>>2]>=N[g+4>>2]))){break c}if(!(N[f+8>>2]<=N[g+24>>2])|!(N[f+24>>2]>=N[g+8>>2])){break c}c=J[g+40>>2];if(J[f+40>>2]){e=J[f+36>>2];if(c){c=j+i|0;J[c+4>>2]=J[g+36>>2];J[c>>2]=e;e=J[f+40>>2];c=l<<3;j=c+J[a+32>>2]|0;J[j+4>>2]=J[g+36>>2];J[j>>2]=e;e=J[f+36>>2];j=c+J[a+32>>2]|0;J[j+12>>2]=J[g+40>>2];J[j+8>>2]=e;e=J[f+40>>2];c=c+J[a+32>>2]|0;J[c+20>>2]=J[g+40>>2];J[c+16>>2]=e;e=l+3|0;break c}c=j+i|0;J[c+4>>2]=g;J[c>>2]=e;c=J[f+40>>2];e=J[a+32>>2]+(l<<3)|0;J[e+4>>2]=g;J[e>>2]=c;e=l+1|0;break c}if(c){c=j+i|0;J[c+4>>2]=J[g+36>>2];J[c>>2]=f;c=J[a+32>>2]+(l<<3)|0;J[c+4>>2]=J[g+40>>2];J[c>>2]=f;e=l+1|0;break c}Zi[J[J[d>>2]+8>>2]](d,f,g)}if(e){continue}break}}}function ZQ(a,b,c,d){var e=0,f=0,g=0,h=0,i=0,j=0,k=0;g=Ui-32|0;Ui=g;J[d>>2]=c;a:{b:{c:{d:{e:{f:{e=wk(a,J[c+64>>2],d+96|0);g:{if(e){break g}if(J[J[J[d+96>>2]>>2]+168>>2]){dj(4,88458,150892,0);e=-15;break g}e=J[d>>2];c=J[e>>2];if(!(!c|!K[c|0])){e=wk(a,c,d+4|0);if(e){break g}e=J[d>>2]}h=d+100|0;c=J[e+104>>2];e=(c>>>0)/3|0;e=e>>>0<=1?1:e;Rp(h,e,c);i=d+132|0;Us(i,e,J[J[d>>2]+104>>2]);e=J[d>>2];f=J[e+104>>2];if(f){c=0;while(1){J[g+28>>2]=0;if(c>>>0>=f>>>0){break c}f=c<<3;j=g+28|0;e=wk(a,J[(f+J[e+100>>2]|0)+4>>2],j);if(e){break g}e=J[d>>2];if(M[e+104>>2]<=c>>>0){break c}e=f+J[e+100>>2]|0;k=ul(J[e+4>>2],46);e=bj(J[e>>2]);f=Yi;J[g+16>>2]=bj(k);J[g+20>>2]=Yi;pl(h,e,f,j);_u(i,e,f,g+16|0);c=c+1|0;e=J[d>>2];f=J[e+104>>2];if(c>>>0>>0){continue}break}}if(H[d+68|0]&1){break a}f=d- -64|0;lj(J[e+96>>2],4,d+56|0,f,d+60|0);J[d+60>>2]=J[d+56>>2];e=J[d>>2];if(J[e+96>>2]){c=0;while(1){J[g+16>>2]=0;e=wk(a,J[(J[e+92>>2]+(c<<3)|0)+4>>2],g+16|0);if(e){break g}e=J[d+60>>2];if((e|0)==J[f>>2]){break b}h=J[g+16>>2];J[d+60>>2]=e+4;J[e>>2]=h;c=c+1|0;e=J[d>>2];if(c>>>0>2]){continue}break}}if(H[d+20|0]&1){break a}lj(J[e+8>>2],4,d+8|0,d+16|0,d+12|0);c=J[d+8>>2];J[d+12>>2]=c;if(H[d+36|0]&1){break a}lj(J[d+16>>2]-c>>2,8,d+24|0,d+32|0,d+28|0);J[d+28>>2]=J[d+24>>2];e=J[d>>2];f=J[e+8>>2];if(f){c=0;while(1){if(c>>>0>=f>>>0){break f}e=wk(a,J[(J[e+4>>2]+(c<<3)|0)+4>>2],g+28|0);if(e){break g}e=J[d+12>>2];if((e|0)==J[d+16>>2]){break b}f=J[g+28>>2];J[d+12>>2]=e+4;J[e>>2]=f;J[g+16>>2]=0;J[g+20>>2]=0;hp(a,f,g+16|0);e=J[d+28>>2];if((e|0)==J[d+32>>2]){break b}f=J[g+16>>2];h=J[g+20>>2];J[d+28>>2]=e+8;J[e>>2]=f;J[e+4>>2]=h;c=c+1|0;e=J[d>>2];f=J[e+8>>2];if(c>>>0>>0){continue}break}}f=d+72|0;tE(f,J[e+112>>2]);c=0;e=J[f>>2];J[f+4>>2]=e;f=J[d>>2];e=J[f+112>>2];if(e){while(1){if(c>>>0>=e>>>0){break e}e=wk(a,J[(J[f+108>>2]+(c<<3)|0)+4>>2],g+16|0);if(e){break g}e=J[d+76>>2];if((e|0)==J[d+80>>2]){break b}f=J[g+16>>2];J[d+76>>2]=e+4;J[e>>2]=f;c=c+1|0;f=J[d>>2];e=J[f+112>>2];if(c>>>0>>0){continue}break}}am(a,80832,g+16|0);e=J[J[d>>2]+16>>2];c=d+40|0;if(H[c+12|0]&1){break a}lj(e,8,c,c+8|0,c+4|0);e=J[c>>2];J[c+4>>2]=e;c=J[d>>2];e=J[c+16>>2];if(e){f=0;while(1){if(e>>>0<=f>>>0){break d}e=wk(a,J[(J[c+12>>2]+(f<<3)|0)+4>>2],g+28|0);if(e){break g}e=ZB(a,J[g+28>>2],g+12|0);if(e){break g}c=J[d+44>>2];if((c|0)==J[d+48>>2]){break b}e=J[g+28>>2];h=J[g+16>>2];i=J[g+12>>2];J[d+44>>2]=c+8;H[c+7|0]=0;H[c+5|0]=0;H[c+6|0]=0;H[c+4|0]=(h|0)==(i|0);J[c>>2]=e;c=J[d>>2];e=J[c+16>>2];f=f+1|0;if(e>>>0>f>>>0){continue}break}}a=Gk(J[c>>2]);J[d+92>>2]=b;J[d+88>>2]=a;e=0}Ui=g+32|0;return e}Z(12664,55274,255,84789);B()}Z(12664,55274,323,84789);B()}Z(12664,55274,263,84789);B()}Z(12664,55274,315,84789);B()}Z(112520,53895,557,53220);B()}Z(151729,53895,501,2284);B()}function jV(a,b,c,d,e){var f=Q(0),g=0,h=Q(0),i=Q(0),j=0,k=Q(0),l=0,m=Q(0),n=Q(0),o=Q(0),p=Q(0),q=Q(0),r=0,s=Q(0),t=Q(0),u=Q(0),v=Q(0),w=0,x=Q(0),y=Q(0),z=0,A=Q(0),C=Q(0),D=Q(0),E=Q(0),F=Q(0),G=Q(0),K=Q(0),L=0,M=0,O=0,R=0,S=0,T=0,U=0;g=Ui-96|0;Ui=g;J[a+68>>2]=0;h=N[d+8>>2];f=N[b+8>>2];J[g+92>>2]=0;a:{v=Q(f+h);f=ZU(g+92|0,b,c,d,e);b:{if(v>2]=0;l=g+88|0;h=ZU(l,d,e,b,c);if(v>2];D=N[j+4>>2];n=N[j+8>>2];m=N[j+12>>2];x=N[e>>2];y=N[e+4>>2];p=N[e+8>>2];q=N[e+12>>2];r=J[l>>2];J[a+64>>2]=w;if((r|0)<0){break a}O=J[d+416>>2];if((r|0)>=(O|0)){break a}R=r<<3;e=0;z=J[c+416>>2];d:{if((z|0)<=0){break d}M=c+288|0;b=(d+288|0)+R|0;o=N[b>>2];f=N[b+4>>2];i=Q(Q(p*o)+Q(q*f));f=Q(Q(q*o)-Q(p*f));s=Q(Q(m*i)-Q(n*f));o=Q(Q(m*f)+Q(n*i));T=z&1;e:{if((z|0)==1){k=Q(34028234663852886e22);b=0;break e}U=z&2147483646;k=Q(34028234663852886e22);b=0;j=0;while(1){l=(b<<3)+M|0;f=Q(Q(o*N[l>>2])+Q(s*N[l+4>>2]));S=f>2])+Q(s*N[l+4>>2]));f=S?f:k;l=i>2])+Q(s*N[b+4>>2]))>2];f=N[b+4>>2];I[g+74>>1]=1;H[g+73|0]=e;H[g+72|0]=r;N[g+68>>2]=D+Q(Q(n*i)+Q(m*f));N[g+64>>2]=C+Q(Q(m*i)-Q(n*f));b=e+1|0;c=(b|0)<(z|0)?b:0;b=j+(c<<3)|0;i=N[b>>2];f=N[b+4>>2];I[g+86>>1]=1;H[g+85|0]=c;H[g+84|0]=r;N[g+80>>2]=D+Q(Q(n*i)+Q(m*f));N[g+76>>2]=C+Q(Q(m*i)-Q(n*f));b=r+1|0;e=(b|0)<(O|0)?b:0;b=d+160|0;c=(e<<3)+b|0;E=N[c>>2];b=b+R|0;F=N[b>>2];k=Q(E-F);G=N[c+4>>2];K=N[b+4>>2];t=Q(G-K);f=Q(Y(Q(Q(k*k)+Q(t*t))));if(!(f>2]=u;A=Q(Q(q*k)-Q(p*t));N[g+56>>2]=A;N[g+4>>2]=-u;s=Q(-A);N[g>>2]=s;b=g+32|0;o=Q(x+Q(Q(q*F)-Q(p*K)));i=Q(y+Q(Q(p*F)+Q(q*K)));if((vz(b,g- -64|0,g,Q(v-Q(Q(A*o)+Q(i*u))),r)|0)<2){break b}if((vz(g,b,g+56|0,Q(v+Q(Q(A*Q(x+Q(Q(q*E)-Q(p*G))))+Q(Q(y+Q(Q(p*E)+Q(q*G)))*u))),e)|0)<2){break b}x=Q(-n);N[a+60>>2]=Q(K+G)*Q(.5);N[a+56>>2]=Q(F+E)*Q(.5);N[a+52>>2]=-k;N[a+48>>2]=t;y=Q(-h);b=0;h=N[g>>2];f=N[g+4>>2];i=Q(Q(u*o)-Q(i*A));f:{if(!(Q(Q(Q(u*h)+Q(f*s))-i)<=v)){break f}N[a+20>>2]=y;h=Q(h-C);f=Q(f-D);N[a+4>>2]=Q(x*h)+Q(m*f);N[a>>2]=Q(m*h)+Q(n*f);c=J[g+8>>2];J[a+16>>2]=c;b=1;if(!L){break f}H[a+17|0]=c;H[a+19|0]=c>>>16;H[a+18|0]=c>>>24;H[a+16|0]=c>>>8}h=N[g+12>>2];f=N[g+16>>2];if(Q(Q(Q(u*h)+Q(f*s))-i)<=v){d=P(b,24)+a|0;N[d+20>>2]=y;h=Q(h-C);f=Q(f-D);N[d+4>>2]=Q(x*h)+Q(m*f);N[d>>2]=Q(m*h)+Q(n*f);c=J[g+20>>2];J[d+16>>2]=c;if(L){H[d+17|0]=c;H[d+19|0]=c>>>16;H[d+18|0]=c>>>24;H[d+16|0]=c>>>8}b=b+1|0}J[a+68>>2]=b}Ui=g+96|0;return}Z(11836,40352,151,68320);B()}function x3(a){a=a|0;var b=0,c=Q(0),d=Q(0),e=Q(0),f=Q(0),g=Q(0),h=Q(0),i=Q(0),j=Q(0),k=Q(0),l=Q(0),m=Q(0),n=Q(0),o=Q(0),p=Q(0),q=Q(0),r=Q(0),s=Q(0),t=Q(0),u=Q(0),v=Q(0),w=0,x=Q(0),y=Q(0),z=Q(0),A=Q(0),B=Q(0),C=Q(0),D=Q(0),E=Q(0),F=Q(0),G=Q(0),H=Q(0),I=Q(0),K=0,L=0;w=Ui-16|0;Ui=w;L=1;a:{if(kk(a,1)){K=ok(a,1);b=an(a,2);c=N[b+60>>2];h=N[b>>2];i=N[b+4>>2];j=N[b+8>>2];k=N[b+12>>2];l=N[b+16>>2];m=N[b+20>>2];n=N[b+24>>2];o=N[b+28>>2];p=N[b+32>>2];q=N[b+36>>2];r=N[b+40>>2];s=N[b+44>>2];t=N[b+48>>2];u=N[b+52>>2];v=N[b+56>>2];b=Sj(a,64);d=c;c=Q(K);N[b+60>>2]=d*c;N[b+56>>2]=v*c;N[b+52>>2]=u*c;N[b+48>>2]=t*c;N[b+44>>2]=s*c;N[b+40>>2]=r*c;N[b+36>>2]=q*c;N[b+32>>2]=p*c;N[b+28>>2]=o*c;N[b+24>>2]=n*c;N[b+20>>2]=m*c;N[b+16>>2]=l*c;N[b+12>>2]=k*c;N[b+8>>2]=j*c;N[b+4>>2]=i*c;N[b>>2]=h*c;rj(a,-1e4,106883);Mj(a,-2);break a}b=an(a,1);c=N[b+60>>2];h=N[b+56>>2];i=N[b+52>>2];j=N[b+48>>2];k=N[b+44>>2];l=N[b+40>>2];m=N[b+36>>2];n=N[b+32>>2];o=N[b+28>>2];p=N[b+24>>2];q=N[b+20>>2];r=N[b+16>>2];s=N[b+12>>2];t=N[b+8>>2];u=N[b+4>>2];v=N[b>>2];b=Kk(a,2,J[215723]);if(b){d=N[b+52>>2];e=N[b+48>>2];f=N[b+56>>2];g=N[b+60>>2];x=N[b+12>>2];y=N[b+8>>2];z=N[b>>2];A=N[b+4>>2];B=N[b+28>>2];C=N[b+24>>2];D=N[b+16>>2];E=N[b+20>>2];F=N[b+44>>2];G=N[b+40>>2];H=N[b+32>>2];I=N[b+36>>2];b=Sj(a,64);N[b+60>>2]=Q(c*g)+Q(Q(k*f)+Q(Q(s*e)+Q(o*d)));N[b+56>>2]=Q(h*g)+Q(Q(l*f)+Q(Q(t*e)+Q(p*d)));N[b+52>>2]=Q(i*g)+Q(Q(m*f)+Q(Q(u*e)+Q(q*d)));N[b+48>>2]=Q(j*g)+Q(Q(n*f)+Q(Q(v*e)+Q(r*d)));N[b+44>>2]=Q(c*F)+Q(Q(k*G)+Q(Q(s*H)+Q(o*I)));N[b+40>>2]=Q(h*F)+Q(Q(l*G)+Q(Q(t*H)+Q(p*I)));N[b+36>>2]=Q(i*F)+Q(Q(m*G)+Q(Q(u*H)+Q(q*I)));N[b+32>>2]=Q(j*F)+Q(Q(n*G)+Q(Q(v*H)+Q(r*I)));N[b+28>>2]=Q(c*B)+Q(Q(k*C)+Q(Q(s*D)+Q(o*E)));N[b+24>>2]=Q(h*B)+Q(Q(l*C)+Q(Q(t*D)+Q(p*E)));N[b+20>>2]=Q(i*B)+Q(Q(m*C)+Q(Q(u*D)+Q(q*E)));N[b+16>>2]=Q(j*B)+Q(Q(n*C)+Q(Q(v*D)+Q(r*E)));N[b+12>>2]=Q(c*x)+Q(Q(k*y)+Q(Q(s*z)+Q(o*A)));N[b+8>>2]=Q(h*x)+Q(Q(l*y)+Q(Q(t*z)+Q(p*A)));N[b+4>>2]=Q(i*x)+Q(Q(m*y)+Q(Q(u*z)+Q(q*A)));N[b>>2]=Q(j*x)+Q(Q(n*y)+Q(Q(v*z)+Q(r*A)));rj(a,-1e4,106883);Mj(a,-2);break a}b=Kk(a,2,J[215721]);if(b){d=N[b+4>>2];e=N[b>>2];f=N[b+8>>2];g=N[b+12>>2];b=Sj(a,16);N[b+12>>2]=Q(c*g)+Q(Q(k*f)+Q(Q(s*e)+Q(o*d)));N[b+8>>2]=Q(h*g)+Q(Q(l*f)+Q(Q(t*e)+Q(p*d)));N[b+4>>2]=Q(i*g)+Q(Q(m*f)+Q(Q(u*e)+Q(q*d)));N[b>>2]=Q(j*g)+Q(Q(n*f)+Q(Q(v*e)+Q(r*d)));rj(a,-1e4,106998);Mj(a,-2);break a}if(kk(a,2)){K=wj(a,2);b=Sj(a,64);d=c;c=Q(K);N[b+60>>2]=d*c;N[b+56>>2]=h*c;N[b+52>>2]=i*c;N[b+48>>2]=j*c;N[b+44>>2]=k*c;N[b+40>>2]=l*c;N[b+36>>2]=m*c;N[b+32>>2]=n*c;N[b+28>>2]=o*c;N[b+24>>2]=p*c;N[b+20>>2]=q*c;N[b+16>>2]=r*c;N[b+12>>2]=s*c;N[b+8>>2]=t*c;N[b+4>>2]=u*c;N[b>>2]=v*c;rj(a,-1e4,106883);Mj(a,-2);break a}J[w+12>>2]=106998;J[w+8>>2]=106883;J[w+4>>2]=106883;J[w>>2]=53139;L=fj(a,118536,w)}Ui=w+16|0;return L|0}function Uy(a,b){var c=0,d=0,e=0,f=0,g=0,h=0;f=a+b|0;c=J[a+4>>2];a:{b:{if(c&1){break b}if(!(c&2)){break a}c=J[a>>2];b=c+b|0;c:{d:{e:{a=a-c|0;if((a|0)!=J[248707]){d=J[a+12>>2];if(c>>>0<=255){e=J[a+8>>2];if((e|0)!=(d|0)){break e}J[248702]=J[248702]&oxa(-2,c>>>3|0);break b}g=J[a+24>>2];if((a|0)!=(d|0)){c=J[a+8>>2];J[c+12>>2]=d;J[d+8>>2]=c;break c}e=J[a+20>>2];if(e){c=a+20|0}else{e=J[a+16>>2];if(!e){break d}c=a+16|0}while(1){h=c;d=e;c=d+20|0;e=J[d+20>>2];if(e){continue}c=d+16|0;e=J[d+16>>2];if(e){continue}break}J[h>>2]=0;break c}c=J[f+4>>2];if((c&3)!=3){break b}J[248704]=b;J[f+4>>2]=c&-2;J[a+4>>2]=b|1;J[f>>2]=b;return}J[e+12>>2]=d;J[d+8>>2]=e;break b}d=0}if(!g){break b}c=J[a+28>>2];e=(c<<2)+995112|0;f:{if(J[e>>2]==(a|0)){J[e>>2]=d;if(d){break f}J[248703]=J[248703]&oxa(-2,c);break b}J[g+(J[g+16>>2]==(a|0)?16:20)>>2]=d;if(!d){break b}}J[d+24>>2]=g;c=J[a+16>>2];if(c){J[d+16>>2]=c;J[c+24>>2]=d}c=J[a+20>>2];if(!c){break b}J[d+20>>2]=c;J[c+24>>2]=d}g:{h:{i:{j:{c=J[f+4>>2];if(!(c&2)){if(J[248708]==(f|0)){J[248708]=a;b=J[248705]+b|0;J[248705]=b;J[a+4>>2]=b|1;if(J[248707]!=(a|0)){break a}J[248704]=0;J[248707]=0;return}if(J[248707]==(f|0)){J[248707]=a;b=J[248704]+b|0;J[248704]=b;J[a+4>>2]=b|1;J[a+b>>2]=b;return}b=(c&-8)+b|0;d=J[f+12>>2];if(c>>>0<=255){e=J[f+8>>2];if((e|0)==(d|0)){J[248702]=J[248702]&oxa(-2,c>>>3|0);break h}J[e+12>>2]=d;J[d+8>>2]=e;break h}g=J[f+24>>2];if((d|0)!=(f|0)){c=J[f+8>>2];J[c+12>>2]=d;J[d+8>>2]=c;break i}e=J[f+20>>2];if(e){c=f+20|0}else{e=J[f+16>>2];if(!e){break j}c=f+16|0}while(1){h=c;d=e;c=d+20|0;e=J[d+20>>2];if(e){continue}c=d+16|0;e=J[d+16>>2];if(e){continue}break}J[h>>2]=0;break i}J[f+4>>2]=c&-2;J[a+4>>2]=b|1;J[a+b>>2]=b;break g}d=0}if(!g){break h}c=J[f+28>>2];e=(c<<2)+995112|0;k:{if(J[e>>2]==(f|0)){J[e>>2]=d;if(d){break k}J[248703]=J[248703]&oxa(-2,c);break h}J[g+(J[g+16>>2]==(f|0)?16:20)>>2]=d;if(!d){break h}}J[d+24>>2]=g;c=J[f+16>>2];if(c){J[d+16>>2]=c;J[c+24>>2]=d}c=J[f+20>>2];if(!c){break h}J[d+20>>2]=c;J[c+24>>2]=d}J[a+4>>2]=b|1;J[a+b>>2]=b;if(J[248707]!=(a|0)){break g}J[248704]=b;return}if(b>>>0<=255){c=(b&-8)+994848|0;d=J[248702];b=1<<(b>>>3);l:{if(!(d&b)){J[248702]=b|d;b=c;break l}b=J[c+8>>2]}J[c+8>>2]=a;J[b+12>>2]=a;J[a+12>>2]=c;J[a+8>>2]=b;return}d=31;if(b>>>0<=16777215){c=S(b>>>8|0);d=((b>>>38-c&1)-(c<<1)|0)+62|0}J[a+28>>2]=d;J[a+16>>2]=0;J[a+20>>2]=0;c=(d<<2)+995112|0;m:{e=J[248703];h=1<>2]=a;J[a+24>>2]=c;break n}d=b<<((d|0)!=31?25-(d>>>1|0)|0:0);c=J[c>>2];while(1){e=c;if((J[c+4>>2]&-8)==(b|0)){break m}c=d>>>29|0;d=d<<1;h=e+(c&4)|0;c=J[h+16>>2];if(c){continue}break}J[h+16>>2]=a;J[a+24>>2]=e}J[a+12>>2]=a;J[a+8>>2]=a;return}b=J[e+8>>2];J[b+12>>2]=a;J[e+8>>2]=a;J[a+24>>2]=0;J[a+12>>2]=e;J[a+8>>2]=b}}function jua(a,b,c,d,e,f,g,h,i){a=a|0;b=b|0;c=c|0;d=d|0;e=e|0;f=f|0;g=g|0;h=h|0;i=i|0;var j=0,k=0,l=0,m=0,n=0,o=0,p=0,q=0,r=0,s=0;q=Ui-16|0;Ui=q;kz(a,q+10|0,b,0);kz(a,q+4|0,c,1);k=J[a+60>>2];r=L[a+64>>1];p=k+(r<<6)|0;I[a+64>>1]=L[p+48>>1];j=L[a+56>>1]+1|0;I[a+56>>1]=j;J[p+8>>2]=i;I[p+6>>1]=g;I[p+4>>1]=f;J[p>>2]=e;J[p+12>>2]=r;I[k+54>>1]=L[k+54>>1]+2;i=J[a+68>>2];k=j<<1;n=k&65534;j=n<<2;m=j|4;l=i+m|0;o=i;n=n-1|0;i=n<<2;o=o+i|0;o=L[o>>1]|L[o+2>>1]<<16;I[l>>1]=o;I[l+2>>1]=o>>>16;l=L[q+10>>1];o=J[a+68>>2];s=o+i|0;I[s+2>>1]=r;I[s>>1]=l;l=L[q+4>>1];o=j+o|0;I[o+2>>1]=r;I[o>>1]=l;I[p+54>>1]=k;I[p+48>>1]=n;l=J[a+60>>2];I[l+56>>1]=L[l+56>>1]+2;l=J[a+72>>2];o=l+m|0;l=i+l|0;l=L[l>>1]|L[l+2>>1]<<16;I[o>>1]=l;I[o+2>>1]=l>>>16;l=L[q+12>>1];o=J[a+72>>2];s=o+i|0;I[s+2>>1]=r;I[s>>1]=l;l=L[q+6>>1];o=j+o|0;I[o+2>>1]=r;I[o>>1]=l;I[p+56>>1]=k;I[p+50>>1]=n;l=J[a+60>>2];I[l+58>>1]=L[l+58>>1]+2;o=m;m=J[a+76>>2];l=o+m|0;m=i+m|0;m=L[m>>1]|L[m+2>>1]<<16;I[l>>1]=m;I[l+2>>1]=m>>>16;m=L[q+14>>1];o=i;i=J[a+76>>2];l=o+i|0;I[l+2>>1]=r;I[l>>1]=m;m=L[q+8>>1];i=i+j|0;I[i+2>>1]=r;I[i>>1]=m;I[p+58>>1]=k;I[p+52>>1]=n;n=J[a+68>>2];i=n+(L[p+48>>1]<<2)|0;k=i-4|0;j=L[k>>1];if(j>>>0>L[i>>1]){n=J[a+60>>2]+(L[i+2>>1]<<6)|0;while(1){j=(J[a+60>>2]+(L[i-2>>1]<<6)|0)+(j&1?54:48)|0;I[j>>1]=L[j>>1]+1;I[n+48>>1]=L[n+48>>1]-1;j=L[i>>1]|L[i+2>>1]<<16;m=L[k>>1]|L[k+2>>1]<<16;I[i>>1]=m;I[i+2>>1]=m>>>16;I[k>>1]=j;I[k+2>>1]=j>>>16;k=k-4|0;j=L[k>>1];i=i-4|0;if(j>>>0>L[i>>1]){continue}break}n=J[a+68>>2]}i=n+(L[p+54>>1]<<2)|0;k=i-4|0;j=L[k>>1];if(j>>>0>L[i>>1]){n=J[a+60>>2]+(L[i+2>>1]<<6)|0;while(1){j=(J[a+60>>2]+(L[i-2>>1]<<6)|0)+(j&1?54:48)|0;I[j>>1]=L[j>>1]+1;I[n+54>>1]=L[n+54>>1]-1;j=L[i>>1]|L[i+2>>1]<<16;m=L[k>>1]|L[k+2>>1]<<16;I[i>>1]=m;I[i+2>>1]=m>>>16;I[k>>1]=j;I[k+2>>1]=j>>>16;k=k-4|0;j=L[k>>1];i=i-4|0;if(j>>>0>L[i>>1]){continue}break}}n=J[a+72>>2];i=n+(L[p+50>>1]<<2)|0;k=i-4|0;j=L[k>>1];if(j>>>0>L[i>>1]){n=J[a+60>>2]+(L[i+2>>1]<<6)|0;while(1){j=(J[a+60>>2]+(L[i-2>>1]<<6)|0)+(j&1?54:48)|0;I[j+2>>1]=L[j+2>>1]+1;I[n+50>>1]=L[n+50>>1]-1;j=L[i>>1]|L[i+2>>1]<<16;m=L[k>>1]|L[k+2>>1]<<16;I[i>>1]=m;I[i+2>>1]=m>>>16;I[k>>1]=j;I[k+2>>1]=j>>>16;k=k-4|0;j=L[k>>1];i=i-4|0;if(j>>>0>L[i>>1]){continue}break}n=J[a+72>>2]}i=n+(L[p+56>>1]<<2)|0;k=i-4|0;j=L[k>>1];if(j>>>0>L[i>>1]){n=J[a+60>>2]+(L[i+2>>1]<<6)|0;while(1){j=(J[a+60>>2]+(L[i-2>>1]<<6)|0)+(j&1?54:48)|0;I[j+2>>1]=L[j+2>>1]+1;I[n+56>>1]=L[n+56>>1]-1;j=L[i>>1]|L[i+2>>1]<<16;m=L[k>>1]|L[k+2>>1]<<16;I[i>>1]=m;I[i+2>>1]=m>>>16;I[k>>1]=j;I[k+2>>1]=j>>>16;k=k-4|0;j=L[k>>1];i=i-4|0;if(j>>>0>L[i>>1]){continue}break}}iz(a,2,L[p+52>>1]);jz(a,2,L[p+58>>1],h);Ui=q+16|0;i=J[a+60>>2]+(r<<6)|0;a=J[a+108>>2];if(a){J[i+60>>2]=Zi[J[J[a>>2]+8>>2]](a,b,c,d,e,f,g,h,0)}return i|0}function ava(a,b){a=a|0;b=b|0;var c=Q(0),d=0,e=Q(0),f=Q(0),g=0,h=Q(0),i=Q(0),j=0,k=Q(0),l=Q(0),m=Q(0),n=Q(0),o=Q(0),p=Q(0),q=Q(0),r=Q(0),s=Q(0),t=Q(0),u=Q(0),v=Q(0),w=Q(0),x=Q(0),y=Q(0),z=Q(0),A=Q(0),B=Q(0),C=Q(0),D=Q(0),E=Q(0),F=0,G=0,H=Q(0),I=Q(0),L=0,M=Q(0),O=Q(0);g=J[a+48>>2];F=J[g+8>>2];J[a+144>>2]=F;j=J[a+52>>2];G=J[j+8>>2];J[a+148>>2]=G;H=N[g+32>>2];d=J[g+32>>2];p=N[g+28>>2];J[a+152>>2]=J[g+28>>2];J[a+156>>2]=d;I=N[j+32>>2];L=J[j+32>>2];n=N[j+28>>2];d=J[j+28>>2];J[a+160>>2]=d;J[a+164>>2]=L;x=N[g+120>>2];N[a+168>>2]=x;y=N[j+120>>2];N[a+172>>2]=y;v=N[g+128>>2];N[a+176>>2]=v;m=N[j+128>>2];N[a+180>>2]=m;g=J[b+28>>2];j=P(F,12);d=g+j|0;z=N[d>>2];A=N[d+4>>2];B=N[d+8>>2];d=g;g=P(G,12);d=d+g|0;C=N[d>>2];D=N[d+4>>2];E=N[d+8>>2];d=j;j=J[b+24>>2];d=d+j|0;h=N[d>>2];g=g+j|0;k=N[g>>2];r=N[d+4>>2];o=N[g+4>>2];l=N[g+8>>2];c=N[d+8>>2];M=N[a+68>>2];O=N[a+72>>2];i=N[a+76>>2];f=N[a+80>>2];q=N[a+84>>2];s=N[a+88>>2];e=Q(v+m);N[a+232>>2]=e==Q(0)?Q(1):e;e=Rj(c);c=Hj(c);w=Q(Q(q*c)+Q(e*s));N[a+188>>2]=w;q=Q(Q(e*q)-Q(c*s));N[a+184>>2]=q;t=N[a+92>>2];u=N[a+96>>2];s=Q(Q(c*t)+Q(e*u));N[a+196>>2]=s;t=Q(Q(e*t)-Q(c*u));N[a+192>>2]=t;u=Rj(l);n=Q(i-n);l=Hj(l);f=Q(f-I);i=Q(Q(u*n)-Q(l*f));f=Q(Q(l*n)+Q(u*f));l=Q(Q(i*w)-Q(f*q));N[a+212>>2]=l;n=Q(Q(i*s)-Q(f*t));N[a+204>>2]=n;u=Q(Q(k-h)+i);i=Q(M-p);h=Q(O-H);k=Q(Q(e*i)-Q(c*h));p=Q(u-k);e=Q(Q(c*i)+Q(e*h));f=Q(Q(Q(o-r)+f)-e);c=Q(k+p);i=Q(e+f);e=Q(Q(c*w)-Q(i*q));N[a+208>>2]=e;i=Q(Q(c*s)-Q(i*t));N[a+200>>2]=i;c=Q(v*e);r=Q(m*l);h=Q(c+r);N[a+244>>2]=h;N[a+236>>2]=h;h=Q(v*i);k=Q(m*n);o=Q(h+k);N[a+228>>2]=o;N[a+220>>2]=o;o=Q(Q(h*e)+Q(l*k));N[a+240>>2]=o;N[a+224>>2]=o;o=Q(r*l);r=Q(x+y);c=Q(o+Q(Q(c*e)+r));N[a+248>>2]=c;N[a+216>>2]=Q(k*n)+Q(Q(h*i)+r);N[a+252>>2]=c>Q(0)?Q(Q(1)/c):c;a:{if(K[a+136|0]==1){h=N[a+124>>2];k=N[a+120>>2];c=Q(h-k);if((c>Q(0)?c:Q(-c))>2]=3;break a}c=Q(Q(q*p)+Q(w*f));if(c<=k){if(J[a+140>>2]==1){break a}J[a+112>>2]=0;J[a+140>>2]=1;break a}if(c>=h){if(J[a+140>>2]==2){break a}J[a+112>>2]=0;J[a+140>>2]=2;break a}J[a+112>>2]=0;J[a+140>>2]=0;break a}J[a+112>>2]=0;J[a+140>>2]=0}if(!K[a+137|0]){J[a+116>>2]=0}b:{if(K[b+20|0]==1){f=N[b+8>>2];c=Q(f*N[a+104>>2]);N[a+104>>2]=c;p=Q(f*N[a+108>>2]);N[a+108>>2]=p;h=Q(f*N[a+112>>2]);N[a+112>>2]=h;f=Q(f*N[a+116>>2]);N[a+116>>2]=f;k=m;m=Q(f+h);E=Q(Q(k*Q(Q(m*l)+Q(Q(c*n)+p)))+E);B=Q(B-Q(v*Q(Q(m*e)+Q(Q(c*i)+p))));e=Q(Q(s*c)+Q(m*w));D=Q(D+Q(y*e));c=Q(Q(t*c)+Q(m*q));C=Q(C+Q(y*c));A=Q(A-Q(x*e));z=Q(z-Q(x*c));break b}J[a+104>>2]=0;J[a+108>>2]=0;J[a+112>>2]=0;J[a+116>>2]=0}d=J[b+28>>2]+P(J[a+144>>2],12)|0;N[d+4>>2]=A;N[d>>2]=z;d=J[b+28>>2];N[(d+P(J[a+144>>2],12)|0)+8>>2]=B;d=d+P(J[a+148>>2],12)|0;N[d+4>>2]=D;N[d>>2]=C;N[(J[b+28>>2]+P(J[a+148>>2],12)|0)+8>>2]=E}function iT(a,b,c,d,e,f,g){var h=Q(0),i=Q(0),j=0,k=0,l=Q(0),m=Q(0),n=Q(0),o=Q(0),p=Q(0),q=Q(0),r=Q(0),s=0,t=Q(0),u=0,v=Q(0),w=Q(0),x=Q(0),y=Q(0),z=Q(0),A=Q(0),B=0,C=0,D=0,E=0,F=0,G=0,H=0,I=0,K=0,M=0,O=0,P=0,R=0,S=0,T=0,U=0;k=Ui-32|0;Ui=k;x=N[c+4>>2];y=N[d+4>>2];z=N[c>>2];A=N[d>>2];n=N[a+28>>2];p=N[a+12>>2];v=N[d+8>>2];w=N[c+8>>2];h=Q((v>2]);h=h>2];h=Q(Q((h>n?n:h)-p)*l);a:{if(h=Q(0)){B=~~h>>>0;break a}B=0}o=N[a+24>>2];q=N[a+8>>2];h=Q((x>y?y:x)+N[e+4>>2]);h=h>2];h=Q(Q((h>o?o:h)-q)*t);b:{if(h=Q(0)){u=~~h>>>0;break b}u=0}m=N[a+20>>2];r=N[a+4>>2];h=Q((z>A?A:z)+N[e>>2]);h=h>2];h=Q(Q((h>m?m:h)-r)*i);c:{if(h=Q(0)){s=~~h>>>0;break c}s=0}h=Q((v>w?v:w)+N[f+8>>2]);h=hn?n:h)-p)*l)+Q(1));d:{if(h=Q(0)){j=~~h>>>0;break d}j=0}h=Q((x>2]);h=ho?o:h)-q)*t)+Q(1));e:{if(h=Q(0)){d=~~h>>>0;break e}d=0}h=Q((z>2]);h=hm?m:h)-r)*i)+Q(1));f:{if(h=Q(0)){C=~~h>>>0;break f}C=0}if((g|0)>0){i=Q(v-w);m=Q(A-z);t=Q(y-x);h=Q(Q(1)/Q(Y(Q(Q(i*i)+Q(Q(m*m)+Q(t*t))))));l=Q(i*h);n=Q(l*i);i=Q(m*h);h=Q(t*h);t=Q(n+Q(Q(i*m)+Q(t*h)));G=B&65534;H=u&65534;I=s&65534;K=j|1;M=d|1;O=C|1;d=J[a+136>>2];p=l==Q(0)?Q(0xde0b6b000000000):Q(Q(1)/l);s=p>2];u=0;g:{h:{i:{j:{if(L[d+6>>1]>>0){break j}B=L[d>>1];if(O>>>0>>0|L[d+10>>1]>>0){break j}s=L[d+4>>1];if(L[d+8>>1]>>0|s>>>0>K>>>0){break j}j=L[d+2>>1];if(j>>>0>M>>>0){break j}v=N[a+4>>2];w=N[a+36>>2];n=N[a+8>>2];o=N[a+40>>2];m=N[a+12>>2];l=N[a+44>>2];J[k+12>>2]=0;i=Q(m+Q(Q(s>>>0)/l));N[k+8>>2]=i;h=Q(n+Q(Q(j>>>0)/o));N[k+4>>2]=h;u=L[d+10>>1];s=L[d+8>>1];j=L[d+6>>1];J[k+28>>2]=0;N[k>>2]=Q(v+Q(Q(B>>>0)/w))-N[f>>2];N[k+4>>2]=h-N[f+4>>2];N[k+8>>2]=i-N[f+8>>2];N[k+16>>2]=Q(v+Q(Q(j>>>0)/w))-N[e>>2];N[k+20>>2]=Q(n+Q(Q(s>>>0)/o))-N[e+4>>2];N[k+24>>2]=Q(m+Q(Q(u>>>0)/l))-N[e+8>>2];k:{i=N[c>>2];l=Q(r*Q(N[U>>2]-i));h=N[c+4>>2];n=Q(q*Q(N[T>>2]-h));if(l>n){break k}h=Q(q*Q(N[R>>2]-h));o=Q(r*Q(N[C>>2]-i));if(h>o){break k}m=h>l?h:l;h=N[c+8>>2];l=Q(p*Q(N[S>>2]-h));if(m>l){break k}i=Q(p*Q(N[P>>2]-h));h=nh){break k}u=t>(i>m?i:m)&(h>l?l:h)>Q(0);if(!u|(F|0)<0){break j}j=J[d+12>>2];Zi[J[J[b>>2]+8>>2]](b,j>>21,j&2097151);break i}u=0}if((F|0)>=0){break i}if(!u){break h}}D=D+1|0;d=d+16|0;break g}j=J[d+12>>2];D=D-j|0;d=d-(j<<4)|0}E=E+1|0;if((g|0)>(D|0)){continue}break}}if(J[83482]<(E|0)){J[83482]=E}Ui=k+32|0}function JE(a,b,c,d,e,f){a=a|0;b=b|0;c=c|0;d=d|0;e=e|0;f=f|0;var g=0,h=0,i=Q(0),j=Q(0),k=Q(0),l=Q(0),m=Q(0),n=Q(0),o=0,p=Q(0),q=Q(0),r=Q(0),s=0,t=Q(0),u=Q(0),v=Q(0);g=Ui-272|0;Ui=g;Wy(J[a+4>>2]);t=N[b+56>>2];p=N[d+56>>2];u=N[b+48>>2];v=N[c+48>>2];k=N[d+48>>2];l=N[e+48>>2];m=N[b+52>>2];n=N[c+52>>2];q=N[d+52>>2];r=N[e+52>>2];i=N[c+56>>2];j=N[e+56>>2];H[g+252|0]=0;J[g+248>>2]=1566444395;J[g+212>>2]=246800;s=az(g+136|0,J[a+8>>2],J[a+12>>2],J[a+4>>2],0);J[g+128>>2]=1566444395;J[g+132>>2]=0;a=J[b+12>>2];J[g+8>>2]=J[b+8>>2];J[g+12>>2]=a;a=J[b+4>>2];J[g>>2]=J[b>>2];J[g+4>>2]=a;a=J[b+28>>2];J[g+24>>2]=J[b+24>>2];J[g+28>>2]=a;a=J[b+20>>2];J[g+16>>2]=J[b+16>>2];J[g+20>>2]=a;a=J[b+44>>2];J[g+40>>2]=J[b+40>>2];J[g+44>>2]=a;a=J[b+36>>2];J[g+32>>2]=J[b+32>>2];J[g+36>>2]=a;a=J[b+60>>2];J[g+56>>2]=J[b+56>>2];J[g+60>>2]=a;a=J[b+52>>2];J[g+48>>2]=J[b+48>>2];J[g+52>>2]=a;a=J[d+12>>2];J[g+72>>2]=J[d+8>>2];J[g+76>>2]=a;a=J[d+4>>2];J[g+64>>2]=J[d>>2];J[g+68>>2]=a;a=J[d+28>>2];J[g+88>>2]=J[d+24>>2];J[g+92>>2]=a;a=J[d+20>>2];J[g+80>>2]=J[d+16>>2];J[g+84>>2]=a;a=J[d+44>>2];J[g+104>>2]=J[d+40>>2];J[g+108>>2]=a;a=J[d+36>>2];J[g+96>>2]=J[d+32>>2];J[g+100>>2]=a;a=J[d+60>>2];J[g+120>>2]=J[d+56>>2];J[g+124>>2]=a;a=J[d+52>>2];J[g+112>>2]=J[d+48>>2];J[g+116>>2]=a;Rq(s,g,g+212|0,0);a=J[g+244>>2];J[g+264>>2]=J[g+240>>2];J[g+268>>2]=a;a=J[g+236>>2];J[g+256>>2]=J[g+232>>2];J[g+260>>2]=a;h=0;a:{if(K[g+252|0]!=1){break a}p=Q(Q(i-t)-Q(j-p));q=Q(Q(n-m)-Q(r-q));r=Q(Q(v-u)-Q(l-k));l=N[g+224>>2];m=N[g+220>>2];n=N[g+216>>2];k=N[g+248>>2];b:{c:{if(!(k>Q(.0010000000474974513))){i=Q(0);break c}o=g+232|0;a=0;j=Q(0);while(1){h=0;if((a|0)==32){break a}i=Q(j-Q(k/Q(Q(p*l)+Q(Q(r*n)+Q(q*m)))));h=0;if(j>=i){break a}h=0;if(i>Q(1)){break a}h=0;if(i>2]>>2]](f,i);j=Q(Q(1)-i);N[g+48>>2]=Q(j*N[b+48>>2])+Q(i*N[c+48>>2]);N[g+52>>2]=Q(j*N[b+52>>2])+Q(i*N[c+52>>2]);N[g+56>>2]=Q(j*N[b+56>>2])+Q(i*N[c+56>>2]);N[g+112>>2]=Q(j*N[d+48>>2])+Q(i*N[e+48>>2]);N[g+116>>2]=Q(j*N[d+52>>2])+Q(i*N[e+52>>2]);N[g+120>>2]=Q(j*N[d+56>>2])+Q(i*N[e+56>>2]);Rq(s,g,g+212|0,0);h=0;if(K[g+252|0]!=1){break a}k=N[g+248>>2];if(k>2]=i;k=N[g+228>>2];l=N[g+224>>2];m=N[g+220>>2];n=N[g+216>>2];break b}a=a+1|0;h=J[g+244>>2];J[g+264>>2]=J[g+240>>2];J[g+268>>2]=h;h=J[g+236>>2];J[g+256>>2]=J[g+232>>2];J[g+260>>2]=h;l=N[g+224>>2];m=N[g+220>>2];n=N[g+216>>2];j=i;if(k>Q(.0010000000474974513)){continue}break}}k=N[g+228>>2];h=0;if(Q(-N[f+172>>2])<=Q(Q(l*p)+Q(Q(n*r)+Q(q*m)))){break a}N[f+164>>2]=i;o=g+256|0}N[f+144>>2]=k;N[f+140>>2]=l;N[f+136>>2]=m;N[f+132>>2]=n;a=J[o+4>>2];J[f+148>>2]=J[o>>2];J[f+152>>2]=a;a=J[o+12>>2];J[f+156>>2]=J[o+8>>2];J[f+160>>2]=a;h=1}Ui=g+272|0;return h|0}function nz(a,b,c){var d=0,e=0,f=0,g=0,h=0,i=0,j=0,k=0,l=0,m=0,n=0,o=0,p=0,q=0,r=0,s=0,t=0,u=0,v=0,w=Q(0),x=0,y=0,z=0,A=0,C=0,D=0,E=0,F=0,G=Q(0);a:{b:{d=J[a+104>>2];if(d-18>>>0>=4294967287){d=K[b+3|0];e=K[b+7|0];g=d>>>0>>0?d:e;f=K[b+11|0];h=f>>>0>g>>>0?g:f;g=K[b+15|0];i=g>>>0>h>>>0?h:g;h=K[b+19|0];k=h>>>0>i>>>0?i:h;i=K[b+23|0];l=i>>>0>k>>>0?k:i;k=K[b+27|0];m=k>>>0>l>>>0?l:k;l=K[b+31|0];n=l>>>0>m>>>0?m:l;m=K[b+35|0];o=m>>>0>n>>>0?n:m;n=K[b+39|0];p=n>>>0>o>>>0?o:n;o=K[b+43|0];q=o>>>0>p>>>0?p:o;p=K[b+47|0];r=p>>>0>q>>>0?q:p;q=K[b+51|0];s=q>>>0>r>>>0?r:q;r=K[b+55|0];j=r>>>0>s>>>0?s:r;s=K[b+59|0];t=s>>>0>j>>>0?j:s;j=K[b+63|0];t=j>>>0>t>>>0?t:j;d=d>>>0>e>>>0?d:e;d=d>>>0>f>>>0?d:f;d=d>>>0>g>>>0?d:g;d=d>>>0>h>>>0?d:h;d=d>>>0>i>>>0?d:i;d=d>>>0>k>>>0?d:k;d=d>>>0>l>>>0?d:l;d=d>>>0>m>>>0?d:m;d=d>>>0>n>>>0?d:n;d=d>>>0>o>>>0?d:o;d=d>>>0>p>>>0?d:p;d=d>>>0>q>>>0?d:q;d=d>>>0>r>>>0?d:r;d=d>>>0>s>>>0?d:s;e=d>>>0>j>>>0?d:j;if((t|0)==(e|0)){I[c>>1]=t|7424;a=K[168768]|K[168769]<<8|(K[168770]<<16|K[168771]<<24);H[c+2|0]=a;H[c+3|0]=a>>>8;H[c+4|0]=a>>>16;H[c+5|0]=a>>>24;break a}d=J[a+132>>2];if(d>>>0<=15){break b}k=b+3|0;w=Q(t>>>0);G=Q(Q(e>>>0)-w);b=((d&15)<<3)+168784|0;e=H[b+3|0];f=H[b+7|0];w=Yq(Q(Q(G*Q(Q(0-e|0)/Q(f-e|0)))+w));c:{if(Q(R(w))>1]=a&255|d<<8;d=d>>>4|0;f=a+P(d,f)|0;l=(f>>>0<256?f:(f^-1)>>31)&255;f=a+P(d,H[b+6|0])|0;m=(f>>>0<256?f:(f^-1)>>31)&255;f=a+P(d,H[b+5|0])|0;n=(f>>>0<256?f:(f^-1)>>31)&255;f=a+P(d,H[b+4|0])|0;o=(f>>>0<256?f:(f^-1)>>31)&255;e=a+P(d,e)|0;p=(e>>>0<256?e:(e^-1)>>31)&255;e=a+P(d,H[b+2|0])|0;q=(e>>>0<256?e:(e^-1)>>31)&255;e=a+P(d,H[b+1|0])|0;r=(e>>>0<256?e:(e^-1)>>31)&255;a=a+P(d,H[b|0])|0;s=(a>>>0<256?a:(a^-1)>>31)&255;while(1){a=K[(k+((u&3)<<4)|0)+(u&-4)|0];j=s-a|0;b=j>>31;t=r-a|0;d=t>>31;z=q-a|0;e=z>>31;A=p-a|0;f=A>>31;C=o-a|0;g=C>>31;D=n-a|0;h=D>>31;E=m-a|0;i=E>>31;F=l-a|0;a=F>>31;b=(b^j)-b<<3;d=(d^t)-d<<3|1;b=b>>>0>>0?b:d;d=(e^z)-e<<3|2;b=b>>>0>>0?b:d;d=(f^A)-f<<3|3;b=b>>>0>>0?b:d;d=(g^C)-g<<3|4;b=b>>>0>>0?b:d;d=(h^D)-h<<3|5;b=b>>>0>>0?b:d;d=(i^E)-i<<3|6;b=b>>>0>>0?b:d;a=(a^F)-a<<3|7;a=(a>>>0>b>>>0?b:a)&7;d=ixa(u,y,-3,-1);d=d+45|0;b=d&31;if((d&63)>>>0>=32){d=a<>>32-b;a=a<>>8;H[c+5|0]=(v&65535)<<16|x>>>16;H[c+4|0]=(v&16777215)<<8|x>>>24;H[c+3|0]=v;H[c+2|0]=v>>>8;return}b=K[a+115|0];a=K[168768]|K[168769]<<8|(K[168770]<<16|K[168771]<<24);H[c+2|0]=a;H[c+3|0]=a>>>8;H[c+4|0]=a>>>16;H[c+5|0]=a>>>24;I[c>>1]=(d|0)!=8?7679:b|7424;break a}Z(110715,40075,14563,102838);B()}a=K[168772]|K[168773]<<8;H[c+6|0]=a;H[c+7|0]=a>>>8} +function HK(a,b){var c=0,d=0,e=0,f=0,g=0,h=0,i=0,j=0,k=0,l=0;g=Ui-32|0;Ui=g;c=nj(181728);J[c>>2]=0;J[c+4>>2]=0;J[c+40>>2]=0;J[c+44>>2]=1;J[c+36>>2]=-1;J[c+20>>2]=509;J[c+8>>2]=0;J[c+12>>2]=0;d=c+48|0;J[c+16>>2]=d;ij(d,255,2036);J[c+163924>>2]=0;J[c+163928>>2]=1;J[c+88100>>2]=0;J[c+32>>2]=c+26660;d=c+2084|0;J[c+28>>2]=d;J[c+24>>2]=d;J[c+163920>>2]=-1;J[c+163904>>2]=341;d=c+163932|0;J[c+163900>>2]=d;ij(d,255,1364);J[c+181692>>2]=0;J[c+181696>>2]=0;J[c+163916>>2]=c+181680;d=c+165296|0;J[c+163912>>2]=d;J[c+163908>>2]=d;d=c+181700|0;J[d>>2]=0;J[d+4>>2]=0;J[c+181712>>2]=0;J[c+181716>>2]=0;d=c+181720|0;J[d>>2]=0;J[d+4>>2]=0;k=c+161840|0;h=c+181712|0;f=c+181692|0;while(1){d=(e<<1)+k|0;I[d>>1]=1023-e;I[d+2>>1]=1022-e;I[d+4>>1]=1021-e;e=e+3|0;if((e|0)!=1023){continue}break}J[c+163896>>2]=a;J[c+163888>>2]=1023;d=ij(nj(92),0,92);J[d>>2]=a;J[c+88104>>2]=0;J[c+163892>>2]=d;I[c+181708>>1]=0;a:{b:{c:{if(!(H[c+181724|0]&1)){lj(J[b+4>>2]-J[b>>2]>>2,4,h,c+181720|0,c+181716|0);j=ij(c+88112|0,0,72);a=J[b>>2];if((a|0)==J[b+4>>2]){break c}a=YB(c,J[a>>2],j);I[c+88148>>1]=65535;J[c+88144>>2]=-1;J[c+88172>>2]=a;I[c+181708>>1]=L[c+181708>>1]+1;if(H[c+181704|0]&1){break a}lj(128,72,f,c+181700|0,c+181696|0);J[c+181688>>2]=0;I[c+181684>>1]=0;a=sj(16512);J[a+8>>2]=0;J[a>>2]=0;J[a+4>>2]=0;J[a+100>>2]=0;J[a+104>>2]=0;J[a+96>>2]=a+128;J[a+108>>2]=0;J[a+112>>2]=0;J[a+116>>2]=0;J[a+120>>2]=0;J[a+124>>2]=0;J[c+181680>>2]=a;if(!J[c+88172>>2]){J[c+88172>>2]=-17}e=J[b>>2];if(J[b+4>>2]-e>>>0>=5){a=1;while(1){d:{if(YB(c,J[(a<<2)+e>>2],g)){break d}e=L[c+88146>>1];if((e|0)!=65535){d=J[g+16>>2];h=J[g+20>>2];while(1){i=j+P(e<<16>>16,72)|0;if((d|0)==J[i+16>>2]&(h|0)==J[i+20>>2]){break d}e=L[i+36>>1];if((e|0)!=65535){continue}break}}d=J[c+163888>>2];if(!d){break d}d=d-1|0;J[c+163888>>2]=d;h=I[(d<<1)+k>>1];f=j+P(h,72)|0;d=f- -64|0;J[d>>2]=0;J[d+4>>2]=0;J[f+56>>2]=0;J[f+60>>2]=0;J[f+48>>2]=0;J[f+52>>2]=0;J[f+40>>2]=0;J[f+44>>2]=0;J[f+32>>2]=0;J[f+36>>2]=0;d=J[g+4>>2];J[f>>2]=J[g>>2];J[f+4>>2]=d;d=J[g+12>>2];J[f+8>>2]=J[g+8>>2];J[f+12>>2]=d;d=J[g+20>>2];J[f+16>>2]=J[g+16>>2];J[f+20>>2]=d;d=J[g+28>>2];J[f+24>>2]=J[g+24>>2];J[f+28>>2]=d;J[f+60>>2]=-17;I[f+34>>1]=65535;I[f+36>>1]=L[c+88146>>1];I[c+88146>>1]=h;l=L[c+88150>>1];i=l+1|0;I[c+88150>>1]=i;d=J[g+24>>2];h=J[g+28>>2];e=0;while(1){e:{e=j+P(e<<16>>16,72)|0;if(J[e+24>>2]==(d|0)&J[e+28>>2]==(h|0)){J[f+60>>2]=-16;if(!(i&65535)){break b}I[c+88150>>1]=l;break e}e=L[e+32>>1];if((e|0)!=65535){continue}}break}I[c+181708>>1]=L[c+181708>>1]+1}a=a+1|0;e=J[b>>2];if(a>>>0>2]-e>>2>>>0){continue}break}}Ui=g+32|0;return c}break a}Z(145396,53895,494,84789);B()}Z(111989,40201,363,31959);B()}Z(151729,53895,501,2284);B()}function aq(a,b){var c=0,d=0,e=0,f=0,g=0,h=0,i=0,j=0,k=0,l=0;f=Ui-96|0;Ui=f;c=J[b>>2];tt(b,c,c+J[b+4>>2]|0);c=J[b+12>>2];vt(b+12|0,c,c+(J[b+16>>2]<<2)|0);d=1;c=J[b+24>>2];ut(b+24|0,c,c+(J[b+28>>2]<<1)|0);g=J[a+16>>2];c=J[a+4>>2];k=J[a+12>>2];i=J[a+20>>2];a:{if(i>>>0>13){break a}b:{if(c>>>0>=k>>>0){h=c;break b}h=c+1|0;J[a+4>>2]=h;e=K[c|0]}j=i+8|0;J[a+20>>2]=j;g=e<>2]=g;if(i>>>0>5){c=h;i=j;break a}e=0;c:{if(h>>>0>=k>>>0){c=h;break c}c=h+1|0;J[a+4>>2]=c;e=K[h|0]}i=i|16;J[a+20>>2]=i;g=e<>2]=g}h=i-14|0;J[a+20>>2]=h;i=g>>>14|0;J[a+16>>2]=i;d:{j=g&16383;e:{if(!j){break e}H[f+77|0]=0;H[f+78|0]=0;H[f+79|0]=0;H[f+80|0]=0;H[f+81|0]=0;H[f+82|0]=0;H[f+83|0]=0;H[f+84|0]=0;J[f+72>>2]=0;J[f+76>>2]=0;J[f+64>>2]=0;J[f+68>>2]=0;f:{if(h>>>0>4){e=c;break f}d=0;g:{if(c>>>0>=k>>>0){e=c;break g}e=c+1|0;J[a+4>>2]=e;d=K[c|0]}i=d<>2]=g;c=i>>>5|0;J[a+16>>2]=c;d=0;l=i&31;if(l-22>>>0<4294967275){break e}while(1){h:{if(g>>>0>2){i=c;break h}i=0;if(e>>>0>>0){h=e+1|0;J[a+4>>2]=h;i=K[e|0];e=h}i=i<>2]=g;c=i>>>3|0;J[a+16>>2]=c;h=f- -64|0;H[h+K[d+169120|0]|0]=i&7;d=d+1|0;if((l|0)!=(d|0)){continue}break}d=0;J[f+56>>2]=0;J[f+48>>2]=0;J[f+52>>2]=0;J[f+40>>2]=0;J[f+44>>2]=0;J[f+32>>2]=0;J[f+36>>2]=0;J[f+24>>2]=0;J[f+28>>2]=0;i:{if(!zU(f+24|0,21,h)|!J[f+28>>2]){break i}g=0;J[f+20>>2]=0;J[f+12>>2]=0;J[f+16>>2]=0;An(f+12|0,j,(j|0)==1,1);h=J[f+12>>2];c=J[f+16>>2];ij(h+c|0,0,j-c|0);j:{k:{while(1){i=AU(a,f+24|0);l:{if((i|0)<=16){if(g>>>0>=j>>>0){break d}H[g+h|0]=i;g=g+1|0;break l}m:{switch(i-17|0){case 0:d=J[a+16>>2];c=J[a+20>>2];if(c>>>0<=2){e=J[a+4>>2];if(e>>>0>2]){J[a+4>>2]=e+1;e=K[e|0]}else{e=0}d=e<>2]=c-3;J[a+16>>2]=d>>>3;g=((d&7)+g|0)+3|0;break l;case 1:d=J[a+16>>2];c=J[a+20>>2];if(c>>>0<=6){e=J[a+4>>2];if(e>>>0>2]){J[a+4>>2]=e+1;e=K[e|0]}else{e=0}d=e<>2]=c-7;J[a+16>>2]=d>>>7;g=((d&127)+g|0)+11|0;break l;default:break m}}c=0;if(!g){break k}c=J[a+16>>2];d=J[a+4>>2];e=J[a+20>>2];n:{if((i|0)==19){if(e>>>0<=1){if(d>>>0>2]){J[a+4>>2]=d+1;d=K[d|0]}else{d=0}c=d<>2]=e-2;J[a+16>>2]=c>>>2;d=(c&3)+3|0;break n}if(e>>>0<=6){if(d>>>0>2]){J[a+4>>2]=d+1;d=K[d|0]}else{d=0}c=d<>2]=e-7;J[a+16>>2]=c>>>7;d=(c&127)+7|0}c=g-1|0;if(c>>>0>=j>>>0){break d}e=K[c+h|0];if(!e){d=0;break j}while(1){c=0;if((g|0)==(j|0)){break k}H[g+h|0]=e;g=g+1|0;d=d-1|0;if(d){continue}break}}if(g>>>0>>0){continue}break}c=0;if((g|0)!=(j|0)){break k}c=zU(b,j,h)}d=c;if(!h){break i}}cj(h)}a=J[f+48>>2];if(a){cj(a)}a=J[f+36>>2];if(a){cj(a)}a=J[f+24>>2];if(!a){break e}cj(a)}Ui=f+96|0;return d}Z(58877,54122,366,84789);B()}function Gl(a,b,c){var d=0,e=0,f=0,g=0,h=0,i=0,j=0;if(b){d=a^-1;if(c>>>0>=23){a:{if(!(b&3)){break a}d=J[(((K[b|0]^d)&255)<<2)+186016>>2]^d>>>8;a=c-1|0;e=b+1|0;if(!(!a|!(e&3))){d=J[(((K[b+1|0]^d)&255)<<2)+186016>>2]^d>>>8;a=c-2|0;e=b+2|0;if(!(!a|!(e&3))){d=J[(((K[b+2|0]^d)&255)<<2)+186016>>2]^d>>>8;a=c-3|0;e=b+3|0;if(!(!a|!(e&3))){d=J[(((K[b+3|0]^d)&255)<<2)+186016>>2]^d>>>8;b=b+4|0;c=c-4|0;break a}c=a;b=e;break a}c=a;b=e;break a}c=a;b=e}a=(c>>>0)/20|0;c=P(a,-20)+c|0;j=a-1|0;if(j){e=P(a,20)-20|0;a=b;while(1){f=J[a+16>>2]^f;f=J[(f>>>22&1020)+190112>>2]^(J[(f>>>14&1020)+189088>>2]^(J[(f>>>6&1020)+188064>>2]^J[((f&255)<<2)+187040>>2]));g=J[a+12>>2]^g;g=J[(g>>>22&1020)+190112>>2]^(J[(g>>>14&1020)+189088>>2]^(J[(g>>>6&1020)+188064>>2]^J[((g&255)<<2)+187040>>2]));h=J[a+8>>2]^h;h=J[(h>>>22&1020)+190112>>2]^(J[(h>>>14&1020)+189088>>2]^(J[(h>>>6&1020)+188064>>2]^J[((h&255)<<2)+187040>>2]));i=J[a+4>>2]^i;i=J[(i>>>22&1020)+190112>>2]^(J[(i>>>14&1020)+189088>>2]^(J[(i>>>6&1020)+188064>>2]^J[((i&255)<<2)+187040>>2]));d=J[a>>2]^d;d=J[(d>>>22&1020)+190112>>2]^(J[(d>>>14&1020)+189088>>2]^(J[(d>>>6&1020)+188064>>2]^J[((d&255)<<2)+187040>>2]));a=a+20|0;j=j-1|0;if(j){continue}break}b=b+e|0}a=J[b>>2]^d;a=a>>>8^J[((a&255)<<2)+186016>>2];a=a>>>8^J[((a&255)<<2)+186016>>2];a=a>>>8^J[((a&255)<<2)+186016>>2];a=J[b+4>>2]^(J[((a&255)<<2)+186016>>2]^i)^a>>>8;a=a>>>8^J[((a&255)<<2)+186016>>2];a=a>>>8^J[((a&255)<<2)+186016>>2];a=a>>>8^J[((a&255)<<2)+186016>>2];a=J[b+8>>2]^(J[((a&255)<<2)+186016>>2]^h)^a>>>8;a=a>>>8^J[((a&255)<<2)+186016>>2];a=a>>>8^J[((a&255)<<2)+186016>>2];a=a>>>8^J[((a&255)<<2)+186016>>2];a=J[b+12>>2]^(J[((a&255)<<2)+186016>>2]^g)^a>>>8;a=a>>>8^J[((a&255)<<2)+186016>>2];a=a>>>8^J[((a&255)<<2)+186016>>2];a=a>>>8^J[((a&255)<<2)+186016>>2];a=J[b+16>>2]^(J[((a&255)<<2)+186016>>2]^f)^a>>>8;a=a>>>8^J[((a&255)<<2)+186016>>2];a=a>>>8^J[((a&255)<<2)+186016>>2];a=a>>>8^J[((a&255)<<2)+186016>>2];d=a>>>8^J[((a&255)<<2)+186016>>2];b=b+20|0}if(c>>>0>7){while(1){a=J[(((K[b|0]^d)&255)<<2)+186016>>2]^d>>>8;a=a>>>8^J[(((a^K[b+1|0])&255)<<2)+186016>>2];a=a>>>8^J[(((a^K[b+2|0])&255)<<2)+186016>>2];a=a>>>8^J[(((a^K[b+3|0])&255)<<2)+186016>>2];a=a>>>8^J[(((a^K[b+4|0])&255)<<2)+186016>>2];a=a>>>8^J[(((a^K[b+5|0])&255)<<2)+186016>>2];a=a>>>8^J[(((a^K[b+6|0])&255)<<2)+186016>>2];d=a>>>8^J[(((a^K[b+7|0])&255)<<2)+186016>>2];b=b+8|0;c=c-8|0;if(c>>>0>7){continue}break}}b:{if(!c){break b}if(c&1){d=J[(((K[b|0]^d)&255)<<2)+186016>>2]^d>>>8;b=b+1|0;a=c-1|0}else{a=c}if((c|0)==1){break b}while(1){c=J[(((K[b|0]^d)&255)<<2)+186016>>2]^d>>>8;d=J[(((c^K[b+1|0])&255)<<2)+186016>>2]^c>>>8;b=b+2|0;a=a-2|0;if(a){continue}break}}a=d^-1}else{a=0}return a}function IP(a,b,c,d){var e=0,f=0,g=0,h=0,i=0,j=0,k=0,l=0,m=0,n=0,o=0,p=Q(0),q=0,r=0,s=0;j=Ui-32|0;Ui=j;k=J[c+8>>2];if(k){m=J[c+4>>2];while(1){e=m+(h<<4)|0;l=J[e>>2];f=bj(l);g=Yi;a:{if(pL(J[b>>2]+12|0,f,g,j+28|0)){_K(J[b>>2]+12|0,f,g,J[e+4>>2]);XK(J[b>>2]+12|0,f,g,J[e+8>>2],J[e+12>>2]);break a}J[j+20>>2]=l;J[j+16>>2]=a;dj(3,88458,119609,j+16|0)}h=h+1|0;if((k|0)!=(h|0)){continue}break}}b:{if(J[c+16>>2]){q=J[c+12>>2];f=0;k=0;while(1){g=P(k,48)+q|0;e=bj(J[g>>2]);m=0;l=0;r=J[b>>2];h=e;s=Yi;n=J[g+4>>2];n=(n|0)==2?1:(n|0)==1?2:3;i=J[g+8>>2];o=(i|0)==2?1:(i|0)==1?2:3;e=J[g+12>>2];if(e>>>0<=6){l=J[(e<<2)+160036>>2]}e=J[g+16>>2];if(e>>>0<=2){m=J[(e<<2)+160064>>2]}p=N[g+20>>2];e=eL(r,h,s,f,n,o,l,m,p)+f|0;i=J[g+28>>2];if(i){h=0;while(1){if(h>>>0>=i>>>0){break b}i=J[g+24>>2]+(h<<3)|0;e=eL(J[b>>2],J[i>>2],J[i+4>>2],e,n,o,l,m,p)+e|0;h=h+1|0;i=J[g+28>>2];if(h>>>0>>0){continue}break}}if((e|0)==(f|0)){J[j+4>>2]=J[g>>2];J[j>>2]=a;dj(3,88458,119708,j)}f=e;k=k+1|0;if(k>>>0>2]){continue}break}}a=b+40|0;c=b+4|0;e=J[d+40>>2];f=J[d+44>>2];c:{if(!(e|f)){break c}e=Bq(J[b>>2],e,f);if((e|0)==-1){break c}J[c+(e<<2)>>2]=J[d+4>>2];f=J[d+44>>2];e=a+(e<<3)|0;J[e>>2]=J[d+40>>2];J[e+4>>2]=f;J[b+104>>2]=J[b+104>>2]+1}e=J[d+48>>2];f=J[d+52>>2];d:{if(!(e|f)){break d}e=Bq(J[b>>2],e,f);if((e|0)==-1){break d}J[c+(e<<2)>>2]=J[d+8>>2];f=J[d+52>>2];e=a+(e<<3)|0;J[e>>2]=J[d+48>>2];J[e+4>>2]=f;J[b+104>>2]=J[b+104>>2]+1}e=J[d+56>>2];f=J[d+60>>2];e:{if(!(e|f)){break e}e=Bq(J[b>>2],e,f);if((e|0)==-1){break e}J[c+(e<<2)>>2]=J[d+12>>2];f=J[d+60>>2];e=a+(e<<3)|0;J[e>>2]=J[d+56>>2];J[e+4>>2]=f;J[b+104>>2]=J[b+104>>2]+1}e=J[d+64>>2];f=J[d+68>>2];f:{if(!(e|f)){break f}e=Bq(J[b>>2],e,f);if((e|0)==-1){break f}J[c+(e<<2)>>2]=J[d+16>>2];f=J[d+68>>2];e=a+(e<<3)|0;J[e>>2]=J[d+64>>2];J[e+4>>2]=f;J[b+104>>2]=J[b+104>>2]+1}e=J[d+72>>2];f=J[d+76>>2];g:{if(!(e|f)){break g}e=Bq(J[b>>2],e,f);if((e|0)==-1){break g}J[c+(e<<2)>>2]=J[d+20>>2];f=J[d+76>>2];e=a+(e<<3)|0;J[e>>2]=J[d+72>>2];J[e+4>>2]=f;J[b+104>>2]=J[b+104>>2]+1}e=J[d+80>>2];f=J[d+84>>2];h:{if(!(e|f)){break h}e=Bq(J[b>>2],e,f);if((e|0)==-1){break h}J[c+(e<<2)>>2]=J[d+24>>2];f=J[d+84>>2];e=a+(e<<3)|0;J[e>>2]=J[d+80>>2];J[e+4>>2]=f;J[b+104>>2]=J[b+104>>2]+1}e=J[d+88>>2];f=J[d+92>>2];i:{if(!(e|f)){break i}e=Bq(J[b>>2],e,f);if((e|0)==-1){break i}J[c+(e<<2)>>2]=J[d+28>>2];f=J[d+92>>2];e=a+(e<<3)|0;J[e>>2]=J[d+88>>2];J[e+4>>2]=f;J[b+104>>2]=J[b+104>>2]+1}e=J[d+96>>2];f=J[d+100>>2];j:{if(!(e|f)){break j}e=Bq(J[b>>2],e,f);if((e|0)==-1){break j}J[c+(e<<2)>>2]=J[d+32>>2];c=J[d+100>>2];a=a+(e<<3)|0;J[a>>2]=J[d+96>>2];J[a+4>>2]=c;J[b+104>>2]=J[b+104>>2]+1}Ui=j+32|0;return}Z(12664,55219,107,84789);B()}function Eha(a){a=a|0;var b=0,c=0,d=0,e=0,f=Q(0),g=0,h=0,i=0,j=0,k=Q(0),l=Q(0),m=Q(0),n=Q(0),o=Q(0),p=Q(0),q=Q(0),r=Q(0),s=0,t=0,u=Q(0),v=0,w=0,x=0,y=0,z=0,A=0;b=Ui-656|0;Ui=b;j=J[a+8>>2]-J[a+12>>2]>>4;e=pk(a);h=J[J[e+80>>2]+8>>2];J[b+96>>2]=0;J[b+100>>2]=0;J[b+88>>2]=0;J[b+92>>2]=0;J[b+80>>2]=0;J[b+84>>2]=0;J[b+72>>2]=0;J[b+76>>2]=0;Mn(a,80474,b+108|0,b+104|0,b+72|0);a:{b:{if((j|0)<2){break b}if(!kj(a,2)){break b}c=Pl(a,2);m=N[c>>2];n=N[c+4>>2];o=N[c+8>>2];N[b+56>>2]=o;N[b+52>>2]=n;N[b+48>>2]=m;break a}yn(b+144|0,e);m=N[b+144>>2];N[b+48>>2]=m;n=N[b+148>>2];N[b+52>>2]=n;o=N[b+152>>2];N[b+56>>2]=o}c:{d:{if((j|0)<3){break d}if(!kj(a,3)){break d}c=Is(a,3);p=N[c>>2];N[b+32>>2]=p;q=N[c+4>>2];N[b+36>>2]=q;r=N[c+8>>2];N[b+40>>2]=r;f=N[c+12>>2];break c}jt(b+144|0,e);p=N[b+144>>2];N[b+32>>2]=p;q=N[b+148>>2];N[b+36>>2]=q;r=N[b+152>>2];N[b+40>>2]=r;f=N[b+156>>2]}u=f;N[b+44>>2]=u;e:{f:{if((j|0)<=3){break f}if((kj(a,4)|0)==5){g=tR(a,4)}if((j|0)==4){break f}if(!kj(a,5)){break f}e=Gm(a,5);if(e){k=N[e>>2];N[b+16>>2]=k;l=N[e+4>>2];N[b+20>>2]=l;f=N[e+8>>2];N[b+24>>2]=f;break e}f=Q(wj(a,5));N[b+24>>2]=f;N[b+20>>2]=f;N[b+16>>2]=f;l=f;k=f;break e}$D(b+144|0,e);k=N[b+144>>2];N[b+16>>2]=k;l=N[b+148>>2];N[b+20>>2]=l;f=N[b+152>>2];N[b+24>>2]=f}g:{h:{i=gE(h);if((i|0)==-1){dj(4,88458,15954,0);break h}e=eE(i);c=Yi;v=c;i:{if(!bE(a)){J[b+208>>2]=i;J[b+176>>2]=e;J[b+180>>2]=c;N[b+200>>2]=f;N[b+196>>2]=l;N[b+192>>2]=k;N[b+172>>2]=u;N[b+168>>2]=r;N[b+164>>2]=q;N[b+160>>2]=p;N[b+152>>2]=o;N[b+148>>2]=n;N[b+144>>2]=m;d=80;if(g){d=J[g>>2];if(d>>>0>=433){J[b+4>>2]=432;J[b>>2]=d;fj(a,8444,b);break i}c=J[g>>2];if(c>>>0>432){Z(59664,39139,396,59359);B()}c=hj(b+224|0,g,c);J[c+8>>2]=J[c+8>>2]-g;J[c+12>>2]=J[c+12>>2]-g;J[c+16>>2]=J[c+16>>2]-g;J[c+20>>2]=J[c+20>>2]-g;J[c+24>>2]=J[c+24>>2]-g;J[c+28>>2]=J[c+28>>2]-g;J[c+32>>2]=J[c+32>>2]-g;d=d+80|0}J[b+136>>2]=0;J[b+140>>2]=0;J[b+128>>2]=0;J[b+132>>2]=0;J[b+120>>2]=0;J[b+124>>2]=0;J[b+112>>2]=0;J[b+116>>2]=0;if(!$l(a,b+112|0)){UD(i,h);fj(a,64025,0);break i}h=J[56720];Jk(b+112|0,b+72|0,J[h+8>>2],J[h+12>>2],0,0,h,b+144|0,d,0);break i}Bj(a);w=Lk(a,-1e4);x=J[b+108>>2];y=b+48|0;z=b+32|0;A=b+16|0;s=Ui-16|0;Ui=s;t=J[b+104>>2];d=J[t+4>>2];if(!d){d=J[t>>2]}c=J[d>>2];j:{if(c){break j}if(!wk(J[x>>2],J[d+4>>2],d)){c=J[d>>2];break j}J[s>>2]=J[d+4>>2];dj(4,88458,30197,s);c=0}d=c;c=J[t+4>>2];if(!c){c=J[t>>2]}c=dR(h,d,J[c+4>>2],e,v,g,y,z,A);k:{if(c){if(c){J[c+88>>2]=i}break k}UD(i,h)}Ui=s+16|0;Nj(a,-1e4,w);Ok(a);hk(a,-1e4,w);if(!c){break h}}Bk(a,e,v);break g}h=J[a+8>>2];J[h+8>>2]=0;J[a+8>>2]=h+16}cj(g);if((j+1|0)!=J[a+8>>2]-J[a+12>>2]>>4){Z(143334,36620,379,62013);B()}Ui=b+656|0;return 1}function Bm(a,b){var c=0,d=0,e=0,f=0,g=0,h=0,i=0,j=0,k=0,l=0,m=0,n=0,o=0;c=H[b|0];if(!c){return a}a=Hk(a,c);a:{if(!a){break a}if(!K[b+1|0]){return a}c=K[a+1|0];if(!c){break a}if(!K[b+2|0]){e=(c|0)!=0;b:{if(!c){break b}c=c|K[a|0]<<8;d=K[b+1|0]|K[b|0]<<8;if((c|0)==(d|0)){break b}b=a+1|0;while(1){a=b;g=K[a+1|0];e=(g|0)!=0;if(!g){break b}b=a+1|0;c=g|c<<8&65280;if((d|0)!=(c|0)){continue}break}}return e?a:0}d=K[a+2|0];if(!d){break a}if(!K[b+3|0]){c=a+2|0;h=(d|0)!=0;c:{d:{if(!d){break d}e=K[a+1|0]<<16|K[a|0]<<24|d<<8;b=K[b+1|0]<<16|K[b|0]<<24|K[b+2|0]<<8;if((e|0)==(b|0)){break d}while(1){a=c+1|0;d=K[c+1|0];h=(d|0)!=0;if(!d){break c}c=a;e=(d|e)<<8;if((b|0)!=(e|0)){continue}break}break c}a=c}return h?a-2|0:0}d=K[a+3|0];if(!d){break a}if(!K[b+4|0]){c=a+3|0;h=(d|0)!=0;e:{f:{if(!d){break f}e=d|(K[a+1|0]<<16|K[a|0]<<24|K[a+2|0]<<8);a=K[b|0]|K[b+1|0]<<8|(K[b+2|0]<<16|K[b+3|0]<<24);b=a<<24|(a&65280)<<8|(a>>>8&65280|a>>>24);if((e|0)==(b|0)){break f}while(1){a=c+1|0;d=K[c+1|0];h=(d|0)!=0;if(!d){break e}c=a;e=d|e<<8;if((b|0)!=(e|0)){continue}break}break e}a=c}return h?a-3|0:0}h=a;c=0;i=Ui-1056|0;Ui=i;a=i+1048|0;J[a>>2]=0;J[a+4>>2]=0;a=i+1040|0;J[a>>2]=0;J[a+4>>2]=0;J[i+1032>>2]=0;J[i+1036>>2]=0;J[i+1024>>2]=0;J[i+1028>>2]=0;k=b;g:{h:{i:{b=K[b|0];j:{if(!b){j=-1;a=1;break j}while(1){if(!K[f+h|0]){break g}f=f+1|0;J[((b&255)<<2)+i>>2]=f;a=(i+1024|0)+(b>>>3&28)|0;J[a>>2]=J[a>>2]|1<>>0>1){break i}}d=-1;c=1;break h}g=1;b=1;while(1){d=K[(k+j|0)+b|0];e=K[a+k|0];k:{if((d|0)==(e|0)){if((b|0)==(g|0)){c=c+g|0;b=1;break k}b=b+1|0;break k}if(d>>>0>e>>>0){g=a-j|0;c=a;b=1;break k}j=c;c=c+1|0;g=1;b=1}a=b+c|0;if(f>>>0>a>>>0){continue}break}c=1;d=-1;if(f>>>0<=1){a=g;break h}a=0;e=1;b=1;while(1){n=K[(d+k|0)+b|0];l=K[c+k|0];l:{if((n|0)==(l|0)){if((b|0)==(e|0)){a=a+e|0;b=1;break l}b=b+1|0;break l}if(n>>>0>>0){e=c-d|0;a=c;b=1;break l}d=a;a=a+1|0;e=1;b=1}c=a+b|0;if(f>>>0>c>>>0){continue}break}a=g;c=e}b=a;a=d+1>>>0>j+1>>>0;e=a?c:b;m=a?d:j;l=m+1|0;m:{if(Wj(k,k+e|0,l)){a=(m^-1)+f|0;e=(a>>>0>>0?m:a)+1|0;g=0;break m}g=f-e|0}n=f-1|0;o=f|63;d=0;a=h;while(1){n:{if(h-a>>>0>=f>>>0){break n}c=0;b=St(h,0,o);h=b?b:h+o|0;if(!b){break n}if(b-a>>>0>>0){break g}}b=f;c=K[a+n|0];o:{p:{if(!(J[(i+1024|0)+(c>>>3&28)>>2]>>>c&1)){break p}b=J[(c<<2)+i>>2];if((f|0)!=(b|0)){b=f-b|0;b=b>>>0>d>>>0?b:d;break p}q:{b=l;c=b>>>0>d>>>0?b:d;j=K[k+c|0];if(j){while(1){if(K[a+c|0]!=(j&255)){break q}c=c+1|0;j=K[k+c|0];if(j){continue}break}}while(1){if(b>>>0<=d>>>0){c=a;break g}b=b-1|0;if(K[k+b|0]==K[a+b|0]){continue}break}b=e;d=g;break o}b=c-m|0}d=0}a=a+b|0;continue}}Ui=i+1056|0;e=c}return e}function pD(a,b,c,d,e){var f=0,g=0,h=0,i=0,j=0,k=0,l=0,m=0,n=0,o=0,p=0,q=0,r=0,s=0,t=0;n=Ui-32|0;Ui=n;a:{b:{c:{if((b|0)!=65535){p=e+8|0;j=e+4|0;while(1){k=J[a+32>>2];q=(J[a+36>>2]-k|0)/672|0;l=b&65535;if(q>>>0<=l>>>0){break a}m=k+P(l,672)|0;o=J[m+476>>2];d:{if(!(o&1048576)){break d}t=L[m+648>>1];r=L[m+650>>1];b=J[219156];f=m;i=J[219157];e:{if((b|0)!=J[f+568>>2]|(i|0)!=J[f+572>>2]){break e}while(1){g=L[f+656>>1];if((g|0)==65535){break e}if(g>>>0>=q>>>0){break a}f=k+P(g,672)|0;if((b|0)==J[f+568>>2]&(i|0)==J[f+572>>2]){continue}break}}s=s+1|0;k=r|t<<16;g=L[f+576>>1];f:{h=L[m+666>>1];if((h|0)==65535){break f}b=J[d>>2];if(h>>>0>=(J[d+4>>2]-b|0)/24>>>0){break a}b=b+P(h,24)|0;if((l|0)!=L[b+20>>1]){break f}h=pD(a,L[m+658>>1],c+2&65535,d,e);i=g<<24;r=i|c+1&65535;f=g>>>8|0;g=f;J[b+8>>2]=r;J[b+12>>2]=f;b=J[e+4>>2];f=J[e+8>>2];if((b|0)==(f|0)){if(H[e+12|0]&1){break c}lj((b-J[e>>2]>>4)+16|0,16,e,p,j);f=J[e+8>>2];b=J[e+4>>2]}if((b|0)==(f|0)){break b}J[j>>2]=b+16;J[b+12>>2]=0;J[b+8>>2]=k;J[b>>2]=c&65535|i;J[b+4>>2]=g;if(!(K[m+479|0]&4)){c=h;break d}b=J[j>>2];f=J[p>>2];if((b|0)==(f|0)){if(H[e+12|0]&1){break c}lj((b-J[e>>2]>>4)+16|0,16,e,p,j);f=J[e+8>>2];b=J[e+4>>2]}if((b|0)==(f|0)){break b}J[j>>2]=b+16;J[b+12>>2]=0;J[b+8>>2]=k;J[b>>2]=r;J[b+4>>2]=g;c=h;break d}g:{if((o&240)==80){h=J[a+264>>2];b=J[a+260>>2];if((h|0)==(b|0)){break g}b=(h-b|0)/12|0;t=b>>>0<=1?1:b;h=g>>>8|0;r=g<<24;l=0;while(1){b=J[a+260>>2];if((J[a+264>>2]-b|0)/12>>>0<=l>>>0){break a}q=b+P(l,12)|0;h:{if(J[q+8>>2]!=(k|0)){break h}f=0;g=0;i:{i=J[q>>2];if(!i){break i}b=J[a+224>>2];g=J[b>>2];o=J[b+4>>2]-g>>2;b=i&65535;if(o>>>0>b>>>0){b=J[g+(b<<2)>>2];if(L[b+80>>1]!=(i>>>16|0)){dj(4,96107,66969,0);g=0;break i}g=(J[b+4>>2]-J[b>>2]|0)/304|0;break i}break a}if(!g){break h}while(1){AC(J[a+224>>2],J[q>>2],f,n+28|0);i=J[n+28>>2];if(i){b=J[j>>2];o=J[p>>2];if((b|0)==(o|0)){if(H[e+12|0]&1){break c}lj((b-J[e>>2]>>4)+16|0,16,e,p,j);o=J[e+8>>2];b=J[e+4>>2]}if((b|0)==(o|0)){break b}J[j>>2]=b+16;J[b+12>>2]=i;J[b+8>>2]=k;J[b>>2]=c&65535|r;J[b+4>>2]=h;c=c+1|0}f=f+1|0;if((g|0)!=(f|0)){continue}break}}l=l+1|0;if((t|0)!=(l|0)){continue}break}break g}b=J[j>>2];f=J[p>>2];if((b|0)==(f|0)){if(H[e+12|0]&1){break c}lj((b-J[e>>2]>>4)+16|0,16,e,p,j);f=J[e+8>>2];b=J[e+4>>2]}if((b|0)==(f|0)){break b}h=c;c=h+1|0;J[j>>2]=b+16;J[b+12>>2]=0;J[b+8>>2]=k;J[b>>2]=h&65535|g<<24;J[b+4>>2]=g>>>8}c=pD(a,L[m+658>>1],c&65535,d,e)}b=L[m+654>>1];if((b|0)!=65535){continue}break}}J[219028]=J[219028]+s;J[n+16>>2]=s;J[n+20>>2]=0;J[n+8>>2]=s;J[n+12>>2]=0;Ui=n+32|0;return c&65535}Z(151729,53895,501,2284);B()}Z(112520,53895,557,53220);B()}Z(145396,53895,487,84789);B()}function MV(a){var b=0,c=0,d=0,e=0,f=0,g=0,h=0,i=0;a:{b:{c:{d:{e:{f:{g:{h:{if(K[874164]!=(a|0)){g=J[218540];Tj(g);H[874164]=a;i:{if(a){a=J[218548];if((a|0)==J[218546]-J[218544]>>4){a=a+16384|0;Xx(874168,(P(a,5)>>>0)/7|0,a)}a=J[218556];if((a|0)==((J[218554]-J[218552]|0)/24|0)){a=a+16384|0;Wx(874200,(P(a,5)>>>0)/7|0,a)}ij(J[218550],255,J[218551]<<2);J[218555]=-1;J[218556]=0;J[218553]=J[218552];if(H[874244]&1){break h}lj(512,8,874232,874240,874236);a=J[218558];if(J[218560]-a>>>0<=4095){break g}J[218559]=a+4096;b=J[218563];if(b>>>0>=513){break f}e=J[218562];a=sj(2048);J[218562]=a;d=hj(a,e,b<<2);J[218563]=512;j:{if((b|0)==512){break j}a=b;f=0-a&7;if(f){while(1){J[d+(a<<2)>>2]=a;a=a+1|0;c=c+1|0;if((f|0)!=(c|0)){continue}break}}if(b-505>>>0<7){break j}while(1){J[d+(a<<2)>>2]=a;b=a+1|0;J[d+(b<<2)>>2]=b;b=a+2|0;J[d+(b<<2)>>2]=b;b=a+3|0;J[d+(b<<2)>>2]=b;b=a+4|0;J[d+(b<<2)>>2]=b;b=a+5|0;J[d+(b<<2)>>2]=b;b=a+6|0;J[d+(b<<2)>>2]=b;b=a+7|0;J[d+(b<<2)>>2]=b;a=a+8|0;if((a|0)!=512){continue}break}}cj(e);a=0;J[218564]=0;b=J[218562];k:{if(J[218563]){while(1){J[b+(a<<2)>>2]=a;a=a+1|0;c=J[218563];if(a>>>0>>0){continue}break k}}c=0;if(!b){break e}}a=J[218564];if(a>>>0>=c>>>0){break d}J[218564]=a+1;if(!J[b+(a<<2)>>2]){break i}Z(112633,41081,99,67759);B()}a=0;c=J[218543];if(c){while(1){a=J[J[218542]+(b<<2)>>2];if((a|0)!=-1){while(1){a=J[218544]+(a<<4)|0;cj(J[a+4>>2]);a=J[a+12>>2];if((a|0)!=-1){continue}break}c=J[218543]}b=b+1|0;if(c>>>0>b>>>0){continue}break}a=c<<2}ij(J[218542],255,a);J[218547]=-1;J[218548]=0;J[218545]=J[218544];c=J[218551];if(c){b=0;while(1){a=J[J[218550]+(b<<2)>>2];if((a|0)!=-1){while(1){a=J[218552]+P(a,24)|0;cj(J[a+8>>2]);a=J[a+16>>2];if((a|0)!=-1){continue}break}c=J[218551]}b=b+1|0;if(c>>>0>b>>>0){continue}break}d=c<<2}ij(J[218550],255,d);J[218555]=-1;J[218556]=0;J[218553]=J[218552];a=J[218564];if(!a){break i}e=J[218562];if(!e){break c}a=a-1|0;if(a>>>0>=M[218563]){break b}J[218564]=a;b=0;J[e+(a<<2)>>2]=0;a=J[218558];d=J[218559];c=J[218564];f=J[218563];if(c>>>0>>0){i=d-a>>3;while(1){h=J[e+(c<<2)>>2];if(h>>>0>=i>>>0){break a}J[(h<<3)+a>>2]=0;c=c+1|0;if((f|0)!=(c|0)){continue}break}}if((a|0)!=(d|0)){while(1){c=J[(b<<3)+a>>2];if(c){cj(c);d=J[218559];a=J[218558]}b=b+1|0;if(b>>>0>3>>>0){continue}break}}a=0;J[218564]=0;if(!J[218563]){break i}b=J[218562];while(1){J[b+(a<<2)>>2]=a;a=a+1|0;if(a>>>0=0){i=L[b+2>>1];g=i?4:3;e=i?7:138;m=a+2684|0;h=-1;while(1){n=l;j=i;l=l+1|0;i=L[((l<<2)+b|0)+2>>1];d=f+1|0;a:{if(!((j|0)!=(i|0)|(e|0)<=(d|0))){f=d;break a}b:{if((d|0)<(g|0)){g=(j<<2)+m|0;f=J[a+5820>>2];while(1){e=L[g+2>>1];h=L[g>>1];k=L[a+5816>>1]|h<>1]=k;c:{if((16-e|0)<(f|0)){f=J[a+20>>2];J[a+20>>2]=f+1;H[f+J[a+8>>2]|0]=k;f=J[a+20>>2];J[a+20>>2]=f+1;H[f+J[a+8>>2]|0]=K[a+5817|0];f=J[a+5820>>2];I[a+5816>>1]=h>>>16-f;f=(e+f|0)-16|0;break c}f=e+f|0}J[a+5820>>2]=f;d=d-1|0;if(d){continue}break}break b}e=J[a+5820>>2];d:{if(j){e:{if((h|0)==(j|0)){f=d;break e}d=(j<<2)+m|0;g=L[d+2>>1];h=L[d>>1];k=L[a+5816>>1]|h<>1]=k;d=a;f:{if((16-g|0)<(e|0)){e=J[a+20>>2];J[a+20>>2]=e+1;H[e+J[a+8>>2]|0]=k;e=J[a+20>>2];J[a+20>>2]=e+1;H[e+J[a+8>>2]|0]=K[a+5817|0];e=J[a+5820>>2];I[a+5816>>1]=h>>>16-e;e=(e+g|0)-16|0;break f}e=e+g|0}J[d+5820>>2]=e}h=L[a+2748>>1];d=L[a+5816>>1]|h<>1];g:{if((16-g|0)<(e|0)){I[a+5816>>1]=d;e=J[a+20>>2];J[a+20>>2]=e+1;H[e+J[a+8>>2]|0]=d;d=J[a+20>>2];J[a+20>>2]=d+1;H[d+J[a+8>>2]|0]=K[a+5817|0];d=J[a+5820>>2];e=(d+g|0)-16|0;d=h>>>16-d|0;break g}e=e+g|0}J[a+5820>>2]=e;f=f+65533|0;if((e|0)>=15){d=f<>1]=d;e=J[a+20>>2];J[a+20>>2]=e+1;H[e+J[a+8>>2]|0]=d;d=J[a+20>>2];J[a+20>>2]=d+1;H[d+J[a+8>>2]|0]=K[a+5817|0];d=f&65535;f=J[a+5820>>2];I[a+5816>>1]=d>>>16-f;f=f-14|0;break d}I[a+5816>>1]=f<>1];if((f|0)<=9){h=L[a+2752>>1];d=d|h<>1];h:{if((16-g|0)<(e|0)){I[a+5816>>1]=d;e=J[a+20>>2];J[a+20>>2]=e+1;H[e+J[a+8>>2]|0]=d;d=J[a+20>>2];J[a+20>>2]=d+1;H[d+J[a+8>>2]|0]=K[a+5817|0];d=J[a+5820>>2];e=(d+g|0)-16|0;d=h>>>16-d|0;break h}e=e+g|0}J[a+5820>>2]=e;f=f+65534|0;if((e|0)>=14){d=f<>1]=d;e=J[a+20>>2];J[a+20>>2]=e+1;H[e+J[a+8>>2]|0]=d;d=J[a+20>>2];J[a+20>>2]=d+1;H[d+J[a+8>>2]|0]=K[a+5817|0];d=f&65535;f=J[a+5820>>2];I[a+5816>>1]=d>>>16-f;f=f-13|0;break d}I[a+5816>>1]=f<>1];d=d|h<>1];i:{if((16-g|0)<(e|0)){I[a+5816>>1]=d;e=J[a+20>>2];J[a+20>>2]=e+1;H[e+J[a+8>>2]|0]=d;d=J[a+20>>2];J[a+20>>2]=d+1;H[d+J[a+8>>2]|0]=K[a+5817|0];d=J[a+5820>>2];e=(d+g|0)-16|0;d=h>>>16-d|0;break i}e=e+g|0}J[a+5820>>2]=e;f=f+65526|0;if((e|0)>=10){d=f<>1]=d;e=J[a+20>>2];J[a+20>>2]=e+1;H[e+J[a+8>>2]|0]=d;d=J[a+20>>2];J[a+20>>2]=d+1;H[d+J[a+8>>2]|0]=K[a+5817|0];d=f&65535;f=J[a+5820>>2];I[a+5816>>1]=d>>>16-f;f=f-9|0;break d}I[a+5816>>1]=f<>2]=f}f=0;j:{if(!i){e=138;g=3;break j}d=(j|0)==(i|0);e=d?6:7;g=d?3:4}h=j}if((c|0)!=(n|0)){continue}break}}}function Tra(a,b,c,d,e){a=a|0;b=b|0;c=c|0;d=d|0;e=e|0;var f=0,g=0,h=0,i=0,j=Q(0),k=Q(0),l=Q(0),m=Q(0),n=0,o=0,p=Q(0),q=Q(0),r=0,s=Q(0),t=Q(0),u=Q(0),v=Q(0);e=Ui-48|0;Ui=e;g=J[c+12>>2];J[e+24>>2]=J[c+8>>2];J[e+28>>2]=g;g=J[c+4>>2];J[e+16>>2]=J[c>>2];J[e+20>>2]=g;g=J[d+12>>2];J[e+40>>2]=J[d+8>>2];J[e+44>>2]=g;g=J[d+4>>2];J[e+32>>2]=J[d>>2];J[e+36>>2]=g;a:{if(J[b+60>>2]==2){bz(a+44|0,J[b+48>>2]);J[b+48>>2]=cz(a+4|0,e+16|0,b);g=1;break a}g=1;J[a+128>>2]=J[a+128>>2]+1;b:{h=J[b+48>>2];if(!(N[h>>2]<=N[e+32>>2])|!(N[h+16>>2]>=N[e+16>>2])|(!(N[h+4>>2]<=N[e+36>>2])|!(N[h+20>>2]>=N[e+20>>2]))){break b}if(!(N[h+8>>2]<=N[e+40>>2])|!(N[h+24>>2]>=N[e+24>>2])){break b}s=N[c+8>>2];t=N[c+4>>2];u=N[c>>2];k=N[b+16>>2];p=N[b+20>>2];q=N[b+24>>2];v=N[b+32>>2];l=N[b+36>>2];j=N[a+100>>2];m=N[b+40>>2];J[e+12>>2]=0;m=Q(j*Q(Q(m-q)*Q(.5)));N[e+8>>2]=m;l=Q(j*Q(Q(l-p)*Q(.5)));N[e+4>>2]=l;j=Q(j*Q(Q(v-k)*Q(.5)));N[e>>2]=j;if(k>u){N[e>>2]=-j}if(p>t){N[e+4>>2]=-l}if(q>s){N[e+8>>2]=-m}n=a+4|0;f=e+16|0;k=N[f>>2];c:{d:{if(!(k>=N[h>>2])){j=N[f+4>>2];break d}j=N[f+4>>2];if(!(j>=N[h+4>>2])|!(N[h+8>>2]<=N[f+8>>2])|(!(N[h+16>>2]>=N[f+16>>2])|!(N[h+20>>2]>=N[f+20>>2]))){break d}g=0;if(N[h+24>>2]>=N[f+24>>2]){break c}}N[f+4>>2]=j+Q(-.05000000074505806);N[f>>2]=k+Q(-.05000000074505806);N[f+8>>2]=N[f+8>>2]+Q(-.05000000074505806);N[f+16>>2]=N[f+16>>2]+Q(.05000000074505806);N[f+20>>2]=N[f+20>>2]+Q(.05000000074505806);N[f+24>>2]=N[f+24>>2]+Q(.05000000074505806);j=N[e>>2];g=((j>Q(0))<<4)+f|0;N[g>>2]=j+N[g>>2];j=N[e+4>>2];g=(j>Q(0)?20:4)+f|0;N[g>>2]=j+N[g>>2];j=N[e+8>>2];g=(j>Q(0)?24:8)+f|0;N[g>>2]=j+N[g>>2];g=ow(n,h);e:{if(!g){g=0;break e}o=J[n+8>>2];if((o|0)>=0){if(!o){break e}while(1){i=J[g+32>>2];if(!i){break e}g=i;r=r+1|0;if((o|0)!=(r|0)){continue}break}break e}g=J[n>>2]}i=J[f+4>>2];J[h>>2]=J[f>>2];J[h+4>>2]=i;i=J[f+28>>2];J[h+24>>2]=J[f+24>>2];J[h+28>>2]=i;i=J[f+20>>2];J[h+16>>2]=J[f+16>>2];J[h+20>>2]=i;i=J[f+12>>2];J[h+8>>2]=J[f+8>>2];J[h+12>>2]=i;Ww(n,g,h);g=1}if(!g){break a}J[a+132>>2]=J[a+132>>2]+1;break a}yT(a+4|0,h,e+16|0);J[a+132>>2]=J[a+132>>2]+1}i=J[b+52>>2];f=a+84|0;h=i?i+56|0:f+(J[b+60>>2]<<2)|0;i=J[b+56>>2];J[h>>2]=i;if(i){J[i+52>>2]=J[b+52>>2]}i=J[c+4>>2];J[b+16>>2]=J[c>>2];J[b+20>>2]=i;i=J[c+12>>2];J[b+24>>2]=J[c+8>>2];J[b+28>>2]=i;c=J[d+4>>2];J[b+32>>2]=J[d>>2];J[b+36>>2]=c;c=J[d+12>>2];J[b+40>>2]=J[d+8>>2];J[b+44>>2]=c;c=J[a+104>>2];J[b+60>>2]=c;J[b+52>>2]=0;d=f+(c<<2)|0;c=J[d>>2];J[b+56>>2]=c;if(c){J[c+52>>2]=b}J[d>>2]=b;f:{if(!g){break f}H[a+154|0]=1;if(K[a+153|0]){break f}J[e>>2]=244280;J[e+4>>2]=a;dz(a+44|0,J[a+44>>2],J[b+48>>2],e);dz(a+4|0,J[a+4>>2],J[b+48>>2],e)}Ui=e+48|0}function Yo(a,b,c){var d=0,e=0,f=0,g=0,h=0,i=0,j=0,k=0,l=0,m=0,n=0,o=0,p=0;a:{b:{c:{d:{e:{f:{g:{h:{i:{j:{k:{if(K[b|0]==62){d=J[a+8>>2]-16|0;h=J[d>>2];J[a+8>>2]=d;b=b+1|0;break k}d=J[c+96>>2];if(!d){break j}i=J[a+40>>2]+P(d,24)|0;h=J[J[i+4>>2]>>2]}if(!h){break j}n=c+36|0;l=i-12|0;o=i-20|0;m=i-24|0;p=c+4|0;d=b;j=1;while(1){l:{m:{n:{o:{p:{q:{r:{e=K[d|0];switch(e-76|0){case 0:case 26:break l;case 1:case 2:case 3:case 4:case 5:case 6:case 8:case 9:case 10:case 11:case 12:case 13:case 14:case 15:case 16:case 17:case 18:case 19:case 20:case 21:case 22:case 23:case 24:case 25:case 27:case 28:case 29:case 30:case 31:case 33:case 35:case 36:case 37:case 38:case 39:case 40:break m;case 34:break o;case 41:break p;case 32:break q;case 7:break r;default:break n}}s:{if(K[h+6|0]){J[c+28>>2]=-1;e=84800;J[c+16>>2]=84800;g=99232;f=-1;break s}e=J[J[h+16>>2]+32>>2]+16|0;J[c+16>>2]=e;f=J[J[h+16>>2]+60>>2];J[c+28>>2]=f;g=f?83135:47813;f=J[J[h+16>>2]+64>>2]}J[c+12>>2]=g;J[c+32>>2]=f;Xn(n,e,60);d=d+1|0;continue}e=-1;t:{if(!i){break t}f=J[i+4>>2];if(J[f+8>>2]!=6){break t}g=J[f>>2];if(K[g+6|0]){break t}u:{if(J[a+20>>2]!=(i|0)){k=J[i+12>>2];break u}k=J[a+24>>2];J[i+12>>2]=k;g=J[f>>2]}f=J[g+16>>2];g=k-J[f+12>>2]|0;if((g|0)<4){break t}e=J[f+20>>2];if(!e){J[c+20>>2]=0;d=d+1|0;continue}e=J[(e+g|0)-4>>2]}J[c+20>>2]=e;d=d+1|0;continue}J[c+24>>2]=K[h+7|0];d=d+1|0;continue}v:{if(!i){break v}e=J[i+4>>2];if(!(J[e+8>>2]!=6|K[J[e>>2]+6|0])&J[i+20>>2]>0){break v}f=J[o>>2];if(J[f+8>>2]!=6){break v}e=J[f>>2];if(K[e+6|0]){break v}e=J[J[e+16>>2]+12>>2];w:{if(J[a+20>>2]!=(m|0)){g=J[l>>2];f=e;break w}g=J[a+24>>2];J[l>>2]=g;f=J[J[J[f>>2]+16>>2]+12>>2]}e=J[(e+(g-f|0)|0)-4>>2];f=(e&63)-28|0;if(f>>>0>5|!(1<>>6&255,p);J[c+8>>2]=e;if(e){break l}}J[c+4>>2]=0;J[c+8>>2]=158859;d=d+1|0;continue}if(!e){break i}}j=0}d=d+1|0;continue}}J[c+28>>2]=-1;J[c+32>>2]=-1;J[c+20>>2]=-1;J[c+12>>2]=49745;J[c+4>>2]=158859;J[c+8>>2]=158859;J[c+16>>2]=137580;Xn(c+36|0,137580,60);h=0;J[c+24>>2]=0;if(!Hk(b,102)){j=1;d=1;break g}c=J[a+8>>2];J[c+8>>2]=0;j=1;d=1;break h}if(!Hk(b,102)){break f}c=J[a+8>>2];J[c+8>>2]=6;J[c>>2]=h;c=J[a+8>>2];d=0}if((J[a+28>>2]-c|0)<=16){Ml(a,1)}J[a+8>>2]=J[a+8>>2]+16}if(!Hk(b,76)){break a}if(d){break d}break e}if(!Hk(b,76)){break a}}if(!K[h+6|0]){break c}}d=J[a+8>>2];J[d+8>>2]=0;break b}d=0;b=pq(a,0,0);c=J[h+16>>2];if(J[c+48>>2]>0){c=J[c+20>>2];while(1){e=Sw(a,b,J[c+(d<<2)>>2]);J[e+8>>2]=1;J[e>>2]=1;d=d+1|0;if((d|0)>2]+48>>2]){continue}break}}c=J[a+8>>2];J[c+8>>2]=5;J[c>>2]=b;d=J[a+8>>2]}if((J[a+28>>2]-d|0)<=16){Ml(a,1);d=J[a+8>>2]}J[a+8>>2]=d+16}return j}function Ws(a,b){if(J[219160]!=(a|0)|J[219161]!=(b|0)){if(J[219164]==(a|0)&J[219165]==(b|0)){return 876656}if(J[219168]==(a|0)&J[219169]==(b|0)){return 876672}if(J[219172]==(a|0)&J[219173]==(b|0)){return 876688}if(J[219176]==(a|0)&J[219177]==(b|0)){return 876704}if(J[219180]==(a|0)&J[219181]==(b|0)){return 876720}if(J[219184]==(a|0)&J[219185]==(b|0)){return 876736}if(J[219188]==(a|0)&J[219189]==(b|0)){return 876752}if(J[219192]==(a|0)&J[219193]==(b|0)){return 876768}if(J[219196]==(a|0)&J[219197]==(b|0)){return 876784}if(J[219200]==(a|0)&J[219201]==(b|0)){return 876800}if(J[219204]==(a|0)&J[219205]==(b|0)){return 876816}if(J[219208]==(a|0)&J[219209]==(b|0)){return 876832}if(J[219212]==(a|0)&J[219213]==(b|0)){return 876848}if(J[219216]==(a|0)&J[219217]==(b|0)){return 876864}if(J[219220]==(a|0)&J[219221]==(b|0)){return 876880}if(J[219224]==(a|0)&J[219225]==(b|0)){return 876896}if(J[219228]==(a|0)&J[219229]==(b|0)){return 876912}if(J[219232]==(a|0)&J[219233]==(b|0)){return 876928}if(J[219236]==(a|0)&J[219237]==(b|0)){return 876944}if(J[219240]==(a|0)&J[219241]==(b|0)){return 876960}if(J[219244]==(a|0)&J[219245]==(b|0)){return 876976}if(J[219248]==(a|0)&J[219249]==(b|0)){return 876992}if(J[219252]==(a|0)&J[219253]==(b|0)){return 877008}if(J[219256]==(a|0)&J[219257]==(b|0)){return 877024}if(J[219260]==(a|0)&J[219261]==(b|0)){return 877040}if(J[219264]==(a|0)&J[219265]==(b|0)){return 877056}if(J[219268]==(a|0)&J[219269]==(b|0)){return 877072}if(J[219272]==(a|0)&J[219273]==(b|0)){return 877088}if(J[219276]==(a|0)&J[219277]==(b|0)){return 877104}if(J[219280]==(a|0)&J[219281]==(b|0)){return 877120}if(J[219284]==(a|0)&J[219285]==(b|0)){return 877136}if(J[219288]==(a|0)&J[219289]==(b|0)){return 877152}if(J[219292]==(a|0)&J[219293]==(b|0)){return 877168}if(J[219296]==(a|0)&J[219297]==(b|0)){return 877184}if(J[219300]==(a|0)&J[219301]==(b|0)){return 877200}if(J[219304]==(a|0)&J[219305]==(b|0)){return 877216}if(J[219308]==(a|0)&J[219309]==(b|0)){return 877232}if(J[219312]==(a|0)&J[219313]==(b|0)){return 877248}if(J[219316]==(a|0)&J[219317]==(b|0)){return 877264}if(J[219320]==(a|0)&J[219321]==(b|0)){return 877280}if(J[219324]==(a|0)&J[219325]==(b|0)){return 877296}if(J[219328]==(a|0)&J[219329]==(b|0)){return 877312}if(J[219332]==(a|0)&J[219333]==(b|0)){return 877328}if(J[219336]==(a|0)&J[219337]==(b|0)){return 877344}if(J[219340]==(a|0)&J[219341]==(b|0)){return 877360}if(J[219344]==(a|0)&J[219345]==(b|0)){return 877376}if(J[219348]==(a|0)&J[219349]==(b|0)){return 877392}a=(a|0)==J[219352]&(b|0)==J[219353]?877408:0}else{a=876640}return a}function vR(a,b,c){var d=0,e=0,f=0,g=0,h=0,i=0,j=0,k=0,l=0;g=Ui-160|0;Ui=g;h=J[a+44>>2];f=ij(g+88|0,0,72);a:{b:{c:{d:{e:{f:{g:{h:{i:{i=J[h+64>>2];if(i){a=0;while(1){if(M[h+64>>2]<=a>>>0){break i}d=J[h+60>>2]+(a<<5)|0;e=Br(b,J[d+8>>2],J[d+12>>2],f);if(!(e|!J[f>>2])){c=36031;break b}if(e){break a}xj(c,J[d>>2]);l=O[f+8>>3];e=J[c+8>>2];J[e+8>>2]=3;O[e>>3]=l;J[c+8>>2]=J[c+8>>2]+16;Kj(c,-3);a=a+1|0;if((i|0)!=(a|0)){continue}break}}i=J[h+72>>2];if(i){a=0;while(1){if(M[h+72>>2]<=a>>>0){break h}d=J[h+68>>2]+(a<<5)|0;e=Br(b,J[d+8>>2],J[d+12>>2],f);if(!(e|J[f>>2]==1)){c=53420;break b}if(e){break a}xj(c,J[d>>2]);Bk(c,J[f+8>>2],J[f+12>>2]);Kj(c,-3);a=a+1|0;if((i|0)!=(a|0)){continue}break}}j=J[h+80>>2];if(j){i=f+8|0;a=0;while(1){k=hj(f,ij(g+16|0,0,72),72);if(M[h+80>>2]<=a>>>0){break g}d=J[h+76>>2]+(a<<5)|0;e=Br(b,J[d+8>>2],J[d+12>>2],k);if(!(e|J[k>>2]==2)){c=49398;break b}if(e){break a}xj(c,J[d>>2]);wm(c,i);Kj(c,-3);a=a+1|0;if((j|0)!=(a|0)){continue}break}}i=J[h+88>>2];if(i){a=0;while(1){if(M[h+88>>2]<=a>>>0){break f}d=J[h+84>>2]+(a<<5)|0;e=Br(b,J[d+8>>2],J[d+12>>2],f);if(!(e|J[f>>2]==3)){c=108924;break b}if(e){break a}xj(c,J[d>>2]);d=J[f+8>>2];e=J[f+12>>2];N[g+24>>2]=N[f+16>>2];J[g+16>>2]=d;J[g+20>>2]=e;cl(c,g+16|0);Kj(c,-3);a=a+1|0;if((i|0)!=(a|0)){continue}break}}j=J[h+96>>2];if(j){a=0;while(1){if(M[h+96>>2]<=a>>>0){break e}d=J[h+92>>2]+(a<<5)|0;e=Br(b,J[d+8>>2],J[d+12>>2],f);if(!(e|J[f>>2]==4)){c=106992;break b}if(e){break a}xj(c,J[d>>2]);i=J[f+8>>2];d=J[f+12>>2];e=J[f+20>>2];J[g+24>>2]=J[f+16>>2];J[g+28>>2]=e;J[g+16>>2]=i;J[g+20>>2]=d;yo(c,g+16|0);Kj(c,-3);a=a+1|0;if((j|0)!=(a|0)){continue}break}}j=J[h+104>>2];if(j){a=0;while(1){if(M[h+104>>2]<=a>>>0){break d}d=J[h+100>>2]+(a<<5)|0;e=Br(b,J[d+8>>2],J[d+12>>2],f);if(!(e|J[f>>2]==5)){c=16769;break b}if(e){break a}xj(c,J[d>>2]);i=J[f+8>>2];d=J[f+12>>2];e=J[f+20>>2];J[g+24>>2]=J[f+16>>2];J[g+28>>2]=e;J[g+16>>2]=i;J[g+20>>2]=d;tq(c,g+16|0);Kj(c,-3);a=a+1|0;if((j|0)!=(a|0)){continue}break}}i=J[h+112>>2];if(!i){e=0;break a}a=0;while(1){if(M[h+112>>2]<=a>>>0){break c}d=J[h+108>>2]+(a<<5)|0;e=Br(b,J[d+8>>2],J[d+12>>2],f);if(!(e|J[f>>2]==6)){c=48314;break b}if(e){break a}xj(c,J[d>>2]);d=K[f+8|0];e=J[c+8>>2];J[e+8>>2]=1;J[e>>2]=(d|0)!=0;J[c+8>>2]=J[c+8>>2]+16;Kj(c,-3);e=0;a=a+1|0;if((i|0)!=(a|0)){continue}break}break a}Z(12664,54938,53,84789);B()}Z(12664,54938,61,84789);B()}Z(12664,54938,69,84789);B()}Z(12664,54938,77,84789);B()}Z(12664,54938,85,84789);B()}Z(12664,54938,93,84789);B()}Z(12664,54938,101,84789);B()}a=J[d>>2];J[g+4>>2]=c;J[g>>2]=a;dj(4,88293,134543,g);e=-4}Ui=g+160|0;return e}function Z8(a){a=a|0;var b=0,c=0,d=0,e=0,f=0,g=0,h=0,i=0,j=0,k=0,l=0,m=0,n=0,o=0,p=0,q=0,r=0,s=0,t=0,u=0,v=0,w=0,x=Q(0),y=0;o=Ui-16|0;Ui=o;b=1;r=J[a+8>>2]-J[a+12>>2]>>4;l=mk(a,1);m=Yi;e=Ej(a,2);k=Ej(a,3);c=Aj(a,4,0);Oj(a,5,4);d=Ij(a,5,o+12|0);Bj(a);h=qj(a,-1,J[219396],139183);gj(a,-2);if((r|0)>=6){Oj(a,6,1);b=!ck(a,6)}a:{if(!jj(c,82806)){break a}if(!jj(c,84155)){p=1;break a}if(!(K[c+1|0]|K[c|0]!=108)){p=2;break a}J[o>>2]=c;fj(a,146753,o)}f=b;b=d;g=Ui+-64|0;Ui=g;n=J[o+12>>2];d=P(P(e,k),p>>>0<=3?J[(p<<2)+196300>>2]:0);b:{if((n|0)!=(d|0)){J[g+20>>2]=n;J[g+16>>2]=d;dj(4,93318,77454,g+16|0);f=-7;break b}s=h+160|0;d=J[h+164>>2];c:{if(!d){break c}c=J[J[s>>2]+(mxa(l,m,d)<<2)>>2];if((c|0)==-1){break c}i=J[h+168>>2];while(1){d=i+P(c,40)|0;if(J[d>>2]==(l|0)&J[d+4>>2]==(m|0)){f=-6;break b}c=J[d+32>>2];if((c|0)!=-1){continue}break}}d=sj(n);d:{if(f){c=e;e:{f:{switch(p|0){case 0:c=P(e,3);break e;case 1:break f;default:break e}}c=e<<2}if((P(c,k)|0)!=(n|0)){dj(4,93318,119537,0);cj(d);f=-9;break b}if(!k){break d}t=k&3;i=0-c|0;f=b+n|0;g:{if(k>>>0<4){b=d;break g}y=k&-4;b=d;while(1){u=f+i|0;v=u+i|0;w=v+i|0;f=w+i|0;b=hj(hj(hj(hj(b,u,c)+c|0,v,c)+c|0,w,c)+c|0,f,c)+c|0;j=j+4|0;if((y|0)!=(j|0)){continue}break}}if(!t){break d}j=0;while(1){f=f+i|0;b=hj(b,f,c)+c|0;j=j+1|0;if((t|0)!=(j|0)){continue}break}break d}hj(d,b,n)}if(!d){f=-9;break b}i=Zi[J[h+444>>2]](h,l,m,e,k,p,d)|0;j=Yi;cj(d);q=+(n>>>0)*.0009765625*.0009765625;h:{if(q<4294967296&q>=0){b=~~q>>>0;break h}b=0}x=Q(b>>>0);N[g+32>>2]=x;N[219138]=N[219138]+x;b=J[g+36>>2];J[g+8>>2]=J[g+32>>2];J[g+12>>2]=b;if(J[h+184>>2]==((J[h+176>>2]-J[h+168>>2]|0)/40|0)){f=-4;break b}J[g+52>>2]=p;J[g+48>>2]=1;J[g+40>>2]=i;J[g+44>>2]=j;J[g+56>>2]=e&65535|k<<16;uN(s,l,m,g+40|0);b=J[h+36>>2];d=J[h+32>>2];if((b|0)==(d|0)){f=0;break b}b=(b-d|0)/672|0;e=b>>>0<=1?1:b;h=e&1;f=0;c=0;if(b>>>0>=2){k=e&-2;b=0;while(1){e=d+P(c,672)|0;if(J[e+488>>2]==(l|0)&J[e+492>>2]==(m|0)){J[e+504>>2]=1;J[e+496>>2]=i;J[e+500>>2]=j}e=d+P(c|1,672)|0;if(J[e+488>>2]==(l|0)&J[e+492>>2]==(m|0)){J[e+504>>2]=1;J[e+496>>2]=i;J[e+500>>2]=j}c=c+2|0;b=b+2|0;if((k|0)!=(b|0)){continue}break}}if(!h){break b}b=d+P(c,672)|0;if(J[b+488>>2]!=(l|0)|(m|0)!=J[b+492>>2]){break b}J[b+504>>2]=1;J[b+496>>2]=i;J[b+500>>2]=j}Ui=g- -64|0;i:{if(!f){b=J[a+8>>2];J[b+8>>2]=1;J[b>>2]=1;J[a+8>>2]=J[a+8>>2]+16;b=J[a+8>>2];J[b+8>>2]=0;J[a+8>>2]=b+16;break i}b=J[a+8>>2];J[b+8>>2]=1;J[b>>2]=0;J[a+8>>2]=J[a+8>>2]+16;b=J[a+8>>2];J[b+8>>2]=3;O[b>>3]=f|0;J[a+8>>2]=J[a+8>>2]+16}if((r+2|0)!=J[a+8>>2]-J[a+12>>2]>>4){Z(143309,37682,2148,62936);B()}Ui=o+16|0;return 2}function PB(a,b,c,d,e){var f=Q(0),g=0,h=Q(0),i=Q(0),j=Q(0),k=0,l=Q(0),m=Q(0),n=Q(0),o=Q(0),p=Q(0),q=Q(0),r=Q(0),s=Q(0),t=Q(0),u=0,v=Q(0),w=0,x=0,y=0,z=0,A=0,C=Q(0),D=Q(0),E=0,F=0,G=0,H=0,I=0;a:{g=J[b>>2];b:{if(!g){break b}f=N[g+8>>2];u=J[b+24>>2]==3;h=u?Q(f+f):f;f=N[b+16>>2];f=K[b+28|0]&2?Q(h-f):f;f=Q(N[g+12>>2]*(u?f>Q(h*Q(.5))?Q(h-f):f:f));c:{if(f=Q(0)){b=~~f>>>0;break c}b=0}x=J[g+20>>2];if(!x){break b}C=Q(Q(1)-e);m=Q(f-Q(b>>>0));D=Q(Q(1)-m);z=P(b,12);E=(d-c|0)/176|0;F=J[g+16>>2];y=J[a+72>>2];u=J[y+4>>2];d=0;w=b<<2;G=(w|1)<<2;H=(w|2)<<2;I=(w|3)<<2;while(1){if((d|0)==(x|0)){break a}d:{if(!u){break d}k=(d<<5)+F|0;a=J[k>>2];A=J[k+4>>2];b=J[J[y>>2]+(mxa(a,A,u)<<2)>>2];if((b|0)==-1){break d}g=J[y+8>>2];while(1){b=g+(b<<4)|0;if(J[b>>2]!=(a|0)|J[b+4>>2]!=(A|0)){b=J[b+12>>2];if((b|0)!=-1){continue}break d}break}a=J[b+8>>2];if(a>>>0>=E>>>0){break d}g=P(a,176)+c|0;e:{f:{g:{switch(J[k+12>>2]){case 3:a=J[k+8>>2];h=N[a+8>>2];i=N[a>>2];j=N[a+4>>2];break f;case 0:break e;default:break g}}a=J[k+8>>2]+z|0;f=N[a+8>>2];h=Q(f+Q(m*Q(N[a+20>>2]-f)));f=N[a>>2];i=Q(f+Q(m*Q(N[a+12>>2]-f)));f=N[a+4>>2];j=Q(f+Q(m*Q(N[a+16>>2]-f)))}f=N[g+24>>2];N[g+24>>2]=f+Q(e*Q(h-f));f=N[g+20>>2];N[g+20>>2]=f+Q(e*Q(j-f));f=N[g+16>>2];N[g+16>>2]=f+Q(e*Q(i-f))}h:{i:{j:{switch(J[k+20>>2]){case 4:a=J[k+16>>2];n=N[a+12>>2];o=N[a+8>>2];p=N[a+4>>2];j=N[a>>2];break i;case 0:break h;default:break j}}a=J[k+16>>2];n=N[a+I>>2];b=a+(w<<2)|0;r=N[b+28>>2];o=N[a+H>>2];t=N[b+24>>2];p=N[a+G>>2];v=N[b+20>>2];l=N[b>>2];j=N[b+16>>2];i=Q(Q(n*r)+Q(Q(o*t)+Q(Q(p*v)+Q(l*j))));if(i>2];q=N[g+8>>2];s=N[g+4>>2];r=N[g>>2];i=Q(Q(l*n)+Q(Q(q*o)+Q(Q(s*p)+Q(j*r))));if(i>2]=Q(n*h)+Q(l*f);N[g+8>>2]=Q(o*h)+Q(q*f);N[g+4>>2]=Q(p*h)+Q(s*f);N[g>>2]=Q(j*h)+Q(r*f)}k:{l:{switch(J[k+28>>2]){case 3:a=J[k+24>>2];h=N[a+8>>2];i=N[a>>2];j=N[a+4>>2];break k;case 0:break d;default:break l}}a=J[k+24>>2]+z|0;f=N[a+8>>2];h=Q(f+Q(m*Q(N[a+20>>2]-f)));f=N[a>>2];i=Q(f+Q(m*Q(N[a+12>>2]-f)));f=N[a+4>>2];j=Q(f+Q(m*Q(N[a+16>>2]-f)))}f=N[g+40>>2];N[g+40>>2]=f+Q(e*Q(h-f));f=N[g+36>>2];N[g+36>>2]=f+Q(e*Q(j-f));f=N[g+32>>2];N[g+32>>2]=f+Q(e*Q(i-f))}d=d+1|0;if((x|0)!=(d|0)){continue}break}}return}Z(12664,55323,344,84789);B()}function dt(a,b,c,d,e,f){var g=0,h=0,i=0,j=0,k=0,l=0,m=0,n=0,o=0;m=Ui-16|0;Ui=m;h=J[e+324>>2];J[f+324>>2]=h;J[f+320>>2]=J[e+320>>2];a:{b:{if(!h){break b}if(!(!a|(b|0)==65535)){if(!d){while(1){c=P(k,40);d=c+f|0;h=c+e|0;c=J[h>>2];g=J[h+4>>2];i=g;J[d>>2]=c;J[d+4>>2]=g;g=J[h+36>>2];J[d+32>>2]=J[h+32>>2];J[d+36>>2]=g;g=J[h+28>>2];J[d+24>>2]=J[h+24>>2];J[d+28>>2]=g;g=J[h+20>>2];J[d+16>>2]=J[h+16>>2];J[d+20>>2]=g;g=J[h+12>>2];J[d+8>>2]=J[h+8>>2];J[d+12>>2]=g;h=J[a+16>>2];if(J[a+20>>2]-h>>3>>>0<=b>>>0){break a}h=J[h+(b<<3)>>2];g=J[a>>2];if(h>>>0>=J[a+4>>2]-g>>3>>>0){break a}h=g+(h<<3)|0;l=K[h+4|0];c:{if(!l){break c}h=J[h>>2];g=0;while(1){j=h+P(g,24)|0;if(J[j>>2]!=(c|0)|J[j+4>>2]!=(i|0)){g=g+1|0;if((l|0)!=(g|0)){continue}break c}break}J[d+32>>2]=4;J[d+12>>2]=7;J[d+28>>2]=j+8}k=k+1|0;if(k>>>0>2]){continue}break b}}while(1){h=P(k,40);i=h+f|0;g=e+h|0;h=J[g>>2];l=J[g+4>>2];J[i>>2]=h;J[i+4>>2]=l;j=J[g+36>>2];J[i+32>>2]=J[g+32>>2];J[i+36>>2]=j;j=J[g+28>>2];J[i+24>>2]=J[g+24>>2];J[i+28>>2]=j;j=J[g+20>>2];J[i+16>>2]=J[g+16>>2];J[i+20>>2]=j;j=J[g+12>>2];J[i+8>>2]=J[g+8>>2];J[i+12>>2]=j;g=J[a+16>>2];if(J[a+20>>2]-g>>3>>>0<=b>>>0){break a}g=J[g+(b<<3)>>2];j=J[a>>2];if(g>>>0>=J[a+4>>2]-j>>3>>>0){break a}d:{e:{g=j+(g<<3)|0;j=K[g+4|0];if(!j){break e}o=J[g>>2];g=0;while(1){n=P(g,24)+o|0;if(J[n>>2]!=(h|0)|J[n+4>>2]!=(l|0)){g=g+1|0;if((j|0)!=(g|0)){continue}break e}break}J[i+32>>2]=4;J[i+12>>2]=7;J[i+28>>2]=n+8;break d}g=0;while(1){j=P(g,56)+c|0;if(J[j+8>>2]!=(h|0)|J[j+12>>2]!=(l|0)){g=g+1|0;if((g|0)!=(d|0)){continue}break d}break}if((g|0)<0){break d}J[i+28>>2]=J[j+44>>2];J[m+12>>2]=J[j+48>>2]}k=k+1|0;if(k>>>0>2]){continue}break}break b}a=0;if(!d){while(1){b=P(a,40);c=b+f|0;b=b+e|0;d=J[b+4>>2];J[c>>2]=J[b>>2];J[c+4>>2]=d;d=J[b+36>>2];J[c+32>>2]=J[b+32>>2];J[c+36>>2]=d;d=J[b+28>>2];J[c+24>>2]=J[b+24>>2];J[c+28>>2]=d;d=J[b+20>>2];J[c+16>>2]=J[b+16>>2];J[c+20>>2]=d;d=J[b+12>>2];J[c+8>>2]=J[b+8>>2];J[c+12>>2]=d;a=a+1|0;if(a>>>0>2]){continue}break b}}while(1){b=P(a,40);h=b+f|0;g=b+e|0;b=J[g>>2];i=J[g+4>>2];k=i;J[h>>2]=b;J[h+4>>2]=i;i=J[g+36>>2];J[h+32>>2]=J[g+32>>2];J[h+36>>2]=i;i=J[g+28>>2];J[h+24>>2]=J[g+24>>2];J[h+28>>2]=i;i=J[g+20>>2];J[h+16>>2]=J[g+16>>2];J[h+20>>2]=i;i=J[g+12>>2];J[h+8>>2]=J[g+8>>2];J[h+12>>2]=i;g=0;f:{while(1){i=P(g,56)+c|0;if(J[i+8>>2]!=(b|0)|J[i+12>>2]!=(k|0)){g=g+1|0;if((g|0)!=(d|0)){continue}break f}break}if((g|0)<0){break f}J[h+28>>2]=J[i+44>>2];J[m+12>>2]=J[i+48>>2]}a=a+1|0;if(a>>>0>2]){continue}break}}Ui=m+16|0;return}Z(145396,53895,487,84789);B()}function Tha(a,b){a=a|0;b=b|0;var c=0,d=Q(0),e=Q(0),f=Q(0),g=0,h=0,i=0,j=Q(0),k=0,l=0,m=0,n=0,o=0,p=0,q=0,r=0,s=0,t=0,u=0,v=0,w=0;c=Ui-224|0;Ui=c;p=J[b+8>>2];u=J[J[b+4>>2]+12>>2];a:{if(p>>>0>=u>>>0){break a}J[b+8>>2]=p+1;k=J[b>>2];v=J[a+64>>2];l=J[v+4>>2];b=l;q=J[b+96>>2];r=J[b+100>>2];w=J[a+68>>2];m=J[w+4>>2];b=m;s=J[b+96>>2];t=J[b+100>>2];f=N[a+84>>2];e=N[a+80>>2];b=L[a+88>>1];if(b){if(!(b&1)){while(1){g=g+1|0;h=b&2;b=(b&65534)>>>1|0;if(!h){continue}break}}b=(g<<3)+k|0;h=J[b>>2];n=J[b+4>>2]}b=L[a+90>>1];if(b){g=0;if(!(b&1)){while(1){g=g+1|0;i=b&2;b=(b&65534)>>>1|0;if(!i){continue}break}}b=(g<<3)+k|0;i=J[b>>2];o=J[b+4>>2]}f=f<=Q(0)?Q(0):f;e=e<=Q(0)?Q(0):e;if(J[k+128>>2]){N[c+212>>2]=N[a+76>>2];d=N[a+72>>2];J[c+96>>2]=h;J[c+100>>2]=n;N[c+208>>2]=d;J[c+88>>2]=q;J[c+92>>2]=r;N[c+16>>2]=N[a>>2];N[c+20>>2]=N[a+4>>2];N[c+24>>2]=N[a+8>>2];yn(c,l);N[c+32>>2]=N[c>>2];b=J[c+8>>2];J[c+36>>2]=J[c+4>>2];J[c+40>>2]=b;N[c+80>>2]=e;e=N[a+48>>2];d=N[a+52>>2];N[c+72>>2]=-N[a+56>>2];N[c+68>>2]=-d;N[c+64>>2]=-e;e=N[a+32>>2];d=N[a+36>>2];j=N[a+40>>2];J[c+192>>2]=i;J[c+196>>2]=o;J[c+184>>2]=s;J[c+188>>2]=t;N[c+56>>2]=-j;N[c+52>>2]=-d;N[c+48>>2]=-e;N[c+112>>2]=N[a+16>>2];N[c+116>>2]=N[a+20>>2];N[c+120>>2]=N[a+24>>2];yn(c,m);N[c+128>>2]=N[c>>2];b=J[c+8>>2];J[c+132>>2]=J[c+4>>2];J[c+136>>2]=b;N[c+176>>2]=f;N[c+160>>2]=N[a+48>>2];N[c+164>>2]=N[a+52>>2];N[c+168>>2]=N[a+56>>2];N[c+144>>2]=N[a+32>>2];N[c+148>>2]=N[a+36>>2];N[c+152>>2]=N[a+40>>2];_s(J[k+128>>2],J[58596],c+16|0);break a}N[c+16>>2]=N[a>>2];N[c+20>>2]=N[a+4>>2];N[c+24>>2]=N[a+8>>2];d=N[a+32>>2];j=N[a+36>>2];N[c+40>>2]=-N[a+40>>2];N[c+36>>2]=-j;N[c+32>>2]=-d;d=N[a+48>>2];j=N[a+52>>2];N[c+56>>2]=-N[a+56>>2];N[c+52>>2]=-j;N[c+48>>2]=-d;N[c+64>>2]=N[a+72>>2];d=N[a+76>>2];J[c+88>>2]=s;J[c+92>>2]=t;N[c+80>>2]=f;N[c+76>>2]=e;N[c+68>>2]=d;yn(c,m);N[c+96>>2]=N[c>>2];b=J[c+8>>2];J[c+100>>2]=J[c+4>>2];J[c+104>>2]=b;J[c+128>>2]=h;J[c+132>>2]=n;J[c+112>>2]=i;J[c+116>>2]=o;J[c+120>>2]=i;J[c+124>>2]=o;J[c+72>>2]=0;b=c+16|0;UF(b,l,q,r,L[v+26>>1]);N[c+16>>2]=N[a+16>>2];N[c+20>>2]=N[a+20>>2];N[c+24>>2]=N[a+24>>2];N[c+32>>2]=N[a+32>>2];N[c+36>>2]=N[a+36>>2];N[c+40>>2]=N[a+40>>2];N[c+48>>2]=N[a+48>>2];N[c+52>>2]=N[a+52>>2];N[c+56>>2]=N[a+56>>2];N[c+64>>2]=N[a+72>>2];d=N[a+76>>2];J[c+88>>2]=q;J[c+92>>2]=r;N[c+80>>2]=e;N[c+76>>2]=f;N[c+68>>2]=d;yn(c,l);N[c+96>>2]=N[c>>2];a=J[c+8>>2];J[c+100>>2]=J[c+4>>2];J[c+104>>2]=a;J[c+128>>2]=i;J[c+132>>2]=o;J[c+112>>2]=h;J[c+116>>2]=n;J[c+120>>2]=h;J[c+124>>2]=n;J[c+72>>2]=0;UF(b,m,s,t,L[w+26>>1])}Ui=c+224|0;return p>>>0>>0|0}function Cua(a,b){a=a|0;b=b|0;var c=Q(0),d=Q(0),e=Q(0),f=Q(0),g=0,h=0,i=Q(0),j=0,k=Q(0),l=0,m=Q(0),n=Q(0),o=Q(0),p=Q(0),q=Q(0),r=Q(0),s=Q(0),t=Q(0),u=Q(0),v=Q(0),w=Q(0),x=Q(0),y=Q(0),z=Q(0),A=Q(0),B=0,C=Q(0),D=Q(0),E=Q(0),F=Q(0),G=Q(0),H=Q(0),I=0,L=Q(0);h=J[a+48>>2];B=J[h+8>>2];J[a+132>>2]=B;j=J[a+52>>2];I=J[j+8>>2];J[a+136>>2]=I;w=N[h+32>>2];g=J[h+32>>2];f=N[h+28>>2];J[a+140>>2]=J[h+28>>2];J[a+144>>2]=g;L=N[j+32>>2];l=J[j+32>>2];k=N[j+28>>2];g=J[j+28>>2];J[a+148>>2]=g;J[a+152>>2]=l;x=N[h+120>>2];N[a+156>>2]=x;o=N[j+120>>2];N[a+160>>2]=o;u=N[h+128>>2];N[a+164>>2]=u;v=N[j+128>>2];N[a+168>>2]=v;h=P(B,12);j=J[b+28>>2];g=h+j|0;C=N[g>>2];D=N[g+4>>2];E=N[g+8>>2];g=j;j=P(I,12);g=g+j|0;F=N[g>>2];G=N[g+4>>2];H=N[g+8>>2];g=h;h=J[b+24>>2];g=g+h|0;y=N[g>>2];h=h+j|0;z=N[h>>2];n=N[g+4>>2];p=N[h+4>>2];m=N[h+8>>2];d=N[g+8>>2];q=N[a+76>>2];A=N[a+80>>2];e=N[a+84>>2];r=N[a+88>>2];s=N[a+100>>2];i=N[a+104>>2];J[a+220>>2]=0;J[a+212>>2]=0;J[a+216>>2]=0;c=Rj(d);d=Hj(d);t=Q(Q(s*d)+Q(c*i));N[a+184>>2]=t;s=Q(Q(c*s)-Q(d*i));N[a+180>>2]=s;i=Rj(m);e=Q(e-k);m=Hj(m);r=Q(r-L);k=Q(Q(i*e)-Q(m*r));e=Q(Q(m*e)+Q(i*r));m=Q(Q(k*t)-Q(e*s));N[a+200>>2]=m;i=Q(q-f);f=Q(A-w);q=Q(Q(c*i)-Q(d*f));y=Q(Q(Q(z+k)-y)-q);i=Q(Q(d*i)+Q(c*f));z=Q(Q(Q(p+e)-n)-i);n=Q(q+y);p=Q(i+z);i=Q(Q(n*t)-Q(p*s));N[a+196>>2]=i;q=Q(x+o);f=Q(Q(Q(v*m)*m)+Q(Q(Q(u*i)*i)+q));N[a+204>>2]=f>Q(0)?Q(Q(1)/f):f;A=N[a+68>>2];a:{if(A>Q(0)){r=N[a+92>>2];w=N[a+96>>2];f=Q(Q(d*r)+Q(c*w));N[a+176>>2]=f;c=Q(Q(c*r)-Q(d*w));N[a+172>>2]=c;d=Q(Q(k*f)-Q(e*c));N[a+192>>2]=d;k=Q(Q(n*f)-Q(p*c));N[a+188>>2]=k;d=Q(Q(Q(v*d)*d)+Q(Q(Q(u*k)*k)+q));if(!(d>Q(0))){break a}k=N[b>>2];e=Q(A*Q(6.2831854820251465));n=Q(Q(1)/d);p=Q(e*Q(e*n));e=Q(k*Q(Q(k*p)+Q(e*Q(Q(n+n)*N[a+72>>2]))));e=e>Q(0)?Q(Q(1)/e):e;N[a+220>>2]=e;N[a+216>>2]=Q(p*Q(k*Q(Q(y*c)+Q(z*f))))*e;c=Q(d+e);N[a+212>>2]=c>Q(0)?Q(Q(1)/c):c;break a}J[a+116>>2]=0}b:{if(K[a+128|0]==1){c=Q(u+v);N[a+208>>2]=c;if(!(c>Q(0))){break b}N[a+208>>2]=Q(1)/c;break b}J[a+112>>2]=0;J[a+208>>2]=0}c:{if(K[b+20|0]==1){f=N[b+8>>2];c=Q(f*N[a+108>>2]);N[a+108>>2]=c;d=Q(f*N[a+116>>2]);N[a+116>>2]=d;f=Q(f*N[a+112>>2]);N[a+112>>2]=f;t=Q(Q(t*c)+Q(d*N[a+176>>2]));G=Q(G+Q(o*t));e=o;o=Q(Q(s*c)+Q(d*N[a+172>>2]));F=Q(F+Q(e*o));D=Q(D-Q(x*t));C=Q(C-Q(x*o));H=Q(Q(v*Q(f+Q(Q(c*m)+Q(d*N[a+192>>2]))))+H);E=Q(E-Q(u*Q(f+Q(Q(c*i)+Q(d*N[a+188>>2])))));break c}J[a+116>>2]=0;J[a+108>>2]=0;J[a+112>>2]=0}l=J[b+28>>2]+P(B,12)|0;N[l+4>>2]=D;N[l>>2]=C;l=J[b+28>>2];N[(l+P(J[a+132>>2],12)|0)+8>>2]=E;l=l+P(J[a+136>>2],12)|0;N[l+4>>2]=G;N[l>>2]=F;N[(J[b+28>>2]+P(J[a+136>>2],12)|0)+8>>2]=H}function sK(a,b,c,d,e,f){var g=Q(0),h=Q(0),i=Q(0),j=Q(0),k=Q(0),l=Q(0),m=Q(0),n=0,o=0,p=0,q=0,r=Q(0),s=Q(0),t=Q(0),u=Q(0),v=0,w=0,x=0;o=J[a+36>>2];v=(o>>>0)/3|0;n=J[a+32>>2];a:{b:{if(!((c|0)!=(d|0)?J[a+112>>2]:0)){if(o>>>0<3){break b}d=0;while(1){h=N[n+8>>2];i=N[n+4>>2];j=N[n>>2];a=0;if(e){k=N[b+48>>2];l=N[b+32>>2];m=N[b>>2];g=N[b+16>>2];r=N[b+52>>2];s=N[b+36>>2];t=N[b+4>>2];u=N[b+20>>2];N[e+8>>2]=N[b+56>>2]+Q(Q(N[b+40>>2]*h)+Q(Q(N[b+8>>2]*j)+Q(i*N[b+24>>2])));N[e+4>>2]=r+Q(Q(s*h)+Q(Q(t*j)+Q(i*u)));N[e>>2]=k+Q(Q(l*h)+Q(Q(m*j)+Q(i*g)));a=e+12|0}if(f){N[f+8>>2]=h;N[f+4>>2]=i;N[f>>2]=j;f=f+12|0}else{f=0}n=n+12|0;e=a;d=d+1|0;if((v|0)!=(d|0)){continue}break}break b}if(o>>>0<3){break b}o=d-c>>6;w=J[a+100>>2];x=J[a+108>>2];d=0;while(1){h=Q(0);i=Q(0);j=Q(0);a=d<<4;p=a+w|0;g=N[p>>2];c:{if(g==Q(0)){break c}q=a+x|0;a=J[q>>2];if(a>>>0>=o>>>0){break a}a=(a<<6)+c|0;k=N[n+8>>2];l=N[n>>2];m=N[n+4>>2];j=Q(Q(g*Q(N[a+56>>2]+Q(Q(N[a+40>>2]*k)+Q(Q(N[a+8>>2]*l)+Q(m*N[a+24>>2])))))+Q(0));i=Q(Q(g*Q(N[a+52>>2]+Q(Q(N[a+36>>2]*k)+Q(Q(N[a+4>>2]*l)+Q(m*N[a+20>>2])))))+Q(0));h=Q(Q(g*Q(N[a+48>>2]+Q(Q(N[a+32>>2]*k)+Q(Q(N[a>>2]*l)+Q(m*N[a+16>>2])))))+Q(0));g=N[p+4>>2];if(g==Q(0)){break c}a=J[q+4>>2];if(a>>>0>=o>>>0){break a}a=(a<<6)+c|0;j=Q(j+Q(g*Q(N[a+56>>2]+Q(Q(N[a+40>>2]*k)+Q(Q(N[a+8>>2]*l)+Q(m*N[a+24>>2]))))));i=Q(i+Q(g*Q(N[a+52>>2]+Q(Q(N[a+36>>2]*k)+Q(Q(N[a+4>>2]*l)+Q(m*N[a+20>>2]))))));h=Q(h+Q(g*Q(N[a+48>>2]+Q(Q(N[a+32>>2]*k)+Q(Q(N[a>>2]*l)+Q(m*N[a+16>>2]))))));g=N[p+8>>2];if(g==Q(0)){break c}a=J[q+8>>2];if(a>>>0>=o>>>0){break a}a=(a<<6)+c|0;j=Q(j+Q(g*Q(N[a+56>>2]+Q(Q(N[a+40>>2]*k)+Q(Q(N[a+8>>2]*l)+Q(m*N[a+24>>2]))))));i=Q(i+Q(g*Q(N[a+52>>2]+Q(Q(N[a+36>>2]*k)+Q(Q(N[a+4>>2]*l)+Q(m*N[a+20>>2]))))));h=Q(h+Q(g*Q(N[a+48>>2]+Q(Q(N[a+32>>2]*k)+Q(Q(N[a>>2]*l)+Q(m*N[a+16>>2]))))));g=N[p+12>>2];if(g==Q(0)){break c}a=J[q+12>>2];if(a>>>0>=o>>>0){break a}a=(a<<6)+c|0;j=Q(j+Q(g*Q(N[a+56>>2]+Q(Q(N[a+40>>2]*k)+Q(Q(N[a+8>>2]*l)+Q(m*N[a+24>>2]))))));i=Q(i+Q(g*Q(N[a+52>>2]+Q(Q(N[a+36>>2]*k)+Q(Q(N[a+4>>2]*l)+Q(m*N[a+20>>2]))))));h=Q(h+Q(g*Q(N[a+48>>2]+Q(Q(N[a+32>>2]*k)+Q(Q(N[a>>2]*l)+Q(m*N[a+16>>2]))))))}n=n+12|0;if(e){k=N[b+48>>2];l=N[b+32>>2];m=N[b>>2];g=N[b+16>>2];r=N[b+52>>2];s=N[b+36>>2];t=N[b+4>>2];u=N[b+20>>2];N[e+8>>2]=N[b+56>>2]+Q(Q(N[b+40>>2]*j)+Q(Q(N[b+8>>2]*h)+Q(i*N[b+24>>2])));N[e+4>>2]=r+Q(Q(s*j)+Q(Q(t*h)+Q(i*u)));N[e>>2]=k+Q(Q(l*j)+Q(Q(m*h)+Q(i*g)));e=e+12|0}else{e=0}if(f){N[f+8>>2]=j;N[f+4>>2]=i;N[f>>2]=h;f=f+12|0}else{f=0}d=d+1|0;if((v|0)!=(d|0)){continue}break}}return}Z(145396,53895,494,84789);B()}function tw(a,b,c,d){var e=0,f=0,g=0,h=0,i=0,j=0,k=0,l=0,m=0;a:{b:{if(!(d?c:0)){if(!a){break b}J[a+28>>2]=24;return 0}J[d>>2]=b;g=b<<2;J[d+8>>2]=J[g+J[J[a+72>>2]+16>>2]>>2];J[d+12>>2]=0;I[d+16>>1]=K[c+4|0]|K[c+5|0]<<8;I[d+18>>1]=K[c+6|0]|K[c+7|0]<<8;I[d+20>>1]=K[c+8|0]|K[c+9|0]<<8;I[d+22>>1]=K[c+10|0]|K[c+11|0]<<8;J[d+24>>2]=K[c+16|0]|K[c+17|0]<<8|(K[c+18|0]<<16|K[c+19|0]<<24);f=K[c+20|0]|K[c+21|0]<<8|(K[c+22|0]<<16|K[c+23|0]<<24);J[d+32>>2]=f;J[d+36>>2]=0;j=K[c+24|0]|K[c+25|0]<<8|(K[c+26|0]<<16|K[c+27|0]<<24);J[d+40>>2]=j;J[d+44>>2]=0;I[d+48>>1]=K[c+36|0]|K[c+37|0]<<8;J[d+52>>2]=K[c+38|0]|K[c+39|0]<<8|(K[c+40|0]<<16|K[c+41|0]<<24);k=K[c+42|0]|K[c+43|0]<<8|(K[c+44|0]<<16|K[c+45|0]<<24);J[d+56>>2]=k;J[d+60>>2]=0;m=c+46|0;e=K[c+28|0]|K[c+29|0]<<8;e=e>>>0>=511?511:e;H[hj(d+80|0,m,e)+e|0]=0;e=K[c+32|0]|K[c+33|0]<<8;e=e>>>0>=511?511:e;J[d+64>>2]=e;H[hj(d+592|0,((K[c+28|0]|K[c+29|0]<<8)+m|0)+(K[c+30|0]|K[c+31|0]<<8)|0,e)+e|0]=0;c:{d:{e:{f:{h=J[a+72>>2];if(h){i=d;g:{h:{if(M[a+16>>2]<=b>>>0){break h}e=J[h>>2];if(!e){break h}g=e+J[g+J[h+16>>2]>>2]|0;e=K[g+28|0]|K[g+29|0]<<8;if(e){l=1;if(K[(e+g|0)+45|0]==47){break g}}l=K[g+38|0]>>>4&1;break g}J[a+28>>2]=24;l=0}J[i+68>>2]=l;if(M[a+16>>2]<=b>>>0){break f}e=J[h>>2];if(!e){break f}i=(K[(e+J[J[h+16>>2]+(b<<2)>>2]|0)+8|0]&65)!=0;break e}J[d+68>>2]=0;J[d+72>>2]=0;e=24;break d}J[a+28>>2]=24;i=0}J[d+72>>2]=i;e=24;if(M[a+16>>2]<=b>>>0){break d}g=J[h>>2];if(!g){break d}b=g+J[J[h+16>>2]+(b<<2)>>2]|0;e=K[b+10|0];if((e&8)!=(e|K[b+11|0]<<8)){e=4;break d}e=K[b+8|0];if(e&65){e=5;break d}b=1;if(!(e&32)){break c}e=6}J[a+28>>2]=e;b=0}J[d+76>>2]=b;e=1;b=f>>>0>j>>>0?f:j;i=b;f=0;b=!f&b>>>0>k>>>0|(f|0)!=0;if(((b?i:k)|0)!=-1|(b?f:0)){break b}b=K[c+30|0]|K[c+31|0]<<8;if(!b){break b}c=(K[c+28|0]|K[c+29|0]<<8)+m|0;while(1){if(b>>>0<=3){break a}f=K[c+2|0]|K[c+3|0]<<8;e=f+4|0;if(e>>>0>b>>>0){break a}if((K[c|0]|K[c+1|0]<<8)==1){if((j|0)!=-1){c=c+4|0}else{if(f>>>0<=7){break a}b=K[c+8|0]|K[c+9|0]<<8|(K[c+10|0]<<16|K[c+11|0]<<24);J[d+40>>2]=K[c+4|0]|K[c+5|0]<<8|(K[c+6|0]<<16|K[c+7|0]<<24);J[d+44>>2]=b;f=f-8|0;c=c+12|0}if(!J[d+36>>2]&J[d+32>>2]==-1){if(f>>>0<=7){break a}b=K[c+4|0]|K[c+5|0]<<8|(K[c+6|0]<<16|K[c+7|0]<<24);J[d+32>>2]=K[c|0]|K[c+1|0]<<8|(K[c+2|0]<<16|K[c+3|0]<<24);J[d+36>>2]=b;f=f-8|0;c=c+8|0}e=1;if((k|0)!=-1){break b}if(f>>>0<=7){break a}a=K[c+4|0]|K[c+5|0]<<8|(K[c+6|0]<<16|K[c+7|0]<<24);J[d+56>>2]=K[c|0]|K[c+1|0]<<8|(K[c+2|0]<<16|K[c+3|0]<<24);J[d+60>>2]=a;return 1}c=c+e|0;b=(b-f|0)-4|0;if(b){continue}break}e=1}return e}J[a+28>>2]=9;return 0}function $ua(a,b){a=a|0;b=b|0;var c=Q(0),d=Q(0),e=Q(0),f=0,g=Q(0),h=Q(0),i=Q(0),j=Q(0),k=Q(0),l=Q(0),m=0,n=Q(0),o=Q(0),p=Q(0),q=Q(0),r=Q(0),s=Q(0),t=Q(0),u=Q(0),v=Q(0),w=0,x=Q(0),y=Q(0),z=Q(0),A=Q(0),B=Q(0),C=Q(0),D=Q(0),E=Q(0),F=Q(0),G=Q(0),H=Q(0),I=Q(0);f=Ui+-64|0;Ui=f;h=N[a+156>>2];v=N[a+72>>2];w=J[b+24>>2];m=w+P(J[a+144>>2],12)|0;y=N[m+8>>2];c=Rj(y);n=N[a+152>>2];o=N[a+68>>2];k=Hj(y);r=N[a+164>>2];j=N[a+80>>2];w=w+P(J[a+148>>2],12)|0;z=N[w+8>>2];l=Rj(z);s=N[a+160>>2];g=N[a+76>>2];q=Hj(z);x=N[a+92>>2];t=N[a+96>>2];A=Q(Q(c*x)-Q(k*t));E=N[w>>2];g=Q(g-s);j=Q(j-r);r=Q(Q(l*g)-Q(q*j));F=N[m>>2];n=Q(o-n);h=Q(v-h);o=Q(Q(c*n)-Q(k*h));d=Q(Q(Q(E+r)-F)-o);s=Q(Q(k*x)+Q(c*t));G=N[w+4>>2];l=Q(Q(q*g)+Q(l*j));H=N[m+4>>2];q=Q(Q(k*n)+Q(c*h));i=Q(Q(Q(G+l)-H)-q);g=Q(Q(A*d)+Q(s*i));x=Q(-g);v=g>Q(0)?g:x;h=Q(o+d);n=Q(q+i);q=Q(Q(h*s)-Q(n*A));j=h;h=N[a+84>>2];o=N[a+88>>2];t=Q(Q(k*h)+Q(c*o));B=Q(Q(c*h)-Q(k*o));n=Q(Q(j*t)-Q(n*B));h=Q(Q(r*s)-Q(l*A));r=Q(Q(r*t)-Q(l*B));C=Q(Q(z-y)-N[a+100>>2]);D=Q(-C);k=N[a+180>>2];l=N[a+176>>2];o=N[a+172>>2];j=N[a+168>>2];a:{b:{if(K[a+136|0]!=1){break b}c=Q(Q(B*d)+Q(t*i));i=N[a+124>>2];d=N[a+120>>2];p=Q(i-d);c:{if((p>Q(0)?p:Q(-p))Q(0)?c:Q(-c);break c}if(c<=d){e=Q(Q(c-d)+Q(.004999999888241291));e=e=i)){break b}c=Q(c-i);e=Q(c+Q(-.004999999888241291));e=e>2]=g;N[f+48>>2]=g;g=Q(l*q);d=Q(k*h);u=Q(g+d);N[f+40>>2]=u;N[f+32>>2]=u;u=Q(Q(g*n)+Q(r*d));N[f+52>>2]=u;I=Q(l+k);N[f+44>>2]=I==Q(0)?Q(1):I;N[f+36>>2]=u;u=Q(i*n);i=Q(j+o);N[f+60>>2]=Q(p*r)+Q(u+i);N[f+28>>2]=Q(d*h)+Q(Q(g*q)+i);N[f+12>>2]=-e;N[f+8>>2]=D;N[f+4>>2]=x;v=c>2];g=N[f+20>>2];c=N[f+16>>2];break a}c=Q(k*h);d=Q(l*q);i=Q(Q(c*h)+Q(Q(d*q)+Q(j+o)));p=Q(l+k);p=p==Q(0)?Q(1):p;c=Q(d+c);d=Q(Q(i*p)-Q(c*c));d=d!=Q(0)?Q(Q(1)/d):d;g=Q(Q(Q(i*D)+Q(g*c))*d);c=Q(Q(Q(p*x)+Q(C*c))*d)}m=J[b+24>>2]+P(J[a+144>>2],12)|0;s=Q(Q(s*c)+Q(t*e));N[m+4>>2]=H-Q(j*s);d=j;j=Q(Q(A*c)+Q(B*e));N[m>>2]=F-Q(d*j);m=J[b+24>>2];N[(m+P(J[a+144>>2],12)|0)+8>>2]=y-Q(l*Q(Q(e*n)+Q(Q(c*q)+g)));m=m+P(J[a+148>>2],12)|0;N[m+4>>2]=G+Q(o*s);N[m>>2]=E+Q(o*j);N[(J[b+24>>2]+P(J[a+148>>2],12)|0)+8>>2]=Q(k*Q(Q(e*r)+Q(Q(c*h)+g)))+z;Ui=f- -64|0;return(C>Q(0)?C:D)<=Q(.03490658849477768)&v<=Q(.004999999888241291)}function Ria(a){a=a|0;var b=0,c=0,d=0,e=0,f=Q(0),g=0,h=Q(0),i=0,j=0,k=0;g=Ui+-64|0;Ui=g;c=J[a+4>>2];b=J[c+16>>2];a:{b:{d=J[J[a+24>>2]>>2];if(d>>>0>2]-b>>3>>>0){b=J[b+(d<<3)>>2];d=J[c+4>>2];c=J[c>>2];if(b>>>0>=d-c>>2>>>0){break a}d=J[c+(b<<2)>>2];c=J[a+16>>2];e=J[a+20>>2];c:{if((c|0)==J[78972]&(e|0)==J[78973]){if(J[a+32>>2]!=1){a=-4;break c}b=J[d+132>>2];d=J[a+44>>2];e=d;d:{e:{f:{c=J[a+40>>2];if(d|c){d=J[b+80>>2];i=J[d+4>>2];if(!i){break e}k=J[d>>2];d=0;break f}J[b+168>>2]=0;J[b+172>>2]=0;c=J[b+80>>2];J[b+160>>2]=J[c>>2];c=J[c+4>>2];H[b+186|0]=K[b+186|0]|8;J[b+164>>2]=c;b=0;break d}while(1){j=P(d,80)+k|0;if(J[j+48>>2]!=(c|0)|J[j+52>>2]!=(e|0)){d=d+1|0;if((i|0)!=(d|0)){continue}break e}break}J[b+168>>2]=c;J[b+172>>2]=e;J[b+164>>2]=1;J[b+160>>2]=j;H[b+186|0]=K[b+186|0]|8;b=0;break d}J[b+168>>2]=0;J[b+172>>2]=0;J[b+160>>2]=0;J[b+164>>2]=0;H[b+186|0]=K[b+186|0]&247;b=1}if(!b){a=0;break c}J[g>>2]=tj(J[a+40>>2],J[a+44>>2]);dj(4,88458,122154,g);a=-8;break c}if((c|0)==J[78976]&(e|0)==J[78977]){if(J[a+32>>2]){a=-4;break c}f=Q(O[a+40>>3]);a=J[d+132>>2];a=((H[a+186|0]&1)<<5)+a|0;c=J[a>>2];if(c){h=N[c+8>>2];f=Q(f*h);g:{if(J[a+24>>2]!=6){break g}c=K[a+28|0];if(!(c&2)){break g}H[a+28|0]=c&253}h:{if(!(Q(R(f))>h)){break h}f=vs(f,h);if(!(Q(R(f))>2]=K[a+28|0]&2?Q(h-f):f}a=0;break c}if((c|0)==J[78978]&(e|0)==J[78979]){if(J[a+32>>2]){a=-4;break c}c=J[d+132>>2];f=Q(O[a+40>>3]);N[(((H[c+186|0]&1)<<5)+c|0)+20>>2]=f>Q(0)?f:Q(0);a=0;break c}i:{j:{k:{if((c|0)!=J[78860]|(e|0)!=J[78861]){if(J[78864]!=(c|0)|J[78865]!=(e|0)){break k}b=0;break j}a=xn(J[J[J[a+8>>2]+80>>2]>>2],a+32|0,J[78838],J[78839],d+208|0);c=K[d+262|0];H[d+262|0]=(a?c&8:8)|c&247;break c}b=1;if((c|0)==J[78866]&(e|0)==J[78867]){break j}b=2;if((c|0)==J[78868]&(e|0)==J[78869]){break j}b=3;if((c|0)==J[78870]&(e|0)==J[78871]){break j}b=4;if((c|0)==J[78872]&(e|0)==J[78873]){break j}b=5;if((c|0)==J[78874]&(e|0)==J[78875]){break j}b=6;if((c|0)==J[78876]&(e|0)==J[78877]){break j}if(J[78878]!=(c|0)|J[78879]!=(e|0)){break i}b=7}c=J[78845];J[g+48>>2]=J[78844];J[g+52>>2]=c;c=J[78851];J[g+56>>2]=J[78850];J[g+60>>2]=c;a=AD(J[J[J[a+8>>2]+80>>2]>>2],a+32|0,g+48|0,2,(d+(b<<2)|0)+176|0);c=K[d+262|0];H[d+262|0]=(a?c&8:8)|c&247;break c}b=J[d+208>>2];if(!b){i=J[d+128>>2];b=J[i+28>>2];if((b|0)==J[i+32>>2]){break b}b=J[b+4>>2]}a=Wp(J[b>>2],c,e,a+32|0,J[a+104>>2],756,d)}Ui=g- -64|0;return a|0}break a}Z(145396,53895,494,84789);B()}Z(145396,53895,487,84789);B()}function jea(a){a=a|0;var b=0,c=0,d=0,e=0,f=0,g=0;b=Ui-992|0;Ui=b;c=-2;a:{if(dk(J[a+20>>2],J[a+24>>2],252736,b+988|0,0)){break a}d=J[J[a+36>>2]+8>>2];c=J[b+988>>2];f=J[c+4>>2];J[b+984>>2]=0;J[b+628>>2]=0;J[b+632>>2]=0;H[b+635|0]=0;H[b+636|0]=0;H[b+637|0]=0;H[b+638|0]=0;J[b+616>>2]=1;J[b+608>>2]=2;J[b+612>>2]=1;J[b+600>>2]=3;J[b+604>>2]=5;J[b+592>>2]=0;J[b+596>>2]=0;J[b+584>>2]=1;J[b+588>>2]=16842752;J[b+576>>2]=0;J[b+580>>2]=0;J[b+568>>2]=1;J[b+572>>2]=16842752;J[b+560>>2]=0;J[b+564>>2]=0;J[b+552>>2]=1;J[b+556>>2]=16842752;J[b+544>>2]=0;J[b+548>>2]=0;J[b+536>>2]=1;J[b+540>>2]=16842752;J[b+528>>2]=0;J[b+532>>2]=0;J[b+520>>2]=1;J[b+524>>2]=16842752;J[b+512>>2]=0;J[b+516>>2]=0;J[b+504>>2]=1;J[b+508>>2]=16842752;J[b+496>>2]=0;J[b+500>>2]=0;J[b+620>>2]=0;J[b+624>>2]=0;J[b+676>>2]=0;J[b+680>>2]=0;H[b+683|0]=0;H[b+684|0]=0;H[b+685|0]=0;H[b+686|0]=0;J[b+724>>2]=0;J[b+728>>2]=0;H[b+731|0]=0;H[b+732|0]=0;H[b+733|0]=0;H[b+734|0]=0;J[b+664>>2]=1;J[b+656>>2]=2;J[b+660>>2]=1;J[b+648>>2]=3;J[b+652>>2]=5;J[b+640>>2]=0;J[b+644>>2]=0;J[b+668>>2]=0;J[b+672>>2]=0;J[b+712>>2]=1;J[b+688>>2]=0;J[b+692>>2]=0;J[b+696>>2]=3;J[b+700>>2]=5;J[b+704>>2]=2;J[b+708>>2]=1;J[b+716>>2]=0;J[b+720>>2]=0;J[b+760>>2]=1;J[b+736>>2]=0;J[b+740>>2]=0;J[b+744>>2]=3;J[b+748>>2]=5;J[b+752>>2]=2;J[b+756>>2]=1;H[b+779|0]=0;H[b+780|0]=0;H[b+781|0]=0;H[b+782|0]=0;J[b+772>>2]=0;J[b+776>>2]=0;H[b+827|0]=0;H[b+828|0]=0;H[b+829|0]=0;H[b+830|0]=0;J[b+820>>2]=0;J[b+824>>2]=0;H[b+875|0]=0;H[b+876|0]=0;H[b+877|0]=0;H[b+878|0]=0;J[b+868>>2]=0;J[b+872>>2]=0;J[b+764>>2]=0;J[b+768>>2]=0;J[b+800>>2]=2;J[b+804>>2]=1;J[b+792>>2]=3;J[b+796>>2]=5;J[b+784>>2]=0;J[b+788>>2]=0;J[b+808>>2]=1;J[b+812>>2]=0;J[b+816>>2]=0;J[b+848>>2]=2;J[b+852>>2]=1;J[b+840>>2]=3;J[b+844>>2]=5;J[b+832>>2]=0;J[b+836>>2]=0;J[b+856>>2]=1;J[b+860>>2]=0;J[b+864>>2]=0;ij(b+880|0,0,96);H[b+976|0]=K[b+976|0]&252;jQ(c,b+984|0,b+496|0);Uj(J[b+988>>2]);c=J[d+64>>2];e=J[d+68>>2];if(c|e){Zi[J[79448]](c,e)}g=J[J[a+4>>2]+2480>>2];e=J[b+984>>2];c=b+12|0;hj(c,b+496|0,484);J[d+64>>2]=xD(g,e,c);J[d+68>>2]=Yi;c=J[d>>2];if(c){vj(J[a>>2],c)}c=J[d+4>>2];if(c){vj(J[a>>2],c)}c=J[d+8>>2];if(c){vj(J[a>>2],c)}c=J[d+12>>2];if(c){vj(J[a>>2],c)}c=J[d+16>>2];if(c){vj(J[a>>2],c)}J[d>>2]=0;J[d+4>>2]=0;J[d+24>>2]=0;J[d+28>>2]=0;J[d+16>>2]=0;J[d+8>>2]=0;J[d+12>>2]=0;J[d+32>>2]=0;J[d+36>>2]=0;J[d+40>>2]=0;J[d+44>>2]=0;J[d+48>>2]=0;J[d+52>>2]=0;J[d+56>>2]=0;J[d+60>>2]=0;c=BQ(J[a>>2],d,J[a+16>>2],f,H[b+976|0]&1);if(!c){break a}mv(J[a>>2],d)}Ui=b+992|0;return c|0}function kF(a,b){var c=0,d=0,e=0,f=0,g=0,h=0,i=0,j=0,k=0,l=0,m=0;i=Ui-48|0;Ui=i;A(+a);e=v(1)|0;g=v(0)|0;a:{b:{h=e&2147483647;c:{if(h>>>0<=1074752122){if((e&1048575)==598523){break c}if(h>>>0<=1073928572){if((e|0)>0|(e|0)>=0){a=a+-1.5707963267341256;c=a+-6077100506506192e-26;O[b>>3]=c;O[b+8>>3]=a-c+-6077100506506192e-26;d=1;break a}a=a+1.5707963267341256;c=a+6077100506506192e-26;O[b>>3]=c;O[b+8>>3]=a-c+6077100506506192e-26;d=-1;break a}if((e|0)>0|(e|0)>=0){a=a+-3.1415926534682512;c=a+-1.2154201013012384e-10;O[b>>3]=c;O[b+8>>3]=a-c+-1.2154201013012384e-10;d=2;break a}a=a+3.1415926534682512;c=a+1.2154201013012384e-10;O[b>>3]=c;O[b+8>>3]=a-c+1.2154201013012384e-10;d=-2;break a}if(h>>>0<=1075594811){if(h>>>0<=1075183036){if((h|0)==1074977148){break c}if((e|0)>0|(e|0)>=0){a=a+-4.712388980202377;c=a+-1.8231301519518578e-10;O[b>>3]=c;O[b+8>>3]=a-c+-1.8231301519518578e-10;d=3;break a}a=a+4.712388980202377;c=a+1.8231301519518578e-10;O[b>>3]=c;O[b+8>>3]=a-c+1.8231301519518578e-10;d=-3;break a}if((h|0)==1075388923){break c}if((e|0)>0|(e|0)>=0){a=a+-6.2831853069365025;c=a+-2.430840202602477e-10;O[b>>3]=c;O[b+8>>3]=a-c+-2.430840202602477e-10;d=4;break a}a=a+6.2831853069365025;c=a+2.430840202602477e-10;O[b>>3]=c;O[b+8>>3]=a-c+2.430840202602477e-10;d=-4;break a}if(h>>>0>1094263290){break b}}f=a*.6366197723675814+6755399441055744+-6755399441055744;c=a+f*-1.5707963267341256;j=f*6077100506506192e-26;k=c-j;e=k<-.7853981633974483;if(R(f)<2147483648){d=~~f}else{d=-2147483648}d:{if(e){d=d-1|0;f=f+-1;j=f*6077100506506192e-26;c=a+f*-1.5707963267341256;break d}if(!(k>.7853981633974483)){break d}d=d+1|0;f=f+1;j=f*6077100506506192e-26;c=a+f*-1.5707963267341256}a=c-j;O[b>>3]=a;A(+a);e=v(1)|0;v(0)|0;g=h>>>20|0;e:{if((g-(e>>>20&2047)|0)<17){break e}k=c;a=f*6077100506303966e-26;c=c-a;j=f*20222662487959506e-37-(k-c-a);a=c-j;O[b>>3]=a;A(+a);e=v(1)|0;v(0)|0;if((g-(e>>>20&2047)|0)<50){break e}k=c;a=f*20222662487111665e-37;c=c-a;j=f*84784276603689e-45-(k-c-a);a=c-j;O[b>>3]=a}O[b+8>>3]=c-a-j;break a}if(h>>>0>=2146435072){a=a-a;O[b>>3]=a;O[b+8>>3]=a;break a}d=i+16|0;l=d|8;x(0,g|0);x(1,e&1048575|1096810496);a=+z();g=1;while(1){if(R(a)<2147483648){m=~~a}else{m=-2147483648}c=+(m|0);O[d>>3]=c;a=(a-c)*16777216;m=g;g=0;d=l;if(m){continue}break}O[i+32>>3]=a;d=2;while(1){g=d;d=d-1|0;l=i+16|0;if(O[l+(g<<3)>>3]==0){continue}break}d=xV(l,i,(h>>>20|0)-1046|0,g+1|0,1);a=O[i>>3];if((e|0)<0){O[b>>3]=-a;O[b+8>>3]=-O[i+8>>3];d=0-d|0;break a}O[b>>3]=a;O[b+8>>3]=O[i+8>>3]}Ui=i+48|0;return d}function Gva(a,b){a=a|0;b=b|0;var c=Q(0),d=Q(0),e=Q(0),f=0,g=Q(0),h=Q(0),i=Q(0),j=Q(0),k=0,l=Q(0),m=Q(0),n=Q(0),o=0,p=Q(0),q=Q(0),r=Q(0),s=Q(0),t=Q(0),u=Q(0),v=Q(0),w=Q(0),x=Q(0),y=Q(0),z=Q(0),A=Q(0),B=Q(0),C=Q(0),D=Q(0),E=Q(0),F=Q(0),G=0,H=Q(0),I=Q(0),K=Q(0),L=Q(0),M=Q(0),O=Q(0),R=Q(0),S=Q(0);f=J[a+76>>2];k=J[b+24>>2];G=k+P(J[a+172>>2],12)|0;H=N[G+4>>2];I=N[G>>2];o=k+P(J[a+168>>2],12)|0;u=N[o+8>>2];K=N[o+4>>2];L=N[o>>2];o=k+P(J[a+164>>2],12)|0;M=N[o+4>>2];O=N[o>>2];k=k+P(J[a+160>>2],12)|0;v=N[k+8>>2];R=N[k+4>>2];S=N[k>>2];w=N[o+8>>2];x=N[G+8>>2];r=Rj(x);s=Hj(x);g=Rj(w);n=Hj(w);a:{if((f|0)==1){y=N[a+224>>2];z=N[a+232>>2];p=Q(y+z);A=Q(1);B=Q(1);c=Q(Q(v-u)-N[a+140>>2]);break a}q=N[a+128>>2];l=Hj(u);j=N[a+124>>2];m=Rj(u);d=N[a+180>>2];c=N[a+96>>2];i=Rj(v);e=Q(N[a+92>>2]-N[a+176>>2]);h=Hj(v);c=Q(c-d);d=Q(Q(i*e)-Q(h*c));C=Q(Q(l*j)+Q(m*q));c=Q(Q(h*e)+Q(i*c));D=Q(Q(m*j)-Q(l*q));A=Q(Q(d*C)-Q(c*D));y=N[a+224>>2];e=Q(N[a+108>>2]-N[a+192>>2]);h=Q(N[a+112>>2]-N[a+196>>2]);B=Q(Q(Q(Q(m*e)-Q(l*h))*C)-Q(Q(Q(l*e)+Q(m*h))*D));z=N[a+232>>2];p=Q(Q(Q(y*A)*A)+Q(Q(Q(B*z)*B)+Q(N[a+216>>2]+N[a+208>>2])));d=Q(Q(S-L)+d);c=Q(Q(R-K)+c);c=Q(Q(j*Q(Q(Q(m*d)+Q(l*c))-e))+Q(q*Q(Q(Q(m*c)-Q(l*d))-h)))}j=Q(0);d=Q(p+Q(0));b:{if(J[a+80>>2]==1){i=Q(Q(w-x)-N[a+144>>2]);e=N[a+152>>2];E=N[a+228>>2];F=N[a+236>>2];t=Q(Q(Q(e*e)*Q(E+F))+d);h=e;p=e;d=Q(0);break b}t=d;E=N[a+228>>2];e=N[a+152>>2];h=Q(N[a+100>>2]-N[a+184>>2]);d=Q(N[a+104>>2]-N[a+188>>2]);i=Q(Q(g*h)-Q(n*d));l=N[a+132>>2];m=N[a+136>>2];q=Q(Q(s*l)+Q(r*m));d=Q(Q(n*h)+Q(g*d));j=Q(Q(r*l)-Q(s*m));h=Q(e*Q(Q(i*q)-Q(d*j)));g=Q(N[a+116>>2]-N[a+200>>2]);n=Q(N[a+120>>2]-N[a+204>>2]);p=Q(e*Q(Q(Q(Q(r*g)-Q(s*n))*q)-Q(Q(Q(s*g)+Q(r*n))*j)));F=N[a+236>>2];t=Q(t+Q(Q(Q(E*h)*h)+Q(Q(Q(e*e)*Q(N[a+220>>2]+N[a+212>>2]))+Q(p*Q(p*F)))));i=Q(Q(O-I)+i);d=Q(Q(M-H)+d);i=Q(Q(Q(Q(Q(r*i)+Q(s*d))-g)*l)+Q(m*Q(Q(Q(r*d)-Q(s*i))-n)));j=Q(j*e);d=Q(q*e)}g=Q(0);if(t>Q(0)){g=Q(Q(-Q(Q(Q(e*i)+c)-N[a+148>>2]))/t)}n=N[a+220>>2];i=N[a+216>>2];e=N[a+212>>2];c=Q(g*N[a+208>>2]);N[k+4>>2]=R+Q(C*c);N[k>>2]=S+Q(D*c);f=J[b+24>>2];N[(f+P(J[a+160>>2],12)|0)+8>>2]=Q(Q(g*y)*A)+v;f=f+P(J[a+164>>2],12)|0;c=Q(g*e);N[f+4>>2]=M+Q(d*c);N[f>>2]=O+Q(j*c);f=J[b+24>>2];N[(f+P(J[a+164>>2],12)|0)+8>>2]=Q(Q(g*E)*h)+w;f=f+P(J[a+168>>2],12)|0;c=Q(g*i);N[f+4>>2]=K-Q(C*c);N[f>>2]=L-Q(D*c);f=J[b+24>>2];N[(f+P(J[a+168>>2],12)|0)+8>>2]=u-Q(Q(z*g)*B);f=f+P(J[a+172>>2],12)|0;c=Q(g*n);N[f+4>>2]=H-Q(d*c);N[f>>2]=I-Q(j*c);N[(J[b+24>>2]+P(J[a+172>>2],12)|0)+8>>2]=x-Q(Q(F*g)*p);return 1}function xR(a){var b=0,c=0,d=0,e=0,f=0,g=0,h=0,i=0,j=0,k=0,l=0,m=0,n=0,o=0,p=0,q=0,r=0,s=0;c=Ui-48|0;Ui=c;d=J[a>>2];J[c+12>>2]=0;a:{b:{if(d){a=J[d+4>>2];if(!a){break b}j=J[a>>2];if(!j){h=1;break a}f=d+12|0;m=a+8|0;e=a+28568|0;h=1;a=0;while(1){g=L[e+(a<<1)>>1];b=m+P(g,112)|0;if(J[b+64>>2]){J[c+8>>2]=0;J[c+16>>2]=J[d+8>>2];J[c+20>>2]=J[f+(g<<2)>>2];J[c+24>>2]=J[b+16>>2];h=Zi[J[b+64>>2]](c+16|0)|0?h&1?0:h:h}a=a+1|0;if((j|0)!=(a|0)){continue}break}break a}Z(111261,38296,2754,62056);B()}Z(57479,38296,2756,62056);B()}c:{a=L[d+3260>>1];d:{if((a|0)!=32767){r=d+12|0;j=0;while(1){J[d+3260>>2]=2147450879;m=j;j=j+1|0;b=a;e:{f:{g:{h:{i:{j:{k:{l:{while(1){f=J[d+1036>>2];e=J[d+1040>>2]-f>>2;b=b&65535;if(e>>>0<=b>>>0){break c}i=e;g=J[f+(b<<2)>>2];e=J[g+140>>2];b=e&32767;if(i>>>0<=b>>>0){break c}i=f;f=b<<2;if((g|0)!=J[i+f>>2]){break l}if(!(e&32768)){break k}e=J[g+136>>2];m:{if(!(e&256)){break m}J[g+136>>2]=e&-257;e=J[d+1036>>2];if(b>>>0>=J[d+1040>>2]-e>>2>>>0){break c}if((g|0)!=J[f+e>>2]){break j}n=J[g+84>>2];k=J[n+4>>2];if(!k){break m}s=g+156|0;f=0;b=0;while(1){o=J[n>>2]+P(b,96)|0;i=J[o+16>>2];if(!i){break i}p=J[i+100>>2];e=((p&65536)>>>16|0)+f|0;if(e>>>0>M[g+152>>2]){break h}n:{q=J[i+40>>2];if(q){k=J[d+8>>2];J[c+20>>2]=g;J[c+16>>2]=k;J[c+24>>2]=J[(J[o+20>>2]<<2)+r>>2];i=J[i+16>>2];J[c+32>>2]=(f<<2)+s&p<<15>>31;J[c+28>>2]=i;if(Zi[q|0](c+16|0)|0){break n}k=J[n+4>>2]}f=e;b=b+1|0;if(k>>>0>b>>>0){continue}break m}break}h=h&1?0:h}b=L[g+144>>1];if((b|0)!=32767){continue}break}b=J[d+3220>>2];J[c+16>>2]=J[d+3216>>2];J[c+20>>2]=b;b=J[d+3228>>2];J[c+24>>2]=J[d+3224>>2];J[c+28>>2]=b;e=tv(d,c+16|0,2);if((a|0)==32767){break e}while(1){f=J[d+1036>>2];b=J[d+1040>>2]-f>>2;if(b>>>0<=a>>>0){break c}i=b;b=J[f+(a<<2)>>2];a=J[b+140>>2];g=a&32767;if(i>>>0<=g>>>0){break c}if((b|0)!=J[f+(g<<2)>>2]){break g}if(!(a&32768)){break f}a=L[b+144>>1];GR(d,b);l=l+1|0;if((a|0)!=32767){continue}break}break e}Z(70199,38296,2796,62056);B()}Z(73578,38296,2797,62056);B()}Z(70199,38296,1860,70408);B()}Z(63839,38296,1824,18148);B()}Z(12526,38296,1831,18148);B()}Z(70199,38296,2815,62056);B()}Z(73578,38296,2816,62056);B()}h=e?h:0;a=L[d+3260>>1];if((a|0)!=32767&m>>>0<=8){continue}break}if((j|0)!=10){break d}dj(3,88293,123294,0);break d}a=J[d+3220>>2];J[c+16>>2]=J[d+3216>>2];J[c+20>>2]=a;a=J[d+3228>>2];J[c+24>>2]=J[d+3224>>2];J[c+28>>2]=a;h=tv(d,c+16|0,2)&h}J[74010]=J[74010]+l;J[c+16>>2]=l;J[c+20>>2]=0;J[c>>2]=l;J[c+4>>2]=0;Ui=c+48|0;return h&1}Z(145396,53895,487,84789);B()}function Mja(a){a=a|0;var b=0,c=0,d=0,e=0,f=0,g=0,h=0;d=J[a+8>>2];b=J[d+16>>2];e=J[J[a+16>>2]>>2];if(e>>>0>2]-b>>3>>>0){b=J[b+(e<<3)>>2];c=J[d>>2];if(b>>>0>2]-c>>8>>>0){a:{b=c+(b<<8)|0;c=L[b+246>>1];if(c&4){I[b+246>>1]=c&65531;cj(J[b+240>>2])}c=0;a=J[a>>2];b:{if(!a){break b}a=J[a>>2];if(!a){break b}c=J[a>>2]}a=J[b+224>>2];if(a){vj(c,a)}a=J[b+228>>2];if(a){vj(c,a)}a=J[b+220>>2];if(a){zr(a)}c:{d:{a=J[d+16>>2];if(e>>>0>2]-a>>3>>>0){c=J[d>>2];f=J[d+4>>2]-c>>8;g=f-1|0;b=J[d+32>>2];if(g>>>0>=J[d+36>>2]-b>>2>>>0){break a}h=f;e=a+(e<<3)|0;f=J[e>>2];if(h>>>0<=f>>>0){break d}a=J[b+(g<<2)>>2];ij((f<<8)+c|0,0,256);b=J[d+16>>2];if(a>>>0>=J[d+20>>2]-b>>3>>>0){break a}f=b+(a<<3)|0;b=J[e>>2];J[f>>2]=b;c=J[d+32>>2];if(b>>>0>=J[d+36>>2]-c>>2>>>0){break a}J[c+(b<<2)>>2]=a;e:{f:{c=J[e>>2];b=J[d+4>>2];a=J[d>>2];if(c>>>0>8>>>0){a=a+(c<<8)|0;J[a>>2]=J[b-256>>2];N[a+16>>2]=N[b-240>>2];N[a+20>>2]=N[b-236>>2];N[a+24>>2]=N[b-232>>2];N[a+32>>2]=N[b-224>>2];N[a+36>>2]=N[b-220>>2];N[a+40>>2]=N[b-216>>2];N[a+44>>2]=N[b-212>>2];N[a+48>>2]=N[b-208>>2];N[a+52>>2]=N[b-204>>2];N[a+56>>2]=N[b-200>>2];N[a+64>>2]=N[b-192>>2];N[a+68>>2]=N[b-188>>2];N[a+72>>2]=N[b-184>>2];N[a+80>>2]=N[b-176>>2];N[a+84>>2]=N[b-172>>2];N[a+88>>2]=N[b-168>>2];N[a+92>>2]=N[b-164>>2];N[a+96>>2]=N[b-160>>2];N[a+100>>2]=N[b-156>>2];N[a+104>>2]=N[b-152>>2];N[a+108>>2]=N[b-148>>2];N[a+112>>2]=N[b-144>>2];N[a+116>>2]=N[b-140>>2];N[a+120>>2]=N[b-136>>2];N[a+124>>2]=N[b-132>>2];N[a+128>>2]=N[b-128>>2];N[a+132>>2]=N[b-124>>2];N[a+136>>2]=N[b-120>>2];N[a+140>>2]=N[b-116>>2];N[a+144>>2]=N[b-112>>2];N[a+148>>2]=N[b-108>>2];N[a+152>>2]=N[b-104>>2];N[a+156>>2]=N[b-100>>2];N[a+160>>2]=N[b-96>>2];N[a+164>>2]=N[b-92>>2];N[a+168>>2]=N[b-88>>2];N[a+172>>2]=N[b-84>>2];N[a+176>>2]=N[b-80>>2];N[a+180>>2]=N[b-76>>2];N[a+184>>2]=N[b-72>>2];N[a+188>>2]=N[b-68>>2];b=b+-64|0;c=J[b+4>>2];J[a+192>>2]=J[b>>2];J[a+196>>2]=c;c=J[b+12>>2];J[a+200>>2]=J[b+8>>2];J[a+204>>2]=c;c=J[b+20>>2];J[a+208>>2]=J[b+16>>2];J[a+212>>2]=c;c=J[b+28>>2];J[a+216>>2]=J[b+24>>2];J[a+220>>2]=c;c=J[b+36>>2];J[a+224>>2]=J[b+32>>2];J[a+228>>2]=c;c=J[b+44>>2];J[a+232>>2]=J[b+40>>2];J[a+236>>2]=c;c=J[b+52>>2];J[a+240>>2]=J[b+48>>2];J[a+244>>2]=c;a=J[d+4>>2]-256|0;J[d+4>>2]=a;if(a>>>0>2]){break f}break e}Z(145381,53895,537,43537);B()}Z(12682,53895,540,43537);B()}J[e+4>>2]=J[d+48>>2];J[d+48>>2]=e-J[d+16>>2]>>3;break c}break a}Z(59182,54416,152,68876);B()}return 0}}}Z(145396,53895,487,84789);B()}function r7(a,b){a=a|0;b=b|0;var c=0,d=0,e=0,f=0,g=0,h=0,i=0,j=0,k=0,l=0,m=0,n=0,o=0,p=0,q=0;a=Ui-3280|0;Ui=a;a:{b:{if(!(H[b+24|0]&1)){break b}h=J[J[245393]+8388>>2];c=Ui-160|0;Ui=c;d=J[b+4>>2];J[c+144>>2]=d;dj(2,95071,148027,c+144|0);c:{if(tJ(d,c+148|0)){J[c+128>>2]=d;dj(4,95071,148774,c+128|0);d=-3;break c}e=J[71985];d=J[c+148>>2];J[c+156>>2]=0;d:{if(uJ(d,e)){J[c+112>>2]=e;dj(4,95071,148435,c+112|0);break d}J[c+156>>2]=d?J[d+96>>2]:0;J[c+152>>2]=0;fo(c+152|0,16,J[c+156>>2]);if(tu(d,J[c+152>>2],J[c+156>>2])){J[c+80>>2]=e;dj(4,95071,146625,c+80|0);Gt(d);cj(J[c+152>>2]);break d}Gt(d);d=J[c+152>>2];if(!d){break d}e=J[c+156>>2];J[c+152>>2]=0;e=Qu(d,e,c+152|0);cj(d);if(e){dj(4,95071,34760,0);d=-9;break c}d=EK(J[c+152>>2],h);e:{if(d){e=d+21|0;if(e>>>0>21){g=97515}else{g=J[(e<<2)+223356>>2]}J[c+64>>2]=g;dj(4,95071,30512,c- -64|0);break e}o=J[c+152>>2];e=J[c+148>>2];d=e;if(d){l=J[d+16>>2]}else{l=-1}f:{if(!l){break f}while(1){ex(e,m);d=0;h=e?J[e+92>>2]:0;f=-1;g:{if(!e){break g}f=-10;if(J[e+88>>2]<0){break g}f=J[e+92>>2];f=K[((yj(f)&65535)+f|0)-1|0];f=(f|0)==47|(f|0)==92}h:{if(f){break h}if(!jj(J[71985],h)){break h}J[c+156>>2]=e?J[e+96>>2]:0;d=J[c+156>>2];if(g>>>0>>0){k=ml(k,d);d=J[c+156>>2];g=d}tu(e,k,d);i:{i=J[c+156>>2];j:{if(i>>>0<16){d=0;f=60422;break j}q=yj(h);f=Ui;d=-1;j=k+16|0;if(!(!o|!j)){n=J[J[o+8>>2]>>2];p=J[(n<<2)+159120>>2]>>>3|0;d=f-(p+15&-16)|0;Ui=d;$B(n,j,i-16|0,d);i=p<<1;j=d-(i+16&-16)|0;Ui=j;Os(d,J[(n<<2)+159120>>2]>>>3|0,j,i|1);d=XB(j,i,h,q)}Ui=f;if(!d){break i}f=60380}J[c+32>>2]=h;dj(4,95071,f,c+32|0);break h}d=0}Gt(e);m=m+1|0;if(l>>>0<=m>>>0){break f}if(!d){continue}break}}cj(k);d=0}e=J[c+152>>2];if(e){co(e)}uu(J[c+148>>2]);e=d+21|0;if(e>>>0>21){g=97515}else{g=J[(e<<2)+223356>>2]}J[c+16>>2]=g;dj(2,95071,28087,c+16|0);break c}J[c>>2]=J[71985];dj(4,95071,60498,c);uu(J[c+148>>2]);d=-9}Ui=c+160|0;if(!d){break b}b=d+21|0;if(b>>>0>21){b=97515}else{b=J[(b<<2)+223356>>2]}J[a+52>>2]=b;J[a+48>>2]=d;dj(4,95071,27915,a+48|0);b=-3;break a}J[a+32>>2]=J[b+4>>2];c=a+2256|0;Gj(c,1024,26120,a+32|0);ep(c,a+68|0);c=bo(bj(43210),Yi);if(!c){dj(4,95071,35582,0);b=-10;break a}J[a+64>>2]=0;if(Nn(c,a+68|0,J[245391],a- -64|0)){J[a+16>>2]=a+2256;dj(4,95071,147638,a+16|0);b=-1e3;break a}c=J[a+64>>2];k:{if(!c){break k}b=or(J[245390],J[b+8>>2],c,J[b+20>>2],1);if(b){b=b+21|0;if(b>>>0>21){b=97515}else{b=J[(b<<2)+223356>>2]}J[a>>2]=b;dj(4,95071,29311,a);break k}Mu(J[245390])}J[245394]=J[a+64>>2];b=0}Ui=a+3280|0;return b|0}function Nq(a,b,c,d){var e=0,f=0,g=0,h=0,i=0,j=0,k=0,l=0,m=0,n=0,o=0,p=0;e=Ui-16|0;n=e;Ui=e;a:{b:{c:{g=J[216330];if(g){h=2;d:{if(!b|!d){break d}h=5;if(!c){break d}l=c<<4;j=l+36|0;f=e-((c<<2)+15&2032)|0;Ui=f;e=1;while(1){m=P(k,24)+b|0;o=K[m+12|0];if(!o){break d}m=J[m+8>>2];if(m>>>0>=9){break c}p=i;i=J[(m<<2)+173920>>2];m=(p+i|0)-1&0-i;J[f+(k<<2)>>2]=m;e=e>>>0>>0?i:e;i=m+P(i,o)|0;k=k+1|0;if((k|0)!=(c|0)){continue}break}k=(e+i|0)-1&0-e;if(!k){break d}h=4;l=(P(a,k)+(l+51&8176)|0)+16|0;if((l|0)==(j|0)){break d}i=J[g>>2];e=64;h=J[g+8>>2];e:{if(h){e=0;f:{while(1){if(J[i+(e<<2)>>2]){e=e+1|0;if((h|0)!=(e|0)){continue}break f}break}if((e|0)!=-1){break e}}e=h- -64|0;if(e>>>0>=65536){break b}}h=2;J[g>>2]=ml(i,e<<2);J[g+4>>2]=ml(J[g+4>>2],e<<1);ij(J[g>>2]+(J[g+8>>2]<<2)|0,0,256);ij(J[g+4>>2]+(J[g+8>>2]<<1)|0,0,128);J[g+8>>2]=J[g+8>>2]- -64;if(!J[g>>2]|!J[g+4>>2]){break d}}J[n+12>>2]=0;h=2;if(fo(n+12|0,16,l)){break d}e=J[n+12>>2];H[e+34|0]=c;J[e+28>>2]=a;I[e+32>>1]=0;J[e+24>>2]=k;J[e+8>>2]=0;J[e+12>>2]=0;J[e+4>>2]=e+36;J[e>>2]=e+j;J[e+16>>2]=0;J[e+20>>2]=0;a=f;c=0;k=0;h=K[e+34|0];g:{if(!h){break g}i=J[e+4>>2];if((h|0)!=1){m=h&254;while(1){j=P(c,24)+b|0;l=J[j+4>>2];f=i+(c<<4)|0;J[f>>2]=J[j>>2];J[f+4>>2]=l;H[f+12|0]=J[j+8>>2];H[f+13|0]=K[j+12|0];J[f+8>>2]=J[a+(c<<2)>>2];l=c|1;f=i+(l<<4)|0;j=P(l,24)+b|0;o=J[j+4>>2];J[f>>2]=J[j>>2];J[f+4>>2]=o;H[f+12|0]=J[j+8>>2];H[f+13|0]=K[j+12|0];J[f+8>>2]=J[a+(l<<2)>>2];c=c+2|0;k=k+2|0;if((m|0)!=(k|0)){continue}break}}if(!(h&1)){break g}b=P(c,24)+b|0;h=J[b+4>>2];f=i+(c<<4)|0;J[f>>2]=J[b>>2];J[f+4>>2]=h;H[f+12|0]=J[b+8>>2];H[f+13|0]=K[b+12|0];J[f+8>>2]=J[a+(c<<2)>>2]}b=J[43477];a=J[e>>2]+P(J[e+24>>2],J[e+28>>2])|0;c=J[43476];H[a|0]=c;H[a+1|0]=c>>>8;H[a+2|0]=c>>>16;H[a+3|0]=c>>>24;H[a+4|0]=b;H[a+5|0]=b>>>8;H[a+6|0]=b>>>16;H[a+7|0]=b>>>24;b=J[43479];c=J[43478];H[a+8|0]=c;H[a+9|0]=c>>>8;H[a+10|0]=c>>>16;H[a+11|0]=c>>>24;H[a+12|0]=b;H[a+13|0]=b>>>8;H[a+14|0]=b>>>16;H[a+15|0]=b>>>24;b=0;h:{i:{a=J[g+8>>2];if(!a){break i}c=J[g>>2];while(1){f=c+(b<<2)|0;if(J[f>>2]){b=b+1|0;if((a|0)!=(b|0)){continue}break i}break}if((b|0)==-1){break i}a=L[g+12>>1];a=a>>>0>65533?1:a+1|0;I[g+12>>1]=a;I[J[g+4>>2]+(b<<1)>>1]=a;J[f>>2]=e;a=L[g+12>>1]<<16|b;if((a|0)!=-1){break h}Z(96071,54230,266,9606);B()}Z(96003,54230,253,9606);B()}J[d>>2]=a;h=0;if((a|0)==-1){break a}}Ui=n+16|0;return h}Z(152265,40052,298,62025);B()}Z(152787,40052,154,64561);B()}Z(94407,54230,208,62238);B()}Z(96034,40052,364,62025);B()}function HA(a,b,c){var d=0,e=0,f=0,g=0,h=0,i=0;d=K[b|0]|K[b+1|0]<<8|(K[b+2|0]<<16|K[b+3|0]<<24);d=d<<24|(d&65280)<<8|(d>>>8&65280|d>>>24);b=K[b+4|0]|K[b+5|0]<<8|(K[b+6|0]<<16|K[b+7|0]<<24);b=b<<24|(b&65280)<<8|(b>>>8&65280|b>>>24);e=(d>>>4^b)&252645135;d=e<<4^d;e=b^e;b=d>>>16^e&65535;e=b^e;b=d^b<<16;d=(e>>>2^b)&858993459;e=d<<2^e;b=b^d;d=(e>>>8^b)&16711935;e=oxa(d<<8^e,1);b=b^d;d=(b^e)&-1431655766;e=e^d;b=oxa(b^d,1);d=a;while(1){i=e;h=J[d+4>>2]^oxa(e,28);f=b;b=J[d>>2]^e;b=J[((h&63)<<2)+179392>>2]^(f^J[((b&63)<<2)+178368>>2]^J[(b>>>6&252)+178624>>2]^J[(b>>>14&252)+178880>>2]^J[(b>>>22&252)+179136>>2])^J[(h>>>6&252)+179648>>2]^J[(h>>>14&252)+179904>>2]^J[(h>>>22&252)+180160>>2];e=b^J[d+8>>2];f=J[((e&63)<<2)+178368>>2]^J[(e>>>6&252)+178624>>2]^J[(e>>>14&252)+178880>>2]^J[(e>>>22&252)+179136>>2];e=J[d+12>>2]^oxa(b,28);e=i^(f^J[((e&63)<<2)+179392>>2]^J[(e>>>6&252)+179648>>2]^J[(e>>>14&252)+179904>>2]^J[(e>>>22&252)+180160>>2]);d=d+16|0;g=g+1|0;if((g|0)!=8){continue}break}d=a+128|0;g=0;while(1){f=b;h=J[d+4>>2]^oxa(b,28);b=J[d>>2]^b;e=J[((h&63)<<2)+179392>>2]^(J[((b&63)<<2)+178368>>2]^e^J[(b>>>6&252)+178624>>2]^J[(b>>>14&252)+178880>>2]^J[(b>>>22&252)+179136>>2])^J[(h>>>6&252)+179648>>2]^J[(h>>>14&252)+179904>>2]^J[(h>>>22&252)+180160>>2];b=e^J[d+8>>2];i=J[((b&63)<<2)+178368>>2]^J[(b>>>6&252)+178624>>2]^J[(b>>>14&252)+178880>>2]^J[(b>>>22&252)+179136>>2];b=J[d+12>>2]^oxa(e,28);b=f^(i^J[((b&63)<<2)+179392>>2]^J[(b>>>6&252)+179648>>2]^J[(b>>>14&252)+179904>>2]^J[(b>>>22&252)+180160>>2]);d=d+16|0;g=g+1|0;if((g|0)!=8){continue}break}d=a+256|0;g=0;while(1){a=J[d+4>>2]^oxa(e,28);f=b;b=J[d>>2]^e;b=J[((a&63)<<2)+179392>>2]^(f^J[((b&63)<<2)+178368>>2]^J[(b>>>6&252)+178624>>2]^J[(b>>>14&252)+178880>>2]^J[(b>>>22&252)+179136>>2])^J[(a>>>6&252)+179648>>2]^J[(a>>>14&252)+179904>>2]^J[(a>>>22&252)+180160>>2];a=b^J[d+8>>2];f=J[((a&63)<<2)+178368>>2]^J[(a>>>6&252)+178624>>2]^J[(a>>>14&252)+178880>>2]^J[(a>>>22&252)+179136>>2];a=J[d+12>>2]^oxa(b,28);e=f^J[((a&63)<<2)+179392>>2]^J[(a>>>6&252)+179648>>2]^J[(a>>>14&252)+179904>>2]^J[(a>>>22&252)+180160>>2]^e;d=d+16|0;g=g+1|0;if((g|0)!=8){continue}break}f=b;a=oxa(e,31);b=(a^b)&-1431655766;d=oxa(f^b,31);a=a^b;b=(d>>>8^a)&16711935;d=b<<8^d;a=a^b;b=(d>>>2^a)&858993459;d=b<<2^d;a=a^b;b=d&65535^a>>>16;e=b<<16^a;a=b^d;b=(e>>>4^a)&252645135;a=a^b;H[c+7|0]=a;H[c+6|0]=a>>>8;H[c+5|0]=a>>>16;H[c+4|0]=a>>>24;a=e^b<<4;H[c+3|0]=a;H[c+2|0]=a>>>8;H[c+1|0]=a>>>16;H[c|0]=a>>>24;return 0}function jL(a,b,c){var d=0,e=0,f=0,g=Q(0),h=0,i=0,j=Q(0),k=0,l=0,m=0,n=Q(0),o=0,p=0,q=0,r=0,s=0,t=0,u=0,v=0,w=0,x=0,y=Q(0),z=Q(0),A=0;m=Ui-272|0;Ui=m;J[m+268>>2]=0;a:{b:{if(!(H[a+2172|0]&1)){d=J[a+2184>>2]-J[a+2176>>2]>>2;t=a+2168|0;s=a+2164|0;lj(d,4,a+2160|0,t,s);J[a+2164>>2]=J[a+2160>>2];if(!(H[a+2156|0]&1)){lj(d,8,a+2144|0,a+2152|0,a+2148|0);d=J[a+2180>>2]-J[a+2176>>2]>>2;p=J[a+2144>>2];if(d>>>0<=J[a+2152>>2]-p>>3>>>0){J[a+2148>>2]=(d<<3)+p;d=J[a+2196>>2];q=J[a+2192>>2];k=(d-q|0)/12|0;c:{u=(d|0)==(q|0);d:{if(u){break d}v=J[a+2112>>2];A=k>>>0<=1?1:k;r=m+8|0;j=Q(-34028234663852886e22);n=Q(34028234663852886e22);while(1){e=P(l,12)+q|0;sL(a,J[e>>2],m);h=J[e+8>>2]&2147483647;J[e+8>>2]=h;e:{f:{if(b){d=iL(J[m>>2],r,b,c);h=J[e+8>>2];if(!d){break f}}o=0;d=J[e+4>>2];i=d;g:{f=h&2147483647;if(f+d>>>0<=d>>>0){break g}while(1){f=J[a+2176>>2];if(J[a+2180>>2]-f>>2>>>0>i>>>0){w=J[f+(i<<2)>>2];f=P(w,48)+v|0;x=J[f+36>>2];h:{if(!(x&16384)){o=o+1|0;break h}if((x&48)!=16){break h}g=N[f+8>>2];y=N[f>>2];z=N[f+4>>2];g=Q(Q(N[a+2472>>2]+Q(Q(N[a+2456>>2]*g)+Q(Q(N[a+2424>>2]*y)+Q(z*N[a+2440>>2]))))/Q(N[a+2476>>2]+Q(Q(N[a+2460>>2]*g)+Q(Q(N[a+2428>>2]*y)+Q(z*N[a+2444>>2])))));N[(w<<3)+p>>2]=g;j=g>j?g:j;n=g>2];d=J[e+4>>2]}i=i+1|0;f=h&2147483647;if(i>>>0>>0){continue}break g}break}break b}if((f|0)!=(o|0)){break e}}J[e+8>>2]=h|-2147483648}l=l+1|0;if((A|0)!=(l|0)){continue}break}g=Q(0);if(j>n){g=Q(Q(Q(1)/Q(j-n))*Q(16777200))}if(u){break d}o=k>>>0<=1?1:k;g=Q(-g);l=0;while(1){h=P(l,12)+q|0;b=J[h+8>>2];i:{if((b|0)<0){break i}d=J[h+4>>2];i=d;if(b+d>>>0<=d>>>0){break i}while(1){c=J[a+2176>>2];if(J[a+2180>>2]-c>>2>>>0<=i>>>0){break b}k=J[c+(i<<2)>>2];e=P(k,48)+v|0;f=J[e+36>>2];if(f&16384){c=(k<<3)+p|0;b=J[c+4>>2]&-251658241|f<<20&50331648;J[c+4>>2]=b;j:{if((J[e+36>>2]&48)==16){d=b&-218103808;b=J[c>>2];j=Q(Q(g*Q(N[c>>2]-n))+Q(16777208));k:{if(j=Q(0)){r=~~j>>>0;break k}r=0}d=d|r&16777215;break j}d=J[e+24>>2]&16777215|b&-218103808;b=J[c>>2]}J[c+4>>2]=d;J[c+4>>2]=d&268435455|J[e+36>>2]<<28;d=b&-16777216;b=J[e+28>>2]&16777215;J[c>>2]=d|b;J[c>>2]=b|J[e+36>>2]<<18&-16777216;b=J[s>>2];if((b|0)==J[t>>2]){break c}J[s>>2]=b+4;J[b>>2]=k;d=J[h+4>>2];b=J[h+8>>2]}i=i+1|0;if(i>>>0<(b&2147483647)+d>>>0){continue}break}}l=l+1|0;if((o|0)!=(l|0)){continue}break}}Ui=m+272|0;return}Z(112520,53895,557,53220);B()}Z(144782,53895,514,59583);B()}break a}break a}Z(145396,53895,487,84789);B()}Z(151729,53895,501,2284);B()}function Xha(a){a=a|0;var b=0,c=0,d=0,e=0,f=0,g=0,h=0,i=0,j=0,k=0,l=0,m=0,n=0,o=0,p=Q(0),q=0,r=0,s=Q(0),t=Q(0),u=0,v=0,w=0,x=0,y=0,z=0,A=0,C=0,D=Q(0),E=Q(0),F=Q(0),G=Q(0),I=Q(0),O=Q(0),R=Q(0),S=Q(0),T=Q(0),U=Q(0),V=Q(0),W=Q(0),X=0;a:{b:{c:{h=J[a+4>>2];b=J[h+8>>2];n=J[h+4>>2];if((b|0)!=(n|0)){u=b-n>>2;j=J[a+8>>2];while(1){f=J[n+(g<<2)>>2];d:{if((K[f+166|0]&3)!=3|!L[f+164>>1]){break d}a=J[f+128>>2];l=J[f+124>>2];if((a|0)==(l|0)){break d}d=a-l|0;b=d>>>0<=1?1:d;i=b&1;a=0;if(d>>>0>=2){m=b&-2;b=0;while(1){d=a+l|0;e=H[d|0]&1?P(L[f+160>>1],L[f+162>>1])+e|0:e;e=H[d+1|0]&1?P(L[f+160>>1],L[f+162>>1])+e|0:e;a=a+2|0;b=b+2|0;if((m|0)!=(b|0)){continue}break}}if(!i|!(H[a+l|0]&1)){break d}e=P(L[f+160>>1],L[f+162>>1])+e|0}g=g+1|0;if((u|0)!=(g|0)){continue}break}if((J[h+28>>2]-J[h+20>>2]|0)/336>>>0>>0){if(H[h+32|0]&1){break b}lj(e,336,h+20|0,h+28|0,h+24|0)}q=J[j>>2];v=zq(q,e);x=Su(q,319,320,h)<<6|16;a=v;while(1){b=J[h+4>>2];if(J[h+8>>2]-b>>2>>>0<=o>>>0){break a}c=J[b+(o<<2)>>2];e:{if((K[c+166|0]&3)!=3|!L[c+164>>1]){break e}b=J[c+144>>2];if(!(!b|!K[b+52|0])){lv(c)}d=J[c+156>>2];b=J[c+152>>2];if(!b){b=J[d>>2]}r=J[d+4>>2];f=J[r+8>>2];if(!f){break e}b=J[b+96>>2];y=J[b+36>>2];z=J[b+32>>2];A=o&65535;k=0;j=0;while(1){b=(j|0)!=0;d=J[c+124>>2];if(b|!j&J[c+128>>2]-d>>>0<=k>>>0){break a}f:{if(!(H[d+k|0]&1)){break f}if(b|!j&M[r+8>>2]<=k>>>0){break c}d=L[c+162>>1];if(!d){break f}C=J[r+4>>2]+(k<<5)|0;l=k<<16|A;e=0;i=0;m=0;g=L[c+160>>1];b=g;while(1){if(b&65535){n=i<<16;s=Q(P(i,y)>>>0);b=0;d=0;g:{while(1){w=J[c+108>>2];if(J[c+112>>2]-w>>>0>e>>>0){if(K[e+w|0]&2){D=N[c+80>>2];E=N[c+64>>2];F=N[c+32>>2];G=N[c+48>>2];I=N[c+84>>2];O=N[c+68>>2];R=N[c+36>>2];S=N[c+52>>2];T=N[c+88>>2];U=N[c+72>>2];t=N[C+4>>2];p=N[c+40>>2];V=N[c+56>>2];J[a+16>>2]=l|X;J[a+20>>2]=b|n;W=p;p=Q(P(b,z)>>>0);N[a+8>>2]=T+Q(Q(U*t)+Q(Q(W*p)+Q(V*s)));N[a+4>>2]=I+Q(Q(O*t)+Q(Q(R*p)+Q(S*s)));N[a>>2]=D+Q(Q(E*t)+Q(Q(F*p)+Q(G*s)));g=J[c+148>>2];if(!g){g=J[J[c+156>>2]+24>>2]}J[a+32>>2]=J[J[g>>2]+144>>2];J[a+28>>2]=J[c+140>>2];J[a+36>>2]=x|J[a+36>>2]&-16384;g=L[c+160>>1];a=a+48|0}e=e+1|0;b=b+1|0;d=b?d:d+1|0;if(!d&(g&65535)>>>0>b>>>0){continue}break g}break}break a}d=L[c+162>>1];b=g}else{b=0}i=i+1|0;m=i?m:m+1|0;if(!m&(d&65535)>>>0>i>>>0){continue}break}}b=j;d=k+1|0;b=d?b:b+1|0;k=d;j=b;if((f|0)!=(d|0)|b){continue}break}}o=o+1|0;if((u|0)!=(o|0)){continue}break}yq(q,v,a)}return 0}Z(12664,55417,190,84789);B()}Z(151729,53895,501,2284);B()}Z(145396,53895,487,84789);B()}function Pqa(a,b,c,d,e,f,g,h,i,j,k){a=a|0;b=b|0;c=c|0;d=d|0;e=Q(e);f=Q(f);g=Q(g);h=Q(h);i=Q(i);j=j|0;k=Q(k);var l=0,m=0,n=0,o=Q(0),p=Q(0),q=Q(0),r=0,s=Q(0),t=Q(0),u=Q(0),v=Q(0),w=Q(0),x=0,y=Q(0),z=0,A=Q(0),B=Q(0),C=Q(0),D=0,E=0,F=Q(0),G=0,H=0,I=Q(0),K=0,L=Q(0),M=Q(0),O=Q(0),P=0,S=0,T=0,U=0,V=0,W=Q(0);m=Ui-2416|0;Ui=m;s=N[b>>2];y=N[c>>2];t=N[b+4>>2];B=N[c+4>>2];u=N[b+8>>2];C=N[c+8>>2];J[m+44>>2]=0;p=Q(e*C);N[m+40>>2]=u+p;q=Q(e*B);N[m+36>>2]=t+q;v=Q(e*y);N[m+32>>2]=s+v;J[m+28>>2]=0;N[m+24>>2]=u-p;N[m+20>>2]=t-q;N[m+16>>2]=s-v;o=Q(k*Q(.01745329238474369));k=Q(o+Q(-1.5707963705062866));H=f<=Q(-1.5707963705062866);v=H?k:f;f=Q(Q(1.5707963705062866)-o);D=g>=Q(1.5707963705062866);g=D?f:g;if(v>g){D=1;H=1;v=k;g=f}p=N[d>>2];q=N[d+4>>2];k=N[d+8>>2];z=h>i;I=z?Q(o+Q(-3.1415927410125732)):h;w=Q((z?Q(3.1415927410125732):i)-I);f=Q(w/o);a:{if(Q(R(f))>>0));w=Q(Q(y*Q(0))+I);l=Q(i-h)>=Q(6.2831854820251465);g=Q(g-v);f=Q(g/o);b:{if(Q(R(f))>>0));n=m+48|0;l=m+1232|0;C=Rj(w);w=Hj(w);while(1){z=l;s=N[c>>2];t=N[b>>2];u=N[d>>2];p=N[c+4>>2];q=N[b+4>>2];k=N[d+4>>2];i=N[c+8>>2];h=N[b+8>>2];g=N[d+8>>2];J[n+12>>2]=0;f=Q(Q(Q(x>>>0)*B)+v);F=Q(e*Rj(f));o=Q(F*w);W=g;g=Q(F*C);A=Q(e*Hj(f));N[n+8>>2]=Q(Q(L*o)+Q(h+Q(W*g)))+Q(i*A);N[n+4>>2]=Q(Q(M*o)+Q(q+Q(g*k)))+Q(A*p);N[n>>2]=Q(Q(O*o)+Q(t+Q(g*u)))+Q(A*s);K=(x|0)==(S|0);T=K&H;if(x|D){Zi[J[J[a>>2]+8>>2]](a,x?l:m+16|0,n,j)}l=J[n+12>>2];J[m+8>>2]=J[n+8>>2];J[m+12>>2]=l;l=J[n+4>>2];J[m>>2]=J[n>>2];J[m+4>>2]=l;if(T){Zi[J[J[a>>2]+8>>2]](a,m+32|0,n,j)}U=!x|K;if(!((U^-1|P)&1)){Zi[J[J[a>>2]+8>>2]](a,b,n,j)}l=1;while(1){s=N[c>>2];t=N[b>>2];u=N[d>>2];p=N[c+4>>2];q=N[b+4>>2];k=N[d+4>>2];i=N[c+8>>2];h=N[b+8>>2];g=N[d+8>>2];V=l<<4;r=V+n|0;J[r+12>>2]=0;G=l;f=Q(Q(Q(l>>>0)*y)+I);o=Q(F*Hj(f));f=Q(F*Rj(f));N[r+8>>2]=Q(Q(L*o)+Q(h+Q(g*f)))+Q(A*i);N[r+4>>2]=Q(Q(M*o)+Q(q+Q(f*k)))+Q(A*p);N[r>>2]=Q(Q(O*o)+Q(t+Q(f*u)))+Q(A*s);c:{d:{if(x){l=z+V|0;break d}l=m+16|0;if(!D){break c}}Zi[J[J[a>>2]+8>>2]](a,l,r,j)}Zi[J[J[a>>2]+8>>2]](a,r-16|0,r,j);if(T){Zi[J[J[a>>2]+8>>2]](a,m+32|0,r,j)}e:{f:{if(P){l=m;if((G|0)==(E|0)){break f}break e}l=b;if(!((G|0)==(E|0)&U)){break e}}Zi[J[J[a>>2]+8>>2]](a,l,r,j)}l=G+1|0;if((G|0)!=(E|0)){continue}break}x=x+1|0;l=n;n=z;if(!K){continue}break}Ui=m+2416|0}function ZP(a){var b=0,c=0,d=0,e=0,f=0,g=0;e=Ui-32|0;Ui=e;g=J[a+152>>2];J[e+12>>2]=0;J[e+16>>2]=0;J[e+28>>2]=0;J[e+20>>2]=0;J[e+24>>2]=0;c=J[a+192>>2];if(!c){c=J[g+8>>2]}J[e+8>>2]=J[c>>2];c=e+12|0;Ek(c,g+152|0,4);Ek(c,e+8|0,4);b=J[a+160>>2];a:{b:{if(b){break b}c=J[a+192>>2];if(c){b=J[c+4>>2];if(b){break b}}c=J[a+152>>2];b=J[c+12>>2];if(b){break b}c=J[c+8>>2];if(!c){break a}b=J[c+4>>2];if(!b){break a}}d=J[b>>2];f=J[b+4>>2]}J[e>>2]=d;J[e+4>>2]=f;Ek(e+12|0,e,8);b=J[a+164>>2];c:{d:{if(b){break d}d=J[a+192>>2];if(d){b=J[d+8>>2];if(b){break d}}c=J[a+152>>2];b=J[c+16>>2];if(b){break d}d=0;f=0;c=J[c+8>>2];if(!c){break c}b=J[c+8>>2];if(!b){break c}}d=J[b>>2];f=J[b+4>>2]}J[e>>2]=d;J[e+4>>2]=f;Ek(e+12|0,e,8);b=J[a+168>>2];e:{f:{if(b){break f}d=J[a+192>>2];if(d){b=J[d+12>>2];if(b){break f}}c=J[a+152>>2];b=J[c+20>>2];if(b){break f}d=0;f=0;c=J[c+8>>2];if(!c){break e}b=J[c+12>>2];if(!b){break e}}d=J[b>>2];f=J[b+4>>2]}J[e>>2]=d;J[e+4>>2]=f;Ek(e+12|0,e,8);b=J[a+172>>2];g:{h:{if(b){break h}d=J[a+192>>2];if(d){b=J[d+16>>2];if(b){break h}}c=J[a+152>>2];b=J[c+24>>2];if(b){break h}d=0;f=0;c=J[c+8>>2];if(!c){break g}b=J[c+16>>2];if(!b){break g}}d=J[b>>2];f=J[b+4>>2]}J[e>>2]=d;J[e+4>>2]=f;Ek(e+12|0,e,8);b=J[a+176>>2];i:{j:{if(b){break j}d=J[a+192>>2];if(d){b=J[d+20>>2];if(b){break j}}c=J[a+152>>2];b=J[c+28>>2];if(b){break j}d=0;f=0;c=J[c+8>>2];if(!c){break i}b=J[c+20>>2];if(!b){break i}}d=J[b>>2];f=J[b+4>>2]}J[e>>2]=d;J[e+4>>2]=f;Ek(e+12|0,e,8);b=J[a+180>>2];k:{l:{if(b){break l}d=J[a+192>>2];if(d){b=J[d+24>>2];if(b){break l}}c=J[a+152>>2];b=J[c+32>>2];if(b){break l}d=0;f=0;c=J[c+8>>2];if(!c){break k}b=J[c+24>>2];if(!b){break k}}d=J[b>>2];f=J[b+4>>2]}J[e>>2]=d;J[e+4>>2]=f;Ek(e+12|0,e,8);b=J[a+184>>2];m:{n:{if(b){break n}d=J[a+192>>2];if(d){b=J[d+28>>2];if(b){break n}}c=J[a+152>>2];b=J[c+36>>2];if(b){break n}d=0;f=0;c=J[c+8>>2];if(!c){break m}b=J[c+28>>2];if(!b){break m}}d=J[b>>2];f=J[b+4>>2]}J[e>>2]=d;J[e+4>>2]=f;Ek(e+12|0,e,8);b=J[a+188>>2];o:{p:{if(b){break p}d=J[a+192>>2];if(d){b=J[d+32>>2];if(b){break p}}c=J[a+152>>2];b=J[c+40>>2];if(b){break p}d=0;f=0;c=J[c+8>>2];if(!c){break o}b=J[c+32>>2];if(!b){break o}}d=J[b>>2];f=J[b+4>>2]}J[e>>2]=d;J[e+4>>2]=f;c=e+12|0;Ek(c,e,8);d=J[a+156>>2];if(!d){d=J[g+4>>2]}Ek(c,d+8|0,8);b=J[a+196>>2];q:{if(!b){b=J[J[a+152>>2]+144>>2];if(!b){break q}}Ek(e+12|0,b,P(L[b+200>>1],24))}d=J[a+148>>2];if(d){yr(d,e+12|0)}J[a+144>>2]=mn(e+12|0);H[a+204|0]=K[a+204|0]&251;Ui=e+32|0}function Mz(a,b,c,d,e,f,g,h){var i=0,j=0,k=0,l=0,m=0,n=0,o=0,p=0,q=0,r=0,s=0;a:{if(!f){break a}while(1){b:{c:{if(!((f|0)<=(h|0)|(e|0)<=(h|0))){if(!e){break a}i=J[d>>2];k=J[b>>2];j=J[(i+P(k,48)|0)+32>>2];while(1){l=J[a>>2];if(j>>>0>2]){break c}a=a+4|0;e=e-1|0;if(e){continue}break}break a}if((e|0)>(f|0)){break b}if((a|0)==(b|0)){break a}i=g;j=a;while(1){J[i>>2]=J[j>>2];i=i+4|0;j=j+4|0;if((j|0)!=(b|0)){continue}break}d=J[d>>2];while(1){if((b|0)==(c|0)){el(a,g,i-g|0);return}f=J[b>>2];h=J[(d+P(f,48)|0)+32>>2];k=J[g>>2];j=J[(d+P(k,48)|0)+32>>2];e=h>>>0>>0;J[a>>2]=e?f:k;b=(e<<2)+b|0;a=a+4|0;g=((h>>>0>=j>>>0)<<2)+g|0;if((i|0)!=(g|0)){continue}break}break a}d:{if((e|0)<(f|0)){n=(f|0)/2|0;l=(n<<2)+b|0;e:{if((a|0)==(b|0)){k=a;break e}j=b-a>>2;o=J[(i+P(J[l>>2],48)|0)+32>>2];k=a;while(1){m=j>>>1|0;p=(m<<2)+k|0;q=o>>>0>2],48)|0)+32>>2];k=q?k:p+4|0;j=q?m:(m^-1)+j|0;if(j){continue}break}}q=k-a>>2;break d}if((e|0)==1){J[a>>2]=k;J[b>>2]=l;return}q=(e|0)/2|0;k=(q<<2)+a|0;f:{if((b|0)==(c|0)){l=b;break f}j=c-b>>2;o=J[(i+P(J[k>>2],48)|0)+32>>2];l=b;while(1){m=j>>>1|0;p=(m<<2)+l|0;n=o>>>0>M[(i+P(J[p>>2],48)|0)+32>>2];l=n?p+4|0:l;j=n?(m^-1)+j|0:m;if(j){continue}break}}n=l-b>>2}f=f-n|0;e=e-q|0;i=l;g:{if((b|0)==(k|0)){break g}i=k;if((b|0)==(l|0)){break g}i=i+4|0;if((i|0)==(b|0)){j=J[k>>2];b=l-b|0;i=el(k,i,b)+b|0;J[i>>2]=j;break g}if((b+4|0)==(l|0)){b=l-4|0;j=b-k|0;i=l-j|0;m=J[b>>2];if((b|0)!=(k|0)){el(i,k,j)}J[k>>2]=m;break g}j=b;s=l-b|0;m=s>>2;i=k;p=b-i|0;r=p>>2;o=r;if((m|0)==(o|0)){while(1){m=J[i>>2];J[i>>2]=J[j>>2];J[j>>2]=m;i=i+4|0;if((i|0)==(b|0)){i=b;break g}j=j+4|0;if((l|0)!=(j|0)){continue}break}i=b;break g}while(1){b=m;m=(o|0)%(b|0)|0;o=b;if(m){continue}break}b=(b<<2)+k|0;while(1){b=b-4|0;j=p+b|0;i=J[b>>2];m=b;while(1){J[m>>2]=J[j>>2];m=j;o=j+p|0;j=l-j>>2;j=(j|0)>(r|0)?o:(r-j<<2)+k|0;if((j|0)!=(b|0)){continue}break}J[m>>2]=i;if((b|0)!=(k|0)){continue}break}i=k+s|0}h:{if((n+q|0)<(e+f|0)){Mz(a,k,i,d,q,n,g,h);a=i;b=l;break h}Mz(i,l,c,d,e,f,g,h);f=n;e=q;c=i;b=k}if(f){continue}break a}break}if((b|0)==(c|0)){break a}i=g;j=b;while(1){J[i>>2]=J[j>>2];i=i+4|0;j=j+4|0;if((j|0)!=(c|0)){continue}break}while(1){if((a|0)!=(b|0)){e=J[d>>2];f=i-4|0;h=J[f>>2];k=b-4|0;j=J[k>>2];e=M[(e+P(h,48)|0)+32>>2]>2];c=c-4|0;J[c>>2]=e?j:h;b=e?k:b;i=e?i:f;if((i|0)!=(g|0)){continue}break a}break}while(1){c=c-4|0;i=i-4|0;J[c>>2]=J[i>>2];if((g|0)!=(i|0)){continue}break}}}function rP(a,b,c,d,e){var f=0,g=0,h=0,i=0,j=0,k=0,l=0,m=0;i=Ui-32|0;Ui=i;a:{b:{c:{g=iy(a,c);d:{if(!g){break d}f=J[g+8>>2];J[i+28>>2]=J[g+4>>2];h=Ia(b|0)|0;if(K[J[79491]+220|0]&2){j=_()|0;if(j){break c}}J[i+24>>2]=f;ta(h|0,1,i+28|0,i+24|0);if(K[J[79491]+220|0]&2){f=_()|0;if(f){break b}}ya(h|0);if(K[J[79491]+220|0]&2){f=_()|0;if(f){break a}}Ga(h|0,35713,i+20|0);if(!J[i+20>>2]){Ga(h|0,35716,i+16|0);a=J[i+16>>2];e:{if((a|0)<=0){a=0;break e}c=a;a=sj(a);db(h|0,c|0,i+16|0,a|0)}if(d){J[i>>2]=(b|0)==35633?4796:13900;J[i+4>>2]=a?a:44519;Gj(d,e,28435,i)}if(a){cj(a)}xa(h|0);break d}if(!h){break d}l=nj(92);d=ij(l,0,88);J[d>>2]=ho(a,h);a=J[g>>2];J[d+88>>2]=(b|0)==35633?1:2;J[d+84>>2]=a;d=d+4|0;fy(J[c+8>>2],J[c+12>>2],d,1);fy(J[c+16>>2],J[c+20>>2],d+16|0,2);fy(J[c+24>>2],J[c+28>>2],d+32|0,3);fy(J[c+32>>2],J[c+36>>2],d+48|0,0);f:{g:{h:{i:{j:{k:{if(!(H[d+76|0]&1)){m=d- -64|0;lj(J[c+52>>2],32,m,d+72|0,d+68|0);b=J[c+52>>2];a=J[d+64>>2];if(b>>>0<=J[d+72>>2]-a>>5>>>0){e=b<<5;J[d+68>>2]=e+a;b=0;ij(a,0,e);l:{a=J[c+52>>2];if(a){while(1){e=J[m>>2];if(J[d+68>>2]-e>>5>>>0<=b>>>0){break l}if(a>>>0<=b>>>0){break j}e=e+(b<<5)|0;h=P(b,24);a=h+J[c+48>>2]|0;J[e>>2]=Gk(J[a>>2]);g=J[a+12>>2];J[e+8>>2]=J[a+8>>2];J[e+12>>2]=g;if(H[e+28|0]&1){break g}lj(J[a+20>>2],32,e+16|0,e+24|0,e+20|0);a=J[c+52>>2];if(a>>>0<=b>>>0){break j}f=J[(h+J[c+48>>2]|0)+20>>2];g=J[e+16>>2];if(f>>>0>J[e+24>>2]-g>>5>>>0){break h}J[e+20>>2]=g+(f<<5);g=0;f=J[c+48>>2];if(J[(h+f|0)+20>>2]){while(1){m:{a=J[e+16>>2];if(J[e+20>>2]-a>>5>>>0>g>>>0){j=g<<5;a=j+a|0;f=j+J[(f+h|0)+16>>2]|0;J[a>>2]=Gk(J[f>>2]);k=J[f+12>>2];J[a+8>>2]=J[f+8>>2];J[a+12>>2]=k;J[a+24>>2]=J[f+24>>2];I[a+28>>1]=J[f+28>>2];k=K[f+20|0];H[a+20|0]=k|K[a+20|0]&254;f=J[c+52>>2];n:{if(k){if(b>>>0>=f>>>0){break j}f=h+J[c+48>>2]|0;if(M[f+20>>2]>g>>>0){f=f+16|0;break n}break k}if(b>>>0>=f>>>0){break j}f=h+J[c+48>>2]|0;if(M[f+20>>2]<=g>>>0){break k}f=f+16|0}J[a+16>>2]=J[(j+J[f>>2]|0)+16>>2];a=J[c+52>>2];if(a>>>0>b>>>0){break m}break j}break i}g=g+1|0;f=J[c+48>>2];if(g>>>0>2]){continue}break}}b=b+1|0;if(a>>>0>b>>>0){continue}break}}break f}break i}break h}break g}Z(12664,55e3,490,84789);B()}Z(12664,55e3,567,84789);B()}Z(145396,53895,487,84789);B()}Z(144782,53895,514,59583);B()}Z(151729,53895,501,2284);B()}}Ui=i+32|0;return l}Cj(j,35696,2109);Z(114101,40535,2109,35696);B()}Cj(f,35696,2112);Z(114101,40535,2112,35696);B()}Cj(f,35696,2114);Z(114101,40535,2114,35696);B()}function _ga(a){a=a|0;var b=0,c=0,d=0,e=0,f=0,g=0,h=0,i=0,j=0,k=0,l=0,m=0,n=0,o=0,p=0;c=Ui+-64|0;Ui=c;k=J[a+8>>2]-J[a+12>>2]>>4;J[c+56>>2]=0;J[c+60>>2]=0;J[c+48>>2]=0;J[c+52>>2]=0;J[c+40>>2]=0;J[c+44>>2]=0;J[c+32>>2]=0;J[c+36>>2]=0;a:{b:{c:{d:{e:{f:{if($l(a,c+32|0)){l=Aj(a,1,0);p=Aj(a,2,0);Oj(a,3,6);uj(a,3);m=Cu(a);g=c+24|0;b=g;J[b>>2]=0;J[b+4>>2]=0;J[c+16>>2]=0;J[c+20>>2]=0;b=c+16|0;h=b|4;lj(4096,1,b,g,h);g:{if((k|0)<4){break g}if(!kj(a,4)){break g}Oj(a,4,5);uj(a,4);b=J[a+8>>2];J[b+8>>2]=0;J[a+8>>2]=b+16;if($j(a,-2)){while(1){b=Ij(a,-2,0);j=Ij(a,-1,0);f=J[c+16>>2];o=J[c+24>>2];i=J[c+20>>2];d=o-i|0;e=(yj(b)+yj(j)|0)+2|0;if(d>>>0>>0){if(H[c+28|0]&1){break e}lj((o-f|0)+(e>>>0<=1024?1024:e)|0,1,c+16|0,g,h);i=J[c+20>>2];f=J[c+24>>2]-i|0}else{f=d}d=yj(b);if(f>>>0>>0){break b}hj(i,b,d);b=d+J[c+20>>2]|0;J[c+20>>2]=b;if((b|0)==J[c+24>>2]){break a}J[c+20>>2]=b+1;H[b|0]=58;d=J[c+20>>2];f=J[c+24>>2]-d|0;b=yj(j);if(f>>>0>>0){break b}hj(d,j,b);b=b+J[c+20>>2]|0;J[c+20>>2]=b;if((b|0)==J[c+24>>2]){break a}J[c+20>>2]=b+1;H[b|0]=10;gj(a,-2);if($j(a,-2)){continue}break}}gj(a,-2)}b=J[c+20>>2];if((b|0)==J[c+24>>2]){break a}e=m+2|0;J[c+20>>2]=b+1;i=0;H[b|0]=0;m=J[c+16>>2];h:{if((k|0)<=4){j=J[77882];d=0;g=0;h=0;break h}g=0;i:{if(!kj(a,5)){d=0;break i}Oj(a,5,4);b=Aj(a,5,c+12|0);i=J[c+12>>2];d=sj(i);hj(d,b,i)}j=J[77882];if((k|0)==5){h=0;break h}if(!kj(a,6)){h=0;break h}Oj(a,6,5);uj(a,6);b=J[a+8>>2];J[b+8>>2]=0;J[a+8>>2]=b+16;h=0;if($j(a,-2)){while(1){b=Ij(a,-2,0);j:{if(!jj(b,9580)){n=wj(a,-1)*1e6;if(n<0x10000000000000000&n>=0){j=~~n>>>0;break j}j=0;break j}if(!jj(b,18660)){g=(ck(a,-1)|0)!=0;break j}if(jj(b,53134)){break j}h=Aj(a,-1,0)}gj(a,-2);if($j(a,-2)){continue}break}g=g&1?656:0}else{g=0}gj(a,-2)}b=nj(48);J[b+44>>2]=e;e=J[c+36>>2];J[b>>2]=J[c+32>>2];J[b+4>>2]=e;e=J[c+44>>2];J[b+8>>2]=J[c+40>>2];J[b+12>>2]=e;e=J[c+52>>2];J[b+16>>2]=J[c+48>>2];J[b+20>>2]=e;e=J[c+60>>2];J[b+24>>2]=J[c+56>>2];J[b+28>>2]=e;J[b+32>>2]=d;if(h){f=Gk(h)}else{f=0}J[b+36>>2]=f;if(l){f=Gk(l)}else{f=0}J[b+40>>2]=f;ni(p|0,l|0,m|0,b|0,658,657,g|0,d|0,i|0,j|0);if(J[a+8>>2]-J[a+12>>2]>>4!=(k|0)){break d}k:{if(H[c+28|0]&1){break k}a=J[c+16>>2];if(!a){break k}cj(a)}a=0;break f}if(J[a+8>>2]-J[a+12>>2]>>4!=(k|0)){break c}a=fj(a,124030,0)}Ui=c- -64|0;return a|0}Z(151729,53895,501,2284);B()}Z(143244,39266,236,9802);B()}Z(143244,39266,239,9802);B()}Z(11738,53895,564,4042);B()}Z(112520,53895,557,53220);B()}function $ka(a,b){a=a|0;b=b|0;var c=0,d=0,e=0,f=0,g=0,h=0,i=0,j=0,k=0,l=0;b=Ui-240|0;Ui=b;e=J[a+8>>2];J[75948]=J[75948]+((J[e+4>>2]-J[e>>2]|0)/160|0);c=(J[e+4>>2]-J[e>>2]|0)/160|0;J[b+16>>2]=c;J[b+20>>2]=0;J[b+56>>2]=c;J[b+60>>2]=0;a:{c=J[e+20>>2];d=J[e+16>>2];b:{if((c|0)!=(d|0)){h=J[a+12>>2];i=c-d>>2;k=i>>>0<=1?1:i;l=b+48|0;a=0;while(1){d=i+(a^-1)|0;c=J[e+16>>2];if(d>>>0>=J[e+20>>2]-c>>2>>>0){break a}d=J[c+(d<<2)>>2];if(H[d+146|0]&1){j=b+96|0;yn(j,J[d>>2]);c=b- -64|0;jt(c,J[d>>2]);Cx(h,J[d+4>>2],j,c);kC(h,J[d+4>>2],d+16|0);lC(h,J[d+4>>2],d+80|0);J[b+48>>2]=0;J[b+52>>2]=0;J[b+40>>2]=0;J[b+44>>2]=0;J[b+32>>2]=0;J[b+36>>2]=0;c=0;g=0;f=J[J[J[d>>2]+80>>2]+8>>2];c:{if(!f){break c}f=J[f>>2];if(!f){break c}c=J[f+3216>>2];g=J[f+3220>>2]}J[b+24>>2]=c;J[b+28>>2]=g;c=J[d>>2];g=J[c+100>>2];J[b+40>>2]=J[c+96>>2];J[b+44>>2]=g;Go(J[d>>2],L[d+144>>1],l);N[b+112>>2]=N[d+16>>2];N[b+116>>2]=N[d+20>>2];N[b+120>>2]=N[d+24>>2];N[b+124>>2]=N[d+28>>2];N[b+128>>2]=N[d+32>>2];N[b+132>>2]=N[d+36>>2];N[b+136>>2]=N[d+40>>2];N[b+140>>2]=N[d+44>>2];N[b+144>>2]=N[d+48>>2];N[b+148>>2]=N[d+52>>2];N[b+152>>2]=N[d+56>>2];N[b+156>>2]=N[d+60>>2];N[b+160>>2]=N[d+64>>2];N[b+164>>2]=N[d+68>>2];N[b+168>>2]=N[d+72>>2];N[b+172>>2]=N[d+76>>2];N[b+176>>2]=N[d+80>>2];N[b+180>>2]=N[d+84>>2];N[b+184>>2]=N[d+88>>2];N[b+188>>2]=N[d+92>>2];N[b+192>>2]=N[d+96>>2];N[b+196>>2]=N[d+100>>2];N[b+200>>2]=N[d+104>>2];N[b+204>>2]=N[d+108>>2];N[b+208>>2]=N[d+112>>2];N[b+212>>2]=N[d+116>>2];N[b+216>>2]=N[d+120>>2];N[b+220>>2]=N[d+124>>2];N[b+224>>2]=N[d+128>>2];N[b+228>>2]=N[d+132>>2];N[b+232>>2]=N[d+136>>2];N[b+236>>2]=N[d+140>>2];if(Go(J[d>>2],L[d+144>>1],j)){dj(4,88458,115376,0);a=-1e3;break b}J[b+88>>2]=0;J[b+92>>2]=0;J[b+80>>2]=0;J[b+84>>2]=0;J[b+72>>2]=0;J[b+76>>2]=0;J[b+64>>2]=0;J[b+68>>2]=0;c=b- -64|0;H[c|0]=0;H[c+1|0]=0;H[c+2|0]=0;H[c+3|0]=0;H[c+4|0]=0;H[c+5|0]=0;H[c+6|0]=0;H[c+7|0]=0;H[c+24|0]=0;H[c+25|0]=0;H[c+26|0]=0;H[c+27|0]=0;H[c+28|0]=0;H[c+29|0]=0;H[c+30|0]=0;H[c+31|0]=0;H[c+16|0]=0;H[c+17|0]=0;H[c+18|0]=0;H[c+19|0]=0;H[c+20|0]=0;H[c+21|0]=0;H[c+22|0]=0;H[c+23|0]=0;H[c+8|0]=0;H[c+9|0]=0;H[c+10|0]=0;H[c+11|0]=0;H[c+12|0]=0;H[c+13|0]=0;H[c+14|0]=0;H[c+15|0]=0;if(eo(J[62018],c)){J[b>>2]=J[62018];dj(4,88458,126774,b);a=-1e3;break b}c=J[56890];Jk(b+24|0,b- -64|0,J[c+8>>2],J[c+12>>2],0,0,c,b+96|0,144,0)}a=a+1|0;if((k|0)!=(a|0)){continue}break}}a=0}Ui=b+240|0;return a|0}Z(145396,53895,487,84789);B()}function gz(a,b,c){var d=0,e=0,f=0,g=0,h=Q(0),i=0,j=0,k=0,l=0,m=0,n=Q(0);e=Ui-128|0;Ui=e;J[a+68>>2]=J[a+68>>2]+1;d=J[b+12>>2];J[e+72>>2]=J[b+8>>2];J[e+76>>2]=d;d=J[b+4>>2];J[e+64>>2]=J[b>>2];J[e+68>>2]=d;d=J[b+28>>2];J[e+88>>2]=J[b+24>>2];J[e+92>>2]=d;d=J[b+20>>2];J[e+80>>2]=J[b+16>>2];J[e+84>>2]=d;d=J[b+44>>2];J[e+104>>2]=J[b+40>>2];J[e+108>>2]=d;d=J[b+36>>2];J[e+96>>2]=J[b+32>>2];J[e+100>>2]=d;d=J[b+60>>2];J[e+120>>2]=J[b+56>>2];J[e+124>>2]=d;d=J[b+52>>2];J[e+112>>2]=J[b+48>>2];J[e+116>>2]=d;m=J[c+4>>2];n=Q(Zi[J[J[c>>2]+44>>2]](c));Zi[J[J[c>>2]+8>>2]](c,b,e+48|0,e+32|0);h=N[e+48>>2];if(h>2]){N[a+32>>2]=h}h=N[e+32>>2];if(h>N[a+48>>2]){N[a+48>>2]=h}h=N[e+52>>2];if(h>2]){N[a+36>>2]=h}h=N[e+36>>2];if(h>N[a+52>>2]){N[a+52>>2]=h}h=N[e+56>>2];if(h>2]){N[a+40>>2]=h}h=N[e+40>>2];if(h>N[a+56>>2]){N[a+56>>2]=h}b=J[a+64>>2];if(b){d=J[e+60>>2];J[e+8>>2]=J[e+56>>2];J[e+12>>2]=d;d=J[e+44>>2];J[e+24>>2]=J[e+40>>2];J[e+28>>2]=d;d=J[e+36>>2];J[e+16>>2]=J[e+32>>2];J[e+20>>2]=d;d=J[e+52>>2];J[e>>2]=J[e+48>>2];J[e+4>>2]=d;b=cz(b,e,J[a+16>>2])}else{b=0}i=J[a+16>>2];a:{if((i|0)!=J[a+20>>2]){break a}j=i?i<<1:1;if((j|0)<=(i|0)){break a}if(j){l=Yj(P(j,80));i=J[a+16>>2]}if((i|0)>0){while(1){d=P(k,80);f=d+l|0;d=d+J[a+24>>2]|0;g=J[d+4>>2];J[f>>2]=J[d>>2];J[f+4>>2]=g;g=J[d+12>>2];J[f+8>>2]=J[d+8>>2];J[f+12>>2]=g;g=J[d+28>>2];J[f+24>>2]=J[d+24>>2];J[f+28>>2]=g;g=J[d+20>>2];J[f+16>>2]=J[d+16>>2];J[f+20>>2]=g;g=J[d+44>>2];J[f+40>>2]=J[d+40>>2];J[f+44>>2]=g;g=J[d+36>>2];J[f+32>>2]=J[d+32>>2];J[f+36>>2]=g;g=J[d+60>>2];J[f+56>>2]=J[d+56>>2];J[f+60>>2]=g;g=J[d+52>>2];J[f+48>>2]=J[d+48>>2];J[f+52>>2]=g;g=J[d+76>>2];J[f+72>>2]=J[d+72>>2];J[f+76>>2]=g;g=J[d+68>>2];J[f+64>>2]=J[d+64>>2];J[f+68>>2]=g;k=k+1|0;if((k|0)!=(i|0)){continue}break}}d=J[a+24>>2];if(!(d?!d|K[a+28|0]!=1:1)){J[83765]=J[83765]+1;Zi[J[61751]](J[d-4>>2])}J[a+24>>2]=l;H[a+28|0]=1;J[a+20>>2]=j;i=J[a+16>>2]}f=J[e+68>>2];d=J[a+24>>2]+P(i,80)|0;J[d>>2]=J[e+64>>2];J[d+4>>2]=f;f=J[e+76>>2];J[d+8>>2]=J[e+72>>2];J[d+12>>2]=f;f=J[e+92>>2];J[d+24>>2]=J[e+88>>2];J[d+28>>2]=f;f=J[e+84>>2];J[d+16>>2]=J[e+80>>2];J[d+20>>2]=f;f=J[e+100>>2];J[d+32>>2]=J[e+96>>2];J[d+36>>2]=f;f=J[e+108>>2];J[d+40>>2]=J[e+104>>2];J[d+44>>2]=f;f=J[e+116>>2];J[d+48>>2]=J[e+112>>2];J[d+52>>2]=f;f=J[e+124>>2];J[d+56>>2]=J[e+120>>2];J[d+60>>2]=f;J[d+64>>2]=c;J[d+68>>2]=m;N[d+72>>2]=n;J[d+76>>2]=b;J[a+16>>2]=J[a+16>>2]+1;Ui=e+128|0}function Cq(a,b){var c=0,d=0,e=0,f=0,g=0,h=0,i=0;d=Ui+-64|0;Ui=d;c=-3;a:{if(J[218662]){break a}c=-4;if(!a|!K[a|0]){break a}if(Hk(a,35)){break a}if(Hk(a,58)){break a}f=bj(a);g=Yi;while(1){c=J[218661];J[218661]=c?c:1;if(c){continue}break}c=J[218660];if(!c){c=nj(32);J[c+16>>2]=0;J[c+20>>2]=0;J[c>>2]=0;J[c+4>>2]=0;J[c+24>>2]=0;J[c+28>>2]=0;J[c+8>>2]=0;J[c+12>>2]=0;J[c+20>>2]=-1;rN(c,256,256);J[218660]=c}e=-3;b:{if(J[c+24>>2]==J[c+16>>2]-J[c+8>>2]>>6){break b}J[d+56>>2]=f;J[d+60>>2]=g;c=J[218660];e=J[c+4>>2];c:{d:{if(!e){break d}e=J[J[c>>2]+(mxa(f,g,e)<<2)>>2];if((e|0)==-1){break d}i=J[c+8>>2];while(1){e=i+(e<<6)|0;c=0;if(J[e>>2]==(f|0)&J[e+4>>2]==(g|0)){break c}e=J[e+56>>2];if((e|0)!=-1){continue}break}}c=-6}e=-1;if(!c){break b}J[d+52>>2]=0;J[d+44>>2]=0;J[d+48>>2]=0;J[d+24>>2]=0;J[d+28>>2]=0;J[d+8>>2]=1;J[d+16>>2]=f;J[d+20>>2]=g;J[d+32>>2]=Gk(a);J[d+36>>2]=Co();a=nj(48);J[a>>2]=0;J[a+4>>2]=0;J[a+40>>2]=0;J[a+44>>2]=0;J[a+32>>2]=0;J[a+36>>2]=0;J[a+24>>2]=0;J[a+28>>2]=0;J[a+16>>2]=0;J[a+20>>2]=0;J[a+8>>2]=0;J[a+12>>2]=0;J[d+40>>2]=a;a=J[218660];i=J[a+16>>2];e:{f:{g:{h:{i:{h=J[a+8>>2];if(J[a+24>>2]!=i-h>>6){c=J[a+4>>2];j:{if(!c){break j}e=J[J[a>>2]+(mxa(f,g,c)<<2)>>2];if((e|0)==-1){break j}while(1){c=h+(e<<6)|0;if((f|0)==J[c>>2]&(g|0)==J[c+4>>2]){break i}e=J[c+56>>2];if((e|0)!=-1){continue}break}}c=J[a+12>>2];k:{if((i|0)!=(c|0)){J[a+12>>2]=c- -64;break k}c=J[a+20>>2];if((c|0)==-1){break h}c=h+(c<<6)|0;J[a+20>>2]=J[c+56>>2]}J[c>>2]=f;J[c+4>>2]=g;e=J[d+12>>2];J[c+8>>2]=J[d+8>>2];J[c+12>>2]=e;e=J[d+20>>2];J[c+16>>2]=J[d+16>>2];J[c+20>>2]=e;e=J[d+28>>2];J[c+24>>2]=J[d+24>>2];J[c+28>>2]=e;e=J[d+36>>2];J[c+32>>2]=J[d+32>>2];J[c+36>>2]=e;e=J[d+44>>2];J[c+40>>2]=J[d+40>>2];J[c+44>>2]=e;e=J[d+52>>2];J[c+48>>2]=J[d+48>>2];J[c+52>>2]=e;J[c+56>>2]=-1;i=J[a+8>>2];h=J[a>>2]+(mxa(f,g,J[a+4>>2])<<2)|0;e=J[h>>2];if((e|0)==-1){break g}while(1){h=i+(e<<6)|0;e=J[h+56>>2];if((e|0)!=-1){continue}break}J[h+56>>2]=c-i>>6;break f}Z(144851,55689,229,9606);B()}a=J[d+12>>2];J[c+8>>2]=J[d+8>>2];J[c+12>>2]=a;a=J[d+52>>2];J[c+48>>2]=J[d+48>>2];J[c+52>>2]=a;a=J[d+44>>2];J[c+40>>2]=J[d+40>>2];J[c+44>>2]=a;a=J[d+36>>2];J[c+32>>2]=J[d+32>>2];J[c+36>>2]=a;a=J[d+28>>2];J[c+24>>2]=J[d+24>>2];J[c+28>>2]=a;a=J[d+20>>2];J[c+16>>2]=J[d+16>>2];J[c+20>>2]=a;break e}Z(152203,55689,537,2838);B()}J[h>>2]=c-i>>6}J[a+24>>2]=J[a+24>>2]+1}J[b>>2]=f;J[b+4>>2]=g;e=0}c=e;J[218661]=0}Ui=d- -64|0;return c}function Cqa(a,b,c,d){a=a|0;b=b|0;c=c|0;d=Q(d);var e=Q(0),f=Q(0),g=Q(0),h=Q(0),i=Q(0),j=Q(0),k=Q(0),l=Q(0),m=0,n=Q(0),o=Q(0),p=Q(0),q=Q(0),r=Q(0),s=Q(0),t=Q(0),u=Q(0),v=Q(0),w=Q(0),x=Q(0),y=Q(0),z=Q(0),A=Q(0),B=Q(0),C=Q(0),D=Q(0),E=Q(0),F=Q(0),G=Q(0),H=Q(0),I=Q(0),L=Q(0);m=Ui-16|0;Ui=m;B=N[b+8>>2];f=N[c+8>>2];C=Q(Q(d*B)+f);D=N[b+4>>2];A=N[c+4>>2];E=Q(Q(d*D)+A);F=N[b>>2];h=Q(d*F);d=N[c>>2];G=Q(h+d);a:{if(K[a+356|0]==1){e=N[a+332>>2];n=N[a+172>>2];k=Q(-N[a+212>>2]);o=N[a+188>>2];i=N[a+216>>2];l=N[a+204>>2];j=N[a+220>>2];t=Q(Q(Q(n*k)-Q(o*i))-Q(l*j));g=N[a+324>>2];p=N[a+164>>2];q=N[a+180>>2];r=N[a+196>>2];x=Q(Q(Q(p*k)-Q(q*i))-Q(r*j));s=N[a+168>>2];h=Q(s*k);k=N[a+184>>2];h=Q(h-Q(k*i));i=N[a+200>>2];u=Q(h-Q(i*j));j=N[a+328>>2];e=Q(Q(Q(Q(e*t)+Q(Q(g*x)+Q(u*j)))+N[a+348>>2])+Q(Q(Q(Q(l*e)+Q(Q(r*g)+Q(i*j)))*C)+Q(Q(Q(Q(n*e)+Q(Q(p*g)+Q(s*j)))*G)+Q(E*Q(Q(o*e)+Q(Q(q*g)+Q(k*j)))))));h=e;I=Q(Q(e-f)*B);f=N[a+300>>2];e=N[a+292>>2];g=N[a+296>>2];g=Q(Q(Q(Q(Q(l*f)+Q(Q(r*e)+Q(i*g)))*C)+Q(Q(Q(Q(n*f)+Q(Q(p*e)+Q(s*g)))*G)+Q(E*Q(Q(o*f)+Q(Q(q*e)+Q(k*g))))))+Q(Q(Q(f*t)+Q(Q(e*x)+Q(g*u)))+N[a+340>>2]));L=Q(Q(g-d)*F);d=N[a+316>>2];f=N[a+308>>2];e=N[a+312>>2];f=Q(Q(Q(Q(Q(l*d)+Q(Q(r*f)+Q(i*e)))*C)+Q(Q(Q(Q(n*d)+Q(Q(p*f)+Q(s*e)))*G)+Q(E*Q(Q(o*d)+Q(Q(q*f)+Q(k*e))))))+Q(Q(Q(d*t)+Q(Q(f*x)+Q(u*e)))+N[a+344>>2]));d=Q(I+Q(L+Q(D*Q(f-A))));N[m+8>>2]=h+Q(B*d);N[m+4>>2]=f+Q(D*d);N[m>>2]=g+Q(F*d);break a}I=N[a+348>>2];e=N[a+332>>2];n=N[a+324>>2];o=N[a+328>>2];L=N[a+340>>2];l=N[a+300>>2];g=N[a+292>>2];p=N[a+296>>2];q=N[a+236>>2];v=Q(-N[a+276>>2]);r=N[a+252>>2];w=N[a+280>>2];s=N[a+268>>2];y=N[a+284>>2];k=Q(Q(Q(q*v)-Q(r*w))-Q(s*y));i=N[a+228>>2];j=N[a+244>>2];t=N[a+260>>2];x=Q(Q(Q(i*v)-Q(j*w))-Q(t*y));u=N[a+232>>2];h=Q(u*v);v=N[a+248>>2];h=Q(h-Q(v*w));w=N[a+264>>2];y=Q(h-Q(w*y));z=N[a+316>>2];H=N[a+308>>2];h=N[a+312>>2];z=Q(Q(Q(Q(Q(s*z)+Q(Q(t*H)+Q(w*h)))*f)+Q(Q(Q(Q(q*z)+Q(Q(i*H)+Q(u*h)))*d)+Q(A*Q(Q(r*z)+Q(Q(j*H)+Q(v*h))))))+Q(Q(Q(z*k)+Q(Q(H*x)+Q(y*h)))+N[a+344>>2]));N[m+4>>2]=z;l=Q(Q(Q(Q(Q(s*l)+Q(Q(t*g)+Q(w*p)))*f)+Q(Q(Q(Q(q*l)+Q(Q(i*g)+Q(u*p)))*d)+Q(A*Q(Q(r*l)+Q(Q(j*g)+Q(v*p))))))+Q(L+Q(Q(l*k)+Q(Q(g*x)+Q(p*y)))));N[m>>2]=l;d=Q(Q(I+Q(Q(e*k)+Q(Q(n*x)+Q(y*o))))+Q(Q(Q(Q(s*e)+Q(Q(t*n)+Q(w*o)))*f)+Q(Q(Q(Q(q*e)+Q(Q(i*n)+Q(u*o)))*d)+Q(A*Q(Q(r*e)+Q(Q(j*n)+Q(v*o)))))));N[m+8>>2]=d;d=Q(Q(Q(C-d)*B)+Q(Q(Q(G-l)*F)+Q(D*Q(E-z))))}J[m+12>>2]=0;a=J[a+160>>2];Zi[J[J[a>>2]+16>>2]](a,b,m,d);Ui=m+16|0}function lB(a,b,c,d,e){var f=0,g=0,h=0,i=0,j=0,k=0,l=0,m=0,n=0,o=0,p=0,q=0,r=0;k=Ui-32|0;Ui=k;g=J[a+48>>2];f=K[g+50|0]+3|0;H[g+50|0]=f;q=J[J[g>>2]+24>>2];h=((f&255)<<1)+g|0;f=J[g+24>>2];J[(q+P(L[h+166>>1],12)|0)+4>>2]=f;J[(q+P(L[h+168>>1],12)|0)+4>>2]=f;J[(q+P(L[h+170>>1],12)|0)+4>>2]=f;if(J[a+16>>2]!=259){f=J[a+52>>2];J[k>>2]=Cl(a,259);qk(a,gk(f,74053,k))}tk(a);a:{if(e){q=Rw(g,32,b,131070);break a}q=oq(g)}H[k+18|0]=0;J[k+12>>2]=-1;f=K[g+50|0];H[k+17|0]=0;H[k+16|0]=f;J[k+8>>2]=J[g+20>>2];J[g+20>>2]=k+8;h=J[a+48>>2];f=K[h+50|0]+d|0;H[h+50|0]=f;b:{if(!d){break b}l=f&255;n=h+172|0;i=J[h+24>>2];j=J[J[h>>2]+24>>2];f=d;h=f&3;if(h){while(1){J[(j+P(L[n+(l-f<<1)>>1],12)|0)+4>>2]=i;f=f-1|0;m=m+1|0;if((h|0)!=(m|0)){continue}break}}if(d>>>0<4){break b}while(1){m=n+(l-f<<1)|0;J[(j+P(L[m>>1],12)|0)+4>>2]=i;J[(j+P(L[m+2>>1],12)|0)+4>>2]=i;J[(j+P(L[m+4>>1],12)|0)+4>>2]=i;J[(j+P(L[m+6>>1],12)|0)+4>>2]=i;f=f-4|0;if(f){continue}break}}fr(g,d);p=J[a+48>>2];H[k+30|0]=0;J[k+24>>2]=-1;f=K[p+50|0];H[k+29|0]=0;H[k+28|0]=f;J[k+20>>2]=J[p+20>>2];J[p+20>>2]=k+20;Pq(a);n=J[p+20>>2];J[p+20>>2]=J[n>>2];j=K[n+8|0];l=J[J[p+12>>2]+48>>2];a=K[l+50|0];if(j>>>0>>0){h=l+172|0;o=J[l+24>>2];i=J[J[l>>2]+24>>2];m=a-j&3;c:{if(!m){f=a;break c}f=a;while(1){f=f-1|0;J[(i+P(L[h+(f<<1)>>1],12)|0)+8>>2]=o;r=r+1|0;if((m|0)!=(r|0)){continue}break}}if(j-a>>>0<=4294967292){while(1){a=h+(f<<1)|0;J[(i+P(L[a-2>>1],12)|0)+8>>2]=o;J[(i+P(L[a-4>>1],12)|0)+8>>2]=o;J[(i+P(L[a-6>>1],12)|0)+8>>2]=o;f=f-4|0;J[(i+P(L[h+(f<<1)>>1],12)|0)+8>>2]=o;if(f>>>0>j>>>0){continue}break}}H[l+50|0]=f}if(K[n+9|0]){tm(p,35,j,0,0)}J[p+36>>2]=K[p+50|0];_m(p,J[n+4>>2]);n=J[g+20>>2];J[g+20>>2]=J[n>>2];j=K[n+8|0];l=J[J[g+12>>2]+48>>2];a=K[l+50|0];if(j>>>0>>0){h=l+172|0;o=J[l+24>>2];i=J[J[l>>2]+24>>2];m=a-j&3;d:{if(!m){f=a;break d}r=0;f=a;while(1){f=f-1|0;J[(i+P(L[h+(f<<1)>>1],12)|0)+8>>2]=o;r=r+1|0;if((m|0)!=(r|0)){continue}break}}if(j-a>>>0<=4294967292){while(1){a=h+(f<<1)|0;J[(i+P(L[a-2>>1],12)|0)+8>>2]=o;J[(i+P(L[a-4>>1],12)|0)+8>>2]=o;J[(i+P(L[a-6>>1],12)|0)+8>>2]=o;f=f-4|0;J[(i+P(L[h+(f<<1)>>1],12)|0)+8>>2]=o;if(f>>>0>j>>>0){continue}break}}H[l+50|0]=f}if(K[n+9|0]){tm(g,35,j,0,0)}J[g+36>>2]=K[g+50|0];_m(g,J[n+4>>2]);_m(g,q);e:{if(e){f=Rw(g,31,b,131070);J[(J[J[g>>2]+20>>2]+(J[g+24>>2]<<2)|0)-4>>2]=c;break e}tm(g,33,b,0,d);J[(J[J[g>>2]+20>>2]+(J[g+24>>2]<<2)|0)-4>>2]=c;f=oq(g)}Qw(g,f,q+1|0);Ui=k+32|0}function TL(a,b){var c=0,d=0,e=0,f=0,g=0,h=0,i=0,j=0,k=0,l=0,m=0,n=0,o=0;e=Ui-16|0;Ui=e;k=J[b+8>>2];a:{b:{c:{d:{l=J[a+4>>2];e:{if(!l){g=J[b+16>>2];h=1;break e}h=1;f:{g:{n=J[a>>2];c=J[n+((k>>>0)%(l>>>0)<<2)>>2];if((c|0)==-1){break g}d=J[a+8>>2];while(1){c=d+P(c,24)|0;if(J[c>>2]!=(k|0)){c=J[c+20>>2];if((c|0)!=-1){continue}break g}break}m=c+4|0;o=J[a+32>>2];j=J[b+16>>2];h:{f=J[c+12>>2];i:{if(!f){break i}d=J[c+8>>2];if((j|0)==J[d>>2]){break h}while(1){g=g+1|0;if((f|0)==(g|0)){break i}i=d+(g<<3)|0;if((j|0)!=J[i>>2]){continue}break}J[i+4>>2]=J[i+4>>2]+1;i=0;d=1;if(f>>>0>g>>>0){break f}}if((f|0)!=(o|0)){J[c+12>>2]=f+1;d=J[c+8>>2]+(f<<3)|0;J[d+4>>2]=1;J[d>>2]=j;i=0;d=0;break f}dj(4,89293,117596,0);break a}J[d+4>>2]=J[d+4>>2]+1;d=1;break f}i=1;d=0}g=J[b+16>>2];c=J[((g>>>0)%(l>>>0)<<2)+n>>2];j:{if((c|0)==-1){break j}f=J[a+8>>2];while(1){c=f+P(c,24)|0;if(J[c>>2]!=(g|0)){c=J[c+20>>2];if((c|0)!=-1){continue}break j}break}n=J[a+32>>2];k:{f=J[c+12>>2];l:{if(!f){break l}h=J[c+8>>2];if(J[h>>2]==(k|0)){break k}j=0;while(1){j=j+1|0;if((f|0)==(j|0)){break l}l=h+(j<<3)|0;if(J[l>>2]!=(k|0)){continue}break}d=1;J[l+4>>2]=J[l+4>>2]+1;h=0;if(f>>>0>j>>>0){break j}}if((f|0)!=(n|0)){J[c+12>>2]=f+1;d=J[c+8>>2]+(f<<3)|0;J[d+4>>2]=1;J[d>>2]=k;d=0;h=0;if(i){break e}break b}dj(4,89293,117596,0);if(i){break a}a=J[m+8>>2];if(!a){break a}g=J[b+16>>2];b=J[m+4>>2];c=0;while(1){d=b+(c<<3)|0;if((g|0)!=J[d>>2]){c=c+1|0;if((a|0)!=(c|0)){continue}break a}break}a=(b+(a<<3)|0)-8|0;b=J[a+4>>2];J[d>>2]=J[a>>2];J[d+4>>2]=b;J[m+8>>2]=J[m+8>>2]-1;break a}d=1;J[h+4>>2]=J[h+4>>2]+1;h=0}if(!i){break d}}i=L[b+24>>1];f=J[b+12>>2];c=(J[a+16>>2]-J[a+8>>2]|0)/24|0;if(M[a+24>>2]>P(c,3)>>>2>>>0){c=c+16|0;Zu(a,P(c,3)>>>2|0,c)}J[e+8>>2]=0;J[e+12>>2]=0;m=J[a+32>>2];c=sj(m<<3);I[e+12>>1]=i;J[e>>2]=f;J[e+4>>2]=c;m:{if(!m){dj(4,89293,117596,0);break m}J[e+8>>2]=1;J[c+4>>2]=1;J[c>>2]=g}hN(a,k,e);if(!h){break b}k=J[b+8>>2];g=J[b+16>>2];break c}if(!h){break b}}h=L[b+26>>1];i=J[b+20>>2];c=(J[a+16>>2]-J[a+8>>2]|0)/24|0;if(M[a+24>>2]>P(c,3)>>>2>>>0){c=c+16|0;Zu(a,P(c,3)>>>2|0,c)}J[e+8>>2]=0;J[e+12>>2]=0;f=J[a+32>>2];c=sj(f<<3);I[e+12>>1]=h;J[e>>2]=i;J[e+4>>2]=c;n:{if(!f){dj(4,89293,117596,0);break n}J[e+8>>2]=1;J[c+4>>2]=1;J[c>>2]=k}hN(a,g,e)}if(d){break a}a=J[b>>2];if(!a){break a}J[e>>2]=J[b+12>>2];J[e+4>>2]=J[b+20>>2];I[e+8>>1]=L[b+24>>1];I[e+10>>1]=L[b+26>>1];Zi[a|0](e,J[b+4>>2])}Ui=e+16|0}function Hia(a,b){a=a|0;b=b|0;var c=0,d=0,e=0,f=0,g=Q(0),h=Q(0),i=Q(0),j=Q(0),k=0,l=Q(0),m=0,n=0,o=0,p=Q(0),q=Q(0),r=Q(0),s=Q(0),t=Q(0),u=Q(0),v=Q(0),w=Q(0),x=Q(0),y=Q(0),z=Q(0),A=Q(0),C=0,D=Q(0),E=Q(0);b=Ui-48|0;Ui=b;g=N[J[a+4>>2]+4>>2];e=J[a+8>>2];J[e+116>>2]=0;J[e+108>>2]=0;N[e+128>>2]=g;a:{b:{c:{c=J[e+4>>2];d=J[e>>2];if((c|0)!=(d|0)){o=(c-d|0)/40|0;f=o>>>0<=1?1:o;k=J[e+84>>2];while(1){c=J[e>>2];if((J[e+4>>2]-c|0)/40>>>0<=m>>>0){break a}c=c+P(m,40)|0;n=J[c>>2];d:{if(!n){break d}C=J[c+28>>2];d=J[e+48>>2];if(C>>>0>=(J[e+52>>2]-d|0)/48>>>0){break a}d=P(C,48)+d|0;p=N[d+24>>2];q=N[d+20>>2];r=N[d+28>>2];s=N[d+16>>2];h=N[d>>2];i=N[d+8>>2];j=N[d+4>>2];_D(b,n);D=N[b+16>>2];E=N[b+20>>2];n=J[c+16>>2];g=N[b+12>>2];v=N[b+36>>2];l=Q(j*v);j=N[b+8>>2];w=N[b+32>>2];t=Q(h*w);h=N[b>>2];x=N[b+40>>2];u=Q(i*x);y=Q(Q(Q(g*l)+Q(j*t))-Q(h*u));i=N[b+4>>2];z=Q(Q(j*u)+Q(Q(h*t)+Q(i*l)));A=Q(Q(Q(g*u)+Q(h*l))-Q(i*t));l=Q(Q(Q(g*t)+Q(i*u))-Q(j*l));N[b+8>>2]=N[b+24>>2]+Q(Q(y*h)+Q(Q(Q(z*j)+Q(g*A))-Q(l*i)));N[b+4>>2]=E+Q(Q(l*j)+Q(Q(Q(z*i)+Q(g*y))-Q(A*h)));N[b>>2]=D+Q(Q(A*i)+Q(Q(Q(z*h)+Q(g*l))-Q(y*j)));Px(k,n,b);n=J[c+16>>2];N[b+12>>2]=Q(Q(Q(g*r)-Q(h*s))-Q(i*q))-Q(j*p);N[b+8>>2]=Q(Q(h*q)+Q(Q(g*p)+Q(r*j)))-Q(i*s);N[b+4>>2]=Q(Q(j*s)+Q(Q(g*q)+Q(r*i)))-Q(h*p);N[b>>2]=Q(Q(i*p)+Q(Q(g*s)+Q(r*h)))-Q(j*q);Ox(k,n,b);g=v>w?w:v;Nx(k,J[c+16>>2],g>x?x:g);qM(k,J[c+16>>2],(K[J[c>>2]+137|0]&2)>>>1|0);if(!(H[d+36|0]&1)|H[c+32|0]&1){break d}yC(k,J[c+16>>2]);I[c+32>>1]=L[c+32>>1]|1}m=m+1|0;if((f|0)!=(m|0)){continue}break}m=J[a+12>>2];nM(k,N[J[a+4>>2]+4>>2]);a=0;while(1){c=J[e>>2];if((J[e+4>>2]-c|0)/40>>>0<=a>>>0){break a}e:{f:{d=P(a,40);c=d+c|0;if(!(J[c>>2]?H[c+32|0]&1:1)){break f}if(!wM(k,J[c+16>>2])){break f}f=J[c+20>>2];J[e+112>>2]=J[e+112>>2]-((J[f+4>>2]-J[f>>2]|0)/18568|0);vj(J[m>>2],J[c+20>>2]);Xu(k,J[c+16>>2]);f=J[e+4>>2];c=J[e>>2];if((f-c|0)/40>>>0<=a>>>0){break c}c=c+d|0;d=f-40|0;f=J[d+4>>2];J[c>>2]=J[d>>2];J[c+4>>2]=f;f=J[d+36>>2];J[c+32>>2]=J[d+32>>2];J[c+36>>2]=f;f=J[d+28>>2];J[c+24>>2]=J[d+24>>2];J[c+28>>2]=f;f=J[d+20>>2];J[c+16>>2]=J[d+16>>2];J[c+20>>2]=f;f=J[d+12>>2];J[c+8>>2]=J[d+8>>2];J[c+12>>2]=f;c=J[e+4>>2]-40|0;J[e+4>>2]=c;if(c>>>0>2]){break b}o=o-1|0;break e}a=a+1|0}if(a>>>0>>0){continue}break}Ps(J[e+88>>2]);a=J[e+88>>2];if(a){I[a+20>>1]=0}}Ui=b+48|0;return 0}Z(145381,53895,537,43537);B()}Z(12682,53895,540,43537);B()}Z(145396,53895,487,84789);B()}function tR(a,b){var c=0,d=0,e=0,f=0,g=0,h=0,i=0,j=0;g=Ui+-64|0;Ui=g;j=pj(g+44|0,a,0,42703,173);c=g+8|0;J[c>>2]=0;J[c+4>>2]=0;J[c+32>>2]=0;J[c+24>>2]=0;J[c+28>>2]=0;J[c+16>>2]=0;J[c+20>>2]=0;J[c+8>>2]=0;J[c+12>>2]=0;Oj(a,b,5);uj(a,b);b=J[a+8>>2];J[b+8>>2]=0;J[a+8>>2]=b+16;a:{if($j(a,-2)){while(1){b:{if(!Mk(a,-2)){break b}c:{switch(aE(a,-1,g+4|0)-1|0){case 0:J[c+4>>2]=J[c+4>>2]+1;break b;case 1:J[c+16>>2]=J[c+16>>2]+1;break b;case 2:J[c+20>>2]=J[c+20>>2]+1;break b;case 3:J[c+24>>2]=J[c+24>>2]+1;break b;case 4:J[c+28>>2]=J[c+28>>2]+1;break b;case 5:J[c+32>>2]=J[c+32>>2]+1;break b;case 6:case 7:gj(a,-4);a=0;break a;default:break c}}J[c>>2]=J[c>>2]+1}gj(a,-2);if($j(a,-2)){continue}break}}f=WD(c);b=J[a+8>>2];J[b+8>>2]=0;J[a+8>>2]=b+16;if($j(a,-2)){while(1){d:{if(!Mk(a,-2)){break d}b=bj(Ij(a,-2,0));d=Yi;e:{switch(aE(a,-1,g+4|0)-1|0){case 0:oR(f,b,d,Tl(a,-1),Yi);break d;case 1:c=LB(a,-1);h=J[f+4>>2];e=J[f>>2];if(h>>>0>=M[e+4>>2]){Z(12601,39139,270,2838);B()}J[f+4>>2]=h+1;i=J[e+8>>2]+(h<<3)|0;J[i>>2]=b;J[i+4>>2]=d;b=h<<2;J[b+J[e+16>>2]>>2]=2;d=b+J[e+12>>2]|0;b=J[f+20>>2];J[d>>2]=b;d=K[c+4|0]|K[c+5|0]<<8|(K[c+6|0]<<16|K[c+7|0]<<24);b=b+J[e+28>>2]|0;e=K[c|0]|K[c+1|0]<<8|(K[c+2|0]<<16|K[c+3|0]<<24);H[b|0]=e;H[b+1|0]=e>>>8;H[b+2|0]=e>>>16;H[b+3|0]=e>>>24;H[b+4|0]=d;H[b+5|0]=d>>>8;H[b+6|0]=d>>>16;H[b+7|0]=d>>>24;d=K[c+28|0]|K[c+29|0]<<8|(K[c+30|0]<<16|K[c+31|0]<<24);e=K[c+24|0]|K[c+25|0]<<8|(K[c+26|0]<<16|K[c+27|0]<<24);H[b+24|0]=e;H[b+25|0]=e>>>8;H[b+26|0]=e>>>16;H[b+27|0]=e>>>24;H[b+28|0]=d;H[b+29|0]=d>>>8;H[b+30|0]=d>>>16;H[b+31|0]=d>>>24;d=K[c+20|0]|K[c+21|0]<<8|(K[c+22|0]<<16|K[c+23|0]<<24);e=K[c+16|0]|K[c+17|0]<<8|(K[c+18|0]<<16|K[c+19|0]<<24);H[b+16|0]=e;H[b+17|0]=e>>>8;H[b+18|0]=e>>>16;H[b+19|0]=e>>>24;H[b+20|0]=d;H[b+21|0]=d>>>8;H[b+22|0]=d>>>16;H[b+23|0]=d>>>24;d=K[c+12|0]|K[c+13|0]<<8|(K[c+14|0]<<16|K[c+15|0]<<24);c=K[c+8|0]|K[c+9|0]<<8|(K[c+10|0]<<16|K[c+11|0]<<24);H[b+8|0]=c;H[b+9|0]=c>>>8;H[b+10|0]=c>>>16;H[b+11|0]=c>>>24;H[b+12|0]=d;H[b+13|0]=d>>>8;H[b+14|0]=d>>>16;H[b+15|0]=d>>>24;J[f+20>>2]=J[f+20>>2]+32;break d;case 2:mR(f,b,d,Pl(a,-1));break d;case 3:lR(f,b,d,Qm(a,-1));break d;case 4:nR(f,b,d,Is(a,-1));break d;case 5:rR(f,b,d,(ck(a,-1)|0)!=0);break d;case 6:case 7:Z(62644,42703,253,83084);B();default:break e}}pR(f,b,d,Q(ok(a,-1)))}gj(a,-2);if($j(a,-2)){continue}break}}gj(a,-2);a=sR(f)}oj(j);Ui=g- -64|0;return a}function Gha(a,b){a=a|0;b=b|0;var c=0,d=0,e=0,f=0,g=Q(0),h=Q(0),i=0,j=Q(0),k=Q(0),l=0,m=0,n=0,o=Q(0),p=Q(0);l=Ui-48|0;Ui=l;a:{c=J[a+80>>2];b:{if(!c|(c|0)!=J[58344]){break b}c=J[a>>2];i=J[a+4>>2];while(1){e=J[218661];J[218661]=e?e:1;if(e){continue}break}e=J[218660];f=J[e+4>>2];c:{if(!f){break c}f=J[J[e>>2]+(mxa(c,i,f)<<2)>>2];if((f|0)==-1){break c}m=J[e+8>>2];while(1){e=m+(f<<6)|0;if(J[e>>2]!=(c|0)|J[e+4>>2]!=(i|0)){f=J[e+56>>2];if((f|0)!=-1){continue}break c}break}d=J[e+16>>2];n=J[e+20>>2]}J[218661]=0;e=J[b+4>>2];i=J[e+29088>>2];e=J[e+29084>>2];c=0;d:{if((i|0)==(e|0)){break d}c=i-e>>2;i=c>>>0<=1?1:c;c=0;e:{while(1){f=J[e+(c<<2)>>2];if((d|0)==J[f+3208>>2]&(n|0)==J[f+3212>>2]){break e}c=c+1|0;if((i|0)!=(c|0)){continue}break}c=0;break d}c=J[f+8>>2]}if(!c){break b}d=J[b+8>>2];c=J[c>>2];if(d>>>0>2]>>2]){b=J[(c+(d<<2)|0)+12>>2]}else{b=0}if(K[b+144|0]!=(d|0)){break a}c=sj(32);d=J[a+28>>2];J[c+24>>2]=J[a+24>>2];J[c+28>>2]=d;d=J[a+20>>2];J[c+16>>2]=J[a+16>>2];J[c+20>>2]=d;d=J[a+12>>2];J[c+8>>2]=J[a+8>>2];J[c+12>>2]=d;d=J[a+4>>2];J[c>>2]=J[a>>2];J[c+4>>2]=d;d=PL(l);N[d>>2]=N[a+96>>2];N[d+4>>2]=N[a+100>>2];N[d+8>>2]=N[a+104>>2];N[d+16>>2]=N[a+112>>2];N[d+20>>2]=N[a+116>>2];N[d+24>>2]=N[a+120>>2];I[d+40>>1]=J[a+128>>2];a=K[a+132|0];J[d+36>>2]=c;J[d+44>>2]=a;J[d+32>>2]=0;c=J[b+132>>2];if(H[b+145|0]&1){b=Ui-16|0;Ui=b;a=J[c+40>>2];f:{if((a|0)!=J[c+44>>2]){j=N[d+8>>2];g=Q(N[d+24>>2]-j);o=Q(g*g);g=N[d+4>>2];h=Q(N[d+20>>2]-g);p=Q(h*h);h=N[d>>2];k=Q(N[d+16>>2]-h);if(Q(o+Q(p+Q(k*k)))<=Q(0)){dj(3,89293,115116,0);break f}J[c+40>>2]=a+48;N[a+8>>2]=j;N[a+4>>2]=g;N[a>>2]=h;N[a+16>>2]=N[d+16>>2];N[a+20>>2]=N[d+20>>2];N[a+24>>2]=N[d+24>>2];c=J[d+36>>2];J[a+32>>2]=J[d+32>>2];J[a+36>>2]=c;c=J[d+44>>2];J[a+40>>2]=J[d+40>>2];J[a+44>>2]=c;break f}J[b>>2]=(a-J[c+36>>2]|0)/48;dj(3,89293,115169,b)}Ui=b+16|0;break b}b=Ui-16|0;Ui=b;a=J[c+103072>>2];g:{if((a|0)!=J[c+103076>>2]){j=N[d+4>>2];g=Q(N[d+20>>2]-j);k=Q(g*g);g=N[d>>2];h=Q(N[d+16>>2]-g);if(Q(k+Q(h*h))<=Q(0)){dj(3,89293,115116,0);break g}J[c+103072>>2]=a+48;N[a+4>>2]=j;N[a>>2]=g;N[a+8>>2]=N[d+8>>2];N[a+16>>2]=N[d+16>>2];N[a+20>>2]=N[d+20>>2];N[a+24>>2]=N[d+24>>2];c=J[d+36>>2];J[a+32>>2]=J[d+32>>2];J[a+36>>2]=c;c=J[d+44>>2];J[a+40>>2]=J[d+40>>2];J[a+44>>2]=c;break g}J[b>>2]=(a-J[c+103068>>2]|0)/48;dj(3,89293,16068,b)}Ui=b+16|0}Ui=l+48|0;return}Z(5197,38329,936,51735);B()}function LH(a,b,c,d,e,f){var g=0,h=0,i=0,j=0,k=0,l=0,m=0,n=0,o=0,p=0,q=0,r=0,s=0;h=Ui-176|0;Ui=h;p=h+16|0;J[p+8>>2]=0;J[p>>2]=1;J[p+4>>2]=0;k=h+4|0;J[k+8>>2]=0;J[k>>2]=1;J[k+4>>2]=0;q=a+124|0;m=Ui-256|0;Ui=m;n=a;a=J[a+92>>2];b=b-3|0;if(b>>>0<=5){g=J[(b<<2)+266328>>2]}else{g=0}a:{if(!g){a=-20352;break a}b=m+4|0;J[b+8>>2]=0;J[b>>2]=1;J[b+4>>2]=0;ij(m+156|0,0,100);o=a+7>>>3|0;a=no(q,m+16|0,o);b:{if(a){break b}a=J[n+92>>2]+7>>>3|0;i=a>>>0>d>>>0?d:a;a=Vm(b,c,i);if(a){break b}a=i<<3;i=J[n+92>>2];if(a>>>0>i>>>0){a=yk(b,a-i|0);if(a){break b}}a=m+4|0;b=n+76|0;if((_j(a,b)|0)>=0){a=wl(a,a,b);if(a){break b}}i=m+16|0;a=no(m+4|0,i+o|0,o);if(a){break b}j=o<<1;b=m+156|0;c:{if(oo(b,g,1)){break c}a=b+12|0;if(iq(b,a,(g?J[g+8>>2]:0)&255)){break c}ij(a,1,(g?J[g+8>>2]:0)&255);zA(b,i,j)}g=Ui-80|0;Ui=g;d:{if(!J[n+84>>2]){a=-20352;break d}a=-19584;if((Pj(q,1)|0)<0){break d}o=n+76|0;if((_j(q,o)|0)>=0){break d}s=n+40|0;J[g+44>>2]=0;J[g+36>>2]=1;J[g+40>>2]=0;J[g+56>>2]=0;J[g+48>>2]=1;J[g+52>>2]=0;J[g+68>>2]=0;J[g+60>>2]=1;J[g+64>>2]=0;J[g+32>>2]=0;J[g+24>>2]=1;J[g+28>>2]=0;J[g+20>>2]=0;J[g+12>>2]=1;J[g+16>>2]=0;J[g+8>>2]=0;J[g>>2]=1;J[g+4>>2]=0;i=g+76|0;r=g+72|0;e:{f:while(1){J[i>>2]=0;r=r+4|0;while(1){j=g+24|0;a=EA(n,j,2190,b);if(a){break e}l=g+36|0;a=cu(n,l,j,s,2190,b);if(a){break e}a=Bl(p,l,o);if(a){break e}i=i+4|0;g:{if(Pj(p,0)){j=g+12|0;a=J[n+92>>2]+7>>>3|0;l=a>>>0>d>>>0?d:a;a=Vm(j,c,l);if(a){break e}a=l<<3;l=J[n+92>>2];if(a>>>0>l>>>0){a=yk(j,a-l|0);if(a){break e}}a=g+12|0;if((_j(a,o)|0)>=0){a=wl(a,a,o);if(a){break e}}a=EA(n,g,2190,b);if(a){break e}a=Ak(k,p,q);if(a){break e}j=g+12|0;a=Ql(j,j,k);if(a){break e}a=Ak(j,j,g);if(a){break e}l=g+24|0;a=Ak(l,l,g);if(a){break e}a=Bp(k,l,o);if(a){break e}a=Ak(k,k,j);if(a){break e}a=Bl(k,k,o);if(a){break e}a=0;if(Pj(k,0)){break e}if(J[r>>2]<=10){continue f}break g}if(J[i>>2]<=10){continue}}break}break}a=-19712}Cp(g+36|0);Dj(g+24|0);Dj(g+12|0);Dj(g)}Ui=g+80|0}b=m+156|0;if(b){Kl(b);Zi[J[66509]](b,0,100)|0}Dj(m+4|0)}Ui=m+256|0;h:{if(a){break h}J[h+28>>2]=h+171;b=h+28|0;c=h+32|0;a=bI(b,c,k);if((a|0)<0){break h}b=bI(b,c,p);if((b|0)<0){a=b;break h}c=h+32|0;d=a+b|0;a=cI(h+28|0,c,d);if((a|0)<0){break h}b=J[h+28>>2];if((b-c|0)<=0){b=-108}else{b=b-1|0;J[h+28>>2]=b;H[b|0]=48;b=1}if((b|0)<0){a=b;break h}a=b+(a+d|0)|0;hj(e,J[h+28>>2],a);J[f>>2]=a;a=0}Dj(h+16|0);Dj(h+4|0);Ui=h+176|0;return a}function uJ(a,b){var c=0,d=0,e=0,f=0,g=0,h=0,i=0,j=0,k=0,l=0,m=0,n=0,o=0,p=0,q=0,r=0,s=0,t=0,u=0,v=0,w=0;k=Ui-1120|0;Ui=k;c=a;a:{if(!a){a=-1;break a}a=-2;if(!b){break a}e=yj(b);if(!e){break a}g=J[c+92>>2];if(g){cj(g);J[c+92>>2]=0}if(J[c+20>>2]!=1){a=-19;break a}g=Zj(e+1|0,1);if(g){a=g;while(1){f=K[b|0];if(f){H[a|0]=f;a=a+1|0;b=b+1|0;m=m+1|0;if((e|0)!=(m|0)){continue}}break}J[c+92>>2]=g;m=0;a=0;i=k+8|0;if(i){J[i>>2]=0}b:{c:{if(!c){break b}d:{if(g){f=J[c+72>>2];if(f){break d}}break c}e:{if(!(K[f+49|0]&8|J[c+20>>2]!=1)){if(J[f+36>>2]){a=J[c+16>>2];u=J[f+32>>2];p=yj(g);if(i){J[i>>2]=0}if(a){e=a-1|0;l=0-!a|0;v=J[f+16>>2];w=J[f>>2];while(1){b=e-h|0;a=l-((e>>>0>>0)+o|0)|0;f=a>>1;j=h+((a&1)<<31|b>>>1)|0;f=f+o|0;f=h>>>0>j>>>0?f+1|0:f;r=J[(j<<2)+u>>2];a=J[(r<<2)+v>>2]+w|0;d=a+46|0;q=K[a+28|0]|K[a+29|0]<<8;s=p>>>0>q>>>0?q:p;t=d+s|0;n=g;b=0;a=0;f:{if(!s){break f}while(1){a=K[d|0];b=(a-65&255)>>>0<26?a+32|0:a;a=K[n|0];a=(a-65&255)>>>0<26?a+32|0:a;if((b&255)!=(a&255)){break f}n=n+1|0;a=b;d=d+1|0;if(t>>>0>d>>>0){continue}break}}b=(d|0)==(t|0)?q-p|0:(b&255)-(a&255)|0;if(!b){d=1;if(!i){break b}J[i>>2]=r;break b}a=f;d=j+1|0;a=d?a:a+1|0;b=(b|0)<0;h=b?d:h;e=b?e:j-1|0;o=b?a:o;a=o;l=b?l:f-!j|0;b=l;if((a|0)<=(b|0)&e>>>0>=h>>>0|(a|0)<(b|0)){continue}break}}J[c+28>>2]=28;d=0;break b}b=yj(g);if(b>>>0>=65536){break c}break e}b=yj(g);if(b>>>0>65535){break c}}h=J[c+16>>2];if(h){j=J[f+16>>2];f=J[f>>2];while(1){g:{e=f+J[j+(a<<2)>>2]|0;d=K[e+28|0]|K[e+29|0]<<8;if(d>>>0>>0|(b|0)!=(d|0)){break g}d=0;if(b){n=e+46|0;while(1){e=H[d+g|0];l=(e-65&255)>>>0<26?e+32&255:e;e=H[d+n|0];if((l|0)!=(((e-65&255)>>>0<26?e+32&255:e)|0)){break g}d=d+1|0;if((b|0)!=(d|0)){continue}break}}if(i){J[i>>2]=a;d=1;break b}d=1;break b}a=a+1|0;if((h|0)!=(a|0)){continue}break}}J[c+28>>2]=28;d=0;break b}J[c+28>>2]=24}b=d?J[k+8>>2]:-1;J[c+88>>2]=b;h:{if((b|0)<0){break h}a=J[c+72>>2];if(!(!a|b>>>0>=M[c+16>>2])){m=J[a>>2]+J[J[a+16>>2]+(b<<2)>>2]|0}a=0;if(!tw(c,b,m,k+8|0)){break h}b=k;g=J[b+44>>2];J[c+104>>2]=J[b+40>>2];J[c+108>>2]=g;g=J[b+52>>2];J[c+96>>2]=J[b+48>>2];J[c+100>>2]=g;J[c+112>>2]=J[b+32>>2];g=J[b+20>>2];J[c+120>>2]=J[b+16>>2];J[c+124>>2]=g;g=J[b+68>>2];J[c+160>>2]=J[b+64>>2];J[c+164>>2]=g;I[c+168>>1]=L[b+30>>1];J[c+172>>2]=J[b+60>>2];break a}a=-3;b=J[c+92>>2];if(!b){break a}cj(b);J[c+92>>2]=0;break a}J[c+92>>2]=0}Ui=k+1120|0;return(a|0)!=0}function oG(a,b){var c=0,d=0,e=0,f=0,g=0,h=0,i=0,j=0;d=Ui-288|0;Ui=d;h=Aj(a,1,d+284|0);f=Aj(a,2,d+280|0);c=Zm(a,3,1);e=J[d+284>>2];g=c+(e+1&c>>31)|0;c=(g|0)>0;g=(c?g:0)-1|0;g=c?e>>>0>g>>>0?g:e:0;a:{b:{c:{if(b){if(ck(a,4)){break c}c=kG(f,135210)+f|0;if(!(K[c|0]?c:0)){break c}e=J[d+284>>2]}i=K[f|0];J[d+16>>2]=a;J[d+8>>2]=h;J[d+12>>2]=e+h;e=g+h|0;c=f;f=(i|0)==94;c=c+f|0;if(b){g=d+24|0;while(1){J[d+20>>2]=0;b=Gn(d+8|0,e,c);if(b){c=J[a+8>>2];J[c+8>>2]=3;O[c>>3]=(e-h|0)+1|0;J[a+8>>2]=J[a+8>>2]+16;c=J[a+8>>2];J[c+8>>2]=3;O[c>>3]=b-h|0;J[a+8>>2]=J[a+8>>2]+16;a=J[d+20>>2];Gp(J[d+16>>2],a,22490);d:{if((a|0)<=0){break d}e:{if(J[d+20>>2]<=0){mj(J[d+16>>2],0,0);break e}f:{g:{h:{b=J[d+28>>2];switch(b+2|0){case 1:break g;case 0:break h;default:break f}}c=(J[d+24>>2]-J[d+8>>2]|0)+1|0;b=J[d+16>>2];f=J[b+8>>2];J[f+8>>2]=3;O[f>>3]=c|0;J[b+8>>2]=J[b+8>>2]+16;break e}fj(J[d+16>>2],63668,0)}mj(J[d+16>>2],J[d+24>>2],b)}e=1;if((a|0)==1){break d}while(1){i:{if(J[d+20>>2]<=(e|0)){fj(J[d+16>>2],5334,0);break i}j:{k:{l:{b=g+(e<<3)|0;c=J[b+4>>2];switch(c+2|0){case 1:break k;case 0:break l;default:break j}}c=(J[b>>2]-J[d+8>>2]|0)+1|0;b=J[d+16>>2];f=J[b+8>>2];J[f+8>>2]=3;O[f>>3]=c|0;J[b+8>>2]=J[b+8>>2]+16;break i}fj(J[d+16>>2],63668,0)}mj(J[d+16>>2],J[b>>2],c)}e=e+1|0;if((a|0)!=(e|0)){continue}break}}a=a+2|0;break a}if(f){break b}b=M[d+12>>2]>e>>>0;e=e+1|0;if(b){continue}break}break b}if((i|0)==94){b=0;J[d+20>>2]=0;f=Gn(d+8|0,e,c);if(!f){break b}a=J[d+20>>2];c=h?a?a:1:a;Gp(J[d+16>>2],c,22490);if((c|0)<=0){break a}while(1){rw(d+8|0,b,e,f);b=b+1|0;if((c|0)!=(b|0)){continue}break}a=c;break a}while(1){m:{J[d+20>>2]=0;f=Gn(d+8|0,e,c);if(f){break m}b=M[d+12>>2]>e>>>0;e=e+1|0;if(b){continue}break b}break}a=J[d+20>>2];c=e?a?a:1:a;Gp(J[d+16>>2],c,22490);if((c|0)<=0){break a}b=0;while(1){rw(d+8|0,b,e,f);b=b+1|0;if((c|0)!=(b|0)){continue}break}a=c;break a}c=g+h|0;b=J[d+280>>2];n:{if(b){e=J[d+284>>2]-g|0;if(e>>>0>>0){break b}g=b-1|0;e=e-g|0;if(!e){break b}i=f+1|0;j=H[f|0];b=c;while(1){c=St(b,j,e);if(!c){break b}f=c+1|0;if(!Wj(f,i,g)){break n}c=b+e|0;b=f;e=c-b|0;if(e){continue}break}break b}if(!h){break b}}b=J[a+8>>2];J[b+8>>2]=3;f=b;b=c-h|0;O[f>>3]=b+1|0;J[a+8>>2]=J[a+8>>2]+16;b=b+J[d+280>>2]|0;c=J[a+8>>2];J[c+8>>2]=3;O[c>>3]=b|0;J[a+8>>2]=J[a+8>>2]+16;a=2;break a}b=J[a+8>>2];J[b+8>>2]=0;J[a+8>>2]=b+16;a=1}Ui=d+288|0;return a}function fZ(a){a=a|0;var b=0,c=0,d=0,e=0,f=0,g=0,h=0,i=0,j=0,k=0,l=0,m=0,n=0;b=Tn(a,1042)+24|0;f=Ui-1056|0;Ui=f;m=J[a+8>>2]-J[a+12>>2]>>4;d=mm(a,3,158859,f+12|0);Po(J[b+20>>2]);c=f+16|0;J[c+4>>2]=0;J[c+8>>2]=a;J[c>>2]=c+12;Yn(c,d,J[f+12>>2]);a:{b:{c:{d:{e:{if(!kk(a,2)){c=mm(a,2,50601,0);if(K[c|0]!=42){break c}f:{switch(K[c+1|0]-97|0){case 11:i=b+32|0;c=J[b+28>>2];e=J[b+24>>2];j=f+1052|0;while(1){d=0;g=0;g:{if(c>>>0<=e>>>0){c=J[b+16>>2];g=Zi[J[c+8>>2]](J[c>>2],i,8192,f+1052|0,J[b+20>>2])|0;J[b+24>>2]=0;c=J[f+1052>>2];J[b+28>>2]=c;e=0}h:{if((c|0)==(e|0)){h=0;e=c;break h}n=e+i|0;h=c-e|0;while(1){i:{j:{k=d+n|0;e=K[k|0];switch(e-10|0){case 0:break g;case 3:break i;default:break j}}c=J[f+16>>2];if(j>>>0<=c>>>0){_l(f+16|0);e=K[k|0];c=J[f+16>>2]}J[f+16>>2]=c+1;H[c|0]=e}d=d+1|0;if((h|0)!=(d|0)){continue}break}c=J[b+28>>2];e=J[b+24>>2]}e=e+h|0;J[b+24>>2]=e;J[b+12>>2]=J[b+12>>2]+h;if(c>>>0<=e>>>0){J[b+24>>2]=0;J[b+28>>2]=0;e=0;c=0}if(!g){continue}break d}break};c=d+1|0;J[b+12>>2]=c+J[b+12>>2];c=c+J[b+24>>2]|0;J[b+24>>2]=c;if(c>>>0>2]){break e}J[b+24>>2]=0;J[b+28>>2]=0;break e;case 0:break f;default:break c}}i=b+32|0;while(1){if(g){if((g|0)!=-2){break e}g=-2;if(!h){break d}break b}g=0;e=J[b+28>>2];d=J[b+24>>2];if(e>>>0<=d>>>0){c=J[b+16>>2];g=Zi[J[c+8>>2]](J[c>>2],i,8192,f+1052|0,J[b+20>>2])|0;J[b+24>>2]=0;e=J[f+1052>>2];J[b+28>>2]=e;d=0}c=e-d|0;Yn(f+16|0,d+i|0,c);J[b+12>>2]=c+J[b+12>>2];e=c+J[b+24>>2]|0;J[b+24>>2]=e;h=c+h|0;if(e>>>0>2]){continue}J[b+24>>2]=0;J[b+28>>2]=0;continue}}l=ok(a,2);d=l>=0;c=~~l>>>0;k:{if(d&l<4294967296){break k}c=0}if(!d){Dk(a,2,44656)}d=J[f+12>>2];if(c>>>0<=d>>>0?d:0){break b}i=b+32|0;j=c-d|0;while(1){if(g){break d}g=0;d=J[b+24>>2];h=J[b+28>>2];if(d>>>0>=h>>>0){c=J[b+16>>2];g=Zi[J[c+8>>2]](J[c>>2],i,8192,f+1052|0,J[b+20>>2])|0;J[b+24>>2]=0;h=J[f+1052>>2];J[b+28>>2]=h;d=0}k=d+i|0;c=h-d|0;d=j-e|0;c=c>>>0>>0?c:d;Yn(f+16|0,k,c);J[b+12>>2]=c+J[b+12>>2];d=c+J[b+24>>2]|0;J[b+24>>2]=d;if(d>>>0>=M[b+28>>2]){J[b+24>>2]=0;J[b+28>>2]=0}e=c+e|0;if(j>>>0>e>>>0){continue}break}}if(!g){break b}}Ym(f+16|0);b=J[b+16>>2];xj(a,Zi[J[b+12>>2]](J[b>>2],g)|0);uj(a,-2);b=J[a+8>>2];J[b+8>>2]=0;J[a+8>>2]=b+16;ms(a,-4);break a}Dk(a,2,44656)}Ym(f+16|0);b=J[a+8>>2];J[b+8>>2]=0;J[a+8>>2]=b+16;b=J[a+8>>2];J[b+8>>2]=0;J[a+8>>2]=b+16}Ui=f+1056|0;return(J[a+8>>2]-J[a+12>>2]>>4)-m|0}function Jq(a,b,c){var d=0,e=0,f=0,g=0,h=0,i=0,j=0,k=0,l=0,m=0,n=0,o=0,p=0,q=0,r=0;j=Ui-16|0;Ui=j;l=1;p=J[c+48>>2];a:{if(!p){break a}l=0;while(1){b:{c:{d:{if(M[c+56>>2]>m>>>0){if(M[c+48>>2]<=m>>>0){break d}n=m<<2;i=J[n+J[c+52>>2]>>2];e=J[n+J[c+44>>2]>>2];J[j+12>>2]=0;if(wk(a,i,j+12|0)){break a}if(pr(a,i,j+8|0)){break c}i=J[j+12>>2];d=J[j+8>>2];n=J[d>>2];q=J[d+4>>2];d=0;f=J[b+48>>2];e:{if(!f){break e}h=J[J[b+44>>2]+(mxa(n,q,f)<<2)>>2];if((h|0)==-1){break e}f=J[b+52>>2];while(1){g=f+(h<<4)|0;d=g;d=(n|0)==J[d>>2]&(q|0)==J[d+4>>2];if(d){break e}h=J[g+12>>2];if((h|0)!=-1){continue}break}}if(d){vj(a,i);break b}if(Jq(a,b,J[i>>2])){h=J[j+12>>2];d=J[h>>2];f=Ui-32|0;Ui=f;i=bj(e);o=Yi;J[f+20>>2]=Gk(e);l=0;e=J[d+16>>2];k=J[d+(e?12:0)>>2];e=J[d+(e?16:4)>>2];g=sj(e);J[f+16>>2]=e;J[f+12>>2]=g;hj(g,k,e);J[f+24>>2]=h;J[f+28>>2]=Gk(J[d+8>>2]);e=b+12|0;d=J[b+36>>2];if((d|0)==J[b+28>>2]-J[b+20>>2]>>5){PC(e,127,d+128|0);QC(b+44|0,127,(J[b+60>>2]-J[b+52>>2]>>4)+128|0)}f:{g:{h:{r=J[e+16>>2];k=J[e+8>>2];if(J[e+24>>2]!=r-k>>5){d=J[e+4>>2];i:{if(!d){break i}h=J[J[e>>2]+(mxa(i,o,d)<<2)>>2];if((h|0)==-1){break i}while(1){d=k+(h<<5)|0;if((i|0)==J[d>>2]&(o|0)==J[d+4>>2]){break h}h=J[d+28>>2];if((h|0)!=-1){continue}break}}g=J[e+12>>2];j:{if((r|0)!=(g|0)){J[e+12>>2]=g+32;break j}d=J[e+20>>2];if((d|0)==-1){break g}g=k+(d<<5)|0;J[e+20>>2]=J[g+28>>2]}J[g>>2]=i;J[g+4>>2]=o;d=J[f+16>>2];J[g+8>>2]=J[f+12>>2];J[g+12>>2]=d;d=J[f+24>>2];J[g+16>>2]=J[f+20>>2];J[g+20>>2]=d;J[g+24>>2]=J[f+28>>2];J[g+28>>2]=-1;k=J[e+8>>2];d=J[e>>2]+(mxa(i,o,J[e+4>>2])<<2)|0;h=J[d>>2];if((h|0)!=-1){while(1){d=k+(h<<5)|0;h=J[d+28>>2];if((h|0)!=-1){continue}break}d=d+28|0}J[d>>2]=g-k>>5;J[e+24>>2]=J[e+24>>2]+1;break f}Z(144851,55629,229,9606);B()}g=J[f+16>>2];J[d+8>>2]=J[f+12>>2];J[d+12>>2]=g;J[d+24>>2]=J[f+28>>2];g=J[f+24>>2];J[d+16>>2]=J[f+20>>2];J[d+20>>2]=g;break f}Z(152203,55629,537,2838);B()}d=J[b+16>>2];k:{if(!d){break k}d=J[J[e>>2]+(mxa(i,o,d)<<2)>>2];if((d|0)==-1){break k}e=J[b+20>>2];while(1){d=e+(d<<5)|0;if(J[d>>2]==(i|0)&J[d+4>>2]==(o|0)){l=d;break k}d=J[d+28>>2];if((d|0)!=-1){continue}break}}J[f+8>>2]=l?l+8|0:0;pl(b+44|0,n,q,f+8|0);Ui=f+32|0;break b}vj(a,J[j+12>>2]);break a}Z(12664,55472,45,84789);B()}Z(12664,55472,38,84789);B()}Z(92999,40466,40,22693);B()}m=m+1|0;l=p>>>0<=m>>>0;if((m|0)!=(p|0)){continue}break}}Ui=j+16|0;return l}function JU(a,b,c,d){var e=Q(0),f=0,g=0,h=Q(0),i=Q(0),j=Q(0),k=Q(0),l=Q(0),m=0,n=Q(0),o=Q(0),p=Q(0),q=Q(0),r=0,s=Q(0),t=0,u=0,v=Q(0),w=Q(0),x=Q(0),y=Q(0),z=Q(0),A=Q(0),C=Q(0);f=Ui-32|0;Ui=f;J[f+28>>2]=b;t=a+102872|0;J[f+24>>2]=t;J[f+16>>2]=1065353216;a=J[c+4>>2];J[f>>2]=J[c>>2];J[f+4>>2]=a;a=J[d+4>>2];J[f+8>>2]=J[d>>2];J[f+12>>2]=a;u=f+24|0;a=Ui-1056|0;Ui=a;a:{i=N[f>>2];o=Q(N[f+8>>2]-i);j=N[f+4>>2];q=Q(N[f+12>>2]-j);h=Q(Q(o*o)+Q(q*q));if(h>Q(0)){n=o;e=q;h=Q(Y(h));if(!(h>2];J[a+1052>>2]=256;d=a+24|0;J[a+20>>2]=d;J[a+24>>2]=J[t>>2];k=Q(j+Q(q*h));v=j>k?j:k;l=Q(i+Q(o*h));w=i>l?i:l;x=jQ(0)?n:Q(-n);y=Q(-e);A=e>2]=c;g=J[a+20>>2];m=J[g+(c<<2)>>2];c:{if((m|0)==-1){break c}r=P(m,36);b=r+J[t+4>>2]|0;e=N[b+8>>2];if(e>2];if(l>2];if(s>w){break c}p=N[b+4>>2];if(p>v){break c}C=Q(Q(A*Q(Q(e-s)*Q(.5)))+Q(z*Q(Q(l-p)*Q(.5))));e=Q(Q(y*Q(i-Q(Q(e+s)*Q(.5))))+Q(n*Q(j-Q(Q(l+p)*Q(.5)))));if(C<(e>Q(0)?e:Q(-e))){break c}if(J[b+24>>2]==-1){b=J[f+4>>2];J[a>>2]=J[f>>2];J[a+4>>2]=b;b=J[f+12>>2];c=J[f+8>>2];N[a+16>>2]=h;J[a+8>>2]=c;J[a+12>>2]=b;b=Ui-32|0;Ui=b;d:{e:{if((m|0)<0){break e}c=J[u>>2];if((m|0)>=J[c+12>>2]){break e}g=J[(r+J[c+4>>2]|0)+16>>2];c=J[g+16>>2];m=J[c+12>>2];r=b+20|0;g=J[g+20>>2];f:{if(Zi[J[J[m>>2]+20>>2]](m,r,a,J[c+8>>2]+12|0,g)|0){l=N[a>>2];s=N[a+8>>2];e=N[b+28>>2];p=Q(Q(1)-e);N[b+16>>2]=Q(p*N[a+4>>2])+Q(e*N[a+12>>2]);N[b+12>>2]=Q(p*l)+Q(e*s);m=J[u+4>>2];e=Q(Zi[J[J[m>>2]+8>>2]](m,c,g,b+12|0,r,e));break f}e=N[a+16>>2]}Ui=b+32|0;break d}Z(2361,55750,160,83552);B()}if(e>Q(0)){h=Q(j+Q(q*e));v=hk?i:k;x=h>j?j:h;k=i>2];break c}g:{if(J[a+1052>>2]!=(c|0)){break g}J[a+1052>>2]=c<<1;c=sj(c<<3);J[a+20>>2]=c;hj(c,g,J[a+1048>>2]<<2);if((d|0)==(g|0)){break g}cj(g)}c=J[a+20>>2];J[c+(J[a+1048>>2]<<2)>>2]=J[b+24>>2];g=J[a+1048>>2]+1|0;J[a+1048>>2]=g;h:{if((g|0)!=J[a+1052>>2]){break h}J[a+1052>>2]=g<<1;g=sj(g<<3);J[a+20>>2]=g;hj(g,c,J[a+1048>>2]<<2);if((c|0)==(d|0)){break h}cj(c)}J[J[a+20>>2]+(J[a+1048>>2]<<2)>>2]=J[b+28>>2];c=J[a+1048>>2]+1|0;J[a+1048>>2]=c}if((c|0)>0){continue}}break}b=J[a+20>>2];if((b|0)!=(d|0)){cj(b)}Ui=a+1056|0;break a}Z(58104,55750,232,10171);B()}Ui=f+32|0}function DL(a,b,c,d){var e=0,f=0,g=0,h=0,i=0,j=0,k=0,l=0,m=0;e=Ui-128|0;Ui=e;g=J[a+128>>2];f=J[a+172>>2];a:{if(g>>>0>>0){J[a+128>>2]=g+1;break a}g=f-1|0}i=J[a+120>>2]+P(g,12)|0;J[e+60>>2]=i;b:{f=J[i>>2];c:{if(f){if(J[i+4>>2]==(b|0)){d=J[a+144>>2];f=J[a+148>>2];c=J[c>>2];J[e+52>>2]=tj(J[a+24>>2],J[a+28>>2]);J[e+48>>2]=c;J[e+40>>2]=b;J[e+32>>2]=d;J[e+36>>2]=f;J[e+44>>2]=c>>>0>=255?32:c;dj(3,90423,26981,e+32|0);break c}h=J[a+92>>2];if(!h){break b}d:{e:{j=J[f>>2];l=J[a+88>>2]+((j>>>0)%(h>>>0)<<2)|0;g=J[l>>2];if((g|0)!=-1){f=0;k=J[a+96>>2];h=k+P(g,12)|0;if((j|0)==J[h>>2]){break d}break e}Z(85666,55629,340,62656);B()}while(1){f=h;g=J[f+8>>2];if((g|0)!=-1){h=k+P(g,12)|0;if((j|0)!=J[h>>2]){continue}break d}break}Z(152754,55629,366,62656);B()}J[a+112>>2]=J[a+112>>2]-1;h=f?f+8|0:l;f=k+P(g,12)|0;J[h>>2]=J[f+8>>2];h=J[a+108>>2];J[a+108>>2]=g;J[f+8>>2]=h}J[i>>2]=c;av(a+88|0,J[c>>2],e+60|0);J[J[e+60>>2]+4>>2]=b;f=J[a+124>>2];b=J[a+128>>2];J[e+64>>2]=J[a+120>>2];KF(f,f+(b<<1)|0,e- -64|0,b?62-(S(b)<<1)|0:0,1);b=J[e+60>>2];k=I[b+10>>1];l=I[b+8>>1];J[e+120>>2]=0;J[e+116>>2]=0;J[e+112>>2]=0;h=Zi[J[a+36>>2]](J[c>>2],J[a>>2],e+120|0,e+124|0,e+116|0,e+112|0)|0;f:{g:{h:{b=J[e+124>>2];switch(b|0){case 0:break g;case 1:break h;default:break f}}b=J[a+84>>2];J[e+64>>2]=0;J[e+68>>2]=b;b=sJ(h,J[e+120>>2],e- -64|0,1621);if(b){c=J[c>>2];a=tj(J[a+24>>2],J[a+28>>2]);J[e+24>>2]=b;J[e+20>>2]=a;J[e+16>>2]=c;dj(4,90423,79386,e+16|0);break c}h=J[a+84>>2];i=J[e+64>>2];if((i|0)<=0){break g}j=0;f=0;g=0;if(i>>>0>=4){m=i&2147483644;c=0;while(1){b=g+h|0;f=K[b|0]+f|0;H[b|0]=f;f=f+K[b+1|0]|0;H[b+1|0]=f;f=f+K[b+2|0]|0;H[b+2|0]=f;f=f+K[b+3|0]|0;H[b+3|0]=f;g=g+4|0;c=c+4|0;if((m|0)!=(c|0)){continue}break}}b=i&3;if(b){while(1){c=g+h|0;f=K[c|0]+f|0;H[c|0]=f;g=g+1|0;j=j+1|0;if((b|0)!=(j|0)){continue}break}}h=J[a+84>>2]}H[e+107|0]=0;H[e+108|0]=0;H[e+109|0]=0;H[e+110|0]=0;J[e+84>>2]=1;J[e+88>>2]=1;J[e+68>>2]=0;J[e+100>>2]=0;J[e+104>>2]=0;H[e+110|0]=128;J[e+72>>2]=J[a+132>>2];J[e+76>>2]=J[a+136>>2];b=J[a+140>>2];I[e+104>>1]=J[e+116>>2];J[e+80>>2]=b;I[e+106>>1]=J[e+112>>2];J[e+96>>2]=d+k;J[e+92>>2]=l;J[e+64>>2]=h;Zi[J[79456]](J[a+8>>2],J[a+12>>2],e- -64|0);break c}if(K[336632]){break c}H[336632]=1;c=J[c>>2];J[e+8>>2]=tj(J[a+24>>2],J[a+28>>2]);J[e+4>>2]=c;J[e>>2]=b;dj(4,90423,26769,e)}Ui=e+128|0;return}Z(113800,55629,334,62656);B()}function dN(a){var b=0,c=0,d=0,e=0,f=0,g=0,h=0,i=0,j=0,k=0;a:{while(1){c=J[a+64>>2];if(J[a+68>>2]-c>>6>>>0<=b>>>0){break a}c=c+(b<<6)|0;d=J[c>>2];if(d){cj(d)}c=J[c+4>>2];if(c){vk(c)}b=b+1|0;if((b|0)!=16){continue}break}b=Ui-3392|0;Ui=b;j=J[a+48>>2];Tj(j);b:{if(K[a+88|0]!=1){break b}H[a+88|0]=0;dj(2,99340,50604,0);c=J[a>>2];J[b+52>>2]=5432;J[b+48>>2]=c;c=b- -64|0;Gj(c,1024,26184,b+48|0);g=ol(c,82669);c:{if(g){J[b+1152>>2]=120;J[b+1156>>2]=2232;J[b+1144>>2]=0;J[b+1148>>2]=0;J[b+1136>>2]=-894784852;J[b+1140>>2]=7;d:{e:{if((yl(b+1136|0,1,24,g)|0)!=24){break e}H[b+1100|0]=0;J[b+1096>>2]=g;h=b+1104|0;go(h,0);c=J[a+20>>2];if(c){d=b+1168|0;k=b+1232|0;while(1){e=J[J[a+16>>2]+(i<<2)>>2];if(!(K[b+1100|0]|(e|0)==-1)){while(1){c=J[a+24>>2]+P(e,136)|0;f:{if(K[b+1100|0]){break f}if(H[c+121|0]&1){J[b+32>>2]=c+8;dj(3,99340,131898,b+32|0);break f}e=ij(k,0,2160);f=J[c+4>>2];J[b+1160>>2]=J[c>>2];J[b+1164>>2]=f;f=J[c+68>>2];J[d+56>>2]=J[c+64>>2];J[d+60>>2]=f;f=J[c+60>>2];J[d+48>>2]=J[c+56>>2];J[d+52>>2]=f;f=J[c+52>>2];J[d+40>>2]=J[c+48>>2];J[d+44>>2]=f;f=J[c+44>>2];J[d+32>>2]=J[c+40>>2];J[d+36>>2]=f;f=J[c+36>>2];J[d+24>>2]=J[c+32>>2];J[d+28>>2]=f;f=J[c+28>>2];J[d+16>>2]=J[c+24>>2];J[d+20>>2]=f;f=J[c+20>>2];J[d+8>>2]=J[c+16>>2];J[d+12>>2]=f;f=J[c+12>>2];J[d>>2]=J[c+8>>2];J[d+4>>2]=f;ek(e,J[c+72>>2],2124);e=J[c+84>>2];J[b+3360>>2]=J[c+80>>2];J[b+3364>>2]=e;e=J[c+92>>2];J[b+3368>>2]=J[c+88>>2];J[b+3372>>2]=e;e=J[c+100>>2];J[b+3376>>2]=J[c+96>>2];J[b+3380>>2]=e;e=J[c+108>>2];J[b+3384>>2]=J[c+104>>2];J[b+3388>>2]=e;e=b+1160|0;em(h,e,2232);if((yl(e,1,2232,J[b+1096>>2])|0)==2232){break f}H[b+1100|0]=1}e=J[c+128>>2];if((e|0)!=-1){continue}break}c=J[a+20>>2]}i=i+1|0;if(i>>>0>>0){continue}break}}if(K[b+1100|0]==1){break e}um(g,0,0);J[b+1144>>2]=jp(h);J[b+1148>>2]=Yi;if((yl(b+1136|0,1,24,g)|0)==24){break d}}vk(g);c=b- -64|0;J[b+16>>2]=c;dj(4,99340,148593,b+16|0);Fm(c);break c}vk(g);break b}J[b>>2]=b- -64;dj(4,99340,148626,b)}}Lj(j);Ui=b+3392|0;cj(J[a>>2]);On(J[a+48>>2]);d=J[a+84>>2];b=J[d>>2];if(b){while(1){c=J[b+4>>2];cj(b);b=c;if(b){continue}break}}cj(d);g:{if(H[a+76|0]&1){break g}b=J[a+64>>2];if(!b){break g}cj(b)}h:{if(H[a+60|0]&1){break h}b=J[a+52>>2];if(!b){break h}cj(b)}i:{if(H[a+44|0]&1){break i}b=J[a+24>>2];if(b){cj(b)}b=J[a+16>>2];if(!b){break i}cj(b)}cj(a);return}Z(145396,54052,487,84789);B()}function aV(a,b){var c=0,d=Q(0),e=Q(0),f=0,g=0,h=Q(0),i=0,j=0,k=0,l=Q(0),m=0,n=0,o=Q(0),p=Q(0),q=0,r=0,s=0;a:{b:{c:{d:{e:{f:{g:{h:{if((b|0)!=-1){j=J[a+4>>2];i=j+P(b,36)|0;f=J[i+24>>2];if((f|0)==-1){return b}if(J[i+32>>2]<2){return b}if((f|0)<0){break h}c=J[a+12>>2];if((c|0)<=(f|0)){break h}g=J[i+28>>2];if((g|0)<0|(c|0)<=(g|0)){break g}k=j+P(g,36)|0;q=J[k+32>>2];m=j+P(f,36)|0;r=J[m+32>>2];n=q-r|0;i:{if((n|0)>=2){f=J[k+24>>2];if((f|0)<0|(c|0)<=(f|0)){break f}n=J[k+28>>2];if((n|0)<0|(c|0)<=(n|0)){break e}J[k+24>>2]=b;J[k+20>>2]=J[i+20>>2];J[i+20>>2]=g;c=J[k+20>>2];j:{if((c|0)==-1){break j}a=J[a+4>>2]+P(c,36)|0;if(J[a+24>>2]==(b|0)){a=a+24|0;break j}if(J[a+28>>2]!=(b|0)){break d}a=a+28|0}J[a>>2]=g;c=j+P(f,36)|0;q=J[c+32>>2];j=j+P(n,36)|0;s=J[j+32>>2];a=(q|0)>(s|0);J[k+28>>2]=a?f:n;J[i+28>>2]=a?n:f;f=a?j:c;J[f+20>>2]=b;d=N[f>>2];e=N[m>>2];h=N[m+4>>2];l=N[f+4>>2];h=l>h?h:l;N[i+4>>2]=h;d=e>2]=d;e=N[f+8>>2];l=N[m+8>>2];o=N[m+12>>2];p=N[f+12>>2];o=o>p?o:p;N[i+12>>2]=o;e=e>2]=e;b=a?c:j;l=N[b>>2];p=N[b+4>>2];N[k+4>>2]=h>2]=d>2];d=d>2];e=e>h?e:h;b=(q|0)<(s|0)?q:s;b=(b|0)<(r|0)?r:b;a=a?c+32|0:j+32|0;break i}if((n|0)>-2){return b}g=J[m+24>>2];if((g|0)<0|(c|0)<=(g|0)){break c}n=J[m+28>>2];if((n|0)<0|(c|0)<=(n|0)){break b}J[m+24>>2]=b;J[m+20>>2]=J[i+20>>2];J[i+20>>2]=f;c=J[m+20>>2];k:{if((c|0)==-1){break k}a=J[a+4>>2]+P(c,36)|0;if(J[a+24>>2]==(b|0)){a=a+24|0;break k}if(J[a+28>>2]!=(b|0)){break a}a=a+28|0}J[a>>2]=f;c=j+P(g,36)|0;r=J[c+32>>2];j=j+P(n,36)|0;s=J[j+32>>2];a=(r|0)>(s|0);J[m+28>>2]=a?g:n;J[i+24>>2]=a?n:g;g=a?j:c;J[g+20>>2]=b;d=N[g>>2];e=N[k>>2];h=N[k+4>>2];l=N[g+4>>2];h=l>h?h:l;N[i+4>>2]=h;d=e>2]=d;e=N[g+8>>2];l=N[k+8>>2];o=N[k+12>>2];p=N[g+12>>2];o=o>p?o:p;N[i+12>>2]=o;e=e>2]=e;b=a?c:j;l=N[b>>2];p=N[b+4>>2];N[m+4>>2]=h>2]=d>2];d=d>2];e=e>h?e:h;b=(r|0)<(s|0)?r:s;b=(b|0)<(q|0)?q:b;k=m;g=f;a=a?c+32|0:j+32|0}b=b+1|0;J[i+32>>2]=b;a=J[a>>2];N[k+12>>2]=d;N[k+8>>2]=e;J[k+32>>2]=((a|0)<(b|0)?b:a)+1;return g}Z(144303,42086,382,70562);B()}Z(2596,42086,392,70562);B()}Z(2565,42086,393,70562);B()}Z(2472,42086,407,70562);B()}Z(2441,42086,408,70562);B()}Z(99552,42086,424,70562);B()}Z(2534,42086,467,70562);B()}Z(2503,42086,468,70562);B()}Z(99584,42086,484,70562);B()}function RG(a,b,c){var d=0,e=0,f=0,g=0,h=0,i=0;f=Ui-128|0;Ui=f;vl(a,J[a>>2]);d=J[a+56>>2];e=J[d>>2];J[d>>2]=e-1;a:{if(e){e=d;d=J[d+4>>2];J[e+4>>2]=d+1;d=K[d|0];break a}d=Rk(d)}J[a>>2]=d;b:{switch(d-10|0){case 0:case 3:eB(a);break;default:break b}}i=b?56409:13763;while(1){c:{d:{e:{f:{g:{h:{d=J[a>>2];switch(d+1|0){case 0:break g;case 1:case 2:case 3:case 4:case 5:case 6:case 7:case 8:case 9:case 10:case 12:case 13:break c;case 11:case 14:break d;default:break h}}switch(d-91|0){case 2:break e;case 0:break f;default:break c}}d=f+48|0;Xn(d,J[a+64>>2]+16|0,80);e=J[a+52>>2];g=J[a+4>>2];J[f+24>>2]=i;J[f+20>>2]=g;J[f+16>>2]=d;d=gk(e,30545,f+16|0);e=J[a+52>>2];J[f+4>>2]=102377;J[f>>2]=d;gk(e,147143,f);al(J[a+52>>2],3);continue}if((kw(a)|0)!=(c|0)){continue}vl(a,J[a>>2]);d=J[a+56>>2];e=J[d>>2];J[d>>2]=e-1;i:{if(e){e=d;d=J[d+4>>2];J[e+4>>2]=d+1;d=K[d|0];break i}d=Rk(d)}J[a>>2]=d;if(c){continue}Wn(a,74218,91);continue}if((kw(a)|0)!=(c|0)){continue}vl(a,J[a>>2]);d=J[a+56>>2];e=J[d>>2];J[d>>2]=e-1;j:{if(e){e=d;d=J[d+4>>2];J[e+4>>2]=d+1;d=K[d|0];break j}d=Rk(d)}J[a>>2]=d;if(b){d=J[a+52>>2];c=c+2|0;e=J[a+60>>2];c=zk(d,c+J[e>>2]|0,J[e+4>>2]-(c<<1)|0);a=mu(d,J[J[a+48>>2]+4>>2],c);if(!J[a+8>>2]){J[a+8>>2]=1;J[a>>2]=1}J[b>>2]=c}Ui=f+128|0;return}e=J[a+60>>2];h=J[e+4>>2];g=h+1|0;d=J[e+8>>2];k:{if(g>>>0<=d>>>0){d=J[e>>2];break k}if(d>>>0>=2147483646){d=f+48|0;Xn(d,J[a+64>>2]+16|0,80);g=J[a+52>>2];h=J[a+4>>2];J[f+40>>2]=56009;J[f+36>>2]=h;J[f+32>>2]=d;gk(g,30545,f+32|0);al(J[a+52>>2],3);d=J[e+8>>2]}g=J[a+52>>2];h=d<<1;l:{if((h|0)!=-2){d=lk(g,J[e>>2],d,h);break l}d=Dl(g)}J[e+8>>2]=h;J[e>>2]=d;h=J[e+4>>2];g=h+1|0}J[e+4>>2]=g;H[d+h|0]=10;g=J[a>>2];d=J[a+56>>2];e=J[d>>2];J[d>>2]=e-1;m:{if(e){e=d;d=J[d+4>>2];J[e+4>>2]=d+1;d=K[d|0];break m}d=Rk(d)}J[a>>2]=d;n:{o:{switch(d-10|0){case 0:case 3:break o;default:break n}}if((d|0)==(g|0)){break n}d=J[a+56>>2];e=J[d>>2];J[d>>2]=e-1;p:{if(e){e=d;d=J[d+4>>2];J[e+4>>2]=d+1;d=K[d|0];break p}d=Rk(d)}J[a>>2]=d}d=J[a+4>>2];J[a+4>>2]=d+1;if((d|0)>=2147483644){Wn(a,22561,J[a+16>>2])}if(b){continue}J[J[a+60>>2]+4>>2]=0;continue}if(b){vl(a,d);d=J[a+56>>2];e=J[d>>2];J[d>>2]=e-1;if(e){e=d;d=J[d+4>>2];J[e+4>>2]=d+1;J[a>>2]=K[d|0];continue}J[a>>2]=Rk(d);continue}d=J[a+56>>2];e=J[d>>2];J[d>>2]=e-1;if(e){e=d;d=J[d+4>>2];J[e+4>>2]=d+1;J[a>>2]=K[d|0]}else{J[a>>2]=Rk(d)}continue}}function rN(a,b,c){var d=0,e=0,f=0,g=0,h=0,i=0,j=0,k=0,l=0,m=0,n=0,o=0;d=Ui-32|0;Ui=d;a:{switch(b+1|0){case 1:Z(112335,55689,156,2284);B();case 0:Z(94770,55689,157,2284);B();default:break a}}if((c|0)!=-1){f=J[a+8>>2];if(J[a+16>>2]-f>>6>>>0<=c>>>0){b:{if(!f){J[a+4>>2]=b;b=b<<2;f=sj(b);J[a>>2]=f;ij(f,255,b);c=c<<6;b=sj(c);J[a+12>>2]=b;J[a+8>>2]=b;J[a+16>>2]=b+c;break b}J[d+16>>2]=0;J[d+20>>2]=0;J[d+24>>2]=0;J[d+28>>2]=0;J[d+8>>2]=0;J[d+12>>2]=0;J[d>>2]=0;J[d+4>>2]=0;J[d+20>>2]=-1;rN(d,b,c);f=J[a+4>>2];if(f){m=J[d+16>>2];h=J[d+8>>2];o=m-h>>6;c=J[d+12>>2];while(1){b=J[J[a>>2]+(k<<2)>>2];if((b|0)!=-1){i=J[d+24>>2];n=J[d>>2];while(1){c:{d:{e:{if((i|0)!=(o|0)){e=J[a+8>>2]+(b<<6)|0;b=e;g=J[b>>2];j=J[b+4>>2];l=J[d+4>>2];f:{if(!l){break f}b=J[(mxa(g,j,l)<<2)+n>>2];if((b|0)==-1){break f}while(1){b=(b<<6)+h|0;if((g|0)==J[b>>2]&(j|0)==J[b+4>>2]){break e}b=J[b+56>>2];if((b|0)!=-1){continue}break}}g:{if((c|0)!=(m|0)){f=c- -64|0;break g}b=J[d+20>>2];if((b|0)==-1){break d}b=(b<<6)+h|0;J[d+20>>2]=J[b+56>>2];f=c;c=b}J[c>>2]=g;J[c+4>>2]=j;b=J[e+12>>2];J[c+8>>2]=J[e+8>>2];J[c+12>>2]=b;b=J[e+20>>2];J[c+16>>2]=J[e+16>>2];J[c+20>>2]=b;b=J[e+28>>2];J[c+24>>2]=J[e+24>>2];J[c+28>>2]=b;b=J[e+36>>2];J[c+32>>2]=J[e+32>>2];J[c+36>>2]=b;b=J[e+44>>2];J[c+40>>2]=J[e+40>>2];J[c+44>>2]=b;b=J[e+52>>2];J[c+48>>2]=J[e+48>>2];J[c+52>>2]=b;J[c+56>>2]=-1;g=(mxa(g,j,l)<<2)+n|0;b=J[g>>2];h:{if((b|0)==-1){J[g>>2]=c-h>>6;i=J[d+24>>2];break h}while(1){g=(b<<6)+h|0;b=J[g+56>>2];if((b|0)!=-1){continue}break}J[g+56>>2]=c-h>>6}i=i+1|0;J[d+24>>2]=i;c=f;break c}J[d+12>>2]=c;Z(144851,55689,229,9606);B()}f=J[e+12>>2];J[b+8>>2]=J[e+8>>2];J[b+12>>2]=f;f=J[e+52>>2];J[b+48>>2]=J[e+48>>2];J[b+52>>2]=f;f=J[e+44>>2];J[b+40>>2]=J[e+40>>2];J[b+44>>2]=f;f=J[e+36>>2];J[b+32>>2]=J[e+32>>2];J[b+36>>2]=f;f=J[e+28>>2];J[b+24>>2]=J[e+24>>2];J[b+28>>2]=f;f=J[e+20>>2];J[b+16>>2]=J[e+16>>2];J[b+20>>2]=f;break c}J[d+12>>2]=c;Z(152203,55689,537,2838);B()}b=J[e+56>>2];if((b|0)!=-1){continue}break}f=J[a+4>>2]}k=k+1|0;if(k>>>0>>0){continue}break}J[d+12>>2]=c}cj(J[a>>2]);cj(J[a+8>>2]);b=J[d+28>>2];J[a+24>>2]=J[d+24>>2];J[a+28>>2]=b;b=J[d+20>>2];J[a+16>>2]=J[d+16>>2];J[a+20>>2]=b;b=J[d+12>>2];J[a+8>>2]=J[d+8>>2];J[a+12>>2]=b;b=J[d+4>>2];J[a>>2]=J[d>>2];J[a+4>>2]=b}Ui=d+32|0;return}Z(144759,55689,159,2284);B()}Z(94750,55689,158,2284);B()}function VD(a){var b=0,c=0,d=0,e=0,f=0,g=0,h=0,i=0,j=0;h=Ui-48|0;Ui=h;b=h+12|0;J[b>>2]=0;J[b+4>>2]=0;J[b+32>>2]=0;J[b+24>>2]=0;J[b+28>>2]=0;J[b+16>>2]=0;J[b+20>>2]=0;J[b+8>>2]=0;J[b+12>>2]=0;J[b>>2]=J[a+4>>2];J[b+4>>2]=J[a+12>>2];c=J[a+20>>2];J[b+12>>2]=0;J[b+16>>2]=0;J[b+8>>2]=c;J[b+20>>2]=J[a+28>>2];J[b+24>>2]=J[a+36>>2];J[b+28>>2]=J[a+44>>2];J[b+32>>2]=J[a+52>>2];a:{b:{c:{d:{if(c){d=J[a+16>>2];f=J[a+72>>2];while(1){if((c|0)==(e|0)){break d}g=(yj(J[f+(J[(d+(e<<5)|0)+16>>2]<<2)>>2])+g|0)+1|0;J[b+12>>2]=g;e=e+1|0;if((c|0)!=(e|0)){continue}break}}e=WD(b);if(J[a+4>>2]){c=0;while(1){b=J[a>>2]+(c<<5)|0;d=J[b+16>>2];if(d>>>0>=M[a+60>>2]){break a}pR(e,J[b+8>>2],J[b+12>>2],N[J[a+56>>2]+(d<<2)>>2]);c=c+1|0;if(c>>>0>2]){continue}break}}if(J[a+28>>2]){c=0;while(1){b=J[a+24>>2]+(c<<5)|0;d=J[b+16>>2];if(d>>>0>=M[a+60>>2]){break a}mR(e,J[b+8>>2],J[b+12>>2],J[a+56>>2]+(d<<2)|0);c=c+1|0;if(c>>>0>2]){continue}break}}if(J[a+36>>2]){c=0;while(1){b=J[a+32>>2]+(c<<5)|0;d=J[b+16>>2];if(d>>>0>=M[a+60>>2]){break a}lR(e,J[b+8>>2],J[b+12>>2],J[a+56>>2]+(d<<2)|0);c=c+1|0;if(c>>>0>2]){continue}break}}if(J[a+44>>2]){c=0;while(1){b=J[a+40>>2]+(c<<5)|0;d=J[b+16>>2];if(d>>>0>=M[a+60>>2]){break a}nR(e,J[b+8>>2],J[b+12>>2],J[a+56>>2]+(d<<2)|0);c=c+1|0;if(c>>>0>2]){continue}break}}if(J[a+52>>2]){c=0;while(1){b=J[a+48>>2]+(c<<5)|0;d=J[b+16>>2];if(d>>>0>=M[a+60>>2]){break a}rR(e,J[b+8>>2],J[b+12>>2],N[J[a+56>>2]+(d<<2)>>2]!=Q(0));c=c+1|0;if(c>>>0>2]){continue}break}}if(J[a+12>>2]){c=0;while(1){b=J[a+8>>2]+(c<<5)|0;d=J[b+16>>2];if(d>>>0>=M[a+68>>2]){break c}f=J[b+8>>2];g=J[b+12>>2];b=J[a+64>>2]+(d<<3)|0;oR(e,f,g,J[b>>2],J[b+4>>2]);c=c+1|0;if(c>>>0>2]){continue}break}}if(J[a+20>>2]){c=0;while(1){d=J[a+16>>2]+(c<<5)|0;f=J[d+16>>2];if(f>>>0>=M[a+76>>2]){break b}b=J[d+8>>2];j=J[d+12>>2];g=J[J[a+72>>2]+(f<<2)>>2];f=J[e+4>>2];d=J[e>>2];if(f>>>0>=M[d+4>>2]){Z(12601,39139,270,2838);B()}J[e+4>>2]=f+1;i=J[d+8>>2]+(f<<3)|0;J[i>>2]=b;J[i+4>>2]=j;b=f<<2;J[b+J[d+16>>2]>>2]=7;f=b+J[d+12>>2]|0;b=J[e+16>>2];J[f>>2]=b;d=b+J[d+32>>2]|0;b=yj(g)+1|0;hj(d,g,b);J[e+16>>2]=b+J[e+16>>2];c=c+1|0;if(c>>>0>2]){continue}break}}a=sR(e);Ui=h+48|0;return a}Z(12664,54931,69,84789);B()}Z(12664,54931,117,84789);B()}Z(12664,54931,125,84789);B()}Z(12664,54931,109,84789);B()}function maa(a){a=a|0;var b=0,c=0,d=0,e=Q(0),f=0,g=0,h=0,i=0,j=0,k=0,l=0,m=0,n=0,o=0,p=Q(0),q=0,r=0;b=Ui-272|0;Ui=b;q=pj(b+252|0,a,0,37682,1438);Bj(a);i=qj(a,-1,J[219396],139183);gj(a,-2);Qj(a,1,b+248|0);a:{if(Lp(a,2)){c=Tl(a,2);j=Yi;break a}c=bj(Aj(a,2,0));j=Yi}k=c;if(!tO(c,j)){J[b+48>>2]=rx(a,2,b+112|0);fj(a,71038,b+48|0)}b:{if(kk(a,3)){e=Q(ok(a,3));N[b+124>>2]=e;N[b+120>>2]=e;N[b+116>>2]=e;N[b+112>>2]=e;break b}c=Gm(a,3);if(c){g=Ui-16|0;Ui=g;c:{d:{e:{h=J[b+248>>2];d=h&65535;f=J[i+32>>2];if(d>>>0<(J[i+36>>2]-f|0)/672>>>0){f=f+P(d,672)|0;if(L[f+648>>1]!=(h>>>16|0)){break e}if((d|0)!=L[f+650>>1]){break d}h=Ws(k,j);f:{if(h){d=f+(J[h+8>>2]<<4)|0;f=K[h+12|0];if((f|0)==255){N[b+96>>2]=N[d>>2];N[b+100>>2]=N[d+4>>2];N[b+104>>2]=N[d+8>>2];N[b+108>>2]=N[d+12>>2];break f}e=N[d+(f<<2)>>2];N[b+108>>2]=e;N[b+104>>2]=e;N[b+100>>2]=e;N[b+96>>2]=e;break f}J[g>>2]=tj(k,j);dj(4,93318,71062,g);J[b+104>>2]=0;J[b+108>>2]=0;J[b+96>>2]=0;J[b+100>>2]=0}Ui=g+16|0;break c}Z(145396,53895,487,84789);B()}Z(47372,40876,188,69601);B()}Z(5388,40876,189,69601);B()}d=J[c>>2];g=J[c+4>>2];e=N[c+8>>2];N[b+124>>2]=N[b+108>>2];N[b+120>>2]=e;J[b+112>>2]=d;J[b+116>>2]=g;break b}c=Au(a,3);if(c){d=J[c>>2];g=J[c+4>>2];f=J[c+12>>2];J[b+120>>2]=J[c+8>>2];J[b+124>>2]=f;J[b+112>>2]=d;J[b+116>>2]=g;break b}c=Qm(a,3);N[b+112>>2]=N[c>>2];N[b+116>>2]=N[c+4>>2];N[b+120>>2]=N[c+8>>2];N[b+124>>2]=N[c+12>>2]}g:{h:{i:{if(kk(a,4)){d=Ej(a,4);c=0;if((d|0)<42){break i}a=fj(a,14018,0);break g}if(!EB(a,4)){break h}m=kK(a,4);Nj(a,-1e4,J[i+8>>2]);uj(a,4);l=Lk(a,-2);gj(a,-2);n=2318;d=41;c=i}r=wj(a,5);j:{if(kk(a,6)){e=Q(ok(a,6));if((kj(a,7)|0)!=6){g=-2;break j}o=$m(a,7);Nj(a,-1e4,J[i+8>>2]);uj(a,1);g=to(a,-2);gj(a,-2);break j}g=-2;e=Q(0);if((kj(a,6)|0)==-1){break j}Yk(a,6,36031)}if(kk(a,8)){a=Ej(a,8)}else{a=0}p=Q(r);f=J[b+248>>2];if(!o){J[b+84>>2]=n;J[b+92>>2]=l;J[b+16>>2]=l;J[b+88>>2]=c;c=J[b+88>>2];J[b+8>>2]=J[b+84>>2];J[b+12>>2]=c;J[b+80>>2]=m;J[b+76>>2]=d;c=J[b+80>>2];J[b>>2]=J[b+76>>2];J[b+4>>2]=c;RO(i,f,k,j,b+112|0,b,a,p,e,0,0,0);a=0;break g}h=b- -64|0;J[h>>2]=n;J[b+72>>2]=l;J[b+40>>2]=l;J[b+68>>2]=c;c=J[h+4>>2];J[b+32>>2]=J[h>>2];J[b+36>>2]=c;J[b+60>>2]=m;J[b+56>>2]=d;c=J[b+60>>2];J[b+24>>2]=J[b+56>>2];J[b+28>>2]=c;RO(i,f,k,j,b+112|0,b+24|0,a,p,e,2319,o,g);a=0;break g}a=fj(a,32154,0)}oj(q);Ui=b+272|0;return a|0}function bt(a,b,c,d,e,f,g,h){var i=0,j=0,k=0,l=Q(0);i=Ui-288|0;Ui=i;J[i+280>>2]=0;J[i+284>>2]=0;J[i+276>>2]=0;k=-1;J[i+272>>2]=-1;I[i+270>>1]=0;a:{if(!tL(a,b,c,i+280|0,i+276|0,i+272|0,i+270|0)){break a}if(Zi[g|0](h,J[i+280>>2],J[i+284>>2],i+260|0)|0){g=J[i+260>>2];J[i+264>>2]=L[g+32>>1];g=J[g>>2];k=-11;h=J[J[i+260>>2]+16>>2]==9;d=h?d<<2:d;if(d>>>0>=M[i+264>>2]){break a}j=(d<<4)+g|0}I[e+108>>1]=I[e+108>>1]&1|L[i+270>>1]<<2;b:{g=J[i+280>>2];k=J[i+284>>2];if((b|0)==(g|0)&(k|0)==(c|0)){g=J[i+276>>2];if(g){k=J[g+4>>2];J[e>>2]=J[g>>2];J[e+4>>2]=k;k=J[g+12>>2];J[e+8>>2]=J[g+8>>2];J[e+12>>2]=k;k=J[g+20>>2];J[e+16>>2]=J[g+16>>2];J[e+20>>2]=k;k=J[g+28>>2];J[e+24>>2]=J[g+24>>2];J[e+28>>2]=k}if(j){c:{if(h&1){N[i+112>>2]=N[j>>2];N[i+116>>2]=N[j+4>>2];N[i+120>>2]=N[j+8>>2];N[i+124>>2]=N[j+12>>2];N[i+128>>2]=N[j+16>>2];N[i+132>>2]=N[j+20>>2];N[i+136>>2]=N[j+24>>2];N[i+140>>2]=N[j+28>>2];N[i+144>>2]=N[j+32>>2];N[i+148>>2]=N[j+36>>2];N[i+152>>2]=N[j+40>>2];N[i+156>>2]=N[j+44>>2];N[i+160>>2]=N[j+48>>2];N[i+164>>2]=N[j+52>>2];N[i+168>>2]=N[j+56>>2];N[i+172>>2]=N[j+60>>2];hj(e+32|0,Ey(i+184|0,i+112|0),72);break c}N[i+96>>2]=N[j>>2];N[i+100>>2]=N[j+4>>2];N[i+104>>2]=N[j+8>>2];N[i+108>>2]=N[j+12>>2];hj(e+32|0,Yp(i+184|0,i+96|0),72)}k=0;if(!f){break a}J[e+104>>2]=j;break a}Tu(a,b,c,i+92|0);a=J[i+92>>2];b=J[a+16>>2];J[i+264>>2]=L[a+32>>1];c=d<<2;b=(b|0)==9;if(M[i+264>>2]<=(b?c:d)>>>0){break b}a=J[a>>2];if(b){a=a+(c<<4)|0;N[i+16>>2]=N[a>>2];N[i+20>>2]=N[a+4>>2];N[i+24>>2]=N[a+8>>2];N[i+28>>2]=N[a+12>>2];N[i+32>>2]=N[a+16>>2];N[i+36>>2]=N[a+20>>2];N[i+40>>2]=N[a+24>>2];N[i+44>>2]=N[a+28>>2];N[i+48>>2]=N[a+32>>2];N[i+52>>2]=N[a+36>>2];N[i+56>>2]=N[a+40>>2];N[i+60>>2]=N[a+44>>2];N[i+64>>2]=N[a+48>>2];N[i+68>>2]=N[a+52>>2];N[i+72>>2]=N[a+56>>2];N[i+76>>2]=N[a+60>>2];hj(e+32|0,Ey(i+184|0,i+16|0),72);k=0;break a}a=a+(d<<4)|0;N[i>>2]=N[a>>2];N[i+4>>2]=N[a+4>>2];N[i+8>>2]=N[a+8>>2];N[i+12>>2]=N[a+12>>2];hj(e+32|0,Yp(i+184|0,i),72);k=0;break a}if(j){b=(J[i+272>>2]<<2)+j|0;l=N[b>>2];a=i+184|0;J[a>>2]=0;O[a+8>>3]=l;hj(e+32|0,a,72);k=0;if(!f){break a}J[e+104>>2]=b;break a}Tu(a,g,k,i+92|0);a=J[i+92>>2];J[i+264>>2]=L[a+32>>1];a=J[a>>2];if(M[i+264>>2]<=d>>>0){break b}l=N[((d<<4)+a|0)+(J[i+272>>2]<<2)>>2];a=i+184|0;J[a>>2]=0;O[a+8>>3]=l;hj(e+32|0,a,72);k=0;break a}k=-11}Ui=i+288|0;return k}function RQ(a,b,c){var d=0,e=0,f=0,g=0,h=0,i=0,j=0,k=0,l=Q(0),m=Q(0);j=Ui-16|0;Ui=j;f=J[b+20>>2];i=f;d=J[b+16>>2];a:{if(f|d){g=-3;e=J[a>>2];h=J[e+4>>2];b:{if(!h){break b}f=J[J[e>>2]+(mxa(d,f,h)<<2)>>2];if((f|0)==-1){break b}e=J[e+8>>2];while(1){f=e+P(f,56)|0;if(J[f>>2]!=(d|0)|J[f+4>>2]!=(i|0)){f=J[f+48>>2];if((f|0)!=-1){continue}break b}break}Ns(a,J[f+16>>2]);J[j+12>>2]=J[f+16>>2];g=0}d=g;break a}d=wk(a,J[b>>2],j+12|0)}g=J[j+12>>2];J[c+80>>2]=g;c:{d:{e:{f:{g:{h:{i:{if(d){Uj(b);break i}d=hp(a,g,c+88|0);if(d){break i}J[c+96>>2]=b;a=J[j+12>>2];a=Zi[J[79463]](J[a>>2],J[a+4>>2])|0;d=J[j+12>>2];g=Zi[J[79464]](J[d>>2],J[d+4>>2])|0;d=-1;if(a>>>0>2]|g>>>0>2]){break i}if(H[c+12|0]&1){break h}a=J[b+64>>2];lj(a,8,c,c+8|0,c+4|0);d=J[c>>2];if(a>>>0>J[c+8>>2]-d>>3>>>0){break g}J[c+4>>2]=d+(a<<3);f=nj(a>>>0>1073741823?-1:a<<2);if(a){d=0;while(1){if(M[b+64>>2]<=d>>>0){break f}g=J[b+60>>2]+P(d,12)|0;e=bj(J[g+8>>2]);i=Yi;h=J[c>>2];if(J[c+4>>2]-h>>3>>>0<=d>>>0){break e}h=h+(d<<3)|0;J[h>>2]=e;J[h+4>>2]=i;e=f+(d<<2)|0;I[e>>1]=J[g>>2];I[e+2>>1]=J[g+4>>2];d=d+1|0;if((a|0)!=(d|0)){continue}break}}d=J[b+48>>2];e=d>>>1|0;h=J[b+36>>2];k=J[b+32>>2];i=J[b+44>>2];g=nj(d>>>0>1073741823?-1:d<<2&-8);if(d>>>0>=2){l=Q(Q(1)/Q(h-1>>>0));m=Q(Q(1)/Q(k-1>>>0));d=0;while(1){h=d<<3;N[h+g>>2]=Q(N[h+i>>2]*m)+Q(-.5);h=h|4;N[h+g>>2]=Q(N[h+i>>2]*l)+Q(-.5);d=d+1|0;if((e|0)!=(d|0)){continue}break}}d=nj(16);i=e<<3;h=sj(i);J[d>>2]=h;hj(h,g,i);J[d+4>>2]=e;e=a<<2;i=sj(e);J[d+8>>2]=i;hj(i,f,e);J[d+12>>2]=a;J[c+100>>2]=d;cj(f);cj(g);a=J[b+28>>2];ij(J[c+16>>2],255,J[c+20>>2]<<2);J[c+36>>2]=-1;J[c+40>>2]=0;J[c+28>>2]=J[c+24>>2];g=c+16|0;d=(a<<1>>>0)/3|0;$u(g,d>>>0<=1?1:d,a);d=0;J[j+8>>2]=0;if(a){while(1){if(M[b+28>>2]<=d>>>0){break d}pl(g,bj(J[J[b+24>>2]+P(d,36)>>2]),Yi,j+8|0);d=J[j+8>>2]+1|0;J[j+8>>2]=d;if(a>>>0>d>>>0){continue}break}}g=J[b+76>>2];f=c+48|0;a=J[b+72>>2];c=(a<<1>>>0)/3|0;$u(f,c>>>0<=1?1:c,a);d=0;if(!a){break i}c=0;while(1){if(M[b+72>>2]<=c>>>0){break c}e=J[b+68>>2]+(c<<3)|0;i=J[e>>2];e=J[e+4>>2];J[j+4>>2]=J[g+(c<<2)>>2];pl(f,i,e,j+4|0);c=c+1|0;if((a|0)!=(c|0)){continue}break}}Ui=j+16|0;return d}Z(151729,53895,501,2284);B()}Z(144782,53895,514,59583);B()}Z(12664,54737,122,84789);B()}Z(145396,53895,487,84789);B()}Z(12664,54737,96,84789);B()}Z(12664,54737,130,84789);B()}function L3(a){a=a|0;var b=0,c=Q(0),d=0,e=Q(0),f=Q(0),g=Q(0),h=Q(0),i=Q(0),j=Q(0),k=Q(0),l=Q(0),m=Q(0),n=Q(0),o=Q(0),p=Q(0),q=Q(0),r=Q(0),s=Q(0),t=Q(0),u=Q(0),v=Q(0),w=Q(0),x=Q(0),y=Q(0),z=Q(0),A=Q(0),B=Q(0),C=Q(0),D=Q(0),E=Q(0),F=Q(0),G=Q(0),H=Q(0),I=Q(0),K=Q(0),L=Q(0),M=Q(0),P=Q(0),R=Q(0),S=Q(0),T=Q(0);d=Ui-112|0;Ui=d;J[d+108>>2]=0;a:{if(vn(a,1,d+108|0)>>>0>=2){J[d+92>>2]=106998;J[d+88>>2]=108973;J[d+84>>2]=62353;J[d+80>>2]=53139;a=fj(a,115444,d+80|0);break a}b=J[d+108>>2];g=N[b+8>>2];s=N[b+4>>2];u=N[b>>2];b=qj(a,2,J[215722],0);e=N[b+8>>2];c=N[b>>2];f=N[b+4>>2];b:{if(!(c!=c|f!=f|e!=e)){h=N[b+12>>2];if(h==h){break b}}l=N[b+12>>2];O[d+56>>3]=e;O[d+48>>3]=f;O[d- -64>>3]=l;O[d+40>>3]=c;J[d+32>>2]=2;fj(a,138526,d+32|0);h=N[b+12>>2];e=N[b+8>>2];f=N[b+4>>2];c=N[b>>2]}b=qj(a,3,J[215720],0);l=N[b+8>>2];j=Q(e+e);n=Q(f*j);t=Q(c+c);o=Q(t*h);v=Q(n-o);p=Q(c*j);i=Q(f+f);k=Q(i*h);w=Q(p+k);n=Q(n+o);m=Q(c*i);q=Q(h*j);h=Q(m-q);o=Q(p-k);p=Q(m+q);c=Q(Q(1)-Q(c*t));i=Q(f*i);f=Q(c-i);k=c;c=Q(e*j);e=Q(k-c);j=Q(Q(Q(1)-i)-c);c=N[b>>2];r=N[b+4>>2];if(!(!(c!=c|r!=r)&l==l)){O[d+24>>3]=l;O[d+16>>3]=r;J[d>>2]=3;O[d+8>>3]=c;fj(a,138436,d);l=N[b+8>>2];r=N[b+4>>2];c=N[b>>2]}b=Sj(a,64);i=Q(f*Q(0));q=Q(w*Q(0));x=Q(v*Q(0));y=Q(q+x);D=Q(Q(i+y)+Q(0));t=Q(D*Q(0));k=Q(o*Q(0));z=Q(j*Q(0));E=Q(p*Q(0));A=Q(z+E);F=Q(Q(k+A)+Q(0));G=Q(F*Q(0));m=Q(n*Q(0));B=Q(h*Q(0));H=Q(e*Q(0));C=Q(B+H);I=Q(Q(m+C)+Q(0));K=Q(I*Q(0));L=Q(G+K);N[b+60>>2]=Q(t+L)+Q(1);M=Q(g+Q(0));g=Q(g*Q(0));y=Q(g+Q(f+y));f=Q(y*Q(0));o=Q(g+Q(o+A));A=Q(o*Q(0));n=Q(g+Q(n+C));C=Q(n*Q(0));P=Q(A+C);N[b+56>>2]=M+Q(f+P);R=Q(s+Q(0));g=Q(s*Q(0));v=Q(g+Q(i+Q(q+v)));s=Q(v*Q(0));p=Q(g+Q(k+Q(z+p)));q=Q(p*Q(0));z=Q(g+Q(m+Q(B+e)));B=Q(z*Q(0));S=Q(q+B);N[b+52>>2]=R+Q(s+S);T=Q(u+Q(0));e=Q(u*Q(0));u=Q(e+Q(i+Q(w+x)));g=Q(u*Q(0));i=Q(e+Q(k+Q(j+E)));w=Q(i*Q(0));k=Q(e+Q(m+Q(h+H)));m=Q(k*Q(0));x=Q(w+m);N[b+48>>2]=T+Q(g+x);N[b+44>>2]=Q(Q(D*l)+L)+Q(0);e=Q(M*Q(0));N[b+40>>2]=e+Q(Q(y*l)+P);h=Q(R*Q(0));N[b+36>>2]=h+Q(Q(v*l)+S);j=Q(T*Q(0));N[b+32>>2]=j+Q(Q(u*l)+x);N[b+28>>2]=Q(t+Q(G+Q(I*r)))+Q(0);N[b+24>>2]=e+Q(f+Q(A+Q(n*r)));N[b+20>>2]=h+Q(s+Q(q+Q(z*r)));N[b+16>>2]=j+Q(g+Q(w+Q(k*r)));N[b+12>>2]=Q(t+Q(Q(F*c)+K))+Q(0);N[b+8>>2]=e+Q(f+Q(Q(o*c)+C));N[b+4>>2]=h+Q(s+Q(Q(p*c)+B));N[b>>2]=j+Q(g+Q(Q(i*c)+m));rj(a,-1e4,106883);Mj(a,-2);a=1}Ui=d+112|0;return a|0}function iV(a){var b=0,c=Q(0),d=Q(0),e=0,f=Q(0),g=Q(0),h=0,i=Q(0),j=0,k=0,l=Q(0),m=Q(0),n=Q(0),o=Q(0),p=Q(0),q=Q(0),r=0,s=0,t=Q(0),u=0,v=Q(0),w=Q(0),x=0,y=Q(0),z=Q(0),A=Q(0),C=0,D=Q(0),E=Q(0),F=Q(0),G=Q(0),H=Q(0),I=Q(0),K=Q(0);h=Ui+-64|0;Ui=h;a:{if(J[a+48>>2]>0){C=h+16|0;while(1){b=J[a+40>>2]+P(s,152)|0;r=J[J[a+44>>2]+(J[b+148>>2]<<2)>>2];if(J[r+132>>2]<=0){break a}n=N[b+132>>2];o=N[b+128>>2];q=N[b+124>>2];D=N[b+120>>2];k=J[a+28>>2];j=P(J[b+116>>2],12);e=k+j|0;t=N[e+8>>2];E=N[e+4>>2];F=N[e>>2];u=J[a+24>>2];j=j+u|0;v=N[j+4>>2];w=N[j>>2];x=P(J[b+112>>2],12);e=k+x|0;y=N[e+8>>2];G=N[e+4>>2];H=N[e>>2];k=u+x|0;z=N[k+4>>2];A=N[k>>2];e=J[a+36>>2]+P(s,88)|0;I=N[e+76>>2];K=N[e+80>>2];c=N[e+56>>2];g=N[e+60>>2];p=N[e+48>>2];f=N[e+52>>2];i=N[j+8>>2];l=N[k+8>>2];m=Rj(l);N[h+60>>2]=m;l=Hj(l);N[h+56>>2]=l;d=Rj(i);N[h+44>>2]=d;i=Hj(i);N[h+40>>2]=i;N[h+52>>2]=z-Q(Q(l*p)+Q(m*f));N[h+48>>2]=A-Q(Q(m*p)-Q(l*f));N[h+36>>2]=v-Q(Q(i*c)+Q(d*g));N[h+32>>2]=w-Q(Q(d*c)-Q(i*g));UE(h+8|0,r- -64|0,h+48|0,I,h+32|0,K);e=J[h+12>>2];J[b+72>>2]=J[h+8>>2];J[b+76>>2]=e;r=J[b+144>>2];b:{if((r|0)<=0){break b}p=Q(D+q);j=0;while(1){k=(j<<3)+C|0;c=N[k>>2];e=P(j,36)+b|0;f=Q(N[k+4>>2]-z);N[e+4>>2]=f;i=Q(c-A);N[e>>2]=i;c=N[k>>2];m=Q(N[k+4>>2]-v);N[e+12>>2]=m;l=Q(c-w);N[e+8>>2]=l;c=N[b+76>>2];g=N[b+72>>2];J[e+32>>2]=0;d=Q(Q(l*c)-Q(m*g));q=Q(Q(n*d)*d);d=Q(Q(i*c)-Q(f*g));d=Q(q+Q(Q(Q(o*d)*d)+p));N[e+24>>2]=d>Q(0)?Q(Q(1)/d):Q(0);d=Q(-g);q=Q(Q(l*d)-Q(m*c));d=Q(Q(i*d)-Q(f*c));d=Q(Q(Q(n*q)*q)+Q(Q(Q(o*d)*d)+p));N[e+28>>2]=d>Q(0)?Q(Q(1)/d):Q(0);f=Q(Q(g*Q(Q(y*f)+Q(Q(F-Q(t*m))-H)))+Q(c*Q(Q(Q(E+Q(t*l))-G)-Q(y*i))));d=N[83945];if(f<(d!=Q(0)?Q(-d):Q(-1))){N[e+32>>2]=f*Q(-N[b+140>>2])}j=j+1|0;if((r|0)!=(j|0)){continue}break}if(J[b+144>>2]!=2){break b}f=Q(Q(N[b+8>>2]*c)-Q(N[b+12>>2]*g));i=Q(n*f);d=Q(i*f);f=Q(Q(N[b>>2]*c)-Q(N[b+4>>2]*g));m=Q(o*f);f=Q(d+Q(Q(m*f)+p));d=n;n=Q(Q(N[b+44>>2]*c)-Q(N[b+48>>2]*g));c=Q(Q(N[b+36>>2]*c)-Q(N[b+40>>2]*g));o=Q(Q(Q(d*n)*n)+Q(Q(Q(o*c)*c)+p));c=Q(Q(i*n)+Q(Q(m*c)+p));g=Q(Q(f*o)-Q(c*c));if(Q(f*f)>2]=o;N[b+104>>2]=c;N[b+100>>2]=c;N[b+96>>2]=f;g=g!=Q(0)?Q(Q(1)/g):g;N[b+92>>2]=f*g;N[b+80>>2]=o*g;c=Q(c*Q(-g));N[b+88>>2]=c;N[b+84>>2]=c;break b}J[b+144>>2]=1}s=s+1|0;if((s|0)>2]){continue}break}}Ui=h- -64|0;return}Z(111823,39721,175,17919);B()}function cL(a,b,c){var d=0,e=0,f=0,g=0,h=0,i=0,j=0,k=0,l=0,m=0;d=Ui-80|0;Ui=d;a:{e=J[c>>2];if(e){f=J[c+4>>2];if(!f){break a}g=J[c+12>>2];h=J[c+8>>2];J[a+36>>2]=f;J[a+32>>2]=e;J[a+24>>2]=h;J[a+28>>2]=g;N[a+40>>2]=N[c+16>>2];N[a+44>>2]=N[c+20>>2];N[a+48>>2]=N[c+24>>2];N[a+52>>2]=N[c+28>>2];N[a+56>>2]=N[c+32>>2];N[a+60>>2]=N[c+36>>2];N[a+64>>2]=N[c+40>>2];N[a+68>>2]=N[c+44>>2];N[a+72>>2]=N[c+48>>2];N[a+76>>2]=N[c+52>>2];N[a+80>>2]=N[c+56>>2];H[a+178|0]=K[c+82|0];e=H[c+83|0]&1;H[a+179|0]=e|K[a+179|0]&254;H[a+179|0]=e|K[c+83|0]&254;e=J[c+60>>2];J[a+144>>2]=e;f=J[c+64>>2];J[a+148>>2]=f;H[a+177|0]=K[c+81|0];H[a+176|0]=K[c+80|0];h=J[c+68>>2];j=J[c+72>>2];g=J[c+76>>2];i=J[a+120>>2];if(i){cj(i);cj(J[a+84>>2]);cj(J[a+124>>2]);ij(J[a+88>>2],255,J[a+92>>2]<<2);J[a+108>>2]=-1;J[a+112>>2]=0;J[a+100>>2]=J[a+96>>2]}J[a+160>>2]=g;J[a+156>>2]=j;J[a+152>>2]=h;f=(f>>>0)/(j>>>0)|0;J[a+168>>2]=f;i=(e>>>0)/(h>>>0)|0;J[a+164>>2]=i;f=P(f,i);J[a+172>>2]=f;J[a+84>>2]=sj(P(h,j)<<2);k=Zj(1,f<<1);J[a+124>>2]=k;e=sj(P(f,12));J[a+120>>2]=e;g=0;m=ij(e,0,f<<2);if(f){while(1){I[(g<<1)+k>>1]=g;e=P(g,12)+m|0;l=(g>>>0)/(i>>>0)|0;I[e+10>>1]=P(l,j);J[e>>2]=0;J[e+4>>2]=0;I[e+8>>1]=P(h,g-P(i,l)|0);g=g+1|0;if(f>>>0>g>>>0){continue}break}}if(f>>>0>(J[a+104>>2]-J[a+96>>2]|0)/12>>>0){GN(a+88|0,(P(f,3)|0)/2|0,f)}e=0;b:{c:{d:{e:{f:{f=K[c+80|0];switch(f-1|0){case 3:break f;case 0:break c;case 2:break d;default:break e}}e=3;break c}J[d>>2]=f;dj(4,90423,9049,d);cj(xL(a));break b}e=2}J[a+132>>2]=e;g:{if(!J[c+84>>2]){Zi[J[79387]](b,a+136|0,a+140|0);e=J[a+136>>2];J[a+136>>2]=(e|0)==3?1:(e|0)==5?2:e;e=J[a+132>>2];break g}J[a+136>>2]=2;J[a+140>>2]=2}I[d+78>>1]=257;I[d+72>>1]=1;J[d+64>>2]=0;J[d+68>>2]=0;J[d+52>>2]=0;J[d+56>>2]=0;H[d+59|0]=0;H[d+60|0]=0;H[d+61|0]=0;H[d+62|0]=0;J[d+44>>2]=0;J[d+48>>2]=0;J[d+36>>2]=1;J[d+40>>2]=1;J[d+16>>2]=0;J[d+20>>2]=0;f=J[c+60>>2];I[d+68>>1]=f;g=J[c+64>>2];I[d+76>>1]=g;I[d+74>>1]=f;I[d+70>>1]=g;I[d+58>>1]=g;I[d+56>>1]=f;J[d+24>>2]=e;J[d+28>>2]=2;J[d+32>>2]=2;e=J[a+8>>2];h=J[a+12>>2];if(e|h){Zi[J[79455]](e,h)}b=Zi[J[79454]](b,d- -64|0)|0;J[a+8>>2]=b;e=a;a=Yi;J[e+12>>2]=a;c=P(P(K[c+80|0],f&65535),g&65535);e=Zj(1,c);J[d+20>>2]=c;J[d+16>>2]=e;Zi[J[79456]](b,a,d+16|0);cj(J[d+16>>2])}Ui=d+80|0;return}Z(53591,37760,131,43674);B()}Z(83674,37760,132,43674);B()}function Kn(a,b){var c=0,d=Q(0),e=Q(0),f=0,g=Q(0),h=Q(0),i=Q(0),j=Q(0),k=Q(0),l=0,m=Q(0),n=Q(0);a:{b:{c:{d=N[b+4>>2];g=N[b+8>>2];l=(d!=Q(0))<<1|(g!=Q(0))<<2;e=N[b>>2];switch(l|e!=Q(0)){case 1:case 2:case 4:break b;case 0:break c;default:break a}}J[a+8>>2]=0;J[a+12>>2]=1065353216;J[a>>2]=0;J[a+4>>2]=0;return}f=J[71566];d=Q(Q(g+Q(d+e))*Q(.008726646192371845));c=+d*10430.378350470453;d:{if(R(c)<2147483648){b=~~c;break d}b=-2147483648}g=N[f+(((b>>>9|0)+1&127)<<2)>>2];e=N[f+(b>>>7&508)>>2];J[a+8>>2]=0;J[a>>2]=0;J[a+4>>2]=0;h=e;e=Q(Q((b&511)>>>0)*Q(.001953125));N[a+12>>2]=Q(h*Q(Q(1)-e))+Q(e*g);b=(l<<1)+a|0;c=+Q(d+Q(-1.5707963705062866))*10430.378350470453;e:{if(R(c)<2147483648){a=~~c;break e}a=-2147483648}d=Q(Q((a&511)>>>0)*Q(.001953125));N[b>>2]=Q(Q(Q(1)-d)*N[f+(a>>>7&508)>>2])+Q(d*N[f+(((a>>>9|0)+1&127)<<2)>>2]);return}h=Q(d*Q(.008726646192371845));c=+Q(h+Q(-1.5707963705062866))*10430.378350470453;f:{if(R(c)<2147483648){b=~~c;break f}b=-2147483648}d=Q(Q((b&511)>>>0)*Q(.001953125));j=Q(Q(1)-d);f=J[71566];k=N[f+(b>>>7&508)>>2];i=N[f+(((b>>>9|0)+1&127)<<2)>>2];m=Q(e*Q(.008726646192371845));c=+Q(m+Q(-1.5707963705062866))*10430.378350470453;g:{if(R(c)<2147483648){b=~~c;break g}b=-2147483648}e=Q(j*k);j=Q(Q((b&511)>>>0)*Q(.001953125));j=Q(Q(Q(Q(1)-j)*N[f+(b>>>7&508)>>2])+Q(j*N[f+(((b>>>9|0)+1&127)<<2)>>2]));d=Q(e+Q(d*i));k=Q(j*d);i=Q(g*Q(.008726646192371845));c=+i*10430.378350470453;h:{if(R(c)<2147483648){b=~~c;break h}b=-2147483648}g=Q(Q((b&511)>>>0)*Q(.001953125));g=Q(Q(Q(Q(1)-g)*N[f+(b>>>7&508)>>2])+Q(g*N[f+(((b>>>9|0)+1&127)<<2)>>2]));c=+h*10430.378350470453;i:{if(R(c)<2147483648){b=~~c;break i}b=-2147483648}e=Q(Q((b&511)>>>0)*Q(.001953125));e=Q(Q(Q(Q(1)-e)*N[f+(b>>>7&508)>>2])+Q(e*N[f+(((b>>>9|0)+1&127)<<2)>>2]));c=+Q(i+Q(-1.5707963705062866))*10430.378350470453;j:{if(R(c)<2147483648){b=~~c;break j}b=-2147483648}i=Q(k*g);h=Q(Q((b&511)>>>0)*Q(.001953125));k=Q(Q(Q(Q(1)-h)*N[f+(b>>>7&508)>>2])+Q(h*N[f+(((b>>>9|0)+1&127)<<2)>>2]));n=Q(e*k);c=+m*10430.378350470453;k:{if(R(c)<2147483648){b=~~c;break k}b=-2147483648}h=Q(Q((b&511)>>>0)*Q(.001953125));h=Q(Q(Q(Q(1)-h)*N[f+(b>>>7&508)>>2])+Q(h*N[f+(((b>>>9|0)+1&127)<<2)>>2]));N[a+8>>2]=Q(n*h)-i;i=Q(k*j);N[a+4>>2]=Q(Q(d*g)*h)+Q(e*i);g=Q(e*g);N[a>>2]=Q(Q(d*k)*h)+Q(g*j);N[a+12>>2]=Q(g*h)-Q(d*i)}function $w(a){var b=0,c=0,d=0,e=0,f=0,g=0,h=0,i=0,j=0,k=0,l=0,m=0;j=J[a+44>>2];m=j-262|0;d=J[a+116>>2];while(1){h=J[a+108>>2];i=J[a+60>>2]-(h+d|0)|0;if(J[a+44>>2]+m>>>0<=h>>>0){b=J[a+56>>2];hj(b,b+j|0,j-i|0);J[a+112>>2]=J[a+112>>2]-j;h=J[a+108>>2]-j|0;J[a+108>>2]=h;J[a+92>>2]=J[a+92>>2]-j;if(M[a+5812>>2]>h>>>0){J[a+5812>>2]=h}b=J[a+76>>2];g=b-1|0;e=J[a+68>>2]+(b<<1)|0;c=J[a+44>>2];d=0;k=b&3;if(k){while(1){e=e-2|0;l=L[e>>1];f=l-c|0;I[e>>1]=f>>>0<=l>>>0?f:0;b=b-1|0;d=d+1|0;if((k|0)!=(d|0)){continue}break}}if(g>>>0>=3){while(1){f=e-2|0;g=L[f>>1];d=g-c|0;I[f>>1]=d>>>0<=g>>>0?d:0;f=e-4|0;g=L[f>>1];d=g-c|0;I[f>>1]=d>>>0<=g>>>0?d:0;f=e-6|0;g=L[f>>1];d=g-c|0;I[f>>1]=d>>>0<=g>>>0?d:0;e=e-8|0;f=L[e>>1];d=f-c|0;I[e>>1]=d>>>0<=f>>>0?d:0;b=b-4|0;if(b){continue}break}}e=J[a+64>>2]+(c<<1)|0;d=0;b=c;g=c&3;if(g){while(1){e=e-2|0;k=L[e>>1];f=k-c|0;I[e>>1]=f>>>0<=k>>>0?f:0;b=b-1|0;d=d+1|0;if((g|0)!=(d|0)){continue}break}}if(c-1>>>0>=3){while(1){f=e-2|0;g=L[f>>1];d=g-c|0;I[f>>1]=d>>>0<=g>>>0?d:0;f=e-4|0;g=L[f>>1];d=g-c|0;I[f>>1]=d>>>0<=g>>>0?d:0;f=e-6|0;g=L[f>>1];d=g-c|0;I[f>>1]=d>>>0<=g>>>0?d:0;e=e-8|0;f=L[e>>1];d=f-c|0;I[e>>1]=d>>>0<=f>>>0?d:0;b=b-4|0;if(b){continue}break}}i=i+j|0}c=J[a>>2];d=J[c+4>>2];a:{if(!d){break a}e=d>>>0>>0?d:i;b=J[a+116>>2];if(i){i=J[a+56>>2];J[c+4>>2]=d-e;b=hj(b+(i+h|0)|0,J[c>>2],e);b:{c:{switch(J[J[c+28>>2]+24>>2]-1|0){case 0:J[c+48>>2]=dq(J[c+48>>2],b,e);break b;case 1:break c;default:break b}}J[c+48>>2]=Gl(J[c+48>>2],b,e)}J[c>>2]=e+J[c>>2];J[c+8>>2]=e+J[c+8>>2];b=J[a+116>>2]}d=b+e|0;J[a+116>>2]=d;e=J[a+5812>>2];d:{if(e+d>>>0<3){break d}c=J[a+108>>2]-e|0;i=J[a+56>>2];b=c+i|0;h=K[b|0];J[a+72>>2]=h;f=J[a+84>>2];g=h;h=J[a+88>>2];b=f&(K[b+1|0]^g<>2]=b;i=i+2|0;while(1){if(!e){break d}b=f&(K[c+i|0]^b<>2]=b;g=J[a+68>>2]+(b<<1)|0;I[J[a+64>>2]+((J[a+52>>2]&c)<<1)>>1]=L[g>>1];I[g>>1]=c;e=e-1|0;J[a+5812>>2]=e;c=c+1|0;if(d+e>>>0>2){continue}break}}if(d>>>0>261){break a}if(J[J[a>>2]+4>>2]){continue}}break}e=J[a+60>>2];b=J[a+5828>>2];e:{if(e>>>0<=b>>>0){break e}c=J[a+116>>2]+J[a+108>>2]|0;f:{if(c>>>0>b>>>0){b=e-c|0;b=b>>>0>=258?258:b;ij(c+J[a+56>>2]|0,0,b);b=b+c|0;break f}c=c+258|0;if(c>>>0<=b>>>0){break e}h=b+J[a+56>>2]|0;c=c-b|0;b=e-b|0;b=b>>>0>c>>>0?c:b;ij(h,0,b);b=b+J[a+5828>>2]|0}J[a+5828>>2]=b}}function fD(a,b,c,d,e){var f=0,g=0,h=0,i=0,j=Q(0),k=0,l=0;i=Ui-16|0;Ui=i;a:{b:{c:{d:{e:{f:{f=L[a+24>>1];g=L[a+26>>1];if((f|0)!=(g|0)){h=J[a+20>>2];if(!h){break d}if(f>>>0<=g>>>0){break c}I[a+26>>1]=g+1;g=L[h+(g<<1)>>1];h=J[a+32>>2];if(g>>>0>=(J[a+36>>2]-h|0)/672>>>0){if((J[a+40>>2]-h|0)/672>>>0<=g>>>0){break b}J[a+36>>2]=(h+P(g,672)|0)+672}if((f|0)!=(g|0)){break f}}J[i>>2]=f;dj(4,93318,132547,i);b=0;break e}f=J[a+32>>2];if((J[a+36>>2]-f|0)/672>>>0<=g>>>0){break a}h=L[a+368>>1];f=ij(f+P(g,672)|0,0,672);k=J[b>>2];l=J[b+4>>2];j=N[b+8>>2];J[f+108>>2]=1065353216;J[f+100>>2]=0;J[f+92>>2]=1065353216;J[f+84>>2]=0;J[f+56>>2]=1065353216;J[f+60>>2]=1065353216;J[f+48>>2]=1065353216;J[f+52>>2]=1065353216;J[f+36>>2]=1065353216;J[f+40>>2]=1065353216;J[f+28>>2]=1065353216;J[f+32>>2]=1065353216;J[f+20>>2]=0;J[f+12>>2]=1065353216;N[f+8>>2]=j;J[f>>2]=k;J[f+4>>2]=l;j=N[c+8>>2];J[f+120>>2]=0;J[f+124>>2]=0;b=J[c>>2];c=J[c+4>>2];J[f+112>>2]=0;J[f+116>>2]=0;N[f+72>>2]=j;J[f+64>>2]=b;J[f+68>>2]=c;J[f+148>>2]=0;J[f+152>>2]=0;J[f+140>>2]=0;J[f+144>>2]=1065353216;J[f+128>>2]=0;J[f+132>>2]=1135869952;J[f+156>>2]=0;J[f+160>>2]=0;J[f+164>>2]=0;J[f+168>>2]=0;J[f+172>>2]=0;J[f+176>>2]=0;J[f+180>>2]=0;J[f+184>>2]=0;J[f+188>>2]=0;J[f+388>>2]=0;J[f+392>>2]=0;J[f+384>>2]=1065353216;J[f+396>>2]=0;J[f+400>>2]=0;J[f+404>>2]=1065353216;J[f+416>>2]=0;J[f+420>>2]=0;J[f+408>>2]=0;J[f+412>>2]=0;J[f+428>>2]=0;J[f+432>>2]=0;J[f+424>>2]=1065353216;J[f+436>>2]=0;J[f+440>>2]=0;J[f+468>>2]=64;J[f+472>>2]=1;J[f+444>>2]=1065353216;J[f+448>>2]=1065353216;J[f+452>>2]=1065353216;J[f+456>>2]=1065353216;J[f+460>>2]=1065353216;J[f+480>>2]=e;J[f+560>>2]=0;J[f+544>>2]=0;J[f+488>>2]=0;J[f+492>>2]=0;J[f+496>>2]=0;J[f+500>>2]=0;J[f+504>>2]=0;J[f+508>>2]=0;J[f+512>>2]=0;J[f+516>>2]=0;J[f+520>>2]=0;J[f+524>>2]=0;J[f+528>>2]=0;J[f+476>>2]=J[f+476>>2]&-805306368|d<<4&240|74448896;c=J[219156];d=J[219157];J[f+664>>2]=-1;I[f+650>>1]=g;b=h>>>0<=1?1:h;I[f+648>>1]=b;J[f+580>>2]=0;J[f+568>>2]=c;J[f+572>>2]=d;J[f+652>>2]=-1;J[f+656>>2]=-1;I[f+660>>1]=65535;I[a+368>>1]=b+(h>>>0<65534?1:2);b=b<<16|g;if(e){J[f+584>>2]=Zi[J[a+388>>2]](J[a+404>>2],a,b,e)}$x(a,b,0)}Ui=i+16|0;return b}Z(49493,54340,151,43112);B()}Z(2701,54340,152,43112);B()}Z(144782,53895,514,59583);B()}Z(145396,53895,487,84789);B()}function p2(a,b){a=a|0;b=Q(b);var c=0,d=0,e=0,f=0,g=0,h=0,i=Q(0),j=0,k=0,l=0,m=0,n=Q(0),o=0;if(a){c=px(a);if(c){a:{l=Ui-32|0;Ui=l;b:{c:{if(c){J[l+28>>2]=0;H[c+82|0]=K[c+82|0]|1;m=jK(c+52|0,c- -64|0);J[215650]=m+J[215650];J[l+16>>2]=m;J[l+20>>2]=0;J[l+8>>2]=m;J[l+12>>2]=0;if(m){while(1){a=J[c+64>>2];if(J[c+68>>2]-a>>1>>>0<=h>>>0){break b}d=J[c+56>>2];d:{if(!d){break d}f=L[a+(h<<1)>>1];j=J[c+52>>2];e=j;a=d;while(1){g=(a&-2)+e|0;k=f>>>0>L[g>>1];e=k?g+2|0:e;g=a;a=a>>>1|0;a=k?g+(a^-1)|0:a;if(a){continue}break}if((f|0)!=L[e>>1]|j+(d<<1)>>>0<=e>>>0){break d}d=J[c+16>>2];if(f>>>0>=J[c+20>>2]-d>>3>>>0){break b}j=f<<3;d=J[j+d>>2];a=J[c>>2];if(d>>>0>=J[c+4>>2]-a>>5>>>0){break b}if(!a){break d}a=a+(d<<5)|0;d=K[a+28|0];if(!(d&2)){break d}i=Q(N[a+16>>2]-b);N[a+16>>2]=i;if(i>Q(0)){break d}Zi[J[a>>2]](c,d&1,J[a+12>>2],Q(Q(N[a+20>>2]-i)-N[a+24>>2]),J[a+4>>2],J[a+8>>2]);if(K[c+82|0]&2){d=J[c+56>>2];if(!d){break c}g=J[c+52>>2];e=g;a=d;while(1){o=(a&-2)+e|0;k=f>>>0>L[o>>1];e=k?o+2|0:e;o=a;a=a>>>1|0;a=k?o+(a^-1)|0:a;if(a){continue}break}if((f|0)!=L[e>>1]|g+(d<<1)>>>0<=e>>>0){break c}d=J[c+16>>2];if(f>>>0>=J[c+20>>2]-d>>3>>>0){break b}d=J[d+j>>2];a=J[c>>2];if(d>>>0>=J[c+4>>2]-a>>5>>>0){break b}if(!a){break c}a=a+(d<<5)|0}d=K[a+28|0];if(!(d&2)){break d}if(!(d&1)){H[a+28|0]=d&252;break d}i=N[a+20>>2];if(i==Q(0)){J[a+24>>2]=0;J[a+16>>2]=0;break d}n=N[a+16>>2];n=Q(n+Q(i*Q(V(Q(Q(1)-Q(n/i))))));N[a+16>>2]=n;N[a+24>>2]=i-n;if(!(n>2]=0;N[a+16>>2]=i}h=h+1|0;if((m|0)!=(h|0)){continue}break}H[c+82|0]=K[c+82|0]&254;h=0;while(1){a=J[c+64>>2];if(J[c+68>>2]-a>>1>>>0<=h>>>0){break b}d=J[c+56>>2];e:{if(!d){break e}f=L[a+(h<<1)>>1];j=J[c+52>>2];e=j;a=d;while(1){g=(a&-2)+e|0;k=f>>>0>L[g>>1];e=k?g+2|0:e;g=a;a=a>>>1|0;a=k?g+(a^-1)|0:a;if(a){continue}break}if((f|0)!=L[e>>1]|j+(d<<1)>>>0<=e>>>0){break e}d=J[c+16>>2];if(f>>>0>=J[c+20>>2]-d>>3>>>0){break b}d=J[d+(f<<3)>>2];a=J[c>>2];if(d>>>0>=J[c+4>>2]-a>>5>>>0){break b}if(!a){break e}a=a+(d<<5)|0;if(K[a+28|0]&2){break e}GB(c,a)}h=h+1|0;if((m|0)!=(h|0)){continue}break}a=K[c+82|0]}else{a=K[c+82|0]&-2}if(a&2){I[c+80>>1]=L[c+80>>1]+1}H[c+82|0]=a&253;Ui=l+32|0;break a}Z(111373,39844,218,19210);B()}Z(33989,39844,258,19210);B()}Z(145396,53895,487,84789);B()}}return}Z(111353,39844,467,71895);B()}function Ou(a,b,c){var d=0,e=0,f=0,g=0,h=0,i=0,j=0,k=0,l=0,m=0,n=0;d=Ui-1232|0;Ui=d;m=J[a+6164>>2];Tj(m);e=d+208|0;ip(b,e);k=Ul(e,yj(e));l=Yi;f=J[a>>2];e=J[f+4>>2];a:{if(!e){break a}e=J[J[f>>2]+(mxa(k,l,e)<<2)>>2];if((e|0)==-1){break a}f=J[f+8>>2];while(1){g=f+P(e,56)|0;if(J[g>>2]==(k|0)&(l|0)==J[g+4>>2]){break a}e=J[g+48>>2];if((e|0)!=-1){continue}break}g=0}j=g+8|0;n=g?j:0;if(c){J[c>>2]=n}b:{c:{d:{e:{f:{if(!g){break f}i=J[g+28>>2];if(!J[i+32>>2]){break e}e=-1;f=J[i+36>>2];if((f|0)!=-1){e=f}h=a+8392|0;f=J[a+8392>>2];if((J[a+8400>>2]-f|0)!=1048576){if(H[a+8404|0]&1){break b}lj(1048576,1,h,a+8400|0,a+8396|0);f=J[a+8392>>2]}J[a+8396>>2]=f;e=Pu(a,d+208|0,0,e,d+200|0,d+204|0,h);g:{if(e){break g}e=J[a+8392>>2];J[d+152>>2]=a;J[d+192>>2]=i;f=J[i+12>>2];J[d+184>>2]=0;J[d+156>>2]=f;J[d+172>>2]=e;f=J[d+204>>2];J[d+176>>2]=f;J[d+188>>2]=j;e=J[d+200>>2];J[d+180>>2]=((e|0)!=(f|0))<<31|e&2147483647;J[d+168>>2]=b;J[g+20>>2]=0;e=Zi[J[i+32>>2]](d+152|0)|0;if(e){break g}j=L[a+8424>>1];e=j+1|0;h=(e&65535)!=(e|0);I[a+8424>>1]=h?1:e;I[g+40>>1]=h?1:j;J[J[d+188>>2]+24>>2]=f;e=J[a+12>>2];h:{if(!e){break h}f=J[e>>2];if((f|0)==J[e+4>>2]){break h}e=0;while(1){f=(e<<3)+f|0;h=J[f+4>>2];J[d+128>>2]=n;J[d+112>>2]=h;J[d+132>>2]=i;J[d+120>>2]=k;J[d+124>>2]=l;J[d+116>>2]=b;Zi[J[f>>2]](d+112|0);h=J[a+12>>2];f=J[h>>2];e=e+1|0;if(e>>>0>2]-f>>3>>>0){continue}break}}if(!J[g+20>>2]){e=0;break g}e=J[g+44>>2];J[d+144>>2]=J[g+40>>2];J[d+148>>2]=e;e=J[g+36>>2];J[d+136>>2]=J[g+32>>2];J[d+140>>2]=e;e=J[g+28>>2];J[d+128>>2]=J[g+24>>2];J[d+132>>2]=e;e=J[g+20>>2];J[d+120>>2]=J[g+16>>2];J[d+124>>2]=e;e=J[g+12>>2];J[d+112>>2]=J[g+8>>2];J[d+116>>2]=e;J[d+120>>2]=J[g+20>>2];J[d+96>>2]=a;J[d+108>>2]=i;J[d+100>>2]=J[i+12>>2];J[d+104>>2]=d+112;e=Zi[J[i+28>>2]](d+96|0)|0;J[g+20>>2]=0}i:{switch(e+15|0){case 15:J[d+48>>2]=b;dj(2,96538,129618,d+48|0);e=0;break c;case 7:J[d+64>>2]=b;dj(4,96538,118504,d- -64|0);e=-8;break c;case 1:case 2:break i;case 0:break e;case 12:break f;default:break d}}J[d+80>>2]=b;dj(4,96538,129763,d+80|0);break c}J[d>>2]=b;dj(4,96538,123971,d);e=-3;break c}J[d+16>>2]=J[J[J[c>>2]+20>>2]+8>>2];dj(3,96538,127925,d+16|0);e=-15;break c}J[d+36>>2]=e;J[d+32>>2]=b;dj(3,96538,130576,d+32|0)}Lj(m);Ui=d+1232|0;return e}Z(151729,53895,501,2284);B()}function Gna(a){a=a|0;var b=0,c=0,d=0,e=0,f=0,g=0,h=0,i=0,j=0;f=Ui-160|0;Ui=f;J[f+24>>2]=0;i=J[J[a+12>>2]>>2];J[f+20>>2]=0;g=1;a:{b:{c=J[a+16>>2];c:{d:{e:{f:{g:{if(!J[c+80>>2]){d=c;break g}h:{i:{b=J[c+64>>2];e=J[55272];j=J[c+68>>2];if((b|0)==J[e+8>>2]&(j|0)==J[e+12>>2]){J[f+32>>2]=0;g=dS(J[c+96>>2],J[c+100>>2]);if(!g){J[f>>2]=tj(J[c+96>>2],J[c+100>>2]);dj(3,88293,27347,f);break c}if(dk(J[a+16>>2]+120|0,J[c+104>>2],g,f+20|0,f+32|0)){J[f+16>>2]=J[g+4>>2];dj(3,88293,148050,f+16|0);break c}h=J[f+32>>2];b=sj(h+96|0);d=J[a+16>>2];e=J[d+4>>2];J[b>>2]=J[d>>2];J[b+4>>2]=e;e=J[d+28>>2];J[b+24>>2]=J[d+24>>2];J[b+28>>2]=e;e=J[d+20>>2];J[b+16>>2]=J[d+16>>2];J[b+20>>2]=e;e=J[d+12>>2];J[b+8>>2]=J[d+8>>2];J[b+12>>2]=e;e=J[d+60>>2];J[b+56>>2]=J[d+56>>2];J[b+60>>2]=e;e=J[d+52>>2];J[b+48>>2]=J[d+48>>2];J[b+52>>2]=e;e=J[d+44>>2];J[b+40>>2]=J[d+40>>2];J[b+44>>2]=e;e=J[d+36>>2];J[b+32>>2]=J[d+32>>2];J[b+36>>2]=e;e=J[g+12>>2];J[b+64>>2]=J[g+8>>2];J[b+68>>2]=e;J[b+88>>2]=0;J[b+72>>2]=0;J[b+76>>2]=0;J[b+80>>2]=g;J[b+84>>2]=h;e=J[f+20>>2];hj(b+96|0,e,h);h=J[c+108>>2];if(!h){break i}g=K[c+112|0];c=h-2|0;break h}e=J[55290];if((b|0)!=J[e+8>>2]|(j|0)!=J[e+12>>2]){d=c;break g}b=J[c+96>>2];c=f+32|0;a=J[a+8>>2];if(a){a=J[a+124>>2]}else{a=0}c=pj(c,a,0,37648,272);Nj(a,-1e4,J[i+12>>2]);Ok(a);b=b-2|0;BB(a,b);yB(a,b);gj(a,-2);b=J[a+8>>2];J[b+8>>2]=0;J[a+8>>2]=b+16;Ok(a);oj(c);break c}g=0;c=J[J[i>>2]+20>>2]}h=(h|0)!=0;if(e){break f}}b=J[d+76>>2];if(b){c=b-2|0;h=1;b=d;break e}c=J[J[i>>2]+20>>2];b=d}d=0;if((c|0)==-2){break d}}a=J[a+8>>2];if(a){a=J[a+124>>2]}else{a=0}d=J[a+8>>2]-J[a+12>>2]>>4;Nj(a,-1e4,J[i+12>>2]);Ok(a);j:{if(h){BB(a,c);if((kj(a,-1)|0)!=6){gj(a,-2);d=J[a+8>>2];J[d+8>>2]=0;J[a+8>>2]=d+16;Ok(a);dj(3,88293,101848,0);d=0;break d}if(!(g&1)){break j}yB(a,c);break j}Nj(a,-1e4,c)}if((kj(a,-1)|0)!=6){break b}Nj(a,-1e4,J[i+12>>2]);Bk(a,J[b+64>>2],J[b+68>>2]);c=J[b+80>>2];k:{if(c){mx(a,c,b+96|0,1);break k}c=J[b+84>>2];if(c){Du(a,b+96|0,c);break k}Fj(a,0,0)}wm(a,b);c=Ui-128|0;Ui=c;Ui=c+128|0;J[f+28>>2]=0;c=Ol(a,4,0,0);i=J[a+8>>2];J[i+8>>2]=0;J[a+8>>2]=i+16;Ok(a);if(J[a+8>>2]-J[a+12>>2]>>4!=(d|0)){break a}d=c?-1e3:0}a=J[f+20>>2];if(!a){break c}Uj(a);cj(b)}Ui=f+160|0;return d|0}Z(144344,37648,324,68496);B()}Z(143244,37648,368,68496);B()}function kH(a,b,c){var d=0,e=0,f=0,g=0,h=0,i=0,j=0,k=0;h=Ui-16|0;Ui=h;i=1;d=J[a>>2];a:{if((b-d|0)<=0){f=-9312;break a}j=10;f=-9314;b:{switch(K[d|0]-23|0){case 1:j=12;i=0;break;case 0:break b;default:break a}}J[a>>2]=d+1;b=Vo(a,b,h+12|0);if(b){f=b-9216|0;break a}f=-9216;k=J[h+12>>2];if(k>>>0>>0){break a}J[c>>2]=0;d=J[a>>2];if((K[d|0]-58&255)>>>0<246){break a}J[c>>2]=0;b=d+1|0;J[a>>2]=b;e=K[d|0]-48|0;J[c>>2]=e;if((K[d+1|0]-58&255)>>>0<246){break a}e=P(e,10);J[c>>2]=e;g=d+2|0;J[a>>2]=g;e=(e+K[d+1|0]|0)-48|0;J[c>>2]=e;if(!i){if((K[d+2|0]-58&255)>>>0<246){break a}e=P(e,10);J[c>>2]=e;b=d+3|0;J[a>>2]=b;e=(e+K[d+2|0]|0)-48|0;J[c>>2]=e;if((K[d+3|0]-58&255)>>>0<246){break a}e=P(e,10);J[c>>2]=e;g=d+4|0;J[a>>2]=g;e=(e+K[d+3|0]|0)-48|0;J[c>>2]=e}if(i){J[c>>2]=((e|0)<50?e+100|0:e)+1900}J[c+4>>2]=0;if((K[g|0]-58&255)>>>0<246){break a}J[a>>2]=b+2;d=K[g|0]-48|0;J[c+4>>2]=d;if((K[b+2|0]-58&255)>>>0<246){break a}d=P(d,10);J[c+4>>2]=d;J[a>>2]=b+3;e=K[b+2|0];J[c+8>>2]=0;J[c+4>>2]=(d+e|0)-48;if((K[b+3|0]-58&255)>>>0<246){break a}J[a>>2]=b+4;d=K[b+3|0]-48|0;J[c+8>>2]=d;if((K[b+4|0]-58&255)>>>0<246){break a}d=P(d,10);J[c+8>>2]=d;J[a>>2]=b+5;e=K[b+4|0];J[c+12>>2]=0;J[c+8>>2]=(d+e|0)-48;if((K[b+5|0]-58&255)>>>0<246){break a}J[a>>2]=b+6;d=K[b+5|0]-48|0;J[c+12>>2]=d;if((K[b+6|0]-58&255)>>>0<246){break a}d=P(d,10);J[c+12>>2]=d;J[a>>2]=b+7;e=K[b+6|0];J[c+16>>2]=0;J[c+12>>2]=(d+e|0)-48;if((K[b+7|0]-58&255)>>>0<246){break a}J[a>>2]=b+8;d=K[b+7|0]-48|0;J[c+16>>2]=d;if((K[b+8|0]-58&255)>>>0<246){break a}d=P(d,10);J[c+16>>2]=d;J[a>>2]=b+9;J[c+16>>2]=(d+K[b+8|0]|0)-48;d=k-j|0;if(d>>>0<2){break a}J[c+20>>2]=0;if((K[b+9|0]-58&255)>>>0<246){break a}J[a>>2]=b+10;e=K[b+9|0]-48|0;J[c+20>>2]=e;if((K[b+10|0]-58&255)>>>0<246){break a}e=P(e,10);J[c+20>>2]=e;J[a>>2]=b+11;J[c+20>>2]=(e+K[b+10|0]|0)-48;c:{switch(d-2|0){case 1:if(K[b+11|0]!=90){break a}J[a>>2]=b+12;break;case 0:break c;default:break a}}a=-9216;f=J[c>>2];d:{if(f>>>0>9999|M[c+12>>2]>23|(M[c+16>>2]>59|M[c+20>>2]>59)){break d}d=J[c+4>>2];if(d>>>0>12){break d}e=1<>>0)%100|0)|f&3)){break e}b=(a>>>0)%400|0?28:29;break e}b=30}a=J[c+8>>2];a=(a|0)<=0?-9216:(b|0)<(a|0)?-9216:0}f=a}Ui=h+16|0;return f}function oD(a,b,c){var d=0,e=0,f=0,g=0,h=0,i=0,j=0,k=0,l=0;a:{b:{c:{d:{f=b&65535;e=J[a+32>>2];if(f>>>0<(J[a+36>>2]-e|0)/672>>>0){j=b>>>16|0;h=e+P(f,672)|0;if((j|0)!=L[h+648>>1]){break b}l=L[h+650>>1];if((f|0)!=(l|0)){break a}e=J[h+480>>2];if(e){Zi[J[a+392>>2]](J[a+404>>2],a,b,e,J[h+584>>2])}e=J[h+604>>2];if(e){Zi[J[a+440>>2]](e)}g=J[a+264>>2];d=J[a+260>>2];i=(g-d|0)/12|0;e:{f:{g:{h:{if((d|0)==(g|0)|(J[h+476>>2]&240)!=80){break h}if(c){e=0;while(1){if((g-d|0)/12>>>0<=e>>>0){break c}k=P(e,12);i:{if(J[(k+d|0)+8>>2]!=(b|0)){e=e+1|0;break i}d=J[a+32>>2];if(f>>>0>=(J[a+36>>2]-d|0)/672>>>0){break c}d=d+P(f,672)|0;if((j|0)!=L[d+648>>1]){break b}if(L[d+650>>1]!=(l|0)){break a}Xu(J[a+224>>2],J[d+628>>2]);J[h+628>>2]=0;g=J[a+264>>2];d=J[a+260>>2];if((g-d|0)/12>>>0<=e>>>0){break g}d=d+k|0;g=g-12|0;k=J[g+4>>2];J[d>>2]=J[g>>2];J[d+4>>2]=k;J[d+8>>2]=J[g+8>>2];g=J[a+264>>2]-12|0;J[a+264>>2]=g;d=J[a+260>>2];if(g>>>0>>0){break f}i=i-1|0}if(e>>>0>>0){continue}break}break h}f=i>>>0<=1?1:i;e=0;while(1){d=J[a+260>>2];if((J[a+264>>2]-d|0)/12>>>0<=e>>>0){break c}d=d+P(e,12)|0;if(J[d+8>>2]==(b|0)){xC(J[a+224>>2],J[d>>2],0);J[h+476>>2]=J[h+476>>2]|536870912}e=e+1|0;if((f|0)!=(e|0)){continue}break}}e=L[h+658>>1];if((e|0)!=65535){while(1){e=e&65535;f=J[a+32>>2];if(e>>>0>=(J[a+36>>2]-f|0)/672>>>0){break c}f=f+P(e,672)|0;e=L[f+654>>1];oD(a,L[f+650>>1]|L[f+648>>1]<<16,c);if((e|0)!=65535){continue}break}}d=J[a+48>>2];g=J[a+52>>2];if((d|0)!=(g|0)){i=(g-d|0)/72|0;e=0;while(1){if((g-d|0)/72>>>0<=e>>>0){break c}j=P(e,72);f=j+d|0;if(J[f>>2]==(b|0)){d=K[f+68|0];j:{if(d&2){break j}H[f+68|0]=d|2;d=J[f+40>>2];if(d){Zi[d|0](f+32|0)}d=J[f+56>>2];if(!d){break j}Zi[d|0](a,J[f>>2],0,J[f+60>>2],J[f+64>>2])}d=J[a+52>>2];f=J[a+48>>2];if((d-f|0)/72>>>0<=e>>>0){break c}f=f+j|0;el(f,f+72|0,(d-f|0)-72|0);d=J[a+48>>2];f=((J[a+52>>2]-d|0)/72|0)-1|0;if(f>>>0>(J[a+56>>2]-d|0)/72>>>0){break d}g=P(f,72)+d|0;J[a+52>>2]=g;i=i-1|0;e=e-1|0}e=e+1|0;if(e>>>0>>0){continue}break}}if(!(K[h+479|0]&32)|c){break e}dv(a,h);J[h+652>>2]=-1;I[h+656>>1]=65535;return}Z(145381,53895,537,43537);B()}Z(12682,53895,540,43537);B()}oO(a,h);return}break c}Z(144782,53895,514,59583);B()}Z(145396,53895,487,84789);B()}Z(47372,40876,188,69601);B()}Z(5388,40876,189,69601);B()}function pU(a,b,c){var d=0,e=0,f=0,g=0,h=0,i=0,j=0,k=0,l=0,m=0,n=0;f=Ui-32|0;Ui=f;g=1;a:{b:{switch((b-a|0)/24|0){case 2:d=J[c>>2];j=J[d+12>>2];if(!j){break a}b=b-24|0;c=J[b>>2];d=J[d+8>>2];c:{while(1){if(!jj(c,J[d+P(e,1552)>>2])){break c}e=e+1|0;if((j|0)!=(e|0)){continue}break}e=-1}c=J[a>>2];d:{while(1){if(!jj(c,J[d+P(h,1552)>>2])){break d}h=h+1|0;if((j|0)!=(h|0)){continue}break}h=-1}if((e|0)>=(h|0)){break a}c=J[a+20>>2];J[f+24>>2]=J[a+16>>2];J[f+28>>2]=c;c=J[a+12>>2];J[f+16>>2]=J[a+8>>2];J[f+20>>2]=c;c=J[a+4>>2];J[f+8>>2]=J[a>>2];J[f+12>>2]=c;c=J[b+20>>2];J[a+16>>2]=J[b+16>>2];J[a+20>>2]=c;c=J[b+12>>2];J[a+8>>2]=J[b+8>>2];J[a+12>>2]=c;c=J[b+4>>2];J[a>>2]=J[b>>2];J[a+4>>2]=c;a=J[f+28>>2];J[b+16>>2]=J[f+24>>2];J[b+20>>2]=a;a=J[f+20>>2];J[b+8>>2]=J[f+16>>2];J[b+12>>2]=a;a=J[f+12>>2];J[b>>2]=J[f+8>>2];J[b+4>>2]=a;break a;case 3:yp(a,a+24|0,b-24|0,c);break a;case 4:Kz(a,a+24|0,a+48|0,b-24|0,c);break a;case 5:FF(a,a+24|0,a+48|0,a+72|0,b-24|0,c);break a;case 0:case 1:break a;default:break b}}i=a+48|0;yp(a,a+24|0,i,c);e=a+72|0;if(!J[J[c>>2]+12>>2]|(e|0)==(b|0)){break a}while(1){j=e;e:{d=J[c>>2];k=J[d+12>>2];if(!k){break e}l=J[e>>2];g=J[d+8>>2];e=0;f:{while(1){if(!jj(l,J[g+P(e,1552)>>2])){break f}e=e+1|0;if((k|0)!=(e|0)){continue}break}e=-1}d=J[i>>2];h=0;g:{while(1){if(!jj(d,J[g+P(h,1552)>>2])){break g}h=h+1|0;if((k|0)!=(h|0)){continue}break}h=-1}if((e|0)>=(h|0)){break e}J[f+24>>2]=J[j+20>>2];d=J[j+16>>2];J[f+16>>2]=J[j+12>>2];J[f+20>>2]=d;d=J[j+8>>2];J[f+8>>2]=J[j+4>>2];J[f+12>>2]=d;g=j;while(1){h:{d=i;i=J[d+4>>2];J[g>>2]=J[d>>2];J[g+4>>2]=i;i=J[d+20>>2];J[g+16>>2]=J[d+16>>2];J[g+20>>2]=i;i=J[d+12>>2];J[g+8>>2]=J[d+8>>2];J[g+12>>2]=i;if((a|0)==(d|0)){d=a;break h}g=J[c>>2];m=J[g+12>>2];if(!m){break h}i=d-24|0;k=J[g+8>>2];e=0;i:{while(1){if(!jj(l,J[k+P(e,1552)>>2])){break i}e=e+1|0;if((m|0)!=(e|0)){continue}break}e=-1}g=J[i>>2];h=0;j:{while(1){if(!jj(g,J[k+P(h,1552)>>2])){break j}h=h+1|0;if((m|0)!=(h|0)){continue}break}h=-1}g=d;if((e|0)<(h|0)){continue}}break}J[d>>2]=l;i=J[f+12>>2];J[d+4>>2]=J[f+8>>2];J[d+8>>2]=i;i=J[f+20>>2];J[d+12>>2]=J[f+16>>2];J[d+16>>2]=i;J[d+20>>2]=J[f+24>>2];n=n+1|0;if((n|0)!=8){break e}g=(j+24|0)==(b|0);break a}i=j;e=j+24|0;if((e|0)!=(b|0)){continue}break}g=1}Ui=f+32|0;return g}function CH(a,b,c,d){var e=0,f=0,g=0,h=0,i=0,j=0,k=0,l=0,m=0,n=0,o=0,p=0,q=0,r=0,s=0,t=0,u=0,v=0,w=0,x=0,y=0,z=0,A=0,B=0,C=0,D=0,E=0,F=0,G=0;v=Ui-32|0;Ui=v;q=-20;b=WH(b,d);a:{if(!b|J[b+24>>2]!=16){break a}if(a){g=J[a+60>>2];if(g){Zi[J[J[J[a>>2]+28>>2]+32>>2]](g)}Zi[J[66509]](a,0,64)|0}q=Dw(a,b);if(q){break a}q=Ew(a,c,d,1);if(q){break a}b=v;J[b+16>>2]=0;J[b+20>>2]=0;J[b+24>>2]=0;J[b+28>>2]=0;J[b+12>>2]=0;c=b+16|0;q=qo(a,c,16,c,b+12|0);if(q){break a}s=K[b+31|0];c=K[b+30|0];d=K[b+27|0];g=K[b+26|0];j=K[b+25|0];e=K[b+24|0];i=K[b+29|0];m=K[b+28|0];o=K[b+23|0];k=K[b+22|0];n=K[b+19|0];l=K[b+18|0];u=K[b+17|0];h=K[b+16|0];f=K[b+21|0];p=K[b+20|0];J[a+192>>2]=0;J[a+196>>2]=0;J[a+64>>2]=0;J[a+68>>2]=0;r=f<<16;f=f>>>16|0;b=p>>>8|0;p=p<<24|r;f=b|f;r=u<<16;h=h<<24|r;l=l<<8|h;b=l|n;h=0;n=h|p|k<<8|o;b=b|f|k>>>24;k=b;J[a+256>>2]=n;J[a+260>>2]=b;l=i<<16;i=i>>>16|0;b=m>>>8|0;m=m<<24|l;i=b|i;l=j<<16;e=e<<24|l;g=g<<8|e;b=d|g;d=h|m;g=b|i;i=c<<8|d|s;b=c>>>24|g;d=b;J[a+128>>2]=i;J[a+132>>2]=b;j=(k&1)<<31|n>>>1;g=s&1;m=j^g&0;b=k>>>1^(g?-520093696:0);g=b;J[a+224>>2]=m;J[a+228>>2]=b;e=o<<31|d>>>1;p=e;h=(d&1)<<31|i>>>1;l=h;J[a+96>>2]=h;J[a+100>>2]=e;f=(e&1)<<31|h>>>1;b=j<<31|e>>>1;c=b;u=f;J[a+80>>2]=f;J[a+84>>2]=b;e=(g&1)<<31|m>>>1;j=h&1;h=e^j&0;J[a+208>>2]=h;j=g>>>1^(j?-520093696:0);J[a+212>>2]=j;o=b^p;E=o;x=l^f;J[a+112>>2]=x;J[a+116>>2]=o;b=e<<31|b>>>1;s=b;o=(c&1)<<31|f>>>1;J[a+72>>2]=o;J[a+76>>2]=b;b=g^j;F=b;y=h^m;J[a+240>>2]=y;J[a+244>>2]=b;f=f&1;e=f&0^((j&1)<<31|h>>>1);J[a+200>>2]=e;b=j>>>1^(f?-520093696:0);J[a+204>>2]=b;r=u^o;J[a+88>>2]=r;f=c^s;J[a+92>>2]=f;t=p^s;G=t;z=l^o;J[a+104>>2]=z;J[a+108>>2]=t;w=e^h;J[a+216>>2]=w;t=b^j;J[a+220>>2]=t;A=e^m;J[a+232>>2]=A;B=b^g;J[a+236>>2]=B;J[a+264>>2]=e^n;J[a+268>>2]=b^k;e=l^r;J[a+120>>2]=e;b=f^p;J[a+124>>2]=b;C=m^w;J[a+248>>2]=C;D=g^t;J[a+252>>2]=D;J[a+272>>2]=h^n;J[a+276>>2]=j^k;J[a+136>>2]=i^o;J[a+140>>2]=d^s;J[a+144>>2]=i^u;J[a+148>>2]=c^d;J[a+280>>2]=n^w;J[a+284>>2]=k^t;J[a+152>>2]=i^r;J[a+156>>2]=d^f;J[a+288>>2]=m^n;J[a+292>>2]=g^k;J[a+160>>2]=i^l;J[a+164>>2]=d^p;J[a+296>>2]=n^A;J[a+300>>2]=k^B;J[a+168>>2]=i^z;J[a+172>>2]=d^G;J[a+304>>2]=n^y;J[a+308>>2]=k^F;J[a+176>>2]=i^x;J[a+180>>2]=d^E;J[a+312>>2]=n^C;J[a+316>>2]=k^D;J[a+184>>2]=e^i;J[a+188>>2]=b^d}Ui=v+32|0;return q}function DN(a,b,c){var d=0,e=0,f=0,g=0,h=0,i=0,j=0,k=0,l=0,m=0,n=0,o=0;d=Ui-32|0;Ui=d;a:{switch(b+1|0){case 1:Z(112335,55629,156,2284);B();case 0:Z(94770,55629,157,2284);B();default:break a}}if((c|0)!=-1){e=J[a+8>>2];if((J[a+16>>2]-e|0)/56>>>0<=c>>>0){b:{if(!e){J[a+4>>2]=b;b=b<<2;e=sj(b);J[a>>2]=e;ij(e,255,b);c=P(c,56);b=sj(c);J[a+12>>2]=b;J[a+8>>2]=b;J[a+16>>2]=b+c;break b}J[d+16>>2]=0;J[d+20>>2]=0;J[d+24>>2]=0;J[d+28>>2]=0;J[d+8>>2]=0;J[d+12>>2]=0;J[d>>2]=0;J[d+4>>2]=0;J[d+20>>2]=-1;DN(d,b,c);e=J[a+4>>2];if(e){m=J[d+16>>2];h=J[d+8>>2];o=(m-h|0)/56|0;c=J[d+12>>2];while(1){b=J[J[a>>2]+(k<<2)>>2];if((b|0)!=-1){i=J[d+24>>2];n=J[d>>2];while(1){c:{d:{e:{if((i|0)!=(o|0)){f=J[a+8>>2]+P(b,56)|0;b=f;g=J[b>>2];j=J[b+4>>2];l=J[d+4>>2];f:{if(!l){break f}b=J[(mxa(g,j,l)<<2)+n>>2];if((b|0)==-1){break f}while(1){b=P(b,56)+h|0;if((g|0)==J[b>>2]&(j|0)==J[b+4>>2]){break e}b=J[b+48>>2];if((b|0)!=-1){continue}break}}g:{if((c|0)!=(m|0)){e=c+56|0;break g}b=J[d+20>>2];if((b|0)==-1){break d}b=P(b,56)+h|0;J[d+20>>2]=J[b+48>>2];e=c;c=b}J[c>>2]=g;J[c+4>>2]=j;b=J[f+12>>2];J[c+8>>2]=J[f+8>>2];J[c+12>>2]=b;b=J[f+20>>2];J[c+16>>2]=J[f+16>>2];J[c+20>>2]=b;b=J[f+28>>2];J[c+24>>2]=J[f+24>>2];J[c+28>>2]=b;b=J[f+36>>2];J[c+32>>2]=J[f+32>>2];J[c+36>>2]=b;b=J[f+44>>2];J[c+40>>2]=J[f+40>>2];J[c+44>>2]=b;J[c+48>>2]=-1;g=(mxa(g,j,l)<<2)+n|0;b=J[g>>2];h:{if((b|0)==-1){J[g>>2]=(c-h|0)/56;i=J[d+24>>2];break h}while(1){g=P(b,56)+h|0;b=J[g+48>>2];if((b|0)!=-1){continue}break}J[g+48>>2]=(c-h|0)/56}i=i+1|0;J[d+24>>2]=i;c=e;break c}J[d+12>>2]=c;Z(144851,55629,229,9606);B()}e=J[f+12>>2];J[b+8>>2]=J[f+8>>2];J[b+12>>2]=e;e=J[f+44>>2];J[b+40>>2]=J[f+40>>2];J[b+44>>2]=e;e=J[f+36>>2];J[b+32>>2]=J[f+32>>2];J[b+36>>2]=e;e=J[f+28>>2];J[b+24>>2]=J[f+24>>2];J[b+28>>2]=e;e=J[f+20>>2];J[b+16>>2]=J[f+16>>2];J[b+20>>2]=e;break c}J[d+12>>2]=c;Z(152203,55629,537,2838);B()}b=J[f+48>>2];if((b|0)!=-1){continue}break}e=J[a+4>>2]}k=k+1|0;if(k>>>0>>0){continue}break}J[d+12>>2]=c}cj(J[a>>2]);cj(J[a+8>>2]);b=J[d+28>>2];J[a+24>>2]=J[d+24>>2];J[a+28>>2]=b;b=J[d+20>>2];J[a+16>>2]=J[d+16>>2];J[a+20>>2]=b;b=J[d+12>>2];J[a+8>>2]=J[d+8>>2];J[a+12>>2]=b;b=J[d+4>>2];J[a>>2]=J[d>>2];J[a+4>>2]=b}Ui=d+32|0;return}Z(144759,55629,159,2284);B()}Z(94750,55629,158,2284);B()}function sna(a,b,c,d,e){a=a|0;b=b|0;c=c|0;d=d|0;e=e|0;var f=0,g=0,h=0,i=0,j=0,k=0;f=Ui-32|0;Ui=f;i=-1;a:{if(!b){break a}j=J[b+4>>2];if(!j){break a}k=J[b+8>>2];while(1){g=(h<<3)+k|0;if(J[g>>2]!=(c|0)|J[g+4>>2]!=(d|0)){h=h+1|0;if((j|0)!=(h|0)){continue}break a}break}if((h|0)==-1){break a}d=2;c=h<<2;g=J[c+J[b+12>>2]>>2];b:{c:{switch(J[c+J[b+16>>2]>>2]){case 1:b=J[b+20>>2]+(g<<3)|0;a=J[b+4>>2];J[e+8>>2]=J[b>>2];J[e+12>>2]=a;d=1;break b;case 7:b=J[b+32>>2];J[f+24>>2]=0;J[f+28>>2]=0;J[f+16>>2]=0;J[f+20>>2]=0;J[f+8>>2]=0;J[f+12>>2]=0;J[f>>2]=0;J[f+4>>2]=0;Zi[J[a+44>>2]](J[a+40>>2],f);i=-2;if(!AB(J[a+40>>2],b+g|0,e+8|0,f)){break b}break a;case 2:c=g+J[b+28>>2]|0;b=K[c+4|0]|K[c+5|0]<<8|(K[c+6|0]<<16|K[c+7|0]<<24);a=K[c|0]|K[c+1|0]<<8|(K[c+2|0]<<16|K[c+3|0]<<24);H[e+8|0]=a;H[e+9|0]=a>>>8;H[e+10|0]=a>>>16;H[e+11|0]=a>>>24;H[e+12|0]=b;H[e+13|0]=b>>>8;H[e+14|0]=b>>>16;H[e+15|0]=b>>>24;b=K[c+28|0]|K[c+29|0]<<8|(K[c+30|0]<<16|K[c+31|0]<<24);a=K[c+24|0]|K[c+25|0]<<8|(K[c+26|0]<<16|K[c+27|0]<<24);H[e+32|0]=a;H[e+33|0]=a>>>8;H[e+34|0]=a>>>16;H[e+35|0]=a>>>24;H[e+36|0]=b;H[e+37|0]=b>>>8;H[e+38|0]=b>>>16;H[e+39|0]=b>>>24;b=K[c+20|0]|K[c+21|0]<<8|(K[c+22|0]<<16|K[c+23|0]<<24);a=K[c+16|0]|K[c+17|0]<<8|(K[c+18|0]<<16|K[c+19|0]<<24);H[e+24|0]=a;H[e+25|0]=a>>>8;H[e+26|0]=a>>>16;H[e+27|0]=a>>>24;H[e+28|0]=b;H[e+29|0]=b>>>8;H[e+30|0]=b>>>16;H[e+31|0]=b>>>24;b=K[c+12|0]|K[c+13|0]<<8|(K[c+14|0]<<16|K[c+15|0]<<24);a=K[c+8|0]|K[c+9|0]<<8|(K[c+10|0]<<16|K[c+11|0]<<24);H[e+16|0]=a;H[e+17|0]=a>>>8;H[e+18|0]=a>>>16;H[e+19|0]=a>>>24;H[e+20|0]=b;H[e+21|0]=b>>>8;H[e+22|0]=b>>>16;H[e+23|0]=b>>>24;break b;case 3:a=g<<2;N[e+8>>2]=N[a+J[b+24>>2]>>2];N[e+12>>2]=N[(a+J[b+24>>2]|0)+4>>2];N[e+16>>2]=N[(a+J[b+24>>2]|0)+8>>2];d=3;break b;case 4:a=g<<2;N[e+8>>2]=N[a+J[b+24>>2]>>2];d=4;N[e+12>>2]=N[(a+J[b+24>>2]|0)+4>>2];N[e+16>>2]=N[(a+J[b+24>>2]|0)+8>>2];N[e+20>>2]=N[(a+J[b+24>>2]|0)+12>>2];break b;case 5:a=g<<2;N[e+8>>2]=N[a+J[b+24>>2]>>2];N[e+12>>2]=N[(a+J[b+24>>2]|0)+4>>2];N[e+16>>2]=N[(a+J[b+24>>2]|0)+8>>2];N[e+20>>2]=N[(a+J[b+24>>2]|0)+12>>2];d=5;break b;case 6:H[e+8|0]=K[g+J[b+32>>2]|0]!=0;d=6;break b;default:Z(62644,39139,715,51684);B();case 0:break c}}O[e+8>>3]=N[J[b+24>>2]+(g<<2)>>2];d=0}J[e>>2]=d;i=0}Ui=f+32|0;return i|0}function tu(a,b,c){var d=0,e=0,f=0,g=0,h=0,i=0,j=0,k=0,l=0,m=0,n=0,o=0,p=0,q=0,r=0,s=0,t=0;g=!a;d=-1;a:{if(g){break a}d=-3;b:{if(J[a+20>>2]!=1){break b}f=J[a+88>>2];if((f|0)<0){break b}e=Ui-9536|0;Ui=e;c:{if(g){break c}d=J[a+72>>2];if(J[a+56>>2]?!d|!(c?b:1):1){J[a+28>>2]=24;break c}if(!tw(a,f,f>>>0>2]?J[d>>2]+J[J[d+16>>2]+(f<<2)>>2]|0:0,e+8424|0)){break c}i=1;if(J[e+8492>>2]|!(J[e+8456>>2]|J[e+8460>>2])){break c}if(K[e+8444|0]&97){J[a+28>>2]=5;i=0;break c}if(L[e+8446>>1]&-9){J[a+28>>2]=4;i=0;break c}k=J[e+8468>>2];d=k;f=J[e+8464>>2];if(!d&c>>>0>>0|d){J[a+28>>2]=26;i=0;break c}c=J[e+8480>>2];d=J[e+8484>>2];if((Zi[J[a+56>>2]](J[a+68>>2],c,d,e+8384|0,30)|0)!=30){J[a+28>>2]=20;i=0;break c}if(J[e+8384>>2]!=67324752){J[a+28>>2]=9;i=0;break c}m=J[a>>2];j=J[a+4>>2];g=L[e+8412>>1];h=L[e+8410>>1];c=h+c|0;d=c>>>0>>0?d+1|0:d;h=c;c=c+g|0;d=h>>>0>c>>>0?d+1|0:d;h=c+30|0;d=h>>>0<30?d+1|0:d;g=J[e+8456>>2];c=g+h|0;q=d;l=J[e+8460>>2];d=d+l|0;d=c>>>0>>0?d+1|0:d;if((d|0)==(j|0)&c>>>0>m>>>0|d>>>0>j>>>0){J[a+28>>2]=9;i=0;break c}if(!L[e+8446>>1]){if((Zi[J[a+56>>2]](J[a+68>>2],h,q,b,f)|0)!=(f|0)|k){J[a+28>>2]=20;i=0;break c}if((eH(b,J[e+8464>>2])|0)==J[e+8448>>2]){break c}J[a+28>>2]=14;i=0;break c}J[e+20>>2]=0;c=J[J[a+72>>2]+72>>2];d:{if(c){c=c+h|0;d=l;f=g;break d}c=!l&g>>>0>=65536|(l|0)!=0;g=c?65536:g;l=c?0:l;c=Zi[J[a+40>>2]](J[a+52>>2],1,g)|0;if(!c){J[a+28>>2]=16;i=0;break c}p=J[e+8456>>2];n=J[e+8460>>2];d=0;f=0}j=d;i=0;m=0;e:{while(1){J[e+12>>2]=J[e+8464>>2]-o;f:{if(f|j){break f}f=0;j=0;if(J[J[a+72>>2]+72>>2]){break f}d=(l|0)==(n|0)&g>>>0

>>0|l>>>0>>0;f=d?g:p;j=Zi[J[a+56>>2]](J[a+68>>2],h,q,c,f)|0;k=(f|0)!=(j|0);j=d?l:n;if(k|j){J[a+28>>2]=11;break e}d=p;p=d-f|0;n=n-((d>>>0>>0)+j|0)|0;d=j+q|0;k=h;h=f+h|0;q=k>>>0>h>>>0?d+1|0:d;m=0}J[e+16>>2]=f;s=dG(e+20|0,c+m|0,e+16|0,b,b+o|0,e+12|0,n|p?6:4);k=J[e+12>>2];o=k+o|0;d=t;d=o>>>0>>0?d+1|0:d;t=d;r=J[e+16>>2];m=r+m|0;k=f;f=f-r|0;j=j-(k>>>0>>0)|0;if((s|0)==1){continue}break}if(s){break e}if((o|0)!=J[e+8464>>2]|(d|0)!=J[e+8468>>2]){J[a+28>>2]=13;break e}i=1;if((eH(b,o)|0)==J[e+8448>>2]){break e}J[a+28>>2]=14;i=0}if(J[J[a+72>>2]+72>>2]){break c}Zi[J[a+44>>2]](J[a+52>>2],c)}Ui=e+9536|0;d=-18;if(!i){break a}d=J[a+96>>2]}}return d>>>30&2}function mea(a){a=a|0;var b=0,c=0,d=0,e=0,f=0,g=0,h=0;b=Ui-976|0;Ui=b;c=J[a+24>>2];d=J[c+4>>2];e=J[a+4>>2];J[b+972>>2]=0;J[b+620>>2]=0;J[b+624>>2]=0;H[b+627|0]=0;H[b+628|0]=0;H[b+629|0]=0;H[b+630|0]=0;J[b+608>>2]=1;J[b+600>>2]=2;J[b+604>>2]=1;J[b+592>>2]=3;J[b+596>>2]=5;J[b+584>>2]=0;J[b+588>>2]=0;J[b+576>>2]=1;J[b+580>>2]=16842752;J[b+568>>2]=0;J[b+572>>2]=0;J[b+560>>2]=1;J[b+564>>2]=16842752;J[b+552>>2]=0;J[b+556>>2]=0;J[b+544>>2]=1;J[b+548>>2]=16842752;J[b+536>>2]=0;J[b+540>>2]=0;J[b+528>>2]=1;J[b+532>>2]=16842752;J[b+520>>2]=0;J[b+524>>2]=0;J[b+512>>2]=1;J[b+516>>2]=16842752;J[b+504>>2]=0;J[b+508>>2]=0;J[b+496>>2]=1;J[b+500>>2]=16842752;J[b+488>>2]=0;J[b+492>>2]=0;J[b+612>>2]=0;J[b+616>>2]=0;J[b+668>>2]=0;J[b+672>>2]=0;H[b+675|0]=0;H[b+676|0]=0;H[b+677|0]=0;H[b+678|0]=0;J[b+716>>2]=0;J[b+720>>2]=0;H[b+723|0]=0;H[b+724|0]=0;H[b+725|0]=0;H[b+726|0]=0;J[b+656>>2]=1;J[b+648>>2]=2;J[b+652>>2]=1;J[b+640>>2]=3;J[b+644>>2]=5;J[b+632>>2]=0;J[b+636>>2]=0;J[b+660>>2]=0;J[b+664>>2]=0;J[b+704>>2]=1;J[b+680>>2]=0;J[b+684>>2]=0;J[b+688>>2]=3;J[b+692>>2]=5;J[b+696>>2]=2;J[b+700>>2]=1;J[b+708>>2]=0;J[b+712>>2]=0;J[b+752>>2]=1;J[b+728>>2]=0;J[b+732>>2]=0;J[b+736>>2]=3;J[b+740>>2]=5;J[b+744>>2]=2;J[b+748>>2]=1;H[b+771|0]=0;H[b+772|0]=0;H[b+773|0]=0;H[b+774|0]=0;J[b+764>>2]=0;J[b+768>>2]=0;H[b+819|0]=0;H[b+820|0]=0;H[b+821|0]=0;H[b+822|0]=0;J[b+812>>2]=0;J[b+816>>2]=0;H[b+867|0]=0;H[b+868|0]=0;H[b+869|0]=0;H[b+870|0]=0;J[b+860>>2]=0;J[b+864>>2]=0;J[b+756>>2]=0;J[b+760>>2]=0;J[b+792>>2]=2;J[b+796>>2]=1;J[b+784>>2]=3;J[b+788>>2]=5;J[b+776>>2]=0;J[b+780>>2]=0;J[b+800>>2]=1;J[b+804>>2]=0;J[b+808>>2]=0;J[b+840>>2]=2;J[b+844>>2]=1;J[b+832>>2]=3;J[b+836>>2]=5;J[b+824>>2]=0;J[b+828>>2]=0;J[b+848>>2]=1;J[b+852>>2]=0;J[b+856>>2]=0;ij(b+872|0,0,96);H[b+968|0]=K[b+968|0]&252;f=b+488|0;jQ(c,b+972|0,f);Uj(c);c=nj(72);J[c>>2]=0;J[c+4>>2]=0;J[c+56>>2]=0;J[c+60>>2]=0;J[c+48>>2]=0;J[c+52>>2]=0;J[c+40>>2]=0;J[c+44>>2]=0;J[c+32>>2]=0;J[c+36>>2]=0;J[c+24>>2]=0;J[c+28>>2]=0;J[c+16>>2]=0;J[c+20>>2]=0;J[c+8>>2]=0;J[c+12>>2]=0;e=J[e+2480>>2];h=J[b+972>>2];g=b+4|0;hj(g,f,484);J[c+64>>2]=xD(e,h,g);J[c+68>>2]=Yi;d=BQ(J[a>>2],c,J[a+8>>2],d,H[b+968|0]&1);a:{if(d){mv(J[a>>2],c);break a}J[J[a+28>>2]+8>>2]=c}Ui=b+976|0;return d|0}function _ua(a,b){a=a|0;b=b|0;var c=Q(0),d=Q(0),e=0,f=0,g=Q(0),h=Q(0),i=Q(0),j=Q(0),k=Q(0),l=Q(0),m=0,n=Q(0),o=Q(0),p=Q(0),q=Q(0),r=Q(0),s=Q(0),t=Q(0),u=Q(0),v=Q(0),w=Q(0),x=Q(0),y=Q(0),z=Q(0),A=Q(0);e=Ui-32|0;Ui=e;m=J[b+28>>2];f=m+P(J[a+148>>2],12)|0;h=N[f+8>>2];n=N[f+4>>2];o=N[f>>2];f=m+P(J[a+144>>2],12)|0;i=N[f+8>>2];p=N[f+4>>2];q=N[f>>2];l=N[a+180>>2];w=N[a+176>>2];t=N[a+172>>2];u=N[a+168>>2];f=J[a+140>>2];if(!((f|0)==3|K[a+137|0]!=1)){c=Q(N[b>>2]*N[a+128>>2]);d=Q(-c);g=N[a+116>>2];r=N[a+212>>2];k=N[a+184>>2];j=N[a+188>>2];s=N[a+208>>2];v=Q(g+Q(N[a+252>>2]*Q(N[a+132>>2]-Q(Q(Q(r*h)+Q(Q(k*Q(o-q))+Q(Q(n-p)*j)))-Q(s*i)))));c=c>v?v:c;c=c>2]=c;c=Q(c-g);h=Q(Q(l*Q(r*c))+h);d=Q(j*c);n=Q(n+Q(t*d));g=Q(k*c);o=Q(o+Q(t*g));p=Q(p-Q(u*d));q=Q(q-Q(u*g));i=Q(i-Q(w*Q(s*c)))}j=Q(o-q);s=Q(n-p);c=Q(Q(Q(N[a+204>>2]*h)+Q(Q(N[a+192>>2]*j)+Q(s*N[a+196>>2])))-Q(N[a+200>>2]*i));d=Q(h-i);a:{if(!(!f|K[a+136|0]!=1)){g=N[a+112>>2];r=N[a+108>>2];k=N[a+104>>2];v=N[a+208>>2];y=N[a+212>>2];z=N[a+184>>2];A=N[a+188>>2];d=Q(-d);N[e+12>>2]=d;x=Q(-c);N[e+8>>2]=x;N[e+16>>2]=-Q(Q(Q(y*h)+Q(Q(z*j)+Q(s*A)))-Q(v*i));m=a+216|0;rz(e+20|0,m,e+8|0);N[a+104>>2]=N[e+20>>2]+N[a+104>>2];N[a+108>>2]=N[e+24>>2]+N[a+108>>2];c=Q(N[e+28>>2]+N[a+112>>2]);N[a+112>>2]=c;b:{c:{d:{switch(J[a+140>>2]-1|0){case 0:f=c>Q(0);break c;case 1:break d;default:break b}}f=c>2]=c}j=N[a+240>>2];c=Q(c-g);N[e+12>>2]=d-Q(c*N[a+244>>2]);N[e+8>>2]=x-Q(c*j);zt(e,m,e+8|0);c=N[e>>2];j=Q(r+N[e+4>>2]);N[a+108>>2]=j;c=Q(k+c);N[a+104>>2]=c;d=Q(c-k);g=Q(N[a+112>>2]-g);c=Q(Q(d*N[a+196>>2])+Q(g*N[a+188>>2]));k=l;l=Q(j-r);h=Q(Q(k*Q(Q(g*N[a+212>>2])+Q(Q(d*N[a+204>>2])+l)))+h);i=Q(i-Q(w*Q(Q(g*N[a+208>>2])+Q(Q(d*N[a+200>>2])+l))));d=Q(Q(d*N[a+192>>2])+Q(g*N[a+184>>2]));break a}N[e+12>>2]=-d;N[e+8>>2]=-c;zt(e+20|0,a+216|0,e+8|0);d=N[e+20>>2];N[a+104>>2]=d+N[a+104>>2];g=N[e+24>>2];N[a+108>>2]=g+N[a+108>>2];c=Q(d*N[a+196>>2]);h=Q(Q(l*Q(g+Q(d*N[a+204>>2])))+h);i=Q(i-Q(w*Q(g+Q(d*N[a+200>>2]))));d=Q(d*N[a+192>>2])}f=J[b+28>>2]+P(J[a+144>>2],12)|0;N[f+4>>2]=p-Q(u*c);N[f>>2]=q-Q(u*d);f=J[b+28>>2];N[(f+P(J[a+144>>2],12)|0)+8>>2]=i;f=f+P(J[a+148>>2],12)|0;N[f+4>>2]=n+Q(t*c);N[f>>2]=o+Q(t*d);N[(J[b+28>>2]+P(J[a+148>>2],12)|0)+8>>2]=h;Ui=e+32|0}function Wja(a){a=a|0;var b=0,c=0,d=0,e=0,f=0,g=0,h=0,i=0,j=0,k=0,l=0;e=Ui-48|0;Ui=e;j=J[a+4>>2];f=J[J[a+16>>2]>>2];a=GO(J[f+8>>2]);if(a){a=a+10|0;if(a>>>0>10){a=102253}else{a=J[(a<<2)+286536>>2]}J[e+32>>2]=a;dj(4,88458,118600,e+32|0)}a=J[f+8>>2];ij(J[a+128>>2],255,J[a+132>>2]<<2);J[a+148>>2]=-1;J[a+152>>2]=0;J[a+140>>2]=J[a+136>>2];c=J[a+36>>2];d=J[a+32>>2];if((c|0)!=(d|0)){c=(c-d|0)/672|0;h=c>>>0<=1?1:c;while(1){c=d+P(b,672)|0;if(J[c+504>>2]==2){jv(a,L[c+650>>1]|L[c+648>>1]<<16,0)}J[c+504>>2]=0;J[c+496>>2]=0;J[c+500>>2]=0;b=b+1|0;if((h|0)!=(b|0)){continue}break}}b=J[f+8>>2];ij(J[b+96>>2],255,J[b+100>>2]<<2);J[b+116>>2]=-1;J[b+120>>2]=0;J[b+108>>2]=J[b+104>>2];a:{a=J[b+36>>2];c=J[b+32>>2];if((a|0)==(c|0)){break a}d=(a-c|0)/672|0;h=d>>>0<=1?1:d;b:{a=J[b+68>>2];if(a){i=b- -64|0;d=0;break b}b=0;a=0;if(d>>>0>=8){i=h&-8;d=0;while(1){J[(c+P(a,672)|0)+560>>2]=0;J[(c+P(a|1,672)|0)+560>>2]=0;J[(c+P(a|2,672)|0)+560>>2]=0;J[(c+P(a|3,672)|0)+560>>2]=0;J[(c+P(a|4,672)|0)+560>>2]=0;J[(c+P(a|5,672)|0)+560>>2]=0;J[(c+P(a|6,672)|0)+560>>2]=0;J[(c+P(a|7,672)|0)+560>>2]=0;a=a+8|0;d=d+8|0;if((i|0)!=(d|0)){continue}break}}d=h&7;if(!d){break a}while(1){J[(c+P(a,672)|0)+560>>2]=0;a=a+1|0;b=b+1|0;if((d|0)!=(b|0)){continue}break}break a}while(1){g=c+P(d,672)|0;k=g;c:{if(!a){break c}g=J[g+560>>2];a=J[J[i>>2]+((g>>>0)%(a>>>0)<<2)>>2];if((a|0)==-1){break c}l=J[b+72>>2];while(1){a=P(a,24)+l|0;if((g|0)!=J[a>>2]){a=J[a+16>>2];if((a|0)!=-1){continue}break c}break}fN(i,g)}J[k+560>>2]=0;d=d+1|0;if((h|0)==(d|0)){break a}a=J[b+68>>2];continue}}b=0;a=J[f+8>>2];J[a+364>>2]=-1;I[a+26>>1]=0;J[a+36>>2]=J[a+32>>2];if(L[a+24>>1]){c=J[a+20>>2];while(1){I[c+(b<<1)>>1]=b;b=b+1|0;if(b>>>0>1]){continue}break}}J[a+52>>2]=J[a+48>>2];c=J[219159];d=J[219158];a=J[f+8>>2];J[a+344>>2]=d;J[a+348>>2]=c;b=J[a+308>>2];J[a+312>>2]=b;d:{e:{if((b|0)!=J[a+316>>2]){J[a+312>>2]=b+8;J[b>>2]=d;J[b+4>>2]=c;if(H[a+336|0]&1){break e}lj(0,4,a+324|0,a+332|0,a+328|0);break d}Z(112520,53895,557,53220);B()}Z(151729,53895,501,2284);B()}f:{if(GP(J[f+8>>2],j)){a=tr(J[f+8>>2],0,-2,0);if(!a){break f}a=a+10|0;if(a>>>0>10){a=102253}else{a=J[(a<<2)+286536>>2]}J[e>>2]=a;dj(4,88458,118641,e);break f}J[e+16>>2]=J[j+88>>2];dj(4,88458,126394,e+16|0)}Ui=e+48|0}function ZA(a,b,c){var d=0,e=0,f=0,g=0;d=Ui-128|0;Ui=d;a:{b:{switch(J[c>>2]){case 4:mj(a,J[c+8>>2],J[c+16>>2]);break a;case 5:f=O[c+8>>3];b=J[a+8>>2];J[b+8>>2]=3;O[b>>3]=f;J[a+8>>2]=J[a+8>>2]+16;break a;case 6:b=J[c+8>>2];c=J[a+8>>2];J[c+8>>2]=1;J[c>>2]=(b|0)!=0;J[a+8>>2]=J[a+8>>2]+16;break a;case 0:c=J[b+20>>2];J[b+20>>2]=c+1;c:{if((c|0)>2]+1348>>2]){if(dr(a,3)){break c}}gn(J[b+12>>2]);c=J[b>>2];e=J[b+8>>2];J[d+64>>2]=J[b+20>>2];J[d+68>>2]=e-c;fj(a,77845,d- -64|0)}Fj(a,0,0);bp(b,d+104|0);d:{c=J[d+104>>2];if((c|0)==1){break d}e=d+112|0;while(1){if((c|0)!=4){gn(J[b+12>>2]);c=J[((c|0)==12?e:(c<<2)+256080|0)>>2];J[d+48>>2]=56316;J[d+52>>2]=c;J[d+56>>2]=J[d+108>>2]+1;fj(a,77804,d+48|0)}mj(a,J[d+112>>2],J[d+120>>2]);bp(b,d+104|0);c=J[d+104>>2];if((c|0)!=8){gn(J[b+12>>2]);c=J[((c|0)==12?e:(c<<2)+256080|0)>>2];J[d+32>>2]=44776;J[d+36>>2]=c;J[d+40>>2]=J[d+108>>2]+1;fj(a,77804,d+32|0)}c=d+104|0;bp(b,c);ZA(a,b,c);Xj(a,-3);bp(b,c);e:{f:{c=J[d+104>>2];switch(c-1|0){case 0:break d;case 8:break e;default:break f}}gn(J[b+12>>2]);c=J[((c|0)==12?e:(c<<2)+256080|0)>>2];J[d+16>>2]=71401;J[d+20>>2]=c;J[d+24>>2]=J[d+108>>2]+1;fj(a,77804,d+16|0)}bp(b,d+104|0);c=J[d+104>>2];continue}}J[b+20>>2]=J[b+20>>2]-1;break a;case 2:c=J[b+20>>2];J[b+20>>2]=c+1;g:{if((c|0)>2]+1348>>2]){if(dr(a,2)){break g}}gn(J[b+12>>2]);c=J[b>>2];e=J[b+8>>2];J[d+96>>2]=J[b+20>>2];J[d+100>>2]=e-c;fj(a,77845,d+96|0)}Fj(a,0,0);if(J[J[b+16>>2]+1352>>2]){c=J[a+8>>2];J[c+8>>2]=2;J[c>>2]=862900;J[a+8>>2]=J[a+8>>2]+16;Ll(a,-1e4);Mj(a,-2)}bp(b,d+104|0);h:{if(J[d+104>>2]==3){break h}g=d+112|0;c=1;while(1){e=d+104|0;ZA(a,b,e);Ik(a,-2,c);bp(b,e);i:{j:{e=J[d+104>>2];switch(e-3|0){case 0:break h;case 6:break i;default:break j}}gn(J[b+12>>2]);e=J[((e|0)==12?g:(e<<2)+256080|0)>>2];J[d+80>>2]=71382;J[d+84>>2]=e;J[d+88>>2]=J[d+108>>2]+1;fj(a,77804,d+80|0)}bp(b,d+104|0);c=c+1|0;continue}}J[b+20>>2]=J[b+20>>2]-1;break a;case 7:if(J[J[b+16>>2]+1356>>2]){b=J[a+8>>2];J[b+8>>2]=2;J[b>>2]=0;J[a+8>>2]=J[a+8>>2]+16;break a}b=J[a+8>>2];J[b+8>>2]=0;J[a+8>>2]=b+16;break a;default:break b}}gn(J[b+12>>2]);b=J[c>>2];b=J[((b|0)==12?c+8|0:(b<<2)+256080|0)>>2];J[d+8>>2]=J[c+4>>2]+1;J[d+4>>2]=b;J[d>>2]=60977;fj(a,77804,d)}Ui=d+128|0}function Ku(a){var b=0,c=0,d=0,e=0,f=0,g=0,h=0,i=0;if(a){b=J[a+12>>2];a:{if(!b|!J[b>>2]){break a}c=J[b+216>>2];b:{if(c){if(!J[b+36>>2]){break a}while(1){c=Zi[J[b+36>>2]](J[b+48>>2],J[b+192>>2]-c|0,c)|0;if((c|0)<=0){break a}d=J[b+216>>2];if(d>>>0>>0){break a}c=d-c|0;J[b+216>>2]=c;if(c){continue}break}c=J[b>>2];d=J[b+184>>2]+((J[c+184>>2]^-1)<<2&8)|0;J[b+192>>2]=d;e=J[c+184>>2]&2;c=d+(e?13:5)|0;J[b+200>>2]=c;J[b+196>>2]=d+(e?11:3);J[b+188>>2]=d+(e?3:-8);d=J[b+76>>2];if(!(!d|J[b+20>>2]<2)){c=(J[d+4>>2]+c|0)-J[d+8>>2]|0}J[b+204>>2]=c;break b}if(J[b+4>>2]!=16){break b}J[b+208>>2]=21;J[b+212>>2]=2;H[J[b+204>>2]]=1;H[J[b+204>>2]+1|0]=0;if(Nm(b,1)){break a}}}b=J[a+16>>2];J[b>>2]=-1;c=J[b>>2];if((c|0)!=-1){Yz(c,2);pt(J[b>>2]);J[b>>2]=-1}b=J[a+12>>2];if(b){c=J[b+184>>2];if(c){Zi[J[66509]](c,0,16749)|0;cj(J[b+184>>2])}c=J[b+100>>2];if(c){Zi[J[66509]](c,0,16749)|0;cj(J[b+100>>2])}c=J[b+80>>2];if(c){d=c+80|0;if(d){e=J[d+60>>2];if(e){Zi[J[J[J[d>>2]+28>>2]+32>>2]](e)}Zi[J[66509]](d,0,64)|0}d=c+144|0;if(d){e=J[d+60>>2];if(e){Zi[J[J[J[d>>2]+28>>2]+32>>2]](e)}Zi[J[66509]](d,0,64)|0}Kl(c+52|0);Kl(c- -64|0);Zi[J[66509]](c,0,212)|0;cj(J[b+80>>2])}if(J[b+68>>2]){jA(b);c=J[b+84>>2];if(c){d=c+80|0;if(d){e=J[d+60>>2];if(e){Zi[J[J[J[d>>2]+28>>2]+32>>2]](e)}Zi[J[66509]](d,0,64)|0}d=c+144|0;if(d){e=J[d+60>>2];if(e){Zi[J[J[J[d>>2]+28>>2]+32>>2]](e)}Zi[J[66509]](d,0,64)|0}Kl(c+52|0);Kl(c- -64|0);Zi[J[66509]](c,0,212)|0}c=J[b+64>>2];if(c){d=J[c+100>>2];if(d){hn(d);cj(J[c+100>>2]);J[c+100>>2]=0}cj(J[c+108>>2]);Zi[J[66509]](c,0,136)|0}cj(J[b+68>>2]);cj(J[b+84>>2]);cj(J[b+64>>2])}c=J[b+60>>2];if(c){d=J[c+100>>2];if(d){hn(d);cj(J[c+100>>2]);J[c+100>>2]=0}cj(J[c+108>>2]);Zi[J[66509]](c,0,136)|0;cj(J[b+60>>2])}c=J[b+236>>2];if(c){g=c,h=0,i=yj(c),f=J[66509],Zi[f](g|0,h|0,i|0)|0;cj(J[b+236>>2])}Zi[J[66509]](b,0,280)|0}d=J[a+8>>2];Dj(d+104|0);Dj(d+116|0);b=J[d+128>>2];if(b){Zi[J[66509]](b,0,J[d+132>>2])|0;cj(J[d+128>>2]);J[d+128>>2]=0;J[d+132>>2]=0}b=J[d+136>>2];if(b){Zi[J[66509]](b,0,J[d+140>>2])|0;cj(J[d+136>>2]);J[d+136>>2]=0;J[d+140>>2]=0}b=J[d+84>>2];if(b){while(1){c=J[b+8>>2];cj(b);b=c;if(b){continue}break}}Zi[J[66509]](d,0,188)|0;UH(J[a+4>>2]);FH(J[a>>2]);cj(J[a+16>>2]);cj(J[a+12>>2]);cj(a)}}function _x(a,b,c,d,e,f,g,h,i){var j=0,k=0,l=0,m=0,n=0,o=0,p=Q(0),q=Q(0);m=Ui-32|0;Ui=m;a:{b:{c:{d:{k=b&65535;j=J[a+32>>2];if(k>>>0<(J[a+36>>2]-j|0)/672>>>0){n=b>>>16|0;j=j+P(k,672)|0;if((n|0)!=L[j+648>>1]){break d}if((k|0)!=L[j+650>>1]){break c}J[j+536>>2]=0;J[j+540>>2]=0;J[j+544>>2]=0;e:{if(!(c|d)){dj(4,93318,124807,0);a=-7;break e}if(J[j+504>>2]!=2){dj(4,93318,120822,0);a=-7;break e}o=j+544|0;J[j+536>>2]=c;J[j+540>>2]=d;f:{l=J[a+416>>2];g:{if(!l){dj(4,93318,115801,0);l=-2;break g}l=Zi[l|0](J[j+496>>2],J[j+500>>2],c,d,j+508|0)|0;if(!l){break f}}g=J[a+32>>2];if(k>>>0>=(J[a+36>>2]-g|0)/672>>>0){break b}if((n|0)!=L[(g+P(k,672)|0)+648>>1]){break a}g=J[a+52>>2];h=J[a+48>>2];h:{if((g|0)==(h|0)){break h}a=(g-h|0)/72|0;i=a>>>0<=1?1:a;a=0;while(1){g=h+P(a,72)|0;if(!(J[g>>2]==(b|0)&J[g+4>>2]==(o|0))){a=a+1|0;if((i|0)!=(a|0)){continue}break h}break}H[g+68|0]=K[g+68|0]|4}J[j+508>>2]=0;J[j+512>>2]=0;J[j+536>>2]=0;J[j+540>>2]=0;J[j+516>>2]=0;J[j+520>>2]=0;J[j+524>>2]=0;J[j+528>>2]=0;a=tj(c,d);if((l|0)==-1){J[m>>2]=a;dj(3,93318,126810,m);a=-5;break e}J[m+20>>2]=l;J[m+16>>2]=a;dj(3,93318,133429,m+16|0);a=-5;break e}i:{if((J[j+508>>2]&1006632960)==402653184){c=J[a+32>>2];if(k>>>0>=(J[a+36>>2]-c|0)/672>>>0){break b}if((n|0)!=L[(c+P(k,672)|0)+648>>1]){break a}c=J[a+52>>2];k=J[a+48>>2];j:{if((c|0)==(k|0)){break j}c=(c-k|0)/72|0;l=c>>>0<=1?1:c;c=0;while(1){d=k+P(c,72)|0;if(!(J[d>>2]==(b|0)&J[d+4>>2]==(o|0))){c=c+1|0;if((l|0)!=(c|0)){continue}break j}break}H[d+68|0]=K[d+68|0]|4}if(!g){break i}Zi[g|0](a,b,1,h,i);break i}rD(a,b,e,f,g,h,i)}a=0;b=J[j+476>>2];if(!(b&262144)|(b>>>4&15)-5>>>0<2|J[j+504>>2]!=2){break e}b=J[j+520>>2];if(!b){break e}a=J[j+508>>2];c=a&8191;a=(a>>>13&8191)-c|0;d=a-1|0;e=Q(N[o>>2]*Q(a|0));k:{if(Q(R(e))=0?(a|0)<(d|0)?a:d:0)<<5)+b|0;e=N[a+12>>2];l:{m:{p=N[a>>2];f=N[a+8>>2];if(p==f){break m}q=N[a+20>>2];if(e==q){break m}f=Q(f-p);e=Q(N[a+4>>2]-q);b=514;a=512;break l}f=Q(e-N[a+4>>2]);e=Q(N[a+16>>2]-p);b=512;a=514}N[j+64>>2]=e*Q(L[b+j>>1]);N[j+68>>2]=f*Q(L[a+j>>1]);a=0}Ui=m+32|0;return a}break b}Z(47372,40876,188,69601);B()}Z(5388,40876,189,69601);B()}Z(145396,53895,487,84789);B()}Z(47372,40876,3733,46897);B()}function Kz(a,b,c,d,e){var f=0,g=0,h=0,i=0,j=0,k=0;g=Ui-32|0;Ui=g;yp(a,b,c,e);f=J[e>>2];i=J[f+12>>2];a:{if(!i){break a}h=J[d>>2];j=J[f+8>>2];f=0;b:{while(1){if(!jj(h,J[j+P(f,1552)>>2])){break b}f=f+1|0;if((i|0)!=(f|0)){continue}break}f=-1}k=J[c>>2];h=0;c:{while(1){if(!jj(k,J[j+P(h,1552)>>2])){break c}h=h+1|0;if((i|0)!=(h|0)){continue}break}h=-1}if((f|0)>=(h|0)){break a}f=J[c+20>>2];J[g+24>>2]=J[c+16>>2];J[g+28>>2]=f;f=J[c+12>>2];J[g+16>>2]=J[c+8>>2];J[g+20>>2]=f;f=J[c+4>>2];J[g+8>>2]=J[c>>2];J[g+12>>2]=f;f=J[d+20>>2];J[c+16>>2]=J[d+16>>2];J[c+20>>2]=f;f=J[d+12>>2];J[c+8>>2]=J[d+8>>2];J[c+12>>2]=f;f=J[d+4>>2];J[c>>2]=J[d>>2];J[c+4>>2]=f;f=J[g+28>>2];J[d+16>>2]=J[g+24>>2];J[d+20>>2]=f;f=J[g+20>>2];J[d+8>>2]=J[g+16>>2];J[d+12>>2]=f;f=J[g+12>>2];J[d>>2]=J[g+8>>2];J[d+4>>2]=f;f=J[e>>2];d=J[f+12>>2];if(!d){break a}h=J[c>>2];i=J[f+8>>2];f=0;d:{while(1){if(!jj(h,J[i+P(f,1552)>>2])){break d}f=f+1|0;if((d|0)!=(f|0)){continue}break}f=-1}j=J[b>>2];h=0;e:{while(1){if(!jj(j,J[i+P(h,1552)>>2])){break e}h=h+1|0;if((d|0)!=(h|0)){continue}break}h=-1}if((f|0)>=(h|0)){break a}d=J[b+20>>2];J[g+24>>2]=J[b+16>>2];J[g+28>>2]=d;d=J[b+12>>2];J[g+16>>2]=J[b+8>>2];J[g+20>>2]=d;d=J[b+4>>2];J[g+8>>2]=J[b>>2];J[g+12>>2]=d;d=J[c+20>>2];J[b+16>>2]=J[c+16>>2];J[b+20>>2]=d;d=J[c+12>>2];J[b+8>>2]=J[c+8>>2];J[b+12>>2]=d;d=J[c+4>>2];J[b>>2]=J[c>>2];J[b+4>>2]=d;d=J[g+28>>2];J[c+16>>2]=J[g+24>>2];J[c+20>>2]=d;d=J[g+20>>2];J[c+8>>2]=J[g+16>>2];J[c+12>>2]=d;d=J[g+12>>2];J[c>>2]=J[g+8>>2];J[c+4>>2]=d;d=J[e>>2];c=J[d+12>>2];if(!c){break a}e=J[b>>2];d=J[d+8>>2];f=0;f:{while(1){if(!jj(e,J[d+P(f,1552)>>2])){break f}f=f+1|0;if((c|0)!=(f|0)){continue}break}f=-1}e=J[a>>2];h=0;g:{while(1){if(!jj(e,J[d+P(h,1552)>>2])){break g}h=h+1|0;if((c|0)!=(h|0)){continue}break}h=-1}if((f|0)>=(h|0)){break a}c=J[a+20>>2];J[g+24>>2]=J[a+16>>2];J[g+28>>2]=c;c=J[a+12>>2];J[g+16>>2]=J[a+8>>2];J[g+20>>2]=c;c=J[a+4>>2];J[g+8>>2]=J[a>>2];J[g+12>>2]=c;c=J[b+20>>2];J[a+16>>2]=J[b+16>>2];J[a+20>>2]=c;c=J[b+12>>2];J[a+8>>2]=J[b+8>>2];J[a+12>>2]=c;c=J[b+4>>2];J[a>>2]=J[b>>2];J[a+4>>2]=c;a=J[g+28>>2];J[b+16>>2]=J[g+24>>2];J[b+20>>2]=a;a=J[g+20>>2];J[b+8>>2]=J[g+16>>2];J[b+12>>2]=a;a=J[g+12>>2];J[b>>2]=J[g+8>>2];J[b+4>>2]=a}Ui=g+32|0}function FP(a,b,c,d,e,f){var g=0,h=0,i=0,j=0,k=0,l=0,m=0,n=0,o=0,p=0,q=0,r=0,s=0,t=0,u=0,v=0,w=0,x=0,y=0,z=0;g=Ui-1232|0;Ui=g;a:{if(!J[f>>2]){if(J[f+4>>2]){break a}m=J[a+2480>>2];j=sr(b,0);k=sr(b,1);l=g+896|0;ij(l,0,336);J[g+1224>>2]=336;ct(b,j,l,J[b+168>>2]==1?2:1);b=g+560|0;ij(b,0,336);J[g+888>>2]=336;dt(0,65535,d,e,l,b);if(k){zQ(m,l,b,f+8|0,1)}if(j){zQ(m,g+896|0,g+560|0,f+4|0,0);ij(g+224|0,0,336);J[g+548>>2]=0;J[g+552>>2]=336;e=0;o=J[g+1220>>2];if(o){r=J[78812];s=J[78813];t=J[78814];u=J[78815];v=J[78816];w=J[78817];l=J[78818];x=J[78819];j=J[78822];y=J[78823];k=J[78820];z=J[78821];b=0;while(1){d=P(b,40);n=d+(g+896|0)|0;b:{if(J[n+20>>2]){break b}h=d+(g+560|0)|0;d=J[h>>2];i=J[h+4>>2];c:{d:{switch(J[n+8>>2]-2|0){case 4:if((d|0)!=(t|0)|(i|0)!=(u|0)){break c}break b;case 5:if((d|0)!=(v|0)|(i|0)!=(w|0)){break c}break b;case 3:if((d|0)!=(l|0)|(i|0)!=(x|0)){break c}break b;case 1:if((d|0)==(k|0)&(i|0)==(z|0)){break b}if((d|0)!=(j|0)|(i|0)!=(y|0)){break c}break b;case 0:break d;default:break c}}if((d|0)==(r|0)&(i|0)==(s|0)){break b}}p=0;i=0;d=J[h+16>>2]-1|0;if(d>>>0<=6){i=J[(d<<2)+160504>>2]}d=J[h+12>>2]-1|0;if(d>>>0<=6){p=J[(d<<2)+160476>>2]}d=J[g+548>>2];J[g+548>>2]=d+1;e=(g+224|0)+P(d,40)|0;d=J[h+36>>2];J[e+32>>2]=J[h+32>>2];J[e+36>>2]=d;d=J[h+28>>2];J[e+24>>2]=J[h+24>>2];J[e+28>>2]=d;d=J[h+20>>2];J[e+16>>2]=J[h+16>>2];J[e+20>>2]=d;d=J[h+12>>2];J[e+8>>2]=J[h+8>>2];J[e+12>>2]=d;d=J[h+4>>2];J[e>>2]=J[h>>2];J[e+4>>2]=d;J[e+16>>2]=J[n+16>>2];e=J[g+544>>2]+P(i,p)|0;J[g+544>>2]=e}b=b+1|0;if((o|0)!=(b|0)){continue}break}}j=J[J[c+100>>2]+8>>2];k=P(j,e);d=Zj(1,k);b=g+160|0;Hx(b,a,c);J[g+156>>2]=c;J[g+152>>2]=b;c=J[c+108>>2];if(J[c+68>>2]){q=J[c+64>>2]}J[g+144>>2]=q;b=0;e=0;e=J[c+80>>2]?J[c+76>>2]:e;J[g+148>>2]=e;J[g+140>>2]=J[c+60>>2]?J[c+56>>2]:0;J[g+136>>2]=J[c+36>>2]?J[c+32>>2]:0;J[g+132>>2]=J[c+44>>2]?J[c+40>>2]:0;J[g+128>>2]=J[c+52>>2]?J[c+48>>2]:0;a=g+12|0;ij(a,0,116);pK(a,g+224|0,0,g+156|0,g+152|0,g+136|0,g+132|0,g+128|0,g+140|0,g+144|0,((e|0)!=0)+((q|0)!=0)|0);if(j){a=d;while(1){a=cn(a,b,g+12|0);b=b+1|0;if((j|0)!=(b|0)){continue}break}}J[f>>2]=Zi[J[79391]](m,k,d,1);cj(d)}H[f+12|0]=1;Ui=g+1232|0;return}Z(35001,40609,653,83628);B()}Z(46654,40609,654,83628);B()}function uP(a,b){var c=0,d=0,e=0;if(J[b+56>>2]==2){Zi[J[79456]](J[b+48>>2],J[b+52>>2],b);mp(a,b,36064)}if(J[b+120>>2]==2){c=b- -64|0;Zi[J[79456]](J[b+112>>2],J[b+116>>2],c);mp(a,c,36065)}if(J[b+184>>2]==2){c=b+128|0;Zi[J[79456]](J[b+176>>2],J[b+180>>2],c);mp(a,c,36066)}if(J[b+248>>2]==2){c=b+192|0;Zi[J[79456]](J[b+240>>2],J[b+244>>2],c);mp(a,c,36067)}e=b+384|0;a:{b:{c:{d:{e:{f:{g:{h:{i:{switch(J[b+440>>2]){case 1:d=J[b+432>>2];c=J[a+108>>2];if(d>>>0>=J[a+112>>2]-c>>2>>>0){break a}oa(36161,J[c+(d<<2)>>2]);Ma(36161,34041,L[b+424>>1],L[b+426>>1]);if(K[J[79491]+220|0]&2){b=_()|0;if(b){break h}}mp(a,e,33306);oa(36161,0);return;case 2:c=J[b+432>>2];d=J[b+436>>2];if((d|0)==2097152|d>>>0>2097152){break g}d=c&65535;if(d>>>0>=M[a+100>>2]){break f}c=J[J[(L[J[a+96>>2]+(d<<1)>>1]==(c>>>16|0)?J[J[a+92>>2]+(d<<2)>>2]:0)+52>>2]>>2];d=J[a+108>>2];if(c>>>0>=J[a+112>>2]-d>>2>>>0){break a}ja(3553,J[d+(c<<2)>>2]);if(K[J[79491]+220|0]&2){c=_()|0;if(c){break e}}fa(3553,0,35056,L[b+424>>1],L[b+426>>1],0,34041,34042,0);if(K[J[79491]+220|0]&2){b=_()|0;if(b){break d}}ja(3553,0);mp(a,e,33306);return;default:Z(114101,40535,3340,18316);B();case 0:break i}}c=b+256|0;j:{k:{switch(J[b+312>>2]-1|0){case 0:d=J[b+304>>2];e=J[a+108>>2];if(d>>>0>=J[a+112>>2]-e>>2>>>0){break a}oa(36161,J[e+(d<<2)>>2]);Ma(36161,(J[a+208>>2]==16?33189:6402)|0,L[b+296>>1],L[b+298>>1]);if(K[J[79491]+220|0]&2){e=_()|0;if(e){break c}}mp(a,c,36096);oa(36161,0);break j;case 1:break k;default:break j}}Zi[J[79456]](J[b+304>>2],J[b+308>>2],c);mp(a,c,36096)}c=b+320|0;l:{switch(J[b+376>>2]-1|0){case 0:d=J[b+368>>2];e=J[a+108>>2];if(d>>>0>=J[a+112>>2]-e>>2>>>0){break a}oa(36161,J[e+(d<<2)>>2]);Ma(36161,36168,L[b+360>>1],L[b+362>>1]);if(K[J[79491]+220|0]&2){b=_()|0;if(b){break b}}mp(a,c,36128);oa(36161,0);return;case 1:Zi[J[79456]](J[b+368>>2],J[b+372>>2],c);mp(a,c,36128);break;default:break l}}return}Cj(b,18316,3300);Z(114101,40535,3300,18316);B()}Z(94863,55553,306,33926);B()}Z(2686,54166,244,5438);B()}Cj(c,18316,3319);Z(114101,40535,3319,18316);B()}Cj(b,18316,3327);Z(114101,40535,3327,18316);B()}Cj(e,18316,3349);Z(114101,40535,3349,18316);B()}Cj(b,18316,3368);Z(114101,40535,3368,18316);B()}Z(145396,53895,487,84789);B()}function Fpa(a,b,c,d,e,f){a=a|0;b=b|0;c=c|0;d=d|0;e=e|0;f=f|0;var g=0,h=0,i=0;h=Ui-16|0;Ui=h;i=-38;a:{if(c&15){break a}if(b){i=0;if(!c){break a}while(1){H[f|0]=K[d|0]^K[e|0];H[f+1|0]=K[d+1|0]^K[e+1|0];H[f+2|0]=K[d+2|0]^K[e+2|0];H[f+3|0]=K[d+3|0]^K[e+3|0];H[f+4|0]=K[d+4|0]^K[e+4|0];H[f+5|0]=K[d+5|0]^K[e+5|0];H[f+6|0]=K[d+6|0]^K[e+6|0];H[f+7|0]=K[d+7|0]^K[e+7|0];H[f+8|0]=K[d+8|0]^K[e+8|0];H[f+9|0]=K[d+9|0]^K[e+9|0];H[f+10|0]=K[d+10|0]^K[e+10|0];H[f+11|0]=K[d+11|0]^K[e+11|0];H[f+12|0]=K[d+12|0]^K[e+12|0];H[f+13|0]=K[d+13|0]^K[e+13|0];H[f+14|0]=K[d+14|0]^K[e+14|0];H[f+15|0]=K[d+15|0]^K[e+15|0];du(a,f,f);b=K[f+12|0]|K[f+13|0]<<8|(K[f+14|0]<<16|K[f+15|0]<<24);g=K[f+8|0]|K[f+9|0]<<8|(K[f+10|0]<<16|K[f+11|0]<<24);H[d+8|0]=g;H[d+9|0]=g>>>8;H[d+10|0]=g>>>16;H[d+11|0]=g>>>24;H[d+12|0]=b;H[d+13|0]=b>>>8;H[d+14|0]=b>>>16;H[d+15|0]=b>>>24;b=K[f+4|0]|K[f+5|0]<<8|(K[f+6|0]<<16|K[f+7|0]<<24);g=K[f|0]|K[f+1|0]<<8|(K[f+2|0]<<16|K[f+3|0]<<24);H[d|0]=g;H[d+1|0]=g>>>8;H[d+2|0]=g>>>16;H[d+3|0]=g>>>24;H[d+4|0]=b;H[d+5|0]=b>>>8;H[d+6|0]=b>>>16;H[d+7|0]=b>>>24;f=f+16|0;e=e+16|0;c=c-16|0;if(c){continue}break}break a}i=0;if(!c){break a}while(1){b=K[e+4|0]|K[e+5|0]<<8|(K[e+6|0]<<16|K[e+7|0]<<24);J[h>>2]=K[e|0]|K[e+1|0]<<8|(K[e+2|0]<<16|K[e+3|0]<<24);J[h+4>>2]=b;b=K[e+12|0]|K[e+13|0]<<8|(K[e+14|0]<<16|K[e+15|0]<<24);J[h+8>>2]=K[e+8|0]|K[e+9|0]<<8|(K[e+10|0]<<16|K[e+11|0]<<24);J[h+12>>2]=b;du(a,e,f);H[f|0]=K[d|0]^K[f|0];H[f+1|0]=K[d+1|0]^K[f+1|0];H[f+2|0]=K[d+2|0]^K[f+2|0];H[f+3|0]=K[d+3|0]^K[f+3|0];H[f+4|0]=K[d+4|0]^K[f+4|0];H[f+5|0]=K[d+5|0]^K[f+5|0];H[f+6|0]=K[d+6|0]^K[f+6|0];H[f+7|0]=K[d+7|0]^K[f+7|0];H[f+8|0]=K[d+8|0]^K[f+8|0];H[f+9|0]=K[d+9|0]^K[f+9|0];H[f+10|0]=K[d+10|0]^K[f+10|0];H[f+11|0]=K[d+11|0]^K[f+11|0];H[f+12|0]=K[d+12|0]^K[f+12|0];H[f+13|0]=K[d+13|0]^K[f+13|0];H[f+14|0]=K[d+14|0]^K[f+14|0];H[f+15|0]=K[d+15|0]^K[f+15|0];b=J[h+12>>2];g=J[h+8>>2];H[d+8|0]=g;H[d+9|0]=g>>>8;H[d+10|0]=g>>>16;H[d+11|0]=g>>>24;H[d+12|0]=b;H[d+13|0]=b>>>8;H[d+14|0]=b>>>16;H[d+15|0]=b>>>24;b=J[h+4>>2];g=J[h>>2];H[d|0]=g;H[d+1|0]=g>>>8;H[d+2|0]=g>>>16;H[d+3|0]=g>>>24;H[d+4|0]=b;H[d+5|0]=b>>>8;H[d+6|0]=b>>>16;H[d+7|0]=b>>>24;f=f+16|0;e=e+16|0;c=c-16|0;if(c){continue}break}}Ui=h+16|0;return i|0}function wca(a){a=a|0;var b=0,c=0,d=0,e=0,f=0,g=0,h=0,i=0,j=0,k=0;b=Ui-176|0;Ui=b;i=J[a+8>>2]-J[a+12>>2]>>4;c=J[J[pk(a)+80>>2]+8>>2];J[b+160>>2]=0;J[b+164>>2]=0;J[b+152>>2]=0;J[b+156>>2]=0;J[b+144>>2]=0;J[b+148>>2]=0;J[b+136>>2]=0;J[b+140>>2]=0;e=1;Al(a,1,c,81707,b+172|0,b+136|0,0);c=mk(a,2);d=Yi;g=vy(J[b+172>>2],c,d);a:{if((g|0)==-1){J[b>>2]=tj(c,d);dj(4,88458,134126,b);c=J[a+8>>2];J[c+8>>2]=1;J[c>>2]=0;J[a+8>>2]=J[a+8>>2]+16;if((i+1|0)==J[a+8>>2]-J[a+12>>2]>>4){break a}Z(143334,40250,237,66722);B()}d=Ej(a,3);f=Ej(a,4);b:{e=Ej(a,5);if((e|0)>=0){h=J[b+172>>2];c=J[h+152>>2];if(!c){c=J[J[h+156>>2]>>2]}if(L[J[c+96>>2]+40>>1]>=e>>>0){break b}}J[b+16>>2]=e;e=fj(a,139865,b+16|0);break a}sy(J[b+172>>2],b+132|0,b+128|0,b+124|0,b+120|0);c=J[J[b+172>>2]+156>>2];J[b+116>>2]=(d-1|0)-J[c+36>>2];J[b+112>>2]=(f-1|0)-J[c+40>>2];c:{c=J[b+116>>2];d:{if((c|0)<0|(c|0)>=J[b+124>>2]){break d}c=J[b+112>>2];if((c|0)<0){break d}if((c|0)>2]){break c}}dj(4,88458,125985,0);e=J[a+8>>2];J[e+8>>2]=1;J[e>>2]=0;J[a+8>>2]=J[a+8>>2]+16;e=1;if((i+1|0)==J[a+8>>2]-J[a+12>>2]>>4){break a}Z(143334,40250,273,66722);B()}e:{if(!(!kk(a,6)|(i|0)!=6)){d=Ej(a,6);c=d>>31;c=(c^d)-c|0;if(!(c&248)){break e}J[b+48>>2]=e;e=fj(a,142479,b+48|0);break a}c=(ck(a,6)|0)!=0;c=ck(a,7)?c|2:c}j=J[b+116>>2];h=J[b+112>>2];d=J[b+172>>2];f=J[d+156>>2];f=j+P(h+P(J[f+32>>2]&2147483647,g)|0,J[f+28>>2])|0;e=e-1|0;I[J[d+100>>2]+(f<<1)>>1]=e;f=f+J[d+104>>2]|0;H[f|0]=K[f|0]&248|c&7;f=J[d+108>>2];k=J[d+112>>2]-f|0;d=P(L[d+160>>1],h>>>5|0)+(j>>>5|0)|0;if(k>>>0<=d>>>0){Z(145396,53895,487,84789);B()}d=d+f|0;H[d|0]=K[d|0]|1;J[b+104>>2]=0;J[b+108>>2]=0;J[b+96>>2]=0;J[b+100>>2]=0;J[b+88>>2]=0;J[b+92>>2]=0;J[b+80>>2]=0;J[b+84>>2]=0;d=b+80|0;if($l(a,d)){J[b+60>>2]=J[b+116>>2];J[b+52>>2]=g;J[b+64>>2]=e;J[b+56>>2]=J[b+112>>2];e=1;J[b+68>>2]=c&1;J[b+76>>2]=c>>>2&1;J[b+72>>2]=c>>>1&1;c=J[58486];g=J[c+8>>2];f=J[c+12>>2];J[b+160>>2]=0;J[b+164>>2]=0;c=Jk(d,b+136|0,g,f,0,0,c,b+52|0,28,0);if(c){J[b+32>>2]=J[J[58486]+4>>2];J[b+36>>2]=c;dj(4,88458,130272,b+32|0)}c=J[a+8>>2];J[c+8>>2]=1;J[c>>2]=1;J[a+8>>2]=J[a+8>>2]+16;if((i+1|0)==J[a+8>>2]-J[a+12>>2]>>4){break a}Z(143334,40250,332,66722);B()}e=fj(a,124083,0)}Ui=b+176|0;return e|0}function Tua(a,b){a=a|0;b=b|0;var c=Q(0),d=Q(0),e=0,f=Q(0),g=Q(0),h=0,i=Q(0),j=Q(0),k=0,l=0,m=Q(0),n=Q(0),o=Q(0),p=Q(0),q=Q(0),r=Q(0),s=Q(0),t=Q(0),u=0,v=Q(0),w=Q(0),x=Q(0),y=Q(0),z=Q(0),A=Q(0),B=0,C=Q(0);k=J[a+48>>2];u=J[k+8>>2];J[a+128>>2]=u;h=J[a+52>>2];B=J[h+8>>2];J[a+132>>2]=B;f=N[k+32>>2];l=J[k+32>>2];o=N[k+28>>2];e=J[k+28>>2];J[a+152>>2]=e;J[a+156>>2]=l;C=N[h+32>>2];e=J[h+32>>2];d=N[h+28>>2];J[a+160>>2]=J[h+28>>2];J[a+164>>2]=e;s=N[k+120>>2];N[a+168>>2]=s;t=N[h+120>>2];N[a+172>>2]=t;p=N[k+128>>2];N[a+176>>2]=p;q=N[h+128>>2];N[a+180>>2]=q;g=N[a+72>>2];k=J[b+24>>2];e=P(u,12);i=N[(k+e|0)+8>>2];c=Hj(i);m=N[a+68>>2];j=Rj(i);h=J[b+28>>2];e=e+h|0;v=N[e>>2];w=N[e+4>>2];x=N[e+8>>2];e=h;h=P(B,12);e=e+h|0;y=N[e>>2];z=N[e+4>>2];A=N[e+8>>2];n=N[(h+k|0)+8>>2];m=Q(m-o);g=Q(g-f);o=Q(Q(j*m)-Q(c*g));N[a+136>>2]=o;m=Q(Q(c*m)+Q(j*g));N[a+140>>2]=m;c=Q(p+q);N[a+216>>2]=c;N[a+220>>2]=c>Q(0)?Q(Q(1)/c):c;j=N[a+80>>2];g=Hj(n);f=N[a+76>>2];r=Rj(n);d=Q(f-d);f=Q(j-C);j=Q(Q(r*d)-Q(g*f));N[a+144>>2]=j;g=Q(Q(g*d)+Q(r*f));N[a+148>>2]=g;d=Q(-m);f=Q(Q(p*d)-Q(g*q));N[a+208>>2]=f;r=Q(Q(o*p)+Q(q*j));N[a+212>>2]=r;N[a+192>>2]=f;N[a+204>>2]=r;f=Q(s+t);N[a+184>>2]=Q(q*Q(g*g))+Q(Q(p*Q(m*m))+f);d=Q(Q(p*Q(o*d))-Q(q*Q(g*j)));N[a+196>>2]=d;N[a+188>>2]=d;N[a+200>>2]=Q(q*Q(j*j))+Q(Q(p*Q(o*o))+f);if(!(c!=Q(0)?K[a+100|0]:0)){J[a+96>>2]=0}a:{if(!(K[a+112|0]!=1|c==Q(0))){d=N[a+124>>2];f=N[a+120>>2];c=Q(d-f);if((c>Q(0)?c:Q(-c))>2]=3;break a}c=Q(Q(n-i)-N[a+116>>2]);if(c<=f){if(J[a+224>>2]!=1){J[a+92>>2]=0}J[a+224>>2]=1;break a}if(c>=d){if(J[a+224>>2]!=2){J[a+92>>2]=0}J[a+224>>2]=2;break a}J[a+92>>2]=0;J[a+224>>2]=0;break a}J[a+224>>2]=0}b:{if(K[b+20|0]==1){i=N[b+8>>2];c=Q(i*N[a+84>>2]);N[a+84>>2]=c;n=Q(i*N[a+88>>2]);N[a+88>>2]=n;d=Q(i*N[a+92>>2]);N[a+92>>2]=d;i=Q(i*N[a+96>>2]);N[a+96>>2]=i;A=Q(Q(q*Q(d+Q(i+Q(Q(j*n)-Q(g*c)))))+A);x=Q(x-Q(p*Q(d+Q(i+Q(Q(o*n)-Q(m*c))))));z=Q(z+Q(t*n));y=Q(y+Q(t*c));w=Q(w-Q(s*n));v=Q(v-Q(s*c));break b}J[a+84>>2]=0;J[a+88>>2]=0;J[a+92>>2]=0;J[a+96>>2]=0}l=J[b+28>>2]+P(u,12)|0;N[l+4>>2]=w;N[l>>2]=v;l=J[b+28>>2];N[(l+P(J[a+128>>2],12)|0)+8>>2]=x;l=l+P(J[a+132>>2],12)|0;N[l+4>>2]=z;N[l>>2]=y;N[(J[b+28>>2]+P(J[a+132>>2],12)|0)+8>>2]=A}function $ja(a){a=a|0;var b=0,c=0,d=0,e=0,f=0,g=0,h=0,i=0,j=Q(0),k=0,l=Q(0),m=Q(0),n=Q(0);c=Ui-128|0;Ui=c;a:{b:{c:{b=J[a+1040>>2];d:{if(J[b+8>>2]==2){break d}f=J[b+32>>2];g=J[b>>2];i=Tp(J[f+8>>2],g);d=J[a+1052>>2];e=d;b=J[a+1048>>2];h=b+1|0;d=h?d:d+1|0;J[a+1048>>2]=h;J[a+1052>>2]=d;e:{if(!e&b>>>0<=3){d=bj(J[(b<<2)+224240>>2]);J[a+8>>2]=1;J[a>>2]=d;J[a+4>>2]=Yi;if(!e&b>>>0<=2){f:{switch(b-1|0){default:J[a+16>>2]=bj(J[(i<<2)+224256>>2]);J[a+20>>2]=Yi;break e;case 0:J[c+64>>2]=0;b=NN(hv(J[f+8>>2],g),c- -64|0);J[a+16>>2]=bj(b?b:158859);J[a+20>>2]=Yi;break e;case 1:break f}}d=J[f+8>>2];b=J[d+32>>2];g:{f=g&65535;if(f>>>0<(J[d+36>>2]-b|0)/672>>>0){d=b+P(f,672)|0;if(L[d+648>>1]!=(g>>>16|0)){break b}if((f|0)!=L[d+650>>1]){break a}b=J[d+640>>2];d=J[d+644>>2];break g}break c}J[a+16>>2]=b;J[a+20>>2]=d;break e}b=lD(J[f+8>>2],g);if(b>>>0>8){d=158859}else{d=J[(b<<2)+224352>>2]}J[a+16>>2]=bj(d);J[a+20>>2]=Yi;break e}d=b-4|0;if((b>>>0<4|0)==(e|0)&d>>>0<=10){b=d<<2;fm(c- -64|0,J[f+8>>2],g,J[b+159184>>2]);J[a>>2]=bj(J[b+224288>>2]);J[a+4>>2]=Yi;N[a+16>>2]=N[c+64>>2];N[a+20>>2]=N[c+68>>2];N[a+24>>2]=N[c+72>>2];j=N[c+76>>2];J[a+8>>2]=4;N[a+28>>2]=j;break e}d=b-15|0;if((b>>>0<15|0)==(e|0)&d>>>0<=3){e=c- -64|0;i=J[f+8>>2];h=J[i+32>>2];h:{k=g&65535;if(k>>>0<(J[i+36>>2]-h|0)/672>>>0){h=h+P(k,672)|0;if(L[h+648>>1]!=(g>>>16|0)){break b}if((k|0)!=L[h+650>>1]){break a}Xs(i,h,0,e);break h}break c}rq(c+16|0,e);i:{j:{switch(b-16|0){default:j=N[c+40>>2];l=N[c+36>>2];m=N[c+32>>2];e=3;break i;case 0:n=N[c+28>>2];j=N[c+24>>2];l=N[c+20>>2];m=N[c+16>>2];e=4;break i;case 1:j=N[c+56>>2];l=N[c+52>>2];m=N[c+48>>2];e=3;break i;case 2:break j}}fm(c,J[f+8>>2],g,4);n=Q(N[c+12>>2]*Q(0));j=Q(N[c+56>>2]*N[c+8>>2]);l=Q(N[c+52>>2]*N[c+4>>2]);m=Q(N[c+48>>2]*N[c>>2]);e=3}J[a+8>>2]=e;b=bj(J[(d<<2)+224336>>2]);N[a+28>>2]=n;N[a+24>>2]=j;N[a+20>>2]=l;N[a+16>>2]=m;J[a>>2]=b;J[a+4>>2]=Yi;break e}if(!e&(b|0)==19){J[a+8>>2]=6;H[a+16|0]=rO(J[f+8>>2],g,0);J[a>>2]=bj(75216);J[a+4>>2]=Yi;break e}if((b|0)!=20|e|(i|0)!=1){break d}J[a+8>>2]=7;J[a+16>>2]=iD(J[f+8>>2],g);J[a>>2]=bj(9386);J[a+4>>2]=Yi}k=1}Ui=c+128|0;return k|0}Z(145396,53895,487,84789);B()}Z(47372,40876,188,69601);B()}Z(5388,40876,189,69601);B()}function Zia(a,b){a=a|0;b=b|0;var c=0,d=0,e=0,f=0,g=Q(0),h=Q(0),i=0,j=0;i=Ui-80|0;Ui=i;a:{b:{c=J[a+4>>2];d=J[c+16>>2];c:{d:{f=J[J[a+24>>2]>>2];if(f>>>0>2]-d>>3>>>0){d=J[d+(f<<3)>>2];j=J[c+4>>2];c=J[c>>2];if(d>>>0>=j-c>>2>>>0){break a}f=J[c+(d<<2)>>2];c=J[a+16>>2];e=J[a+20>>2];if((c|0)==J[78972]&(e|0)==J[78973]){c=J[f+132>>2];d=J[c+172>>2];a=i+8|0;J[a+8>>2]=J[c+168>>2];J[a+12>>2]=d;J[a>>2]=1;hj(b+32|0,a,72);a=0;break c}if((c|0)==J[78974]&(e|0)==J[78975]){c=J[f+132>>2];c=((H[c+186|0]&1)<<5)+c|0;d=J[c+12>>2];a=i+8|0;J[a+8>>2]=J[c+8>>2];J[a+12>>2]=d;J[a>>2]=1;hj(b+32|0,a,72);a=0;break c}if((c|0)==J[78976]&(e|0)==J[78977]){c=b+32|0;a=i+8|0;b=J[f+132>>2];b=((H[b+186|0]&1)<<5)+b|0;d=J[b>>2];if(d){g=N[d+8>>2];if(g!=Q(0)){h=N[b+16>>2];h=J[b+24>>2]==3?g>2]=0;O[a+8>>3]=g;hj(c,a,72);a=0;break c}if((c|0)==J[78978]&(e|0)==J[78979]){b=b+32|0;a=i+8|0;c=J[f+132>>2];c=((H[c+186|0]&1)<<5)+c|0;if(J[c>>2]){g=N[c+20>>2]}else{g=Q(1)}J[a>>2]=0;O[a+8>>3]=g;hj(b,a,72);a=0;break c}e:{f:{if((c|0)!=J[78860]|(e|0)!=J[78861]){if(J[78864]!=(c|0)|J[78865]!=(e|0)){break f}d=0;break e}c=J[J[J[a+8>>2]+80>>2]>>2];a=J[f+208>>2];if(!a){d=J[f+128>>2];a=J[d+28>>2];if((a|0)==J[d+32>>2]){break b}a=J[a+4>>2]}a=Lm(c,a,b);break c}d=1;if((c|0)==J[78866]&(e|0)==J[78867]){break e}d=2;if((c|0)==J[78868]&(e|0)==J[78869]){break e}d=3;if((c|0)==J[78870]&(e|0)==J[78871]){break e}d=4;if((c|0)==J[78872]&(e|0)==J[78873]){break e}d=5;if((c|0)==J[78874]&(e|0)==J[78875]){break e}d=6;if((c|0)==J[78876]&(e|0)==J[78877]){break e}if(J[78878]!=(c|0)|J[78879]!=(e|0)){break d}d=7}j=J[J[J[a+8>>2]+80>>2]>>2];a=J[f+128>>2];e=J[f+208>>2];g:{if(e){c=J[a+28>>2];a=J[a+32>>2];break g}c=J[a+28>>2];a=J[a+32>>2];if((c|0)==(a|0)){break b}e=J[c+4>>2]}h:{if((a|0)==(c|0)){break a}a=J[(f+(d<<2)|0)+176>>2];i:{if(a){break i}if(d>>>0>2]){a=J[(J[c+16>>2]+(d<<4)|0)+8>>2];if(a){break i}}a=0;if(d>>>0>=M[e+104>>2]){break i}a=J[((d<<2)+e|0)+4>>2]}break h}a=Lm(j,a,b);break c}break a}a=bt(lQ(J[f+208>>2],J[f+128>>2]),J[a+16>>2],J[a+20>>2],J[a+32>>2],b,1,757,f)}Ui=i+80|0;return a|0}Z(145396,53895,494,84789);B()}Z(145396,53895,487,84789);B()}function PQ(a,b){var c=0,d=0,e=0,f=0,g=0,h=0,i=0,j=0,k=0;c=Ui-80|0;Ui=c;a:{e=wk(a,J[J[b>>2]>>2],b+8|0);b:{if(e){break b}e=wk(a,J[J[b>>2]+4>>2],b+4|0);if(e){vj(a,J[J[b>>2]>>2]);break b}J[c+72>>2]=0;J[c+76>>2]=0;h=c- -64|0;e=h;J[e>>2]=0;J[e+4>>2]=0;J[c+56>>2]=0;J[c+60>>2]=0;J[c+48>>2]=0;J[c+52>>2]=0;J[c+40>>2]=0;J[c+44>>2]=0;J[c+32>>2]=0;J[c+36>>2]=0;J[c+24>>2]=0;J[c+28>>2]=0;J[c+16>>2]=0;J[c+20>>2]=0;c:{d=J[b>>2];g=J[d+12>>2];if(!g){break c}k=b+80|0;e=0;d:{while(1){if(f>>>0>>0){i=f<<2;j=J[i+J[d+8>>2]>>2];if(K[j|0]){d=c+12|0;g=wk(a,j,d);if((CD(j)|0)==2){d=J[c+12>>2];J[i+(c+16|0)>>2]=d}d=J[d>>2];J[i+(c+48|0)>>2]=d;if(g){e=e?e:g}else{d=hp(a,d,(f<<3)+k|0);e=d?d:e}d=J[b>>2];g=J[d+12>>2]}if(f>>>0>6){break d}f=f+1|0;if(g>>>0>f>>>0){continue}break d}break}Z(12664,55298,44,84789);B()}if(!e){break c}vj(a,J[d>>2]);vj(a,J[J[b>>2]+4>>2]);b=J[c+48>>2];if(b){d=J[c+16>>2];vj(a,d?d:b)}b=J[c+52>>2];if(b){d=J[c+20>>2];vj(a,d?d:b)}b=J[c+56>>2];if(b){d=J[c+24>>2];vj(a,d?d:b)}b=J[c+60>>2];if(b){d=J[c+28>>2];vj(a,d?d:b)}b=J[c+64>>2];if(b){d=J[c+32>>2];vj(a,d?d:b)}b=J[c+68>>2];if(b){d=J[c+36>>2];vj(a,d?d:b)}b=J[c+72>>2];if(b){d=J[c+40>>2];vj(a,d?d:b)}b=J[c+76>>2];if(!b){break b}d=a;a=J[c+44>>2];vj(d,a?a:b);break b}a=J[c+52>>2];J[b+12>>2]=J[c+48>>2];J[b+16>>2]=a;a=J[c+60>>2];J[b+20>>2]=J[c+56>>2];J[b+24>>2]=a;a=J[c+76>>2];J[b+36>>2]=J[c+72>>2];J[b+40>>2]=a;a=J[h+4>>2];J[b+28>>2]=J[h>>2];J[b+32>>2]=a;a=J[c+44>>2];J[b+68>>2]=J[c+40>>2];J[b+72>>2]=a;a=J[c+36>>2];J[b+60>>2]=J[c+32>>2];J[b+64>>2]=a;a=J[c+28>>2];J[b+52>>2]=J[c+24>>2];J[b+56>>2]=a;a=J[c+20>>2];J[b+44>>2]=J[c+16>>2];J[b+48>>2]=a;if(J[J[b+4>>2]+4>>2]){LQ(b);d=J[b>>2]}J[b+160>>2]=bj(J[d+20>>2]);J[b+164>>2]=Yi;J[b+176>>2]=bj(J[J[b>>2]+24>>2]);J[b+180>>2]=Yi;g=J[b+4>>2];i=J[J[g>>2]+4>>2];if(i){a=b+168|0;d=b+184|0;f=0;while(1){e=J[g>>2];if(M[e+4>>2]<=f>>>0){break a}j=f<<6;e=bj(J[j+J[e>>2]>>2]);h=Yi;e:{f:{if((e|0)==J[b+160>>2]&(h|0)==J[b+164>>2]){e=a;h=J[g>>2];if(M[h+4>>2]>f>>>0){break f}break a}if(J[b+176>>2]!=(e|0)|J[b+180>>2]!=(h|0)){break e}e=d;h=J[g>>2];if(M[h+4>>2]<=f>>>0){break a}}J[e>>2]=J[(j+J[h>>2]|0)+4>>2]}f=f+1|0;if((i|0)!=(f|0)){continue}break}}e=0}Ui=c+80|0;return e}Z(12664,55087,100,84789);B()}function rk(a,b){var c=0,d=0,e=0,f=0,g=Q(0),h=Q(0),i=0,j=0,k=0,l=0,m=0,n=0,o=0,p=0,q=0,r=0,s=0,t=0,u=Q(0),v=0,w=0,x=0,y=0,z=0,A=0,B=0,C=0;g=N[a+8>>2];h=N[a+56>>2];i=J[a+24>>2];j=J[a+28>>2];k=J[a+40>>2];l=J[a+44>>2];m=J[a>>2];n=J[a+4>>2];o=J[a+16>>2];p=J[a+20>>2];q=J[a+32>>2];r=J[a+36>>2];s=J[a+48>>2];t=J[a+52>>2];f=J[a+76>>2];c=Ui+-64|0;e=c+44|0;J[e>>2]=J[a+72>>2];J[e+4>>2]=f;e=J[a+84>>2];J[c+52>>2]=J[a+80>>2];J[c+56>>2]=e;J[c+60>>2]=J[a+88>>2];e=J[a+68>>2];J[c+36>>2]=J[a+64>>2];J[c+40>>2]=e;u=N[a+136>>2];e=J[a+96>>2];f=J[a+100>>2];v=J[a+104>>2];w=J[a+108>>2];x=J[a+112>>2];y=J[a+116>>2];z=J[a+120>>2];A=J[a+124>>2];B=J[a+128>>2];C=J[a+132>>2];d=J[a+156>>2];J[c+24>>2]=J[a+152>>2];J[c+28>>2]=d;d=J[a+148>>2];J[c+16>>2]=J[a+144>>2];J[c+20>>2]=d;N[a>>2]=N[b>>2];N[a+4>>2]=N[b+4>>2];N[a+8>>2]=N[b+8>>2];N[a+16>>2]=N[b+16>>2];N[a+20>>2]=N[b+20>>2];N[a+24>>2]=N[b+24>>2];N[a+28>>2]=N[b+28>>2];N[a+32>>2]=N[b+32>>2];N[a+36>>2]=N[b+36>>2];N[a+40>>2]=N[b+40>>2];N[a+44>>2]=N[b+44>>2];N[a+48>>2]=N[b+48>>2];N[a+52>>2]=N[b+52>>2];N[a+56>>2]=N[b+56>>2];d=J[b+68>>2];J[a+64>>2]=J[b+64>>2];J[a+68>>2]=d;d=J[b+76>>2];J[a+72>>2]=J[b+72>>2];J[a+76>>2]=d;d=J[b+84>>2];J[a+80>>2]=J[b+80>>2];J[a+84>>2]=d;J[a+88>>2]=J[b+88>>2];N[a+96>>2]=N[b+96>>2];N[a+100>>2]=N[b+100>>2];N[a+104>>2]=N[b+104>>2];N[a+108>>2]=N[b+108>>2];N[a+112>>2]=N[b+112>>2];N[a+116>>2]=N[b+116>>2];N[a+120>>2]=N[b+120>>2];N[a+124>>2]=N[b+124>>2];N[a+128>>2]=N[b+128>>2];N[a+132>>2]=N[b+132>>2];N[a+136>>2]=N[b+136>>2];d=J[b+148>>2];J[a+144>>2]=J[b+144>>2];J[a+148>>2]=d;d=J[b+156>>2];J[a+152>>2]=J[b+152>>2];J[a+156>>2]=d;J[b+48>>2]=s;J[b+52>>2]=t;J[b+32>>2]=q;J[b+36>>2]=r;J[b+16>>2]=o;J[b+20>>2]=p;J[b>>2]=m;J[b+4>>2]=n;J[b+40>>2]=k;J[b+44>>2]=l;J[b+24>>2]=i;J[b+28>>2]=j;N[b+56>>2]=h;N[b+8>>2]=g;a=J[c+40>>2];J[b+64>>2]=J[c+36>>2];J[b+68>>2]=a;a=J[c+48>>2];J[b+72>>2]=J[c+44>>2];J[b+76>>2]=a;a=J[c+56>>2];J[b+80>>2]=J[c+52>>2];J[b+84>>2]=a;J[b+88>>2]=J[c+60>>2];J[b+128>>2]=B;J[b+132>>2]=C;J[b+120>>2]=z;J[b+124>>2]=A;J[b+112>>2]=x;J[b+116>>2]=y;J[b+104>>2]=v;J[b+108>>2]=w;J[b+96>>2]=e;J[b+100>>2]=f;N[b+136>>2]=u;a=J[c+20>>2];J[b+144>>2]=J[c+16>>2];J[b+148>>2]=a;a=J[c+28>>2];J[b+152>>2]=J[c+24>>2];J[b+156>>2]=a}function Pu(a,b,c,d,e,f,g){var h=0,i=0,j=0,k=0,l=0,m=0,n=0,o=0,p=0,q=0,r=0;k=Ui-1056|0;Ui=k;J[k+1052>>2]=0;i=k+16|0;ip(b,i);l=bj(i);b=-3;a:{b:{c:{m=Yi;d:{if(xK(J[a+8408>>2],l,m,i,k+12|0)){break d}i=J[k+12>>2];J[e>>2]=i;e=J[g>>2];b=J[g+8>>2]-e|0;n=d>>>0>i>>>0?i:d;j=(d|0)==-1?i:n;if(b>>>0>>0){if(H[g+12|0]&1){break c}lj(j,1,g,g+8|0,g+4|0);e=J[g>>2];b=J[g+8>>2]-e|0}if(b>>>0>>0){break b}J[g+4>>2]=e+j;b=0;J[k+8>>2]=0;e:{f:{if(!j){d=0;break f}a=J[a+8408>>2];g:{if((d|0)!=-1){o=k+16|0;i=k+8|0;j=Ui-2192|0;Ui=j;p=J[a+52>>2];Tj(p);h:{d=J[a+4>>2];q=J[a>>2];i:{j:{if((d|0)!=(q|0)){d=d-q>>4;q=d>>>0<=1?1:d;while(1){d=J[a>>2];if(J[a+4>>2]-d>>4>>>0<=h>>>0){break a}r=d+(h<<4)|0;d=J[r+4>>2];d=Zi[J[J[d>>2]+36>>2]](J[d+4>>2],l,m,o,c,n,e,i)|0;if((d|0)!=-2){if(!d){Ls(J[r+4>>2],j+4|0);break j}d=(d|0)==-3?-9:-21;break i}h=h+1|0;if((q|0)!=(h|0)){continue}break}}d=-3;if(!J[a+40>>2]){break i}h=J[a+20>>2];if(!h){break i}h=J[J[a+16>>2]+(mxa(l,m,h)<<2)>>2];if((h|0)==-1){break i}o=J[a+24>>2];while(1){a=o+P(h,24)|0;if(J[a>>2]!=(l|0)|J[a+4>>2]!=(m|0)){h=J[a+16>>2];if((h|0)!=-1){continue}break i}break}d=J[a+12>>2];l=c>>>0>>0?c:d;m=d>>>0>>0;d=m?d-l|0:n;hj(e,J[a+8>>2]+(m?l:c)|0,d);J[i>>2]=d}d=0}Lj(p);Ui=j+2192|0;break h}break g}j=k+16|0;h=Ui-2192|0;Ui=h;n=J[a+52>>2];Tj(n);k:{c=J[a+4>>2];d=J[a>>2];l:{m:{if((c|0)!=(d|0)){c=c-d>>4;o=c>>>0<=1?1:c;c=0;while(1){d=J[a>>2];if(J[a+4>>2]-d>>4>>>0<=c>>>0){break a}p=d+(c<<4)|0;d=J[p+4>>2];d=Zi[J[J[d>>2]+32>>2]](J[d+4>>2],l,m,j,e,i)|0;if((d|0)!=-2){if(!d){Ls(J[p+4>>2],h+4|0);break m}d=(d|0)==-3?-9:-21;break l}c=c+1|0;if((o|0)!=(c|0)){continue}break}}d=-3;if(!J[a+40>>2]){break l}c=J[a+20>>2];if(!c){break l}c=J[J[a+16>>2]+(mxa(l,m,c)<<2)>>2];if((c|0)==-1){break l}j=J[a+24>>2];while(1){a=j+P(c,24)|0;if(J[a>>2]!=(l|0)|J[a+4>>2]!=(m|0)){c=J[a+16>>2];if((c|0)!=-1){continue}break l}break}d=-6;if(i>>>0>2]){break l}hj(e,J[a+8>>2],i)}d=0}Lj(n);Ui=h+2192|0;break k}J[k+8>>2]=J[g+4>>2]-J[g>>2]}if(d){break e}d=J[k+8>>2];e=J[g>>2];if(d>>>0>J[g+8>>2]-e>>>0){break b}}J[g+4>>2]=d+e;J[f>>2]=d;break d}J[g+4>>2]=J[g>>2];b=d}Ui=k+1056|0;return b}Z(151729,53895,501,2284);B()}Z(144782,53895,514,59583);B()}Z(145396,53895,487,84789);B()}function W$(a){a=a|0;var b=0,c=0,d=0,e=0,f=0,g=0,h=0,i=0,j=0,k=0,l=0,m=0,n=0,o=0,p=0,q=0,r=0,s=0,t=0;e=Ui-288|0;Ui=e;J[e+284>>2]=-1;h=_o(a,3,-1);b=e+156|0;ij(b,0,128);d=e+28|0;ij(d,0,128);gj(a,3);Fj(a,0,0);k=J[a+8>>2]-J[a+12>>2]>>4;Fj(a,0,0);m=J[a+8>>2]-J[a+12>>2]>>4;Fj(a,0,0);c=1;o=J[a+8>>2]-J[a+12>>2]>>4;g=b;b=e+284|0;IS(a,1,k,g,b);IS(a,2,k,d,b);if(kj(a,1)){b=J[a+8>>2];J[b+8>>2]=3;O[b>>3]=1;J[a+8>>2]=J[a+8>>2]+16;Ck(a,1);if(kj(a,-1)){while(1){b=fJ(a);a:{if((b|0)==-1){break a}mj(a,1433,5);Ck(a,-2);if(!kj(a,-1)){gj(a,-2);break a}uj(a,-2);Wk(a,1,1);d=ck(a,-1);gj(a,-2);if(!d){break a}d=J[a+8>>2];J[d+8>>2]=3;f=f+1|0;O[d>>3]=f|0;J[a+8>>2]=J[a+8>>2]+16;uj(a,-2);Kj(a,m);d=(e+156|0)+(b>>>3&536870908)|0;g=J[d>>2];J[d>>2]=oxa(-2,b)&g}gj(a,-2);b=J[a+8>>2];J[b+8>>2]=3;c=c+1|0;O[b>>3]=c>>>0;J[a+8>>2]=J[a+8>>2]+16;Ck(a,1);if(kj(a,-1)){continue}break}}gj(a,-2)}O[e+8>>3]=-1;p=(f|0)>0;O[e>>3]=p?0:h;Po(e);l=J[e+284>>2];r=l+1|0;s=e+156|0;t=e+28|0;c=Ui-16|0;Ui=c;while(1){h=Wq(e);b:{if(R(h)<2147483648){b=~~h;break b}b=-2147483648}J[c>>2]=b;J[c+4>>2]=b>>31;q=(h-+(b|0))*1e6;c:{if(R(q)<2147483648){b=~~q;break c}b=-2147483648}J[c+8>>2]=b;b=0;d=0;i=Ui-16|0;Ui=i;j=h>=0?c:0;if(j){b=J[j>>2];d=J[j+4>>2];g=J[j+8>>2]}else{g=0}d:{if(!((g|0)>=0&((d|0)>0|(d|0)>=0))){J[245744]=28;b=-1;break d}n=(g>>>0)/1e6|0;if(j){d=!(d^2147483647)&(b^-1)>>>0>>0;J[i+12>>2]=d?999999:g-P(n,1e6)|0;J[i+8>>2]=d?-1:b+n|0;b=i+8|0}else{b=0}b=Ti(r|0,s|0,t|0,0,b|0)|0;if(b>>>0>=4294963201){J[245744]=0-b;b=-1}}Ui=i+16|0;if(J[245744]==27&(b|0)<0){continue}break}Ui=c+16|0;e:{if(!(!p&(b|0)<=0)){c=0;if((l|0)>=0){while(1){if(J[(e+156|0)+(c>>>3&536870908)>>2]>>>c&1){b=J[a+8>>2];J[b+8>>2]=3;f=f+1|0;O[b>>3]=f|0;J[a+8>>2]=J[a+8>>2]+16;b=J[a+8>>2];J[b+8>>2]=3;O[b>>3]=c>>>0;J[a+8>>2]=J[a+8>>2]+16;Ck(a,k);Kj(a,m)}b=(c|0)!=(l|0);c=c+1|0;if(b){continue}break}c=0;f=0;while(1){if(J[(e+28|0)+(c>>>3&536870908)>>2]>>>c&1){b=J[a+8>>2];J[b+8>>2]=3;f=f+1|0;O[b>>3]=f|0;J[a+8>>2]=J[a+8>>2]+16;b=J[a+8>>2];J[b+8>>2]=3;O[b>>3]=c>>>0;J[a+8>>2]=J[a+8>>2]+16;Ck(a,k);Kj(a,o)}b=(c|0)!=(l|0);c=c+1|0;if(b){continue}break}}iI(a,m);iI(a,o);a=2;break e}f:{if(!b){mj(a,9580,7);break f}fj(a,74831,0)}a=3}Ui=e+288|0;return a|0}function bA(a,b,c,d){var e=0,f=0,g=0,h=0,i=0,j=0,k=0,l=0,m=0,n=0,o=0,p=0,q=0,r=0,s=0,t=0,u=0,v=0,w=0,x=0,y=0,z=0,A=0,B=0;m=J[a+48>>2];e=J[a+44>>2];f=J[a+40>>2];g=J[a+36>>2];h=J[a+32>>2];if(b){p=J[a+4>>2];u=(p>>>2|0)+p|0;j=J[a+8>>2];t=(j>>>2|0)+j|0;i=J[a+12>>2];r=i+(i>>>2|0)|0;q=J[a>>2];y=i;v=j;while(1){l=e;i=f;k=c+w|0;e=k;f=K[e|0]|K[e+1|0]<<8|(K[e+2|0]<<16|K[e+3|0]<<24);e=0;j=h;h=f+h|0;j=j>>>0>h>>>0?1:e;g=j+g|0;f=0;e=g>>>0>>0?f+1|0:e;f=K[k+4|0]|K[k+5|0]<<8|(K[k+6|0]<<16|K[k+7|0]<<24);j=f+g|0;g=i;i=f>>>0>j>>>0?e+1|0:e;g=g+i|0;e=0;e=g>>>0>>0?e+1|0:e;f=K[k+8|0]|K[k+9|0]<<8|(K[k+10|0]<<16|K[k+11|0]<<24);i=f+g|0;g=l;l=f>>>0>i>>>0?e+1|0:e;g=g+l|0;f=0;e=f;e=g>>>0>>0?e+1|0:e;f=g;g=K[k+12|0]|K[k+13|0]<<8|(K[k+14|0]<<16|K[k+15|0]<<24);f=f+g|0;k=(d+m|0)+(f>>>0>>0?e+1|0:e)|0;e=ixa(j,0,v,0);g=Yi;l=ixa(h,0,y,0);e=l+e|0;g=Yi+g|0;g=e>>>0>>0?g+1|0:g;m=ixa(i,0,p,0);l=m+e|0;e=Yi+g|0;e=l>>>0>>0?e+1|0:e;g=l;l=f;m=ixa(f,0,q,0);g=g+m|0;f=Yi+e|0;f=g>>>0>>0?f+1|0:f;m=ixa(k,0,r,0);g=m+g|0;e=Yi+f|0;z=g;m=g>>>0>>0?e+1|0:e;e=ixa(j,o,p,0);g=Yi;n=ixa(h,o,v,0);f=n+e|0;e=Yi+g|0;e=f>>>0>>0?e+1|0:e;g=ixa(i,o,q,0);f=g+f|0;e=Yi+e|0;e=f>>>0>>0?e+1|0:e;n=ixa(l,o,r,0);f=n+f|0;g=Yi+e|0;g=f>>>0>>0?g+1|0:g;n=ixa(t,0,k,0);e=n+f|0;f=Yi+g|0;A=e;n=e>>>0>>0?f+1|0:f;e=ixa(j,o,q,0);g=Yi;s=ixa(h,o,p,0);f=s+e|0;e=Yi+g|0;e=f>>>0>>0?e+1|0:e;g=ixa(i,o,r,0);f=g+f|0;e=Yi+e|0;e=f>>>0>>0?e+1|0:e;g=ixa(l,o,t,0);f=g+f|0;e=Yi+e|0;B=f;s=f>>>0>>0?e+1|0:e;e=ixa(j,o,r,0);f=Yi;h=ixa(h,o,q,0);e=h+e|0;g=Yi+f|0;g=e>>>0>>0?g+1|0:g;h=ixa(i,o,t,0);e=h+e|0;f=Yi+g|0;f=e>>>0>>0?f+1|0:f;h=ixa(l,o,u,0);g=h+e|0;e=Yi+f|0;j=g;h=g>>>0>>0?e+1|0:e;f=h+B|0;e=s;e=f>>>0>>0?e+1|0:e;g=f;f=ixa(u,0,k,0);h=g+f|0;e=Yi+e|0;i=f>>>0>h>>>0?e+1|0:e;e=i+A|0;f=n;g=e;i=e>>>0>>0?f+1|0:f;f=i+z|0;e=m;e=(f>>>0>>0?e+1|0:e)+P(k,q)|0;k=e&3;l=f;f=g;i=h;m=0;n=e&-4;g=e>>>2|0;e=0;h=g+j|0;e=h>>>0>>0?e+1|0:e;g=h;h=h+n|0;g=g>>>0>h>>>0?e+1|0:e;j=g+i|0;e=m;e=g>>>0>j>>>0?e+1|0:e;i=e+f|0;f=m;f=e>>>0>i>>>0?f+1|0:f;l=f+l|0;e=m;m=(f>>>0>l>>>0?e+1|0:e)+k|0;g=j;f=i;e=l;w=w+16|0;x=x+1|0;if((x|0)!=(b|0)){continue}break}}J[a+48>>2]=m;J[a+44>>2]=e;J[a+40>>2]=f;J[a+36>>2]=g;J[a+32>>2]=h}function Rqa(a,b,c,d){a=a|0;b=b|0;c=c|0;d=d|0;var e=0,f=Q(0),g=Q(0),h=Q(0),i=0;e=Ui-32|0;Ui=e;N[e+16>>2]=N[b>>2];f=N[b+4>>2];N[e+20>>2]=f;g=N[b+8>>2];J[e+28>>2]=0;N[e+24>>2]=g;h=N[c>>2];J[e+12>>2]=0;N[e+8>>2]=g;N[e+4>>2]=f;N[e>>2]=h;i=e+16|0;Zi[J[J[a>>2]+8>>2]](a,i,e,d);f=N[c>>2];N[e+16>>2]=f;N[e+20>>2]=N[b+4>>2];g=N[b+8>>2];J[e+28>>2]=0;N[e+24>>2]=g;N[e>>2]=f;f=N[c+4>>2];J[e+12>>2]=0;N[e+8>>2]=g;N[e+4>>2]=f;Zi[J[J[a>>2]+8>>2]](a,i,e,d);N[e+16>>2]=N[c>>2];f=N[c+4>>2];N[e+20>>2]=f;g=N[b+8>>2];J[e+28>>2]=0;N[e+24>>2]=g;h=N[b>>2];J[e+12>>2]=0;N[e+8>>2]=g;N[e+4>>2]=f;N[e>>2]=h;Zi[J[J[a>>2]+8>>2]](a,i,e,d);f=N[b>>2];N[e+16>>2]=f;N[e+20>>2]=N[c+4>>2];g=N[b+8>>2];J[e+28>>2]=0;N[e+24>>2]=g;N[e>>2]=f;f=N[b+4>>2];J[e+12>>2]=0;N[e+8>>2]=g;N[e+4>>2]=f;Zi[J[J[a>>2]+8>>2]](a,i,e,d);g=N[b>>2];N[e+16>>2]=g;f=N[b+4>>2];N[e+20>>2]=f;h=N[b+8>>2];J[e+28>>2]=0;N[e+24>>2]=h;N[e+4>>2]=f;N[e>>2]=g;g=N[c+8>>2];J[e+12>>2]=0;N[e+8>>2]=g;Zi[J[J[a>>2]+8>>2]](a,i,e,d);g=N[c>>2];N[e+16>>2]=g;f=N[b+4>>2];N[e+20>>2]=f;h=N[b+8>>2];J[e+28>>2]=0;N[e+24>>2]=h;N[e+4>>2]=f;N[e>>2]=g;g=N[c+8>>2];J[e+12>>2]=0;N[e+8>>2]=g;Zi[J[J[a>>2]+8>>2]](a,i,e,d);g=N[c>>2];N[e+16>>2]=g;f=N[c+4>>2];N[e+20>>2]=f;h=N[b+8>>2];J[e+28>>2]=0;N[e+24>>2]=h;N[e+4>>2]=f;N[e>>2]=g;g=N[c+8>>2];J[e+12>>2]=0;N[e+8>>2]=g;Zi[J[J[a>>2]+8>>2]](a,i,e,d);g=N[b>>2];N[e+16>>2]=g;f=N[c+4>>2];N[e+20>>2]=f;h=N[b+8>>2];J[e+28>>2]=0;N[e+24>>2]=h;N[e+4>>2]=f;N[e>>2]=g;g=N[c+8>>2];J[e+12>>2]=0;N[e+8>>2]=g;Zi[J[J[a>>2]+8>>2]](a,i,e,d);N[e+16>>2]=N[b>>2];f=N[b+4>>2];N[e+20>>2]=f;g=N[c+8>>2];J[e+28>>2]=0;N[e+24>>2]=g;h=N[c>>2];J[e+12>>2]=0;N[e+8>>2]=g;N[e+4>>2]=f;N[e>>2]=h;Zi[J[J[a>>2]+8>>2]](a,i,e,d);f=N[c>>2];N[e+16>>2]=f;N[e+20>>2]=N[b+4>>2];g=N[c+8>>2];J[e+28>>2]=0;N[e+24>>2]=g;N[e>>2]=f;f=N[c+4>>2];J[e+12>>2]=0;N[e+8>>2]=g;N[e+4>>2]=f;Zi[J[J[a>>2]+8>>2]](a,i,e,d);N[e+16>>2]=N[c>>2];f=N[c+4>>2];N[e+20>>2]=f;g=N[c+8>>2];J[e+28>>2]=0;N[e+24>>2]=g;h=N[b>>2];J[e+12>>2]=0;N[e+8>>2]=g;N[e+4>>2]=f;N[e>>2]=h;Zi[J[J[a>>2]+8>>2]](a,i,e,d);f=N[b>>2];N[e+16>>2]=f;N[e+20>>2]=N[c+4>>2];g=N[c+8>>2];J[e+28>>2]=0;N[e+24>>2]=g;N[e>>2]=f;f=N[b+4>>2];J[e+12>>2]=0;N[e+8>>2]=g;N[e+4>>2]=f;Zi[J[J[a>>2]+8>>2]](a,i,e,d);Ui=e+32|0} +function GL(a,b,c,d,e,f,g){var h=0,i=Q(0),j=Q(0),k=0,l=0,m=0,n=0,o=0;l=Ui-144|0;Ui=l;k=b;f=Q(Q(e+e)*f);e=Q(Q(Q(e*Q(-2))*e)+Q(1));i=Q(g*N[a+64>>2]);d=Q(d*i);c=Q(c*i);a:{b:{c:{d:{switch(J[b+4>>2]){case 0:h=nj(40);H[h+20|0]=K[k+20|0];m=J[k+16>>2];J[h+12>>2]=J[k+12>>2];J[h+16>>2]=m;m=J[k+8>>2];J[h+4>>2]=J[k+4>>2];J[h+8>>2]=m;J[h>>2]=247020;m=J[b+28>>2];J[h+24>>2]=J[b+24>>2];J[h+28>>2]=m;m=J[b+36>>2];J[h+32>>2]=J[b+32>>2];J[h+36>>2]=m;i=Q(g*N[b+24>>2]);j=Q(g*N[b+28>>2]);N[h+28>>2]=d+Q(Q(f*i)+Q(e*j));N[h+24>>2]=c+Q(Q(e*i)-Q(f*j));e=N[h+8>>2];if(H[a+92|0]&1){N[h+12>>2]=e;N[h+36>>2]=d/g;N[h+32>>2]=c/g}N[h+8>>2]=g*e;a=h;break c;case 1:a=nj(60);H[a+20|0]=K[k+20|0];h=J[k+16>>2];J[a+12>>2]=J[k+12>>2];J[a+16>>2]=h;h=J[k+8>>2];J[a+4>>2]=J[k+4>>2];J[a+8>>2]=h;J[a>>2]=247060;I[a+56>>1]=L[b+56>>1];h=J[b+28>>2];J[a+24>>2]=J[b+24>>2];J[a+28>>2]=h;h=J[b+36>>2];J[a+32>>2]=J[b+32>>2];J[a+36>>2]=h;h=J[b+44>>2];J[a+40>>2]=J[b+40>>2];J[a+44>>2]=h;h=J[b+52>>2];J[a+48>>2]=J[b+48>>2];J[a+52>>2]=h;if(K[a+56|0]==1){i=Q(g*N[b+40>>2]);j=Q(g*N[b+44>>2]);N[a+44>>2]=d+Q(Q(f*i)+Q(e*j));N[a+40>>2]=c+Q(Q(e*i)-Q(f*j))}i=Q(g*N[b+24>>2]);j=Q(g*N[b+28>>2]);N[a+28>>2]=d+Q(Q(f*i)+Q(e*j));N[a+24>>2]=c+Q(Q(e*i)-Q(f*j));i=Q(g*N[b+32>>2]);j=Q(g*N[b+36>>2]);N[a+36>>2]=d+Q(Q(f*i)+Q(e*j));N[a+32>>2]=c+Q(Q(e*i)-Q(f*j));if(K[a+57|0]!=1){break c}j=d;d=Q(g*N[b+48>>2]);i=Q(g*N[b+52>>2]);N[a+52>>2]=j+Q(Q(f*d)+Q(e*i));N[a+48>>2]=c+Q(Q(e*d)-Q(f*i));break c;case 2:a=nj(420);H[a+20|0]=K[k+20|0];h=J[k+16>>2];J[a+12>>2]=J[k+12>>2];J[a+16>>2]=h;h=J[k+8>>2];J[a+4>>2]=J[k+4>>2];J[a+8>>2]=h;J[a>>2]=247140;hj(a+24|0,b+24|0,396);h=J[b+416>>2];if((h|0)>0){m=b+160|0;b=0;while(1){n=b<<3;o=n+(l+16|0)|0;n=m+n|0;i=Q(g*N[n>>2]);j=Q(g*N[n+4>>2]);N[o+4>>2]=d+Q(Q(f*i)+Q(e*j));N[o>>2]=c+Q(Q(e*i)-Q(f*j));b=b+1|0;if((h|0)!=(b|0)){continue}break}}qz(a,l+16|0,h);break c;case 4:break d;default:break b}}a=nj(64);h=J[b+40>>2];j=d;d=Q(g*N[b+24>>2]);i=Q(g*N[b+28>>2]);N[l+12>>2]=j+Q(Q(f*d)+Q(e*i));N[l+8>>2]=c+Q(Q(e*d)-Q(f*i));m=J[b+56>>2];n=J[b+52>>2];c=N[b+44>>2];d=N[b+48>>2];b=J[l+12>>2];J[l>>2]=J[l+8>>2];J[l+4>>2]=b;a=TU(a,h,l,Q(g*c),Q(g*d),n,m)}b=a;if(!J[k+4>>2]){break a}}N[b+12>>2]=g}Ui=l+144|0;return b}function KZ(a,b,c){a=a|0;b=b|0;c=c|0;var d=0,e=0,f=0,g=0,h=0,i=0,j=0,k=0,l=0,m=0,n=0,o=0;f=Ui-144|0;Ui=f;e=-60;if(c>>>0<=64){i=a+228|0;a:{while(1){if((n|0)==257){e=-60;break a}d=J[a+224>>2];if(!d){e=-64;break a}e=-61;b:{c:{if((d|0)<=0){break c}n=n+1|0;k=0;g=0;while(1){j=P(g,20)+i|0;o=J[j+16>>2];J[f+12>>2]=0;d=f+16|0;e=Zi[J[j>>2]](J[j+4>>2],d,128,f+12|0)|0;if(e){break c}l=J[f+12>>2];if(l){m=g&255;e=Ui-80|0;Ui=e;d:{if(l>>>0>=65){h=Tt(d,l,e,0);if(h){break d}l=64;d=e}H[e+79|0]=l;H[e+78|0]=m;if(!J[a>>2]){h=as(a+8|0,0);if(h){break d}}J[a>>2]=1;m=a+8|0;h=$r(m,e+78|0,2);if(h){break d}h=$r(m,d,l)}Zi[J[66509]](e,0,64)|0;Ui=e+80|0;e=h;if(e){break a}J[j+8>>2]=J[j+8>>2]+J[f+12>>2]}k=(o|0)==1?1:k;g=g+1|0;if((g|0)>2]){continue}break}e=-61;if(k){break b}}Zi[J[66509]](f+16|0,0,128)|0;break a}Zi[J[66509]](f+16|0,0,128)|0;h=J[a+224>>2];if((h|0)>0){k=0;g=1;d=0;if(h>>>0>=4){l=h&2147483644;e=0;while(1){j=g;g=P(d,20)+i|0;j=M[g+8>>2]>=M[g+12>>2]?j:0;g=P(d|1,20)+i|0;j=M[g+8>>2]>=M[g+12>>2]?j:0;g=P(d|2,20)+i|0;j=M[g+8>>2]>=M[g+12>>2]?j:0;g=P(d|3,20)+i|0;g=M[g+8>>2]>=M[g+12>>2]?j:0;d=d+4|0;e=e+4|0;if((l|0)!=(e|0)){continue}break}}e=h&3;if(e){while(1){h=P(d,20)+i|0;g=M[h+8>>2]>=M[h+12>>2]?g:0;d=d+1|0;k=k+1|0;if((e|0)!=(k|0)){continue}break}}if(!g){continue}}break}J[f+72>>2]=0;J[f+76>>2]=0;d=f- -64|0;J[d>>2]=0;J[d+4>>2]=0;J[f+56>>2]=0;J[f+60>>2]=0;J[f+48>>2]=0;J[f+52>>2]=0;J[f+40>>2]=0;J[f+44>>2]=0;J[f+32>>2]=0;J[f+36>>2]=0;J[f+24>>2]=0;J[f+28>>2]=0;J[f+16>>2]=0;J[f+20>>2]=0;d=a+8|0;h=f+16|0;e=Ut(d,h);if(e){break a}if(d){Zi[J[66509]](d,0,216)|0}bs(d);e=as(d,0);if(e){break a}e=$r(d,h,64);if(e){break a}e=Tt(h,64,h,0);if(e){break a}a=J[a+224>>2];e:{if((a|0)<=0){break e}g=0;d=0;if(a>>>0>=8){e=a&2147483640;k=0;while(1){J[(P(d,20)+i|0)+8>>2]=0;J[(P(d|1,20)+i|0)+8>>2]=0;J[(P(d|2,20)+i|0)+8>>2]=0;J[(P(d|3,20)+i|0)+8>>2]=0;J[(P(d|4,20)+i|0)+8>>2]=0;J[(P(d|5,20)+i|0)+8>>2]=0;J[(P(d|6,20)+i|0)+8>>2]=0;J[(P(d|7,20)+i|0)+8>>2]=0;d=d+8|0;k=k+8|0;if((e|0)!=(k|0)){continue}break}}a=a&7;if(!a){break e}while(1){J[(P(d,20)+i|0)+8>>2]=0;d=d+1|0;g=g+1|0;if((a|0)!=(g|0)){continue}break}}hj(b,f+16|0,c);e=0}Zi[J[66509]](f+16|0,0,64)|0}Ui=f+144|0;return e|0}function Fz(a){var b=0,c=0,d=0,e=0,f=0;b=J[a+92>>2];if(!b){cj(J[a+20>>2]);b=J[a+92>>2]}c=J[a+24>>2];a:{if((c|0)>0){if(b){break a}b=0;while(1){if(!J[a+92>>2]){cj(J[J[a+28>>2]+(b<<2)>>2]);c=J[a+24>>2]}b=b+1|0;if((c|0)>(b|0)){continue}break}b=J[a+92>>2]}if(b){break a}cj(J[a+28>>2])}if(!(!J[a+408>>2]|J[a+276>>2]<=0)){while(1){b=J[a+92>>2];d=J[a+408>>2]+P(e,24)|0;b:{if(J[d+16>>2]){c=J[a+136>>2];f=K[d+13|0];if(J[(c+P(f,2096)|0)+4>>2]>0){if(b){break b}b=0;while(1){if(!J[a+92>>2]){cj(J[J[d+16>>2]+(b<<2)>>2]);f=K[d+13|0];c=J[a+136>>2]}b=b+1|0;if((b|0)>2]){continue}break}b=J[a+92>>2]}if(b){break b}cj(J[d+16>>2]);b=J[a+92>>2]}if(b){break b}cj(J[d+20>>2])}e=e+1|0;if((e|0)>2]){continue}break}}b=J[a+92>>2];c:{if(J[a+136>>2]){if(J[a+132>>2]>0){if(b){break c}b=0;while(1){d:{if(J[a+92>>2]){break d}c=J[a+136>>2]+P(b,2096)|0;cj(J[c+8>>2]);if(J[a+92>>2]){break d}cj(J[c+28>>2]);if(J[a+92>>2]){break d}cj(J[c+32>>2]);if(J[a+92>>2]){break d}cj(J[c+2084>>2]);if(J[a+92>>2]){break d}c=J[c+2088>>2];cj(c?c-4|0:0)}b=b+1|0;if((b|0)>2]){continue}break}b=J[a+92>>2]}if(b){break c}cj(J[a+136>>2]);b=J[a+92>>2]}if(b){break c}cj(J[a+272>>2]);b=J[a+92>>2];if(b){break c}cj(J[a+408>>2]);b=J[a+92>>2]}e:{if(!J[a+416>>2]){break e}c=J[a+412>>2];if((c|0)>0){if(b){break e}b=0;while(1){if(!J[a+92>>2]){cj(J[(J[a+416>>2]+P(b,40)|0)+4>>2]);c=J[a+412>>2]}b=b+1|0;if((c|0)>(b|0)){continue}break}b=J[a+92>>2]}if(b){break e}cj(J[a+416>>2]);b=J[a+92>>2]}f:{if(J[a+4>>2]>0){if(b){break f}d=a+1008|0;e=a+940|0;f=a+812|0;b=0;while(1){g:{if(J[a+92>>2]){break g}c=b<<2;cj(J[c+f>>2]);if(J[a+92>>2]){break g}cj(J[c+e>>2]);if(J[a+92>>2]){break g}cj(J[c+d>>2])}if(b>>>0<=14){b=b+1|0;if((b|0)>2]){continue}}break}b=J[a+92>>2]}if(b){break f}cj(J[a+1080>>2]);if(J[a+92>>2]){break f}cj(J[a+1088>>2]);if(J[a+92>>2]){break f}cj(J[a+1096>>2]);if(J[a+92>>2]){break f}cj(J[a+1104>>2]);if(J[a+92>>2]){break f}cj(J[a+1112>>2]);if(J[a+92>>2]){break f}cj(J[a+1084>>2]);if(J[a+92>>2]){break f}cj(J[a+1092>>2]);if(J[a+92>>2]){break f}cj(J[a+1100>>2]);if(J[a+92>>2]){break f}cj(J[a+1108>>2]);if(J[a+92>>2]){break f}cj(J[a+1116>>2])}if(J[a+40>>2]){vk(J[a+32>>2])}}function Rua(a,b){a=a|0;b=b|0;var c=0,d=Q(0),e=0,f=Q(0),g=Q(0),h=Q(0),i=Q(0),j=Q(0),k=Q(0),l=Q(0),m=Q(0),n=Q(0),o=Q(0),p=Q(0),q=Q(0),r=0,s=Q(0),t=Q(0),u=Q(0),v=Q(0),w=Q(0),x=Q(0);c=Ui-32|0;Ui=c;m=N[a+176>>2];n=N[a+180>>2];f=Q(m+n);r=J[b+28>>2];e=r+P(J[a+132>>2],12)|0;h=N[e+8>>2];s=N[e+4>>2];t=N[e>>2];e=P(J[a+128>>2],12)+r|0;i=N[e+8>>2];u=N[e+4>>2];v=N[e>>2];e=J[a+224>>2];if(!((e|0)==3|K[a+100|0]!=1|f==Q(0))){d=Q(N[b>>2]*N[a+104>>2]);g=Q(-d);k=N[a+96>>2];l=Q(k-Q(N[a+220>>2]*Q(Q(h-i)-N[a+108>>2])));d=d>l?l:d;d=d>2]=d;d=Q(d-k);h=Q(Q(n*d)+h);i=Q(i-Q(m*d))}w=N[a+172>>2];x=N[a+168>>2];k=Q(Q(Q(s+Q(h*N[a+144>>2]))-u)-Q(i*N[a+136>>2]));l=Q(Q(Q(t-Q(h*N[a+148>>2]))-v)+Q(i*N[a+140>>2]));a:{if(!(!e|K[a+112|0]!=1|f==Q(0))){N[c+24>>2]=k;N[c+20>>2]=l;N[c+28>>2]=h-i;e=a+184|0;rz(c+8|0,e,c+20|0);g=N[c+16>>2];o=Q(-g);p=N[c+12>>2];f=Q(-p);q=N[c+8>>2];d=Q(-q);b:{c:{switch(J[a+224>>2]-1|0){case 2:N[a+84>>2]=N[a+84>>2]-q;N[a+88>>2]=N[a+88>>2]-p;N[a+92>>2]=N[a+92>>2]-g;break b;case 0:j=N[a+92>>2];if(j>2];N[c+12>>2]=Q(j*N[a+212>>2])-k;N[c+8>>2]=Q(j*f)-l;zt(c,e,c+8|0);g=N[a+92>>2];f=N[c+4>>2];d=N[c>>2];J[a+92>>2]=0;N[a+84>>2]=d+N[a+84>>2];N[a+88>>2]=f+N[a+88>>2];o=Q(-g);break b}N[a+92>>2]=j-g;N[a+84>>2]=N[a+84>>2]-q;N[a+88>>2]=N[a+88>>2]-p;break b;case 1:break c;default:break b}}j=N[a+92>>2];if(j>g){f=N[a+208>>2];N[c+12>>2]=Q(j*N[a+212>>2])-k;N[c+8>>2]=Q(j*f)-l;zt(c,e,c+8|0);g=N[a+92>>2];f=N[c+4>>2];d=N[c>>2];J[a+92>>2]=0;N[a+84>>2]=d+N[a+84>>2];N[a+88>>2]=f+N[a+88>>2];o=Q(-g);break b}N[a+92>>2]=j-g;N[a+84>>2]=N[a+84>>2]-q;N[a+88>>2]=N[a+88>>2]-p}h=Q(Q(n*Q(o+Q(Q(N[a+144>>2]*f)-Q(N[a+148>>2]*d))))+h);i=Q(i-Q(m*Q(o+Q(Q(N[a+136>>2]*f)-Q(N[a+140>>2]*d)))));break a}N[c+12>>2]=-k;N[c+8>>2]=-l;zt(c+20|0,a+184|0,c+8|0);d=N[c+20>>2];N[a+84>>2]=d+N[a+84>>2];f=N[c+24>>2];N[a+88>>2]=f+N[a+88>>2];h=Q(Q(n*Q(Q(f*N[a+144>>2])-Q(d*N[a+148>>2])))+h);i=Q(i-Q(m*Q(Q(f*N[a+136>>2])-Q(d*N[a+140>>2]))))}e=J[b+28>>2]+P(J[a+128>>2],12)|0;N[e+4>>2]=u-Q(x*f);N[e>>2]=v-Q(x*d);e=J[b+28>>2];N[(e+P(J[a+128>>2],12)|0)+8>>2]=i;e=e+P(J[a+132>>2],12)|0;N[e+4>>2]=s+Q(w*f);N[e>>2]=t+Q(w*d);N[(J[b+28>>2]+P(J[a+132>>2],12)|0)+8>>2]=h;Ui=c+32|0}function Wia(a){a=a|0;var b=0,c=0,d=0,e=0,f=0,g=0,h=0;g=Ui-16|0;Ui=g;e=J[a>>2];f=J[e>>2];b=ij(nj(148),0,148);J[b+52>>2]=0;J[b+56>>2]=0;J[b+48>>2]=-1;J[b+60>>2]=0;J[b+64>>2]=0;J[b+76>>2]=0;J[b+80>>2]=0;J[b+84>>2]=0;J[b+88>>2]=0;J[b+108>>2]=0;J[b+112>>2]=0;J[b+116>>2]=0;J[b+120>>2]=0;d=J[a+16>>2];c=J[e+8>>2];c=c>>>0>d>>>0?d:c;J[g+12>>2]=c;d=nj(132);J[d>>2]=0;J[d+4>>2]=0;J[d+48>>2]=-1;J[d+40>>2]=0;J[d+44>>2]=0;J[d+32>>2]=0;J[d+36>>2]=0;J[d+24>>2]=0;J[d+28>>2]=0;J[d+16>>2]=0;J[d+20>>2]=0;J[d+8>>2]=0;J[d+12>>2]=0;h=ij(d+52|0,0,80);BC(d,J[g+12>>2]);a:{if(H[d+64|0]&1){break a}lj(0,64,h,d+60|0,d+56|0);J[b+124>>2]=d;BC(b,c);if(H[b+64|0]&1){break a}lj(c,336,b+52|0,b+60|0,b+56|0);c=J[f+2480>>2];d=Fq();xm(d,45222,3,0);xm(d,50321,3,0);xm(d,13937,4,0);xm(d,32861,4,0);xm(d,111479,2,0);xm(d,110055,2,0);f=gy(1);xm(f,71642,16,0);xm(f,50317,16,0);J[b+132>>2]=0;J[b+68>>2]=Zi[J[79404]](c,d);J[b+72>>2]=Zi[J[79404]](c,f);J[b+128>>2]=Zi[J[79396]](c);c=im(J[e>>2],0);H[b+144|0]=0;J[b+92>>2]=c;J[b+96>>2]=nj(64);c=nj(260);J[c>>2]=16;J[b+100>>2]=ij(c+4|0,0,256);J[b+104>>2]=nj(64);c=im(J[e>>2],0);J[J[b+96>>2]>>2]=c;J[J[b+104>>2]>>2]=0;c=im(J[e>>2],0);J[J[b+96>>2]+4>>2]=c;J[J[b+104>>2]+4>>2]=0;c=im(J[e>>2],0);J[J[b+96>>2]+8>>2]=c;J[J[b+104>>2]+8>>2]=0;c=im(J[e>>2],0);J[J[b+96>>2]+12>>2]=c;J[J[b+104>>2]+12>>2]=0;c=im(J[e>>2],0);J[J[b+96>>2]+16>>2]=c;J[J[b+104>>2]+16>>2]=0;c=im(J[e>>2],0);J[J[b+96>>2]+20>>2]=c;J[J[b+104>>2]+20>>2]=0;c=im(J[e>>2],0);J[J[b+96>>2]+24>>2]=c;J[J[b+104>>2]+24>>2]=0;c=im(J[e>>2],0);J[J[b+96>>2]+28>>2]=c;J[J[b+104>>2]+28>>2]=0;c=im(J[e>>2],0);J[J[b+96>>2]+32>>2]=c;J[J[b+104>>2]+32>>2]=0;c=im(J[e>>2],0);J[J[b+96>>2]+36>>2]=c;J[J[b+104>>2]+36>>2]=0;c=im(J[e>>2],0);J[J[b+96>>2]+40>>2]=c;J[J[b+104>>2]+40>>2]=0;c=im(J[e>>2],0);J[J[b+96>>2]+44>>2]=c;J[J[b+104>>2]+44>>2]=0;c=im(J[e>>2],0);J[J[b+96>>2]+48>>2]=c;J[J[b+104>>2]+48>>2]=0;c=im(J[e>>2],0);J[J[b+96>>2]+52>>2]=c;J[J[b+104>>2]+52>>2]=0;c=im(J[e>>2],0);J[J[b+96>>2]+56>>2]=c;J[J[b+104>>2]+56>>2]=0;c=im(J[e>>2],0);J[J[b+96>>2]+60>>2]=c;J[J[b+104>>2]+60>>2]=0;ll(d);ll(f);J[J[a+12>>2]>>2]=b;vq(J[e+4>>2],751,b);Ui=g+16|0;return 0}Z(151729,53895,501,2284);B()}function Daa(a,b,c,d,e){a=a|0;b=b|0;c=c|0;d=d|0;e=e|0;var f=0,g=0,h=0,i=0,j=0,k=0,l=0;g=Ui-48|0;Ui=g;a:{b:{f=J[79491];c:{if(K[f+220|0]&64){if((b|0)==2097152|b>>>0>2097152){break b}d:{if(a+1>>>0<2){break d}h=a&65535;if(h>>>0>=M[f+100>>2]){break a}j=J[J[f+92>>2]+(h<<2)>>2];if(!j){break d}k=L[J[f+96>>2]+(h<<1)>>1]==(a>>>16|0)?j:0}J[k+60>>2]=J[k+60>>2]|1<>2];J[g+40>>2]=J[c+40>>2];J[g+44>>2]=h;h=J[c+36>>2];J[g+32>>2]=J[c+32>>2];J[g+36>>2]=h;h=J[c+28>>2];J[g+24>>2]=J[c+24>>2];J[g+28>>2]=h;h=J[c+20>>2];J[g+16>>2]=J[c+16>>2];J[g+20>>2]=h;h=J[c+12>>2];J[g+8>>2]=J[c+8>>2];J[g+12>>2]=h;h=J[c+4>>2];J[g>>2]=J[c>>2];J[g+4>>2]=h;j=J[f>>2];Tj(j);e:{f:{g:{h:{i:{j:{c=L[f+24>>1];if((c|0)==L[f+26>>1]){if(c>>>0>=65472){break j}k=J[f+20>>2];i=c- -64|0;l=i&65535;h=sj(l<<1);J[f+20>>2]=h;h=hj(h,k,c<<1);I[f+24>>1]=i;while(1){I[(c<<1)+h>>1]=c;i=c+1|0;I[(i<<1)+h>>1]=i;i=c+2|0;I[(i<<1)+h>>1]=i;i=c+3|0;I[(i<<1)+h>>1]=i;i=c+4|0;I[(i<<1)+h>>1]=i;i=c+5|0;I[(i<<1)+h>>1]=i;i=c+6|0;I[(i<<1)+h>>1]=i;i=c+7|0;I[(i<<1)+h>>1]=i;c=c+8|0;if((l|0)!=(c|0)){continue}break}cj(k);if(H[f+16|0]&1){break i}lj(L[f+24>>1],64,f+4|0,f+12|0,f+8|0);J[f+8>>2]=J[f+12>>2]}h=J[f+20>>2];if(!h){break h}c=L[f+26>>1];if(c>>>0>=L[f+24>>1]){break g}I[f+26>>1]=c+1;c=L[h+(c<<1)>>1];h=J[f+8>>2];f=J[f+4>>2];if(c>>>0>=h-f>>6>>>0){break f}f=f+(c<<6)|0;J[f>>2]=a;J[f+4>>2]=b;a=J[g+4>>2];J[f+8>>2]=J[g>>2];J[f+12>>2]=a;a=J[g+12>>2];J[f+16>>2]=J[g+8>>2];J[f+20>>2]=a;a=J[g+20>>2];J[f+24>>2]=J[g+16>>2];J[f+28>>2]=a;a=J[g+28>>2];J[f+32>>2]=J[g+24>>2];J[f+36>>2]=a;a=J[g+36>>2];J[f+40>>2]=J[g+32>>2];J[f+44>>2]=a;a=K[g+43|0]|K[g+44|0]<<8|(K[g+45|0]<<16|K[g+46|0]<<24);b=K[g+39|0]|K[g+40|0]<<8|(K[g+41|0]<<16|K[g+42|0]<<24);H[f+47|0]=b;H[f+48|0]=b>>>8;H[f+49|0]=b>>>16;H[f+50|0]=b>>>24;H[f+51|0]=a;H[f+52|0]=a>>>8;H[f+53|0]=a>>>16;H[f+54|0]=a>>>24;J[f+60>>2]=e;J[f+56>>2]=d;Lj(j);break e}Z(2627,54340,112,2284);B()}Z(151729,53895,501,2284);B()}Z(49493,54340,151,43112);B()}Z(2701,54340,152,43112);B()}Z(145396,53895,487,84789);B()}a=J[79491];Qp(J[a+52>>2],935,936,a,c);break c}Zi[J[79456]](a,b,c)}Ui=g+48|0;return}Z(94863,55553,306,33926);B()}Z(2686,54166,244,5438);B()}function tx(a,b,c,d){var e=0,f=0,g=0,h=0,i=0;f=Ui-192|0;Ui=f;pj(f+172|0,a,0,37704,415);g=Jw(a,b);a:{b:{c:{d:{e:{e=J[d+4>>2];f:{if(!e){break f}e=J[J[d>>2]+((g>>>0)%(e>>>0)<<2)>>2];if((e|0)==-1){break f}h=J[d+8>>2];while(1){e=h+P(e,12)|0;if(J[e>>2]==(g|0)){break e}e=J[e+8>>2];if((e|0)!=-1){continue}break}}e=(J[d+16>>2]-J[d+8>>2]|0)/12|0;if((e|0)==J[d+24>>2]){e=(e<<1)+20|0;iN(d,(e>>>0)/3|0,e)}H[f+171|0]=1;jN(d,g,f+171|0);uj(a,b);b=J[a+8>>2];J[b+8>>2]=0;J[a+8>>2]=b+16;if(!$j(a,-2)){J[f>>2]=g;Im(c,84748,f);gj(a,-2);break a}J[f+144>>2]=g;Im(c,84778,f+144|0);b=J[c+12>>2]+2|0;J[c+12>>2]=(b|0)>0?b:0;J[f+128>>2]=158859;Im(c,154860,f+128|0);b=kj(a,-1);uj(a,-2);rj(a,-10002,56236);Pk(a,-2);Wk(a,1,1);e=Ij(a,-1,0);if(!e){break b}J[f+112>>2]=e;Im(c,154177,f+112|0);gj(a,-2);g:{h:{switch(b-4|0){case 0:J[f+96>>2]=Ij(a,-1,0);Im(c,151908,f+96|0);break g;case 1:tx(a,-1,c,d);break g;default:break h}}uj(a,-1);rj(a,-10002,56236);Pk(a,-2);Wk(a,1,1);b=Ij(a,-1,0);if(!b){break c}J[f+80>>2]=b;Im(c,31902,f+80|0);gj(a,-2)}gj(a,-2);if($j(a,-2)){while(1){J[f+64>>2]=135341;Im(c,154860,f- -64|0);b=kj(a,-1);uj(a,-2);rj(a,-10002,56236);Pk(a,-2);Wk(a,1,1);e=Ij(a,-1,0);if(!e){break b}J[f+48>>2]=e;Im(c,154177,f+48|0);gj(a,-2);i:{j:{switch(b-4|0){case 1:tx(a,-1,c,d);break i;case 0:J[f+32>>2]=Ij(a,-1,0);Im(c,151908,f+32|0);break i;default:break j}}uj(a,-1);rj(a,-10002,56236);Pk(a,-2);Wk(a,1,1);b=Ij(a,-1,0);if(!b){break c}J[f+16>>2]=b;Im(c,31902,f+16|0);gj(a,-2)}gj(a,-2);if($j(a,-2)){continue}break}}b=J[c+12>>2]-2|0;J[c+12>>2]=(b|0)>0?b:0;Im(c,158634,0);Im(c,1121,0);b=J[d+4>>2];if(!b){break d}k:{l:{i=J[d>>2]+((g>>>0)%(b>>>0)<<2)|0;e=J[i>>2];if((e|0)!=-1){b=0;h=J[d+8>>2];c=h+P(e,12)|0;if(J[c>>2]==(g|0)){break k}break l}Z(85666,55629,340,62656);B()}while(1){b=c;e=J[c+8>>2];if((e|0)!=-1){c=h+P(e,12)|0;if(J[c>>2]!=(g|0)){continue}break k}break}Z(152754,55629,366,62656);B()}J[d+24>>2]=J[d+24>>2]-1;c=b?b+8|0:i;b=h+P(e,12)|0;J[c>>2]=J[b+8>>2];c=J[d+20>>2];J[d+20>>2]=e;J[b+8>>2]=c;gj(a,-2);break a}J[f+160>>2]=g;Im(c,84761,f+160|0);break a}Z(113800,55629,334,62656);B()}gj(a,-2);fj(a,145858,0);break a}gj(a,-2);fj(a,145858,0)}oj(f+172|0);Ui=f+192|0}function vT(a){a=a|0;var b=0,c=0,d=0;J[a>>2]=245396;if(K[a+12|0]==1){c=J[a+8>>2];a:{if(J[c+8>>2]){break a}b=c;b:{if(K[b+16|0]){break b}d=J[b>>2];if(!d){break b}if(d){J[83765]=J[83765]+1;Zi[J[61751]](J[d-4>>2])}b=J[a+8>>2]}J[c+8>>2]=0;J[c>>2]=0;if(J[b+8>>2]){c=b;break a}c=b;c:{if(K[b+16|0]){break c}d=J[b>>2];c=b;if(!d){break c}if(d){J[83765]=J[83765]+1;Zi[J[61751]](J[d-4>>2])}c=J[a+8>>2]}J[b+8>>2]=0;J[b>>2]=0}if(c){J[83765]=J[83765]+1;Zi[J[61751]](J[c-4>>2])}}if(K[a+28|0]==1){b=J[J[a+24>>2]+16>>2];if(b){J[83765]=J[83765]+1;Zi[J[61751]](J[b-4>>2])}b=J[a+24>>2];if(b){J[83765]=J[83765]+1;Zi[J[61751]](J[b-4>>2])}}if(K[a+20|0]==1){b=J[J[a+16>>2]+16>>2];if(b){J[83765]=J[83765]+1;Zi[J[61751]](J[b-4>>2])}b=J[a+16>>2];if(b){J[83765]=J[83765]+1;Zi[J[61751]](J[b-4>>2])}}b=J[a+40>>2];Zi[J[J[b>>2]>>2]](b)|0;b=J[a+40>>2];if(b){J[83765]=J[83765]+1;Zi[J[61751]](J[b-4>>2])}b=J[a+44>>2];Zi[J[J[b>>2]>>2]](b)|0;b=J[a+44>>2];if(b){J[83765]=J[83765]+1;Zi[J[61751]](J[b-4>>2])}b=J[a+48>>2];Zi[J[J[b>>2]>>2]](b)|0;b=J[a+48>>2];if(b){J[83765]=J[83765]+1;Zi[J[61751]](J[b-4>>2])}b=J[a+52>>2];Zi[J[J[b>>2]>>2]](b)|0;b=J[a+52>>2];if(b){J[83765]=J[83765]+1;Zi[J[61751]](J[b-4>>2])}b=J[a+56>>2];Zi[J[J[b>>2]>>2]](b)|0;b=J[a+56>>2];if(b){J[83765]=J[83765]+1;Zi[J[61751]](J[b-4>>2])}b=J[a+60>>2];Zi[J[J[b>>2]>>2]](b)|0;b=J[a+60>>2];if(b){J[83765]=J[83765]+1;Zi[J[61751]](J[b-4>>2])}b=J[a+64>>2];Zi[J[J[b>>2]>>2]](b)|0;b=J[a+64>>2];if(b){J[83765]=J[83765]+1;Zi[J[61751]](J[b-4>>2])}b=J[a+72>>2];Zi[J[J[b>>2]>>2]](b)|0;b=J[a+72>>2];if(b){J[83765]=J[83765]+1;Zi[J[61751]](J[b-4>>2])}b=J[a+76>>2];Zi[J[J[b>>2]>>2]](b)|0;b=J[a+76>>2];if(b){J[83765]=J[83765]+1;Zi[J[61751]](J[b-4>>2])}b=J[a+68>>2];Zi[J[J[b>>2]>>2]](b)|0;b=J[a+68>>2];if(b){J[83765]=J[83765]+1;Zi[J[61751]](J[b-4>>2])}b=J[a+84>>2];Zi[J[J[b>>2]>>2]](b)|0;b=J[a+84>>2];if(b){J[83765]=J[83765]+1;Zi[J[61751]](J[b-4>>2])}b=J[a+80>>2];Zi[J[J[b>>2]>>2]](b)|0;b=J[a+80>>2];if(b){J[83765]=J[83765]+1;Zi[J[61751]](J[b-4>>2])}b=J[a+32>>2];if(b){J[83765]=J[83765]+1;Zi[J[61751]](J[b-4>>2])}b=J[a+36>>2];Zi[J[J[b>>2]>>2]](b)|0;b=J[a+36>>2];if(b){J[83765]=J[83765]+1;Zi[J[61751]](J[b-4>>2])}return a|0}function M5(a){a=a|0;var b=0,c=0,d=0,e=0,f=0,g=0,h=0,i=0,j=0,k=0,l=0,m=0;d=Ui-304|0;Ui=d;i=pj(d+284|0,a,0,37616,1409);b=J[a+8>>2]-J[a+12>>2]|0;Bj(a);g=qj(a,-1,J[84364],139081);gj(a,-2);if(b>>4==J[a+8>>2]-J[a+12>>2]>>4){a:{if(kk(a,1)){j=sl(a,1);break a}l=mk(a,1);m=Yi;j=0}b:{c:{d:{e:{f:{if(kk(a,2)){h=ok(a,2);g:{if(h<0x10000000000000000&h>=0){c=~~h>>>0;if(R(h)>=1){b=~~(h>0?T(V(h*2.3283064365386963e-10),4294967295):W((h-+(~~h>>>0>>>0))*2.3283064365386963e-10))>>>0}else{b=0}break g}b=0}f=b;break f}if(!Lp(a,2)){if(!Mk(a,2)){break d}}b=mk(a,2);k=Yi;c=J[g+20>>2];h:{if(!c){break h}c=J[J[g+16>>2]+(mxa(b,k,c)<<2)>>2];if((c|0)==-1){break h}f=J[g+24>>2];while(1){e=(c<<5)+f|0;if((b|0)==J[e>>2]&(k|0)==J[e+4>>2]){break h}c=J[e+24>>2];if((c|0)!=-1){continue}break}e=0}b=e?e+8|0:0;if(J[b+8>>2]!=2){break e}c=J[b>>2];b=J[b+4>>2];f=2}if(ur(J[J[g+304>>2]+2480>>2],c,b)){break c}J[d+116>>2]=b>>>0>2?102398:J[(b<<2)+239944>>2];J[d+112>>2]=c;a=d+144|0;Gj(a,128,136462,d+112|0);J[d+96>>2]=a;a=Jj(i,127336,d+96|0);break b}a=Jj(i,15600,0);break b}J[d+132>>2]=j;J[d+128>>2]=35504;a=Jj(i,116998,d+128|0);break b}i:{j:{k:{switch(f-1|0){case 1:l:{if(!kk(a,3)){e=1;break l}e=Ej(a,3);f=e-1|0;if(1<>>0<=31:0){break l}J[d+80>>2]=e;e=fj(a,133241,d+80|0)}a=Zi[J[79450]](c,b,e)|0;f=Yi;if(a|f){break j}J[d+52>>2]=b>>>0>2?102398:J[(b<<2)+239944>>2];J[d+48>>2]=c;a=d+144|0;Gj(a,128,136462,d+48|0);J[d+36>>2]=nP(e);J[d+32>>2]=a;a=Jj(i,131814,d+32|0);break b;case 0:break k;default:break i}}if(!(b|c)){break i}a=c;f=b}c=d+144|0;J[c+24>>2]=a;J[c+28>>2]=f;J[c+16>>2]=j;J[c+20>>2]=0;J[c+8>>2]=l;J[c+12>>2]=m;J[c>>2]=2;b=J[g+4>>2];if((b|0)!=J[g+8>>2]){J[g+4>>2]=b+40;a=J[c+36>>2];J[b+32>>2]=J[c+32>>2];J[b+36>>2]=a;a=J[c+28>>2];J[b+24>>2]=J[c+24>>2];J[b+28>>2]=a;a=J[c+20>>2];J[b+16>>2]=J[c+16>>2];J[b+20>>2]=a;a=J[c+12>>2];J[b+8>>2]=J[c+8>>2];J[b+12>>2]=a;a=J[c+4>>2];J[b>>2]=J[c>>2];J[b+4>>2]=a;a=0;break b}J[d+64>>2]=(b-J[g>>2]|0)/40;a=Jj(i,132935,d- -64|0);break b}J[d+20>>2]=b>>>0>2?102398:J[(b<<2)+239944>>2];J[d+16>>2]=c;a=d+144|0;Gj(a,128,136462,d+16|0);J[d>>2]=a;a=Jj(i,127336,d)}oj(i);Ui=d+304|0;return a|0}Z(143244,37616,478,51340);B()}function Qq(a,b,c){var d=0,e=0,f=Q(0),g=0,h=Q(0),i=Q(0),j=0,k=Q(0),l=Q(0),m=Q(0),n=Q(0),o=Q(0),p=Q(0),q=Q(0),r=Q(0),s=Q(0),t=Q(0),u=Q(0),v=Q(0),w=Q(0),x=Q(0),y=Q(0);a:{d=J[a+1116>>2];if((d|0)<=0){break a}j=a+4|0;while(1){m=N[b+48>>2];q=N[b+8>>2];r=N[b>>2];s=N[b+4>>2];n=N[b+52>>2];t=N[b+24>>2];k=N[b+16>>2];u=N[b+20>>2];f=N[b+56>>2];i=N[b+40>>2];h=N[b+32>>2];o=N[b+36>>2];g=d-1|0;e=j+P(g,276)|0;J[e+60>>2]=0;l=f;f=N[e+8>>2];v=Q(i*f);i=N[e>>2];w=Q(h*i);h=N[e+4>>2];o=Q(l+Q(v+Q(w+Q(o*h))));N[e+56>>2]=o;n=Q(n+Q(Q(t*f)+Q(Q(k*i)+Q(h*u))));N[e+52>>2]=n;m=Q(m+Q(Q(q*f)+Q(Q(r*i)+Q(s*h))));N[e+48>>2]=m;q=N[c+56>>2];r=N[c+40>>2];s=N[c+32>>2];t=N[c+36>>2];k=N[c+52>>2];u=N[c+24>>2];x=N[c+16>>2];y=N[c+20>>2];f=N[c+48>>2];i=N[c+8>>2];h=N[c>>2];p=N[c+4>>2];J[e+44>>2]=0;l=f;f=N[e+24>>2];v=Q(i*f);i=N[e+16>>2];w=Q(h*i);h=N[e+20>>2];p=Q(l+Q(v+Q(w+Q(p*h))));N[e+32>>2]=p;k=Q(k+Q(Q(u*f)+Q(Q(x*i)+Q(h*y))));N[e+36>>2]=k;f=Q(q+Q(Q(r*f)+Q(Q(s*i)+Q(h*t))));N[e+40>>2]=f;N[e+80>>2]=Q(Q(o-f)*N[e+72>>2])+Q(Q(Q(m-p)*N[e+64>>2])+Q(Q(n-k)*N[e+68>>2]));J[e+144>>2]=J[e+144>>2]+1;e=d>>>0>1;d=g;if(e){continue}break}b=J[a+1116>>2];if((b|0)<=0){break a}e=a+4|0;while(1){c=b;b=c-1|0;g=e+P(b,276)|0;f=N[g+80>>2];i=N[a+1120>>2];b:{if(!(f<=i)){d=J[g+108>>2];c:{if(!d){break c}j=J[83761];if(!j){break c}Zi[j|0](d)|0;J[g+108>>2]=0}j=J[a+1116>>2];d=j-1|0;if((c|0)!=(j|0)){d=e+P(d,276)|0;hj(g,d,276);J[d+272>>2]=0;J[d+240>>2]=0;J[d+208>>2]=0;J[d+144>>2]=0;J[d+120>>2]=0;J[d+124>>2]=0;J[d+108>>2]=0;J[d+112>>2]=0;H[d+116|0]=0;d=J[a+1116>>2]-1|0}J[a+1116>>2]=d;break b}h=Q(N[g+40>>2]-Q(N[g+56>>2]-Q(f*N[g+72>>2])));l=Q(h*h);h=Q(N[g+32>>2]-Q(N[g+48>>2]-Q(f*N[g+64>>2])));f=Q(N[g+36>>2]-Q(N[g+52>>2]-Q(f*N[g+68>>2])));if(Q(l+Q(Q(h*h)+Q(f*f)))>Q(i*i)){d=J[g+108>>2];d:{if(!d){break d}j=J[83761];if(!j){break d}Zi[j|0](d)|0;J[g+108>>2]=0}j=J[a+1116>>2];d=j-1|0;if((c|0)!=(j|0)){d=e+P(d,276)|0;hj(g,d,276);J[d+272>>2]=0;J[d+240>>2]=0;J[d+208>>2]=0;J[d+144>>2]=0;J[d+120>>2]=0;J[d+124>>2]=0;J[d+108>>2]=0;J[d+112>>2]=0;H[d+116|0]=0;d=J[a+1116>>2]-1|0}J[a+1116>>2]=d;break b}d=J[83762];if(!d){break b}Zi[d|0](g,J[a+1108>>2],J[a+1112>>2])|0}if(c>>>0>1){continue}break}}}function YQ(a,b,c,d,e){var f=0,g=0,h=0,i=0;h=Ui-112|0;Ui=h;a:{f=wk(a,J[c+4>>2],h+108|0);b:{if(f){Uj(c);break b}f=wk(a,J[c>>2],h+104|0);if(f){vj(a,J[h+108>>2]);Uj(c);break b}g=J[J[h+104>>2]>>2];if(!g){break a}f=h+16|0;J[f>>2]=0;J[f+4>>2]=0;J[f+60>>2]=0;J[f+64>>2]=0;J[f+40>>2]=0;J[f+44>>2]=0;J[f+32>>2]=1065353216;J[f+36>>2]=0;H[f+82|0]=1;I[f+80>>1]=1;J[f+84>>2]=0;J[f+24>>2]=0;J[f+28>>2]=0;J[f+16>>2]=0;J[f+20>>2]=0;J[f+8>>2]=0;J[f+12>>2]=0;J[f+68>>2]=0;J[f+72>>2]=0;H[f+83|0]=K[f+83|0]&254;J[f+8>>2]=bj(e);J[f+12>>2]=Yi;N[f+16>>2]=N[c+16>>2];N[f+20>>2]=N[c+20>>2];N[f+52>>2]=N[c+36>>2];N[f+56>>2]=N[c+28>>2];N[f+48>>2]=N[c+32>>2];H[f+82|0]=J[c+44>>2];N[f+24>>2]=N[g+28>>2];N[f+28>>2]=N[g+32>>2];N[f+36>>2]=N[g+56>>2];N[f+32>>2]=N[g+52>>2];N[f+40>>2]=N[g+60>>2];N[f+44>>2]=N[g+64>>2];J[f+68>>2]=J[g+76>>2];J[f+72>>2]=J[g+80>>2];J[f+76>>2]=J[g+84>>2];H[f+81|0]=J[g+8>>2];J[f+60>>2]=J[g+68>>2];J[f+64>>2]=J[g+72>>2];J[f+84>>2]=J[g+48>>2];H[f+80|0]=J[g+16>>2];e=K[g+92|0];i=K[g+88|0];J[f+4>>2]=579;J[f>>2]=580;H[f+83|0]=e|i<<1;b=J[b+2480>>2];e=J[d+4>>2];c:{if(!e){a=nj(184);J[a+108>>2]=0;J[a+112>>2]=0;J[a+24>>2]=0;J[a+28>>2]=0;J[a+16>>2]=0;J[a+8>>2]=0;J[a+12>>2]=0;J[a>>2]=0;J[a+84>>2]=0;J[a+88>>2]=0;H[a+177|0]=0;J[a+128>>2]=0;J[a+120>>2]=0;J[a+124>>2]=0;J[a+144>>2]=0;J[a+148>>2]=0;J[a+32>>2]=0;J[a+36>>2]=0;J[a+40>>2]=0;J[a+44>>2]=0;J[a+48>>2]=0;J[a+52>>2]=0;J[a+92>>2]=0;J[a+96>>2]=0;J[a+100>>2]=0;J[a+104>>2]=0;J[a+116>>2]=0;J[a+152>>2]=0;J[a+156>>2]=0;J[a+160>>2]=0;J[a+164>>2]=0;J[a+168>>2]=0;J[a+172>>2]=0;J[a+108>>2]=-1;I[a+178>>1]=1;cL(a,b,f);J[d+4>>2]=a;break c}cL(e,b,f);b=J[d+12>>2];if(b){vj(a,b)}b=J[d+16>>2];if(b){vj(a,b)}a=J[d>>2];if(!a){break c}Uj(a)}J[d+12>>2]=J[h+108>>2];a=J[h+104>>2];J[d>>2]=c;J[d+16>>2]=a;J[d+20>>2]=K[f+81|0];a=J[g+4>>2];ij(J[d+24>>2],255,J[d+28>>2]<<2);J[d+44>>2]=-1;J[d+48>>2]=0;J[d+36>>2]=J[d+32>>2];b=d+24|0;c=(a<<1>>>0)/3|0;EN(b,c>>>0<=1?1:c,a);if(J[g+4>>2]){c=0;while(1){a=J[g>>2]+P(c,48)|0;J[h+12>>2]=a;av(b,J[a>>2],h+12|0);c=c+1|0;if(c>>>0>2]){continue}break}}J[J[d+4>>2]+16>>2]=J[J[h+108>>2]>>2];J[J[d+4>>2]>>2]=d;f=0}Ui=h+112|0;return f}Z(51012,37722,187,24498);B()}function $U(a,b){var c=0,d=Q(0),e=Q(0),f=0,g=0,h=Q(0),i=0,j=Q(0),k=0,l=0,m=Q(0),n=Q(0),o=Q(0),p=Q(0),q=Q(0),r=Q(0),s=Q(0),t=Q(0),u=Q(0),v=Q(0),w=Q(0),x=0,y=Q(0);J[a+24>>2]=J[a+24>>2]+1;c=J[a>>2];if((c|0)==-1){J[a>>2]=b;J[(J[a+4>>2]+P(b,36)|0)+20>>2]=-1;return}i=J[a+4>>2];g=i+P(b,36)|0;n=N[g+12>>2];o=N[g+8>>2];p=N[g+4>>2];q=N[g>>2];while(1){k=c;c=i+P(c,36)|0;g=J[c+24>>2];if((g|0)!=-1){m=N[c+8>>2];j=N[c>>2];h=N[c+12>>2];d=N[c+4>>2];e=Q(Q((on?h:n)-(d>2];t=n>s?n:s;u=N[f+8>>2];v=o>u?o:u;m=N[f+4>>2];j=p>2];d=h>q?q:h;c=J[c+28>>2];a:{if(J[f+24>>2]==-1){d=Q(Q(v-d)+Q(t-j));h=Q(d+d);break a}d=Q(Q(v-d)+Q(t-j));w=Q(d+d);d=Q(Q(u-h)+Q(s-m));h=Q(w-Q(d+d))}y=Q(r+r);f=i+P(c,36)|0;r=N[f+12>>2];s=n>r?n:r;t=N[f+8>>2];u=o>t?o:t;v=N[f+4>>2];m=p>2];d=j>q?q:j;h=Q(e+h);b:{if(J[f+24>>2]==-1){d=Q(Q(u-d)+Q(s-m));w=Q(d+d);break b}d=Q(Q(u-d)+Q(s-m));w=Q(d+d);d=Q(Q(t-j)+Q(r-v));w=Q(w-Q(d+d))}e=Q(e+w);c=hy)|!(e>y)){continue}}break}f=P(k,36);i=J[(f+i|0)+20>>2];x=bV(a);g=P(x,36);J[(g+J[a+4>>2]|0)+20>>2]=i;c=J[a+4>>2];l=c+g|0;J[l+16>>2]=0;c=c+f|0;d=N[c>>2];e=N[c+4>>2];N[l+4>>2]=e>p?p:e;N[l>>2]=d>q?q:d;d=N[c+8>>2];e=N[c+12>>2];N[l+12>>2]=e>2]=d>2];l=c+g|0;g=c+f|0;J[l+32>>2]=J[g+32>>2]+1;c:{if((i|0)!=-1){c=c+P(i,36)|0;J[((k|0)==J[c+24>>2]?24:28)+c>>2]=x;J[l+28>>2]=b;J[l+24>>2]=k;J[g+20>>2]=x;c=(J[a+4>>2]+P(b,36)|0)+20|0;break c}J[l+28>>2]=b;J[l+24>>2]=k;J[g+20>>2]=x;J[(J[a+4>>2]+P(b,36)|0)+20>>2]=x;c=a}J[c>>2]=x;d:{e:{c=J[(J[a+4>>2]+P(b,36)|0)+20>>2];if((c|0)!=-1){while(1){b=aV(a,c);k=J[a+4>>2];g=P(b,36);i=k+g|0;c=J[i+24>>2];if((c|0)==-1){break e}b=J[i+28>>2];if((b|0)==-1){break d}f=k+P(c,36)|0;c=J[f+32>>2];k=k+P(b,36)|0;b=J[k+32>>2];J[i+32>>2]=((b|0)<(c|0)?c:b)+1;j=N[k>>2];h=N[f>>2];d=N[f+4>>2];e=N[k+4>>2];N[i+4>>2]=d>2]=h>2];h=N[f+8>>2];d=N[f+12>>2];e=N[k+12>>2];N[i+12>>2]=d>e?d:e;N[i+8>>2]=h>j?h:j;c=J[(g+J[a+4>>2]|0)+20>>2];if((c|0)!=-1){continue}break}}return}Z(144329,42086,307,57846);B()}Z(144314,42086,308,57846);B()}function W4(a,b,c){a=a|0;b=b|0;c=c|0;var d=0,e=0,f=0;d=Ui-5360|0;Ui=d;hj(d+84|0,a,2188);e=d+224|0;a=ul(e,46);a:{if(!a){break a}if(!jj(a,43198)){H[a|0]=0;a=ul(e,46);if(!a){break a}}if(jj(a,52336)){if(jj(a,76138)){break a}}H[a|0]=0}b:{if(J[d+84>>2]!=1635022189|J[d+88>>2]!=6646882){e=-1;if(Wj(d+84|0,57616,7)){break b}}J[d+80>>2]=0;a=J[J[b>>2]+20>>2];if(a){a=Zi[a|0](J[b+4>>2],d+80|0)|0}else{a=-1}if(a){dj(4,96538,60697,0)}e=J[d+80>>2];a=d+84|0;b=d+4336|0;Ks(a,b);f=a;a=d+3312|0;Ks(f,a);zl(a,43198,1024);c:{d:{if(!_k(a)){break d}f=gx(b,a);if(f){break c}J[d+52>>2]=b;J[d+48>>2]=a;dj(2,96538,147268,d+48|0);if(!_k(a)){break d}Fm(a)}a=nj(2232);J[a+28>>2]=0;J[a+32>>2]=0;J[a+4>>2]=0;J[a+8>>2]=0;J[a+36>>2]=0;J[a+40>>2]=0;J[a+20>>2]=0;J[a+24>>2]=0;J[a+12>>2]=0;J[a+16>>2]=0;J[a+32>>2]=-1;J[c>>2]=a;J[a>>2]=0;c=d+84|0;b=d+2272|0;NK(hj(a+44|0,c,2188),b);e:{f:{g:{if(!_k(b)){break g}c=LK(c,a);if(!c){break g}c=c+21|0;if(c>>>0>21){c=97515}else{c=J[(c<<2)+223356>>2]}J[d+36>>2]=c;J[d+32>>2]=b;dj(4,96538,30995,d+32|0);J[d+16>>2]=b;dj(4,96538,147883,d+16|0);Fm(b);J[a>>2]=0;break f}if(J[a>>2]){break e}}b=nj(44);J[b>>2]=0;J[b+4>>2]=0;J[b+40>>2]=0;J[b+32>>2]=0;J[b+36>>2]=0;J[b+24>>2]=0;J[b+28>>2]=0;J[b+16>>2]=0;J[b+20>>2]=0;c=b+8|0;J[c>>2]=0;J[c+4>>2]=0;Sy(J[e+4>>2],J[56032],b+4|0);Sy(J[e+8>>2],J[55998],c);J[a>>2]=b}J[a+4>>2]=e;RB(a);c=d+84|0;b=d+4336|0;Ks(c,b);if(_k(b)){vx(c,b);e=0;if(!_k(b)){break b}Ks(c,b);e=c;c=d+3312|0;vx(e,c);J[d+3308>>2]=0;h:{e=-5;f=b;b=a+8|0;c=JK(f,c,b,d+3308|0)+19|0;i:{if(!c){break i}if((c|0)==19){c=J[b>>2];if(c){break h}}e=-1e3}c=J[a>>2];if(c){co(c)}if(J[b>>2]){Ms(b)}j:{if(H[a+40|0]&1){break j}b=J[a+20>>2];if(b){cj(b)}b=J[a+12>>2];if(!b){break j}cj(b)}cj(a);break b}J[c+12>>2]=J[d+3308>>2];c=J[J[c+4>>2]>>2];c=c<<24|(c&65280)<<8|(c>>>8&65280|c>>>24);if((c|0)!=5){J[d+4>>2]=c;J[d>>2]=5;dj(4,96538,77677,d);c=J[a>>2];if(c){co(c)}if(J[b>>2]){Ms(b)}k:{if(H[a+40|0]&1){break k}b=J[a+20>>2];if(b){cj(b)}b=J[a+12>>2];if(!b){break k}cj(b)}cj(a);break b}RB(a);J[J[a>>2]>>2]=J[a+8>>2]}e=0;break b}J[d+72>>2]=f;J[d+68>>2]=d+4336;J[d+64>>2]=d+3312;dj(4,96538,131964,d- -64|0);e=-3}Ui=d+5360|0;return e|0}function Mv(a,b,c,d,e,f,g){var h=0,i=0,j=Q(0),k=0,l=Q(0),m=0,n=0,o=0,p=Q(0),q=Q(0),r=0,s=0,t=0,u=0,v=0,w=0,x=0,y=Q(0),z=Q(0),A=Q(0),B=Q(0),C=Q(0),D=Q(0),E=0,F=Q(0),G=0,I=0;m=Ui-16|0;n=7-b|0;o=b+1|0;b=2<>>0);D=Q(1e9);E=1;F=Q(1e9);while(1){j=Q(i>>>0);l=Q(Q(Q(Q(N[c>>2]*p)-j)*Q(.5))+Q(.5));a:{if(Q(R(l))>2];q=N[c+12>>2];y=N[d+8>>2];z=N[c+8>>2];A=N[d+4>>2];B=N[c+4>>2];C=N[d>>2];r=h<<1|i;k=i|I;r=(h|0)<0?i:(k|0)>(r|0)?r:k;h=(r&255)<>>o|h;C=Q(Q(Q(Q(C*p)-j)*Q(.5))+Q(.5));b:{if(Q(R(C))(s|0)?s:k;h=(s&255)<>>o|h;B=Q(Q(Q(Q(B*p)-j)*Q(.5))+Q(.5));c:{if(Q(R(B))(t|0)?t:k;h=(t&255)<>>o|h;A=Q(Q(Q(Q(A*p)-j)*Q(.5))+Q(.5));d:{if(Q(R(A))(u|0)?u:k;h=(u&255)<>>o|h;z=Q(Q(Q(Q(z*p)-j)*Q(.5))+Q(.5));e:{if(Q(R(z))(v|0)?v:k;h=(v&255)<>>o|h;y=Q(Q(Q(Q(y*p)-j)*Q(.5))+Q(.5));f:{if(Q(R(y))(w|0)?w:k;h=(w&255)<>>o|h;q=Q(Q(Q(Q(q*p)-j)*Q(.5))+Q(.5));g:{if(Q(R(q))(x|0)?x:k;h=(x&255)<>>o|h;j=Q(Q(Q(Q(l*p)-j)*Q(.5))+Q(.5));h:{if(Q(R(j))(G|0)?G:k;h=(k&255)<>>o|h;j=Q(0);l=Q(0);if(a){while(1){q=l;h=b<<2;l=Q(Q(K[(m+8|0)+b|0])-Q(N[h+d>>2]*Q(255)));l=Q(q+Q(l*l));q=j;j=Q(Q(K[(m+12|0)+b|0])-Q(N[c+h>>2]*Q(255)));j=Q(q+Q(j*j));b=b+1|0;if((b|0)!=(a|0)){continue}break}}if(j>2]=i;H[e+3|0]=(x&254)>>>1;H[e+2|0]=(v&254)>>>1;H[e+1|0]=(t&254)>>>1;H[e|0]=(r&254)>>>1;F=j}if(l>2]=i;H[f+3|0]=(k&254)>>>1;H[f+2|0]=(w&254)>>>1;H[f+1|0]=(u&254)>>>1;H[f|0]=(s&254)>>>1;D=l}i=1;b=E;E=0;if(b){continue}break}}function iw(a){var b=0,c=0,d=0,e=0;c=J[a+84>>2];if(c){b=c+80|0;if(b){d=J[b+60>>2];if(d){Zi[J[J[J[b>>2]+28>>2]+32>>2]](d)}Zi[J[66509]](b,0,64)|0}b=c+144|0;if(b){d=J[b+60>>2];if(d){Zi[J[J[J[b>>2]+28>>2]+32>>2]](d)}Zi[J[66509]](b,0,64)|0}Kl(c+52|0);Kl(c- -64|0);Zi[J[66509]](c,0,212)|0}c=J[a+64>>2];if(c){b=J[c+100>>2];if(b){hn(b);cj(J[c+100>>2]);J[c+100>>2]=0}cj(J[c+108>>2]);Zi[J[66509]](c,0,136)|0}if(J[a+68>>2]){jA(a)}if(!J[a+84>>2]){c=Zj(1,212);J[a+84>>2]=c;e=!c}b=J[a+64>>2];if(!b){b=Zj(1,136);J[a+64>>2]=b}a:{b:{c:{c=J[a+68>>2];if(c){break c}c=Zj(1,2280);J[a+68>>2]=c;if(c){break c}c=0;break b}if((e^-1)&(b|0)!=0){break a}}cj(c);cj(J[a+84>>2]);cj(J[a+64>>2]);J[a+84>>2]=0;J[a+64>>2]=0;J[a+68>>2]=0;return-32512}ij(b,0,136);c=ij(J[a+84>>2],0,212);IA(c+80|0);IA(c+144|0);J[c+52>>2]=0;J[c+56>>2]=0;J[c+60>>2]=0;c=c- -64|0;J[c>>2]=0;J[c+4>>2]=0;J[c+8>>2]=0;c=ij(J[a+68>>2],0,2280);au(c+596|0);ds(c+684|0);J[c+612>>2]=-1732584194;J[c+616>>2]=271733878;J[c+604>>2]=1732584193;J[c+608>>2]=-271733879;J[c+596>>2]=0;J[c+600>>2]=0;J[c+708>>2]=-1009589776;J[c+700>>2]=-1732584194;J[c+704>>2]=271733878;J[c+692>>2]=1732584193;J[c+696>>2]=-271733879;J[c+684>>2]=0;J[c+688>>2]=0;b=c+776|0;ww(b);vw(b,0);b=c+888|0;bs(b);as(b,1);J[c>>2]=0;J[c+4>>2]=0;J[c+1104>>2]=2302;ij(c+8|0,0,124);b=c+132|0;Cw(b);J[b+132>>2]=0;J[b+124>>2]=1;J[b+128>>2]=0;J[b+144>>2]=0;J[b+136>>2]=1;J[b+140>>2]=0;J[b+156>>2]=0;J[b+148>>2]=1;J[b+152>>2]=0;J[b+168>>2]=0;J[b+160>>2]=1;J[b+164>>2]=0;J[b+180>>2]=0;J[b+172>>2]=1;J[b+176>>2]=0;J[b+192>>2]=0;J[b+184>>2]=1;J[b+188>>2]=0;J[b+204>>2]=0;J[b+196>>2]=1;J[b+200>>2]=0;J[b+216>>2]=0;J[b+208>>2]=1;J[b+212>>2]=0;J[b+232>>2]=0;J[b+224>>2]=1;J[b+228>>2]=0;J[b+244>>2]=0;J[b+236>>2]=1;J[b+240>>2]=0;J[b+256>>2]=0;J[b+248>>2]=1;J[b+252>>2]=0;J[b+268>>2]=0;J[b+260>>2]=1;J[b+264>>2]=0;J[b+280>>2]=0;J[b+272>>2]=1;J[b+276>>2]=0;J[b+292>>2]=0;J[b+284>>2]=1;J[b+288>>2]=0;J[b+304>>2]=0;J[b+296>>2]=1;J[b+300>>2]=0;J[b+220>>2]=0;J[c+456>>2]=3;c=J[a>>2];d:{if(!(K[c+184|0]&2)){break d}b=J[a+68>>2];J[b+512>>2]=J[a+76>>2];H[b+492|0]=K[c+184|0]<<1&2;c=J[a+92>>2];if(!c){break d}Zi[c|0](J[a+88>>2],0,0)}return 0}function Ara(a,b){a=a|0;b=Q(b);var c=0,d=Q(0),e=Q(0),f=Q(0),g=Q(0),h=Q(0),i=Q(0),j=Q(0),k=Q(0),l=Q(0),m=0,n=0,o=Q(0);Xl(45063);m=J[a+204>>2];if((m|0)>0){while(1){c=J[J[a+212>>2]+(n<<2)>>2];if(!(K[c+204|0]&3)){a:{if(K[c+204|0]&3){break a}e=Q(b*N[c+336>>2]);N[c+304>>2]=Q(N[c+404>>2]*e)+N[c+304>>2];N[c+308>>2]=Q(e*N[c+408>>2])+N[c+308>>2];N[c+312>>2]=Q(e*N[c+412>>2])+N[c+312>>2];h=N[c+296>>2];j=N[c+288>>2];k=N[c+292>>2];g=N[c+280>>2];l=N[c+272>>2];o=N[c+276>>2];d=N[c+428>>2];f=N[c+420>>2];i=N[c+424>>2];e=Q(Q(b*Q(Q(N[c+264>>2]*d)+Q(Q(N[c+256>>2]*f)+Q(N[c+260>>2]*i))))+N[c+320>>2]);N[c+320>>2]=e;g=Q(Q(b*Q(Q(g*d)+Q(Q(l*f)+Q(i*o))))+N[c+324>>2]);N[c+324>>2]=g;d=Q(Q(b*Q(Q(h*d)+Q(Q(j*f)+Q(i*k))))+N[c+328>>2]);N[c+328>>2]=d;f=Q(Y(Q(Q(d*d)+Q(Q(e*e)+Q(g*g)))));if(!(Q(b*f)>Q(1.5707963705062866))){break a}k=d;d=Q(Q(Q(1.5707963705062866)/b)/f);N[c+328>>2]=k*d;N[c+324>>2]=g*d;N[c+320>>2]=e*d}e=N[c+304>>2];k=N[c+436>>2];d=VG(Q(Q(1)-k),b);e=Q(e*d);N[c+304>>2]=e;g=Q(d*N[c+308>>2]);N[c+308>>2]=g;d=Q(d*N[c+312>>2]);N[c+312>>2]=d;f=N[c+320>>2];l=N[c+440>>2];h=VG(Q(Q(1)-l),b);f=Q(f*h);N[c+320>>2]=f;i=Q(h*N[c+324>>2]);N[c+324>>2]=i;h=Q(h*N[c+328>>2]);N[c+328>>2]=h;b:{if(K[c+444|0]!=1){break b}if(!(!(N[c+456>>2]>Q(Q(h*h)+Q(Q(f*f)+Q(i*i))))|!(N[c+452>>2]>Q(Q(d*d)+Q(Q(e*e)+Q(g*g)))))){j=N[c+448>>2];h=Q(h*j);N[c+328>>2]=h;i=Q(i*j);N[c+324>>2]=i;f=Q(f*j);N[c+320>>2]=f;d=Q(d*j);N[c+312>>2]=d;g=Q(g*j);N[c+308>>2]=g;e=Q(e*j);N[c+304>>2]=e}j=Q(Y(Q(Q(d*d)+Q(Q(e*e)+Q(g*g)))));c:{if(!(jQ(.004999999888241291)){k=d;d=Q(Q(1)/j);N[c+312>>2]=k-Q(Q(k*d)*Q(.004999999888241291));N[c+308>>2]=g-Q(Q(g*d)*Q(.004999999888241291));N[c+304>>2]=e-Q(Q(e*d)*Q(.004999999888241291));break c}J[c+304>>2]=0;J[c+308>>2]=0;J[c+312>>2]=0;J[c+316>>2]=0}e=Q(Y(Q(Q(h*h)+Q(Q(f*f)+Q(i*i)))));if(!(eQ(.004999999888241291)){e=Q(Q(1)/e);N[c+328>>2]=h-Q(Q(h*e)*Q(.004999999888241291));N[c+324>>2]=i-Q(Q(i*e)*Q(.004999999888241291));N[c+320>>2]=f-Q(Q(f*e)*Q(.004999999888241291));break b}J[c+320>>2]=0;J[c+324>>2]=0;J[c+328>>2]=0;J[c+332>>2]=0}HE(c,b,c+68|0);m=J[a+204>>2]}n=n+1|0;if((n|0)<(m|0)){continue}break}}Wl()}function k7(a){a=a|0;var b=0,c=0,d=0,e=0,f=0,g=0,h=0,i=0,j=0;a=Ui-48|0;Ui=a;g=J[218579];H[a+3|0]=1;a:{if(K[a+3|0]==1){while(1){vp(3e4);while(1){b=J[218578];J[218578]=b?b:1;if(b){continue}break}b:{if(J[218577]<=0){J[218578]=0;break b}b=J[218579];i=J[b+8>>2];j=J[b+4>>2];d=J[b+16>>2];J[218578]=0;if((d|0)==-1){break b}f=KJ(a+28|0);JJ(f,0,d);c:{if(LJ(f,0)){break c}e=J[f+4>>2];c=J[f>>2];b=0;d:{if((e|0)==(c|0)){break d}b=e-c>>3;e=b>>>0<=1?1:b;b=0;e:{while(1){h=c+(b<<3)|0;if((d|0)==J[h>>2]){break e}b=b+1|0;if((e|0)!=(b|0)){continue}break}b=0;break d}b=(J[45772]&L[h+6>>1])!=0}if(!b){break c}b=a+8|0;J[b>>2]=0;J[b+4>>2]=0;J[b+16>>2]=0;J[b+8>>2]=0;J[b+12>>2]=0;c=Ui-32|0;Ui=c;f:{g:{h:{if(vB(d)){J[c+8>>2]=0;J[c+12>>2]=0;J[c>>2]=0;J[c+4>>2]=0;J[c+28>>2]=16;d=wz(d,c,c+28|0);J[b>>2]=1;e=J[c+4>>2];J[zu(b)>>2]=e;break h}if(!uB(d)){break g}J[c+24>>2]=0;J[c+16>>2]=0;J[c+20>>2]=0;J[c+8>>2]=0;J[c+12>>2]=0;J[c>>2]=0;J[c+4>>2]=0;J[c+28>>2]=28;d=wz(d,c,c+28|0);J[b>>2]=2;b=yu(b);e=J[c+20>>2];J[b+8>>2]=J[c+16>>2];J[b+12>>2]=e;e=J[c+12>>2];J[b>>2]=J[c+8>>2];J[b+4>>2]=e}J[a+4>>2]=d;b=0;if((d|0)>=0){break f}b=Pm(36957,360,J[245744]);break f}dj(4,99340,153004,0);b=-2}Ui=c+32|0;i:{j:{switch(b+4|0){case 4:if((i|0)==(j|0)){d=0;dj(4,99340,74745,0);b=J[a+4>>2];J[a+44>>2]=0;while(1){k:{c=lx(b,d+155104|0,34-d|0,a+44|0);if((c|0)!=-101){if(c){break k}d=J[a+44>>2]+d|0}if((d|0)<34){continue}}break}sq(J[a+4>>2]);Ln(J[a+4>>2]);break c}b=J[a+4>>2];d=0;J[a+44>>2]=0;while(1){l:{c=lx(b,d+155322|0,5-d|0,a+44|0);if((c|0)!=-101){if(c){break l}d=J[a+44>>2]+d|0}if((d|0)<5){continue}}break};Pm(36957,225,J[245744]);d=J[a+4>>2];while(1){b=J[218578];J[218578]=b?b:1;if(b){continue}break};if(J[218577]<=0){break i}c=J[218579];b=J[c+4>>2];if((b|0)==J[c+8>>2]){break a}J[c+4>>2]=b+4;J[b>>2]=d;J[218578]=0;break c;default:if((b|0)!=-31){break c}break;case 0:break j;case 1:case 2:case 3:break c}}b=Ui-1184|0;Ui=b;m:{if(!K[269788]){break m}}Ui=b+1184|0;break c}J[218578]=0}if(H[a+40|0]&1){break b}b=J[f>>2];if(!b){break b}cj(b)}Jm(J[g+24>>2],J[g+28>>2],2287,a+3|0);if(K[a+3|0]){continue}break}}Ui=a+48|0;return}Z(112520,54052,557,53220);B()}function vn(a,b,c){var d=Q(0),e=0,f=0,g=Q(0),h=Q(0),i=0,j=Q(0),k=Q(0),l=Q(0),m=Q(0),n=Q(0),o=Q(0),p=Q(0),q=Q(0),r=Q(0),s=Q(0),t=Q(0),u=Q(0);e=Ui-304|0;Ui=e;a:{b:{if((kj(a,b)|0)!=7){J[e+288>>2]=b;dj(4,86858,130868,e+288|0);break b}f=Kk(a,b,J[215720]);J[c>>2]=f;if(f){c:{h=N[f>>2];d=N[f+4>>2];if(h!=h|d!=d){break c}g=N[f+8>>2];if(g!=g){break c}i=0;break a}g=N[f+8>>2];O[e+272>>3]=d;O[e+280>>3]=g;O[e+264>>3]=h;J[e+256>>2]=b;fj(a,138436,e+256|0);break b}f=Kk(a,b,J[215721]);J[c>>2]=f;if(f){d:{h=N[f>>2];d=N[f+4>>2];if(h!=h|d!=d){break d}g=N[f+8>>2];if(g!=g){break d}g=N[f+12>>2];if(g!=g){break d}i=1;break a}g=N[f+8>>2];j=N[f+12>>2];O[e+224>>3]=d;O[e+240>>3]=j;O[e+232>>3]=g;O[e+216>>3]=h;J[e+208>>2]=b;fj(a,138642,e+208|0);break b}f=Kk(a,b,J[215724]);J[c>>2]=f;i=4;if(f){break a}f=Kk(a,b,J[215722]);J[c>>2]=f;if(f){e:{h=N[f>>2];d=N[f+4>>2];if(h!=h|d!=d){break e}g=N[f+8>>2];if(g!=g){break e}g=N[f+12>>2];if(g!=g){break e}i=2;break a}g=N[f+8>>2];j=N[f+12>>2];O[e+176>>3]=d;O[e+192>>3]=j;O[e+184>>3]=g;O[e+168>>3]=h;J[e+160>>2]=b;fj(a,138526,e+160|0);break b}f=c;c=Kk(a,b,J[215723]);J[f>>2]=c;if(c){f=0;d=N[c>>2];f:{if(d!=d){break f}d=N[c+16>>2];if(d!=d){break f}d=N[c+32>>2];if(d!=d){break f}d=N[c+48>>2];if(d!=d){break f}d=N[c+4>>2];if(d!=d){break f}d=N[c+20>>2];if(d!=d){break f}d=N[c+36>>2];if(d!=d){break f}d=N[c+52>>2];if(d!=d){break f}d=N[c+8>>2];if(d!=d){break f}d=N[c+24>>2];if(d!=d){break f}d=N[c+40>>2];if(d!=d){break f}d=N[c+56>>2];if(d!=d){break f}d=N[c+12>>2];if(d!=d){break f}d=N[c+28>>2];if(d!=d){break f}d=N[c+44>>2];if(d!=d){break f}d=N[c+60>>2];f=d==d}i=3;if(f){break a}d=N[c>>2];h=N[c+16>>2];g=N[c+32>>2];j=N[c+48>>2];k=N[c+4>>2];l=N[c+20>>2];m=N[c+36>>2];n=N[c+52>>2];o=N[c+8>>2];p=N[c+24>>2];q=N[c+40>>2];r=N[c+56>>2];s=N[c+12>>2];t=N[c+28>>2];u=N[c+44>>2];O[e+144>>3]=N[c+60>>2];O[e+136>>3]=u;O[e+128>>3]=t;O[e+120>>3]=s;O[e+112>>3]=r;O[e+104>>3]=q;O[e+96>>3]=p;O[e+88>>3]=o;O[e+80>>3]=n;O[e+72>>3]=m;O[e- -64>>3]=l;O[e+56>>3]=k;O[e+48>>3]=j;O[e+40>>3]=g;O[e+32>>3]=h;J[e+16>>2]=b;O[e+24>>3]=d;fj(a,138809,e+16|0);break b}J[e>>2]=b;dj(4,86858,130089,e)}i=5}f=i;Ui=e+304|0;return f}function Hka(a,b){a=a|0;b=b|0;var c=0,d=0,e=0,f=0,g=Q(0),h=0,i=Q(0),j=0,k=0,l=0,m=0;d=Ui-80|0;Ui=d;j=J[a+8>>2];b=J[j>>2];if((b|0)!=J[j+4>>2]){while(1){c=P(k,144)+b|0;a:{if(!(K[c+58|0]&16)){break a}J[74892]=J[74892]+1;J[d+72>>2]=1;J[d+76>>2]=0;J[d+32>>2]=1;J[d+36>>2]=0;b=J[c+60>>2];b:{if(!b){break b}e=J[J[a+12>>2]>>2];J[d+44>>2]=c;J[d+40>>2]=e;e=Nu(b,226,d+40|0,1e4);if((e|0)==-17){break b}zo(J[c+60>>2]);J[c+56>>2]=J[c+56>>2]&-2097153;h=J[c+128>>2];c:{if(h){b=J[c+136>>2];if(!b){b=J[J[J[c+32>>2]>>2]>>2]}Zi[h|0](b,e?-1e3:0,J[c+132>>2]);break c}if(e){break c}if(!Pp(J[c+64>>2],J[c+68>>2])){break c}b=Jk(c+96|0,c- -64|0,J[74964],J[74965],0,0,0,0,0,0);if(!b){break c}J[d+16>>2]=b;dj(3,88458,79983,d+16|0)}J[c+60>>2]=0}d:{if(!J[c+36>>2]){break d}J[74914]=J[74914]+1;J[d+64>>2]=1;J[d+68>>2]=0;J[d+8>>2]=1;J[d+12>>2]=0;b=J[c+56>>2];e=b>>>18&1;if((e|0)!=(b>>>17&1)){b=b&-131073|e<<17;J[c+56>>2]=b}if(b&131072){J[74936]=J[74936]+1;J[d+56>>2]=1;J[d+60>>2]=0;J[d>>2]=1;J[d+4>>2]=0;b=J[a+4>>2];e=J[b+12>>2];J[d+48>>2]=J[b+8>>2];J[d+52>>2]=e;e=J[b+4>>2];J[d+40>>2]=J[b>>2];J[d+44>>2]=e;i=N[c+48>>2];N[d+40>>2]=N[b>>2]*i;g=i;i=N[b+4>>2];g=Q(g*i);e:{f:{switch(J[c+44>>2]){case 0:N[d+44>>2]=g;J[c+52>>2]=0;break e;case 1:break f;default:break e}}g=Q(g+N[c+52>>2]);N[c+52>>2]=g;if(g>=i){N[d+44>>2]=i;N[c+52>>2]=g-N[b+4>>2];break e}J[d+44>>2]=0}l=cR(J[c+36>>2],d+40|0)?l:-1e3;break d}J[c+52>>2]=0}if(!(K[c+58|0]&8)){break a}b=0;h=0;e=Ui-48|0;Ui=e;J[c+56>>2]=J[c+56>>2]&-524289;f=J[c+128>>2];g:{if(f){b=J[c+136>>2];if(!b){b=J[J[J[c+32>>2]>>2]>>2]}Zi[f|0](b,0,J[c+132>>2]);break g}if(!Pp(J[c>>2],J[c+4>>2])){break g}m=e+40|0;f=m;J[f>>2]=0;J[f+4>>2]=0;J[e+32>>2]=0;J[e+36>>2]=0;J[e+24>>2]=0;J[e+28>>2]=0;f=J[J[J[c+40>>2]+80>>2]+8>>2];h:{if(!f){break h}f=J[f>>2];if(!f){break h}b=J[f+3216>>2];h=J[f+3220>>2]}J[e+16>>2]=b;J[e+20>>2]=h;b=J[c+40>>2];h=J[b+100>>2];J[e+32>>2]=J[b+96>>2];J[e+36>>2]=h;Go(J[c+40>>2],L[c+56>>1],m);b=Jk(e+16|0,c,J[74966],J[74967],0,0,0,0,0,0);if(!b){break g}J[e>>2]=b;dj(3,88458,79944,e)}Ui=e+48|0}k=k+1|0;b=J[j>>2];if(k>>>0<(J[j+4>>2]-b|0)/144>>>0){continue}break}}Ui=d+80|0;return l|0}function HS(a,b,c){var d=0,e=0,f=0,g=0,h=0,i=0,j=0,k=0,l=0,m=0;a:{if(!J[a+5792>>2]){d=J[a+5820>>2];break a}while(1){d=J[a+5784>>2]+k|0;l=K[d+2|0];m=a;j=K[d|0]|K[d+1|0]<<8;b:{c:{if(!j){d=(l<<2)+b|0;i=L[d+2>>1];h=L[d>>1];d=J[a+5820>>2];e=L[a+5816>>1]|h<>1]=e;if((d|0)>(16-i|0)){d=J[a+20>>2];J[a+20>>2]=d+1;H[d+J[a+8>>2]|0]=e;d=J[a+20>>2];J[a+20>>2]=d+1;H[d+J[a+8>>2]|0]=K[a+5817|0];d=J[a+5820>>2];I[a+5816>>1]=h>>>16-d;d=(d+i|0)-16|0;break c}d=d+i|0;break c}h=K[l+194128|0];i=h<<2;d=i+b|0;f=L[d+1030>>1];e=L[d+1028>>1];d=J[a+5820>>2];g=L[a+5816>>1]|e<>1]=g;d:{if((d|0)>(16-f|0)){d=J[a+20>>2];J[a+20>>2]=d+1;H[d+J[a+8>>2]|0]=g;d=J[a+20>>2];J[a+20>>2]=d+1;H[d+J[a+8>>2]|0]=K[a+5817|0];d=J[a+5820>>2];g=e>>>16-d|0;I[a+5816>>1]=g;d=(d+f|0)-16|0;break d}d=d+f|0}J[a+5820>>2]=d;if(h-28>>>0>=4294967276){f=l-J[i+196032>>2]|0;h=J[i+195664>>2];e:{if((16-h|0)<(d|0)){e=f<>1]=e;d=J[a+20>>2];J[a+20>>2]=d+1;H[d+J[a+8>>2]|0]=e;d=J[a+20>>2];J[a+20>>2]=d+1;H[d+J[a+8>>2]|0]=K[a+5817|0];d=J[a+5820>>2];g=(f&65535)>>>16-d|0;I[a+5816>>1]=g;d=(d+h|0)-16|0;break e}g=f<>1]=g;d=d+h|0}J[a+5820>>2]=d}f=j-1|0;h=K[(j>>>0<257?f:(f>>>7|0)+256|0)+193616|0];i=h<<2;e=i+c|0;j=L[e+2>>1];e=L[e>>1];g=e<>1]=g;f:{if((16-j|0)<(d|0)){d=J[a+20>>2];J[a+20>>2]=d+1;H[d+J[a+8>>2]|0]=g;d=J[a+20>>2];J[a+20>>2]=d+1;H[d+J[a+8>>2]|0]=K[a+5817|0];d=J[a+5820>>2];g=e>>>16-d|0;I[a+5816>>1]=g;d=(d+j|0)-16|0;break f}d=d+j|0}J[a+5820>>2]=d;if(h>>>0<4){break b}f=f-J[i+196160>>2]|0;h=J[i+195792>>2];if((16-h|0)<(d|0)){e=f<>1]=e;d=J[a+20>>2];J[a+20>>2]=d+1;H[d+J[a+8>>2]|0]=e;d=J[a+20>>2];J[a+20>>2]=d+1;H[d+J[a+8>>2]|0]=K[a+5817|0];d=J[a+5820>>2];I[a+5816>>1]=(f&65535)>>>16-d;d=(d+h|0)-16|0;break c}I[a+5816>>1]=f<>2]=d}k=k+3|0;if(k>>>0>2]){continue}break}}e=L[b+1026>>1];f=L[b+1024>>1];c=L[a+5816>>1]|f<>1]=c;if((16-e|0)<(d|0)){b=J[a+20>>2];J[a+20>>2]=b+1;H[b+J[a+8>>2]|0]=c;b=J[a+20>>2];J[a+20>>2]=b+1;H[b+J[a+8>>2]|0]=K[a+5817|0];b=J[a+5820>>2];I[a+5816>>1]=f>>>16-b;J[a+5820>>2]=(b+e|0)-16;return}J[a+5820>>2]=d+e}function QR(a,b,c,d,e){var f=0,g=0,h=0,i=0,j=0,k=0,l=0,m=0,n=0,o=0,p=0,q=0;f=Ui-144|0;Ui=f;i=d+8|0;h=Ky(a,J[c+16>>2],J[c+20>>2],i);a:{if(h){if(J[d+4>>2]){while(1){b=J[d>>2]+P(j,96)|0;vj(a,J[b+24>>2]);ll(J[b+88>>2]);j=j+1|0;if(j>>>0>2]){continue}break}}Iq(a,i);Uj(c);break a}J[d>>2]=0;J[d+4>>2]=0;b:{c:{d:{e:{i=J[c+4>>2];if(i){J[d>>2]=sj(P(i,96));p=f+112|0;while(1){g=J[c>>2]+P(l,160)|0;m=J[g+4>>2];h=wk(a,m,f+140|0);if(h){break a}i=bj(J[g>>2]);n=Yi;j=0;k=0;f:{h=J[d+4>>2];if(!h){break f}while(1){q=J[d>>2];g:{while(1){o=q+P(j,96)|0;if((i|0)==J[o>>2]&(n|0)==J[o+4>>2]){break g}j=j+1|0;if(j>>>0>>0){continue}break}if(!k){break f}break b}h=J[g>>2];J[f+20>>2]=e;J[f+16>>2]=h;dj(4,88293,118353,f+16|0);k=1;h=J[d+4>>2];j=j+1|0;if(h>>>0>j>>>0){continue}break}break b}if(ZB(a,J[f+140>>2],f+136|0)){break e}h=My(b,J[f+136>>2],f+132|0);if(!h){break d}if(pr(a,m,f+128|0)){break c}j=J[f+128>>2];k=J[j>>2];j=J[j+4>>2];J[f+56>>2]=J[f+140>>2];J[f+48>>2]=h;J[f+40>>2]=k;J[f+44>>2]=j;J[f+32>>2]=i;J[f+36>>2]=n;J[f+52>>2]=J[f+132>>2];N[f+64>>2]=N[g+16>>2];N[f+68>>2]=N[g+20>>2];N[f+72>>2]=N[g+24>>2];N[f+80>>2]=N[g+32>>2];N[f+84>>2]=N[g+36>>2];N[f+88>>2]=N[g+40>>2];N[f+92>>2]=N[g+44>>2];N[f+96>>2]=N[g+144>>2];N[f+100>>2]=N[g+148>>2];N[f+104>>2]=N[g+152>>2];i=p;J[i>>2]=0;J[i+4>>2]=0;J[i+8>>2]=0;J[i>>2]=83;g=VD(g+56|0);J[f+120>>2]=g;if(!g){h=-13;break a}g=J[d+4>>2];J[d+4>>2]=g+1;h=J[f+52>>2];g=J[d>>2]+P(g,96)|0;J[g+16>>2]=J[f+48>>2];J[g+20>>2]=h;h=J[f+44>>2];J[g+8>>2]=J[f+40>>2];J[g+12>>2]=h;h=J[f+36>>2];J[g>>2]=J[f+32>>2];J[g+4>>2]=h;J[g+24>>2]=J[f+56>>2];N[g+32>>2]=N[f+64>>2];N[g+36>>2]=N[f+68>>2];N[g+40>>2]=N[f+72>>2];N[g+48>>2]=N[f+80>>2];N[g+52>>2]=N[f+84>>2];N[g+56>>2]=N[f+88>>2];N[g+60>>2]=N[f+92>>2];N[g+64>>2]=N[f+96>>2];N[g+68>>2]=N[f+100>>2];N[g+72>>2]=N[f+104>>2];h=J[i+4>>2];J[g+80>>2]=J[i>>2];J[g+84>>2]=h;J[g+88>>2]=J[i+8>>2];l=l+1|0;if(l>>>0>2]){continue}break}}h=0;break a}Z(93061,38259,95,24498);B()}a=J[g+4>>2];J[f>>2]=J[g>>2];J[f+4>>2]=a;dj(4,88293,146485,f);Z(111325,38259,101,24498);B()}Z(93061,38259,104,24498);B()}vj(a,J[f+140>>2]);h=-13}Ui=f+144|0;return h}function Jja(a,b){a=a|0;b=b|0;var c=0,d=0,e=0,f=0,g=0,h=Q(0);g=Ui-80|0;Ui=g;c=J[a+4>>2];f=J[c+16>>2];d=J[J[a+24>>2]>>2];if(d>>>0>2]-f>>3>>>0){f=J[(d<<3)+f>>2];d=J[c+4>>2];c=J[c>>2];if(f>>>0>8>>>0){e=c+(f<<8)|0;a:{b:{c=J[a+16>>2];d=J[a+20>>2];c:{if((c|0)==J[76478]&(d|0)==J[76479]|(c|0)==J[76480]&(d|0)==J[76481]){break c}if((c|0)==J[76482]&(d|0)==J[76483]){break c}if((c|0)!=J[76484]|(d|0)!=J[76485]){break b}}a=uy(b,c,d,e- -64|0,305912);break a}d:{e:{if((c|0)==J[76488]&(d|0)==J[76489]|(c|0)==J[76490]&(d|0)==J[76491]){break e}if((c|0)==J[76492]&(d|0)==J[76493]){break e}if((c|0)!=J[76494]|(d|0)!=J[76495]){break d}}a=uy(b,c,d,e+48|0,305952);break a}f:{g:{if((c|0)==J[76498]&(d|0)==J[76499]|(c|0)==J[76500]&(d|0)==J[76501]){break g}if((c|0)==J[76502]&(d|0)==J[76503]|(c|0)==J[76504]&(d|0)==J[76505]){break g}if((c|0)!=J[76506]|(d|0)!=J[76507]){break f}}a=ty(b,c,d,e+80|0,305992);break a}h:{i:{if((c|0)==J[76510]&(d|0)==J[76511]|(c|0)==J[76512]&(d|0)==J[76513]){break i}if((c|0)==J[76514]&(d|0)==J[76515]|(c|0)==J[76516]&(d|0)==J[76517]){break i}if((c|0)!=J[76518]|(d|0)!=J[76519]){break h}}a=ty(b,c,d,e+96|0,306040);break a}j:{k:{if((c|0)==J[76522]&(d|0)==J[76523]|(c|0)==J[76524]&(d|0)==J[76525]){break k}if((c|0)==J[76526]&(d|0)==J[76527]|(c|0)==J[76528]&(d|0)==J[76529]){break k}if((c|0)!=J[76530]|(d|0)!=J[76531]){break j}}a=ty(b,c,d,e+112|0,306088);break a}if((c|0)==J[76430]&(d|0)==J[76431]){c=J[J[J[a+8>>2]+80>>2]>>2];a=J[e+224>>2];if(!a){a=J[J[e+216>>2]+4>>2]}a=Lm(c,a,b);break a}if((c|0)==J[76424]&(d|0)==J[76425]){c=J[J[J[a+8>>2]+80>>2]>>2];a=J[e+228>>2];if(!a){a=J[J[e+216>>2]+8>>2]}a=Lm(c,a,b);break a}if((c|0)==J[76534]&(d|0)==J[76535]){h=N[e+232>>2];a=g+8|0;J[a>>2]=0;O[a+8>>3]=h;hj(b+32|0,a,72);a=0;break a}if((c|0)==J[76536]&(d|0)==J[76537]){h=N[e+236>>2];a=g+8|0;J[a>>2]=0;O[a+8>>3]=h;hj(b+32|0,a,72);a=0;break a}if((c|0)==J[76538]&(d|0)==J[76539]){a=g+8|0;H[a+8|0]=(L[e+246>>1]&16)>>>4;J[a>>2]=6;hj(b+32|0,a,72);a=0;break a}f=J[e+224>>2];if(!f){f=J[J[e+216>>2]+4>>2]}a=bt(J[f>>2],c,d,J[a+32>>2],b,0,324,e)}Ui=g+80|0;return a|0}}Z(145396,53895,487,84789);B()}function wk(a,b,c){var d=0,e=0,f=0,g=0,h=0,i=0,j=0,k=0,l=0,m=0,n=0,o=0,p=0,q=0;f=Ui-1120|0;Ui=f;a:{b:{c:{d:{e:{f:{g:{if(b){if(!c){break g}J[c>>2]=0;d=K[b|0];if((d|0)!=47){if(!d){dj(4,96538,53119,0);e=-3;break c}J[f>>2]=b;dj(4,96538,136662,f);e=-3;break c}m=J[a+6164>>2];Tj(m);j=a+6176|0;k=a+6172|0;d=J[a+6168>>2];h=d+1|0;if(!d){J[a+6168>>2]=h;g=J[a+6172>>2];J[a+6176>>2]=g;break e}J[a+6168>>2]=h;g=J[a+6176>>2];d=J[a+6172>>2];i=g-d>>2;if((d|0)==(g|0)){break e}h=i>>>0<=1?1:i;while(1){if(jj(J[d+(e<<2)>>2],b)){e=e+1|0;if((h|0)!=(e|0)){continue}break e}break}e=0;dj(4,96538,73617,0);dj(4,96538,102636,0);while(1){c=J[k>>2];if(J[j>>2]-c>>2>>>0<=e>>>0){break f}J[f+68>>2]=J[c+(e<<2)>>2];J[f+64>>2]=e;dj(4,96538,30686,f- -64|0);e=e+1|0;if((h|0)!=(e|0)){continue}break}J[f+52>>2]=b;J[f+48>>2]=i;dj(4,96538,30686,f+48|0);e=-16;break d}Z(66013,42212,983,15721);B()}Z(69784,42212,984,15721);B()}Z(145396,53895,487,84789);B()}l=a+6180|0;d=J[a+6180>>2];if((d|0)==(g|0)){if(H[a+6184|0]&1){break a}lj(i+16|0,4,k,l,j);g=J[j>>2];d=J[l>>2]}h:{i:{if((d|0)!=(g|0)){J[a+6176>>2]=g+4;J[g>>2]=b;J[f+1116>>2]=0;d=f+80|0;ip(b,d);i=Ul(d,yj(d));d=Yi;p=d;j:{k:{e=TK(a,i,d,c);switch(e+3|0){case 3:break j;case 0:break k;default:break h}}e=f+80|0;d=ul(e,46);if(!d){J[f+16>>2]=e;dj(3,96538,120939,f+16|0);e=-4;break h}n=d+1|0;d=bj(n);q=Yi;o=J[a+6160>>2];if(!o){break i}g=a+16|0;e=0;while(1){h=g+P(e,48)|0;if((d|0)==J[h>>2]&J[h+4>>2]==(q|0)){break j}e=e+1|0;if((o|0)!=(e|0)){continue}break}break i}e=0;if(J[c>>2]){break h}e=-1;d=J[h+36>>2];if((d|0)!=-1){e=d}J[f+76>>2]=0;J[f+72>>2]=0;g=a+8392|0;d=J[a+8392>>2];if((J[a+8400>>2]-d|0)!=1048576){if(H[a+8404|0]&1){break a}lj(1048576,1,g,a+8400|0,a+8396|0);d=J[a+8392>>2]}J[a+8396>>2]=d;d=f+80|0;e=Pu(a,d,0,e,f+72|0,f+76|0,g);if(e){break h}e=RK(a,h,b,d,i,p,J[a+8392>>2],J[f+76>>2],J[f+72>>2],c);break h}Z(112520,53895,557,53220);B()}J[f+32>>2]=n;dj(4,96538,29516,f+32|0);e=-7}c=J[k>>2];b=(J[j>>2]-c>>2)-1|0;if(b>>>0>J[l>>2]-c>>2>>>0){break b}J[j>>2]=c+(b<<2)}J[a+6168>>2]=J[a+6168>>2]-1;Lj(m)}Ui=f+1120|0;return e}Z(144782,53895,514,59583);B()}Z(151729,53895,501,2284);B()}function Ro(a,b,c,d,e){var f=0,g=0,h=0,i=0,j=0,k=0,l=0,m=0;g=-4;f=J[e+4>>2];a:{if(f>>>0>2]+1>>>0){break a}h=J[e+8>>2];if(!h){break a}ij(h,0,f<<2);f=J[e+8>>2];h=J[c+4>>2];if(h){g=J[b+4>>2];j=g>>>0>>0?g:h;g=0;while(1){k=J[f>>2];i=J[b+8>>2];l=J[i>>2];m=i;i=J[J[a+8>>2]+(g<<2)>>2];hA(j,m,f,i);hA(h,J[c+8>>2],f,P(P(i,l)+k|0,d));J[f>>2]=i;f=f+4|0;J[(f+(h<<2)|0)+4>>2]=0;g=g+1|0;if((h|0)!=(g|0)){continue}break}}hj(J[a+8>>2],f,(h<<2)+4|0);d=0;f=J[a+4>>2];b=0;b:{if(!f){break b}g=J[a+8>>2]-4|0;while(1){b=f;if(J[g+(b<<2)>>2]){break b}f=b-1|0;if(f){continue}break}b=0}f=J[c+4>>2];c:{if(!f){break c}g=J[c+8>>2]-4|0;while(1){if(J[g+(f<<2)>>2]){d=f;break c}f=f-1|0;if(f){continue}break}}d:{e:{f:{g:{h:{i:{j:{if(!(b|d)|b>>>0>d>>>0){break j}k:{if(b>>>0>>0){g=J[a+8>>2];break k}while(1){if(!b){break j}g=J[a+8>>2];b=b-1|0;f=b<<2;d=J[g+f>>2];f=J[f+J[c+8>>2]>>2];if(d>>>0>f>>>0){break j}if(d>>>0>=f>>>0){continue}break}}if(!h){break i}i=h&1;b=J[e+8>>2];if((h|0)!=1){break g}c=0;break f}if(h){break h}}g=0;break a}i=h&1;g=J[c+8>>2];b=J[a+8>>2];if((h|0)==1){c=0;break d}f=h&-2;c=0;d=0;while(1){a=b;h=J[b>>2];e=h-c|0;J[b>>2]=e;j=J[g>>2];J[b>>2]=e-j;k=J[b+4>>2];e=(e>>>0>>0)+(c>>>0>h>>>0)|0;c=k-e|0;J[b+4>>2]=c;h=J[g+4>>2];J[b+4>>2]=c-h;c=(c>>>0>>0)+(e>>>0>k>>>0)|0;b=b+8|0;g=g+8|0;d=d+2|0;if((f|0)!=(d|0)){continue}break}break e}f=h&-2;c=0;d=0;while(1){a=b;h=J[b>>2];e=h-c|0;J[b>>2]=e;j=J[g>>2];J[b>>2]=e-j;k=J[b+4>>2];e=(e>>>0>>0)+(c>>>0>h>>>0)|0;c=k-e|0;J[b+4>>2]=c;h=J[g+4>>2];J[b+4>>2]=c-h;c=(c>>>0>>0)+(e>>>0>k>>>0)|0;b=b+8|0;g=g+8|0;d=d+2|0;if((f|0)!=(d|0)){continue}break}f=a+4|0}if(i){d=J[b>>2];a=d-c|0;J[b>>2]=a;e=J[g>>2];J[b>>2]=a-e;c=(a>>>0>>0)+(c>>>0>d>>>0)|0;f=b;b=b+4|0}g=0;if(!c){break a}a=J[b>>2];J[b>>2]=a-c;if(a>>>0>=c>>>0){break a}f=f+8|0;while(1){a=J[f>>2];J[f>>2]=a-1;f=f+4|0;if(!a){continue}break}break a}f=a+4|0}if(i){d=J[b>>2];a=d-c|0;J[b>>2]=a;e=J[g>>2];J[b>>2]=a-e;c=(a>>>0>>0)+(c>>>0>d>>>0)|0;f=b;b=b+4|0}g=0;if(!c){break a}a=J[b>>2];J[b>>2]=a-c;if(a>>>0>=c>>>0){break a}f=f+8|0;while(1){a=J[f>>2];J[f>>2]=a-1;f=f+4|0;if(!a){continue}break}}return g}function rha(a){a=a|0;var b=0,c=0,d=0,e=0,f=0,g=0,h=0,i=0,j=Q(0);c=Ui+-64|0;Ui=c;h=2;i=pj(c+44|0,a,2,39971,1061);a:{b:{c:{d:{b=rS(Mp(a,1,0),mk(a,2),Yi,c+32|0,c+40|0,c+36|0);switch(b|0){case 0:break b;case 11:break d;default:break c}}b=J[a+8>>2];J[b+8>>2]=0;J[a+8>>2]=b+16;b=J[a+8>>2];J[b+8>>2]=0;J[a+8>>2]=b+16;break a}J[c>>2]=b>>>0>11?14245:J[(b<<2)+265952>>2];h=Jj(i,28565,c);break a}Fj(a,0,0);e:{f:{g:{h:{i:{j:{k:{l:{m:{n:{b=J[c+36>>2];switch(b|0){case 6:break h;case 5:break i;case 4:break j;case 2:break k;case 1:break l;case 0:break m;case 8:break n;case 3:case 7:break f;default:break e}}d=J[c+40>>2];if(!d){break g}b=0;g=J[c+32>>2];while(1){j=N[g+(b<<2)>>2];f=J[a+8>>2];J[f+8>>2]=3;O[f>>3]=j;J[a+8>>2]=J[a+8>>2]+16;b=b+1|0;Ik(a,-2,b);if((b|0)!=(d|0)){continue}break}break g}d=J[c+40>>2];if(!d){break g}b=0;g=J[c+32>>2];while(1){f=K[b+g|0];e=J[a+8>>2];J[e+8>>2]=3;O[e>>3]=f|0;J[a+8>>2]=J[a+8>>2]+16;b=b+1|0;Ik(a,-2,b);if((b|0)!=(d|0)){continue}break}break g}d=J[c+40>>2];if(!d){break g}b=0;g=J[c+32>>2];while(1){f=L[g+(b<<1)>>1];e=J[a+8>>2];J[e+8>>2]=3;O[e>>3]=f|0;J[a+8>>2]=J[a+8>>2]+16;b=b+1|0;Ik(a,-2,b);if((b|0)!=(d|0)){continue}break}break g}d=J[c+40>>2];if(!d){break g}b=0;g=J[c+32>>2];while(1){f=J[g+(b<<2)>>2];e=J[a+8>>2];J[e+8>>2]=3;O[e>>3]=f|0;J[a+8>>2]=J[a+8>>2]+16;b=b+1|0;Ik(a,-2,b);if((b|0)!=(d|0)){continue}break}break g}d=J[c+40>>2];if(!d){break g}b=0;g=J[c+32>>2];while(1){f=H[b+g|0];e=J[a+8>>2];J[e+8>>2]=3;O[e>>3]=f|0;J[a+8>>2]=J[a+8>>2]+16;b=b+1|0;Ik(a,-2,b);if((b|0)!=(d|0)){continue}break}break g}d=J[c+40>>2];if(!d){break g}b=0;g=J[c+32>>2];while(1){f=I[g+(b<<1)>>1];e=J[a+8>>2];J[e+8>>2]=3;O[e>>3]=f|0;J[a+8>>2]=J[a+8>>2]+16;b=b+1|0;Ik(a,-2,b);if((b|0)!=(d|0)){continue}break}break g}d=J[c+40>>2];if(!d){break g}b=0;g=J[c+32>>2];while(1){f=J[g+(b<<2)>>2];e=J[a+8>>2];J[e+8>>2]=3;O[e>>3]=f|0;J[a+8>>2]=J[a+8>>2]+16;b=b+1|0;Ik(a,-2,b);if((b|0)!=(d|0)){continue}break}}b=J[c+36>>2];d=J[a+8>>2];J[d+8>>2]=3;O[d>>3]=b|0;J[a+8>>2]=J[a+8>>2]+16;break a}h=Jj(i,73284,0);break a}J[c+16>>2]=b;h=Jj(i,80221,c+16|0)}oj(i);Ui=c- -64|0;return h|0}function Bja(a){a=a|0;var b=0,c=0,d=0,e=0;b=J[a+4>>2];e=J[b+16>>2];a:{c=J[J[a+24>>2]>>2];if(c>>>0>2]-e>>3>>>0){e=J[(c<<3)+e>>2];c=J[b+4>>2];b=J[b>>2];if(e>>>0>8>>>0){d=b+(e<<8)|0;b:{b=J[a+16>>2];c=J[a+20>>2];c:{if((b|0)==J[76478]&(c|0)==J[76479]|(b|0)==J[76480]&(c|0)==J[76481]){break c}if((b|0)==J[76482]&(c|0)==J[76483]){break c}if((b|0)!=J[76484]|(c|0)!=J[76485]){break b}}return ly(b,c,a+32|0,d- -64|0,305912)|0}d:{e:{if((b|0)==J[76488]&(c|0)==J[76489]|(b|0)==J[76490]&(c|0)==J[76491]){break e}if((b|0)==J[76492]&(c|0)==J[76493]){break e}if((b|0)!=J[76494]|(c|0)!=J[76495]){break d}}return ly(b,c,a+32|0,d+48|0,305952)|0}f:{g:{if((b|0)==J[76498]&(c|0)==J[76499]|(b|0)==J[76500]&(c|0)==J[76501]){break g}if((b|0)==J[76502]&(c|0)==J[76503]|(b|0)==J[76504]&(c|0)==J[76505]){break g}if((b|0)!=J[76506]|(c|0)!=J[76507]){break f}}return ky(b,c,a+32|0,d+80|0,305992)|0}h:{i:{if((b|0)==J[76510]&(c|0)==J[76511]|(b|0)==J[76512]&(c|0)==J[76513]){break i}if((b|0)==J[76514]&(c|0)==J[76515]|(b|0)==J[76516]&(c|0)==J[76517]){break i}if((b|0)!=J[76518]|(c|0)!=J[76519]){break h}}return ky(b,c,a+32|0,d+96|0,306040)|0}j:{k:{if((b|0)==J[76522]&(c|0)==J[76523]|(b|0)==J[76524]&(c|0)==J[76525]){break k}if((b|0)==J[76526]&(c|0)==J[76527]|(b|0)==J[76528]&(c|0)==J[76529]){break k}if((b|0)!=J[76530]|(c|0)!=J[76531]){break j}}return ky(b,c,a+32|0,d+112|0,306088)|0}if((b|0)==J[76430]&(c|0)==J[76431]){a=xn(J[J[J[a+8>>2]+80>>2]>>2],a+32|0,J[76408],J[76409],d+224|0);break a}if((b|0)==J[76424]&(c|0)==J[76425]){a=xn(J[J[J[a+8>>2]+80>>2]>>2],a+32|0,J[76406],J[76407],d+228|0);break a}if((b|0)==J[76534]&(c|0)==J[76535]){if(J[a+32>>2]){return-4}N[d+232>>2]=O[a+40>>3];return 0}if((b|0)==J[76536]&(c|0)==J[76537]){if(J[a+32>>2]){return-4}N[d+236>>2]=O[a+40>>3];return 0}if((b|0)==J[76538]&(c|0)==J[76539]){if(J[a+32>>2]!=6){return-4}I[d+246>>1]=L[d+246>>1]&65519|K[a+40|0]<<4&16;return 0}e=J[d+224>>2];if(!e){e=J[J[d+216>>2]+4>>2]}return Wp(J[e>>2],b,c,a+32|0,J[a+104>>2],325,d)|0}}Z(145396,53895,487,84789);B()}b=L[d+246>>1];I[d+246>>1]=(a?b&8:8)|b&65527;return a|0}function via(a){a=a|0;var b=0,c=0,d=0,e=0,f=0,g=0,h=0,i=Q(0),j=Q(0),k=Q(0),l=Q(0),m=0;b=J[a+80>>2];e=J[b+8>>2];if((e|0)==J[b+4>>2]){io(61249,11009,(e-J[b>>2]|0)/240|0);return-1e3}g=J[b>>2];h=J[b+4>>2]-g|0;e=(h|0)/240|0;a:{b:{c:{d=J[b+48>>2];d:{if((d|0)!=-1){c=J[b+16>>2];if(d>>>0>=J[b+20>>2]-c>>3>>>0){break a}d=(d<<3)+c|0;J[b+48>>2]=J[d+4>>2];f=e+1|0;break d}f=e+1|0;c=J[b+16>>2];if(f>>>0>J[b+24>>2]-c>>3>>>0){break c}J[b+20>>2]=(f<<3)+c;if((h|0)==-240){break a}d=(e<<3)+c|0}J[d>>2]=e;J[d+4>>2]=-1;if((J[b+8>>2]-g|0)/240>>>0>>0){break c}J[b+4>>2]=g+P(f,240);f=J[b+32>>2];if(e>>>0>=J[b+36>>2]-f>>2>>>0){break a}f=f+(e<<2)|0;e=d-c>>3;J[f>>2]=e;break b}Z(144782,53895,514,59583);B()}c=J[b+16>>2];if(e>>>0>2]-c>>3>>>0){c=J[c+(e<<3)>>2];d=J[b+4>>2];b=J[b>>2];if(c>>>0<(d-b|0)/240>>>0){b=ij(b+P(c,240)|0,0,240);J[b+144>>2]=J[a>>2];c=J[a+20>>2];d=J[a+16>>2];N[b+72>>2]=N[a+24>>2];J[b+64>>2]=d;J[b+68>>2]=c;N[b+80>>2]=N[a+32>>2];N[b+84>>2]=N[a+36>>2];N[b+88>>2]=N[a+40>>2];N[b+92>>2]=N[a+44>>2];N[b+96>>2]=N[a+48>>2];N[b+100>>2]=N[a+52>>2];N[b+104>>2]=N[a+56>>2];d=J[a+76>>2];J[b+148>>2]=d;H[b+160|0]=0;H[b+161|0]=0;H[b+162|0]=0;H[b+163|0]=0;H[b+164|0]=0;H[b+165|0]=0;H[b+166|0]=0;H[b+167|0]=0;H[b+184|0]=0;H[b+185|0]=0;H[b+186|0]=0;H[b+187|0]=0;H[b+188|0]=0;H[b+189|0]=0;H[b+190|0]=0;H[b+191|0]=0;H[b+176|0]=0;H[b+177|0]=0;H[b+178|0]=0;H[b+179|0]=0;H[b+180|0]=0;H[b+181|0]=0;H[b+182|0]=0;H[b+183|0]=0;H[b+168|0]=0;H[b+169|0]=0;H[b+170|0]=0;H[b+171|0]=0;H[b+172|0]=0;H[b+173|0]=0;H[b+174|0]=0;H[b+175|0]=0;I[b+232>>1]=L[a+92>>1];J[b+192>>2]=0;g=L[b+234>>1]|260;I[b+234>>1]=g;f=J[b+148>>2];c=J[f>>2];i=N[c+16>>2];N[b+128>>2]=i;j=N[c+20>>2];N[b+132>>2]=j;k=N[c+24>>2];N[b+136>>2]=k;l=N[c+28>>2];N[b+140>>2]=l;m=Q(l+Q(k+Q(i+j)))!=Q(0)?!J[c+48>>2]<<9:m;J[b+200>>2]=0;J[b+204>>2]=65535;J[b+120>>2]=0;J[b+112>>2]=0;J[b+116>>2]=0;I[b+234>>1]=g&65023|m;c=J[f>>2];if(!J[c+48>>2]){N[b+112>>2]=N[c+32>>2];N[b+116>>2]=N[c+36>>2]}if(J[f+20>>2]){ry(b,J[d+8>>2],J[d+12>>2],N[c+52>>2],N[c+56>>2])}J[J[a+88>>2]>>2]=e;return 0}}}Z(145396,53895,487,84789);B()}function x2(a){a=a|0;var b=0,c=0,d=0,e=0,f=0,g=0,h=0,i=0,j=Q(0),k=0,l=0,m=0,n=0,o=0,p=0,q=0,r=0,s=0,t=0,u=0;k=1;q=J[a+8>>2]-J[a+12>>2]>>4;Oj(a,1,3);Oj(a,2,1);Oj(a,3,6);a:{l=ok(a,1);if(l<0){k=fj(a,22614,0);break a}b=ck(a,2);c=ux(a);j=Q(l);r=(b|0)!=0;s=bK(a);t=$m(a,3);h=Ui-16|0;Ui=h;b:{c:{d:{e:{if(c){if(!(j>=Q(0))){break e}b=J[c+8>>2];f:{g:{if((b|0)!=J[c+4>>2]){break g}b=b-J[c>>2]|0;if((b|0)==256e3){J[h>>2]=8e3;dj(4,86858,132423,h);b=-1;break f}b=(b>>5)+16|0;b=b>>>0>=8e3?8e3:b;EM(c,b);f=ml(J[c+52>>2],b<<1);J[c+60>>2]=b;J[c+52>>2]=f;if(b>>>0>=M[c+56>>2]){break g}J[c+56>>2]=b}g=J[c>>2];e=J[c+4>>2]-g|0;b=e>>5;h:{i:{d=J[c+48>>2];j:{if((d|0)!=-1){f=J[c+16>>2];if(d>>>0>=J[c+20>>2]-f>>3>>>0){break c}e=(d<<3)+f|0;J[c+48>>2]=J[e+4>>2];d=b+1|0;break j}d=b+1|0;f=J[c+16>>2];if(d>>>0>J[c+24>>2]-f>>3>>>0){break i}J[c+20>>2]=(d<<3)+f;if((e|0)==-32){break c}e=(b<<3)+f|0}J[e>>2]=b;J[e+4>>2]=-1;if(J[c+8>>2]-g>>5>>>0>>0){break i}J[c+4>>2]=g+(d<<5);d=J[c+32>>2];if(b>>>0>=J[c+36>>2]-d>>2>>>0){break c}d=d+(b<<2)|0;b=e-f>>3;J[d>>2]=b;break h}Z(144782,53895,514,59583);B()}f=b;g=b&65535;d=J[c+16>>2];if(g>>>0>=J[c+20>>2]-d>>3>>>0){break c}m=J[d+(g<<3)>>2];n=J[c>>2];if(m>>>0>=J[c+4>>2]-n>>5>>>0){break c}e=J[c+52>>2];d=J[c+56>>2];o=e+(d<<1)|0;if(d){u=b&65535;b=d;while(1){i=(b&-2)+e|0;p=L[i>>1]>>0;e=p?i+2|0:e;i=b;b=b>>>1|0;b=p?i+(b^-1)|0:b;if(b){continue}break}}if(!(L[e>>1]==(f&65535)&e>>>0>>0)){if((d|0)==J[c+60>>2]){break d}el(e+2|0,e,o-e|0);I[e>>1]=f;J[c+56>>2]=J[c+56>>2]+1}b=(m<<5)+n|0;J[b>>2]=0;J[b+4>>2]=0;J[b+24>>2]=0;J[b+28>>2]=0;J[b+16>>2]=0;J[b+20>>2]=0;J[b+8>>2]=0;J[b+12>>2]=0;f=L[c+80>>1];J[b+4>>2]=s;J[b+12>>2]=g|f<<16;H[c+82|0]=K[c+82|0]|2;N[b+16>>2]=j;N[b+20>>2]=j;J[b+8>>2]=t;J[b>>2]=1760;J[b+24>>2]=0;H[b+28|0]=K[b+28|0]&252|r|2;b=J[b+12>>2]}Ui=h+16|0;break b}Z(111373,39844,317,34005);B()}Z(58522,39844,318,34005);B()}Z(144851,54078,338,76114);B()}Z(145396,53895,487,84789);B()}f=J[a+8>>2];J[f+8>>2]=3;O[f>>3]=b|0;J[a+8>>2]=J[a+8>>2]+16;if((q+1|0)==J[a+8>>2]-J[a+12>>2]>>4){break a}Z(143334,39844,639,4153);B()}return k|0}function nJ(a,b,c,d,e,f,g,h,i){var j=0,k=0,l=0,m=0,n=0,o=0,p=0,q=0,r=0,s=0,t=0;j=Ui-128|0;Ui=j;a:{b:{c:{if(!Mr(f,g,h,i,0,0,0,0)){break c}k=i&65535;m=i>>>16&32767;d:{e:{if((m|0)!=32767){n=4;if(m){break e}n=f|h|(g|k)?3:2;break d}n=!(f|h|(g|k))}}if(!n){break c}s=e>>>16|0;p=s&32767;if((p|0)!=32767){break b}}il(j+16|0,b,c,d,e,f,g,h,i);b=J[j+16>>2];d=J[j+20>>2];e=J[j+24>>2];c=J[j+28>>2];KV(j,b,d,e,c,b,d,e,c);d=J[j+8>>2];e=J[j+12>>2];h=J[j>>2];i=J[j+4>>2];break a}o=d;n=e&2147483647;k=n;m=h;l=i&2147483647;if((Mr(b,c,o,k,f,g,h,l)|0)<=0){if(Mr(b,c,o,k,f,g,h,l)){h=b;i=c;break a}il(j+112|0,b,c,d,e,0,0,0,0);d=J[j+120>>2];e=J[j+124>>2];h=J[j+112>>2];i=J[j+116>>2];break a}q=i>>>16&32767;if(p){i=c;h=b}else{il(j+96|0,b,c,o,n,0,0,0,1081540608);o=J[j+104>>2];h=J[j+108>>2];n=h;p=(h>>>16|0)-120|0;i=J[j+100>>2];h=J[j+96>>2]}if(!q){il(j+80|0,f,g,m,l,0,0,0,1081540608);m=J[j+88>>2];f=J[j+92>>2];l=f;q=(f>>>16|0)-120|0;g=J[j+84>>2];f=J[j+80>>2]}r=m;t=l&65535|65536;n=n&65535|65536;if((p|0)>(q|0)){while(1){l=o-r|0;k=(g|0)==(i|0)&f>>>0>h>>>0|g>>>0>i>>>0;m=l-k|0;k=(n-((o>>>0>>0)+t|0)|0)-(k>>>0>l>>>0)|0;f:{if((k|0)>=0|(k|0)>0){o=h;h=h-f|0;i=i-((f>>>0>o>>>0)+g|0)|0;if(!(h|m|(i|k))){il(j+32|0,b,c,d,e,0,0,0,0);d=J[j+40>>2];e=J[j+44>>2];h=J[j+32>>2];i=J[j+36>>2];break a}k=k<<1|m>>>31;o=m<<1|i>>>31;break f}k=n<<1|o>>>31;o=o<<1|i>>>31}n=k;k=i<<1|h>>>31;h=h<<1;i=k;p=p-1|0;if((q|0)<(p|0)){continue}break}p=q}l=o-r|0;k=(g|0)==(i|0)&f>>>0>h>>>0|g>>>0>i>>>0;m=l-k|0;k=(n-((o>>>0>>0)+t|0)|0)-(k>>>0>l>>>0)|0;l=k;g:{if((k|0)<0){m=o;l=n;break g}o=h;h=h-f|0;i=i-((f>>>0>o>>>0)+g|0)|0;if(h|m|(i|l)){break g}il(j+48|0,b,c,d,e,0,0,0,0);d=J[j+56>>2];e=J[j+60>>2];h=J[j+48>>2];i=J[j+52>>2];break a}if((l|0)==65535|l>>>0<65535){while(1){b=i>>>31|0;p=p-1|0;n=i<<1|h>>>31;h=h<<1;i=n;c=b;b=l<<1|m>>>31;m=c|m<<1;l=b;if(b>>>0<65536){continue}break}}b=s&32768;if((p|0)<=0){il(j- -64|0,h,i,m,l&65535|(b|p+120)<<16,0,0,0,1065811968);d=J[j+72>>2];e=J[j+76>>2];h=J[j+64>>2];i=J[j+68>>2];break a}d=m;e=l&65535|(b|p)<<16}J[a>>2]=h;J[a+4>>2]=i;J[a+8>>2]=d;J[a+12>>2]=e;Ui=j+128|0}function Xs(a,b,c,d){var e=0,f=Q(0),g=Q(0),h=Q(0),i=Q(0),j=Q(0),k=Q(0),l=Q(0),m=Q(0),n=Q(0),o=Q(0),p=Q(0),q=Q(0),r=Q(0),s=Q(0),t=Q(0),u=Q(0),v=Q(0),w=Q(0),x=Q(0),y=Q(0),z=Q(0),A=Q(0),C=Q(0),D=Q(0),E=Q(0),F=Q(0),G=Q(0),I=Q(0),M=Q(0),O=Q(0),R=Q(0),S=Q(0),T=0,U=0;e=Ui+-64|0;Ui=e;a:{T=L[b+656>>1];if((T|0)!=65535){U=J[a+32>>2];if((J[a+36>>2]-U|0)/672>>>0<=T>>>0){break a}NO(a,P(T,672)+U|0,e)}b:{if(!(K[b+478|0]&64)){if(!(H[a+374|0]&1)|J[a+352>>2]==2){break b}}Yx(a,b)}N[d>>2]=N[b+384>>2];N[d+4>>2]=N[b+388>>2];N[d+8>>2]=N[b+392>>2];N[d+12>>2]=N[b+396>>2];N[d+16>>2]=N[b+400>>2];N[d+20>>2]=N[b+404>>2];N[d+24>>2]=N[b+408>>2];N[d+28>>2]=N[b+412>>2];N[d+32>>2]=N[b+416>>2];N[d+36>>2]=N[b+420>>2];N[d+40>>2]=N[b+424>>2];N[d+44>>2]=N[b+428>>2];N[d+48>>2]=N[b+432>>2];N[d+52>>2]=N[b+436>>2];N[d+56>>2]=N[b+440>>2];N[d+60>>2]=N[b+444>>2];PO(b,c,d);if(L[b+656>>1]!=65535){f=N[d+12>>2];g=N[d+8>>2];h=N[d>>2];i=N[d+4>>2];j=N[d+28>>2];k=N[d+24>>2];l=N[d+16>>2];m=N[d+20>>2];n=N[d+44>>2];o=N[d+40>>2];p=N[d+32>>2];q=N[d+36>>2];r=N[e+48>>2];s=N[e+32>>2];t=N[e>>2];u=N[e+16>>2];v=N[e+52>>2];w=N[e+36>>2];x=N[e+4>>2];y=N[e+20>>2];z=N[e+56>>2];A=N[e+40>>2];C=N[e+8>>2];D=N[e+24>>2];E=N[e+60>>2];F=N[d+60>>2];G=N[e+44>>2];I=N[d+56>>2];M=N[e+12>>2];O=N[d+48>>2];R=N[e+28>>2];S=N[d+52>>2];N[d+60>>2]=Q(E*F)+Q(Q(G*I)+Q(Q(M*O)+Q(R*S)));N[d+56>>2]=Q(z*F)+Q(Q(A*I)+Q(Q(C*O)+Q(D*S)));N[d+52>>2]=Q(v*F)+Q(Q(w*I)+Q(Q(x*O)+Q(y*S)));N[d+48>>2]=Q(r*F)+Q(Q(s*I)+Q(Q(t*O)+Q(u*S)));N[d+44>>2]=Q(E*n)+Q(Q(G*o)+Q(Q(M*p)+Q(R*q)));N[d+40>>2]=Q(z*n)+Q(Q(A*o)+Q(Q(C*p)+Q(D*q)));N[d+36>>2]=Q(v*n)+Q(Q(w*o)+Q(Q(x*p)+Q(y*q)));N[d+32>>2]=Q(r*n)+Q(Q(s*o)+Q(Q(t*p)+Q(u*q)));N[d+28>>2]=Q(E*j)+Q(Q(G*k)+Q(Q(M*l)+Q(R*m)));N[d+24>>2]=Q(z*j)+Q(Q(A*k)+Q(Q(C*l)+Q(D*m)));N[d+20>>2]=Q(v*j)+Q(Q(w*k)+Q(Q(x*l)+Q(y*m)));N[d+16>>2]=Q(r*j)+Q(Q(s*k)+Q(Q(t*l)+Q(u*m)));N[d+12>>2]=Q(E*f)+Q(Q(G*g)+Q(Q(M*h)+Q(i*R)));N[d+8>>2]=Q(z*f)+Q(Q(A*g)+Q(Q(C*h)+Q(i*D)));N[d+4>>2]=Q(v*f)+Q(Q(w*g)+Q(Q(x*h)+Q(i*y)));N[d>>2]=Q(r*f)+Q(Q(s*g)+Q(Q(t*h)+Q(u*i)))}Ui=e- -64|0;return}Z(145396,53895,487,84789);B()}function IC(a,b,c,d){var e=Q(0),f=Q(0),g=Q(0),h=Q(0),i=Q(0),j=Q(0),k=Q(0),l=Q(0),m=Q(0),n=Q(0),o=Q(0),p=Q(0),q=Q(0),r=Q(0),s=Q(0),t=Q(0),u=Q(0),v=Q(0),w=Q(0),x=Q(0),y=Q(0),z=Q(0),A=Q(0),B=Q(0),C=Q(0),D=Q(0),E=Q(0),F=Q(0),G=Q(0),H=Q(0),I=Q(0),K=Q(0),L=Q(0),M=Q(0),O=Q(0),P=0,R=0,S=Q(0),T=Q(0),U=Q(0),V=Q(0),W=Q(0),X=Q(0),Y=Q(0),Z=Q(0),_=Q(0),$=Q(0);P=1;R=J[a+96>>2];a:{if((R|0)<=0){break a}f=N[b+60>>2];q=N[b+44>>2];j=N[d+8>>2];n=Q(q*j);r=N[b+12>>2];k=N[d>>2];e=Q(r*k);l=N[d+4>>2];s=N[b+28>>2];t=Q(l*s);u=Q(e+t);S=Q(f+Q(n+u));g=N[b+56>>2];G=N[b+40>>2];o=Q(G*j);v=N[b+8>>2];p=Q(v*k);w=N[b+24>>2];x=Q(l*w);H=Q(p+x);T=Q(g+Q(o+H));h=N[b+52>>2];I=N[b+36>>2];y=Q(I*j);D=N[b+4>>2];E=Q(D*k);z=N[b+20>>2];A=Q(l*z);B=Q(E+A);U=Q(h+Q(y+B));i=N[b+48>>2];K=N[b+32>>2];j=Q(K*j);C=N[b>>2];F=Q(C*k);L=N[b+16>>2];M=Q(l*L);O=Q(F+M);V=Q(i+Q(j+O));k=N[c+8>>2];l=Q(q*k);W=Q(f+Q(l+u));q=Q(G*k);G=Q(g+Q(q+H));u=Q(I*k);H=Q(h+Q(u+B));k=Q(K*k);I=Q(i+Q(k+O));m=e;e=N[c+4>>2];s=Q(e*s);B=Q(m+s);K=Q(f+Q(n+B));m=p;p=Q(e*w);w=Q(m+p);O=Q(g+Q(o+w));m=E;E=Q(e*z);z=Q(m+E);X=Q(h+Q(y+z));m=F;F=Q(e*L);e=Q(m+F);L=Q(i+Q(j+e));B=Q(f+Q(l+B));w=Q(g+Q(q+w));z=Q(h+Q(u+z));Y=Q(i+Q(k+e));e=N[c>>2];r=Q(r*e);t=Q(r+t);Z=Q(f+Q(n+t));v=Q(v*e);x=Q(v+x);_=Q(g+Q(o+x));D=Q(D*e);A=Q(D+A);$=Q(h+Q(y+A));e=Q(C*e);C=Q(e+M);M=Q(i+Q(j+C));t=Q(f+Q(l+t));x=Q(g+Q(q+x));A=Q(h+Q(u+A));C=Q(i+Q(k+C));m=n;n=Q(r+s);r=Q(f+Q(m+n));m=o;o=Q(v+p);s=Q(g+Q(m+o));p=y;y=Q(D+E);v=Q(h+Q(p+y));p=j;j=Q(e+F);e=Q(i+Q(p+j));n=Q(f+Q(l+n));l=Q(g+Q(q+o));o=Q(h+Q(u+y));j=Q(i+Q(k+j));P=0;b=0;while(1){c=(b<<4)+a|0;f=N[c+12>>2];g=N[c+8>>2];h=N[c+4>>2];i=N[c>>2];b:{if(Q(Q(f*n)+Q(Q(g*l)+Q(Q(h*o)+Q(i*j))))>=Q(0)|Q(Q(f*r)+Q(Q(g*s)+Q(Q(h*v)+Q(i*e))))>=Q(0)|(Q(Q(f*t)+Q(Q(g*x)+Q(Q(h*A)+Q(i*C))))>=Q(0)|Q(Q(f*Z)+Q(Q(g*_)+Q(Q(h*$)+Q(i*M))))>=Q(0))){break b}if(Q(Q(f*B)+Q(Q(g*w)+Q(Q(h*z)+Q(i*Y))))>=Q(0)|Q(Q(f*K)+Q(Q(g*O)+Q(Q(h*X)+Q(i*L))))>=Q(0)|Q(Q(f*W)+Q(Q(g*G)+Q(Q(h*H)+Q(i*I))))>=Q(0)){break b}if(!(Q(Q(f*S)+Q(Q(g*T)+Q(Q(h*U)+Q(i*V))))>=Q(0))){break a}}b=b+1|0;P=(R|0)<=(b|0);if((b|0)!=(R|0)){continue}break}}return P}function Al(a,b,c,d,e,f,g){var h=0,i=0,j=0,k=0,l=0,m=0,n=0,o=0,p=0,q=0,r=0;h=Ui-272|0;Ui=h;J[h+264>>2]=0;J[h+268>>2]=0;J[h+256>>2]=0;J[h+260>>2]=0;J[h+248>>2]=0;J[h+252>>2]=0;J[h+240>>2]=0;J[h+244>>2]=0;a:{b:{i=h+240|0;if($l(a,i)){J[h+232>>2]=0;J[h+236>>2]=0;J[h+224>>2]=0;J[h+228>>2]=0;J[h+216>>2]=0;J[h+220>>2]=0;J[h+208>>2]=0;J[h+212>>2]=0;Sk(a,b,h+208|0,i);c:{i=J[h+240>>2];o=J[h+244>>2];if((i|0)==J[h+208>>2]&(o|0)==J[h+212>>2]){d:{if(!c){break d}l=J[c>>2];if(!l){break d}j=J[l+3216>>2];k=J[l+3220>>2]}if((j|0)==(i|0)&(k|0)==(o|0)){break c}}fj(a,120508,0);break a}m=xk(c,J[h+224>>2],J[h+228>>2]);if(!m){J[h>>2]=Ij(a,b,0);fj(a,70975,h);break a}c=J[h+232>>2];o=J[h+236>>2];q=h+204|0;n=Ui-16|0;Ui=n;e:{if(m){j=-5;b=J[m+84>>2];k=J[b+4>>2];f:{if(!k){break f}i=J[b>>2];b=0;while(1){p=P(b,96)+i|0;l=J[p+16>>2];if(J[p>>2]==(c|0)&J[p+4>>2]==(o|0)){k=J[p+20>>2];J[h+200>>2]=k;b=0;j=0;j=H[l+102|0]&1?J[(m+(r<<2)|0)+156>>2]:j;g:{h:{i=J[l+48>>2];if(!(i|q)){break h}c=J[J[J[m+80>>2]+8>>2]>>2];if(k>>>0>2]>>2]){b=J[(c+(k<<2)|0)+12>>2]}if(!i){break h}J[n+12>>2]=j;J[n+8>>2]=b;J[e>>2]=Zi[i|0](n+8|0);break g}J[e>>2]=j}j=0;if(!q){break f}J[q>>2]=b;break f}r=(I[l+102>>1]&1)+r|0;b=b+1|0;if((k|0)!=(b|0)){continue}break}}Ui=n+16|0;b=j;break e}Z(111337,38296,2115,13590);B()}i:{if(!d){if(!b){break b}if(J[e>>2]){break i}break b}if(!b){break b}}J[h+16>>2]=Ds(h+208|0,h- -64|0,128);fj(a,149566,h+16|0);break a}fj(a,124140,0);break a}if(g){J[g>>2]=J[h+204>>2]}j:{if(!d){break j}b=0;c=J[J[m+80>>2]+8>>2];k:{if(!c){break k}c=J[c>>2];if(!c){break k}b=J[c>>2]}if(am(b,d,h- -64|0)){J[h+48>>2]=d;fj(a,71119,h+48|0);break a}b=0;c=J[J[m+80>>2]+8>>2];l:{if(!c){break l}c=J[c>>2];if(!c){break l}b=J[c+4>>2]}b=P(J[h+200>>2],112)+b|0;if(J[b+8>>2]==J[h+64>>2]){break j}J[h+36>>2]=J[b+12>>2];J[h+32>>2]=d;fj(a,146941,h+32|0);break a}if(!f){break a}a=J[h+212>>2];J[f>>2]=J[h+208>>2];J[f+4>>2]=a;a=J[h+236>>2];J[f+24>>2]=J[h+232>>2];J[f+28>>2]=a;a=J[h+228>>2];J[f+16>>2]=J[h+224>>2];J[f+20>>2]=a;a=J[h+220>>2];J[f+8>>2]=J[h+216>>2];J[f+12>>2]=a}Ui=h+272|0}function vj(a,b){var c=0,d=0,e=0,f=0,g=0,h=0,i=0,j=0,k=0;h=Ui-32|0;Ui=h;J[h+28>>2]=0;a:{c=J[a+4>>2];d=J[c+4>>2];b:{if(!d){break b}d=J[J[c>>2]+((b>>>0)%(d>>>0)<<2)>>2];if((d|0)==-1){break b}c=J[c+8>>2];while(1){g=c+P(d,24)|0;if(J[g>>2]==(b|0)){break a}d=J[g+16>>2];if((d|0)!=-1){continue}break}}Z(53392,42212,1488,62678);B()}c:{e=J[a>>2];f=J[e+4>>2];d:{if(!f){break d}c=J[g+8>>2];i=J[g+12>>2];d=J[J[e>>2]+(mxa(c,i,f)<<2)>>2];if((d|0)==-1){break d}e=J[e+8>>2];while(1){d=e+P(d,56)|0;if((c|0)==J[d>>2]&(i|0)==J[d+4>>2]){break c}d=J[d+48>>2];if((d|0)!=-1){continue}break}}Z(70819,42212,1491,62678);B()}e:{f:{g:{h:{c=J[d+36>>2];if(c){c=c-1|0;J[d+36>>2]=c;if(!c){c=J[d+28>>2];J[h+24>>2]=0;J[h+20>>2]=c;J[h+8>>2]=a;e=J[c+12>>2];J[h+16>>2]=d+8;J[h+12>>2]=e;Zi[J[c+28>>2]](h+8|0)|0;fN(J[a+4>>2],b);c=J[g+8>>2];j=J[g+12>>2];d=0;i:{e=J[a>>2];b=J[e+4>>2];if(b){j:{k:{i=J[e>>2]+(mxa(c,j,b)<<2)|0;f=J[i>>2];if((f|0)!=-1){k=J[e+8>>2];b=k+P(f,56)|0;if((c|0)!=J[b>>2]|(j|0)!=J[b+4>>2]){break k}break j}break g}while(1){f=J[b+48>>2];if((f|0)==-1){break f}d=b;b=k+P(f,56)|0;if((c|0)!=J[b>>2]|(j|0)!=J[b+4>>2]){continue}break}}J[e+24>>2]=J[e+24>>2]-1;c=J[b+48>>2];l:{if(!d){J[i>>2]=c;break l}J[d+48>>2]=c}d=J[e+20>>2];J[e+20>>2]=f;J[b+48>>2]=d;break i}break e}f=J[a+8>>2];if(f){a=J[f+4>>2];if(!a){break e}e=J[g+8>>2];g=J[g+12>>2];i=J[f>>2]+(mxa(e,g,a)<<2)|0;d=J[i>>2];if((d|0)==-1){break g}a=J[f+8>>2];c=d;m:{while(1){c=a+(c<<4)|0;if((e|0)==J[c>>2]&(g|0)==J[c+4>>2]){break m}c=J[c+12>>2];if((c|0)!=-1){continue}break}c=0}if((d|0)==-1){break g}a=0;n:{j=J[f+8>>2];b=j+(d<<4)|0;if((e|0)==J[b>>2]&(g|0)==J[b+4>>2]){break n}while(1){a=b;d=J[b+12>>2];if((d|0)!=-1){b=j+(d<<4)|0;if(J[b>>2]!=(e|0)|J[b+4>>2]!=(g|0)){continue}break n}break}break f}J[f+24>>2]=J[f+24>>2]-1;b=a?a+12|0:i;a=j+(d<<4)|0;J[b>>2]=J[a+12>>2];b=J[f+20>>2];J[f+20>>2]=d;J[a+12>>2]=b;if(!c){break h}cj(J[c+8>>2])}}Ui=h+32|0;return}Z(111964,42212,1492,62678);B()}Z(31903,42212,1514,62678);B()}Z(85666,55629,340,62656);B()}Z(152754,55629,366,62656);B()}Z(113800,55629,334,62656);B()}function Cv(a,b,c,d,e){var f=Q(0),g=Q(0),h=Q(0),i=Q(0),j=Q(0),k=0,l=Q(0),m=Q(0),n=Q(0),o=Q(0),p=Q(0),q=Q(0),r=Q(0),s=Q(0),t=Q(0),u=Q(0),v=Q(0),w=Q(0),x=Q(0),y=Q(0),z=Q(0),A=Q(0),B=Q(0),C=Q(0),D=Q(0);k=K[e+16|0]&-16;H[e+16|0]=k;B=N[d+8>>2];m=N[b+8>>2];r=Q(B-m);l=N[a+8>>2];f=Q(l-m);C=N[d>>2];n=N[b>>2];s=Q(C-n);j=N[a>>2];g=Q(j-n);D=N[d+4>>2];o=N[b+4>>2];t=Q(D-o);p=N[a+4>>2];i=Q(p-o);h=Q(Q(r*f)+Q(Q(s*g)+Q(t*i)));x=N[c+8>>2];u=Q(x-m);y=N[c>>2];v=Q(y-n);z=N[c+4>>2];w=Q(z-o);g=Q(Q(u*f)+Q(Q(v*g)+Q(w*i)));a:{if(!(!(g<=Q(0))|!(h<=Q(0)))){a=J[b+4>>2];J[e>>2]=J[b>>2];J[e+4>>2]=a;a=J[b+12>>2];J[e+8>>2]=J[b+8>>2];J[e+12>>2]=a;H[e+16|0]=k|1;g=Q(0);f=Q(0);h=Q(1);break a}f=Q(l-x);i=Q(j-y);q=Q(p-z);A=Q(Q(r*f)+Q(Q(s*i)+Q(t*q)));i=Q(Q(u*f)+Q(Q(v*i)+Q(w*q)));if(!(!(i>=Q(0))|!(i>=A))){a=J[c+4>>2];J[e>>2]=J[c>>2];J[e+4>>2]=a;a=J[c+12>>2];J[e+8>>2]=J[c+8>>2];J[e+12>>2]=a;H[e+16|0]=k|2;g=Q(1);f=Q(0);h=Q(0);break a}q=Q(Q(g*A)-Q(i*h));b:{if(!(i<=Q(0))|!(g>=Q(0))){break b}f=Q(0);if(!(q<=Q(0))){break b}J[e+12>>2]=0;H[e+16|0]=k|3;g=Q(g/Q(g-i));N[e+8>>2]=m+Q(u*g);N[e+4>>2]=o+Q(w*g);N[e>>2]=n+Q(v*g);h=Q(Q(1)-g);break a}f=Q(l-B);j=Q(j-C);p=Q(p-D);l=Q(Q(u*f)+Q(Q(v*j)+Q(w*p)));f=Q(Q(r*f)+Q(Q(s*j)+Q(t*p)));if(!(!(f>=Q(0))|!(f>=l))){a=J[d+4>>2];J[e>>2]=J[d>>2];J[e+4>>2]=a;a=J[d+12>>2];J[e+8>>2]=J[d+8>>2];J[e+12>>2]=a;H[e+16|0]=k|4;f=Q(1);g=Q(0);h=Q(0);break a}j=Q(Q(l*h)-Q(g*f));c:{if(!(f<=Q(0))|!(h>=Q(0))){break c}g=Q(0);if(!(j<=Q(0))){break c}J[e+12>>2]=0;H[e+16|0]=k|5;f=Q(h/Q(h-f));N[e+8>>2]=m+Q(r*f);N[e+4>>2]=o+Q(t*f);N[e>>2]=n+Q(s*f);h=Q(Q(1)-f);break a}d:{h=Q(Q(i*f)-Q(l*A));if(!(h<=Q(0))){break d}g=Q(A-i);if(!(g>=Q(0))){break d}f=Q(l-f);if(!(f>=Q(0))){break d}J[e+12>>2]=0;H[e+16|0]=k|6;f=Q(g/Q(g+f));N[e+8>>2]=x+Q(Q(B-x)*f);N[e+4>>2]=z+Q(Q(D-z)*f);N[e>>2]=y+Q(Q(C-y)*f);g=Q(Q(1)-f);h=Q(0);break a}J[e+12>>2]=0;H[e+16|0]=k|7;g=Q(Q(1)/Q(q+Q(h+j)));f=Q(q*g);g=Q(j*g);N[e+8>>2]=Q(r*f)+Q(m+Q(u*g));N[e+4>>2]=Q(t*f)+Q(o+Q(w*g));N[e>>2]=Q(s*f)+Q(n+Q(v*g));h=Q(Q(Q(1)-g)-f)}J[e+32>>2]=0;N[e+28>>2]=f;N[e+24>>2]=g;N[e+20>>2]=h}function UE(a,b,c,d,e,f){var g=Q(0),h=Q(0),i=Q(0),j=Q(0),k=Q(0),l=Q(0),m=Q(0),n=Q(0),o=Q(0),p=Q(0),q=Q(0),r=0,s=0,t=Q(0),u=0;a:{if(!J[b+68>>2]){break a}b:{switch(J[b+64>>2]){case 0:J[a>>2]=1065353216;J[a+4>>2]=0;i=N[c+12>>2];g=N[b+56>>2];j=N[c+8>>2];l=N[b+60>>2];h=Q(N[c>>2]+Q(Q(i*g)-Q(j*l)));m=N[e+12>>2];n=N[b>>2];o=N[e+8>>2];p=N[b+4>>2];k=Q(N[e>>2]+Q(Q(m*n)-Q(o*p)));q=Q(h-k);j=Q(Q(Q(j*g)+Q(i*l))+N[c+4>>2]);l=Q(Q(Q(o*n)+Q(m*p))+N[e+4>>2]);i=Q(j-l);c:{if(!(Q(Q(q*q)+Q(i*i))>Q(14210854715202004e-30))){i=Q(1);g=Q(0);break c}g=Q(l-j);N[a+4>>2]=g;i=Q(k-h);N[a>>2]=i;m=Q(Y(Q(Q(i*i)+Q(g*g))));if(m>2]=g;i=Q(i*m);N[a>>2]=i}N[a+12>>2]=Q(Q(j+Q(d*g))+Q(l-Q(f*g)))*Q(.5);N[a+8>>2]=Q(Q(h+Q(d*i))+Q(k-Q(f*i)))*Q(.5);return;case 1:g=N[c+8>>2];h=N[b+48>>2];k=N[c+12>>2];j=N[b+52>>2];i=Q(Q(g*h)+Q(k*j));N[a+4>>2]=i;g=Q(Q(k*h)-Q(g*j));N[a>>2]=g;if(J[b+68>>2]<=0){break a}h=N[c+8>>2];k=N[b+56>>2];j=N[c+12>>2];l=N[b+60>>2];m=Q(Q(Q(h*k)+Q(j*l))+N[c+4>>2]);k=Q(N[c>>2]+Q(Q(j*k)-Q(h*l)));a=a+8|0;j=Q(f*i);l=Q(f*g);c=0;while(1){s=a+(c<<3)|0;h=N[e+8>>2];r=P(c,24)+b|0;n=N[r>>2];o=N[e+12>>2];p=N[r+4>>2];f=Q(Q(Q(h*n)+Q(o*p))+N[e+4>>2]);t=Q(f-j);q=f;h=Q(N[e>>2]+Q(Q(o*n)-Q(h*p)));f=Q(d-Q(Q(Q(h-k)*g)+Q(Q(f-m)*i)));N[s+4>>2]=Q(t+Q(q+Q(i*f)))*Q(.5);N[s>>2]=Q(Q(h-l)+Q(h+Q(g*f)))*Q(.5);c=c+1|0;if((c|0)>2]){continue}break};break a;case 2:break b;default:break a}}g=N[e+8>>2];h=N[b+48>>2];k=N[e+12>>2];j=N[b+52>>2];i=Q(Q(g*h)+Q(k*j));N[a+4>>2]=i;g=Q(Q(k*h)-Q(g*j));N[a>>2]=g;if(J[b+68>>2]>0){h=N[e+8>>2];k=N[b+56>>2];j=N[e+12>>2];l=N[b+60>>2];m=Q(Q(Q(h*k)+Q(j*l))+N[e+4>>2]);k=Q(N[e>>2]+Q(Q(j*k)-Q(h*l)));s=a+8|0;j=Q(d*i);l=Q(d*g);e=0;while(1){r=s+(e<<3)|0;h=N[c+8>>2];u=P(e,24)+b|0;n=N[u>>2];o=N[c+12>>2];p=N[u+4>>2];d=Q(Q(Q(h*n)+Q(o*p))+N[c+4>>2]);t=Q(d-j);q=d;h=Q(N[c>>2]+Q(Q(o*n)-Q(h*p)));d=Q(f-Q(Q(Q(h-k)*g)+Q(Q(d-m)*i)));N[r+4>>2]=Q(t+Q(q+Q(i*d)))*Q(.5);N[r>>2]=Q(Q(h-l)+Q(h+Q(g*d)))*Q(.5);e=e+1|0;if((e|0)>2]){continue}break}}N[a+4>>2]=-i;N[a>>2]=-g}}function UN(a,b){var c=0,d=0,e=0,f=0,g=0;e=Ui-112|0;Ui=e;c=J[J[a+24>>2]>>2];f=J[c+8>>2]-J[c+12>>2]>>4;a:{if(nx(c,b)){J[e+96>>2]=Ij(c,-1,0);dj(4,93318,28202,e+96|0);gj(c,-2);d=-1;break a}Nj(c,-1e4,J[a+32>>2]);Ok(c);g=Ol(c,0,0,0);d=J[c+8>>2];J[d+8>>2]=0;J[c+8>>2]=d+16;Ok(c);d=-2;if(g){break a}d=J[a>>2];if((d|0)!=-2){hk(c,-1e4,d);J[a>>2]=-2}rj(c,-10002,14312);b:{if((kj(c,-1)|0)==6){J[a>>2]=Lk(c,-1e4);break b}if(kj(c,-1)){J[e+84>>2]=J[b+8>>2];J[e+80>>2]=14312;dj(3,93318,136543,e+80|0)}gj(c,-2)}d=J[c+8>>2];J[d+8>>2]=0;J[c+8>>2]=d+16;ej(c,-10002,14312);d=J[a+4>>2];if((d|0)!=-2){hk(c,-1e4,d);J[a+4>>2]=-2}rj(c,-10002,50295);c:{if((kj(c,-1)|0)!=6){if(kj(c,-1)){J[e+68>>2]=J[b+8>>2];J[e+64>>2]=50295;dj(3,93318,136543,e- -64|0)}gj(c,-2);break c}J[a+4>>2]=Lk(c,-1e4)}d=J[c+8>>2];J[d+8>>2]=0;J[c+8>>2]=d+16;ej(c,-10002,50295);d=J[a+8>>2];if((d|0)!=-2){hk(c,-1e4,d);J[a+8>>2]=-2}rj(c,-10002,62049);d:{if((kj(c,-1)|0)!=6){if(kj(c,-1)){J[e+52>>2]=J[b+8>>2];J[e+48>>2]=62049;dj(3,93318,136543,e+48|0)}gj(c,-2);break d}J[a+8>>2]=Lk(c,-1e4)}d=J[c+8>>2];J[d+8>>2]=0;J[c+8>>2]=d+16;ej(c,-10002,62049);d=J[a+12>>2];if((d|0)!=-2){hk(c,-1e4,d);J[a+12>>2]=-2}rj(c,-10002,68395);e:{if((kj(c,-1)|0)!=6){if(kj(c,-1)){J[e+36>>2]=J[b+8>>2];J[e+32>>2]=68395;dj(3,93318,136543,e+32|0)}gj(c,-2);break e}J[a+12>>2]=Lk(c,-1e4)}d=J[c+8>>2];J[d+8>>2]=0;J[c+8>>2]=d+16;ej(c,-10002,68395);d=J[a+16>>2];if((d|0)!=-2){hk(c,-1e4,d);J[a+16>>2]=-2}rj(c,-10002,9469);f:{if((kj(c,-1)|0)!=6){if(kj(c,-1)){J[e+20>>2]=J[b+8>>2];J[e+16>>2]=9469;dj(3,93318,136543,e+16|0)}gj(c,-2);break f}J[a+16>>2]=Lk(c,-1e4)}d=J[c+8>>2];J[d+8>>2]=0;J[c+8>>2]=d+16;ej(c,-10002,9469);d=J[a+20>>2];if((d|0)!=-2){hk(c,-1e4,d);J[a+20>>2]=-2}rj(c,-10002,76202);g:{if((kj(c,-1)|0)!=6){if(kj(c,-1)){J[e+4>>2]=J[b+8>>2];J[e>>2]=76202;dj(3,93318,136543,e)}gj(c,-2);break g}J[a+20>>2]=Lk(c,-1e4)}d=J[c+8>>2];J[d+8>>2]=0;J[c+8>>2]=d+16;ej(c,-10002,76202);J[a+28>>2]=Gk(J[b+8>>2]);d=0}if(J[c+8>>2]-J[c+12>>2]>>4!=(f|0)){Z(143244,40876,4416,10493);B()}Ui=e+112|0;return d}function hja(a){a=a|0;var b=0,c=0,d=0,e=0,f=0,g=0,h=0;g=Ui-32|0;Ui=g;d=J[a+4>>2];b=J[d+20>>2];a:{b:{c:{c=J[J[a+24>>2]>>2];if(c>>>0>2]-b>>3>>>0){b=J[b+(c<<3)>>2];e=J[d+4>>2];if(b>>>0>=J[d+8>>2]-e>>2>>>0){break a}c=J[e+(b<<2)>>2];b=J[a+16>>2];e=J[a+20>>2];if((b|0)==J[75470]&(e|0)==J[75471]){b=c+156|0;h=J[b>>2];e=h;e=e?e:J[J[c+152>>2]+4>>2];a=xn(J[J[J[a+8>>2]+80>>2]>>2],a+32|0,J[75358],J[75359],b);f=K[c+204|0];H[c+204|0]=(a?f&4:4)|f&251;if(a){break b}f=J[b>>2];if(!f){f=J[J[c+152>>2]+4>>2]}a=g+12|0;J[a>>2]=0;J[a+4>>2]=0;J[a+16>>2]=0;J[a+8>>2]=0;J[a+12>>2]=0;b=g+8|0;Fr(J[f+4>>2],b);Ek(a,f+4|0,4);Ek(a,b,4);J[c+200>>2]=mn(a);b=J[c+156>>2];if(!((b|0)==(e|0)?h:0)){if(!MQ(b,a)){break c}a=J[c+196>>2];if(a){ll(a)}J[c+196>>2]=J[g+12>>2]}a=0;b=J[c+192>>2];if(!b){b=J[J[c+152>>2]+8>>2]}if(J[J[b>>2]+168>>2]!=1){break b}vQ(d,f,J[c+200>>2]);OD(d,J[e+8>>2],J[e+12>>2]);break b}d:{e:{f:{if((b|0)!=J[75378]|(e|0)!=J[75379]){if(J[75384]!=(b|0)|J[75385]!=(e|0)){break f}d=0;break e}e=c+192|0;b=J[e>>2];if(!b){b=J[J[c+152>>2]+8>>2]}f=J[J[b>>2]+168>>2];a=xn(J[J[J[a+8>>2]+80>>2]>>2],a+32|0,J[75356],J[75357],e);b=K[c+204|0];H[c+204|0]=(a?b&4:4)|b&251;b=J[e>>2];if(!b){b=J[J[c+152>>2]+8>>2]}b=J[J[b>>2]+168>>2];if((b|0)==1|(f|0)!=1|a){break b}a=J[c+156>>2];if(!a){a=J[J[c+152>>2]+4>>2]}OD(d,J[a+8>>2],J[a+12>>2]);a=0;break b}d=1;if((b|0)==J[75386]&(e|0)==J[75387]){break e}d=2;if((b|0)==J[75388]&(e|0)==J[75389]){break e}d=3;if((b|0)==J[75390]&(e|0)==J[75391]){break e}d=4;if((b|0)==J[75392]&(e|0)==J[75393]){break e}d=5;if((b|0)==J[75394]&(e|0)==J[75395]){break e}d=6;if((b|0)==J[75396]&(e|0)==J[75397]){break e}if(J[75398]!=(b|0)|J[75399]!=(e|0)){break d}d=7}a=xn(J[J[J[a+8>>2]+80>>2]>>2],a+32|0,J[75362],J[75363],(c+(d<<2)|0)+160|0);b=K[c+204|0];H[c+204|0]=(a?b&4:4)|b&251;break b}d=J[c+192>>2];if(!d){d=J[J[c+152>>2]+8>>2]}a=Wp(J[d>>2],b,e,a+32|0,J[a+104>>2],282,c);b=K[c+204|0];H[c+204|0]=(a?b&4:4)|b&251;break b}break a}dj(4,88458,126231,0);a=-8}Ui=g+32|0;return a|0}Z(145396,53895,487,84789);B()}function Jk(a,b,c,d,e,f,g,h,i,j){var k=0,l=0,m=0,n=0,o=0,p=0,q=0;o=Ui-16|0;Ui=o;J[o+12>>2]=0;m=-2;a:{b:{c:{if(!b){break c}k=J[b>>2];p=J[b+4>>2];if(J[218662]){break c}while(1){l=J[218661];J[218661]=l?l:1;if(l){continue}break}d:{l=J[218660];n=J[l+4>>2];e:{if(!n){break e}n=J[J[l>>2]+(mxa(k,p,n)<<2)>>2];if((n|0)==-1){break e}q=J[l+8>>2];while(1){l=q+(n<<6)|0;if((k|0)==J[l>>2]&(p|0)==J[l+4>>2]){break d}n=J[l+56>>2];if((n|0)!=-1){continue}break}}J[218661]=0;break c}k=J[l+8>>2];if(!k){break a}J[l+8>>2]=k+1;J[218661]=0;Tj(J[l+36>>2]);k=i+111&-16;if(k>>>0>=4097){break b}m=J[l+44>>2];f:{if(m){n=J[m+4096>>2];if(k>>>0<=4096-n>>>0){break f}J[m+4100>>2]=J[l+52>>2];J[l+52>>2]=m}m=J[l+48>>2];g:{if(m){J[l+48>>2]=J[m+4100>>2];break g}m=nj(4104)}J[m+4096>>2]=0;J[m+4100>>2]=0;J[l+44>>2]=m;n=0}J[m+4096>>2]=k+n;k=m+n|0;h:{if(a){m=J[a+4>>2];J[k>>2]=J[a>>2];J[k+4>>2]=m;m=J[a+28>>2];J[k+24>>2]=J[a+24>>2];J[k+28>>2]=m;m=J[a+20>>2];J[k+16>>2]=J[a+16>>2];J[k+20>>2]=m;m=J[a+12>>2];J[k+8>>2]=J[a+8>>2];J[k+12>>2]=m;break h}a=k;H[a|0]=0;H[a+1|0]=0;H[a+2|0]=0;H[a+3|0]=0;H[a+4|0]=0;H[a+5|0]=0;H[a+6|0]=0;H[a+7|0]=0;H[a+24|0]=0;H[a+25|0]=0;H[a+26|0]=0;H[a+27|0]=0;H[a+28|0]=0;H[a+29|0]=0;H[a+30|0]=0;H[a+31|0]=0;H[a+16|0]=0;H[a+17|0]=0;H[a+18|0]=0;H[a+19|0]=0;H[a+20|0]=0;H[a+21|0]=0;H[a+22|0]=0;H[a+23|0]=0;H[a+8|0]=0;H[a+9|0]=0;H[a+10|0]=0;H[a+11|0]=0;H[a+12|0]=0;H[a+13|0]=0;H[a+14|0]=0;H[a+15|0]=0}a=J[b+4>>2];J[k+32>>2]=J[b>>2];J[k+36>>2]=a;a=J[b+28>>2];J[k+56>>2]=J[b+24>>2];J[k+60>>2]=a;a=J[b+20>>2];J[k+48>>2]=J[b+16>>2];J[k+52>>2]=a;a=J[b+12>>2];J[k+40>>2]=J[b+8>>2];J[k+44>>2]=a;J[k+92>>2]=j;J[k+88>>2]=0;J[k+84>>2]=i;J[k+80>>2]=g;J[k+76>>2]=f;J[k+72>>2]=e;J[k+64>>2]=c;J[k+68>>2]=d;hj(k+96|0,h,i);i:{if(J[l+24>>2]){J[J[l+28>>2]+88>>2]=k;J[l+28>>2]=k;break i}J[l+28>>2]=k;J[l+24>>2]=k}a=l+8|0;Lj(J[l+36>>2]);while(1){b=J[218661];J[218661]=b?b:1;if(b){continue}break}b=J[a>>2]-1|0;J[a>>2]=b;m=0;J[218661]=0;if(b){break c}Yu(a)}Ui=o+16|0;return m}Z(94802,42022,102,68480);B()}Z(110696,42022,289,15448);B()}function qU(a,b,c){var d=0,e=0,f=0,g=0,h=0,i=0,j=0,k=0,l=0,m=0,n=0;a:{b:{c:{switch(b-a>>1){case 2:c=J[c>>2]+8|0;b=b-2|0;e=L[b>>1];d=L[a>>1];if(L[(c+P(e,112)|0)+104>>1]>=L[(c+P(d,112)|0)+104>>1]){break b}I[a>>1]=e;I[b>>1]=d;return 1;case 3:c=J[c>>2]+8|0;b=b-2|0;d=L[b>>1];g=L[(c+P(d,112)|0)+104>>1];h=L[a+2>>1];f=L[(c+P(h,112)|0)+104>>1];e=L[a>>1];i=c+P(e,112)|0;if(f>>>0>=L[i+104>>1]){if(g>>>0>=f>>>0){break b}I[a+2>>1]=d;I[b>>1]=h;b=L[a+2>>1];d=L[a>>1];if(L[(c+P(b,112)|0)+104>>1]>=L[(c+P(d,112)|0)+104>>1]){break b}break a}if(g>>>0>>0){I[a>>1]=d;I[b>>1]=e;return 1}I[a+2>>1]=e;I[a>>1]=h;d=L[b>>1];if(L[(c+P(d,112)|0)+104>>1]>=L[i+104>>1]){break b}I[a+2>>1]=d;I[b>>1]=e;return 1;case 4:$v(a,a+2|0,a+4|0,b-2|0,c);return 1;case 5:$v(a,a+2|0,a+4|0,a+6|0,c);c=J[c>>2]+8|0;b=b-2|0;e=L[b>>1];d=L[a+6>>1];if(L[(c+P(e,112)|0)+104>>1]>=L[(c+P(d,112)|0)+104>>1]){break b}I[a+6>>1]=e;I[b>>1]=d;b=L[a+6>>1];e=c+P(b,112)|0;d=L[a+4>>1];if(L[e+104>>1]>=L[(c+P(d,112)|0)+104>>1]){break b}I[a+4>>1]=b;I[a+6>>1]=d;d=L[a+2>>1];if(L[e+104>>1]>=L[(c+P(d,112)|0)+104>>1]){break b}I[a+4>>1]=d;I[a+2>>1]=b;d=L[a>>1];if(L[e+104>>1]>=L[(c+P(d,112)|0)+104>>1]){break b}break a;case 0:case 1:break b;default:break c}}h=J[c>>2]+8|0;f=L[a+4>>1];c=h+P(f,112)|0;i=c;j=L[a>>1];e=h+P(j,112)|0;m=e;n=L[c+104>>1];g=a+2|0;d=a+4|0;k=L[a+2>>1];l=L[(h+P(k,112)|0)+104>>1];d:{e:{if(l>>>0>=L[e+104>>1]){if(n>>>0>=l>>>0){break d}I[g>>1]=f;I[d>>1]=k;c=a;e=g;if(L[i+104>>1]>1]){break e}break d}c=a;e=d;if(n>>>0>>0){break e}I[a+2>>1]=j;I[a>>1]=k;c=g;if(L[i+104>>1]>=L[m+104>>1]){break d}}I[c>>1]=f;I[e>>1]=j}e=a+6|0;if((e|0)==(b|0)){break b}g=0;while(1){f:{i=L[e>>1];j=h+P(i,112)|0;f=L[d>>1];if(L[j+104>>1]>=L[(h+P(f,112)|0)+104>>1]){break f}c=e;while(1){g:{I[c>>1]=f;c=d;if((c|0)==(a|0)){c=a;break g}d=c-2|0;f=L[d>>1];if(L[j+104>>1]>1]){continue}}break}I[c>>1]=i;g=g+1|0;if((g|0)!=8){break f}return(e+2|0)==(b|0)}d=e;c=d+2|0;e=c;if((b|0)!=(c|0)){continue}break}}return 1}I[a+2>>1]=d;I[a>>1]=b;return 1}function KQ(a,b,c,d){var e=0,f=0,g=0,h=0,i=0,j=0,k=0,l=0,m=0;e=Ui-112|0;Ui=e;m=J[a+8>>2]-J[a+12>>2]>>4;rj(a,-1,23613);a:{if(!kj(a,-1)){break a}Oj(a,-1,5);f=J[a+8>>2];J[f+8>>2]=0;J[a+8>>2]=f+16;if(!$j(a,-2)){break a}while(1){Oj(a,-1,5);f=Ej(a,-2);rj(a,-1,25047);Oj(a,-1,5);if(fl(a,-1)&1){J[e+100>>2]=f;J[e+96>>2]=25047;fj(a,84611,e+96|0)}g=J[a+8>>2];J[g+8>>2]=0;J[a+8>>2]=g+16;if($j(a,-2)){while(1){Ej(a,-1);Oj(a,-2,3);gj(a,-2);if($j(a,-2)){continue}break}}gj(a,-2);rj(a,-1,17417);Oj(a,-1,5);if(fl(a,-1)&1){J[e+84>>2]=f;J[e+80>>2]=17417;fj(a,84611,e+80|0)}g=J[a+8>>2];J[g+8>>2]=0;J[a+8>>2]=g+16;if($j(a,-2)){while(1){Ej(a,-1);Oj(a,-2,3);gj(a,-2);if($j(a,-2)){continue}break}}gj(a,-2);rj(a,-1,25223);Oj(a,-1,5);if((fl(a,-1)>>>0)%3|0){J[e+68>>2]=f;J[e+64>>2]=25223;fj(a,84611,e- -64|0)}f=J[a+8>>2];J[f+8>>2]=0;J[a+8>>2]=f+16;if($j(a,-2)){while(1){Ej(a,-1);Oj(a,-2,3);gj(a,-2);if($j(a,-2)){continue}break}}gj(a,-2);rj(a,-1,52997);In(a,52997,0);gj(a,-2);rj(a,-1,14691);In(a,14691,0);gj(a,-2);rj(a,-1,5854);hr(a,5854,Q(0));gj(a,-2);rj(a,-1,4238);hr(a,4238,Q(0));gj(a,-2);gj(a,-2);h=h+1|0;if($j(a,-2)){continue}break}}gj(a,-2);rj(a,-1,20110);b:{if(!kj(a,-1)){f=h;break b}Oj(a,-1,5);f=J[a+8>>2];J[f+8>>2]=0;J[a+8>>2]=f+16;f=h;if(!$j(a,-2)){break b}l=f+1|0;while(1){Oj(a,-1,5);k=Ej(a,-2);rj(a,-1,72520);if(!Mk(a,-1)){J[e+48>>2]=i+1;fj(a,64335,e+48|0)}gj(a,-2);ou(a,52997);ou(a,14691);g=ou(a,10376);j=ou(a,71372);rj(a,-1,51422);In(a,51422,0);gj(a,-2);rj(a,-1,19855);In(a,19855,0);gj(a,-2);rj(a,-1,50577);st(a,50577,0);gj(a,-2);rj(a,-1,50151);st(a,50151,0);gj(a,-2);if(!(g>>>0<=l>>>0&(g|0)>0)){J[e+40>>2]=h;J[e+36>>2]=g;J[e+32>>2]=k;fj(a,76924,e+32|0)}if(!(j>>>0<=l>>>0&(j|0)>0)){J[e+24>>2]=h;J[e+20>>2]=j;J[e+16>>2]=k;fj(a,77008,e+16|0)}g=j-g|0;if((g|0)<=0){J[e+4>>2]=g;J[e>>2]=k;fj(a,78692,e)}gj(a,-2);f=f+g|0;i=i+1|0;if($j(a,-2)){continue}break}}gj(a,-2);J[c>>2]=i;J[b>>2]=h;J[d>>2]=f;if(!h){fj(a,67672,0)}if(!i){fj(a,67612,0)}if(J[a+8>>2]-J[a+12>>2]>>4!=(m|0)){Z(42939,42133,1907,18278);B()}Ui=e+112|0}function GW(a){a=a|0;var b=0,c=0,d=0,e=0,f=0,g=0,h=0,i=0,j=0,k=0,l=0,m=0,n=0,o=0;b=Ui-1328|0;Ui=b;d=Aj(a,1,b+1320|0);e=Aj(a,2,0);c=kj(a,3);l=Zm(a,4,J[b+1320>>2]+1|0);f=K[e|0];g=(f|0)==94;if(c-3>>>0>=4){Dk(a,3,73838)}m=e+g|0;e=b+12|0;J[e+4>>2]=0;J[e+8>>2]=a;J[e>>2]=e+12;J[b+1056>>2]=a;J[b+1048>>2]=d;J[b+1052>>2]=J[b+1320>>2]+d;j=b+1048|0;n=(f|0)!=94;while(1){a:{if((k|0)>=(l|0)){e=d;break a}J[b+1060>>2]=0;e=Gn(b+1048|0,d,m);b:{if(e){c:{d:{e:{f:{g:{f=J[b+1056>>2];switch(kj(f,3)-3|0){case 3:break f;case 0:case 1:break g;case 2:break e;default:break d}}h=Ij(J[b+1056>>2],3,b+1324|0);if(!J[b+1324>>2]){break c}o=e-d|0;c=0;while(1){i=c+h|0;f=K[i|0];h:{if((f|0)!=37){g=J[b+12>>2];if(j>>>0<=g>>>0){_l(b+12|0);g=J[b+12>>2];f=K[i|0]}J[b+12>>2]=g+1;H[g|0]=f;break h}c=c+1|0;i=h+c|0;f=K[i|0];if(f-48>>>0>=10){g=J[b+12>>2];if(j>>>0<=g>>>0){_l(b+12|0);g=J[b+12>>2];f=K[i|0]}J[b+12>>2]=g+1;H[g|0]=f;break h}if((f|0)==48){Yn(b+12|0,d,o);break h}rw(b+1048|0,(f<<24>>24)-49|0,d,e);ju(b+12|0)}c=c+1|0;if(c>>>0>2]){continue}break}break c}uj(f,3);c=J[b+1060>>2];g=d?c?c:1:c;Gp(J[b+1056>>2],g,22490);c=0;if((g|0)>0){while(1){rw(b+1048|0,c,d,e);c=c+1|0;if((g|0)!=(c|0)){continue}break}}Wk(f,g,1);break d}i:{if(J[b+1060>>2]<=0){mj(J[b+1056>>2],d,e-d|0);break i}j:{k:{l:{c=J[b+1068>>2];switch(c+2|0){case 1:break k;case 0:break l;default:break j}}g=(J[b+1064>>2]-J[b+1048>>2]|0)+1|0;c=J[b+1056>>2];h=J[c+8>>2];J[h+8>>2]=3;O[h>>3]=g|0;J[c+8>>2]=J[c+8>>2]+16;break i}fj(J[b+1056>>2],63668,0)}mj(J[b+1056>>2],J[b+1064>>2],c)}Ck(f,3)}m:{if(!ck(f,-1)){gj(f,-2);mj(f,d,e-d|0);break m}if(Mk(f,-1)){break m}c=kj(f,-1);if((c|0)==-1){c=60960}else{c=J[(c<<2)+257632>>2]}J[b>>2]=c;fj(f,137069,b)}ju(b+12|0)}k=k+1|0;if(d>>>0>>0){break b}}if(M[b+1052>>2]<=d>>>0){e=d;break a}c=J[b+12>>2];if(j>>>0<=c>>>0){_l(b+12|0);c=J[b+12>>2]}e=K[d|0];J[b+12>>2]=c+1;H[c|0]=e;e=d+1|0}d=e;if(n){continue}}break}d=b+12|0;Yn(d,e,J[b+1052>>2]-e|0);Ym(d);d=J[a+8>>2];J[d+8>>2]=3;O[d>>3]=k|0;J[a+8>>2]=J[a+8>>2]+16;Ui=b+1328|0;return 2}function hoa(a,b){a=a|0;b=b|0;var c=0,d=0,e=0,f=0,g=0,h=0,i=0,j=0;d=Ui-80|0;Ui=d;c=J[a+80>>2];a:{if(c){e=a+96|0;nE(c,e);if((c|0)==J[64258]){a=J[e>>2];J[b+148>>2]=-1;J[b+144>>2]=a;H[b+152|0]=0;break a}if((c|0)==J[64340]){J[b+16>>2]=Gk(65327);c=0;e=J[e>>2];if(e){g=Gk(e)}e=J[a+100>>2];if(e){c=Gk(e)}e=0;f=J[a+104>>2];if(f){h=Gk(f)}f=J[a+108>>2];if(f){e=Gk(f)}f=0;j=J[a+112>>2];if(j){i=Gk(j)}a=J[a+116>>2];if(a){f=Gk(a)}J[b+20>>2]=g;a=1;b:{if(!g|!K[g|0]){break b}J[b+24>>2]=c;a=2;if(!c|!K[c|0]){break b}J[b+28>>2]=h;a=3;if(!h|!K[h|0]){break b}J[b+32>>2]=e;a=4;if(!e|!K[e|0]){break b}J[b+36>>2]=i;a=5;if(!i|!K[i|0]){break b}J[b+40>>2]=f;a=6;if(!f){break b}a=K[f|0]?7:6}H[b+152|0]=0;J[b+12>>2]=a;J[b+148>>2]=1;break a}if((c|0)==J[64259]){break a}if((c|0)==J[64260]){if(!K[269788]){break a}H[b+248|0]=K[b+248|0]^1;break a}if((c|0)==J[64294]){J[b+512>>2]=J[a+100>>2];c=Zi[J[79383]](J[b+224>>2])|0;e=Zi[J[79384]](J[b+224>>2])|0;J[d+56>>2]=0;J[d+60>>2]=0;J[d+64>>2]=0;J[d+68>>2]=0;J[d+72>>2]=0;J[d+76>>2]=30;J[d+60>>2]=e;J[d+56>>2]=c;J[d+72>>2]=J[a+96>>2];J[d+76>>2]=J[a+104>>2];J[d+16>>2]=-3;dj(4,95703,141112,d+16|0);J[b+500>>2]=0;break a}if((c|0)==J[64295]){if(J[b+500>>2]){a=J[b+504>>2];if(a){cj(a)}J[b+500>>2]=0;J[b+504>>2]=0;break a}dj(4,95703,18676,0);break a}if((c|0)==J[64374]){J[b+468>>2]=J[e>>2];break a}if((c|0)==J[54496]){if(H[(Zi[J[79381]](J[b+224>>2])|0)+89|0]&1){Ob()}break a}if((c|0)==J[64358]){VR(b,J[e>>2]);break a}if((c|0)==J[54514]){a=J[b+300>>2];c=J[b+284>>2];if(c){Jy(a,c,e);break a}Jy(a,J[b+288>>2],e);Jy(a,J[b+296>>2],e);Jy(a,J[b+292>>2],e);break a}if((c|0)==J[64375]){a=J[b+228>>2];H[a+2504|0]=K[a+2504|0]&239;break a}b=dm(J[a>>2],J[a+4>>2]);e=tj(J[a+16>>2],J[a+20>>2]);a=tj(J[a+24>>2],J[a+28>>2]);c=J[c+4>>2];J[d+48>>2]=a;J[d+44>>2]=e;J[d+40>>2]=b;J[d+36>>2]=48819;J[d+32>>2]=c;dj(4,95703,117953,d+32|0);break a}b=dm(J[a>>2],J[a+4>>2]);c=tj(J[a+16>>2],J[a+20>>2]);J[d+12>>2]=tj(J[a+24>>2],J[a+28>>2]);J[d+8>>2]=c;J[d+4>>2]=b;J[d>>2]=48819;dj(4,95703,26479,d)}Ui=d+80|0}function Y8(a){a=a|0;var b=0,c=0,d=0,e=0,f=0,g=0,h=0,i=0,j=0,k=0,l=0,m=0,n=Q(0),o=Q(0),p=0;j=Ui-32|0;Ui=j;m=pj(j+12|0,a,0,37682,4625);Bj(a);d=qj(a,-1,J[219396],139183);gj(a,-2);Qj(a,1,j+8|0);a:{b:{c:{if(J[a+8>>2]-J[a+12>>2]>>4<2){break c}if(!kj(a,2)){break c}a=$m(a,2);b=114627;if(!a){break b}h=sj(20);J[h+12>>2]=d;J[h+8>>2]=a;J[h+16>>2]=J[j+8>>2];J[h>>2]=2322;J[h+4>>2]=h}c=Ui-160|0;Ui=c;d:{e:{f:{g:{h:{l=J[j+8>>2];a=l&65535;b=J[d+32>>2];if(a>>>0<(J[d+36>>2]-b|0)/672>>>0){e=b+P(a,672)|0;if(L[e+648>>1]!=(l>>>16|0)){break h}if((a|0)!=L[e+650>>1]){break g}a=-10;i:{if((J[e+476>>2]&240)!=80){break i}b=J[e+620>>2];f=b;a=J[e+616>>2];if(!(b|a)){dj(4,93318,15149,0);a=-5;break i}b=J[d+264>>2];if((b|0)==J[d+268>>2]){J[c>>2]=(b-J[d+260>>2]|0)/12;dj(4,93318,75779,c);a=-4;break i}k=J[d+236>>2];i=J[J[d+228>>2]+(mxa(a,f,J[d+232>>2])<<2)>>2];b=k+(i<<4)|0;if(J[b>>2]!=(a|0)|J[b+4>>2]!=(f|0)){while(1){i=J[(k+(i<<4)|0)+12>>2];g=k+(i<<4)|0;if((a|0)!=J[g>>2]|J[g+4>>2]!=(f|0)){continue}break}}i=J[(k+(i<<4)|0)+8>>2];f=BM(J[d+224>>2],i,h);a=J[e+476>>2];j:{if((a&196608)!=131072){break j}J[e+476>>2]=a&-196609;if(K[877576]){break j}H[877576]=1;J[c+16>>2]=tj(J[e+640>>2],J[e+644>>2]);dj(3,93318,133852,c+16|0)}a=c+96|0;Xs(d,e,2,a);rq(c+48|0,a);b=J[d+224>>2];N[c+40>>2]=N[c+72>>2];a=J[c+68>>2];J[c+32>>2]=J[c+64>>2];J[c+36>>2]=a;g=c+32|0;Px(b,f,g);b=J[d+224>>2];a=J[c+52>>2];J[c+32>>2]=J[c+48>>2];J[c+36>>2]=a;a=J[c+60>>2];J[c+40>>2]=J[c+56>>2];J[c+44>>2]=a;Ox(b,f,g);n=N[c+80>>2];o=N[c+84>>2];Nx(J[d+224>>2],f,n>2];b=J[d+264>>2]-g|0;a=((b|0)/12|0)+1|0;if(a>>>0>(J[d+268>>2]-g|0)/12>>>0){break f}J[d+264>>2]=g+P(a,12);if(b>>>0>=4294967284){break e}a=b+g|0;J[a+8>>2]=l;J[a>>2]=f;J[a+4>>2]=i;J[e+628>>2]=f;J[e+624>>2]=i;yC(J[d+224>>2],f);a=0}Ui=c+160|0;break d}break e}Z(47372,40876,188,69601);B()}Z(5388,40876,189,69601);B()}Z(144782,53895,514,59583);B()}Z(145396,53895,487,84789);B()}if((a|0)!=-10){break a}b=126181;if(!h){break b}cj(h);b=126181}p=Jj(m,b,0)}oj(m);Ui=j+32|0;return p|0}function xr(a,b,c,d,e,f,g){var h=0,i=0,j=0,k=0,l=0;h=Ui-112|0;Ui=h;a:{b:{c:{d:{e:{f:{g:{k=J[a+4>>2]-J[a>>2]>>2;if((k|0)>0){while(1){j=J[a>>2];if(J[a+4>>2]-j>>2>>>0<=i>>>0){break a}j=J[j+(i<<2)>>2];if(J[j+8>>2]==(c|0)&J[j+12>>2]==(d|0)){break g}i=i+1|0;if((k|0)!=(i|0)){continue}break}}j=a+4|0;k=hC(c,d);i=J[a+4>>2];l=J[a+8>>2];if((i|0)==(l|0)){if(H[a+12|0]&1){break c}lj((i-J[a>>2]>>2)+4|0,4,a,a+8|0,j);l=J[a+8>>2];i=J[a+4>>2]}if((i|0)==(l|0)){break b}J[j>>2]=i+4;J[i>>2]=k;i=0;if(!Tu(b,c,d,h+108|0)){break d}i=J[h+108>>2];J[h+104>>2]=L[i+32>>1];b=J[J[h+108>>2]+16>>2];i=J[i>>2];if(!i){break f}Ru(k,i,J[h+104>>2]);J[k+16>>2]=b;break e}b=J[a>>2];if(J[a+4>>2]-b>>2>>>0<=i>>>0){break a}i=J[b+(i<<2)>>2];break d}if((b|0)==9){J[h+88>>2]=0;J[h+92>>2]=0;J[h+80>>2]=0;J[h+84>>2]=0;J[h+72>>2]=0;J[h+76>>2]=0;b=h- -64|0;J[b>>2]=0;J[b+4>>2]=0;J[h+56>>2]=0;J[h+60>>2]=0;J[h+48>>2]=0;J[h+52>>2]=0;J[h+40>>2]=0;J[h+44>>2]=0;J[h+32>>2]=0;J[h+36>>2]=0;Ru(k,h+32|0,4);break e}J[h+40>>2]=0;J[h+44>>2]=0;J[h+32>>2]=0;J[h+36>>2]=0;Ru(k,h+32|0,1)}i=k}J[h+32>>2]=0;J[h+32>>2]=L[i+32>>1];k=J[i>>2];j=e<<2;b=e;e=J[i+16>>2];b=(e|0)==9?j:b;i=J[h+32>>2];h:{if(b>>>0>=i>>>0){J[h+16>>2]=tj(c,d);J[h+24>>2]=b;J[h+20>>2]=J[h+32>>2];dj(4,88458,9090,h+16|0);break h}b=k+(b<<4)|0;i:{if((e|0)==9){if(f){a=tj(c,d);J[h+4>>2]=j;J[h>>2]=a;dj(4,88458,127835,h);break h}e=J[g+12>>2];J[b>>2]=J[g+8>>2];J[b+4>>2]=e;e=g- -64|0;f=J[e+4>>2];J[b+56>>2]=J[e>>2];J[b+60>>2]=f;e=J[g+60>>2];J[b+48>>2]=J[g+56>>2];J[b+52>>2]=e;e=J[g+52>>2];J[b+40>>2]=J[g+48>>2];J[b+44>>2]=e;e=J[g+44>>2];J[b+32>>2]=J[g+40>>2];J[b+36>>2]=e;e=J[g+36>>2];J[b+24>>2]=J[g+32>>2];J[b+28>>2]=e;e=J[g+28>>2];J[b+16>>2]=J[g+24>>2];J[b+20>>2]=e;e=J[g+20>>2];J[b+8>>2]=J[g+16>>2];J[b+12>>2]=e;break i}if(!f){e=J[g+8>>2];f=J[g+12>>2];j=J[g+20>>2];J[b+8>>2]=J[g+16>>2];J[b+12>>2]=j;J[b>>2]=e;J[b+4>>2]=f;break i}N[b+(J[f>>2]<<2)>>2]=O[g+8>>3]}yP(a,c,d,k,i)}Ui=h+112|0;return}Z(151729,53895,501,2284);B()}Z(112520,53895,557,53220);B()}Z(145396,53895,487,84789);B()}function Yva(a,b){a=a|0;b=b|0;var c=0,d=Q(0),e=Q(0),f=Q(0),g=Q(0),h=Q(0),i=0,j=0,k=Q(0),l=Q(0),m=Q(0),n=Q(0),o=Q(0),p=Q(0),q=0,r=0,s=Q(0),t=Q(0),u=Q(0),v=0,w=Q(0),x=Q(0),y=Q(0),z=Q(0),A=Q(0),B=Q(0),C=Q(0),D=Q(0),E=Q(0);c=J[a+48>>2];v=J[c+8>>2];J[a+108>>2]=v;j=J[a+52>>2];q=J[j+8>>2];J[a+112>>2]=q;o=N[c+32>>2];i=J[c+32>>2];p=N[c+28>>2];r=J[c+28>>2];J[a+140>>2]=r;J[a+144>>2]=i;E=N[j+32>>2];i=J[j+32>>2];k=N[j+28>>2];J[a+148>>2]=J[j+28>>2];J[a+152>>2]=i;t=N[c+120>>2];N[a+156>>2]=t;u=N[j+120>>2];N[a+160>>2]=u;w=N[c+128>>2];N[a+164>>2]=w;x=N[j+128>>2];N[a+168>>2]=x;l=N[a+84>>2];j=J[b+24>>2];c=P(v,12);r=j+c|0;e=N[r+8>>2];f=Hj(e);d=N[a+80>>2];e=Rj(e);i=J[b+28>>2];c=c+i|0;y=N[c>>2];z=N[c+4>>2];A=N[c+8>>2];q=P(q,12);c=q+i|0;B=N[c>>2];C=N[c+4>>2];D=N[c+8>>2];g=N[r>>2];c=j+q|0;h=N[c>>2];s=N[r+4>>2];m=N[c+4>>2];n=N[c+8>>2];d=Q(d-p);l=Q(l-o);p=Q(Q(e*d)-Q(f*l));N[a+124>>2]=p;l=Q(Q(f*d)+Q(e*l));N[a+128>>2]=l;e=N[a+92>>2];f=Hj(n);d=N[a+88>>2];o=Rj(n);k=Q(d-k);e=Q(e-E);n=Q(Q(o*k)-Q(f*e));N[a+132>>2]=n;k=Q(Q(f*k)+Q(o*e));N[a+136>>2]=k;d=Q(0);f=Q(0);e=Q(0);g=Q(Q(Q(h+n)-g)-p);h=Q(Q(Q(m+k)-s)-l);s=Q(Y(Q(Q(g*g)+Q(h*h))));if(s>Q(.004999999888241291)){f=Q(Q(1)/s);e=Q(h*f);f=Q(g*f)}N[a+120>>2]=e;N[a+116>>2]=f;g=Q(Q(n*e)-Q(k*f));h=Q(Q(x*g)*g);g=Q(Q(p*e)-Q(l*f));h=Q(h+Q(u+Q(Q(Q(w*g)*g)+t)));g=h!=Q(0)?Q(Q(1)/h):Q(0);N[a+172>>2]=g;m=N[a+68>>2];if(m>Q(0)){o=h;h=N[b>>2];d=Q(m*Q(6.2831854820251465));m=Q(d*Q(d*g));d=Q(h*Q(Q(h*m)+Q(d*Q(Q(g+g)*N[a+72>>2]))));d=d!=Q(0)?Q(Q(1)/d):Q(0);g=Q(o+d);N[a+172>>2]=g!=Q(0)?Q(Q(1)/g):Q(0);h=Q(Q(m*Q(h*Q(s-N[a+104>>2])))*d)}else{h=Q(0)}N[a+76>>2]=h;N[a+96>>2]=d;a:{if(K[b+20|0]==1){d=Q(N[b+8>>2]*N[a+100>>2]);N[a+100>>2]=d;e=Q(e*d);f=Q(f*d);D=Q(Q(x*Q(Q(n*e)-Q(k*f)))+D);A=Q(A-Q(w*Q(Q(p*e)-Q(l*f))));C=Q(C+Q(u*e));B=Q(B+Q(u*f));z=Q(z-Q(t*e));y=Q(y-Q(t*f));break a}J[a+100>>2]=0}i=J[b+28>>2]+P(v,12)|0;N[i+4>>2]=z;N[i>>2]=y;i=J[b+28>>2];N[(i+P(J[a+108>>2],12)|0)+8>>2]=A;i=i+P(J[a+112>>2],12)|0;N[i+4>>2]=C;N[i>>2]=B;N[(J[b+28>>2]+P(J[a+112>>2],12)|0)+8>>2]=D}function QQ(a,b,c,d,e){var f=0,g=0,h=0,i=0,j=0,k=0,l=0,m=0,n=0,o=0,p=0,q=Q(0),r=0,s=0,t=0,u=Q(0),v=Q(0);l=Ui-16|0;Ui=l;a:{b:{c:{d:{e:{if(e){e=Ou(b,J[c>>2],0);if(e){break e}}J[d+4>>2]=c;e=wk(b,J[c>>2],d);if(e){break e}e=wk(b,J[c+12>>2],d+24|0);if(e){break e}if(J[J[J[d+24>>2]>>2]+168>>2]){dj(4,88458,151155,0);e=-15;break e}if(J[c+16>>2]==2){J[c+16>>2]=1}p=J[d>>2];i=-2147483648;j=-2147483648;b=2147483647;f=2147483647;e=J[c+8>>2];if(e){while(1){if(e>>>0<=k>>>0){break d}e=J[c+4>>2]+(k<<5)|0;J[e+16>>2]=bj(J[e>>2]);J[e+20>>2]=Yi;h=J[e+28>>2];f:{if(!h){break f}m=J[e+24>>2];e=0;if((h|0)!=1){t=h&-2;r=0;while(1){n=m+P(e,24)|0;g=J[n+4>>2];b=(b|0)<(g|0)?b:g;o=m+P(e|1,24)|0;s=J[o+4>>2];b=(b|0)<(s|0)?b:s;n=J[n>>2];f=(f|0)<(n|0)?f:n;o=J[o>>2];f=(f|0)<(o|0)?f:o;g=g+1|0;i=(i|0)>(g|0)?i:g;g=s+1|0;i=(i|0)>(g|0)?i:g;g=n+1|0;j=(j|0)>(g|0)?j:g;g=o+1|0;j=(j|0)>(g|0)?j:g;e=e+2|0;r=r+2|0;if((t|0)!=(r|0)){continue}break}}if(!(h&1)){break f}h=m+P(e,24)|0;e=J[h+4>>2];b=(b|0)<(e|0)?b:e;h=J[h>>2];f=(f|0)<(h|0)?f:h;e=e+1|0;i=(e|0)<(i|0)?i:e;e=h+1|0;j=(e|0)<(j|0)?j:e}e=J[c+8>>2];k=k+1|0;if(e>>>0>k>>>0){continue}break}}J[d+40>>2]=b;J[d+36>>2]=f;J[d+28>>2]=j-f;J[d+32>>2]=J[d+32>>2]&-2147483648|i-b&2147483647;h=J[p+100>>2];g:{if(!h){break g}e=J[p+96>>2];J[l+8>>2]=0;if(H[d+20|0]&1){break c}c=J[c+8>>2];lj(c,4,d+8|0,d+16|0,d+12|0);k=J[d+8>>2];if(c>>>0>J[d+16>>2]-k>>2>>>0){break b}J[d+12>>2]=k+(c<<2);k=J[e+32>>2];m=J[e+36>>2];N[l+4>>2]=Q(Q(m>>>0)*Q(.5))*Q(b+i|0);N[l>>2]=Q(Q(k>>>0)*Q(.5))*Q(f+j|0);if(!c){break g}e=0;while(1){f=J[d+32>>2]&2147483647;i=J[d+28>>2];b=Ui-16|0;Ui=b;u=N[l+4>>2];q=N[a+64>>2];v=N[l>>2];j=nj(64);N[b+12>>2]=q*u;N[b+8>>2]=q*v;p=J[b+12>>2];J[b>>2]=J[b+8>>2];J[b+4>>2]=p;f=TU(j,h,b,Q(q*Q(k>>>0)),Q(q*Q(m>>>0)),f,i);Ui=b+16|0;b=J[d+8>>2];if(J[d+12>>2]-b>>2>>>0<=e>>>0){break a}J[b+(e<<2)>>2]=f;e=e+1|0;if((c|0)!=(e|0)){continue}break}}e=0}Ui=l+16|0;return e}Z(12664,55417,190,84789);B()}Z(151729,53895,501,2284);B()}Z(144782,53895,514,59583);B()}Z(145396,53895,487,84789);B()}function TP(a,b,c,d,e,f,g,h){var i=0,j=0,k=0,l=0,m=0,n=0,o=0,p=Q(0),q=0,r=0,s=0,t=0;i=Ui-336|0;Ui=i;if(g){t=i+132|0;while(1){k=J[((m<<4)+b|0)+8>>2];fm(i+320|0,a,k,3);fm(i+304|0,a,k,5);fm(i+288|0,a,k,6);a:{b:{c:{d:{if((Tp(a,k)|0)==1){l=mD(a,k);if(!l){break a}o=J[l+4>>2];if(!o){break a}l=Fo(a,k);e:{if(l){l=J[l>>2];break e}l=J[o+16>>2]}r=pC(i+16|0);s=m<<2;p=N[s+d>>2];N[i+92>>2]=p;N[i+88>>2]=N[i+328>>2];j=J[i+324>>2];J[i+80>>2]=J[i+320>>2];J[i+84>>2]=j;N[i+104>>2]=N[i+312>>2];j=J[i+308>>2];J[i+96>>2]=J[i+304>>2];J[i+100>>2]=j;j=J[i+292>>2];J[i+112>>2]=J[i+288>>2];J[i+116>>2]=j;N[i+120>>2]=N[i+296>>2];N[i+108>>2]=p*N[i+316>>2];N[i+124>>2]=p*N[i+300>>2];J[i+128>>2]=iD(a,k);j=(m<<6)+c|0;N[r>>2]=N[j>>2];N[i+20>>2]=N[j+4>>2];N[i+24>>2]=N[j+8>>2];N[i+28>>2]=N[j+12>>2];N[i+32>>2]=N[j+16>>2];N[i+36>>2]=N[j+20>>2];N[i+40>>2]=N[j+24>>2];N[i+44>>2]=N[j+28>>2];N[i+48>>2]=N[j+32>>2];N[i+52>>2]=N[j+36>>2];N[i+56>>2]=N[j+40>>2];N[i+60>>2]=N[j+44>>2];N[i+64>>2]=N[j+48>>2];N[i+68>>2]=N[j+52>>2];N[i+72>>2]=N[j+56>>2];N[i+76>>2]=N[j+60>>2];I[i+204>>1]=L[a+370>>1];H[i+224|0]=zO(a,k);N[i+216>>2]=kD(a,k);N[i+220>>2]=jD(a,k);if(!f){break b}q=J[f+4>>2]-J[f>>2]>>2;j=q>>>0>=16?16:q;n=0;if(q){break d}break c}Z(86334,40837,1158,24045);B()}while(1){J[(n<<2)+t>>2]=kQ(f,n);n=n+1|0;if((j|0)!=(n|0)){continue}break}}H[i+206|0]=j}fm(i,a,k,4);j=J[i+4>>2];J[i+208>>2]=J[i>>2];J[i+212>>2]=j;j=J[e+s>>2];H[i+272|0]=K[i+272|0]|1;f:{g:{if(j){J[i+244>>2]=2;J[i+248>>2]=2;J[i+236>>2]=5;J[i+240>>2]=0;H[i+268|0]=K[j|0];H[i+269|0]=K[j+1|0];H[i+270|0]=K[j+2|0];j=K[i+271|0]&-48|K[j+3|0]&15;H[i+271|0]=j;if(K[h+16|0]!=1){break f}H[h+16|0]=0;j=j|16;break g}H[i+270|0]=255;I[i+268>>1]=65280;J[i+244>>2]=0;J[i+248>>2]=0;J[i+236>>2]=7;J[i+240>>2]=0;j=K[i+271|0]&-48|15}H[i+271|0]=j}j=lD(a,k);if(j>>>0<=8){j=j<<2;J[i+232>>2]=J[j+159276>>2];J[i+228>>2]=J[j+159240>>2]}oC(J[h>>2],o,l,0,r)}m=m+1|0;if((m|0)!=(g|0)){continue}break}}c=J[h>>2];b=L[a+370>>1];a=J[h+12>>2];J[h+12>>2]=a+1;nC(c,2,a+(b<<16)|0);Ui=i+336|0}function H1(a){a=a|0;var b=0,c=0,d=Q(0),e=Q(0),f=Q(0),g=Q(0),h=Q(0),i=Q(0),j=0,k=Q(0),l=Q(0),m=Q(0),n=Q(0),o=Q(0),p=Q(0),q=0,r=0;c=Ui-192|0;Ui=c;b=1;a:{if((kj(a,1)|0)==3){r=wj(a,1);d=Q(wj(a,2));e=Q(wj(a,3));j=J[a+8>>2];J[j+8>>2]=3;f=Q(r);O[j>>3]=d>f?d:e>2]=J[a+8>>2]+16;break a}J[c+188>>2]=0;j=vn(a,1,c+188|0);b=kj(a,2);q=kj(a,3);b:{switch(j|0){case 0:j=J[c+188>>2];c:{if((b|0)==3){d=Q(wj(a,2));g=d;f=d;break c}b=qj(a,2,J[215720],0);f=N[b+8>>2];d=N[b>>2];g=N[b+4>>2];if(!(d!=d|g!=g)&f==f){break c}O[c+88>>3]=f;O[c+80>>3]=g;J[c+64>>2]=2;O[c+72>>3]=d;fj(a,138436,c- -64|0);f=N[b+8>>2];g=N[b+4>>2];d=N[b>>2]}d:{if((q|0)==3){e=Q(wj(a,3));h=e;i=e;break d}b=qj(a,3,J[215720],0);i=N[b+8>>2];e=N[b>>2];h=N[b+4>>2];if(!(e!=e|h!=h)&i==i){break d}O[c+56>>3]=i;O[c+48>>3]=h;J[c+32>>2]=3;O[c+40>>3]=e;fj(a,138436,c+32|0);i=N[b+8>>2];h=N[b+4>>2];e=N[b>>2]}l=N[j+8>>2];k=N[j>>2];m=N[j+4>>2];b=Sj(a,16);N[b+8>>2]=f>l?f:i>2]=g>m?g:h>2]=d>k?d:e>2];e:{if((b|0)==3){e=Q(wj(a,2));g=e;h=e;l=e;break e}b=qj(a,2,J[215721],0);h=N[b+8>>2];e=N[b>>2];g=N[b+4>>2];if(!(e!=e|g!=g|h!=h)){l=N[b+12>>2];if(l==l){break e}}d=N[b+12>>2];O[c+168>>3]=h;O[c+160>>3]=g;O[c+176>>3]=d;O[c+152>>3]=e;J[c+144>>2]=2;fj(a,138642,c+144|0);l=N[b+12>>2];h=N[b+8>>2];g=N[b+4>>2];e=N[b>>2]}f:{if((q|0)==3){d=Q(wj(a,3));i=d;f=d;k=d;break f}b=qj(a,3,J[215721],0);f=N[b+8>>2];i=N[b>>2];d=N[b+4>>2];if(!(i!=i|d!=d|f!=f)){k=N[b+12>>2];if(k==k){break f}}k=N[b+12>>2];O[c+120>>3]=f;O[c+112>>3]=d;O[c+128>>3]=k;O[c+104>>3]=i;J[c+96>>2]=3;fj(a,138642,c+96|0);k=N[b+12>>2];f=N[b+8>>2];d=N[b+4>>2];i=N[b>>2]}m=N[j+12>>2];n=N[j>>2];o=N[j+4>>2];p=N[j+8>>2];b=Sj(a,16);N[b+12>>2]=l>m?l:k>2]=h>p?h:f>2]=g>o?g:d>2]=e>n?e:i>2]=106998;J[c+12>>2]=108973;J[c+8>>2]=36031;J[c+4>>2]=43203;J[c>>2]=53139;b=fj(a,115485,c)}Ui=c+192|0;return b|0}function ys(a,b,c){var d=0,e=0,f=0,g=0,h=0,i=0,j=0,k=0,l=0;vE(a,b,c);a:{if(J[b>>2]!=10){break a}i=J[b+8>>2];if((i|0)==-1){break a}d=J[b+16>>2];if((d|0)!=-1){h=J[J[a>>2]+12>>2];while(1){e=d;f=h+(d<<2)|0;g=J[f>>2];j=(g>>>14|0)-131071|0;if((j|0)!=-1){d=(d+j|0)+1|0;if((d|0)!=-1){continue}}break}e=i+(e^-1)|0;d=e>>31;if((d^e)-d>>>0>=131072){qk(J[a+12>>2],56034);g=J[f>>2]}J[f>>2]=(g&16383|e<<14)+2147467264;break a}J[b+16>>2]=i}d=J[b+16>>2];f=J[b+20>>2];if((d|0)!=(f|0)){j=-1;b:{c:{d:{if((d|0)==-1){break d}g=J[J[a>>2]+12>>2];while(1){e=g+(d<<2)|0;e:{if((d|0)>0){h=J[e-4>>2];if(H[(h&63)+173568|0]<0){break e}}h=J[e>>2]}if((h&63)!=27){break c}e=(J[e>>2]>>>14|0)-131071|0;if((e|0)==-1){break d}d=(d+e|0)+1|0;if((d|0)!=-1){continue}break}}h=-1;if((f|0)==-1){break b}g=J[J[a>>2]+12>>2];while(1){e=g+(f<<2)|0;f:{if((f|0)>0){d=J[e-4>>2];if(H[(d&63)+173568|0]<0){break f}}d=J[e>>2]}if((d&63)!=27){break c}d=(J[e>>2]>>>14|0)-131071|0;if((d|0)==-1){break b}f=(d+f|0)+1|0;if((f|0)!=-1){continue}break}break b}f=-1;g:{if(J[b>>2]==10){break g}e=J[a+32>>2];J[a+32>>2]=-1;f=El(a,2147450902,J[J[a+12>>2]+8>>2]);if((e|0)==-1){break g}if((f|0)==-1){f=e;break g}j=J[J[a>>2]+12>>2];d=f;while(1){i=d;g=j+(d<<2)|0;h=J[g>>2];k=(h>>>14|0)-131071|0;if((k|0)!=-1){d=(d+k|0)+1|0;if((d|0)!=-1){continue}}break}e=e+(i^-1)|0;d=e>>31;if((d^e)-d>>>0>=131072){qk(J[a+12>>2],56034);h=J[g>>2]}J[g>>2]=(h&16383|e<<14)+2147467264}J[a+28>>2]=J[a+24>>2];d=c<<6;h=El(a,d|16386,J[J[a+12>>2]+8>>2]);J[a+28>>2]=J[a+24>>2];j=El(a,d|8388610,J[J[a+12>>2]+8>>2]);J[a+28>>2]=J[a+24>>2];if((f|0)==-1){break b}d=J[a+32>>2];if((d|0)!=-1){k=J[J[a>>2]+12>>2];while(1){g=d;e=k+(d<<2)|0;i=J[e>>2];l=(i>>>14|0)-131071|0;if((l|0)!=-1){d=(d+l|0)+1|0;if((d|0)!=-1){continue}}break}f=(g^-1)+f|0;d=f>>31;if((d^f)-d>>>0>=131072){qk(J[a+12>>2],56034);i=J[e>>2]}J[e>>2]=(i&16383|f<<14)+2147467264;break b}J[a+32>>2]=f}d=J[a+24>>2];J[a+28>>2]=d;YG(a,J[b+20>>2],d,c,h);YG(a,J[b+16>>2],d,c,j)}J[b+8>>2]=c;J[b+16>>2]=-1;J[b+20>>2]=-1;J[b>>2]=12}function Rja(a,b){a=a|0;b=b|0;var c=0,d=0,e=0,f=0,g=0,h=0,i=0,j=0,k=0,l=0,m=0,n=0,o=0,p=0,q=0,r=0,s=0;c=Ui+-64|0;Ui=c;d=J[b+16>>2];a:{if(!d){break a}J[c+48>>2]=0;J[c+52>>2]=0;J[c+56>>2]=0;J[c+60>>2]=0;J[c+40>>2]=0;J[c+44>>2]=0;J[c+32>>2]=0;J[c+36>>2]=0;J[c+52>>2]=-1;J[c+12>>2]=J[a>>2];J[c+20>>2]=J[d+52>>2];J[c+16>>2]=J[d+48>>2];J[c+24>>2]=J[d+56>>2];J[c+28>>2]=J[d+60>>2];Rp(c+32|0,7,J[a+32>>2]-J[a+24>>2]>>4);e=J[a+20>>2];if(e){n=J[c+48>>2];g=J[c+40>>2];q=n-g>>4;r=J[a+16>>2];i=J[c+44>>2];while(1){b=J[(l<<2)+r>>2];if((b|0)!=-1){s=J[a+24>>2];h=J[c+56>>2];o=J[c+32>>2];e=i;while(1){b:{c:{d:{if((h|0)!=(q|0)){j=(b<<4)+s|0;b=j;f=J[b>>2];k=J[b+4>>2];m=J[c+36>>2];e:{if(!m){break e}b=J[(mxa(f,k,m)<<2)+o>>2];if((b|0)==-1){break e}while(1){b=(b<<4)+g|0;if(J[b>>2]==(f|0)&(k|0)==J[b+4>>2]){break d}b=J[b+12>>2];if((b|0)!=-1){continue}break}}f:{if((e|0)!=(n|0)){i=e+16|0;J[c+44>>2]=i;p=i;break f}b=J[c+52>>2];if((b|0)==-1){break c}b=(b<<4)+g|0;J[c+52>>2]=J[b+12>>2];p=e;e=b}J[e>>2]=f;J[e+4>>2]=k;b=J[j+8>>2];J[e+12>>2]=-1;J[e+8>>2]=b;f=(mxa(f,k,m)<<2)+o|0;b=J[f>>2];g:{if((b|0)==-1){J[f>>2]=e-g>>4;h=J[c+56>>2];break g}while(1){f=(b<<4)+g|0;b=J[f+12>>2];if((b|0)!=-1){continue}break}J[f+12>>2]=e-g>>4}h=h+1|0;J[c+56>>2]=h;e=p;break b}Z(144851,55629,229,9606);B()}J[b+8>>2]=J[j+8>>2];break b}Z(152203,55629,537,2838);B()}b=J[j+12>>2];if((b|0)!=-1){continue}break}e=J[a+20>>2]}l=l+1|0;if(l>>>0>>0){continue}break}}if(K[301312]){b=J[75286];if(b){while(1){a=J[b+8>>2];h:{if(!a){break h}if(!(Zi[a|0](c+12|0,J[b+12>>2])|0)){break h}J[c>>2]=J[b+16>>2];dj(4,88458,29397,c)}a=J[b+12>>2];if(a){cj(a)}b=J[b>>2];if(b){continue}break}}ij(J[d+16>>2],255,J[d+20>>2]<<2);J[d+36>>2]=-1;J[d+40>>2]=0;J[d+28>>2]=J[d+24>>2];H[301312]=0}i:{if(H[d+44|0]&1){break i}a=J[d+24>>2];if(a){cj(a)}a=J[d+16>>2];if(!a){break i}cj(a)}j:{if(H[d+12|0]&1){break j}a=J[d>>2];if(!a){break j}cj(a)}cj(d);if(H[c+60|0]&1){break a}a=J[c+40>>2];if(a){cj(a)}a=J[c+32>>2];if(!a){break a}cj(a)}Ui=c- -64|0;return 0}function pN(a,b,c){var d=0,e=0,f=0,g=0,h=0,i=0,j=0,k=0;d=Ui-32|0;Ui=d;a:{switch(b+1|0){case 1:Z(112335,55629,156,2284);B();case 0:Z(94770,55629,157,2284);B();default:break a}}if((c|0)!=-1){e=J[a+8>>2];if((J[a+16>>2]-e|0)/40>>>0<=c>>>0){b:{if(!e){J[a+4>>2]=b;b=b<<2;e=sj(b);J[a>>2]=e;ij(e,255,b);c=P(c,40);b=sj(c);J[a+12>>2]=b;J[a+8>>2]=b;J[a+16>>2]=b+c;break b}J[d+16>>2]=0;J[d+20>>2]=0;J[d+24>>2]=0;J[d+28>>2]=0;J[d+8>>2]=0;J[d+12>>2]=0;J[d>>2]=0;J[d+4>>2]=0;J[d+20>>2]=-1;pN(d,b,c);c=J[a+4>>2];if(c){while(1){b=J[J[a>>2]+(i<<2)>>2];if((b|0)!=-1){while(1){c:{d:{e:{k=J[d+16>>2];g=J[d+8>>2];if(J[d+24>>2]!=((k-g|0)/40|0)){c=J[a+8>>2]+P(b,40)|0;b=c;e=J[b>>2];h=J[b+4>>2];j=J[d+4>>2];f:{if(!j){break f}b=J[J[d>>2]+(mxa(e,h,j)<<2)>>2];if((b|0)==-1){break f}while(1){b=g+P(b,40)|0;if((e|0)==J[b>>2]&(h|0)==J[b+4>>2]){break e}b=J[b+32>>2];if((b|0)!=-1){continue}break}}f=J[d+12>>2];g:{if((k|0)!=(f|0)){J[d+12>>2]=f+40;break g}b=J[d+20>>2];if((b|0)==-1){break d}f=g+P(b,40)|0;J[d+20>>2]=J[f+32>>2]}J[f>>2]=e;J[f+4>>2]=h;b=J[c+12>>2];J[f+8>>2]=J[c+8>>2];J[f+12>>2]=b;b=J[c+20>>2];J[f+16>>2]=J[c+16>>2];J[f+20>>2]=b;b=J[c+28>>2];J[f+24>>2]=J[c+24>>2];J[f+28>>2]=b;J[f+32>>2]=-1;g=J[d+8>>2];e=J[d>>2]+(mxa(e,h,j)<<2)|0;b=J[e>>2];h:{if((b|0)==-1){J[e>>2]=(f-g|0)/40;break h}while(1){e=g+P(b,40)|0;b=J[e+32>>2];if((b|0)!=-1){continue}break}J[e+32>>2]=(f-g|0)/40}J[d+24>>2]=J[d+24>>2]+1;break c}Z(144851,55629,229,9606);B()}e=J[c+12>>2];J[b+8>>2]=J[c+8>>2];J[b+12>>2]=e;e=J[c+28>>2];J[b+24>>2]=J[c+24>>2];J[b+28>>2]=e;e=J[c+20>>2];J[b+16>>2]=J[c+16>>2];J[b+20>>2]=e;break c}Z(152203,55629,537,2838);B()}b=J[c+32>>2];if((b|0)!=-1){continue}break}c=J[a+4>>2]}i=i+1|0;if(i>>>0>>0){continue}break}}cj(J[a>>2]);cj(J[a+8>>2]);b=J[d+28>>2];J[a+24>>2]=J[d+24>>2];J[a+28>>2]=b;b=J[d+20>>2];J[a+16>>2]=J[d+16>>2];J[a+20>>2]=b;b=J[d+12>>2];J[a+8>>2]=J[d+8>>2];J[a+12>>2]=b;b=J[d+4>>2];J[a>>2]=J[d>>2];J[a+4>>2]=b}Ui=d+32|0;return}Z(144759,55629,159,2284);B()}Z(94750,55629,158,2284);B()}function Vx(a,b,c){var d=0,e=0,f=0,g=0,h=0,i=0,j=0,k=0;d=Ui-32|0;Ui=d;a:{switch(b+1|0){case 1:Z(112335,55629,156,2284);B();case 0:Z(94770,55629,157,2284);B();default:break a}}if((c|0)!=-1){e=J[a+8>>2];if((J[a+16>>2]-e|0)/40>>>0<=c>>>0){b:{if(!e){J[a+4>>2]=b;b=b<<2;e=sj(b);J[a>>2]=e;ij(e,255,b);c=P(c,40);b=sj(c);J[a+12>>2]=b;J[a+8>>2]=b;J[a+16>>2]=b+c;break b}J[d+16>>2]=0;J[d+20>>2]=0;J[d+24>>2]=0;J[d+28>>2]=0;J[d+8>>2]=0;J[d+12>>2]=0;J[d>>2]=0;J[d+4>>2]=0;J[d+20>>2]=-1;Vx(d,b,c);c=J[a+4>>2];if(c){while(1){b=J[J[a>>2]+(i<<2)>>2];if((b|0)!=-1){while(1){c:{d:{e:{k=J[d+16>>2];g=J[d+8>>2];if(J[d+24>>2]!=((k-g|0)/40|0)){c=J[a+8>>2]+P(b,40)|0;b=c;e=J[b>>2];h=J[b+4>>2];j=J[d+4>>2];f:{if(!j){break f}b=J[J[d>>2]+(mxa(e,h,j)<<2)>>2];if((b|0)==-1){break f}while(1){b=g+P(b,40)|0;if((e|0)==J[b>>2]&(h|0)==J[b+4>>2]){break e}b=J[b+32>>2];if((b|0)!=-1){continue}break}}f=J[d+12>>2];g:{if((k|0)!=(f|0)){J[d+12>>2]=f+40;break g}b=J[d+20>>2];if((b|0)==-1){break d}f=g+P(b,40)|0;J[d+20>>2]=J[f+32>>2]}J[f>>2]=e;J[f+4>>2]=h;b=J[c+12>>2];J[f+8>>2]=J[c+8>>2];J[f+12>>2]=b;b=J[c+20>>2];J[f+16>>2]=J[c+16>>2];J[f+20>>2]=b;b=J[c+28>>2];J[f+24>>2]=J[c+24>>2];J[f+28>>2]=b;J[f+32>>2]=-1;g=J[d+8>>2];e=J[d>>2]+(mxa(e,h,j)<<2)|0;b=J[e>>2];h:{if((b|0)==-1){J[e>>2]=(f-g|0)/40;break h}while(1){e=g+P(b,40)|0;b=J[e+32>>2];if((b|0)!=-1){continue}break}J[e+32>>2]=(f-g|0)/40}J[d+24>>2]=J[d+24>>2]+1;break c}Z(144851,55629,229,9606);B()}e=J[c+12>>2];J[b+8>>2]=J[c+8>>2];J[b+12>>2]=e;e=J[c+28>>2];J[b+24>>2]=J[c+24>>2];J[b+28>>2]=e;e=J[c+20>>2];J[b+16>>2]=J[c+16>>2];J[b+20>>2]=e;break c}Z(152203,55629,537,2838);B()}b=J[c+32>>2];if((b|0)!=-1){continue}break}c=J[a+4>>2]}i=i+1|0;if(i>>>0>>0){continue}break}}cj(J[a>>2]);cj(J[a+8>>2]);b=J[d+28>>2];J[a+24>>2]=J[d+24>>2];J[a+28>>2]=b;b=J[d+20>>2];J[a+16>>2]=J[d+16>>2];J[a+20>>2]=b;b=J[d+12>>2];J[a+8>>2]=J[d+8>>2];J[a+12>>2]=b;b=J[d+4>>2];J[a>>2]=J[d>>2];J[a+4>>2]=b}Ui=d+32|0;return}Z(144759,55629,159,2284);B()}Z(94750,55629,158,2284);B()}function Xua(a,b){a=a|0;b=b|0;var c=Q(0),d=0,e=Q(0),f=Q(0),g=Q(0),h=0,i=Q(0),j=Q(0),k=0,l=Q(0),m=Q(0),n=Q(0),o=Q(0),p=Q(0),q=0,r=0,s=Q(0),t=Q(0),u=Q(0),v=Q(0),w=0,x=Q(0),y=Q(0),z=Q(0),A=Q(0),B=Q(0),C=Q(0),D=Q(0),E=Q(0);d=J[a+48>>2];w=J[d+8>>2];J[a+120>>2]=w;k=J[a+52>>2];q=J[k+8>>2];J[a+124>>2]=q;o=N[d+32>>2];h=J[d+32>>2];c=N[d+28>>2];r=J[d+28>>2];J[a+160>>2]=r;J[a+164>>2]=h;s=N[k+32>>2];h=J[k+32>>2];j=N[k+28>>2];J[a+168>>2]=J[k+28>>2];J[a+172>>2]=h;t=N[d+120>>2];N[a+176>>2]=t;u=N[k+120>>2];N[a+180>>2]=u;x=N[d+128>>2];N[a+184>>2]=x;y=N[k+128>>2];N[a+188>>2]=y;p=N[a+96>>2];k=J[b+24>>2];d=P(w,12);r=k+d|0;e=N[r+8>>2];g=Hj(e);l=N[a+92>>2];e=Rj(e);h=J[b+28>>2];d=d+h|0;z=N[d>>2];A=N[d+4>>2];B=N[d+8>>2];q=P(q,12);d=q+h|0;C=N[d>>2];D=N[d+4>>2];E=N[d+8>>2];d=k+q|0;m=N[d>>2];f=N[d+4>>2];n=N[r>>2];v=N[r+4>>2];i=N[d+8>>2];c=Q(l-c);l=Q(p-o);p=Q(Q(e*c)-Q(g*l));N[a+144>>2]=p;l=Q(Q(g*c)+Q(e*l));N[a+148>>2]=l;e=N[a+104>>2];g=Hj(i);c=N[a+100>>2];i=Rj(i);c=Q(c-j);e=Q(e-s);j=Q(Q(i*c)-Q(g*e));N[a+152>>2]=j;o=Q(Q(g*c)+Q(i*e));N[a+156>>2]=o;m=Q(Q(m+j)-N[a+76>>2]);f=Q(Q(f+o)-N[a+80>>2]);s=Q(Y(Q(Q(m*m)+Q(f*f))));g=Q(0);e=Q(0);i=Q(0);c=Q(Q(n+p)-N[a+68>>2]);n=Q(Q(v+l)-N[a+72>>2]);v=Q(Y(Q(Q(c*c)+Q(n*n))));if(v>Q(.04999999701976776)){e=Q(Q(1)/v);i=Q(n*e);e=Q(c*e)}N[a+132>>2]=i;N[a+128>>2]=e;c=Q(0);if(s>Q(.04999999701976776)){g=Q(Q(1)/s);c=Q(f*g);g=Q(m*g)}N[a+140>>2]=c;N[a+136>>2]=g;m=N[a+112>>2];f=Q(Q(j*c)-Q(o*g));n=Q(Q(m*m)*Q(Q(Q(y*f)*f)+u));f=Q(Q(p*i)-Q(l*e));f=Q(n+Q(Q(Q(x*f)*f)+t));N[a+192>>2]=f>Q(0)?Q(Q(1)/f):f;a:{if(K[b+20|0]==1){f=Q(N[b+8>>2]*N[a+116>>2]);N[a+116>>2]=f;n=j;j=c;c=Q(f*Q(-m));j=Q(j*c);g=Q(g*c);E=Q(Q(y*Q(Q(n*j)-Q(o*g)))+E);c=i;i=Q(-f);c=Q(c*i);e=Q(e*i);B=Q(Q(x*Q(Q(p*c)-Q(l*e)))+B);D=Q(D+Q(u*j));C=Q(C+Q(u*g));A=Q(A+Q(t*c));z=Q(z+Q(t*e));break a}J[a+116>>2]=0}h=J[b+28>>2]+P(w,12)|0;N[h+4>>2]=A;N[h>>2]=z;h=J[b+28>>2];N[(h+P(J[a+120>>2],12)|0)+8>>2]=B;h=h+P(J[a+124>>2],12)|0;N[h+4>>2]=D;N[h>>2]=C;N[(J[b+28>>2]+P(J[a+124>>2],12)|0)+8>>2]=E}function XM(a,b){var c=0,d=0,e=0,f=0,g=0,h=0,i=0,j=0,k=0,l=0,m=0;c=Ui-288|0;Ui=c;d=K[a+2196|0];g=J[a>>2];e=L[a+2198>>1];J[c+28>>2]=b;J[c+24>>2]=e;J[c+20>>2]=g;J[c+16>>2]=d?19811:36507;g=a+4|0;Gj(g,2124,26190,c+16|0);J[a+2168>>2]=bl();J[a+2172>>2]=Yi;a:{b:{if(H[a+2200|0]&1){break b}d=J[a+2192>>2];if(!d){break b}e=J[d+48>>2];Tj(e);k=J[d+80>>2];Lj(e);l=c+40|0;f=J[a+2192>>2];j=J[f+48>>2];Tj(j);d=bj(g);i=Yi;h=J[f+20>>2];c:{if(!h){Lj(j);e=2;break c}e=2;h=J[J[f+16>>2]+(mxa(d,i,h)<<2)>>2];d:{if((h|0)==-1){break d}m=J[f+24>>2];while(1){f=P(h,136)+m|0;if(J[f>>2]!=(d|0)|J[f+4>>2]!=(i|0)){h=J[f+128>>2];if((h|0)!=-1){continue}break d}break}d=hj(l,f+8|0,112);e=zs();f=Yi;i=J[d+92>>2];H[d+104|0]=K[d+104|0]&253|((f|0)==(i|0)&M[d+88>>2]>e>>>0|f>>>0>>0)<<1;e=0}Lj(j)}if(e){break b}d=K[c+144|0];if(!(d&2)&(!(d&1)|(k|0)!=1)){break b}J[c+272>>2]=0;J[c+276>>2]=0;J[c+280>>2]=0;J[c+284>>2]=0;H[c+196|0]=0;J[c+192>>2]=-1;J[c+180>>2]=0;J[c+172>>2]=0;J[c+176>>2]=0;J[c+168>>2]=a;J[c+264>>2]=0;J[c+268>>2]=0;H[c+260|0]=0;J[c+184>>2]=-1;J[c+188>>2]=0;J[a+2184>>2]=J[a+2184>>2]+1;J[c+164>>2]=0;J[c+160>>2]=0;if(!$M(J[a+2192>>2],g,c+40|0,c+164|0,c+160|0,c+152|0)){b=a+2208|0;while(1){d=Sl(b,1,65536,J[c+164>>2]);H[d+b|0]=0;e=c+168|0;Zi[J[a+2136>>2]](e,J[a+2132>>2],304,b,d,J[c+160>>2],88289);if(d){continue}break}_M(J[a+2192>>2],g,c+40|0,J[c+164>>2]);Rx(e);d=1;break a}Rx(c+168|0)}if(J[a+2156>>2]<=0){d=-8;break a}f=0;while(1){g=YM(a,b,88289);d=g;e:{switch(d+7|0){case 6:d=-1;e=J[a+2128>>2]+24|0;if(e>>>0>21|!(1<>2];if(!(!d|!J[d>>2])){d=g;break a}f:{if(!J[a+2160>>2]){break f}d=bl()-J[a+2168>>2]|0;if((d|0)>2]){break f}d=g;break a}e=J[a+2156>>2];g:{if((e-1|0)<=(f|0)){f=f+1|0;break g}J[a+2188>>2]=J[a+2188>>2]+1;J[a+2168>>2]=bl();J[a+2172>>2]=Yi;d=J[a+2156>>2];f=f+1|0;J[c>>2]=f;J[c+4>>2]=d-1;dj(2,99340,139799,c);e=J[a+2156>>2]}d=g;if((e|0)>(f|0)){continue}break}}Ui=c+288|0;return d}function Nsa(a,b){a=a|0;b=b|0;var c=0,d=0,e=0,f=0,g=0,h=0,i=0,j=0,k=0,l=0,m=0,n=0,o=0;f=Ui-80|0;Ui=f;J[a+68>>2]=J[a+68>>2]+1;d=J[a+16>>2];if((d|0)>0){g=f- -64|0;h=f+48|0;i=f+32|0;j=f+16|0;l=d;while(1){m=l-1|0;k=J[a+24>>2];if(J[(k+P(l,80)|0)-16>>2]==(b|0)){J[a+68>>2]=J[a+68>>2]+1;c=J[a+64>>2];if(c){bz(c,J[(P(m,80)+k|0)+76>>2]);k=J[a+24>>2];d=J[a+16>>2]}n=P(m,80);c=n+k|0;e=c+8|0;o=J[e+4>>2];J[f+8>>2]=J[e>>2];J[f+12>>2]=o;e=J[c+4>>2];J[f>>2]=J[c>>2];J[f+4>>2]=e;e=J[c+28>>2];J[j+8>>2]=J[c+24>>2];J[j+12>>2]=e;e=J[c+20>>2];J[j>>2]=J[c+16>>2];J[j+4>>2]=e;e=J[c+44>>2];J[i+8>>2]=J[c+40>>2];J[i+12>>2]=e;e=J[c+36>>2];J[i>>2]=J[c+32>>2];J[i+4>>2]=e;e=J[c+60>>2];J[h+8>>2]=J[c+56>>2];J[h+12>>2]=e;e=J[c+52>>2];J[h>>2]=J[c+48>>2];J[h+4>>2]=e;e=J[c+76>>2];J[g+8>>2]=J[c+72>>2];J[g+12>>2]=e;e=J[c+68>>2];J[g>>2]=J[c+64>>2];J[g+4>>2]=e;e=k;k=P(d,80)-80|0;d=e+k|0;e=J[d+4>>2];J[c>>2]=J[d>>2];J[c+4>>2]=e;e=J[d+12>>2];J[c+8>>2]=J[d+8>>2];J[c+12>>2]=e;e=J[d+20>>2];J[c+16>>2]=J[d+16>>2];J[c+20>>2]=e;e=J[d+28>>2];J[c+24>>2]=J[d+24>>2];J[c+28>>2]=e;e=J[d+36>>2];J[c+32>>2]=J[d+32>>2];J[c+36>>2]=e;e=J[d+44>>2];J[c+40>>2]=J[d+40>>2];J[c+44>>2]=e;e=J[d+60>>2];J[c+56>>2]=J[d+56>>2];J[c+60>>2]=e;e=J[d+52>>2];J[c+48>>2]=J[d+48>>2];J[c+52>>2]=e;e=J[d+68>>2];J[c+64>>2]=J[d+64>>2];J[c+68>>2]=e;e=J[d+76>>2];J[c+72>>2]=J[d+72>>2];J[c+76>>2]=e;d=J[f+4>>2];c=k+J[a+24>>2]|0;J[c>>2]=J[f>>2];J[c+4>>2]=d;d=J[f+12>>2];J[c+8>>2]=J[f+8>>2];J[c+12>>2]=d;d=J[j+4>>2];J[c+16>>2]=J[j>>2];J[c+20>>2]=d;d=J[j+12>>2];J[c+24>>2]=J[j+8>>2];J[c+28>>2]=d;d=J[i+12>>2];J[c+40>>2]=J[i+8>>2];J[c+44>>2]=d;d=J[i+4>>2];J[c+32>>2]=J[i>>2];J[c+36>>2]=d;d=J[h+4>>2];J[c+48>>2]=J[h>>2];J[c+52>>2]=d;d=J[h+12>>2];J[c+56>>2]=J[h+8>>2];J[c+60>>2]=d;d=J[g+4>>2];J[c+64>>2]=J[g>>2];J[c+68>>2]=d;d=J[g+12>>2];J[c+72>>2]=J[g+8>>2];J[c+76>>2]=d;if(J[a+64>>2]){J[J[(J[a+24>>2]+n|0)+76>>2]+36>>2]=m}d=J[a+16>>2]-1|0;J[a+16>>2]=d}c=l>>>0>1;l=m;if(c){continue}break}}Zi[J[J[a>>2]+64>>2]](a);Ui=f+80|0}function QW(a,b,c){a=a|0;b=b|0;c=c|0;var d=0,e=0,f=0,g=0,h=0,i=0,j=0,k=0,l=0,m=0,n=0,o=0,p=0,q=0,r=0,s=0,t=0,u=0,v=0;u=Ui-256|0;Ui=u;f=u;while(1){a:{b:{e=L[c+32>>1];d=I[c+16>>1];if((e|d)&65535){break b}e=0;if(L[c+48>>1]|L[c+64>>1]|(L[c+80>>1]|L[c+96>>1])){break b}if(L[c+112>>1]){break b}d=I[c>>1]<<2;J[f+192>>2]=d;J[f+224>>2]=d;J[f+160>>2]=d;J[f+128>>2]=d;J[f+96>>2]=d;J[f+64>>2]=d;J[f+32>>2]=d;J[f>>2]=d;break a}j=I[c+96>>1];k=e<<16>>16;e=P(j+k|0,2217);i=I[c+80>>1];g=i+d|0;l=P(g,-1597);h=g;g=I[c+48>>1];q=I[c+112>>1];m=g+q|0;h=P(h+m|0,4816);k=e+P(k,3135)|0;n=I[c+64>>1];o=I[c>>1];s=n+o<<12;p=(k+s|0)+512|0;r=l+P(d,6149)|0;d=h+P(d+q|0,-3685)|0;r=r+d|0;J[f+224>>2]=p-r>>10;J[f>>2]=p+r>>10;e=e+P(j,-7567)|0;j=o-n<<12;n=(e+j|0)+512|0;m=P(m,-8034);o=m+P(g,12586)|0;g=h+P(g+i|0,-10497)|0;h=o+g|0;J[f+192>>2]=n-h>>10;J[f+32>>2]=h+n>>10;e=(j-e|0)+512|0;i=g+(l+P(i,8410)|0)|0;J[f+160>>2]=e-i>>10;J[f+64>>2]=e+i>>10;e=(s-k|0)+512|0;d=d+(m+P(q,1223)|0)|0;J[f+128>>2]=e-d>>10;J[f+96>>2]=d+e>>10}f=f+4|0;c=c+2|0;t=t+1|0;if((t|0)!=8){continue}break}c=u;f=0;while(1){j=J[c+24>>2];k=J[c+8>>2];d=P(j+k|0,2217);e=J[c+4>>2];i=J[c+20>>2];g=e+i|0;l=P(g,-1597);h=g;g=J[c+12>>2];q=J[c+28>>2];m=g+q|0;h=P(h+m|0,4816);k=d+P(k,3135)|0;n=J[c+16>>2];o=J[c>>2];s=n+o<<12;p=(k+s|0)+16842752|0;r=h+P(e+q|0,-3685)|0;t=r+(l+P(e,6149)|0)|0;v=p-t|0;e=v>>17;H[a+7|0]=e>>>0>255?v>>31^-1:e;p=p+t|0;e=p>>17;H[a|0]=e>>>0>255?p>>31^-1:e;e=d+P(j,-7567)|0;j=o-n<<12;n=(e+j|0)+16842752|0;m=P(m,-8034);d=m+P(g,12586)|0;g=h+P(g+i|0,-10497)|0;h=d+g|0;o=n-h|0;d=o>>17;H[a+6|0]=d>>>0>255?o>>31^-1:d;h=h+n|0;d=h>>17;H[a+1|0]=d>>>0>255?h>>31^-1:d;e=(j-e|0)+16842752|0;i=g+(l+P(i,8410)|0)|0;l=e-i|0;d=l>>17;H[a+5|0]=d>>>0>255?l>>31^-1:d;e=e+i|0;d=e>>17;H[a+2|0]=d>>>0>255?e>>31^-1:d;e=(s-k|0)+16842752|0;i=r+(m+P(q,1223)|0)|0;l=e-i|0;d=l>>17;H[a+4|0]=d>>>0>255?l>>31^-1:d;e=e+i|0;d=e>>17;H[a+3|0]=d>>>0>255?e>>31^-1:d;a=a+b|0;c=c+32|0;f=f+1|0;if((f|0)!=8){continue}break}Ui=u+256|0}function HU(a,b,c,d,e){var f=0,g=0,h=0,i=0,j=0,k=0,l=0,m=0;m=e?-1:1;i=e?-1:0;h=-2;j=(e|0)!=0;k=!e;e=e?0:-1;f=e;a:{b:{c:{d:{e:{f:{g:{h:{switch(c-2|0){case 3:case 4:f=0;break g;case 5:f=k;break g;case 9:case 13:f=0;break g;case 16:f=i;break g;case 17:case 18:f=0;break g;case 19:f=j;break g;case 6:case 22:f=0;break g;case 26:f=m;break g;case 27:f=j;break g;case 28:f=i;break g;case 29:f=k;break g;case 8:break f;case 0:case 25:break g;default:break h}}f=((c>>>0)%3|0)-1|0}g=K[b|0];if(!g){break e}h=f;break d}g=K[b|0];if(g){break d}f=3;break c}f=f+1|0;break c}if((d|0)!=(g|0)){f=g-h|0;l=f;f=h+g|0;f=(f|0)<0?l:(d|0)<(f|0)?l:f;break c}f=d+h|0;if((f|0)<=0){break a}f=f-1|0}if((f|0)>(d|0)){break b}H[a|0]=f;h=-2;f=e;i:{j:{k:{l:{m:{switch(c-2|0){case 29:f=k;break l;case 28:f=i;break l;case 27:f=j;break l;case 26:f=m;break l;case 8:g=K[b+1|0];if(g){break k}f=3;break i;case 6:f=0;break l;case 22:f=j;break l;case 18:case 19:f=0;break l;case 17:f=i;break l;case 13:case 16:f=0;break l;case 9:f=k;break l;case 0:case 4:case 5:f=0;break l;case 3:case 25:break l;default:break m}}f=(((c>>>0)/3>>>0)%3|0)-1|0}g=K[b+1|0];if(!g){break j}h=f}if((d|0)!=(g|0)){f=g-h|0;l=f;f=h+g|0;f=(f|0)<0?l:(d|0)<(f|0)?l:f;break i}f=d+h|0;if((f|0)<=0){break a}f=f-1|0;break i}f=f+1|0}if(f>>>0>d>>>0){break b}H[a+1|0]=f;f=-2;n:{o:{p:{q:{r:{switch(c-2|0){case 29:e=k;break q;case 28:e=i;break q;case 27:e=j;break q;case 26:e=m;break q;case 8:c=K[b+2|0];if(c){break p}b=3;break n;case 6:e=j;break q;case 19:case 22:e=0;break q;case 18:e=i;break q;case 16:case 17:e=0;break q;case 13:e=k;break q;case 0:case 3:case 5:case 9:e=0;break q;case 4:case 25:break q;default:break r}}e=(((c>>>0)/9>>>0)%3|0)-1|0}c=K[b+2|0];if(!c){break o}f=e}if((c|0)!=(d|0)){b=c-f|0;e=b;b=c+f|0;b=(b|0)<0?e:(b|0)>(d|0)?e:b;break n}b=d+f|0;if((b|0)<=0){break a}b=b-1|0;break n}b=e+1|0}if(b>>>0>d>>>0){break b}H[a+2|0]=b;return}Z(14368,40075,13504,25923);B()}Z(112565,40075,13503,25923);B()}function dq(a,b,c){var d=0,e=0,f=0,g=0,h=0,i=0,j=0,k=0,l=0,m=0,n=0,o=0,p=0,q=0,r=0,s=0,t=0,u=0,v=0;d=a&65535;f=a>>>16|0;a:{if((c|0)==1){a=K[b|0]+d|0;a=a>>>0>65520?a-65521|0:a;b=a+f|0;c=b<<16;a=(b>>>0>65520?c+983040|0:c)|a;break a}if(b){b:{c:{d:{e:{if(c>>>0>=16){f:{if(c>>>0>5551){while(1){c=c-5552|0;e=347;a=b;while(1){g=K[a|0]+d|0;i=g+K[a+1|0]|0;j=i+K[a+2|0]|0;k=j+K[a+3|0]|0;l=k+K[a+4|0]|0;m=l+K[a+5|0]|0;n=m+K[a+6|0]|0;o=n+K[a+7|0]|0;p=o+K[a+8|0]|0;q=p+K[a+9|0]|0;r=q+K[a+10|0]|0;s=r+K[a+11|0]|0;t=s+K[a+12|0]|0;u=t+K[a+13|0]|0;v=u+K[a+14|0]|0;d=v+K[a+15|0]|0;f=d+(v+(u+(t+(s+(r+(q+(p+(o+(n+(m+(l+(k+(j+(i+(f+g|0)|0)|0)|0)|0)|0)|0)|0)|0)|0)|0)|0)|0)|0)|0)|0;a=a+16|0;e=e-1|0;if(e){continue}break}f=(f>>>0)%65521|0;d=(d>>>0)%65521|0;b=b+5552|0;if(c>>>0>5551){continue}break}if(!c){break b}if(c>>>0<16){break f}}while(1){a=K[b|0]+d|0;e=a+K[b+1|0]|0;g=e+K[b+2|0]|0;i=g+K[b+3|0]|0;j=i+K[b+4|0]|0;k=j+K[b+5|0]|0;l=k+K[b+6|0]|0;m=l+K[b+7|0]|0;n=m+K[b+8|0]|0;o=n+K[b+9|0]|0;p=o+K[b+10|0]|0;q=p+K[b+11|0]|0;r=q+K[b+12|0]|0;s=r+K[b+13|0]|0;t=s+K[b+14|0]|0;d=t+K[b+15|0]|0;f=d+(t+(s+(r+(q+(p+(o+(n+(m+(l+(k+(j+(i+(g+(e+(a+f|0)|0)|0)|0)|0)|0)|0)|0)|0)|0)|0)|0)|0)|0)|0)|0;b=b+16|0;c=c-16|0;if(c>>>0>15){continue}break}if(!c){break c}}g=c&3;if(g){break e}a=c;break d}g:{if(!c){break g}g=c&3;h:{if(!g){a=c;break h}a=c;e=b;while(1){a=a-1|0;d=K[e|0]+d|0;f=f+d|0;b=e+1|0;e=b;h=h+1|0;if((g|0)!=(h|0)){continue}break}}if(c>>>0<4){break g}while(1){c=K[b|0]+d|0;e=c+K[b+1|0]|0;h=e+K[b+2|0]|0;d=h+K[b+3|0]|0;f=d+(h+(e+(c+f|0)|0)|0)|0;b=b+4|0;a=a-4|0;if(a){continue}break}}a=(f>>>0)%65521<<16|(d>>>0>65520?d-65521|0:d);break a}a=c;e=b;while(1){a=a-1|0;d=K[e|0]+d|0;f=f+d|0;b=e+1|0;e=b;h=h+1|0;if((g|0)!=(h|0)){continue}break}}if(c>>>0<4){break c}while(1){c=K[b|0]+d|0;e=c+K[b+1|0]|0;h=e+K[b+2|0]|0;d=h+K[b+3|0]|0;f=d+(h+(e+(c+f|0)|0)|0)|0;b=b+4|0;a=a-4|0;if(a){continue}break}}f=(f>>>0)%65521|0;d=(d>>>0)%65521|0}a=f<<16|d}else{a=1}}return a}function Lsa(a,b){a=a|0;b=b|0;var c=0,d=0,e=0,f=0,g=0,h=0,i=Q(0),j=Q(0),k=Q(0),l=Q(0);c=Ui-144|0;Ui=c;if(J[a+16>>2]>0){f=c- -64|0;while(1){g=P(h,80);d=g+J[a+24>>2]|0;e=J[d+12>>2];J[c+24>>2]=J[d+8>>2];J[c+28>>2]=e;e=J[d+4>>2];J[c+16>>2]=J[d>>2];J[c+20>>2]=e;e=J[d+28>>2];J[c+40>>2]=J[d+24>>2];J[c+44>>2]=e;e=J[d+20>>2];J[c+32>>2]=J[d+16>>2];J[c+36>>2]=e;e=J[d+44>>2];J[c+56>>2]=J[d+40>>2];J[c+60>>2]=e;e=J[d+36>>2];J[c+48>>2]=J[d+32>>2];J[c+52>>2]=e;e=J[d+60>>2];J[f+8>>2]=J[d+56>>2];J[f+12>>2]=e;e=J[d+52>>2];J[f>>2]=J[d+48>>2];J[f+4>>2]=e;d=J[d+64>>2];d=Zi[J[J[d>>2]+28>>2]](d)|0;e=J[d+12>>2];J[c+8>>2]=J[d+8>>2];J[c+12>>2]=e;e=J[d+4>>2];J[c>>2]=J[d>>2];J[c+4>>2]=e;i=N[a+76>>2];j=N[b>>2];k=N[a+80>>2];l=N[b+4>>2];N[c+8>>2]=Q(N[c+8>>2]*N[b+8>>2])/N[a+84>>2];J[c+12>>2]=0;N[c+4>>2]=Q(l*N[c+4>>2])/k;N[c>>2]=Q(j*N[c>>2])/i;d=J[(J[a+24>>2]+g|0)+64>>2];Zi[J[J[d>>2]+24>>2]](d,c);i=N[b>>2];j=N[b+4>>2];k=N[b+8>>2];J[c+76>>2]=0;N[c+72>>2]=k*N[c+72>>2];N[c+68>>2]=j*N[c+68>>2];N[c+64>>2]=i*N[c+64>>2];e=J[c+20>>2];d=J[a+24>>2]+g|0;J[d>>2]=J[c+16>>2];J[d+4>>2]=e;e=J[c+28>>2];J[d+8>>2]=J[c+24>>2];J[d+12>>2]=e;e=J[c+44>>2];J[d+24>>2]=J[c+40>>2];J[d+28>>2]=e;e=J[c+36>>2];J[d+16>>2]=J[c+32>>2];J[d+20>>2]=e;e=J[c+60>>2];J[d+40>>2]=J[c+56>>2];J[d+44>>2]=e;e=J[c+52>>2];J[d+32>>2]=J[c+48>>2];J[d+36>>2]=e;e=J[f+12>>2];J[d+56>>2]=J[f+8>>2];J[d+60>>2]=e;e=J[f+4>>2];J[d+48>>2]=J[f>>2];J[d+52>>2]=e;if(J[a+64>>2]){d=J[(J[a+24>>2]+g|0)+64>>2];Zi[J[J[d>>2]+8>>2]](d,c+16|0,c+128|0,c+112|0);d=J[c+140>>2];J[c+88>>2]=J[c+136>>2];J[c+92>>2]=d;d=J[c+132>>2];J[c+80>>2]=J[c+128>>2];J[c+84>>2]=d;d=J[c+124>>2];J[c+104>>2]=J[c+120>>2];J[c+108>>2]=d;d=J[c+116>>2];J[c+96>>2]=J[c+112>>2];J[c+100>>2]=d;yT(J[a+64>>2],J[(J[a+24>>2]+g|0)+76>>2],c+80|0)}Zi[J[J[a>>2]+64>>2]](a);Zi[J[J[a>>2]+64>>2]](a);h=h+1|0;if((h|0)>2]){continue}break}}d=J[b+4>>2];J[a+76>>2]=J[b>>2];J[a+80>>2]=d;d=J[b+12>>2];J[a+84>>2]=J[b+8>>2];J[a+88>>2]=d;Ui=c+144|0}function Uqa(a,b,c,d){a=a|0;b=b|0;c=c|0;d=d|0;var e=0,f=Q(0),g=Q(0),h=Q(0),i=Q(0),j=Q(0),k=Q(0),l=Q(0),m=Q(0),n=Q(0);e=Ui-32|0;Ui=e;i=N[b>>2];f=N[c>>2];j=N[b+4>>2];g=N[c+4>>2];k=N[b+8>>2];h=N[c+8>>2];J[e+28>>2]=0;J[e+12>>2]=0;l=Q(Q(h+k)*Q(.5));h=Q(Q(h-k)*Q(.5));k=Q(l+h);N[e+24>>2]=k;m=Q(Q(g+j)*Q(.5));g=Q(Q(g-j)*Q(.5));j=Q(m+g);N[e+20>>2]=j;n=Q(Q(f+i)*Q(.5));f=Q(Q(f-i)*Q(.5));i=Q(n+f);N[e+16>>2]=i;N[e+8>>2]=k;N[e+4>>2]=j;f=Q(n-f);N[e>>2]=f;b=e+16|0;Zi[J[J[a>>2]+8>>2]](a,b,e,d);N[e+24>>2]=k;N[e+20>>2]=j;N[e+16>>2]=f;J[e+28>>2]=0;J[e+12>>2]=0;N[e+8>>2]=k;g=Q(m-g);N[e+4>>2]=g;N[e>>2]=f;Zi[J[J[a>>2]+8>>2]](a,b,e,d);N[e+24>>2]=k;N[e+20>>2]=g;N[e+16>>2]=f;J[e+28>>2]=0;J[e+12>>2]=0;h=Q(l-h);N[e+8>>2]=h;N[e+4>>2]=g;N[e>>2]=f;Zi[J[J[a>>2]+8>>2]](a,b,e,d);N[e+24>>2]=h;N[e+20>>2]=g;N[e+16>>2]=i;J[e+28>>2]=0;J[e+12>>2]=0;N[e+8>>2]=h;N[e+4>>2]=g;N[e>>2]=f;Zi[J[J[a>>2]+8>>2]](a,b,e,d);N[e+24>>2]=h;N[e+20>>2]=g;N[e+16>>2]=f;J[e+28>>2]=0;J[e+12>>2]=0;N[e+8>>2]=h;N[e+4>>2]=j;N[e>>2]=f;Zi[J[J[a>>2]+8>>2]](a,b,e,d);N[e+24>>2]=h;N[e+20>>2]=j;N[e+16>>2]=f;J[e+28>>2]=0;J[e+12>>2]=0;N[e+8>>2]=k;N[e+4>>2]=j;N[e>>2]=f;Zi[J[J[a>>2]+8>>2]](a,b,e,d);N[e+24>>2]=h;N[e+20>>2]=j;N[e+16>>2]=f;J[e+28>>2]=0;J[e+12>>2]=0;N[e+8>>2]=h;N[e+4>>2]=j;N[e>>2]=i;Zi[J[J[a>>2]+8>>2]](a,b,e,d);N[e+24>>2]=h;N[e+20>>2]=j;N[e+16>>2]=i;J[e+28>>2]=0;J[e+12>>2]=0;N[e+8>>2]=h;N[e+4>>2]=g;N[e>>2]=i;Zi[J[J[a>>2]+8>>2]](a,b,e,d);N[e+24>>2]=h;N[e+20>>2]=g;N[e+16>>2]=i;J[e+28>>2]=0;J[e+12>>2]=0;N[e+8>>2]=k;N[e+4>>2]=g;N[e>>2]=i;Zi[J[J[a>>2]+8>>2]](a,b,e,d);N[e+24>>2]=k;N[e+20>>2]=g;N[e+16>>2]=f;J[e+28>>2]=0;J[e+12>>2]=0;N[e+8>>2]=k;N[e+4>>2]=g;N[e>>2]=i;Zi[J[J[a>>2]+8>>2]](a,b,e,d);N[e+24>>2]=k;N[e+20>>2]=g;N[e+16>>2]=i;J[e+28>>2]=0;J[e+12>>2]=0;N[e+8>>2]=k;N[e+4>>2]=j;N[e>>2]=i;Zi[J[J[a>>2]+8>>2]](a,b,e,d);N[e+24>>2]=k;N[e+20>>2]=j;N[e+16>>2]=i;J[e+28>>2]=0;J[e+12>>2]=0;N[e+8>>2]=h;N[e+4>>2]=j;N[e>>2]=i;Zi[J[J[a>>2]+8>>2]](a,b,e,d);Ui=e+32|0}function WC(a,b,c){var d=0,e=0,f=0,g=0,h=0,i=0,j=0,k=0;d=Ui-32|0;Ui=d;a:{switch(b+1|0){case 1:Z(112335,55629,156,2284);B();case 0:Z(94770,55629,157,2284);B();default:break a}}if((c|0)!=-1){e=J[a+8>>2];if((J[a+16>>2]-e|0)/40>>>0<=c>>>0){b:{if(!e){J[a+4>>2]=b;b=b<<2;e=sj(b);J[a>>2]=e;ij(e,255,b);c=P(c,40);b=sj(c);J[a+12>>2]=b;J[a+8>>2]=b;J[a+16>>2]=b+c;break b}J[d+16>>2]=0;J[d+20>>2]=0;J[d+24>>2]=0;J[d+28>>2]=0;J[d+8>>2]=0;J[d+12>>2]=0;J[d>>2]=0;J[d+4>>2]=0;J[d+20>>2]=-1;WC(d,b,c);c=J[a+4>>2];if(c){while(1){b=J[J[a>>2]+(i<<2)>>2];if((b|0)!=-1){while(1){c:{d:{e:{k=J[d+16>>2];g=J[d+8>>2];if(J[d+24>>2]!=((k-g|0)/40|0)){c=J[a+8>>2]+P(b,40)|0;b=c;e=J[b>>2];h=J[b+4>>2];j=J[d+4>>2];f:{if(!j){break f}b=J[J[d>>2]+(mxa(e,h,j)<<2)>>2];if((b|0)==-1){break f}while(1){b=g+P(b,40)|0;if((e|0)==J[b>>2]&(h|0)==J[b+4>>2]){break e}b=J[b+32>>2];if((b|0)!=-1){continue}break}}f=J[d+12>>2];g:{if((k|0)!=(f|0)){J[d+12>>2]=f+40;break g}b=J[d+20>>2];if((b|0)==-1){break d}f=g+P(b,40)|0;J[d+20>>2]=J[f+32>>2]}J[f>>2]=e;J[f+4>>2]=h;b=J[c+12>>2];J[f+8>>2]=J[c+8>>2];J[f+12>>2]=b;b=J[c+20>>2];J[f+16>>2]=J[c+16>>2];J[f+20>>2]=b;J[f+24>>2]=J[c+24>>2];J[f+32>>2]=-1;g=J[d+8>>2];e=J[d>>2]+(mxa(e,h,j)<<2)|0;b=J[e>>2];h:{if((b|0)==-1){J[e>>2]=(f-g|0)/40;break h}while(1){e=g+P(b,40)|0;b=J[e+32>>2];if((b|0)!=-1){continue}break}J[e+32>>2]=(f-g|0)/40}J[d+24>>2]=J[d+24>>2]+1;break c}Z(144851,55629,229,9606);B()}e=J[c+12>>2];J[b+8>>2]=J[c+8>>2];J[b+12>>2]=e;J[b+24>>2]=J[c+24>>2];e=J[c+20>>2];J[b+16>>2]=J[c+16>>2];J[b+20>>2]=e;break c}Z(152203,55629,537,2838);B()}b=J[c+32>>2];if((b|0)!=-1){continue}break}c=J[a+4>>2]}i=i+1|0;if(i>>>0>>0){continue}break}}cj(J[a>>2]);cj(J[a+8>>2]);b=J[d+28>>2];J[a+24>>2]=J[d+24>>2];J[a+28>>2]=b;b=J[d+20>>2];J[a+16>>2]=J[d+16>>2];J[a+20>>2]=b;b=J[d+12>>2];J[a+8>>2]=J[d+8>>2];J[a+12>>2]=b;b=J[d+4>>2];J[a>>2]=J[d>>2];J[a+4>>2]=b}Ui=d+32|0;return}Z(144759,55629,159,2284);B()}Z(94750,55629,158,2284);B()}function YD(a,b,c,d){var e=0,f=0,g=0,h=0,i=0,j=0,k=0,l=0,m=0,n=0,o=0;a:{if(!d){break a}if(b>>>0>=16777216){j=a+3|0;k=c+3|0;l=a+2|0;m=c+2|0;n=a+1|0;o=c+1|0;b=0;while(1){e=b+5|0;b=b+c|0;g=K[b+4|0];b:{if(!g){b=e;break b}f=K[b|0]|K[b+1|0]<<8|(K[b+2|0]<<16|K[b+3|0]<<24);h=0;b=e;e=g;i=e&3;if(i){while(1){H[a+f|0]=K[b+c|0];b=b+1|0;f=f+1|0;e=e-1|0;h=h+1|0;if((i|0)!=(h|0)){continue}break}}if(g>>>0<4){break b}while(1){H[a+f|0]=K[b+c|0];H[f+n|0]=K[b+o|0];H[f+l|0]=K[b+m|0];H[f+j|0]=K[b+k|0];b=b+4|0;f=f+4|0;e=e-4|0;if(e){continue}break}}if(b>>>0>>0){continue}break}break a}if(b>>>0>=65536){j=a+3|0;k=c+3|0;l=a+2|0;m=c+2|0;n=a+1|0;o=c+1|0;b=0;while(1){e=b+4|0;b=b+c|0;g=K[b+3|0];c:{if(!g){b=e;break c}f=K[b|0]|K[b+1|0]<<8|K[b+2|0]<<16;h=0;b=e;e=g;i=e&3;if(i){while(1){H[a+f|0]=K[b+c|0];b=b+1|0;f=f+1|0;e=e-1|0;h=h+1|0;if((i|0)!=(h|0)){continue}break}}if(g>>>0<4){break c}while(1){H[a+f|0]=K[b+c|0];H[f+n|0]=K[b+o|0];H[f+l|0]=K[b+m|0];H[f+j|0]=K[b+k|0];b=b+4|0;f=f+4|0;e=e-4|0;if(e){continue}break}}if(b>>>0>>0){continue}break}break a}d:{if(b>>>0<=255){j=a+3|0;k=c+3|0;l=a+2|0;m=c+2|0;n=a+1|0;o=c+1|0;b=0;break d}j=a+3|0;k=c+3|0;l=a+2|0;m=c+2|0;n=a+1|0;o=c+1|0;b=0;while(1){e=b+3|0;b=b+c|0;g=K[b+2|0];e:{if(!g){b=e;break e}f=K[b|0]|K[b+1|0]<<8;h=0;b=e;e=g;i=e&3;if(i){while(1){H[a+f|0]=K[b+c|0];b=b+1|0;f=f+1|0;e=e-1|0;h=h+1|0;if((i|0)!=(h|0)){continue}break}}if(g>>>0<4){break e}while(1){H[a+f|0]=K[b+c|0];H[f+n|0]=K[b+o|0];H[f+l|0]=K[b+m|0];H[f+j|0]=K[b+k|0];b=b+4|0;f=f+4|0;e=e-4|0;if(e){continue}break}}if(b>>>0>>0){continue}break}break a}while(1){e=b+2|0;b=b+c|0;g=K[b+1|0];f:{if(!g){b=e;break f}f=K[b|0];h=0;b=e;e=g;i=e&3;if(i){while(1){H[a+f|0]=K[b+c|0];b=b+1|0;f=f+1|0;e=e-1|0;h=h+1|0;if((i|0)!=(h|0)){continue}break}}if(g>>>0<4){break f}while(1){H[a+f|0]=K[b+c|0];H[f+n|0]=K[b+o|0];H[f+l|0]=K[b+m|0];H[f+j|0]=K[b+k|0];b=b+4|0;f=f+4|0;e=e-4|0;if(e){continue}break}}if(b>>>0>>0){continue}break}}}function lU(a,b,c){var d=0,e=0,f=0,g=0,h=0,i=0,j=0,k=0,l=0,m=0;a:{b:{c:{switch(b-a>>1){case 2:c=J[c>>2];b=b-2|0;e=L[b>>1];d=L[a>>1];if(M[(c+P(e,12)|0)+4>>2]<=M[(c+P(d,12)|0)+4>>2]){break b}I[a>>1]=e;I[b>>1]=d;break a;case 3:e=b-2|0;d=L[e>>1];b=J[c>>2];g=J[(P(d,12)+b|0)+4>>2];h=L[a+2>>1];f=J[(b+P(h,12)|0)+4>>2];c=L[a>>1];i=J[(b+P(c,12)|0)+4>>2];if(f>>>0<=i>>>0){if(f>>>0>=g>>>0){break b}I[a+2>>1]=d;I[e>>1]=h;c=L[a+2>>1];e=L[a>>1];if(M[(b+P(c,12)|0)+4>>2]<=M[(b+P(e,12)|0)+4>>2]){break b}I[a+2>>1]=e;I[a>>1]=c;break a}if(f>>>0>>0){I[a>>1]=d;I[e>>1]=c;break a}I[a+2>>1]=c;I[a>>1]=h;d=L[e>>1];if(i>>>0>=M[(b+P(d,12)|0)+4>>2]){break b}I[a+2>>1]=d;I[e>>1]=c;break a;case 4:Yv(a,a+2|0,a+4|0,b-2|0,c);break a;case 5:Yv(a,a+2|0,a+4|0,a+6|0,c);e=b-2|0;d=L[e>>1];b=J[c>>2];c=L[a+6>>1];if(M[(P(d,12)+b|0)+4>>2]<=M[(b+P(c,12)|0)+4>>2]){break b}I[a+6>>1]=d;I[e>>1]=c;c=L[a+6>>1];e=J[(b+P(c,12)|0)+4>>2];d=L[a+4>>1];if(e>>>0<=M[(b+P(d,12)|0)+4>>2]){break b}I[a+4>>1]=c;I[a+6>>1]=d;d=L[a+2>>1];if(e>>>0<=M[(b+P(d,12)|0)+4>>2]){break b}I[a+4>>1]=d;I[a+2>>1]=c;d=L[a>>1];if(e>>>0<=M[(b+P(d,12)|0)+4>>2]){break b}I[a+2>>1]=d;I[a>>1]=c;break a;case 0:case 1:break b;default:break c}}g=a+2|0;d=a+4|0;h=J[c>>2];i=L[a+4>>1];f=J[(h+P(i,12)|0)+4>>2];j=L[a+2>>1];k=J[(h+P(j,12)|0)+4>>2];l=L[a>>1];m=J[(h+P(l,12)|0)+4>>2];d:{e:{if(k>>>0<=m>>>0){if(f>>>0<=k>>>0){break d}I[g>>1]=i;I[d>>1]=j;c=a;e=g;if(f>>>0>m>>>0){break e}break d}c=a;e=d;if(f>>>0>k>>>0){break e}I[a+2>>1]=l;I[a>>1]=j;c=g;if(f>>>0<=m>>>0){break d}}I[c>>1]=i;I[e>>1]=l}e=a+6|0;if((e|0)==(b|0)){break b}g=0;while(1){f:{c=e;i=L[c>>1];j=J[(h+P(i,12)|0)+4>>2];f=L[d>>1];if(j>>>0<=M[(h+P(f,12)|0)+4>>2]){break f}while(1){g:{I[c>>1]=f;c=d;if((c|0)==(a|0)){c=a;break g}d=c-2|0;f=L[d>>1];if(j>>>0>M[(h+P(f,12)|0)+4>>2]){continue}}break}I[c>>1]=i;g=g+1|0;if((g|0)!=8){break f}return(e+2|0)==(b|0)}d=e;c=d+2|0;e=c;if((b|0)!=(c|0)){continue}break}}return 1}return 1}function _T(a,b,c){a=a|0;b=b|0;c=c|0;var d=0,e=0,f=0,g=Q(0),h=Q(0),i=Q(0),j=0,k=0,l=0,m=Q(0),n=Q(0),o=Q(0),p=0,q=0,r=0;d=Ui-80|0;Ui=d;e=J[a+4>>2];Zi[J[J[e>>2]+16>>2]](e,d+28|0,d+24|0,d+20|0,d+16|0,d+12|0,d+8|0,d+4|0,d,b);e=J[d+12>>2]+P(J[d+8>>2],c)|0;f=J[a+4>>2];k=J[d+16>>2];l=J[d+28>>2];j=J[d>>2];a:{if(!J[d+20>>2]){if((j|0)!=3){j=P(J[e+8>>2],k)+l|0;m=N[j>>2];n=N[j+4>>2];o=N[j+8>>2];g=N[f+4>>2];h=N[f+8>>2];i=N[f+12>>2];J[d+76>>2]=0;N[d+72>>2]=o*i;N[d+68>>2]=n*h;N[d+64>>2]=m*g;f=P(J[e+4>>2],k)+l|0;m=N[f>>2];n=N[f+4>>2];o=N[f+8>>2];J[d+60>>2]=0;N[d+56>>2]=o*i;N[d+52>>2]=n*h;N[d+48>>2]=m*g;e=P(J[e>>2],k)+l|0;i=Q(i*N[e+8>>2]);h=Q(h*N[e+4>>2]);g=Q(g*N[e>>2]);break a}j=P(L[e+4>>1],k)+l|0;m=N[j>>2];n=N[j+4>>2];o=N[j+8>>2];g=N[f+4>>2];h=N[f+8>>2];i=N[f+12>>2];J[d+76>>2]=0;N[d+72>>2]=o*i;N[d+68>>2]=n*h;N[d+64>>2]=m*g;f=P(L[e+2>>1],k)+l|0;m=N[f>>2];n=N[f+4>>2];o=N[f+8>>2];J[d+60>>2]=0;N[d+56>>2]=o*i;N[d+52>>2]=n*h;N[d+48>>2]=m*g;e=P(L[e>>1],k)+l|0;i=Q(i*N[e+8>>2]);h=Q(h*N[e+4>>2]);g=Q(g*N[e>>2]);break a}if((j|0)!=3){j=P(J[e+8>>2],k)+l|0;p=O[j>>3];q=O[j+8>>3];r=O[j+16>>3];g=N[f+4>>2];h=N[f+8>>2];i=N[f+12>>2];J[d+76>>2]=0;N[d+72>>2]=i*Q(r);N[d+68>>2]=h*Q(q);N[d+64>>2]=g*Q(p);f=P(J[e+4>>2],k)+l|0;p=O[f>>3];q=O[f+8>>3];r=O[f+16>>3];J[d+60>>2]=0;N[d+56>>2]=i*Q(r);N[d+52>>2]=h*Q(q);N[d+48>>2]=g*Q(p);e=P(J[e>>2],k)+l|0;i=Q(i*Q(O[e+16>>3]));h=Q(h*Q(O[e+8>>3]));g=Q(g*Q(O[e>>3]));break a}j=P(L[e+4>>1],k)+l|0;p=O[j>>3];q=O[j+8>>3];r=O[j+16>>3];g=N[f+4>>2];h=N[f+8>>2];i=N[f+12>>2];J[d+76>>2]=0;N[d+72>>2]=i*Q(r);N[d+68>>2]=h*Q(q);N[d+64>>2]=g*Q(p);f=P(L[e+2>>1],k)+l|0;p=O[f>>3];q=O[f+8>>3];r=O[f+16>>3];J[d+60>>2]=0;N[d+56>>2]=i*Q(r);N[d+52>>2]=h*Q(q);N[d+48>>2]=g*Q(p);e=P(L[e>>1],k)+l|0;i=Q(i*Q(O[e+16>>3]));h=Q(h*Q(O[e+8>>3]));g=Q(g*Q(O[e>>3]))}J[d+44>>2]=0;N[d+40>>2]=i;N[d+36>>2]=h;N[d+32>>2]=g;e=J[a+8>>2];Zi[J[J[e>>2]+8>>2]](e,d+32|0,b,c);a=J[a+4>>2];Zi[J[J[a>>2]+24>>2]](a,b);Ui=d+80|0}function hT(a,b,c,d,e,f){var g=0,h=0,i=Q(0),j=Q(0),k=Q(0),l=Q(0),m=Q(0),n=0,o=Q(0),p=Q(0),q=Q(0),r=Q(0),s=Q(0),t=0,u=Q(0),v=Q(0),w=Q(0),x=0,y=0,z=Q(0),A=Q(0),B=Q(0),C=0,D=0,E=0,F=0,G=0,H=0;g=Ui-32|0;Ui=g;if(J[a+56>>2]>0){o=N[d+8>>2];p=N[c+8>>2];j=Q(o-p);q=N[d>>2];l=N[c>>2];k=Q(q-l);m=N[d+4>>2];i=N[c+4>>2];r=Q(m-i);s=Q(Q(1)/Q(Y(Q(Q(j*j)+Q(Q(k*k)+Q(r*r))))));u=Q(j*s);v=Q(u*j);j=Q(k*s);w=Q(j*k);k=Q(r*s);r=Q(v+Q(w+Q(r*k)));s=Q((o>p?o:p)+N[f+8>>2]);v=Q((i>2]);w=Q((l>2]);z=Q((o>2]);A=Q((i>m?m:i)+N[e+4>>2]);B=Q((l>q?q:l)+N[e>>2]);d=J[a+96>>2];o=u==Q(0)?Q(0xde0b6b000000000):Q(Q(1)/u);h=o>2];J[g>>2]=J[d>>2];J[g+4>>2]=h;h=J[d+12>>2];J[g+8>>2]=J[d+8>>2];J[g+12>>2]=h;h=J[d+28>>2];J[g+24>>2]=J[d+24>>2];J[g+28>>2]=h;h=J[d+20>>2];J[g+16>>2]=J[d+16>>2];J[g+20>>2]=h;N[g>>2]=N[g>>2]-N[f>>2];N[g+4>>2]=N[g+4>>2]-N[f+4>>2];N[g+8>>2]=N[g+8>>2]-N[f+8>>2];N[g+16>>2]=N[g+16>>2]-N[e>>2];N[g+20>>2]=N[g+20>>2]-N[e+4>>2];N[g+24>>2]=N[g+24>>2]-N[e+8>>2];n=0;a:{if(N[d+16>>2]>2]>w){break a}n=1}h=0;b:{c:{d:{e:{f:{if((N[d+24>>2]>2]?h:n)^1|N[d+4>>2]>v|N[d+20>>2]>2];l=Q(q*Q(N[G>>2]-j));i=N[c+4>>2];m=Q(p*Q(N[F>>2]-i));if(l>m){break f}i=Q(p*Q(N[D>>2]-i));j=Q(q*Q(N[H>>2]-j));if(i>j){break f}l=i>l?i:l;k=N[c+8>>2];i=Q(o*Q(N[E>>2]-k));if(l>i){break f}k=Q(o*Q(N[C>>2]-k));m=j>m?m:j;if(k>m){break f}y=J[d+32>>2];n=(y|0)==-1;h=r>(k>l?k:l)&(iQ(0);if(!h|(y|0)!=-1){break e}Zi[J[J[b>>2]+8>>2]](b,J[d+36>>2],J[d+40>>2]);break d}n=J[d+32>>2]==-1}if(n){break d}if(!h){break c}}t=t+1|0;d=d- -64|0;break b}h=J[d+32>>2];t=h+t|0;d=(h<<6)+d|0}x=x+1|0;if(J[a+56>>2]>(t|0)){continue}break}}if(J[83482]<(x|0)){J[83482]=x}Ui=g+32|0}function Mw(a,b,c){var d=0,e=0,f=0,g=0,h=0;e=Ui-48|0;Ui=e;d=J[a+8>>2];f=zk(a,158859,0);J[d+8>>2]=4;J[d>>2]=f;d=J[a+8>>2];if((J[a+28>>2]-d|0)<=16){Ml(a,1);d=J[a+8>>2]}d=d+16|0;J[a+8>>2]=d;g=Hk(b,37);a:{if(!g){f=1;break a}f=1;while(1){b=zk(a,b,g-b|0);J[d+8>>2]=4;J[d>>2]=b;d=J[a+8>>2];if((J[a+28>>2]-d|0)<=16){Ml(a,1);d=J[a+8>>2]}J[a+8>>2]=d+16;b:{c:{d:{e:{f:{g:{h:{i:{j:{b=K[g+1|0];switch(b-99|0){case 13:break f;case 3:break g;case 1:break h;case 0:break i;case 16:break j;case 2:case 4:case 5:case 6:case 7:case 8:case 9:case 10:case 11:case 12:case 14:case 15:break d;default:break e}}b=J[c>>2];b=b?b:137573;b=zk(a,b,yj(b));J[d+24>>2]=4;J[d+16>>2]=b;c=c+4|0;b=J[a+8>>2];if((J[a+28>>2]-b|0)<=16){Ml(a,1);b=J[a+8>>2]}d=b+16|0;break b}b=J[c>>2];H[e+17|0]=0;H[e+16|0]=b;b=e+16|0;b=zk(a,b,yj(b));J[d+24>>2]=4;J[d+16>>2]=b;c=c+4|0;b=J[a+8>>2];if((J[a+28>>2]-b|0)<=16){Ml(a,1);b=J[a+8>>2]}d=b+16|0;break b}b=J[c>>2];J[d+24>>2]=3;O[d+16>>3]=b|0;c=c+4|0;b=J[a+8>>2];if((J[a+28>>2]-b|0)<=16){Ml(a,1);b=J[a+8>>2]}d=b+16|0;break b}b=c+7&-8;h=O[b>>3];J[d+24>>2]=3;O[d+16>>3]=h;c=b+8|0;b=J[a+8>>2];if((J[a+28>>2]-b|0)<=16){Ml(a,1);b=J[a+8>>2]}d=b+16|0;break b}J[e>>2]=J[c>>2];b=e+16|0;Un(b,43805,e);d=J[a+8>>2];b=zk(a,b,yj(b));J[d+8>>2]=4;J[d>>2]=b;c=c+4|0;b=J[a+8>>2];if((J[a+28>>2]-b|0)<=16){Ml(a,1);b=J[a+8>>2]}d=b+16|0;break b}if((b|0)==37){break c}}H[e+18|0]=0;H[e+17|0]=b;H[e+16|0]=37;b=e+16|0;b=zk(a,b,yj(b));J[d+24>>2]=4;J[d+16>>2]=b;b=J[a+8>>2];if((J[a+28>>2]-b|0)<=16){Ml(a,1);b=J[a+8>>2]}d=b+16|0;break b}b=zk(a,151691,1);J[d+24>>2]=4;J[d+16>>2]=b;b=J[a+8>>2];if((J[a+28>>2]-b|0)<=16){Ml(a,1);b=J[a+8>>2]}d=b+16|0}J[a+8>>2]=d;f=f+2|0;b=g+2|0;g=Hk(b,37);if(g){continue}break}}b=zk(a,b,yj(b));J[d+8>>2]=4;J[d>>2]=b;b=J[a+8>>2];if((J[a+28>>2]-b|0)<=16){Ml(a,1);b=J[a+8>>2]}b=b+16|0;J[a+8>>2]=b;OA(a,f+1|0,(b-J[a+12>>2]>>4)-1|0);b=a;a=J[a+8>>2]-(f<<4)|0;J[b+8>>2]=a;Ui=e+48|0;return J[a-16>>2]+16|0}function tka(a){a=a|0;var b=0,c=0,d=Q(0),e=0,f=0,g=0,h=Q(0),i=Q(0),j=Q(0);c=Ui-16|0;Ui=c;e=J[a>>2];f=J[J[a+24>>2]>>2];b=J[a+16>>2];g=J[a+20>>2];a:{if((b|0)==J[75066]&(g|0)==J[75067]){b=-4;if(J[a+32>>2]!=3){break a}b=J[f+8>>2];f=J[e>>2];if(K[e+17|0]==1){e=J[a+40>>2];g=J[a+44>>2];N[c+8>>2]=N[a+48>>2];J[c>>2]=e;J[c+4>>2]=g;a=J[b>>2];if(!(!a|J[a+232>>2]!=2)){h=N[c>>2];i=N[c+4>>2];j=N[c+8>>2];d=N[f+72>>2];J[a+316>>2]=0;N[a+312>>2]=d*j;N[a+308>>2]=d*i;N[a+304>>2]=d*h}b=0;break a}e=J[a+40>>2];g=J[a+44>>2];N[c+8>>2]=N[a+48>>2];J[c>>2]=e;J[c+4>>2]=g;if(J[b>>2]){h=N[f+64>>2];d=Q(h*N[c>>2]);h=Q(h*N[c+4>>2]);b:{if(!(Q(Q(d*d)+Q(h*h))>Q(0))){break b}a=L[b+4>>1];if(a&2){break b}J[b+144>>2]=0;I[b+4>>1]=a|2}N[b+68>>2]=h;N[b+64>>2]=d}b=0;break a}if((b|0)==J[75068]&(g|0)==J[75069]){b=-4;if(J[a+32>>2]!=3){break a}b=J[f+8>>2];if(K[e+17|0]==1){e=J[a+40>>2];f=J[a+44>>2];N[c+8>>2]=N[a+48>>2];J[c>>2]=e;J[c+4>>2]=f;a=J[b>>2];if(!(!a|J[a+232>>2]!=2)){b=J[c>>2];e=J[c+4>>2];d=N[c+8>>2];J[a+332>>2]=0;N[a+328>>2]=d;J[a+320>>2]=b;J[a+324>>2]=e}b=0;break a}e=J[a+40>>2];f=J[a+44>>2];N[c+8>>2]=N[a+48>>2];J[c>>2]=e;J[c+4>>2]=f;if(J[b>>2]){d=N[c+8>>2];c:{if(!(Q(d*d)>Q(0))){break c}a=L[b+4>>1];if(a&2){break c}J[b+144>>2]=0;I[b+4>>1]=a|2}N[b+72>>2]=d}b=0;break a}if((b|0)==J[75072]&(g|0)==J[75073]){b=-4;if(J[a+32>>2]!=6){break a}if(K[e+17|0]==1){dj(3,88458,69306,0);b=-1;break a}b=J[f+8>>2];I[b+4>>1]=L[b+4>>1]&65527|(K[a+40|0]?8:0);b=0;break a}if((b|0)==J[75062]&(g|0)==J[75063]){b=-4;if(J[a+32>>2]){break a}b=J[f+8>>2];d=Q(O[a+40>>3]);if(K[e+17|0]==1){a=J[b>>2];if(!(!a|J[a+232>>2]!=2)){eT(a,d,N[a+440>>2])}b=0;break a}N[b+132>>2]=d;b=0;break a}if((b|0)==J[75064]&(g|0)==J[75065]){b=-4;if(J[a+32>>2]){break a}b=J[f+8>>2];d=Q(O[a+40>>3]);if(K[e+17|0]==1){a=J[b>>2];if(!(!a|J[a+232>>2]!=2)){eT(a,N[a+436>>2],d)}b=0;break a}N[b+136>>2]=d;b=0;break a}b=J[75070]==(b|0)&J[75071]==(g|0)?-13:-1}Ui=c+16|0;return b|0}function _E(a,b){var c=0,d=0,e=0,f=0,g=0,h=0,i=0,j=0,k=0,l=0,m=0,n=0,o=0;l=Ui-80|0;Ui=l;d=a- -64|0;hj(l+8|0,d,72);c=J[a+4>>2];J[a+4>>2]=c|4;m=c&2;c=J[a+52>>2];j=J[c+8>>2];f=j+12|0;e=J[a+48>>2];k=J[e+8>>2];h=k+12|0;n=K[c+44|0]|K[e+44|0];a:{if(n&1){b:{c:{j=J[e+12>>2];if(J[j+4>>2]!=4){k=J[c+12>>2];if(J[k+4>>2]!=4){break c}}Zi[J[J[a>>2]>>2]](a,d,h,f);c=J[a+132>>2]>0;break b}d=J[a+56>>2];e=J[a+60>>2];c=Ui-128|0;Ui=c;J[c+88>>2]=0;J[c+80>>2]=0;J[c+84>>2]=0;J[c+60>>2]=0;J[c+52>>2]=0;J[c+56>>2]=0;i=c+36|0;uz(i,j,d);uz(c- -64|0,k,e);d=J[h+12>>2];J[c+100>>2]=J[h+8>>2];J[c+104>>2]=d;d=J[h+4>>2];J[c+92>>2]=J[h>>2];J[c+96>>2]=d;d=J[f+12>>2];J[c+116>>2]=J[f+8>>2];J[c+120>>2]=d;d=J[f+4>>2];J[c+108>>2]=J[f>>2];J[c+112>>2]=d;H[c+124|0]=1;I[c+28>>1]=0;cV(c,c+24|0,i);Ui=c+128|0;c=N[c+16>>2]>2]=0;break a}Zi[J[J[a>>2]>>2]](a,d,h,f);h=J[a+132>>2];d:{if((h|0)<=0){break d}e:{g=J[l+76>>2];if((g|0)>0){f=0;break e}f=0;c=0;if(h>>>0>=4){i=h&2147483644;e=0;while(1){g=d+P(c,24)|0;J[g+8>>2]=0;J[g+12>>2]=0;g=d+P(c|1,24)|0;J[g+8>>2]=0;J[g+12>>2]=0;g=d+P(c|2,24)|0;J[g+8>>2]=0;J[g+12>>2]=0;g=d+P(c|3,24)|0;J[g+8>>2]=0;J[g+12>>2]=0;c=c+4|0;e=e+4|0;if((i|0)!=(e|0)){continue}break}}e=h&3;if(!e){break d}while(1){i=d+P(c,24)|0;J[i+8>>2]=0;J[i+12>>2]=0;c=c+1|0;f=f+1|0;if((e|0)!=(f|0)){continue}break}break d}while(1){e=d+P(f,24)|0;c=e;J[c+8>>2]=0;J[c+12>>2]=0;o=J[c+16>>2];c=0;f:{while(1){i=(l+8|0)+P(c,24)|0;if(J[i+16>>2]!=(o|0)){c=c+1|0;if((g|0)!=(c|0)){continue}break f}break}N[e+8>>2]=N[i+8>>2];N[e+12>>2]=N[i+12>>2]}f=f+1|0;if((h|0)!=(f|0)){continue}break}}c=(h|0)>0;if((c|0)==(m>>>1|0)){break a}d=L[k+4>>1];if(!(d&2)){J[k+144>>2]=0;I[k+4>>1]=d|2}d=L[j+4>>1];if(d&2){break a}J[j+144>>2]=0;I[j+4>>1]=d|2}J[a+4>>2]=J[a+4>>2]&-3|(c?2:0);d=(b|0)!=0&c;g:{if(!d|m){if(!m|(!b|c)){break g}c=12}else{c=8}Zi[J[c+J[b>>2]>>2]](b,a)}if(d&(n^-1)){Zi[J[J[b>>2]+16>>2]](b,a,l+8|0)}Ui=l+80|0}function NO(a,b,c){var d=0,e=Q(0),f=Q(0),g=Q(0),h=Q(0),i=Q(0),j=Q(0),k=Q(0),l=Q(0),m=Q(0),n=Q(0),o=Q(0),p=Q(0),q=Q(0),r=Q(0),s=Q(0),t=Q(0),u=Q(0),v=Q(0),w=Q(0),x=Q(0),y=Q(0),z=Q(0),A=Q(0),C=Q(0),D=Q(0),E=Q(0),F=Q(0),G=Q(0),I=Q(0),M=Q(0),O=Q(0),R=Q(0),S=0,T=0;d=Ui+-64|0;Ui=d;a:{S=L[b+656>>1];if((S|0)!=65535){T=J[a+32>>2];if((J[a+36>>2]-T|0)/672>>>0<=S>>>0){break a}NO(a,P(S,672)+T|0,d)}b:{if(!(K[b+478|0]&64)){if(!(H[a+374|0]&1)|J[a+352>>2]==2){break b}}Yx(a,b)}e=N[b+384>>2];N[c>>2]=e;f=N[b+388>>2];N[c+4>>2]=f;g=N[b+392>>2];N[c+8>>2]=g;h=N[b+396>>2];N[c+12>>2]=h;i=N[b+400>>2];N[c+16>>2]=i;j=N[b+404>>2];N[c+20>>2]=j;k=N[b+408>>2];N[c+24>>2]=k;l=N[b+412>>2];N[c+28>>2]=l;m=N[b+416>>2];N[c+32>>2]=m;n=N[b+420>>2];N[c+36>>2]=n;o=N[b+424>>2];N[c+40>>2]=o;p=N[b+428>>2];N[c+44>>2]=p;q=N[b+432>>2];N[c+48>>2]=q;r=N[b+436>>2];N[c+52>>2]=r;s=N[b+440>>2];N[c+56>>2]=s;t=N[b+444>>2];N[c+60>>2]=t;if(L[b+656>>1]!=65535){u=N[d+48>>2];v=N[d+32>>2];w=N[d>>2];x=N[d+16>>2];y=N[d+52>>2];z=N[d+36>>2];A=N[d+4>>2];C=N[d+20>>2];D=N[d+56>>2];E=N[d+40>>2];F=N[d+8>>2];G=N[d+24>>2];I=N[d+60>>2];M=N[d+44>>2];O=N[d+12>>2];R=N[d+28>>2];N[c+60>>2]=Q(I*t)+Q(Q(M*s)+Q(Q(O*q)+Q(r*R)));N[c+56>>2]=Q(D*t)+Q(Q(E*s)+Q(Q(F*q)+Q(r*G)));N[c+52>>2]=Q(y*t)+Q(Q(z*s)+Q(Q(A*q)+Q(r*C)));N[c+48>>2]=Q(u*t)+Q(Q(v*s)+Q(Q(w*q)+Q(r*x)));N[c+44>>2]=Q(I*p)+Q(Q(M*o)+Q(Q(O*m)+Q(n*R)));N[c+40>>2]=Q(D*p)+Q(Q(E*o)+Q(Q(F*m)+Q(n*G)));N[c+36>>2]=Q(y*p)+Q(Q(z*o)+Q(Q(A*m)+Q(n*C)));N[c+32>>2]=Q(u*p)+Q(Q(v*o)+Q(Q(w*m)+Q(n*x)));N[c+28>>2]=Q(I*l)+Q(Q(M*k)+Q(Q(O*i)+Q(j*R)));N[c+24>>2]=Q(D*l)+Q(Q(E*k)+Q(Q(F*i)+Q(j*G)));N[c+20>>2]=Q(y*l)+Q(Q(z*k)+Q(Q(A*i)+Q(j*C)));N[c+16>>2]=Q(u*l)+Q(Q(v*k)+Q(Q(w*i)+Q(j*x)));N[c+12>>2]=Q(I*h)+Q(Q(M*g)+Q(Q(O*e)+Q(f*R)));N[c+8>>2]=Q(D*h)+Q(Q(E*g)+Q(Q(F*e)+Q(f*G)));N[c+4>>2]=Q(y*h)+Q(Q(z*g)+Q(Q(A*e)+Q(f*C)));N[c>>2]=Q(u*h)+Q(Q(v*g)+Q(Q(w*e)+Q(f*x)))}Ui=d- -64|0;return}Z(145396,53895,487,84789);B()}function _v(a,b,c,d){var e=0,f=0,g=0,h=0;e=Ui-16|0;f=J[J[c+8>>2]+116>>2];h=J[b+8>>2];g=J[h+116>>2];a:{if(g>>>0>=M[J[a+8>>2]+116>>2]){if(f>>>0>=g>>>0){break a}J[e+8>>2]=h;f=J[b+4>>2];J[e>>2]=J[b>>2];J[e+4>>2]=f;J[b+8>>2]=J[c+8>>2];f=J[c+4>>2];J[b>>2]=J[c>>2];J[b+4>>2]=f;J[c+8>>2]=J[e+8>>2];f=J[e+4>>2];J[c>>2]=J[e>>2];J[c+4>>2]=f;if(M[J[b+8>>2]+116>>2]>=M[J[a+8>>2]+116>>2]){break a}J[e+8>>2]=J[a+8>>2];f=J[a+4>>2];J[e>>2]=J[a>>2];J[e+4>>2]=f;J[a+8>>2]=J[b+8>>2];f=J[b+4>>2];J[a>>2]=J[b>>2];J[a+4>>2]=f;J[b+8>>2]=J[e+8>>2];f=J[e+4>>2];J[b>>2]=J[e>>2];J[b+4>>2]=f;break a}if(f>>>0>>0){J[e+8>>2]=J[a+8>>2];f=J[a+4>>2];J[e>>2]=J[a>>2];J[e+4>>2]=f;J[a+8>>2]=J[c+8>>2];f=J[c+4>>2];J[a>>2]=J[c>>2];J[a+4>>2]=f;J[c+8>>2]=J[e+8>>2];f=J[e+4>>2];J[c>>2]=J[e>>2];J[c+4>>2]=f;break a}J[e+8>>2]=J[a+8>>2];f=J[a+4>>2];J[e>>2]=J[a>>2];J[e+4>>2]=f;J[a+8>>2]=J[b+8>>2];f=J[b+4>>2];J[a>>2]=J[b>>2];J[a+4>>2]=f;J[b+8>>2]=J[e+8>>2];f=J[e+4>>2];J[b>>2]=J[e>>2];J[b+4>>2]=f;if(M[J[c+8>>2]+116>>2]>=M[J[b+8>>2]+116>>2]){break a}J[e+8>>2]=J[b+8>>2];f=J[b+4>>2];J[e>>2]=J[b>>2];J[e+4>>2]=f;J[b+8>>2]=J[c+8>>2];f=J[c+4>>2];J[b>>2]=J[c>>2];J[b+4>>2]=f;J[c+8>>2]=J[e+8>>2];f=J[e+4>>2];J[c>>2]=J[e>>2];J[c+4>>2]=f}f=J[c+8>>2];b:{if(M[J[d+8>>2]+116>>2]>=M[f+116>>2]){break b}J[e+8>>2]=f;f=J[c+4>>2];J[e>>2]=J[c>>2];J[e+4>>2]=f;J[c+8>>2]=J[d+8>>2];f=J[d+4>>2];J[c>>2]=J[d>>2];J[c+4>>2]=f;J[d+8>>2]=J[e+8>>2];f=J[e+4>>2];J[d>>2]=J[e>>2];J[d+4>>2]=f;d=J[b+8>>2];if(M[J[c+8>>2]+116>>2]>=M[d+116>>2]){break b}J[e+8>>2]=d;d=J[b+4>>2];J[e>>2]=J[b>>2];J[e+4>>2]=d;J[b+8>>2]=J[c+8>>2];d=J[c+4>>2];J[b>>2]=J[c>>2];J[b+4>>2]=d;J[c+8>>2]=J[e+8>>2];d=J[e+4>>2];J[c>>2]=J[e>>2];J[c+4>>2]=d;c=J[a+8>>2];if(M[J[b+8>>2]+116>>2]>=M[c+116>>2]){break b}J[e+8>>2]=c;c=J[a+4>>2];J[e>>2]=J[a>>2];J[e+4>>2]=c;J[a+8>>2]=J[b+8>>2];c=J[b+4>>2];J[a>>2]=J[b>>2];J[a+4>>2]=c;J[b+8>>2]=J[e+8>>2];a=J[e+4>>2];J[b>>2]=J[e>>2];J[b+4>>2]=a}}function AR(a,b,c){var d=0,e=0,f=0,g=0;e=Ui-32|0;Ui=e;J[c+28>>2]=-2;J[c+20>>2]=-2;J[c+24>>2]=-2;J[c+12>>2]=-2;J[c+16>>2]=-2;J[c+4>>2]=-2;J[c+8>>2]=-2;g=J[a+8>>2]-J[a+12>>2]>>4;a:{b:{c:{if(!nx(a,b)){Nj(a,-1e4,J[c+48>>2]);Ok(a);f=Ol(a,0,0,0);if(f){break b}rj(a,-10002,J[54664]);d:{e:{f:{if(kj(a,-1)){d=218656;if((kj(a,-1)|0)!=6){break e}J[c+4>>2]=Lk(a,-1e4);break f}J[c+4>>2]=-2;gj(a,-2)}rj(a,-10002,J[54665]);g:{if(kj(a,-1)){d=218660;if((kj(a,-1)|0)!=6){break e}J[c+8>>2]=Lk(a,-1e4);break g}J[c+8>>2]=-2;gj(a,-2)}rj(a,-10002,J[54666]);h:{if(kj(a,-1)){d=218664;if((kj(a,-1)|0)!=6){break e}J[c+12>>2]=Lk(a,-1e4);break h}J[c+12>>2]=-2;gj(a,-2)}rj(a,-10002,J[54667]);i:{if(kj(a,-1)){d=218668;if((kj(a,-1)|0)!=6){break e}J[c+16>>2]=Lk(a,-1e4);break i}J[c+16>>2]=-2;gj(a,-2)}rj(a,-10002,J[54668]);j:{if(kj(a,-1)){d=218672;if((kj(a,-1)|0)!=6){break e}J[c+20>>2]=Lk(a,-1e4);break j}J[c+20>>2]=-2;gj(a,-2)}rj(a,-10002,J[54669]);k:{if(kj(a,-1)){d=218676;if((kj(a,-1)|0)!=6){break e}J[c+24>>2]=Lk(a,-1e4);break k}J[c+24>>2]=-2;gj(a,-2)}rj(a,-10002,J[54670]);if(!kj(a,-1)){break c}if((kj(a,-1)|0)==6){break d}d=218680}c=J[d>>2];J[e+4>>2]=J[b+8>>2];J[e>>2]=c;dj(4,88293,120137,e);gj(a,-2);b=0;break a}J[c+28>>2]=Lk(a,-1e4);break b}J[e+16>>2]=Ij(a,-1,0);dj(4,88293,28177,e+16|0);gj(a,-2);b=0;break a}J[c+28>>2]=-2;gj(a,-2)}b=J[a+8>>2];J[b+8>>2]=0;J[a+8>>2]=b+16;Ok(a);b=!f}c=J[a+8>>2];J[c+8>>2]=0;J[a+8>>2]=c+16;ej(a,-10002,J[54664]);c=J[a+8>>2];J[c+8>>2]=0;J[a+8>>2]=c+16;ej(a,-10002,J[54665]);c=J[a+8>>2];J[c+8>>2]=0;J[a+8>>2]=c+16;ej(a,-10002,J[54666]);c=J[a+8>>2];J[c+8>>2]=0;J[a+8>>2]=c+16;ej(a,-10002,J[54667]);c=J[a+8>>2];J[c+8>>2]=0;J[a+8>>2]=c+16;ej(a,-10002,J[54668]);c=J[a+8>>2];J[c+8>>2]=0;J[a+8>>2]=c+16;ej(a,-10002,J[54669]);c=J[a+8>>2];J[c+8>>2]=0;J[a+8>>2]=c+16;ej(a,-10002,J[54670]);if(J[a+8>>2]-J[a+12>>2]>>4==(g|0)){Ui=e+32|0;return b}Z(143244,37509,2326,10632);B()}function PC(a,b,c){var d=0,e=0,f=0,g=0,h=0,i=0,j=0,k=0;d=Ui-32|0;Ui=d;a:{switch(b+1|0){case 1:Z(112335,55629,156,2284);B();case 0:Z(94770,55629,157,2284);B();default:break a}}if((c|0)!=-1){e=J[a+8>>2];if(J[a+16>>2]-e>>5>>>0<=c>>>0){b:{if(!e){J[a+4>>2]=b;b=b<<2;e=sj(b);J[a>>2]=e;ij(e,255,b);c=c<<5;b=sj(c);J[a+12>>2]=b;J[a+8>>2]=b;J[a+16>>2]=b+c;break b}J[d+16>>2]=0;J[d+20>>2]=0;J[d+24>>2]=0;J[d+28>>2]=0;J[d+8>>2]=0;J[d+12>>2]=0;J[d>>2]=0;J[d+4>>2]=0;J[d+20>>2]=-1;PC(d,b,c);c=J[a+4>>2];if(c){while(1){b=J[J[a>>2]+(i<<2)>>2];if((b|0)!=-1){while(1){c:{d:{e:{k=J[d+16>>2];g=J[d+8>>2];if(J[d+24>>2]!=k-g>>5){e=J[a+8>>2]+(b<<5)|0;b=e;f=J[b>>2];h=J[b+4>>2];j=J[d+4>>2];f:{if(!j){break f}b=J[J[d>>2]+(mxa(f,h,j)<<2)>>2];if((b|0)==-1){break f}while(1){b=g+(b<<5)|0;if((f|0)==J[b>>2]&(h|0)==J[b+4>>2]){break e}b=J[b+28>>2];if((b|0)!=-1){continue}break}}c=J[d+12>>2];g:{if((k|0)!=(c|0)){J[d+12>>2]=c+32;break g}b=J[d+20>>2];if((b|0)==-1){break d}c=g+(b<<5)|0;J[d+20>>2]=J[c+28>>2]}J[c>>2]=f;J[c+4>>2]=h;b=J[e+12>>2];J[c+8>>2]=J[e+8>>2];J[c+12>>2]=b;b=J[e+20>>2];J[c+16>>2]=J[e+16>>2];J[c+20>>2]=b;J[c+24>>2]=J[e+24>>2];J[c+28>>2]=-1;g=J[d+8>>2];f=J[d>>2]+(mxa(f,h,j)<<2)|0;b=J[f>>2];if((b|0)!=-1){while(1){f=g+(b<<5)|0;b=J[f+28>>2];if((b|0)!=-1){continue}break}f=f+28|0}J[f>>2]=c-g>>5;J[d+24>>2]=J[d+24>>2]+1;break c}Z(144851,55629,229,9606);B()}c=J[e+12>>2];J[b+8>>2]=J[e+8>>2];J[b+12>>2]=c;J[b+24>>2]=J[e+24>>2];c=J[e+20>>2];J[b+16>>2]=J[e+16>>2];J[b+20>>2]=c;break c}Z(152203,55629,537,2838);B()}b=J[e+28>>2];if((b|0)!=-1){continue}break}c=J[a+4>>2]}i=i+1|0;if(i>>>0>>0){continue}break}}cj(J[a>>2]);cj(J[a+8>>2]);b=J[d+28>>2];J[a+24>>2]=J[d+24>>2];J[a+28>>2]=b;b=J[d+20>>2];J[a+16>>2]=J[d+16>>2];J[a+20>>2]=b;b=J[d+12>>2];J[a+8>>2]=J[d+8>>2];J[a+12>>2]=b;b=J[d+4>>2];J[a>>2]=J[d>>2];J[a+4>>2]=b}Ui=d+32|0;return}Z(144759,55629,159,2284);B()}Z(94750,55629,158,2284);B()}function ml(a,b){var c=0,d=0,e=0,f=0,g=0,h=0,i=0,j=0,k=0,l=0,m=0;if(!a){return sj(b)}if(b>>>0>=4294967232){J[245744]=48;return 0}f=b>>>0<11?16:b+11&-8;i=a-8|0;j=J[i+4>>2];e=j&-8;a:{if(!(j&3)){if(f>>>0<256){break a}if(e>>>0>=f+4>>>0){c=i;if(e-f>>>0<=J[248822]<<1>>>0){break a}}c=0;break a}g=e+i|0;b:{if(e>>>0>=f>>>0){d=e-f|0;if(d>>>0<16){break b}J[i+4>>2]=j&1|f|2;c=f+i|0;J[c+4>>2]=d|3;J[g+4>>2]=J[g+4>>2]|1;Uy(c,d);break b}if(J[248708]==(g|0)){e=e+J[248705]|0;if(e>>>0<=f>>>0){break a}J[i+4>>2]=j&1|f|2;d=f+i|0;c=e-f|0;J[d+4>>2]=c|1;J[248705]=c;J[248708]=d;break b}if(J[248707]==(g|0)){e=e+J[248704]|0;if(e>>>0>>0){break a}c=e-f|0;c:{if(c>>>0>=16){J[i+4>>2]=j&1|f|2;d=f+i|0;J[d+4>>2]=c|1;e=e+i|0;J[e>>2]=c;J[e+4>>2]=J[e+4>>2]&-2;break c}J[i+4>>2]=e|j&1|2;c=e+i|0;J[c+4>>2]=J[c+4>>2]|1;c=0}J[248707]=d;J[248704]=c;break b}d=J[g+4>>2];if(d&2){break a}k=e+(d&-8)|0;if(k>>>0>>0){break a}m=k-f|0;h=J[g+12>>2];d:{if(d>>>0<=255){c=J[g+8>>2];if((c|0)==(h|0)){J[248702]=J[248702]&oxa(-2,d>>>3|0);break d}J[c+12>>2]=h;J[h+8>>2]=c;break d}l=J[g+24>>2];e:{if((g|0)!=(h|0)){c=J[g+8>>2];J[c+12>>2]=h;J[h+8>>2]=c;break e}f:{c=J[g+20>>2];if(c){d=g+20|0}else{c=J[g+16>>2];if(!c){break f}d=g+16|0}while(1){e=d;h=c;d=c+20|0;c=J[c+20>>2];if(c){continue}d=h+16|0;c=J[h+16>>2];if(c){continue}break}J[e>>2]=0;break e}h=0}if(!l){break d}d=J[g+28>>2];c=(d<<2)+995112|0;g:{if(J[c>>2]==(g|0)){J[c>>2]=h;if(h){break g}J[248703]=J[248703]&oxa(-2,d);break d}J[(J[l+16>>2]==(g|0)?16:20)+l>>2]=h;if(!h){break d}}J[h+24>>2]=l;c=J[g+16>>2];if(c){J[h+16>>2]=c;J[c+24>>2]=h}c=J[g+20>>2];if(!c){break d}J[h+20>>2]=c;J[c+24>>2]=h}if(m>>>0<=15){J[i+4>>2]=j&1|k|2;c=i+k|0;J[c+4>>2]=J[c+4>>2]|1;break b}J[i+4>>2]=j&1|f|2;d=f+i|0;J[d+4>>2]=m|3;c=i+k|0;J[c+4>>2]=J[c+4>>2]|1;Uy(d,m)}c=i}if(c){return c+8|0}d=sj(b);if(!d){return 0}c=J[a-4>>2];c=(c&3?-4:-8)+(c&-8)|0;hj(d,a,b>>>0>c>>>0?c:b);cj(a);return d}function Us(a,b,c){var d=0,e=0,f=0,g=0,h=0,i=0,j=0,k=0,l=0,m=0,n=0,o=0,p=0,q=0,r=0;d=Ui-32|0;Ui=d;a:{switch(b+1|0){case 1:Z(112335,55629,156,2284);B();case 0:Z(94770,55629,157,2284);B();default:break a}}if((c|0)!=-1){e=J[a+8>>2];if((J[a+16>>2]-e|0)/24>>>0<=c>>>0){b:{if(!e){J[a+4>>2]=b;b=b<<2;e=sj(b);J[a>>2]=e;ij(e,255,b);c=P(c,24);b=sj(c);J[a+12>>2]=b;J[a+8>>2]=b;J[a+16>>2]=b+c;break b}J[d+16>>2]=0;J[d+20>>2]=0;J[d+24>>2]=0;J[d+28>>2]=0;J[d+8>>2]=0;J[d+12>>2]=0;J[d>>2]=0;J[d+4>>2]=0;J[d+20>>2]=-1;Us(d,b,c);m=J[a>>2];e=J[a+4>>2];if(e){n=J[d+16>>2];g=J[d+8>>2];p=(n-g|0)/24|0;q=J[a+8>>2];c=J[d+12>>2];while(1){b=J[(k<<2)+m>>2];if((b|0)!=-1){i=J[d+24>>2];o=J[d>>2];while(1){c:{d:{e:{if((i|0)!=(p|0)){h=P(b,24)+q|0;b=h;f=J[b>>2];j=J[b+4>>2];l=J[d+4>>2];f:{if(!l){break f}b=J[(mxa(f,j,l)<<2)+o>>2];if((b|0)==-1){break f}while(1){b=P(b,24)+g|0;if((f|0)==J[b>>2]&(j|0)==J[b+4>>2]){break e}b=J[b+16>>2];if((b|0)!=-1){continue}break}}g:{if((c|0)!=(n|0)){e=c+24|0;break g}b=J[d+20>>2];if((b|0)==-1){break d}b=P(b,24)+g|0;J[d+20>>2]=J[b+16>>2];e=c;c=b}J[c>>2]=f;J[c+4>>2]=j;b=J[h+12>>2];r=J[h+8>>2];J[c+16>>2]=-1;J[c+8>>2]=r;J[c+12>>2]=b;f=(mxa(f,j,l)<<2)+o|0;b=J[f>>2];h:{if((b|0)==-1){J[f>>2]=(c-g|0)/24;i=J[d+24>>2];break h}while(1){f=P(b,24)+g|0;b=J[f+16>>2];if((b|0)!=-1){continue}break}J[f+16>>2]=(c-g|0)/24}i=i+1|0;J[d+24>>2]=i;c=e;break c}J[d+12>>2]=c;Z(144851,55629,229,9606);B()}e=J[h+12>>2];J[b+8>>2]=J[h+8>>2];J[b+12>>2]=e;break c}J[d+12>>2]=c;Z(152203,55629,537,2838);B()}b=J[h+16>>2];if((b|0)!=-1){continue}break}e=J[a+4>>2]}k=k+1|0;if(k>>>0>>0){continue}break}J[d+12>>2]=c}cj(m);cj(J[a+8>>2]);b=J[d+28>>2];J[a+24>>2]=J[d+24>>2];J[a+28>>2]=b;b=J[d+20>>2];J[a+16>>2]=J[d+16>>2];J[a+20>>2]=b;b=J[d+12>>2];J[a+8>>2]=J[d+8>>2];J[a+12>>2]=b;b=J[d+4>>2];J[a>>2]=J[d>>2];J[a+4>>2]=b}Ui=d+32|0;return}Z(144759,55629,159,2284);B()}Z(94750,55629,158,2284);B()}function OC(a,b,c){var d=0,e=0,f=0,g=0,h=0,i=0,j=0,k=0,l=0,m=0,n=0,o=0,p=0,q=0,r=0;d=Ui-32|0;Ui=d;a:{switch(b+1|0){case 1:Z(112335,55629,156,2284);B();case 0:Z(94770,55629,157,2284);B();default:break a}}if((c|0)!=-1){e=J[a+8>>2];if((J[a+16>>2]-e|0)/24>>>0<=c>>>0){b:{if(!e){J[a+4>>2]=b;b=b<<2;e=sj(b);J[a>>2]=e;ij(e,255,b);c=P(c,24);b=sj(c);J[a+12>>2]=b;J[a+8>>2]=b;J[a+16>>2]=b+c;break b}J[d+16>>2]=0;J[d+20>>2]=0;J[d+24>>2]=0;J[d+28>>2]=0;J[d+8>>2]=0;J[d+12>>2]=0;J[d>>2]=0;J[d+4>>2]=0;J[d+20>>2]=-1;OC(d,b,c);m=J[a>>2];e=J[a+4>>2];if(e){n=J[d+16>>2];g=J[d+8>>2];p=(n-g|0)/24|0;q=J[a+8>>2];c=J[d+12>>2];while(1){b=J[(k<<2)+m>>2];if((b|0)!=-1){i=J[d+24>>2];o=J[d>>2];while(1){c:{d:{e:{if((i|0)!=(p|0)){h=P(b,24)+q|0;b=h;f=J[b>>2];j=J[b+4>>2];l=J[d+4>>2];f:{if(!l){break f}b=J[(mxa(f,j,l)<<2)+o>>2];if((b|0)==-1){break f}while(1){b=P(b,24)+g|0;if((f|0)==J[b>>2]&(j|0)==J[b+4>>2]){break e}b=J[b+16>>2];if((b|0)!=-1){continue}break}}g:{if((c|0)!=(n|0)){e=c+24|0;break g}b=J[d+20>>2];if((b|0)==-1){break d}b=P(b,24)+g|0;J[d+20>>2]=J[b+16>>2];e=c;c=b}J[c>>2]=f;J[c+4>>2]=j;b=J[h+12>>2];r=J[h+8>>2];J[c+16>>2]=-1;J[c+8>>2]=r;J[c+12>>2]=b;f=(mxa(f,j,l)<<2)+o|0;b=J[f>>2];h:{if((b|0)==-1){J[f>>2]=(c-g|0)/24;i=J[d+24>>2];break h}while(1){f=P(b,24)+g|0;b=J[f+16>>2];if((b|0)!=-1){continue}break}J[f+16>>2]=(c-g|0)/24}i=i+1|0;J[d+24>>2]=i;c=e;break c}J[d+12>>2]=c;Z(144851,55629,229,9606);B()}e=J[h+12>>2];J[b+8>>2]=J[h+8>>2];J[b+12>>2]=e;break c}J[d+12>>2]=c;Z(152203,55629,537,2838);B()}b=J[h+16>>2];if((b|0)!=-1){continue}break}e=J[a+4>>2]}k=k+1|0;if(k>>>0>>0){continue}break}J[d+12>>2]=c}cj(m);cj(J[a+8>>2]);b=J[d+28>>2];J[a+24>>2]=J[d+24>>2];J[a+28>>2]=b;b=J[d+20>>2];J[a+16>>2]=J[d+16>>2];J[a+20>>2]=b;b=J[d+12>>2];J[a+8>>2]=J[d+8>>2];J[a+12>>2]=b;b=J[d+4>>2];J[a>>2]=J[d>>2];J[a+4>>2]=b}Ui=d+32|0;return}Z(144759,55629,159,2284);B()}Z(94750,55629,158,2284);B()}function sfa(a){a=a|0;var b=0,c=0,d=0,e=0,f=0,g=0,h=0,i=0,j=0,k=0,l=0,m=Q(0),n=Q(0),o=0,p=0,q=0;k=Ui-16|0;Ui=k;l=J[J[a+36>>2]+8>>2];g=-13;d=J[a+4>>2];if(aR(d,J[a+20>>2],J[a+24>>2],k+8|0)){p=J[l>>2];g=J[d>>2];i=J[k+8>>2];a:{if(K[d+17|0]==1){NL(g,p,i);break a}b=Ui-48|0;Ui=b;b:{c:{c=J[g>>2];f=J[g+4>>2];if((c|0)!=(f|0)){while(1){e=J[J[(o<<2)+c>>2]+102992>>2];if(e){while(1){m=N[e+116>>2];d=J[e+100>>2];if(d){while(1){a=J[d+4>>2];if((p|0)==J[d+12>>2]){I[b+46>>1]=0;I[b+42>>1]=1;I[b+44>>1]=65535;J[b+28>>2]=1045220557;J[b+20>>2]=0;J[b+24>>2]=0;H[b+40|0]=0;J[b+32>>2]=0;J[b+36>>2]=0;J[b+36>>2]=1065353216;j=J[d+40>>2];h=L[j>>1]|L[j+2>>1]<<16;I[b+42>>1]=h;I[b+44>>1]=h>>>16;I[b+46>>1]=L[j+4>>1];N[b+28>>2]=N[d+16>>2];H[b+40|0]=K[d+44|0];N[b+32>>2]=N[d+20>>2];J[b+20>>2]=i;J[b+24>>2]=J[d+48>>2];j=cF(e,b+20|0);d:{if(!(H[i+20|0]&1)){break d}h=J[d+12>>2];q=Zi[J[J[i>>2]+12>>2]](i)|0;c=0;h=Zi[J[J[h>>2]+12>>2]](h)|0;if(!q){break d}while(1){I[b+16>>1]=0;I[b+12>>1]=1;I[b+14>>1]=65535;f=J[d+40>>2];if(c>>>0>>0){f=P(P(H[J[d+12>>2]+20|0]&1,c),6)+f|0}I[b+16>>1]=L[f+4>>1];J[b+12>>2]=L[f>>1]|L[f+2>>1]<<16;Nv(j,b+12|0,c);c=c+1|0;if((q|0)!=(c|0)){continue}break}}rV(e,d);bF(e,1)}d=a;if(d){continue}break}}e:{if(J[e>>2]!=2){break e}n=Q(0);c=J[e+100>>2];if(!c){break e}while(1){a=J[c+12>>2];Zi[J[J[a>>2]+28>>2]](a,b+20|0,Q(1));n=Q(n+N[b+20>>2]);c=J[c+4>>2];if(c){continue}break}if(n<=Q(0)){break e}c=J[e+100>>2];if(c){m=Q(m/n);d=(C(m),v(2));a=d&2147483647;if(!(!a|d-1>>>0<8388607|a-8388608>>>0<2130706432&(d|0)>=0)){break c}while(1){N[c>>2]=m;c=J[c+4>>2];if(c){continue}break}}Hr(e)}e=J[e+96>>2];if(e){continue}break}c=J[g>>2];f=J[g+4>>2]}o=o+1|0;if(o>>>0>2>>>0){continue}break}}Ui=b+48|0;break b}Z(58185,55589,303,1737);B()}}a=J[l>>2];f:{if(!a){break f}if(K[l+4|0]==1){if(a){Zi[J[J[a>>2]+4>>2]](a)}break f}if(a){Zi[J[J[a>>2]+4>>2]](a)}}J[l>>2]=i;g=0}Ui=k+16|0;return g|0}function dC(a,b,c,d,e,f,g){var h=0,i=0,j=0,k=0,l=0,m=0,n=0,o=0,p=0;n=Ui-32|0;Ui=n;a:{b:{c:{d:{e:{f:{h=J[a+4>>2];g:{if(!h){break g}h=J[J[a>>2]+(mxa(b,c,h)<<2)>>2];if((h|0)==-1){break g}i=J[a+8>>2];while(1){h=i+P(h,40)|0;if(J[h>>2]==(b|0)&J[h+4>>2]==(c|0)){break f}h=J[h+32>>2];if((h|0)!=-1){continue}break}}h=J[a+24>>2];if((h|0)==((J[a+16>>2]-J[a+8>>2]|0)/40|0)){h=h+8|0;Vx(a,h,h<<1)}h=a+32|0;i=e+f|0;k=J[a+40>>2];j=J[a+36>>2];l=k-j>>4;if(i>>>0>l>>>0){if(H[a+44|0]&1){break c}lj((i-l|0)+(k-J[h>>2]>>4)|0,16,h,a+40|0,a+36|0);j=J[a+36>>2];k=J[a+40>>2]}h=J[h>>2];l=j-h>>4;j=l+i|0;if(j>>>0>k-h>>4>>>0){break b}J[a+36>>2]=h+(j<<4);J[n+20>>2]=i;J[n+8>>2]=b;J[n+12>>2]=c;J[n+24>>2]=g;J[n+16>>2]=l;UC(a,b,c,n+8|0);h=0;g=J[a+4>>2];h:{if(!g){break h}g=J[J[a>>2]+(mxa(b,c,g)<<2)>>2];if((g|0)==-1){break h}i=J[a+8>>2];while(1){h=i+P(g,40)|0;if(J[h>>2]==(b|0)&J[h+4>>2]==(c|0)){break h}g=J[h+32>>2];if((g|0)!=-1){continue}break}h=0}o=h?h+8|0:0;break e}k=J[h+20>>2];if(k){b=-5;if(J[h+24>>2]!=(g|0)){break d}}o=h+8|0;b=e+f|0;if(b>>>0<=k>>>0){break e}j=a+36|0;i=a+32|0;c=J[h+16>>2];l=b-k|0;g=J[a+40>>2];m=J[a+36>>2];if(l>>>0>g-m>>4>>>0){if(H[a+44|0]&1){break c}lj(l+(g-J[i>>2]>>4)|0,16,i,a+40|0,j);m=J[j>>2];g=J[a+40>>2]}p=m;m=J[i>>2];i=l+(p-m>>4)|0;if(i>>>0>g-m>>4>>>0){break b}J[j>>2]=m+(i<<4);if(c>>>0>=i>>>0){break a}g=0;j=m+(c<<4)|0;m=b<<4;k=k<<4;el(j+m|0,ij(k+j|0,0,m-k|0),i-(b+c|0)<<4);J[h+20>>2]=b;i=J[a+4>>2];if(!i){break e}k=l&2147483647;j=J[a>>2];while(1){h=J[j+(g<<2)>>2];if((h|0)!=-1){l=J[a+8>>2];while(1){b=l+P(h,40)|0;h=J[b+16>>2];if(h>>>0>c>>>0){J[b+16>>2]=h+k}h=J[b+32>>2];if((h|0)!=-1){continue}break}}g=g+1|0;if((i|0)!=(g|0)){continue}break}}b=J[o+8>>2];c=J[a+36>>2];a=J[a+32>>2];if(b>>>0>=c-a>>4>>>0){break a}hj((a+(b<<4)|0)+(f<<4)|0,d,e<<4);b=0}Ui=n+32|0;return b}Z(151729,53895,501,2284);B()}Z(144782,53895,514,59583);B()}Z(145396,53895,487,84789);B()}function cC(a,b,c,d,e,f){var g=0,h=0,i=0,j=0,k=0,l=0,m=0,n=0,o=0;k=Ui-32|0;Ui=k;a:{b:{c:{g=J[a+4>>2];d:{e:{if(!g){break e}g=J[J[a>>2]+(mxa(b,c,g)<<2)>>2];if((g|0)==-1){break e}h=J[a+8>>2];while(1){g=h+P(g,40)|0;if(J[g>>2]!=(b|0)|J[g+4>>2]!=(c|0)){g=J[g+32>>2];if((g|0)!=-1){continue}break e}break}h=g+8|0;if(J[g+20>>2]==(e|0)){break d}f:{g=J[a+4>>2];if(!g){break f}g=J[J[a>>2]+(mxa(b,c,g)<<2)>>2];if((g|0)==-1){break f}h=J[a+8>>2];while(1){g=h+P(g,40)|0;if(J[g>>2]!=(b|0)|J[g+4>>2]!=(c|0)){g=J[g+32>>2];if((g|0)!=-1){continue}break f}break}i=J[g+16>>2];h=J[a+32>>2];j=J[a+36>>2]-h>>4;if(i>>>0>=j>>>0){break b}h=h+(i<<4)|0;g=J[g+20>>2];el(h,h+(g<<4)|0,j-(g+i|0)<<4);oN(a,b,c);h=J[a+32>>2];j=(J[a+36>>2]-h>>4)-g|0;if(J[a+40>>2]-h>>4>>>0>=j>>>0){J[a+36>>2]=h+(j<<4);j=J[a+4>>2];if(!j){break f}m=g&2147483647;n=J[a>>2];h=0;while(1){g=J[(h<<2)+n>>2];if((g|0)!=-1){o=J[a+8>>2];while(1){g=P(g,40)+o|0;l=J[g+16>>2];if(i>>>0>>0){J[g+16>>2]=l-m}g=J[g+32>>2];if((g|0)!=-1){continue}break}}h=h+1|0;if((j|0)!=(h|0)){continue}break}break f}break a}}g=J[a+24>>2];if((g|0)==((J[a+16>>2]-J[a+8>>2]|0)/40|0)){g=g+8|0;Vx(a,g,g<<1)}g=a+32|0;i=J[a+40>>2];h=J[a+36>>2];j=i-h>>4;if(j>>>0>>0){if(H[a+44|0]&1){break c}lj((e-j|0)+(i-J[g>>2]>>4)|0,16,g,a+40|0,a+36|0);i=J[a+40>>2];h=J[a+36>>2]}g=J[g>>2];j=h-g>>4;h=j+e|0;if(h>>>0>i-g>>4>>>0){break a}J[a+36>>2]=g+(h<<4);J[k+20>>2]=e;J[k+8>>2]=b;J[k+12>>2]=c;J[k+24>>2]=f;J[k+16>>2]=j;UC(a,b,c,k+8|0);g=0;f=J[a+4>>2];g:{if(!f){break g}i=J[J[a>>2]+(mxa(b,c,f)<<2)>>2];if((i|0)==-1){break g}f=J[a+8>>2];while(1){g=f+P(i,40)|0;if(J[g>>2]==(b|0)&J[g+4>>2]==(c|0)){break g}i=J[g+32>>2];if((i|0)!=-1){continue}break}g=0}h=g?g+8|0:0}b=J[h+8>>2];c=J[a+36>>2];a=J[a+32>>2];if(b>>>0>=c-a>>4>>>0){break b}hj(a+(b<<4)|0,d,e<<4);Ui=k+32|0;return}Z(151729,53895,501,2284);B()}Z(145396,53895,487,84789);B()}Z(144782,53895,514,59583);B()}function RK(a,b,c,d,e,f,g,h,i,j){var k=0,l=0,m=0;k=Ui-96|0;Ui=k;J[k+80>>2]=0;J[k+84>>2]=0;J[k+72>>2]=0;J[k+76>>2]=0;J[k+88>>2]=0;J[k+92>>2]=0;J[k+64>>2]=0;J[k+68>>2]=0;J[k+56>>2]=e;J[k+60>>2]=f;J[k+84>>2]=1;J[k+76>>2]=b;J[k+52>>2]=0;m=J[b+16>>2];a:{if(m){J[k+12>>2]=a;J[k+40>>2]=b;l=J[b+12>>2];J[k+24>>2]=g;J[k+16>>2]=l;J[k+48>>2]=0;J[k+36>>2]=0;J[k+20>>2]=c;J[k+28>>2]=h;J[k+32>>2]=i&1073741823|((h|0)!=(i|0))<<30;J[k+44>>2]=k+52;l=Zi[m|0](k+12|0)|0;if(l){break a}l=J[k+52>>2]}J[k+72>>2]=0;J[k+80>>2]=h;J[k+12>>2]=a;J[k+44>>2]=b;m=J[b+12>>2];J[k+36>>2]=l;J[k+32>>2]=i&2147483647|((h|0)!=(i|0))<<31;J[k+28>>2]=h;J[k+24>>2]=g;J[k+16>>2]=m;J[k+20>>2]=c;J[k+40>>2]=k+56;l=Zi[J[b+20>>2]](k+12|0)|0;if(l){break a}g=J[b+24>>2];if(!g){l=0;break a}J[k+12>>2]=a;J[k+32>>2]=b;J[k+16>>2]=J[b+12>>2];J[k+24>>2]=J[k+52>>2];J[k+28>>2]=k+56;l=Zi[g|0](k+12|0)|0;if((l|0)!=-17){break a}while(1){vp(1e3);l=Zi[J[b+24>>2]](k+12|0)|0;if((l|0)==-17){continue}break}}g=J[a+8392>>2];J[a+8396>>2]=g;b:{if((J[a+8400>>2]-g|0)!=1048576){if(H[a+8404|0]&1){break b}lj(1048576,1,a+8392|0,a+8400|0,a+8396|0)}h=99687;c:{d:{e:{switch(l+21|0){case 21:l=MK(a,c,e,f,k+56|0);if(!l){J[j>>2]=J[k+64>>2];l=0;break c}J[k+12>>2]=a;J[k+24>>2]=b;J[k+16>>2]=J[b+12>>2];J[k+20>>2]=k+56;Zi[J[b+28>>2]](k+12|0)|0;break c;case 19:h=89725;break d;case 18:h=96884;break d;case 17:h=91455;break d;case 16:h=97496;break d;case 15:h=92664;break d;case 14:h=95277;break d;case 13:h=85108;break d;case 12:h=89580;break d;case 11:h=98012;break d;case 10:h=89241;break d;case 9:h=92438;break d;case 8:h=89456;break d;case 7:h=89417;break d;case 6:h=97237;break d;case 5:h=89488;break d;case 4:h=94241;break d;case 2:h=93628;break d;case 1:h=93686;break d;case 0:h=89596;break d;case 20:break d;default:break e}}h=97515}J[k+4>>2]=h;J[k>>2]=d;dj(3,96538,28401,k)}Ui=k+96|0;return l}Z(151729,53895,501,2284);B()}function Sua(a,b){a=a|0;b=b|0;var c=Q(0),d=Q(0),e=0,f=Q(0),g=Q(0),h=Q(0),i=Q(0),j=Q(0),k=Q(0),l=Q(0),m=Q(0),n=Q(0),o=0,p=Q(0),q=Q(0),r=Q(0),s=Q(0),t=Q(0),u=0,v=Q(0),w=Q(0),x=Q(0),y=Q(0),z=Q(0),A=Q(0),B=Q(0);u=1;o=J[b+24>>2];e=o+P(J[a+132>>2],12)|0;l=N[e+8>>2];v=N[e+4>>2];w=N[e>>2];e=o+P(J[a+128>>2],12)|0;m=N[e+8>>2];j=N[e+4>>2];x=N[e>>2];p=N[a+180>>2];n=N[a+176>>2];a:{if(K[a+112|0]!=1){break a}o=J[a+224>>2];if(!o|Q(n+p)==Q(0)){break a}g=Q(Q(l-m)-N[a+116>>2]);b:{c:{switch(o-1|0){case 2:c=Q(g-N[a+120>>2]);c=cQ(0)?c:Q(-c);c=Q(c*Q(-N[a+220>>2]));break b;case 0:g=Q(g-N[a+120>>2]);c=Q(g+Q(.03490658849477768));c=c>2]));h=Q(-g);break b;case 1:break c;default:break b}}h=Q(g-N[a+124>>2]);c=Q(h+Q(-.03490658849477768));c=c>2]))}u=h<=Q(.03490658849477768);l=Q(Q(p*c)+l);m=Q(m-Q(n*c))}c=N[a+164>>2];g=N[a+80>>2];h=Hj(l);d=N[a+160>>2];i=N[a+76>>2];k=Rj(l);f=N[a+156>>2];q=N[a+72>>2];d=Q(i-d);r=Q(g-c);c=Q(Q(h*d)+Q(k*r));s=Hj(m);y=Q(N[a+68>>2]-N[a+152>>2]);z=Rj(m);f=Q(q-f);g=Q(Q(s*y)+Q(z*f));q=N[a+168>>2];t=N[a+172>>2];A=Q(q+t);i=Q(Q(Q(p*c)*c)+Q(Q(Q(n*g)*g)+A));B=j;k=Q(Q(k*d)-Q(h*r));d=Q(p*k);h=Q(Q(z*y)-Q(s*f));r=Q(Q(d*k)+Q(Q(Q(n*h)*h)+A));d=Q(Q(Q(h*Q(-n))*g)-Q(d*c));f=Q(Q(i*r)-Q(d*d));s=f!=Q(0)?Q(Q(1)/f):f;j=Q(Q(Q(v+c)-j)-g);f=Q(i*j);i=Q(Q(Q(w+k)-x)-h);f=Q(s*Q(-Q(f-Q(d*i))));N[e+4>>2]=B-Q(q*f);d=Q(Q(Q(r*i)-Q(d*j))*s);N[e>>2]=x+Q(q*d);e=J[b+24>>2];N[(e+P(J[a+128>>2],12)|0)+8>>2]=m-Q(n*Q(Q(h*f)+Q(g*d)));e=e+P(J[a+132>>2],12)|0;N[e+4>>2]=v+Q(t*f);N[e>>2]=w-Q(t*d);N[(J[b+24>>2]+P(J[a+132>>2],12)|0)+8>>2]=Q(p*Q(Q(k*f)+Q(c*d)))+l;return Q(Y(Q(Q(i*i)+Q(j*j))))<=Q(.004999999888241291)&u}function GS(a,b){var c=0,d=0,e=0,f=0,g=0,h=0;c=Ui-112|0;Ui=c;h=J[a+4>>2];e=J[a+48>>2];g=tm(e,10,0,0,0);J[c+100>>2]=0;J[c+104>>2]=0;J[c+108>>2]=0;J[c+96>>2]=b;J[b+8>>2]=g;J[b>>2]=11;J[b+16>>2]=-1;J[b+20>>2]=-1;J[c+80>>2]=0;J[c+72>>2]=0;J[c+88>>2]=-1;J[c+92>>2]=-1;kn(J[a+48>>2],b);if(J[a+16>>2]!=123){b=J[a+52>>2];J[c+64>>2]=Cl(a,123);qk(a,gk(b,74053,c- -64|0))}tk(a);b=J[a+16>>2];a:{if((b|0)==125){break a}while(1){if(J[c+72>>2]){kn(e,c+72|0);J[c+72>>2]=0;if(J[c+108>>2]==50){TA(e,J[J[c+96>>2]+8>>2],J[c+104>>2],50);J[c+108>>2]=0}b=J[a+16>>2]}b:{c:{if((b|0)!=91){if((b|0)!=285){break c}J[a+32>>2]=HI(a,a+40|0);if(J[a+32>>2]!=61){Il(a,c+72|0,0);b=J[c+104>>2];if((b|0)>=2147483646){b=J[a+48>>2];d=J[b+16>>2];f=J[J[b>>2]+60>>2];d:{if(!f){J[c+32>>2]=2147483645;J[c+36>>2]=32070;d=gk(d,27750,c+32|0);break d}J[c+52>>2]=2147483645;J[c+48>>2]=f;J[c+56>>2]=32070;d=gk(d,27784,c+48|0)}Wn(J[b+12>>2],d,0);b=J[c+104>>2]}J[c+104>>2]=b+1;J[c+108>>2]=J[c+108>>2]+1;break b}QG(a,c+72|0);break b}QG(a,c+72|0);break b}Il(a,c+72|0,0);b=J[c+104>>2];if((b|0)>=2147483646){b=J[a+48>>2];d=J[b+16>>2];f=J[J[b>>2]+60>>2];e:{if(!f){J[c>>2]=2147483645;J[c+4>>2]=32070;d=gk(d,27750,c);break e}J[c+20>>2]=2147483645;J[c+16>>2]=f;J[c+24>>2]=32070;d=gk(d,27784,c+16|0)}Wn(J[b+12>>2],d,0);b=J[c+104>>2]}J[c+104>>2]=b+1;J[c+108>>2]=J[c+108>>2]+1}b=J[a+16>>2]-44|0;if((b|0)!=15?b:0){break a}tk(a);b=J[a+16>>2];if((b|0)!=125){continue}break}}pp(a,125,123,h);a=J[c+108>>2];f:{if(!a){break f}g:{switch(J[c+72>>2]){case 13:case 14:Pw(e,c+72|0,-1);TA(e,J[J[c+96>>2]+8>>2],J[c+104>>2],-1);J[c+104>>2]=J[c+104>>2]-1;break f;default:kn(e,c+72|0);a=J[c+108>>2];break;case 0:break g}}TA(e,J[J[c+96>>2]+8>>2],J[c+104>>2],a)}a=g<<2;b=J[a+J[J[e>>2]+12>>2]>>2]&8388607|rI(J[c+104>>2])<<23;J[a+J[J[e>>2]+12>>2]>>2]=b;g=rI(J[c+100>>2]);J[a+J[J[e>>2]+12>>2]>>2]=g<<14&8372224|b&-8372225;Ui=c+112|0}function TC(a,b,c){var d=0,e=0,f=0,g=0,h=0,i=0,j=0,k=0;d=Ui-32|0;Ui=d;a:{switch(b+1|0){case 1:Z(112335,55629,156,2284);B();case 0:Z(94770,55629,157,2284);B();default:break a}}if((c|0)!=-1){e=J[a+8>>2];if(J[a+16>>2]-e>>5>>>0<=c>>>0){b:{if(!e){J[a+4>>2]=b;b=b<<2;e=sj(b);J[a>>2]=e;ij(e,255,b);c=c<<5;b=sj(c);J[a+12>>2]=b;J[a+8>>2]=b;J[a+16>>2]=b+c;break b}J[d+16>>2]=0;J[d+20>>2]=0;J[d+24>>2]=0;J[d+28>>2]=0;J[d+8>>2]=0;J[d+12>>2]=0;J[d>>2]=0;J[d+4>>2]=0;J[d+20>>2]=-1;TC(d,b,c);c=J[a+4>>2];if(c){while(1){b=J[J[a>>2]+(i<<2)>>2];if((b|0)!=-1){while(1){c:{d:{e:{k=J[d+16>>2];g=J[d+8>>2];if(J[d+24>>2]!=k-g>>5){f=J[a+8>>2]+(b<<5)|0;b=f;c=J[b>>2];h=J[b+4>>2];j=J[d+4>>2];f:{if(!j){break f}b=J[J[d>>2]+(mxa(c,h,j)<<2)>>2];if((b|0)==-1){break f}while(1){b=g+(b<<5)|0;if((c|0)==J[b>>2]&(h|0)==J[b+4>>2]){break e}b=J[b+24>>2];if((b|0)!=-1){continue}break}}e=J[d+12>>2];g:{if((k|0)!=(e|0)){J[d+12>>2]=e+32;break g}b=J[d+20>>2];if((b|0)==-1){break d}e=g+(b<<5)|0;J[d+20>>2]=J[e+24>>2]}J[e>>2]=c;J[e+4>>2]=h;b=J[f+12>>2];J[e+8>>2]=J[f+8>>2];J[e+12>>2]=b;b=J[f+20>>2];J[e+16>>2]=J[f+16>>2];J[e+20>>2]=b;J[e+24>>2]=-1;g=J[d+8>>2];c=J[d>>2]+(mxa(c,h,j)<<2)|0;b=J[c>>2];h:{if((b|0)==-1){J[c>>2]=e-g>>5;break h}while(1){c=g+(b<<5)|0;b=J[c+24>>2];if((b|0)!=-1){continue}break}J[c+24>>2]=e-g>>5}J[d+24>>2]=J[d+24>>2]+1;break c}Z(144851,55629,229,9606);B()}c=J[f+12>>2];J[b+8>>2]=J[f+8>>2];J[b+12>>2]=c;c=J[f+20>>2];J[b+16>>2]=J[f+16>>2];J[b+20>>2]=c;break c}Z(152203,55629,537,2838);B()}b=J[f+24>>2];if((b|0)!=-1){continue}break}c=J[a+4>>2]}i=i+1|0;if(i>>>0>>0){continue}break}}cj(J[a>>2]);cj(J[a+8>>2]);b=J[d+28>>2];J[a+24>>2]=J[d+24>>2];J[a+28>>2]=b;b=J[d+20>>2];J[a+16>>2]=J[d+16>>2];J[a+20>>2]=b;b=J[d+12>>2];J[a+8>>2]=J[d+8>>2];J[a+12>>2]=b;b=J[d+4>>2];J[a>>2]=J[d>>2];J[a+4>>2]=b}Ui=d+32|0;return}Z(144759,55629,159,2284);B()}Z(94750,55629,158,2284);B()}function pu(a,b,c,d,e){var f=0,g=Q(0),h=Q(0),i=Q(0),j=Q(0),k=Q(0),l=Q(0),m=Q(0),n=Q(0),o=0,p=Q(0),q=Q(0),r=Q(0),s=Q(0),t=Q(0),u=0,v=Q(0),w=Q(0),x=Q(0),y=Q(0);f=J[a+9800>>2];if(f){o=J[f+48>>2];u=J[f+52>>2];if(u){J[u+48>>2]=o}if(o){J[o+52>>2]=J[f+52>>2]}if(J[a+9800>>2]==(f|0)){J[a+9800>>2]=J[f+52>>2]}J[a+9804>>2]=J[a+9804>>2]-1;J[f+48>>2]=0;o=J[a+9792>>2];J[f+52>>2]=o;if(o){J[o+48>>2]=f}J[a+9792>>2]=f;J[a+9796>>2]=J[a+9796>>2]+1;J[f+32>>2]=d;J[f+28>>2]=c;J[f+24>>2]=b;H[f+59|0]=0;q=N[c+24>>2];h=N[d+24>>2];j=N[b+24>>2];k=N[c+16>>2];l=N[d+20>>2];i=N[b+20>>2];m=N[c+20>>2];n=N[d+16>>2];g=N[b+16>>2];J[f+12>>2]=0;k=Q(k-g);l=Q(l-i);m=Q(m-i);g=Q(n-g);i=Q(Q(k*l)-Q(m*g));N[f+8>>2]=i;q=Q(q-j);p=Q(q*g);g=Q(h-j);j=Q(p-Q(k*g));N[f+4>>2]=j;g=Q(Q(m*g)-Q(q*l));N[f>>2]=g;h=N[b+24>>2];k=N[c+24>>2];l=Q(h-k);q=Q(Y(Q(Q(i*i)+Q(Q(g*g)+Q(j*j)))));o=q>Q(9999999747378752e-20);m=N[b+20>>2];n=N[c+20>>2];r=Q(m-n);s=N[b+16>>2];p=N[c+16>>2];t=Q(s-p);t=Q(Q(h*Q(Q(g*r)-Q(j*t)))+Q(Q(s*Q(Q(j*l)-Q(i*r)))+Q(m*Q(Q(i*t)-Q(g*l)))));l=N[d+20>>2];v=Q(n-l);r=N[d+16>>2];w=Q(p-r);x=Q(k*Q(Q(g*v)-Q(j*w)));y=p;p=k;k=N[d+24>>2];p=Q(p-k);n=Q(x+Q(Q(y*Q(Q(j*p)-Q(i*v)))+Q(n*Q(Q(i*w)-Q(g*p)))));n=n>t?t:n;m=Q(l-m);s=Q(r-s);h=Q(k-h);h=Q(Q(k*Q(Q(g*m)-Q(j*s)))+Q(Q(r*Q(Q(j*h)-Q(i*m)))+Q(l*Q(Q(i*s)-Q(g*h)))));h=Q((h>n?n:h)/(o?q:Q(1)));N[f+20>>2]=h>=Q(-.009999999776482582)?Q(0):h;if(o){k=N[b+24>>2];l=N[b+16>>2];m=N[b+20>>2];h=Q(Q(1)/q);N[f+8>>2]=i*h;N[f+4>>2]=j*h;N[f>>2]=g*h;i=Q(Q(Q(k*i)+Q(Q(l*g)+Q(j*m)))/q);N[f+16>>2]=i;if(e){return f}if(i>=Q(-9999999747378752e-21)){return f}b=3}else{b=2}J[a>>2]=b;b=J[f+48>>2];c=J[f+52>>2];if(c){J[c+48>>2]=b}if(b){J[b+52>>2]=J[f+52>>2]}if(J[a+9792>>2]==(f|0)){J[a+9792>>2]=J[f+52>>2]}J[a+9796>>2]=J[a+9796>>2]-1;J[f+48>>2]=0;b=J[a+9800>>2];J[f+52>>2]=b;if(b){J[b+48>>2]=f}J[a+9800>>2]=f;J[a+9804>>2]=J[a+9804>>2]+1;return 0}J[a>>2]=5;return 0}function Kda(a){a=a|0;var b=0,c=0,d=0,e=0,f=0,g=0,h=0,i=0,j=0,k=0,l=0,m=0,n=0,o=0;b=Ui-144|0;Ui=b;g=-13;a:{if(dk(J[a+20>>2],J[a+24>>2],J[59226],b+108|0,0)){break a}c=J[J[a+36>>2]+8>>2];J[b+32>>2]=0;J[b+36>>2]=0;d=b- -64|0;J[d>>2]=0;J[d+4>>2]=0;J[b+40>>2]=0;J[b+44>>2]=0;J[b+24>>2]=0;J[b+28>>2]=0;J[b+16>>2]=0;J[b+20>>2]=0;J[b+8>>2]=0;J[b+12>>2]=0;J[b+56>>2]=0;J[b+60>>2]=0;J[b+72>>2]=0;J[b+76>>2]=0;J[b>>2]=0;J[b+4>>2]=0;J[b+48>>2]=0;J[b+52>>2]=0;J[b+96>>2]=0;J[b+100>>2]=0;J[b+80>>2]=0;J[b+36>>2]=-1;J[b+68>>2]=-1;g=RQ(J[a>>2],J[b+108>>2],b);b:{if(!g){d=J[c+80>>2];if(d){vj(J[a>>2],d)}d=J[c+96>>2];if(d){Uj(d)}d=J[c+100>>2];if(d){Mx(d)}J[c+96>>2]=J[b+96>>2];J[c+80>>2]=J[b+80>>2];h=J[b>>2];J[b>>2]=J[c>>2];J[c>>2]=h;d=J[b+4>>2];J[b+4>>2]=J[c+4>>2];J[c+4>>2]=d;i=J[b+8>>2];J[b+8>>2]=J[c+8>>2];J[c+8>>2]=i;d=K[c+12|0];f=K[b+12|0];H[b+12|0]=d&1|f&254;H[c+12|0]=d&254|f&1;J[c+100>>2]=J[b+100>>2];j=J[b+44>>2];d=J[b+40>>2];J[b+136>>2]=d;J[b+140>>2]=j;k=J[b+36>>2];f=J[b+32>>2];J[b+128>>2]=f;J[b+132>>2]=k;l=J[b+28>>2];m=J[b+24>>2];J[b+120>>2]=m;J[b+124>>2]=l;n=J[b+20>>2];o=J[b+16>>2];J[b+112>>2]=o;J[b+116>>2]=n;e=J[c+44>>2];J[b+40>>2]=J[c+40>>2];J[b+44>>2]=e;e=J[c+36>>2];J[b+32>>2]=J[c+32>>2];J[b+36>>2]=e;e=J[c+28>>2];J[b+24>>2]=J[c+24>>2];J[b+28>>2]=e;e=J[c+20>>2];J[b+16>>2]=J[c+16>>2];J[b+20>>2]=e;J[c+40>>2]=d;J[c+44>>2]=j;J[c+32>>2]=f;J[c+36>>2]=k;J[c+24>>2]=m;J[c+28>>2]=l;J[c+16>>2]=o;J[c+20>>2]=n;J[J[a+36>>2]+16>>2]=(((i+J[a+24>>2]|0)-h|0)+P(J[c+32>>2]-J[c+24>>2]>>4,12)|0)+104;break b}d=J[b+80>>2];if(d){vj(J[a>>2],d)}a=J[b+96>>2];if(a){Uj(a)}a=J[b+100>>2];if(!a){break b}Mx(a)}c:{if(H[b+76|0]&1){break c}a=J[b+56>>2];if(a){cj(a)}a=J[b+48>>2];if(!a){break c}cj(a)}d:{if(H[b+44|0]&1){break d}a=J[b+24>>2];if(a){cj(a)}a=J[b+16>>2];if(!a){break d}cj(a)}if(H[b+12|0]&1){break a}a=J[b>>2];if(!a){break a}cj(a)}Ui=b+144|0;return g|0}function GC(a){var b=0,c=0,d=0,e=0,f=0,g=0,h=0,i=0;e=Ui-32|0;Ui=e;J[e+28>>2]=0;a:{b:{c:{d:{b=J[a+12>>2];e:{f:{if((b|0)>=0){c=J[a+4>>2];d=J[a+8>>2];if((c-d|0)!=(0-(c>>>0>>0?b:0)|0)){break f}break e}b=b&2147483647;if(!b){break e}d=J[a+8>>2]}c=J[a>>2]+P(d,20)|0;h=J[c+12>>2];f=J[c+8>>2];g=J[c+4>>2];i=J[c>>2];J[a+12>>2]=b;c=d+1|0;J[a+8>>2]=(b|0)!=(c|0)?c:0;b=Zi[f|0](i,g)|0;c=J[a+32>>2];if((c|0)<0){OI(a+20|0,(c&2147483647)+8|0);if(J[a+32>>2]<0){break d}}c=J[a+20>>2]+P(J[a+24>>2],20)|0;J[c+16>>2]=b;J[c+12>>2]=h;J[c+8>>2]=f;J[c+4>>2]=g;J[c>>2]=i;d=J[a+28>>2];b=J[a+32>>2];if((b|0)<0){b=b&2147483647;d=(d+1>>>0)%(b>>>0)|0;J[a+28>>2]=d}c=(J[a+24>>2]+1>>>0)%(b>>>0)|0;J[a+24>>2]=c;J[a+32>>2]=((c|0)==(d|0))<<31|b}J[e+16>>2]=0;J[e+20>>2]=0;J[e+8>>2]=0;J[e+12>>2]=0;c=J[a+32>>2];g:{if((c|0)<0){c=c&2147483647;break g}b=J[a+24>>2];d=J[a+28>>2];c=(b-d|0)+(b>>>0>>0?c:0)|0}b=e+8|0;lj(c,20,b,e+16|0,b|4);b=J[e+12>>2];if(!c){break a}i=J[e+16>>2];d=0;while(1){f=J[a+32>>2];h:{if((f|0)<0){g=f&2147483647;break h}g=J[a+24>>2];h=J[a+28>>2];g=(g-h|0)+(g>>>0>>0?f:0)|0}if(g>>>0<=d>>>0){break c}if((b|0)==(i|0)){break b}f=J[a+20>>2]+P((J[a+28>>2]+d>>>0)%((f&2147483647)>>>0)|0,20)|0;g=J[f+4>>2];J[b>>2]=J[f>>2];J[b+4>>2]=g;J[b+16>>2]=J[f+16>>2];g=J[f+12>>2];J[b+8>>2]=J[f+8>>2];J[b+12>>2]=g;b=b+20|0;d=d+1|0;if((c|0)!=(d|0)){continue}break}break a}Z(144851,54268,142,53220);B()}J[e+12>>2]=b;Z(145396,54268,61,84789);B()}J[e+12>>2]=b;Z(112520,54052,557,53220);B()}J[e+12>>2]=b;J[a+24>>2]=0;J[a+28>>2]=0;b=a;a=J[a+32>>2]&2147483647;J[b+32>>2]=!a<<31|a;i:{if(c){b=0;while(1){a=J[e+8>>2];if((J[e+12>>2]-a|0)/20>>>0<=b>>>0){break i}a=a+P(b,20)|0;d=J[a+12>>2];if(d){Zi[d|0](J[a>>2],J[a+4>>2],J[a+16>>2])}b=b+1|0;if((c|0)!=(b|0)){continue}break}}j:{if(H[e+20|0]&1){break j}a=J[e+8>>2];if(!a){break j}cj(a)}Ui=e+32|0;return}Z(145396,54052,487,84789);B()}function VX(a,b,c,d,e,f,g,h){a=a|0;b=b|0;c=c|0;d=d|0;e=e|0;f=f|0;g=g|0;h=h|0;var i=0,j=0,k=0,l=0,m=0,n=0,o=0,p=0,q=0,r=0;J[f>>2]=J[a+4>>2];i=b;b=0;f=-16640;a:{b:{switch(J[a+164>>2]){case 0:f=-16512;c:{if(J[a+164>>2]){break c}f=OG(i,d,c,J[a+4>>2],e);if(f){break c}f=-16;c=J[a+4>>2];d=Zj(1,c);if(!d){break c}c=Zj(1,c);if(!c){cj(d);break c}f=Vt(a,g,h,e,d);d:{if(f){break d}f=$q(a,d,c);if(f){break d}h=J[a+4>>2];if(h){i=h&3;f=0;e:{if(h>>>0<4){a=0;g=0;break e}k=h&-4;a=0;g=0;while(1){j=K[e+g|0]^K[c+g|0]|a;a=g|1;j=j|K[a+e|0]^K[a+c|0];a=g|2;j=j|K[a+e|0]^K[a+c|0];a=g|3;a=j|K[a+e|0]^K[a+c|0];g=g+4|0;b=b+4|0;if((k|0)!=(b|0)){continue}break}}if(i){while(1){a=K[e+g|0]^K[c+g|0]|a;g=g+1|0;f=f+1|0;if((i|0)!=(f|0)){continue}break}}f=-17152;if(a&255){break d}}hj(e,d,h);f=0}cj(d);cj(c)}break a;case 1:break b;default:break a}}k=Ui-80|0;Ui=k;b=-16512;f:{if(!g|J[a+164>>2]!=1){break f}f=J[a+4>>2];if(i){d=i-3|0;if(d>>>0<=5){d=J[(d<<2)+266328>>2]}else{d=0}if(!d){break f}d=(d?J[d+8>>2]:0)&255}i=J[a+168>>2]-3|0;if(i>>>0<=5){i=J[(i<<2)+266328>>2]}else{i=0}if(!i){break f}m=(i?J[i+8>>2]:0)&255;j=m<<1;if(j>>>0>f>>>0){break f}l=ij(e,0,f);n=f-m|0;j=j+2>>>0>f>>>0?n-2|0:m;b=Zi[g|0](h,k+16|0,j)|0;if(b){b=b-17536|0;break f}o=a+8|0;q=Xk(o);b=(n-j|0)+l|0;H[b-2|0]=1;p=k+16|0;r=hj(b-1|0,p,j);e=k+4|0;J[e>>2]=0;J[e+4>>2]=0;J[e+8>>2]=0;g:{b=oo(e,i,0);h:{if(b){break h}b=-20736;i:{if(!e){break i}i=J[e>>2];if(!i){break i}b=Zi[J[i+16>>2]](J[e+4>>2])|0}if(b){break h}i=j+r|0;b=Uo(e,i,8);if(b){break h}b=Uo(e,c,d);if(b){break h}b=Uo(e,p,j);if(b){break h}d=-20736;j:{if(!e){break j}b=J[e>>2];if(!b){break j}d=Zi[J[b+24>>2]](J[e+4>>2],i)|0}b=d;if(b){break h}b=!(q+7&7);b=Xr(b+l|0,(b^-1)+n|0,i,m,e);if(!b){break g}}Kl(k+4|0);break f}b=Xk(o);H[l|0]=K[l|0]&255>>>(f<<3|1)-b;H[i+m|0]=188;Zi[J[66509]](k+16|0,0,64)|0;Kl(k+4|0);b=Vt(a,g,h,l,l)}Ui=k+80|0;f=b}return f|0}function Tja(a){a=a|0;var b=0,c=0,d=0,e=0,f=0,g=0;c=Ui-48|0;Ui=c;d=J[J[a+24>>2]>>2];a:{b=J[a+16>>2];e=J[a+20>>2];b:{if((b|0)==J[75228]&(e|0)==J[75229]){b=xn(J[J[J[a+8>>2]+80>>2]>>2],a+32|0,J[75206],J[75207],d+16|0);break b}c:{if((b|0)==J[75224]&(e|0)==J[75225]){if(!(H[a+112|0]&1)){b=-12;break b}e=J[J[J[a+8>>2]+80>>2]>>2];J[c+44>>2]=0;b=xn(e,a+32|0,J[75204],J[75205],c+44|0);if(b){break b}if(!UO(J[d+8>>2],J[a+104>>2],J[a+108>>2],J[c+44>>2],J[a+40>>2],J[a+44>>2])){a=J[d+28>>2];b=J[d+32>>2];if((a|0)==(b|0)){sE(d+24|0);b=J[d+32>>2];a=J[d+28>>2]}if((a|0)==(b|0)){break a}b=J[c+44>>2];J[d+28>>2]=a+4;J[a>>2]=b;b=0;break b}a=tj(J[a+104>>2],J[a+108>>2]);J[c+4>>2]=J[J[d+4>>2]+88>>2];J[c>>2]=a;dj(4,88458,84180,c);vj(e,J[c+44>>2]);break c}if((b|0)==J[75248]&(e|0)==J[75249]){if(!(H[a+112|0]&1)){b=-12;break b}b=J[J[J[a+8>>2]+80>>2]>>2];J[c+44>>2]=0;b=xn(b,a+32|0,J[75214],J[75215],c+44|0);if(b){break b}b=J[c+44>>2];f=J[b+80>>2];e=J[f>>2];g=b;b=J[f+4>>2];b=SO(J[d+8>>2],J[a+104>>2],J[a+108>>2],g,2,Zi[J[79463]](e,b)|0,Zi[J[79464]](e,b)|0);if(!b){a=J[d+28>>2];b=J[d+32>>2];if((a|0)==(b|0)){sE(d+24|0);b=J[d+32>>2];a=J[d+28>>2]}if((a|0)==(b|0)){break a}b=J[c+44>>2];J[d+28>>2]=a+4;J[a>>2]=b;b=0;break b}a=tj(J[a+104>>2],J[a+108>>2]);J[c+20>>2]=b;J[c+16>>2]=a;dj(4,88458,141331,c+16|0);break c}if((b|0)!=J[75230]|(e|0)!=J[75231]){b=-1;break b}if(!(H[a+112|0]&1)){b=-12;break b}b=J[J[J[a+8>>2]+80>>2]>>2];J[c+44>>2]=0;b=xn(b,a+32|0,J[75206],J[75207],c+44|0);if(b){break b}b=TO(J[d+8>>2],J[a+104>>2],J[a+108>>2],J[c+44>>2]);if(!b){QO(J[d+8>>2]);a=J[d+28>>2];b=J[d+32>>2];if((a|0)==(b|0)){sE(d+24|0);b=J[d+32>>2];a=J[d+28>>2]}if((a|0)==(b|0)){break a}b=J[c+44>>2];J[d+28>>2]=a+4;J[a>>2]=b;b=0;break b}a=tj(J[a+104>>2],J[a+108>>2]);J[c+36>>2]=b;J[c+32>>2]=a;dj(4,88458,141289,c+32|0)}b=-7}Ui=c+48|0;return b|0}Z(112520,53895,557,53220);B()}function HP(a,b){var c=0,d=0,e=0,f=0,g=0,h=0,i=0,j=0,k=0;c=Ui-128|0;Ui=c;J[c+120>>2]=0;J[c+112>>2]=0;J[c+116>>2]=0;J[c+104>>2]=0;J[c+108>>2]=0;J[c+96>>2]=0;J[c+100>>2]=0;J[c+88>>2]=0;J[c+92>>2]=0;J[c+80>>2]=0;J[c+84>>2]=0;J[c+72>>2]=0;J[c+76>>2]=0;J[c+64>>2]=0;J[c+68>>2]=0;J[c+36>>2]=1;J[c+48>>2]=0;J[c+52>>2]=0;J[c+32>>2]=c- -64;g=J[b+8>>2];if(g>>>0<4){J[c+44>>2]=1;J[c+40>>2]=J[(g<<2)+159864>>2];J[c+56>>2]=J[b+20>>2];J[c+60>>2]=0;d=J[b+28>>2];J[c+64>>2]=d;e=J[b+32>>2];J[c+76>>2]=e;J[c+72>>2]=d;J[c+68>>2]=e;h=J[b+12>>2];if(h>>>0<=29){i=J[(h<<2)+159880>>2]}else{i=-1}J[c+80>>2]=i;J[c+100>>2]=J[b+16>>2];J[c+28>>2]=e;J[c+24>>2]=d;J[c+112>>2]=c+24;J[c+116>>2]=2;J[c+20>>2]=0;d=J[b+24>>2];J[c+108>>2]=1;J[c+96>>2]=1;J[c+88>>2]=1;J[c+16>>2]=(d>>>0)/(((g|0)==2?6:1)>>>0);g=c+16|0;J[c+104>>2]=g;J[c+92>>2]=g;J[c+84>>2]=c+20;J[c+4>>2]=c+32;I[c+8>>1]=J[b+36>>2];I[c+10>>1]=J[b+40>>2];H[c+12|0]=K[b+44|0]&31|K[b+48|0]<<6|32;g=J[b>>2];h=J[b+4>>2];d=Ui-80|0;Ui=d;J[d+76>>2]=0;i=J[a+6164>>2];Tj(i);a:{j=c+4|0;if(j){b=-3;f=J[a>>2];e=J[f+4>>2];b:{if(!e){break b}e=J[J[f>>2]+(mxa(g,h,e)<<2)>>2];if((e|0)==-1){break b}f=J[f+8>>2];while(1){e=f+P(e,56)|0;if((g|0)!=J[e>>2]|J[e+4>>2]!=(h|0)){e=J[e+48>>2];if((e|0)!=-1){continue}break b}break}b=J[e+28>>2];f=J[b+32>>2];if(!f){b=-15;break b}J[d+24>>2]=a;J[d+64>>2]=b;b=J[b+12>>2];J[d+56>>2]=j;J[d+28>>2]=b;j=e+8|0;J[d+60>>2]=j;J[d+48>>2]=0;J[d+40>>2]=0;J[d+44>>2]=0;J[d+32>>2]=g;J[d+36>>2]=h;b=Zi[f|0](d+24|0)|0;if(b){break b}e=J[a+12>>2];if(!e){b=0;break b}b=0;f=J[e>>2];if((f|0)==J[e+4>>2]){break b}e=0;while(1){f=(e<<3)+f|0;k=J[f+4>>2];J[d+16>>2]=j;J[d>>2]=k;J[d+8>>2]=g;J[d+12>>2]=h;J[d+4>>2]=0;Zi[J[f>>2]](d);k=J[a+12>>2];f=J[k>>2];e=e+1|0;if(e>>>0>2]-f>>3>>>0){continue}break}}Lj(i);Ui=d+80|0;break a}Z(68419,42212,1288,69827);B()}Ui=c+128|0;return b}Z(114101,42176,176,64625);B()}function NC(a,b,c){var d=0,e=0,f=0,g=0,h=0,i=0,j=0,k=0,l=0,m=0,n=0,o=0,p=0,q=0;d=Ui-32|0;Ui=d;a:{switch(b+1|0){case 1:Z(112335,55629,156,2284);B();case 0:Z(94770,55629,157,2284);B();default:break a}}if((c|0)!=-1){e=J[a+8>>2];if((J[a+16>>2]-e|0)/24>>>0<=c>>>0){b:{if(!e){J[a+4>>2]=b;b=b<<2;e=sj(b);J[a>>2]=e;ij(e,255,b);c=P(c,24);b=sj(c);J[a+12>>2]=b;J[a+8>>2]=b;J[a+16>>2]=b+c;break b}J[d+16>>2]=0;J[d+20>>2]=0;J[d+24>>2]=0;J[d+28>>2]=0;J[d+8>>2]=0;J[d+12>>2]=0;J[d>>2]=0;J[d+4>>2]=0;J[d+20>>2]=-1;NC(d,b,c);l=J[a>>2];e=J[a+4>>2];if(e){m=J[d+16>>2];g=J[d+8>>2];o=(m-g|0)/24|0;p=J[a+8>>2];c=J[d+12>>2];while(1){b=J[(j<<2)+l>>2];if((b|0)!=-1){i=J[d+24>>2];n=J[d>>2];while(1){c:{d:{e:{if((i|0)!=(o|0)){h=P(b,24)+p|0;f=J[h>>2];k=J[d+4>>2];f:{if(!k){break f}b=J[((f>>>0)%(k>>>0)<<2)+n>>2];if((b|0)==-1){break f}while(1){b=P(b,24)+g|0;if((f|0)==J[b>>2]){break e}b=J[b+16>>2];if((b|0)!=-1){continue}break}}g:{if((c|0)!=(m|0)){e=c+24|0;break g}b=J[d+20>>2];if((b|0)==-1){break d}b=P(b,24)+g|0;J[d+20>>2]=J[b+16>>2];e=c;c=b}J[c>>2]=f;b=J[h+12>>2];q=J[h+8>>2];J[c+16>>2]=-1;J[c+8>>2]=q;J[c+12>>2]=b;f=((f>>>0)%(k>>>0)<<2)+n|0;b=J[f>>2];h:{if((b|0)==-1){J[f>>2]=(c-g|0)/24;i=J[d+24>>2];break h}while(1){f=P(b,24)+g|0;b=J[f+16>>2];if((b|0)!=-1){continue}break}J[f+16>>2]=(c-g|0)/24}i=i+1|0;J[d+24>>2]=i;c=e;break c}J[d+12>>2]=c;Z(144851,55629,229,9606);B()}e=J[h+12>>2];J[b+8>>2]=J[h+8>>2];J[b+12>>2]=e;break c}J[d+12>>2]=c;Z(152203,55629,537,2838);B()}b=J[h+16>>2];if((b|0)!=-1){continue}break}e=J[a+4>>2]}j=j+1|0;if(j>>>0>>0){continue}break}J[d+12>>2]=c}cj(l);cj(J[a+8>>2]);b=J[d+28>>2];J[a+24>>2]=J[d+24>>2];J[a+28>>2]=b;b=J[d+20>>2];J[a+16>>2]=J[d+16>>2];J[a+20>>2]=b;b=J[d+12>>2];J[a+8>>2]=J[d+8>>2];J[a+12>>2]=b;b=J[d+4>>2];J[a>>2]=J[d>>2];J[a+4>>2]=b}Ui=d+32|0;return}Z(144759,55629,159,2284);B()}Z(94750,55629,158,2284);B()}function $X(a,b){a=a|0;b=b|0;var c=0,d=0,e=0,f=0,g=0,h=0,i=0,j=0,k=0,l=0,m=0,n=0;m=-16896;a:{if(rA(a)){break a}if(rA(b)){break a}if(Zz(b,1)){break a}k=b+8|0;g=b+56|0;j=b+32|0;l=b+20|0;d=Ui-32|0;Ui=d;J[d+28>>2]=0;J[d+20>>2]=1;J[d+24>>2]=0;J[d+16>>2]=0;J[d+8>>2]=1;J[d+12>>2]=0;h=b+44|0;b:{if(!h){break b}}c:{if(!g){break c}}d:{e:{c=(h|0)!=0&(g|0)!=0;if(!(!k|!c)){f=d+20|0;e=Ak(f,h,g);if(e){break e}i=-16896;if((Pj(k,1)|0)<=0){break d}if(_j(f,k)){break d}}if(!(!l|(!k|!j))){i=-16896;if((Pj(j,1)|0)<=0){break d}if((Pj(l,1)|0)<=0){break d}if((_j(j,k)|0)>=0){break d}if((_j(l,k)|0)>=0){break d}}i=0;if(!l|(!c|!j)){break d}i=-16896;if((Pj(h,1)|0)<=0){break d}if((Pj(g,1)|0)<=0){break d}c=d+20|0;e=Ak(c,j,l);if(e){break e}e=km(c,c,1);if(e){break e}f=d+8|0;e=km(f,h,1);if(e){break e}e=Bl(c,c,f);if(e){break e}if(Pj(c,0)){break d}e=Ak(c,j,l);if(e){break e}e=km(c,c,1);if(e){break e}e=km(f,g,1);if(e){break e}e=Bl(c,c,f);if(e){break e}i=Pj(c,0)?-16896:0;break d}i=(e|0)==-16896?-16896:e-16896|0}Dj(d+20|0);Dj(d+8|0);Ui=d+32|0;if(i){break a}e=b+80|0;i=b+92|0;d=Ui-32|0;Ui=d;J[d+28>>2]=0;J[d+20>>2]=1;J[d+24>>2]=0;J[d+16>>2]=0;J[d+8>>2]=1;J[d+12>>2]=0;f:{g:{h:{f=b+68|0;if(!f){break h}if(!h){b=-16512;break f}n=d+20|0;b=km(n,h,1);if(b){break g}c=d+8|0;b=wl(c,f,j);if(b){break g}b=Bl(c,c,n);if(b){break g}if(!Pj(c,0)){break h}b=-16896;break f}i:{if(!e){break i}if(!g){b=-16512;break f}f=d+20|0;b=km(f,g,1);if(b){break g}c=d+8|0;b=wl(c,e,j);if(b){break g}b=Bl(c,c,f);if(b){break g}if(!Pj(c,0)){break i}b=-16896;break f}if(!i){b=0;break f}b=-16512;if(!h|!g){break f}c=d+20|0;b=Ak(c,i,g);if(b){break g}b=km(c,c,1);if(b){break g}b=Bl(c,c,h);if(b){break g}b=Pj(c,0)?-16896:0;break f}if((b|0)==-16896|(b|0)==-16512){break f}b=b-16896|0}Dj(d+20|0);Dj(d+8|0);Ui=d+32|0;if(b){break a}if(_j(a+8|0,k)){break a}m=_j(a+20|0,l)?-16896:0}return m|0}function zta(a,b,c){a=a|0;b=b|0;c=c|0;var d=0,e=0,f=0,g=Q(0),h=0,i=0,j=0,k=Q(0),l=0,m=Q(0),n=0,o=0;h=Ui-16|0;Ui=h;J[83479]=J[83479]+1;if(J[a+4>>2]&2){d=J[b+192>>2];k=Q(Zi[J[J[d>>2]+20>>2]](d,N[61732]));N[h+12>>2]=k;d=J[c+192>>2];g=Q(Zi[J[J[d>>2]+20>>2]](d,N[61732]));N[h+8>>2]=g;d=g>k?h+12|0:h+8|0}else{d=246928}k=N[d>>2];g=N[b+184>>2];m=N[c+184>>2];g=g>2];f=J[e+8>>2];a:{if(f){d=J[e+12>>2];i=J[d>>2];J[e+8>>2]=f-1;J[e+12>>2]=i;break a}d=Yj(1140)}J[d+112>>2]=0;J[d+116>>2]=0;J[d>>2]=1;J[d+124>>2]=0;J[d+128>>2]=0;J[d+388>>2]=0;J[d+392>>2]=0;J[d+400>>2]=0;J[d+404>>2]=0;J[d+664>>2]=0;J[d+668>>2]=0;J[d+676>>2]=0;J[d+680>>2]=0;H[d+120|0]=0;J[d+132>>2]=0;J[d+136>>2]=0;J[d+140>>2]=0;J[d+144>>2]=0;J[d+148>>2]=0;H[d+396|0]=0;J[d+408>>2]=0;J[d+412>>2]=0;J[d+416>>2]=0;J[d+420>>2]=0;J[d+424>>2]=0;H[d+672|0]=0;J[d+700>>2]=0;J[d+692>>2]=0;J[d+696>>2]=0;J[d+684>>2]=0;J[d+688>>2]=0;H[d+948|0]=0;J[d+940>>2]=0;J[d+944>>2]=0;J[d+952>>2]=0;J[d+956>>2]=0;J[d+960>>2]=0;J[d+964>>2]=0;J[d+968>>2]=0;J[d+972>>2]=0;J[d+976>>2]=0;J[d+1108>>2]=b;J[d+1112>>2]=c;J[d+1116>>2]=0;N[d+1120>>2]=k;N[d+1124>>2]=g;e=J[a+12>>2];J[d+1136>>2]=e;b:{if(J[a+16>>2]!=(e|0)){break b}i=e?e<<1:1;if((i|0)<=(e|0)){break b}c:{if(!i){b=0;break c}b=Yj(i<<2);e=J[a+12>>2]}d:{if((e|0)<=0){break d}c=0;if(e>>>0>=4){l=e&2147483644;while(1){f=c<<2;J[f+b>>2]=J[f+J[a+20>>2]>>2];j=f|4;J[j+b>>2]=J[j+J[a+20>>2]>>2];j=f|8;J[j+b>>2]=J[j+J[a+20>>2]>>2];f=f|12;J[f+b>>2]=J[f+J[a+20>>2]>>2];c=c+4|0;n=n+4|0;if((l|0)!=(n|0)){continue}break}}f=e&3;if(!f){break d}while(1){l=c<<2;J[l+b>>2]=J[l+J[a+20>>2]>>2];c=c+1|0;o=o+1|0;if((f|0)!=(o|0)){continue}break}}c=J[a+20>>2];if(!(!c|K[a+24|0]!=1)){if(c){J[83765]=J[83765]+1;Zi[J[61751]](J[c-4>>2])}e=J[a+12>>2]}J[a+20>>2]=b;H[a+24|0]=1;J[a+16>>2]=i}J[J[a+20>>2]+(e<<2)>>2]=d;J[a+12>>2]=e+1;Ui=h+16|0;return d|0}function tma(a){a=a|0;var b=0,c=0,d=0,e=0,f=0,g=0,h=0,i=0,j=0,k=0;b=Ui-544|0;Ui=b;j=pj(b+524|0,a,0,37509,802);J[b+252>>2]=256;J[b+244>>2]=b+256;J[b+248>>2]=0;J[b+236>>2]=2270;J[b+232>>2]=2271;J[b+240>>2]=b+232;Bj(a);e=qj(a,-1,J[74197],139276);gj(a,-2);c=J[e+4>>2];J[b+224>>2]=0;J[b+228>>2]=0;J[b+216>>2]=0;J[b+220>>2]=0;J[b+208>>2]=0;J[b+212>>2]=0;J[b+200>>2]=0;J[b+204>>2]=0;d=b+200|0;$l(a,d);J[b+192>>2]=0;J[b+196>>2]=0;J[b+184>>2]=0;J[b+188>>2]=0;J[b+176>>2]=0;J[b+180>>2]=0;J[b+168>>2]=0;J[b+172>>2]=0;Sk(a,1,b+168|0,d);e=J[J[J[e+4>>2]+80>>2]+8>>2];a:{if(!e){break a}e=J[e>>2];if(!e){break a}f=J[e+3216>>2];g=J[e+3220>>2]}if(J[b+168>>2]!=(f|0)|J[b+172>>2]!=(g|0)){fj(a,120386,0)}b:{if(Mk(a,2)){f=bj(Ij(a,2,0));e=Yi;break b}f=Tl(a,2);e=Yi}g=xk(J[J[c+80>>2]+8>>2],J[b+184>>2],J[b+188>>2]);c:{if(!g){J[b>>2]=nk(b+232|0,J[b+184>>2],J[b+188>>2]);c=fj(a,134730,b);break c}d=b+152|0;J[d>>2]=0;H[d+8|0]=K[d+8|0]&254;if(J[a+8>>2]-J[a+12>>2]>>4>=4){c=Iy(a,4,d,0);if(c){break c}}if((kj(a,3)|0)==5){uj(a,3);c=J[a+8>>2];J[c+8>>2]=0;J[a+8>>2]=c+16;if($j(a,-2)){while(1){if(!kk(a,-2)){J[b+16>>2]=nk(b+232|0,f,e);c=fj(a,114318,b+16|0);break c}i=ok(a,-2);d:{if(R(i)<2147483648){c=~~i;break d}c=-2147483648}if((c|0)<=0){f=nk(b+232|0,f,e);J[b+36>>2]=c;J[b+32>>2]=f;c=fj(a,127525,b+32|0);break c}h=ij(b+80|0,0,72);k=it(a,-1,h);J[d>>2]=c-1;e:{if(k){break e}c=J[d+12>>2];J[b+56>>2]=J[d+8>>2];J[b+60>>2]=c;c=J[d+4>>2];J[b+48>>2]=J[d>>2];J[b+52>>2]=c;c=RD(g,J[b+192>>2],J[b+196>>2],f,e,b+48|0,h);if(!c){break e}c=BR(a,c,f,e,g,b+168|0,d);break c}gj(a,-2);if($j(a,-2)){continue}break}}gj(a,-2);c=0;break c}c=a;h=ij(b+80|0,0,72);a=it(a,3,h);if(!a){a=J[d+12>>2];J[b+72>>2]=J[d+8>>2];J[b+76>>2]=a;a=J[d+4>>2];J[b+64>>2]=J[d>>2];J[b+68>>2]=a;a=RD(g,J[b+192>>2],J[b+196>>2],f,e,b- -64|0,h)}c=BR(c,a,f,e,g,b+168|0,d)}oj(j);Ui=b+544|0;return c|0}function Pha(a){a=a|0;var b=0,c=0,d=0,e=0,f=0,g=0,h=0,i=0,j=0;b=Ui-448|0;Ui=b;h=pj(b+172|0,a,1,42133,2931);c=Aj(a,1,0);J[b+160>>2]=0;J[b+164>>2]=0;J[b+192>>2]=81653;f=b+192|0;qy(a,c,f,1,b+160|0);Oj(a,2,5);uj(a,2);rj(a,-1,34859);d=Iu(a,-1);gj(a,-2);rj(a,-1,43314);i=st(a,43314,1);gj(a,-2);gj(a,-2);j=J[J[pk(a)+80>>2]+8>>2];J[b+156>>2]=0;J[b+112>>2]=0;J[b+116>>2]=0;J[b+96>>2]=0;J[b+100>>2]=0;J[b+104>>2]=0;J[b+108>>2]=0;J[b+144>>2]=0;J[b+148>>2]=0;J[b+136>>2]=0;J[b+140>>2]=0;J[b+128>>2]=0;J[b+132>>2]=0;J[b+120>>2]=0;J[b+124>>2]=0;J[b+112>>2]=1;J[b+96>>2]=1;J[b+88>>2]=0;J[b+92>>2]=0;J[b+92>>2]=4;J[b+108>>2]=b+156;J[b+84>>2]=1;J[b+80>>2]=b+88;J[b+72>>2]=0;J[b+76>>2]=0;J[b+64>>2]=0;J[b+68>>2]=0;a:{b:{if(!Kq(b+80|0,J[56510],b- -64|0)){J[b+60>>2]=0;g=J[b+64>>2];e=J[b+68>>2]-g|0;c=wq(J[78228],0,c,g,e,e,b+60|0);if(c){d=J[b+160>>2];e=J[b+164>>2];J[b+48>>2]=tj(d,e);J[b+40>>2]=d;J[b+44>>2]=e;J[b+32>>2]=c;Gj(f,256,(c|0)==-3?31635:(c|0)==-15?31570:31677,b+32|0);J[b+16>>2]=f;a=fj(a,31902,b+16|0);break a}c=J[(J[d+4>>2]==2?J[d>>2]+4|0:d)>>2];if(J[d+4>>2]==2){c=tS(c,b+56|0);if(c){break b}c=J[b+56>>2]}J[J[b+60>>2]>>2]=0;J[J[b+60>>2]+4>>2]=c;f=Ty(c);e=J[b+60>>2];J[e+20>>2]=f;Mq(c,e+16|0);Fr(c,J[b+60>>2]+24|0);c:{if(!i){c=J[b+160>>2];f=J[b+164>>2];break c}d:{switch(J[d+4>>2]-1|0){case 1:vj(J[78228],J[d>>2]);case 0:Ns(J[78228],J[b+60>>2]);break;default:break d}}J[d+4>>2]=2;e=J[b+60>>2];J[d>>2]=e;f=J[b+164>>2];c=J[b+160>>2];J[d+8>>2]=c;J[d+12>>2]=f;I[d+16>>1]=Ax(J[78228],e)}xv(j,c,f);Bk(a,c,f);a=1;break a}Z(93093,42133,2969,35206);B()}hp(J[78228],J[d>>2],b+192|0);f=tj(J[b+160>>2],J[b+164>>2]);e=tj(J[b+192>>2],J[b+196>>2]);d=c>>>0>11?14245:J[(c<<2)+265952>>2];J[b+12>>2]=c;J[b+8>>2]=d;J[b+4>>2]=e;J[b>>2]=f;a=fj(a,132349,b)}e:{if(H[b+76|0]&1){break e}c=J[b+64>>2];if(!c){break e}cj(c)}oj(h);Ui=b+448|0;return a|0}function $j(a,b){var c=0,d=0,e=0,f=0,g=0,h=0,i=0;e=a;a:{if((b|0)>0){b=(J[a+12>>2]+(b<<4)|0)-16|0;a=b>>>0>=M[a+8>>2]?173288:b;break a}a=J[e+8>>2]+(b<<4)|0;if((b|0)>=-9999){break a}b:{switch(b+10002|0){case 2:a=J[e+16>>2]+96|0;break a;case 1:a=J[J[J[J[e+20>>2]+4>>2]>>2]+12>>2];J[e+96>>2]=5;J[e+88>>2]=a;a=e+88|0;break a;case 0:a=e+72|0;break a;default:break b}}a=J[J[J[e+20>>2]+4>>2]>>2];a=K[a+7|0]<-10002-b>>>0?173288:(a+(0-b<<4)|0)-160024|0}c=J[a>>2];a=-1;c:{d:{e:{f:{g:{h:{i:{d=J[e+8>>2]-16|0;switch(J[d+8>>2]){case 2:break f;case 1:break g;case 4:break h;case 3:break i;case 0:break c;default:break e}}g=O[d>>3];j:{if(R(g)<2147483648){a=~~g;break j}a=-2147483648}if(!((a|0)<=0|+(a|0)!=g|(a|0)>J[c+28>>2])){a=a-1|0;break c}a=J[c+16>>2];if(g==0){break d}b=J[c+16>>2];A(+g);f=v(1)|0;a=v(0)|0;a=a+f|0;a=((a>>>0)%((-1<>>0)<<5)+b|0;break d}a=J[c+16>>2]+((J[J[d>>2]+8>>2]&(-1<>2]+((J[d>>2]&(-1<>2]+(M[d>>2]%((-1<>>0)<<5)|0;break d}a=J[c+16>>2]+(M[d>>2]%((-1<>>0)<<5)|0}while(1){k:{if(!os(a+16|0,d)){if(J[a+24>>2]!=11|J[d+8>>2]<4|J[a+16>>2]!=J[d>>2]){break k}}a=J[c+28>>2]+(a-J[c+16>>2]>>5)|0;break c}a=J[a+28>>2];if(a){continue}break}a=0;xl(e,145798,0)}f=J[c+28>>2];b=a+1|0;h=(b|0)<(f|0)?f:b;l:{m:{n:{while(1){b=a;a=a+1|0;if((f|0)<=(a|0)){break n}if(!J[(J[c+12>>2]+(a<<4)|0)+8>>2]){continue}break}J[d+8>>2]=3;O[d>>3]=b+2|0;a=J[c+12>>2]+(a<<4)|0;break m}a=h-f|0;f=1<>2];while(1){i=a<<5;b=h+i|0;if(J[b+8>>2]){a=J[b+20>>2];J[d>>2]=J[b+16>>2];J[d+4>>2]=a;J[d+8>>2]=J[b+24>>2];a=J[c+16>>2]+i|0;break m}a=a+1|0;if((f|0)!=(a|0)){continue}break}}a=0;break l}b=J[a+4>>2];J[d+16>>2]=J[a>>2];J[d+20>>2]=b;J[d+24>>2]=J[a+8>>2];a=1}J[e+8>>2]=J[e+8>>2]+(a?16:-16);return a}function yka(a,b){a=a|0;b=b|0;var c=0,d=0,e=Q(0),f=0,g=0,h=0;d=Ui-144|0;Ui=d;g=J[a>>2];f=J[J[a+24>>2]>>2];c=J[a+16>>2];a=J[a+20>>2];a:{b:{if((c|0)==J[75066]&(a|0)==J[75067]){c=b+32|0;if(K[g+17|0]==1){b=d+48|0;$L(b,J[g>>2],J[f+8>>2]);a=d+72|0;J[a>>2]=3;N[a+8>>2]=N[b>>2];N[a+12>>2]=N[b+4>>2];N[a+16>>2]=N[b+8>>2];hj(c,a,72);break b}b=d+32|0;aM(b,J[g>>2],J[f+8>>2]);a=d+72|0;J[a>>2]=3;N[a+8>>2]=N[b>>2];N[a+12>>2]=N[b+4>>2];N[a+16>>2]=N[b+8>>2];hj(c,a,72);break b}if((c|0)==J[75068]&(a|0)==J[75069]){c=b+32|0;if(K[g+17|0]==1){b=d+16|0;dM(b,J[f+8>>2]);a=d+72|0;J[a>>2]=3;N[a+8>>2]=N[b>>2];N[a+12>>2]=N[b+4>>2];N[a+16>>2]=N[b+8>>2];hj(c,a,72);break b}N[d+8>>2]=N[J[f+8>>2]+72>>2];J[d>>2]=0;J[d+4>>2]=0;a=d+72|0;J[a>>2]=3;N[a+8>>2]=N[d>>2];N[a+12>>2]=N[d+4>>2];N[a+16>>2]=N[d+8>>2];hj(c,a,72);break b}if((c|0)==J[75070]&(a|0)==J[75071]){a=b+32|0;if(K[g+17|0]==1){b=d+72|0;c:{c=J[J[f+8>>2]>>2];if(!c|J[c+232>>2]!=2|K[c+204|0]&3){break c}d:{e=N[c+336>>2];if(e==Q(0)){break d}e=Q(Q(1)/e);break c}Z(58495,42530,1099,98324);B()}J[b>>2]=0;O[b+8>>3]=e;hj(a,b,72);break b}e=N[J[f+8>>2]+116>>2];b=d+72|0;J[b>>2]=0;O[b+8>>3]=e;hj(a,b,72);break b}if((c|0)==J[75072]&(a|0)==J[75073]){if(K[g+17|0]==1){dj(3,88458,69306,0);h=-1;break a}a=d+72|0;H[a+8|0]=(K[J[f+8>>2]+4|0]&8)>>>3;J[a>>2]=6;hj(b+32|0,a,72);break b}if((c|0)==J[75062]&(a|0)==J[75063]){a=b+32|0;if(K[g+17|0]==1){b=d+72|0;c=J[J[f+8>>2]>>2];if(!(!c|J[c+232>>2]!=2)){e=N[c+436>>2]}J[b>>2]=0;O[b+8>>3]=e;hj(a,b,72);break b}e=N[J[f+8>>2]+132>>2];b=d+72|0;J[b>>2]=0;O[b+8>>3]=e;hj(a,b,72);break b}h=-1;if(J[75064]!=(c|0)|J[75065]!=(a|0)){break a}a=b+32|0;if(K[g+17|0]==1){b=d+72|0;c=J[J[f+8>>2]>>2];if(!(!c|J[c+232>>2]!=2)){e=N[c+440>>2]}J[b>>2]=0;O[b+8>>3]=e;hj(a,b,72);break b}e=N[J[f+8>>2]+136>>2];b=d+72|0;J[b>>2]=0;O[b+8>>3]=e;hj(a,b,72)}h=0}a=h;Ui=d+144|0;return a|0}function sN(a,b,c){var d=0,e=0,f=0,g=0,h=0,i=0,j=0,k=0,l=0,m=0,n=0,o=0,p=0;d=Ui-32|0;Ui=d;a:{switch(b+1|0){case 1:Z(112335,55689,156,2284);B();case 0:Z(94770,55689,157,2284);B();default:break a}}if((c|0)!=-1){e=J[a+8>>2];if((J[a+16>>2]-e|0)/136>>>0<=c>>>0){b:{if(!e){J[a+4>>2]=b;b=b<<2;e=sj(b);J[a>>2]=e;ij(e,255,b);c=P(c,136);b=sj(c);J[a+12>>2]=b;J[a+8>>2]=b;J[a+16>>2]=b+c;break b}J[d+16>>2]=0;J[d+20>>2]=0;J[d+24>>2]=0;J[d+28>>2]=0;J[d+8>>2]=0;J[d+12>>2]=0;J[d>>2]=0;J[d+4>>2]=0;J[d+20>>2]=-1;sN(d,b,c);e=J[a+4>>2];if(e){m=J[d+16>>2];g=J[d+8>>2];p=(m-g|0)/136|0;c=J[d+12>>2];while(1){b=J[J[a>>2]+(k<<2)>>2];if((b|0)!=-1){h=J[d+24>>2];n=J[d>>2];while(1){c:{d:{e:{if((h|0)!=(p|0)){i=J[a+8>>2]+P(b,136)|0;o=i+8|0;f=J[i>>2];j=J[i+4>>2];l=J[d+4>>2];f:{if(!l){break f}b=J[(mxa(f,j,l)<<2)+n>>2];if((b|0)==-1){break f}while(1){b=P(b,136)+g|0;if(J[b>>2]==(f|0)&(j|0)==J[b+4>>2]){break e}b=J[b+128>>2];if((b|0)!=-1){continue}break}}g:{if((c|0)!=(m|0)){e=c+136|0;break g}b=J[d+20>>2];if((b|0)==-1){break d}b=P(b,136)+g|0;J[d+20>>2]=J[b+128>>2];e=c;c=b}J[c>>2]=f;J[c+4>>2]=j;hj(c+8|0,o,114);J[c+128>>2]=-1;f=(mxa(f,j,l)<<2)+n|0;b=J[f>>2];h:{if((b|0)==-1){J[f>>2]=(c-g|0)/136;h=J[d+24>>2];break h}while(1){f=P(b,136)+g|0;b=J[f+128>>2];if((b|0)!=-1){continue}break}J[f+128>>2]=(c-g|0)/136}h=h+1|0;J[d+24>>2]=h;c=e;break c}J[d+12>>2]=c;Z(144851,55689,229,9606);B()}hj(b+8|0,o,114);break c}J[d+12>>2]=c;Z(152203,55689,537,2838);B()}b=J[i+128>>2];if((b|0)!=-1){continue}break}e=J[a+4>>2]}k=k+1|0;if(k>>>0>>0){continue}break}J[d+12>>2]=c}cj(J[a>>2]);cj(J[a+8>>2]);b=J[d+28>>2];J[a+24>>2]=J[d+24>>2];J[a+28>>2]=b;b=J[d+20>>2];J[a+16>>2]=J[d+16>>2];J[a+20>>2]=b;b=J[d+12>>2];J[a+8>>2]=J[d+8>>2];J[a+12>>2]=b;b=J[d+4>>2];J[a>>2]=J[d>>2];J[a+4>>2]=b}Ui=d+32|0;return}Z(144759,55689,159,2284);B()}Z(94750,55689,158,2284);B()}function fla(a){a=a|0;var b=0,c=0,d=0,e=0,f=0,g=0,h=0;d=J[a+8>>2];b=J[d+4>>2];c=J[d>>2];e=(b-c|0)/160|0;a:{b:{if((b|0)==(c|0)){break b}b=J[a+12>>2];f=J[a+4>>2];a=0;while(1){g=c+P(a,160)|0;if((f|0)!=J[g>>2]){h=h+1|0;a=h&255;if(e>>>0>a>>>0){continue}break b}break}xy(d,g);c=J[d>>2];if((J[d+4>>2]-c|0)/160>>>0<=a>>>0){break a}c:{e=J[(c+P(a,160)|0)+4>>2];if(e+1>>>0<2){break c}d:{c=e&65535;if(c>>>0>=M[b+2272>>2]){break d}g=J[J[b+2264>>2]+(c<<2)>>2];if(!g){break c}e=e>>>16|0;f=c<<1;if((e|0)!=L[f+J[b+2268>>2]>>1]){break c}cj(g);if(c>>>0>=M[b+2272>>2]){break d}c=J[b+2264>>2]+(c<<2)|0;if(!J[c>>2]|(e|0)!=L[f+J[b+2268>>2]>>1]){break c}J[c>>2]=0;I[f+J[b+2268>>2]>>1]=0;break c}Z(2686,54166,244,5438);B()}e:{f:{b=J[d+4>>2];c=J[d>>2];if((b-c|0)/160>>>0>a>>>0){a=c+P(a,160)|0;c=b-160|0;e=J[c+4>>2];J[a>>2]=J[c>>2];J[a+4>>2]=e;J[a+8>>2]=J[c+8>>2];N[a+16>>2]=N[b-144>>2];N[a+20>>2]=N[b-140>>2];N[a+24>>2]=N[b-136>>2];N[a+28>>2]=N[b-132>>2];N[a+32>>2]=N[b-128>>2];N[a+36>>2]=N[b-124>>2];N[a+40>>2]=N[b-120>>2];N[a+44>>2]=N[b-116>>2];N[a+48>>2]=N[b-112>>2];N[a+52>>2]=N[b-108>>2];N[a+56>>2]=N[b-104>>2];N[a+60>>2]=N[b-100>>2];N[a+64>>2]=N[b-96>>2];N[a+68>>2]=N[b-92>>2];N[a+72>>2]=N[b-88>>2];N[a+76>>2]=N[b-84>>2];N[a+80>>2]=N[b-80>>2];N[a+84>>2]=N[b-76>>2];N[a+88>>2]=N[b-72>>2];N[a+92>>2]=N[b-68>>2];N[a+96>>2]=N[b+-64>>2];N[a+100>>2]=N[b-60>>2];N[a+104>>2]=N[b-56>>2];N[a+108>>2]=N[b-52>>2];N[a+112>>2]=N[b-48>>2];N[a+116>>2]=N[b-44>>2];N[a+120>>2]=N[b-40>>2];N[a+124>>2]=N[b-36>>2];N[a+128>>2]=N[b-32>>2];N[a+132>>2]=N[b-28>>2];N[a+136>>2]=N[b-24>>2];N[a+140>>2]=N[b-20>>2];b=b-16|0;I[a+144>>1]=L[b>>1];H[a+146|0]=K[b+2|0];a=J[d+4>>2]-160|0;J[d+4>>2]=a;if(a>>>0>2]){break f}break e}Z(145381,53895,537,43537);B()}Z(12682,53895,540,43537);B()}return 0}dj(4,88458,126737,0);return-1e3}Z(145396,53895,487,84789);B()}function VC(a,b,c){var d=0,e=0,f=0,g=0,h=0,i=0,j=0,k=0,l=0,m=0,n=0,o=0,p=0;d=Ui-32|0;Ui=d;a:{switch(b+1|0){case 1:Z(112335,55629,156,2284);B();case 0:Z(94770,55629,157,2284);B();default:break a}}if((c|0)!=-1){e=J[a+8>>2];if((J[a+16>>2]-e|0)/968>>>0<=c>>>0){b:{if(!e){J[a+4>>2]=b;b=b<<2;e=sj(b);J[a>>2]=e;ij(e,255,b);c=P(c,968);b=sj(c);J[a+12>>2]=b;J[a+8>>2]=b;J[a+16>>2]=b+c;break b}J[d+16>>2]=0;J[d+20>>2]=0;J[d+24>>2]=0;J[d+28>>2]=0;J[d+8>>2]=0;J[d+12>>2]=0;J[d>>2]=0;J[d+4>>2]=0;J[d+20>>2]=-1;VC(d,b,c);e=J[a+4>>2];if(e){m=J[d+16>>2];g=J[d+8>>2];p=(m-g|0)/968|0;c=J[d+12>>2];while(1){b=J[J[a>>2]+(k<<2)>>2];if((b|0)!=-1){h=J[d+24>>2];n=J[d>>2];while(1){c:{d:{e:{if((h|0)!=(p|0)){i=J[a+8>>2]+P(b,968)|0;o=i+8|0;f=J[i>>2];j=J[i+4>>2];l=J[d+4>>2];f:{if(!l){break f}b=J[(mxa(f,j,l)<<2)+n>>2];if((b|0)==-1){break f}while(1){b=P(b,968)+g|0;if(J[b>>2]==(f|0)&(j|0)==J[b+4>>2]){break e}b=J[b+960>>2];if((b|0)!=-1){continue}break}}g:{if((c|0)!=(m|0)){e=c+968|0;break g}b=J[d+20>>2];if((b|0)==-1){break d}b=P(b,968)+g|0;J[d+20>>2]=J[b+960>>2];e=c;c=b}J[c>>2]=f;J[c+4>>2]=j;hj(c+8|0,o,952);J[c+960>>2]=-1;f=(mxa(f,j,l)<<2)+n|0;b=J[f>>2];h:{if((b|0)==-1){J[f>>2]=(c-g|0)/968;h=J[d+24>>2];break h}while(1){f=P(b,968)+g|0;b=J[f+960>>2];if((b|0)!=-1){continue}break}J[f+960>>2]=(c-g|0)/968}h=h+1|0;J[d+24>>2]=h;c=e;break c}J[d+12>>2]=c;Z(144851,55629,229,9606);B()}hj(b+8|0,o,952);break c}J[d+12>>2]=c;Z(152203,55629,537,2838);B()}b=J[i+960>>2];if((b|0)!=-1){continue}break}e=J[a+4>>2]}k=k+1|0;if(k>>>0>>0){continue}break}J[d+12>>2]=c}cj(J[a>>2]);cj(J[a+8>>2]);b=J[d+28>>2];J[a+24>>2]=J[d+24>>2];J[a+28>>2]=b;b=J[d+20>>2];J[a+16>>2]=J[d+16>>2];J[a+20>>2]=b;b=J[d+12>>2];J[a+8>>2]=J[d+8>>2];J[a+12>>2]=b;b=J[d+4>>2];J[a>>2]=J[d>>2];J[a+4>>2]=b}Ui=d+32|0;return}Z(144759,55629,159,2284);B()}Z(94750,55629,158,2284);B()}function Zu(a,b,c){var d=0,e=0,f=0,g=0,h=0,i=0;d=Ui-32|0;Ui=d;a:{switch(b+1|0){case 1:Z(112335,55629,156,2284);B();case 0:Z(94770,55629,157,2284);B();default:break a}}if((c|0)!=-1){e=J[a+8>>2];if((J[a+16>>2]-e|0)/24>>>0<=c>>>0){b:{if(!e){J[a+4>>2]=b;e=b<<2;b=sj(e);J[a>>2]=b;ij(b,255,e);b=P(c,24);c=sj(b);J[a+12>>2]=c;J[a+8>>2]=c;J[a+16>>2]=b+c;break b}J[d+16>>2]=0;J[d+20>>2]=0;J[d+24>>2]=0;J[d+28>>2]=0;J[d+8>>2]=0;J[d+12>>2]=0;J[d>>2]=0;J[d+4>>2]=0;J[d+20>>2]=-1;Zu(d,b,c);c=J[a+4>>2];if(c){while(1){b=J[J[a>>2]+(i<<2)>>2];if((b|0)!=-1){while(1){c:{d:{e:{e=J[d+16>>2];g=J[d+8>>2];if(J[d+24>>2]!=((e-g|0)/24|0)){f=J[a+8>>2]+P(b,24)|0;h=J[f>>2];b=J[d+4>>2];f:{if(!b){break f}b=J[J[d>>2]+((h>>>0)%(b>>>0)<<2)>>2];if((b|0)==-1){break f}while(1){c=g+P(b,24)|0;if((h|0)==J[c>>2]){break e}b=J[c+20>>2];if((b|0)!=-1){continue}break}}c=J[d+12>>2];g:{if((e|0)!=(c|0)){J[d+12>>2]=c+24;break g}b=J[d+20>>2];if((b|0)==-1){break d}c=g+P(b,24)|0;J[d+20>>2]=J[c+20>>2]}J[c>>2]=h;b=J[f+8>>2];J[c+4>>2]=J[f+4>>2];J[c+8>>2]=b;b=J[f+16>>2];J[c+12>>2]=J[f+12>>2];J[c+16>>2]=b;J[c+20>>2]=-1;g=J[d+8>>2];e=J[d>>2]+((h>>>0)%M[d+4>>2]<<2)|0;b=J[e>>2];if((b|0)!=-1){while(1){e=g+P(b,24)|0;b=J[e+20>>2];if((b|0)!=-1){continue}break}e=e+20|0}J[e>>2]=(c-g|0)/24;J[d+24>>2]=J[d+24>>2]+1;break c}Z(144851,55629,229,9606);B()}b=J[f+8>>2];J[c+4>>2]=J[f+4>>2];J[c+8>>2]=b;b=J[f+16>>2];J[c+12>>2]=J[f+12>>2];J[c+16>>2]=b;break c}Z(152203,55629,537,2838);B()}b=J[f+20>>2];if((b|0)!=-1){continue}break}c=J[a+4>>2]}i=i+1|0;if(i>>>0>>0){continue}break}}cj(J[a>>2]);cj(J[a+8>>2]);b=J[d+28>>2];J[a+24>>2]=J[d+24>>2];J[a+28>>2]=b;b=J[d+20>>2];J[a+16>>2]=J[d+16>>2];J[a+20>>2]=b;b=J[d+12>>2];J[a+8>>2]=J[d+8>>2];J[a+12>>2]=b;b=J[d+4>>2];J[a>>2]=J[d>>2];J[a+4>>2]=b}Ui=d+32|0;return}Z(144759,55629,159,2284);B()}Z(94750,55629,158,2284);B()}function Oua(a,b){a=a|0;b=b|0;var c=Q(0),d=0,e=Q(0),f=0,g=Q(0),h=Q(0),i=Q(0),j=0,k=Q(0),l=Q(0),m=Q(0),n=Q(0),o=0,p=0,q=Q(0),r=Q(0),s=0,t=Q(0),u=Q(0),v=Q(0),w=Q(0),x=Q(0),y=Q(0),z=Q(0),A=Q(0),B=Q(0),C=Q(0),D=Q(0),E=Q(0);d=J[a+48>>2];s=J[d+8>>2];J[a+96>>2]=s;j=J[a+52>>2];o=J[j+8>>2];J[a+100>>2]=o;k=N[d+32>>2];f=J[d+32>>2];m=N[d+28>>2];p=J[d+28>>2];J[a+128>>2]=p;J[a+132>>2]=f;A=N[j+32>>2];f=J[j+32>>2];i=N[j+28>>2];J[a+136>>2]=J[j+28>>2];J[a+140>>2]=f;q=N[d+120>>2];N[a+144>>2]=q;r=N[j+120>>2];N[a+148>>2]=r;t=N[d+128>>2];N[a+152>>2]=t;u=N[j+128>>2];N[a+156>>2]=u;e=N[a+72>>2];j=J[b+24>>2];d=P(s,12);p=j+d|0;n=N[p+8>>2];l=Hj(n);c=N[a+68>>2];h=Rj(n);f=J[b+28>>2];d=d+f|0;n=N[d>>2];v=N[d+4>>2];w=N[d+8>>2];o=P(o,12);d=o+f|0;x=N[d>>2];y=N[d+4>>2];z=N[d+8>>2];B=N[p>>2];d=j+o|0;C=N[d>>2];D=N[p+4>>2];E=N[d+4>>2];g=N[d+8>>2];c=Q(c-m);e=Q(e-k);m=Q(Q(h*c)-Q(l*e));N[a+112>>2]=m;l=Q(Q(l*c)+Q(h*e));N[a+116>>2]=l;h=N[a+80>>2];e=Hj(g);c=N[a+76>>2];g=Rj(g);i=Q(c-i);c=Q(h-A);h=Q(Q(g*i)-Q(e*c));N[a+120>>2]=h;g=Q(Q(e*i)+Q(g*c));N[a+124>>2]=g;i=Q(Q(Q(C+h)-B)-m);c=Q(Q(Q(E+g)-D)-l);e=Q(Y(Q(Q(i*i)+Q(c*c))));N[a+88>>2]=e;J[a+164>>2]=(e>N[a+84>>2])<<1;if(e>Q(.004999999888241291)){k=c;c=Q(Q(1)/e);e=Q(k*c);N[a+108>>2]=e;i=Q(i*c);N[a+104>>2]=i;c=Q(Q(h*e)-Q(g*i));k=Q(Q(u*c)*c);c=Q(Q(m*e)-Q(l*i));c=Q(k+Q(r+Q(Q(Q(t*c)*c)+q)));N[a+160>>2]=c!=Q(0)?Q(Q(1)/c):Q(0);a:{if(K[b+20|0]){c=Q(N[b+8>>2]*N[a+92>>2]);N[a+92>>2]=c;k=h;h=Q(e*c);e=g;g=Q(i*c);z=Q(Q(u*Q(Q(k*h)-Q(e*g)))+z);w=Q(w-Q(t*Q(Q(m*h)-Q(l*g))));y=Q(y+Q(r*h));x=Q(x+Q(r*g));v=Q(v-Q(q*h));n=Q(n-Q(q*g));break a}J[a+92>>2]=0}f=J[b+28>>2]+P(s,12)|0;N[f+4>>2]=v;N[f>>2]=n;f=J[b+28>>2];N[(f+P(J[a+96>>2],12)|0)+8>>2]=w;f=f+P(J[a+100>>2],12)|0;N[f+4>>2]=y;N[f>>2]=x;N[(J[b+28>>2]+P(J[a+100>>2],12)|0)+8>>2]=z;return}J[a+160>>2]=0;J[a+104>>2]=0;J[a+108>>2]=0;J[a+92>>2]=0}function IO(a){var b=0,c=0,d=0,e=0,f=0,g=0;b=J[J[a+12>>2]>>2];Nj(b,-1e4,J[a>>2]);Ok(b);IB(J[a+384>>2]);c=J[b+8>>2];J[c+8>>2]=0;J[b+8>>2]=c+16;Ok(b);c=J[a+36>>2];d=J[a+32>>2];if((c|0)!=(d|0)){c=(c-d|0)/672|0;g=c>>>0<=1?1:c;while(1){c=d+P(e,672)|0;f=J[c+480>>2];if(f){Zi[J[a+392>>2]](J[a+404>>2],a,L[c+650>>1]|L[c+648>>1]<<16,f,J[c+584>>2])}c=J[c+484>>2];if(c){cj(c)}e=e+1|0;if((g|0)!=(e|0)){continue}break}}hk(b,-1e4,J[a>>2]);hk(b,-1e4,J[a+4>>2]);hk(b,-1e4,J[a+8>>2]);a:{b=J[a+12>>2];d=J[b+44>>2];e=J[b+40>>2];if((d|0)==(e|0)){break a}c=d-e>>2;g=c>>>0<=1?1:c;c=0;while(1){f=e+(c<<2)|0;if(J[f>>2]!=(a|0)){c=c+1|0;if((g|0)!=(c|0)){continue}break a}break}J[f>>2]=J[d-4>>2];c=J[b+44>>2]-4|0;J[b+44>>2]=c;if(c>>>0>=M[b+40>>2]){break a}Z(12682,53895,540,43537);B()}b:{if(H[a+336|0]&1){break b}b=J[a+324>>2];if(!b){break b}cj(b)}c:{if(H[a+320|0]&1){break c}b=J[a+308>>2];if(!b){break c}cj(b)}d:{if(H[a+304|0]&1){break d}b=J[a+284>>2];if(b){cj(b)}b=J[a+276>>2];if(!b){break d}cj(b)}e:{if(H[a+272|0]&1){break e}b=J[a+260>>2];if(!b){break e}cj(b)}f:{if(H[a+256|0]&1){break f}b=J[a+236>>2];if(b){cj(b)}b=J[a+228>>2];if(!b){break f}cj(b)}g:{if(H[a+220|0]&1){break g}b=J[a+200>>2];if(b){cj(b)}b=J[a+192>>2];if(!b){break g}cj(b)}h:{if(H[a+188|0]&1){break h}b=J[a+168>>2];if(b){cj(b)}b=J[a+160>>2];if(!b){break h}cj(b)}i:{if(H[a+156|0]&1){break i}b=J[a+136>>2];if(b){cj(b)}b=J[a+128>>2];if(!b){break i}cj(b)}j:{if(H[a+124|0]&1){break j}b=J[a+104>>2];if(b){cj(b)}b=J[a+96>>2];if(!b){break j}cj(b)}k:{if(H[a+92|0]&1){break k}b=J[a+72>>2];if(b){cj(b)}b=J[a+64>>2];if(!b){break k}cj(b)}l:{if(H[a+60|0]&1){break l}b=J[a+48>>2];if(!b){break l}cj(b)}m:{if(H[a+44|0]&1){break m}b=J[a+32>>2];if(!b){break m}cj(b)}n:{if(H[a+28|0]&1){break n}b=J[a+20>>2];if(!b){break n}cj(b)}ij(a+8|0,0,448);J[a>>2]=-2;J[a+4>>2]=-2;J[a+8>>2]=-2}function Vl(a,b,c,d){var e=0,f=0,g=0,h=0,i=0;h=Ui-16|0;Ui=h;a:{b:{c:{if(b|c){f=J[a>>2];i=J[a+4>>2];if(!(f|i)){break b}if((b|0)==(f|0)&(c|0)==(i|0)){break c}f=J[a+8>>2];e=J[a+12>>2];if(!(f|e)){a=a+8|0;e=1;break b}if((b|0)==(f|0)&(c|0)==(e|0)){g=1;break c}f=J[a+16>>2];e=J[a+20>>2];if(!(f|e)){a=a+16|0;e=2;break b}if((b|0)==(f|0)&(c|0)==(e|0)){g=2;break c}f=J[a+24>>2];e=J[a+28>>2];if(!(f|e)){a=a+24|0;e=3;break b}if((b|0)==(f|0)&(c|0)==(e|0)){g=3;break c}f=J[a+32>>2];e=J[a+36>>2];if(!(f|e)){a=a+32|0;e=4;break b}if((b|0)==(f|0)&(c|0)==(e|0)){g=4;break c}f=J[a+40>>2];e=J[a+44>>2];if(!(f|e)){a=a+40|0;e=5;break b}if((b|0)==(f|0)&(c|0)==(e|0)){g=5;break c}f=J[a+48>>2];e=J[a+52>>2];if(!(f|e)){a=a+48|0;e=6;break b}if((b|0)==(f|0)&(c|0)==(e|0)){g=6;break c}f=J[a+56>>2];e=J[a+60>>2];if(!(f|e)){a=a+56|0;e=7;break b}if((b|0)==(f|0)&(c|0)==(e|0)){g=7;break c}f=J[a+64>>2];e=J[a+68>>2];if(!(f|e)){a=a- -64|0;e=8;break b}if((b|0)==(f|0)&(c|0)==(e|0)){g=8;break c}f=J[a+72>>2];e=J[a+76>>2];if(!(f|e)){a=a+72|0;e=9;break b}if((b|0)==(f|0)&(c|0)==(e|0)){g=9;break c}f=J[a+80>>2];e=J[a+84>>2];if(!(f|e)){a=a+80|0;e=10;break b}if((b|0)==(f|0)&(c|0)==(e|0)){g=10;break c}f=J[a+88>>2];e=J[a+92>>2];if(!(f|e)){a=a+88|0;e=11;break b}if((b|0)==(f|0)&(c|0)==(e|0)){g=11;break c}f=J[a+96>>2];e=J[a+100>>2];if(!(f|e)){a=a+96|0;e=12;break b}if((b|0)==(f|0)&(c|0)==(e|0)){g=12;break c}f=J[a+104>>2];e=J[a+108>>2];if(!(f|e)){a=a+104|0;e=13;break b}if((b|0)==(f|0)&(c|0)==(e|0)){g=13;break c}f=J[a+112>>2];e=J[a+116>>2];if(!(f|e)){a=a+112|0;e=14;break b}if((b|0)==(f|0)&(c|0)==(e|0)){g=14;break c}f=J[a+120>>2];e=J[a+124>>2];if(!(f|e)){a=a+120|0;e=15;break b}if((b|0)==(f|0)&(c|0)==(e|0)){g=15;break c}J[h>>2]=tj(b,c);dj(3,88458,133756,h)}break a}g=1<>2]=b;J[a+4>>2]=c;g=1<>2];if((J[a+16>>2]-e|0)/24>>>0<=c>>>0){b:{if(!e){J[a+4>>2]=b;b=b<<2;e=sj(b);J[a>>2]=e;ij(e,255,b);c=P(c,24);b=sj(c);J[a+12>>2]=b;J[a+8>>2]=b;J[a+16>>2]=b+c;break b}J[d+16>>2]=0;J[d+20>>2]=0;J[d+24>>2]=0;J[d+28>>2]=0;J[d+8>>2]=0;J[d+12>>2]=0;J[d>>2]=0;J[d+4>>2]=0;J[d+20>>2]=-1;vN(d,b,c);c=J[a+4>>2];if(c){while(1){b=J[J[a>>2]+(i<<2)>>2];if((b|0)!=-1){while(1){c:{d:{e:{k=J[d+16>>2];g=J[d+8>>2];if(J[d+24>>2]!=((k-g|0)/24|0)){f=J[a+8>>2]+P(b,24)|0;b=f;e=J[b>>2];h=J[b+4>>2];j=J[d+4>>2];f:{if(!j){break f}b=J[J[d>>2]+(mxa(e,h,j)<<2)>>2];if((b|0)==-1){break f}while(1){b=g+P(b,24)|0;if((e|0)==J[b>>2]&(h|0)==J[b+4>>2]){break e}b=J[b+20>>2];if((b|0)!=-1){continue}break}}c=J[d+12>>2];g:{if((k|0)!=(c|0)){J[d+12>>2]=c+24;break g}b=J[d+20>>2];if((b|0)==-1){break d}c=g+P(b,24)|0;J[d+20>>2]=J[c+20>>2]}J[c>>2]=e;J[c+4>>2]=h;b=J[f+12>>2];J[c+8>>2]=J[f+8>>2];J[c+12>>2]=b;J[c+16>>2]=J[f+16>>2];J[c+20>>2]=-1;g=J[d+8>>2];e=J[d>>2]+(mxa(e,h,j)<<2)|0;b=J[e>>2];if((b|0)!=-1){while(1){e=g+P(b,24)|0;b=J[e+20>>2];if((b|0)!=-1){continue}break}e=e+20|0}J[e>>2]=(c-g|0)/24;J[d+24>>2]=J[d+24>>2]+1;break c}Z(144851,55629,229,9606);B()}c=J[f+12>>2];J[b+8>>2]=J[f+8>>2];J[b+12>>2]=c;J[b+16>>2]=J[f+16>>2];break c}Z(152203,55629,537,2838);B()}b=J[f+20>>2];if((b|0)!=-1){continue}break}c=J[a+4>>2]}i=i+1|0;if(i>>>0>>0){continue}break}}cj(J[a>>2]);cj(J[a+8>>2]);b=J[d+28>>2];J[a+24>>2]=J[d+24>>2];J[a+28>>2]=b;b=J[d+20>>2];J[a+16>>2]=J[d+16>>2];J[a+20>>2]=b;b=J[d+12>>2];J[a+8>>2]=J[d+8>>2];J[a+12>>2]=b;b=J[d+4>>2];J[a>>2]=J[d>>2];J[a+4>>2]=b}Ui=d+32|0;return}Z(144759,55629,159,2284);B()}Z(94750,55629,158,2284);B()}function RC(a,b,c){var d=0,e=0,f=0,g=0,h=0,i=0,j=0,k=0;d=Ui-32|0;Ui=d;a:{switch(b+1|0){case 1:Z(112335,55629,156,2284);B();case 0:Z(94770,55629,157,2284);B();default:break a}}if((c|0)!=-1){e=J[a+8>>2];if((J[a+16>>2]-e|0)/24>>>0<=c>>>0){b:{if(!e){J[a+4>>2]=b;b=b<<2;e=sj(b);J[a>>2]=e;ij(e,255,b);c=P(c,24);b=sj(c);J[a+12>>2]=b;J[a+8>>2]=b;J[a+16>>2]=b+c;break b}J[d+16>>2]=0;J[d+20>>2]=0;J[d+24>>2]=0;J[d+28>>2]=0;J[d+8>>2]=0;J[d+12>>2]=0;J[d>>2]=0;J[d+4>>2]=0;J[d+20>>2]=-1;RC(d,b,c);c=J[a+4>>2];if(c){while(1){b=J[J[a>>2]+(i<<2)>>2];if((b|0)!=-1){while(1){c:{d:{e:{k=J[d+16>>2];g=J[d+8>>2];if(J[d+24>>2]!=((k-g|0)/24|0)){f=J[a+8>>2]+P(b,24)|0;b=f;e=J[b>>2];h=J[b+4>>2];j=J[d+4>>2];f:{if(!j){break f}b=J[J[d>>2]+(mxa(e,h,j)<<2)>>2];if((b|0)==-1){break f}while(1){b=g+P(b,24)|0;if((e|0)==J[b>>2]&(h|0)==J[b+4>>2]){break e}b=J[b+20>>2];if((b|0)!=-1){continue}break}}c=J[d+12>>2];g:{if((k|0)!=(c|0)){J[d+12>>2]=c+24;break g}b=J[d+20>>2];if((b|0)==-1){break d}c=g+P(b,24)|0;J[d+20>>2]=J[c+20>>2]}J[c>>2]=e;J[c+4>>2]=h;b=J[f+12>>2];J[c+8>>2]=J[f+8>>2];J[c+12>>2]=b;J[c+16>>2]=J[f+16>>2];J[c+20>>2]=-1;g=J[d+8>>2];e=J[d>>2]+(mxa(e,h,j)<<2)|0;b=J[e>>2];if((b|0)!=-1){while(1){e=g+P(b,24)|0;b=J[e+20>>2];if((b|0)!=-1){continue}break}e=e+20|0}J[e>>2]=(c-g|0)/24;J[d+24>>2]=J[d+24>>2]+1;break c}Z(144851,55629,229,9606);B()}c=J[f+12>>2];J[b+8>>2]=J[f+8>>2];J[b+12>>2]=c;J[b+16>>2]=J[f+16>>2];break c}Z(152203,55629,537,2838);B()}b=J[f+20>>2];if((b|0)!=-1){continue}break}c=J[a+4>>2]}i=i+1|0;if(i>>>0>>0){continue}break}}cj(J[a>>2]);cj(J[a+8>>2]);b=J[d+28>>2];J[a+24>>2]=J[d+24>>2];J[a+28>>2]=b;b=J[d+20>>2];J[a+16>>2]=J[d+16>>2];J[a+20>>2]=b;b=J[d+12>>2];J[a+8>>2]=J[d+8>>2];J[a+12>>2]=b;b=J[d+4>>2];J[a>>2]=J[d>>2];J[a+4>>2]=b}Ui=d+32|0;return}Z(144759,55629,159,2284);B()}Z(94750,55629,158,2284);B()}function _5(a){a=a|0;var b=0,c=0,d=Q(0),e=0,f=0,g=0,h=0,i=Q(0),j=Q(0),k=Q(0),l=0,m=Q(0),n=0,o=0,p=0,q=0,r=0,s=0,t=0;f=Ui+-64|0;Ui=f;b=J[a+8>>2]-J[a+12>>2]>>4;Bj(a);g=qj(a,-1,J[84364],139081);gj(a,-2);a:{b:{if((b|0)==J[a+8>>2]-J[a+12>>2]>>4){Oj(a,1,5);h=J[a+8>>2]-J[a+12>>2]>>4;b=J[a+8>>2];J[b+8>>2]=0;J[a+8>>2]=b+16;c:{if($j(a,1)){while(1){d:{e:{f:{g:{h:{e=Ej(a,-2);switch(e-16|0){case 16:break g;case 0:break e;case 1:case 2:case 3:case 4:case 5:case 6:case 7:case 8:case 9:case 10:case 11:case 12:case 13:case 14:case 15:break f;default:break h}}if((e|0)!=1){break f}b=Qm(a,-1);d=N[b+12>>2];i=N[b+8>>2];j=N[b+4>>2];k=N[b>>2];break d}l=Ej(a,-1);break d}gj(a,-3);if((h|0)!=J[a+8>>2]-J[a+12>>2]>>4){break b}J[f+16>>2]=35504;a=fj(a,119883,f+16|0);break c}m=Q(Ej(a,-1)|0)}c=c|e;gj(a,-2);if($j(a,1)){continue}break}d=Q(d*Q(255));i:{if(d=Q(0)){b=~~d>>>0;break i}b=0}d=Q(i*Q(255));j:{if(d=Q(0)){e=~~d>>>0;break j}e=0}n=e>>>16|0;o=e<<16;d=Q(j*Q(255));k:{if(d=Q(0)){e=~~d>>>0;break k}e=0}p=e>>>24|0;q=e<<8;d=Q(k*Q(255));l:{if(d=Q(0)){e=~~d>>>0;break l}e=0}r=c;s=(C(m),v(2));t=b<<24;c=b>>>8|0}else{c=0}if((h|0)!=J[a+8>>2]-J[a+12>>2]>>4){break a}b=f+24|0;J[b+32>>2]=l;J[b+36>>2]=0;J[b+24>>2]=s;J[b+28>>2]=0;J[b+16>>2]=t|(o|(e|q));J[b+20>>2]=c|(n|p);J[b+8>>2]=r;J[b+12>>2]=0;J[b>>2]=5;c=J[g+4>>2];if((c|0)!=J[g+8>>2]){J[g+4>>2]=c+40;a=J[b+36>>2];J[c+32>>2]=J[b+32>>2];J[c+36>>2]=a;a=J[b+28>>2];J[c+24>>2]=J[b+24>>2];J[c+28>>2]=a;a=J[b+20>>2];J[c+16>>2]=J[b+16>>2];J[c+20>>2]=a;a=J[b+12>>2];J[c+8>>2]=J[b+8>>2];J[c+12>>2]=a;a=J[b+4>>2];J[c>>2]=J[b>>2];J[c+4>>2]=a;a=0;break c}J[f>>2]=(c-J[g>>2]|0)/40;a=fj(a,132935,f)}Ui=f- -64|0;return a|0}Z(143244,37616,478,51340);B()}Z(143244,37616,1668,36264);B()}Z(143244,37616,1673,36264);B()}function cba(a){a=a|0;ij(a+104|0,0,340);J[a+428>>2]=822;J[a+192>>2]=823;J[a+188>>2]=824;J[a+184>>2]=825;J[a+180>>2]=826;J[a+176>>2]=827;J[a+172>>2]=828;J[a+168>>2]=829;J[a+164>>2]=830;J[a+160>>2]=831;J[a+156>>2]=832;J[a+152>>2]=833;J[a+148>>2]=834;J[a+144>>2]=835;J[a+140>>2]=836;J[a+136>>2]=837;J[a+132>>2]=838;J[a+128>>2]=839;J[a+124>>2]=840;J[a+120>>2]=841;J[a+116>>2]=842;J[a+112>>2]=843;J[a+108>>2]=844;J[a+100>>2]=845;J[a+96>>2]=846;J[a+92>>2]=847;J[a+88>>2]=848;J[a+84>>2]=849;J[a+80>>2]=850;J[a+76>>2]=851;J[a+72>>2]=852;J[a+68>>2]=853;J[a+64>>2]=854;J[a+60>>2]=855;J[a+56>>2]=856;J[a+52>>2]=857;J[a+48>>2]=858;J[a+44>>2]=859;J[a+40>>2]=860;J[a+36>>2]=861;J[a+32>>2]=862;J[a+28>>2]=863;J[a+24>>2]=864;J[a+20>>2]=865;J[a+16>>2]=866;J[a+12>>2]=867;J[a+8>>2]=868;J[a+4>>2]=869;J[a>>2]=870;J[a+356>>2]=871;J[a+424>>2]=872;J[a+352>>2]=873;J[a+348>>2]=874;J[a+344>>2]=875;J[a+336>>2]=876;J[a+332>>2]=877;J[a+328>>2]=878;J[a+324>>2]=879;J[a+320>>2]=880;J[a+316>>2]=881;J[a+312>>2]=882;J[a+308>>2]=883;J[a+304>>2]=884;J[a+300>>2]=885;J[a+296>>2]=886;J[a+292>>2]=887;J[a+288>>2]=888;J[a+284>>2]=889;J[a+280>>2]=890;J[a+276>>2]=891;J[a+272>>2]=892;J[a+268>>2]=893;J[a+264>>2]=894;J[a+260>>2]=895;J[a+256>>2]=896;J[a+252>>2]=897;J[a+248>>2]=898;J[a+244>>2]=899;J[a+240>>2]=900;J[a+236>>2]=901;J[a+232>>2]=902;J[a+228>>2]=903;J[a+224>>2]=904;J[a+220>>2]=905;J[a+216>>2]=906;J[a+212>>2]=907;J[a+208>>2]=908;J[a+204>>2]=909;J[a+200>>2]=910;J[a+196>>2]=911;J[a+384>>2]=912;J[a+380>>2]=913;J[a+376>>2]=914;J[a+372>>2]=915;J[a+368>>2]=916;J[a+364>>2]=917;J[a+360>>2]=918;J[a+340>>2]=919;J[a+104>>2]=920;J[a+388>>2]=921;J[a+392>>2]=922;J[a+396>>2]=923;J[a+400>>2]=924;J[a+404>>2]=925;J[a+408>>2]=926;J[a+412>>2]=927;J[a+416>>2]=928;J[a+420>>2]=929;J[a+432>>2]=930;J[a+436>>2]=931;J[a+440>>2]=932}function MH(a,b,c,d,e){var f=0,g=0,h=0,i=0,j=0,k=0,l=0,m=0,n=0,o=0,p=0;g=Ui-32|0;Ui=g;J[g+28>>2]=d;J[g+20>>2]=0;J[g+12>>2]=1;J[g+16>>2]=0;J[g+8>>2]=0;J[g>>2]=1;J[g+4>>2]=0;k=d+e|0;d=Qk(g+28|0,k,g+24|0,48);a:{if(d){d=d-20352|0;break a}d=-20454;if((J[g+28>>2]+J[g+24>>2]|0)!=(k|0)){break a}b:{e=g+28|0;d=Gw(e,k,g+12|0);if(!d){d=Gw(e,k,g);if(!d){break b}}d=d-20352|0;break a}p=a+136|0;m=g+12|0;f=Ui-96|0;Ui=f;J[f+20>>2]=0;J[f+12>>2]=1;J[f+16>>2]=0;J[f+32>>2]=0;J[f+24>>2]=1;J[f+28>>2]=0;J[f+44>>2]=0;J[f+36>>2]=1;J[f+40>>2]=0;J[f+92>>2]=0;J[f+84>>2]=1;J[f+88>>2]=0;J[f+80>>2]=0;J[f+72>>2]=1;J[f+76>>2]=0;J[f+68>>2]=0;J[f+60>>2]=1;J[f+64>>2]=0;J[f+56>>2]=0;J[f+48>>2]=1;J[f+52>>2]=0;d=a;c:{if(!J[a+84>>2]){a=-20352;break c}a=-19968;d:{if((Pj(m,1)|0)<0){break d}h=d+76|0;if((_j(m,h)|0)>=0){break d}if((Pj(g,1)|0)<0){break d}if((_j(g,h)|0)>=0){break d}e=f+84|0;l=b;a=J[d+92>>2]+7>>>3|0;b=a>>>0>c>>>0?c:a;a=Vm(e,l,b);if(a){break d}b=b<<3;a=J[d+92>>2];if(b>>>0>a>>>0){a=yk(e,b-a|0);if(a){break d}}a=f+84|0;if((_j(a,h)|0)>=0){a=wl(a,a,h);if(a){break d}}b=f+72|0;a=Bp(b,g,h);if(a){break d}n=f+60|0;a=Ak(n,f+84|0,b);if(a){break d}a=Bl(n,n,h);if(a){break d}o=f+48|0;a=Ak(o,m,b);if(a){break d}a=Bl(o,o,h);if(a){break d}i=f+12|0;e=d+40|0;j=Ui-48|0;Ui=j;a=-20096;if(!(!J[d+48>>2]|!J[d+60>>2])){l=j+12|0;a=l;J[a+8>>2]=0;J[a>>2]=1;J[a+4>>2]=0;c=j+24|0;a=c;J[a+8>>2]=0;J[a>>2]=1;J[a+4>>2]=0;b=j+36|0;a=b;J[a+8>>2]=0;J[a>>2]=1;J[a+4>>2]=0;a=GH(d,l,n,e);e:{if(a){break e}a=GH(d,i,o,p);if(a){break e}a=rB(d,i,l,i);if(a){break e}a=bx(d,i)}Dj(j+12|0);Dj(c);Dj(b)}Ui=j+48|0;if(a){break d}a=-19968;if(HH(i)){break d}a=Bl(i,i,h);if(a){break d}a=_j(i,m)?-19968:0}Cp(f+12|0);Dj(f+84|0);Dj(f+72|0);Dj(f+60|0);Dj(f+48|0)}Ui=f+96|0;d=a;if(a){break a}d=J[g+28>>2]!=(k|0)?-19456:0}Dj(g+12|0);Dj(g);Ui=g+32|0;return d}function kN(a,b,c){var d=0,e=0,f=0,g=0,h=0,i=0,j=0,k=0,l=0,m=0,n=0,o=0,p=0,q=0;d=Ui-32|0;Ui=d;a:{switch(b+1|0){case 1:Z(112335,55629,156,2284);B();case 0:Z(94770,55629,157,2284);B();default:break a}}if((c|0)!=-1){e=J[a+8>>2];if(J[a+16>>2]-e>>4>>>0<=c>>>0){b:{if(!e){J[a+4>>2]=b;b=b<<2;e=sj(b);J[a>>2]=e;ij(e,255,b);c=c<<4;b=sj(c);J[a+12>>2]=b;J[a+8>>2]=b;J[a+16>>2]=b+c;break b}J[d+16>>2]=0;J[d+20>>2]=0;J[d+24>>2]=0;J[d+28>>2]=0;J[d+8>>2]=0;J[d+12>>2]=0;J[d>>2]=0;J[d+4>>2]=0;J[d+20>>2]=-1;kN(d,b,c);m=J[a>>2];e=J[a+4>>2];if(e){n=J[d+16>>2];g=J[d+8>>2];p=n-g>>4;q=J[a+8>>2];c=J[d+12>>2];while(1){b=J[(k<<2)+m>>2];if((b|0)!=-1){h=J[d+24>>2];o=J[d>>2];while(1){c:{d:{e:{if((h|0)!=(p|0)){i=(b<<4)+q|0;b=i;f=J[b>>2];j=J[b+4>>2];l=J[d+4>>2];f:{if(!l){break f}b=J[(mxa(f,j,l)<<2)+o>>2];if((b|0)==-1){break f}while(1){b=(b<<4)+g|0;if(J[b>>2]==(f|0)&(j|0)==J[b+4>>2]){break e}b=J[b+12>>2];if((b|0)!=-1){continue}break}}g:{if((c|0)!=(n|0)){e=c+16|0;break g}b=J[d+20>>2];if((b|0)==-1){break d}b=(b<<4)+g|0;J[d+20>>2]=J[b+12>>2];e=c;c=b}J[c>>2]=f;J[c+4>>2]=j;b=L[i+8>>1];J[c+12>>2]=-1;I[c+8>>1]=b;f=(mxa(f,j,l)<<2)+o|0;b=J[f>>2];h:{if((b|0)==-1){J[f>>2]=c-g>>4;h=J[d+24>>2];break h}while(1){f=(b<<4)+g|0;b=J[f+12>>2];if((b|0)!=-1){continue}break}J[f+12>>2]=c-g>>4}h=h+1|0;J[d+24>>2]=h;c=e;break c}J[d+12>>2]=c;Z(144851,55629,229,9606);B()}I[b+8>>1]=L[i+8>>1];break c}J[d+12>>2]=c;Z(152203,55629,537,2838);B()}b=J[i+12>>2];if((b|0)!=-1){continue}break}e=J[a+4>>2]}k=k+1|0;if(k>>>0>>0){continue}break}J[d+12>>2]=c}cj(m);cj(J[a+8>>2]);b=J[d+28>>2];J[a+24>>2]=J[d+24>>2];J[a+28>>2]=b;b=J[d+20>>2];J[a+16>>2]=J[d+16>>2];J[a+20>>2]=b;b=J[d+12>>2];J[a+8>>2]=J[d+8>>2];J[a+12>>2]=b;b=J[d+4>>2];J[a>>2]=J[d>>2];J[a+4>>2]=b}Ui=d+32|0;return}Z(144759,55629,159,2284);B()}Z(94750,55629,158,2284);B()}function Tx(a,b,c){var d=0,e=0,f=0,g=0,h=0,i=0,j=0,k=0,l=0,m=0,n=0,o=0,p=0,q=0;d=Ui-32|0;Ui=d;a:{switch(b+1|0){case 1:Z(112335,55629,156,2284);B();case 0:Z(94770,55629,157,2284);B();default:break a}}if((c|0)!=-1){e=J[a+8>>2];if(J[a+16>>2]-e>>4>>>0<=c>>>0){b:{if(!e){J[a+4>>2]=b;b=b<<2;e=sj(b);J[a>>2]=e;ij(e,255,b);c=c<<4;b=sj(c);J[a+12>>2]=b;J[a+8>>2]=b;J[a+16>>2]=b+c;break b}J[d+16>>2]=0;J[d+20>>2]=0;J[d+24>>2]=0;J[d+28>>2]=0;J[d+8>>2]=0;J[d+12>>2]=0;J[d>>2]=0;J[d+4>>2]=0;J[d+20>>2]=-1;Tx(d,b,c);m=J[a>>2];e=J[a+4>>2];if(e){n=J[d+16>>2];g=J[d+8>>2];p=n-g>>4;q=J[a+8>>2];c=J[d+12>>2];while(1){b=J[(k<<2)+m>>2];if((b|0)!=-1){h=J[d+24>>2];o=J[d>>2];while(1){c:{d:{e:{if((h|0)!=(p|0)){i=(b<<4)+q|0;b=i;f=J[b>>2];j=J[b+4>>2];l=J[d+4>>2];f:{if(!l){break f}b=J[(mxa(f,j,l)<<2)+o>>2];if((b|0)==-1){break f}while(1){b=(b<<4)+g|0;if(J[b>>2]==(f|0)&(j|0)==J[b+4>>2]){break e}b=J[b+12>>2];if((b|0)!=-1){continue}break}}g:{if((c|0)!=(n|0)){e=c+16|0;break g}b=J[d+20>>2];if((b|0)==-1){break d}b=(b<<4)+g|0;J[d+20>>2]=J[b+12>>2];e=c;c=b}J[c>>2]=f;J[c+4>>2]=j;b=J[i+8>>2];J[c+12>>2]=-1;J[c+8>>2]=b;f=(mxa(f,j,l)<<2)+o|0;b=J[f>>2];h:{if((b|0)==-1){J[f>>2]=c-g>>4;h=J[d+24>>2];break h}while(1){f=(b<<4)+g|0;b=J[f+12>>2];if((b|0)!=-1){continue}break}J[f+12>>2]=c-g>>4}h=h+1|0;J[d+24>>2]=h;c=e;break c}J[d+12>>2]=c;Z(144851,55629,229,9606);B()}J[b+8>>2]=J[i+8>>2];break c}J[d+12>>2]=c;Z(152203,55629,537,2838);B()}b=J[i+12>>2];if((b|0)!=-1){continue}break}e=J[a+4>>2]}k=k+1|0;if(k>>>0>>0){continue}break}J[d+12>>2]=c}cj(m);cj(J[a+8>>2]);b=J[d+28>>2];J[a+24>>2]=J[d+24>>2];J[a+28>>2]=b;b=J[d+20>>2];J[a+16>>2]=J[d+16>>2];J[a+20>>2]=b;b=J[d+12>>2];J[a+8>>2]=J[d+8>>2];J[a+12>>2]=b;b=J[d+4>>2];J[a>>2]=J[d>>2];J[a+4>>2]=b}Ui=d+32|0;return}Z(144759,55629,159,2284);B()}Z(94750,55629,158,2284);B()}function $u(a,b,c){var d=0,e=0,f=0,g=0,h=0,i=0,j=0,k=0,l=0,m=0,n=0,o=0,p=0,q=0;d=Ui-32|0;Ui=d;a:{switch(b+1|0){case 1:Z(112335,55629,156,2284);B();case 0:Z(94770,55629,157,2284);B();default:break a}}if((c|0)!=-1){e=J[a+8>>2];if(J[a+16>>2]-e>>4>>>0<=c>>>0){b:{if(!e){J[a+4>>2]=b;b=b<<2;e=sj(b);J[a>>2]=e;ij(e,255,b);c=c<<4;b=sj(c);J[a+12>>2]=b;J[a+8>>2]=b;J[a+16>>2]=b+c;break b}J[d+16>>2]=0;J[d+20>>2]=0;J[d+24>>2]=0;J[d+28>>2]=0;J[d+8>>2]=0;J[d+12>>2]=0;J[d>>2]=0;J[d+4>>2]=0;J[d+20>>2]=-1;$u(d,b,c);m=J[a>>2];e=J[a+4>>2];if(e){n=J[d+16>>2];g=J[d+8>>2];p=n-g>>4;q=J[a+8>>2];c=J[d+12>>2];while(1){b=J[(k<<2)+m>>2];if((b|0)!=-1){h=J[d+24>>2];o=J[d>>2];while(1){c:{d:{e:{if((h|0)!=(p|0)){i=(b<<4)+q|0;b=i;f=J[b>>2];j=J[b+4>>2];l=J[d+4>>2];f:{if(!l){break f}b=J[(mxa(f,j,l)<<2)+o>>2];if((b|0)==-1){break f}while(1){b=(b<<4)+g|0;if(J[b>>2]==(f|0)&(j|0)==J[b+4>>2]){break e}b=J[b+12>>2];if((b|0)!=-1){continue}break}}g:{if((c|0)!=(n|0)){e=c+16|0;break g}b=J[d+20>>2];if((b|0)==-1){break d}b=(b<<4)+g|0;J[d+20>>2]=J[b+12>>2];e=c;c=b}J[c>>2]=f;J[c+4>>2]=j;b=J[i+8>>2];J[c+12>>2]=-1;J[c+8>>2]=b;f=(mxa(f,j,l)<<2)+o|0;b=J[f>>2];h:{if((b|0)==-1){J[f>>2]=c-g>>4;h=J[d+24>>2];break h}while(1){f=(b<<4)+g|0;b=J[f+12>>2];if((b|0)!=-1){continue}break}J[f+12>>2]=c-g>>4}h=h+1|0;J[d+24>>2]=h;c=e;break c}J[d+12>>2]=c;Z(144851,55629,229,9606);B()}J[b+8>>2]=J[i+8>>2];break c}J[d+12>>2]=c;Z(152203,55629,537,2838);B()}b=J[i+12>>2];if((b|0)!=-1){continue}break}e=J[a+4>>2]}k=k+1|0;if(k>>>0>>0){continue}break}J[d+12>>2]=c}cj(m);cj(J[a+8>>2]);b=J[d+28>>2];J[a+24>>2]=J[d+24>>2];J[a+28>>2]=b;b=J[d+20>>2];J[a+16>>2]=J[d+16>>2];J[a+20>>2]=b;b=J[d+12>>2];J[a+8>>2]=J[d+8>>2];J[a+12>>2]=b;b=J[d+4>>2];J[a>>2]=J[d>>2];J[a+4>>2]=b}Ui=d+32|0;return}Z(144759,55629,159,2284);B()}Z(94750,55629,158,2284);B()}function mN(a,b,c){var d=0,e=0,f=0,g=0,h=0,i=0,j=0,k=0;d=Ui-32|0;Ui=d;a:{switch(b+1|0){case 1:Z(112335,55629,156,2284);B();case 0:Z(94770,55629,157,2284);B();default:break a}}if((c|0)!=-1){e=J[a+8>>2];if((J[a+16>>2]-e|0)/24>>>0<=c>>>0){b:{if(!e){J[a+4>>2]=b;b=b<<2;e=sj(b);J[a>>2]=e;ij(e,255,b);c=P(c,24);b=sj(c);J[a+12>>2]=b;J[a+8>>2]=b;J[a+16>>2]=b+c;break b}J[d+16>>2]=0;J[d+20>>2]=0;J[d+24>>2]=0;J[d+28>>2]=0;J[d+8>>2]=0;J[d+12>>2]=0;J[d>>2]=0;J[d+4>>2]=0;J[d+20>>2]=-1;mN(d,b,c);c=J[a+4>>2];if(c){while(1){b=J[J[a>>2]+(i<<2)>>2];if((b|0)!=-1){while(1){c:{d:{e:{k=J[d+16>>2];f=J[d+8>>2];if(J[d+24>>2]!=((k-f|0)/24|0)){g=J[a+8>>2]+P(b,24)|0;b=g;e=J[b>>2];h=J[b+4>>2];j=J[d+4>>2];f:{if(!j){break f}b=J[J[d>>2]+(mxa(e,h,j)<<2)>>2];if((b|0)==-1){break f}while(1){b=f+P(b,24)|0;if((e|0)==J[b>>2]&(h|0)==J[b+4>>2]){break e}b=J[b+16>>2];if((b|0)!=-1){continue}break}}c=J[d+12>>2];g:{if((k|0)!=(c|0)){J[d+12>>2]=c+24;break g}b=J[d+20>>2];if((b|0)==-1){break d}c=f+P(b,24)|0;J[d+20>>2]=J[c+16>>2]}J[c>>2]=e;J[c+4>>2]=h;b=J[g+12>>2];f=J[g+8>>2];J[c+16>>2]=-1;J[c+8>>2]=f;J[c+12>>2]=b;f=J[d+8>>2];e=J[d>>2]+(mxa(e,h,j)<<2)|0;b=J[e>>2];h:{if((b|0)==-1){J[e>>2]=(c-f|0)/24;break h}while(1){e=f+P(b,24)|0;b=J[e+16>>2];if((b|0)!=-1){continue}break}J[e+16>>2]=(c-f|0)/24}J[d+24>>2]=J[d+24>>2]+1;break c}Z(144851,55629,229,9606);B()}c=J[g+12>>2];J[b+8>>2]=J[g+8>>2];J[b+12>>2]=c;break c}Z(152203,55629,537,2838);B()}b=J[g+16>>2];if((b|0)!=-1){continue}break}c=J[a+4>>2]}i=i+1|0;if(i>>>0>>0){continue}break}}cj(J[a>>2]);cj(J[a+8>>2]);b=J[d+28>>2];J[a+24>>2]=J[d+24>>2];J[a+28>>2]=b;b=J[d+20>>2];J[a+16>>2]=J[d+16>>2];J[a+20>>2]=b;b=J[d+12>>2];J[a+8>>2]=J[d+8>>2];J[a+12>>2]=b;b=J[d+4>>2];J[a>>2]=J[d>>2];J[a+4>>2]=b}Ui=d+32|0;return}Z(144759,55629,159,2284);B()}Z(94750,55629,158,2284);B()}function SC(a,b,c){var d=0,e=0,f=0,g=0,h=0,i=0,j=0,k=0;d=Ui-32|0;Ui=d;a:{switch(b+1|0){case 1:Z(112335,55629,156,2284);B();case 0:Z(94770,55629,157,2284);B();default:break a}}if((c|0)!=-1){e=J[a+8>>2];if((J[a+16>>2]-e|0)/24>>>0<=c>>>0){b:{if(!e){J[a+4>>2]=b;b=b<<2;e=sj(b);J[a>>2]=e;ij(e,255,b);c=P(c,24);b=sj(c);J[a+12>>2]=b;J[a+8>>2]=b;J[a+16>>2]=b+c;break b}J[d+16>>2]=0;J[d+20>>2]=0;J[d+24>>2]=0;J[d+28>>2]=0;J[d+8>>2]=0;J[d+12>>2]=0;J[d>>2]=0;J[d+4>>2]=0;J[d+20>>2]=-1;SC(d,b,c);c=J[a+4>>2];if(c){while(1){b=J[J[a>>2]+(i<<2)>>2];if((b|0)!=-1){while(1){c:{d:{e:{k=J[d+16>>2];f=J[d+8>>2];if(J[d+24>>2]!=((k-f|0)/24|0)){g=J[a+8>>2]+P(b,24)|0;b=g;e=J[b>>2];h=J[b+4>>2];j=J[d+4>>2];f:{if(!j){break f}b=J[J[d>>2]+(mxa(e,h,j)<<2)>>2];if((b|0)==-1){break f}while(1){b=f+P(b,24)|0;if((e|0)==J[b>>2]&(h|0)==J[b+4>>2]){break e}b=J[b+16>>2];if((b|0)!=-1){continue}break}}c=J[d+12>>2];g:{if((k|0)!=(c|0)){J[d+12>>2]=c+24;break g}b=J[d+20>>2];if((b|0)==-1){break d}c=f+P(b,24)|0;J[d+20>>2]=J[c+16>>2]}J[c>>2]=e;J[c+4>>2]=h;b=J[g+12>>2];f=J[g+8>>2];J[c+16>>2]=-1;J[c+8>>2]=f;J[c+12>>2]=b;f=J[d+8>>2];e=J[d>>2]+(mxa(e,h,j)<<2)|0;b=J[e>>2];h:{if((b|0)==-1){J[e>>2]=(c-f|0)/24;break h}while(1){e=f+P(b,24)|0;b=J[e+16>>2];if((b|0)!=-1){continue}break}J[e+16>>2]=(c-f|0)/24}J[d+24>>2]=J[d+24>>2]+1;break c}Z(144851,55629,229,9606);B()}c=J[g+12>>2];J[b+8>>2]=J[g+8>>2];J[b+12>>2]=c;break c}Z(152203,55629,537,2838);B()}b=J[g+16>>2];if((b|0)!=-1){continue}break}c=J[a+4>>2]}i=i+1|0;if(i>>>0>>0){continue}break}}cj(J[a>>2]);cj(J[a+8>>2]);b=J[d+28>>2];J[a+24>>2]=J[d+24>>2];J[a+28>>2]=b;b=J[d+20>>2];J[a+16>>2]=J[d+16>>2];J[a+20>>2]=b;b=J[d+12>>2];J[a+8>>2]=J[d+8>>2];J[a+12>>2]=b;b=J[d+4>>2];J[a>>2]=J[d>>2];J[a+4>>2]=b}Ui=d+32|0;return}Z(144759,55629,159,2284);B()}Z(94750,55629,158,2284);B()}function AN(a,b,c){var d=0,e=0,f=0,g=0,h=0,i=0,j=0,k=0,l=0,m=0,n=0,o=0,p=0,q=0;d=Ui-32|0;Ui=d;a:{switch(b+1|0){case 1:Z(112335,55629,156,2284);B();case 0:Z(94770,55629,157,2284);B();default:break a}}if((c|0)!=-1){e=J[a+8>>2];if(J[a+16>>2]-e>>4>>>0<=c>>>0){b:{if(!e){J[a+4>>2]=b;b=b<<2;e=sj(b);J[a>>2]=e;ij(e,255,b);c=c<<4;b=sj(c);J[a+12>>2]=b;J[a+8>>2]=b;J[a+16>>2]=b+c;break b}J[d+16>>2]=0;J[d+20>>2]=0;J[d+24>>2]=0;J[d+28>>2]=0;J[d+8>>2]=0;J[d+12>>2]=0;J[d>>2]=0;J[d+4>>2]=0;J[d+20>>2]=-1;AN(d,b,c);m=J[a>>2];e=J[a+4>>2];if(e){n=J[d+16>>2];g=J[d+8>>2];p=n-g>>4;q=J[a+8>>2];c=J[d+12>>2];while(1){b=J[(k<<2)+m>>2];if((b|0)!=-1){h=J[d+24>>2];o=J[d>>2];while(1){c:{d:{e:{if((h|0)!=(p|0)){i=(b<<4)+q|0;b=i;f=J[b>>2];j=J[b+4>>2];l=J[d+4>>2];f:{if(!l){break f}b=J[(mxa(f,j,l)<<2)+o>>2];if((b|0)==-1){break f}while(1){b=(b<<4)+g|0;if(J[b>>2]==(f|0)&(j|0)==J[b+4>>2]){break e}b=J[b+12>>2];if((b|0)!=-1){continue}break}}g:{if((c|0)!=(n|0)){e=c+16|0;break g}b=J[d+20>>2];if((b|0)==-1){break d}b=(b<<4)+g|0;J[d+20>>2]=J[b+12>>2];e=c;c=b}J[c>>2]=f;J[c+4>>2]=j;b=K[i+8|0];J[c+12>>2]=-1;H[c+8|0]=b;f=(mxa(f,j,l)<<2)+o|0;b=J[f>>2];h:{if((b|0)==-1){J[f>>2]=c-g>>4;h=J[d+24>>2];break h}while(1){f=(b<<4)+g|0;b=J[f+12>>2];if((b|0)!=-1){continue}break}J[f+12>>2]=c-g>>4}h=h+1|0;J[d+24>>2]=h;c=e;break c}J[d+12>>2]=c;Z(144851,55629,229,9606);B()}H[b+8|0]=K[i+8|0];break c}J[d+12>>2]=c;Z(152203,55629,537,2838);B()}b=J[i+12>>2];if((b|0)!=-1){continue}break}e=J[a+4>>2]}k=k+1|0;if(k>>>0>>0){continue}break}J[d+12>>2]=c}cj(m);cj(J[a+8>>2]);b=J[d+28>>2];J[a+24>>2]=J[d+24>>2];J[a+28>>2]=b;b=J[d+20>>2];J[a+16>>2]=J[d+16>>2];J[a+20>>2]=b;b=J[d+12>>2];J[a+8>>2]=J[d+8>>2];J[a+12>>2]=b;b=J[d+4>>2];J[a>>2]=J[d>>2];J[a+4>>2]=b}Ui=d+32|0;return}Z(144759,55629,159,2284);B()}Z(94750,55629,158,2284);B()}function MK(a,b,c,d,e){var f=0,g=0,h=0,i=0,j=0,k=0;i=Ui-1056|0;Ui=i;J[i+1048>>2]=c;J[i+1052>>2]=d;a:{b:{h=J[a>>2];f=J[h+24>>2];c:{if((f|0)==((J[h+16>>2]-J[h+8>>2]|0)/56|0)){J[i>>2]=f;J[i+4>>2]=J[55821];dj(4,96538,125436,i);a=-11;break c}if(!J[e+8>>2]){break b}if(J[e+28>>2]!=1){break a}d:{e:{f:{g:{h:{k=J[h+16>>2];j=J[h+8>>2];if(J[h+24>>2]!=((k-j|0)/56|0)){f=J[h+4>>2];i:{if(!f){break i}g=J[J[h>>2]+(mxa(c,d,f)<<2)>>2];if((g|0)==-1){break i}while(1){f=P(g,56)+j|0;if((c|0)==J[f>>2]&(d|0)==J[f+4>>2]){break h}g=J[f+48>>2];if((g|0)!=-1){continue}break}}f=J[h+12>>2];j:{if((k|0)!=(f|0)){J[h+12>>2]=f+56;break j}f=J[h+20>>2];if((f|0)==-1){break g}f=P(f,56)+j|0;J[h+20>>2]=J[f+48>>2]}J[f>>2]=c;J[f+4>>2]=d;g=J[e+4>>2];J[f+8>>2]=J[e>>2];J[f+12>>2]=g;g=J[e+12>>2];J[f+16>>2]=J[e+8>>2];J[f+20>>2]=g;g=J[e+20>>2];J[f+24>>2]=J[e+16>>2];J[f+28>>2]=g;g=J[e+28>>2];J[f+32>>2]=J[e+24>>2];J[f+36>>2]=g;g=J[e+36>>2];J[f+40>>2]=J[e+32>>2];J[f+44>>2]=g;J[f+48>>2]=-1;j=J[h+8>>2];c=J[h>>2]+(mxa(c,d,J[h+4>>2])<<2)|0;g=J[c>>2];if((g|0)==-1){break f}while(1){c=j+P(g,56)|0;g=J[c+48>>2];if((g|0)!=-1){continue}break}J[c+48>>2]=(f-j|0)/56;break e}Z(144851,55629,229,9606);B()}c=J[e+4>>2];J[f+8>>2]=J[e>>2];J[f+12>>2]=c;c=J[e+36>>2];J[f+40>>2]=J[e+32>>2];J[f+44>>2]=c;c=J[e+28>>2];J[f+32>>2]=J[e+24>>2];J[f+36>>2]=c;c=J[e+20>>2];J[f+24>>2]=J[e+16>>2];J[f+28>>2]=c;c=J[e+12>>2];J[f+16>>2]=J[e+8>>2];J[f+20>>2]=c;break d}Z(152203,55629,537,2838);B()}J[c>>2]=(f-j|0)/56}J[h+24>>2]=J[h+24>>2]+1}eN(J[a+4>>2],J[e+8>>2],i+1048|0);if(J[a+8>>2]){c=b;b=i+16|0;ip(c,b);c=J[a+8>>2];d=J[i+1052>>2];f=J[i+1048>>2];J[i+12>>2]=Gk(b);pl(c,f,d,i+12|0)}d=L[a+8424>>1];b=d+1|0;c=(b&65535)!=(b|0);I[a+8424>>1]=c?1:b;I[e+32>>1]=c?1:d;a=0}Ui=i+1056|0;return a}Z(69944,42212,1054,69793);B()}Z(110731,42212,1055,69793);B()}function IQ(a,b){var c=0,d=0,e=0,f=0,g=0,h=0,i=0,j=0,k=0,l=0,m=0;c=Ui-96|0;Ui=c;m=pj(c,a,1,36518,78);J[c+88>>2]=0;J[c+92>>2]=0;J[c+80>>2]=0;J[c+84>>2]=0;J[c+72>>2]=0;J[c+76>>2]=0;J[c+64>>2]=0;J[c+68>>2]=0;J[c+56>>2]=0;J[c+60>>2]=0;J[c+48>>2]=0;J[c+52>>2]=0;J[c+40>>2]=0;J[c+44>>2]=0;J[c+32>>2]=0;J[c+36>>2]=0;g=c+32|0;Sk(a,1,g,0);$l(a,c- -64|0);a:{b:{h=J[J[pk(a)+80>>2]+8>>2];i=xk(h,J[c+48>>2],J[c+52>>2]);if(i){I[c+30>>1]=0;d=J[c+56>>2];k=J[c+60>>2];c:{if(i){e=J[i+84>>2];j=J[e+4>>2];if(j){l=J[e>>2];while(1){e=P(f,96)+l|0;if(J[e>>2]==(d|0)&J[e+4>>2]==(k|0)){I[c+30>>1]=f;break c}f=f+1|0;if((j|0)!=(f|0)){continue}break}}break c}Z(111337,38296,2087,5449);B()}J[c+24>>2]=0;J[c+20>>2]=0;Al(a,1,h,80447,c+24|0,g,c+20|0);k=J[J[i+80>>2]>>2];d=J[i+96>>2];j=J[i+100>>2];l=L[c+30>>1];f=0;h=J[c+20>>2];e=J[h>>2];d:{if((e|0)!=J[h+4>>2]){while(1){g=P(f,144)+e|0;e=J[g+40>>2];if(!(J[e+96>>2]!=(d|0)|J[e+100>>2]!=(j|0)|(l|0)!=L[g+56>>1])){d=J[g+136>>2];if(!d){d=J[J[J[g+32>>2]>>2]>>2]}d=bj(d);e=Yi;break d}f=f+1|0;e=J[h>>2];if(f>>>0<(J[h+4>>2]-e|0)/144>>>0){continue}break}}d=0;e=0}if(d|e){break b}}a=Jj(m,115258,0);break a}Fj(a,0,0);J[c+36>>2]=1;J[c+32>>2]=a;H[c+73|0]=0;H[c+74|0]=1;H[c+72|0]=b;J[c+64>>2]=d;J[c+68>>2]=e;d=Ui-32|0;Ui=d;J[d+28>>2]=c+32;J[d+24>>2]=646;b=c- -64|0;a=J[b+4>>2];J[d+8>>2]=J[b>>2];J[d+12>>2]=a;H[d+16|0]=K[b+8|0];H[d+17|0]=K[b+9|0];H[d+18|0]=K[b+10|0];b=J[k+8408>>2];a=Ui-48|0;Ui=a;J[a+16>>2]=0;J[a+20>>2]=0;J[a+24>>2]=0;J[a+28>>2]=0;J[a+8>>2]=0;J[a+12>>2]=0;J[a>>2]=0;J[a+4>>2]=0;J[a+40>>2]=d+24;J[a+36>>2]=180;J[a+32>>2]=b;J[a+20>>2]=-1;H[a+45|0]=K[d+17|0];H[a+44|0]=K[d+16|0];H[a+46|0]=K[d+18|0];AK(a,J[d+8>>2],J[d+12>>2]);e:{if(H[a+28|0]&1){break e}b=J[a+8>>2];if(b){cj(b)}b=J[a>>2];if(!b){break e}cj(b)}Ui=a+48|0;Ui=d+32|0;a=1}oj(m);Ui=c+96|0;return a}function FN(a,b,c){var d=0,e=0,f=0,g=0,h=0,i=0,j=0,k=0,l=0,m=0,n=0,o=0;d=Ui-32|0;Ui=d;a:{switch(b+1|0){case 1:Z(112335,55629,156,2284);B();case 0:Z(94770,55629,157,2284);B();default:break a}}if((c|0)!=-1){e=J[a+8>>2];if((J[a+16>>2]-e|0)/280>>>0<=c>>>0){b:{if(!e){J[a+4>>2]=b;b=b<<2;e=sj(b);J[a>>2]=e;ij(e,255,b);c=P(c,280);b=sj(c);J[a+12>>2]=b;J[a+8>>2]=b;J[a+16>>2]=b+c;break b}J[d+16>>2]=0;J[d+20>>2]=0;J[d+24>>2]=0;J[d+28>>2]=0;J[d+8>>2]=0;J[d+12>>2]=0;J[d>>2]=0;J[d+4>>2]=0;J[d+20>>2]=-1;FN(d,b,c);e=J[a+4>>2];if(e){l=J[d+16>>2];g=J[d+8>>2];o=(l-g|0)/280|0;c=J[d+12>>2];while(1){b=J[J[a>>2]+(i<<2)>>2];if((b|0)!=-1){h=J[d+24>>2];m=J[d>>2];while(1){c:{d:{e:{if((h|0)!=(o|0)){j=J[a+8>>2]+P(b,280)|0;n=j+8|0;f=J[j>>2];k=J[d+4>>2];f:{if(!k){break f}b=J[((f>>>0)%(k>>>0)<<2)+m>>2];if((b|0)==-1){break f}while(1){b=P(b,280)+g|0;if((f|0)==J[b>>2]){break e}b=J[b+272>>2];if((b|0)!=-1){continue}break}}g:{if((c|0)!=(l|0)){e=c+280|0;break g}b=J[d+20>>2];if((b|0)==-1){break d}b=P(b,280)+g|0;J[d+20>>2]=J[b+272>>2];e=c;c=b}J[c>>2]=f;hj(c+8|0,n,264);J[c+272>>2]=-1;f=((f>>>0)%(k>>>0)<<2)+m|0;b=J[f>>2];h:{if((b|0)==-1){J[f>>2]=(c-g|0)/280;h=J[d+24>>2];break h}while(1){f=P(b,280)+g|0;b=J[f+272>>2];if((b|0)!=-1){continue}break}J[f+272>>2]=(c-g|0)/280}h=h+1|0;J[d+24>>2]=h;c=e;break c}J[d+12>>2]=c;Z(144851,55629,229,9606);B()}hj(b+8|0,n,264);break c}J[d+12>>2]=c;Z(152203,55629,537,2838);B()}b=J[j+272>>2];if((b|0)!=-1){continue}break}e=J[a+4>>2]}i=i+1|0;if(i>>>0>>0){continue}break}J[d+12>>2]=c}cj(J[a>>2]);cj(J[a+8>>2]);b=J[d+28>>2];J[a+24>>2]=J[d+24>>2];J[a+28>>2]=b;b=J[d+20>>2];J[a+16>>2]=J[d+16>>2];J[a+20>>2]=b;b=J[d+12>>2];J[a+8>>2]=J[d+8>>2];J[a+12>>2]=b;b=J[d+4>>2];J[a>>2]=J[d>>2];J[a+4>>2]=b}Ui=d+32|0;return}Z(144759,55629,159,2284);B()}Z(94750,55629,158,2284);B()}function zN(a,b,c){var d=0,e=0,f=0,g=0,h=0,i=0,j=0,k=0,l=0,m=0,n=0,o=0,p=0,q=0,r=0;d=Ui-32|0;Ui=d;a:{switch(b+1|0){case 1:Z(112335,55629,156,2284);B();case 0:Z(94770,55629,157,2284);B();default:break a}}if((c|0)!=-1){f=J[a+8>>2];if(J[a+16>>2]-f>>4>>>0<=c>>>0){b:{if(!f){J[a+4>>2]=b;b=b<<2;f=sj(b);J[a>>2]=f;ij(f,255,b);c=c<<4;b=sj(c);J[a+12>>2]=b;J[a+8>>2]=b;J[a+16>>2]=b+c;break b}J[d+16>>2]=0;J[d+20>>2]=0;J[d+24>>2]=0;J[d+28>>2]=0;J[d+8>>2]=0;J[d+12>>2]=0;J[d>>2]=0;J[d+4>>2]=0;J[d+20>>2]=-1;zN(d,b,c);n=J[a>>2];c=J[a+4>>2];if(c){o=J[d+16>>2];g=J[d+8>>2];q=o-g>>4;r=J[a+8>>2];i=J[d+12>>2];while(1){b=J[(l<<2)+n>>2];if((b|0)!=-1){h=J[d+24>>2];p=J[d>>2];c=i;while(1){c:{d:{e:{if((h|0)!=(q|0)){j=(b<<4)+r|0;b=j;e=J[b>>2];k=J[b+4>>2];m=J[d+4>>2];f:{if(!m){break f}b=J[(mxa(e,k,m)<<2)+p>>2];if((b|0)==-1){break f}while(1){b=(b<<4)+g|0;if(J[b>>2]==(e|0)&(k|0)==J[b+4>>2]){break e}b=J[b+12>>2];if((b|0)!=-1){continue}break}}g:{if((c|0)!=(o|0)){i=c+16|0;J[d+12>>2]=i;f=i;break g}b=J[d+20>>2];if((b|0)==-1){break d}b=(b<<4)+g|0;J[d+20>>2]=J[b+12>>2];f=c;c=b}J[c>>2]=e;J[c+4>>2]=k;b=J[j+8>>2];J[c+12>>2]=-1;J[c+8>>2]=b;e=(mxa(e,k,m)<<2)+p|0;b=J[e>>2];h:{if((b|0)==-1){J[e>>2]=c-g>>4;h=J[d+24>>2];break h}while(1){e=(b<<4)+g|0;b=J[e+12>>2];if((b|0)!=-1){continue}break}J[e+12>>2]=c-g>>4}h=h+1|0;J[d+24>>2]=h;c=f;break c}Z(144851,55629,229,9606);B()}J[b+8>>2]=J[j+8>>2];break c}Z(152203,55629,537,2838);B()}b=J[j+12>>2];if((b|0)!=-1){continue}break}c=J[a+4>>2]}l=l+1|0;if(l>>>0>>0){continue}break}}cj(n);cj(J[a+8>>2]);b=J[d+28>>2];J[a+24>>2]=J[d+24>>2];J[a+28>>2]=b;b=J[d+20>>2];J[a+16>>2]=J[d+16>>2];J[a+20>>2]=b;b=J[d+12>>2];J[a+8>>2]=J[d+8>>2];J[a+12>>2]=b;b=J[d+4>>2];J[a>>2]=J[d>>2];J[a+4>>2]=b}Ui=d+32|0;return}Z(144759,55629,159,2284);B()}Z(94750,55629,158,2284);B()}function yN(a,b,c){var d=0,e=0,f=0,g=0,h=0,i=0,j=0,k=0,l=0,m=0,n=0,o=0,p=0,q=0,r=0;d=Ui-32|0;Ui=d;a:{switch(b+1|0){case 1:Z(112335,55629,156,2284);B();case 0:Z(94770,55629,157,2284);B();default:break a}}if((c|0)!=-1){f=J[a+8>>2];if(J[a+16>>2]-f>>4>>>0<=c>>>0){b:{if(!f){J[a+4>>2]=b;b=b<<2;f=sj(b);J[a>>2]=f;ij(f,255,b);c=c<<4;b=sj(c);J[a+12>>2]=b;J[a+8>>2]=b;J[a+16>>2]=b+c;break b}J[d+16>>2]=0;J[d+20>>2]=0;J[d+24>>2]=0;J[d+28>>2]=0;J[d+8>>2]=0;J[d+12>>2]=0;J[d>>2]=0;J[d+4>>2]=0;J[d+20>>2]=-1;yN(d,b,c);n=J[a>>2];c=J[a+4>>2];if(c){o=J[d+16>>2];g=J[d+8>>2];q=o-g>>4;r=J[a+8>>2];i=J[d+12>>2];while(1){b=J[(l<<2)+n>>2];if((b|0)!=-1){h=J[d+24>>2];p=J[d>>2];c=i;while(1){c:{d:{e:{if((h|0)!=(q|0)){j=(b<<4)+r|0;b=j;e=J[b>>2];k=J[b+4>>2];m=J[d+4>>2];f:{if(!m){break f}b=J[(mxa(e,k,m)<<2)+p>>2];if((b|0)==-1){break f}while(1){b=(b<<4)+g|0;if(J[b>>2]==(e|0)&(k|0)==J[b+4>>2]){break e}b=J[b+12>>2];if((b|0)!=-1){continue}break}}g:{if((c|0)!=(o|0)){i=c+16|0;J[d+12>>2]=i;f=i;break g}b=J[d+20>>2];if((b|0)==-1){break d}b=(b<<4)+g|0;J[d+20>>2]=J[b+12>>2];f=c;c=b}J[c>>2]=e;J[c+4>>2]=k;b=J[j+8>>2];J[c+12>>2]=-1;J[c+8>>2]=b;e=(mxa(e,k,m)<<2)+p|0;b=J[e>>2];h:{if((b|0)==-1){J[e>>2]=c-g>>4;h=J[d+24>>2];break h}while(1){e=(b<<4)+g|0;b=J[e+12>>2];if((b|0)!=-1){continue}break}J[e+12>>2]=c-g>>4}h=h+1|0;J[d+24>>2]=h;c=f;break c}Z(144851,55629,229,9606);B()}J[b+8>>2]=J[j+8>>2];break c}Z(152203,55629,537,2838);B()}b=J[j+12>>2];if((b|0)!=-1){continue}break}c=J[a+4>>2]}l=l+1|0;if(l>>>0>>0){continue}break}}cj(n);cj(J[a+8>>2]);b=J[d+28>>2];J[a+24>>2]=J[d+24>>2];J[a+28>>2]=b;b=J[d+20>>2];J[a+16>>2]=J[d+16>>2];J[a+20>>2]=b;b=J[d+12>>2];J[a+8>>2]=J[d+8>>2];J[a+12>>2]=b;b=J[d+4>>2];J[a>>2]=J[d>>2];J[a+4>>2]=b}Ui=d+32|0;return}Z(144759,55629,159,2284);B()}Z(94750,55629,158,2284);B()}function xN(a,b,c){var d=0,e=0,f=0,g=0,h=0,i=0,j=0,k=0,l=0,m=0,n=0,o=0,p=0,q=0,r=0;d=Ui-32|0;Ui=d;a:{switch(b+1|0){case 1:Z(112335,55629,156,2284);B();case 0:Z(94770,55629,157,2284);B();default:break a}}if((c|0)!=-1){f=J[a+8>>2];if(J[a+16>>2]-f>>4>>>0<=c>>>0){b:{if(!f){J[a+4>>2]=b;b=b<<2;f=sj(b);J[a>>2]=f;ij(f,255,b);c=c<<4;b=sj(c);J[a+12>>2]=b;J[a+8>>2]=b;J[a+16>>2]=b+c;break b}J[d+16>>2]=0;J[d+20>>2]=0;J[d+24>>2]=0;J[d+28>>2]=0;J[d+8>>2]=0;J[d+12>>2]=0;J[d>>2]=0;J[d+4>>2]=0;J[d+20>>2]=-1;xN(d,b,c);n=J[a>>2];c=J[a+4>>2];if(c){o=J[d+16>>2];g=J[d+8>>2];q=o-g>>4;r=J[a+8>>2];i=J[d+12>>2];while(1){b=J[(l<<2)+n>>2];if((b|0)!=-1){h=J[d+24>>2];p=J[d>>2];c=i;while(1){c:{d:{e:{if((h|0)!=(q|0)){j=(b<<4)+r|0;b=j;e=J[b>>2];k=J[b+4>>2];m=J[d+4>>2];f:{if(!m){break f}b=J[(mxa(e,k,m)<<2)+p>>2];if((b|0)==-1){break f}while(1){b=(b<<4)+g|0;if(J[b>>2]==(e|0)&(k|0)==J[b+4>>2]){break e}b=J[b+12>>2];if((b|0)!=-1){continue}break}}g:{if((c|0)!=(o|0)){i=c+16|0;J[d+12>>2]=i;f=i;break g}b=J[d+20>>2];if((b|0)==-1){break d}b=(b<<4)+g|0;J[d+20>>2]=J[b+12>>2];f=c;c=b}J[c>>2]=e;J[c+4>>2]=k;b=J[j+8>>2];J[c+12>>2]=-1;J[c+8>>2]=b;e=(mxa(e,k,m)<<2)+p|0;b=J[e>>2];h:{if((b|0)==-1){J[e>>2]=c-g>>4;h=J[d+24>>2];break h}while(1){e=(b<<4)+g|0;b=J[e+12>>2];if((b|0)!=-1){continue}break}J[e+12>>2]=c-g>>4}h=h+1|0;J[d+24>>2]=h;c=f;break c}Z(144851,55629,229,9606);B()}J[b+8>>2]=J[j+8>>2];break c}Z(152203,55629,537,2838);B()}b=J[j+12>>2];if((b|0)!=-1){continue}break}c=J[a+4>>2]}l=l+1|0;if(l>>>0>>0){continue}break}}cj(n);cj(J[a+8>>2]);b=J[d+28>>2];J[a+24>>2]=J[d+24>>2];J[a+28>>2]=b;b=J[d+20>>2];J[a+16>>2]=J[d+16>>2];J[a+20>>2]=b;b=J[d+12>>2];J[a+8>>2]=J[d+8>>2];J[a+12>>2]=b;b=J[d+4>>2];J[a>>2]=J[d>>2];J[a+4>>2]=b}Ui=d+32|0;return}Z(144759,55629,159,2284);B()}Z(94750,55629,158,2284);B()}function wN(a,b,c){var d=0,e=0,f=0,g=0,h=0,i=0,j=0,k=0,l=0,m=0,n=0,o=0,p=0,q=0,r=0;d=Ui-32|0;Ui=d;a:{switch(b+1|0){case 1:Z(112335,55629,156,2284);B();case 0:Z(94770,55629,157,2284);B();default:break a}}if((c|0)!=-1){f=J[a+8>>2];if(J[a+16>>2]-f>>4>>>0<=c>>>0){b:{if(!f){J[a+4>>2]=b;b=b<<2;f=sj(b);J[a>>2]=f;ij(f,255,b);c=c<<4;b=sj(c);J[a+12>>2]=b;J[a+8>>2]=b;J[a+16>>2]=b+c;break b}J[d+16>>2]=0;J[d+20>>2]=0;J[d+24>>2]=0;J[d+28>>2]=0;J[d+8>>2]=0;J[d+12>>2]=0;J[d>>2]=0;J[d+4>>2]=0;J[d+20>>2]=-1;wN(d,b,c);n=J[a>>2];c=J[a+4>>2];if(c){o=J[d+16>>2];g=J[d+8>>2];q=o-g>>4;r=J[a+8>>2];i=J[d+12>>2];while(1){b=J[(l<<2)+n>>2];if((b|0)!=-1){h=J[d+24>>2];p=J[d>>2];c=i;while(1){c:{d:{e:{if((h|0)!=(q|0)){j=(b<<4)+r|0;b=j;e=J[b>>2];k=J[b+4>>2];m=J[d+4>>2];f:{if(!m){break f}b=J[(mxa(e,k,m)<<2)+p>>2];if((b|0)==-1){break f}while(1){b=(b<<4)+g|0;if(J[b>>2]==(e|0)&(k|0)==J[b+4>>2]){break e}b=J[b+12>>2];if((b|0)!=-1){continue}break}}g:{if((c|0)!=(o|0)){i=c+16|0;J[d+12>>2]=i;f=i;break g}b=J[d+20>>2];if((b|0)==-1){break d}b=(b<<4)+g|0;J[d+20>>2]=J[b+12>>2];f=c;c=b}J[c>>2]=e;J[c+4>>2]=k;b=J[j+8>>2];J[c+12>>2]=-1;J[c+8>>2]=b;e=(mxa(e,k,m)<<2)+p|0;b=J[e>>2];h:{if((b|0)==-1){J[e>>2]=c-g>>4;h=J[d+24>>2];break h}while(1){e=(b<<4)+g|0;b=J[e+12>>2];if((b|0)!=-1){continue}break}J[e+12>>2]=c-g>>4}h=h+1|0;J[d+24>>2]=h;c=f;break c}Z(144851,55629,229,9606);B()}J[b+8>>2]=J[j+8>>2];break c}Z(152203,55629,537,2838);B()}b=J[j+12>>2];if((b|0)!=-1){continue}break}c=J[a+4>>2]}l=l+1|0;if(l>>>0>>0){continue}break}}cj(n);cj(J[a+8>>2]);b=J[d+28>>2];J[a+24>>2]=J[d+24>>2];J[a+28>>2]=b;b=J[d+20>>2];J[a+16>>2]=J[d+16>>2];J[a+20>>2]=b;b=J[d+12>>2];J[a+8>>2]=J[d+8>>2];J[a+12>>2]=b;b=J[d+4>>2];J[a>>2]=J[d>>2];J[a+4>>2]=b}Ui=d+32|0;return}Z(144759,55629,159,2284);B()}Z(94750,55629,158,2284);B()}function qN(a,b,c){var d=0,e=0,f=0,g=0,h=0,i=0,j=0,k=0,l=0,m=0,n=0,o=0,p=0,q=0,r=0;d=Ui-32|0;Ui=d;a:{switch(b+1|0){case 1:Z(112335,55629,156,2284);B();case 0:Z(94770,55629,157,2284);B();default:break a}}if((c|0)!=-1){f=J[a+8>>2];if(J[a+16>>2]-f>>4>>>0<=c>>>0){b:{if(!f){J[a+4>>2]=b;b=b<<2;f=sj(b);J[a>>2]=f;ij(f,255,b);c=c<<4;b=sj(c);J[a+12>>2]=b;J[a+8>>2]=b;J[a+16>>2]=b+c;break b}J[d+16>>2]=0;J[d+20>>2]=0;J[d+24>>2]=0;J[d+28>>2]=0;J[d+8>>2]=0;J[d+12>>2]=0;J[d>>2]=0;J[d+4>>2]=0;J[d+20>>2]=-1;qN(d,b,c);n=J[a>>2];c=J[a+4>>2];if(c){o=J[d+16>>2];g=J[d+8>>2];q=o-g>>4;r=J[a+8>>2];i=J[d+12>>2];while(1){b=J[(l<<2)+n>>2];if((b|0)!=-1){h=J[d+24>>2];p=J[d>>2];c=i;while(1){c:{d:{e:{if((h|0)!=(q|0)){j=(b<<4)+r|0;b=j;e=J[b>>2];k=J[b+4>>2];m=J[d+4>>2];f:{if(!m){break f}b=J[(mxa(e,k,m)<<2)+p>>2];if((b|0)==-1){break f}while(1){b=(b<<4)+g|0;if(J[b>>2]==(e|0)&(k|0)==J[b+4>>2]){break e}b=J[b+12>>2];if((b|0)!=-1){continue}break}}g:{if((c|0)!=(o|0)){i=c+16|0;J[d+12>>2]=i;f=i;break g}b=J[d+20>>2];if((b|0)==-1){break d}b=(b<<4)+g|0;J[d+20>>2]=J[b+12>>2];f=c;c=b}J[c>>2]=e;J[c+4>>2]=k;b=J[j+8>>2];J[c+12>>2]=-1;J[c+8>>2]=b;e=(mxa(e,k,m)<<2)+p|0;b=J[e>>2];h:{if((b|0)==-1){J[e>>2]=c-g>>4;h=J[d+24>>2];break h}while(1){e=(b<<4)+g|0;b=J[e+12>>2];if((b|0)!=-1){continue}break}J[e+12>>2]=c-g>>4}h=h+1|0;J[d+24>>2]=h;c=f;break c}Z(144851,55629,229,9606);B()}J[b+8>>2]=J[j+8>>2];break c}Z(152203,55629,537,2838);B()}b=J[j+12>>2];if((b|0)!=-1){continue}break}c=J[a+4>>2]}l=l+1|0;if(l>>>0>>0){continue}break}}cj(n);cj(J[a+8>>2]);b=J[d+28>>2];J[a+24>>2]=J[d+24>>2];J[a+28>>2]=b;b=J[d+20>>2];J[a+16>>2]=J[d+16>>2];J[a+20>>2]=b;b=J[d+12>>2];J[a+8>>2]=J[d+8>>2];J[a+12>>2]=b;b=J[d+4>>2];J[a>>2]=J[d>>2];J[a+4>>2]=b}Ui=d+32|0;return}Z(144759,55629,159,2284);B()}Z(94750,55629,158,2284);B()}function YB(a,b,c){var d=0,e=0,f=0,g=0,h=0,i=0,j=0,k=0,l=0;g=Ui-1072|0;Ui=g;d=-1;a:{if(!b){break a}e=Ui-16|0;Ui=e;d=K[b|0];if((d|0)==47){d=0}else{b:{if(!d){dj(4,96538,53119,0);break b}J[e>>2]=b;dj(4,96538,136662,e)}d=-3}Ui=e+16|0;if(d){break a}h=yj(b);if(h>>>0>=1024){J[g>>2]=b;dj(4,96538,136790,g);d=-1;break a}J[c+16>>2]=Ul(b,h);J[c+20>>2]=Yi;e=ul(b,46);c:{d:{if(!e){J[g+16>>2]=b;dj(3,96538,120886,g+16|0);break d}d=QK(J[a+163896>>2],e+1|0);if(d){if(J[d+20>>2]){break c}Z(45631,40201,231,64656);B()}J[g+36>>2]=e;J[g+32>>2]=b;dj(4,96538,29487,g+32|0)}d=0}J[c+8>>2]=d;d=g+48|0;j=ip(b,d);J[c+24>>2]=Ul(d,j);J[c+28>>2]=Yi;while(1){d=J[a+88104>>2];J[a+88104>>2]=d?d:1;if(d){continue}break}i=a+16|0;e=J[c+16>>2];k=J[c+20>>2];e:{f:{g:{h:{i:{j:{f=J[a+20>>2];k:{if(!f){break k}d=J[J[i>>2]+(mxa(e,k,f)<<2)>>2];if((d|0)==-1){break k}l=J[a+24>>2];while(1){d=(d<<4)+l|0;if((e|0)==J[d>>2]&(k|0)==J[d+4>>2]){break j}d=J[d+12>>2];if((d|0)!=-1){continue}break}}l:{if(J[a+40>>2]==J[a+32>>2]-J[a+24>>2]>>4){break l}d=J[a+88100>>2];if((d+h|0)-61440>>>0<4294905855){break l}d=(a+d|0)+26660|0;f=b;b=h+1|0;ek(d,f,b);pl(i,e,k,a+88100|0);J[a+88100>>2]=b+J[a+88100>>2];f=J[a+20>>2];break i}J[c>>2]=0;break h}d=(J[d+8>>2]+a|0)+26660|0}J[c>>2]=d;b=J[c+24>>2];e=J[c+28>>2];m:{if(!f){break m}d=J[J[i>>2]+(mxa(b,e,f)<<2)>>2];if((d|0)==-1){break m}f=J[a+24>>2];while(1){d=f+(d<<4)|0;if((b|0)==J[d>>2]&(e|0)==J[d+4>>2]){break g}d=J[d+12>>2];if((d|0)!=-1){continue}break}}n:{if(J[a+40>>2]==J[a+32>>2]-J[a+24>>2]>>4){break n}d=J[a+88100>>2];if((d+j|0)-61440>>>0<4294905855){break n}d=(a+d|0)+26660|0;f=j+1|0;ek(d,g+48|0,f);pl(i,b,e,a+88100|0);J[a+88100>>2]=f+J[a+88100>>2];break f}J[c+4>>2]=0}J[a+88104>>2]=0;d=-8;break e}d=(J[d+8>>2]+a|0)+26660|0}J[c+4>>2]=d;d=0}J[a+88104>>2]=0}Ui=g+1072|0;return d}function Rp(a,b,c){var d=0,e=0,f=0,g=0,h=0,i=0,j=0,k=0,l=0,m=0,n=0,o=0,p=0,q=0,r=0;d=Ui-32|0;Ui=d;a:{switch(b+1|0){case 1:Z(112335,55629,156,2284);B();case 0:Z(94770,55629,157,2284);B();default:break a}}if((c|0)!=-1){f=J[a+8>>2];if(J[a+16>>2]-f>>4>>>0<=c>>>0){b:{if(!f){J[a+4>>2]=b;b=b<<2;f=sj(b);J[a>>2]=f;ij(f,255,b);c=c<<4;b=sj(c);J[a+12>>2]=b;J[a+8>>2]=b;J[a+16>>2]=b+c;break b}J[d+16>>2]=0;J[d+20>>2]=0;J[d+24>>2]=0;J[d+28>>2]=0;J[d+8>>2]=0;J[d+12>>2]=0;J[d>>2]=0;J[d+4>>2]=0;J[d+20>>2]=-1;Rp(d,b,c);n=J[a>>2];c=J[a+4>>2];if(c){o=J[d+16>>2];g=J[d+8>>2];q=o-g>>4;r=J[a+8>>2];i=J[d+12>>2];while(1){b=J[(l<<2)+n>>2];if((b|0)!=-1){h=J[d+24>>2];p=J[d>>2];c=i;while(1){c:{d:{e:{if((h|0)!=(q|0)){j=(b<<4)+r|0;b=j;e=J[b>>2];k=J[b+4>>2];m=J[d+4>>2];f:{if(!m){break f}b=J[(mxa(e,k,m)<<2)+p>>2];if((b|0)==-1){break f}while(1){b=(b<<4)+g|0;if(J[b>>2]==(e|0)&(k|0)==J[b+4>>2]){break e}b=J[b+12>>2];if((b|0)!=-1){continue}break}}g:{if((c|0)!=(o|0)){i=c+16|0;J[d+12>>2]=i;f=i;break g}b=J[d+20>>2];if((b|0)==-1){break d}b=(b<<4)+g|0;J[d+20>>2]=J[b+12>>2];f=c;c=b}J[c>>2]=e;J[c+4>>2]=k;b=J[j+8>>2];J[c+12>>2]=-1;J[c+8>>2]=b;e=(mxa(e,k,m)<<2)+p|0;b=J[e>>2];h:{if((b|0)==-1){J[e>>2]=c-g>>4;h=J[d+24>>2];break h}while(1){e=(b<<4)+g|0;b=J[e+12>>2];if((b|0)!=-1){continue}break}J[e+12>>2]=c-g>>4}h=h+1|0;J[d+24>>2]=h;c=f;break c}Z(144851,55629,229,9606);B()}J[b+8>>2]=J[j+8>>2];break c}Z(152203,55629,537,2838);B()}b=J[j+12>>2];if((b|0)!=-1){continue}break}c=J[a+4>>2]}l=l+1|0;if(l>>>0>>0){continue}break}}cj(n);cj(J[a+8>>2]);b=J[d+28>>2];J[a+24>>2]=J[d+24>>2];J[a+28>>2]=b;b=J[d+20>>2];J[a+16>>2]=J[d+16>>2];J[a+20>>2]=b;b=J[d+12>>2];J[a+8>>2]=J[d+8>>2];J[a+12>>2]=b;b=J[d+4>>2];J[a>>2]=J[d>>2];J[a+4>>2]=b}Ui=d+32|0;return}Z(144759,55629,159,2284);B()}Z(94750,55629,158,2284);B()}function QC(a,b,c){var d=0,e=0,f=0,g=0,h=0,i=0,j=0,k=0,l=0,m=0,n=0,o=0,p=0,q=0,r=0;d=Ui-32|0;Ui=d;a:{switch(b+1|0){case 1:Z(112335,55629,156,2284);B();case 0:Z(94770,55629,157,2284);B();default:break a}}if((c|0)!=-1){f=J[a+8>>2];if(J[a+16>>2]-f>>4>>>0<=c>>>0){b:{if(!f){J[a+4>>2]=b;b=b<<2;f=sj(b);J[a>>2]=f;ij(f,255,b);c=c<<4;b=sj(c);J[a+12>>2]=b;J[a+8>>2]=b;J[a+16>>2]=b+c;break b}J[d+16>>2]=0;J[d+20>>2]=0;J[d+24>>2]=0;J[d+28>>2]=0;J[d+8>>2]=0;J[d+12>>2]=0;J[d>>2]=0;J[d+4>>2]=0;J[d+20>>2]=-1;QC(d,b,c);n=J[a>>2];c=J[a+4>>2];if(c){o=J[d+16>>2];g=J[d+8>>2];q=o-g>>4;r=J[a+8>>2];i=J[d+12>>2];while(1){b=J[(l<<2)+n>>2];if((b|0)!=-1){h=J[d+24>>2];p=J[d>>2];c=i;while(1){c:{d:{e:{if((h|0)!=(q|0)){j=(b<<4)+r|0;b=j;e=J[b>>2];k=J[b+4>>2];m=J[d+4>>2];f:{if(!m){break f}b=J[(mxa(e,k,m)<<2)+p>>2];if((b|0)==-1){break f}while(1){b=(b<<4)+g|0;if(J[b>>2]==(e|0)&(k|0)==J[b+4>>2]){break e}b=J[b+12>>2];if((b|0)!=-1){continue}break}}g:{if((c|0)!=(o|0)){i=c+16|0;J[d+12>>2]=i;f=i;break g}b=J[d+20>>2];if((b|0)==-1){break d}b=(b<<4)+g|0;J[d+20>>2]=J[b+12>>2];f=c;c=b}J[c>>2]=e;J[c+4>>2]=k;b=J[j+8>>2];J[c+12>>2]=-1;J[c+8>>2]=b;e=(mxa(e,k,m)<<2)+p|0;b=J[e>>2];h:{if((b|0)==-1){J[e>>2]=c-g>>4;h=J[d+24>>2];break h}while(1){e=(b<<4)+g|0;b=J[e+12>>2];if((b|0)!=-1){continue}break}J[e+12>>2]=c-g>>4}h=h+1|0;J[d+24>>2]=h;c=f;break c}Z(144851,55629,229,9606);B()}J[b+8>>2]=J[j+8>>2];break c}Z(152203,55629,537,2838);B()}b=J[j+12>>2];if((b|0)!=-1){continue}break}c=J[a+4>>2]}l=l+1|0;if(l>>>0>>0){continue}break}}cj(n);cj(J[a+8>>2]);b=J[d+28>>2];J[a+24>>2]=J[d+24>>2];J[a+28>>2]=b;b=J[d+20>>2];J[a+16>>2]=J[d+16>>2];J[a+20>>2]=b;b=J[d+12>>2];J[a+8>>2]=J[d+8>>2];J[a+12>>2]=b;b=J[d+4>>2];J[a>>2]=J[d>>2];J[a+4>>2]=b}Ui=d+32|0;return}Z(144759,55629,159,2284);B()}Z(94750,55629,158,2284);B()}function aw(a,b,c,d,e){var f=0,g=0,h=0;f=Ui-16|0;Ui=f;h=Zi[J[e>>2]](b,a)|0;g=Zi[J[e>>2]](c,b)|0;a:{if(!h){if(!g){break a}J[f+8>>2]=J[b+8>>2];g=J[b+4>>2];J[f>>2]=J[b>>2];J[f+4>>2]=g;J[b+8>>2]=J[c+8>>2];g=J[c+4>>2];J[b>>2]=J[c>>2];J[b+4>>2]=g;J[c+8>>2]=J[f+8>>2];g=J[f+4>>2];J[c>>2]=J[f>>2];J[c+4>>2]=g;if(!(Zi[J[e>>2]](b,a)|0)){break a}J[f+8>>2]=J[a+8>>2];g=J[a+4>>2];J[f>>2]=J[a>>2];J[f+4>>2]=g;J[a+8>>2]=J[b+8>>2];g=J[b+4>>2];J[a>>2]=J[b>>2];J[a+4>>2]=g;J[b+8>>2]=J[f+8>>2];g=J[f+4>>2];J[b>>2]=J[f>>2];J[b+4>>2]=g;break a}if(g){J[f+8>>2]=J[a+8>>2];g=J[a+4>>2];J[f>>2]=J[a>>2];J[f+4>>2]=g;J[a+8>>2]=J[c+8>>2];g=J[c+4>>2];J[a>>2]=J[c>>2];J[a+4>>2]=g;J[c+8>>2]=J[f+8>>2];g=J[f+4>>2];J[c>>2]=J[f>>2];J[c+4>>2]=g;break a}J[f+8>>2]=J[a+8>>2];g=J[a+4>>2];J[f>>2]=J[a>>2];J[f+4>>2]=g;J[a+8>>2]=J[b+8>>2];g=J[b+4>>2];J[a>>2]=J[b>>2];J[a+4>>2]=g;J[b+8>>2]=J[f+8>>2];g=J[f+4>>2];J[b>>2]=J[f>>2];J[b+4>>2]=g;if(!(Zi[J[e>>2]](c,b)|0)){break a}J[f+8>>2]=J[b+8>>2];g=J[b+4>>2];J[f>>2]=J[b>>2];J[f+4>>2]=g;J[b+8>>2]=J[c+8>>2];g=J[c+4>>2];J[b>>2]=J[c>>2];J[b+4>>2]=g;J[c+8>>2]=J[f+8>>2];g=J[f+4>>2];J[c>>2]=J[f>>2];J[c+4>>2]=g}b:{if(!(Zi[J[e>>2]](d,c)|0)){break b}J[f+8>>2]=J[c+8>>2];g=J[c+4>>2];J[f>>2]=J[c>>2];J[f+4>>2]=g;J[c+8>>2]=J[d+8>>2];g=J[d+4>>2];J[c>>2]=J[d>>2];J[c+4>>2]=g;J[d+8>>2]=J[f+8>>2];g=J[f+4>>2];J[d>>2]=J[f>>2];J[d+4>>2]=g;if(!(Zi[J[e>>2]](c,b)|0)){break b}J[f+8>>2]=J[b+8>>2];d=J[b+4>>2];J[f>>2]=J[b>>2];J[f+4>>2]=d;J[b+8>>2]=J[c+8>>2];d=J[c+4>>2];J[b>>2]=J[c>>2];J[b+4>>2]=d;J[c+8>>2]=J[f+8>>2];d=J[f+4>>2];J[c>>2]=J[f>>2];J[c+4>>2]=d;if(!(Zi[J[e>>2]](b,a)|0)){break b}J[f+8>>2]=J[a+8>>2];c=J[a+4>>2];J[f>>2]=J[a>>2];J[f+4>>2]=c;J[a+8>>2]=J[b+8>>2];c=J[b+4>>2];J[a>>2]=J[b>>2];J[a+4>>2]=c;J[b+8>>2]=J[f+8>>2];a=J[f+4>>2];J[b>>2]=J[f>>2];J[b+4>>2]=a}Ui=f+16|0} +function Wx(a,b,c){var d=0,e=0,f=0,g=0,h=0,i=0,j=0,k=0;d=Ui-32|0;Ui=d;a:{switch(b+1|0){case 1:Z(112335,55689,156,2284);B();case 0:Z(94770,55689,157,2284);B();default:break a}}if((c|0)!=-1){e=J[a+8>>2];if((J[a+16>>2]-e|0)/24>>>0<=c>>>0){b:{if(!e){J[a+4>>2]=b;b=b<<2;e=sj(b);J[a>>2]=e;ij(e,255,b);c=P(c,24);b=sj(c);J[a+12>>2]=b;J[a+8>>2]=b;J[a+16>>2]=b+c;break b}J[d+16>>2]=0;J[d+20>>2]=0;J[d+24>>2]=0;J[d+28>>2]=0;J[d+8>>2]=0;J[d+12>>2]=0;J[d>>2]=0;J[d+4>>2]=0;J[d+20>>2]=-1;Wx(d,b,c);c=J[a+4>>2];if(c){while(1){b=J[J[a>>2]+(i<<2)>>2];if((b|0)!=-1){while(1){c:{d:{e:{k=J[d+16>>2];f=J[d+8>>2];if(J[d+24>>2]!=((k-f|0)/24|0)){g=J[a+8>>2]+P(b,24)|0;b=g;c=J[b>>2];h=J[b+4>>2];j=J[d+4>>2];f:{if(!j){break f}b=J[J[d>>2]+(mxa(c,h,j)<<2)>>2];if((b|0)==-1){break f}while(1){b=f+P(b,24)|0;if(J[b>>2]==(c|0)&(h|0)==J[b+4>>2]){break e}b=J[b+16>>2];if((b|0)!=-1){continue}break}}e=J[d+12>>2];g:{if((k|0)!=(e|0)){J[d+12>>2]=e+24;break g}b=J[d+20>>2];if((b|0)==-1){break d}e=f+P(b,24)|0;J[d+20>>2]=J[e+16>>2]}J[e>>2]=c;J[e+4>>2]=h;J[e+8>>2]=J[g+8>>2];I[e+12>>1]=L[g+12>>1];J[e+16>>2]=-1;f=J[d+8>>2];c=J[d>>2]+(mxa(c,h,j)<<2)|0;b=J[c>>2];h:{if((b|0)==-1){J[c>>2]=(e-f|0)/24;break h}while(1){c=f+P(b,24)|0;b=J[c+16>>2];if((b|0)!=-1){continue}break}J[c+16>>2]=(e-f|0)/24}J[d+24>>2]=J[d+24>>2]+1;break c}Z(144851,55689,229,9606);B()}J[b+8>>2]=J[g+8>>2];I[b+12>>1]=L[g+12>>1];break c}Z(152203,55689,537,2838);B()}b=J[g+16>>2];if((b|0)!=-1){continue}break}c=J[a+4>>2]}i=i+1|0;if(i>>>0>>0){continue}break}}cj(J[a>>2]);cj(J[a+8>>2]);b=J[d+28>>2];J[a+24>>2]=J[d+24>>2];J[a+28>>2]=b;b=J[d+20>>2];J[a+16>>2]=J[d+16>>2];J[a+20>>2]=b;b=J[d+12>>2];J[a+8>>2]=J[d+8>>2];J[a+12>>2]=b;b=J[d+4>>2];J[a>>2]=J[d>>2];J[a+4>>2]=b}Ui=d+32|0;return}Z(144759,55689,159,2284);B()}Z(94750,55689,158,2284);B()}function RA(a,b){var c=0,d=0,e=0,f=0,g=0,h=0,i=0,j=0;e=Ui-1088|0;Ui=e;c=J[a+8>>2]-J[a+12>>2]|0;J[e+56>>2]=0;g=(c>>4)+1|0;a:{b:{c:{d:{if(!b){mj(a,47799,6);d=J[53387];J[e+60>>2]=d;break d}J[e+48>>2]=b;ik(a,26106,e+48|0);d=ol(b,36296);J[e+60>>2]=d;if(d){break d}b=J[245744];b=L[((b>>>0<=153?b:0)<<1)+215472>>1]+213556|0;c=Ij(a,g,0);J[e+40>>2]=b;J[e+32>>2]=48067;J[e+36>>2]=c+1;ik(a,28360,e+32|0);break c}e:{c=gl(d);if((c|0)==35){J[e+56>>2]=1;f:{while(1){g:{switch(gl(d)+1|0){case 0:break g;case 11:break f;default:continue}}break}f=(b|0)!=0;c=-1;break e}c=gl(d)}f=(b|0)!=0;h=!b;if(h|(c|0)!=27){break e}f=Ui-16|0;Ui=f;i=GV(82700);c=d;$n(c);h:{i:{j:{k:{if(h){b=J[c+60>>2];d=i&-524481;J[f>>2]=d;J[f+4>>2]=d>>31;b=da(b|0,4,f|0)|0;if(b>>>0>=4294963201){J[245744]=0-b;b=-1}if((b|0)>=0){break k}break i}d=ol(b,82700);if(!d){break i}h=J[c+60>>2];j=J[d+60>>2];l:{if((h|0)==(j|0)){J[d+60>>2]=-1;break l}i=i&524288;while(1){b=Pi(j|0,h|0,i|0)|0;if((b|0)==-10){continue}break}if(b>>>0>=4294963201){J[245744]=0-b;b=-1}if((b|0)<0){break j}}J[c>>2]=J[d>>2]|J[c>>2]&1;J[c+32>>2]=J[d+32>>2];J[c+36>>2]=J[d+36>>2];J[c+40>>2]=J[d+40>>2];J[c+12>>2]=J[d+12>>2];vk(d)}J[c+136>>2]=0;J[c+72>>2]=0;break h}vk(d)}vk(c);c=0}Ui=f+16|0;d=c;J[e+60>>2]=c;if(c){while(1){c=gl(d);if((c|0)!=27&(c|0)!=-1){continue}break}J[e+56>>2]=0;f=1;break e}b=J[245744];b=L[((b>>>0<=153?b:0)<<1)+215472>>1]+213556|0;c=Ij(a,g,0);J[e+8>>2]=b;J[e>>2]=48065;J[e+4>>2]=c+1;ik(a,28360,e);break c}aG(c,d);d=LA(a,1961,e+56|0,Ij(a,-1,0));b=J[e+60>>2];m:{if(J[b+76>>2]<0){c=J[b>>2];break m}c=J[b>>2]}c=c>>>5&1;if(f){vk(b)}if(!c){break b}gj(a,g);b=J[245744];b=L[((b>>>0<=153?b:0)<<1)+215472>>1]+213556|0;c=Ij(a,g,0);J[e+24>>2]=b;J[e+16>>2]=76442;J[e+20>>2]=c+1;ik(a,28360,e+16|0)}Rl(a,g);d=6;break a}Rl(a,g)}Ui=e+1088|0;return d}function kV(a,b,c,d,e){var f=Q(0),g=Q(0),h=Q(0),i=Q(0),j=Q(0),k=Q(0),l=0,m=Q(0),n=Q(0),o=Q(0),p=0,q=Q(0),r=0,s=0,t=0;J[a+68>>2]=0;f=N[c+12>>2];g=N[e+8>>2];h=N[d+24>>2];i=N[e+12>>2];m=N[d+28>>2];n=Q(Q(Q(Q(g*h)+Q(i*m))+N[e+4>>2])-N[c+4>>2]);o=N[c+8>>2];g=Q(Q(N[e>>2]+Q(Q(i*h)-Q(g*m)))-N[c>>2]);q=Q(Q(f*n)-Q(o*g));o=Q(Q(f*g)+Q(n*o));s=b+288|0;p=b+160|0;g=Q(N[b+8>>2]+N[d+8>>2]);f=Q(-34028234663852886e22);b=J[b+416>>2];a:{b:{if((b|0)<=0){c=0;break b}c=0;e=0;while(1){l=e<<3;r=l+s|0;l=l+p|0;h=Q(Q(N[r>>2]*Q(o-N[l>>2]))+Q(Q(q-N[l+4>>2])*N[r+4>>2]));if(h>g){break a}l=f(e|0)?e:0)<<3)|0;e=J[b+4>>2];h=N[b+4>>2];l=J[b>>2];i=N[b>>2];b=p;p=c<<3;b=b+p|0;r=J[b+4>>2];m=N[b+4>>2];t=J[b>>2];n=N[b>>2];c:{if(f>2]=1;J[a+68>>2]=1;b=p+s|0;c=J[b>>2];b=J[b+4>>2];N[a+60>>2]=Q(m+h)*Q(.5);N[a+56>>2]=Q(n+i)*Q(.5);J[a+48>>2]=c;J[a+52>>2]=b;break c}j=Q(o-n);k=Q(q-m);if(Q(Q(j*Q(i-n))+Q(k*Q(h-m)))<=Q(0)){f=Q(Q(j*j)+Q(k*k));if(f>Q(g*g)){break a}J[a+64>>2]=1;J[a+68>>2]=1;N[a+52>>2]=k;N[a+48>>2]=j;f=Q(Y(f));if(!(f>2]=k*g;N[a+48>>2]=j*g}J[a+60>>2]=r;J[a+56>>2]=t;break c}j=Q(o-i);k=Q(q-h);if(Q(Q(j*Q(n-i))+Q(k*Q(m-h)))<=Q(0)){f=Q(Q(j*j)+Q(k*k));if(f>Q(g*g)){break a}J[a+64>>2]=1;J[a+68>>2]=1;N[a+52>>2]=k;N[a+48>>2]=j;f=Q(Y(f));if(!(f>2]=k*g;N[a+48>>2]=j*g}J[a+60>>2]=e;J[a+56>>2]=l;break c}i=Q(Q(n+i)*Q(.5));b=(c<<3)+s|0;h=Q(Q(m+h)*Q(.5));f=Q(Q(Q(o-i)*N[b>>2])+Q(Q(q-h)*N[b+4>>2]));if(g>2]=1;J[a+68>>2]=1;c=J[b+4>>2];b=J[b>>2];N[a+60>>2]=h;N[a+56>>2]=i;J[a+48>>2]=b;J[a+52>>2]=c}b=J[d+28>>2];c=J[d+24>>2];J[a+16>>2]=0;J[a>>2]=c;J[a+4>>2]=b;N[a+20>>2]=N[d+8>>2]-f}}function $I(a,b,c,d,e,f,g){var h=Q(0),i=Q(0),j=Q(0),k=Q(0),l=Q(0),m=Q(0),n=Q(0),o=Q(0),p=Q(0),q=Q(0),r=Q(0),s=Q(0),t=Q(0),u=Q(0),v=Q(0),w=Q(0),x=Q(0),y=Q(0),z=Q(0),A=Q(0),B=Q(0),C=Q(0),D=Q(0),E=Q(0);J[e>>2]=0;J[e+4>>2]=0;J[e+32>>2]=0;J[e+24>>2]=0;J[e+28>>2]=0;J[e+16>>2]=0;J[e+20>>2]=0;J[e+8>>2]=0;J[e+12>>2]=0;J[f+4>>2]=c;J[f>>2]=a;l=N[d+32>>2];m=N[d>>2];n=N[d+16>>2];o=N[d+36>>2];p=N[d+4>>2];q=N[d+20>>2];h=N[b+32>>2];i=N[b>>2];j=N[b+16>>2];r=N[b+36>>2];s=N[b+4>>2];t=N[b+20>>2];u=N[d+40>>2];v=N[b+40>>2];w=N[d+8>>2];x=N[b+8>>2];y=N[d+24>>2];k=N[b+24>>2];J[f+52>>2]=0;J[f+36>>2]=0;J[f+20>>2]=0;N[f+48>>2]=Q(u*v)+Q(Q(w*x)+Q(k*y));N[f+44>>2]=Q(u*r)+Q(Q(w*s)+Q(t*y));N[f+40>>2]=Q(u*h)+Q(Q(w*i)+Q(j*y));N[f+32>>2]=Q(o*v)+Q(Q(p*x)+Q(k*q));N[f+28>>2]=Q(o*r)+Q(Q(p*s)+Q(t*q));N[f+24>>2]=Q(o*h)+Q(Q(p*i)+Q(j*q));N[f+16>>2]=Q(l*v)+Q(Q(m*x)+Q(n*k));N[f+12>>2]=Q(l*r)+Q(Q(m*s)+Q(n*t));N[f+8>>2]=Q(l*h)+Q(Q(m*i)+Q(n*j));B=N[b+56>>2];z=N[d+56>>2];C=N[b+48>>2];A=N[d+48>>2];D=N[b+52>>2];E=N[d+52>>2];l=N[b+32>>2];m=N[b>>2];n=N[b+16>>2];o=N[b+36>>2];p=N[b+4>>2];q=N[b+20>>2];r=N[d+32>>2];s=N[d>>2];t=N[d+16>>2];u=N[d+36>>2];v=N[d+4>>2];w=N[d+20>>2];h=N[b+40>>2];x=N[d+40>>2];i=N[b+8>>2];y=N[d+8>>2];j=N[b+24>>2];k=N[d+24>>2];J[f+124>>2]=0;J[f+120>>2]=g?1425:1424;J[f+116>>2]=0;J[f+100>>2]=0;J[f+84>>2]=0;J[f+68>>2]=0;N[f+96>>2]=Q(h*x)+Q(Q(i*y)+Q(k*j));N[f+92>>2]=Q(h*u)+Q(Q(i*v)+Q(w*j));N[f+88>>2]=Q(h*r)+Q(Q(i*s)+Q(t*j));N[f+80>>2]=Q(o*x)+Q(Q(p*y)+Q(k*q));N[f+76>>2]=Q(o*u)+Q(Q(p*v)+Q(w*q));N[f+72>>2]=Q(o*r)+Q(Q(p*s)+Q(t*q));N[f+64>>2]=Q(l*x)+Q(Q(m*y)+Q(n*k));N[f+60>>2]=Q(l*u)+Q(Q(m*v)+Q(n*w));N[f+56>>2]=Q(l*r)+Q(Q(m*s)+Q(n*t));k=h;h=Q(z-B);z=i;i=Q(A-C);A=j;j=Q(E-D);N[f+112>>2]=Q(k*h)+Q(Q(z*i)+Q(A*j));N[f+108>>2]=Q(o*h)+Q(Q(p*i)+Q(j*q));N[f+104>>2]=Q(l*h)+Q(Q(m*i)+Q(j*n))}function gV(a,b){var c=0,d=0,e=0,f=0,g=Q(0),h=0,i=0,j=0,k=Q(0),l=0,m=Q(0);c=J[b+4>>2];J[a>>2]=J[b>>2];J[a+4>>2]=c;c=J[b+20>>2];J[a+16>>2]=J[b+16>>2];J[a+20>>2]=c;c=J[b+12>>2];J[a+8>>2]=J[b+8>>2];J[a+12>>2]=c;c=J[b+40>>2];J[a+32>>2]=c;d=J[b+28>>2];J[a+48>>2]=d;J[a+36>>2]=Tq(c,P(d,88));J[a+40>>2]=Tq(J[a+32>>2],P(J[a+48>>2],152));J[a+24>>2]=J[b+32>>2];J[a+28>>2]=J[b+36>>2];J[a+44>>2]=J[b+24>>2];a:{if(J[a+48>>2]>0){while(1){b=J[J[a+44>>2]+(h<<2)>>2];j=J[b+132>>2];if((j|0)<=0){break a}l=b- -64|0;c=J[b+48>>2];g=N[J[c+12>>2]+8>>2];d=J[b+52>>2];k=N[J[d+12>>2]+8>>2];e=J[d+8>>2];f=J[c+8>>2];c=J[a+40>>2]+P(h,152)|0;N[c+136>>2]=N[b+144>>2];N[c+140>>2]=N[b+148>>2];J[c+112>>2]=J[f+8>>2];J[c+116>>2]=J[e+8>>2];N[c+120>>2]=N[f+120>>2];N[c+124>>2]=N[e+120>>2];N[c+128>>2]=N[f+128>>2];m=N[e+128>>2];J[c+148>>2]=h;N[c+132>>2]=m;J[c+144>>2]=j;J[c+80>>2]=0;J[c+84>>2]=0;J[c+88>>2]=0;J[c+92>>2]=0;J[c+96>>2]=0;J[c+100>>2]=0;J[c+104>>2]=0;J[c+108>>2]=0;d=J[a+36>>2]+P(h,88)|0;J[d+32>>2]=J[f+8>>2];J[d+36>>2]=J[e+8>>2];N[d+40>>2]=N[f+120>>2];N[d+44>>2]=N[e+120>>2];i=J[f+32>>2];J[d+48>>2]=J[f+28>>2];J[d+52>>2]=i;i=J[e+32>>2];J[d+56>>2]=J[e+28>>2];J[d+60>>2]=i;N[d+64>>2]=N[f+128>>2];N[d+68>>2]=N[e+128>>2];e=J[b+116>>2];J[d+16>>2]=J[b+112>>2];J[d+20>>2]=e;e=J[b+124>>2];f=J[b+120>>2];J[d+84>>2]=j;J[d+24>>2]=f;J[d+28>>2]=e;N[d+80>>2]=k;N[d+76>>2]=g;J[d+72>>2]=J[b+128>>2];e=0;while(1){f=P(e,24)+l|0;g=Q(0);k=Q(0);if(K[a+20|0]==1){g=N[a+8>>2];k=Q(g*N[f+12>>2]);g=Q(g*N[f+8>>2])}b=c+P(e,36)|0;J[b+32>>2]=0;J[b+24>>2]=0;J[b+28>>2]=0;N[b+20>>2]=k;N[b+16>>2]=g;J[b>>2]=0;J[b+4>>2]=0;J[b+8>>2]=0;J[b+12>>2]=0;i=J[f+4>>2];b=d+(e<<3)|0;J[b>>2]=J[f>>2];J[b+4>>2]=i;e=e+1|0;if((j|0)!=(e|0)){continue}break}h=h+1|0;if((h|0)>2]){continue}break}}return a}Z(111852,39721,78,33171);B()}function Csa(a,b,c,d,e){a=a|0;b=b|0;c=c|0;d=d|0;e=e|0;var f=0,g=Q(0),h=Q(0),i=0,j=Q(0),k=Q(0),l=Q(0),m=Q(0),n=Q(0),o=Q(0),p=Q(0),q=Q(0),r=Q(0),s=Q(0),t=Q(0),u=Q(0),v=Q(0),w=Q(0),x=Q(0),y=Q(0),z=Q(0),A=Q(0),B=Q(0),C=Q(0),D=Q(0),E=Q(0),F=0,G=0,H=Q(0);a:{f=K[a+8|0];F=f?b:c;i=J[F+192>>2];if(J[i+4>>2]-21>>>0>8){break a}G=f?c:b;if(J[J[G+192>>2]+4>>2]>19){break a}g=Q(Zi[J[J[i>>2]+44>>2]](i));J[e+4>>2]=J[a+76>>2];c=Ui+-64|0;Ui=c;b=a+12|0;N[b+56>>2]=g;J[b+52>>2]=d;J[b+44>>2]=e;f=J[b+8>>2];s=N[f+60>>2];H=N[f+52>>2];t=N[f+56>>2];d=J[b+4>>2];u=N[d+60>>2];v=N[d+52>>2];w=N[d+56>>2];j=N[f+36>>2];k=N[f+4>>2];l=N[f+20>>2];m=N[f+40>>2];n=N[f+8>>2];o=N[f+24>>2];h=N[d+36>>2];x=N[d+4>>2];y=N[d+20>>2];z=N[d+40>>2];A=N[d+8>>2];B=N[d+24>>2];C=N[d+44>>2];p=N[f+44>>2];D=N[d+12>>2];q=N[f+12>>2];E=N[d+28>>2];r=N[f+28>>2];J[c+60>>2]=0;J[c+44>>2]=0;J[c+28>>2]=0;J[c+12>>2]=0;N[c+40>>2]=Q(C*p)+Q(Q(D*q)+Q(r*E));N[c+36>>2]=Q(z*p)+Q(Q(A*q)+Q(r*B));N[c+32>>2]=Q(h*p)+Q(Q(x*q)+Q(r*y));N[c+24>>2]=Q(C*m)+Q(Q(D*n)+Q(o*E));N[c+20>>2]=Q(z*m)+Q(Q(A*n)+Q(o*B));N[c+16>>2]=Q(h*m)+Q(Q(x*n)+Q(o*y));N[c+8>>2]=Q(C*j)+Q(Q(D*k)+Q(l*E));N[c+4>>2]=Q(z*j)+Q(Q(A*k)+Q(l*B));N[c>>2]=Q(h*j)+Q(Q(x*k)+Q(l*y));h=Q(-H);N[c+56>>2]=Q(Q(Q(q*h)-Q(r*t))-Q(p*s))+Q(Q(p*u)+Q(Q(q*v)+Q(r*w)));N[c+52>>2]=Q(Q(Q(n*h)-Q(o*t))-Q(m*s))+Q(Q(m*u)+Q(Q(n*v)+Q(o*w)));N[c+48>>2]=Q(Q(Q(k*h)-Q(l*t))-Q(j*s))+Q(Q(j*u)+Q(Q(k*v)+Q(l*w)));d=J[d+192>>2];Zi[J[J[d>>2]+8>>2]](d,c,b+12|0,b+28|0);N[b+28>>2]=g+N[b+28>>2];N[b+32>>2]=g+N[b+32>>2];N[b+36>>2]=g+N[b+36>>2];N[b+12>>2]=N[b+12>>2]-g;N[b+16>>2]=N[b+16>>2]-g;N[b+20>>2]=N[b+20>>2]-g;Ui=c- -64|0;c=J[a+76>>2];J[c+1112>>2]=F;J[c+1108>>2]=G;Zi[J[J[i>>2]+60>>2]](i,b,a+24|0,a+40|0);a=J[e+4>>2];if(!J[a+1116>>2]){break a}b=a;a=J[a+1108>>2]==J[e+136>>2];Qq(b,(a?8:72)+e|0,(a?72:8)+e|0)}}function XC(a,b,c){var d=0,e=0,f=0,g=0,h=0,i=0,j=0,k=0,l=0,m=0,n=0,o=0,p=0;d=Ui-32|0;Ui=d;a:{switch(b+1|0){case 1:Z(112335,55629,156,2284);B();case 0:Z(94770,55629,157,2284);B();default:break a}}if((c|0)!=-1){e=J[a+8>>2];if((J[a+16>>2]-e|0)/12>>>0<=c>>>0){b:{if(!e){J[a+4>>2]=b;b=b<<2;e=sj(b);J[a>>2]=e;ij(e,255,b);c=P(c,12);b=sj(c);J[a+12>>2]=b;J[a+8>>2]=b;J[a+16>>2]=b+c;break b}J[d+16>>2]=0;J[d+20>>2]=0;J[d+24>>2]=0;J[d+28>>2]=0;J[d+8>>2]=0;J[d+12>>2]=0;J[d>>2]=0;J[d+4>>2]=0;J[d+20>>2]=-1;XC(d,b,c);l=J[a>>2];e=J[a+4>>2];if(e){m=J[d+16>>2];g=J[d+8>>2];o=(m-g|0)/12|0;p=J[a+8>>2];c=J[d+12>>2];while(1){b=J[(j<<2)+l>>2];if((b|0)!=-1){h=J[d+24>>2];n=J[d>>2];while(1){c:{d:{e:{if((h|0)!=(o|0)){i=P(b,12)+p|0;f=J[i>>2];k=J[d+4>>2];f:{if(!k){break f}b=J[((f>>>0)%(k>>>0)<<2)+n>>2];if((b|0)==-1){break f}while(1){b=P(b,12)+g|0;if((f|0)==J[b>>2]){break e}b=J[b+8>>2];if((b|0)!=-1){continue}break}}g:{if((c|0)!=(m|0)){e=c+12|0;break g}b=J[d+20>>2];if((b|0)==-1){break d}b=P(b,12)+g|0;J[d+20>>2]=J[b+8>>2];e=c;c=b}J[c>>2]=f;b=J[i+4>>2];J[c+8>>2]=-1;J[c+4>>2]=b;f=((f>>>0)%(k>>>0)<<2)+n|0;b=J[f>>2];h:{if((b|0)==-1){J[f>>2]=(c-g|0)/12;h=J[d+24>>2];break h}while(1){f=P(b,12)+g|0;b=J[f+8>>2];if((b|0)!=-1){continue}break}J[f+8>>2]=(c-g|0)/12}h=h+1|0;J[d+24>>2]=h;c=e;break c}J[d+12>>2]=c;Z(144851,55629,229,9606);B()}J[b+4>>2]=J[i+4>>2];break c}J[d+12>>2]=c;Z(152203,55629,537,2838);B()}b=J[i+8>>2];if((b|0)!=-1){continue}break}e=J[a+4>>2]}j=j+1|0;if(j>>>0>>0){continue}break}J[d+12>>2]=c}cj(l);cj(J[a+8>>2]);b=J[d+28>>2];J[a+24>>2]=J[d+24>>2];J[a+28>>2]=b;b=J[d+20>>2];J[a+16>>2]=J[d+16>>2];J[a+20>>2]=b;b=J[d+12>>2];J[a+8>>2]=J[d+8>>2];J[a+12>>2]=b;b=J[d+4>>2];J[a>>2]=J[d>>2];J[a+4>>2]=b}Ui=d+32|0;return}Z(144759,55629,159,2284);B()}Z(94750,55629,158,2284);B()}function LC(a,b,c){var d=0,e=0,f=0,g=0,h=0,i=0,j=0,k=0,l=0,m=0,n=0,o=0,p=0;d=Ui-32|0;Ui=d;a:{switch(b+1|0){case 1:Z(112335,55629,156,2284);B();case 0:Z(94770,55629,157,2284);B();default:break a}}if((c|0)!=-1){e=J[a+8>>2];if((J[a+16>>2]-e|0)/12>>>0<=c>>>0){b:{if(!e){J[a+4>>2]=b;b=b<<2;e=sj(b);J[a>>2]=e;ij(e,255,b);c=P(c,12);b=sj(c);J[a+12>>2]=b;J[a+8>>2]=b;J[a+16>>2]=b+c;break b}J[d+16>>2]=0;J[d+20>>2]=0;J[d+24>>2]=0;J[d+28>>2]=0;J[d+8>>2]=0;J[d+12>>2]=0;J[d>>2]=0;J[d+4>>2]=0;J[d+20>>2]=-1;LC(d,b,c);l=J[a>>2];e=J[a+4>>2];if(e){m=J[d+16>>2];g=J[d+8>>2];o=(m-g|0)/12|0;p=J[a+8>>2];c=J[d+12>>2];while(1){b=J[(j<<2)+l>>2];if((b|0)!=-1){h=J[d+24>>2];n=J[d>>2];while(1){c:{d:{e:{if((h|0)!=(o|0)){i=P(b,12)+p|0;f=J[i>>2];k=J[d+4>>2];f:{if(!k){break f}b=J[((f>>>0)%(k>>>0)<<2)+n>>2];if((b|0)==-1){break f}while(1){b=P(b,12)+g|0;if((f|0)==J[b>>2]){break e}b=J[b+8>>2];if((b|0)!=-1){continue}break}}g:{if((c|0)!=(m|0)){e=c+12|0;break g}b=J[d+20>>2];if((b|0)==-1){break d}b=P(b,12)+g|0;J[d+20>>2]=J[b+8>>2];e=c;c=b}J[c>>2]=f;b=L[i+4>>1];J[c+8>>2]=-1;I[c+4>>1]=b;f=((f>>>0)%(k>>>0)<<2)+n|0;b=J[f>>2];h:{if((b|0)==-1){J[f>>2]=(c-g|0)/12;h=J[d+24>>2];break h}while(1){f=P(b,12)+g|0;b=J[f+8>>2];if((b|0)!=-1){continue}break}J[f+8>>2]=(c-g|0)/12}h=h+1|0;J[d+24>>2]=h;c=e;break c}J[d+12>>2]=c;Z(144851,55629,229,9606);B()}I[b+4>>1]=L[i+4>>1];break c}J[d+12>>2]=c;Z(152203,55629,537,2838);B()}b=J[i+8>>2];if((b|0)!=-1){continue}break}e=J[a+4>>2]}j=j+1|0;if(j>>>0>>0){continue}break}J[d+12>>2]=c}cj(l);cj(J[a+8>>2]);b=J[d+28>>2];J[a+24>>2]=J[d+24>>2];J[a+28>>2]=b;b=J[d+20>>2];J[a+16>>2]=J[d+16>>2];J[a+20>>2]=b;b=J[d+12>>2];J[a+8>>2]=J[d+8>>2];J[a+12>>2]=b;b=J[d+4>>2];J[a>>2]=J[d>>2];J[a+4>>2]=b}Ui=d+32|0;return}Z(144759,55629,159,2284);B()}Z(94750,55629,158,2284);B()}function BH(a,b,c,d,e){var f=0,g=0,h=0,i=0,j=0,k=0,l=0,m=0,n=0,o=0,p=0,q=0,r=0,s=0,t=0;m=13;p=Ui-16|0;Ui=p;J[p+12>>2]=0;a:{if(!d){b=-20;break a}J[a+352>>2]=0;J[a+356>>2]=0;J[a+384>>2]=b;J[a+320>>2]=0;J[a+324>>2]=0;J[a+376>>2]=0;J[a+380>>2]=0;j=a+368|0;b=j;J[b>>2]=0;J[b+4>>2]=0;J[a+360>>2]=0;J[a+364>>2]=0;J[a+328>>2]=0;J[a+332>>2]=0;f=a+352|0;b:{if((d|0)==12){b=K[c+4|0]|K[c+5|0]<<8|(K[c+6|0]<<16|K[c+7|0]<<24);d=K[c|0]|K[c+1|0]<<8|(K[c+2|0]<<16|K[c+3|0]<<24);H[f|0]=d;H[f+1|0]=d>>>8;H[f+2|0]=d>>>16;H[f+3|0]=d>>>24;H[f+4|0]=b;H[f+5|0]=b>>>8;H[f+6|0]=b>>>16;H[f+7|0]=b>>>24;b=K[c+8|0]|K[c+9|0]<<8|(K[c+10|0]<<16|K[c+11|0]<<24);H[f+8|0]=b;H[f+9|0]=b>>>8;H[f+10|0]=b>>>16;H[f+11|0]=b>>>24;H[a+367|0]=1;break b}k=d<<3;q=k>>>8|0;r=k>>>16|0;s=k>>>24|0;while(1){n=d>>>0>=16?16:d;g=n&3;h=0;b=0;if(d>>>0>=4){t=n&28;o=0;while(1){i=b+f|0;H[i|0]=K[i|0]^K[b+c|0];i=b|1;l=i+f|0;H[l|0]=K[l|0]^K[c+i|0];i=b|2;l=i+f|0;H[l|0]=K[l|0]^K[c+i|0];i=b|3;l=i+f|0;H[l|0]=K[l|0]^K[c+i|0];b=b+4|0;o=o+4|0;if((t|0)!=(o|0)){continue}break}}if(g){while(1){o=b+f|0;H[o|0]=K[o|0]^K[b+c|0];b=b+1|0;h=h+1|0;if((g|0)!=(h|0)){continue}break}}qu(a,f,f);c=c+n|0;d=d-n|0;if(d){continue}break}H[a+364|0]=K[a+364|0]^s;H[a+365|0]=K[a+365|0]^r;H[a+366|0]=K[a+366|0]^q;H[a+367|0]=k^K[a+367|0];qu(a,f,f)}b=qo(a,f,16,a+336|0,p+12|0);if(b){break a}J[a+328>>2]=13;J[a+332>>2]=0;while(1){d=m>>>0>=16?16:m;f=d&3;k=0;b=0;if(m>>>0>=4){n=d&28;c=0;while(1){g=b+j|0;H[g|0]=K[g|0]^K[b+e|0];g=b|1;h=g+j|0;H[h|0]=K[h|0]^K[e+g|0];g=b|2;h=g+j|0;H[h|0]=K[h|0]^K[e+g|0];g=b|3;h=g+j|0;H[h|0]=K[h|0]^K[e+g|0];b=b+4|0;c=c+4|0;if((n|0)!=(c|0)){continue}break}}if(f){while(1){c=b+j|0;H[c|0]=K[c|0]^K[b+e|0];b=b+1|0;k=k+1|0;if((f|0)!=(k|0)){continue}break}}qu(a,j,j);e=d+e|0;m=m-d|0;if(m){continue}break}b=0}Ui=p+16|0;return b}function iN(a,b,c){var d=0,e=0,f=0,g=0,h=0,i=0,j=0,k=0,l=0,m=0,n=0,o=0,p=0;d=Ui-32|0;Ui=d;a:{switch(b+1|0){case 1:Z(112335,55629,156,2284);B();case 0:Z(94770,55629,157,2284);B();default:break a}}if((c|0)!=-1){e=J[a+8>>2];if((J[a+16>>2]-e|0)/12>>>0<=c>>>0){b:{if(!e){J[a+4>>2]=b;b=b<<2;e=sj(b);J[a>>2]=e;ij(e,255,b);c=P(c,12);b=sj(c);J[a+12>>2]=b;J[a+8>>2]=b;J[a+16>>2]=b+c;break b}J[d+16>>2]=0;J[d+20>>2]=0;J[d+24>>2]=0;J[d+28>>2]=0;J[d+8>>2]=0;J[d+12>>2]=0;J[d>>2]=0;J[d+4>>2]=0;J[d+20>>2]=-1;iN(d,b,c);l=J[a>>2];e=J[a+4>>2];if(e){m=J[d+16>>2];g=J[d+8>>2];o=(m-g|0)/12|0;p=J[a+8>>2];c=J[d+12>>2];while(1){b=J[(j<<2)+l>>2];if((b|0)!=-1){h=J[d+24>>2];n=J[d>>2];while(1){c:{d:{e:{if((h|0)!=(o|0)){i=P(b,12)+p|0;f=J[i>>2];k=J[d+4>>2];f:{if(!k){break f}b=J[((f>>>0)%(k>>>0)<<2)+n>>2];if((b|0)==-1){break f}while(1){b=P(b,12)+g|0;if((f|0)==J[b>>2]){break e}b=J[b+8>>2];if((b|0)!=-1){continue}break}}g:{if((c|0)!=(m|0)){e=c+12|0;break g}b=J[d+20>>2];if((b|0)==-1){break d}b=P(b,12)+g|0;J[d+20>>2]=J[b+8>>2];e=c;c=b}J[c>>2]=f;b=K[i+4|0];J[c+8>>2]=-1;H[c+4|0]=b;f=((f>>>0)%(k>>>0)<<2)+n|0;b=J[f>>2];h:{if((b|0)==-1){J[f>>2]=(c-g|0)/12;h=J[d+24>>2];break h}while(1){f=P(b,12)+g|0;b=J[f+8>>2];if((b|0)!=-1){continue}break}J[f+8>>2]=(c-g|0)/12}h=h+1|0;J[d+24>>2]=h;c=e;break c}J[d+12>>2]=c;Z(144851,55629,229,9606);B()}H[b+4|0]=K[i+4|0];break c}J[d+12>>2]=c;Z(152203,55629,537,2838);B()}b=J[i+8>>2];if((b|0)!=-1){continue}break}e=J[a+4>>2]}j=j+1|0;if(j>>>0>>0){continue}break}J[d+12>>2]=c}cj(l);cj(J[a+8>>2]);b=J[d+28>>2];J[a+24>>2]=J[d+24>>2];J[a+28>>2]=b;b=J[d+20>>2];J[a+16>>2]=J[d+16>>2];J[a+20>>2]=b;b=J[d+12>>2];J[a+8>>2]=J[d+8>>2];J[a+12>>2]=b;b=J[d+4>>2];J[a>>2]=J[d>>2];J[a+4>>2]=b}Ui=d+32|0;return}Z(144759,55629,159,2284);B()}Z(94750,55629,158,2284);B()}function KN(a,b,c){var d=0,e=0,f=0,g=0,h=0,i=0,j=0,k=0,l=0,m=0,n=0,o=0,p=0;d=Ui-32|0;Ui=d;a:{switch(b+1|0){case 1:Z(112335,55629,156,2284);B();case 0:Z(94770,55629,157,2284);B();default:break a}}if((c|0)!=-1){e=J[a+8>>2];if((J[a+16>>2]-e|0)/12>>>0<=c>>>0){b:{if(!e){J[a+4>>2]=b;b=b<<2;e=sj(b);J[a>>2]=e;ij(e,255,b);c=P(c,12);b=sj(c);J[a+12>>2]=b;J[a+8>>2]=b;J[a+16>>2]=b+c;break b}J[d+16>>2]=0;J[d+20>>2]=0;J[d+24>>2]=0;J[d+28>>2]=0;J[d+8>>2]=0;J[d+12>>2]=0;J[d>>2]=0;J[d+4>>2]=0;J[d+20>>2]=-1;KN(d,b,c);l=J[a>>2];e=J[a+4>>2];if(e){m=J[d+16>>2];g=J[d+8>>2];o=(m-g|0)/12|0;p=J[a+8>>2];c=J[d+12>>2];while(1){b=J[(j<<2)+l>>2];if((b|0)!=-1){h=J[d+24>>2];n=J[d>>2];while(1){c:{d:{e:{if((h|0)!=(o|0)){i=P(b,12)+p|0;f=J[i>>2];k=J[d+4>>2];f:{if(!k){break f}b=J[((f>>>0)%(k>>>0)<<2)+n>>2];if((b|0)==-1){break f}while(1){b=P(b,12)+g|0;if((f|0)==J[b>>2]){break e}b=J[b+8>>2];if((b|0)!=-1){continue}break}}g:{if((c|0)!=(m|0)){e=c+12|0;break g}b=J[d+20>>2];if((b|0)==-1){break d}b=P(b,12)+g|0;J[d+20>>2]=J[b+8>>2];e=c;c=b}J[c>>2]=f;b=K[i+4|0];J[c+8>>2]=-1;H[c+4|0]=b;f=((f>>>0)%(k>>>0)<<2)+n|0;b=J[f>>2];h:{if((b|0)==-1){J[f>>2]=(c-g|0)/12;h=J[d+24>>2];break h}while(1){f=P(b,12)+g|0;b=J[f+8>>2];if((b|0)!=-1){continue}break}J[f+8>>2]=(c-g|0)/12}h=h+1|0;J[d+24>>2]=h;c=e;break c}J[d+12>>2]=c;Z(144851,55629,229,9606);B()}H[b+4|0]=K[i+4|0];break c}J[d+12>>2]=c;Z(152203,55629,537,2838);B()}b=J[i+8>>2];if((b|0)!=-1){continue}break}e=J[a+4>>2]}j=j+1|0;if(j>>>0>>0){continue}break}J[d+12>>2]=c}cj(l);cj(J[a+8>>2]);b=J[d+28>>2];J[a+24>>2]=J[d+24>>2];J[a+28>>2]=b;b=J[d+20>>2];J[a+16>>2]=J[d+16>>2];J[a+20>>2]=b;b=J[d+12>>2];J[a+8>>2]=J[d+8>>2];J[a+12>>2]=b;b=J[d+4>>2];J[a>>2]=J[d>>2];J[a+4>>2]=b}Ui=d+32|0;return}Z(144759,55629,159,2284);B()}Z(94750,55629,158,2284);B()}function Kna(a){a=a|0;var b=0,c=0,d=0,e=0,f=0,g=0,h=0,i=0,j=0,k=0,l=0,m=0,n=0,o=0,p=0,q=0,r=0,s=0,t=0,u=0,v=0,w=0;g=Ui-128|0;Ui=g;b=J[a+1048>>2];f=b>>>16|0;a:{b:{c:{d:{if(b>>>0<=524287){k=b&65535;n=J[J[a+1040>>2]+32>>2];e=J[J[n>>2]+44>>2];i=e+72|0;h=e+68|0;j=e+80|0;l=e+76|0;o=e+88|0;p=e+84|0;q=e+96|0;r=e+92|0;s=e+104|0;t=e+100|0;u=e+108|0;d=u;v=e+112|0;b=v;e:{f:{g:{switch(f|0){case 5:d=t;b=s;break f;case 4:d=r;b=q;break f;case 3:d=p;b=o;break f;case 2:d=l;b=j;break f;case 1:d=h;b=i;break f;case 6:break f;case 0:break g;default:break e}}d=e+60|0;b=e- -64|0}w=J[b>>2];c=J[d>>2]}if(!m&k>>>0>>0){break c}d=0;f=f+1|0;if((f|0)==8){break b}while(1){c=h;b=i;h:{i:{j:{switch(f-1|0){case 1:c=l;b=j;break i;case 2:c=p;b=o;break i;case 3:c=r;b=q;break i;case 4:c=t;b=s;break i;case 0:break i;case 5:break j;default:break h}}c=u;b=v}if(J[b>>2]){break d}}f=f+1|0;if((f|0)!=8){continue}break}break b}if((f|0)==8){break b}break a}c=J[c>>2];k=0}if(!c){break a}b=(k<<5)+c|0;d=J[b>>2];b=J[b+20>>2];c=Zp(g+16|0);i=hR(n,d,f,b,0,0,c);k:{if(i){break k}b=f<<16;h=k+1|0;m=h?m:m+1|0;J[a+1048>>2]=b|h;J[a+1052>>2]=m;J[a>>2]=bj(d);J[a+4>>2]=Yi;l:{switch(f|0){case 1:J[a+8>>2]=1;b=J[c+44>>2];J[a+16>>2]=J[c+40>>2];J[a+20>>2]=b;break k;case 0:J[a+8>>2]=0;O[a+16>>3]=O[c+40>>3];break k;case 6:J[a+8>>2]=6;H[a+16|0]=K[c+40|0];break k;case 3:case 4:case 5:J[a+8>>2]=f;N[a+16>>2]=N[c+40>>2];N[a+20>>2]=N[c+44>>2];N[a+24>>2]=N[c+48>>2];N[a+28>>2]=N[c+52>>2];break k;case 2:break l;default:break k}}J[a+8>>2]=2;d=tj(J[c+40>>2],J[c+44>>2]);h=tj(J[c+56>>2],J[c+60>>2]);b=J[c+64>>2];c=J[c+68>>2];j=!(b|c);l=j?158859:151693;if(j){b=158859}else{b=tj(b,c)}J[g+12>>2]=b;J[g+8>>2]=l;J[g+4>>2]=h;J[g>>2]=d;Gj(a+16|0,1024,25971,g)}d=!i}Ui=g+128|0;return d|0}Z(113659,37648,1097,9409);B()}function MI(a,b,c,d){var e=0,f=0,g=0,h=0,i=0;g=Ui-16|0;Ui=g;h=ok(a,d);A(+h);e=v(1)|0;f=v(0)|0;e=e&2147483647;a:{b:{c:{switch(J[b+1324>>2]){case 0:if(e>>>0<2146435072){break b}gn(c);d=kj(a,d);if((d|0)==-1){d=60960}else{d=J[(d<<2)+257632>>2]}J[g+4>>2]=1776;J[g>>2]=d;fj(a,28377,g);break b;case 1:if((e|0)==2146435072&(f|0)!=0|e>>>0>2146435072){a=c+8|0;b=J[a>>2];if((b-J[c+4>>2]|0)>=-3){ql(c,b+3|0);b=J[c+8>>2]}b=J[c>>2]+b|0;c=K[91092]|K[91093]<<8;H[b|0]=c;H[b+1|0]=c>>>8;H[b+2|0]=K[91094];b=3;break a}if(f|(e|0)!=2146435072){break b}a=c+8|0;b=J[a>>2];d=b-J[c+4>>2]|0;if(h<0){if((d|0)>=-9){ql(c,b+9|0);b=J[c+8>>2]}b=J[c>>2]+b|0;c=K[1770]|K[1771]<<8|(K[1772]<<16|K[1773]<<24);d=K[1766]|K[1767]<<8|(K[1768]<<16|K[1769]<<24);H[b|0]=d;H[b+1|0]=d>>>8;H[b+2|0]=d>>>16;H[b+3|0]=d>>>24;H[b+4|0]=c;H[b+5|0]=c>>>8;H[b+6|0]=c>>>16;H[b+7|0]=c>>>24;H[b+8|0]=K[1774];b=9;break a}if((d|0)>=-8){ql(c,b+8|0);b=J[c+8>>2]}b=J[c>>2]+b|0;H[b|0]=73;H[b+1|0]=110;H[b+2|0]=102;H[b+3|0]=105;H[b+4|0]=110;H[b+5|0]=105;H[b+6|0]=116;H[b+7|0]=121;b=8;break a;default:break c}}if(e>>>0<2146435072){break b}b=4;a=c+8|0;d=J[a>>2];if((d-J[c+4>>2]|0)>=-4){ql(c,d+4|0);d=J[c+8>>2]}c=J[c>>2]+d|0;H[c|0]=110;H[c+1|0]=117;H[c+2|0]=108;H[c+3|0]=108;break a}a=c+8|0;d=J[a>>2];if((d-J[c+4>>2]|0)>=-32){ql(c,d+32|0);d=J[c+8>>2]}c=J[c>>2]+d|0;e=Ui+-64|0;Ui=e;d:{d=J[b+1328>>2];if(d-1>>>0<16){H[e+26|0]=37;H[e+27|0]=46;f=d>>>0<10;if(f){b=e+28|0}else{H[e+28|0]=49;b=e+29|0}H[b+1|0]=103;H[b+2|0]=0;H[b|0]=(f?d:d+246|0)|48;e:{if(K[255040]==46){O[e>>3]=h;b=Dn(c,32,e+26|0,e);break e}O[e+16>>3]=h;d=e+32|0;b=Dn(d,32,e+26|0,e+16|0);i=K[255040];while(1){f=K[d|0];H[c|0]=(f|0)==(i|0)?46:f;d=d+1|0;c=c+1|0;if(f){continue}break}}Ui=e- -64|0;break d}Z(105918,82582,163,17e3);B()}}J[a>>2]=J[a>>2]+b;Ui=g+16|0}function $Q(a,b,c){var d=0,e=0,f=Q(0),g=Q(0),h=Q(0),i=Q(0),j=0,k=Q(0),l=Q(0),m=Q(0),n=Q(0),o=Q(0),p=Q(0),q=Q(0),r=Q(0),s=Q(0),t=0,u=0,v=0,w=0;d=b+32|0;e=J[b+16>>2];j=J[e+12>>2];a:{b:{if(K[j|0]){e=wk(a,j,d);if(e){break a}e=J[b+16>>2];break b}J[d>>2]=0}c:{d:{e:{f:{g:{h:{i:{j:{d=J[e>>2];k:{if(K[d|0]){if(c){d=Ou(a,d,0);e=J[b+16>>2];if(!d){break j}d=J[e>>2]}e=wk(a,d,b+20|0);if(e){break a}e=J[b+16>>2];break k}J[b+20>>2]=0}d=J[e+4>>2];if(!K[d|0]){break i}if(!c){break g}break h}d=J[e+4>>2];if(K[d|0]){break h}}J[b+28>>2]=0;break f}d=Ou(a,d,0);e=J[b+16>>2];if(!d){break e}d=J[e+4>>2]}e=wk(a,d,b+28|0);if(e){break a}e=J[b+16>>2]}if(!c){break d}}if(!Ou(a,J[e+8>>2],0)){break c}e=J[b+16>>2]}e=wk(a,J[e+8>>2],b+24|0);if(e){break a}}e=0;a=J[b+20>>2];if(!a){break a}a=J[a>>2];c=0;l:{m:{n:{if(!(H[b+12|0]&1)){d=J[a+4>>2];lj(d,80,b,b+8|0,b+4|0);j=J[b>>2];if(d>>>0>(J[b+8>>2]-j|0)/80>>>0){break n}J[b+4>>2]=j+P(d,80);if(d){t=J[a>>2];u=J[a+4>>2];while(1){if((c|0)==(u|0)){break m}b=P(c,192)+t|0;f=N[b+128>>2];m=N[b+132>>2];h=N[b+140>>2];p=N[b+136>>2];n=N[b+168>>2];i=N[b+164>>2];o=N[b+160>>2];v=J[b+148>>2];w=J[b+144>>2];k=N[b+152>>2];a=j+P(c,80)|0;J[a+60>>2]=1065353216;N[a+56>>2]=k;J[a+48>>2]=w;J[a+52>>2]=v;N[a+12>>2]=o*Q(0);N[a+28>>2]=i*Q(0);N[a+44>>2]=n*Q(0);q=Q(m+m);l=Q(f*q);k=Q(p+p);g=Q(h*k);N[a+4>>2]=o*Q(l+g);r=Q(f*k);s=Q(q*h);N[a+8>>2]=o*Q(r-s);N[a+16>>2]=i*Q(l-g);l=Q(m*k);g=h;h=Q(f+f);g=Q(g*h);N[a+24>>2]=i*Q(l+g);N[a+32>>2]=n*Q(r+s);N[a+36>>2]=n*Q(l-g);g=i;f=Q(Q(1)-Q(f*h));i=Q(p*k);N[a+20>>2]=g*Q(f-i);h=f;f=Q(m*q);N[a+40>>2]=n*Q(h-f);N[a>>2]=o*Q(Q(Q(1)-f)-i);J[a+64>>2]=J[b>>2];N[a+68>>2]=N[b+176>>2];c=c+1|0;if((d|0)!=(c|0)){continue}break}}break l}Z(151729,53895,501,2284);B()}Z(144782,53895,514,59583);B()}Z(12664,55323,260,84789);B()}}return e}function gN(a,b,c){var d=0,e=0,f=0,g=0,h=0,i=0,j=0,k=0,l=0,m=0,n=0,o=0,p=0,q=0;d=Ui-32|0;Ui=d;a:{switch(b+1|0){case 1:Z(112335,55629,156,2284);B();case 0:Z(94770,55629,157,2284);B();default:break a}}if((c|0)!=-1){f=J[a+8>>2];if((J[a+16>>2]-f|0)/12>>>0<=c>>>0){b:{if(!f){J[a+4>>2]=b;b=b<<2;f=sj(b);J[a>>2]=f;ij(f,255,b);c=P(c,12);b=sj(c);J[a+12>>2]=b;J[a+8>>2]=b;J[a+16>>2]=b+c;break b}J[d+16>>2]=0;J[d+20>>2]=0;J[d+24>>2]=0;J[d+28>>2]=0;J[d+8>>2]=0;J[d+12>>2]=0;J[d>>2]=0;J[d+4>>2]=0;J[d+20>>2]=-1;gN(d,b,c);m=J[a>>2];c=J[a+4>>2];if(c){n=J[d+16>>2];g=J[d+8>>2];p=(n-g|0)/12|0;q=J[a+8>>2];i=J[d+12>>2];while(1){b=J[(k<<2)+m>>2];if((b|0)!=-1){h=J[d+24>>2];o=J[d>>2];c=i;while(1){c:{d:{e:{if((h|0)!=(p|0)){j=P(b,12)+q|0;e=J[j>>2];l=J[d+4>>2];f:{if(!l){break f}b=J[((e>>>0)%(l>>>0)<<2)+o>>2];if((b|0)==-1){break f}while(1){b=P(b,12)+g|0;if((e|0)==J[b>>2]){break e}b=J[b+8>>2];if((b|0)!=-1){continue}break}}g:{if((c|0)!=(n|0)){i=c+12|0;J[d+12>>2]=i;f=i;break g}b=J[d+20>>2];if((b|0)==-1){break d}b=P(b,12)+g|0;J[d+20>>2]=J[b+8>>2];f=c;c=b}J[c>>2]=e;b=J[j+4>>2];J[c+8>>2]=-1;J[c+4>>2]=b;e=((e>>>0)%(l>>>0)<<2)+o|0;b=J[e>>2];h:{if((b|0)==-1){J[e>>2]=(c-g|0)/12;h=J[d+24>>2];break h}while(1){e=P(b,12)+g|0;b=J[e+8>>2];if((b|0)!=-1){continue}break}J[e+8>>2]=(c-g|0)/12}h=h+1|0;J[d+24>>2]=h;c=f;break c}Z(144851,55629,229,9606);B()}J[b+4>>2]=J[j+4>>2];break c}Z(152203,55629,537,2838);B()}b=J[j+8>>2];if((b|0)!=-1){continue}break}c=J[a+4>>2]}k=k+1|0;if(k>>>0>>0){continue}break}}cj(m);cj(J[a+8>>2]);b=J[d+28>>2];J[a+24>>2]=J[d+24>>2];J[a+28>>2]=b;b=J[d+20>>2];J[a+16>>2]=J[d+16>>2];J[a+20>>2]=b;b=J[d+12>>2];J[a+8>>2]=J[d+8>>2];J[a+12>>2]=b;b=J[d+4>>2];J[a>>2]=J[d>>2];J[a+4>>2]=b}Ui=d+32|0;return}Z(144759,55629,159,2284);B()}Z(94750,55629,158,2284);B()}function JN(a,b,c){var d=0,e=0,f=0,g=0,h=0,i=0,j=0,k=0,l=0,m=0,n=0,o=0,p=0,q=0;d=Ui-32|0;Ui=d;a:{switch(b+1|0){case 1:Z(112335,55629,156,2284);B();case 0:Z(94770,55629,157,2284);B();default:break a}}if((c|0)!=-1){f=J[a+8>>2];if((J[a+16>>2]-f|0)/12>>>0<=c>>>0){b:{if(!f){J[a+4>>2]=b;b=b<<2;f=sj(b);J[a>>2]=f;ij(f,255,b);c=P(c,12);b=sj(c);J[a+12>>2]=b;J[a+8>>2]=b;J[a+16>>2]=b+c;break b}J[d+16>>2]=0;J[d+20>>2]=0;J[d+24>>2]=0;J[d+28>>2]=0;J[d+8>>2]=0;J[d+12>>2]=0;J[d>>2]=0;J[d+4>>2]=0;J[d+20>>2]=-1;JN(d,b,c);m=J[a>>2];c=J[a+4>>2];if(c){n=J[d+16>>2];g=J[d+8>>2];p=(n-g|0)/12|0;q=J[a+8>>2];i=J[d+12>>2];while(1){b=J[(k<<2)+m>>2];if((b|0)!=-1){h=J[d+24>>2];o=J[d>>2];c=i;while(1){c:{d:{e:{if((h|0)!=(p|0)){j=P(b,12)+q|0;e=J[j>>2];l=J[d+4>>2];f:{if(!l){break f}b=J[((e>>>0)%(l>>>0)<<2)+o>>2];if((b|0)==-1){break f}while(1){b=P(b,12)+g|0;if((e|0)==J[b>>2]){break e}b=J[b+8>>2];if((b|0)!=-1){continue}break}}g:{if((c|0)!=(n|0)){i=c+12|0;J[d+12>>2]=i;f=i;break g}b=J[d+20>>2];if((b|0)==-1){break d}b=P(b,12)+g|0;J[d+20>>2]=J[b+8>>2];f=c;c=b}J[c>>2]=e;b=J[j+4>>2];J[c+8>>2]=-1;J[c+4>>2]=b;e=((e>>>0)%(l>>>0)<<2)+o|0;b=J[e>>2];h:{if((b|0)==-1){J[e>>2]=(c-g|0)/12;h=J[d+24>>2];break h}while(1){e=P(b,12)+g|0;b=J[e+8>>2];if((b|0)!=-1){continue}break}J[e+8>>2]=(c-g|0)/12}h=h+1|0;J[d+24>>2]=h;c=f;break c}Z(144851,55629,229,9606);B()}J[b+4>>2]=J[j+4>>2];break c}Z(152203,55629,537,2838);B()}b=J[j+8>>2];if((b|0)!=-1){continue}break}c=J[a+4>>2]}k=k+1|0;if(k>>>0>>0){continue}break}}cj(m);cj(J[a+8>>2]);b=J[d+28>>2];J[a+24>>2]=J[d+24>>2];J[a+28>>2]=b;b=J[d+20>>2];J[a+16>>2]=J[d+16>>2];J[a+20>>2]=b;b=J[d+12>>2];J[a+8>>2]=J[d+8>>2];J[a+12>>2]=b;b=J[d+4>>2];J[a>>2]=J[d>>2];J[a+4>>2]=b}Ui=d+32|0;return}Z(144759,55629,159,2284);B()}Z(94750,55629,158,2284);B()}function GN(a,b,c){var d=0,e=0,f=0,g=0,h=0,i=0,j=0,k=0,l=0,m=0,n=0,o=0,p=0,q=0;d=Ui-32|0;Ui=d;a:{switch(b+1|0){case 1:Z(112335,55629,156,2284);B();case 0:Z(94770,55629,157,2284);B();default:break a}}if((c|0)!=-1){f=J[a+8>>2];if((J[a+16>>2]-f|0)/12>>>0<=c>>>0){b:{if(!f){J[a+4>>2]=b;b=b<<2;f=sj(b);J[a>>2]=f;ij(f,255,b);c=P(c,12);b=sj(c);J[a+12>>2]=b;J[a+8>>2]=b;J[a+16>>2]=b+c;break b}J[d+16>>2]=0;J[d+20>>2]=0;J[d+24>>2]=0;J[d+28>>2]=0;J[d+8>>2]=0;J[d+12>>2]=0;J[d>>2]=0;J[d+4>>2]=0;J[d+20>>2]=-1;GN(d,b,c);m=J[a>>2];c=J[a+4>>2];if(c){n=J[d+16>>2];g=J[d+8>>2];p=(n-g|0)/12|0;q=J[a+8>>2];i=J[d+12>>2];while(1){b=J[(k<<2)+m>>2];if((b|0)!=-1){h=J[d+24>>2];o=J[d>>2];c=i;while(1){c:{d:{e:{if((h|0)!=(p|0)){j=P(b,12)+q|0;e=J[j>>2];l=J[d+4>>2];f:{if(!l){break f}b=J[((e>>>0)%(l>>>0)<<2)+o>>2];if((b|0)==-1){break f}while(1){b=P(b,12)+g|0;if((e|0)==J[b>>2]){break e}b=J[b+8>>2];if((b|0)!=-1){continue}break}}g:{if((c|0)!=(n|0)){i=c+12|0;J[d+12>>2]=i;f=i;break g}b=J[d+20>>2];if((b|0)==-1){break d}b=P(b,12)+g|0;J[d+20>>2]=J[b+8>>2];f=c;c=b}J[c>>2]=e;b=J[j+4>>2];J[c+8>>2]=-1;J[c+4>>2]=b;e=((e>>>0)%(l>>>0)<<2)+o|0;b=J[e>>2];h:{if((b|0)==-1){J[e>>2]=(c-g|0)/12;h=J[d+24>>2];break h}while(1){e=P(b,12)+g|0;b=J[e+8>>2];if((b|0)!=-1){continue}break}J[e+8>>2]=(c-g|0)/12}h=h+1|0;J[d+24>>2]=h;c=f;break c}Z(144851,55629,229,9606);B()}J[b+4>>2]=J[j+4>>2];break c}Z(152203,55629,537,2838);B()}b=J[j+8>>2];if((b|0)!=-1){continue}break}c=J[a+4>>2]}k=k+1|0;if(k>>>0>>0){continue}break}}cj(m);cj(J[a+8>>2]);b=J[d+28>>2];J[a+24>>2]=J[d+24>>2];J[a+28>>2]=b;b=J[d+20>>2];J[a+16>>2]=J[d+16>>2];J[a+20>>2]=b;b=J[d+12>>2];J[a+8>>2]=J[d+8>>2];J[a+12>>2]=b;b=J[d+4>>2];J[a>>2]=J[d>>2];J[a+4>>2]=b}Ui=d+32|0;return}Z(144759,55629,159,2284);B()}Z(94750,55629,158,2284);B()}function EN(a,b,c){var d=0,e=0,f=0,g=0,h=0,i=0,j=0,k=0,l=0,m=0,n=0,o=0,p=0,q=0;d=Ui-32|0;Ui=d;a:{switch(b+1|0){case 1:Z(112335,55629,156,2284);B();case 0:Z(94770,55629,157,2284);B();default:break a}}if((c|0)!=-1){f=J[a+8>>2];if((J[a+16>>2]-f|0)/12>>>0<=c>>>0){b:{if(!f){J[a+4>>2]=b;b=b<<2;f=sj(b);J[a>>2]=f;ij(f,255,b);c=P(c,12);b=sj(c);J[a+12>>2]=b;J[a+8>>2]=b;J[a+16>>2]=b+c;break b}J[d+16>>2]=0;J[d+20>>2]=0;J[d+24>>2]=0;J[d+28>>2]=0;J[d+8>>2]=0;J[d+12>>2]=0;J[d>>2]=0;J[d+4>>2]=0;J[d+20>>2]=-1;EN(d,b,c);m=J[a>>2];c=J[a+4>>2];if(c){n=J[d+16>>2];g=J[d+8>>2];p=(n-g|0)/12|0;q=J[a+8>>2];i=J[d+12>>2];while(1){b=J[(k<<2)+m>>2];if((b|0)!=-1){h=J[d+24>>2];o=J[d>>2];c=i;while(1){c:{d:{e:{if((h|0)!=(p|0)){j=P(b,12)+q|0;e=J[j>>2];l=J[d+4>>2];f:{if(!l){break f}b=J[((e>>>0)%(l>>>0)<<2)+o>>2];if((b|0)==-1){break f}while(1){b=P(b,12)+g|0;if((e|0)==J[b>>2]){break e}b=J[b+8>>2];if((b|0)!=-1){continue}break}}g:{if((c|0)!=(n|0)){i=c+12|0;J[d+12>>2]=i;f=i;break g}b=J[d+20>>2];if((b|0)==-1){break d}b=P(b,12)+g|0;J[d+20>>2]=J[b+8>>2];f=c;c=b}J[c>>2]=e;b=J[j+4>>2];J[c+8>>2]=-1;J[c+4>>2]=b;e=((e>>>0)%(l>>>0)<<2)+o|0;b=J[e>>2];h:{if((b|0)==-1){J[e>>2]=(c-g|0)/12;h=J[d+24>>2];break h}while(1){e=P(b,12)+g|0;b=J[e+8>>2];if((b|0)!=-1){continue}break}J[e+8>>2]=(c-g|0)/12}h=h+1|0;J[d+24>>2]=h;c=f;break c}Z(144851,55629,229,9606);B()}J[b+4>>2]=J[j+4>>2];break c}Z(152203,55629,537,2838);B()}b=J[j+8>>2];if((b|0)!=-1){continue}break}c=J[a+4>>2]}k=k+1|0;if(k>>>0>>0){continue}break}}cj(m);cj(J[a+8>>2]);b=J[d+28>>2];J[a+24>>2]=J[d+24>>2];J[a+28>>2]=b;b=J[d+20>>2];J[a+16>>2]=J[d+16>>2];J[a+20>>2]=b;b=J[d+12>>2];J[a+8>>2]=J[d+8>>2];J[a+12>>2]=b;b=J[d+4>>2];J[a>>2]=J[d>>2];J[a+4>>2]=b}Ui=d+32|0;return}Z(144759,55629,159,2284);B()}Z(94750,55629,158,2284);B()}function sY(a){a=a|0;var b=0,c=0,d=0,e=0,f=0,g=0;e=Ui-1248|0;Ui=e;c=mm(a,1,82666,0);a:{if((kj(a,2)|0)<=0){d=Kr(0);b=Yi;break a}f=wj(a,2);if(R(f)<0x8000000000000000){d=~~f>>>0;if(R(f)>=1){b=~~(f>0?T(V(f*2.3283064365386963e-10),4294967295):W((f-+(~~f>>>0>>>0))*2.3283064365386963e-10))>>>0}else{b=0}break a}b=-2147483648}J[e+1240>>2]=d;J[e+1244>>2]=b;b:{c:{if(K[c|0]==33){c=c+1|0;d=lF(e+1240|0,983e3);break c}d=BV(e+1240|0)}if(!d){d=J[a+8>>2];J[d+8>>2]=0;J[a+8>>2]=d+16;break b}if(!(K[c+2|0]|(K[c|0]!=42|K[c+1|0]!=116))){Fj(a,0,9);c=J[d>>2];b=J[a+8>>2];J[b+8>>2]=3;O[b>>3]=c|0;J[a+8>>2]=J[a+8>>2]+16;ej(a,-2,82391);c=J[d+4>>2];b=J[a+8>>2];J[b+8>>2]=3;O[b>>3]=c|0;J[a+8>>2]=J[a+8>>2]+16;ej(a,-2,47757);c=J[d+8>>2];b=J[a+8>>2];J[b+8>>2]=3;O[b>>3]=c|0;J[a+8>>2]=J[a+8>>2]+16;ej(a,-2,31905);c=J[d+12>>2];b=J[a+8>>2];J[b+8>>2]=3;O[b>>3]=c|0;J[a+8>>2]=J[a+8>>2]+16;ej(a,-2,4188);c=J[d+16>>2]+1|0;b=J[a+8>>2];J[b+8>>2]=3;O[b>>3]=c|0;J[a+8>>2]=J[a+8>>2]+16;ej(a,-2,52705);c=J[d+20>>2]+1900|0;b=J[a+8>>2];J[b+8>>2]=3;O[b>>3]=c|0;J[a+8>>2]=J[a+8>>2]+16;ej(a,-2,36147);c=J[d+24>>2]+1|0;b=J[a+8>>2];J[b+8>>2]=3;O[b>>3]=c|0;J[a+8>>2]=J[a+8>>2]+16;ej(a,-2,4187);c=J[d+28>>2]+1|0;b=J[a+8>>2];J[b+8>>2]=3;O[b>>3]=c|0;J[a+8>>2]=J[a+8>>2]+16;ej(a,-2,4182);d=J[d+32>>2];if((d|0)<0){break b}c=J[a+8>>2];J[c+8>>2]=1;J[c>>2]=(d|0)!=0;J[a+8>>2]=J[a+8>>2]+16;ej(a,-2,10056);break b}H[e+1239|0]=0;H[e+1237|0]=37;b=e+200|0;J[b+4>>2]=0;J[b+8>>2]=a;J[b>>2]=b+12;g=e+1236|0;while(1){d:{a=K[c|0];e:{if((a|0)!=37){if(a){break e}Ym(e+200|0);break b}b=K[c+1|0];if(b){break d}}b=J[e+200>>2];if(g>>>0<=b>>>0){_l(e+200|0);b=J[e+200>>2];a=K[c|0]}J[e+200>>2]=b+1;H[b|0]=a;c=c+1|0;continue}H[e+1238|0]=b;Yn(e+200|0,e,wV(e,200,e+1237|0,d,J[245847]));c=c+2|0;continue}}Ui=e+1248|0;return 1}function jda(a){a=a|0;var b=0,c=0,d=0,e=0,f=0,g=0,h=0,i=0,j=0,k=0,l=0;f=Ui-48|0;Ui=f;g=pj(f+28|0,a,0,39971,947);j=Mp(a,1,0);k=mk(a,2);l=Yi;h=Ej(a,4);Oj(a,3,5);e=fl(a,3);a:{if(e){if(h>>>0>=9){J[f>>2]=h;i=Jj(g,72170,f);break a}if((h&11)==3){i=Jj(g,127970,0);break a}uj(a,3);b:{c:{switch(h|0){case 8:c=sj(P(Er(8),e));d=J[a+8>>2];J[d+8>>2]=0;J[a+8>>2]=d+16;if($j(a,-2)){while(1){N[c+(b<<2)>>2]=wj(a,-1);Ej(a,-2);gj(a,-2);b=b+1|0;if($j(a,-2)){continue}break}}gj(a,-2);b=c;break b;case 0:c=sj(P(Er(0),e));d=J[a+8>>2];J[d+8>>2]=0;J[a+8>>2]=d+16;if($j(a,-2)){while(1){H[b+c|0]=Ej(a,-1);Ej(a,-2);gj(a,-2);b=b+1|0;if($j(a,-2)){continue}break}}gj(a,-2);b=c;break b;case 1:c=sj(P(Er(1),e));d=J[a+8>>2];J[d+8>>2]=0;J[a+8>>2]=d+16;if($j(a,-2)){while(1){I[c+(b<<1)>>1]=Ej(a,-1);Ej(a,-2);gj(a,-2);b=b+1|0;if($j(a,-2)){continue}break}}gj(a,-2);b=c;break b;case 2:c=sj(P(Er(2),e));d=J[a+8>>2];J[d+8>>2]=0;J[a+8>>2]=d+16;if($j(a,-2)){while(1){J[c+(b<<2)>>2]=Ej(a,-1);Ej(a,-2);gj(a,-2);b=b+1|0;if($j(a,-2)){continue}break}}gj(a,-2);b=c;break b;case 4:c=sj(P(Er(4),e));d=J[a+8>>2];J[d+8>>2]=0;J[a+8>>2]=d+16;if($j(a,-2)){while(1){H[b+c|0]=Ej(a,-1);Ej(a,-2);gj(a,-2);b=b+1|0;if($j(a,-2)){continue}break}}gj(a,-2);b=c;break b;case 5:c=sj(P(Er(5),e));d=J[a+8>>2];J[d+8>>2]=0;J[a+8>>2]=d+16;if($j(a,-2)){while(1){I[c+(b<<1)>>1]=Ej(a,-1);Ej(a,-2);gj(a,-2);b=b+1|0;if($j(a,-2)){continue}break}}gj(a,-2);b=c;break b;case 6:break c;default:break b}}c=sj(P(Er(6),e));d=J[a+8>>2];J[d+8>>2]=0;J[a+8>>2]=d+16;if($j(a,-2)){while(1){J[c+(b<<2)>>2]=Ej(a,-1);Ej(a,-2);gj(a,-2);b=b+1|0;if($j(a,-2)){continue}break}}gj(a,-2);b=c}a=qS(j,k,l,b,e,h);cj(b);if(!a){break a}J[f+16>>2]=a>>>0>11?14245:J[(a<<2)+265952>>2];i=Jj(g,28530,f+16|0);break a}i=Jj(g,83216,0)}oj(g);Ui=f+48|0;return i|0}function jsa(a,b,c,d){a=a|0;b=b|0;c=c|0;d=d|0;var e=0,f=Q(0),g=Q(0),h=Q(0),i=Q(0),j=Q(0),k=Q(0),l=Q(0),m=Q(0),n=Q(0),o=Q(0),p=Q(0),q=Q(0),r=0,s=0,t=0,u=Q(0),v=Q(0),w=Q(0),x=Q(0),y=0;e=Ui-80|0;Ui=e;x=Q(Zi[J[J[a>>2]+44>>2]](a));while(1){J[e+72>>2]=0;J[e+76>>2]=0;J[e+64>>2]=0;J[e+68>>2]=0;s=t<<2;y=s+(e- -64|0)|0;J[y>>2]=1065353216;i=N[b+32>>2];j=N[b>>2];k=N[b+16>>2];l=N[b+36>>2];m=N[b+4>>2];n=N[b+20>>2];f=N[b+40>>2];g=N[b+8>>2];h=N[b+24>>2];J[e+44>>2]=0;o=f;f=N[e+72>>2];p=g;g=N[e+64>>2];q=h;h=N[e+68>>2];N[e+40>>2]=Q(o*f)+Q(Q(p*g)+Q(q*h));N[e+36>>2]=Q(l*f)+Q(Q(m*g)+Q(h*n));N[e+32>>2]=Q(i*f)+Q(Q(j*g)+Q(k*h));r=e+32|0;Zi[J[J[a>>2]+60>>2]](e+48|0,a,r);i=N[b+48>>2];j=N[b+8>>2];k=N[b>>2];l=N[b+4>>2];m=N[b+52>>2];n=N[b+24>>2];p=N[b+16>>2];q=N[b+20>>2];f=N[b+56>>2];g=N[b+40>>2];h=N[b+32>>2];u=N[b+36>>2];J[e+44>>2]=0;o=f;f=N[e+56>>2];v=Q(g*f);g=N[e+48>>2];w=Q(h*g);h=N[e+52>>2];N[e+40>>2]=o+Q(v+Q(w+Q(u*h)));N[e+36>>2]=m+Q(Q(n*f)+Q(Q(p*g)+Q(h*q)));N[e+32>>2]=i+Q(Q(j*f)+Q(Q(k*g)+Q(l*h)));r=s+r|0;N[d+s>>2]=x+N[r>>2];J[y>>2]=-1082130432;i=N[b+32>>2];j=N[b>>2];k=N[b+16>>2];l=N[b+36>>2];m=N[b+4>>2];n=N[b+20>>2];f=N[b+40>>2];g=N[b+8>>2];h=N[b+24>>2];J[e+12>>2]=0;o=f;f=N[e+72>>2];p=g;g=N[e+64>>2];q=h;h=N[e+68>>2];N[e+8>>2]=Q(o*f)+Q(Q(p*g)+Q(q*h));N[e+4>>2]=Q(l*f)+Q(Q(m*g)+Q(h*n));N[e>>2]=Q(i*f)+Q(Q(j*g)+Q(k*h));Zi[J[J[a>>2]+60>>2]](e+16|0,a,e);i=N[b+48>>2];j=N[b+8>>2];k=N[b>>2];l=N[b+4>>2];m=N[b+52>>2];n=N[b+24>>2];p=N[b+16>>2];q=N[b+20>>2];f=N[b+56>>2];g=N[b+40>>2];h=N[b+32>>2];u=N[b+36>>2];J[e+44>>2]=0;o=f;f=N[e+24>>2];v=Q(g*f);g=N[e+16>>2];w=Q(h*g);h=N[e+20>>2];N[e+40>>2]=o+Q(v+Q(w+Q(u*h)));N[e+36>>2]=m+Q(Q(n*f)+Q(Q(p*g)+Q(h*q)));N[e+32>>2]=i+Q(Q(j*f)+Q(Q(k*g)+Q(l*h)));N[c+s>>2]=N[r>>2]-x;t=t+1|0;if((t|0)!=3){continue}break}Ui=e+80|0}function Pna(a){a=a|0;var b=0,c=0,d=0,e=0,f=0,g=0,h=0,i=0;d=J[J[a+16>>2]>>2];a:{b=J[a+8>>2];e=J[b+4>>2];c=J[b>>2];if((e|0)==(c|0)){break a}a=e-c>>2;f=a>>>0<=1?1:a;a=0;while(1){g=c+(a<<2)|0;if(J[g>>2]!=(d|0)){a=a+1|0;if((f|0)!=(a|0)){continue}break a}break}J[g>>2]=J[e-4>>2];a=J[b+4>>2]-4|0;J[b+4>>2]=a;if(a>>>0>=M[b>>2]){break a}Z(12682,53895,540,43537);B()}b:{c=qv(J[J[J[d+4>>2]+80>>2]+8>>2]);a=J[c+80>>2];if(!a){break b}g=J[c+76>>2]+((d>>>0)%(a>>>0)<<2)|0;b=J[g>>2];if((b|0)==-1){break b}f=J[c+84>>2];a=b;while(1){a=P(a,12)+f|0;if(J[a>>2]!=(d|0)){a=J[a+8>>2];if((a|0)!=-1){continue}break b}break}c:{a=L[a+4>>1];if((a|0)!=65535){h=J[c+16>>2];i=J[c+20>>2]-h>>1;while(1){a=a&65535;if(a>>>0>=i>>>0){break c}a=L[h+(a<<1)>>1];e=J[c>>2];if(a>>>0>=(J[c+4>>2]-e|0)/104>>>0){break c}e=e+P(a,104)|0;J[e+76>>2]=0;J[e+80>>2]=0;a=L[e+90>>1];J[e+84>>2]=0;J[e+88>>2]=-1;if((a|0)!=65535){continue}break}}e=0;d:{a=P(b,12)+f|0;if(J[a>>2]==(d|0)){break d}while(1){e=a;b=J[a+8>>2];if((b|0)!=-1){a=P(b,12)+f|0;if(J[a>>2]!=(d|0)){continue}break d}break}Z(152754,55629,366,62656);B()}J[c+100>>2]=J[c+100>>2]-1;a=P(b,12)+f|0;J[(e?e+8|0:g)>>2]=J[a+8>>2];e=J[c+96>>2];J[c+96>>2]=b;J[a+8>>2]=e;break b}Z(145396,53895,487,84789);B()}a=J[J[d>>2]>>2];e=J[a+8>>2]-J[a+12>>2]>>4;Nj(a,-1e4,J[d+12>>2]);Ok(a);IB(J[d+8>>2]);b=J[a+8>>2];J[b+8>>2]=0;J[a+8>>2]=b+16;Ok(a);hk(a,-1e4,J[d+20>>2]);hk(a,-1e4,J[d+12>>2]);hk(a,-1e4,J[d+16>>2]);b=J[d+28>>2];if(b){c=J[b+4>>2];if(c){Zi[c|0](J[b+8>>2])}c=J[b+16>>2];if(c){Zi[c|0](J[b+20>>2])}c=J[b+28>>2];if(c){Zi[c|0](J[b+32>>2])}cj(b)}J[d+8>>2]=0;J[d+12>>2]=0;J[d+32>>2]=0;J[d+24>>2]=0;J[d+28>>2]=0;J[d>>2]=0;J[d+4>>2]=0;J[d+16>>2]=-2;J[d+20>>2]=-2;J[d+12>>2]=-2;if(J[a+8>>2]-J[a+12>>2]>>4!=(e|0)){Z(143244,37509,2565,70357);B()}return 0}function HN(a,b,c){var d=0,e=0,f=0,g=0,h=0,i=0,j=0,k=0,l=0,m=0,n=0,o=0;d=Ui-32|0;Ui=d;a:{switch(b+1|0){case 1:Z(112335,55629,156,2284);B();case 0:Z(94770,55629,157,2284);B();default:break a}}if((c|0)!=-1){e=J[a+8>>2];if((J[a+16>>2]-e|0)/184>>>0<=c>>>0){b:{if(!e){J[a+4>>2]=b;e=b<<2;b=sj(e);J[a>>2]=b;ij(b,255,e);b=P(c,184);c=sj(b);J[a+12>>2]=c;J[a+8>>2]=c;J[a+16>>2]=b+c;break b}J[d+16>>2]=0;J[d+20>>2]=0;J[d+24>>2]=0;J[d+28>>2]=0;J[d+8>>2]=0;J[d+12>>2]=0;J[d>>2]=0;J[d+4>>2]=0;J[d+20>>2]=-1;HN(d,b,c);e=J[a+4>>2];if(e){l=J[d+16>>2];g=J[d+8>>2];o=(l-g|0)/184|0;c=J[d+12>>2];while(1){b=J[J[a>>2]+(i<<2)>>2];if((b|0)!=-1){j=J[d+24>>2];m=J[d>>2];while(1){c:{d:{e:{if((j|0)!=(o|0)){k=J[a+8>>2]+P(b,184)|0;n=k+4|0;h=J[k>>2];f=J[d+4>>2];f:{if(!f){break f}b=J[((h>>>0)%(f>>>0)<<2)+m>>2];if((b|0)==-1){break f}while(1){b=P(b,184)+g|0;if((h|0)==J[b>>2]){break e}b=J[b+180>>2];if((b|0)!=-1){continue}break}}g:{if((c|0)!=(l|0)){e=c+184|0;break g}b=J[d+20>>2];if((b|0)==-1){break d}b=P(b,184)+g|0;J[d+20>>2]=J[b+180>>2];e=c;c=b}J[c>>2]=h;hj(c+4|0,n,176);J[c+180>>2]=-1;f=((h>>>0)%(f>>>0)<<2)+m|0;b=J[f>>2];if((b|0)!=-1){while(1){f=P(b,184)+g|0;b=J[f+180>>2];if((b|0)!=-1){continue}break}f=f+180|0}J[f>>2]=(c-g|0)/184;j=J[d+24>>2]+1|0;J[d+24>>2]=j;c=e;break c}J[d+12>>2]=c;Z(144851,55629,229,9606);B()}hj(b+4|0,n,176);break c}J[d+12>>2]=c;Z(152203,55629,537,2838);B()}b=J[k+180>>2];if((b|0)!=-1){continue}break}e=J[a+4>>2]}i=i+1|0;if(i>>>0>>0){continue}break}J[d+12>>2]=c}cj(J[a>>2]);cj(J[a+8>>2]);b=J[d+28>>2];J[a+24>>2]=J[d+24>>2];J[a+28>>2]=b;b=J[d+20>>2];J[a+16>>2]=J[d+16>>2];J[a+20>>2]=b;b=J[d+12>>2];J[a+8>>2]=J[d+8>>2];J[a+12>>2]=b;b=J[d+4>>2];J[a>>2]=J[d>>2];J[a+4>>2]=b}Ui=d+32|0;return}Z(144759,55629,159,2284);B()}Z(94750,55629,158,2284);B()}function ela(a,b){a=a|0;b=b|0;var c=0,d=0,e=0,f=Q(0);c=Ui-256|0;Ui=c;e=J[a>>2];d=J[J[a+24>>2]>>2];H[c+237|0]=0;H[c+238|0]=0;H[c+239|0]=0;H[c+240|0]=0;H[c+241|0]=0;H[c+242|0]=0;H[c+243|0]=0;H[c+244|0]=0;J[c+232>>2]=0;J[c+236>>2]=0;J[c+224>>2]=0;J[c+228>>2]=0;Gx(e,J[d+4>>2],c+208|0);e=J[a+16>>2];a=J[a+20>>2];a:{b:{if((e|0)==J[75966]&(a|0)==J[75967]){f=N[c+228>>2];a=c+136|0;J[a>>2]=0;O[a+8>>3]=f;hj(b+32|0,a,72);break b}if(J[75968]==(e|0)&J[75969]==(a|0)){f=N[c+232>>2];a=c+136|0;J[a>>2]=0;O[a+8>>3]=f;hj(b+32|0,a,72);break b}if(J[75970]==(e|0)&J[75971]==(a|0)){f=N[c+236>>2];a=c+136|0;J[a>>2]=0;O[a+8>>3]=f;hj(b+32|0,a,72);break b}if(J[75972]==(e|0)&J[75973]==(a|0)){f=N[c+240>>2];a=c+136|0;J[a>>2]=0;O[a+8>>3]=f;hj(b+32|0,a,72);break b}if(J[75974]==(e|0)&J[75975]==(a|0)){N[c+64>>2]=N[d+80>>2];N[c+68>>2]=N[d+84>>2];N[c+72>>2]=N[d+88>>2];N[c+76>>2]=N[d+92>>2];N[c+80>>2]=N[d+96>>2];N[c+84>>2]=N[d+100>>2];N[c+88>>2]=N[d+104>>2];N[c+92>>2]=N[d+108>>2];N[c+96>>2]=N[d+112>>2];N[c+100>>2]=N[d+116>>2];N[c+104>>2]=N[d+120>>2];N[c+108>>2]=N[d+124>>2];N[c+112>>2]=N[d+128>>2];N[c+116>>2]=N[d+132>>2];N[c+120>>2]=N[d+136>>2];N[c+124>>2]=N[d+140>>2];hj(b+32|0,Ey(c+136|0,c- -64|0),72);break b}if(J[75976]==(e|0)&J[75977]==(a|0)){N[c>>2]=N[d+16>>2];N[c+4>>2]=N[d+20>>2];N[c+8>>2]=N[d+24>>2];N[c+12>>2]=N[d+28>>2];N[c+16>>2]=N[d+32>>2];N[c+20>>2]=N[d+36>>2];N[c+24>>2]=N[d+40>>2];N[c+28>>2]=N[d+44>>2];N[c+32>>2]=N[d+48>>2];N[c+36>>2]=N[d+52>>2];N[c+40>>2]=N[d+56>>2];N[c+44>>2]=N[d+60>>2];N[c+48>>2]=N[d+64>>2];N[c+52>>2]=N[d+68>>2];N[c+56>>2]=N[d+72>>2];N[c+60>>2]=N[d+76>>2];hj(b+32|0,Ey(c+136|0,c),72);break b}d=-1;if((e|0)!=J[75978]|(a|0)!=J[75979]){break a}f=N[c+224>>2];a=c+136|0;J[a>>2]=0;O[a+8>>3]=f;hj(b+32|0,a,72)}d=0}Ui=c+256|0;return d|0}function g8(a){a=a|0;var b=0,c=0,d=0,e=0,f=0,g=0,h=0,i=0,j=0,k=0,l=0,m=0,n=0,o=0,p=0,q=0,r=0,s=0,t=0,u=0,v=0,w=0,x=Q(0),y=0;g=Ui-32|0;Ui=g;b=1;s=J[a+8>>2]-J[a+12>>2]>>4;o=mk(a,1);p=Yi;k=Ej(a,2);h=Ej(a,3);d=Aj(a,4,0);Oj(a,5,4);e=Ij(a,5,g+28|0);Bj(a);l=qj(a,-1,J[219396],139183);gj(a,-2);if((s|0)>=6){Oj(a,6,1);b=!ck(a,6)}a:{if(!jj(d,82806)){break a}if(!jj(d,84155)){j=1;break a}if(!(K[d+1|0]|K[d|0]!=108)){j=2;break a}J[g+16>>2]=d;fj(a,146753,g+16|0)}d=b;m=J[g+28>>2];i=Ui-16|0;Ui=i;c=-7;b=J[l+164>>2];b:{if(!b){break b}b=J[J[l+160>>2]+(mxa(o,p,b)<<2)>>2];if((b|0)==-1){break b}f=J[l+168>>2];while(1){q=f+P(b,40)|0;b=q;if(J[b>>2]!=(o|0)|J[b+4>>2]!=(p|0)){b=J[b+32>>2];if((b|0)!=-1){continue}break b}break}b=sj(m);c:{if(d){c=k;d:{e:{switch(j|0){case 0:c=P(k,3);break d;case 1:break e;default:break d}}c=k<<2}if((P(c,h)|0)!=(m|0)){dj(4,93318,119537,0);cj(b);c=-9;break b}if(!h){break c}t=h&3;f=0;n=0-c|0;e=e+m|0;f:{if(h>>>0<4){d=b;break f}y=h&-4;d=b;while(1){u=e+n|0;v=u+n|0;w=v+n|0;e=w+n|0;d=hj(hj(hj(hj(d,u,c)+c|0,v,c)+c|0,w,c)+c|0,e,c)+c|0;f=f+4|0;if((y|0)!=(f|0)){continue}break}}if(!t){break c}f=0;while(1){e=e+n|0;d=hj(d,e,c)+c|0;f=f+1|0;if((t|0)!=(f|0)){continue}break}break c}hj(b,e,m)}if(!b){c=-9;break b}Zi[J[l+452>>2]](l,o,p,k,h,j,b);cj(b);J[q+20>>2]=j;d=k&65535;J[q+24>>2]=d|h<<16;c=0;r=+(m>>>0)*.0009765625*.0009765625-+(P(P(d,h&65535),j>>>0<=3?J[(j<<2)+196300>>2]:0)>>>0);g:{if(r<4294967296&r>=0){b=~~r>>>0;break g}b=0}x=Q(0-b>>>0);N[i+8>>2]=x;N[219138]=N[219138]+x;b=J[i+12>>2];J[i>>2]=J[i+8>>2];J[i+4>>2]=b}Ui=i+16|0;if(c){J[g>>2]=c;dj(3,93318,141645,g);b=0}else{b=1}d=J[a+8>>2];J[d+8>>2]=1;J[d>>2]=(b|0)!=0;J[a+8>>2]=J[a+8>>2]+16;if((s+1|0)!=J[a+8>>2]-J[a+12>>2]>>4){Z(143334,37682,2270,83696);B()}Ui=g+32|0;return 1}function rn(a,b,c,d){var e=0,f=0,g=0,h=0,i=0;e=Ui-16|0;Ui=e;h=fk(J[d>>2],J[b>>2],J[b+4>>2]);i=fk(J[d>>2],J[a>>2],J[a+4>>2]);g=fk(J[d>>2],J[c>>2],J[c+4>>2]);f=fk(J[d>>2],J[b>>2],J[b+4>>2]);a:{if(h>>>0>=i>>>0){if(f>>>0<=g>>>0){break a}f=J[b+12>>2];J[e+8>>2]=J[b+8>>2];J[e+12>>2]=f;f=J[b+4>>2];J[e>>2]=J[b>>2];J[e+4>>2]=f;f=J[c+12>>2];J[b+8>>2]=J[c+8>>2];J[b+12>>2]=f;f=J[c+4>>2];J[b>>2]=J[c>>2];J[b+4>>2]=f;f=J[e+12>>2];J[c+8>>2]=J[e+8>>2];J[c+12>>2]=f;f=J[e+4>>2];J[c>>2]=J[e>>2];J[c+4>>2]=f;if(fk(J[d>>2],J[b>>2],J[b+4>>2])>>>0>=fk(J[d>>2],J[a>>2],J[a+4>>2])>>>0){break a}c=J[a+12>>2];J[e+8>>2]=J[a+8>>2];J[e+12>>2]=c;c=J[a+4>>2];J[e>>2]=J[a>>2];J[e+4>>2]=c;c=J[b+12>>2];J[a+8>>2]=J[b+8>>2];J[a+12>>2]=c;c=J[b+4>>2];J[a>>2]=J[b>>2];J[a+4>>2]=c;a=J[e+12>>2];J[b+8>>2]=J[e+8>>2];J[b+12>>2]=a;a=J[e+4>>2];J[b>>2]=J[e>>2];J[b+4>>2]=a;break a}if(f>>>0>g>>>0){b=J[a+12>>2];J[e+8>>2]=J[a+8>>2];J[e+12>>2]=b;b=J[a+4>>2];J[e>>2]=J[a>>2];J[e+4>>2]=b;b=J[c+12>>2];J[a+8>>2]=J[c+8>>2];J[a+12>>2]=b;b=J[c+4>>2];J[a>>2]=J[c>>2];J[a+4>>2]=b;a=J[e+12>>2];J[c+8>>2]=J[e+8>>2];J[c+12>>2]=a;a=J[e+4>>2];J[c>>2]=J[e>>2];J[c+4>>2]=a;break a}f=J[a+12>>2];J[e+8>>2]=J[a+8>>2];J[e+12>>2]=f;f=J[a+4>>2];J[e>>2]=J[a>>2];J[e+4>>2]=f;f=J[b+12>>2];J[a+8>>2]=J[b+8>>2];J[a+12>>2]=f;f=J[b+4>>2];J[a>>2]=J[b>>2];J[a+4>>2]=f;a=J[e+12>>2];J[b+8>>2]=J[e+8>>2];J[b+12>>2]=a;a=J[e+4>>2];J[b>>2]=J[e>>2];J[b+4>>2]=a;if(fk(J[d>>2],J[c>>2],J[c+4>>2])>>>0>=fk(J[d>>2],J[b>>2],J[b+4>>2])>>>0){break a}a=J[b+12>>2];J[e+8>>2]=J[b+8>>2];J[e+12>>2]=a;a=J[b+4>>2];J[e>>2]=J[b>>2];J[e+4>>2]=a;a=J[c+12>>2];J[b+8>>2]=J[c+8>>2];J[b+12>>2]=a;a=J[c+4>>2];J[b>>2]=J[c>>2];J[b+4>>2]=a;a=J[e+12>>2];J[c+8>>2]=J[e+8>>2];J[c+12>>2]=a;a=J[e+4>>2];J[c>>2]=J[e>>2];J[c+4>>2]=a}Ui=e+16|0}function jla(a){a=a|0;var b=0,c=0,d=0,e=0,f=0,g=0;b=Ui-128|0;Ui=b;f=2;g=pj(b+108|0,a,2,36518,119);J[b+88>>2]=0;J[b+92>>2]=0;J[b+80>>2]=0;J[b+84>>2]=0;J[b+72>>2]=0;J[b+76>>2]=0;J[b+64>>2]=0;J[b+68>>2]=0;Mn(a,80447,b+104|0,b+100|0,b- -64|0);a:{b:{if(!kj(a,2)){break b}e=Aj(a,2,0);c=ul(e,46);if(c){if(!jj(c,82168)){break b}}c=dm(J[b+64>>2],J[b+68>>2]);d=tj(J[b+80>>2],J[b+84>>2]);J[b+60>>2]=tj(J[b+88>>2],J[b+92>>2]);J[b+56>>2]=d;J[b+52>>2]=c;J[b+48>>2]=e;f=fj(a,72798,b+48|0);break a}c:{d:{e:{f:{c=J[b+100>>2];d=-1;g:{if(K[c+58|0]&32){break g}d=-2;if(J[c+36>>2]){break g}d=-3;if(K[J[J[c+32>>2]>>2]+4|0]!=1){break g}d=J[c+136>>2];if(d){cj(d)}if(e){d=Gk(e)}else{d=0}J[c+136>>2]=d;d=0}switch(d+3|0){case 0:break c;case 1:break d;case 2:break e;case 3:break f;default:break a}}c=J[a+8>>2];J[c+8>>2]=1;J[c>>2]=1;J[a+8>>2]=J[a+8>>2]+16;c=J[a+8>>2];J[c+8>>2]=0;J[a+8>>2]=c+16;break a}c=J[a+8>>2];J[c+8>>2]=1;J[c>>2]=0;J[a+8>>2]=J[a+8>>2]+16;c=J[a+8>>2];J[c+8>>2]=3;O[c>>3]=-1;J[a+8>>2]=J[a+8>>2]+16;a=dm(J[b+64>>2],J[b+68>>2]);c=tj(J[b+80>>2],J[b+84>>2]);J[b+12>>2]=tj(J[b+88>>2],J[b+92>>2]);J[b+8>>2]=c;J[b+4>>2]=a;J[b>>2]=e;dj(4,88458,57267,b);break a}c=J[a+8>>2];J[c+8>>2]=1;J[c>>2]=0;J[a+8>>2]=J[a+8>>2]+16;c=J[a+8>>2];J[c+8>>2]=3;O[c>>3]=-2;J[a+8>>2]=J[a+8>>2]+16;a=dm(J[b+64>>2],J[b+68>>2]);c=tj(J[b+80>>2],J[b+84>>2]);J[b+28>>2]=tj(J[b+88>>2],J[b+92>>2]);J[b+24>>2]=c;J[b+20>>2]=a;J[b+16>>2]=e;dj(4,88458,150255,b+16|0);break a}c=J[a+8>>2];J[c+8>>2]=1;J[c>>2]=0;J[a+8>>2]=J[a+8>>2]+16;c=J[a+8>>2];J[c+8>>2]=3;O[c>>3]=-3;J[a+8>>2]=J[a+8>>2]+16;a=dm(J[b+64>>2],J[b+68>>2]);c=tj(J[b+80>>2],J[b+84>>2]);J[b+44>>2]=tj(J[b+88>>2],J[b+92>>2]);J[b+40>>2]=c;J[b+36>>2]=a;J[b+32>>2]=e;dj(4,88458,75646,b+32|0)}oj(g);Ui=b+128|0;return f|0}function i7(a,b,c){a=a|0;b=b|0;c=c|0;var d=0,e=0,f=Q(0),g=Q(0),h=0,i=0,j=0,k=0,l=0,m=0,n=0,o=0,p=Q(0),q=0,r=Q(0),s=Q(0);e=Ui-128|0;Ui=e;k=J[a+8>>2];i=J[k+12>>2];o=J[k+20>>2];a:{if(!(i|o)|!(K[b+4|0]&2)){break a}d=J[c+16>>2];b:{if((d|0)<=0){break b}j=d&3;c:{if(d>>>0<4){d=0;break c}n=d&2147483644;d=0;while(1){h=(d<<2)+c|0;f=N[h>>2];g=g>f?g:f;f=N[h+4>>2];g=g>f?g:f;f=N[h+8>>2];g=g>f?g:f;f=N[h+12>>2];g=g>f?g:f;d=d+4|0;l=l+4|0;if((n|0)!=(l|0)){continue}break}}if(!j){break b}while(1){f=N[(d<<2)+c>>2];g=g>f?g:f;d=d+1|0;m=m+1|0;if((j|0)!=(m|0)){continue}break}}if(N[J[J[a+4>>2]+36>>2]+72>>2]>g){break a}n=J[b+60>>2];l=J[b+56>>2];h=J[b+52>>2];j=J[b+48>>2];if(i){Zi[i|0](J[j+48>>2],L[J[j+40>>2]+P(P(l,H[J[j+12>>2]+20|0]&1),6)>>1],J[h+48>>2],L[J[h+40>>2]+P(P(n,H[J[h+12>>2]+20|0]&1),6)>>1],J[k+16>>2])|0}if(!o){break a}k=b- -64|0;d=J[b+48>>2];i=J[d+8>>2]+12|0;f=N[J[d+12>>2]+8>>2];d=J[b+52>>2];UE(e+104|0,k,i,f,J[d+8>>2]+12|0,N[J[d+12>>2]+8>>2]);b=J[b+132>>2];d=J[c+16>>2];m=(b|0)<(d|0)?b:d;if((m|0)<=0){break a}g=N[J[J[a+4>>2]+36>>2]+68>>2];q=e+112|0;d=0;while(1){b=(d<<3)+q|0;f=Q(g*N[b>>2]);N[e>>2]=f;p=N[b+4>>2];J[e+24>>2]=0;N[e+16>>2]=f;J[e+8>>2]=0;f=Q(g*p);N[e+20>>2]=f;N[e+4>>2]=f;b=J[j+8>>2];J[e+64>>2]=J[b+148>>2];i=J[h+8>>2];J[e+68>>2]=J[i+148>>2];N[e+32>>2]=N[e+104>>2];J[e+40>>2]=0;N[e+36>>2]=N[e+108>>2];f=N[b+64>>2];p=N[i+64>>2];r=N[b+68>>2];s=N[i+68>>2];J[e+56>>2]=0;N[e+52>>2]=g*Q(s-r);N[e+48>>2]=g*Q(p-f);N[e+72>>2]=g*N[(k+P(d,24)|0)+20>>2];N[e+76>>2]=g*N[(d<<2)+c>>2];N[e+80>>2]=N[b+116>>2];N[e+84>>2]=N[i+116>>2];I[e+88>>1]=L[J[j+40>>2]+P(P(l,H[J[j+12>>2]+20|0]&1),6)>>1];I[e+90>>1]=L[J[h+40>>2]+P(P(n,H[J[h+12>>2]+20|0]&1),6)>>1];Zi[o|0](e,J[J[a+8>>2]+24>>2])|0;d=d+1|0;if((m|0)!=(d|0)){continue}break}}Ui=e+128|0}function Iua(a,b){a=a|0;b=b|0;var c=0,d=Q(0),e=Q(0),f=Q(0),g=Q(0),h=0,i=Q(0),j=Q(0),k=Q(0),l=Q(0),m=Q(0),n=Q(0),o=Q(0),p=0,q=Q(0),r=Q(0),s=Q(0),t=Q(0),u=Q(0),v=Q(0),w=Q(0),x=Q(0),y=Q(0),z=Q(0),A=Q(0),B=Q(0);c=Ui+-64|0;Ui=c;h=J[b+24>>2];p=h+P(J[a+120>>2],12)|0;s=N[p+4>>2];t=N[p>>2];h=h+P(J[a+116>>2],12)|0;u=N[h+4>>2];v=N[h>>2];q=N[h+8>>2];r=N[p+8>>2];w=N[a+160>>2];x=N[a+156>>2];j=N[a+140>>2];e=N[a+80>>2];f=N[a+144>>2];o=N[a+84>>2];m=N[a+148>>2];n=N[a+88>>2];A=N[a+152>>2];B=N[a+92>>2];k=N[a+164>>2];g=N[a+168>>2];N[c+60>>2]=k+g;i=Hj(r);d=Rj(r);l=Hj(q);y=Rj(q);z=Q(e-j);f=Q(o-f);j=Q(Q(y*z)-Q(l*f));o=Q(n-m);m=Q(B-A);e=Q(Q(d*o)-Q(i*m));n=Q(Q(k*j)+Q(g*e));N[c+56>>2]=n;N[c+48>>2]=n;l=Q(Q(l*z)+Q(y*f));f=Q(-l);i=Q(Q(i*o)+Q(d*m));d=Q(Q(k*f)-Q(g*i));N[c+52>>2]=d;N[c+36>>2]=d;d=Q(Q(k*Q(j*f))-Q(g*Q(i*e)));N[c+40>>2]=d;f=Q(x+w);N[c+28>>2]=Q(g*Q(i*i))+Q(Q(k*Q(l*l))+f);N[c+44>>2]=Q(g*Q(e*e))+Q(Q(k*Q(j*j))+f);N[c+32>>2]=d;a:{if(N[a+68>>2]>Q(0)){d=Q(Q(Q(t+e)-v)-j);N[c+16>>2]=d;f=Q(Q(Q(s+i)-u)-l);N[c+20>>2]=f;zt(c+4|0,c+28|0,c+16|0);m=g;g=N[c+4>>2];n=e;e=N[c+8>>2];i=Q(Q(m*Q(Q(i*g)-Q(n*e)))+r);k=Q(q-Q(k*Q(Q(l*g)-Q(j*e))));p=1;j=Q(Y(Q(Q(d*d)+Q(f*f))));break a}d=Q(Q(r-q)-N[a+96>>2]);N[c+24>>2]=d;p=(d>Q(0)?d:Q(-d))<=Q(.03490658849477768);d=Q(Q(Q(t+e)-v)-j);N[c+16>>2]=d;f=Q(Q(Q(s+i)-u)-l);N[c+20>>2]=f;rz(c+4|0,c+28|0,c+16|0);m=g;g=N[c+4>>2];n=e;e=N[c+8>>2];o=N[c+12>>2];i=Q(Q(m*Q(Q(Q(i*g)-Q(n*e))-o))+r);k=Q(q-Q(k*Q(Q(Q(l*g)-Q(j*e))-o)));j=Q(Y(Q(Q(d*d)+Q(f*f))))}h=J[b+24>>2]+P(J[a+116>>2],12)|0;N[h+4>>2]=u+Q(x*e);N[h>>2]=v+Q(x*g);h=J[b+24>>2];N[(h+P(J[a+116>>2],12)|0)+8>>2]=k;h=h+P(J[a+120>>2],12)|0;N[h+4>>2]=s-Q(w*e);N[h>>2]=t-Q(w*g);N[(J[b+24>>2]+P(J[a+120>>2],12)|0)+8>>2]=i;Ui=c- -64|0;return j<=Q(.004999999888241291)&p} +function SK(a){var b=0,c=0,d=0,e=0,f=0,g=0;f=Ui-16|0;Ui=f;b=J[a+8420>>2];if(b){QM(b);J[a+8420>>2]=0}b=J[a+6192>>2];c=J[a+6196>>2];if(b|c){Eo(b,c)}b=J[a+6164>>2];if(b){On(b)}b=J[a+8412>>2];if(b){wK(J[a+8408>>2],b);wx(J[a+8412>>2]);J[a+8412>>2]=0}b=J[a+8408>>2];if(b){a:{e=J[b+52>>2];Tj(e);b:{d=J[b+4>>2];c=J[b>>2];if((d|0)!=(c|0)){c=d-c>>4;d=c>>>0<=1?1:c;while(1){c=J[b>>2];if(J[b+4>>2]-c>>4>>>0<=g>>>0){break b}c=c+(g<<4)|0;cj(J[c>>2]);wx(J[c+4>>2]);g=g+1|0;if((d|0)!=(g|0)){continue}break}c=J[b>>2]}J[b+4>>2]=c;ij(J[b+16>>2],255,J[b+20>>2]<<2);J[b+36>>2]=-1;J[b+40>>2]=0;J[b+28>>2]=J[b+24>>2];Lj(e);On(J[b+52>>2]);c:{if(H[b+44|0]&1){break c}c=J[b+24>>2];if(c){cj(c)}c=J[b+16>>2];if(!c){break c}cj(c)}d:{if(H[b+12|0]&1){break d}c=J[b>>2];if(!c){break d}cj(c)}cj(b);break a}Z(145396,53895,487,84789);B()}}b=J[a>>2];e:{if(!b|!J[b+24>>2]){break e}e=0;dj(4,96538,102614,0);d=J[a>>2];c=J[d+4>>2];if(!c){break e}while(1){b=J[J[d>>2]+(e<<2)>>2];if((b|0)!=-1){while(1){c=J[d+8>>2]+P(b,56)|0;b=tj(J[c>>2],J[c+4>>2]);J[f+4>>2]=J[c+36>>2];J[f>>2]=b;dj(4,96538,8729,f);b=J[c+48>>2];if((b|0)!=-1){continue}break}c=J[d+4>>2]}e=e+1|0;if(c>>>0>e>>>0){continue}break}}cj(J[a+8388>>2]);c=J[a>>2];if(c){f:{if(H[c+28|0]&1){break f}b=J[c+8>>2];if(b){cj(b)}b=J[c>>2];if(!b){break f}cj(b)}cj(c)}c=J[a+4>>2];if(c){g:{if(H[c+28|0]&1){break g}b=J[c+8>>2];if(b){cj(b)}b=J[c>>2];if(!b){break g}cj(b)}cj(c)}c=J[a+8>>2];if(c){h:{if(H[c+28|0]&1){break h}b=J[c+8>>2];if(b){cj(b)}b=J[c>>2];if(!b){break h}cj(b)}cj(c)}c=J[a+12>>2];if(c){i:{if(H[c+12|0]&1){break i}b=J[c>>2];if(!b){break i}cj(b)}cj(c)}j:{if(H[a+8404|0]&1){break j}b=J[a+8392>>2];if(!b){break j}cj(b)}k:{if(H[a+6184|0]&1){break k}b=J[a+6172>>2];if(!b){break k}cj(b)}cj(a);Ui=f+16|0}function Oja(a){a=a|0;var b=0,c=0,d=0,e=0,f=0,g=0,h=0,i=0,j=0,k=Q(0);b=J[a+80>>2];g=J[b+8>>2];if((g|0)==J[b+4>>2]){io(50002,10964,g-J[b>>2]>>8);return-1e3}i=J[a+76>>2];d=J[i>>2];h=J[b>>2];j=J[b+4>>2]-h|0;g=j>>8;a:{b:{c:{e=J[b+48>>2];d:{if((e|0)!=-1){c=J[b+16>>2];if(e>>>0>=J[b+20>>2]-c>>3>>>0){break a}e=(e<<3)+c|0;J[b+48>>2]=J[e+4>>2];f=g+1|0;break d}f=g+1|0;c=J[b+16>>2];if(f>>>0>J[b+24>>2]-c>>3>>>0){break c}J[b+20>>2]=(f<<3)+c;if((j|0)==-256){break a}e=(g<<3)+c|0}J[e>>2]=g;J[e+4>>2]=-1;if(J[b+8>>2]-h>>8>>>0>>0){break c}J[b+4>>2]=(f<<8)+h;f=J[b+32>>2];if(g>>>0>=J[b+36>>2]-f>>2>>>0){break a}f=f+(g<<2)|0;g=e-c>>3;J[f>>2]=g;break b}Z(144782,53895,514,59583);B()}c=J[b+16>>2];if(g>>>0>2]-c>>3>>>0){c=J[c+(g<<3)>>2];e=J[b+4>>2];b=J[b>>2];if(c>>>0>8>>>0){b=ij(b+(c<<8)|0,0,256);J[b>>2]=J[a>>2];N[b+64>>2]=N[a+48>>2];N[b+68>>2]=N[a+52>>2];N[b+72>>2]=N[a+56>>2];N[b+16>>2]=N[a+16>>2];N[b+20>>2]=N[a+20>>2];N[b+24>>2]=N[a+24>>2];N[b+32>>2]=N[a+32>>2];N[b+36>>2]=N[a+36>>2];N[b+40>>2]=N[a+40>>2];k=N[a+44>>2];J[b+216>>2]=i;N[b+44>>2]=k;J[b+208>>2]=255;J[b+212>>2]=0;J[b+200>>2]=0;c=L[a+92>>1];I[b+246>>1]=1;I[b+244>>1]=c;c=J[d>>2];e=J[d+4>>2];N[b+56>>2]=N[d+8>>2];J[b+48>>2]=c;J[b+52>>2]=e;c=J[d+32>>2];e=J[d+36>>2];f=J[d+44>>2];J[b+88>>2]=J[d+40>>2];J[b+92>>2]=f;J[b+80>>2]=c;J[b+84>>2]=e;c=J[d+48>>2];e=J[d+52>>2];f=J[d+60>>2];J[b+104>>2]=J[d+56>>2];J[b+108>>2]=f;J[b+96>>2]=c;J[b+100>>2]=e;c=J[d+64>>2];e=J[d+68>>2];f=J[d+76>>2];J[b+120>>2]=J[d+72>>2];J[b+124>>2]=f;J[b+112>>2]=c;J[b+116>>2]=e;J[b+192>>2]=J[d+88>>2];c=J[d+100>>2];I[b+246>>1]=9;J[b+240>>2]=c;N[b+232>>2]=N[d+80>>2];N[b+236>>2]=N[d+84>>2];I[b+246>>1]=(K[d+96|0]<<4|9)&25;J[J[a+88>>2]>>2]=g;return 0}}}Z(145396,53895,487,84789);B()}function fxa(a){a=a|0;var b=0,c=0,d=0,e=0,f=0,g=0,h=0;g=Ui-16|0;Ui=g;H[269788]=0;a=K[269788];if(!K[874264]){nl();H[874264]=1}MV(a);a=Ui-272|0;Ui=a;ij(978352,0,1024);ij(877592,0,50376);a:{if(ix(72002,979376)){break a}zl(979376,114114,1024);zl(979376,53254,1024);ek(978352,979376,1024);b=a+8|0;ij(b,0,264);hx(b);ek(877752,b,32);ek(877784,a+40|0,32);ek(877816,a+72|0,32);ek(877848,a+104|0,32);ek(877880,a+168|0,8);ek(877888,a+176|0,16);ek(877904,a+192|0,8);ek(877592,103495,32);ek(877624,82534,128);H[287904]=K[287712];b=J[a+268>>2];if(!b){break a}cj(b)}Ui=a+272|0;c=Ui-16|0;Ui=c;a=J[74432];J[c+12>>2]=a;ij(J[74433],255,J[74434]<<2);J[74438]=-1;J[74439]=0;d=J[74435];J[74436]=d;if(a){while(1){b=J[74439];if((b|0)==J[74437]-d>>4){yN(297732,587,b+128|0);a=J[c+12>>2]}b=bj(J[a+4>>2]);e=Yi;a=J[74434];b:{c:{if(!a){break c}a=J[J[74433]+(mxa(b,e,a)<<2)>>2];if((a|0)==-1){break c}d=J[74435];while(1){a=(a<<4)+d|0;if((b|0)==J[a>>2]&(e|0)==J[a+4>>2]){break b}a=J[a+12>>2];if((a|0)!=-1){continue}break}}pl(297732,b,e,c+12|0);d=J[74435]}a=J[J[c+12>>2]+28>>2];J[c+12>>2]=a;if(a){continue}break}}Ui=c+16|0;J[218810]=0;b=Ui-48|0;Ui=b;J[218576]=0;d:{if(J[218577]){yl(155065,38,1,J[53386]);break d}J[218578]=0;J[b+44>>2]=-1;I[b+42>>1]=0;e:{if(!K[269788]){break e}}J[b+16>>2]=0;J[b+20>>2]=0;if(Cq(55965,b+16|0)){yl(154528,49,1,J[53386]);a=J[b+16>>2];c=J[b+20>>2];if(a|c){Eo(a,c)}a=J[b+44>>2];if((a|0)==-1){break d}Ln(a);break d}a=nj(40);c=J[b+44>>2];d=L[b+42>>1];e=J[b+16>>2];h=J[b+20>>2];f=a+8|0;J[f>>2]=0;J[f+4>>2]=0;J[a>>2]=0;J[a+4>>2]=0;lj(16,4,a,f,a+4|0);J[a+24>>2]=e;J[a+28>>2]=h;I[a+20>>1]=d;J[a+16>>2]=c;J[218579]=a;J[a+32>>2]=0;J[218580]=0;J[218577]=1;J[218581]=0;J[b>>2]=L[b+42>>1];dj(2,99340,8358,b)}Ui=b+48|0;Ui=g+16|0}function QB(a,b,c,d,e,f,g){var h=0,i=0,j=0,k=0,l=0,m=0;h=Ui-3120|0;Ui=h;J[a+2220>>2]=0;J[a+2224>>2]=-1;J[a+2212>>2]=-1;J[a+2216>>2]=0;J[a+2228>>2]=-1;J[a+2232>>2]=-1;J[a+2200>>2]=J[a+2196>>2];i=J[a+2236>>2];J[a+2236>>2]=i&-2;if(!((d|0)==-1|(e|0)==-1)){J[a+2232>>2]=e;J[a+2228>>2]=d;J[a+2236>>2]=i|1}i=c;c=h+2096|0;OK(a+140|0,i,c);k=h+48|0;vJ(c,k);c=J[a+2188>>2];j=Ui-16|0;Ui=j;i=b;a:{if(!jj(b,88289)){b=XM(c,k);break a}b=K[c+2196|0];l=J[c>>2];m=L[c+2198>>1];J[j+12>>2]=k;J[j+8>>2]=m;J[j+4>>2]=l;J[j>>2]=b?19811:36507;Gj(c+4|0,2124,26190,j);J[c+2168>>2]=bl();J[c+2172>>2]=Yi;b=YM(c,k,i)}Ui=j+16|0;b:{c:{d:{e:{f:{g:{switch(b|0){case 0:break f;case 1:break g;default:break e}}c=J[a+2224>>2];if((c|0)==206){break f}if((c|0)!=304){break d}}if(jj(i,98184)){break c}J[f>>2]=J[a+2212>>2];e=0;break b}c=J[a+2224>>2]}if((c|0)==404){e=-2;break b}if(!((c|0)==304|(b|0)!=1)){J[h+16>>2]=c;dj(3,96538,79912,h+16|0);e=-3;break b}c=Ui-16|0;Ui=c;a=93155;h:{i:{switch(b+10|0){case 10:a=93163;break h;case 9:a=89432;break h;case 8:a=89469;break h;case 7:a=95145;break h;case 6:a=87348;break h;case 5:a=94183;break h;case 4:a=89684;break h;case 3:a=94376;break h;case 2:a=89580;break h;case 1:a=97796;break h;case 0:a=92664;break h;case 11:break h;default:break i}}if((b|0)!=-1e3){J[c>>2]=b;dj(4,99340,56371,c);a=97515;break h}a=91141}Ui=c+16|0;J[h+4>>2]=a;J[h>>2]=b;dj(4,96538,27824,h);e=-3;break b}j:{if(J[a+2224>>2]==304){break j}b=J[a+2212>>2];if((b|0)==-1){break j}c=J[a+2220>>2];if((c|0)==(b|0)){break j}J[h+40>>2]=c;J[h+36>>2]=b;J[h+32>>2]=h+48;dj(4,96538,142183,h+32|0)}b=J[a+2220>>2];if(!((d&e)!=-1|b>>>0<=M[f>>2])){e=-3;break b}b=b>>>0>>0?b:e;J[f>>2]=b;e=0;if(!g){break b}hj(g,J[a+2196>>2],b)}Ui=h+3120|0;return e}function Mva(a,b){a=a|0;b=b|0;var c=Q(0),d=Q(0),e=Q(0),f=Q(0),g=0,h=Q(0),i=Q(0),j=0,k=0,l=0,m=Q(0),n=Q(0),o=0,p=Q(0),q=Q(0),r=Q(0),s=Q(0),t=Q(0),u=0,v=Q(0),w=Q(0),x=Q(0),y=Q(0),z=Q(0),A=Q(0);j=J[a+48>>2];u=J[j+8>>2];J[a+104>>2]=u;k=J[a+52>>2];o=J[k+8>>2];J[a+108>>2]=o;q=N[j+32>>2];g=J[j+32>>2];n=N[j+28>>2];l=J[j+28>>2];J[a+128>>2]=l;J[a+132>>2]=g;r=N[k+32>>2];g=J[k+32>>2];e=N[k+28>>2];J[a+136>>2]=J[k+28>>2];J[a+140>>2]=g;s=N[j+120>>2];N[a+144>>2]=s;t=N[k+120>>2];N[a+148>>2]=t;d=N[j+128>>2];N[a+152>>2]=d;p=N[k+128>>2];N[a+156>>2]=p;h=N[a+72>>2];j=P(u,12);k=J[b+24>>2];f=N[(j+k|0)+8>>2];m=Rj(f);i=N[a+68>>2];f=Hj(f);g=J[b+28>>2];o=P(o,12);l=g+o|0;v=N[l+8>>2];w=N[l+4>>2];x=N[l>>2];l=j+g|0;y=N[l+8>>2];z=N[l+4>>2];A=N[l>>2];c=N[(k+o|0)+8>>2];i=Q(i-n);h=Q(h-q);n=Q(Q(f*i)+Q(m*h));N[a+116>>2]=n;m=Q(Q(m*i)-Q(f*h));N[a+112>>2]=m;f=Q(d+p);N[a+176>>2]=f>Q(0)?Q(Q(1)/f):f;f=N[a+80>>2];h=Rj(c);i=N[a+76>>2];c=Hj(c);e=Q(i-e);i=Q(f-r);f=Q(Q(c*e)+Q(h*i));N[a+124>>2]=f;h=Q(Q(h*e)-Q(c*i));N[a+120>>2]=h;c=Q(s+t);e=Q(Q(Q(p*f)*f)+Q(Q(Q(d*n)*n)+c));q=e;e=Q(p*h);i=Q(Q(e*h)+Q(Q(Q(d*m)*m)+c));r=Q(-d);d=Q(Q(Q(m*r)*n)-Q(e*f));c=Q(Q(q*i)-Q(d*d));c=c!=Q(0)?Q(Q(1)/c):c;N[a+172>>2]=q*c;N[a+160>>2]=i*c;d=Q(d*Q(-c));N[a+168>>2]=d;N[a+164>>2]=d;a:{if(K[b+20|0]==1){e=N[b+8>>2];d=Q(e*N[a+84>>2]);N[a+84>>2]=d;c=Q(e*N[a+88>>2]);N[a+88>>2]=c;e=Q(e*N[a+92>>2]);N[a+92>>2]=e;v=Q(Q(p*Q(e+Q(Q(h*c)-Q(f*d))))+v);y=Q(Q(r*Q(e+Q(Q(m*c)-Q(n*d))))+y);w=Q(w+Q(t*c));x=Q(x+Q(t*d));z=Q(z-Q(s*c));A=Q(A-Q(s*d));break a}J[a+92>>2]=0;J[a+84>>2]=0;J[a+88>>2]=0}g=J[b+28>>2]+P(u,12)|0;N[g+4>>2]=z;N[g>>2]=A;g=J[b+28>>2];N[(g+P(J[a+104>>2],12)|0)+8>>2]=y;g=g+P(J[a+108>>2],12)|0;N[g+4>>2]=w;N[g>>2]=x;N[(J[b+28>>2]+P(J[a+108>>2],12)|0)+8>>2]=v}function lT(a){var b=0,c=0,d=0,e=0,f=0,g=0,h=0,i=0,j=0,k=0,l=0,m=0,n=0;a:{l=J[a+36>>2];b=J[a+12>>2];if((l|0)>=(b|0)){break a}b:{if((b|0)<=J[a+40>>2]){d=J[a+44>>2];break b}if(b){d=Yj(b<<2);c=J[a+36>>2]}else{c=l}g=J[a+44>>2];c:{d:{if((c|0)>0){if(c>>>0>=4){j=c&2147483644;while(1){e=f<<2;J[e+d>>2]=J[e+g>>2];h=e|4;J[h+d>>2]=J[g+h>>2];h=e|8;J[h+d>>2]=J[g+h>>2];e=e|12;J[e+d>>2]=J[e+g>>2];f=f+4|0;i=i+4|0;if((j|0)!=(i|0)){continue}break}}c=c&3;if(!c){break d}while(1){e=f<<2;J[e+d>>2]=J[e+g>>2];f=f+1|0;k=k+1|0;if((c|0)!=(k|0)){continue}break}break d}if(g){break d}break c}if(g?K[a+48|0]==1:0){J[83765]=J[83765]+1;Zi[J[61751]](J[g-4>>2])}}J[a+44>>2]=d;H[a+48|0]=1;J[a+40>>2]=b}c=l<<2;j=b<<2;ij(c+d|0,0,j-c|0);J[a+36>>2]=b;g=J[a+56>>2];if((g|0)<(b|0)){e:{if((b|0)<=J[a+60>>2]){d=J[a+64>>2];break e}f:{if(!b){d=0;c=g;break f}d=Yj(j);c=J[a+56>>2]}e=J[a+64>>2];g:{h:{if((c|0)>0){k=0;f=0;if(c>>>0>=4){n=c&2147483644;i=0;while(1){h=f<<2;J[h+d>>2]=J[e+h>>2];m=h|4;J[m+d>>2]=J[e+m>>2];m=h|8;J[m+d>>2]=J[e+m>>2];h=h|12;J[h+d>>2]=J[e+h>>2];f=f+4|0;i=i+4|0;if((n|0)!=(i|0)){continue}break}}c=c&3;if(!c){break h}while(1){i=f<<2;J[i+d>>2]=J[e+i>>2];f=f+1|0;k=k+1|0;if((c|0)!=(k|0)){continue}break}break h}if(e){break h}break g}if(e?K[a+68|0]==1:0){J[83765]=J[83765]+1;Zi[J[61751]](J[e-4>>2])}}J[a+64>>2]=d;H[a+68|0]=1;J[a+60>>2]=b}c=g<<2;ij(c+d|0,0,j-c|0)}J[a+56>>2]=b;if((b|0)>0){ij(J[a+44>>2],255,j);ij(J[a+64>>2],255,j)}if((l|0)<=0){break a}c=J[a+64>>2];g=J[a+44>>2];d=J[a+16>>2];f=0;while(1){b=d+(f<<4)|0;b=J[J[b+4>>2]+12>>2]<<16|J[J[b>>2]+12>>2];b=(b<<15^-1)+b|0;b=P(b>>10^b,9);b=b>>6^b;b=(b<<11^-1)+b|0;b=g+((J[a+12>>2]-1&(b>>16^b))<<2)|0;J[c+(f<<2)>>2]=J[b>>2];J[b>>2]=f;f=f+1|0;if((l|0)!=(f|0)){continue}break}}}function Z2(a){a=a|0;var b=Q(0),c=0,d=Q(0),e=0,f=0,g=Q(0),h=Q(0),i=Q(0),j=Q(0),k=Q(0),l=Q(0),m=Q(0),n=Q(0),o=Q(0),p=Q(0);e=Ui-32|0;Ui=e;J[e+28>>2]=0;J[e+24>>2]=0;c=vn(a,2,e+28|0);a:{b:{if((vn(a,3,e+24|0)|0)!=(c|0)){break b}d=Q(wj(a,1));c:{switch(c|0){case 2:f=J[e+28>>2];j=N[f+12>>2];c=J[e+24>>2];k=N[c+12>>2];p=N[f+8>>2];l=N[c+8>>2];g=N[f+4>>2];m=N[c+4>>2];h=N[f>>2];n=N[c>>2];b=Q(Q(j*k)+Q(Q(p*l)+Q(Q(g*m)+Q(h*n))));if(b>2]=Q(k*b)+Q(j*d);N[c+8>>2]=Q(l*b)+Q(p*d);N[c+4>>2]=Q(m*b)+Q(g*d);N[c>>2]=Q(n*b)+Q(h*d);rj(a,-1e4,16786);Mj(a,-2);a=1;break a;case 1:f=J[e+28>>2];g=N[f+12>>2];c=J[e+24>>2];h=N[c+12>>2];i=N[f+8>>2];o=N[c+8>>2];k=N[f+4>>2];l=N[c+4>>2];m=N[f>>2];n=N[c>>2];b=Q(Q(g*h)+Q(Q(i*o)+Q(Q(k*l)+Q(m*n))));e:{if(b>2]=Q(h*b)+Q(g*d);N[c+8>>2]=Q(o*b)+Q(i*d);N[c+4>>2]=Q(l*b)+Q(k*d);N[c>>2]=Q(n*b)+Q(m*d);rj(a,-1e4,106998);Mj(a,-2);a=1;break a;case 0:break c;default:break b}}f=J[e+28>>2];i=N[f+8>>2];c=J[e+24>>2];o=N[c+8>>2];k=N[f+4>>2];l=N[c+4>>2];m=N[f>>2];n=N[c>>2];b=Q(Q(i*o)+Q(Q(k*l)+Q(m*n)));f:{if(b>2]=Q(o*b)+Q(i*d);N[c+4>>2]=Q(l*b)+Q(k*d);N[c>>2]=Q(n*b)+Q(m*d);rj(a,-1e4,108973);Mj(a,-2);a=1;break a}J[e+20>>2]=16786;J[e+16>>2]=53139;J[e+12>>2]=108973;J[e+8>>2]=53139;J[e+4>>2]=36512;J[e>>2]=53139;a=fj(a,116409,e)}Ui=e+32|0;return a|0}function iE(a,b,c,d){a=a|0;b=b|0;c=c|0;d=d|0;var e=0,f=Q(0),g=0,h=Q(0),i=0,j=0,k=0,l=Q(0),m=0,n=0,o=0,p=Q(0),q=Q(0),r=0,s=0,t=0,u=0;n=Ui-960|0;Ui=n;g=J[(Zi[J[79381]](J[d+224>>2])|0)+84>>2];e=ij(n,0,960);J[e>>2]=a;J[e+4>>2]=b;N[e+8>>2]=N[c>>2];o=L[c+944>>1];a=o<<1;a=a&1536|L[e+956>>1]&-1985|a&64|a&128|(o&128)<<1;I[e+956>>1]=a;h=N[d+492>>2];b=J[d+480>>2];l=Q(N[d+488>>2]*Q(M[d+476>>2]));f=Q(J[c+12>>2]);N[e+12>>2]=l*Q(f+Q(.5));p=Q(b>>>0);h=Q(h*p);b=J[c+16>>2];N[e+16>>2]=p-Q(Q(Q(b|0)+Q(.5))*h);q=Q(J[c+20>>2]);N[e+20>>2]=l*q;i=J[c+24>>2];N[e+36>>2]=q;r=g-1|0;N[e+32>>2]=r-b|0;N[e+28>>2]=f;f=Q(0-i|0);N[e+40>>2]=f;N[e+24>>2]=h*f;N[e+44>>2]=N[c+28>>2];N[e+48>>2]=N[c+32>>2];N[e+52>>2]=N[c+36>>2];i=J[c+524>>2];J[e+540>>2]=i;if((i|0)>0){t=e+56|0;u=c+40|0;g=0;while(1){b=P(g,44);a=b+t|0;b=b+u|0;m=J[b+4>>2];J[a>>2]=J[b>>2];J[a+4>>2]=m;J[a+40>>2]=J[b+40>>2];m=J[b+8>>2];f=Q(l*Q(Q(m|0)+Q(.5)));a:{if(Q(R(f))>2]=j;j=J[b+12>>2];f=Q(p-Q(Q(Q(j|0)+Q(.5))*h));b:{if(Q(R(f))>2]=k;k=J[b+24>>2];f=Q(l*Q(k|0));c:{if(Q(R(f))>2]=s;b=J[b+28>>2];J[a+32>>2]=k;J[a+20>>2]=r-j;J[a+16>>2]=m;b=0-b|0;J[a+36>>2]=b;f=Q(h*Q(b|0));d:{if(Q(R(f))>2]=b;g=g+1|0;if((i|0)!=(g|0)){continue}break}a=L[e+956>>1]}b=J[c+784>>2];J[e+800>>2]=b;a=L[c+788>>1]<<5&32|a&-33;I[e+956>>1]=a;if((b|0)>0){hj(e+544|0,c+528|0,b);a=L[e+956>>1]}J[e+804>>2]=J[c+792>>2];hj(e+812|0,c+800|0,144);I[e+956>>1]=a&65504|o&31;J[e+808>>2]=J[c+796>>2];a=J[d+168>>2];if((a|0)==J[d+172>>2]){Z(112520,53895,557,53220);B()}J[d+168>>2]=a+960;hj(a,e,958);Ui=n+960|0}function Ww(a,b,c){var d=0,e=Q(0),f=Q(0),g=Q(0),h=0;if(!J[a>>2]){J[a>>2]=c;J[c+32>>2]=0;return}d=J[b+40>>2];if(d){f=Q(N[c+8>>2]+N[c+24>>2]);e=Q(N[c+4>>2]+N[c+20>>2]);g=Q(N[c>>2]+N[c+16>>2]);while(1){h=b+36|0;b=J[b+36>>2];b=J[h+(!(Q(Q(Q(R(Q(g-Q(N[b>>2]+N[b+16>>2]))))+Q(R(Q(e-Q(N[b+4>>2]+N[b+20>>2])))))+Q(R(Q(f-Q(N[b+8>>2]+N[b+24>>2])))))>2]+N[d+16>>2]))))+Q(R(Q(e-Q(N[d+4>>2]+N[d+20>>2])))))+Q(R(Q(f-Q(N[d+8>>2]+N[d+24>>2]))))))<<2)>>2];d=J[b+40>>2];if(d){continue}break}}h=J[b+32>>2];d=J[a+4>>2];a:{if(d){J[a+4>>2]=0;break a}d=Yj(44);J[d>>2]=0;J[d+4>>2]=0;J[d+40>>2]=0;J[d+32>>2]=0;J[d+36>>2]=0;J[d+24>>2]=0;J[d+28>>2]=0;J[d+16>>2]=0;J[d+20>>2]=0;J[d+8>>2]=0;J[d+12>>2]=0}J[d+36>>2]=0;J[d+40>>2]=0;J[d+32>>2]=h;f=N[c>>2];e=N[b>>2];N[d>>2]=e>f?f:e;f=N[c+16>>2];e=N[b+16>>2];N[d+16>>2]=e>2];e=N[b+4>>2];N[d+4>>2]=e>f?f:e;f=N[c+20>>2];e=N[b+20>>2];N[d+20>>2]=e>2];e=N[b+8>>2];N[d+8>>2]=e>f?f:e;f=N[c+24>>2];e=N[b+24>>2];N[d+24>>2]=e>2]+40>>2]==(b|0))<<2)+h|0)+36>>2]=d;J[d+36>>2]=b;J[b+32>>2]=d;J[d+40>>2]=c;J[c+32>>2]=d;f=N[d>>2];while(1){a=d;d=h;c:{if(!(N[d>>2]<=f)|!(N[d+4>>2]<=N[a+4>>2])|(!(N[d+8>>2]<=N[a+8>>2])|!(N[d+16>>2]>=N[a+16>>2]))){break c}if(!(N[d+20>>2]>=N[a+20>>2])){break c}if(N[d+24>>2]>=N[a+24>>2]){break b}}a=J[d+36>>2];f=N[a>>2];b=J[d+40>>2];e=N[b>>2];f=e>f?f:e;N[d>>2]=f;e=N[a+16>>2];g=N[b+16>>2];N[d+16>>2]=e>g?e:g;e=N[a+4>>2];g=N[b+4>>2];N[d+4>>2]=e>2];g=N[b+20>>2];N[d+20>>2]=e>g?e:g;e=N[a+8>>2];g=N[b+8>>2];N[d+8>>2]=e>2];g=N[b+24>>2];N[d+24>>2]=e>g?e:g;h=J[d+32>>2];if(h){continue}break}break b}J[d+36>>2]=b;J[b+32>>2]=d;J[d+40>>2]=c;J[c+32>>2]=d;J[a>>2]=d}}function Wqa(a,b){a=a|0;b=b|0;var c=0,d=0,e=0,f=0,g=0,h=0,i=0,j=0,k=0,l=0,m=0,n=0,o=0,p=0;e=Ui-32|0;Ui=e;J[e+24>>2]=0;J[e+16>>2]=0;J[e+20>>2]=0;H[e+28|0]=1;a:{if(J[a+8>>2]<=0){break a}while(1){k=J[a+16>>2]+(m<<4)|0;b:{if((d|0)!=(l|0)){break b}h=d?d<<1:1;if((h|0)<=(d|0)){break b}if(h){c=Yj(h<<4)}else{c=0}c:{d:{if((d|0)>0){f=0;if((d|0)!=1){p=d&2147483646;n=0;while(1){o=f<<4;i=o+c|0;g=j+o|0;J[i>>2]=J[g>>2];J[i+4>>2]=J[g+4>>2];J[i+8>>2]=J[g+8>>2];J[i+12>>2]=J[g+12>>2];g=o|16;i=g+c|0;g=j+g|0;J[i>>2]=J[g>>2];J[i+4>>2]=J[g+4>>2];J[i+8>>2]=J[g+8>>2];J[i+12>>2]=J[g+12>>2];f=f+2|0;n=n+2|0;if((p|0)!=(n|0)){continue}break}}if(!(d&1)){break d}f=f<<4;d=f+c|0;f=f+j|0;J[d>>2]=J[f>>2];J[d+4>>2]=J[f+4>>2];J[d+8>>2]=J[f+8>>2];J[d+12>>2]=J[f+12>>2];break d}if(!j){break c}}if(j){J[83765]=J[83765]+1;Zi[J[61751]](J[j-4>>2])}}J[e+24>>2]=c;H[e+28|0]=1;J[e+20>>2]=h;j=c;d=h}c=(l<<4)+j|0;J[c>>2]=J[k>>2];J[c+4>>2]=J[k+4>>2];J[c+8>>2]=J[k+8>>2];J[c+12>>2]=J[k+12>>2];c=J[e+16>>2];l=c+1|0;J[e+16>>2]=l;m=m+1|0;if((m|0)>2]){continue}break}d=0;if((c|0)<0){break a}if(c){f=c+1&-2;k=0;while(1){h=(d<<4)+j|0;Zi[J[J[a>>2]+12>>2]](a,J[h>>2],J[h+4>>2],b)|0;Zi[J[J[a>>2]+12>>2]](a,J[h+16>>2],J[h+20>>2],b)|0;d=d+2|0;k=k+2|0;if((f|0)!=(k|0)){continue}break}}if(c&1){break a}c=(d<<4)+j|0;Zi[J[J[a>>2]+12>>2]](a,J[c>>2],J[c+4>>2],b)|0}if(J[a+56>>2]>0){c=J[a+64>>2];b=0;while(1){J[c+(b<<2)>>2]=-1;b=b+1|0;if((b|0)>2]){continue}break}}if((l|0)>=2){Sr(e+12|0,0,l-1|0);l=J[e+16>>2]}if((l|0)>0){b=0;while(1){c=J[e+24>>2]+(b<<4)|0;Zi[J[J[a>>2]+8>>2]](a,J[c>>2],J[c+4>>2])|0;b=b+1|0;if((b|0)>2]){continue}break}}a=J[e+24>>2];if(!(a?!a|K[e+28|0]!=1:1)){J[83765]=J[83765]+1;Zi[J[61751]](J[a-4>>2])}Ui=e+32|0}function Rm(a,b,c){var d=0,e=0,f=0,g=0,h=0,i=0,j=0,k=0,l=0,m=0,n=0,o=0;i=Ui-16|0;Ui=i;J[i+12>>2]=0;a:{if((c|0)<=0){break a}while(1){k=J[a+116>>2];b:{if(k){h=Ui-16|0;Ui=h;g=-101;f=J[k+12>>2];d=-28928;c:{if(!f){break c}e=J[f>>2];d=-28928;if(!e){break c}l=b+j|0;m=c-j|0;d:{e:{f:{if(J[f+4>>2]!=16){break f}if(J[f+8>>2]==3){break e}d=J[e+184>>2];if(!(d&8192)){break e}d=d&2;n=(d+e|0)+164|0;o=8-d|0;if((Wj(d+J[f+104>>2]|0,n,o)|0)<=0&(Wj((d+f|0)+220|0,n,o)|0)<=0){break e}e=pH(f);if(e){break d}e=J[f>>2];if(J[f+4>>2]==16){break e}if(e){break f}d=-28928;break c}while(1){e=J[f>>2];if(J[f+4>>2]==16){break e}d=-28928;if(!e){break c}d=-28800;if(H[e+184|0]&1){break c}e=Zr(f);if(!e){continue}break}break d}g:{h:{if(!(J[e+184>>2]&4096)|m>>>0<2|J[f+20>>2]>1){break h}d=J[J[f+76>>2]+80>>2];if(!d){break h}if(J[d+4>>2]==2){break g}}d=Rz(f,l,m);break c}if(!K[f+230|0]){e=Rz(f,l,1);if((e|0)<=0){break d}H[f+230|0]=1}e=Rz(f,l+1|0,m-1|0);if((e|0)<=0){break d}H[f+230|0]=0;e=e+1|0}d=e}i:{if((d&-129)==-26880){break i}j:{if((d|0)<0){oH(J[k+12>>2]);g=-5;k:{l:{if((d|0)<=-81){if((d|0)==-30848){break i}if((d|0)==-26624){break l}if((d|0)==-26496){break i}break j}switch(d+80|0){case 4:break k;case 0:break i;default:break j}}g=-3;break i}g=-101;break i}J[i+12>>2]=d;g=0;break i}J[h+12>>2]=0-d;J[h+8>>2]=45;J[h+4>>2]=d;J[h>>2]=Ju(d);dj(3,99340,142908,h);g=-1e3}Ui=h+16|0;break b}g=lx(J[a+112>>2],b+j|0,c-j|0,i+12|0)}d=(g|0)==-3?-101:g;if((d|0)!=-101?d:0){break a}e=J[a>>2];g=J[e+2204>>2];if(!(!g|!J[g>>2])){d=-3;break a}m:{if(!J[e+2160>>2]){break m}g=bl()-J[e+2168>>2]|0;if((g|0)>2]){break m}d=-3;break a}if((d|0)!=-101){if(d){break a}j=J[i+12>>2]+j|0}if((c|0)>(j|0)){continue}break}d=0}Ui=i+16|0;return d}function Ipa(a,b,c){a=a|0;b=b|0;c=Q(c);var d=Q(0),e=Q(0),f=0,g=Q(0),h=Q(0),i=Q(0),j=Q(0),k=Q(0),l=Q(0),m=Q(0),n=Q(0),o=Q(0),p=0,q=Q(0),r=Q(0),s=Q(0),t=0;f=Ui-32|0;Ui=f;k=N[a+52>>2];i=Q(N[a+68>>2]-k);d=N[a+56>>2];h=Q(N[a+88>>2]-d);e=Q(N[a+72>>2]-d);j=Q(N[a+84>>2]-k);g=Q(Q(i*h)-Q(e*j));l=g;m=Q(g*g);n=e;e=N[a+60>>2];g=Q(N[a+92>>2]-e);o=Q(N[a+76>>2]-e);h=Q(Q(n*g)-Q(o*h));i=Q(Q(o*j)-Q(i*g));j=Q(Q(1)/Q(Y(Q(m+Q(Q(h*h)+Q(i*i))))));g=Q(l*j);h=Q(h*j);i=Q(i*j);d=Q(Q(Q(N[b+8>>2]*g)+Q(Q(N[b>>2]*h)+Q(N[b+4>>2]*i)))-Q(Q(e*g)+Q(Q(k*h)+Q(d*i))));k=Q(-c);a:{if(!(d>=k)|!(c>=d)){break a}p=f+16|0;Zi[J[J[a>>2]+92>>2]](a,0,p,f);j=N[f+16>>2];d=Q(N[f>>2]-j);o=N[f+20>>2];e=Q(N[f+4>>2]-o);c=Q(Q(d*i)-Q(e*h));l=c;m=Q(c*c);c=Q(e*g);n=N[f+24>>2];e=Q(N[f+8>>2]-n);c=Q(c-Q(e*i));d=Q(Q(e*h)-Q(d*g));e=Q(Q(1)/Q(Y(Q(m+Q(Q(c*c)+Q(d*d))))));m=Q(l*e);c=Q(c*e);d=Q(d*e);if(k>Q(Q(Q(N[b+8>>2]*m)+Q(Q(N[b>>2]*c)+Q(N[b+4>>2]*d)))-Q(Q(n*m)+Q(Q(j*c)+Q(o*d))))){break a}Zi[J[J[a>>2]+92>>2]](a,1,p,f);j=N[f+16>>2];d=Q(N[f>>2]-j);o=N[f+20>>2];e=Q(N[f+4>>2]-o);n=Q(-h);c=Q(Q(d*i)+Q(e*n));l=c;s=Q(c*c);c=Q(e*g);m=N[f+24>>2];e=Q(N[f+8>>2]-m);q=Q(-i);c=Q(c+Q(e*q));r=Q(-g);d=Q(Q(e*h)+Q(d*r));e=Q(Q(1)/Q(Y(Q(s+Q(Q(c*c)+Q(d*d))))));l=Q(l*e);c=Q(c*e);d=Q(d*e);if(k>Q(Q(Q(N[b+8>>2]*l)+Q(Q(N[b>>2]*c)+Q(N[b+4>>2]*d)))-Q(Q(m*l)+Q(Q(j*c)+Q(o*d))))){break a}Zi[J[J[a>>2]+92>>2]](a,2,p,f);l=k;k=N[f+16>>2];d=Q(N[f>>2]-k);c=Q(d*i);i=N[f+20>>2];e=Q(N[f+4>>2]-i);c=Q(c+Q(e*n));n=c;j=Q(c*c);c=Q(e*g);e=N[f+24>>2];g=Q(N[f+8>>2]-e);c=Q(c+Q(g*q));g=Q(Q(g*h)+Q(d*r));h=Q(Q(1)/Q(Y(Q(j+Q(Q(c*c)+Q(g*g))))));d=Q(n*h);c=Q(c*h);g=Q(g*h);if(l>Q(Q(Q(N[b+8>>2]*d)+Q(Q(N[b>>2]*c)+Q(N[b+4>>2]*g)))-Q(Q(e*d)+Q(Q(k*c)+Q(i*g))))){break a}t=1}Ui=f+32|0;return t|0}function DB(a){var b=0,c=0,d=0;b=ij(nj(132),0,132);J[b+60>>2]=0;J[b+64>>2]=0;J[b+92>>2]=0;J[b+96>>2]=0;J[b+44>>2]=0;J[b+48>>2]=0;J[b+32>>2]=-1;J[b+52>>2]=0;J[b+56>>2]=0;J[b+68>>2]=0;J[b+72>>2]=0;J[b+76>>2]=0;J[b+80>>2]=0;J[b+84>>2]=0;J[b+88>>2]=0;J[b+100>>2]=0;J[b+104>>2]=0;J[b+108>>2]=0;J[b+112>>2]=0;c=b+116|0;J[c>>2]=0;J[c+4>>2]=0;J[b+64>>2]=-1;J[b+96>>2]=-1;PC(b+12|0,127,256);QC(b+44|0,127,256);Tx(b+76|0,443,256);if(H[b+120|0]&1){Z(151729,53895,501,2284);B()}lj(8,4,b+108|0,c,b+112|0);J[b>>2]=J[a>>2];J[b+4>>2]=J[a+4>>2];J[b+8>>2]=J[a+8>>2];a=II(0,0,0,376);a:{if(a){H[a+140|0]=33;H[a+4|0]=8;J[a>>2]=0;J[a+32>>2]=0;J[a+68>>2]=0;J[a+104>>2]=0;J[a+60>>2]=0;J[a+64>>2]=0;I[a+56>>1]=256;J[a+40>>2]=0;J[a+44>>2]=0;H[a+5|0]=97;H[a+6|0]=0;J[a+112>>2]=0;J[a+116>>2]=0;J[a+20>>2]=0;J[a+24>>2]=0;J[a+80>>2]=0;J[a+136>>2]=0;J[a+132>>2]=1963;J[a+48>>2]=0;J[a+52>>2]=0;J[a+16>>2]=a+120;c=a+240|0;J[a+260>>2]=c;J[a+256>>2]=c;J[a+232>>2]=a;J[a+128>>2]=0;J[a+184>>2]=0;J[a+188>>2]=376;J[a+120>>2]=0;J[a+124>>2]=0;J[a+224>>2]=0;J[a+172>>2]=0;J[a+180>>2]=0;J[a+208>>2]=0;H[a+141|0]=0;J[a+144>>2]=0;J[a+152>>2]=a+148;J[a+156>>2]=0;J[a+160>>2]=0;J[a+164>>2]=0;J[a+168>>2]=0;J[a+200>>2]=200;J[a+204>>2]=200;J[a+196>>2]=0;J[a+304>>2]=0;J[a+296>>2]=0;J[a+300>>2]=0;J[a+288>>2]=0;J[a+292>>2]=0;J[a+280>>2]=0;J[a+284>>2]=0;J[a+272>>2]=0;J[a+276>>2]=0;J[a+148>>2]=a;if(!Uw(a,1959,0)){break a}c=J[a+16>>2];Hp(a,J[a+32>>2]);EI(a);d=J[a+16>>2];lk(a,J[d>>2],J[d+8>>2]<<2,0);d=lk(a,J[c+52>>2],J[c+60>>2],0);J[c+60>>2]=0;J[c+52>>2]=d;lk(a,J[a+40>>2],P(J[a+48>>2],24),0);lk(a,J[a+32>>2],J[a+44>>2]<<4,0);Zi[J[c+12>>2]](J[c+16>>2],a,376,0)|0}a=0}if(a){J[J[a+16>>2]+88>>2]=1964}J[b+128>>2]=-2;J[b+124>>2]=a;return b}function zma(a){a=a|0;var b=0,c=0,d=0,e=0,f=0,g=0,h=0,i=0,j=0;b=Ui-528|0;Ui=b;Bj(a);e=qj(a,-1,J[74197],139276);gj(a,-2);d=J[e+4>>2];J[b+520>>2]=0;J[b+524>>2]=0;J[b+512>>2]=0;J[b+516>>2]=0;J[b+504>>2]=0;J[b+508>>2]=0;J[b+496>>2]=0;J[b+500>>2]=0;f=b+496|0;$l(a,f);J[b+488>>2]=0;J[b+492>>2]=0;J[b+480>>2]=0;J[b+484>>2]=0;J[b+472>>2]=0;J[b+476>>2]=0;J[b+464>>2]=0;J[b+468>>2]=0;Sk(a,1,b+464|0,f);J[b+204>>2]=256;J[b+196>>2]=b+208;J[b+200>>2]=0;J[b+188>>2]=2270;J[b+184>>2]=2271;J[b+192>>2]=b+184;e=J[J[J[e+4>>2]+80>>2]+8>>2];a:{if(!e){break a}e=J[e>>2];if(!e){break a}g=J[e+3216>>2];c=J[e+3220>>2]}b:{if(J[b+464>>2]!=(g|0)|J[b+468>>2]!=(c|0)){c=fj(a,120447,0);break b}c:{if(Mk(a,2)){g=bj(Ij(a,2,0));e=Yi;break c}g=Tl(a,2);e=Yi}j=xk(J[J[d+80>>2]+8>>2],J[b+480>>2],J[b+484>>2]);if(!j){J[b>>2]=nk(b+184|0,J[b+480>>2],J[b+484>>2]);c=fj(a,134772,b);break b}d=b+168|0;J[d>>2]=0;H[d+8|0]=K[d+8|0]&254;J[d>>2]=0;H[d+8|0]=K[d+8|0]&254;H[b+167|0]=0;if(J[a+8>>2]-J[a+12>>2]>>4>=3){Iy(a,3,d,b+167|0)}f=Zp(b+48|0);c=J[d+12>>2];J[b+40>>2]=J[d+8>>2];J[b+44>>2]=c;c=J[d+4>>2];J[b+32>>2]=J[d>>2];J[b+36>>2]=c;c=Cr(j,J[b+488>>2],J[b+492>>2],g,e,b+32|0,f);i=K[b+167|0];h=!c|i;d:{if(i&1|c){break d}h=0;i=L[f+108>>1];if(i>>>0<8|i&2){break d}Fj(a,0,0);h=1;c=mt(a,44098,0,f,g,e,b+464|0,d,K[b+167|0]);if((c|0)!=1){break b}Ik(a,-2,1);if(L[f+108>>1]<8){c=1;break b}while(1){J[d>>2]=h;c=J[d+12>>2];J[b+24>>2]=J[d+8>>2];J[b+28>>2]=c;c=J[d+4>>2];J[b+16>>2]=J[d>>2];J[b+20>>2]=c;c=mt(a,44098,Cr(j,J[b+488>>2],J[b+492>>2],g,e,b+16|0,f),f,g,e,b+464|0,d,K[b+167|0]);if((c|0)!=1){break b}c=1;h=h+1|0;Ik(a,-2,h);if(L[f+108>>1]>>>2>>>0>h>>>0){continue}break}break b}c=mt(a,44098,c,f,g,e,b+464|0,d,h&1)}Ui=b+528|0;return c|0}function em(a,b,c){var d=0,e=0,f=0,g=0,h=0,i=0,j=0;J[a+20>>2]=J[a+20>>2]+c;a:{if(!c){break a}f=J[a+16>>2];g=b;d=c;while(1){if(!(!f&(d|0)>=8)){h=K[g|0];e=f+1|0;J[a+16>>2]=e;i=J[a+12>>2];j=f<<3;f=h;h=j&31;if((j&63)>>>0>=32){j=f<>>32-h;f=f<>2];J[a+8>>2]=f;h=j|i;J[a+12>>2]=h;g=g+1|0;if((e|0)==8){J[a+16>>2]=0;J[a+8>>2]=0;J[a+12>>2]=0;e=ixa(J[a>>2],J[a+4>>2],1540483477,-962287725);j=Yi;f=ixa(f,h,1540483477,-962287725);i=Yi;J[a>>2]=ixa(f^i>>>15,i,1540483477,-962287725)^e;J[a+4>>2]=Yi^j;e=0}f=e;d=d-1|0;if(d){continue}break a}break}f=J[a>>2];j=J[a+4>>2];while(1){e=ixa(K[g|0]|K[g+1|0]<<8|(K[g+2|0]<<16|K[g+3|0]<<24),K[g+4|0]|K[g+5|0]<<8|(K[g+6|0]<<16|K[g+7|0]<<24),1540483477,-962287725);i=Yi;e=ixa(e^i>>>15,i,1540483477,-962287725);h=Yi;f=ixa(f,j,1540483477,-962287725)^e;e=Yi^h;j=e;J[a>>2]=f;J[a+4>>2]=e;g=g+8|0;e=d>>>0>15;i=d-8|0;d=i;if(e){continue}break}if(!d){break a}d=J[a+16>>2];while(1){if(!d&(i|0)>=8){break a}e=K[g|0];f=d+1|0;J[a+16>>2]=f;j=J[a+12>>2];h=d<<3;d=e;e=h&31;if((h&63)>>>0>=32){h=d<>>32-e;d=d<>2];J[a+8>>2]=d;e=h|j;J[a+12>>2]=e;g=g+1|0;if((f|0)==8){J[a+16>>2]=0;J[a+8>>2]=0;J[a+12>>2]=0;f=ixa(J[a>>2],J[a+4>>2],1540483477,-962287725);h=Yi;d=ixa(d,e,1540483477,-962287725);e=Yi;J[a>>2]=ixa(d^e>>>15,e,1540483477,-962287725)^f;J[a+4>>2]=Yi^h;d=0}else{d=f}i=i-1|0;if(i){continue}break}}if(!K[874264]){nl();H[874264]=1}b:{c:{if(K[874164]!=1){break c}d=J[a+24>>2];if(!d|M[a+20>>2]>1024){break c}a=J[218558];if(d>>>0>=J[218559]-a>>3>>>0){break b}a=a+(d<<3)|0;d=L[a+4>>1]+c|0;g=ml(J[a>>2],(d&-16)+32|0);J[a>>2]=g;hj(g+L[a+4>>1]|0,b,c);H[d+g|0]=0;I[a+4>>1]=d}return}Z(145396,54052,487,84789);B()}function OU(a,b,c,d,e){var f=Q(0),g=Q(0),h=Q(0),i=Q(0),j=Q(0),k=Q(0),l=Q(0),m=Q(0),n=Q(0),o=Q(0),p=Q(0),q=Q(0),r=Q(0),s=Q(0),t=Q(0),u=Q(0);if(J[b+84>>2]>0){a:{switch(J[b+72>>2]){case 0:g=N[d>>2];f=N[c>>2];h=N[d+8>>2];j=N[b>>2];k=N[d+12>>2];m=N[b+4>>2];n=Q(Q(Q(h*j)+Q(k*m))+N[d+4>>2]);o=N[c+8>>2];p=N[b+24>>2];l=N[c+12>>2];q=N[b+28>>2];r=Q(Q(Q(o*p)+Q(l*q))+N[c+4>>2]);i=Q(n-r);N[a+4>>2]=i;h=Q(g+Q(Q(k*j)-Q(h*m)));j=Q(f+Q(Q(l*p)-Q(o*q)));g=Q(h-j);N[a>>2]=g;f=Q(Q(g*g)+Q(i*i));k=Q(Y(f));if(!(k>2]=k;f=Q(g*f);N[a>>2]=f;f=Q(Q(g*f)+Q(i*k))}N[a+12>>2]=Q(r+n)*Q(.5);N[a+8>>2]=Q(j+h)*Q(.5);N[a+16>>2]=Q(f-N[b+76>>2])-N[b+80>>2];return;case 1:i=N[c+8>>2];g=N[b+16>>2];f=N[c+12>>2];h=N[b+20>>2];j=Q(Q(i*g)+Q(f*h));N[a+4>>2]=j;k=Q(Q(f*g)-Q(i*h));N[a>>2]=k;m=N[b+80>>2];n=N[b+76>>2];o=N[c>>2];p=N[c+4>>2];i=N[c+8>>2];g=N[b+24>>2];f=N[b+28>>2];h=N[c+12>>2];l=N[d>>2];q=N[d+8>>2];b=(e<<3)+b|0;r=N[b>>2];t=N[d+12>>2];u=N[b+4>>2];s=Q(Q(Q(q*r)+Q(t*u))+N[d+4>>2]);N[a+12>>2]=s;l=Q(l+Q(Q(t*r)-Q(q*u)));N[a+8>>2]=l;N[a+16>>2]=Q(Q(Q(Q(l-Q(o+Q(Q(h*g)-Q(i*f))))*k)+Q(Q(s-Q(p+Q(Q(i*g)+Q(h*f))))*j))-n)-m;return;case 2:g=N[d+8>>2];f=N[b+16>>2];h=N[d+12>>2];j=N[b+20>>2];i=Q(Q(g*f)+Q(h*j));N[a+4>>2]=i;g=Q(Q(h*f)-Q(g*j));N[a>>2]=g;e=(e<<3)+b|0;f=N[e>>2];h=N[e+4>>2];l=N[b+80>>2];q=N[b+76>>2];r=N[d>>2];t=N[d+4>>2];j=N[d+8>>2];k=N[b+24>>2];m=N[b+28>>2];n=N[d+12>>2];u=N[c>>2];s=N[c+4>>2];o=N[c+8>>2];p=N[c+12>>2];N[a+4>>2]=-i;N[a>>2]=-g;s=Q(s+Q(Q(o*f)+Q(p*h)));N[a+12>>2]=s;f=Q(u+Q(Q(p*f)-Q(o*h)));N[a+8>>2]=f;N[a+16>>2]=Q(Q(Q(Q(f-Q(r+Q(Q(n*k)-Q(j*m))))*g)+Q(Q(s-Q(t+Q(Q(j*k)+Q(n*m))))*i))-q)-l;break;default:break a}}return}Z(111848,39721,624,59307);B()}function iba(a,b){a=a|0;b=b|0;var c=0,d=0,e=0,f=0,g=0,h=0;f=J[b>>2];e=1;a:{if((f|0)!=1){break a}f=1;e=1;if(H[a+221|0]&1){break a}f=0;e=L[b+8>>1]}c=e<<2;g=sj(c);c=sj(c);gb(e|0,c|0);b:{c:{d:{e:{if(K[J[79491]+220|0]&2){d=_()|0;if(d){break e}}if(e){d=0;while(1){h=d<<2;J[h+g>>2]=ho(a,J[c+h>>2]);d=d+1|0;if((e|0)!=(d|0)){continue}break}}cj(c);d=0;c=ij(nj(80),0,80);J[c+28>>2]=0;J[c+32>>2]=0;J[c+24>>2]=1;J[c+16>>2]=2;J[c+20>>2]=1;J[c+8>>2]=3;J[c+12>>2]=5;J[c+36>>2]=0;J[c+40>>2]=0;H[c+43|0]=0;H[c+44|0]=0;H[c+45|0]=0;H[c+46|0]=0;J[c+52>>2]=g;J[c+48>>2]=f;f=L[b+4>>1];I[c+66>>1]=f;g=L[b+6>>1];I[c+68>>1]=g;h=L[b+8>>1];I[c+64>>1]=e;I[c+70>>1]=h;H[c+78|0]=K[b+15|0];e=L[b+12>>1];b=L[b+10>>1];J[c+60>>2]=0;J[c+56>>2]=0;I[c+74>>1]=b?e:g;I[c+72>>1]=b?b:f;f=J[a+92>>2];e=8;b=J[a+100>>2];f:{if(b){g:{while(1){if(J[f+(d<<2)>>2]){d=d+1|0;if((d|0)!=(b|0)){continue}break g}break}if((d|0)!=-1){break f}}e=b+8|0;if(e>>>0>=65536){break d}}J[a+92>>2]=ml(f,e<<2);J[a+96>>2]=ml(J[a+96>>2],e<<1);b=J[a+92>>2]+(J[a+100>>2]<<2)|0;J[b>>2]=0;J[b+4>>2]=0;J[b+24>>2]=0;J[b+28>>2]=0;J[b+16>>2]=0;J[b+20>>2]=0;J[b+8>>2]=0;J[b+12>>2]=0;b=J[a+96>>2]+(J[a+100>>2]<<1)|0;I[b>>1]=0;I[b+2>>1]=0;I[b+4>>1]=0;I[b+6>>1]=0;I[b+8>>1]=0;I[b+10>>1]=0;I[b+12>>1]=0;I[b+14>>1]=0;b=J[a+100>>2]+8|0;J[a+100>>2]=b}if(!b){break b}e=J[a+92>>2];d=0;while(1){f=e+(d<<2)|0;if(J[f>>2]){d=d+1|0;if((d|0)!=(b|0)){continue}break b}break}if((d|0)==-1){break b}b=L[a+104>>1];b=b>>>0>65533?1:b+1|0;I[a+104>>1]=b;I[J[a+96>>2]+(d<<1)>>1]=b;J[f>>2]=c;a=L[a+104>>1]<<16|d;if((a|0)==-1){break c}Yi=1;return a|0}Cj(d,62950,3727);Z(114101,40535,3727,62950);B()}Z(94407,54166,208,62238);B()}Z(96071,54166,266,9606);B()}Z(96003,54166,253,9606);B()}function uia(a){a=a|0;var b=0,c=0,d=0,e=0,f=0,g=0;a:{b:{b=J[a+4>>2];c=J[b+56>>2];a=J[b+52>>2];if((c|0)!=(a|0)){while(1){g=d<<3;e=J[g+a>>2];c:{if(!e){e=c-a>>3;break c}cj(e);c=J[b+56>>2];a=J[b+52>>2];e=c-a>>3;if(e>>>0<=d>>>0){break b}J[a+g>>2]=0}d=d+1|0;if(e>>>0>d>>>0){continue}break}}break a}Z(145396,53895,487,84789);B()}c=J[b+104>>2];a=J[b+108>>2];if((c|0)!=(a|0)){while(1){d=J[(f<<2)+c>>2];if(d){cj(d);c=J[b+104>>2];a=J[b+108>>2]}f=f+1|0;if(f>>>0>2>>>0){continue}break}}bm(J[b+300>>2]);cj(J[b+304>>2]);bm(J[b+312>>2]);cj(J[b+336>>2]);d:{if(H[b+292|0]&1){break d}a=J[b+280>>2];if(!a){break d}cj(a)}e:{if(H[b+276|0]&1){break e}a=J[b+264>>2];if(!a){break e}cj(a)}f:{if(H[b+260|0]&1){break f}a=J[b+248>>2];if(!a){break f}cj(a)}g:{if(H[b+244|0]&1){break g}a=J[b+232>>2];if(!a){break g}cj(a)}h:{if(H[b+228|0]&1){break h}a=J[b+216>>2];if(!a){break h}cj(a)}i:{if(H[b+212|0]&1){break i}a=J[b+200>>2];if(!a){break i}cj(a)}j:{if(H[b+196|0]&1){break j}a=J[b+184>>2];if(!a){break j}cj(a)}k:{if(H[b+180|0]&1){break k}a=J[b+168>>2];if(!a){break k}cj(a)}l:{if(H[b+164|0]&1){break l}a=J[b+152>>2];if(!a){break l}cj(a)}m:{if(H[b+148|0]&1){break m}a=J[b+136>>2];if(!a){break m}cj(a)}n:{if(H[b+132|0]&1){break n}a=J[b+120>>2];if(!a){break n}cj(a)}o:{if(H[b+116|0]&1){break o}a=J[b+104>>2];if(!a){break o}cj(a)}p:{if(H[b+96|0]&1){break p}a=J[b+84>>2];if(!a){break p}cj(a)}q:{if(H[b+80|0]&1){break q}a=J[b+68>>2];if(!a){break q}cj(a)}r:{if(H[b+64|0]&1){break r}a=J[b+52>>2];if(!a){break r}cj(a)}s:{if(H[b+44|0]&1){break s}a=J[b+32>>2];if(!a){break s}cj(a)}t:{if(H[b+28|0]&1){break t}a=J[b+16>>2];if(!a){break t}cj(a)}u:{if(H[b+12|0]&1){break u}a=J[b>>2];if(!a){break u}cj(a)}cj(b);return 0}function Xx(a,b,c){var d=0,e=0,f=0,g=0,h=0,i=0;d=Ui-32|0;Ui=d;a:{switch(b+1|0){case 1:Z(112335,55689,156,2284);B();case 0:Z(94770,55689,157,2284);B();default:break a}}if((c|0)!=-1){e=J[a+8>>2];if(J[a+16>>2]-e>>4>>>0<=c>>>0){b:{if(!e){J[a+4>>2]=b;e=b<<2;b=sj(e);J[a>>2]=b;ij(b,255,e);b=c<<4;c=sj(b);J[a+12>>2]=c;J[a+8>>2]=c;J[a+16>>2]=b+c;break b}J[d+16>>2]=0;J[d+20>>2]=0;J[d+24>>2]=0;J[d+28>>2]=0;J[d+8>>2]=0;J[d+12>>2]=0;J[d>>2]=0;J[d+4>>2]=0;J[d+20>>2]=-1;Xx(d,b,c);c=J[a+4>>2];if(c){while(1){b=J[J[a>>2]+(i<<2)>>2];if((b|0)!=-1){while(1){c:{d:{e:{e=J[d+16>>2];f=J[d+8>>2];if(J[d+24>>2]!=e-f>>4){g=J[a+8>>2]+(b<<4)|0;h=J[g>>2];b=J[d+4>>2];f:{if(!b){break f}b=J[J[d>>2]+((h>>>0)%(b>>>0)<<2)>>2];if((b|0)==-1){break f}while(1){b=f+(b<<4)|0;if((h|0)==J[b>>2]){break e}b=J[b+12>>2];if((b|0)!=-1){continue}break}}c=J[d+12>>2];g:{if((e|0)!=(c|0)){J[d+12>>2]=c+16;break g}b=J[d+20>>2];if((b|0)==-1){break d}c=f+(b<<4)|0;J[d+20>>2]=J[c+12>>2]}J[c>>2]=h;J[c+4>>2]=J[g+4>>2];I[c+8>>1]=L[g+8>>1];J[c+12>>2]=-1;f=J[d+8>>2];e=J[d>>2]+((h>>>0)%M[d+4>>2]<<2)|0;b=J[e>>2];if((b|0)!=-1){while(1){e=f+(b<<4)|0;b=J[e+12>>2];if((b|0)!=-1){continue}break}e=e+12|0}J[e>>2]=c-f>>4;J[d+24>>2]=J[d+24>>2]+1;break c}Z(144851,55689,229,9606);B()}J[b+4>>2]=J[g+4>>2];I[b+8>>1]=L[g+8>>1];break c}Z(152203,55689,537,2838);B()}b=J[g+12>>2];if((b|0)!=-1){continue}break}c=J[a+4>>2]}i=i+1|0;if(i>>>0>>0){continue}break}}cj(J[a>>2]);cj(J[a+8>>2]);b=J[d+28>>2];J[a+24>>2]=J[d+24>>2];J[a+28>>2]=b;b=J[d+20>>2];J[a+16>>2]=J[d+16>>2];J[a+20>>2]=b;b=J[d+12>>2];J[a+8>>2]=J[d+8>>2];J[a+12>>2]=b;b=J[d+4>>2];J[a>>2]=J[d>>2];J[a+4>>2]=b}Ui=d+32|0;return}Z(144759,55689,159,2284);B()}Z(94750,55689,158,2284);B()}function zsa(a,b,c,d,e){a=a|0;b=b|0;c=c|0;d=d|0;e=e|0;var f=Q(0),g=Q(0),h=0,i=Q(0),j=0,k=0,l=0,m=0;a=Ui-608|0;Ui=a;a:{b:{f=Q(N[b+124>>2]-N[b+60>>2]);i=Q(f*f);f=Q(N[b+116>>2]-N[b+52>>2]);g=Q(f*f);f=Q(N[b+120>>2]-N[b+56>>2]);g=Q(i+Q(g+Q(f*f)));f=N[b+248>>2];if(!(g>2]-N[c+60>>2]);i=Q(f*f);f=Q(N[c+116>>2]-N[c+52>>2]);g=Q(f*f);f=Q(N[c+120>>2]-N[c+56>>2]);g=Q(i+Q(g+Q(f*f)));f=N[c+248>>2];if(!(g>2];f=N[c+244>>2];d=a+556|0;J[d+4>>2]=35;J[d+8>>2]=0;J[d>>2]=246356;J[d+44>>2]=1025758986;J[d+20>>2]=1065353216;J[d+24>>2]=0;J[d+12>>2]=1065353216;J[d+16>>2]=1065353216;J[d>>2]=246264;N[d+44>>2]=f;N[d+28>>2]=f;J[d+4>>2]=8;J[d>>2]=246688;J[a+552>>2]=0;J[a+544>>2]=1566444395;J[a+548>>2]=0;J[a+380>>2]=244680;H[a+352|0]=0;J[a+328>>2]=953267991;e=a+4|0;J[e+12>>2]=d;J[e+8>>2]=h;J[e+4>>2]=a+20;J[e>>2]=246828;h=b+4|0;j=b+68|0;k=c+4|0;l=c+68|0;f=Q(1);c:{if(!JE(e,h,j,k,l,a+380|0)){break c}g=N[a+544>>2];if(g>2]){N[b+240>>2]=g}if(g>2]){N[c+240>>2]=g}f=Q(1);if(!(g>2];g=N[b+244>>2];d=a+556|0;J[d+4>>2]=35;J[d+8>>2]=0;J[d>>2]=246356;J[d+44>>2]=1025758986;J[d+20>>2]=1065353216;J[d+24>>2]=0;J[d+12>>2]=1065353216;J[d+16>>2]=1065353216;J[d>>2]=246264;N[d+44>>2]=g;N[d+28>>2]=g;J[d+4>>2]=8;J[d>>2]=246688;J[a+552>>2]=0;J[a+544>>2]=1566444395;J[a+548>>2]=0;J[a+380>>2]=244680;H[a+352|0]=0;J[a+328>>2]=953267991;e=a+4|0;J[e+12>>2]=m;J[e+8>>2]=d;J[e+4>>2]=a+20;J[e>>2]=246828;d:{if(!JE(e,h,j,k,l,a+380|0)){break d}g=N[a+544>>2];if(g>2]){N[b+240>>2]=g}if(g>2]){N[c+240>>2]=g}if(!(f>g)){break d}f=g}}Ui=a+608|0;return Q(f)}function dra(a,b,c){a=a|0;b=b|0;c=c|0;var d=0,e=0,f=0,g=0,h=0,i=0,j=0,k=0,l=0,m=0,n=0,o=0,p=0;J[83477]=J[83477]+1;h=J[a+24>>2];a:{b:{if(h){if(Zi[J[J[h>>2]+8>>2]](h,b,c)|0){break b}break a}if(!(L[c+6>>1]&L[b+4>>1])|!(L[b+6>>1]&L[c+4>>1])){break a}}d=J[b+12>>2]>J[c+12>>2];j=d?b:c;e=J[j+12>>2];k=d?c:b;d=J[k+12>>2];b=e<<16|d;b=(b<<15^-1)+b|0;b=P(b>>10^b,9);b=b>>6^b;b=(b<<11^-1)+b|0;n=b>>16^b;c=a;h=J[c+12>>2];l=n&h-1;a=J[J[c+44>>2]+(l<<2)>>2];c:{if((a|0)!=-1){i=J[c+64>>2];g=J[c+16>>2];while(1){b=g+(a<<4)|0;if((d|0)==J[J[b>>2]+12>>2]&(e|0)==J[J[b+4>>2]+12>>2]){break c}a=J[i+(a<<2)>>2];if((a|0)!=-1){continue}break}}a=h;i=J[c+8>>2];b=i;d:{if((a|0)!=(b|0)){break d}b=a;d=b?b<<1:1;if((b|0)>=(d|0)){break d}e:{if(!d){b=0;break e}b=Yj(d<<4);a=J[c+8>>2]}f:{if((a|0)<=0){break f}e=0;if((a|0)!=1){p=a&2147483646;while(1){m=e<<4;g=m+b|0;f=J[c+16>>2]+m|0;J[g>>2]=J[f>>2];J[g+4>>2]=J[f+4>>2];J[g+8>>2]=J[f+8>>2];J[g+12>>2]=J[f+12>>2];f=m|16;g=f+b|0;f=f+J[c+16>>2]|0;J[g>>2]=J[f>>2];J[g+4>>2]=J[f+4>>2];J[g+8>>2]=J[f+8>>2];J[g+12>>2]=J[f+12>>2];e=e+2|0;o=o+2|0;if((p|0)!=(o|0)){continue}break}}if(!(a&1)){break f}e=e<<4;a=e+b|0;e=e+J[c+16>>2]|0;J[a>>2]=J[e>>2];J[a+4>>2]=J[e+4>>2];J[a+8>>2]=J[e+8>>2];J[a+12>>2]=J[e+12>>2]}a=J[c+16>>2];if(!(a?!a|K[c+20|0]!=1:1)){J[83765]=J[83765]+1;Zi[J[61751]](J[a-4>>2])}J[c+16>>2]=b;H[c+20|0]=1;J[c+12>>2]=d;b=J[c+8>>2];a=d}J[c+8>>2]=b+1;d=J[c+16>>2];b=J[c+72>>2];if(b){Zi[J[J[b>>2]+8>>2]](b,k,j)|0;a=J[c+12>>2]}b=(i<<4)+d|0;if((a|0)>(h|0)){lT(c);l=J[c+12>>2]-1&n}a=J[j+12>>2];d=J[k+12>>2];J[b+8>>2]=0;J[b+12>>2]=0;a=(a|0)>(d|0);J[b+4>>2]=a?j:k;J[b>>2]=a?k:j;a=J[c+44>>2]+(l<<2)|0;J[J[c+64>>2]+(i<<2)>>2]=J[a>>2];J[a>>2]=i}d=b}return d|0}function GT(a,b,c,d){var e=0,f=0,g=0,h=0,i=0,j=0,k=Q(0),l=0,m=0,n=0;J[a+4>>2]=35;J[a+8>>2]=0;J[a>>2]=246356;J[a+44>>2]=1025758986;J[a+20>>2]=1065353216;J[a+24>>2]=0;J[a+12>>2]=1065353216;J[a+16>>2]=1065353216;J[a>>2]=246264;H[a+84|0]=0;J[a+76>>2]=-1082130432;J[a+80>>2]=0;J[a+68>>2]=-1082130432;J[a+72>>2]=-1082130432;J[a+60>>2]=1065353216;J[a+64>>2]=0;J[a+52>>2]=1065353216;J[a+56>>2]=1065353216;J[a>>2]=246568;H[a+104|0]=1;J[a>>2]=246144;J[a+100>>2]=0;J[a+92>>2]=0;J[a+96>>2]=0;J[a+4>>2]=4;if((c|0)<=0){J[a+92>>2]=c;IE(a);return a}g=Yj(c<<4);h=J[a+92>>2];a:{if((h|0)<=0){break a}if((h|0)!=1){l=h&2147483646;while(1){i=e<<4;j=i+g|0;f=i+J[a+100>>2]|0;m=J[f+4>>2];J[j>>2]=J[f>>2];J[j+4>>2]=m;m=J[f+12>>2];J[j+8>>2]=J[f+8>>2];J[j+12>>2]=m;f=i|16;i=f+g|0;f=f+J[a+100>>2]|0;j=J[f+4>>2];J[i>>2]=J[f>>2];J[i+4>>2]=j;j=J[f+12>>2];J[i+8>>2]=J[f+8>>2];J[i+12>>2]=j;e=e+2|0;n=n+2|0;if((l|0)!=(n|0)){continue}break}}if(!(h&1)){break a}e=e<<4;h=e+g|0;e=e+J[a+100>>2]|0;f=J[e+4>>2];J[h>>2]=J[e>>2];J[h+4>>2]=f;f=J[e+12>>2];J[h+8>>2]=J[e+8>>2];J[h+12>>2]=f}e=J[a+100>>2];if(!(e?!e|K[a+104|0]!=1:1)){J[83765]=J[83765]+1;Zi[J[61751]](J[e-4>>2])}J[a+100>>2]=g;H[a+104|0]=1;J[a+96>>2]=c;J[a+92>>2]=c;b:{if((c|0)<=0){break b}e=0;if((c|0)!=1){f=c&2147483646;h=0;while(1){i=J[b+4>>2];j=J[b>>2];k=N[b+8>>2];l=e<<4;g=l+J[a+100>>2]|0;J[g+12>>2]=0;N[g+8>>2]=k;J[g>>2]=j;J[g+4>>2]=i;b=b+d|0;i=J[b>>2];j=J[b+4>>2];k=N[b+8>>2];g=l+J[a+100>>2]|0;J[g+28>>2]=0;N[g+24>>2]=k;J[g+16>>2]=i;J[g+20>>2]=j;e=e+2|0;b=b+d|0;h=h+2|0;if((f|0)!=(h|0)){continue}break}}if(!(c&1)){break b}c=J[b+4>>2];d=J[b>>2];k=N[b+8>>2];b=J[a+100>>2]+(e<<4)|0;J[b+12>>2]=0;N[b+8>>2]=k;J[b>>2]=d;J[b+4>>2]=c}IE(a);return a}function $wa(a,b,c,d){a=a|0;b=b|0;c=c|0;d=d|0;var e=Q(0),f=Q(0),g=Q(0),h=Q(0),i=Q(0),j=Q(0),k=Q(0),l=Q(0),m=Q(0),n=Q(0),o=Q(0),p=Q(0),q=Q(0),r=0,s=Q(0),t=Q(0),u=Q(0),v=Q(0),w=Q(0),x=Q(0),y=Q(0),z=Q(0),A=0,B=0;c=Ui-96|0;Ui=c;e=N[a+76>>2];f=N[a+36>>2];j=N[a+28>>2];n=N[a+32>>2];g=N[a+80>>2];o=N[a+52>>2];p=N[a+44>>2];q=N[a+48>>2];l=N[a+84>>2];u=N[a+68>>2];k=N[b+8>>2];v=N[a+60>>2];h=N[b>>2];w=N[a+64>>2];i=N[b+4>>2];J[c+92>>2]=0;s=Q(l+Q(Q(u*k)+Q(Q(v*h)+Q(i*w))));N[c+88>>2]=s;t=Q(g+Q(Q(o*k)+Q(Q(p*h)+Q(i*q))));N[c+84>>2]=t;k=Q(e+Q(Q(f*k)+Q(Q(j*h)+Q(n*i))));N[c+80>>2]=k;h=N[b+24>>2];i=N[b+16>>2];m=N[b+20>>2];J[c+76>>2]=0;x=Q(l+Q(Q(u*h)+Q(Q(v*i)+Q(w*m))));N[c+72>>2]=x;y=Q(g+Q(Q(o*h)+Q(Q(p*i)+Q(q*m))));N[c+68>>2]=y;z=Q(e+Q(Q(f*h)+Q(Q(j*i)+Q(n*m))));N[c+64>>2]=z;h=N[b+40>>2];i=N[b+32>>2];m=N[b+36>>2];J[c+60>>2]=0;l=Q(l+Q(Q(u*h)+Q(Q(v*i)+Q(w*m))));N[c+56>>2]=l;g=Q(g+Q(Q(o*h)+Q(Q(p*i)+Q(q*m))));N[c+52>>2]=g;e=Q(e+Q(Q(f*h)+Q(Q(j*i)+Q(n*m))));N[c+48>>2]=e;J[c+44>>2]=0;n=Q(Q(Q(k+z)+e)*Q(.3333333432674408));N[c+32>>2]=n;o=Q(Q(Q(t+y)+g)*Q(.3333333432674408));N[c+36>>2]=o;f=Q(Q(Q(s+x)+l)*Q(.3333333432674408));N[c+40>>2]=f;J[c+24>>2]=0;J[c+28>>2]=0;J[c+16>>2]=1065353216;J[c+20>>2]=1065353216;b=J[a+8>>2];J[c+12>>2]=0;h=f;f=Q(z-k);j=Q(g-t);g=Q(y-t);p=Q(e-k);e=Q(Q(f*j)-Q(g*p));i=e;k=Q(e*e);e=g;g=Q(l-s);q=Q(x-s);e=Q(Q(e*g)-Q(q*j));f=Q(Q(q*p)-Q(f*g));j=Q(Q(1)/Q(Y(Q(k+Q(Q(e*e)+Q(f*f))))));N[c+8>>2]=h+Q(i*j);N[c+4>>2]=o+Q(f*j);N[c>>2]=n+Q(e*j);Zi[J[J[b>>2]+8>>2]](b,c+32|0,c,c+16|0);d=J[a+8>>2];A=c+80|0;r=c- -64|0;b=a+12|0;Zi[J[J[d>>2]+8>>2]](d,A,r,b);d=J[a+8>>2];B=r;r=c+48|0;Zi[J[J[d>>2]+8>>2]](d,B,r,b);a=J[a+8>>2];Zi[J[J[a>>2]+8>>2]](a,r,A,b);Ui=c+96|0}function xU(a,b){var c=0,d=0,e=0,f=0,g=0,h=0,i=0,j=0,k=0,l=0,m=0,n=0,o=0,p=0;h=J[a+104>>2];c=K[h+163152|0]<<9;d=K[(c+319216|0)+(K[a+21|0]<<1)|0];a:{if(h-15>>>0<=2){c=K[(c+319216|0)+(K[a+22|0]<<1)|0];f=(P(d,63)+127>>>0)/255<<5;d=(P(d,31)+127>>>0)/255|0;e=f|d;H[b|0]=e;f=((f|d<<11)&65280)>>>8|0;H[b+1|0]=f;g=(P(c,63)+127>>>0)/255<<5;c=(P(c,31)+127>>>0)/255|0;d=g|c;c=((g|c<<11)&65280)>>>8|0;break a}c=c+319216|0;e=(P(K[c+(K[a+25|0]<<1)|0],31)+127>>>0)/255|(P(K[c+(K[a+23|0]<<1)|0],63)+127>>>0)/255<<5;H[b|0]=e;f=(((P(d,31)+127>>>0)/255<<11|e)&65280)>>>8|0;H[b+1|0]=f;d=(P(K[c+(K[a+26|0]<<1)|0],31)+127>>>0)/255|(P(K[c+(K[a+24|0]<<1)|0],63)+127>>>0)/255<<5;c=((d|(P(K[c+(K[a+22|0]<<1)|0],31)+127>>>0)/255<<11)&65280)>>>8|0}H[b+3|0]=c;H[b+2|0]=d;i=d&255|c<<8;g=e&255|f<<8;if((i|0)==(g|0)){b:{if(!g){f=0;e=1;d=0;c=85;a=0;break b}c=0;d=g-1|0;a=(d&65280)>>>8|0}H[b+3|0]=a;H[b+2|0]=d;H[b+1|0]=f;H[b|0]=e;a=P(c,16843009);H[b+4|0]=a;H[b+5|0]=a>>>8;H[b+6|0]=a>>>16;H[b+7|0]=a>>>24;return}if(g>>>0>>0){H[b+2|0]=e;H[b|0]=d;H[b+3|0]=f;H[b+1|0]=c}c=J[(K[h+163088|0]<<2)+243392>>2];e=a+39|0;d=K[h+163216|0]-1|0;f=K[c+K[e+(1<>>0>>0;c=(((a^K[c+K[e+(15<>>6;c=(c<<4|(a^o)<<2|a^n)<<4|(a^m)<<2|a^l;H[b+6|0]=c>>>6;c=(c<<4|(a^k)<<2|a^j)<<4|(a^h)<<2|a^f;H[b+5|0]=c>>>6;H[b+4|0]=a^p|c<<2}function Gda(a){a=a|0;var b=0,c=0,d=0,e=0,f=0,g=0,h=0,i=0,j=0,k=0,l=0;b=Ui+-64|0;Ui=b;j=-13;a:{b:{c:{d:{if(dk(J[a+20>>2],J[a+24>>2],J[59572],b+60|0,0)){break d}c=J[J[a+36>>2]+8>>2];J[b+56>>2]=0;J[b+48>>2]=0;J[b+52>>2]=0;J[b+40>>2]=0;J[b+44>>2]=0;J[b+32>>2]=0;J[b+36>>2]=0;J[b+24>>2]=0;J[b+28>>2]=0;J[b+16>>2]=0;J[b+20>>2]=0;j=QQ(J[J[a+4>>2]>>2],J[a>>2],J[b+60>>2],b+16|0,1);e:{if(!j){e=J[c+8>>2];f=J[c+12>>2];g=J[b+24>>2];d=J[b+28>>2];oy(J[a>>2],c);J[c+4>>2]=J[b+20>>2];J[c+24>>2]=J[b+40>>2];J[c+28>>2]=J[b+44>>2];J[c+32>>2]=J[c+32>>2]&-2147483648|J[b+48>>2]&2147483647;J[c+36>>2]=J[b+52>>2];J[c+40>>2]=J[b+56>>2];i=c+12|0;k=c+8|0;d=d-g|0;g=d>>2;e=f-e>>2;f:{if(g>>>0>e>>>0){if(H[c+20|0]&1){break c}d=J[c+8>>2];f=J[c+16>>2];lj(g,4,k,c+16|0,i);l=J[J[b+60>>2]+8>>2];h=J[k>>2];if(l>>>0>J[c+16>>2]-h>>2>>>0){break b}J[i>>2]=h+(l<<2);d=f-d>>2;if(g>>>0<=d>>>0){g=e;break f}while(1){f=J[b+24>>2];if(J[b+28>>2]-f>>2>>>0<=d>>>0){break a}h=J[k>>2];if(J[i>>2]-h>>2>>>0<=d>>>0){break a}l=h;h=d<<2;J[l+h>>2]=J[f+h>>2];d=d+1|0;if((g|0)!=(d|0)){continue}break}g=e;break f}if(g>>>0>=e>>>0){break f}e=J[c+8>>2];if(d>>>0>J[c+16>>2]-e>>>0){break b}J[i>>2]=d+e}if(g){d=0;while(1){e=J[b+24>>2];if(J[b+28>>2]-e>>2>>>0<=d>>>0){break a}f=J[k>>2];if(J[i>>2]-f>>2>>>0<=d>>>0){break a}h=f;f=d<<2;J[h+f>>2]=J[e+f>>2];d=d+1|0;if((g|0)!=(d|0)){continue}break}}J[c+32>>2]=J[c+32>>2]|-2147483648;J[J[a+36>>2]+16>>2]=(J[c+16>>2]+(J[a+24>>2]-J[c+8>>2]|0)|0)+44;break e}J[b>>2]=j;dj(3,88458,52557,b);oy(J[a>>2],b+16|0)}if(H[b+36|0]&1){break d}a=J[b+24>>2];if(!a){break d}cj(a)}Ui=b- -64|0;return j|0}Z(151729,53895,501,2284);B()}Z(144782,53895,514,59583);B()}Z(145396,53895,487,84789);B()}function kka(a,b){a=a|0;b=b|0;var c=0,d=0,e=0,f=0,g=0,h=0,i=0;f=Ui-32|0;Ui=f;a:{g=J[a+8>>2];b=J[g+4>>2];if((b|0)!=J[g+8>>2]){while(1){c=P(h,28)+b|0;b:{if((J[c+24>>2]&3)!=3){break b}b=0;e=J[a>>2];c:{if(!e){break c}e=J[e>>2];if(!e){break c}b=J[e>>2]}e=J[c+8>>2];d:{if(!e){d=0;break d}J[f+28>>2]=c;J[f+24>>2]=b;d=Nu(e,237,f+24|0,1e4);if((d|0)==-17){break b}}J[c+24>>2]=J[c+24>>2]&-2;b=J[J[a+12>>2]+4>>2];if(b){b=J[b+124>>2]}else{b=0}e=J[b+8>>2]-J[b+12>>2]>>4;Nj(b,-1e4,J[c+12>>2]);Nj(b,-1e4,J[c+16>>2]);uj(b,-1);Ok(b);if(!Eu(b)){gj(b,-3);dj(4,88458,128420,0);J[c+24>>2]=J[c+24>>2]&-2;d=J[c+12>>2];if((d|0)!=-2){hk(b,-1e4,d);hk(b,-1e4,J[c+16>>2]);hk(b,-1e4,J[c+20>>2]);J[c+20>>2]=-2;J[c+12>>2]=-2;J[c+16>>2]=-2}d=J[c+8>>2];if(d){zo(d);J[c+8>>2]=0}if((e|0)==J[b+8>>2]-J[b+12>>2]>>4){break b}Z(143244,36662,447,61256);B()}if(J[c+12>>2]==-2){gj(b,-3);dj(4,88458,15366,0);J[c+24>>2]=J[c+24>>2]&-2;d=J[c+12>>2];if((d|0)!=-2){hk(b,-1e4,d);hk(b,-1e4,J[c+16>>2]);hk(b,-1e4,J[c+20>>2]);J[c+20>>2]=-2;J[c+12>>2]=-2;J[c+16>>2]=-2}d=J[c+8>>2];if(d){zo(d);J[c+8>>2]=0}if((e|0)==J[b+8>>2]-J[b+12>>2]>>4){break b}Z(143244,36662,455,61256);B()}Nj(b,-1e4,J[c+20>>2]);i=J[b+8>>2];J[i+8>>2]=1;J[i>>2]=!d;J[b+8>>2]=J[b+8>>2]+16;Ol(b,3,0,0);J[c+24>>2]=J[c+24>>2]&-2;d=J[c+12>>2];if((d|0)!=-2){hk(b,-1e4,d);hk(b,-1e4,J[c+16>>2]);hk(b,-1e4,J[c+20>>2]);J[c+20>>2]=-2;J[c+12>>2]=-2;J[c+16>>2]=-2}d=J[c+8>>2];if(d){zo(d);J[c+8>>2]=0}if((e|0)!=J[b+8>>2]-J[b+12>>2]>>4){break a}}h=h+1|0;b=J[g+4>>2];if(h>>>0<(J[g+8>>2]-b|0)/28>>>0){continue}break}}a=J[g+28>>2];J[75160]=a+J[75160];J[f+16>>2]=a;J[f+20>>2]=0;J[f+8>>2]=a;J[f+12>>2]=0;Ui=f+32|0;return 0}Z(143244,36662,463,61256);B()}function Yba(a,b,c,d,e){a=a|0;b=b|0;c=c|0;d=d|0;e=e|0;var f=0,g=0,h=0,i=0,j=0,k=0,l=0,m=0,n=0,o=0,p=0,q=0;a:{b:{c:{d:{e:{if(a){if(!b){break e}c=J[a+160>>2];g=J[a+108>>2];if(c>>>0>=J[a+112>>2]-g>>2>>>0){break d}ad(J[g+(c<<2)>>2]);c=J[a+188>>2];if(!((c|0)==J[b+212>>2]&J[b+208>>2]==(e|0))){k=L[b+200>>1];if(k){while(1){c=J[e+2080>>2];h=J[e+2076>>2];f:{g:{if((c|0)==(h|0)){break g}c=(c-h|0)/24|0;l=c>>>0<=1?1:c;c=P(f,24)+b|0;g=J[c>>2];m=J[c+4>>2];c=0;while(1){i=h+P(c,24)|0;if((g|0)!=J[i>>2]|J[i+4>>2]!=(m|0)){c=c+1|0;if((l|0)!=(c|0)){continue}break g}break}c=J[i+8>>2];if((c|0)!=-1){break f}}c=65535;if(!(K[J[79491]+220|0]&2)){break f}if(!(_()|0)){break f}while(1){if(_()|0){continue}break}}I[(P(f,24)+b|0)+8>>1]=c;f=f+1|0;if((k|0)!=(f|0)){continue}break}c=J[a+188>>2]}J[b+212>>2]=c;J[b+208>>2]=e}c=L[b+200>>1];if(c){f=0;while(1){j=P(f,24)+b|0;o=I[j+8>>1];if((o|0)!=-1){c=L[j+10>>1];e=(c|0)==16;g=e?4:c;c=(c|0)==9;p=c?3:g;h=c?3:e?4:1;k=L[j+12>>1]+d|0;c=0;while(1){l=L[b+202>>1];m=K[j+20|0];e=J[j+16>>2];i=Gq(e);q=J[b+204>>2];n=c+o|0;Hc(n|0);g=J[(e<<2)+160992>>2];if(K[J[79491]+220|0]&2){e=_()|0;if(e){break c}}ec(n|0,p|0,g|0,m|0,l|0,P(P(c,p),i)+k|0);if(K[J[79491]+220|0]&2){e=_()|0;if(e){break b}}h:{if(!(K[a+221|0]&16)){break h}fc(n|0,q|0);if(!(K[J[79491]+220|0]&2)){break h}e=_()|0;if(e){break a}}c=c+1|0;if((h|0)!=(c|0)){continue}break}c=L[b+200>>1]}f=f+1|0;if(f>>>0<(c&65535)>>>0){continue}break}}return}Z(9196,40535,1945,46601);B()}Z(46436,40535,1946,46601);B()}Z(145396,53895,487,84789);B()}Cj(e,61171,1925);Z(114101,40535,1925,61171);B()}Cj(e,61171,1934);Z(114101,40535,1934,61171);B()}Cj(e,61171,1939);Z(114101,40535,1939,61171);B()}function vja(a,b){a=a|0;b=b|0;var c=0,d=0,e=0,f=0,g=0,h=0,i=0,j=0,k=0;b=Ui-224|0;Ui=b;e=J[a+8>>2];J[b+104>>2]=0;J[b+108>>2]=0;J[b+96>>2]=0;J[b+100>>2]=0;J[b+88>>2]=0;J[b+92>>2]=0;J[b+80>>2]=0;J[b+84>>2]=0;a=b+80|0;H[a|0]=0;H[a+1|0]=0;H[a+2|0]=0;H[a+3|0]=0;H[a+4|0]=0;H[a+5|0]=0;H[a+6|0]=0;H[a+7|0]=0;H[a+24|0]=0;H[a+25|0]=0;H[a+26|0]=0;H[a+27|0]=0;H[a+28|0]=0;H[a+29|0]=0;H[a+30|0]=0;H[a+31|0]=0;H[a+16|0]=0;H[a+17|0]=0;H[a+18|0]=0;H[a+19|0]=0;H[a+20|0]=0;H[a+21|0]=0;H[a+22|0]=0;H[a+23|0]=0;H[a+8|0]=0;H[a+9|0]=0;H[a+10|0]=0;H[a+11|0]=0;H[a+12|0]=0;H[a+13|0]=0;H[a+14|0]=0;H[a+15|0]=0;a:{if(eo(J[62018],a)){J[b+32>>2]=J[62018];dj(4,88458,134038,b+32|0);a=-1e3;break a}a=J[e>>2];c=J[e+4>>2];if((a|0)!=(c|0)){d=J[56862];g=J[d+8>>2];h=J[d+12>>2];i=b+208|0;while(1){d=J[(f<<2)+a>>2];if(H[d+8|0]&1){a=J[d>>2];j=J[a+20>>2];k=J[a+16>>2];c=b- -64|0;N[c+8>>2]=N[a+24>>2];J[c>>2]=k;J[c+4>>2]=j;a=J[d>>2];N[b+48>>2]=N[a>>2];N[b+52>>2]=N[a+4>>2];N[b+56>>2]=N[a+8>>2];N[b+60>>2]=N[a+12>>2];a=J[J[d+4>>2]>>2];J[b+16>>2]=bv(J[a>>2]);Gj(i,9,85727,b+16|0);J[b+144>>2]=96;J[b+148>>2]=J[a+4>>2];N[b+152>>2]=N[a+8>>2];N[b+160>>2]=N[a+16>>2];N[b+164>>2]=N[a+20>>2];N[b+168>>2]=N[a+24>>2];N[b+176>>2]=N[a+32>>2];N[b+180>>2]=N[a+36>>2];N[b+184>>2]=N[a+40>>2];N[b+188>>2]=N[a+44>>2];N[b+192>>2]=N[a+48>>2];N[b+112>>2]=N[b+64>>2];N[b+116>>2]=N[b+68>>2];N[b+120>>2]=N[b+72>>2];N[b+128>>2]=N[b+48>>2];N[b+132>>2]=N[b+52>>2];N[b+136>>2]=N[b+56>>2];N[b+140>>2]=N[b+60>>2];if(Jk(0,b+80|0,g,h,0,0,J[56862],b+112|0,105,0)){J[b>>2]=J[62018];dj(4,88458,134153,b);a=-1e3;break a}c=J[e+4>>2];a=J[e>>2]}f=f+1|0;if(f>>>0>2>>>0){continue}break}}a=0}Ui=b+224|0;return a|0}function H0(a,b){a=a|0;b=b|0;var c=0,d=0,e=0;e=J[a+16>>2];b=lk(a,0,0,192);J[a+48>>2]=8;J[a+20>>2]=b;J[a+40>>2]=b;J[a+36>>2]=b+168;b=lk(a,0,0,720);J[a+44>>2]=45;J[a+32>>2]=b;J[a+28>>2]=b+624;c=J[a+20>>2];J[c+4>>2]=b;d=b+16|0;J[a+8>>2]=d;J[b+8>>2]=0;J[c>>2]=d;J[a+12>>2]=d;J[c+8>>2]=b+336;b=pq(a,0,2);J[a+80>>2]=5;J[a+72>>2]=b;b=J[a+16>>2];c=pq(a,0,2);J[b+104>>2]=5;J[b+96>>2]=c;PA(a,32);b=0;while(1){c=b<<2;d=J[c+257680>>2];d=zk(a,d,yj(d));J[(c+J[a+16>>2]|0)+188>>2]=d;c=J[(c+J[a+16>>2]|0)+188>>2];H[c+5|0]=K[c+5|0]|32;b=b+1|0;if((b|0)!=17){continue}break}b=zk(a,71465,3);H[b+6|0]=1;H[b+5|0]=K[b+5|0]|32;b=zk(a,52030,5);H[b+6|0]=2;H[b+5|0]=K[b+5|0]|32;b=zk(a,44495,2);H[b+6|0]=3;H[b+5|0]=K[b+5|0]|32;b=zk(a,62616,4);H[b+6|0]=4;H[b+5|0]=K[b+5|0]|32;b=zk(a,57623,6);H[b+6|0]=5;H[b+5|0]=K[b+5|0]|32;b=zk(a,71460,3);H[b+6|0]=6;H[b+5|0]=K[b+5|0]|32;b=zk(a,62644,5);H[b+6|0]=7;H[b+5|0]=K[b+5|0]|32;b=zk(a,33004,3);H[b+6|0]=8;H[b+5|0]=K[b+5|0]|32;b=zk(a,45597,8);H[b+6|0]=9;H[b+5|0]=K[b+5|0]|32;b=zk(a,57643,2);H[b+6|0]=10;H[b+5|0]=K[b+5|0]|32;b=zk(a,47969,2);H[b+6|0]=11;H[b+5|0]=K[b+5|0]|32;b=zk(a,50550,5);H[b+6|0]=12;H[b+5|0]=K[b+5|0]|32;b=zk(a,49721,3);H[b+6|0]=13;H[b+5|0]=K[b+5|0]|32;b=zk(a,10761,3);H[b+6|0]=14;H[b+5|0]=K[b+5|0]|32;b=zk(a,33031,2);H[b+6|0]=15;H[b+5|0]=K[b+5|0]|32;b=zk(a,17182,6);H[b+6|0]=16;H[b+5|0]=K[b+5|0]|32;b=zk(a,44607,6);H[b+6|0]=17;H[b+5|0]=K[b+5|0]|32;b=zk(a,48128,4);H[b+6|0]=18;H[b+5|0]=K[b+5|0]|32;b=zk(a,60828,4);H[b+6|0]=19;H[b+5|0]=K[b+5|0]|32;b=zk(a,49667,5);H[b+6|0]=20;H[b+5|0]=K[b+5|0]|32;b=zk(a,66372,5);H[b+6|0]=21;H[b+5|0]=K[b+5|0]|32;a=zk(a,2985,17);H[a+5|0]=K[a+5|0]|32;J[e+64>>2]=J[e+68>>2]<<2}function Ys(a,b,c,d,e,f,g,h,i,j,k,l){var m=0,n=0,o=0,p=0,q=0,r=0,s=0,t=0,u=Q(0);n=Ui-32|0;Ui=n;a:{b:{c:{p=b&65535;m=J[a+32>>2];if(p>>>0<(J[a+36>>2]-m|0)/672>>>0){if(L[(m+P(p,672)|0)+648>>1]!=(b>>>16|0)){break c}J[n+24>>2]=0;J[n+16>>2]=0;J[n+20>>2]=0;J[n+8>>2]=0;J[n+12>>2]=0;p=J[a+48>>2];m=p;q=J[a+52>>2];if((m|0)!=(q|0)){r=(q-m|0)/72|0;while(1){s=r>>>1|0;o=P(s,72)+m|0;t=M[o+4>>2]>>0;m=t?o+72|0:m;r=t?(s^-1)+r|0:s;if(r){continue}break}}d:{e:{f:{if(!((m|0)==(q|0)|J[m+4>>2]!=(c|0))){m=m-p|0;if((m|0)!=-72){break f}}o=(q-p|0)/72|0;m=J[a+56>>2];if((m|0)==(q|0)){J[n>>2]=o;dj(3,93318,140043,n);a=0;break d}t=(m-p|0)/72|0;m=o+1|0;if(t>>>0>>0){break b}q=P(m,72)+p|0;J[a+52>>2]=q;break e}if(m>>>0>=q-p>>>0){break a}o=m+p|0;m=J[o+56>>2];if(!m|K[o+68|0]&2){break e}Zi[m|0](a,J[o>>2],0,J[o+60>>2],J[o+64>>2]);q=J[a+52>>2];p=J[a+48>>2]}J[n+24>>2]=J[e+16>>2];m=J[e+12>>2];J[n+16>>2]=J[e+8>>2];J[n+20>>2]=m;m=J[e+4>>2];J[n+8>>2]=J[e>>2];J[n+12>>2]=m;m=p;s=q-72|0;if((m|0)!=(s|0)){r=(s-m|0)/72|0;while(1){t=r>>>1|0;e=P(t,72)+m|0;o=M[e+4>>2]>>0;m=o?e+72|0:m;r=o?(t^-1)+r|0:t;if(r){continue}break}}u=g>2]==(c|0))){el(m+72|0,m,s-m|0)}N[m+28>>2]=i;N[m+24>>2]=u;J[m+20>>2]=0;N[m+16>>2]=g;N[m+12>>2]=d;J[m+4>>2]=c;J[m>>2]=b;b=J[n+12>>2];J[m+32>>2]=J[n+8>>2];J[m+36>>2]=b;b=J[n+20>>2];J[m+40>>2]=J[n+16>>2];J[m+44>>2]=b;J[m+48>>2]=J[n+24>>2];H[m+68|0]=1;J[m+64>>2]=l;J[m+60>>2]=k;J[m+56>>2]=j;J[m+52>>2]=f;b=J[a+48>>2];c=J[a+52>>2]-b|0;a=m-p|0;if(c>>>0<=a>>>0){break a}a=a+b|0}Ui=n+32|0;return a}break a}Z(47372,40876,3582,13603);B()}Z(144782,53895,514,59583);B()}Z(145396,53895,487,84789);B()}function xma(a){a=a|0;var b=0,c=0,d=0,e=0,f=0,g=0,h=0;b=Ui-448|0;Ui=b;g=pj(b+428|0,a,0,37509,1172);J[b+156>>2]=256;J[b+148>>2]=b+160;J[b+152>>2]=0;J[b+140>>2]=2270;J[b+136>>2]=2271;J[b+144>>2]=b+136;Bj(a);c=qj(a,-1,J[74197],139276);gj(a,-2);e=J[c+4>>2];J[b+128>>2]=0;J[b+132>>2]=0;J[b+120>>2]=0;J[b+124>>2]=0;J[b+112>>2]=0;J[b+116>>2]=0;J[b+104>>2]=0;J[b+108>>2]=0;J[b+96>>2]=0;J[b+100>>2]=0;J[b+88>>2]=0;J[b+92>>2]=0;J[b+80>>2]=0;J[b+84>>2]=0;J[b+72>>2]=0;J[b+76>>2]=0;c=b+104|0;$l(a,c);Sk(a,1,b+72|0,c);c=J[J[e+80>>2]+8>>2];a:{if(!c){break a}c=J[c>>2];if(!c){break a}d=J[c+3216>>2];f=J[c+3220>>2]}b:{if((d|0)!=J[b+72>>2]|(f|0)!=J[b+76>>2]){a=Jj(g,120318,0);break b}f=J[J[e+80>>2]+8>>2];c=xk(f,J[b+88>>2],J[b+92>>2]);if(!c){J[b>>2]=nk(b+136|0,J[b+88>>2],J[b+92>>2]);a=Jj(g,134772,b);break b}c:{d:{e:{if(J[a+8>>2]-J[a+12>>2]>>4<2){break e}if(!kj(a,2)){break e}Sk(a,2,b+72|0,b+104|0);h=xk(f,J[b+88>>2],J[b+92>>2]);if(!h){J[b+16>>2]=nk(b+136|0,J[b+88>>2],J[b+92>>2]);a=Jj(g,134772,b+16|0);break b}d=0;f=0;e=J[J[e+80>>2]+8>>2];f:{if(!e){break f}e=J[e>>2];if(!e){break f}d=J[e+3216>>2];f=J[e+3220>>2]}if((d|0)==J[b+72>>2]&(f|0)==J[b+76>>2]){break d}a=Jj(g,120318,0);break b}J[b+64>>2]=ck(a,3);d=0;a=0;break c}J[b+64>>2]=ck(a,3);d=J[h+100>>2];a=J[h+96>>2]}J[b+56>>2]=a;J[b+60>>2]=d;J[b+32>>2]=0;J[b+36>>2]=0;d=0;f=0;a=J[J[c+80>>2]+8>>2];g:{if(!a){break g}a=J[a>>2];if(!a){break g}d=J[a+3216>>2];f=J[a+3220>>2]}J[b+24>>2]=d;J[b+28>>2]=f;a=J[c+96>>2];d=J[c+100>>2];J[b+48>>2]=0;J[b+52>>2]=0;J[b+40>>2]=a;J[b+44>>2]=d;d=J[55236];a=0;if(!Jk(0,b+24|0,J[d+8>>2],J[d+12>>2],c,0,d,b+56|0,16,0)){break b}a=Jj(g,153694,0)}oj(g);Ui=b+448|0;return a|0}function Ay(a,b){var c=0,d=0,e=0,f=0,g=0;g=Ui-16|0;Ui=g;a:{b:{c:{d:{e:{f:{g:{h:{i:{if(!b){if(L[a+138>>1]<<16==2147418112){break c}e=J[a+80>>2];if(J[e+1084>>2]-J[e+1080>>2]>>1>>>0>=M[e+1032>>2]){break i}c=a+136|0;break f}if(K[b+136|0]>=127){J[g>>2]=127;dj(4,88293,78057,g);c=-6;break c}e=J[a+80>>2];j:{c=J[b+140>>2]&32767;if((c|0)!=32767){d=J[e+1036>>2];f=J[e+1040>>2]-d>>2;while(1){if(c>>>0>=f>>>0){break a}c=J[d+(c<<2)>>2];if((c|0)==(a|0)){break j}c=J[c+136>>2]>>>16|0;if((c|0)!=32767){continue}break}}if(J[b+80>>2]!=(e|0)){break g}d=J[a+136>>2];c=((d&255)<<4)+e|0;if(M[e+1032>>2]>J[c+1100>>2]-J[c+1096>>2]>>1>>>0){break h}Z(24835,38296,3140,13570);B()}dj(4,88293,73178,0);c=-7;break c}Z(24916,38296,3144,13570);B()}c=a+136|0;if((d&-65536)!=2147418112){break f}kt(e,a);break e}Z(46020,38296,3139,13570);B()}zy(e,a);kt(e,a);if(b){break e}d=J[c>>2];b=d&65280|2147418112;break d}f=J[b+148>>2];d=f>>>16&32767;k:{if((d|0)==32767){f=J[a+140>>2]<<16&2147418112|f&-2147418113;break k}f=J[e+1036>>2];if(d>>>0>=J[e+1040>>2]-f>>2>>>0){break a}d=J[f+(d<<2)>>2];if(K[b+136|0]!=(K[d+136|0]-1|0)){break b}J[a+148>>2]=J[a+148>>2]&-32768|J[d+140>>2]&32767;f=J[b+148>>2]&-2147418113|J[a+140>>2]<<16&2147418112}J[b+148>>2]=f;f=c;d=L[c>>1];c=d|J[b+140>>2]<<16&2147418112;J[f>>2]=c;b=c&2147483392|J[b+136>>2]+1&255}J[a+136>>2]=b;Ly(e,a);c=0;b=d&255;f=K[a+136|0];d=b-f|0;if((d|0)>=0){if((b|0)==(f|0)){break c}b=a;a=0;while(1){Hy(e,J[b+148>>2]);a=a+1|0;if((d|0)!=(a|0)){continue}break}break c}d=0-d|0;b=a;a=0;while(1){yR(e,J[b+148>>2]);a=a+1|0;if((d|0)!=(a|0)){continue}break}}Ui=g+16|0;return c}Z(110910,38296,3164,13570);B()}Z(145396,53895,487,84789);B()}function qB(a,b,c){var d=0,e=0,f=0,g=0,h=0,i=0;e=Ui-48|0;Ui=e;J[e+44>>2]=0;J[e+36>>2]=1;J[e+40>>2]=0;f=e+24|0;d=f;J[d+8>>2]=0;J[d>>2]=1;J[d+4>>2]=0;g=e+12|0;d=g;J[d+8>>2]=0;J[d>>2]=1;J[d+4>>2]=0;J[e+8>>2]=0;J[e>>2]=1;J[e+4>>2]=0;a:{b:{if(!J[a+24>>2]){d=c+24|0;d=Ak(f,d,d);if(d){break a}d=Nl(f,a);if(d){break a}d=Ql(g,c,f);if(d){break a}f=a+4|0;while(1){d=e+12|0;if((_j(d,f)|0)>=0){d=tn(d,d,f);if(!d){continue}break a}break}d=wl(e,c,e+24|0);if(d){break a}while(1){c:{if(J[e>>2]>=0){break c}if(!Pj(e,0)){break c}d=Ql(e,e,f);if(!d){continue}break a}break}g=e+24|0;d=jl(a,g,e+12|0,e);if(d){break a}d=vA(e+36|0,g,3);if(d){break a}while(1){d=e+36|0;if((_j(d,f)|0)<0){break b}d=tn(d,d,f);if(!d){continue}break}break a}f=e+24|0;d=Ak(f,c,c);if(d){break a}d=Nl(f,a);if(d){break a}d=vA(e+36|0,f,3);if(d){break a}g=a+16|0;f=a+4|0;while(1){d=e+36|0;if((_j(d,f)|0)>=0){d=tn(d,d,f);if(!d){continue}break a}break}if(!Pj(g,0)){break b}f=e+24|0;d=c+24|0;d=Ak(f,d,d);if(d){break a}d=Nl(f,a);if(d){break a}h=e+12|0;d=jl(a,h,f,f);if(d){break a}d=jl(a,f,h,g);if(d){break a}d=e+36|0;d=Zt(a,d,d,f);if(d){break a}}f=e+12|0;h=c+12|0;d=jl(a,f,h,h);if(d){break a}d=Wt(a,f);if(d){break a}g=e+24|0;d=jl(a,g,c,f);if(d){break a}d=Wt(a,g);if(d){break a}d=jl(a,e,f,f);if(d){break a}d=Wt(a,e);if(d){break a}i=e+36|0;d=jl(a,f,i,i);if(d){break a}d=En(a,f,f,g);if(d){break a}d=En(a,f,f,g);if(d){break a}d=En(a,g,g,f);if(d){break a}d=jl(a,g,g,i);if(d){break a}d=En(a,g,g,e);if(d){break a}d=jl(a,e,h,c+24|0);if(d){break a}d=Wt(a,e);if(d){break a}d=sk(b,f);if(d){break a}d=sk(b+12|0,g);if(d){break a}d=sk(b+24|0,e)}Dj(e+36|0);Dj(e+24|0);Dj(e+12|0);Dj(e);Ui=e+48|0;return d}function vea(a){a=a|0;var b=0,c=0,d=0,e=0,f=0,g=0,h=0,i=0,j=0;e=Ui-16|0;Ui=e;b=-13;a:{b:{c:{d:{if(!dk(J[a+12>>2],J[a+16>>2],J[57762],e+12|0,0)){c=J[e+12>>2];f=J[c+52>>2];if(f){g=J[c+48>>2];b=0;while(1){d=g+P(b,304)|0;e:{if(J[d+268>>2]!=1){break e}if(N[d+48>>2]==Q(0)){J[d+48>>2]=1065353216}if(N[d+52>>2]!=Q(0)){break e}J[d+52>>2]=1065353216}b=b+1|0;if((f|0)!=(b|0)){continue}break}}g=J[c+72>>2];if(g){i=J[c+68>>2];f=0;while(1){b=P(f,12)+i|0;h=J[b+8>>2];if(h){j=J[b+4>>2];b=0;while(1){d=P(b,304)+j|0;f:{if(J[d+268>>2]!=1){break f}if(N[d+48>>2]==Q(0)){J[d+48>>2]=1065353216}if(N[d+52>>2]!=Q(0)){break f}J[d+52>>2]=1065353216}b=b+1|0;if((h|0)!=(b|0)){continue}break}}f=f+1|0;if((g|0)!=(f|0)){continue}break}}Tk(J[a+24>>2],J[c+64>>2]);b=J[e+12>>2];c=J[b>>2];if(K[c|0]){Tk(J[a+24>>2],c);b=J[e+12>>2]}d=J[b+8>>2];if(d){c=0;while(1){if(c>>>0>=d>>>0){break d}Tk(J[a+24>>2],J[(J[b+4>>2]+(c<<3)|0)+4>>2]);c=c+1|0;b=J[e+12>>2];d=J[b+8>>2];if(c>>>0>>0){continue}break}}d=J[b+16>>2];if(d){c=0;while(1){if(c>>>0>=d>>>0){break c}Tk(J[a+24>>2],J[(J[b+12>>2]+(c<<3)|0)+4>>2]);c=c+1|0;b=J[e+12>>2];d=J[b+16>>2];if(c>>>0>>0){continue}break}}d=J[b+96>>2];if(d){c=0;while(1){if(c>>>0>=d>>>0){break b}Tk(J[a+24>>2],J[(J[b+92>>2]+(c<<3)|0)+4>>2]);c=c+1|0;b=J[e+12>>2];d=J[b+96>>2];if(c>>>0>>0){continue}break}}d=J[b+104>>2];if(d){c=0;while(1){if(c>>>0>=d>>>0){break a}Tk(J[a+24>>2],J[(J[b+100>>2]+(c<<3)|0)+4>>2]);c=c+1|0;b=J[e+12>>2];d=J[b+104>>2];if(c>>>0>>0){continue}break}}J[J[a+32>>2]>>2]=b;b=0}Ui=e+16|0;return b|0}Z(12664,55274,255,84789);B()}Z(12664,55274,263,84789);B()}Z(12664,55274,307,84789);B()}Z(12664,55274,315,84789);B()}function b_(a){a=a|0;var b=0,c=0,d=0,e=0,f=0,g=0,h=0,i=0,j=0,k=0,l=0,m=0;h=wj(a,1);m=wj(a,2);A(+m);j=v(1)|0;a:{b:{i=v(0)|0;e=i<<1;c=j<<1|i>>>31;c:{if(!(e|c)){break c}A(+m);b=v(1)|0;d=v(0)|0;b=b&2147483647;if((b|0)==2146435072&(d|0)!=0|b>>>0>2146435072){break c}A(+h);k=v(1)|0;d=v(0)|0;f=k>>>20&2047;if((f|0)!=2047){break b}}h=h*m;h=h/h;break a}b=k<<1|d>>>31;g=d<<1;if((b|0)==(c|0)&g>>>0<=e>>>0|c>>>0>b>>>0){h=(e|0)==(g|0)&(c|0)==(b|0)?h*0:h;break a}l=j>>>20&2047;d:{if(!f){f=0;e=d<<12;c=k<<12|d>>>20;b=c;if((b|0)>0|(b|0)>=0){while(1){f=f-1|0;c=b<<1|e>>>31;e=e<<1;b=c;if((b|0)>=0|(b|0)>0){continue}break}}e=d;c=1-f|0;b=c&31;if((c&63)>>>0>=32){c=d<>>32-b|k<>>20;d=c;if((d|0)>0|(d|0)>=0){while(1){l=l-1|0;c=d<<1|g>>>31;g=g<<1;d=c;if((d|0)>=0|(d|0)>0){continue}break}}g=i;c=1-l|0;d=c&31;if((c&63)>>>0>=32){c=i<>>32-d|j<(l|0)){while(1){c=e-i|0;f:{j=b-((e>>>0>>0)+d|0)|0;if((j|0)<0){break f}e=c;b=j;if(c|b){break f}h=h*0;break a}b=b<<1|e>>>31;e=e<<1;f=f-1|0;if((l|0)<(f|0)){continue}break}f=l}c=e-i|0;g:{d=b-((e>>>0>>0)+d|0)|0;if((d|0)<0){break g}e=c;b=d;if(c|b){break g}h=h*0;break a}h:{if(b>>>0>1048575){g=e;d=b;break h}while(1){f=f-1|0;c=b>>>0<524288;b=b<<1|e>>>31;d=b;g=e<<1;e=g;if(c){continue}break}}j=0;k=k&-2147483648;if((f|0)>0){c=d+-1048576|f<<20}else{e=g;c=1-f|0;b=c&31;if((c&63)>>>0>=32){c=0;g=d>>>b|0}else{c=d>>>b|0;g=((1<>>b}}x(0,g|j);x(1,c|k);h=+z()}b=J[a+8>>2];J[b+8>>2]=3;O[b>>3]=h;J[a+8>>2]=J[a+8>>2]+16;return 1}function qT(a){var b=0,c=0,d=0,e=0;b=J[a+76>>2];c=J[a+56>>2];if((b+c|0)>0){d=J[a+8>>2];Q(Zi[J[J[d>>2]+12>>2]](d,J[a+44>>2],J[a+36>>2],J[a+64>>2],c,J[a+84>>2],b,J[a+4>>2],J[a+20>>2],J[a+24>>2],J[a+28>>2]))}c=J[a+36>>2];a:{if((c|0)>=0){break a}if(J[a+40>>2]<0){b=J[a+44>>2];if(!(b?!b|K[a+48|0]!=1:1)){J[83765]=J[83765]+1;Zi[J[61751]](J[b-4>>2])}H[a+48|0]=1;J[a+40>>2]=0;J[a+44>>2]=0}d=0;b=c;e=0-b&3;if(e){while(1){J[J[a+44>>2]+(b<<2)>>2]=0;b=b+1|0;d=d+1|0;if((e|0)!=(d|0)){continue}break}}if(c>>>0>4294967292){break a}while(1){c=b<<2;J[c+J[a+44>>2]>>2]=0;J[(c+J[a+44>>2]|0)+4>>2]=0;J[(c+J[a+44>>2]|0)+8>>2]=0;J[(c+J[a+44>>2]|0)+12>>2]=0;b=b+4|0;if(b){continue}break}}J[a+36>>2]=0;c=J[a+56>>2];b:{if((c|0)>=0){break b}if(J[a+60>>2]<0){b=J[a+64>>2];if(!(b?!b|K[a+68|0]!=1:1)){J[83765]=J[83765]+1;Zi[J[61751]](J[b-4>>2])}H[a+68|0]=1;J[a+60>>2]=0;J[a+64>>2]=0}d=0;b=c;e=0-b&3;if(e){while(1){J[J[a+64>>2]+(b<<2)>>2]=0;b=b+1|0;d=d+1|0;if((e|0)!=(d|0)){continue}break}}if(c>>>0>4294967292){break b}while(1){c=b<<2;J[c+J[a+64>>2]>>2]=0;J[(c+J[a+64>>2]|0)+4>>2]=0;J[(c+J[a+64>>2]|0)+8>>2]=0;J[(c+J[a+64>>2]|0)+12>>2]=0;b=b+4|0;if(b){continue}break}}J[a+56>>2]=0;c=J[a+76>>2];c:{if((c|0)>=0){break c}if(J[a+80>>2]<0){b=J[a+84>>2];if(!(b?!b|K[a+88|0]!=1:1)){J[83765]=J[83765]+1;Zi[J[61751]](J[b-4>>2])}H[a+88|0]=1;J[a+80>>2]=0;J[a+84>>2]=0}d=0;b=c;e=0-b&3;if(e){while(1){J[J[a+84>>2]+(b<<2)>>2]=0;b=b+1|0;d=d+1|0;if((e|0)!=(d|0)){continue}break}}if(c>>>0>4294967292){break c}while(1){c=b<<2;J[c+J[a+84>>2]>>2]=0;J[(c+J[a+84>>2]|0)+4>>2]=0;J[(c+J[a+84>>2]|0)+8>>2]=0;J[(c+J[a+84>>2]|0)+12>>2]=0;b=b+4|0;if(b){continue}break}}J[a+76>>2]=0}function iK(a,b,c,d){var e=0,f=0,g=0,h=0,i=0,j=0,k=0,l=0,m=Q(0);i=Ui-32|0;Ui=i;g=J[b+12>>2]+c|0;k=(J[b+4>>2]&-268435456)!=805306368;a:{b:{if(k){j=1;break b}j=J[g+4>>2];c=J[g>>2];Fj(a,0,0);if(!j){break a}g=c+d|0}c=0;while(1){c:{d:{e:{f:{g:{h:{i:{j:{k:{l:{e=J[b+4>>2]>>>22&63;switch(e-2|0){case 0:break h;case 6:break i;case 2:break j;case 11:break k;case 3:break l;case 9:break e;case 12:break f;case 7:break g;default:break d}}e=J[(c<<2)+g>>2];f=J[a+8>>2];J[f+8>>2]=3;O[f>>3]=e|0;J[a+8>>2]=J[a+8>>2]+16;break c}e=J[(c<<2)+g>>2];f=J[a+8>>2];J[f+8>>2]=3;O[f>>3]=e|0;J[a+8>>2]=J[a+8>>2]+16;break c}e=(c<<3)+g|0;Bk(a,J[e>>2],J[e+4>>2]);break c}e=K[c+g|0];f=J[a+8>>2];J[f+8>>2]=1;J[f>>2]=(e|0)!=0;J[a+8>>2]=J[a+8>>2]+16;break c}m=N[(c<<2)+g>>2];e=J[a+8>>2];J[e+8>>2]=3;O[e>>3]=m;J[a+8>>2]=J[a+8>>2]+16;break c}xj(a,J[(c<<2)+g>>2]+d|0);break c}e=J[(c<<2)+g>>2];f=J[a+8>>2];J[f+8>>2]=3;O[f>>3]=e|0;J[a+8>>2]=J[a+8>>2]+16;break c}f=J[b+8>>2];e=P(J[f+16>>2],c)+g|0;h=J[f+4>>2];if(!$k(h,108973,8)){cl(a,e);break c}if(!$k(h,108838,7)){N[i+16>>2]=N[e>>2];N[i+20>>2]=N[e+4>>2];N[i+24>>2]=N[e+8>>2];cl(a,i+16|0);break c}if(!$k(h,106998,8)){yo(a,e);break c}if(!$k(h,16786,5)){tq(a,e);break c}if(!$k(h,106883,8)){Kp(a,e);break c}if(!$k(h,57776,8)){if(J[e>>2]){Nj(a,-1e4,J[e+4>>2]);Nj(a,-1,J[e>>2]);Rl(a,-2);break c}e=J[a+8>>2];J[e+8>>2]=0;J[a+8>>2]=e+16;break c}Fj(a,0,0);if(!K[f+24|0]){break c}h=0;while(1){l=P(h,24);xj(a,J[l+J[f+20>>2]>>2]);iK(a,J[f+20>>2]+l|0,e,d);Xj(a,-3);h=h+1|0;if(h>>>0>2]=J[b>>2];J[i>>2]=e;fj(a,27682,i)}c=c+1|0;if(!k){Ik(a,-2,c)}if((c|0)!=(j|0)){continue}break}}Ui=i+32|0}function Xq(a){var b=0,c=0,d=0,e=0,f=0,g=0,h=0,i=0,j=0,k=0,l=0;if(!(K[a+60|0]|!K[a+1389|0])){b=J[a+44>>2];a:{if(b){b=b-J[a+48>>2]|0;break a}b=wo(J[a+32>>2])-J[a+36>>2]|0}J[a+68>>2]=b-4}b:{c:{d:{b=J[a+44>>2];e:{if(b){if(b>>>0>=M[a+52>>2]){break d}J[a+44>>2]=b+1;b=K[b|0];break e}b=gl(J[a+32>>2]);if((b|0)==-1){break d}}if(!(b&255)){break c}b=31;c=112;break b}J[a+108>>2]=1}b=J[a+44>>2];f:{g:{if(b){if(b>>>0>=M[a+52>>2]){break g}J[a+44>>2]=b+1;b=K[b|0];break f}b=gl(J[a+32>>2]);if((b|0)!=-1){break f}}J[a+108>>2]=1;b=0}H[a+1387|0]=b;h=dp(a);f=dp(a);dp(a);J[a+1124>>2]=dp(a);dp(a);h:{i:{j:{k:{b=J[a+44>>2];l:{m:{if(b){d=J[a+52>>2];if(b>>>0>=d>>>0){J[a+108>>2]=1;b=0;break m}c=b+1|0;J[a+44>>2]=c;b=K[b|0];J[a+1128>>2]=b;e=a+1132|0;g=a+1128|0;break l}b=gl(J[a+32>>2]);if((b|0)==-1){J[a+108>>2]=1;b=0;break m}b=b&255}J[a+1128>>2]=b;e=a+1132|0;g=a+1128|0;c=J[a+44>>2];if(!c){break k}d=J[a+52>>2]}j=d;d=b+c|0;if(j>>>0>=d>>>0){break j}d=0;c=112;h=1;e=108;b=10;break h}if((Sl(e,b,1,J[a+32>>2])|0)==1){break i}d=0;c=112;e=108;h=1;b=10;break h}hj(e,c,b);J[a+44>>2]=d}J[a+1416>>2]=-2;n:{if((f&h)==-1){break n}b=J[g>>2];while(1){if((b|0)<=0){break n}b=b-1|0;if(K[e+b|0]==255){continue}break}J[a+1420>>2]=h;J[a+1416>>2]=b}if(!K[a+1389|0]){d=1;b=0;c=1392;break b}d=1;l=J[a+68>>2];f=J[g>>2];if((f|0)<=0){b=27}else{g=0;c=0;b=0;if(f>>>0>=4){i=f&2147483644;while(1){j=c;c=b+e|0;c=(((j+K[c|0]|0)+K[c+1|0]|0)+K[c+2|0]|0)+K[c+3|0]|0;b=b+4|0;k=k+4|0;if((k|0)!=(i|0)){continue}break}}i=f&3;if(i){while(1){c=K[b+e|0]+c|0;b=b+1|0;g=g+1|0;if((i|0)!=(g|0)){continue}break}}b=c+27|0}J[a+72>>2]=l+(b+f|0);c=1392;e=76;b=0}J[a+e>>2]=h}J[a+c>>2]=b;return d}function LZ(a,b,c){a=a|0;b=b|0;c=c|0;var d=0,e=0,f=0,g=0;e=Ui-432|0;Ui=e;a:{if(c>>>0>1024){d=-54;break a}J[e+40>>2]=0;J[e+44>>2]=0;J[e+32>>2]=0;J[e+36>>2]=0;J[e+24>>2]=0;J[e+28>>2]=0;J[e+16>>2]=0;J[e+20>>2]=0;J[e+8>>2]=0;J[e+12>>2]=0;J[e>>2]=0;J[e+4>>2]=0;if(!(!J[a+20>>2]&J[a+16>>2]<=J[a+28>>2])){d=-56;g=J[a+24>>2];if(g>>>0>384){break a}f=e+48|0;ij(f,0,384);d=-52;if(Zi[J[a+312>>2]](J[a+316>>2],f,g)|0){break a}b:{d=tU(f,f,J[a+24>>2]);if(!d){d=yE(a,f);if(!d){break b}}Zi[J[66509]](e+48|0,0,384)|0;break a}J[a+16>>2]=1;Zi[J[66509]](e+48|0,0,384)|0}c:{if(c){f=a+32|0;while(1){d=K[a+15|0]+1|0;H[a+15|0]=d;d:{if((d|0)==(d&255)){break d}d=K[a+14|0]+1|0;H[a+14|0]=d;if((d|0)==(d&255)){break d}d=K[a+13|0]+1|0;H[a+13|0]=d;if((d|0)==(d&255)){break d}d=K[a+12|0]+1|0;H[a+12|0]=d;if((d|0)==(d&255)){break d}d=K[a+11|0]+1|0;H[a+11|0]=d;if((d|0)==(d&255)){break d}d=K[a+10|0]+1|0;H[a+10|0]=d;if((d|0)==(d&255)){break d}d=K[a+9|0]+1|0;H[a+9|0]=d;if((d|0)==(d&255)){break d}d=K[a+8|0]+1|0;H[a+8|0]=d;if((d|0)==(d&255)){break d}d=K[a+7|0]+1|0;H[a+7|0]=d;if((d|0)==(d&255)){break d}d=K[a+6|0]+1|0;H[a+6|0]=d;if((d|0)==(d&255)){break d}d=K[a+5|0]+1|0;H[a+5|0]=d;if((d|0)==(d&255)){break d}d=K[a+4|0]+1|0;H[a+4|0]=d;if((d|0)==(d&255)){break d}d=K[a+3|0]+1|0;H[a+3|0]=d;if((d|0)==(d&255)){break d}d=K[a+2|0]+1|0;H[a+2|0]=d;if((d|0)==(d&255)){break d}d=K[a+1|0]+1|0;H[a+1|0]=d;if((d|0)==(d&255)){break d}H[a|0]=K[a|0]+1}d=e+48|0;if(ro(f,1,a,d)){break c}g=d;d=c>>>0>=16?16:c;b=hj(b,g,d)+d|0;c=c-d|0;if(c){continue}break}}if(yE(a,e)){break c}J[a+16>>2]=J[a+16>>2]+1}Zi[J[66509]](e,0,48)|0;Zi[J[66509]](e+48|0,0,16)|0;d=0}Ui=e+432|0;return d|0}function QH(a,b,c,d,e,f){var g=0,h=0,i=0;g=-12416;a:{if(!d|M[a>>2]>>0){break a}i=a+4|0;if(!Pj(i,0)){break a}g=a+28|0;h=Fk(g,b,e,f);b:{if(h){break b}while(1){if((_j(g,i)|0)>=0){h=yk(g,1);if(!h){continue}break b}break}c:{if(!zn(g,i)){break c}h=Fk(g,b,e,f);if(h){break b}while(1){if((_j(g,i)|0)<0){if(!zn(g,i)){break c}h=Fk(g,b,e,f);if(h){break b}while(1){if((_j(g,i)|0)<0){if(!zn(g,i)){break c}h=Fk(g,b,e,f);if(h){break b}while(1){if((_j(g,i)|0)<0){if(!zn(g,i)){break c}h=Fk(g,b,e,f);if(h){break b}while(1){if((_j(g,i)|0)<0){if(!zn(g,i)){break c}h=Fk(g,b,e,f);if(h){break b}while(1){if((_j(g,i)|0)<0){if(!zn(g,i)){break c}h=Fk(g,b,e,f);if(h){break b}while(1){if((_j(g,i)|0)<0){if(!zn(g,i)){break c}h=Fk(g,b,e,f);if(h){break b}while(1){if((_j(g,i)|0)<0){if(!zn(g,i)){break c}h=Fk(g,b,e,f);if(h){break b}while(1){if((_j(g,i)|0)<0){if(!zn(g,i)){break c}h=Fk(g,b,e,f);if(h){break b}while(1){if((_j(g,i)|0)<0){if(!zn(g,i)){break c}h=Fk(g,b,e,f);if(h){break b}while(1){if((_j(g,i)|0)<0){if(!zn(g,i)){break c}h=Fk(g,b,e,f);if(h){break b}while(1){if((_j(g,i)|0)<0){return-12928}h=yk(g,1);if(!h){continue}break}break b}h=yk(g,1);if(!h){continue}break}break b}h=yk(g,1);if(!h){continue}break}break b}h=yk(g,1);if(!h){continue}break}break b}h=yk(g,1);if(!h){continue}break}break b}h=yk(g,1);if(!h){continue}break}break b}h=yk(g,1);if(!h){continue}break}break b}h=yk(g,1);if(!h){continue}break}break b}h=yk(g,1);if(!h){continue}break}break b}h=yk(g,1);if(!h){continue}break}break b}h=yk(g,1);if(!h){continue}break}break b}b=a+40|0;h=To(b,a+16|0,g,i,a+76|0);if(h){break b}g=zn(b,i);if(g){break a}h=no(b,c,d)}g=h?h-12928|0:0}return g}function rB(a,b,c,d){var e=0,f=0,g=0,h=0,i=0,j=0,k=0;f=Ui-96|0;Ui=f;i=c+24|0;a:{if(!Pj(i,0)){e=sk(b,d);if(e){break a}e=sk(b+12|0,d+12|0);if(e){break a}e=sk(b+24|0,d+24|0);break a}b:{if(!J[d+32>>2]){break b}g=d+24|0;if(!Pj(g,0)){e=sk(b,c);if(e){break a}e=sk(b+12|0,c+12|0);if(e){break a}e=sk(b+24|0,i);break a}if(!J[d+32>>2]){break b}e=-20352;if(Pj(g,1)){break a}}g=f+84|0;e=g;J[e+8>>2]=0;J[e>>2]=1;J[e+4>>2]=0;h=f+72|0;e=h;J[e+8>>2]=0;J[e>>2]=1;J[e+4>>2]=0;J[f+68>>2]=0;J[f+60>>2]=1;J[f+64>>2]=0;J[f+56>>2]=0;J[f+48>>2]=1;J[f+52>>2]=0;J[f+44>>2]=0;J[f+36>>2]=1;J[f+40>>2]=0;J[f+32>>2]=0;J[f+24>>2]=1;J[f+28>>2]=0;J[f+20>>2]=0;J[f+12>>2]=1;J[f+16>>2]=0;e=Ak(g,i,i);c:{if(e){break c}e=Nl(g,a);if(e){break c}e=Ak(h,g,i);if(e){break c}e=Nl(h,a);if(e){break c}e=Ak(g,g,d);if(e){break c}e=Nl(g,a);if(e){break c}e=jl(a,h,h,d+12|0);if(e){break c}e=En(a,g,g,c);if(e){break c}j=c+12|0;e=En(a,h,h,j);if(e){break c}if(!Pj(g,0)){if(!Pj(h,0)){e=qB(a,b,c);break c}a=kl(b,1);d:{if(a){break d}a=kl(b+12|0,1);if(a){break d}a=kl(b+24|0,0)}e=a;break c}k=f+12|0;g=f+84|0;e=jl(a,k,i,g);if(e){break c}d=f+60|0;e=jl(a,d,g,g);if(e){break c}h=f+48|0;e=jl(a,h,d,g);if(e){break c}e=jl(a,d,d,c);if(e){break c}e=sk(g,d);if(e){break c}e=Wt(a,g);if(e){break c}c=f+36|0;i=f+72|0;e=jl(a,c,i,i);if(e){break c}e=En(a,c,c,g);if(e){break c}e=En(a,c,c,h);if(e){break c}e=En(a,d,d,c);if(e){break c}e=jl(a,d,d,i);if(e){break c}e=jl(a,h,h,j);if(e){break c}e=a;a=f+24|0;e=En(e,a,d,h);if(e){break c}e=sk(b,c);if(e){break c}e=sk(b+12|0,a);if(e){break c}e=sk(b+24|0,k)}Dj(f+84|0);Dj(f+72|0);Dj(f+60|0);Dj(f+48|0);Dj(f+36|0);Dj(f+24|0);Dj(f+12|0)}Ui=f+96|0;return e}function Eca(a){a=a|0;var b=0,c=0,d=0,e=0,f=0,g=0,h=0,i=0,j=0,k=0,l=0;h=Ui-16|0;Ui=h;l=J[a+8>>2]-J[a+12>>2]>>4;g=Aj(a,1,0);a:{b:{c:{d:{i=$m(sx(a),2);e:{if(!i){e=fj(a,51562,0);break e}c=bj(g);j=Yi;k=J[78404];Tj(k);e=J[78400];d=J[78402];f:{g:{if(!d){b=4;break g}h:{while(1){f=J[(b<<2)+e>>2];if(!(J[f+32>>2]==(c|0)&(j|0)==J[f+36>>2]?f:0)){b=b+1|0;if((d|0)!=(b|0)){continue}break h}break}J[h>>2]=g;dj(3,88458,57125,h);e=J[78400];b=4;d=J[78402];if(!d){break g}}b=0;i:{while(1){if(J[(b<<2)+e>>2]){b=b+1|0;if((d|0)!=(b|0)){continue}break i}break}if((b|0)!=-1){break f}}b=d+4|0;if(b>>>0>=65536){break d}}J[78400]=ml(e,b<<2);J[78401]=ml(J[78401],b<<1);b=J[78400]+(J[78402]<<2)|0;J[b>>2]=0;J[b+4>>2]=0;J[b+8>>2]=0;J[b+12>>2]=0;b=J[78401]+(J[78402]<<1)|0;I[b>>1]=0;I[b+2>>1]=0;I[b+4>>1]=0;I[b+6>>1]=0;d=J[78402]+4|0;J[78402]=d}f=nj(48);b=f;J[b>>2]=0;J[b+4>>2]=0;J[b+40>>2]=0;J[b+44>>2]=0;J[b+32>>2]=0;J[b+36>>2]=0;J[b+24>>2]=0;J[b+28>>2]=0;J[b+16>>2]=0;J[b+20>>2]=0;J[b+8>>2]=0;J[b+12>>2]=0;e=Gk(g);J[b+32>>2]=c;J[b+36>>2]=j;J[b+28>>2]=e;J[b+40>>2]=1;J[b>>2]=i;if(!d){break a}c=J[78400];b=0;while(1){g=c+(b<<2)|0;if(J[g>>2]){b=b+1|0;if((d|0)!=(b|0)){continue}break a}break}if((b|0)==-1){break a}e=1;c=L[156806];c=c>>>0>65533?1:c+1|0;I[156806]=c;I[J[78401]+(b<<1)>>1]=c;J[g>>2]=f;c=L[156806]<<16|b;if((c|0)==-1){break c}J[f+8>>2]=0;J[f+4>>2]=c;Qp(J[78399],732,733,c,0);c=J[f+4>>2];b=J[a+8>>2];J[b+8>>2]=3;O[b>>3]=c>>>0;J[a+8>>2]=J[a+8>>2]+16;Lj(k);if((l+1|0)!=J[a+8>>2]-J[a+12>>2]>>4){break b}}Ui=h+16|0;return e|0}Z(94407,54166,208,62238);B()}Z(96071,54166,266,9606);B()}Z(143334,39051,371,81902);B()}Z(96003,54166,253,9606);B()}function WI(a,b,c,d){var e=0,f=0,g=0,h=0,i=0,j=0,k=0,l=0,m=0;e=Ui-208|0;Ui=e;a:{b:{c:{if((a|0)!=10){if((a|0)!=2){break c}a=K[b|0];j=K[b+1|0];f=K[b+2|0];J[e+12>>2]=K[b+3|0];J[e+8>>2]=f;J[e+4>>2]=j;J[e>>2]=a;if(Dn(c,d,76826,e)>>>0>>0){break a}break b}l=Wj(b,203972,12);a=K[b+11|0]|K[b+10|0]<<8;j=K[b+9|0]|K[b+8|0]<<8;f=K[b+7|0]|K[b+6|0]<<8;g=K[b+5|0]|K[b+4|0]<<8;i=K[b+3|0]|K[b+2|0]<<8;k=K[b+1|0]|K[b|0]<<8;h=K[b+12|0];d:{if(l){l=K[b+15|0];m=K[b+14|0];b=K[b+13|0];J[e+84>>2]=a;J[e+80>>2]=j;J[e+88>>2]=b|h<<8;J[e+92>>2]=l|m<<8;J[e+76>>2]=f;J[e+72>>2]=g;J[e+68>>2]=i;J[e+64>>2]=k;Dn(e+96|0,100,6365,e- -64|0);break d}l=K[b+13|0];m=K[b+14|0];J[e+52>>2]=K[b+15|0];J[e+48>>2]=m;J[e+44>>2]=l;J[e+40>>2]=h;J[e+36>>2]=a;J[e+32>>2]=j;J[e+28>>2]=f;J[e+24>>2]=g;J[e+20>>2]=i;J[e+16>>2]=k;Dn(e+96|0,100,76808,e+16|0)}b=K[e+96|0];e:{if(!b){break e}i=2;k=0;a=0;while(1){j=a;if(!((b|0)!=58?a:0)){b=(e+96|0)+a|0;a=111499;f=Ui-32|0;J[f+24>>2]=0;J[f+28>>2]=0;J[f+16>>2]=0;J[f+20>>2]=0;J[f+8>>2]=0;J[f+12>>2]=0;J[f>>2]=0;J[f+4>>2]=0;g=K[111499];h=0;f:{if(!g){break f}if(!K[111500]){a=b;while(1){f=a;a=a+1|0;if(K[f|0]==(g|0)){continue}break}h=f-b|0;break f}while(1){h=f+(g>>>3&28)|0;J[h>>2]=J[h>>2]|1<>>3&28)>>2]>>>g&1)){break g}g=K[a+1|0];a=a+1|0;if(g){continue}break}}h=a-b|0}a=(i|0)<(h|0);i=a?h:i;k=a?j:k}a=j+1|0;f=e+96|0;b=K[a+f|0];if(b){continue}break}if((i|0)<4){break e}a=f+k|0;H[a|0]=58;H[a+1|0]=58;el(a+2|0,a+i|0,(j-(i+k|0)|0)+2|0)}a=e+96|0;if(yj(a)>>>0>=d>>>0){break b}fq(c,a);break a}J[245744]=5;break a}J[245744]=51}Ui=e+208|0}function Zsa(a,b,c,d,e){a=a|0;b=b|0;c=c|0;d=d|0;e=e|0;var f=0,g=Q(0),h=Q(0),i=Q(0),j=Q(0),k=Q(0),l=Q(0),m=Q(0),n=Q(0),o=Q(0),p=Q(0),q=Q(0),r=Q(0),s=Q(0),t=Q(0),u=Q(0),v=Q(0),w=Q(0),x=Q(0),y=Q(0),z=Q(0),A=Q(0),B=Q(0),C=0,D=Q(0),E=Q(0),F=Q(0),G=0,H=0,I=Q(0),L=Q(0),M=Q(0),O=Q(0);C=J[a+12>>2];if((C|0)<=0){return Q(Q(1))}f=K[a+28|0];H=f?b:c;b=f?c:b;I=N[b+64>>2];D=N[b+60>>2];E=N[b+56>>2];F=N[b+52>>2];L=N[b+48>>2];h=N[b+44>>2];i=N[b+40>>2];j=N[b+36>>2];M=N[b+32>>2];k=N[b+28>>2];l=N[b+24>>2];m=N[b+20>>2];O=N[b+16>>2];n=N[b+12>>2];o=N[b+8>>2];p=N[b+4>>2];G=J[b+192>>2];q=Q(1);f=0;while(1){c=J[G+24>>2]+P(f,80)|0;g=N[c+56>>2];r=N[c+48>>2];s=N[c+52>>2];t=N[c+32>>2];u=N[c>>2];v=N[c+16>>2];w=N[c+36>>2];x=N[c+4>>2];y=N[c+20>>2];z=N[c+40>>2];A=N[c+8>>2];B=N[c+24>>2];J[b+192>>2]=J[c+64>>2];J[b+64>>2]=0;J[b+48>>2]=0;J[b+32>>2]=0;J[b+16>>2]=0;N[b+44>>2]=Q(z*h)+Q(Q(A*j)+Q(i*B));N[b+40>>2]=Q(w*h)+Q(Q(x*j)+Q(i*y));N[b+36>>2]=Q(t*h)+Q(Q(u*j)+Q(i*v));N[b+28>>2]=Q(z*k)+Q(Q(A*m)+Q(l*B));N[b+24>>2]=Q(w*k)+Q(Q(x*m)+Q(l*y));N[b+20>>2]=Q(t*k)+Q(Q(u*m)+Q(l*v));N[b+12>>2]=Q(z*n)+Q(Q(A*p)+Q(o*B));N[b+8>>2]=Q(w*n)+Q(Q(x*p)+Q(o*y));N[b+4>>2]=Q(t*n)+Q(Q(u*p)+Q(o*v));N[b+60>>2]=D+Q(Q(h*g)+Q(Q(j*r)+Q(i*s)));N[b+56>>2]=E+Q(Q(k*g)+Q(Q(m*r)+Q(l*s)));N[b+52>>2]=F+Q(Q(n*g)+Q(Q(p*r)+Q(o*s)));c=J[J[a+20>>2]+(f<<2)>>2];g=Q(Zi[J[J[c>>2]+12>>2]](c,b,H,d,e));N[b+64>>2]=I;N[b+60>>2]=D;N[b+56>>2]=E;N[b+52>>2]=F;N[b+48>>2]=L;N[b+44>>2]=h;N[b+40>>2]=i;N[b+36>>2]=j;N[b+32>>2]=M;N[b+28>>2]=k;N[b+24>>2]=l;N[b+20>>2]=m;N[b+16>>2]=O;N[b+12>>2]=n;N[b+8>>2]=o;N[b+4>>2]=p;J[b+192>>2]=G;q=g>2]=a;q=126;t=128;u=128;x=1;while(1){a=x-1|0;z=a<<2;r=J[z+i>>2];n=N[r>>2];o=N[r+4>>2];k=N[r+8>>2];s=N[g>>2];m=N[g+4>>2];v=N[g+8>>2];J[j+12>>2]=0;N[j+8>>2]=k-v;N[j+4>>2]=o-m;N[j>>2]=n-s;n=N[r+16>>2];o=N[r+20>>2];k=N[r+24>>2];s=N[f>>2];m=N[f+4>>2];v=N[f+8>>2];J[j+28>>2]=0;N[j+24>>2]=k-v;N[j+20>>2]=o-m;N[j+16>>2]=n-s;p=J[d>>2];s=N[b>>2];m=N[c>>2];n=Q(Q(N[(p<<4)+j>>2]-s)*m);k=N[c+4>>2];l=J[d+4>>2];v=N[b+4>>2];o=Q(k*Q(N[((1-l<<4)+j|0)+4>>2]-v));a:{if(n>o){break a}k=Q(Q(N[((l<<4)+j|0)+4>>2]-v)*k);s=Q(m*Q(N[(1-p<<4)+j>>2]-s));if(k>s){break a}n=k>n?k:n;m=N[c+8>>2];p=J[d+8>>2];v=N[b+8>>2];k=Q(m*Q(N[((1-p<<4)+j|0)+8>>2]-v));if(n>k){break a}m=Q(Q(N[((p<<4)+j|0)+8>>2]-v)*m);o=oo|!((m>n?m:n)Q(0))){break a}if(J[r+40>>2]){b:{if((a|0)<=(q|0)){a=i;break b}p=t<<1;c:{if((p|0)<=(t|0)){a=i;break c}d:{if((u|0)>=(p|0)){a=i;break d}u=0;a=0;if(t){a=Yj(t<<3)}if(t-1>>>0>=3){y=t&-4;q=0;while(1){l=u<<2;J[l+a>>2]=J[i+l>>2];w=l|4;J[w+a>>2]=J[i+w>>2];w=l|8;J[w+a>>2]=J[i+w>>2];l=l|12;J[l+a>>2]=J[i+l>>2];u=u+4|0;q=q+4|0;if((y|0)!=(q|0)){continue}break}}q=0;l=t&3;if(l){while(1){y=u<<2;J[y+a>>2]=J[i+y>>2];u=u+1|0;q=q+1|0;if((l|0)!=(q|0)){continue}break}}if(i){J[83765]=J[83765]+1;Zi[J[61751]](J[i-4>>2])}u=p}i=t<<2;ij(i+a|0,0,i)}q=p-2|0;t=p;i=a}J[a+z>>2]=J[r+36>>2];J[(x<<2)+a>>2]=J[r+40>>2];a=x+1|0;break a}Zi[J[J[h>>2]+12>>2]](h,r)}x=a;if(a){continue}break}if(i){J[83765]=J[83765]+1;Zi[J[61751]](J[i-4>>2])}}Ui=j+32|0}function ry(a,b,c,d,e){var f=0,g=0,h=0,i=0,j=0,k=0,l=0,m=0,n=Q(0),o=Q(0),p=0;i=Ui-16|0;Ui=i;a:{g=J[a+152>>2];b:{c:{d:{e:{if(!g){break e}f=J[g+4>>2];if(!f|(f|0)==J[g+8>>2]){break e}g=J[f+8>>2];if(g){break d}}f=0;g=J[J[a+148>>2]+16>>2];if(!g){break c}g=J[g+8>>2];if(!g){break c}}f:{f=J[g+20>>2];if(!f){break f}f=J[J[g+16>>2]+(mxa(b,c,f)<<2)>>2];if((f|0)==-1){break f}j=J[g+24>>2];while(1){f=j+(f<<4)|0;if(J[f>>2]!=(b|0)|J[f+4>>2]!=(c|0)){f=J[f+12>>2];if((f|0)!=-1){continue}break f}break}k=J[f+8>>2];J[a+208>>2]=b;J[a+212>>2]=c;J[a+200>>2]=k;g:{b=J[g+96>>2];if(M[b+28>>2]>k>>>0){l=P(k,36);h=l+J[b+24>>2]|0;p=J[h+20>>2];c=J[h+12>>2];b=J[h+16>>2];m=J[h+24>>2]-5|0;j=m>>>0<2;f=j|L[a+234>>1]&-2;I[a+234>>1]=f;c=b-c|0;b=(c<<1)-2|0;N[a+220>>2]=Q(p>>>0)/Q((j?b>>>0<=1?1:b:c)>>>0);c=f&-3;b=J[h+24>>2];f=(b|0)!=2&(b|0)!=4;b=c|(f?0:2);I[a+234>>1]=b;c=b&-9|(J[h+24>>2]!=0)<<3;I[a+234>>1]=c;if(J[J[J[a+148>>2]>>2]+48>>2]==1){g=J[g+96>>2];if(M[g+28>>2]<=k>>>0){break g}b=J[g+24>>2]+l|0;h:{if(J[g+96>>2]){b=J[g+92>>2]+(J[a+216>>2]+J[b+12>>2]<<3)|0;n=N[b+4>>2];o=N[b>>2];break h}n=Q(M[b+8>>2]);o=Q(M[b+4>>2])}J[a+120>>2]=1065353216;N[a+116>>2]=n;N[a+112>>2]=o}d=dQ(1)?Q(1):d;i:{switch(J[h+24>>2]-2|0){case 0:case 2:d=Q(Q(1)-d);break;default:break i}}I[a+234>>1]=c|16;N[a+228>>2]=e>Q(0)?e:Q(0);d=dQ(1)?Q(1):d;d=m>>>0<2?Q(d*Q(.5)):d;N[a+224>>2]=f?d:Q(Q(1)-d);xP(a);a=1;break b}break a}break a}f=g}J[a+216>>2]=0;J[a+208>>2]=0;J[a+212>>2]=0;I[a+234>>1]=L[a+234>>1]&65527;b=tj(b,c);J[i+4>>2]=tj(J[f+88>>2],J[f+92>>2]);J[i>>2]=b;dj(4,88458,126606,i);a=0}Ui=i+16|0;return a}Z(12664,54737,96,84789);B()}function XA(a,b){var c=0,d=0,e=0,f=0,g=0,h=0,i=0,j=0;g=Ui-112|0;Ui=g;a:{if(!(K[a+56|0]&2)){d=J[a+20>>2];break a}h=J[a+32>>2];c=h;f=J[a+68>>2];if(!(!f|!K[a+57|0])){e=J[a+20>>2];i=J[e+8>>2];c=J[a+8>>2];J[g+32>>2]=-1;J[g+12>>2]=1;J[g+108>>2]=(e-J[a+40>>2]|0)/24;j=c-h|0;if((J[a+28>>2]-c|0)<=320){d=J[a+44>>2];_n(a,(d|0)<20?d+20|0:d<<1);e=J[a+20>>2];c=J[a+8>>2]}J[e+8>>2]=c+320;H[a+57|0]=0;Zi[f|0](a,g+12|0);H[a+57|0]=1;c=J[a+32>>2];J[J[a+20>>2]+8>>2]=c+(i-h|0);J[a+8>>2]=c+j}d=J[a+20>>2];b:{if(K[J[J[d+4>>2]>>2]+6|0]){break b}e=K[a+56|0];if(!(e&2)){break b}while(1){f=J[d+20>>2];J[d+20>>2]=f-1;if(!f){break b}f=J[a+68>>2];if(!(!f|!K[a+57|0])){e=J[a+8>>2];i=J[d+8>>2];J[g+108>>2]=0;J[g+32>>2]=-1;J[g+12>>2]=4;j=e-c|0;if((J[a+28>>2]-e|0)<=320){d=J[a+44>>2];_n(a,(d|0)<20?d+20|0:d<<1);e=J[a+8>>2];d=J[a+20>>2]}J[d+8>>2]=e+320;H[a+57|0]=0;Zi[f|0](a,g+12|0);H[a+57|0]=1;e=i-c|0;d=J[a+20>>2];c=J[a+32>>2];J[d+8>>2]=e+c;J[a+8>>2]=c+j;e=K[a+56|0]}if(e&2){continue}break}}b=(b-h|0)+c|0}e=d-24|0;J[a+20>>2]=e;h=J[d+16>>2];c=J[d+4>>2];J[a+12>>2]=J[e>>2];J[a+24>>2]=J[d-12>>2];c:{if(!h){break c}e=0;d=h;while(1){if(M[a+8>>2]>b>>>0){f=J[b+4>>2];J[c>>2]=J[b>>2];J[c+4>>2]=f;J[c+8>>2]=J[b+8>>2];e=e+1|0;c=c+16|0;b=b+16|0;d=d-1|0;if(d){continue}break c}break}if((d|0)<=0){break c}f=d&7;if(f){b=0;while(1){J[c+8>>2]=0;c=c+16|0;d=d-1|0;b=b+1|0;if((f|0)!=(b|0)){continue}break}}if(e-h>>>0>4294967288){break c}while(1){J[c+120>>2]=0;J[c+104>>2]=0;J[c+88>>2]=0;J[c+72>>2]=0;J[c+56>>2]=0;J[c+40>>2]=0;J[c+24>>2]=0;J[c+8>>2]=0;c=c+128|0;b=d-9|0;d=d-8|0;if(b>>>0<4294967294){continue}break}}J[a+8>>2]=c;Ui=g+112|0;return h+1|0}function MP(a,b,c,d,e,f){J[f>>2]=b;J[f+4>>2]=J[d+4>>2];N[f+8>>2]=N[d+8>>2];N[f+12>>2]=N[d+12>>2];N[f+16>>2]=N[d+16>>2];b=Vl(a,J[c+128>>2],J[c+132>>2],0);I[f+30>>1]=0;I[f+28>>1]=b;N[f+20>>2]=N[d+48>>2];N[f+24>>2]=N[d+52>>2];b=J[f+32>>2]&-2;J[f+32>>2]=b|K[d+56|0];b=b|K[d+56|0];J[f+32>>2]=b;J[f+32>>2]=K[d+57|0]<<1&2|(b&-7|(e?4:0));b=J[c>>2];d=J[c+4>>2];a:{if(!(b|d)){break a}I[f+30>>1]=Vl(a,b,d,0)|L[f+30>>1];b=J[c+8>>2];d=J[c+12>>2];if(!(b|d)){break a}I[f+30>>1]=Vl(a,b,d,0)|L[f+30>>1];b=J[c+16>>2];d=J[c+20>>2];if(!(b|d)){break a}I[f+30>>1]=Vl(a,b,d,0)|L[f+30>>1];b=J[c+24>>2];d=J[c+28>>2];if(!(b|d)){break a}I[f+30>>1]=Vl(a,b,d,0)|L[f+30>>1];b=J[c+32>>2];d=J[c+36>>2];if(!(b|d)){break a}I[f+30>>1]=Vl(a,b,d,0)|L[f+30>>1];b=J[c+40>>2];d=J[c+44>>2];if(!(b|d)){break a}I[f+30>>1]=Vl(a,b,d,0)|L[f+30>>1];b=J[c+48>>2];d=J[c+52>>2];if(!(b|d)){break a}I[f+30>>1]=Vl(a,b,d,0)|L[f+30>>1];b=J[c+56>>2];d=J[c+60>>2];if(!(b|d)){break a}I[f+30>>1]=Vl(a,b,d,0)|L[f+30>>1];b=J[c+64>>2];d=J[c+68>>2];if(!(b|d)){break a}I[f+30>>1]=Vl(a,b,d,0)|L[f+30>>1];b=J[c+72>>2];d=J[c+76>>2];if(!(b|d)){break a}I[f+30>>1]=Vl(a,b,d,0)|L[f+30>>1];b=J[c+80>>2];d=J[c+84>>2];if(!(b|d)){break a}I[f+30>>1]=Vl(a,b,d,0)|L[f+30>>1];b=J[c+88>>2];d=J[c+92>>2];if(!(b|d)){break a}I[f+30>>1]=Vl(a,b,d,0)|L[f+30>>1];b=J[c+96>>2];d=J[c+100>>2];if(!(b|d)){break a}I[f+30>>1]=Vl(a,b,d,0)|L[f+30>>1];b=J[c+104>>2];d=J[c+108>>2];if(!(b|d)){break a}I[f+30>>1]=Vl(a,b,d,0)|L[f+30>>1];b=J[c+112>>2];d=J[c+116>>2];if(!(b|d)){break a}I[f+30>>1]=Vl(a,b,d,0)|L[f+30>>1];b=J[c+120>>2];c=J[c+124>>2];if(!(b|c)){break a}I[f+30>>1]=Vl(a,b,c,0)|L[f+30>>1]}}function XT(a,b,c){a=a|0;b=b|0;c=c|0;var d=0,e=0,f=Q(0);N[b+16>>2]=N[a+4>>2];N[b+20>>2]=N[a+8>>2];N[b+24>>2]=N[a+12>>2];N[b+28>>2]=N[a+16>>2];N[b+32>>2]=N[a+20>>2];N[b+36>>2]=N[a+24>>2];N[b+40>>2]=N[a+28>>2];N[b+44>>2]=N[a+32>>2];N[b+48>>2]=N[a+36>>2];N[b+52>>2]=N[a+40>>2];N[b+56>>2]=N[a+44>>2];N[b+60>>2]=N[a+48>>2];N[b+64>>2]=N[a+52>>2];N[b+68>>2]=N[a+56>>2];N[b+72>>2]=N[a+60>>2];N[b+76>>2]=N[a+64>>2];N[b+80>>2]=N[a+68>>2];N[b+84>>2]=N[a+72>>2];N[b+88>>2]=N[a+76>>2];N[b+92>>2]=N[a+80>>2];N[b+96>>2]=N[a+84>>2];N[b+100>>2]=N[a+88>>2];N[b+104>>2]=N[a+92>>2];N[b+108>>2]=N[a+96>>2];N[b+112>>2]=N[a+100>>2];N[b+116>>2]=N[a+104>>2];N[b+120>>2]=N[a+108>>2];N[b+124>>2]=N[a+112>>2];N[b+128>>2]=N[a+116>>2];N[b+132>>2]=N[a+120>>2];N[b+136>>2]=N[a+124>>2];N[b+140>>2]=N[a+128>>2];N[b+144>>2]=N[a+132>>2];N[b+148>>2]=N[a+136>>2];N[b+152>>2]=N[a+140>>2];N[b+156>>2]=N[a+144>>2];N[b+160>>2]=N[a+148>>2];N[b+164>>2]=N[a+152>>2];N[b+168>>2]=N[a+156>>2];N[b+172>>2]=N[a+160>>2];N[b+176>>2]=N[a+164>>2];N[b+180>>2]=N[a+168>>2];N[b+184>>2]=N[a+172>>2];N[b+188>>2]=N[a+176>>2];J[b+220>>2]=J[a+180>>2];f=N[a+184>>2];J[b>>2]=0;N[b+192>>2]=f;d=Zi[J[J[c>>2]+28>>2]](c,J[a+192>>2])|0;J[b+8>>2]=0;J[b+4>>2]=d;J[b+224>>2]=J[a+204>>2];J[b+228>>2]=J[a+208>>2];J[b+232>>2]=J[a+212>>2];J[b+236>>2]=J[a+216>>2];N[b+196>>2]=N[a+220>>2];N[b+200>>2]=N[a+224>>2];N[b+204>>2]=N[a+228>>2];J[b+240>>2]=J[a+232>>2];d=Zi[J[J[c>>2]+40>>2]](c,a)|0;e=Zi[J[J[c>>2]+28>>2]](c,d)|0;J[b+12>>2]=e;if(e){Zi[J[J[c>>2]+48>>2]](c,d)}N[b+208>>2]=N[a+240>>2];N[b+212>>2]=N[a+244>>2];N[b+216>>2]=N[a+248>>2];J[b+244>>2]=J[a+252>>2];return 83492}function NU(a,b,c,d){var e=Q(0),f=Q(0),g=Q(0),h=Q(0),i=Q(0),j=Q(0),k=Q(0),l=Q(0),m=Q(0),n=Q(0),o=Q(0),p=Q(0),q=Q(0),r=0,s=0;g=N[a+48>>2];f=Q(Q(1)-d);h=Q(Q(f*N[a+68>>2])+Q(d*N[a+72>>2]));k=Rj(h);e=N[a+44>>2];h=Hj(h);p=Q(Q(Q(f*N[a+56>>2])+Q(d*N[a+64>>2]))-Q(Q(h*e)+Q(g*k)));i=Q(Q(Q(f*N[a+52>>2])+Q(d*N[a+60>>2]))-Q(Q(k*e)-Q(h*g)));j=N[a+12>>2];e=Q(Q(f*N[a+32>>2])+Q(d*N[a+36>>2]));g=Rj(e);l=N[a+8>>2];e=Hj(e);q=Q(Q(Q(f*N[a+20>>2])+Q(d*N[a+28>>2]))-Q(Q(e*l)+Q(j*g)));d=Q(Q(Q(f*N[a+16>>2])+Q(d*N[a+24>>2]))-Q(Q(g*l)-Q(e*j)));a:{b:{switch(J[a+80>>2]){case 0:if((b|0)<0){break a}r=J[a>>2];if((c|0)<0|J[r+20>>2]<=(b|0)){break a}s=J[a+4>>2];if(J[s+20>>2]<=(c|0)){break a}m=i;c=J[s+16>>2]+(c<<3)|0;f=N[c>>2];i=N[c+4>>2];n=d;b=J[r+16>>2]+(b<<3)|0;d=N[b>>2];j=N[b+4>>2];return Q(Q(Q(Q(m+Q(Q(k*f)-Q(h*i)))-Q(n+Q(Q(g*d)-Q(e*j))))*N[a+92>>2])+Q(N[a+96>>2]*Q(Q(p+Q(Q(h*f)+Q(k*i)))-Q(q+Q(Q(e*d)+Q(g*j))))));case 1:if((c|0)<0){break a}b=J[a+4>>2];if(J[b+20>>2]<=(c|0)){break a}m=i;b=J[b+16>>2]+(c<<3)|0;f=N[b>>2];i=N[b+4>>2];n=d;d=N[a+84>>2];j=N[a+88>>2];l=N[a+92>>2];o=N[a+96>>2];return Q(Q(Q(Q(m+Q(Q(k*f)-Q(h*i)))-Q(n+Q(Q(g*d)-Q(e*j))))*Q(Q(g*l)-Q(e*o)))+Q(Q(Q(e*l)+Q(g*o))*Q(Q(p+Q(Q(h*f)+Q(k*i)))-Q(q+Q(Q(e*d)+Q(g*j))))));case 2:if((b|0)<0){break a}c=J[a>>2];if(J[c+20>>2]<=(b|0)){break a}m=d;b=J[c+16>>2]+(b<<3)|0;d=N[b>>2];f=N[b+4>>2];n=i;i=N[a+84>>2];j=N[a+88>>2];l=N[a+92>>2];o=N[a+96>>2];return Q(Q(Q(Q(m+Q(Q(g*d)-Q(e*f)))-Q(n+Q(Q(k*i)-Q(h*j))))*Q(Q(k*l)-Q(h*o)))+Q(Q(Q(h*l)+Q(k*o))*Q(Q(q+Q(Q(e*d)+Q(g*f)))-Q(p+Q(Q(h*i)+Q(k*j))))));default:break b}}Z(62644,39003,242,61318);B()}Z(11412,55795,103,4803);B()}function cja(a){a=a|0;var b=0,c=0,d=0,e=0;b=J[a+4>>2];ll(J[b+68>>2]);bm(J[J[b+96>>2]>>2]);bm(J[J[b+96>>2]+4>>2]);bm(J[J[b+96>>2]+8>>2]);bm(J[J[b+96>>2]+12>>2]);bm(J[J[b+96>>2]+16>>2]);bm(J[J[b+96>>2]+20>>2]);bm(J[J[b+96>>2]+24>>2]);bm(J[J[b+96>>2]+28>>2]);bm(J[J[b+96>>2]+32>>2]);bm(J[J[b+96>>2]+36>>2]);bm(J[J[b+96>>2]+40>>2]);bm(J[J[b+96>>2]+44>>2]);bm(J[J[b+96>>2]+48>>2]);bm(J[J[b+96>>2]+52>>2]);bm(J[J[b+96>>2]+56>>2]);bm(J[J[b+96>>2]+60>>2]);Np(J[J[a>>2]+4>>2],751,b);a=J[b+124>>2];if(a){a:{if(H[a+128|0]&1){break a}c=J[a+116>>2];if(!c){break a}cj(c)}b:{if(H[a+112|0]&1){break b}c=J[a+100>>2];if(!c){break b}cj(c)}c:{if(H[a+96|0]&1){break c}c=J[a+84>>2];if(!c){break c}cj(c)}d:{if(H[a+80|0]&1){break d}c=J[a+68>>2];if(!c){break d}cj(c)}e:{if(H[a+64|0]&1){break e}c=J[a+52>>2];if(!c){break e}cj(c)}f:{if(H[a+44|0]&1){break f}c=J[a+32>>2];if(!c){break f}cj(c)}g:{if(H[a+28|0]&1){break g}c=J[a+16>>2];if(!c){break g}cj(c)}h:{if(H[a+12|0]&1){break h}c=J[a>>2];if(!c){break h}cj(c)}cj(a)}d=J[b+100>>2];if(d){e=d-4|0;a=J[e>>2];if(a){a=(a<<4)+d|0;while(1){c=a;a=a-16|0;i:{if(H[c-4|0]&1){break i}c=J[a>>2];if(!c){break i}cj(c)}if((a|0)!=(d|0)){continue}break}}cj(e)}a=J[b+104>>2];if(a){cj(a)}a=J[b+96>>2];if(a){cj(a)}j:{if(H[b+120|0]&1){break j}a=J[b+108>>2];if(!a){break j}cj(a)}k:{if(H[b+88|0]&1){break k}a=J[b+76>>2];if(!a){break k}cj(a)}l:{if(H[b+64|0]&1){break l}a=J[b+52>>2];if(!a){break l}cj(a)}m:{if(H[b+44|0]&1){break m}a=J[b+32>>2];if(!a){break m}cj(a)}n:{if(H[b+28|0]&1){break n}a=J[b+16>>2];if(!a){break n}cj(a)}o:{if(H[b+12|0]&1){break o}a=J[b>>2];if(!a){break o}cj(a)}cj(b);return 0}function dL(a,b){var c=0,d=0,e=0,f=0,g=0,h=0,i=0,j=0,k=0,l=0,m=0;f=J[b+12>>2];J[a+32>>2]=J[b+8>>2];J[a+36>>2]=f;a:{b:{c:{d:{f=J[b>>2];e:{if(f){h=J[f+4>>2];if(!h){return}e=J[f>>2];b=0;if(h>>>0>=4){i=h&-4;while(1){c=J[(e+P(b|3,12)|0)+8>>2]+(J[(e+P(b|2,12)|0)+8>>2]+(J[(e+P(b|1,12)|0)+8>>2]+(J[(e+P(b,12)|0)+8>>2]+c|0)|0)|0)|0;b=b+4|0;g=g+4|0;if((i|0)!=(g|0)){continue}break}}g=h&3;if(g){while(1){c=J[(e+P(b,12)|0)+8>>2]+c|0;b=b+1|0;d=d+1|0;if((g|0)!=(d|0)){continue}break}}if(!(H[a+12|0]&1)){lj(h,16,a,a+8|0,a+4|0);b=J[a>>2];if(J[a+8>>2]-b>>4>>>0>=h>>>0){J[a+4>>2]=b+(h<<4);if(!(H[a+28|0]&1)){lj(c,20,a+16|0,a+24|0,a+20|0);d=J[a+16>>2];if((J[a+24>>2]-d|0)/20>>>0>=c>>>0){J[a+20>>2]=P(c,20)+d;if(c){c=0;while(1){f:{b=J[a>>2];if(J[a+4>>2]-b>>4>>>0>c>>>0){if(M[f+4>>2]>c>>>0){b=b+(c<<4)|0;k=P(c,12);J[b>>2]=bj(J[k+J[f>>2]>>2]);J[b+4>>2]=Yi;if(M[f+4>>2]>c>>>0){i=J[(J[f>>2]+k|0)+8>>2];J[b+12>>2]=d;J[b+8>>2]=i;g=0;if(!i){break f}while(1){j=J[(J[f>>2]+k|0)+4>>2]+(g<<4)|0;N[d>>2]=M[j>>2];b=J[j+4>>2];J[d+8>>2]=0;N[d+4>>2]=b>>>0;e=J[j+12>>2];J[d+12>>2]=e;J[d+16>>2]=nj(e>>>0>1073741823?-1:e<<2);b=0;if(e){while(1){l=b<<2;m=Gk(J[l+J[j+8>>2]>>2]);J[J[d+16>>2]+l>>2]=m;b=b+1|0;if((e|0)!=(b|0)){continue}break}}d=d+20|0;g=g+1|0;if((i|0)!=(g|0)){continue}break}break f}break d}break d}break c}c=c+1|0;if((h|0)!=(c|0)){continue}break}break e}break c}break b}break a}break b}break a}if(H[a+12|0]&1){break a}lj(0,16,a,a+8|0,a+4|0);if(H[a+28|0]&1){break a}lj(0,20,a+16|0,a+24|0,a+20|0)}return}Z(12664,55114,165,84789);B()}Z(145396,53895,487,84789);B()}Z(144782,53895,514,59583);B()}Z(151729,53895,501,2284);B()}function Uka(a,b){a=a|0;b=b|0;var c=0,d=0,e=0,f=0,g=0,h=0,i=0;e=Ui-32|0;Ui=e;a:{f=J[a+8>>2];b=J[f>>2];if((b|0)!=J[f+4>>2]){while(1){c=P(h,28)+b|0;b=K[c+24|0];b:{if((b&3)!=3){break b}g=J[c+8>>2];c:{if(!g){d=0;break c}b=J[f+32>>2];J[e+28>>2]=c;J[e+24>>2]=b;d=Nu(g,225,e+24|0,1e4);if((d|0)==-17){break b}b=K[c+24|0]}H[c+24|0]=b&254;b=J[J[a+12>>2]+4>>2];if(b){b=J[b+124>>2]}else{b=0}g=J[b+8>>2]-J[b+12>>2]>>4;Nj(b,-1e4,J[c+12>>2]);Nj(b,-1e4,J[c+16>>2]);uj(b,-1);Ok(b);if(!Eu(b)){gj(b,-3);dj(4,88458,128326,0);H[c+24|0]=K[c+24|0]&254;d=J[c+12>>2];if((d|0)!=-2){hk(b,-1e4,d);hk(b,-1e4,J[c+16>>2]);hk(b,-1e4,J[c+20>>2]);J[c+20>>2]=-2;J[c+12>>2]=-2;J[c+16>>2]=-2}d=J[c+8>>2];if(d){zo(d);J[c+8>>2]=0}if((g|0)==J[b+8>>2]-J[b+12>>2]>>4){break b}Z(143244,36758,372,61256);B()}if(J[c+12>>2]==-2){gj(b,-3);dj(4,88458,15366,0);H[c+24|0]=K[c+24|0]&254;d=J[c+12>>2];if((d|0)!=-2){hk(b,-1e4,d);hk(b,-1e4,J[c+16>>2]);hk(b,-1e4,J[c+20>>2]);J[c+20>>2]=-2;J[c+12>>2]=-2;J[c+16>>2]=-2}d=J[c+8>>2];if(d){zo(d);J[c+8>>2]=0}if((g|0)==J[b+8>>2]-J[b+12>>2]>>4){break b}Z(143244,36758,380,61256);B()}Nj(b,-1e4,J[c+20>>2]);i=J[b+8>>2];J[i+8>>2]=1;J[i>>2]=!d;J[b+8>>2]=J[b+8>>2]+16;Ol(b,3,0,0);H[c+24|0]=K[c+24|0]&254;d=J[c+12>>2];if((d|0)!=-2){hk(b,-1e4,d);hk(b,-1e4,J[c+16>>2]);hk(b,-1e4,J[c+20>>2]);J[c+20>>2]=-2;J[c+12>>2]=-2;J[c+16>>2]=-2}d=J[c+8>>2];if(d){zo(d);J[c+8>>2]=0}if((g|0)!=J[b+8>>2]-J[b+12>>2]>>4){break a}}h=h+1|0;b=J[f>>2];if(h>>>0<(J[f+4>>2]-b|0)/28>>>0){continue}break}}a=J[f+24>>2];J[74796]=a+J[74796];J[e+16>>2]=a;J[e+20>>2]=0;J[e+8>>2]=a;J[e+12>>2]=0;Ui=e+32|0;return 0}Z(143244,36758,388,61256);B()}function fR(a){a=a|0;var b=0,c=0,d=0,e=0,f=0,g=0,h=0;b=Ui-336|0;Ui=b;e=J[a+8>>2]-J[a+12>>2]>>4;a:{if((e|0)>=3){c=fj(a,21338,0);break a}b:{if(!e){break b}c:{d:{e:{if((kj(a,1)|0)==1){if((e|0)!=2){break e}c=fj(a,64163,0);break a}c=0;if((e|0)!=2){break d}e=1;if((kj(a,2)|0)==1){c=ck(a,2);gj(a,-2);c=(c|0)!=0;break c}c=fj(a,109721,0);break a}c=ck(a,1);gj(a,-2);e=e-1|0;c=(c|0)!=0}if(!e){break b}}if((kj(a,1)|0)==5){J[b+76>>2]=256;J[b+68>>2]=b+80;J[b+72>>2]=0;J[b+60>>2]=2270;J[b+56>>2]=2271;J[b+64>>2]=b+56;Bj(a);d=qj(a,-1,J[74197],139276);gj(a,-2);g=J[J[J[d+4>>2]+80>>2]+8>>2];d=J[a+8>>2];J[d+8>>2]=0;J[a+8>>2]=d+16;f:{if(!$j(a,1)){break f}while(1){J[b+48>>2]=0;J[b+52>>2]=0;J[b+40>>2]=0;J[b+44>>2]=0;J[b+32>>2]=0;J[b+36>>2]=0;J[b+24>>2]=0;J[b+28>>2]=0;Sk(a,-1,b+24|0,0);d=0;f=0;g:{if(!g){break g}h=J[g>>2];if(!h){break g}d=J[h+3216>>2];f=J[h+3220>>2]}if((d|0)!=J[b+24>>2]|(f|0)!=J[b+28>>2]){fj(a,120578,0)}h:{d=xk(g,J[b+40>>2],J[b+44>>2]);i:{if(d){f=K[d+137|0];if((f&4)>>>2|0){break h}if(f&8){UJ(a,J[d+96>>2],J[d+100>>2])}Oy(g,d,c);break i}dj(3,88293,72981,0)}gj(a,-2);if($j(a,1)){continue}break f}break}J[b+16>>2]=nk(b+56|0,J[d+96>>2],J[d+100>>2]);c=fj(a,149693,b+16|0);if(c){break a}}c=0;if(J[a+8>>2]-J[a+12>>2]>>4==(e|0)){break a}Z(143222,37509,1932,61295);B()}if(kj(a,1)){break b}dj(3,88293,73524,0)}d=dn(a,1);if((K[d+137|0]&4)>>>2|0){c=b+24|0;J[c+20>>2]=256;J[c+12>>2]=b+80;J[c+16>>2]=0;J[c+4>>2]=2270;J[c>>2]=2271;J[c+8>>2]=c;J[b>>2]=nk(c,J[d+96>>2],J[d+100>>2]);c=fj(a,149693,b);break a}if(K[d+137|0]&8){UJ(a,J[d+96>>2],J[d+100>>2])}Oy(J[J[d+80>>2]+8>>2],d,c);c=0}Ui=b+336|0;return c|0}function UF(a,b,c,d,e){var f=0,g=0,h=0,i=0,j=0,k=0,l=0,m=0;f=Ui-96|0;Ui=f;i=J[58270];g=i;l=J[g+8>>2];m=J[g+12>>2];h=f+88|0;g=h;J[g>>2]=0;J[g+4>>2]=0;J[f+80>>2]=0;J[f+84>>2]=0;J[f+72>>2]=0;J[f+76>>2]=0;J[f+64>>2]=0;J[f+68>>2]=0;g=f- -64|0;H[g|0]=0;H[g+1|0]=0;H[g+2|0]=0;H[g+3|0]=0;H[g+4|0]=0;H[g+5|0]=0;H[g+6|0]=0;H[g+7|0]=0;H[g+24|0]=0;H[g+25|0]=0;H[g+26|0]=0;H[g+27|0]=0;H[g+28|0]=0;H[g+29|0]=0;H[g+30|0]=0;H[g+31|0]=0;H[g+16|0]=0;H[g+17|0]=0;H[g+18|0]=0;H[g+19|0]=0;H[g+20|0]=0;H[g+21|0]=0;H[g+22|0]=0;H[g+23|0]=0;H[g+8|0]=0;H[g+9|0]=0;H[g+10|0]=0;H[g+11|0]=0;H[g+12|0]=0;H[g+13|0]=0;H[g+14|0]=0;H[g+15|0]=0;J[f+56>>2]=0;J[f+60>>2]=0;J[f+48>>2]=0;J[f+52>>2]=0;J[f+40>>2]=0;J[f+44>>2]=0;J[f+32>>2]=0;J[f+36>>2]=0;H[f+32|0]=0;H[f+33|0]=0;H[f+34|0]=0;H[f+35|0]=0;H[f+36|0]=0;H[f+37|0]=0;H[f+38|0]=0;H[f+39|0]=0;H[f+56|0]=0;H[f+57|0]=0;H[f+58|0]=0;H[f+59|0]=0;H[f+60|0]=0;H[f+61|0]=0;H[f+62|0]=0;H[f+63|0]=0;H[f+48|0]=0;H[f+49|0]=0;H[f+50|0]=0;H[f+51|0]=0;H[f+52|0]=0;H[f+53|0]=0;H[f+54|0]=0;H[f+55|0]=0;H[f+40|0]=0;H[f+41|0]=0;H[f+42|0]=0;H[f+43|0]=0;H[f+44|0]=0;H[f+45|0]=0;H[f+46|0]=0;H[f+47|0]=0;g=J[J[b+80>>2]+8>>2];a:{if(!g){break a}g=J[g>>2];if(!g){break a}j=J[g+3216>>2];k=J[g+3220>>2]}J[f+48>>2]=c;J[f+52>>2]=d;J[f+80>>2]=c;J[f+84>>2]=d;c=J[f+44>>2];J[f+72>>2]=J[f+40>>2];J[f+76>>2]=c;c=J[f+60>>2];J[h>>2]=J[f+56>>2];J[h+4>>2]=c;J[f+32>>2]=j;J[f+36>>2]=k;J[f+64>>2]=j;J[f+68>>2]=k;b=Go(b,e,h);if(b){J[f+16>>2]=J[J[58270]+4>>2];J[f+20>>2]=b;dj(4,88458,79433,f+16|0)}a=Jk(f- -64|0,f+32|0,l,m,0,0,i,a,128,0);if(a){J[f>>2]=J[J[58270]+4>>2];J[f+4>>2]=a;dj(4,88458,78973,f)}Ui=f+96|0}function cw(a,b,c,d,e){var f=0,g=0,h=0,i=0,j=0,k=0,l=0,m=0;f=Ui-96|0;Ui=f;i=J[58310];g=i;l=J[g+8>>2];m=J[g+12>>2];h=f+88|0;g=h;J[g>>2]=0;J[g+4>>2]=0;J[f+80>>2]=0;J[f+84>>2]=0;J[f+72>>2]=0;J[f+76>>2]=0;J[f+64>>2]=0;J[f+68>>2]=0;g=f- -64|0;H[g|0]=0;H[g+1|0]=0;H[g+2|0]=0;H[g+3|0]=0;H[g+4|0]=0;H[g+5|0]=0;H[g+6|0]=0;H[g+7|0]=0;H[g+24|0]=0;H[g+25|0]=0;H[g+26|0]=0;H[g+27|0]=0;H[g+28|0]=0;H[g+29|0]=0;H[g+30|0]=0;H[g+31|0]=0;H[g+16|0]=0;H[g+17|0]=0;H[g+18|0]=0;H[g+19|0]=0;H[g+20|0]=0;H[g+21|0]=0;H[g+22|0]=0;H[g+23|0]=0;H[g+8|0]=0;H[g+9|0]=0;H[g+10|0]=0;H[g+11|0]=0;H[g+12|0]=0;H[g+13|0]=0;H[g+14|0]=0;H[g+15|0]=0;J[f+56>>2]=0;J[f+60>>2]=0;J[f+48>>2]=0;J[f+52>>2]=0;J[f+40>>2]=0;J[f+44>>2]=0;J[f+32>>2]=0;J[f+36>>2]=0;H[f+32|0]=0;H[f+33|0]=0;H[f+34|0]=0;H[f+35|0]=0;H[f+36|0]=0;H[f+37|0]=0;H[f+38|0]=0;H[f+39|0]=0;H[f+56|0]=0;H[f+57|0]=0;H[f+58|0]=0;H[f+59|0]=0;H[f+60|0]=0;H[f+61|0]=0;H[f+62|0]=0;H[f+63|0]=0;H[f+48|0]=0;H[f+49|0]=0;H[f+50|0]=0;H[f+51|0]=0;H[f+52|0]=0;H[f+53|0]=0;H[f+54|0]=0;H[f+55|0]=0;H[f+40|0]=0;H[f+41|0]=0;H[f+42|0]=0;H[f+43|0]=0;H[f+44|0]=0;H[f+45|0]=0;H[f+46|0]=0;H[f+47|0]=0;g=J[J[b+80>>2]+8>>2];a:{if(!g){break a}g=J[g>>2];if(!g){break a}j=J[g+3216>>2];k=J[g+3220>>2]}J[f+48>>2]=c;J[f+52>>2]=d;J[f+80>>2]=c;J[f+84>>2]=d;c=J[f+44>>2];J[f+72>>2]=J[f+40>>2];J[f+76>>2]=c;c=J[f+60>>2];J[h>>2]=J[f+56>>2];J[h+4>>2]=c;J[f+32>>2]=j;J[f+36>>2]=k;J[f+64>>2]=j;J[f+68>>2]=k;b=Go(b,e,h);if(b){J[f+16>>2]=J[J[58310]+4>>2];J[f+20>>2]=b;dj(4,88458,79433,f+16|0)}a=Jk(f- -64|0,f+32|0,l,m,0,0,i,a,40,0);if(a){J[f>>2]=J[J[58310]+4>>2];J[f+4>>2]=a;dj(4,88458,78973,f)}Ui=f+96|0}function VF(a,b,c,d,e){var f=0,g=0,h=0,i=0,j=0,k=0,l=0,m=0;f=Ui-96|0;Ui=f;i=J[58182];g=i;l=J[g+8>>2];m=J[g+12>>2];h=f+88|0;g=h;J[g>>2]=0;J[g+4>>2]=0;J[f+80>>2]=0;J[f+84>>2]=0;J[f+72>>2]=0;J[f+76>>2]=0;J[f+64>>2]=0;J[f+68>>2]=0;g=f- -64|0;H[g|0]=0;H[g+1|0]=0;H[g+2|0]=0;H[g+3|0]=0;H[g+4|0]=0;H[g+5|0]=0;H[g+6|0]=0;H[g+7|0]=0;H[g+24|0]=0;H[g+25|0]=0;H[g+26|0]=0;H[g+27|0]=0;H[g+28|0]=0;H[g+29|0]=0;H[g+30|0]=0;H[g+31|0]=0;H[g+16|0]=0;H[g+17|0]=0;H[g+18|0]=0;H[g+19|0]=0;H[g+20|0]=0;H[g+21|0]=0;H[g+22|0]=0;H[g+23|0]=0;H[g+8|0]=0;H[g+9|0]=0;H[g+10|0]=0;H[g+11|0]=0;H[g+12|0]=0;H[g+13|0]=0;H[g+14|0]=0;H[g+15|0]=0;J[f+56>>2]=0;J[f+60>>2]=0;J[f+48>>2]=0;J[f+52>>2]=0;J[f+40>>2]=0;J[f+44>>2]=0;J[f+32>>2]=0;J[f+36>>2]=0;H[f+32|0]=0;H[f+33|0]=0;H[f+34|0]=0;H[f+35|0]=0;H[f+36|0]=0;H[f+37|0]=0;H[f+38|0]=0;H[f+39|0]=0;H[f+56|0]=0;H[f+57|0]=0;H[f+58|0]=0;H[f+59|0]=0;H[f+60|0]=0;H[f+61|0]=0;H[f+62|0]=0;H[f+63|0]=0;H[f+48|0]=0;H[f+49|0]=0;H[f+50|0]=0;H[f+51|0]=0;H[f+52|0]=0;H[f+53|0]=0;H[f+54|0]=0;H[f+55|0]=0;H[f+40|0]=0;H[f+41|0]=0;H[f+42|0]=0;H[f+43|0]=0;H[f+44|0]=0;H[f+45|0]=0;H[f+46|0]=0;H[f+47|0]=0;g=J[J[b+80>>2]+8>>2];a:{if(!g){break a}g=J[g>>2];if(!g){break a}j=J[g+3216>>2];k=J[g+3220>>2]}J[f+48>>2]=c;J[f+52>>2]=d;J[f+80>>2]=c;J[f+84>>2]=d;c=J[f+44>>2];J[f+72>>2]=J[f+40>>2];J[f+76>>2]=c;c=J[f+60>>2];J[h>>2]=J[f+56>>2];J[h+4>>2]=c;J[f+32>>2]=j;J[f+36>>2]=k;J[f+64>>2]=j;J[f+68>>2]=k;b=Go(b,e,h);if(b){J[f+16>>2]=J[J[58182]+4>>2];J[f+20>>2]=b;dj(4,88458,79433,f+16|0)}a=Jk(f- -64|0,f+32|0,l,m,0,0,i,a,48,0);if(a){J[f>>2]=J[J[58182]+4>>2];J[f+4>>2]=a;dj(4,88458,78973,f)}Ui=f+96|0}function AP(a,b,c,d){var e=0,f=0,g=0,h=Q(0),i=0,j=0,k=0,l=0,m=0,n=Q(0);e=Ui+-64|0;Ui=e;g=pj(e+44|0,a,0,39481,588);h=Q(1);a:{b:{c:{switch(b-1|0){case 0:h=Q(0);break a;case 1:J[e+32>>2]=0;J[e+36>>2]=0;J[e+24>>2]=0;J[e+28>>2]=0;break a;case 2:H[e+29|0]=0;H[e+30|0]=0;H[e+31|0]=0;H[e+32|0]=0;H[e+33|0]=0;H[e+34|0]=0;H[e+35|0]=0;H[e+36|0]=0;break b;case 3:h=Q(0);break a;case 4:break c;default:break a}}J[e+32>>2]=0;J[e+36>>2]=0}J[e+24>>2]=0;J[e+28>>2]=0;n=Q(1)}N[d+12>>2]=n;J[d+8>>2]=0;N[d+4>>2]=h;H[d|0]=0;f=J[e+28>>2];J[d+16>>2]=J[e+24>>2];J[d+20>>2]=f;f=J[e+36>>2];J[d+24>>2]=J[e+32>>2];J[d+28>>2]=f;J[d+32>>2]=0;J[d+36>>2]=0;i=d+40|0;f=i;J[f>>2]=0;J[f+4>>2]=0;k=d+48|0;J[k>>2]=0;f=kj(a,c);d:{if(f+1>>>0<2){break d}if((f|0)!=5){J[e+16>>2]=c;Jj(g,125900,e+16|0);break d}l=d+36|0;f=d+12|0;m=d+8|0;j=d+4|0;Zs(a,c,74113,d);e:{switch(b|0){case 0:jm(a,c,52830,j);jm(a,c,3848,m);jm(a,c,56727,f);break d;case 1:jm(a,c,52746,j);break d;case 2:jm(a,c,66887,f);jm(a,c,66822,d+16|0);jm(a,c,66834,d+20|0);jm(a,c,60846,d+24|0);jm(a,c,75634,d+28|0);Zs(a,c,14355,d+32|0);Zs(a,c,32057,d+33|0);if(!(N[d+16>>2]>N[d+20>>2])){break d}fj(a,150691,0);break d;case 3:zP(a,c,f);jm(a,c,66887,d+24|0);Zs(a,c,14355,d+28|0);jm(a,c,47064,d+32|0);jm(a,c,47082,l);Zs(a,c,32057,i);jm(a,c,70086,d+44|0);jm(a,c,75634,k);if(!(N[d+32>>2]>N[d+36>>2])){break d}fj(a,150515,0);break d;case 4:jm(a,c,66887,j);jm(a,c,3848,m);jm(a,c,56727,f);break d;case 5:zP(a,c,f);jm(a,c,60846,d+24|0);jm(a,c,75634,d+28|0);Zs(a,c,32057,d+32|0);jm(a,c,3848,l);jm(a,c,56727,i);break d;default:break e}}J[e>>2]=b;Jj(g,78185,e)}oj(g);Ui=e- -64|0}function VI(a,b,c){var d=0,e=0,f=0,g=0,h=0,i=0;i=Ui-16|0;Ui=i;a:{b:{c:{d:{if((a|0)!=10){if((a|0)!=2){break c}while(1){f=0;a=0;e:{f:{while(1){d=H[a+b|0];if(d-48>>>0<=9){f=(d+P(f,10)|0)-48|0;e=3;a=a+1|0;if((a|0)!=3){continue}break f}break}e=a;g:{switch(a|0){case 0:break a;case 1:break g;default:break f}}e=1;if((f|0)<=255){break e}break b}a=0;if(K[b|0]==48|(f|0)>255){break a}}H[c+g|0]=f;b=b+e|0;d=K[b|0];if(!d&(g|0)==3){break d}a=0;if((d|0)!=46){break a}b=b+1|0;g=g+1|0;if((g|0)!=4){continue}break}break a}e=K[b|0];if((e|0)==58){if(K[b+1|0]!=58){break b}b=b+1|0}h=-1;while(1){a=0;f=0;h:{i:{j:{if(!((e&255)!=58|(h|0)>=0)){g=1;I[((d&7)<<1|i)>>1]=0;a=b+1|0;e=K[b+1|0];if(!e){b=a;h=d;break j}h=d;if((d|0)==7){break b}break h}k:{l:{while(1){g=H[b+f|0];e=g-48|0;if(e>>>0>=10){e=g|32;e=e-97>>>0>=6?-1:e-87|0}if((e|0)<0){break l}a=(a<<4)+e|0;f=f+1|0;if((f|0)!=4){continue}break}g=K[b+4|0];f=4;break k}if(!f){break b}}I[((d&7)<<1|i)>>1]=a;e=g&255;if(!e){g=1;if((h|0)>=0){break j}if((d|0)!=7){break b}break j}a=0;if((d|0)==7){break a}if((e|0)==58){break i}if((h|0)<0&d>>>0<=5|(e|0)!=46){break a}g=0;d=d+1|0;I[((d&7)<<1|i)>>1]=0}a=0;m:{if((h|0)<0){break m}e=(h<<1)+i|0;el((e-(d<<1)|0)+14|0,e,(d-h<<1)+2|0);if((d|0)>6){break m}d=7-d|0;d=(d|0)<=1?1:d;f=0;while(1){I[(f+h<<1)+i>>1]=0;f=f+1|0;if((d|0)!=(f|0)){continue}break}}while(1){d=c;c=L[(a<<1)+i>>1];c=c<<8|c>>>8;H[d|0]=c;H[d+1|0]=c>>>8;c=d+2|0;a=a+1|0;if((a|0)!=8){continue}break}if(g){break d}if((VI(2,b,d-2|0)|0)<=0){break b}break d}a=(b+f|0)+1|0;e=K[a|0]}d=d+1|0;b=a;continue}}a=1;break a}J[245744]=5;a=-1;break a}a=0}Ui=i+16|0;return a}function Jt(a,b,c){var d=0,e=0,f=0,g=0,h=0,i=0,j=0,k=0,l=0,m=0,n=0;e=Ui-144|0;Ui=e;e=ij(e,0,68);j=ij(a,0,1024);a:{b:{c:{if((c|0)>0){if(c>>>0>=4){g=c&2147483644;while(1){a=b+d|0;h=e+(K[a|0]<<2)|0;J[h>>2]=J[h>>2]+1;h=e+(K[a+1|0]<<2)|0;J[h>>2]=J[h>>2]+1;h=e+(K[a+2|0]<<2)|0;J[h>>2]=J[h>>2]+1;a=e+(K[a+3|0]<<2)|0;J[a>>2]=J[a>>2]+1;d=d+4|0;f=f+4|0;if((g|0)!=(f|0)){continue}break}}f=c&3;if(f){a=0;while(1){g=e+(K[b+d|0]<<2)|0;J[g>>2]=J[g>>2]+1;d=d+1|0;a=a+1|0;if((f|0)!=(a|0)){continue}break}}if(J[e+4>>2]>2){break b}if(J[e+8>>2]<=4){break c}break b}if(J[e+8>>2]>4){break b}}if(J[e+12>>2]>8|J[e+16>>2]>16|(J[e+20>>2]>32|J[e+24>>2]>64)){break b}if(J[e+28>>2]>128|J[e+32>>2]>256|(J[e+36>>2]>512|J[e+40>>2]>1024)){break b}if(J[e+44>>2]>2048|J[e+48>>2]>4096|(J[e+52>>2]>8192|J[e+56>>2]>16384)){break b}if(J[e+60>>2]>32768){break b}k=j+1056|0;h=j+1124|0;l=j+1024|0;f=0;d=1;a=0;while(1){g=d<<2;J[g+(e+80|0)>>2]=a;i=d<<1;I[i+l>>1]=a;I[h+i>>1]=f;i=J[e+g>>2];a=i+a|0;if((a|0)>1<>2]=a<<16-d;f=f+i|0;a=a<<1;d=d+1|0;if((d|0)!=16){continue}break}J[j+1120>>2]=65536;d=1;if((c|0)<=0){break a}i=j+1444|0;k=j+1156|0;f=0;while(1){a=K[b+f|0];if(a){m=(e+80|0)+(a<<2)|0;g=J[m>>2];d=a<<1;d=(g-L[d+l>>1]|0)+L[d+h>>1]|0;H[d+k|0]=a;I[i+(d<<1)>>1]=f;d:{if(a>>>0>9){break d}d=g<<8|(g&65280)>>>8;d=d>>>4&3855|(d&3855)<<4;d=d>>>2&13107|(d&13107)<<2;d=(d>>>1&21845|(d&21845)<<1)>>>16-a|0;if(d>>>0>511){break d}n=a<<9|f;a=1<>1]=n;d=a+d|0;if(d>>>0<512){continue}break}}J[m>>2]=g+1}d=1;f=f+1|0;if((f|0)!=(c|0)){continue}break}break a}J[218569]=93899;d=0}Ui=e+144|0;return d}function Kha(a){a=a|0;var b=0,c=0,d=0,e=0,f=0,g=0,h=0,i=0,j=0,k=0;c=Ui-128|0;Ui=c;j=J[a+8>>2]-J[a+12>>2]>>4;a:{b:{g=Ej(a,1);c:{if((g|0)<=0){J[c>>2]=g;d=fj(a,79640,c);break c}if((kj(a,2)|0)!=5){d=fj(a,67497,0);break c}h=fl(a,2);if((h|0)<=0){d=fj(a,46455,0);break c}i=c-(P(h,24)+15&-16)|0;Ui=i;uj(a,2);d=J[a+8>>2];J[d+8>>2]=0;J[a+8>>2]=d+16;if($j(a,-2)){while(1){d=pj(c+96|0,a,0,39971,281);d:{if((kj(a,-1)|0)!=5){b=kj(a,-1);if((b|0)==-1){b=60960}else{b=J[(b<<2)+257632>>2]}J[c+80>>2]=b;Jj(d,26711,c+80|0);break d}uj(a,-1);b=J[a+8>>2];J[b+8>>2]=0;J[a+8>>2]=b+16;e:{f:{g:{if(!$j(a,-2)){gj(a,-2);b=9;break g}e=P(k,24)+i|0;b=9;while(1){if((kj(a,-2)|0)!=4){gj(a,-4);b=kj(a,-2);if((b|0)==-1){b=60960}else{b=J[(b<<2)+257632>>2]}J[c+68>>2]=Ij(a,-2,0);J[c+64>>2]=b;Jj(d,31486,c- -64|0);break d}f=Ij(a,-2,0);h:{if(!jj(f,66013)){J[e>>2]=mk(a,-1);J[e+4>>2]=Yi;break h}if(!jj(f,64474)){b=Ej(a,-1);break h}if(jj(f,11761)){break e}H[e+12|0]=Ej(a,-1)}gj(a,-2);if($j(a,-2)){continue}break}gj(a,-2);if(b>>>0<9){break f}}J[c+36>>2]=0;J[c+40>>2]=8;J[c+32>>2]=b;Jj(d,101547,c+32|0);break d}J[e+8>>2]=b;break d}gj(a,-4);J[c+48>>2]=f;Jj(d,29542,c+48|0)}oj(d);gj(a,-2);k=k+1|0;if($j(a,-2)){continue}break}}gj(a,-2);J[c+124>>2]=0;d=Nq(g,i,h&255,c+124|0);if(d){if(J[a+8>>2]-J[a+12>>2]>>4!=(j|0)){break b}J[c+16>>2]=d>>>0>11?14245:J[(d<<2)+265952>>2];d=fj(a,28681,c+16|0);break c}d=1;e=J[c+124>>2];b=c+96|0;I[b+16>>1]=65535;J[b+8>>2]=0;J[b+12>>2]=0;J[b+4>>2]=1;J[b>>2]=e;Gs(a,b);if((j+1|0)!=J[a+8>>2]-J[a+12>>2]>>4){break a}}Ui=c+128|0;return d|0}Z(143244,39971,412,62025);B()}Z(143334,39971,419,62025);B()}function dja(a){a=a|0;var b=0,c=0,d=0,e=0,f=0,g=0,h=0,i=0,j=0,k=Q(0);c=J[a+80>>2];b=J[c+8>>2];if((b|0)==J[c+4>>2]){io(49946,10948,b-J[c>>2]>>2);return-1e3}f=DC(c);b=ij(nj(272),0,272);d=J[c+16>>2];if(J[c+20>>2]-d>>3>>>0>f>>>0){d=J[d+(f<<3)>>2];g=J[c>>2];if(d>>>0>2]-g>>2>>>0){J[g+(d<<2)>>2]=b;J[b>>2]=J[a>>2];h=J[a+32>>2];i=J[a+36>>2];e=J[a+40>>2];j=J[a+44>>2];g=J[a+16>>2];d=J[a+20>>2];k=N[a+24>>2];J[b+56>>2]=1065353216;J[b+48>>2]=1065353216;J[b+52>>2]=1065353216;N[b+40>>2]=k;J[b+32>>2]=g;J[b+36>>2]=d;J[b+24>>2]=e;J[b+28>>2]=j;J[b+16>>2]=h;J[b+20>>2]=i;e=J[a+76>>2];J[b+128>>2]=e;H[b+136|0]=0;H[b+137|0]=0;H[b+138|0]=0;H[b+139|0]=0;H[b+140|0]=0;H[b+141|0]=0;H[b+142|0]=0;H[b+143|0]=0;H[b+160|0]=0;H[b+161|0]=0;H[b+162|0]=0;H[b+163|0]=0;H[b+164|0]=0;H[b+165|0]=0;H[b+166|0]=0;H[b+167|0]=0;H[b+152|0]=0;H[b+153|0]=0;H[b+154|0]=0;H[b+155|0]=0;H[b+156|0]=0;H[b+157|0]=0;H[b+158|0]=0;H[b+159|0]=0;H[b+144|0]=0;H[b+145|0]=0;H[b+146|0]=0;H[b+147|0]=0;H[b+148|0]=0;H[b+149|0]=0;H[b+150|0]=0;H[b+151|0]=0;I[b+260>>1]=L[a+92>>1];J[b+68>>2]=0;J[b+72>>2]=0;J[b+64>>2]=1065353216;J[b+76>>2]=0;J[b+80>>2]=0;J[b+88>>2]=0;J[b+92>>2]=0;J[b+84>>2]=1065353216;J[b+96>>2]=0;J[b+100>>2]=0;J[b+108>>2]=0;J[b+112>>2]=0;J[b+104>>2]=1065353216;J[b+116>>2]=0;J[b+120>>2]=0;J[b+124>>2]=1065353216;J[b+168>>2]=0;J[b+172>>2]=0;H[b+262|0]=K[b+262|0]&252|1;if(!yQ(c,b)){dj(4,88458,131691,0);nv(c,f);return-1e3}J[b+132>>2]=0;d=DP(J[c+124>>2],b,J[e+8>>2],bj(J[J[e>>2]+4>>2]),Yi);if(d){nv(c,f);return d|0}EP(b,e);H[b+262|0]=K[b+262|0]|8;J[J[a+88>>2]>>2]=f;return 0}}Z(145396,53895,487,84789);B()}function gK(a,b,c,d){var e=0,f=0,g=0,h=0,i=0,j=0,k=0,l=0,m=0;g=Ui-48|0;Ui=g;Oj(a,b,5);j=Jw(a,b);f=J[d+4>>2];h=J[d>>2];i=f-h>>2;a:{b:{c:{d:{e:{f:{if((f|0)==(h|0)){break f}if(J[h>>2]!=(j|0)){k=i>>>0<=1?1:i;while(1){e=e+1|0;if((k|0)!=(e|0)&J[h+(e<<2)>>2]!=(j|0)){continue}break}if(e>>>0>=i>>>0){break f}}e=fj(a,153519,0);break e}h=d+4|0;e=J[d+8>>2];if((e|0)==(f|0)){if(H[d+12|0]&1){break d}lj(i+8|0,4,d,d+8|0,h);f=J[d+4>>2];e=J[d+8>>2]}if((e|0)==(f|0)){break c}e=4;J[h>>2]=f+4;J[f>>2]=j;uj(a,b);b=J[a+8>>2];J[b+8>>2]=0;J[a+8>>2]=b+16;if($j(a,-2)){k=c+3|0;l=c+4|0;m=c+1|0;while(1){f=kj(a,-2);i=kj(a,-1);if(f-5>>>0<=4294967293){J[g+32>>2]=(f|0)==-1?60960:J[(f<<2)+257632>>2];fj(a,137011,g+32|0)}b=e+2|0;g:{h:{switch(f-3|0){case 1:b=(fl(a,-2)+e|0)+6|0;break g;case 0:break h;default:break g}}b=e+6|0}i:{j:{switch(i-1|0){case 0:e=b+1|0;break i;case 2:e=((b-(b+c|0)|0)+(b+k&-4)|0)+8|0;break i;case 3:e=(fl(a,-1)+b|0)+4|0;break i;case 6:e=((b+l&-4)-m|0)+1|0;if(_J(a,-1)){e=e+12|0;break i}if(ZJ(a,-1)){e=e+16|0;break i}if($J(a,-1)){e=e+16|0;break i}if(Hs(a,-1)){e=e- -64|0;break i}if(Lp(a,-1)){e=e+8|0;break i}if(Fu(a,-1)){e=e+32|0;break i}J[g+16>>2]=J[64415];fj(a,29792,g+16|0);break i;case 4:e=gK(a,-1,b+c|0,d)+b|0;break i;default:break j}}J[g>>2]=(i|0)==-1?60960:J[(i<<2)+257632>>2];fj(a,29792,g);e=b}gj(a,-2);if($j(a,-2)){continue}break}}gj(a,-2);a=J[d+4>>2];if((a|0)==J[d>>2]){break b}a=a-4|0;b=J[a>>2];J[h>>2]=a;if((b|0)!=(j|0)){break a}}Ui=g+48|0;return e}Z(151729,53895,501,2284);B()}Z(112520,53895,557,53220);B()}Z(112533,53895,443,51980);B()}Z(83313,41830,440,59908);B()}function GO(a){var b=0,c=0,d=0,e=0,f=0,g=0,h=0,i=Q(0),j=0,k=0,l=0,m=0,n=Q(0);g=Ui-16|0;Ui=g;j=tr(a,1,-2,0);b=J[a+36>>2];d=J[a+32>>2];if((b|0)!=(d|0)){f=(b-d|0)/672|0;while(1){b=d+P(c,672)|0;if(H[b+668|0]&1){oD(a,L[b+650>>1]|L[b+648>>1]<<16,1);I[b+668>>1]=L[b+668>>1]&65534;f=(J[a+36>>2]-J[a+32>>2]|0)/672|0}c=c+1|0;if(f>>>0>c>>>0){continue}break}}a:{c=J[a+264>>2];b=J[a+260>>2];if((c|0)!=(b|0)){b=(c-b|0)/12|0;d=b>>>0<=1?1:b;c=0;while(1){b=J[a+260>>2];if((J[a+264>>2]-b|0)/12>>>0<=c>>>0){break a}Xu(J[a+224>>2],J[b+P(c,12)>>2]);c=c+1|0;if((d|0)!=(c|0)){continue}break}b=J[a+260>>2]}J[a+264>>2]=b;f=-1;c=0;while(1){b:{c:{f=e?J[e+32>>2]:f;if((f|0)!=-1){break c}e=J[a+160>>2];d=J[a+164>>2];if(d>>>0<=c>>>0){break b}while(1){b=c+1|0;f=J[(c<<2)+e>>2];if((f|0)!=-1){c=b;break c}c=b;if((b|0)!=(d|0)){continue}break}break b}b=J[a+168>>2];if(b){e=b+P(f,40)|0;b=J[e+24>>2];k=P(b&65535,b>>>16|0);d=J[e+8>>2];l=J[e+12>>2];b=J[e>>2];m=J[e+4>>2];n=N[219138];h=J[e+20>>2];if(h>>>0<=3){h=J[(h<<2)+196300>>2]}else{h=0}i=Q(+(P(h,k)>>>0)*.0009765625*.0009765625);N[219138]=n-i;N[g+8>>2]=-i;h=J[g+12>>2];J[g>>2]=J[g+8>>2];J[g+4>>2]=h;Zi[J[a+448>>2]](a,b,m,d,l);continue}else{e=J[a+160>>2];c=J[a+164>>2]}d=c}break}ij(e,255,d<<2);J[a+180>>2]=-1;J[a+184>>2]=0;J[a+172>>2]=J[a+168>>2];b=J[219159];c=J[219158];J[a+344>>2]=c;J[a+348>>2]=b;d=J[a+308>>2];J[a+312>>2]=d;d:{if((d|0)!=J[a+316>>2]){J[a+312>>2]=d+8;J[d>>2]=c;J[d+4>>2]=b;if(H[a+336|0]&1){break d}lj(0,4,a+324|0,a+332|0,a+328|0);Ui=g+16|0;return j}Z(112520,53895,557,53220);B()}Z(151729,53895,501,2284);B()}Z(145396,53895,487,84789);B()}function Dp(a,b){var c=0,d=0,e=0,f=0,g=0,h=0,i=0,j=0,k=0,l=0,m=0,n=0,o=0,p=0;c=K[b+4|0]|K[b+5|0]<<8|(K[b+6|0]<<16|K[b+7|0]<<24);d=c<<24|(c&65280)<<8|(c>>>8&65280|c>>>24);e=K[b|0];c=K[b+3|0]|(K[b+1|0]<<16|e<<24)|K[b+2|0]<<8;g=(d>>>4^c)&252645135;b=(g<<4^d)&-269488145|c&269488144;b=(J[(b>>>7&60)+178304>>2]<<2|J[(b<<1&60)+178304>>2]<<3|J[(b>>>15&60)+178304>>2]<<1|J[(b>>>23&60)+178304>>2]|J[(b>>>2&60)+178304>>2]<<7|J[(b>>>10&60)+178304>>2]<<6|J[(b>>>18&60)+178304>>2]<<5|J[(b>>>26&60)+178304>>2]<<4)&268435455;c=c^g;e=(J[(c>>>6&60)+178240>>2]<<2|J[((c&15)<<2)+178240>>2]<<3|J[(c>>>14&60)+178240>>2]<<1|J[(c>>>22&60)+178240>>2]|J[(c>>>3&60)+178240>>2]<<7|J[(c>>>11&60)+178240>>2]<<6|J[(c>>>19&60)+178240>>2]<<5|J[(e>>>3&28)+178240>>2]<<4)&268435455;g=0;while(1){a:{if(!(!(1<>>0>15)){f=268435454;h=27;c=1;break a}f=268435452;h=26;c=2}d=e<>>h|0;e=i|j;l=e<<10;c=b<>>h|0;b=f|h;f=f>>>14|0;k=c&256|(d>>>10&65536|(i<<2&131072|(l&262144|(d>>>1&1048576|(d<<9&2097152|(d<<6&16777216|(e<<18&34078720|(d<<14&134217728|(i<<4&603979776|j<<28&268435456)))))))))|c>>>13&8192|c>>>4&4096|b<<6&2048|c>>>1&1024|f&512|c>>>5&32|c>>>10&16;j=b>>>3|0;J[a>>2]=k|j&8|c>>>18&4|c>>>26&2|c>>>24&1;m=c>>>21&2;n=c>>>7&32;o=c>>>9&1024;p=c>>>2&8192;k=c&512;c=e<<15;J[a+4>>2]=m|(h<<2&4|(j&17|(n|(b<<7&256|(o|(f&2056|(b<<8&4096|(p|(k|(d>>>4&65536|(d>>>6&262144|(i<<3&524288|(d<<11&1048576|(e<<16&2097152|(i<<1&16777216|(d>>>2&33554432|(e<<22&67108864|(l&134217728|(c&536870912|d<<17&268435456))))))))|c&131072)))))))))));a=a+8|0;g=g+1|0;if((g|0)!=16){continue}break}}function oM(a,b,c,d,e){var f=Q(0),g=Q(0),h=Q(0),i=Q(0),j=Q(0),k=Q(0),l=Q(0),m=Q(0),n=Q(0),o=Q(0),p=Q(0),q=Q(0),r=Q(0),s=Q(0),t=0,u=Q(0),v=Q(0),w=Q(0),x=0,y=Q(0),z=Q(0),A=Q(0),C=Q(0),D=Q(0);t=J[c+64>>2];x=J[t>>2];if((J[t+4>>2]-x|0)/18568>>>0<=b>>>0){Z(145396,53895,487,84789);B()}A=N[c+32>>2];C=N[c+40>>2];r=N[c+36>>2];s=N[e+20>>2];D=N[e+16>>2];p=N[e+24>>2];t=K[c+82|0];g=N[e+40>>2];j=N[c+56>>2];f=N[e+36>>2];k=N[c+52>>2];h=N[e+44>>2];l=N[c+60>>2];o=N[e+32>>2];m=N[c+48>>2];i=N[c+44>>2];J[d+204>>2]=1065353216;n=Q(i*Q(0));N[d+188>>2]=n;N[d+172>>2]=n;N[d+156>>2]=n;u=Q(Q(Q(j*o)+Q(Q(l*f)+Q(h*k)))-Q(m*g));w=Q(Q(Q(m*f)+Q(Q(l*g)+Q(h*j)))-Q(k*o));v=Q(w+w);y=Q(u*v);n=Q(Q(Q(k*g)+Q(Q(l*o)+Q(h*m)))-Q(j*f));z=Q(n+n);g=Q(Q(Q(Q(l*h)-Q(m*o))-Q(k*f))-Q(j*g));f=Q(z*g);N[d+180>>2]=i*Q(y-f);h=Q(n*v);o=Q(u+u);q=Q(o*g);N[d+176>>2]=i*Q(h+q);N[d+168>>2]=i*Q(y+f);f=Q(n*o);g=Q(g*v);N[d+160>>2]=i*Q(f-g);N[d+152>>2]=i*Q(h-q);N[d+148>>2]=i*Q(f+g);q=r;g=Q(D*i);f=t&1?Q(p*i):p;h=Q(s*i);p=Q(Q(Q(l*g)+Q(k*f))-Q(j*h));r=Q(Q(j*f)+Q(Q(m*g)+Q(k*h)));s=Q(Q(Q(l*h)+Q(j*g))-Q(m*f));g=Q(Q(Q(l*f)+Q(m*h))-Q(k*g));N[d+196>>2]=q+Q(Q(j*p)+Q(Q(Q(k*r)+Q(l*s))-Q(m*g)));f=Q(Q(1)-Q(n*z));h=Q(u*o);N[d+184>>2]=i*Q(f-h);q=f;f=Q(w*v);N[d+164>>2]=i*Q(q-f);N[d+144>>2]=i*Q(Q(Q(1)-h)-f);N[d+200>>2]=C+Q(Q(s*m)+Q(Q(Q(r*j)+Q(l*g))-Q(p*k)));N[d+192>>2]=A+Q(Q(g*k)+Q(Q(Q(r*m)+Q(l*p))-Q(s*j)));c=x+P(b,18568)|0;J[d+208>>2]=J[c+18556>>2];J[d+212>>2]=J[c+18560>>2];J[d+216>>2]=J[d>>2];c=J[d+72>>2];J[d+228>>2]=c;J[d+240>>2]=b;J[d+236>>2]=a;J[d+232>>2]=(J[d+76>>2]-c|0)/96;J[d+220>>2]=J[e+144>>2];J[d+224>>2]=J[e+148>>2]}function KB(a){var b=0,c=0,d=0,e=0,f=0,g=0,h=0;b=J[a+16>>2];if(b){e=J[a+4>>2];while(1){c=J[J[a+12>>2]+(d<<2)>>2];if((c|0)!=-1){while(1){b=J[a+20>>2]+(c<<5)|0;c=J[b+20>>2];if(c){vj(e,c)}cj(J[b+8>>2]);cj(J[b+16>>2]);cj(J[b+24>>2]);c=J[b+28>>2];if((c|0)!=-1){continue}break}b=J[a+16>>2]}d=d+1|0;if(d>>>0>>0){continue}break}b=b<<2}else{b=0}ij(J[a+12>>2],255,b);J[a+32>>2]=-1;J[a+36>>2]=0;J[a+24>>2]=J[a+20>>2];c=J[J[J[a+124>>2]+16>>2]+112>>2];Hp(c,J[c+32>>2]);g=J[c+16>>2];d=J[g+112>>2];b=J[d>>2];if(b){while(1){e=K[b+5|0];a:{if(e&8){d=b;break a}if(!(e&3|1)){d=b;break a}b:{f=J[b+8>>2];if(!(!f|K[f+6|0]&4)){f=Zo(f,2,J[J[c+16>>2]+196>>2]);e=K[b+5|0];if(f){break b}}H[b+5|0]=e|8;d=b;break a}H[b+5|0]=e|8;e=J[b+16>>2];J[d>>2]=J[b>>2];h=(e+h|0)+32|0;e=J[g+48>>2];c:{if(!e){J[b>>2]=b;break c}J[b>>2]=J[e>>2];J[J[g+48>>2]>>2]=b}J[g+48>>2]=b}b=J[d>>2];if(b){continue}break}}J[c+116>>2]=0;while(1){b=J[c+40>>2];J[c+20>>2]=b;b=J[b>>2];J[c+8>>2]=b;J[c+12>>2]=b;J[c+52>>2]=0;if(Uw(c,1960,0)){continue}break}b=J[c+16>>2];Hp(c,J[c+32>>2]);EI(c);d=J[c+16>>2];lk(c,J[d>>2],J[d+8>>2]<<2,0);d=lk(c,J[b+52>>2],J[b+60>>2],0);J[b+60>>2]=0;J[b+52>>2]=d;lk(c,J[c+40>>2],P(J[c+48>>2],24),0);lk(c,J[c+32>>2],J[c+44>>2]<<4,0);Zi[J[b+12>>2]](J[b+16>>2],c,376,0)|0;d:{if(H[a+120|0]&1){break d}b=J[a+108>>2];if(!b){break d}cj(b)}e:{if(H[a+104|0]&1){break e}b=J[a+84>>2];if(b){cj(b)}b=J[a+76>>2];if(!b){break e}cj(b)}f:{if(H[a+72|0]&1){break f}b=J[a+52>>2];if(b){cj(b)}b=J[a+44>>2];if(!b){break f}cj(b)}g:{if(H[a+40|0]&1){break g}b=J[a+20>>2];if(b){cj(b)}b=J[a+12>>2];if(!b){break g}cj(b)}cj(a)}function Y6(a,b){a=a|0;b=b|0;var c=Q(0),d=Q(0),e=0,f=Q(0),g=Q(0),h=Q(0),i=Q(0),j=Q(0),k=Q(0),l=Q(0),m=0,n=Q(0),o=Q(0);e=Ui-48|0;Ui=e;m=J[a+12>>2];a:{if(m){Zi[m|0](J[a+8>>2],e);g=N[J[a+4>>2]+72>>2];d=N[e+12>>2];j=N[e+8>>2];c=N[e>>2];i=N[e+4>>2];f=N[e+16>>2];h=N[e+20>>2];k=N[e+24>>2];J[b+60>>2]=0;J[b+44>>2]=0;J[b+28>>2]=0;J[b+12>>2]=0;N[b+56>>2]=k*g;N[b+52>>2]=h*g;N[b+48>>2]=f*g;f=Q(Q(2)/Q(Q(d*d)+Q(Q(j*j)+Q(Q(c*c)+Q(i*i)))));g=Q(j*f);h=Q(i*g);k=Q(c*f);n=Q(d*k);N[b+36>>2]=h+n;o=Q(c*g);f=Q(i*f);l=Q(d*f);N[b+32>>2]=o-l;N[b+24>>2]=h-n;h=Q(c*f);d=Q(d*g);N[b+16>>2]=h+d;N[b+8>>2]=o+l;N[b+4>>2]=h-d;c=Q(c*k);d=Q(i*f);N[b+40>>2]=Q(1)-Q(c+d);l=c;c=Q(j*g);N[b+20>>2]=Q(1)-Q(l+c);N[b>>2]=Q(1)-Q(d+c);break a}if(!(H[333216]&1)){if(!(H[333268]&1)){J[83306]=0;J[83307]=0;J[83305]=1065353216;J[83311]=0;J[83312]=0;J[83310]=1065353216;J[83315]=1065353216;J[83316]=0;H[333268]=1;J[83308]=0;J[83309]=0;J[83313]=0;J[83314]=0}J[83300]=0;J[83301]=0;H[333216]=1;a=J[83306];J[83288]=J[83305];J[83289]=a;a=J[83310];J[83292]=J[83309];J[83293]=a;a=J[83314];J[83296]=J[83313];J[83297]=a;J[83302]=0;J[83303]=0;a=J[83308];J[83290]=J[83307];J[83291]=a;a=J[83312];J[83294]=J[83311];J[83295]=a;a=J[83316];J[83298]=J[83315];J[83299]=a}a=J[83289];J[b>>2]=J[83288];J[b+4>>2]=a;a=J[83291];J[b+8>>2]=J[83290];J[b+12>>2]=a;a=J[83295];J[b+24>>2]=J[83294];J[b+28>>2]=a;a=J[83293];J[b+16>>2]=J[83292];J[b+20>>2]=a;a=J[83297];J[b+32>>2]=J[83296];J[b+36>>2]=a;a=J[83299];J[b+40>>2]=J[83298];J[b+44>>2]=a;a=J[83301];J[b+48>>2]=J[83300];J[b+52>>2]=a;a=J[83303];J[b+56>>2]=J[83302];J[b+60>>2]=a}Ui=e+48|0}function SN(a,b){var c=0,d=0,e=0,f=0,g=0;a:{b:{c=J[a+28>>2];e=J[a+24>>2];c:{d:{if((c|0)==(e|0)){break d}c=(c-e|0)/12|0;d=c>>>0<=1?1:c;c=0;while(1){f=e+P(c,12)|0;if(J[f>>2]!=(b|0)){c=c+1|0;if((d|0)!=(c|0)){continue}break d}break}e=J[f+4>>2];if(e){break c}}e=0;f=Ui-16|0;Ui=f;d=J[a+20>>2];g=J[d+3476>>2];e:{f:{c=d+4|0;g:{if(K[d+148|0]==255){break g}c=d+152|0;if(K[d+296|0]==255){break g}c=d+300|0;if(K[d+444|0]==255){break g}c=d+448|0;if(K[d+592|0]==255){break g}c=d+596|0;if(K[d+740|0]==255){break g}c=d+744|0;if(K[d+888|0]==255){break g}c=d+892|0;if(K[d+1036|0]==255){break g}c=d+1040|0;if(K[d+1184|0]==255){break g}c=d+1188|0;if(K[d+1332|0]==255){break g}c=d+1336|0;if(K[d+1480|0]==255){break g}c=d+1484|0;if(K[d+1628|0]==255){break g}c=d+1632|0;if(K[d+1776|0]==255){break g}c=d+1780|0;if(K[d+1924|0]==255){break g}c=d+1928|0;if(K[d+2072|0]==255){break g}c=d+2076|0;if(K[d+2220|0]==255){break g}if(K[d+2368|0]!=255){break f}c=d+2224|0}e=c;h:{i:{c=J[g+4>>2];d=J[g>>2];if((c|0)!=(d|0)){c=c-d>>2;g=c>>>0<=1?1:c;c=0;while(1){if(J[d+(c<<2)>>2]==(a|0)){break i}c=c+1|0;if((g|0)!=(c|0)){continue}break}}H[e+144|0]=255;break h}H[e+144|0]=c;if((c&255)!=255){break e}}Z(96450,41200,153,76156);B()}J[f>>2]=16;dj(4,97141,133276,f)}Ui=f+16|0;if(!e){return 0}c=J[a+28>>2];d=J[a+32>>2];if((c|0)==(d|0)){if(H[a+36|0]&1){break b}d=c;c=a+24|0;lj(((d-J[c>>2]|0)/12|0)+1|0,12,c,a+32|0,a+28|0);d=J[a+32>>2];c=J[a+28>>2]}if((d|0)==(c|0)){break a}J[a+28>>2]=c+12;J[c+8>>2]=0;J[c+4>>2]=e;J[c>>2]=b;_C(J[a+20>>2],e,1)}return e}Z(151729,53895,501,2284);B()}Z(112520,53895,557,53220);B()}function dta(a,b,c,d){a=a|0;b=b|0;c=c|0;d=d|0;var e=0,f=0,g=Q(0),h=Q(0),i=Q(0),j=Q(0),k=Q(0),l=0;e=Ui-256|0;Ui=e;J[e+36>>2]=244848;f=J[b+12>>2];J[e+80>>2]=J[b+8>>2];J[e+84>>2]=f;f=J[b+4>>2];J[e+72>>2]=J[b>>2];J[e+76>>2]=f;f=J[c+12>>2];J[e+96>>2]=J[c+8>>2];J[e+100>>2]=f;f=J[c>>2];l=J[c+4>>2];J[e+116>>2]=0;J[e+120>>2]=0;J[e+136>>2]=0;J[e+140>>2]=0;J[e+88>>2]=f;J[e+92>>2]=l;J[e+252>>2]=d;J[e+108>>2]=0;J[e+112>>2]=0;J[e+104>>2]=1065353216;J[e+128>>2]=0;J[e+132>>2]=0;J[e+124>>2]=1065353216;J[e+144>>2]=1065353216;J[e+148>>2]=0;J[e+248>>2]=a;d=J[b+12>>2];J[e+160>>2]=J[b+8>>2];J[e+164>>2]=d;d=J[b>>2];f=J[b+4>>2];J[e+180>>2]=0;J[e+184>>2]=0;J[e+200>>2]=0;J[e+204>>2]=0;J[e+152>>2]=d;J[e+156>>2]=f;J[e+168>>2]=1065353216;J[e+172>>2]=0;J[e+176>>2]=0;J[e+188>>2]=1065353216;J[e+192>>2]=0;J[e+196>>2]=0;J[e+208>>2]=1065353216;J[e+212>>2]=0;d=J[c+12>>2];J[e+224>>2]=J[c+8>>2];J[e+228>>2]=d;d=J[c+4>>2];J[e+216>>2]=J[c>>2];J[e+220>>2]=d;g=Q(N[c+8>>2]-N[b+8>>2]);j=Q(N[c>>2]-N[b>>2]);h=Q(N[c+4>>2]-N[b+4>>2]);i=Q(Q(1)/Q(Y(Q(Q(g*g)+Q(Q(j*j)+Q(h*h))))));g=Q(g*i);k=g==Q(0)?Q(0xde0b6b000000000):Q(Q(1)/g);N[e+48>>2]=k;J[e+64>>2]=k>2]=k;J[e+60>>2]=k>2]=j;J[e+56>>2]=j>2]=Q(g*Q(N[e+96>>2]-N[e+80>>2]))+Q(Q(i*Q(N[e+88>>2]-N[e+72>>2]))+Q(h*Q(N[e+92>>2]-N[e+76>>2])));a=J[a+76>>2];J[e+24>>2]=0;J[e+28>>2]=0;J[e+16>>2]=0;J[e+20>>2]=0;J[e+8>>2]=0;J[e+12>>2]=0;J[e>>2]=0;J[e+4>>2]=0;Zi[J[J[a>>2]+24>>2]](a,b,c,e+36|0,e+16|0,e);Ui=e+256|0}function _z(a,b,c,d){var e=0,f=0,g=0,h=0,i=0,j=0,k=0,l=0,m=0,n=0;i=Ui-16|0;Ui=i;l=J[b+16>>2];m=K[b+7|0];j=J[b+28>>2];if((j|0)<(c|0)){a:{if(c+1>>>0<=268435455){g=lk(a,J[b+12>>2],j<<4,c<<4);break a}g=Dl(a)}J[b+12>>2]=g;k=J[b+28>>2];b:{if((k|0)>=(c|0)){break b}f=k;n=c-f&7;if(n){while(1){J[(g+(f<<4)|0)+8>>2]=0;f=f+1|0;e=e+1|0;if((n|0)!=(e|0)){continue}break}}if(k-c>>>0>4294967288){break b}while(1){e=g+(f<<4)|0;J[e+8>>2]=0;J[e+24>>2]=0;J[e+40>>2]=0;J[e+56>>2]=0;J[e+72>>2]=0;J[e+88>>2]=0;J[e+104>>2]=0;J[e+120>>2]=0;f=f+8|0;if((f|0)!=(c|0)){continue}break}}J[b+28>>2]=c}JG(a,b,d);if((c|0)<(j|0)){J[b+28>>2]=c;d=c;while(1){f=d+1|0;g=J[b+12>>2]+(d<<4)|0;if(J[g+8>>2]){e=g;c:{d:{e:{if(M[b+28>>2]>d>>>0){break e}h=+(f|0);if(f){e=J[b+16>>2];A(+h);k=v(1)|0;d=v(0)|0;d=d+k|0;e=((d>>>0)%((-1<>>0)<<5)+e|0}else{e=J[b+16>>2]}while(1){if(J[e+24>>2]==3&O[e+16>>3]==h){break e}e=J[e+28>>2];if(e){continue}break}break d}if((e|0)!=173288){break c}h=+(f|0)}J[i+8>>2]=3;O[i>>3]=h;e=Rt(a,b,i)}d=J[g+4>>2];J[e>>2]=J[g>>2];J[e+4>>2]=d;J[e+8>>2]=J[g+8>>2]}d=f;if((j|0)!=(f|0)){continue}break}f:{if(c+1>>>0<=268435455){c=lk(a,J[b+12>>2],j<<4,c<<4);break f}c=Dl(a)}J[b+12>>2]=c}if((m|0)!=31){e=-1<>2]){f=c+16|0;d=nu(b,f);H[b+6|0]=0;if((d|0)==173288){d=49673;g:{h:{switch(J[c+24>>2]){case 3:h=O[f>>3];if(h==h){break g}d=91077;break;case 0:break h;default:break g}}xl(a,d,0)}d=Rt(a,b,f)}f=J[c+4>>2];J[d>>2]=J[c>>2];J[d+4>>2]=f;J[d+8>>2]=J[c+8>>2]}c=(e|0)>0;e=e-1|0;if(c){continue}break}}if((l|0)!=173648){lk(a,l,32<>2]){break a}j=K[a+16|0];l=J[(j?b:c)+192>>2];j=J[(j?c:b)+192>>2];J[d+8>>2]=0;J[d+12>>2]=1065353216;J[d>>2]=0;J[d+4>>2]=0;DT(a,d,b,c,e);b:{if(J[J[e+4>>2]+1116>>2]>=J[a+24>>2]){break b}i=N[l+56>>2];c:{if(Q(R(i))>Q(.7071067690849304)){f=N[l+52>>2];h=Q(Q(1)/Q(Y(Q(Q(f*f)+Q(i*i)))));f=Q(f*h);i=Q(h*Q(-i));h=Q(0);break c}f=N[l+48>>2];h=N[l+52>>2];g=Q(Q(1)/Q(Y(Q(Q(f*f)+Q(h*h)))));i=Q(f*g);f=Q(0);h=Q(g*Q(-h))}g=Q(Zi[J[J[j>>2]+16>>2]](j));g=Q(N[61732]/g);g=Q((g>Q(.39269909262657166)?Q(.39269909262657166):g)*Q(.5));m=Hj(g);j=J[a+20>>2];n=Rj(g);if((j|0)<=0){break b}g=f;f=Q(m/Q(Y(Q(Q(f*f)+Q(Q(h*h)+Q(i*i))))));m=Q(g*f);o=Q(i*f);p=Q(h*f);while(1){i=N[l+52>>2];g=N[l+48>>2];f=N[l+56>>2];h=Q(Q(Q(Q(6.2831854820251465)/Q(j|0))*Q(t>>>0))*Q(.5));k=Q(Hj(h)/Q(Y(Q(Q(f*f)+Q(Q(g*g)+Q(i*i))))));f=Q(f*k);i=Q(i*k);h=Rj(h);g=Q(g*k);k=Q(Q(f*m)+Q(Q(i*o)+Q(Q(h*n)+Q(p*g))));q=Q(Q(f*o)+Q(Q(Q(h*p)-Q(n*g))-Q(i*m)));r=Q(Q(g*m)+Q(Q(Q(h*o)-Q(n*i))-Q(f*p)));s=Q(Q(i*p)+Q(Q(Q(h*m)-Q(n*f))-Q(g*o)));N[d+12>>2]=Q(Q(Q(k*h)-Q(q*g))-Q(r*i))-Q(s*f);N[d+8>>2]=Q(Q(q*i)+Q(Q(k*f)+Q(h*s)))-Q(r*g);N[d+4>>2]=Q(Q(s*g)+Q(Q(k*i)+Q(h*r)))-Q(q*f);N[d>>2]=Q(Q(r*f)+Q(Q(k*g)+Q(h*q)))-Q(s*i);DT(a,d,b,c,e);j=J[a+20>>2];t=t+1|0;if((j|0)>(t|0)){continue}break}}if(!J[J[a+12>>2]+1116>>2]|K[a+8|0]!=1){break a}a=J[e+4>>2];if(!J[a+1116>>2]){break a}b=a;a=J[a+1108>>2]==J[e+136>>2];Qq(b,(a?8:72)+e|0,(a?72:8)+e|0)}Ui=d+16|0}function qL(a,b,c,d,e){var f=0,g=0,h=0,i=0,j=0,k=0,l=0,m=0,n=0,o=0,p=Q(0),q=Q(0),r=Q(0),s=Q(0),t=0,u=0,v=0,w=0,x=0,y=0,z=Q(0),A=0;f=Ui-304|0;Ui=f;g=f+40|0;ij(g,0,264);hx(g);g=J[43199];J[f+24>>2]=J[43198];J[f+28>>2]=g;g=J[43197];J[f+16>>2]=J[43196];J[f+20>>2]=g;J[f+8>>2]=0;J[f+12>>2]=0;J[f>>2]=0;J[f+4>>2]=0;u=J[a>>2];a=J[a+4>>2];if((u|0)!=(a|0)){r=Q(b>>>0);s=Q(c>>>0);z=c?Q(r/s):Q(0);r=Q(r*s);s=Q(d>>>0);a=a-u>>4;A=a>>>0<=1?1:a;while(1){k=(v<<4)+u|0;a:{if(e){a=J[e+4>>2];n=J[e>>2];l=a-n>>3;b:{if((a|0)==(n|0)){a=0;break b}h=l>>>0<=1?1:l;g=J[k>>2];w=J[k+4>>2];a=0;while(1){m=n+(a<<3)|0;if(J[m>>2]==(g|0)&J[m+4>>2]==(w|0)){break b}a=a+1|0;if((h|0)!=(a|0)){continue}break}a=h}if((a|0)==(l|0)){break a}}l=J[k+8>>2];if(!l){break a}n=J[k+12>>2];t=0;while(1){o=P(t,20)+n|0;x=J[o+12>>2];c:{if(x){w=yj(f+40|0);m=J[o+16>>2];a=0;y=1;while(1){d:{h=J[(a<<2)+m>>2];g=yj(h);if(w>>>0>=g>>>0){if(!$k(h,f+40|0,g)){break d}}a=a+1|0;y=x>>>0>a>>>0;if((a|0)!=(x|0)){continue}}break}if(!y){break c}}p=N[o>>2];q=N[o+4>>2];i=1-+Q(z/Q(p/q));m=i>=0;j=1-+Q(r/Q(p*q));h=j>=0;j=(h?j:-j)+(m?i:-i);if(d){i=1-+Q(N[o+8>>2]/s);i=i>=0?i:-i}else{i=0}j=j+i;if(q=Q(0)){a=~~q>>>0}else{a=0}if(p=Q(0)){h=~~p>>>0}else{h=0}g=(a>>>0>=h>>>0)<<3;a=g|f+16;if(!(j>3])){break c}O[a>>3]=j;a=J[k+4>>2];g=f|g;J[g>>2]=J[k>>2];J[g+4>>2]=a}t=t+1|0;if((l|0)!=(t|0)){continue}break}}v=v+1|0;if((A|0)!=(v|0)){continue}break}}c=b>>>0<=c>>>0;b=c<<3|f;a=J[b>>2];b=J[b+4>>2];d=b;if(!(a|b)){b=!c<<3|f;a=J[b>>2];d=J[b+4>>2]}b=J[f+300>>2];if(b){cj(b)}Ui=f+304|0;Yi=d;return a}function EP(a,b){var c=0,d=0,e=0,f=0,g=0,h=0,i=0,j=0,k=0,l=0,m=0,n=0,o=0,p=Q(0),q=Q(0),r=Q(0),s=Q(0),t=Q(0),u=Q(0),v=0;a:{b:{c:{d:{if(!(H[a+240|0]&1)){lj((J[b+16>>2]-J[b+12>>2]|0)/12|0,128,a+228|0,a+236|0,a+232|0);J[a+232>>2]=J[a+228>>2];c=J[b+12>>2];if((c|0)==J[b+16>>2]){break b}h=J[J[b+8>>2]+20>>2];k=h?h+4|0:0;while(1){d=P(i,12)+c|0;o=J[d>>2];e=J[d+8>>2];p=N[e+24>>2];q=N[e+20>>2];r=N[e+16>>2];s=N[e+8>>2];t=N[e+4>>2];u=N[e>>2];j=J[e+116>>2];l=-1;m=J[d+4>>2];c=m;d=J[c+64>>2];c=J[c+68>>2];n=c;e:{if(!(d|c)|!h){break e}c=J[k+4>>2];if(!c){break e}c=J[J[h+4>>2]+(mxa(d,n,c)<<2)>>2];if((c|0)==-1){break e}v=J[k+8>>2];while(1){c=(c<<4)+v|0;if((d|0)!=J[c>>2]|J[c+4>>2]!=(n|0)){c=J[c+12>>2];if((c|0)!=-1){continue}break e}break}l=J[c+8>>2]}c=J[a+208>>2];if(!c){c=J[a+128>>2];d=J[c+28>>2];if((J[c+32>>2]-d|0)/24>>>0<=j>>>0){break d}c=J[(d+P(j,24)|0)+4>>2]}f=f|131071;if(JD(J[c>>2])){f=g<<1&131070|f&-131071;g=g+1|0}d=J[a+232>>2];if((d|0)==J[a+236>>2]){break c}J[a+232>>2]=d+128;H[d+126|0]=f>>>16;I[d+124>>1]=f;J[d+120>>2]=j;J[d+116>>2]=l;J[d+112>>2]=0;J[d+108>>2]=e;J[d+104>>2]=m;J[d+100>>2]=o;J[d+96>>2]=a;N[d+88>>2]=p;N[d+84>>2]=q;N[d+80>>2]=r;N[d+72>>2]=s;N[d+68>>2]=t;N[d+64>>2]=u;i=i+1|0;c=J[b+12>>2];if(i>>>0<(J[b+16>>2]-c|0)/12>>>0){continue}break}break b}break a}Z(145396,53895,494,84789);B()}Z(112520,53895,557,53220);B()}f:{if(!(H[a+256|0]&1)){lj(g,16,a+244|0,a+252|0,a+248|0);b=J[a+244>>2];if(J[a+252>>2]-b>>4>>>0>>0){break f}c=a;a=g<<4;J[c+248>>2]=a+b;ij(b,0,a);return}break a}Z(144782,53895,514,59583);B()}Z(151729,53895,501,2284);B()}function MJ(a){var b=0,c=0;c=Ui-16|0;Ui=c;b=93163;a:{b:{c:{switch(a+103|0){case 102:b=89258;break a;case 101:b=86761;break a;case 100:b=93174;break a;case 99:b=94461;break a;case 98:b=88109;break a;case 97:b=90713;break a;case 96:b=87765;break a;case 95:b=93857;break a;case 94:b=89357;break a;case 93:b=92664;break a;case 92:b=91486;break a;case 91:b=95857;break a;case 90:b=94855;break a;case 89:b=91149;break a;case 88:b=93869;break a;case 86:b=88930;break a;case 83:b=91478;break a;case 81:b=93166;break a;case 80:b=90733;break a;case 79:b=95493;break a;case 78:b=86746;break a;case 77:b=95483;break a;case 76:b=86450;break a;case 75:b=92525;break a;case 74:b=97453;break a;case 73:b=95117;break a;case 72:b=97297;break a;case 71:b=88816;break a;case 3:b=96831;break a;case 2:b=91527;break a;case 1:b=85122;break a;case 0:b=99679;break a;default:if((a|0)==-1e3){break b}break;case 103:break a;case 4:case 5:case 6:case 7:case 8:case 9:case 10:case 11:case 12:case 13:case 14:case 15:case 16:case 17:case 18:case 19:case 20:case 21:case 22:case 23:case 24:case 25:case 26:case 27:case 28:case 29:case 30:case 31:case 32:case 33:case 34:case 35:case 36:case 37:case 38:case 39:case 40:case 41:case 42:case 43:case 44:case 45:case 46:case 47:case 48:case 49:case 50:case 51:case 52:case 53:case 54:case 55:case 56:case 57:case 58:case 59:case 60:case 61:case 62:case 63:case 64:case 65:case 66:case 67:case 68:case 69:case 70:case 82:case 84:case 85:case 87:break c}}J[c>>2]=a;dj(4,99340,56371,c);b=97515;break a}b=91141}Ui=c+16|0;return b}function HG(a,b,c,d){var e=0,f=0,g=0,h=0,i=0,j=0,k=0;j=Ui-32|0;Ui=j;a:{if(!a){J[c+8>>2]=255;h=8;J[c>>2]=8;J[c+16>>2]=-1;J[c+20>>2]=-1;break a}i=a+172|0;e=K[a+50|0];b:{while(1){g=e;if((e|0)<=0){break b}e=e-1|0;if(J[J[J[a>>2]+24>>2]+P(L[i+(e<<1)>>1],12)>>2]!=(b|0)){continue}break}J[c+8>>2]=e;h=6;J[c>>2]=6;J[c+16>>2]=-1;J[c+20>>2]=-1;if(d){break a}e=a+20|0;while(1){e=J[e>>2];if(!e){break a}if((g|0)<=K[e+8|0]){continue}break}H[e+9|0]=1;break a}h=8;i=0;if((HG(J[a+8>>2],b,c,0)|0)==8){break a}f=J[a>>2];d=J[f+36>>2];g=d;e=K[f+72|0];c:{d:{if(!e){break d}i=e;g=a+51|0;h=J[c>>2];e=0;while(1){k=g+(e<<1)|0;if((h|0)==K[k|0]&J[c+8>>2]==K[k+1|0]){break c}e=e+1|0;if((i|0)!=(e|0)){continue}break}g=d;if(i>>>0<60){break d}e=J[a+16>>2];g=J[f+60>>2];e:{if(!g){J[j>>2]=60;J[j+4>>2]=21539;e=gk(e,27750,j);break e}J[j+20>>2]=60;J[j+16>>2]=g;J[j+24>>2]=21539;e=gk(e,27784,j+16|0)}Wn(J[a+12>>2],e,0);i=K[f+72|0];g=J[f+36>>2]}if((g|0)<=(i|0)){J[f+28>>2]=ps(J[a+16>>2],J[f+28>>2],f+36|0,4,2147483645,158859);g=J[f+36>>2]}f:{if((d|0)>=(g|0)){break f}e=d;i=g-e&3;if(i){h=0;while(1){J[J[f+28>>2]+(e<<2)>>2]=0;e=e+1|0;h=h+1|0;if((i|0)!=(h|0)){continue}break}}if(d-g>>>0>4294967292){break f}while(1){d=e<<2;J[d+J[f+28>>2]>>2]=0;J[(d+J[f+28>>2]|0)+4>>2]=0;J[(d+J[f+28>>2]|0)+8>>2]=0;J[(d+J[f+28>>2]|0)+12>>2]=0;e=e+4|0;if((g|0)!=(e|0)){continue}break}}e=K[f+72|0];J[J[f+28>>2]+(e<<2)>>2]=b;if(!(!(K[b+5|0]&3)|!(K[f+5|0]&4))){ap(J[a+16>>2],f,b);e=K[f+72|0]}a=(e<<1)+a|0;H[a+51|0]=J[c>>2];H[a+52|0]=J[c+8>>2];H[f+72|0]=e+1}h=7;J[c>>2]=7;J[c+8>>2]=e}Ui=j+32|0;return h}function $da(a){a=a|0;var b=0,c=0,d=0,e=0,f=0,g=0,h=0,i=0;e=Ui-32|0;Ui=e;d=J[a+16>>2];a:{if(d>>>0<3){break a}b=J[a+12>>2];if(!(K[b|0]!=79|K[b+1|0]!=103)){g=K[b+2|0]==103}if(K[b+8|0]!=87|d>>>0<11|K[b+9|0]!=65){break a}g=K[b+10|0]!=86?g:0}f=J[J[a+32>>2]+12>>2];if(!J[f+4>>2]){J[f+4>>2]=J[a>>2]}c=nj(32);J[c>>2]=0;J[c+4>>2]=0;J[c+24>>2]=0;J[c+28>>2]=0;J[c+16>>2]=0;J[c+20>>2]=0;J[c+8>>2]=0;J[c+12>>2]=0;J[c+12>>2]=Gk(J[a+8>>2]);b=J[a+28>>2];d=J[b>>2];b=J[b+4>>2];i=b;J[c+16>>2]=d;J[c+20>>2]=b;b=J[a+20>>2];J[c+8>>2]=f;J[c+24>>2]=b&2147483647;J[e+16>>2]=0;b:{if((b|0)<0){b=J[f+8>>2];if(!b){d=J[f+12>>2];b=nj(56);J[b>>2]=0;J[b+4>>2]=0;J[b+20>>2]=0;J[b+24>>2]=0;J[b+16>>2]=d;J[b+52>>2]=0;J[b+36>>2]=0;J[b+40>>2]=0;J[b+8>>2]=0;J[b+12>>2]=0;J[b+32>>2]=b+24;J[b+28>>2]=b+32;J[b+48>>2]=b+40;J[b+44>>2]=b+48;J[f+8>>2]=b;i=J[c+20>>2];d=J[c+16>>2]}f=J[a+12>>2];c:{d:{h=J[a+16>>2];if(h>>>0<=J[b+16>>2]-J[b+20>>2]>>>0){break d}if(RV(b,h)){break d}J[e>>2]=h;dj(4,88458,154956,e);break c}J[e+28>>2]=h;J[e+20>>2]=f;J[e+24>>2]=0;PV(b,d,i,1,e+20|0)}f=e+16|0;d=J[a+28>>2];b=J[d>>2];d=J[d+4>>2];e:{if(c){d=GJ(0,0,598,c,g,f,b,d);break e}Z(4513,42316,546,56821);B()}break b}b=J[a+28>>2];d=FJ(J[a+12>>2],J[a+16>>2],g,e+16|0,J[b>>2],J[b+4>>2])}f:{if(d){a=J[c>>2];if(a){EJ(a);jx(J[c>>2]);J[c>>2]=0}d=J[J[c+8>>2]+8>>2];if(d){QV(d,J[c+16>>2],J[c+20>>2])}cj(J[c+12>>2]);cj(c);a=-11;break f}d=J[e+16>>2];J[c+4>>2]=g;J[c>>2]=d;J[J[a+28>>2]+8>>2]=c;d=J[a+28>>2];g:{if(J[a+20>>2]<0){J[d+16>>2]=J[a+16>>2];break g}J[d+16>>2]=J[J[e+16>>2]+12>>2]+40}a=0}Ui=e+32|0;return a|0}function Vn(a,b){var c=0,d=0,e=0,f=0,g=0,h=0,i=0,j=0,k=0,l=0,m=0,n=0,o=0;g=J[a+4>>2];if(g){c=J[a+8>>2];d=g;a:{while(1){d=d-1|0;if(!d){e=J[c>>2];c=32;break a}e=J[c+(d<<2)>>2];if(!e){continue}break}c=(d<<5)+32|0}d=0;if((e|0)>=0){f=-2147483648;while(1){h=d;if(d>>>0<=30){d=d+1|0;f=f>>>1|0;if(!(f&e)){continue}}break}d=h^-1}else{d=0}c=d+c|0}else{c=0}c=b+c|0;b:{c:{if(c>>>0<=g<<5>>>0){c=g;break c}h=-16;c=(c>>>5|0)+((c&31)!=0)|0;if(c>>>0>1e4){break b}if(c>>>0<=g>>>0){c=g;break c}d=Zj(c,4);if(!d){break b}f=J[a+8>>2];if(f){g=g<<2;hj(d,f,g);Zi[J[66509]](f,0,g)|0;cj(J[a+8>>2])}J[a+8>>2]=d;J[a+4>>2]=c}g=b&31;d=b>>>5|0;d:{if(b>>>0<32){break d}f=c;e:{if(c>>>0<=d>>>0){break e}k=d^-1;i=J[a+8>>2];b=c-d&3;if(b){e=0;while(1){h=i+(f<<2)|0;J[h-4>>2]=J[h+(k<<2)>>2];f=f-1|0;e=e+1|0;if((b|0)!=(e|0)){continue}break}}if(d-c>>>0>=4294967293){break e}while(1){b=i+(f<<2)|0;e=b-4|0;h=k<<2;J[e>>2]=J[h+b>>2];l=b-8|0;J[l>>2]=J[e+h>>2];e=b-12|0;J[e>>2]=J[h+l>>2];J[b-16>>2]=J[e+h>>2];f=f-4|0;if(f>>>0>d>>>0){continue}break}}if(!f){break d}ij(J[a+8>>2],0,f<<2)}h=0;if(!g|c>>>0<=d>>>0){break b}f=32-g|0;b=c-d|0;k=b&3;a=J[a+8>>2];f:{if(d-c>>>0>4294967292){e=0;break f}l=a+12|0;m=a+8|0;n=a+4|0;o=b&-4;e=0;c=0;while(1){b=d<<2;j=b+a|0;i=J[j>>2];J[j>>2]=i<>2];J[j>>2]=e<>>f;j=b+m|0;i=J[j>>2];J[j>>2]=i<>>f;e=b+l|0;b=J[e>>2];J[e>>2]=b<>>f;d=d+4|0;e=b>>>f|0;c=c+4|0;if((o|0)!=(c|0)){continue}break}}if(!k){break b}b=0;while(1){i=a+(d<<2)|0;c=J[i>>2];J[i>>2]=c<>>f|0;b=b+1|0;if((k|0)!=(b|0)){continue}break}}return h}function XV(a,b,c,d,e,f){a=a|0;b=b|0;c=c|0;d=d|0;e=e|0;f=f|0;var g=Q(0),h=Q(0),i=0,j=Q(0),k=0,l=0,m=Q(0),n=Q(0),o=0,p=0,q=0,r=0,s=Q(0),t=Q(0),u=Q(0),v=0,w=Q(0),x=0,y=Q(0);k=J[b+48>>2];l=J[b+52>>2];g=N[b+40>>2];q=J[b+4>>2];i=q+(J[b+44>>2]<<1)|0;H[i|0]=K[i-2|0];i=(J[b+44>>2]<<1)+q|0;H[i+1|0]=K[i-1|0];n=N[b+28>>2];h=N[b+32>>2];r=J[a+4>>2];o=J[a>>2];j=N[b+16>>2];s=N[b+20>>2];g=Q(g*Q(+(lxa(c<<31,c>>>1|0,d)>>>0)+ +(Yi>>>0)*4294967296));a:{if(g=Q(0)){v=~~g>>>0;if(Q(R(g))>=Q(1)){a=~~(g>Q(0)?Q(T(Q(V(Q(g*Q(2.3283064365386963e-10)))),Q(4294967296))):Q(W(Q(Q(g-Q(~~g>>>0>>>0))*Q(2.3283064365386963e-10)))))>>>0}else{a=0}break a}a=0}i=a;b:{if(!f){J[b+48>>2]=k;J[b+52>>2]=l;a=J[b+44>>2];c=0;break b}w=Q(Q(1)/Q(f>>>0));m=Q(r>>>0);g=Q(Q(h-n)/m);h=Q(o>>>0);t=Q(Q(g*h)+n);n=Q(Q(g+t)-t);g=Q(Q(s-j)/m);u=Q(Q(g*h)+j);s=Q(Q(g+u)-u);c=0;a=0;while(1){o=c;c=(c<<1)+q|0;x=K[c|0];r=K[c+2|0];h=Q(w*Q(a|0));m=Q(+Q(Q(h*n)+t)*1.5707963267948966);g=Rj(m);d=K[c+1|0];c=K[c+3|0];p=(a<<3)+e|0;y=g;h=Q(Q(h*s)+u);j=Q(Q(+(k>>>0)+ +(l>>>0)*4294967296)*Q(4.656612873077393e-10));g=Q(Q(1)-j);N[p>>2]=Q(y*Q(h*Q(Q(g*Q((-128-x&255)>>>0))+Q(j*Q((-128-r&255)>>>0)))))+N[p>>2];N[p+4>>2]=Q(Q(h*Q(Q(g*Q((-128-d&255)>>>0))+Q(j*Q((-128-c&255)>>>0))))*Hj(m))+N[p+4>>2];c=l+i|0;d=k+v|0;c=d>>>0>>0?c+1|0:c;k=d&2147483647;l=0;c=((c&2147483647)<<1|d>>>31)+o|0;a=a+1|0;if((f|0)!=(a|0)){continue}break}J[b+48>>2]=k;J[b+52>>2]=l;a=J[b+44>>2];if(o>>>0<=a>>>0){break b}Z(12434,42316,1064,44475);B()}d=J[b+4>>2];el(d,d+(c<<1)|0,a-c<<1);J[b+44>>2]=J[b+44>>2]-c}function SP(a,b,c,d,e){var f=0,g=0,h=0,i=0,j=0,k=0,l=0,m=0,n=0,o=0;a:{if(J[b+20>>2]){break a}f=J[J[b>>2]+168>>2];j=f&2147483647;h=nj(j>>>0>1073741823?-1:f<<2);J[b+20>>2]=h;f=J[J[J[b+8>>2]>>2]+192>>2];b:{if(J[f+4>>2]==31){l=J[f+16>>2];i=j>>>0>l>>>0?l:j;if(!i){break b}if(i>>>0>=4){o=i&-4;while(1){J[h+(g<<2)>>2]=J[(J[f+24>>2]+P(g,80)|0)+64>>2];k=g|1;J[h+(k<<2)>>2]=J[(J[f+24>>2]+P(k,80)|0)+64>>2];k=g|2;J[h+(k<<2)>>2]=J[(J[f+24>>2]+P(k,80)|0)+64>>2];k=g|3;J[h+(k<<2)>>2]=J[(J[f+24>>2]+P(k,80)|0)+64>>2];g=g+4|0;m=m+4|0;if((o|0)!=(m|0)){continue}break}}i=i&3;if(!i){break b}while(1){J[h+(g<<2)>>2]=J[(J[f+24>>2]+P(g,80)|0)+64>>2];g=g+1|0;n=n+1|0;if((i|0)!=(n|0)){continue}break}break b}l=1;if(!j){break b}J[h>>2]=f}if((j|0)==(l|0)){break a}Z(11454,38329,1884,98334);B()}NL(a,c,d);f=Ui+-64|0;Ui=f;a=J[J[b+8>>2]>>2];h=J[a+192>>2];c:{if(J[h+4>>2]==31){j=J[h+16>>2];if(!j){break c}l=J[h+24>>2];g=0;while(1){a=l+P(g,80)|0;i=J[a+64>>2];if((i|0)==(c|0)){g=J[a+12>>2];J[f+8>>2]=J[a+8>>2];J[f+12>>2]=g;g=J[a+4>>2];J[f>>2]=J[a>>2];J[f+4>>2]=g;g=J[a+28>>2];J[f+24>>2]=J[a+24>>2];J[f+28>>2]=g;g=J[a+20>>2];J[f+16>>2]=J[a+16>>2];J[f+20>>2]=g;g=J[a+44>>2];J[f+40>>2]=J[a+40>>2];J[f+44>>2]=g;g=J[a+36>>2];J[f+32>>2]=J[a+32>>2];J[f+36>>2]=g;g=J[a+60>>2];J[f+56>>2]=J[a+56>>2];J[f+60>>2]=g;g=J[a+52>>2];J[f+48>>2]=J[a+48>>2];J[f+52>>2]=g;Zi[J[J[h>>2]+60>>2]](h,i);gz(h,f,d);break c}g=g+1|0;if((j|0)!=(g|0)){continue}break}break c}if((c|0)!=(h|0)){break c}Zi[J[J[a>>2]+12>>2]](a,d)}Ui=f- -64|0;if(c){Zi[J[J[c>>2]+4>>2]](c)}J[J[b+20>>2]+(e<<2)>>2]=d}function nla(a){a=a|0;var b=0,c=0,d=0,e=0,f=0,g=0,h=0,i=0,j=0,k=0;b=Ui-96|0;Ui=b;k=J[a+8>>2]-J[a+12>>2]>>4;J[b+80>>2]=0;J[b+84>>2]=0;J[b+72>>2]=0;J[b+76>>2]=0;c=b- -64|0;J[c>>2]=0;J[c+4>>2]=0;J[b+56>>2]=0;J[b+60>>2]=0;Mn(a,80464,b+92|0,b+88|0,b+56|0);a:{if(!((K[J[J[b+88>>2]>>2]+28|0]&2)>>>1|0)){c=dm(J[b+56>>2],J[b+60>>2]);e=tj(J[b+72>>2],J[b+76>>2]);J[b+40>>2]=tj(J[b+80>>2],J[b+84>>2]);J[b+36>>2]=e;J[b+32>>2]=c;c=fj(a,150332,b+32|0);break a}if(H[J[b+88>>2]+24|0]&1){c=fj(a,57221,0);break a}i=J[J[b+92>>2]+32>>2];c=J[b+88>>2];d=J[c>>2];e=J[c+4>>2];J[b+52>>2]=0;b:{c:{d:{e:{f:{if(!kj(a,2)){break f}f=Aj(a,2,0);c=bj(f);g=Yi;g:{j=ul(f,46);if(j){if(!jj(j,82168)){break g}}c=dm(J[b+56>>2],J[b+60>>2]);e=tj(J[b+72>>2],J[b+76>>2]);J[b+12>>2]=tj(J[b+80>>2],J[b+84>>2]);J[b+8>>2]=e;J[b+4>>2]=c;J[b>>2]=f;c=fj(a,72886,b);break a}if(!f){break f}if(J[d>>2]!=(c|0)|J[d+4>>2]!=(g|0)){break e}}J[b+52>>2]=0;break d}if(!(!e|(J[e>>2]!=(c|0)|J[e+4>>2]!=(g|0)))){J[b+52>>2]=e;J[J[b+88>>2]+4>>2]=e;break c}c=Ui-16|0;Ui=c;d=nj(32);J[d+24>>2]=0;J[d+28>>2]=0;J[d+8>>2]=0;J[d+12>>2]=0;J[d+16>>2]=0;J[d+20>>2]=0;H[d+28|0]=3;J[d>>2]=bj(f);J[d+4>>2]=Yi;h:{i:{if(Bx(i,f,c+12|0,c+8|0)){g=84519;h=-3;break i}g=dk(J[c+12>>2],J[c+8>>2],J[55210],d+8|0,0);cj(J[c+12>>2]);if(!g){break h}g=84477;h=-2}J[c>>2]=f;dj(4,88458,g,c)}J[b+52>>2]=d;Ui=c+16|0;if(h){break b}h=J[b+52>>2]}J[J[b+88>>2]+4>>2]=h;if(!e){break c}RP(i,e)}c=0;if(J[a+8>>2]-J[a+12>>2]>>4==(k|0)){break a}Z(143244,36705,499,63798);B()}J[b+16>>2]=f;c=fj(a,27264,b+16|0)}Ui=b+96|0;return c|0}function Jp(a,b,c){var d=Q(0),e=Q(0),f=Q(0),g=Q(0),h=Q(0),i=Q(0),j=Q(0),k=Q(0),l=Q(0),m=Q(0),n=Q(0),o=Q(0),p=Q(0),q=Q(0),r=Q(0),s=Q(0),t=Q(0),u=Q(0),v=Q(0),w=Q(0),x=Q(0),y=Q(0),z=Q(0),A=Q(0),B=Q(0),C=Q(0),D=Q(0),E=Q(0),F=Q(0),G=Q(0),H=Q(0),I=Q(0),J=Q(0),K=Q(0),L=Q(0),M=Q(0);j=N[b+60>>2];k=N[b+56>>2];l=N[b+52>>2];m=N[b+48>>2];n=N[b+28>>2];o=N[b+24>>2];p=N[b+20>>2];q=N[b+16>>2];r=N[b+12>>2];s=N[b+8>>2];t=N[b+4>>2];u=N[b>>2];e=N[b+32>>2];J=e;f=N[b+36>>2];K=f;g=N[b+40>>2];L=g;h=N[b+44>>2];i=h;d=Q(Q(h*h)+Q(Q(g*g)+Q(Q(f*f)+Q(e*e))));if(d>Q(0)){d=Q(Q(1)/Q(Y(d)));i=Q(h*d);L=Q(g*d);K=Q(f*d);J=Q(e*d)}d=N[c+12>>2];v=N[c+8>>2];w=N[c>>2];x=N[c+4>>2];y=N[c+28>>2];z=N[c+24>>2];A=N[c+16>>2];B=N[c+20>>2];C=N[c+44>>2];D=N[c+40>>2];E=N[c+32>>2];F=N[c+36>>2];G=N[c+60>>2];M=i;i=N[c+56>>2];H=N[c+48>>2];I=N[c+52>>2];N[a+60>>2]=Q(j*G)+Q(Q(M*i)+Q(Q(r*H)+Q(n*I)));N[a+56>>2]=Q(k*G)+Q(Q(L*i)+Q(Q(s*H)+Q(o*I)));N[a+52>>2]=Q(l*G)+Q(Q(K*i)+Q(Q(t*H)+Q(p*I)));N[a+48>>2]=Q(m*G)+Q(Q(J*i)+Q(Q(u*H)+Q(q*I)));N[a+44>>2]=Q(j*C)+Q(Q(h*D)+Q(Q(r*E)+Q(n*F)));N[a+40>>2]=Q(k*C)+Q(Q(g*D)+Q(Q(s*E)+Q(o*F)));N[a+36>>2]=Q(l*C)+Q(Q(f*D)+Q(Q(t*E)+Q(p*F)));N[a+32>>2]=Q(m*C)+Q(Q(e*D)+Q(Q(u*E)+Q(q*F)));N[a+28>>2]=Q(j*y)+Q(Q(h*z)+Q(Q(r*A)+Q(n*B)));N[a+24>>2]=Q(k*y)+Q(Q(g*z)+Q(Q(s*A)+Q(o*B)));N[a+20>>2]=Q(l*y)+Q(Q(f*z)+Q(Q(t*A)+Q(p*B)));N[a+16>>2]=Q(m*y)+Q(Q(e*z)+Q(Q(u*A)+Q(q*B)));N[a+12>>2]=Q(j*d)+Q(Q(h*v)+Q(Q(r*w)+Q(n*x)));N[a+8>>2]=Q(k*d)+Q(Q(g*v)+Q(Q(s*w)+Q(o*x)));N[a+4>>2]=Q(l*d)+Q(Q(f*v)+Q(Q(t*w)+Q(p*x)));N[a>>2]=Q(m*d)+Q(Q(e*v)+Q(Q(u*w)+Q(q*x)))}function tga(a){a=a|0;var b=0,c=0,d=0,e=0,f=0,g=0,h=0,i=Q(0),j=Q(0),k=Q(0),l=Q(0),m=Q(0),n=Q(0),o=0;b=Ui-144|0;Ui=b;f=pj(b+124|0,a,0,39481,312);h=J[a+8>>2]-J[a+12>>2]>>4;J[b+112>>2]=0;J[b+116>>2]=0;J[b+104>>2]=0;J[b+108>>2]=0;J[b+96>>2]=0;J[b+100>>2]=0;J[b+88>>2]=0;J[b+92>>2]=0;a:{if(!$l(a,b+88|0)){a=fj(a,81786,0);break a}nr(a,J[78152]);e=Vj(a,-1);gj(a,-2);d=J[J[J[pk(a)+80>>2]+8>>2]>>2];c=J[e+8>>2];if(M[J[d+4>>2]>>2]>c>>>0){d=J[(d+(c<<2)|0)+12>>2]}else{d=0}if(!d){a=Jj(f,45793,0);break a}c=Pl(a,1);i=N[c+8>>2];j=N[c+4>>2];k=N[c>>2];c=Pl(a,2);l=N[c+8>>2];m=N[c+4>>2];n=N[c>>2];Oj(a,3,5);c=J[a+8>>2];J[c+8>>2]=0;J[a+8>>2]=c+16;c=0;if($j(a,3)){while(1){o=Vl(d,Tl(a,-1),Yi,0);gj(a,-2);c=c|o;if($j(a,3)){continue}break}}b:{if((h|0)<4){break b}g=Ej(a,4);if(g>>>0<256){break b}a=fj(a,106728,0);break a}J[b+68>>2]=g;J[b+64>>2]=c;N[b+56>>2]=l;N[b+52>>2]=m;N[b+48>>2]=n;N[b+40>>2]=i;N[b+36>>2]=j;N[b+32>>2]=k;J[b+24>>2]=0;J[b+28>>2]=0;J[b+16>>2]=0;J[b+20>>2]=0;J[b+8>>2]=0;J[b+12>>2]=0;J[b>>2]=0;J[b+4>>2]=0;H[b|0]=0;H[b+1|0]=0;H[b+2|0]=0;H[b+3|0]=0;H[b+4|0]=0;H[b+5|0]=0;H[b+6|0]=0;H[b+7|0]=0;H[b+24|0]=0;H[b+25|0]=0;H[b+26|0]=0;H[b+27|0]=0;H[b+28|0]=0;H[b+29|0]=0;H[b+30|0]=0;H[b+31|0]=0;H[b+16|0]=0;H[b+17|0]=0;H[b+18|0]=0;H[b+19|0]=0;H[b+20|0]=0;H[b+21|0]=0;H[b+22|0]=0;H[b+23|0]=0;H[b+8|0]=0;H[b+9|0]=0;H[b+10|0]=0;H[b+11|0]=0;H[b+12|0]=0;H[b+13|0]=0;H[b+14|0]=0;H[b+15|0]=0;a=J[e+4>>2];J[b>>2]=J[e>>2];J[b+4>>2]=a;a=J[58344];Jk(b+88|0,b,J[a+8>>2],J[a+12>>2],0,0,a,b+32|0,48,0);a=0}oj(f);Ui=b+144|0;return a|0}function yF(a,b,c,d,e){var f=0,g=0,h=0,i=0,j=0,k=0,l=0,m=0,n=0;a:{b:{switch(d|0){default:if((d|0)<=8){if((a|0)==(b|0)){break a}J[e>>2]=J[a>>2];h=a+4|0;if((h|0)==(b|0)){break a}f=J[c>>2];a=e;while(1){d=a+4|0;c=J[h>>2];g=f+(c<<3)|0;i=J[g>>2];l=J[a>>2];j=f+(l<<3)|0;k=J[j>>2];g=J[g+4>>2];j=J[j+4>>2];c:{if((g|0)==(j|0)&i>>>0>>0|g>>>0>>0){J[a+4>>2]=l;m=e;d:{if((a|0)==(e|0)){break d}while(1){i=f+(J[h>>2]<<3)|0;l=J[i>>2];g=a-4|0;j=J[g>>2];k=f+(j<<3)|0;c=J[k>>2];i=J[i+4>>2];k=J[k+4>>2];m=a;if((i|0)==(k|0)&c>>>0<=l>>>0|i>>>0>k>>>0){break d}J[a>>2]=j;a=g;if((e|0)!=(a|0)){continue}break}m=e}J[m>>2]=J[h>>2];break c}J[d>>2]=c}a=d;h=h+4|0;if((h|0)!=(b|0)){continue}break}break a}h=d>>>1|0;f=h<<2;g=f+a|0;Qr(a,g,c,h,e,h);d=d-h|0;Qr(g,b,c,d,e+f|0,d);l=J[c>>2];d=g;e:{while(1){if((b|0)==(d|0)){break e}f=J[d>>2];i=l+(f<<3)|0;c=J[i>>2];j=J[a>>2];k=l+(j<<3)|0;h=J[k>>2];m=f;n=j;f=J[i+4>>2];i=J[k+4>>2];j=(f|0)==(i|0)&c>>>0>>0|f>>>0>>0;J[e>>2]=j?m:n;d=(j<<2)+d|0;e=e+4|0;a=(((f|0)==(i|0)&c>>>0>=h>>>0|f>>>0>i>>>0)<<2)+a|0;if((g|0)!=(a|0)){continue}break}if((b|0)==(d|0)){break a}while(1){J[e>>2]=J[d>>2];e=e+4|0;d=d+4|0;if((d|0)!=(b|0)){continue}break}break a}if((a|0)==(g|0)){break a}while(1){J[e>>2]=J[a>>2];e=e+4|0;a=a+4|0;if((g|0)!=(a|0)){continue}break};break a;case 2:c=J[c>>2];b=b-4|0;d=J[b>>2];g=c+(d<<3)|0;h=J[g>>2];f=J[a>>2];c=c+(f<<3)|0;i=J[c>>2];m=d;d=J[g+4>>2];c=J[c+4>>2];c=(d|0)==(c|0)&h>>>0>>0|c>>>0>d>>>0;J[e>>2]=c?m:f;a=c?a:b;e=e+4|0;break;case 0:break a;case 1:break b}}J[e>>2]=J[a>>2]}}function l7(a,b){a=a|0;b=b|0;var c=0,d=0,e=0,f=0,g=0,h=0,i=0,j=0,k=0;h=Ui-16|0;Ui=h;d=K[a+96|0];a:{if((d&3)==1){H[b|0]=0;break a}g=J[218579];c=d>>>2|0;e=a+112|0;j=yj(e);while(1){b=J[218581];J[218581]=b?b:1;if(b){continue}break}b=J[218580];b:{if((b|0)<=0){break b}f=a+97|0;i=b&3;c:{if(!i){a=b;break c}d=0;a=b;while(1){a=a-1|0;Zi[J[(a<<2)+874336>>2]](c,f,e);d=d+1|0;if((i|0)!=(d|0)){continue}break}}if(b>>>0<4){break b}while(1){b=(a<<2)+874336|0;Zi[J[b-4>>2]](c,f,e);Zi[J[b-8>>2]](c,f,e);b=a-3|0;Zi[J[(b<<2)+874336>>2]](c,f,e);a=a-4|0;Zi[J[(a<<2)+874336>>2]](c,f,e);if(b>>>0>1){continue}break}}J[h>>2]=e;J[218581]=0;while(1){a=J[218578];J[218578]=a?a:1;if(a){continue}break}d=0;if(J[218577]<=0){J[218578]=0;break a}a=J[g>>2];b=J[g+4>>2];J[218578]=0;b=b-a>>2;if((b|0)<=0){break a}d:{e:{while(1){a=J[218578];J[218578]=a?a:1;if(a){continue}f:{if(J[218577]>0){a=J[g>>2];if(J[g+4>>2]-a>>2>>>0>d>>>0){break f}Z(145396,54052,487,84789);B()}J[218578]=0;break a}f=d<<2;i=f+a|0;c=J[i>>2];a=0;J[218578]=0;g:{h:{while(1){i:{k=lx(c,a+e|0,j-a|0,h+12|0);if((k|0)!=-101){if(k){break i}a=J[h+12>>2]+a|0}if((a|0)<(j|0)){continue}break h}break}sq(c);Ln(c);while(1){a=J[218578];J[218578]=a?a:1;if(a){continue}break}if(J[218577]<=0){break d}J[i>>2]=-1;c=J[g+4>>2];a=J[g>>2];if(c-a>>2>>>0<=d>>>0){break g}c=c-4|0;J[a+f>>2]=J[c>>2];J[g+4>>2]=c;if(a>>>0>c>>>0){break e}J[218578]=0;d=d-1|0;b=b-1|0}d=d+1|0;if((d|0)<(b|0)){continue}break a}break}Z(145381,54052,537,43537);B()}Z(12682,54052,540,43537);B()}J[218578]=0}Ui=h+16|0}function YC(a,b){var c=0,d=0,e=0,f=0,g=0,h=0,i=0,j=0,k=0,l=0,m=0,n=0;a:{if(b>>>0<8){c=b;d=0;break a}k=b-8|0;b:{if(k>>>0<8){c=b;h=0;break b}m=(k>>>3|0)+1&1073741822;c=b;while(1){e=ixa(K[a+8|0]|K[a+9|0]<<8|(K[a+10|0]<<16|K[a+11|0]<<24),K[a+12|0]|K[a+13|0]<<8|(K[a+14|0]<<16|K[a+15|0]<<24),1540483477,-962287725);d=Yi;n=ixa(e^d>>>15,d,1540483477,-962287725);i=Yi;e=ixa(K[a|0]|K[a+1|0]<<8|(K[a+2|0]<<16|K[a+3|0]<<24),K[a+4|0]|K[a+5|0]<<8|(K[a+6|0]<<16|K[a+7|0]<<24),1540483477,-962287725);d=Yi;d=ixa(e^d>>>15,d,1540483477,-962287725);e=Yi;j=ixa(ixa(j,l,1540483477,-962287725)^d,Yi^e,1540483477,-962287725)^n;e=Yi^i;l=e;c=c-16|0;a=a+16|0;h=h+2|0;if((m|0)!=(h|0)){continue}break}e=ixa(j,e,1540483477,-962287725);h=Yi}d=e;if(!(k&8)){e=ixa(K[a|0]|K[a+1|0]<<8|(K[a+2|0]<<16|K[a+3|0]<<24),K[a+4|0]|K[a+5|0]<<8|(K[a+6|0]<<16|K[a+7|0]<<24),1540483477,-962287725);i=Yi;j=ixa(e^i>>>15,i,1540483477,-962287725)^d;l=h^Yi;c=c-8|0;a=a+8|0}e=ixa(j,l,1540483477,-962287725);d=Yi}h=e;e=d;c:{switch(c-1|0){case 6:f=K[a+6|0]<<16;case 5:f=f|K[a+5|0]<<8;case 4:f=f^K[a+4|0];case 3:c=K[a+3|0];d=c>>>8|0;g=g^c<<24;f=d^f;case 2:c=K[a+2|0];d=c>>>16|0;g=g^c<<16;f=d^f;case 1:c=K[a+1|0];d=c>>>24|0;g=g^c<<8;f=d^f;case 0:g=ixa(K[a|0]^g,f,1540483477,-962287725);f=Yi;break;default:break c}}e=ixa(ixa(g^f>>>15,f,1540483477,-962287725)^h,e^Yi,1540483477,-962287725);c=Yi;a=ixa(b,0,1540483477,-962287725);b=Yi;b=ixa(a^b>>>15,b,1540483477,-962287725)^e;a=Yi^c;a=ixa(b^a>>>15,a,1540483477,-962287725);b=Yi;a=a^b>>>15;Yi=b;return a}function Q5(a){a=a|0;var b=0,c=0,d=0,e=0,f=0,g=0,h=0,i=Q(0);e=Ui-48|0;Ui=e;c=J[a+8>>2]-J[a+12>>2]>>4;Bj(a);f=qj(a,-1,J[84364],139081);gj(a,-2);a:{b:{if((c|0)==J[a+8>>2]-J[a+12>>2]>>4){if(!NA(a,1)){break b}h=J[qj(a,1,J[84366],137327)>>2];c:{d:{e:{if((kj(a,2)|0)==5){Oj(a,2,5);uj(a,2);rj(a,-1,48385);if(kj(a,-1)){d=an(a,-1)}else{d=0}gj(a,-2);rj(a,-1,22599);if(kj(a,-1)){c=Ej(a,-1)}else{c=4}gj(a,-2);rj(a,-1,18434);if(kj(a,-1)){break e}g=0;break d}if(!NA(a,2)){break c}if(!K[337448]){H[337448]=1;dj(3,90423,84322,0)}g=J[qj(a,2,J[84365],137401)>>2];break c}g=J[qj(a,-1,J[84365],137401)>>2]}gj(a,-2);gj(a,-2);if(!d){break c}b=nj(80);N[b>>2]=N[d>>2];N[b+4>>2]=N[d+4>>2];N[b+8>>2]=N[d+8>>2];N[b+12>>2]=N[d+12>>2];N[b+16>>2]=N[d+16>>2];N[b+20>>2]=N[d+20>>2];N[b+24>>2]=N[d+24>>2];N[b+28>>2]=N[d+28>>2];N[b+32>>2]=N[d+32>>2];N[b+36>>2]=N[d+36>>2];N[b+40>>2]=N[d+40>>2];N[b+44>>2]=N[d+44>>2];N[b+48>>2]=N[d+48>>2];N[b+52>>2]=N[d+52>>2];N[b+56>>2]=N[d+56>>2];i=N[d+60>>2];J[b+64>>2]=c;N[b+60>>2]=i}c=e+8|0;J[c+24>>2]=b;J[c+28>>2]=0;J[c+16>>2]=g;J[c+20>>2]=0;J[c+8>>2]=h;J[c+12>>2]=0;J[c>>2]=18;b=J[f+4>>2];if((b|0)!=J[f+8>>2]){J[f+4>>2]=b+40;a=J[c+36>>2];J[b+32>>2]=J[c+32>>2];J[b+36>>2]=a;a=J[c+28>>2];J[b+24>>2]=J[c+24>>2];J[b+28>>2]=a;a=J[c+20>>2];J[b+16>>2]=J[c+16>>2];J[b+20>>2]=a;a=J[c+12>>2];J[b+8>>2]=J[c+8>>2];J[b+12>>2]=a;a=J[c+4>>2];J[b>>2]=J[c>>2];J[b+4>>2]=a;a=0;break a}J[e>>2]=(b-J[f>>2]|0)/40;a=fj(a,132935,e);break a}Z(143244,37616,478,51340);B()}a=fj(a,129587,0)}Ui=e+48|0;return a|0}function jp(a){var b=0,c=0,d=0,e=0,f=0;b=ixa(J[a+8>>2],J[a+12>>2],1540483477,-962287725);c=Yi;b=ixa(b^c>>>15,c,1540483477,-962287725);J[a+8>>2]=b;e=Yi;J[a+12>>2]=e;e=ixa(ixa(J[a>>2],J[a+4>>2],1540483477,-962287725)^b,Yi^e,1540483477,-962287725);c=Yi;b=ixa(J[a+20>>2],0,1540483477,-962287725);d=Yi;b=ixa(b^d>>>15,d,1540483477,-962287725)^e;c=Yi^c;b=ixa(b^c>>>15,c,1540483477,-962287725);c=Yi;J[a>>2]=b^c>>>15;J[a+4>>2]=c;if(!K[874264]){nl();H[874264]=1}a:{b:{c:{d:{if(!(!J[a+24>>2]|K[874164]!=1|M[a+20>>2]>1024)){f=J[218540];Tj(f);if(!K[874264]){nl();H[874264]=1}b=J[a>>2];e=J[a+4>>2];e:{f:{g:{d=J[218551];h:{if(!d){c=J[218552];break h}c=J[218552];d=J[J[218550]+(mxa(b,e,d)<<2)>>2];if((d|0)==-1){break h}while(1){d=P(d,24)+c|0;if((b|0)==J[d>>2]&(e|0)==J[d+4>>2]){break g}d=J[d+16>>2];if((d|0)!=-1){continue}break}}d=(J[218554]-c|0)/24|0;c=J[218556];i:{if((d|0)!=(c|0)){break i}b=c+16384|0;Wx(874200,(P(b,5)>>>0)/7|0,b);b=J[a>>2];e=J[a+4>>2];if(K[874264]){break i}nl();H[874264]=1}d=J[a+24>>2];c=J[218558];if(d>>>0>3>>>0){break f}break a}e=J[a+24>>2];b=J[218558];if(e>>>0>=J[218559]-b>>3>>>0){break a}cj(J[b+(e<<3)>>2]);break e}CN(b,e,c+(d<<3)|0);if(K[874264]){break e}nl();H[874264]=1}e=J[a+24>>2];if(!e){break d}c=J[218562];if(!c){break c}b=J[218564]-1|0;if(b>>>0>=M[218563]){break b}J[218564]=b;J[(b<<2)+c>>2]=e;J[a+24>>2]=0;Lj(f)}Yi=J[a+4>>2];return J[a>>2]}Z(113560,41081,136,10765);B()}Z(49493,54391,140,53220);B()}Z(2650,54391,141,53220);B()}Z(145396,54052,487,84789);B()}function Sha(a){a=a|0;var b=0,c=0,d=0,e=0,f=0,g=0,h=0,i=0,j=0,k=0,l=0,m=0,n=0,o=0;b=Ui-160|0;Ui=b;f=pj(b+140|0,a,0,39971,597);o=Mp(a,1,0);j=Mp(a,3,0);m=Ej(a,2);k=Ej(a,4);h=Ej(a,5);a:{if((h|0)<=0){J[b>>2]=h;a=Jj(f,8507,b);break a}Mq(o,b+136|0);Mq(j,b+132|0);a=J[b+136>>2];if((a|0)<(h+m|0)){J[b+24>>2]=h;J[b+20>>2]=m;J[b+16>>2]=a;a=Jj(f,8536,b+16|0);break a}if(J[b+132>>2]<(h+k|0)){J[b+40>>2]=h;J[b+36>>2]=m;J[b+32>>2]=a;a=Jj(f,8633,b+32|0);break a}rE(j,b+128|0);c=J[b+128>>2];l=b-P(c,96)|0;Ui=l;a=0;if(!c){break a}while(1){d=P(a<<1|1,48)+l|0;qE(j,a,d+8|0);i=P(a,96)+l|0;n=i+36|0;c=J[d+8>>2];e=J[d+12>>2];g=zv(o,c,e,i+16|0,i+28|0,n,i+32|0);if(g){if((g|0)==6){J[b+64>>2]=tj(c,e);a=Jj(f,30449,b- -64|0);break a}J[b+48>>2]=g>>>0>11?14245:J[(g<<2)+265952>>2];a=Jj(f,28115,b+48|0);break a}g=d+36|0;zv(j,c,e,d+16|0,d+28|0,g,d+32|0);nt(o,c,e,i+40|0,n);nt(j,c,e,d+40|0,g);if(J[i+40>>2]!=J[d+40>>2]){e=tj(c,e);a=J[i+40>>2];if(a>>>0>8){a=64412}else{a=J[(a<<2)+266e3>>2]}c=J[d+40>>2];if(c>>>0>8){k=64412}else{k=J[(c<<2)+266e3>>2]}J[b+120>>2]=k;J[b+116>>2]=a;J[b+112>>2]=e;a=Jj(f,28017,b+112|0);break a}if(J[n>>2]!=J[g>>2]){a=tj(c,e);c=J[n>>2];J[b+104>>2]=J[g>>2];J[b+100>>2]=c;J[b+96>>2]=a;a=Jj(f,78617,b+96|0);break a}a=a+1|0;c=J[b+128>>2];if(a>>>0>>0){continue}break}a=0;if(!c){break a}c=0;while(1){d=P(c,96)+l|0;e=J[d+36>>2];if(DQ(d,P(e,m),P(c<<1|1,48)+l|0,P(e,k),P(e,h))){c=c+1|0;if(c>>>0>2]){continue}break a}break}J[b+80>>2]=J[d+40>>2];a=Jj(f,79795,b+80|0)}oj(f);Ui=b+160|0;return a|0}function BQ(a,b,c,d,e){var f=0,g=0,h=0,i=0,j=0,k=0,l=0,m=0,n=0;f=Ui-320|0;Ui=f;J[f+312>>2]=0;J[f+316>>2]=0;J[f+304>>2]=0;J[f+308>>2]=0;J[f+296>>2]=0;J[f+300>>2]=0;J[f+288>>2]=0;J[f+292>>2]=0;J[f+280>>2]=0;J[f+284>>2]=0;J[f+272>>2]=0;J[f+276>>2]=0;ND(f+288|0,f+272|0);a:{b:{c:{if(!d){break c}while(1){j=f+16|0;h=0;i=Ui-32|0;Ui=i;d:{e:{g=k>>>0>5?-1:J[(k<<2)+160540>>2];f:{if(g>>>0>16){break f}g:{if(!(1<>2]){break a}J[i+16>>2]=c;Gj(j,256,82412,i+16|0);h=J[f+272>>2];g=J[f+276>>2]-h|0;h=wq(a,0,j,h,g,g,b+16|0);if(h){break f}g=Zi[J[79450]](J[b+64>>2],J[b+68>>2],16)|0;h=J[b+16>>2];J[h>>2]=g;J[h+4>>2]=Yi;J[b+56>>2]=bj(j);J[b+60>>2]=Yi;break g}m=Up(g);l=(m<<2)+b|0;if(J[l>>2]){break e}if(!(!(1<>>0>8)){J[i+4>>2]=Up(g);J[i>>2]=c;Gj(j,256,82430,i)}n=J[f+272>>2];h=J[f+276>>2]-n|0;h=wq(a,0,j,n,h,h,l);if(h){break f}g=Zi[J[79450]](J[b+64>>2],J[b+68>>2],g)|0;h=J[l>>2];J[h>>2]=g;J[h+4>>2]=Yi;g=(m<<3)+b|0;J[g+24>>2]=bj(j);J[g+28>>2]=Yi}h=0}Ui=i+32|0;g=h;break d}Z(111097,38212,164,62967);B()}if(!g){k=k+1|0;if((k|0)!=(d|0)){continue}break c}break}mv(a,b);break b}g=0;if(!e){break b}if(J[b+16>>2]){break a}J[f>>2]=c;d=f+16|0;Gj(d,256,82412,f);e=J[f+272>>2];c=J[f+276>>2]-e|0;c=wq(a,0,d,e,c,c,b+16|0);if(!c){a=Zi[J[79450]](J[b+64>>2],J[b+68>>2],16)|0;c=J[b+16>>2];J[c>>2]=a;J[c+4>>2]=Yi;J[b+56>>2]=bj(d);J[b+60>>2]=Yi;break b}mv(a,b);g=c}h:{if(H[f+284|0]&1){break h}a=J[f+272>>2];if(!a){break h}cj(a)}Ui=f+320|0;return g}Z(111051,38212,177,62967);B()}function rma(a){a=a|0;var b=0,c=0,d=0,e=Q(0),f=Q(0),g=Q(0),h=Q(0),i=Q(0),j=Q(0),k=Q(0),l=Q(0),m=Q(0),n=Q(0),o=Q(0),p=Q(0),q=Q(0),r=Q(0),s=Q(0),t=Q(0),u=Q(0),v=Q(0),w=Q(0),x=Q(0),y=Q(0),z=Q(0),A=Q(0),B=Q(0),C=Q(0),D=Q(0),E=Q(0),F=Q(0),G=Q(0),H=Q(0),I=Q(0),J=Q(0),K=0;b=Ui-96|0;Ui=b;K=pj(b+76|0,a,1,37509,2150);c=an(a,1);d=op(dn(a,2));e=N[d+12>>2];f=N[d+8>>2];g=N[d>>2];h=N[d+4>>2];i=N[d+28>>2];j=N[d+24>>2];k=N[d+16>>2];l=N[d+20>>2];m=N[d+44>>2];n=N[d+40>>2];o=N[d+32>>2];p=N[d+36>>2];q=N[c+48>>2];r=N[c+32>>2];s=N[c>>2];t=N[c+16>>2];u=N[c+52>>2];v=N[c+36>>2];w=N[c+4>>2];x=N[c+20>>2];y=N[c+56>>2];z=N[c+40>>2];A=N[c+8>>2];B=N[c+24>>2];C=N[c+60>>2];D=N[d+60>>2];E=N[c+44>>2];F=N[d+56>>2];G=N[c+12>>2];H=N[d+48>>2];I=N[c+28>>2];J=N[d+52>>2];N[b+60>>2]=Q(C*D)+Q(Q(E*F)+Q(Q(G*H)+Q(I*J)));N[b+56>>2]=Q(y*D)+Q(Q(z*F)+Q(Q(A*H)+Q(B*J)));N[b+52>>2]=Q(u*D)+Q(Q(v*F)+Q(Q(w*H)+Q(x*J)));N[b+48>>2]=Q(q*D)+Q(Q(r*F)+Q(Q(s*H)+Q(t*J)));N[b+44>>2]=Q(C*m)+Q(Q(E*n)+Q(Q(G*o)+Q(I*p)));N[b+40>>2]=Q(y*m)+Q(Q(z*n)+Q(Q(A*o)+Q(B*p)));N[b+36>>2]=Q(u*m)+Q(Q(v*n)+Q(Q(w*o)+Q(x*p)));N[b+32>>2]=Q(q*m)+Q(Q(r*n)+Q(Q(s*o)+Q(t*p)));N[b+28>>2]=Q(C*i)+Q(Q(E*j)+Q(Q(G*k)+Q(I*l)));N[b+24>>2]=Q(y*i)+Q(Q(z*j)+Q(Q(A*k)+Q(B*l)));N[b+20>>2]=Q(u*i)+Q(Q(v*j)+Q(Q(w*k)+Q(x*l)));N[b+16>>2]=Q(q*i)+Q(Q(r*j)+Q(Q(s*k)+Q(t*l)));N[b+12>>2]=Q(C*e)+Q(Q(E*f)+Q(Q(G*g)+Q(h*I)));N[b+8>>2]=Q(y*e)+Q(Q(z*f)+Q(Q(A*g)+Q(h*B)));N[b+4>>2]=Q(u*e)+Q(Q(v*f)+Q(Q(w*g)+Q(h*x)));N[b>>2]=Q(q*e)+Q(Q(r*f)+Q(Q(s*g)+Q(t*h)));Kp(a,b);oj(K);Ui=b+96|0;return 1}function VG(a,b){var c=0,d=0,e=0,f=0,g=0,h=Q(0),i=0,j=0;e=(C(b),v(2));f=(e<<1)+16777216>>>0<16777217;a:{b:{c:{c=(C(a),v(2));d:{if(c-2139095040>>>0>=2164260864){if(f){break d}break b}if(!f){break c}}h=Q(1);if((c|0)==1065353216){break a}g=e<<1;if(!g){break a}c=c<<1;if(!(g>>>0<4278190081&c>>>0<=4278190080)){return Q(a+b)}if((c|0)==2130706432){break a}return(e|0)<0^c>>>0<2130706432?Q(0):Q(b*b)}if((c<<1)+16777216>>>0<16777217){h=Q(a*a);if((c|0)<0){h=(KS(e)|0)==1?Q(-h):h}if((e|0)>=0){break a}c=Ui-16|0;N[c+12>>2]=Q(1)/h;return N[c+12>>2]}if((c|0)<0){c=KS(e);if(!c){a=Q(a-a);return Q(a/a)}g=((c|0)==1)<<16;c=(C(a),v(2))&2147483647}if(c>>>0>8388607){break b}c=((C(Q(a*Q(8388608))),v(2))&2147483647)-192937984|0}e=c-1060306944|0;f=e>>>15&240;d=+(x(2,c-(e&-8388608)|0),D())*O[f+213072>>3]+-1;i=d*d;d=((O[26666]*d+O[26667])*(i*i)+((O[26668]*d+O[26669])*i+(O[26670]*d+(O[f+213080>>3]+ +(e>>23)))))*+b;A(+d);c=v(1)|0;v(0)|0;e:{c=c&2147450880;if((c|0)==1079967744|c>>>0<1079967744){break e}if(d>127.99999995700433){c=Ui-16|0;N[c+12>>2]=g?Q(-15845632502852868e13):Q(15845632502852868e13);return Q(N[c+12>>2]*Q(15845632502852868e13))}if(!(d<=-150)){break e}c=Ui-16|0;N[c+12>>2]=g?Q(-2524354896707238e-44):Q(2524354896707238e-44);return Q(N[c+12>>2]*Q(2524354896707238e-44))}j=d;d=O[26625];i=j+d;d=j-(i-d);d=(O[26626]*d+O[26627])*(d*d)+(O[26628]*d+1);A(+i);v(1)|0;f=v(0)|0;c=g+f|0;g=((f&31)<<3)+212744|0;f=J[g>>2];e=f;c=J[g+4>>2]+(c<<15)|0;x(0,e|0);x(1,(e>>>0>>0?c+1|0:c)|0);h=Q(d*+z())}return h}function tn(a,b,c){var d=0,e=0,f=0,g=0,h=0,i=0,j=0,k=0,l=0;g=Ui-16|0;Ui=g;f=c;i=c+4|0;c=J[b+4>>2];e=0;a:{if(!c){break a}j=J[b+8>>2]-4|0;while(1){e=c;if(J[j+(c<<2)>>2]){break a}c=c-1|0;if(c){continue}break}e=0}j=f+8|0;c=J[f+4>>2];b:{if(!c){break b}h=J[f+8>>2]-4|0;while(1){if(J[h+(c<<2)>>2]){d=c;break b}c=c-1|0;if(c){continue}break}}c:{d:{if(!(d|e)|d>>>0>>0){break d}h=-10;if(d>>>0>e>>>0){break c}while(1){if(!e){break d}e=e-1|0;c=e<<2;d=J[c+J[b+8>>2]>>2];c=J[c+J[f+8>>2]>>2];if(d>>>0>c>>>0){break d}if(c>>>0<=d>>>0){continue}break}break c}J[g+12>>2]=0;J[g+4>>2]=1;J[g+8>>2]=0;e:{if((a|0)==(f|0)){h=sk(g+4|0,f);if(h){break e}i=g+8|0;j=g+12|0}if((a|0)!=(b|0)){h=sk(a,b);if(h){break e}}J[a>>2]=1;f:{f=J[i>>2];if(!f){break f}e=J[j>>2];b=e-4|0;d=0;c=f;while(1){if(!J[b+(c<<2)>>2]){d=d+1|0;c=c-1|0;if(c){continue}break f}break}h=c&1;b=J[a+8>>2];g:{if((f|0)==(d+1|0)){d=0;break g}f=c&-2;d=0;j=0;while(1){a=b;i=J[b>>2];c=i-d|0;J[b>>2]=c;k=J[e>>2];J[b>>2]=c-k;l=J[b+4>>2];d=(c>>>0>>0)+(d>>>0>i>>>0)|0;c=l-d|0;J[b+4>>2]=c;i=J[e+4>>2];J[b+4>>2]=c-i;d=(c>>>0>>0)+(d>>>0>l>>>0)|0;b=b+8|0;e=e+8|0;j=j+2|0;if((f|0)!=(j|0)){continue}break}c=a+4|0}if(h){c=J[b>>2];a=c-d|0;J[b>>2]=a;e=J[e>>2];J[b>>2]=a-e;d=(a>>>0>>0)+(c>>>0>>0)|0;c=b;b=c+4|0}h=0;if(!d){break e}a=J[b>>2];J[b>>2]=a-d;if(a>>>0>=d>>>0){break e}c=c+8|0;while(1){a=J[c>>2];J[c>>2]=a-1;c=c+4|0;if(!a){continue}break}break e}h=0}a=J[g+12>>2];if(!a){break c}Zi[J[66509]](a,0,J[g+8>>2]<<2)|0;cj(J[g+12>>2])}Ui=g+16|0;return h}function Ija(a){a=a|0;var b=0,c=0,d=0,e=0,f=0,g=0,h=Q(0),i=Q(0),j=Q(0),k=Q(0),l=0;e=Ui-48|0;Ui=e;b=J[a+1040>>2];d=J[b+32>>2];b=J[b+28>>2];c=J[b+16>>2];if(d>>>0>2]-c>>3>>>0){c=J[c+(d<<3)>>2];g=J[b>>2];if(c>>>0>2]-g>>8>>>0){d=J[a+1052>>2];f=d;b=J[a+1048>>2];l=b+1|0;d=l?d:d+1|0;J[a+1048>>2]=l;J[a+1052>>2]=d;c=g+(c<<8)|0;a:{if(!f&b>>>0<=3){d=b;b:{c:{d:{switch(b-1|0){default:b=c+24|0;f=c+20|0;g=c+16|0;k=Q(1);c=3;break b;case 0:b=c+40|0;f=c+36|0;g=c+32|0;k=N[c+44>>2];c=4;break b;case 1:f=c+68|0;g=c- -64|0;b=c+72|0;break c;case 2:break d}}f=c+52|0;g=c+48|0;b=c+56|0}c=3}h=N[g>>2];i=N[f>>2];j=N[b>>2];b=bj(J[(d<<2)+224432>>2]);N[a+28>>2]=k;N[a+24>>2]=j;N[a+20>>2]=i;N[a+16>>2]=h;J[a+8>>2]=c;J[a>>2]=b;J[a+4>>2]=Yi;d=1;break a}if(!f&(b|0)==4){b=bj(9386);J[a+8>>2]=7;J[a>>2]=b;J[a+4>>2]=Yi;J[a+16>>2]=J[c+240>>2];d=1;break a}d=b-5|0;if((b>>>0<5|0)==(f|0)&d>>>0<=3){rq(e,c+128|0);e:{f:{switch(b-6|0){default:h=N[e+24>>2];i=N[e+20>>2];j=N[e+16>>2];b=3;break e;case 0:k=N[e+12>>2];h=N[e+8>>2];i=N[e+4>>2];j=N[e>>2];b=4;break e;case 1:i=Q(N[e+36>>2]/Q(N[c+52>>2]*N[c+68>>2]));j=Q(N[e+32>>2]/Q(N[c+48>>2]*N[c+64>>2]));h=N[e+40>>2];b=3;break e;case 2:break f}}h=N[e+40>>2];i=N[e+36>>2];j=N[e+32>>2];b=3}J[a+8>>2]=b;b=bj(J[(d<<2)+224464>>2]);N[a+28>>2]=k;N[a+24>>2]=h;N[a+20>>2]=i;N[a+16>>2]=j;J[a>>2]=b;J[a+4>>2]=Yi;d=1;break a}d=0;if((b|0)!=9|f){break a}J[a+8>>2]=6;H[a+16|0]=H[c+246|0]&1;J[a>>2]=bj(75216);J[a+4>>2]=Yi;d=1}Ui=e+48|0;return d|0}}Z(145396,53895,487,84789);B()}function kA(a,b){var c=0,d=0,e=0,f=0;if(!(J[a+40>>2]|J[a+44>>2])){return-28928}c=-28928;f=J[a+108>>2];a:{if((J[a+100>>2]-f|0)+16749>>>0>>0){break a}b:{if(!(K[J[a>>2]+184|0]&2)){d=J[a+136>>2];if(d>>>0>>0){break b}return 0}if(!J[a+92>>2]|!J[a+96>>2]){break a}e=J[a+144>>2];if(e){d=J[a+136>>2];if(d>>>0>>0){return-27648}c=d-e|0;J[a+136>>2]=c;if((d|0)!=(e|0)){el(f,e+f|0,c)}J[a+144>>2]=0}c=b;b=J[a+136>>2];if(c>>>0<=b>>>0){return 0}if(b){return-27648}c:{b=J[a+96>>2];d:{if(b){if((Zi[b|0](J[a+88>>2])|0)==2){break d}}e=J[a+108>>2];b=J[a+100>>2]-e|0;if(J[a+4>>2]!=16){f=J[a+68>>2]+488|0}else{f=J[a>>2]+148|0}d=b+16749|0;c=J[a+48>>2];b=J[a+44>>2];e:{if(b){b=Zi[b|0](c,e,d,J[f>>2])|0;break e}b=Zi[J[a+40>>2]](c,e,d)|0}if(!b){return-29312}if((b|0)!=-26624){break c}}b=J[a+92>>2];if(b){Zi[b|0](J[a+88>>2],0,0)}c=-26624;if(J[a+4>>2]==16){break a}d=J[a+68>>2];e=J[d+488>>2];b=J[a>>2];f=J[b+156>>2];if(e>>>0>=f>>>0){break a}if((e|0)!=J[b+152>>2]){I[d+592>>1]=508}b=e<<1;J[d+488>>2]=(e|0)<0?f:b>>>0>>0?b:f;a=_r(a);return a?a:-26880}if((b|0)<0){return b}J[a+136>>2]=b;return 0}while(1){f:{c=J[a+96>>2];if(!c){break f}if((Zi[c|0](J[a+88>>2])|0)!=2){break f}return-26624}d=b-d|0;c=J[a+44>>2];g:{if(c){c=Zi[c|0](J[a+48>>2],J[a+108>>2]+J[a+136>>2]|0,d,J[J[a>>2]+148>>2])|0;break g}c=Zi[J[a+40>>2]](J[a+48>>2],J[a+108>>2]+J[a+136>>2]|0,d)|0}if(!c){return-29312}if((c|0)<0){break a}if(c>>>0>d>>>0){return-27648}d=J[a+136>>2]+c|0;J[a+136>>2]=d;c=0;if(b>>>0>d>>>0){continue}break}}return c}function OA(a,b,c){var d=0,e=0,f=0,g=0,h=0,i=0,j=0,k=0;i=Ui-80|0;Ui=i;while(1){d=J[a+12>>2]+(c<<4)|0;h=d-16|0;a:{b:{c:{d:{g=d-8|0;if(J[g>>2]-3>>>0>1){break d}switch(J[d+8>>2]-3|0){case 1:break b;case 0:break c;default:break d}}f=2;if(CE(a,h,d,h,15)){break a}e=Ui-48|0;Ui=e;g=J[h+8>>2];J[e+44>>2]=0;h=g-3>>>0<2?d:h;g=J[(J[h+8>>2]<<2)+257632>>2];j=J[a+20>>2];k=J[j+8>>2];e:{f:{d=J[j>>2];if(k>>>0<=d>>>0){break f}while(1){if((d|0)!=(h|0)){d=d+16|0;if(k>>>0>d>>>0){continue}break f}break}d=Zw(a,j,h-J[a+12>>2]>>4,e+44|0);if(!d){break f}J[e+20>>2]=d;J[e+24>>2]=J[e+44>>2];J[e+28>>2]=g;J[e+16>>2]=61817;xl(a,138999,e+16|0);break e}J[e+4>>2]=g;J[e>>2]=61817;xl(a,60935,e)}Ui=e+48|0;break a}O[i+32>>3]=O[d>>3];f=i+48|0;Sv(f,57516,i+32|0);f=zk(a,f,yj(f));J[d+8>>2]=4;J[d>>2]=f}e=J[J[d>>2]+12>>2];if(e){h=d+16|0;f=1;g:{if((b|0)<=1){break g}while(1){g=h-(f<<4)|0;d=g-16|0;h:{i:{j=g-8|0;switch(J[j>>2]-3|0){case 1:break h;case 0:break i;default:break g}}O[i+16>>3]=O[d>>3];g=i+48|0;Sv(g,57516,i+16|0);J[d>>2]=zk(a,g,yj(g));J[j>>2]=4}d=J[J[d>>2]+12>>2];if(d>>>0>=-3-e>>>0){xl(a,6491,0)}e=d+e|0;f=f+1|0;if((f|0)!=(b|0)){continue}break}f=b}d=0;g=lI(a,J[a+16>>2]+52|0,e);e=f;while(1){k=J[h-(e<<4)>>2];j=J[k+12>>2];hj(d+g|0,k+16|0,j);d=d+j|0;j=(e|0)>1;e=e-1|0;if(j){continue}break}e=zk(a,g,d);d=h-(f<<4)|0;J[d+8>>2]=4;J[d>>2]=e;break a}f=2;if(J[g>>2]!=3){break a}O[i>>3]=O[h>>3];e=i+48|0;Sv(e,57516,i);J[h>>2]=zk(a,e,yj(e));J[g>>2]=4}f=f-1|0;c=c-f|0;b=b-f|0;if((b|0)>1){continue}break}Ui=i+80|0}function Rpa(a,b,c,d){a=a|0;b=b|0;c=c|0;d=d|0;var e=Q(0),f=Q(0),g=Q(0),h=Q(0),i=0,j=Q(0),k=Q(0),l=Q(0),m=Q(0),n=Q(0),o=Q(0),p=Q(0),q=Q(0),r=Q(0),s=Q(0),t=Q(0),u=Q(0),v=Q(0),w=Q(0),x=Q(0),y=Q(0),z=Q(0);i=Ui-32|0;Ui=i;h=N[b+20>>2];r=N[b+36>>2];j=N[b+4>>2];s=N[b+24>>2];t=N[b+32>>2];n=N[b>>2];u=N[b+16>>2];x=N[b+40>>2];o=N[b+8>>2];J[i+28>>2]=0;g=Q(u-n);k=Q(r-j);e=Q(h-j);p=Q(t-n);f=Q(Q(g*k)-Q(e*p));l=e;e=Q(x-o);m=Q(s-o);k=Q(Q(l*e)-Q(m*k));g=Q(Q(m*p)-Q(g*e));e=Q(Q(o*f)+Q(Q(n*k)+Q(j*g)));v=N[a+12>>2];l=N[a+4>>2];q=N[a+8>>2];p=Q(Q(Q(f*v)+Q(Q(k*l)+Q(g*q)))-e);w=N[a+28>>2];y=N[a+20>>2];z=N[a+24>>2];e=Q(Q(Q(f*w)+Q(Q(k*y)+Q(g*z)))-e);a:{if(Q(p*e)>=Q(0)){break a}b=J[a+36>>2];if(b&1&p>Q(0)){break a}e=Q(p/Q(p-e));if(!(e>2])){break a}m=Q(Q(1)-e);l=Q(Q(m*l)+Q(y*e));n=Q(n-l);q=Q(Q(m*q)+Q(z*e));h=Q(h-q);j=Q(j-q);u=Q(u-l);m=Q(Q(m*v)+Q(w*e));s=Q(s-m);o=Q(o-m);w=Q(Q(f*f)+Q(Q(k*k)+Q(g*g)));v=Q(w*Q(-9999999747378752e-20));if(!(Q(Q(Q(Q(n*h)-Q(j*u))*f)+Q(Q(Q(Q(j*s)-Q(o*h))*k)+Q(g*Q(Q(o*u)-Q(n*s)))))>=v)){break a}r=Q(r-q);t=Q(t-l);q=Q(Q(Q(u*r)-Q(h*t))*f);l=h;h=Q(x-m);if(!(v<=Q(q+Q(Q(Q(Q(l*h)-Q(s*r))*k)+Q(g*Q(Q(s*t)-Q(u*h))))))|!(v<=Q(Q(Q(Q(t*j)-Q(r*n))*f)+Q(Q(Q(Q(r*o)-Q(h*j))*k)+Q(g*Q(Q(h*n)-Q(t*o))))))){break a}h=f;f=Q(Q(1)/Q(Y(w)));j=Q(h*f);N[i+24>>2]=j;g=Q(g*f);N[i+20>>2]=g;f=Q(k*f);N[i+16>>2]=f;if(b&2|p<=Q(0)){J[i+12>>2]=0;N[i+8>>2]=-j;N[i+4>>2]=-g;N[i>>2]=-f;N[a+40>>2]=Zi[J[J[a>>2]+12>>2]](a,i,e,c,d);break a}N[a+40>>2]=Zi[J[J[a>>2]+12>>2]](a,i+16|0,e,c,d)}Ui=i+32|0}function Rz(a,b,c){var d=0,e=0,f=0,g=0,h=0,i=0;d=a;h=rH(a);g=J[J[a>>2]+184>>2]&1;a:{if(!(g|J[a+4>>2]-1>>>0>=2)){a=h;break a}b:{c:{d:{e:{f=J[d+68>>2];if(f){e=L[f+592>>1];if(e){break e}}a=L[d+228>>1];e=a;break d}a=L[d+228>>1];if(!a){break c}e=a>>>0>>0?a:e}if(e&65535){break b}a=h;break a}a=0}f:{g:{if(!g){g=J[d+4>>2]-1>>>0<2;e=g?0:a;if(!f|g){break f}break g}if(f){break g}e=a;break f}e=L[f+592>>1];if(!e){e=a;break f}a=a&65535;e=a?a>>>0>>0?a:e:e}f=J[d+200>>2]-J[d+192>>2]|0;g=J[d+76>>2];h:{if(g){a=-27648;i=J[g+80>>2];if(!i){break h}i:{j:{switch(J[i+4>>2]-2|0){case 4:case 5:case 6:case 8:a=J[g>>2];break i;case 0:break j;default:break h}}a=J[i+24>>2];a=(a+J[g+12>>2]|0)+(J[d+20>>2]>1?a:0)|0}f=a+f|0}a=f;if((a|0)<0){break a}a=-28800;e=e&65535;if(e>>>0<=f>>>0){break h}a=e-f|0;a=a>>>0>h>>>0?h:a}}k:{if((a|0)<0){break k}l:{if(a>>>0>=c>>>0){break l}c=a;if(!(K[J[d>>2]+184|0]&2)){break l}return-28928}a=J[d+216>>2];m:{if(a){if(!J[d+36>>2]){return-28928}n:{while(1){a=Zi[J[d+36>>2]](J[d+48>>2],J[d+192>>2]-a|0,a)|0;if((a|0)<=0){break n}b=J[d+216>>2];if(b>>>0>>0){return-27648}a=b-a|0;J[d+216>>2]=a;if(a){continue}break}a=J[d>>2];b=J[d+184>>2]+((J[a+184>>2]^-1)<<2&8)|0;J[d+192>>2]=b;h=J[a+184>>2]&2;a=b+(h?13:5)|0;J[d+200>>2]=a;J[d+196>>2]=b+(h?11:3);J[d+188>>2]=b+(h?3:-8);b=J[d+76>>2];if(!(!b|J[d+20>>2]<2)){a=(J[b+4>>2]+a|0)-J[b+8>>2]|0}J[d+204>>2]=a;break m}if(!a){break m}break k}J[d+208>>2]=23;J[d+212>>2]=c;hj(J[d+204>>2],b,c);a=Nm(d,1);if(a){break k}}a=c}return a}function Ko(a,b,c){var d=0,e=0,f=0,g=Q(0),h=0,i=0,j=0,k=Q(0),l=Q(0),m=0,n=0,o=Q(0),p=Q(0),q=Q(0),r=Q(0),s=Q(0);a:{if(!(H[a+60|0]&1)){break a}d=J[J[a+32>>2]+(b<<2)>>2];if((d|0)==-1){break a}b:{c:{i=J[J[a+40>>2]+8>>2]+(d<<2)|0;h=L[i+2>>1];if(h>>>0<17){d=0;j=J[a+36>>2]+b|0;f=K[j|0];if(!h){break b}g=N[a+48>>2];d=J[a+56>>2];h=(b>>>0)/(d>>>0)|0;q=Q(N[a+28>>2]+Q(Q(g*Q(.5))+Q(Q(g*Q(h|0))+Q(Q(g*Q(M[a+52>>2]))*Q(-.5)))));g=N[a+44>>2];r=Q(N[a+24>>2]+Q(Q(g*Q(.5))+Q(Q(g*Q(b-P(d,h)|0))+Q(Q(g*Q(d>>>0))*Q(-.5)))));o=f&2?Q(-1):Q(1);p=f&1?Q(-1):Q(1);while(1){b=e<<3;d=b+c|0;f=(b+J[J[a+40>>2]>>2]|0)+(L[i>>1]<<3)|0;b=f;g=N[b>>2];b=J[b>>2];l=N[f+4>>2];f=J[f+4>>2];J[d>>2]=b;J[d+4>>2]=f;k=N[a+44>>2];d:{if(K[j|0]&4){k=Q(Q(o*k)*l);l=Q(-g);g=p;break d}k=Q(Q(p*k)*g);g=o}s=N[a+48>>2];N[d>>2]=r+k;N[d+4>>2]=q+Q(Q(g*s)*l);e=e+1|0;d=L[i+2>>1];if(e>>>0>>0){continue}break}break c}Z(105899,41688,135,25122);B()}f=K[j|0]}if(!(!((f^f>>>1)&1)|d>>>0<2)){b=d>>>1|0;f=b&1;a=0;if((b|0)!=1){j=b&32766;b=0;while(1){d=(a<<3)+c|0;h=J[d>>2];m=J[d+4>>2];e=(((a^-1)<<3)+c|0)+(L[i+2>>1]<<3)|0;n=J[e+4>>2];J[d>>2]=J[e>>2];J[d+4>>2]=n;J[e>>2]=h;J[e+4>>2]=m;h=J[d+8>>2];m=J[d+12>>2];e=(((a^536870910)<<3)+c|0)+(L[i+2>>1]<<3)|0;n=J[e+4>>2];J[d+8>>2]=J[e>>2];J[d+12>>2]=n;J[e>>2]=h;J[e+4>>2]=m;a=a+2|0;b=b+2|0;if((j|0)!=(b|0)){continue}break}}if(f){b=(a<<3)+c|0;d=J[b>>2];e=J[b+4>>2];a=(((a^-1)<<3)+c|0)+(L[i+2>>1]<<3)|0;c=J[a+4>>2];J[b>>2]=J[a>>2];J[b+4>>2]=c;J[a>>2]=d;J[a+4>>2]=e}d=L[i+2>>1]}e=d&65535}return e}function S$(a,b,c,d){a=a|0;b=b|0;c=c|0;d=d|0;var e=0,f=0,g=0,h=0,i=0,j=0,k=0,l=0,m=0,n=0,o=0,p=0;a:{f=875320;g=J[218836];b:{if(g){f=0;e=875320;if(J[218837]==(a|0)){break b}}c:{if(!J[218844]){e=875352;break c}e=0;if(J[218845]!=(a|0)){break c}e=875352;break b}d:{if(!J[218852]){h=875384;break d}if(J[218853]!=(a|0)){break d}e=875384;break b}e:{if(!J[218860]){i=875416;break e}if(J[218861]!=(a|0)){break e}e=875416;break b}f:{if(!J[218868]){j=875448;break f}if(J[218869]!=(a|0)){break f}e=875448;break b}g:{if(!J[218876]){k=875480;break g}if(J[218877]!=(a|0)){break g}e=875480;break b}h:{if(!J[218884]){l=875512;break h}if(J[218885]!=(a|0)){break h}e=875512;break b}i:{if(!J[218892]){m=875544;break i}if(J[218893]!=(a|0)){break i}e=875544;break b}j:{if(!J[218900]){n=875576;break j}if(J[218901]!=(a|0)){break j}e=875576;break b}k:{if(!J[218908]){o=875608;break k}if(J[218909]!=(a|0)){break k}e=875608;break b}l:{if(!J[218916]){p=875640;break l}if(J[218917]!=(a|0)){break l}e=875640;break b}e=g?e:f;e=e?e:h;e=e?e:i;e=e?e:j;e=e?e:k;e=e?e:l;e=e?e:m;e=e?e:n;e=e?e:o;e=e?e:p;if(!e){break a}J[e+24>>2]=e}f=J[e+4>>2];if(!d){if((f|0)!=6){break a}J[e+28>>2]=a;J[e+4>>2]=0;J[e+16>>2]=0;J[e+20>>2]=0;J[e+12>>2]=c;J[e+8>>2]=b;return}if((f|0)==6){J[e+24>>2]=0;return}if((f|0)==5){break a}a=(d|0)==4?3:d;g=(a|0)!=1;if(!g&(f|0)==3){break a}h=J[e+12>>2];J[e+12>>2]=c;i=J[e+8>>2];J[e+8>>2]=b;J[e+16>>2]=b-i;J[e+20>>2]=c-h;if(!(f|g)){break a}if(!(f|(a|0)!=3)){J[e+4>>2]=5;return}J[e+4>>2]=d}}function Qr(a,b,c,d,e,f){var g=0,h=0,i=0,j=0,k=0,l=0,m=0,n=0;a:{b:{switch(d|0){case 2:c=J[c>>2];b=b-4|0;d=J[b>>2];e=c+(d<<3)|0;f=J[e>>2];i=J[a>>2];c=c+(i<<3)|0;g=J[c>>2];e=J[e+4>>2];c=J[c+4>>2];if((e|0)==(c|0)&f>>>0>=g>>>0|c>>>0>>0){break a}J[a>>2]=d;J[b>>2]=i;return;case 0:case 1:break a;default:break b}}if((d|0)<=128){if((a|0)==(b|0)){break a}e=a+4|0;if((e|0)==(b|0)){break a}g=J[c>>2];d=a;while(1){i=e;c=e;l=J[d+4>>2];h=g+(l<<3)|0;e=h;j=J[e>>2];f=J[d>>2];k=g+(f<<3)|0;m=J[k>>2];e=J[e+4>>2];k=J[k+4>>2];if((e|0)==(k|0)&j>>>0>>0|e>>>0>>0){while(1){c:{J[c>>2]=f;e=d;if((e|0)==(a|0)){e=a;break c}c=e;d=e-4|0;f=J[d>>2];j=g+(f<<3)|0;k=J[j>>2];m=J[h+4>>2];j=J[j+4>>2];if((m|0)==(j|0)&k>>>0>M[h>>2]|j>>>0>m>>>0){continue}}break}J[e>>2]=l}d=i;e=d+4|0;if((e|0)!=(b|0)){continue}break}break a}g=d>>>1|0;h=d-g|0;l=g<<2;i=l+a|0;d:{if((d|0)<=(f|0)){yF(a,i,c,g,e);f=b;b=e+l|0;yF(i,f,c,h,b);i=(d<<2)+e|0;l=J[c>>2];d=b;while(1){if((d|0)!=(i|0)){g=J[d>>2];h=l+(g<<3)|0;c=J[h>>2];j=J[e>>2];k=l+(j<<3)|0;f=J[k>>2];m=g;n=j;g=J[h+4>>2];h=J[k+4>>2];j=(g|0)==(h|0)&c>>>0>>0|g>>>0>>0;J[a>>2]=j?m:n;d=(j<<2)+d|0;a=a+4|0;e=(((g|0)==(h|0)&c>>>0>=f>>>0|g>>>0>h>>>0)<<2)+e|0;if((b|0)!=(e|0)){continue}break d}break}if((b|0)==(e|0)){break a}while(1){J[a>>2]=J[e>>2];a=a+4|0;e=e+4|0;if((b|0)!=(e|0)){continue}break}break a}Qr(a,i,c,g,e,f);Qr(i,b,c,h,e,f);Lz(a,i,b,c,g,h,e,f);return}if((d|0)==(i|0)){break a}while(1){J[a>>2]=J[d>>2];a=a+4|0;d=d+4|0;if((i|0)!=(d|0)){continue}break}}}function jJ(a,b,c){var d=0,e=0,f=0,g=0,h=0,i=0,j=0;f=Ui-1072|0;Ui=f;d=J[a+8>>2]-J[a+12>>2]>>4;J[b>>2]=J[b>>2]&-49;a:{b:{if((d|0)==1){g=c+1|0;d=qw(a,b);break b}Gp(a,d+19|0,18233);i=d-2|0;g=c;while(1){c:{if((kj(a,g)|0)==3){d=sl(a,g);if(!d){d=gl(b);aG(d,b);mj(a,0,0);e=(d|0)!=-1;break c}e=f+32|0;J[e+4>>2]=0;J[e+8>>2]=a;J[e>>2]=e+12;e=1024;while(1){d:{e=d>>>0>e>>>0?e:d;h=Sl(_l(f+32|0),1,e,b);J[f+32>>2]=h+J[f+32>>2];d=d-h|0;if((e|0)!=(h|0)){break d}if(d){continue}}break}Ym(f+32|0);e=1;if(!d){break c}e=(fl(a,-1)|0)!=0;break c}d=Ij(a,g,0);if(!(K[d|0]==42?d:0)){Dk(a,g,45048)}e:{switch(K[d+1|0]-97|0){case 13:J[f+16>>2]=f+32;d=Ui-16|0;Ui=d;e=f+16|0;J[d+12>>2]=e;h=ZF(b,57612,e);Ui=d+16|0;e=0;if((h|0)!=1){break c}j=O[f+32>>3];d=J[a+8>>2];J[d+8>>2]=3;O[d>>3]=j;J[a+8>>2]=J[a+8>>2]+16;e=1;break c;case 0:d=f+32|0;J[d+4>>2]=0;J[d+8>>2]=a;J[d>>2]=d+12;d=-1;e=1024;while(1){f:{e=d>>>0>e>>>0?e:d;h=Sl(_l(f+32|0),1,e,b);J[f+32>>2]=h+J[f+32>>2];d=d-h|0;if((e|0)!=(h|0)){break f}if(d){continue}}break};Ym(f+32|0);if(d){fl(a,-1)}e=1;break c;default:a=Dk(a,g,17031);break a;case 11:break e}}e=qw(a,b)}d=e;g=g+1|0;if(!i){break b}i=i-1|0;if(d){continue}break}}if(J[b+76>>2]<0){b=J[b>>2]}else{b=J[b>>2]}if(b>>>5&1){b=J[245744];c=J[a+8>>2];J[c+8>>2]=0;J[a+8>>2]=c+16;J[f>>2]=L[((b>>>0<=153?b:0)<<1)+215472>>1]+213556;ik(a,31902,f);c=J[a+8>>2];J[c+8>>2]=3;O[c>>3]=b|0;J[a+8>>2]=J[a+8>>2]+16;a=3;break a}if(!d){gj(a,-2);b=J[a+8>>2];J[b+8>>2]=0;J[a+8>>2]=b+16}a=g-c|0}Ui=f+1072|0;return a}function uV(a,b,c){var d=0,e=0,f=0,g=0,h=0,i=0;d=Ui-80|0;Ui=d;if(J[b+8>>2]-6>>>0>=4){qk(a,32659)}i=b+8|0;a:{b:{c:{d:{e:{f:{e=J[a+16>>2]-44|0;if(e){if((e|0)==17){break e}break f}tk(a);J[d+48>>2]=b;aA(a,d+56|0);if(J[d+56>>2]!=6){break c}f=J[a+48>>2];g=J[f+36>>2];while(1){g:{if(J[b+8>>2]==9){e=J[d+64>>2];if((e|0)==J[b+16>>2]){J[b+16>>2]=g;h=1;e=J[d+64>>2]}if(J[b+20>>2]==(e|0)){break g}}b=J[b>>2];if(b){continue}if(!h){break c}e=J[d+64>>2];break d}J[b+20>>2]=g;h=1;b=J[b>>2];if(b){continue}break}break d}b=J[a+52>>2];J[d>>2]=Cl(a,61);qk(a,gk(b,74053,d))}tk(a);Il(a,d+48|0,0);b=1;if(J[a+16>>2]==44){while(1){tk(a);e=d+48|0;kn(J[a+48>>2],e);Il(a,e,0);b=b+1|0;if(J[a+16>>2]==44){continue}break}}e=J[a+48>>2];if((b|0)!=(c|0)){fF(e,c,b,d+48|0);if((b|0)<=(c|0)){break b}e=J[a+48>>2];J[e+36>>2]=J[e+36>>2]+(c-b|0);break b}h:{i:{switch(J[d+48>>2]-13|0){case 0:J[d+48>>2]=12;J[d+56>>2]=J[J[J[e>>2]+12>>2]+(J[d+56>>2]<<2)>>2]>>>6&255;break h;case 1:break i;default:break h}}b=J[J[e>>2]+12>>2]+(J[d+56>>2]<<2)|0;J[b>>2]=J[b>>2]&8388607|16777216;J[d+48>>2]=11}a=J[a+48>>2];break a}tm(f,0,J[f+36>>2],e,0);fr(f,1)}b=200-L[J[a+52>>2]+52>>1]|0;if((b|0)<(c|0)){e=J[a+48>>2];f=J[e+16>>2];g=J[J[e>>2]+60>>2];j:{if(!g){J[d+16>>2]=b;J[d+20>>2]=13739;b=gk(f,27750,d+16|0);break j}J[d+36>>2]=b;J[d+32>>2]=g;J[d+40>>2]=13739;b=gk(f,27784,d+32|0)}Wn(J[e+12>>2],b,0)}uV(a,d+48|0,c+1|0)}a=J[a+48>>2];b=J[a+36>>2];J[d+48>>2]=12;J[d+64>>2]=-1;J[d+68>>2]=-1;J[d+56>>2]=b-1}SA(a,i,d+48|0);Ui=d+80|0}function Sx(a,b,c,d,e,f){var g=0,h=0,i=0,j=0,k=0,l=0,m=0,n=0;l=Ui-16|0;Ui=l;j=a+2208|0;n=(c|0)!=-1;a:{b:{c:{d:{while(1){e:{if(!n){i=J[b+16>>2];g=J[b+20>>2]-i|0;break e}g=c-k|0;i=J[b+16>>2];h=J[b+20>>2]-i|0;g=(g|0)<(h|0)?g:h}Zi[d|0](b,J[a+2132>>2],J[b+12>>2],i+j|0,g,J[b+24>>2],f);f:{if(!e){break f}h=J[b+100>>2];if(!h){break f}m=J[b+16>>2]+j|0;i=Ui-16|0;Ui=i;g:{if(!(!J[h+4>>2]|!J[h>>2])){em(h+8|0,m,g);h:{if(H[h+58|0]&1){break h}if((yl(m,1,g,J[h+4>>2])|0)==(g|0)){break h}J[i>>2]=J[h>>2];dj(4,99340,149447,i);H[h+58|0]=K[h+58|0]|1}Ui=i+16|0;break g}Z(65871,41889,529,76114);B()}}k=g+k|0;if((c|0)!=-1&(k|0)>(c|0)){break d}g=J[b+16>>2]+g|0;J[b+16>>2]=g;if((c|0)==(k|0)){el(j,g+j|0,J[b+20>>2]-g|0);a=J[b+16>>2];J[b+16>>2]=0;J[b+20>>2]=J[b+20>>2]-a;k=c;break b}if((g|0)!=J[b+20>>2]){break c}J[b+16>>2]=0;J[b+20>>2]=0;i:{j:{k:{g=J[b+116>>2];l:{if(g){g=NB(g,j,65536,l+12|0);break l}g=tB(J[b+112>>2],j,65536,l+12|0)}g=(g|0)==-3?-101:g;i=g+5|0;switch(i|0){case 1:case 2:case 3:case 4:break i;case 5:break j;case 0:break b;default:break k}}if((g|0)!=-101){break i}}h=J[a+2204>>2];if(J[h>>2]?h:0){break i}if(J[a+2160>>2]){h=bl()-J[a+2168>>2]|0;if((h|0)>=J[a+2160>>2]){break i}}m:{switch(i|0){case 5:g=J[l+12>>2];if(!g){break b}J[b+20>>2]=g;continue;case 1:case 2:case 3:case 4:break i;case 0:break b;default:break m}}if((g|0)==-101){continue}}break}a=-1;break a}Z(110486,38120,667,34411);B()}Z(112828,38120,679,34411);B()}a=(c|0)!=-1?(c|0)!=(k|0)?-4:0:0}Ui=l+16|0;return a}function GB(a,b){var c=0,d=0,e=0,f=0,g=0,h=0;a:{if(a){if(K[b+28|0]&2){break a}c=J[b+8>>2];J[b+8>>2]=0;if(Hm(c)){Fl(c)}d=L[b+12>>1];c=J[a+56>>2];b:{if(!c){break b}f=J[a+52>>2];e=f;b=c;while(1){g=(b&-2)+e|0;h=d>>>0>L[g>>1];e=h?g+2|0:e;g=b;b=b>>>1|0;b=h?g+(b^-1)|0:b;if(b){continue}break}b=f+(c<<1)|0;if((d|0)!=L[e>>1]|b>>>0<=e>>>0){break b}el(e,e+2|0,(b-e|0)-2|0);J[a+56>>2]=J[a+56>>2]-1}c:{d:{e:{f:{g:{b=J[a+16>>2];if(d>>>0>2]-b>>3>>>0){h=J[a>>2];e=J[a+4>>2]-h>>5;f=e-1|0;c=J[a+32>>2];if(f>>>0>=J[a+36>>2]-c>>2>>>0){break d}g=e;e=b+(d<<3)|0;b=J[e>>2];if(g>>>0<=b>>>0){break g}c=J[c+(f<<2)>>2];b=h+(b<<5)|0;J[b>>2]=0;J[b+4>>2]=0;J[b+24>>2]=0;J[b+28>>2]=0;J[b+16>>2]=0;J[b+20>>2]=0;J[b+8>>2]=0;J[b+12>>2]=0;b=J[a+16>>2];if(c>>>0>=J[a+20>>2]-b>>3>>>0){break d}f=b+(c<<3)|0;b=J[e>>2];J[f>>2]=b;d=J[a+32>>2];if(b>>>0>=J[a+36>>2]-d>>2>>>0){break d}J[d+(b<<2)>>2]=c;d=J[e>>2];c=J[a+4>>2];b=J[a>>2];if(d>>>0>=c-b>>5>>>0){break f}b=b+(d<<5)|0;c=c-32|0;d=J[c+4>>2];J[b>>2]=J[c>>2];J[b+4>>2]=d;d=J[c+28>>2];J[b+24>>2]=J[c+24>>2];J[b+28>>2]=d;d=J[c+20>>2];J[b+16>>2]=J[c+16>>2];J[b+20>>2]=d;d=J[c+12>>2];J[b+8>>2]=J[c+8>>2];J[b+12>>2]=d;b=J[a+4>>2]-32|0;J[a+4>>2]=b;if(b>>>0>2]){break e}J[e+4>>2]=J[a+48>>2];J[a+48>>2]=e-J[a+16>>2]>>3;break c}break d}Z(59182,54416,152,68876);B()}Z(145381,53895,537,43537);B()}Z(12682,53895,540,43537);B()}Z(145396,53895,487,84789);B()}H[a+82|0]=K[a+82|0]|2;return}Z(111373,39844,148,33995);B()}Z(113035,39844,149,33995);B()}function FR(a,b,c,d,e){var f=Q(0),g=0,h=0,i=Q(0),j=Q(0),k=Q(0),l=Q(0),m=Q(0),n=Q(0),o=Q(0),p=Q(0),q=Q(0),r=Q(0),s=0,t=Q(0),u=Q(0),v=Q(0),w=Q(0),x=Q(0),y=Q(0),z=Q(0),A=Q(0),C=Q(0);a:{if(!(!e|(c|0)==32767)){s=J[a>>2];while(1){c=c&65535;g=J[s+1036>>2];if(c>>>0>=J[s+1040>>2]-g>>2>>>0){break a}b:{c=J[g+(c<<2)>>2];if(!(K[c+137|0]&4)){break b}g=P(h,48)+d|0;f=N[g>>2];N[c>>2]=f;i=N[g+4>>2];N[c+4>>2]=i;j=N[g+8>>2];N[c+8>>2]=j;o=N[g+12>>2];N[c+12>>2]=o;t=N[g+16>>2];N[c+16>>2]=t;u=N[g+20>>2];N[c+20>>2]=u;v=N[g+24>>2];N[c+24>>2]=v;w=N[g+32>>2];N[c+32>>2]=w;x=N[g+36>>2];N[c+36>>2]=x;r=N[g+40>>2];N[c+40>>2]=r;if(!(h|!b)){y=N[b+16>>2];z=N[b+20>>2];A=N[b+24>>2];k=N[b+8>>2];l=N[b+4>>2];m=N[b+12>>2];n=N[b>>2];p=N[b+32>>2];q=N[b+36>>2];C=r;r=N[b+40>>2];N[c+40>>2]=C*r;N[c+36>>2]=x*q;N[c+32>>2]=w*p;N[c+12>>2]=Q(Q(Q(m*o)-Q(n*f))-Q(l*i))-Q(k*j);N[c+8>>2]=Q(Q(n*i)+Q(Q(m*j)+Q(o*k)))-Q(l*f);N[c+4>>2]=Q(Q(k*f)+Q(Q(m*i)+Q(o*l)))-Q(n*j);N[c>>2]=Q(Q(l*j)+Q(Q(m*f)+Q(o*n)))-Q(k*i);f=Q(u*q);i=Q(t*p);j=Q(v*r);o=Q(Q(Q(m*f)+Q(k*i))-Q(n*j));p=Q(Q(k*j)+Q(Q(n*i)+Q(l*f)));q=Q(Q(Q(m*j)+Q(n*f))-Q(l*i));f=Q(Q(Q(m*i)+Q(l*j))-Q(k*f));N[c+24>>2]=A+Q(Q(n*o)+Q(Q(Q(k*p)+Q(m*q))-Q(l*f)));N[c+20>>2]=z+Q(Q(f*k)+Q(Q(Q(p*l)+Q(m*o))-Q(q*n)));N[c+16>>2]=y+Q(Q(q*l)+Q(Q(Q(p*n)+Q(m*f))-Q(o*k)))}h=h+1|0;if(h>>>0>>0){h=FR(a,0,L[c+150>>1]&32767,P(h,48)+d|0,e-h|0)+h|0}if((e|0)!=(h|0)){break b}return e}c=J[c+148>>2]&32767;if((c|0)!=32767){continue}break}}return h}Z(145396,53895,487,84789);B()}function wQ(a){var b=0,c=0,d=0,e=0,f=0,g=0,h=0,i=0,j=0,k=0,l=0,m=0,n=0,o=0,p=0;d=J[a+156>>2];j=J[d+4>>2];f=J[j+8>>2];c=P(P(f,J[d+28>>2]),J[d+32>>2]&2147483647);b=J[a+100>>2];if(b){cj(b)}b=c<<1;e=nj((c|0)<0?-1:b);J[a+100>>2]=e;ij(e,255,b);b=J[a+104>>2];if(b){cj(b)}b=nj(c);J[a+104>>2]=b;ij(b,0,c);a:{b:{c:{d:{e:{if(!(H[a+136|0]&1)){c=J[d+32>>2];l=J[d+28>>2];m=J[d+40>>2];n=J[d+36>>2];lj(f,1,a+124|0,a+132|0,a+128|0);b=J[a+124>>2];if(J[a+132>>2]-b>>>0>>0){break b}J[a+128>>2]=b+f;if(f){o=c&2147483647;c=0;while(1){if(M[j+8>>2]<=c>>>0){break e}b=J[a+124>>2];if(J[a+128>>2]-b>>>0<=c>>>0){break a}b=b+c|0;i=J[j+4>>2]+(c<<5)|0;H[b|0]=K[b|0]&254|H[i+8|0]&1;k=J[i+28>>2];if(k){p=P(c,o)-m|0;g=0;while(1){if(M[i+28>>2]<=g>>>0){break d}e=J[i+24>>2]+P(g,24)|0;b=P(J[e+4>>2]+p|0,l)+(J[e>>2]-n|0)|0;I[J[a+100>>2]+(b<<1)>>1]=J[e+8>>2];h=b+J[a+104>>2]|0;b=K[h|0]&-8;H[h|0]=b;if(J[e+12>>2]){b=b|1;H[h|0]=b}if(J[e+16>>2]){b=b|2;H[h|0]=b}if(J[e+20>>2]){H[h|0]=b|4}g=g+1|0;if((k|0)!=(g|0)){continue}break}}c=c+1|0;if((f|0)!=(c|0)){continue}break}}c=J[d+28>>2]+31>>>5|0;I[a+160>>1]=c;d=J[d+32>>2]+31>>>5|0;I[a+162>>1]=d;if(H[a+120|0]&1){break c}d=P(d&65535,c&65535);lj(d,1,a+108|0,a+116|0,a+112|0);c=J[a+108>>2];if(d>>>0>J[a+116>>2]-c>>>0){break b}J[a+112>>2]=c+d;if(!d){break a}ij(c,255,d);I[a+164>>1]=vP(a);return f}break c}Z(12664,55417,190,84789);B()}Z(12664,55417,165,84789);B()}Z(151729,53895,501,2284);B()}Z(144782,53895,514,59583);B()}Z(145396,53895,487,84789);B()}function qo(a,b,c,d,e){var f=0,g=0,h=0,i=0;g=-24832;f=J[a>>2];a:{if(!f){break a}J[e>>2]=0;h=J[f+24>>2];b:{c:{d:{i=J[f+4>>2];switch(i-1|0){case 5:break c;case 0:break d;default:break b}}if((c|0)!=(h|0)){return-25216}J[e>>2]=c;return Zi[J[J[f+28>>2]+4>>2]](J[a+60>>2],J[a+8>>2],b,d)|0}J[e>>2]=c;return AA(J[a+60>>2],c,b,d)}if(J[f>>2]==73){J[e>>2]=c;return YH(J[a+60>>2],c,b,d)}if(!h){return-25472}if((b|0)==(d|0)){if(J[a+36>>2]|(c>>>0)%(h>>>0)){break a}}g=-24704;e:{f:{g:{h:{switch(i-2|0){case 0:i:{j:{k:{switch(J[a+8>>2]){case 0:f=J[a+36>>2];g=h-f|0;if(!J[a+12>>2]){break j}if(c>>>0<=g>>>0){break f}break i;case 1:break k;default:break i}}f=J[a+36>>2];if(h-f>>>0<=c>>>0){break i}break f}if(c>>>0>>0){break f}}f=J[a+36>>2];if(f){g=a+20|0;i=g+f|0;f=h-f|0;hj(i,b,f);g=Zi[J[J[J[a>>2]+28>>2]+8>>2]](J[a+60>>2],J[a+8>>2],h,a+40|0,g,d)|0;if(g){break a}J[e>>2]=h+J[e>>2];J[a+36>>2]=0;c=c-f|0;d=d+h|0;b=b+f|0}g=0;if(!c){break a}f=(c>>>0)%(h>>>0)|0;l:{if(f){break l}f=0;if(J[a+8>>2]){break l}f=J[a+12>>2]?h:0}h=c-f|0;hj(a+20|0,h+b|0,f);J[a+36>>2]=J[a+36>>2]+f;if((c|0)==(f|0)){break a}g=Zi[J[J[J[a>>2]+28>>2]+8>>2]](J[a+60>>2],J[a+8>>2],h,a+40|0,b,d)|0;if(g){break a}J[e>>2]=h+J[e>>2];break e;case 1:g=Zi[J[J[f+28>>2]+12>>2]](J[a+60>>2],J[a+8>>2],c,a+36|0,a+40|0,b,d)|0;if(!g){break g}break a;case 5:break h;default:break a}}g=Zi[J[J[f+28>>2]+16>>2]](J[a+60>>2],c,b,d)|0;if(g){break a}}J[e>>2]=c;break e}hj((a+f|0)+20|0,b,c);J[a+36>>2]=J[a+36>>2]+c}g=0}return g}function sqa(a,b,c){a=a|0;b=b|0;c=c|0;XT(a,b,c);N[b+248>>2]=N[a+256>>2];N[b+252>>2]=N[a+260>>2];N[b+256>>2]=N[a+264>>2];N[b+260>>2]=N[a+268>>2];N[b+264>>2]=N[a+272>>2];N[b+268>>2]=N[a+276>>2];N[b+272>>2]=N[a+280>>2];N[b+276>>2]=N[a+284>>2];N[b+280>>2]=N[a+288>>2];N[b+284>>2]=N[a+292>>2];N[b+288>>2]=N[a+296>>2];N[b+292>>2]=N[a+300>>2];N[b+296>>2]=N[a+304>>2];N[b+300>>2]=N[a+308>>2];N[b+304>>2]=N[a+312>>2];N[b+308>>2]=N[a+316>>2];N[b+312>>2]=N[a+320>>2];N[b+316>>2]=N[a+324>>2];N[b+320>>2]=N[a+328>>2];N[b+324>>2]=N[a+332>>2];N[b+440>>2]=N[a+336>>2];N[b+328>>2]=N[a+536>>2];N[b+332>>2]=N[a+540>>2];N[b+336>>2]=N[a+544>>2];N[b+340>>2]=N[a+548>>2];N[b+344>>2]=N[a+340>>2];N[b+348>>2]=N[a+344>>2];N[b+352>>2]=N[a+348>>2];N[b+356>>2]=N[a+352>>2];N[b+360>>2]=N[a+356>>2];N[b+364>>2]=N[a+360>>2];N[b+368>>2]=N[a+364>>2];N[b+372>>2]=N[a+368>>2];N[b+376>>2]=N[a+372>>2];N[b+380>>2]=N[a+376>>2];N[b+384>>2]=N[a+380>>2];N[b+388>>2]=N[a+384>>2];N[b+392>>2]=N[a+388>>2];N[b+396>>2]=N[a+392>>2];N[b+400>>2]=N[a+396>>2];N[b+404>>2]=N[a+400>>2];N[b+408>>2]=N[a+404>>2];N[b+412>>2]=N[a+408>>2];N[b+416>>2]=N[a+412>>2];N[b+420>>2]=N[a+416>>2];N[b+424>>2]=N[a+420>>2];N[b+428>>2]=N[a+424>>2];N[b+432>>2]=N[a+428>>2];N[b+436>>2]=N[a+432>>2];N[b+444>>2]=N[a+436>>2];N[b+448>>2]=N[a+440>>2];J[b+476>>2]=K[a+444|0];N[b+452>>2]=N[a+448>>2];N[b+456>>2]=N[a+452>>2];N[b+460>>2]=N[a+456>>2];N[b+464>>2]=N[a+460>>2];N[b+468>>2]=N[a+464>>2];N[b+472>>2]=N[a+468>>2];return 83471}function aja(a,b,c,d){a=a|0;b=b|0;c=c|0;d=d|0;var e=0,f=0,g=0;d=Ui-112|0;Ui=d;e=J[c+164>>2];J[d+40>>2]=J[c+160>>2];J[d+44>>2]=e;e=J[c+156>>2];J[d+32>>2]=J[c+152>>2];J[d+36>>2]=e;e=J[c+148>>2];J[d+24>>2]=J[c+144>>2];J[d+28>>2]=e;e=J[c+140>>2];J[d+16>>2]=J[c+136>>2];J[d+20>>2]=e;a:{if(!a){J[d+104>>2]=0;J[d+108>>2]=0;J[d+96>>2]=0;J[d+100>>2]=0;J[d+88>>2]=0;J[d+92>>2]=0;a=J[J[J[c>>2]+80>>2]+8>>2];b:{if(!a){break b}a=J[a>>2];if(!a){break b}f=J[a+3216>>2];g=J[a+3220>>2]}J[d+80>>2]=f;J[d+84>>2]=g;c:{if(Pp(f,g)){if(!Go(J[c>>2],L[c+260>>1],d+104|0)){break c}}dj(4,88458,115301,0);break a}f=J[c>>2];g=J[f+100>>2];a=d- -64|0;J[a>>2]=J[f+96>>2];J[a+4>>2]=g;a=J[d+92>>2];J[d+56>>2]=J[d+88>>2];J[d+60>>2]=a;a=J[d+108>>2];J[d+72>>2]=J[d+104>>2];J[d+76>>2]=a;a=J[d+84>>2];J[d+48>>2]=J[d+80>>2];J[d+52>>2]=a;a=J[59872];f=J[a+8>>2];g=J[a+12>>2];e=J[b+4>>2];J[d+80>>2]=J[b>>2];J[d+84>>2]=e;J[d+88>>2]=J[b+8>>2];a=Jk(d+48|0,d+16|0,f,g,0,J[c+168>>2],a,d+80|0,16,0);H[c+136|0]=0;H[c+137|0]=0;H[c+138|0]=0;H[c+139|0]=0;H[c+140|0]=0;H[c+141|0]=0;H[c+142|0]=0;H[c+143|0]=0;H[c+160|0]=0;H[c+161|0]=0;H[c+162|0]=0;H[c+163|0]=0;H[c+164|0]=0;H[c+165|0]=0;H[c+166|0]=0;H[c+167|0]=0;H[c+152|0]=0;H[c+153|0]=0;H[c+154|0]=0;H[c+155|0]=0;H[c+156|0]=0;H[c+157|0]=0;H[c+158|0]=0;H[c+159|0]=0;H[c+144|0]=0;H[c+145|0]=0;H[c+146|0]=0;H[c+147|0]=0;H[c+148|0]=0;H[c+149|0]=0;H[c+150|0]=0;H[c+151|0]=0;if(!a){break a}dj(4,88458,119151,0);break a}J[d>>2]=a;dj(4,88458,133208,d)}Ui=d+112|0}function Zqa(a,b,c,d){a=a|0;b=b|0;c=c|0;d=d|0;var e=0,f=0,g=0,h=0,i=0,j=0,k=0,l=0;J[83476]=J[83476]+1;e=J[b+12>>2]>J[c+12>>2];h=e?b:c;f=J[h+12>>2];i=e?c:b;e=J[i+12>>2];b=f<<16|e;b=(b<<15^-1)+b|0;b=P(b>>10^b,9);b=b>>6^b;b=(b<<11^-1)+b|0;j=J[a+12>>2]-1&(b>>16^b);c=J[J[a+44>>2]+(j<<2)>>2];a:{if((c|0)==-1){break a}g=J[a+64>>2];k=J[a+16>>2];while(1){b=k+(c<<4)|0;if(!((e|0)==J[J[b>>2]+12>>2]&(f|0)==J[J[b+4>>2]+12>>2])){c=J[g+(c<<2)>>2];if((c|0)!=-1){continue}break a}break}Zi[J[J[a>>2]+32>>2]](a,b,d);l=J[b+12>>2];b:{c:{f=J[a+44>>2]+(j<<2)|0;c=J[f>>2];j=b-J[a+16>>2]|0;e=j>>4;if((c|0)==(e|0)){break c}g=J[a+64>>2];while(1){b=c;c=J[g+(b<<2)>>2];if((e|0)!=(c|0)){continue}break}if((b|0)==-1){break c}c=b<<2;b=J[a+64>>2];J[c+b>>2]=J[b+(e<<2)>>2];break b}J[f>>2]=J[J[a+64>>2]+(e<<2)>>2]}f=J[a+8>>2]-1|0;b=J[a+72>>2];if(b){Zi[J[J[b>>2]+12>>2]](b,i,h,d)|0}if((e|0)!=(f|0)){d:{e:{h=J[a+16>>2];d=h+(f<<4)|0;b=J[J[d+4>>2]+12>>2]<<16|J[J[d>>2]+12>>2];b=(b<<15^-1)+b|0;b=P(b>>10^b,9);b=b>>6^b;b=(b<<11^-1)+b|0;i=J[a+12>>2]-1&(b>>16^b);g=J[a+44>>2]+(i<<2)|0;c=J[g>>2];if((f|0)==(c|0)){break e}k=J[a+64>>2];while(1){b=c;c=J[k+(b<<2)>>2];if((f|0)!=(c|0)){continue}break}if((b|0)==-1){break e}c=b<<2;b=J[a+64>>2];J[c+b>>2]=J[b+(f<<2)>>2];break d}J[g>>2]=J[J[a+64>>2]+(f<<2)>>2]}c=J[d+4>>2];b=h+j|0;J[b>>2]=J[d>>2];J[b+4>>2]=c;c=J[d+12>>2];J[b+8>>2]=J[d+8>>2];J[b+12>>2]=c;b=J[a+44>>2]+(i<<2)|0;J[J[a+64>>2]+(e<<2)>>2]=J[b>>2];J[b>>2]=e}J[a+8>>2]=J[a+8>>2]-1}return l|0}function t7(a){a=a|0;var b=0,c=0,d=0,e=0,f=0,g=0,h=0,i=0,j=0,k=0,l=0,m=0,n=0,o=0,p=0,q=0;h=Ui-32|0;Ui=h;k=1;l=pj(h+12|0,a,1,41468,312);i=Aj(a,1,0);a:{if(K[i|0]==95){J[h>>2]=i;k=Jj(l,28299,h);break a}g=Ui-16|0;Ui=g;b=-12;if(K[981584]==1){b=J[245390];m=J[b+52>>2];Tj(m);j=Ui-16|0;Ui=j;n=J[b+52>>2];Tj(n);d=-3;b:{c:{d:{f=J[b+4>>2];e=J[b>>2];e:{if((f|0)==(e|0)){break e}f=f-e>>4;q=f>>>0<=1?1:f;while(1){if((c|0)==(f|0)){break d}o=c<<4;p=e+o|0;if(!jj(J[p>>2],i)){wx(J[p+4>>2]);f=c;c=J[b+4>>2];e=J[b>>2];if(f>>>0>=c-e>>4>>>0){break e}d=e+o|0;c=c-16|0;e=J[c+4>>2];J[d>>2]=J[c>>2];J[d+4>>2]=e;e=J[c+12>>2];J[d+8>>2]=J[c+8>>2];J[d+12>>2]=e;c=J[b+4>>2]-16|0;J[b+4>>2]=c;e=J[b>>2];if(e>>>0>c>>>0){break c}d=0;bw(e,c,j+15|0,(c|0)!=(e|0)?62-(S(c-e>>4)<<1)|0:0,1);break e}c=c+1|0;if((q|0)!=(c|0)){continue}break}}Lj(n);Ui=j+16|0;break b}Z(145396,53895,487,84789);B()}Z(12682,53895,540,43537);B()}f:{g:{if(d){b=d+21|0;if(b>>>0>21){b=97515}else{b=J[(b<<2)+223356>>2]}J[g+8>>2]=d;J[g+4>>2]=b;J[g>>2]=i;dj(4,95071,140592,g);b=-3;h:{switch(d+20|0){case 1:b=-4;break f;case 0:b=-6;break f;case 5:b=-7;break f;case 19:break h;case 18:break g;default:break f}}b=-8;break f}d=Mu(b);if(!d){b=0;break f}dj(4,95071,66494,0);b=-3;i:{switch(d+20|0){case 1:b=-4;break f;case 0:b=-6;break f;case 5:b=-7;break f;case 19:break i;case 18:break g;default:break f}}b=-8;break f}b=-9}Lj(m)}Ui=g+16|0;d=J[a+8>>2];J[d+8>>2]=3;O[d>>3]=b|0;J[a+8>>2]=J[a+8>>2]+16}oj(l);Ui=h+32|0;return k|0}function mV(a,b,c,d,e){var f=Q(0),g=Q(0),h=Q(0),i=Q(0),j=Q(0),k=Q(0),l=Q(0),m=Q(0),n=Q(0),o=Q(0),p=Q(0),q=Q(0),r=Q(0),s=Q(0),t=Q(0);J[a+68>>2]=0;i=Q(N[b+8>>2]+N[d+8>>2]);a:{f=N[b+32>>2];n=N[b+24>>2];g=Q(f-n);l=N[c+12>>2];k=N[e+12>>2];h=N[d+24>>2];j=N[e+8>>2];o=N[d+28>>2];p=Q(Q(N[e>>2]+Q(Q(k*h)-Q(j*o)))-N[c>>2]);k=Q(Q(Q(Q(j*h)+Q(k*o))+N[e+4>>2])-N[c+4>>2]);h=N[c+8>>2];j=Q(Q(l*p)+Q(k*h));q=Q(j-n);o=Q(Q(l*k)-Q(h*p));l=N[b+28>>2];p=Q(o-l);k=N[b+36>>2];h=Q(k-l);m=Q(Q(g*q)+Q(p*h));b:{c:{if(m<=Q(0)){m=Q(Q(q*q)+Q(p*p));if(m>Q(i*i)){break b}e=0;if(K[b+56|0]!=1){i=Q(0);g=Q(0);c=0;break c}i=Q(0);g=Q(0);c=0;if(!(Q(Q(Q(n-N[b+40>>2])*Q(n-j))+Q(Q(l-o)*Q(l-N[b+44>>2])))>Q(0))){break c}break b}r=Q(Q(g*Q(f-j))+Q(h*Q(k-o)));if(r<=Q(0)){h=Q(j-f);j=Q(o-k);m=Q(Q(h*h)+Q(j*j));if(m>Q(i*i)){break b}c=1;e=0;if(K[b+57|0]!=1){i=Q(0);g=Q(0);n=f;l=k;break c}i=Q(0);g=Q(0);n=f;l=k;if(!(Q(Q(Q(N[b+48>>2]-f)*h)+Q(j*Q(N[b+52>>2]-k)))>Q(0))){break c}break b}t=Q(Q(g*g)+Q(h*h));if(!(t>Q(0))){break a}s=j;j=Q(Q(1)/t);f=Q(s-Q(j*Q(Q(r*n)+Q(m*f))));s=Q(f*f);f=Q(o-Q(j*Q(Q(r*l)+Q(m*k))));m=Q(s+Q(f*f));if(m>Q(i*i)){break b}c=65536;e=1;b=Q(Q(p*g)-Q(h*q))>2]=e;J[a+68>>2]=1;N[a+60>>2]=l;N[a+56>>2]=n;N[a+52>>2]=g;N[a+48>>2]=i;J[a+16>>2]=c;b=J[d+28>>2];J[a>>2]=J[d+24>>2];J[a+4>>2]=b;N[a+20>>2]=N[d+8>>2]-Q(Y(m))}return}Z(58041,41948,129,67094);B()}function RO(a,b,c,d,e,f,g,h,i,j,k,l){var m=0,n=0,o=0,p=Q(0),q=0,r=0;m=Ui-160|0;Ui=m;a:{o=b&65535;n=J[a+32>>2];if(o>>>0<(J[a+36>>2]-n|0)/672>>>0){o=n+P(o,672)|0;if(L[o+648>>1]!=(b>>>16|0)){break a}n=Ws(c,d);b:{if(n){o=o+(J[n+8>>2]<<4)|0;c=K[n+12|0];if((c|0)==255){p=N[e>>2];c=J[f>>2];n=J[f+4>>2];d=J[f+12>>2];q=J[f+16>>2];J[m+144>>2]=0;J[m+148>>2]=d;J[m+152>>2]=q;r=J[m+148>>2];J[m+96>>2]=J[m+144>>2];J[m+100>>2]=r;J[m+104>>2]=J[m+152>>2];J[m+136>>2]=c;J[m+140>>2]=n;J[m+88>>2]=c;J[m+92>>2]=n;Ys(a,b,o,p,m+88|0,g,h,i,Q(1),0,0,0);p=N[e+4>>2];J[m+144>>2]=0;J[m+148>>2]=d;J[m+152>>2]=q;r=J[m+148>>2];J[m+72>>2]=J[m+144>>2];J[m+76>>2]=r;J[m+80>>2]=J[m+152>>2];J[m+136>>2]=c;J[m+140>>2]=n;J[m+64>>2]=c;J[m+68>>2]=n;Ys(a,b,o+4|0,p,m- -64|0,g,h,i,Q(1),0,0,0);p=N[e+8>>2];J[m+144>>2]=0;J[m+148>>2]=d;J[m+152>>2]=q;d=J[m+148>>2];J[m+48>>2]=J[m+144>>2];J[m+52>>2]=d;J[m+56>>2]=J[m+152>>2];J[m+136>>2]=c;J[m+140>>2]=n;J[m+40>>2]=c;J[m+44>>2]=n;Ys(a,b,o+8|0,p,m+40|0,g,h,i,Q(1),0,0,0);p=N[e+12>>2];J[m+32>>2]=J[f+16>>2];c=J[f+12>>2];J[m+24>>2]=J[f+8>>2];J[m+28>>2]=c;c=J[f+4>>2];J[m+16>>2]=J[f>>2];J[m+20>>2]=c;Ys(a,b,o+12|0,p,m+16|0,g,h,i,Q(1),j,k,l);break b}c=c<<2;p=N[c+e>>2];J[m+128>>2]=J[f+16>>2];d=J[f+12>>2];J[m+120>>2]=J[f+8>>2];J[m+124>>2]=d;d=J[f+4>>2];J[m+112>>2]=J[f>>2];J[m+116>>2]=d;Ys(a,b,c+o|0,p,m+112|0,g,h,i,Q(1),j,k,l);break b}J[m>>2]=tj(c,d);dj(4,93318,71038,m)}Ui=m+160|0;return}Z(145396,53895,487,84789);B()}Z(47372,40876,3645,53569);B()}function Lia(a){a=a|0;var b=0,c=0,d=0,e=0,f=0,g=0,h=0,i=0,j=0;a:{b:{c:{g=J[a>>2];if(g){c=ij(nj(136),0,136);J[c+80>>2]=g;b=J[a+16>>2];d=J[g+8>>2];J[c+84>>2]=CM(d,J[g+16>>2]);e=b>>>0>>0?b:d;lj(e,40,c,c+8|0,c+4|0);if(H[c+60|0]&1){break b}lj(e,48,c+48|0,c+56|0,c+52|0);b=J[c+48>>2];if((J[c+56>>2]-b|0)/48>>>0>>0){break a}J[c+52>>2]=b+P(e,48);d=J[c+68>>2];if(d>>>0>e>>>0){break c}h=J[c+64>>2];b=sj(e<<2);J[c+64>>2]=b;f=hj(b,h,d<<2);J[c+68>>2]=e;d:{if(d>>>0>=e>>>0){break d}b=d;i=e-b&7;if(i){while(1){J[(b<<2)+f>>2]=b;b=b+1|0;j=j+1|0;if((i|0)!=(j|0)){continue}break}}if(d-e>>>0>4294967288){break d}while(1){J[(b<<2)+f>>2]=b;d=b+1|0;J[(d<<2)+f>>2]=d;d=b+2|0;J[(d<<2)+f>>2]=d;d=b+3|0;J[(d<<2)+f>>2]=d;d=b+4|0;J[(d<<2)+f>>2]=d;d=b+5|0;J[(d<<2)+f>>2]=d;d=b+6|0;J[(d<<2)+f>>2]=d;d=b+7|0;J[(d<<2)+f>>2]=d;b=b+8|0;if((e|0)!=(b|0)){continue}break}}cj(h);if(H[c+28|0]&1){break b}b=L[g+20>>1];lj(b,336,c+16|0,c+24|0,c+20|0);if(H[c+44|0]&1){break b}lj(b,4,c+32|0,c+40|0,c+36|0);d=J[c+32>>2];if(b>>>0>J[c+40>>2]-d>>2>>>0){break a}b=b<<2;J[c+36>>2]=b+d;ij(d,0,b);if(H[c+104|0]&1){break b}b=J[g+12>>2];d=J[g+16>>2];b=P(b>>>0>>0?b:d,240);lj(b,1,c+92|0,c+100|0,c+96|0);d=J[c+92>>2];if(b>>>0>J[c+100>>2]-d>>>0){break a}J[c+96>>2]=b+d;b=im(J[g+4>>2],0);J[c+120>>2]=0;J[c+88>>2]=b;J[c+112>>2]=0;H[c+132|0]=K[c+132|0]&254;J[J[a+12>>2]>>2]=c;return 0}Z(9302,37168,97,71814);B()}Z(2627,54340,112,2284);B()}Z(151729,53895,501,2284);B()}Z(144782,53895,514,59583);B()}function Wua(a,b){a=a|0;b=b|0;var c=Q(0),d=Q(0),e=Q(0),f=Q(0),g=0,h=Q(0),i=Q(0),j=Q(0),k=Q(0),l=Q(0),m=Q(0),n=Q(0),o=Q(0),p=0,q=Q(0),r=Q(0),s=Q(0),t=Q(0),u=Q(0),v=Q(0),w=Q(0),x=Q(0),y=Q(0),z=Q(0),A=Q(0);r=N[a+164>>2];k=N[a+96>>2];p=J[b+24>>2];g=p+P(J[a+120>>2],12)|0;u=N[g+8>>2];j=Rj(u);l=N[a+160>>2];n=N[a+92>>2];h=Hj(u);w=N[g+4>>2];t=N[a+72>>2];x=N[g>>2];m=N[a+68>>2];d=N[a+172>>2];c=N[a+104>>2];p=p+P(J[a+124>>2],12)|0;v=N[p+8>>2];i=Rj(v);s=N[a+168>>2];e=N[a+100>>2];f=Hj(v);y=N[p>>2];q=Q(e-s);d=Q(c-d);s=Q(Q(i*q)-Q(f*d));e=Q(Q(y+s)-N[a+76>>2]);z=N[p+4>>2];q=Q(Q(f*q)+Q(i*d));o=Q(Q(z+q)-N[a+80>>2]);i=Q(Y(Q(Q(e*e)+Q(o*o))));f=Q(0);d=Q(0);c=Q(0);l=Q(n-l);n=Q(k-r);r=Q(Q(j*l)-Q(h*n));k=Q(Q(x+r)-m);l=Q(Q(h*l)+Q(j*n));j=Q(Q(w+l)-t);h=Q(Y(Q(Q(k*k)+Q(j*j))));if(h>Q(.04999999701976776)){d=Q(Q(1)/h);c=Q(j*d);d=Q(k*d)}j=Q(0);if(i>Q(.04999999701976776)){f=Q(Q(1)/i);j=Q(o*f);f=Q(e*f)}A=c;m=Q(N[a+108>>2]-h);h=N[a+112>>2];i=Q(m-Q(h*i));e=Q(Q(s*j)-Q(q*f));k=N[a+188>>2];m=Q(Q(e*k)*e);e=N[a+180>>2];o=N[a+176>>2];c=Q(Q(r*c)-Q(l*d));n=N[a+184>>2];c=Q(Q(Q(h*h)*Q(m+e))+Q(o+Q(Q(c*n)*c)));t=Q(i*Q(-(c>Q(0)?Q(Q(1)/c):c)));m=Q(-t);c=Q(A*m);N[g+4>>2]=w+Q(o*c);d=Q(d*m);N[g>>2]=x+Q(o*d);g=J[b+24>>2];N[(g+P(J[a+120>>2],12)|0)+8>>2]=Q(n*Q(Q(r*c)-Q(l*d)))+u;g=g+P(J[a+124>>2],12)|0;d=Q(t*Q(-h));c=Q(j*d);N[g+4>>2]=z+Q(e*c);f=Q(f*d);N[g>>2]=y+Q(e*f);N[(J[b+24>>2]+P(J[a+124>>2],12)|0)+8>>2]=Q(k*Q(Q(s*c)-Q(q*f)))+v;return(i>Q(0)?i:Q(-i))>2];a=J[b+24>>2];if((c|0)==(a|0)){break c}c=(c-a|0)/12|0;c=c>>>0<=1?1:c;f=0;while(1){h=P(f,12);e=a+h|0;if(J[e>>2]==(g|0)){_C(J[b+20>>2],J[e+4>>2],0);e=J[b+24>>2];if((J[b+28>>2]-e|0)/12>>>0<=f>>>0){break b}d:{e:{f:{c=J[b+20>>2];a=c+4|0;e=J[(e+h|0)+4>>2];d=0;g:{if((a|0)==(e|0)){break g}d=1;if((e|0)==(c+152|0)){break g}d=2;if((e|0)==(c+300|0)){break g}d=3;if((e|0)==(c+448|0)){break g}d=4;if((e|0)==(c+596|0)){break g}d=5;if((e|0)==(c+744|0)){break g}d=6;if((e|0)==(c+892|0)){break g}d=7;if((e|0)==(c+1040|0)){break g}d=8;if((e|0)==(c+1188|0)){break g}d=9;if((e|0)==(c+1336|0)){break g}d=10;if((e|0)==(c+1484|0)){break g}d=11;if((e|0)==(c+1632|0)){break g}d=12;if((e|0)==(c+1780|0)){break g}d=13;if((e|0)==(c+1928|0)){break g}d=14;if((e|0)==(c+2076|0)){break g}if((e|0)!=(c+2224|0)){break f}d=15}a=P(d,148)+a|0;if(K[a+144|0]==255){break e}H[a+144|0]=255;break d}Z(114101,41200,80,5479);B()}Z(96384,41200,166,76170);B()}c=J[b+28>>2];a=J[b+24>>2];if((c-a|0)/12>>>0<=f>>>0){break a}c=c-12|0;e=J[c+4>>2];a=a+h|0;J[a>>2]=J[c>>2];J[a+4>>2]=e;J[a+8>>2]=J[c+8>>2];a=J[b+28>>2]-12|0;J[b+28>>2]=a;if(a>>>0>=M[b+24>>2]){break c}Z(12682,53895,540,43537);B()}f=f+1|0;if((c|0)!=(f|0)){continue}break}}g=g+1|0;if((g|0)!=16){continue}break}return}Z(145396,53895,487,84789);B()}Z(145381,53895,537,43537);B()}function Hua(a,b){a=a|0;b=b|0;var c=0,d=Q(0),e=Q(0),f=Q(0),g=Q(0),h=Q(0),i=Q(0),j=Q(0),k=Q(0),l=Q(0),m=Q(0),n=Q(0),o=Q(0),p=Q(0),q=Q(0),r=Q(0),s=0,t=Q(0),u=Q(0),v=Q(0),w=Q(0);s=J[b+28>>2];c=s+P(J[a+120>>2],12)|0;e=N[c+8>>2];m=N[c+4>>2];n=N[c>>2];c=P(J[a+116>>2],12)+s|0;f=N[c+8>>2];o=N[c+4>>2];p=N[c>>2];q=N[a+168>>2];r=N[a+164>>2];t=N[a+160>>2];u=N[a+156>>2];a:{if(N[a+68>>2]>Q(0)){d=N[a+112>>2];g=Q(Q(Q(d*N[a+100>>2])+Q(Q(e-f)+N[a+76>>2]))*Q(-N[a+204>>2]));N[a+112>>2]=d+g;f=Q(f-Q(r*g));h=N[a+128>>2];i=N[a+136>>2];e=Q(Q(q*g)+e);d=Q(Q(f*h)+Q(Q(n-Q(i*e))-p));j=N[a+132>>2];k=N[a+124>>2];l=Q(Q(Q(m+Q(e*j))-o)-Q(f*k));g=Q(Q(N[a+172>>2]*d)+Q(N[a+184>>2]*l));N[a+104>>2]=N[a+104>>2]-g;d=Q(Q(N[a+176>>2]*d)+Q(l*N[a+188>>2]));N[a+108>>2]=N[a+108>>2]-d;f=Q(f-Q(r*Q(Q(h*g)-Q(k*d))));e=Q(Q(q*Q(Q(i*g)-Q(j*d)))+e);break a}k=N[a+136>>2];l=N[a+128>>2];h=Q(Q(Q(n-Q(e*k))-p)+Q(f*l));v=N[a+132>>2];w=N[a+124>>2];i=Q(Q(Q(m+Q(e*v))-o)-Q(f*w));j=Q(e-f);g=Q(Q(Q(h*N[a+172>>2])+Q(i*N[a+184>>2]))+Q(j*N[a+196>>2]));N[a+104>>2]=N[a+104>>2]-g;d=Q(Q(Q(h*N[a+176>>2])+Q(i*N[a+188>>2]))+Q(j*N[a+200>>2]));N[a+108>>2]=N[a+108>>2]-d;h=Q(Q(Q(h*N[a+180>>2])+Q(i*N[a+192>>2]))+Q(j*N[a+204>>2]));N[a+112>>2]=N[a+112>>2]-h;f=Q(f-Q(r*Q(Q(Q(l*g)-Q(w*d))-h)));e=Q(Q(q*Q(Q(Q(k*g)-Q(v*d))-h))+e)}N[c+4>>2]=o+Q(u*d);N[c>>2]=p+Q(u*g);c=J[b+28>>2];N[(c+P(J[a+116>>2],12)|0)+8>>2]=f;c=c+P(J[a+120>>2],12)|0;N[c+4>>2]=m-Q(t*d);N[c>>2]=n-Q(t*g);N[(J[b+28>>2]+P(J[a+120>>2],12)|0)+8>>2]=e}function ZV(a,b,c,d,e,f){a=a|0;b=b|0;c=c|0;d=d|0;e=e|0;f=f|0;var g=Q(0),h=Q(0),i=0,j=Q(0),k=0,l=0,m=Q(0),n=0,o=Q(0),p=0,q=Q(0),r=Q(0),s=0,t=0,u=Q(0);k=J[b+48>>2];l=J[b+52>>2];g=N[b+40>>2];s=J[b+4>>2];n=s+J[b+44>>2]|0;H[n|0]=K[n-1|0];o=N[b+28>>2];h=N[b+32>>2];i=J[a+4>>2];p=J[a>>2];j=N[b+16>>2];q=N[b+20>>2];g=Q(g*Q(+(lxa(c<<31,c>>>1|0,d)>>>0)+ +(Yi>>>0)*4294967296));a:{if(g=Q(0)){t=~~g>>>0;if(Q(R(g))>=Q(1)){a=~~(g>Q(0)?Q(T(Q(V(Q(g*Q(2.3283064365386963e-10)))),Q(4294967296))):Q(W(Q(Q(g-Q(~~g>>>0>>>0))*Q(2.3283064365386963e-10)))))>>>0}else{a=0}break a}a=0}n=a;b:{c:{d:{if(!f){J[b+48>>2]=k;J[b+52>>2]=l;a=J[b+44>>2];d=0;break d}u=Q(Q(1)/Q(f>>>0));m=Q(i>>>0);g=Q(Q(h-o)/m);h=Q(p>>>0);r=Q(Q(g*h)+o);o=Q(Q(g+r)-r);g=Q(Q(q-j)/m);j=Q(Q(g*h)+j);q=Q(Q(g+j)-j);d=0;a=0;while(1){p=d;i=(a<<3)+e|0;h=Q(Q(+(k>>>0)+ +(l>>>0)*4294967296)*Q(4.656612873077393e-10));m=Q(u*Q(a|0));g=Q(Q(m*q)+j);c=d+s|0;h=Q(Q(Q(Q(1)-h)*Q(g*Q(Q(Q(K[c|0])+Q(-128))*Q(255))))+Q(h*Q(g*Q(Q(Q(K[c+1|0])+Q(-128))*Q(255)))));g=Q(+Q(Q(m*o)+r)*1.5707963267948966);N[i>>2]=Q(h*Rj(g))+N[i>>2];N[i+4>>2]=Q(h*Hj(g))+N[i+4>>2];c=l+n|0;d=k+t|0;c=d>>>0>>0?c+1|0:c;k=d&2147483647;l=0;d=((c&2147483647)<<1|d>>>31)+p|0;a=a+1|0;if((f|0)!=(a|0)){continue}break}J[b+48>>2]=k;J[b+52>>2]=l;a=J[b+44>>2];if(p>>>0>a>>>0){break c}if(a>>>0>>0){break b}}c=J[b+4>>2];el(c,c+d|0,a-d|0);J[b+44>>2]=J[b+44>>2]-d;return}Z(12434,42316,1004,44024);B()}Z(5356,42316,1007,44024);B()}function Xy(a,b,c,d){var e=Q(0),f=Q(0),g=0,h=Q(0),i=Q(0),j=Q(0),k=Q(0),l=Q(0),m=Q(0),n=Q(0),o=Q(0),p=Q(0),q=Q(0),r=Q(0),s=Q(0),t=Q(0),u=Q(0),v=Q(0),w=Q(0),x=Q(0),y=Q(0),z=Q(0),A=Q(0),B=Q(0),C=Q(0);g=Ui+-64|0;Ui=g;p=N[b+8>>2];q=N[b>>2];r=N[b+4>>2];s=N[b+24>>2];t=N[b+16>>2];u=N[b+20>>2];v=N[b+40>>2];w=N[b+32>>2];x=N[b+36>>2];e=N[a+8>>2];h=N[a>>2];j=N[a+20>>2];k=N[a+36>>2];i=N[a+4>>2];n=N[a+32>>2];l=N[a+24>>2];m=N[a+16>>2];o=N[a+40>>2];J[g+60>>2]=0;J[g+44>>2]=0;J[g+28>>2]=0;z=Q(1);A=Q(Q(m*k)-Q(j*n));B=Q(Q(j*o)-Q(l*k));C=Q(Q(l*n)-Q(m*o));f=Q(Q(1)/Q(Q(e*A)+Q(Q(h*B)+Q(i*C))));y=Q(Q(Q(h*j)-Q(i*m))*f);j=Q(Q(Q(i*l)-Q(e*j))*f);l=Q(Q(Q(e*m)-Q(h*l))*f);N[g+56>>2]=Q(v*y)+Q(Q(w*j)+Q(x*l));m=Q(Q(Q(i*n)-Q(h*k))*f);i=Q(Q(Q(e*k)-Q(i*o))*f);e=Q(Q(Q(h*o)-Q(e*n))*f);N[g+52>>2]=Q(v*m)+Q(Q(w*i)+Q(x*e));h=Q(A*f);k=Q(B*f);f=Q(C*f);N[g+48>>2]=Q(v*h)+Q(Q(w*k)+Q(x*f));N[g+40>>2]=Q(y*s)+Q(Q(j*t)+Q(l*u));N[g+36>>2]=Q(m*s)+Q(Q(i*t)+Q(e*u));N[g+32>>2]=Q(h*s)+Q(Q(k*t)+Q(f*u));N[g+24>>2]=Q(y*p)+Q(Q(j*q)+Q(r*l));N[g+20>>2]=Q(m*p)+Q(Q(i*q)+Q(r*e));N[g+16>>2]=Q(h*p)+Q(Q(k*q)+Q(r*f));Fv(g+16|0,g);e=N[g+12>>2];h=N[g+8>>2];i=N[g>>2];j=N[g+4>>2];f=Q(Q(1)/Q(Y(Q(Q(e*e)+Q(Q(h*h)+Q(Q(i*i)+Q(j*j)))))));e=Q(e*f);e=eQ(1)?Q(1):e);N[d>>2]=e+e;J[c+12>>2]=0;e=Q(0);k=Q(0);h=Q(h*f);i=Q(i*f);f=Q(j*f);j=Q(Q(h*h)+Q(Q(i*i)+Q(f*f)));if(!(j>2]=k;N[c+4>>2]=e;N[c>>2]=z;Ui=g- -64|0}function Bra(a,b){a=a|0;b=Q(b);var c=0,d=Q(0),e=0,f=Q(0),g=0,h=Q(0);Xl(47017);e=J[a+92>>2];if(e){Zi[e|0](a,b)}Zi[J[J[a>>2]+132>>2]](a,b);e=0;J[a+32>>2]=0;N[a+28>>2]=b;J[a+48>>2]=Zi[J[J[a>>2]+16>>2]](a);Zi[J[J[a>>2]+40>>2]](a);Zi[J[J[a>>2]+140>>2]](a);N[a+112>>2]=b;Zi[J[J[a>>2]+144>>2]](a,a+100|0);Zi[J[J[a>>2]+136>>2]](a,b);Xl(20023);if(J[a+248>>2]>0){while(1){c=J[J[a+256>>2]+(e<<2)>>2];Zi[J[J[c>>2]+8>>2]](c,a,b);e=e+1|0;if((e|0)>2]){continue}break}}Wl();Xl(61400);if(J[a+204>>2]>0){while(1){c=J[J[a+212>>2]+(g<<2)>>2];a:{if(!c){break a}b:{c:{d:{e=J[c+216>>2];switch(e-2|0){case 0:case 2:break c;default:break d}}e:{d=N[c+312>>2];f=Q(d*d);d=N[c+304>>2];h=Q(d*d);d=N[c+308>>2];f=Q(f+Q(h+Q(d*d)));d=N[c+464>>2];if(!(f>2];f=Q(d*d);d=N[c+320>>2];h=Q(d*d);d=N[c+324>>2];f=Q(f+Q(h+Q(d*d)));d=N[c+468>>2];if(!(f>2]=b+N[c+220>>2];break b}J[c+220>>2]=0;if((J[c+216>>2]&-2)!=4){J[c+216>>2]=0}e=J[c+216>>2]}if((e|0)==4){break a}}d=N[60991];if(!(K[333892]|d==Q(0)|!(d>2])&(e&-2)!=2)){if(K[c+204|0]&3){if((J[c+216>>2]&-2)!=4){J[c+216>>2]=2}break a}if((e|0)==1){if((J[c+216>>2]&-2)!=4){J[c+216>>2]=3}e=J[c+216>>2]}if((e|0)!=2){break a}J[c+304>>2]=0;J[c+308>>2]=0;J[c+328>>2]=0;J[c+332>>2]=0;J[c+320>>2]=0;J[c+324>>2]=0;J[c+312>>2]=0;J[c+316>>2]=0;break a}if((J[c+216>>2]&-2)!=4){J[c+216>>2]=1}}g=g+1|0;if((g|0)>2]){continue}break}}Wl();e=J[a+88>>2];if(e){Zi[e|0](a,b)}Wl()}function Hv(a,b,c){var d=0,e=0,f=0,g=0,h=0,i=0,j=0,k=0,l=0,m=0,n=Q(0),o=Q(0),p=Q(0),q=Q(0),r=Q(0),s=Q(0),t=0;if(a){n=N[b+24>>2];o=N[b+20>>2];p=N[b+16>>2];q=N[b+8>>2];r=N[b+4>>2];s=N[b>>2];d=Yj(256);J[d>>2]=a;a=64;b=1;while(1){a:{b:{c:{e=b-1|0;m=e<<2;i=J[m+d>>2];d:{if(!(N[i>>2]<=p)|!(N[i+16>>2]>=s)|(!(N[i+4>>2]<=o)|!(N[i+20>>2]>=r))){break d}if(!(N[i+8>>2]<=n)|!(N[i+24>>2]>=q)){break d}if(J[i+40>>2]){if((a|0)!=(e|0)){break c}h=a?a<<1:1;if(h>>>0<=a>>>0){break c}e=Yj(h<<2);e:{if(!a){break e}k=0;f=0;if(a>>>0>=4){t=a&-4;j=0;while(1){g=f<<2;J[g+e>>2]=J[d+g>>2];l=g|4;J[l+e>>2]=J[d+l>>2];l=g|8;J[l+e>>2]=J[d+l>>2];g=g|12;J[g+e>>2]=J[d+g>>2];f=f+4|0;j=j+4|0;if((t|0)!=(j|0)){continue}break}}a=a&3;if(!a){break e}while(1){g=f<<2;J[g+e>>2]=J[d+g>>2];f=f+1|0;k=k+1|0;if((a|0)!=(k|0)){continue}break}}if(d){J[83765]=J[83765]+1;Zi[J[61751]](J[d-4>>2])}break b}Zi[J[J[c>>2]+12>>2]](c,i)}b=e;break a}h=a;e=d}J[e+m>>2]=J[i+36>>2];f:{if((b|0)!=(h|0)){d=e;a=h;break f}g=0;d=Yj(b<<3);h=0;if(b>>>0>=4){k=b&2147483644;a=0;while(1){f=h<<2;J[f+d>>2]=J[e+f>>2];j=f|4;J[j+d>>2]=J[e+j>>2];j=f|8;J[j+d>>2]=J[e+j>>2];f=f|12;J[f+d>>2]=J[e+f>>2];h=h+4|0;a=a+4|0;if((k|0)!=(a|0)){continue}break}}a=b&3;if(a){while(1){f=h<<2;J[f+d>>2]=J[e+f>>2];h=h+1|0;g=g+1|0;if((a|0)!=(g|0)){continue}break}}if(e){J[83765]=J[83765]+1;Zi[J[61751]](J[e-4>>2])}a=b<<1}J[(b<<2)+d>>2]=J[i+40>>2];b=b+1|0}if((b|0)>0){continue}break}if(d){J[83765]=J[83765]+1;Zi[J[61751]](J[d-4>>2])}}}function dka(a,b){a=a|0;b=b|0;var c=0,d=0,e=0,f=0,g=0;d=J[J[a+24>>2]>>2];c=J[a+16>>2];e=J[a+20>>2];if((c|0)==J[75228]&(e|0)==J[75229]){f=J[J[J[a+8>>2]+80>>2]>>2];a=J[d+16>>2];if(!a){a=J[J[d+4>>2]+96>>2]}return Lm(f,a,b)|0}if((c|0)==J[75230]&(e|0)==J[75231]){if(!(H[a+40|0]&1)){return-12}I[b+108>>1]=L[b+108>>1]|2;e=J[J[J[a+8>>2]+80>>2]>>2];f=J[a+32>>2];g=J[a+36>>2];a=0;d=J[d+8>>2];c=J[d+196>>2];a:{if(!c){break a}c=J[J[d+192>>2]+(mxa(f,g,c)<<2)>>2];if((c|0)==-1){break a}d=J[d+200>>2];while(1){c=d+(c<<4)|0;if(J[c>>2]!=(f|0)|J[c+4>>2]!=(g|0)){c=J[c+12>>2];if((c|0)!=-1){continue}break a}break}a=J[c+8>>2]}return Lm(e,a,b)|0}if((c|0)==J[75224]&(e|0)==J[75225]){if(!(H[a+40|0]&1)){return-12}I[b+108>>1]=L[b+108>>1]|2;e=J[J[J[a+8>>2]+80>>2]>>2];f=J[a+32>>2];g=J[a+36>>2];a=0;d=J[d+8>>2];c=J[d+100>>2];b:{if(!c){break b}c=J[J[d+96>>2]+(mxa(f,g,c)<<2)>>2];if((c|0)==-1){break b}d=J[d+104>>2];while(1){c=d+(c<<4)|0;if(J[c>>2]!=(f|0)|J[c+4>>2]!=(g|0)){c=J[c+12>>2];if((c|0)!=-1){continue}break b}break}a=J[c+8>>2]}return Lm(e,a,b)|0}if((c|0)!=J[75248]|(e|0)!=J[75249]){return-1}if(!(H[a+40|0]&1)){return-12}I[b+108>>1]=L[b+108>>1]|2;e=J[J[J[a+8>>2]+80>>2]>>2];c=J[a+32>>2];g=J[a+36>>2];d=J[d+8>>2];a=J[d+132>>2];c:{if(!a){break c}a=J[J[d+128>>2]+(mxa(c,g,a)<<2)>>2];if((a|0)==-1){break c}d=J[d+136>>2];while(1){a=d+P(a,40)|0;if(J[a>>2]!=(c|0)|J[a+4>>2]!=(g|0)){a=J[a+32>>2];if((a|0)!=-1){continue}break c}break}f=J[a+8>>2]}return Lm(e,f,b)|0}function _t(a,b,c){var d=0,e=0,f=0,g=0,h=0,i=0,j=0,k=0,l=0,m=0,n=0;d=(a|0)==(c|0);a:{if(!(d|(a|0)==(b|0))){j=sk(a,b);if(j){break a}}J[a>>2]=1;g=d?b:c;d=J[g+4>>2];b:{if(!d){break b}f=J[g+8>>2]-4|0;c=0;b=d;while(1){if(!J[f+(b<<2)>>2]){c=c+1|0;b=b-1|0;if(b){continue}break b}break}j=-16;if(b>>>0>1e4){break a}h=J[a+4>>2];c:{if(h>>>0>>0){f=Zj(b,4);if(!f){break a}e=J[a+8>>2];if(e){h=h<<2;hj(f,e,h);Zi[J[66509]](e,0,h)|0;cj(J[a+8>>2])}J[a+8>>2]=f;J[a+4>>2]=b;h=b;break c}f=J[a+8>>2]}m=b&1;g=J[g+8>>2];d:{if((d|0)==(c+1|0)){e=0;c=f;break d}n=b&16382;e=0;c=f;d=0;while(1){i=J[c>>2];e=i+e|0;k=e+J[g>>2]|0;J[c>>2]=k;l=J[c+4>>2];e=l+((e>>>0>>0)+(e>>>0>k>>>0)|0)|0;i=e+J[g+4>>2]|0;J[c+4>>2]=i;e=(e>>>0>>0)+(e>>>0>i>>>0)|0;c=c+8|0;g=g+8|0;d=d+2|0;if((n|0)!=(d|0)){continue}break}}if(m){i=J[g>>2];g=J[c>>2];d=g+e|0;e=i+d|0;J[c>>2]=e;e=(d>>>0>>0)+(d>>>0>e>>>0)|0;c=c+4|0}if(!e){break b}g=b+1|0;e:{if(b>>>0>>0){d=f;break e}if((b|0)==1e4){break a}f:{if(b>>>0>>0){d=f;break f}d=Zj(g,4);if(!d){break a}if(f){c=h<<2;hj(d,f,c);Zi[J[66509]](f,0,c)|0;cj(J[a+8>>2])}J[a+8>>2]=d;J[a+4>>2]=g;h=g}c=(b<<2)+d|0}b=J[c>>2];f=b+e|0;J[c>>2]=f;if(b>>>0<=f>>>0){break b}b=d;while(1){f=g+1|0;if(g>>>0>>0){c=c+4|0}else{if(f>>>0>1e4){break a}if(f>>>0>h>>>0){d=Zj(f,4);if(!d){break a}if(b){c=h<<2;hj(d,b,c);Zi[J[66509]](b,0,c)|0;cj(J[a+8>>2])}J[a+8>>2]=d;J[a+4>>2]=f;h=f}b=d;c=b+(g<<2)|0}e=J[c>>2]+1|0;J[c>>2]=e;g=f;if(!e){continue}break}}j=0}return j}function EF(a,b,c,d,e,f){var g=0,h=0;g=Ui-16|0;Ui=g;Jz(a,b,c,d,f);a:{if(fk(J[f>>2],J[e>>2],J[e+4>>2])>>>0>=fk(J[f>>2],J[d>>2],J[d+4>>2])>>>0){break a}h=J[d+12>>2];J[g+8>>2]=J[d+8>>2];J[g+12>>2]=h;h=J[d+4>>2];J[g>>2]=J[d>>2];J[g+4>>2]=h;h=J[e+12>>2];J[d+8>>2]=J[e+8>>2];J[d+12>>2]=h;h=J[e+4>>2];J[d>>2]=J[e>>2];J[d+4>>2]=h;h=J[g+12>>2];J[e+8>>2]=J[g+8>>2];J[e+12>>2]=h;h=J[g+4>>2];J[e>>2]=J[g>>2];J[e+4>>2]=h;if(fk(J[f>>2],J[d>>2],J[d+4>>2])>>>0>=fk(J[f>>2],J[c>>2],J[c+4>>2])>>>0){break a}e=J[c+12>>2];J[g+8>>2]=J[c+8>>2];J[g+12>>2]=e;e=J[c+4>>2];J[g>>2]=J[c>>2];J[g+4>>2]=e;e=J[d+12>>2];J[c+8>>2]=J[d+8>>2];J[c+12>>2]=e;e=J[d+4>>2];J[c>>2]=J[d>>2];J[c+4>>2]=e;e=J[g+12>>2];J[d+8>>2]=J[g+8>>2];J[d+12>>2]=e;e=J[g+4>>2];J[d>>2]=J[g>>2];J[d+4>>2]=e;if(fk(J[f>>2],J[c>>2],J[c+4>>2])>>>0>=fk(J[f>>2],J[b>>2],J[b+4>>2])>>>0){break a}d=J[b+12>>2];J[g+8>>2]=J[b+8>>2];J[g+12>>2]=d;d=J[b+4>>2];J[g>>2]=J[b>>2];J[g+4>>2]=d;d=J[c+12>>2];J[b+8>>2]=J[c+8>>2];J[b+12>>2]=d;d=J[c+4>>2];J[b>>2]=J[c>>2];J[b+4>>2]=d;d=J[g+12>>2];J[c+8>>2]=J[g+8>>2];J[c+12>>2]=d;d=J[g+4>>2];J[c>>2]=J[g>>2];J[c+4>>2]=d;if(fk(J[f>>2],J[b>>2],J[b+4>>2])>>>0>=fk(J[f>>2],J[a>>2],J[a+4>>2])>>>0){break a}c=J[a+12>>2];J[g+8>>2]=J[a+8>>2];J[g+12>>2]=c;c=J[a+4>>2];J[g>>2]=J[a>>2];J[g+4>>2]=c;c=J[b+12>>2];J[a+8>>2]=J[b+8>>2];J[a+12>>2]=c;c=J[b+4>>2];J[a>>2]=J[b>>2];J[a+4>>2]=c;a=J[g+12>>2];J[b+8>>2]=J[g+8>>2];J[b+12>>2]=a;a=J[g+4>>2];J[b>>2]=J[g>>2];J[b+4>>2]=a}Ui=g+16|0}function wP(a,b,c){var d=0,e=0,f=0,g=0,h=0,i=0,j=0,k=0,l=0,m=0;e=Ui-16|0;Ui=e;g=J[c+104>>2];d=e+8|0;J[d>>2]=0;J[d+4>>2]=0;J[e>>2]=0;J[e+4>>2]=0;lj(g,16,e,d,e|4);a:{b:{c:{f=J[e>>2];if(g>>>0<=J[d>>2]-f>>4>>>0){d=g<<4;J[e+4>>2]=d+f;ij(f,0,d);if(!g){break c}l=c+40|0;k=J[e>>2];i=J[e+4>>2]-k>>4;c=0;while(1){if((c|0)==(i|0)){break a}d=l+(c<<3)|0;f=J[d>>2];d=J[d+4>>2];h=k+(c<<4)|0;J[h+8>>2]=0;J[h>>2]=f;J[h+4>>2]=d;c=c+1|0;if((g|0)!=(c|0)){continue}break}d=J[b+8>>2];c=J[b+4>>2];if((d|0)==(c|0)){break b}c=d-c>>4;m=c>>>0<=1?1:c;f=0;while(1){c=J[b+4>>2];if(J[b+8>>2]-c>>4>>>0<=f>>>0){break a}h=J[e>>2];l=J[e+4>>2]-h>>4;j=c+(f<<4)|0;d=J[j>>2];k=J[j+4>>2];c=0;d:{e:{f:{while(1){if((c|0)==(l|0)){break d}i=h+(c<<4)|0;if(J[i>>2]!=(d|0)|(k|0)!=J[i+4>>2]){c=c+1|0;if((g|0)==(c|0)){break f}continue}break}J[i+8>>2]=J[j+8>>2];J[j+8>>2]=0;break e}c=J[j+8>>2];if(!c){break e}vj(a,c)}f=f+1|0;if((m|0)!=(f|0)){continue}break b}break}break a}Z(144782,53895,514,59583);B()}d=J[b+8>>2];c=J[b+4>>2];if((d|0)==(c|0)){break b}c=d-c>>4;f=c>>>0<=1?1:c;c=0;while(1){d=J[b+4>>2];if(J[b+8>>2]-d>>4>>>0<=c>>>0){break a}d=J[(d+(c<<4)|0)+8>>2];if(d){vj(a,d)}c=c+1|0;if((f|0)!=(c|0)){continue}break}}a=J[e>>2];f=J[b+4>>2];J[e>>2]=f;J[b+4>>2]=a;a=J[e+4>>2];J[e+4>>2]=J[b+8>>2];J[b+8>>2]=a;a=J[e+8>>2];J[e+8>>2]=J[b+12>>2];J[b+12>>2]=a;c=K[b+16|0];a=c&1;d=K[e+12|0];H[e+12|0]=a|d&254;H[b+16|0]=c&254|d&1;if(!(!f|a)){cj(f)}Ui=e+16|0;return}Z(145396,53895,487,84789);B()}function VT(a){a=a|0;var b=0,c=0,d=0,e=0,f=0,g=0,h=0,i=Q(0),j=Q(0),k=Q(0),l=0;d=Ui-48|0;Ui=d;a:{if(!(Zi[J[J[a>>2]+16>>2]](a)|0)){break a}b=Zi[J[J[a>>2]+16>>2]](a)|0;if(!(Zi[J[J[b>>2]+44>>2]](b)&8)){break a}b=J[a+24>>2];f=Zi[J[J[b>>2]+36>>2]](b)|0;J[d+40>>2]=0;J[d+44>>2]=0;J[d+32>>2]=0;J[d+36>>2]=0;if((f|0)<=0){break a}while(1){b=J[a+24>>2];b=Zi[J[J[b>>2]+40>>2]](b,e)|0;g=J[b+1116>>2];if((g|0)>0){l=b+4|0;b=0;while(1){h=Zi[J[J[a>>2]+16>>2]](a)|0;c=P(b,276)+l|0;Zi[J[J[h>>2]+28>>2]](h,c+32|0,c- -64|0,N[c+80>>2],J[c+144>>2],d+32|0);b=b+1|0;if((g|0)!=(b|0)){continue}break}}e=e+1|0;if((f|0)!=(e|0)){continue}break}}b:{if(!(Zi[J[J[a>>2]+16>>2]](a)|0)){break b}b=Zi[J[J[a>>2]+16>>2]](a)|0;if(!(Zi[J[J[b>>2]+44>>2]](b)&3)|J[a+8>>2]<=0){break b}b=0;while(1){e=J[J[a+16>>2]+(b<<2)>>2];c:{if(K[e+204|0]&32){break c}d:{if(!(Zi[J[J[a>>2]+16>>2]](a)|0)){break d}c=Zi[J[J[a>>2]+16>>2]](a)|0;if(!(Zi[J[J[c>>2]+44>>2]](c)&1)){break d}c=J[e+216>>2]-1|0;e:{if(c>>>0>4){i=Q(0);j=Q(0);k=Q(1);break e}c=c<<2;i=N[c+172128>>2];j=N[c+172108>>2];k=N[c+172088>>2]}J[d+44>>2]=0;N[d+40>>2]=i;N[d+36>>2]=j;N[d+32>>2]=k;Zi[J[J[a>>2]+24>>2]](a,e+4|0,J[e+192>>2],d+32|0)}c=J[a+80>>2];if(!c){break c}if(!(Zi[J[J[c>>2]+44>>2]](c)&2)){break c}J[d+8>>2]=0;J[d+12>>2]=0;J[d>>2]=1065353216;J[d+4>>2]=0;c=J[e+192>>2];g=e+4|0;e=d+32|0;f=d+16|0;Zi[J[J[c>>2]+8>>2]](c,g,e,f);c=J[a+80>>2];Zi[J[J[c>>2]+48>>2]](c,e,f,d)}b=b+1|0;if((b|0)>2]){continue}break}}Ui=d+48|0}function vv(a,b){var c=0,d=0,e=0,f=0,g=0,h=0,i=0,j=0,k=0,l=0,m=0,n=0,o=Q(0);c=Ui-128|0;Ui=c;J[c+124>>2]=0;a:{b:{c:{d:{e:{f:{j=J[b+84>>2];d=J[j+4>>2];if(d>>>0<=65535){if(d){break f}e=1;break e}J[c>>2]=d;dj(3,88293,144038,c);break e}m=a+12|0;n=b+156|0;f=c+80|0;while(1){d=J[j>>2]+P(i,96)|0;e=J[d+16>>2];if(!e){break d}g=0;J[c+120>>2]=0;if(H[e+102|0]&1){g=(h<<2)+n|0;J[g>>2]=0;h=h+1|0}if(M[b+152>>2]>>0){break c}J[f>>2]=0;J[f+4>>2]=0;J[f+8>>2]=0;J[c+16>>2]=b;N[c+32>>2]=N[d+32>>2];N[c+36>>2]=N[d+36>>2];N[c+40>>2]=N[d+40>>2];N[c+48>>2]=N[d+48>>2];N[c+52>>2]=N[d+52>>2];N[c+56>>2]=N[d+56>>2];N[c+60>>2]=N[d+60>>2];N[c+64>>2]=N[d+64>>2];N[c+68>>2]=N[d+68>>2];o=N[d+72>>2];I[c+108>>1]=i;N[c+72>>2]=o;J[c+92>>2]=J[d+24>>2];J[c+96>>2]=J[(J[d+20>>2]<<2)+m>>2];k=J[e+16>>2];J[c+104>>2]=g;J[c+100>>2]=k;J[f+8>>2]=J[d+88>>2];g=J[d+84>>2];J[f>>2]=J[d+80>>2];J[f+4>>2]=g;if(!(Zi[J[e+28>>2]](c+16|0)|0)){e=1;i=i+1|0;if(i>>>0>2]){continue}break e}break}if(!i){e=0;break e}g=0;h=0;while(1){e=J[j>>2]+P(g,96)|0;f=J[e+16>>2];if(!f){break b}k=J[f+100>>2]&65536;d=(k>>>16|0)+h|0;if(d>>>0>M[b+152>>2]){break a}l=J[a+8>>2];J[c+20>>2]=b;J[c+16>>2]=l;J[c+24>>2]=J[(J[e+20>>2]<<2)+m>>2];e=0;l=J[f+16>>2];J[c+32>>2]=k?(h<<2)+n|0:0;J[c+28>>2]=l;Zi[J[f+32>>2]](c+16|0)|0;h=d;g=g+1|0;if((i|0)!=(g|0)){continue}break}}Ui=c+128|0;return e}Z(63839,38296,837,18164);B()}Z(12526,38296,847,18164);B()}Z(63839,38296,879,18164);B()}Z(12526,38296,885,18164);B()}function YV(a,b,c,d,e,f){a=a|0;b=b|0;c=c|0;d=d|0;e=e|0;f=f|0;var g=Q(0),h=Q(0),i=0,j=0,k=Q(0),l=Q(0),m=0,n=0,o=0,p=Q(0),q=0,r=0,s=0,t=Q(0),u=Q(0),v=Q(0),w=0,x=Q(0),y=0,z=Q(0);m=J[b+48>>2];n=J[b+52>>2];g=N[b+40>>2];o=J[b+4>>2];r=J[b+44>>2];i=o+(r<<2)|0;j=i-4|0;j=L[j>>1]|L[j+2>>1]<<16;I[i>>1]=j;I[i+2>>1]=j>>>16;p=N[b+28>>2];h=N[b+32>>2];s=J[a+4>>2];i=J[a>>2];k=N[b+16>>2];t=N[b+20>>2];g=Q(g*Q(+(lxa(c<<31,c>>>1|0,d)>>>0)+ +(Yi>>>0)*4294967296));a:{if(g=Q(0)){w=~~g>>>0;if(Q(R(g))>=Q(1)){a=~~(g>Q(0)?Q(T(Q(V(Q(g*Q(2.3283064365386963e-10)))),Q(4294967296))):Q(W(Q(Q(g-Q(~~g>>>0>>>0))*Q(2.3283064365386963e-10)))))>>>0}else{a=0}break a}a=0}j=a;b:{if(!f){c=0;break b}x=Q(Q(1)/Q(f>>>0));l=Q(s>>>0);g=Q(Q(h-p)/l);h=Q(i>>>0);u=Q(Q(g*h)+p);p=Q(Q(g+u)-u);g=Q(Q(t-k)/l);v=Q(Q(g*h)+k);t=Q(Q(g+v)-v);c=0;a=0;while(1){i=c;c=(c<<2)+o|0;y=I[c>>1];s=I[c+4>>1];h=Q(x*Q(a|0));l=Q(+Q(Q(h*p)+u)*1.5707963267948966);g=Rj(l);d=I[c+2>>1];c=I[c+6>>1];q=(a<<3)+e|0;z=g;h=Q(Q(h*t)+v);k=Q(Q(+(m>>>0)+ +(n>>>0)*4294967296)*Q(4.656612873077393e-10));g=Q(Q(1)-k);N[q>>2]=Q(z*Q(h*Q(Q(g*Q(y|0))+Q(k*Q(s|0)))))+N[q>>2];N[q+4>>2]=Q(Q(h*Q(Q(g*Q(d|0))+Q(k*Q(c|0))))*Hj(l))+N[q+4>>2];c=j+n|0;d=m+w|0;c=d>>>0>>0?c+1|0:c;m=d&2147483647;n=0;c=((c&2147483647)<<1|d>>>31)+i|0;a=a+1|0;if((f|0)!=(a|0)){continue}break}J[b+48>>2]=m;J[b+52>>2]=n;if(i>>>0<=r>>>0){break b}Z(12434,42316,1064,44475);B()}el(o,(c<<2)+o|0,r-c<<2);J[b+44>>2]=J[b+44>>2]-c}function BL(a,b){var c=0,d=0,e=0,f=0,g=0,h=0,i=0,j=0,k=0;d=J[b+16>>2];if(d){ll(d);J[b+16>>2]=0}d=J[b+20>>2];if(d){ll(d);J[b+20>>2]=0}d=J[b+24>>2];if(d){ll(d);J[b+24>>2]=0}e=J[b+84>>2];i=J[b+80>>2];c=(e-i|0)/40|0;a:{b:{if((e|0)==(i|0)){f=Fq();d=0;break b}d=c>>>0<=1?1:c;h=J[b+64>>2];j=(J[b+68>>2]-h|0)/56|0;g=1;while(1){if((f|0)==(j|0)){break a}if(J[(h+P(f,56)|0)+36>>2]!=1){f=f+1|0;g=c>>>0>f>>>0;if((d|0)!=(f|0)){continue}}break}j=1;h=0;f=Fq();if(!(g&1)){j=0;d=0;break b}h=gy(0);d=gy(1)}g=0;I[b+28>>1]=0;if((e|0)!=(i|0)){i=c>>>0<=1?1:c;while(1){c=J[b+64>>2];if((J[b+68>>2]-c|0)/56>>>0<=g>>>0){break a}c:{d:{e:{f:{g:{h:{i:{j:{k:{l:{m:{c=c+P(g,56)|0;switch(J[c+16>>2]-1|0){case 0:break e;case 8:break f;case 7:break g;case 4:break h;case 6:break i;case 5:break j;case 3:break k;case 2:break l;case 1:break m;default:break c}}k=L[b+28>>1];e=J[c+32>>2];e=(k|(e|0)==1)&65533|((e|0)==2?2:k&2);break d}e=L[b+28>>1]|32;break d}e=L[b+28>>1]|64;break d}e=L[b+28>>1]|4;break d}e=L[b+28>>1]|8;break d}e=L[b+28>>1]|16;break d}e=L[b+28>>1]|128;break d}e=L[b+28>>1]|256;break d}e=L[b+28>>1]|512}I[b+28>>1]=e}Vp(f,J[c+8>>2],J[c+12>>2],J[c+20>>2],lp(J[c+28>>2]),K[c+24|0]);if(j){Vp(J[c+36>>2]==1?d:h,J[c+8>>2],J[c+12>>2],J[c+20>>2],lp(J[c+28>>2]),K[c+24|0])}g=g+1|0;if((i|0)!=(g|0)){continue}break}}J[b+16>>2]=Zi[J[79404]](a,f);ll(f);if(j){J[b+20>>2]=Zi[J[79404]](a,h);ll(h);J[b+24>>2]=Zi[J[79404]](a,d);ll(d)}return}Z(145396,53895,487,84789);B()}function uA(a,b,c,d,e){var f=0,g=0,h=0,i=0;g=Ui-32|0;Ui=g;a:{if(!a){f=-5248;break a}f=-4224;i=Bm(d,b);if(!i){break a}h=Bm(d,c);if(i>>>0>=h>>>0){break a}b=yj(b)+i|0;b=(K[b|0]==32)+b|0;b=(K[b|0]==13)+b|0;if(K[b|0]!=10){break a}c=yj(c)+h|0;c=(K[c|0]==32)+c|0;c=(K[c|0]==13)+c|0;J[e>>2]=((K[c|0]==10)+c|0)-d;f=1;d=b+1|0;b:{if((h-d|0)<22){break b}if(Wj(d,97309,22)){break b}f=-4352;c=K[b+23|0]==13;if(K[b+(c?24:23)|0]!=10){break a}f=1;c:{d:{e:{b=c?b+24|0:b+23|0;d=b+1|0;c=h-d|0;if((c|0)>=23){if(Wj(d,135296,23)){break e}f=-4608;c=b+24|0;if((h-c|0)<16){break a}if(dA(c,g,8)){break a}d=b+40|0;break d}if((c|0)>=18){break e}break c}if(Wj(d,135231,18)){break c}f=-4608;c=b+19|0;if((h-c|0)<16){break a}if(dA(c,g,8)){break a}d=b+35|0}f=0}f:{g:{b=h-d|0;if((b|0)<14){break g}if(Wj(d,135029,14)){break g}f=-4736;if(b>>>0<22){break a}h:{if(!Wj(d,135250,22)){break h}if(!Wj(d,135320,22)){break h}if(Wj(d,135273,22)){break a}}f=-4608;b=d+22|0;if((h-b|0)<32){break a}if(dA(b,g,16)){break a}d=d+54|0;break f}if(!f){break f}f=-4736;break a}f=-4352;b=(K[d|0]==13)+d|0;if(K[b|0]!=10){break a}d=b+1|0;f=0}if(d>>>0>=h>>>0){f=-4352;break a}c=h-d|0;if((JA(0,0,g+28|0,d,c)|0)==-44){f=-4396;break a}e=J[g+28>>2];b=Zj(1,e);if(!b){f=-4480;break a}c=JA(b,e,g+28|0,d,c);if(c){Zi[J[66509]](b,0,J[g+28>>2])|0;cj(b);f=c-4352|0;break a}i:{if(f){c=J[g+28>>2];break i}Zi[J[66509]](b,0,J[g+28>>2])|0;cj(b);f=-4864;break a}J[a+4>>2]=c;J[a>>2]=b;f=0}Ui=g+32|0;return f}function ola(a){a=a|0;var b=0,c=0,d=0,e=0,f=0,g=0,h=0,i=0,j=0,k=0,l=0,m=0,n=0;b=Ui-48|0;Ui=b;a:{b:{i=J[a+8>>2]-J[a+12>>2]>>4;if((i|0)>=2){if((kj(a,2)|0)==6){break b}}c=fj(a,119992,0);break a}J[b+32>>2]=0;J[b+36>>2]=0;J[b+24>>2]=0;J[b+28>>2]=0;J[b+16>>2]=0;J[b+20>>2]=0;J[b+8>>2]=0;J[b+12>>2]=0;Mn(a,80464,b+44|0,b+40|0,b+8|0);c:{d:{if(H[J[b+40>>2]+24|0]&1){dj(4,88458,122999,0);break d}uj(a,2);j=Lk(a,-1e4);Bj(a);k=Lk(a,-1e4);wm(a,b+8|0);l=Lk(a,-1e4);n=J[b+44>>2];f=Ui-16|0;Ui=f;e=J[b+40>>2];J[e+20>>2]=l;J[e+16>>2]=k;J[e+12>>2]=j;c=1;g=K[e+24|0];d=J[e+4>>2];if(!d){d=J[e>>2]}e:{f:{g:{h:{if(!(H[d+28|0]&1)){H[e+24|0]=g|1;break h}if(g&1){c=0;dj(4,88458,122934,0);break h}if(J[d+16>>2]!=J[d+12>>2]){H[e+24|0]=g|1;break h}c=J[d+8>>2];h=J[c+8>>2];if(!h){c=1;H[e+24|0]=g|1;break h}d=f+8|0;J[d>>2]=0;J[d+4>>2]=0;J[f>>2]=0;J[f+4>>2]=0;lj(h,4,f,d,f|4);g=J[c+8>>2];if(g){d=0;while(1){if((d|0)==(g|0)){break g}m=J[(J[c+4>>2]+P(d,80)|0)+4>>2];if(m){h=J[f+4>>2];if((h|0)==J[f+8>>2]){break f}J[f+4>>2]=h+4;J[h>>2]=m}d=d+1|0;if((g|0)!=(d|0)){continue}break}}c=HK(J[n+32>>2],f);J[e+8>>2]=c;if(c){H[e+24|0]=K[e+24|0]|1}i:{if(H[f+12|0]&1){break i}e=J[f>>2];if(!e){break i}cj(e)}c=(c|0)!=0}Ui=f+16|0;break e}Z(12664,54870,244,84789);B()}Z(112520,53895,557,53220);B()}if(c){break c}hk(a,-1e4,j);hk(a,-1e4,k);hk(a,-1e4,l)}c=fj(a,24295,0);break a}c=0;if(J[a+8>>2]-J[a+12>>2]>>4==(i|0)){break a}Z(143244,36705,214,76298);B()}Ui=b+48|0;return c|0}function lL(a,b,c,d,e){var f=0,g=0,h=0,i=0,j=0,k=0,l=0,m=0,n=0,o=0,p=0,q=0;i=Ui-16|0;Ui=i;a:{if(!J[a+1936>>2]){break a}g=J[a+1948>>2];h=J[a+664>>2];if(g>>>0>h+2>>>0){j=J[b>>2];k=J[e>>2];l=J[e+4>>2];m=J[e+8>>2];n=J[e+12>>2];o=J[c+4>>2];p=J[c+8>>2];q=J[c>>2];c=d;g=J[c+8>>2];e=J[c+12>>2];d=J[c>>2];c=J[c+4>>2];f=J[a+688>>2]+(h<<5)|0;h=J[b+8>>2];b=J[b+4>>2];H[f+4|0]=b;H[f+5|0]=b>>>8;H[f+6|0]=b>>>16;H[f+7|0]=b>>>24;H[f+8|0]=h;H[f+9|0]=h>>>8;H[f+10|0]=h>>>16;H[f+11|0]=h>>>24;H[f+12|0]=0;H[f+13|0]=0;H[f+14|0]=128;H[f+15|0]=63;H[f+16|0]=d;H[f+17|0]=d>>>8;H[f+18|0]=d>>>16;H[f+19|0]=d>>>24;H[f+20|0]=c;H[f+21|0]=c>>>8;H[f+22|0]=c>>>16;H[f+23|0]=c>>>24;H[f+24|0]=g;H[f+25|0]=g>>>8;H[f+26|0]=g>>>16;H[f+27|0]=g>>>24;H[f+28|0]=e;H[f+29|0]=e>>>8;H[f+30|0]=e>>>16;H[f+31|0]=e>>>24;H[f+32|0]=q;H[f+33|0]=q>>>8;H[f+34|0]=q>>>16;H[f+35|0]=q>>>24;H[f+36|0]=o;H[f+37|0]=o>>>8;H[f+38|0]=o>>>16;H[f+39|0]=o>>>24;H[f+40|0]=p;H[f+41|0]=p>>>8;H[f+42|0]=p>>>16;H[f+43|0]=p>>>24;H[f+44|0]=0;H[f+45|0]=0;H[f+46|0]=128;H[f+47|0]=63;H[f+56|0]=m;H[f+57|0]=m>>>8;H[f+58|0]=m>>>16;H[f+59|0]=m>>>24;H[f+60|0]=n;H[f+61|0]=n>>>8;H[f+62|0]=n>>>16;H[f+63|0]=n>>>24;H[f+48|0]=k;H[f+49|0]=k>>>8;H[f+50|0]=k>>>16;H[f+51|0]=k>>>24;H[f+52|0]=l;H[f+53|0]=l>>>8;H[f+54|0]=l>>>16;H[f+55|0]=l>>>24;H[f|0]=j;H[f+1|0]=j>>>8;H[f+2|0]=j>>>16;H[f+3|0]=j>>>24;J[a+664>>2]=J[a+664>>2]+2;break a}if(K[336480]){break a}J[i>>2]=g;dj(3,90423,122734,i);H[336480]=1}Ui=i+16|0}function nq(a,b,c,d){var e=0,f=0,g=0,h=0,i=0,j=0,k=0,l=0,m=0,n=0,o=0,p=0,q=0;e=Ui-1040|0;Ui=e;q=yj(c);J[e+8>>2]=0;h=e+16|0;J[e+4>>2]=h;J[e+12>>2]=a;l=Bm(b,c);if(l){p=e+1040|0;while(1){i=l-b|0;if(i){while(1){f=J[e+4>>2];a:{if(p>>>0>f>>>0){break a}mj(J[e+12>>2],h,f-h|0);J[e+4>>2]=h;g=J[e+8>>2];J[e+8>>2]=g+1;f=h;if((g|0)<=0){break a}f=1;j=J[e+12>>2];k=fl(j,-1);while(1){b:{g=f;m=fl(j,f^-1);f=f+1|0;n=J[e+8>>2];o=(n-g|0)>8|k>>>0>m>>>0;if(!o){break b}k=k+m|0;if((f|0)<(n|0)){continue}}break}f=o?f:g;lm(j,f);J[e+8>>2]=(J[e+8>>2]-f|0)+1;f=J[e+4>>2]}g=K[b|0];J[e+4>>2]=f+1;H[f|0]=g;b=b+1|0;i=i-1|0;if(i){continue}break}}b=d;i=yj(b);if(i){while(1){f=J[e+4>>2];c:{if(p>>>0>f>>>0){break c}mj(J[e+12>>2],h,f-h|0);J[e+4>>2]=h;g=J[e+8>>2];J[e+8>>2]=g+1;f=h;if((g|0)<=0){break c}f=1;j=J[e+12>>2];k=fl(j,-1);while(1){d:{g=f;m=fl(j,f^-1);f=f+1|0;n=J[e+8>>2];o=(n-g|0)>8|k>>>0>m>>>0;if(!o){break d}k=k+m|0;if((f|0)<(n|0)){continue}}break}f=o?f:g;lm(j,f);J[e+8>>2]=(J[e+8>>2]-f|0)+1;f=J[e+4>>2]}g=K[b|0];J[e+4>>2]=f+1;H[f|0]=g;b=b+1|0;i=i-1|0;if(i){continue}break}}b=l+q|0;l=Bm(b,c);if(l){continue}break}}c=yj(b);if(c){d=e+1040|0;while(1){f=J[e+4>>2];if(d>>>0<=f>>>0){_l(e+4|0);f=J[e+4>>2]}g=K[b|0];J[e+4>>2]=f+1;H[f|0]=g;b=b+1|0;c=c-1|0;if(c){continue}break}}b=J[e+4>>2];e:{if((b|0)==(h|0)){f=J[e+8>>2];break e}mj(J[e+12>>2],h,b-h|0);J[e+4>>2]=h;f=J[e+8>>2]+1|0;J[e+8>>2]=f}lm(J[e+12>>2],f);J[e+8>>2]=1;a=Ij(a,-1,0);Ui=e+1040|0;return a}function IL(a,b,c,d,e,f){var g=0,h=Q(0),i=Q(0),j=Q(0),k=0,l=Q(0),m=0,n=0,o=Q(0);m=Ui-16|0;Ui=m;g=J[a+100>>2];a:{if(!b|!g){break a}while(1){g=J[g+4>>2];k=k+1|0;if(k>>>0>=b>>>0){break a}if(g){continue}break}}k=0;b:{if(!g){break b}g=J[g+12>>2];if(J[g+4>>2]!=4){break b}b=K[f|0]&7;H[m+14|0]=b;H[m+15|0]=b;c:{d:{if(J[g+4>>2]==4){b=J[g+56>>2];d=P(b,c)+d|0;if(d>>>0>=P(b,J[g+52>>2])>>>0){break d}b=J[g+32>>2]+(d<<2)|0;J[b>>2]=e;H[d+J[g+36>>2]|0]=K[m+14|0];if(!(L[(J[J[g+40>>2]+8>>2]+(e<<2)|0)+2>>1]|(e|0)==-1)){J[b>>2]=-1}b=Ui-16|0;Ui=b;e:{if(!(K[a+4|0]&32)){break e}h=N[a+52>>2];i=Rj(h);N[b+12>>2]=i;h=Hj(h);N[b+8>>2]=h;l=N[a+36>>2];j=N[a+28>>2];o=N[a+32>>2];N[b+4>>2]=N[a+40>>2]-Q(Q(h*j)+Q(i*o));N[b>>2]=l-Q(Q(i*j)-Q(h*o));e=J[a+100>>2];if(!e){break e}k=J[a+88>>2]+102872|0;f=a+12|0;while(1){if((g|0)==J[e+12>>2]){a=Ui-48|0;Ui=a;if((d|0)>=J[e+28>>2]){Z(11767,41497,197,66738);B()}n=J[e+12>>2];c=J[e+24>>2]+P(d,28)|0;Zi[J[J[n>>2]+24>>2]](n,a+32|0,b,J[c+20>>2]);n=J[e+12>>2];Zi[J[J[n>>2]+24>>2]](n,a+16|0,f,J[c+20>>2]);i=N[a+16>>2];h=N[a+32>>2];l=N[a+36>>2];j=N[a+20>>2];N[c+4>>2]=l>2]=h>2];h=N[a+40>>2];l=N[a+44>>2];j=N[a+28>>2];N[c+12>>2]=l>j?l:j;N[c+8>>2]=h>i?h:i;i=N[b>>2];h=N[f>>2];N[a+12>>2]=N[f+4>>2]-N[b+4>>2];N[a+8>>2]=h-i;pV(k,J[c+24>>2],c,a+8|0);Ui=a+48|0}e=J[e+4>>2];if(e){continue}break}}Ui=b+16|0;break c}Z(72222,41688,397,49564);B()}Z(12150,41688,400,49564);B()}k=1}Ui=m+16|0;return k}function BM(a,b,c){var d=0,e=0,f=0,g=0,h=0,i=0,j=0,k=0;h=Ui-16|0;Ui=h;a:{b:{c:{d:{e:{f=L[a+20>>1];e=L[a+22>>1];f:{if((f|0)==(e|0)){b=J[a>>2];a=J[a+8>>2];J[h+4>>2]=J[65014];J[h>>2]=a-b>>2;dj(4,96107,125517,h);c=0;break f}i=J[b+16>>2];j=J[i+4>>2];d=nj(96);J[d>>2]=0;J[d+4>>2]=0;J[d+72>>2]=0;J[d+76>>2]=0;J[d+40>>2]=0;J[d+32>>2]=0;J[d+36>>2]=0;J[d+60>>2]=1065353216;J[d+52>>2]=0;J[d+56>>2]=0;J[d+44>>2]=1065353216;J[d+48>>2]=0;J[d+16>>2]=0;J[d+8>>2]=0;J[d+12>>2]=0;H[d+79|0]=0;H[d+80|0]=0;H[d+81|0]=0;H[d+82|0]=0;g=J[a+16>>2];if(!g){break e}if(f>>>0<=e>>>0){break d}I[a+22>>1]=e+1;f=L[g+(e<<1)>>1];e=L[a+52>>1];e=e>>>0<=1?1:e;I[a+52>>1]=e+1;I[d+80>>1]=e;e=J[a>>2];if(f>>>0>=J[a+4>>2]-e>>2>>>0){break b}J[e+(f<<2)>>2]=d;J[d+64>>2]=b;if(!(!c|!J[c+4>>2])){b=J[c+4>>2];J[d+68>>2]=J[c>>2];J[d+72>>2]=b}lj(j,304,d,d+8|0,d+4|0);b=J[d>>2];if((J[d+8>>2]-b|0)/304>>>0>>0){break c}c=P(j,304);J[d+4>>2]=c+b;g=L[d+80>>1];e=zs();b=0;ij(J[d>>2],0,c);c=f|g<<16;if(!j){break f}while(1){f=J[d>>2];if((J[d+4>>2]-f|0)/304>>>0<=b>>>0){break b}g=L[a+54>>1];I[a+54>>1]=g+1;if(M[i+4>>2]<=b>>>0){break a}f=f+P(b,304)|0;k=P(b,160);g=g+(b+e|0)|0;zC(f,k+J[i>>2]|0,g);J[f+276>>2]=g;if(M[i+4>>2]<=b>>>0){break a}oM(c,b,d,f,J[i>>2]+k|0);uM(f);b=b+1|0;if((j|0)!=(b|0)){continue}break}}Ui=h+16|0;return c}Z(49493,54340,151,43112);B()}Z(2701,54340,152,43112);B()}Z(144782,53895,514,59583);B()}Z(145396,53895,487,84789);B()}Z(12664,55442,270,84789);B()}function ku(a,b){var c=0,d=0,e=0,f=0,g=0,h=0,i=0,j=0;ln(a,b);a:{b:{c:{d:{switch(J[b>>2]-2|0){case 1:d=J[a+32>>2];J[a+32>>2]=-1;e=El(a,2147450902,J[J[a+12>>2]+8>>2]);if((d|0)==-1){break c}if((e|0)==-1){e=d;break b}h=J[J[a>>2]+12>>2];c=e;while(1){f=c;g=(c<<2)+h|0;i=J[g>>2];j=(i>>>14|0)-131071|0;if((j|0)!=-1){c=(c+j|0)+1|0;if((c|0)!=-1){continue}}break};d=d+(f^-1)|0;c=d>>31;if((c^d)-c>>>0>=131072){qk(J[a+12>>2],56034);c=J[g>>2]}else{c=i}J[g>>2]=(c&16383|d<<14)+2147467264;break c;case 8:c=J[b+8>>2];e=J[J[a>>2]+12>>2]+(c<<2)|0;e:{if((c|0)>0){d=e-4|0;c=J[d>>2];if(H[(c&63)+173568|0]<0){break e}}c=J[e>>2];d=e}J[d>>2]=c&-16321|!(c&16320)<<6;e=J[b+8>>2];break c;case 0:case 2:case 3:break a;default:break d}}e=JI(a,b,0)}if((e|0)==-1){break a}}c=J[b+20>>2];if((c|0)!=-1){i=J[J[a>>2]+12>>2];while(1){g=c;d=i+(c<<2)|0;f=J[d>>2];h=(f>>>14|0)-131071|0;if((h|0)!=-1){c=(c+h|0)+1|0;if((c|0)!=-1){continue}}break}e=(g^-1)+e|0;c=e>>31;if((c^e)-c>>>0>=131072){qk(J[a+12>>2],56034);f=J[d>>2]}J[d>>2]=(f&16383|e<<14)+2147467264;break a}J[b+20>>2]=e}f=J[b+16>>2];J[a+28>>2]=J[a+24>>2];f:{if((f|0)!=-1){c=J[a+32>>2];if((c|0)==-1){break f}i=J[J[a>>2]+12>>2];while(1){d=c;e=i+(c<<2)|0;g=J[e>>2];h=(g>>>14|0)-131071|0;if((h|0)!=-1){c=(c+h|0)+1|0;if((c|0)!=-1){continue}}break}c=f+(d^-1)|0;d=c>>31;if((c^d)-d>>>0>=131072){qk(J[a+12>>2],56034);g=J[e>>2]}J[e>>2]=(g&16383|c<<14)+2147467264}J[b+16>>2]=-1;return}J[a+32>>2]=f;J[b+16>>2]=-1}function bka(a,b){a=a|0;b=b|0;var c=0,d=0,e=0,f=0;d=J[b+32>>2];c=J[b+36>>2];J[a+72>>2]=J[b+32>>2];J[a+76>>2]=c;e=J[b+28>>2];c=a- -64|0;J[c>>2]=J[b+24>>2];J[c+4>>2]=e;c=J[b+20>>2];J[a+56>>2]=J[b+16>>2];J[a+60>>2]=c;c=J[b+12>>2];J[a+48>>2]=J[b+8>>2];J[a+52>>2]=c;c=J[b+4>>2];J[a+40>>2]=J[b>>2];J[a+44>>2]=c;c=J[b+12>>2];J[a+88>>2]=J[b+8>>2];J[a+92>>2]=c;c=J[b+4>>2];J[a+80>>2]=J[b>>2];J[a+84>>2]=c;c=J[b+20>>2];J[a+96>>2]=J[b+16>>2];J[a+100>>2]=c;c=J[b+28>>2];J[a+104>>2]=J[b+24>>2];J[a+108>>2]=c;c=J[b+36>>2];J[a+112>>2]=J[b+32>>2];J[a+116>>2]=c;J[a+88>>2]=3;d=J[d+8>>2];b=J[b+8>>2]==3?J[b>>2]:0;a:{b:{c:{d:{if(d){e:{if(!b){c=0;b=J[d+36>>2];e=J[d+32>>2];if((b|0)==(e|0)){break a}b=(b-e|0)/672|0;f=b>>>0<=1?1:b;b=0;while(1){d=e+P(b,672)|0;f:{if(H[d+668|0]&1){break f}c=L[d+650>>1];if((c|0)==65535){break f}if(L[d+656>>1]==65535){break e}}b=b+1|0;if((f|0)!=(b|0)){continue}break}c=0;break a}c=b&65535;e=J[d+32>>2];f=(J[d+36>>2]-e|0)/672|0;if(c>>>0>=f>>>0){break b}d=e+P(c,672)|0;if(L[d+648>>1]!=(b>>>16|0)){break d}if((c|0)!=L[d+650>>1]){break c}b=d+658|0;while(1){c=0;b=L[b>>1];if((b|0)==65535){break a}if(b>>>0>=f>>>0){break b}d=e+P(b,672)|0;b=d+654|0;if(H[d+668|0]&1){continue}c=L[d+650>>1];if((c|0)==65535){continue}break}}c=L[d+648>>1]<<16|c;break a}Z(113878,40876,2184,69657);B()}Z(47372,40876,188,69601);B()}Z(5388,40876,189,69601);B()}Z(145396,53895,487,84789);B()}J[a+120>>2]=274;J[a+80>>2]=c;J[a+84>>2]=0}function Vba(a,b,c,d,e,f,g){a=a|0;b=b|0;c=c|0;d=d|0;e=e|0;f=f|0;g=g|0;var h=0;a:{if(a){h=J[a+2080>>2];a=J[a+2076>>2];if((h-a|0)/24>>>0>b>>>0){a=a+P(b,24)|0;b=J[a+4>>2];J[c>>2]=J[a>>2];J[c+4>>2]=b;b:{c:{d:{e:{f:{g:{h:{i:{j:{k:{l:{m:{n:{o:{p:{q:{r:{c=J[a+16>>2];if((c|0)<=35663){b=0;switch(c-5120|0){case 6:break m;case 5:break n;case 4:break o;case 3:break p;case 2:break q;case 1:break r;case 0:break b;default:break c}}s:{switch(c-35664|0){case 11:break h;case 10:break i;case 2:break j;case 1:break k;case 0:break l;case 3:case 4:case 5:case 6:case 7:case 8:case 9:case 13:case 15:break c;case 16:break d;case 14:break f;case 12:break g;default:break s}}if((c|0)==36289){break e}if((c|0)!=36941){break c}b=16;break b}b=1;break b}b=2;break b}b=3;break b}b=4;break b}b=5;break b}b=6;break b}b=12;break b}b=13;break b}b=7;break b}b=14;break b}b=15;break b}b=8;break b}b=9;break b}b=11;break b}b=10;break b}b=-1}J[d>>2]=b;J[f>>2]=J[a+12>>2];J[g>>2]=J[a+8>>2];t:{u:{v:{w:{x:{y:{z:{A:{B:{C:{b=J[a+16>>2];switch(b-35664|0){case 6:case 7:case 8:case 9:break a;case 5:break v;case 4:break w;case 3:break x;case 12:break y;case 11:break z;case 2:case 10:break A;case 1:break B;case 0:break C;default:break u}}a=2;break t}a=3;break t}a=4;break t}a=9;break t}a=16;break t}a=2;break t}a=3;break t}a=4;break t}a=1;if(b-5124>>>0>=3){break a}}J[e>>2]=a}return}Z(55942,40535,3082,61190);B()}Z(152089,40535,3076,12094);B()}function Rna(a){a=a|0;var b=0,c=0,d=0,e=0,f=0,g=0,h=0,i=0,j=0;f=J[a+80>>2];if(J[f+4>>2]==J[f+8>>2]){dj(4,88293,135926,0);return-1e3}j=J[a>>2];e=L[a+92>>1];i=Ui-16|0;Ui=i;g=J[a+76>>2];d=J[g>>2];h=J[d+8>>2]-J[d+12>>2]|0;c=Sj(d,36);J[c+20>>2]=0;J[c+24>>2]=0;J[c+4>>2]=0;J[c+8>>2]=0;J[c+12>>2]=-2;J[c+16>>2]=-2;J[c>>2]=g;J[c+28>>2]=0;J[c+32>>2]=0;J[c+20>>2]=-2;uj(d,-1);J[c+12>>2]=Lk(d,-1e4);Fj(d,0,0);J[c+16>>2]=Lk(d,-1e4);Fj(d,0,0);b=Lk(d,-1e4);J[c+4>>2]=j;J[c+20>>2]=b;b=J[f+16>>2];I[c+24>>1]=e;J[c+8>>2]=b;e=i+4|0;b=e;J[b>>2]=0;J[b+4>>2]=0;J[b+8>>2]=0;J[b+8>>2]=113;J[b+4>>2]=d;J[b>>2]=114;b=nj(48);J[b>>2]=0;J[b+4>>2]=0;J[b+8>>2]=0;J[b+12>>2]=0;J[b+16>>2]=0;J[b+20>>2]=0;J[b+24>>2]=0;J[b+28>>2]=0;J[b+32>>2]=0;J[b+40>>2]=0;J[b+44>>2]=0;J[b+32>>2]=0;J[b+36>>2]=0;J[b+24>>2]=0;J[b+28>>2]=0;J[b+16>>2]=0;J[b+20>>2]=0;J[b+8>>2]=0;J[b+12>>2]=0;J[b>>2]=0;J[b+4>>2]=0;J[b+36>>2]=J[e>>2];J[b+40>>2]=J[e+4>>2];J[b+44>>2]=J[e+8>>2];J[c+28>>2]=b;e=J[g+36>>2];J[b+24>>2]=J[g+32>>2];J[b+28>>2]=e;J[b+32>>2]=J[g+40>>2];rj(d,-1e4,70378);Mj(d,-2);gj(d,-2);Nj(d,-1e4,J[c+12>>2]);Ok(d);FB(J[c+8>>2]);b=J[d+8>>2];J[b+8>>2]=0;J[d+8>>2]=b+16;Ok(d);if(h>>4!=J[d+8>>2]-J[d+12>>2]>>4){Z(143244,37509,2536,70270);B()}Ui=i+16|0;e=a- -64|0;b=J[e+4>>2];h=J[c+28>>2];J[h+12>>2]=J[e>>2];J[h+16>>2]=b;J[h+20>>2]=J[e+8>>2];b=J[f+4>>2];if((b|0)!=J[f+8>>2]){J[f+4>>2]=b+4;J[b>>2]=c;J[J[a+88>>2]>>2]=c;return 0}Z(112520,53895,557,53220);B()}function zla(a){a=a|0;var b=0,c=0,d=0,e=Q(0),f=0,g=0,h=0,i=Q(0),j=Q(0),k=Q(0),l=0,m=Q(0),n=Q(0);f=Ui-32|0;Ui=f;l=pj(f+12|0,a,0,36839,293);b=qj(a,1,J[79308],3640);d=J[b+8>>2];c=J[b+12>>2];a:{if(!(d|c)){break a}if(xk(J[b+4>>2],d,c)){break a}J[f>>2]=tj(J[b+8>>2],J[b+12>>2]);fj(a,102051,f)}b=J[b>>2];h=wj(a,2);b:{if(h<4294967296&h>=0){a=~~h>>>0;break b}a=0}d=Ui-16|0;Ui=d;c:{if(!(K[J[b+88>>2]+102868|0]&2)){d:{if((a|0)==J[b>>2]){break d}J[b>>2]=a;Hr(b);e:{if(J[b>>2]){break e}J[b+72>>2]=0;J[b+64>>2]=0;J[b+68>>2]=0;e=N[b+56>>2];N[b+52>>2]=e;m=N[b+48>>2];c=J[b+48>>2];n=N[b+44>>2];J[b+36>>2]=J[b+44>>2];J[b+40>>2]=c;i=Rj(e);N[d+12>>2]=i;e=Hj(e);N[d+8>>2]=e;j=N[b+28>>2];k=N[b+32>>2];N[d+4>>2]=m-Q(Q(e*j)+Q(i*k));N[d>>2]=n-Q(Q(i*j)-Q(e*k));a=J[b+100>>2];if(!a){break e}c=J[b+88>>2]+102872|0;g=b+12|0;while(1){WE(a,c,d,g);a=J[a+4>>2];if(a){continue}break}}a=L[b+4>>1];if(!(a&2)){J[b+144>>2]=0;I[b+4>>1]=a|2}J[b+84>>2]=0;J[b+76>>2]=0;J[b+80>>2]=0;a=J[b+100>>2];if(!a){break d}while(1){g=J[a+8>>2];f:{if(!g){break f}b=J[g+112>>2];if(b){while(1){c=J[b+4>>2];if(!(J[c+48>>2]!=(a|0)&J[c+52>>2]!=(a|0))){J[c+4>>2]=J[c+4>>2]|8}b=J[b+12>>2];if(b){continue}break}}b=J[g+88>>2];if(!b|J[a+28>>2]<=0){break f}c=b+102872|0;b=0;while(1){oV(c,J[(J[a+24>>2]+P(b,28)|0)+24>>2]);b=b+1|0;if((b|0)>2]){continue}break}}a=J[a+4>>2];if(a){continue}break}}Ui=d+16|0;break c}Z(62621,36890,115,64479);B()}oj(l);Ui=f+32|0;return 0}function dna(a){a=a|0;var b=0,c=0,d=0,e=0,f=0,g=0,h=0,i=0,j=0,k=0,l=0,m=0;h=Ui-16|0;Ui=h;J[h+12>>2]=0;g=-13;a:{if(!dk(J[a+20>>2],J[a+24>>2],J[55330],h+12|0,0)){b=J[h+12>>2];c=J[b+24>>2];b:{if(c){YD(J[b+12>>2],J[b+16>>2],J[b+20>>2],c);break b}if(J[b+16>>2]){break b}c=J[b+32>>2];J[b+12>>2]=J[b+28>>2];J[b+16>>2]=c}k=J[a+4>>2];b=J[k+4>>2];c=J[k>>2];if((b|0)!=(c|0)){b=b-c>>2;l=b>>>0<=1?1:b;g=0;while(1){b=J[k>>2];if(J[k+4>>2]-b>>2>>>0<=g>>>0){break a}e=J[h+12>>2];i=J[a+36>>2];c=J[i>>2];j=J[i+4>>2];d=J[b+(g<<2)>>2];b=d;if(b){b=J[b+124>>2]}else{b=0}i=J[b+8>>2]-J[b+12>>2]>>4;c:{f=J[d+48>>2];if(!f){break c}f=J[J[d+44>>2]+(mxa(c,j,f)<<2)>>2];if((f|0)==-1){break c}m=J[d+52>>2];while(1){d=m+(f<<4)|0;if(J[d>>2]!=(c|0)|J[d+4>>2]!=(j|0)){f=J[d+12>>2];if((f|0)!=-1){continue}break c}break}f=J[e+16>>2];j=J[e+(f?12:0)>>2];c=J[d+8>>2];e=J[e+(f?16:4)>>2];d=ml(J[c>>2],e);J[c+4>>2]=e;J[c>>2]=d;hj(d,j,e);d:{if(XJ(b,j,e,J[c+8>>2])){xj(b,J[c+8>>2]);e=Ol(b,1,-1,0);c=J[b+8>>2]-J[b+12>>2]>>4;if(!e){break d}if((c|0)==(i|0)){break c}Z(143244,41758,173,66180);B()}if(J[b+8>>2]-J[b+12>>2]>>4==(i|0)){break c}Z(143244,41758,181,66180);B()}gj(b,(c^-1)+i|0);if(J[b+8>>2]-J[b+12>>2]>>4==(i|0)){break c}Z(143244,41758,184,66180);B()}g=g+1|0;if((l|0)!=(g|0)){continue}break}}c=J[a+36>>2];b=J[c+8>>2];J[c+16>>2]=(J[a+24>>2]-J[J[b>>2]+4>>2]|0)+4;Uj(J[b>>2]);J[b>>2]=J[h+12>>2];g=0}Ui=h+16|0;return g|0}Z(145396,53895,487,84789);B()}function J3(a){a=a|0;var b=0,c=Q(0),d=Q(0),e=Q(0),f=Q(0),g=0,h=Q(0),i=Q(0),j=Q(0),k=Q(0),l=Q(0),m=Q(0),n=Q(0),o=Q(0),p=Q(0);g=Ui-96|0;Ui=g;b=qj(a,1,J[215720],0);k=N[b+8>>2];l=N[b>>2];m=N[b+4>>2];if(!(!(l!=l|m!=m)&k==k)){O[g+88>>3]=k;O[g+80>>3]=m;J[g+64>>2]=1;O[g+72>>3]=l;fj(a,138436,g- -64|0);k=N[b+8>>2];m=N[b+4>>2];l=N[b>>2]}b=qj(a,2,J[215720],0);e=N[b+8>>2];f=N[b>>2];h=N[b+4>>2];if(!(!(f!=f|h!=h)&e==e)){O[g+56>>3]=e;O[g+48>>3]=h;J[g+32>>2]=2;O[g+40>>3]=f;fj(a,138436,g+32|0);e=N[b+8>>2];h=N[b+4>>2];f=N[b>>2]}b=qj(a,3,J[215720],0);i=N[b+8>>2];c=N[b>>2];d=N[b+4>>2];if(!(!(c!=c|d!=d)&i==i)){O[g+24>>3]=i;O[g+16>>3]=d;J[g>>2]=3;O[g+8>>3]=c;fj(a,138436,g);i=N[b+8>>2];d=N[b+4>>2];c=N[b>>2]}b=Sj(a,64);J[b+60>>2]=1065353216;J[b+44>>2]=0;J[b+28>>2]=0;J[b+12>>2]=0;e=Q(k-e);h=Q(m-h);j=Q(l-f);f=Q(Q(1)/Q(Y(Q(Q(e*e)+Q(Q(h*h)+Q(j*j))))));e=Q(e*f);N[b+40>>2]=e;h=Q(h*f);N[b+24>>2]=h;f=Q(j*f);N[b+8>>2]=f;N[b+56>>2]=-Q(Q(l*f)+Q(Q(m*h)+Q(k*e)));n=c;c=Q(Q(1)/Q(Y(Q(Q(i*i)+Q(Q(d*d)+Q(c*c))))));j=Q(n*c);o=Q(d*c);d=Q(Q(j*h)-Q(o*f));n=d;p=Q(d*d);i=Q(i*c);d=Q(Q(i*f)-Q(j*e));c=Q(Q(o*e)-Q(i*h));j=Q(Q(1)/Q(Y(Q(p+Q(Q(d*d)+Q(c*c))))));i=Q(n*j);N[b+32>>2]=i;d=Q(d*j);N[b+16>>2]=d;c=Q(c*j);N[b>>2]=c;j=Q(Q(f*d)-Q(h*c));N[b+36>>2]=j;f=Q(Q(e*c)-Q(f*i));N[b+20>>2]=f;e=Q(Q(h*i)-Q(e*d));N[b+4>>2]=e;N[b+48>>2]=-Q(Q(l*c)+Q(Q(m*d)+Q(k*i)));N[b+52>>2]=-Q(Q(l*e)+Q(Q(m*f)+Q(k*j)));rj(a,-1e4,106883);Mj(a,-2);Ui=g+96|0;return 1}function nda(a){a=a|0;var b=0,c=0,d=0,e=0,f=0,g=0,h=0,i=0,j=0;c=Ui-96|0;Ui=c;j=J[a+8>>2]-J[a+12>>2]>>4;e=mk(a,1);h=Yi;b=Iu(a,2);if((kj(a,3)|0)==5){uj(a,3);rj(a,-1,43314);g=st(a,43314,0);gj(a,-2);gj(a,-2)}f=J[(J[b+4>>2]==2?J[b>>2]+4|0:b)>>2];d=Xp(a,J[78228],e,h,81654);i=J[d+4>>2];a:{b:{c:{if(g){if((f|0)!=(i|0)){J[c+92>>2]=0;g=Mq(f,c+92|0);if(g){break c}ot(J[d+4>>2]);J[d+4>>2]=f;J[d+16>>2]=J[c+92>>2];J[d+20>>2]=Ty(f);if(J[b+4>>2]==2){vj(J[78228],J[b>>2])}Ns(J[78228],d)}J[b+8>>2]=e;J[b+12>>2]=h;J[b>>2]=d;J[b+4>>2]=2;I[b+16>>1]=Ax(J[78228],d);break b}J[c+92>>2]=0;b=Mq(i,c+92|0);if(b){d=tj(e,h);e=b>>>0>11?14245:J[(b<<2)+265952>>2];J[c+72>>2]=b;J[c+68>>2]=e;J[c+64>>2]=d;b=fj(a,132210,c- -64|0);break a}J[c+88>>2]=0;b=Mq(f,c+88|0);if(b){e=b>>>0>11?14245:J[(b<<2)+265952>>2];J[c+52>>2]=b;J[c+48>>2]=e;b=fj(a,132295,c+48|0);break a}d:{if(J[c+92>>2]!=J[c+88>>2]){b=tS(f,c+84|0);if(b){break d}ot(J[d+4>>2]);J[d+4>>2]=J[c+84>>2];J[d+16>>2]=J[c+88>>2];break b}b=sS(i,f);if(!b){break b}e=b>>>0>11?14245:J[(b<<2)+265952>>2];J[c+20>>2]=b;J[c+16>>2]=e;b=fj(a,132253,c+16|0);break a}e=b>>>0>11?14245:J[(b<<2)+265952>>2];J[c+36>>2]=b;J[c+32>>2]=e;b=fj(a,140453,c+32|0);break a}b=g>>>0>11?14245:J[(g<<2)+265952>>2];J[c+4>>2]=g;J[c>>2]=b;b=fj(a,132295,c);break a}pE(i);Fr(J[d+4>>2],d+24|0);J[d+8>>2]=e;J[d+12>>2]=h;b=0;if(J[a+8>>2]-J[a+12>>2]>>4==(j|0)){break a}Z(143244,42133,3237,35136);B()}Ui=c+96|0;return b|0}function $F(a,b,c,d,e,f){var g=0,h=Q(0),i=0,j=0,k=0,l=0,m=Q(0),n=0,o=0,p=Q(0),q=0,r=0,s=0,t=Q(0),u=Q(0),v=Q(0),w=Q(0),x=0,y=0,z=0;g=Ui-16|0;Ui=g;J[g+8>>2]=a;v=N[e+4>>2];o=J[e>>2];while(1){r=J[g+8>>2];J[g+4>>2]=r;l=0;k=0;h=Q(0);m=Q(0);while(1){e=jr(g+8|0);a:{if(!e){break a}l=l+1|0;if((e|0)==10|(e|0)==8203){break a}if((e|0)!=32){continue}}b:{if((l|0)<=0){break b}J[g+12>>2]=r;j=0;h=Q(0);s=0;n=l-((e|0)!=0)|0;c:{if(!n){break c}while(1){i=(y=jr(g+12|0),z=J[o>>2],x=J[o+32>>2],Zi[x](y|0,z|0)|0);if(!i){i=Zi[J[o+32>>2]](126,J[o>>2])|0}if(i){j=i;h=Q(h+Q(v+N[j+8>>2]))}s=s+1|0;if((n|0)!=(s|0)){continue}break}if(!j){break c}i=K[o+179|0];d:{if(i&1){h=Q(h+Q(i>>>1>>>0));break d}w=N[j+12>>2];e:{if(!(!f|J[j>>2]!=32)){t=N[j+8>>2];p=t;break e}t=N[j+8>>2];p=Q(M[j+4>>2])}f:{if(p=Q(0)){i=~~p>>>0;break f}i=0}h=Q(h-Q(t-Q(w+Q(i>>>0))))}h=Q(h-v)}g:{h:{if(b>=h){J[g+4>>2]=J[g+8>>2];if((e|0)==10|f){break g}e=jr(g+8|0);if(!e){break h}while(1){l=l+1|0;if((e|0)!=8203&(e|0)!=32){break g}e=jr(g+8|0);if(e){continue}break}break h}if(!k){k=0;break b}J[g+8>>2]=J[g+4>>2];e=jr(g+4|0);break b}k=n;e=0;m=h;break b}k=n;m=h}i:{if(!(b>=h)){break i}switch(e|0){case 0:case 10:break i;default:continue}}break}j:{if(q>>>0>=128){break j}i=(e|0)!=0;n=!k&b0|i)){break j}k=(q<<3)+c|0;I[k+6>>1]=j;I[k+4>>1]=r-a;m=n?h:m;N[k>>2]=m;u=m>2]=u;Ui=g+16|0;return q}function m5(a,b){a=a|0;b=b|0;var c=0,d=0,e=0,f=0,g=0,h=0,i=0,j=0,k=0,l=0,m=0,n=0;c=J[55863];e=c;f=yj(c);c=Ui-16|0;Ui=c;a:{if(f>>>0<17){J[c+8>>2]=0;J[c+12>>2]=0;J[c>>2]=0;J[c+4>>2]=0;k=hj(c,e,f);if(b>>>0>=8){n=b&-8;g=b>>>3|0;while(1){f=d;c=h;l=0;e=0;while(1){i=f;f=J[((e&3)<<2|k)>>2];f=i+((f<<24|(f&65280)<<8|(f>>>8&65280|f>>>24))+e^(c<<4^c>>>5)+c)|0;e=e-1640531527|0;i=J[(e>>>9&12|k)>>2];c=((f<<4^f>>>5)+f^(i<<24|(i&65280)<<8|(i>>>8&65280|i>>>24))+e)+c|0;l=l+1|0;if((l|0)!=32){continue}break}e=(m<<3)+a|0;i=J[e+4>>2];J[e>>2]=J[e>>2]^(f<<24|(f&65280)<<8|(f>>>8&65280|f>>>24));J[e+4>>2]=(c<<24|(c&65280)<<8|(c>>>8&65280|c>>>24))^i;m=m+1|0;h=h+1|0;d=h?d:d+1|0;if((g|0)!=(h|0)|d){continue}break}a=a+n|0}e=0;c=0;while(1){d=J[((c&3)<<2|k)>>2];j=((d<<24|(d&65280)<<8|(d>>>8&65280|d>>>24))+c^(g<<4^g>>>5)+g)+j|0;c=c-1640531527|0;d=J[(c>>>9&12|k)>>2];g=((j<<4^j>>>5)+j^(d<<24|(d&65280)<<8|(d>>>8&65280|d>>>24))+c)+g|0;e=e+1|0;if((e|0)!=32){continue}break}d=g<<24|(g&65280)<<8|(g>>>8&65280|g>>>24);h=j<<24|(j&65280)<<8|(j>>>8&65280|j>>>24);b=b&7;b:{if(!b){break b}H[a|0]=h^K[a|0];if((b|0)==1){break b}H[a+1|0]=K[a+1|0]^h>>>8;if((b|0)==2){break b}H[a+2|0]=K[a+2|0]^h>>>16;if((b|0)==3){break b}H[a+3|0]=K[a+3|0]^h>>>24;if((b|0)==4){break b}H[a+4|0]=d^K[a+4|0];if((b|0)==5){break b}H[a+5|0]=K[a+5|0]^d>>>8;if((b|0)==6){break b}H[a+6|0]=K[a+6|0]^d>>>16}Ui=k+16|0;break a}Z(105952,37487,59,89362);B()}return 0}function BP(a,b){var c=0,d=0,e=0,f=0,g=0,h=0;d=Ui-32|0;Ui=d;f=J[a+8>>2]-J[a+12>>2]>>4;Al(a,1,J[J[pk(a)+80>>2]+8>>2],81707,d+28|0,0,0);c=mk(a,2);a:{e=Yi;g=vy(J[d+28>>2],c,e);b:{if((g|0)==-1){J[d>>2]=tj(c,e);dj(4,88458,134126,d);b=J[a+8>>2];J[b+8>>2]=0;J[a+8>>2]=b+16;if((f+1|0)==J[a+8>>2]-J[a+12>>2]>>4){break b}Z(143334,40250,352,15713);B()}c=Ej(a,3);e=Ej(a,4);sy(J[d+28>>2],d+24|0,d+20|0,d+16|0,d+12|0);h=c-1|0;c=J[J[d+28>>2]+156>>2];J[d+8>>2]=h-J[c+36>>2];J[d+4>>2]=(e-1|0)-J[c+40>>2];c:{c=J[d+8>>2];d:{if((c|0)<0|(c|0)>=J[d+16>>2]){break d}e=J[d+4>>2];if((e|0)<0){break d}if((e|0)>2]){break c}}dj(4,88458,126050,0);b=J[a+8>>2];J[b+8>>2]=0;J[a+8>>2]=b+16;if((f+1|0)==J[a+8>>2]-J[a+12>>2]>>4){break b}Z(143334,40250,369,15713);B()}c=hQ(J[d+28>>2],g,c,e);e:{if(b){Fj(a,0,0);mj(a,5432,5);b=J[a+8>>2];J[b+8>>2]=3;O[b>>3]=c|0;J[a+8>>2]=J[a+8>>2]+16;Xj(a,-3);c=J[d+28>>2];b=J[c+156>>2];b=K[J[d+8>>2]+(J[c+104>>2]+P(J[b+28>>2],J[d+4>>2]+P(g,J[b+32>>2]&2147483647)|0)|0)|0]&7;mj(a,43246,6);c=J[a+8>>2];J[c+8>>2]=1;J[c>>2]=b&1;J[a+8>>2]=J[a+8>>2]+16;Xj(a,-3);mj(a,43239,6);c=J[a+8>>2];J[c+8>>2]=1;J[c>>2]=(b&2)!=0;J[a+8>>2]=J[a+8>>2]+16;Xj(a,-3);mj(a,111511,9);c=J[a+8>>2];J[c+8>>2]=1;J[c>>2]=(b&4)!=0;J[a+8>>2]=J[a+8>>2]+16;Xj(a,-3);break e}b=J[a+8>>2];J[b+8>>2]=3;O[b>>3]=c|0;J[a+8>>2]=J[a+8>>2]+16}if((f+1|0)!=J[a+8>>2]-J[a+12>>2]>>4){break a}}Ui=d+32|0;return}Z(143334,40250,402,15713);B()}function rM(a,b,c,d,e,f,g,h){var i=0,j=0,k=0,l=0,m=0,n=0,o=0,p=0,q=0,r=Q(0);a:{b:{if(!b){break b}i=b&65535;j=J[a+4>>2];a=J[a>>2];if(i>>>0>=j-a>>2>>>0){break a}l=J[a+(i<<2)>>2];if(L[l+80>>1]==(b>>>16|0)){break b}l=0;dj(4,96107,66969,0)}c:{d:{a=J[l+4>>2];b=J[l>>2];if((a|0)!=(b|0)){a=(a-b|0)/304|0;p=a>>>0<=1?1:a;while(1){a=J[l>>2];if((J[l+4>>2]-a|0)/304>>>0<=m>>>0){break a}i=a+P(m,304)|0;if(J[i+128>>2]==(c|0)&J[i+132>>2]==(d|0)){j=J[i+76>>2];k=J[i+72>>2];o=j-k|0;n=(o|0)/96|0;e:{if((k|0)!=(j|0)){q=n>>>0<=1?1:n;b=0;while(1){a=P(b,96)+k|0;if((e|0)==J[a>>2]&(f|0)==J[a+4>>2]){break e}b=b+1|0;if((q|0)!=(b|0)){continue}break}}a=i+76|0;b=J[i+80>>2];if((j|0)==(b|0)){if(H[i+84|0]&1){break d}lj(n+4|0,96,i+72|0,i+80|0,a);k=J[i+72>>2];j=J[i+80>>2]}else{j=b}b=n+1|0;if((j-k|0)/96>>>0>>0){break c}J[a>>2]=P(b,96)+k;if(o>>>0>=4294967200){break a}a=k+o|0;J[a>>2]=e;J[a+4>>2]=f}N[a+16>>2]=N[g>>2];N[a+20>>2]=N[g+4>>2];N[a+24>>2]=N[g+8>>2];N[a+28>>2]=N[g+12>>2];N[a+32>>2]=N[g+16>>2];N[a+36>>2]=N[g+20>>2];N[a+40>>2]=N[g+24>>2];N[a+44>>2]=N[g+28>>2];N[a+48>>2]=N[g+32>>2];N[a+52>>2]=N[g+36>>2];N[a+56>>2]=N[g+40>>2];N[a+60>>2]=N[g+44>>2];N[a+64>>2]=N[g+48>>2];N[a+68>>2]=N[g+52>>2];N[a+72>>2]=N[g+56>>2];r=N[g+60>>2];H[a+80|0]=h;N[a+76>>2]=r;H[i+296|0]=K[i+296|0]|8}m=m+1|0;if((p|0)!=(m|0)){continue}break}}return}Z(151729,53895,501,2284);B()}Z(144782,53895,514,59583);B()}Z(145396,53895,487,84789);B()}function Vfa(a){a=a|0;var b=0,c=0,d=0,e=0,f=0,g=0,h=0,i=0,j=0,k=0,l=0,m=0,n=0,o=0,p=0,q=0;c=Ui-160|0;Ui=c;J[c+156>>2]=0;k=J[a+4>>2];b=J[a>>2];N[c+32>>2]=N[b>>2];N[c+36>>2]=N[b+4>>2];N[c+40>>2]=N[b+8>>2];N[c+44>>2]=N[b+12>>2];N[c+48>>2]=N[b+16>>2];N[c+52>>2]=N[b+20>>2];N[c+56>>2]=N[b+24>>2];N[c+60>>2]=N[b+28>>2];N[c+64>>2]=N[b+32>>2];N[c+68>>2]=N[b+36>>2];N[c+72>>2]=N[b+40>>2];N[c+76>>2]=N[b+44>>2];N[c+80>>2]=N[b+48>>2];N[c+84>>2]=N[b+52>>2];N[c+88>>2]=N[b+56>>2];N[c+92>>2]=N[b+60>>2];N[c+96>>2]=N[b+64>>2];N[c+100>>2]=N[b+68>>2];N[c+104>>2]=N[b+72>>2];N[c+108>>2]=N[b+76>>2];N[c+112>>2]=N[b+80>>2];N[c+116>>2]=N[b+84>>2];N[c+120>>2]=N[b+88>>2];N[c+124>>2]=N[b+92>>2];J[c+128>>2]=J[b+96>>2];a:{l=J[a+12>>2];if(l){while(1){i=J[a+8>>2]+P(h,48)|0;b=i;e=J[b+16>>2];b=J[b+20>>2];d=e&65535;f=J[k+4>>2];if(d>>>0>=J[k+8>>2]-f>>2>>>0){break a}j=J[f+(d<<2)>>2];g=J[j+156>>2];p=J[g+28>>2];q=J[g+32>>2];d=J[j+152>>2];if(!d){d=J[g>>2]}f=J[d+96>>2];d=J[f+32>>2];m=J[g+36>>2];n=J[f+36>>2];o=J[g+40>>2];J[c+24>>2]=0;g=(b>>>11&2097120)+o|0;N[c+20>>2]=P(g,n)|0;f=(((b&134217727)<<5|e>>>27)&2097120)+m|0;N[c+16>>2]=P(d,f)|0;J[c+8>>2]=0;e=g+32|0;b=o+(q&2147483647)|0;N[c+4>>2]=P(n,(b|0)>(e|0)?e:b)|0;e=f+32|0;b=m+p|0;N[c>>2]=P(d,(b|0)>(e|0)?e:b)|0;b=IC(c+32|0,j+32|0,c+16|0,c);J[i+36>>2]=J[i+36>>2]&-16385|(b?16384:0);h=h+1|0;if((l|0)!=(h|0)){continue}break}}Ui=c+160|0;return}Z(145396,53895,487,84789);B()}function sS(a,b){var c=0,d=0,e=0,f=0,g=0,h=0,i=0,j=0,k=0,l=0,m=0,n=0,o=0,p=0,q=0,r=0;f=Ui-32|0;Ui=f;c=J[216330];a:{l=a+1|0;b:{if(l>>>0<=1){h=J[c+8>>2];d=0;break b}h=J[c+8>>2];e=a&65535;if(h>>>0<=e>>>0){break a}g=J[J[c>>2]+(e<<2)>>2];d=0;if(!g){break b}d=L[J[c+4>>2]+(e<<1)>>1]==(a>>>16|0)?g:0}e=b&65535;if(e>>>0>=h>>>0){break a}m=J[c>>2];g=J[m+(e<<2)>>2];n=J[c+4>>2];o=L[n+(e<<1)>>1]!=(b>>>16|0);j=o?0:g;k=K[j+34|0];c:{if((k|0)!=K[d+34|0]){b=8;break c}d:{if(!k){break d}q=J[j+4>>2];r=J[d+4>>2];while(1){c=i<<4;e=c+q|0;b=J[e>>2];c=c+r|0;p=J[e+4>>2];if(!((b|0)!=J[c>>2]|(p|0)!=J[c+4>>2]|J[e+8>>2]!=J[c+8>>2]|(K[e+12|0]!=K[c+12|0]|K[e+13|0]!=K[c+13|0]))){i=i+1|0;if((k|0)!=(i|0)){continue}break d}break}d=tj(b,p);h=J[e+8>>2];a=K[e+12|0];if(a>>>0>8){a=64412}else{a=J[(a<<2)+266e3>>2]}e=K[e+13|0];g=tj(J[c>>2],J[c+4>>2]);i=J[c+8>>2];b=K[c+12|0];if(b>>>0>8){b=64412}else{b=J[(b<<2)+266e3>>2]}J[f+28>>2]=K[c+13|0];J[f+24>>2]=b;J[f+20>>2]=i;J[f+16>>2]=g;J[f+12>>2]=e;J[f+8>>2]=a;J[f+4>>2]=h;J[f>>2]=d;dj(4,99340,135623,f);b=9;break c}d=M[j+28>>2]>M[d+28>>2];b=d?4:3;if(l>>>0<2|d){break c}c=a&65535;if(c>>>0>=h>>>0){break a}b=3;d=J[(c<<2)+m>>2];if(!d|L[(c<<1)+n>>1]!=(a>>>16|0)){break c}a=J[d>>2];d=Wj(a+P(J[d+24>>2],J[d+28>>2])|0,173904,16);b=d?1:3;if(d|o){break c}b=J[g>>2];d=P(J[g+24>>2],J[g+28>>2]);if(Wj(b+d|0,173904,16)){b=1;break c}hj(a,b,d);b=0}Ui=f+32|0;return b}Z(2686,54230,244,5438);B()}function pia(a){a=a|0;var b=0,c=0,d=0,e=0,f=0,g=0,h=Q(0),i=Q(0),j=Q(0),k=Q(0),l=0;e=Ui-48|0;Ui=e;b=J[a+1040>>2];d=J[b+32>>2];b=J[b+28>>2];c=J[b+16>>2];if(d>>>0>2]-c>>3>>>0){c=J[c+(d<<3)>>2];g=J[b>>2];if(c>>>0<(J[b+4>>2]-g|0)/240>>>0){d=J[a+1052>>2];f=d;b=J[a+1048>>2];l=b+1|0;d=l?d:d+1|0;J[a+1048>>2]=l;J[a+1052>>2]=d;c=g+P(c,240)|0;a:{if(!f&b>>>0<=3){d=b;b:{c:{d:{switch(b-1|0){default:f=c+68|0;g=c- -64|0;b=c+72|0;break c;case 0:b=c+88|0;f=c+84|0;g=c+80|0;k=N[c+92>>2];c=4;break b;case 1:f=c+100|0;g=c+96|0;b=c+104|0;break c;case 2:break d}}f=c+116|0;g=c+112|0;b=c+120|0}c=3}h=N[g>>2];i=N[f>>2];j=N[b>>2];b=bj(J[(d<<2)+224400>>2]);N[a+28>>2]=k;N[a+24>>2]=j;N[a+20>>2]=i;N[a+16>>2]=h;J[a+8>>2]=c;J[a>>2]=b;J[a+4>>2]=Yi;d=1;break a}d=b-4|0;if((b>>>0<4|0)==(f|0)&d>>>0<=3){rq(e,c);e:{f:{switch(b-5|0){default:h=N[e+24>>2];i=N[e+20>>2];j=N[e+16>>2];b=3;break e;case 0:k=N[e+12>>2];h=N[e+8>>2];i=N[e+4>>2];j=N[e>>2];b=4;break e;case 1:i=Q(N[e+36>>2]/Q(N[c+116>>2]*N[c+100>>2]));j=Q(N[e+32>>2]/Q(N[c+112>>2]*N[c+96>>2]));h=N[e+40>>2];b=3;break e;case 2:break f}}h=N[e+40>>2];i=N[e+36>>2];j=N[e+32>>2];b=3}J[a+8>>2]=b;b=bj(J[(d<<2)+224416>>2]);N[a+28>>2]=k;N[a+24>>2]=h;N[a+20>>2]=i;N[a+16>>2]=j;J[a>>2]=b;J[a+4>>2]=Yi;d=1;break a}d=0;if((b|0)!=8|f){break a}J[a+8>>2]=6;H[a+16|0]=K[c+234|0]>>>2&1;J[a>>2]=bj(75216);J[a+4>>2]=Yi;d=1}Ui=e+48|0;return d|0}}Z(145396,53895,487,84789);B()}function JQ(a,b){var c=0,d=0,e=0,f=0,g=0,h=0,i=0,j=0,k=0,l=0,m=0,n=0,o=0,p=0;c=Ui-112|0;Ui=c;f=Aj(a,1,0);J[c+108>>2]=82441;qy(a,f,c+108|0,1,c+96|0);Oj(a,2,5);e=qq(a,64474);g=qq(a,17039);i=qq(a,52997);j=qq(a,14691);xj(a,19887);Ck(a,2);k=In(a,19887,0);gj(a,-2);xj(a,21428);Ck(a,2);n=In(a,21428,1);gj(a,-2);a:{if(!((i|0)>0&(j|0)>0)){fj(a,111709,0);break a}if(!((e|0)!=1&e>>>0<=3)){J[c>>2]=e>>>0>3?102463:J[(e<<2)+239928>>2];fj(a,134673,c);break a}xj(a,63908);Ck(a,2);h=In(a,63908,0);gj(a,-2);b:{if(J[a+8>>2]-J[a+12>>2]>>4<3){break b}if(!kj(a,3)){break b}d=Iu(a,3);if(J[d+4>>2]==2){d=J[d>>2]+4|0}l=J[d>>2]}d=lP((i>>>0>j>>>0?i:j)&65535);c:{if(k>>>0<=d>>>0){d=k;break c}J[c+80>>2]=d;J[c+76>>2]=j;J[c+72>>2]=i;J[c+68>>2]=f;J[c+64>>2]=k;dj(3,88458,77586,c- -64|0)}if(!(l|!h)){J[c+52>>2]=f;J[c+48>>2]=h;dj(3,88458,74288,c+48|0);h=0}o=yD(g);m=gQ(e);k=g>>>0>29?-1:J[(g<<2)+159880>>2];if(!(Zi[J[79453]](J[78229],g)|0)){J[c+32>>2]=g>>>0>45?102277:J[(g<<2)+239956>>2];fj(a,134070,c+32|0);break a}if(!(!h|(m&-2)!=2)){J[c+24>>2]=e>>>0>3?102463:J[(e<<2)+239928>>2];J[c+20>>2]=f;J[c+16>>2]=h;fj(a,127611,c+16|0);break a}a=pk(a);J[b>>2]=f;f=J[c+100>>2];p=J[c+96>>2];J[b+56>>2]=d>>>0<=1?1:d;J[b+52>>2]=j;J[b+48>>2]=i;J[b+8>>2]=p;J[b+12>>2]=f;J[b+60>>2]=o;J[b+24>>2]=g;J[b+20>>2]=e;J[b+40>>2]=l;J[b+36>>2]=h;J[b+32>>2]=k;J[b+28>>2]=m;a=J[J[a+80>>2]+8>>2];J[b+64>>2]=n;J[b+16>>2]=a;J[b+44>>2]=0}Ui=c+112|0}function oH(a){var b=0,c=0,d=0,e=0,f=0,g=0;J[a+4>>2]=0;b=J[a+92>>2];if(b){Zi[b|0](J[a+88>>2],0,0)}J[a+244>>2]=0;J[a+248>>2]=0;J[a+124>>2]=0;J[a+8>>2]=0;J[a+12>>2]=0;J[a+252>>2]=0;J[a+256>>2]=0;J[a+260>>2]=0;J[a+264>>2]=0;J[a+268>>2]=0;J[a+272>>2]=0;c=J[a+184>>2];e=J[a>>2];a:{if(K[e+184|0]&2){d=J[a+100>>2];b=c;break a}d=J[a+100>>2]+8|0;b=c+8|0}J[a+108>>2]=d;J[a+192>>2]=b;f=J[e+184>>2]&2;g=b+(f?13:5)|0;J[a+204>>2]=g;J[a+200>>2]=g;J[a+196>>2]=b+(f?11:3);J[a+188>>2]=b+(f?3:-8);b=J[e+184>>2];J[a+144>>2]=0;J[a+128>>2]=0;J[a+132>>2]=0;J[a+216>>2]=0;J[a+208>>2]=0;J[a+212>>2]=0;I[a+140>>1]=0;J[a+152>>2]=0;J[a+156>>2]=0;J[a+160>>2]=0;J[a+164>>2]=0;J[a+168>>2]=0;J[a+172>>2]=0;J[a+176>>2]=0;b=b&2;e=(b?13:5)+d|0;J[a+120>>2]=e;J[a+116>>2]=e;J[a+112>>2]=(b?11:3)+d;J[a+104>>2]=(b?3:-8)+d;if(K[a+230|0]){H[a+230|0]=0}J[a+72>>2]=0;J[a+76>>2]=0;J[a+220>>2]=0;J[a+224>>2]=0;J[a+52>>2]=0;J[a+56>>2]=0;ij(c,0,16749);J[a+136>>2]=0;ij(J[a+100>>2],0,16749);b=J[a+80>>2];if(b){c=b+80|0;if(c){d=J[c+60>>2];if(d){Zi[J[J[J[c>>2]+28>>2]+32>>2]](d)}Zi[J[66509]](c,0,64)|0}c=b+144|0;if(c){d=J[c+60>>2];if(d){Zi[J[J[J[c>>2]+28>>2]+32>>2]](d)}Zi[J[66509]](c,0,64)|0}Kl(b+52|0);Kl(b- -64|0);Zi[J[66509]](b,0,212)|0;cj(J[a+80>>2]);J[a+80>>2]=0}b=J[a+60>>2];if(b){c=J[b+100>>2];if(c){hn(c);cj(J[b+100>>2]);J[b+100>>2]=0}cj(J[b+108>>2]);Zi[J[66509]](b,0,136)|0;cj(J[a+60>>2]);J[a+60>>2]=0}J[a+240>>2]=0;iw(a)}function Nqa(a,b,c){a=a|0;b=b|0;c=Q(c);var d=0,e=0,f=Q(0),g=Q(0),h=Q(0),i=Q(0),j=Q(0),k=Q(0),l=Q(0),m=Q(0),n=Q(0),o=0;d=Ui-48|0;Ui=d;e=J[b+60>>2];J[d+40>>2]=J[b+56>>2];J[d+44>>2]=e;e=J[b+52>>2];J[d+32>>2]=J[b+48>>2];J[d+36>>2]=e;f=N[b+8>>2];g=N[b>>2];h=N[b+4>>2];i=N[b+24>>2];j=N[b+16>>2];k=N[b+20>>2];l=N[b+40>>2];m=N[b+32>>2];n=N[b+36>>2];J[d+28>>2]=0;N[d+24>>2]=Q(Q(l*Q(0))+Q(Q(m*c)+Q(n*Q(0))))+N[d+40>>2];N[d+20>>2]=Q(Q(i*Q(0))+Q(Q(j*c)+Q(k*Q(0))))+N[d+36>>2];N[d+16>>2]=Q(Q(f*Q(0))+Q(Q(g*c)+Q(h*Q(0))))+N[d+32>>2];J[d+8>>2]=0;J[d+12>>2]=0;J[d>>2]=1060320051;J[d+4>>2]=0;e=d+32|0;o=d+16|0;Zi[J[J[a>>2]+8>>2]](a,e,o,d);f=N[b+8>>2];g=N[b>>2];h=N[b+4>>2];i=N[b+24>>2];j=N[b+16>>2];k=N[b+20>>2];l=N[b+40>>2];m=N[b+32>>2];n=N[b+36>>2];J[d+28>>2]=0;N[d+24>>2]=Q(Q(l*Q(0))+Q(Q(m*Q(0))+Q(c*n)))+N[d+40>>2];N[d+20>>2]=Q(Q(i*Q(0))+Q(Q(j*Q(0))+Q(c*k)))+N[d+36>>2];N[d+16>>2]=Q(Q(f*Q(0))+Q(Q(g*Q(0))+Q(c*h)))+N[d+32>>2];J[d+8>>2]=0;J[d+12>>2]=0;J[d>>2]=0;J[d+4>>2]=1060320051;Zi[J[J[a>>2]+8>>2]](a,e,o,d);f=N[b+8>>2];g=N[b>>2];h=N[b+4>>2];i=N[b+24>>2];j=N[b+16>>2];k=N[b+20>>2];l=N[b+40>>2];m=N[b+32>>2];n=N[b+36>>2];J[d+28>>2]=0;N[d+24>>2]=Q(Q(l*c)+Q(Q(m*Q(0))+Q(n*Q(0))))+N[d+40>>2];N[d+20>>2]=Q(Q(i*c)+Q(Q(j*Q(0))+Q(k*Q(0))))+N[d+36>>2];N[d+16>>2]=Q(Q(f*c)+Q(Q(g*Q(0))+Q(h*Q(0))))+N[d+32>>2];J[d+8>>2]=1060320051;J[d+12>>2]=0;J[d>>2]=0;J[d+4>>2]=0;Zi[J[J[a>>2]+8>>2]](a,e,o,d);Ui=d+48|0}function sG(a,b,c,d,e,f,g){var h=0,i=0,j=0,k=0,l=0;if(J[a+18368>>2]<=15){qm(a)}a:{h=Kt(a,c);if(h>>>0>15){a=94363;break a}l=ij(b,0,128);c=0;b:{if(!h){break b}b=J[a+18368>>2];if((h|0)>(b|0)){qm(a);b=J[a+18368>>2]}c=0;if((b|0)<(h|0)){break b}J[a+18368>>2]=b-h;j=J[a+18364>>2];i=oxa(j,h);c=h<<2;b=J[c+182080>>2];J[a+18364>>2]=i&(b^-1);c=(b&i)+((j|0)>=0?J[c+182160>>2]:0)|0}b=(P(f,72)+a|0)+18100|0;f=J[b>>2];if(!((c^f)<0|!((c&f)<0?(f|0)<(-2147483648-c|0):(f|0)>(c^2147483647)))){a=94363;break a}c=c+f|0;J[b>>2]=c;c:{b=L[g>>1];if(!b){break c}if((c|0)>=0){if(c>>>0<=32767/(b>>>0)>>>0){break c}a=94363;break a}if((c|0)>=(0-(32768/(b>>>0)|0)|0)){break c}a=94363;break a}I[l>>1]=P(b,c);c=1;while(1){if(J[a+18368>>2]<=15){qm(a)}f=J[a+18364>>2];i=L[(f>>>22&1022)+e>>1];d:{e:{if(i){b=J[a+18368>>2];j=i&15;if((b|0)<(j|0)){a=67766;break a}J[a+18368>>2]=b-j;J[a+18364>>2]=f<>>4&15)+c|0;b=K[c+181984|0]<<1;I[b+l>>1]=P(L[b+g>>1],i<<16>>16>>>8|0);c=c+1|0;break e}b=Kt(a,d);if((b|0)<0){a=94363;break a}k=b&15;if(!k){if((b|0)!=240){break d}c=c+16|0;break e}i=(b>>>4|0)+c|0;j=K[i+181984|0];f=0;c=J[a+18368>>2];if((k|0)>(c|0)){qm(a);c=J[a+18368>>2]}if((c|0)>=(k|0)){J[a+18368>>2]=c-k;f=J[a+18364>>2];h=oxa(f,k);c=k<<2;b=J[c+182080>>2];J[a+18364>>2]=h&(b^-1);f=(b&h)+((f|0)>=0?J[c+182160>>2]:0)|0}b=j<<1;I[b+l>>1]=P(L[b+g>>1],f);c=i+1|0}if((c|0)<64){continue}}break}return 1}J[218569]=a;return 0} +function n7(a,b){a=a|0;b=b|0;var c=0,d=0,e=0,f=0,g=0,h=0,i=0,j=0,k=0,l=0,m=0,n=0,o=0,p=0,q=0,r=0,s=0;j=Ui-16|0;Ui=j;a:{b:{if(J[a+1040>>2]?J[a+1044>>2]:0){break b}dj(3,95071,6399,0);J[a+1040>>2]=NM(a);d=J[245394];if(d){c=J[J[d>>2]+20>>2];if(c){Zi[c|0](J[d+4>>2],981580)|0}}if(J[a+1040>>2]?J[a+1044>>2]:0){break b}J[j>>2]=J[b+12>>2];dj(4,95071,30100,j);d=0;break a}d=Ul(J[b+12>>2],J[b+16>>2]);k=Yi;c=J[a+1044>>2];if(!J[c+36>>2]){l=Ui;m=J[(J[J[c+8>>2]>>2]<<2)+159120>>2]>>>3|0;f=m<<1;h=l-(f+16&-16)|0;Ui=h;H[f+h|0]=0;i=J[c+8>>2];r=J[i+28>>2];n=J[i+32>>2];ij(J[c+12>>2],255,J[c+16>>2]<<2);J[c+32>>2]=-1;J[c+36>>2]=0;J[c+24>>2]=J[c+20>>2];if(n){o=c+12|0;s=f|1;while(1){i=P(e,48)+r|0;g=J[i+32>>2]&2;J[i+32>>2]=g;if(g){g=J[c+36>>2];if((g|0)==((J[c+28>>2]-J[c+20>>2]|0)/24|0)){g=g+32|0;Us(o,(g<<1>>>0)/3|0,g)}Os(J[i>>2],m,h,s);_u(o,Ul(h,f),Yi,i+16|0)}e=e+1|0;if((n|0)!=(e|0)){continue}break}}Ui=l}e=J[c+16>>2];c:{if(!e){break c}e=J[J[c+12>>2]+(mxa(d,k,e)<<2)>>2];if((e|0)==-1){break c}f=J[c+20>>2];while(1){c=f+P(e,24)|0;if(J[c>>2]!=(d|0)|J[c+4>>2]!=(k|0)){e=J[c+16>>2];if((e|0)!=-1){continue}break c}break}p=J[c+8>>2];q=J[c+12>>2]}d=0;if(!(p|q)){break a}d=J[b+12>>2];c=J[b+4>>2];e=J[b+8>>2];b=Ui-16|0;Ui=b;f=J[a+1040>>2];a=J[f>>2];h=J[a+40>>2];d:{if(h){a=Zi[h|0](J[f+4>>2],p,q,d,c,e)|0;break d}J[b>>2]=tj(J[a>>2],J[a+4>>2]);dj(4,96538,22809,b);a=-1}Ui=b+16|0;d=!a}Ui=j+16|0;return d|0}function ova(a,b){a=a|0;b=b|0;var c=Q(0),d=Q(0),e=Q(0),f=Q(0),g=Q(0),h=0,i=0,j=Q(0),k=Q(0),l=Q(0),m=Q(0),n=0,o=Q(0),p=Q(0),q=Q(0),r=Q(0),s=0,t=Q(0),u=Q(0),v=Q(0);i=J[a+52>>2];n=J[i+8>>2];J[a+116>>2]=n;r=N[i+32>>2];s=J[i+32>>2];e=N[i+28>>2];h=J[i+28>>2];J[a+128>>2]=h;J[a+132>>2]=s;j=N[i+120>>2];N[a+136>>2]=j;k=N[i+128>>2];N[a+140>>2]=k;c=N[b>>2];g=N[i+116>>2];d=Q(N[a+84>>2]*Q(6.2831854820251465));f=Q(c*Q(g*Q(d*d)));d=Q(f+Q(d*Q(Q(g+g)*N[a+88>>2])));if(d>Q(1.1920928955078125e-7)){i=P(n,12);h=i+J[b+28>>2]|0;o=N[h+4>>2];p=N[h>>2];t=N[h+8>>2];h=J[b+24>>2]+i|0;l=N[h>>2];u=N[h+4>>2];g=N[h+8>>2];d=Q(c*d);c=d!=Q(0)?Q(Q(1)/d):d;N[a+108>>2]=c;f=Q(f*c);N[a+92>>2]=f;m=N[a+72>>2];d=Rj(g);v=N[a+68>>2];q=Hj(g);e=Q(v-e);m=Q(m-r);g=Q(Q(q*e)+Q(d*m));N[a+124>>2]=g;d=Q(Q(d*e)-Q(q*m));N[a+120>>2]=d;N[a+164>>2]=f*Q(Q(u+g)-N[a+80>>2]);N[a+160>>2]=f*Q(Q(l+d)-N[a+76>>2]);e=Q(c+Q(Q(Q(k*g)*g)+j));l=Q(c+Q(Q(Q(k*d)*d)+j));f=Q(g*Q(d*Q(-k)));c=Q(Q(e*l)-Q(f*f));c=c!=Q(0)?Q(Q(1)/c):c;N[a+156>>2]=e*c;N[a+144>>2]=l*c;c=Q(f*Q(-c));N[a+152>>2]=c;N[a+148>>2]=c;c=Q(t*Q(.9800000190734863));a:{if(K[b+20|0]==1){e=N[b+8>>2];f=Q(e*N[a+96>>2]);N[a+96>>2]=f;e=Q(e*N[a+100>>2]);N[a+100>>2]=e;c=Q(Q(k*Q(Q(d*e)-Q(g*f)))+c);o=Q(o+Q(j*e));p=Q(p+Q(j*f));break a}J[a+96>>2]=0;J[a+100>>2]=0}h=J[b+28>>2]+P(n,12)|0;N[h+4>>2]=o;N[h>>2]=p;N[(J[b+28>>2]+P(J[a+116>>2],12)|0)+8>>2]=c;return}Z(94466,37965,125,17895);B()}function Ft(a,b){var c=Q(0),d=Q(0),e=Q(0),f=Q(0),g=Q(0),h=Q(0),i=Q(0),j=Q(0),k=Q(0),l=Q(0),m=Q(0),n=Q(0),o=Q(0),p=Q(0),q=Q(0),r=Q(0),s=Q(0),t=Q(0),u=Q(0),v=Q(0),w=Q(0),x=Q(0),y=Q(0),z=Q(0),A=Q(0),B=Q(0),C=Q(0),D=Q(0),E=Q(0),F=Q(0),G=Q(0);g=N[b+32>>2];d=N[b+4>>2];h=N[b>>2];k=N[b+36>>2];u=Q(Q(g*d)-Q(h*k));l=N[b+8>>2];m=N[b+40>>2];v=Q(Q(g*l)-Q(h*m));i=N[b+48>>2];n=N[b+28>>2];f=Q(Q(d*m)-Q(k*l));o=N[b+24>>2];p=N[b+12>>2];q=N[b+44>>2];w=Q(Q(k*p)-Q(d*q));e=N[b+20>>2];x=Q(Q(m*p)-Q(l*q));D=Q(Q(Q(n*f)+Q(o*w))-Q(e*x));r=N[b+56>>2];s=N[b+52>>2];y=Q(Q(e*r)-Q(s*o));t=N[b+60>>2];z=Q(Q(s*n)-Q(e*t));A=Q(Q(r*n)-Q(o*t));E=Q(Q(Q(p*y)+Q(l*z))-Q(d*A));F=Q(Q(Q(k*A)-Q(q*y))-Q(m*z));j=N[b+16>>2];G=Q(Q(Q(s*x)-Q(t*f))-Q(r*w));c=Q(Q(1)/Q(Q(i*D)+Q(Q(g*E)+Q(Q(h*F)+Q(j*G)))));N[a+60>>2]=Q(Q(Q(o*u)-Q(e*v))-Q(j*f))*c;B=Q(Q(i*e)-Q(j*s));C=Q(Q(i*o)-Q(j*r));N[a+56>>2]=Q(Q(Q(l*B)-Q(d*C))-Q(h*y))*c;N[a+52>>2]=Q(Q(f*i)+Q(Q(s*v)-Q(r*u)))*c;N[a+48>>2]=Q(Q(g*y)+Q(Q(k*C)-Q(m*B)))*c;f=e;e=Q(Q(g*p)-Q(h*q));N[a+44>>2]=Q(Q(Q(f*e)-Q(n*u))-Q(j*w))*c;f=d;d=Q(Q(i*n)-Q(j*t));N[a+40>>2]=Q(Q(Q(f*d)-Q(p*B))-Q(h*z))*c;N[a+36>>2]=Q(Q(i*w)+Q(Q(t*u)-Q(s*e)))*c;N[a+32>>2]=Q(Q(g*z)+Q(Q(q*B)-Q(k*d)))*c;N[a+28>>2]=Q(Q(j*x)+Q(Q(n*v)-Q(o*e)))*c;N[a+24>>2]=Q(Q(h*A)+Q(Q(p*C)-Q(l*d)))*c;N[a+20>>2]=Q(Q(Q(r*e)-Q(t*v))-Q(i*x))*c;N[a+16>>2]=Q(Q(Q(m*d)-Q(q*C))-Q(g*A))*c;N[a+12>>2]=D*c;N[a+8>>2]=E*c;N[a+4>>2]=G*c;N[a>>2]=F*c}function EG(a,b){var c=0,d=0,e=0,f=0,g=0,h=0,i=0,j=0,k=0,l=0,m=0;l=b;h=Ui-16|0;Ui=h;k=63;a:{while(1){cj(J[248830]);b=k<<1;k=b|1;d=sj(k);J[248830]=d;if(!d){J[(J[245836]?983380:983044)>>2]=3;a=0;break a}f=d+20|0;m=b-19|0;c=J[245836]?983380:983044;g=Ui-1600|0;Ui=g;J[h+12>>2]=0;i=g+256|0;e=Ui-16|0;Ui=e;H[g|0]=0;b:{if(a){b=jG(a,255);j=-2;if(b-255>>>0<4294967042){break b}hj(g,a,b+1|0)}J[e+12>>2]=xi(a|0);ij(i,0,28);hj(i+8|0,e+12|0,4);j=1}b=j;Ui=e+16|0;c:{if((b|0)<0){d:{switch(b+11|0){case 9:J[c>>2]=1;c=0;break c;case 6:J[c>>2]=4;c=0;break c;case 8:J[c>>2]=2;c=6;break c;default:J[c>>2]=3;c=9;break c;case 0:break d}}J[c>>2]=3;c=J[245744];break c}J[d+8>>2]=2;J[d+12>>2]=4;i=0-f&3;e=b+1|0;c=68;if(((yj(a)+(i|e<<3)|0)+yj(g)|0)+18>>>0>m>>>0){break c}c=f+i|0;J[d+4>>2]=c;c=c+12|0;J[d+16>>2]=c;e=c+(e<<2)|0;if(b){c=0;while(1){f=c<<2;J[f+J[d+16>>2]>>2]=e;j=J[f+J[d+16>>2]>>2];f=J[d+12>>2];hj(j,(g+P(c,28)|0)+264|0,f);e=e+f|0;c=c+1|0;if((b|0)!=(c|0)){continue}break}c=J[d+16>>2]}J[(b<<2)+c>>2]=0;J[J[d+4>>2]>>2]=e;J[d>>2]=e;fq(e,g);b=yj(J[d>>2]);e:{if(jj(J[d>>2],a)){J[J[d+4>>2]+4>>2]=(b+e|0)+1;fq(J[J[d+4>>2]+4>>2],a);yj(J[J[d+4>>2]+4>>2]);break e}J[J[d+4>>2]+4>>2]=0}J[J[d+4>>2]+8>>2]=0;J[h+12>>2]=d;c=0}Ui=g+1600|0;if((c|0)==68){continue}break}a=J[h+12>>2]}Ui=h+16|0;J[l>>2]=a;b=0;f:{if(a){break f}b=J[(J[245836]?983380:983044)>>2];if(b){break f}a=J[245744];b=a?a:-3}return b}function oF(a,b,c){var d=Q(0),e=Q(0),f=Q(0),g=Q(0),h=Q(0),i=Q(0),j=Q(0),k=Q(0),l=Q(0),m=Q(0),n=Q(0),o=Q(0),p=Q(0),q=Q(0),r=Q(0),s=Q(0),t=Q(0),u=Q(0),v=Q(0),w=Q(0),x=Q(0),y=Q(0),z=Q(0),A=Q(0),B=Q(0),C=Q(0),D=Q(0),E=Q(0),F=Q(0),G=Q(0),H=Q(0),I=Q(0);d=N[c+12>>2];e=N[c+8>>2];f=N[c>>2];g=N[c+4>>2];h=N[c+28>>2];i=N[c+24>>2];j=N[c+16>>2];k=N[c+20>>2];l=N[c+44>>2];m=N[c+40>>2];n=N[c+32>>2];o=N[c+36>>2];p=N[b+48>>2];q=N[b+32>>2];r=N[b>>2];s=N[b+16>>2];t=N[b+52>>2];u=N[b+36>>2];v=N[b+4>>2];w=N[b+20>>2];x=N[b+56>>2];y=N[b+40>>2];z=N[b+8>>2];A=N[b+24>>2];B=N[b+60>>2];C=N[c+60>>2];D=N[b+44>>2];E=N[c+56>>2];F=N[b+12>>2];G=N[c+48>>2];H=N[b+28>>2];I=N[c+52>>2];N[a+60>>2]=Q(B*C)+Q(Q(D*E)+Q(Q(F*G)+Q(H*I)));N[a+56>>2]=Q(x*C)+Q(Q(y*E)+Q(Q(z*G)+Q(A*I)));N[a+52>>2]=Q(t*C)+Q(Q(u*E)+Q(Q(v*G)+Q(w*I)));N[a+48>>2]=Q(p*C)+Q(Q(q*E)+Q(Q(r*G)+Q(s*I)));N[a+44>>2]=Q(B*l)+Q(Q(D*m)+Q(Q(F*n)+Q(H*o)));N[a+40>>2]=Q(x*l)+Q(Q(y*m)+Q(Q(z*n)+Q(A*o)));N[a+36>>2]=Q(t*l)+Q(Q(u*m)+Q(Q(v*n)+Q(w*o)));N[a+32>>2]=Q(p*l)+Q(Q(q*m)+Q(Q(r*n)+Q(s*o)));N[a+28>>2]=Q(B*h)+Q(Q(D*i)+Q(Q(F*j)+Q(H*k)));N[a+24>>2]=Q(x*h)+Q(Q(y*i)+Q(Q(z*j)+Q(A*k)));N[a+20>>2]=Q(t*h)+Q(Q(u*i)+Q(Q(v*j)+Q(w*k)));N[a+16>>2]=Q(p*h)+Q(Q(q*i)+Q(Q(r*j)+Q(s*k)));N[a+12>>2]=Q(B*d)+Q(Q(D*e)+Q(Q(F*f)+Q(g*H)));N[a+8>>2]=Q(x*d)+Q(Q(y*e)+Q(Q(z*f)+Q(g*A)));N[a+4>>2]=Q(t*d)+Q(Q(u*e)+Q(Q(v*f)+Q(g*w)));N[a>>2]=Q(p*d)+Q(Q(q*e)+Q(Q(r*f)+Q(s*g)))}function _V(a,b,c,d,e,f){a=a|0;b=b|0;c=c|0;d=d|0;e=e|0;f=f|0;var g=Q(0),h=Q(0),i=0,j=Q(0),k=Q(0),l=0,m=0,n=0,o=0,p=0,q=Q(0),r=0,s=Q(0),t=Q(0),u=0,v=Q(0);l=J[b+48>>2];m=J[b+52>>2];g=N[b+40>>2];n=J[b+4>>2];o=J[b+44>>2];p=n+(o<<1)|0;I[p>>1]=L[p-2>>1];q=N[b+28>>2];h=N[b+32>>2];i=J[a+4>>2];r=J[a>>2];j=N[b+16>>2];s=N[b+20>>2];g=Q(g*Q(+(lxa(c<<31,c>>>1|0,d)>>>0)+ +(Yi>>>0)*4294967296));a:{if(g=Q(0)){u=~~g>>>0;if(Q(R(g))>=Q(1)){a=~~(g>Q(0)?Q(T(Q(V(Q(g*Q(2.3283064365386963e-10)))),Q(4294967296))):Q(W(Q(Q(g-Q(~~g>>>0>>>0))*Q(2.3283064365386963e-10)))))>>>0}else{a=0}break a}a=0}p=a;b:{c:{d:{if(!f){d=0;break d}v=Q(Q(1)/Q(f>>>0));k=Q(i>>>0);g=Q(Q(h-q)/k);h=Q(r>>>0);t=Q(Q(g*h)+q);q=Q(Q(g+t)-t);g=Q(Q(s-j)/k);j=Q(Q(g*h)+j);s=Q(Q(g+j)-j);d=0;a=0;while(1){r=d;i=(a<<3)+e|0;h=Q(Q(+(l>>>0)+ +(m>>>0)*4294967296)*Q(4.656612873077393e-10));k=Q(v*Q(a|0));g=Q(Q(k*s)+j);c=(d<<1)+n|0;h=Q(Q(Q(Q(1)-h)*Q(g*Q(I[c>>1])))+Q(h*Q(g*Q(I[c+2>>1]))));g=Q(+Q(Q(k*q)+t)*1.5707963267948966);N[i>>2]=Q(h*Rj(g))+N[i>>2];N[i+4>>2]=Q(h*Hj(g))+N[i+4>>2];c=m+p|0;d=l+u|0;c=d>>>0>>0?c+1|0:c;l=d&2147483647;m=0;d=((c&2147483647)<<1|d>>>31)+r|0;a=a+1|0;if((f|0)!=(a|0)){continue}break}J[b+48>>2]=l;J[b+52>>2]=m;if(r>>>0>o>>>0){break c}if(d>>>0>o>>>0){break b}}el(n,(d<<1)+n|0,o-d<<1);J[b+44>>2]=J[b+44>>2]-d;return}Z(12434,42316,1004,44024);B()}Z(5356,42316,1007,44024);B()}function qJ(a,b,c){var d=0,e=0,f=0,g=0,h=0,i=0,j=0,k=0,l=0;f=Ui-48|0;Ui=f;a:{if(c>>>0<=1){d=bx(a,J[b>>2]);break a}i=Zj(c,12);if(!i){d=-19840;break a}while(1){g=P(e,12)+i|0;J[g+8>>2]=0;J[g>>2]=1;J[g+4>>2]=0;e=e+1|0;if((e|0)!=(c|0)){continue}break}J[f+44>>2]=0;J[f+36>>2]=1;J[f+40>>2]=0;J[f+32>>2]=0;J[f+24>>2]=1;J[f+28>>2]=0;J[f+20>>2]=0;J[f+12>>2]=1;J[f+16>>2]=0;d=sk(i,J[b>>2]+24|0);b:{if(d){break b}e=1;while(1){g=P(e,12)+i|0;d=Ak(g,g-12|0,J[(e<<2)+b>>2]+24|0);if(d){break b}d=Nl(g,a);if(d){break b}e=e+1|0;if((e|0)!=(c|0)){continue}break}e=c-1|0;d=Bp(f+36|0,P(e,12)+i|0,a+4|0);if(d){break b}l=i-12|0;while(1){g=e;c:{if(!e){d=sk(f+24|0,f+36|0);if(!d){break c}break b}h=f+24|0;e=f+36|0;d=Ak(h,e,P(g,12)+l|0);if(d){break b}d=Nl(h,a);if(d){break b}d=Ak(e,e,J[(g<<2)+b>>2]+24|0);if(d){break b}d=Nl(e,a);if(d){break b}}h=f+12|0;k=f+24|0;d=Ak(h,k,k);if(d){break b}d=Nl(h,a);if(d){break b}e=(g<<2)+b|0;j=J[e>>2];d=Ak(j,j,h);if(d){break b}d=Nl(j,a);if(d){break b}j=J[e>>2]+12|0;d=Ak(j,j,h);if(d){break b}d=Nl(j,a);if(d){break b}h=J[e>>2]+12|0;d=Ak(h,h,k);if(d){break b}d=Nl(h,a);if(d){break b}d=zH(J[e>>2],J[a+8>>2]);if(d){break b}d=zH(J[e>>2]+12|0,J[a+8>>2]);if(d){break b}Dj(J[e>>2]+24|0);e=g-1|0;d=0;if(g){continue}break}}a=c>>>0<=1?1:c;Dj(f+36|0);Dj(f+24|0);Dj(f+12|0);e=0;while(1){Dj(P(e,12)+i|0);e=e+1|0;if((a|0)!=(e|0)){continue}break}cj(i)}Ui=f+48|0;return d}function U3(a){a=a|0;var b=0,c=0,d=0,e=Q(0),f=Q(0),g=Q(0),h=Q(0),i=Q(0),j=Q(0),k=Q(0),l=0,m=Q(0),n=Q(0);c=Ui-48|0;Ui=c;e=Q(wj(a,1));a:{b:{if(!kk(a,2)){break b}if(!kk(a,3)){break b}l=+Q(wj(a,2));l=+e*(+Q(wj(a,3))-l)+l;b=J[a+8>>2];J[b+8>>2]=3;O[b>>3]=l;J[a+8>>2]=J[a+8>>2]+16;a=1;break a}J[c+44>>2]=0;J[c+40>>2]=0;c:{b=vn(a,2,c+44|0);if((b|0)==5|(vn(a,3,c+40|0)|0)!=(b|0)){break c}d:{switch(b|0){case 0:b=J[c+44>>2];f=N[b+8>>2];d=J[c+40>>2];i=N[d+8>>2];j=N[d>>2];g=N[b>>2];k=N[d+4>>2];h=N[b+4>>2];b=Sj(a,16);N[b+8>>2]=f+Q(Q(i-f)*e);N[b+4>>2]=h+Q(Q(k-h)*e);N[b>>2]=g+Q(Q(j-g)*e);rj(a,-1e4,108973);Mj(a,-2);a=1;break a;case 1:b=J[c+44>>2];f=N[b+12>>2];d=J[c+40>>2];j=N[d+12>>2];k=N[d>>2];g=N[b>>2];m=N[d+4>>2];h=N[b+4>>2];n=N[d+8>>2];i=N[b+8>>2];b=Sj(a,16);N[b+12>>2]=f+Q(Q(j-f)*e);N[b+8>>2]=i+Q(Q(n-i)*e);N[b+4>>2]=h+Q(Q(m-h)*e);N[b>>2]=g+Q(Q(k-g)*e);rj(a,-1e4,106998);Mj(a,-2);a=1;break a;case 2:break d;default:break c}}b=J[c+44>>2];f=N[b+12>>2];d=J[c+40>>2];j=N[d+12>>2];k=N[d>>2];g=N[b>>2];m=N[d+4>>2];h=N[b+4>>2];n=N[d+8>>2];i=N[b+8>>2];b=Sj(a,16);N[b+12>>2]=f+Q(Q(j-f)*e);N[b+8>>2]=i+Q(Q(n-i)*e);N[b+4>>2]=h+Q(Q(m-h)*e);N[b>>2]=g+Q(Q(k-g)*e);rj(a,-1e4,16786);Mj(a,-2);a=1;break a}J[c+28>>2]=16786;J[c+24>>2]=53139;J[c+20>>2]=106998;J[c+16>>2]=53139;J[c+12>>2]=108973;J[c+8>>2]=53139;J[c+4>>2]=36513;J[c>>2]=53139;a=fj(a,116317,c)}Ui=c+48|0;return a|0}function Fva(a,b){a=a|0;b=b|0;var c=0,d=Q(0),e=0,f=Q(0),g=Q(0),h=Q(0),i=Q(0),j=0,k=Q(0),l=0,m=Q(0),n=Q(0),o=Q(0),p=Q(0),q=Q(0),r=Q(0),s=Q(0),t=Q(0),u=Q(0),v=Q(0),w=Q(0),x=Q(0),y=Q(0),z=Q(0),A=Q(0),B=Q(0),C=Q(0),D=Q(0),E=Q(0),F=Q(0),G=Q(0),H=Q(0),I=Q(0);g=N[a+240>>2];e=J[b+28>>2];c=e+P(J[a+160>>2],12)|0;i=N[c>>2];j=e+P(J[a+168>>2],12)|0;n=N[j>>2];f=N[c+4>>2];o=N[j+4>>2];h=N[a+244>>2];k=N[a+248>>2];l=e+P(J[a+164>>2],12)|0;p=N[l>>2];e=e+P(J[a+172>>2],12)|0;q=N[e>>2];r=N[l+4>>2];s=N[e+4>>2];m=N[a+252>>2];t=N[a+256>>2];u=N[c+8>>2];v=N[a+264>>2];w=N[j+8>>2];x=N[a+260>>2];y=N[l+8>>2];z=N[a+268>>2];A=N[e+8>>2];d=Q(Q(Q(Q(Q(g*Q(i-n))+Q(Q(f-o)*h))+Q(Q(k*Q(p-q))+Q(Q(r-s)*m)))+Q(Q(Q(t*u)-Q(v*w))+Q(Q(x*y)-Q(z*A))))*Q(-N[a+272>>2]));N[a+156>>2]=N[a+156>>2]+d;B=N[a+236>>2];C=N[a+220>>2];D=N[a+232>>2];E=N[a+216>>2];F=N[a+228>>2];G=N[a+212>>2];H=N[a+224>>2];I=f;f=Q(N[a+208>>2]*d);N[c+4>>2]=I+Q(h*f);N[c>>2]=i+Q(g*f);c=J[b+28>>2];N[(c+P(J[a+160>>2],12)|0)+8>>2]=u+Q(t*Q(H*d));c=c+P(J[a+164>>2],12)|0;i=Q(d*G);N[c+4>>2]=r+Q(m*i);N[c>>2]=p+Q(k*i);c=J[b+28>>2];N[(c+P(J[a+164>>2],12)|0)+8>>2]=y+Q(x*Q(d*F));c=c+P(J[a+168>>2],12)|0;f=h;h=Q(d*E);N[c+4>>2]=o-Q(f*h);N[c>>2]=n-Q(g*h);c=J[b+28>>2];N[(c+P(J[a+168>>2],12)|0)+8>>2]=w-Q(v*Q(D*d));c=c+P(J[a+172>>2],12)|0;g=Q(d*C);N[c+4>>2]=s-Q(m*g);N[c>>2]=q-Q(k*g);N[(J[b+28>>2]+P(J[a+172>>2],12)|0)+8>>2]=A-Q(z*Q(B*d))}function Ju(a){var b=0;a:{b:{c:{d:{e:{f:{g:{h:{i:{j:{k:{l:{if((a|0)<=-8705){if((a|0)<=-9729){if((a|0)<=-10241){if((a|0)<=-10497){if((a|0)==-12288){break e}if((a|0)!=-10624){break c}return 92404}if((a|0)==-10496){break f}if((a|0)!=-10368){break c}return 97869}if((a|0)<=-9985){if((a|0)==-10240){break g}if((a|0)!=-10112){break c}return 88304}if((a|0)==-9984){break h}if((a|0)!=-9856){break c}return 93645}if((a|0)<=-9217){if((a|0)<=-9473){if((a|0)==-9728){break i}if((a|0)!=-9600){break c}return 91341}if((a|0)==-9472){break j}if((a|0)!=-9344){break c}return 95206}if((a|0)<=-8961){if((a|0)==-9216){break k}if((a|0)!=-9088){break c}return 95744}if((a|0)==-8960){break l}if((a|0)!=-8832){break c}return 92774}m:{n:{if((a|0)<=-8321){if((a|0)==-8704){break m}if((a|0)==-8576){break n}if((a|0)!=-8448){break c}return 97045}b=97677;o:{switch(a+82|0){case 14:return 97707;case 12:return 97813;case 10:return 97738;case 8:return 97647;case 6:return 97619;case 4:return 97841;case 2:return 88082;case 0:return 86515;case 15:return 92371;case 13:return 86369;case 11:return 97768;case 16:break b;case 9:break o;case 1:case 3:case 5:case 7:break c;default:break d}}return 99616}return 88363}return 91422}return 94330}return 95041}return 88881}return 94297}return 97583}return 99647}return 89558}return 89696}if((a|0)==-8320){break a}}b=32699}return b}return 96179}function ZK(a,b,c,d,e){var f=0,g=0,h=0,i=0,j=0,k=0,l=0,m=0,n=0,o=0,p=0,q=0,r=0,s=0,t=0,u=0;f=Ui-224|0;Ui=f;a:{b:{c:{d:{if(!b){break d}t=f+80|0;while(1){hP(a,l,f- -64|0);e:{if((J[f+80>>2]&J[f+84>>2])==-1){break e}h=J[f+88>>2];if(h-7>>>0>=2){if(!(1<>>0>20){break e}}_u(c,J[f+72>>2],J[f+76>>2],t);h=J[f+92>>2];g=J[f+88>>2];if(g-7>>>0<=1){m=hC(J[f+72>>2],J[f+76>>2]);g=m;j=J[f+84>>2];J[g+24>>2]=J[f+80>>2];J[g+28>>2]=j;if(J[f+88>>2]==8){J[g+16>>2]=9;h=h<<2}if(h>>>0>u>>>0){if(k){cj(k)}g=h<<4;k=nj(h>>>0>268435455?-1:g);ij(k,0,g);u=h}Ru(m,k,h);h=0;o=0;g=0;p=0;j=0;q=0;r=0;s=0;if(J[f+88>>2]==7){i=J[f+64>>2];J[f+48>>2]=i;g=f+96|0;Gj(g,128,6280,f+48|0);r=bj(g);s=Yi;J[f+32>>2]=i;Gj(g,128,4419,f+32|0);j=bj(g);q=Yi;J[f+16>>2]=i;Gj(g,128,1252,f+16|0);h=bj(g);o=Yi;J[f>>2]=i;Gj(g,128,6905,f);g=bj(g);p=Yi}i=J[d+4>>2];if((i|0)==J[d+8>>2]){break c}J[d+4>>2]=i+40;J[i+32>>2]=g;J[i+36>>2]=p;J[i+24>>2]=h;J[i+28>>2]=o;J[i+16>>2]=j;J[i+20>>2]=q;J[i+8>>2]=r;J[i+12>>2]=s;J[i>>2]=m;break e}if(!(1<>>0>20){break e}j=J[e>>2];if((J[e+4>>2]-j|0)/48>>>0<=n>>>0){break b}j=j+P(n,48)|0;H[j+44|0]=h;h=g-9|0;if(h>>>0>=12|!(3975>>>h&1)){break a}J[j+8>>2]=J[(h<<2)+172892>>2];n=n+1|0}l=l+1|0;if((l|0)!=(b|0)){continue}break}if(!k){break d}cj(k)}Ui=f+224|0;return}Z(112520,53895,557,53220);B()}Z(145396,53895,487,84789);B()}Z(114101,39234,37,64581);B()}function qm(a){var b=0,c=0,d=0;if(J[a+18376>>2]){c=a;a=J[a+18368>>2];J[c+18368>>2]=(((((a|0)<=17?17:a)-a|0)+7&-8)+a|0)+8;return}while(1){d=0;a:{if(c){break a}b=J[a>>2];c=J[b+172>>2];b:{if(c>>>0>2]){J[b+172>>2]=c+1;d=K[c|0];break b}if(!J[b+32>>2]){break a}d=b+40|0;c=Zi[J[b+16>>2]](J[b+28>>2],d,J[b+36>>2])|0;J[b+168>>2]=J[b+168>>2]+(J[b+172>>2]-J[b+180>>2]|0);c:{if(!c){H[b+40|0]=0;J[b+32>>2]=0;c=b+41|0;d=0;break c}c=c+d|0;d=K[d|0]}J[b+176>>2]=c;J[b+172>>2]=b+41}if((d|0)!=255){break a}b=J[a>>2];c=J[b+172>>2];d:{if(c>>>0>2]){J[b+172>>2]=c+1;c=K[c|0];break d}if(!J[b+32>>2]){c=0;break d}c=b+40|0;d=Zi[J[b+16>>2]](J[b+28>>2],c,J[b+36>>2])|0;J[b+168>>2]=J[b+168>>2]+(J[b+172>>2]-J[b+180>>2]|0);e:{if(!d){H[b+40|0]=0;J[b+32>>2]=0;d=b+41|0;c=0;break e}d=c+d|0;c=K[c|0]}J[b+176>>2]=d;J[b+172>>2]=b+41}while(1){b=c&255;if((b|0)!=255){d=255;if(!b){break a}J[a+18376>>2]=1;H[a+18372|0]=c;return}b=J[a>>2];c=J[b+172>>2];if(c>>>0>2]){J[b+172>>2]=c+1;c=K[c|0];continue}c=0;if(!J[b+32>>2]){continue}c=b+40|0;d=Zi[J[b+16>>2]](J[b+28>>2],c,J[b+36>>2])|0;J[b+168>>2]=J[b+168>>2]+(J[b+172>>2]-J[b+180>>2]|0);f:{if(!d){H[b+40|0]=0;J[b+32>>2]=0;d=b+41|0;c=0;break f}d=c+d|0;c=K[c|0]}J[b+176>>2]=d;J[b+172>>2]=b+41;continue}}c=J[a+18368>>2];J[a+18368>>2]=c+8;J[a+18364>>2]=J[a+18364>>2]|d<<24-c;if((c|0)<17){c=J[a+18376>>2];continue}break}}function fx(a,b,c,d,e){var f=0,g=0,h=Q(0),i=Q(0),j=Q(0),k=Q(0),l=0;a:{b:{c:{f=(d!=Q(0))<<2|(c!=Q(0))<<1;switch(f|b!=Q(0)){case 1:case 2:case 4:break b;case 0:break c;default:break a}}J[a+8>>2]=0;J[a>>2]=0;J[a+4>>2]=0;return}J[a+8>>2]=0;J[a>>2]=0;J[a+4>>2]=0;b=rp(Q(Q(b+c)+d),e);N[(f<<1)+a>>2]=Q(b+b)*Q(57.295780181884766);return}h=Q(Q(b*c)+Q(d*e));d:{if(h>Q(.4999000132083893)){b=rp(b,e);c=Q(b+b);b=Q(0);d=Q(90);break d}if(h>>0>=1065353216){e=Q(+d*1.5707963267948966+752316384526264e-51);if((f|0)==1065353216){break e}e=Q(Q(0)/Q(d-d));break e}f:{if(f>>>0<=1056964607){if(f-8388608>>>0<956301312){break f}e=Q(d*d);e=Q(Q(d*Q(Q(e*Q(Q(e*Q(Q(e*Q(-.008656363002955914))+Q(-.04274342209100723)))+Q(.16666586697101593)))/Q(Q(e*Q(-.7066296339035034))+Q(1))))+d);break e}d=Q(Q(Q(1)-Q(R(d)))*Q(.5));g=Y(+d);g=g+g*+Q(Q(d*Q(Q(d*Q(Q(d*Q(-.008656363002955914))+Q(-.04274342209100723)))+Q(.16666586697101593)))/Q(Q(d*Q(-.7066296339035034))+Q(1)));d=Q(1.5707963267948966-(g+g));d=(l|0)<0?Q(-d):d}e=d}d=Q(e*Q(57.295780181884766))}N[a+8>>2]=d;N[a>>2]=b;N[a+4>>2]=c*Q(57.295780181884766)}function Nha(a){a=a|0;var b=0,c=0,d=0,e=0,f=0,g=0,h=0;c=Ui-400|0;Ui=c;h=pj(c+124|0,a,1,42133,2769);f=Aj(a,1,0);b=ul(f,46);J[c+112>>2]=0;J[c+116>>2]=0;qy(a,f,225360,4,c+112|0);d=c+80|0;b=ek(d,b+1|0,32);if(K[(b+c|0)+79|0]!=99){b=b+d|0;H[b|0]=99;H[b+1|0]=0}d=c+80|0;e=am(J[78228],d,c+76|0);a:{if(e){b=e+21|0;if(b>>>0>21){b=97515}else{b=J[(b<<2)+223356>>2]}J[c+56>>2]=e;J[c+52>>2]=b;J[c+48>>2]=d;a=fj(a,77729,c+48|0);break a}Oj(a,2,5);uj(a,2);J[c+72>>2]=0;rj(a,-1,83428);g=Ui-16|0;Ui=g;b:{c:{if((kj(a,-1)|0)!=7){break c}b=Kk(a,-1,J[77573]);if(!b){break c}d=b;d:{if(J[b+4>>2]!=2){break d}if(hp(J[77572],J[b>>2],g+8|0)){break c}d=b;if(J[b+4>>2]!=2){break d}d=J[b>>2]+4|0}e=J[d>>2];d=lo(e);if(!e){break c}if(d){break b}}b=0}Ui=g+16|0;e:{if(b){if(J[b+4>>2]==2){b=J[b>>2]+4|0}b=J[b>>2];J[c+144>>2]=0;on(b,c+144|0,c+72|0);d=J[c+144>>2];break e}if(Mk(a,-1)){d=Aj(a,-1,c+72|0);break e}fj(a,122681,0);d=0}gj(a,-2);b=J[c+72>>2];rj(a,-1,50328);e=st(a,50328,0);gj(a,-2);if(e){b=ou(a,58615)}gj(a,-2);J[c+68>>2]=0;e=wq(J[78228],J[c+76>>2],f,d,J[c+72>>2],b,c+68|0);if(e){d=J[c+112>>2];b=J[c+116>>2];J[c+32>>2]=tj(d,b);J[c+24>>2]=d;J[c+28>>2]=b;J[c+16>>2]=e;b=c+144|0;Gj(b,256,(e|0)==-3?31635:(e|0)==-15?31570:31677,c+16|0);J[c>>2]=b;a=fj(a,31902,c);break a}e=J[J[pk(a)+80>>2]+8>>2];d=J[c+112>>2];b=J[c+116>>2];xv(e,d,b);Bk(a,d,b);a=1}oj(h);Ui=c+400|0;return a|0}function BA(a,b,c,d){var e=0,f=0,g=0,h=0,i=0,j=0,k=0,l=0,m=0;e=-20352;a:{if(!d){break a}h=Um(a+4|0);if(!J[a+48>>2]){return-20096}if(!J[a+60>>2]){if((d|0)!=(h|0)){break a}b:{c:{d:{e:{i=J[b+4>>2];e=(d>>>2|0)+((d&3)!=0)|0;f:{if((i|0)!=(e|0)){f=J[b+8>>2];if(f){Zi[J[66509]](f,0,i<<2)|0;cj(J[b+8>>2])}J[b+8>>2]=0;J[b>>2]=1;J[b+4>>2]=0;i=-16;if(e>>>0>1e4){break c}if(!e){break e}f=Zj(e,4);if(!f){break c}J[b+8>>2]=f;J[b+4>>2]=e;break f}if(!e){break e}}f=J[b+8>>2];e=e<<2;break d}f=Zj(1,4);e=-16;if(!f){break b}e=J[b+8>>2];if(e){Zi[J[66509]](e,0,0)|0;cj(J[b+8>>2])}J[b+8>>2]=f;J[b+4>>2]=1;e=4}i=0;ij(f,0,e);j=J[b+8>>2];J[j>>2]=0;J[b>>2]=1;if(!d){break c}e=0;if((d|0)!=1){m=d&-2;f=0;while(1){g=(e&-4)+j|0;l=J[g>>2]|K[c+e|0]<<(e<<3&16);J[g>>2]=l;k=g;g=e|1;J[k>>2]=K[g+c|0]<<(g<<3)|l;e=e+2|0;f=f+2|0;if((m|0)!=(f|0)){continue}break}}if(!(d&1)){break c}f=(e&-4)+j|0;J[f>>2]=J[f>>2]|K[c+e|0]<<(e<<3)}e=i}if(e){break a}Dj(b+12|0);if(J[a>>2]==9){e=hq(b,(d<<3)-1|0,0);if(e){break a}}e=kl(b+24|0,1);if(e){break a}e=0;if(!J[a+48>>2]|!J[a+60>>2]){break a}}e=-20096;k=b+24|0;g:{h:{switch(K[c|0]){case 0:e=-20352;if((d|0)!=1){break a}e=kl(b,1);if(e){break a}e=kl(b+12|0,1);if(e){break a}a=0;break g;case 4:break h;default:break a}}e=-20352;if((h<<1|1)!=(d|0)){break a}a=c+1|0;e=Vm(b,a,h);if(e){break a}e=Vm(b+12|0,a+h|0,h);if(e){break a}a=1}e=kl(k,a)}return e}function Bia(a){a=a|0;var b=0,c=0,d=0,e=0,f=0,g=0,h=0,i=0,j=0,k=0;b=J[a>>2];d=ij(nj(84),0,84);J[d+68>>2]=0;J[d+72>>2]=0;J[d+64>>2]=-1;H[d+73|0]=0;H[d+74|0]=0;H[d+75|0]=0;H[d+76|0]=0;H[d+77|0]=0;H[d+78|0]=0;H[d+79|0]=0;H[d+80|0]=0;g=J[b+4>>2];h=J[a+16>>2];e=J[b+8>>2];lj(e,96,d,d+8|0,d+4|0);a:{b:{b=J[d>>2];if(e>>>0<=(J[d+8>>2]-b|0)/96>>>0){J[d+4>>2]=b+P(e,96);c=J[d+72>>2];if(c>>>0>e>>>0){break b}i=J[d+68>>2];b=sj(e<<2);J[d+68>>2]=b;f=hj(b,i,c<<2);J[d+72>>2]=e;c:{if(c>>>0>=e>>>0){break c}b=c;j=e-b&7;if(j){while(1){J[(b<<2)+f>>2]=b;b=b+1|0;k=k+1|0;if((k|0)!=(j|0)){continue}break}}if(c-e>>>0>4294967288){break c}while(1){J[(b<<2)+f>>2]=b;c=b+1|0;J[(c<<2)+f>>2]=c;c=b+2|0;J[(c<<2)+f>>2]=c;c=b+3|0;J[(c<<2)+f>>2]=c;c=b+4|0;J[(c<<2)+f>>2]=c;c=b+5|0;J[(c<<2)+f>>2]=c;c=b+6|0;J[(c<<2)+f>>2]=c;c=b+7|0;J[(c<<2)+f>>2]=c;b=b+8|0;if((e|0)!=(b|0)){continue}break}}cj(i);ij(J[d>>2],0,P(e,96));d:{e:{c=g>>>0>h>>>0?h:g;b=d+16|0;if(c>>>0>=(J[b+8>>2]-J[b>>2]|0)/20>>>0){if(H[b+28|0]&1){break e}lj(c,8,b+16|0,b+24|0,b+20|0);if(H[b+12|0]&1){break e}lj(c,20,b,b+8|0,b+4|0);if(H[b+44|0]&1){break e}lj(c,4,b+32|0,b+40|0,b+36|0);e=J[b+32>>2];if(c>>>0>J[b+40>>2]-e>>2>>>0){break a}J[b+36>>2]=e+(c<<2);break d}Z(144726,54416,76,2284);B()}Z(151729,53895,501,2284);B()}J[J[a+12>>2]>>2]=d;return 0}break a}Z(2627,54340,112,2284);B()}Z(144782,53895,514,59583);B()}function BR(a,b,c,d,e,f,g){var h=0,i=0,j=0;h=Ui-816|0;Ui=h;J[h+300>>2]=512;J[h+292>>2]=h+304;J[h+296>>2]=0;J[h+284>>2]=2270;J[h+280>>2]=2271;J[h+288>>2]=h+280;a:{b:{switch(b+13|0){case 12:c:{if(!kj(a,1)){b=49721;break c}mj(a,158859,0);uj(a,1);lm(a,2);b=Ij(a,-1,0);gj(a,-2)}J[h+20>>2]=nk(h+280|0,c,d);J[h+16>>2]=b;b=fj(a,149102,h+16|0);break a;case 9:case 10:b=Zp(h+168|0);j=J[f+24>>2];f=J[f+28>>2];i=J[g+12>>2];J[h+56>>2]=J[g+8>>2];J[h+60>>2]=i;i=J[g+4>>2];J[h+48>>2]=J[g>>2];J[h+52>>2]=i;Cr(e,j,f,c,d,h+48|0,b);c=nk(h+280|0,c,d);d=Ij(a,1,0);b=J[b+32>>2];J[h+36>>2]=d;J[h+32>>2]=c;J[h+40>>2]=J[(b<<2)+219024>>2];b=fj(a,27978,h+32|0);break a;case 0:J[h+64>>2]=nk(h+280|0,c,d);b=fj(a,3418,h- -64|0);break a;case 2:if(H[g+8|0]&1){J[h+96>>2]=nk(h+280|0,c,d);b=fj(a,114669,h+96|0);break a}b=J[g>>2];J[h+84>>2]=nk(h+280|0,c,d);J[h+80>>2]=b+1;b=fj(a,146529,h+80|0);break a;case 1:if(!(H[g+8|0]&1)){J[h+112>>2]=nk(h+280|0,c,d);b=fj(a,114385,h+112|0);break a}e=h+280|0;b=nk(e,J[g>>2],J[g+4>>2]);J[h+132>>2]=nk(e,c,d);J[h+128>>2]=b;b=fj(a,146564,h+128|0);break a;case 8:b=nk(h+280|0,J[f+24>>2],J[f+28>>2]);J[h+148>>2]=Ij(a,1,0);J[h+144>>2]=b;b=fj(a,147897,h+144|0);break a;case 5:b=fj(a,73077,0);break a;case 4:J[h+160>>2]=nk(h+280|0,c,d);b=fj(a,147427,h+160|0);break a;case 13:break a;default:break b}}J[h>>2]=b;b=fj(a,78410,h)}Ui=h+816|0;return b}function Gy(a,b,c){var d=0,e=0,f=0,g=0,h=0,i=0;e=Ui-32|0;Ui=e;a:{b:{c:{d:{e:{d=L[a+1056>>1];f:{if((d|0)==L[a+1058>>1]){J[e>>2]=d;dj(4,88293,24627,e);d=0;break f}g=J[b+4>>2];if(g){i=J[b>>2];d=0;while(1){h=J[(P(d,96)+i|0)+16>>2];if(!h){break e}f=(I[h+102>>1]&1)+f|0;d=d+1|0;if((g|0)!=(d|0)){continue}break}}d=nj((f<<2)+160|0);J[d+88>>2]=-1;J[d+84>>2]=b;J[d+72>>2]=0;J[d+64>>2]=0;J[d+68>>2]=0;J[d+56>>2]=0;J[d+48>>2]=0;J[d+52>>2]=0;J[d+40>>2]=1065353216;J[d+32>>2]=1065353216;J[d+36>>2]=1065353216;J[d+24>>2]=0;J[d+16>>2]=0;J[d+20>>2]=0;J[d+8>>2]=0;J[d+12>>2]=1065353216;J[d>>2]=0;J[d+4>>2]=0;J[d+80>>2]=0;b=J[74029];J[d+96>>2]=J[74028];J[d+100>>2]=b;go(d+104|0,0);J[d+144>>2]=2147450879;J[d+152>>2]=f;J[d+80>>2]=a;J[d+148>>2]=J[d+148>>2]&-2147483648|2147450879;c=J[d+140>>2]&-2147483648;J[d+140>>2]=c|2147450879;J[d+136>>2]=J[d+136>>2]&61440|K[a+3272|0]<<7&512|2147418112;f=J[a+1052>>2];if(!f){break d}b=L[a+1058>>1];if(b>>>0>=L[a+1056>>1]){break c}I[a+1058>>1]=b+1;b=L[f+(b<<1)>>1];J[d+140>>2]=c|b&32767|2147418112;c=J[a+1036>>2];if(b>>>0>=J[a+1040>>2]-c>>2>>>0){break b}b=c+(b<<2)|0;if(J[b>>2]){break a}J[b>>2]=d;Ly(a,d)}Ui=e+32|0;return d}J[e+20>>2]=c;J[e+16>>2]=d;dj(4,88293,126457,e+16|0);Z(62644,38296,752,70489);B()}Z(49493,54340,151,43112);B()}Z(2701,54340,152,43112);B()}Z(145396,53895,487,84789);B()}Z(113222,38296,788,70258);B()}function mt(a,b,c,d,e,f,g,h,i){var j=0;j=Ui-720|0;Ui=j;J[j+204>>2]=512;J[j+196>>2]=j+208;J[j+200>>2]=0;J[j+188>>2]=2270;J[j+184>>2]=2271;J[j+192>>2]=j+184;a:{b:{switch(c+12|0){case 12:if(!(!i|!(K[d+108|0]&2))){J[j+32>>2]=nk(j+184|0,e,f);c=fj(a,114508,j+32|0);break a}c=1;if(!(!(H[h+8|0]&1)|K[d+108|0]&2)){J[j+16>>2]=nk(j+184|0,e,f);c=fj(a,125776,j+16|0);break a}zR(a,d+32|0);break a;case 2:if(H[h+8|0]&1){c=j+184|0;b=nk(c,J[h>>2],J[h+4>>2]);J[j+68>>2]=nk(c,e,f);J[j+64>>2]=b;c=fj(a,153728,j- -64|0);break a}J[j+48>>2]=nk(j+184|0,e,f);c=fj(a,153771,j+48|0);break a;case 1:if(H[h+8|0]&1){J[j+96>>2]=nk(j+184|0,e,f);c=fj(a,114669,j+96|0);break a}b=J[h>>2];J[j+84>>2]=nk(j+184|0,e,f);J[j+80>>2]=b+1;c=fj(a,146529,j+80|0);break a;case 0:if(!(H[h+8|0]&1)){J[j+112>>2]=nk(j+184|0,e,f);c=fj(a,114385,j+112|0);break a}c=j+184|0;b=nk(c,J[h>>2],J[h+4>>2]);J[j+132>>2]=nk(c,e,f);J[j+128>>2]=b;c=fj(a,146564,j+128|0);break a;case 11:b=j+184|0;c=nk(b,J[g+16>>2],J[g+20>>2]);d=nk(b,e,f);e=J[g+24>>2];f=J[g+28>>2];if(e|f){b=nk(b,e,f);J[j+168>>2]=d;J[j+164>>2]=b;J[j+160>>2]=c;c=fj(a,149146,j+160|0);break a}J[j+148>>2]=d;J[j+144>>2]=c;c=fj(a,149102,j+144|0);break a;case 7:b=nk(j+184|0,J[g+24>>2],J[g+28>>2]);J[j+180>>2]=Ij(a,1,0);J[j+176>>2]=b;c=fj(a,147947,j+176|0);break a;default:break b}}J[j+4>>2]=c;J[j>>2]=b;c=fj(a,78443,j)}Ui=j+720|0;return c}function Yr(a){var b=0,c=0,d=0,e=0,f=0,g=0;b=-27648;a:{b:{e=J[a+208>>2];switch(e-20|0){case 0:case 2:break b;default:break a}}c=J[a+212>>2];f=J[a+204>>2];d=K[f|0];if(!(!d&(e|0)==22|J[a+68>>2])){break a}c:{d:{if(!(K[J[a>>2]+184|0]&2)){break d}g=J[a+68>>2];if(!g){break d}if(K[g+492|0]==1){break a}if(c>>>0<=16384){break c}break a}if(c>>>0>16384){break a}}e:{if((e|0)!=22){break e}c=c-4|0;H[f+1|0]=c>>>16;H[J[a+204>>2]+2|0]=c>>>8;H[J[a+204>>2]+3|0]=c;if(K[J[a>>2]+184|0]&2){b=-28928;if(J[a+212>>2]-16377>>>0<8){break a}b=J[a+204>>2];el(b+12|0,b+4|0,c);J[a+212>>2]=J[a+212>>2]+8;f:{if(d){H[J[a+204>>2]+4|0]=J[J[a+68>>2]+472>>2]>>>8;H[J[a+204>>2]+5|0]=J[J[a+68>>2]+472>>2];b=J[a+68>>2];J[b+472>>2]=J[b+472>>2]+1;break f}H[J[a+204>>2]+4|0]=0;H[J[a+204>>2]+5|0]=0}b=J[a+204>>2];H[b+6|0]=0;H[b+7|0]=0;H[b+8|0]=0;b=J[a+204>>2];c=K[b+1|0]|K[b+2|0]<<8;H[b+9|0]=c;H[b+10|0]=c>>>8;H[b+11|0]=K[b+3|0]}if(!d){break e}Zi[J[J[a+68>>2]+1104>>2]](a,J[a+204>>2],J[a+212>>2])}g:{h:{if(!(K[J[a>>2]+184|0]&2)){break h}e=J[a+208>>2];if(!d&(e|0)==22){break h}b=-32512;c=Zj(1,16);if(!c){break a}b=J[a+212>>2];d=Zj(1,b);J[c>>2]=d;if(!d){cj(c);return-32512}hj(d,J[a+204>>2],b);H[c+8|0]=e;J[c+4>>2]=b;b=J[a+68>>2];a=J[b+496>>2];if(!a){J[b+496>>2]=c;break g}while(1){b=a;a=J[a+12>>2];if(a){continue}break}J[b+12>>2]=c;break g}b=Nm(a,1);if(b){break a}}b=0}return b}function tW(a,b,c,d,e,f,g){a=a|0;b=b|0;c=c|0;d=d|0;e=e|0;f=f|0;g=g|0;var h=0,i=0,j=0,k=0,l=0,m=0,n=0,o=0,p=0,q=0;h=Ui-48|0;Ui=h;J[h+4>>2]=0;J[h+8>>2]=0;J[h+12>>2]=0;k=yj(c);m=k+e|0;q=m+20|0;l=Zj(1,q);a:{if(!l){e=-32512;break a}j=k;k=hj(l+20|0,c,k);hj(j+k|0,d,e);e=-27648;d=J[66582];if(!d){break a}c=h+4|0;e=oo(c,d,1);if(e){break a}o=b+1>>>1|0;iq(c,a,o);Jl(c,k,m);e=l+4|0;Dm(c,e);if(g){i=g&15;j=m+16|0;c=0;while(1){d=h+4|0;Fn(d);Jl(d,e,j);n=h+16|0;Dm(d,n);Fn(d);Jl(d,e,16);Dm(d,e);d=c;c=c+16|0;p=g>>>0>=c>>>0?16:i;if(p){hj(d+f|0,n,p)}if(c>>>0>>0){continue}break}}c=h+4|0;Kl(c);e=-27648;d=J[66583];if(!d){break a}e=oo(c,d,1);if(e){break a}iq(c,(a+b|0)-o|0,o);Jl(c,k,m);Dm(c,l);if(!g){e=0;break a}k=(g>>>0)%20|0;a=0;while(1){b=h+4|0;Fn(b);Jl(b,l,q);Dm(b,h+16|0);Fn(b);Jl(b,l,20);Dm(b,l);b=a;a=b+20|0;c=g>>>0>=a>>>0?20:k;b:{if(!c){break b}b=b+f|0;m=0;e=0;if(c>>>0>=4){o=c&28;d=0;while(1){i=b+e|0;p=h+16|0;j=p;H[i|0]=K[j+e|0]^K[i|0];i=e|1;n=i+b|0;H[n|0]=K[i+j|0]^K[n|0];i=e|2;n=i+b|0;H[n|0]=K[i+j|0]^K[n|0];i=e|3;j=i+b|0;H[j|0]=K[i+p|0]^K[j|0];e=e+4|0;d=d+4|0;if((o|0)!=(d|0)){continue}break}}c=c&3;if(!c){break b}while(1){d=b+e|0;H[d|0]=K[(h+16|0)+e|0]^K[d|0];e=e+1|0;m=m+1|0;if((c|0)!=(m|0)){continue}break}}e=0;if(a>>>0>>0){continue}break}}Kl(h+4|0);Zi[J[66509]](l,0,q)|0;Zi[J[66509]](h+16|0,0,20)|0;cj(l);Ui=h+48|0;return e|0}function JS(a,b,c,d,e,f,g,h){var i=0,j=0,k=0,l=0,m=0,n=Q(0),o=0,p=0,q=0;a:{if(K[b+21|0]){l=J[f>>2];j=J[e>>2];o=1;b:{if((h|0)>0){m=J[b>>2];p=P(d,g);q=b+36|0;while(1){g=J[a+1408>>2];c:{if((g|0)>9){break c}if(!g){J[a+1404>>2]=0}while(1){if(K[a+1388|0]?0:J[a+1396>>2]){break c}i=Zk(a);if((i|0)==-1){break c}g=J[a+1408>>2];J[a+1408>>2]=g+8;J[a+1404>>2]=J[a+1404>>2]+(i<>2];g=I[((i&1023)<<1)+q>>1];d:{if((g|0)>=0){k=i;i=K[g+J[b+8>>2]|0];J[a+1404>>2]=k>>>i;i=J[a+1408>>2]-i|0;J[a+1408>>2]=(i|0)>0?i:0;g=(i|0)<0?-1:g;break d}g=Bv(a,b)}if((g|0)>=J[b+2092>>2]?K[b+23|0]:0){break a}if((g|0)<0){if(!K[a+1388|0]){o=0;if(J[a+1396>>2]){break b}}J[a+112>>2]=21;return 0}i=P(d,l);m=((i+m|0)+j|0)>(p|0)?(p-i|0)+j|0:m;i=P(g,J[b>>2]);e:{if(K[b+22|0]){if((m|0)<=0){break e}k=J[b+28>>2]+(i<<2)|0;g=0;n=Q(0);while(1){n=Q(n+N[k+(g<<2)>>2]);i=J[(j<<2)+c>>2];if(i){i=i+(l<<2)|0;N[i>>2]=n+N[i>>2]}j=j+1|0;i=(j|0)==(d|0);j=i?0:j;l=i+l|0;g=g+1|0;if((m|0)!=(g|0)){continue}break}break e}g=0;if((m|0)<=0){break e}while(1){k=J[(j<<2)+c>>2];if(k){k=k+(l<<2)|0;N[k>>2]=N[k>>2]+Q(N[(J[b+28>>2]+(i<<2)|0)+(g<<2)>>2]+Q(0))}j=j+1|0;k=(j|0)==(d|0);j=k?0:j;l=l+k|0;g=g+1|0;if((m|0)!=(g|0)){continue}break}}h=h-m|0;if((h|0)>0){continue}break}}J[e>>2]=j;J[f>>2]=l}return o}J[a+112>>2]=21;return 0}Z(23507,82607,1878,17127);B()}function yI(a){var b=0,c=0,d=0,e=0,f=0,g=0,h=0,i=0,j=0;a:{b:{e=J[a+28>>2];if(!e){break b}b=J[a+12>>2];if(J[(b+(e<<4)|0)-8>>2]){break b}if((e|0)==1){break a}a=b-8|0;while(1){h=e+d>>>1|0;b=J[a+(h<<4)>>2];e=b?e:h;d=b?h:d;if(e-d>>>0>1){continue}break}break a}h=J[a+16>>2];if((h|0)==173648){return e}b=e+1|0;d=e;while(1){f=b;b=b-1|0;c:{if(b>>>0>>0){c=J[a+12>>2]+(b<<4)|0;break c}i=+(f|0);b=h;if(f){A(+i);c=v(1)|0;g=v(0)|0;c=c+g|0;b=((c>>>0)%((-1<>>0)<<5)+b|0}while(1){if(!(J[b+24>>2]!=3|i!=O[b+16>>3])){c=b;break c}c=173288;b=J[b+28>>2];if(b){continue}break}}if(!J[c+8>>2]){if(f-d>>>0<=1){break a}while(1){c=d+f|0;j=c>>>1|0;b=j-1|0;d:{if(b>>>0>>0){c=J[a+12>>2]+(b<<4)|0;break d}i=+(j>>>0);b=h;if(c>>>0>=2){A(+i);c=v(1)|0;g=v(0)|0;c=c+g|0;b=((c>>>0)%((-1<>>0)<<5)+b|0}while(1){if(!(J[b+24>>2]!=3|i!=O[b+16>>3])){c=b;break d}c=173288;b=J[b+28>>2];if(b){continue}break}}b=J[c+8>>2];f=b?f:j;d=b?j:d;if(f-d>>>0>1){continue}break}break a}g=1;d=f;b=d<<1;if(b>>>0<2147483646){continue}break}while(1){d=g-1|0;e:{if(e>>>0>d>>>0){c=J[a+12>>2]+(d<<4)|0;break e}i=+(g|0);b=h;if(g){A(+i);c=v(1)|0;f=v(0)|0;c=c+f|0;b=((c>>>0)%((-1<>>0)<<5)+b|0}while(1){if(!(J[b+24>>2]!=3|i!=O[b+16>>3])){c=b;break e}c=173288;b=J[b+28>>2];if(b){continue}break}}g=g+1|0;if(J[c+8>>2]){continue}break}}return d}function g9(a){a=a|0;var b=0,c=0,d=0,e=0,f=0,g=0,h=0,i=0,j=0,k=0,l=0,m=Q(0);b=Ui-192|0;Ui=b;l=pj(b+172|0,a,1,37682,687);Bj(a);g=qj(a,-1,J[219396],139183);gj(a,-2);Qj(a,1,b+168|0);d=mk(a,2);c=Yi;i=c;e=Ws(d,c);a:{if(e){fm(b,g,J[b+168>>2],J[e+8>>2]);d=K[e+12|0];if((d|0)==255){c=1;if(J[e+8>>2]==1){d=J[b+4>>2];J[b+112>>2]=J[b>>2];J[b+116>>2]=d;d=J[b+12>>2];J[b+120>>2]=J[b+8>>2];J[b+124>>2]=d;tq(a,b+112|0);break a}yo(a,b);break a}m=N[(d<<2)+b>>2];d=J[a+8>>2];J[d+8>>2]=3;O[d>>3]=m;J[a+8>>2]=J[a+8>>2]+16;c=1;break a}e=b+152|0;J[e>>2]=0;H[e+8|0]=K[e+8|0]&254;H[b+151|0]=0;if(J[a+8>>2]-J[a+12>>2]>>4>=3){Iy(a,3,e,b+151|0)}J[b+136>>2]=0;J[b+140>>2]=0;J[b+128>>2]=0;J[b+132>>2]=0;J[b+120>>2]=0;J[b+124>>2]=0;J[b+112>>2]=0;J[b+116>>2]=0;h=Zp(b);f=J[g+424>>2];if(f){c=Zi[f|0](J[g+428>>2],g,J[b+168>>2],d,i,h,e)|0}else{c=0}j=c-1|0;k=K[b+151|0];f=k|c;b:{if(!c|k&1){break b}f=0;c=L[h+108>>1];if(c&2){break b}k=c>>>(J[h+32>>2]==7?4:2)|0;if(k>>>0<2){break b}Fj(a,0,0);c=mt(a,52074,j,h,d,i,b+112|0,e,K[b+151|0]);if((c|0)!=1){break a}Ik(a,-2,1);f=1;while(1){J[e>>2]=f;j=J[g+424>>2];if(j){c=Zi[j|0](J[g+428>>2],g,J[b+168>>2],d,i,h,e)|0}else{c=0}c=mt(a,52074,c-1|0,h,d,i,b+112|0,e,K[b+151|0]);if((c|0)!=1){break a}c=1;f=f+1|0;Ik(a,-2,f);if((f|0)!=(k|0)){continue}break}break a}c=mt(a,52074,j,h,d,i,b+112|0,e,f&1)}oj(l);Ui=b+192|0;return c|0}function AE(a){var b=0,c=0,d=0,e=0,f=0,g=0,h=0,i=0,j=0,k=0;f=J[a+52>>2];e=J[a+48>>2];b=J[e>>2];d=K[e+50|0];if(d){i=e+172|0;g=J[b+24>>2];h=J[e+24>>2];j=d&3;a:{if(!j){c=d;break a}c=d;while(1){c=c-1|0;J[(P(L[(c<<1)+i>>1],12)+g|0)+8>>2]=h;k=k+1|0;if((j|0)!=(k|0)){continue}break}}if(d>>>0>=4){while(1){d=(c<<1)+i|0;J[(P(L[d-2>>1],12)+g|0)+8>>2]=h;J[(P(L[d-4>>1],12)+g|0)+8>>2]=h;J[(P(L[d-6>>1],12)+g|0)+8>>2]=h;c=c-4|0;J[(P(L[(c<<1)+i>>1],12)+g|0)+8>>2]=h;if(c){continue}break}}H[e+50|0]=0}uI(e,0,0);c=J[e+24>>2];b:{if(c+1>>>0<=1073741823){d=lk(f,J[b+12>>2],J[b+44>>2]<<2,c<<2);break b}d=Dl(f)}J[b+12>>2]=d;c=J[e+24>>2];J[b+44>>2]=c;c:{if(c+1>>>0<=1073741823){d=lk(f,J[b+20>>2],J[b+48>>2]<<2,c<<2);break c}d=Dl(f)}J[b+20>>2]=d;J[b+48>>2]=J[e+24>>2];c=J[e+40>>2];d:{if(c+1>>>0<=268435455){d=lk(f,J[b+8>>2],J[b+40>>2]<<4,c<<4);break d}d=Dl(f)}J[b+8>>2]=d;J[b+40>>2]=J[e+40>>2];c=J[e+44>>2];e:{if(c+1>>>0<=1073741823){d=lk(f,J[b+16>>2],J[b+52>>2]<<2,c<<2);break e}d=Dl(f)}J[b+16>>2]=d;J[b+52>>2]=J[e+44>>2];c=I[e+48>>1];f:{if(c+1>>>0<=357913941){d=lk(f,J[b+24>>2],P(J[b+56>>2],12),P(c,12));break f}d=Dl(f)}J[b+24>>2]=d;J[b+56>>2]=I[e+48>>1];J[b+28>>2]=lk(f,J[b+28>>2],J[b+36>>2]<<2,K[b+72|0]<<2);J[b+36>>2]=K[b+72|0];J[a+48>>2]=J[e+8>>2];J[f+8>>2]=J[f+8>>2]-32;if(J[a+16>>2]-285>>>0<=1){b=a;a=J[a+24>>2];Ep(b,a+16|0,J[a+12>>2])}}function Dq(a,b){var c=0,d=0,e=0,f=0,g=0,h=0,i=0,j=0,k=0,l=0;g=Ui-16|0;Ui=g;c=a;d=b;if(d>>>0>=4){j=d-4|0;if(j>>>0<4){i=0}else{i=(j>>>2|0)+1&2147483646;while(1){h=P(K[c+4|0]|K[c+5|0]<<8|(K[c+6|0]<<16|K[c+7|0]<<24),1540483477);l=P(h>>>24^h,1540483477);h=P(K[c|0]|K[c+1|0]<<8|(K[c+2|0]<<16|K[c+3|0]<<24),1540483477);e=l^P(P(h>>>24^h,1540483477)^P(e,1540483477),1540483477);d=d-8|0;c=c+8|0;k=k+2|0;if((i|0)!=(k|0)){continue}break}i=P(e,1540483477)}if(!(j&4)){e=P(K[c|0]|K[c+1|0]<<8|(K[c+2|0]<<16|K[c+3|0]<<24),1540483477);e=i^P(e>>>24^e,1540483477);d=d-4|0;c=c+4|0}e=P(e,1540483477)}a:{switch(d-1|0){case 2:f=K[c+2|0]<<16;case 1:f=K[c+1|0]<<8|f;case 0:d=P(K[c|0]^f,1540483477);break;default:break a}}c=P(b,1540483477);c=P(P(d>>>24^d,1540483477)^e,1540483477)^P(c>>>24^c,1540483477);c=P(c>>>13^c,1540483477);d=c>>>15|0;if(!K[874264]){nl();H[874264]=1}d=c^d;if(!(!(H[874164]&1)|b>>>0>1024)){f=J[218540];Tj(f);if(!K[874264]){nl();H[874264]=1}c=J[218543];b:{c:{if(!c){e=J[218544];break c}e=J[218544];c=J[J[218542]+((d>>>0)%(c>>>0)<<2)>>2];if((c|0)==-1){break c}while(1){c=(c<<4)+e|0;if((d|0)==J[c>>2]){break b}c=J[c+12>>2];if((c|0)!=-1){continue}break}}c=J[218548];if((c|0)==J[218546]-e>>4){c=c+16384|0;Xx(874168,(P(c,5)>>>0)/7|0,c)}a=hj(sj(b+1|0),a,b);H[a+b|0]=0;I[g+12>>1]=b;J[g+8>>2]=a;LN(d,g+8|0)}Lj(f)}Ui=g+16|0;return d}function lka(a){a=a|0;var b=0,c=0,d=0,e=0,f=0,g=0,h=0,i=Q(0),j=0,k=0,l=0,m=Q(0),n=0;e=Ui-32|0;Ui=e;d=J[a+16>>2];a:{if(J[d+80>>2]!=J[56720]){break a}n=J[a+4>>2];k=J[J[J[a>>2]+80>>2]+8>>2];l=d+96|0;f=J[d+84>>2]-80|0;if(f){b:{g=Ui-16|0;Ui=g;c=f>>>0<=36?36:f;if(!fo(g+12|0,8,c)){b=J[g+12>>2];J[ij(b,0,c)>>2]=c}Ui=g+16|0;c:{h=l+80|0;j=J[h>>2];g=b;c=J[b>>2];if(j>>>0<=c>>>0){if(c>>>0>>0){break c}b=hj(b,h,j);J[b>>2]=c;J[b+8>>2]=b+J[b+8>>2];J[b+12>>2]=b+J[b+12>>2];J[b+16>>2]=b+J[b+16>>2];J[b+20>>2]=b+J[b+20>>2];J[b+24>>2]=b+J[b+24>>2];J[b+28>>2]=b+J[b+28>>2];J[b+32>>2]=b+J[b+32>>2];break b}Z(59700,39139,417,59330);B()}Z(58775,39139,418,59330);B()}}c=J[d+160>>2];h=J[J[a+12>>2]>>2];a=J[d+132>>2];j=a;f=J[d+128>>2];if(!(a|f)){d:{if((c|0)!=-1){break d}c=gE(k);if((c|0)!=-1){break d}dj(4,88458,121716,0);break a}f=eE(c);j=Yi}m=N[d+144>>2];i=N[d+148>>2];e:{if(!(m!=Q(0)|i!=Q(0)|N[d+152>>2]!=Q(0))){i=N[d+136>>2];N[e+20>>2]=i;N[e+16>>2]=i;break e}N[e+20>>2]=i;N[e+16>>2]=m;i=N[d+152>>2]}N[e+24>>2]=i;a=J[h+4>>2];if(!a){a=J[h>>2]}b=J[a>>2];f:{if(b){break f}if(!wk(J[n>>2],J[a+4>>2],a)){b=J[a>>2];break f}J[e>>2]=J[a+4>>2];dj(4,88458,30197,e);b=0}a=J[h+4>>2];if(!a){a=J[h>>2]}a=dR(k,b,J[a+4>>2],f,j,g,l,d+112|0,e+16|0);g:{if((c|0)==-1){break g}if(a){if(a){J[a+88>>2]=c}break g}UD(c,k)}if(!g){break a}cj(g)}Ui=e+32|0;return 0}function dj(a,b,c,d){a=a|0;b=b|0;c=c|0;d=d|0;var e=0,f=0,g=0,h=0;e=Ui-4096|0;Ui=e;a:{b:{if(J[70114]>(a|0)){break b}h=K[269788];if(!(h|J[218580])){break b}J[e+4092>>2]=d;if(a>>>0>=6){break a}J[e+36>>2]=b;J[e+32>>2]=J[(a<<2)+280460>>2];f=e+96|0;d=Gj(f,3984,154271,e+32|0);c:{d:{if(d>>>0>3983){break d}g=3984-d|0;c=Pr(d+f|0,g,c,J[e+4092>>2]);if((c|0)>0){d=c+d|0;if(d>>>0>3983){break d}g=3984-d|0}d=Gj(d+f|0,g,158634,0)+d|0;if(d>>>0<3984){break c}}c=J[70113];fq((f-yj(c)|0)+3983|0,c)}H[e+4079|0]=0;c=(d|0)>=3983?3983:d;e:{if(!h){break e}J[e+16>>2]=f;aa(((a&6)==4?294345:294384)|0,158960,e+16|0)|0;d=J[218582];if(!d){break e}g=J[218576];if((g|0)>33554431){break e}J[218576]=c+g;yl(f,1,c,d);$n(J[218582])}if(J[218577]<=0){break b}while(1){c=J[218578];J[218578]=c?c:1;if(c){continue}break}if(!J[J[218579]+32>>2]&J[218577]>0){while(1){c=J[218581];J[218581]=c?c:1;if(c){continue}break}g=J[218580];f:{if((g|0)<=0){break f}h=g&3;g:{if(!h){d=g;break g}c=0;d=g;while(1){d=d-1|0;Zi[J[(d<<2)+874336>>2]](a,b,f);c=c+1|0;if((h|0)!=(c|0)){continue}break}}if(g>>>0<4){break f}while(1){c=(d<<2)+874336|0;Zi[J[c-4>>2]](a,b,f);Zi[J[c-8>>2]](a,b,f);c=d-3|0;Zi[J[(c<<2)+874336>>2]](a,b,f);d=d-4|0;Zi[J[(d<<2)+874336>>2]](a,b,f);if(c>>>0>1){continue}break}}J[e>>2]=f;J[218581]=0}J[218578]=0}Ui=e+4096|0;return}Z(114101,41124,653,50167);B()}function eda(a){a=a|0;var b=0,c=0,d=0,e=0,f=0,g=0,h=0,i=0,j=0,k=0,l=0,m=0,n=0,o=0;b=Ui-400|0;Ui=b;k=J[a+8>>2]-J[a+12>>2]>>4;e=mk(a,1);f=Yi;Oj(a,2,5);d=qq(a,64474);g=qq(a,17039);l=qq(a,52997);m=qq(a,14691);xj(a,43576);Ck(a,2);n=In(a,43576,0);gj(a,-2);xj(a,6387);Ck(a,2);h=In(a,6387,-1);gj(a,-2);xj(a,4511);Ck(a,2);i=In(a,4511,-1);gj(a,-2);a:{b:{c:{if(!(Zi[J[79453]](J[78229],g)|0)){J[b+64>>2]=g>>>0>45?102277:J[(g<<2)+239956>>2];j=fj(a,134070,b- -64|0);break c}if(!((d|0)!=1&d>>>0<=3)){J[b>>2]=d>>>0>3?102463:J[(d<<2)+239928>>2];j=fj(a,134619,b);break c}xj(a,63908);Ck(a,2);o=In(a,63908,0);gj(a,-2);c=Iu(a,3);if(J[c+4>>2]==2){c=J[c>>2]+4|0}c=J[c>>2];J[b+140>>2]=0;J[b+136>>2]=0;on(c,b+140|0,b+136|0);J[b+128>>2]=0;J[b+132>>2]=0;J[b+96>>2]=o;J[b+92>>2]=g;J[b+88>>2]=d;J[b+80>>2]=e;c=f;J[b+84>>2]=c;J[b+100>>2]=J[b+140>>2];J[b+124>>2]=n;J[b+120>>2]=(i|0)>0?i:0;J[b+116>>2]=(h|0)>0?h:0;J[b+112>>2]=m;J[b+108>>2]=l;J[b+104>>2]=J[b+136>>2];H[b+128|0]=(h&i)!=-1;f=HP(J[78228],b+80|0);d=J[a+8>>2]-J[a+12>>2]>>4;if(f){if((d|0)!=(k|0)){break b}J[b+48>>2]=tj(e,c);J[b+40>>2]=e;J[b+44>>2]=c;J[b+32>>2]=f;e=b+144|0;Gj(e,256,(f|0)==-3?31635:(f|0)==-15?31570:31677,b+32|0);J[b+16>>2]=e;j=fj(a,31902,b+16|0);break c}if((d|0)!=(k|0)){break a}}Ui=b+400|0;return j|0}Z(143244,42133,1396,63011);B()}Z(143244,42133,1400,63011);B()}function $6(a,b,c,d,e,f){a=a|0;b=b|0;c=c|0;d=Q(d);e=e|0;f=f|0;var g=0,h=Q(0),i=Q(0),j=Q(0),k=Q(0),l=Q(0),m=Q(0),n=Q(0),o=Q(0),p=Q(0),q=Q(0),r=Q(0),s=0,t=Q(0),u=Q(0);g=Ui-176|0;Ui=g;a:{m=N[c+8>>2];k=N[c+4>>2];l=N[c>>2];if(Q(Q(m*m)+Q(Q(k*k)+Q(l*l)))>Q(0)){c=Q(R(l))Q(0))){break a}h=N[b+4>>2];r=N[b>>2];c=J[f+4>>2];s=J[f>>2];t=N[f+8>>2];a=J[a+4>>2];u=N[a+12>>2];i=N[a+20>>2];j=Q(i*N[b+8>>2]);N[g+168>>2]=j+Q(d*m);h=Q(i*h);N[g+164>>2]=h+Q(d*k);i=Q(i*r);N[g+160>>2]=i+Q(d*l);N[g+152>>2]=j;N[g+148>>2]=h;N[g+144>>2]=i;N[g+120>>2]=j;N[g+116>>2]=h;N[g+112>>2]=i;N[g+88>>2]=j;N[g+84>>2]=h;N[g+80>>2]=i;N[g+56>>2]=j;N[g+52>>2]=h;N[g+48>>2]=i;N[g+24>>2]=j;N[g+20>>2]=h;N[g+16>>2]=i;d=Q(j+m);q=Q(Q(1)/Q(Y(q)));j=Q(n*q);N[g+136>>2]=d+j;h=Q(h+k);n=Q(o*q);N[g+132>>2]=h+n;i=Q(i+l);o=Q(p*q);N[g+128>>2]=i+o;N[g+104>>2]=d-j;N[g+100>>2]=h-n;N[g+96>>2]=i-o;p=Q(Q(o*k)-Q(n*l));N[g+72>>2]=d+p;l=Q(Q(j*l)-Q(o*m));N[g+68>>2]=h+l;k=Q(Q(n*m)-Q(j*k));N[g+64>>2]=i+k;N[g+40>>2]=d-p;N[g+36>>2]=h-l;N[g+32>>2]=i-k;b=J[a>>2];N[g+12>>2]=u*Q(Q(Q(e|0)/Q(-255))+Q(1));N[g+8>>2]=t;J[g>>2]=s;J[g+4>>2]=c;Zi[b|0](g+16|0,10,g,J[a+8>>2]);Ui=g+176|0;return}Z(58063,42497,52,13001);B()}Z(58083,42497,63,13001);B()}function GK(a){var b=0,c=0,d=0,e=0,f=0,g=0,h=0,i=0,j=0,k=0,l=0,m=0,n=0,o=0,p=0;while(1){b=J[a+88104>>2];J[a+88104>>2]=b?b:1;if(b){continue}break}J[a+8>>2]=0;J[a+88104>>2]=0;b=J[a+4>>2];i=J[a>>2];J[a>>2]=0;J[a+4>>2]=0;m=K[a+12|0];H[a+12|0]=m&254;if((b|0)!=(i|0)){b=(b-i|0)/40|0;o=b>>>0<=1?1:b;p=a+161840|0;j=a+88112|0;a:{while(1){b:{c=P(l,40)+i|0;f=I[c+32>>1];g=P(f,72)+j|0;e=L[g+34>>1];c:{if((e|0)!=65535){b=J[c+16>>2];k=J[c+20>>2];while(1){h=P(e<<16>>16,72)+j|0;if((b|0)==J[h+16>>2]&(k|0)==J[h+20>>2]){break c}e=L[h+36>>1];if((e|0)!=65535){continue}break}}b=J[a+163888>>2];if(!b){break c}b=b-1|0;J[a+163888>>2]=b;e=I[(b<<1)+p>>1];d=ij(P(e,72)+j|0,0,72);b=J[c+28>>2];J[d+24>>2]=J[c+24>>2];J[d+28>>2]=b;b=J[c+20>>2];J[d+16>>2]=J[c+16>>2];J[d+20>>2]=b;b=J[c+12>>2];J[d+8>>2]=J[c+8>>2];J[d+12>>2]=b;b=J[c+4>>2];J[d>>2]=J[c>>2];J[d+4>>2]=b;J[d+60>>2]=-17;I[d+34>>1]=65535;b=L[g+34>>1];I[d+32>>1]=f;I[d+36>>1]=b;I[g+34>>1]=e;h=L[g+38>>1];k=h+1|0;I[g+38>>1]=k;d:{if((f|0)==-1){break d}b=J[c+24>>2];e=J[c+28>>2];while(1){c=P(f<<16>>16,72)+j|0;if(J[c+24>>2]==(b|0)&J[c+28>>2]==(e|0)){J[d+60>>2]=-16;if(!(k&65535)){break b}I[g+38>>1]=h;break d}f=L[c+32>>1];if((f|0)!=65535){continue}break}}n=n+1|0}l=l+1|0;if((o|0)!=(l|0)){continue}break a}break}Z(111989,40201,363,31959);B()}e=(n|0)!=0}if(!(!i|m&1)){cj(i)}return e}function AT(a,b){var c=0,d=0,e=0,f=0,g=0,h=0,i=0,j=0,k=0,l=0;e=Ui-32|0;Ui=e;a:{if(!J[a>>2]){break a}g=(b|0)<0?J[a+12>>2]:b;if((g|0)<=0){break a}while(1){b=J[a>>2];if(J[b+40>>2]){f=b+40|0;h=0;while(1){d=J[b+32>>2];b:{if(d>>>0<=b>>>0){d=b;break b}c=J[d+40>>2];l=(c|0)==(b|0);i=((b|0)!=(c|0))<<2;j=J[(i+d|0)+36>>2];c=J[d+32>>2];if(c){k=(((J[c+40>>2]==(d|0))<<2)+c|0)+36|0}else{k=a}J[k>>2]=b;J[j+32>>2]=b;J[d+32>>2]=b;J[b+32>>2]=c;J[d+36>>2]=J[b+36>>2];J[d+40>>2]=J[f>>2];J[J[b+36>>2]+32>>2]=d;J[J[f>>2]+32>>2]=d;c=b+36|0;J[c+(l<<2)>>2]=d;J[c+i>>2]=j;c=d+24|0;f=J[c+4>>2];J[e+24>>2]=J[c>>2];J[e+28>>2]=f;c=d+16|0;f=J[c+4>>2];J[e+16>>2]=J[c>>2];J[e+20>>2]=f;c=d+8|0;f=J[c+4>>2];J[e+8>>2]=J[c>>2];J[e+12>>2]=f;c=J[d+4>>2];J[e>>2]=J[d>>2];J[e+4>>2]=c;c=b+24|0;f=J[c+4>>2];J[d+24>>2]=J[c>>2];J[d+28>>2]=f;c=b+16|0;f=J[c+4>>2];J[d+16>>2]=J[c>>2];J[d+20>>2]=f;c=b+8|0;f=J[c+4>>2];J[d+8>>2]=J[c>>2];J[d+12>>2]=f;c=J[b+4>>2];J[d>>2]=J[b>>2];J[d+4>>2]=c;c=J[e+28>>2];J[b+24>>2]=J[e+24>>2];J[b+28>>2]=c;c=J[e+20>>2];J[b+16>>2]=J[e+16>>2];J[b+20>>2]=c;c=J[e+12>>2];J[b+8>>2]=J[e+8>>2];J[b+12>>2]=c;c=J[e+4>>2];J[b>>2]=J[e>>2];J[b+4>>2]=c}b=J[(((J[a+16>>2]>>>h&1)<<2)+d|0)+36>>2];f=b+40|0;h=h+1&31;if(J[b+40>>2]){continue}break}}d=ow(a,b);Ww(a,d?J[a>>2]:0,b);J[a+16>>2]=J[a+16>>2]+1;g=g-1|0;if(g){continue}break}}Ui=e+32|0}function vP(a){var b=0,c=0,d=0,e=0,f=0,g=0,h=0,i=0,j=0,k=0,l=0,m=0,n=0,o=0,p=0,q=0,r=0,s=0,t=0,u=0,v=0,w=0,x=0,y=0;d=L[a+162>>1];if(!d){return 0}b=L[a+160>>1];a:{while(1){b=b&65535;b:{if(!b){b=0;break b}t=k<<5;d=0;c:{while(1){d:{e:{f:{f=P(b,k)+d|0;e=J[a+108>>2];if(f>>>0>2]-e>>>0){l=e+f|0;b=K[l|0];if(!(b&1)){b=b>>>1&1;break e}H[l|0]=b&254;g=J[a+156>>2];i=J[J[g+4>>2]+8>>2];c=J[g+36>>2];o=J[g+28>>2];e=J[g+40>>2];f=J[g+32>>2];p=b&252;H[l|0]=p;b=0;if(!i){break e}q=J[a+124>>2];m=J[a+128>>2]-q|0;r=f&2147483647;j=e+r|0;e=e+t|0;if((j|0)<=(e|0)){if(i-1>>>0>>0){break e}break d}b=c+o|0;f=c+(d<<5)|0;if((b|0)<=(f|0)){break f}c=e+32|0;u=(c|0)<(j|0)?c:j;c=f+32|0;v=(b|0)>(c|0)?c:b;h=0;n=1;g:{while(1){if((h|0)==(m|0)){break d}if(H[h+q|0]&1){w=P(h,r)-J[g+40>>2]|0;x=J[a+100>>2];y=J[g+36>>2];c=e;while(1){j=(P(c+w|0,o)<<1)+x|0;b=f;h:{while(1){if(L[j+(b-y<<1)>>1]==65535){b=b+1|0;if((v|0)>(b|0)){continue}break h}break}H[l|0]=p|2;b=1;if(!n){break e}break g}c=c+1|0;if((u|0)>(c|0)){continue}break}}h=h+1|0;n=i>>>0>h>>>0;if((h|0)!=(i|0)){continue}break}if(n){break g}b=0;break e}b=1;break e}break a}if(i-1>>>0>=m>>>0){break d}b=0}s=b+s|0;b=L[a+160>>1];d=d+1|0;if(b>>>0>d>>>0){continue}break c}break}break a}d=L[a+162>>1]}k=k+1|0;if(k>>>0<(d&65535)>>>0){continue}break}return s}Z(145396,53895,487,84789);B()}function aR(a,b,c,d){var e=0,f=0,g=0,h=0,i=Q(0),j=0,k=0;f=Ui-48|0;Ui=f;a:{if(!dk(b,c,J[57960],f+44|0,0)){e=1;b:{c:{d:{e:{f:{g:{h:{b=J[f+44>>2];switch(J[b>>2]){case 3:break e;case 2:break f;case 1:break g;case 0:break h;default:break b}}if(J[b+8>>2]!=1){e=0;dj(4,88458,64882,0);break b}c=J[a>>2];i=N[J[b+4>>2]>>2];if(K[a+17|0]!=1){break d}J[d>>2]=UL(c,i);break c}if(J[b+8>>2]!=3){e=0;dj(4,88458,64845,0);break b}c=J[a>>2];if(K[a+17|0]==1){a=J[b+4>>2];b=J[a>>2];g=J[a+4>>2];N[f+24>>2]=N[a+8>>2];J[f+16>>2]=b;J[f+20>>2]=g;J[d>>2]=uC(c,f+16|0);break b}a=J[b+4>>2];b=J[a>>2];g=J[a+4>>2];N[f+24>>2]=N[a+8>>2];J[f+16>>2]=b;J[f+20>>2]=g;J[d>>2]=_L(c,f+16|0);break b}if(J[b+8>>2]!=2){e=0;dj(4,88458,64903,0);break b}if(K[a+17|0]==1){c=J[a>>2];a=J[b+4>>2];J[d>>2]=tC(c,N[a>>2],N[a+4>>2]);break b}J[f>>2]=131153;dj(4,88458,31902,f);break b}c=J[b+8>>2];if(c>>>0<=8){e=0;dj(4,88458,64863,0);break b}if(K[a+17|0]==1){J[d>>2]=WL(J[a>>2],J[b+4>>2],(c>>>0)/3|0);break b}g=c<<1;e=(g>>>0)/3|0;h=nj(g>>>0>3221225471?-1:e<<2);if(g>>>0>=3){k=e>>>0<=1?1:e;e=0;while(1){j=P(e>>>1|0,3)+(e&1)|0;if(c>>>0<=j>>>0){break a}N[(e<<2)+h>>2]=N[J[b+4>>2]+(j<<2)>>2];e=e+1|0;if((k|0)!=(e|0)){continue}break}}J[d>>2]=VL(J[a>>2],h,(g>>>0)/6|0);cj(h);break c}J[d>>2]=ZL(c,i)}e=1}Uj(J[f+44>>2])}Ui=f+48|0;return e}Z(12664,54972,53,84789);B()}function aT(a,b,c){var d=Q(0),e=Q(0),f=Q(0),g=Q(0),h=Q(0),i=Q(0),j=Q(0),k=0;a:{d=N[c+132>>2];if(d==Q(0)){break a}J[83318]=J[83318]+1;i=d;d=N[c+80>>2];e=N[c+24>>2];f=N[c+16>>2];g=N[c+20>>2];h=N[c+92>>2];h=Q(Q(Q(i-Q(d*N[c+120>>2]))-Q(Q(Q(Q(e*N[a+576>>2])+Q(Q(f*N[a+568>>2])+Q(g*N[a+572>>2])))+Q(Q(N[c+8>>2]*N[a+592>>2])+Q(Q(N[c>>2]*N[a+584>>2])+Q(N[c+4>>2]*N[a+588>>2]))))*h))-Q(Q(Q(Q(N[c+40>>2]*N[b+592>>2])+Q(Q(N[c+32>>2]*N[b+584>>2])+Q(N[c+36>>2]*N[b+588>>2])))-Q(Q(e*N[b+576>>2])+Q(Q(f*N[b+568>>2])+Q(g*N[b+572>>2]))))*h));i=Q(d+h);j=N[c+124>>2];k=i>2]=k?j:i;d=k?Q(j-d):h;if(N[a+336>>2]!=Q(0)){N[a+568>>2]=N[a+568>>2]+Q(d*Q(f*N[a+552>>2]));N[a+572>>2]=Q(d*Q(g*N[a+556>>2]))+N[a+572>>2];N[a+576>>2]=Q(d*Q(e*N[a+560>>2]))+N[a+576>>2];e=N[c+56>>2];f=N[c+52>>2];N[a+584>>2]=Q(Q(d*N[a+536>>2])*N[c+48>>2])+N[a+584>>2];g=N[a+544>>2];N[a+588>>2]=Q(f*Q(d*N[a+540>>2]))+N[a+588>>2];N[a+592>>2]=Q(e*Q(d*g))+N[a+592>>2]}if(N[b+336>>2]==Q(0)){break a}e=N[c+24>>2];f=N[c+20>>2];N[b+568>>2]=N[b+568>>2]-Q(d*Q(N[b+552>>2]*N[c+16>>2]));N[b+572>>2]=N[b+572>>2]-Q(d*Q(f*N[b+556>>2]));N[b+576>>2]=N[b+576>>2]-Q(d*Q(e*N[b+560>>2]));e=N[c+72>>2];f=N[c+68>>2];N[b+584>>2]=Q(Q(d*N[b+536>>2])*N[c+64>>2])+N[b+584>>2];g=N[b+544>>2];N[b+588>>2]=Q(f*Q(d*N[b+540>>2]))+N[b+588>>2];N[b+592>>2]=Q(e*Q(d*g))+N[b+592>>2]}}function PT(a,b,c){var d=0,e=0,f=0,g=0,h=0,i=0,j=0,k=0,l=0,m=0,n=0,o=0,p=0;m=K[a+28|0];j=m?c:b;l=J[j+192>>2];g=J[l+16>>2];f=J[a+12>>2];a:{if((g|0)<=(f|0)){break a}if(J[a+16>>2]<(g|0)){if(g){i=Yj(g<<2);e=J[a+12>>2]}else{e=f}b:{if((e|0)<=0){break b}if(e>>>0>=4){p=e&2147483644;while(1){h=d<<2;J[h+i>>2]=J[h+J[a+20>>2]>>2];k=h|4;J[k+i>>2]=J[k+J[a+20>>2]>>2];k=h|8;J[k+i>>2]=J[k+J[a+20>>2]>>2];h=h|12;J[h+i>>2]=J[h+J[a+20>>2]>>2];d=d+4|0;n=n+4|0;if((n|0)!=(p|0)){continue}break}}e=e&3;if(!e){break b}while(1){h=d<<2;J[h+i>>2]=J[h+J[a+20>>2]>>2];d=d+1|0;o=o+1|0;if((e|0)!=(o|0)){continue}break}}e=J[a+20>>2];if(!(e?!e|K[a+24|0]!=1:1)){J[83765]=J[83765]+1;Zi[J[61751]](J[e-4>>2])}J[a+20>>2]=i;H[a+24|0]=1;J[a+16>>2]=g}d=f;e=g-d&3;if(e){i=0;while(1){J[J[a+20>>2]+(d<<2)>>2]=0;d=d+1|0;i=i+1|0;if((e|0)!=(i|0)){continue}break}}if(f-g>>>0>4294967292){break a}while(1){f=d<<2;J[f+J[a+20>>2]>>2]=0;J[(f+J[a+20>>2]|0)+4>>2]=0;J[(f+J[a+20>>2]|0)+8>>2]=0;J[(f+J[a+20>>2]|0)+12>>2]=0;d=d+4|0;if((g|0)!=(d|0)){continue}break}}J[a+12>>2]=g;if((g|0)>0){b=m?b:c;d=0;while(1){c:{if(J[l+64>>2]){J[J[a+20>>2]+(d<<2)>>2]=0;break c}c=J[j+192>>2];J[j+192>>2]=J[(J[l+24>>2]+P(d,80)|0)+64>>2];f=J[a+4>>2];f=Zi[J[J[f>>2]+8>>2]](f,j,b,J[a+32>>2])|0;J[J[a+20>>2]+(d<<2)>>2]=f;J[j+192>>2]=c}d=d+1|0;if((g|0)!=(d|0)){continue}break}}}function Laa(a,b,c,d){a=a|0;b=b|0;c=c|0;d=d|0;var e=0,f=0,g=0,h=0;e=Ui-32|0;Ui=e;a:{b:{c:{d:{e:{f:{if(!(b|c)){break f}if((c|0)==2097152|c>>>0>2097152){break e}if(b+1>>>0<2){break f}c=b&65535;if(c>>>0>=M[a+100>>2]){break d}f=J[J[a+92>>2]+(c<<2)>>2];if(!f){break f}g=L[J[a+96>>2]+(c<<1)>>1]==(b>>>16|0)?f:0}h=J[79489];if(h){f=J[a+212>>2];if(f){b=1;f=f&48?K[a+220|0]&32?f&-49:f:f;g:{if(!(f&1)){b=0;c=e;break g}J[e>>2]=I[a+220>>1]&1?36064:6144;c=e|4}if(f&16){J[c>>2]=I[a+220>>1]&1?36096:6145;b=b+1|0}if(f&32){J[(b<<2|e)>>2]=I[a+220>>1]&1?36128:6146;b=b+1|0}Zi[h|0](36160,b,e)}J[a+212>>2]=d;I[a+220>>1]=L[a+220>>1]&65534|(g|0)!=0}h:{if(!g){a=ab()|0;break h}b=J[g+448>>2];c=J[a+112>>2];a=J[a+108>>2];if(b>>>0>=c-a>>2>>>0){break c}a=J[a+(b<<2)>>2]}Pa(36160,a|0);if(K[J[79491]+220|0]&2){a=_()|0;if(a){break b}}i:{if(!g){break i}a=(J[g+48>>2]|J[g+52>>2])!=0;J[e>>2]=a?36064:0;b=!(J[g+112>>2]|J[g+116>>2]);J[e+4>>2]=b?0:36065;c=(J[g+176>>2]|J[g+180>>2])!=0;J[e+8>>2]=c?36066:0;d=(J[g+240>>2]|J[g+244>>2])!=0;J[e+12>>2]=d?36067:0;a=d+(c+(b?a:a?2:1)|0)|0;if(a>>>0<2){break i}Lc(a|0,e|0)}a=Ja(36160)|0;if((a|0)!=36053){break a}Ui=e+32|0;return}Z(94863,55553,306,33926);B()}Z(2686,54166,244,5438);B()}Z(145396,53895,487,84789);B()}Cj(a,15661,3579);Z(114101,40535,3579,15661);B()}hy(a);Z(62644,40535,3613,15661);B()}function WT(a,b,c,d){a=a|0;b=b|0;c=c|0;d=d|0;var e=0,f=0,g=0,h=0,i=0,j=0,k=0,l=0,m=0,n=0;f=Ui-96|0;Ui=f;e=J[a+8>>2];a:{if((e|0)!=J[a+12>>2]){break a}k=e?e<<1:1;if((k|0)<=(e|0)){break a}if(k){h=Yj(k<<2);e=J[a+8>>2]}b:{if((e|0)<=0){break b}if(e>>>0>=4){l=e&2147483644;while(1){g=i<<2;J[g+h>>2]=J[g+J[a+16>>2]>>2];j=g|4;J[j+h>>2]=J[j+J[a+16>>2]>>2];j=g|8;J[j+h>>2]=J[j+J[a+16>>2]>>2];g=g|12;J[g+h>>2]=J[g+J[a+16>>2]>>2];i=i+4|0;m=m+4|0;if((l|0)!=(m|0)){continue}break}}g=e&3;if(!g){break b}while(1){l=i<<2;J[l+h>>2]=J[l+J[a+16>>2]>>2];i=i+1|0;n=n+1|0;if((g|0)!=(n|0)){continue}break}}i=J[a+16>>2];if(!(!i|K[a+20|0]!=1)){if(i){J[83765]=J[83765]+1;Zi[J[61751]](J[i-4>>2])}e=J[a+8>>2]}J[a+16>>2]=h;H[a+20|0]=1;J[a+12>>2]=k}J[J[a+16>>2]+(e<<2)>>2]=b;J[a+8>>2]=e+1;e=J[b+16>>2];J[f+40>>2]=J[b+12>>2];J[f+44>>2]=e;e=J[b+8>>2];J[f+32>>2]=J[b+4>>2];J[f+36>>2]=e;e=J[b+32>>2];J[f+56>>2]=J[b+28>>2];J[f+60>>2]=e;e=J[b+24>>2];J[f+48>>2]=J[b+20>>2];J[f+52>>2]=e;e=J[b+48>>2];J[f+72>>2]=J[b+44>>2];J[f+76>>2]=e;e=J[b+40>>2];J[f+64>>2]=J[b+36>>2];J[f+68>>2]=e;e=J[b+64>>2];J[f+88>>2]=J[b+60>>2];J[f+92>>2]=e;e=J[b+56>>2];J[f+80>>2]=J[b+52>>2];J[f+84>>2]=e;e=J[b+192>>2];h=f+16|0;Zi[J[J[e>>2]+8>>2]](e,f+32|0,h,f);e=J[a+76>>2];J[b+188>>2]=Zi[J[J[e>>2]+8>>2]](e,h,f,J[J[b+192>>2]+4>>2],b,c,d,J[a+24>>2],0);Ui=f+96|0}function Yy(a,b,c){var d=Q(0),e=Q(0),f=Q(0),g=Q(0),h=Q(0),i=Q(0),j=Q(0);g=N[c+84>>2];h=N[c+24>>2];i=N[c+16>>2];j=N[c+20>>2];e=N[c+92>>2];d=Q(Q(Q(N[c+116>>2]-Q(g*N[c+120>>2]))-Q(Q(Q(Q(h*N[a+512>>2])+Q(Q(i*N[a+504>>2])+Q(j*N[a+508>>2])))+Q(Q(N[c+8>>2]*N[a+528>>2])+Q(Q(N[c>>2]*N[a+520>>2])+Q(N[c+4>>2]*N[a+524>>2]))))*e))-Q(Q(Q(Q(N[c+40>>2]*N[b+528>>2])+Q(Q(N[c+32>>2]*N[b+520>>2])+Q(N[c+36>>2]*N[b+524>>2])))-Q(Q(h*N[b+512>>2])+Q(Q(i*N[b+504>>2])+Q(j*N[b+508>>2]))))*e));e=Q(g+d);f=N[c+124>>2];a:{if(e>2];if(!(f>2]=e;if(N[a+336>>2]!=Q(0)){N[a+504>>2]=N[a+504>>2]+Q(d*Q(i*N[a+552>>2]));N[a+508>>2]=Q(d*Q(j*N[a+556>>2]))+N[a+508>>2];N[a+512>>2]=Q(d*Q(h*N[a+560>>2]))+N[a+512>>2];e=N[c+56>>2];f=N[c+52>>2];N[a+520>>2]=Q(Q(d*N[a+536>>2])*N[c+48>>2])+N[a+520>>2];g=N[a+544>>2];N[a+524>>2]=Q(f*Q(d*N[a+540>>2]))+N[a+524>>2];N[a+528>>2]=Q(e*Q(d*g))+N[a+528>>2]}if(N[b+336>>2]!=Q(0)){e=N[c+24>>2];f=N[c+20>>2];N[b+504>>2]=N[b+504>>2]-Q(d*Q(N[b+552>>2]*N[c+16>>2]));N[b+508>>2]=N[b+508>>2]-Q(d*Q(f*N[b+556>>2]));N[b+512>>2]=N[b+512>>2]-Q(d*Q(e*N[b+560>>2]));e=N[c+72>>2];f=N[c+68>>2];N[b+520>>2]=Q(Q(d*N[b+536>>2])*N[c+64>>2])+N[b+520>>2];g=N[b+544>>2];N[b+524>>2]=Q(f*Q(d*N[b+540>>2]))+N[b+524>>2];N[b+528>>2]=Q(e*Q(d*g))+N[b+528>>2]}}function ila(a,b,c,d,e){a=a|0;b=b|0;c=c|0;d=d|0;e=e|0;var f=0,g=0,h=0,i=0,j=0,k=0,l=0,m=0,n=0,o=0,p=0,q=0,r=0,s=0;g=Ui-80|0;Ui=g;n=J[e+8>>2];s=J[J[e+4>>2]+4>>2];a:{if(n>>>0>=s>>>0){break a}J[e+8>>2]=n+1;h=J[e>>2];i=J[a+4>>2];e=i;o=J[e+96>>2];p=J[e+100>>2];j=J[c+4>>2];e=j;q=J[e+96>>2];r=J[e+100>>2];if(b){e=0;if(!(b&1)){while(1){e=e+1|0;f=b&2;b=(b&65534)>>>1|0;if(!f){continue}break}}b=(e<<3)+h|0;f=J[b>>2];k=J[b+4>>2]}if(d){b=0;if(!(d&1)){while(1){b=b+1|0;e=d&2;d=(d&65534)>>>1|0;if(!e){continue}break}}b=(b<<3)+h|0;l=J[b>>2];m=J[b+4>>2]}if(J[h+128>>2]){a=g;J[a+32>>2]=o;J[a+36>>2]=p;J[a+40>>2]=f;J[a+44>>2]=k;yn(a,i);N[a+16>>2]=N[a>>2];b=J[a+8>>2];J[a+20>>2]=J[a+4>>2];J[a+24>>2]=b;J[a+72>>2]=l;J[a+76>>2]=m;J[a+64>>2]=q;J[a+68>>2]=r;yn(a,j);N[a+48>>2]=N[a>>2];b=J[a+8>>2];J[a+52>>2]=J[a+4>>2];J[a+56>>2]=b;_s(J[h+128>>2],J[58648],a+16|0);break a}b=g;J[b+48>>2]=l;J[b+52>>2]=m;J[b+56>>2]=f;J[b+60>>2]=k;J[b+24>>2]=l;J[b+28>>2]=m;J[b+16>>2]=q;J[b+20>>2]=r;yn(b,j);N[b+32>>2]=N[b>>2];d=J[b+8>>2];J[b+36>>2]=J[b+4>>2];J[b+40>>2]=d;d=b+16|0;VF(d,i,o,p,L[a+26>>1]);J[b+48>>2]=f;J[b+52>>2]=k;J[b+56>>2]=l;J[b+60>>2]=m;J[b+24>>2]=f;J[b+28>>2]=k;J[b+16>>2]=o;J[b+20>>2]=p;yn(b,i);N[b+32>>2]=N[b>>2];a=J[b+8>>2];J[b+36>>2]=J[b+4>>2];J[b+40>>2]=a;VF(d,j,q,r,L[c+26>>1])}Ui=g+80|0;return n>>>0>>0|0}function dF(a,b,c){var d=0,e=0,f=0,g=0;e=Ui-112|0;Ui=e;a:{if((a|0)==(b|0)){break a}b:{c:{d=K[b+6|0];switch(d|0){case 1:break a;case 0:break c;default:break b}}d=2;if((Zl(b,0,e+12|0)|0)>0){break a}d=J[b+8>>2]-J[b+12>>2]>>4?1:3;break a}d=3}if(!dr(b,c)){fj(a,65571,0)}d:{e:{if((d|0)!=1){J[e>>2]=J[(d<<2)+258064>>2];ik(a,65189,e);break e}Xo(a,b,c);I[b+52>>1]=L[a+52>>1];f:{g:{h:{i:{j:{switch(K[b+6|0]){default:d=J[b+20>>2];break i;case 1:break h;case 0:break j}}d=J[b+20>>2];if((d|0)==J[b+40>>2]){break h}}c=J[d>>2];J[b+8>>2]=c;d=zk(b,65216,37);break g}d=L[b+52>>1];if(d>>>0>=200){c=J[J[b+20>>2]>>2];J[b+8>>2]=c;d=zk(b,6474,16);break g}d=d+1|0;I[b+54>>1]=d;I[b+52>>1]=d;c=Uw(b,1955,J[b+8>>2]-(c<<4)|0);k:{if(c){H[b+6|0]=c;d=J[b+8>>2];l:{m:{n:{switch(c-2|0){case 2:J[d>>2]=zk(b,2985,17);f=4;break m;case 3:J[d>>2]=zk(b,56882,23);f=4;break m;case 0:case 1:break n;default:break l}}g=d-16|0;f=J[g+4>>2];J[d>>2]=J[g>>2];J[d+4>>2]=f;f=J[d-8>>2]}J[d+8>>2]=f}d=d+16|0;J[b+8>>2]=d;J[J[b+20>>2]+8>>2]=d;break k}c=K[b+6|0]}I[b+52>>1]=L[b+52>>1]-1;break f}J[c+8>>2]=4;J[c>>2]=d;c=J[b+8>>2];if((J[b+28>>2]-c|0)<=16){c=J[b+44>>2];_n(b,(c|0)<=0?c+1|0:c<<1);c=J[b+8>>2]}J[b+8>>2]=c+16;c=2}if(c>>>0<=1){c=J[b+8>>2]-J[b+12>>2]>>4;if(!dr(a,c+1|0)){fj(a,65600,0)}Xo(b,a,c);break d}Xo(b,a,1)}c=-1}Ui=e+112|0;return c}function nQ(a,b,c,d,e,f,g,h,i,j){Ao(a);J[a+156>>2]=J[f>>2];J[a+144>>2]=J[g>>2];J[a+172>>2]=J[c>>2];b=J[b>>2];J[a+312>>2]=h;J[a+308>>2]=0;J[a+240>>2]=b;N[a+16>>2]=N[i>>2];N[a+20>>2]=N[i+4>>2];N[a+24>>2]=N[i+8>>2];N[a+28>>2]=N[i+12>>2];N[a+32>>2]=N[i+16>>2];N[a+36>>2]=N[i+20>>2];N[a+40>>2]=N[i+24>>2];N[a+44>>2]=N[i+28>>2];N[a+48>>2]=N[i+32>>2];N[a+52>>2]=N[i+36>>2];N[a+56>>2]=N[i+40>>2];N[a+60>>2]=N[i+44>>2];N[a+64>>2]=N[i+48>>2];N[a+68>>2]=N[i+52>>2];N[a+72>>2]=N[i+56>>2];N[a+76>>2]=N[i+60>>2];i=J[e>>2];a:{if(!i){i=J[d>>2];if(!i){break a}}b=J[i+4>>2];J[a+176>>2]=J[i>>2];J[a+180>>2]=b}i=J[e+4>>2];b:{if(!i){i=J[d+4>>2];if(!i){break b}}b=J[i+4>>2];J[a+184>>2]=J[i>>2];J[a+188>>2]=b}i=J[e+8>>2];c:{if(!i){i=J[d+8>>2];if(!i){break c}}b=J[i+4>>2];J[a+192>>2]=J[i>>2];J[a+196>>2]=b}i=J[e+12>>2];d:{if(!i){i=J[d+12>>2];if(!i){break d}}b=J[i+4>>2];J[a+200>>2]=J[i>>2];J[a+204>>2]=b}i=J[e+16>>2];e:{if(!i){i=J[d+16>>2];if(!i){break e}}b=J[i+4>>2];J[a+208>>2]=J[i>>2];J[a+212>>2]=b}i=J[e+20>>2];f:{if(!i){i=J[d+20>>2];if(!i){break f}}b=J[i+4>>2];J[a+216>>2]=J[i>>2];J[a+220>>2]=b}i=J[e+24>>2];g:{if(!i){i=J[d+24>>2];if(!i){break g}}b=J[i+4>>2];J[a+224>>2]=J[i>>2];J[a+228>>2]=b}i=J[e+28>>2];h:{if(!i){i=J[d+28>>2];if(!i){break h}}b=J[i+4>>2];J[a+232>>2]=J[i>>2];J[a+236>>2]=b}if(j){np(a,j)}}function GA(a,b,c){var d=0,e=0,f=0,g=0;d=K[b|0]|K[b+1|0]<<8|(K[b+2|0]<<16|K[b+3|0]<<24);d=d<<24|(d&65280)<<8|(d>>>8&65280|d>>>24);b=K[b+4|0]|K[b+5|0]<<8|(K[b+6|0]<<16|K[b+7|0]<<24);b=b<<24|(b&65280)<<8|(b>>>8&65280|b>>>24);e=(d>>>4^b)&252645135;d=e<<4^d;e=b^e;b=d>>>16^e&65535;e=b^e;b=d^b<<16;d=(e>>>2^b)&858993459;e=d<<2^e;b=b^d;d=(e>>>8^b)&16711935;e=oxa(d<<8^e,1);f=e;d=b^d;e=(d^e)&-1431655766;b=f^e;d=oxa(d^e,1);while(1){f=b;e=J[a+4>>2]^oxa(b,28);b=J[a>>2]^b;d=J[((e&63)<<2)+179392>>2]^(J[((b&63)<<2)+178368>>2]^d^J[(b>>>6&252)+178624>>2]^J[(b>>>14&252)+178880>>2]^J[(b>>>22&252)+179136>>2])^J[(e>>>6&252)+179648>>2]^J[(e>>>14&252)+179904>>2]^J[(e>>>22&252)+180160>>2];b=d^J[a+8>>2];e=J[((b&63)<<2)+178368>>2]^J[(b>>>6&252)+178624>>2]^J[(b>>>14&252)+178880>>2]^J[(b>>>22&252)+179136>>2];b=J[a+12>>2]^oxa(d,28);b=f^(e^J[((b&63)<<2)+179392>>2]^J[(b>>>6&252)+179648>>2]^J[(b>>>14&252)+179904>>2]^J[(b>>>22&252)+180160>>2]);a=a+16|0;g=g+1|0;if((g|0)!=8){continue}break}a=oxa(b,31);b=(a^d)&-1431655766;d=oxa(b^d,31);a=a^b;b=(d>>>8^a)&16711935;d=b<<8^d;a=a^b;b=(d>>>2^a)&858993459;d=b<<2^d;a=a^b;b=d&65535^a>>>16;e=b<<16^a;a=b^d;b=(e>>>4^a)&252645135;a=a^b;H[c+7|0]=a;H[c+6|0]=a>>>8;H[c+5|0]=a>>>16;H[c+4|0]=a>>>24;a=e^b<<4;H[c+3|0]=a;H[c+2|0]=a>>>8;H[c+1|0]=a>>>16;H[c|0]=a>>>24;return 0}function aP(a,b,c,d,e,f,g){a=a|0;b=b|0;c=c|0;d=d|0;e=e|0;f=f|0;g=Q(g);var h=0,i=0,j=Q(0);a:{b:{c:{d:{e:{f:{if(b>>>0<2097152){h=a&65535;b=J[79491];if(h>>>0>=M[b+100>>2]){break f}h=L[J[b+96>>2]+(h<<1)>>1]==(a>>>16|0)?J[J[b+92>>2]+(h<<2)>>2]:0;a=J[h+48>>2];if(a>>>0<=3){i=J[(a<<2)+161296>>2]}if(!c){c=J[b+176>>2]}a=J[(c<<2)+161248>>2];if(!d){d=J[b+180>>2]}b=(d<<2)+161248|0;g:{if(L[h+76>>1]>1){d=a;break g}d=9728;h:{switch(a-9984|0){default:if((a|0)==9728){break g}break;case 0:case 2:break g;case 1:break h}}d=9729}a=J[b>>2];Ea(i|0,10241,d|0);if(K[J[79491]+220|0]&2){b=_()|0;if(b){break e}}Ea(i|0,10240,a|0);if(K[J[79491]+220|0]&2){a=_()|0;if(a){break d}}Ea(i|0,10242,J[(e<<2)+161280>>2]);if(K[J[79491]+220|0]&2){a=_()|0;if(a){break c}}Ea(i|0,10243,J[(f<<2)+161280>>2]);b=!(g>Q(1));d=J[79491];c=L[d+220>>1];if(c&2){a=_()|0;if(a){break b}d=J[79491];c=L[d+220>>1]}i:{if(b|!(c&128)){break i}j=N[d+216>>2];lc(i|0,34046,Q(g>2]=0;J[e+4>>2]=0;J[d+2188>>2]=0;J[d+2192>>2]=0;e=d+2220|0;J[e>>2]=0;J[e+4>>2]=0;e=d+2204|0;J[e>>2]=0;J[e+4>>2]=0;e=d+2196|0;J[e>>2]=0;J[e+4>>2]=0;J[d+2216>>2]=-1;a=hj(d,a,2188);e=a+2188|0;d=a+140|0;f=ul(d,46);b:{if(!f){break b}if(jj(f,9944)){break b}H[f|0]=0}if(LK(a,e)){c=J[e>>2];if(c){co(c)}if(J[a+2192>>2]){Ms(a+2192|0)}c:{if(H[a+2224|0]&1){break c}c=J[a+2204>>2];if(c){cj(c)}c=J[a+2196>>2];if(!c){break c}cj(c)}cj(a);d=-4;break a}J[b+52>>2]=d;g=a+8|0;J[b+48>>2]=g;f=b+3136|0;Gj(f,1024,52316,b+48|0);J[b+36>>2]=d;J[b+32>>2]=g;g=b+2112|0;Gj(g,1024,76118,b+32|0);d=a+2192|0;d:{e:{f:{if(!kr(b+1088|0,f)){f=b- -64|0;if(!kr(f,g)){break f}}J[b+16>>2]=f;dj(4,96538,28603,b+16|0);break e}J[b+60>>2]=0;f=JK(b+1088|0,b- -64|0,d,b+60|0);if(!f){g=J[d>>2];if(g){break d}}c=f+21|0;if(c>>>0>21){c=97515}else{c=J[(c<<2)+223356>>2]}J[b+8>>2]=c;J[b+4>>2]=b- -64;J[b>>2]=b+1088;dj(4,96538,31335,b)}c=J[e>>2];if(c){co(c)}if(J[d>>2]){Ms(d)}g:{if(H[a+2224|0]&1){break g}c=J[a+2204>>2];if(c){cj(c)}c=J[a+2196>>2];if(!c){break g}cj(c)}cj(a);d=-1e3;break a}J[g+12>>2]=J[b+60>>2];vK(a);J[J[a+2188>>2]>>2]=J[a+2192>>2];J[c>>2]=a;d=0}Ui=b+4160|0;return d|0}function PO(a,b,c){var d=Q(0),e=Q(0),f=Q(0),g=Q(0),h=Q(0),i=Q(0),j=Q(0),k=0,l=0,m=Q(0),n=Q(0),o=Q(0),p=Q(0),q=Q(0),r=Q(0),s=Q(0),t=Q(0),u=Q(0),v=Q(0);k=b&2;i=N[a+68>>2];j=N[a+64>>2];if(b&4){e=k?i:Q(1);g=k?j:Q(1);a:{b:{c:{d:{e:{f:{g:{l=J[a+476>>2]>>>12&15;switch(l|0){case 8:break c;case 7:break d;case 2:case 3:case 4:break f;case 0:case 1:case 5:break g;default:break a}}f=Q(g*Q(-.5));break e}f=Q(-g)}switch(l|0){case 1:case 2:break c;case 0:case 3:break d;default:break a}}d=Q(e*Q(-.5));break b}d=Q(-e)}}N[c+60>>2]=N[c+60>>2]+Q(Q(N[c+44>>2]*Q(0))+Q(Q(N[c+12>>2]*f)+Q(d*N[c+28>>2])));N[c+56>>2]=N[c+56>>2]+Q(Q(N[c+40>>2]*Q(0))+Q(Q(N[c+8>>2]*f)+Q(d*N[c+24>>2])));N[c+52>>2]=N[c+52>>2]+Q(Q(N[c+36>>2]*Q(0))+Q(Q(N[c+4>>2]*f)+Q(d*N[c+20>>2])));N[c+48>>2]=N[c+48>>2]+Q(Q(N[c+32>>2]*Q(0))+Q(Q(N[c>>2]*f)+Q(d*N[c+16>>2])))}if(!(!k|!(b&1)&(J[a+476>>2]&240)==16)){f=N[c+8>>2];d=Q(f*Q(0));e=N[c+24>>2];g=Q(e*Q(0));h=N[c+40>>2];N[c+40>>2]=Q(d+g)+h;m=N[c+4>>2];n=Q(m*Q(0));o=N[c+20>>2];p=Q(o*Q(0));q=N[c+36>>2];N[c+36>>2]=Q(n+p)+q;r=N[c>>2];s=Q(r*Q(0));t=N[c+16>>2];u=Q(t*Q(0));v=N[c+32>>2];N[c+32>>2]=Q(s+u)+v;h=Q(h*Q(0));N[c+24>>2]=h+Q(d+Q(i*e));d=Q(q*Q(0));N[c+20>>2]=d+Q(n+Q(i*o));e=Q(v*Q(0));N[c+16>>2]=e+Q(s+Q(i*t));N[c+8>>2]=h+Q(Q(f*j)+g);N[c+4>>2]=d+Q(Q(m*j)+p);N[c>>2]=e+Q(Q(r*j)+u)}}function zo(a){var b=0,c=0,d=0,e=0;if((Nu(a,0,0,1e6)|0)==-17){while(1){dj(3,96538,123460,0);if((Nu(a,0,0,1e6)|0)==-17){continue}break}}a:{b=J[a+181716>>2];if((b|0)!=J[a+181720>>2]){J[a+181716>>2]=b+4;J[b>>2]=J[a+88176>>2];b=J[a+181712>>2];c=J[a+181716>>2];if((b|0)!=(c|0)){while(1){e=J[(d<<2)+b>>2];if(e){vj(J[a+163896>>2],e);c=J[a+181716>>2];b=J[a+181712>>2]}d=d+1|0;if(d>>>0>2>>>0){continue}break}}if(J[a+163888>>2]!=1023){break a}b=J[a+163892>>2];if(b){b:{if(H[b+88|0]&1){break b}c=J[b+76>>2];if(!c){break b}cj(c)}c:{if(H[b+52|0]&1){break c}c=J[b+40>>2];if(!c){break c}cj(c)}cj(b)}d:{e:{f:{b=J[a+181680>>2];if(b){if(J[b>>2]){break f}if(J[b+100>>2]|J[b+104>>2]|(J[b+108>>2]|J[b+112>>2])){break e}if(J[b+124>>2]|(J[b+116>>2]|J[b+120>>2])){break e}cj(b)}break d}Z(112721,39600,158,9252);B()}Z(111158,39600,161,9252);B()}g:{if(H[a+181724|0]&1){break g}b=J[a+181712>>2];if(!b){break g}cj(b)}h:{if(H[a+181704|0]&1){break h}b=J[a+181692>>2];if(!b){break h}cj(b)}i:{if(H[a+163928|0]&1){break i}b=J[a+163908>>2];if(b){cj(b)}b=J[a+163900>>2];if(!b){break i}cj(b)}j:{if(H[a+44|0]&1){break j}b=J[a+24>>2];if(b){cj(b)}b=J[a+16>>2];if(!b){break j}cj(b)}k:{if(H[a+12|0]&1){break k}b=J[a>>2];if(!b){break k}cj(b)}cj(a);return}Z(112520,53895,557,53220);B()}Z(144410,40201,1057,35523);B()}function aA(a,b){var c=0,d=0,e=0,f=0,g=0,h=0,i=0;e=Ui-48|0;Ui=e;d=J[a+48>>2];a:{b:{c=J[a+16>>2];if((c|0)!=285){if((c|0)!=40){break b}c=J[a+4>>2];tk(a);Il(a,b,0);pp(a,41,40,c);ln(J[a+48>>2],b);break a}IG(a,b);break a}qk(a,49500)}while(1){c:{d:{e:{f:{c=J[a+16>>2];g:{if((c|0)<=90){switch(c-40|0){case 18:break d;case 6:break f;case 0:break g;default:break c}}if((c|0)==91){break e}if((c|0)==123){break g}if((c|0)!=286){break c}}kn(d,b);lJ(a,b);continue}oB(a,b);continue}Zn(d,b);tk(a);c=e+24|0;Il(a,c,0);wI(J[a+48>>2],c);if(J[a+16>>2]!=93){c=J[a+52>>2];J[e>>2]=Cl(a,93);qk(a,gk(c,74053,e))}tk(a);vI(d,b,e+24|0);continue}tk(a);if(J[a+16>>2]!=285){c=J[a+52>>2];J[e+16>>2]=Cl(a,285);qk(a,gk(c,74053,e+16|0))}c=J[a+24>>2];tk(a);J[e+32>>2]=rs(J[a+48>>2],c);J[e+24>>2]=4;J[e+40>>2]=-1;J[e+44>>2]=-1;f=e+24|0;Zn(d,b);h:{if(J[b>>2]!=12){break h}c=J[b+8>>2];if(c&256|(c|0)>2]=J[d+36>>2]-1}g=J[d+36>>2];c=g+2|0;h=J[d>>2];i:{if((c|0)<=K[h+75|0]){i=c;break i}i=c;if(c>>>0>=250){qk(J[d+12>>2],4813);h=J[d>>2];i=J[d+36>>2]+2|0}H[h+75|0]=c}J[d+36>>2]=i;El(d,g<<6|J[b+8>>2]<<23|hm(d,f)<<14|11,J[J[d+12>>2]+8>>2]);j:{if(J[f>>2]!=12){break j}c=J[f+8>>2];if(c&256|(c|0)>2]=J[d+36>>2]-1}J[b>>2]=12;J[b+8>>2]=g;lJ(a,b);continue}break}Ui=e+48|0}function YX(a,b,c,d,e,f,g,h){a=a|0;b=b|0;c=c|0;d=d|0;e=e|0;f=f|0;g=g|0;h=h|0;var i=0,j=0,k=0,l=0,m=0;i=e;e=J[a+4>>2];J[i>>2]=e;if(e>>>0<=f>>>0){a:{e=-16640;b:{switch(J[a+164>>2]){case 0:c:{d:{if(c>>>0>4294967284){break d}e=J[a+4>>2];if(e>>>0>>0){break d}H[d|0]=0;f=(e-c|0)-3|0;if(!g){break d}H[d+1|0]=2;e=d+2|0;e:{while(1){if(!f){break e}f=f-1|0;i=100;while(1){f:{j=Zi[g|0](h,e,1)|0;if(K[e|0]){break f}i=i-1|0;if(!i){break f}if(!j){continue}}break}if(i){e=e+1|0;if(!j){continue}}break}e=j-17536|0;break c}H[e|0]=0;if(c){hj(e+1|0,b,c)}e=$q(a,d,d);break c}e=-16512}break a;case 1:j=Ui-16|0;Ui=j;g:{if(!g){e=-16512;break g}e=-16512;f=J[a+168>>2]-3|0;if(f>>>0<=5){f=J[(f<<2)+266328>>2]}else{f=0}if(!f){break g}i=(f?J[f+8>>2]:0)&255;l=(i<<1)+c|0;m=l+2|0;if(m>>>0>>0){break g}k=J[a+4>>2];if(m>>>0>k>>>0){break g}d=ij(d,0,k);H[d|0]=0;e=h;h=d+1|0;e=Zi[g|0](e,h,i)|0;if(e){e=e-17536|0;break g}g=h+i|0;e=-20736;h:{if(!f){break h}e=Zi[J[f+28>>2]](0,0,g)|0}if(e){break g}e=(g+i+(k-l)|0)-2|0;H[e|0]=1;if(c){hj(e+1|0,b,c)}b=j+4|0;J[b>>2]=0;J[b+4>>2]=0;J[b+8>>2]=0;i:{e=oo(b,f,0);if(!e){c=(d+i|0)+1|0;f=(i^-1)+k|0;e=Xr(c,f,h,i,b);if(!e){break i}}Kl(j+4|0);break g}b=j+4|0;e=Xr(h,i,c,f,b);Kl(b);if(e){break g}e=$q(a,d,d)}Ui=j+16|0;break;default:break b}}}}else{e=-17408}return e|0}function XS(a,b,c,d,e,f){var g=0;J[a+4>>2]=b;J[a>>2]=246964;b=J[c+12>>2];J[a+16>>2]=J[c+8>>2];J[a+20>>2]=b;b=J[c+4>>2];J[a+8>>2]=J[c>>2];J[a+12>>2]=b;b=J[c+28>>2];J[a+32>>2]=J[c+24>>2];J[a+36>>2]=b;b=J[c+20>>2];J[a+24>>2]=J[c+16>>2];J[a+28>>2]=b;b=J[c+44>>2];J[a+48>>2]=J[c+40>>2];J[a+52>>2]=b;b=J[c+36>>2];J[a+40>>2]=J[c+32>>2];J[a+44>>2]=b;g=J[c+60>>2];b=a- -64|0;J[b>>2]=J[c+56>>2];J[b+4>>2]=g;b=J[c+52>>2];J[a+56>>2]=J[c+48>>2];J[a+60>>2]=b;b=J[d+12>>2];J[a+80>>2]=J[d+8>>2];J[a+84>>2]=b;b=J[d+4>>2];J[a+72>>2]=J[d>>2];J[a+76>>2]=b;b=J[d+28>>2];J[a+96>>2]=J[d+24>>2];J[a+100>>2]=b;b=J[d+20>>2];J[a+88>>2]=J[d+16>>2];J[a+92>>2]=b;b=J[d+44>>2];J[a+112>>2]=J[d+40>>2];J[a+116>>2]=b;b=J[d+36>>2];J[a+104>>2]=J[d+32>>2];J[a+108>>2]=b;b=J[d+60>>2];J[a+128>>2]=J[d+56>>2];J[a+132>>2]=b;b=J[d+52>>2];J[a+120>>2]=J[d+48>>2];J[a+124>>2]=b;b=J[e+12>>2];J[a+144>>2]=J[e+8>>2];J[a+148>>2]=b;b=J[e+4>>2];J[a+136>>2]=J[e>>2];J[a+140>>2]=b;b=J[e+28>>2];J[a+160>>2]=J[e+24>>2];J[a+164>>2]=b;b=J[e+20>>2];J[a+152>>2]=J[e+16>>2];J[a+156>>2]=b;b=J[e+44>>2];J[a+176>>2]=J[e+40>>2];J[a+180>>2]=b;b=J[e+36>>2];J[a+168>>2]=J[e+32>>2];J[a+172>>2]=b;b=J[e+60>>2];J[a+192>>2]=J[e+56>>2];J[a+196>>2]=b;b=J[e+52>>2];J[a+184>>2]=J[e+48>>2];J[a+188>>2]=b;N[a+204>>2]=f;J[a+200>>2]=1065353216;return a}function uH(a,b,c,d,e,f,g){var h=0,i=0,j=0,k=0,l=0;i=Ui-1120|0;Ui=i;j=J[a+4>>2];a:{if(j-1025>>>0<4294966287){h=-16512;break a}h=$q(a,g,i);if(h){break a}g=j-1|0;if(K[g+i|0]!=188){h=-16640;break a}if(b){b=b-3|0;if(b>>>0<=5){b=J[(b<<2)+266328>>2]}else{b=0}if(!b){h=-16512;break a}c=(b?J[b+8>>2]:0)&255}h=-16512;b=e-3|0;if(b>>>0<=5){b=J[(b<<2)+266328>>2]}else{b=0}if(!b){break a}e=b?J[b+8>>2]:0;J[i+1048>>2]=0;J[i+1052>>2]=0;a=Xk(a+8|0);if(K[i|0]>>>(a-(j<<3)|0)+7|0){break a}k=j;l=a-1|0;j=l&7;g=j?k:g;e=e&255;if(g>>>0>>0){break a}k=i+1036|0;a=k;J[a>>2]=0;J[a+4>>2]=0;J[a+8>>2]=0;h=oo(a,b,0);b:{if(h){break b}a=!j|i;b=(g+a|0)-e|0;j=b-1|0;h=Xr(a,g+(e^-1)|0,j,e,k);if(h){break b}H[i|0]=K[i|0]&255>>>(g<<3)-l;b=b-2|0;c:{if(b>>>0>a>>>0){while(1){g=K[a|0];if(g){break c}a=a+1|0;if((b|0)!=(a|0)){continue}break}a=b}g=K[a|0]}h=-16640;if((g&255)!=1){break b}k=(f|0)!=-1;b=f;f=a+1|0;g=j-f|0;if(k&(b|0)!=(g|0)){break b}b=-20736;a=i+1036|0;d:{if(!a){break d}h=J[a>>2];if(!h){break d}b=Zi[J[h+16>>2]](J[a+4>>2])|0}h=b;if(b){break b}h=Uo(a,i+1048|0,8);if(h){break b}h=Uo(a,d,c);if(h){break b}h=Uo(a,f,g);if(h){break b}c=i+1056|0;b=-20736;e:{if(!a){break e}d=J[a>>2];if(!d){break e}b=Zi[J[d+24>>2]](J[a+4>>2],c)|0}h=b;if(b){break b}h=Wj(j,c,e)?-17280:0}Kl(i+1036|0)}Ui=i+1120|0;return h}function oja(a,b){a=a|0;b=b|0;var c=0,d=0,e=0,f=0;c=J[a+4>>2];f=J[c+20>>2];a:{b:{d=J[J[a+24>>2]>>2];if(d>>>0>2]-f>>3>>>0){f=J[f+(d<<3)>>2];d=J[c+8>>2];c=J[c+4>>2];if(f>>>0>=d-c>>2>>>0){break a}d=J[c+(f<<2)>>2];c=J[a+16>>2];e=J[a+20>>2];if((c|0)==J[75470]&(e|0)==J[75471]){c=J[J[J[a+8>>2]+80>>2]>>2];a=J[d+156>>2];if(!a){a=J[J[d+152>>2]+4>>2]}return Lm(c,a,b)|0}c:{if((c|0)!=J[75378]|(e|0)!=J[75379]){if(J[75384]!=(c|0)|J[75385]!=(e|0)){break c}c=0;break b}c=J[J[J[a+8>>2]+80>>2]>>2];a=J[d+192>>2];if(!a){a=J[J[d+152>>2]+8>>2]}return Lm(c,a,b)|0}if((c|0)==J[75386]&(e|0)==J[75387]){c=1;break b}if((c|0)==J[75388]&(e|0)==J[75389]){c=2;break b}if((c|0)==J[75390]&(e|0)==J[75391]){c=3;break b}if((c|0)==J[75392]&(e|0)==J[75393]){c=4;break b}if((c|0)==J[75394]&(e|0)==J[75395]){c=5;break b}if((c|0)==J[75396]&(e|0)==J[75397]){c=6;break b}if((c|0)==J[75398]&(e|0)==J[75399]){c=7;break b}f=J[d+192>>2];if(!f){f=J[J[d+152>>2]+8>>2]}return bt(J[f>>2],c,e,J[a+32>>2],b,1,283,d)|0}break a}f=J[J[J[a+8>>2]+80>>2]>>2];e=c<<2;a=J[(d+e|0)+160>>2];d:{if(a){break d}a=J[d+192>>2];if(a){a=J[(a+e|0)+4>>2];if(a){break d}}d=J[d+152>>2];a=J[(d+(c<<2)|0)+12>>2];if(a){break d}a=J[d+8>>2];if(!a){return Lm(f,0,b)|0}a=J[(a+(c<<2)|0)+4>>2]}return Lm(f,a,b)|0}Z(145396,53895,487,84789);B()}function n1(a,b){a=a|0;b=b|0;var c=0,d=0,e=0,f=0,g=0,h=0,i=0,j=0,k=0,l=0,m=0,n=0;c=Ui-160|0;Ui=c;d=Bs(a,0,12,c+148|0,c+144|0);a:{b:{if((d|0)<0){J[c>>2]=d;dj(4,96825,79566,c);break b}if(M[c+144>>2]<=11){dj(3,96825,35775,0);break b}c:{d:{d=J[c+148>>2];e=J[c+156>>2];if(!((d|0)!=1179011410|(e|0)!=1163280727)){i=c+120|0;f=12;e=0;while(1){d=Bs(a,f,8,c+136|0,c+144|0);if((d|0)<0){J[c+32>>2]=d;dj(4,96825,79533,c+32|0);break d}if(M[c+144>>2]<8){break d}d=J[c+140>>2];e:{f:{g:{g=J[c+136>>2];if((g|0)!=544501094){if((g|0)==1635017060){break g}f=f+8|0;break e}J[c+112>>2]=g;J[c+116>>2]=d;f=f+8|0;e=Bs(a,f,16,i,c+144|0);if((e|0)<0){J[c+48>>2]=e;dj(4,96825,80020,c+48|0);break b}e=L[c+120>>1];if((e|0)==1){break f}J[c+64>>2]=e;J[c+68>>2]=L[c+134>>1];dj(4,96825,76698,c- -64|0);break b}h=1;j=d;f=f+8|0;k=f;break e}l=K[c+134|0];m=K[c+122|0];n=J[c+124>>2];e=1}f=d+f|0;d=1;if(!e){continue}g=1;if(!h){continue}break}break c}J[c+100>>2]=e;J[c+80>>2]=d;J[c+96>>2]=d>>24;J[c+84>>2]=d<<24>>24;J[c+92>>2]=d<<8>>24;J[c+88>>2]=d<<16>>24;dj(3,96825,6078,c+80|0);break b}d=h;g=e}e=g&1;if(!(!e|!(d&1))){d=nj(28);J[d+24>>2]=a;J[d+20>>2]=k;J[d+12>>2]=0;H[d+9|0]=l;H[d+8|0]=m;J[d+4>>2]=j;J[d>>2]=n;J[b>>2]=d;a=0;break a}J[c+20>>2]=d&1;J[c+16>>2]=e;dj(3,96825,71149,c+16|0)}a=-2}Ui=c+160|0;return a|0}function i_(a){a=a|0;var b=0,c=0,d=0,e=0,f=0,g=0,h=0,i=0,j=0,k=0,l=0;d=wj(a,1);g=wj(a,2);A(+g);b=v(1)|0;a:{b:{b=b&2147483647;if(!(v(0)|0)&(b|0)==2146435072|b>>>0<2146435072){A(+d);b=v(1)|0;b=b&2147483647;if(!(v(0)|0)&(b|0)==2146435072|b>>>0<2146435072){break b}}c=d+g;break a}A(+g);e=v(1)|0;b=v(0)|0;i=b;if(!(b|e-1072693248)){c=eF(d);break a}A(+d);b=v(1)|0;f=v(0)|0;k=e>>>30&2;h=k|b>>>31;b=b&2147483647;c:{if(!(f|b)){d:{switch(h-2|0){case 0:c=3.141592653589793;break a;case 1:break d;default:break c}}c=-3.141592653589793;break a}A(1.5707963267948966);f=v(1)|0;j=v(0)|0;A(+d);l=v(1)|0;v(0)|0;x(0,j|0);x(1,f&2147483647|l&-2147483648);e=e&2147483647;c=+z();if(!(e|i)){break a}e:{if((e|0)==2146435072){if((b|0)!=2146435072){break e}c=O[(h<<3)+198496>>3];break a}A(1.5707963267948966);i=v(1)|0;j=v(0)|0;A(+d);f=v(1)|0;v(0)|0;x(0,j|0);x(1,i&2147483647|f&-2147483648);c=+z();if(!((b|0)!=2146435072&e+67108864>>>0>=b>>>0)){break a}f:{if(k){c=0;if(e>>>0>b+67108864>>>0){break f}}c=eF(R(d/g))}d=c;g:{switch(h-1|0){case 0:c=-d;break a;case 1:c=3.141592653589793-(d+-12246467991473532e-32);break a;case 2:break g;default:break c}}c=d+-12246467991473532e-32+-3.141592653589793;break a}d=O[(h<<3)+198528>>3]}c=d}d=c;b=J[a+8>>2];J[b+8>>2]=3;O[b>>3]=d;J[a+8>>2]=J[a+8>>2]+16;return 1}function Xfa(a){a=a|0;var b=0,c=0,d=0,e=0,f=0,g=0,h=0,i=0;b=Ui-176|0;Ui=b;J[b+172>>2]=0;c=J[a>>2];N[b+48>>2]=N[c>>2];N[b+52>>2]=N[c+4>>2];N[b+56>>2]=N[c+8>>2];N[b+60>>2]=N[c+12>>2];N[b+64>>2]=N[c+16>>2];N[b+68>>2]=N[c+20>>2];N[b+72>>2]=N[c+24>>2];N[b+76>>2]=N[c+28>>2];N[b+80>>2]=N[c+32>>2];N[b+84>>2]=N[c+36>>2];N[b+88>>2]=N[c+40>>2];N[b+92>>2]=N[c+44>>2];N[b+96>>2]=N[c+48>>2];N[b+100>>2]=N[c+52>>2];N[b+104>>2]=N[c+56>>2];N[b+108>>2]=N[c+60>>2];N[b+112>>2]=N[c+64>>2];N[b+116>>2]=N[c+68>>2];N[b+120>>2]=N[c+72>>2];N[b+124>>2]=N[c+76>>2];N[b+128>>2]=N[c+80>>2];N[b+132>>2]=N[c+84>>2];N[b+136>>2]=N[c+88>>2];N[b+140>>2]=N[c+92>>2];J[b+144>>2]=J[c+96>>2];i=J[a+12>>2];if(i){while(1){d=J[a+8>>2]+P(e,48)|0;f=J[d+16>>2];c=J[f+156>>2];if(!c){c=J[J[f+152>>2]+4>>2]}c=rS(J[c+4>>2],J[75472],J[75473],b+44|0,b+40|0,b+36|0);a:{if((c|0)==11){J[d+36>>2]=J[d+36>>2]|16384;break a}if(!(J[b+36>>2]==8&J[b+40>>2]==6)){dj(4,88458,116703,0);J[d+36>>2]=J[d+36>>2]|16384;break a}if(c){dj(4,88458,34796,0);break a}c=J[b+44>>2];g=J[c+4>>2];h=J[c>>2];N[b+24>>2]=N[c+8>>2];J[b+16>>2]=h;J[b+20>>2]=g;g=J[c+16>>2];h=J[c+12>>2];N[b+8>>2]=N[c+20>>2];J[b>>2]=h;J[b+4>>2]=g;c=IC(b+48|0,f+80|0,b+16|0,b);J[d+36>>2]=J[d+36>>2]&-16385|(c?16384:0)}e=e+1|0;if((i|0)!=(e|0)){continue}break}}Ui=b+176|0}function yC(a,b){var c=0,d=0,e=Q(0),f=0,g=Q(0),h=0,i=0,j=0,k=0;a:{b:{c:{if(!b){break c}c=b&65535;d=J[a+4>>2];a=J[a>>2];if(c>>>0>=d-a>>2>>>0){break a}a=J[a+(c<<2)>>2];if(L[a+80>>1]!=(b>>>16|0)){dj(4,96107,66969,0);return}b=J[a+4>>2];c=J[a>>2];if((b|0)==(c|0)){break c}i=J[a+64>>2];b=(b-c|0)/304|0;k=b>>>0<=1?1:b;b=0;while(1){f=J[i+16>>2];if(M[f+4>>2]<=b>>>0){break b}c=J[a>>2];d=(J[a+4>>2]-c|0)/304|0;f=J[f>>2]+P(b,160)|0;e=N[f+124>>2];d:{if(e>>0>=d>>>0){break a}c=c+P(b,304)|0;d=J[c+280>>2];J[c+280>>2]=1;e:{if((d|0)==1){break e}d=J[a+72>>2];if(!d){break e}f=J[a+16>>2]+1|0;J[a+16>>2]=f;Zi[J[a+68>>2]](f,J[c+128>>2],J[c+132>>2],1,d)}H[c+296|0]=K[c+296|0]&251;break d}if(b>>>0>=d>>>0){break a}d=J[i>>2];if((J[i+4>>2]-d|0)/18568>>>0<=b>>>0){break a}d=d+P(b,18568)|0;g=N[d+18564>>2];c=c+P(b,304)|0;h=J[c+280>>2];J[c+280>>2]=1;e=e>2];if(!h){break f}j=J[a+16>>2]+1|0;J[a+16>>2]=j;Zi[J[a+68>>2]](j,J[c+128>>2],J[c+132>>2],1,h)}H[c+296|0]=K[c+296|0]&251;g=Q(0);if(!(e>Q(0))){break d}while(1){wC(a,d,c,f,Q(.01666666753590107));g=Q(g+Q(.01666666753590107));if(e>g){continue}break}}b=b+1|0;if((k|0)!=(b|0)){continue}break}}return}Z(12664,55442,270,84789);B()}Z(145396,53895,487,84789);B()}function EU(a){var b=0;b=J[a+572>>2];if(b){cj(b)}b=J[a+560>>2];if(b){cj(b)}b=J[a+548>>2];if(b){cj(b)}b=J[a+536>>2];if(b){cj(b)}b=J[a+524>>2];if(b){cj(b)}b=J[a+512>>2];if(b){cj(b)}b=J[a+500>>2];if(b){cj(b)}b=J[a+488>>2];if(b){cj(b)}b=J[a+476>>2];if(b){cj(b)}b=J[a+464>>2];if(b){cj(b)}b=J[a+452>>2];if(b){cj(b)}b=J[a+440>>2];if(b){cj(b)}b=J[a+428>>2];if(b){cj(b)}b=J[a+416>>2];if(b){cj(b)}b=J[a+404>>2];if(b){cj(b)}b=J[a+392>>2];if(b){cj(b)}b=J[a+380>>2];if(b){cj(b)}b=J[a+368>>2];if(b){cj(b)}b=J[a+356>>2];if(b){cj(b)}b=J[a+344>>2];if(b){cj(b)}b=J[a+332>>2];if(b){cj(b)}b=J[a+320>>2];if(b){cj(b)}b=J[a+308>>2];if(b){cj(b)}b=J[a+296>>2];if(b){cj(b)}b=J[a+284>>2];if(b){cj(b)}b=J[a+272>>2];if(b){cj(b)}b=J[a+260>>2];if(b){cj(b)}b=J[a+248>>2];if(b){cj(b)}b=J[a+236>>2];if(b){cj(b)}b=J[a+224>>2];if(b){cj(b)}b=J[a+212>>2];if(b){cj(b)}b=J[a+200>>2];if(b){cj(b)}b=J[a+188>>2];if(b){cj(b)}b=J[a+176>>2];if(b){cj(b)}b=J[a+160>>2];if(b){cj(b)}b=J[a+148>>2];if(b){cj(b)}b=J[a+136>>2];if(b){cj(b)}b=J[a+124>>2];if(b){cj(b)}b=J[a+112>>2];if(b){cj(b)}b=J[a+100>>2];if(b){cj(b)}b=J[a+88>>2];if(b){cj(b)}b=J[a+76>>2];if(b){cj(b)}b=J[a+64>>2];if(b){cj(b)}b=J[a+52>>2];if(b){cj(b)}b=J[a+40>>2];if(b){cj(b)}b=J[a+28>>2];if(b){cj(b)}b=J[a+16>>2];if(b){cj(b)}a=J[a+4>>2];if(a){cj(a)}}function yk(a,b){var c=0,d=0,e=0,f=0,g=0,h=0,i=0,j=0,k=0,l=0,m=0,n=0;a:{c=J[a+4>>2];h=b>>>5|0;if(c>>>0>=h>>>0){i=b&31;if(!i|(c|0)!=(h|0)){break a}}b:{if(c){b=c<<2;c=J[a+8>>2];break b}c=Zj(1,4);if(!c){return-16}b=J[a+8>>2];if(b){Zi[J[66509]](b,0,0)|0;cj(J[a+8>>2])}J[a+8>>2]=c;J[a+4>>2]=1;b=4}ij(c,0,b);J[J[a+8>>2]>>2]=0;J[a>>2]=1;return 0}c:{if(b>>>0<32){break c}d:{if((c|0)==(h|0)){break d}d=c-h|0;e=d&3;l=J[a+8>>2];b=0;if(h-c>>>0<=4294967292){n=d&-4;while(1){f=l+(b<<2)|0;g=h<<2;J[f>>2]=J[g+f>>2];k=f+4|0;J[k>>2]=J[g+k>>2];k=f+8|0;J[k>>2]=J[g+k>>2];f=f+12|0;J[f>>2]=J[g+f>>2];b=b+4|0;m=m+4|0;if((n|0)!=(m|0)){continue}break}}if(!e){break d}while(1){f=l+(b<<2)|0;J[f>>2]=J[f+(h<<2)>>2];b=b+1|0;j=j+1|0;if((e|0)!=(j|0)){continue}break}}if(c>>>0<=d>>>0){break c}ij(J[a+8>>2]+(d<<2)|0,0,c-d<<2)}e:{if(!c|!i){break e}f=c&3;b=32-i|0;h=J[a+8>>2];f:{if(c>>>0<4){d=0;break f}l=h-12|0;n=h-8|0;k=h-4|0;m=c&-4;d=0;a=0;while(1){g=c<<2;j=g+k|0;e=J[j>>2];J[j>>2]=e>>>i|d;j=g+n|0;d=J[j>>2];J[j>>2]=e<>>i;e=g+l|0;g=J[e>>2];J[e>>2]=d<>>i;c=c-4|0;e=h+(c<<2)|0;d=J[e>>2];J[e>>2]=g<>>i;d=d<>2];J[e>>2]=g>>>i|d;d=g<>2];e=f+2232|0;h=b<<3;a=Dq(c,h);a:{b:{d=J[f+2236>>2];c:{d:{if(!d){break d}d=J[J[e>>2]+((a>>>0)%(d>>>0)<<2)>>2];if((d|0)==-1){break d}j=J[f+2240>>2];while(1){d=P(d,280)+j|0;if(J[d>>2]==(a|0)){break c}d=J[d+272>>2];if((d|0)!=-1){continue}break}}if(b>>>0>=33){break b}if(b){hj(g+16|0,c,h)}J[g+8>>2]=b;b=J[f+2256>>2];if((b|0)==((J[f+2248>>2]-J[f+2240>>2]|0)/280|0)){b=b+8|0;FN(e,b<<1,b)}f=g+8|0;e:{f:{g:{h:{i:{h=J[e+16>>2];d=J[e+8>>2];if(J[e+24>>2]!=((h-d|0)/280|0)){b=J[e+4>>2];j:{if(!b){break j}c=J[J[e>>2]+((a>>>0)%(b>>>0)<<2)>>2];if((c|0)==-1){break j}while(1){b=d+P(c,280)|0;if(J[b>>2]==(a|0)){break i}c=J[b+272>>2];if((c|0)!=-1){continue}break}}b=J[e+12>>2];k:{if((h|0)!=(b|0)){J[e+12>>2]=b+280;break k}b=J[e+20>>2];if((b|0)==-1){break h}b=d+P(b,280)|0;J[e+20>>2]=J[b+272>>2]}J[b>>2]=a;hj(b+8|0,f,264);J[b+272>>2]=-1;f=J[e+8>>2];d=J[e>>2]+((a>>>0)%M[e+4>>2]<<2)|0;c=J[d>>2];if((c|0)==-1){break g}while(1){d=f+P(c,280)|0;c=J[d+272>>2];if((c|0)!=-1){continue}break}J[d+272>>2]=(b-f|0)/280;break f}Z(144851,55629,229,9606);B()}hj(b+8|0,f,264);break e}Z(152203,55629,537,2838);B()}J[d>>2]=(b-f|0)/280}J[e+24>>2]=J[e+24>>2]+1}}Ui=g+272|0;break a}Z(87173,40773,658,9745);B()}J[i+144>>2]=a}function Hr(a){var b=Q(0),c=Q(0),d=0,e=Q(0),f=0,g=Q(0),h=Q(0),i=0,j=Q(0),k=Q(0);f=Ui-16|0;Ui=f;J[a+116>>2]=0;J[a+120>>2]=0;J[a+28>>2]=0;J[a+32>>2]=0;J[a+124>>2]=0;J[a+128>>2]=0;a:{b:{c:{d:{e:{f:{d=J[a>>2];if(d>>>0>=2){if((d|0)!=2){break f}c=N[43181];e=N[43180];d=J[a+100>>2];if(!d){break d}while(1){b=N[d>>2];if(b!=Q(0)){i=J[d+12>>2];Zi[J[J[i>>2]+28>>2]](i,f,b);b=N[f>>2];g=Q(b+N[a+116>>2]);N[a+116>>2]=g;j=N[f+4>>2];k=N[f+8>>2];h=Q(N[f+12>>2]+N[a+124>>2]);N[a+124>>2]=h;e=Q(e+Q(b*j));c=Q(c+Q(b*k))}d=J[d+4>>2];if(d){continue}break}break e}d=J[a+16>>2];i=J[a+12>>2];J[a+44>>2]=i;J[a+48>>2]=d;J[a+36>>2]=i;J[a+40>>2]=d;N[a+52>>2]=N[a+56>>2];break b}Z(3689,36890,306,83538);B()}if(!(g>Q(0))){break d}b=Q(Q(1)/g);c=Q(c*b);e=Q(e*b);break c}J[a+116>>2]=1065353216;g=Q(1);b=Q(1)}N[a+120>>2]=b;b=Q(0);g:{if(!(!(K[a+4|0]&16)&h>Q(0))){J[a+124>>2]=0;break g}b=Q(h-Q(g*Q(Q(e*e)+Q(c*c))));N[a+124>>2]=b;if(!(b>Q(0))){break a}b=Q(Q(1)/b)}N[a+128>>2]=b;N[a+32>>2]=c;N[a+28>>2]=e;g=N[a+44>>2];h=N[a+24>>2];j=N[a+20>>2];b=Q(N[a+12>>2]+Q(Q(h*e)-Q(j*c)));N[a+44>>2]=b;k=N[a+48>>2];c=Q(Q(Q(j*e)+Q(c*h))+N[a+16>>2]);N[a+48>>2]=c;N[a+40>>2]=c;N[a+36>>2]=b;e=N[a+72>>2];N[a+64>>2]=N[a+64>>2]-Q(e*Q(c-k));N[a+68>>2]=Q(e*Q(b-g))+N[a+68>>2]}Ui=f+16|0;return}Z(58052,36890,341,83538);B()}function Bfa(a){a=a|0;var b=0,c=0,d=0,e=0,f=0,g=0,h=0,i=0,j=0,k=0,l=0;f=Ui-112|0;Ui=f;b=J[a+4>>2];g=J[a+24>>2];h=f+8|0;ij(h,0,104);a:{i=XQ(J[a>>2],g,h);if(!i){e=J[f+8>>2];d=Ui-16|0;Ui=d;b:{c:{d:{e:{if(!kp(J[b+2480>>2],2)){dj(4,90423,115025,0);break e}c=nj(88);ij(c+8|0,0,80);J[c+4>>2]=e;J[c>>2]=b;J[c+64>>2]=-1;b=Zi[J[79486]](J[b+2480>>2],e)|0;J[c+8>>2]=b;j=J[b+2052>>2]-J[b+2048>>2]>>5;J[d+12>>2]=0;J[d+8>>2]=0;oL(b,j,d+12|0,d+8|0);k=c+12|0;b=J[d+8>>2];e=b+J[d+12>>2]|0;if(e){OC(c+44|0,e,e<<1);if(H[c+24|0]&1){break c}lj(e,40,k,c+20|0,c+16|0);b=J[d+8>>2]}f:{if(!b){break f}if(H[c+40|0]&1){break c}lj(b,48,c+28|0,c+36|0,c+32|0);e=J[d+8>>2];if(!e){break f}while(1){b=J[c+32>>2];if((b|0)==J[c+36>>2]){break d}J[c+32>>2]=b+48;H[b+44|0]=0;J[b+40>>2]=1065353216;J[b+32>>2]=-1;J[b+36>>2]=-1;J[b+24>>2]=1;J[b+16>>2]=2;J[b+20>>2]=1;J[b+8>>2]=0;J[b+12>>2]=5;J[b>>2]=0;J[b+4>>2]=0;l=l+1|0;if((e|0)!=(l|0)){continue}break}}ZK(J[c+8>>2],j,c+44|0,k,c+28|0)}Ui=d+16|0;break b}Z(112520,53895,557,53220);B()}Z(151729,53895,501,2284);B()}if(pr(J[a>>2],J[g>>2],f+4|0)){break a}b=J[f+4>>2];d=J[b+4>>2];J[c+80>>2]=J[b>>2];J[c+84>>2]=d;vq(J[a>>2],578,c);b=ij(nj(112),0,112);J[b>>2]=c;IP(J[a+8>>2],b,g,h);J[J[a+28>>2]+8>>2]=b}Uj(g);Ui=f+112|0;return i|0}Z(92970,41309,199,61986);B()}function MG(a,b){var c=0,d=0,e=0,f=0,g=0;a:{b:{c:{d:{e:{c=J[a+4>>2];f:{if((c|0)!=J[a+104>>2]){J[a+4>>2]=c+1;c=K[c|0];break f}c=Uk(a)}switch(c-43|0){case 0:case 2:break e;default:break d}}g=(c|0)==45;b=!b;c=J[a+4>>2];g:{if((c|0)!=J[a+104>>2]){J[a+4>>2]=c+1;c=K[c|0];break g}c=Uk(a)}d=c-58|0;if(b|d>>>0>4294967285){break c}if(J[a+116>>2]<0){break b}J[a+4>>2]=J[a+4>>2]-1;break b}d=c-58|0}if(d>>>0<4294967286){break b}h:{if(c-48>>>0>=10){break h}while(1){e=(P(e,10)+c|0)-48|0;f=(e|0)<214748364;c=J[a+4>>2];i:{if((c|0)!=J[a+104>>2]){J[a+4>>2]=c+1;c=K[c|0];break i}c=Uk(a)}b=c-48|0;if(f&b>>>0<=9){continue}break}f=e>>31;if(b>>>0>=10){break h}while(1){b=c;c=ixa(e,f,10,0);d=b+c|0;b=Yi;e=d-48|0;d=(c>>>0>d>>>0?b+1|0:b)-(d>>>0<48)|0;f=d;d=e>>>0<2061584302&(d|0)<=21474836|(d|0)<21474836;c=J[a+4>>2];j:{if((c|0)!=J[a+104>>2]){J[a+4>>2]=c+1;c=K[c|0];break j}c=Uk(a)}b=c-48|0;if(d&b>>>0<=9){continue}break}if(b>>>0>=10){break h}while(1){b=J[a+4>>2];k:{if((b|0)!=J[a+104>>2]){J[a+4>>2]=b+1;b=K[b|0];break k}b=Uk(a)}if(b-48>>>0<10){continue}break}}b=J[a+116>>2];if((b|0)>0){b=1}else{b=(b|0)>=0}if(b){J[a+4>>2]=J[a+4>>2]-1}a=e;e=g?0-a|0:a;f=g?0-(((a|0)!=0)+f|0)|0:f;break a}f=-2147483648;if(J[a+116>>2]<0){break a}J[a+4>>2]=J[a+4>>2]-1;Yi=-2147483648;return 0}Yi=f;return e}function KL(a,b,c){var d=0,e=Q(0),f=0,g=Q(0),h=Q(0),i=Q(0),j=Q(0),k=Q(0),l=Q(0),m=Q(0),n=0,o=Q(0),p=Q(0),q=Q(0);f=Ui+-64|0;Ui=f;J[f+60>>2]=0;d=J[b>>2];a:{if((J[d+188>>2]!=0|0)==(c|0)){break a}n=J[d+232>>2];if(c){if((n|0)==2){c=J[a+88>>2];if(c){Zi[c|0](J[d+236>>2],f);i=N[J[a+64>>2]+72>>2];g=N[f+12>>2];l=N[f+8>>2];e=N[f>>2];k=N[f+4>>2];h=N[f+16>>2];j=N[f+20>>2];m=N[f+24>>2];J[d+64>>2]=0;J[d+48>>2]=0;J[d+32>>2]=0;J[d+16>>2]=0;N[d+60>>2]=m*i;N[d+56>>2]=j*i;N[d+52>>2]=h*i;h=Q(Q(2)/Q(Q(g*g)+Q(Q(l*l)+Q(Q(e*e)+Q(k*k)))));i=Q(l*h);j=Q(k*i);m=Q(e*h);o=Q(g*m);N[d+40>>2]=j+o;p=Q(e*i);h=Q(k*h);q=Q(g*h);N[d+36>>2]=p-q;N[d+28>>2]=j-o;j=Q(e*h);g=Q(g*i);N[d+20>>2]=j+g;N[d+12>>2]=p+q;N[d+8>>2]=j-g;e=Q(e*m);g=Q(k*h);N[d+44>>2]=Q(1)-Q(e+g);h=e;e=Q(l*i);N[d+24>>2]=Q(1)-Q(h+e);N[d+4>>2]=Q(1)-Q(g+e)}a=J[a+84>>2];Zi[J[J[a>>2]+156>>2]](a,d,I[b+4>>1],I[b+6>>1]);break a}a=J[a+84>>2];Zi[J[J[a>>2]+32>>2]](a,d,I[b+4>>1],I[b+6>>1]);break a}if((n|0)==2){J[d+404>>2]=0;J[d+408>>2]=0;J[d+304>>2]=0;J[d+308>>2]=0;J[d+428>>2]=0;J[d+432>>2]=0;J[d+420>>2]=0;J[d+424>>2]=0;J[d+412>>2]=0;J[d+416>>2]=0;J[d+312>>2]=0;J[d+316>>2]=0;J[d+320>>2]=0;J[d+324>>2]=0;J[d+328>>2]=0;J[d+332>>2]=0;a=J[a+84>>2];Zi[J[J[a>>2]+84>>2]](a,d);break a}a=J[a+84>>2];Zi[J[J[a>>2]+36>>2]](a,d)}Ui=f- -64|0}function kL(a,b,c){var d=0,e=0,f=0,g=0;d=Ui-32|0;Ui=d;J[c+8>>2]=-2;J[c+12>>2]=-2;J[c>>2]=-2;J[c+4>>2]=-2;g=J[a+8>>2]-J[a+12>>2]>>4;a:{b:{if(!nx(a,b)){Nj(a,-1e4,J[c+24>>2]);Ok(a);f=Ol(a,0,0,0);if(!f){rj(a,-10002,J[62020]);c:{if(kj(a,-1)){e=248080;if((kj(a,-1)|0)!=6){break b}J[c>>2]=Lk(a,-1e4);break c}J[c>>2]=-2;gj(a,-2)}rj(a,-10002,J[62021]);d:{if(kj(a,-1)){if((kj(a,-1)|0)!=6){e=248084;break b}J[c+4>>2]=Lk(a,-1e4);break d}J[c+4>>2]=-2;gj(a,-2)}rj(a,-10002,J[62022]);e:{if(kj(a,-1)){if((kj(a,-1)|0)!=6){e=248088;break b}J[c+8>>2]=Lk(a,-1e4);break e}J[c+8>>2]=-2;gj(a,-2)}rj(a,-10002,J[62023]);f:{if(kj(a,-1)){if((kj(a,-1)|0)!=6){e=248092;break b}J[c+12>>2]=Lk(a,-1e4);break f}J[c+12>>2]=-2;gj(a,-2)}J[c+20>>2]=Gk(J[b+8>>2])}b=J[a+8>>2];J[b+8>>2]=0;J[a+8>>2]=b+16;Ok(a);b=!f;break a}J[d+16>>2]=Ij(a,-1,0);dj(4,90423,28177,d+16|0);gj(a,-2);b=0;break a}c=J[e>>2];J[d+4>>2]=J[b+8>>2];J[d>>2]=c;dj(4,90423,120137,d);gj(a,-2);b=0}c=J[a+8>>2];J[c+8>>2]=0;J[a+8>>2]=c+16;ej(a,-10002,J[62020]);c=J[a+8>>2];J[c+8>>2]=0;J[a+8>>2]=c+16;ej(a,-10002,J[62021]);c=J[a+8>>2];J[c+8>>2]=0;J[a+8>>2]=c+16;ej(a,-10002,J[62022]);c=J[a+8>>2];J[c+8>>2]=0;J[a+8>>2]=c+16;ej(a,-10002,J[62023]);if(J[a+8>>2]-J[a+12>>2]>>4!=(g|0)){Z(143244,37616,3241,10529);B()}Ui=d+32|0;return b}function su(a){var b=0,c=0,d=0,e=0,f=0,g=0,h=0;a:{b:{c:{A(+a);b=v(1)|0;h=v(0)|0;d:{e:{f=b&2147483647;if(f>>>0>=1078159482){if((f|0)==2146435072&(h|0)!=0|f>>>0>2146435072){break a}if((b|0)<0){return-1}if(!(a>709.782712893384)){break e}return a*898846567431158e293}if(f>>>0<1071001155){break c}if(f>>>0>1072734897){break e}if((b|0)>0|(b|0)>=0){b=1;c=1.9082149292705877e-10;g=a+-.6931471803691238;break d}b=-1;c=-1.9082149292705877e-10;g=a+.6931471803691238;break d}A(.5);b=v(1)|0;h=v(0)|0;A(+a);f=v(1)|0;v(0)|0;x(0,h|0);x(1,b&2147483647|f&-2147483648);c=a*1.4426950408889634+ +z();f:{if(R(c)<2147483648){b=~~c;break f}b=-2147483648}d=+(b|0);c=d*1.9082149292705877e-10;g=a+d*-.6931471803691238}a=g;a=a-c;c=g-a-c;break b}if(f>>>0<1016070144){break a}b=0}e=a*.5;d=a*e;g=d*(d*(d*(d*(d*-2.0109921818362437e-7+4008217827329362e-21)+-793650757867488e-19)+.0015873015872548146)+-.03333333333333313)+1;e=3-g*e;e=d*((g-e)/(6-a*e));if(!b){return a-(a*e-d)}c=a*(e-c)-c-d;g:{switch(b+1|0){case 0:return(a-c)*.5+-.5;case 2:if(a<-.25){return(c-(a+.5))*-2}a=a-c;return a+a+1;default:break g}}x(0,0);x(1,b+1023<<20);d=+z();if(b>>>0>=57){a=a-c+1;return((b|0)==1024?(a+a)*898846567431158e293:a*d)+-1}x(0,0);x(1,1023-b<<20);e=+z();a=(b>>>0<=19?1-e+(a-c):a-(c+e)+1)*d}return a}function Upa(a,b,c,d,e){a=a|0;b=b|0;c=c|0;d=d|0;e=e|0;var f=0,g=0,h=0,i=0,j=0;f=Ui-160|0;Ui=f;j=J[a+12>>2];a:{if(!j){break a}h=K[a+16|0];g=h?b:c;i=J[g+192>>2];b=h?c:b;c=J[b+192>>2];J[e+4>>2]=j;h=f+144|0;N[h+12>>2]=N[j+1120>>2];J[h+8>>2]=i;J[h+4>>2]=c;J[h>>2]=245764;J[f+136>>2]=1566444395;J[f+140>>2]=0;c=J[b+16>>2];J[f+16>>2]=J[b+12>>2];J[f+20>>2]=c;c=J[b+8>>2];J[f+8>>2]=J[b+4>>2];J[f+12>>2]=c;c=J[b+32>>2];J[f+32>>2]=J[b+28>>2];J[f+36>>2]=c;c=J[b+24>>2];J[f+24>>2]=J[b+20>>2];J[f+28>>2]=c;c=J[b+48>>2];J[f+48>>2]=J[b+44>>2];J[f+52>>2]=c;c=J[b+40>>2];J[f+40>>2]=J[b+36>>2];J[f+44>>2]=c;c=J[b+64>>2];i=f- -64|0;J[i>>2]=J[b+60>>2];J[i+4>>2]=c;c=J[b+56>>2];J[f+56>>2]=J[b+52>>2];J[f+60>>2]=c;b=J[g+16>>2];J[f+80>>2]=J[g+12>>2];J[f+84>>2]=b;b=J[g+8>>2];J[f+72>>2]=J[g+4>>2];J[f+76>>2]=b;b=J[g+32>>2];J[f+96>>2]=J[g+28>>2];J[f+100>>2]=b;b=J[g+24>>2];J[f+88>>2]=J[g+20>>2];J[f+92>>2]=b;b=J[g+48>>2];J[f+112>>2]=J[g+44>>2];J[f+116>>2]=b;b=J[g+40>>2];J[f+104>>2]=J[g+36>>2];J[f+108>>2]=b;b=J[g+64>>2];J[f+128>>2]=J[g+60>>2];J[f+132>>2]=b;b=J[g+56>>2];J[f+120>>2]=J[g+52>>2];J[f+124>>2]=b;LV(h,f+8|0,e,J[d+20>>2],K[a+16|0]);if(K[a+8|0]!=1){break a}a=J[e+4>>2];if(!J[a+1116>>2]){break a}b=a;a=J[a+1108>>2]==J[e+136>>2];Qq(b,(a?8:72)+e|0,(a?72:8)+e|0)}Ui=f+160|0}function boa(a,b,c){a=a|0;b=b|0;c=c|0;var d=0,e=0,f=0,g=0,h=0;e=Ui-48|0;Ui=e;g=J[63e3];f=J[g+8>>2];h=J[g+12>>2];J[e+44>>2]=c;J[e+40>>2]=b;J[e+32>>2]=0;J[e+36>>2]=0;J[e+24>>2]=0;J[e+28>>2]=0;J[e+16>>2]=0;J[e+20>>2]=0;J[e+8>>2]=0;J[e+12>>2]=0;d=e+8|0;H[d|0]=0;H[d+1|0]=0;H[d+2|0]=0;H[d+3|0]=0;H[d+4|0]=0;H[d+5|0]=0;H[d+6|0]=0;H[d+7|0]=0;H[d+24|0]=0;H[d+25|0]=0;H[d+26|0]=0;H[d+27|0]=0;H[d+28|0]=0;H[d+29|0]=0;H[d+30|0]=0;H[d+31|0]=0;H[d+16|0]=0;H[d+17|0]=0;H[d+18|0]=0;H[d+19|0]=0;H[d+20|0]=0;H[d+21|0]=0;H[d+22|0]=0;H[d+23|0]=0;H[d+8|0]=0;H[d+9|0]=0;H[d+10|0]=0;H[d+11|0]=0;H[d+12|0]=0;H[d+13|0]=0;H[d+14|0]=0;H[d+15|0]=0;a:{if(eo(J[62018],d)){f=115937}else{if(!Jk(0,e+8|0,f,h,0,0,g,e+40|0,8,0)){break a}f=115889}J[e>>2]=J[62018];dj(4,95703,f,e)}N[a+492>>2]=Q(1)/Q(c>>>0);N[a+488>>2]=Q(1)/Q(b>>>0);a=J[a+304>>2];if(a){b:{J[a+24>>2]=c;J[a+20>>2]=b;c:{f=J[a+44>>2];d=J[a+40>>2];if((f|0)!=(d|0)){f=f-d>>2;g=f>>>0<=1?1:f;f=0;while(1){d=J[a+40>>2];if(J[a+44>>2]-d>>2>>>0<=f>>>0){break c}d=J[d+(f<<2)>>2];H[d+374|0]=K[d+374|0]|1;h=J[d+420>>2];if(h){Zi[h|0](d,b,c)}f=f+1|0;if((g|0)!=(f|0)){continue}break}}break b}Z(145396,53895,487,84789);B()}}a=Ui-16|0;Ui=a;J[78501]=c;J[78500]=b;J[a+12>>2]=c;J[a+8>>2]=b;J[a+4>>2]=2;J[a>>2]=313992;BD(a);Ui=a+16|0;Ui=e+48|0}function Yt(a){var b=0,c=0,d=0,e=0;d=J[a+4>>2];if(!d){return 0}e=J[a+8>>2];a:{b:{c:{d:{e:{f:{g:{h:{i:{j:{k:{l:{m:{n:{o:{p:{q:{r:{s:{t:{u:{v:{w:{x:{y:{z:{A:{B:{C:{D:{E:{while(1){a=J[(c<<2)+e>>2];if(a&1){return b}if(a&2){break b}if(a&4){break c}if(a&8){break d}if(a&16){break e}if(a&32){break f}if(a&64){break g}if(a&128){break h}if(a&256){break i}if(a&512){break j}if(a&1024){break k}if(a&2048){break l}if(a&4096){break m}if(a&8192){break n}if(a&16384){break o}if(a&32768){break p}if(a&65536){break q}if(a&131072){break r}if(a&262144){break s}if(a&524288){break t}if(a&1048576){break u}if(a&2097152){break v}if(a&4194304){break w}if(a&8388608){break x}if(a&16777216){break y}if(a&33554432){break z}if(a&67108864){break A}if(a&134217728){break B}if(a&268435456){break C}if(a&536870912){break D}if(a&1073741824){break E}if(!a){b=b+32|0;a=0;c=c+1|0;if((d|0)!=(c|0)){continue}break a}break}return b|31}return b|30}return b|29}return b|28}return b|27}return b|26}return b|25}return b|24}return b|23}return b|22}return b|21}return b|20}return b|19}return b|18}return b|17}return b|16}return b|15}return b|14}return b|13}return b|12}return b|11}return b|10}return b|9}return b|8}return b|7}return b|6}return b|5}return b|4}return b|3}return b|2}a=b|1}return a}function Js(a,b,c,d,e,f,g){var h=0,i=0,j=0,k=0,l=0,m=0,n=0,o=0,p=Q(0),q=Q(0);h=Ui-48|0;Ui=h;a:{b:{n=J[b+28>>2];c:{if(!n){break c}if(f){while(1){if(M[b+28>>2]<=l>>>0){break a}f=0;i=J[b+24>>2]+(l<<4)|0;m=J[i+12>>2];if(m){while(1){if(M[i+12>>2]<=f>>>0){break b}j=J[i+8>>2]+P(f,24)|0;p=N[j>>2];q=Q(e-p);if(!(!(q>=c)|!(d>q))){k=J[i+4>>2];J[h+8>>2]=J[i>>2];J[h+12>>2]=k;k=J[b+4>>2];o=J[b>>2];N[h+28>>2]=g;J[h+16>>2]=o;J[h+20>>2]=k;N[h+24>>2]=p;J[h+32>>2]=J[j+4>>2];N[h+36>>2]=N[j+8>>2];k=J[j+20>>2];J[h+40>>2]=J[j+16>>2];J[h+44>>2]=k;Zi[J[a+100>>2]](1,h+8|0,J[a+104>>2],J[a+108>>2])}f=f+1|0;if((m|0)!=(f|0)){continue}break}}l=l+1|0;if((n|0)!=(l|0)){continue}break c}}while(1){if(M[b+28>>2]<=l>>>0){break a}f=0;i=J[b+24>>2]+(l<<4)|0;m=J[i+12>>2];if(m){while(1){if(M[i+12>>2]<=f>>>0){break b}j=J[i+8>>2]+P(f,24)|0;e=N[j>>2];if(!(!(e>=c)|!(d>e))){k=J[i+4>>2];J[h+8>>2]=J[i>>2];J[h+12>>2]=k;k=J[b+4>>2];o=J[b>>2];N[h+28>>2]=g;J[h+16>>2]=o;J[h+20>>2]=k;N[h+24>>2]=e;J[h+32>>2]=J[j+4>>2];N[h+36>>2]=N[j+8>>2];k=J[j+20>>2];J[h+40>>2]=J[j+16>>2];J[h+44>>2]=k;Zi[J[a+100>>2]](1,h+8|0,J[a+104>>2],J[a+108>>2])}f=f+1|0;if((m|0)!=(f|0)){continue}break}}l=l+1|0;if((n|0)!=(l|0)){continue}break}}Ui=h+48|0;return}Z(12664,55323,326,84789);B()}Z(12664,55323,352,84789);B()}function fja(a,b){a=a|0;b=b|0;var c=0,d=0,e=0,f=0,g=0,h=0,i=0,j=0,k=0;b=Ui-32|0;Ui=b;J[b+4>>2]=0;a:{b:{f=J[a+8>>2];c=J[f+8>>2];a=J[f+4>>2];if((c|0)!=(a|0)){a=c-a>>2;k=a>>>0<=1?1:a;while(1){a=J[f+4>>2];if(J[f+8>>2]-a>>2>>>0<=g>>>0){break b}d=J[a+(g<<2)>>2];c:{if((K[d+204|0]&3)!=3){break c}a=J[d+192>>2];if(!a){a=J[J[d+152>>2]+8>>2]}d:{if(J[J[a>>2]+168>>2]!=1){break d}e=J[d+156>>2];if(!e){e=J[J[d+152>>2]+4>>2]}c=b+8|0;J[c>>2]=0;J[c+4>>2]=0;J[c+16>>2]=0;J[c+8>>2]=0;J[c+12>>2]=0;a=b+28|0;Fr(J[e+4>>2],a);Ek(c,e+4|0,4);Ek(c,a,4);i=mn(c);J[d+200>>2]=i;e:{a=J[f+76>>2];f:{if(!a){break f}c=J[e+8>>2];h=J[e+12>>2];a=J[J[f+72>>2]+(mxa(c,h,a)<<2)>>2];if((a|0)==-1){break f}j=J[f+80>>2];while(1){a=P(a,24)+j|0;if(J[a>>2]==(c|0)&(h|0)==J[a+4>>2]){break e}a=J[a+20>>2];if((a|0)!=-1){continue}break}}Z(113732,40994,504,62202);B()}if((i|0)==J[a+16>>2]){break d}J[a+16>>2]=i;h=J[a+8>>2];j=J[e+16>>2];c=J[e+20>>2];a=J[e+4>>2];J[b+8>>2]=0;J[b+28>>2]=0;if(on(a,b+8|0,b+28|0)){break a}Zi[J[79393]](h,P(c,j),J[b+8>>2],1)}c=J[d+148>>2];g:{if(!c){a=K[d+204|0];break g}a=K[d+204|0];if(!K[c+52|0]){break g}a=a|4;H[d+204|0]=a}if(!(a&4)){break c}ZP(d)}g=g+1|0;if((k|0)!=(g|0)){continue}break}}Ui=b+32|0;return 0}Z(145396,53895,494,84789);B()}Z(92823,40994,193,34888);B()}function vra(a,b){a=a|0;b=Q(b);var c=0,d=0,e=0,f=Q(0),g=0,h=Q(0),i=Q(0),j=Q(0),k=Q(0);e=J[a+8>>2];if((e|0)>0){while(1){c=J[J[a+16>>2]+(g<<2)>>2];if(!(!c|J[c+232>>2]!=2|(!(K[c+204|0]&2)|J[c+216>>2]==2))){e=Ui-32|0;Ui=e;if(b!=Q(0)){d=J[c+472>>2];if(d){Zi[J[J[d>>2]+8>>2]](d,c+4|0)}J[c+316>>2]=0;f=Q(Q(1)/b);N[c+308>>2]=f*Q(N[c+56>>2]-N[c+120>>2]);N[c+304>>2]=f*Q(N[c+52>>2]-N[c+116>>2]);N[c+312>>2]=f*Q(N[c+60>>2]-N[c+124>>2]);Xy(c+68|0,c+4|0,e+16|0,e+12|0);i=N[e+16>>2];j=N[e+20>>2];k=N[e+24>>2];h=N[e+12>>2];J[c+332>>2]=0;N[c+328>>2]=f*Q(h*k);N[c+324>>2]=f*Q(h*j);N[c+320>>2]=f*Q(i*h);d=J[c+316>>2];J[c+140>>2]=J[c+312>>2];J[c+144>>2]=d;d=J[c+308>>2];J[c+132>>2]=J[c+304>>2];J[c+136>>2]=d;d=J[c+324>>2];J[c+148>>2]=J[c+320>>2];J[c+152>>2]=d;d=J[c+332>>2];J[c+156>>2]=J[c+328>>2];J[c+160>>2]=d;d=J[c+8>>2];J[c+68>>2]=J[c+4>>2];J[c+72>>2]=d;d=J[c+16>>2];J[c+76>>2]=J[c+12>>2];J[c+80>>2]=d;d=J[c+24>>2];J[c+84>>2]=J[c+20>>2];J[c+88>>2]=d;d=J[c+32>>2];J[c+92>>2]=J[c+28>>2];J[c+96>>2]=d;d=J[c+48>>2];J[c+108>>2]=J[c+44>>2];J[c+112>>2]=d;d=J[c+40>>2];J[c+100>>2]=J[c+36>>2];J[c+104>>2]=d;d=J[c+64>>2];J[c+124>>2]=J[c+60>>2];J[c+128>>2]=d;d=J[c+56>>2];J[c+116>>2]=J[c+52>>2];J[c+120>>2]=d}Ui=e+32|0;e=J[a+8>>2]}g=g+1|0;if((g|0)<(e|0)){continue}break}}}function mn(a){var b=0,c=0,d=0,e=0;b=P(J[a+4>>2],1540483477);b=P(b>>>24^b,1540483477);J[a+4>>2]=b;c=P(b^P(J[a>>2],1540483477),1540483477);b=P(J[a+12>>2],1540483477);b=c^P(b>>>24^b,1540483477);b=P(b>>>13^b,1540483477);J[a>>2]=b>>>15^b;if(!K[874264]){nl();H[874264]=1}a:{b:{c:{d:{if(!(!J[a+16>>2]|K[874164]!=1|M[a+12>>2]>1024)){e=J[218540];Tj(e);if(!K[874264]){nl();H[874264]=1}b=J[a>>2];e:{f:{g:{c=J[218543];h:{if(!c){d=J[218544];break h}d=J[218544];c=J[J[218542]+((b>>>0)%(c>>>0)<<2)>>2];if((c|0)==-1){break h}while(1){c=(c<<4)+d|0;if(J[c>>2]==(b|0)){break g}c=J[c+12>>2];if((c|0)!=-1){continue}break}}c=J[218546]-d>>4;d=J[218548];i:{if((c|0)!=(d|0)){break i}b=d+16384|0;Xx(874168,(P(b,5)>>>0)/7|0,b);b=J[a>>2];if(K[874264]){break i}nl();H[874264]=1}c=J[a+16>>2];d=J[218558];if(c>>>0>3>>>0){break f}break a}d=J[a+16>>2];b=J[218558];if(d>>>0>=J[218559]-b>>3>>>0){break a}cj(J[b+(d<<3)>>2]);break e}LN(b,d+(c<<3)|0);if(K[874264]){break e}nl();H[874264]=1}d=J[a+16>>2];if(!d){break d}c=J[218562];if(!c){break c}b=J[218564]-1|0;if(b>>>0>=M[218563]){break b}J[218564]=b;J[c+(b<<2)>>2]=d;J[a+16>>2]=0;Lj(e)}return J[a>>2]}Z(113560,41081,136,10765);B()}Z(49493,54391,140,53220);B()}Z(2650,54391,141,53220);B()}Z(145396,54052,487,84789);B()}function Nu(a,b,c,d){var e=0,f=0,g=0,h=0,i=0,j=0,k=0,l=0,m=0,n=0,o=0;h=Ui-32|0;Ui=h;J[h+12>>2]=0;j=d>>>0<1e3;k=bl();l=Yi;a:{while(1){b:{g=J[a+88172>>2];c:{d:{i=J[a+181688>>2];e=J[a+181692>>2];m=i>>>0>=(J[a+181696>>2]-e|0)/72>>>0;if(m){break d}e=e+P(i,72)|0;n=e+24|0;J[e+16>>2]=n;i=J[e+44>>2];o=Zi[J[i+24>>2]](e)|0;if((o|0)==-17){break d}J[a+181688>>2]=J[a+181688>>2]+1;e:{if(K[e+64|0]==1){J[h+16>>2]=J[a+163896>>2];J[h+28>>2]=i;f=J[i+12>>2];J[h+24>>2]=n;J[h+20>>2]=f;Zi[J[i+28>>2]](h+16|0)|0;H[e+64|0]=0;break e}f=J[e+16>>2];f=qr(J[a+163896>>2],J[f>>2],J[f+4>>2]);if(!f){break e}e=J[J[e+16>>2]+16>>2];if(!e){break e}J[f+16>>2]=e}e=J[a+181692>>2];if(J[a+181688>>2]==((J[a+181696>>2]-e|0)/72|0)){J[a+181688>>2]=0;J[a+181696>>2]=e}f=0;if(g){break c}J[a+88172>>2]=o;break c}f:{if((g|0)==-17){if(!FK(a,0)){break f}f=0;break c}g:{if(K[a+181685|0]){break g}H[a+181685|0]=1;if(g|!b){break g}f=0;if(Zi[b|0](c)|0){break c}J[a+88172>>2]=-10;break c}if(m){break a}}if(GK(a)){f=0;break c}if(j){j=1;f=f+1|0;if(f>>>0<=3){break c}break b}e=bl();g=e-k|0;e=Yi-((e>>>0>>0)+l|0)|0;g=g+1e3|0;e=g>>>0<1e3?e+1|0:e;if(!e&d>>>0>>0|e){j=1;vp(1);break c}vp(1e3);j=0}e=bl();g=e-k|0;if((Yi|0)==((e>>>0>>0)+l|0)&d>>>0>=g>>>0){continue}}break}g=-17}Ui=h+32|0;return g}function Hga(a,b,c){a=a|0;b=b|0;c=c|0;var d=0,e=0,f=0,g=0,h=0;d=Ui-160|0;Ui=d;f=d+152|0;J[f>>2]=0;J[f+4>>2]=0;J[d+144>>2]=0;J[d+148>>2]=0;g=J[a+312>>2]-J[a+308>>2]>>>3&65535;e=d+144|0;lj(g,8,e,f,e|4);a:{if(!g){break a}f=0;while(1){b:{e=FO(a,f&65535,d+16|0);if(!e){e=J[d+148>>2];if((e|0)!=J[d+152>>2]){break b}Z(112520,53895,557,53220);B()}J[d>>2]=e;dj(4,88458,68167,d);break a}J[d+148>>2]=e+8;h=J[d+20>>2];J[e>>2]=J[d+16>>2];J[e+4>>2]=h;f=f+1|0;if(g>>>0>(f&65535)>>>0){continue}break}}f=J[a+344>>2];e=J[a+348>>2];g=J[a+12>>2];h=J[g+172>>2];b=qL(h,b,c,J[g+36>>2],d+144|0);c=Yi;if((f|0)!=(b|0)|(c|0)!=(e|0)){wL(h,b,c,d+132|0);g=J[d+132>>2];J[a+380>>2]=J[d+136>>2];J[a+376>>2]=g;H[a+374|0]=K[a+374|0]|1;mO(a,b,c);J[d+40>>2]=0;J[d+44>>2]=0;J[d+32>>2]=0;J[d+36>>2]=0;J[d+56>>2]=0;J[d+60>>2]=0;g=d- -64|0;J[g>>2]=0;J[g+4>>2]=0;J[d+72>>2]=0;J[d+76>>2]=0;J[d+80>>2]=0;J[d+84>>2]=0;J[d+88>>2]=0;J[d+92>>2]=0;J[d+96>>2]=0;J[d+100>>2]=0;J[d+104>>2]=0;J[d+108>>2]=0;J[d+24>>2]=0;J[d+28>>2]=0;J[d+16>>2]=0;J[d+20>>2]=0;J[d+48>>2]=0;J[d+52>>2]=0;J[d+80>>2]=bj(75488);J[d+84>>2]=Yi;J[d+96>>2]=J[57784];J[d+120>>2]=f;J[d+124>>2]=e;J[d+112>>2]=b;J[d+116>>2]=c;J[d+100>>2]=16;HO(a,d+16|0)}c:{if(H[d+156|0]&1){break c}a=J[d+144>>2];if(!a){break c}cj(a)}Ui=d+160|0}function S3(a){a=a|0;var b=0,c=0,d=0,e=0,f=0,g=0;b=Ui-4144|0;Ui=b;pj(b+4124|0,a,0,37704,554);e=J[a+8>>2]-J[a+12>>2]>>4;c=b+108|0;H[c+16|0]=1;J[c+8>>2]=0;J[c+12>>2]=0;J[c+4>>2]=3984;J[c>>2]=b+128;H[b+128|0]=0;J[b+88>>2]=0;J[b+92>>2]=0;J[b+96>>2]=0;J[b+100>>2]=0;J[b+80>>2]=0;J[b+84>>2]=0;J[b+72>>2]=0;J[b+76>>2]=0;J[b+92>>2]=-1;a:{b:{c:{if((e|0)<=0){break c}J[b+96>>2]=0;d:{if((kj(a,1)|0)!=5){uj(a,1);rj(a,-10002,56236);Pk(a,-2);Wk(a,1,1);d=Ij(a,-1,0);if(!d){break b}J[b+64>>2]=d;J[b+68>>2]=(e|0)==1?158859:158420;Im(c,26090,b- -64|0);gj(a,-2);break d}Im(c,158634,0);tx(a,1,c,b+72|0);J[b+48>>2]=(e|0)==1?158859:158420;Im(c,31902,b+48|0)}if((e|0)==1){break c}d=2;while(1){ij(J[b+72>>2],255,J[b+76>>2]<<2);J[b+92>>2]=-1;J[b+96>>2]=0;J[b+84>>2]=J[b+80>>2];e:{if((kj(a,d)|0)==5){tx(a,d,c,b+72|0);J[b+16>>2]=(d|0)<(e|0)?158420:158859;Im(c,31902,b+16|0);break e}uj(a,d);rj(a,-10002,56236);Pk(a,-2);Wk(a,1,1);f=Ij(a,-1,0);if(!f){break b}J[b+32>>2]=f;J[b+36>>2]=(d|0)<(e|0)?158420:158859;Im(c,26090,b+32|0);gj(a,-2)}f=(d|0)==(e|0);d=d+1|0;if(!f){continue}break}}J[b>>2]=b+128;dj(1,86858,31902,b);break a}gj(a,-2);g=fj(a,145858,0)}f:{if(H[b+100|0]&1){break f}a=J[b+80>>2];if(a){cj(a)}a=J[b+72>>2];if(!a){break f}cj(a)}oj(b+4124|0);Ui=b+4144|0;return g|0}function bT(a,b,c){var d=Q(0),e=Q(0),f=Q(0),g=Q(0),h=Q(0),i=Q(0),j=Q(0),k=0;d=N[c+84>>2];e=N[c+24>>2];f=N[c+16>>2];g=N[c+20>>2];h=N[c+92>>2];h=Q(Q(Q(N[c+116>>2]-Q(d*N[c+120>>2]))-Q(Q(Q(Q(e*N[a+512>>2])+Q(Q(f*N[a+504>>2])+Q(g*N[a+508>>2])))+Q(Q(N[c+8>>2]*N[a+528>>2])+Q(Q(N[c>>2]*N[a+520>>2])+Q(N[c+4>>2]*N[a+524>>2]))))*h))-Q(Q(Q(Q(N[c+40>>2]*N[b+528>>2])+Q(Q(N[c+32>>2]*N[b+520>>2])+Q(N[c+36>>2]*N[b+524>>2])))-Q(Q(e*N[b+512>>2])+Q(Q(f*N[b+504>>2])+Q(g*N[b+508>>2]))))*h));j=Q(d+h);i=N[c+124>>2];k=j>2]=k?i:j;d=k?Q(i-d):h;if(N[a+336>>2]!=Q(0)){N[a+504>>2]=N[a+504>>2]+Q(d*Q(f*N[a+552>>2]));N[a+508>>2]=Q(d*Q(g*N[a+556>>2]))+N[a+508>>2];N[a+512>>2]=Q(d*Q(e*N[a+560>>2]))+N[a+512>>2];e=N[c+56>>2];f=N[c+52>>2];N[a+520>>2]=Q(Q(d*N[a+536>>2])*N[c+48>>2])+N[a+520>>2];g=N[a+544>>2];N[a+524>>2]=Q(f*Q(d*N[a+540>>2]))+N[a+524>>2];N[a+528>>2]=Q(e*Q(d*g))+N[a+528>>2]}if(N[b+336>>2]!=Q(0)){e=N[c+24>>2];f=N[c+20>>2];N[b+504>>2]=N[b+504>>2]-Q(d*Q(N[b+552>>2]*N[c+16>>2]));N[b+508>>2]=N[b+508>>2]-Q(d*Q(f*N[b+556>>2]));N[b+512>>2]=N[b+512>>2]-Q(d*Q(e*N[b+560>>2]));e=N[c+72>>2];f=N[c+68>>2];N[b+520>>2]=Q(Q(d*N[b+536>>2])*N[c+64>>2])+N[b+520>>2];g=N[b+544>>2];N[b+524>>2]=Q(f*Q(d*N[b+540>>2]))+N[b+524>>2];N[b+528>>2]=Q(e*Q(d*g))+N[b+528>>2]}}function RL(a,b){var c=0,d=0,e=0,f=0,g=0,h=0,i=0,j=0;a:{b:{d=J[a+4>>2];c:{if(!d){break c}c=J[J[a>>2]+((b>>>0)%(d>>>0)<<2)>>2];if((c|0)==-1){break c}e=J[a+8>>2];while(1){g=e+P(c,24)|0;if(J[g>>2]==(b|0)){f=J[g+12>>2];if(!f){break a}while(1){d=J[a+4>>2];d:{if(!d){break d}e=J[J[g+8>>2]+(h<<3)>>2];c=J[J[a>>2]+((e>>>0)%(d>>>0)<<2)>>2];if((c|0)==-1){break d}i=J[a+8>>2];while(1){d=i+P(c,24)|0;if((e|0)!=J[d>>2]){c=J[d+20>>2];if((c|0)!=-1){continue}break d}break}c=J[d+12>>2];if(!c){break d}i=J[d+8>>2];e=0;while(1){j=i+(e<<3)|0;if(J[j>>2]!=(b|0)){e=e+1|0;if((c|0)!=(e|0)){continue}break d}break}e=(i+(c<<3)|0)-8|0;c=J[e+4>>2];J[j>>2]=J[e>>2];J[j+4>>2]=c;J[d+12>>2]=J[d+12>>2]-1;f=J[g+12>>2]}h=h+1|0;if(f>>>0>h>>>0){continue}break}break b}c=J[g+20>>2];if((c|0)!=-1){continue}break}}return}d=J[a+4>>2]}if(d){e:{f:{h=J[a>>2]+((b>>>0)%(d>>>0)<<2)|0;c=J[h>>2];if((c|0)!=-1){d=0;f=J[a+8>>2];e=f+P(c,24)|0;if(J[e>>2]==(b|0)){break e}break f}Z(85666,55629,340,62656);B()}while(1){d=e;c=J[d+20>>2];if((c|0)!=-1){e=f+P(c,24)|0;if(J[e>>2]!=(b|0)){continue}break e}break}Z(152754,55629,366,62656);B()}J[a+24>>2]=J[a+24>>2]-1;b=f+P(c,24)|0;J[(d?d+20|0:h)>>2]=J[b+20>>2];d=J[a+20>>2];J[a+20>>2]=c;J[b+20>>2]=d;cj(J[g+8>>2]);return}Z(113800,55629,334,62656);B()}function eM(a,b,c){var d=0,e=0,f=0,g=0,h=0,i=0,j=0,k=0,l=Q(0),m=Q(0),n=Q(0),o=0,p=0,q=0,r=0,s=0,t=0;i=J[a+100>>2];if(i){while(1){a:{b:{c:{e=J[i+12>>2];switch(J[e+4>>2]){case 2:break b;case 0:break c;default:break a}}N[e+28>>2]=c*N[e+28>>2];N[e+24>>2]=b*N[e+24>>2];N[e+32>>2]=b*N[e+32>>2];N[e+36>>2]=c*N[e+36>>2];break a}N[e+28>>2]=c*N[e+28>>2];N[e+24>>2]=b*N[e+24>>2];h=J[e+416>>2];if((h|0)<=0){break a}j=e+32|0;k=e+160|0;d=0;while(1){g=d<<3;f=g+k|0;N[f+4>>2]=c*N[f+4>>2];N[f>>2]=b*N[f>>2];f=g+j|0;N[f+4>>2]=c*N[f+4>>2];N[f>>2]=b*N[f>>2];d=d+1|0;if((h|0)!=(d|0)){continue}break}if((h|0)!=1){s=h>>>1|0;d=0;while(1){o=d<<3;f=o+k|0;p=J[f>>2];q=J[f+4>>2];r=(d^-1)+h<<3;g=r+k|0;t=J[g+4>>2];J[f>>2]=J[g>>2];J[f+4>>2]=t;J[g>>2]=p;J[g+4>>2]=q;f=j+o|0;o=J[f>>2];p=J[f+4>>2];g=j+r|0;q=J[g+4>>2];J[f>>2]=J[g>>2];J[f+4>>2]=q;J[g>>2]=o;J[g+4>>2]=p;d=d+1|0;if((s|0)!=(d|0)){continue}break}}j=e+288|0;d=0;while(1){e=d+1|0;f=(((e|0)!=(h|0)?e:0)<<3)+k|0;d=d<<3;g=d+k|0;l=Q(N[f>>2]-N[g>>2]);m=Q(N[f+4>>2]-N[g+4>>2]);n=Q(Y(Q(Q(l*l)+Q(m*m))));if(!(n>2]=-l;N[d>>2]=m;d=e;if((e|0)!=(h|0)){continue}break}}i=J[i+4>>2];if(i){continue}break}}d=L[a+4>>1];if(!(d&2)){J[a+144>>2]=0;I[a+4>>1]=d|2}}function Vsa(a,b){a=a|0;b=b|0;var c=0,d=0,e=Q(0),f=Q(0),g=Q(0),h=Q(0),i=Q(0),j=Q(0),k=Q(0),l=Q(0),m=Q(0),n=Q(0),o=Q(0),p=Q(0),q=0,r=Q(0),s=Q(0),t=Q(0),u=Q(0),v=Q(0),w=Q(0),x=Q(0),y=0,z=Q(0),A=Q(0),B=Q(0);c=Ui-48|0;Ui=c;q=J[b+36>>2];y=J[(J[J[J[a+4>>2]+192>>2]+24>>2]+P(q,80)|0)+64>>2];d=J[J[a+16>>2]+20>>2];a:{if(!d){break a}if(!(Zi[J[J[d>>2]+44>>2]](d)&2)){break a}d=J[a+4>>2];z=N[d+52>>2];h=N[d+12>>2];r=N[d+4>>2];s=N[d+8>>2];A=N[d+56>>2];i=N[d+28>>2];j=N[d+20>>2];t=N[d+24>>2];k=N[d+60>>2];e=N[d+44>>2];f=N[b+8>>2];g=N[b+24>>2];l=N[d+36>>2];m=N[b>>2];u=N[b+16>>2];v=N[d+40>>2];w=N[b+4>>2];x=N[b+20>>2];J[c+44>>2]=0;J[c+28>>2]=0;n=k;k=Q(Q(g+f)*Q(.5));o=Q(Q(u+m)*Q(.5));p=Q(Q(x+w)*Q(.5));n=Q(n+Q(Q(e*k)+Q(Q(l*o)+Q(v*p))));B=Q(R(e));e=Q(Q(Q(g-f)*Q(.5))+Q(0));f=Q(Q(Q(u-m)*Q(.5))+Q(0));g=Q(Q(Q(x-w)*Q(.5))+Q(0));l=Q(Q(B*e)+Q(Q(Q(R(l))*f)+Q(Q(R(v))*g)));N[c+40>>2]=n-l;m=Q(A+Q(Q(i*k)+Q(Q(j*o)+Q(t*p))));i=Q(Q(Q(R(i))*e)+Q(Q(Q(R(j))*f)+Q(Q(R(t))*g)));N[c+36>>2]=m-i;j=Q(z+Q(Q(h*k)+Q(Q(r*o)+Q(s*p))));h=Q(Q(Q(R(h))*e)+Q(Q(Q(R(r))*f)+Q(Q(R(s))*g)));N[c+32>>2]=j-h;N[c+24>>2]=l+n;N[c+20>>2]=i+m;N[c+16>>2]=h+j;b=J[J[a+16>>2]+20>>2];J[c+8>>2]=0;J[c+12>>2]=0;J[c>>2]=1065353216;J[c+4>>2]=0;Zi[J[J[b>>2]+48>>2]](b,c+32|0,c+16|0,c)}NT(a,y,q);Ui=c+48|0}function lga(a){a=a|0;var b=0,c=0,d=0,e=0,f=0,g=0,h=0,i=0,j=0,k=0,l=0,m=0;d=Ui+-64|0;Ui=d;k=pj(d+12|0,a,0,39481,1260);h=J[J[pk(a)+80>>2]+8>>2];J[d+8>>2]=0;J[d+4>>2]=0;J[d+56>>2]=0;J[d+60>>2]=0;J[d+48>>2]=0;J[d+52>>2]=0;J[d+40>>2]=0;J[d+44>>2]=0;J[d+32>>2]=0;J[d+36>>2]=0;Al(a,1,h,80935,d+8|0,d+32|0,d+4|0);h=mk(a,2);g=Yi;l=g;e=gp(a,3);b=J[d+8>>2];c=J[d+4>>2];g=Vl(c,h,g,1);a:{if(!g){break a}if(H[c+145|0]&1){f=J[c+132>>2];c=J[b+8>>2];b=L[c+6>>1];b=(e?b|g:b&(g^-1))<<16>>16;e=J[c>>2];if(!J[e+188>>2]){I[c+6>>1]=b;break a}i=J[f+84>>2];j=J[i>>2];if(J[e+232>>2]==2){Zi[J[j+84>>2]](i,e);I[c+6>>1]=b;f=J[f+84>>2];Zi[J[J[f>>2]+156>>2]](f,e,I[c+4>>1],b);break a}Zi[J[j+36>>2]](i,e);I[c+6>>1]=b;f=J[f+84>>2];Zi[J[J[f>>2]+32>>2]](f,e,I[c+4>>1],b);break a}c=Ui-16|0;Ui=c;b=J[J[b+8>>2]+100>>2];b:{if(!b){break b}if(e){while(1){if(J[J[b+12>>2]+4>>2]!=4){e=J[b+40>>2];I[c+12>>1]=L[e+4>>1];J[c+8>>2]=L[e>>1]|L[e+2>>1]<<16;I[c+10>>1]=L[c+10>>1]|g;Nv(b,c+8|0,0)}b=J[b+4>>2];if(b){continue}break b}}f=g^-1;while(1){if(J[J[b+12>>2]+4>>2]!=4){e=J[b+40>>2];I[c+12>>1]=L[e+4>>1];J[c+8>>2]=L[e>>1]|L[e+2>>1]<<16;I[c+10>>1]=f&L[c+10>>1];Nv(b,c+8|0,0)}b=J[b+4>>2];if(b){continue}break}}Ui=c+16|0}if(!g){J[d>>2]=tj(h,l);m=fj(a,118777,d)}oj(k);Ui=d- -64|0;return m|0}function PP(a,b,c,d){var e=0,f=0,g=0,h=0,i=0,j=0,k=0,l=0,m=0,n=0,o=0,p=0,q=0,r=0,s=0,t=0,u=0,v=0;J[a+72>>2]=b;J[a+76>>2]=c;a:{b:{if(!J[a+64>>2]){break b}m=a+176|0;n=a+112|0;k=a+80|0;o=a+144|0;p=a+32|0;q=d<<2;h=-1;i=-1;c:{while(1){d:{f=j<<2;e=J[p+f>>2];r=J[e+100>>2];s=J[e+112>>2];t=J[e+76>>2];u=f+o|0;e:{f:{g=J[a+f>>2];d=J[g+20>>2];g:{if(!d){break g}d=J[J[g+16>>2]+(mxa(b,c,d)<<2)>>2];if((d|0)==-1){break g}v=J[g+24>>2];while(1){d=(d<<4)+v|0;if((b|0)==J[d>>2]&(c|0)==J[d+4>>2]){break f}d=J[d+12>>2];if((d|0)!=-1){continue}break}}if(!J[e+28>>2]){break c}d=J[e+24>>2];break e}d=J[d+8>>2];if(d>>>0>=M[e+28>>2]){break d}d=J[e+24>>2]+P(d,36)|0}J[u>>2]=d;h:{i:{if((h&i)==-1){h=-1;i=-1;d=J[((J[d+12>>2]<<2)+t|0)+q>>2];if(d>>>0>=M[e+72>>2]){break i}e=J[e+68>>2]+(d<<3)|0;h=J[e>>2];i=J[e+4>>2];break i}j:{d=J[g+52>>2];k:{if(!d){break k}d=J[J[g+48>>2]+(mxa(h,i,d)<<2)>>2];if((d|0)==-1){break k}e=J[g+56>>2];while(1){d=e+(d<<4)|0;if((h|0)==J[d>>2]&(i|0)==J[d+4>>2]){break j}d=J[d+12>>2];if((d|0)!=-1){continue}break}}J[f+k>>2]=-1;break h}d=J[d+8>>2]}J[f+k>>2]=d;N[f+n>>2]=M[(d<<2)+s>>2];d=P(d,56)+r|0;J[f+m>>2]=d;l=J[d+20>>2]!=0|l}j=j+1|0;if(j>>>0>2]){continue}break b}break}break a}break a}H[a+208|0]=l&1;return}Z(12664,54737,95,84789);B()}function qz(a,b,c){var d=0,e=Q(0),f=Q(0),g=0,h=Q(0),i=0,j=Q(0),k=0,l=0,m=Q(0),n=Q(0),o=Q(0),p=Q(0),q=0;a:{b:{c:{if(c-3>>>0<14){J[a+416>>2]=c;i=a+160|0;k=a+32|0;while(1){d=g<<3;c=d+b|0;q=J[c+4>>2];l=d+k|0;J[l>>2]=J[c>>2];J[l+4>>2]=q;l=J[c+4>>2];d=d+i|0;J[d>>2]=J[c>>2];J[d+4>>2]=l;c=J[a+416>>2];g=g+1|0;if((c|0)>(g|0)){continue}break}if((c|0)<=0){break a}i=a+288|0;d=a+160|0;b=0;while(1){g=b+1|0;c=d+(((c|0)>(g|0)?g:0)<<3)|0;b=b<<3;k=b+d|0;h=Q(N[c>>2]-N[k>>2]);e=Q(N[c+4>>2]-N[k+4>>2]);f=Q(Q(h*h)+Q(e*e));if(!(f>Q(14210854715202004e-30))){break b}b=b+i|0;h=Q(-h);N[b+4>>2]=h;N[b>>2]=e;f=Q(Y(f));if(!(f>2]=f*h;N[b>>2]=e*f}b=g;c=J[a+416>>2];if((b|0)<(c|0)){continue}break}if((c|0)<=2){break a}g=a+160|0;b=0;h=Q(0);e=Q(0);f=Q(0);while(1){d=g+(b<<3)|0;n=N[d>>2];b=b+1|0;i=g+(((b|0)<(c|0)?b:0)<<3)|0;j=N[i+4>>2];m=N[d+4>>2];o=N[i>>2];p=Q(Q(Q(n*j)-Q(m*o))*Q(.5));e=Q(e+p);m=Q(Q(m+Q(0))+j);j=Q(p*Q(.3333333432674408));f=Q(f+Q(m*j));h=Q(h+Q(Q(Q(n+Q(0))+o)*j));if((b|0)!=(c|0)){continue}break}if(!(e>Q(1.1920928955078125e-7))){break c}e=Q(Q(1)/e);N[a+28>>2]=e*f;N[a+24>>2]=e*h;return}Z(105855,41580,130,15709);B()}Z(94493,41580,123,72296);B()}Z(94515,41580,146,15709);B()}Z(109127,41580,84,72296);B()}function Xva(a,b){a=a|0;b=b|0;var c=Q(0),d=Q(0),e=Q(0),f=0,g=Q(0),h=Q(0),i=Q(0),j=0,k=Q(0),l=Q(0),m=Q(0),n=Q(0),o=Q(0),p=Q(0),q=Q(0),r=Q(0),s=Q(0),t=Q(0),u=Q(0),v=Q(0),w=Q(0);if(N[a+68>>2]>Q(0)){a=1}else{d=N[a+144>>2];i=N[a+84>>2];j=J[b+24>>2];f=j+P(J[a+108>>2],12)|0;q=N[f+8>>2];c=Rj(q);k=N[a+140>>2];n=N[a+80>>2];e=Hj(q);g=N[a+152>>2];o=N[a+92>>2];j=j+P(J[a+112>>2],12)|0;r=N[j+8>>2];h=Rj(r);l=N[a+148>>2];p=N[a+88>>2];m=Hj(r);s=N[j>>2];l=Q(p-l);g=Q(o-g);o=Q(Q(h*l)-Q(m*g));p=N[f>>2];k=Q(n-k);i=Q(i-d);n=Q(Q(c*k)-Q(e*i));d=Q(Q(Q(s+o)-p)-n);t=N[j+4>>2];m=Q(Q(m*l)+Q(h*g));g=N[f+4>>2];i=Q(Q(e*k)+Q(c*i));c=Q(Q(Q(t+m)-g)-i);e=Q(Y(Q(Q(d*d)+Q(c*c))));a:{if(e>2];h=N[a+160>>2];l=N[a+164>>2];v=g;g=N[a+156>>2];w=c;c=Q(e-N[a+104>>2]);c=c>2]));e=Q(w*u);N[f+4>>2]=v-Q(g*e);d=Q(d*u);N[f>>2]=p-Q(g*d);f=J[b+24>>2];N[(f+P(J[a+108>>2],12)|0)+8>>2]=q-Q(l*Q(Q(n*e)-Q(i*d)));f=f+P(J[a+112>>2],12)|0;N[f+4>>2]=t+Q(h*e);N[f>>2]=s+Q(h*d);N[(J[b+24>>2]+P(J[a+112>>2],12)|0)+8>>2]=Q(k*Q(Q(o*e)-Q(m*d)))+r;a=(c>Q(0)?c:Q(-c))>4){case 2:d=b-16|0;if(fk(J[c>>2],J[d>>2],J[d+4>>2])>>>0>=fk(J[c>>2],J[a>>2],J[a+4>>2])>>>0){break a}b=J[a+12>>2];J[g+8>>2]=J[a+8>>2];J[g+12>>2]=b;b=J[a+4>>2];J[g>>2]=J[a>>2];J[g+4>>2]=b;b=J[d+12>>2];J[a+8>>2]=J[d+8>>2];J[a+12>>2]=b;b=J[d+4>>2];J[a>>2]=J[d>>2];J[a+4>>2]=b;a=J[g+12>>2];J[d+8>>2]=J[g+8>>2];J[d+12>>2]=a;a=J[g+4>>2];J[d>>2]=J[g>>2];J[d+4>>2]=a;break a;case 3:rn(a,a+16|0,b-16|0,c);break a;case 4:Jz(a,a+16|0,a+32|0,b-16|0,c);break a;case 5:EF(a,a+16|0,a+32|0,a+48|0,b-16|0,c);break a;case 0:case 1:break a;default:break b}}d=a+32|0;rn(a,a+16|0,d,c);f=a+48|0;if((f|0)==(b|0)){break a}while(1){c:{if(fk(J[c>>2],J[f>>2],J[f+4>>2])>>>0>=fk(J[c>>2],J[d>>2],J[d+4>>2])>>>0){break c}l=J[f+8>>2];m=J[f+12>>2];i=J[f>>2];j=J[f+4>>2];h=f;while(1){d:{e=d;d=J[d+4>>2];J[h>>2]=J[e>>2];J[h+4>>2]=d;d=J[e+12>>2];J[h+8>>2]=J[e+8>>2];J[h+12>>2]=d;if((a|0)==(e|0)){e=a;break d}h=e;d=e-16|0;if(fk(J[c>>2],i,j)>>>0>2],J[d>>2],J[d+4>>2])>>>0){continue}}break}J[e+8>>2]=l;J[e+12>>2]=m;J[e>>2]=i;J[e+4>>2]=j;k=k+1|0;if((k|0)!=8){break c}e=(f+16|0)==(b|0);break a}d=f;e=d+16|0;f=e;if((b|0)!=(e|0)){continue}break}e=1}Ui=g+16|0;return e}function qt(a,b,c,d,e){var f=Q(0),g=Q(0),h=Q(0),i=Q(0),j=Q(0),k=Q(0),l=Q(0),m=Q(0),n=Q(0),o=0,p=Q(0);o=Ui-16|0;Ui=o;f=N[a+48>>2];g=N[b>>2];j=N[a+52>>2];h=N[b+4>>2];k=N[a+56>>2];i=N[b+8>>2];J[e+60>>2]=0;N[e+56>>2]=k+Q(d*i);N[e+52>>2]=j+Q(d*h);N[e+48>>2]=f+Q(d*g);l=N[c+8>>2];m=N[c>>2];n=N[c+4>>2];f=Q(Y(Q(Q(l*l)+Q(Q(m*m)+Q(n*n)))));g=Q(d*f)>Q(.7853981852531433)?Q(Q(.7853981852531433)/d):f;a:{if(g>2];h=N[o>>2];k=N[o+4>>2];i=N[o+12>>2];J[e+44>>2]=0;J[e+28>>2]=0;J[e+12>>2]=0;l=Q(l*f);d=Rj(Q(Q(d*g)*Q(.5)));g=Q(n*f);f=Q(m*f);m=Q(Q(Q(h*l)+Q(Q(k*d)+Q(i*g)))-Q(j*f));n=Q(Q(Q(Q(d*i)-Q(f*h))-Q(g*k))-Q(l*j));p=Q(Q(Q(f*k)+Q(Q(d*j)+Q(l*i)))-Q(g*h));h=Q(Q(Q(g*j)+Q(Q(d*h)+Q(f*i)))-Q(l*k));f=Q(Q(1)/Q(Y(Q(Q(n*n)+Q(Q(p*p)+Q(Q(h*h)+Q(m*m)))))));d=Q(m*f);g=Q(n*f);j=Q(p*f);f=Q(h*f);h=Q(Q(2)/Q(Q(g*g)+Q(Q(j*j)+Q(Q(f*f)+Q(d*d)))));k=Q(j*h);i=Q(d*k);l=Q(f*h);m=Q(g*l);N[e+36>>2]=i+m;n=Q(f*k);h=Q(d*h);p=Q(g*h);N[e+32>>2]=n-p;N[e+24>>2]=i-m;i=Q(f*h);g=Q(g*k);N[e+16>>2]=i+g;N[e+8>>2]=n+p;N[e+4>>2]=i-g;f=Q(f*l);d=Q(d*h);N[e+40>>2]=Q(1)-Q(f+d);g=f;f=Q(j*k);N[e+20>>2]=Q(1)-Q(g+f);N[e>>2]=Q(1)-Q(d+f);Ui=o+16|0}function Eta(a,b,c){a=a|0;b=b|0;c=c|0;var d=0,e=0,f=0,g=0,h=Q(0);d=Ui-160|0;Ui=d;e=J[J[a>>2]>>2];f=J[J[a+4>>2]>>2];a:{if(!(Zi[J[J[b>>2]+24>>2]](b,e,f)|0)){break a}if(!J[a+8>>2]){b=Zi[J[J[b>>2]+8>>2]](b,e,f,0)|0;J[a+8>>2]=b;if(!b){break a}}J[d+140>>2]=f;J[d+136>>2]=e;J[d+4>>2]=0;J[d>>2]=245684;b=J[e+16>>2];J[d+16>>2]=J[e+12>>2];J[d+20>>2]=b;b=J[e+8>>2];J[d+8>>2]=J[e+4>>2];J[d+12>>2]=b;b=J[e+32>>2];J[d+32>>2]=J[e+28>>2];J[d+36>>2]=b;b=J[e+24>>2];J[d+24>>2]=J[e+20>>2];J[d+28>>2]=b;b=J[e+48>>2];J[d+48>>2]=J[e+44>>2];J[d+52>>2]=b;b=J[e+40>>2];J[d+40>>2]=J[e+36>>2];J[d+44>>2]=b;b=J[e+64>>2];g=d- -64|0;J[g>>2]=J[e+60>>2];J[g+4>>2]=b;b=J[e+56>>2];J[d+56>>2]=J[e+52>>2];J[d+60>>2]=b;b=J[f+16>>2];J[d+80>>2]=J[f+12>>2];J[d+84>>2]=b;b=J[f+8>>2];J[d+72>>2]=J[f+4>>2];J[d+76>>2]=b;b=J[f+32>>2];J[d+96>>2]=J[f+28>>2];J[d+100>>2]=b;b=J[f+24>>2];J[d+88>>2]=J[f+20>>2];J[d+92>>2]=b;b=J[f+48>>2];J[d+112>>2]=J[f+44>>2];J[d+116>>2]=b;b=J[f+40>>2];J[d+104>>2]=J[f+36>>2];J[d+108>>2]=b;b=J[f+64>>2];J[d+128>>2]=J[f+60>>2];J[d+132>>2]=b;b=J[f+56>>2];J[d+120>>2]=J[f+52>>2];J[d+124>>2]=b;b=d;g=J[a+8>>2];a=J[g>>2];if(J[c+8>>2]==1){Zi[J[a+8>>2]](g,e,f,c,d);break a}h=Q(Zi[J[a+12>>2]](g,e,f,c,b));if(!(h>2])){break a}N[c+12>>2]=h}Ui=d+160|0}function zF(a,b,c,d,e){var f=0,g=0,h=0,i=0,j=0,k=0;a:{b:{switch(d|0){default:if((d|0)<=8){if((a|0)==(b|0)){break a}J[e>>2]=J[a>>2];f=a+4|0;if((f|0)==(b|0)){break a}h=J[c>>2];a=e;while(1){d=a+4|0;c=J[f>>2];g=J[a>>2];c:{if(M[(h+P(c,48)|0)+32>>2]>2]){J[a+4>>2]=g;c=e;d:{if((a|0)==(e|0)){break d}while(1){g=a-4|0;i=J[g>>2];c=a;if(M[(h+P(J[f>>2],48)|0)+32>>2]>=M[(h+P(i,48)|0)+32>>2]){break d}J[a>>2]=i;a=g;if((e|0)!=(a|0)){continue}break}c=e}J[c>>2]=J[f>>2];break c}J[d>>2]=c}a=d;f=f+4|0;if((f|0)!=(b|0)){continue}break}break a}f=d>>>1|0;h=f<<2;g=h+a|0;Rr(a,g,c,f,e,f);d=d-f|0;Rr(g,b,c,d,e+h|0,d);c=J[c>>2];d=g;e:{while(1){if((b|0)==(d|0)){break e}h=J[d>>2];i=J[(c+P(h,48)|0)+32>>2];j=J[a>>2];k=J[(c+P(j,48)|0)+32>>2];f=i>>>0>>0;J[e>>2]=f?h:j;d=(f<<2)+d|0;e=e+4|0;a=((i>>>0>=k>>>0)<<2)+a|0;if((g|0)!=(a|0)){continue}break}if((b|0)==(d|0)){break a}while(1){J[e>>2]=J[d>>2];e=e+4|0;d=d+4|0;if((d|0)!=(b|0)){continue}break}break a}if((a|0)==(g|0)){break a}while(1){J[e>>2]=J[a>>2];e=e+4|0;a=a+4|0;if((g|0)!=(a|0)){continue}break};break a;case 2:d=b-4|0;g=J[d>>2];b=J[c>>2];c=J[a>>2];b=M[(P(g,48)+b|0)+32>>2]>2];J[e>>2]=b?g:c;a=b?a:d;e=e+4|0;break;case 0:break a;case 1:break b}}J[e>>2]=J[a>>2]}}function wy(a,b,c){var d=0,e=0,f=0,g=0,h=0,i=0;a:{b:{c:{f=J[a+4>>2]-J[a>>2]>>2;d:{if((f|0)<=0){break d}while(1){e=J[a>>2];if(J[a+4>>2]-e>>2>>>0<=d>>>0){break c}e=J[e+(d<<2)>>2];if(J[e+8>>2]!=(b|0)|J[e+12>>2]!=(c|0)){d=d+1|0;if((f|0)!=(d|0)){continue}break d}break}f=J[a+4>>2];e=J[a>>2];if(f-e>>2>>>0<=d>>>0){break b}J[e+(d<<2)>>2]=J[f-4>>2];e=J[a+4>>2]-4|0;J[a+4>>2]=e;if(e>>>0>2]){break a}}e=0;d=J[a+20>>2];e:{if(!d){break e}g=a+16|0;d=J[J[g>>2]+(mxa(b,c,d)<<2)>>2];if((d|0)==-1){break e}f=J[a+24>>2];while(1){d=f+P(d,24)|0;if(J[d>>2]!=(b|0)|J[d+4>>2]!=(c|0)){d=J[d+16>>2];if((d|0)!=-1){continue}break e}break}f:{d=J[g+4>>2];if(d){g:{h:{i:{j:{k:{i=J[g>>2]+(mxa(b,c,d)<<2)|0;h=J[i>>2];if((h|0)!=-1){f=J[g+8>>2];d=f+P(h,24)|0;if((b|0)!=J[d>>2]|J[d+4>>2]!=(c|0)){break k}break j}Z(85666,55629,340,62656);B()}while(1){h=J[d+16>>2];if((h|0)==-1){break i}e=d;d=f+P(h,24)|0;if(J[d>>2]!=(b|0)|J[d+4>>2]!=(c|0)){continue}break}}J[g+24>>2]=J[g+24>>2]-1;b=J[d+16>>2];if(e){break h}J[i>>2]=b;break g}Z(152754,55629,366,62656);B()}J[e+16>>2]=b}b=J[g+20>>2];J[g+20>>2]=h;J[d+16>>2]=b;break f}Z(113800,55629,334,62656);B()}e=1;H[a+52|0]=1}return e}Z(145396,53895,487,84789);B()}Z(145381,53895,537,43537);B()}Z(12682,53895,540,43537);B()}function nwa(a,b,c){a=a|0;b=b|0;c=c|0;var d=0,e=0,f=0,g=0;f=Ui-288|0;Ui=f;e=f+8|0;ij(e,0,280);J[a+4>>2]=a+8;g=ls(e,b,c);if(!g){e=J[f+8>>2];J[a>>2]=e;b=J[f+12>>2];d=b+(e<<4)|0;J[a+8>>2]=J[d>>2];J[a+12>>2]=J[d+4>>2];J[a+16>>2]=J[d+8>>2];J[a+20>>2]=J[d+12>>2];c=a+24|0;a=d-16|0;if((e|0)>=2){while(1){d=J[a>>2];J[c>>2]=J[(K[(d>>>8&255)+865456|0]<<2)+866736>>2]^J[(K[(d&255)+865456|0]<<2)+865712>>2]^J[(K[(d>>>16&255)+865456|0]<<2)+867760>>2]^J[(K[(d>>>24|0)+865456|0]<<2)+868784>>2];d=J[a+4>>2];J[c+4>>2]=J[(K[(d>>>8&255)+865456|0]<<2)+866736>>2]^J[(K[(d&255)+865456|0]<<2)+865712>>2]^J[(K[(d>>>16&255)+865456|0]<<2)+867760>>2]^J[(K[(d>>>24|0)+865456|0]<<2)+868784>>2];d=J[a+8>>2];J[c+8>>2]=J[(K[(d>>>8&255)+865456|0]<<2)+866736>>2]^J[(K[(d&255)+865456|0]<<2)+865712>>2]^J[(K[(d>>>16&255)+865456|0]<<2)+867760>>2]^J[(K[(d>>>24|0)+865456|0]<<2)+868784>>2];d=J[a+12>>2];J[c+12>>2]=J[(K[(d>>>8&255)+865456|0]<<2)+866736>>2]^J[(K[(d&255)+865456|0]<<2)+865712>>2]^J[(K[(d>>>16&255)+865456|0]<<2)+867760>>2]^J[(K[(d>>>24|0)+865456|0]<<2)+868784>>2];a=a-16|0;c=c+16|0;d=e>>>0>2;e=e-1|0;if(d){continue}break}a=b}J[c>>2]=J[a>>2];J[c+4>>2]=J[a+4>>2];J[c+8>>2]=J[a+8>>2];J[c+12>>2]=J[a+12>>2]}Zi[J[66509]](f+8|0,0,280)|0;Ui=f+288|0;return g|0}function mka(a){a=a|0;var b=0,c=0,d=0,e=0,f=0,g=0,h=0,i=0,j=0;c=J[a>>2];d=nj(40);J[d>>2]=0;J[d+4>>2]=0;J[d+32>>2]=0;J[d+36>>2]=0;J[d+24>>2]=0;J[d+28>>2]=0;J[d+16>>2]=0;J[d+20>>2]=0;h=d+8|0;b=h;J[b>>2]=0;J[b+4>>2]=0;J[d>>2]=J[c>>2];e=J[a+16>>2];c=J[c+8>>2];e=c>>>0>e>>>0?e:c;lj(e,28,d+4|0,d+12|0,b);a:{b:{c=J[d+4>>2];if((J[d+12>>2]-c|0)/28>>>0>=e>>>0){J[d+8>>2]=c+P(e,28);b=J[d+24>>2];if(b>>>0>e>>>0){break b}g=J[d+20>>2];c=sj(e<<2);J[d+20>>2]=c;f=hj(c,g,b<<2);J[d+24>>2]=e;c:{d:{if(b>>>0>>0){c=b;i=e-b&7;if(i){while(1){J[(c<<2)+f>>2]=c;c=c+1|0;j=j+1|0;if((i|0)!=(j|0)){continue}break}}if(b-e>>>0<=4294967288){while(1){J[(c<<2)+f>>2]=c;b=c+1|0;J[(b<<2)+f>>2]=b;b=c+2|0;J[(b<<2)+f>>2]=b;b=c+3|0;J[(b<<2)+f>>2]=b;b=c+4|0;J[(b<<2)+f>>2]=b;b=c+5|0;J[(b<<2)+f>>2]=b;b=c+6|0;J[(b<<2)+f>>2]=b;b=c+7|0;J[(b<<2)+f>>2]=b;c=c+8|0;if((e|0)!=(c|0)){continue}break}}cj(g);break d}cj(g);if(!e){break c}}c=0;while(1){b=J[d+4>>2];if((J[h>>2]-b|0)/28>>>0<=c>>>0){break a}b=b+P(c,28)|0;J[b+8>>2]=0;J[b+12>>2]=0;J[b>>2]=0;J[b+4>>2]=0;J[b+24>>2]=0;J[b+16>>2]=-2;J[b+20>>2]=-2;J[b+12>>2]=-2;c=c+1|0;if((e|0)!=(c|0)){continue}break}}J[J[a+12>>2]>>2]=d;return 0}Z(144782,53895,514,59583);B()}Z(2627,54340,112,2284);B()}Z(145396,53895,487,84789);B()}function Ak(a,b,c){var d=0,e=0,f=0,g=0,h=0,i=0,j=0;e=Ui-32|0;Ui=e;J[e+28>>2]=0;J[e+20>>2]=1;J[e+24>>2]=0;J[e+16>>2]=0;J[e+8>>2]=1;J[e+12>>2]=0;a:{if((a|0)==(b|0)){d=e+20|0;g=sk(d,b);if(g){break a}b=d}if((a|0)==(c|0)){d=e+8|0;g=sk(d,c);if(g){break a}c=d}d=J[b+4>>2];i=0;b:{if(!d){break b}f=J[b+8>>2]-4|0;while(1){i=d;if(J[f+(d<<2)>>2]){break b}d=d-1|0;if(d){continue}break}i=0}d=J[c+4>>2];c:{if(!d){break c}f=J[c+8>>2]-4|0;while(1){if(J[f+(d<<2)>>2]){h=d;break c}d=d-1|0;if(d){continue}break}}g=-16;d=h+i|0;if(d>>>0>1e4){break a}d:{e:{f=J[a+4>>2];f:{if(f>>>0>>0){j=Zj(d,4);if(!j){break a}g=J[a+8>>2];if(g){f=f<<2;hj(j,g,f);Zi[J[66509]](g,0,f)|0;cj(J[a+8>>2])}J[a+8>>2]=j;J[a+4>>2]=d;break f}d=f;if(!d){break e}}f=d<<2;d=J[a+8>>2];break d}d=Zj(1,4);if(!d){break a}f=J[a+8>>2];if(f){Zi[J[66509]](f,0,0)|0;cj(J[a+8>>2])}J[a+8>>2]=d;J[a+4>>2]=1;f=4}g=0;ij(d,0,f);J[J[a+8>>2]>>2]=0;J[a>>2]=1;if(h){while(1){d=h<<2;hA(i,J[b+8>>2],(d+J[a+8>>2]|0)-4|0,J[(d+J[c+8>>2]|0)-4>>2]);h=h-1|0;if(h){continue}break}}J[a>>2]=P(J[c>>2],J[b>>2])}a=J[e+16>>2];if(a){Zi[J[66509]](a,0,J[e+12>>2]<<2)|0;cj(J[e+16>>2])}J[e+16>>2]=0;J[e+8>>2]=1;J[e+12>>2]=0;a=J[e+28>>2];if(a){Zi[J[66509]](a,0,J[e+24>>2]<<2)|0;cj(J[e+28>>2])}Ui=e+32|0;return g}function Pta(a,b,c,d){a=a|0;b=b|0;c=c|0;d=d|0;var e=0,f=0,g=Q(0),h=Q(0),i=Q(0),j=Q(0),k=Q(0),l=Q(0),m=0,n=Q(0),o=Q(0),p=Q(0),q=0,r=0,s=0,t=Q(0),u=Q(0);f=Ui-16|0;Ui=f;e=(J[a+52>>2]+2|0)%3|0;if((d|0)>0){q=a+28|0;n=N[q+(e<<2)>>2];while(1){J[f+8>>2]=0;J[f+12>>2]=0;J[f>>2]=0;J[f+4>>2]=0;e=J[a+52>>2]<<2;N[e+f>>2]=N[e+q>>2];s=r<<4;e=s+b|0;g=N[e+8>>2];h=N[e>>2];k=N[e+4>>2];j=N[a+12>>2];i=N[a+16>>2];t=N[f>>2];p=N[f+4>>2];u=Q(-0xde0b6b000000000);o=Q(N[f+8>>2]+Q(n*Q(g*N[a+20>>2])));g=Q(Zi[J[J[a>>2]+44>>2]](a));l=N[e+8>>2];o=Q(o-Q(g*l));j=Q(t+Q(n*Q(h*j)));h=N[e>>2];j=Q(j-Q(g*h));i=Q(p+Q(n*Q(k*i)));k=N[e+4>>2];i=Q(i-Q(g*k));g=Q(Q(l*o)+Q(Q(h*j)+Q(k*i)));if(g>Q(-0xde0b6b000000000)){m=c+s|0;J[m+12>>2]=0;N[m+8>>2]=o;N[m+4>>2]=i;N[m>>2]=j;l=N[e+8>>2];k=N[e+4>>2];h=N[e>>2];u=g}J[f+8>>2]=0;J[f+12>>2]=0;J[f>>2]=0;J[f+4>>2]=0;m=J[a+52>>2]<<2;N[m+f>>2]=-N[m+q>>2];o=N[a+16>>2];j=N[f+4>>2];i=N[a+12>>2];t=N[f>>2];l=Q(N[f+8>>2]+Q(n*Q(l*N[a+20>>2])));g=Q(Zi[J[J[a>>2]+44>>2]](a));p=N[e+8>>2];l=Q(l-Q(g*p));h=Q(t+Q(n*Q(h*i)));i=N[e>>2];h=Q(h-Q(g*i));j=Q(j+Q(n*Q(k*o)));k=N[e+4>>2];g=Q(j-Q(g*k));if(Q(Q(p*l)+Q(Q(i*h)+Q(k*g)))>u){e=c+s|0;J[e+12>>2]=0;N[e+8>>2]=l;N[e+4>>2]=g;N[e>>2]=h}r=r+1|0;if((r|0)!=(d|0)){continue}break}}Ui=f+16|0}function Bv(a,b){var c=0,d=0,e=0,f=0,g=0,h=0,i=0,j=0;c=J[a+1408>>2];a:{if((c|0)>24){break a}if(!c){J[a+1404>>2]=0}while(1){if(K[a+1388|0]?0:J[a+1396>>2]){break a}d=Zk(a);if((d|0)==-1){break a}c=J[a+1408>>2];J[a+1408>>2]=c+8;J[a+1404>>2]=J[a+1404>>2]+(d<>2];e:{if(!f){g=J[b+2084>>2];if(g){break e}return-1}d=J[b+4>>2];if((d|0)<9){break d}g=J[b+2084>>2];if(!g){break d}}d=J[a+1404>>2];c=0;f=J[b+2092>>2];if((f|0)>=2){e=d<<24|(d&65280)<<8|(d>>>8&65280|d>>>24);e=e>>>4&252645135|(e&252645135)<<4;e=e>>>2&858993459|(e&858993459)<<2;j=e>>>1&1431655765|(e&1431655765)<<1;while(1){e=f>>>1|0;i=e+c|0;h=j>>>0>2];c=h?c:i;f=h?e:f-e|0;if((f|0)>1){continue}break}}f=J[a+1408>>2];c=K[b+23|0]?c:J[J[b+2088>>2]+(c<<2)>>2];b=K[c+J[b+8>>2]|0];if((f|0)<(b|0)){break c}J[a+1404>>2]=d>>>b;J[a+1408>>2]=f-b;return c}if(K[b+23|0]){break b}if((d|0)>0){g=J[b+8>>2];c=0;while(1){f:{e=c+g|0;b=K[e|0];if((b|0)==255){break f}h=J[a+1404>>2];if(J[f+(c<<2)>>2]!=(h&(-1<>2];if((d|0)<(b|0)){break c}J[a+1404>>2]=h>>>b;J[a+1408>>2]=d-K[e|0];return c}c=c+1|0;if((d|0)!=(c|0)){continue}break}}J[a+112>>2]=21}J[a+1408>>2]=0;return-1}Z(62342,82607,1696,6824);B()}function it(a,b,c){var d=0,e=0,f=0;d=Ui-16|0;Ui=d;J[d+12>>2]=0;f=aE(a,b,d+12|0);J[c>>2]=f;e=-3;a:{b:{c:{switch(f|0){case 0:O[c+8>>3]=ok(a,b);break b;case 1:J[c+8>>2]=Tl(a,b);J[c+12>>2]=Yi;break b;case 2:a=LB(a,b);b=J[a+4>>2];J[c+8>>2]=J[a>>2];J[c+12>>2]=b;b=J[a+28>>2];J[c+32>>2]=J[a+24>>2];J[c+36>>2]=b;b=J[a+20>>2];J[c+24>>2]=J[a+16>>2];J[c+28>>2]=b;b=J[a+12>>2];J[c+16>>2]=J[a+8>>2];J[c+20>>2]=b;break b;case 3:a=J[d+12>>2];N[c+8>>2]=N[a>>2];N[c+12>>2]=N[a+4>>2];N[c+16>>2]=N[a+8>>2];break b;case 4:a=J[d+12>>2];N[c+8>>2]=N[a>>2];N[c+12>>2]=N[a+4>>2];N[c+16>>2]=N[a+8>>2];N[c+20>>2]=N[a+12>>2];break b;case 5:a=J[d+12>>2];N[c+8>>2]=N[a>>2];N[c+12>>2]=N[a+4>>2];N[c+16>>2]=N[a+8>>2];N[c+20>>2]=N[a+12>>2];break b;case 6:e=0;H[c+8|0]=(ck(a,b)|0)!=0;break a;case 7:break c;default:break a}}a=J[d+12>>2];b=J[a+4>>2];J[c+8>>2]=J[a>>2];J[c+12>>2]=b;e=J[a+60>>2];b=c- -64|0;J[b>>2]=J[a+56>>2];J[b+4>>2]=e;b=J[a+52>>2];J[c+56>>2]=J[a+48>>2];J[c+60>>2]=b;b=J[a+44>>2];J[c+48>>2]=J[a+40>>2];J[c+52>>2]=b;b=J[a+36>>2];J[c+40>>2]=J[a+32>>2];J[c+44>>2]=b;b=J[a+28>>2];J[c+32>>2]=J[a+24>>2];J[c+36>>2]=b;b=J[a+20>>2];J[c+24>>2]=J[a+16>>2];J[c+28>>2]=b;b=J[a+12>>2];J[c+16>>2]=J[a+8>>2];J[c+20>>2]=b}e=0}Ui=d+16|0;return e}function fva(a,b,c){a=a|0;b=b|0;c=Q(c);var d=Q(0),e=0,f=Q(0),g=Q(0),h=0,i=Q(0),j=Q(0),k=0,l=0,m=0,n=Q(0),o=0,p=Q(0),q=Q(0),r=0,s=0,t=Q(0),u=Q(0),v=Q(0);a:{k=J[a+416>>2];if((k|0)>=3){l=k&3;m=a+160|0;if((k|0)==3){break a}o=k&2147483644;while(1){e=(h<<3)+m|0;f=Q(Q(Q(Q(f+N[e+4>>2])+N[e+12>>2])+N[e+20>>2])+N[e+28>>2]);g=Q(Q(Q(Q(g+N[e>>2])+N[e+8>>2])+N[e+16>>2])+N[e+24>>2]);h=h+4|0;r=r+4|0;if((o|0)!=(r|0)){continue}break}break a}Z(109138,41580,315,18997);B()}if(l){while(1){e=(h<<3)+m|0;f=Q(f+N[e+4>>2]);g=Q(g+N[e>>2]);h=h+1|0;s=s+1|0;if((l|0)!=(s|0)){continue}break}}a=a+164|0;d=Q(Q(1)/Q(k|0));p=Q(d*f);q=Q(d*g);h=0;f=Q(0);while(1){e=(h<<3)+m|0;g=Q(N[e>>2]-q);h=h+1|0;l=(h<<3)+m|0;o=(h|0)<(k|0);d=Q(N[(o?l+4|0:a)>>2]-p);i=Q(N[e+4>>2]-p);j=Q(N[(o?l:m)>>2]-q);n=Q(Q(g*d)-Q(i*j));t=Q(Q(Q(n*Q(.0833333358168602))*Q(Q(Q(d*d)+Q(Q(i*i)+Q(i*d)))+Q(Q(j*j)+Q(Q(g*g)+Q(g*j)))))+t);n=Q(n*Q(.5));f=Q(f+n);i=Q(i+d);d=Q(n*Q(.3333333432674408));u=Q(u+Q(i*d));v=Q(v+Q(Q(g+j)*d));if((h|0)!=(k|0)){continue}break}j=Q(c*f);N[b>>2]=j;if(f>Q(1.1920928955078125e-7)){d=Q(Q(1)/f);f=Q(u*d);g=Q(p+f);N[b+8>>2]=g;d=Q(v*d);i=Q(q+d);N[b+4>>2]=i;N[b+12>>2]=Q(j*Q(Q(Q(i*i)+Q(g*g))-Q(Q(d*d)+Q(f*f))))+Q(c*t);return}Z(94493,41580,361,18997);B()}function Msa(a,b,c){a=a|0;b=b|0;c=c|0;var d=0,e=0,f=0,g=0,h=0,i=0,j=0,k=0,l=0,m=0,n=0,o=0;Jv(a,b,c);N[b+20>>2]=N[a+72>>2];d=J[a+16>>2];J[b+12>>2]=0;J[b+16>>2]=d;if(d){g=Zi[J[J[c>>2]+16>>2]](c,76,d)|0;d=J[g+8>>2];J[b+12>>2]=Zi[J[J[c>>2]+28>>2]](c,d);if(J[b+16>>2]>0){f=J[a+24>>2];while(1){e=P(h,80);f=e+f|0;N[d+72>>2]=N[f+72>>2];J[d+64>>2]=Zi[J[J[c>>2]+28>>2]](c,J[f+64>>2]);if(!(Zi[J[J[c>>2]+24>>2]](c,J[(e+J[a+24>>2]|0)+64>>2])|0)){f=J[(e+J[a+24>>2]|0)+64>>2];f=(k=c,l=Zi[J[J[f>>2]+48>>2]](f)|0,m=1,j=J[J[c>>2]+16>>2],Zi[j](k|0,l|0,m|0)|0);i=J[(e+J[a+24>>2]|0)+64>>2];m=c,l=f,k=Zi[J[J[i>>2]+52>>2]](i,J[f+8>>2],c)|0,n=1346455635,o=J[(e+J[a+24>>2]|0)+64>>2],j=J[J[c>>2]+20>>2],Zi[j](m|0,l|0,k|0,n|0,o|0)}f=J[a+24>>2];e=e+f|0;J[d+68>>2]=J[e+68>>2];N[d>>2]=N[e>>2];N[d+4>>2]=N[e+4>>2];N[d+8>>2]=N[e+8>>2];N[d+12>>2]=N[e+12>>2];N[d+16>>2]=N[e+16>>2];N[d+20>>2]=N[e+20>>2];N[d+24>>2]=N[e+24>>2];N[d+28>>2]=N[e+28>>2];N[d+32>>2]=N[e+32>>2];N[d+36>>2]=N[e+36>>2];N[d+40>>2]=N[e+40>>2];N[d+44>>2]=N[e+44>>2];N[d+48>>2]=N[e+48>>2];N[d+52>>2]=N[e+52>>2];N[d+56>>2]=N[e+56>>2];N[d+60>>2]=N[e+60>>2];d=d+76|0;h=h+1|0;if((h|0)>2]){continue}break}}Zi[J[J[c>>2]+20>>2]](c,g,83835,1497453121,J[g+8>>2])}return 83802}function hka(a){a=a|0;var b=0,c=0,d=0,e=0,f=0,g=0;f=Ui-16|0;Ui=f;e=J[a>>2];a=J[a+4>>2];if(K[269788]){Np(J[e+48>>2],257,a)}a:{b=J[e>>2];d=J[e+4>>2];if((b|0)!=(d|0)){while(1){g=(c<<2)+b|0;if((a|0)==J[g>>2]){J[g>>2]=J[d-4>>2];d=J[e+4>>2]-4|0;J[e+4>>2]=d;b=J[e>>2];if(d>>>0>>0){break a}}c=c+1|0;if(c>>>0>2>>>0){continue}break}}b=J[a+36>>2];c=J[a+32>>2];b:{if((b|0)==(c|0)){break b}J[f>>2]=b-c>>2;dj(3,88458,119925,f);b=J[a+32>>2];e=J[a+36>>2];if((b|0)==(e|0)){break b}c=0;while(1){d=J[(c<<2)+b>>2];if(d){c:{if(H[d+36|0]&1){break c}b=J[d+24>>2];if(!b){break c}cj(b)}cj(d);e=J[a+36>>2];b=J[a+32>>2]}c=c+1|0;if(c>>>0>2>>>0){continue}break}}zM(J[a+96>>2]);b=J[a+16>>2];d=J[a+20>>2];if((b|0)!=(d|0)){c=0;while(1){e=J[(c<<2)+b>>2];if(e){zr(e);d=J[a+20>>2];b=J[a+16>>2]}c=c+1|0;if(c>>>0>2>>>0){continue}break}}ll(J[a+48>>2]);Zi[J[79392]](J[a+52>>2]);Zi[J[79455]](J[a+88>>2],J[a+92>>2]);JB(J[a+464>>2]);d:{if(H[a+80|0]&1){break d}b=J[a+68>>2];if(!b){break d}cj(b)}e:{if(H[a+44|0]&1){break e}b=J[a+32>>2];if(!b){break e}cj(b)}f:{if(H[a+28|0]&1){break f}b=J[a+16>>2];if(!b){break f}cj(b)}g:{if(H[a+12|0]&1){break g}b=J[a>>2];if(!b){break g}cj(b)}cj(a);Ui=f+16|0;return 0}Z(12682,53895,540,43537);B()}function Rr(a,b,c,d,e,f){var g=0,h=0,i=0,j=0,k=0;a:{b:{switch(d|0){case 2:c=J[c>>2];b=b-4|0;d=J[b>>2];e=J[a>>2];if(M[(c+P(d,48)|0)+32>>2]>=M[(c+P(e,48)|0)+32>>2]){break a}J[a>>2]=d;J[b>>2]=e;return;case 0:case 1:break a;default:break b}}if((d|0)<=128){if((a|0)==(b|0)){break a}e=a+4|0;if((e|0)==(b|0)){break a}g=J[c>>2];d=a;while(1){h=e;i=J[d+4>>2];j=g+P(i,48)|0;c=J[d>>2];if(M[j+32>>2]>2]){f=e;while(1){c:{J[f>>2]=c;e=d;if((e|0)==(a|0)){e=a;break c}f=e;d=e-4|0;c=J[d>>2];if(M[j+32>>2]>2]){continue}}break}J[e>>2]=i}d=h;e=d+4|0;if((e|0)!=(b|0)){continue}break}break a}g=d>>>1|0;i=d-g|0;j=g<<2;h=j+a|0;d:{if((d|0)<=(f|0)){zF(a,h,c,g,e);f=b;b=e+j|0;zF(h,f,c,i,b);f=(d<<2)+e|0;c=J[c>>2];d=b;while(1){if((d|0)!=(f|0)){g=J[d>>2];i=J[(c+P(g,48)|0)+32>>2];j=J[e>>2];k=J[(c+P(j,48)|0)+32>>2];h=i>>>0>>0;J[a>>2]=h?g:j;d=(h<<2)+d|0;a=a+4|0;e=((i>>>0>=k>>>0)<<2)+e|0;if((b|0)!=(e|0)){continue}break d}break}if((b|0)==(e|0)){break a}while(1){J[a>>2]=J[e>>2];a=a+4|0;e=e+4|0;if((b|0)!=(e|0)){continue}break}break a}Rr(a,h,c,g,e,f);Rr(h,b,c,i,e,f);Mz(a,h,b,c,g,i,e,f);return}if((d|0)==(f|0)){break a}while(1){J[a>>2]=J[d>>2];a=a+4|0;d=d+4|0;if((f|0)!=(d|0)){continue}break}}}function PV(a,b,c,d,e){var f=0,g=0,h=0,i=0,j=0,k=0,l=0,m=0,n=0,o=0,p=0,q=0;g=Ui-32|0;Ui=g;a:{b:{i=J[e+8>>2];c:{if(i>>>0>J[a+16>>2]-J[a+20>>2]>>>0){a=tj(b,c);b=J[e+4>>2];c=J[e+8>>2];J[g>>2]=a;J[g+4>>2]=pxa(b,c,32);J[g+8>>2]=Yi;dj(4,96538,8851,g);break c}m=J[a>>2];f=m;n=a+4|0;j=J[n>>2];if((f|0)!=(j|0)){h=j-f>>2;while(1){l=h>>>1|0;k=(l<<2)+f|0;o=J[k>>2];p=k+4|0;q=f;f=J[o+12>>2];k=(c|0)==(f|0)&b>>>0>M[o+8>>2]|c>>>0>f>>>0;f=k?p:q;h=k?(l^-1)+h|0:l;if(h){continue}break}}h=J[e+4>>2];d:{if((f|0)==(j|0)){break d}f=J[f>>2];if((b|0)!=J[f+8>>2]|J[f+12>>2]!=(c|0)|(J[f+24>>2]&2147483647)!=(h|0)){break d}a=tj(b,c);b=J[f+24>>2];J[g+20>>2]=J[f+20>>2];J[g+16>>2]=a;J[g+24>>2]=b&2147483647;dj(4,96538,8803,g+16|0);break c}if(J[a+8>>2]==(j|0)){if(H[a+12|0]&1){break b}lj((j-m>>2)+16|0,4,a,a+8|0,n);i=J[e+8>>2];h=J[e+4>>2]}f=J[e>>2];e=nj(32);J[e+24>>2]=h&2147483647|d<<31;J[e+20>>2]=i;J[e+8>>2]=b;J[e+12>>2]=c;b=nj(i);J[e+16>>2]=b;hj(b,f,i);J[a+20>>2]=J[a+20>>2]+i;b=J[a+4>>2];if((b|0)==J[a+8>>2]){break a}J[a+4>>2]=b+4;J[b>>2]=e;b=J[a>>2];Bz(b,J[a+4>>2]-b>>2,4,595);a=(d&1?40:24)+a|0;b=J[a+4>>2];J[e+4>>2]=b;J[e>>2]=a;J[a+4>>2]=e;J[b>>2]=e}Ui=g+32|0;return}Z(151729,53895,501,2284);B()}Z(112520,53895,557,53220);B()}function zQ(a,b,c,d,e){var f=0,g=0,h=0,i=0,j=0,k=0,l=0,m=0;l=gy(e);f=J[b+324>>2];a:{if(!f){break a}b:{c:{if((e|0)==1){while(1){g=P(i,40);h=g+c|0;if(J[h+20>>2]==1){e=J[h>>2];f=b+g|0;g=J[h+4>>2];if((e|0)!=J[f>>2]|(g|0)!=J[f+4>>2]){break c}f=J[f+16>>2]-1|0;if(f>>>0<=6){f=J[(f<<2)+160504>>2]}else{f=0}Vp(l,e,g,f,lp(J[h+12>>2]),K[h+36|0]);m=1;f=J[b+324>>2]}i=i+1|0;if(i>>>0>>0){continue}break}break b}while(1){j=P(i,40);k=j+c|0;d:{if(J[k+20>>2]!=(e|0)){break d}g=J[k>>2];h=J[k+4>>2];e:{f:{g:{h:{i:{j:{j=b+j|0;switch(J[j+8>>2]-2|0){case 0:break f;case 1:break g;case 3:break h;case 5:break i;case 4:break j;default:break e}}if(J[78814]!=(g|0)|J[78815]!=(h|0)){break e}break d}if(J[78816]!=(g|0)|J[78817]!=(h|0)){break e}break d}if(J[78818]!=(g|0)|J[78819]!=(h|0)){break e}break d}if(J[78820]==(g|0)&J[78821]==(h|0)){break d}if(J[78822]!=(g|0)|J[78823]!=(h|0)){break e}break d}if(J[78812]==(g|0)&J[78813]==(h|0)){break d}}if(J[j>>2]!=(g|0)|J[j+4>>2]!=(h|0)){break c}f=J[j+16>>2]-1|0;if(f>>>0<=6){f=J[(f<<2)+160504>>2]}else{f=0}Vp(l,g,h,f,lp(J[k+12>>2]),K[k+36|0]);f=J[b+324>>2];m=1}i=i+1|0;if(i>>>0>>0){continue}break}break b}Z(53525,40609,633,46540);B()}if(!m){break a}J[d>>2]=Zi[J[79404]](a,l)}ll(l)}function bda(a,b,c,d,e){a=a|0;b=b|0;c=c|0;d=d|0;e=e|0;var f=0,g=0,h=0,i=0,j=0,k=0,l=0;f=Ui-16|0;Ui=f;l=J[J[a+8>>2]>>2];Tj(l);i=-18;a:{if((J[a+24>>2]&2147483647)>>>0<=b>>>0){break a}k=J[J[77376]+16>>2];J[f+8>>2]=0;J[f>>2]=0;J[f+4>>2]=0;i=b-((b>>>0)%(k>>>0)|0)|0;if(qF(J[J[a+8>>2]+8>>2],J[a+16>>2],J[a+20>>2],b,f)){while(1){b:{j=b-J[f+4>>2]|0;g=J[f+8>>2]-j|0;g=c>>>0>>0?c:g;hj(d+h|0,j+J[f>>2]|0,g);b=b+g|0;h=g+h|0;c=c-g|0;if(!c){break b}if(qF(J[J[a+8>>2]+8>>2],J[a+16>>2],J[a+20>>2],b,f)){continue}}break}c=b-((b>>>0)%(k>>>0)|0)|0}else{c=i}c:{d=c+((c|0)==(i|0)?k:0)|0;g=d>>>0<(J[a+24>>2]&2147483647)>>>0?d:0;d:{if(!qF(J[J[a+8>>2]+8>>2],J[a+16>>2],J[a+20>>2],g,f)){J[e>>2]=h;break d}d=J[f+4>>2];J[e>>2]=h;if((d|0)==(g|0)){break c}}d=b;b=J[a+24>>2];j=!h;i=j?d>>>0>=(b&2147483647)>>>0?-18:1:1;if((b|0)<0){break a}J[a+24>>2]=b|-2147483648;e=J[J[a+8>>2]+4>>2];h=J[a+12>>2];d=Ui-1024|0;Ui=d;b=nj(44);J[b>>2]=0;J[b+4>>2]=0;J[b+8>>2]=0;J[b+12>>2]=0;J[b+32>>2]=k;J[b+28>>2]=j?c:g;J[b+24>>2]=0;J[b+16>>2]=0;J[b+20>>2]=0;J[b+4>>2]=599;J[b+8>>2]=a;ip(h,d);J[b+40>>2]=Gk(d);J[b+36>>2]=Gk(h);Qp(J[e+8420>>2],596,597,e,b);Ui=d+1024|0;break a}i=h?1:(J[a+24>>2]&2147483647)>>>0<=b>>>0?-18:1}Lj(l);Ui=f+16|0;return i|0}function XH(a,b,c,d,e,f,g){var h=0,i=0,j=0;i=Ui-16|0;Ui=i;j=J[a>>2];a:{if(!j){h=-24832;break a}h=-24704;if(c>>>0>16){break a}b:{if(H[j+20|0]&1){h=c;break b}h=J[j+16>>2];if(h>>>0<=c>>>0){break b}h=-24832;break a}c:{if(J[j>>2]!=72){break c}if(!ZH(J[a+60>>2],b)){break c}h=-24832;break a}if(h){hj(a+40|0,b,h);J[a+56>>2]=h}h=-24832;if(!J[a>>2]){break a}J[a+36>>2]=0;h=qo(a,d,e,f,g);if(h){break a}b=0;c=J[a>>2];h=-24832;d:{if(!c){break d}e=J[g>>2]+f|0;d=i+12|0;J[d>>2]=0;e:{f:{f=J[c+4>>2];h=f-3|0;if(h>>>0<7&(95>>>h&1)|(J[c>>2]&-2)==72){break f}b=-24704;g:{switch(f-1|0){case 1:break g;case 0:break e;default:break f}}h:{b=J[a+8>>2];if((b|0)==1){f=J[a+12>>2];if(!f){break e}h=a+20|0;b=J[a+56>>2];if(!b){b=J[c+16>>2]}Zi[f|0](h,b,J[a+36>>2]);b=J[a+8>>2];c=J[a>>2];f=J[c+24>>2];break h}f=J[c+24>>2];h=J[a+36>>2];if((f|0)==(h|0)){break h}h=h|J[a+12>>2]?-25216:0;break d}b=Zi[J[J[c+28>>2]+8>>2]](J[a+60>>2],b,f,a+40|0,a+20|0,e)|0;if(b){break f}if(!J[a+8>>2]){b=J[a+16>>2];a=J[a>>2];if(!a){h=Zi[b|0](e,0,d)|0;break d}h=Zi[b|0](e,J[a+24>>2],d)|0;break d}a=J[a>>2];if(a){a=J[a+24>>2]}else{a=0}J[d>>2]=a;h=0;break d}h=b;break d}h=J[a+36>>2]?-25216:0}if(h){break a}J[g>>2]=J[g>>2]+J[i+12>>2];h=0}Ui=i+16|0;return h}function xw(a,b){var c=0,d=0,e=0;c=a+40|0;d=J[a>>2]&63;e=c+d|0;H[e|0]=128;e=e+1|0;a:{if(d>>>0<=55){ij(e,0,55-d|0);break a}ij(e,0,d^63);gs(a,c);J[c+48>>2]=0;J[c+52>>2]=0;J[c+40>>2]=0;J[c+44>>2]=0;J[c+32>>2]=0;J[c+36>>2]=0;J[c+24>>2]=0;J[c+28>>2]=0;J[c+16>>2]=0;J[c+20>>2]=0;J[c+8>>2]=0;J[c+12>>2]=0;J[c>>2]=0;J[c+4>>2]=0}d=J[a>>2];H[a+103|0]=d<<3;H[a+102|0]=d>>>5;H[a+101|0]=d>>>13;H[a+100|0]=d>>>21;e=J[a+4>>2];H[a+98|0]=e>>>5;H[a+97|0]=e>>>13;H[a+96|0]=e>>>21;H[a+99|0]=e<<3|d>>>29;gs(a,c);H[b|0]=K[a+11|0];H[b+1|0]=L[a+10>>1];H[b+2|0]=J[a+8>>2]>>>8;H[b+3|0]=J[a+8>>2];H[b+4|0]=K[a+15|0];H[b+5|0]=L[a+14>>1];H[b+6|0]=J[a+12>>2]>>>8;H[b+7|0]=J[a+12>>2];H[b+8|0]=K[a+19|0];H[b+9|0]=L[a+18>>1];H[b+10|0]=J[a+16>>2]>>>8;H[b+11|0]=J[a+16>>2];H[b+12|0]=K[a+23|0];H[b+13|0]=L[a+22>>1];H[b+14|0]=J[a+20>>2]>>>8;H[b+15|0]=J[a+20>>2];H[b+16|0]=K[a+27|0];H[b+17|0]=L[a+26>>1];H[b+18|0]=J[a+24>>2]>>>8;H[b+19|0]=J[a+24>>2];H[b+20|0]=K[a+31|0];H[b+21|0]=L[a+30>>1];H[b+22|0]=J[a+28>>2]>>>8;H[b+23|0]=J[a+28>>2];H[b+24|0]=K[a+35|0];H[b+25|0]=L[a+34>>1];H[b+26|0]=J[a+32>>2]>>>8;H[b+27|0]=J[a+32>>2];if(!J[a+104>>2]){H[b+28|0]=K[a+39|0];H[b+29|0]=L[a+38>>1];H[b+30|0]=J[a+36>>2]>>>8;H[b+31|0]=J[a+36>>2]}return 0}function cua(a,b,c,d,e){a=a|0;b=b|0;c=c|0;d=d|0;e=e|0;var f=0,g=0,h=0,i=0,j=0;f=Ui-160|0;Ui=f;g=J[a+12>>2];a:{if(!g){break a}h=J[c+192>>2];i=J[b+192>>2];J[e+4>>2]=g;J[f+152>>2]=1566444395;J[f+156>>2]=0;g=J[b+16>>2];J[f+32>>2]=J[b+12>>2];J[f+36>>2]=g;g=J[b+8>>2];J[f+24>>2]=J[b+4>>2];J[f+28>>2]=g;g=J[b+32>>2];J[f+48>>2]=J[b+28>>2];J[f+52>>2]=g;g=J[b+24>>2];J[f+40>>2]=J[b+20>>2];J[f+44>>2]=g;j=J[b+48>>2];g=f- -64|0;J[g>>2]=J[b+44>>2];J[g+4>>2]=j;g=J[b+40>>2];J[f+56>>2]=J[b+36>>2];J[f+60>>2]=g;g=J[b+64>>2];J[f+80>>2]=J[b+60>>2];J[f+84>>2]=g;g=J[b+56>>2];J[f+72>>2]=J[b+52>>2];J[f+76>>2]=g;b=J[c+16>>2];J[f+96>>2]=J[c+12>>2];J[f+100>>2]=b;b=J[c+8>>2];J[f+88>>2]=J[c+4>>2];J[f+92>>2]=b;b=J[c+32>>2];J[f+112>>2]=J[c+28>>2];J[f+116>>2]=b;b=J[c+24>>2];J[f+104>>2]=J[c+20>>2];J[f+108>>2]=b;b=J[c+48>>2];J[f+128>>2]=J[c+44>>2];J[f+132>>2]=b;b=J[c+40>>2];J[f+120>>2]=J[c+36>>2];J[f+124>>2]=b;b=J[c+64>>2];J[f+144>>2]=J[c+60>>2];J[f+148>>2]=b;b=J[c+56>>2];J[f+136>>2]=J[c+52>>2];J[f+140>>2]=b;b=f+12|0;J[b+8>>2]=h;J[b+4>>2]=i;J[b>>2]=245320;dU(b,f+24|0,e,J[d+20>>2],0);if(K[a+8|0]!=1){break a}a=J[e+4>>2];if(!J[a+1116>>2]){break a}b=a;a=J[a+1108>>2]==J[e+136>>2];Qq(b,(a?8:72)+e|0,(a?72:8)+e|0)}Ui=f+160|0}function Aua(a,b){a=a|0;b=b|0;var c=Q(0),d=0,e=Q(0),f=Q(0),g=Q(0),h=Q(0),i=Q(0),j=Q(0),k=Q(0),l=Q(0),m=Q(0),n=Q(0),o=Q(0),p=Q(0),q=Q(0),r=Q(0),s=Q(0),t=0,u=Q(0),v=Q(0);q=N[a+160>>2];j=N[a+156>>2];r=N[a+168>>2];s=N[a+164>>2];c=N[a+116>>2];f=N[a+192>>2];d=J[b+28>>2];t=d+P(J[a+136>>2],12)|0;g=N[t+8>>2];h=N[a+172>>2];l=N[t>>2];d=d+P(J[a+132>>2],12)|0;m=N[d>>2];k=N[t+4>>2];n=N[d+4>>2];o=N[a+176>>2];i=N[a+188>>2];p=N[d+8>>2];e=Q(Q(Q(c*N[a+220>>2])+Q(Q(Q(Q(f*g)+Q(Q(h*Q(l-m))+Q(Q(k-n)*o)))-Q(i*p))+N[a+216>>2]))*Q(-N[a+212>>2]));N[a+116>>2]=c+e;c=Q(N[b>>2]*N[a+120>>2]);u=Q(-c);v=N[a+112>>2];f=Q(g+Q(r*Q(f*e)));g=Q(p-Q(s*Q(i*e)));i=Q(v-Q(N[a+208>>2]*Q(Q(f-g)-N[a+124>>2])));c=c>i?i:c;c=c>2]=c;i=N[a+200>>2];c=Q(c-v);f=Q(Q(r*c)+f);p=N[a+180>>2];h=Q(h*e);l=Q(l+Q(q*h));h=Q(m-Q(j*h));e=Q(o*e);m=Q(k+Q(q*e));k=Q(n-Q(j*e));n=N[a+184>>2];o=N[a+196>>2];c=Q(g-Q(s*c));e=Q(Q(Q(Q(i*f)+Q(Q(p*Q(l-h))+Q(Q(m-k)*n)))-Q(o*c))*Q(-N[a+204>>2]));N[a+108>>2]=N[a+108>>2]+e;g=Q(n*e);N[d+4>>2]=k-Q(j*g);k=j;j=Q(p*e);N[d>>2]=h-Q(k*j);d=J[b+28>>2];N[(d+P(J[a+132>>2],12)|0)+8>>2]=c-Q(s*Q(o*e));d=d+P(J[a+136>>2],12)|0;N[d+4>>2]=m+Q(q*g);N[d>>2]=l+Q(q*j);N[(J[b+28>>2]+P(J[a+136>>2],12)|0)+8>>2]=Q(r*Q(i*e))+f}function zia(a){a=a|0;var b=0,c=0,d=0,e=0,f=0,g=Q(0),h=0,i=0,j=Q(0),k=0,l=0,m=0;f=J[a+4>>2];d=J[f+32>>2];c=J[J[a+24>>2]>>2];if(c>>>0>2]-d>>3>>>0){d=J[d+(c<<3)>>2];b=J[f+16>>2];if(d>>>0<(J[f+20>>2]-b|0)/20>>>0){a:{b=b+P(d,20)|0;d=J[a+16>>2];e=J[a+20>>2];if((d|0)==J[75830]&(e|0)==J[75831]){return AD(J[J[J[a+8>>2]+80>>2]>>2],a+32|0,303280,2,b+4|0)|0}c=0;b:{if((d|0)==J[75824]&(e|0)==J[75825]){break b}c=1;if((d|0)==J[75826]&(e|0)==J[75827]){break b}if((d|0)!=J[75828]|(e|0)!=J[75829]){return-1}c=2}d=c;if(J[a+32>>2]){return-4}l=J[a+8>>2];g=Q(O[a+40>>3]);c=Ui-16|0;Ui=c;a=-1;c:{d:{if(d>>>0>2){break d}N[b+J[(d<<2)+159352>>2]>>2]=g;e=J[f+4>>2];h=J[f>>2];if((e|0)!=(h|0)){m=J[b>>2];b=(e-h|0)/96|0;h=b>>>0<=1?1:b;while(1){b=J[f>>2];if((J[f+4>>2]-b|0)/96>>>0<=i>>>0){break a}e:{e=b+P(i,96)|0;k=J[e+4>>2];if(!k){break e}b=J[e>>2];if((m|0)!=(b|0)|J[e+72>>2]!=(l|0)){break e}f:{g:{switch(d|0){case 0:j=Q(g*N[b+12>>2]);break f;case 1:j=Q(g+N[b+16>>2]);break f;case 2:break g;default:break d}}j=Q(g*N[b+20>>2])}J[c+12>>2]=0;J[c+4>>2]=0;J[c+8>>2]=0;N[c>>2]=j;if(!Cs(k,d,c)){break e}a=-8;break d}i=i+1|0;if((h|0)!=(i|0)){continue}break}}a=0}Ui=c+16|0;break c}return a|0}}}Z(145396,53895,487,84789);B()}function Vka(a){a=a|0;var b=0,c=0,d=0,e=0,f=0,g=0,h=0,i=0,j=0;h=J[a>>2];d=nj(36);J[d>>2]=0;J[d+4>>2]=0;J[d+32>>2]=0;J[d+24>>2]=0;J[d+28>>2]=0;J[d+16>>2]=0;J[d+20>>2]=0;g=d+8|0;J[g>>2]=0;J[g+4>>2]=0;c=J[a+16>>2];b=J[h+8>>2];e=b>>>0>c>>>0?c:b;lj(e,28,d,g,d+4|0);a:{b:{b=J[d>>2];if(e>>>0<=(J[g>>2]-b|0)/28>>>0){J[d+4>>2]=b+P(e,28);b=J[d+20>>2];if(b>>>0>e>>>0){break b}i=J[d+16>>2];c=sj(e<<2);J[d+16>>2]=c;f=hj(c,i,b<<2);J[d+20>>2]=e;c:{if(b>>>0>=e>>>0){break c}c=b;g=e-b&7;if(g){while(1){J[(c<<2)+f>>2]=c;c=c+1|0;j=j+1|0;if((g|0)!=(j|0)){continue}break}}if(b-e>>>0>4294967288){break c}while(1){J[(c<<2)+f>>2]=c;b=c+1|0;J[(b<<2)+f>>2]=b;b=c+2|0;J[(b<<2)+f>>2]=b;b=c+3|0;J[(b<<2)+f>>2]=b;b=c+4|0;J[(b<<2)+f>>2]=b;b=c+5|0;J[(b<<2)+f>>2]=b;b=c+6|0;J[(b<<2)+f>>2]=b;b=c+7|0;J[(b<<2)+f>>2]=b;c=c+8|0;if((e|0)!=(c|0)){continue}break}}cj(i);J[d+32>>2]=J[h>>2];if(e){c=0;while(1){b=J[d>>2];if((J[d+4>>2]-b|0)/28>>>0<=c>>>0){break a}b=b+P(c,28)|0;J[b+8>>2]=0;J[b+12>>2]=0;J[b>>2]=0;J[b+4>>2]=0;J[b+24>>2]=0;J[b+16>>2]=-2;J[b+20>>2]=-2;J[b+12>>2]=-2;c=c+1|0;if((e|0)!=(c|0)){continue}break}}J[J[a+12>>2]>>2]=d;return 0}Z(144782,53895,514,59583);B()}Z(2627,54340,112,2284);B()}Z(145396,53895,487,84789);B()}function T$(a){a=a|0;var b=0,c=0,d=0,e=0,f=0,g=0,h=0;b=Ui-288|0;Ui=b;e=Ij(a,-10003,b+12|0);g=Ij(a,-10004,0);J[b+16>>2]=e;J[b+24>>2]=a;c=J[b+12>>2];J[b+20>>2]=c+e;f=c;c=sl(a,-10005);a:{if((f|0)<(c|0)){break a}c=c+e|0;h=b+32|0;while(1){J[b+28>>2]=0;f=Gn(b+16|0,c,g);if(f){d=J[a+8>>2];J[d+8>>2]=3;O[d>>3]=(f-e|0)+((c|0)==(f|0))|0;J[a+8>>2]=J[a+8>>2]+16;ms(a,-10005);d=J[b+28>>2];a=c?d?d:1:d;Gp(J[b+24>>2],a,22490);if((a|0)<=0){break a}b:{if(J[b+28>>2]<=0){mj(J[b+24>>2],c,f-c|0);break b}c:{d:{e:{d=J[b+36>>2];switch(d+2|0){case 1:break d;case 0:break e;default:break c}}c=(J[b+32>>2]-J[b+16>>2]|0)+1|0;d=J[b+24>>2];e=J[d+8>>2];J[e+8>>2]=3;O[e>>3]=c|0;J[d+8>>2]=J[d+8>>2]+16;break b}fj(J[b+24>>2],63668,0)}mj(J[b+24>>2],J[b+32>>2],d)}d=1;if((a|0)==1){break a}while(1){f:{if(J[b+28>>2]<=(d|0)){fj(J[b+24>>2],5334,0);break f}g:{h:{i:{c=(d<<3)+h|0;e=J[c+4>>2];switch(e+2|0){case 1:break h;case 0:break i;default:break g}}e=(J[c>>2]-J[b+16>>2]|0)+1|0;c=J[b+24>>2];f=J[c+8>>2];J[f+8>>2]=3;O[f>>3]=e|0;J[c+8>>2]=J[c+8>>2]+16;break f}fj(J[b+24>>2],63668,0)}mj(J[b+24>>2],J[c>>2],e)}d=d+1|0;if((a|0)!=(d|0)){continue}break}d=a;break a}c=c+1|0;if(c>>>0<=M[b+20>>2]){continue}break}}Ui=b+288|0;return d|0}function Lva(a,b){a=a|0;b=b|0;var c=Q(0),d=Q(0),e=0,f=Q(0),g=Q(0),h=0,i=Q(0),j=Q(0),k=Q(0),l=Q(0),m=Q(0),n=Q(0),o=Q(0),p=Q(0),q=Q(0),r=Q(0),s=Q(0),t=Q(0),u=Q(0),v=Q(0),w=Q(0),x=Q(0);h=J[b+28>>2];e=h+P(J[a+104>>2],12)|0;m=N[e>>2];h=h+P(J[a+108>>2],12)|0;n=N[h>>2];o=N[e+4>>2];p=N[h+4>>2];q=N[a+148>>2];r=N[a+144>>2];s=N[a+156>>2];t=N[a+152>>2];g=N[b>>2];c=Q(g*N[a+100>>2]);d=Q(-c);i=N[a+92>>2];j=N[h+8>>2];k=N[e+8>>2];l=Q(i-Q(Q(j-k)*N[a+176>>2]));c=c>l?l:c;c=c>2]=c;l=N[a+84>>2];u=N[a+116>>2];c=Q(c-i);i=Q(k-Q(t*c));k=N[a+124>>2];j=Q(j+Q(s*c));d=Q(Q(u*i)+Q(Q(n-Q(k*j))-m));v=N[a+120>>2];w=N[a+112>>2];f=Q(Q(Q(p+Q(v*j))-o)-Q(w*i));c=Q(l-Q(Q(N[a+160>>2]*d)+Q(N[a+168>>2]*f)));N[a+84>>2]=c;x=N[a+88>>2];d=Q(x-Q(Q(N[a+164>>2]*d)+Q(N[a+172>>2]*f)));N[a+88>>2]=d;f=Q(Q(c*c)+Q(d*d));g=Q(g*N[a+96>>2]);if(f>Q(g*g)){f=Q(Y(f));if(!(f>2]=d;c=Q(g*c);N[a+84>>2]=c}d=Q(d-x);N[e+4>>2]=o-Q(r*d);c=Q(c-l);N[e>>2]=m-Q(r*c);e=J[b+28>>2];N[(e+P(J[a+104>>2],12)|0)+8>>2]=Q(Q(-t)*Q(Q(w*d)-Q(u*c)))+i;e=e+P(J[a+108>>2],12)|0;N[e+4>>2]=p+Q(q*d);N[e>>2]=n+Q(q*c);N[(J[b+28>>2]+P(J[a+108>>2],12)|0)+8>>2]=Q(s*Q(Q(v*d)-Q(k*c)))+j}function eua(a,b,c,d,e){a=a|0;b=b|0;c=c|0;d=d|0;e=e|0;var f=0,g=0,h=0,i=0,j=0,k=0,l=0,m=0,n=0,o=0;g=J[c+4>>2];J[b+16>>2]=J[c>>2];J[b+20>>2]=g;g=J[c+12>>2];J[b+24>>2]=J[c+8>>2];J[b+28>>2]=g;g=J[d+4>>2];J[b+32>>2]=J[d>>2];J[b+36>>2]=g;g=J[d+12>>2];J[b+40>>2]=J[d+8>>2];J[b+44>>2]=g;k=L[b+12>>1];g=Ui-16|0;Ui=g;j=J[a+60>>2];kz(a,g+10|0,c,0);kz(a,g+4|0,d,1);f=J[a+68>>2];k=j+(k<<6)|0;j=L[k+48>>1];h=f+(j<<2)|0;l=L[h>>1];i=L[k+54>>1];f=f+(i<<2)|0;m=L[f>>1];o=L[g+4>>1];n=h;h=L[g+10>>1];I[n>>1]=h;I[f>>1]=L[g+4>>1];f=h-l|0;if((f|0)<0){iz(a,0,j)}h=o-m|0;if((h|0)>0){RE(a,0,i)}if((f|0)>0){QE(a,0,j,e)}if((h|0)<0){jz(a,0,i,e)}f=J[a+72>>2];j=L[k+50>>1];h=f+(j<<2)|0;l=L[h>>1];i=L[k+56>>1];f=f+(i<<2)|0;m=L[f>>1];o=L[g+6>>1];n=h;h=L[g+12>>1];I[n>>1]=h;I[f>>1]=L[g+6>>1];f=h-l|0;if((f|0)<0){iz(a,1,j)}h=o-m|0;if((h|0)>0){RE(a,1,i)}if((f|0)>0){QE(a,1,j,e)}if((h|0)<0){jz(a,1,i,e)}i=J[a+76>>2];j=L[k+52>>1];f=i+(j<<2)|0;h=L[f>>1];k=L[k+58>>1];i=i+(k<<2)|0;l=L[i>>1];m=L[g+8>>1];n=f;f=L[g+14>>1];I[n>>1]=f;I[i>>1]=L[g+8>>1];i=f-h|0;if((i|0)<0){iz(a,2,j)}f=m-l|0;if((f|0)>0){RE(a,2,k)}if((i|0)>0){QE(a,2,j,e)}if((f|0)<0){jz(a,2,k,e)}Ui=g+16|0;a=J[a+108>>2];if(a){Zi[J[J[a>>2]+16>>2]](a,J[b+60>>2],c,d,e)}}function a8(a){a=a|0;var b=0,c=0,d=0,e=0,f=0,g=0,h=0,i=0,j=0;b=Ui-176|0;Ui=b;f=pj(b+156|0,a,0,37682,861);Bj(a);e=qj(a,-1,J[219396],139183);gj(a,-2);Qj(a,1,b+152|0);d=mk(a,2);c=Yi;g=c;c=Ws(d,c);a:{if(c){if(K[c+12|0]==255){if(J[c+8>>2]==1){a=Au(a,3);if(a){d=J[c+8>>2];c=J[b+152>>2];N[b+80>>2]=N[a>>2];N[b+84>>2]=N[a+4>>2];N[b+88>>2]=N[a+8>>2];N[b+92>>2]=N[a+12>>2];Pn(e,c,d,b+80|0);a=0;break a}J[b+16>>2]=tj(d,g);a=Jj(f,16720,b+16|0);break a}if(un(a,3)){a=un(a,3);Pn(e,J[b+152>>2],J[c+8>>2],a);a=0;break a}if(Gm(a,3)){a=Gm(a,3);d=b+80|0;fm(d,e,J[b+152>>2],J[c+8>>2]);N[b+80>>2]=N[a>>2];N[b+84>>2]=N[a+4>>2];N[b+88>>2]=N[a+8>>2];Pn(e,J[b+152>>2],J[c+8>>2],d);a=0;break a}J[b+32>>2]=tj(d,g);a=Jj(f,108856,b+32|0);break a}if(!kk(a,3)){J[b+48>>2]=tj(d,g);a=Jj(f,19590,b+48|0);break a}d=b+80|0;fm(d,e,J[b+152>>2],J[c+8>>2]);j=ok(a,3);N[d+(K[c+12|0]<<2)>>2]=j;Pn(e,J[b+152>>2],J[c+8>>2],d);a=0;break a}i=ij(b+80|0,0,72);c=b- -64|0;J[c>>2]=0;H[c+8|0]=K[c+8|0]&254;h=it(a,3,i);if(J[a+8>>2]-J[a+12>>2]>>4>=4){a=Iy(a,4,c,0);if(a){break a}}if(!h){a=0;h=J[e+432>>2];if(h){c=Zi[h|0](J[e+436>>2],e,J[b+152>>2],d,g,i,c)|0}else{c=0}if(c){break a}}J[b>>2]=tj(d,g);a=Jj(f,71038,b)}oj(f);Ui=b+176|0;return a|0}function Zga(a){a=a|0;var b=0,c=0,d=0,e=0,f=0,g=0;b=Ui-128|0;Ui=b;f=J[a+8>>2]-J[a+12>>2]>>4;Oj(a,1,4);J[b+124>>2]=0;d=Ij(a,1,b+124|0);a:{if((f|0)<2){break a}if((kj(a,2)|0)==5){uj(a,2);rj(a,-1,83991);if(kj(a,-1)){c=gp(a,-1)}gj(a,-2);rj(a,-1,3472);if(kj(a,-1)){e=gp(a,-1)}gj(a,-2);gj(a,-2);break a}c=gp(a,2)}J[b+112>>2]=0;J[b+116>>2]=0;J[b+104>>2]=0;J[b+108>>2]=0;c=TM(d,J[b+124>>2],c,e,b+104|0);b:{if(!c){c=J[b+112>>2];c:{if(c>>>0<=3){c=J[(c<<2)+160372>>2];break c}Qx(b+104|0);J[b+16>>2]=J[b+112>>2];fj(a,78294,b+16|0);c=0}Fj(a,0,0);d=J[b+116>>2];J[b+8>>2]=J[b+112>>2];J[b+12>>2]=d;d=J[b+108>>2];J[b>>2]=J[b+104>>2];J[b+4>>2]=d;$P(a,b);d=J[b+108>>2];e=J[b+104>>2];mj(a,34859,6);g=bj(83428);J[b+96>>2]=0;J[b+100>>2]=0;H[b+92|0]=c;J[b+88>>2]=0;J[b+80>>2]=g;J[b+84>>2]=Yi;J[b+76>>2]=0;d=P(d,e);Nq(d,b+80|0,1,b+76|0);J[b+72>>2]=0;J[b+68>>2]=0;on(J[b+76>>2],b+72|0,b+68|0);hj(J[b+72>>2],J[b+116>>2],P(c,d));d=J[b+76>>2];c=b+40|0;I[c+16>>1]=65535;J[c+8>>2]=0;J[c+12>>2]=0;J[c+4>>2]=1;J[c>>2]=d;Gs(a,c);Xj(a,-3);Qx(b+104|0);break b}J[b+32>>2]=c;dj(3,88458,141577,b+32|0);c=J[a+8>>2];J[c+8>>2]=0;J[a+8>>2]=c+16}if((f+1|0)!=J[a+8>>2]-J[a+12>>2]>>4){Z(143334,42046,328,35326);B()}Ui=b+128|0;return 1}function aZ(a){a=a|0;var b=0,c=0,d=0,e=0,f=0,g=0,h=0,i=0,j=0,k=0,l=0,m=0;c=Ui-48|0;Ui=c;d=Tn(a,1106);J[c+40>>2]=0;i=2;j=Aj(a,2,c+44|0);b=Aj(a,3,0);e=Aj(a,4,0);J[c+28>>2]=0;J[c+32>>2]=0;J[c+36>>2]=0;J[c+20>>2]=0;J[c+24>>2]=0;f=J[d+32>>2];J[c+16>>2]=2;J[c+12>>2]=f;J[c+8>>2]=1028;b=pa(b|0,e|0,c+8|0,c+4|0)|0;a:{if(b){d=J[a+8>>2];J[d+8>>2]=0;J[a+8>>2]=d+16;xj(a,ru(b));break a}f=d+8|0;Po(f);k=J[c+44>>2];b=J[c+4>>2];l=J[b+20>>2];m=J[b+16>>2];e=Ui-16|0;Ui=e;J[c+40>>2]=0;b=-2;g=J[d>>2];b:{if((g|0)==-1){break b}c:{b=Pt(g,j,k,l,m);if((b|0)<0){while(1){b=J[245744];d:{if((b|0)!=6){if((b|0)==27){break d}if((b|0)!=64){break b}b=-2;break b}b=J[d>>2];J[e+12>>2]=4;J[e+8>>2]=b;if(O[f>>3]==0){break c}while(1){g=e+8|0;h=Wq(f)*1e3;e:{if(R(h)<2147483648){b=~~h;break e}b=-2147483648}b=_q(g,1,(b|0)<0?-1:b);if((b|0)!=-1){if(b){break d}break c}b=J[245744];if((b|0)==27){continue}break}if(b){break b}}b=Pt(J[d>>2],j,k,l,m);if((b|0)<0){continue}break}}J[c+40>>2]=b;b=0;break b}b=-1}Ui=e+16|0;Ip(J[c+4>>2]);if(b){d=J[a+8>>2];J[d+8>>2]=0;J[a+8>>2]=d+16;if((b|0)==-2){xj(a,74280);break a}xj(a,Tm(b));break a}h=+M[c+40>>2];b=J[a+8>>2];J[b+8>>2]=3;O[b>>3]=h;J[a+8>>2]=J[a+8>>2]+16;i=1}Ui=c+48|0;return i|0}function W8(a){a=a|0;var b=0,c=0,d=0,e=Q(0),f=Q(0),g=Q(0),h=Q(0),i=0,j=0,k=0,l=0,m=Q(0),n=Q(0),o=Q(0),p=0,q=0,r=0,s=0;j=Ui-16|0;Ui=j;Qj(a,1,j+12|0);p=wj(a,2);q=wj(a,3);Bj(a);c=qj(a,-1,J[219396],139183);gj(a,-2);g=Q(p);h=Q(q);b=Ui-128|0;Ui=b;a:{b:{c:{k=J[j+12>>2];l=k&65535;i=l;d=J[c+32>>2];if(i>>>0<(J[c+36>>2]-d|0)/672>>>0){i=d+P(i,672)|0;if(L[i+648>>1]!=(k>>>16|0)){break c}if((l|0)!=L[i+650>>1]){break b}d=J[c+12>>2];k=J[d+20>>2];l=J[d+28>>2];r=J[d+24>>2];d=J[d+32>>2];s=c;c=b- -64|0;Xs(s,i,7,c);J[b+104>>2]=1065353216;Ft(b,c);n=N[b+36>>2];e=Q(g*Q(Q(k>>>0)/Q(l>>>0)));m=Q(h*Q(Q(r>>>0)/Q(d>>>0)));g=Q(Q(Q(n*Q(0))+Q(Q(N[b+4>>2]*e)+Q(m*N[b+20>>2])))+N[b+52>>2]);o=N[b+32>>2];h=Q(Q(Q(o*Q(0))+Q(Q(N[b>>2]*e)+Q(m*N[b+16>>2])))+N[b+48>>2]);f=N[b+40>>2];e=Q(Q(Q(f*Q(0))+Q(Q(N[b+8>>2]*e)+Q(m*N[b+24>>2])))+N[b+56>>2]);d:{if((e>=Q(0)?e:Q(-e))>Q(9999999747378752e-20)){c=0;if((f>=Q(0)?f:Q(-f))=Q(0)&(g<=Q(1)&g>=Q(0))}Ui=b+128|0;break a}Z(145396,53895,487,84789);B()}Z(47372,40876,188,69601);B()}Z(5388,40876,189,69601);B()}b=J[a+8>>2];J[b+8>>2]=1;J[b>>2]=(c|0)!=0;J[a+8>>2]=J[a+8>>2]+16;Ui=j+16|0;return 1}function Vca(a){a=a|0;var b=0,c=0,d=0,e=Q(0),f=Q(0),g=0,h=Q(0),i=0,j=Q(0),k=0;b=Ui-112|0;Ui=b;k=pj(b+92|0,a,1,42276,503);i=J[a+8>>2]-J[a+12>>2]>>4;pk(a);J[b+80>>2]=0;J[b+84>>2]=0;J[b+72>>2]=0;J[b+76>>2]=0;c=b- -64|0;J[c>>2]=0;J[c+4>>2]=0;J[b+56>>2]=0;J[b+60>>2]=0;J[b+48>>2]=0;J[b+52>>2]=0;J[b+40>>2]=0;J[b+44>>2]=0;J[b+32>>2]=0;J[b+36>>2]=0;J[b+24>>2]=0;J[b+28>>2]=0;Sk(a,1,b+56|0,b+24|0);a:{if((i|0)<=1){g=-1;f=Q(1);d=J[245446];c=J[d+33928>>2];c=(c|0)!=-1?c:0;J[d+33928>>2]=c+1;h=Q(1);break a}b:{if(!kj(a,2)){h=Q(1);f=Q(1);break b}Oj(a,2,5);uj(a,2);rj(a,-1,4147);if(kj(a,-1)){j=Q(wj(a,-1))}else{j=Q(0)}gj(a,-2);rj(a,-1,47905);if(kj(a,-1)){e=Q(wj(a,-1))}else{e=Q(1)}h=e;gj(a,-2);rj(a,-1,48239);if(kj(a,-1)){e=Q(wj(a,-1))}else{e=Q(0)}gj(a,-2);rj(a,-1,75640);if(kj(a,-1)){f=Q(wj(a,-1))}else{f=Q(1)}gj(a,-2);gj(a,-2)}g=-1;d=J[245446];c=J[d+33928>>2];c=(c|0)!=-1?c:0;J[d+33928>>2]=c+1;if((i|0)==2){break a}if((kj(a,3)|0)!=6){break a}uj(a,3);g=Cu(a)+2|0}J[b+20>>2]=c;N[b+16>>2]=f;N[b+12>>2]=e;N[b+8>>2]=h;N[b+4>>2]=j;d=J[56938];Jk(b+24|0,b+56|0,J[d+8>>2],J[d+12>>2],0,g,d,b+4|0,20,0);d=J[b+20>>2];c=J[a+8>>2];J[c+8>>2]=3;O[c>>3]=d>>>0;J[a+8>>2]=J[a+8>>2]+16;oj(k);Ui=b+112|0;return 1}function Esa(a,b,c,d){a=a|0;b=b|0;c=c|0;d=d|0;var e=0,f=Q(0),g=0;c=Ui-768|0;Ui=c;J[c+716>>2]=0;J[c+720>>2]=0;J[c+736>>2]=0;J[c+740>>2]=0;J[c+756>>2]=0;J[c+760>>2]=0;J[c+764>>2]=0;J[c+708>>2]=0;J[c+712>>2]=0;J[c+704>>2]=1065353216;J[c+728>>2]=0;J[c+732>>2]=0;J[c+724>>2]=1065353216;J[c+748>>2]=0;J[c+752>>2]=0;J[c+744>>2]=1065353216;J[c+696>>2]=0;J[c+700>>2]=0;J[c+528>>2]=244680;N[c+692>>2]=N[a+200>>2];f=N[a+196>>2];g=c+476|0;d=g;J[d+4>>2]=35;J[d+8>>2]=0;J[d>>2]=246356;J[d+44>>2]=1025758986;J[d+20>>2]=1065353216;J[d+24>>2]=0;J[d+12>>2]=1065353216;J[d+16>>2]=1065353216;J[d>>2]=246264;N[d+44>>2]=f;N[d+28>>2]=f;J[d+4>>2]=8;J[d>>2]=246688;d=Dv(c+376|0);J[d+4>>2]=1;J[d>>2]=245112;e=J[b+12>>2];J[d+60>>2]=J[b+8>>2];J[d+64>>2]=e;e=J[b+4>>2];J[d+52>>2]=J[b>>2];J[d+56>>2]=e;e=J[b+20>>2];J[d+68>>2]=J[b+16>>2];J[d+72>>2]=e;e=J[b+28>>2];J[d+76>>2]=J[b+24>>2];J[d+80>>2]=e;e=J[b+36>>2];J[d+84>>2]=J[b+32>>2];J[d+88>>2]=e;e=J[b+44>>2];J[d+92>>2]=J[b+40>>2];J[d+96>>2]=e;H[c+348|0]=0;J[c+324>>2]=953267991;J[c+12>>2]=d;J[c+8>>2]=g;J[c+4>>2]=c+16;J[c>>2]=246988;b=c+704|0;a:{if(!FE(c,a+4|0,a+68|0,b,b,c+528|0)){break a}f=N[c+692>>2];if(!(f>2])){break a}N[a+200>>2]=f}Ui=c+768|0}function eS(a,b,c){var d=0,e=0,f=0,g=0,h=0,i=0;g=Ui-32|0;Ui=g;a:{b:{c:{e=J[b+4>>2];switch((e>>>28|0)-1|0){case 0:break b;case 1:break c;default:break a}}J[g>>2]=J[b>>2];dj(3,94457,126115,g);break a}d:{d=e&264241152;if((d|0)!=50331648){if((d|0)!=37748736){break d}f=J[b+16>>2];if(!f){break d}d=yj(f);e:{if((J[b+4>>2]&264241152)==37748736){e=kE(a,d+1|0);if(!K[c+12|0]){c=J[c+4>>2];b=J[b+12>>2];i=d;d=hj(e,f,d);H[i+d|0]=0;b=b+c|0;if(H[a+48|0]&1){e=d-J[a+32>>2]|0}J[b>>2]=e}break e}Z(94022,41995,288,56555);B()}break a}if(!J[b+16>>2]){break d}dj(3,94457,73336,0);break a}e=e>>>22&63;if((e|0)==11){e=g+16|0;f:{g:{h:{f=J[b+8>>2];if(f){d=J[c>>2];h=K[d+24|0];if(!h){break g}i=J[d+20>>2];d=0;break h}Z(113672,41995,184,68575);B()}while(1){if((P(d,24)+i|0)!=(b|0)){d=d+1|0;if((h|0)!=(d|0)){continue}break g}break}d=J[c+4>>2]+J[b+12>>2]|0;h=J[f+16>>2];H[e+12|0]=K[c+12|0];J[e+4>>2]=d;J[e>>2]=f;J[e+8>>2]=d+h;break f}Z(71318,41995,196,68575);B()}c=J[b+8>>2];if(!K[c+24|0]){break a}b=0;while(1){e=J[c+20>>2]+P(b,24)|0;i:{if(K[e+20|0]&127){dj(3,94457,73380,0);break i}eS(a,e,g+16|0)}b=b+1|0;if(b>>>0>2];if(!a){break a}_p(c,b,a,jE(e))}Ui=g+32|0}function Bua(a,b){a=a|0;b=b|0;var c=Q(0),d=0,e=Q(0),f=Q(0),g=Q(0),h=Q(0),i=Q(0),j=Q(0),k=Q(0),l=Q(0),m=0,n=Q(0),o=Q(0),p=Q(0),q=Q(0),r=Q(0),s=Q(0),t=Q(0),u=Q(0),v=Q(0),w=Q(0),x=Q(0),y=Q(0),z=Q(0);l=N[a+144>>2];e=N[a+80>>2];m=J[b+24>>2];d=m+P(J[a+132>>2],12)|0;t=N[d+8>>2];c=Rj(t);h=N[a+140>>2];p=N[a+76>>2];g=Hj(t);i=N[a+152>>2];q=N[a+88>>2];m=m+P(J[a+136>>2],12)|0;u=N[m+8>>2];f=Rj(u);j=N[a+148>>2];r=N[a+84>>2];n=Hj(u);o=N[a+100>>2];k=N[a+104>>2];s=Q(Q(g*o)+Q(c*k));v=N[m>>2];w=N[d>>2];j=Q(r-j);i=Q(q-i);q=Q(Q(f*j)-Q(n*i));h=Q(p-h);e=Q(e-l);p=Q(Q(c*h)-Q(g*e));r=Q(Q(Q(v-w)+q)-p);l=Q(Q(c*o)-Q(g*k));o=N[m+4>>2];k=N[d+4>>2];i=Q(Q(n*j)+Q(f*i));h=Q(Q(g*h)+Q(c*e));j=Q(Q(Q(o-k)+i)-h);g=Q(Q(r*l)+Q(s*j));x=Q(-g);y=N[a+168>>2];c=N[a+200>>2];e=Q(Q(y*c)*c);z=N[a+164>>2];c=N[a+196>>2];f=N[a+156>>2];n=N[a+160>>2];c=Q(e+Q(Q(Q(z*c)*c)+Q(f+n)));c=c!=Q(0)?Q(x/c):Q(0);e=Q(s*c);N[d+4>>2]=k-Q(f*e);k=f;f=Q(l*c);N[d>>2]=w-Q(k*f);d=J[b+24>>2];N[(d+P(J[a+132>>2],12)|0)+8>>2]=t-Q(z*Q(Q(Q(Q(p+r)*s)-Q(Q(h+j)*l))*c));d=d+P(J[a+136>>2],12)|0;N[d+4>>2]=o+Q(n*e);N[d>>2]=v+Q(n*f);N[(J[b+24>>2]+P(J[a+136>>2],12)|0)+8>>2]=u+Q(y*Q(Q(Q(q*s)-Q(i*l))*c));return(g>Q(0)?g:x)<=Q(.004999999888241291)|0}function Kta(a,b,c){a=a|0;b=b|0;c=c|0;var d=0,e=Q(0),f=Q(0),g=Q(0),h=Q(0),i=Q(0),j=0,k=Q(0),l=Q(0),m=Q(0),n=Q(0),o=Q(0),p=Q(0),q=Q(0);d=Ui-16|0;Ui=d;J[a>>2]=0;J[a+4>>2]=0;J[a+8>>2]=0;J[a+12>>2]=0;e=N[c+8>>2];h=N[c>>2];f=N[c+4>>2];i=Q(Q(e*e)+Q(Q(h*h)+Q(f*f)));a:{if(i>2];l=N[c+((j+2|0)%3<<2)>>2];J[d+8>>2]=0;J[d+12>>2]=0;J[d>>2]=0;J[d+4>>2]=0;j=j<<2;N[j+d>>2]=N[c+j>>2];k=N[b+16>>2];m=N[d+4>>2];o=N[b+12>>2];p=N[d>>2];h=Q(-0xde0b6b000000000);n=Q(Q(l*Q(g*N[b+20>>2]))+N[d+8>>2]);f=Q(Zi[J[J[b>>2]+44>>2]](b));n=Q(n-Q(g*f));k=Q(Q(m+Q(l*Q(e*k)))-Q(e*f));m=Q(Q(p+Q(l*Q(i*o)))-Q(i*f));f=Q(Q(g*n)+Q(Q(i*m)+Q(e*k)));if(f>Q(-0xde0b6b000000000)){J[a+12>>2]=0;N[a+8>>2]=n;N[a+4>>2]=k;N[a>>2]=m;h=f}J[d+8>>2]=0;J[d+12>>2]=0;J[d>>2]=0;J[d+4>>2]=0;j=J[b+52>>2]<<2;N[j+d>>2]=-N[c+j>>2];f=N[b+12>>2];n=N[b+16>>2];k=N[d>>2];m=N[d+4>>2];o=h;p=g;q=Q(Q(l*Q(g*N[b+20>>2]))+N[d+8>>2]);h=Q(Zi[J[J[b>>2]+44>>2]](b));g=Q(q-Q(g*h));f=Q(Q(k+Q(l*Q(i*f)))-Q(i*h));k=e;e=Q(Q(m+Q(l*Q(e*n)))-Q(e*h));if(o>2]=0;N[a+8>>2]=g;N[a+4>>2]=e;N[a>>2]=f}Ui=d+16|0}function ega(a,b,c){a=a|0;b=b|0;c=c|0;var d=0,e=0,f=0,g=0;d=Ui-112|0;Ui=d;a:{if(H[a+54|0]&1){e=J[a+48>>2];N[d+16>>2]=N[a>>2];e=J[e+4>>2];g=J[e+100>>2];J[d+64>>2]=J[e+96>>2];J[d+68>>2]=g;e=L[a+52>>1];if(e){if(!(e&1)){while(1){f=f+1|0;g=e&2;e=(e&65534)>>>1|0;if(!g){continue}break}}f=(f<<3)+c|0;e=J[f>>2];f=J[f+4>>2]}else{e=0;f=0}J[d+72>>2]=e;J[d+76>>2]=f;N[d+32>>2]=N[a+16>>2];N[d+36>>2]=N[a+20>>2];N[d+40>>2]=N[a+24>>2];N[d+48>>2]=N[a+32>>2];N[d+52>>2]=N[a+36>>2];N[d+56>>2]=N[a+40>>2];J[d+80>>2]=K[b+44|0];a=J[c+128>>2];if(a){_s(a,J[58392],d+16|0);e=0;break a}c=J[b+36>>2];e=d+104|0;a=e;J[a>>2]=0;J[a+4>>2]=0;J[d+96>>2]=0;J[d+100>>2]=0;a=d+96|0;lj(80,1,a,e,a|4);Kq(d+16|0,J[58392],a);a=J[d+96>>2];e=Fy(J[58392],a,J[d+100>>2]-a|0,0,c,0,0);if(H[d+108|0]&1){break a}a=J[d+96>>2];if(!a){break a}cj(a);break a}J[d+96>>2]=K[b+44|0];a=J[c+128>>2];if(a){_s(a,J[58410],d+96|0);break a}c=J[b+36>>2];e=d+24|0;a=e;J[a>>2]=0;J[a+4>>2]=0;J[d+16>>2]=0;J[d+20>>2]=0;a=d+16|0;lj(4,1,a,e,a|4);Kq(d+96|0,J[58410],a);a=J[d+16>>2];e=Fy(J[58410],a,J[d+20>>2]-a|0,0,c,0,0);if(H[d+28|0]&1){break a}a=J[d+16>>2];if(!a){break a}cj(a)}cj(J[b+36>>2]);if(e){J[d>>2]=e;dj(4,88458,79731,d)}Ui=d+112|0}function B5(a){a=a|0;var b=0,c=0,d=0,e=0,f=0,g=0,h=0,i=0;d=Ui-80|0;Ui=d;b=J[a+8>>2]-J[a+12>>2]|0;Bj(a);e=qj(a,-1,J[84364],139081);gj(a,-2);if(b>>4==J[a+8>>2]-J[a+12>>2]>>4){a:{b:{if((kj(a,1)|0)!=1){break b}if((kj(a,2)|0)!=1){break b}if((kj(a,3)|0)!=1){break b}if((kj(a,4)|0)!=1){break b}f=(ck(a,1)|0)!=0;g=(ck(a,2)|0)!=0;h=(ck(a,3)|0)!=0;c=d+40|0;J[c+32>>2]=(ck(a,4)|0)!=0;J[c+36>>2]=0;J[c+24>>2]=h;J[c+28>>2]=0;J[c+16>>2]=g;J[c+20>>2]=0;J[c+8>>2]=f;J[c+12>>2]=0;J[c>>2]=10;b=J[e+4>>2];if((b|0)!=J[e+8>>2]){J[e+4>>2]=b+40;a=J[c+36>>2];J[b+32>>2]=J[c+32>>2];J[b+36>>2]=a;a=J[c+28>>2];J[b+24>>2]=J[c+24>>2];J[b+28>>2]=a;a=J[c+20>>2];J[b+16>>2]=J[c+16>>2];J[b+20>>2]=a;a=J[c+12>>2];J[b+8>>2]=J[c+8>>2];J[b+12>>2]=a;a=J[c+4>>2];J[b>>2]=J[c>>2];J[b+4>>2]=a;break a}J[d>>2]=(b-J[e>>2]|0)/40;i=fj(a,132935,d);break a}b=kj(a,2);if((b|0)==-1){g=60960}else{g=J[(b<<2)+257632>>2]}b=kj(a,3);if((b|0)==-1){h=60960}else{h=J[(b<<2)+257632>>2]}b=kj(a,4);if((b|0)==-1){b=60960}else{b=J[(b<<2)+257632>>2]}f=kj(a,5);if((f|0)==-1){c=60960}else{c=J[(f<<2)+257632>>2]}J[d+28>>2]=c;J[d+24>>2]=b;J[d+20>>2]=h;J[d+16>>2]=g;i=fj(a,118850,d+16|0)}Ui=d+80|0;return i|0}Z(143244,37616,478,51340);B()}function Tqa(a,b,c,d,e,f,g,h,i,j,k){a=a|0;b=b|0;c=c|0;d=d|0;e=Q(e);f=Q(f);g=Q(g);h=Q(h);i=i|0;j=j|0;k=Q(k);var l=0,m=Q(0),n=Q(0),o=Q(0),p=Q(0),q=Q(0),r=Q(0),s=0,t=Q(0),u=Q(0),v=Q(0),w=0,x=Q(0),y=Q(0),z=Q(0);l=Ui-32|0;Ui=l;t=N[c+8>>2];n=N[d+8>>2];p=N[c>>2];o=N[d+4>>2];q=N[d>>2];u=N[c+4>>2];v=N[b>>2];y=N[b+4>>2];m=N[b+8>>2];J[l+28>>2]=0;r=Hj(g);x=Q(f*Q(Q(p*o)-Q(u*q)));z=m;m=Rj(g);N[l+24>>2]=Q(r*x)+Q(z+Q(m*Q(e*n)));p=Q(f*Q(Q(t*q)-Q(p*n)));N[l+20>>2]=Q(y+Q(m*Q(e*o)))+Q(r*p);n=Q(f*Q(Q(u*n)-Q(t*o)));N[l+16>>2]=Q(r*n)+Q(v+Q(m*Q(e*q)));o=Q(h-g);f=Q(o/Q(k*Q(.01745329238474369)));a:{if(Q(R(f))>2]+8>>2]](a,b,l+16|0,i)}w=c>>>0<=1?1:c;if((w|0)>0){k=Q(w>>>0);c=1;while(1){q=N[d+8>>2];h=Q(g+Q(Q(o*Q(c>>>0))/k));f=Rj(h);t=N[b+8>>2];h=Hj(h);u=N[b>>2];r=N[d>>2];m=N[b+4>>2];v=N[d+4>>2];N[l+8>>2]=Q(x*h)+Q(t+Q(f*Q(e*q)));J[l+12>>2]=0;N[l+4>>2]=Q(p*h)+Q(m+Q(f*Q(e*v)));N[l>>2]=Q(n*h)+Q(u+Q(f*Q(e*r)));Zi[J[J[a>>2]+8>>2]](a,l+16|0,l,i);s=J[l+12>>2];J[l+24>>2]=J[l+8>>2];J[l+28>>2]=s;s=J[l+4>>2];J[l+16>>2]=J[l>>2];J[l+20>>2]=s;s=(c|0)==(w|0);c=c+1|0;if(!s){continue}break}}if(j){Zi[J[J[a>>2]+8>>2]](a,b,l+16|0,i)}Ui=l+32|0}function toa(a){a=a|0;var b=0,c=0;a:{if(K[877592]){a=J[a+8>>2];c=J[a+8>>2]-J[a+12>>2]|0;uk(a,53255,287808);b=J[a+8>>2];J[b+8>>2]=3;O[b>>3]=0;J[a+8>>2]=J[a+8>>2]+16;ej(a,-2,91398);b=J[a+8>>2];J[b+8>>2]=3;O[b>>3]=1;J[a+8>>2]=J[a+8>>2]+16;ej(a,-2,93481);b=J[a+8>>2];J[b+8>>2]=3;O[b>>3]=2;J[a+8>>2]=J[a+8>>2]+16;ej(a,-2,92631);b=J[a+8>>2];J[b+8>>2]=3;O[b>>3]=3;J[a+8>>2]=J[a+8>>2]+16;ej(a,-2,90265);b=J[a+8>>2];J[b+8>>2]=3;O[b>>3]=4;J[a+8>>2]=J[a+8>>2]+16;ej(a,-2,95723);b=J[a+8>>2];J[b+8>>2]=3;O[b>>3]=5;J[a+8>>2]=J[a+8>>2]+16;ej(a,-2,91374);b=J[a+8>>2];J[b+8>>2]=3;O[b>>3]=6;J[a+8>>2]=J[a+8>>2]+16;ej(a,-2,96330);b=J[a+8>>2];J[b+8>>2]=3;O[b>>3]=7;J[a+8>>2]=J[a+8>>2]+16;ej(a,-2,96305);b=J[a+8>>2];J[b+8>>2]=3;O[b>>3]=8;J[a+8>>2]=J[a+8>>2]+16;ej(a,-2,85086);b=J[a+8>>2];J[b+8>>2]=3;O[b>>3]=9;J[a+8>>2]=J[a+8>>2]+16;ej(a,-2,87313);b=J[a+8>>2];J[b+8>>2]=3;O[b>>3]=10;J[a+8>>2]=J[a+8>>2]+16;ej(a,-2,85693);b=J[a+8>>2];J[b+8>>2]=3;O[b>>3]=32;J[a+8>>2]=J[a+8>>2]+16;ej(a,-2,85706);b=J[a+8>>2];J[b+8>>2]=3;O[b>>3]=255;J[a+8>>2]=J[a+8>>2]+16;ej(a,-2,94831);gj(a,-2);if(c>>4!=J[a+8>>2]-J[a+12>>2]>>4){break a}return 0}Z(145593,41034,323,53261);B()}Z(143244,41034,434,53261);B()}function tS(a,b){var c=0,d=0,e=0,f=0,g=0,h=0,i=0,j=0,k=0,l=0,m=0,n=0;i=Ui-16|0;Ui=i;c=3;a:{b:{c:{if(a+1>>>0<2){break c}h=a&65535;f=J[216330];if(h>>>0>=M[f+8>>2]){break a}g=J[J[f>>2]+(h<<2)>>2];if(!g|L[J[f+4>>2]+(h<<1)>>1]!=(a>>>16|0)){break c}c=1;l=J[g+28>>2];if(Wj(J[g>>2]+P(l,J[g+24>>2])|0,173904,16)){break c}f=K[g+34|0];h=i-(P(f,24)+15&16368)|0;Ui=h;d:{if(!f){break d}j=J[g+4>>2];c=0;if((f|0)!=1){n=f&254;while(1){e=(c<<4)+j|0;k=J[e+4>>2];d=h+P(c,24)|0;J[d>>2]=J[e>>2];J[d+4>>2]=k;J[d+8>>2]=K[e+12|0];H[d+12|0]=K[e+13|0];e=c|1;d=(e<<4)+j|0;k=J[d+4>>2];e=h+P(e,24)|0;J[e>>2]=J[d>>2];J[e+4>>2]=k;J[e+8>>2]=K[d+12|0];H[e+12|0]=K[d+13|0];c=c+2|0;m=m+2|0;if((n|0)!=(m|0)){continue}break}}if(!(f&1)){break d}d=h+P(c,24)|0;c=(c<<4)+j|0;j=J[c+4>>2];J[d>>2]=J[c>>2];J[d+4>>2]=j;J[d+8>>2]=K[c+12|0];H[d+12|0]=K[c+13|0]}c=Nq(l,h,f,i+12|0);if(c){break c}sS(J[i+12>>2],a);c=J[g+8>>2];if((c|0)!=J[g+12>>2]){a=0;while(1){c=J[(a<<2)+c>>2];if(qS(J[i+12>>2],J[c>>2],J[c+4>>2],J[c+12>>2],K[c+9|0],K[c+8|0])){break b}a=a+1|0;c=J[g+8>>2];if(a>>>0>2]-c>>2>>>0){continue}break}}J[b>>2]=J[i+12>>2];c=0}Ui=i+16|0;return c}Z(93124,40052,403,64975);B()}Z(2686,54230,244,5438);B()}function _U(a,b){var c=0,d=0,e=0,f=0,g=Q(0),h=Q(0),i=Q(0),j=Q(0),k=0;if(J[a>>2]==(b|0)){J[a>>2]=-1;return}f=J[a+4>>2];c=J[(f+P(b,36)|0)+20>>2];e=P(c,36)+f|0;d=J[e+20>>2];k=b;b=J[e+24>>2];if((k|0)==(b|0)){b=J[e+28>>2]}a:{b:{c:{if((d|0)!=-1){e=f+P(d,36)|0;J[((c|0)==J[e+24>>2]?24:28)+e>>2]=b;J[(f+P(b,36)|0)+20>>2]=d;if((c|0)<0|(c|0)>=J[a+12>>2]){break b}if(J[a+8>>2]<=0){break a}b=P(c,36);J[(b+J[a+4>>2]|0)+20>>2]=J[a+16>>2];J[(b+J[a+4>>2]|0)+32>>2]=-1;J[a+16>>2]=c;J[a+8>>2]=J[a+8>>2]-1;while(1){b=aV(a,d);d=J[a+4>>2];e=P(b,36);b=d+e|0;f=P(J[b+28>>2],36);c=d+f|0;g=N[c>>2];k=P(J[b+24>>2],36);d=k+d|0;h=N[d>>2];i=N[d+4>>2];j=N[c+4>>2];N[b+4>>2]=i>2]=g>h?h:g;g=N[d+8>>2];h=N[c+8>>2];i=N[d+12>>2];j=N[c+12>>2];N[b+12>>2]=i>j?i:j;N[b+8>>2]=g>h?g:h;b=J[a+4>>2];c=b+e|0;d=J[(b+k|0)+32>>2];b=J[(b+f|0)+32>>2];J[c+32>>2]=((b|0)<(d|0)?d:b)+1;d=J[c+20>>2];if((d|0)!=-1){continue}break}break c}J[a>>2]=b;J[(f+P(b,36)|0)+20>>2]=-1;if((c|0)<0|(c|0)>=J[a+12>>2]){break b}if(J[a+8>>2]<=0){break a}b=P(c,36);J[(b+J[a+4>>2]|0)+20>>2]=J[a+16>>2];J[(b+J[a+4>>2]|0)+32>>2]=-1;J[a+16>>2]=c;J[a+8>>2]=J[a+8>>2]-1}return}Z(2402,42086,97,69648);B()}Z(12510,42086,98,69648);B()}function sja(a){a=a|0;var b=0,c=0,d=0,e=0,f=0,g=0,h=0,i=0,j=0;b=J[a+4>>2];i=b+108|0;j=b+104|0;a:{b:{c=J[b+104>>2];e=J[b+112>>2]-c>>2;f=J[b+108>>2];h=f-c>>2;g=J[b+120>>2];d=J[b+124>>2]-g|0;c=d>>2;if(e>>>0>>0){if(H[b+116|0]&1){break b}lj(c+e|0,4,j,b+112|0,i);f=J[b+108>>2];c=J[b+104>>2];h=f-c>>2;e=J[b+112>>2]-c>>2;g=J[b+120>>2];d=J[b+124>>2]-g|0;c=d>>2}if(e-h>>>0>>0){break a}hj(f,g,d);J[b+124>>2]=J[b+120>>2];c=J[b+108>>2]+d|0;J[b+108>>2]=c;e=J[b+104>>2];if((c|0)!=(e|0)){d=0;while(1){Zi[J[79392]](J[(d<<2)+e>>2]);d=d+1|0;e=J[j>>2];if(d>>>0>2]-e>>2>>>0){continue}break}}c=J[b+140>>2];if(c){cj(c)}Np(J[J[a>>2]+4>>2],279,b);c:{if(H[b+132|0]&1){break c}a=J[b+120>>2];if(!a){break c}cj(a)}d:{if(H[b+116|0]&1){break d}a=J[b+104>>2];if(!a){break d}cj(a)}e:{if(H[b+100|0]&1){break e}a=J[b+80>>2];if(a){cj(a)}a=J[b+72>>2];if(!a){break e}cj(a)}f:{if(H[b+68|0]&1){break f}a=J[b+56>>2];if(!a){break f}cj(a)}g:{if(H[b+48|0]&1){break g}a=J[b+36>>2];if(!a){break g}cj(a)}h:{if(H[b+32|0]&1){break h}a=J[b+20>>2];if(!a){break h}cj(a)}i:{if(H[b+16|0]&1){break i}a=J[b+4>>2];if(!a){break i}cj(a)}cj(b);return 0}Z(151729,53895,501,2284);B()}Z(11738,53895,564,4042);B()}function OP(){var a=0,b=0,c=0,d=0,e=0,f=0,g=0,h=0,i=0,j=0;e=Ui-48|0;Ui=e;g=1;if(!J[78404]){Z(4790,36929,69,51197);B()}a:{h=J[78402];if(h){a=h;while(1){if(a>>>0<=f>>>0){break a}b=J[J[78400]+(f<<2)>>2];b:{if(!b){break b}d=J[b+40>>2]+2|0;if(d>>>0>4|!(1<>2])){c=e+28|0;a=J[b>>2];if(a){a=J[a>>2]}else{a=0}d=pj(c,a,0,39051,78);c:{if(ao(J[b>>2])){i=+M[b+4>>2];c=J[a+8>>2];J[c+8>>2]=3;O[c>>3]=i;J[a+8>>2]=J[a+8>>2]+16;Fj(a,0,0);i=+J[b+40>>2];c=J[a+8>>2];J[c+8>>2]=3;O[c>>3]=i;J[a+8>>2]=J[a+8>>2]+16;ej(a,-2,17425);if(J[b+40>>2]==2){c=J[b+8>>2];I[e+16>>1]=65535;J[e+8>>2]=0;J[e+12>>2]=0;J[e+4>>2]=1;J[e>>2]=c;Gs(a,e);ej(a,-2,34859)}a=Ol(a,3,0,0);xo(J[b>>2]);a=!a;break c}dj(4,88458,143621,0);a=0}oj(d)}Fl(J[b>>2]);J[b>>2]=0;d=J[b+4>>2];d:{if(d+1>>>0<2){break d}c=d&65535;if(c>>>0>=M[78402]){break a}j=J[78400]+(c<<2)|0;if(!J[j>>2]){break d}c=c<<1;if(L[c+J[78401]>>1]!=(d>>>16|0)){break d}J[j>>2]=0;I[c+J[78401]>>1]=0}cj(J[b+28>>2]);e:{if(H[b+24|0]&1){break e}d=J[b+12>>2];if(!d){break e}cj(d)}cj(b);g=a&g;a=J[78402]}f=f+1|0;if((h|0)!=(f|0)){continue}break}}Lj(J[78404]);H[313620]=K[313620]&254|g&1;Ui=e+48|0;return}Z(2686,54166,244,5438);B()}function Nua(a,b){a=a|0;b=b|0;var c=Q(0),d=Q(0),e=0,f=Q(0),g=Q(0),h=Q(0),i=Q(0),j=0,k=Q(0),l=Q(0),m=Q(0),n=Q(0),o=Q(0),p=Q(0),q=Q(0),r=Q(0),s=Q(0),t=Q(0),u=Q(0),v=Q(0),w=Q(0);d=N[a+132>>2];i=N[a+72>>2];j=J[b+24>>2];e=j+P(J[a+96>>2],12)|0;q=N[e+8>>2];c=Rj(q);k=N[a+128>>2];n=N[a+68>>2];g=Hj(q);f=N[a+140>>2];o=N[a+80>>2];j=j+P(J[a+100>>2],12)|0;r=N[j+8>>2];h=Rj(r);l=N[a+136>>2];p=N[a+76>>2];m=Hj(r);s=N[j>>2];l=Q(p-l);f=Q(o-f);o=Q(Q(h*l)-Q(m*f));p=N[e>>2];k=Q(n-k);i=Q(i-d);n=Q(Q(c*k)-Q(g*i));d=Q(Q(Q(s+o)-p)-n);t=N[j+4>>2];m=Q(Q(m*l)+Q(h*f));f=N[e+4>>2];i=Q(Q(g*k)+Q(c*i));c=Q(Q(Q(t+m)-f)-i);g=Q(Y(Q(Q(d*d)+Q(c*c))));a:{if(g>2];h=N[a+148>>2];l=N[a+152>>2];v=f;f=N[a+144>>2];w=c;c=Q(g-N[a+84>>2]);c=c>2]));c=Q(w*u);N[e+4>>2]=v-Q(f*c);d=Q(d*u);N[e>>2]=p-Q(f*d);e=J[b+24>>2];N[(e+P(J[a+96>>2],12)|0)+8>>2]=q-Q(l*Q(Q(n*c)-Q(i*d)));e=e+P(J[a+100>>2],12)|0;N[e+4>>2]=t+Q(h*c);N[e>>2]=s+Q(h*d);N[(J[b+24>>2]+P(J[a+100>>2],12)|0)+8>>2]=Q(k*Q(Q(o*c)-Q(m*d)))+r;return Q(g-N[a+84>>2])>2];J[c>>2]=J[d>>2];J[c+4>>2]=a;a=J[d+20>>2];J[c+16>>2]=J[d+16>>2];J[c+20>>2]=a;break c;case 0:break e;default:break d}}if(K[b+1|0]){break d}a=J[d+4>>2];J[c>>2]=J[d>>2];J[c+4>>2]=a;a=J[d+28>>2];J[c+24>>2]=J[d+24>>2];J[c+28>>2]=a;a=J[d+20>>2];J[c+16>>2]=J[d+16>>2];J[c+20>>2]=a;a=J[d+12>>2];J[c+8>>2]=J[d+8>>2];J[c+12>>2]=a;break c}if(J[c+8>>2]|J[c+12>>2]){break a}J[e+88>>2]=0;J[e+92>>2]=0;J[e+80>>2]=0;J[e+84>>2]=0;J[e+72>>2]=0;J[e+76>>2]=0;b=GM(b,e+72|0);if(b){break b}f=J[e+76>>2];f:{if(f){b=-4;if(f>>>0>63){break b}ek(e,J[e+72>>2],f+1|0);g:{b=eo(e,c);switch(b+6|0){case 0:case 6:break g;default:break b}}J[c+16>>2]=Ul(J[e+80>>2],J[e+84>>2]);J[c+20>>2]=Yi;break f}b=J[d+4>>2];J[c>>2]=J[d>>2];J[c+4>>2]=b;b=c+16|0;f=J[e+84>>2];if(f){TJ(a,J[e+80>>2],f,b);break f}a=J[d+20>>2];J[b>>2]=J[d+16>>2];J[b+4>>2]=a}a=J[e+92>>2];if(a){J[c+24>>2]=Ul(J[e+88>>2],a);J[c+28>>2]=Yi;break c}if(!(J[e+76>>2]|J[e+84>>2])){a=J[d+28>>2];J[c+24>>2]=J[d+24>>2];J[c+28>>2]=a;break c}J[c+24>>2]=0;J[c+28>>2]=0}b=0}Ui=e+96|0;return b}Z(113086,41102,617,92237);B()}function kpa(a){a=a|0;var b=0,c=0,d=0,e=0,f=0;c=Ui-112|0;Ui=c;e=a;if((kj(a,1)|0)==8){b=1;e=so(a,1)}d=b|2;f=mm(a,d,8340,0);a:{b:{b=b+1|0;c:{if(kk(a,b)){if(Zl(e,sl(a,b),c+12|0)){break c}e=J[a+8>>2];J[e+8>>2]=0;J[a+8>>2]=e+16;b=1;break a}if((kj(a,b)|0)!=6){break b}J[c>>2]=f;ik(a,26110,c);f=Ij(a,-1,0);uj(a,b);Xo(a,e,1)}if(!Yo(e,f,c+12|0)){b=Dk(a,d,45048);break a}Fj(a,0,2);if(Hk(f,83)){xj(a,J[c+28>>2]);ej(a,-2,70024);xj(a,c+48|0);ej(a,-2,81643);b=J[c+40>>2];d=J[a+8>>2];J[d+8>>2]=3;O[d>>3]=b|0;J[a+8>>2]=J[a+8>>2]+16;ej(a,-2,74733);b=J[c+44>>2];d=J[a+8>>2];J[d+8>>2]=3;O[d>>3]=b|0;J[a+8>>2]=J[a+8>>2]+16;ej(a,-2,74729);xj(a,J[c+24>>2]);ej(a,-2,17122)}if(Hk(f,108)){b=J[c+32>>2];d=J[a+8>>2];J[d+8>>2]=3;O[d>>3]=b|0;J[a+8>>2]=J[a+8>>2]+16;ej(a,-2,65305)}if(Hk(f,117)){b=J[c+36>>2];d=J[a+8>>2];J[d+8>>2]=3;O[d>>3]=b|0;J[a+8>>2]=J[a+8>>2]+16;ej(a,-2,19806)}if(Hk(f,110)){xj(a,J[c+16>>2]);ej(a,-2,66013);xj(a,J[c+20>>2]);ej(a,-2,17118)}if(Hk(f,76)){d:{if((a|0)==(e|0)){uj(a,-2);Rl(a,-3);break d}Xo(e,a,1)}ej(a,-2,22549)}b=1;if(!Hk(f,102)){break a}e:{if((a|0)==(e|0)){uj(a,-2);Rl(a,-3);break e}Xo(e,a,1)}ej(a,-2,82045);break a}b=Dk(a,b,73753)}Ui=c+112|0;return b|0}function KI(a,b,c){var d=0;J[b+1316>>2]=10;J[b+1320>>2]=1e3;J[b+1308>>2]=0;J[b+1312>>2]=2;J[b+1344>>2]=1;J[b+1348>>2]=1e3;J[b+1332>>2]=c;J[b+1324>>2]=0;J[b+1328>>2]=14;J[b+1352>>2]=0;J[b+1356>>2]=0;J[b+1336>>2]=1;J[b+1340>>2]=1;if((c|0)>0){mG(b+1280|0)}c=0;while(1){d=(c<<2)+b|0;J[d>>2]=12;J[d+4>>2]=12;J[d+8>>2]=12;J[d+12>>2]=12;J[d+16>>2]=12;J[d+20>>2]=12;J[d+24>>2]=12;J[d+28>>2]=12;c=c+8|0;if((c|0)!=256){continue}break}J[b+500>>2]=1;J[b+492>>2]=0;J[b+372>>2]=3;J[b+364>>2]=2;J[b+232>>2]=8;J[b+128>>2]=11;J[b>>2]=10;J[b+420>>2]=13;J[b+408>>2]=13;J[b+52>>2]=11;J[b+36>>2]=11;J[b+40>>2]=11;J[b+440>>2]=13;J[b+292>>2]=13;J[b+464>>2]=13;J[b+312>>2]=13;J[b+224>>2]=13;J[b+228>>2]=13;J[b+216>>2]=13;J[b+220>>2]=13;J[b+208>>2]=13;J[b+212>>2]=13;J[b+200>>2]=13;J[b+204>>2]=13;J[b+192>>2]=13;J[b+196>>2]=13;J[b+180>>2]=13;J[b+172>>2]=13;J[b+176>>2]=9;J[b+136>>2]=13;ij(b+1024|0,0,256);H[b+1116|0]=92;H[b+1058|0]=34;H[b+1122|0]=8;H[b+1071|0]=47;H[b+1134|0]=10;I[b+1140>>1]=29961;H[b+1138|0]=13;H[b+1126|0]=12;if((kj(a,2)|0)==5){uj(a,2);rj(a,-1,83166);if(kj(a,-1)){J[b+1356>>2]=ck(a,-1)}gj(a,-2);rj(a,-1,16217);if(kj(a,-1)){J[b+1336>>2]=ck(a,-1)}gj(a,-2);gj(a,-2)}}function zR(a,b){var c=0,d=0,e=0,f=0,g=0,h=0,i=0,j=0,k=0,l=0,m=0,n=0,o=0,p=0,q=0,r=0,s=0;c=Ui+-64|0;Ui=c;a:{b:{switch(J[b>>2]){case 0:g=O[b+8>>3];b=J[a+8>>2];J[b+8>>2]=3;O[b>>3]=g;J[a+8>>2]=J[a+8>>2]+16;break a;case 1:Bk(a,J[b+8>>2],J[b+12>>2]);break a;case 2:wm(a,b+8|0);break a;case 3:d=J[b+8>>2];e=J[b+12>>2];N[c+8>>2]=N[b+16>>2];J[c>>2]=d;J[c+4>>2]=e;cl(a,c);break a;case 4:d=J[b+8>>2];e=J[b+12>>2];f=J[b+20>>2];J[c+8>>2]=J[b+16>>2];J[c+12>>2]=f;J[c>>2]=d;J[c+4>>2]=e;yo(a,c);break a;case 5:d=J[b+8>>2];e=J[b+12>>2];f=J[b+20>>2];J[c+8>>2]=J[b+16>>2];J[c+12>>2]=f;J[c>>2]=d;J[c+4>>2]=e;tq(a,c);break a;case 6:b=K[b+8|0];d=J[a+8>>2];J[d+8>>2]=1;J[d>>2]=(b|0)!=0;J[a+8>>2]=J[a+8>>2]+16;break a;case 7:break b;default:break a}}d=J[b+8>>2];e=J[b+12>>2];f=J[b+16>>2];h=J[b+20>>2];i=J[b+24>>2];j=J[b+28>>2];k=J[b+32>>2];l=J[b+36>>2];m=J[b+40>>2];n=J[b+44>>2];o=J[b+48>>2];p=J[b+52>>2];q=J[b+56>>2];r=J[b+60>>2];s=J[b+68>>2];J[c+56>>2]=J[b+64>>2];J[c+60>>2]=s;J[c+48>>2]=q;J[c+52>>2]=r;J[c+40>>2]=o;J[c+44>>2]=p;J[c+32>>2]=m;J[c+36>>2]=n;J[c+24>>2]=k;J[c+28>>2]=l;J[c+16>>2]=i;J[c+20>>2]=j;J[c+8>>2]=f;J[c+12>>2]=h;J[c>>2]=d;J[c+4>>2]=e;Kp(a,c)}Ui=c- -64|0}function R5(a){a=a|0;var b=0,c=0,d=0,e=0,f=0,g=Q(0);d=Ui-48|0;Ui=d;b=J[a+8>>2]-J[a+12>>2]|0;Bj(a);e=qj(a,-1,J[84364],139081);gj(a,-2);if(b>>4==J[a+8>>2]-J[a+12>>2]>>4){a:{if((kj(a,1)|0)!=5){break a}Oj(a,1,5);uj(a,1);rj(a,-1,48385);if(kj(a,-1)){b=an(a,-1)}else{b=0}gj(a,-2);rj(a,-1,22599);if(kj(a,-1)){f=Ej(a,-1)}else{f=4}gj(a,-2);gj(a,-2);if(!b){break a}c=nj(80);N[c>>2]=N[b>>2];N[c+4>>2]=N[b+4>>2];N[c+8>>2]=N[b+8>>2];N[c+12>>2]=N[b+12>>2];N[c+16>>2]=N[b+16>>2];N[c+20>>2]=N[b+20>>2];N[c+24>>2]=N[b+24>>2];N[c+28>>2]=N[b+28>>2];N[c+32>>2]=N[b+32>>2];N[c+36>>2]=N[b+36>>2];N[c+40>>2]=N[b+40>>2];N[c+44>>2]=N[b+44>>2];N[c+48>>2]=N[b+48>>2];N[c+52>>2]=N[b+52>>2];N[c+56>>2]=N[b+56>>2];g=N[b+60>>2];J[c+64>>2]=f;N[c+60>>2]=g}b=d+8|0;J[b+8>>2]=c;J[b+12>>2]=0;J[b>>2]=19;c=J[e+4>>2];b:{if((c|0)!=J[e+8>>2]){J[e+4>>2]=c+40;a=J[b+36>>2];J[c+32>>2]=J[b+32>>2];J[c+36>>2]=a;a=J[b+28>>2];J[c+24>>2]=J[b+24>>2];J[c+28>>2]=a;a=J[b+20>>2];J[c+16>>2]=J[b+16>>2];J[c+20>>2]=a;a=J[b+12>>2];J[c+8>>2]=J[b+8>>2];J[c+12>>2]=a;a=J[b+4>>2];J[c>>2]=J[b>>2];J[c+4>>2]=a;a=0;break b}J[d>>2]=(c-J[e>>2]|0)/40;a=fj(a,132935,d)}Ui=d+48|0;return a|0}Z(143244,37616,478,51340);B()}function Yoa(a,b,c,d,e,f){a=a|0;b=b|0;c=c|0;d=d|0;e=e|0;f=f|0;var g=0,h=0;h=-50;a:{if(c&7){break a}if((b|0)!=1){h=0;if(!c){break a}while(1){b=K[e+4|0]|K[e+5|0]<<8|(K[e+6|0]<<16|K[e+7|0]<<24);g=K[e|0]|K[e+1|0]<<8|(K[e+2|0]<<16|K[e+3|0]<<24);HA(a,e,f);H[f|0]=K[d|0]^K[f|0];H[f+1|0]=K[d+1|0]^K[f+1|0];H[f+2|0]=K[d+2|0]^K[f+2|0];H[f+3|0]=K[d+3|0]^K[f+3|0];H[f+4|0]=K[d+4|0]^K[f+4|0];H[f+5|0]=K[d+5|0]^K[f+5|0];H[f+6|0]=K[d+6|0]^K[f+6|0];H[f+7|0]=K[d+7|0]^K[f+7|0];H[d|0]=g;H[d+1|0]=g>>>8;H[d+2|0]=g>>>16;H[d+3|0]=g>>>24;H[d+4|0]=b;H[d+5|0]=b>>>8;H[d+6|0]=b>>>16;H[d+7|0]=b>>>24;f=f+8|0;e=e+8|0;c=c-8|0;if(c){continue}break}break a}h=0;if(!c){break a}b=K[d|0];while(1){H[f|0]=K[e|0]^b;H[f+1|0]=K[d+1|0]^K[e+1|0];H[f+2|0]=K[d+2|0]^K[e+2|0];H[f+3|0]=K[d+3|0]^K[e+3|0];H[f+4|0]=K[d+4|0]^K[e+4|0];H[f+5|0]=K[d+5|0]^K[e+5|0];H[f+6|0]=K[d+6|0]^K[e+6|0];H[f+7|0]=K[d+7|0]^K[e+7|0];HA(a,f,f);g=K[f+4|0]|K[f+5|0]<<8|(K[f+6|0]<<16|K[f+7|0]<<24);b=K[f|0]|K[f+1|0]<<8|(K[f+2|0]<<16|K[f+3|0]<<24);H[d|0]=b;H[d+1|0]=b>>>8;H[d+2|0]=b>>>16;H[d+3|0]=b>>>24;H[d+4|0]=g;H[d+5|0]=g>>>8;H[d+6|0]=g>>>16;H[d+7|0]=g>>>24;f=f+8|0;e=e+8|0;c=c-8|0;if(c){continue}break}}return h|0}function Qoa(a,b,c,d,e,f){a=a|0;b=b|0;c=c|0;d=d|0;e=e|0;f=f|0;var g=0,h=0;h=-50;a:{if(c&7){break a}if((b|0)!=1){h=0;if(!c){break a}while(1){b=K[e+4|0]|K[e+5|0]<<8|(K[e+6|0]<<16|K[e+7|0]<<24);g=K[e|0]|K[e+1|0]<<8|(K[e+2|0]<<16|K[e+3|0]<<24);GA(a,e,f);H[f|0]=K[d|0]^K[f|0];H[f+1|0]=K[d+1|0]^K[f+1|0];H[f+2|0]=K[d+2|0]^K[f+2|0];H[f+3|0]=K[d+3|0]^K[f+3|0];H[f+4|0]=K[d+4|0]^K[f+4|0];H[f+5|0]=K[d+5|0]^K[f+5|0];H[f+6|0]=K[d+6|0]^K[f+6|0];H[f+7|0]=K[d+7|0]^K[f+7|0];H[d|0]=g;H[d+1|0]=g>>>8;H[d+2|0]=g>>>16;H[d+3|0]=g>>>24;H[d+4|0]=b;H[d+5|0]=b>>>8;H[d+6|0]=b>>>16;H[d+7|0]=b>>>24;f=f+8|0;e=e+8|0;c=c-8|0;if(c){continue}break}break a}h=0;if(!c){break a}b=K[d|0];while(1){H[f|0]=K[e|0]^b;H[f+1|0]=K[d+1|0]^K[e+1|0];H[f+2|0]=K[d+2|0]^K[e+2|0];H[f+3|0]=K[d+3|0]^K[e+3|0];H[f+4|0]=K[d+4|0]^K[e+4|0];H[f+5|0]=K[d+5|0]^K[e+5|0];H[f+6|0]=K[d+6|0]^K[e+6|0];H[f+7|0]=K[d+7|0]^K[e+7|0];GA(a,f,f);g=K[f+4|0]|K[f+5|0]<<8|(K[f+6|0]<<16|K[f+7|0]<<24);b=K[f|0]|K[f+1|0]<<8|(K[f+2|0]<<16|K[f+3|0]<<24);H[d|0]=b;H[d+1|0]=b>>>8;H[d+2|0]=b>>>16;H[d+3|0]=b>>>24;H[d+4|0]=g;H[d+5|0]=g>>>8;H[d+6|0]=g>>>16;H[d+7|0]=g>>>24;f=f+8|0;e=e+8|0;c=c-8|0;if(c){continue}break}}return h|0}function jaa(a){a=a|0;var b=0,c=0,d=0,e=0,f=0,g=0,h=0,i=0,j=0,k=0,l=0,m=0,n=0,o=0,p=0,q=0;f=Ui-16|0;Ui=f;o=J[a+8>>2]-J[a+12>>2]>>4;Bj(a);g=qj(a,-1,J[219396],139183);gj(a,-2);Qj(a,1,f+12|0);a:{if(Lp(a,2)){c=Tl(a,2);d=Yi;break a}c=bj(Aj(a,2,0));d=Yi}if(!tO(c,d)){J[f>>2]=tj(c,d);fj(a,71038,f)}i=Ui-16|0;Ui=i;b:{c:{d:{l=J[f+12>>2];h=l&65535;b=J[g+32>>2];if(h>>>0<(J[g+36>>2]-b|0)/672>>>0){m=b+P(h,672)|0;if(L[m+648>>1]!=(l>>>16|0)){break d}j=J[g+52>>2];e=J[g+48>>2];b=(j-e|0)/72|0;h=Ws(c,d);e:{if(h){if((e|0)==(j|0)){break e}j=b>>>0<=1?1:b;while(1){e=J[g+48>>2];if((J[g+52>>2]-e|0)/72>>>0<=k>>>0){break c}b=K[h+12|0];c=(b|0)==255;d=c?0:b;n=c?4:b+1|0;f:{if(d>>>0>=n>>>0){break f}b=e+P(k,72)|0;if(J[b>>2]!=(l|0)){break f}e=c?4:1;p=(J[h+8>>2]<<4)+m|0;q=J[b+4>>2];c=0;while(1){if((q|0)==(p+(d<<2)|0)){H[b+68|0]=K[b+68|0]|4;c=c+1|0;if((e|0)==(c|0)){break e}}d=d+1|0;if((n|0)!=(d|0)){continue}break}}k=k+1|0;if((j|0)!=(k|0)){continue}break}break e}J[i>>2]=tj(c,d);dj(4,93318,71038,i)}Ui=i+16|0;break b}break c}Z(47372,40876,3689,53444);B()}Z(145396,53895,487,84789);B()}if(J[a+8>>2]-J[a+12>>2]>>4!=(o|0)){Z(143202,37682,1600,46919);B()}Ui=f+16|0;return 0}function nm(a,b,c){var d=0,e=0;d=Ui-128|0;Ui=d;a:{b:{switch(b-1|0){default:if((b|0)==9){break a}break;case 0:case 2:break a;case 1:break b}}J[d+120>>2]=c+4;e=J[c>>2]}c:{d:{if(b>>>0>16){break d}if(!(1<>2]=e;J[d+20>>2]=0;a=da(a|0,14,d+16|0)|0;if(a>>>0>=4294963201){J[245744]=0-a;a=-1}break c}J[d+48>>2]=d+120;J[d+52>>2]=0;b=da(a|0,16,d+48|0)|0;if((b|0)==-28){J[d+32>>2]=e;J[d+36>>2]=0;b=da(a|0,9,d+32|0)|0}if(b){if(b>>>0>=4294963201){J[245744]=0-b;a=-1}else{a=b}break c}a=J[d+124>>2];a=J[d+120>>2]==2?0-a|0:a;break c}J[d+112>>2]=e;J[d+116>>2]=0;a=da(a|0,b|0,d+112|0)|0;if(a>>>0>=4294963201){J[245744]=0-a;a=-1}break c}if((b|0)!=1030){J[d>>2]=(b|0)==4?e|32768:e;J[d+4>>2]=0;a=da(a|0,b|0,d|0)|0;if(a>>>0>=4294963201){J[245744]=0-a;a=-1}break c}J[d+96>>2]=e;J[d+100>>2]=0;b=da(a|0,1030,d+96|0)|0;if((b|0)!=-28){if(b>>>0>=4294963201){J[245744]=0-b;a=-1}else{a=b}break c}J[d+80>>2]=0;J[d+84>>2]=0;b=da(a|0,1030,d+80|0)|0;if((b|0)!=-28){if((b|0)>=0){Aa(b|0)|0}J[245744]=28;a=-1;break c}J[d+64>>2]=e;J[d+68>>2]=0;a=da(a|0,0,d- -64|0)|0;if(a>>>0>=4294963201){J[245744]=0-a;a=-1}}Ui=d+128|0;return a}function jQ(a,b,c){var d=0,e=0,f=0,g=0,h=0,i=0,j=0,k=0;e=J[a+4>>2];if(e>>>0<=4){a:{if(e){h=c+400|0;i=c+384|0;j=c+96|0;e=0;while(1){J[b>>2]=J[b>>2]|(e>>>0>5?-1:J[(e<<2)+160540>>2]);if(M[a+4>>2]<=e>>>0){break a}f=J[a>>2]+P(e,12)|0;d=J[f+8>>2];if(d>>>0>=39){Z(114101,41539,104,17090);B()}k=J[(d<<2)+160184>>2];d=(e<<4)+c|0;J[d>>2]=0;g=L[f>>1];I[d+4>>1]=g;f=L[f+4>>1];H[d+14|0]=1;I[d+12>>1]=f;I[d+10>>1]=g;I[d+6>>1]=f;d=P(e,48)+j|0;I[d+44>>1]=1;I[d+42>>1]=f;I[d+40>>1]=g;J[d+8>>2]=k;J[d>>2]=0;J[d+4>>2]=0;d=e<<2;J[d+i>>2]=0;J[d+h>>2]=2;e=e+1|0;if(e>>>0>2]){continue}break}}if(!(!J[a+8>>2]|!J[a+12>>2])){J[b>>2]=J[b>>2]|16;J[c+64>>2]=0;d=L[a+8>>1];I[c+68>>1]=d;e=L[a+12>>1];I[c+332>>1]=1;I[c+330>>1]=e;I[c+328>>1]=d;J[c+296>>2]=6;J[c+288>>2]=0;J[c+292>>2]=0;H[c+78|0]=1;I[c+76>>1]=e;I[c+74>>1]=d;I[c+70>>1]=e;H[c+480|0]=K[a+20|0]|K[c+480|0]&254;J[b>>2]=J[b>>2]|32;J[c+80>>2]=0;b=L[a+8>>1];I[c+84>>1]=b;a=L[a+12>>1];I[c+380>>1]=1;I[c+378>>1]=a;I[c+376>>1]=b;J[c+344>>2]=7;J[c+336>>2]=0;J[c+340>>2]=0;H[c+94|0]=1;I[c+92>>1]=a;I[c+90>>1]=b;I[c+86>>1]=a;H[c+480|0]=K[c+480|0]&253}return}Z(12664,54769,58,84789);B()}Z(88629,38212,45,20478);B()}function HJ(a){var b=0,c=0,d=0,e=0,f=0,g=0,h=0,i=0;f=Ui-16|0;Ui=f;a:{b:{c=J[245446];g=J[c+16>>2];if(g){Tj(g);b=J[J[245446]+16>>2];if(b){break b}}d=K[a+60|0];break a}Tj(b);d=K[a+60|0];Lj(b)}c:{d:{e:{f:{if(!(d&4)){break f}d=L[a+58>>1];b=J[c+48>>2];if(d>>>0>=(J[c+52>>2]-b|0)/40>>>0){break e}b=b+P(d,40)|0;J[f>>2]=tj(J[b>>2],J[b+4>>2]);dj(4,96825,136697,f);b=J[J[245446]+16>>2];if(b){Tj(b);H[a+60|0]=K[a+60|0]&251;As(J[a>>2]);Lj(b);break f}H[a+60|0]=K[a+60|0]&251;As(J[a>>2])}b=J[c+36>>2];if(!b){break d}d=L[c+42>>1]-1|0;e=d&65535;if(e>>>0>1]){h=L[a+56>>1];I[c+42>>1]=d;I[b+(e<<1)>>1]=h;I[a+56>>1]=65535;d=L[a+58>>1];b=J[c+48>>2];if(d>>>0>=(J[c+52>>2]-b|0)/40>>>0){break e}jx(b+P(d,40)|0);I[a+58>>1]=65535;b=J[c>>2];g:{c=J[a>>2];if(c){Zi[J[J[c+8>>2]+16>>2]](J[c+4>>2]);d=J[b+16>>2];if(!d){break d}e=L[b+22>>1]-1|0;h=e&65535;if(h>>>0>=L[b+20>>1]){break c}i=J[c>>2];I[b+22>>1]=e;I[d+(h<<1)>>1]=i;J[c+8>>2]=0;J[c>>2]=0;J[c+4>>2]=0;break g}Z(35417,42636,128,35452);B()}J[a>>2]=0;J[a+40>>2]=1065353216;J[a+44>>2]=0;if(g){Lj(g)}Ui=f+16|0;return 0}break c}Z(145396,53895,487,84789);B()}Z(49493,54340,140,53220);B()}Z(2650,54340,141,53220);B()}function t3(a){a=a|0;var b=0,c=0,d=0,e=0,f=0,g=0;b=Ui-3184|0;Ui=b;d=J[a+8>>2]-J[a+12>>2]>>4;a:{b:{if(!kj(a,1)){d=fj(a,84231,0);break b}c=b+3176|0;J[c>>2]=0;J[c+4>>2]=0;c=b+3168|0;J[c>>2]=0;J[c+4>>2]=0;c=b+3160|0;J[c>>2]=0;J[c+4>>2]=0;J[b+3152>>2]=0;J[b+3156>>2]=0;c=b+3144|0;J[c>>2]=0;J[c+4>>2]=0;c=b+3136|0;J[c>>2]=0;J[c+4>>2]=0;c=b+3128|0;J[c>>2]=0;J[c+4>>2]=0;J[b+3120>>2]=0;J[b+3124>>2]=0;Sk(a,1,b+3152|0,b+3120|0);c:{if(Mk(a,2)){c=bj(Ij(a,2,0));g=Yi;break c}c=Tl(a,2);g=Yi}e=dS(c,g);d:{if(e){f=J[e+16>>2];if(f>>>0>=2049){J[b+36>>2]=2048;J[b+32>>2]=f;d=fj(a,133471,b+32|0);break b}e:{if((d|0)>=3){Oj(a,3,5);uj(a,3);break e}Fj(a,0,0)}f=mK(a,e,b+1072|0,2048);gj(a,-2);break d}if((d|0)<3){break d}if(!kj(a,3)){break d}f=MB(a,b+1072|0,2048,3)}if((d|0)!=J[a+8>>2]-J[a+12>>2]>>4){break a}f:{g:{d=Jk(b+3120|0,b+3152|0,c,g,0,0,e,b+1072|0,f,0);switch(d+2|0){case 0:break g;case 2:break b;default:break f}}d=Ds(b+3152|0,b+560|0,512);e=Ds(b+3120|0,b+48|0,512);c=tj(c,g);J[b+24>>2]=d;J[b+20>>2]=e;J[b+16>>2]=c;d=fj(a,134197,b+16|0);break b}J[b>>2]=dm(J[b+3152>>2],J[b+3156>>2]);d=fj(a,118122,b)}Ui=b+3184|0;return d|0}Z(143244,41102,543,9637);B()}function FI(a,b){var c=0,d=0,e=0,f=0,g=0,h=0,i=0,j=0,k=0,l=0,m=0,n=0,o=0,p=0,q=0,r=0,s=0;e=J[a+124>>2];c=e;d=e>>>2|0;e=J[a+120>>2];i=e>>>0>2]?c:d;c=J[a+108>>2];d=(c-J[a+44>>2]|0)+262|0;n=c>>>0>=d>>>0?d:0;d=J[a+144>>2];h=J[a+116>>2];o=d>>>0>>0?d:h;k=J[a+56>>2];f=c+k|0;p=f+257|0;q=f+258|0;c=e+f|0;l=K[c|0];m=K[c-1|0];r=J[a+52>>2];s=J[a+64>>2];while(1){a:{c=b+k|0;d=c+e|0;b:{if(K[d|0]!=(l|0)|K[d-1|0]!=(m|0)|(K[c|0]!=K[f|0]|K[c+1|0]!=K[f+1|0])){break b}g=2;d=c+2|0;c:{d:{e:{f:{g:{h:{i:{while(1){c=f+g|0;if(K[c+1|0]==K[d+1|0]){if(K[c+2|0]!=K[d+2|0]){break i}if(K[c+3|0]!=K[d+3|0]){break h}if(K[c+4|0]!=K[d+4|0]){break g}if(K[c+5|0]!=K[d+5|0]){break f}if(K[c+6|0]!=K[d+6|0]){break e}if(K[c+7|0]!=K[d+7|0]){break d}j=g>>>0>249;g=g+8|0;c=g+f|0;if(j){break c}j=K[d+8|0];d=d+8|0;if(K[c|0]==(j|0)){continue}break c}break}c=c+1|0;break c}c=c+2|0;break c}c=c+3|0;break c}c=c+4|0;break c}c=c+5|0;break c}c=c+6|0;break c}c=c+7|0}d=c-q|0;c=d+258|0;if((c|0)<=(e|0)){break b}J[a+112>>2]=b;if((c|0)>=(o|0)){e=c;break a}l=K[c+f|0];m=K[d+p|0];e=c}b=L[((b&r)<<1)+s>>1];if(n>>>0>=b>>>0){break a}i=i-1|0;if(i){continue}}break}return e>>>0>>0?e:h}function Bha(a){a=a|0;var b=0,c=0,d=0,e=0,f=0,g=0,h=0;b=Ui-96|0;Ui=b;f=J[a+8>>2]-J[a+12>>2]>>4;J[b+88>>2]=0;J[b+92>>2]=0;J[b+80>>2]=0;J[b+84>>2]=0;J[b+72>>2]=0;J[b+76>>2]=0;J[b+64>>2]=0;J[b+68>>2]=0;Mn(a,80474,b+60|0,b+56|0,b- -64|0);a:{if(!((K[J[J[b+56>>2]>>2]+8|0]&2)>>>1|0)){c=dm(J[b+64>>2],J[b+68>>2]);d=tj(J[b+80>>2],J[b+84>>2]);J[b+40>>2]=tj(J[b+88>>2],J[b+92>>2]);J[b+36>>2]=d;J[b+32>>2]=c;c=fj(a,150429,b+32|0);break a}if(J[J[b+56>>2]+24>>2]&1){c=fj(a,57221,0);break a}b:{if(!kj(a,2)){break b}e=Aj(a,2,0);c=ul(e,46);if(c){if(!jj(c,81722)){break b}}c=dm(J[b+64>>2],J[b+68>>2]);d=tj(J[b+80>>2],J[b+84>>2]);J[b+28>>2]=tj(J[b+88>>2],J[b+92>>2]);J[b+24>>2]=d;J[b+20>>2]=c;J[b+16>>2]=e;c=fj(a,72719,b+16|0);break a}g=J[J[b+60>>2]>>2];c=J[b+56>>2];h=J[c>>2];c=J[c+4>>2];J[b+52>>2]=0;c:{if(!e){break c}if(!jj(e,J[h+4>>2])){break c}d:{if(!c){break d}if(jj(e,J[c+4>>2])){break d}J[b+52>>2]=c;d=c;c=0;break c}d=nj(12);J[d>>2]=0;J[d+4>>2]=0;J[d+8>>2]=0;e=Gk(e);H[d+8|0]=3;J[d+4>>2]=e;J[b+52>>2]=d;d=J[b+52>>2]}J[J[b+56>>2]+4>>2]=d;if(c){QP(g,c)}c=0;if(J[a+8>>2]-J[a+12>>2]>>4==(f|0)){break a}Z(143244,36620,477,63808);B()}Ui=b+96|0;return c|0}function qu(a,b,c){var d=0,e=0,f=0,g=0,h=0,i=0,j=0,k=0,l=0,m=0,n=0,o=0,p=0,q=0,r=0;m=a- -64|0;f=K[b+15|0];h=f>>>1&120;d=m+h|0;j=J[d>>2];k=J[d+4>>2];n=a+192|0;g=(f&15)<<3;d=n+g|0;a=J[d>>2];e=J[d+4>>2];l=a;f=a<<28;a=g+m|0;d=J[a>>2];g=J[a+4>>2];a=g>>>4|0;i=((g&15)<<28|d>>>4)^j;f=(a|f)^k;a=h+n|0;k=J[a>>2];g=J[a+4>>2];a=J[((d&15)<<3)+180416>>2];d=e;e=d>>>4|0;h=((d&15)<<28|l>>>4)^k;d=e^a<<16^g;a=14;while(1){k=a;g=K[a+b|0];o=(g&15)<<3;e=o+m|0;a=J[e>>2];l=J[e+4>>2];p=g>>>1&120;e=p+m|0;q=J[e>>2];r=J[e+4>>2];e=n+o|0;j=J[e>>2];g=J[e+4>>2];e=J[((i&15)<<3)+180416>>2];j=((d&15)<<28|h>>>4)^j;g=e<<16^d>>>4^g;d=((f&15)<<28|i>>>4)^a;a=(h<<28|f>>>4)^l;e=a>>>4|0;i=((a&15)<<28|d>>>4)^q;f=(e|j<<28)^r;a=n+p|0;o=J[a>>2];l=J[a+4>>2];a=J[((d&15)<<3)+180416>>2];e=a<<16;h=((g&15)<<28|j>>>4)^o;d=g>>>4^e^l;a=k-1|0;if(k){continue}break}H[c+15|0]=i;H[c+7|0]=h;H[c+14|0]=(f&255)<<24|i>>>8;H[c+13|0]=(f&65535)<<16|i>>>16;H[c+12|0]=(f&16777215)<<8|i>>>24;H[c+11|0]=f;H[c+10|0]=f>>>8;H[c+9|0]=f>>>16;H[c+8|0]=f>>>24;H[c+6|0]=(d&255)<<24|h>>>8;H[c+5|0]=(d&65535)<<16|h>>>16;H[c+4|0]=(d&16777215)<<8|h>>>24;H[c+3|0]=d;H[c+2|0]=d>>>8;H[c+1|0]=d>>>16;H[c|0]=d>>>24}function kR(a,b){var c=0,d=0,e=0,f=0,g=0,h=0,i=0;g=Ui-16|0;Ui=g;c=L[b+88>>1];d=L[b+90>>1];I[g+14>>1]=d;a:{b:{c:{if((c|0)!=65535){e=J[a+16>>2];if(c>>>0>=J[a+20>>2]-e>>1>>>0){break a}e=L[e+(c<<1)>>1];f=J[a>>2];if(e>>>0>=(J[a+4>>2]-f|0)/104>>>0){break a}I[(f+P(e,104)|0)+90>>1]=d;if((d|0)==65535){break b}break c}if((d|0)!=65535){break c}c=J[a+80>>2];if(!c){break b}h=J[b+80>>2];i=J[a+76>>2]+((h>>>0)%(c>>>0)<<2)|0;d=J[i>>2];if((d|0)==-1){break b}f=J[a+84>>2];c=d;while(1){c=f+P(c,12)|0;if(J[c>>2]!=(h|0)){c=J[c+8>>2];if((c|0)!=-1){continue}break b}break}d:{c=f+P(d,12)|0;if(J[c>>2]==(h|0)){break d}while(1){e=c;d=J[c+8>>2];if((d|0)!=-1){c=f+P(d,12)|0;if(J[c>>2]!=(h|0)){continue}break d}break}Z(152754,55629,366,62656);B()}J[a+100>>2]=J[a+100>>2]-1;c=f+P(d,12)|0;J[(e?e+8|0:i)>>2]=J[c+8>>2];e=J[a+96>>2];J[a+96>>2]=d;J[c+8>>2]=e;break b}e=J[a+16>>2];if(d>>>0>=J[a+20>>2]-e>>1>>>0){break a}d=L[e+(d<<1)>>1];f=J[a>>2];if(d>>>0>=(J[a+4>>2]-f|0)/104>>>0){break a}I[(f+P(d,104)|0)+88>>1]=c;if((c|0)!=65535){break b}MC(a+76|0,J[b+80>>2],g+14|0)}J[b+76>>2]=0;J[b+80>>2]=0;J[b+84>>2]=0;J[b+88>>2]=-1;Ui=g+16|0;return}Z(145396,53895,487,84789);B()}function ZU(a,b,c,d,e){var f=Q(0),g=0,h=Q(0),i=0,j=Q(0),k=0,l=Q(0),m=0,n=0,o=Q(0),p=0,q=0,r=Q(0),s=Q(0),t=Q(0),u=Q(0),v=0,w=0,x=0;m=J[b+416>>2];a:{if((m|0)<=0){break a}j=N[e+8>>2];l=N[d+24>>2];r=N[e+12>>2];s=N[d+28>>2];f=N[c+8>>2];t=N[b+24>>2];h=N[c+12>>2];u=N[b+28>>2];o=Q(Q(Q(Q(j*l)+Q(r*s))+N[e+4>>2])-Q(Q(Q(f*t)+Q(h*u))+N[c+4>>2]));l=Q(Q(N[e>>2]+Q(Q(r*l)-Q(j*s)))-Q(N[c>>2]+Q(Q(h*t)-Q(f*u))));j=Q(Q(h*o)-Q(f*l));h=Q(Q(h*l)+Q(f*o));n=b+288|0;w=m&1;b:{if((m|0)==1){f=Q(-34028234663852886e22);break b}x=m&2147483646;f=Q(-34028234663852886e22);while(1){p=n+(i<<3)|0;o=Q(Q(N[p>>2]*h)+Q(j*N[p+4>>2]));p=o>f;v=i|1;q=n+(v<<3)|0;l=Q(Q(N[q>>2]*h)+Q(j*N[q+4>>2]));f=p?o:f;q=l>f;f=q?l:f;g=q?v:p?i:g;i=i+2|0;k=k+2|0;if((x|0)!=(k|0)){continue}break}}if(!w){break a}k=g;g=n+(i<<3)|0;g=Q(Q(N[g>>2]*h)+Q(j*N[g+4>>2]))>f?i:k}f=Ov(b,c,g,d,e);n=m-1|0;i=(g|0)>0?g-1|0:n;h=Ov(b,c,i,d,e);k=g+1|0;k=(m|0)>(k|0)?k:0;j=Ov(b,c,k,d,e);c:{if(!(!(f0?g-1|0:n;h=Ov(b,c,i,d,e);if(f>2]=g;return f}function dZ(a){a=a|0;var b=0,c=0,d=0,e=0,f=0,g=0,h=0,i=0,j=0,k=0,l=0;c=Ui-8400|0;Ui=c;d=Tn(a,1106);f=_o(a,2,8192);J[c+72>>2]=128;g=d+8|0;Po(g);h=c+208|0;if(f<4294967296&f>=0){b=~~f>>>0}else{b=0}i=b>>>0>=8192?8192:b;j=c+76|0;k=c+72|0;e=Ui-16|0;Ui=e;J[c+204>>2]=0;b=J[d>>2];a:{if((b|0)==-1){b=-2;break a}b:{b=Wr(b,h,i,j,k);if((b|0)<=0){while(1){if(!b){b=-2;break a}b=J[245744];c:{if((b|0)==27){break c}if((b|0)!=6){break a}b=J[d>>2];J[e+12>>2]=1;J[e+8>>2]=b;if(O[g>>3]==0){break b}while(1){l=e+8|0;f=Wq(g)*1e3;d:{if(R(f)<2147483648){b=~~f;break d}b=-2147483648}b=_q(l,1,(b|0)<0?-1:b);if((b|0)!=-1){if(b){break c}break b}b=J[245744];if((b|0)==27){continue}break}if(b){break a}}b=Wr(J[d>>2],h,i,j,k);if((b|0)<=0){continue}break}}J[c+204>>2]=b;b=0;break a}b=-1}Ui=e+16|0;e:{f:{switch(b+2|0){default:d=J[a+8>>2];J[d+8>>2]=0;J[a+8>>2]=d+16;xj(a,Tm(b));b=2;break e;case 0:case 2:break f}}b=3;d=ka(c+76|0,J[c+72>>2],c+16|0,46,c+10|0,6,3)|0;if(d){b=J[a+8>>2];J[b+8>>2]=0;J[a+8>>2]=b+16;xj(a,ru(d));b=2;break e}mj(a,c+208|0,J[c+204>>2]);xj(a,c+16|0);d=Tr(c+10|0,0);e=J[a+8>>2];J[e+8>>2]=3;O[e>>3]=d|0;J[a+8>>2]=J[a+8>>2]+16}Ui=c+8400|0;return b|0}function Ega(a){a=a|0;var b=0,c=0,d=0,e=0,f=0,g=0,h=0,i=0,j=Q(0),k=Q(0),l=Q(0),m=Q(0),n=Q(0),o=Q(0),p=Q(0),q=Q(0),r=Q(0),s=Q(0),t=Q(0),u=Q(0),v=0,w=0,x=0;b=Ui-160|0;Ui=b;g=J[a+8>>2]-J[a+12>>2]>>4;pk(a);d=mk(a,2);h=Yi;e=mk(a,3);i=Yi;f=Hs(a,4);a:{if(f){c=zB(a,4);j=N[c+60>>2];k=N[c+56>>2];l=N[c+52>>2];m=N[c+48>>2];n=N[c+44>>2];o=N[c+40>>2];p=N[c+36>>2];q=N[c+32>>2];r=N[c+28>>2];s=N[c+24>>2];t=N[c+20>>2];u=N[c+16>>2];break a}c=Qm(a,4)}v=J[c>>2];w=J[c+4>>2];x=J[c+12>>2];c=J[c+8>>2];H[b+144|0]=f;N[b+140>>2]=j;N[b+136>>2]=k;N[b+132>>2]=l;N[b+128>>2]=m;N[b+124>>2]=n;N[b+120>>2]=o;N[b+116>>2]=p;N[b+112>>2]=q;N[b+108>>2]=r;N[b+104>>2]=s;N[b+100>>2]=t;N[b+96>>2]=u;J[b+88>>2]=c;J[b+92>>2]=x;J[b+80>>2]=v;J[b+84>>2]=w;J[b+72>>2]=e;J[b+76>>2]=i;J[b+64>>2]=d;J[b+68>>2]=h;J[b+56>>2]=0;J[b+60>>2]=0;J[b+48>>2]=0;J[b+52>>2]=0;J[b+40>>2]=0;J[b+44>>2]=0;J[b+32>>2]=0;J[b+36>>2]=0;J[b+24>>2]=0;J[b+28>>2]=0;J[b+16>>2]=0;J[b+20>>2]=0;J[b+8>>2]=0;J[b+12>>2]=0;J[b>>2]=0;J[b+4>>2]=0;e=b+32|0;Sk(a,1,e,b);d=J[57096];Jk(b,e,J[d+8>>2],J[d+12>>2],0,0,d,b- -64|0,96,0);if(J[a+8>>2]-J[a+12>>2]>>4!=(g|0)){Z(143244,37079,344,14222);B()}Ui=b+160|0;return 0}function iG(a,b,c,d){var e=0,f=0,g=0,h=0,i=0,j=0,k=0,l=0,m=0,n=0,o=0,p=0;k=Ui-16|0;Ui=k;a:{b:{c:{if((c|0)<=36){e=K[a|0];if(e){break c}f=a;break b}J[245744]=28;d=0;break a}f=a;d:{while(1){g=e<<24>>24;if(!((g|0)==32|g-9>>>0<5)){break d}e=K[f+1|0];f=f+1|0;if(e){continue}break}break b}e:{e=e&255;switch(e-43|0){case 0:case 2:break e;default:break b}}h=(e|0)==45?-1:0;f=f+1|0}f:{if(!((c|16)!=16|K[f|0]!=48)){n=1;if((K[f+1|0]&223)==88){f=f+2|0;l=16;break f}f=f+1|0;l=c?c:8;break f}l=c?c:10}c=0;while(1){g:{g=K[f|0];e=g-48|0;h:{if((e&255)>>>0<10){break h}if((g-97&255)>>>0<=25){e=g-87|0;break h}if((g-65&255)>>>0>25){break g}e=g-55|0}g=e&255;if((g|0)>=(l|0)){break g}Am(k,l,0,0,0,i,j,0,0);e=1;i:{if(J[k+8>>2]|J[k+12>>2]){break i}o=ixa(i,j,l,0);m=Yi;if((m|0)==-1&(g^-1)>>>0>>0){break i}i=g+o|0;j=i>>>0>>0?m+1|0:m;n=1;e=c}f=f+1|0;c=e;continue}break}if(b){J[b>>2]=n?f:a}j:{k:{if(c){J[245744]=68;a=d&1;h=a?0:h;i=d;j=0;break k}if(!j&d>>>0>i>>>0){break j}a=d&1}if(!(a|h)){J[245744]=68;a=d;d=a-1|0;p=0-!a|0;break a}if(!j&d>>>0>=i>>>0){break j}J[245744]=68;break a}a=h^i;d=a-h|0;b=h>>31;p=(b^j)-((a>>>0>>0)+b|0)|0}Ui=k+16|0;Yi=p;return d}function fS(a,b,c){var d=0,e=0,f=0,g=0,h=0,i=0,j=0,k=0,l=0;g=Ui-32|0;Ui=g;a:{if(c){j=$R(b);b:{if(!Ry(b)){while(1){f=2;if(!Dr(b,g+28|0)){break b}d=J[g+28>>2];if(d>>>0<8){break b}k=d&7;c:{d:{h=K[c+24|0];e:{if(!h){break e}e=d>>>3|0;l=J[c+20>>2];f=0;while(1){i=P(f,24)+l|0;d=J[i+4>>2];if((e|0)!=(d&4194303)){f=f+1|0;if((h|0)!=(f|0)){continue}break e}break}if((d&-268435456)==805306368){d=Ui-16|0;Ui=d;J[d+12>>2]=j;J[d+8>>2]=e;f=ZC(d+8|0,8);e=J[a+24>>2];if((e|0)==((J[a+16>>2]-J[a+8>>2]|0)/12|0)){XC(a,2048,e+1024|0)}f:{g:{e=J[a+4>>2];h:{if(!e){break h}e=J[J[a>>2]+((f>>>0)%(e>>>0)<<2)>>2];if((e|0)==-1){break h}h=J[a+8>>2];while(1){e=h+P(e,12)|0;if((f|0)==J[e>>2]){break g}e=J[e+8>>2];if((e|0)!=-1){continue}break}}J[d+4>>2]=1;av(a,f,d+4|0);break f}J[e+4>>2]=J[e+4>>2]+1}Ui=d+16|0;d=J[i+4>>2]}if((d&264241152)==46137344){break d}}f=YR(b,k);if(!f){break c}break b}if(!J[i+8>>2]){break a}if(!Dr(b,g+24|0)){f=2;break b}d=g+12|0;J[d+8>>2]=0;J[d>>2]=0;J[d+4>>2]=0;if(!aS(b,J[g+24>>2],d)){f=2;break b}f=fS(a,d,J[i+8>>2]);if(f){break b}}if(!Ry(b)){continue}break}}f=0}Ui=g+32|0;return f}Z(81610,41181,86,74186);B()}Z(31981,41181,124,74186);B()}function OB(a,b,c,d){var e=Q(0),f=Q(0),g=0,h=Q(0),i=0,j=0,k=0,l=Q(0),m=0;j=Ui-16|0;Ui=j;g=J[b>>2];a:{if(!g){break a}k=K[b+28|0];if(!(k&1)){break a}h=N[b+16>>2];e=h;i=J[b+24>>2];if(i){e=Q(Q(c*N[b+20>>2])+e);N[b+16>>2]=e}f=N[g+8>>2];l=Q(f+f);f=(i|0)==3?l:f;if(f==Q(0)){J[b+16>>2]=0;e=Q(0)}b:{c:{d:{switch(i-1|0){case 5:if(!(f>Q(0))|!(e>=f)){break b}while(1){k=k^2;e=Q(e-f);if(f<=e){continue}break};H[b+28|0]=k;break c;case 0:case 1:case 2:if(!(e>=f)){break b}N[b+16>>2]=f;m=1;e=f;break b;case 3:case 4:break d;default:break b}}if(!(f>Q(0))|!(e>=f)){break b}while(1){e=Q(e-f);if(f<=e){continue}break}}N[b+16>>2]=e}e:{if(!J[a+100>>2]|e==h){break e}e=m?Q(c+e):e;if(e>>1^(i|0)==6,d);Js(a,g,Q(0),e,f,(K[b+28|0]&2)>>>1|0,d);break e}f:{if((i|0)!=3){break f}c=Q(f*Q(.5));if(!(ch){Js(a,g,h,c,l,0,d);Js(a,g,c,e,l,1,d);break e}Js(a,g,h,e,l,1,d);break e}Js(a,g,h,e,f,(k&2)>>>1|0,d)}if(!m){break a}H[b+28|0]=K[b+28|0]&254;if((((H[a+186|0]&1)<<5)+a|0)!=(b|0)){break a}i=J[a+100>>2];if(!i){break a}m=J[b+12>>2];J[j>>2]=J[b+8>>2];J[j+4>>2]=m;J[j+8>>2]=J[b+24>>2];Zi[i|0](0,j,J[a+104>>2],J[a+108>>2])}Ui=j+16|0}function Xr(a,b,c,d,e){var f=0,g=0,h=0,i=0,j=0,k=0,l=0,m=0,n=0;g=Ui-80|0;Ui=g;J[g+32>>2]=0;J[g+36>>2]=0;J[g+40>>2]=0;J[g+44>>2]=0;J[g+48>>2]=0;J[g+52>>2]=0;J[g+56>>2]=0;J[g+60>>2]=0;f=g- -64|0;J[f>>2]=0;J[f+4>>2]=0;J[g+72>>2]=0;J[g+76>>2]=0;J[g+16>>2]=0;J[g+20>>2]=0;J[g+24>>2]=0;J[g+28>>2]=0;J[g+12>>2]=0;f=J[e>>2];if(f){f=J[f+8>>2]}else{f=0}j=f&255;a:{if(b){while(1){f=-20736;b:{if(!e){break b}h=J[e>>2];if(!h){break b}f=Zi[J[h+16>>2]](J[e+4>>2])|0}if(f){break a}f=Uo(e,c,d);if(f){break a}f=Uo(e,g+12|0,4);if(f){break a}h=g+16|0;f=-20736;c:{if(!e){break c}i=J[e>>2];if(!i){break c}f=Zi[J[i+24>>2]](J[e+4>>2],h)|0}if(f){break a}h=b>>>0>>0?b:j;d:{if(!j){break d}f=h>>>0<=1?1:h;m=f&3;k=0;e:{if(h>>>0<4){f=0;break e}n=f&252;f=0;l=0;while(1){i=(g+16|0)+f|0;H[a|0]=K[a|0]^K[i|0];H[a+1|0]=K[a+1|0]^K[i+1|0];H[a+2|0]=K[a+2|0]^K[i+2|0];H[a+3|0]=K[a+3|0]^K[i+3|0];f=f+4|0;a=a+4|0;l=l+4|0;if((n|0)!=(l|0)){continue}break}}if(!m){break d}while(1){H[a|0]=K[a|0]^K[(g+16|0)+f|0];f=f+1|0;a=a+1|0;k=k+1|0;if((k|0)!=(m|0)){continue}break}}H[g+15|0]=K[g+15|0]+1;b=b-h|0;if(b){continue}break}}f=0}Zi[J[66509]](g+16|0,0,64)|0;Ui=g+80|0;return f}function Ek(a,b,c){var d=0,e=0,f=0,g=0,h=0;J[a+12>>2]=J[a+12>>2]+c;a:{if(!c){break a}e=J[a+8>>2];g=b;d=c;while(1){if(!(!e&(d|0)>=4)){h=K[g|0];f=e+1|0;J[a+8>>2]=f;e=J[a+4>>2]|h<<(e<<3);J[a+4>>2]=e;g=g+1|0;if((f|0)==4){J[a+4>>2]=0;J[a+8>>2]=0;e=P(e,1540483477);J[a>>2]=P(J[a>>2],1540483477)^P(e>>>24^e,1540483477);f=0}e=f;d=d-1|0;if(d){continue}break a}break}e=J[a>>2];while(1){f=P(K[g|0]|K[g+1|0]<<8|(K[g+2|0]<<16|K[g+3|0]<<24),1540483477);e=P(f>>>24^f,1540483477)^P(e,1540483477);J[a>>2]=e;g=g+4|0;h=d>>>0>7;f=d-4|0;d=f;if(h){continue}break}if(!d){break a}d=J[a+8>>2];while(1){if(!d&(f|0)>=4){break a}h=K[g|0];e=d+1|0;J[a+8>>2]=e;d=J[a+4>>2]|h<<(d<<3);J[a+4>>2]=d;g=g+1|0;if((e|0)==4){J[a+4>>2]=0;J[a+8>>2]=0;d=P(d,1540483477);J[a>>2]=P(J[a>>2],1540483477)^P(d>>>24^d,1540483477);d=0}else{d=e}f=f-1|0;if(f){continue}break}}if(!K[874264]){nl();H[874264]=1}b:{c:{if(K[874164]!=1){break c}d=J[a+16>>2];if(!d|M[a+12>>2]>1024){break c}a=J[218558];if(d>>>0>=J[218559]-a>>3>>>0){break b}a=a+(d<<3)|0;d=L[a+4>>1]+c|0;e=ml(J[a>>2],(d&-16)+32|0);J[a>>2]=e;hj(e+L[a+4>>1]|0,b,c);H[d+e|0]=0;I[a+4>>1]=d}return}Z(145396,54052,487,84789);B()}function rq(a,b){var c=Q(0),d=Q(0),e=Q(0),f=Q(0),g=Q(0),h=Q(0),i=Q(0),j=Q(0),k=Q(0),l=Q(0),m=Q(0),n=0,o=0,p=Q(0),q=Q(0),r=0,s=0,t=0;i=N[b+32>>2];g=N[b+36>>2];e=N[b+40>>2];h=N[b+16>>2];d=N[b+20>>2];j=N[b+24>>2];a:{b:{f=N[b+12>>2];c=Q(f*f);k=N[b+8>>2];p=N[b+4>>2];f=N[b>>2];l=Q(c+Q(Q(k*k)+Q(Q(p*p)+Q(f*f))));if(l==Q(0)){break b}c=N[b+28>>2];m=Q(Q(c*c)+Q(Q(j*j)+Q(Q(d*d)+Q(h*h))));if(m==Q(0)){break b}c=N[b+44>>2];c=Q(Q(c*c)+Q(Q(e*e)+Q(Q(g*g)+Q(i*i))));if(c==Q(0)){break b}q=Q(Y(c));c=Q(Q(1)/q);e=Q(e*c);g=Q(g*c);i=Q(i*c);m=Q(Y(m));c=Q(Q(1)/m);j=Q(j*c);d=Q(d*c);h=Q(h*c);l=Q(Y(l));c=Q(Q(1)/l);k=Q(k*c);p=Q(p*c);f=Q(f*c);break a}l=Q(1);m=Q(1);q=Q(1)}n=Q(Q(f+d)+e)f;r=n&(s&o^-1);t=d>f;o=n&(o|t);n=n&(t^-1|s);e=Q(Q((r?Q(-e):e)+Q((o?Q(-f):f)+(n?Q(-d):d)))+Q(1));d=Q(Q(Q(1)/Q(Y(e)))*Q(.5));c=Q(e*d);h=Q(Q(p-(r?Q(-h):h))*d);e=Q(Q(i-(n?Q(-k):k))*d);d=Q(Q(j-(o?Q(-g):g))*d);c:{if(!r){f=d;g=e;e=h;d=c;break c}f=c;g=h}c=N[b+56>>2];h=N[b+52>>2];j=N[b+48>>2];d:{if(!o){i=f;f=g;g=e;e=d;break d}i=g;g=d}N[a+40>>2]=q;N[a+36>>2]=m;N[a+32>>2]=l;N[a+24>>2]=c;N[a+20>>2]=h;N[a+16>>2]=j;N[a+12>>2]=e;N[a+8>>2]=g;N[a+4>>2]=f;N[a>>2]=i}function npa(a){a=a|0;var b=0,c=0,d=0,e=0,f=0,g=0,h=0;b=Ui-160|0;Ui=b;d=a;if((kj(a,1)|0)==8){f=1;d=so(a,1)}c=f|2;a:{if(kk(a,c)){c=sl(a,c);gj(a,-2);break a}c=(a|0)==(d|0)}b:{c:{if(J[a+8>>2]-J[a+12>>2]>>4==(f|0)){mj(a,158859,0);break c}if(!Mk(a,f+1|0)){break b}mj(a,158634,1)}mj(a,102653,16);d:{if(!Zl(d,c,b+60|0)){break d}g=b+96|0;e=1;e:while(1){h=e^-1;e=c;while(1){c=e;e=c+1|0;if(!(((c|0)<12|h)&1)){if(Zl(d,c+11|0,b+60|0)){mj(a,131432,5);while(1){c=e;e=c+1|0;if(Zl(d,c+10|0,b+60|0)){continue}break}}e=0;if(Zl(d,c,b+60|0)){continue e}break d}mj(a,158636,2);Yo(d,49518,b+60|0);J[b+48>>2]=g;ik(a,102632,b+48|0);c=J[b+80>>2];if((c|0)>0){J[b+32>>2]=c;ik(a,102679,b+32|0)}f:{if(K[J[b+68>>2]]){J[b+16>>2]=J[b+64>>2];ik(a,147309,b+16|0);break f}g:{h:{i:{j:{c=K[J[b+72>>2]];switch(c-109|0){case 7:break g;case 1:case 2:case 3:case 4:case 5:case 6:break h;case 0:break j;default:break i}}ik(a,50962,0);break f}if((c|0)==67){break g}}J[b>>2]=g;J[b+4>>2]=J[b+88>>2];ik(a,102525,b);break f}mj(a,102199,2)}lm(a,(J[a+8>>2]-J[a+12>>2]>>4)-f|0);if(Zl(d,e,b+60|0)){continue}break}break}}lm(a,(J[a+8>>2]-J[a+12>>2]>>4)-f|0)}Ui=b+160|0;return 1}function W6(a,b,c,d,e,f){a=a|0;b=b|0;c=c|0;d=d|0;e=e|0;f=Q(f);var g=Q(0),h=0,i=Q(0);g=Q(-1);a:{b:{c:{if(K[b+44|0]|J[J[b+8>>2]+148>>2]==J[a+92>>2]){break c}h=J[b+40>>2]+P(P(H[J[b+12>>2]+20|0]&1,c),6)|0;if(!(L[a+98>>1]&L[h>>1])|!(L[a+96>>1]&L[h+2>>1])){break c}N[a+16>>2]=f;H[a+70|0]=K[a+70|0]|1;I[a+68>>1]=L[J[b+40>>2]+P(P(H[J[b+12>>2]+20|0]&1,c),6)>>1];J[a+64>>2]=J[J[b+8>>2]+148>>2];N[a+48>>2]=N[e>>2];g=N[e+4>>2];J[a+56>>2]=0;N[a+52>>2]=g;g=N[J[a+4>>2]+68>>2];N[a+32>>2]=g*N[d>>2];i=N[d+4>>2];J[a+40>>2]=0;N[a+36>>2]=g*i;g=f;if(!(H[a+100|0]&1)){break c}c=J[a+88>>2];b=J[c+4>>2];e=J[c+8>>2];if((b|0)==(e|0)){if(H[c+12|0]&1){break b}lj((b-J[c>>2]>>6)+32|0,64,c,c+8|0,c+4|0);c=J[a+88>>2];b=J[c+4>>2];e=J[c+8>>2]}if((b|0)==(e|0)){break a}J[c+4>>2]=b- -64;N[b>>2]=N[a+16>>2];N[b+16>>2]=N[a+32>>2];N[b+20>>2]=N[a+36>>2];N[b+24>>2]=N[a+40>>2];N[b+32>>2]=N[a+48>>2];N[b+36>>2]=N[a+52>>2];N[b+40>>2]=N[a+56>>2];a=a- -64|0;J[b+48>>2]=J[a>>2];a=K[a+3|0]|K[a+4|0]<<8|(K[a+5|0]<<16|K[a+6|0]<<24);H[b+51|0]=a;H[b+52|0]=a>>>8;H[b+53|0]=a>>>16;H[b+54|0]=a>>>24;g=Q(1)}return Q(g)}Z(151729,53895,501,2284);B()}Z(112520,53895,557,53220);B()}function Ht(a,b,c){var d=0,e=0,f=0,g=0,h=0;d=J[b>>2];a:{if(!d){break a}f=J[a+16>>2];g=K[f+20|0]^3;while(1){if(!c){break a}if(K[d+4|0]==8){Ht(a,d+104|0,-3)}e=K[d+5|0];b:{if((e^3)&g){H[d+5|0]=K[f+20|0]&3|e&248;b=d;break b}e=J[d>>2];J[b>>2]=e;if(J[f+28>>2]==(d|0)){J[f+28>>2]=e}c:{switch(K[d+4|0]-4|0){case 5:lk(a,J[d+12>>2],J[d+44>>2]<<2,0);lk(a,J[d+16>>2],J[d+52>>2]<<2,0);lk(a,J[d+8>>2],J[d+40>>2]<<4,0);lk(a,J[d+20>>2],J[d+48>>2]<<2,0);lk(a,J[d+24>>2],P(J[d+56>>2],12),0);lk(a,J[d+28>>2],J[d+36>>2]<<2,0);lk(a,d,76,0);break b;case 2:e=d;h=K[d+7|0];d=K[d+6|0];lk(a,e,(h<<(d?4:2))+(d?24:20)|0,0);break b;case 6:if(J[d+8>>2]!=(d+16|0)){e=J[d+16>>2];J[J[d+20>>2]+16>>2]=e;J[e+20>>2]=J[d+20>>2]}lk(a,d,32,0);break b;case 1:e=J[d+16>>2];if((e|0)!=173648){lk(a,e,32<>2],J[d+28>>2]<<4,0);lk(a,d,32,0);break b;case 4:Hp(d,J[d+32>>2]);lk(a,J[d+40>>2],P(J[d+48>>2],24),0);lk(a,J[d+32>>2],J[d+44>>2]<<4,0);lk(a,d,120,0);break b;case 0:e=J[a+16>>2];J[e+4>>2]=J[e+4>>2]-1;lk(a,d,J[d+12>>2]+17|0,0);break b;case 3:break c;default:break b}}lk(a,d,J[d+16>>2]+32|0,0)}c=c-1|0;d=J[b>>2];if(d){continue}break}}return b}function RV(a,b){var c=0,d=0,e=0,f=0,g=0,h=0,i=0,j=0,k=0,l=0,m=0,n=0,o=0,p=0;a:{f=J[a+16>>2];d=J[a+20>>2];c=f-d|0;if(c>>>0>=b>>>0){break a}e=J[a+32>>2];l=a+24|0;b:{if((e|0)==(l|0)|!e){break b}while(1){c=J[e+4>>2];d=J[e>>2];J[e>>2]=0;J[e+4>>2]=0;J[d+4>>2]=c;J[c>>2]=d;c:{g=J[a+4>>2];d=J[a>>2];d:{if((g|0)==(d|0)){break d}m=J[e+8>>2];k=J[e+12>>2];c=d;h=g-c>>2;f=h;while(1){i=f>>>1|0;j=(i<<2)+c|0;n=J[j>>2];o=j+4|0;p=c;c=J[n+12>>2];j=(k|0)==(c|0)&m>>>0>M[n+8>>2]|c>>>0>>0;c=j?o:p;f=j?(i^-1)+f|0:i;if(f){continue}break}if((c|0)==(g|0)){break d}c=c-d>>2;if(h>>>0<=c>>>0){break d}i=J[e+24>>2];while(1){f=d+(c<<2)|0;g=J[f>>2];if((m|0)==J[g+8>>2]&(k|0)==J[g+12>>2]&!((J[g+24>>2]^i)&2147483647)){break c}c=c+1|0;if((h|0)!=(c|0)){continue}break}}Z(62644,41916,252,5608);B()}el(f,f+4|0,(c^-1)+h<<2);e:{d=h-1|0;c=J[a>>2];if(d>>>0<=J[a+8>>2]-c>>2>>>0){J[a+4>>2]=c+(d<<2);J[a+20>>2]=J[a+20>>2]-J[e+20>>2];c=J[e+16>>2];if(c){cj(c)}cj(e);f=J[a+16>>2];d=J[a+20>>2];c=f-d|0;if(c>>>0>>0){break e}break a}Z(144782,53895,514,59583);B()}e=J[a+32>>2];if((l|0)==(e|0)){break b}if(e){continue}break}}return f-d>>>0>=b>>>0}return b>>>0<=c>>>0}function Sr(a,b,c){var d=0,e=0,f=0,g=0,h=0,i=0,j=0,k=0,l=0,m=0,n=0,o=0,p=0,q=0,r=0,s=0,t=0;while(1){q=b;f=J[a+12>>2]+((b+c|0)/2<<4)|0;r=J[f+8>>2];j=J[f+4>>2];k=J[f>>2];f=c;while(1){s=J[a+12>>2];while(1){d=-1;i=-1;e=(b<<4)+s|0;l=J[e>>2];if(l){i=J[l+12>>2]}d=k?J[k+12>>2]:d;g=-1;h=-1;m=J[e+4>>2];if(m){h=J[m+12>>2]}g=j?J[j+12>>2]:g;a:{b:{if((d|0)<(i|0)){break b}d=(k|0)!=(l|0);if(!(d|(h|0)>(g|0))){if((j|0)!=(m|0)){break a}if(M[e+8>>2]>r>>>0){break b}break a}if((h|0)<=(g|0)|d){break a}}b=b+1|0;continue}break}while(1){t=f<<4;d=t+s|0;i=-1;g=-1;g=k?J[k+12>>2]:g;o=J[d>>2];if(o){i=J[o+12>>2]}h=-1;n=-1;n=j?J[j+12>>2]:n;p=J[d+4>>2];if(p){h=J[p+12>>2]}c:{d:{if((g|0)>(i|0)){break d}g=(k|0)!=(o|0);if(!(g|(h|0)<(n|0))){if((j|0)!=(p|0)){break c}if(M[d+8>>2]>>0){break d}break c}if((h|0)>=(n|0)|g){break c}}f=f-1|0;continue}break}if((b|0)<=(f|0)){h=J[d+4>>2];J[e>>2]=J[d>>2];J[e+4>>2]=h;h=J[e+8>>2];g=J[e+12>>2];i=J[d+12>>2];J[e+8>>2]=J[d+8>>2];J[e+12>>2]=i;e=J[a+12>>2]+t|0;J[e+4>>2]=m;J[e+8>>2]=h;J[e+12>>2]=g;J[e>>2]=l;f=f-1|0;b=b+1|0}if((b|0)<=(f|0)){continue}break}if((f|0)>(q|0)){Sr(a,q,f)}if((b|0)<(c|0)){continue}break}}function Yca(a){a=a|0;var b=0,c=0,d=Q(0),e=0,f=0,g=0,h=0,i=0,j=0,k=0,l=Q(0),m=0,n=Q(0);f=Ui-16|0;Ui=f;m=J[a+8>>2]-J[a+12>>2]>>4;g=mk(a,1);i=Yi;h=wj(a,2);J[f+12>>2]=0;J[f+8>>2]=0;d=Q(h);c=-13;e=J[245446];j=J[e+16>>2];if(j){Tj(j);e=J[245446]}b=J[e+80>>2];a:{if(!b){break a}b=J[J[e+76>>2]+(mxa(g,i,b)<<2)>>2];if((b|0)==-1){break a}k=J[e+84>>2];while(1){b=k+(b<<4)|0;if(J[b>>2]!=(g|0)|J[b+4>>2]!=(i|0)){b=J[b+12>>2];if((b|0)!=-1){continue}break a}break}g=0;d=Q(d*Q(M[e+33916>>2]));b:{if(d=Q(0)){c=~~d>>>0;break b}c=0}c:{if((c|0)<=0){e=J[e+33924>>2];d=Q(0);break c}b=P(J[b+8>>2],1056)+e|0;i=b+136|0;b=J[b+1160>>2];e=J[e+33924>>2];d=Q(0);while(1){g=g+1|0;b=b-1&63;k=(b<<3)+i|0;d=Q(d+N[k>>2]);l=Q(l+N[k+4>>2]);c=c-e|0;if((c|0)>0){continue}break}}n=d;d=Q(P(e,g)>>>0);N[f+12>>2]=Q(Y(Q(n/d)))/Q(32767);N[f+8>>2]=Q(Y(Q(l/d)))/Q(32767);c=0}if(j){Lj(j)}if(c){J[f>>2]=c;dj(3,88458,141677,f)}h=+N[f+12>>2];c=J[a+8>>2];J[c+8>>2]=3;O[c>>3]=h;J[a+8>>2]=J[a+8>>2]+16;h=+N[f+8>>2];c=J[a+8>>2];J[c+8>>2]=3;O[c>>3]=h;J[a+8>>2]=J[a+8>>2]+16;if((m+2|0)!=J[a+8>>2]-J[a+12>>2]>>4){Z(143309,42276,211,88917);B()}Ui=f+16|0;return 2}function Vna(a){a=a|0;var b=0,c=0,d=0,e=0,f=0,g=0,h=0,i=0,j=0;b=J[a+12>>2];if(!b){return-1e3}c=ij(nj(112),0,112);J[c+92>>2]=0;J[c+96>>2]=0;J[c+76>>2]=0;J[c+80>>2]=0;J[c+64>>2]=-1;J[c+84>>2]=0;J[c+88>>2]=0;J[c+100>>2]=0;J[c+104>>2]=0;J[c+96>>2]=-1;J[b>>2]=c;lj(512,104,c,c+8|0,c+4|0);a:{b:{if(!(H[c+28|0]&1)){lj(65e3,2,c+16|0,c+24|0,c+20|0);b=J[c+16>>2];if(J[c+24>>2]-b>>>0<=129999){break b}J[c+20>>2]=b+13e4;d=L[c+36>>1];if(d>>>0>=65001){break a}i=c+76|0;j=c+44|0;f=J[c+32>>2];b=sj(13e4);J[c+32>>2]=b;e=hj(b,f,d<<1);I[c+36>>1]=65e3;c:{if((d|0)==65e3){break c}g=0-d&7;d:{if(!g){b=d;break d}b=d;while(1){I[(b<<1)+e>>1]=b;b=b+1|0;h=h+1|0;if((g|0)!=(h|0)){continue}break}}if(d-64993>>>0<7){break c}while(1){I[(b<<1)+e>>1]=b;d=b+1|0;I[(d<<1)+e>>1]=d;d=b+2|0;I[(d<<1)+e>>1]=d;d=b+3|0;I[(d<<1)+e>>1]=d;d=b+4|0;I[(d<<1)+e>>1]=d;d=b+5|0;I[(d<<1)+e>>1]=d;d=b+6|0;I[(d<<1)+e>>1]=d;d=b+7|0;I[(d<<1)+e>>1]=d;b=b+8|0;if((b|0)!=65e3){continue}break}}cj(f);a=J[a+8>>2];b=(a|0)/3|0;b=(b|0)<=1?1:b;LC(j,b,a);LC(i,b,a);H[c+108|0]=K[c+108|0]&254;return 0}Z(151729,53895,501,2284);B()}Z(144782,53895,514,59583);B()}Z(2627,54340,112,2284);B()}function Rha(a){a=a|0;var b=0,c=0,d=0,e=0,f=0,g=0,h=0,i=0,j=0;c=Ui-96|0;Ui=c;f=pj(c+76|0,a,0,39971,522);a:{if((kj(a,1)|0)==7){e=qj(a,1,J[77574],0);if(e){if(lo(J[e>>2])){break a}}fj(a,72312,0)}Yk(a,1,49251);e=0}i=Ej(a,2);b:{if((uq(a,3)|0)==J[77574]){c:{if((kj(a,3)|0)==7){b=qj(a,3,J[77574],0);if(b){if(lo(J[b>>2])){break c}}fj(a,72312,0)}Yk(a,3,49251);b=0}j=Ej(a,4);a=Ej(a,5);if(!b){break b}d=J[e+40>>2];if((d|0)!=J[b+40>>2]){a=d>>>0>8?64412:J[(d<<2)+266e3>>2];b=J[b+40>>2];if(b>>>0>8){b=64412}else{b=J[(b<<2)+266e3>>2]}J[c+68>>2]=b;J[c+64>>2]=a;g=Jj(f,146414,c- -64|0);break b}h=J[e+36>>2];if((h|0)!=J[b+36>>2]){a=d>>>0>8?64412:J[(d<<2)+266e3>>2];e=J[b+36>>2];b=J[b+40>>2];if(b>>>0>8){b=64412}else{b=J[(b<<2)+266e3>>2]}J[c+60>>2]=b;J[c+56>>2]=e;J[c+52>>2]=a;J[c+48>>2]=h;g=Jj(f,146332,c+48|0);break b}d=J[e+28>>2];if(a+i>>>0>P(d,h)>>>0){J[c+8>>2]=a;J[c+4>>2]=i;J[c>>2]=d;g=Jj(f,78751,c);break b}d=J[b+28>>2];if(a+j>>>0>P(d,h)>>>0){J[c+24>>2]=a;J[c+20>>2]=j;J[c+16>>2]=d;g=Jj(f,78834,c+16|0);break b}if(DQ(e,i,b,j,a)){break b}J[c+32>>2]=J[e+40>>2];g=Jj(f,79795,c+32|0);break b}g=Yk(a,3,49251)}oj(f);Ui=c+96|0;return g|0}function _C(a,b,c){var d=0,e=0,f=0;e=Ui-144|0;Ui=e;a:{b:{d=0;c:{if((a+4|0)==(b|0)){break c}d=1;if((a+152|0)==(b|0)){break c}d=2;if((a+300|0)==(b|0)){break c}d=3;if((a+448|0)==(b|0)){break c}d=4;if((a+596|0)==(b|0)){break c}d=5;if((a+744|0)==(b|0)){break c}d=6;if((a+892|0)==(b|0)){break c}d=7;if((a+1040|0)==(b|0)){break c}d=8;if((a+1188|0)==(b|0)){break c}d=9;if((a+1336|0)==(b|0)){break c}d=10;if((a+1484|0)==(b|0)){break c}d=11;if((a+1632|0)==(b|0)){break c}d=12;if((a+1780|0)==(b|0)){break c}d=13;if((a+1928|0)==(b|0)){break c}d=14;if((a+2076|0)==(b|0)){break c}if((a+2224|0)!=(b|0)){break b}d=15}d:{if(H[b+147|0]>=0^c){break d}f=J[a+3464>>2];e:{if(f){if(Zi[f|0](d,c,J[a+3468>>2])|0){break e}c=J[a+3476>>2];H[e+16|0]=0;d=K[b+144|0];if((d|0)!=255){f=J[c+4>>2];c=J[c>>2];if(d>>>0>=f-c>>2>>>0){break a}f=a;a=J[c+(d<<2)>>2];Zi[J[a+16>>2]](f,a,b,e+16|0)}J[e>>2]=e+16;dj(3,97141,153358,e);break d}dj(3,97141,153420,0)}if(!a){Z(9197,42458,220,1582);B()}a=P(d,148)+a|0;H[a+144|0]=K[a+144|0]&252|(c^1|(c?2:0));H[b+147|0]=K[b+147|0]&127|(c?-128:0)}Ui=e+144|0;return}Z(114101,41200,80,5479);B()}Z(145028,41200,341,66114);B()}function kja(a){a=a|0;var b=0,c=0,d=0,e=0,f=0,g=0;e=Ui-112|0;Ui=e;b=J[a+4>>2];d=J[b+20>>2];c=J[J[a+12>>2]>>2];if(c>>>0>2]-d>>3>>>0){d=J[d+(c<<3)>>2];c=J[b+8>>2];b=J[b+4>>2];if(d>>>0>2>>>0){c=J[b+(d<<2)>>2];b=J[a+16>>2];d=J[b+64>>2];f=J[55237];g=J[b+68>>2];a:{if((d|0)==J[f+8>>2]&(g|0)==J[f+12>>2]){H[c+204|0]=K[c+204|0]|1;break a}f=J[55238];if((d|0)==J[f+8>>2]&(g|0)==J[f+12>>2]){H[c+204|0]=K[c+204|0]&254;break a}if(!J[b+80>>2]){break a}f=J[57150];if((d|0)==J[f+8>>2]&(g|0)==J[f+12>>2]){d=J[b+96>>2];g=J[b+100>>2];f=J[J[J[c+152>>2]+8>>2]>>2];N[e+16>>2]=N[b+112>>2];N[e+20>>2]=N[b+116>>2];N[e+24>>2]=N[b+120>>2];N[e+28>>2]=N[b+124>>2];if((Wp(f,d,g,Yp(e+40|0,e+16|0),J[b+128>>2],282,c)|0)!=-1){break a}a=J[a+16>>2];d=dm(J[a+32>>2],J[a+36>>2]);c=tj(J[a+48>>2],J[a+52>>2]);a=tj(J[a+56>>2],J[a+60>>2]);J[e+12>>2]=tj(J[b+96>>2],J[b+100>>2]);J[e+8>>2]=a;J[e+4>>2]=c;J[e>>2]=d;dj(4,88458,149025,e);break a}a=J[57166];if(J[a+8>>2]!=(d|0)|J[a+12>>2]!=(g|0)){break a}a=J[c+148>>2];if(!a){break a}if(!wy(a,J[b+96>>2],J[b+100>>2])){break a}H[c+204|0]=K[c+204|0]|4}Ui=e+112|0;return 0}}Z(145396,53895,487,84789);B()}function JD(a){var b=0,c=0,d=0,e=0,f=0,g=0,h=0,i=0,j=0,k=0,l=0,m=0,n=0,o=0,p=0,q=0,r=0,s=0,t=0,u=0,v=0,w=0,x=0,y=0;c=Ui-16|0;Ui=c;J[c+12>>2]=0;J[c+8>>2]=0;b=J[a+64>>2];J[c+12>>2]=b;J[c+8>>2]=(J[a+68>>2]-b|0)/56;e=J[c+8>>2];a:{if(!e){break a}i=J[78812];j=J[78813];k=J[78814];l=J[78815];m=J[78816];n=J[78817];o=J[78818];p=J[78819];q=J[78822];r=J[78823];s=J[78820];t=J[78821];u=J[78826];v=J[78827];w=J[78828];x=J[78829];a=0;y=J[c+12>>2];f=1;while(1){b=P(a,56)+y|0;g=J[b+16>>2];h=b;b=J[b+8>>2];d=J[h+12>>2];b:{c:{switch(J[h+36>>2]){case 0:d:{switch(g-2|0){case 0:if((b|0)==(i|0)&(d|0)==(j|0)){break b}break a;case 4:if((b|0)==(k|0)&(d|0)==(l|0)){break b}break a;case 5:if((b|0)==(m|0)&(d|0)==(n|0)){break b}break a;case 3:if((b|0)==(o|0)&(d|0)==(p|0)){break b}break a;case 1:break d;default:break a}}if((b|0)==(s|0)&(d|0)==(t|0)|(b|0)==(q|0)&(d|0)==(r|0)){break b}break a;case 1:break c;default:break a}}e:{switch(g-8|0){case 1:if((b|0)==(w|0)&(d|0)==(x|0)){break b}break a;case 0:break e;default:break a}}if((b|0)!=(u|0)|(d|0)!=(v|0)){break a}}a=a+1|0;f=e>>>0>a>>>0;if((a|0)!=(e|0)){continue}break}}Ui=c+16|0;return f}function M0(a){a=a|0;var b=0,c=0,d=0,e=0,f=0;b=Ui-160|0;Ui=b;c=J[a+4>>2];a:{if(c>>>0<15){c=0;break a}J[b+144>>2]=1;d=c-14|0;J[b+148>>2]=d;if(d>>>0>14){c=-20352;break a}J[b+80>>2]=0;J[b+84>>2]=0;J[b+88>>2]=0;J[b+92>>2]=0;J[b+96>>2]=0;J[b+100>>2]=0;J[b+104>>2]=0;J[b+108>>2]=0;J[b+112>>2]=0;J[b+116>>2]=0;J[b+120>>2]=0;J[b+64>>2]=0;J[b+68>>2]=0;J[b+72>>2]=0;J[b+76>>2]=0;e=b- -64|0;J[b+152>>2]=e;f=e;e=J[a+8>>2]+56|0;hj(f,e,d<<2);ij(e,0,(c<<2)-56|0);c=Ql(a,a,b+144|0);if(c){break a}c=J[b+84>>2];J[b+16>>2]=J[b+80>>2];J[b+20>>2]=c;c=J[b+92>>2];J[b+24>>2]=J[b+88>>2];J[b+28>>2]=c;c=J[b+100>>2];J[b+32>>2]=J[b+96>>2];J[b+36>>2]=c;c=J[b+108>>2];J[b+40>>2]=J[b+104>>2];J[b+44>>2]=c;c=J[b+116>>2];J[b+48>>2]=J[b+112>>2];J[b+52>>2]=c;c=J[b+148>>2];J[b+128>>2]=J[b+144>>2];J[b+132>>2]=c;c=J[b+68>>2];J[b>>2]=J[b+64>>2];J[b+4>>2]=c;c=J[b+76>>2];J[b+8>>2]=J[b+72>>2];J[b+12>>2]=c;J[b+136>>2]=b;d=b+128|0;c=yk(d,224);if(c){break a}c=Ql(a,a,d);if(c){break a}c=J[b+148>>2];if(c>>>0>=8){ij(b+92|0,0,(c<<2)-28|0)}d=b+144|0;c=Ql(d,d,b+128|0);if(c){break a}J[b+148>>2]=15;c=Vn(d,224);if(c){break a}c=Ql(a,a,d)}Ui=b+160|0;return c|0}function Zx(a,b,c,d){var e=0,f=0,g=0,h=0,i=0,j=0,k=0,l=0,m=Q(0);f=Ui-96|0;Ui=f;a:{b:{c:{d:{if((b|0)==(c|0)){k=-8;break d}h=J[a+32>>2];j=(J[a+36>>2]-h|0)/672|0;g=b&65535;e=g;if(j>>>0<=e>>>0){break c}e=P(e,672)+h|0;if(L[e+648>>1]!=(b>>>16|0)){break b}i=65535;l=L[e+650>>1];if((g|0)!=(l|0)){break a}g=0;e:{if(!c){break e}b=c&65535;if(j>>>0<=b>>>0){break c}g=P(b,672)+h|0;if(L[g+648>>1]!=(c>>>16|0)){break b}i=L[g+650>>1];if((i|0)!=(b|0)){break a}while(1){b=L[(P(b,672)+h|0)+656>>1];if((b|0)==65535){break e}if((b|0)==(l|0)){k=-8;break d}if(b>>>0>>0){continue}break}break c}if(L[e+656>>1]==(i|0)){break d}if(d){Xs(a,e,0,f);b=J[f+52>>2];c=J[f+48>>2];N[f+72>>2]=N[f+56>>2];J[f+64>>2]=c;J[f+68>>2]=b;dD(f+80|0,a,e,g,f- -64|0);b=J[f+84>>2];c=J[f+80>>2];m=N[f+88>>2];J[e+12>>2]=1065353216;N[e+8>>2]=m;J[e>>2]=c;J[e+4>>2]=b;J[e+476>>2]=J[e+476>>2]|4194304}dv(a,e);b=L[((i|0)==65535?a+366|0:g+660|0)>>1];if((b|0)!=65535){c=J[a+32>>2];if(b>>>0>=(J[a+36>>2]-c|0)/672>>>0){break c}b=c+P(b,672)|0}else{b=0}sD(a,e,g,b)}Ui=f+96|0;return k}Z(145396,53895,487,84789);B()}Z(47372,40876,188,69601);B()}Z(5388,40876,189,69601);B()}function Wea(a){a=a|0;var b=0,c=0,d=0,e=0;a=J[J[a+8>>2]+8>>2];J[J[a>>2]+76>>2]=0;b=J[a+4>>2];if(b){a:{if(H[b+96|0]&1){break a}c=J[b+84>>2];if(!c){break a}cj(c)}cj(b)}b=J[a+8>>2];if(b){b:{if(H[b+48|0]&1){break b}c=J[b+36>>2];if(!c){break b}cj(c)}cj(b)}c=J[a+12>>2];d=J[a+16>>2];if((c|0)!=(d|0)){while(1){b=J[(e<<2)+c>>2];if(b){c:{if(H[b+336|0]&1){break c}c=J[b+316>>2];if(c){cj(c)}c=J[b+308>>2];if(!c){break c}cj(c)}d:{if(H[b+304|0]&1){break d}c=J[b+292>>2];if(!c){break d}cj(c)}cj(b);d=J[a+16>>2];c=J[a+12>>2]}e=e+1|0;if(e>>>0>2>>>0){continue}break}}b=J[a+28>>2];if(b){e:{if(H[b+992|0]&1){break e}c=J[b+980>>2];if(!c){break e}cj(c)}cj(b)}b=J[a+32>>2];if(b){cj(b)}b=J[a+36>>2];if(b){f:{if(H[b+536|0]&1){break f}c=J[b+524>>2];if(!c){break f}cj(c)}cj(b)}c=J[a+88>>2];if(c){d=J[a+92>>2];if(d){b=0;while(1){e=J[(c+(b<<3)|0)+4>>2];if(e){cj(e)}b=b+1|0;if((d|0)!=(b|0)){continue}break}}cj(c)}g:{if(H[a+84|0]&1){break g}b=J[a+72>>2];if(!b){break g}cj(b)}h:{if(H[a+68|0]&1){break h}b=J[a+48>>2];if(b){cj(b)}b=J[a+40>>2];if(!b){break h}cj(b)}i:{if(H[a+24|0]&1){break i}b=J[a+12>>2];if(!b){break i}cj(b)}cj(a);return 0}function vC(a,b){var c=0,d=0,e=0,f=0;RL(a,b);d=J[b+100>>2];if(d){while(1){e=J[d+4>>2];c=J[d+12>>2];rV(b,d);a:{b:{switch(J[c+4>>2]){case 0:Zi[J[J[c>>2]+4>>2]](c);break a;case 1:Zi[J[J[c>>2]+4>>2]](c);break a;case 2:Zi[J[J[c>>2]+4>>2]](c);break a;case 4:break b;default:break a}}Zi[J[J[c>>2]+4>>2]](c)}d=e;if(e){continue}break}}c:{d:{e=a+40|0;if(J[e+102960>>2]>0){if(K[e+102868|0]&2){break d}a=J[b+108>>2];if(a){while(1){d=J[a+12>>2];c=J[e+102980>>2];if(c){Zi[J[J[c>>2]+8>>2]](c,J[a+4>>2])}KU(e,J[a+4>>2]);J[b+108>>2]=d;a=d;if(a){continue}break}}J[b+108>>2]=0;a=J[b+112>>2];if(a){c=e+102872|0;while(1){d=J[a+12>>2];Pv(c,J[a+4>>2]);a=d;if(a){continue}break}}J[b+112>>2]=0;a=J[b+100>>2];if(a){f=e+102872|0;while(1){d=J[a+4>>2];c=J[e+102980>>2];if(c){Zi[J[J[c>>2]+12>>2]](c,a)}YE(a,f);XE(a,e);Ir(e,a,52);J[b+100>>2]=d;J[b+104>>2]=J[b+104>>2]-1;a=d;if(a){continue}break}}J[b+100>>2]=0;J[b+104>>2]=0;a=J[b+96>>2];d=J[b+92>>2];if(d){J[d+96>>2]=a}if(a){J[a+92>>2]=d}if(J[e+102952>>2]==(b|0)){J[e+102952>>2]=a}J[e+102960>>2]=J[e+102960>>2]-1;Ir(e,b,152);break c}Z(111807,42374,134,3666);B()}Z(62630,42374,135,3666);B()}}function JK(a,b,c,d){var e=0,f=0,g=0,h=0,i=0,j=0,k=0;J[d>>2]=0;i=Ui-16|0;Ui=i;j=-2;f=ol(a,82700);a:{if(!f){break a}d=nj(24);J[d>>2]=0;J[d+4>>2]=0;J[d+16>>2]=0;J[d+20>>2]=0;J[d+8>>2]=0;J[d+12>>2]=0;g=nj(48);DK(g);J[d+4>>2]=g;e=ij(nj(1048),0,1048);J[d+8>>2]=e;ek(e,a,1024);if((Sl(g,1,48,f)|0)!=48){vk(f);a=J[d+4>>2];if(a){cj(a)}cj(d);break a}a=J[g>>2];a=a<<24|(a&65280)<<8|(a>>>8&65280|a>>>24);if((a|0)!=5){J[i+4>>2]=a;J[i>>2]=5;dj(4,96538,77677,i);vk(f);a=J[d+4>>2];if(a){cj(a)}cj(d);j=-1;break a}a=J[g+16>>2];a=a<<24|(a&65280)<<8|(a>>>8&65280|a>>>24);e=J[g+20>>2];k=e<<24|(e&65280)<<8|(e>>>8&65280|e>>>24);e=J[g+24>>2];um(f,e<<24|(e&65280)<<8|(e>>>8&65280|e>>>24),0);e=a<<6;h=nj(e);J[J[d+8>>2]+1024>>2]=h;if((Sl(h,1,e,f)|0)!=(e|0)){vk(f);a=J[d+4>>2];if(a){cj(a)}cj(d);break a}um(f,k,0);e=a<<4;h=nj(a>>>0>268435455?-1:e);if(a){ij(h,0,e)}J[J[d+8>>2]+1028>>2]=h;if((Sl(h,1,e,f)|0)!=(e|0)){vk(f);a=J[d+4>>2];if(a){cj(a)}cj(d);break a}J[g+8>>2]=1337;J[g+12>>2]=0;a=ol(b,82700);if(!a){vk(f);if(d){a=J[d+4>>2];if(a){cj(a)}cj(d)}break a}J[J[d+8>>2]+1032>>2]=a;J[c>>2]=d;vk(f);j=0}Ui=i+16|0;return j?(j|0)==-1?-19:-3:0}function mI(a,b,c,d){a=a|0;b=b|0;c=c|0;d=d|0;var e=0,f=0;e=Ui-656|0;Ui=e;J[e+644>>2]=c;c=zk(a,d,yj(d));f=e+584|0;J[f+52>>2]=a;H[f+68|0]=46;J[f+56>>2]=b;J[f+32>>2]=287;J[f+48>>2]=0;J[f+64>>2]=c;J[f+4>>2]=1;J[f+8>>2]=1;b=a;a=J[f+60>>2];b=lk(b,J[a>>2],J[a+8>>2],32);a=J[f+60>>2];J[a+8>>2]=32;J[a>>2]=b;b=J[f+56>>2];a=J[b>>2];J[b>>2]=a-1;a:{if(a){a=J[b+4>>2];J[b+4>>2]=a+1;J[f>>2]=K[a|0];break a}J[f>>2]=Rk(b)}b=J[e+636>>2];d=VA(b);H[e+55|0]=0;H[e+56|0]=0;H[e+57|0]=0;H[e+58|0]=0;H[e+59|0]=0;H[e+60|0]=0;H[e+61|0]=0;H[e+62|0]=0;J[e+48>>2]=0;J[e+52>>2]=0;J[e+12>>2]=d;J[e+28>>2]=b;J[e+40>>2]=-1;J[e+44>>2]=-1;J[e+32>>2]=0;J[e+36>>2]=0;J[e+20>>2]=J[e+632>>2];J[e+24>>2]=f;J[e+632>>2]=e+12;a=J[e+648>>2];H[d+75|0]=2;J[d+32>>2]=a;c=pq(b,0,0);J[e+16>>2]=c;a=J[b+8>>2];J[a+8>>2]=5;J[a>>2]=c;c=J[b+8>>2];if((J[b+28>>2]-c|0)<=16){Ml(b,1);c=J[b+8>>2]}J[b+8>>2]=c+16;J[c+24>>2]=9;J[c+16>>2]=d;a=J[b+8>>2];if((J[b+28>>2]-a|0)<=16){Ml(b,1);a=J[b+8>>2]}J[b+8>>2]=a+16;H[J[e+12>>2]+74|0]=2;b=e+584|0;tk(b);Pq(b);if(J[e+600>>2]!=287){a=J[e+636>>2];J[e>>2]=Cl(b,287);qk(b,gk(a,74053,e))}AE(e+584|0);Ui=e+656|0;return J[e+12>>2]}function $ga(a,b,c){a=a|0;b=b|0;c=c|0;var d=0,e=0,f=0,g=0,h=0;f=Ui-1056|0;Ui=f;if(J[64198]==(b|0)){e=J[c+24>>2];h=J[c+8>>2];Fj(a,0,0);b=J[c>>2];d=J[a+8>>2];J[d+8>>2]=3;O[d>>3]=b|0;J[a+8>>2]=J[a+8>>2]+16;ej(a,-2,17425);b=J[c+36>>2];a:{if(b){b:{if(J[c>>2]!=200){break b}d=J[c+32>>2];g=f+32|0;ek(g,b,1024);zl(g,43127,1024);g=ol(g,82669);c:{if(!g){break c}e=yl(e,1,d,g);vk(g);if((d|0)!=(e|0)){J[f+20>>2]=b;J[f+16>>2]=d;dj(4,88458,147179,f+16|0);break c}d=f+32|0;if(!gx(b,d)){break b}J[f+4>>2]=b;J[f>>2]=d;dj(4,88458,147238,f)}mj(a,66548,28);ej(a,-2,32757)}xj(a,J[c+36>>2]);ej(a,-2,53134);break a}mj(a,e,J[c+32>>2]);ej(a,-2,62533)}b=J[c+40>>2];if(b){xj(a,b);ej(a,-2,49412)}mj(a,19582,7);Fj(a,0,0);b=J[c+16>>2];d:{if(!b){break d}H[(b+h|0)-1|0]=0;d=fp(h,158634,f+32|0);if(!d){break d}while(1){c=Hk(d,58);H[c|0]=0;b=d;e=K[b|0];if(e){while(1){e=e<<24>>24;H[b|0]=e-65>>>0<26?e|32:e;e=K[b+1|0];b=b+1|0;if(e){continue}break}}xj(a,d);H[c|0]=58;while(1){b=K[c+1|0];c=c+1|0;if((b|0)==32){continue}break}xj(a,c);Xj(a,-3);d=fp(0,158634,f+32|0);if(d){continue}break}}Xj(a,-3);Ui=f+1056|0;return 0}Z(32008,54478,53,35466);B()}function daa(a){a=a|0;var b=0,c=0,d=0,e=0,f=0,g=0,h=0,i=0,j=0,k=0,l=Q(0),m=0;f=Ui-144|0;Ui=f;m=J[a+8>>2]-J[a+12>>2]>>4;h=mk(a,1);i=Yi;Bj(a);e=qj(a,-1,J[219396],139183);gj(a,-2);d=Ui-16|0;Ui=d;k=-5;b=J[e+164>>2];a:{if(!b){break a}g=e+160|0;c=J[J[g>>2]+(mxa(h,i,b)<<2)>>2];if((c|0)==-1){break a}j=J[e+168>>2];while(1){b=j+P(c,40)|0;if(J[b>>2]!=(h|0)|J[b+4>>2]!=(i|0)){c=J[b+32>>2];if((c|0)!=-1){continue}break a}break}c=J[b+24>>2];j=P(c&65535,c>>>16|0);k=0;c=J[b+20>>2];if(c>>>0<=3){c=J[(c<<2)+196284>>2]}else{c=0}l=Q(P(c,j)>>>0);N[d+8>>2]=l;N[219138]=N[219138]+l;c=J[d+12>>2];J[d>>2]=J[d+8>>2];J[d+4>>2]=c;Zi[J[e+448>>2]](e,h,i,J[b+8>>2],J[b+12>>2]);oN(g,h,i);b=J[e+36>>2];g=J[e+32>>2];if((b|0)==(g|0)){break a}b=(b-g|0)/672|0;j=b>>>0<=1?1:b;c=0;while(1){b=g+P(c,672)|0;if(J[b+488>>2]==(h|0)&J[b+492>>2]==(i|0)){if(J[b+504>>2]==2){jv(e,L[b+650>>1]|L[b+648>>1]<<16,0)}J[b+504>>2]=0;J[b+496>>2]=0;J[b+500>>2]=0}c=c+1|0;if((j|0)!=(c|0)){continue}break}}Ui=d+16|0;if(k){d=rx(a,1,f+16|0);J[f+4>>2]=k;J[f>>2]=d;fj(a,142265,f)}if(J[a+8>>2]-J[a+12>>2]>>4!=(m|0)){Z(143244,37682,2187,63389);B()}Ui=f+144|0;return 0}function yZ(a){a=a|0;var b=0,c=0,d=0,e=0,f=0,g=0,h=0,i=0,j=0,k=0,l=0,m=0;f=Ui-16|0;Ui=f;i=1;c=Tn(a,1054);j=Po(c+8248|0);h=f+12|0;d=Ui-144|0;Ui=d;b=16;a:{switch(J[c+8272>>2]-2|0){case 8:b=28;case 0:J[d+140>>2]=b;break;default:break a}}k=d+12|0;l=d+140|0;e=Ui-16|0;Ui=e;b:{if(J[c>>2]==-1){b=-2;break b}b=wz(J[c>>2],k,l);J[h>>2]=b;c:{if((b|0)==-1){while(1){d:{e:{b=J[245744];switch(b-6|0){case 0:case 7:break e;case 21:break d;default:break b}}b=J[c>>2];J[e+12>>2]=1;J[e+8>>2]=b;if(O[j>>3]==0){break c}while(1){f:{g=e+8|0;m=Wq(j)*1e3;g:{if(R(m)<2147483648){b=~~m;break g}b=-2147483648}g=_q(g,1,(b|0)<0?-1:b);if((g|0)!=-1){b=0;if(g){break f}break c}b=J[245744];if((b|0)==27){continue}}break}if(b){break b}}b=wz(J[c>>2],k,l);J[h>>2]=b;if((b|0)==-1){continue}break}}b=0;break b}b=-1}Ui=e+16|0;b=Tm(b);Ui=d+144|0;h:{if(!b){b=Sj(a,8280);Uq(a,1042,-1);a=ij(b,0,8280);jw(h);J[a>>2]=J[f+12>>2];b=a+4|0;J[b+12>>2]=1881;J[b+8>>2]=1882;J[b+4>>2]=1883;J[b>>2]=a;d=a+8248|0;O[d+8>>3]=-1;O[d>>3]=-1;EE(a+24|0,b,d);J[a+8272>>2]=J[c+8272>>2];break h}c=J[a+8>>2];J[c+8>>2]=0;J[a+8>>2]=c+16;xj(a,b);i=2}Ui=f+16|0;return i|0}function hj(a,b,c){var d=0,e=0,f=0;if(c>>>0>=512){wi(a|0,b|0,c|0);return a}d=a+c|0;a:{if(!((a^b)&3)){b:{if(!(a&3)){c=a;break b}if(!c){c=a;break b}c=a;while(1){H[c|0]=K[b|0];b=b+1|0;c=c+1|0;if(!(c&3)){break b}if(c>>>0>>0){continue}break}}e=d&-4;c:{if(d>>>0<64){break c}f=e+-64|0;if(f>>>0>>0){break c}while(1){J[c>>2]=J[b>>2];J[c+4>>2]=J[b+4>>2];J[c+8>>2]=J[b+8>>2];J[c+12>>2]=J[b+12>>2];J[c+16>>2]=J[b+16>>2];J[c+20>>2]=J[b+20>>2];J[c+24>>2]=J[b+24>>2];J[c+28>>2]=J[b+28>>2];J[c+32>>2]=J[b+32>>2];J[c+36>>2]=J[b+36>>2];J[c+40>>2]=J[b+40>>2];J[c+44>>2]=J[b+44>>2];J[c+48>>2]=J[b+48>>2];J[c+52>>2]=J[b+52>>2];J[c+56>>2]=J[b+56>>2];J[c+60>>2]=J[b+60>>2];b=b- -64|0;c=c- -64|0;if(f>>>0>=c>>>0){continue}break}}if(c>>>0>=e>>>0){break a}while(1){J[c>>2]=J[b>>2];b=b+4|0;c=c+4|0;if(e>>>0>c>>>0){continue}break}break a}if(d>>>0<4){c=a;break a}e=d-4|0;if(e>>>0>>0){c=a;break a}c=a;while(1){H[c|0]=K[b|0];H[c+1|0]=K[b+1|0];H[c+2|0]=K[b+2|0];H[c+3|0]=K[b+3|0];b=b+4|0;c=c+4|0;if(e>>>0>=c>>>0){continue}break}}if(c>>>0>>0){while(1){H[c|0]=K[b|0];b=b+1|0;c=c+1|0;if((d|0)!=(c|0)){continue}break}}return a}function nra(a,b,c,d){a=a|0;b=Q(b);c=c|0;d=Q(d);var e=0,f=0,g=0,h=Q(0);e=Ui-16|0;Ui=e;mo(335064);sF(335080);J[83771]=J[83771]+1;g=J[83774];J[83774]=g+1;if(!g){mo(e);J[83773]=(J[e+8>>2]-J[83768]|0)+P(J[e>>2]-J[83766]|0,1e6)}J[83778]=0;mo(e);J[83779]=(J[e+8>>2]-J[83768]|0)+P(J[e>>2]-J[83766]|0,1e6);Ui=e+16|0;Xl(47002);a:{if(c){b=Q(b+N[a+236>>2]);N[a+236>>2]=b;if(!(b>=d)){break a}h=b;b=Q(b/d);b:{if(Q(R(b))>2]=h-Q(Q(f|0)*d);break a}N[a+236>>2]=b;d=b;f=!(Q(R(b))>2]+16>>2]](a)|0){e=Zi[J[J[a>>2]+16>>2]](a)|0;H[333892]=Zi[J[J[e>>2]+44>>2]](e)>>>4&1}c:{if(f){e=(c|0)>(f|0)?f:c;Zi[J[J[a>>2]+152>>2]](a,Q(d*Q(e|0)));Zi[J[J[a>>2]+160>>2]](a);if((e|0)<=0){break c}if((e|0)!=1){g=e&2147483646;c=0;while(1){Zi[J[J[a>>2]+148>>2]](a,d);Zi[J[J[a>>2]+76>>2]](a);Zi[J[J[a>>2]+148>>2]](a,d);Zi[J[J[a>>2]+76>>2]](a);c=c+2|0;if((g|0)!=(c|0)){continue}break}}if(!(e&1)){break c}Zi[J[J[a>>2]+148>>2]](a,d);Zi[J[J[a>>2]+76>>2]](a);break c}Zi[J[J[a>>2]+76>>2]](a)}Zi[J[J[a>>2]+112>>2]](a);J[83778]=J[83778]+1;Wl();return f|0}function Hfa(a){a=a|0;var b=0,c=0,d=0,e=0,f=0,g=0;g=Ui-16|0;Ui=g;J[g+12>>2]=0;d=dQ(J[a>>2],J[a+20>>2],J[a+24>>2],g+12|0);c=J[g+12>>2];a:{b:{if(d){break b}d=bR(J[a>>2],c);if(d){break b}b=J[J[a+36>>2]+8>>2];d=J[b+12>>2];if((d|0)!=J[b+16>>2]){f=J[a>>2];while(1){vj(f,J[(e<<2)+d>>2]);e=e+1|0;d=J[b+12>>2];if(e>>>0>2]-d>>2>>>0){continue}break}}J[b+16>>2]=d;e=d;f=J[b+8>>2];if(f){Uj(f);J[b+8>>2]=0;e=J[b+12>>2];d=J[b+16>>2]}J[b+8>>2]=J[c+8>>2];f=J[c+12>>2];J[c+12>>2]=e;J[b+12>>2]=f;e=J[c+16>>2];J[c+16>>2]=d;J[b+16>>2]=e;d=J[c+20>>2];J[c+20>>2]=J[b+20>>2];J[b+20>>2]=d;d=K[c+24|0];H[c+24|0]=H[b+24|0]&1|d&254;H[b+24|0]=K[b+24|0]&254|d&1;H[b+28|0]=K[b+28|0]&254|H[c+28|0]&1;c:{if(H[c+24|0]&1){break c}d=J[c+12>>2];if(!d){break c}cj(d)}cj(c);J[J[a+36>>2]+16>>2]=(J[a+24>>2]+(J[b+16>>2]-J[b+12>>2]|0)|0)+32;d=0;break a}b=J[c+12>>2];if((b|0)!=J[c+16>>2]){a=J[a>>2];while(1){vj(a,J[(e<<2)+b>>2]);e=e+1|0;b=J[c+12>>2];if(e>>>0>2]-b>>2>>>0){continue}break}}J[c+16>>2]=b;a=J[c+8>>2];if(a){Uj(a);J[c+8>>2]=0}d:{if(H[c+24|0]&1){break d}a=J[c+12>>2];if(!a){break d}cj(a)}cj(c)}Ui=g+16|0;return d|0}function Jm(a,b,c,d){var e=0,f=0,g=0,h=0,i=0;h=Ui-144|0;Ui=h;a:{b:{if(J[218662]){break b}while(1){e=J[218661];J[218661]=e?e:1;if(e){continue}break}c:{e=J[218660];f=J[e+4>>2];d:{if(!f){break d}f=J[J[e>>2]+(mxa(a,b,f)<<2)>>2];if((f|0)==-1){break d}g=J[e+8>>2];while(1){e=g+(f<<6)|0;if(J[e>>2]==(a|0)&(b|0)==J[e+4>>2]){break c}f=J[e+56>>2];if((f|0)!=-1){continue}break}}J[218661]=0;break b}a=J[e+8>>2];if(!a){break a}g=e+8|0;J[e+8>>2]=a+1;J[218661]=0;Tj(J[e+36>>2]);if(J[e+24>>2]){J[h+12>>2]=0;f=J[e+24>>2];J[e+24>>2]=0;J[e+28>>2]=0;b=J[e+52>>2];J[e+52>>2]=0;Lj(J[e+36>>2]);if(f){while(1){Zi[c|0](f,d);a=J[f+92>>2];if(a){Zi[a|0](f)}i=i+1|0;f=J[f+88>>2];if(f){continue}break}}Tj(J[e+36>>2]);if(b){d=J[e+48>>2];while(1){a=b;b=J[a+4100>>2];J[a+4100>>2]=d;d=a;if(b){continue}break}J[e+48>>2]=a}Lj(J[e+36>>2]);while(1){a=J[218661];J[218661]=a?a:1;if(a){continue}break}a=J[g>>2]-1|0;J[g>>2]=a;J[218661]=0;if(!a){Yu(g)}break b}Lj(J[e+36>>2]);while(1){a=J[218661];J[218661]=a?a:1;if(a){continue}break}a=J[g>>2]-1|0;J[g>>2]=a;J[218661]=0;if(a){break b}Yu(g)}Ui=h+144|0;return i}Z(110696,42022,289,15448);B()}function Or(a,b,c,d,e){var f=0,g=0,h=0,i=0,j=0;g=Ui-16|0;Ui=g;i=c;a:{b:{c:{switch(J[c+8>>2]-3|0){case 1:if(!mq(J[c>>2]+16|0,g+8|0)){break b}O[g>>3]=O[g+8>>3];i=g;break;case 0:break c;default:break b}}j=d;d:{switch(J[d+8>>2]-3|0){case 1:j=g+8|0;if(!mq(J[d>>2]+16|0,j)){break b}break;case 0:break d;default:break b}}h=O[j>>3];f=O[i>>3];e:{switch(e-6|0){default:J[b+8>>2]=3;O[b>>3]=f+h;break a;case 0:J[b+8>>2]=3;O[b>>3]=f-h;break a;case 1:J[b+8>>2]=3;O[b>>3]=f*h;break a;case 2:J[b+8>>2]=3;O[b>>3]=f/h;break a;case 3:J[b+8>>2]=3;O[b>>3]=f-V(f/h)*h;break a;case 4:J[b+8>>2]=3;O[b>>3]=Zq(f,h);break a;case 5:break e}}J[b+8>>2]=3;O[b>>3]=-f;break a}if(CE(a,c,d,b,e)){break a}b=Ui+-64|0;Ui=b;e=Kw(c,b+40|0);J[b+60>>2]=0;d=e?d:c;e=J[(J[d+8>>2]<<2)+257632>>2];f:{g:{i=J[a+20>>2];c=J[i>>2];j=J[i+8>>2];if(c>>>0>=j>>>0){break g}while(1){if((c|0)!=(d|0)){c=c+16|0;if(j>>>0>c>>>0){continue}break g}break}c=Zw(a,i,d-J[a+12>>2]>>4,b+60|0);if(!c){break g}J[b+20>>2]=c;J[b+24>>2]=J[b+60>>2];J[b+28>>2]=e;J[b+16>>2]=47689;xl(a,138999,b+16|0);break f}J[b+4>>2]=e;J[b>>2]=47689;xl(a,60935,b)}Ui=b- -64|0}Ui=g+16|0}function v5(a){a=a|0;var b=0,c=Q(0),d=0,e=0,f=0,g=0,h=0,i=0;e=Ui-48|0;Ui=e;b=J[a+8>>2]-J[a+12>>2]|0;Bj(a);f=qj(a,-1,J[84364],139081);gj(a,-2);if(b>>4==J[a+8>>2]-J[a+12>>2]>>4){b=e+8|0;c=Q(wj(a,1));a:{if(c=Q(0)){h=~~c>>>0;if(Q(R(c))>=Q(1)){d=~~(c>Q(0)?Q(T(Q(V(Q(c*Q(2.3283064365386963e-10)))),Q(4294967296))):Q(W(Q(Q(c-Q(~~c>>>0>>>0))*Q(2.3283064365386963e-10)))))>>>0}else{d=0}break a}d=0}c=Q(wj(a,2));b:{if(c=Q(0)){i=~~c>>>0;if(Q(R(c))>=Q(1)){g=~~(c>Q(0)?Q(T(Q(V(Q(c*Q(2.3283064365386963e-10)))),Q(4294967296))):Q(W(Q(Q(c-Q(~~c>>>0>>>0))*Q(2.3283064365386963e-10)))))>>>0}else{g=0}break b}g=0}J[b+16>>2]=i;J[b+20>>2]=g;J[b+8>>2]=h;J[b+12>>2]=d;J[b>>2]=17;d=J[f+4>>2];c:{if((d|0)!=J[f+8>>2]){J[f+4>>2]=d+40;a=J[b+36>>2];J[d+32>>2]=J[b+32>>2];J[d+36>>2]=a;a=J[b+28>>2];J[d+24>>2]=J[b+24>>2];J[d+28>>2]=a;a=J[b+20>>2];J[d+16>>2]=J[b+16>>2];J[d+20>>2]=a;a=J[b+12>>2];J[d+8>>2]=J[b+8>>2];J[d+12>>2]=a;a=J[b+4>>2];J[d>>2]=J[b>>2];J[d+4>>2]=a;a=0;break c}J[e>>2]=(d-J[f>>2]|0)/40;a=fj(a,132935,e)}Ui=e+48|0;return a|0}Z(143244,37616,478,51340);B()}function RH(a,b,c,d,e,f){var g=0,h=0,i=0,j=0,k=0,l=0;i=Ui-16|0;Ui=i;g=-12416;a:{if(M[a>>2]>c>>>0){break a}k=a+52|0;h=a+4|0;g=zn(k,h);if(g){break a}J[i+12>>2]=0;J[i+4>>2]=1;J[i+8>>2]=0;b:{c:{d:{e:{if(e){j=a+28|0;c=a+112|0;if(_j(j,c)){c=sk(c,j);if(c){break b}c=kl(a+88|0,1);if(c){break b}c=kl(a+100|0,1);if(!c){break d}break b}g=a+88|0;if(Pj(g,1)){break e}while(1){c=Fk(g,Um(h),e,f);if(c){break b}while(1){if((_j(g,h)|0)>=0){c=yk(g,1);if(!c){continue}break b}break}if((l|0)==11){c=-14;break b}l=l+1|0;if((Pj(g,1)|0)<=0){continue}break}e=a+100|0;c=Bp(e,g,h);if(c){break b}c=To(e,e,j,h,a+76|0);if(c){break b}break d}e=i+4|0;c=sk(e,k);if(c){break b}g=a- -64|0;c=To(g,e,a+28|0,h,a+76|0);if(!c){break c}break b}c=Ak(g,g,g);if(c){break b}c=Bl(g,g,h);if(c){break b}e=a+100|0;c=Ak(e,e,e);if(c){break b}c=Bl(e,e,h);if(c){break b}}e=i+4|0;c=Ak(e,k,a+88|0);if(c){break b}c=Bl(e,e,h);if(c){break b}g=a- -64|0;c=To(g,e,j,h,a+76|0);if(c){break b}c=Ak(g,g,a+100|0);if(c){break b}c=Bl(g,g,h);if(c){break b}}a=Um(g);J[d>>2]=a;a=no(g,b,a);g=a?a-13056|0:0;Dj(i+4|0);break a}g=c-13056|0;Dj(i+4|0)}Ui=i+16|0;return g}function Jz(a,b,c,d,e){var f=0,g=0;f=Ui-16|0;Ui=f;rn(a,b,c,e);a:{if(fk(J[e>>2],J[d>>2],J[d+4>>2])>>>0>=fk(J[e>>2],J[c>>2],J[c+4>>2])>>>0){break a}g=J[c+12>>2];J[f+8>>2]=J[c+8>>2];J[f+12>>2]=g;g=J[c+4>>2];J[f>>2]=J[c>>2];J[f+4>>2]=g;g=J[d+12>>2];J[c+8>>2]=J[d+8>>2];J[c+12>>2]=g;g=J[d+4>>2];J[c>>2]=J[d>>2];J[c+4>>2]=g;g=J[f+12>>2];J[d+8>>2]=J[f+8>>2];J[d+12>>2]=g;g=J[f+4>>2];J[d>>2]=J[f>>2];J[d+4>>2]=g;if(fk(J[e>>2],J[c>>2],J[c+4>>2])>>>0>=fk(J[e>>2],J[b>>2],J[b+4>>2])>>>0){break a}d=J[b+12>>2];J[f+8>>2]=J[b+8>>2];J[f+12>>2]=d;d=J[b+4>>2];J[f>>2]=J[b>>2];J[f+4>>2]=d;d=J[c+12>>2];J[b+8>>2]=J[c+8>>2];J[b+12>>2]=d;d=J[c+4>>2];J[b>>2]=J[c>>2];J[b+4>>2]=d;d=J[f+12>>2];J[c+8>>2]=J[f+8>>2];J[c+12>>2]=d;d=J[f+4>>2];J[c>>2]=J[f>>2];J[c+4>>2]=d;if(fk(J[e>>2],J[b>>2],J[b+4>>2])>>>0>=fk(J[e>>2],J[a>>2],J[a+4>>2])>>>0){break a}c=J[a+12>>2];J[f+8>>2]=J[a+8>>2];J[f+12>>2]=c;c=J[a+4>>2];J[f>>2]=J[a>>2];J[f+4>>2]=c;c=J[b+12>>2];J[a+8>>2]=J[b+8>>2];J[a+12>>2]=c;c=J[b+4>>2];J[a>>2]=J[b>>2];J[a+4>>2]=c;a=J[f+12>>2];J[b+8>>2]=J[f+8>>2];J[b+12>>2]=a;a=J[f+4>>2];J[b>>2]=J[f>>2];J[b+4>>2]=a}Ui=f+16|0}function iU(a,b){var c=0,d=0,e=0,f=0,g=0,h=0,i=0;c=Ui-32|0;Ui=c;J[c+24>>2]=a;h=1;a:{b:{switch(b-a>>3){case 2:b=b-8|0;J[c+20>>2]=b;d=J[b+4>>2];e=J[a+4>>2];if((d|0)==(e|0)&M[b>>2]>=M[a>>2]|d>>>0>e>>>0){break a}a=J[c+24>>2];d=J[a>>2];e=J[a+4>>2];b=J[c+20>>2];f=J[b+4>>2];J[a>>2]=J[b>>2];J[a+4>>2]=f;J[b>>2]=d;J[b+4>>2]=e;break a;case 3:wp(a,a+8|0,b-8|0);break a;case 4:Hz(a,a+8|0,a+16|0,b-8|0);break a;case 5:BF(a,a+8|0,a+16|0,a+24|0,b-8|0);break a;case 0:case 1:break a;default:break b}}e=a+16|0;wp(a,a+8|0,e);d=a+24|0;while(1){J[c+16>>2]=d;if((b|0)==(d|0)){break a}c:{f=J[d+4>>2];g=J[e+4>>2];if((f|0)==(g|0)&M[d>>2]>=M[e>>2]|f>>>0>g>>>0){break c}d=J[c+16>>2];f=J[d+4>>2];J[c+8>>2]=J[d>>2];J[c+12>>2]=f;J[c+4>>2]=e;d=J[c+16>>2];while(1){d:{e=J[c+4>>2];f=J[e+4>>2];J[d>>2]=J[e>>2];J[d+4>>2]=f;d=J[c+4>>2];if((d|0)==(a|0)){break d}e=d-8|0;J[c+4>>2]=e;f=J[c+12>>2];g=J[e+4>>2];if((f|0)==(g|0)&M[c+8>>2]>2]|f>>>0>>0){continue}}break}e=J[c+12>>2];J[d>>2]=J[c+8>>2];J[d+4>>2]=e;i=i+1|0;if((i|0)!=8){break c}h=(J[c+16>>2]+8|0)==(b|0);break a}e=J[c+16>>2];d=e+8|0;continue}}Ui=c+32|0;return h}function Gv(a,b,c){var d=0,e=Q(0),f=Q(0),g=0,h=Q(0),i=Q(0),j=Q(0),k=Q(0),l=0,m=0,n=0,o=Q(0),p=Q(0),q=Q(0),r=Q(0),s=0,t=Q(0);d=Ui-48|0;Ui=d;J[d+40>>2]=1065353216;J[d+44>>2]=0;J[d+32>>2]=1065353216;J[d+36>>2]=1065353216;h=N[c+56>>2];k=N[c+52>>2];i=N[c+48>>2];c=0;while(1){l=c+1|0;m=+(((c|0)==11?11:l)>>>0)*3.141592653589793*.09090909361839294;t=Q(k+Q(b*Hj(Q(m+-1.5707963267948966))));n=+(c>>>0)*3.141592653589793*.09090909361839294;j=Q(k+Q(b*Hj(Q(n+-1.5707963267948966))));f=Hj(Q(n));o=Hj(Q(m));c=0;while(1){J[d+28>>2]=0;N[d+20>>2]=j;e=Q(+(c>>>0)*6.283185307179586*.09090909361839294);N[d+24>>2]=h+Q(b*Q(f*Hj(e)));N[d+16>>2]=i+Q(b*Q(f*Rj(e)));J[d+12>>2]=0;g=(c|0)==11;c=c+1|0;e=Q(+((g?11:c)>>>0)*6.283185307179586*.09090909361839294);p=Hj(e);q=Q(h+Q(b*Q(f*p)));N[d+8>>2]=q;N[d+4>>2]=j;e=Rj(e);r=Q(i+Q(b*Q(f*e)));N[d>>2]=r;g=d+16|0;s=d+32|0;Zi[J[J[a>>2]+8>>2]](a,g,d,s);J[d+28>>2]=0;N[d+24>>2]=q;N[d+20>>2]=j;N[d+16>>2]=r;J[d+12>>2]=0;N[d+8>>2]=h+Q(b*Q(o*p));N[d+4>>2]=t;N[d>>2]=i+Q(b*Q(o*e));Zi[J[J[a>>2]+8>>2]](a,g,d,s);if((c|0)!=12){continue}break}c=l;if((c|0)!=12){continue}break}Ui=d+48|0}function an(a,b){var c=Q(0),d=0,e=0,f=Q(0),g=Q(0),h=Q(0),i=Q(0),j=Q(0),k=Q(0),l=Q(0),m=Q(0),n=Q(0),o=Q(0),p=Q(0),q=Q(0),r=Q(0),s=Q(0),t=Q(0);e=Ui-144|0;Ui=e;d=qj(a,b,J[215723],0);f=N[d+16>>2];g=N[d>>2];a:{b:{if(g!=g|f!=f){break b}c=N[d+32>>2];if(c!=c){break b}c=N[d+48>>2];if(c!=c){break b}c=N[d+4>>2];if(c!=c){break b}c=N[d+20>>2];if(c!=c){break b}c=N[d+36>>2];if(c!=c){break b}c=N[d+52>>2];if(c!=c){break b}c=N[d+8>>2];if(c!=c){break b}c=N[d+24>>2];if(c!=c){break b}c=N[d+40>>2];if(c!=c){break b}c=N[d+56>>2];if(c!=c){break b}c=N[d+12>>2];if(c!=c){break b}c=N[d+28>>2];if(c!=c){break b}c=N[d+44>>2];if(c!=c){break b}c=N[d+60>>2];if(c==c){break a}}c=N[d+32>>2];h=N[d+48>>2];i=N[d+4>>2];j=N[d+20>>2];k=N[d+36>>2];l=N[d+52>>2];m=N[d+8>>2];n=N[d+24>>2];o=N[d+40>>2];p=N[d+56>>2];q=N[d+12>>2];r=N[d+28>>2];s=N[d+44>>2];t=N[d+60>>2];O[e+16>>3]=f;O[e+128>>3]=t;O[e+120>>3]=s;O[e+112>>3]=r;O[e+104>>3]=q;O[e+96>>3]=p;O[e+88>>3]=o;O[e+80>>3]=n;O[e+72>>3]=m;O[e- -64>>3]=l;O[e+56>>3]=k;O[e+48>>3]=j;O[e+40>>3]=i;O[e+32>>3]=h;O[e+24>>3]=c;O[e+8>>3]=g;J[e>>2]=b;fj(a,138809,e)}Ui=e+144|0;return d}function jt(a,b){var c=Q(0),d=Q(0),e=Q(0),f=Q(0),g=Q(0),h=Q(0),i=0,j=0,k=Q(0),l=Q(0),m=Q(0),n=Q(0),o=Q(0),p=Q(0),q=0,r=0;i=J[b+80>>2];j=J[i+3128>>2];b=J[b+140>>2]&32767;if(b>>>0>2]-j>>6>>>0){b=j+(b<<6)|0;l=N[b+32>>2];g=N[b+36>>2];e=N[b+40>>2];h=N[b+16>>2];d=N[b+20>>2];m=N[b+24>>2];f=N[b+12>>2];c=Q(f*f);k=N[b+8>>2];n=N[b+4>>2];f=N[b>>2];o=Q(c+Q(Q(k*k)+Q(Q(n*n)+Q(f*f))));a:{if(o==Q(0)){break a}c=N[b+28>>2];p=Q(Q(c*c)+Q(Q(m*m)+Q(Q(d*d)+Q(h*h))));if(p==Q(0)){break a}c=N[b+44>>2];c=Q(Q(c*c)+Q(Q(e*e)+Q(Q(g*g)+Q(l*l))));if(c==Q(0)){break a}c=Q(Q(1)/Q(Y(c)));e=Q(e*c);g=Q(g*c);l=Q(l*c);c=Q(Q(1)/Q(Y(p)));m=Q(m*c);d=Q(d*c);h=Q(h*c);c=Q(Q(1)/Q(Y(o)));k=Q(k*c);n=Q(n*c);f=Q(f*c)}b=Q(Q(f+d)+e)f;j=b&(q&i^-1);r=d>f;i=b&(i|r);b=b&(r^-1|q);e=Q(Q((j?Q(-e):e)+Q((i?Q(-f):f)+(b?Q(-d):d)))+Q(1));d=Q(Q(Q(1)/Q(Y(e)))*Q(.5));c=Q(e*d);h=Q(Q(n-(j?Q(-h):h))*d);e=Q(Q(l-(b?Q(-k):k))*d);d=Q(Q(m-(i?Q(-g):g))*d);b:{if(!j){f=d;g=e;e=h;d=c;break b}f=c;g=h}c:{if(!i){h=f;f=g;g=e;e=d;break c}h=g;g=d}N[a+12>>2]=e;N[a+8>>2]=g;N[a+4>>2]=f;N[a>>2]=h;return}Z(145396,53895,487,84789);B()}function SL(a,b){var c=0,d=0,e=0,f=0,g=0,h=0,i=0,j=0,k=0,l=0,m=0,n=0;f=Ui-16|0;Ui=f;c=J[a+4>>2];if(c){m=J[b+4>>2];l=J[b>>2];while(1){b=J[J[a>>2]+(j<<2)>>2];if((b|0)!=-1){while(1){d=J[a+8>>2]+P(b,24)|0;b=J[d+12>>2];if(b){n=J[d>>2];g=0;while(1){h=J[d+8>>2]+(g<<3)|0;a:{if(!J[h+4>>2]){c=0;b=J[a+4>>2];b:{if(!b){break b}e=J[h>>2];b=J[J[a>>2]+((e>>>0)%(b>>>0)<<2)>>2];if((b|0)==-1){break b}i=J[a+8>>2];while(1){b=i+P(b,24)|0;if((e|0)==J[b>>2]){c=b;break b}b=J[b+20>>2];if((b|0)!=-1){continue}break}}c=c?c+4|0:0;if(l){J[f+4>>2]=J[d+4>>2];J[f+8>>2]=J[c>>2];I[f+12>>1]=L[d+16>>1];I[f+14>>1]=L[c+12>>1];Zi[l|0](f+4|0,m)}e=J[c+8>>2];c:{if(!e){break c}i=J[c+4>>2];b=0;while(1){k=i+(b<<3)|0;if(J[k>>2]!=(n|0)){b=b+1|0;if((e|0)!=(b|0)){continue}break c}break}b=(i+(e<<3)|0)-8|0;e=J[b+4>>2];J[k>>2]=J[b>>2];J[k+4>>2]=e;J[c+8>>2]=J[c+8>>2]-1}b=(J[d+8>>2]+(J[d+12>>2]<<3)|0)-8|0;c=J[b+4>>2];J[h>>2]=J[b>>2];J[h+4>>2]=c;b=J[d+12>>2]-1|0;J[d+12>>2]=b;break a}g=g+1|0}if(b>>>0>g>>>0){continue}break}}b=J[d+20>>2];if((b|0)!=-1){continue}break}c=J[a+4>>2]}j=j+1|0;if(j>>>0>>0){continue}break}}Ui=f+16|0}function m3(a){a=a|0;var b=Q(0),c=Q(0),d=Q(0),e=Q(0),f=0,g=0,h=0,i=Q(0),j=0,k=0,l=0,m=0,n=0,o=Q(0);f=Ui-96|0;Ui=f;h=qj(a,1,J[215720],0);c=N[h+8>>2];d=N[h>>2];b=N[h+4>>2];if(!(!(d!=d|b!=b)&c==c)){O[f+88>>3]=c;O[f+80>>3]=b;J[f+64>>2]=1;O[f+72>>3]=d;fj(a,138436,f- -64|0)}j=qj(a,2,J[215720],0);c=N[j+8>>2];d=N[j>>2];b=N[j+4>>2];if(!(!(d!=d|b!=b)&c==c)){O[f+56>>3]=c;O[f+48>>3]=b;J[f+32>>2]=2;O[f+40>>3]=d;fj(a,138436,f+32|0)}g=qj(a,3,J[215720],0);b=N[g+8>>2];c=N[g>>2];d=N[g+4>>2];if(!(!(c!=c|d!=d)&b==b)){O[f+24>>3]=b;O[f+16>>3]=d;J[f>>2]=3;O[f+8>>3]=c;fj(a,138436,f);b=N[g+8>>2];d=N[g+4>>2];c=N[g>>2]}e=N[j+4>>2];m=e>2];k=ii;k=g&(k|n);g=g&(n^-1|m);e=Q(Q((l?Q(-b):b)+Q((k?Q(-i):i)+(g?Q(-e):e)))+Q(1));b=Q(Q(Q(1)/Q(Y(e)))*Q(.5));i=Q(e*b);e=N[j>>2];o=Q(Q(N[h+4>>2]-(l?Q(-e):e))*b);e=c;c=N[h+8>>2];e=Q(Q(e-(g?Q(-c):c))*b);b=Q(Q(N[j+8>>2]-(k?Q(-d):d))*b);a:{if(!l){d=b;c=e;e=o;b=i;break a}d=i;c=o}b:{if(!k){i=d;d=c;c=e;e=b;break b}i=c;c=b}h=Sj(a,16);N[h+12>>2]=e;N[h+8>>2]=c;N[h+4>>2]=d;N[h>>2]=i;rj(a,-1e4,16786);Mj(a,-2);Ui=f+96|0;return 1}function A5(a){a=a|0;var b=0,c=0,d=0,e=0,f=0,g=0;d=Ui-96|0;Ui=d;e=pj(d+76|0,a,0,37616,2766);f=J[a+8>>2]-J[a+12>>2]|0;Bj(a);c=qj(a,-1,J[84364],139081);gj(a,-2);if(f>>4==J[a+8>>2]-J[a+12>>2]>>4){a:{if(!kp(J[J[c+304>>2]+2480>>2],2)){a=Jj(e,121292,0);break a}b:{if(J[a+8>>2]-J[a+12>>2]>>4<=0){break b}if(!kj(a,1)){break b}b=mk(a,1);f=Yi;c:{a=J[c+20>>2];d:{if(!a){break d}a=J[J[c+16>>2]+(mxa(b,f,a)<<2)>>2];if((a|0)==-1){break d}g=J[c+24>>2];while(1){a=g+(a<<5)|0;if((b|0)==J[a>>2]&(f|0)==J[a+4>>2]){break c}a=J[a+24>>2];if((a|0)!=-1){continue}break}}J[d+16>>2]=tj(b,f);a=Jj(e,147681,d+16|0);break a}if(J[a+16>>2]!=3){a=Jj(e,121674,0);break a}b=J[a+8>>2]}a=d+32|0;J[a+8>>2]=b;J[a+12>>2]=0;J[a>>2]=24;b=J[c+4>>2];if((b|0)!=J[c+8>>2]){J[c+4>>2]=b+40;c=J[a+36>>2];J[b+32>>2]=J[a+32>>2];J[b+36>>2]=c;c=J[a+28>>2];J[b+24>>2]=J[a+24>>2];J[b+28>>2]=c;c=J[a+20>>2];J[b+16>>2]=J[a+16>>2];J[b+20>>2]=c;c=J[a+12>>2];J[b+8>>2]=J[a+8>>2];J[b+12>>2]=c;c=J[a+4>>2];J[b>>2]=J[a>>2];J[b+4>>2]=c;a=0;break a}J[d>>2]=(b-J[c>>2]|0)/40;a=Jj(e,132935,d)}oj(e);Ui=d+96|0;return a|0}Z(143244,37616,478,51340);B()}function X7(a){a=a|0;var b=0,c=0,d=0,e=0,f=Q(0),g=Q(0),h=Q(0),i=0,j=0;b=Ui-176|0;Ui=b;j=pj(b+156|0,a,1,37682,362);c=qj(a,1,J[219397],0);e=J[c>>2];d=J[a+8>>2]-J[a+12>>2]|0;Bj(a);i=Kk(a,-1,J[219396]);gj(a,-2);if(d>>4==J[a+8>>2]-J[a+12>>2]>>4){a:{if((e|0)==(i|0)){e=J[c>>2];d=J[e+32>>2];b:{c:{d:{e:{f:{g:{c=J[c+4>>2];i=c&65535;if(i>>>0>=(J[e+36>>2]-d|0)/672>>>0){break g}d=d+P(i,672)|0;if(L[d+648>>1]!=(c>>>16|0)|L[d+650>>1]!=(c&65535)|K[d+479|0]&32){break g}c=hD(e,c);f=N[c+8>>2];g=N[c+4>>2];h=N[c>>2];switch(J[c+476>>2]>>>4&15){case 5:break c;case 6:break d;case 1:break e;case 0:break f;default:break b}}fj(a,69046,0);B()}O[b+48>>3]=f;O[b+40>>3]=g;O[b+32>>3]=h;ik(a,138335,b+32|0);break a}c=J[c+484>>2];O[b+88>>3]=f;O[b+80>>3]=g;O[b+72>>3]=h;J[b+64>>2]=c;ik(a,138376,b- -64|0);break a}c=J[c+480>>2];O[b+120>>3]=f;O[b+112>>3]=g;O[b+104>>3]=h;J[b+96>>2]=c;ik(a,138413,b+96|0);break a}O[b+144>>3]=f;O[b+136>>3]=g;O[b+128>>3]=h;ik(a,138352,b+128|0);break a}O[b+16>>3]=f;O[b+8>>3]=g;O[b>>3]=h;ik(a,138392,b);break a}mj(a,102504,20)}oj(j);Ui=b+176|0;return 1}Z(143244,37682,190,65548);B()}function I6(a,b){a=a|0;b=b|0;var c=0,d=0,e=0,f=Q(0),g=Q(0),h=Q(0),i=Q(0),j=Q(0),k=0,l=Q(0);c=Ui-336|0;Ui=c;e=J[b>>2];a:{b:{d=J[a+80>>2];if(!d){break b}if(!(J[62920]!=(d|0)&J[62950]!=(d|0))){if(!J[J[e+304>>2]+2284>>2]){dj(3,90423,115692,0);J[b+4>>2]=-1;break a}b=pC(c- -64|0);k=J[62920];J[b+112>>2]=J[a+112>>2]+(a+96|0);g=N[a+104>>2];h=N[a+100>>2];N[b+48>>2]=N[a+96>>2];c:{if((d|0)==(k|0)){f=Q(1);j=Q(1);break c}i=N[a+132>>2];l=N[a+128>>2];f=N[a+136>>2];j=N[a+140>>2]}N[b+76>>2]=j;N[b+72>>2]=f;N[b+68>>2]=i;N[b+64>>2]=l;N[b+56>>2]=g;N[b+52>>2]=h;a=J[e+304>>2];oC(a,J[a+2284>>2],0,0,b);break a}if(J[62978]==(d|0)){b=J[e+304>>2];N[c+48>>2]=N[a+96>>2];N[c+52>>2]=N[a+100>>2];N[c+56>>2]=N[a+104>>2];N[c+32>>2]=N[a+112>>2];N[c+36>>2]=N[a+116>>2];N[c+40>>2]=N[a+120>>2];i=N[a+128>>2];N[c+16>>2]=i;f=N[a+132>>2];N[c+20>>2]=f;g=N[a+136>>2];N[c+24>>2]=g;h=N[a+140>>2];N[c+12>>2]=h;N[c+8>>2]=g;N[c+4>>2]=f;N[c>>2]=i;N[c+28>>2]=h;lL(b,c+48|0,c+32|0,c+16|0,c);break a}if(J[63024]!=(d|0)){break b}Zi[J[79386]](J[J[e+304>>2]+2480>>2],J[a+96>>2],J[a+100>>2]);break a}J[b+4>>2]=Ex(e,2,a)}Ui=c+336|0}function bxa(a){a=a|0;var b=0,c=0,d=0,e=0,f=0,g=0,h=0,i=0,j=0,k=0,l=0,m=0;d=Ui-32|0;Ui=d;m=pj(d+12|0,a,1,39778,11);c=Aj(a,1,d+8|0);h=J[d+8>>2];e=((h<<2>>>0)/3|0)+4|0;J[d+4>>2]=e;e=sj(e);f=Ui-16|0;Ui=f;J[f+12>>2]=0;i=J[d+4>>2];a:{if(!h){J[f+12>>2]=0;b=0;break a}g=(h>>>0)/3|0;b=((h|0)!=(P(g,3)|0))+g|0;if(b>>>0>=1073741824){J[f+12>>2]=-1;b=-42;break a}b=b<<2;if(!(b>>>0>>0?e:0)){J[f+12>>2]=b|1;b=-42;break a}b:{if(h>>>0<3){b=e;break b}g=P(g,3);b=e;while(1){k=K[c+1|0];j=K[c|0];i=K[c+2|0];H[b+3|0]=K[(i&63)+178048|0];H[b|0]=K[(j>>>2|0)+178048|0];H[b+2|0]=K[(k<<2&60|i>>>6)+178048|0];H[b+1|0]=K[(j<<4&48|k>>>4)+178048|0];b=b+4|0;c=c+3|0;l=l+3|0;if(g>>>0>l>>>0){continue}break}}if(h>>>0>l>>>0){g=K[c|0];j=0;i=h>>>0<=l+1>>>0;j=i?j:K[c+1|0];H[b|0]=K[(g>>>2|0)+178048|0];H[b+1|0]=K[(g<<4&48|j>>>4)+178048|0];c=61;c=i?c:K[(j<<2&60)+178048|0];H[b+3|0]=61;H[b+2|0]=c;b=b+4|0}J[f+12>>2]=b-e;H[b|0]=0;b=0}c:{if(b){k=J[d+4>>2]?-1:J[f+12>>2];break c}k=J[f+12>>2]}J[d+4>>2]=k;Ui=f+16|0;d:{if(!b){mj(a,e,J[d+4>>2]);break d}b=J[a+8>>2];J[b+8>>2]=0;J[a+8>>2]=b+16}cj(e);oj(m);Ui=d+32|0;return 1}function gF(a,b,c,d){var e=0,f=0,g=0,h=0,i=0,j=0;g=Ui-32|0;Ui=g;e=d&65535;f=d>>>16&32767;i=f;a:{if(f-15361>>>0<=2045){e=e<<4|c>>>28;c=c<<4;f=e;e=b>>>28|c;c=f;f=i-15360|0;b=b&268435455;b:{if((b|0)==134217728&(a|0)!=0|b>>>0>134217728){e=e+1|0;c=e?c:c+1|0;break b}if(a|(b|0)!=134217728){break b}a=e;e=e+(e&1)|0;c=a>>>0>e>>>0?c+1|0:c}h=c>>>0>1048575;a=h?0:e;b=h?0:c;e=0;c=f+h|0;f=c>>>0>>0?1:e;break a}if(!(!(a|c|(b|e))|((f|0)!=32767|(h|0)!=0))){a=c;c=e<<4|c>>>28;a=a<<4|b>>>28;b=c|524288;c=2047;f=0;break a}if(i>>>0>17406){a=0;b=0;c=2047;f=0;break a}h=!(f|h);j=h?15360:15361;f=j-i|0;if((f|0)>112){a=0;b=0;c=0;f=0;break a}e=h?e:e|65536;Mm(g+16|0,a,b,c,e,128-f|0);Lr(g,a,b,c,e,f);a=J[g+8>>2];h=a<<4;b=J[g+12>>2]<<4|a>>>28;a=J[g+4>>2];f=a;a=a>>>28|h;f=f&268435455;c=J[g>>2]|(i|0)!=(j|0)&(J[g+16>>2]|J[g+24>>2]|(J[g+20>>2]|J[g+28>>2]))!=0;c:{if((f|0)==134217728&(c|0)!=0|f>>>0>134217728){a=a+1|0;b=a?b:b+1|0;break c}if(c|(f|0)!=134217728){break c}e=b;b=a;a=a+(a&1)|0;b=b>>>0>a>>>0?e+1|0:e}c=b>>>0>1048575;b=c?b^1048576:b;f=0}Ui=g+32|0;x(0,a|0);x(1,b|(d&-2147483648|c<<20));return+z()}function yw(a,b,c){var d=0,e=0,f=0,g=0,h=0,i=0,j=0,k=0,l=0;if((a|0)==(b|0)){return 0}l=-16;e=J[b+4>>2];a:{if(e>>>0>1e4){break a}d=J[a+4>>2];b:{if(d>>>0>>0){g=Zj(e,4);if(!g){break a}f=J[a+8>>2];if(f){d=d<<2;hj(g,f,d);Zi[J[66509]](f,0,d)|0;cj(J[a+8>>2])}J[a+8>>2]=g;J[a+4>>2]=e;break b}e=d;if(d>>>0>1e4){break a}}d=J[b+4>>2];if(d>>>0>>0){g=Zj(e,4);if(!g){break a}f=J[b+8>>2];if(f){d=d<<2;hj(g,f,d);Zi[J[66509]](f,0,d)|0;cj(J[b+8>>2])}J[b+8>>2]=g;J[b+4>>2]=e;e=J[a+4>>2]}d=J[a>>2];J[a>>2]=c?J[b>>2]:d;J[b>>2]=c?d:J[b>>2];if(!e){return 0}l=0;if(!c){break a}i=J[b+8>>2];j=J[a+8>>2];b=0;if(e>>>0>=4){f=e&-4;g=0;while(1){k=b<<2;a=k+j|0;c=J[a>>2];d=a;a=i+k|0;J[d>>2]=J[a>>2];J[a>>2]=c;d=k|4;a=d+j|0;c=J[a>>2];h=a;a=d+i|0;J[h>>2]=J[a>>2];J[a>>2]=c;d=k|8;a=d+j|0;c=J[a>>2];h=a;a=d+i|0;J[h>>2]=J[a>>2];J[a>>2]=c;d=k|12;a=d+j|0;c=J[a>>2];h=a;a=d+i|0;J[h>>2]=J[a>>2];J[a>>2]=c;b=b+4|0;g=g+4|0;if((f|0)!=(g|0)){continue}break}}f=e&3;if(!f){break a}e=0;while(1){d=b<<2;a=d+j|0;c=J[a>>2];h=a;a=d+i|0;J[h>>2]=J[a>>2];J[a>>2]=c;b=b+1|0;e=e+1|0;if((f|0)!=(e|0)){continue}break}}return l}function Zca(a){a=a|0;var b=0,c=0,d=Q(0),e=0,f=0,g=0,h=0,i=Q(0),j=0,k=0,l=Q(0),m=0,n=0;f=Ui-16|0;Ui=f;m=J[a+8>>2]-J[a+12>>2]>>4;g=mk(a,1);j=Yi;h=wj(a,2);J[f+12>>2]=0;J[f+8>>2]=0;d=Q(h);c=-13;e=J[245446];k=J[e+16>>2];if(k){Tj(k);e=J[245446]}b=J[e+80>>2];a:{if(!b){break a}b=J[J[e+76>>2]+(mxa(g,j,b)<<2)>>2];if((b|0)==-1){break a}n=J[e+84>>2];while(1){b=n+(b<<4)|0;if(J[b>>2]!=(g|0)|J[b+4>>2]!=(j|0)){b=J[b+12>>2];if((b|0)!=-1){continue}break a}break}d=Q(d*Q(M[e+33916>>2]));b:{if(d=Q(0)){c=~~d>>>0;break b}c=0}c:{if((c|0)<=0){d=Q(0);break c}g=P(J[b+8>>2],1056)+e|0;j=g+648|0;b=J[g+1160>>2];g=J[e+33924>>2];d=Q(0);while(1){b=b-1&63;e=j+(b<<3)|0;i=N[e>>2];d=d>i?d:i;i=N[e+4>>2];l=i0){continue}break}}N[f+12>>2]=Q(Y(d))/Q(32767);N[f+8>>2]=Q(Y(l))/Q(32767);c=0}if(k){Lj(k)}if(c){J[f>>2]=c;dj(3,88458,141047,f)}h=+N[f+12>>2];c=J[a+8>>2];J[c+8>>2]=3;O[c>>3]=h;J[a+8>>2]=J[a+8>>2]+16;h=+N[f+8>>2];c=J[a+8>>2];J[c+8>>2]=3;O[c>>3]=h;J[a+8>>2]=J[a+8>>2]+16;if((m+2|0)!=J[a+8>>2]-J[a+12>>2]>>4){Z(143309,42276,255,52045);B()}Ui=f+16|0;return 2}function Hw(a,b,c,d){var e=0,f=0,g=0,h=0,i=0;a:{e=J[a>>2];if((b-e|0)<=0){break a}f=-98;b:{if(K[e|0]!=48){break b}f=e+1|0;J[a>>2]=f;g=b-f|0;if((g|0)<=0){break a}h=H[f|0];c:{if((h|0)>=0){g=e+2|0;J[a>>2]=g;h=K[e+1|0];break c}f=-100;d:{switch((h&127)-1|0){case 0:if((g|0)==1){break a}h=K[e+2|0];g=e+3|0;J[a>>2]=g;break c;case 1:if(g>>>0<3){break a}f=K[e+3|0];h=K[e+2|0];g=e+4|0;J[a>>2]=g;h=h<<8|f;break c;case 2:if(g>>>0<4){break a}f=K[e+4|0];h=K[e+3|0];i=K[e+2|0];g=e+5|0;J[a>>2]=g;h=h<<8|i<<16|f;break c;case 3:break d;default:break b}}if(g>>>0<5){break a}f=K[e+2|0]|K[e+3|0]<<8|(K[e+4|0]<<16|K[e+5|0]<<24);g=e+6|0;J[a>>2]=g;h=f<<24|(f&65280)<<8|(f>>>8&65280|f>>>24)}b=b-g|0;if(b>>>0>>0|(b|0)<=0){break a}J[c>>2]=K[g|0];f=-96;if((h|0)<=0){break b}f=-98;if(K[g|0]!=6){break b}J[a>>2]=g+1;b=g+h|0;f=Vo(a,b,c+4|0);if(f){break b}e=J[a>>2];J[c+8>>2]=e;c=e+J[c+4>>2]|0;J[a>>2]=c;if((b|0)==(c|0)){Zi[J[66509]](d,0,12)|0;return 0}J[d>>2]=K[c|0];J[a>>2]=c+1;f=Vo(a,b,d+4|0);if(f){break b}c=J[a>>2];J[d+8>>2]=c;e=a;a=c+J[d+4>>2]|0;J[e>>2]=a;f=(a|0)!=(b|0)?-102:0}return f}return-96}function u5(a){a=a|0;var b=0,c=0,d=0,e=0,f=0,g=0,h=0,i=0,j=0,k=0,l=0,m=0,n=0,o=0,p=0,q=0,r=0,s=0,t=0;d=Ui-48|0;Ui=d;b=J[a+8>>2]-J[a+12>>2]|0;Bj(a);e=qj(a,-1,J[84364],139081);gj(a,-2);if(b>>4==J[a+8>>2]-J[a+12>>2]>>4){b=an(a,1);f=J[b>>2];g=J[b+4>>2];h=J[b+8>>2];i=J[b+12>>2];j=J[b+16>>2];k=J[b+20>>2];l=J[b+24>>2];m=J[b+28>>2];n=J[b+32>>2];o=J[b+36>>2];p=J[b+40>>2];q=J[b+44>>2];r=J[b+48>>2];s=J[b+52>>2];t=J[b+60>>2];b=J[b+56>>2];c=nj(64);J[c+56>>2]=b;J[c+60>>2]=t;J[c+48>>2]=r;J[c+52>>2]=s;J[c+40>>2]=p;J[c+44>>2]=q;J[c+32>>2]=n;J[c+36>>2]=o;J[c+24>>2]=l;J[c+28>>2]=m;J[c+16>>2]=j;J[c+20>>2]=k;J[c+8>>2]=h;J[c+12>>2]=i;J[c>>2]=f;J[c+4>>2]=g;b=d+8|0;J[b+8>>2]=c;J[b+12>>2]=0;J[b>>2]=8;c=J[e+4>>2];a:{if((c|0)!=J[e+8>>2]){J[e+4>>2]=c+40;a=J[b+36>>2];J[c+32>>2]=J[b+32>>2];J[c+36>>2]=a;a=J[b+28>>2];J[c+24>>2]=J[b+24>>2];J[c+28>>2]=a;a=J[b+20>>2];J[c+16>>2]=J[b+16>>2];J[c+20>>2]=a;a=J[b+12>>2];J[c+8>>2]=J[b+8>>2];J[c+12>>2]=a;a=J[b+4>>2];J[c>>2]=J[b>>2];J[c+4>>2]=a;a=0;break a}J[d>>2]=(c-J[e>>2]|0)/40;a=fj(a,132935,d)}Ui=d+48|0;return a|0}Z(143244,37616,478,51340);B()}function o5(a){a=a|0;var b=0,c=0,d=0,e=0,f=0,g=0,h=0,i=0,j=0,k=0,l=0,m=0,n=0,o=0,p=0,q=0,r=0,s=0,t=0;d=Ui-48|0;Ui=d;b=J[a+8>>2]-J[a+12>>2]|0;Bj(a);e=qj(a,-1,J[84364],139081);gj(a,-2);if(b>>4==J[a+8>>2]-J[a+12>>2]>>4){b=an(a,1);f=J[b>>2];g=J[b+4>>2];h=J[b+8>>2];i=J[b+12>>2];j=J[b+16>>2];k=J[b+20>>2];l=J[b+24>>2];m=J[b+28>>2];n=J[b+32>>2];o=J[b+36>>2];p=J[b+40>>2];q=J[b+44>>2];r=J[b+48>>2];s=J[b+52>>2];t=J[b+60>>2];b=J[b+56>>2];c=nj(64);J[c+56>>2]=b;J[c+60>>2]=t;J[c+48>>2]=r;J[c+52>>2]=s;J[c+40>>2]=p;J[c+44>>2]=q;J[c+32>>2]=n;J[c+36>>2]=o;J[c+24>>2]=l;J[c+28>>2]=m;J[c+16>>2]=j;J[c+20>>2]=k;J[c+8>>2]=h;J[c+12>>2]=i;J[c>>2]=f;J[c+4>>2]=g;b=d+8|0;J[b+8>>2]=c;J[b+12>>2]=0;J[b>>2]=7;c=J[e+4>>2];a:{if((c|0)!=J[e+8>>2]){J[e+4>>2]=c+40;a=J[b+36>>2];J[c+32>>2]=J[b+32>>2];J[c+36>>2]=a;a=J[b+28>>2];J[c+24>>2]=J[b+24>>2];J[c+28>>2]=a;a=J[b+20>>2];J[c+16>>2]=J[b+16>>2];J[c+20>>2]=a;a=J[b+12>>2];J[c+8>>2]=J[b+8>>2];J[c+12>>2]=a;a=J[b+4>>2];J[c>>2]=J[b>>2];J[c+4>>2]=a;a=0;break a}J[d>>2]=(c-J[e>>2]|0)/40;a=fj(a,132935,d)}Ui=d+48|0;return a|0}Z(143244,37616,478,51340);B()}function NJ(a,b,c,d){var e=0,f=0;e=Ui-48|0;Ui=e;J[b>>2]=0;J[b+4>>2]=0;J[b+16>>2]=0;J[b+8>>2]=0;J[b+12>>2]=0;J[e+24>>2]=0;J[e+28>>2]=0;J[e+32>>2]=0;J[e+36>>2]=0;J[e+40>>2]=0;J[e+44>>2]=0;J[e+16>>2]=0;J[e+20>>2]=0;if((c|0)!=(d|0)){J[e+20>>2]=c?2:10}J[e+24>>2]=1;f=-100;if(!(pa(a|0,0,e+16|0,e+12|0)|0)){a=J[e+12>>2];a:{if(!a){break a}if(d){if(c){while(1){b:{switch(J[a+4>>2]-2|0){case 8:c=J[a+20>>2];J[b>>2]=2;b=yu(b);a=J[c+20>>2];J[b+8>>2]=J[c+16>>2];J[b+12>>2]=a;a=J[c+12>>2];J[b>>2]=J[c+8>>2];J[b+4>>2]=a;f=0;break a;case 0:a=J[a+20>>2];J[b>>2]=1;a=J[a+4>>2];J[zu(b)>>2]=a;f=0;break a;default:break b}}a=J[a+28>>2];if(a){continue}break a}}while(1){c=J[a+4>>2];if((c|0)==10){c=J[a+20>>2];J[b>>2]=2;b=yu(b);a=J[c+20>>2];J[b+8>>2]=J[c+16>>2];J[b+12>>2]=a;a=J[c+12>>2];J[b>>2]=J[c+8>>2];J[b+4>>2]=a;f=0;break a}if((c|0)==10){break a}a=J[a+28>>2];if(a){continue}break}break a}if(!c){break a}while(1){c=J[a+4>>2];if((c|0)==2){a=J[a+20>>2];J[b>>2]=1;a=J[a+4>>2];J[zu(b)>>2]=a;f=0;break a}if((c|0)==2){break a}a=J[a+28>>2];if(a){continue}break}}Ip(J[e+12>>2])}Ui=e+48|0;return f}function vQ(a,b,c){var d=0,e=0,f=0,g=0,h=0,i=0;f=Ui-16|0;Ui=f;g=J[b+8>>2];h=J[b+12>>2];a:{b:{c:{d:{d=J[a+76>>2];if(!d){break d}d=J[J[a+72>>2]+(mxa(g,h,d)<<2)>>2];if((d|0)==-1){break d}i=J[a+80>>2];e=d;while(1){e=P(e,24)+i|0;if(J[e>>2]!=(g|0)|J[e+4>>2]!=(h|0)){e=J[e+20>>2];if((e|0)!=-1){continue}break d}break}if(!J[e+8>>2]){break d}e:{while(1){b=P(d,24)+i|0;if((g|0)==J[b>>2]&J[b+4>>2]==(h|0)){break e}d=J[b+20>>2];if((d|0)!=-1){continue}break}Z(113732,40994,171,34913);B()}J[b+12>>2]=J[b+12>>2]+1;break c}d=J[a+108>>2];e=J[a+104>>2];f:{if((d|0)!=(e|0)){d=(d-e>>2)-1|0;if(d>>>0>J[a+112>>2]-e>>2>>>0){break b}d=e+(d<<2)|0;e=J[d>>2];J[a+108>>2]=d;break f}e=Zi[J[79391]](J[a+136>>2],0,0,1)|0;g=J[b+8>>2];h=J[b+12>>2]}J[f+8>>2]=c;J[f>>2]=e;J[f+4>>2]=1;c=a+72|0;d=(J[a+88>>2]-J[a+80>>2]|0)/24|0;a=J[a+96>>2];if((d|0)==(a|0)){a=a+8|0;vN(c,(a>>>0)/3|0,a)}Ux(c,g,h,f);g=J[b+16>>2];c=J[b+20>>2];a=J[b+4>>2];J[f>>2]=0;J[f+12>>2]=0;if(on(a,f,f+12|0)){break a}Zi[J[79393]](e,P(c,g),J[f>>2],0)}Ui=f+16|0;return}Z(144782,53895,514,59583);B()}Z(92823,40994,193,34888);B()}function Bl(a,b,c){var d=0,e=0,f=0;a:{d=J[c+4>>2];if(!d){break a}e=J[c+8>>2]-4|0;while(1){if(!J[e+(d<<2)>>2]){d=d-1|0;if(d){continue}break a}break}if(J[c>>2]>=0){break a}return-10}d=wA(0,a,b,c);b:{if(d){break b}while(1){c:{d=J[a+4>>2];if(!d){break c}b=J[a+8>>2]-4|0;while(1){if(!J[b+(d<<2)>>2]){d=d-1|0;if(d){continue}break c}break}if(J[a>>2]>=0){break c}d=Ql(a,a,c);if(!d){continue}break b}break}while(1){e=0;d=J[a+4>>2];b=0;d:{if(!d){break d}f=J[a+8>>2]-4|0;while(1){b=d;if(J[f+(d<<2)>>2]){break d}d=d-1|0;if(d){continue}break}b=0}d=J[c+4>>2];e:{if(!d){break e}f=J[c+8>>2]-4|0;while(1){if(J[f+(d<<2)>>2]){e=d;break e}d=d-1|0;if(d){continue}break}}f:{if(!(b|e)){break f}g:{if(b>>>0>e>>>0){e=J[a>>2];break g}if(b>>>0>>0){e=0-J[c>>2]|0;break g}d=J[c>>2];h:{e=J[a>>2];if((e|0)>0){if((d|0)<0){break f}break h}if(!e|(d|0)<=0){break h}d=0;break b}while(1){if(!b){break f}b=b-1|0;d=b<<2;f=J[d+J[a+8>>2]>>2];d=J[d+J[c+8>>2]>>2];if(f>>>0>d>>>0){break g}if(d>>>0<=f>>>0){continue}break}e=0-e|0}d=0;if((e|0)<0){break b}}d=wl(a,a,c);if(!d){continue}break}}return d}function FG(a,b){var c=0,d=0,e=0,f=0,g=0,h=0,i=0,j=0,k=0,l=0;g=Ui-16|0;Ui=g;i=63;a:{while(1){cj(J[248829]);d=i<<1;i=d|1;e=sj(i);J[248829]=e;if(!e){J[(J[245836]?983380:983044)>>2]=3;a=0;break a}k=d-19|0;j=J[245836]?983380:983044;d=Ui-32|0;Ui=d;J[d+24>>2]=0;J[d+16>>2]=0;J[d+20>>2]=0;J[d+8>>2]=0;J[d+12>>2]=0;J[d>>2]=0;J[d+4>>2]=0;I[d>>1]=2;J[g+12>>2]=0;hj(d|4,a,4);h=68;c=e+20|0;f=c&3;f=f?f:4;l=24-f|0;b:{if(l>>>0>=k>>>0){break b}c=c-f|0;J[e+4>>2]=c+12;J[e+16>>2]=c+4;f=c;c=c+20|0;J[f+4>>2]=c;hj(J[J[e+16>>2]>>2],a,4);J[J[e+16>>2]+4>>2]=0;c=c+4|0;J[J[e+4>>2]>>2]=c;J[J[e+4>>2]+4>>2]=0;c:{d:{e:{c=ka(d|0,16,c|0,k-l|0,0,0,0)|0;switch(c+12|0){case 1:break d;case 0:break b;default:break e}}f:{switch(c+3|0){case 0:J[j>>2]=2;h=6;break b;case 3:break c;default:break f}}J[j>>2]=3;h=9;break b}J[j>>2]=3;h=J[245744];break b}J[e+12>>2]=4;J[e+8>>2]=2;J[e>>2]=J[J[e+4>>2]>>2];J[g+12>>2]=e;h=0}Ui=d+32|0;if((h|0)==68){continue}break}a=J[g+12>>2]}Ui=g+16|0;J[b>>2]=a;b=0;g:{if(a){break g}b=J[(J[245836]?983380:983044)>>2];if(b){break g}a=J[245744];b=a?a:-3}return b}function cla(a){a=a|0;var b=0,c=0,d=0,e=0,f=0,g=0;b=Ui-48|0;Ui=b;f=J[J[a+12>>2]>>2];a:{b:{c=J[a+16>>2];g=J[c+80>>2];c:{if((g|0)==J[56612]){d=J[a+8>>2];H[b+29|0]=0;H[b+30|0]=0;H[b+31|0]=0;H[b+32|0]=0;H[b+33|0]=0;H[b+34|0]=0;H[b+35|0]=0;H[b+36|0]=0;J[b+24>>2]=0;J[b+28>>2]=0;J[b+16>>2]=0;J[b+20>>2]=0;Gx(d,J[f+4>>2],b);a=J[a+16>>2];N[b+16>>2]=N[a+96>>2];N[b+20>>2]=N[a+100>>2];N[b+24>>2]=N[a+104>>2];N[b+28>>2]=N[a+108>>2];H[b+36|0]=K[a+112|0]<<1&2|K[b+36|0]&253;N[b+32>>2]=N[a+116>>2];xq(d,J[f+4>>2],b);break c}d=J[c+64>>2];e=J[55237];c=J[c+68>>2];if(!(((d|0)!=J[e+8>>2]|(c|0)!=J[e+12>>2])&(g|0)!=J[56613])){d=J[f+8>>2];xy(d,f);g=d+20|0;c=J[d+20>>2];e=J[d+24>>2];if((c|0)==(e|0)){if(H[d+28|0]&1){break b}e=c;c=d+16|0;lj((e-J[c>>2]>>2)+1|0,4,c,d+24|0,g);e=J[d+24>>2];c=J[g>>2]}if((c|0)==(e|0)){break a}J[g>>2]=c+4;J[c>>2]=f;bC(J[a+8>>2],J[f+4>>2],1);break c}e=J[55238];if(((d|0)!=J[e+8>>2]|(c|0)!=J[e+12>>2])&(g|0)!=J[56614]){break c}xy(J[f+8>>2],f);bC(J[a+8>>2],J[f+4>>2],0)}Ui=b+48|0;return 0}Z(151729,53895,501,2284);B()}Z(112520,53895,557,53220);B()}function ax(a){var b=0,c=0,d=0,e=0,f=0,g=0,h=0,i=0,j=0;A(+a);b=v(1)|0;v(0)|0;a:{b:{b=b>>>20&2047;if(b-969>>>0<63){h=b;break b}if(b>>>0<969){return a+1}if(b>>>0<1033){break b}A(+a);f=v(1)|0;e=0;if(!(v(0)|0)&(f|0)==-1048576){break a}if(b>>>0>=2047){return a+1}if((f|0)<0){b=Ui-16|0;O[b+8>>3]=12882297539194267e-247;return O[b+8>>3]*12882297539194267e-247}b=Ui-16|0;O[b+8>>3]=3105036184601418e216;return O[b+8>>3]*3105036184601418e216}c=O[25185];g=a*O[25184]+c;c=g-c;a=c*O[25187]+(c*O[25186]+a);c=a*a;i=c*c*(a*O[25191]+O[25190]);e=c*(a*O[25189]+O[25188]);A(+g);v(1)|0;b=v(0)|0;d=b<<4&2032;a=i+(e+(O[d+201584>>3]+a));d=d+201592|0;f=0+J[d>>2]|0;d=J[d+4>>2]+(b<<13)|0;d=f>>>0>>0?d+1|0:d;if(!h){c:{if(!(b&-2147483648)){x(0,f|0);x(1,d-1058013184|0);c=+z();a=(c*a+c)*5486124068793689e288;break c}x(0,f|0);x(1,d+1071644672|0);c=+z();g=c*a;a=g+c;if(a<1){b=Ui-16|0;J[b+8>>2]=0;J[b+12>>2]=1048576;O[b+8>>3]=O[b+8>>3]*22250738585072014e-324;e=a+1;a=e+(g+(c-a)+(a+(1-e)))+-1;a=a==0?0:a}a=a*22250738585072014e-324}return a}x(0,f|0);x(1,d|0);c=+z();e=c*a+c}return e}function qD(a,b,c,d,e){var f=0,g=0,h=0,i=0,j=0,k=0;a:{if((e|0)==65535){f=0}else{f=J[c>>2];if((J[c+4>>2]-f|0)/24>>>0<=e>>>0){break a}f=f+P(e,24)|0}b:{c:{if((b|0)!=65535){k=f?f+4|0:0;while(1){g=b&65535;f=J[a+32>>2];if(g>>>0>=(J[a+36>>2]-f|0)/672>>>0){break a}f=f+P(g,672)|0;g=J[f+476>>2];d:{if(!(g&1048576)){break d}e:{switch(g>>>24&3){case 2:i=J[c>>2];j=J[c+4>>2]-i|0;h=(j|0)/24|0;g=h+1|0;if(g>>>0>(J[c+8>>2]-i|0)/24>>>0){break c}g=P(g,24)+i|0;J[c+4>>2]=g;if((j|0)==-24){break b}I[g-6>>1]=65535;I[g-8>>1]=e;I[g-4>>1]=b;b=g-16|0;J[b>>2]=-1;J[b+4>>2]=-1;I[f+666>>1]=h;if(K[f+479|0]&8){TN(f,g-24|0,g-20|0,k,L[d+8>>1],0,0,L[d+4>>1]);I[d+8>>1]=L[d+8>>1]+1;qD(a,L[f+658>>1],c,d,h&65535);break d}if(L[d>>1]!=65535){b=L[d+2>>1];if(b>>>0>=(j+24|0)/24>>>0){break a}b=(P(b,24)+i|0)+18|0}else{b=d}I[b>>1]=h;I[d+2>>1]=h;I[d+6>>1]=L[d+6>>1]+1;break d;case 0:break e;default:break d}}I[f+666>>1]=e;qD(a,L[f+658>>1],c,d,e)}b=L[f+654>>1];if((b|0)!=65535){continue}break}}return}Z(144782,53895,514,59583);B()}Z(112533,53895,443,51980);B()}Z(145396,53895,487,84789);B()}function cF(a,b){var c=0,d=0,e=0,f=0,g=0,h=Q(0);e=J[a+88>>2];if(!(K[e+102868|0]&2)){c=Hl(e,52);J[c+48>>2]=0;I[c+36>>1]=0;J[c+32>>2]=-65535;J[c+24>>2]=0;J[c+28>>2]=0;J[c>>2]=0;J[c+4>>2]=0;J[c+8>>2]=0;J[c+12>>2]=0;J[c+40>>2]=c+32;J[c+48>>2]=J[b+4>>2];N[c+16>>2]=N[b+8>>2];h=N[b+12>>2];J[c+8>>2]=a;N[c+20>>2]=h;J[c+4>>2]=0;d=J[c+40>>2];f=L[b+22>>1]|L[b+24>>1]<<16;I[d>>1]=f;I[d+2>>1]=f>>>16;I[d+4>>1]=L[b+26>>1];H[c+44|0]=K[b+20|0];d=J[b>>2];J[c+12>>2]=d;d=Zi[J[J[d>>2]+12>>2]](d)|0;J[c+24>>2]=Hl(e,P(d,28));if(H[J[c+12>>2]+20|0]&1){J[c+40>>2]=Hl(e,P(d,6))}if((d|0)>0){while(1){e=J[c+24>>2]+P(g,28)|0;J[e+24>>2]=-1;J[e+16>>2]=0;if(H[J[c+12>>2]+20|0]&1){e=J[c+40>>2]+P(g,6)|0;f=L[b+22>>1]|L[b+24>>1]<<16;I[e>>1]=f;I[e+2>>1]=f>>>16;I[e+4>>1]=L[b+26>>1]}g=g+1|0;if((d|0)!=(g|0)){continue}break}}J[c+28>>2]=0;N[c>>2]=N[b+16>>2];if(K[a+4|0]&32){YU(c,J[a+88>>2]+102872|0,a+12|0)}J[c+4>>2]=J[a+100>>2];J[a+100>>2]=c;J[a+104>>2]=J[a+104>>2]+1;J[c+8>>2]=a;if(N[c>>2]>Q(0)){Hr(a)}a=J[a+88>>2];J[a+102868>>2]=J[a+102868>>2]|1;return c}Z(62621,36890,153,62724);B()}function JA(a,b,c,d,e){var f=0,g=0,h=0,i=0,j=0,k=0;a:{f=0;b:{c:{d:{if(!e){break d}while(1){f=h+1|0;j=e>>>0>f>>>0?e:f;f=j-h|0;i=0;e:{while(1){if(K[d+h|0]!=32){break e}h=h+1|0;i=i+1|0;if((f|0)!=(i|0)){continue}break}h=j;i=f}f:{if((e|0)==(h|0)){h=e;break f}f=d+h|0;j=H[f|0];g:{h:{if(!((j|0)!=13|e-h>>>0<2)){if(K[f+1|0]==10){break g}if(i){break a}j=13;break h}if((j|0)==10){break g}f=-44;if(i){break b}if((j|0)==61){if(g>>>0>1){break b}g=g+1|0;j=61;break h}if((j|0)<0){break b}}f=-44;i=K[j+178112|0];if((i|0)==127|(g?i>>>0<=63:0)){break b}k=k+1|0}h=h+1|0;if(h>>>0>>0){continue}}break}f=0;if(!k){break d}g=P(k>>>3|0,6)-g+(P(k&7,6)+7>>>3)|0;f=-42;if(!a|g>>>0>b>>>0){break c}b=a;if(h){f=3;k=0;e=0;while(1){g=K[d|0];i=g-10|0;i:{if(1<>>0<=22:0){break i}i=k<<6;k=i|K[g+178112|0]&63;g=f-((g|0)==61)|0;e=e+1|0;if((e|0)==4){e=0;if(!g){f=0;break i}H[b|0]=i>>>16;f=1;if((g|0)==1){b=b+1|0;break i}H[b+1|0]=i>>>8;if(g>>>0<3){f=2;b=b+2|0;break i}H[b+2|0]=k;b=b+3|0}f=g}d=d+1|0;h=h-1|0;if(h){continue}break}}f=b-a|0}g=f;f=0}J[c>>2]=g}return f}return-44}function JM(a){var b=0;b=J[a+8>>2];J[b+8>>2]=3;O[b>>3]=0;J[a+8>>2]=J[a+8>>2]+16;ej(a,-2,93141);b=J[a+8>>2];J[b+8>>2]=3;O[b>>3]=-1;J[a+8>>2]=J[a+8>>2]+16;ej(a,-2,90479);b=J[a+8>>2];J[b+8>>2]=3;O[b>>3]=-2;J[a+8>>2]=J[a+8>>2]+16;ej(a,-2,89634);b=J[a+8>>2];J[b+8>>2]=3;O[b>>3]=-3;J[a+8>>2]=J[a+8>>2]+16;ej(a,-2,96519);b=J[a+8>>2];J[b+8>>2]=3;O[b>>3]=-4;J[a+8>>2]=J[a+8>>2]+16;ej(a,-2,93582);b=J[a+8>>2];J[b+8>>2]=3;O[b>>3]=-5;J[a+8>>2]=J[a+8>>2]+16;ej(a,-2,93610);b=J[a+8>>2];J[b+8>>2]=3;O[b>>3]=-6;J[a+8>>2]=J[a+8>>2]+16;ej(a,-2,93675);b=J[a+8>>2];J[b+8>>2]=3;O[b>>3]=-7;J[a+8>>2]=J[a+8>>2]+16;ej(a,-2,93733);b=J[a+8>>2];J[b+8>>2]=3;O[b>>3]=-8;J[a+8>>2]=J[a+8>>2]+16;ej(a,-2,93760);b=J[a+8>>2];J[b+8>>2]=3;O[b>>3]=-9;J[a+8>>2]=J[a+8>>2]+16;ej(a,-2,89445);b=J[a+8>>2];J[b+8>>2]=3;O[b>>3]=-10;J[a+8>>2]=J[a+8>>2]+16;ej(a,-2,89538);b=J[a+8>>2];J[b+8>>2]=3;O[b>>3]=-11;J[a+8>>2]=J[a+8>>2]+16;ej(a,-2,92653);b=J[a+8>>2];J[b+8>>2]=3;O[b>>3]=-12;J[a+8>>2]=J[a+8>>2]+16;ej(a,-2,97166);b=J[a+8>>2];J[b+8>>2]=3;O[b>>3]=-1e3;J[a+8>>2]=J[a+8>>2]+16;ej(a,-2,91130)}function ao(a){var b=0,c=0,d=0,e=0;b=J[a>>2];d=J[b+8>>2]-J[b+12>>2]>>4;a:{b:{if(J[a+8>>2]==-2){dj(3,86858,139592,0);a=0;if(J[b+8>>2]-J[b+12>>2]>>4==(d|0)){break b}Z(143244,37704,1681,51721);B()}c=J[84546];e=J[b+8>>2];J[e+8>>2]=3;O[e>>3]=c|0;J[b+8>>2]=J[b+8>>2]+16;Ck(b,-10002);Nj(b,-1e4,J[a+4>>2]);if((kj(b,-1)|0)!=5){gj(b,-3);if(J[b+8>>2]-J[b+12>>2]>>4==(d|0)){return 0}Z(143244,37704,1695,51721);B()}c=J[b+8>>2]-J[b+12>>2]>>4;Nj(b,c,J[a+12>>2]);if((kj(b,-1)|0)!=6){gj(b,-4);if(J[b+8>>2]-J[b+12>>2]>>4==(d|0)){return 0}Z(143244,37704,1709,51721);B()}Nj(b,c,J[a+16>>2]);if(!kj(b,-1)){gj(b,-5);if(J[b+8>>2]-J[b+12>>2]>>4==(d|0)){return 0}Z(143244,37704,1722,51721);B()}uj(b,-1);a=J[84546];c=J[b+8>>2];J[c+8>>2]=3;O[c>>3]=a|0;J[b+8>>2]=J[b+8>>2]+16;Pk(b,-2);Kj(b,-10002);if(!Eu(b)){gj(b,-4);a=J[84546];c=J[b+8>>2];J[c+8>>2]=3;O[c>>3]=a|0;J[b+8>>2]=J[b+8>>2]+16;Pk(b,-2);Kj(b,-10002);if(J[b+8>>2]-J[b+12>>2]>>4==(d|0)){return 0}Z(143244,37704,1745,51721);B()}if((d+4|0)!=J[b+8>>2]-J[b+12>>2]>>4){break a}a=1}return a}Z(143359,37704,1749,51721);B()}function Ssa(a,b,c,d){a=a|0;b=b|0;c=c|0;d=d|0;var e=Q(0),f=Q(0),g=Q(0),h=Q(0),i=Q(0),j=Q(0),k=Q(0),l=Q(0),m=Q(0),n=Q(0),o=Q(0),p=Q(0),q=Q(0),r=Q(0),s=Q(0),t=Q(0),u=Q(0),v=Q(0),w=Q(0),x=Q(0),y=Q(0),z=Q(0);a:{if(J[a+16>>2]){e=N[a+56>>2];k=N[a+40>>2];g=Q(Q(e+k)*Q(.5));l=N[a+52>>2];m=N[a+36>>2];h=Q(Q(l+m)*Q(.5));f=N[a+48>>2];n=N[a+32>>2];r=Q(Q(f+n)*Q(.5));p=Q(Q(e-k)*Q(.5));u=Q(Q(l-m)*Q(.5));e=Q(Q(f-n)*Q(.5));break a}e=Q(0)}v=Q(Zi[J[J[a>>2]+44>>2]](a));w=Q(Zi[J[J[a>>2]+44>>2]](a));s=Q(Zi[J[J[a>>2]+44>>2]](a));x=N[b+48>>2];k=N[b+8>>2];l=N[b>>2];m=N[b+4>>2];y=N[b+52>>2];f=N[b+24>>2];n=N[b+16>>2];t=N[b+20>>2];q=N[b+56>>2];i=N[b+40>>2];j=N[b+32>>2];o=N[b+36>>2];J[c+12>>2]=0;q=Q(q+Q(Q(i*g)+Q(Q(j*r)+Q(h*o))));z=Q(R(i));i=Q(p+s);e=Q(e+v);s=Q(Q(R(j))*e);j=Q(u+w);o=Q(Q(z*i)+Q(s+Q(j*Q(R(o)))));N[c+8>>2]=q-o;p=Q(y+Q(Q(f*g)+Q(Q(n*r)+Q(h*t))));f=Q(Q(Q(R(f))*i)+Q(Q(Q(R(n))*e)+Q(j*Q(R(t)))));N[c+4>>2]=p-f;g=Q(x+Q(Q(k*g)+Q(Q(l*r)+Q(h*m))));h=Q(Q(Q(R(k))*i)+Q(Q(Q(R(l))*e)+Q(j*Q(R(m)))));N[c>>2]=g-h;J[d+12>>2]=0;N[d+8>>2]=o+q;N[d+4>>2]=f+p;N[d>>2]=h+g}function tP(a){var b=0,c=0,d=0,e=0,f=0,g=0;c=Ui-288|0;Ui=c;d=J[79491];b=J[d+108>>2];a:{b:{c:{d:{e:{f:{e=J[d+112>>2]-b>>2;d=J[a+2068>>2];if(e>>>0>d>>>0){d=J[b+(d<<2)>>2];na(d|0,35721,c+284|0);if(K[J[79491]+220|0]&2){b=_()|0;if(b){break f}}if(H[a+2088|0]&1){break e}g=a+2076|0;f=a+2080|0;lj(J[c+284>>2],24,g,a+2084|0,f);b=J[c+284>>2];e=J[a+2084>>2];a=J[a+2076>>2];if(b>>>0>(e-a|0)/24>>>0){break d}J[f>>2]=a+P(b,24);a=0;if((b|0)>0){while(1){b=J[g>>2];if((J[f>>2]-b|0)/24>>>0<=a>>>0){break a}Ac(d|0,a|0,256,c+12|0,c+8|0,c+4|0,c+16|0);if(K[J[79491]+220|0]&2){e=_()|0;if(e){break c}}b=b+P(a,24)|0;e=c+16|0;J[b+8>>2]=yc(d|0,e|0);J[b>>2]=bj(e);J[b+4>>2]=Yi;J[b+12>>2]=J[c+8>>2];J[b+16>>2]=J[c+4>>2];if(K[J[79491]+220|0]&2){b=_()|0;if(b){break b}}a=a+1|0;if((a|0)>2]){continue}break}}Ui=c+288|0;return}break a}Cj(b,22284,2224);Z(114101,40535,2224,22284);B()}Z(151729,53895,501,2284);B()}Z(144782,53895,514,59583);B()}Cj(e,22284,2242);Z(114101,40535,2242,22284);B()}Cj(b,22284,2248);Z(114101,40535,2248,22284);B()}Z(145396,53895,487,84789);B()}function jga(a){a=a|0;var b=0,c=0,d=0,e=0,f=Q(0),g=0,h=0,i=0,j=0,k=Q(0);b=Ui+-64|0;Ui=b;h=pj(b+12|0,a,0,39481,1703);nr(a,J[78152]);c=Vj(a,-1);gj(a,-2);d=J[J[pk(a)+80>>2]+8>>2];e=J[d>>2];c=J[c+8>>2];if(M[J[e+4>>2]>>2]>c>>>0){c=J[(e+(c<<2)|0)+12>>2]}else{c=0}J[b+8>>2]=c;a:{if(!c){i=Jj(h,120224,0);break a}J[b+4>>2]=0;J[b+56>>2]=0;J[b+60>>2]=0;J[b+48>>2]=0;J[b+52>>2]=0;J[b+40>>2]=0;J[b+44>>2]=0;J[b+32>>2]=0;J[b+36>>2]=0;Al(a,1,d,80935,b+4|0,b+32|0,b+8|0);j=wj(a,2);a=J[b+4>>2];k=Q(j);c=0;b:{if(H[J[b+8>>2]+145|0]&1){a=14769}else{d=Ui-16|0;Ui=d;c:{d:{e=J[a+8>>2];e:{if(J[e>>2]!=2){break e}a=J[e+100>>2];if(!a){break e}while(1){g=J[a+12>>2];Zi[J[J[g>>2]+28>>2]](g,d,Q(1));f=Q(f+N[d>>2]);a=J[a+4>>2];if(a){continue}break}if(f<=Q(0)){break e}a=J[e+100>>2];if(a){f=Q(k/f);c=(C(f),v(2));g=c&2147483647;if(!(!g|c-1>>>0<8388607|g-8388608>>>0<2130706432&(c|0)>=0)){break d}while(1){N[a>>2]=f;a=J[a+4>>2];if(a){continue}break}}Hr(e);c=1}Ui=d+16|0;break c}Z(58185,55589,303,1737);B()}if(c){break b}a=112364}dj(4,88458,a,0)}}oj(h);Ui=b- -64|0;return i|0}function Eia(a){a=a|0;var b=0,c=0,d=0,e=0,f=0,g=0,h=0;c=J[a+8>>2];b=J[c+32>>2];d=J[J[a+16>>2]>>2];if(d>>>0>2]-b>>3>>>0){b=J[b+(d<<3)>>2];e=J[c+16>>2];if(b>>>0<(J[c+20>>2]-e|0)/20>>>0){a:{b=J[(e+P(b,20)|0)+4>>2];if(b){vj(J[J[a+12>>2]>>2],b)}a=(J[c+20>>2]-J[c+16>>2]|0)/20|0;b:{c:{d:{e:{b=J[c+32>>2];e=J[c+36>>2]-b>>3;if(e>>>0>d>>>0){g=a-1|0;h=J[c+48>>2];if(g>>>0>=J[c+52>>2]-h>>2>>>0){break a}f=a;a=(d<<3)+b|0;if(f>>>0<=M[a>>2]){break e}d=J[h+(g<<2)>>2];if(d>>>0>=e>>>0){break a}f=(d<<3)+b|0;b=J[a>>2];J[f>>2]=b;e=J[c+48>>2];if(b>>>0>=J[c+52>>2]-e>>2>>>0){break a}J[e+(b<<2)>>2]=d;e=J[a>>2];b=J[c+20>>2];d=J[c+16>>2];if(e>>>0>=(b-d|0)/20>>>0){break d}d=d+P(e,20)|0;b=b-20|0;e=J[b+4>>2];J[d>>2]=J[b>>2];J[d+4>>2]=e;J[d+16>>2]=J[b+16>>2];e=J[b+12>>2];J[d+8>>2]=J[b+8>>2];J[d+12>>2]=e;d=J[c+20>>2]-20|0;J[c+20>>2]=d;if(d>>>0>2]){break c}J[a+4>>2]=J[c+64>>2];J[c+64>>2]=a-J[c+32>>2]>>3;break b}break a}Z(59182,54416,152,68876);B()}Z(145381,53895,537,43537);B()}Z(12682,53895,540,43537);B()}return 0}}}Z(145396,53895,487,84789);B()}function Jw(a,b){var c=0,d=0;a:{b:{c:{d:{if((b|0)>0){c=(J[a+12>>2]+(b<<4)|0)-16|0;c=c>>>0>=M[a+8>>2]?173288:c;break d}c=J[a+8>>2]+(b<<4)|0;if((b|0)>=-9999){break d}e:{switch(b+10002|0){case 2:c=J[a+16>>2]+96|0;break d;case 1:c=J[J[J[J[a+20>>2]+4>>2]>>2]+12>>2];J[a+96>>2]=5;J[a+88>>2]=c;c=a+88|0;break d;case 0:c=a+72|0;break d;default:break e}}c=J[J[J[a+20>>2]+4>>2]>>2];c=K[c+7|0]<-10002-b>>>0?173288:(c+(0-b<<4)|0)-160024|0}switch(J[c+8>>2]-2|0){case 3:case 4:case 6:break c;case 0:case 5:break b;default:break a}}return J[c>>2]}f:{g:{h:{if((b|0)>0){b=(J[a+12>>2]+(b<<4)|0)-16|0;c=b>>>0>=M[a+8>>2]?173288:b;break h}c=J[a+8>>2]+(b<<4)|0;if((b|0)>=-9999){break h}i:{switch(b+10002|0){case 2:c=J[a+16>>2]+96|0;break h;case 1:b=J[J[J[J[a+20>>2]+4>>2]>>2]+12>>2];J[a+96>>2]=5;J[a+88>>2]=b;c=a+88|0;break h;case 0:c=a+72|0;break h;default:break i}}a=J[J[J[a+20>>2]+4>>2]>>2];c=K[a+7|0]<-10002-b>>>0?173288:(a+(0-b<<4)|0)-160024|0}a=c;switch(J[a+8>>2]-2|0){case 0:break f;case 5:break g;default:break a}}return J[a>>2]+32|0}d=J[a>>2]}return d}function ZI(a,b,c,d,e){var f=Q(0),g=Q(0),h=0,i=Q(0),j=Q(0),k=0;if(!(a&3)){k=a>>2;if((k|0)>0){a=(c<<2)+b|0;d=a+(d<<2)|0;while(1){b=d-4|0;g=N[b>>2];i=N[a>>2];j=N[d>>2];N[a>>2]=i+j;c=a-4|0;f=N[c>>2];N[c>>2]=f+N[b>>2];i=Q(i-j);f=Q(f-g);N[d>>2]=Q(i*N[e>>2])-Q(f*N[e+4>>2]);N[b>>2]=Q(f*N[e>>2])+Q(i*N[e+4>>2]);b=d-12|0;i=N[b>>2];c=a-8|0;f=N[c>>2];h=c;c=d-8|0;j=N[c>>2];N[h>>2]=f+j;h=a-12|0;g=N[h>>2];N[h>>2]=g+N[b>>2];f=Q(f-j);g=Q(g-i);N[c>>2]=Q(f*N[e+32>>2])-Q(g*N[e+36>>2]);N[b>>2]=Q(g*N[e+32>>2])+Q(f*N[e+36>>2]);b=d-20|0;i=N[b>>2];c=a-16|0;f=N[c>>2];h=c;c=d-16|0;j=N[c>>2];N[h>>2]=f+j;h=a-20|0;g=N[h>>2];N[h>>2]=g+N[b>>2];f=Q(f-j);g=Q(g-i);N[c>>2]=Q(f*N[e+64>>2])-Q(g*N[e+68>>2]);N[b>>2]=Q(g*N[e+64>>2])+Q(f*N[e+68>>2]);b=d-28|0;i=N[b>>2];c=a-24|0;f=N[c>>2];h=c;c=d-24|0;j=N[c>>2];N[h>>2]=f+j;h=a-28|0;g=N[h>>2];N[h>>2]=g+N[b>>2];f=Q(f-j);g=Q(g-i);N[c>>2]=Q(f*N[e+96>>2])-Q(g*N[e+100>>2]);N[b>>2]=Q(g*N[e+96>>2])+Q(f*N[e+100>>2]);d=d-32|0;a=a-32|0;e=e+128|0;b=k>>>0>1;k=k-1|0;if(b){continue}break}}return}Z(113479,82607,2414,42960);B()}function zca(a){a=a|0;var b=0,c=0,d=0,e=0,f=0,g=0,h=0,i=0,j=0;b=Ui-32|0;Ui=b;h=J[a+8>>2]-J[a+12>>2]>>4;Al(a,1,J[J[pk(a)+80>>2]+8>>2],81707,b+28|0,0,0);d=mk(a,2);a:{c=Yi;i=vy(J[b+28>>2],d,c);b:{if((i|0)==-1){J[b>>2]=tj(d,c);dj(4,88458,134126,b);e=J[a+8>>2];J[e+8>>2]=0;J[a+8>>2]=e+16;if((h+1|0)==J[a+8>>2]-J[a+12>>2]>>4){break b}Z(143334,40250,503,22857);B()}sy(J[b+28>>2],b+24|0,b+20|0,b+16|0,b+12|0);d=J[b+20>>2];c=J[J[b+28>>2]+156>>2];J[b+8>>2]=J[b+24>>2]-J[c+36>>2];J[b+4>>2]=d-J[c+40>>2];Fj(a,0,0);if(J[b+12>>2]>0){while(1){d=e+1|0;c=d+J[b+20>>2]|0;f=J[a+8>>2];J[f+8>>2]=3;O[f>>3]=c|0;J[a+8>>2]=J[a+8>>2]+16;c=0;Fj(a,0,0);if(J[b+16>>2]>0){while(1){f=hQ(J[b+28>>2],i,J[b+8>>2]+c|0,J[b+4>>2]+e|0);c=c+1|0;g=c+J[b+24>>2]|0;j=J[a+8>>2];J[j+8>>2]=3;O[j>>3]=g|0;J[a+8>>2]=J[a+8>>2]+16;g=J[a+8>>2];J[g+8>>2]=3;O[g>>3]=f|0;J[a+8>>2]=J[a+8>>2]+16;Kj(a,-3);if(J[b+16>>2]>(c|0)){continue}break}}Kj(a,-3);e=d;if((d|0)>2]){continue}break}}if((h+1|0)!=J[a+8>>2]-J[a+12>>2]>>4){break a}}Ui=b+32|0;return 1}Z(143334,40250,528,22857);B()}function NL(a,b,c){var d=0,e=0,f=0,g=0,h=0,i=0,j=0,k=0,l=0,m=0,n=0,o=0,p=0;f=Ui+-64|0;Ui=f;d=J[a+4>>2];g=J[a>>2];if((d|0)!=(g|0)){i=f+48|0;j=f+32|0;k=f+16|0;while(1){l=J[J[(n<<2)+g>>2]+84>>2];if(J[l+8>>2]>0){m=0;while(1){d=m<<2;e=J[d+J[l+16>>2]>>2];h=J[e+192>>2];a:{if(J[h+4>>2]==31){o=J[h+16>>2];if(!o){break a}e=J[h+24>>2];g=0;while(1){d=P(g,80)+e|0;p=J[d+64>>2];if((p|0)==(b|0)){e=J[d+12>>2];J[f+8>>2]=J[d+8>>2];J[f+12>>2]=e;e=J[d+4>>2];J[f>>2]=J[d>>2];J[f+4>>2]=e;e=J[d+28>>2];J[k+8>>2]=J[d+24>>2];J[k+12>>2]=e;e=J[d+20>>2];J[k>>2]=J[d+16>>2];J[k+4>>2]=e;e=J[d+44>>2];J[j+8>>2]=J[d+40>>2];J[j+12>>2]=e;e=J[d+36>>2];J[j>>2]=J[d+32>>2];J[j+4>>2]=e;e=J[d+60>>2];J[i+8>>2]=J[d+56>>2];J[i+12>>2]=e;e=J[d+52>>2];J[i>>2]=J[d+48>>2];J[i+4>>2]=e;Zi[J[J[h>>2]+60>>2]](h,p);gz(h,f,c);break a}g=g+1|0;if((o|0)!=(g|0)){continue}break}break a}if((b|0)!=(h|0)){break a}Zi[J[J[e>>2]+12>>2]](e,c);Gr(J[d+J[l+16>>2]>>2],1)}m=m+1|0;if((m|0)>2]){continue}break}g=J[a>>2];d=J[a+4>>2]}n=n+1|0;if(n>>>0>2>>>0){continue}break}}Ui=f- -64|0}function Jn(a,b,c){var d=0,e=Q(0),f=0,g=0,h=Q(0),i=Q(0),j=Q(0),k=Q(0),l=Q(0),m=Q(0),n=Q(0),o=Q(0),p=Q(0),q=Q(0),r=Q(0),s=Q(0),t=Q(0),u=Q(0),v=0,w=Q(0),x=Q(0),y=Q(0);d=Ui-48|0;Ui=d;f=J[b+120>>2];v=J[b+124>>2];g=J[b>>2]+(v>>1)|0;if(v&1){f=J[f+J[g>>2]>>2]}Zi[f|0](d,g,c);h=N[c+8>>2];i=N[c+4>>2];k=N[c>>2];f=J[b+124>>2];g=J[b+4>>2]+(f>>1)|0;c=J[b+120>>2];c=f&1?J[J[g>>2]+c>>2]:c;l=N[b+16>>2];m=N[b+8>>2];n=N[b+12>>2];o=N[b+32>>2];p=N[b+24>>2];q=N[b+28>>2];r=N[b+48>>2];e=N[b+40>>2];s=N[b+44>>2];J[d+28>>2]=0;j=e;e=Q(-k);N[d+24>>2]=Q(Q(j*e)-Q(s*i))-Q(r*h);N[d+20>>2]=Q(Q(p*e)-Q(q*i))-Q(o*h);N[d+16>>2]=Q(Q(m*e)-Q(n*i))-Q(l*h);Zi[c|0](d+32|0,g,d+16|0);w=N[b+104>>2];x=N[b+64>>2];y=N[b+56>>2];h=N[b+60>>2];i=N[b+108>>2];k=N[b+80>>2];l=N[b+72>>2];m=N[b+76>>2];n=N[b+112>>2];o=N[b+96>>2];p=N[b+88>>2];q=N[b+92>>2];j=N[d+40>>2];t=N[d+32>>2];u=N[d+36>>2];r=N[d>>2];e=N[d+4>>2];s=N[d+8>>2];J[a+12>>2]=0;N[a+8>>2]=s-Q(n+Q(Q(o*j)+Q(Q(p*t)+Q(u*q))));N[a+4>>2]=e-Q(i+Q(Q(k*j)+Q(Q(l*t)+Q(u*m))));N[a>>2]=r-Q(w+Q(Q(x*j)+Q(Q(y*t)+Q(h*u))));Ui=d+48|0}function Spa(a,b,c,d){a=a|0;b=b|0;c=c|0;d=d|0;var e=0,f=0,g=0,h=Q(0),i=Q(0),j=Q(0),k=Q(0),l=Q(0),m=Q(0);e=Ui-672|0;Ui=e;f=Dv(e+572|0);J[f+4>>2]=1;J[f>>2]=245112;g=J[b+12>>2];J[f+60>>2]=J[b+8>>2];J[f+64>>2]=g;g=J[b+4>>2];J[f+52>>2]=J[b>>2];J[f+56>>2]=g;g=J[b+28>>2];J[f+76>>2]=J[b+24>>2];J[f+80>>2]=g;g=J[b+20>>2];J[f+68>>2]=J[b+16>>2];J[f+72>>2]=g;g=J[b+44>>2];J[f+92>>2]=J[b+40>>2];J[f+96>>2]=g;g=J[b+36>>2];J[f+84>>2]=J[b+32>>2];J[f+88>>2]=g;N[f+44>>2]=N[a+204>>2];H[e+544|0]=0;J[e+520>>2]=953267991;J[e+208>>2]=246848;g=J[a+4>>2];b=e+188|0;J[b+16>>2]=f;J[b+12>>2]=g;J[b+8>>2]=e+208;J[b+4>>2]=e+212;J[b>>2]=246780;J[e+184>>2]=0;J[e+12>>2]=244680;J[e+176>>2]=1065353216;J[e+180>>2]=0;f=b;b=a+136|0;a:{if(!KT(f,a+8|0,a+72|0,b,b,e+12|0)){break a}h=N[e+152>>2];i=N[e+144>>2];j=N[e+148>>2];k=Q(Q(h*h)+Q(Q(i*i)+Q(j*j)));if(!(k>Q(9999999747378752e-20))){break a}l=N[e+176>>2];if(!(l>2])){break a}m=h;h=Q(Q(1)/Q(Y(k)));N[e+152>>2]=m*h;N[e+148>>2]=j*h;N[e+144>>2]=i*h;Q(Zi[J[J[a>>2]+12>>2]](a,e+144|0,e+160|0,l,c,d))}Ui=e+672|0}function d2(a){a=a|0;var b=0,c=0,d=0,e=0,f=0;d=Ui-48|0;Ui=d;c=Vj(a,1);a:{b:{b=Aj(a,2,0);if(!jj(15431,b)){b=Bu(a,3);c:{d:{if(b){a=J[b>>2];b=J[b+4>>2];break d}if(Mk(a,3)){e:{f:{g:{e=Ij(a,3,0);c=eo(e,c);f=c+6|0;switch(f|0){case 2:break g;case 0:case 6:break e;default:break f}}J[d+16>>2]=e;b=fj(a,127004,d+16|0);break a}J[d+4>>2]=c;J[d>>2]=e;b=fj(a,130714,d)}switch(f|0){case 0:case 6:break c;default:break a}}if(kj(a,3)){break b}a=0;b=0}J[c>>2]=a;J[c+4>>2]=b}b=0;break a}if(!jj(53134,b)){if(Mk(a,3)){b=0;J[c+16>>2]=bj(Ij(a,3,0));J[c+20>>2]=Yi;break a}if(!kj(a,3)){J[c+16>>2]=0;J[c+20>>2]=0;b=0;break a}b=Bu(a,3);if(!b){b=fj(a,122019,0);break a}a=J[b+4>>2];J[c+16>>2]=J[b>>2];J[c+20>>2]=a;b=0;break a}if(!jj(13900,b)){if(Mk(a,3)){b=0;J[c+24>>2]=bj(Ij(a,3,0));J[c+28>>2]=Yi;break a}if(!kj(a,3)){J[c+24>>2]=0;J[c+28>>2]=0;b=0;break a}b=Bu(a,3);if(!b){b=fj(a,121963,0);break a}a=J[b+4>>2];J[c+24>>2]=J[b>>2];J[c+28>>2]=a;b=0;break a}J[d+36>>2]=49412;J[d+32>>2]=55920;b=fj(a,115646,d+32|0);break a}b=fj(a,121907,0)}Ui=d+48|0;return b|0}function DH(a,b,c){var d=0,e=0,f=0,g=0,h=0;if(c-17>>>0<4294967283){return-20}f=J[a+328>>2];h=J[a+332>>2];e=J[a+324>>2];d=J[a+320>>2];g=hj(b,a+336|0,c);b=d;d=e<<3|b>>>29;e=b<<3;b=h<<3|f>>>29;f=f<<3;if(!(e|f|(b|d))){return 0}H[a+375|0]=f^K[a+375|0];H[a+368|0]=K[a+368|0]^b>>>24;H[a+369|0]=K[a+369|0]^b>>>16;H[a+370|0]=K[a+370|0]^b>>>8;H[a+371|0]=b^K[a+371|0];H[a+372|0]=K[a+372|0]^f>>>24;H[a+373|0]=K[a+373|0]^f>>>16;H[a+374|0]=K[a+374|0]^f>>>8;H[a+376|0]=K[a+376|0]^d>>>24;H[a+377|0]=K[a+377|0]^d>>>16;H[a+378|0]=K[a+378|0]^d>>>8;H[a+379|0]=d^K[a+379|0];H[a+380|0]=K[a+380|0]^e>>>24;H[a+381|0]=K[a+381|0]^e>>>16;H[a+382|0]=K[a+382|0]^e>>>8;H[a+383|0]=e^K[a+383|0];e=a+368|0;qu(a,e,e);h=c&3;a=0;if(c-1>>>0>=3){f=c&28;c=0;while(1){b=a+g|0;H[b|0]=K[b|0]^K[a+e|0];d=a|1;b=d+g|0;H[b|0]=K[b|0]^K[e+d|0];d=a|2;b=d+g|0;H[b|0]=K[b|0]^K[e+d|0];d=a|3;b=d+g|0;H[b|0]=K[b|0]^K[e+d|0];a=a+4|0;c=c+4|0;if((f|0)!=(c|0)){continue}break}}if(h){c=0;while(1){b=a+g|0;H[b|0]=K[b|0]^K[a+e|0];a=a+1|0;c=c+1|0;if((h|0)!=(c|0)){continue}break}}return 0}function UC(a,b,c,d){var e=0,f=0,g=0,h=0;a:{b:{c:{d:{h=J[a+16>>2];g=J[a+8>>2];if(J[a+24>>2]!=((h-g|0)/40|0)){e=J[a+4>>2];e:{if(!e){break e}f=J[J[a>>2]+(mxa(b,c,e)<<2)>>2];if((f|0)==-1){break e}while(1){e=g+P(f,40)|0;if((b|0)==J[e>>2]&(c|0)==J[e+4>>2]){break d}f=J[e+32>>2];if((f|0)!=-1){continue}break}}e=J[a+12>>2];f:{if((h|0)!=(e|0)){J[a+12>>2]=e+40;break f}e=J[a+20>>2];if((e|0)==-1){break c}e=g+P(e,40)|0;J[a+20>>2]=J[e+32>>2]}J[e>>2]=b;J[e+4>>2]=c;f=J[d+4>>2];J[e+8>>2]=J[d>>2];J[e+12>>2]=f;f=J[d+12>>2];J[e+16>>2]=J[d+8>>2];J[e+20>>2]=f;f=J[d+20>>2];J[e+24>>2]=J[d+16>>2];J[e+28>>2]=f;J[e+32>>2]=-1;d=J[a+8>>2];b=J[a>>2]+(mxa(b,c,J[a+4>>2])<<2)|0;f=J[b>>2];if((f|0)==-1){break b}while(1){b=d+P(f,40)|0;f=J[b+32>>2];if((f|0)!=-1){continue}break}J[b+32>>2]=(e-d|0)/40;break a}Z(144851,55629,229,9606);B()}a=J[d+4>>2];J[e+8>>2]=J[d>>2];J[e+12>>2]=a;a=J[d+20>>2];J[e+24>>2]=J[d+16>>2];J[e+28>>2]=a;a=J[d+12>>2];J[e+16>>2]=J[d+8>>2];J[e+20>>2]=a;return}Z(152203,55629,537,2838);B()}J[b>>2]=(e-d|0)/40}J[a+24>>2]=J[a+24>>2]+1}function l6(a){a=a|0;var b=0,c=0,d=0,e=0,f=0,g=0,h=0,i=0,j=0,k=0;e=Ui-48|0;Ui=e;k=J[a+8>>2]-J[a+12>>2]>>4;a:{c=Vj(a,1);h=J[c>>2];if(h){d=bj(Aj(a,2,0));g=Yi;b:{c:{if((kj(a,3)|0)==5){b=Sj(a,24);rj(a,-1e4,4010);Mj(a,-2);uj(a,-1);f=to(a,-1e4);gj(a,-2);J[b+16>>2]=f;J[b+8>>2]=d;J[b+12>>2]=g;J[b>>2]=h;f=c+4|0;i=(J[c+20>>2]-J[c+12>>2]|0)/40|0;c=J[c+28>>2];if((i|0)==(c|0)){pN(f,4,c+1|0)}UC(f,d,g,b);uj(a,3);b=J[a+8>>2];J[b+8>>2]=0;J[a+8>>2]=b+16;if($j(a,-2)){while(1){if(!kk(a,-2)){J[e>>2]=tj(d,g);b=fj(a,19662,e);break b}c=sl(a,-2);if((c|0)<=0){d=tj(d,g);J[e+20>>2]=c;J[e+16>>2]=d;b=fj(a,110645,e+16|0);break b}b=c-1|0;d:{if(Hs(a,-1)){b=b<<2;i=an(a,-1);j=9;f=4;break d}i=Qm(a,-1);j=0;f=1}if(dC(h,d,g,i,f,b,j)){d=tj(d,g);J[e+36>>2]=c;J[e+32>>2]=d;b=fj(a,72660,e+32|0);break b}gj(a,-2);if($j(a,-2)){continue}break}}gj(a,-2);break c}e:{if(Hs(a,3)){c=an(a,3);f=9;b=4;break e}c=Qm(a,3);b=1}dC(h,d,g,c,b,0,f)}b=0;if(J[a+8>>2]-J[a+12>>2]>>4!=(k|0)){break a}}Ui=e+48|0;return b|0}Z(82834,37616,202,4907);B()}Z(143244,37616,257,4907);B()}function bta(a){a=a|0;var b=0,c=0,d=Q(0),e=0,f=Q(0),g=Q(0),h=0,i=Q(0),j=Q(0),k=Q(0);Xl(25822);b=J[a+8>>2];if((b|0)>0){while(1){c=J[J[a+16>>2]+(h<<2)>>2];a:{b:{if(K[a+84|0]){break b}switch(J[c+216>>2]-2|0){case 0:case 3:break a;default:break b}}b=Ui-32|0;Ui=b;e=J[c+192>>2];Zi[J[J[e>>2]+8>>2]](e,c+4|0,b+16|0,b);d=N[61732];f=Q(N[b+16>>2]-d);N[b+16>>2]=f;i=Q(N[b+20>>2]-d);N[b+20>>2]=i;g=Q(N[b+24>>2]-d);N[b+24>>2]=g;j=Q(d+N[b>>2]);N[b>>2]=j;k=Q(d+N[b+4>>2]);N[b+4>>2]=k;d=Q(d+N[b+8>>2]);N[b+8>>2]=d;e=J[a+76>>2];c:{d:{if(!(H[c+204|0]&1)){d=Q(d-g);g=Q(d*d);d=Q(j-f);f=Q(d*d);d=Q(k-i);if(!(Q(g+Q(f+Q(d*d)))>2]+16>>2]](e,J[c+188>>2],b+16|0,b,J[a+24>>2]);break c}if((J[c+216>>2]&-2)!=4){J[c+216>>2]=5}if(K[333920]){break c}c=J[a+80>>2];if(!c){break c}H[333920]=1;Zi[J[J[c>>2]+32>>2]](c,46953);c=J[a+80>>2];Zi[J[J[c>>2]+32>>2]](c,154864);c=J[a+80>>2];Zi[J[J[c>>2]+32>>2]](c,158312);c=J[a+80>>2];Zi[J[J[c>>2]+32>>2]](c,158217)}Ui=b+32|0;b=J[a+8>>2]}h=h+1|0;if((h|0)<(b|0)){continue}break}}Wl()}function wp(a,b,c){var d=0,e=0,f=0,g=0;f=Ui-16|0;Ui=f;J[f+4>>2]=b;J[f+8>>2]=a;J[f>>2]=c;e=J[b>>2];b=J[b+4>>2];d=J[c+4>>2];c=(b|0)==(d|0)&M[c>>2]>>0|b>>>0>d>>>0;d=J[a+4>>2];a:{if((d|0)==(b|0)&M[a>>2]<=e>>>0|b>>>0>d>>>0){if(!c){break a}c=f+4|0;a=J[c>>2];e=J[a>>2];d=J[a+4>>2];b=J[f>>2];g=J[b+4>>2];J[a>>2]=J[b>>2];J[a+4>>2]=g;J[b>>2]=e;J[b+4>>2]=d;b=J[f+4>>2];e=J[b>>2];a=J[f+8>>2];d=J[a>>2];b=J[b+4>>2];g=J[a+4>>2];if((b|0)==(g|0)&e>>>0>=d>>>0|b>>>0>g>>>0){break a}e=J[a>>2];d=J[a+4>>2];b=J[c>>2];c=J[b+4>>2];J[a>>2]=J[b>>2];J[a+4>>2]=c;J[b>>2]=e;J[b+4>>2]=d;break a}if(c){a=J[f+8>>2];c=J[a>>2];e=J[a+4>>2];b=J[f>>2];d=J[b+4>>2];J[a>>2]=J[b>>2];J[a+4>>2]=d;J[b>>2]=c;J[b+4>>2]=e;break a}a=J[f+8>>2];c=J[a>>2];e=J[a+4>>2];d=f+4|0;b=J[d>>2];g=J[b+4>>2];J[a>>2]=J[b>>2];J[a+4>>2]=g;J[b>>2]=c;J[b+4>>2]=e;a=J[f>>2];b=J[a>>2];c=J[f+4>>2];e=J[c>>2];g=J[a+4>>2];c=J[c+4>>2];if((g|0)==(c|0)&b>>>0>=e>>>0|c>>>0>>0){break a}b=J[d>>2];c=J[b>>2];e=J[b+4>>2];d=J[a+4>>2];J[b>>2]=J[a>>2];J[b+4>>2]=d;J[a>>2]=c;J[a+4>>2]=e}Ui=f+16|0}function kha(a){a=a|0;var b=0,c=0,d=0,e=0,f=0,g=0;b=Ui-112|0;Ui=b;g=pj(b+92|0,a,1,40650,317);pk(a);J[b+80>>2]=0;J[b+84>>2]=0;J[b+72>>2]=0;J[b+76>>2]=0;c=b- -64|0;J[c>>2]=0;J[c+4>>2]=0;J[b+56>>2]=0;J[b+60>>2]=0;J[b+48>>2]=0;J[b+52>>2]=0;J[b+40>>2]=0;J[b+44>>2]=0;J[b+32>>2]=0;J[b+36>>2]=0;J[b+24>>2]=0;J[b+28>>2]=0;Sk(a,1,b+56|0,b+24|0);J[b+20>>2]=0;Mn(a,82205,0,b+20|0,0);d=J[b+20>>2];if(!d){Z(113644,40650,328,25719);B()}e=Ui-16|0;Ui=e;c=J[d+228>>2];if(!c){c=J[J[d+216>>2]+8>>2]}c=J[c+4>>2];N[e>>2]=N[d+48>>2];H[e+4|0]=K[d+246|0]>>>4&1;N[e+8>>2]=N[d+232>>2];N[e+12>>2]=N[d+236>>2];iC(c,J[d+240>>2],e,b);Ui=e+16|0;Fj(a,0,4);mj(a,52997,5);f=+N[b>>2];c=J[a+8>>2];J[c+8>>2]=3;O[c>>3]=f;J[a+8>>2]=J[a+8>>2]+16;Xj(a,-3);mj(a,14691,6);f=+N[b+4>>2];c=J[a+8>>2];J[c+8>>2]=3;O[c>>3]=f;J[a+8>>2]=J[a+8>>2]+16;Xj(a,-3);mj(a,13992,10);f=+N[b+8>>2];c=J[a+8>>2];J[c+8>>2]=3;O[c>>3]=f;J[a+8>>2]=J[a+8>>2]+16;Xj(a,-3);mj(a,13969,11);f=+N[b+12>>2];c=J[a+8>>2];J[c+8>>2]=3;O[c>>3]=f;J[a+8>>2]=J[a+8>>2]+16;Xj(a,-3);oj(g);Ui=b+112|0;return 1}function cZ(a){a=a|0;var b=0,c=0,d=0,e=0,f=0,g=0,h=0,i=0,j=0,k=0,l=0,m=0;b=Tn(a,1042);f=Ui-16|0;Ui=f;l=J[a+8>>2]-J[a+12>>2]>>4;J[f+8>>2]=0;h=Aj(a,2,f+8|0);j=_o(a,3,1);k=_o(a,4,-1);Po(J[b+44>>2]);a:{b:{e=J[f+8>>2];i=e+1|0;if(R(j)<2147483648){d=~~j}else{d=-2147483648}d=(i&d>>31)+d|0;d=(d|0)<=1?1:d;if(R(k)<2147483648){c=~~k}else{c=-2147483648}c=(i&c>>31)+c|0;c=(c|0)<(e|0)?c:e;if((d|0)>(c|0)){break b}e=(c-d|0)+1|0;if(!e){break b}i=(d+h|0)-1|0;m=J[b+44>>2];h=J[b+40>>2];while(1){c:{J[f+12>>2]=0;c=e-g|0;c=Zi[J[h+4>>2]](J[h>>2],g+i|0,c>>>0>=8192?8192:c,f+12|0,m)|0;g=J[f+12>>2]+g|0;if(e>>>0<=g>>>0){break c}if(!c){continue}}break}J[b+32>>2]=J[b+32>>2]+g;if(!c){break b}e=J[a+8>>2];J[e+8>>2]=0;J[a+8>>2]=e+16;b=J[b+40>>2];xj(a,Zi[J[b+12>>2]](J[b>>2],c)|0);b=J[a+8>>2];J[b+8>>2]=3;O[b>>3]=(d+g|0)-1>>>0;J[a+8>>2]=J[a+8>>2]+16;break a}b=J[a+8>>2];J[b+8>>2]=3;O[b>>3]=(d+g|0)-1>>>0;J[a+8>>2]=J[a+8>>2]+16;b=J[a+8>>2];J[b+8>>2]=0;J[a+8>>2]=b+16;b=J[a+8>>2];J[b+8>>2]=0;J[a+8>>2]=b+16}Ui=f+16|0;return(J[a+8>>2]-J[a+12>>2]>>4)-l|0}function P5(a){a=a|0;var b=0,c=0,d=0,e=0,f=0,g=0,h=0;d=Ui-112|0;Ui=d;e=pj(d+92|0,a,0,37616,2611);b=J[a+8>>2]-J[a+12>>2]|0;Bj(a);c=qj(a,-1,J[84364],139081);gj(a,-2);if(b>>4==J[a+8>>2]-J[a+12>>2]>>4){a:{if(kj(a,1)){b=mk(a,1);g=Yi;b:{a=J[c+20>>2];c:{if(!a){break c}a=J[J[c+16>>2]+(mxa(b,g,a)<<2)>>2];if((a|0)==-1){break c}h=J[c+24>>2];while(1){f=h+(a<<5)|0;if((b|0)==J[f>>2]&(g|0)==J[f+4>>2]){break b}a=J[f+24>>2];if((a|0)!=-1){continue}break}}J[d+16>>2]=tj(b,g);a=Jj(e,147717,d+16|0);break a}if(J[f+16>>2]!=1){a=Jj(e,122242,0);break a}a=d+48|0;J[a+8>>2]=J[f+8>>2];J[a+12>>2]=0;J[a>>2]=21;b=J[c+4>>2];if((b|0)!=J[c+8>>2]){J[c+4>>2]=b+40;c=J[a+36>>2];J[b+32>>2]=J[a+32>>2];J[b+36>>2]=c;c=J[a+28>>2];J[b+24>>2]=J[a+24>>2];J[b+28>>2]=c;c=J[a+20>>2];J[b+16>>2]=J[a+16>>2];J[b+20>>2]=c;c=J[a+12>>2];J[b+8>>2]=J[a+8>>2];J[b+12>>2]=c;c=J[a+4>>2];J[b>>2]=J[a>>2];J[b+4>>2]=c;a=0;break a}J[d+32>>2]=(b-J[c>>2]|0)/40;a=Jj(e,132935,d+32|0);break a}J[d>>2]=35504;a=Jj(e,122193,d)}oj(e);Ui=d+112|0;return a|0}Z(143244,37616,478,51340);B()}function XL(a){var b=0,c=Q(0),d=0,e=Q(0),f=Q(0);d=Ui-32|0;Ui=d;a:{c=N[a+20>>2];b:{c:{if(cQ(1)){J[d+8>>2]=0;J[d+12>>2]=1072693248;J[d>>2]=1073741824;J[d+4>>2]=1065646817;dj(5,89293,123381,d);break c}b=nj(96);J[b>>2]=0;J[b+4>>2]=0;J[b+8>>2]=0;J[b+12>>2]=0;J[b+40>>2]=1065353216;J[b+28>>2]=1065353216;J[b+32>>2]=1065353216;J[b+24>>2]=0;J[b+16>>2]=0;J[b+20>>2]=0;J[b+84>>2]=0;J[b+88>>2]=0;J[b+72>>2]=0;J[b+76>>2]=0;J[b+64>>2]=1065353216;J[b+68>>2]=1065353216;J[b+56>>2]=0;J[b+60>>2]=0;J[b+44>>2]=0;J[b+48>>2]=-1054867456;H[b+92|0]=K[b+92|0]&254;if(H[b+12|0]&1){break a}lj(J[a+16>>2],4,b,b+8|0,b+4|0);e=N[a>>2];f=N[a+4>>2];c=N[a+20>>2];N[b+64>>2]=c;N[b+68>>2]=Q(1)/c;N[b+48>>2]=c*f;N[b+44>>2]=c*e;N[b+72>>2]=c*N[a+24>>2];N[b+76>>2]=c*N[a+28>>2];J[b+84>>2]=J[a+36>>2];J[b+88>>2]=J[a+44>>2];e=N[a+32>>2];N[b+80>>2]=e;H[b+92|0]=K[b+92|0]&254|H[a+48|0]&1;N[83945]=c*e;if(!Cq(J[60922],b+56|0)){break b}J[d+16>>2]=J[60922];dj(5,89293,134008,d+16|0);hM(b)}b=0}Ui=d+32|0;return b}Z(151729,53895,501,2284);B()}function Ov(a,b,c,d,e){var f=Q(0),g=Q(0),h=0,i=Q(0),j=Q(0),k=Q(0),l=0,m=0,n=Q(0),o=Q(0),p=Q(0),q=Q(0),r=Q(0),s=0,t=0,u=Q(0),v=0,w=0,x=0;a:{b:{if(!((c|0)<0|J[a+416>>2]<=(c|0))){m=d+160|0;n=N[b+12>>2];s=c<<3;c=s+(a+288|0)|0;f=N[c>>2];o=N[b+8>>2];g=N[c+4>>2];q=Q(Q(n*f)-Q(o*g));p=N[e+8>>2];r=Q(Q(o*f)+Q(n*g));g=N[e+12>>2];c=J[d+416>>2];if((c|0)<=0){d=0;break a}i=Q(Q(g*r)-Q(p*q));j=Q(Q(g*q)+Q(p*r));w=c&1;if((c|0)==1){f=Q(34028234663852886e22);d=0;c=0;break b}x=c&2147483646;f=Q(34028234663852886e22);d=0;c=0;while(1){h=(c<<3)+m|0;k=Q(Q(N[h>>2]*j)+Q(i*N[h+4>>2]));h=k>2]*j)+Q(i*N[l+4>>2]));f=h?k:f;l=u>2]*j)+Q(i*N[c+4>>2]))>2];i=N[c+4>>2];a=a+s|0;j=N[a+160>>2];k=N[a+164>>2];return Q(Q(Q(Q(N[e>>2]+Q(Q(g*f)-Q(p*i)))-Q(N[b>>2]+Q(Q(n*j)-Q(o*k))))*q)+Q(r*Q(Q(Q(Q(p*f)+Q(g*i))+N[e+4>>2])-Q(Q(Q(o*j)+Q(n*k))+N[b+4>>2]))))}function nu(a,b){var c=0,d=0,e=0,f=0,g=0;a:{b:{c:{switch(J[b+8>>2]){case 4:b=J[b>>2];a=J[a+16>>2]+((J[b+8>>2]&(-1<>2]!=4|(b|0)!=J[a+16>>2])){return a}a=J[a+28>>2];if(a){continue}break};break a;case 3:d=O[b>>3];d:{if(R(d)<2147483648){c=~~d;break d}c=-2147483648}e=+(c|0);if(e==d){b=c-1|0;if(b>>>0>2]){return J[a+12>>2]+(b<<4)|0}if(c){c=J[a+16>>2];A(+e);f=v(1)|0;b=v(0)|0;b=b+f|0;a=((b>>>0)%((-1<>>0)<<5)+c|0}else{a=J[a+16>>2]}while(1){if(!(J[a+24>>2]!=3|O[a+16>>3]!=e)){return a}a=J[a+28>>2];if(a){continue}break}break a}c=J[a+16>>2];if(d==0){break b}f=J[a+16>>2];A(+d);g=v(1)|0;c=v(0)|0;c=c+g|0;c=((c>>>0)%((-1<>>0)<<5)+f|0;break b;case 1:c=J[a+16>>2]+((J[b>>2]&(-1<>2]+(M[b>>2]%((-1<>>0)<<5)|0;break b;case 0:break a;default:break c}}c=J[a+16>>2]+(M[b>>2]%((-1<>>0)<<5)|0}a=c;while(1){if(os(a+16|0,b)){return a}a=J[a+28>>2];if(a){continue}break}}return 173288}function _ca(a){a=a|0;var b=0,c=0,d=0,e=0,f=0,g=0,h=0,i=0,j=0,k=0,l=0,m=0,n=0,o=0;e=Ui-304|0;Ui=e;o=pj(e+284|0,a,1,42276,353);J[e+12>>2]=32;h=e+16|0;c=J[245446];j=J[c+16>>2];if(j){Tj(j);c=J[245446]}a:{g=J[c+100>>2];if(g>>>0<=M[e+12>>2]){b:{if(!g){break b}i=c+112|0;c=0;if(g>>>0>=4){k=g&-4;while(1){d=P(c,1056)+i|0;f=J[d+4>>2];b=(c<<3)+h|0;J[b>>2]=J[d>>2];J[b+4>>2]=f;b=c|1;d=(b<<3)+h|0;b=P(b,1056)+i|0;f=J[b+4>>2];J[d>>2]=J[b>>2];J[d+4>>2]=f;b=c|2;d=(b<<3)+h|0;b=P(b,1056)+i|0;f=J[b+4>>2];J[d>>2]=J[b>>2];J[d+4>>2]=f;b=c|3;d=(b<<3)+h|0;b=P(b,1056)+i|0;f=J[b+4>>2];J[d>>2]=J[b>>2];J[d+4>>2]=f;c=c+4|0;m=m+4|0;if((k|0)!=(m|0)){continue}break}}k=g&3;if(!k){break b}while(1){d=P(c,1056)+i|0;f=J[d+4>>2];b=(c<<3)+h|0;J[b>>2]=J[d>>2];J[b+4>>2]=f;c=c+1|0;n=n+1|0;if((k|0)!=(n|0)){continue}break}}J[e+12>>2]=g;if(j){Lj(j)}break a}Z(59130,42316,793,23725);B()}Fj(a,J[e+12>>2],0);if(J[e+12>>2]){while(1){c=(e+16|0)+(l<<3)|0;Bk(a,J[c>>2],J[c+4>>2]);l=l+1|0;Ik(a,-2,l);if(M[e+12>>2]>l>>>0){continue}break}}oj(o);Ui=e+304|0;return 1}function _Q(a,b){var c=0,d=0,e=0,f=0,g=0,h=0,i=0;g=Ui-16|0;Ui=g;c=J[b>>2];if(J[c+12>>2]==2){J[c+12>>2]=1}a:{e=J[c+72>>2];b:{if(e){J[b+20>>2]=e;d=Zj(1,e<<4);J[b+16>>2]=d;c=0;while(1){f=J[b>>2];if(M[f+72>>2]<=c>>>0){break a}h=c<<3;i=J[(h+J[f+68>>2]|0)+4>>2];f=c<<4;d=wk(a,i,(f+d|0)+8|0);if(d){break b}d=J[b>>2];if(M[d+72>>2]<=c>>>0){break a}h=bj(J[J[d+68>>2]+h>>2]);d=J[b+16>>2];f=f+d|0;J[f>>2]=h;J[f+4>>2]=Yi;c=c+1|0;if((e|0)!=(c|0)){continue}break}c=J[b>>2]}d=wk(a,J[c+8>>2],b+4|0);if(d){break b}if(J[J[J[b+4>>2]>>2]+168>>2]){dj(4,88458,151022,0);d=-15;break b}a=bj(J[J[b>>2]+4>>2]);c=Yi;f=c;J[b+8>>2]=a;J[b+12>>2]=c;d=0;if(!e){break b}e=J[J[b+16>>2]+8>>2];c=J[e+20>>2];c:{if(!c){break c}c=J[J[e+16>>2]+(mxa(a,f,c)<<2)>>2];if((c|0)==-1){break c}e=J[e+24>>2];while(1){c=e+(c<<4)|0;if((a|0)==J[c>>2]&(f|0)==J[c+4>>2]){break b}c=J[c+12>>2];if((c|0)!=-1){continue}break}}a=J[J[b>>2]+4>>2];d:{if(!(K[a|0]?a:0)){dj(4,88458,75425,0);break d}J[g>>2]=a;dj(4,88458,71086,g)}d=-13}Ui=g+16|0;return d}Z(12664,55390,78,84789);B()}function hga(a){a=a|0;var b=0,c=0,d=0,e=0,f=0,g=0,h=0;f=Ui-16|0;Ui=f;a:{b:{c:{e=J[a+4>>2];b=J[e+4>>2];d:{e:{if(!b){d=1;c=J[e>>2];if(H[c+28|0]&1){break e}break d}d=1;c=b;if(!(H[b+28|0]&1)){break d}}h=J[a>>2];a=J[c+12>>2];if((a|0)!=J[c+16>>2]){b=0;while(1){vj(h,J[(b<<2)+a>>2]);b=b+1|0;a=J[c+12>>2];if(b>>>0>2]-a>>2>>>0){continue}break}b=J[e+4>>2]}J[c+16>>2]=a;b=b?b:J[e>>2];if(H[b+24|0]&1){break c}g=J[b+8>>2];lj(J[g+8>>2],4,b+12|0,b+20|0,b+16|0);c=J[g+8>>2];if(!c){break d}a=b;b=0;while(1){if(b>>>0>=c>>>0){break b}d=J[(J[g+4>>2]+P(b,80)|0)+4>>2];if(d){if(wk(h,d,f+12|0)){c=J[e+4>>2];if(!c){c=J[e>>2]}a=J[c+12>>2];if((a|0)!=J[c+16>>2]){b=0;while(1){vj(h,J[(b<<2)+a>>2]);b=b+1|0;a=J[c+12>>2];if(b>>>0>2]-a>>2>>>0){continue}break}J[c+16>>2]=a}d=0;break d}c=J[a+16>>2];if((c|0)==J[a+20>>2]){break a}d=J[f+12>>2];J[a+16>>2]=c+4;J[c>>2]=d;c=J[g+8>>2]}d=1;b=b+1|0;if(c>>>0>b>>>0){continue}break}}Ui=f+16|0;return d|0}Z(151729,53895,501,2284);B()}Z(12664,54870,244,84789);B()}Z(112520,53895,557,53220);B()}function fia(a){a=a|0;var b=0,c=0,d=0,e=0,f=Q(0);c=J[a+80>>2];b=J[c+8>>2];if((b|0)==J[c+12>>2]){io(43613,10930,b-J[c+4>>2]>>2);return-1e3}a:{b:{if(!J[c+36>>2]){if(H[c+32|0]&1){break b}lj(4,336,c+20|0,c+28|0,c+24|0);d=J[J[c>>2]+2480>>2];b=Fq();xm(b,45222,3,0);xm(b,111479,2,0);J[c+36>>2]=Zi[J[79404]](d,b);ll(b);J[c+40>>2]=im(J[c>>2],0);b=P(J[c+60>>2],120);d=sj(b);J[c+44>>2]=d;J[c+48>>2]=b+d}d=J[a+76>>2];b=nj(176);J[b+96>>2]=0;J[b+100>>2]=0;J[b+144>>2]=0;J[b+148>>2]=0;J[b+128>>2]=0;J[b+132>>2]=0;J[b+120>>2]=0;J[b+124>>2]=0;J[b+112>>2]=0;J[b+116>>2]=0;J[b+104>>2]=0;J[b+108>>2]=0;J[b+152>>2]=0;J[b+156>>2]=0;J[b+136>>2]=0;J[b+96>>2]=J[a>>2];J[b+156>>2]=d;d=J[a+20>>2];e=J[a+16>>2];N[b+8>>2]=N[a+24>>2];J[b>>2]=e;J[b+4>>2]=d;N[b+16>>2]=N[a+32>>2];N[b+20>>2]=N[a+36>>2];N[b+24>>2]=N[a+40>>2];f=N[a+44>>2];H[b+166|0]=255;N[b+28>>2]=f;if(!wQ(b)){return-1e3}d=J[c+8>>2];if((d|0)==J[c+12>>2]){break a}J[c+8>>2]=d+4;J[d>>2]=b;J[J[a+88>>2]>>2]=b;lv(b);return 0}Z(151729,53895,501,2284);B()}Z(112520,53895,557,53220);B()}function PU(a,b,c,d,e){a=a|0;b=b|0;c=c|0;d=d|0;e=e|0;var f=Q(0),g=Q(0),h=Q(0),i=Q(0),j=Q(0),k=Q(0),l=Q(0),m=0,n=Q(0),o=Q(0),p=0,q=Q(0),r=Q(0),s=Q(0),t=0,u=0;j=N[c+16>>2];a:{b:{e=J[a+416>>2];if((e|0)>0){f=N[d+4>>2];h=Q(N[c+12>>2]-f);g=N[d>>2];i=Q(N[c+8>>2]-g);k=N[d+12>>2];f=Q(N[c+4>>2]-f);l=N[d+8>>2];g=Q(N[c>>2]-g);n=Q(Q(k*f)-Q(l*g));r=Q(Q(Q(k*h)-Q(l*i))-n);o=Q(Q(k*g)+Q(f*l));s=Q(Q(Q(k*i)+Q(l*h))-o);t=a+160|0;u=a+288|0;d=-1;c=0;i=Q(0);h=j;c:{while(1){m=c<<3;p=m+u|0;f=N[p>>2];m=m+t|0;q=N[p+4>>2];g=Q(Q(f*Q(N[m>>2]-o))+Q(Q(N[m+4>>2]-n)*q));f=Q(Q(f*s)+Q(r*q));d:{if(f==Q(0)){if(!(gQ(0))|!(gh)){c=c+1|0;if((e|0)==(c|0)){break c}continue}break}return 0}if(!(i>=Q(0))){break a}if(i<=j){break b}break a}if(!(j>=Q(0))){break a}return 0}if((d|0)>=0){N[b+8>>2]=i;a=(d<<3)+a|0;j=N[a+288>>2];h=N[a+292>>2];N[b+4>>2]=Q(l*j)+Q(k*h);N[b>>2]=Q(k*j)-Q(l*h);a=1}else{a=0}return a|0}Z(46207,41580,258,10171);B()}function $p(a,b,c,d){var e=0,f=0,g=0,h=0,i=0,j=0;a:{b:{c:{if(J[c>>2]!=5|J[c+16>>2]!=-1|(J[c+20>>2]!=-1|J[d>>2]!=5)){break c}if((J[d+16>>2]&J[d+20>>2])!=-1){break c}e=O[d+8>>3];g=O[c+8>>3];d:{e:{f:{switch(b-12|0){case 0:f=g+e;break e;case 1:f=g-e;break e;case 2:f=g*e;break e;case 3:if(e==0){break b}f=g/e;break e;case 4:if(e==0){break b}f=g-V(g/e)*e;break e;case 5:f=Zq(g,e);break e;case 8:break a;case 6:break f;default:break d}}f=-g}if(f!=f){break c}}O[c+8>>3]=f;return}switch(b-18|0){case 0:case 2:break a;default:break b}}h=hm(a,d)}i=hm(a,c);g:{h:{if((i|0)>(h|0)){i:{if(J[c>>2]!=12){break i}j=J[c+8>>2];if(j&256|K[a+50|0]>(j|0)){break i}J[a+36>>2]=J[a+36>>2]-1}if(J[d>>2]!=12){break g}d=J[d+8>>2];if(d&256){break g}if((d|0)>=K[a+50|0]){break h}break g}j:{if(J[d>>2]!=12){break j}d=J[d+8>>2];if(d&256|(d|0)>2]=J[a+36>>2]-1}if(J[c>>2]!=12){break g}d=J[c+8>>2];if(d&256|(d|0)>2]=J[a+36>>2]-1}a=El(a,h<<14|i<<23|b,J[J[a+12>>2]+8>>2]);J[c>>2]=11;J[c+8>>2]=a}function c7(a,b,c,d){a=a|0;b=b|0;c=c|0;d=d|0;var e=0,f=Q(0),g=0,h=Q(0),i=Q(0),j=0,k=0,l=0,m=Q(0),n=0,o=0,p=0,q=0;g=Ui-784|0;Ui=g;l=J[a+8>>2];n=J[l+4>>2];if(n){j=c>>>0>=16?16:c;a:{if(!c){break a}k=j&3;b:{if(c>>>0<4){a=0;break b}q=j&28;a=0;while(1){e=(a<<3)+b|0;f=Q(Q(Q(Q(f+N[e+4>>2])+N[e+12>>2])+N[e+20>>2])+N[e+28>>2]);h=Q(Q(Q(Q(h+N[e>>2])+N[e+8>>2])+N[e+16>>2])+N[e+24>>2]);a=a+4|0;o=o+4|0;if((q|0)!=(o|0)){continue}break}}if(k){while(1){e=(a<<3)+b|0;f=Q(f+N[e+4>>2]);h=Q(h+N[e>>2]);a=a+1|0;p=p+1|0;if((k|0)!=(p|0)){continue}break}}if(!c){break a}i=Q(j>>>0);m=Q(f/i);f=N[l+20>>2];m=Q(m*f);h=Q(Q(h/i)*f);a=0;while(1){c=(g+16|0)+P(a,48)|0;e=(a<<3)+b|0;N[c>>2]=f*N[e>>2];i=N[e+4>>2];N[c+16>>2]=h;J[c+8>>2]=0;J[c+24>>2]=0;N[c+20>>2]=m;N[c+4>>2]=f*i;a=a+1|0;e=(j|0)==(a|0);k=((e?0:a)<<3)+b|0;N[c+32>>2]=f*N[k>>2];i=N[k+4>>2];J[c+40>>2]=0;N[c+36>>2]=f*i;if(!e){continue}break}}a=J[d+4>>2];b=J[d>>2];f=N[d+8>>2];N[g+12>>2]=N[l+12>>2];N[g+8>>2]=f;J[g>>2]=b;J[g+4>>2]=a;Zi[n|0](g+16|0,P(j,3),g,J[l+8>>2])}Ui=g+784|0}function X8(a){a=a|0;var b=0,c=0,d=0,e=0,f=0,g=0,h=0,i=0;c=Ui-32|0;Ui=c;h=pj(c+12|0,a,0,37682,4677);Bj(a);d=qj(a,-1,J[219396],139183);gj(a,-2);Qj(a,1,c+8|0);if((kj(a,2)|0)!=-1){Oj(a,2,5);uj(a,2);b=J[a+8>>2];J[b+8>>2]=0;J[a+8>>2]=b+16;if($j(a,-2)){while(1){b=Ij(a,-2,0);a:{if(!jj(b,36250)){f=ck(a,-1);break a}J[c>>2]=b;dj(3,93318,31721,c)}gj(a,-2);if($j(a,-2)){continue}break}f=(f|0)!=0}gj(a,-2)}b:{c:{d:{e:{g=J[c+8>>2];a=g&65535;b=J[d+32>>2];if(a>>>0<(J[d+36>>2]-b|0)/672>>>0){b=b+P(a,672)|0;if(L[b+648>>1]!=(g>>>16|0)){break e}if((a|0)!=L[b+650>>1]){break d}a=-10;if((J[b+476>>2]&240)!=80){break b}b=J[d+264>>2];a=J[d+260>>2];if((b|0)!=(a|0)){a=(b-a|0)/12|0;b=a>>>0<=1?1:a;while(1){a=J[d+260>>2];if((J[d+264>>2]-a|0)/12>>>0<=e>>>0){break c}a=a+P(e,12)|0;if((g|0)==J[a+8>>2]){xC(J[d+224>>2],J[a>>2],f)}e=e+1|0;if((b|0)!=(e|0)){continue}break}}a=0;break b}break c}Z(47372,40876,188,69601);B()}Z(5388,40876,189,69601);B()}Z(145396,53895,487,84789);B()}if((a|0)==-10){i=Jj(h,69059,0)}oj(h);Ui=c+32|0;return i|0}function OI(a,b){var c=0,d=0,e=0,f=0,g=0,h=0,i=0,j=0,k=0,l=0,m=0,n=0;a:{e=J[a+12>>2];g=e&2147483647;if((g|0)!=(b|0)){b:{if(!b){cj(J[a>>2]);J[a>>2]=0;b=J[a+12>>2]&-2147483648;break b}m=sj(P(b,20));c:{if((e|0)>=0){l=J[a>>2];c=J[a+4>>2];j=J[a+8>>2];f=j;h=(c-f|0)+(c>>>0>>0?e:0)|0;f=b>>>0>h>>>0?h:b;if((f|0)>0){k=f-1>>>0>=(c-j|0)+(c>>>0>>0?e:0)>>>0;e=f;while(1){if(k){break a}c=e-1|0;i=P(c,20)+m|0;d=P((c+j>>>0)%(g>>>0)|0,20)+l|0;n=J[d+4>>2];J[i>>2]=J[d>>2];J[i+4>>2]=n;J[i+16>>2]=J[d+16>>2];n=J[d+12>>2];J[i+8>>2]=J[d+8>>2];J[i+12>>2]=n;d=(e|0)>1;e=c;if(d){continue}break}}g=h;break c}l=J[a>>2];if(!g){break c}j=J[a+8>>2];f=b>>>0>g>>>0?g:b;i=f-1>>>0>>0;e=f;while(1){if(!i){break a}h=e-1|0;c=P(h,20)+m|0;d=P((j+h>>>0)%(g>>>0)|0,20)+l|0;k=J[d+4>>2];J[c>>2]=J[d>>2];J[c+4>>2]=k;J[c+16>>2]=J[d+16>>2];k=J[d+12>>2];J[c+8>>2]=J[d+8>>2];J[c+12>>2]=k;c=(e|0)>1;e=h;if(c){continue}break}}J[a>>2]=m;cj(l);J[a+4>>2]=f;J[a+8>>2]=0;b=b&2147483647|(b>>>0<=g>>>0)<<31}J[a+12>>2]=b}return}Z(145396,54268,61,84789);B()}function yU(a){var b=0,c=0,d=0,e=0,f=0;d=Ui-16|0;J[d+8>>2]=0;J[d+12>>2]=0;J[d>>2]=0;J[d+4>>2]=0;f=1;c=K[a|0];b=(c&3)<<2|d;J[b>>2]=J[b>>2]+1;b=c&12|d;J[b>>2]=J[b>>2]+1;b=c>>>2&12|d;J[b>>2]=J[b>>2]+1;c=c>>>4&12|d;J[c>>2]=J[c>>2]+1;c=K[a+1|0];b=(c&3)<<2|d;J[b>>2]=J[b>>2]+1;b=c&12|d;J[b>>2]=J[b>>2]+1;b=c>>>2&12|d;J[b>>2]=J[b>>2]+1;c=c>>>4&12|d;J[c>>2]=J[c>>2]+1;c=K[a+2|0];b=(c&3)<<2|d;J[b>>2]=J[b>>2]+1;b=c&12|d;J[b>>2]=J[b>>2]+1;b=c>>>2&12|d;J[b>>2]=J[b>>2]+1;c=c>>>4&12|d;J[c>>2]=J[c>>2]+1;c=K[a+3|0];b=(c&3)<<2|d;J[b>>2]=J[b>>2]+1;b=c&12|d;J[b>>2]=J[b>>2]+1;b=c>>>2&12|d;J[b>>2]=J[b>>2]+1;c=c>>>4&12|d;J[c>>2]=J[c>>2]+1;H[a+10|0]=0;H[a+8|0]=3;H[a+9|0]=0;b=a+10|0;c=a+8|0;a:{b:{c:{d:{e:{f:{if(!J[d>>2]){if(!J[d+4>>2]){break e}H[a+10|0]=1;H[c|0]=1;e=1;break f}H[a+10|0]=1;H[c|0]=0;if(!J[d+4>>2]){break d}H[a+10|0]=2;e=2}H[a+9|0]=1;f=0}if(!J[d+8>>2]){break a}e=e+1|0;H[a+10|0]=e;b=c;if(!f){break b}break c}e=2;if(J[d+8>>2]){break c}e=1;break a}H[b|0]=2}H[a+9|0]=2}if(J[d+12>>2]){H[a+9|0]=3;H[a+10|0]=e+1}}function v2(a){a=a|0;var b=0,c=0,d=0,e=0,f=0,g=0,h=0,i=0,j=0,k=0,l=0,m=0,n=0,o=0;i=Ui-32|0;Ui=i;b=i+12|0;d=a?J[a>>2]:0;if(d){d=J[d+124>>2]}else{d=0}m=pj(b,d,0,39844,491);n=bK(d);a:{b:{c=px(a);if(c){j=jK(c+52|0,c- -64|0);if(!j){break a}while(1){a=J[c+64>>2];if(J[c+68>>2]-a>>1>>>0<=f>>>0){break b}b=J[c+56>>2];c:{if(!b){break c}g=L[a+(f<<1)>>1];k=J[c+52>>2];e=k;a=b;while(1){h=(a&-2)+e|0;l=L[h>>1]>>0;e=l?h+2|0:e;h=a;a=a>>>1|0;a=l?h+(a^-1)|0:a;if(a){continue}break}if(L[e>>1]!=(g|0)|(b<<1)+k>>>0<=e>>>0){break c}b=J[c+16>>2];if(J[c+20>>2]-b>>3>>>0<=g>>>0){break b}b=J[b+(g<<3)>>2];a=J[c>>2];if(b>>>0>=J[c+4>>2]-a>>5>>>0){break b}if(!a){break c}a=a+(b<<5)|0;if(J[a+4>>2]!=(n|0)){break c}b=K[a+28|0];if(b&2){H[a+28|0]=b&253;o=o+1|0}if(H[c+82|0]&1){break c}GB(c,a)}f=f+1|0;if((j|0)!=(f|0)){continue}break}break a}Z(111373,39844,364,19199);B()}Z(145396,53895,487,84789);B()}a=J[215668];b=J[d+8>>2];J[b+8>>2]=3;O[b>>3]=a|0;J[d+8>>2]=J[d+8>>2]+16;a=J[d+8>>2];J[a+8>>2]=0;J[d+8>>2]=a+16;SJ(d);oj(m);Ui=i+32|0}function sn(a,b,c){var d=0,e=0,f=0,g=0,h=0,i=0,j=0,k=0,l=0,m=0,n=0,o=0,p=0,q=0,r=0;g=Ui-32|0;Ui=g;j=J[a+48>>2];k=j;if((K[j+50|0]+c|0)>=200){e=J[j+16>>2];d=J[J[j>>2]+60>>2];a:{if(!d){J[g>>2]=200;J[g+4>>2]=22971;e=gk(e,27750,g);break a}J[g+20>>2]=200;J[g+16>>2]=d;J[g+24>>2]=22971;e=gk(e,27784,g+16|0)}Wn(J[j+12>>2],e,0);k=J[a+48>>2]}i=J[k>>2];d=J[i+56>>2];b:{if((d|0)>I[k+48>>1]){f=J[i+24>>2];break b}f=ps(J[a+52>>2],J[i+24>>2],i+56|0,12,32767,22962);J[i+24>>2]=f;l=J[i+56>>2];if((d|0)>=(l|0)){break b}e=d;m=l-d&7;if(m){while(1){J[P(e,12)+f>>2]=0;e=e+1|0;h=h+1|0;if((m|0)!=(h|0)){continue}break}}if(d-l>>>0>4294967288){break b}h=f+84|0;m=f+72|0;n=f+60|0;o=f+48|0;p=f+36|0;q=f+24|0;r=f+12|0;while(1){d=P(e,12);J[d+f>>2]=0;J[d+r>>2]=0;J[d+q>>2]=0;J[d+p>>2]=0;J[d+o>>2]=0;J[d+n>>2]=0;J[d+m>>2]=0;J[d+h>>2]=0;e=e+8|0;if((l|0)!=(e|0)){continue}break}}h=I[k+48>>1];J[P(h,12)+f>>2]=b;if(!(!(K[b+5|0]&3)|!(K[i+5|0]&4))){ap(J[a+52>>2],i,b);h=L[k+48>>1]}I[k+48>>1]=h+1;I[((K[j+50|0]+c<<1)+j|0)+172>>1]=h;Ui=g+32|0}function cQ(a,b){var c=0,d=0,e=0,f=0,g=0,h=0,i=0,j=0,k=0,l=0,m=0,n=0,o=0,p=0,q=0;e=Ui-16|0;Ui=e;g=J[a+56>>2];c=g>>>0>1073741823?-1:g<<2;m=nj(c);n=nj(c);o=nj(4);j=nj(8);a:{if(!g){break a}k=J[a+20>>2]==2?6:1;q=J[a+60>>2];h=J[a+52>>2];d=h;i=J[a+48>>2];c=i;while(1){p=l<<2;c=c&65535;d=d&65535;J[p+m>>2]=c>>>0>d>>>0?c:d;J[n+p>>2]=f>>>3;f=P(P(d,P(c,k)),q)+f|0;d=d>>>1|0;c=c>>>1|0;l=l+1|0;if((l|0)!=(g|0)){continue}break}if(!f){break a}c=J[a+40>>2];b:{if(c){J[e+12>>2]=0;J[e+8>>2]=0;on(c,e+12|0,e+8|0);c=J[e+8>>2];d=J[e+12>>2];break b}c=P(f,k)>>>3|0;d=J[a+44>>2];if(d){break b}d=nj(c);ij(d,0,c)}J[o>>2]=c;J[j+4>>2]=h;J[j>>2]=i;c=nj(60);J[c+56>>2]=0;J[b+4>>2]=1;J[b>>2]=c;f=J[a+28>>2];J[b+12>>2]=k;J[b+8>>2]=f;f=J[a+64>>2];J[b+24>>2]=d;J[b+28>>2]=0;J[b+16>>2]=f;J[c+12>>2]=h;J[c+8>>2]=i;J[c+4>>2]=h;J[c>>2]=i;J[c+16>>2]=J[a+32>>2];a=J[a+36>>2];J[c+52>>2]=2;J[c+48>>2]=j;J[c+44>>2]=1;J[c+40>>2]=o;J[c+32>>2]=g;J[c+28>>2]=m;J[c+24>>2]=g;J[c+20>>2]=n;J[c+36>>2]=a;Ui=e+16|0;return}Z(112350,42176,43,68748);B()}function OD(a,b,c){var d=0,e=0,f=0,g=0,h=0,i=0;a:{e=J[a+76>>2];b:{if(!e){break b}i=J[a+72>>2]+(mxa(b,c,e)<<2)|0;d=J[i>>2];if((d|0)==-1){break b}g=J[a+80>>2];while(1){h=g+P(d,24)|0;d=h;if((b|0)==J[d>>2]&(c|0)==J[d+4>>2]){break a}d=J[d+20>>2];if((d|0)!=-1){continue}break}}Z(113732,40994,159,34932);B()}e=J[h+12>>2]-1|0;J[h+12>>2]=e;c:{d:{if(!e){e:{f:{f=J[i>>2];if((f|0)!=-1){d=0;e=g+P(f,24)|0;if((b|0)==J[e>>2]&J[e+4>>2]==(c|0)){break e}break f}Z(85666,55629,340,62656);B()}while(1){d=e;f=J[d+20>>2];if((f|0)!=-1){e=g+P(f,24)|0;if(J[e>>2]!=(b|0)|J[e+4>>2]!=(c|0)){continue}break e}break}Z(152754,55629,366,62656);B()}J[a+96>>2]=J[a+96>>2]-1;c=g+P(f,24)|0;J[(d?d+20|0:i)>>2]=J[c+20>>2];b=J[a+92>>2];J[a+92>>2]=f;J[c+20>>2]=b;e=a+108|0;c=J[h+8>>2];d=J[a+108>>2];f=J[a+112>>2];if((d|0)==(f|0)){if(H[a+116|0]&1){break d}b=a+104|0;lj((d-J[b>>2]>>2)+4|0,4,b,a+112|0,e);f=J[a+112>>2];d=J[e>>2]}if((d|0)==(f|0)){break c}J[e>>2]=d+4;J[d>>2]=c}return}Z(151729,53895,501,2284);B()}Z(112520,53895,557,53220);B()}function Hl(a,b){var c=0,d=0,e=0,f=0,g=0,h=0,i=0,j=0,k=0,l=0;if(!b){return 0}a:{b:{if((b|0)>0){if(b>>>0>=641){return sj(b)}d=K[b+335136|0];if(d>>>0>=14){break b}g=(d<<2)+a|0;b=J[g+12>>2];if(b){J[g+12>>2]=J[b>>2];return b}b=J[a+4>>2];if((b|0)==J[a+8>>2]){c=b+128|0;J[a+8>>2]=c;b=J[a>>2];c=sj(c<<3);J[a>>2]=c;hj(c,b,J[a+4>>2]<<3);ij(J[a>>2]+(J[a+4>>2]<<3)|0,0,1024);cj(b);b=J[a+4>>2]}h=J[a>>2]+(b<<3)|0;c=sj(16384);J[h+4>>2]=c;d=J[(d<<2)+247184>>2];J[h>>2]=d;e=16384/(d|0)|0;if((P(e,d)|0)>16384){break a}i=e-1|0;c:{if((e|0)<2){break c}b=0;if(e-2>>>0>=3){l=i&-4;e=0;while(1){f=c+P(d,b|1)|0;J[c+P(b,d)>>2]=f;j=f;f=c+P(d,b|2)|0;J[j>>2]=f;j=f;f=c+P(d,b|3)|0;J[j>>2]=f;b=b+4|0;J[f>>2]=c+P(d,b);e=e+4|0;if((l|0)!=(e|0)){continue}break}}e=i&3;if(!e){break c}while(1){f=c+P(b,d)|0;b=b+1|0;J[f>>2]=c+P(d,b);k=k+1|0;if((e|0)!=(k|0)){continue}break}}J[c+P(d,i)>>2]=0;J[g+12>>2]=J[c>>2];J[a+4>>2]=J[a+4>>2]+1;return J[h+4>>2]}Z(59203,39627,104,62238);B()}Z(21447,39627,112,62238);B()}Z(59738,39627,140,62238);B()}function Xw(a,b,c,d,e){var f=Q(0),g=Q(0),h=0,i=Q(0),j=Q(0),k=0;k=a>>2;if((k|0)>0){a=(c<<2)+b|0;d=a+(d<<2)|0;while(1){b=d-4|0;g=N[b>>2];i=N[a>>2];j=N[d>>2];N[a>>2]=i+j;c=a-4|0;f=N[c>>2];N[c>>2]=f+N[b>>2];i=Q(i-j);f=Q(f-g);N[d>>2]=Q(i*N[e>>2])-Q(f*N[e+4>>2]);N[b>>2]=Q(f*N[e>>2])+Q(i*N[e+4>>2]);c=d-12|0;i=N[c>>2];b=a-8|0;f=N[b>>2];h=b;b=d-8|0;j=N[b>>2];N[h>>2]=f+j;h=a-12|0;g=N[h>>2];N[h>>2]=g+N[c>>2];h=b;f=Q(f-j);b=e- -64|0;g=Q(g-i);N[h>>2]=Q(f*N[b>>2])-Q(g*N[b+4>>2]);N[c>>2]=Q(g*N[b>>2])+Q(f*N[b+4>>2]);c=d-20|0;i=N[c>>2];e=a-16|0;f=N[e>>2];h=e;e=d-16|0;j=N[e>>2];N[h>>2]=f+j;h=a-20|0;g=N[h>>2];N[h>>2]=g+N[c>>2];f=Q(f-j);b=b- -64|0;g=Q(g-i);N[e>>2]=Q(f*N[b>>2])-Q(g*N[b+4>>2]);N[c>>2]=Q(g*N[b>>2])+Q(f*N[b+4>>2]);c=d-28|0;i=N[c>>2];e=a-24|0;f=N[e>>2];h=e;e=d-24|0;j=N[e>>2];N[h>>2]=f+j;h=a-28|0;g=N[h>>2];N[h>>2]=g+N[c>>2];f=Q(f-j);b=b- -64|0;g=Q(g-i);N[e>>2]=Q(f*N[b>>2])-Q(g*N[b+4>>2]);N[c>>2]=Q(g*N[b>>2])+Q(f*N[b+4>>2]);e=b- -64|0;d=d-32|0;a=a-32|0;b=k>>>0>1;k=k-1|0;if(b){continue}break}}}function YN(a,b,c,d){var e=0,f=0;a:{b:{f=b&65535;e=J[a+32>>2];if(f>>>0<(J[a+36>>2]-e|0)/672>>>0){e=e+P(f,672)|0;if(L[e+648>>1]!=(b>>>16|0)){break b}if(L[e+650>>1]!=(f|0)){break a}if(J[e+504>>2]==2){jv(a,b,0)}c:{b=J[a+132>>2];d:{if(!b){break d}b=J[J[a+128>>2]+(mxa(c,d,b)<<2)>>2];if((b|0)==-1){break d}f=J[a+136>>2];while(1){b=f+P(b,40)|0;if((c|0)==J[b>>2]&(d|0)==J[b+4>>2]){break c}b=J[b+32>>2];if((b|0)!=-1){continue}break}}b=J[a+164>>2];e:{if(!b){break e}b=J[J[a+160>>2]+(mxa(c,d,b)<<2)>>2];if((b|0)==-1){break e}a=J[a+168>>2];while(1){b=a+P(b,40)|0;if(J[b>>2]==(c|0)&J[b+4>>2]==(d|0)){break c}b=J[b+32>>2];if((b|0)!=-1){continue}break}}J[e+504>>2]=0;J[e+496>>2]=0;J[e+500>>2]=0;return-5}J[e+488>>2]=c;J[e+492>>2]=d;c=J[b+12>>2];a=J[b+8>>2];J[e+496>>2]=a;J[e+500>>2]=c;J[e+504>>2]=J[b+16>>2];d=J[e+476>>2];if(!(!(a|c)|(!(d&262144)|(d>>>4&15)-5>>>0<2))){N[e+64>>2]=L[b+24>>1];N[e+68>>2]=L[b+26>>1]}return 0}Z(145396,53895,487,84789);B()}Z(47372,40876,188,69601);B()}Z(5388,40876,189,69601);B()}function Tt(a,b,c,d){var e=0,f=0,g=0,h=0,i=0,j=0,k=0,l=0,m=0,n=0,o=0,p=0,q=0,r=0,s=0,t=0;e=Ui-224|0;Ui=e;ij(e+8|0,0,216);J[e+216>>2]=d;a:{if(!d){f=528734635;g=725511199;h=-1694144372;i=-1377402159;j=1359893119;k=1595750129;l=-1521486534;m=-23791573;n=1013904242;o=-2067093701;p=-1150833019;q=-205731576;r=1779033703;s=327033209;t=1541459225;d=-79577749;break a}f=-619958771;g=1750603025;h=-1900787065;i=-4191439;j=1731405415;k=-150054599;l=355462360;m=812702999;n=-1856437926;o=914150663;p=1654270250;q=-1056596264;r=-876896931;s=-1090891868;t=1203062813;d=1694076839}J[e+80>>2]=s;J[e+84>>2]=t;J[e+72>>2]=d;J[e+76>>2]=f;J[e+64>>2]=g;J[e+68>>2]=h;J[e+56>>2]=i;J[e+60>>2]=j;J[e+48>>2]=k;J[e+52>>2]=l;J[e+40>>2]=m;J[e+44>>2]=n;J[e+32>>2]=o;J[e+36>>2]=p;J[e+24>>2]=q;J[e+28>>2]=r;b:{if(!b){break b}J[e+8>>2]=b;J[e+12>>2]=0;if(b>>>0>=128){while(1){fs(e+8|0,a);a=a+128|0;b=b-128|0;if(b>>>0>127){continue}break}if(!b){break b}}hj(e+88|0,a,b)}a=e+8|0;Ut(a,c);Zi[J[66509]](a,0,216)|0;Ui=e+224|0;return 0}function mp(a,b,c){var d=0,e=0,f=0,g=0;a:{b:{c:{d:{e:{if(!K[b+60|0]){f:{g:{switch(J[b+56>>2]-1|0){case 0:e=J[a+108>>2];d=J[a+112>>2]-e>>2;a=J[b+48>>2];if(d>>>0<=a>>>0){break a}Fc(36160,c|0,36161,J[e+(a<<2)>>2]);if(K[J[79491]+220|0]&2){a=_()|0;if(a){break e}}a=Ja(36160)|0;if((a|0)==36053){break f}hy(a);Z(62644,40535,3263,13829);B();case 1:e=J[b+48>>2];d=J[b+52>>2];if((d|0)==2097152|d>>>0>2097152){break d}f=e&65535;if(f>>>0>=M[a+100>>2]){break c}d=J[a+108>>2];g=J[a+112>>2]-d>>2;a=J[J[(L[J[a+96>>2]+(f<<1)>>1]==(e>>>16|0)?J[J[a+92>>2]+(f<<2)>>2]:0)+52>>2]>>2];if(g>>>0<=a>>>0){break a}Ec(36160,c|0,3553,J[d+(a<<2)>>2],0);if(K[J[79491]+220|0]&2){a=_()|0;if(a){break b}}a=Ja(36160)|0;if((a|0)==36053){break f}hy(a);Z(62644,40535,3273,13829);B();default:break g}}Z(114101,40535,3276,13829);B()}H[b+60|0]=1}return}Cj(a,13829,3262);Z(114101,40535,3262,13829);B()}Z(94863,55553,306,33926);B()}Z(2686,54166,244,5438);B()}Cj(a,13829,3272);Z(114101,40535,3272,13829);B()}Z(145396,53895,487,84789);B()}function cB(a,b,c,d){var e=0,f=0,g=0,h=0,i=0,j=0;e=Ui-16|0;Ui=e;J[e+12>>2]=0;J[e+8>>2]=J[a>>2];if(K[b|0]==42){b=K[b+1|0]?b:0}c=Mt(pa(b|0,(c?c:114101)|0,d|0,e+12|0)|0);b=J[e+12>>2];a:{b:{c:{if(!c){c=0;if(!b){break b}while(1){d:{if(J[e+8>>2]==-1){c=Tm(Tz(e+8|0,J[b+4>>2],J[b+8>>2],J[b+12>>2]));if(c){break d}}c=J[b+20>>2];i=J[b+16>>2];f=Ui+-64|0;Ui=f;h=e+8|0;g=J[h>>2];J[f+48>>2]=0;g=nm(g,3,f+48|0);j=J[h>>2];J[f+32>>2]=g&-2049;nm(j,4,f+32|0);g=0;c=Ri(J[h>>2],c|0,i|0,0,0,0)|0;if(c>>>0>=4294963201){J[245744]=0-c;c=-1}g=(c|0)<0?J[245744]:g;c=J[h>>2];J[f+16>>2]=0;c=nm(c,3,f+16|0);i=J[h>>2];J[f>>2]=c|2048;nm(i,4,f);Ui=f- -64|0;c=Tm(g);if(!c){break c}if(J[e+8>>2]==J[a>>2]){break d}Nt(h)}b=J[b+28>>2];if(b){continue}break}break b}if(!b){break a}Ip(b);break a}c=J[b+4>>2];J[d>>2]=J[b>>2];J[d+4>>2]=c;c=J[b+28>>2];J[d+24>>2]=J[b+24>>2];J[d+28>>2]=c;c=J[b+20>>2];J[d+16>>2]=J[b+16>>2];J[d+20>>2]=c;c=J[b+12>>2];J[d+8>>2]=J[b+8>>2];J[d+12>>2]=c;c=0}Ip(J[e+12>>2]);J[a>>2]=J[e+8>>2]}Ui=e+16|0;return c}function xE(a){var b=0,c=0,d=0;a:{if(!a|!J[a+32>>2]){break a}d=J[a+36>>2];if(!d){break a}c=J[a+28>>2];if(!c|J[c>>2]!=(a|0)){break a}b:{c:{b=J[c+4>>2];switch(b-57|0){case 1:case 2:case 3:case 4:case 5:case 6:case 7:case 8:case 9:case 10:case 11:case 13:case 14:case 15:case 17:case 18:case 19:case 20:case 21:case 22:case 23:case 24:case 25:case 26:case 27:case 28:case 29:case 30:case 31:case 32:case 33:case 35:case 36:case 37:case 38:case 39:case 40:case 41:case 42:case 43:case 44:case 45:case 47:case 48:case 49:case 50:case 51:case 52:case 53:case 54:case 55:break a;case 0:case 12:case 16:case 34:case 46:case 56:break b;default:break c}}if((b|0)==666){break b}if((b|0)!=42){break a}}b=J[c+8>>2];if(b){Zi[d|0](J[a+40>>2],b);d=J[a+36>>2];c=J[a+28>>2]}b=J[c+68>>2];if(b){Zi[d|0](J[a+40>>2],b);d=J[a+36>>2];c=J[a+28>>2]}b=J[c+64>>2];if(b){Zi[d|0](J[a+40>>2],b);d=J[a+36>>2];c=J[a+28>>2]}b=J[c+56>>2];if(b){Zi[d|0](J[a+40>>2],b);d=J[a+36>>2];c=J[a+28>>2]}Zi[d|0](J[a+40>>2],c);J[a+28>>2]=0}}function Ij(a,b,c){var d=0;a:{if((b|0)>0){d=(J[a+12>>2]+(b<<4)|0)-16|0;d=d>>>0>=M[a+8>>2]?173288:d;break a}d=J[a+8>>2]+(b<<4)|0;if((b|0)>=-9999){break a}b:{switch(b+10002|0){case 2:d=J[a+16>>2]+96|0;break a;case 1:d=J[J[J[J[a+20>>2]+4>>2]>>2]+12>>2];J[a+96>>2]=5;J[a+88>>2]=d;d=a+88|0;break a;case 0:d=a+72|0;break a;default:break b}}d=J[J[J[a+20>>2]+4>>2]>>2];d=K[d+7|0]<-10002-b>>>0?173288:(d+(0-b<<4)|0)-160024|0}c:{d:{if(J[d+8>>2]==4){break d}if(!nI(a,d)){a=0;if(!c){break c}J[c>>2]=0;return 0}d=J[a+16>>2];if(M[d+68>>2]>=M[d+64>>2]){Om(a)}if((b|0)>0){b=(J[a+12>>2]+(b<<4)|0)-16|0;d=b>>>0>=M[a+8>>2]?173288:b;break d}if((b|0)>=-9999){d=J[a+8>>2]+(b<<4)|0;break d}e:{switch(b+10002|0){case 2:d=J[a+16>>2]+96|0;break d;case 1:b=J[J[J[J[a+20>>2]+4>>2]>>2]+12>>2];J[a+96>>2]=5;J[a+88>>2]=b;d=a+88|0;break d;case 0:d=a+72|0;break d;default:break e}}a=J[J[J[a+20>>2]+4>>2]>>2];d=K[a+7|0]<-10002-b>>>0?173288:(a+(0-b<<4)|0)-160024|0}a=J[d>>2];if(c){J[c>>2]=J[a+12>>2];a=J[d>>2]}a=a+16|0}return a}function CM(a,b){var c=0,d=0,e=0,f=0,g=0,h=0;c=nj(68);J[c>>2]=0;J[c+4>>2]=0;J[c+28>>2]=0;J[c+32>>2]=0;J[c+56>>2]=0;J[c+60>>2]=0;J[c+52>>2]=1;J[c+48>>2]=b;J[c+16>>2]=0;J[c+20>>2]=0;b=c+8|0;J[b>>2]=0;J[b+4>>2]=0;J[c+36>>2]=0;J[c+40>>2]=0;J[c+44>>2]=0;J[c- -64>>2]=0;H[c+24|0]=K[c+24|0]&254;lj(a,4,c,b,c+4|0);a:{b:{d=J[b>>2];b=J[c>>2];if(d-b>>2>>>0>=a>>>0){d=a<<2;J[c+4>>2]=d+b;if(a){ij(b,0,d)}e=a&65535;b=L[c+20>>1];if(e>>>0>>0){break b}f=J[c+16>>2];d=sj(e<<1);J[c+16>>2]=d;d=hj(d,f,b<<1);I[c+20>>1]=a;c:{if(b>>>0>=e>>>0){break c}g=a-b&7;d:{if(!g){a=b;break d}a=b;while(1){I[d+(a<<1)>>1]=a;a=a+1|0;h=h+1|0;if((g|0)!=(h|0)){continue}break}}if(b-e>>>0>4294967288){break c}while(1){I[d+(a<<1)>>1]=a;b=a+1|0;I[d+(b<<1)>>1]=b;b=a+2|0;I[d+(b<<1)>>1]=b;b=a+3|0;I[d+(b<<1)>>1]=b;b=a+4|0;I[d+(b<<1)>>1]=b;b=a+5|0;I[d+(b<<1)>>1]=b;b=a+6|0;I[d+(b<<1)>>1]=b;b=a+7|0;I[d+(b<<1)>>1]=b;a=a+8|0;if((e|0)!=(a|0)){continue}break}}cj(f);break a}Z(144782,53895,514,59583);B()}Z(2627,54340,112,2284);B()}return c}function oga(a){a=a|0;var b=0,c=0,d=0,e=0,f=0,g=0,h=0,i=0,j=0,k=0,l=0;b=Ui+-64|0;Ui=b;j=pj(b+12|0,a,0,39481,1199);g=J[J[pk(a)+80>>2]+8>>2];J[b+8>>2]=0;J[b+4>>2]=0;J[b+56>>2]=0;J[b+60>>2]=0;J[b+48>>2]=0;J[b+52>>2]=0;J[b+40>>2]=0;J[b+44>>2]=0;J[b+32>>2]=0;J[b+36>>2]=0;Al(a,1,g,80935,b+8|0,b+32|0,b+4|0);g=mk(a,2);f=Yi;k=f;c=J[b+8>>2];d=J[b+4>>2];f=Vl(d,g,f,1);a:{if(!f){break a}if(H[d+145|0]&1){e=J[d+132>>2];d=J[c+8>>2];c=J[d>>2];if(!J[c+188>>2]){I[d+4>>1]=f;break a}h=J[e+84>>2];i=J[h>>2];if(J[c+232>>2]==2){Zi[J[i+84>>2]](h,c);I[d+4>>1]=f;e=J[e+84>>2];Zi[J[J[e>>2]+156>>2]](e,c,f<<16>>16,I[d+6>>1]);break a}Zi[J[i+36>>2]](h,c);I[d+4>>1]=f;e=J[e+84>>2];Zi[J[J[e>>2]+32>>2]](e,c,f<<16>>16,I[d+6>>1]);break a}d=Ui-16|0;Ui=d;c=J[J[c+8>>2]+100>>2];if(c){while(1){if(J[J[c+12>>2]+4>>2]!=4){e=J[c+40>>2];I[d+12>>1]=L[e+4>>1];J[d+8>>2]=L[e>>1]|L[e+2>>1]<<16;I[d+8>>1]=f;Nv(c,d+8|0,0)}c=J[c+4>>2];if(c){continue}break}}Ui=d+16|0}if(!f){J[b>>2]=tj(g,k);l=fj(a,118777,b)}oj(j);Ui=b- -64|0;return l|0}function sV(a,b,c){var d=0,e=0,f=0,g=0,h=0,i=0;a:{if((b|0)>=(c|0)){break a}b:while(1){Nj(a,1,b);Nj(a,1,c);c:{if(Sz(a,-1,-2)){Ik(a,1,b);Ik(a,1,c);break c}gj(a,-3)}e=c-b|0;if((e|0)==1){break a}d=(b+c|0)/2|0;Nj(a,1,d);Nj(a,1,b);d:{if(Sz(a,-2,-1)){Ik(a,1,d);Ik(a,1,b);break d}gj(a,-2);Nj(a,1,c);if(Sz(a,-1,-2)){Ik(a,1,d);Ik(a,1,c);break d}gj(a,-3)}if((e|0)==2){break a}Nj(a,1,d);uj(a,-1);h=c-1|0;Nj(a,1,h);g=h;e=b;e:while(1){Ik(a,1,d);Ik(a,1,g);f=e;while(1){d=f+1|0;Nj(a,1,d);f:{if(kj(a,2)){uj(a,2);uj(a,-2);uj(a,-4);Wk(a,2,1);e=ck(a,-1);gj(a,-2);break f}e=MA(a,-1,-2)}if(!e){while(1){i=g;g=g-1|0;Nj(a,1,g);g:{if(kj(a,2)){uj(a,2);uj(a,-4);uj(a,-3);Wk(a,2,1);e=ck(a,-1);gj(a,-2);break g}e=MA(a,-3,-1)}if(e){if((b|0)>=(i|0)){fj(a,56165,0)}gj(a,-2);continue}break}e=d;if((d|0)<(i|0)){continue e}gj(a,-4);Nj(a,1,h);Nj(a,1,d);Ik(a,1,h);Ik(a,1,d);e=f+2|0;d=(d-b|0)<(c-d|0);sV(a,d?b:e,d?f:c);b=d?e:b;c=d?c:f;if((b|0)<(c|0)){continue b}break a}if((c|0)<=(f|0)){fj(a,56165,0)}gj(a,-2);f=d;continue}}}}}function mP(a,b,c){var d=0,e=0,f=0,g=0;e=Ui-256|0;Ui=e;Zi[J[79381]](c)|0;a:{b:{if(!b){break b}d=ek(e,84314,8);ek(d+e|0,b,256-d|0);c:{if(Hk(e,32)|!K[e|0]){break c}d=J[c+60>>2];f=J[c+56>>2];if((d|0)==(f|0)){break c}d=d-f>>2;g=d>>>0<=1?1:d;d=0;while(1){if(jj(e,J[f+(d<<2)>>2])){d=d+1|0;if((g|0)!=(d|0)){continue}break c}break}d=ek(e,a,255);ek(d+e|0,99332,256-d|0);d=gB(e);if(d){break a}}d=ek(e,84298,8);ek(d+e|0,b,256-d|0);d:{if(Hk(e,32)|!K[e|0]){break d}d=J[c+60>>2];f=J[c+56>>2];if((d|0)==(f|0)){break d}d=d-f>>2;g=d>>>0<=1?1:d;d=0;while(1){if(jj(e,J[f+(d<<2)>>2])){d=d+1|0;if((g|0)!=(d|0)){continue}break d}break}d=ek(e,a,255);ek(d+e|0,86397,256-d|0);d=gB(e);if(d){break a}}d=ek(e,84306,8);ek(d+e|0,b,256-d|0);if(Hk(e,32)|!K[e|0]){break b}d=J[c+60>>2];b=J[c+56>>2];if((d|0)==(b|0)){break b}c=d-b>>2;c=c>>>0<=1?1:c;d=0;while(1){if(jj(e,J[b+(d<<2)>>2])){d=d+1|0;if((c|0)!=(d|0)){continue}break b}break}a=ek(e,a,255);ek(a+e|0,89063,256-a|0);d=gB(e);if(d){break a}}d=0}Ui=e+256|0;return d}function IR(a,b,c){var d=0,e=0,f=0,g=0,h=0,i=0,j=0,k=0,l=0,m=0,n=0,o=0,p=0,q=0,r=0,s=0,t=0;a:{i=J[a>>2];a=Ui-32|0;Ui=a;J[a+28>>2]=0;b:{c:{d:{if(!c){break d}while(1){g=P(j,960)+b|0;e:{if(!(J[g>>2]|J[g+4>>2]|K[g+957|0]&6)){break e}d=J[i+3180>>2];e=J[i+3176>>2];if((d|0)==(e|0)){break e}k=d-e>>2;q=k>>>0<=1?1:k;e=0;while(1){f=(e^-1)+k|0;d=J[i+3176>>2];if(f>>>0>=J[i+3180>>2]-d>>2>>>0){break c}f:{l=J[d+(f<<2)>>2];n=J[l+84>>2];o=J[n+4>>2];if(o){r=l+156|0;f=0;m=0;p=0;while(1){d=J[(J[n>>2]+P(f,96)|0)+16>>2];if(!d){break b}h=J[d+72>>2];g:{if(!h){break g}s=J[d+100>>2];J[a+16>>2]=g;J[a+12>>2]=l;t=J[d+16>>2];J[a+24>>2]=(m<<2)+r&s<<15>>31;J[a+20>>2]=t;h=Zi[h|0](a+12|0)|0;if((h|0)!=1){if((h|0)!=-1e3){break g}break d}p=1}m=(I[d+102>>1]&1)+m|0;f=f+1|0;if((o|0)!=(f|0)){continue}break}if(p){break f}}e=e+1|0;if((q|0)==(e|0)){break e}continue}break}I[ij(g,0,960)+956>>1]=2048}j=j+1|0;if((j|0)!=(c|0)){continue}break}}Ui=a+32|0;break a}Z(145396,53895,487,84789);B()}Z(63839,38296,2891,9496);B()}}function ow(a,b){var c=0,d=0,e=Q(0),f=Q(0),g=Q(0),h=Q(0),i=Q(0),j=Q(0),k=Q(0),l=Q(0),m=Q(0),n=Q(0),o=Q(0),p=Q(0),q=Q(0);if(J[a>>2]==(b|0)){J[a>>2]=0;return 0}d=J[b+32>>2];c=J[(((J[d+40>>2]!=(b|0))<<2)+d|0)+36>>2];b=J[d+32>>2];a:{b:{if(b){J[((((d|0)==J[b+40>>2])<<2)+b|0)+36>>2]=c;J[c+32>>2]=b;c=J[a+4>>2];if(c){J[83765]=J[83765]+1;Zi[J[61751]](J[c-4>>2])}J[a+4>>2]=d;while(1){q=N[b>>2];d=J[b+36>>2];e=N[d>>2];c=J[b+40>>2];k=N[c>>2];e=e>2]=e;k=N[b+16>>2];f=N[d+16>>2];l=N[c+16>>2];f=f>l?f:l;N[b+16>>2]=f;l=N[b+4>>2];g=N[d+4>>2];m=N[c+4>>2];g=g>2]=g;m=N[b+20>>2];h=N[d+20>>2];n=N[c+20>>2];h=h>n?h:n;N[b+20>>2]=h;n=N[b+8>>2];i=N[d+8>>2];o=N[c+8>>2];i=i>2]=i;o=N[b+24>>2];j=N[d+24>>2];p=N[c+24>>2];j=j>p?j:p;N[b+24>>2]=j;c:{if(e!=q|l!=g|(n!=i|k!=f)){break c}if(m!=h){break c}if(o==j){break a}}b=J[b+32>>2];if(b){continue}break}break b}J[a>>2]=c;J[c+32>>2]=0;b=J[a+4>>2];if(b){J[83765]=J[83765]+1;Zi[J[61751]](J[b-4>>2])}J[a+4>>2]=d}b=J[a>>2]}return b}function Zwa(a){a=a|0;var b=0,c=0,d=Q(0),e=Q(0),f=0,g=0;J[54529]=-2;J[54526]=-2;J[54523]=-2;J[54520]=-2;J[54517]=-2;b=Ui-32|0;Ui=b;J[73866]=0;J[54638]=14272;J[b+16>>2]=1;J[b+20>>2]=0;J[b+24>>2]=2;J[b+28>>2]=4;aa(289149,158962,b+16|0)|0;J[b>>2]=3;aa(290332,158967,b|0)|0;Ui=b+32|0;b=ak(J[a>>2],52879,-1);c=ak(J[a>>2],14539,-1);f=ak(J[a>>2],5841,-1);g=ak(J[a>>2],4225,-1);a:{if((b|0)==-1|(c|0)==-1){break a}d=Q(b|0);e=Q(c|0);if(!((f|0)==-1|(g|0)==-1)){wE(d,e);break a}wE(d,e)}a=J[a+8>>2];b=J[a+8>>2]-J[a+12>>2]|0;uk(a,19942,218128);c=J[a+8>>2];J[c+8>>2]=3;O[c>>3]=0;J[a+8>>2]=J[a+8>>2]+16;ej(a,-2,85747);c=J[a+8>>2];J[c+8>>2]=3;O[c>>3]=1;J[a+8>>2]=J[a+8>>2]+16;ej(a,-2,90195);c=J[a+8>>2];J[c+8>>2]=3;O[c>>3]=2;J[a+8>>2]=J[a+8>>2]+16;ej(a,-2,96991);c=J[a+8>>2];J[c+8>>2]=3;O[c>>3]=3;J[a+8>>2]=J[a+8>>2]+16;ej(a,-2,92205);xj(a,114114);ej(a,-2,90819);Fj(a,0,0);Nk(a,22,0);ej(a,-2,82368);J[73864]=Lk(a,-1e4);gj(a,-2);if(b>>4!=J[a+8>>2]-J[a+12>>2]>>4){Z(143244,39178,718,14317);B()}return 0}function lY(a){a=a|0;var b=0,c=0,d=0,e=0,f=0,g=0,h=0,i=0;b=mm(a,1,0,0);c=J[(qs(a,2,49663,258528)<<2)+173744>>2];d=Ui-48|0;Ui=d;a:{if(c>>>0>6){break a}b:{if((c|0)==6){if(!b){break b}c=J[53385];J[d+16>>2]=J[53384];J[d+20>>2]=c;c=J[53383];J[d+8>>2]=J[53382];J[d+12>>2]=c;c=J[53381];J[d>>2]=J[53380];J[d+4>>2]=c;c:{while(1){c=Az(b,59);f=c-b|0;if((f|0)<=23){hj(d,b,f);H[d+f|0]=0;b=K[c|0]?c+1|0:b}c=DV(e,d);if((c|0)==-1){break c}J[(d+24|0)+(e<<2)>>2]=c;e=e+1|0;if((e|0)!=6){continue}break}b=J[d+28>>2];J[245776]=J[d+24>>2];J[245777]=b;b=J[d+44>>2];J[245780]=J[d+40>>2];J[245781]=b;b=J[d+36>>2];J[245778]=J[d+32>>2];J[245779]=b;break b}break a}d:{if(b){b=DV(c,b);if((b|0)==-1){break a}J[(c<<2)+983104>>2]=b;break d}b=J[(c<<2)+983104>>2]}h=b?b+8|0:99232;break a}b=983440;e=0;while(1){i=J[245776];c=J[(e<<2)+983104>>2];f=c?c+8|0:99232;g=yj(f);hj(b,f,g);g=b+g|0;H[g|0]=59;b=g+1|0;h=((c|0)==(i|0))+h|0;e=e+1|0;if((e|0)!=6){continue}break}H[g|0]=0;h=(h|0)!=6?983440:f}Ui=d+48|0;xj(a,h);return 1}function v3(a){a=a|0;var b=0,c=0,d=0,e=Q(0),f=0,g=Q(0),h=Q(0),i=Q(0),j=0,k=0,l=0,m=0;b=Ui-80|0;Ui=b;d=Vj(a,1);J[b+60>>2]=0;c=Aj(a,2,b+60|0);a:{b:{c:{switch(J[b+60>>2]-2|0){case 1:f=K[c+1|0];if((f&252)!=48){break b}c=K[c+2|0];if((c&252)!=48){break b}j=wj(a,-1);a=d+(c<<4)|0;c=a-768|0;k=J[c>>2];l=J[c+4>>2];d=a-760|0;m=J[d+4>>2];J[b+72>>2]=J[d>>2];J[b+76>>2]=m;J[b+64>>2]=k;J[b+68>>2]=l;N[((f<<2)+b|0)-128>>2]=j;N[c>>2]=N[b+64>>2];N[a-764>>2]=N[b+68>>2];N[d>>2]=N[b+72>>2];N[a-756>>2]=N[b+76>>2];a=0;break a;case 0:break c;default:break b}}f=K[c+1|0];if((f&252)!=48){break b}c=qj(a,-1,J[215721],0);g=N[c+8>>2];h=N[c>>2];i=N[c+4>>2];d:{if(!(h!=h|i!=i|g!=g)){e=N[c+12>>2];if(e==e){break d}}e=N[c+12>>2];O[b+40>>3]=g;O[b+32>>3]=i;O[b+48>>3]=e;O[b+24>>3]=h;J[b+16>>2]=-1;fj(a,138642,b+16|0);e=N[c+12>>2];g=N[c+8>>2];i=N[c+4>>2];h=N[c>>2]}a=d+(f<<4)|0;N[a-756>>2]=e;N[a-760>>2]=g;N[a-764>>2]=i;N[a-768>>2]=h;a=0;break a}J[b+4>>2]=106883;J[b>>2]=53139;a=fj(a,131187,b)}Ui=b+80|0;return a|0}function uL(a,b,c,d){var e=0,f=0,g=0,h=0,i=0,j=0,k=0,l=0,m=0,n=0,o=0,p=0;f=J[a+68>>2];i=J[a+64>>2];j=(f-i|0)/56|0;a:{b:{if((f|0)==(i|0)){break b}o=j>>>0<=1?1:j;l=J[a+80>>2];p=(J[a+84>>2]-l|0)/40|0;m=1;while(1){c:{d:{if((g|0)!=(p|0)){e=P(g,40)+l|0;n=P(g,56)+i|0;h=n;f=J[h+8>>2];h=J[h+12>>2];e:{if((f|0)==(b|0)&(h|0)==(c|0)){f=b;h=c;break e}if((b|0)==J[e>>2]&(c|0)==J[e+4>>2]){break e}if(J[e+8>>2]==(b|0)&J[e+12>>2]==(c|0)){k=1;break e}if(J[e+16>>2]==(b|0)&J[e+20>>2]==(c|0)){k=2;break e}if((b|0)!=J[e+24>>2]|(c|0)!=J[e+28>>2]){break d}k=3}J[d+8>>2]=n;J[d>>2]=f;J[d+4>>2]=h;b=L[e+36>>1];c=J[a+100>>2];a=J[a+96>>2];if(b>>>0>=c-a>>>0){break c}J[d+48>>2]=k;J[d+12>>2]=a+b;a=J[e+4>>2];J[d+16>>2]=J[e>>2];J[d+20>>2]=a;a=J[e+12>>2];J[d+24>>2]=J[e+8>>2];J[d+28>>2]=a;a=J[e+20>>2];J[d+32>>2]=J[e+16>>2];J[d+36>>2]=a;a=J[e+28>>2];J[d+40>>2]=J[e+24>>2];J[d+44>>2]=a;break b}break a}g=g+1|0;m=j>>>0>g>>>0;if((g|0)!=(o|0)){continue}break b}break}break a}return m}Z(145396,53895,487,84789);B()}function BF(a,b,c,d,e){var f=0,g=0,h=0,i=0,j=0;f=Ui-32|0;Ui=f;J[f+20>>2]=b;J[f+24>>2]=a;J[f+16>>2]=c;J[f+12>>2]=d;J[f+8>>2]=e;Hz(a,b,c,d);g=J[e+4>>2];h=J[d+4>>2];a:{if((g|0)==(h|0)&M[e>>2]>=M[d>>2]|g>>>0>h>>>0){break a}g=f+12|0;d=J[g>>2];h=J[d>>2];i=J[d+4>>2];e=J[f+8>>2];j=J[e+4>>2];J[d>>2]=J[e>>2];J[d+4>>2]=j;J[e>>2]=h;J[e+4>>2]=i;d=J[f+12>>2];e=J[d>>2];d=J[d+4>>2];h=J[c+4>>2];if((d|0)==(h|0)&M[c>>2]<=e>>>0|d>>>0>h>>>0){break a}e=f+16|0;d=J[e>>2];h=J[d>>2];i=J[d+4>>2];c=J[g>>2];g=J[c+4>>2];J[d>>2]=J[c>>2];J[d+4>>2]=g;J[c>>2]=h;J[c+4>>2]=i;c=J[f+16>>2];d=J[c>>2];c=J[c+4>>2];g=J[b+4>>2];if((c|0)==(g|0)&M[b>>2]<=d>>>0|c>>>0>g>>>0){break a}d=f+20|0;c=J[d>>2];b=c;g=J[b>>2];h=J[b+4>>2];b=J[e>>2];e=J[b+4>>2];J[c>>2]=J[b>>2];J[c+4>>2]=e;J[b>>2]=g;J[b+4>>2]=h;b=J[f+20>>2];c=J[b>>2];b=J[b+4>>2];e=J[a+4>>2];if((b|0)==(e|0)&M[a>>2]<=c>>>0|b>>>0>e>>>0){break a}a=J[f+24>>2];c=J[a>>2];e=J[a+4>>2];b=J[d>>2];d=J[b+4>>2];J[a>>2]=J[b>>2];J[a+4>>2]=d;J[b>>2]=c;J[b+4>>2]=e}Ui=f+32|0}function zva(a,b,c,d){a=a|0;b=b|0;c=c|0;d=d|0;var e=Q(0),f=Q(0),g=Q(0),h=Q(0),i=Q(0),j=Q(0),k=Q(0),l=Q(0),m=Q(0),n=Q(0),o=Q(0),p=0,q=Q(0),r=Q(0),s=Q(0),t=Q(0),u=0;a:{if(J[J[a+32>>2]+(d<<2)>>2]==-1){J[b>>2]=2139095039;J[b+4>>2]=2139095039;e=Q(-34028234663852886e22);f=Q(-34028234663852886e22);break a}f=N[c>>2];m=N[a+48>>2];g=Q(N[a+28>>2]-Q(Q(m*Q(M[a+52>>2]))*Q(.5)));h=N[c+8>>2];i=N[a+44>>2];p=J[a+56>>2];j=Q(N[a+24>>2]-Q(Q(i*Q(p>>>0))*Q(.5)));u=d;d=(d>>>0)/(p>>>0)|0;p=u-P(d,p)|0;e=N[a+8>>2];r=Q(j+Q(Q(i*Q(p|0))-e));n=Q(h*r);k=N[c+12>>2];s=Q(Q(Q(m*Q(d|0))-e)+g);t=Q(k*s);l=N[c+4>>2];o=Q(Q(n+t)+l);q=n;n=Q(Q(Q(m*Q(d+1|0))+e)+g);g=Q(k*n);m=Q(Q(q+g)+l);q=m>o?o:m;i=Q(j+Q(Q(i*Q(p+1|0))+e));j=Q(h*i);e=Q(Q(j+t)+l);l=Q(Q(j+g)+l);g=e>2]=g>q?q:g;j=Q(k*r);r=Q(h*Q(-s));g=Q(f+Q(j+r));q=j;j=Q(h*Q(-n));h=Q(f+Q(q+j));n=gk?k:f;N[b>>2]=i>n?n:i;o=ml?e:l;e=eh?g:h;f=f>2]=e;N[b+8>>2]=f}function ks(a,b,c){var d=0,e=0,f=0,g=0,h=0;a:{f=J[a>>2];if((b-f|0)<=0){break a}if(K[f|0]!=2){return-98}d=f+1|0;J[a>>2]=d;e=b-d|0;if((e|0)<=0){break a}d=H[d|0];b:{c:{if((d|0)>=0){e=f+2|0;J[a>>2]=e;d=K[f+1|0];break c}g=-100;d:{switch((d&127)-1|0){case 0:if((e|0)==1){break a}d=K[f+2|0];e=f+3|0;J[a>>2]=e;break c;case 1:if(e>>>0<3){break a}d=K[f+3|0];g=K[f+2|0];e=f+4|0;J[a>>2]=e;d=g<<8|d;break c;case 2:if(e>>>0<4){break a}d=K[f+4|0];g=K[f+3|0];h=K[f+2|0];e=f+5|0;J[a>>2]=e;d=g<<8|h<<16|d;break c;case 3:break d;default:break b}}if(e>>>0<5){break a}d=K[f+2|0]|K[f+3|0]<<8|(K[f+4|0]<<16|K[f+5|0]<<24);e=f+6|0;J[a>>2]=e;d=d<<24|(d&65280)<<8|(d>>>8&65280|d>>>24)}g=-96;if(b-e>>>0>>0){break b}g=-100;if(H[e|0]<0|d-5>>>0<4294967292){break b}J[c>>2]=0;b=K[e|0];J[c>>2]=b;J[a>>2]=e+1;e:{if((d|0)==1){break e}b=K[e+1|0]|b<<8;J[c>>2]=b;J[a>>2]=e+2;if((d|0)==2){break e}b=K[e+2|0]|b<<8;J[c>>2]=b;J[a>>2]=e+3;if((d|0)==3){break e}J[c>>2]=K[e+3|0]|b<<8;J[a>>2]=e+4}g=0}return g}return-96}function o8(a){a=a|0;var b=0,c=0,d=0,e=Q(0),f=Q(0),g=Q(0),h=Q(0),i=Q(0),j=Q(0),k=Q(0),l=Q(0),m=0,n=0;b=Ui-80|0;Ui=b;a:{c=Qj(a,1,b+76|0);if(!(K[c+479|0]&16)){d=Gm(a,2);b:{if(d){m=J[a+8>>2]-J[a+12>>2]|0;Bj(a);n=Kk(a,-1,J[219396]);gj(a,-2);if(m>>4!=J[a+8>>2]-J[a+12>>2]>>4){break a}fm(b+48|0,n,J[b+76>>2],10);e=N[d>>2];f=N[d+4>>2];g=N[d+8>>2];N[b+24>>2]=g;N[b+20>>2]=f;N[b+16>>2]=e;l=N[b+60>>2];Kn(b+32|0,b+16|0);h=N[b+36>>2];i=N[b+32>>2];j=N[b+44>>2];k=N[b+40>>2];break b}d=un(a,2);if(d){l=N[d+12>>2];e=N[d>>2];f=N[d+4>>2];g=N[d+8>>2];N[b+8>>2]=g;N[b+4>>2]=f;N[b>>2]=e;Kn(b+48|0,b);h=N[b+52>>2];i=N[b+48>>2];j=N[b+60>>2];k=N[b+56>>2];break b}a=Is(a,2);fx(b+48|0,N[a>>2],N[a+4>>2],N[a+8>>2],N[a+12>>2]);g=N[b+56>>2];f=N[b+52>>2];e=N[b+48>>2];h=N[a+4>>2];i=N[a>>2];j=N[a+12>>2];k=N[a+8>>2]}N[c+172>>2]=l;N[c+168>>2]=g;N[c+164>>2]=f;N[c+160>>2]=e;N[c+28>>2]=j;N[c+24>>2]=k;N[c+20>>2]=h;N[c+16>>2]=i;J[c+476>>2]=J[c+476>>2]|4194304}Ui=b+80|0;return 0}Z(143244,37682,190,65548);B()}function Bz(a,b,c,d){var e=0,f=0,g=0,h=0,i=0,j=0;e=Ui-208|0;Ui=e;J[e+8>>2]=1;J[e+12>>2]=0;i=P(b,c);a:{if(!i){break a}J[e+16>>2]=c;J[e+20>>2]=c;j=0-c|0;b=c;f=b;g=2;while(1){h=b;b=(c+f|0)+b|0;J[(e+16|0)+(g<<2)>>2]=b;g=g+1|0;f=h;if(b>>>0>>0){continue}break}h=(a+i|0)+j|0;b:{if(h>>>0<=a>>>0){b=1;break b}g=1;b=1;while(1){c:{if((g&3)==3){Xz(a,c,d,b,e+16|0);lw(e+8|0,2);b=b+2|0;break c}g=e+16|0;f=b-1|0;d:{if(M[g+(f<<2)>>2]>=h-a>>>0){ew(a,c,d,e+8|0,b,0,g);break d}Xz(a,c,d,b,e+16|0)}if((b|0)==1){mw(e+8|0,1);b=0;break c}mw(e+8|0,f);b=1}g=J[e+8>>2]|1;J[e+8>>2]=g;a=a+c|0;if(h>>>0>a>>>0){continue}break}}ew(a,c,d,e+8|0,b,0,e+16|0);if(!((b|0)!=1|J[e+8>>2]!=1|J[e+12>>2])){break a}while(1){e:{if((b|0)<=1){f=e+8|0;h=XG(f);lw(f,h);b=b+h|0;break e}f=e+8|0;mw(f,2);J[e+8>>2]=J[e+8>>2]^7;lw(f,1);i=a+j|0;g=e+16|0;h=b-2|0;ew(i-J[g+(h<<2)>>2]|0,c,d,f,b-1|0,1,g);mw(f,1);J[e+8>>2]=J[e+8>>2]|1;ew(i,c,d,f,h,1,g);b=h}a=a+j|0;if(J[e+12>>2]|((b|0)!=1|J[e+8>>2]!=1)){continue}break}}Ui=e+208|0}function uN(a,b,c,d){var e=0,f=0,g=0,h=0;a:{b:{c:{d:{h=J[a+16>>2];g=J[a+8>>2];if(J[a+24>>2]!=((h-g|0)/40|0)){e=J[a+4>>2];e:{if(!e){break e}f=J[J[a>>2]+(mxa(b,c,e)<<2)>>2];if((f|0)==-1){break e}while(1){e=g+P(f,40)|0;if((b|0)==J[e>>2]&(c|0)==J[e+4>>2]){break d}f=J[e+32>>2];if((f|0)!=-1){continue}break}}e=J[a+12>>2];f:{if((h|0)!=(e|0)){J[a+12>>2]=e+40;break f}e=J[a+20>>2];if((e|0)==-1){break c}e=g+P(e,40)|0;J[a+20>>2]=J[e+32>>2]}J[e>>2]=b;J[e+4>>2]=c;f=J[d+4>>2];J[e+8>>2]=J[d>>2];J[e+12>>2]=f;f=J[d+12>>2];J[e+16>>2]=J[d+8>>2];J[e+20>>2]=f;J[e+24>>2]=J[d+16>>2];J[e+32>>2]=-1;d=J[a+8>>2];b=J[a>>2]+(mxa(b,c,J[a+4>>2])<<2)|0;f=J[b>>2];if((f|0)==-1){break b}while(1){b=d+P(f,40)|0;f=J[b+32>>2];if((f|0)!=-1){continue}break}J[b+32>>2]=(e-d|0)/40;break a}Z(144851,55629,229,9606);B()}a=J[d+4>>2];J[e+8>>2]=J[d>>2];J[e+12>>2]=a;J[e+24>>2]=J[d+16>>2];a=J[d+12>>2];J[e+16>>2]=J[d+8>>2];J[e+20>>2]=a;return}Z(152203,55629,537,2838);B()}J[b>>2]=(e-d|0)/40}J[a+24>>2]=J[a+24>>2]+1}function s5(a){a=a|0;var b=0,c=0,d=0,e=0,f=0,g=0,h=0;d=Ui-80|0;Ui=d;h=pj(d+60|0,a,0,37616,1172);b=J[a+8>>2]-J[a+12>>2]|0;Bj(a);e=qj(a,-1,J[84364],139081);gj(a,-2);f=J[a+8>>2]-J[a+12>>2]>>4;if((f|0)==b>>4){b=0;c=0;a:{if((f|0)<=0){break a}c=0;if(!kj(a,1)){break a}b=Lx(a,e);c=Yi}f=b;if(J[a+8>>2]-J[a+12>>2]>>4>=2){Oj(a,2,5);uj(a,2);rj(a,-1,13909);b:{if(!kj(a,-1)){break b}b=J[a+8>>2];J[b+8>>2]=0;J[a+8>>2]=b+16;if(!$j(a,-2)){break b}b=0;while(1){g=Ej(a,-1);gj(a,-2);b=b|g;if($j(a,-2)){continue}break}g=b}gj(a,-3)}a=d+16|0;J[a+16>>2]=g;J[a+20>>2]=0;J[a+8>>2]=f;J[a+12>>2]=c;J[a>>2]=4;b=J[e+4>>2];c:{if((b|0)!=J[e+8>>2]){J[e+4>>2]=b+40;c=J[a+36>>2];J[b+32>>2]=J[a+32>>2];J[b+36>>2]=c;c=J[a+28>>2];J[b+24>>2]=J[a+24>>2];J[b+28>>2]=c;c=J[a+20>>2];J[b+16>>2]=J[a+16>>2];J[b+20>>2]=c;c=J[a+12>>2];J[b+8>>2]=J[a+8>>2];J[b+12>>2]=c;c=J[a+4>>2];J[b>>2]=J[a>>2];J[b+4>>2]=c;a=0;break c}J[d>>2]=(b-J[e>>2]|0)/40;a=Jj(h,132935,d)}oj(h);Ui=d+80|0;return a|0}Z(143244,37616,478,51340);B()}function Cha(a){a=a|0;var b=0,c=0,d=0,e=0,f=0,g=0,h=0,i=0,j=0;c=Ui-48|0;Ui=c;a:{b:{e=J[a+8>>2]-J[a+12>>2]>>4;if((e|0)>=2){if((kj(a,2)|0)==6){break b}}b=fj(a,119992,0);break a}J[c+40>>2]=0;J[c+44>>2]=0;J[c+32>>2]=0;J[c+36>>2]=0;J[c+24>>2]=0;J[c+28>>2]=0;J[c+16>>2]=0;J[c+20>>2]=0;Mn(a,80474,c+12|0,c+8|0,c+16|0);c:{d:{if(J[J[c+8>>2]+24>>2]&1){dj(4,88458,123064,0);break d}uj(a,2);f=Lk(a,-1e4);Bj(a);g=Lk(a,-1e4);wm(a,c+16|0);h=Lk(a,-1e4);j=J[c+12>>2];b=J[c+8>>2];J[b+20>>2]=h;J[b+16>>2]=g;J[b+12>>2]=f;i=J[b+24>>2];d=J[b+4>>2];if(!d){d=J[b>>2]}e:{f:{g:{if(!(H[d+8|0]&1)){break g}if(i&1){dj(4,88458,123064,0);break f}if(J[d>>2]){break g}d=IK(J[j>>2],J[d+4>>2]);J[b+8>>2]=d;if(!d){break f}J[b+24>>2]=J[b+24>>2]|1;b=1;break e}J[b+24>>2]=i|1;b=1;break e}J[b+20>>2]=-2;J[b+12>>2]=-2;J[b+16>>2]=-2;b=0}if(b){break c}hk(a,-1e4,f);hk(a,-1e4,g);hk(a,-1e4,h)}b=fj(a,24372,0);break a}b=0;if(J[a+8>>2]-J[a+12>>2]>>4==(e|0)){break a}Z(143244,36620,194,76308);B()}Ui=c+48|0;return b|0}function MR(a){var b=0,c=0,d=0,e=0,f=0,g=0;d=Ui-16|0;Ui=d;J[d+12>>2]=0;c=J[a+4>>2];if(J[c>>2]){f=a+12|0;g=c+8|0;while(1){J[d+8>>2]=0;e=P(b,112)+g|0;J[d>>2]=J[e+16>>2];J[d+4>>2]=J[(b<<2)+f>>2];e=J[e+24>>2];if(e){Zi[e|0](d)|0}b=b+1|0;if(b>>>0>2]){continue}break}}On(J[a+3232>>2]);a:{if(H[a+3256|0]&1){break a}b=J[a+3244>>2];if(!b){break a}cj(b)}b:{if(H[a+3204|0]&1){break b}b=J[a+3192>>2];if(!b){break b}cj(b)}c:{if(H[a+3188|0]&1){break c}b=J[a+3176>>2];if(!b){break c}cj(b)}d:{if(H[a+3172|0]&1){break d}b=J[a+3152>>2];if(b){cj(b)}b=J[a+3144>>2];if(!b){break d}cj(b)}e:{if(H[a+3140|0]&1){break e}b=J[a+3128>>2];if(!b){break e}cj(b)}b=3128;while(1){b=b-16|0;c=b+a|0;f:{if(H[c+12|0]&1){break f}c=J[c>>2];if(!c){break f}cj(c)}if((b|0)!=1080){continue}break}g:{if(H[a+1076|0]&1){break g}b=J[a+1064>>2];if(!b){break g}cj(b)}h:{if(H[a+1060|0]&1){break h}b=J[a+1052>>2];if(!b){break h}cj(b)}i:{if(H[a+1048|0]&1){break i}b=J[a+1036>>2];if(!b){break i}cj(b)}cj(a);Ui=d+16|0}function Fw(a,b,c,d){var e=0,f=0,g=0,h=0,i=0,j=0,k=0;a:{if(!b){break a}h=a- -64|0;e=J[a+128>>2];while(1){if(e>>>0<=63){H[d+i|0]=K[e+h|0]^K[c+i|0];e=J[a+128>>2]+1|0;J[a+128>>2]=e;i=i+1|0;b=b-1|0;if(b){continue}break a}break}if(b>>>0>=64){j=a- -64|0;while(1){NS(a,j);J[a+48>>2]=J[a+48>>2]+1;h=0;while(1){e=h+i|0;g=h+j|0;H[e+d|0]=K[g|0]^K[c+e|0];f=e+1|0;H[f+d|0]=K[g+1|0]^K[c+f|0];f=e+2|0;H[f+d|0]=K[g+2|0]^K[c+f|0];f=e+3|0;H[f+d|0]=K[g+3|0]^K[c+f|0];f=e+4|0;H[f+d|0]=K[g+4|0]^K[c+f|0];f=e+5|0;H[f+d|0]=K[g+5|0]^K[c+f|0];f=e+6|0;H[f+d|0]=K[g+6|0]^K[c+f|0];e=e+7|0;H[e+d|0]=K[g+7|0]^K[c+e|0];e=h>>>0<56;h=h+8|0;if(e){continue}break}i=i- -64|0;b=b+-64|0;if(b>>>0>63){continue}break}if(!b){break a}}g=a- -64|0;NS(a,g);J[a+48>>2]=J[a+48>>2]+1;e=0;if((b|0)!=1){j=b&62;h=0;while(1){f=e+i|0;H[f+d|0]=K[e+g|0]^K[c+f|0];f=e|1;k=f+i|0;H[k+d|0]=K[f+g|0]^K[c+k|0];e=e+2|0;h=h+2|0;if((j|0)!=(h|0)){continue}break}}if(b&1){f=d;d=e+i|0;H[f+d|0]=K[e+g|0]^K[c+d|0]}J[a+128>>2]=b}return 0}function XF(a,b,c){var d=0,e=0,f=0,g=0,h=0,i=0,j=0,k=0,l=0,m=0,n=0;while(1){m=b;l=J[J[a+12>>2]+((b+c|0)/2<<2)>>2];e=c;while(1){j=J[a+12>>2];i=J[J[l+1108>>2]+208>>2];f=(i|0)<0;a:{if(!f){while(1){g=b;k=(b<<2)+j|0;h=J[k>>2];d=J[J[h+1108>>2]+208>>2];if((d|0)<0){d=J[J[h+1112>>2]+208>>2]}b=g+1|0;if((d|0)<(i|0)){continue}break a}}n=J[J[l+1112>>2]+208>>2];while(1){g=b;k=(b<<2)+j|0;h=J[k>>2];d=J[J[h+1108>>2]+208>>2];if((d|0)<0){d=J[J[h+1112>>2]+208>>2]}b=g+1|0;if((d|0)<(n|0)){continue}break}}b:{if(!f){while(1){b=e;f=J[(b<<2)+j>>2];d=J[J[f+1108>>2]+208>>2];if((d|0)<0){d=J[J[f+1112>>2]+208>>2]}e=b-1|0;if((d|0)>(i|0)){continue}break b}}i=J[J[l+1112>>2]+208>>2];while(1){b=e;f=J[(b<<2)+j>>2];d=J[J[f+1108>>2]+208>>2];if((d|0)<0){d=J[J[f+1112>>2]+208>>2]}e=b-1|0;if((d|0)>(i|0)){continue}break}}c:{if((b|0)<(g|0)){e=b;b=g;break c}J[k>>2]=f;J[J[a+12>>2]+(b<<2)>>2]=h;e=b-1|0;b=g+1|0}if((b|0)<=(e|0)){continue}break}if((e|0)>(m|0)){XF(a,m,e)}if((b|0)<(c|0)){continue}break}}function GF(a,b,c){var d=0,e=0,f=0,g=0,h=0,i=0,j=0,k=0,l=0;d=Ui-16|0;Ui=d;J[d+12>>2]=c;a:{if((b|0)<2){break a}k=b-2>>>1|0;g=c-a|0;if((k|0)>3){break a}f=g>>2;g=f+1|0;e=(g<<3)+a|0;J[d+8>>2]=e;h=f+2|0;b:{if((h|0)>=(b|0)){break b}f=e+8|0;j=J[f>>2];i=J[e+4>>2];l=J[f+4>>2];if((i|0)==(l|0)&j>>>0<=M[e>>2]|i>>>0>l>>>0){break b}J[d+8>>2]=f;e=f;g=h}f=J[e+4>>2];h=J[c+4>>2];if((f|0)==(h|0)&M[e>>2]>2]|f>>>0>>0){break a}c=J[d+12>>2];e=J[c+4>>2];J[d>>2]=J[c>>2];J[d+4>>2]=e;c:{while(1){e=J[d+8>>2];f=J[e+4>>2];c=J[d+12>>2];J[c>>2]=J[e>>2];J[c+4>>2]=f;c=J[d+8>>2];J[d+12>>2]=c;if((g|0)>(k|0)){break c}g=g<<1;f=g|1;c=(f<<3)+a|0;J[d+8>>2]=c;d:{e:{g=g+2|0;if((g|0)>=(b|0)){break e}e=c;h=J[c>>2];c=J[d+8>>2];j=J[e+4>>2];i=J[e+12>>2];if(!((j|0)==(i|0)&M[e+8>>2]>h>>>0|j>>>0>>0)){break e}c=c+8|0;J[d+8>>2]=c;break d}g=f}e=J[c+4>>2];f=J[d+4>>2];if((e|0)==(f|0)&M[c>>2]>=M[d>>2]|e>>>0>f>>>0){continue}break}c=J[d+12>>2]}a=J[d+4>>2];J[c>>2]=J[d>>2];J[c+4>>2]=a}Ui=d+16|0}function iR(a,b){var c=0,d=0,e=0,f=0;a:{b:{c:{d:{d=L[b+150>>1]&32767;if((d|0)!=32767){c=J[a+1036>>2];e=J[a+1040>>2];while(1){if(e-c>>2>>>0<=d>>>0){break a}f=d<<2;c=J[f+c>>2];e=J[c+136>>2];if((J[b+140>>2]&32767)!=(e>>>16|0)){break d}J[c+136>>2]=e&65535|L[b+138>>1]<<16;e=J[a+1040>>2];c=J[a+1036>>2];if(e-c>>2>>>0<=d>>>0){break a}d=J[J[c+f>>2]+148>>2]&32767;if((d|0)!=32767){continue}break}}d=J[b+136>>2]>>>16|0;if((d|0)!=32767){c=J[a+1040>>2];a=J[a+1036>>2];e=c-a>>2;if(e>>>0<=d>>>0){break a}f=J[a+(d<<2)>>2];c=J[f+148>>2];d=c>>>16&32767;if((d|0)!=32767){while(1){if(d>>>0>=e>>>0){break a}c=J[a+(d<<2)>>2];d=J[c+148>>2]&32767;if((d|0)!=32767){continue}break}a=J[c+148>>2];if((a&32767)!=32767){break c}J[c+148>>2]=L[b+150>>1]&32767|a&-32768;return}if((c&2147418112)!=2147418112){break b}J[f+148>>2]=J[b+148>>2]&2147418112|c&-2147418113}return}Z(5671,38296,1297,24140);B()}Z(85434,38296,1317,24140);B()}Z(85482,38296,1322,24140);B()}Z(145396,53895,487,84789);B()}function WB(a,b){var c=0,d=0,e=0,f=0,g=0,h=0,i=0;a:{b:{c:{d:{e:{f:{g:{e=L[b+34>>1];if((e|0)!=65535){i=a+161840|0;g=a+88112|0;c=J[a+163888>>2];while(1){if(c>>>0>=1024){break g}f=e<<16>>16;c=P(f,72)+g|0;if(L[c+34>>1]!=65535){break f}if(L[c+38>>1]){break e}h=P(I[c+32>>1],72)+g|0;if(L[h+34>>1]!=(e|0)){break d}d=J[c+64>>2];h:{if(!d){break h}if((f|0)>1]){f=J[a+181716>>2];if((f|0)==J[a+181720>>2]){break c}J[a+181716>>2]=f+4;J[f>>2]=d;break h}vj(J[a+163896>>2],d)}I[h+34>>1]=L[c+36>>1];i:{if(J[c+60>>2]!=-17){break i}c=I[c+32>>1];if((c|0)==-1){break i}c=P(c,72)+g|0;d=L[c+38>>1];if(!d){break b}I[c+38>>1]=d-1}d=J[a+163888>>2];c=d+1|0;J[a+163888>>2]=c;I[(d<<1)+i>>1]=e;e=L[b+34>>1];if((e|0)!=65535){continue}break}}if(L[b+38>>1]){break a}return}Z(88578,40201,410,57857);B()}Z(110540,40201,413,57857);B()}Z(112799,40201,414,57857);B()}Z(5408,40201,416,57857);B()}Z(112520,53895,557,53220);B()}Z(112042,40201,319,12185);B()}Z(112769,40201,446,48044);B()}function Qha(a){a=a|0;var b=0,c=0,d=0,e=0,f=0,g=0,h=0,i=0,j=0,k=0,l=0;b=Ui-480|0;Ui=b;k=pj(b+204|0,a,1,42133,2308);d=Aj(a,1,0);J[b+192>>2]=0;J[b+196>>2]=0;J[b+224>>2]=80831;f=b+224|0;qy(a,d,f,1,b+192|0);c=b- -64|0;ij(c,0,128);Oj(a,2,5);uj(a,2);rj(a,-1,62928);e=mk(a,-1);g=Yi;h=Xp(a,J[78228],e,g,82442);l=J[h>>2];h=J[h+4>>2];gj(a,-2);J[b+224>>2]=0;J[b+40>>2]=0;J[b+60>>2]=0;i=b+40|0;j=b+60|0;KQ(a,f,i,j);bQ(a,e,g,l,h,J[b+224>>2],J[b+40>>2],J[b+60>>2],c);gj(a,-2);g=J[J[pk(a)+80>>2]+8>>2];J[b+48>>2]=0;J[b+52>>2]=0;J[b+40>>2]=0;J[b+44>>2]=0;if(!Kq(c,J[59226],i)){J[b+60>>2]=0;e=J[b+40>>2];c=J[b+44>>2]-e|0;c=wq(J[78228],0,d,e,c,c,j);d=J[b+192>>2];e=J[b+196>>2];a:{if(c){J[b+32>>2]=tj(d,e);J[b+24>>2]=d;J[b+28>>2]=e;J[b+16>>2]=c;Gj(f,256,(c|0)==-3?31635:(c|0)==-15?31570:31677,b+16|0);J[b>>2]=f;a=fj(a,31902,b);break a}xv(g,d,e);Bk(a,d,e);a=1}b:{if(H[b+52|0]&1){break b}d=J[b+40>>2];if(!d){break b}cj(d)}oj(k);Ui=b+480|0;return a|0}Z(93093,42133,2346,25901);B()}function nia(a){a=a|0;var b=0,c=0,d=0;c=J[a>>2];b=ij(nj(348),0,348);J[b+52>>2]=0;J[b+56>>2]=0;J[b+48>>2]=-1;J[b+60>>2]=0;J[b+64>>2]=0;J[b+68>>2]=0;J[b+72>>2]=0;J[b+76>>2]=0;J[b+80>>2]=0;J[b+84>>2]=0;J[b+88>>2]=0;J[b+92>>2]=0;J[b+96>>2]=0;J[b+100>>2]=-1;ij(b+104|0,0,192);a:{b:{c:{d=J[a+16>>2];c=J[c+4>>2];c=c>>>0>d>>>0?d:c;if(c>>>0>=(J[b+8>>2]-J[b>>2]|0)/240>>>0){if(H[b+28|0]&1){break a}lj(c,8,b+16|0,b+24|0,b+20|0);if(H[b+12|0]&1){break a}lj(c,240,b,b+8|0,b+4|0);if(H[b+44|0]&1){break a}lj(c,4,b+32|0,b+40|0,b+36|0);d=J[b+32>>2];if(c>>>0>J[b+40>>2]-d>>2>>>0){break b}J[b+36>>2]=d+(c<<2);break c}Z(144726,54416,76,2284);B()}d:{if(!(H[b+132|0]&1)){lj(c,4,b+120|0,b+128|0,b+124|0);d=J[b+120>>2];if(c>>>0>J[b+128>>2]-d>>2>>>0){break d}J[b+124>>2]=d+(c<<2);ij(J[b>>2],0,P(c,240));J[b+336>>2]=0;J[b+312>>2]=0;J[b+304>>2]=0;J[b+296>>2]=0;J[b+300>>2]=0;FM(b+52|0,8);J[J[a+12>>2]>>2]=b;return 0}break a}}Z(144782,53895,514,59583);B()}Z(151729,53895,501,2284);B()}function exa(a){a=a|0;var b=0,c=0,d=0,e=0;a=J[79379];if(a){Zi[a|0]()}a=Ui-48|0;Ui=a;a:{b:{c:{if(J[218577]<=0){c=J[218582];if(!c){break c}vk(c);J[218582]=0;break c}c=J[218579];H[a+32|0]=1;J[a+8>>2]=0;J[a+12>>2]=0;b=J[c+24>>2];d=J[c+28>>2];J[a+24>>2]=0;J[a+28>>2]=0;J[a+16>>2]=0;J[a+20>>2]=0;J[a>>2]=b;J[a+4>>2]=d;Jk(0,a,0,0,0,0,0,a+32|0,16,0);J[218577]=0;if(J[c+32>>2]){xJ()}while(1){b=J[218578];J[218578]=b?b:1;if(b){continue}break}b=J[c+4>>2];d=J[c>>2];if((b|0)!=(d|0)){b=b-d>>2;e=b>>>0<=1?1:b;b=0;while(1){d=J[c>>2];if(J[c+4>>2]-d>>2>>>0<=b>>>0){break b}d=d+(b<<2)|0;sq(J[d>>2]);Ln(J[d>>2]);J[d>>2]=-1;b=b+1|0;if((e|0)!=(b|0)){continue}break}}b=J[c+16>>2];if((b|0)!=-1){Ln(b);J[c+16>>2]=-1}b=J[c+24>>2];d=J[c+28>>2];if(b|d){Eo(b,d)}d:{if(H[c+12|0]&1){break d}b=J[c>>2];if(!b){break d}cj(b)}cj(c);J[218579]=0;c=J[218582];if(c){vk(c);J[218582]=0}J[218578]=0}Ui=a+48|0;break a}Z(145396,54052,487,84789);B()}a=J[218810];if(a){hn(a);cj(J[218810])}J[218810]=0}function p5(a){a=a|0;var b=0,c=0,d=0,e=0,f=0,g=0,h=0;e=Ui-80|0;Ui=e;b=J[a+8>>2]-J[a+12>>2]>>4;Bj(a);f=qj(a,-1,J[84364],139081);gj(a,-2);a:{b:{if((b|0)==J[a+8>>2]-J[a+12>>2]>>4){d=wj(a,1);c:{if(d<4294967296&d>=0){b=~~d>>>0;break c}b=0}d=wj(a,2);d:{if(d<4294967296&d>=0){g=~~d>>>0;break d}g=0}c=b>>>0>7;d=wj(a,3);e:{if(d<4294967296&d>=0){h=~~d>>>0;break e}h=0}if(g>>>0>7|c|h>>>0>7){break b}c=e+40|0;J[c+24>>2]=h;J[c+28>>2]=0;J[c+16>>2]=g;J[c+20>>2]=0;J[c+8>>2]=b;J[c+12>>2]=0;J[c>>2]=15;b=J[f+4>>2];if((b|0)!=J[f+8>>2]){J[f+4>>2]=b+40;a=J[c+36>>2];J[b+32>>2]=J[c+32>>2];J[b+36>>2]=a;a=J[c+28>>2];J[b+24>>2]=J[c+24>>2];J[b+28>>2]=a;a=J[c+20>>2];J[b+16>>2]=J[c+16>>2];J[b+20>>2]=a;a=J[c+12>>2];J[b+8>>2]=J[c+8>>2];J[b+12>>2]=a;a=J[c+4>>2];J[b>>2]=J[c>>2];J[b+4>>2]=a;a=0;break a}J[e>>2]=(b-J[f>>2]|0)/40;a=fj(a,132935,e);break a}Z(143244,37616,478,51340);B()}J[e+28>>2]=h;J[e+24>>2]=g;J[e+20>>2]=b;J[e+16>>2]=35504;a=fj(a,142747,e+16|0)}Ui=e+80|0;return a|0}function Bt(a){var b=Q(0),c=0,d=0,e=Q(0);d=(C(a),v(2));c=d&2147483647;if(c>>>0>=1065353216){if((c|0)==1065353216){return(d|0)>=0?Q(0):Q(3.141592502593994)}return Q(Q(0)/Q(a-a))}a:{if(c>>>0<=1056964607){b=Q(1.570796251296997);if(c>>>0<847249409){break a}b=Q(a*a);return Q(Q(Q(Q(7.549789415861596e-8)-Q(a*Q(Q(b*Q(Q(b*Q(Q(b*Q(-.008656363002955914))+Q(-.04274342209100723)))+Q(.16666586697101593)))/Q(Q(b*Q(-.7066296339035034))+Q(1)))))-a)+Q(1.570796251296997))}if((d|0)<0){a=Q(Q(a+Q(1))*Q(.5));b=Q(Y(a));a=Q(Q(1.570796251296997)-Q(b+Q(Q(b*Q(Q(a*Q(Q(a*Q(Q(a*Q(-.008656363002955914))+Q(-.04274342209100723)))+Q(.16666586697101593)))/Q(Q(a*Q(-.7066296339035034))+Q(1))))+Q(-7.549789415861596e-8))));return Q(a+a)}a=Q(Q(Q(1)-a)*Q(.5));e=Q(Y(a));b=(x(2,(C(e),v(2))&-4096),D());a=Q(Q(Q(e*Q(Q(a*Q(Q(a*Q(Q(a*Q(-.008656363002955914))+Q(-.04274342209100723)))+Q(.16666586697101593)))/Q(Q(a*Q(-.7066296339035034))+Q(1))))+Q(Q(a-Q(b*b))/Q(e+b)))+b);b=Q(a+a)}return b}function Lw(a,b,c,d){var e=0,f=0,g=0,h=0;f=J[b+8>>2];a:{b:{while(1){c:{if((f|0)==5){g=J[b>>2];f=UA(a,g,c);d:{if(J[f+8>>2]){break d}e=J[g+8>>2];if(!e|K[e+6|0]&2){break d}e=Zo(e,1,J[J[a+16>>2]+192>>2]);if(e){break c}}b=J[d+4>>2];J[f>>2]=J[d>>2];J[f+4>>2]=b;b=J[d+8>>2];J[f+8>>2]=b;if(!(K[J[d>>2]+5|0]&3)|(b|0)<4){break a}b=K[g+5|0];if(!(b&4)){break a}a=J[a+16>>2];H[g+5|0]=b&251;J[g+24>>2]=J[a+40>>2];J[a+40>>2]=g;return}e=er(a,b,1);if(J[e+8>>2]){break c}Tw(a,b,5432)}f=J[e+8>>2];if((f|0)!=6){b=e;h=h+1|0;if((h|0)==100){break b}continue}break}f=J[e+4>>2];h=J[a+8>>2];J[h>>2]=J[e>>2];J[h+4>>2]=f;J[h+8>>2]=J[e+8>>2];f=J[b+4>>2];e=J[a+8>>2];J[e+16>>2]=J[b>>2];J[e+20>>2]=f;J[e+24>>2]=J[b+8>>2];b=J[c+4>>2];f=J[a+8>>2];J[f+32>>2]=J[c>>2];J[f+36>>2]=b;J[f+40>>2]=J[c+8>>2];b=J[d+4>>2];c=J[a+8>>2];J[c+48>>2]=J[d>>2];J[c+52>>2]=b;J[c+56>>2]=J[d+8>>2];e=J[a+8>>2];if((J[a+28>>2]-e|0)<=64){Ml(a,4);e=J[a+8>>2]}J[a+8>>2]=e- -64;$o(a,e,0);return}xl(a,67292,0)}}function Aqa(a,b,c,d){a=a|0;b=b|0;c=c|0;d=d|0;var e=Q(0),f=Q(0),g=Q(0),h=Q(0),i=Q(0),j=Q(0),k=Q(0),l=Q(0),m=Q(0),n=Q(0),o=Q(0),p=Q(0),q=Q(0),r=Q(0),s=Q(0),t=Q(0),u=Q(0),v=Q(0),w=Q(0),x=Q(0),y=Q(0),z=Q(0),A=Q(0);e=Q(Zi[J[J[a>>2]+44>>2]](a));y=N[b+48>>2];p=N[b+8>>2];q=N[b>>2];r=N[b+4>>2];z=N[b+52>>2];h=N[b+24>>2];i=N[b+16>>2];s=N[b+20>>2];j=N[b+56>>2];f=N[b+40>>2];g=N[a+60>>2];k=N[a+76>>2];l=N[b+32>>2];t=N[a+52>>2];u=N[a+68>>2];v=N[b+36>>2];w=N[a+56>>2];x=N[a+72>>2];J[c+12>>2]=0;m=j;j=Q(Q(k+g)*Q(.5));n=Q(Q(u+t)*Q(.5));o=Q(Q(x+w)*Q(.5));m=Q(m+Q(Q(f*j)+Q(Q(l*n)+Q(v*o))));A=Q(R(f));f=Q(e+Q(Q(k-g)*Q(.5)));g=Q(e+Q(Q(u-t)*Q(.5)));e=Q(e+Q(Q(x-w)*Q(.5)));k=Q(Q(A*f)+Q(Q(Q(R(l))*g)+Q(e*Q(R(v)))));N[c+8>>2]=m-k;l=Q(z+Q(Q(h*j)+Q(Q(i*n)+Q(o*s))));h=Q(Q(Q(R(h))*f)+Q(Q(Q(R(i))*g)+Q(e*Q(R(s)))));N[c+4>>2]=l-h;i=Q(y+Q(Q(p*j)+Q(Q(q*n)+Q(o*r))));e=Q(Q(Q(R(p))*f)+Q(Q(Q(R(q))*g)+Q(e*Q(R(r)))));N[c>>2]=i-e;J[d+12>>2]=0;N[d+8>>2]=k+m;N[d+4>>2]=h+l;N[d>>2]=e+i}function KU(a,b){var c=0,d=0,e=0,f=0,g=0;a:{if(!(K[a+102868|0]&2)){d=J[b+12>>2];g=K[b+61|0];e=J[b+8>>2];if(e){J[e+12>>2]=d}if(d){J[d+8>>2]=e}if(J[a+102956>>2]==(b|0)){J[a+102956>>2]=d}d=J[b+52>>2];e=J[b+48>>2];c=L[e+4>>1];if(!(c&2)){J[e+144>>2]=0;I[e+4>>1]=c|2}c=L[d+4>>1];if(!(c&2)){J[d+144>>2]=0;I[d+4>>1]=c|2}c=J[b+28>>2];f=J[b+24>>2];if(f){J[f+12>>2]=c}if(c){J[c+8>>2]=f}if(J[e+108>>2]==(b+16|0)){J[e+108>>2]=c}J[b+24>>2]=0;J[b+28>>2]=0;c=J[b+44>>2];f=J[b+40>>2];if(f){J[f+12>>2]=c}if(c){J[c+8>>2]=f}if(J[d+108>>2]==(b+32|0)){J[d+108>>2]=c}J[b+40>>2]=0;J[b+44>>2]=0;Zi[J[J[b>>2]+20>>2]](b)|0;c=J[b+4>>2]-1|0;if(c>>>0>=10){Z(62644,38073,166,3321);B()}Ir(a,b,J[(c<<2)+172728>>2]);b=J[a+102964>>2];if((b|0)<=0){break a}J[a+102964>>2]=b-1;b:{if(g){break b}b=J[d+112>>2];if(!b){break b}while(1){if((e|0)==J[b>>2]){a=J[b+4>>2];J[a+4>>2]=J[a+4>>2]|8}b=J[b+12>>2];if(b){continue}break}}return}Z(62630,42374,275,13042);B()}Z(111867,42374,347,13042);B()}function Gia(a){a=a|0;var b=0,c=0,d=0,e=0,f=0,g=0,h=0,i=0;d=J[a+80>>2];c=d+16|0;b=J[d+24>>2];if((b|0)==J[d+20>>2]){io(71329,11026,(b-J[c>>2]|0)/20|0);return-1e3}h=J[c>>2];i=J[c+4>>2]-h|0;b=(i|0)/20|0;a:{b:{c:{f=J[c+48>>2];d:{if((f|0)!=-1){e=J[c+16>>2];if(f>>>0>=J[c+20>>2]-e>>3>>>0){break a}f=(f<<3)+e|0;J[c+48>>2]=J[f+4>>2];g=b+1|0;break d}g=b+1|0;e=J[c+16>>2];if(g>>>0>J[c+24>>2]-e>>3>>>0){break c}J[c+20>>2]=(g<<3)+e;if((i|0)==-20){break a}f=(b<<3)+e|0}J[f>>2]=b;J[f+4>>2]=-1;if((J[c+8>>2]-h|0)/20>>>0>>0){break c}J[c+4>>2]=h+P(g,20);g=J[c+36>>2];c=J[c+32>>2];if(g-c>>2>>>0<=b>>>0){break a}b=c+(b<<2)|0;c=f-e>>3;J[b>>2]=c;break b}Z(144782,53895,514,59583);B()}b=J[d+32>>2];if(c>>>0>2]-b>>3>>>0){b=J[b+(c<<3)>>2];e=J[d+16>>2];if(b>>>0<(J[d+20>>2]-e|0)/20>>>0){d=J[a+76>>2];b=e+P(b,20)|0;J[b+4>>2]=0;J[b>>2]=d;N[b+12>>2]=N[d+12>>2];N[b+8>>2]=N[d+16>>2];N[b+16>>2]=N[d+20>>2];J[J[a+88>>2]>>2]=c;return 0}}}Z(145396,53895,487,84789);B()}function oda(a){a=a|0;var b=0,c=0,d=0,e=0,f=0,g=0,h=0,i=0,j=0;b=Ui-480|0;Ui=b;i=pj(b+204|0,a,0,42133,2492);e=mk(a,1);d=Yi;g=d;Xp(a,J[78228],e,d,80832);d=b+72|0;ij(d,0,128);J[b+68>>2]=0;J[b+64>>2]=0;J[b+60>>2]=0;Oj(a,2,5);uj(a,2);rj(a,-1,62928);c=mk(a,-1);h=Yi;f=Xp(a,J[78228],c,h,82442);j=J[f>>2];f=J[f+4>>2];gj(a,-2);KQ(a,b+68|0,b- -64|0,b+60|0);bQ(a,c,h,j,f,J[b+68>>2],J[b+64>>2],J[b+60>>2],d);gj(a,-2);J[b+48>>2]=0;J[b+52>>2]=0;J[b+40>>2]=0;J[b+44>>2]=0;if(!Kq(d,J[59226],b+40|0)){d=J[b+40>>2];d=VB(J[78228],e,g,d,J[b+44>>2]-d|0);c=J[b+96>>2];if(c){cj(c)}c=J[b+172>>2];if(c){cj(c)}c=J[b+148>>2];if(c){cj(c)}c=J[b+156>>2];if(c){cj(c)}c=J[b+140>>2];if(c){cj(c)}if(d){J[b+32>>2]=tj(e,g);J[b+24>>2]=e;J[b+28>>2]=g;J[b+16>>2]=d;e=b+224|0;Gj(e,256,(d|0)==-3?31635:(d|0)==-15?31570:31677,b+16|0);J[b>>2]=e;a=fj(a,31902,b)}else{a=0}a:{if(H[b+52|0]&1){break a}e=J[b+40>>2];if(!e){break a}cj(e)}oj(i);Ui=b+480|0;return a|0}Z(93093,42133,2519,25883);B()}function fo(a,b,c){var d=0,e=0,f=0,g=0,h=0;e=-1;if(!(!b|b&1)){a:{b:{if((b|0)==8){d=sj(c);break b}e=28;if(b&3|b>>>0<4){break a}d=b>>>2|0;if(d-1&d){break a}e=48;if(-64-b>>>0>>0){break a}d=16;b=b>>>0<=16?16:b;e=b>>>0<=16?16:b;c:{if(!(e-1&e)){b=e;break c}while(1){b=d;d=b<<1;if(b>>>0>>0){continue}break}}d:{if(-64-b>>>0<=c>>>0){J[245744]=48;d=0;break d}h=c>>>0<11?16:c+11&-8;f=sj((h+b|0)+12|0);d=0;if(!f){break d}c=f-8|0;e:{if(!(f&b-1)){b=c;break e}e=f-4|0;d=J[e>>2];g=b;b=((b+f|0)-1&0-b)-8|0;b=(b-c>>>0<=15?g:0)+b|0;g=b-c|0;f=(d&-8)-g|0;if(!(d&3)){c=J[c>>2];J[b+4>>2]=f;J[b>>2]=c+g;break e}J[b+4>>2]=f|J[b+4>>2]&1|2;d=b+f|0;J[d+4>>2]=J[d+4>>2]|1;J[e>>2]=g|J[e>>2]&1|2;d=c+g|0;J[d+4>>2]=J[d+4>>2]|1;Uy(c,g)}d=J[b+4>>2];f:{if(!(d&3)){break f}c=d&-8;if(c>>>0<=h+16>>>0){break f}J[b+4>>2]=h|d&1|2;e=b+h|0;d=c-h|0;J[e+4>>2]=d|3;c=b+c|0;J[c+4>>2]=J[c+4>>2]|1;Uy(e,d)}d=b+8|0}}e=48;if(!d){break a}J[a>>2]=d;e=0}e=(e|0)==28?-1:(e|0)==48?-2:0}return e}function dk(a,b,c,d,e){var f=0,g=0,h=0,i=0,j=0;g=Ui-112|0;Ui=g;J[g+108>>2]=0;a:{b:{c:{if(a){if(!c){break c}if(!d){break b}if(e){J[e>>2]=0}j=4;d:{if(L[c>>1]!=1){break d}f=g+56|0;J[f+16>>2]=0;J[f+20>>2]=0;J[f>>2]=0;J[f+4>>2]=0;J[f+40>>2]=0;J[f+32>>2]=0;J[f+48>>2]=0;H[f+44|0]=1;J[f+24>>2]=0;J[f+28>>2]=0;J[f+8>>2]=0;J[f+12>>2]=0;J[f+36>>2]=0;J[f+20>>2]=-1;XC(f,2048,2048);i=g+40|0;_R(i,f,c);h=g+28|0;J[h+8>>2]=a;J[h>>2]=a;J[h+4>>2]=a+b;j=fS(f,h,c);if(!j){bS(h);oE(f,h,c,i);i=J[f+40>>2]-J[f+32>>2]|0;J[g+24>>2]=0;fo(g+24|0,16,i);a=J[g+24>>2];if(!a){break a}b=0;J[f+40>>2]=a;J[f+32>>2]=a;H[f+44|0]=0;J[f+36>>2]=a+i;ij(a,0,i);a=g+8|0;_R(a,f,c);bS(h);j=oE(f,h,c,a);e:{if(!j){if(e){J[e>>2]=i}b=J[g+24>>2];break e}cj(J[g+24>>2])}J[d>>2]=b}if(H[f+28|0]&1){break d}a=J[f+8>>2];if(a){cj(a)}a=J[f>>2];if(!a){break d}cj(a)}Ui=g+112|0;return j}Z(34859,41181,163,68550);B()}Z(81610,41181,164,68550);B()}Z(68368,41181,165,68550);B()}Z(34720,41181,190,68550);B()}function qS(a,b,c,d,e,f){var g=0,h=0,i=0,j=0,k=0,l=0;j=3;a:{b:{c:{d:{e:{if(a+1>>>0<2){break e}g=a&65535;h=J[216330];if(g>>>0>=M[h+8>>2]){break d}i=J[J[h>>2]+(g<<2)>>2];if(!i|L[J[h+4>>2]+(g<<1)>>1]!=(a>>>16|0)){break e}j=10;if(!e){break e}h=J[i+12>>2];l=J[i+8>>2];f:{if((h|0)==(l|0)){g=0;break f}a=h-l>>2;k=a>>>0<=1?1:a;a=0;while(1){g=J[(a<<2)+l>>2];if(J[g>>2]==(b|0)&J[g+4>>2]==(c|0)){break f}a=a+1|0;if((k|0)!=(a|0)){continue}break}g=0}if(f>>>0>=9){break c}k=P(J[(f<<2)+173920>>2],e);g:{if(g){if(K[g+9|0]!=(e|0)|K[g+8|0]!=(f|0)){break e}hj(J[g+12>>2],d,k);break g}g=i+12|0;j=J[i+16>>2];if((j|0)==(h|0)){if(H[i+20|0]&1){break b}lj((h-l>>2)+2|0,4,i+8|0,i+16|0,g);j=J[i+16>>2];h=J[g>>2]}a=sj(16);H[a+9|0]=e;J[a>>2]=b;J[a+4>>2]=c;H[a+8|0]=f;b=sj(k);J[a+12>>2]=b;hj(b,d,k);if((h|0)==(j|0)){break a}J[g>>2]=h+4;J[h>>2]=a}j=0}return j}Z(2686,54230,244,5438);B()}Z(152787,40052,154,64561);B()}Z(151729,54052,501,2284);B()}Z(112520,54052,557,53220);B()}function WF(a,b,c){var d=0,e=0,f=0,g=0,h=0,i=0,j=0,k=0,l=0,m=0,n=0;while(1){m=b;l=J[J[a+12>>2]+((b+c|0)/2<<2)>>2];e=c;while(1){j=J[a+12>>2];i=J[J[l+20>>2]+208>>2];f=(i|0)<0;a:{if(!f){while(1){g=b;k=(b<<2)+j|0;h=J[k>>2];d=J[J[h+20>>2]+208>>2];if((d|0)<0){d=J[J[h+24>>2]+208>>2]}b=g+1|0;if((d|0)<(i|0)){continue}break a}}n=J[J[l+24>>2]+208>>2];while(1){g=b;k=(b<<2)+j|0;h=J[k>>2];d=J[J[h+20>>2]+208>>2];if((d|0)<0){d=J[J[h+24>>2]+208>>2]}b=g+1|0;if((d|0)<(n|0)){continue}break}}b:{if(!f){while(1){b=e;f=J[(b<<2)+j>>2];d=J[J[f+20>>2]+208>>2];if((d|0)<0){d=J[J[f+24>>2]+208>>2]}e=b-1|0;if((d|0)>(i|0)){continue}break b}}i=J[J[l+24>>2]+208>>2];while(1){b=e;f=J[(b<<2)+j>>2];d=J[J[f+20>>2]+208>>2];if((d|0)<0){d=J[J[f+24>>2]+208>>2]}e=b-1|0;if((d|0)>(i|0)){continue}break}}c:{if((b|0)<(g|0)){e=b;b=g;break c}J[k>>2]=f;J[J[a+12>>2]+(b<<2)>>2]=h;e=b-1|0;b=g+1|0}if((b|0)<=(e|0)){continue}break}if((e|0)>(m|0)){WF(a,m,e)}if((b|0)<(c|0)){continue}break}}function GI(a){var b=0,c=0,d=0,e=0,f=0,g=0,h=0,i=0,j=0,k=0,l=0;A(+a);d=v(1)|0;e=v(0)|0;h=d>>>16|0;g=d-1072562176|0;if((g|0)==198911|g>>>0<198911){if(!e&(d|0)==1072693248){return 0}b=a+-1;a=b*134217728;k=b+a-a;i=O[25549];j=k*k*i;a=b+j;c=b*b;f=b*c;return a+(f*(f*(f*(f*O[25559]+(c*O[25558]+(b*O[25557]+O[25556])))+(c*O[25555]+(b*O[25554]+O[25553])))+(c*O[25552]+(b*O[25551]+O[25550])))+((b-k)*i*(b+k)+(j+(b-a))))}a:{if(h-32752>>>0<=4294934559){if(a==0){e=Ui-16|0;O[e+8>>3]=-1;return O[e+8>>3]/0}if(!e&(d|0)==2146435072){break a}if(!((h&32752)!=32752&h>>>0<=32767)){a=a-a;return a/a}A(+(a*4503599627370496));d=v(1)|0;e=v(0)|0;d=d-54525952|0}l=d-1072037888|0;i=+(l>>20);g=(l>>>13&127)<<4;j=i*O[25542]+O[g+204488>>3];a=O[g+204480>>3];h=0;x(0,e-h|0);x(1,d-((l&-1048576)+(e>>>0>>0)|0)|0);c=a*(+z()-O[g+206528>>3]-O[g+206536>>3]);a=j+c;f=c*c;a=a+(c*f*(f*(c*O[25548]+O[25547])+(c*O[25546]+O[25545]))+(f*O[25544]+(i*O[25543]+(c+(j-a)))))}return a}function VB(a,b,c,d,e){var f=0,g=0,h=0,i=0,j=0,k=0;f=Ui-80|0;Ui=f;J[f+76>>2]=0;k=J[a+6164>>2];Tj(k);a:{if(d){i=-3;h=J[a>>2];g=J[h+4>>2];b:{if(!g){break b}g=J[J[h>>2]+(mxa(b,c,g)<<2)>>2];if((g|0)==-1){break b}h=J[h+8>>2];while(1){g=h+P(g,56)|0;if(J[g>>2]!=(b|0)|J[g+4>>2]!=(c|0)){g=J[g+48>>2];if((g|0)!=-1){continue}break b}break}h=J[g+28>>2];i=J[h+32>>2];if(!i){i=-15;break b}if(!e){break a}J[f+24>>2]=a;J[f+64>>2]=h;j=J[h+12>>2];J[f+56>>2]=0;J[f+28>>2]=j;j=g+8|0;J[f+60>>2]=j;J[f+48>>2]=e;J[f+44>>2]=d;J[f+40>>2]=0;J[f+32>>2]=b;J[f+36>>2]=c;i=Zi[i|0](f+24|0)|0;if(i){break b}d=J[a+12>>2];if(!d){i=0;break b}i=0;e=J[d>>2];if((e|0)==J[d+4>>2]){break b}g=0;while(1){d=(g<<3)+e|0;e=J[d+4>>2];J[f+20>>2]=h;J[f+16>>2]=j;J[f>>2]=e;J[f+8>>2]=b;J[f+12>>2]=c;J[f+4>>2]=0;Zi[J[d>>2]](f);d=J[a+12>>2];e=J[d>>2];g=g+1|0;if(g>>>0>2]-e>>3>>>0){continue}break}}Lj(k);Ui=f+80|0;return i}Z(83428,42212,1231,69827);B()}Z(112277,42212,1243,69827);B()}function Tca(a){a=a|0;var b=0,c=0,d=0,e=0,f=0,g=0,h=0,i=0,j=0,k=0,l=Q(0),m=0,n=0,o=0;f=Ui-16|0;Ui=f;n=J[a+8>>2]-J[a+12>>2]>>4;h=mk(a,1);i=Yi;l=Q(wj(a,2));c=-13;d=J[245446];g=J[d+16>>2];if(g){Tj(g);d=J[245446]}b=J[d+80>>2];a:{if(!b){break a}b=J[J[d+76>>2]+(mxa(h,i,b)<<2)>>2];if((b|0)==-1){break a}e=J[d+84>>2];while(1){j=e+(b<<4)|0;b=j;if(J[b>>2]!=(h|0)|J[b+4>>2]!=(i|0)){b=J[b+12>>2];if((b|0)!=-1){continue}break a}break}b=J[d+24>>2];e=J[d+20>>2];b:{c:{if((b|0)==(e|0)){b=(P(J[j+8>>2],1056)+d|0)+120|0;break c}k=b-e>>6;o=k>>>0<=1?1:k;b=0;m=1;while(1){d:{c=e+(b<<6)|0;if(!((h|0)!=J[c+8>>2]|J[c+12>>2]!=(i|0)|!(K[c+60|0]&4|J[c+44>>2]))){if(N[c+16>>2]!=Q(0)){break d}}b=b+1|0;m=k>>>0>b>>>0;if((b|0)!=(o|0)){continue}}break}b=(P(J[j+8>>2],1056)+d|0)+120|0;if(m){break b}}N[b+4>>2]=l;J[b>>2]=0}N[b+8>>2]=l;c=0}if(g){Lj(g)}if(c){J[f>>2]=c;dj(3,88458,140916,f)}if(J[a+8>>2]-J[a+12>>2]>>4!=(n|0)){Z(143244,42276,291,47910);B()}Ui=f+16|0;return 0}function MQ(a,b){var c=0,d=0,e=0,f=0,g=0,h=0;c=Ui-32|0;Ui=c;a:{b:{c:{if(a){f=J[a+4>>2];if(rE(f,c+28|0)){break b}e=Fq();if(J[c+28>>2]){a=0;while(1){if(qE(f,a,c+16|0)){break b}if(nt(f,J[c+16>>2],J[c+20>>2],c+12|0,c+8|0)){break b}d=J[c+16>>2];g=J[c+20>>2];h=J[c+12>>2];if((h&-5)==3){J[c>>2]=tj(d,g);dj(4,88458,127751,c);ll(e);break b}Vp(e,d,g,J[c+8>>2],h>>>0<9?J[(h<<2)+160116>>2]:0,0);a=a+1|0;if(a>>>0>2]){continue}break}}a=Ty(f);J[b>>2]=Zi[J[79405]](J[77192],e,a);ll(e);if(!J[c+28>>2]){d=1;break a}a=0;while(1){J[c+16>>2]=0;e=f&65535;d=J[216330];if(e>>>0>=M[d+8>>2]){Z(2686,54230,244,5438);B()}J[c+16>>2]=J[(J[(L[J[d+4>>2]+(e<<1)>>1]==(f>>>16|0)?J[J[d>>2]+(e<<2)>>2]:0)+4>>2]+(a<<4)|0)+8>>2];d=L[c+16>>1];e=J[b>>2];g=L[e+200>>1];if(g>>>0>a>>>0){I[(e+P(a,24)|0)+12>>1]=d}if(a>>>0>=g>>>0){break c}d=1;a=a+1|0;if(a>>>0>2]){continue}break}break a}Z(69738,40956,90,46631);B()}Z(109279,40956,134,46631);B()}d=0}Ui=c+32|0;return d}function kY(a){a=a|0;var b=0,c=0,d=0,e=0;c=Ui-80|0;Ui=c;a:{if((kj(a,1)|0)<=0){b=Kr(0);e=Yi;break a}Oj(a,1,5);gj(a,1);rj(a,-1,82391);if(kk(a,-1)){b=sl(a,-1)}gj(a,-2);J[c+36>>2]=b;rj(a,-1,47757);if(kk(a,-1)){b=sl(a,-1)}else{b=0}gj(a,-2);J[c+40>>2]=b;rj(a,-1,31905);if(kk(a,-1)){b=sl(a,-1)}else{b=12}gj(a,-2);J[c+44>>2]=b;rj(a,-1,4188);b:{if(kk(a,-1)){b=sl(a,-1);gj(a,-2);break b}J[c+32>>2]=4188;b=fj(a,67464,c+32|0)}J[c+48>>2]=b;rj(a,-1,52705);c:{if(kk(a,-1)){b=sl(a,-1);gj(a,-2);break c}J[c+16>>2]=52705;b=fj(a,67464,c+16|0)}J[c+52>>2]=b-1;rj(a,-1,36147);d:{if(kk(a,-1)){b=sl(a,-1);gj(a,-2);break d}J[c>>2]=36147;b=fj(a,67464,c)}J[c+56>>2]=b-1900;b=-1;rj(a,-1,10056);if(kj(a,-1)){b=ck(a,-1)}gj(a,-2);J[c+68>>2]=b;cx();d=ub(c+36|0)|0;b=Vi;e=b;if((b&d)==-1){J[245744]=61}b=d}e:{if((b&e)==-1){b=J[a+8>>2];J[b+8>>2]=0;J[a+8>>2]=b+16;break e}d=J[a+8>>2];J[d+8>>2]=3;O[d>>3]=+(b>>>0)+ +(e|0)*4294967296;J[a+8>>2]=J[a+8>>2]+16}Ui=c+80|0;return 1}function T5(a){a=a|0;var b=0,c=0,d=0,e=0,f=0,g=0,h=0;d=Ui-80|0;Ui=d;f=pj(d+60|0,a,0,37616,2842);e=J[a+8>>2]-J[a+12>>2]|0;Bj(a);c=qj(a,-1,J[84364],139081);gj(a,-2);if(e>>4==J[a+8>>2]-J[a+12>>2]>>4){a:{if(!kp(J[J[c+304>>2]+2480>>2],2)){a=Jj(f,121292,0);break a}e=Ej(a,1);g=Ej(a,2);h=Ej(a,3);if((kj(a,4)|0)==5){Oj(a,4,5);uj(a,4);rj(a,-1,18434);if(kj(a,-1)){b=J[qj(a,-1,J[84365],137401)>>2]}else{b=0}gj(a,-2);gj(a,-2)}a=d+16|0;J[a+32>>2]=b;J[a+36>>2]=0;J[a+24>>2]=h;J[a+28>>2]=h>>31;J[a+16>>2]=g;J[a+20>>2]=g>>31;J[a+8>>2]=e;J[a+12>>2]=e>>31;J[a>>2]=25;b=J[c+4>>2];if((b|0)!=J[c+8>>2]){J[c+4>>2]=b+40;c=J[a+36>>2];J[b+32>>2]=J[a+32>>2];J[b+36>>2]=c;c=J[a+28>>2];J[b+24>>2]=J[a+24>>2];J[b+28>>2]=c;c=J[a+20>>2];J[b+16>>2]=J[a+16>>2];J[b+20>>2]=c;c=J[a+12>>2];J[b+8>>2]=J[a+8>>2];J[b+12>>2]=c;c=J[a+4>>2];J[b>>2]=J[a>>2];J[b+4>>2]=c;a=0;break a}J[d>>2]=(b-J[c>>2]|0)/40;a=Jj(f,132935,d)}oj(f);Ui=d+80|0;return a|0}Z(143244,37616,478,51340);B()}function Jra(a,b){a=a|0;b=b|0;var c=0,d=0,e=0,f=0,g=0,h=0,i=0,j=0,k=0;if(!(K[b+204|0]&3|H[b+496|0]&1)){GE(b,a+220|0)}if(J[b+192>>2]){a:{if(!(H[b+204|0]&1)){c=J[a+204>>2];b:{if((c|0)!=J[a+208>>2]){break b}h=c?c<<1:1;if((h|0)<=(c|0)){break b}if(h){f=Yj(h<<2);c=J[a+204>>2]}c:{if((c|0)<=0){break c}if(c>>>0>=4){i=c&2147483644;while(1){d=e<<2;J[d+f>>2]=J[d+J[a+212>>2]>>2];g=d|4;J[g+f>>2]=J[g+J[a+212>>2]>>2];g=d|8;J[g+f>>2]=J[g+J[a+212>>2]>>2];d=d|12;J[d+f>>2]=J[d+J[a+212>>2]>>2];e=e+4|0;j=j+4|0;if((i|0)!=(j|0)){continue}break}}d=c&3;if(!d){break c}while(1){i=e<<2;J[i+f>>2]=J[i+J[a+212>>2]>>2];e=e+1|0;k=k+1|0;if((d|0)!=(k|0)){continue}break}}e=J[a+212>>2];if(!(!e|K[a+216|0]!=1)){if(e){J[83765]=J[83765]+1;Zi[J[61751]](J[e-4>>2])}c=J[a+204>>2]}J[a+212>>2]=f;H[a+216|0]=1;J[a+208>>2]=h}J[J[a+212>>2]+(c<<2)>>2]=b;J[a+204>>2]=c+1;break a}if((J[b+216>>2]&-2)!=4){J[b+216>>2]=2}}c=b;b=J[b+204>>2]&3;Zi[J[J[a>>2]+32>>2]](a,c,b?2:1,b?-3:-1)}}function H8(a){a=a|0;var b=0,c=Q(0),d=0,e=0,f=0,g=0,h=0,i=0,j=0;e=Ui-32|0;Ui=e;h=pj(e+12|0,a,0,37682,4428);Bj(a);b=qj(a,-1,J[219396],139183);gj(a,-2);Qj(a,1,e+8|0);a:{if(dy(b,J[e+8>>2])){i=Jj(h,65029,0);break a}g=J[e+8>>2];c=Q(wj(a,2));b:{c:{d:{d=g&65535;a=J[b+32>>2];if(d>>>0<(J[b+36>>2]-a|0)/672>>>0){a=a+P(d,672)|0;if(L[a+648>>1]!=(g>>>16|0)){break d}if((d|0)!=L[a+650>>1]){break c}c=cQ(1)?Q(1):c;N[a+544>>2]=c;e:{if(!(J[a+536>>2]|J[a+540>>2])){break e}f=J[b+52>>2];d=J[b+48>>2];if((f|0)==(d|0)){break e}j=a+544|0;a=(f-d|0)/72|0;f=a>>>0<=1?1:a;b=0;while(1){a=d+P(b,72)|0;if(!(J[a>>2]==(g|0)&(j|0)==J[a+4>>2])){b=b+1|0;if((f|0)!=(b|0)){continue}break e}break}f:{g:{switch(J[a+52>>2]-1|0){case 0:case 3:c=Q(Q(1)-c);break f;case 1:case 4:break g;default:break f}}c=Q(c*Q(.5))}N[a+20>>2]=c*N[a+24>>2]}break b}Z(145396,53895,487,84789);B()}Z(47372,40876,188,69601);B()}Z(5388,40876,189,69601);B()}}oj(h);Ui=e+32|0;return i|0}function eF(a){var b=0,c=0,d=0,e=0,f=0,g=0,h=0,i=0,j=0,k=0,l=0;A(+a);f=v(1)|0;i=v(0)|0;g=f&2147483647;d=g;if(d>>>0>=1141899264){A(1.5707963267948966);d=v(1)|0;f=v(0)|0;A(+a);b=v(1)|0;v(0)|0;x(0,f|0);x(1,d&2147483647|b&-2147483648);b=g;return j=a,k=+z(),l=(b|0)==2146435072&(i|0)!=0|b>>>0>2146435072,l?j:k}a:{b:{if(d>>>0<=1071382527){b=-1;if(d>>>0>=1044381696){break b}break a}a=R(a);if(d>>>0<=1072889855){if(d>>>0<=1072037887){a=(a+a+-1)/(a+2);b=0;break b}a=(a+-1)/(a+1);b=1;break b}if(d>>>0<=1073971199){a=(a+-1.5)/(a*1.5+1);b=2;break b}a=-1/a;b=3}e=a*a;c=e*e;h=c*(c*(c*(c*(c*-.036531572744216916+-.058335701337905735)+-.0769187620504483)+-.11111110405462356)+-.19999999999876483);e=e*(c*(c*(c*(c*(c*.016285820115365782+.049768779946159324)+.06661073137387531)+.09090887133436507)+.14285714272503466)+.3333333333333293);if(d>>>0<=1071382527){return a-a*(h+e)}b=b<<3;a=O[b+198432>>3]-(a*(h+e)-O[b+198464>>3]-a);a=(f|0)<0?-a:a}return a}function Eoa(a,b,c){a=a|0;b=b|0;c=c|0;var d=0,e=0,f=0,g=0,h=0,i=0,j=0;g=Ui-16|0;Ui=g;e=J[a+12>>2];h=J[a+16>>2];a:{if((e|0)>=(h|0)){break a}f=e+1|0;J[a+12>>2]=f;i=J[a+8>>2];d=H[i+e|0];if((d|0)!=13){e=f;break a}while(1){if((f|0)==(h|0)){e=h;d=0;break a}e=f+1|0;J[a+12>>2]=e;d=f+i|0;f=e;d=H[d|0];if((d|0)==13){continue}break}}b:{if((d|0)!=95){f=d-48>>>0<10|(d|32)-97>>>0<26}else{f=1}if(f){h=((c|0)<=1?1:c)-1|0;while(1){H[b+j|0]=d;if((h|0)==(j|0)){break b}c=J[a+12>>2];f=J[a+16>>2];c:{if((c|0)>=(f|0)){e=c;d=0;break c}e=c+1|0;J[a+12>>2]=e;i=J[a+8>>2];d=H[i+c|0];if((d|0)!=13){break c}while(1){if((e|0)==(f|0)){e=f;d=0;break c}c=e+1|0;J[a+12>>2]=c;d=e+i|0;e=c;d=H[d|0];if((d|0)==13){continue}break}}j=j+1|0;c=d-48>>>0<10|(d|32)-97>>>0<26;if(c|(d|0)==95){continue}break}}if(!(!d|(e|0)<=0)){c=e-1|0;J[a+12>>2]=c;H[c+J[a+8>>2]|0]=d}H[b+j|0]=0;Ui=g+16|0;return}b=J[a+20>>2];J[g+4>>2]=J[a+692>>2];J[g>>2]=b;dj(3,99340,79863,g);ir(a+24|0,-2);B()}function osa(a,b,c){a=a|0;b=b|0;c=c|0;var d=0,e=0,f=0,g=0,h=0,i=0;Jv(a,b,c);N[b+28>>2]=N[a+28>>2];N[b+32>>2]=N[a+32>>2];N[b+36>>2]=N[a+36>>2];N[b+40>>2]=N[a+40>>2];N[b+12>>2]=N[a+12>>2];N[b+16>>2]=N[a+16>>2];N[b+20>>2]=N[a+20>>2];N[b+24>>2]=N[a+24>>2];N[b+44>>2]=N[a+44>>2];d=J[a+92>>2];J[b+60>>2]=d;a:{if(d){e=Zi[J[J[c>>2]+28>>2]](c,J[a+100>>2])|0;J[b+56>>2]=0;J[b+52>>2]=e;g=Zi[J[J[c>>2]+16>>2]](c,16,d)|0;e=J[a+100>>2];b:{if((d|0)<=0){break b}b=J[g+8>>2];if((d|0)!=1){i=d&2147483646;while(1){a=e+(f<<4)|0;N[b>>2]=N[a>>2];N[b+4>>2]=N[a+4>>2];N[b+8>>2]=N[a+8>>2];N[b+12>>2]=N[a+12>>2];N[b+16>>2]=N[a+16>>2];N[b+20>>2]=N[a+20>>2];N[b+24>>2]=N[a+24>>2];N[b+28>>2]=N[a+28>>2];b=b+32|0;f=f+2|0;h=h+2|0;if((i|0)!=(h|0)){continue}break}}if(!(d&1)){break b}a=e+(f<<4)|0;N[b>>2]=N[a>>2];N[b+4>>2]=N[a+4>>2];N[b+8>>2]=N[a+8>>2];N[b+12>>2]=N[a+12>>2]}Zi[J[J[c>>2]+20>>2]](c,g,83519,1497453121,e);break a}J[b+52>>2]=0;J[b+56>>2]=0}return 83735}function Oda(a){a=a|0;var b=0,c=0,d=0,e=0,f=0,g=0,h=0,i=0,j=0,k=0;b=Ui-32|0;Ui=b;e=J[a+32>>2];J[b+28>>2]=0;a:{b:{if(e){c=J[e>>2];J[b+28>>2]=c;if(c){break b}}f=-13;c=J[a+20>>2];d=J[c>>2];if(dk(c+4|0,d,J[60374],b+28|0,0)){break a}c=(c+d|0)+4|0;d=J[b+28>>2];J[d+24>>2]=c;J[d+28>>2]=0;i=1}j=J[a+4>>2];g=J[J[a+36>>2]+8>>2];d=g;c=J[d>>2];d=J[d+4>>2];f=d;J[b+16>>2]=c;J[b+20>>2]=d;h=J[b+28>>2];k=J[h+24>>2];d=nj(132);ij(d+12|0,0,120);J[d+8>>2]=k;J[d+4>>2]=h;J[d>>2]=0;I[b+12>>1]=0;J[b+8>>2]=0;if(e){I[b+12>>1]=L[e+8>>1];J[b+8>>2]=L[e+4>>1]|L[e+6>>1]<<16}if(Zi[J[79470]](c,f)&1){while(1){vp(250);if(Zi[J[79470]](c,f)&1){continue}break}}e=J[a+16>>2];I[b+4>>1]=L[b+12>>1];J[b>>2]=J[b+8>>2];f=TQ(e,j,d,b,c,f,b+16|0);e=J[b+20>>2];c=J[b+16>>2];J[g>>2]=c;J[g+4>>2]=e;if(Zi[J[79470]](c,e)&1){while(1){vp(250);if(Zi[J[79470]](c,e)&1){continue}break}}sQ(d);if(i){Uj(J[b+28>>2])}if(f){break a}J[J[a+36>>2]+16>>2]=Zi[J[79459]](c,e)}Ui=b+32|0;return f|0}function Eo(a,b){var c=0,d=0,e=0,f=0,g=0,h=0,i=0;while(1){c=J[218661];J[218661]=c?c:1;if(c){continue}break}a:{d=J[218660];c=J[d+4>>2];b:{if(!c){break b}c=J[J[d>>2]+(mxa(a,b,c)<<2)>>2];if((c|0)==-1){break b}e=J[d+8>>2];while(1){f=e+(c<<6)|0;c=f;if((a|0)==J[c>>2]&(b|0)==J[c+4>>2]){break a}c=J[c+56>>2];if((c|0)!=-1){continue}break}}J[218661]=0;return}a=J[f+16>>2];g=J[f+20>>2];b=0;c:{c=J[d+4>>2];if(c){d:{e:{f:{g:{h:{h=J[d>>2]+(mxa(a,g,c)<<2)|0;e=J[h>>2];if((e|0)!=-1){i=J[d+8>>2];c=i+(e<<6)|0;if((a|0)!=J[c>>2]|(g|0)!=J[c+4>>2]){break h}break g}Z(85666,55689,340,62656);B()}while(1){e=J[c+56>>2];if((e|0)==-1){break f}b=c;c=i+(e<<6)|0;if((a|0)!=J[c>>2]|J[c+4>>2]!=(g|0)){continue}break}}J[d+24>>2]=J[d+24>>2]-1;a=J[c+56>>2];if(b){break e}J[h>>2]=a;break d}Z(152754,55689,366,62656);B()}J[b+56>>2]=a}a=J[d+20>>2];J[d+20>>2]=e;J[c+56>>2]=a;break c}Z(113800,55689,334,62656);B()}a=J[f+8>>2]-1|0;J[f+8>>2]=a;J[218661]=0;if(!a){Yu(f+8|0)}}function ZZ(a){a=a|0;var b=0,c=0,d=0,e=0,f=0,g=0,h=0,i=0,j=0,k=0,l=0,m=0,n=0;b=wj(a,1);A(+b);c=v(1)|0;e=v(0)|0;a:{b:{c:{d:{if((c|0)<1048575|(c|0)<=1048575){d=-1/(b*b);if(b==0){break a}if((c|0)>0|(c|0)>=0){break d}d=(b-b)/0;break a}if(c>>>0>2146435071){break b}k=-1023;if((c|0)!=1072693248){break c}c=1072693248;if(e){break c}d=0;break a}k=-1077;A(+(b*0x40000000000000));c=v(1)|0;e=v(0)|0}c=c+614242|0;l=+((c>>>20|0)+k|0);f=l*.30102999566361177;x(0,e|0);x(1,(c&1048575)+1072079006|0);d=+z()+-1;g=d*(d*.5);h=d/(d+2);i=h*h;b=i*i;A(+(d-g));c=v(1)|0;v(0)|0;x(0,0);x(1,c|0);j=+z();m=j*.4342944818781689;n=f+m;b=h*(g+(b*(b*(b*.15313837699209373+.22222198432149784)+.3999999999940942)+i*(b*(b*(b*.14798198605116586+.1818357216161805)+.2857142874366239)+.6666666666666735)))+(d-j-g);b=n+(m+(f-n)+(b*.4342944818781689+(l*3694239077158931e-28+(b+j)*25082946711645275e-27)))}d=b}c=J[a+8>>2];J[c+8>>2]=3;O[c>>3]=d;J[a+8>>2]=J[a+8>>2]+16;return 1}function Xpa(a,b,c,d,e){a=a|0;b=b|0;c=c|0;d=d|0;e=e|0;var f=Q(0),g=Q(0),h=Q(0),i=Q(0),j=Q(0),k=Q(0),l=Q(0),m=Q(0),n=Q(0);d=Ui-32|0;Ui=d;a=J[a+12>>2];a:{if(!a){break a}J[e+4>>2]=a;l=N[c+60>>2];g=Q(N[b+60>>2]-l);m=N[c+52>>2];k=Q(N[b+52>>2]-m);n=N[c+56>>2];h=Q(N[b+56>>2]-n);f=Q(Y(Q(Q(g*g)+Q(Q(k*k)+Q(h*h)))));b=J[b+192>>2];i=Q(N[b+28>>2]*N[b+12>>2]);b=J[c+192>>2];j=Q(N[b+28>>2]*N[b+12>>2]);i=Q(i+j);if(f>i){if(!J[a+1116>>2]){break a}b=a;a=J[a+1108>>2]==J[e+136>>2];Qq(b,(a?8:72)+e|0,(a?72:8)+e|0);break a}J[d+24>>2]=0;J[d+28>>2]=0;J[d+16>>2]=1065353216;J[d+20>>2]=0;i=Q(f-i);b:{if(!(f>Q(1.1920928955078125e-7))){f=Q(1);g=Q(0);h=Q(0);break b}f=Q(Q(1)/f);g=Q(g*f);N[d+24>>2]=g;h=Q(h*f);N[d+20>>2]=h;f=Q(k*f);N[d+16>>2]=f}J[d+12>>2]=0;N[d+8>>2]=l+Q(j*g);N[d+4>>2]=n+Q(j*h);N[d>>2]=m+Q(j*f);Zi[J[J[e>>2]+16>>2]](e,d+16|0,d,i);a=J[e+4>>2];if(!J[a+1116>>2]){break a}b=a;a=J[a+1108>>2]==J[e+136>>2];Qq(b,(a?8:72)+e|0,(a?72:8)+e|0)}Ui=d+32|0}function SI(a){var b=0,c=0,d=0;d=a+148|0;while(1){c=(b<<2)+d|0;I[c>>1]=0;I[c+4>>1]=0;b=b+2|0;if((b|0)!=286){continue}break}I[a+2756>>1]=0;I[a+2752>>1]=0;I[a+2748>>1]=0;I[a+2744>>1]=0;I[a+2740>>1]=0;I[a+2736>>1]=0;I[a+2732>>1]=0;I[a+2728>>1]=0;I[a+2724>>1]=0;I[a+2720>>1]=0;I[a+2716>>1]=0;I[a+2712>>1]=0;I[a+2708>>1]=0;I[a+2704>>1]=0;I[a+2700>>1]=0;I[a+2696>>1]=0;I[a+2692>>1]=0;I[a+2688>>1]=0;I[a+2684>>1]=0;I[a+2556>>1]=0;I[a+2552>>1]=0;I[a+2548>>1]=0;I[a+2544>>1]=0;I[a+2540>>1]=0;I[a+2536>>1]=0;I[a+2532>>1]=0;I[a+2528>>1]=0;I[a+2524>>1]=0;I[a+2520>>1]=0;I[a+2516>>1]=0;I[a+2512>>1]=0;I[a+2508>>1]=0;I[a+2504>>1]=0;I[a+2500>>1]=0;I[a+2496>>1]=0;I[a+2492>>1]=0;I[a+2488>>1]=0;I[a+2484>>1]=0;I[a+2480>>1]=0;I[a+2476>>1]=0;I[a+2472>>1]=0;I[a+2468>>1]=0;I[a+2464>>1]=0;I[a+2460>>1]=0;I[a+2456>>1]=0;I[a+2452>>1]=0;I[a+2448>>1]=0;I[a+2444>>1]=0;I[a+2440>>1]=0;J[a+5804>>2]=0;J[a+5808>>2]=0;I[a+1172>>1]=1;J[a+5800>>2]=0;J[a+5792>>2]=0}function O7(a,b,c){a=a|0;b=b|0;c=c|0;var d=0,e=0,f=0,g=0;a=Ui-32|0;Ui=a;e=J[b+28>>2];f=J[b+24>>2];d=(e-f|0)/12|0;a:{if((e|0)==(f|0)){break a}e=d>>>0<=1?1:d;b=0;while(1){b:{g=f+P(b,12)|0;if(J[g+4>>2]==(c|0)){if(b>>>0>>0){break b}Z(145396,53895,487,84789);B()}b=b+1|0;if((e|0)!=(b|0)){continue}break a}break}b=J[g>>2];if((b|0)==-1){break a}b=J[(b<<2)+863504>>2];J[a+24>>2]=0;J[a+28>>2]=0;J[a+16>>2]=0;J[a+20>>2]=0;J[a+8>>2]=0;J[a+12>>2]=0;J[a>>2]=0;J[a+4>>2]=0;d=Da(b|0,327682)|0;d=(d|0)>=32?32:d;Vb(b|0,c|0,d|0)|0;H[c+145|0]=d;d=Da(b|0,327684)|0;d=(d|0)>=4?4:d;Wb(b|0,c+136|0,d|0)|0;H[c+147|0]=K[c+147|0]&128|d&127;d=b;b=Da(b|0,327683)|0;b=(b|0)>=32?32:b;Yb(d|0,a|0,b|0)|0;H[c+146|0]=b;f=b&255;if(f){c=c+128|0;b=0;while(1){d=1<>>3&536870908)|0;J[e>>2]=d|J[e>>2];break c}e=c+(b>>>3&536870908)|0;J[e>>2]=J[e>>2]&(d^-1)}b=b+1|0;if((f|0)!=(b|0)){continue}break}}Ui=a+32|0;return}Z(110595,37287,307,62067);B()}function rG(a,b,c,d){var e=0,f=0,g=0;a:{if(J[a+18388>>2]){break a}if(J[a+18368>>2]<=15){qm(a)}b:{if(!J[a+18392>>2]){g=ij(b,0,128);b=Kt(a,c);if(b>>>0>=16){break a}c:{if(!b){break c}c=J[a+18368>>2];if((b|0)>(c|0)){qm(a);c=J[a+18368>>2]}if((b|0)>(c|0)){break c}J[a+18368>>2]=c-b;e=J[a+18364>>2];c=oxa(e,b);b=b<<2;f=J[b+182080>>2];J[a+18364>>2]=c&(f^-1);e=(c&f)+((e|0)>=0?J[b+182160>>2]:0)|0}c=(P(d,72)+a|0)+18100|0;b=J[c>>2];if(!((b^e)<0|(((b&e)<0?(b|0)<(-2147483648-e|0):(b|0)>(e^2147483647))|0)!=1)){break a}b=b+e|0;J[c>>2]=b;a=J[a+18396>>2];d:{if((b^1<=0){if((b|0)<=(32767>>>a|0)){break b}break d}if((a|0)==31){if((b|0)>0){break d}break b}if((b|0)>=(0-(32768>>>a|0)|0)){break b}}break a}d=J[a+18368>>2];e:{if((d|0)<=0){qm(a);d=J[a+18368>>2];if((d|0)<=0){break e}}J[a+18368>>2]=d-1;c=J[a+18364>>2];J[a+18364>>2]=c<<1;if((c|0)>=0){break e}I[b>>1]=L[b>>1]+(1<>2])}return 1}I[g>>1]=b<>2];c=J[a+260>>2];a:{b:{if((c|0)<=0){break b}e=J[a+268>>2];b=0;while(1){if(J[e+(b<<2)>>2]!=(i|0)){b=b+1|0;if((c|0)!=(b|0)){continue}break b}break}if((b|0)!=(c|0)){break a}}c:{if(J[a+264>>2]!=(c|0)){break c}g=c?c<<1:1;if((g|0)<=(c|0)){break c}d:{if(!g){e=0;break d}e=Yj(g<<2);c=J[a+260>>2]}e:{if((c|0)<=0){break e}b=0;if(c>>>0>=4){h=c&2147483644;while(1){d=b<<2;J[d+e>>2]=J[d+J[a+268>>2]>>2];f=d|4;J[f+e>>2]=J[f+J[a+268>>2]>>2];f=d|8;J[f+e>>2]=J[f+J[a+268>>2]>>2];d=d|12;J[d+e>>2]=J[d+J[a+268>>2]>>2];b=b+4|0;j=j+4|0;if((h|0)!=(j|0)){continue}break}}d=c&3;if(!d){break e}while(1){h=b<<2;J[h+e>>2]=J[h+J[a+268>>2]>>2];b=b+1|0;k=k+1|0;if((d|0)!=(k|0)){continue}break}}b=J[a+268>>2];if(!(!b|K[a+272|0]!=1)){if(b){J[83765]=J[83765]+1;Zi[J[61751]](J[b-4>>2])}c=J[a+260>>2]}J[a+268>>2]=e;H[a+272|0]=1;J[a+264>>2]=g}J[J[a+268>>2]+(c<<2)>>2]=i;J[a+260>>2]=c+1}}function Zw(a,b,c,d){var e=0,f=0,g=0,h=0;a:{b:{c:{d:{while(1){e=J[b+4>>2];if(J[e+8>>2]!=6){break a}f=J[e>>2];if(K[f+6|0]){break a}f=J[f+16>>2];e:{if(J[a+20>>2]!=(b|0)){h=J[b+12>>2];e=f;break e}h=J[a+24>>2];J[b+12>>2]=h;e=J[J[e>>2]+16>>2]}e=(h-J[e+12>>2]>>2)-1|0;h=WA(f,c+1|0,e);J[d>>2]=h;if(h){return 50550}f:{e=hG(f,e,c);c=e&63;if(c){g:{switch(c-4|0){case 1:break g;case 7:break c;case 0:break d;case 2:break f;default:break a}}g=50591;a=J[J[f+8>>2]+(e>>>10&4194288)>>2]+16|0;break b}c=e>>>23|0;if(c>>>0<(e>>>6&255)>>>0){continue}break a}break}if(!(e&4194304)){g=72109;a=102200;break b}a=J[f+8>>2]+(e>>>10&4080)|0;if(J[a+8>>2]!=4){g=72109;a=102200;break b}g=72109;a=J[a>>2]+16|0;break b}a=J[f+28>>2];if(!a){g=60927;a=102200;break b}g=60927;a=J[a+(e>>>21&2044)>>2]+16|0;break b}if(!(e&4194304)){g=70889;a=102200;break b}a=J[f+8>>2]+(e>>>10&4080)|0;if(J[a+8>>2]!=4){g=70889;a=102200;break b}g=70889;a=J[a>>2]+16|0}J[d>>2]=a}return g}function vE(a,b,c){var d=0,e=0,f=0,g=0,h=0;e=Ui-16|0;Ui=e;ln(a,b);a:{b:{c:{d:{e:{f:{g:{h:{i:{d=J[b>>2];switch(d-1|0){case 11:break d;case 10:break e;case 4:break f;case 3:break g;case 1:case 2:break h;case 0:break i;default:break a}}d=J[a+24>>2];if((d|0)<=J[a+28>>2]){break c}if(!d){if(K[a+50|0]<=(c|0)){break b}break c}f=(J[J[a>>2]+12>>2]+(d<<2)|0)-4|0;d=J[f>>2];if((d&63)!=3|(d>>>6&255)>(c|0)){break c}g=d>>>23|0;if((g+1|0)<(c|0)){break c}if(c>>>0<=g>>>0){break b}J[f>>2]=d&8388547|c<<23;break b}El(a,c<<6|((d|0)==2?8388608:2)|2,J[J[a+12>>2]+8>>2]);break b}El(a,c<<6|J[b+8>>2]<<14|1,J[J[a+12>>2]+8>>2]);break b}h=O[b+8>>3];J[e+8>>2]=3;O[e>>3]=h;El(a,c<<6|At(a,e,e)<<14|1,J[J[a+12>>2]+8>>2]);break b}a=J[J[a>>2]+12>>2]+(J[b+8>>2]<<2)|0;J[a>>2]=J[a>>2]&-16321|c<<6&16320;break b}d=J[b+8>>2];if((d|0)==(c|0)){break b}El(a,d<<23|c<<6,J[J[a+12>>2]+8>>2]);break b}El(a,c<<23|c<<6|3,J[J[a+12>>2]+8>>2])}J[b>>2]=12;J[b+8>>2]=c}Ui=e+16|0}function Mka(a){a=a|0;var b=0,c=0,d=0,e=0,f=0,g=0,h=0,i=0;d=nj(36);J[d>>2]=0;J[d+4>>2]=0;J[d+24>>2]=0;J[d+28>>2]=0;J[d+16>>2]=0;J[d+20>>2]=0;c=d+8|0;J[c>>2]=0;J[c+4>>2]=0;b=J[a>>2];J[d+32>>2]=b;e=J[a+16>>2];b=J[b+4>>2];e=b>>>0>e>>>0?e:b;lj(e,144,d,c,d+4|0);a:{b=J[c>>2];c=J[d>>2];if((b-c|0)/144>>>0>=e>>>0){b=P(e,144);J[d+4>>2]=b+c;ij(c,0,b);b=J[d+20>>2];if(b>>>0>e>>>0){break a}g=J[d+16>>2];c=sj(e<<2);J[d+16>>2]=c;f=hj(c,g,b<<2);J[d+20>>2]=e;b:{if(b>>>0>=e>>>0){break b}c=b;h=e-b&7;if(h){while(1){J[(c<<2)+f>>2]=c;c=c+1|0;i=i+1|0;if((h|0)!=(i|0)){continue}break}}if(b-e>>>0>4294967288){break b}while(1){J[(c<<2)+f>>2]=c;b=c+1|0;J[(b<<2)+f>>2]=b;b=c+2|0;J[(b<<2)+f>>2]=b;b=c+3|0;J[(b<<2)+f>>2]=b;b=c+4|0;J[(b<<2)+f>>2]=b;b=c+5|0;J[(b<<2)+f>>2]=b;b=c+6|0;J[(b<<2)+f>>2]=b;b=c+7|0;J[(b<<2)+f>>2]=b;c=c+8|0;if((e|0)!=(c|0)){continue}break}}cj(g);J[J[a+12>>2]>>2]=d;return 0}Z(144782,53895,514,59583);B()}Z(2627,54340,112,2284);B()}function Uia(a,b){a=a|0;b=b|0;var c=0,d=0,e=0,f=0,g=0,h=0,i=0,j=0;b=Ui-16|0;Ui=b;a:{b:{c=J[a+132>>2];e=J[(c+112|0)+4>>2];f=J[c+112>>2];c:{if((e|0)==(f|0)){break c}d=b+8|0;J[d>>2]=0;J[d+4>>2]=0;J[b>>2]=0;J[b+4>>2]=0;e=(e-f|0)/176|0;lj(e,48,b,d,b|4);g=J[b>>2];if(e>>>0>(J[d>>2]-g|0)/48>>>0){break b}J[b+4>>2]=P(e,48)+g;i=e>>>0<=1?1:e;h=J[c+112>>2];j=(J[c+116>>2]-h|0)/176|0;f=0;while(1){if((f|0)==(j|0)){break a}c=P(f,48)+g|0;d=P(f,176)+h|0;N[c>>2]=N[d>>2];N[c+4>>2]=N[d+4>>2];N[c+8>>2]=N[d+8>>2];N[c+12>>2]=N[d+12>>2];N[c+16>>2]=N[d+16>>2];N[c+20>>2]=N[d+20>>2];N[c+24>>2]=N[d+24>>2];N[c+32>>2]=N[d+32>>2];N[c+36>>2]=N[d+36>>2];N[c+40>>2]=N[d+40>>2];f=f+1|0;if((i|0)!=(f|0)){continue}break}c=J[a+212>>2];if((c|0)==J[a+216>>2]){break a}c=J[c>>2];FR(J[J[c+80>>2]+8>>2],a+16|0,J[c+140>>2]&32767,g,e);if(H[b+12|0]&1){break c}a=J[b>>2];if(!a){break c}cj(a)}Ui=b+16|0;return}Z(144782,53895,514,59583);B()}Z(145396,53895,487,84789);B()}function uca(a,b){a=a|0;b=b|0;var c=0,d=0,e=0,f=0,g=0,h=0,i=0,j=0,k=0,l=0,m=0,n=0,o=0,p=0,q=0;c=Ui-48|0;Ui=c;n=J[a>>2];o=J[n+4>>2];e=o;k=J[e+96>>2];l=J[e+100>>2];p=J[a+4>>2];q=J[p+4>>2];d=q;e=J[d+96>>2];m=J[d+100>>2];d=L[a+8>>1];if(d){if(!(d&1)){while(1){f=f+1|0;g=d&2;d=(d&65534)>>>1|0;if(!g){continue}break}}d=(f<<3)+b|0;g=J[d>>2];h=J[d+4>>2]}d=L[a+10>>1];if(d){f=0;if(!(d&1)){while(1){f=f+1|0;a=d&2;d=(d&65534)>>>1|0;if(!a){continue}break}}a=(f<<3)+b|0;i=J[a>>2];j=J[a+4>>2]}a=J[b+128>>2];a:{if(a){J[c+24>>2]=g;J[c+28>>2]=h;H[c+8|0]=1;J[c+40>>2]=i;J[c+44>>2]=j;J[c+16>>2]=k;J[c+20>>2]=l;J[c+32>>2]=e;J[c+36>>2]=m;_s(a,J[58698],c+8|0);break a}J[c+40>>2]=g;J[c+44>>2]=h;J[c+24>>2]=i;J[c+28>>2]=j;J[c+8>>2]=e;J[c+12>>2]=m;H[c+16|0]=1;J[c+32>>2]=i;J[c+36>>2]=j;a=c+8|0;cw(a,o,k,l,L[n+26>>1]);J[c+40>>2]=i;J[c+44>>2]=j;J[c+24>>2]=g;J[c+28>>2]=h;J[c+8>>2]=k;J[c+12>>2]=l;J[c+32>>2]=g;J[c+36>>2]=h;cw(a,q,e,m,L[p+26>>1])}Ui=c+48|0}function tca(a,b){a=a|0;b=b|0;var c=0,d=0,e=0,f=0,g=0,h=0,i=0,j=0,k=0,l=0,m=0,n=0,o=0,p=0,q=0;c=Ui-48|0;Ui=c;n=J[a>>2];o=J[n+4>>2];e=o;k=J[e+96>>2];l=J[e+100>>2];p=J[a+4>>2];q=J[p+4>>2];d=q;e=J[d+96>>2];m=J[d+100>>2];d=L[a+8>>1];if(d){if(!(d&1)){while(1){f=f+1|0;g=d&2;d=(d&65534)>>>1|0;if(!g){continue}break}}d=(f<<3)+b|0;g=J[d>>2];h=J[d+4>>2]}d=L[a+10>>1];if(d){f=0;if(!(d&1)){while(1){f=f+1|0;a=d&2;d=(d&65534)>>>1|0;if(!a){continue}break}}a=(f<<3)+b|0;i=J[a>>2];j=J[a+4>>2]}a=J[b+128>>2];a:{if(a){J[c+24>>2]=g;J[c+28>>2]=h;H[c+8|0]=0;J[c+40>>2]=i;J[c+44>>2]=j;J[c+16>>2]=k;J[c+20>>2]=l;J[c+32>>2]=e;J[c+36>>2]=m;_s(a,J[58698],c+8|0);break a}J[c+40>>2]=g;J[c+44>>2]=h;J[c+24>>2]=i;J[c+28>>2]=j;J[c+8>>2]=e;J[c+12>>2]=m;H[c+16|0]=0;J[c+32>>2]=i;J[c+36>>2]=j;a=c+8|0;cw(a,o,k,l,L[n+26>>1]);J[c+40>>2]=i;J[c+44>>2]=j;J[c+24>>2]=g;J[c+28>>2]=h;J[c+8>>2]=k;J[c+12>>2]=l;J[c+32>>2]=g;J[c+36>>2]=h;cw(a,q,e,m,L[p+26>>1])}Ui=c+48|0}function Rx(a){var b=0,c=0,d=0,e=0;a:{b:{b=J[a+108>>2];if(b){if(K[a+92|0]&2|J[J[a>>2]+2128>>2]){a=J[a+104>>2];c=J[a+28>>2];Tj(c);c:{d:{d=b&65535;e=J[a+12>>2];a=J[a+8>>2];if(d>>>0>6>>>0){a=a+(d<<6)|0;if(L[a+54>>1]!=(b>>>16|0)){break a}if(J[a+48>>2]!=2){break d}b=J[a+40>>2];if(b){Ku(b);J[a+40>>2]=0}b=J[a+44>>2];if((b|0)!=-1){sq(b);Ln(J[a+44>>2])}J[a+40>>2]=0;J[a+44>>2]=0;J[a>>2]=0;J[a+4>>2]=0;J[a+56>>2]=0;J[a+60>>2]=0;J[a+48>>2]=0;J[a+52>>2]=0;J[a+32>>2]=0;J[a+36>>2]=0;J[a+24>>2]=0;J[a+28>>2]=0;J[a+16>>2]=0;J[a+20>>2]=0;J[a+8>>2]=0;J[a+12>>2]=0;J[a+44>>2]=-1;Lj(c);break c}break b}Z(95091,40434,457,62417);B()}return}a=J[a+104>>2];c=J[a+28>>2];Tj(c);e:{f:{d=b&65535;e=J[a+12>>2];a=J[a+8>>2];if(d>>>0>6>>>0){a=a+(d<<6)|0;if(L[a+54>>1]!=(b>>>16|0)){break a}if(J[a+48>>2]!=2){break f}J[a+48>>2]=1;Lj(c);break e}break b}Z(95091,40434,448,44614);B()}}return}Z(145396,54052,487,84789);B()}Z(8293,40434,187,45738);B()}function ms(a,b){var c=0,d=0,e=0,f=0;a:{b:{if((b|0)==-10001){if(J[a+20>>2]!=J[a+40>>2]){break b}xl(a,13716,0);break b}c:{if((b|0)>0){c=(J[a+12>>2]+(b<<4)|0)-16|0;c=c>>>0>=M[a+8>>2]?173288:c;break c}c=J[a+8>>2]+(b<<4)|0;if((b|0)>=-9999){break c}d:{switch(b+10002|0){case 0:c=a+72|0;break c;default:c=J[J[J[a+20>>2]+4>>2]>>2];c=K[c+7|0]<-10002-b>>>0?173288:(c+(0-b<<4)|0)-160024|0;break c;case 1:break b;case 2:break d}}c=J[a+16>>2]+96|0}d=J[a+8>>2];e=d-16|0;f=J[e+4>>2];J[c>>2]=J[e>>2];J[c+4>>2]=f;J[c+8>>2]=J[d-8>>2];if((b|0)>-10003){break a}b=J[a+8>>2];if(J[b-8>>2]<4){break a}c=J[b-16>>2];if(!(K[c+5|0]&3)){break a}b=J[J[J[a+20>>2]+4>>2]>>2];if(!(K[b+5|0]&4)){break a}ap(a,b,c);break a}c=J[a+20>>2];b=J[J[J[c+4>>2]>>2]+12>>2];J[a+96>>2]=5;J[a+88>>2]=b;c=J[J[c+4>>2]>>2];J[c+12>>2]=J[J[a+8>>2]-16>>2];b=J[a+8>>2];if(J[b-8>>2]<4){break a}b=J[b-16>>2];if(!(K[b+5|0]&3)|!(K[c+5|0]&4)){break a}ap(a,c,b)}J[a+8>>2]=J[a+8>>2]-16}function ex(a,b){var c=0,d=0,e=0,f=0,g=0,h=0,i=0;e=Ui-1120|0;Ui=e;c=-1;a:{if(!a){break a}c=-4;if(J[a+20>>2]!=1){break a}c=-10;if(M[a+16>>2]<=b>>>0){break a}d=J[a+72>>2];f=J[d>>2];c=-11;if(!f){break a}c=f+J[J[d+16>>2]+(b<<2)>>2]|0;f=K[c+28|0]|K[c+29|0]<<8;d=J[a+92>>2];if(d){cj(d);J[a+92>>2]=0}d=Zj(f+1|0,1);b:{if(!f|!d){break b}g=c+46|0;c=d;while(1){h=K[g|0];if(!h){break b}H[c|0]=h;c=c+1|0;g=g+1|0;i=i+1|0;if((i|0)!=(f|0)){continue}break}}J[a+92>>2]=d;c=-2;if(!d){break a}c=J[a+72>>2];d=0;c:{if(!c){break c}d=0;if(M[a+16>>2]<=b>>>0){break c}d=J[c>>2]+J[J[c+16>>2]+(b<<2)>>2]|0}c=-3;if(!tw(a,b,d,e+8|0)){break a}J[a+88>>2]=b;b=J[e+44>>2];J[a+104>>2]=J[e+40>>2];J[a+108>>2]=b;b=J[e+52>>2];J[a+96>>2]=J[e+48>>2];J[a+100>>2]=b;J[a+112>>2]=J[e+32>>2];b=J[e+20>>2];J[a+120>>2]=J[e+16>>2];J[a+124>>2]=b;b=J[e+68>>2];J[a+160>>2]=J[e+64>>2];J[a+164>>2]=b;I[a+168>>1]=L[e+30>>1];J[a+172>>2]=J[e+60>>2];c=0}Ui=e+1120|0;return(c|0)!=0}function Vua(a,b){a=a|0;b=b|0;var c=0,d=Q(0),e=Q(0),f=Q(0),g=Q(0),h=Q(0),i=Q(0),j=Q(0),k=Q(0),l=Q(0),m=0,n=Q(0),o=Q(0),p=Q(0),q=Q(0),r=Q(0),s=Q(0),t=Q(0),u=Q(0),v=Q(0),w=Q(0),x=Q(0),y=Q(0);k=Q(-N[a+112>>2]);l=N[a+136>>2];m=J[b+28>>2];c=m+P(J[a+124>>2],12)|0;n=N[c>>2];j=N[c+8>>2];o=N[a+156>>2];p=N[c+4>>2];q=N[a+152>>2];r=N[a+140>>2];f=N[a+128>>2];c=P(J[a+120>>2],12)+m|0;s=N[c>>2];d=N[c+8>>2];t=N[a+148>>2];g=N[c+4>>2];u=N[a+144>>2];h=N[a+132>>2];e=Q(Q(Q(k*Q(Q(l*Q(n-Q(j*o)))+Q(Q(p+Q(j*q))*r)))-Q(Q(f*Q(s-Q(d*t)))+Q(Q(g+Q(d*u))*h)))*Q(-N[a+192>>2]));N[a+116>>2]=N[a+116>>2]+e;w=N[a+188>>2];v=N[a+180>>2];x=N[a+184>>2];y=g;g=N[a+176>>2];i=h;h=Q(-e);i=Q(i*h);N[c+4>>2]=y+Q(g*i);f=Q(f*h);N[c>>2]=s+Q(g*f);c=J[b+28>>2];N[(c+P(J[a+120>>2],12)|0)+8>>2]=d+Q(x*Q(Q(u*i)-Q(t*f)));c=c+P(J[a+124>>2],12)|0;d=Q(e*k);e=Q(r*d);N[c+4>>2]=p+Q(v*e);d=Q(l*d);N[c>>2]=n+Q(v*d);N[(J[b+28>>2]+P(J[a+124>>2],12)|0)+8>>2]=j+Q(w*Q(Q(q*e)-Q(o*d)))}function TR(){var a=0;J[72057]=J[245447];J[245447]=288192;J[72033]=J[245440];J[245440]=288092;eq(980400,53271,2458,2459,0);J[72044]=J[245440];J[245440]=288136;a=J[79376];J[60050]=819;J[60048]=a;H[240212]=1;J[60051]=821;J[60049]=820;J[79376]=240192;eq(981600,62227,2479,2480,2481);tp(297056,81723,161,0);tp(296928,82169,156,0);tp(297312,80659,170,0);tp(297184,82508,166,0);tp(296800,82181,153,0);tp(307424,80808,573,0);tp(308064,82235,581,0);tp(308272,80655,586,587);tp(309520,82363,600,601);tp(309648,80496,600,601);Lu(298464,66717,200);Lu(298208,60730,182);Lu(298336,67284,190);Lu(298720,43210,217);Lu(298592,36507,207);ov(296656,80659,92,0);ov(296528,82181,87,0);ov(301152,82235,238,239);ov(301920,82329,285,286);ov(303328,82481,302,301);eq(316816,76550,769,770,0);eq(311616,68736,661,662,0);eq(316256,49929,759,760,0);eq(862752,22524,1767,1768,0);eq(295616,33235,78,0,0);eq(295488,34374,75,0,0);eq(295328,19942,25,24,23)}function gxa(a,b,c){var d=0,e=0,f=0,g=0,h=0,i=0,j=0,k=0,l=0;a:{b:{c:{d:{e:{f:{g:{h:{i:{if(b){if(!c){break i}break h}b=a;a=(a>>>0)/(c>>>0)|0;Wi=b-P(a,c)|0;Xi=0;Yi=0;return a}if(!a){break g}break f}d=c-1|0;if(!(d&c)){break e}g=(S(c)+33|0)-S(b)|0;f=0-g|0;break c}Wi=0;a=(b>>>0)/0|0;Xi=b-P(a,0)|0;Yi=0;return a}d=32-S(b)|0;if(d>>>0<31){break d}break b}Wi=a&d;Xi=0;if((c|0)==1){break a}d=hxa(c);c=d&31;if((d&63)>>>0>=32){a=b>>>c|0}else{e=b>>>c|0;a=((1<>>c}Yi=e;return a}g=d+1|0;f=63-d|0}e=g&63;d=e&31;if(e>>>0>=32){e=0;h=b>>>d|0}else{e=b>>>d|0;h=((1<>>d}f=f&63;d=f&31;if(f>>>0>=32){b=a<>>32-d|b<>>31;e=h<<1|b>>>31;f=k-(i+(e>>>0>d>>>0)|0)>>31;j=c&f;h=e-j|0;e=i-(e>>>0>>0)|0;b=b<<1|a>>>31;a=l|a<<1;i=f&1;l=i;g=g-1|0;if(g){continue}break}}Wi=h;Xi=e;Yi=b<<1|a>>>31;return i|a<<1}Wi=a;Xi=b;a=0;b=0}Yi=b;return a}function Ira(a,b,c,d){a=a|0;b=b|0;c=c|0;d=d|0;var e=0,f=0,g=0,h=0,i=0,j=0,k=0,l=0,m=0;if(!(K[b+204|0]&3|H[b+496|0]&1)){GE(b,a+220|0)}if(J[b+192>>2]){a:{if(!(H[b+204|0]&1)){e=J[a+204>>2];b:{if((e|0)!=J[a+208>>2]){break b}j=e?e<<1:1;if((j|0)<=(e|0)){break b}if(j){h=Yj(j<<2);e=J[a+204>>2]}c:{if((e|0)<=0){break c}if(e>>>0>=4){k=e&2147483644;while(1){f=g<<2;J[f+h>>2]=J[f+J[a+212>>2]>>2];i=f|4;J[i+h>>2]=J[i+J[a+212>>2]>>2];i=f|8;J[i+h>>2]=J[i+J[a+212>>2]>>2];f=f|12;J[f+h>>2]=J[f+J[a+212>>2]>>2];g=g+4|0;l=l+4|0;if((k|0)!=(l|0)){continue}break}}f=e&3;if(!f){break c}while(1){k=g<<2;J[k+h>>2]=J[k+J[a+212>>2]>>2];g=g+1|0;m=m+1|0;if((f|0)!=(m|0)){continue}break}}g=J[a+212>>2];if(!(!g|K[a+216|0]!=1)){if(g){J[83765]=J[83765]+1;Zi[J[61751]](J[g-4>>2])}e=J[a+204>>2]}J[a+212>>2]=h;H[a+216|0]=1;J[a+208>>2]=j}J[J[a+212>>2]+(e<<2)>>2]=b;J[a+204>>2]=e+1;break a}if((J[b+216>>2]&-2)!=4){J[b+216>>2]=2}}Zi[J[J[a>>2]+32>>2]](a,b,c,d)}}function xC(a,b,c){var d=0,e=0;a:{b:{if(!b){break b}e=b&65535;d=J[a+4>>2];a=J[a>>2];if(e>>>0>=d-a>>2>>>0){break a}a=J[a+(e<<2)>>2];if(L[a+80>>1]!=(b>>>16|0)){dj(4,96107,66969,0);return}b=J[a+4>>2];e=J[a>>2];if((b|0)==(e|0)){break b}b=(b-e|0)/304|0;e=b>>>0<=1?1:b;b=0;if(c){while(1){c=J[a>>2];if((J[a+4>>2]-c|0)/304>>>0<=b>>>0){break a}c=c+P(b,304)|0;d=J[c+280>>2];c:{if(!d){break c}J[c+280>>2]=3;if((d|0)==3){break c}d=J[a+72>>2];if(!d){break c}Zi[J[a+68>>2]](J[a+16>>2],J[c+128>>2],J[c+132>>2],3,d)}J[c+60>>2]=J[c+56>>2];H[c+296|0]=K[c+296|0]&251;b=b+1|0;if((e|0)!=(b|0)){continue}break b}}while(1){c=J[a>>2];if((J[a+4>>2]-c|0)/304>>>0<=b>>>0){break a}c=c+P(b,304)|0;d=J[c+280>>2];d:{if(!d){break d}J[c+280>>2]=3;if((d|0)==3){break d}d=J[a+72>>2];if(!d){break d}Zi[J[a+68>>2]](J[a+16>>2],J[c+128>>2],J[c+132>>2],3,d)}H[c+296|0]=K[c+296|0]&251;b=b+1|0;if((e|0)!=(b|0)){continue}break}}return}Z(145396,53895,487,84789);B()}function pC(a){var b=0;J[a+4>>2]=0;J[a+8>>2]=0;J[a>>2]=1065353216;J[a+24>>2]=0;J[a+28>>2]=0;J[a+20>>2]=1065353216;J[a+44>>2]=0;J[a+48>>2]=0;J[a+40>>2]=1065353216;J[a+212>>2]=0;J[a+216>>2]=0;H[a+208|0]=0;J[a+200>>2]=1065353216;J[a+204>>2]=0;J[a+192>>2]=2139095039;J[a+196>>2]=0;H[a+190|0]=0;I[a+188>>1]=0;J[a+180>>2]=1;J[a+184>>2]=7;J[a+108>>2]=1065353216;J[a+112>>2]=0;J[a+100>>2]=0;J[a+104>>2]=0;J[a+92>>2]=1065353216;J[a+96>>2]=0;J[a+84>>2]=0;J[a+88>>2]=0;J[a+76>>2]=1065353216;J[a+80>>2]=0;J[a+68>>2]=0;J[a+72>>2]=0;J[a+60>>2]=1065353216;J[a+64>>2]=0;J[a+12>>2]=0;J[a+16>>2]=0;J[a+32>>2]=0;J[a+36>>2]=0;J[a+52>>2]=0;J[a+56>>2]=0;b=aC(a+220|0);H[a+256|0]=K[a+256|0]&254;J[b+20>>2]=0;J[b+24>>2]=0;J[b+16>>2]=7;J[b+8>>2]=0;J[b+12>>2]=0;J[b>>2]=7;J[b+4>>2]=0;H[b+33|0]=255;H[b+34|0]=255;H[b+25|0]=0;H[b+26|0]=0;H[b+27|0]=0;H[b+28|0]=0;H[b+29|0]=0;H[b+30|0]=0;H[b+31|0]=0;H[b+32|0]=0;H[b+35|0]=K[b+35|0]&192|15;return a}function es(a,b){var c=0,d=0,e=0;c=a+28|0;d=J[a>>2]&63;e=c+d|0;H[e|0]=128;e=e+1|0;a:{if(d>>>0<=55){ij(e,0,55-d|0);break a}ij(e,0,d^63);hs(a,c);J[c+48>>2]=0;J[c+52>>2]=0;J[c+40>>2]=0;J[c+44>>2]=0;J[c+32>>2]=0;J[c+36>>2]=0;J[c+24>>2]=0;J[c+28>>2]=0;J[c+16>>2]=0;J[c+20>>2]=0;J[c+8>>2]=0;J[c+12>>2]=0;J[c>>2]=0;J[c+4>>2]=0}d=J[a>>2];H[a+91|0]=d<<3;H[a+90|0]=d>>>5;H[a+89|0]=d>>>13;H[a+88|0]=d>>>21;e=J[a+4>>2];H[a+86|0]=e>>>5;H[a+85|0]=e>>>13;H[a+84|0]=e>>>21;H[a+87|0]=e<<3|d>>>29;hs(a,c);H[b|0]=K[a+11|0];H[b+1|0]=L[a+10>>1];H[b+2|0]=J[a+8>>2]>>>8;H[b+3|0]=J[a+8>>2];H[b+4|0]=K[a+15|0];H[b+5|0]=L[a+14>>1];H[b+6|0]=J[a+12>>2]>>>8;H[b+7|0]=J[a+12>>2];H[b+8|0]=K[a+19|0];H[b+9|0]=L[a+18>>1];H[b+10|0]=J[a+16>>2]>>>8;H[b+11|0]=J[a+16>>2];H[b+12|0]=K[a+23|0];H[b+13|0]=L[a+22>>1];H[b+14|0]=J[a+20>>2]>>>8;H[b+15|0]=J[a+20>>2];H[b+16|0]=K[a+27|0];H[b+17|0]=L[a+26>>1];H[b+18|0]=J[a+24>>2]>>>8;H[b+19|0]=J[a+24>>2];return 0}function SE(a,b,c,d){var e=0,f=0,g=0,h=0;a:{b:{c:{if(d>>>0<21){e=P(d,12)+163280|0;g=J[e+4>>2];d:{if(!(g|J[e+8>>2])){if(b|c){break c}c=J[e>>2];d=8;b=0;while(1){g=(c|0)>(d|0);e=g?d:c;g=a>>>(g?c-e|0:0)|0;if(g>>>e|0){break b}d=d-e|0;b=g<0){continue}break}break d}e=(d<<3)+243184|0;h=J[e+4>>2];if(!h){break a}d=0;e=J[e>>2];f=K[e|0];if((f|0)!=48){d=a>>>f-97<<1&2}f=K[e+1|0];if((f|0)!=48){d=a>>>f-97&1|d}d=d<<1;f=K[e+2|0];if((f|0)!=48){d=d|a>>>f-97&1}d=d<<1;f=K[e+3|0];if((f|0)!=48){d=d|a>>>f-97&1}d=d<<1;f=K[e+4|0];if((f|0)!=48){d=d|a>>>f-97&1}d=d<<1;f=K[e+5|0];if((f|0)!=48){d=d|a>>>f-97&1}d=d<<1;f=K[e+6|0];if((f|0)!=48){d=d|a>>>f-97&1}d=d<<1;f=K[e+7|0];if((f|0)!=48){d=d|a>>>f-97&1}d=d<<1;e=K[e+8|0];if((e|0)!=48){d=a>>>e-97&1|d}a=0-(a&1)&511;b=a&128|(a^P(g?b:c,h)+d)>>>2}return b}Z(89118,40075,11411,12781);B()}Z(17805,40075,11420,12781);B()}Z(137504,40075,11431,12781);B()}Z(99232,40075,11443,12781);B()}function jha(a){a=a|0;var b=0,c=0,d=0,e=0,f=Q(0),g=Q(0),h=0,i=0,j=Q(0);c=Ui-48|0;Ui=c;b=J[a+8>>2]-J[a+12>>2]>>4;e=mk(a,1);h=Yi;J[c+44>>2]=0;i=Aj(a,2,c+44|0);e=Xp(a,J[78228],e,h,80731);a:{if((b|0)<3){f=Q(1e5);g=Q(1);b=0;break a}Oj(a,3,5);xj(a,52997);Ck(a,3);f=hr(a,52997,Q(1e5));gj(a,-2);xj(a,57375);Ck(a,3);g=hr(a,57375,Q(1));gj(a,-2);xj(a,56937);Ck(a,3);j=hr(a,56937,Q(0));gj(a,-2);xj(a,52008);Ck(a,3);b=st(a,52008,0);gj(a,-2)}N[c+40>>2]=j;N[c+36>>2]=g;H[c+32|0]=b;N[c+28>>2]=f;iC(J[e+4>>2],i,c+28|0,c+8|0);Fj(a,0,4);mj(a,52997,5);d=+N[c+8>>2];b=J[a+8>>2];J[b+8>>2]=3;O[b>>3]=d;J[a+8>>2]=J[a+8>>2]+16;Xj(a,-3);mj(a,14691,6);d=+N[c+12>>2];b=J[a+8>>2];J[b+8>>2]=3;O[b>>3]=d;J[a+8>>2]=J[a+8>>2]+16;Xj(a,-3);mj(a,13992,10);d=+N[c+16>>2];b=J[a+8>>2];J[b+8>>2]=3;O[b>>3]=d;J[a+8>>2]=J[a+8>>2]+16;Xj(a,-3);mj(a,13969,11);d=+N[c+20>>2];b=J[a+8>>2];J[b+8>>2]=3;O[b>>3]=d;J[a+8>>2]=J[a+8>>2]+16;Xj(a,-3);Ui=c+48|0;return 1}function gT(a,b){var c=0,d=0,e=0,f=0,g=0,h=0,i=0,j=0,k=0;c=J[a+480>>2];a:{b:{if((c|0)<=0){break b}f=J[a+488>>2];while(1){if(J[f+(d<<2)>>2]!=(b|0)){d=d+1|0;if((d|0)!=(c|0)){continue}break b}break}if((c|0)!=(d|0)){break a}}c:{if(J[a+484>>2]!=(c|0)){break c}h=c?c<<1:1;if((h|0)<=(c|0)){break c}d:{if(!h){f=0;break d}f=Yj(h<<2);c=J[a+480>>2]}e:{if((c|0)<=0){break e}d=0;if(c>>>0>=4){i=c&2147483644;while(1){e=d<<2;J[e+f>>2]=J[e+J[a+488>>2]>>2];g=e|4;J[g+f>>2]=J[g+J[a+488>>2]>>2];g=e|8;J[g+f>>2]=J[g+J[a+488>>2]>>2];e=e|12;J[e+f>>2]=J[e+J[a+488>>2]>>2];d=d+4|0;j=j+4|0;if((i|0)!=(j|0)){continue}break}}e=c&3;if(!e){break e}while(1){i=d<<2;J[i+f>>2]=J[i+J[a+488>>2]>>2];d=d+1|0;k=k+1|0;if((e|0)!=(k|0)){continue}break}}d=J[a+488>>2];if(!(!d|K[a+492|0]!=1)){if(d){J[83765]=J[83765]+1;Zi[J[61751]](J[d-4>>2])}c=J[a+480>>2]}J[a+488>>2]=f;H[a+492|0]=1;J[a+484>>2]=h}J[J[a+488>>2]+(c<<2)>>2]=b;J[a+480>>2]=c+1}J[a+252>>2]=1}function xga(a){a=a|0;var b=0,c=0,d=0,e=0,f=0,g=0,h=0,i=0,j=0,k=Q(0),l=Q(0);b=Ui-80|0;Ui=b;g=1;h=pj(b+28|0,a,1,39481,934);i=mk(a,2);j=Yi;d=J[J[pk(a)+80>>2]+8>>2];J[b+24>>2]=0;J[b+20>>2]=0;J[b+72>>2]=0;J[b+76>>2]=0;c=b- -64|0;J[c>>2]=0;J[c+4>>2]=0;J[b+56>>2]=0;J[b+60>>2]=0;J[b+48>>2]=0;J[b+52>>2]=0;e=b+48|0;Al(a,1,d,80935,b+24|0,e,b+20|0);J[b+56>>2]=0;J[b+48>>2]=0;J[b+52>>2]=0;c=J[b+24>>2];f=J[b+20>>2];a:{if(H[f+145|0]&1){dj(4,88458,25611,0);d=1;break a}d=3;c=J[c+12>>2];b:{if(!c){break b}while(1){if(J[c>>2]!=(i|0)|J[c+4>>2]!=(j|0)){c=J[c+16>>2];if(c){continue}break b}break}d=4;c=J[c+12>>2];if(!c){break a}d=Ui-16|0;Ui=d;k=N[J[J[f+132>>2]+36>>2]+68>>2];Zi[J[J[c>>2]+8>>2]](d+8|0,c,Q(Q(1)/N[f+136>>2]));N[e>>2]=k*N[d+8>>2];l=N[d+12>>2];J[e+8>>2]=0;N[e+4>>2]=k*l;Ui=d+16|0;d=0}}c:{if(d){J[b>>2]=tj(i,j);J[b+8>>2]=d;J[b+4>>2]=J[(d<<2)+225184>>2];g=Jj(h,140402,b);break c}cl(a,b+48|0)}oj(h);Ui=b+80|0;return g|0}function Xu(a,b){var c=0,d=0,e=0,f=0,g=0;a:{b:{c:{d:{if(b){d=b&65535;c=J[a>>2];if(d>>>0>=J[a+4>>2]-c>>2>>>0){break b}c=J[c+(d<<2)>>2];if(L[c+80>>1]!=(b>>>16|0)){dj(4,96107,66969,0);return}e=J[c+72>>2];if(e){cj(e);J[c+16>>2]=0;J[c+72>>2]=0}e=J[a+16>>2];if(!e){break d}f=L[a+22>>1]-1|0;g=f&65535;if(g>>>0>=L[a+20>>1]){break c}I[a+22>>1]=f;I[e+(g<<1)>>1]=b;b=J[a+4>>2];a=J[a>>2];if(d>>>0>=b-a>>2>>>0){break b}J[a+(d<<2)>>2]=0;a=J[c+4>>2];b=J[c>>2];if((a|0)!=(b|0)){a=(a-b|0)/304|0;d=a>>>0<=1?1:a;b=0;while(1){a=J[c>>2];if((J[c+4>>2]-a|0)/304>>>0<=b>>>0){break b}a=a+P(b,304)|0;if(H[a+68|0]&1){break a}lj(0,160,a+56|0,a- -64|0,a+60|0);if(H[a+84|0]&1){break a}lj(0,96,a+72|0,a+80|0,a+76|0);b=b+1|0;if((d|0)!=(b|0)){continue}break}}e:{if(H[c+12|0]&1){break e}a=J[c>>2];if(!a){break e}cj(a)}cj(c)}return}Z(49493,54340,140,53220);B()}Z(2650,54340,141,53220);B()}Z(145396,53895,487,84789);B()}Z(151729,53895,501,2284);B()}function B3(a){a=a|0;var b=0,c=0,d=0,e=0,f=Q(0),g=0;c=Ui-32|0;Ui=c;J[c+28>>2]=0;g=1;a:{b:{switch(vn(a,1,c+28|0)|0){case 0:b=J[c+28>>2];d=J[b>>2];e=J[b+4>>2];f=N[b+8>>2];b=Sj(a,64);J[b+4>>2]=0;J[b+8>>2]=0;J[b>>2]=1065353216;J[b+24>>2]=0;J[b+28>>2]=0;J[b+20>>2]=1065353216;J[b+60>>2]=1065353216;N[b+56>>2]=f;J[b+48>>2]=d;J[b+52>>2]=e;J[b+40>>2]=1065353216;J[b+44>>2]=0;J[b+12>>2]=0;J[b+16>>2]=0;J[b+32>>2]=0;J[b+36>>2]=0;rj(a,-1e4,106883);Mj(a,-2);break a;case 1:b=J[c+28>>2];d=J[b>>2];e=J[b+4>>2];f=N[b+8>>2];b=Sj(a,64);J[b+4>>2]=0;J[b+8>>2]=0;J[b>>2]=1065353216;J[b+24>>2]=0;J[b+28>>2]=0;J[b+20>>2]=1065353216;J[b+60>>2]=1065353216;N[b+56>>2]=f;J[b+48>>2]=d;J[b+52>>2]=e;J[b+40>>2]=1065353216;J[b+44>>2]=0;J[b+12>>2]=0;J[b+16>>2]=0;J[b+32>>2]=0;J[b+36>>2]=0;rj(a,-1e4,106883);Mj(a,-2);break a;default:break b}}J[c+12>>2]=106998;J[c+8>>2]=108973;J[c+4>>2]=47100;J[c>>2]=53139;g=fj(a,116480,c)}Ui=c+32|0;return g|0}function UJ(a,b,c){var d=0,e=0,f=0,g=0,h=0,i=0,j=0;j=J[a+8>>2]-J[a+12>>2]>>4;a:{b:{f=mr(a);d=J[f+80>>2];c:{if(!d){break c}e=J[J[f+76>>2]+(mxa(b,c,d)<<2)>>2];if((e|0)==-1){break c}g=J[f+84>>2];while(1){d=g+(e<<4)|0;if(J[d>>2]!=(b|0)|J[d+4>>2]!=(c|0)){e=J[d+12>>2];if((e|0)!=-1){continue}break c}break}Nj(a,-1e4,J[f+128>>2]);Fp(a,-1,J[d+8>>2]);gj(a,-2);d=J[f+80>>2];if(!d){break b}d:{e:{i=J[f+76>>2]+(mxa(b,c,d)<<2)|0;e=J[i>>2];if((e|0)!=-1){d=0;h=J[f+84>>2];g=h+(e<<4)|0;if((b|0)==J[g>>2]&J[g+4>>2]==(c|0)){break d}break e}Z(85666,55629,340,62656);B()}while(1){d=g;e=J[d+12>>2];if((e|0)!=-1){g=(e<<4)+h|0;if(J[g>>2]!=(b|0)|J[g+4>>2]!=(c|0)){continue}break d}break}Z(152754,55629,366,62656);B()}J[f+100>>2]=J[f+100>>2]-1;b=(e<<4)+h|0;J[(d?d+12|0:i)>>2]=J[b+12>>2];c=J[f+96>>2];J[f+96>>2]=e;J[b+12>>2]=c}if(J[a+8>>2]-J[a+12>>2]>>4!=(j|0)){break a}return}Z(113800,55629,334,62656);B()}Z(143244,41058,209,53513);B()}function zw(a,b){var c=0,d=0,e=0,f=0,g=0,h=0,i=0;h=Ui-32|0;Ui=h;d=-4;J[h+12>>2]=0;J[h+4>>2]=1;J[h+8>>2]=0;f=yj(b);a:{if(f>>>0>1073741823){break a}d=-16;c=(f>>>3|0)+((f&7)!=0)|0;if(c>>>0>1e4){break a}b:{c:{e=J[a+4>>2];d:{if(e>>>0>>0){g=Zj(c,4);if(!g){break a}d=J[a+8>>2];if(d){e=e<<2;hj(g,d,e);Zi[J[66509]](d,0,e)|0;cj(J[a+8>>2])}J[a+8>>2]=g;J[a+4>>2]=c;break d}c=e;if(!c){break c}}d=c<<2;c=J[a+8>>2];break b}c=Zj(1,4);if(!c){break a}d=J[a+8>>2];if(d){Zi[J[66509]](d,0,0)|0;cj(J[a+8>>2])}J[a+8>>2]=c;J[a+4>>2]=1;d=4}e=0;ij(c,0,d);g=J[a+8>>2];J[g>>2]=0;J[a>>2]=1;i=b-1|0;d=f;while(1){e:{f:{switch(d|0){case 0:break a;case 1:break f;default:break e}}if(K[b|0]!=45){break e}J[a>>2]=-1;d=0;break a}c=H[d+i|0];f=c-48|0;c=(c-97&255)>>>0<6?c-87|0:(c-65&255)>>>0<6?c-55|0:(f&255)>>>0>=10?255:f;if(c>>>0<=15){f=g+(e>>>1&2147483644)|0;J[f>>2]=J[f>>2]|c<<(e<<2);e=e+1|0;d=d-1|0;continue}break}d=-6}Ui=h+32|0;return d}function yqa(a,b,c,d){a=a|0;b=b|0;c=c|0;d=d|0;var e=0,f=0,g=0,h=0,i=0,j=0,k=Q(0);g=Ui-16|0;Ui=g;a:{if((d|0)<=0){break a}if(d>>>0>=8){i=d&2147483640;while(1){e=(f<<4)+c|0;J[e+12>>2]=-581039253;J[e+28>>2]=-581039253;J[e+44>>2]=-581039253;J[e+60>>2]=-581039253;J[e+76>>2]=-581039253;J[e+92>>2]=-581039253;J[e+108>>2]=-581039253;J[e+124>>2]=-581039253;f=f+8|0;h=h+8|0;if((i|0)!=(h|0)){continue}break}}e=d&7;if(e){while(1){J[((f<<4)+c|0)+12>>2]=-581039253;f=f+1|0;j=j+1|0;if((e|0)!=(j|0)){continue}break}}if((d|0)<=0){break a}h=0;while(1){if((Zi[J[J[a>>2]+84>>2]](a)|0)>0){f=h<<4;i=f+b|0;e=c+f|0;f=0;while(1){Zi[J[J[a>>2]+96>>2]](a,f,g);k=Q(Q(N[i+8>>2]*N[g+8>>2])+Q(Q(N[i>>2]*N[g>>2])+Q(N[i+4>>2]*N[g+4>>2])));if(k>N[e+12>>2]){j=J[g+4>>2];J[e>>2]=J[g>>2];J[e+4>>2]=j;J[e+8>>2]=J[g+8>>2];N[e+12>>2]=k}f=f+1|0;if((Zi[J[J[a>>2]+84>>2]](a)|0)>(f|0)){continue}break}}h=h+1|0;if((h|0)!=(d|0)){continue}break}}Ui=g+16|0}function r3(a){a=a|0;var b=0,c=Q(0),d=Q(0),e=0,f=Q(0),g=Q(0),h=Q(0),i=0;e=Ui-32|0;Ui=e;J[e+28>>2]=0;i=1;a:{b:{switch(vn(a,1,e+28|0)|0){case 0:b=J[e+28>>2];f=N[b>>2];g=N[b+4>>2];d=N[b+8>>2];b=Sj(a,16);c=d;d=Q(Q(1)/Q(Y(Q(Q(d*d)+Q(Q(g*g)+Q(f*f))))));N[b+8>>2]=c*d;N[b+4>>2]=g*d;N[b>>2]=f*d;rj(a,-1e4,108973);Mj(a,-2);break a;case 1:b=J[e+28>>2];f=N[b>>2];g=N[b+4>>2];d=N[b+8>>2];c=N[b+12>>2];b=Sj(a,16);h=c;c=Q(Q(1)/Q(Y(Q(Q(c*c)+Q(Q(d*d)+Q(Q(g*g)+Q(f*f)))))));N[b+12>>2]=h*c;N[b+8>>2]=d*c;N[b+4>>2]=g*c;N[b>>2]=f*c;rj(a,-1e4,106998);Mj(a,-2);break a;case 2:b=J[e+28>>2];f=N[b>>2];g=N[b+4>>2];d=N[b+8>>2];c=N[b+12>>2];b=Sj(a,16);h=c;c=Q(Q(1)/Q(Y(Q(Q(c*c)+Q(Q(d*d)+Q(Q(g*g)+Q(f*f)))))));N[b+12>>2]=h*c;N[b+8>>2]=d*c;N[b+4>>2]=g*c;N[b>>2]=f*c;rj(a,-1e4,16786);Mj(a,-2);break a;default:break b}}J[e+16>>2]=16786;J[e+12>>2]=106998;J[e+8>>2]=108973;J[e+4>>2]=59259;J[e>>2]=53139;i=fj(a,115485,e)}Ui=e+32|0;return i|0}function D4(a,b,c){a=a|0;b=b|0;c=c|0;var d=0,e=0,f=0;b=Ui-3136|0;Ui=b;a:{if(jj(a,36507)){f=-1;if(jj(a,19811)){break a}}e=nj(2240);J[e+2188>>2]=0;J[e+2192>>2]=0;f=0;J[e+2236>>2]=0;d=e+2228|0;J[d>>2]=0;J[d+4>>2]=0;d=e+2220|0;J[d>>2]=0;J[d+4>>2]=0;d=e+2212|0;J[d>>2]=0;J[d+4>>2]=0;d=e+2204|0;J[d>>2]=0;J[d+4>>2]=0;d=e+2196|0;J[d>>2]=0;J[d+4>>2]=0;e=hj(e,a,2188);d=b+2076|0;J[d+8>>2]=0;J[d+12>>2]=0;J[d+28>>2]=1;J[d+32>>2]=0;J[d+4>>2]=2273;J[d+16>>2]=0;J[d+20>>2]=0;J[d+24>>2]=0;J[b+2096>>2]=214;J[b+2080>>2]=215;J[b+2084>>2]=216;J[b+2100>>2]=0;J[b+2076>>2]=e;d=UM(d,a+72|0,L[a+136>>1],!jj(a,19811));J[e+2188>>2]=d;if(!d){c=a+140|0;a=b+2112|0;OK(c,158859,a);c=a;a=b+16|0;vJ(c,a);J[b>>2]=a;dj(4,96538,28776,b);a=J[e+2188>>2];if(a){Uu(a)}a=J[e+2192>>2];if(a){dN(a)}J[e+2188>>2]=0;J[e+2192>>2]=0;b:{if(H[e+2208|0]&1){break b}a=J[e+2196>>2];if(!a){break b}cj(a)}cj(e);f=-1e3;break a}J[c>>2]=e}Ui=b+3136|0;return f|0}function Rga(a){a=a|0;var b=0,c=0,d=Q(0),e=0,f=0,g=0,h=0,i=0,j=Q(0),k=Q(0);b=Ui-112|0;Ui=b;f=pj(b+92|0,a,0,40569,293);e=J[a+8>>2]-J[a+12>>2]>>4;pk(a);g=mk(a,2);h=Yi;i=Ej(a,3);J[b+80>>2]=0;J[b+84>>2]=0;J[b+72>>2]=0;J[b+76>>2]=0;c=b- -64|0;J[c>>2]=0;J[c+4>>2]=0;J[b+56>>2]=0;J[b+60>>2]=0;J[b+48>>2]=0;J[b+52>>2]=0;J[b+40>>2]=0;J[b+44>>2]=0;J[b+32>>2]=0;J[b+36>>2]=0;J[b+24>>2]=0;J[b+28>>2]=0;Sk(a,1,b+56|0,b+24|0);a:{if((e|0)<4){d=Q(1);c=0;break a}b:{if(!kj(a,4)){d=Q(1);break b}Oj(a,4,5);uj(a,4);rj(a,-1,46386);if(kj(a,-1)){j=Q(wj(a,-1))}gj(a,-2);rj(a,-1,15035);if(kj(a,-1)){k=Q(wj(a,-1))}gj(a,-2);rj(a,-1,61778);if(kj(a,-1)){d=Q(wj(a,-1))}else{d=Q(1)}gj(a,-2);gj(a,-2)}c=0;if((e|0)==4){break a}c=0;if((kj(a,5)|0)!=6){break a}uj(a,5);c=Cu(a)+2|0}N[b+20>>2]=d;N[b+16>>2]=k;N[b+12>>2]=j;J[b+8>>2]=i;J[b>>2]=g;J[b+4>>2]=h;a=J[59850];Jk(b+24|0,b+56|0,J[a+8>>2],J[a+12>>2],0,c,a,b,24,0);oj(f);Ui=b+112|0;return 0}function iq(a,b,c){var d=0,e=0,f=0,g=0,h=0,i=0,j=0,k=0,l=0;h=Ui+-64|0;Ui=h;d=-20736;a:{if(!a){break a}f=J[a>>2];if(!f){break a}g=J[a+8>>2];if(!g){break a}d=J[f+12>>2];b:{if(d>>>0>>0){d=Zi[J[f+16>>2]](J[a+4>>2])|0;if(d){break b}d=Zi[J[J[a>>2]+20>>2]](J[a+4>>2],b,c)|0;if(d){break b}d=Zi[J[J[a>>2]+24>>2]](J[a+4>>2],h)|0;if(d){break b}g=J[a+8>>2];b=J[a>>2];d=J[b+12>>2];c=J[b+8>>2];b=h}f=ij(g,54,d);g=ij(f+d|0,92,J[J[a>>2]+12>>2]);c:{if(!c){break c}d=0;if((c|0)!=1){l=c&-2;while(1){e=d+f|0;i=b+d|0;H[e|0]=K[i|0]^K[e|0];e=d+g|0;H[e|0]=K[i|0]^K[e|0];e=d|1;i=e+f|0;j=b+e|0;H[i|0]=K[j|0]^K[i|0];e=e+g|0;H[e|0]=K[j|0]^K[e|0];d=d+2|0;k=k+2|0;if((k|0)!=(l|0)){continue}break}}if(!(c&1)){break c}c=d+f|0;b=b+d|0;H[c|0]=K[b|0]^K[c|0];c=d+g|0;H[c|0]=K[b|0]^K[c|0]}d=Zi[J[J[a>>2]+16>>2]](J[a+4>>2])|0;if(d){break b}b=J[a+4>>2];a=J[a>>2];d=Zi[J[a+20>>2]](b,f,J[a+12>>2])|0}Zi[J[66509]](h,0,64)|0}Ui=h- -64|0;return d}function El(a,b,c){var d=0,e=0,f=0,g=0,h=0,i=0,j=0,k=0;h=J[a+24>>2];f=J[a>>2];d=J[a+32>>2];if((d|0)!=-1){while(1){j=J[J[a>>2]+12>>2]+(d<<2)|0;g=J[j>>2];k=g>>>14|0;a:{if((d|0)>0){i=j-4|0;e=J[i>>2];if(H[(e&63)+173568|0]<0){break a}}e=g;i=j}k=k-131071|0;b:{c:{d:{if((e&63)==27){J[i>>2]=e>>>17&32704|e&8372250;e=(d^-1)+h|0;g=e>>31;if((e^g)-g>>>0>131071){break d}break c}e=(d^-1)+h|0;i=e>>31;if((e^i)-i>>>0<131072){break b}}qk(J[a+12>>2],56034)}g=J[j>>2]}J[j>>2]=(g&16383|e<<14)+2147467264;if((k|0)!=-1){d=(d+k|0)+1|0;if((d|0)!=-1){continue}}break}h=J[a+24>>2]}J[a+32>>2]=-1;e:{if(J[f+44>>2]>(h|0)){d=J[f+12>>2];break e}d=ps(J[a+16>>2],J[f+12>>2],f+44|0,4,2147483645,6514);J[f+12>>2]=d;h=J[a+24>>2]}J[(h<<2)+d>>2]=b;d=J[a+24>>2];f:{if((d|0)>2]){b=J[f+20>>2];break f}b=ps(J[a+16>>2],J[f+20>>2],f+48|0,4,2147483645,6514);J[f+20>>2]=b;d=J[a+24>>2]}J[(d<<2)+b>>2]=c;b=a;a=J[a+24>>2];J[b+24>>2]=a+1;return a}function jy(a,b,c){var d=0,e=0,f=0,g=0,h=0,i=0;a:{b:{c:{d:{e:{if(c>>>0<2097152){if(b+1>>>0<2){break b}d=J[a+100>>2];g=b&65535;if(d>>>0<=g>>>0){break a}c=J[J[a+92>>2]+(g<<2)>>2];f=1;if(!c){break c}f=1;if(L[J[a+96>>2]+(g<<1)>>1]!=(b>>>16|0)){break c}e=L[c+64>>1];f=sj(e<<2);if(!e){break d}d=0;while(1){i=d<<2;e=J[i+J[c+52>>2]>>2];h=J[a+108>>2];if(e>>>0>=J[a+112>>2]-h>>2>>>0){break e}J[f+i>>2]=J[(e<<2)+h>>2];wr(a,e);d=d+1|0;h=L[c+64>>1];if(d>>>0>>0){continue}break}break d}Z(94863,55553,306,33926);B()}Z(145396,53895,487,84789);B()}hb(h|0,f|0);f:{if(!(K[J[79491]+220|0]&2)){break f}e=_()|0;if(!e){break f}Cj(e,63373,3776);Z(114101,40535,3776,63373);B()}cj(f);cj(J[c+52>>2]);d=J[a+100>>2];e=c;f=0}if(d>>>0<=g>>>0){break a}c=J[a+92>>2]+(g<<2)|0;g:{if(!J[c>>2]){break g}d=g<<1;if(L[d+J[a+96>>2]>>1]!=(b>>>16|0)){break g}J[c>>2]=0;I[d+J[a+96>>2]>>1]=0}if(f){break b}cj(e)}return}Z(2686,54166,244,5438);B()}function MO(a,b,c,d){var e=0,f=0,g=0,h=0,i=0,j=0,k=0;e=Ui-32|0;Ui=e;i=e+24|0;g=i;J[g>>2]=0;J[g+4>>2]=0;J[e+16>>2]=0;J[e+20>>2]=0;a:{j=L[98140];b:{if((j|0)==(c|0)){break b}k=e+16|4;c:{d:{while(1){e:{if((f|0)==(h|0)){if(H[e+28|0]&1){break e}lj((h-J[e+16>>2]>>2)+32|0,4,e+16|0,i,k);h=J[e+24>>2];f=J[e+20>>2]}g=f;if((f|0)==(h|0)){break d}f=f+4|0;J[e+20>>2]=f;c=c&65535;J[g>>2]=c;g=J[b+32>>2];if(c>>>0>=(J[b+36>>2]-g|0)/672>>>0){break a}c=L[(g+P(c,672)|0)+654>>1];if((j|0)!=(c|0)){continue}break c}break}Z(151729,53895,501,2284);B()}Z(112520,53895,557,53220);B()}f:{c=J[e+16>>2];if((f|0)==(c|0)){h=0;break f}f=0;while(1){c=J[(f<<2)+c>>2];g=J[b+32>>2];if(c>>>0<(J[b+36>>2]-g|0)/672>>>0){h=LO(a,b,g+P(c,672)|0,e+12|0);if(!h){Zx(b,J[e+12>>2],d,0)}f=f+1|0;c=J[e+16>>2];if(f>>>0>2]-c>>2>>>0){continue}break f}break}break a}if(!c|H[e+28|0]&1){break b}cj(c)}Ui=e+32|0;return h}Z(145396,53895,487,84789);B()}function Jwa(a){a=a|0;var b=0,c=0,d=0,e=0,f=0,g=0;Tj(J[218568]);a=J[218567];if(a){e=Ui-16|0;Ui=e;a:{b:{b=J[a+12>>2];c=J[a+8>>2];c:{if((b|0)==(c|0)){break c}b=b-c>>6;g=b>>>0<=1?1:b;c=0;while(1){b=J[a+8>>2];if(J[a+12>>2]-b>>6>>>0<=f>>>0){break b}d:{e:{f:{b=b+(f<<6)|0;switch(J[b+48>>2]-1|0){case 0:break e;case 1:break f;default:break d}}c=c+1|0;break d}d=J[b+40>>2];if(d){Ku(d);J[b+40>>2]=0}d=J[b+44>>2];if((d|0)!=-1){sq(d);Ln(J[b+44>>2])}J[b+40>>2]=0;J[b+44>>2]=0;J[b>>2]=0;J[b+4>>2]=0;J[b+56>>2]=0;J[b+60>>2]=0;J[b+48>>2]=0;J[b+52>>2]=0;J[b+32>>2]=0;J[b+36>>2]=0;J[b+24>>2]=0;J[b+28>>2]=0;J[b+16>>2]=0;J[b+20>>2]=0;J[b+8>>2]=0;J[b+12>>2]=0;J[b+44>>2]=-1}f=f+1|0;if((g|0)!=(f|0)){continue}break}if((c|0)<=0){break c}J[e>>2]=c;dj(3,99340,49430,e)}On(J[a+28>>2]);g:{if(H[a+20|0]&1){break g}b=J[a+8>>2];if(!b){break g}cj(b)}Ui=e+16|0;break a}Z(145396,54052,487,84789);B()}cj(a)}Lj(J[218568]);On(J[218568])}function r5(a){a=a|0;var b=0,c=0,d=0,e=0,f=0,g=0,h=0;e=Ui+-64|0;Ui=e;c=J[a+8>>2]-J[a+12>>2]|0;Bj(a);f=qj(a,-1,J[84364],139081);gj(a,-2);if(c>>4==J[a+8>>2]-J[a+12>>2]>>4){d=wj(a,1);a:{if(d<4294967296&d>=0){b=~~d>>>0;break a}b=0}b:{if(b>>>0>=8){J[e+4>>2]=b;J[e>>2]=35504;a=fj(a,142594,e);break b}c=e+24|0;h=b;d=wj(a,2);c:{if(d<4294967296&d>=0){b=~~d>>>0;break c}b=0}d=wj(a,3);d:{if(d<4294967296&d>=0){g=~~d>>>0;break d}g=0}J[c+24>>2]=g;J[c+28>>2]=0;J[c+16>>2]=b;J[c+20>>2]=0;J[c+8>>2]=h;J[c+12>>2]=0;J[c>>2]=14;b=J[f+4>>2];if((b|0)!=J[f+8>>2]){J[f+4>>2]=b+40;a=J[c+36>>2];J[b+32>>2]=J[c+32>>2];J[b+36>>2]=a;a=J[c+28>>2];J[b+24>>2]=J[c+24>>2];J[b+28>>2]=a;a=J[c+20>>2];J[b+16>>2]=J[c+16>>2];J[b+20>>2]=a;a=J[c+12>>2];J[b+8>>2]=J[c+8>>2];J[b+12>>2]=a;a=J[c+4>>2];J[b>>2]=J[c>>2];J[b+4>>2]=a;a=0;break b}J[e+16>>2]=(b-J[f>>2]|0)/40;a=fj(a,132935,e+16|0)}Ui=e- -64|0;return a|0}Z(143244,37616,478,51340);B()}function dD(a,b,c,d,e){var f=0,g=Q(0),h=Q(0),i=Q(0),j=Q(0),k=Q(0),l=Q(0),m=Q(0),n=Q(0),o=Q(0),p=Q(0);f=Ui+-64|0;Ui=f;a:{if(d){Xs(b,d,0,f);g=N[d+448>>2];i=g;h=N[d+452>>2];l=h;b:{c:{d:{d=J[c+476>>2];switch(d>>>16&3){case 1:break c;case 0:break d;default:break a}}b=gh}i=b?g:h;l=i;break a}d=J[b+12>>2];m=Q(M[d+20>>2]);n=Q(M[b+376>>2]);g=Q(m/n);i=g;j=Q(M[d+24>>2]);k=Q(M[b+380>>2]);h=Q(j/k);l=h;e:{f:{g:{h:{d=J[c+476>>2];switch(d>>>16&3){case 1:break g;case 0:break h;default:break e}}b=gh}i=b?g:h;l=i}J[f+52>>2]=0;J[f+56>>2]=0;J[f+44>>2]=0;J[f+48>>2]=0;o=Q(Q(j-Q(l*k))*Q(.5));p=Q(Q(m-Q(i*n))*Q(.5))}m=N[e>>2];j=N[e+4>>2];n=N[f+48>>2];k=N[f+52>>2];N[a+8>>2]=N[e+8>>2]-N[f+56>>2];c=(d>>>10&3)-1|0;j=Q(Q(j-k)-(c>>>0<2?Q(0):o));N[a+4>>2]=Q(Q(1)/l)*j;b=(d>>>8&3)-1|0;k=Q(Q(m-n)-(b>>>0<2?Q(0):p));N[a>>2]=Q(Q(1)/i)*k;if(b>>>0<=1){N[a>>2]=k/g}if(c>>>0<=1){N[a+4>>2]=j/h}Ui=f- -64|0}function t4(a,b,c,d,e,f){a=a|0;b=b|0;c=c|0;d=d|0;e=e|0;f=f|0;var g=0,h=0,i=0,j=0,k=0;i=Ui-32|0;Ui=i;h=-2;g=J[a+2200>>2];a:{if(!g){break a}g=J[J[a+2196>>2]+(mxa(b,c,g)<<2)>>2];if((g|0)==-1){break a}j=J[a+2204>>2];while(1){g=j+P(g,24)|0;if(J[g>>2]!=(b|0)|J[g+4>>2]!=(c|0)){g=J[g+20>>2];if((g|0)!=-1){continue}break a}break}if(M[g+12>>2]>f>>>0){h=-4;break a}if(ex(J[a+2188>>2],J[g+16>>2])){h=-3;break a}b:{if(J[g+8>>2]){b=J[a+2188>>2];if(b){b=J[b+96>>2]}else{b=0}J[i+24>>2]=b;c=J[i+24>>2];b=nj(c);tu(J[a+2188>>2],b,c);c=b+16|0;f=J[i+24>>2]-16|0;h=J[g+8>>2];g=J[h+32>>2];j=g&8;k=J[(j?28:24)+h>>2];h=J[h+24>>2];c:{if(!(g&4)){break c}if(!(Zi[J[55864]](c,f)|0)){break c}J[i+16>>2]=d;dj(4,96538,26244,i+16|0);cj(b);h=-3;break b}d:{if(j){if(!FC(c,k,e,h,i+28|0)){break d}J[i>>2]=d;dj(4,96538,26276,i);cj(b);h=-3;break b}hj(e,c,f)}cj(b);h=0;break b}tu(J[a+2188>>2],e,f);h=0}Gt(J[a+2188>>2])}Ui=i+32|0;return h|0}function pga(a){a=a|0;var b=0,c=0,d=Q(0),e=0,f=Q(0),g=Q(0),h=Q(0),i=0;b=Ui-80|0;Ui=b;i=pj(b+60|0,a,0,39481,1011);J[b+48>>2]=0;J[b+52>>2]=0;J[b+40>>2]=0;J[b+44>>2]=0;J[b+32>>2]=0;J[b+36>>2]=0;J[b+24>>2]=0;J[b+28>>2]=0;a:{if(!$l(a,b+24|0)){a=Jj(i,1605,0);break a}nr(a,J[78152]);c=Vj(a,-1);gj(a,-2);e=J[J[J[pk(a)+80>>2]+8>>2]>>2];c=J[c+8>>2];if(M[J[e+4>>2]>>2]>c>>>0){c=J[(e+(c<<2)|0)+12>>2]}else{c=0}if(!c){a=Jj(i,120224,0);break a}a=Pl(a,1);N[b>>2]=N[a>>2];N[b+4>>2]=N[a+4>>2];N[b+8>>2]=N[a+8>>2];e=J[c+132>>2];b:{if(H[c+145|0]&1){a=Ui-16|0;Ui=a;f=N[b>>2];g=N[b+4>>2];d=N[b+8>>2];c=J[e+64>>2];J[c+56>>2]=0;h=d;d=N[c+72>>2];h=Q(h*d);N[c+52>>2]=h;g=Q(d*g);N[c+48>>2]=g;d=Q(d*f);N[c+44>>2]=d;c=J[e+84>>2];J[a+12>>2]=0;N[a+8>>2]=h;N[a+4>>2]=g;N[a>>2]=d;Zi[J[J[c>>2]+68>>2]](c,a);Ui=a+16|0;break b}d=N[b>>2];f=N[J[e+36>>2]+64>>2];N[e+103012>>2]=f*N[b+4>>2];N[e+103008>>2]=f*d}a=0}oj(i);Ui=b+80|0;return a|0}function Pv(a,b){var c=0,d=0,e=0,f=0,g=0;d=J[J[b+52>>2]+8>>2];e=J[J[b+48>>2]+8>>2];c=J[a+72>>2];if(!(!c|!(K[b+4|0]&2))){Zi[J[J[c>>2]+12>>2]](c,b)}c=J[b+12>>2];f=J[b+8>>2];if(f){J[f+12>>2]=c}if(c){J[c+8>>2]=f}if(J[a+60>>2]==(b|0)){J[a+60>>2]=c}c=J[b+28>>2];f=J[b+24>>2];if(f){J[f+12>>2]=c}if(c){J[c+8>>2]=f}if(J[e+112>>2]==(b+16|0)){J[e+112>>2]=c}c=J[b+44>>2];e=J[b+40>>2];if(e){J[e+12>>2]=c}if(c){J[c+8>>2]=e}if(J[d+112>>2]==(b+32|0)){J[d+112>>2]=c}f=J[a+76>>2];a:{b:{if(K[336092]){c=J[b+48>>2];c:{if(J[b+132>>2]<=0){d=J[b+52>>2];break c}d=J[c+8>>2];e=L[d+4>>1];if(!(e&2)){J[d+144>>2]=0;I[d+4>>1]=e|2}d=J[b+52>>2];e=J[d+8>>2];g=L[e+4>>1];if(g&2){break c}J[e+144>>2]=0;I[e+4>>1]=g|2}c=J[J[c+12>>2]+4>>2];if((c|0)<0){break b}d=J[J[d+12>>2]+4>>2];if((d|0)>=5){break b}Zi[J[((P(c,60)+335792|0)+P(d,12)|0)+4>>2]](b,f);break a}Z(60789,38952,108,3321);B()}Z(12266,38952,119,3321);B()}J[a+64>>2]=J[a+64>>2]-1}function vs(a,b){var c=0,d=0,e=0,f=0,g=0,h=0;c=(C(b),v(2));f=c;a:{d=c<<1;b:{if(!d){break b}h=(C(a),v(2));e=h>>>23&255;if((e|0)==255){break b}if((c&2147483647)>>>0<2139095041){break a}}a=Q(a*b);return Q(a/a)}c=h<<1;if(c>>>0<=d>>>0){return(c|0)==(d|0)?Q(a*Q(0)):a}g=f>>>23&255;c:{if(!e){e=0;c=h<<9;if((c|0)>=0){while(1){e=e-1|0;c=c<<1;if((c|0)>=0){continue}break}}c=h<<1-e;break c}c=h&8388607|8388608}d:{if(!g){g=0;d=f<<9;if((d|0)>=0){while(1){g=g-1|0;d=d<<1;if((d|0)>=0){continue}break}}f=f<<1-g;break d}f=f&8388607|8388608}if((e|0)>(g|0)){while(1){e:{d=c-f|0;if((d|0)<0){break e}c=d;if(c){break e}return Q(a*Q(0))}c=c<<1;e=e-1|0;if((g|0)<(e|0)){continue}break}e=g}f:{d=c-f|0;if((d|0)<0){break f}c=d;if(c){break f}return Q(a*Q(0))}g:{if(c>>>0>8388607){d=c;break g}while(1){e=e-1|0;f=c>>>0<4194304;d=c<<1;c=d;if(f){continue}break}}c=h&-2147483648;return x(2,c|((e|0)>0?d-8388608|e<<23:d>>>1-e|0)),D()}function R8(a){a=a|0;var b=0,c=0,d=0,e=0,f=0,g=0,h=0,i=0,j=0;b=Ui-80|0;Ui=b;j=pj(b+60|0,a,1,37682,4384);Bj(a);g=qj(a,-1,J[219396],139183);gj(a,-2);d=Qj(a,1,0);c=un(a,2);if(!c){c=Pl(a,2)}e=J[c+4>>2];f=J[c>>2];N[b+40>>2]=N[c+8>>2];J[b+32>>2]=f;J[b+36>>2]=e;c=Ui-32|0;Ui=c;a:{b:{c:{d:{e=J[g+32>>2];h=(J[g+36>>2]-e|0)/672|0;f=L[d+650>>1]|L[d+648>>1]<<16;i=f&65535;d=i;if(h>>>0>d>>>0){d=P(d,672)+e|0;if(L[d+648>>1]!=(f>>>16|0)){break d}if(L[d+650>>1]!=(i|0)){break c}f=L[d+656>>1];if((f|0)==65535){e=0}else{if(f>>>0>=h>>>0){break b}e=P(f,672)+e|0}N[c>>2]=N[b+32>>2];N[c+4>>2]=N[b+36>>2];N[c+8>>2]=N[b+40>>2];dD(c+16|0,g,d,e,c);N[b+16>>2]=N[c+16>>2];N[b+20>>2]=N[c+20>>2];N[b+24>>2]=N[c+24>>2];Ui=c+32|0;break a}break b}Z(47372,40876,188,69601);B()}Z(5388,40876,189,69601);B()}Z(145396,53895,487,84789);B()}N[b>>2]=N[b+16>>2];c=J[b+24>>2];J[b+4>>2]=J[b+20>>2];J[b+8>>2]=c;cl(a,b);oj(j);Ui=b+80|0;return 1}function Mia(a){a=a|0;var b=0,c=0,d=0,e=0,f=0,g=0,h=0;e=J[a+8>>2];h=(J[J[a+16>>2]>>2]-J[e+48>>2]|0)/48|0;c=J[e>>2];d=J[e+4>>2];if((c|0)!=(d|0)){while(1){b=P(g,40)+c|0;if(!(J[b>>2]!=J[a+4>>2]|J[b+28>>2]!=(h|0))){J[b>>2]=0;c=J[e+84>>2];a:{b=J[b+16>>2];if(!b){break a}b:{d=b&65535;f=J[c+4>>2];c=J[c>>2];if(d>>>0>=f-c>>2>>>0){break b}c=J[c+(d<<2)>>2];if(L[c+80>>1]!=(b>>>16|0)){dj(4,96107,66969,0);break a}b=J[c+4>>2];d=J[c>>2];if((b|0)==(d|0)){break a}b=(b-d|0)/304|0;d=b>>>0<=1?1:b;b=0;while(1){f=J[c>>2];if((J[c+4>>2]-f|0)/304>>>0<=b>>>0){break b}f=f+P(b,304)|0;H[f+296|0]=K[f+296|0]|4;b=b+1|0;if((d|0)!=(b|0)){continue}break}break a}Z(145396,53895,487,84789);B()}d=J[e+4>>2];c=J[e>>2]}g=g+1|0;if(g>>>0<(d-c|0)/40>>>0){continue}break}}c:{c=J[e+64>>2];if(c){a=J[e+72>>2]-1|0;if(a>>>0>=M[e+68>>2]){break c}J[e+72>>2]=a;J[c+(a<<2)>>2]=h;return 0}Z(49493,54340,140,53220);B()}Z(2650,54340,141,53220);B()}function qF(a,b,c,d,e){var f=0,g=0,h=0,i=0,j=0,k=0,l=0,m=0,n=0,o=0;l=J[a>>2];g=l;j=J[a+4>>2];if((g|0)!=(j|0)){h=j-g>>2;while(1){f=h>>>1|0;i=(f<<2)+g|0;k=J[i>>2];o=i+4|0;m=g;g=J[k+12>>2];i=(c|0)==(g|0)&b>>>0>M[k+8>>2]|c>>>0>g>>>0;g=i?o:m;h=i?(f^-1)+h|0:f;if(h){continue}break}}if((g|0)==(j|0)){a=0}else{g=g-l>>2;k=j-l>>2;a:{if(g>>>0>=k>>>0){break a}n=1;while(1){j=0;f=J[l+(g<<2)>>2];h=J[f+8>>2];i=J[f+12>>2];if((i|0)==(c|0)&b>>>0>>0|c>>>0>>0){break a}b:{if((c|0)==(i|0)&b>>>0>h>>>0|c>>>0>i>>>0){break b}h=J[f+24>>2]&2147483647;if(h>>>0>d>>>0){break a}m=h;h=J[f+20>>2];if(m+h>>>0<=d>>>0){break b}J[e>>2]=J[f+16>>2];b=J[f+24>>2];J[e+8>>2]=h;J[e+4>>2]=b&2147483647;b=J[f+4>>2];J[f+4>>2]=0;c=J[f+24>>2];d=J[f>>2];J[d+4>>2]=b;J[b>>2]=d;a=((c|0)<0?40:24)+a|0;b=J[a+4>>2];J[f+4>>2]=b;J[f>>2]=a;J[a+4>>2]=f;J[b>>2]=f;j=1;break a}g=g+1|0;n=k>>>0>g>>>0;if((g|0)!=(k|0)){continue}break}}a=j&n}return a&1}function qK(a,b,c,d){var e=Q(0),f=Q(0),g=Q(0),h=Q(0),i=Q(0),j=Q(0),k=Q(0),l=Q(0),m=Q(0),n=Q(0),o=Q(0),p=Q(0),q=Q(0),r=0,s=0,t=0,u=0;a:{if((a|0)!=(b|0)){b=(b-a|0)/176|0;r=b>>>0<=1?1:b;s=d-c>>6;d=0;while(1){if((d|0)==(s|0)){break a}b=P(d,176)+a|0;e=N[b+48>>2];k=N[b+52>>2];h=N[b+60>>2];n=N[b+56>>2];l=N[b+88>>2];g=N[b+84>>2];m=N[b+80>>2];t=J[b+68>>2];u=J[b+64>>2];i=N[b+72>>2];b=(d<<6)+c|0;J[b+60>>2]=1065353216;N[b+56>>2]=i;J[b+48>>2]=u;J[b+52>>2]=t;N[b+12>>2]=m*Q(0);N[b+28>>2]=g*Q(0);N[b+44>>2]=l*Q(0);o=Q(k+k);j=Q(e*o);i=Q(n+n);f=Q(h*i);N[b+4>>2]=m*Q(j+f);p=Q(e*i);q=Q(o*h);N[b+8>>2]=m*Q(p-q);N[b+16>>2]=g*Q(j-f);j=Q(k*i);f=h;h=Q(e+e);f=Q(f*h);N[b+24>>2]=g*Q(j+f);N[b+32>>2]=l*Q(p+q);N[b+36>>2]=l*Q(j-f);f=g;e=Q(Q(1)-Q(e*h));g=Q(n*i);N[b+20>>2]=f*Q(e-g);f=e;e=Q(k*o);N[b+40>>2]=l*Q(f-e);N[b>>2]=m*Q(Q(Q(1)-e)-g);d=d+1|0;if((r|0)!=(d|0)){continue}break}}return}Z(145396,53895,487,84789);B()}function DM(a,b,c,d){var e=Q(0),f=Q(0),g=Q(0),h=Q(0),i=Q(0),j=Q(0),k=Q(0),l=Q(0),m=Q(0),n=Q(0);i=N[c+44>>2];h=N[d+20>>2];j=N[d+16>>2];e=N[c+40>>2];k=N[c+32>>2];f=N[d+24>>2];l=Q(Q(Q(i*h)+Q(j*e))-Q(k*f));g=N[c+36>>2];m=Q(Q(e*f)+Q(Q(k*j)+Q(h*g)));n=Q(Q(Q(i*f)+Q(h*k))-Q(g*j));f=Q(Q(Q(i*j)+Q(f*g))-Q(e*h));h=Q(N[c+24>>2]+Q(Q(l*k)+Q(Q(Q(m*e)+Q(i*n))-Q(f*g))));j=Q(N[c+20>>2]+Q(Q(f*e)+Q(Q(Q(m*g)+Q(i*l))-Q(n*k))));e=Q(N[c+16>>2]+Q(Q(n*g)+Q(Q(Q(m*k)+Q(i*f))-Q(l*e))));if(!J[c+12>>2]){i=N[b+60>>2];g=N[b+44>>2];f=Q(e*g);h=H[b+82|0]&1?Q(h*g):h;e=N[b+52>>2];k=N[b+56>>2];j=Q(j*g);l=Q(Q(Q(i*f)+Q(h*e))-Q(k*j));g=N[b+48>>2];m=Q(Q(k*h)+Q(Q(g*f)+Q(e*j)));n=Q(Q(Q(i*j)+Q(k*f))-Q(g*h));f=Q(Q(Q(i*h)+Q(g*j))-Q(e*f));j=Q(N[b+36>>2]+Q(Q(l*k)+Q(Q(Q(m*e)+Q(i*n))-Q(f*g))));h=Q(N[b+40>>2]+Q(Q(n*g)+Q(Q(Q(m*k)+Q(i*f))-Q(l*e))));e=Q(N[b+32>>2]+Q(Q(f*e)+Q(Q(Q(m*g)+Q(i*l))-Q(n*k))))}N[a+8>>2]=h;N[a+4>>2]=j;N[a>>2]=e}function oK(a,b){var c=0,d=0,e=0,f=0,g=0,h=0,i=0,j=0;f=Ui-528|0;Ui=f;d=J[218810];if(d){hn(d);cj(J[218810])}d=Zj(1,344);J[218810]=d;c=-1;a:{if(!d){break a}g=a;h=b+1|0;b=0;e=Ui-16|0;Ui=e;a=-10240;b:{if(!d|!g){break b}c:{if(!(K[(g+h|0)-1|0]|!h)){if(Bm(g,135156)){break c}}a=uw(d,g,h);break b}if((h|0)!=1){a=0;while(1){d:{c=e+4|0;J[c>>2]=0;J[c+4>>2]=0;J[c+8>>2]=0;e:{f:{g:{c=uA(c,135156,135184,g,e);if(c){if((c|0)!=-5248){break g}a=c;break b}i=J[e>>2];c=uw(d,J[e+4>>2],J[e+8>>2]);br(e+4|0);if(!c){j=1;break e}if((c|0)!=-10368){break f}a=c;break b}if((c|0)==-4224){break d}a=a+1|0;b=b?b:c;br(e+4|0);i=J[e>>2];break e}a=a+1|0;b=b?b:c}g=g+i|0;h=h-i|0;if(h>>>0>1){continue}}break}if(j){break b}a=b;if(b){break b}}a=-10112}Ui=e+16|0;c=0;if(!a){break a}d=f+16|0;ij(d,0,512);H[f+16|0]=0;b=a>>31;J[f+4>>2]=(b^a)-b;J[f>>2]=(a|0)<0?135229:158859;J[f+8>>2]=d;dj(4,99340,31438,f);c=-2e3}Ui=f+528|0;return c}function nC(a,b,c){var d=0,e=0,f=0,g=0,h=0,i=0,j=0,k=0,l=0,m=Q(0);i=Ui-16|0;Ui=i;J[i+12>>2]=0;d=J[a+2052>>2];f=J[a+2048>>2];g=(d-f|0)/288|0;a:{b:{if((d|0)==(f|0)){f=d;break b}e=J[a+2068>>2];if((e|0)==J[a+2072>>2]){e=J[a+2064>>2]}else{J[a+2064>>2]=0;J[a+2028>>2]=0;J[a+2016>>2]=0;J[a+2020>>2]=0;J[a+2072>>2]=e;e=0}if((e|0)==(g|0)){break b}e=g-e|0;f=zq(a,e);j=Su(a,1622,1623,a)<<6;k=b<<4&48;g=0;d=f;while(1){h=J[a+2064>>2]+g|0;b=J[a+2048>>2];if(h>>>0>=(J[a+2052>>2]-b|0)/288>>>0){break a}b=P(h,288)+b|0;h=J[b+96>>2];l=J[b+100>>2];m=N[b+104>>2];J[d+24>>2]=c;J[d+16>>2]=b;J[d+20>>2]=0;N[d+8>>2]=m;J[d>>2]=h;J[d+4>>2]=l;J[d+36>>2]=J[d+36>>2]&-64|k;J[d+28>>2]=J[b+192>>2];J[d+32>>2]=J[J[b+180>>2]+144>>2];J[d+36>>2]=J[d+36>>2]&-16321|j;d=d+48|0;g=g+1|0;if((e|0)!=(g|0)){continue}break}yq(a,f,d);f=J[a+2048>>2];d=J[a+2052>>2]}J[a+2064>>2]=(d-f|0)/288;Ui=i+16|0;return}Z(145396,53895,487,84789);B()}function py(a,b){var c=0,d=0,e=0;d=J[b+56>>2];if((d|0)!=J[b+60>>2]){while(1){vj(a,J[(c<<2)+d>>2]);c=c+1|0;d=J[b+56>>2];if(c>>>0>2]-d>>2>>>0){continue}break}}d=J[b+8>>2];if((d|0)!=J[b+12>>2]){c=0;while(1){vj(a,J[(c<<2)+d>>2]);c=c+1|0;d=J[b+8>>2];if(c>>>0>2]-d>>2>>>0){continue}break}}d=J[b+72>>2];if((d|0)!=J[b+76>>2]){c=0;while(1){vj(a,J[(c<<2)+d>>2]);c=c+1|0;d=J[b+72>>2];if(c>>>0>2]-d>>2>>>0){continue}break}}d=J[b+40>>2];if((d|0)!=J[b+44>>2]){c=0;while(1){vj(a,J[(c<<3)+d>>2]);c=c+1|0;d=J[b+40>>2];if(c>>>0>2]-d>>3>>>0){continue}break}}e=J[b+104>>2];if(e){d=0;while(1){c=J[J[b+100>>2]+(d<<2)>>2];if((c|0)!=-1){while(1){c=J[b+108>>2]+(c<<4)|0;vj(a,J[c+8>>2]);c=J[c+12>>2];if((c|0)!=-1){continue}break}e=J[b+104>>2]}d=d+1|0;if(e>>>0>d>>>0){continue}break}}c=J[b+4>>2];if(c){vj(a,c)}c=J[b>>2];if(c){Uj(c)}c=J[b+88>>2];if(c){cj(c)}b=J[b+96>>2];if(b){vj(a,b)}}function C3(a){a=a|0;var b=0,c=Q(0),d=Q(0),e=Q(0),f=0;f=Ui-32|0;Ui=f;a:{if(kk(a,1)){c=Q(wj(a,1));d=c;e=c;if(J[a+8>>2]-J[a+12>>2]>>4==3){d=Q(wj(a,2));e=Q(wj(a,3))}b=Sj(a,64);J[b+4>>2]=0;J[b+8>>2]=0;N[b>>2]=c;J[b+24>>2]=0;J[b+28>>2]=0;N[b+20>>2]=d;J[b+44>>2]=0;J[b+48>>2]=0;N[b+40>>2]=e;J[b+60>>2]=1065353216;J[b+12>>2]=0;J[b+16>>2]=0;J[b+32>>2]=0;J[b+36>>2]=0;J[b+52>>2]=0;J[b+56>>2]=0;rj(a,-1e4,106883);Mj(a,-2);a=fj(a,108938,0);break a}b=qj(a,1,J[215720],0);d=N[b+8>>2];e=N[b>>2];c=N[b+4>>2];if(!(!(e!=e|c!=c)&d==d)){O[f+24>>3]=d;O[f+16>>3]=c;J[f>>2]=1;O[f+8>>3]=e;fj(a,138436,f);d=N[b+8>>2];c=N[b+4>>2];e=N[b>>2]}b=Sj(a,64);J[b+4>>2]=0;J[b+8>>2]=0;N[b>>2]=e;J[b+24>>2]=0;J[b+28>>2]=0;N[b+20>>2]=c;J[b+44>>2]=0;J[b+48>>2]=0;N[b+40>>2]=d;J[b+60>>2]=1065353216;J[b+12>>2]=0;J[b+16>>2]=0;J[b+32>>2]=0;J[b+36>>2]=0;J[b+52>>2]=0;J[b+56>>2]=0;rj(a,-1e4,106883);Mj(a,-2);a=1}Ui=f+32|0;return a|0}function q4(a,b,c,d){a=a|0;b=b|0;c=c|0;d=d|0;var e=0,f=0,g=0;f=Ui-16|0;Ui=f;e=J[a>>2];a:{if((e|0)<0){d=-69;break a}b:{if(d){break b}d=J[a+8>>2];g=J[a+12>>2];if(!(d|g)){d=0;break b}d=lxa(d,g,1e3)}J[f+8>>2]=0;J[f+12>>2]=0;J[f>>2]=0;J[f+4>>2]=0;SR(f,0,e);d=RR(f,d?d:-1);e=-26624;c:{if(!d){break c}e=J[245744]==27?-26880:-76;if((d|0)<0){break c}g=J[a>>2];e=-69;d:{if((g|0)<0){break d}d=Ui-16|0;Ui=d;J[d+12>>2]=c;J[d+8>>2]=b;b=pb(g|0,d+8|0,1,d+4|0)|0;if(b){J[245744]=b;b=-1}else{b=0}Ui=d+16|0;b=b?-1:J[d+4>>2];e:{if((b|0)>=0){break e}c=J[245744];a=nm(J[a>>2],3,0);J[245744]=c;b=-26880;if((c|0)==6?a&2048:0){break e}b=-80;f:{switch(c-15|0){case 12:e=-26880;break d;default:if((c|0)==64){break e}break;case 0:break e;case 1:case 2:case 3:case 4:case 5:case 6:case 7:case 8:case 9:case 10:case 11:break f}}b=-76}e=b}}d=e;if(H[f+12|0]&1){break a}a=J[f>>2];if(!a){break a}cj(a)}Ui=f+16|0;return d|0}function hy(a){var b=0;b=Ui-144|0;Ui=b;a:{b:{c:{d:{e:{f:{g:{h:{i:{j:{if((a|0)<=36181){switch(a-36054|0){case 0:break j;case 2:case 3:case 4:break c;case 7:break f;case 6:break g;case 5:break h;case 1:break i;default:break d}}if((a|0)==36182){break e}if((a|0)!=36264){break c}J[b+128>>2]=36264;J[b+132>>2]=86290;dj(4,89301,30677,b+128|0);break a}J[b+32>>2]=36054;J[b+36>>2]=87583;dj(4,89301,30677,b+32|0);break a}J[b+48>>2]=36055;J[b+52>>2]=87538;dj(4,89301,30677,b+48|0);break a}J[b+64>>2]=36059;J[b+68>>2]=90318;dj(4,89301,30677,b- -64|0);break a}J[b+80>>2]=36060;J[b+84>>2]=90356;dj(4,89301,30677,b+80|0);break a}J[b+96>>2]=36061;J[b+100>>2]=97270;dj(4,89301,30677,b+96|0);break a}J[b+112>>2]=36182;J[b+116>>2]=95819;dj(4,89301,30677,b+112|0);break a}if((a|0)==33305){break b}}J[b>>2]=a;dj(4,89301,102341,b);break a}J[b+16>>2]=33305;J[b+20>>2]=97532;dj(4,89301,30677,b+16|0)}Ui=b+144|0}function hB(a,b,c,d,e,f){var g=0,h=0,i=0,j=0,k=0;a:{if(K[d+59|0]==(b|0)){break a}g=e<<2;h=J[g+172316>>2];b:{if(Q(Q(Q(N[d+8>>2]*N[c+24>>2])+Q(Q(N[d>>2]*N[c+16>>2])+Q(N[d+4>>2]*N[c+20>>2])))-N[d+16>>2])>2],J[a+g>>2],c,0);if(!a){break a}J[a+36>>2]=d;H[a+56|0]=e;H[(d+e|0)+56|0]=0;J[(d+g|0)+36>>2]=a;b=J[f>>2];c:{if(b){J[b+40>>2]=a;H[b+57|0]=2;J[a+44>>2]=b;H[a+58|0]=1;break c}J[f+4>>2]=a}J[f>>2]=a;a=f+8|0;break b}H[d+59|0]=b;e=J[g+172328>>2];g=d+36|0;i=J[g+(h<<2)>>2];j=h;h=d+56|0;if(!hB(a,b,c,i,K[j+h|0],f)){break a}if(!hB(a,b,c,J[g+(e<<2)>>2],K[e+h|0],f)){break a}b=J[d+48>>2];c=J[d+52>>2];if(c){J[c+48>>2]=b}if(b){J[b+52>>2]=J[d+52>>2]}if(J[a+9792>>2]==(d|0)){J[a+9792>>2]=J[d+52>>2]}J[a+9796>>2]=J[a+9796>>2]-1;J[d+48>>2]=0;b=J[a+9800>>2];J[d+52>>2]=b;if(b){J[b+48>>2]=d}J[a+9800>>2]=d;a=a+9804|0}k=1;J[a>>2]=J[a>>2]+1}return k}function Mua(a,b){a=a|0;b=b|0;var c=Q(0),d=0,e=Q(0),f=Q(0),g=Q(0),h=0,i=Q(0),j=Q(0),k=Q(0),l=Q(0),m=Q(0),n=Q(0),o=Q(0),p=Q(0),q=Q(0),r=Q(0),s=Q(0),t=Q(0),u=Q(0),v=Q(0);e=N[a+92>>2];c=Q(N[a+88>>2]-N[a+84>>2]);k=N[a+104>>2];d=J[b+28>>2];h=d+P(J[a+100>>2],12)|0;l=N[h>>2];i=N[h+8>>2];m=N[a+124>>2];d=d+P(J[a+96>>2],12)|0;n=N[d>>2];j=N[d+8>>2];o=N[a+116>>2];p=N[h+4>>2];q=N[a+120>>2];f=N[d+4>>2];r=N[a+112>>2];s=N[a+108>>2];g=Q(Q(k*Q(Q(l-Q(i*m))-Q(n-Q(j*o))))+Q(Q(Q(p+Q(i*q))-Q(f+Q(j*r)))*s));c=Q(e-Q(N[a+160>>2]*(c>2]*c)+g):g)));c=c>Q(0)?Q(0):c;N[a+92>>2]=c;t=N[a+156>>2];g=N[a+148>>2];u=N[a+152>>2];v=f;f=N[a+144>>2];c=Q(c-e);e=Q(s*c);N[d+4>>2]=v-Q(f*e);c=Q(k*c);N[d>>2]=n-Q(f*c);d=J[b+28>>2];N[(d+P(J[a+96>>2],12)|0)+8>>2]=j-Q(u*Q(Q(r*e)-Q(o*c)));d=d+P(J[a+100>>2],12)|0;N[d+4>>2]=p+Q(g*e);N[d>>2]=l+Q(g*c);N[(J[b+28>>2]+P(J[a+100>>2],12)|0)+8>>2]=i+Q(t*Q(Q(q*e)-Q(m*c)))}function vsa(a,b,c,d){a=a|0;b=b|0;c=c|0;d=d|0;var e=0,f=0,g=0,h=0,i=0,j=Q(0),k=Q(0),l=Q(0),m=Q(0);a:{if((d|0)<=0){break a}if(d>>>0>=8){h=d&2147483640;while(1){e=(f<<4)+c|0;J[e+12>>2]=-581039253;J[e+28>>2]=-581039253;J[e+44>>2]=-581039253;J[e+60>>2]=-581039253;J[e+76>>2]=-581039253;J[e+92>>2]=-581039253;J[e+108>>2]=-581039253;J[e+124>>2]=-581039253;f=f+8|0;g=g+8|0;if((h|0)!=(g|0)){continue}break}}e=d&7;if(e){while(1){J[((f<<4)+c|0)+12>>2]=-581039253;f=f+1|0;i=i+1|0;if((e|0)!=(i|0)){continue}break}}if(J[a+92>>2]<=0|(d|0)<=0){break a}g=0;while(1){e=J[a+100>>2]+(g<<4)|0;j=Q(N[e+8>>2]*N[a+20>>2]);k=Q(N[e+4>>2]*N[a+16>>2]);l=Q(N[e>>2]*N[a+12>>2]);f=0;while(1){h=f<<4;e=h+b|0;m=Q(Q(N[e+8>>2]*j)+Q(Q(N[e>>2]*l)+Q(k*N[e+4>>2])));e=c+h|0;if(m>N[e+12>>2]){N[e+12>>2]=m;N[e+8>>2]=j;N[e+4>>2]=k;N[e>>2]=l}f=f+1|0;if((f|0)!=(d|0)){continue}break}g=g+1|0;if((g|0)>2]){continue}break}}}function rp(a,b){var c=0,d=0,e=0,f=Q(0),g=0;if(!(((C(a),v(2))&2147483647)>>>0<2139095041&((C(b),v(2))&2147483647)>>>0<=2139095040)){return Q(a+b)}c=(C(b),v(2));if((c|0)==1065353216){return tV(a)}g=c>>>30&2;d=(C(a),v(2));e=g|d>>>31;a:{b:{d=d&2147483647;c:{if(!d){d:{switch(e-2|0){case 0:return Q(3.1415927410125732);case 1:break d;default:break c}}return Q(-3.1415927410125732)}c=c&2147483647;if((c|0)!=2139095040){if(!c|!((d|0)!=2139095040&d>>>0<=c+218103808>>>0)){break a}e:{if(g){f=Q(0);if(c>>>0>d+218103808>>>0){break e}}f=tV(Q(R(Q(a/b))))}a=f;f:{switch(e-1|0){case 0:return Q(-a);case 1:return Q(Q(3.1415927410125732)-Q(a+Q(8.742277657347586e-8)));case 2:break f;default:break c}}return Q(Q(a+Q(8.742277657347586e-8))+Q(-3.1415927410125732))}if((d|0)==2139095040){break b}a=N[(e<<2)+198576>>2]}return a}return N[(e<<2)+198560>>2]}return x(2,(C(a),v(2))&-2147483648|1070141403),D()}function m8(a){a=a|0;var b=0,c=0,d=0,e=0,f=0,g=0,h=0,i=0,j=Q(0);d=Ui-48|0;Ui=d;i=pj(d+28|0,a,0,37682,4365);Bj(a);f=qj(a,-1,J[219396],139183);gj(a,-2);c=Qj(a,1,0);b=un(a,2);if(!b){b=Pl(a,2)}a=J[b+4>>2];e=J[b>>2];N[d+8>>2]=N[b+8>>2];J[d>>2]=e;J[d+4>>2]=a;a=Ui-32|0;Ui=a;a:{b:{c:{d:{g=L[c+650>>1]|L[c+648>>1]<<16;c=g&65535;e=J[f+32>>2];h=(J[f+36>>2]-e|0)/672|0;if(c>>>0>>0){b=P(c,672)+e|0;if(L[b+648>>1]!=(g>>>16|0)){break d}if(L[b+650>>1]!=(c|0)){break c}c=L[b+656>>1];if((c|0)==65535){c=0}else{if(c>>>0>=h>>>0){break b}c=P(c,672)+e|0}e=J[d+4>>2];g=J[d>>2];N[a+8>>2]=N[d+8>>2];J[a>>2]=g;J[a+4>>2]=e;dD(a+16|0,f,b,c,a);f=J[a+20>>2];c=J[a+16>>2];j=N[a+24>>2];J[b+12>>2]=1065353216;N[b+8>>2]=j;J[b>>2]=c;J[b+4>>2]=f;J[b+476>>2]=J[b+476>>2]|4194304;Ui=a+32|0;break a}break b}Z(47372,40876,188,69601);B()}Z(5388,40876,189,69601);B()}Z(145396,53895,487,84789);B()}oj(i);Ui=d+48|0;return 0}function Tga(a){a=a|0;var b=0,c=0,d=0,e=0,f=0,g=0,h=0;d=Ui-16|0;Ui=d;h=J[a+8>>2]-J[a+12>>2]>>4;g=1;Al(a,1,J[J[pk(a)+80>>2]+8>>2],82198,d+12|0,0,0);a:{b:{c=J[d+12>>2];if(!c){b=71185;break b}g=2;b=J[c+128>>2];if(!b){b=71261;break b}if(!J[J[b+8>>2]+20>>2]){b=71261;break b}c=mk(a,2);e=Yi;f=J[J[b+8>>2]+20>>2];b=J[f+8>>2];if(!b){b=71261;break b}b=J[J[f+4>>2]+(mxa(c,e,b)<<2)>>2];if((b|0)==-1){b=71261;break b}f=J[f+12>>2];c:{while(1){b=f+(b<<4)|0;if(J[b>>2]==(c|0)&(e|0)==J[b+4>>2]){break c}b=J[b+12>>2];if((b|0)!=-1){continue}break}b=71261;break b}e=J[d+12>>2];c=J[e+212>>2];b=J[b+8>>2];if(b>>>0>=J[e+216>>2]-c>>2>>>0){Z(145396,53895,487,84789);B()}b=J[c+(b<<2)>>2];if(!b){b=148358;break b}c=J[b+96>>2];b=J[b+100>>2];if(!(c|b)){b=148305;break b}Bk(a,c,b);c=1;if((h+1|0)==J[a+8>>2]-J[a+12>>2]>>4){break a}Z(143411,40569,435,91053);B()}J[d>>2]=Ij(a,g,0);c=fj(a,b,d)}Ui=d+16|0;return c|0}function Qw(a,b,c){var d=0,e=0,f=0,g=0,h=0;a:{b:{if(J[a+24>>2]==(c|0)){J[a+28>>2]=c;if((b|0)==-1){break b}c=J[a+32>>2];if((c|0)==-1){break a}f=J[J[a>>2]+12>>2];while(1){g=c;d=f+(c<<2)|0;e=J[d>>2];h=(e>>>14|0)-131071|0;if((h|0)!=-1){c=(c+h|0)+1|0;if((c|0)!=-1){continue}}break}b=(g^-1)+b|0;c=b>>31;if((b^c)-c>>>0>=131072){qk(J[a+12>>2],56034);e=J[d>>2]}J[d>>2]=(e&16383|b<<14)+2147467264;return}if((b|0)==-1){break b}while(1){g=J[J[a>>2]+12>>2]+(b<<2)|0;e=J[g>>2];h=e>>>14|0;c:{if((b|0)>0){f=g-4|0;d=J[f>>2];if(H[(d&63)+173568|0]<0){break c}}d=e;f=g}h=h-131071|0;d:{e:{f:{if((d&63)==27){J[f>>2]=d>>>17&32704|d&8372250;d=(b^-1)+c|0;e=d>>31;if((d^e)-e>>>0>131071){break f}break e}d=(b^-1)+c|0;f=d>>31;if((d^f)-f>>>0<131072){break d}}qk(J[a+12>>2],56034)}e=J[g>>2]}J[g>>2]=(e&16383|d<<14)+2147467264;if((h|0)==-1){break b}b=(b+h|0)+1|0;if((b|0)!=-1){continue}break}}return}J[a+32>>2]=b}function pV(a,b,c,d){var e=0,f=Q(0),g=Q(0),h=Q(0),i=Q(0),j=0,k=Q(0),l=Q(0);a:{b:{if(!((b|0)<0|J[a+12>>2]<=(b|0))){e=J[a+4>>2]+P(b,36)|0;if(J[e+24>>2]!=-1){break b}c:{if(!(!(N[c+8>>2]<=N[e+8>>2])|(!(N[e>>2]<=N[c>>2])|!(N[e+4>>2]<=N[c+4>>2])))){j=0;if(N[c+12>>2]<=N[e+12>>2]){break c}}_U(a,b);l=N[c>>2];h=N[c+4>>2];i=N[c+8>>2];g=N[d>>2];f=N[d+4>>2];f=Q(f+f);e=f>2]+P(b,36)|0;k=Q(N[c+12>>2]+Q(.10000000149011612));N[d+12>>2]=e?k:Q(k+f);g=Q(g+g);c=g>2]=c?i:Q(i+g);h=Q(h+Q(-.10000000149011612));N[d+4>>2]=e?Q(h+f):h;f=Q(l+Q(-.10000000149011612));N[d>>2]=c?Q(f+g):f;$U(a,b);j=1}e=j;break a}Z(2361,42086,135,1413);B()}Z(144936,42086,137,1413);B()}if(e){d=J[a+40>>2];if((d|0)==J[a+36>>2]){J[a+36>>2]=d<<1;c=J[a+32>>2];d=sj(d<<3);J[a+32>>2]=d;hj(d,c,J[a+40>>2]<<2);cj(c);d=J[a+40>>2]}J[J[a+32>>2]+(d<<2)>>2]=b;J[a+40>>2]=J[a+40>>2]+1}}function UX(a,b,c,d,e,f){a=a|0;b=b|0;c=c|0;d=d|0;e=e|0;f=f|0;var g=0,h=0,i=0,j=0,k=0,l=0;g=-17280;k=J[a+4>>2];a:{if(k>>>0>f>>>0){break a}g=-16640;b:{c:{switch(J[a+164>>2]){case 0:h=J[a+4>>2];i=Zj(1,h);if(i){g=Zj(1,h);d:{if(!g){b=-16;break d}b=OG(b,d,c,h,g);if(b){break d}b=$q(a,e,i);if(b){break d}e:{if(!h){break e}d=h&3;b=0;f:{if(h>>>0<4){c=0;a=0;break f}l=h&-4;c=0;a=0;e=0;while(1){j=K[a+g|0]^K[a+i|0]|c;c=a|1;j=j|K[c+g|0]^K[c+i|0];c=a|2;j=j|K[c+g|0]^K[c+i|0];c=a|3;c=j|K[c+g|0]^K[c+i|0];a=a+4|0;e=e+4|0;if((l|0)!=(e|0)){continue}break}}if(d){while(1){c=K[a+g|0]^K[a+i|0]|c;a=a+1|0;b=b+1|0;if((d|0)!=(b|0)){continue}break}}if(!(c&255)){break e}b=-17280;break d}b=0}Zi[J[66509]](i,0,h)|0;cj(i);if(g){Zi[J[66509]](g,0,h)|0;cj(g)}a=b}else{a=-16}break b;case 1:g=a;a=J[a+168>>2];g=uH(g,b,d,c,a?a:b,-1,e);break;default:break c}}a=g}g=a;if(g){break a}g=f>>>0>k>>>0?-14592:0}return g|0}function Gra(a){a=a|0;var b=0,c=0,d=0,e=0,f=0,g=0,h=0,i=0,j=0;Xl(25451);b=J[a+176>>2];Zi[J[J[b>>2]+8>>2]](b,a,J[a+24>>2]);g=J[a+176>>2];i=J[a+184>>2];if((i|0)>0){j=J[a+192>>2];while(1){b=J[(h<<2)+j>>2];c=J[b+20>>2];a:{if(K[c+204|0]&3){break a}b=J[b+24>>2];if(K[b+204|0]&3){break a}b:{c:{switch(J[c+216>>2]-2|0){case 0:case 3:break c;default:break b}}switch(J[b+216>>2]-2|0){case 0:case 3:break a;default:break b}}b=J[b+208>>2];d=J[c+208>>2];c=J[g+16>>2];e=(d<<3)+c|0;f=J[e>>2];if((d|0)!=(f|0)){while(1){d=J[c+(f<<3)>>2];J[e>>2]=d;e=c+(d<<3)|0;f=J[e>>2];if((f|0)!=(d|0)){continue}break}}e=c+(b<<3)|0;f=J[e>>2];if((f|0)!=(b|0)){while(1){b=J[c+(f<<3)>>2];J[e>>2]=b;e=c+(b<<3)|0;f=J[e>>2];if((f|0)!=(b|0)){continue}break}}if((b|0)==(d|0)){break a}d=c+(d<<3)|0;J[d>>2]=b;b=c+(b<<3)|0;J[b+4>>2]=J[b+4>>2]+J[d+4>>2]}h=h+1|0;if((i|0)!=(h|0)){continue}break}}Zi[J[J[g>>2]+12>>2]](g,a);Wl()}function vca(a){a=a|0;var b=0,c=0,d=0,e=0,f=0,g=0;b=Ui-128|0;Ui=b;g=pj(b+108|0,a,0,40250,591);d=J[J[pk(a)+80>>2]+8>>2];J[b+96>>2]=0;J[b+100>>2]=0;J[b+88>>2]=0;J[b+92>>2]=0;J[b+80>>2]=0;J[b+84>>2]=0;J[b+72>>2]=0;J[b+76>>2]=0;Al(a,1,d,81707,b+104|0,b+72|0,0);e=mk(a,2);c=Yi;d=vy(J[b+104>>2],e,c);a:{if((d|0)==-1){J[b>>2]=tj(e,c);a=Jj(g,134126,b);break a}e=(ck(a,3)|0)!=0;f=J[b+104>>2];c=J[f+124>>2];if(d>>>0>=J[f+128>>2]-c>>>0){Z(145396,53895,487,84789);B()}c=d+c|0;H[c|0]=K[c|0]&254|e;c=b- -64|0;J[c>>2]=0;J[c+4>>2]=0;J[b+56>>2]=0;J[b+60>>2]=0;J[b+48>>2]=0;J[b+52>>2]=0;J[b+40>>2]=0;J[b+44>>2]=0;c=b+40|0;if($l(a,c)){J[b+32>>2]=d;a=0;J[b+36>>2]=e;d=J[58508];e=J[d+8>>2];f=J[d+12>>2];J[b+96>>2]=0;J[b+100>>2]=0;d=Jk(c,b+72|0,e,f,0,0,d,b+32|0,8,0);if(!d){break a}J[b+16>>2]=J[J[58508]+4>>2];J[b+20>>2]=d;dj(4,88458,130272,b+16|0);break a}a=fj(a,124083,0)}oj(g);Ui=b+128|0;return a|0}function Pn(a,b,c,d){var e=0,f=0,g=0,h=Q(0);e=Ui-32|0;Ui=e;a:{b:{c:{if((c|0)<12){f=b&65535;g=J[a+36>>2];a=J[a+32>>2];if(f>>>0>=(g-a|0)/672>>>0){break c}a=a+P(f,672)|0;if(L[a+648>>1]!=(b>>>16|0)){break b}if(L[a+650>>1]!=(f|0)){break a}d:{e:{switch(c-1|0){case 9:b=J[d>>2];f=J[d+4>>2];N[e+8>>2]=N[d+8>>2];J[e>>2]=b;J[e+4>>2]=f;Kn(e+16|0,e);b=J[e+16>>2];f=J[e+20>>2];g=J[e+28>>2];J[a+24>>2]=J[e+24>>2];J[a+28>>2]=g;J[a+16>>2]=b;J[a+20>>2]=f;break d;case 0:break e;default:break d}}fx(e+16|0,N[d>>2],N[d+4>>2],N[d+8>>2],N[d+12>>2]);b=J[e+16>>2];f=J[e+20>>2];h=N[e+24>>2];J[a+172>>2]=0;N[a+168>>2]=h;J[a+160>>2]=b;J[a+164>>2]=f}b=a+(c<<4)|0;N[b>>2]=N[d>>2];N[b+4>>2]=N[d+4>>2];N[b+8>>2]=N[d+8>>2];N[b+12>>2]=N[d+12>>2];J[a+476>>2]=J[a+476>>2]|4194304;Ui=e+32|0;return}Z(86871,40876,2863,1479);B()}Z(145396,53895,487,84789);B()}Z(47372,40876,188,69601);B()}Z(5388,40876,189,69601);B()}function Mj(a,b){var c=0,d=0;a:{if((b|0)>0){b=(J[a+12>>2]+(b<<4)|0)-16|0;c=b>>>0>=M[a+8>>2]?173288:b;break a}c=J[a+8>>2]+(b<<4)|0;if((b|0)>=-9999){break a}b:{switch(b+10002|0){case 2:c=J[a+16>>2]+96|0;break a;case 1:b=J[J[J[J[a+20>>2]+4>>2]>>2]+12>>2];J[a+96>>2]=5;J[a+88>>2]=b;c=a+88|0;break a;case 0:c=a+72|0;break a;default:break b}}c=J[J[J[a+20>>2]+4>>2]>>2];c=K[c+7|0]<-10002-b>>>0?173288:(c+(0-b<<4)|0)-160024|0}b=J[a+8>>2];if(J[b-8>>2]){b=J[b-16>>2]}else{b=0}c:{d:{e:{f:{d=J[c+8>>2];switch(d-5|0){case 2:break e;case 0:break f;default:break d}}J[J[c>>2]+8>>2]=b;if(!b|!(K[b+5|0]&3)){break c}c=J[c>>2];if(!(K[c+5|0]&4)){break c}b=J[a+16>>2];H[c+5|0]=K[c+5|0]&251;J[c+24>>2]=J[b+40>>2];J[b+40>>2]=c;break c}J[J[c>>2]+8>>2]=b;if(!b|!(K[b+5|0]&3)){break c}c=J[c>>2];if(!(K[c+5|0]&4)){break c}ap(a,c,b);break c}J[(J[a+16>>2]+(d<<2)|0)+152>>2]=b}J[a+8>>2]=J[a+8>>2]-16;return 1}function Yga(a){a=a|0;var b=0,c=0,d=0,e=0,f=0,g=0;b=Ui+-64|0;Ui=b;e=J[a+8>>2]-J[a+12>>2]>>4;Oj(a,1,4);J[b+60>>2]=0;c=Ij(a,1,b+60|0);a:{if((e|0)<2){break a}if((kj(a,2)|0)==5){uj(a,2);rj(a,-1,83991);if(kj(a,-1)){d=gp(a,-1)}gj(a,-2);rj(a,-1,3472);if(kj(a,-1)){f=gp(a,-1)}gj(a,-2);gj(a,-2);break a}d=gp(a,2)}J[b+48>>2]=0;J[b+52>>2]=0;J[b+40>>2]=0;J[b+44>>2]=0;g=d;d=b+40|0;c=TM(c,J[b+60>>2],g,f,d);b:{if(!c){c=J[b+48>>2];c:{if(c>>>0>=4){Qx(d);J[b+16>>2]=J[b+48>>2];fj(a,78294,b+16|0);d=0;break c}d=J[(c<<2)+160372>>2]}Fj(a,0,0);c=J[b+52>>2];J[b+8>>2]=J[b+48>>2];J[b+12>>2]=c;c=J[b+44>>2];J[b>>2]=J[b+40>>2];J[b+4>>2]=c;$P(a,b);mj(a,34859,6);mj(a,J[b+52>>2],P(J[b+44>>2],P(d,J[b+40>>2])));Xj(a,-3);Qx(b+40|0);break b}J[b+32>>2]=c;dj(3,88458,141577,b+32|0);d=J[a+8>>2];J[d+8>>2]=0;J[a+8>>2]=d+16}if((e+1|0)!=J[a+8>>2]-J[a+12>>2]>>4){Z(143334,42046,199,76325);B()}Ui=b- -64|0;return 1}function At(a,b,c){var d=0,e=0,f=0,g=0,h=0,i=0,j=0,k=0;g=J[a+16>>2];b=UA(g,J[a+4>>2],b);if(J[b+8>>2]==3){j=O[b>>3];if(R(j)<2147483648){return~~j}return-2147483648}e=J[a>>2];h=J[e+40>>2];d=J[a+40>>2];J[b+8>>2]=3;O[b>>3]=d|0;b=e+40|0;f=J[b>>2];if((f|0)<=J[a+40>>2]){J[e+8>>2]=ps(g,J[e+8>>2],b,16,262143,6533);f=J[e+40>>2]}i=J[e+8>>2];a:{if((f|0)<=(h|0)){break a}d=h;k=f-d&7;if(k){b=0;while(1){J[((d<<4)+i|0)+8>>2]=0;d=d+1|0;b=b+1|0;if((k|0)!=(b|0)){continue}break}}if(h-f>>>0>4294967288){break a}while(1){b=(d<<4)+i|0;J[b+8>>2]=0;J[b+24>>2]=0;J[b+40>>2]=0;J[b+56>>2]=0;J[b+72>>2]=0;J[b+88>>2]=0;J[b+104>>2]=0;J[b+120>>2]=0;d=d+8|0;if((f|0)!=(d|0)){continue}break}}d=J[c+4>>2];b=(J[a+40>>2]<<4)+i|0;J[b>>2]=J[c>>2];J[b+4>>2]=d;d=b;b=J[c+8>>2];J[d+8>>2]=b;b:{if((b|0)<4){break b}b=J[c>>2];if(!(K[b+5|0]&3)|!(K[e+5|0]&4)){break b}ap(g,e,b)}b=a;a=J[a+40>>2];J[b+40>>2]=a+1;return a}function pP(a){var b=0,c=0,d=0,e=0,f=0;a:{b:{c:{d:{e:{if(!(K[a+220|0]&8)){break e}e=J[a+88>>2];b=J[e+2092>>2];if((b|0)==J[e+2096>>2]){break e}while(1){b=P(f,56)+b|0;f:{if(J[b+48>>2]<=0){break f}d=J[b+36>>2];c=J[a+108>>2];if(d>>>0>=J[a+112>>2]-c>>2>>>0){break a}mb(35345,J[b+40>>2],J[c+(d<<2)>>2]);if(K[J[79491]+220|0]&2){c=_()|0;if(c){break d}}if(!(H[b+52|0]&1)){break f}d=J[b+36>>2];c=J[a+108>>2];if(d>>>0>=J[a+112>>2]-c>>2>>>0){break a}ba(35345,J[c+(d<<2)>>2]);if(K[J[79491]+220|0]&2){c=_()|0;if(c){break c}}Ka(35345,J[b+44>>2],J[b+32>>2],35044);if(K[J[79491]+220|0]&2){c=_()|0;if(c){break b}}H[b+52|0]=K[b+52|0]&254}f=f+1|0;b=J[e+2092>>2];if(f>>>0<(J[e+2096>>2]-b|0)/56>>>0){continue}break}}return}Cj(c,36416,2023);Z(114101,40535,2023,36416);B()}Cj(c,36416,2028);Z(114101,40535,2028,36416);B()}Cj(c,36416,2030);Z(114101,40535,2030,36416);B()}Z(145396,53895,487,84789);B()}function Yra(a,b,c,d,e,f,g,h,i){a=a|0;b=b|0;c=c|0;d=d|0;e=e|0;f=f|0;g=g|0;h=h|0;i=i|0;h=Ui-48|0;Ui=h;d=Yj(64);I[d+6>>1]=g;I[d+4>>1]=f;J[d>>2]=e;e=J[b+4>>2];J[d+16>>2]=J[b>>2];J[d+20>>2]=e;e=J[b+12>>2];J[d+24>>2]=J[b+8>>2];J[d+28>>2]=e;e=J[c+4>>2];J[d+32>>2]=J[c>>2];J[d+36>>2]=e;e=J[c+12>>2];J[d+40>>2]=J[c+8>>2];J[d+44>>2]=e;J[d+8>>2]=0;J[d+52>>2]=0;J[d+56>>2]=0;e=J[b+12>>2];J[h+24>>2]=J[b+8>>2];J[h+28>>2]=e;e=J[b+4>>2];J[h+16>>2]=J[b>>2];J[h+20>>2]=e;b=J[c+12>>2];J[h+40>>2]=J[c+8>>2];J[h+44>>2]=b;b=J[c+4>>2];J[h+32>>2]=J[c>>2];J[h+36>>2]=b;J[d+60>>2]=J[a+104>>2];b=J[a+148>>2]+1|0;J[a+148>>2]=b;J[d+12>>2]=b;J[d+48>>2]=cz(a+4|0,h+16|0,d);b=J[a+104>>2];J[d+52>>2]=0;c=(b<<2)+a|0;b=J[c+84>>2];J[d+56>>2]=b;if(b){J[b+52>>2]=d}J[c+84>>2]=d;if(!K[a+153|0]){J[h+12>>2]=d;J[h+4>>2]=244280;J[h+8>>2]=a;b=h+16|0;c=h+4|0;Hv(J[a+4>>2],b,c);Hv(J[a+44>>2],b,c)}Ui=h+48|0;return d|0}function tD(a,b,c){var d=0;a:{switch(c-1|0){case 0:b=bQ(127)?Q(127):b;b:{if(Q(R(b))Q(255)?Q(255):b;c:{if(b=Q(0)){c=~~b>>>0;break c}c=0}H[a|0]=c;return a+1|0;case 2:b=bQ(32767)?Q(32767):b;d:{if(Q(R(b))>1]=c;return a+2|0;case 3:b=bQ(65535)?Q(65535):b;e:{if(b=Q(0)){c=~~b>>>0;break e}c=0}I[a>>1]=c;return a+2|0;case 4:b=bQ(2147483648)?Q(2147483648):b;f:{if(Q(R(b))>2]=c;return a+4|0;case 5:b=bQ(4294967296)?Q(4294967296):b;g:{if(b=Q(0)){c=~~b>>>0;break g}c=0}J[a>>2]=c;return a+4|0;case 6:N[a>>2]=b;d=a+4|0;break;default:break a}}return d}function qO(a,b,c,d,e,f,g,h,i){var j=0,k=0,l=0,m=0,n=0,o=0;m=Ui-32|0;Ui=m;j=m+16|0;J[j>>2]=0;J[j+4>>2]=0;J[j+8>>2]=0;J[j+12>>2]=0;J[j>>2]=0;J[j+4>>2]=0;J[j+8>>2]=0;J[j+12>>2]=0;n=-5;k=J[b+100>>2];a:{if(!k){break a}k=J[J[b+96>>2]+(mxa(c,d,k)<<2)>>2];if((k|0)==-1){break a}o=J[b+104>>2];while(1){k=(k<<4)+o|0;if(J[k>>2]!=(c|0)|J[k+4>>2]!=(d|0)){k=J[k+12>>2];if((k|0)!=-1){continue}break a}break}Zi[J[J[b+12>>2]+16>>2]](J[k+8>>2],e,f,g,h,i,j);n=0}if(n){J[m>>2]=tj(c,d);fj(a,65358,m)}Fj(a,0,4);mj(a,52997,5);l=+N[j>>2];b=J[a+8>>2];J[b+8>>2]=3;O[b>>3]=l;J[a+8>>2]=J[a+8>>2]+16;Xj(a,-3);mj(a,14691,6);l=+N[j+4>>2];b=J[a+8>>2];J[b+8>>2]=3;O[b>>3]=l;J[a+8>>2]=J[a+8>>2]+16;Xj(a,-3);mj(a,13992,10);l=+N[j+8>>2];b=J[a+8>>2];J[b+8>>2]=3;O[b>>3]=l;J[a+8>>2]=J[a+8>>2]+16;Xj(a,-3);mj(a,13969,11);l=+N[j+12>>2];b=J[a+8>>2];J[b+8>>2]=3;O[b>>3]=l;J[a+8>>2]=J[a+8>>2]+16;Xj(a,-3);Ui=m+32|0}function nE(a,b){var c=0,d=0,e=0,f=0,g=0,h=0,i=0,j=0;i=K[a+24|0];if(i){while(1){c=J[a+20>>2]+P(j,24)|0;d=J[c+12>>2]+b|0;a:{b:{c:{d:{f=J[c+4>>2];switch((f>>>22&63)-9|0){case 3:break b;case 0:break c;case 2:break d;default:break a}}nE(J[c+8>>2],d);i=K[a+24|0];break a}c=J[d>>2];if((f&-268435456)==805306368){c=b+c|0;J[d>>2]=c;g=J[d+4>>2];if(!g){break a}d=J[a+16>>2];if(g>>>0>=4){h=g&-4;f=0;while(1){e=J[c>>2];J[c>>2]=d>>>0<=e>>>0?e+b|0:0;e=J[c+4>>2];J[c+4>>2]=d>>>0<=e>>>0?e+b|0:0;e=J[c+8>>2];J[c+8>>2]=d>>>0<=e>>>0?e+b|0:0;e=J[c+12>>2];J[c+12>>2]=d>>>0<=e>>>0?e+b|0:0;c=c+16|0;f=f+4|0;if((h|0)!=(f|0)){continue}break}}f=0;g=g&3;if(!g){break a}while(1){h=J[c>>2];J[c>>2]=d>>>0<=h>>>0?h+b|0:0;c=c+4|0;f=f+1|0;if((g|0)!=(f|0)){continue}break}break a}J[d>>2]=c>>>0>=M[a+16>>2]?b+c|0:0;break a}c=J[d>>2];J[d>>2]=c>>>0>=M[a+16>>2]?c+b|0:0}j=j+1|0;if(j>>>0>>0){continue}break}}}function mT(a){var b=0,c=0,d=0,e=0,f=0,g=0,h=0,i=0;H[a+20|0]=1;J[a+16>>2]=0;H[a+48|0]=1;H[a+28|0]=0;J[a+24>>2]=0;J[a+8>>2]=0;J[a+12>>2]=0;J[a+44>>2]=0;H[a+68|0]=1;J[a+36>>2]=0;J[a+40>>2]=0;J[a+64>>2]=0;J[a+72>>2]=0;J[a+56>>2]=0;J[a+60>>2]=0;J[a>>2]=244388;f=Yj(32);b=J[a+8>>2];a:{if((b|0)<=0){break a}if((b|0)!=1){i=b&2147483646;while(1){g=d<<4;e=g+f|0;c=J[a+16>>2]+g|0;J[e>>2]=J[c>>2];J[e+4>>2]=J[c+4>>2];J[e+8>>2]=J[c+8>>2];J[e+12>>2]=J[c+12>>2];c=g|16;e=c+f|0;c=c+J[a+16>>2]|0;J[e>>2]=J[c>>2];J[e+4>>2]=J[c+4>>2];J[e+8>>2]=J[c+8>>2];J[e+12>>2]=J[c+12>>2];d=d+2|0;h=h+2|0;if((h|0)!=(i|0)){continue}break}}if(!(b&1)){break a}d=d<<4;b=d+f|0;d=d+J[a+16>>2]|0;J[b>>2]=J[d>>2];J[b+4>>2]=J[d+4>>2];J[b+8>>2]=J[d+8>>2];J[b+12>>2]=J[d+12>>2]}b=J[a+16>>2];if(!(b?!b|K[a+20|0]!=1:1)){J[83765]=J[83765]+1;Zi[J[61751]](J[b-4>>2])}J[a+16>>2]=f;H[a+20|0]=1;J[a+12>>2]=2;lT(a);return a}function hN(a,b,c){var d=0,e=0,f=0,g=0;a:{b:{g=J[a+16>>2];f=J[a+8>>2];if(J[a+24>>2]!=((g-f|0)/24|0)){d=J[a+4>>2];c:{if(!d){break c}e=J[J[a>>2]+((b>>>0)%(d>>>0)<<2)>>2];if((e|0)==-1){break c}while(1){d=P(e,24)+f|0;if(J[d>>2]==(b|0)){break b}e=J[d+20>>2];if((e|0)!=-1){continue}break}}d=J[a+12>>2];d:{if((g|0)!=(d|0)){J[a+12>>2]=d+24;break d}d=J[a+20>>2];if((d|0)==-1){break a}d=P(d,24)+f|0;J[a+20>>2]=J[d+20>>2]}J[d>>2]=b;e=J[c+4>>2];J[d+4>>2]=J[c>>2];J[d+8>>2]=e;e=J[c+12>>2];J[d+12>>2]=J[c+8>>2];J[d+16>>2]=e;J[d+20>>2]=-1;c=J[a+8>>2];b=J[a>>2]+((b>>>0)%M[a+4>>2]<<2)|0;e=J[b>>2];if((e|0)!=-1){while(1){b=c+P(e,24)|0;e=J[b+20>>2];if((e|0)!=-1){continue}break}b=b+20|0}J[b>>2]=(d-c|0)/24;J[a+24>>2]=J[a+24>>2]+1;return}Z(144851,55629,229,9606);B()}a=J[c+4>>2];J[d+4>>2]=J[c>>2];J[d+8>>2]=a;a=J[c+12>>2];J[d+12>>2]=J[c+8>>2];J[d+16>>2]=a;return}Z(152203,55629,537,2838);B()}function QO(a){var b=0,c=0,d=0,e=0,f=0,g=0,h=0,i=0,j=0,k=0;e=J[a+36>>2];d=J[a+32>>2];c=(e-d|0)/672|0;a:{if((d|0)==(e|0)){break a}e=J[a+196>>2];if(!e){a=d+600|0;d=c>>>0<=1?1:c;e=d&7;if(c>>>0>=8){d=d&-8;c=0;while(1){J[a+P(b,672)>>2]=0;J[a+P(b|1,672)>>2]=0;J[a+P(b|2,672)>>2]=0;J[a+P(b|3,672)>>2]=0;J[a+P(b|4,672)>>2]=0;J[a+P(b|5,672)>>2]=0;J[a+P(b|6,672)>>2]=0;J[a+P(b|7,672)>>2]=0;b=b+8|0;c=c+8|0;if((d|0)!=(c|0)){continue}break}}if(!e){break a}while(1){J[a+P(b,672)>>2]=0;b=b+1|0;f=f+1|0;if((e|0)!=(f|0)){continue}break}break a}j=c>>>0<=1?1:c;k=J[a+192>>2];while(1){h=d+P(f,672)|0;b=h;c=J[b+592>>2];i=J[b+596>>2];b=J[(mxa(c,i,e)<<2)+k>>2];g=0;b:{if((b|0)==-1){break b}g=J[a+200>>2];c:{while(1){b=g+(b<<4)|0;if(J[b>>2]==(c|0)&(i|0)==J[b+4>>2]){break c}b=J[b+12>>2];if((b|0)!=-1){continue}break}g=0;break b}g=J[b+8>>2]}J[h+600>>2]=g;f=f+1|0;if((j|0)!=(f|0)){continue}break}}}function KM(a){a=a|0;var b=0,c=0,d=0,e=0,f=0,g=0,h=0,i=0,j=0;b=Ui+-64|0;Ui=b;i=pj(b+44|0,a,0,41468,94);J[b+40>>2]=0;c=Aj(a,2,b+40|0);J[b+36>>2]=0;e=Aj(a,3,b+36|0);uj(a,2);d=Lk(a,-1e4);uj(a,3);g=Lk(a,-1e4);J[b+32>>2]=c;J[b+24>>2]=c+16;c=J[b+40>>2];J[b+28>>2]=c-16;if(c>>>0<=15){J[b+16>>2]=e;J[b+32>>2]=0;dj(4,95071,29923,b+16|0)}c=nj(16);a=$m(a,4);J[c+12>>2]=e;J[c>>2]=a;J[c+8>>2]=g;J[c+4>>2]=d;g=J[b+36>>2];d=Ui-16|0;Ui=d;a=-12;a:{if(K[981584]!=1){break a}a=-2;if(!J[b+24>>2]){break a}f=J[b+32>>2];if(!f){J[d>>2]=e;dj(4,95071,149337,d);a=-3;break a}h=J[245392];if(!h){dj(4,95071,74996,0);a=-11;break a}a=nj(32);J[a+28>>2]=0;j=J[245394];J[a+4>>2]=f;J[a>>2]=j;f=J[b+28>>2];J[a+24>>2]=c;J[a+20>>2]=2482;J[a+16>>2]=g;J[a+12>>2]=e;J[a+8>>2]=f+16;Qp(h,2471,2472,980536,a);a=0}Ui=d+16|0;if(a>>>0>=4294967293){J[b>>2]=e;dj(4,95071,J[(a<<2)+288092>>2],b)}oj(i);Ui=b- -64|0;return 0}function $S(a){a=a|0;var b=0;J[a>>2]=243700;b=J[a+116>>2];if(!(b?!b|K[a+120|0]!=1:1)){J[83765]=J[83765]+1;Zi[J[61751]](J[b-4>>2])}J[a+116>>2]=0;H[a+120|0]=1;J[a+108>>2]=0;J[a+112>>2]=0;b=J[a+96>>2];if(!(b?!b|K[a+100|0]!=1:1)){J[83765]=J[83765]+1;Zi[J[61751]](J[b-4>>2])}J[a+96>>2]=0;H[a+100|0]=1;J[a+88>>2]=0;J[a+92>>2]=0;b=J[a+76>>2];if(!(b?!b|K[a+80|0]!=1:1)){J[83765]=J[83765]+1;Zi[J[61751]](J[b-4>>2])}J[a+76>>2]=0;H[a+80|0]=1;J[a+68>>2]=0;J[a+72>>2]=0;b=J[a+56>>2];if(!(b?!b|K[a+60|0]!=1:1)){J[83765]=J[83765]+1;Zi[J[61751]](J[b-4>>2])}J[a+56>>2]=0;H[a+60|0]=1;J[a+48>>2]=0;J[a+52>>2]=0;b=J[a+36>>2];if(!(b?!b|K[a+40|0]!=1:1)){J[83765]=J[83765]+1;Zi[J[61751]](J[b-4>>2])}J[a+36>>2]=0;H[a+40|0]=1;J[a+28>>2]=0;J[a+32>>2]=0;b=J[a+16>>2];if(!(b?!b|K[a+20|0]!=1:1)){J[83765]=J[83765]+1;Zi[J[61751]](J[b-4>>2])}J[a+16>>2]=0;H[a+20|0]=1;J[a+8>>2]=0;J[a+12>>2]=0;return a|0}function Nda(a){a=a|0;var b=0,c=0,d=0;b=nj(104);J[b+32>>2]=0;J[b+36>>2]=0;c=b- -64|0;J[c>>2]=0;J[c+4>>2]=0;J[b>>2]=0;J[b+4>>2]=0;J[b+48>>2]=0;J[b+52>>2]=0;J[b+96>>2]=0;J[b+100>>2]=0;J[b+80>>2]=0;J[b+40>>2]=0;J[b+44>>2]=0;J[b+24>>2]=0;J[b+28>>2]=0;J[b+16>>2]=0;J[b+20>>2]=0;J[b+8>>2]=0;J[b+12>>2]=0;J[b+56>>2]=0;J[b+60>>2]=0;J[b+72>>2]=0;J[b+76>>2]=0;J[b+36>>2]=-1;J[b+68>>2]=-1;c=RQ(J[a>>2],J[a+24>>2],b);if(!c){J[J[a+28>>2]+8>>2]=b;J[J[a+28>>2]+16>>2]=(((J[a+16>>2]+J[b+8>>2]|0)-J[b>>2]|0)+P(J[b+32>>2]-J[b+24>>2]>>4,12)|0)+104;return c|0}d=J[b+80>>2];if(d){vj(J[a>>2],d)}a=J[b+96>>2];if(a){Uj(a)}a=J[b+100>>2];if(a){Mx(a)}a:{if(H[b+76|0]&1){break a}a=J[b+56>>2];if(a){cj(a)}a=J[b+48>>2];if(!a){break a}cj(a)}b:{if(H[b+44|0]&1){break b}a=J[b+24>>2];if(a){cj(a)}a=J[b+16>>2];if(!a){break b}cj(a)}c:{if(H[b+12|0]&1){break c}a=J[b>>2];if(!a){break c}cj(a)}cj(b);return c|0}function XY(a){a=a|0;var b=0,c=0,d=0,e=0,f=0;c=Ui-32|0;Ui=c;d=gm(a,1024);f=d+8|0;b=Aj(a,2,0);a:{b:{if(!(K[b|0]==42&!K[b+1|0])){e=Aj(a,3,0);J[c+8>>2]=0;J[c+12>>2]=0;J[c+24>>2]=0;J[c+28>>2]=0;J[c+16>>2]=0;J[c+20>>2]=0;J[c+8>>2]=2;J[c>>2]=0;J[c+4>>2]=0;J[c+4>>2]=J[d+32>>2];b=bB(d,d+32|0,b,e,f,c);if(b){d=J[a+8>>2];J[d+8>>2]=0;J[a+8>>2]=d+16;xj(a,b);a=2;break a}Uq(a,1091,1);break b}J[c+8>>2]=0;J[c+12>>2]=0;J[c+24>>2]=0;J[c+28>>2]=0;J[c+16>>2]=0;J[c+20>>2]=0;J[c+8>>2]=2;J[c>>2]=0;J[c+4>>2]=0;e=J[d+32>>2];J[c+4>>2]=e;b=Ui-32|0;Ui=b;c:{d:{switch(e-2|0){case 0:J[b+8>>2]=0;J[b+12>>2]=0;J[b>>2]=0;J[b+4>>2]=0;Tm(Uz(d,b,16,f));break c;case 8:break d;default:break c}}J[b+24>>2]=0;J[b+16>>2]=0;J[b+20>>2]=0;J[b+8>>2]=0;J[b+12>>2]=0;J[b>>2]=0;J[b+4>>2]=0;Tm(Uz(d,b,28,f))}Ui=b+32|0;Uq(a,1106,1)}b=J[a+8>>2];J[b+8>>2]=3;O[b>>3]=1;J[a+8>>2]=J[a+8>>2]+16;a=1}Ui=c+32|0;return a|0}function j0(a){a=a|0;var b=0,c=0,d=0,e=0,f=0,g=0;d=Ui-16|0;Ui=d;J[d+8>>2]=0;J[d+12>>2]=0;J[d>>2]=0;J[d+4>>2]=0;Fj(a,0,0);c=J[d>>2];if((c|0)!=J[d+4>>2]){while(1){Fj(a,0,0);c=P(f,72)+c|0;b=J[c>>2];g=J[a+8>>2];J[g+8>>2]=2;J[g>>2]=b;J[a+8>>2]=J[a+8>>2]+16;uj(a,-1);ej(a,-3,72520);Fj(a,0,0);e=+N[c+4>>2];b=J[a+8>>2];J[b+8>>2]=3;O[b>>3]=e;J[a+8>>2]=J[a+8>>2]+16;ej(a,-2,6387);e=+N[c+8>>2];b=J[a+8>>2];J[b+8>>2]=3;O[b>>3]=e;J[a+8>>2]=J[a+8>>2]+16;ej(a,-2,4511);e=+N[c+12>>2];b=J[a+8>>2];J[b+8>>2]=3;O[b>>3]=e;J[a+8>>2]=J[a+8>>2]+16;ej(a,-2,52997);e=+N[c+16>>2];b=J[a+8>>2];J[b+8>>2]=3;O[b>>3]=e;J[a+8>>2]=J[a+8>>2]+16;ej(a,-2,14691);ej(a,-3,25363);TG(a,c+24|0);ej(a,-3,69352);b=J[c+64>>2];if(b){xj(a,b);ej(a,-3,66013);cj(J[c+64>>2])}uj(a,-2);Kj(a,-4);f=f+1|0;Ik(a,-2,f);c=J[d>>2];if((J[d+4>>2]-c|0)/72>>>0>f>>>0){continue}break}}if(!(!c|H[d+12|0]&1)){cj(c)}Ui=d+16|0;return 1}function Sga(a){a=a|0;var b=0,c=0,d=0,e=0,f=0,g=0,h=0,i=0,j=0,k=0;c=Ui-32|0;Ui=c;j=J[a+8>>2]-J[a+12>>2]>>4;J[c+28>>2]=0;Al(a,1,J[J[pk(a)+80>>2]+8>>2],82198,c+28|0,0,0);b=mk(a,2);h=Yi;a:{e=J[c+28>>2];b:{if(!e){J[c>>2]=Ij(a,1,0);b=fj(a,71185,c);break b}H[c+27|0]=1;f=J[e+232>>2];e=J[e+228>>2];d=0;c:{if((f|0)==(e|0)){break c}d:{d=J[e+104>>2];e:{if(J[d+48>>2]==(b|0)&J[d+52>>2]==(h|0)){d=e;b=1;break e}f=f-e>>7;k=f>>>0<=1?1:f;while(1){g=g+1|0;if((k|0)==(g|0)){break d}d=e+(g<<7)|0;i=J[d+104>>2];if((b|0)!=J[i+48>>2]|(h|0)!=J[i+52>>2]){continue}break}b=f>>>0>g>>>0}H[c+27|0]=H[d+124|0]&1;d=b;break c}d=f>>>0>g>>>0}if(!d){b=Ij(a,1,0);J[c+20>>2]=Ij(a,2,0);J[c+16>>2]=b;b=fj(a,27714,c+16|0);break b}d=K[c+27|0];b=J[a+8>>2];J[b+8>>2]=1;J[b>>2]=(d|0)!=0;J[a+8>>2]=J[a+8>>2]+16;b=1;if((j+1|0)!=J[a+8>>2]-J[a+12>>2]>>4){break a}}Ui=c+32|0;return b|0}Z(143411,40569,609,75292);B()}function Mta(a,b,c,d){a=a|0;b=b|0;c=c|0;d=d|0;var e=0,f=Q(0),g=Q(0),h=0,i=Q(0),j=Q(0),k=Q(0),l=Q(0),m=0,n=Q(0),o=Q(0),p=Q(0),q=Q(0),r=Q(0),s=Q(0),t=Q(0),u=Q(0),v=Q(0),w=Q(0),x=Q(0),y=Q(0);e=Ui-16|0;Ui=e;m=a+28|0;h=J[a+52>>2];g=N[m+((h+2|0)%3<<2)>>2];N[e+8>>2]=g;N[e+4>>2]=g;N[e>>2]=g;h=h<<2;N[h+e>>2]=g+N[h+m>>2];i=Q(Zi[J[J[a>>2]+44>>2]](a));j=Q(Zi[J[J[a>>2]+44>>2]](a));f=Q(Zi[J[J[a>>2]+44>>2]](a));g=N[b+48>>2];p=N[b+8>>2];q=N[b>>2];r=N[b+4>>2];n=N[b+52>>2];k=N[b+24>>2];s=N[b+16>>2];t=N[b+20>>2];o=N[b+56>>2];l=N[b+40>>2];u=N[b+32>>2];v=N[b+36>>2];w=N[e+8>>2];x=N[e>>2];y=N[e+4>>2];J[c+12>>2]=0;f=Q(f+w);i=Q(i+x);j=Q(j+y);l=Q(Q(Q(R(l))*f)+Q(Q(Q(R(u))*i)+Q(j*Q(R(v)))));N[c+8>>2]=o-l;k=Q(Q(Q(R(k))*f)+Q(Q(Q(R(s))*i)+Q(j*Q(R(t)))));N[c+4>>2]=n-k;f=Q(Q(Q(R(p))*f)+Q(Q(Q(R(q))*i)+Q(j*Q(R(r)))));N[c>>2]=g-f;J[d+12>>2]=0;N[d+8>>2]=o+l;N[d+4>>2]=k+n;N[d>>2]=f+g;Ui=e+16|0}function Ita(a,b,c){a=a|0;b=b|0;c=c|0;var d=0,e=Q(0),f=Q(0),g=Q(0),h=Q(0),i=Q(0),j=Q(0),k=Q(0),l=Q(0),m=Q(0),n=Q(0),o=Q(0),p=Q(0);e=Q(1);d=J[b>>2];if(!((d|0)==J[a+80>>2]|K[d+204|0]&4|Q(-N[a+84>>2])<=Q(Q(N[b+16>>2]*Q(N[a+36>>2]-N[a+20>>2]))+Q(Q(N[b+8>>2]*Q(N[a+28>>2]-N[a+12>>2]))+Q(Q(N[a+32>>2]-N[a+16>>2])*N[b+12>>2]))))){e=N[b+40>>2];J[a+76>>2]=d;N[a+4>>2]=e;a:{if(c){c=b+8|0;d=J[c+4>>2];J[a+44>>2]=J[c>>2];J[a+48>>2]=d;d=J[c+12>>2];J[a+52>>2]=J[c+8>>2];J[a+56>>2]=d;break a}h=N[d+12>>2];i=N[d+4>>2];j=N[d+8>>2];k=N[d+28>>2];l=N[d+20>>2];m=N[d+24>>2];n=N[d+44>>2];e=N[b+16>>2];o=N[d+36>>2];f=N[b+8>>2];p=N[d+40>>2];g=N[b+12>>2];J[a+56>>2]=0;N[a+52>>2]=Q(n*e)+Q(Q(o*f)+Q(g*p));N[a+48>>2]=Q(k*e)+Q(Q(l*f)+Q(g*m));N[a+44>>2]=Q(h*e)+Q(Q(i*f)+Q(j*g))}c=J[b+28>>2];J[a+60>>2]=J[b+24>>2];J[a+64>>2]=c;c=J[b+36>>2];J[a+68>>2]=J[b+32>>2];J[a+72>>2]=c;e=N[b+40>>2]}return Q(e)}function Hx(a,b,c){var d=Q(0),e=Q(0),f=Q(0),g=Q(0),h=Q(0),i=Q(0),j=Q(0),k=Q(0),l=Q(0),m=Q(0),n=Q(0),o=Q(0),p=Q(0),q=Q(0),r=Q(0),s=Q(0),t=Q(0);oF(a,b+2288|0,c);q=N[a+56>>2];J[a+56>>2]=0;J[a+60>>2]=1065353216;r=N[a+48>>2];s=N[a+52>>2];J[a+48>>2]=0;J[a+52>>2]=0;f=N[a>>2];m=N[a+20>>2];g=N[a+4>>2];n=N[a+16>>2];d=Q(Q(f*m)-Q(g*n));o=d;i=N[a+40>>2];j=N[a+36>>2];h=N[a+8>>2];p=N[a+24>>2];k=Q(Q(h*n)-Q(f*p));e=N[a+32>>2];l=Q(Q(g*p)-Q(h*m));d=Q(Q(1)/Q(Q(d*i)+Q(Q(j*k)+Q(e*l))));t=Q(o*d);N[a+40>>2]=t;k=Q(k*d);N[a+36>>2]=k;l=Q(l*d);N[a+32>>2]=l;o=Q(Q(Q(e*g)-Q(j*f))*d);N[a+24>>2]=o;f=Q(Q(Q(i*f)-Q(e*h))*d);N[a+20>>2]=f;g=Q(Q(Q(j*h)-Q(i*g))*d);N[a+16>>2]=g;h=Q(Q(Q(n*j)-Q(m*e))*d);N[a+8>>2]=h;e=Q(Q(Q(p*e)-Q(n*i))*d);N[a+4>>2]=e;d=Q(Q(Q(m*i)-Q(p*j))*d);N[a>>2]=d;N[a+44>>2]=-Q(Q(r*l)+Q(Q(s*k)+Q(q*t)));N[a+28>>2]=-Q(Q(r*g)+Q(Q(s*f)+Q(q*o)));N[a+12>>2]=-Q(Q(r*d)+Q(Q(s*e)+Q(q*h)))}function rD(a,b,c,d,e,f,g){var h=0,i=0,j=0,k=0,l=0,m=Q(0),n=0,o=Q(0);h=Ui-48|0;Ui=h;a:{b:{j=b&65535;i=J[a+32>>2];if(j>>>0<(J[a+36>>2]-i|0)/672>>>0){k=i+P(j,672)|0;if(L[k+648>>1]!=(b>>>16|0)){break b}if((j|0)!=L[k+650>>1]){break a}l=J[k+508>>2];i=(l>>>13&8191)-(l&8191)|0;j=i>>31;c:{d:{n=l>>>26&15;l=n-2|0;switch(l|0){case 0:case 3:break d;default:break c}}j=j<<1|i>>>31;i=i<<1}o=Q(Q(+(i>>>0)+ +(j>>>0)*4294967296)/Q(K[k+516|0]));m=cQ(1)?Q(1):c;c=m;e:{switch(l|0){case 0:case 3:c=Q(m*Q(.5));break;default:break e}}J[h+40>>2]=0;J[h+32>>2]=0;J[h+36>>2]=0;J[h+8>>2]=0;J[h+12>>2]=0;J[h+16>>2]=0;J[h+24>>2]=0;J[h+28>>2]=0;J[h>>2]=0;J[h+4>>2]=0;a=Ys(a,b,k+544|0,Q(1),h,n,o,Q(0),d,e,f,g);if(a){J[a+8>>2]=0;N[a+20>>2]=o*c;H[a+68|0]=K[a+68|0]&254;N[k+544>>2]=m}Ui=h+48|0;return}Z(145396,53895,487,84789);B()}Z(47372,40876,188,69601);B()}Z(5388,40876,189,69601);B()}function C5(a){a=a|0;var b=0,c=0,d=0,e=0,f=0,g=0,h=0;e=Ui-80|0;Ui=e;g=pj(e+60|0,a,0,37616,2711);b=J[a+8>>2]-J[a+12>>2]|0;Bj(a);f=qj(a,-1,J[84364],139081);gj(a,-2);c=b>>4;b=J[a+8>>2]-J[a+12>>2]>>4;if((c|0)==(b|0)){c=e+16|0;d=0;a:{if((b|0)<=0){break a}d=0;if(!kj(a,1)){break a}h=J[wn(a,J[f+304>>2])+32>>2];d=0;if((kj(a,2)|0)!=5){break a}Oj(a,2,5);uj(a,2);rj(a,-1,48365);b=ck(a,-1);gj(a,-2);gj(a,-2);d=(b|0)!=0}J[c+16>>2]=d;J[c+20>>2]=0;a=c;J[a+8>>2]=h;J[a+12>>2]=0;J[a>>2]=23;b=J[f+4>>2];b:{if((b|0)!=J[f+8>>2]){J[f+4>>2]=b+40;c=J[a+36>>2];J[b+32>>2]=J[a+32>>2];J[b+36>>2]=c;c=J[a+28>>2];J[b+24>>2]=J[a+24>>2];J[b+28>>2]=c;c=J[a+20>>2];J[b+16>>2]=J[a+16>>2];J[b+20>>2]=c;c=J[a+12>>2];J[b+8>>2]=J[a+8>>2];J[b+12>>2]=c;c=J[a+4>>2];J[b>>2]=J[a>>2];J[b+4>>2]=c;a=0;break b}J[e>>2]=(b-J[f>>2]|0)/40;a=Jj(g,132935,e)}oj(g);Ui=e+80|0;return a|0}Z(143244,37616,478,51340);B()}function ty(a,b,c,d,e){var f=0,g=Q(0),h=0,i=0,j=0;f=Ui-96|0;Ui=f;h=K[e+40|0];J[a+104>>2]=0;I[a+108>>1]=L[a+108>>1]&65534|h;h=J[e+8>>2];i=J[e+12>>2];a:{if((b|0)==J[e>>2]&(c|0)==J[e+4>>2]){J[a>>2]=h;J[a+4>>2]=i;b=J[e+20>>2];J[a+8>>2]=J[e+16>>2];J[a+12>>2]=b;b=J[e+28>>2];J[a+16>>2]=J[e+24>>2];J[a+20>>2]=b;b=J[e+36>>2];J[a+24>>2]=J[e+32>>2];J[a+28>>2]=b;N[f>>2]=N[d>>2];N[f+4>>2]=N[d+4>>2];N[f+8>>2]=N[d+8>>2];N[f+12>>2]=N[d+12>>2];hj(a+32|0,Yp(f+24|0,f),72);break a}b:{if((b|0)==(h|0)&(c|0)==(i|0)){g=N[d>>2];b=f+24|0;J[b>>2]=0;O[b+8>>3]=g;break b}if((b|0)==J[e+16>>2]&(c|0)==J[e+20>>2]){g=N[d+4>>2];b=f+24|0;J[b>>2]=0;O[b+8>>3]=g;break b}if((b|0)==J[e+24>>2]&(c|0)==J[e+28>>2]){g=N[d+8>>2];b=f+24|0;J[b>>2]=0;O[b+8>>3]=g;break b}j=-1;if(J[e+32>>2]!=(b|0)|J[e+36>>2]!=(c|0)){break a}g=N[d+12>>2];b=f+24|0;J[b>>2]=0;O[b+8>>3]=g}hj(a+32|0,b,72);j=0}Ui=f+96|0;return j}function MA(a,b,c){var d=0;a:{if((b|0)>0){b=(J[a+12>>2]+(b<<4)|0)-16|0;d=b>>>0>=M[a+8>>2]?173288:b;break a}d=J[a+8>>2]+(b<<4)|0;if((b|0)>=-9999){break a}b:{switch(b+10002|0){case 2:d=J[a+16>>2]+96|0;break a;case 1:b=J[J[J[J[a+20>>2]+4>>2]>>2]+12>>2];J[a+96>>2]=5;J[a+88>>2]=b;d=a+88|0;break a;case 0:d=a+72|0;break a;default:break b}}d=J[J[J[a+20>>2]+4>>2]>>2];d=K[d+7|0]<-10002-b>>>0?173288:(d+(0-b<<4)|0)-160024|0}c:{if((c|0)>0){b=(J[a+12>>2]+(c<<4)|0)-16|0;b=b>>>0>=M[a+8>>2]?173288:b;break c}b=J[a+8>>2]+(c<<4)|0;if((c|0)>=-9999){break c}d:{switch(c+10002|0){case 2:b=J[a+16>>2]+96|0;break c;case 1:b=J[J[J[J[a+20>>2]+4>>2]>>2]+12>>2];J[a+96>>2]=5;J[a+88>>2]=b;b=a+88|0;break c;case 0:b=a+72|0;break c;default:break d}}b=J[J[J[a+20>>2]+4>>2]>>2];b=K[b+7|0]<-10002-c>>>0?173288:(b+(0-c<<4)|0)-160024|0}c=0;if(!((d|0)==173288|(b|0)==173288)){c=oI(a,d,b)}return c}function eu(a,b,c){var d=0;a:{if((b|0)>0){b=(J[a+12>>2]+(b<<4)|0)-16|0;d=b>>>0>=M[a+8>>2]?173288:b;break a}d=J[a+8>>2]+(b<<4)|0;if((b|0)>=-9999){break a}b:{switch(b+10002|0){case 2:d=J[a+16>>2]+96|0;break a;case 1:b=J[J[J[J[a+20>>2]+4>>2]>>2]+12>>2];J[a+96>>2]=5;J[a+88>>2]=b;d=a+88|0;break a;case 0:d=a+72|0;break a;default:break b}}d=J[J[J[a+20>>2]+4>>2]>>2];d=K[d+7|0]<-10002-b>>>0?173288:(d+(0-b<<4)|0)-160024|0}c:{if((c|0)>0){b=(J[a+12>>2]+(c<<4)|0)-16|0;b=b>>>0>=M[a+8>>2]?173288:b;break c}b=J[a+8>>2]+(c<<4)|0;if((c|0)>=-9999){break c}d:{switch(c+10002|0){case 2:b=J[a+16>>2]+96|0;break c;case 1:b=J[J[J[J[a+20>>2]+4>>2]>>2]+12>>2];J[a+96>>2]=5;J[a+88>>2]=b;b=a+88|0;break c;case 0:b=a+72|0;break c;default:break d}}a=J[J[J[a+20>>2]+4>>2]>>2];b=K[a+7|0]<-10002-c>>>0?173288:(a+(0-c<<4)|0)-160024|0}a=0;if(!((d|0)==173288|(b|0)==173288)){a=os(d,b)}return a}function Bka(a){a=a|0;var b=0,c=0,d=0,e=0,f=0,g=0;b=J[a+8>>2];e=J[a+12>>2];c=J[J[a+16>>2]>>2];a=J[c+20>>2];if(a){cj(a)}a:{b:{a=J[c+16>>2];if(a){while(1){d=J[a+8>>2];f=J[d+12>>2];if(!f){break b}if(!(H[b+145|0]&1)){fM(J[b+132>>2],f)}J[d+12>>2]=0;d=J[a>>2];cj(a);a=d;if(a){continue}break}}J[c+16>>2]=0;a=J[c+12>>2];if(a){while(1){if(J[a+12>>2]){tQ(b,a)}d=J[a+16>>2];cj(a);a=d;if(a){continue}break}}J[c+12>>2]=0;a=J[c+8>>2];c:{d:{if(K[e+17|0]==1){if(!a){break c}iM(J[b+132>>2],a);break d}if(!a){break c}vC(J[b+132>>2],a)}J[c+8>>2]=0}d=J[b+152>>2];e=J[b+148>>2];e:{if((d|0)==(e|0)){break e}a=d-e>>2;f=a>>>0<=1?1:a;a=0;while(1){g=e+(a<<2)|0;if(J[g>>2]!=(c|0)){a=a+1|0;if((f|0)!=(a|0)){continue}break e}break}J[g>>2]=J[d-4>>2];a=J[b+152>>2]-4|0;J[b+152>>2]=a;if(a>>>0>2]){break a}}if(c){cj(c)}return 0}Z(12979,38329,1702,13081);B()}Z(12682,53895,540,43537);B()}function qea(a){a=a|0;var b=0,c=0,d=0,e=0,f=0,g=0;b=Ui-32|0;Ui=b;c=J[a+4>>2];d=J[J[a+36>>2]+8>>2];J[b+24>>2]=0;J[b+28>>2]=0;J[b+16>>2]=0;J[b+20>>2]=0;J[b+8>>2]=0;J[b+12>>2]=0;J[b>>2]=0;J[b+4>>2]=0;J[b+24>>2]=J[d+24>>2];g=UQ(J[a>>2],J[a+20>>2],J[a+24>>2],c,b);e=J[a>>2];a:{if(!g){a=J[d+28>>2];if(a){vj(e,a)}a=J[d>>2];f=J[d+4>>2];if((a|0)!=(f|0)){c=0;while(1){vj(e,J[(c<<2)+a>>2]);c=c+1|0;f=J[d+4>>2];a=J[d>>2];if(c>>>0>2>>>0){continue}break}}J[d+28>>2]=J[b+28>>2];c=J[b>>2];J[b>>2]=a;J[d>>2]=c;c=J[b+4>>2];J[b+4>>2]=f;J[d+4>>2]=c;c=J[b+8>>2];J[b+8>>2]=J[d+8>>2];J[d+8>>2]=c;c=K[d+12|0];e=K[b+12|0];H[b+12|0]=c&1|e&254;H[d+12|0]=c&254|e&1;break a}a=J[b+28>>2];if(a){vj(e,a)}a=J[b>>2];if((a|0)==J[b+4>>2]){break a}c=0;while(1){vj(e,J[(c<<2)+a>>2]);c=c+1|0;a=J[b>>2];if(c>>>0>2]-a>>2>>>0){continue}break}}if(!(!a|H[b+12|0]&1)){cj(a)}Ui=b+32|0;return g|0}function $2(a){a=a|0;var b=Q(0),c=0,d=0,e=Q(0),f=Q(0),g=Q(0),h=0,i=Q(0),j=Q(0),k=Q(0),l=Q(0),m=Q(0),n=Q(0);c=Ui-80|0;Ui=c;d=qj(a,1,J[215722],0);b=N[d+8>>2];e=N[d>>2];f=N[d+4>>2];a:{if(!(e!=e|f!=f|b!=b)){g=N[d+12>>2];if(g==g){break a}}g=N[d+12>>2];O[c+56>>3]=b;O[c+48>>3]=f;O[c- -64>>3]=g;O[c+40>>3]=e;J[c+32>>2]=1;fj(a,138526,c+32|0)}h=qj(a,2,J[215720],0);b=N[h+8>>2];e=N[h>>2];f=N[h+4>>2];if(!(!(e!=e|f!=f)&b==b)){O[c+24>>3]=b;O[c+16>>3]=f;J[c>>2]=2;O[c+8>>3]=e;fj(a,138436,c);b=N[h+8>>2];f=N[h+4>>2];e=N[h>>2]}g=N[d>>2];i=N[d+12>>2];j=N[d+4>>2];k=N[d+8>>2];d=Sj(a,16);l=Q(Q(Q(i*f)+Q(k*e))-Q(g*b));m=Q(Q(k*b)+Q(Q(g*e)+Q(j*f)));n=Q(Q(Q(i*b)+Q(g*f))-Q(j*e));b=Q(Q(Q(i*e)+Q(j*b))-Q(k*f));N[d+8>>2]=Q(g*l)+Q(Q(Q(k*m)+Q(i*n))-Q(j*b));N[d+4>>2]=Q(b*k)+Q(Q(Q(m*j)+Q(i*l))-Q(n*g));N[d>>2]=Q(n*j)+Q(Q(Q(m*g)+Q(i*b))-Q(l*k));rj(a,-1e4,108973);Mj(a,-2);Ui=c+80|0;return 1}function p7(a,b){a=a|0;b=b|0;var c=0,d=0;a=Ui-2240|0;Ui=a;J[a+48>>2]=0;a:{b:{c:{d:{c=Qu(J[b+4>>2],J[b+8>>2],a+48|0);if(!c){if(!(H[b+20|0]&1)){break c}c=EK(J[a+48>>2],J[J[245393]+8388>>2]);if(c){break d}dj(3,95071,60550,0);break b}b=c+21|0;if(b>>>0>21){b=97515}else{b=J[(b<<2)+223356>>2]}J[a+32>>2]=b;dj(4,95071,28229,a+32|0);break a}b=c+21|0;if(b>>>0>21){b=97515}else{b=J[(b<<2)+223356>>2]}J[a+20>>2]=b;J[a+16>>2]=c;dj(4,95071,27854,a+16|0);dj(3,95071,60550,0);break a}dj(0,95071,47179,0)}b=J[a+48>>2];c=J[245394];if(!c){if(!b){dj(3,95071,60630,0);c=-6;break a}c=NM(980536);J[245394]=c}d=J[J[c>>2]+24>>2];if(d){b=Zi[d|0](J[c+4>>2],b)|0}else{b=-1}if(b){b=a+52|0;Ls(J[245394],b);J[a+8>>2]=a+192;J[a+4>>2]=a+60;J[a>>2]=b;dj(3,95071,154584,a);c=-1;break a}b=J[245394];c=J[J[b>>2]+20>>2];if(c){Zi[c|0](J[b+4>>2],981580)|0}c=0}co(J[a+48>>2]);Ui=a+2240|0;return c|0}function fda(a,b,c,d,e,f,g){a=a|0;b=b|0;c=c|0;d=d|0;e=e|0;f=f|0;g=g|0;var h=0,i=0,j=0;h=Ui-1120|0;Ui=h;i=4;j=J[a+360>>2];a=J[J[j+4>>2]+88>>2];J[h+24>>2]=b;J[h+28>>2]=c;J[h+16>>2]=a;a=h+96|0;Gj(a,1024,82395,h+16|0);a=bj(a);J[h+88>>2]=0;J[h+92>>2]=0;J[h+80>>2]=0;J[h+84>>2]=0;J[h+72>>2]=0;J[h+76>>2]=0;b=h- -64|0;J[b>>2]=0;J[b+4>>2]=0;J[h+56>>2]=0;J[h+60>>2]=0;J[h+48>>2]=0;J[h+52>>2]=0;J[h+40>>2]=a;b=Yi;J[h+44>>2]=b;a:{b:{switch(f|0){case 0:J[h+52>>2]=2;i=3;break a;default:Z(62644,40837,2298,17046);B();case 1:J[h+52>>2]=3;break a;case 2:break b}}J[h+56>>2]=0;i=1}H[h+81|0]=0;H[h+82|0]=0;H[h+83|0]=0;H[h+84|0]=0;H[h+85|0]=0;H[h+86|0]=0;H[h+87|0]=0;H[h+88|0]=0;J[h+76>>2]=0;J[h+80>>2]=0;J[h+60>>2]=g;J[h+68>>2]=d;J[h+72>>2]=e;J[h+64>>2]=P(P(d,e),i);c=HP(J[J[J[j+12>>2]+80>>2]>>2],h+40|0);if(c){a=tj(a,b);J[h+4>>2]=c;J[h>>2]=a;dj(4,88458,139650,h)}Ui=h+1120|0}function QG(a,b){var c=0,d=0,e=0,f=0,g=0;c=Ui-128|0;Ui=c;e=J[a+48>>2];g=J[e+36>>2];a:{if(J[a+16>>2]==285){b:{if(J[b+28>>2]<2147483646){break b}d=J[e+16>>2];f=J[J[e>>2]+60>>2];c:{if(!f){J[c+32>>2]=2147483645;J[c+36>>2]=32070;d=gk(d,27750,c+32|0);break c}J[c+52>>2]=2147483645;J[c+48>>2]=f;J[c+56>>2]=32070;d=gk(d,27784,c+48|0)}Wn(J[e+12>>2],d,0);if(J[a+16>>2]==285){break b}d=J[a+52>>2];J[c+16>>2]=Cl(a,285);qk(a,gk(d,74053,c+16|0))}d=J[a+24>>2];tk(a);J[c+112>>2]=rs(J[a+48>>2],d);J[c+104>>2]=4;J[c+120>>2]=-1;J[c+124>>2]=-1;break a}tk(a);d=c+104|0;Il(a,d,0);wI(J[a+48>>2],d);if(J[a+16>>2]!=93){d=J[a+52>>2];J[c+64>>2]=Cl(a,93);qk(a,gk(d,74053,c- -64|0))}tk(a)}J[b+28>>2]=J[b+28>>2]+1;if(J[a+16>>2]!=61){d=J[a+52>>2];J[c>>2]=Cl(a,61);qk(a,gk(d,74053,c))}tk(a);d=hm(e,c+104|0);f=a;a=c+80|0;Il(f,a,0);tm(e,9,J[J[b+24>>2]+8>>2],d,hm(e,a));J[e+36>>2]=g;Ui=c+128|0}function zha(a,b,c,d,e){a=a|0;b=b|0;c=c|0;d=d|0;e=e|0;var f=0,g=0,h=0;b=J[a+20>>2];if(!b){return-1}g=-1;a:{b=J[J[a+16>>2]+(mxa(c,d,b)<<2)>>2];b:{if((b|0)==-1){break b}f=J[a+96>>2];h=J[a+24>>2];while(1){b=(b<<4)+h|0;if(J[b>>2]!=(c|0)|J[b+4>>2]!=(d|0)){b=J[b+12>>2];if((b|0)!=-1){continue}break b}break}if(!J[f+88>>2]){return-1e3}b=J[b+8>>2];if(b>>>0>=M[f+28>>2]){break a}b=J[f+24>>2]+P(b,36)|0;c=J[b+24>>2];if(c>>>0>6){return-3}J[e+12>>2]=J[f+84>>2];d=J[e>>2]&-8192|J[b+12>>2]&8191;J[e>>2]=d;J[e>>2]=J[b+16>>2]<<13&67100672|d&-67100673;d=J[a+80>>2];I[e+4>>1]=Zi[J[79463]](J[d>>2],J[d+4>>2]);d=J[a+80>>2];I[e+6>>1]=Zi[J[79464]](J[d>>2],J[d+4>>2]);J[e>>2]=J[e>>2]&-1006632961|J[(c<<2)+301096>>2]<<26&1006632960;H[e+8|0]=J[b+20>>2];c=K[e+20|0]&-2|H[b+28|0]&1;H[e+20|0]=c;b=K[b+32|0];J[e+16>>2]=a;H[e+20|0]=b<<1&2|c&253;g=0}return g|0}Z(12664,54737,96,84789);B()}function wga(a){a=a|0;var b=0,c=0,d=0,e=0,f=0,g=0,h=0,i=0,j=0,k=Q(0);b=Ui-80|0;Ui=b;f=1;g=pj(b+28|0,a,1,39481,970);h=mk(a,2);i=Yi;d=J[J[pk(a)+80>>2]+8>>2];J[b+24>>2]=0;J[b+20>>2]=0;J[b+72>>2]=0;J[b+76>>2]=0;c=b- -64|0;J[c>>2]=0;J[c+4>>2]=0;J[b+56>>2]=0;J[b+60>>2]=0;J[b+48>>2]=0;J[b+52>>2]=0;j=b+48|0;Al(a,1,d,80935,b+24|0,j,b+20|0);J[b+48>>2]=0;c=J[b+24>>2];e=J[b+20>>2];a:{if(H[e+145|0]&1){dj(4,88458,25611,0);d=1;break a}d=3;c=J[c+12>>2];b:{if(!c){break b}while(1){if(J[c>>2]!=(h|0)|J[c+4>>2]!=(i|0)){c=J[c+16>>2];if(c){continue}break b}break}d=4;c=J[c+12>>2];if(!c){break a}N[j>>2]=N[J[J[e+132>>2]+36>>2]+68>>2]*Q(Zi[J[J[c>>2]+12>>2]](c,Q(Q(1)/N[e+136>>2])));d=0}}c:{if(d){J[b>>2]=tj(h,i);J[b+8>>2]=d;J[b+4>>2]=J[(d<<2)+225184>>2];f=Jj(g,140350,b);break c}k=N[b+48>>2];d=J[a+8>>2];J[d+8>>2]=3;O[d>>3]=k;J[a+8>>2]=J[a+8>>2]+16}oj(g);Ui=b+80|0;return f|0}function gu(a,b,c,d){var e=0,f=0,g=0,h=0;f=J[b+8>>2];a:{while(1){b:{if((f|0)==5){e=J[b>>2];f=nu(e,c);c:{if(J[f+8>>2]){break c}e=J[e+8>>2];if(!e|H[e+6|0]&1){break c}e=Zo(e,0,J[J[a+16>>2]+188>>2]);if(e){break b}}a=J[f+4>>2];J[d>>2]=J[f>>2];J[d+4>>2]=a;J[d+8>>2]=J[f+8>>2];return}e=er(a,b,0);if(J[e+8>>2]){break b}Tw(a,b,5432)}f=J[e+8>>2];if((f|0)!=6){b=e;g=g+1|0;if((g|0)==100){break a}continue}break}g=J[a+32>>2];f=J[e+4>>2];h=J[a+8>>2];J[h>>2]=J[e>>2];J[h+4>>2]=f;J[h+8>>2]=J[e+8>>2];f=J[b+4>>2];e=J[a+8>>2];J[e+16>>2]=J[b>>2];J[e+20>>2]=f;J[e+24>>2]=J[b+8>>2];b=J[c+4>>2];f=J[a+8>>2];J[f+32>>2]=J[c>>2];J[f+36>>2]=b;J[f+40>>2]=J[c+8>>2];e=J[a+8>>2];if((J[a+28>>2]-e|0)<=48){Ml(a,3);e=J[a+8>>2]}J[a+8>>2]=e+48;$o(a,e,1);b=J[a+8>>2];f=b-16|0;J[a+8>>2]=f;c=J[a+32>>2]+(d-g|0)|0;a=J[f+4>>2];J[c>>2]=J[f>>2];J[c+4>>2]=a;J[c+8>>2]=J[b-8>>2];return}xl(a,67309,0)}function Cka(a){a=a|0;var b=0,c=0,d=0,e=0,f=0,g=0;f=J[a+4>>2];if(!f){return-1e3}c=J[f+132>>2];b=J[a>>2];a=J[b>>2];a:{b:{if(K[b+17|0]==1){b=J[a+4>>2];d=J[a>>2];if((b|0)!=(d|0)){while(1){g=(e<<2)+d|0;if(J[g>>2]==(c|0)){J[g>>2]=J[b-4>>2];b=J[a+4>>2]-4|0;J[a+4>>2]=b;d=J[a>>2];if(d>>>0>b>>>0){break a}}e=e+1|0;if(e>>>0>2>>>0){continue}break}}if(c){FL(c);cj(c)}break b}b=J[a+4>>2];d=J[a>>2];if((b|0)!=(d|0)){while(1){g=(e<<2)+d|0;if(J[g>>2]==(c|0)){J[g>>2]=J[b-4>>2];b=J[a+4>>2]-4|0;J[a+4>>2]=b;d=J[a>>2];if(d>>>0>b>>>0){break a}}e=e+1|0;if(e>>>0>2>>>0){continue}break}}if(c){c:{if(H[c+103080|0]&1){break c}a=J[c+103068>>2];if(!a){break c}cj(a)}IU(c+40|0);d:{if(H[c+28|0]&1){break d}a=J[c+8>>2];if(a){cj(a)}a=J[c>>2];if(!a){break d}cj(a)}cj(c)}}e:{if(H[f+160|0]&1){break e}a=J[f+148>>2];if(!a){break e}cj(a)}cj(f);return 0}Z(12682,53895,540,43537);B()}function AA(a,b,c,d){var e=0,f=0,g=0,h=0,i=0,j=0,k=0;i=Ui-32|0;Ui=i;J[i+12>>2]=0;e=-20;a:{if(c>>>0>>0&d-c>>>0>>0){break a}g=J[a+324>>2];f=g;h=J[a+320>>2];j=h+b|0;f=j>>>0>>0?f+1|0:f;if((g|0)==(f|0)&h>>>0>j>>>0|f>>>0>>0|((f|0)==15&j>>>0>4294967264|f>>>0>15)){break a}J[a+320>>2]=j;J[a+324>>2]=f;if(b){h=a+368|0;j=a+352|0;while(1){e=K[a+367|0]+1|0;H[a+367|0]=e;b:{if((e|0)==(e&255)){break b}e=K[a+366|0]+1|0;H[a+366|0]=e;if((e|0)==(e&255)){break b}e=K[a+365|0]+1|0;H[a+365|0]=e;if((e|0)==(e&255)){break b}H[a+364|0]=K[a+364|0]+1}e=qo(a,j,16,i+16|0,i+12|0);if(e){break a}f=b>>>0>=16?16:b;e=0;while(1){if(!J[a+384>>2]){g=e+h|0;H[g|0]=K[g|0]^K[c+e|0]}g=K[c+e|0]^K[(i+16|0)+e|0];H[d+e|0]=g;if(J[a+384>>2]==1){k=e+h|0;H[k|0]=g^K[k|0]}e=e+1|0;if((f|0)!=(e|0)){continue}break}qu(a,h,h);d=d+f|0;c=c+f|0;b=b-f|0;if(b){continue}break}}e=0}Ui=i+32|0;return e}function ZG(a){var b=0,c=0,d=0,e=0,f=0,g=0,h=0,i=0,j=0,k=0;g=J[a+48>>2];e=J[g>>2];H[e+74|0]=0;b=J[a+16>>2];a:{if((b|0)==41){break a}b:{while(1){c:{d:{switch(b-279|0){case 6:b=J[a+24>>2];tk(a);sn(a,b,c);c=c+1|0;break c;case 0:tk(a);sn(a,Ep(a,55938,3),c);f=7;H[e+74|0]=7;c=c+1|0;break b;default:break d}}qk(a,74088)}f=K[e+74|0];if(f){break b}if(J[a+16>>2]==44){tk(a);b=J[a+16>>2];continue}break}f=0}a=J[a+48>>2];b=K[a+50|0]+c|0;H[a+50|0]=b;if(!c){break a}h=b&255;i=a+172|0;b=J[a+24>>2];d=J[J[a>>2]+24>>2];a=c;j=a&3;if(j){while(1){J[(P(L[(h-a<<1)+i>>1],12)+d|0)+4>>2]=b;a=a-1|0;k=k+1|0;if((j|0)!=(k|0)){continue}break}}if(c>>>0<4){break a}while(1){c=(h-a<<1)+i|0;J[(P(L[c>>1],12)+d|0)+4>>2]=b;J[(P(L[c+2>>1],12)+d|0)+4>>2]=b;J[(P(L[c+4>>1],12)+d|0)+4>>2]=b;J[(P(L[c+6>>1],12)+d|0)+4>>2]=b;a=a-4|0;if(a){continue}break}}a=K[g+50|0];H[e+73|0]=a-(f&1);fr(g,a)}function aka(a){a=a|0;var b=0,c=0,d=0,e=0,f=0;c=J[a+80>>2];if(!c){return 0}b=J[a+84>>2];J[a>>2]=J[a+80>>2];J[a+4>>2]=b;b=J[a+92>>2];J[a+8>>2]=J[a+88>>2];J[a+12>>2]=b;b=J[a+100>>2];J[a+16>>2]=J[a+96>>2];J[a+20>>2]=b;b=J[a+108>>2];J[a+24>>2]=J[a+104>>2];J[a+28>>2]=b;b=J[a+116>>2];J[a+32>>2]=J[a+112>>2];J[a+36>>2]=b;d=J[J[a+112>>2]+8>>2];f=J[d+32>>2];a:{b:{c:{d:{b=c&65535;d=(J[d+36>>2]-f|0)/672|0;if(b>>>0>>0){e=f+P(b,672)|0;if(L[e+648>>1]!=(c>>>16|0)){break d}if(L[e+650>>1]!=(b|0)){break c}while(1){c=0;b=L[(f+P(b,672)|0)+654>>1];if((b|0)==65535){break a}if(b>>>0>=d>>>0){break b}c=f+P(b,672)|0;if(H[c+668|0]&1){continue}e=L[c+650>>1];if((e|0)==65535){continue}break}c=e|L[c+648>>1]<<16;break a}break b}Z(47372,40876,188,69601);B()}Z(5388,40876,189,69601);B()}Z(145396,53895,487,84789);B()}J[a+80>>2]=c;J[a+84>>2]=0;return(J[a>>2]|J[a+4>>2])!=0|0}function WO(a,b,c,d,e,f,g,h,i,j){var k=0,l=0,m=0,n=0,o=0,p=0,q=0,r=0,s=0,t=0,u=0,v=0;l=Ui-32|0;Ui=l;a:{b:{k=J[d>>2];if(J[d+4>>2]-k>>5>>>0>e>>>0){n=k+(e<<5)|0;e=J[n+20>>2];k=J[n+16>>2];if((e|0)!=(k|0)){e=e-k>>5;r=e>>>0<=1?1:e;p=i?2:1;s=p+i|0;t=h+4|0;u=h+8|0;v=((i|0)!=0)+i|0;while(1){k=J[n+16>>2];if(J[n+20>>2]-k>>5>>>0<=o>>>0){break a}q=J[h+8>>2];e=J[h>>2];k=k+(o<<5)|0;m=yj(J[k>>2]);if(q-e>>>0<=s+m>>>0){if(H[h+12|0]&1){break b}lj(((m+p|0)+q|0)-e|0,1,h,u,t);J[h+4>>2]=J[h+8>>2];e=J[h>>2]}e=e+i|0;if(i){H[e|0]=46;e=e+1|0}H[hj(e,J[k>>2],m)+m|0]=0;c:{if(H[k+20|0]&1){WO(a,b,c,d,J[k+16>>2],f,g,h,m+v|0,L[k+28>>1]+j|0);break c}e=J[h>>2];J[l+28>>2]=j;J[l+24>>2]=k;J[l+16>>2]=g;J[l+12>>2]=f;J[l+8>>2]=e;J[l+20>>2]=c;Zi[a|0](l+8|0,b)}o=o+1|0;if((r|0)!=(o|0)){continue}break}}Ui=l+32|0;return}break a}Z(151729,53895,501,2284);B()}Z(145396,53895,494,84789);B()}function Ux(a,b,c,d){var e=0,f=0,g=0,h=0;a:{b:{h=J[a+16>>2];g=J[a+8>>2];if(J[a+24>>2]!=((h-g|0)/24|0)){e=J[a+4>>2];c:{if(!e){break c}f=J[J[a>>2]+(mxa(b,c,e)<<2)>>2];if((f|0)==-1){break c}while(1){e=g+P(f,24)|0;if(J[e>>2]==(b|0)&(c|0)==J[e+4>>2]){break b}f=J[e+20>>2];if((f|0)!=-1){continue}break}}e=J[a+12>>2];d:{if((h|0)!=(e|0)){J[a+12>>2]=e+24;break d}e=J[a+20>>2];if((e|0)==-1){break a}e=g+P(e,24)|0;J[a+20>>2]=J[e+20>>2]}J[e>>2]=b;J[e+4>>2]=c;f=J[d+4>>2];J[e+8>>2]=J[d>>2];J[e+12>>2]=f;J[e+16>>2]=J[d+8>>2];J[e+20>>2]=-1;d=J[a+8>>2];b=J[a>>2]+(mxa(b,c,J[a+4>>2])<<2)|0;f=J[b>>2];if((f|0)!=-1){while(1){b=d+P(f,24)|0;f=J[b+20>>2];if((f|0)!=-1){continue}break}b=b+20|0}J[b>>2]=(e-d|0)/24;J[a+24>>2]=J[a+24>>2]+1;return}Z(144851,55629,229,9606);B()}a=J[d+4>>2];J[e+8>>2]=J[d>>2];J[e+12>>2]=a;J[e+16>>2]=J[d+8>>2];return}Z(152203,55629,537,2838);B()}function nha(a,b,c,d,e,f){a=a|0;b=b|0;c=c|0;d=d|0;e=e|0;f=f|0;var g=0,h=0;b=Ui-48|0;Ui=b;a:{b:{c:{d:{g=J[a+4>>2];a=J[g+136>>2];e:{if(!a){break e}a=J[J[g+132>>2]+(mxa(c,d,a)<<2)>>2];if((a|0)==-1){break e}h=J[g+140>>2];while(1){a=P(a,24)+h|0;if((c|0)==J[a>>2]&(d|0)==J[a+4>>2]){break d}a=J[a+16>>2];if((a|0)!=-1){continue}break}}a=tj(c,d);J[b+4>>2]=tj(e,f);J[b>>2]=a;dj(4,88458,26612,b);break c}if(J[a+8>>2]!=(e|0)|J[a+12>>2]!=(f|0)){c=tj(c,d);a=tj(J[a+8>>2],J[a+12>>2]);J[b+40>>2]=tj(e,f);J[b+36>>2]=a;J[b+32>>2]=c;dj(4,88458,27400,b+32|0);break c}a=J[g+104>>2];f:{if(!a){break f}a=J[J[g+100>>2]+(mxa(c,d,a)<<2)>>2];if((a|0)==-1){break f}e=J[g+108>>2];while(1){a=e+(a<<4)|0;if(J[a>>2]==(c|0)&(d|0)==J[a+4>>2]){break b}a=J[a+12>>2];if((a|0)!=-1){continue}break}}J[b+16>>2]=tj(c,d);dj(4,88458,29580,b+16|0)}a=0;break a}a=J[a+8>>2]}Ui=b+48|0;return a|0}function SG(a,b,c){var d=0,e=0,f=0,g=0,h=0,i=0,j=0;g=J[a+48>>2];e=J[g>>2];f=J[e+52>>2];a:{if((f|0)>J[g+44>>2]){break a}J[e+16>>2]=ps(J[a+52>>2],J[e+16>>2],e+52|0,4,262143,6533);i=J[e+52>>2];if((f|0)>=(i|0)){break a}d=f;j=i-d&3;if(j){while(1){J[J[e+16>>2]+(d<<2)>>2]=0;d=d+1|0;h=h+1|0;if((j|0)!=(h|0)){continue}break}}if(f-i>>>0>4294967292){break a}while(1){f=d<<2;J[f+J[e+16>>2]>>2]=0;J[(f+J[e+16>>2]|0)+4>>2]=0;J[(f+J[e+16>>2]|0)+8>>2]=0;J[(f+J[e+16>>2]|0)+12>>2]=0;d=d+4|0;if((i|0)!=(d|0)){continue}break}}d=J[b>>2];f=J[e+16>>2];h=J[g+44>>2];J[g+44>>2]=h+1;J[(h<<2)+f>>2]=d;if(!(!(K[d+5|0]&3)|!(K[e+5|0]&4))){ap(J[a+52>>2],e,d);h=J[g+44>>2]-1|0}J[c+8>>2]=Rw(g,36,0,h);J[c>>2]=11;J[c+16>>2]=-1;J[c+20>>2]=-1;if(K[J[b>>2]+72|0]){a=b+51|0;d=0;while(1){c=a+(d<<1)|0;tm(g,(K[c|0]!=6)<<2,0,K[c+1|0],0);d=d+1|0;if(d>>>0>2]+72|0]){continue}break}}}function KH(a,b){var c=0,d=0,e=0,f=0,g=0,h=0;d=Ui-32|0;Ui=d;a:{if(Pj(b+24|0,1)){c=-19584;break a}if(!J[a+48>>2]){c=-20352;break a}if(!J[a+60>>2]){c=Um(b)>>>0>J[a+92>>2]+7>>>3>>>0?-19584:0;break a}c=-19584;if((Pj(b,0)|0)<0){break a}f=b+12|0;if((Pj(f,0)|0)<0){break a}g=a+4|0;if((_j(b,g)|0)>=0){break a}if((_j(f,g)|0)>=0){break a}h=d+20|0;c=h;J[c+8>>2]=0;J[c>>2]=1;J[c+4>>2]=0;e=d+8|0;c=e;J[c+8>>2]=0;J[c>>2]=1;J[c+4>>2]=0;c=Ak(h,f,f);b:{if(c){break b}c=Nl(h,a);if(c){break b}c=Ak(e,b,b);if(c){break b}c=Nl(e,a);if(c){break b}c:{if(!J[a+24>>2]){c=km(e,e,3);if(c){break b}while(1){if(J[d+8>>2]>=0){break c}c=d+8|0;if(!Pj(c,0)){break c}c=Ql(c,c,g);if(!c){continue}break}break b}c=d+8|0;c=Zt(a,c,c,a+16|0);if(c){break b}}e=d+8|0;c=jl(a,e,e,b);if(c){break b}c=Zt(a,e,e,a+28|0);if(c){break b}c=_j(d+20|0,e)?-19584:0}Dj(d+20|0);Dj(d+8|0)}Ui=d+32|0;return c}function _na(a){a=a|0;var b=0;b=J[a+16>>2];if(b){cj(b)}b=J[a+20>>2];if(b){cj(b)}b=J[a+24>>2];if(b){cj(b)}b=J[a+28>>2];if(b){cj(b)}b=J[a+32>>2];if(b){cj(b)}b=J[a+36>>2];if(b){cj(b)}b=J[a+40>>2];if(b){cj(b)}b=J[a+44>>2];if(b){cj(b)}b=J[a+48>>2];if(b){cj(b)}b=J[a+52>>2];if(b){cj(b)}b=J[a+56>>2];if(b){cj(b)}b=J[a+60>>2];if(b){cj(b)}b=J[a+64>>2];if(b){cj(b)}b=J[a+68>>2];if(b){cj(b)}b=J[a+72>>2];if(b){cj(b)}b=J[a+76>>2];if(b){cj(b)}b=J[a+80>>2];if(b){cj(b)}b=J[a+84>>2];if(b){cj(b)}b=J[a+88>>2];if(b){cj(b)}b=J[a+92>>2];if(b){cj(b)}b=J[a+96>>2];if(b){cj(b)}b=J[a+100>>2];if(b){cj(b)}b=J[a+104>>2];if(b){cj(b)}b=J[a+108>>2];if(b){cj(b)}b=J[a+112>>2];if(b){cj(b)}b=J[a+116>>2];if(b){cj(b)}b=J[a+120>>2];if(b){cj(b)}b=J[a+124>>2];if(b){cj(b)}b=J[a+128>>2];if(b){cj(b)}b=J[a+132>>2];if(b){cj(b)}b=J[a+136>>2];if(b){cj(b)}b=J[a+140>>2];if(b){cj(b)}WR(a)} +function gs(a,b){var c=0,d=0,e=0,f=0,g=0,h=0,i=0,j=0,k=0,l=0,m=0,n=0,o=0,p=0,q=0,r=0,s=0,t=0,u=0,v=0;k=Ui-256|0;Ui=k;m=J[a+36>>2];g=m;n=J[a+24>>2];c=n;o=J[a+32>>2];i=o;p=J[a+28>>2];f=p;q=J[a+8>>2];d=q;r=J[a+12>>2];e=r;s=J[a+16>>2];j=s;t=J[a+20>>2];u=t;while(1){l=j;j=e;e=d;v=f;f=c;a:{if(h>>>0<=15){c=(h<<2)+b|0;c=K[c+1|0]<<16|K[c|0]<<24|K[c+2|0]<<8|K[c+3|0];break a}c=(h<<2)+k|0;d=J[c-8>>2];d=((oxa(d,15)^oxa(d,13)^d>>>10)+J[c-28>>2]|0)+J[c+-64>>2]|0;c=J[c-60>>2];c=d+(oxa(c,25)^oxa(c,14)^c>>>3)|0}d=h<<2;J[d+k>>2]=c;g=(c+(J[d+174704>>2]+((oxa(f,26)^oxa(f,21)^oxa(f,7))+g|0)|0)|0)+((i^v)&f^i)|0;c=g+u|0;d=(g+(oxa(e,30)^oxa(e,19)^oxa(e,10))|0)+((e|j)&l|e&j)|0;g=i;i=v;u=l;h=h+1|0;if((h|0)!=64){continue}break}J[a+36>>2]=g+m;J[a+32>>2]=i+o;J[a+28>>2]=f+p;J[a+24>>2]=c+n;J[a+20>>2]=l+t;J[a+16>>2]=j+s;J[a+12>>2]=e+r;J[a+8>>2]=d+q;Ui=k+256|0;return 0}function Moa(a,b,c){a=a|0;b=b|0;c=c|0;var d=0;Dp(a,b);b=J[a>>2];c=J[a+4>>2];d=J[a+124>>2];J[a>>2]=J[a+120>>2];J[a+4>>2]=d;J[a+120>>2]=b;J[a+124>>2]=c;b=J[a+8>>2];c=J[a+12>>2];d=J[a+116>>2];J[a+8>>2]=J[a+112>>2];J[a+12>>2]=d;J[a+112>>2]=b;J[a+116>>2]=c;b=J[a+104>>2];c=J[a+108>>2];d=J[a+20>>2];J[a+104>>2]=J[a+16>>2];J[a+108>>2]=d;J[a+16>>2]=b;J[a+20>>2]=c;b=J[a+24>>2];J[a+24>>2]=J[a+96>>2];J[a+96>>2]=b;b=J[a+100>>2];J[a+100>>2]=J[a+28>>2];J[a+28>>2]=b;b=J[a+88>>2];J[a+88>>2]=J[a+32>>2];J[a+32>>2]=b;b=J[a+92>>2];J[a+92>>2]=J[a+36>>2];J[a+36>>2]=b;b=J[a+80>>2];J[a+80>>2]=J[a+40>>2];J[a+40>>2]=b;b=J[a+84>>2];J[a+84>>2]=J[a+44>>2];J[a+44>>2]=b;b=J[a+72>>2];J[a+72>>2]=J[a+48>>2];J[a+48>>2]=b;b=J[a+76>>2];J[a+76>>2]=J[a+52>>2];J[a+52>>2]=b;b=J[a+64>>2];J[a+64>>2]=J[a+56>>2];J[a+56>>2]=b;b=J[a+68>>2];J[a+68>>2]=J[a+60>>2];J[a+60>>2]=b;return 0}function Dca(a){a=a|0;var b=0,c=0,d=0,e=0;b=Ui-144|0;Ui=b;d=J[a+8>>2]-J[a+12>>2]>>4;c=Aj(a,1,0);J[b+116>>2]=0;J[b+120>>2]=0;J[b+108>>2]=0;J[b+112>>2]=0;J[b+88>>2]=0;J[b+92>>2]=0;J[b+80>>2]=0;J[b+84>>2]=0;a:{c=fQ(J[78398],c,b+80|0,b+96|0);b:{if(c){J[b>>2]=c;a=fj(a,139745,b);break b}c=bj(83428);J[b+64>>2]=0;J[b+68>>2]=0;H[b+60|0]=1;J[b+56>>2]=0;J[b+48>>2]=c;J[b+52>>2]=Yi;J[b+44>>2]=0;Nq(J[b+84>>2]-J[b+80>>2]|0,b+48|0,1,b+44|0);J[b+40>>2]=0;J[b+36>>2]=0;on(J[b+44>>2],b+40|0,b+36|0);c=J[b+80>>2];hj(J[b+40>>2],c,J[b+84>>2]-c|0);e=J[b+44>>2];c=b+8|0;I[c+16>>1]=65535;J[c+8>>2]=0;J[c+12>>2]=0;J[c+4>>2]=1;J[c>>2]=e;Gs(a,c);if((d+1|0)!=J[a+8>>2]-J[a+12>>2]>>4){break a}a=1}c:{if(H[b+92|0]&1){break c}c=J[b+80>>2];if(!c){break c}cj(c)}d:{if(H[b+120|0]&1){break d}c=J[b+108>>2];if(!c){break d}cj(c)}Ui=b+144|0;return a|0}Z(143334,39051,256,35311);B()}function D5(a){a=a|0;var b=0,c=0,d=0,e=0,f=0,g=0;d=Ui-80|0;Ui=d;b=J[a+8>>2]-J[a+12>>2]>>4;Bj(a);f=qj(a,-1,J[84364],139081);gj(a,-2);a:{b:{if((b|0)==J[a+8>>2]-J[a+12>>2]>>4){e=wj(a,1);c:{if(e<4294967296&e>=0){g=~~e>>>0;break c}g=0}c=g>>>0>14;e=wj(a,2);d:{if(e<4294967296&e>=0){b=~~e>>>0;break d}b=0}if(c|b>>>0>14){break b}c=d+40|0;J[c+16>>2]=b;J[c+20>>2]=0;J[c+8>>2]=g;J[c+12>>2]=0;J[c>>2]=9;b=J[f+4>>2];if((b|0)!=J[f+8>>2]){J[f+4>>2]=b+40;a=J[c+36>>2];J[b+32>>2]=J[c+32>>2];J[b+36>>2]=a;a=J[c+28>>2];J[b+24>>2]=J[c+24>>2];J[b+28>>2]=a;a=J[c+20>>2];J[b+16>>2]=J[c+16>>2];J[b+20>>2]=a;a=J[c+12>>2];J[b+8>>2]=J[c+8>>2];J[b+12>>2]=a;a=J[c+4>>2];J[b>>2]=J[c>>2];J[b+4>>2]=a;a=0;break a}J[d>>2]=(b-J[f>>2]|0)/40;a=fj(a,132935,d);break a}Z(143244,37616,478,51340);B()}J[d+24>>2]=b;J[d+20>>2]=g;J[d+16>>2]=35504;a=fj(a,142694,d+16|0)}Ui=d+80|0;return a|0}function d3(a){a=a|0;var b=0,c=0,d=Q(0),e=Q(0),f=Q(0),g=Q(0),h=0,i=Q(0),j=Q(0),k=Q(0),l=Q(0);b=Ui-96|0;Ui=b;c=qj(a,1,J[215722],0);e=N[c+8>>2];f=N[c>>2];g=N[c+4>>2];a:{if(!(f!=f|g!=g|e!=e)){d=N[c+12>>2];if(d==d){break a}}d=N[c+12>>2];O[b+72>>3]=e;O[b- -64>>3]=g;O[b+80>>3]=d;O[b+56>>3]=f;J[b+48>>2]=1;fj(a,138526,b+48|0)}h=qj(a,2,J[215722],0);e=N[h+8>>2];f=N[h>>2];g=N[h+4>>2];b:{if(!(f!=f|g!=g|e!=e)){d=N[h+12>>2];if(d==d){break b}}d=N[h+12>>2];O[b+24>>3]=e;O[b+16>>3]=g;O[b+32>>3]=d;O[b+8>>3]=f;J[b>>2]=2;fj(a,138526,b);g=N[h+4>>2];e=N[h+8>>2];d=N[h+12>>2];f=N[h>>2]}i=N[c>>2];j=N[c+12>>2];k=N[c+4>>2];l=N[c+8>>2];c=Sj(a,16);N[c+12>>2]=Q(Q(Q(j*d)-Q(i*f))-Q(k*g))-Q(l*e);N[c+8>>2]=Q(Q(i*g)+Q(Q(j*e)+Q(d*l)))-Q(k*f);N[c+4>>2]=Q(Q(l*f)+Q(Q(j*g)+Q(d*k)))-Q(i*e);N[c>>2]=Q(Q(k*e)+Q(Q(j*f)+Q(i*d)))-Q(l*g);rj(a,-1e4,16786);Mj(a,-2);Ui=b+96|0;return 1}function hn(a){var b=0,c=0,d=0;if(a){c=a;while(1){b=c+204|0;if(b){d=J[b>>2];if(d){Zi[J[d+40>>2]](J[b+4>>2])}Zi[J[66509]](b,0,8)|0}cj(J[c+336>>2]);b=J[c+104>>2];if(b){while(1){d=J[b+24>>2];Zi[J[66509]](b,0,32)|0;cj(b);b=d;if(b){continue}break}}b=J[c+136>>2];if(b){while(1){d=J[b+24>>2];Zi[J[66509]](b,0,32)|0;cj(b);b=d;if(b){continue}break}}b=J[c+308>>2];if(b){while(1){d=J[b+12>>2];Zi[J[66509]](b,0,16)|0;cj(b);b=d;if(b){continue}break}}b=J[c+260>>2];if(b){while(1){d=J[b+12>>2];Zi[J[66509]](b,0,16)|0;cj(b);b=d;if(b){continue}break}}b=J[c+276>>2];if(b){while(1){d=J[b+12>>2];Zi[J[66509]](b,0,16)|0;cj(b);b=d;if(b){continue}break}}b=J[c+12>>2];if(!(!b|!J[c>>2])){Zi[J[66509]](b,0,J[c+8>>2])|0;cj(J[c+12>>2])}c=J[c+340>>2];if(c){continue}break}b=a;while(1){c=J[b+340>>2];Zi[J[66509]](b,0,344)|0;if((a|0)!=(b|0)){cj(b)}b=c;if(b){continue}break}}}function cca(a,b,c,d,e,f,g){a=a|0;b=b|0;c=c|0;d=d|0;e=e|0;f=f|0;g=g|0;var h=0,i=0;h=Ui-32|0;Ui=h;J[h+28>>2]=0;J[79336]=J[79336]+1;J[h+16>>2]=1;J[h+20>>2]=0;J[h+8>>2]=1;J[h+12>>2]=0;a:{b:{c:{d:{if(a){if(!f){break d}pP(a);f=J[f>>2];i=J[a+108>>2];if(f>>>0>=J[a+112>>2]-i>>2>>>0){break c}ba(34963,J[(f<<2)+i>>2]);if(K[J[79491]+220|0]&2){f=_()|0;if(f){break b}}e=J[(e<<2)+160992>>2];b=J[(b<<2)+161044>>2];e:{if(K[a+221|0]&16){Jc(b|0,d|0,e|0,c|0,(g>>>0<=1?1:g)|0);if(!(K[J[79491]+220|0]&2)){break e}a=_()|0;if(!a){break e}Cj(a,18360,2056);Z(114101,40535,2056,18360);B()}Kc(b|0,d|0,e|0,c|0);if(!(K[J[79491]+220|0]&2)){break e}a=_()|0;if(a){break a}}Ui=h+32|0;return}Z(9197,40535,2042,18360);B()}Z(34859,40535,2043,18360);B()}Z(145396,53895,487,84789);B()}Cj(f,18360,2050);Z(114101,40535,2050,18360);B()}Cj(a,18360,2061);Z(114101,40535,2061,18360);B()}function OG(a,b,c,d,e){var f=0,g=0,h=0,i=0,j=0,k=0;g=Ui-16|0;Ui=g;J[g+12>>2]=0;J[g+8>>2]=0;a:{b:{if(a){j=-16512;b=a-3|0;if(b>>>0<=5){b=J[(b<<2)+266328>>2]}else{b=0}if(!b){break a}f=a-3|0;if(f>>>0<=5){f=f<<2;J[g+8>>2]=J[f+267292>>2];J[g+12>>2]=J[J[f+267316>>2]+4>>2];f=0}else{f=-46}if(f){break a}b=(b?J[b+8>>2]:0)&255;h=J[g+12>>2];if((b+h|0)+8>>>0>127){break a}i=b+10|0;f=i+h|0;if(f>>>0>>0){break a}if(d>>>0>=f>>>0){break b}break a}j=-16512;f=b;if(b>>>0>d>>>0){break a}}i=d-f|0;if(i>>>0<11){break a}H[e|0]=0;H[e+1|0]=1;j=0;f=i-3|0;k=ij(e+2|0,255,f);f=k+f|0;H[f|0]=0;if(!a){hj(f+1|0,c,b);break a}H[f+1|0]=48;H[f+2|0]=(b+h|0)+8;a=i+k|0;H[a+3|0]=h;H[a+2|0]=6;H[a+1|0]=h+4;H[a|0]=48;a=hj(a+4|0,J[g+8>>2],h)+h|0;H[a+3|0]=b;H[a+2|0]=4;H[a|0]=5;H[a+1|0]=0;if((hj(a+4|0,c,b)+b|0)==(d+e|0)){break a}Zi[J[66509]](e,0,d)|0;j=-16512}Ui=g+16|0;return j}function K2(a){a=a|0;var b=0,c=0,d=0,e=0;b=Ui-272|0;Ui=b;d=J[a+8>>2]-J[a+12>>2]>>4;c=b+8|0;ij(c,0,264);hx(c);a:{if((d|0)<=0){break a}Oj(a,1,5);uj(a,1);rj(a,-1,63723);if(kj(a,-1)){ck(a,-1);gj(a,-2);gj(a,-2);break a}gj(a,-2);gj(a,-2)}Fj(a,0,0);mj(a,49916,12);xj(a,b+8|0);Xj(a,-3);mj(a,33836,12);xj(a,b+40|0);Xj(a,-3);mj(a,65937,11);xj(a,b+72|0);Xj(a,-3);mj(a,47324,14);xj(a,b+104|0);Xj(a,-3);mj(a,47339,11);xj(a,b+136|0);Xj(a,-3);mj(a,68359,8);xj(a,b+168|0);Xj(a,-3);mj(a,68352,15);xj(a,b+176|0);Xj(a,-3);mj(a,2868,9);xj(a,b+192|0);Xj(a,-3);mj(a,14882,10);c=J[b+200>>2];e=J[a+8>>2];J[e+8>>2]=3;O[e>>3]=c|0;J[a+8>>2]=J[a+8>>2]+16;Xj(a,-3);mj(a,13956,12);xj(a,b+204|0);Xj(a,-3);mj(a,13945,10);c=J[b+268>>2];xj(a,c?c:158859);Xj(a,-3);if((d+1|0)==J[a+8>>2]-J[a+12>>2]>>4){a=J[b+268>>2];if(a){cj(a)}Ui=b+272|0;return 1}Z(143334,39097,789,44345);B()}function nN(a,b,c,d){var e=0,f=0,g=0,h=0;a:{b:{c:{d:{h=J[a+16>>2];g=J[a+8>>2];if(J[a+24>>2]!=((h-g|0)/24|0)){e=J[a+4>>2];e:{if(!e){break e}f=J[J[a>>2]+(mxa(b,c,e)<<2)>>2];if((f|0)==-1){break e}while(1){e=g+P(f,24)|0;if(J[e>>2]==(b|0)&(c|0)==J[e+4>>2]){break d}f=J[e+16>>2];if((f|0)!=-1){continue}break}}e=J[a+12>>2];f:{if((h|0)!=(e|0)){J[a+12>>2]=e+24;break f}e=J[a+20>>2];if((e|0)==-1){break c}e=g+P(e,24)|0;J[a+20>>2]=J[e+16>>2]}J[e>>2]=b;J[e+4>>2]=c;f=J[d+4>>2];d=J[d>>2];J[e+16>>2]=-1;J[e+8>>2]=d;J[e+12>>2]=f;d=J[a+8>>2];b=J[a>>2]+(mxa(b,c,J[a+4>>2])<<2)|0;f=J[b>>2];if((f|0)==-1){break b}while(1){b=d+P(f,24)|0;f=J[b+16>>2];if((f|0)!=-1){continue}break}J[b+16>>2]=(e-d|0)/24;break a}Z(144851,55629,229,9606);B()}a=J[d+4>>2];J[e+8>>2]=J[d>>2];J[e+12>>2]=a;return}Z(152203,55629,537,2838);B()}J[b>>2]=(e-d|0)/24}J[a+24>>2]=J[a+24>>2]+1}function ct(a,b,c,d){var e=0,f=0,g=0,h=0,i=0;h=Ui-16|0;Ui=h;e=J[a+64>>2];J[h+12>>2]=e;J[h+8>>2]=(J[a+68>>2]-e|0)/56;e=J[h+8>>2];J[c+324>>2]=e>>>0>=8?8:e;J[c+320>>2]=b?L[b+202>>1]:0;if(J[c+324>>2]){while(1){e=J[h+12>>2]+P(g,56)|0;f=J[e+12>>2];b=P(g,40)+c|0;J[b>>2]=J[e+8>>2];J[b+4>>2]=f;J[b+8>>2]=J[e+16>>2];J[b+12>>2]=J[e+28>>2];f=J[e+32>>2];J[b+24>>2]=f;i=J[e+40>>2];J[b+16>>2]=i;H[b+36|0]=K[e+24|0];e=J[e+36>>2];J[b+32>>2]=i;J[b+20>>2]=e;if(!f){J[b+24>>2]=d}a:{b:{e=J[a+80>>2];if((J[a+84>>2]-e|0)/40>>>0>g>>>0){f=J[a+64>>2];if((J[a+68>>2]-f|0)/56>>>0<=g>>>0){break b}f=f+P(g,56)|0;J[h+4>>2]=P(Gq(lp(J[f+28>>2])),J[f+20>>2]);e=L[(e+P(g,40)|0)+36>>1];f=J[a+96>>2];if(e>>>0>=J[a+100>>2]-f>>>0){break b}J[b+28>>2]=e+f;break a}Z(145083,40773,471,21660);B()}Z(145396,53895,487,84789);B()}g=g+1|0;if(g>>>0>2]){continue}break}}Ui=h+16|0}function _u(a,b,c,d){var e=0,f=0,g=0,h=0,i=0,j=0;a:{b:{c:{d:{h=J[a+24>>2];j=J[a+16>>2];g=J[a+8>>2];if((h|0)!=((j-g|0)/24|0)){i=J[a+4>>2];e:{if(!i){break e}f=J[J[a>>2]+(mxa(b,c,i)<<2)>>2];if((f|0)==-1){break e}while(1){e=P(f,24)+g|0;if(J[e>>2]==(b|0)&(c|0)==J[e+4>>2]){break d}f=J[e+16>>2];if((f|0)!=-1){continue}break}}e=J[a+12>>2];f:{if((j|0)!=(e|0)){J[a+12>>2]=e+24;break f}e=J[a+20>>2];if((e|0)==-1){break c}e=P(e,24)+g|0;J[a+20>>2]=J[e+16>>2]}J[e>>2]=b;J[e+4>>2]=c;f=J[d+4>>2];d=J[d>>2];J[e+16>>2]=-1;J[e+8>>2]=d;J[e+12>>2]=f;b=J[a>>2]+(mxa(b,c,i)<<2)|0;f=J[b>>2];if((f|0)==-1){break b}while(1){b=P(f,24)+g|0;f=J[b+16>>2];if((f|0)!=-1){continue}break}J[b+16>>2]=(e-g|0)/24;break a}Z(144851,55629,229,9606);B()}a=J[d+4>>2];J[e+8>>2]=J[d>>2];J[e+12>>2]=a;return}Z(152203,55629,537,2838);B()}J[b>>2]=(e-g|0)/24;h=J[a+24>>2]}J[a+24>>2]=h+1}function jna(a){a=a|0;var b=0,c=0,d=0,e=0,f=0,g=0,h=0,i=0;b=Ui-16|0;Ui=b;g=-13;if(!dk(J[a+20>>2],J[a+24>>2],J[55210],b+12|0,0)){h=J[a+4>>2];c=J[J[a+36>>2]+8>>2];d=J[c>>2];i=(K[d+3272|0]&16)>>>4|0;if(i){sv(c)}JR(d);J[b+8>>2]=0;a:{b:{g=PR(J[a>>2],h,J[b+12>>2],J[a+16>>2],b+8|0);if(!g){e=J[b+8>>2];f=J[e>>2];J[c>>2]=f;J[d+8>>2]=e;J[e>>2]=d;J[f+8>>2]=c;if(i){if(!pv(c)){break b}d=J[e>>2]}lt(d);J[J[a+36>>2]+12>>2]=0;d=J[a+36>>2];a=J[c>>2];J[d+16>>2]=((((((L[a+1056>>1]<<1)+J[a+3136>>2]|0)+J[a+3184>>2]-(J[a+3128>>2]+J[a+3176>>2])|0)+P(J[a+3160>>2]-J[a+3152>>2]>>4,12)|0)+J[a+1044>>2]|0)-J[a+1036>>2]|0)+3284;break a}fE(d,J[J[b+12>>2]>>2],J[a>>2],h,c);break a}J[b>>2]=J[J[b+12>>2]>>2];dj(3,88293,28846,b);sv(c);J[c>>2]=d;J[d+8>>2]=c;J[e>>2]=f;J[f+8>>2]=e;lt(f);fE(d,J[J[b+12>>2]>>2],J[a>>2],h,c);pv(c);g=-21}Uj(J[b+12>>2])}Ui=b+16|0;return g|0}function CK(a,b,c){var d=0,e=0,f=0,g=0,h=0,i=0,j=0;f=Ui-16|0;Ui=f;d=J[b+12>>2];d=d<<24|(d&65280)<<8|(d>>>8&65280|d>>>24);h=d&2;j=d&1;d=J[b+4>>2];g=d<<24|(d&65280)<<8|(d>>>8&65280|d>>>24);d=J[b>>2];d=d<<24|(d&65280)<<8|(d>>>8&65280|d>>>24);b=J[b+8>>2];b=b<<24|(b&65280)<<8|(b>>>8&65280|b>>>24);a:{b:{c:{d:{e:{f:{g:{e=J[a+8>>2];if(!K[e+1044|0]){a=0;i=J[e+1032>>2];um(i,d,0);if(!h){e=-2;b=g;d=c;if((b|0)!=(Sl(d,1,b,i)|0)){break a}break g}d=nj(b);if((Sl(d,1,b,i)|0)==(b|0)){a=d;break g}cj(d);e=-2;break a}d=d+J[e+1036>>2]|0;if(!h){a=0;b=g;d=hj(c,d,b);break g}if(j){a=nj(b);d=hj(a,d,b);break f}if(FC(d,b,c,g,f+12|0)){break d}a=0;break c}if(!j){break e}}if(!(Zi[J[55864]](d,b)|0)){break e}e=-1e3;if(a){break b}break a}if(!h){break c}if(!FC(d,b,c,g,f+12|0)){break c}if(!a){break d}cj(a)}e=-4;break a}e=0;if(!a){break a}}cj(a)}Ui=f+16|0;return e}function Wva(a,b){a=a|0;b=b|0;var c=0,d=Q(0),e=Q(0),f=Q(0),g=0,h=Q(0),i=Q(0),j=Q(0),k=Q(0),l=Q(0),m=Q(0),n=Q(0),o=Q(0),p=Q(0),q=Q(0),r=Q(0),s=Q(0),t=Q(0),u=Q(0);f=N[a+100>>2];l=N[a+116>>2];c=J[b+28>>2];g=c+P(J[a+112>>2],12)|0;m=N[g>>2];h=N[g+8>>2];n=N[a+136>>2];c=c+P(J[a+108>>2],12)|0;o=N[c>>2];i=N[c+8>>2];p=N[a+128>>2];e=N[a+120>>2];q=N[g+4>>2];r=N[a+132>>2];d=N[c+4>>2];s=N[a+124>>2];j=Q(Q(Q(f*N[a+96>>2])+Q(N[a+76>>2]+Q(Q(l*Q(Q(m-Q(h*n))-Q(o-Q(i*p))))+Q(e*Q(Q(q+Q(h*r))-Q(d+Q(i*s)))))))*Q(-N[a+172>>2]));N[a+100>>2]=f+j;u=N[a+168>>2];t=N[a+160>>2];f=N[a+164>>2];k=d;d=N[a+156>>2];e=Q(e*j);N[c+4>>2]=k-Q(d*e);k=d;d=Q(l*j);N[c>>2]=o-Q(k*d);c=J[b+28>>2];N[(c+P(J[a+108>>2],12)|0)+8>>2]=i-Q(f*Q(Q(s*e)-Q(p*d)));c=c+P(J[a+112>>2],12)|0;N[c+4>>2]=q+Q(e*t);N[c>>2]=m+Q(d*t);N[(J[b+28>>2]+P(J[a+112>>2],12)|0)+8>>2]=h+Q(u*Q(Q(r*e)-Q(n*d)))}function Vga(a){a=a|0;var b=0,c=0,d=0,e=0;b=Ui-352|0;Ui=b;d=J[a+8>>2]-J[a+12>>2]>>4;e=Aj(a,1,0);J[b+92>>2]=0;J[b+88>>2]=0;a:{b:{c=Bx(J[78228],e,b+92|0,b+88|0);c:{if(c){if((d|0)!=J[a+8>>2]-J[a+12>>2]>>4){break b}d=bj(e);e=Yi;J[b+32>>2]=tj(d,e);J[b+24>>2]=d;J[b+28>>2]=e;J[b+16>>2]=c;d=b+96|0;Gj(d,256,(c|0)==-3?31635:(c|0)==-15?31570:31677,b+16|0);J[b>>2]=d;a=fj(a,31902,b);break c}c=bj(83428);J[b+112>>2]=0;J[b+116>>2]=0;H[b+108|0]=1;J[b+104>>2]=0;J[b+96>>2]=c;J[b+100>>2]=Yi;J[b+84>>2]=0;Nq(J[b+88>>2],b+96|0,1,b+84|0);J[b+80>>2]=0;J[b+76>>2]=0;on(J[b+84>>2],b+80|0,b+76|0);hj(J[b+80>>2],J[b+92>>2],J[b+88>>2]);e=J[b+84>>2];c=b+48|0;I[c+16>>1]=65535;J[c+8>>2]=0;J[c+12>>2]=0;J[c+4>>2]=1;J[c>>2]=e;Gs(a,c);if((d+1|0)!=J[a+8>>2]-J[a+12>>2]>>4){break a}a=1}Ui=b+352|0;return a|0}Z(143244,42133,433,76331);B()}Z(143334,42133,452,76331);B()}function JR(a){var b=0,c=0,d=0,e=0,f=0;f=J[a+4>>2];Tj(J[f+29080>>2]);a:{b:{d=J[f+29084>>2];b=J[f+29088>>2];c:{if((d|0)==(b|0)){break c}c=b-d>>2;e=c>>>0<=1?1:c;b=0;while(1){if(J[(b<<2)+d>>2]==(a|0)){e=c-1|0;if(e>>>0>b>>>0){while(1){e=c;c=b+1|0;if(e>>>0<=c>>>0){break a}J[(b<<2)+d>>2]=J[(c<<2)+d>>2];b=c;d=J[f+29084>>2];c=J[f+29088>>2]-d>>2;e=c-1|0;if(b>>>0>>0){continue}break}}if(J[f+29092>>2]-d>>2>>>0>>0){break b}J[f+29088>>2]=(e<<2)+d;break c}b=b+1|0;if((e|0)!=(b|0)){continue}break}}Lj(J[f+29080>>2]);Np(J[a>>2],81,a);b=J[a+3216>>2];c=J[a+3220>>2];if(b|c){HM(b,c);Eo(J[a+3216>>2],J[a+3220>>2]);J[a+3216>>2]=0;J[a+3220>>2]=0}b=J[a+3224>>2];c=J[a+3228>>2];if(b|c){HM(b,c);Eo(J[a+3224>>2],J[a+3228>>2]);J[a+3224>>2]=0;J[a+3228>>2]=0}J[J[a+8>>2]>>2]=0;J[a+8>>2]=0;return}Z(144782,53895,514,59583);B()}Z(145396,53895,487,84789);B()}function Y3(a){a=a|0;var b=0,c=0,d=0,e=0,f=0,g=0;e=Ui-16|0;Ui=e;if(!(J[a+8>>2]-J[a+12>>2]>>4)){fj(a,115558,0)}b=Aj(a,1,e+12|0);g=J[a+8>>2]-J[a+12>>2]>>4;d=J[e+12>>2];c=Ui-1424|0;Ui=c;f=c- -64|0;KI(a,f,0);J[c+60>>2]=0;J[c+44>>2]=b+d;J[c+40>>2]=b;J[c+48>>2]=b;J[c+56>>2]=f;if(!(d>>>0<2|(K[b+1|0]?K[b|0]:0))){fj(a,109483,0)}a:{b:{b=sj(28);if(b){J[b+20>>2]=0;J[b+24>>2]=0;J[b+8>>2]=0;J[b+12>>2]=-2;d=(d|0)<=0?1023:d+1|0;J[b+4>>2]=d;d=sj(d);J[b>>2]=d;if(!d){break b}H[d|0]=0;J[b+16>>2]=1;break a}Av(3003);B()}Av(3003);B()}J[c+52>>2]=b;b=c+40|0;d=c+16|0;bp(b,d);ZA(a,b,d);bp(b,d);b=J[c+16>>2];if((b|0)!=10){gn(J[c+52>>2]);b=J[((b|0)==12?c+24|0:(b<<2)+256080|0)>>2];J[c>>2]=71441;J[c+4>>2]=b;J[c+8>>2]=J[c+20>>2]+1;fj(a,77804,c)}gn(J[c+52>>2]);Ui=c+1424|0;if((g+1|0)!=J[a+8>>2]-J[a+12>>2]>>4){Z(143334,40292,56,83052);B()}Ui=e+16|0;return 1}function Wfa(a){a=a|0;var b=0,c=0,d=0,e=0,f=0,g=0;c=Ui-128|0;Ui=c;J[c+124>>2]=0;f=J[J[a+4>>2]+120>>2];b=J[a>>2];N[c>>2]=N[b>>2];N[c+4>>2]=N[b+4>>2];N[c+8>>2]=N[b+8>>2];N[c+12>>2]=N[b+12>>2];N[c+16>>2]=N[b+16>>2];N[c+20>>2]=N[b+20>>2];N[c+24>>2]=N[b+24>>2];N[c+28>>2]=N[b+28>>2];N[c+32>>2]=N[b+32>>2];N[c+36>>2]=N[b+36>>2];N[c+40>>2]=N[b+40>>2];N[c+44>>2]=N[b+44>>2];N[c+48>>2]=N[b+48>>2];N[c+52>>2]=N[b+52>>2];N[c+56>>2]=N[b+56>>2];N[c+60>>2]=N[b+60>>2];N[c+64>>2]=N[b+64>>2];N[c+68>>2]=N[b+68>>2];N[c+72>>2]=N[b+72>>2];N[c+76>>2]=N[b+76>>2];N[c+80>>2]=N[b+80>>2];N[c+84>>2]=N[b+84>>2];N[c+88>>2]=N[b+88>>2];N[c+92>>2]=N[b+92>>2];J[c+96>>2]=J[b+96>>2];e=J[a+12>>2];if(e){b=0;while(1){d=J[a+8>>2]+P(b,48)|0;g=RM(c,d,N[(J[d+16>>2]<<2)+f>>2]);J[d+36>>2]=J[d+36>>2]&-16385|(g?16384:0);b=b+1|0;if((e|0)!=(b|0)){continue}break}}Ui=c+128|0}function AD(a,b,c,d,e){var f=0,g=0,h=0,i=0,j=0,k=0,l=0;i=Ui-16|0;Ui=i;j=-4;a:{if(J[b>>2]!=1){break a}j=-8;k=J[b+8>>2];l=J[b+12>>2];b=-10;f=J[a>>2];g=J[f+4>>2];b:{if(!g){break b}h=J[J[f>>2]+(mxa(k,l,g)<<2)>>2];if((h|0)==-1){break b}g=J[f+8>>2];while(1){f=P(h,56)+g|0;if(J[f>>2]!=(k|0)|J[f+4>>2]!=(l|0)){h=J[f+48>>2];if((h|0)!=-1){continue}break b}break}c:{if(!d){break c}b=J[f+28>>2];k=J[b>>2];h=J[b+4>>2];b=0;while(1){g=(b<<3)+c|0;if(J[g>>2]==(k|0)&J[g+4>>2]==(h|0)){break c}b=b+1|0;if((d|0)!=(b|0)){continue}break}b=-18;break b}J[i+12>>2]=f+8;b=0}b=b+18|0;if(!b){break a}if((b|0)==18){j=0;d=J[i+12>>2];c=J[d+8>>2];if((c|0)==J[e>>2]){break a}d:{e:{if(d){b=J[d+28>>2];if(!b){break e}J[d+28>>2]=b+1;break d}Z(70819,42212,1440,57830);B()}Z(111964,42212,1441,57830);B()}b=J[e>>2];if(b){vj(a,b)}J[e>>2]=c;break a}j=-10}Ui=i+16|0;return j}function Tda(a){a=a|0;var b=0,c=0,d=0,e=0,f=0;b=Ui-32|0;Ui=b;J[b+24>>2]=0;J[b+28>>2]=0;J[b+16>>2]=0;J[b+20>>2]=0;J[b+8>>2]=0;J[b+12>>2]=0;c=-13;d=b+8|0;a:{if(dk(J[a+20>>2],J[a+24>>2],J[58870],d,0)){break a}c=_Q(J[a>>2],d);if(!c){e=J[a>>2];c=J[J[a+36>>2]+8>>2];a=J[c>>2];if(a){Uj(a)}a=J[c+4>>2];if(a){vj(e,a)}d=J[c+20>>2];if(d){a=0;while(1){f=J[(J[c+16>>2]+(a<<4)|0)+8>>2];if(f){vj(e,f);d=J[c+20>>2]}a=a+1|0;if(d>>>0>a>>>0){continue}break}}cj(J[c+16>>2]);a=J[b+28>>2];J[c+16>>2]=J[b+24>>2];J[c+20>>2]=a;a=J[b+20>>2];J[c+8>>2]=J[b+16>>2];J[c+12>>2]=a;a=J[b+12>>2];J[c>>2]=J[b+8>>2];J[c+4>>2]=a;c=0;break a}e=J[a>>2];a=J[b+8>>2];if(a){Uj(a)}a=J[b+12>>2];if(a){vj(e,a)}d=J[b+28>>2];if(d){a=0;while(1){f=J[(J[b+24>>2]+(a<<4)|0)+8>>2];if(f){vj(e,f);d=J[b+28>>2]}a=a+1|0;if(d>>>0>a>>>0){continue}break}}cj(J[b+24>>2])}Ui=b+32|0;return c|0}function xz(a,b,c,d){var e=0,f=0;f=J[a+5820>>2];a:{if((f|0)>=14){e=L[a+5816>>1]|d<>1]=e;f=J[a+20>>2];J[a+20>>2]=f+1;H[f+J[a+8>>2]|0]=e;e=J[a+20>>2];J[a+20>>2]=e+1;H[e+J[a+8>>2]|0]=K[a+5817|0];e=d&65535;d=J[a+5820>>2];e=e>>>16-d|0;I[a+5816>>1]=e;d=d-13|0;break a}e=L[a+5816>>1]|d<>1]=e;d=f+3|0}J[a+5820>>2]=d;b:{c:{if((d|0)>=9){d=J[a+20>>2];J[a+20>>2]=d+1;H[d+J[a+8>>2]|0]=e;e=K[a+5817|0];break c}if((d|0)<=0){break b}}d=J[a+20>>2];J[a+20>>2]=d+1;H[d+J[a+8>>2]|0]=e;d=J[a+5820>>2]}J[a+5820>>2]=0;I[a+5816>>1]=0;e=J[a+20>>2];J[a+20>>2]=e+1;J[a+5824>>2]=(d-1&7)+1;H[e+J[a+8>>2]|0]=c;d=J[a+20>>2];J[a+20>>2]=d+1;H[d+J[a+8>>2]|0]=c>>>8;d=J[a+20>>2];J[a+20>>2]=d+1;e=d+J[a+8>>2]|0;d=c^65535;H[e|0]=d;e=J[a+20>>2];J[a+20>>2]=e+1;H[e+J[a+8>>2]|0]=d>>>8;if(c){hj(J[a+8>>2]+J[a+20>>2]|0,b,c)}J[a+20>>2]=J[a+20>>2]+c}function ula(a){a=a|0;var b=0,c=0,d=0,e=0,f=0,g=0,h=0,i=0;b=Ui-224|0;Ui=b;h=pj(b+204|0,a,1,39971,739);d=Mp(a,1,0);rE(d,b+200|0);J[b+196>>2]=0;a:{if(Mq(d,b+196|0)){J[b+32>>2]=34859;ik(a,139505,b+32|0);break a}f=J[b+200>>2]<<7|64;e=b-f|0;Ui=e;H[e|0]=0;J[b+60>>2]=0;Fr(d,b+60|0);J[b+16>>2]=34859;J[b+28>>2]=d;J[b+20>>2]=J[b+196>>2];J[b+24>>2]=J[b+60>>2];c=b- -64|0;Gj(c,128,154313,b+16|0);zl(e,c,f);if(J[b+200>>2]){while(1){J[b+48>>2]=0;J[b+52>>2]=0;qE(d,g,b+48|0);J[b+40>>2]=0;nt(d,J[b+48>>2],J[b+52>>2],b+44|0,b+40|0);i=J[b+200>>2];c=J[b+44>>2];if(c>>>0>8){c=64412}else{c=J[(c<<2)+266e3>>2]}J[b>>2]=tj(J[b+48>>2],J[b+52>>2]);J[b+4>>2]=c;J[b+8>>2]=J[b+40>>2];J[b+12>>2]=i-1>>>0>g>>>0?154360:158859;c=b- -64|0;Gj(c,128,25939,b);zl(e,c,f);g=g+1|0;if(g>>>0>2]){continue}break}}zl(e,145791,f);xj(a,e)}oj(h);Ui=b+224|0;return 1}function bu(a,b){var c=0,d=0,e=0;c=a+24|0;d=J[a>>2]&63;e=c+d|0;H[e|0]=128;e=e+1|0;a:{if(d>>>0<=55){ij(e,0,55-d|0);break a}ij(e,0,d^63);is(a,c);J[c+48>>2]=0;J[c+52>>2]=0;J[c+40>>2]=0;J[c+44>>2]=0;J[c+32>>2]=0;J[c+36>>2]=0;J[c+24>>2]=0;J[c+28>>2]=0;J[c+16>>2]=0;J[c+20>>2]=0;J[c+8>>2]=0;J[c+12>>2]=0;J[c>>2]=0;J[c+4>>2]=0}e=J[a+4>>2];H[a+87|0]=e>>>21;H[a+86|0]=e>>>13;H[a+85|0]=e>>>5;d=J[a>>2];H[a+83|0]=d>>>21;H[a+82|0]=d>>>13;H[a+81|0]=d>>>5;H[a+80|0]=d<<3;H[a+84|0]=e<<3|d>>>29;is(a,c);H[b|0]=J[a+8>>2];H[b+1|0]=J[a+8>>2]>>>8;H[b+2|0]=L[a+10>>1];H[b+3|0]=K[a+11|0];H[b+4|0]=J[a+12>>2];H[b+5|0]=J[a+12>>2]>>>8;H[b+6|0]=L[a+14>>1];H[b+7|0]=K[a+15|0];H[b+8|0]=J[a+16>>2];H[b+9|0]=J[a+16>>2]>>>8;H[b+10|0]=L[a+18>>1];H[b+11|0]=K[a+19|0];H[b+12|0]=J[a+20>>2];H[b+13|0]=J[a+20>>2]>>>8;H[b+14|0]=L[a+22>>1];H[b+15|0]=K[a+23|0];return 0}function PI(a){var b=0,c=0,d=0,e=0,f=0,g=0;c=J[a+44>>2];d=J[a+1392>>2];a:{b:{if((d|0)==-1){b=1}else{e=J[a+1128>>2];c:{if((e|0)<=(d|0)){b=d;break c}f=a+1132|0;b=d;while(1){g=K[b+f|0];c=g+c|0;if((g|0)!=255){break c}b=b+1|0;if((e|0)!=(b|0)){continue}break}b=e}f=1;if(M[a+52>>2]>>0){break b}b=(b|0)==-1|(b|0)==(e|0)}d=(d|0)!=-1;while(1){e=1;if(!(b&1)){break a}f=1;e=J[a+52>>2];if(e>>>0<=c+26>>>0){break b}f=21;if(K[c+4|0]|J[72045]!=(K[c|0]|K[c+1|0]<<8|(K[c+2|0]<<16|K[c+3|0]<<24))){break b}d:{if(!d){if(!J[a+1004>>2]|!(H[c+5|0]&1)){break d}break b}if(!(H[c+5|0]&1)){break b}}f=1;g=c+27|0;d=K[c+26|0];c=g+d|0;if(e>>>0>>0){break b}b=0;e:{if(!d){break e}while(1){f=K[b+g|0];c=f+c|0;if((f|0)!=255){break e}b=b+1|0;if((d|0)!=(b|0)){continue}break}b=d}b=(b|0)==(d|0);d=1;if(c>>>0<=e>>>0){continue}break}f=1}J[a+112>>2]=f;e=0}return e}function P$(a){a=a|0;var b=0,c=0,d=0,e=0;b=Ui-304|0;Ui=b;d=1;c=Aj(a,1,0);J[b+300>>2]=0;J[b+272>>2]=0;J[b+276>>2]=0;J[b+288>>2]=0;J[b+292>>2]=0;J[b+280>>2]=0;J[b+284>>2]=0;J[b+272>>2]=1;J[b+264>>2]=0;J[b+268>>2]=0;c=pa(c|0,0,b+264|0,b+300|0)|0;a:{if(c){d=J[a+8>>2];J[d+8>>2]=0;J[a+8>>2]=d+16;xj(a,Mt(c));a=2;break a}Fj(a,0,0);c=J[b+300>>2];if(c){while(1){b:{c:{d:{e=ka(J[c+20>>2],J[c+16>>2],b|0,255,0,0,1)|0;if(!e){e=J[a+8>>2];J[e+8>>2]=3;O[e>>3]=d>>>0;J[a+8>>2]=J[a+8>>2]+16;Fj(a,0,0);e:{switch(J[c+4>>2]-2|0){case 0:break d;case 8:break e;default:break b}}mj(a,3522,6);mj(a,103511,5);break c}c=J[a+8>>2];J[c+8>>2]=0;J[a+8>>2]=c+16;xj(a,Mt(e));a=2;break a}mj(a,3522,6);mj(a,15405,4)}Kj(a,-3)}mj(a,36105,4);xj(a,b);Kj(a,-3);Kj(a,-3);d=d+1|0;c=J[c+28>>2];if(c){continue}break}a=J[b+300>>2]}else{a=0}Ip(a);a=1}Ui=b+304|0;return a|0}function w3(a){a=a|0;var b=0,c=0,d=Q(0),e=Q(0),f=Q(0),g=Q(0),h=Q(0),i=Q(0),j=Q(0),k=Q(0),l=Q(0),m=Q(0),n=Q(0),o=Q(0),p=Q(0),q=Q(0),r=Q(0),s=Q(0);c=Ui-16|0;Ui=c;a:{b:{c:{if(!(J[a+8>>2]-J[a+12>>2]>>4)){d=Q(1);e=Q(1);f=Q(1);g=Q(1);break c}if(J[a+8>>2]-J[a+12>>2]>>4!=1){break b}b=an(a,-1);f=N[b+60>>2];h=N[b+56>>2];i=N[b+52>>2];j=N[b+48>>2];k=N[b+44>>2];e=N[b+40>>2];l=N[b+36>>2];m=N[b+32>>2];n=N[b+28>>2];o=N[b+24>>2];d=N[b+20>>2];p=N[b+16>>2];q=N[b+12>>2];r=N[b+8>>2];s=N[b+4>>2];g=N[b>>2]}b=Sj(a,64);N[b+60>>2]=f;N[b+56>>2]=h;N[b+52>>2]=i;N[b+48>>2]=j;N[b+44>>2]=k;N[b+40>>2]=e;N[b+36>>2]=l;N[b+32>>2]=m;N[b+28>>2]=n;N[b+24>>2]=o;N[b+20>>2]=d;N[b+16>>2]=p;N[b+12>>2]=q;N[b+8>>2]=r;N[b+4>>2]=s;N[b>>2]=g;rj(a,-1e4,106883);Mj(a,-2);a=1;break a}J[c+8>>2]=106883;J[c+4>>2]=106883;J[c>>2]=53139;a=fj(a,118045,c)}Ui=c+16|0;return a|0}function dp(a){var b=0,c=0,d=0,e=0;a:{b:{c:{d:{e:{f:{g:{h:{i:{c=J[a+44>>2];j:{k:{if(c){b=J[a+52>>2];if(c>>>0>=b>>>0){J[a+108>>2]=1;c=0;break k}d=c+1|0;J[a+44>>2]=d;c=K[c|0];break j}c=gl(J[a+32>>2]);if((c|0)==-1){J[a+108>>2]=1;c=0;break k}c=c&255}d=J[a+44>>2];if(!d){break i}b=J[a+52>>2]}if(b>>>0<=d>>>0){J[a+108>>2]=1;b=0;break h}e=d+1|0;J[a+44>>2]=e;c=K[d|0]<<8|c;break g}b=gl(J[a+32>>2]);if((b|0)==-1){J[a+108>>2]=1;b=0;break h}b=b<<8&65280}c=b|c;e=J[a+44>>2];if(!e){break f}b=J[a+52>>2]}if(b>>>0<=e>>>0){J[a+108>>2]=1;b=0;break e}d=e+1|0;J[a+44>>2]=d;e=K[e|0]<<16|c;break d}b=gl(J[a+32>>2]);if((b|0)==-1){J[a+108>>2]=1;b=0;break e}b=b<<16&16711680}e=b|c;d=J[a+44>>2];if(!d){break c}b=J[a+52>>2]}if(b>>>0<=d>>>0){break b}J[a+44>>2]=d+1;b=K[d|0];break a}b=gl(J[a+32>>2]);if((b|0)!=-1){break a}}J[a+108>>2]=1;b=0}return b<<24|e}function Z3(a){a=a|0;var b=0,c=0;b=Ui-128|0;Ui=b;c=an(a,1);N[b>>2]=N[c>>2];N[b+4>>2]=N[c+4>>2];N[b+8>>2]=N[c+8>>2];N[b+12>>2]=N[c+12>>2];N[b+16>>2]=N[c+16>>2];N[b+20>>2]=N[c+20>>2];N[b+24>>2]=N[c+24>>2];N[b+28>>2]=N[c+28>>2];N[b+32>>2]=N[c+32>>2];N[b+36>>2]=N[c+36>>2];N[b+40>>2]=N[c+40>>2];N[b+44>>2]=N[c+44>>2];N[b+48>>2]=N[c+48>>2];N[b+52>>2]=N[c+52>>2];N[b+56>>2]=N[c+56>>2];N[b+60>>2]=N[c+60>>2];Ft(b- -64|0,b);c=Sj(a,64);N[c>>2]=N[b+64>>2];N[c+4>>2]=N[b+68>>2];N[c+8>>2]=N[b+72>>2];N[c+12>>2]=N[b+76>>2];N[c+16>>2]=N[b+80>>2];N[c+20>>2]=N[b+84>>2];N[c+24>>2]=N[b+88>>2];N[c+28>>2]=N[b+92>>2];N[c+32>>2]=N[b+96>>2];N[c+36>>2]=N[b+100>>2];N[c+40>>2]=N[b+104>>2];N[c+44>>2]=N[b+108>>2];N[c+48>>2]=N[b+112>>2];N[c+52>>2]=N[b+116>>2];N[c+56>>2]=N[b+120>>2];N[c+60>>2]=N[b+124>>2];rj(a,-1e4,106883);Mj(a,-2);Ui=b+128|0;return 1}function xP(a){var b=0,c=0,d=Q(0),e=0,f=0,g=Q(0),h=0,i=0,j=0,k=Q(0),l=0;b=J[a+152>>2];a:{b:{if(!b){break b}e=J[b+4>>2];if(!e|(e|0)==J[b+8>>2]){break b}b=J[e+8>>2];if(b){break a}}b=J[J[J[a+148>>2]+16>>2]+8>>2]}e=J[b+96>>2];b=J[a+200>>2];if(M[e+28>>2]>b>>>0){d=N[a+224>>2];g=d;k=Q(d*Q(-2));b=J[e+24>>2]+P(b,36)|0;c=J[b+24>>2];d=(c|0)==2?Q(1):(c|0)==4?Q(1):Q(0);j=J[b+12>>2];h=J[b+16>>2]-j|0;i=(h<<1)-2|0;f=c-5>>>0<2?i>>>0<=1?1:i:h;d=Q(Q(g+Q(Q(k*d)+d))*Q(f>>>0));c:{if(d=Q(0)){c=~~d>>>0;break c}c=0}l=J[a+216>>2];f=f-1|0;c=c>>>0>f>>>0?f:c;c=c>>>0>>0?c:i-c|0;J[a+216>>2]=c;if(!((c|0)==(l|0)|J[J[J[a+148>>2]>>2]+48>>2]!=1)){d:{if(J[e+96>>2]){b=J[e+92>>2]+(c+j<<3)|0;d=N[b+4>>2];g=N[b>>2];break d}d=Q(M[b+8>>2]);g=Q(M[b+4>>2])}J[a+120>>2]=1065353216;N[a+116>>2]=d;N[a+112>>2]=g}return}Z(12664,54737,96,84789);B()}function lr(a){var b=0,c=0;c=Ui-16|0;Ui=c;b=-1;a:{b:{switch(a-1|0){case 43:b=-2;break a;case 70:b=-3;break a;case 26:b=-4;break a;case 28:b=-5;break a;case 59:b=-6;break a;case 0:b=-7;break a;case 44:b=-8;break a;case 7:b=-9;break a;case 11:b=-10;break a;case 15:b=-11;break a;case 47:b=-12;break a;case 1:b=-13;break a;case 20:b=-14;break a;case 9:b=-15;break a;case 19:b=-16;break a;case 74:b=-17;break a;case 42:b=-18;break a;case 53:b=-19;break a;case 30:b=-20;break a;case 27:b=-21;break a;case 40:b=-22;break a;case 32:b=-23;break a;case 58:b=-24;break a;case 73:b=-25;break a;case 21:b=-26;break a;case 50:b=-27;break a;case 69:b=-28;break a;case 68:b=-29;break a;case 33:b=-30;break a;case 63:b=-31;break a;case 54:b=-32;break a;case 62:break a;default:break b}}J[c>>2]=a;dj(4,99340,155165,c);b=-1e3}Ui=c+16|0;return b}function b0(a){a=a|0;var b=0,c=0,d=0,e=0,f=0,g=0,h=0,i=0,j=0;b=Ui+-64|0;Ui=b;h=Aj(a,1,0);i=Aj(a,2,0);g=mm(a,3,0,0);j=mm(a,4,114101,0);d=J[(qs(a,5,82451,254208)<<2)+173264>>2];c=ij(Sj(a,8280),0,8280);f=c+4|0;e=f;J[e+12>>2]=1881;J[e+8>>2]=1882;J[e+4>>2]=1883;J[e>>2]=c;e=c+8248|0;O[e+8>>3]=-1;O[e>>3]=-1;EE(c+24|0,f,e);J[c+8272>>2]=0;J[c>>2]=-1;J[b+60>>2]=0;J[b+52>>2]=0;J[b+56>>2]=0;J[b+44>>2]=0;J[b+48>>2]=0;J[b+40>>2]=1;J[b+36>>2]=d;J[b+32>>2]=1;f=c+8272|0;a:{if(g){d=cB(c,g,j,b+32|0);if(d){c=J[a+8>>2];J[c+8>>2]=0;J[a+8>>2]=c+16;xj(a,d);a=2;break a}d=J[b+36>>2];J[f>>2]=d}J[b+8>>2]=0;J[b+12>>2]=0;J[b+24>>2]=0;J[b+28>>2]=0;J[b+16>>2]=0;J[b+20>>2]=0;J[b+8>>2]=1;J[b>>2]=0;J[b+4>>2]=0;J[b+4>>2]=d;d=bB(c,f,h,i,e,b);if(d){Nt(c);c=J[a+8>>2];J[c+8>>2]=0;J[a+8>>2]=c+16;xj(a,d);a=2;break a}Uq(a,1042,-1);a=1}Ui=b- -64|0;return a|0}function pB(a,b,c){var d=0,e=0,f=0,g=0,h=0;d=Ui-80|0;Ui=d;f=J[a+4>>2];a:{if(f>>>0>>0){break a}J[d+16>>2]=0;J[d+20>>2]=0;J[d+24>>2]=0;J[d+28>>2]=0;J[d+32>>2]=0;J[d+36>>2]=0;J[d+40>>2]=0;J[d+64>>2]=b;J[d+56>>2]=1;J[d+60>>2]=2;J[d+68>>2]=1;J[d>>2]=0;J[d+4>>2]=0;J[d+8>>2]=0;J[d+12>>2]=0;J[d+76>>2]=d;e=J[a+8>>2]+(c<<2)|0;h=f-c|0;g=c>>>0>h>>>0?h:c;b=hj(d,e,g<<2);J[b+72>>2]=g+2;if(c>>>0>>0){ij(e,0,h<<2)}g=b+68|0;e=Ak(g,g,b+56|0);if(e){break a}e=_t(a,a,g);if(e){break a}h=J[a+4>>2];J[b+16>>2]=0;J[b+20>>2]=0;J[b+24>>2]=0;J[b+28>>2]=0;J[b+32>>2]=0;J[b+36>>2]=0;J[b+40>>2]=0;J[b>>2]=0;J[b+4>>2]=0;J[b+8>>2]=0;J[b+12>>2]=0;e=h-c|0;g=c>>>0>e>>>0?e:c;J[b+72>>2]=g;f=b;b=J[a+8>>2]+(c<<2)|0;f=hj(f,b,g<<2);J[f+72>>2]=g+J[f+60>>2];if(c>>>0>>0){ij(b,0,e<<2)}b=f+68|0;e=Ak(b,b,f+56|0);if(e){break a}e=_t(a,a,b)}Ui=d+80|0;return e}function lH(a,b,c){var d=0,e=0,f=0,g=0,h=0,i=0;g=Ui-16|0;Ui=g;a:{while(1){d=Qk(a,b,g+8|0,49);if(d){e=d-9088|0;break a}h=J[a>>2]+J[g+8>>2]|0;d=c;b:{while(1){c:{d:{e:{c=Qk(a,h,g+12|0,48);if(c){break e}e=-9184;c=J[g+12>>2];if((c|0)<=0){break a}f=J[a>>2];J[d>>2]=K[f|0];f=c+f|0;c=Qk(a,f,d+4|0,6);if(c){break e}c=J[a>>2];J[d+8>>2]=c;c=c+J[d+4>>2]|0;J[a>>2]=c;if((f-c|0)<=0){break a}e=-9186;i=K[c|0];if(i>>>0>30|!(1<>2]=c+1;J[d+12>>2]=K[c|0];c=Vo(a,f,d+16|0);if(c){break e}c=J[a>>2];J[d+20>>2]=c;c=c+J[d+16>>2]|0;J[a>>2]=c;if((c|0)==(f|0)){break d}e=-9190;break a}e=c-9088|0;if(e){break a}break c}J[d+24>>2]=0}if(J[a>>2]!=(h|0)){H[d+28|0]=1;c=d;d=Zj(1,32);J[c+24>>2]=d;if(d){continue}break b}break}if((b|0)==(h|0)){e=0;break a}c=Zj(1,32);J[d+24>>2]=c;if(c){continue}}break}e=-10368}Ui=g+16|0;return e}function hx(a){var b=0,c=0,d=0,e=0,f=0,g=0,h=0,i=0,j=0,k=0;h=Ui-400|0;Ui=h;e=ij(a,0,264);ek(e- -64|0,106669,32);ek(e+96|0,h+132|0,32);H[e|0]=0;J[e+260>>2]=li();j=ji(88524)|0;c=j;f=Ui-32|0;Ui=f;a:{if(c){b=yj(c);if(b){break a}}c=88524;J[f+16>>2]=88524;dj(3,99340,151804,f+16|0);b=5}a=c;while(1){d=K[a|0];if(!(!d|(d|0)==45|(d|0)==95)){a=a+1|0;continue}break}i=b+c|0;b=i;d=1;b:{if((b|0)==(a|0)){break b}while(1){g=K[b|0];d=0;if((g|0)==45|(g|0)==95){break b}b=b-1|0;if((b|0)!=(a|0)){continue}break}b=a;d=1}g=e+160|0;k=a-c|0;a=k+1|0;ek(g,c,a>>>0>=8?8:a);a=e+168|0;c:{if(!d){d=(b-c|0)+1|0;ek(a,c,d>>>0>=16?16:d);H[a+k|0]=45;break c}ek(a,g,8)}a=e+184|0;d:{if((b|0)!=(i|0)){c=a;a=i-b|0;ek(c,b+1|0,a>>>0>=8?8:a);break d}H[a|0]=0;J[f>>2]=c;dj(3,99340,151866,f)}Ui=f+32|0;a=h+392|0;Kr(a);J[e+192>>2]=J[BV(a)+36>>2]/60;cj(j);Ui=h+400|0}function ala(a){a=a|0;var b=0,c=0,d=0,e=0,f=0;b=Ui-48|0;Ui=b;e=J[a>>2];f=J[J[a+24>>2]>>2];H[b+29|0]=0;H[b+30|0]=0;H[b+31|0]=0;H[b+32|0]=0;H[b+33|0]=0;H[b+34|0]=0;H[b+35|0]=0;H[b+36|0]=0;J[b+24>>2]=0;J[b+28>>2]=0;J[b+16>>2]=0;J[b+20>>2]=0;Gx(e,J[f+4>>2],b);c=J[a+16>>2];d=J[a+20>>2];a:{if((c|0)==J[75966]&(d|0)==J[75967]){N[b+20>>2]=O[a+40>>3];xq(e,J[f+4>>2],b);a=0;break a}if(J[75968]==(c|0)&J[75969]==(d|0)){N[b+24>>2]=O[a+40>>3];xq(e,J[f+4>>2],b);a=0;break a}if(J[75970]==(c|0)&J[75971]==(d|0)){N[b+28>>2]=O[a+40>>3];xq(e,J[f+4>>2],b);a=0;break a}if(J[75972]==(c|0)&J[75973]==(d|0)){N[b+32>>2]=O[a+40>>3];xq(e,J[f+4>>2],b);a=0;break a}if(J[75978]==(c|0)&J[75979]==(d|0)){N[b+16>>2]=O[a+40>>3];xq(e,J[f+4>>2],b);a=0;break a}a=(c|0)==J[75974]&(d|0)==J[75975]?-13:(c|0)==J[75976]&(d|0)==J[75977]?-13:-1}Ui=b+48|0;return a|0}function nua(a){a=a|0;var b=0,c=0,d=0,e=0,f=0,g=0,h=0;h=Ui-16|0;Ui=h;A(+(ok(a,1)+6755399441055744));v(1)|0;e=v(0)|0;a:{if(e){break a}if(kk(a,1)){break a}Yk(a,1,36031)}b:{c:{d:{if((kj(a,2)|0)!=-1){A(+(ok(a,2)+6755399441055744));v(1)|0;c=v(0)|0;if(c){break d}if(!kk(a,2)){Yk(a,2,36031)}break b}b=8;c=57813;break c}b=c>>31;b=(b^c)-b|0;b=b>>>0>=8?8:b;c=(c|0)<0?94430:57813}d=h+8|0;f=b-1|0;H[d+f|0]=K[c+(e&15)|0];if(b>>>0<2){break b}g=b-2|0;H[g+d|0]=K[c+(e>>>4&15)|0];if(f>>>0<2){break b}f=b-3|0;H[f+d|0]=K[c+(e>>>8&15)|0];if(g>>>0<2){break b}g=b-4|0;H[g+d|0]=K[c+(e>>>12&15)|0];if(f>>>0<2){break b}f=b-5|0;H[f+d|0]=K[c+(e>>>16&15)|0];if(g>>>0<2){break b}g=b-6|0;H[g+d|0]=K[c+(e>>>20&15)|0];if(f>>>0<2){break b}d=b+d|0;H[d-7|0]=K[c+(e>>>24&15)|0];if(g>>>0<2){break b}H[d-8|0]=K[c+(e>>>28|0)|0]}mj(a,h+8|0,b);Ui=h+16|0;return 1}function CN(a,b,c){var d=0,e=0,f=0,g=0;a:{b:{c:{d:{g=J[218554];f=J[218552];if(J[218556]!=((g-f|0)/24|0)){d=J[218551];e:{if(!d){break e}e=J[J[218550]+(mxa(a,b,d)<<2)>>2];if((e|0)==-1){break e}while(1){d=f+P(e,24)|0;if(J[d>>2]==(a|0)&(b|0)==J[d+4>>2]){break d}e=J[d+16>>2];if((e|0)!=-1){continue}break}}d=J[218553];f:{if((g|0)!=(d|0)){J[218553]=d+24;break f}d=J[218555];if((d|0)==-1){break c}d=f+P(d,24)|0;J[218555]=J[d+16>>2]}J[d>>2]=a;J[d+4>>2]=b;J[d+8>>2]=J[c>>2];I[d+12>>1]=L[c+4>>1];J[d+16>>2]=-1;c=J[218552];a=J[218550]+(mxa(a,b,J[218551])<<2)|0;e=J[a>>2];if((e|0)==-1){break b}while(1){a=c+P(e,24)|0;e=J[a+16>>2];if((e|0)!=-1){continue}break}J[a+16>>2]=(d-c|0)/24;break a}Z(144851,55689,229,9606);B()}J[d+8>>2]=J[c>>2];I[d+12>>1]=L[c+4>>1];return}Z(152203,55689,537,2838);B()}J[a>>2]=(d-c|0)/24}J[218556]=J[218556]+1}function ZC(a,b){var c=0,d=0,e=0,f=0,g=0,h=0,i=0,j=0;a:{if(b>>>0<4){c=b;d=0;break a}g=b-4|0;b:{if(g>>>0<4){c=b;f=0;break b}f=(g>>>2|0)+1&2147483646;c=b;while(1){e=P(K[a+4|0]|K[a+5|0]<<8|(K[a+6|0]<<16|K[a+7|0]<<24),1540483477);j=P(e>>>24^e,1540483477);e=P(K[a|0]|K[a+1|0]<<8|(K[a+2|0]<<16|K[a+3|0]<<24),1540483477);d=j^P(P(e>>>24^e,1540483477)^P(d,1540483477),1540483477);c=c-8|0;a=a+8|0;i=i+2|0;if((f|0)!=(i|0)){continue}break}f=P(d,1540483477)}if(!(g&4)){d=P(K[a|0]|K[a+1|0]<<8|(K[a+2|0]<<16|K[a+3|0]<<24),1540483477);d=f^P(d>>>24^d,1540483477);c=c-4|0;a=a+4|0}d=P(d,1540483477)}c:{switch(c-1|0){case 2:h=K[a+2|0]<<16;case 1:h=K[a+1|0]<<8|h;case 0:c=P(K[a|0]^h,1540483477);break;default:break c}}a=P(b,1540483477);a=P(d^P(c>>>24^c,1540483477),1540483477)^P(a>>>24^a,1540483477);a=P(a>>>13^a,1540483477);return a>>>15^a}function eN(a,b,c){var d=0,e=0,f=0,g=0,h=0,i=0;a:{b:{c:{d:{g=J[a+24>>2];i=J[a+16>>2];f=J[a+8>>2];if((g|0)!=((i-f|0)/24|0)){h=J[a+4>>2];e:{if(!h){break e}e=J[J[a>>2]+((b>>>0)%(h>>>0)<<2)>>2];if((e|0)==-1){break e}while(1){d=P(e,24)+f|0;if(J[d>>2]==(b|0)){break d}e=J[d+16>>2];if((e|0)!=-1){continue}break}}d=J[a+12>>2];f:{if((i|0)!=(d|0)){J[a+12>>2]=d+24;break f}d=J[a+20>>2];if((d|0)==-1){break c}d=P(d,24)+f|0;J[a+20>>2]=J[d+16>>2]}J[d>>2]=b;e=J[c+4>>2];c=J[c>>2];J[d+16>>2]=-1;J[d+8>>2]=c;J[d+12>>2]=e;b=J[a>>2]+((b>>>0)%(h>>>0)<<2)|0;e=J[b>>2];if((e|0)==-1){break b}while(1){b=P(e,24)+f|0;e=J[b+16>>2];if((e|0)!=-1){continue}break}J[b+16>>2]=(d-f|0)/24;break a}Z(144851,55629,229,9606);B()}a=J[c+4>>2];J[d+8>>2]=J[c>>2];J[d+12>>2]=a;return}Z(152203,55629,537,2838);B()}J[b>>2]=(d-f|0)/24;g=J[a+24>>2]}J[a+24>>2]=g+1}function uG(a,b){var c=0,d=0,e=0,f=0,g=0,h=0,i=0,j=0;f=a+1280|0;a:{b:{while(1){g=(d<<2)+b|0;if(J[g>>2]>0){h=d+1|0;i=((e|0)<=256?256:e)-e|0;c=0;while(1){H[e+f|0]=h;if((c|0)==(i|0)){break b}e=e+1|0;c=c+1|0;if((c|0)>2]){continue}break}}d=d+1|0;if((d|0)!=16){continue}break}c=0;H[e+f|0]=0;h=a+1540|0;g=a+512|0;i=a+1612|0;d=1;e=0;while(1){j=d<<2;J[i+j>>2]=e-c;if(K[e+f|0]==(d|0)){while(1){b=c;I[g+(e<<1)>>1]=c;c=c+1|0;e=e+1|0;if(K[f+e|0]==(d|0)){continue}break}if(b>>>d|0){break b}}J[h+j>>2]=c<<16-d;c=c<<1;d=d+1|0;if((d|0)!=17){continue}break}J[a+1608>>2]=-1;b=ij(a,255,512);c=1;if((e|0)<=0){break a}a=0;while(1){c=K[a+f|0];if(c>>>0<=9){d=9-c&255;h=L[g+(a<<1)>>1]<>>d|0)){continue}break}}c=1;a=a+1|0;if((e|0)!=(a|0)){continue}break}break a}J[218569]=94363;c=0}return c}function lha(a){a=a|0;var b=0,c=0,d=0,e=0,f=0,g=0,h=0,i=0;b=Ui-80|0;Ui=b;i=pj(b+20|0,a,1,39971,434);d=Mp(a,1,0);e=mk(a,2);c=Yi;g=c;f=pj(b+60|0,a,1,39971,203);c=nt(d,e,c,b+56|0,b+52|0);a:{if(c){J[b+16>>2]=c>>>0>11?14245:J[(c<<2)+265952>>2];Jj(f,29367,b+16|0);break a}J[b+44>>2]=0;J[b+40>>2]=0;c=zv(d,e,g,b+48|0,b+44|0,b+52|0,b+40|0);if(c){J[b>>2]=c>>>0>11?14245:J[(c<<2)+265952>>2];Jj(f,28329,b);break a}h=J[b+56>>2];if(h>>>0>=9){dj(3,88458,64443,0);if(M[b+56>>2]>=9){dj(3,88458,64443,0)}Jj(f,153318,0);break a}c=Sj(a,48);J[c+8>>2]=e;J[c+12>>2]=g;J[c>>2]=d;J[c+16>>2]=J[b+48>>2];J[c+28>>2]=J[b+44>>2];J[c+32>>2]=J[b+40>>2];J[c+40>>2]=J[b+56>>2];e=J[b+52>>2];d=h<<2;J[c+24>>2]=J[d+224624>>2];J[c+20>>2]=J[d+224660>>2];J[c+36>>2]=e;uj(a,1);J[c+44>>2]=Lk(a,-1e4);rj(a,-1e4,49251);Mj(a,-2)}oj(f);oj(i);Ui=b+80|0;return 1}function OH(a,b,c,d,e,f){var g=0,h=0,i=0,j=0;if(!J[a+88>>2]){return-20352}j=J[a+220>>2];i=a+124|0;g=EA(a,i,e,f);a:{if(g){break a}h=a+136|0;g=cu(a,h,i,a+40|0,e,f);if(g){break a}e=-20352;if(d){f=h;g=Um(a+4|0);e=-20096;b:{if(!J[a+48>>2]){break b}h=c+1|0;i=d-1|0;d=-20096;c:{if(!J[a+60>>2]){J[b>>2]=g;e=-20224;if(g>>>0>i>>>0){break b}d=yH(f,h,g);if(d){break c}e=0;if(!J[a+48>>2]){break b}d=0;if(!J[a+60>>2]){break c}}if(!Pj(f+24|0,0)){e=-20224;if(!i){break b}H[h|0]=0;J[b>>2]=1;e=0;break b}d:{switch(j|0){case 0:a=g<<1;J[b>>2]=a|1;e=-20224;if(a>>>0>=i>>>0){break b}H[h|0]=4;a=h+1|0;d=no(f,a,g);if(d){break c}e=no(f+12|0,a+g|0,g);break b;case 1:break d;default:break c}}a=g+1|0;J[b>>2]=a;e=-20224;if(a>>>0>i>>>0){break b}H[h|0]=Wm(f+12|0,0)+2;d=no(f,h+1|0,g)}e=d}if(!e){H[c|0]=J[b>>2];J[b>>2]=J[b>>2]+1;e=0}}g=e}return g}function zD(a,b,c,d,e,f){var g=0,h=0,i=0,j=0,k=0,l=0,m=0;a:{g=J[b>>2];i=J[b+4>>2];if((g|0)!=(i|0)){while(1){h=P(j,56)+g|0;m=L[h+44>>1];k=L[h+46>>1];l=((m<<7)+d|0)+(k<<2)|0;if(!K[l+2|0]){H[l+2|0]=1;I[l>>1]=k;g=((m<<9)+a|0)+(k<<4)|0;J[g+4>>2]=c;J[g>>2]=h;H[g+14|0]=K[g+14|0]|e;b:{c:{switch(J[h+40>>2]-1|0){case 2:I[g+12>>1]=J[f+8>>2];J[f+8>>2]=J[f+8>>2]+1;break b;case 1:I[g+12>>1]=J[f+4>>2];J[f+4>>2]=J[f+4>>2]+1;break b;case 0:break c;default:break b}}if(!(H[h+36|0]&1)){break a}J[g+8>>2]=J[f+16>>2];I[g+12>>1]=J[f>>2];J[f>>2]=J[f>>2]+1;J[f+16>>2]=J[f+16>>2]+L[h+50>>1];J[f+20>>2]=J[f+20>>2]}g=J[f+24>>2];i=L[h+44>>1]+1|0;J[f+24>>2]=g>>>0>i>>>0?g:i;g=J[f+28>>2];h=L[h+46>>1]+1|0;J[f+28>>2]=g>>>0>h>>>0?g:h;i=J[b+4>>2];g=J[b>>2]}j=j+1|0;if(j>>>0<(i-g|0)/56>>>0){continue}break}}return}Z(5582,39550,1276,21310);B()}function gq(a){var b=0,c=0,d=0;c=K[a+18372|0];a:{if((c|0)!=255){H[a+18372|0]=255;break a}b=J[a>>2];c=J[b+172>>2];b:{if(c>>>0>2]){J[b+172>>2]=c+1;d=K[c|0];break b}if(!J[b+32>>2]){c=255;break a}d=b+40|0;c=Zi[J[b+16>>2]](J[b+28>>2],d,J[b+36>>2])|0;J[b+168>>2]=J[b+168>>2]+(J[b+172>>2]-J[b+180>>2]|0);c:{if(!c){H[b+40|0]=0;J[b+32>>2]=0;c=b+41|0;d=0;break c}c=c+d|0;d=K[d|0]}J[b+176>>2]=c;J[b+172>>2]=b+41}c=255;if((d|0)!=255){break a}while(1){b=J[a>>2];c=J[b+172>>2];d:{if(c>>>0>2]){J[b+172>>2]=c+1;c=K[c|0];break d}if(!J[b+32>>2]){c=0;break a}c=b+40|0;d=Zi[J[b+16>>2]](J[b+28>>2],c,J[b+36>>2])|0;J[b+168>>2]=J[b+168>>2]+(J[b+172>>2]-J[b+180>>2]|0);e:{if(!d){H[b+40|0]=0;J[b+32>>2]=0;d=b+41|0;c=0;break e}d=c+d|0;c=K[c|0]}J[b+176>>2]=d;J[b+172>>2]=b+41}if((c&255)==255){continue}break}}return c&255}function QE(a,b,c,d){var e=0,f=0,g=0,h=0,i=0,j=0,k=0,l=0,m=0,n=0,o=0,p=0;a:{c=J[((b<<2)+a|0)+68>>2]+(c<<2)|0;g=L[c+6>>1];if(!g){break a}i=b<<1;j=i+(J[a+60>>2]+(L[c+2>>1]<<6)|0)|0;f=c+4|0;k=1<>1];if(h>>>0>L[c>>1]){break a}b=f;e=J[a+60>>2];f=e+(g<<6)|0;g=48;b:{if(!(h&1)){break b}g=54;h=e+(L[c+2>>1]<<6)|0;l=h+54|0;e=k<<1;m=f+48|0;if(L[l+e>>1]>1]){break b}n=f+54|0;o=h+48|0;if(L[e+n>>1]>1]){break b}e=p<<1;if(L[e+l>>1]>1]|L[e+n>>1]>1]){break b}e=J[a+92>>2];Zi[J[J[e>>2]+12>>2]](e,h,f,d)|0;e=J[a+96>>2];if(!e){break b}Zi[J[J[e>>2]+12>>2]](e,h,f,d)|0}f=(f+g|0)+i|0;I[f>>1]=L[f>>1]-1;I[j+48>>1]=L[j+48>>1]+1;f=L[c>>1]|L[c+2>>1]<<16;g=L[b>>1]|L[b+2>>1]<<16;I[c>>1]=g;I[c+2>>1]=g>>>16;I[b>>1]=f;I[b+2>>1]=f>>>16;f=b+4|0;c=c+4|0;g=L[b+6>>1];if(g){continue}break}}}function E6(a){a=a|0;var b=0,c=0,d=0,e=0,f=0;c=Ui-128|0;Ui=c;J[c+124>>2]=0;b=J[a>>2];N[c>>2]=N[b>>2];N[c+4>>2]=N[b+4>>2];N[c+8>>2]=N[b+8>>2];N[c+12>>2]=N[b+12>>2];N[c+16>>2]=N[b+16>>2];N[c+20>>2]=N[b+20>>2];N[c+24>>2]=N[b+24>>2];N[c+28>>2]=N[b+28>>2];N[c+32>>2]=N[b+32>>2];N[c+36>>2]=N[b+36>>2];N[c+40>>2]=N[b+40>>2];N[c+44>>2]=N[b+44>>2];N[c+48>>2]=N[b+48>>2];N[c+52>>2]=N[b+52>>2];N[c+56>>2]=N[b+56>>2];N[c+60>>2]=N[b+60>>2];N[c+64>>2]=N[b+64>>2];N[c+68>>2]=N[b+68>>2];N[c+72>>2]=N[b+72>>2];N[c+76>>2]=N[b+76>>2];N[c+80>>2]=N[b+80>>2];N[c+84>>2]=N[b+84>>2];N[c+88>>2]=N[b+88>>2];N[c+92>>2]=N[b+92>>2];J[c+96>>2]=J[b+96>>2];f=J[a+12>>2];if(f){b=0;while(1){e=J[a+8>>2]+P(b,48)|0;d=J[e+16>>2];d=RM(c,d+256|0,N[d+272>>2]);J[e+36>>2]=J[e+36>>2]&-16385|(d?16384:0);b=b+1|0;if((f|0)!=(b|0)){continue}break}}Ui=c+128|0}function Ufa(a){a=a|0;var b=0,c=0,d=0,e=0,f=0;c=Ui-128|0;Ui=c;J[c+124>>2]=0;b=J[a>>2];N[c>>2]=N[b>>2];N[c+4>>2]=N[b+4>>2];N[c+8>>2]=N[b+8>>2];N[c+12>>2]=N[b+12>>2];N[c+16>>2]=N[b+16>>2];N[c+20>>2]=N[b+20>>2];N[c+24>>2]=N[b+24>>2];N[c+28>>2]=N[b+28>>2];N[c+32>>2]=N[b+32>>2];N[c+36>>2]=N[b+36>>2];N[c+40>>2]=N[b+40>>2];N[c+44>>2]=N[b+44>>2];N[c+48>>2]=N[b+48>>2];N[c+52>>2]=N[b+52>>2];N[c+56>>2]=N[b+56>>2];N[c+60>>2]=N[b+60>>2];N[c+64>>2]=N[b+64>>2];N[c+68>>2]=N[b+68>>2];N[c+72>>2]=N[b+72>>2];N[c+76>>2]=N[b+76>>2];N[c+80>>2]=N[b+80>>2];N[c+84>>2]=N[b+84>>2];N[c+88>>2]=N[b+88>>2];N[c+92>>2]=N[b+92>>2];J[c+96>>2]=J[b+96>>2];f=J[a+12>>2];if(f){b=0;while(1){e=J[a+8>>2]+P(b,48)|0;d=J[e+16>>2];d=IC(c,d,d- -64|0,d+80|0);J[e+36>>2]=J[e+36>>2]&-16385|(d?16384:0);b=b+1|0;if((f|0)!=(b|0)){continue}break}}Ui=c+128|0}function jU(a,b){var c=0,d=0,e=0,f=0,g=0;c=Ui-32|0;Ui=c;J[c+24>>2]=a;f=1;a:{b:{switch(b-a>>2){case 2:b=b-4|0;J[c+20>>2]=b;if(M[b>>2]>=M[a>>2]){break a}a=J[c+24>>2];b=J[a>>2];d=a;a=J[c+20>>2];J[d>>2]=J[a>>2];J[a>>2]=b;break a;case 3:xp(a,a+4|0,b-4|0);break a;case 4:Iz(a,a+4|0,a+8|0,b-4|0);break a;case 5:CF(a,a+4|0,a+8|0,a+12|0,b-4|0);break a;case 0:case 1:break a;default:break b}}e=a+8|0;xp(a,a+4|0,e);d=a+12|0;while(1){J[c+16>>2]=d;if((b|0)==(d|0)){break a}c:{if(M[d>>2]>=M[e>>2]){break c}J[c+12>>2]=J[J[c+16>>2]>>2];J[c+8>>2]=e;d=J[c+16>>2];while(1){d:{J[d>>2]=J[J[c+8>>2]>>2];d=J[c+8>>2];if((d|0)==(a|0)){break d}e=d-4|0;J[c+8>>2]=e;if(M[c+12>>2]>2]){continue}}break}J[d>>2]=J[c+12>>2];g=g+1|0;if((g|0)!=8){break c}f=(J[c+16>>2]+4|0)==(b|0);break a}e=J[c+16>>2];d=e+4|0;continue}}Ui=c+32|0;return f}function RE(a,b,c){var d=0,e=0,f=0,g=0,h=0,i=0,j=0,k=0,l=0,m=0,n=0,o=0;a:{c=J[((b<<2)+a|0)+68>>2]+(c<<2)|0;f=L[c+6>>1];if(!f){break a}k=b<<1;g=J[a+60>>2]+(L[c+2>>1]<<6)|0;d=g+54|0;l=k+d|0;e=c+4|0;i=g+48|0;b=1<>1];if(d>>>0>L[c>>1]){break a}h=J[a+60>>2];e=h+((f&65535)<<6)|0;b:{if(d&1){f=e+54|0;break b}f=e+48|0;if(L[n>>1]>1]){break b}d=e+54|0;if(L[d+g>>1]>1]|L[o>>1]>1]|L[d+j>>1]>1]){break b}d=J[a+92>>2];h=h+(L[c+2>>1]<<6)|0;Zi[J[J[d>>2]+8>>2]](d,h,e)|0;d=J[a+96>>2];if(!d){break b}Zi[J[J[d>>2]+8>>2]](d,h,e)|0}e=f+k|0;I[e>>1]=L[e>>1]-1;I[l>>1]=L[l>>1]+1;e=L[c>>1]|L[c+2>>1]<<16;f=L[b>>1]|L[b+2>>1]<<16;I[c>>1]=f;I[c+2>>1]=f>>>16;I[b>>1]=e;I[b+2>>1]=e>>>16;e=b+4|0;c=c+4|0;f=L[b+6>>1];if(f){continue}break}}}function Nj(a,b,c){var d=0,e=0,f=0;e=c-1|0;a:{if((b|0)>0){b=(J[a+12>>2]+(b<<4)|0)-16|0;d=b>>>0>=M[a+8>>2]?173288:b;break a}d=J[a+8>>2]+(b<<4)|0;if((b|0)>=-9999){break a}b:{switch(b+10002|0){case 2:d=J[a+16>>2]+96|0;break a;case 1:b=J[J[J[J[a+20>>2]+4>>2]>>2]+12>>2];J[a+96>>2]=5;J[a+88>>2]=b;d=a+88|0;break a;case 0:d=a+72|0;break a;default:break b}}d=J[J[J[a+20>>2]+4>>2]>>2];d=K[d+7|0]<-10002-b>>>0?173288:(d+(0-b<<4)|0)-160024|0}b=J[d>>2];c:{if(e>>>0>2]){b=J[b+12>>2]+(e<<4)|0;break c}f=+(c|0);if(c){e=J[b+16>>2];A(+f);d=v(1)|0;c=v(0)|0;c=c+d|0;b=((c>>>0)%((-1<>>0)<<5)+e|0}else{b=J[b+16>>2]}while(1){if(!(J[b+24>>2]!=3|O[b+16>>3]!=f)){break c}b=J[b+28>>2];if(b){continue}break}b=173288}e=J[b+4>>2];c=J[a+8>>2];J[c>>2]=J[b>>2];J[c+4>>2]=e;J[c+8>>2]=J[b+8>>2];J[a+8>>2]=J[a+8>>2]+16}function Bga(a){a=a|0;var b=0,c=0,d=0,e=0,f=0,g=0,h=0,i=0;b=Ui-80|0;Ui=b;f=pj(b+28|0,a,0,39481,745);e=mk(a,2);h=Yi;c=J[J[pk(a)+80>>2]+8>>2];J[b+24>>2]=0;J[b+20>>2]=0;J[b+72>>2]=0;J[b+76>>2]=0;d=b- -64|0;J[d>>2]=0;J[d+4>>2]=0;J[b+56>>2]=0;J[b+60>>2]=0;J[b+48>>2]=0;J[b+52>>2]=0;Al(a,1,c,80935,b+24|0,b+48|0,b+20|0);d=J[b+24>>2];g=J[b+20>>2];a:{if(H[g+145|0]&1){dj(4,88458,25611,0);a=1;break a}a=3;c=J[d+12>>2];b:{if(!c){break b}while(1){if(J[c>>2]!=(e|0)|J[c+4>>2]!=(h|0)){c=J[c+16>>2];if(c){continue}break b}break}a=4;if(!J[c+12>>2]){break a}tQ(g,c);a=J[d+12>>2];c:{if((c|0)==(a|0)){J[d+12>>2]=J[c+16>>2];break c}while(1){e=a;if(!a){break c}a=J[a+16>>2];if((c|0)!=(a|0)){continue}break}J[e+16>>2]=J[c+16>>2]}cj(c);a=0}}if(a){J[b+4>>2]=a;J[b>>2]=J[(a<<2)+225184>>2];i=Jj(f,140113,b)}oj(f);Ui=b+80|0;return i|0}function Ex(a,b,c){var d=0,e=0,f=0,g=0,h=0,i=Q(0);e=Ui-160|0;Ui=e;J[e+156>>2]=0;f=1;a:{b:{g=J[a+308>>2]+(b<<2)|0;if(J[g>>2]!=-2){d=J[J[a+304>>2]+2080>>2];h=J[d+8>>2]-J[d+12>>2]>>4;Nj(d,-1e4,J[a+320>>2]);Ok(d);Nj(d,-1e4,J[g>>2]);Nj(d,-1e4,J[a+320>>2]);a=1;c:{d:{switch(b-1|0){case 1:Bk(d,J[c+64>>2],J[c+68>>2]);a=J[c+80>>2];e:{if(a){mx(d,a,c+96|0,1);break e}a=J[c+84>>2];if(a){Du(d,c+96|0,a);break e}Fj(d,0,0)}wm(d,c);a=4;break c;case 0:break d;default:break c}}i=N[c>>2];a=J[d+8>>2];J[a+8>>2]=3;O[a>>3]=i;J[d+8>>2]=J[d+8>>2]+16;a=2}b=Ui-128|0;Ui=b;Ui=b+128|0;J[e+12>>2]=0;if(Ol(d,a,0,0)){f=-1;if(J[d+8>>2]-J[d+12>>2]>>4!=(h|0)){break b}}a=J[d+8>>2];J[a+8>>2]=0;J[d+8>>2]=a+16;Ok(d);if(J[d+8>>2]-J[d+12>>2]>>4!=(h|0)){break a}}Ui=e+160|0;return f}Z(143244,37616,3461,10546);B()}Z(143244,37616,3469,10546);B()}function YU(a,b,c){var d=0,e=0,f=0,g=0,h=0,i=Q(0);if(!J[a+28>>2]){d=J[a+12>>2];d=Zi[J[J[d>>2]+12>>2]](d)|0;J[a+28>>2]=d;if((d|0)>0){while(1){g=J[a+12>>2];d=J[a+24>>2]+P(h,28)|0;Zi[J[J[g>>2]+24>>2]](g,d,c,h);g=bV(b);i=N[d>>2];e=P(g,36);f=e+J[b+4>>2]|0;N[f+4>>2]=N[d+4>>2]+Q(-.10000000149011612);N[f>>2]=i+Q(-.10000000149011612);i=N[d+8>>2];f=e+J[b+4>>2]|0;N[f+12>>2]=N[d+12>>2]+Q(.10000000149011612);N[f+8>>2]=i+Q(.10000000149011612);e=e+J[b+4>>2]|0;J[e+32>>2]=0;J[e+16>>2]=d;$U(b,g);J[b+28>>2]=J[b+28>>2]+1;e=J[b+40>>2];if((e|0)==J[b+36>>2]){J[b+36>>2]=e<<1;f=J[b+32>>2];e=sj(e<<3);J[b+32>>2]=e;hj(e,f,J[b+40>>2]<<2);cj(f);e=J[b+40>>2]}J[J[b+32>>2]+(e<<2)>>2]=g;J[b+40>>2]=J[b+40>>2]+1;J[d+20>>2]=h;J[d+16>>2]=a;J[d+24>>2]=g;h=h+1|0;if((h|0)>2]){continue}break}}return}Z(112651,41497,143,23044);B()}function s3(a){a=a|0;var b=0,c=0,d=0,e=Q(0),f=Q(0),g=Q(0),h=Q(0),i=Q(0),j=Q(0),k=Q(0),l=Q(0);c=Ui-32|0;Ui=c;J[c+28>>2]=0;J[c+24>>2]=0;b=vn(a,1,c+28|0);a:{if((vn(a,2,c+24|0)|0)!=(b|0)){J[c+20>>2]=48864;J[c+16>>2]=53139;a=fj(a,153544,c+16|0);break a}b:{switch(b|0){case 0:b=J[c+24>>2];e=N[b+8>>2];d=J[c+28>>2];f=N[d+8>>2];g=N[b>>2];h=N[d>>2];i=N[b+4>>2];j=N[d+4>>2];b=Sj(a,16);N[b+8>>2]=f*e;N[b+4>>2]=j*i;N[b>>2]=h*g;rj(a,-1e4,108973);Mj(a,-2);a=1;break a;case 1:b=J[c+24>>2];e=N[b+12>>2];d=J[c+28>>2];f=N[d+12>>2];g=N[b>>2];h=N[d>>2];i=N[b+4>>2];j=N[d+4>>2];k=N[b+8>>2];l=N[d+8>>2];b=Sj(a,16);N[b+12>>2]=f*e;N[b+8>>2]=l*k;N[b+4>>2]=j*i;N[b>>2]=h*g;rj(a,-1e4,106998);Mj(a,-2);a=1;break a;default:break b}}J[c+12>>2]=106998;J[c+8>>2]=108973;J[c+4>>2]=48864;J[c>>2]=53139;a=fj(a,116480,c)}Ui=c+32|0;return a|0}function jpa(a){a=a|0;var b=0,c=0,d=0,e=0,f=0,g=0,h=0,i=0;h=Ui-112|0;Ui=h;c=a;if((kj(c,1)|0)==8){b=1;c=so(c,1)}d=b+1|0;a:{if(!Zl(c,Ej(a,d),h+12|0)){i=Dk(a,d,68210);break a}i=2;f=Ej(a,b|2);b:{c:{d:{e=J[c+40>>2]+P(J[h+108>>2],24)|0;d=J[e+4>>2];if(J[d+8>>2]!=6){break d}b=J[d>>2];if(K[b+6|0]){break d}b=J[b+16>>2];if(!b){break d}e:{if((e|0)!=J[c+20>>2]){g=J[e+12>>2];d=b;break e}g=J[c+24>>2];J[e+12>>2]=g;d=J[J[d>>2]+16>>2]}d=WA(b,f,(g-J[d+12>>2]>>2)-1|0);if(!d){break d}b=J[e>>2];break c}g=J[((e|0)==J[c+20>>2]?c+8|0:e+28|0)>>2];b=J[e>>2];d=0;if((f|0)<=0|(f|0)>g-b>>4){break b}d=135508}b=((f<<4)+b|0)-16|0;f=J[b+4>>2];e=J[c+8>>2];J[e>>2]=J[b>>2];J[e+4>>2]=f;J[e+8>>2]=J[b+8>>2];J[c+8>>2]=J[c+8>>2]+16}if(d){Xo(c,a,1);xj(a,d);uj(a,-2);break a}c=J[a+8>>2];J[c+8>>2]=0;J[a+8>>2]=c+16;i=1}Ui=h+112|0;return i|0}function ep(a,b){var c=0,d=0,e=0,f=0,g=0;H[b+140|0]=0;J[b+136>>2]=-1;H[b+72|0]=0;H[b+8|0]=0;H[b|0]=0;f=b+140|0;a:{d=Hk(a,58);b:{if(!d){break b}if(a>>>0>=d>>>0){break a}c=H[a|0];if(!(c-48>>>0<10|(c|32)-97>>>0<26)){break b}c=a;while(1){c=c+1|0;if((d|0)!=(c|0)){e=H[c|0];if(e-48>>>0<10|(e|32)-97>>>0<26){continue}}break}if(c>>>0>=d>>>0){break a}}ek(b,66717,8);ek(f,a,2048);return 0}c=(d-a|0)+1|0;ek(b,a,c>>>0>=8?8:c);c=80;c:{d:{if(!jj(b,36507)|!(K[b|0]!=119|K[b+1|0]!=115|K[b+2|0])){break d}c=443;if(!jj(b,19811)){break d}if(jj(b,18611)){break c}}J[b+136>>2]=c}c=Bm(a,114113);e:{if(c){d=b+72|0;a=b+8|0;c=c+2|0;e=Hk(c,47);f:{if(e){g=c;c=(e-c|0)+1|0;ek(a,g,c>>>0>=64?64:c);ek(f,e,2048);break f}ek(a,c,64)}ek(d,a,64);a=Hk(d,58);if(!a){break e}J[b+136>>2]=Tr(a+1|0,0);H[a|0]=0;return 0}ek(f,d+1|0,2048)}return 0}function Bx(a,b,c,d){var e=0,f=0,g=0,h=0,i=0;e=Ui-1056|0;Ui=e;J[e+1052>>2]=0;a:{b:{c:{d:{e:{if(b){if(!c){break e}if(!d){break d}J[c>>2]=0;J[d>>2]=0;f=K[b|0];f:{if((f|0)!=47){if(!f){dj(4,96538,53119,0);b=-3;break f}J[e>>2]=b;dj(4,96538,136662,e);b=-3;break f}g=J[a+6164>>2];Tj(g);ip(b,e+16|0);f=a+8392|0;b=J[a+8392>>2];if((J[a+8400>>2]-b|0)!=1048576){if(H[a+8404|0]&1){break c}lj(1048576,1,f,a+8400|0,a+8396|0);b=J[a+8392>>2]}J[a+8396>>2]=b;b=Pu(a,e+16|0,0,-1,e+8|0,e+12|0,f);if(!b){h=J[f>>2];i=c;a=J[e+12>>2];c=sj(a);J[i>>2]=c;if(J[f>>2]!=(h|0)){break b}if((a|0)!=J[e+8>>2]){break a}hj(c,h,a);J[d>>2]=a}Lj(g)}Ui=e+1056|0;return b}Z(66013,42212,1075,6889);B()}Z(69784,42212,1076,6889);B()}Z(58980,42212,1077,6889);B()}Z(151729,53895,501,2284);B()}Z(144801,42212,1098,6889);B()}Z(58964,42212,1099,6889);B()}function hl(a,b,c,d,e,f,g,h){var i=0,j=0,k=0,l=0,m=0,n=0,o=0;j=Ui-48|0;Ui=j;l=a+16|0;i=bj(b);o=Yi;a:{b:{c:{d:{k=J[a+6160>>2];if(!k){break d}e:{while(1){n=P(m,48)+l|0;if(J[n>>2]!=(i|0)|(o|0)!=J[n+4>>2]){m=m+1|0;if((k|0)!=(m|0)){continue}break e}break}J[j+32>>2]=b;dj(4,96538,153982,j+32|0);d=-5;break b}if((k|0)!=128){break d}dj(4,96538,153586,0);break c}if(ul(b,46)){J[j+16>>2]=b;dj(4,96538,148216,j+16|0);break c}J[a+6160>>2]=k+1;i=P(k,48)+l|0;OV(i);H[i+40|0]=K[a+6160|0]-1;l=bj(b);J[i+32>>2]=h;J[i+28>>2]=g;J[i+24>>2]=f;J[i+20>>2]=e;J[i+16>>2]=d;J[i+12>>2]=c;J[i+8>>2]=b;J[i>>2]=l;J[i+4>>2]=Yi;f:{if(ul(b,46)){c=148216;break f}c=148158;if(!e){break f}d=0;if(g){break b}}J[j>>2]=b;dj(4,96538,c,j);if((J[a+6160>>2]-1|0)!=(k|0)){break a}J[a+6160>>2]=k}d=-6}Ui=j+48|0;return d}Z(84943,42212,478,64672);B()}function Qga(a){a=a|0;var b=0,c=0,d=0,e=0,f=0,g=0,h=0;b=Ui-112|0;Ui=b;if(!K[316384]){H[316384]=1;J[b>>2]=49923;J[b+4>>2]=4105;J[b+8>>2]=49923;J[b+12>>2]=48711;dj(3,88458,129991,b)}e=J[a+8>>2]-J[a+12>>2]>>4;pk(a);d=mk(a,2);f=Yi;g=Ej(a,3);h=wj(a,4);J[b+104>>2]=0;J[b+108>>2]=0;J[b+96>>2]=0;J[b+100>>2]=0;J[b+88>>2]=0;J[b+92>>2]=0;J[b+80>>2]=0;J[b+84>>2]=0;J[b+72>>2]=0;J[b+76>>2]=0;c=b- -64|0;J[c>>2]=0;J[c+4>>2]=0;J[b+56>>2]=0;J[b+60>>2]=0;J[b+48>>2]=0;J[b+52>>2]=0;Sk(a,1,b+80|0,b+48|0);c=0;a:{if((e|0)<5){break a}c=0;if((kj(a,5)|0)!=6){break a}uj(a,5);c=Cu(a)+2|0}J[b+40>>2]=0;J[b+44>>2]=1065353216;J[b+32>>2]=g;J[b+24>>2]=d;J[b+28>>2]=f;N[b+36>>2]=h;d=J[59850];Jk(b+48|0,b+80|0,J[d+8>>2],J[d+12>>2],0,c,d,b+24|0,24,0);if(J[a+8>>2]-J[a+12>>2]>>4!=(e|0)){Z(143244,40569,204,4164);B()}Ui=b+112|0;return 0}function $v(a,b,c,d,e){var f=0,g=0,h=0,i=0,j=0,k=0;f=J[e>>2]+8|0;g=L[c>>1];j=L[(f+P(g,112)|0)+104>>1];e=L[b>>1];i=L[(P(e,112)+f|0)+104>>1];h=L[a>>1];k=P(h,112)+f|0;a:{if(i>>>0>=L[k+104>>1]){if(j>>>0>=i>>>0){e=g;break a}I[b>>1]=g;I[c>>1]=e;g=L[b>>1];h=L[a>>1];if(L[(P(g,112)+f|0)+104>>1]>=L[(P(h,112)+f|0)+104>>1]){break a}I[a>>1]=g;I[b>>1]=h;e=L[c>>1];break a}b:{if(j>>>0>>0){I[a>>1]=g;break b}I[a>>1]=e;I[b>>1]=h;e=L[c>>1];if(L[(P(e,112)+f|0)+104>>1]>=L[k+104>>1]){break a}I[b>>1]=e}I[c>>1]=h;e=h}g=L[d>>1];c:{if(L[(P(g,112)+f|0)+104>>1]>=L[(P(e,112)+f|0)+104>>1]){break c}I[c>>1]=g;I[d>>1]=e;d=L[c>>1];e=L[b>>1];if(L[(P(d,112)+f|0)+104>>1]>=L[(P(e,112)+f|0)+104>>1]){break c}I[b>>1]=d;I[c>>1]=e;c=L[b>>1];d=L[a>>1];if(L[(P(c,112)+f|0)+104>>1]>=L[(P(d,112)+f|0)+104>>1]){break c}I[a>>1]=c;I[b>>1]=d}}function Ova(a,b,c,d,e){a=a|0;b=b|0;c=c|0;d=d|0;e=e|0;var f=Q(0),g=Q(0),h=Q(0),i=Q(0),j=Q(0),k=Q(0),l=Q(0),m=Q(0),n=Q(0),o=Q(0),p=Q(0),q=Q(0),r=Q(0);f=N[d+4>>2];i=Q(N[c+12>>2]-f);k=N[d>>2];h=Q(N[c+8>>2]-k);g=N[d+12>>2];j=Q(N[c+4>>2]-f);f=N[d+8>>2];l=Q(N[c>>2]-k);k=Q(Q(g*j)-Q(f*l));p=Q(Q(Q(g*i)-Q(f*h))-k);l=Q(Q(g*l)+Q(j*f));q=Q(Q(Q(g*h)+Q(f*i))-l);m=N[a+24>>2];j=Q(N[a+32>>2]-m);i=Q(-j);d=0;n=N[a+28>>2];f=Q(N[a+36>>2]-n);o=Q(Q(f*f)+Q(j*j));g=Q(Y(o));a:{if(gN[c+16>>2]|o==Q(0)){break b}f=Q(Q(Q(Q(Q(l+Q(q*h))-m)*j)+Q(f*Q(Q(k+Q(p*h))-n)))/o);if(fQ(1)){break b}N[b+8>>2]=h;a=r>Q(0);N[b+4>>2]=a?Q(-i):i;N[b>>2]=a?Q(-g):g;d=1}return d|0}function uv(a,b,c){var d=0,e=0,f=0;a:{b:{c:{d:{d=J[b+140>>2];e=d&32767;f=J[a+1036>>2];if(e>>>0>2]-f>>2>>>0){if(J[(e<<2)+f>>2]!=(b|0)){break d}if(J[b+80>>2]!=(a|0)){break c}if(!(d&32768|K[a+3272|0]&2)){e:{if(!c){break e}c=L[b+150>>1]&32767;if((c|0)==32767){break e}while(1){d=J[a+1036>>2];if(J[a+1040>>2]-d>>2>>>0<=c>>>0){break a}c=J[d+(c<<2)>>2];if(L[c+138>>1]!=(J[b+140>>2]&32767)){break b}d=J[c+148>>2];uv(a,c,1);c=d&32767;if((c|0)!=32767){continue}break}d=J[b+140>>2]}J[b+140>>2]=d|32768;b=d&32767;c=L[a+3262>>1];f:{if((c|0)!=32767){d=J[a+1036>>2];if(c>>>0>=J[a+1040>>2]-d>>2>>>0){break a}I[J[d+(c<<2)>>2]+144>>1]=b;break f}I[a+3260>>1]=b}I[a+3262>>1]=b}return}break a}Z(70199,38296,1894,61302);B()}Z(45886,38296,1895,61302);B()}Z(5671,38296,1913,61302);B()}Z(145396,53895,487,84789);B()}function tL(a,b,c,d,e,f,g){var h=0,i=0,j=0,k=0,l=0,m=0,n=0;l=Ui-16|0;Ui=l;a:{if(!(b|c)){break a}i=J[a+112>>2];j=J[a+116>>2];J[f>>2]=-1;if((i|0)==(j|0)){break a}i=(j-i|0)/40|0;m=i>>>0<=1?1:i;j=0;b:{c:{d:{e:{while(1){i=J[a+112>>2];if((J[a+116>>2]-i|0)/40>>>0<=j>>>0){break d}h=i+P(j,40)|0;k=J[h>>2];i=J[k+8>>2];k=J[k+12>>2];J[l+12>>2]=L[J[h>>2]+32>>1];n=h+8|0;if((b|0)==(i|0)&(c|0)==(k|0)){break e}if(J[h+8>>2]==(b|0)&J[h+12>>2]==(c|0)){h=0;break c}if(J[h+16>>2]==(b|0)&J[h+20>>2]==(c|0)){h=1;break c}if(J[h+24>>2]==(b|0)&J[h+28>>2]==(c|0)){h=2;break c}if(J[h+32>>2]==(b|0)&J[h+36>>2]==(c|0)){h=3;break c}j=j+1|0;if((m|0)!=(j|0)){continue}break}h=0;break a}J[e>>2]=n;J[d>>2]=b;J[d+4>>2]=c;break b}Z(145396,53895,487,84789);B()}J[d>>2]=i;J[d+4>>2]=k;J[f>>2]=h}I[g>>1]=J[l+12>>2];h=1}Ui=l+16|0;return h}function hR(a,b,c,d,e,f,g){var h=0,i=0,j=0,k=0,l=Q(0);j=Ui-80|0;Ui=j;a:{b:{if((c|0)==3){c=J[d+4>>2];J[g>>2]=J[d>>2];J[g+4>>2]=c;h=16;c=8;break b}if((c&-2)!=4){break a}c=J[d+4>>2];J[g>>2]=J[d>>2];J[g+4>>2]=c;c=J[d+12>>2];J[g+8>>2]=J[d+8>>2];J[g+12>>2]=c;h=24;c=16}i=g+c|0;c=c+d|0;k=J[c+4>>2];J[i>>2]=J[c>>2];J[i+4>>2]=k;c=g+h|0;d=d+h|0;h=J[d+4>>2];J[c>>2]=J[d>>2];J[c+4>>2]=h}d=J[J[a>>2]>>2];i=J[d+8>>2]-J[d+12>>2]>>4;Bj(d);c=-1;h=kj(d,-1);gj(d,-2);if(!h){Nj(d,-1e4,J[a+12>>2]);Ok(d)}Nj(d,-1e4,J[a+16>>2]);xj(d,b);Ll(d,-2);c:{if(!kj(d,-1)){break c}b=g+32|0;c=it(d,-1,b);if(c|!e){break c}l=N[((f<<2)+g|0)+40>>2];a=j+8|0;J[a>>2]=0;O[a+8>>3]=l;hj(b,a,72);c=0}gj(d,-3);if(!h){a=J[d+8>>2];J[a+8>>2]=0;J[d+8>>2]=a+16;Ok(d)}if(J[d+8>>2]-J[d+12>>2]>>4!=(i|0)){Z(42939,37648,973,10556);B()}Ui=j+80|0;return c}function Nia(a){a=a|0;var b=0,c=0,d=0,e=0;a=J[a+4>>2];b=J[a>>2];if((b|0)!=J[a+4>>2]){while(1){b=P(c,40)+b|0;vj(J[J[a+80>>2]>>2],J[b+20>>2]);Xu(J[a+84>>2],J[b+16>>2]);c=c+1|0;b=J[a>>2];if(c>>>0<(J[a+4>>2]-b|0)/40>>>0){continue}break}}b=J[a+32>>2];d=J[a+36>>2];if((b|0)!=(d|0)){c=0;while(1){e=J[(c<<2)+b>>2];if(e){Jx(e);d=J[a+36>>2];b=J[a+32>>2]}c=c+1|0;if(c>>>0>2>>>0){continue}break}}zM(J[a+84>>2]);bm(J[a+88>>2]);a:{if(H[a+104|0]&1){break a}b=J[a+92>>2];if(!b){break a}cj(b)}b:{if(H[a+76|0]&1){break b}b=J[a+64>>2];if(!b){break b}cj(b)}c:{if(H[a+60|0]&1){break c}b=J[a+48>>2];if(!b){break c}cj(b)}d:{if(H[a+44|0]&1){break d}b=J[a+32>>2];if(!b){break d}cj(b)}e:{if(H[a+28|0]&1){break e}b=J[a+16>>2];if(!b){break e}cj(b)}f:{if(H[a+12|0]&1){break f}b=J[a>>2];if(!b){break f}cj(b)}cj(a);return 0} +function HR(a,b){var c=0,d=0,e=0,f=0,g=0,h=0,i=0,j=0,k=0,l=0,m=0,n=0,o=0;d=Ui-32|0;Ui=d;g=1;a:{b:{c:{d:{if(!b){break d}J[b+148>>2]=J[b+148>>2]&-32769;c=J[b+140>>2];if(c&32768){break d}c=c&32767;f=J[a+1036>>2];if(c>>>0>=J[a+1040>>2]-f>>2>>>0){break c}if(J[f+(c<<2)>>2]!=(b|0)){break b}h=J[b+84>>2];e=J[h+4>>2];if(!e){break d}n=a+12|0;o=b+156|0;c=0;while(1){k=J[h>>2]+P(i,96)|0;j=J[k+16>>2];l=J[j+100>>2];f=((l&65536)>>>16|0)+c|0;if(f>>>0>M[b+152>>2]){break a}m=J[j+44>>2];if(m){e=J[a+8>>2];J[d+16>>2]=b;J[d+12>>2]=e;J[d+20>>2]=J[(J[k+20>>2]<<2)+n>>2];e=J[j+16>>2];J[d+28>>2]=(c<<2)+o&l<<15>>31;J[d+24>>2]=e;g=!(Zi[m|0](d+12|0)|0)&g;e=J[h+4>>2]}c=f;i=i+1|0;if(i>>>0>>0){continue}break}}Ui=d+32|0;return g}Z(145396,53895,487,84789);B()}Z(70199,38296,1076,62150);B()}Z(12526,38296,1090,62150);B()}function Qca(a){a=a|0;var b=0,c=Q(0),d=0,e=0,f=Q(0),g=0,h=0,i=0,j=0;b=Ui-112|0;Ui=b;g=pj(b+92|0,a,0,41350,501);d=J[a+8>>2]-J[a+12>>2]>>4;pk(a);h=mk(a,2);i=Yi;J[b+80>>2]=0;J[b+84>>2]=0;J[b+72>>2]=0;J[b+76>>2]=0;e=b- -64|0;J[e>>2]=0;J[e+4>>2]=0;J[b+56>>2]=0;J[b+60>>2]=0;J[b+48>>2]=0;J[b+52>>2]=0;J[b+40>>2]=0;J[b+44>>2]=0;J[b+32>>2]=0;J[b+36>>2]=0;J[b+24>>2]=0;J[b+28>>2]=0;Sk(a,1,b+56|0,b+24|0);a:{b:{if((d|0)>=4){Oj(a,4,5);uj(a,4);rj(a,-1,15035);if(kj(a,-1)){f=Q(wj(a,-1))}else{f=Q(0)}gj(a,-2);rj(a,-1,61778);if(kj(a,-1)){c=Q(wj(a,-1))}else{c=Q(1)}gj(a,-2);gj(a,-2);break b}c=Q(1);if((d|0)!=3){break a}}if((kj(a,3)|0)!=6){break a}uj(a,3);j=Cu(a)+2|0}N[b+20>>2]=c;N[b+16>>2]=f;J[b+8>>2]=h;J[b+12>>2]=i;a=J[58902];Jk(b+24|0,b+56|0,J[a+8>>2],J[a+12>>2],0,j,a,b+8|0,16,0);oj(g);Ui=b+112|0;return 0}function $ma(a){a=a|0;var b=0,c=0,d=0,e=0,f=0;b=Ui-32|0;Ui=b;c=J[J[a+36>>2]+8>>2];J[b+28>>2]=0;d=-13;a:{if(dk(J[a+20>>2],J[a+24>>2],J[55330],b+28|0,0)){break a}ht(J[b+28>>2]);if(!Jq(J[a>>2],J[a+4>>2],J[b+28>>2])){Uj(J[b+28>>2]);break a}f=J[c+44>>2];e=J[b+28>>2];J[c+44>>2]=e;if(AR(J[c>>2],e,c)){J[b+16>>2]=0;J[b+20>>2]=0;J[b+8>>2]=0;J[b+12>>2]=0;d=J[b+28>>2];if(!Ky(J[a>>2],J[d+140>>2],J[d+144>>2],b+8|0)){Iq(J[a>>2],c+52|0);d=J[b+8>>2];J[b+8>>2]=J[c+52>>2];J[c+52>>2]=d;d=J[b+12>>2];J[b+12>>2]=J[c+56>>2];J[c+56>>2]=d;d=J[b+16>>2];J[b+16>>2]=J[c+60>>2];J[c+60>>2]=d;d=K[c+64|0];e=K[b+20|0];H[b+20|0]=d&1|e&254;H[c+64|0]=d&254|e&1}Uj(f);J[J[a+36>>2]+16>>2]=J[a+24>>2]-J[J[c+44>>2]+4>>2];b:{if(H[b+20|0]&1){break b}a=J[b+8>>2];if(!a){break b}cj(a)}d=0;break a}Uj(J[b+28>>2])}Ui=b+32|0;return d|0}function kI(a){var b=0,c=0,d=0,e=0;b=J[a+16>>2];if(M[b+68>>2]>=M[b+64>>2]){Om(a)}b=lk(a,0,0,120);ss(a,b,8);c=J[a+16>>2];J[b+32>>2]=0;J[b+16>>2]=c;J[b+68>>2]=0;J[b+104>>2]=0;J[b+60>>2]=0;J[b+64>>2]=0;I[b+56>>1]=256;J[b+40>>2]=0;J[b+44>>2]=0;H[b+6|0]=0;J[b+112>>2]=0;J[b+116>>2]=0;J[b+20>>2]=0;J[b+24>>2]=0;J[b+80>>2]=0;J[b+48>>2]=0;J[b+52>>2]=0;c=lk(a,0,0,192);J[b+48>>2]=8;J[b+20>>2]=c;J[b+40>>2]=c;J[b+36>>2]=c+168;c=lk(a,0,0,720);J[b+44>>2]=45;J[b+32>>2]=c;J[b+28>>2]=c+624;d=J[b+20>>2];J[d+4>>2]=c;e=c+16|0;J[b+8>>2]=e;J[c+8>>2]=0;J[d>>2]=e;J[b+12>>2]=e;J[d+8>>2]=c+336;c=J[a+76>>2];J[b+72>>2]=J[a+72>>2];J[b+76>>2]=c;J[b+80>>2]=J[a+80>>2];H[b+56|0]=K[a+56|0];c=J[a+60>>2];J[b+60>>2]=c;d=J[a+68>>2];J[b+64>>2]=c;J[b+68>>2]=d;c=J[a+8>>2];J[c+8>>2]=8;J[c>>2]=b;J[a+8>>2]=J[a+8>>2]+16;return b}function Sp(a,b,c,d){var e=0,f=0,g=0,h=0;a:{b:{c:{d:{h=J[a+16>>2];g=J[a+8>>2];if(J[a+24>>2]!=((h-g|0)/968|0)){e=J[a+4>>2];e:{if(!e){break e}f=J[J[a>>2]+(mxa(b,c,e)<<2)>>2];if((f|0)==-1){break e}while(1){e=g+P(f,968)|0;if(J[e>>2]==(b|0)&(c|0)==J[e+4>>2]){break d}f=J[e+960>>2];if((f|0)!=-1){continue}break}}e=J[a+12>>2];f:{if((h|0)!=(e|0)){J[a+12>>2]=e+968;break f}e=J[a+20>>2];if((e|0)==-1){break c}e=g+P(e,968)|0;J[a+20>>2]=J[e+960>>2]}J[e>>2]=b;J[e+4>>2]=c;hj(e+8|0,d,952);J[e+960>>2]=-1;d=J[a+8>>2];b=J[a>>2]+(mxa(b,c,J[a+4>>2])<<2)|0;f=J[b>>2];if((f|0)==-1){break b}while(1){b=d+P(f,968)|0;f=J[b+960>>2];if((f|0)!=-1){continue}break}J[b+960>>2]=(e-d|0)/968;break a}Z(144851,55629,229,9606);B()}hj(e+8|0,d,952);return}Z(152203,55629,537,2838);B()}J[b>>2]=(e-d|0)/968}J[a+24>>2]=J[a+24>>2]+1}function MD(a,b,c){var d=0,e=0,f=0,g=0,h=0,i=0,j=0,k=0,l=0,m=0,n=0,o=0,p=0;f=J[b+128>>2];a:{b:{d=J[b+208>>2];if(!d){d=J[f+28>>2];if((J[f+32>>2]-d|0)/24>>>0<=c>>>0){break b}d=J[(d+P(c,24)|0)+4>>2]}h=J[d+104>>2];if(h){l=a+176|0;m=d+4|0;n=d+40|0;o=b+176|0;d=0;while(1){e=d<<3;i=l+e|0;c:{d:{j=d<<2;b=J[j+o>>2];if(b){break d}a=J[f+28>>2];if((J[f+32>>2]-a|0)/24>>>0<=c>>>0){break a}e:{f:{b=a+P(c,24)|0;k=J[b+20>>2];if(!k){break f}e=e+n|0;a=J[e>>2];e=J[e+4>>2];p=J[b+16>>2];b=0;while(1){g=(b<<4)+p|0;if(J[g>>2]!=(a|0)|J[g+4>>2]!=(e|0)){b=b+1|0;if((k|0)!=(b|0)){continue}break f}break}a=g+8|0;break e}a=m+j|0}b=J[a>>2];if(b){break d}a=0;b=0;break c}a=J[b>>2];b=J[b+4>>2]}J[i>>2]=a;J[i+4>>2]=b;d=d+1|0;if((h|0)!=(d|0)){continue}break}}return}Z(145396,53895,494,84789);B()}Z(145396,53895,487,84789);B()}function as(a,b){var c=0,d=0,e=0,f=0,g=0,h=0,i=0,j=0,k=0,l=0,m=0,n=0,o=0,p=0,q=0;J[a>>2]=0;J[a+4>>2]=0;J[a+8>>2]=0;J[a+12>>2]=0;J[a+208>>2]=b;a:{if(!b){c=528734635;d=725511199;e=-1694144372;f=-1377402159;g=1359893119;h=1595750129;i=-1521486534;j=-23791573;k=1013904242;l=-2067093701;m=-1150833019;n=-205731576;o=1779033703;p=327033209;q=1541459225;b=-79577749;break a}c=-619958771;d=1750603025;e=-1900787065;f=-4191439;g=1731405415;h=-150054599;i=355462360;j=812702999;k=-1856437926;l=914150663;m=1654270250;n=-1056596264;o=-876896931;p=-1090891868;q=1203062813;b=1694076839}J[a+72>>2]=p;J[a+76>>2]=q;J[a+64>>2]=b;J[a+68>>2]=c;J[a+56>>2]=d;J[a+60>>2]=e;J[a+48>>2]=f;J[a+52>>2]=g;J[a+40>>2]=h;J[a+44>>2]=i;J[a+32>>2]=j;J[a+36>>2]=k;J[a+24>>2]=l;J[a+28>>2]=m;J[a+16>>2]=n;J[a+20>>2]=o;return 0}function Kra(a,b,c){a=a|0;b=b|0;c=c|0;var d=0,e=0,f=0,g=0,h=0,i=0,j=0,k=0,l=0;d=J[a+184>>2];a:{if((d|0)!=J[a+188>>2]){break a}i=d?d<<1:1;if((i|0)<=(d|0)){break a}if(i){g=Yj(i<<2);d=J[a+184>>2]}b:{if((d|0)<=0){break b}if(d>>>0>=4){j=d&2147483644;while(1){e=f<<2;J[e+g>>2]=J[e+J[a+192>>2]>>2];h=e|4;J[h+g>>2]=J[h+J[a+192>>2]>>2];h=e|8;J[h+g>>2]=J[h+J[a+192>>2]>>2];e=e|12;J[e+g>>2]=J[e+J[a+192>>2]>>2];f=f+4|0;k=k+4|0;if((j|0)!=(k|0)){continue}break}}e=d&3;if(!e){break b}while(1){j=f<<2;J[j+g>>2]=J[j+J[a+192>>2]>>2];f=f+1|0;l=l+1|0;if((e|0)!=(l|0)){continue}break}}f=J[a+192>>2];if(!(!f|K[a+196|0]!=1)){if(f){J[83765]=J[83765]+1;Zi[J[61751]](J[f-4>>2])}d=J[a+184>>2]}J[a+192>>2]=g;H[a+196|0]=1;J[a+188>>2]=i}J[J[a+192>>2]+(d<<2)>>2]=b;J[a+184>>2]=d+1;if(c){gT(J[b+20>>2],b);gT(J[b+24>>2],b)}}function YR(a,b){var c=0,d=0,e=0,f=0;c=Ui-16|0;Ui=c;d=2;a:{b:{switch(b|0){case 0:d=lE(a,c+8|0)?0:2;break a;case 5:b=J[a+8>>2];d=J[a+4>>2]-b|0;if((d|0)>=4){H[c+8|0]=K[b|0];H[c+9|0]=K[J[a+8>>2]+1|0];H[c+10|0]=K[J[a+8>>2]+2|0];H[c+11|0]=K[J[a+8>>2]+3|0];J[a+8>>2]=J[a+8>>2]+4}d=(d|0)<=3?2:0;break a;case 1:b=J[a+8>>2];d=J[a+4>>2]-b|0;if((d|0)>=8){H[c+8|0]=K[b|0];H[c+9|0]=K[J[a+8>>2]+1|0];H[c+10|0]=K[J[a+8>>2]+2|0];H[c+11|0]=K[J[a+8>>2]+3|0];H[c+12|0]=K[J[a+8>>2]+4|0];H[c+13|0]=K[J[a+8>>2]+5|0];H[c+14|0]=K[J[a+8>>2]+6|0];H[c+15|0]=K[J[a+8>>2]+7|0];J[a+8>>2]=J[a+8>>2]+8}d=(d|0)<=7?2:0;break a;case 2:break b;default:break a}}if(!Dr(a,c+8|0)){break a}b=J[c+8>>2];d=J[a+4>>2];e=J[a+8>>2];if(d>>>0>>0){Z(71496,39940,45,43309);B()}f=a;a=b+e|0;J[f+8>>2]=a;d=a>>>0>d>>>0?2:0}Ui=c+16|0;return d}function MM(a){a=a|0;var b=0,c=0,d=0,e=0,f=0,g=0,h=0,i=0,j=0;d=Ui-32|0;Ui=d;h=pj(d+12|0,a,0,41468,225);c=J[a+8>>2]-J[a+12>>2]>>4;e=Aj(a,1,0);g=$m(a,2);a:{if((c|0)<3){break a}if(!kj(a,3)){break a}Oj(a,3,5);uj(a,3);c=J[a+8>>2];J[c+8>>2]=0;J[a+8>>2]=c+16;if($j(a,-2)){while(1){if(!jj(Ij(a,-2,0),3546)){ck(a,-1)}gj(a,-2);if($j(a,-2)){continue}break}}gj(a,-2)}i=J[71977];j=J[49085];f=Ui-16|0;Ui=f;a=-12;b:{if(K[981584]!=1){break b}if(!_k(e)){J[f>>2]=e;dj(4,95071,149193,f);a=-3;break b}c=J[245392];if(!c){dj(4,95071,74996,0);a=-11;break b}b=nj(28);J[b+24>>2]=0;a=J[245394];J[b+20>>2]=j;J[b>>2]=a;J[b+8>>2]=Gk(i);a=Gk(e);H[b+24|0]=1;J[b+16>>2]=g;J[b+12>>2]=2484;J[b+4>>2]=a;Qp(c,2475,2476,980536,b);a=0}Ui=f+16|0;if(a){J[d+4>>2]=EC(a);J[d>>2]=e;dj(4,95071,30397,d);Fl(g)}oj(h);Ui=d+32|0;return 0}function U6(a,b,c){a=a|0;b=b|0;c=c|0;var d=Q(0),e=0,f=Q(0),g=Q(0),h=Q(0),i=Q(0),j=Q(0),k=Q(0),l=Q(0),m=Q(0),n=Q(0),o=Q(0),p=Q(0);d=Q(1);e=J[b>>2];if(!(J[e+236>>2]==J[a+84>>2]|K[e+204|0]&4)){d=N[b+24>>2];J[a+8>>2]=e;N[a+4>>2]=d;a:{if(c){c=J[b+12>>2];J[a+52>>2]=J[b+8>>2];J[a+56>>2]=c;c=J[b+20>>2];J[a+60>>2]=J[b+16>>2];J[a+64>>2]=c;break a}h=N[e+12>>2];i=N[e+4>>2];j=N[e+8>>2];k=N[e+28>>2];l=N[e+20>>2];m=N[e+24>>2];n=N[e+44>>2];d=N[b+16>>2];o=N[e+36>>2];f=N[b+8>>2];p=N[e+40>>2];g=N[b+12>>2];J[a+64>>2]=0;N[a+60>>2]=Q(n*d)+Q(Q(o*f)+Q(g*p));N[a+56>>2]=Q(k*d)+Q(Q(l*f)+Q(g*m));N[a+52>>2]=Q(h*d)+Q(Q(i*f)+Q(j*g))}d=N[b+24>>2];f=Q(Q(1)-d);N[a+68>>2]=Q(f*N[a+20>>2])+Q(d*N[a+36>>2]);N[a+72>>2]=Q(f*N[a+24>>2])+Q(d*N[a+40>>2]);N[a+76>>2]=Q(f*N[a+28>>2])+Q(d*N[a+44>>2]);d=N[b+24>>2]}return Q(d)}function c9(a){a=a|0;var b=0,c=0,d=0,e=0,f=0,g=0,h=0,i=0;f=Ui-16|0;Ui=f;c=f+12|0;d=Qj(a,1,c);if(kj(a,2)){c=Qj(a,2,c);e=L[c+650>>1]|L[c+648>>1]<<16}Bj(a);c=qj(a,-1,J[219396],139183);gj(a,-2);a:{a=L[d+650>>1]|L[d+648>>1]<<16;if(!a|(a|0)==(e|0)){break a}b:{b=a&65535;d=J[c+32>>2];if(b>>>0>=(J[c+36>>2]-d|0)/672>>>0){break b}c:{d=d+P(b,672)|0;if(L[d+648>>1]==(a>>>16|0)){if((b|0)!=L[d+650>>1]){break c}dv(c,d);d:{if(!e){break d}b=e&65535;a=J[c+32>>2];e=(J[c+36>>2]-a|0)/672|0;if(b>>>0>=e>>>0){break b}g=a+P(b,672)|0;b=L[g+652>>1];if((b|0)!=65535){if(b>>>0>=e>>>0){break b}h=a+P(b,672)|0}b=L[g+656>>1];if((b|0)==65535){break d}if(b>>>0>=e>>>0){break b}i=a+P(b,672)|0}sD(c,d,i,h);break a}Z(47372,40876,188,69601);B()}Z(5388,40876,189,69601);B()}Z(145396,53895,487,84789);B()}Ui=f+16|0;return 0}function Wwa(a){a=a|0;var b=0,c=0,d=0,e=0;d=Ui-16|0;Ui=d;if(K[287904]==1){J[223734]=57005;J[223735]=0;b=a;a=yj(a);Pz(895200,b,a>>>0>=32767?32767:a);b=J[245132];if(b){a=yj(895200);Zi[b|0](J[245133],a+895200|0,32767-a|0)}b=Ui-32|0;Ui=b;e=K[269788];H[269788]=1;J[b+16>>2]=420;c=Ui-16|0;Ui=c;J[c+12>>2]=b+20;J[c>>2]=J[b+16>>2];J[c+4>>2]=0;a=Wa(-100,978352,33345,c|0)|0;if(a>>>0>=4294963201){J[245744]=0-a;a=-1}Ui=c+16|0;a:{if((a|0)!=-1){J[b+24>>2]=2;J[b+28>>2]=50376;if((Dz(a,b+24|0,8)|0)==8){if((Dz(a,877592,50376)|0)==50376){J[b>>2]=978352;dj(2,93475,29719,b);pt(a);break a}dj(4,93475,115223,0);pt(a);Nz(978352);break a}dj(4,93475,119806,0);pt(a);Nz(978352);break a}dj(4,93475,125273,0)}H[269788]=e;Ui=b+32|0;a=K[269788];H[269788]=1;J[d>>2]=895200;dj(4,93475,96961,d);H[269788]=a}Ui=d+16|0}function JG(a,b,c){var d=0,e=0,f=0,g=0,h=0,i=0,j=0;a:{if(!c){c=173648;J[b+16>>2]=173648;break a}c=QA(c-1|0);f=c+1|0;b:{c:{d:{if((c|0)<=25){if(f>>>0<27){break d}a=Dl(a);break c}xl(a,6542,0);c=Dl(a);J[b+16>>2]=c;g=-2147483648;if((f|0)==31){break a}a=b+16|0;break b}a=lk(a,0,0,32<>2]=a;a=b+16|0}g=1<>>0>=2){j=g&-4;while(1){e=c<<5;d=e+J[a>>2]|0;J[d+24>>2]=0;J[d+28>>2]=0;J[d+8>>2]=0;d=e+J[a>>2]|0;J[d+56>>2]=0;J[d+60>>2]=0;J[d+40>>2]=0;d=e+J[a>>2]|0;J[d+88>>2]=0;J[d+92>>2]=0;J[d+72>>2]=0;e=e+J[a>>2]|0;J[e+120>>2]=0;J[e+124>>2]=0;J[e+104>>2]=0;c=c+4|0;h=h+4|0;if((j|0)!=(h|0)){continue}break}}if(f>>>0<=1){d=g&3;while(1){e=J[a>>2]+(c<<5)|0;J[e+24>>2]=0;J[e+28>>2]=0;J[e+8>>2]=0;c=c+1|0;i=i+1|0;if((d|0)!=(i|0)){continue}break}}c=J[a>>2]}H[b+7|0]=f;J[b+20>>2]=(g<<5)+c}function G3(a){a=a|0;var b=0,c=Q(0),d=Q(0),e=Q(0),f=0,g=Q(0),h=Q(0),i=Q(0),j=Q(0),k=Q(0),l=Q(0),m=Q(0),n=Q(0);f=Ui-48|0;Ui=f;b=qj(a,1,J[215722],0);g=N[b+8>>2];c=N[b>>2];e=N[b+4>>2];a:{if(!(c!=c|e!=e|g!=g)){d=N[b+12>>2];if(d==d){break a}}d=N[b+12>>2];O[f+24>>3]=g;O[f+16>>3]=e;O[f+32>>3]=d;O[f+8>>3]=c;J[f>>2]=1;fj(a,138526,f);d=N[b+12>>2];g=N[b+8>>2];e=N[b+4>>2];c=N[b>>2]}b=Sj(a,64);J[b+44>>2]=0;J[b+48>>2]=0;J[b+28>>2]=0;J[b+12>>2]=0;J[b+60>>2]=1065353216;J[b+52>>2]=0;J[b+56>>2]=0;i=Q(g+g);h=Q(e*i);k=Q(c+c);l=Q(k*d);N[b+36>>2]=h-l;m=Q(c*i);j=Q(e+e);n=Q(j*d);N[b+32>>2]=m+n;N[b+24>>2]=h+l;h=Q(c*j);d=Q(d*i);N[b+16>>2]=h-d;N[b+8>>2]=m-n;N[b+4>>2]=h+d;c=Q(Q(1)-Q(c*k));e=Q(e*j);N[b+40>>2]=c-e;d=c;c=Q(g*i);N[b+20>>2]=d-c;N[b>>2]=Q(Q(1)-e)-c;rj(a,-1e4,106883);Mj(a,-2);Ui=f+48|0;return 1}function Cwa(a,b,c){a=a|0;b=b|0;c=c|0;var d=0,e=0,f=0,g=0,h=0,i=0,j=0;f=Ui-32|0;Ui=f;d=J[a+28>>2];J[f+16>>2]=d;g=J[a+20>>2];J[f+28>>2]=c;J[f+24>>2]=b;b=g-d|0;J[f+20>>2]=b;g=b+c|0;i=2;a:{b:{b=f+16|0;d=Ua(J[a+60>>2],b|0,2,f+12|0)|0;if(d){J[245744]=d;d=-1}else{d=0}c:{d:{if(d){d=b;break d}while(1){e=J[f+12>>2];if((e|0)==(g|0)){break c}if((e|0)<0){d=b;break b}h=J[b+4>>2];j=h>>>0>>0;d=(j<<3)+b|0;h=e-(j?h:0)|0;J[d>>2]=h+J[d>>2];b=(j?12:4)+b|0;J[b>>2]=J[b>>2]-h;g=g-e|0;b=d;i=i-j|0;e=Ua(J[a+60>>2],b|0,i|0,f+12|0)|0;if(e){J[245744]=e;e=-1}else{e=0}if(!e){continue}break}}if((g|0)!=-1){break b}}b=J[a+44>>2];J[a+28>>2]=b;J[a+20>>2]=b;J[a+16>>2]=b+J[a+48>>2];a=c;break a}J[a+28>>2]=0;J[a+16>>2]=0;J[a+20>>2]=0;J[a>>2]=J[a>>2]|32;a=0;if((i|0)==2){break a}a=c-J[d+4>>2]|0}Ui=f+32|0;return a|0}function uha(a,b,c,d,e,f){a=a|0;b=b|0;c=c|0;d=d|0;e=e|0;f=f|0;var g=0,h=0,i=0;a:{g=J[b+60>>2];b:{if(!g){break b}g=J[J[b+56>>2]+((a>>>0)%(g>>>0)<<2)>>2];if((g|0)==-1){break b}h=J[b+64>>2];while(1){g=h+P(g,12)|0;if(J[g>>2]==(a|0)){break a}g=J[g+8>>2];if((g|0)!=-1){continue}break}}h=0;g=J[b+28>>2];c:{if(!g){break c}g=J[J[b+24>>2]+((a>>>0)%(g>>>0)<<2)>>2];if((g|0)==-1){break c}i=J[b+32>>2];while(1){g=P(g,12)+i|0;if(J[g>>2]!=(a|0)){g=J[g+8>>2];if((g|0)!=-1){continue}break c}break}a=J[g+4>>2];g=J[J[J[b+16>>2]>>2]+20>>2]+J[a+32>>2]|0;h=K[g|0];J[c>>2]=J[a+40>>2]-1;J[e>>2]=J[a+4>>2]+(J[b+20>>2]<<1);J[f>>2]=(J[a+20>>2]+J[a+16>>2]|0)+(J[b+20>>2]<<1);J[d>>2]=h;h=g+1|0}return h|0}a=J[g+4>>2];J[e>>2]=L[a+54>>1];J[f>>2]=L[a+56>>1];J[d>>2]=K[a+58|0];J[c>>2]=L[a+52>>1]-1;return J[a+48>>2]+1|0}function AG(a){var b=0,c=0;a:{b=J[a+68>>2];if(!b){break a}c=J[b+580>>2];if(c){J[b+524>>2]=J[b+524>>2]-J[b+584>>2];cj(c);J[b+580>>2]=0;b=J[a+68>>2]}if(H[b+532|0]&1){c=J[b+540>>2];J[b+524>>2]=J[b+524>>2]-c;Zi[J[66509]](J[b+536>>2],0,c)|0;cj(J[b+536>>2]);J[b+540>>2]=0;J[b+532>>2]=0;J[b+536>>2]=0;b=J[a+68>>2]}if(H[b+544|0]&1){c=J[b+552>>2];J[b+524>>2]=J[b+524>>2]-c;Zi[J[66509]](J[b+548>>2],0,c)|0;cj(J[b+548>>2]);J[b+552>>2]=0;J[b+544>>2]=0;J[b+548>>2]=0;b=J[a+68>>2]}if(H[b+556|0]&1){c=J[b+564>>2];J[b+524>>2]=J[b+524>>2]-c;Zi[J[66509]](J[b+560>>2],0,c)|0;cj(J[b+560>>2]);J[b+564>>2]=0;J[b+556>>2]=0;J[b+560>>2]=0;b=J[a+68>>2]}if(!(H[b+568|0]&1)){break a}a=J[b+576>>2];J[b+524>>2]=J[b+524>>2]-a;Zi[J[66509]](J[b+572>>2],0,a)|0;cj(J[b+572>>2]);J[b+576>>2]=0;J[b+568>>2]=0;J[b+572>>2]=0}}function ns(a,b,c){var d=0,e=0;d=J[a+16>>2];e=-1;a:{b:{switch(b|0){case 0:J[d+64>>2]=-3;return 0;case 1:J[d+64>>2]=J[d+68>>2];return 0;case 2:b=J[a+16>>2];c=K[b+21|0];c:{d:{if(c>>>0<=1){J[b+44>>2]=0;J[b+36>>2]=0;J[b+40>>2]=0;J[b+24>>2]=0;H[b+21|0]=2;J[b+32>>2]=b+28;break d}if((c|0)==4){break c}}while(1){Wz(a);if(K[b+21|0]!=4){continue}break}}gI(a);if(K[b+21|0]){while(1){Wz(a);if(K[b+21|0]){continue}break}}J[b+64>>2]=P(J[b+80>>2],M[b+72>>2]/100|0);return 0;case 3:return J[d+68>>2]>>>10|0;case 4:return J[d+68>>2]&1023;case 5:e=0;b=J[d+68>>2];c=b-(c<<10)|0;J[d+64>>2]=b>>>0>=c>>>0?c:0;while(1){if(M[d+64>>2]>M[d+68>>2]){break a}Om(a);if(K[d+21|0]){continue}break};return 1;case 6:a=J[d+80>>2];J[d+80>>2]=c;return a;case 7:break b;default:break a}}e=J[d+84>>2];J[d+84>>2]=c}return e}function N$(a){a=a|0;var b=0,c=0,d=0,e=0,f=0,g=0,h=0,i=0;b=Ui-336|0;Ui=b;d=mm(a,1,0,0);e=mm(a,2,0,0);if(!(d|e)){fj(a,49692,0)}J[b+24>>2]=0;J[b+28>>2]=0;J[b+40>>2]=0;J[b+44>>2]=0;J[b+32>>2]=0;J[b+36>>2]=0;J[b+24>>2]=1;J[b+16>>2]=0;J[b+20>>2]=0;c=pa(d|0,e|0,b+16|0,b+12|0)|0;a:{b:{if(c){d=J[a+8>>2];J[d+8>>2]=0;J[a+8>>2]=d+16;xj(a,Mt(c));break b}Fj(a,0,0);c=J[b+12>>2];c:{if(!c){break c}f=d?255:0;g=((e|0)!=0)<<5;if(d){d=1;while(1){h=b+80|0;ka(J[c+20>>2],J[c+16>>2],h|0,f|0,b+48|0,g|0,0)|0;i=J[a+8>>2];J[i+8>>2]=3;O[i>>3]=d>>>0;J[a+8>>2]=J[a+8>>2]+16;xj(a,h);Kj(a,-3);d=d+1|0;c=J[c+28>>2];if(c){continue}break}break c}while(1){ka(J[c+20>>2],J[c+16>>2],b+80|0,f|0,b+48|0,g|0,0)|0;c=J[c+28>>2];if(c){continue}break}}Ip(J[b+12>>2]);c=1;if(!e){break a}xj(a,b+48|0)}c=2}Ui=b+336|0;return c|0}function Vm(a,b,c){var d=0,e=0,f=0,g=0;a:{b:{c:{e=J[a+4>>2];d=(c>>>2|0)+((c&3)!=0)|0;d:{if((e|0)!=(d|0)){f=J[a+8>>2];if(f){Zi[J[66509]](f,0,e<<2)|0;cj(J[a+8>>2])}J[a+8>>2]=0;J[a>>2]=1;J[a+4>>2]=0;f=-16;if(d>>>0>1e4){break a}if(!d){break c}e=Zj(d,4);if(!e){break a}J[a+8>>2]=e;J[a+4>>2]=d;break d}if(!d){break c}}e=J[a+8>>2];g=d<<2;break b}e=Zj(1,4);if(!e){return-16}f=J[a+8>>2];if(f){Zi[J[66509]](f,0,0)|0;cj(J[a+8>>2])}J[a+8>>2]=e;J[a+4>>2]=1;g=4}f=0;ij(e,0,g);e=J[a+8>>2];J[e>>2]=0;J[a>>2]=1;if(!b){break a}g=d<<2;hj(e+(g-c|0)|0,b,c);if(!d){break a}c=J[a+8>>2];a=(g+c|0)-4|0;if(a>>>0>>0){break a}while(1){b=J[c>>2];d=J[a>>2];J[c>>2]=d<<24|(d&65280)<<8|(d>>>8&65280|d>>>24);J[a>>2]=b<<24|(b&65280)<<8|(b>>>8&65280|b>>>24);a=a-4|0;c=c+4|0;if(a>>>0>=c>>>0){continue}break}}return f}function Uk(a){var b=0,c=0,d=0,e=0,f=0,g=0,h=0,i=0,j=0;b=J[a+112>>2];d=J[a+116>>2];i=(b|d)!=0;h=b;e=J[a+4>>2];f=J[a+44>>2];b=e-f|0;g=b;c=b+J[a+120>>2]|0;b=J[a+124>>2]+(b>>31)|0;a:{b=c>>>0>>0?b+1|0:b;if(!(((b|0)>=(d|0)&c>>>0>=h>>>0|(b|0)>(d|0))&i)){i=yz(a);if((i|0)>=0){break a}e=J[a+4>>2];f=J[a+44>>2]}J[a+112>>2]=-1;J[a+116>>2]=-1;J[a+104>>2]=e;g=c;c=f-e|0;d=g+c|0;b=(c>>31)+b|0;J[a+120>>2]=d;J[a+124>>2]=c>>>0>d>>>0?b+1|0:b;return-1}d=c+1|0;b=d?b:b+1|0;h=J[a+4>>2];f=J[a+8>>2];c=J[a+116>>2];g=c;e=J[a+112>>2];b:{if(!(c|e)){break b}c=e-d|0;e=g-(b+(d>>>0>e>>>0)|0)|0;j=f-h|0;g=j>>31;if((e|0)>=(g|0)&c>>>0>=j>>>0|(e|0)>(g|0)){break b}f=c+h|0}J[a+104>>2]=f;c=J[a+44>>2];f=c-h|0;d=f+d|0;b=(f>>31)+b|0;J[a+120>>2]=d;J[a+124>>2]=d>>>0>>0?b+1|0:b;if(c>>>0>=h>>>0){H[h-1|0]=i}return i}function _ba(a,b,c,d,e){a=a|0;b=b|0;c=c|0;d=d|0;e=e|0;var f=0,g=0;a:{b:{c:{d:{e:{if((e|0)==1){f=d&65535;if(f>>>0>=M[a+100>>2]){break e}f=L[J[a+96>>2]+(f<<1)>>1]==(d>>>16|0)?J[J[a+92>>2]+(f<<2)>>2]:0;if(L[f+64>>1]<=c>>>0){break d}nb(J[(b<<2)+240224>>2]);if(K[J[79491]+220|0]&2){b=_()|0;if(b){break c}}b=0;g=J[f+48>>2];if(g>>>0<=3){b=J[(g<<2)+161296>>2]}c=J[J[f+52>>2]+(c<<2)>>2];g=J[a+112>>2];a=J[a+108>>2];if(c>>>0>=g-a>>2>>>0){break b}ja(b|0,J[a+(c<<2)>>2]);if(K[J[79491]+220|0]&2){a=_()|0;if(a){break a}}aP(d,e,J[f+12>>2],J[f+16>>2],J[f+20>>2],J[f+24>>2],Q(1));return}Z(95162,40535,4561,63476);B()}Z(2686,54166,244,5438);B()}Z(25570,40535,4563,63476);B()}Cj(b,63476,4571);Z(114101,40535,4571,63476);B()}Z(145396,53895,487,84789);B()}Cj(a,63476,4582);Z(114101,40535,4582,63476);B()}function jca(a,b){a=a|0;b=b|0;var c=0,d=0,e=0,f=0,g=0;f=Ui-16|0;Ui=f;a:{b:{if(b>>>0<2097152){b=J[79491];e=a+1|0;c:{if(e>>>0<2){break c}c=a&65535;if(c>>>0>=M[b+100>>2]){break a}g=J[J[b+92>>2]+(c<<2)>>2];if(!g){break c}d=L[J[b+96>>2]+(c<<1)>>1]==(a>>>16|0)?g:0}c=J[d+448>>2];g=J[b+112>>2];b=J[b+108>>2];if(c>>>0>=g-b>>2>>>0){break b}J[f+12>>2]=J[b+(c<<2)>>2];Tc(1,f+12|0);wr(J[79491],J[d+448>>2]);vr(d);vr(d- -64|0);vr(d+128|0);vr(d+192|0);vr(d+384|0);vr(d+256|0);vr(d+320|0);d:{if(e>>>0<2){break d}c=a&65535;b=J[79491];if(c>>>0>=M[b+100>>2]){break a}e=J[b+92>>2]+(c<<2)|0;if(!J[e>>2]){break d}c=c<<1;if(L[c+J[b+96>>2]>>1]!=(a>>>16|0)){break d}J[e>>2]=0;I[c+J[b+96>>2]>>1]=0}cj(d);Ui=f+16|0;return}Z(94863,55553,306,33926);B()}Z(145396,53895,487,84789);B()}Z(2686,54166,244,5438);B()}function Fk(a,b,c,d){var e=0,f=0,g=0,h=0;a:{b:{c:{f=(b>>>2|0)+((b&3)!=0)|0;e=J[a+4>>2];d:{if((f|0)!=(e|0)){g=J[a+8>>2];if(g){Zi[J[66509]](g,0,e<<2)|0;cj(J[a+8>>2])}J[a+8>>2]=0;J[a>>2]=1;J[a+4>>2]=0;g=-16;if(f>>>0>1e4){break a}if(!f){break c}e=Zj(f,4);if(!e){break a}J[a+8>>2]=e;J[a+4>>2]=f;break d}if(!f){break c}}e=J[a+8>>2];h=f<<2;break b}e=Zj(1,4);if(!e){return-16}g=J[a+8>>2];if(g){Zi[J[66509]](g,0,0)|0;cj(J[a+8>>2])}J[a+8>>2]=e;J[a+4>>2]=1;h=4}g=0;ij(e,0,h);e=J[a+8>>2];J[e>>2]=0;J[a>>2]=1;h=d;d=f<<2;Zi[c|0](h,e+(d-b|0)|0,b)|0;if(!f){break a}b=J[a+8>>2];a=(d+b|0)-4|0;if(a>>>0>>0){break a}while(1){c=J[b>>2];d=J[a>>2];J[b>>2]=d<<24|(d&65280)<<8|(d>>>8&65280|d>>>24);J[a>>2]=c<<24|(c&65280)<<8|(c>>>8&65280|c>>>24);a=a-4|0;b=b+4|0;if(a>>>0>=b>>>0){continue}break}}return g}function fE(a,b,c,d,e){var f=0,g=0,h=0;f=Ui-160|0;Ui=f;J[a+4>>2]=d;J[a+8>>2]=e;J[e>>2]=a;J[a>>2]=c;e=f+32|0;ek(e,b,128);zl(e,65661,128);e=-1e3;a:{b:{c:{d:{switch(Cq(b,a+3216|0)+4|0){case 3:break b;case 0:break c;case 4:break d;default:break a}}e:{b=f+32|0;switch(Cq(b,a+3224|0)+4|0){case 3:break b;case 0:break c;case 4:break e;default:break a}}vq(c,81,a);g=J[d+29080>>2];Tj(g);e=d+29088|0;f:{g:{b=J[d+29088>>2];c=J[d+29092>>2];if((b|0)==(c|0)){if(H[d+29096|0]&1){break g}c=b;b=d+29084|0;h=(c-J[b>>2]>>2)+4|0;c=b;b=d+29092|0;lj(h,4,c,b,e);c=J[b>>2];b=J[e>>2]}if((b|0)==(c|0)){break f}J[e>>2]=b+4;J[b>>2]=a;Lj(g);e=0;break a}Z(151729,53895,501,2284);B()}Z(112520,53895,557,53220);B()}J[f+16>>2]=b;dj(4,88293,116623,f+16|0);break a}J[f>>2]=b;dj(4,88293,124859,f)}Ui=f+160|0;return e}function UO(a,b,c,d,e,f){var g=0,h=0,i=0,j=0;g=Ui-16|0;Ui=g;J[g+4>>2]=d;a:{if(J[a+120>>2]==J[a+112>>2]-J[a+104>>2]>>4){e=-4;break a}if(!J[a+356>>2]){J[a+356>>2]=d}J[g+8>>2]=e;J[g+12>>2]=f;e=a- -64|0;f=J[a+88>>2];if((f|0)==((J[a+80>>2]-J[a+72>>2]|0)/24|0)){f=f+8|0;NC(e,(f<<1)/3|0,f)}eN(e,d,g+8|0);pl(a+96|0,b,c,g+4|0);e=J[a+36>>2];d=J[a+32>>2];if((e|0)==(d|0)){e=0;break a}f=(e-d|0)/672|0;i=f>>>0<=1?1:f;j=i&1;e=0;a=0;if(f>>>0>=2){i=i&-2;f=0;while(1){h=d+P(a,672)|0;if(J[h+552>>2]==(b|0)&J[h+556>>2]==(c|0)){J[h+560>>2]=J[g+4>>2]}h=d+P(a|1,672)|0;if(J[h+552>>2]==(b|0)&J[h+556>>2]==(c|0)){J[h+560>>2]=J[g+4>>2]}a=a+2|0;f=f+2|0;if((i|0)!=(f|0)){continue}break}}if(!j){break a}a=d+P(a,672)|0;if(J[a+552>>2]!=(b|0)|J[a+556>>2]!=(c|0)){break a}J[a+560>>2]=J[g+4>>2]}Ui=g+16|0;return e}function tV(a){var b=0,c=0,d=Q(0),e=0,f=Q(0),g=Q(0);e=(C(a),v(2));c=e&2147483647;if(c>>>0>=1283457024){return(e&2147483647)>>>0>2139095040?a:(x(2,(C(a),v(2))&-2147483648|1070141402),D())}a:{b:{if(c>>>0<=1054867455){b=-1;if(c>>>0>=964689920){break b}break a}a=Q(R(a));if(c>>>0<=1066926079){if(c>>>0<=1060110335){a=Q(Q(Q(a+a)+Q(-1))/Q(a+Q(2)));b=0;break b}a=Q(Q(a+Q(-1))/Q(a+Q(1)));b=1;break b}if(c>>>0<=1075576831){a=Q(Q(a+Q(-1.5))/Q(Q(a*Q(1.5))+Q(1)));b=2;break b}a=Q(Q(-1)/a);b=3}f=Q(a*a);d=Q(f*f);g=Q(d*Q(Q(d*Q(-.106480173766613))+Q(-.19999158382415771)));d=Q(f*Q(Q(d*Q(Q(d*Q(.06168760731816292))+Q(.14253635704517365)))+Q(.333333283662796)));if(c>>>0<=1054867455){return Q(a-Q(a*Q(g+d)))}b=b<<2;a=Q(N[b+198592>>2]-Q(Q(Q(a*Q(g+d))-N[b+198608>>2])-a));a=(e|0)<0?Q(-a):a}return a}function Eja(a){a=a|0;var b=0,c=0,d=0,e=0;b=J[a+8>>2];d=J[b+16>>2];e=J[J[a+16>>2]>>2];if(e>>>0>2]-d>>3>>>0){d=J[d+(e<<3)>>2];c=J[b+4>>2];b=J[b>>2];if(d>>>0>8>>>0){c=J[J[a+4>>2]>>2];e=J[c>>2];a=J[c+4>>2];b=b+(d<<8)|0;N[b+56>>2]=N[c+8>>2];J[b+48>>2]=e;J[b+52>>2]=a;d=J[c+32>>2];e=J[c+36>>2];a=J[c+44>>2];J[b+88>>2]=J[c+40>>2];J[b+92>>2]=a;J[b+80>>2]=d;J[b+84>>2]=e;d=J[c+48>>2];e=J[c+52>>2];a=J[c+60>>2];J[b+104>>2]=J[c+56>>2];J[b+108>>2]=a;J[b+96>>2]=d;J[b+100>>2]=e;d=J[c+64>>2];e=J[c+68>>2];a=J[c+76>>2];J[b+120>>2]=J[c+72>>2];J[b+124>>2]=a;J[b+112>>2]=d;J[b+116>>2]=e;J[b+192>>2]=J[c+88>>2];J[b+240>>2]=J[c+100>>2];a=L[b+246>>1]|8;I[b+246>>1]=a;N[b+232>>2]=N[c+80>>2];N[b+236>>2]=N[c+84>>2];I[b+246>>1]=a&65519|K[c+96|0]<<4&16;return}}Z(145396,53895,487,84789);B()}function vV(a,b,c){var d=0,e=0,f=0,g=0,h=0,i=0,j=0;A(+a);h=v(1)|0;v(0)|0;g=h&2147483640;g=(g|0)==1072010279|g>>>0<1072010279;if(!g){i=(h|0)>0|(h|0)>=0;a=.7853981633974483-R(a)+(3061616997868383e-32-(i?b:-b));b=0}e=a*a;d=a*e;j=d*.3333333333333341;f=d;d=e*e;e=j+(e*(f*(d*(d*(d*(d*(d*-18558637485527546e-21+7817944429395571e-20)+.0005880412408202641)+.0035920791075913124)+.021869488294859542)+.13333333333320124+e*(d*(d*(d*(d*(d*2590730518636337e-20+7140724913826082e-20)+.0002464631348184699)+.0014562094543252903)+.0088632398235993)+.05396825397622605))+b)+b);b=a+e;if(!g){f=b*b;d=b;b=+(1-(c<<1)|0);a=a+(e-f/(d+b));a=b-(a+a);return i?a:-a}if(c){f=-1/b;A(+f);c=v(1)|0;v(0)|0;x(0,0);x(1,c|0);d=+z();A(+b);c=v(1)|0;v(0)|0;x(0,0);x(1,c|0);b=+z();b=f*(d*(e-(b-a))+(d*b+1))+d}return b}function QV(a,b,c){var d=0,e=0,f=0,g=0,h=0,i=0,j=0,k=0,l=0,m=0;i=J[a>>2];d=i;j=J[a+4>>2];if((d|0)!=(j|0)){f=j-d>>2;while(1){g=f>>>1|0;e=(g<<2)+d|0;h=J[e>>2];k=J[h+8>>2];m=e+4|0;l=d;d=J[h+12>>2];e=(c|0)==(d|0)&b>>>0>k>>>0|c>>>0>d>>>0;d=e?m:l;f=e?(g^-1)+f|0:g;if(f){continue}break}}a:{if(d){g=0;f=j-i>>2;l=d-i|0;d=l>>2;if(f>>>0>d>>>0){j=f-d|0;f=d;b:{while(1){e=J[(f<<2)+i>>2];if((b|0)!=J[e+8>>2]|(c|0)!=J[e+12>>2]){break b}h=J[e+4>>2];k=J[e>>2];J[e>>2]=0;J[e+4>>2]=0;J[k+4>>2]=h;J[h>>2]=k;J[a+20>>2]=J[a+20>>2]-J[e+20>>2];h=J[e+16>>2];if(h){cj(h)}cj(e);f=f+1|0;g=g+1|0;if((j|0)!=(g|0)){continue}break}g=j}i=J[a>>2];f=J[a+4>>2]-i>>2}b=i+l|0;el(b,b+(g<<2)|0,f-(d+g|0)<<2);c=f-g|0;b=J[a>>2];if(c>>>0>J[a+8>>2]-b>>2>>>0){break a}J[a+4>>2]=b+(c<<2)}return}Z(144782,53895,514,59583);B()}function dpa(a){a=a|0;var b=0,c=0,d=0,e=0,f=0,g=0,h=0,i=0;h=Ui-112|0;Ui=h;c=a;if((kj(a,1)|0)==8){b=1;c=so(a,1)}f=b+1|0;a:{if(!Zl(c,Ej(a,f),h+12|0)){a=Dk(a,f,68210);break a}f=b+3|0;Em(a,f);gj(a,f);Xo(a,c,1);f=a;g=Ej(a,b|2);b:{c:{d:{d=J[c+40>>2]+P(J[h+108>>2],24)|0;b=J[d+4>>2];if(J[b+8>>2]!=6){break d}a=J[b>>2];if(K[a+6|0]){break d}a=J[a+16>>2];if(!a){break d}e:{if((d|0)!=J[c+20>>2]){e=J[d+12>>2];b=a;break e}e=J[c+24>>2];J[d+12>>2]=e;b=J[J[b>>2]+16>>2]}b=WA(a,g,(e-J[b+12>>2]>>2)-1|0);if(!b){break d}a=J[d>>2];break c}e=J[((d|0)==J[c+20>>2]?c+8|0:d+28|0)>>2];a=J[d>>2];b=0;if((g|0)<=0|(g|0)>e-a>>4){break b}b=135508}a=(g<<4)+a|0;d=a-16|0;g=J[c+8>>2];e=g-16|0;i=J[e+4>>2];J[d>>2]=J[e>>2];J[d+4>>2]=i;J[a-8>>2]=J[g-8>>2]}J[c+8>>2]=J[c+8>>2]-16;xj(f,b);a=1}Ui=h+112|0;return a|0}function jq(a,b){var c=0,d=0;a:{if((b|0)>0){b=(J[a+12>>2]+(b<<4)|0)-16|0;c=b>>>0>=M[a+8>>2]?173288:b;break a}c=J[a+8>>2]+(b<<4)|0;if((b|0)>=-9999){break a}b:{switch(b+10002|0){case 2:c=J[a+16>>2]+96|0;break a;case 1:b=J[J[J[J[a+20>>2]+4>>2]>>2]+12>>2];J[a+96>>2]=5;J[a+88>>2]=b;c=a+88|0;break a;case 0:c=a+72|0;break a;default:break b}}c=J[J[J[a+20>>2]+4>>2]>>2];c=K[c+7|0]<-10002-b>>>0?173288:(c+(0-b<<4)|0)-160024|0}b=c;c=0;c:{d:{e:{switch(J[b+8>>2]-6|0){case 0:J[J[b>>2]+12>>2]=J[J[a+8>>2]-16>>2];break d;case 1:J[J[b>>2]+12>>2]=J[J[a+8>>2]-16>>2];break d;case 2:break e;default:break c}}c=J[J[a+8>>2]-16>>2];d=J[b>>2];J[d+80>>2]=5;J[d+72>>2]=c}c=1;d=J[J[a+8>>2]-16>>2];if(!(K[d+5|0]&3)){break c}b=J[b>>2];if(!(K[b+5|0]&4)){break c}ap(a,b,d)}J[a+8>>2]=J[a+8>>2]-16;return c}function dia(a){a=a|0;var b=0,c=0,d=0,e=0,f=0;a:{b:{e=J[a+8>>2];b=J[e+8>>2];c=J[e+4>>2];if((b|0)!=(c|0)){d=J[J[a+16>>2]>>2];b=b-c>>2;f=b>>>0<=1?1:b;b=0;while(1){if(J[c+(b<<2)>>2]==(d|0)){c=J[d+148>>2];if(c){vj(J[J[J[a+4>>2]+80>>2]>>2],c)}c=J[d+152>>2];if(c){vj(J[J[J[a+4>>2]+80>>2]>>2],c)}a=J[d+100>>2];if(a){cj(a)}a=J[d+104>>2];if(a){cj(a)}a=J[d+144>>2];if(a){zr(a)}a=J[e+8>>2];c=J[e+4>>2];if(a-c>>2>>>0<=b>>>0){break b}J[c+(b<<2)>>2]=J[a-4>>2];a=J[e+8>>2]-4|0;J[e+8>>2]=a;if(a>>>0>2]){break a}if(d){c:{if(H[d+136|0]&1){break c}a=J[d+124>>2];if(!a){break c}cj(a)}d:{if(H[d+120|0]&1){break d}a=J[d+108>>2];if(!a){break d}cj(a)}cj(d)}return 0}b=b+1|0;if((f|0)!=(b|0)){continue}break}}Z(62644,42414,481,3288);B()}Z(145381,53895,537,43537);B()}Z(12682,53895,540,43537);B()}function sP(a,b){a=a|0;b=b|0;var c=0,d=0,e=0,f=0,g=0,h=0,i=0,j=0,k=0;d=J[a>>2];if(d){e=yj(d);c=e+1|0}d=J[a+4>>2];if(d){f=yj(d);c=(f+c|0)+1|0}d=J[a+8>>2];if(d){g=yj(d);c=(g+c|0)+1|0}a:{b:{if(!(H[b+12|0]&1)){lj((J[b+8>>2]+c|0)-J[b>>2]|0,1,b,b+8|0,b+4|0);d=J[b+4>>2];h=d-J[b>>2]|0;c=d;i=J[a>>2];if(i){c=hj(c,i,e)+e|0;H[c|0]=0;j=h|-2147483648;c=c+1|0}e=J[a+4>>2];if(e){c=hj(c,e,f);e=c+f|0;H[e|0]=0;k=(c+h|0)-d|-2147483648;c=e+1|0}a=J[a+8>>2];if(a){a=hj(c,a,g);H[a+g|0]=0;c=(a+h|0)-d|-2147483648}else{c=0}J[b+4>>2]=J[b+8>>2];if(H[b+28|0]&1){break a}lj(((J[b+24>>2]-J[b+16>>2]|0)/12|0)+1|0,12,b+16|0,b+24|0,b+20|0);a=J[b+20>>2];if((a|0)==J[b+24>>2]){break b}J[b+20>>2]=a+12;J[a+8>>2]=c;J[a+4>>2]=k;J[a>>2]=j;return}break a}Z(112520,53895,557,53220);B()}Z(151729,53895,501,2284);B()}function aha(a,b,c){a=a|0;b=b|0;c=c|0;var d=0,e=0,f=0;e=Ui-32|0;Ui=e;d=J[c+16>>2];Zi[J[79455]](J[d>>2],J[d+4>>2]);d=J[c+16>>2];J[d>>2]=a;J[d+4>>2]=b;if(Hm(J[c+12>>2])){b=e+12|0;a=J[c+12>>2];if(a){a=J[a>>2]}else{a=0}b=pj(b,a,0,42133,680);a:{if(ao(J[c+12>>2])){d=J[c+32>>2];f=J[a+8>>2];J[f+8>>2]=3;O[f>>3]=d>>>0;J[a+8>>2]=J[a+8>>2]+16;Fj(a,0,0);Bk(a,J[c>>2],J[c+4>>2]);ej(a,-2,53134);Ol(a,3,0,0);xo(J[c+12>>2]);break a}dj(4,88458,143709,0)}Fl(J[c+12>>2]);oj(b)}a=J[c+20>>2];if(a){cj(a)}if(J[c+24>>2]){hk(J[c+8>>2],-1e4,J[c+28>>2])}b:{a=J[c+32>>2];c:{if(a+1>>>0<2){break c}b=a&65535;if(b>>>0>=M[78232]){break b}d=J[78230]+(b<<2)|0;if(!J[d>>2]){break c}b=b<<1;if(L[b+J[78231]>>1]!=(a>>>16|0)){break c}J[d>>2]=0;I[b+J[78231]>>1]=0}cj(c);Ui=e+32|0;return}Z(2686,54166,244,5438);B()}function ysa(a,b){a=a|0;b=b|0;var c=0,d=0,e=0,f=0,g=0,h=0,i=0,j=0,k=0;c=J[a+20>>2];if(!(!c|K[a+16|0]!=1)){d=J[b+4>>2];a:{if((d|0)!=J[b+8>>2]){break a}h=d?d<<1:1;if((h|0)<=(d|0)){break a}if(h){f=Yj(h<<2);d=J[b+4>>2]}b:{if((d|0)<=0){break b}c=0;if(d>>>0>=4){i=d&2147483644;while(1){e=c<<2;J[e+f>>2]=J[e+J[b+12>>2]>>2];g=e|4;J[g+f>>2]=J[g+J[b+12>>2]>>2];g=e|8;J[g+f>>2]=J[g+J[b+12>>2]>>2];e=e|12;J[e+f>>2]=J[e+J[b+12>>2]>>2];c=c+4|0;j=j+4|0;if((i|0)!=(j|0)){continue}break}}e=d&3;if(!e){break b}while(1){i=c<<2;J[i+f>>2]=J[i+J[b+12>>2]>>2];c=c+1|0;k=k+1|0;if((e|0)!=(k|0)){continue}break}}c=J[b+12>>2];if(!(!c|K[b+16|0]!=1)){if(c){J[83765]=J[83765]+1;Zi[J[61751]](J[c-4>>2])}d=J[b+4>>2]}J[b+12>>2]=f;H[b+16|0]=1;J[b+8>>2]=h;c=J[a+20>>2]}J[J[b+12>>2]+(d<<2)>>2]=c;J[b+4>>2]=d+1}}function jz(a,b,c,d){var e=0,f=0,g=0,h=0,i=0,j=0,k=0,l=0,m=0,n=0,o=0;c=J[((b<<2)+a|0)+68>>2]+(c<<2)|0;g=c-4|0;f=L[g>>1];if(f>>>0>L[c>>1]){i=b<<1;j=i+(J[a+60>>2]+(L[c+2>>1]<<6)|0)|0;k=1<>2];b=h+(L[c-2>>1]<<6)|0;a:{if(f&1){f=b+54|0;break a}h=h+(L[c+2>>1]<<6)|0;l=h+54|0;e=k<<1;f=b+48|0;if(L[l+e>>1]>1]){break a}m=b+54|0;n=h+48|0;if(L[e+m>>1]>1]){break a}e=o<<1;if(L[e+l>>1]>1]|L[e+m>>1]>1]){break a}e=J[a+92>>2];Zi[J[J[e>>2]+12>>2]](e,h,b,d)|0;e=J[a+96>>2];if(!e){break a}Zi[J[J[e>>2]+12>>2]](e,h,b,d)|0}b=f+i|0;I[b>>1]=L[b>>1]+1;I[j+54>>1]=L[j+54>>1]-1;b=L[c>>1]|L[c+2>>1]<<16;f=L[g>>1]|L[g+2>>1]<<16;I[c>>1]=f;I[c+2>>1]=f>>>16;I[g>>1]=b;I[g+2>>1]=b>>>16;g=g-4|0;f=L[g>>1];c=c-4|0;if(f>>>0>L[c>>1]){continue}break}}}function hz(a,b){a=a|0;b=b|0;var c=0,d=0,e=0,f=0,g=0,h=0,i=0,j=0,k=0;c=J[a+12>>2];if(!(!c|K[a+8|0]!=1)){d=J[b+4>>2];a:{if((d|0)!=J[b+8>>2]){break a}h=d?d<<1:1;if((h|0)<=(d|0)){break a}if(h){f=Yj(h<<2);d=J[b+4>>2]}b:{if((d|0)<=0){break b}c=0;if(d>>>0>=4){i=d&2147483644;while(1){e=c<<2;J[e+f>>2]=J[e+J[b+12>>2]>>2];g=e|4;J[g+f>>2]=J[g+J[b+12>>2]>>2];g=e|8;J[g+f>>2]=J[g+J[b+12>>2]>>2];e=e|12;J[e+f>>2]=J[e+J[b+12>>2]>>2];c=c+4|0;j=j+4|0;if((i|0)!=(j|0)){continue}break}}e=d&3;if(!e){break b}while(1){i=c<<2;J[i+f>>2]=J[i+J[b+12>>2]>>2];c=c+1|0;k=k+1|0;if((e|0)!=(k|0)){continue}break}}c=J[b+12>>2];if(!(!c|K[b+16|0]!=1)){if(c){J[83765]=J[83765]+1;Zi[J[61751]](J[c-4>>2])}d=J[b+4>>2]}J[b+12>>2]=f;H[b+16|0]=1;J[b+8>>2]=h;c=J[a+12>>2]}J[J[b+12>>2]+(d<<2)>>2]=c;J[b+4>>2]=d+1}}function pea(a){a=a|0;var b=0,c=0,d=0,e=0,f=0,g=0,h=0;c=Ui-16|0;Ui=c;J[c+12>>2]=0;f=-13;a:{if(dk(J[a+12>>2],J[a+16>>2],J[55330],c+12|0,0)){break a}ht(J[c+12>>2]);e=J[a+4>>2];b=Jq(J[a>>2],J[e+2076>>2],J[c+12>>2]);g=J[c+12>>2];if(!b){Uj(g);break a}d=J[e+2080>>2];b=d;h=J[b+8>>2]-J[b+12>>2]>>4;b=Sj(b,28);J[b+16>>2]=0;J[b+20>>2]=0;J[b+24>>2]=-2;J[b+8>>2]=-2;J[b+12>>2]=-2;J[b>>2]=-2;J[b+4>>2]=-2;J[b+16>>2]=e;rj(d,-1e4,10533);Mj(d,-2);e=Lk(d,-1e4);J[b+20>>2]=0;J[b+24>>2]=e;b:{if(kL(d,g,b)){if(J[d+8>>2]-J[d+12>>2]>>4==(h|0)){break b}Z(143244,37616,3269,10513);B()}zL(b);b=0;if(J[d+8>>2]-J[d+12>>2]>>4==(h|0)){break b}Z(143244,37616,3275,10513);B()}J[J[a+28>>2]+16>>2]=J[a+16>>2]-J[J[c+12>>2]+4>>2];Uj(J[c+12>>2]);if(!b){break a}J[J[a+28>>2]+8>>2]=b;f=0}Ui=c+16|0;return f|0}function lS(a){var b=0,c=0,d=0;b=nj(40);J[b+8>>2]=0;J[b+12>>2]=0;c=b+16|0;d=c;J[d>>2]=0;J[d+4>>2]=0;d=J[a>>2];J[b>>2]=J[a+4>>2];J[b+4>>2]=0;J[b+28>>2]=Co();a:{b:{c:{if(!(H[b+20|0]&1)){lj(d,64,b+8|0,c,b+12|0);a=J[b+8>>2];if(J[b+16>>2]-a>>6>>>0>>0){break c}J[b+12>>2]=a+(d<<6);if(d){c=0;while(1){a=J[b+8>>2];if(J[b+12>>2]-a>>6>>>0<=c>>>0){break b}a=a+(c<<6)|0;J[a+40>>2]=0;J[a+44>>2]=0;J[a>>2]=0;J[a+4>>2]=0;J[a+56>>2]=0;J[a+60>>2]=0;J[a+48>>2]=0;J[a+52>>2]=0;J[a+32>>2]=0;J[a+36>>2]=0;J[a+24>>2]=0;J[a+28>>2]=0;J[a+16>>2]=0;J[a+20>>2]=0;J[a+8>>2]=0;J[a+12>>2]=0;J[a+44>>2]=-1;c=c+1|0;if((d|0)!=(c|0)){continue}break}}I[b+24>>1]=0;H[b+32|0]=K[b+32|0]|1;break a}Z(151729,54052,501,2284);B()}Z(144782,54052,514,59583);B()}Z(145396,54052,487,84789);B()}J[218567]=b;return 0}function gO(a,b,c,d,e){var f=0,g=0,h=0,i=0,j=0,k=0;a:{b:{c:{d:{e:{f=b&65535;g=J[a+32>>2];if(f>>>0<(J[a+36>>2]-g|0)/672>>>0){g=g+P(f,672)|0;if(L[g+648>>1]!=(b>>>16|0)){break e}if((f|0)!=L[g+650>>1]){break d}b=J[g+580>>2];f:{if(b){h=J[a+312>>2]-J[a+308>>2]>>3;break f}i=J[a+332>>2];b=J[a+328>>2];if((i|0)==(b|0)){return}h=J[a+312>>2]-J[a+308>>2]>>3;f=b;b=J[a+324>>2];j=f-b|0;k=j>>2;f=h+k|0;if(f>>>0>i-b>>2>>>0){break c}J[a+328>>2]=b+(f<<2);if(f>>>0<=k>>>0){break a}b=b+j|0;J[g+580>>2]=b}if(e>>>0>=h>>>0){break b}if(d>>>0<=e>>>0){while(1){J[((d&65535)<<2)+b>>2]=c;d=d+1|0;if((d&65535)>>>0<=e>>>0){continue}break}}return}break a}Z(47372,40876,188,69601);B()}Z(5388,40876,189,69601);B()}Z(144782,53895,514,59583);B()}Z(144985,40876,930,81615);B()}Z(145396,53895,487,84789);B()}function csa(a,b,c){a=a|0;b=b|0;c=c|0;var d=0,e=Q(0),f=Q(0),g=Q(0),h=0,i=Q(0),j=Q(0),k=Q(0),l=Q(0);d=Ui-32|0;Ui=d;h=J[c+12>>2];J[d+24>>2]=J[c+8>>2];J[d+28>>2]=h;h=J[c+4>>2];J[d+16>>2]=J[c>>2];J[d+20>>2]=h;e=N[d+24>>2];f=N[d+16>>2];g=N[d+20>>2];if(Q(Q(e*e)+Q(Q(f*f)+Q(g*g)))>2]=0;g=Q(-1);f=Q(-1);e=Q(-1)}i=e;e=Q(Q(1)/Q(Y(Q(Q(e*e)+Q(Q(f*f)+Q(g*g))))));N[d+24>>2]=i*e;N[d+20>>2]=g*e;N[d+16>>2]=f*e;ez(d,b,d+16|0);a:{b:{switch(J[b+4>>2]){case 8:e=Q(N[b+28>>2]*N[b+12>>2]);break a;case 0:case 1:case 4:case 5:case 10:case 13:e=N[b+44>>2];break a;default:break b}}e=Q(Zi[J[J[b>>2]+44>>2]](b))}f=N[d>>2];g=N[d+16>>2];i=N[d+4>>2];j=N[d+20>>2];k=N[d+8>>2];l=N[d+24>>2];J[a+12>>2]=0;N[a+8>>2]=k+Q(e*l);N[a+4>>2]=i+Q(e*j);N[a>>2]=f+Q(e*g);Ui=d+32|0}function uy(a,b,c,d,e){var f=0,g=Q(0),h=0,i=0,j=0;f=Ui-96|0;Ui=f;h=K[e+32|0];J[a+104>>2]=0;I[a+108>>1]=L[a+108>>1]&65534|h;h=J[e+8>>2];i=J[e+12>>2];a:{if((b|0)==J[e>>2]&(c|0)==J[e+4>>2]){J[a>>2]=h;J[a+4>>2]=i;b=J[e+20>>2];J[a+8>>2]=J[e+16>>2];J[a+12>>2]=b;b=J[e+28>>2];J[a+16>>2]=J[e+24>>2];J[a+20>>2]=b;N[f>>2]=N[d>>2];N[f+4>>2]=N[d+4>>2];N[f+8>>2]=N[d+8>>2];b=f+24|0;J[b>>2]=3;N[b+8>>2]=N[f>>2];N[b+12>>2]=N[f+4>>2];N[b+16>>2]=N[f+8>>2];hj(a+32|0,b,72);break a}b:{if((b|0)==(h|0)&(c|0)==(i|0)){g=N[d>>2];b=f+24|0;J[b>>2]=0;O[b+8>>3]=g;break b}if((b|0)==J[e+16>>2]&(c|0)==J[e+20>>2]){g=N[d+4>>2];b=f+24|0;J[b>>2]=0;O[b+8>>3]=g;break b}j=-1;if(J[e+24>>2]!=(b|0)|J[e+28>>2]!=(c|0)){break a}g=N[d+8>>2];b=f+24|0;J[b>>2]=0;O[b+8>>3]=g}hj(a+32|0,b,72);j=0}Ui=f+96|0;return j}function pl(a,b,c,d){var e=0,f=0,g=0,h=0,i=0,j=0;a:{b:{c:{d:{h=J[a+24>>2];j=J[a+16>>2];g=J[a+8>>2];if((h|0)!=j-g>>4){i=J[a+4>>2];e:{if(!i){break e}f=J[J[a>>2]+(mxa(b,c,i)<<2)>>2];if((f|0)==-1){break e}while(1){e=(f<<4)+g|0;if(J[e>>2]==(b|0)&(c|0)==J[e+4>>2]){break d}f=J[e+12>>2];if((f|0)!=-1){continue}break}}e=J[a+12>>2];f:{if((j|0)!=(e|0)){J[a+12>>2]=e+16;break f}e=J[a+20>>2];if((e|0)==-1){break c}e=(e<<4)+g|0;J[a+20>>2]=J[e+12>>2]}J[e>>2]=b;J[e+4>>2]=c;d=J[d>>2];J[e+12>>2]=-1;J[e+8>>2]=d;b=J[a>>2]+(mxa(b,c,i)<<2)|0;f=J[b>>2];if((f|0)==-1){break b}while(1){b=(f<<4)+g|0;f=J[b+12>>2];if((f|0)!=-1){continue}break}J[b+12>>2]=e-g>>4;break a}Z(144851,55629,229,9606);B()}J[e+8>>2]=J[d>>2];return}Z(152203,55629,537,2838);B()}J[b>>2]=e-g>>4;h=J[a+24>>2]}J[a+24>>2]=h+1}function lN(a,b,c,d){var e=0,f=0,g=0,h=0,i=0,j=0;a:{b:{c:{d:{h=J[a+24>>2];j=J[a+16>>2];g=J[a+8>>2];if((h|0)!=j-g>>4){i=J[a+4>>2];e:{if(!i){break e}f=J[J[a>>2]+(mxa(b,c,i)<<2)>>2];if((f|0)==-1){break e}while(1){e=(f<<4)+g|0;if(J[e>>2]==(b|0)&(c|0)==J[e+4>>2]){break d}f=J[e+12>>2];if((f|0)!=-1){continue}break}}e=J[a+12>>2];f:{if((j|0)!=(e|0)){J[a+12>>2]=e+16;break f}e=J[a+20>>2];if((e|0)==-1){break c}e=(e<<4)+g|0;J[a+20>>2]=J[e+12>>2]}J[e>>2]=b;J[e+4>>2]=c;d=L[d>>1];J[e+12>>2]=-1;I[e+8>>1]=d;b=J[a>>2]+(mxa(b,c,i)<<2)|0;f=J[b>>2];if((f|0)==-1){break b}while(1){b=(f<<4)+g|0;f=J[b+12>>2];if((f|0)!=-1){continue}break}J[b+12>>2]=e-g>>4;break a}Z(144851,55629,229,9606);B()}I[e+8>>1]=L[d>>1];return}Z(152203,55629,537,2838);B()}J[b>>2]=e-g>>4;h=J[a+24>>2]}J[a+24>>2]=h+1}function Apa(a,b,c){a=a|0;b=b|0;c=c|0;var d=0,e=0,f=0,g=0,h=0;f=Ui-288|0;Ui=f;d=f+12|0;ij(d,0,276);g=aI(d,b,c);if(!g){b=J[f+12>>2];J[a>>2]=b;e=(b|0)==4;b=d+(e<<6)|0;c=b+196|0;J[a+4>>2]=J[c>>2];J[a+8>>2]=J[b+200>>2];J[a+12>>2]=J[b+204>>2];J[a+16>>2]=J[b+208>>2];d=a+20|0;e=e<<3|22;b=b+188|0;while(1){a=b;J[d>>2]=J[b>>2];J[d+4>>2]=J[c-4>>2];b=b-8|0;e=e-1|0;d=d+8|0;c=a;h=h+1|0;if((h|0)!=2){continue}break}while(1){c=d;J[c>>2]=J[b>>2];J[c+4>>2]=J[a-4>>2];J[c+8>>2]=J[b-8>>2];J[c+12>>2]=J[b-4>>2];J[c+16>>2]=J[b-16>>2];J[c+20>>2]=J[b-12>>2];a=b-24|0;J[c+24>>2]=J[a>>2];J[c+28>>2]=J[b-20>>2];b=b-32|0;d=c+32|0;e=e-4|0;if(e){continue}break}J[c+32>>2]=J[a-16>>2];J[c+36>>2]=J[a-12>>2];J[c+40>>2]=J[b>>2];J[c+44>>2]=J[a-4>>2]}Zi[J[66509]](f+12|0,0,276)|0;Ui=f+288|0;return g|0}function G8(a){a=a|0;var b=0,c=0,d=0,e=0,f=0,g=0,h=Q(0),i=0,j=0;d=Ui-32|0;Ui=d;f=pj(d+12|0,a,0,37682,4478);Bj(a);b=qj(a,-1,J[219396],139183);gj(a,-2);Qj(a,1,d+8|0);a:{if(dy(b,J[d+8>>2])){g=Jj(f,65083,0);break a}e=J[d+8>>2];h=Q(wj(a,2));b:{c:{d:{c=e&65535;a=J[b+32>>2];if(c>>>0<(J[b+36>>2]-a|0)/672>>>0){a=a+P(c,672)|0;if(L[a+648>>1]!=(e>>>16|0)){break d}if((c|0)!=L[a+650>>1]){break c}e:{if(!(J[a+536>>2]|J[a+540>>2])){break e}c=J[b+48>>2];b=J[b+52>>2];if((c|0)==(b|0)){break e}i=a+544|0;a=(b-c|0)/72|0;j=a>>>0<=1?1:a;a=0;while(1){b=P(a,72)+c|0;if(!(J[b>>2]==(e|0)&(i|0)==J[b+4>>2])){a=a+1|0;if((j|0)!=(a|0)){continue}break e}break}N[b+28>>2]=h}break b}Z(145396,53895,487,84789);B()}Z(47372,40876,188,69601);B()}Z(5388,40876,189,69601);B()}}oj(f);Ui=d+32|0;return g|0}function $M(a,b,c,d,e,f){var g=0,h=0,i=0,j=0,k=0,l=0,m=0,n=0;h=Ui-1072|0;Ui=h;j=J[a+48>>2];Tj(j);g=h+1040|0;go(g,0);em(g,b,yj(b));em(g,c,yj(c));k=jp(g);l=Yi;g=bj(b);i=Yi;b=J[a+20>>2];a:{if(b){c=2;m=a+16|0;b=J[J[m>>2]+(mxa(g,i,b)<<2)>>2];if((b|0)==-1){break a}n=J[a+24>>2];while(1){b=P(b,136)+n|0;if(J[b>>2]!=(g|0)|J[b+4>>2]!=(i|0)){b=J[b+128>>2];if((b|0)!=-1){continue}break a}break}if((k|0)!=J[b+80>>2]|J[b+84>>2]!=(l|0)){break a}if(H[b+121|0]&1){c=3;dj(3,99340,129567,0);break a}J[b+88>>2]=zs();J[b+92>>2]=Yi;c=J[a>>2];a=h+16|0;cN(c,k,l,a);a=ol(a,82700);if(a){if(e){um(a,0,2);J[e>>2]=wo(a);um(a,0,0)}J[d>>2]=a;H[b+120|0]=K[b+120|0]+1;a=J[b+108>>2];J[f>>2]=J[b+104>>2];J[f+4>>2]=a;c=0;break a}J[h>>2]=h+16;dj(4,99340,27094,h);tN(m,g,i)}c=2}Lj(j);Ui=h+1072|0;return c}function gka(a){a=a|0;var b=0,c=0,d=0,e=0,f=0,g=0,h=0;a:{e=J[a+8>>2];c=J[e+36>>2];d=J[e+32>>2];b:{if((c|0)==(d|0)){break b}b=J[J[a+16>>2]>>2];c=c-d>>2;f=c>>>0<=1?1:c;c=0;while(1){if((b|0)==J[d+(c<<2)>>2]){g=J[J[J[a+4>>2]+80>>2]>>2];a=J[b+16>>2];if(a){vj(g,a)}a=J[b+28>>2];d=J[b+24>>2];if((a|0)!=(d|0)){f=0;while(1){h=J[(f<<2)+d>>2];if(h){vj(g,h);d=J[b+24>>2];a=J[b+28>>2]}f=f+1|0;if(f>>>0>2>>>0){continue}break}}J[b+28>>2]=d;IO(J[b+8>>2]);if(b){c:{if(H[b+36|0]&1){break c}a=J[b+24>>2];if(!a){break c}cj(a)}cj(b)}a=J[e+36>>2];b=J[e+32>>2];if(a-b>>2>>>0<=c>>>0){break a}J[b+(c<<2)>>2]=J[a-4>>2];a=J[e+36>>2]-4|0;J[e+36>>2]=a;if(a>>>0>=M[e+32>>2]){break b}Z(12682,53895,540,43537);B()}c=c+1|0;if((f|0)!=(c|0)){continue}break}}return 0}Z(145381,53895,537,43537);B()}function dI(a,b,c){var d=0,e=0,f=0,g=0,h=0;a:{e=J[a>>2];if((b-e|0)<=0){break a}if(K[e|0]!=1){return-98}d=e+1|0;J[a>>2]=d;f=b-d|0;if((f|0)<=0){break a}d=H[d|0];b:{c:{if((d|0)>=0){f=e+2|0;J[a>>2]=f;d=K[e+1|0];break c}g=-100;d:{switch((d&127)-1|0){case 0:if((f|0)==1){break a}d=K[e+2|0];f=e+3|0;J[a>>2]=f;break c;case 1:if(f>>>0<3){break a}d=K[e+3|0];g=K[e+2|0];f=e+4|0;J[a>>2]=f;d=g<<8|d;break c;case 2:if(f>>>0<4){break a}d=K[e+4|0];g=K[e+3|0];h=K[e+2|0];f=e+5|0;J[a>>2]=f;d=g<<8|h<<16|d;break c;case 3:break d;default:break b}}if(f>>>0<5){break a}d=K[e+2|0]|K[e+3|0]<<8|(K[e+4|0]<<16|K[e+5|0]<<24);f=e+6|0;J[a>>2]=f;d=d<<24|(d&65280)<<8|(d>>>8&65280|d>>>24)}g=-96;if(b-f>>>0>>0){break b}if((d|0)!=1){return-100}g=0;J[c>>2]=K[f|0]!=0;J[a>>2]=f+1}return g}return-96}function CL(a,b,c){var d=0,e=0,f=0,g=0,h=0,i=0;h=J[a+2480>>2];a:{d=J[c+4>>2];if(d){while(1){e=J[J[c>>2]+(g<<2)>>2];b:{if((e|0)==-1){break b}a=J[b+36>>2];if(!a){break b}while(1){e=J[c+8>>2]+P(e,40)|0;c:{if(!a){break c}d=J[e>>2];i=J[e+4>>2];a=J[J[b+32>>2]+(mxa(d,i,a)<<2)>>2];if((a|0)==-1){break c}f=J[b+40>>2];while(1){a=f+P(a,24)|0;if(J[a>>2]!=(d|0)|J[a+4>>2]!=(i|0)){a=J[a+16>>2];if((a|0)!=-1){continue}break c}break}f=J[e+16>>2];d=J[c+32>>2];if(f>>>0>=J[c+36>>2]-d>>4>>>0){break a}d=d+(f<<4)|0;f=J[e+20>>2];if(J[e+24>>2]==9){Zi[J[79429]](h,d,f>>>2|0,J[a+8>>2],J[a+12>>2]);break c}Zi[J[79428]](h,d,f,J[a+8>>2],J[a+12>>2])}e=J[e+32>>2];if((e|0)!=-1){a=J[b+36>>2];continue}break}d=J[c+4>>2]}g=g+1|0;if(g>>>0>>0){continue}break}}return}Z(145396,53895,487,84789);B()}function BN(a,b,c,d){var e=0,f=0,g=0,h=0,i=0,j=0;a:{b:{c:{d:{h=J[a+24>>2];j=J[a+16>>2];g=J[a+8>>2];if((h|0)!=j-g>>4){i=J[a+4>>2];e:{if(!i){break e}f=J[J[a>>2]+(mxa(b,c,i)<<2)>>2];if((f|0)==-1){break e}while(1){e=(f<<4)+g|0;if(J[e>>2]==(b|0)&(c|0)==J[e+4>>2]){break d}f=J[e+12>>2];if((f|0)!=-1){continue}break}}e=J[a+12>>2];f:{if((j|0)!=(e|0)){J[a+12>>2]=e+16;break f}e=J[a+20>>2];if((e|0)==-1){break c}e=(e<<4)+g|0;J[a+20>>2]=J[e+12>>2]}J[e>>2]=b;J[e+4>>2]=c;d=K[d|0];J[e+12>>2]=-1;H[e+8|0]=d;b=J[a>>2]+(mxa(b,c,i)<<2)|0;f=J[b>>2];if((f|0)==-1){break b}while(1){b=(f<<4)+g|0;f=J[b+12>>2];if((f|0)!=-1){continue}break}J[b+12>>2]=e-g>>4;break a}Z(144851,55629,229,9606);B()}H[e+8|0]=K[d|0];return}Z(152203,55629,537,2838);B()}J[b>>2]=e-g>>4;h=J[a+24>>2]}J[a+24>>2]=h+1}function iz(a,b,c){var d=0,e=0,f=0,g=0,h=0,i=0,j=0,k=0,l=0,m=0,n=0,o=0,p=0;c=J[((b<<2)+a|0)+68>>2]+(c<<2)|0;f=c-4|0;e=L[f>>1];if(e>>>0>L[c>>1]){k=b<<1;g=J[a+60>>2]+(L[c+2>>1]<<6)|0;d=g+48|0;l=k+d|0;b=1<>2]+(L[c-2>>1]<<6)|0;a:{if(!(e&1)){e=48;break a}e=54;d=b+48|0;if(L[o>>1]>1]){break a}m=b+54|0;if(L[m+h>>1]>1]|L[i>>1]>1]|L[j+m>>1]>1]){break a}d=J[a+92>>2];Zi[J[J[d>>2]+8>>2]](d,g,b)|0;d=J[a+96>>2];if(!d){break a}Zi[J[J[d>>2]+8>>2]](d,g,b)|0}b=(b+e|0)+k|0;I[b>>1]=L[b>>1]+1;I[l>>1]=L[l>>1]-1;b=L[c>>1]|L[c+2>>1]<<16;e=L[f>>1]|L[f+2>>1]<<16;I[c>>1]=e;I[c+2>>1]=e>>>16;I[f>>1]=b;I[f+2>>1]=b>>>16;f=f-4|0;e=L[f>>1];c=c-4|0;if(e>>>0>L[c>>1]){continue}break}}}function T9(a){a=a|0;var b=0,c=0,d=0,e=0,f=0,g=0,h=0,i=0,j=0,k=0,l=0;e=Ui-16|0;Ui=e;l=J[a+8>>2]-J[a+12>>2]>>4;Bj(a);c=qj(a,-1,J[219396],139183);gj(a,-2);h=1;f=mk(a,1);g=Yi;b=J[c+100>>2];a:{if(!b){break a}b=J[J[c+96>>2]+(mxa(f,g,b)<<2)>>2];if((b|0)==-1){break a}d=J[c+104>>2];while(1){b=d+(b<<4)|0;if(J[b>>2]!=(f|0)|J[b+4>>2]!=(g|0)){b=J[b+12>>2];if((b|0)!=-1){continue}break a}break}d=J[c+68>>2];if(!d){break a}i=J[b+8>>2];b=J[J[c+64>>2]+((i>>>0)%(d>>>0)<<2)>>2];if((b|0)==-1){break a}d=J[c+72>>2];while(1){c=d+P(b,24)|0;if((i|0)!=J[c>>2]){b=J[c+16>>2];if((b|0)!=-1){continue}break a}break}j=J[c+8>>2];k=J[c+12>>2]}b:{if(j|k){Bk(a,j,k);if((l+1|0)==J[a+8>>2]-J[a+12>>2]>>4){break b}Z(143334,37682,2435,69808);B()}J[e>>2]=tj(f,g);h=fj(a,27544,e)}Ui=e+16|0;return h|0}function Pm(a,b,c){var d=0,e=0;e=Ui-16|0;Ui=e;d=-1;a:{b:{switch(c-2|0){case 3:d=-2;break a;case 4:d=-3;break a;case 6:d=-4;break a;case 13:d=-5;break a;case 15:d=-6;break a;case 19:d=-7;break a;case 21:d=-8;break a;case 25:d=-9;break a;case 26:d=-10;break a;case 28:d=-11;break a;case 31:d=-12;break a;case 33:d=-13;break a;case 36:d=-14;break a;case 38:d=-15;break a;case 40:d=-17;break a;case 51:d=-20;break a;case 55:d=-22;break a;case 136:d=-23;break a;case 62:d=-24;break a;case 64:d=-25;break a;case 65:d=-26;break a;case 71:d=-27;break a;case 2:d=-28;break a;case 12:d=-29;break a;case 1:d=-30;break a;case 11:d=-31;break a;case 24:d=-32;break a;case 0:break a;default:break b}}J[e+8>>2]=c;J[e+4>>2]=b;J[e>>2]=a;dj(4,99340,78369,e);d=-1e3}Ui=e+16|0;return d}function MC(a,b,c){var d=0,e=0,f=0,g=0,h=0,i=0;a:{b:{c:{d:{g=J[a+24>>2];i=J[a+16>>2];f=J[a+8>>2];if((g|0)!=((i-f|0)/12|0)){h=J[a+4>>2];e:{if(!h){break e}e=J[J[a>>2]+((b>>>0)%(h>>>0)<<2)>>2];if((e|0)==-1){break e}while(1){d=P(e,12)+f|0;if(J[d>>2]==(b|0)){break d}e=J[d+8>>2];if((e|0)!=-1){continue}break}}d=J[a+12>>2];f:{if((i|0)!=(d|0)){J[a+12>>2]=d+12;break f}d=J[a+20>>2];if((d|0)==-1){break c}d=P(d,12)+f|0;J[a+20>>2]=J[d+8>>2]}J[d>>2]=b;c=L[c>>1];J[d+8>>2]=-1;I[d+4>>1]=c;b=J[a>>2]+((b>>>0)%(h>>>0)<<2)|0;e=J[b>>2];if((e|0)==-1){break b}while(1){b=P(e,12)+f|0;e=J[b+8>>2];if((e|0)!=-1){continue}break}J[b+8>>2]=(d-f|0)/12;break a}Z(144851,55629,229,9606);B()}I[d+4>>1]=L[c>>1];return}Z(152203,55629,537,2838);B()}J[b>>2]=(d-f|0)/12;g=J[a+24>>2]}J[a+24>>2]=g+1} +function uU(a){var b=0,c=0,d=0,e=0,f=0,g=0,h=0,i=0,j=0,k=0,l=0;d=Ui-16|0;Ui=d;c=J[a+48>>2];H[d+14|0]=0;J[d+8>>2]=-1;b=K[c+50|0];H[d+13|0]=0;H[d+12|0]=b;J[d+4>>2]=J[c+20>>2];J[c+20>>2]=d+4;Pq(a);i=J[c+20>>2];J[c+20>>2]=J[i>>2];e=K[i+8|0];f=J[J[c+12>>2]+48>>2];b=K[f+50|0];if(e>>>0>>0){j=f+172|0;g=J[f+24>>2];h=J[J[f>>2]+24>>2];k=b-e&3;a:{if(!k){a=b;break a}a=b;while(1){a=a-1|0;J[(P(L[(a<<1)+j>>1],12)+h|0)+8>>2]=g;l=l+1|0;if((k|0)!=(l|0)){continue}break}}if(e-b>>>0<=4294967292){while(1){b=(a<<1)+j|0;J[(P(L[b-2>>1],12)+h|0)+8>>2]=g;J[(P(L[b-4>>1],12)+h|0)+8>>2]=g;J[(P(L[b-6>>1],12)+h|0)+8>>2]=g;a=a-4|0;J[(P(L[(a<<1)+j>>1],12)+h|0)+8>>2]=g;if(a>>>0>e>>>0){continue}break}}H[f+50|0]=a}if(K[i+9|0]){tm(c,35,e,0,0)}J[c+36>>2]=K[c+50|0];_m(c,J[i+4>>2]);Ui=d+16|0}function tF(a,b){var c=0,d=0,e=0,f=0,g=0,h=0,i=0;a:{if(a|b){while(1){f=-1;if(!a|!b|J[a>>2]!=J[b>>2]){break a}c=J[a+4>>2];if((c|0)!=J[b+4>>2]){break a}if(Wj(J[a+8>>2],J[b+8>>2],c)){break a}c=J[a+12>>2];d=J[b+12>>2];b:{c:{if((c|0)!=(d|0)){break c}e=J[a+16>>2];if((e|0)!=J[b+16>>2]){break c}if(!Wj(J[a+20>>2],J[b+20>>2],e)){break b}}d:{switch(c-12|0){case 0:case 7:break d;default:break a}}e:{switch(d-12|0){case 0:case 7:break e;default:break a}}d=J[a+16>>2];if((d|0)!=J[b+16>>2]){break a}if(!d){break b}h=J[b+20>>2];i=J[a+20>>2];c=0;while(1){g=K[c+h|0];e=K[c+i|0];if((g|0)!=(e|0)){if((e^g)!=32|((e&223)-65&255)>>>0>25){break a}}c=c+1|0;if((d|0)!=(c|0)){continue}break}}if(K[a+28|0]!=K[b+28|0]){break a}a=J[a+24>>2];b=J[b+24>>2];if(a|b){continue}break}}f=0}return f}function av(a,b,c){var d=0,e=0,f=0,g=0,h=0,i=0;a:{b:{c:{d:{g=J[a+24>>2];i=J[a+16>>2];f=J[a+8>>2];if((g|0)!=((i-f|0)/12|0)){h=J[a+4>>2];e:{if(!h){break e}e=J[J[a>>2]+((b>>>0)%(h>>>0)<<2)>>2];if((e|0)==-1){break e}while(1){d=P(e,12)+f|0;if(J[d>>2]==(b|0)){break d}e=J[d+8>>2];if((e|0)!=-1){continue}break}}d=J[a+12>>2];f:{if((i|0)!=(d|0)){J[a+12>>2]=d+12;break f}d=J[a+20>>2];if((d|0)==-1){break c}d=P(d,12)+f|0;J[a+20>>2]=J[d+8>>2]}J[d>>2]=b;c=J[c>>2];J[d+8>>2]=-1;J[d+4>>2]=c;b=J[a>>2]+((b>>>0)%(h>>>0)<<2)|0;e=J[b>>2];if((e|0)==-1){break b}while(1){b=P(e,12)+f|0;e=J[b+8>>2];if((e|0)!=-1){continue}break}J[b+8>>2]=(d-f|0)/12;break a}Z(144851,55629,229,9606);B()}J[d+4>>2]=J[c>>2];return}Z(152203,55629,537,2838);B()}J[b>>2]=(d-f|0)/12;g=J[a+24>>2]}J[a+24>>2]=g+1}function Yv(a,b,c,d,e){var f=0,g=0,h=0,i=0,j=0,k=0;f=J[e>>2];g=L[c>>1];j=J[(f+P(g,12)|0)+4>>2];e=L[b>>1];i=J[(P(e,12)+f|0)+4>>2];h=L[a>>1];k=J[(P(h,12)+f|0)+4>>2];a:{if(i>>>0<=k>>>0){if(j>>>0<=i>>>0){e=g;break a}I[b>>1]=g;I[c>>1]=e;g=L[b>>1];h=L[a>>1];if(M[(P(g,12)+f|0)+4>>2]<=M[(P(h,12)+f|0)+4>>2]){break a}I[a>>1]=g;I[b>>1]=h;e=L[c>>1];break a}b:{if(j>>>0>i>>>0){I[a>>1]=g;break b}I[a>>1]=e;I[b>>1]=h;e=L[c>>1];if(M[(P(e,12)+f|0)+4>>2]<=k>>>0){break a}I[b>>1]=e}I[c>>1]=h;e=h}g=L[d>>1];c:{if(M[(P(g,12)+f|0)+4>>2]<=M[(P(e,12)+f|0)+4>>2]){break c}I[c>>1]=g;I[d>>1]=e;d=L[c>>1];e=L[b>>1];if(M[(P(d,12)+f|0)+4>>2]<=M[(P(e,12)+f|0)+4>>2]){break c}I[b>>1]=d;I[c>>1]=e;c=L[b>>1];d=L[a>>1];if(M[(P(c,12)+f|0)+4>>2]<=M[(P(d,12)+f|0)+4>>2]){break c}I[a>>1]=c;I[b>>1]=d}}function G2(a){a=a|0;var b=0,c=0,d=0,e=0,f=0,g=0,h=0;b=Ui-4064|0;Ui=b;d=pj(b+4036|0,a,0,39097,1222);Fj(a,0,0);if(Mk(a,1)){xj(a,Aj(a,1,0));ej(a,-2,110041)}if(Mk(a,2)){xj(a,Aj(a,2,0));ej(a,-2,109265)}if(Mk(a,3)){xj(a,Aj(a,3,0));ej(a,-2,108981)}if(Mk(a,4)){xj(a,Aj(a,4,0));ej(a,-2,107006)}if(Mk(a,5)){xj(a,Aj(a,5,0));ej(a,-2,106033)}if(Mk(a,6)){xj(a,Aj(a,6,0));ej(a,-2,103527)}e=b+32|0;g=mK(a,J[64340],e,4e3);J[b+8>>2]=0;J[b+12>>2]=0;a:{if(!eo(48819,b+4056|0)){c=J[b+4056>>2];f=J[b+4060>>2];if(!(c|f)){break a}J[b+24>>2]=0;J[b+28>>2]=0;J[b+16>>2]=0;J[b+20>>2]=0;J[b>>2]=c;J[b+4>>2]=f;c=J[64340];b:{if(Jk(0,b,J[c+8>>2],J[c+12>>2],0,0,c,e,g,0)){h=Jj(d,153623,0);break b}gj(a,-2)}oj(d);Ui=b+4064|0;return h|0}Z(92881,39097,1153,92224);B()}Z(15431,39097,1154,92224);B()}function dva(a){a=a|0;var b=0,c=Q(0),d=0,e=0;b=Ui-224|0;Ui=b;d=J[J[a+52>>2]+8>>2];e=J[J[a+48>>2]+8>>2];zj(156436,0);J[b+208>>2]=e;zj(156602,b+208|0);J[b+192>>2]=d;zj(156576,b+192|0);J[b+176>>2]=K[a+61|0];zj(157687,b+176|0);c=N[a+68>>2];O[b+168>>3]=N[a+72>>2];O[b+160>>3]=c;zj(157002,b+160|0);c=N[a+76>>2];O[b+152>>3]=N[a+80>>2];O[b+144>>3]=c;zj(156877,b+144|0);c=N[a+84>>2];O[b+136>>3]=N[a+88>>2];O[b+128>>3]=c;zj(156962,b+128|0);O[b+112>>3]=N[a+100>>2];zj(155922,b+112|0);J[b+96>>2]=K[a+136|0];zj(157463,b+96|0);O[b+80>>3]=N[a+120>>2];zj(155602,b+80|0);O[b+64>>3]=N[a+124>>2];zj(155636,b- -64|0);J[b+48>>2]=K[a+137|0];zj(157518,b+48|0);O[b+32>>3]=N[a+132>>2];zj(156041,b+32|0);O[b+16>>3]=N[a+128>>2];zj(156010,b+16|0);J[b>>2]=J[a+56>>2];zj(157263,b);Ui=b+224|0}function Tk(a,b){var c=0,d=0,e=0,f=0,g=0,h=0,i=0;d=Ui-32|0;Ui=d;a:{b:{c:{if(!(!a|!b)){c=J[a>>2];if(!YB(c,b,d)){while(1){b=J[c+88104>>2];J[c+88104>>2]=b?b:1;if(b){continue}break}h=c+4|0;b=J[c>>2];f=(J[c+8>>2]-b|0)/40|0;e=J[c+4>>2]-b|0;g=(e|0)/40|0;if((f|0)==(g|0)){if(H[c+12|0]&1){break c}lj(g+32|0,40,c,c+8|0,h);b=J[c>>2];f=(J[c+8>>2]-b|0)/40|0}i=f;f=g+1|0;if(i>>>0>>0){break b}f=P(f,40)+b|0;J[h>>2]=f;if((e|0)==-40){break a}b=J[d+4>>2];e=f-40|0;J[e>>2]=J[d>>2];J[e+4>>2]=b;b=J[d+28>>2];J[e+24>>2]=J[d+24>>2];J[e+28>>2]=b;b=J[d+20>>2];J[e+16>>2]=J[d+16>>2];J[e+20>>2]=b;b=J[d+12>>2];J[e+8>>2]=J[d+8>>2];J[e+12>>2]=b;I[f-8>>1]=J[a+4>>2];J[c+88104>>2]=0}}Ui=d+32|0;return}Z(151729,53895,501,2284);B()}Z(144782,53895,514,59583);B()}Z(112533,53895,443,51980);B()}function Rj(a){var b=Q(0),c=0,d=0,e=0,f=0;f=Ui-16|0;Ui=f;e=(C(a),v(2));c=e&2147483647;a:{if(c>>>0<=1061752794){b=Q(1);if(c>>>0<964689920){break a}b=Oo(+a);break a}if(c>>>0<=1081824209){if(c>>>0>=1075235812){b=Q(-Oo(((e|0)<0?3.141592653589793:-3.141592653589793)+ +a));break a}d=+a;if((e|0)<0){b=Mo(d+1.5707963267948966);break a}b=Mo(1.5707963267948966-d);break a}if(c>>>0<=1088565717){if(c>>>0>=1085271520){b=Oo(((e|0)<0?6.283185307179586:-6.283185307179586)+ +a);break a}if((e|0)<0){b=Mo(-4.71238898038469-+a);break a}b=Mo(+a+-4.71238898038469);break a}b=Q(a-a);if(c>>>0>=2139095040){break a}c=jF(a,f+8|0);d=O[f+8>>3];b:{switch((c&3)-1|0){default:b=Oo(d);break a;case 0:b=Mo(-d);break a;case 1:b=Q(-Oo(d));break a;case 2:break b}}b=Mo(d)}a=b;Ui=f+16|0;return a}function $m(a,b){var c=0,d=0,e=0,f=0,g=0;f=Ui-32|0;Ui=f;Oj(a,b,6);pj(f+12|0,a,0,37704,1550);d=J[84546];c=J[a+8>>2];J[c+8>>2]=3;O[c>>3]=d|0;J[a+8>>2]=J[a+8>>2]+16;Ck(a,-10002);a:{b:{if(!sm(a,-1)){d=-2;break b}mj(a,173056,32);d=-2;Ll(a,-2);Rl(a,-2);if(!kj(a,-1)){gj(a,-2);break b}uj(a,-2);Wk(a,1,1);if((kj(a,-1)|0)!=3){break a}d=-3;g=ok(a,-1);gj(a,-3);uj(a,b);if(R(g)<2147483648){b=~~g}else{b=-2147483648}Nj(a,-1e4,b);if((kj(a,-1)|0)!=5){break b}d=-2;Pk(a,-2);e=Sj(a,20);rj(a,-10002,76382);c=Vj(a,-1);gj(a,-2);J[e+4>>2]=b;J[e>>2]=c;J[84548]=J[84548]+1;J[e+8>>2]=to(a,-1e4);J[e+12>>2]=to(a,-2);b=J[84546];c=J[a+8>>2];J[c+8>>2]=3;O[c>>3]=b|0;J[a+8>>2]=J[a+8>>2]+16;Ck(a,-10002);J[e+16>>2]=to(a,-2)}gj(a,d);oj(f+12|0);Ui=f+32|0;return e}Z(90514,37704,1570,51752);B()}function V3(a){a=a|0;var b=0,c=0,d=Q(0),e=Q(0),f=Q(0),g=Q(0),h=0;c=Ui-32|0;Ui=c;J[c+28>>2]=0;h=1;a:{b:{switch(vn(a,1,c+28|0)|0){case 0:b=J[c+28>>2];d=N[b+8>>2];e=N[b+4>>2];f=N[b>>2];b=J[a+8>>2];J[b+8>>2]=3;O[b>>3]=Q(Y(Q(Q(d*d)+Q(Q(e*e)+Q(f*f)))));J[a+8>>2]=J[a+8>>2]+16;break a;case 1:b=J[c+28>>2];d=N[b+12>>2];e=N[b+8>>2];f=N[b+4>>2];g=N[b>>2];b=J[a+8>>2];J[b+8>>2]=3;O[b>>3]=Q(Y(Q(Q(d*d)+Q(Q(e*e)+Q(Q(f*f)+Q(g*g))))));J[a+8>>2]=J[a+8>>2]+16;break a;case 2:b=J[c+28>>2];d=N[b+12>>2];e=N[b+8>>2];f=N[b+4>>2];g=N[b>>2];b=J[a+8>>2];J[b+8>>2]=3;O[b>>3]=Q(Y(Q(Q(d*d)+Q(Q(e*e)+Q(Q(f*f)+Q(g*g))))));J[a+8>>2]=J[a+8>>2]+16;break a;default:break b}}J[c+16>>2]=16786;J[c+12>>2]=106998;J[c+8>>2]=108973;J[c+4>>2]=52830;J[c>>2]=53139;h=fj(a,115485,c)}Ui=c+32|0;return h|0}function jN(a,b,c){var d=0,e=0,f=0,g=0,h=0,i=0;a:{b:{c:{d:{g=J[a+24>>2];i=J[a+16>>2];f=J[a+8>>2];if((g|0)!=((i-f|0)/12|0)){h=J[a+4>>2];e:{if(!h){break e}e=J[J[a>>2]+((b>>>0)%(h>>>0)<<2)>>2];if((e|0)==-1){break e}while(1){d=P(e,12)+f|0;if(J[d>>2]==(b|0)){break d}e=J[d+8>>2];if((e|0)!=-1){continue}break}}d=J[a+12>>2];f:{if((i|0)!=(d|0)){J[a+12>>2]=d+12;break f}d=J[a+20>>2];if((d|0)==-1){break c}d=P(d,12)+f|0;J[a+20>>2]=J[d+8>>2]}J[d>>2]=b;c=K[c|0];J[d+8>>2]=-1;H[d+4|0]=c;b=J[a>>2]+((b>>>0)%(h>>>0)<<2)|0;e=J[b>>2];if((e|0)==-1){break b}while(1){b=P(e,12)+f|0;e=J[b+8>>2];if((e|0)!=-1){continue}break}J[b+8>>2]=(d-f|0)/12;break a}Z(144851,55629,229,9606);B()}H[d+4|0]=K[c|0];return}Z(152203,55629,537,2838);B()}J[b>>2]=(d-f|0)/12;g=J[a+24>>2]}J[a+24>>2]=g+1}function Xba(a){a=a|0;var b=0,c=0,d=0,e=0,f=0,g=0,h=0;f=Ui-16|0;Ui=f;J[f+12>>2]=0;g=Ui-16|0;Ui=g;J[g+12>>2]=0;a:{c=J[a+32>>2];if((c|0)==J[a+36>>2]){break a}while(1){b:{d=e<<3;b=d+c|0;c=J[b>>2];b=J[b+4>>2];h=b;c:{if(!(Zi[J[79470]](c,b)&1)){b=J[79491];d:{if(K[b+220|0]&64){Qp(J[b+52>>2],937,0,b,c);break d}jy(b,c,h)}b=J[a+36>>2];c=J[a+32>>2];if(b-c>>3>>>0<=e>>>0){break b}b=b-8|0;h=J[b+4>>2];d=c+d|0;J[d>>2]=J[b>>2];J[d+4>>2]=h;J[a+36>>2]=b;if(b>>>0>=c>>>0){break c}Z(12682,53895,540,43537);B()}e=e+1|0;c=J[a+32>>2];b=J[a+36>>2]}if(b-c>>3>>>0>e>>>0){continue}break a}break}Z(145381,53895,537,43537);B()}Ui=g+16|0;if(K[J[a+48>>2]+89|0]&4){zb()}e:{if(!(K[J[79491]+220|0]&2)){break e}a=_()|0;if(!a){break e}Cj(a,43273,1655);Z(114101,40535,1655,43273);B()}Ui=f+16|0}function cI(a,b,c){var d=0,e=0;a:{if(c>>>0<=127){e=1;d=J[a>>2];if((d-b|0)>0){break a}return-108}if(c>>>0<=255){e=2;d=J[a>>2];if((d-b|0)<2){return-108}b=d-1|0;J[a>>2]=b;H[b|0]=c;d=J[a>>2];c=129;break a}if(c>>>0<=65535){e=3;d=J[a>>2];if((d-b|0)<3){return-108}b=d-1|0;J[a>>2]=b;H[b|0]=c;b=J[a>>2]-1|0;J[a>>2]=b;H[b|0]=c>>>8;d=J[a>>2];c=130;break a}d=J[a>>2];b=d-b|0;if(c>>>0<=16777215){e=4;if((b|0)<4){return-108}b=d-1|0;J[a>>2]=b;H[b|0]=c;b=J[a>>2]-1|0;J[a>>2]=b;H[b|0]=c>>>8;b=J[a>>2]-1|0;J[a>>2]=b;H[b|0]=c>>>16;d=J[a>>2];c=131;break a}e=5;if((b|0)<5){return-108}b=d-1|0;J[a>>2]=b;H[b|0]=c;b=J[a>>2]-1|0;J[a>>2]=b;H[b|0]=c>>>8;b=J[a>>2]-1|0;J[a>>2]=b;H[b|0]=c>>>16;b=J[a>>2]-1|0;J[a>>2]=b;H[b|0]=c>>>24;d=J[a>>2];c=132}b=a;a=d-1|0;J[b>>2]=a;H[a|0]=c;return e}function Dsa(a,b){a=a|0;b=b|0;var c=0,d=0,e=0,f=0,g=0,h=0,i=0,j=0,k=0;c=J[a+76>>2];if(c){d=J[b+4>>2];a:{if((d|0)!=J[b+8>>2]){break a}h=d?d<<1:1;if((h|0)<=(d|0)){break a}if(h){f=Yj(h<<2);d=J[b+4>>2]}b:{if((d|0)<=0){break b}c=0;if(d>>>0>=4){i=d&2147483644;while(1){e=c<<2;J[e+f>>2]=J[e+J[b+12>>2]>>2];g=e|4;J[g+f>>2]=J[g+J[b+12>>2]>>2];g=e|8;J[g+f>>2]=J[g+J[b+12>>2]>>2];e=e|12;J[e+f>>2]=J[e+J[b+12>>2]>>2];c=c+4|0;j=j+4|0;if((i|0)!=(j|0)){continue}break}}e=d&3;if(!e){break b}while(1){i=c<<2;J[i+f>>2]=J[i+J[b+12>>2]>>2];c=c+1|0;k=k+1|0;if((e|0)!=(k|0)){continue}break}}c=J[b+12>>2];if(!(!c|K[b+16|0]!=1)){if(c){J[83765]=J[83765]+1;Zi[J[61751]](J[c-4>>2])}d=J[b+4>>2]}J[b+12>>2]=f;H[b+16|0]=1;J[b+8>>2]=h;c=J[a+76>>2]}J[J[b+12>>2]+(d<<2)>>2]=c;J[b+4>>2]=d+1}}function fu(a,b){var c=0,d=0;a:{b:{c:{d:{e:{f:{if((b|0)>0){b=(J[a+12>>2]+(b<<4)|0)-16|0;c=b>>>0>=M[a+8>>2]?173288:b;break f}c=J[a+8>>2]+(b<<4)|0;if((b|0)>=-9999){break f}g:{switch(b+10002|0){case 2:c=J[a+16>>2]+96|0;break f;case 1:b=J[J[J[J[a+20>>2]+4>>2]>>2]+12>>2];J[a+96>>2]=5;J[a+88>>2]=b;c=a+88|0;break f;case 0:c=a+72|0;break f;default:break g}}c=J[J[J[a+20>>2]+4>>2]>>2];c=K[c+7|0]<-10002-b>>>0?173288:(c+(0-b<<4)|0)-160024|0}b=c;switch(J[b+8>>2]-6|0){case 2:break c;case 1:break d;case 0:break e;default:break b}}c=J[a+8>>2];J[c>>2]=J[J[b>>2]+12>>2];b=5;break a}c=J[a+8>>2];J[c>>2]=J[J[b>>2]+12>>2];b=5;break a}b=J[b>>2];d=J[b+76>>2];c=J[a+8>>2];J[c>>2]=J[b+72>>2];J[c+4>>2]=d;b=J[b+80>>2];break a}c=J[a+8>>2];b=0}J[c+8>>2]=b;J[a+8>>2]=J[a+8>>2]+16}function wn(a,b){var c=0,d=0,e=0,f=0,g=0,h=0;c=Ui-304|0;Ui=c;a:{b:{if(kk(a,1)){g=ok(a,1);c:{if(g<4294967296&g>=0){e=~~g>>>0;break c}e=0}d:{if(e+1>>>0<2){break d}f=e&65535;if(f>>>0>=M[b+2272>>2]){break a}d=J[J[b+2264>>2]+(f<<2)>>2];if(!d){break d}if(L[J[b+2268>>2]+(f<<1)>>1]==(e>>>16|0)){break b}}d=fj(a,125760,0);break b}J[c+296>>2]=0;J[c+300>>2]=0;J[c+288>>2]=0;J[c+292>>2]=0;J[c+280>>2]=0;J[c+284>>2]=0;J[c+272>>2]=0;J[c+276>>2]=0;if(Sk(a,1,c+272|0,0)){d=fj(a,131012,0);break b}e=c+272|0;b=J[84392];f=J[b+2272>>2];e:{if(f){h=J[b+2264>>2];b=0;while(1){d=J[(b<<2)+h>>2];if(d){if(!Wj(d,e,32)){break e}}b=b+1|0;if((f|0)!=(b|0)){continue}break}}d=0}if(d){break b}b=c+16|0;Ds(e,b,256);J[c>>2]=b;d=fj(a,126512,c)}Ui=c+304|0;return d}Z(2686,54166,244,5438);B()}function jA(a){var b=0,c=0,d=0;c=J[a+68>>2];if(c){b=c+596|0;if(b){Zi[J[66509]](b,0,88)|0}b=c+684|0;if(b){Zi[J[66509]](b,0,92)|0}b=c+776|0;if(b){Zi[J[66509]](b,0,108)|0}b=c+888|0;if(b){Zi[J[66509]](b,0,216)|0}b=c+8|0;if(b){Dj(b+112|0);Dj(b+100|0);Dj(b+88|0);Dj(b+76|0);Dj(b- -64|0);Dj(b+52|0);Dj(b+40|0);Dj(b+28|0);Dj(b+16|0);Dj(b+4|0);Zi[J[66509]](b,0,124)|0}b=c+132|0;if(b){Cp(b+224|0);Cp(b+260|0);Dj(b+296|0);po(b);Dj(b+124|0);Cp(b+136|0);Cp(b+172|0);Dj(b+208|0)}cj(J[c+440>>2]);b=J[c+444>>2];if(b){Zi[J[66509]](b,0,J[c+448>>2])|0;cj(J[c+444>>2])}b=J[c+460>>2];if(b){while(1){d=J[b+8>>2];cj(b);b=d;if(b){continue}break}}cj(J[c+480>>2]);b=J[c+496>>2];if(b){while(1){d=J[b+12>>2];cj(J[b>>2]);cj(b);b=d;if(b){continue}break}}AG(a);Zi[J[66509]](c,0,2280)|0}}function cN(a,b,c,d){var e=0,f=0,g=0,h=0,i=0;e=Ui-48|0;Ui=e;H[e+32|0]=0;J[e>>2]=a;J[e+12>>2]=e+16|2;H[e+31|0]=K[(b&15)+181808|0];H[e+30|0]=K[(b>>>4&15)+181808|0];a=(c&255)<<24|b>>>8;H[e+29|0]=K[(a&15)+181808|0];f=(c&65535)<<16|b>>>16;H[e+27|0]=K[(f&15)+181808|0];b=(c&16777215)<<8|b>>>24;H[e+25|0]=K[(b&15)+181808|0];H[e+23|0]=K[(c&15)+181808|0];H[e+22|0]=K[(c>>>4&15)+181808|0];g=c>>>8|0;H[e+21|0]=K[(g&15)+181808|0];h=c>>>16|0;H[e+19|0]=K[(h&15)+181808|0];c=c>>>24|0;i=H[(c&15)+181808|0];H[e+17|0]=i;c=H[(c>>>4|0)+181808|0];H[e+16|0]=c;J[e+4>>2]=c;J[e+8>>2]=i;H[e+28|0]=K[(a>>>4&15)+181808|0];H[e+26|0]=K[(f>>>4&15)+181808|0];H[e+24|0]=K[(b>>>4&15)+181808|0];H[e+20|0]=K[(g>>>4&15)+181808|0];H[e+18|0]=K[(h>>>4&15)+181808|0];Gj(d,1024,26204,e);Ui=e+48|0}function WM(a,b,c){a=a|0;b=b|0;c=c|0;var d=0,e=0,f=0,g=0;a:{if(!Cn(b,52837)){J[a+24>>2]=Tr(c,0);break a}b:{if(Cn(b,57e3)){break b}if(Cn(c,75337)){break b}H[a+92|0]=K[a+92|0]|1;break a}c:{if(Cn(b,45741)){break c}if(Cn(c,62389)){break c}H[a+92|0]=K[a+92|0]|2;break a}if(!Cn(b,57511)){ek(a+28|0,c,64);break a}if(Cn(b,49416)){break a}d=Bm(c,102559);if(!d){break a}e=d+8|0;while(1){d=e;e=d+1|0;f=H[d|0];if((f|0)==32|f-9>>>0<5){continue}break}g=1;d:{switch((f&255)-43|0){case 2:g=0;case 0:f=H[e|0];d=e;break;default:break d}}e=0;f=f-48|0;if(f>>>0<=9){while(1){e=P(e,10)-f|0;f=H[d+1|0];d=d+1|0;f=f-48|0;if(f>>>0<10){continue}break}}d=g?0-e|0:e;d=(d|0)>0?d:0;J[a+96>>2]=(d|0)>=2592e3?2592e3:d}e=J[a>>2];d=J[e+2140>>2];if(d){Zi[d|0](a,J[e+2132>>2],J[a+12>>2],b,c)}}function Xn(a,b,c){var d=0,e=0,f=0;a:{switch(K[b|0]-61|0){case 0:H[(Pz(a,b+1|0,c)+c|0)-1|0]=0;return;case 3:b=b+1|0;d=yj(b);H[a|0]=0;e=c-8|0;if(e>>>0>>0){c=yj(a)+a|0;H[c|0]=46;H[c+1|0]=46;H[c+2|0]=46;H[c+3|0]=0;b=b+(d-e|0)|0}lG(a,b);return;default:break a}}f=kG(b,154449);d=K[152822]|K[152823]<<8;H[a+8|0]=d;H[a+9|0]=d>>>8;d=K[152818]|K[152819]<<8|(K[152820]<<16|K[152821]<<24);e=K[152814]|K[152815]<<8|(K[152816]<<16|K[152817]<<24);H[a|0]=e;H[a+1|0]=e>>>8;H[a+2|0]=e>>>16;H[a+3|0]=e>>>24;H[a+4|0]=d;H[a+5|0]=d>>>8;H[a+6|0]=d>>>16;H[a+7|0]=d>>>24;c=c-17|0;c=c>>>0>f>>>0?f:c;b:{if(K[c+b|0]){b=Qz(a,b,c);b=yj(b)+b|0;H[b|0]=46;H[b+1|0]=46;H[b+2|0]=46;H[b+3|0]=0;break b}lG(a,b)}a=yj(a)+a|0;b=K[85043]|K[85044]<<8;H[a|0]=b;H[a+1|0]=b>>>8;H[a+2|0]=K[85045]}function V5(a){a=a|0;var b=0,c=0,d=0,e=0,f=0;e=Ui+-64|0;Ui=e;b=J[a+8>>2]-J[a+12>>2]>>4;f=b;Bj(a);d=qj(a,-1,J[84364],139081);gj(a,-2);if((b|0)==J[a+8>>2]-J[a+12>>2]>>4){c=Ej(a,1);a:{if(!(c-2>>>0<5|!c)){J[e+4>>2]=c;J[e>>2]=35504;b=fj(a,132054,e);break a}b=e+24|0;J[b+8>>2]=c;J[b+12>>2]=0;J[b>>2]=1;c=J[d+4>>2];if((c|0)!=J[d+8>>2]){J[d+4>>2]=c+40;d=J[b+36>>2];J[c+32>>2]=J[b+32>>2];J[c+36>>2]=d;d=J[b+28>>2];J[c+24>>2]=J[b+24>>2];J[c+28>>2]=d;d=J[b+20>>2];J[c+16>>2]=J[b+16>>2];J[c+20>>2]=d;d=J[b+12>>2];J[c+8>>2]=J[b+8>>2];J[c+12>>2]=d;d=J[b+4>>2];J[c>>2]=J[b>>2];J[c+4>>2]=d;b=0;if(J[a+8>>2]-J[a+12>>2]>>4==(f|0)){break a}Z(143244,37616,702,61469);B()}J[e+16>>2]=(c-J[d>>2]|0)/40;b=fj(a,132935,e+16|0)}Ui=e- -64|0;return b|0}Z(143244,37616,478,51340);B()}function N5(a){a=a|0;var b=0,c=0,d=0,e=0,f=0,g=0;e=Ui+-64|0;Ui=e;c=J[a+8>>2]-J[a+12>>2]>>4;g=c;Bj(a);d=qj(a,-1,J[84364],139081);gj(a,-2);if((c|0)==J[a+8>>2]-J[a+12>>2]>>4){b=Ej(a,1);a:{if(!(b-2>>>0<5|!b)){J[e+4>>2]=b;J[e>>2]=35504;f=fj(a,132091,e);break a}c=e+24|0;J[c+8>>2]=b;J[c+12>>2]=0;J[c>>2]=0;b=J[d+4>>2];if((b|0)!=J[d+8>>2]){J[d+4>>2]=b+40;d=J[c+36>>2];J[b+32>>2]=J[c+32>>2];J[b+36>>2]=d;d=J[c+28>>2];J[b+24>>2]=J[c+24>>2];J[b+28>>2]=d;d=J[c+20>>2];J[b+16>>2]=J[c+16>>2];J[b+20>>2]=d;d=J[c+12>>2];J[b+8>>2]=J[c+8>>2];J[b+12>>2]=d;d=J[c+4>>2];J[b>>2]=J[c>>2];J[b+4>>2]=d;if(J[a+8>>2]-J[a+12>>2]>>4==(g|0)){break a}Z(143244,37616,656,61514);B()}J[e+16>>2]=(b-J[d>>2]|0)/40;f=fj(a,132935,e+16|0)}Ui=e- -64|0;return f|0}Z(143244,37616,478,51340);B()}function Im(a,b,c){var d=0,e=0,f=0,g=0,h=0;f=Ui-16|0;Ui=f;J[f+12>>2]=c;a:{if(!K[a+16|0]){c=J[a+8>>2];break a}d=J[a+12>>2];c=J[a+8>>2];e=J[a+4>>2]+(c^-1)|0;d=(d|0)<(e|0)?d:e;if((d|0)>0){e=0;c=0;if(d>>>0>=4){g=d&2147483644;while(1){H[J[a+8>>2]+(J[a>>2]+c|0)|0]=32;H[(J[a+8>>2]+(J[a>>2]+c|0)|0)+1|0]=32;H[(J[a+8>>2]+(J[a>>2]+c|0)|0)+2|0]=32;H[(J[a+8>>2]+(J[a>>2]+c|0)|0)+3|0]=32;c=c+4|0;h=h+4|0;if((g|0)!=(h|0)){continue}break}}g=d&3;if(g){while(1){H[J[a+8>>2]+(J[a>>2]+c|0)|0]=32;c=c+1|0;e=e+1|0;if((g|0)!=(e|0)){continue}break}}c=J[a+8>>2]}H[a+16|0]=0;c=c+d|0;J[a+8>>2]=c}Pr(J[a>>2]+c|0,J[a+4>>2]-c|0,b,J[f+12>>2]);H[(J[a>>2]+J[a+4>>2]|0)-1|0]=0;J[a+8>>2]=yj(J[a>>2]);if(Hk(b,10)){H[a+16|0]=1}if(J[a+8>>2]>J[a+4>>2]){Z(59639,37783,60,57542);B()}Ui=f+16|0}function O5(a){a=a|0;var b=0,c=0,d=0,e=0,f=0;d=Ui-96|0;Ui=d;b=J[a+8>>2]-J[a+12>>2]|0;Bj(a);e=qj(a,-1,J[84364],139081);gj(a,-2);if(b>>4==J[a+8>>2]-J[a+12>>2]>>4){f=pj(d+76|0,a,0,37616,1234);a:{b:{if(kk(a,1)){c=sC(a,J[J[e+304>>2]+2480>>2]);b=d+32|0;J[b+16>>2]=0;J[b+20>>2]=0;J[b+8>>2]=c;J[b+12>>2]=Yi;J[b>>2]=4;c=J[e+4>>2];if((c|0)==J[e+8>>2]){break b}J[e+4>>2]=c+40;a=J[b+36>>2];J[c+32>>2]=J[b+32>>2];J[c+36>>2]=a;a=J[b+28>>2];J[c+24>>2]=J[b+24>>2];J[c+28>>2]=a;a=J[b+20>>2];J[c+16>>2]=J[b+16>>2];J[c+20>>2]=a;a=J[b+12>>2];J[c+8>>2]=J[b+8>>2];J[c+12>>2]=a;a=J[b+4>>2];J[c>>2]=J[b>>2];J[c+4>>2]=a;a=0;break a}J[d>>2]=35504;a=fj(a,116030,d);break a}J[d+16>>2]=(c-J[e>>2]|0)/40;a=fj(a,132935,d+16|0)}oj(f);Ui=d+96|0;return a|0}Z(143244,37616,478,51340);B()}function Lga(a,b,c,d,e,f,g){a=a|0;b=b|0;c=c|0;d=d|0;e=e|0;f=f|0;g=g|0;var h=0,i=0,j=0;h=Ui-1136|0;Ui=h;i=J[a+360>>2];a=J[J[i+4>>2]+88>>2];J[h+24>>2]=b;J[h+28>>2]=c;J[h+16>>2]=a;a=h+112|0;Gj(a,1024,82395,h+16|0);b=bj(a);c=Yi;j=h+40|0;ij(j,0,72);J[h+48>>2]=b;J[h+52>>2]=c;J[h+40>>2]=a;b=J[J[J[i+12>>2]+80>>2]+8>>2];J[h+60>>2]=0;J[h+56>>2]=b;if(f>>>0<3){c=J[(f<<2)+159228>>2];J[h+64>>2]=c;J[h+68>>2]=gQ(0);f=c>>>0>29?-1:J[(c<<2)+159880>>2];J[h+96>>2]=1;J[h+92>>2]=e;J[h+88>>2]=d;J[h+84>>2]=g;b=0;J[h+76>>2]=0;J[h+80>>2]=0;J[h+72>>2]=f;c=yD(c);J[h+104>>2]=1;J[h+100>>2]=c;J[h+36>>2]=0;c=xQ(J[J[J[i+12>>2]+80>>2]>>2],j,h+36|0);a:{if(c){J[h+4>>2]=c;J[h>>2]=a;dj(4,88458,139696,h);break a}b=J[h+36>>2]}Ui=h+1136|0;Yi=0;return b|0}Z(62644,40837,2298,17046);B()}function Hj(a){var b=0,c=0,d=0,e=0;e=Ui-16|0;Ui=e;d=(C(a),v(2));c=d&2147483647;a:{if(c>>>0<=1061752794){if(c>>>0<964689920){break a}a=Mo(+a);break a}if(c>>>0<=1081824209){b=+a;if(c>>>0<=1075235811){if((d|0)<0){a=Q(-Oo(b+1.5707963267948966));break a}a=Oo(b+-1.5707963267948966);break a}a=Mo(-(((d|0)>=0?-3.141592653589793:3.141592653589793)+b));break a}if(c>>>0<=1088565717){if(c>>>0<=1085271519){b=+a;if((d|0)<0){a=Oo(b+4.71238898038469);break a}a=Q(-Oo(b+-4.71238898038469));break a}a=Mo(((d|0)<0?6.283185307179586:-6.283185307179586)+ +a);break a}if(c>>>0>=2139095040){a=Q(a-a);break a}c=jF(a,e+8|0);b=O[e+8>>3];b:{switch((c&3)-1|0){default:a=Mo(b);break a;case 0:a=Oo(b);break a;case 1:a=Mo(-b);break a;case 2:break b}}a=Q(-Oo(b))}Ui=e+16|0;return a}function WZ(a){a=a|0;var b=0,c=0,d=0,e=0,f=0,g=0,h=0,i=0;d=Ui-16|0;Ui=d;e=wj(a,1);A(+e);c=v(1)|0;g=v(0)|0;b=c>>>20&2047;f=b-1023|0;a:{if(b>>>0>=1075){O[d+8>>3]=e;if((f|0)==1024&(c&1048575|g)!=0){break a}x(0,0);x(1,c&-2147483648);e=+z();break a}if(b>>>0<=1022){J[d+8>>2]=0;J[d+12>>2]=c&-2147483648;break a}b=f&31;if((f&63)>>>0>=32){h=g<>>32-b|c<>3]=e;x(0,0);x(1,c&-2147483648);e=+z();break a}b=f&31;if((f&63)>>>0>=32){h=-1;b=-1048576>>b}else{h=-1048576>>b;b=((1<>2]=f;c=c&h;J[d+12>>2]=c;x(0,f|0);x(1,c|0);e=e-+z()}i=O[d+8>>3];c=J[a+8>>2];J[c+8>>2]=3;O[c>>3]=i;J[a+8>>2]=J[a+8>>2]+16;c=J[a+8>>2];J[c+8>>2]=3;O[c>>3]=e;J[a+8>>2]=J[a+8>>2]+16;Ui=d+16|0;return 2}function lJ(a,b){var c=0,d=0,e=0,f=0,g=0;c=Ui-32|0;Ui=c;e=J[a+48>>2];f=J[a+4>>2];d=J[a+16>>2];a:{b:{c:{d:{if((d|0)!=286){e:{if((d|0)!=123){if((d|0)==40){if(J[a+8>>2]!=(f|0)){qk(a,135809)}tk(a);f:{if(J[a+16>>2]==41){J[c+8>>2]=0;break f}Il(a,c+8|0,0);if(J[a+16>>2]==44){while(1){tk(a);d=c+8|0;kn(J[a+48>>2],d);Il(a,d,0);if(J[a+16>>2]==44){continue}break}}Pw(e,c+8|0,-1)}pp(a,41,40,f);break e}qk(a,73676);break a}GS(a,c+8|0)}a=J[b+8>>2];d=J[c+8>>2];g=0;if(d-13>>>0<2){break b}if(!d){break c}break d}J[c+16>>2]=rs(e,J[a+24>>2]);J[c+8>>2]=4;J[c+24>>2]=-1;J[c+28>>2]=-1;tk(a);a=J[b+8>>2]}kn(e,c+8|0)}g=J[e+36>>2]-a|0}d=g;J[b+8>>2]=tm(e,28,a,d,2);J[b>>2]=13;J[b+16>>2]=-1;J[b+20>>2]=-1;J[(J[J[e>>2]+20>>2]+(J[e+24>>2]<<2)|0)-4>>2]=f;J[e+36>>2]=a+1}Ui=c+32|0}function NV(){var a=0,b=0,c=0,d=0,e=0;a:{b:{c:{d:{a=J[218563];if((a|0)==J[218564]){if(a>>>0>=4294967040){break d}e=J[218562];d=a+256|0;c=sj(d<<2);J[218562]=c;c=hj(c,e,a<<2);J[218563]=d;while(1){J[c+(a<<2)>>2]=a;b=a+1|0;J[c+(b<<2)>>2]=b;b=a+2|0;J[c+(b<<2)>>2]=b;b=a+3|0;J[c+(b<<2)>>2]=b;b=a+4|0;J[c+(b<<2)>>2]=b;b=a+5|0;J[c+(b<<2)>>2]=b;b=a+6|0;J[c+(b<<2)>>2]=b;b=a+7|0;J[c+(b<<2)>>2]=b;a=a+8|0;if((d|0)!=(a|0)){continue}break}cj(e);if(H[874244]&1){break c}lj((J[218560]-J[218558]>>3)+256|0,8,874232,874240,874236);J[218559]=J[218560]}c=J[218562];if(!c){break b}a=J[218564];if(a>>>0>=M[218563]){break a}J[218564]=a+1;return J[c+(a<<2)>>2]}Z(2627,54391,112,2284);B()}Z(151729,54052,501,2284);B()}Z(49493,54391,151,43112);B()}Z(2701,54391,152,43112);B()}function Hz(a,b,c,d){var e=0,f=0,g=0,h=0,i=0;e=Ui-32|0;Ui=e;J[e+20>>2]=b;J[e+24>>2]=a;J[e+16>>2]=c;J[e+12>>2]=d;wp(a,b,c);f=J[d+4>>2];g=J[c+4>>2];a:{if((f|0)==(g|0)&M[d>>2]>=M[c>>2]|f>>>0>g>>>0){break a}f=e+16|0;c=J[f>>2];g=J[c>>2];h=J[c+4>>2];d=J[e+12>>2];i=J[d+4>>2];J[c>>2]=J[d>>2];J[c+4>>2]=i;J[d>>2]=g;J[d+4>>2]=h;c=J[e+16>>2];d=J[c>>2];c=J[c+4>>2];g=J[b+4>>2];if((c|0)==(g|0)&M[b>>2]<=d>>>0|c>>>0>g>>>0){break a}d=e+20|0;c=J[d>>2];b=c;g=J[b>>2];h=J[b+4>>2];b=J[f>>2];f=J[b+4>>2];J[c>>2]=J[b>>2];J[c+4>>2]=f;J[b>>2]=g;J[b+4>>2]=h;b=J[e+20>>2];c=J[b>>2];b=J[b+4>>2];f=J[a+4>>2];if((b|0)==(f|0)&M[a>>2]<=c>>>0|b>>>0>f>>>0){break a}a=J[e+24>>2];c=J[a>>2];f=J[a+4>>2];b=J[d>>2];d=J[b+4>>2];J[a>>2]=J[b>>2];J[a+4>>2]=d;J[b>>2]=c;J[b+4>>2]=f}Ui=e+32|0}function zM(a){var b=0,c=0,d=0,e=0,f=0,g=0;e=Ui-16|0;Ui=e;d=J[a>>2];f=J[a+4>>2];a:{if((d|0)==(f|0)){break a}while(1){c=J[(b<<2)+d>>2];if(c){d=J[c+72>>2];if(d){cj(d);J[c+16>>2]=0;J[c+72>>2]=0}b:{if(H[c+12|0]&1){break b}d=J[c>>2];if(!d){break b}cj(d)}cj(c);f=J[a+4>>2];g=g+1|0;d=J[a>>2]}b=b+1|0;if(b>>>0>2>>>0){continue}break}if(!g){break a}J[e>>2]=g;dj(3,96107,132e3,e)}c:{b=J[a+28>>2];if((b|0)!=J[a+36>>2]){c=0;while(1){if(J[a+32>>2]-b>>2>>>0<=c>>>0){break c}cj(J[(c<<2)+b>>2]);c=c+1|0;b=J[a+28>>2];if(c>>>0>2]-b>>2>>>0){continue}break}}if(!(!b|H[a+40|0]&1)){cj(b)}d:{if(H[a+24|0]&1){break d}b=J[a+16>>2];if(!b){break d}cj(b)}e:{if(H[a+12|0]&1){break e}b=J[a>>2];if(!b){break e}cj(b)}cj(a);Ui=e+16|0;return}Z(145396,53895,487,84789);B()}function xs(a,b,c){var d=0,e=0,f=0,g=0,h=0,i=0;a:{b:{c:{if(J[c+76>>2]>=0){if((b|0)<2){break c}break b}h=1;if((b|0)>1){break b}}d=c;c=J[c+72>>2];J[d+72>>2]=c-1|c;if((b|0)!=1){break a}H[a|0]=0;return a}e=b-1|0;b=a;d:{while(1){e:{f:{g:{d=J[c+4>>2];f=J[c+8>>2];if((d|0)==(f|0)){break g}g=St(d,10,f-d|0);h:{if(g){d=J[c+4>>2];f=(g-d|0)+1|0;break h}d=J[c+4>>2];f=J[c+8>>2]-d|0}i=d;d=e>>>0>f>>>0?f:e;hj(b,i,d);f=d+J[c+4>>2]|0;J[c+4>>2]=f;b=b+d|0;if(g){break e}e=e-d|0;if(!e){break e}if((f|0)==J[c+8>>2]){break g}J[c+4>>2]=f+1;d=K[f|0];break f}d=yz(c);if((d|0)>=0){break f}e=0;if((a|0)==(b|0)){break d}if(K[c|0]&16){break e}break d}H[b|0]=d;b=b+1|0;if((d&255)==10){break e}e=e-1|0;if(e){continue}}break}if(!a){e=0;break d}H[b|0]=0;e=a}if(h){break a}}return e}function LN(a,b){var c=0,d=0,e=0,f=0;a:{b:{f=J[218546];e=J[218544];if(J[218548]!=f-e>>4){c=J[218543];c:{if(!c){break c}d=J[J[218542]+((a>>>0)%(c>>>0)<<2)>>2];if((d|0)==-1){break c}while(1){c=(d<<4)+e|0;if(J[c>>2]==(a|0)){break b}d=J[c+12>>2];if((d|0)!=-1){continue}break}}c=J[218545];d:{if((f|0)!=(c|0)){J[218545]=c+16;break d}c=J[218547];if((c|0)==-1){break a}c=(c<<4)+e|0;J[218547]=J[c+12>>2]}J[c>>2]=a;J[c+4>>2]=J[b>>2];I[c+8>>1]=L[b+4>>1];J[c+12>>2]=-1;b=J[218544];a=J[218542]+((a>>>0)%M[218543]<<2)|0;d=J[a>>2];if((d|0)!=-1){while(1){a=b+(d<<4)|0;d=J[a+12>>2];if((d|0)!=-1){continue}break}a=a+12|0}J[a>>2]=c-b>>4;J[218548]=J[218548]+1;return}Z(144851,55689,229,9606);B()}J[c+4>>2]=J[b>>2];I[c+8>>1]=L[b+4>>1];return}Z(152203,55689,537,2838);B()}function Hp(a,b){var c=0,d=0,e=0,f=0,g=0;a:{c=J[a+104>>2];if(!c){break a}g=J[a+16>>2];while(1){e=J[c+8>>2];if(e>>>0>>0){break a}J[a+104>>2]=J[c>>2];d=c+16|0;b:{if(K[c+5|0]&(K[g+20|0]^-1)&3){if((d|0)!=(e|0)){d=J[c+16>>2];J[J[c+20>>2]+16>>2]=d;J[d+20>>2]=J[c+20>>2]}lk(a,c,32,0);break b}e=J[c+16>>2];J[J[c+20>>2]+16>>2]=e;J[e+20>>2]=J[c+20>>2];e=J[c+8>>2];f=J[e+4>>2];J[c+16>>2]=J[e>>2];J[c+20>>2]=f;J[c+24>>2]=J[e+8>>2];J[c+8>>2]=d;d=J[a+16>>2];J[c>>2]=J[d+28>>2];J[d+28>>2]=c;e=K[c+5|0];c:{if(e&7){break c}if(K[d+21|0]==1){H[c+5|0]=e|4;d=J[c+8>>2];if(J[d+8>>2]<4){break c}f=J[d>>2];if(!(K[f+5|0]&3)){break c}d=J[a+16>>2];if(K[d+21|0]==1){dl(d,f);break c}H[c+5|0]=K[d+20|0]&3|e;break c}H[c+5|0]=K[d+20|0]&3|e}}c=J[a+104>>2];if(c){continue}break}}}function CC(a,b){var c=0,d=0,e=0,f=0,g=0,h=0;a:{b:{c:{d:{d=J[a+16>>2];if(J[a+20>>2]-d>>3>>>0>b>>>0){e=J[a>>2];c=J[a+4>>2]-e>>2;f=c-1|0;g=J[a+32>>2];if(f>>>0>=J[a+36>>2]-g>>2>>>0){break a}h=c;b=d+(b<<3)|0;c=J[b>>2];if(h>>>0<=c>>>0){break d}d=J[(f<<2)+g>>2];J[e+(c<<2)>>2]=0;e=J[a+16>>2];if(d>>>0>=J[a+20>>2]-e>>3>>>0){break a}c=e+(d<<3)|0;e=J[b>>2];J[c>>2]=e;c=J[a+32>>2];if(e>>>0>=J[a+36>>2]-c>>2>>>0){break a}J[c+(e<<2)>>2]=d;c=J[b>>2];d=J[a+4>>2];e=J[a>>2];if(c>>>0>=d-e>>2>>>0){break c}J[e+(c<<2)>>2]=J[d-4>>2];d=J[a+4>>2]-4|0;J[a+4>>2]=d;if(d>>>0>2]){break b}J[b+4>>2]=J[a+48>>2];J[a+48>>2]=b-J[a+16>>2]>>3;return}break a}Z(59182,54416,152,68876);B()}Z(145381,53895,537,43537);B()}Z(12682,53895,540,43537);B()}Z(145396,53895,487,84789);B()}function iP(a,b,c,d){var e=0,f=0;a:{b:{if(!(!((b|0)==16|(1<>>0<=30:0))&b-33>>>0>12)){e=21;if(Zi[J[79453]](a,21)|0){break a}e=16;if(Zi[J[79453]](a,16)|0){break a}e=15;if(Zi[J[79453]](a,15)|0){break a}f=3;if((c|0)!=(d|0)){break b}e=11;if(!(Zi[J[79453]](a,11)|0)){break b}break a}if(b>>>0>20){return b}c:{d:{e=1<>2]==((J[a+144>>2]-J[a+136>>2]|0)/40|0)){j=-4;break a}J[i+20>>2]=-1;J[i+16>>2]=e;J[i+8>>2]=d;J[i+12>>2]=0;J[i+24>>2]=f&65535|g<<16;uN(a+128|0,b,c,i+8|0);f=J[a+36>>2];g=J[a+32>>2];if((f|0)==(g|0)){break a}f=(f-g|0)/672|0;h=f>>>0<=1?1:f;k=h&1;a=0;if(f>>>0>=2){l=h&-2;f=0;while(1){h=g+P(a,672)|0;if(J[h+488>>2]==(b|0)&J[h+492>>2]==(c|0)){J[h+504>>2]=e;J[h+496>>2]=d;J[h+500>>2]=0}h=g+P(a|1,672)|0;if(J[h+488>>2]==(b|0)&J[h+492>>2]==(c|0)){J[h+504>>2]=e;J[h+496>>2]=d;J[h+500>>2]=0}a=a+2|0;f=f+2|0;if((l|0)!=(f|0)){continue}break}}if(!k){break a}a=g+P(a,672)|0;if(J[a+488>>2]!=(b|0)|J[a+492>>2]!=(c|0)){break a}J[a+504>>2]=e;J[a+496>>2]=d;J[a+500>>2]=0}Ui=i+32|0;return j}function An(a,b,c,d){var e=0,f=0,g=0,h=0,i=0;h=Ui-288|0;Ui=h;a:{b:{c:{d:{e:{f:{i=J[a+8>>2];if(i>>>0>=M[a+4>>2]){if(2147418112/(d>>>0)>>>0<=b>>>0){break f}if(b>>>0<=i>>>0){break b}if(!c){break d}c=b-1|0;if(!(!b|c&b)){break d}f=0-!b|0;g=f;f=c|f;e=g;c=e>>>16|0;e=f|((e&65535)<<16|f>>>16);c=c|g;g=c;f=c>>>8|0;c=(c&255)<<24|e>>>8|e;f=f|g;g=f;e=f>>>4|0;f=(f&15)<<28|c>>>4|c;e=e|g;c=e>>>2|0;c=c|e;e=(e&3)<<30|f>>>2|f;c=e|((c&1)<<31|e>>>1);if(c>>>0>>0){break e}c=c+1|0;if(c>>>0>=b>>>0){break c}yl(155047,17,1,J[53386]);Rv();B()}Z(2040,54291,12,2061);B()}Z(138951,54291,17,2061);B()}Z(135464,54291,27,2061);B()}c=b}b=P(c,d);d=ml(J[a>>2],b);if(!d){J[h>>2]=b;a=h+32|0;Un(a,21925,h);break a}J[a+8>>2]=c;J[a>>2]=d}Ui=h+288|0;return}_w(a,J[53386]);Rv();B()}function W3(a){a=a|0;var b=0,c=0,d=Q(0),e=Q(0),f=Q(0),g=Q(0),h=0;c=Ui-32|0;Ui=c;J[c+28>>2]=0;h=1;a:{b:{switch(vn(a,1,c+28|0)|0){case 0:b=J[c+28>>2];d=N[b+8>>2];e=N[b+4>>2];f=N[b>>2];b=J[a+8>>2];J[b+8>>2]=3;O[b>>3]=Q(Q(d*d)+Q(Q(e*e)+Q(f*f)));J[a+8>>2]=J[a+8>>2]+16;break a;case 1:b=J[c+28>>2];d=N[b+12>>2];e=N[b+8>>2];f=N[b+4>>2];g=N[b>>2];b=J[a+8>>2];J[b+8>>2]=3;O[b>>3]=Q(Q(d*d)+Q(Q(e*e)+Q(Q(f*f)+Q(g*g))));J[a+8>>2]=J[a+8>>2]+16;break a;case 2:b=J[c+28>>2];d=N[b+12>>2];e=N[b+8>>2];f=N[b+4>>2];g=N[b>>2];b=J[a+8>>2];J[b+8>>2]=3;O[b>>3]=Q(Q(d*d)+Q(Q(e*e)+Q(Q(f*f)+Q(g*g))));J[a+8>>2]=J[a+8>>2]+16;break a;default:break b}}J[c+16>>2]=16786;J[c+12>>2]=106998;J[c+8>>2]=108973;J[c+4>>2]=31944;J[c>>2]=53139;h=fj(a,115485,c)}Ui=c+32|0;return h|0}function OJ(a,b,c){var d=0,e=0;d=Ui-32|0;Ui=d;a:{b:{c:{d:{e:{if(vB(a)){if(J[b>>2]!=1){break d}I[d+4>>1]=2;J[d+12>>2]=0;J[d+16>>2]=0;J[d+8>>2]=J[zu(b)>>2];b=c&65535;I[d+6>>1]=b<<8|b>>>8;b=zE(a,d+4|0,16);break e}if(!uB(a)){break b}if(J[b>>2]!=2){break c}J[d+24>>2]=0;J[d+28>>2]=0;J[d+16>>2]=0;J[d+20>>2]=0;J[d+8>>2]=0;J[d+12>>2]=0;I[d+4>>1]=10;b=yu(b);e=J[b+12>>2];J[d+20>>2]=J[b+8>>2];J[d+24>>2]=e;e=J[b+4>>2];J[d+12>>2]=J[b>>2];J[d+16>>2]=e;b=c&65535;I[d+6>>1]=b<<8|b>>>8;b=zE(a,d+4|0,28)}a=0;if((b|0)!=-1){break a}if((Pm(36957,428,J[245744])|0)==-32){break a}if((Pm(36957,428,J[245744])|0)==-3){break a}a=Pm(36957,430,J[245744]);break a}Z(107113,36957,402,15741);B()}Z(103662,36957,413,15741);B()}dj(4,99340,152891,0);a=-2}Ui=d+32|0;return a}function Mra(a,b){a=a|0;b=b|0;var c=0,d=0,e=0,f=0,g=0,h=0,i=0,j=0,k=0;c=J[a+248>>2];a:{if((c|0)!=J[a+252>>2]){break a}h=c?c<<1:1;if((h|0)<=(c|0)){break a}if(h){f=Yj(h<<2);c=J[a+248>>2]}b:{if((c|0)<=0){break b}if(c>>>0>=4){i=c&2147483644;while(1){d=e<<2;J[d+f>>2]=J[d+J[a+256>>2]>>2];g=d|4;J[g+f>>2]=J[g+J[a+256>>2]>>2];g=d|8;J[g+f>>2]=J[g+J[a+256>>2]>>2];d=d|12;J[d+f>>2]=J[d+J[a+256>>2]>>2];e=e+4|0;j=j+4|0;if((i|0)!=(j|0)){continue}break}}d=c&3;if(!d){break b}while(1){i=e<<2;J[i+f>>2]=J[i+J[a+256>>2]>>2];e=e+1|0;k=k+1|0;if((d|0)!=(k|0)){continue}break}}e=J[a+256>>2];if(!(!e|K[a+260|0]!=1)){if(e){J[83765]=J[83765]+1;Zi[J[61751]](J[e-4>>2])}c=J[a+248>>2]}J[a+256>>2]=f;H[a+260|0]=1;J[a+252>>2]=h}J[J[a+256>>2]+(c<<2)>>2]=b;J[a+248>>2]=c+1}function ura(a,b){a=a|0;b=b|0;var c=0,d=0,e=0,f=0,g=0,h=0,i=0,j=0,k=0;Zi[J[J[b>>2]+32>>2]](b);d=J[a+8>>2];if((d|0)>0){while(1){c=J[J[a+16>>2]+(e<<2)>>2];if(J[c+232>>2]==2){d=(g=b,h=Zi[J[J[c>>2]+16>>2]](c)|0,i=1,f=J[J[b>>2]+16>>2],Zi[f](g|0,h|0,i|0)|0);i=b,h=d,g=Zi[J[J[c>>2]+20>>2]](c,J[d+8>>2],b)|0,j=1497645650,k=c,f=J[J[b>>2]+20>>2],Zi[f](i|0,h|0,g|0,j|0,k|0);d=J[a+8>>2]}e=e+1|0;if((d|0)>(e|0)){continue}break}}if(J[a+184>>2]>0){e=0;while(1){c=J[J[a+192>>2]+(e<<2)>>2];d=(k=b,j=Zi[J[J[c>>2]+36>>2]](c)|0,g=1,f=J[J[b>>2]+16>>2],Zi[f](k|0,j|0,g|0)|0);g=b,j=d,k=Zi[J[J[c>>2]+40>>2]](c,J[d+8>>2],b)|0,h=1397641027,i=c,f=J[J[b>>2]+20>>2],Zi[f](g|0,j|0,k|0,h|0,i|0);e=e+1|0;if((e|0)>2]){continue}break}}RT(a,b);Zi[J[J[b>>2]+36>>2]](b)}function pQ(a,b,c,d){a=a|0;b=b|0;c=c|0;d=d|0;var e=0,f=0,g=0,h=0;e=J[a+20>>2];if(!e){return-1}g=-1;a:{f=J[J[a+16>>2]+(mxa(b,c,e)<<2)>>2];b:{if((f|0)==-1){break b}e=J[a+96>>2];h=J[a+24>>2];while(1){f=(f<<4)+h|0;if(J[f>>2]!=(b|0)|J[f+4>>2]!=(c|0)){f=J[f+12>>2];if((f|0)!=-1){continue}break b}break}if(!J[e+88>>2]){return-1e3}J[d>>2]=J[a+80>>2];J[d+4>>2]=J[e+84>>2];J[d+8>>2]=J[e+92>>2];J[d+12>>2]=J[e+112>>2];J[d+16>>2]=J[e+76>>2];a=J[f+8>>2];if(a>>>0>=M[e+28>>2]){break a}a=J[e+24>>2]+P(a,36)|0;J[d+40>>2]=J[a+20>>2];J[d+24>>2]=J[a+4>>2];J[d+28>>2]=J[a+8>>2];J[d+32>>2]=J[a+12>>2];J[d+36>>2]=J[a+16>>2];J[d+44>>2]=J[a+28>>2];J[d+48>>2]=J[a+32>>2];a=J[a+24>>2];if(a>>>0<=6){J[d+20>>2]=a}J[d+52>>2]=56;g=0}return g|0}Z(12664,54737,96,84789);B()}function sB(a){var b=0,c=0,d=0,e=0,f=0,g=0,h=0,i=0;g=Ui-16|0;Ui=g;d=bj(a);e=Yi;b=J[245446];h=J[b+100>>2];f=J[b+84>>2];a=-1;a:{if((h|0)==J[b+92>>2]-f>>4){break a}i=b+76|0;b:{a=J[b+80>>2];c:{if(!a){break c}c=J[J[i>>2]+(mxa(d,e,a)<<2)>>2];if((c|0)==-1){break c}a=c;while(1){a=(a<<4)+f|0;if(J[a>>2]==(d|0)&(e|0)==J[a+4>>2]){break b}a=J[a+12>>2];if((a|0)!=-1){continue}break}}a=P(h,1056)+b|0;J[a+128>>2]=1065353216;J[a+120>>2]=0;J[a+124>>2]=1065353216;J[a+112>>2]=d;J[a+116>>2]=e;J[a+132>>2]=Zj(1,J[b+33920>>2]<<3);J[g+12>>2]=h;pl(i,d,e,g+12|0);a=h;break a}a=(c<<4)+f|0;if(J[a>>2]!=(d|0)|J[a+4>>2]!=(e|0)){while(1){c=J[((c<<4)+f|0)+12>>2];a=(c<<4)+f|0;if(J[a>>2]!=(d|0)|J[a+4>>2]!=(e|0)){continue}break}}a=J[((c<<4)+f|0)+8>>2]}Ui=g+16|0;return a}function el(a,b,c){var d=0,e=0;a:{if((a|0)==(b|0)){break a}e=a+c|0;if(b-e>>>0<=0-(c<<1)>>>0){return hj(a,b,c)}d=(a^b)&3;b:{c:{if(a>>>0>>0){if(d){d=a;break b}if(!(a&3)){d=a;break c}d=a;while(1){if(!c){break a}H[d|0]=K[b|0];b=b+1|0;c=c-1|0;d=d+1|0;if(d&3){continue}break}break c}d:{if(d){break d}if(e&3){while(1){if(!c){break a}c=c-1|0;d=c+a|0;H[d|0]=K[b+c|0];if(d&3){continue}break}}if(c>>>0<=3){break d}while(1){c=c-4|0;J[c+a>>2]=J[b+c>>2];if(c>>>0>3){continue}break}}if(!c){break a}while(1){c=c-1|0;H[c+a|0]=K[b+c|0];if(c){continue}break}break a}if(c>>>0<=3){break b}while(1){J[d>>2]=J[b>>2];b=b+4|0;d=d+4|0;c=c-4|0;if(c>>>0>3){continue}break}}if(!c){break a}while(1){H[d|0]=K[b|0];d=d+1|0;b=b+1|0;c=c-1|0;if(c){continue}break}}return a}function Gw(a,b,c){var d=0,e=0,f=0,g=0,h=0;a:{e=J[a>>2];if((b-e|0)<=0){break a}if(K[e|0]!=2){return-98}f=e+1|0;J[a>>2]=f;d=b-f|0;if((d|0)<=0){break a}f=H[f|0];b:{c:{if((f|0)>=0){f=e+2|0;J[a>>2]=f;d=K[e+1|0];break c}g=-100;d:{switch((f&127)-1|0){case 0:if((d|0)==1){break a}d=K[e+2|0];f=e+3|0;J[a>>2]=f;break c;case 1:if(d>>>0<3){break a}d=K[e+3|0];g=K[e+2|0];f=e+4|0;J[a>>2]=f;d=g<<8|d;break c;case 2:if(d>>>0<4){break a}d=K[e+4|0];g=K[e+3|0];h=K[e+2|0];f=e+5|0;J[a>>2]=f;d=g<<8|h<<16|d;break c;case 3:break d;default:break b}}if(d>>>0<5){break a}d=K[e+2|0]|K[e+3|0]<<8|(K[e+4|0]<<16|K[e+5|0]<<24);f=e+6|0;J[a>>2]=f;d=d<<24|(d&65280)<<8|(d>>>8&65280|d>>>24)}g=-96;if(b-f>>>0>>0){break b}g=Vm(c,f,d);J[a>>2]=J[a>>2]+d}return g}return-96}function YE(a,b){var c=0,d=0,e=0,f=0,g=0,h=0,i=0;if(J[a+28>>2]>0){while(1){f=J[a+24>>2]+P(e,28)|0;d=J[f+24>>2];c=0;g=J[b+40>>2];a:{if((g|0)<=0){break a}i=J[b+32>>2];while(1){h=(c<<2)+i|0;if(J[h>>2]!=(d|0)){c=c+1|0;if((g|0)!=(c|0)){continue}break a}break}J[h>>2]=-1}J[b+28>>2]=J[b+28>>2]-1;b:{c:{d:{e:{if(!((d|0)<0|J[b+12>>2]<=(d|0))){c=P(d,36);if(J[(c+J[b+4>>2]|0)+24>>2]!=-1){break e}_U(b,d);if(J[b+12>>2]<=(d|0)){break d}if(J[b+8>>2]<=0){break c}J[(c+J[b+4>>2]|0)+20>>2]=J[b+16>>2];J[(c+J[b+4>>2]|0)+32>>2]=-1;J[b+16>>2]=d;J[b+8>>2]=J[b+8>>2]-1;break b}Z(2361,42086,126,1379);B()}Z(144936,42086,127,1379);B()}Z(2402,42086,97,69648);B()}Z(12510,42086,98,69648);B()}J[f+24>>2]=-1;e=e+1|0;if((e|0)>2]){continue}break}}J[a+28>>2]=0}function IN(a,b,c){var d=0,e=0,f=0,g=0;a:{b:{g=J[a+16>>2];f=J[a+8>>2];if(J[a+24>>2]!=((g-f|0)/184|0)){d=J[a+4>>2];c:{if(!d){break c}e=J[J[a>>2]+((b>>>0)%(d>>>0)<<2)>>2];if((e|0)==-1){break c}while(1){d=P(e,184)+f|0;if(J[d>>2]==(b|0)){break b}e=J[d+180>>2];if((e|0)!=-1){continue}break}}d=J[a+12>>2];d:{if((g|0)!=(d|0)){J[a+12>>2]=d+184;break d}d=J[a+20>>2];if((d|0)==-1){break a}d=P(d,184)+f|0;J[a+20>>2]=J[d+180>>2]}J[d>>2]=b;hj(d+4|0,c,176);J[d+180>>2]=-1;c=J[a+8>>2];b=J[a>>2]+((b>>>0)%M[a+4>>2]<<2)|0;e=J[b>>2];if((e|0)!=-1){while(1){b=c+P(e,184)|0;e=J[b+180>>2];if((e|0)!=-1){continue}break}b=b+180|0}J[b>>2]=(d-c|0)/184;J[a+24>>2]=J[a+24>>2]+1;return}Z(144851,55629,229,9606);B()}hj(d+4|0,c,176);return}Z(152203,55629,537,2838);B()}function vJ(a,b){var c=0,d=0,e=0,f=0,g=0;g=Ui-16|0;Ui=g;a:{b:{c:{if((a|0)!=(b|0)){d=b;c=K[a|0];d:{if(!c){break d}if(!d){e=-1;d=0;while(1){e:{f:{if((c-48&255)>>>0<10|((c&-33)-65&255)>>>0<26|((c|0)==95|c-45>>>0<3)){break f}if((c|0)==126){break f}if(e>>>0<=2){break c}f=-3;c=3;break e}if(!e){break b}f=-1;c=1}e=e+f|0;d=c+d|0;c=K[a+1|0];a=a+1|0;if(c){continue}break}break d}e=2047;while(1){g:{h:{if(!((c-48&255)>>>0<10|((c&-33)-65&255)>>>0<26|((c|0)==126|c-45>>>0<3))){if((c|0)!=95){break h}}if(!e){break b}H[d|0]=c;f=-1;c=1;break g}if(e>>>0<3){break c}J[g>>2]=c<<24>>24;Gj(d,4,85720,g);f=-3;c=3}e=e+f|0;d=c+d|0;c=K[a+1|0];a=a+1|0;if(c){continue}break}}if(b){H[d|0]=0}break a}Z(10062,40891,132,69379);B()}H[d|0]=0;break a}H[d|0]=0}Ui=g+16|0}function _y(a){var b=0,c=0,d=0;b=Ui-144|0;Ui=b;c=PE(333276);H[c+492|0]=1;J[c>>2]=243976;J[c+488>>2]=0;J[c+480>>2]=0;J[c+484>>2]=0;J[b+80>>2]=0;J[b+12>>2]=0;N[b+8>>2]=0;d=J[a+12>>2];J[b+92>>2]=J[a+8>>2];J[b+96>>2]=d;d=J[a>>2];a=J[a+4>>2];J[b+28>>2]=0;J[b+32>>2]=0;J[b+48>>2]=0;J[b+52>>2]=0;J[b+76>>2]=0;J[b+68>>2]=0;J[b+72>>2]=0;J[b+84>>2]=d;J[b+88>>2]=a;J[b+136>>2]=1008981770;J[b+140>>2]=1008981770;J[b+128>>2]=1000593162;J[b+132>>2]=1008981770;H[b+124|0]=0;J[b+116>>2]=1061997773;J[b+120>>2]=1065353216;J[b+108>>2]=1056964608;J[b+112>>2]=0;J[b+100>>2]=0;J[b+104>>2]=0;J[b+20>>2]=0;J[b+24>>2]=0;J[b+16>>2]=1065353216;J[b+36>>2]=1065353216;J[b+40>>2]=0;J[b+44>>2]=0;J[b+56>>2]=1065353216;J[b+60>>2]=0;J[b+64>>2]=0;dT(c,b+8|0);Ui=b+144|0}function AU(a,b){var c=0,d=0,e=0,f=0,g=0,h=0,i=0;h=10;a:{b:{c:{if(J[b+4>>2]){g=J[a+20>>2];if(g>>>0>=16){e=J[a+16>>2];break a}e=J[a+16>>2];i=J[a+12>>2];d=J[a+4>>2];if(i>>>0>d>>>0){break c}f=d;break b}Z(144962,54542,447,48247);B()}f=d+1|0;J[a+4>>2]=f;c=K[d|0]}d=g+8|0;J[a+20>>2]=d;e=e|c<>2]=e;if(g>>>0>7){g=d;break a}c=0;if(f>>>0>>0){J[a+4>>2]=f+1;c=K[f|0]}g=g|16;J[a+20>>2]=g;e=c<>2]=e}d:{e:{f:{f=e&1023;if(f>>>0>2]){c=J[J[b+12>>2]+(f<<2)>>2];if((c|0)>=0){break f}f=J[b+24>>2];b=J[b+28>>2];while(1){d=(e>>>h&1)+(c^-1)|0;if(d>>>0>=b>>>0){break d}h=h+1|0;c=I[f+(d<<1)>>1];if((c|0)<0){continue}break}break e}break d}h=c>>>16|0;c=c&65535}J[a+20>>2]=g-h;J[a+16>>2]=e>>>h;return c}Z(58877,54122,365,84789);B()}function WG(a,b,c,d){a:{switch(b-9|0){case 0:b=J[c>>2];J[c>>2]=b+4;J[a>>2]=J[b>>2];return;case 6:b=J[c>>2];J[c>>2]=b+4;b=I[b>>1];J[a>>2]=b;J[a+4>>2]=b>>31;return;case 7:b=J[c>>2];J[c>>2]=b+4;J[a>>2]=L[b>>1];J[a+4>>2]=0;return;case 8:b=J[c>>2];J[c>>2]=b+4;b=H[b|0];J[a>>2]=b;J[a+4>>2]=b>>31;return;case 9:b=J[c>>2];J[c>>2]=b+4;J[a>>2]=K[b|0];J[a+4>>2]=0;return;case 16:b=J[c>>2]+7&-8;J[c>>2]=b+8;O[a>>3]=O[b>>3];return;case 17:Zi[d|0](a,c);default:return;case 1:case 4:case 14:b=J[c>>2];J[c>>2]=b+4;b=J[b>>2];J[a>>2]=b;J[a+4>>2]=b>>31;return;case 2:case 5:case 11:case 15:b=J[c>>2];J[c>>2]=b+4;J[a>>2]=J[b>>2];J[a+4>>2]=0;return;case 3:case 10:case 12:case 13:break a}}b=J[c>>2]+7&-8;J[c>>2]=b+8;c=J[b+4>>2];J[a>>2]=J[b>>2];J[a+4>>2]=c}function Zha(a){a=a|0;var b=0,c=0,d=0,e=0,f=0,g=0;e=Ui-96|0;Ui=e;c=J[J[a+12>>2]>>2];b=J[a+16>>2];a=J[b+64>>2];f=J[59596];d=J[b+68>>2];a:{if((a|0)==J[f+8>>2]&(d|0)==J[f+12>>2]){d=J[c+144>>2];if(!d){d=Hq();J[c+144>>2]=d}f=J[b+96>>2];g=J[b+100>>2];a=J[c+148>>2];if(!a){a=J[J[c+156>>2]+24>>2]}a=J[a>>2];N[e>>2]=N[b+112>>2];N[e+4>>2]=N[b+116>>2];N[e+8>>2]=N[b+120>>2];N[e+12>>2]=N[b+124>>2];xr(d,a,f,g,0,0,Yp(e+24|0,e));lv(c);break a}g=J[59614];if((a|0)==J[g+8>>2]&(d|0)==J[g+12>>2]){f=J[c+144>>2];if(!f){break a}wy(f,J[b+96>>2],J[b+100>>2]);break a}g=J[55237];if((a|0)==J[g+8>>2]&(d|0)==J[g+12>>2]){H[c+166|0]=K[c+166|0]|1;break a}b=a;a=J[55238];if((b|0)!=J[a+8>>2]|J[a+12>>2]!=(d|0)){break a}H[c+166|0]=K[c+166|0]&254}Ui=e+96|0;return 0}function qC(a){var b=0,c=0,d=0,e=0,f=0,g=0;a:{d=J[a+4>>2];c=J[a>>2];b:{c:{if((d|0)==(c|0)){d:{if(H[a+28|0]&1){break d}b=J[a+16>>2];if(!b){break d}cj(b)}if(!(H[a+12|0]&1)){break c}break b}b=J[a+16>>2];if((b|0)==J[a+20>>2]){break a}d=d-c>>4;g=d>>>0<=1?1:d;d=0;while(1){c=J[a>>2];if(J[a+4>>2]-c>>4>>>0<=d>>>0){break a}e=0;f=J[(c+(d<<4)|0)+8>>2];if(f){while(1){if(J[b+12>>2]){c=0;while(1){cj(J[J[b+16>>2]+(c<<2)>>2]);c=c+1|0;if(c>>>0>2]){continue}break}}c=J[b+16>>2];if(c){cj(c)}b=b+20|0;e=e+1|0;if((f|0)!=(e|0)){continue}break}}d=d+1|0;if((g|0)!=(d|0)){continue}break}e:{if(H[a+28|0]&1){break e}b=J[a+16>>2];if(!b){break e}cj(b)}if(H[a+12|0]&1){break b}}b=J[a>>2];if(!b){break b}cj(b)}cj(a);return}Z(145396,53895,487,84789);B()}function n5(a){a=a|0;var b=0,c=0,d=0,e=0,f=0,g=0,h=0;d=Ui-48|0;Ui=d;b=J[a+8>>2]-J[a+12>>2]|0;Bj(a);e=qj(a,-1,J[84364],139081);gj(a,-2);if(b>>4==J[a+8>>2]-J[a+12>>2]>>4){c=Ej(a,1);f=Ej(a,2);g=Ej(a,3);b=d+8|0;h=Ej(a,4);J[b+32>>2]=h;J[b+36>>2]=h>>31;J[b+24>>2]=g;J[b+28>>2]=g>>31;J[b+16>>2]=f;J[b+20>>2]=f>>31;J[b+8>>2]=c;J[b+12>>2]=c>>31;J[b>>2]=6;c=J[e+4>>2];a:{if((c|0)!=J[e+8>>2]){J[e+4>>2]=c+40;a=J[b+36>>2];J[c+32>>2]=J[b+32>>2];J[c+36>>2]=a;a=J[b+28>>2];J[c+24>>2]=J[b+24>>2];J[c+28>>2]=a;a=J[b+20>>2];J[c+16>>2]=J[b+16>>2];J[c+20>>2]=a;a=J[b+12>>2];J[c+8>>2]=J[b+8>>2];J[c+12>>2]=a;a=J[b+4>>2];J[c>>2]=J[b>>2];J[c+4>>2]=a;a=0;break a}J[d>>2]=(c-J[e>>2]|0)/40;a=fj(a,132935,d)}Ui=d+48|0;return a|0}Z(143244,37616,478,51340);B()}function gL(a,b,c){var d=0,e=0,f=0,g=0,h=0,i=0,j=0;d=L[b+8>>1];f=L[c+8>>1];if((d^f)&255){Zi[J[79434]](a,d&15,d>>>4&15)}d=d>>>11&1;if((d|0)!=(f>>>11&1)){Zi[J[79445]](a,d)}f=L[b+6>>1];d=L[c+6>>1];e=L[b+2>>1]|L[b+4>>1]<<16;g=e>>>21&255;h=L[c+2>>1]|L[c+4>>1]<<16;if((g|0)!=(h>>>21&255)){Zi[J[79439]](a,g)}g=L[b>>1];b=g&15;i=L[c>>1];if((b|0)!=(i&15)){Zi[J[79435]](a,b>>>0>7,(b&4)>>>2|0,(b&2)>>>1|0,b&1)}b=f;f=d^b;d=e|j;c=d^(j|h);if(c&-536870464|f&8191){Zi[J[79441]](a,0,e>>>6&7,b>>>5&255,((b&536870911)<<3|d>>>29)&255)}if(c&-535035904|f&8191){Zi[J[79441]](a,1,e>>>18&7,b>>>5&255,((b&536870911)<<3|d>>>29)&255)}if(!(!(c&63)&(g^i)>>>0<8192)){Zi[J[79443]](a,0,g>>>13|0,e>>>3&7,e&7)}if(c&261632){Zi[J[79443]](a,1,e>>>9&7,e>>>15&7,e>>>12&7)}}function bwa(a,b,c,d,e){a=a|0;b=b|0;c=c|0;d=d|0;e=e|0;var f=Q(0),g=Q(0),h=Q(0),i=Q(0),j=Q(0),k=Q(0),l=Q(0),m=Q(0),n=Q(0);e=0;k=N[c>>2];i=Q(N[c+8>>2]-k);l=N[c+4>>2];f=Q(N[c+12>>2]-l);h=Q(Q(i*i)+Q(f*f));a:{if(h>2];j=N[a+24>>2];n=N[d+8>>2];m=N[a+28>>2];k=Q(k-Q(N[d>>2]+Q(Q(g*j)-Q(n*m))));l=Q(l-Q(N[d+4>>2]+Q(Q(n*j)+Q(g*m))));g=Q(Q(k*i)+Q(l*f));j=N[a+8>>2];j=Q(Q(g*g)-Q(h*Q(Q(Q(k*k)+Q(l*l))-Q(j*j))));if(j>2]))){break a}h=Q(g/h);N[b+8>>2]=h;f=Q(l+Q(f*h));N[b+4>>2]=f;i=Q(k+Q(i*h));N[b>>2]=i;e=1;h=Q(Y(Q(Q(i*i)+Q(f*f))));if(h>2]=m*f;N[b>>2]=i*f}return e|0}function TG(a,b){var c=0,d=0,e=0;Fj(a,0,0);d=+M[b>>2];c=J[a+8>>2];J[c+8>>2]=3;O[c>>3]=d;J[a+8>>2]=J[a+8>>2]+16;ej(a,-2,52997);d=+M[b+4>>2];c=J[a+8>>2];J[c+8>>2]=3;O[c>>3]=d;J[a+8>>2]=J[a+8>>2]+16;ej(a,-2,14691);d=O[b+16>>3];c=J[a+8>>2];J[c+8>>2]=3;O[c>>3]=d;J[a+8>>2]=J[a+8>>2]+16;ej(a,-2,61792);d=O[b+24>>3];c=J[a+8>>2];J[c+8>>2]=3;O[c>>3]=d;J[a+8>>2]=J[a+8>>2]+16;ej(a,-2,32224);d=+M[b+8>>2];c=J[a+8>>2];J[c+8>>2]=3;O[c>>3]=d;J[a+8>>2]=J[a+8>>2]+16;ej(a,-2,49792);d=+M[b+32>>2];c=J[a+8>>2];J[c+8>>2]=3;O[c>>3]=d;J[a+8>>2]=J[a+8>>2]+16;ej(a,-2,46374);c=K[b+36|0];e=J[a+8>>2];J[e+8>>2]=1;J[e>>2]=(c|0)!=0;J[a+8>>2]=J[a+8>>2]+16;ej(a,-2,5871);b=K[b+37|0];c=J[a+8>>2];J[c+8>>2]=1;J[c>>2]=(b|0)!=0;J[a+8>>2]=J[a+8>>2]+16;ej(a,-2,4255)}function M3(a){a=a|0;var b=0,c=Q(0),d=Q(0),e=Q(0),f=0,g=Q(0),h=Q(0),i=Q(0),j=Q(0),k=Q(0),l=Q(0),m=Q(0),n=0;f=Ui-32|0;Ui=f;b=qj(a,1,J[215720],0);e=N[b+8>>2];c=N[b>>2];d=N[b+4>>2];if(!(!(c!=c|d!=d)&e==e)){O[f+24>>3]=e;O[f+16>>3]=d;J[f>>2]=1;O[f+8>>3]=c;fj(a,138436,f)}n=wj(a,2);e=N[b>>2];d=N[b+4>>2];c=N[b+8>>2];b=Sj(a,64);J[b+44>>2]=0;J[b+48>>2]=0;J[b+28>>2]=0;J[b+12>>2]=0;J[b+60>>2]=1065353216;J[b+52>>2]=0;J[b+56>>2]=0;g=Q(n);i=Rj(g);h=Q(Q(1)-i);N[b+40>>2]=Q(Q(c*c)*h)+i;j=Q(Q(d*c)*h);g=Hj(g);k=Q(e*g);N[b+36>>2]=j-k;l=Q(Q(e*c)*h);m=Q(g*d);N[b+32>>2]=l+m;N[b+24>>2]=j+k;N[b+20>>2]=i+Q(Q(d*d)*h);d=Q(Q(e*d)*h);c=Q(g*c);N[b+16>>2]=d-c;N[b+8>>2]=l-m;N[b+4>>2]=d+c;N[b>>2]=i+Q(Q(e*e)*h);rj(a,-1e4,106883);Mj(a,-2);Ui=f+32|0;return 1}function ij(a,b,c){a=a|0;b=b|0;c=c|0;var d=0,e=0,f=0,g=0;a:{if(!c){break a}H[a|0]=b;d=a+c|0;H[d-1|0]=b;if(c>>>0<3){break a}H[a+2|0]=b;H[a+1|0]=b;H[d-3|0]=b;H[d-2|0]=b;if(c>>>0<7){break a}H[a+3|0]=b;H[d-4|0]=b;if(c>>>0<9){break a}d=0-a&3;e=d+a|0;b=P(b&255,16843009);J[e>>2]=b;d=c-d&-4;c=d+e|0;J[c-4>>2]=b;if(d>>>0<9){break a}J[e+8>>2]=b;J[e+4>>2]=b;J[c-8>>2]=b;J[c-12>>2]=b;if(d>>>0<25){break a}J[e+24>>2]=b;J[e+20>>2]=b;J[e+16>>2]=b;J[e+12>>2]=b;J[c-16>>2]=b;J[c-20>>2]=b;J[c-24>>2]=b;J[c-28>>2]=b;g=e&4|24;c=d-g|0;if(c>>>0<32){break a}d=ixa(b,0,1,1);f=Yi;b=e+g|0;while(1){J[b+24>>2]=d;J[b+28>>2]=f;J[b+16>>2]=d;J[b+20>>2]=f;J[b+8>>2]=d;J[b+12>>2]=f;J[b>>2]=d;J[b+4>>2]=f;b=b+32|0;c=c-32|0;if(c>>>0>31){continue}break}}return a|0}function fy(a,b,c,d){var e=0,f=0,g=0,h=0;a:{b:{if(!(H[c+12|0]&1)){lj(b,56,c,c+8|0,c+4|0);e=J[c>>2];if((J[c+8>>2]-e|0)/56>>>0>>0){break b}f=P(b,56);J[c+4>>2]=f+e;ij(e,0,f);if(b){while(1){e=J[c>>2];if((J[c+4>>2]-e|0)/56>>>0<=h>>>0){break a}f=P(h,56);e=f+e|0;f=a+f|0;J[e>>2]=Gk(J[f>>2]);g=J[f+12>>2];J[e+8>>2]=J[f+8>>2];J[e+12>>2]=g;I[e+46>>1]=J[f+44>>2];I[e+44>>1]=J[f+40>>2];g=J[f+48>>2];I[e+48>>1]=g>>>0<=1?1:g;g=K[f+20|0];J[e+40>>2]=d;H[e+36|0]=g|K[e+36|0]&254;g=J[f+28>>2];if(g){J[e+16>>2]=Gk(g);g=J[f+36>>2];J[e+24>>2]=J[f+32>>2];J[e+28>>2]=g}I[e+50>>1]=J[f+52>>2];J[e+32>>2]=J[f+16>>2];h=h+1|0;if((h|0)!=(b|0)){continue}break}}return}Z(151729,53895,501,2284);B()}Z(144782,53895,514,59583);B()}Z(145396,53895,487,84789);B()}function TK(a,b,c,d){var e=0,f=0,g=0,h=0;g=Ui-16|0;Ui=g;J[d>>2]=0;a:{b:{f=J[a>>2];e=J[f+4>>2];c:{if(!e){break c}e=J[J[f>>2]+(mxa(b,c,e)<<2)>>2];if((e|0)==-1){break c}h=J[f+8>>2];while(1){e=h+P(e,56)|0;if(J[e>>2]==(b|0)&(c|0)==J[e+4>>2]){break b}e=J[e+48>>2];if((e|0)!=-1){continue}break}}b=J[f+24>>2];a=-3;if((b|0)!=((J[f+16>>2]-J[f+8>>2]|0)/56|0)){break a}J[g>>2]=b;J[g+4>>2]=J[55821];dj(4,96538,125436,g);a=-11;break a}d:{a=J[a+4>>2];c=J[a+4>>2];e:{if(!c){break e}b=J[e+16>>2];c=J[J[a>>2]+((b>>>0)%(c>>>0)<<2)>>2];if((c|0)==-1){break e}a=J[a+8>>2];while(1){c=a+P(c,24)|0;if((b|0)==J[c>>2]){break d}c=J[c+16>>2];if((c|0)!=-1){continue}break}}Z(139429,42212,849,53178);B()}J[e+36>>2]=J[e+36>>2]+1;J[d>>2]=b;a=0}Ui=g+16|0;return a}function y3(a){a=a|0;var b=0,c=0,d=0,e=0,f=Q(0),g=0,h=0;c=Ui-32|0;Ui=c;d=Vj(a,1);J[c+12>>2]=0;b=Aj(a,2,c+12|0);a:{b:{c:{switch(J[c+12>>2]-2|0){case 1:e=K[b+1|0];if((e&252)!=48){break b}b=K[b+2|0];if((b&252)!=48){break b}b=(b<<4)+d|0;N[c+16>>2]=N[b-768>>2];N[c+20>>2]=N[b-764>>2];N[c+24>>2]=N[b-760>>2];N[c+28>>2]=N[b-756>>2];f=N[((e<<2)+c|0)-176>>2];b=J[a+8>>2];J[b+8>>2]=3;O[b>>3]=f;J[a+8>>2]=J[a+8>>2]+16;a=1;break a;case 0:break c;default:break b}}b=K[b+1|0];if((b&252)!=48){break b}b=(b<<4)+d|0;d=b-768|0;e=J[d>>2];d=J[d+4>>2];b=b-760|0;g=J[b>>2];h=J[b+4>>2];b=Sj(a,16);J[b+8>>2]=g;J[b+12>>2]=h;J[b>>2]=e;J[b+4>>2]=d;rj(a,-1e4,106998);Mj(a,-2);a=1;break a}J[c+4>>2]=106883;J[c>>2]=53139;a=fj(a,131187,c)}Ui=c+32|0;return a|0}function xG(a,b,c,d){var e=0,f=0,g=0,h=0,i=0,j=0;h=J[a+20>>2];i=((h|0)!=0)<<1;j=i+b|0;if(j>>>0>16384){return-27136}e=J[a>>2];g=(J[a+68>>2]+d|0)+1192|0;nH(K[e+180|0],K[e+181|0],J[e+184>>2]>>>1&1,g);d=J[a>>2];d=Zi[J[d+24>>2]](J[d+28>>2],g+2|0,46)|0;a:{if(d){break a}J[J[a+68>>2]+1124>>2]=48;e=J[J[a+64>>2]+100>>2];if(!e){return-27648}d=0;e=e+204|0;b:{if(!e){break b}f=J[e>>2];if(!f){break b}d=Zi[J[f+12>>2]](1)|0}if(!d){return-27904}f=J[e>>2];d=-16e3;c:{if(!f){break c}f=J[f+28>>2];d=-16128;if(!f){break c}d=J[a>>2];d=Zi[f|0](J[e+4>>2],g,J[J[a+68>>2]+1124>>2],i+(J[a+204>>2]+b|0)|0,c,16384-j|0,J[d+24>>2],J[d+28>>2])|0}if(d|!h){break a}H[J[a+204>>2]+b|0]=J[c>>2]>>>8;H[(J[a+204>>2]+b|0)+1|0]=J[c>>2];J[c>>2]=J[c>>2]+2;d=0}return d}function x5(a){a=a|0;var b=0,c=0,d=0,e=0,f=0;d=Ui+-64|0;Ui=d;b=J[a+8>>2]-J[a+12>>2]|0;Bj(a);e=qj(a,-1,J[84364],139081);gj(a,-2);if(b>>4==J[a+8>>2]-J[a+12>>2]>>4){a:{if((kj(a,1)|0)==1){b=d+24|0;J[b+8>>2]=(ck(a,1)|0)!=0;J[b+12>>2]=0;J[b>>2]=11;c=J[e+4>>2];if((c|0)!=J[e+8>>2]){J[e+4>>2]=c+40;a=J[b+36>>2];J[c+32>>2]=J[b+32>>2];J[c+36>>2]=a;a=b;b=J[a+28>>2];J[c+24>>2]=J[a+24>>2];J[c+28>>2]=b;b=J[a+20>>2];J[c+16>>2]=J[a+16>>2];J[c+20>>2]=b;b=J[a+12>>2];J[c+8>>2]=J[a+8>>2];J[c+12>>2]=b;b=J[a+4>>2];J[c>>2]=J[a>>2];J[c+4>>2]=b;break a}J[d>>2]=(c-J[e>>2]|0)/40;f=fj(a,132935,d);break a}b=kj(a,2);if((b|0)==-1){b=60960}else{b=J[(b<<2)+257632>>2]}J[d+16>>2]=b;f=fj(a,118016,d+16|0)}Ui=d- -64|0;return f|0}Z(143244,37616,478,51340);B()}function xqa(a,b,c){a=a|0;b=Q(b);c=c|0;var d=0,e=Q(0),f=Q(0),g=Q(0),h=0,i=Q(0),j=Q(0),k=Q(0),l=Q(0);d=Ui-96|0;Ui=d;e=Q(Zi[J[J[a>>2]+44>>2]](a));J[d+44>>2]=0;J[d+48>>2]=0;h=d- -64|0;J[h>>2]=0;J[h+4>>2]=0;J[d+84>>2]=0;J[d+88>>2]=0;J[d+92>>2]=0;J[d+36>>2]=0;J[d+40>>2]=0;J[d+32>>2]=1065353216;J[d+56>>2]=0;J[d+60>>2]=0;J[d+52>>2]=1065353216;J[d+76>>2]=0;J[d+80>>2]=0;J[d+72>>2]=1065353216;Zi[J[J[a>>2]+8>>2]](a,d+32|0,d+16|0,d);i=N[d+24>>2];j=N[d+8>>2];f=N[d+16>>2];g=N[d>>2];k=N[d+20>>2];l=N[d+4>>2];J[c+12>>2]=0;b=Q(b*Q(.0833333283662796));f=Q(e+Q(Q(g-f)*Q(.5)));f=Q(f+f);f=Q(f*f);g=Q(e+Q(Q(l-k)*Q(.5)));g=Q(g+g);g=Q(g*g);N[c+8>>2]=b*Q(f+g);e=Q(e+Q(Q(j-i)*Q(.5)));e=Q(e+e);e=Q(e*e);N[c+4>>2]=b*Q(f+e);N[c>>2]=b*Q(g+e);Ui=d+96|0}function S1(a){a=a|0;var b=0,c=0,d=Q(0),e=Q(0),f=Q(0),g=Q(0),h=0,i=Q(0),j=Q(0),k=Q(0),l=Q(0);b=Ui-96|0;Ui=b;c=qj(a,1,J[215721],0);e=N[c+8>>2];f=N[c>>2];g=N[c+4>>2];a:{if(!(f!=f|g!=g|e!=e)){d=N[c+12>>2];if(d==d){break a}}d=N[c+12>>2];O[b+72>>3]=e;O[b- -64>>3]=g;O[b+80>>3]=d;O[b+56>>3]=f;J[b+48>>2]=1;fj(a,138642,b+48|0)}h=qj(a,2,J[215721],0);e=N[h+8>>2];f=N[h>>2];g=N[h+4>>2];b:{if(!(f!=f|g!=g|e!=e)){d=N[h+12>>2];if(d==d){break b}}d=N[h+12>>2];O[b+24>>3]=e;O[b+16>>3]=g;O[b+32>>3]=d;O[b+8>>3]=f;J[b>>2]=2;fj(a,138642,b);d=N[h+12>>2];e=N[h+8>>2];g=N[h+4>>2];f=N[h>>2]}i=N[c+12>>2];j=N[c>>2];k=N[c+4>>2];l=N[c+8>>2];c=Sj(a,16);N[c+12>>2]=i+d;N[c+8>>2]=l+e;N[c+4>>2]=k+g;N[c>>2]=j+f;rj(a,-1e4,106998);Mj(a,-2);Ui=b+96|0;return 1}function Qn(a,b,c){var d=0,e=0,f=0,g=0,h=0,i=0,j=0;e=Zi[J[79460]](b,c)|0;f=Zi[J[79461]](b,c)|0;g=Zi[J[79465]](b,c)|0;h=Zi[J[79466]](b,c)|0;i=Zi[J[79462]](b,c)|0;j=Zi[J[79478]](b,c)|0;d=J[a+8>>2];J[d+8>>2]=3;O[d>>3]=+(b>>>0)+ +(c>>>0)*4294967296;J[a+8>>2]=J[a+8>>2]+16;ej(a,-2,66984);b=J[a+8>>2];J[b+8>>2]=3;O[b>>3]=e|0;J[a+8>>2]=J[a+8>>2]+16;ej(a,-2,52997);b=J[a+8>>2];J[b+8>>2]=3;O[b>>3]=f|0;J[a+8>>2]=J[a+8>>2]+16;ej(a,-2,14691);b=J[a+8>>2];J[b+8>>2]=3;O[b>>3]=g|0;J[a+8>>2]=J[a+8>>2]+16;ej(a,-2,52694);b=J[a+8>>2];J[b+8>>2]=3;O[b>>3]=h|0;J[a+8>>2]=J[a+8>>2]+16;ej(a,-2,19891);b=J[a+8>>2];J[b+8>>2]=3;O[b>>3]=i|0;J[a+8>>2]=J[a+8>>2]+16;ej(a,-2,64474);b=J[a+8>>2];J[b+8>>2]=3;O[b>>3]=j|0;J[a+8>>2]=J[a+8>>2]+16;ej(a,-2,21428)}function K1(a){a=a|0;var b=0,c=0,d=Q(0),e=Q(0),f=Q(0),g=Q(0),h=0,i=Q(0),j=Q(0),k=Q(0),l=Q(0);b=Ui-96|0;Ui=b;c=qj(a,1,J[215721],0);e=N[c+8>>2];f=N[c>>2];g=N[c+4>>2];a:{if(!(f!=f|g!=g|e!=e)){d=N[c+12>>2];if(d==d){break a}}d=N[c+12>>2];O[b+72>>3]=e;O[b- -64>>3]=g;O[b+80>>3]=d;O[b+56>>3]=f;J[b+48>>2]=1;fj(a,138642,b+48|0)}h=qj(a,2,J[215721],0);e=N[h+8>>2];f=N[h>>2];g=N[h+4>>2];b:{if(!(f!=f|g!=g|e!=e)){d=N[h+12>>2];if(d==d){break b}}d=N[h+12>>2];O[b+24>>3]=e;O[b+16>>3]=g;O[b+32>>3]=d;O[b+8>>3]=f;J[b>>2]=2;fj(a,138642,b);d=N[h+12>>2];e=N[h+8>>2];g=N[h+4>>2];f=N[h>>2]}i=N[c+12>>2];j=N[c>>2];k=N[c+4>>2];l=N[c+8>>2];c=Sj(a,16);N[c+12>>2]=i-d;N[c+8>>2]=l-e;N[c+4>>2]=k-g;N[c>>2]=j-f;rj(a,-1e4,106998);Mj(a,-2);Ui=b+96|0;return 1}function YJ(a,b,c,d,e){var f=0,g=0,h=0,i=0,j=0,k=0,l=0,m=0,n=0,o=0;f=Ui-704|0;Ui=f;i=K[b|0]|K[b+1|0]<<8|(K[b+2|0]<<16|K[b+3|0]<<24);j=i+4|0;l=c-b|0;if((j|0)>(l|0)){c=f+560|0;ij(c,0,129);h=J[e+140>>2];a:{if(!h){break a}k=c+h|0;c=J[e+144>>2];g=-1;if((h|0)!=1){n=h&-2;g=0;while(1){o=g;c=(((c|0)<=0?127:-1)+c|0)%128|0;H[(g^-1)+k|0]=K[c+e|0];c=(c+((c|0)<=0?127:-1)|0)%128|0;H[(g^-2)+k|0]=K[e+c|0];g=g+2|0;m=m+2|0;if((n|0)!=(m|0)){continue}break}g=-3-o|0}if(!(h&1)){break a}H[g+k|0]=K[((((c|0)<=0?127:-1)+c|0)%128|0)+e|0]}c=J[e+136>>2];J[f+32>>2]=J[e+132>>2];J[f+36>>2]=c;J[f+20>>2]=i;J[f+24>>2]=j;J[f+28>>2]=l;J[f+40>>2]=f+560;J[f+16>>2]=d;c=f+48|0;Gj(c,512,149756,f+16|0);J[f>>2]=c;fj(a,31902,f)}mj(a,b+4|0,i);Ui=f+704|0;return j}function NG(a,b,c,d,e,f){var g=0;g=Ui-80|0;Ui=g;a:{if((f|0)>=16384){il(g+32|0,b,c,d,e,0,0,0,2147352576);d=J[g+40>>2];e=J[g+44>>2];b=J[g+32>>2];c=J[g+36>>2];if(f>>>0<32767){f=f-16383|0;break a}il(g+16|0,b,c,d,e,0,0,0,2147352576);f=(f>>>0>=49149?49149:f)-32766|0;d=J[g+24>>2];e=J[g+28>>2];b=J[g+16>>2];c=J[g+20>>2];break a}if((f|0)>-16383){break a}il(g- -64|0,b,c,d,e,0,0,0,7471104);d=J[g+72>>2];e=J[g+76>>2];b=J[g+64>>2];c=J[g+68>>2];if(f>>>0>4294934644){f=f+16269|0;break a}il(g+48|0,b,c,d,e,0,0,0,7471104);f=(f>>>0<=4294918376?-48920:f)+32538|0;d=J[g+56>>2];e=J[g+60>>2];b=J[g+48>>2];c=J[g+52>>2]}il(g,b,c,d,e,0,0,0,f+16383<<16);b=J[g+12>>2];J[a+8>>2]=J[g+8>>2];J[a+12>>2]=b;b=J[g+4>>2];J[a>>2]=J[g>>2];J[a+4>>2]=b;Ui=g+80|0}function DU(a,b,c,d,e,f){var g=0,h=0,i=0,j=0;a:{if((K[a|0]|K[a+1|0]<<8)!=17011|b>>>0<78|((K[a+2|0]|K[a+3|0]<<8)!=19|(K[a+4|0]|K[a+5|0]<<8)!=77)){break a}if((K[a+8|0]|K[a+9|0]<<8|(K[a+10|0]<<16|K[a+11|0]<<24))+77>>>0>b>>>0){break a}h=K[a+14|0]|(K[a+15|0]<<8|K[a+16|0]<<16);if(!h){break a}i=K[a+17|0]|(K[a+18|0]<<8|K[a+19|0]<<16);if(!i){break a}g=K[a+65|0]|K[a+66|0]<<8|(K[a+67|0]<<16|K[a+68|0]<<24);if(g>>>0>=b>>>0|b-g>>>0>>0){break a}g=a+g|0;b=0;while(1){a=g+P(b,23)|0;if(!(!(K[a+1|0]<<8|K[a+2|0]<<16|K[a|0])&K[a+3|0]==(c|0))){b=b+1|0;if((h|0)!=(b|0)){continue}break a}break}if(!i){break a}J[d>>2]=K[a+5|0]|K[a+6|0]<<8;J[e>>2]=K[a+7|0]|K[a+8|0]<<8;J[f>>2]=P(K[a+11|0]|K[a+12|0]<<8,K[a+9|0]|K[a+10|0]<<8);j=1}return j}function lqa(a,b,c,d,e,f,g,h,i,j){a=a|0;b=b|0;c=c|0;d=d|0;e=e|0;f=f|0;g=g|0;h=h|0;i=i|0;j=j|0;a:{if(!J[h+44>>2]){break a}d=J[h+20>>2];b:{c:{if(H[h+61|0]&1){if((d|0)<=0){break a}e=0;b=J[a+8>>2];if((b|0)<=0){break a}break c}if((d|0)<=0){break a}e=0;b=J[a+8>>2];if((b|0)<=0){break a}break b}while(1){c=0;if((b|0)>0){while(1){d=J[a+16>>2]+P(J[J[a+76>>2]+(c<<2)>>2],136)|0;aT(J[d+104>>2],J[d+108>>2],d);c=c+1|0;if((c|0)!=(b|0)){continue}break}d=J[h+20>>2]}e=e+1|0;if((e|0)>=(d|0)){break a}b=J[a+8>>2];continue}}while(1){c=0;if((b|0)>0){while(1){d=J[a+16>>2]+P(J[J[a+76>>2]+(c<<2)>>2],136)|0;aT(J[d+104>>2],J[d+108>>2],d);c=c+1|0;if((c|0)!=(b|0)){continue}break}d=J[h+20>>2]}e=e+1|0;if((e|0)>=(d|0)){break a}b=J[a+8>>2];continue}}}function al(a,b){var c=0,d=0,e=0;c=J[a+112>>2];if(!c){H[a+6|0]=b;if(J[J[a+16>>2]+88>>2]){c=J[a+40>>2];J[a+20>>2]=c;c=J[c>>2];J[a+12>>2]=c;Hp(a,c);c=J[a+12>>2];a:{b:{c:{switch(b-2|0){case 2:J[c>>2]=zk(a,2985,17);b=4;break b;case 3:J[c>>2]=zk(a,56882,23);b=4;break b;case 0:case 1:break c;default:break a}}b=J[a+8>>2];d=b-16|0;e=J[d+4>>2];J[c>>2]=J[d>>2];J[c+4>>2]=e;b=J[b-8>>2]}J[c+8>>2]=b}H[a+57|0]=1;J[a+8>>2]=c+16;I[a+52>>1]=L[a+54>>1];b=J[a+48>>2];d:{if((b|0)<20001){break d}c=J[a+40>>2];if((J[a+20>>2]-c|0)>479975){break d}b=lk(a,c,P(b,24),48e4);J[a+48>>2]=2e4;J[a+40>>2]=b;J[a+36>>2]=b+479976;J[a+20>>2]=b+(J[a+20>>2]-c|0)}J[a+112>>2]=0;J[a+116>>2]=0;Zi[J[J[a+16>>2]+88>>2]](a)|0}Ra(1);B()}J[c+160>>2]=b;ir(c+4|0,1);B()}function Xj(a,b){var c=0,d=0,e=0,f=0;a:{if((b|0)>0){b=(J[a+12>>2]+(b<<4)|0)-16|0;c=b>>>0>=M[a+8>>2]?173288:b;break a}c=J[a+8>>2]+(b<<4)|0;if((b|0)>=-9999){break a}b:{switch(b+10002|0){case 2:c=J[a+16>>2]+96|0;break a;case 1:b=J[J[J[J[a+20>>2]+4>>2]>>2]+12>>2];J[a+96>>2]=5;J[a+88>>2]=b;c=a+88|0;break a;case 0:c=a+72|0;break a;default:break b}}c=J[J[J[a+20>>2]+4>>2]>>2];c=K[c+7|0]<-10002-b>>>0?173288:(c+(0-b<<4)|0)-160024|0}b=J[a+8>>2];d=UA(a,J[c>>2],b-32|0);e=b-16|0;f=J[e+4>>2];J[d>>2]=J[e>>2];J[d+4>>2]=f;J[d+8>>2]=J[b-8>>2];b=J[a+8>>2];c:{if(J[b-8>>2]<4|!(K[J[b-16>>2]+5|0]&3)){break c}c=J[c>>2];if(!(K[c+5|0]&4)){break c}b=J[a+16>>2];H[c+5|0]=K[c+5|0]&251;J[c+24>>2]=J[b+40>>2];J[b+40>>2]=c;b=J[a+8>>2]}J[a+8>>2]=b-32}function y5(a){a=a|0;var b=0,c=0,d=0,e=0,f=0;d=Ui+-64|0;Ui=d;b=J[a+8>>2]-J[a+12>>2]|0;Bj(a);e=qj(a,-1,J[84364],139081);gj(a,-2);if(b>>4==J[a+8>>2]-J[a+12>>2]>>4){f=wj(a,1);a:{if(f<4294967296&f>=0){b=~~f>>>0;break a}b=0}b:{if(b>>>0>=8){J[d+4>>2]=b;J[d>>2]=35504;a=fj(a,142646,d);break b}c=d+24|0;J[c+8>>2]=b;J[c+12>>2]=0;J[c>>2]=12;b=J[e+4>>2];if((b|0)!=J[e+8>>2]){J[e+4>>2]=b+40;a=J[c+36>>2];J[b+32>>2]=J[c+32>>2];J[b+36>>2]=a;a=J[c+28>>2];J[b+24>>2]=J[c+24>>2];J[b+28>>2]=a;a=J[c+20>>2];J[b+16>>2]=J[c+16>>2];J[b+20>>2]=a;a=J[c+12>>2];J[b+8>>2]=J[c+8>>2];J[b+12>>2]=a;a=J[c+4>>2];J[b>>2]=J[c>>2];J[b+4>>2]=a;a=0;break b}J[d+16>>2]=(b-J[e>>2]|0)/40;a=fj(a,132935,d+16|0)}Ui=d- -64|0;return a|0}Z(143244,37616,478,51340);B()}function x$(a){a=a|0;var b=0,c=0,d=0,e=0,f=0,g=0;f=Ui-16|0;Ui=f;e=Sj(a,4);J[e>>2]=0;rj(a,-1e4,135350);Mj(a,-2);b=Ui-48|0;Ui=b;J[b+32>>2]=J[54204];c=J[54203];J[b+24>>2]=J[54202];J[b+28>>2]=c;c=J[54201];J[b+16>>2]=J[54200];J[b+20>>2]=c;g=b+16|13;a:{b:{while(1){c:{yV(g);J[b>>2]=384;J[b+4>>2]=0;c=Wa(-100,b+16|0,32962,b|0)|0;if(c>>>0>=4294963201){J[245744]=0-c;c=-1}if((c|0)>=0){break c}d=d+1|0;if((d|0)!=100){continue}break b}break}Va(-100,b+16|0,0)|0;d=IV(c,135343);if(d){break a}Aa(c|0)|0}d=0}Ui=b+48|0;J[e>>2]=d;c=1;if(!d){e=J[245744];b=J[a+8>>2];J[b+8>>2]=0;J[a+8>>2]=b+16;J[f>>2]=L[((e>>>0<=153?e:0)<<1)+215472>>1]+213556;ik(a,31902,f);b=J[a+8>>2];J[b+8>>2]=3;O[b>>3]=e|0;J[a+8>>2]=J[a+8>>2]+16;c=3}Ui=f+16|0;return c|0}function lja(a){a=a|0;var b=0,c=0,d=0,e=0,f=0;d=J[a>>2];b=ij(nj(148),0,148);J[b+88>>2]=0;J[b+92>>2]=0;J[b+56>>2]=0;J[b+60>>2]=0;J[b+52>>2]=-1;e=b- -64|0;c=e;J[c>>2]=0;J[c+4>>2]=0;J[b+72>>2]=0;J[b+76>>2]=0;J[b+80>>2]=0;J[b+84>>2]=0;J[b+96>>2]=0;J[b+100>>2]=0;J[b+104>>2]=0;J[b+108>>2]=0;J[b+112>>2]=0;J[b+116>>2]=0;J[b+120>>2]=0;J[b+124>>2]=0;J[b+128>>2]=0;J[b+132>>2]=0;J[b+92>>2]=-1;c=J[d+8>>2];f=J[a+16>>2];J[b>>2]=J[d+4>>2];c=c>>>0>f>>>0?f:c;BC(b+4|0,c);if(!(H[b+68|0]&1)){a:{lj(c,336,b+56|0,e,b+60|0);if(H[b+116|0]&1){break a}lj(0,4,b+104|0,b+112|0,b+108|0);J[b+140>>2]=0;J[b+144>>2]=0;J[b+108>>2]=J[b+104>>2];J[b+136>>2]=J[J[d>>2]+2480>>2];J[J[a+12>>2]>>2]=b;vq(J[d+4>>2],279,b);return 0}}Z(151729,53895,501,2284);B()}function xK(a,b,c,d,e){var f=0,g=0,h=0,i=0,j=0,k=0;h=Ui-2192|0;Ui=h;i=J[a+52>>2];Tj(i);a:{f=J[a+4>>2];g=J[a>>2];b:{c:{if((f|0)!=(g|0)){f=f-g>>4;k=f>>>0<=1?1:f;f=0;while(1){g=J[a>>2];if(J[a+4>>2]-g>>4>>>0<=f>>>0){break a}j=g+(f<<4)|0;g=J[j+4>>2];g=Zi[J[J[g>>2]+28>>2]](J[g+4>>2],b,c,d,e)|0;if((g|0)!=-2){if(!g){Ls(J[j+4>>2],h+4|0);break c}d=(g|0)==-3?-9:-21;break b}f=f+1|0;if((k|0)!=(f|0)){continue}break}}d=-3;if(!J[a+40>>2]){break b}f=J[a+20>>2];if(!f){break b}f=J[J[a+16>>2]+(mxa(b,c,f)<<2)>>2];if((f|0)==-1){break b}g=J[a+24>>2];while(1){a=g+P(f,24)|0;if(J[a>>2]!=(b|0)|J[a+4>>2]!=(c|0)){f=J[a+16>>2];if((f|0)!=-1){continue}break b}break}J[e>>2]=J[a+12>>2]}d=0}Lj(i);Ui=h+2192|0;return d}Z(145396,53895,487,84789);B()}function rja(a){a=a|0;var b=0,c=0,d=0,e=0,f=0,g=0;e=J[a+8>>2];b=J[e+20>>2];f=J[J[a+16>>2]>>2];if(f>>>0>2]-b>>3>>>0){b=J[b+(f<<3)>>2];d=J[e+4>>2];if(b>>>0>2]-d>>2>>>0){c=J[J[J[a+4>>2]+80>>2]>>2];b=J[d+(b<<2)>>2];g=J[b+152>>2];d=J[b+156>>2];if(!d){d=J[g+4>>2]}a=J[b+192>>2];if(!a){a=J[g+8>>2]}if(J[J[a>>2]+168>>2]==1){OD(e,J[d+8>>2],J[d+12>>2])}a=J[b+192>>2];if(a){vj(c,a)}a=J[b+160>>2];if(a){vj(c,a)}a=J[b+164>>2];if(a){vj(c,a)}a=J[b+168>>2];if(a){vj(c,a)}a=J[b+172>>2];if(a){vj(c,a)}a=J[b+176>>2];if(a){vj(c,a)}a=J[b+180>>2];if(a){vj(c,a)}a=J[b+184>>2];if(a){vj(c,a)}a=J[b+188>>2];if(a){vj(c,a)}a=J[b+156>>2];if(a){vj(c,a)}a=J[b+148>>2];if(a){zr(a)}cj(b);CC(e+4|0,f);return 0}}Z(145396,53895,487,84789);B()}function pT(a){a=a|0;var b=0;J[a>>2]=243748;if(K[a+240|0]==1){b=J[a+176>>2];Zi[J[J[b>>2]>>2]](b)|0;b=J[a+176>>2];if(b){J[83765]=J[83765]+1;Zi[J[61751]](J[b-4>>2])}}if(K[a+241|0]==1){b=J[a+172>>2];Zi[J[J[b>>2]>>2]](b)|0;b=J[a+172>>2];if(b){J[83765]=J[83765]+1;Zi[J[61751]](J[b-4>>2])}}b=J[a+256>>2];if(!(b?!b|K[a+260|0]!=1:1)){J[83765]=J[83765]+1;Zi[J[61751]](J[b-4>>2])}J[a+256>>2]=0;H[a+260|0]=1;J[a+248>>2]=0;J[a+252>>2]=0;b=J[a+212>>2];if(!(b?!b|K[a+216|0]!=1:1)){J[83765]=J[83765]+1;Zi[J[61751]](J[b-4>>2])}J[a+212>>2]=0;H[a+216|0]=1;J[a+204>>2]=0;J[a+208>>2]=0;b=J[a+192>>2];if(!(b?!b|K[a+196|0]!=1:1)){J[83765]=J[83765]+1;Zi[J[61751]](J[b-4>>2])}J[a+192>>2]=0;H[a+196|0]=1;J[a+184>>2]=0;J[a+188>>2]=0;return NE(a)|0}function A3(a){a=a|0;var b=0,c=0,d=0,e=0,f=0,g=Q(0),h=Q(0),i=Q(0),j=Q(0),k=Q(0),l=Q(0),m=Q(0),n=Q(0),o=Q(0),p=Q(0),q=Q(0),r=Q(0),s=Q(0),t=Q(0),u=Q(0);b=Ui-144|0;Ui=b;J[b+140>>2]=0;f=Aj(a,1,b+140|0);c=an(a,2);d=J[b+140>>2]+350|0;e=nj((d|0)<0?-1:d);g=N[c>>2];h=N[c+16>>2];i=N[c+32>>2];j=N[c+48>>2];k=N[c+4>>2];l=N[c+20>>2];m=N[c+36>>2];n=N[c+52>>2];o=N[c+8>>2];p=N[c+24>>2];q=N[c+40>>2];r=N[c+56>>2];s=N[c+12>>2];t=N[c+28>>2];u=N[c+44>>2];O[b+128>>3]=N[c+60>>2];O[b+120>>3]=u;O[b+112>>3]=t;O[b+104>>3]=s;O[b+96>>3]=r;O[b+88>>3]=q;O[b+80>>3]=p;O[b+72>>3]=o;O[b- -64>>3]=n;O[b+56>>3]=m;O[b+48>>3]=l;O[b+40>>3]=k;O[b+32>>3]=j;O[b+24>>3]=i;O[b+16>>3]=h;J[b>>2]=f;O[b+8>>3]=g;Gj(e,d,138186,b);xj(a,e);cj(e);Ui=b+144|0;return 1}function zA(a,b,c){var d=0,e=0,f=0,g=0;e=Ui-80|0;Ui=e;d=J[a>>2];if(d){d=J[d+8>>2]}else{d=0}f=d&255;H[e+79|0]=0;g=a+12|0;a:{b:{if(!(!b|!c)){while(1){d=Fn(a);if(d){break a}d=Jl(a,g,f);if(d){break a}d=Jl(a,e+79|0,1);if(d){break a}d=Jl(a,b,c);if(d){break a}d=Dm(a,e);if(d){break a}d=iq(a,e,f);if(d){break a}d=Jl(a,g,f);if(d){break a}d=Dm(a,g);if(d){break a}d=K[e+79|0]+1|0;H[e+79|0]=d;if((d&255)>>>0<2){continue}break}break b}while(1){d=Fn(a);if(d){break a}d=Jl(a,g,f);if(d){break a}d=Jl(a,e+79|0,1);if(d){break a}d=Dm(a,e);if(d){break a}d=iq(a,e,f);if(d){break a}d=Jl(a,g,f);if(d){break a}d=Dm(a,g);if(d){break a}b=K[e+79|0]+1|0;H[e+79|0]=b;if((b|0)!=(b&255)){continue}break}}d=0}Zi[J[66509]](e,0,64)|0;Ui=e+80|0;return d}function Ik(a,b,c){var d=0,e=0,f=0;a:{if((b|0)>0){b=(J[a+12>>2]+(b<<4)|0)-16|0;d=b>>>0>=M[a+8>>2]?173288:b;break a}d=J[a+8>>2]+(b<<4)|0;if((b|0)>=-9999){break a}b:{switch(b+10002|0){case 2:d=J[a+16>>2]+96|0;break a;case 1:b=J[J[J[J[a+20>>2]+4>>2]>>2]+12>>2];J[a+96>>2]=5;J[a+88>>2]=b;d=a+88|0;break a;case 0:d=a+72|0;break a;default:break b}}d=J[J[J[a+20>>2]+4>>2]>>2];d=K[d+7|0]<-10002-b>>>0?173288:(d+(0-b<<4)|0)-160024|0}b=J[a+8>>2];c=Sw(a,J[d>>2],c);e=b-16|0;f=J[e+4>>2];J[c>>2]=J[e>>2];J[c+4>>2]=f;J[c+8>>2]=J[b-8>>2];b=J[a+8>>2];c:{if(J[b-8>>2]<4|!(K[J[b-16>>2]+5|0]&3)){break c}c=J[d>>2];if(!(K[c+5|0]&4)){break c}b=J[a+16>>2];H[c+5|0]=K[c+5|0]&251;J[c+24>>2]=J[b+40>>2];J[b+40>>2]=c;b=J[a+8>>2]}J[a+8>>2]=b-16}function zk(a,b,c){var d=0,e=0,f=0,g=0,h=0;if(c){e=b-1|0;g=c>>>5|0;h=g^-1;d=c;f=d;while(1){f=K[d+e|0]+((f<<5)+(f>>>2|0)|0)^f;d=d+h|0;if(g>>>0>>0){continue}break}}e=J[a+16>>2];d=J[J[e>>2]+((J[e+8>>2]-1&f)<<2)>>2];a:{if(d){while(1){b:{if(J[d+12>>2]!=(c|0)){break b}if(Wj(b,d+16|0,c)){break b}a=K[d+5|0];if(!(a&(K[e+20|0]^-1)&3)){break a}H[d+5|0]=a^3;return d}d=J[d>>2];if(d){continue}break}}if(c+19>>>0<=17){Dl(a)}d=lk(a,0,0,c+17|0);J[d+8>>2]=f;J[d+12>>2]=c;e=K[J[a+16>>2]+20|0];H[d+6|0]=0;H[d+4|0]=4;H[d+5|0]=e&3;H[hj(d+16|0,b,c)+c|0]=0;b=J[a+16>>2];c=(J[b+8>>2]-1&f)<<2;J[d>>2]=J[c+J[b>>2]>>2];J[c+J[b>>2]>>2]=d;c=J[b+4>>2]+1|0;J[b+4>>2]=c;b=J[b+8>>2];if(b>>>0>=c>>>0|(b|0)>1073741822){break a}PA(a,b<<1)}return d}function sD(a,b,c,d){var e=0,f=0;a:{if(!c){e=a+366|0;f=a+364|0;c=65535;break a}e=c+660|0;f=c+658|0;c=L[c+650>>1]}I[b+656>>1]=c;b:{if(d){c=L[d+650>>1];c:{if((c|0)==L[e>>1]){a=L[b+650>>1];I[e>>1]=a;I[b+654>>1]=65535;c=L[d+650>>1];break c}e=L[d+654>>1];if((e|0)==65535){a=L[b+650>>1];break c}f=J[a+36>>2];a=J[a+32>>2];if(e>>>0>=(f-a|0)/672>>>0){break b}f=a+P(e,672)|0;a=L[b+650>>1];I[f+652>>1]=a;I[b+654>>1]=e}I[d+654>>1]=a;I[b+652>>1]=c;return}I[b+652>>1]=65535;c=L[f>>1];I[b+654>>1]=c;d:{if((c|0)==65535){c=L[b+650>>1];break d}d=J[a+36>>2];a=J[a+32>>2];if(c>>>0>=(d-a|0)/672>>>0){break b}a=a+P(c,672)|0;c=L[b+650>>1];I[a+652>>1]=c}I[f>>1]=c;if(L[e>>1]==65535){I[e>>1]=L[b+650>>1]}return}Z(145396,53895,487,84789);B()}function nva(a,b){a=a|0;b=b|0;var c=Q(0),d=Q(0),e=Q(0),f=0,g=Q(0),h=Q(0),i=Q(0),j=Q(0),k=Q(0),l=Q(0),m=Q(0),n=Q(0);f=J[b+28>>2]+P(J[a+116>>2],12)|0;l=N[f>>2];i=N[f+8>>2];m=N[a+124>>2];c=N[a+108>>2];j=N[a+96>>2];d=Q(-Q(Q(Q(l-Q(i*m))+N[a+160>>2])+Q(c*j)));g=N[f+4>>2];n=N[a+120>>2];k=N[a+100>>2];e=Q(Q(Q(g+Q(i*n))+N[a+164>>2])+Q(c*k));c=Q(Q(Q(N[a+148>>2]*d)-Q(N[a+156>>2]*e))+k);N[a+100>>2]=c;d=Q(j+Q(Q(N[a+144>>2]*d)-Q(N[a+152>>2]*e)));N[a+96>>2]=d;h=Q(Q(d*d)+Q(c*c));e=Q(N[b>>2]*N[a+104>>2]);if(h>Q(e*e)){e=Q(e/Q(Y(h)));c=Q(c*e);N[a+100>>2]=c;d=Q(d*e);N[a+96>>2]=d}e=N[a+140>>2];h=g;g=N[a+136>>2];c=Q(c-k);N[f+4>>2]=h+Q(g*c);d=Q(d-j);N[f>>2]=l+Q(g*d);N[(J[b+28>>2]+P(J[a+116>>2],12)|0)+8>>2]=Q(e*Q(Q(n*c)-Q(m*d)))+i}function H9(a){a=a|0;var b=0,c=0,d=0,e=0,f=0,g=0,h=0,i=0,j=0,k=0;e=Ui-32|0;Ui=e;i=J[a+8>>2]-J[a+12>>2]>>4;Bj(a);f=qj(a,-1,J[219396],139183);gj(a,-2);a:{b:{if(Mk(a,1)){c=Aj(a,1,0);b=ey(f,c);if(b){break a}J[e+16>>2]=c;fj(a,29828,e+16|0);break b}c=Tl(a,1);h=Yi;g=J[f+32>>2];d=J[f+36>>2];b=0;c:{if((g|0)==(d|0)){break c}b=(d-g|0)/672|0;j=b>>>0<=1?1:b;b=0;while(1){d:{d=P(b,672)+g|0;if(J[d+640>>2]==(c|0)&J[d+644>>2]==(h|0)){k=L[d+650>>1]|L[d+648>>1]<<16;if(!(H[d+668|0]&1)){break d}}b=b+1|0;if((j|0)!=(b|0)){continue}}break}b=k}if(b){break a}J[e>>2]=tj(c,h);fj(a,149508,e)}b=0}c=Sj(a,8);J[c+4>>2]=b;J[c>>2]=f;rj(a,-1e4,1423);Mj(a,-2);if((i+1|0)!=J[a+8>>2]-J[a+12>>2]>>4){Z(143334,37682,516,69598);B()}Ui=e+32|0;return 1}function Qu(a,b,c){var d=0,e=0;e=Ui-48|0;Ui=e;d=nj(44);J[d>>2]=0;J[d+4>>2]=0;J[d+40>>2]=0;J[d+32>>2]=0;J[d+36>>2]=0;J[d+24>>2]=0;J[d+28>>2]=0;J[d+16>>2]=0;J[d+20>>2]=0;J[d+8>>2]=0;J[d+12>>2]=0;a=dk(a,b,J[56032],d+4|0,0);a:{b:{if(!a){a=J[d+4>>2];b=J[a+24>>2];if((b|0)!=5){J[e+20>>2]=b;J[e+16>>2]=5;dj(4,96538,145666,e+16|0);Uj(J[d+4>>2]);J[d+4>>2]=0;b=-19;break b}a=dk(J[a>>2],J[a+4>>2],J[55998],d+8|0,0);if(a){J[e>>2]=a;dj(4,96538,137936,e);Uj(J[d+4>>2]);J[d+4>>2]=0;b=-2;break b}J[c>>2]=d;b=0;break a}J[e+32>>2]=a;dj(4,96538,137706,e+32|0);b=-2;a=J[d+4>>2];if(!a){break b}Uj(a)}a=J[d+8>>2];if(a){Uj(a)}c:{if(H[d+40|0]&1){break c}a=J[d+20>>2];if(a){cj(a)}a=J[d+12>>2];if(!a){break c}cj(a)}cj(d)}Ui=e+48|0;return b}function Fy(a,b,c,d,e,f,g){var h=0,i=0,j=0,k=0;h=Ui-576|0;Ui=h;i=h+568|0;J[i>>2]=0;J[i+4>>2]=0;J[h+560>>2]=0;J[h+564>>2]=0;j=h+560|0;lj(c+24|0,1,j,i,j|4);j=J[i>>2];J[h+564>>2]=j;i=J[h+560>>2];J[i+8>>2]=c;k=J[a+12>>2];a=J[a+8>>2];H[i+16|0]=g;J[i+12>>2]=f;J[i>>2]=a;J[i+4>>2]=k;hj(i+24|0,b,c);c=0;b=J[55272];if(Jk(d,e,J[b+8>>2],J[b+12>>2],0,0,b,i,j-i|0,0)){a=h+24|0;J[a+20>>2]=512;J[a+12>>2]=h+48;J[a+16>>2]=0;J[a+4>>2]=2270;J[a>>2]=2271;J[a+8>>2]=a;b=nk(a,J[b+8>>2],J[b+12>>2]);c=dm(J[e>>2],J[e+4>>2]);d=nk(a,J[e+16>>2],J[e+20>>2]);J[h+12>>2]=nk(a,J[e+24>>2],J[e+28>>2]);J[h+8>>2]=d;J[h+4>>2]=c;J[h>>2]=b;dj(4,88293,26152,h);c=-1e3}a:{if(H[h+572|0]&1){break a}a=J[h+560>>2];if(!a){break a}cj(a)}Ui=h+576|0;return c}function FU(a){var b=0;b=J[a+4>>2];if(b){cj(b);J[a+12>>2]=0;J[a+4>>2]=0;J[a+8>>2]=0}b=J[a+16>>2];if(b){cj(b);J[a+24>>2]=0;J[a+16>>2]=0;J[a+20>>2]=0}b=J[a+28>>2];tt(a+28|0,b,b+J[a+32>>2]|0);b=J[a+40>>2];vt(a+40|0,b,b+(J[a+44>>2]<<2)|0);b=J[a+52>>2];ut(a+52|0,b,b+(J[a+56>>2]<<1)|0);b=J[a+64>>2];tt(a- -64|0,b,b+J[a+68>>2]|0);b=J[a+76>>2];vt(a+76|0,b,b+(J[a+80>>2]<<2)|0);b=J[a+88>>2];ut(a+88|0,b,b+(J[a+92>>2]<<1)|0);b=J[a+100>>2];tt(a+100|0,b,b+J[a+104>>2]|0);b=J[a+112>>2];vt(a+112|0,b,b+(J[a+116>>2]<<2)|0);b=J[a+124>>2];ut(a+124|0,b,b+(J[a+128>>2]<<1)|0);b=J[a+136>>2];tt(a+136|0,b,b+J[a+140>>2]|0);b=J[a+148>>2];vt(a+148|0,b,b+(J[a+152>>2]<<2)|0);b=J[a+160>>2];ut(a+160|0,b,b+(J[a+164>>2]<<1)|0);J[a+172>>2]=0}function $3(a){a=a|0;var b=0,c=0,d=0,e=0,f=0,g=0,h=0;d=Ui-32|0;Ui=d;c=a?J[a+124>>2]:0;h=pj(d+12|0,c,0,39205,43);b=Sj(c,8);J[b>>2]=a;J[b+4>>2]=-2;uj(c,-1);J[b+4>>2]=Lk(c,-1e4);xj(c,J[63192]);Pk(c,-2);e=Ui-32|0;Ui=e;a:{b:{f=J[b>>2];if(f){g=e+12|0;b=J[f+124>>2];pj(g,b,-2,37704,945);Nj(b,-1e4,J[f+128>>2]);if((kj(b,-1)|0)!=5){break b}Pk(b,-3);Kj(b,-3);gj(b,-2);oj(g);Ui=e+32|0;break a}Z(111232,37704,942,60983);B()}Z(96149,37704,952,60983);B()}J[d>>2]=a?J[a>>2]:0;a=a?J[a+4>>2]:0;J[d+8>>2]=c;J[d+4>>2]=a;c=Ui-16|0;Ui=c;a=J[215795];if(a){while(1){b=J[a+28>>2];c:{if(!b){break c}if(!(Zi[b|0](d)|0)){H[a+52|0]=K[a+52|0]|2;break c}J[c>>2]=a+4;dj(4,91468,28927,c)}a=J[a>>2];if(a){continue}break}}Ui=c+16|0;oj(h);Ui=d+32|0}function bk(a,b){var c=0,d=0,e=0;a:{b:{c=J[a+1408>>2];if((c|0)>=0){if((b|0)>(c|0)){if(b>>>0>=25){c:{if(c>>>0<=23){if(!c){J[a+1404>>2]=0}while(1){d=0;e=Zk(a);c=-1;if((e|0)==-1){break c}d=J[a+1408>>2];c=d+8|0;J[a+1408>>2]=c;J[a+1404>>2]=J[a+1404>>2]+(e<>2];J[a+1404>>2]=d>>>24;d=d&16777215;c=c-24|0}J[a+1408>>2]=c;return d|bk(a,b-24|0)<<24}if(!c){J[a+1404>>2]=0}while(1){d=Zk(a);if((d|0)==-1){break b}e=J[a+1408>>2];c=e+8|0;J[a+1408>>2]=c;J[a+1404>>2]=J[a+1404>>2]+(d<(c|0)){continue}break}}if((b|0)>(c|0)){break a}J[a+1408>>2]=c-b;c=a;a=J[a+1404>>2];J[c+1404>>2]=a>>>b;a=a&(-1<>2]=-1;return 0}Z(48346,82607,1623,18483);B()}function Xt(a,b,c){var d=0,e=0,f=0,g=0,h=0,i=0,j=0,k=0,l=0;d=-16;e=J[b+4>>2];a:{if(e>>>0>1e4){break a}f=J[a+4>>2];if(f>>>0>>0){g=Zj(e,4);if(!g){break a}d=J[a+8>>2];if(d){f=f<<2;hj(g,d,f);Zi[J[66509]](d,0,f)|0;cj(J[a+8>>2])}J[a+8>>2]=g;J[a+4>>2]=e;f=e;e=J[b+4>>2]}J[a>>2]=J[(c?b:a)>>2];b:{if(!e){break b}if(!c){return 0}h=J[b+8>>2];i=J[a+8>>2];b=0;if(e>>>0>=4){g=e&-4;while(1){j=b<<2;J[j+i>>2]=J[h+j>>2];d=j|4;J[d+i>>2]=J[d+h>>2];d=j|8;J[d+i>>2]=J[d+h>>2];d=j|12;J[d+i>>2]=J[d+h>>2];b=b+4|0;k=k+4|0;if((g|0)!=(k|0)){continue}break}}d=e&3;if(!d){break b}while(1){k=b<<2;J[k+i>>2]=J[h+k>>2];b=b+1|0;l=l+1|0;if((d|0)!=(l|0)){continue}break}}d=0;if(!c|e>>>0>=f>>>0){break a}ij(J[a+8>>2]+(e<<2)|0,0,f-e<<2)}return d}function DV(a,b){var c=0,d=0,e=0;a:{if(K[b|0]){break a}b=vo(92364);if(K[b|0]?b:0){break a}b=vo(P(a,12)+213440|0);if(K[b|0]?b:0){break a}b=vo(94292);if(K[b|0]?b:0){break a}b=103411}b:{while(1){d=K[b+c|0];if(!(!d|(d|0)==47)){d=23;c=c+1|0;if((c|0)!=23){continue}break b}break}d=c}e=103411;c:{d:{c=K[b|0];e:{f:{if(!(K[b+d|0]|(c|0)==46)){e=b;if((c|0)!=67){break f}}if(!K[e+1|0]){break e}}if(!jj(e,103411)){break e}if(jj(e,85284)){break d}}if(!a){c=213396;if(K[e+1|0]==46){break c}}return 0}c=J[245859];if(c){while(1){if(!jj(e,c+8|0)){break c}c=J[c+32>>2];if(c){continue}break}}c=sj(36);if(c){b=J[53350];J[c>>2]=J[53349];J[c+4>>2]=b;b=c+8|0;hj(b,e,d);H[b+d|0]=0;J[c+32>>2]=J[245859];J[245859]=c}c=a|c?c:213396}return c}function tea(a){a=a|0;var b=0,c=0,d=0,e=0;c=Ui-176|0;Ui=c;e=-13;if(!dk(J[a+20>>2],J[a+24>>2],J[57762],c+172|0,0)){b=c+8|0;ij(b,0,164);e=ZQ(J[a>>2],J[a+4>>2],J[c+172>>2],b);a:{if(!e){b=J[J[a+36>>2]+8>>2];py(J[a>>2],b);J[b>>2]=J[c+8>>2];J[b+4>>2]=J[c+12>>2];d=J[c+48>>2];J[c+48>>2]=J[b+40>>2];J[b+40>>2]=d;d=J[c+52>>2];J[c+52>>2]=J[b+44>>2];J[b+44>>2]=d;d=J[c+56>>2];J[c+56>>2]=J[b+48>>2];J[b+48>>2]=d;d=K[c+60|0];H[c+60|0]=H[b+52|0]&1|d&254;H[b+52|0]=K[b+52|0]&254|d&1;J[b+88>>2]=J[c+96>>2];J[b+92>>2]=J[c+100>>2];J[b+96>>2]=J[c+104>>2];J[J[a+36>>2]+16>>2]=(J[b+64>>2]+(J[b+48>>2]+(J[a+24>>2]+J[b+16>>2]|0)|0)-(J[b+56>>2]+(J[b+8>>2]+J[b+40>>2]|0))|0)+164;break a}py(J[a>>2],c+8|0)}KD(c+8|0)}Ui=c+176|0;return e|0}function jF(a,b){var c=0,d=0,e=0,f=0,g=0,h=0,i=0;e=Ui-16|0;Ui=e;g=(C(a),v(2));c=g&2147483647;a:{if(c>>>0<=1305022426){h=+a;f=h*.6366197723675814+6755399441055744+-6755399441055744;d=h+f*-1.5707963109016418+f*-1.5893254773528196e-8;O[b>>3]=d;g=d<-.7853981852531433;if(R(f)<2147483648){c=~~f}else{c=-2147483648}if(g){d=f+-1;O[b>>3]=h+d*-1.5707963109016418+d*-1.5893254773528196e-8;c=c-1|0;break a}if(!(d>.7853981852531433)){break a}d=f+1;O[b>>3]=h+d*-1.5707963109016418+d*-1.5893254773528196e-8;c=c+1|0;break a}if(c>>>0>=2139095040){O[b>>3]=Q(a-a);c=0;break a}i=c;c=(c>>>23|0)-150|0;O[e+8>>3]=(x(2,i-(c<<23)|0),D());c=xV(e+8|0,e,c,1,0);d=O[e>>3];if((g|0)<0){O[b>>3]=-d;c=0-c|0;break a}O[b>>3]=d}Ui=e+16|0;return c}function Gga(a){a=a|0;var b=0,c=0,d=0,e=0;b=Ui-112|0;Ui=b;pk(a);d=J[a+8>>2]-J[a+12>>2]>>4;a:{if((d|0)<=0){a=fj(a,33768,0);break a}e=pj(b+92|0,a,0,37079,175);J[b+56>>2]=0;J[b+60>>2]=0;J[b+48>>2]=0;J[b+52>>2]=0;J[b+40>>2]=0;J[b+44>>2]=0;J[b+32>>2]=0;J[b+36>>2]=0;J[b+24>>2]=0;J[b+28>>2]=0;J[b+16>>2]=0;J[b+20>>2]=0;J[b+8>>2]=0;J[b+12>>2]=0;J[b>>2]=0;J[b+4>>2]=0;Sk(a,1,b+32|0,b);b:{c:{if((d|0)==1){break c}if(!kj(a,2)){break c}a=$m(sx(a),-1);if(!a){a=Jj(e,51520,0);break b}J[b+80>>2]=0;J[b+76>>2]=a;J[b+64>>2]=668;a=J[b+56>>2];c=a;a=J[b+60>>2];d=!(c|a);c=d?J[b+48>>2]:c;a=d?J[b+52>>2]:a;J[b+68>>2]=c;J[b+72>>2]=a;c=20}a=J[57046];Jk(b,b+32|0,J[a+8>>2],J[a+12>>2],0,0,a,b- -64|0,c,0);a=0}oj(e)}Ui=b+112|0;return a|0}function l4(a){a=a|0;var b=0,c=0,d=0,e=0;b=Ui-32|0;Ui=b;J[b+28>>2]=0;J[b+24>>2]=0;c=vn(a,1,b+28|0);a:{if((vn(a,2,b+24|0)|0)!=(c|0)){J[b+20>>2]=10791;J[b+16>>2]=53139;a=fj(a,153544,b+16|0);break a}b:{switch(c|0){case 0:c=J[b+28>>2];d=J[b+24>>2];e=+Q(Q(N[c+8>>2]*N[d+8>>2])+Q(Q(N[c+4>>2]*N[d+4>>2])+Q(N[c>>2]*N[d>>2])));c=J[a+8>>2];J[c+8>>2]=3;O[c>>3]=e;J[a+8>>2]=J[a+8>>2]+16;a=1;break a;case 1:c=J[b+28>>2];d=J[b+24>>2];e=+Q(Q(N[c+12>>2]*N[d+12>>2])+Q(Q(N[c+8>>2]*N[d+8>>2])+Q(Q(N[c+4>>2]*N[d+4>>2])+Q(N[c>>2]*N[d>>2]))));c=J[a+8>>2];J[c+8>>2]=3;O[c>>3]=e;J[a+8>>2]=J[a+8>>2]+16;a=1;break a;default:break b}}J[b+12>>2]=106998;J[b+8>>2]=108973;J[b+4>>2]=10791;J[b>>2]=53139;a=fj(a,116480,b)}Ui=b+32|0;return a|0}function QD(a,b,c,d,e,f){var g=0;a:{b:{if(!b){break b}b=L[b>>1];if((b|0)==65535){break b}if(!(e|f)){while(1){b=b&65535;e=J[a+16>>2];if(b>>>0>=J[a+20>>2]-e>>1>>>0){break a}b=L[e+(b<<1)>>1];f=J[a>>2];if(b>>>0>=(J[a+4>>2]-f|0)/104>>>0){break a}b=f+P(b,104)|0;if(J[b+8>>2]==(c|0)&J[b+12>>2]==(d|0)){H[b+96|0]=K[b+96|0]&252}b=L[b+94>>1];if((b|0)!=65535){continue}break b}}while(1){b=b&65535;g=J[a+16>>2];if(b>>>0>=J[a+20>>2]-g>>1>>>0){break a}b=L[g+(b<<1)>>1];g=J[a>>2];if(b>>>0>=(J[a+4>>2]-g|0)/104>>>0){break a}b=g+P(b,104)|0;if(!((c|0)!=J[b+8>>2]|(d|0)!=J[b+12>>2]|((e|0)!=J[b+16>>2]|(f|0)!=J[b+20>>2]))){H[b+96|0]=K[b+96|0]&252}b=L[b+94>>1];if((b|0)!=65535){continue}break}}return}Z(145396,53895,487,84789);B()}function Nga(a){a=a|0;var b=0,c=0,d=0,e=0,f=0,g=0,h=0,i=0,j=0,k=0,l=0,m=0;b=Ui-32|0;Ui=b;j=J[a+8>>2]-J[a+12>>2]>>4;J[b+28>>2]=0;Al(a,1,J[J[pk(a)+80>>2]+8>>2],82198,b+28|0,0,0);g=mk(a,2);k=Yi;a:{if(!J[b+28>>2]){J[b>>2]=Ij(a,1,0);c=fj(a,71185,b);break a}l=gp(a,3);d=J[b+28>>2];h=J[d+232>>2];e=J[d+228>>2];if((h|0)!=(e|0)){while(1){f=(c<<7)+e|0;i=J[f+104>>2];if((g|0)==J[i+48>>2]&J[i+52>>2]==(k|0)){I[f+124>>1]=L[f+124>>1]&65534|l;H[J[f+100>>2]+20|0]=255;m=1;e=J[d+228>>2];h=J[d+232>>2]}c=c+1|0;if(c>>>0>7>>>0){continue}break}}if(!m){g=Ij(a,1,0);J[b+20>>2]=Ij(a,2,0);J[b+16>>2]=g;c=fj(a,27714,b+16|0);break a}c=0;if(J[a+8>>2]-J[a+12>>2]>>4==(j|0)){break a}Z(143244,40569,569,75264);B()}Ui=b+32|0;return c|0}function mra(a){a=a|0;var b=0,c=0,d=0,e=0;e=Ui+-64|0;Ui=e;Xl(22300);a:{if(!K[a+242|0]){c=J[a+204>>2];if((c|0)<=0){break a}while(1){b:{c:{b=J[J[a+212>>2]+(d<<2)>>2];switch(J[b+216>>2]-2|0){case 0:case 3:break b;default:break c}}if(!J[b+472>>2]|K[b+204|0]&3){break b}qt(b+68|0,b+132|0,b+148|0,Q(N[a+236>>2]*N[b+240>>2]),e);b=J[b+472>>2];Zi[J[J[b>>2]+12>>2]](b,e);c=J[a+204>>2]}d=d+1|0;if((c|0)>(d|0)){continue}break}break a}c=J[a+8>>2];if((c|0)<=0){break a}while(1){b=J[J[a+16>>2]+(d<<2)>>2];if(!(!b|J[b+232>>2]!=2|(!J[b+472>>2]|K[b+204|0]&3))){qt(b+68|0,b+132|0,b+148|0,Q(N[a+236>>2]*N[b+240>>2]),e);b=J[b+472>>2];Zi[J[J[b>>2]+12>>2]](b,e);c=J[a+8>>2]}d=d+1|0;if((c|0)>(d|0)){continue}break}}Wl();Ui=e- -64|0}function Fv(a,b){var c=Q(0),d=0,e=0,f=Q(0),g=0,h=Q(0),i=Q(0),j=0,k=0,l=0,m=0;e=Ui-16|0;c=N[a>>2];h=N[a+20>>2];i=N[a+40>>2];f=Q(Q(c+h)+i);a:{if(f>Q(0)){f=Q(Y(Q(f+Q(1))));c=Q(Q(.5)/f);h=Q(c*Q(N[a+16>>2]-N[a+4>>2]));i=Q(c*Q(N[a+8>>2]-N[a+32>>2]));f=Q(f*Q(.5));c=Q(c*Q(N[a+36>>2]-N[a+24>>2]));break a}g=c>>0)%3|0;g=m+(a<<4)|0;a=a<<2;c=Q(Y(Q(Q(Q(N[k+j>>2]-N[l+d>>2])-N[g+a>>2])+Q(1))));N[j+e>>2]=c*Q(.5);c=Q(Q(.5)/c);N[e+12>>2]=Q(N[d+g>>2]-N[a+l>>2])*c;N[e+d>>2]=c*Q(N[j+l>>2]+N[d+k>>2]);N[(a|e)>>2]=c*Q(N[g+j>>2]+N[a+k>>2]);f=N[e+12>>2];h=N[e+8>>2];i=N[e+4>>2];c=N[e>>2]}N[b+12>>2]=f;N[b+8>>2]=h;N[b+4>>2]=i;N[b>>2]=c}function CI(a,b,c,d,e){var f=0,g=0,h=0,i=0,j=0;h=J[a+116>>2];J[a+116>>2]=e;i=K[a+57|0];f=J[a+40>>2];g=J[a+20>>2];j=L[a+52>>1];e=Uw(a,b,c);a:{if(!e){break a}b=J[a+32>>2]+d|0;Hp(a,b);d=g-f|0;b:{c:{d:{switch(e-2|0){case 2:J[b>>2]=zk(a,2985,17);c=4;break c;case 3:J[b>>2]=zk(a,56882,23);c=4;break c;case 0:case 1:break d;default:break b}}c=J[a+8>>2];f=c-16|0;g=J[f+4>>2];J[b>>2]=J[f>>2];J[b+4>>2]=g;c=J[c-8>>2]}J[b+8>>2]=c}I[a+52>>1]=j;J[a+8>>2]=b+16;c=J[a+40>>2];b=c+d|0;J[a+20>>2]=b;J[a+12>>2]=J[b>>2];J[a+24>>2]=J[b+12>>2];H[a+57|0]=i;b=J[a+48>>2];if((b|0)<20001|(d|0)>479975){break a}b=lk(a,c,P(b,24),48e4);J[a+48>>2]=2e4;J[a+40>>2]=b;J[a+36>>2]=b+479976;J[a+20>>2]=b+(J[a+20>>2]-c|0)}J[a+116>>2]=h;return e}function VO(a,b,c){var d=0,e=0,f=Q(0),g=0,h=0,i=0,j=0,k=0,l=0,m=0;h=J[c+12>>2];i=J[b+12>>2];d=h>>>0>i>>>0;e=J[c+4>>2];g=e-1|0;if(g>>>0<=6){j=J[(g<<2)+160892>>2]}g=d?i:h;d=J[b+4>>2];a:{if((d|0)==(e|0)){c=a;a=P(g,j);a=hj(c,J[b+8>>2],a)+a|0;break a}e=0;d=d-1|0;if(d>>>0<=6){l=J[(d<<2)+160892>>2]}if(!g){break a}m=J[b+8>>2];while(1){k=J[b+4>>2];b:{if((k|0)==7){f=N[(e<<2)+m>>2];break b}d=J[b+8>>2]+P(e,l)|0;f=Q(0);c:{switch(k-1|0){case 0:f=Q(H[d|0]);break b;case 1:f=Q(K[d|0]);break b;case 2:f=Q(I[d>>1]);break b;case 3:f=Q(L[d>>1]);break b;case 4:f=Q(J[d>>2]);break b;case 5:break c;default:break b}}f=Q(M[d>>2])}a=tD(a,f,J[c+4>>2]);e=e+1|0;if((g|0)!=(e|0)){continue}break}}if(h>>>0>i>>>0){ij(a,0,P(h-g|0,j))}}function Nk(a,b,c){var d=0,e=0,f=0,g=0,h=0;e=J[a+16>>2];if(M[e+68>>2]>=M[e+64>>2]){Om(a)}e=J[a+20>>2];if((e|0)==J[a+40>>2]){d=a+72|0}else{d=J[J[e+4>>2]>>2]+12|0}f=J[d>>2];d=c<<4;e=lk(a,0,0,d+24|0);ss(a,e,6);J[e+12>>2]=f;H[e+6|0]=1;H[e+7|0]=c;J[e+16>>2]=b;b=J[a+8>>2]-d|0;J[a+8>>2]=b;if(c){g=e+24|0;b=c;if(c&1){b=c-1|0;d=b<<4;h=d+J[a+8>>2]|0;f=d+g|0;d=J[h+4>>2];J[f>>2]=J[h>>2];J[f+4>>2]=d;J[f+8>>2]=J[h+8>>2]}if((c|0)!=1){while(1){c=(b<<4)-16|0;f=c+g|0;d=c+J[a+8>>2]|0;c=J[d+4>>2];J[f>>2]=J[d>>2];J[f+4>>2]=c;J[f+8>>2]=J[d+8>>2];b=b-2|0;c=b<<4;f=c+g|0;d=c+J[a+8>>2]|0;c=J[d+4>>2];J[f>>2]=J[d>>2];J[f+4>>2]=c;J[f+8>>2]=J[d+8>>2];if(b){continue}break}}b=J[a+8>>2]}J[b+8>>2]=6;J[b>>2]=e;J[a+8>>2]=J[a+8>>2]+16}function Hta(a,b){a=a|0;b=b|0;var c=0,d=0,e=0,f=0,g=0;c=Ui-32|0;Ui=c;d=J[a+80>>2];e=J[b>>2];a:{if(!(L[b+6>>1]&L[a+8>>1])|(!(L[a+10>>1]&L[b+4>>1])|(d|0)==(e|0))){break a}f=1;g=J[a+92>>2];if(!(Zi[J[J[g>>2]+28>>2]](g,d,e)|0)){break a}H[c+28|0]=1;J[c+20>>2]=0;J[c+24>>2]=0;d=J[a+88>>2];a=Zi[J[J[d>>2]+52>>2]](d,J[J[a+80>>2]+188>>2],b)|0;if(!a){break a}b=J[a+8>>2];if(!b){break a}a=0;J[c+16>>2]=0;Zi[J[J[b>>2]+16>>2]](b,c+12|0);b=J[c+24>>2];d=J[c+16>>2];b:{c:{if((d|0)>0){while(1){if(J[J[b+(a<<2)>>2]+1116>>2]<=0){a=a+1|0;if((d|0)!=(a|0)){continue}break c}break}f=0;if(K[c+28|0]==1){break b}break a}if(!b){break a}}if(!K[c+28|0]){break a}}if(b){J[83765]=J[83765]+1;Zi[J[61751]](J[b-4>>2])}}Ui=c+32|0;return f|0}function oca(a,b,c,d,e,f,g,h){a=a|0;b=b|0;c=c|0;d=d|0;e=e|0;f=f|0;g=Q(g);h=h|0;var i=0;i=Ui-16|0;Ui=i;a:{b:{c:{d:{if(a){J[i+12>>2]=0;Zc(Q(Q(Q(c>>>0)/Q(255))),Q(Q(Q(d>>>0)/Q(255))),Q(Q(Q(e>>>0)/Q(255))),Q(Q(Q(f>>>0)/Q(255))));if(K[J[79491]+220|0]&2){a=_()|0;if(a){break d}}Yc(Q(g));if(K[J[79491]+220|0]&2){a=_()|0;if(a){break c}}Xc(h|0);if(K[J[79491]+220|0]&2){a=_()|0;if(a){break b}}_c(b<<5&1024|(b<<14&16384|b<<4&256));if(K[J[79491]+220|0]&2){a=_()|0;if(a){break a}}Ui=i+16|0;return}Z(9197,40535,1618,36283);B()}Cj(a,36283,1626);Z(114101,40535,1626,36283);B()}Cj(a,36283,1629);Z(114101,40535,1629,36283);B()}Cj(a,36283,1632);Z(114101,40535,1632,36283);B()}Cj(a,36283,1639);Z(114101,40535,1639,36283);B()}function bba(a,b){a=a|0;b=b|0;var c=0,d=0,e=0;a:{b:{c:{d:{e:{if(a){if(!b){break e}b=iy(J[79491],b);f:{if(!b){break f}c=Ia(37305)|0;d=uD(c,J[b+4>>2],J[b+8>>2]);xa(c|0);if(K[J[79491]+220|0]&2){c=_()|0;if(c){break d}}if(!d){break f}d=J[79491];c=J[d+108>>2];a=J[a>>2];if(a>>>0>=J[d+112>>2]-c>>2>>>0){break c}e=1;a=J[c+(a<<2)>>2];ta(a|0,1,b+4|0,b+8|0);if(K[J[79491]+220|0]&2){b=_()|0;if(b){break b}}ya(a|0);if(!(K[J[79491]+220|0]&2)){break f}a=_()|0;if(a){break a}}return e|0}Z(55942,40535,3026,49120);B()}Z(57842,40535,3027,49120);B()}Cj(c,49120,3038);Z(114101,40535,3038,49120);B()}Z(145396,53895,487,84789);B()}Cj(b,49120,3044);Z(114101,40535,3044,49120);B()}Cj(a,49120,3046);Z(114101,40535,3046,49120);B()}function aba(a,b){a=a|0;b=b|0;var c=0,d=0,e=0;a:{b:{c:{d:{e:{if(a){if(!b){break e}b=iy(J[79491],b);f:{if(!b){break f}c=Ia(35632)|0;d=uD(c,J[b+4>>2],J[b+8>>2]);xa(c|0);if(K[J[79491]+220|0]&2){c=_()|0;if(c){break d}}if(!d){break f}d=J[79491];c=J[d+108>>2];a=J[a>>2];if(a>>>0>=J[d+112>>2]-c>>2>>>0){break c}e=1;a=J[c+(a<<2)>>2];ta(a|0,1,b+4|0,b+8|0);if(K[J[79491]+220|0]&2){b=_()|0;if(b){break b}}ya(a|0);if(!(K[J[79491]+220|0]&2)){break f}a=_()|0;if(a){break a}}return e|0}Z(55942,40535,2863,49016);B()}Z(57842,40535,2864,49016);B()}Cj(c,49016,2875);Z(114101,40535,2875,49016);B()}Z(145396,53895,487,84789);B()}Cj(b,49016,2881);Z(114101,40535,2881,49016);B()}Cj(a,49016,2883);Z(114101,40535,2883,49016);B()}function Zaa(a,b){a=a|0;b=b|0;var c=0,d=0,e=0;a:{b:{c:{d:{e:{if(a){if(!b){break e}b=iy(J[79491],b);f:{if(!b){break f}c=Ia(35633)|0;d=uD(c,J[b+4>>2],J[b+8>>2]);xa(c|0);if(K[J[79491]+220|0]&2){c=_()|0;if(c){break d}}if(!d){break f}d=J[79491];c=J[d+108>>2];a=J[a>>2];if(a>>>0>=J[d+112>>2]-c>>2>>>0){break c}e=1;a=J[c+(a<<2)>>2];ta(a|0,1,b+4|0,b+8|0);if(K[J[79491]+220|0]&2){b=_()|0;if(b){break b}}ya(a|0);if(!(K[J[79491]+220|0]&2)){break f}a=_()|0;if(a){break a}}return e|0}Z(55942,40535,2835,48954);B()}Z(57842,40535,2836,48954);B()}Cj(c,48954,2847);Z(114101,40535,2847,48954);B()}Z(145396,53895,487,84789);B()}Cj(b,48954,2853);Z(114101,40535,2853,48954);B()}Cj(a,48954,2855);Z(114101,40535,2855,48954);B()}function T4(a,b){a=a|0;b=b|0;var c=0,d=0,e=0,f=0,g=0,h=0,i=0;e=Ui-1040|0;Ui=e;c=J[a>>2];if(c){co(c)}c=e+16|0;NK(a+44|0,c);if(_k(c)){Fm(c)}J[a>>2]=0;if(b){c=nj(44);J[c>>2]=0;J[c+4>>2]=0;J[c+40>>2]=0;J[c+32>>2]=0;J[c+36>>2]=0;J[c+24>>2]=0;J[c+28>>2]=0;J[c+16>>2]=0;J[c+20>>2]=0;d=c+8|0;J[d>>2]=0;J[d+4>>2]=0;Sy(J[b+4>>2],J[56032],c+4|0);Sy(J[b+8>>2],J[55998],d);J[a>>2]=c;d=Ui-1072|0;Ui=d;f=e+16|0;J[d+32>>2]=f;g=d+48|0;Gj(g,1024,43137,d+32|0);h=J[c+4>>2];i=J[56032];b=3;c=ol(g,82669);if(c){b=yv(h,i,c,175);vk(c)}a:{if(b){J[d+20>>2]=b;J[d+16>>2]=g;dj(4,96538,52593,d+16|0);break a}if(gx(f,d+48|0)){break a}J[d>>2]=f;dj(2,96538,149252,d)}Ui=d+1072|0;J[e>>2]=f;dj(2,96538,147156,e)}RB(a);Ui=e+1040|0;return 0}function G0(a,b){a=a|0;b=b|0;var c=0,d=0,e=0,f=0;e=Ui-16|0;Ui=e;c=J[b>>2];a:{b:{if(J[c>>2]){d=J[c+4>>2];break b}c:{d=Zi[J[c+8>>2]](J[c+16>>2],J[c+12>>2],e+12|0)|0;if(d){f=J[e+12>>2];if(f){break c}}f=-1;break a}J[c+4>>2]=d;J[c>>2]=f}f=K[d|0]}Ui=e+16|0;d=J[a+16>>2];if(M[d+68>>2]>=M[d+64>>2]){Om(a)}e=J[b>>2];d=b+4|0;b=J[b+16>>2];if((f|0)==27){f=qI(a,e,d,b)}else{f=mI(a,e,d,b)}e=BI(a,K[f+72|0],J[a+72>>2]);J[e+16>>2]=f;if(K[f+72|0]){d=e+20|0;b=0;while(1){c=lk(a,0,0,32);ss(a,c,10);J[c+24>>2]=0;J[c+8>>2]=c+16;J[d+(b<<2)>>2]=c;b=b+1|0;if(b>>>0>2];J[b+8>>2]=6;J[b>>2]=e;b=J[a+8>>2];if((J[a+28>>2]-b|0)<=16){b=J[a+44>>2];_n(a,(b|0)<=0?b+1|0:b<<1);b=J[a+8>>2]}J[a+8>>2]=b+16}function cna(a){a=a|0;var b=0,c=0,d=0,e=0;d=J[a+24>>2];b=J[a+4>>2];if(b){c=J[b+124>>2]}else{c=0}a:{if(!Jq(J[a>>2],b,d)){break a}b=Sj(c,68);J[b+48>>2]=0;J[b+52>>2]=0;J[b+32>>2]=0;J[b+36>>2]=0;J[b+28>>2]=-2;J[b+20>>2]=-2;J[b+24>>2]=-2;J[b+12>>2]=-2;J[b+16>>2]=-2;J[b+4>>2]=-2;J[b+8>>2]=-2;J[b>>2]=c;J[b- -64>>2]=0;J[b+56>>2]=0;J[b+60>>2]=0;J[b+40>>2]=0;J[b+44>>2]=0;J[b+48>>2]=-2;uj(c,-1);e=Lk(c,-1e4);J[b+40>>2]=b;J[b+48>>2]=e;J[b+44>>2]=d;J[b+32>>2]=112;rj(c,-1e4,10655);Mj(c,-2);b:{if(!AR(c,d,b)){dE(b);b=0;break b}gj(c,-2)}if(!b){break a}c=Ky(J[a>>2],J[d+140>>2],J[d+144>>2],b+52|0);if(c){dE(b);return c|0}J[J[a+28>>2]+8>>2]=b;J[J[a+28>>2]+16>>2]=J[a+16>>2]-J[J[b+44>>2]+4>>2];return 0}Uj(d);return-13}function b5(a,b,c,d,e,f,g,h){a=a|0;b=b|0;c=c|0;d=d|0;e=e|0;f=f|0;g=g|0;h=h|0;var i=0,j=0;d=-2;i=J[a+2200>>2];a:{if(!i){break a}i=J[J[a+2196>>2]+(mxa(b,c,i)<<2)>>2];if((i|0)==-1){break a}j=J[a+2204>>2];while(1){i=j+P(i,24)|0;if(J[i>>2]!=(b|0)|J[i+4>>2]!=(c|0)){i=J[i+16>>2];if((i|0)!=-1){continue}break a}break}d=J[a+2192>>2];a=0;i=J[i+12>>2];b=J[i>>2];c=b<<24|(b&65280)<<8|(b>>>8&65280|b>>>24);b=J[i+4>>2];b=b<<24|(b&65280)<<8|(b>>>8&65280|b>>>24);b:{c:{if(b>>>0<=e>>>0){break c}a=b>>>0>>0?b-e|0:f;b=J[d+8>>2];if(!K[b+1044|0]){b=J[b+1032>>2];um(b,c+e|0,0);a=Sl(g,1,a,b);if(J[b+76>>2]<0){b=J[b>>2]}else{b=J[b>>2]}if(!(b>>>5&1)){break c}break b}hj(g,(c+J[b+1036>>2]|0)+e|0,a)}J[h>>2]=a}d=0}return d|0}function dca(a,b){a=a|0;b=b|0;var c=0,d=0,e=0,f=0;a:{b:{c:{if(a){if(!b){break a}a=L[b+200>>1];if(a){while(1){c=P(d,24)+b|0;e=I[c+8>>1];if((e|0)!=-1){a=L[c+10>>1];c=(a|0)==9?3:(a|0)==16?4:1;a=0;while(1){Oc(a+e|0);d:{if(!(K[J[79491]+220|0]&2)){break d}f=_()|0;if(!f){break d}Cj(f,46570,1998);Z(114101,40535,1998,46570);B()}a=a+1|0;if((c|0)!=(a|0)){continue}break}a=L[b+200>>1]}d=d+1|0;if(d>>>0<(a&65535)>>>0){continue}break}}ba(34962,0);if(K[J[79491]+220|0]&2){a=_()|0;if(a){break c}}ba(34963,0);if(K[J[79491]+220|0]&2){a=_()|0;if(a){break b}}return}Z(9197,40535,1985,46570);B()}Cj(a,46570,2004);Z(114101,40535,2004,46570);B()}Cj(a,46570,2007);Z(114101,40535,2007,46570);B()}Z(46436,40535,1986,46570);B()}function V8(a){a=a|0;var b=0,c=0,d=0,e=Q(0),f=0,g=Q(0),h=0,i=0,j=0,k=0,l=0;b=Ui-16|0;Ui=b;i=J[a+8>>2]-J[a+12>>2]>>4;Bj(a);j=-2;f=qj(a,-1,J[219396],139183);gj(a,-2);k=Qj(a,1,b+12|0);if((kj(a,3)|0)==6){l=$m(a,3);Nj(a,-1e4,J[f+8>>2]);uj(a,1);j=to(a,-2);gj(a,-2)}a:{if((i|0)<4){e=Q(1);break a}Oj(a,4,5);uj(a,4);rj(a,-1,15035);if(kj(a,-1)){g=Q(wj(a,-1))}else{g=Q(0)}gj(a,-2);rj(a,-1,61778);if(kj(a,-1)){e=Q(wj(a,-1))}else{e=Q(1)}gj(a,-2);gj(a,-2)}h=mk(a,2);c=Yi;d=J[b+12>>2];b:{if(l){d=_x(f,d,h,c,g,e,2319,l,j);break b}d=_x(f,d,h,c,g,e,0,0,0)}if(d){c=tj(h,c);J[b+4>>2]=tj(J[k+640>>2],J[k+644>>2]);J[b>>2]=c;fj(a,135870,b)}if(J[a+8>>2]-J[a+12>>2]>>4!=(i|0)){Z(143244,37682,2018,50899);B()}Ui=b+16|0;return 0}function $V(a,b,c,d,e,f){a=a|0;b=b|0;c=c|0;d=d|0;e=e|0;f=f|0;var g=Q(0),h=Q(0),i=Q(0),j=Q(0),k=Q(0),l=Q(0),m=0,n=Q(0),o=0,p=Q(0),q=0;if(J[b+44>>2]==(f|0)){if(f){n=Q(Q(1)/Q(f>>>0));c=J[b+4>>2];h=N[b+28>>2];i=Q(M[a+4>>2]);k=Q(Q(N[b+32>>2]-h)/i);l=Q(M[a>>2]);h=Q(Q(k*l)+h);k=Q(Q(k+h)-h);g=N[b+16>>2];j=Q(Q(N[b+20>>2]-g)/i);i=Q(Q(j*l)+g);l=Q(Q(j+i)-i);a=0;while(1){d=a<<1;o=K[d+c|0];g=Q(n*Q(a|0));j=Q(+Q(Q(g*k)+h)*1.5707963267948966);p=Rj(j);d=d|1;q=K[d+c|0];m=(a<<3)+e|0;g=Q(Q(g*l)+i);N[m>>2]=Q(p*Q(g*Q(Q(Q(o>>>0)+Q(-128))*Q(255))))+N[m>>2];d=(d<<2)+e|0;N[d>>2]=Q(Q(g*Q(Q(Q(q>>>0)+Q(-128))*Q(255)))*Hj(j))+N[d>>2];a=a+1|0;if((f|0)!=(a|0)){continue}break}}J[b+44>>2]=0;return}Z(11230,42316,1100,44449);B()}function fn(a,b,c){var d=0,e=0,f=0,g=0,h=0,i=0,j=0,k=0;f=Ui-16|0;Ui=f;e=bj(b);i=Yi;a:{d=J[a+4>>2];g=J[a>>2];b:{if((d|0)==(g|0)){break b}d=d-g>>4;j=d>>>0<=1?1:d;d=0;while(1){h=g+(d<<4)|0;if((e|0)!=J[h>>2]|J[h+4>>2]!=(i|0)){d=d+1|0;if((j|0)!=(d|0)){continue}break b}break}d=J[h+8>>2];e=J[a+16>>2];if(d>>>0>=J[a+20>>2]-e>>>0){break a}if(!e){break b}e=d+e|0;d=yj(e);J[f+12>>2]=0;k=gw(e,f+12|0);g=d+e|0;d=J[f+12>>2];if(!((g|0)!=(d|0)|(d|0)==(e|0))){c=Q(k);break b}J[f>>2]=e;dj(3,99340,16908,f)}J[f+8>>2]=0;d=J[216331];c:{if(!d){break c}while(1){d:{e=J[d+20>>2];if(e){if(Zi[e|0](a,b,c,f+8|0)|0){break d}}d=J[d+24>>2];if(d){continue}break c}break}c=N[f+8>>2]}Ui=f+16|0;return c}Z(145396,54052,487,84789);B()}function i$(a){a=a|0;var b=0,c=0,d=0;d=Ui-32|0;Ui=d;c=Aj(a,1,0);gj(a,1);rj(a,-1e4,98029);rj(a,2,c);a:{if(ck(a,-1)){if((Vj(a,-1)|0)!=173708){break a}J[d+16>>2]=c;fj(a,148496,d+16|0);break a}rj(a,-10001,19533);if((kj(a,-1)|0)!=5){fj(a,67544,0)}mj(a,158859,0);b=1;while(1){Nj(a,-2,b);if(!kj(a,-1)){J[d+4>>2]=Ij(a,-2,0);J[d>>2]=c;fj(a,26127,d)}xj(a,c);Wk(a,1,1);if((kj(a,-1)|0)!=6){if(Mk(a,-1)){lm(a,2);b=b+1|0;continue}gj(a,-2);b=b+1|0;continue}break}b=J[a+8>>2];J[b+8>>2]=2;J[b>>2]=173708;J[a+8>>2]=J[a+8>>2]+16;ej(a,2,c);xj(a,c);Wk(a,1,1);if(kj(a,-1)){ej(a,2,c)}rj(a,2,c);if((Vj(a,-1)|0)!=173708){break a}b=J[a+8>>2];J[b+8>>2]=1;J[b>>2]=1;J[a+8>>2]=J[a+8>>2]+16;uj(a,-1);ej(a,2,c)}Ui=d+32|0;return 1}function gfa(a){a=a|0;var b=0,c=0,d=0,e=0,f=0;b=nj(88);J[b+40>>2]=0;J[b+44>>2]=0;J[b+72>>2]=0;J[b+76>>2]=0;J[b+24>>2]=0;J[b+28>>2]=0;J[b>>2]=0;J[b+4>>2]=0;J[b+56>>2]=0;J[b+60>>2]=0;J[b+48>>2]=0;J[b+52>>2]=0;J[b+32>>2]=0;J[b+36>>2]=0;J[b+8>>2]=0;J[b+12>>2]=0;J[b+16>>2]=0;c=b- -64|0;J[c>>2]=0;J[c+4>>2]=0;J[b+80>>2]=0;J[b+84>>2]=0;J[b+44>>2]=-1;J[b+76>>2]=-1;J[b+8>>2]=J[a+28>>2];c=YQ(J[a>>2],J[a+4>>2],J[a+24>>2],b,J[a+8>>2]);if(!c){J[J[a+28>>2]+8>>2]=b;d=J[b+64>>2];e=J[b+72>>2];f=J[a+28>>2];a=J[b+4>>2];J[f+16>>2]=((((J[b+40>>2]-J[b+32>>2]|0)/12<<2)+(P(J[a+172>>2],48)+(Zi[J[79459]](J[a+8>>2],J[a+12>>2])|0)|0)|0)+P((e-d|0)/12|0,24)|0)+328;return c|0}uQ(J[a>>2],b);J[J[a+28>>2]+8>>2]=0;return c|0}function EA(a,b,c,d){var e=0,f=0,g=0,h=0,i=0;if(!J[a+48>>2]){return-20352}g=J[a+92>>2]+7|0;h=g>>>3|0;a:{b:{if(J[a+60>>2]){f=-20352;break b}while(1){e=Fk(b,h,c,d);if(e){break a}if(!Xk(b)){continue}break}f=Xk(b)-1|0;e=J[a+92>>2];c:{if(f>>>0>e>>>0){e=yk(b,f-e|0);if(!e){break c}break a}e=hq(b,e,1);if(e){break a}}e=hq(b,0,0);if(e){break a}e=hq(b,1,0);if(e){break a}f=0;if(J[a+92>>2]!=254){break b}e=hq(b,2,0);if(e){break a}}if(!J[a+48>>2]){return f}e=f;if(!J[a+60>>2]){break a}e=Fk(b,h,c,d);if(e){break a}i=a+76|0;g=g&-8;f=0;while(1){e=yk(b,g-J[a+92>>2]|0);if(e){break a}if((f|0)==30){return-19712}if((Pj(b,1)|0)>=0){e=0;if((_j(b,i)|0)<0){break a}}f=f+1|0;e=Fk(b,h,c,d);if(!e){continue}break}}return e}function cv(a,b,c){var d=0,e=0;d=J[b+4>>2];J[a>>2]=J[b>>2];J[a+4>>2]=d;d=J[b+28>>2];J[a+24>>2]=J[b+24>>2];J[a+28>>2]=d;d=J[b+20>>2];J[a+16>>2]=J[b+16>>2];J[a+20>>2]=d;d=J[b+12>>2];J[a+8>>2]=J[b+8>>2];J[a+12>>2]=d;if(!K[874264]){nl();H[874264]=1}a:{b:{if(!(!J[b+24>>2]|K[874164]!=1)){if(c){d=J[218540];Tj(d);if(!K[874264]){nl();H[874264]=1}c=a;a=NV();J[c+24>>2]=a;if(!K[874264]){nl();H[874264]=1}if(!a){break b}c=J[218558];e=J[218559]-c>>3;if(e>>>0<=a>>>0){break a}b=J[b+24>>2];if(e>>>0<=b>>>0){break a}e=c+(a<<3)|0;b=c+(b<<3)|0;a=L[b+4>>1];c=sj(a+16&131056);J[e>>2]=c;H[hj(c,J[b>>2],a)+a|0]=0;I[e+4>>1]=a;Lj(d);return}J[a+24>>2]=0}return}Z(113576,41081,142,61422);B()}Z(145396,54052,487,84789);B()}function wU(a,b,c){var d=0,e=0,f=0,g=0,h=0,i=0,j=0,k=0,l=0,m=0,n=0;d=J[a+104>>2];H[c|0]=1;H[c+1|0]=0;H[c+2|0]=0;H[c+3|0]=0;e=a+39|0;f=K[d+163216|0]-1|0;d=J[(K[d+163088|0]<<2)+243392>>2];g=K[K[e+(1<>>6;d=(d<<4|n<<2|m)<<4|l<<2|k;H[c+6|0]=d>>>6;d=(d<<4|j<<2|i)<<4|h<<2|g;H[c+5|0]=d>>>6;H[c+4|0]=a|d<<2;TE(c,b,4)}function aea(a){a=a|0;var b=0,c=0,d=0,e=0,f=0,g=0,h=0;h=Ui-16|0;Ui=h;f=J[a>>2];c=J[a+24>>2];d=Ui-16|0;Ui=d;J[d+12>>2]=0;f=wk(f,J[c>>2],d+12|0);if(!f){b=nj(32);J[b>>2]=0;J[b+4>>2]=0;J[b+24>>2]=0;J[b+28>>2]=0;J[b+16>>2]=0;J[b+20>>2]=0;J[b+8>>2]=0;J[b+12>>2]=0;J[b+8>>2]=J[d+12>>2];H[b+25|0]=K[b+25|0]&254|H[c+4|0]&1;H[b+24|0]=J[c+24>>2];J[b>>2]=bj(J[c+8>>2]);J[b+4>>2]=Yi;N[b+12>>2]=N[c+12>>2];N[b+16>>2]=N[c+16>>2];N[b+20>>2]=N[c+20>>2];e=J[c+8>>2];g=J[J[245446]+16>>2];a:{if(!g){e=(sB(e)|0)==-1?-12:0;break a}Tj(g);e=sB(e);Lj(g);e=(e|0)==-1?-12:0}if(e){g=J[c+8>>2];J[d+4>>2]=e;J[d>>2]=g;dj(4,88458,142005,d)}J[h+12>>2]=b}Uj(c);Ui=d+16|0;if(!f){J[J[a+28>>2]+8>>2]=J[h+12>>2]}Ui=h+16|0;return f|0}function ak(a,b,c){var d=0,e=0,f=0,g=0,h=0,i=0,j=0;e=Ui-16|0;Ui=e;f=bj(b);i=Yi;a:{d=J[a+4>>2];g=J[a>>2];b:{c:{if((d|0)==(g|0)){break c}d=d-g>>4;j=d>>>0<=1?1:d;d=0;while(1){h=g+(d<<4)|0;if(J[h>>2]!=(f|0)|J[h+4>>2]!=(i|0)){d=d+1|0;if((j|0)!=(d|0)){continue}break c}break}d=J[h+8>>2];f=J[a+16>>2];if(d>>>0>=J[a+20>>2]-f>>>0){break a}if(!f){break c}d=d+f|0;g=yj(d);J[e+12>>2]=0;f=Tr(d,e+12|0);h=d+g|0;g=J[e+12>>2];if((h|0)==(g|0)&(d|0)!=(g|0)){break b}J[e>>2]=d;dj(3,99340,13327,e)}f=c}J[e+8>>2]=0;d=J[216331];d:{if(!d){break d}while(1){e:{c=J[d+16>>2];if(c){if(Zi[c|0](a,b,f,e+8|0)|0){break e}}d=J[d+24>>2];if(d){continue}break d}break}f=J[e+8>>2]}Ui=e+16|0;return f}Z(145396,54052,487,84789);B()}function Kt(a,b){var c=0,d=0,e=0,f=0,g=0,h=0;if(J[a+18368>>2]<=15){qm(a)}a:{f=J[a+18364>>2];c=K[(f>>>23|0)+b|0];b:{if((c|0)!=255){e=-1;d=J[a+18368>>2];b=b+c|0;c=K[b+1280|0];if((d|0)<(c|0)){break b}J[a+18368>>2]=d-c;J[a+18364>>2]=f<>>16|0;e=10;while(1){d=e;e=d+1|0;if(c>>>0>=M[g+(d<<2)>>2]){continue}break}g=J[a+18368>>2];if((d|0)==17){J[a+18368>>2]=g-16;return-1}e=-1;if((d|0)>(g|0)){break b}c=d<<2;c=(J[c+182080>>2]&f>>>32-d)+J[(b+c|0)+1612>>2]|0;if(c>>>0>255){break b}h=L[((c<<1)+b|0)+512>>1];e=b+c|0;b=K[e+1280|0];if((h|0)!=(f>>>32-b&J[(b<<2)+182080>>2])){break a}J[a+18364>>2]=f<>2]=g-d;e=K[e+1024|0]}return e}Z(84666,55719,2139,69395);B()}function p3(a){a=a|0;var b=0,c=Q(0),d=Q(0),e=Q(0),f=0,g=0,h=Q(0);b=Ui-80|0;Ui=b;f=qj(a,1,J[215720],0);c=N[f+8>>2];d=N[f>>2];e=N[f+4>>2];if(!(!(d!=d|e!=e)&c==c)){O[b+72>>3]=c;O[b- -64>>3]=e;J[b+48>>2]=1;O[b+56>>3]=d;fj(a,138436,b+48|0)}g=qj(a,2,J[215720],0);c=N[g+8>>2];d=N[g>>2];e=N[g+4>>2];if(!(!(d!=d|e!=e)&c==c)){O[b+40>>3]=c;O[b+32>>3]=e;J[b+16>>2]=2;O[b+24>>3]=d;fj(a,138436,b+16|0);c=N[g+8>>2];e=N[g+4>>2];d=N[g>>2]}h=Q(Q(c*c)+Q(Q(e*e)+Q(d*d)));a:{if(h==Q(0)){J[b+12>>2]=16185;J[b+8>>2]=53139;J[b+4>>2]=108973;J[b>>2]=53139;a=fj(a,131372,b);break a}c=Q(Q(Q(N[f+8>>2]*c)+Q(Q(N[f+4>>2]*e)+Q(d*N[f>>2])))/h);f=J[a+8>>2];J[f+8>>2]=3;O[f>>3]=c;J[a+8>>2]=J[a+8>>2]+16;a=1}Ui=b+80|0;return a|0}function lt(a){var b=0,c=0,d=0,e=0,f=0;d=Ui-16|0;Ui=d;J[d+12>>2]=0;H[a+3272|0]=K[a+3272|0]|2;Ny(a);b=J[a+1036>>2];e=J[a+1040>>2];if((b|0)!=(e|0)){while(1){f=J[(c<<2)+b>>2];if(f){GR(a,f);e=J[a+1040>>2];b=J[a+1036>>2]}c=c+1|0;if(c>>>0>2>>>0){continue}break}}Tj(J[a+3232>>2]);a:{b:{b=J[a+3192>>2];if((b|0)!=J[a+3196>>2]){c=0;while(1){b=(c<<3)+b|0;b=qr(J[a>>2],J[b>>2],J[b+4>>2]);if(!b){break b}vj(J[a>>2],J[b+8>>2]);c=c+1|0;b=J[a+3192>>2];if(c>>>0>2]-b>>3>>>0){continue}break}}J[a+3196>>2]=b;if(H[a+3204|0]&1){break a}lj(0,8,a+3192|0,a+3200|0,a+3196|0);Lj(J[a+3232>>2]);b=J[a+8>>2];JR(a);MR(a);if(b){cj(b)}Ui=d+16|0;return}Z(70819,38296,309,24515);B()}Z(151729,53895,501,2284);B()}function l3(a){a=a|0;var b=0,c=0,d=Q(0),e=Q(0),f=Q(0),g=Q(0),h=0,i=Q(0),j=Q(0),k=Q(0);b=Ui+-64|0;Ui=b;c=qj(a,1,J[215720],0);d=N[c+8>>2];e=N[c>>2];f=N[c+4>>2];if(!(!(e!=e|f!=f)&d==d)){O[b+56>>3]=d;O[b+48>>3]=f;J[b+32>>2]=1;O[b+40>>3]=e;fj(a,138436,b+32|0)}h=qj(a,2,J[215720],0);d=N[h+8>>2];e=N[h>>2];f=N[h+4>>2];if(!(!(e!=e|f!=f)&d==d)){O[b+24>>3]=d;O[b+16>>3]=f;J[b>>2]=2;O[b+8>>3]=e;fj(a,138436,b);d=N[h+8>>2];f=N[h+4>>2];e=N[h>>2]}i=N[c>>2];j=N[c+4>>2];k=N[c+8>>2];c=Sj(a,16);g=Q(Q(Q(k*d)+Q(Q(j*f)+Q(i*e)))+Q(1));g=Q(Y(Q(g+g)));N[c+12>>2]=g*Q(.5);g=Q(Q(1)/g);N[c+8>>2]=Q(Q(i*f)-Q(j*e))*g;N[c+4>>2]=Q(Q(k*e)-Q(i*d))*g;N[c>>2]=Q(Q(j*d)-Q(k*f))*g;rj(a,-1e4,16786);Mj(a,-2);Ui=b- -64|0;return 1}function kq(a,b,c,d){var e=0,f=0,g=0;f=Ui-16|0;Ui=f;a:{if(!d){d=J[a+32>>2];e=0;break a}b:{if((d|0)>0){d=(J[a+12>>2]+(d<<4)|0)-16|0;e=d>>>0>=M[a+8>>2]?173288:d;break b}e=J[a+8>>2]+(d<<4)|0;if(d>>>0>=4294957297){break b}c:{switch(d+10002|0){case 2:e=J[a+16>>2]+96|0;break b;case 1:d=J[J[J[J[a+20>>2]+4>>2]>>2]+12>>2];J[a+96>>2]=5;J[a+88>>2]=d;e=a+88|0;break b;case 0:e=a+72|0;break b;default:break c}}e=J[J[J[a+20>>2]+4>>2]>>2];e=K[e+7|0]<-10002-d>>>0?173288:(e+(0-d<<4)|0)-160024|0}d=J[a+32>>2];e=e-d|0}g=J[a+8>>2];J[f+12>>2]=c;b=g+((b^-1)<<4)|0;J[f+8>>2]=b;b=CI(a,1954,f+8|0,b-d|0,e);d:{if((c|0)!=-1){break d}c=J[a+20>>2];a=J[a+8>>2];if(M[c+8>>2]>a>>>0){break d}J[c+8>>2]=a}Ui=f+16|0;return b}function Uua(a){a=a|0;var b=0,c=Q(0),d=0,e=0;b=Ui-208|0;Ui=b;d=J[J[a+52>>2]+8>>2];e=J[J[a+48>>2]+8>>2];zj(156340,0);J[b+192>>2]=e;zj(156602,b+192|0);J[b+176>>2]=d;zj(156576,b+176|0);J[b+160>>2]=K[a+61|0];zj(157687,b+160|0);c=N[a+68>>2];O[b+152>>3]=N[a+72>>2];O[b+144>>3]=c;zj(157002,b+144|0);c=N[a+76>>2];O[b+136>>3]=N[a+80>>2];O[b+128>>3]=c;zj(156877,b+128|0);O[b+112>>3]=N[a+116>>2];zj(155922,b+112|0);J[b+96>>2]=K[a+112|0];zj(157463,b+96|0);O[b+80>>3]=N[a+120>>2];zj(155866,b+80|0);O[b+64>>3]=N[a+124>>2];zj(155894,b- -64|0);J[b+48>>2]=K[a+100|0];zj(157518,b+48|0);O[b+32>>3]=N[a+108>>2];zj(156041,b+32|0);O[b+16>>3]=N[a+104>>2];zj(155811,b+16|0);J[b>>2]=J[a+56>>2];zj(157263,b);Ui=b+208|0}function Ky(a,b,c,d){var e=0,f=0,g=0,h=0,i=0,j=0;g=Ui-16|0;Ui=g;a:{b:{if(J[d+4>>2]==J[d>>2]){if(H[d+12|0]&1){break a}j=d+8|0;h=d+4|0;lj(c,4,d,j,h);c:{if(!c){break c}d:{while(1){i=(e<<2)+b|0;f=wk(a,J[i>>2],g+12|0);if(f){b=J[i>>2];J[g+4>>2]=f;J[g>>2]=b;dj(4,88293,142038,g);b=J[d>>2];if((b|0)!=J[d+4>>2]){e=0;while(1){vj(a,J[(e<<2)+b>>2]);e=e+1|0;b=J[d>>2];if(e>>>0>2]-b>>2>>>0){continue}break}}J[d+4>>2]=b;if(!(H[d+12|0]&1)){break d}break a}f=J[h>>2];if((f|0)==J[j>>2]){break b}i=J[g+12>>2];J[h>>2]=f+4;J[f>>2]=i;e=e+1|0;if((e|0)!=(c|0)){continue}break}f=0;break c}lj(0,4,d,j,h)}Ui=g+16|0;return f}Z(113523,39139,105,24459);B()}Z(112520,53895,557,53220);B()}Z(151729,53895,501,2284);B()}function LK(a,b){var c=0,d=0,e=0;d=Ui-1040|0;Ui=d;J[d>>2]=a+8;J[d+4>>2]=a+140;c=d+16|0;Gj(c,1024,9898,d);a=Ui-1088|0;Ui=a;J[a+1084>>2]=0;J[a+1080>>2]=0;a:{b:{c:{if(kr(a+48|0,c)){J[a+32>>2]=c;dj(4,96538,147774,a+32|0);b=-3;break c}J[a+44>>2]=0;c=a+48|0;vu(c,a+1084|0);fo(a+1080|0,16,J[a+1084>>2]);e=J[a+1080>>2];if(!e){break b}d:{e:{f:{c=wu(c,e,J[a+1084>>2],a+44|0);switch(c+2|0){case 2:break d;case 0:break f;default:break e}}J[a+20>>2]=-2;J[a+16>>2]=a+48;dj(4,96538,137821,a+16|0);b=-3;break c}J[a+4>>2]=c;J[a>>2]=a+48;dj(4,96538,137736,a);cj(J[a+1080>>2]);b=-1;break c}b=Qu(J[a+1080>>2],J[a+1084>>2],b);cj(J[a+1080>>2])}Ui=a+1088|0;break a}Z(34640,37458,125,10027);B()}Ui=d+1040|0;return b}function Dna(a){a=a|0;var b=0,c=0,d=0,e=0,f=0,g=0;c=Ui-96|0;Ui=c;d=J[J[a+24>>2]>>2];e=J[J[d>>2]+44>>2];J[c+88>>2]=0;H[c+83|0]=0;J[c+76>>2]=0;b=-1;a:{if(CR(e+60|0,J[a+16>>2],J[a+20>>2],c+88|0,c+92|0,c+84|0,c+83|0,c+76|0)){b=J[J[d>>2]>>2];g=J[b+8>>2]-J[b+12>>2]>>4;Bj(b);e=kj(b,-1);gj(b,-2);if(!e){Nj(b,-1e4,J[d+12>>2]);Ok(b)}Nj(b,-1e4,J[d+16>>2]);d=hj(c,a+32|0,72);f=J[d+88>>2];if(K[d+83|0]==1){xj(b,f);Ll(b,-2);b:{if(!kj(b,-1)){break b}if(it(b,-1,d)){break b}N[(d+(J[d+76>>2]<<2)|0)+8>>2]=O[a+40>>3]}gj(b,-2)}xj(b,f);zR(b,d);Xj(b,-3);gj(b,-2);if(!e){a=J[b+8>>2];J[a+8>>2]=0;J[b+8>>2]=a+16;Ok(b)}if(J[b+8>>2]-J[b+12>>2]>>4!=(g|0)){break a}b=0}Ui=c+96|0;return b|0}Z(42939,37648,1055,1457);B()}function I8(a){a=a|0;var b=0,c=0,d=0,e=Q(0),f=Q(0),g=Q(0),h=Q(0),i=Q(0),j=Q(0),k=Q(0),l=Q(0),m=0;b=Ui+-64|0;Ui=b;c=Qj(a,1,b+60|0);a:{if(K[c+479|0]&16){break a}b:{d=Gm(a,2);c:{if(d){e=N[d>>2];f=N[d+4>>2];g=N[d+8>>2];N[b+24>>2]=g;N[b+20>>2]=f;N[b+16>>2]=e;Kn(b+32|0,b+16|0);h=N[b+36>>2];i=N[b+32>>2];j=N[b+44>>2];k=N[b+40>>2];break c}d=un(a,2);if(!d){break b}l=N[d+12>>2];e=N[d>>2];f=N[d+4>>2];g=N[d+8>>2];N[b+8>>2]=g;N[b+4>>2]=f;N[b>>2]=e;Kn(b+32|0,b);h=N[b+36>>2];i=N[b+32>>2];j=N[b+44>>2];k=N[b+40>>2]}N[c+172>>2]=l;N[c+168>>2]=g;N[c+164>>2]=f;N[c+160>>2]=e;N[c+28>>2]=j;N[c+24>>2]=k;N[c+20>>2]=h;N[c+16>>2]=i;J[c+476>>2]=J[c+476>>2]|4194304;break a}m=Dk(a,2,106958)}Ui=b- -64|0;return m|0}function Aga(a){a=a|0;var b=0,c=0,d=0,e=Q(0),f=0,g=Q(0),h=Q(0);b=Ui-80|0;Ui=b;f=pj(b+60|0,a,1,39481,1058);J[b+48>>2]=0;J[b+52>>2]=0;J[b+40>>2]=0;J[b+44>>2]=0;J[b+32>>2]=0;J[b+36>>2]=0;J[b+24>>2]=0;J[b+28>>2]=0;a:{if(!$l(a,b+24|0)){a=Jj(f,1666,0);break a}nr(a,J[78152]);c=Vj(a,-1);gj(a,-2);d=J[J[J[pk(a)+80>>2]+8>>2]>>2];c=J[c+8>>2];if(M[J[d+4>>2]>>2]>c>>>0){c=J[(d+(c<<2)|0)+12>>2]}else{c=0}if(!c){a=Jj(f,120224,0);break a}d=J[c+132>>2];b:{if(H[c+145|0]&1){c=J[d+64>>2];e=N[c+76>>2];N[b>>2]=e*N[c+44>>2];N[b+4>>2]=e*N[c+48>>2];N[b+8>>2]=e*N[c+52>>2];break b}g=N[d+103008>>2];h=N[d+103012>>2];e=N[J[d+36>>2]+68>>2];J[b+8>>2]=0;N[b+4>>2]=h*e;N[b>>2]=g*e}cl(a,b);a=1}oj(f);Ui=b+80|0;return a|0}function P9(a){a=a|0;var b=0,c=0,d=0,e=0,f=0,g=0,h=0,i=0,j=0;f=Ui-16|0;Ui=f;j=J[a+8>>2]-J[a+12>>2]>>4;Bj(a);c=qj(a,-1,J[219396],139183);gj(a,-2);e=Qj(a,1,f+12|0);b=L[e+656>>1];a:{g=L[98140];if((b|0)==(g|0)){b=c+364|0}else{d=J[c+32>>2];if(b>>>0>=(J[c+36>>2]-d|0)/672>>>0){break a}b=(d+P(b,672)|0)+658|0}b=L[b>>1];if((b|0)!=(g|0)){d=0;e=L[e+650>>1];while(1){if((b|0)!=(e|0)){h=J[c+32>>2];if((J[c+36>>2]-h|0)/672>>>0<=b>>>0){break a}d=d+1|0;b=L[(P(b,672)+h|0)+654>>1];if((g|0)!=(b|0)){continue}}break}i=+(d>>>0)}else{i=0}c=J[a+8>>2];J[c+8>>2]=3;O[c>>3]=i;J[a+8>>2]=J[a+8>>2]+16;if((j+1|0)==J[a+8>>2]-J[a+12>>2]>>4){Ui=f+16|0;return 1}Z(143334,37682,991,5467);B()}Z(145396,53895,487,84789);B()}function w7(a){a=a|0;var b=0,c=0,d=0,e=0,f=0,g=0,h=0,i=0,j=0,k=0,l=0;b=Ui-2256|0;Ui=b;k=pj(b+2236|0,a,1,41468,267);e=J[J[245434]+8408>>2];g=J[e+52>>2];Tj(g);f=yK(e);Fj(a,f,0);if(f){h=b+172|0;l=b+40|0;while(1){a:{if(SB(e,c,b+2220|0)){c=c+1|0;break a}i=b+32|0;Ls(J[b+2224>>2],i);d=J[a+8>>2];J[d+8>>2]=3;c=c+1|0;O[d>>3]=c|0;J[a+8>>2]=J[a+8>>2]+16;Fj(a,0,0);d=J[b+2228>>2];j=J[a+8>>2];J[j+8>>2]=3;O[j>>3]=d|0;J[a+8>>2]=J[a+8>>2]+16;ej(a,-2,1748);xj(a,J[b+2220>>2]);ej(a,-2,66013);b:{if(!K[b+40|0]){J[b+4>>2]=h;J[b>>2]=i;ik(a,26114,b);break b}J[b+24>>2]=h;J[b+20>>2]=l;J[b+16>>2]=b+32;ik(a,26181,b+16|0)}ej(a,-2,52167);Kj(a,-3)}if((c|0)!=(f|0)){continue}break}}Lj(g);oj(k);Ui=b+2256|0;return 1}function bV(a){var b=0,c=0,d=0;c=J[a+16>>2];a:{if((c|0)!=-1){b=J[a+4>>2];break a}b:{c:{c=J[a+8>>2];if((c|0)==J[a+12>>2]){J[a+12>>2]=c<<1;b=J[a+4>>2];c=sj(P(c,72));J[a+4>>2]=c;hj(c,b,P(J[a+8>>2],36));cj(b);d=J[a+4>>2];b=J[a+12>>2]-1|0;c=J[a+8>>2];if((b|0)>(c|0)){break c}break b}Z(2331,42086,61,69635);B()}while(1){b=P(c,36);c=c+1|0;J[(b+d|0)+20>>2]=c;d=J[a+4>>2];J[(b+d|0)+32>>2]=-1;b=J[a+12>>2]-1|0;if((c|0)<(b|0)){continue}break}}J[(P(b,36)+d|0)+20>>2]=-1;b=J[a+4>>2];J[(b+P(J[a+12>>2],36)|0)-4>>2]=-1;c=J[a+8>>2];J[a+16>>2]=c}d=b;b=P(c,36);d=d+b|0;J[a+16>>2]=J[d+20>>2];J[d+20>>2]=-1;b=b+J[a+4>>2]|0;J[b+32>>2]=0;J[b+24>>2]=-1;J[b+28>>2]=-1;J[b+16>>2]=0;J[a+8>>2]=J[a+8>>2]+1;return c}function GJ(a,b,c,d,e,f,g,h){var i=0,j=0,k=0,l=0,m=0,n=0;m=Ui-16|0;Ui=m;i=J[245446];j=J[i+16>>2];if(j){Tj(j)}a:{b:{c:{n=L[i+68>>1];l=L[i+70>>1];d:{if((n|0)==(l|0)){J[f>>2]=0;J[m>>2]=n;dj(4,96825,151589,m);break d}k=J[i+64>>2];if(!k){break c}if(l>>>0>=n>>>0){break b}I[i+70>>1]=l+1;k=L[k+(l<<1)>>1]}if(j){Lj(j)}j=-3;if((l|0)!=(n|0)){j=J[i+52>>2];i=J[i+48>>2];if(k>>>0>=(j-i|0)/40>>>0){break a}i=i+P(k,40)|0;J[i+28>>2]=e;J[i>>2]=g;J[i+4>>2]=h;I[i+24>>1]=k;I[i+32>>1]=1;J[i+20>>2]=c;J[i+16>>2]=d;J[i+8>>2]=0;J[i+12>>2]=0;if(a){c=sj(b);J[i+12>>2]=b;J[i+8>>2]=c;hj(c,a,b)}J[f>>2]=i;j=0}Ui=m+16|0;return j}Z(49493,54340,151,43112);B()}Z(2701,54340,152,43112);B()}Z(145396,53895,487,84789);B()}function E9(a){a=a|0;var b=0,c=0,d=0,e=0,f=0,g=0,h=0,i=0;f=Ui-32|0;Ui=f;i=pj(f+8|0,a,1,37682,3607);Bj(a);d=qj(a,-1,J[219396],139183);gj(a,-2);Qj(a,1,f+28|0);a:{b:{c:{d:{e=J[d+32>>2];g=(J[d+36>>2]-e|0)/672|0;c=J[f+28>>2];h=c&65535;b=h;if(g>>>0>b>>>0){b=e+P(b,672)|0;if(L[b+648>>1]!=(c>>>16|0)){break d}if(L[b+650>>1]!=(h|0)){break c}c=0;b=L[b+656>>1];if((b|0)==65535){break a}if(b>>>0>=g>>>0){break b}c=e+P(b,672)|0;c=L[c+648>>1]<<16|L[c+650>>1];break a}break b}Z(47372,40876,188,69601);B()}Z(5388,40876,189,69601);B()}Z(145396,53895,487,84789);B()}e:{if(c){e=Sj(a,8);J[e+4>>2]=c;J[e>>2]=d;rj(a,-1e4,1423);Mj(a,-2);break e}d=J[a+8>>2];J[d+8>>2]=0;J[a+8>>2]=d+16}oj(i);Ui=f+32|0;return 1}function dda(a,b,c){a=a|0;b=b|0;c=c|0;var d=0,e=0,f=Q(0),g=Q(0),h=0;d=Ui+-64|0;Ui=d;if(a){e=J[a+4>>2];a:{if(H[a+28|0]&1){N[d+48>>2]=N[b>>2];N[d+52>>2]=N[b+4>>2];N[d+56>>2]=N[b+8>>2];a=J[d+48>>2];b=J[d+52>>2];N[e+24>>2]=N[d+56>>2];break a}a=J[e+16>>2];h=J[e+20>>2];N[d+40>>2]=N[e+24>>2];J[d+32>>2]=a;J[d+36>>2]=h;f=N[b>>2];N[d+32>>2]=f;g=N[b+4>>2];N[d+20>>2]=g;N[d+16>>2]=f;N[d+36>>2]=g;N[d+24>>2]=N[d+40>>2];a=J[d+16>>2];b=J[d+20>>2];N[e+24>>2]=N[d+24>>2]}J[e+16>>2]=a;J[e+20>>2]=b;N[d>>2]=N[c>>2];N[d+4>>2]=N[c+4>>2];N[d+8>>2]=N[c+8>>2];N[d+12>>2]=N[c+12>>2];a=J[d>>2];b=J[d+4>>2];c=J[d+12>>2];J[e+8>>2]=J[d+8>>2];J[e+12>>2]=c;J[e>>2]=a;J[e+4>>2]=b;J[75074]=J[75074]+1}Ui=d- -64|0}function zG(a){var b=0,c=0,d=0,e=0,f=0,g=0,h=0;g=rH(a);d=J[a+216>>2];a:{if(g>>>0<=d>>>0){break a}b:{if(!(H[J[a>>2]+184|0]&1)){b=0;if(J[a+4>>2]-1>>>0<2){break b}}c:{b=J[a+68>>2];if(b){b=L[b+592>>1];if(b){break c}}b=L[a+228>>1];break b}c=L[a+228>>1];b=c?b>>>0>c>>>0?c:b:b}c=-27648;b=b&65535;h=b-1>>>0>=16748?16749:b;if(h>>>0>>0){break a}b=J[a+200>>2]-J[a+192>>2]|0;e=J[a+76>>2];if(e){f=J[e+80>>2];if(!f){break a}d:{e:{switch(J[f+4>>2]-2|0){case 4:case 5:case 6:case 8:a=J[e>>2];break d;case 0:break e;default:break a}}c=J[f+24>>2];a=(c+J[e+12>>2]|0)+(J[a+20>>2]>1?c:0)|0}b=a+b|0}c=0;if((b|0)<0){return b}a=h-d|0;if(a>>>0<=b>>>0){break a}a=a-b|0;b=g-d|0;c=a>>>0>>0?a:b}return c}function jC(a,b,c){var d=0,e=0,f=0,g=0,h=0,i=0,j=0;h=Ui-16|0;Ui=h;a:{e=J[a+2212>>2];d=J[a+2208>>2];if((e|0)!=(d|0)){d=e-d>>4;j=d>>>0<=1?1:d;while(1){d=J[a+2208>>2];if(J[a+2212>>2]-d>>4>>>0<=g>>>0){break a}f=g<<4;i=d+f|0;e=i;d=J[e>>2];e=J[e+4>>2];b:{c:{d:{if(d|e){e=mC(b,d,e);if((e|0)<0){break b}d=J[a+2208>>2];if(J[a+2212>>2]-d>>4>>>0<=g>>>0){break a}f=(d+f|0)+8|0;break d}e=g;f=(e<<3)+c|0;d=J[f>>2];f=J[f+4>>2];if(d|f){break c}f=i+8|0}d=J[f>>2];f=J[f+4>>2]}if(e>>>0<=7){e=(e<<3)+c|0;J[e>>2]=d;J[e+4>>2]=f;break b}if(K[337296]){break b}H[337296]=1;J[h>>2]=g;J[h+4>>2]=8;dj(3,90423,128149,h)}g=g+1|0;if((j|0)!=(g|0)){continue}break}}Ui=h+16|0;return}Z(145396,53895,487,84789);B()}function aO(a,b,c){var d=0,e=0;a:{b:{e=b&65535;d=J[a+32>>2];if(e>>>0<(J[a+36>>2]-d|0)/672>>>0){d=P(e,672)+d|0;if(L[d+648>>1]!=(b>>>16|0)){break b}if(L[d+650>>1]!=(e|0)){break a}b=J[d+476>>2];J[d+476>>2]=b&-262145|c<<18&262144;c:{if(!(c&1)|(b>>>4&15)-5>>>0<2){break c}b=J[a+132>>2];if(!b){break c}c=J[d+488>>2];e=J[d+492>>2];b=J[J[a+128>>2]+(mxa(c,e,b)<<2)>>2];if((b|0)==-1){break c}a=J[a+136>>2];while(1){b=a+P(b,40)|0;if(J[b>>2]!=(c|0)|J[b+4>>2]!=(e|0)){b=J[b+32>>2];if((b|0)!=-1){continue}break c}break}if(!(J[b+8>>2]|J[b+12>>2])){break c}N[d+64>>2]=L[b+24>>1];N[d+68>>2]=L[b+26>>1]}return}Z(145396,53895,487,84789);B()}Z(47372,40876,188,69601);B()}Z(5388,40876,189,69601);B()}function haa(a){a=a|0;var b=0,c=0,d=0,e=0,f=0,g=0,h=0;d=Ui-16|0;Ui=d;g=J[a+8>>2]-J[a+12>>2]>>4;Fj(a,0,0);Fj(a,0,1);Nk(a,2321,0);ej(a,-2,5326);Mj(a,-2);Bj(a);b=qj(a,-1,J[219396],139183);gj(a,-2);a:{b:{if(kj(a,1)){c=Qj(a,1,d+12|0);f=LO(a,b,c,d+8|0);if(f){break b}h=J[d+8>>2];c=L[c+656>>1];if((c|0)!=L[98140]){e=J[b+32>>2];if(c>>>0>=(J[b+36>>2]-e|0)/672>>>0){break a}c=e+P(c,672)|0;e=L[c+650>>1]|L[c+648>>1]<<16}Zx(b,h,e,0);break b}f=MO(a,b,L[b+364>>1],0)}b=68808;c:{d:{switch(f+4|0){case 4:b=1;if((g+1|0)==J[a+8>>2]-J[a+12>>2]>>4){break c}Z(143334,37682,3821,68863);B();default:b=74523;break;case 0:break d}}gj(a,-2);b=fj(a,b,0)}Ui=d+16|0;return b|0}Z(145396,53895,487,84789);B()}function Wra(a,b,c){a=a|0;b=b|0;c=c|0;var d=Q(0),e=Q(0),f=0,g=Q(0),h=Q(0),i=Q(0),j=Q(0),k=Q(0),l=Q(0);f=J[a+44>>2];a=J[a+4>>2];a:{if(a){if(f){e=N[a+24>>2];d=N[f+24>>2];g=e>d?e:d;e=N[a+8>>2];d=N[f+8>>2];h=e>2];d=N[f+20>>2];i=e>d?e:d;e=N[a+4>>2];d=N[f+4>>2];j=e>2];d=N[f+16>>2];k=e>d?e:d;d=N[a>>2];e=N[f>>2];d=e>d?d:e;break a}l=N[a+28>>2];g=N[a+24>>2];i=N[a+20>>2];k=N[a+16>>2];e=N[a+12>>2];h=N[a+8>>2];j=N[a+4>>2];d=N[a>>2];break a}d=Q(0);if(!f){break a}l=N[f+28>>2];g=N[f+24>>2];i=N[f+20>>2];k=N[f+16>>2];e=N[f+12>>2];h=N[f+8>>2];j=N[f+4>>2];d=N[f>>2]}N[b+12>>2]=e;N[b+8>>2]=h;N[b+4>>2]=j;N[b>>2]=d;N[c+12>>2]=l;N[c+8>>2]=g;N[c+4>>2]=i;N[c>>2]=k}function F5(a){a=a|0;var b=0,c=0,d=0,e=0,f=0,g=0,h=0,i=0,j=0;e=Ui-16|0;Ui=e;b=J[a+8>>2]-J[a+12>>2]>>4;h=b;Bj(a);qj(a,-1,J[84364],139081);gj(a,-2);a:{if((b|0)==J[a+8>>2]-J[a+12>>2]>>4){Oj(a,1,5);f=Sj(a,4);J[f>>2]=ij(nj(264),0,264);rj(a,-1e4,62257);Mj(a,-2);b=J[a+8>>2];J[b+8>>2]=0;J[a+8>>2]=b+16;if($j(a,1)){while(1){i=mk(a,-1);j=Yi;g=Ui-16|0;Ui=g;d=-2;b=J[f>>2];c=J[b+256>>2];if((c|0)!=32){d=c+1|0;J[b+256>>2]=d;c=b+(c<<3)|0;J[c>>2]=i;J[c+4>>2]=j;AF(b,b+(d<<3)|0);d=0}Ui=g+16|0;if(d){J[e>>2]=32;dj(3,90423,102134,e)}gj(a,-2);if($j(a,1)){continue}break}}if((h+1|0)!=J[a+8>>2]-J[a+12>>2]>>4){break a}Ui=e+16|0;return 1}Z(143244,37616,478,51340);B()}Z(143334,37616,2586,62279);B()}function JO(a,b,c,d,e,f){var g=0,h=0,i=0,j=0;g=Ui-16|0;Ui=g;I[g+14>>1]=d;I[g+10>>1]=c;I[g+6>>1]=65535;I[g+8>>1]=65535;I[g+12>>1]=0;qD(a,b,e,g+6|0,f);a:{d=L[g+6>>1];if((d|0)!=65535){f=0;while(1){h=J[e>>2];j=(J[e+4>>2]-h|0)/24|0;d=d&65535;if(j>>>0<=d>>>0){break a}b=h+P(d,24)|0;i=L[b+16>>1];if((i|0)==65535){h=0}else{if(i>>>0>=j>>>0){break a}h=(h+P(i,24)|0)+4|0}j=L[b+20>>1];i=J[a+32>>2];if(j>>>0>=(J[a+36>>2]-i|0)/672>>>0){break a}i=i+P(j,672)|0;TN(i,b,b+4|0,h,f&65535,L[g+12>>1],L[g+14>>1],c);h=L[g+12>>1];JO(a,L[i+658>>1],L[g+10>>1]+(h?16-S(h<<16)|0:0)&65535,L[g+14>>1],e,d);f=f+1|0;d=L[b+18>>1];if((d|0)!=65535){continue}break}}Ui=g+16|0;return}Z(145396,53895,487,84789);B()}function Gja(a){a=a|0;var b=0,c=0,d=0;c=J[a>>2];b=nj(52);J[b>>2]=0;J[b+4>>2]=0;J[b+48>>2]=-1;J[b+40>>2]=0;J[b+44>>2]=0;J[b+32>>2]=0;J[b+36>>2]=0;J[b+24>>2]=0;J[b+28>>2]=0;J[b+16>>2]=0;J[b+20>>2]=0;J[b+8>>2]=0;J[b+12>>2]=0;a:{b:{c:{d=J[a+16>>2];c=J[c+4>>2];c=c>>>0>d>>>0?d:c;if(c>>>0>=J[b+8>>2]-J[b>>2]>>8>>>0){if(H[b+28|0]&1){break b}lj(c,8,b+16|0,b+24|0,b+20|0);if(H[b+12|0]&1){break b}lj(c,256,b,b+8|0,b+4|0);if(H[b+44|0]&1){break b}lj(c,4,b+32|0,b+40|0,b+36|0);d=J[b+32>>2];if(c>>>0>J[b+40>>2]-d>>2>>>0){break c}J[b+36>>2]=d+(c<<2);break a}Z(144726,54416,76,2284);B()}Z(144782,53895,514,59583);B()}Z(151729,53895,501,2284);B()}ij(J[b>>2],0,c<<8);J[J[a+12>>2]>>2]=b;return 0}function Cea(a){a=a|0;var b=0,c=0,d=0,e=0,f=0,g=0,h=0;d=Ui-16|0;Ui=d;c=-2;a:{if(!dk(J[a+12>>2],J[a+16>>2],239048,d+12|0,0)){b=J[d+12>>2];e=J[b+12>>2];if(e){while(1){if(f>>>0>=e>>>0){break a}g=P(f,24);Tk(J[a+24>>2],J[(g+J[b+8>>2]|0)+4>>2]);b=J[d+12>>2];e=J[b+12>>2];if(e>>>0<=f>>>0){break a}c=0;h=J[b+8>>2];b:{if(!J[(h+g|0)+12>>2]){break b}while(1){Tk(J[a+24>>2],J[(J[(g+h|0)+8>>2]+(c<<3)|0)+4>>2]);b=J[d+12>>2];e=J[b+12>>2];if(e>>>0<=f>>>0){break a}if(c>>>0>6){break b}c=c+1|0;h=J[b+8>>2];if(c>>>0>2]){continue}break}}f=f+1|0;if(e>>>0>f>>>0){continue}break}}Tk(J[a+24>>2],J[b>>2]);J[J[a+32>>2]>>2]=J[d+12>>2];c=0}Ui=d+16|0;return c|0}Z(12664,55193,101,84789);B()}function vga(a){a=a|0;var b=0,c=0,d=0,e=0,f=0,g=0,h=0,i=0,j=0,k=0;b=Ui+-64|0;Ui=b;h=1;j=pj(b+12|0,a,1,39481,1295);c=J[J[pk(a)+80>>2]+8>>2];J[b+8>>2]=0;J[b+4>>2]=0;J[b+56>>2]=0;J[b+60>>2]=0;J[b+48>>2]=0;J[b+52>>2]=0;J[b+40>>2]=0;J[b+44>>2]=0;J[b+32>>2]=0;J[b+36>>2]=0;e=c;c=b+32|0;Al(a,1,e,80935,b+8|0,c,b+4|0);f=mk(a,2);d=J[b+8>>2];e=J[b+4>>2];i=Yi;g=Vl(e,f,i,1);if(g){d=J[d+8>>2];k=c;if(H[e+145|0]&1){c=(g&L[d+6>>1])!=0}else{e=0;d=J[d+100>>2];if(!d|J[J[d+12>>2]+4>>2]==4){c=e}else{c=(g&L[J[d+40>>2]+2>>1])!=0}}H[k|0]=c}a:{if(!g){J[b>>2]=tj(f,i);h=fj(a,118777,b);break a}f=K[b+32|0];c=J[a+8>>2];J[c+8>>2]=1;J[c>>2]=(f|0)!=0;J[a+8>>2]=J[a+8>>2]+16}oj(j);Ui=b- -64|0;return h|0}function Zk(a){var b=0,c=0,d=0;a:{b:{c:{b=K[a+1388|0];if(b){break c}if(J[a+1396>>2]){return-1}c=J[a+1392>>2];if((c|0)==-1){J[a+1400>>2]=J[a+1128>>2]-1;if(!Qo(a)){J[a+1396>>2]=1;return-1}if(!(H[a+1387|0]&1)){break b}c=J[a+1392>>2]}d=c+1|0;J[a+1392>>2]=d;b=K[(a+c|0)+1132|0];if((b|0)!=255){J[a+1400>>2]=c;J[a+1396>>2]=1}if(J[a+1128>>2]<=(d|0)){J[a+1392>>2]=-1}if(K[a+1388|0]){break a}H[a+1388|0]=b;if(b){break c}return-1}H[a+1388|0]=b-1;J[a+1412>>2]=J[a+1412>>2]+1;b=J[a+44>>2];d:{e:{if(b){if(b>>>0>=M[a+52>>2]){break e}J[a+44>>2]=b+1;b=K[b|0];break d}b=gl(J[a+32>>2]);if((b|0)!=-1){break d}}J[a+108>>2]=1;b=0}return b&255}J[a+112>>2]=32;return-1}Z(113014,82607,1555,13887);B()}function JC(a,b,c){var d=0,e=0,f=0,g=0,h=0,i=0;d=Ui-960|0;Ui=d;ij(d+8|0,0,952);I[d+952>>1]=K[b+345|0]&2|1;H[b+344|0]=c;a:{if(!(H[b+304|0]&1)){lj(J[a+92>>2],16,b+292|0,b+300|0,b+296|0);J[b+296>>2]=J[b+292>>2];ij(J[b+308>>2],255,J[b+312>>2]<<2);J[b+328>>2]=-1;J[b+332>>2]=0;J[b+320>>2]=J[b+316>>2];g=b+308|0;VC(g,64,256);c=K[b+344|0];J[d+804>>2]=0;J[d+800>>2]=c;if(J[a+92>>2]){c=0;while(1){f=J[a+88>>2]+(c<<3)|0;h=bj(J[f+4>>2]);i=Yi;e=J[b+296>>2];if((e|0)==J[b+300>>2]){break a}f=J[f>>2];J[b+296>>2]=e+16;J[e+8>>2]=h;J[e+12>>2]=i;J[e>>2]=f;Sp(g,h,i,d+8|0);c=c+1|0;if(c>>>0>2]){continue}break}}Ui=d+960|0;return}Z(151729,53895,501,2284);B()}Z(112520,53895,557,53220);B()}function G4(a,b,c,d,e){a=a|0;b=b|0;c=c|0;d=d|0;e=e|0;a=Ui-48|0;Ui=a;J[b+2224>>2]=c;a:{b:{if(!Cn(d,52837)){d=Tr(e,0);J[b+2212>>2]=d;if((d|0)<0){J[a>>2]=d;dj(4,96538,141143,a);break b}c=J[b+2196>>2];if(d>>>0>J[b+2204>>2]-c>>>0){if(H[b+2208|0]&1){break a}lj(d,1,b+2196|0,b+2204|0,b+2200|0);c=J[b+2196>>2]}J[b+2200>>2]=c;break b}if(Cn(d,68265)){break b}J[a+16>>2]=a+44;J[a+20>>2]=a+40;J[a+24>>2]=a+36;if((Lt(e,76793,a+16|0)|0)!=3){break b}c=J[a+44>>2];J[b+2216>>2]=c;d=J[a+40>>2]-c|0;J[b+2212>>2]=d;c=J[b+2196>>2];if(d>>>0>J[b+2204>>2]-c>>>0){if(H[b+2208|0]&1){break a}lj(d,1,b+2196|0,b+2204|0,b+2200|0);c=J[b+2196>>2]}J[b+2200>>2]=c}Ui=a+48|0;return}Z(151729,53895,501,2284);B()}function vF(a,b,c){var d=0,e=0,f=0,g=0,h=0,i=0;a:{b:{g=J[a+4>>2];if((g|0)!=(c|0)){break b}if(!c){break a}f=J[a+8>>2];while(1){h=K[d+f|0];e=K[b+d|0];if((h|0)!=(e|0)){if((e^h)!=32|((e&223)-65&255)>>>0>25){break b}}d=d+1|0;if((d|0)!=(c|0)){continue}break}break a}i=-1;c=yj(b);if(g>>>0<3){break a}a=J[a+8>>2];if(!c|(K[a|0]!=42|K[a+1|0]!=46)){break a}e=a+1|0;d=0;while(1){f=b+d|0;if(K[f|0]!=46){d=d+1|0;if((c|0)!=(d|0)){continue}break a}break}if(!d){break a}b=c-d|0;if((b|0)!=(g-1|0)){return-1}d=0;while(1){c:{a=K[d+e|0];c=K[d+f|0];if((a|0)==(c|0)){break c}if((a^c)!=32){return-1}if(((a&223)-65&255)>>>0<=25){break c}return-1}i=0;d=d+1|0;if((b|0)!=(d|0)){continue}break}}return i}function rV(a,b){var c=0,d=0;a:{b:{c:{if(!(K[J[a+88>>2]+102868|0]&2)){if(J[b+8>>2]!=(a|0)){break c}if(J[a+104>>2]<=0){break b}c=J[a+100>>2];if(!c){break a}if((b|0)==(c|0)){d=a+100|0}else{while(1){d=c;c=J[c+4>>2];if(!c){break a}if((b|0)!=(c|0)){continue}break}d=d+4|0}J[d>>2]=J[b+4>>2];c=J[a+112>>2];if(c){while(1){d=J[c+4>>2];c=J[c+12>>2];if(!(J[d+48>>2]!=(b|0)&J[d+52>>2]!=(b|0))){Pv(J[a+88>>2]+102872|0,d)}if(c){continue}break}}d=J[a+88>>2];if(K[a+4|0]&32){YE(b,d+102872|0)}XE(b,d);J[b+4>>2]=0;J[b+8>>2]=0;Ir(d,b,52);J[a+104>>2]=J[a+104>>2]-1;Hr(a);return}Z(62621,36890,201,62709);B()}Z(21156,36890,207,62709);B()}Z(111945,36890,210,62709);B()}Z(71318,36890,226,62709);B()}function Gua(a){a=a|0;var b=0,c=Q(0),d=0,e=0;b=Ui-192|0;Ui=b;d=J[J[a+52>>2]+8>>2];e=J[J[a+48>>2]+8>>2];zj(156317,0);J[b+176>>2]=e;zj(156602,b+176|0);J[b+160>>2]=d;zj(156576,b+160|0);J[b+144>>2]=K[a+61|0];zj(157687,b+144|0);c=N[a+76>>2];O[b+136>>3]=N[a+80>>2];O[b+128>>3]=c;zj(157002,b+128|0);c=N[a+84>>2];O[b+120>>3]=N[a+88>>2];O[b+112>>3]=c;zj(156877,b+112|0);c=N[a+92>>2];O[b+104>>3]=N[a+96>>2];O[b+96>>3]=c;zj(156962,b+96|0);J[b+80>>2]=K[a+128|0];zj(157518,b+80|0);O[b+64>>3]=N[a+124>>2];zj(156041,b- -64|0);O[b+48>>3]=N[a+120>>2];zj(155811,b+48|0);O[b+32>>3]=N[a+68>>2];zj(155370,b+32|0);O[b+16>>3]=N[a+72>>2];zj(155513,b+16|0);J[b>>2]=J[a+56>>2];zj(157263,b);Ui=b+192|0}function VQ(a,b,c){var d=0,e=0,f=0,g=0,h=0;d=Ui-48|0;Ui=d;a:{b:{if(!b){J[d>>2]=c;dj(3,88458,118813,d);e=-13;break b}h=(J[b+4>>2]-J[b>>2]|0)/18568|0;if(h){while(1){e=J[b+16>>2];if(M[e+4>>2]<=f>>>0){break a}g=J[(J[e>>2]+P(f,160)|0)+48>>2];e=wk(a,g,d+44|0);if(e){J[d+36>>2]=c;J[d+32>>2]=g;dj(4,88458,134979,d+32|0);break b}pM(b,f,J[d+44>>2]);e=J[b+16>>2];if(M[e+4>>2]<=f>>>0){break a}g=J[(J[e>>2]+P(f,160)|0)+56>>2];e=wk(a,g,d+40|0);if(e){J[d+20>>2]=c;J[d+16>>2]=g;dj(4,88458,134928,d+16|0);break b}sM(b,f,J[d+40>>2]);if(J[J[J[d+40>>2]>>2]+168>>2]){dj(4,88458,151291,0);e=-15;break b}f=f+1|0;if((h|0)!=(f|0)){continue}break}}e=0}Ui=d+48|0;return e}Z(12664,55442,270,84789);B()}function Qo(a){var b=0;a:{b:{b=J[a+44>>2];c:{if(b){if(b>>>0>=M[a+52>>2]){break b}J[a+44>>2]=b+1;b=K[b|0];break c}b=gl(J[a+32>>2]);if((b|0)==-1){break b}}if((b&255)!=79){break a}b=J[a+44>>2];d:{if(b){if(b>>>0>=M[a+52>>2]){break b}J[a+44>>2]=b+1;b=K[b|0];break d}b=gl(J[a+32>>2]);if((b|0)==-1){break b}}if((b&255)!=103){break a}b=J[a+44>>2];e:{if(b){if(b>>>0>=M[a+52>>2]){break b}J[a+44>>2]=b+1;b=K[b|0];break e}b=gl(J[a+32>>2]);if((b|0)==-1){break b}}if((b&255)!=103){break a}b=J[a+44>>2];f:{if(b){if(b>>>0>=M[a+52>>2]){break b}J[a+44>>2]=b+1;b=K[b|0];break f}b=gl(J[a+32>>2]);if((b|0)==-1){break b}}if((b&255)!=83){break a}return Xq(a)}J[a+108>>2]=1}J[a+112>>2]=30;return 0}function z5(a){a=a|0;var b=0,c=0,d=0,e=0;d=Ui+-64|0;Ui=d;c=J[a+8>>2]-J[a+12>>2]|0;Bj(a);e=qj(a,-1,J[84364],139081);gj(a,-2);if(c>>4==J[a+8>>2]-J[a+12>>2]>>4){b=Ej(a,1);a:{if(b>>>0>=3){J[d+4>>2]=b;J[d>>2]=35504;a=fj(a,142547,d);break a}c=d+24|0;J[c+8>>2]=b;J[c+12>>2]=0;J[c>>2]=16;b=J[e+4>>2];if((b|0)!=J[e+8>>2]){J[e+4>>2]=b+40;a=J[c+36>>2];J[b+32>>2]=J[c+32>>2];J[b+36>>2]=a;a=J[c+28>>2];J[b+24>>2]=J[c+24>>2];J[b+28>>2]=a;a=J[c+20>>2];J[b+16>>2]=J[c+16>>2];J[b+20>>2]=a;a=J[c+12>>2];J[b+8>>2]=J[c+8>>2];J[b+12>>2]=a;a=J[c+4>>2];J[b>>2]=J[c>>2];J[b+4>>2]=a;a=0;break a}J[d+16>>2]=(b-J[e>>2]|0)/40;a=fj(a,132935,d+16|0)}Ui=d- -64|0;return a|0}Z(143244,37616,478,51340);B()}function Uv(a,b){var c=0,d=0,e=0,f=0,g=0;c=Ui-32|0;Ui=c;J[c+24>>2]=0;J[c+28>>2]=0;J[c+16>>2]=0;J[c+20>>2]=0;a:{while(1){J[(c+16|0)+(d<<2)>>2]=fw(a,c+12|0,0);e=J[c+12>>2];if((e|0)==(a|0)){break a}f=K[e|0];if(H[a|0]-48>>>0>9|(f?(f|0)!=46:0)){break a}if(f){a=e+1|0;d=d+1|0;if((d|0)!=4){continue}break a}break}b:{c:{d:{e:{switch(d|0){case 2:a=J[c+24>>2];break c;case 1:a=J[c+20>>2];break d;case 4:break a;case 0:break e;default:break b}}a=J[c+16>>2];J[c+16>>2]=a>>>24;a=a&16777215}J[c+20>>2]=a>>>16;a=a&65535}J[c+24>>2]=a>>>8;J[c+28>>2]=a&255}a=0;while(1){d=J[(c+16|0)+(a<<2)>>2];if(d>>>0>255){g=0;break a}H[a+b|0]=d;g=1;a=a+1|0;if((a|0)!=4){continue}break}}Ui=c+32|0;return g}function U5(a){a=a|0;var b=0,c=0,d=0,e=0,f=0,g=0;d=Ui-48|0;Ui=d;b=J[a+8>>2]-J[a+12>>2]|0;Bj(a);e=qj(a,-1,J[84364],139081);gj(a,-2);if(b>>4==J[a+8>>2]-J[a+12>>2]>>4){b=d+8|0;a:{if(kk(a,1)){f=sl(a,1);break a}c=mk(a,1);g=Yi;f=0}J[b+16>>2]=f;J[b+20>>2]=0;J[b+8>>2]=c;J[b+12>>2]=g;J[b>>2]=3;c=J[e+4>>2];b:{if((c|0)!=J[e+8>>2]){J[e+4>>2]=c+40;a=J[b+36>>2];J[c+32>>2]=J[b+32>>2];J[c+36>>2]=a;a=J[b+28>>2];J[c+24>>2]=J[b+24>>2];J[c+28>>2]=a;a=J[b+20>>2];J[c+16>>2]=J[b+16>>2];J[c+20>>2]=a;a=J[b+12>>2];J[c+8>>2]=J[b+8>>2];J[c+12>>2]=a;a=J[b+4>>2];J[c>>2]=J[b>>2];J[c+4>>2]=a;a=0;break b}J[d>>2]=(c-J[e>>2]|0)/40;a=fj(a,132935,d)}Ui=d+48|0;return a|0}Z(143244,37616,478,51340);B()}function wJ(a,b){var c=Q(0),d=Q(0),e=Q(0),f=Q(0),g=Q(0),h=Q(0),i=Q(0),j=Q(0),k=Q(0),l=Q(0),m=Q(0),n=Q(0),o=Q(0),p=0,q=0;c=N[b>>2];i=N[b+4>>2];f=N[b+12>>2];l=N[b+8>>2];j=N[b+40>>2];e=N[b+36>>2];k=N[b+32>>2];p=J[b+20>>2];q=J[b+16>>2];g=N[b+24>>2];J[a+60>>2]=1065353216;N[a+56>>2]=g;J[a+48>>2]=q;J[a+52>>2]=p;N[a+12>>2]=k*Q(0);N[a+28>>2]=e*Q(0);N[a+44>>2]=j*Q(0);m=Q(i+i);h=Q(c*m);g=Q(l+l);d=Q(f*g);N[a+4>>2]=k*Q(h+d);n=Q(c*g);o=Q(m*f);N[a+8>>2]=k*Q(n-o);N[a+16>>2]=e*Q(h-d);h=Q(i*g);d=f;f=Q(c+c);d=Q(d*f);N[a+24>>2]=e*Q(h+d);N[a+32>>2]=j*Q(n+o);N[a+36>>2]=j*Q(h-d);d=e;c=Q(Q(1)-Q(c*f));e=Q(l*g);N[a+20>>2]=d*Q(c-e);d=c;c=Q(i*m);N[a+40>>2]=j*Q(d-c);N[a>>2]=k*Q(Q(Q(1)-c)-e)}function rl(a){var b=0,c=0,d=0,e=0;d=J[a+176>>2];c=J[a+172>>2];a:{if(d>>>0>c>>>0){b=c+1|0;J[a+172>>2]=b;e=K[c|0];break a}if(!J[a+32>>2]){b=c;break a}b=a+40|0;c=Zi[J[a+16>>2]](J[a+28>>2],b,J[a+36>>2])|0;J[a+168>>2]=J[a+168>>2]+(J[a+172>>2]-J[a+180>>2]|0);b:{if(!c){H[a+40|0]=0;J[a+32>>2]=0;d=a+41|0;e=0;break b}d=b+c|0;e=K[b|0]}J[a+176>>2]=d;b=a+41|0;J[a+172>>2]=b}c:{if(b>>>0>>0){J[a+172>>2]=b+1;b=K[b|0];break c}if(!J[a+32>>2]){b=0;break c}b=a+40|0;c=Zi[J[a+16>>2]](J[a+28>>2],b,J[a+36>>2])|0;J[a+168>>2]=J[a+168>>2]+(J[a+172>>2]-J[a+180>>2]|0);d:{if(!c){H[a+40|0]=0;J[a+32>>2]=0;c=a+41|0;b=0;break d}c=b+c|0;b=K[b|0]}J[a+176>>2]=c;J[a+172>>2]=a+41}return b&255|e<<8}function FD(a,b){var c=0,d=0,e=0,f=0,g=0;d=J[b+12>>2];if((d|0)!=J[b+16>>2]){while(1){d=J[P(c,12)+d>>2];Zi[J[79392]](J[d>>2]);Zi[J[79398]](J[d+4>>2]);cj(d);c=c+1|0;d=J[b+12>>2];if(c>>>0<(J[b+16>>2]-d|0)/12>>>0){continue}break}}J[b+16>>2]=d;c=J[b>>2];if(c){Uj(c)}J[b>>2]=0;c=J[b+8>>2];if(c){vj(a,c)}J[b+8>>2]=0;c=J[b+28>>2];if((c|0)!=J[b+32>>2]){while(1){d=P(f,24)+c|0;cj(J[d>>2]);vj(a,J[d+4>>2]);if(J[d+20>>2]){c=0;while(1){g=J[d+16>>2]+(c<<4)|0;e=J[g+12>>2];a:{if(!e){e=J[g+8>>2];if(!e){break a}}vj(a,e)}c=c+1|0;if(c>>>0>2]){continue}break}}c=J[d+16>>2];if(c){cj(c)}J[d+20>>2]=0;f=f+1|0;c=J[b+28>>2];if(f>>>0<(J[b+32>>2]-c|0)/24>>>0){continue}break}}J[b+32>>2]=c}function Bk(a,b,c){var d=0,e=0,f=0,g=0,h=0,i=0;f=Ui-16|0;Ui=f;h=J[a+8>>2]-J[a+12>>2]>>4;e=mr(a);g=e+76|0;a:{b:{d=J[e+80>>2];c:{if(!d){break c}d=J[J[g>>2]+(mxa(b,c,d)<<2)>>2];if((d|0)==-1){break c}i=J[e+84>>2];while(1){d=(d<<4)+i|0;if(J[d>>2]==(b|0)&J[d+4>>2]==(c|0)){break b}d=J[d+12>>2];if((d|0)!=-1){continue}break}}d=Sj(a,8);J[d>>2]=b;J[d+4>>2]=c;rj(a,-1e4,53420);Mj(a,-2);Nj(a,-1e4,J[e+128>>2]);uj(a,-2);J[f+12>>2]=to(a,-2);gj(a,-2);d=J[e+92>>2]-J[e+84>>2]>>4;e=J[e+100>>2];if((d|0)==(e|0)){Tx(g,e,e+256|0)}pl(g,b,c,f+12|0);break a}Nj(a,-1e4,J[e+128>>2]);Nj(a,-1,J[d+8>>2]);Rl(a,-2)}if((h+1|0)==J[a+8>>2]-J[a+12>>2]>>4){Ui=f+16|0;return}Z(143334,41058,191,53489);B()}function Vo(a,b,c){var d=0,e=0,f=0,g=0;d=-96;e=J[a>>2];f=b-e|0;a:{if((f|0)<=0){break a}g=H[e|0];b:{if((g|0)>=0){d=e+1|0;J[a>>2]=d;a=c;c=K[e|0];J[a>>2]=c;break b}d=-100;c:{d:{switch((g&127)-1|0){case 0:d=-96;if((f|0)==1){break a}d=c;c=K[e+1|0];J[d>>2]=c;d=e+2|0;break c;case 1:d=-96;if(f>>>0<3){break a}d=c;c=K[e+2|0]|K[e+1|0]<<8;J[d>>2]=c;d=e+3|0;break c;case 2:d=-96;if(f>>>0<4){break a}d=c;c=K[e+3|0]|(K[e+2|0]<<8|K[e+1|0]<<16);J[d>>2]=c;d=e+4|0;break c;case 3:break d;default:break a}}d=-96;if(f>>>0<5){break a}d=c;c=K[e+1|0]|K[e+2|0]<<8|(K[e+3|0]<<16|K[e+4|0]<<24);c=c<<24|(c&65280)<<8|(c>>>8&65280|c>>>24);J[d>>2]=c;d=e+5|0}J[a>>2]=d}d=b-d>>>0>>0?-96:0}return d}function HF(a,b,c){var d=0,e=0,f=0,g=0,h=0,i=0;d=Ui-16|0;Ui=d;J[d+12>>2]=c;a:{if((b|0)<2){break a}i=b-2>>>1|0;e=c-a|0;if((i|0)>2){break a}f=e>>1;e=f+1|0;g=(e<<2)+a|0;J[d+8>>2]=g;f=f+2|0;b:{if((f|0)>=(b|0)){break b}h=g+4|0;if(M[g>>2]>=M[h>>2]){break b}J[d+8>>2]=h;g=h;e=f}if(M[g>>2]>2]){break a}J[d+4>>2]=J[J[d+12>>2]>>2];c:{while(1){J[J[d+12>>2]>>2]=J[J[d+8>>2]>>2];c=J[d+8>>2];J[d+12>>2]=c;if((e|0)>(i|0)){break c}e=e<<1;f=e|1;c=(f<<2)+a|0;J[d+8>>2]=c;d:{e:{e=e+2|0;if((e|0)>=(b|0)){break e}g=J[c>>2];h=J[c+4>>2];c=J[d+8>>2];if(g>>>0>=h>>>0){break e}c=c+4|0;J[d+8>>2]=c;break d}e=f}if(M[c>>2]>=M[d+4>>2]){continue}break}c=J[d+12>>2]}J[c>>2]=J[d+4>>2]}Ui=d+16|0}function sm(a,b){var c=0;a:{b:{c:{d:{e:{if((b|0)>0){b=(J[a+12>>2]+(b<<4)|0)-16|0;c=b>>>0>=M[a+8>>2]?173288:b;break e}c=J[a+8>>2]+(b<<4)|0;if((b|0)>=-9999){break e}f:{switch(b+10002|0){case 2:c=J[a+16>>2]+96|0;break e;case 1:b=J[J[J[J[a+20>>2]+4>>2]>>2]+12>>2];J[a+96>>2]=5;J[a+88>>2]=b;c=a+88|0;break e;case 0:c=a+72|0;break e;default:break f}}c=J[J[J[a+20>>2]+4>>2]>>2];c=K[c+7|0]<-10002-b>>>0?173288:(c+(0-b<<4)|0)-160024|0}b=c;c=J[b+8>>2];switch(c-5|0){case 2:break c;case 0:break d;default:break b}}b=J[b>>2]+8|0;break a}b=J[b>>2]+8|0;break a}b=(J[a+16>>2]+(c<<2)|0)+152|0}b=J[b>>2];if(!b){return 0}c=J[a+8>>2];J[c+8>>2]=5;J[c>>2]=b;J[a+8>>2]=J[a+8>>2]+16;return 1}function Oka(a,b){a=a|0;b=b|0;var c=0,d=0,e=0;if(J[b+8>>2]!=2){Z(87364,36568,782,48012);B()}d=J[b+32>>2];c=J[b+36>>2];J[a+72>>2]=J[b+32>>2];J[a+76>>2]=c;e=J[b+28>>2];c=a- -64|0;J[c>>2]=J[b+24>>2];J[c+4>>2]=e;c=J[b+20>>2];J[a+56>>2]=J[b+16>>2];J[a+60>>2]=c;c=J[b+12>>2];J[a+48>>2]=J[b+8>>2];J[a+52>>2]=c;c=J[b+4>>2];J[a+40>>2]=J[b>>2];J[a+44>>2]=c;c=J[b+12>>2];J[a+88>>2]=J[b+8>>2];J[a+92>>2]=c;c=J[b+20>>2];J[a+96>>2]=J[b+16>>2];J[a+100>>2]=c;c=J[b+28>>2];J[a+104>>2]=J[b+24>>2];J[a+108>>2]=c;c=J[b+36>>2];J[a+112>>2]=J[b+32>>2];J[a+116>>2]=c;c=J[b+4>>2];J[a+80>>2]=J[b>>2];J[a+84>>2]=c;b=J[d+36>>2];J[a+120>>2]=227;J[a+88>>2]=0;J[a+92>>2]=b;J[a+80>>2]=b;J[a+84>>2]=0}function O3(a){a=a|0;var b=0,c=0,d=0,e=0,f=0,g=0;d=Ui-32|0;Ui=d;c=1;pj(d+12|0,a,1,37704,105);rj(a,-10002,75598);b=Vj(a,-1);gj(a,-2);e=b;b=P(J[b>>2],214013)+2531011|0;J[e>>2]=b;f=+((b>>>16&32767)>>>0)*30517578125e-15;a:{b:{switch(J[a+8>>2]-J[a+12>>2]>>4){case 0:b=J[a+8>>2];J[b+8>>2]=3;O[b>>3]=f;J[a+8>>2]=J[a+8>>2]+16;break a;case 1:c=Ej(a,1);if((c|0)<=0){Dk(a,1,1527)}b=J[a+8>>2];J[b+8>>2]=3;O[b>>3]=V(f*+(c|0))+1;J[a+8>>2]=J[a+8>>2]+16;c=1;break a;case 2:b=Ej(a,1);g=Ej(a,2);if((b|0)>(g|0)){Dk(a,2,1527)}e=J[a+8>>2];J[e+8>>2]=3;O[e>>3]=V(f*+((g-b|0)+1|0))+ +(b|0);J[a+8>>2]=J[a+8>>2]+16;break a;default:break b}}c=Jj(d+12|0,18252,0)}oj(d+12|0);Ui=d+32|0;return c|0}function bma(a){a=a|0;var b=0,c=0,d=Q(0),e=Q(0),f=Q(0),g=0,h=0,i=Q(0),j=Q(0),k=Q(0),l=Q(0),m=Q(0),n=0;c=Ui+-64|0;Ui=c;n=pj(c+44|0,a,1,36839,431);b=qj(a,1,J[79308],3640);g=J[b+8>>2];h=J[b+12>>2];a:{if(!(g|h)){break a}if(xk(J[b+4>>2],g,h)){break a}J[c>>2]=tj(J[b+8>>2],J[b+12>>2]);fj(a,102051,c)}b=J[b>>2];Rn(c+36|0,a,1,N[59873]);d=N[b+64>>2];e=N[b+48>>2];f=N[b+16>>2];i=N[b+72>>2];j=N[b+24>>2];k=N[c+36>>2];l=N[b+20>>2];m=N[c+40>>2];N[c+12>>2]=Q(i*Q(Q(N[b+12>>2]+Q(Q(j*k)-Q(l*m)))-N[b+44>>2]))+N[b+68>>2];N[c+8>>2]=d-Q(i*Q(Q(f+Q(Q(l*k)+Q(j*m)))-e));d=N[79200];e=N[c+8>>2];f=N[c+12>>2];b=c+16|0;J[b+8>>2]=0;N[b+4>>2]=d*f;N[b>>2]=d*e;cl(a,b);oj(n);Ui=c- -64|0;return 1}function _ta(a,b,c,d){a=a|0;b=b|0;c=c|0;d=d|0;var e=Q(0),f=Q(0),g=Q(0),h=Q(0),i=Q(0),j=Q(0),k=Q(0),l=Q(0),m=Q(0),n=Q(0),o=Q(0),p=Q(0),q=Q(0),r=Q(0),s=Q(0),t=Q(0),u=Q(0);e=Q(Zi[J[J[a>>2]+44>>2]](a));j=N[b+48>>2];m=N[b+8>>2];n=N[b>>2];o=N[b+4>>2];k=N[b+52>>2];h=N[b+24>>2];p=N[b+16>>2];q=N[b+20>>2];l=N[b+56>>2];f=N[b+40>>2];g=N[a+36>>2];i=N[b+32>>2];r=N[a+28>>2];s=N[b+36>>2];t=N[a+32>>2];J[c+12>>2]=0;u=Q(R(f));f=Q(e+g);g=Q(e+r);e=Q(e+t);i=Q(Q(u*f)+Q(Q(Q(R(i))*g)+Q(e*Q(R(s)))));N[c+8>>2]=l-i;h=Q(Q(Q(R(h))*f)+Q(Q(Q(R(p))*g)+Q(e*Q(R(q)))));N[c+4>>2]=k-h;e=Q(Q(Q(R(m))*f)+Q(Q(Q(R(n))*g)+Q(e*Q(R(o)))));N[c>>2]=j-e;J[d+12>>2]=0;N[d+8>>2]=l+i;N[d+4>>2]=h+k;N[d>>2]=e+j}function Dga(a){a=a|0;var b=0,c=0,d=0,e=0;b=Ui-96|0;Ui=b;e=pj(b+76|0,a,0,37079,249);pk(a);c=b- -64|0;J[c>>2]=0;J[c+4>>2]=0;J[b+56>>2]=0;J[b+60>>2]=0;J[b+48>>2]=0;J[b+52>>2]=0;J[b+40>>2]=0;J[b+44>>2]=0;J[b+32>>2]=0;J[b+36>>2]=0;J[b+24>>2]=0;J[b+28>>2]=0;J[b+16>>2]=0;J[b+20>>2]=0;J[b+8>>2]=0;J[b+12>>2]=0;Sk(a,1,b+40|0,b+8|0);if((kj(a,2)|0)!=-1){Oj(a,2,5);uj(a,2);c=J[a+8>>2];J[c+8>>2]=0;J[a+8>>2]=c+16;if($j(a,-2)){while(1){c=Ij(a,-2,0);a:{if(!jj(c,36250)){d=ck(a,-1);break a}J[b>>2]=c;dj(3,88458,31764,b)}gj(a,-2);if($j(a,-2)){continue}break}d=(d|0)!=0}gj(a,-2)}H[b+75|0]=d;a=J[57062];Jk(b+8|0,b+40|0,J[a+8>>2],J[a+12>>2],0,0,a,b+75|0,1,0);oj(e);Ui=b+96|0;return 0}function BE(a,b,c,d){var e=0,f=0,g=0;f=-1;e=er(a,b,d);a:{if(!J[e+8>>2]){break a}if(!os(e,er(a,c,d))){break a}g=J[a+32>>2];d=J[e+4>>2];f=J[a+8>>2];J[f>>2]=J[e>>2];J[f+4>>2]=d;J[f+8>>2]=J[e+8>>2];d=J[b+4>>2];e=J[a+8>>2];J[e+16>>2]=J[b>>2];J[e+20>>2]=d;J[e+24>>2]=J[b+8>>2];b=J[c+4>>2];d=J[a+8>>2];J[d+32>>2]=J[c>>2];J[d+36>>2]=b;J[d+40>>2]=J[c+8>>2];b=J[a+8>>2];if((J[a+28>>2]-b|0)<=48){Ml(a,3);b=J[a+8>>2]}J[a+8>>2]=b+48;$o(a,b,1);c=J[a+8>>2];e=c-16|0;J[a+8>>2]=e;b=J[e+4>>2];d=J[a+32>>2]+(f-g|0)|0;J[d>>2]=J[e>>2];J[d+4>>2]=b;J[d+8>>2]=J[c-8>>2];b:{c:{a=J[a+8>>2];f=J[a+8>>2];switch(f|0){case 0:break a;case 1:break c;default:break b}}return J[a>>2]!=0}f=1}return f}function hK(a,b,c,d,e,f,g){var h=0,i=0,j=0;i=Ui-16|0;Ui=i;a:{b:{c:{d:{e:{f:{g:{h:{i:{h=J[b+4>>2]>>>22&63;switch(h-2|0){case 12:break c;case 7:break d;case 0:break e;case 6:break f;case 2:break g;case 11:break h;case 3:break i;default:break b}}J[J[b+12>>2]+c>>2]=J[f>>2];break a}J[J[b+12>>2]+c>>2]=J[f>>2];break a}a=J[b+12>>2]+c|0;b=J[f+4>>2];J[a>>2]=J[f>>2];J[a+4>>2]=b;break a}H[J[b+12>>2]+c|0]=K[f|0];break a}N[J[b+12>>2]+c>>2]=N[f>>2];break a}j=J[d>>2];h=yj(f)+1|0;j:{if(j+h>>>0>M[e>>2]){fj(a,14407,0);break j}hj(j,f,h);J[J[b+12>>2]+c>>2]=J[d>>2]-g}J[d>>2]=h+J[d>>2];break a}J[J[b+12>>2]+c>>2]=J[f>>2];break a}J[i+4>>2]=J[b>>2];J[i>>2]=h;fj(a,27632,i)}Ui=i+16|0}function aW(a,b,c,d,e,f){a=a|0;b=b|0;c=c|0;d=d|0;e=e|0;f=f|0;var g=Q(0),h=Q(0),i=Q(0),j=Q(0),k=Q(0),l=Q(0),m=0,n=0,o=Q(0),p=Q(0),q=0;if(J[b+44>>2]==(f|0)){if(f){o=Q(Q(1)/Q(f>>>0));c=J[b+4>>2];h=N[b+28>>2];i=Q(M[a+4>>2]);k=Q(Q(N[b+32>>2]-h)/i);l=Q(M[a>>2]);h=Q(Q(k*l)+h);k=Q(Q(k+h)-h);g=N[b+16>>2];j=Q(Q(N[b+20>>2]-g)/i);i=Q(Q(j*l)+g);l=Q(Q(j+i)-i);a=0;while(1){d=I[(a<<2)+c>>1];g=Q(o*Q(a|0));j=Q(+Q(Q(g*k)+h)*1.5707963267948966);p=Rj(j);m=a<<1|1;q=I[(m<<1)+c>>1];n=(a<<3)+e|0;g=Q(Q(g*l)+i);N[n>>2]=Q(p*Q(g*Q(d|0)))+N[n>>2];d=(m<<2)+e|0;N[d>>2]=Q(Q(g*Q(q|0))*Hj(j))+N[d>>2];a=a+1|0;if((f|0)!=(a|0)){continue}break}}J[b+44>>2]=0;return}Z(11230,42316,1100,44449);B()}function gt(a,b){var c=0,d=0,e=0,f=0,g=0,h=0,i=0;a:{e=J[b+96>>2];g=J[b+100>>2];d=g;if((e|0)!=J[74028]|(d|0)!=J[74029]){c=J[a+3148>>2];if(!c){break a}b:{c:{i=J[a+3144>>2]+(mxa(e,d,c)<<2)|0;f=J[i>>2];if((f|0)!=-1){d=0;h=J[a+3152>>2];c=h+(f<<4)|0;if((e|0)==J[c>>2]&(g|0)==J[c+4>>2]){break b}break c}Z(85666,55629,340,62656);B()}while(1){d=c;f=J[c+12>>2];if((f|0)!=-1){c=(f<<4)+h|0;if(J[c>>2]!=(e|0)|J[c+4>>2]!=(g|0)){continue}break b}break}Z(152754,55629,366,62656);B()}J[a+3168>>2]=J[a+3168>>2]-1;e=(f<<4)+h|0;J[(d?d+12|0:i)>>2]=J[e+12>>2];d=J[a+3164>>2];J[a+3164>>2]=f;J[e+12>>2]=d;a=J[74029];J[b+96>>2]=J[74028];J[b+100>>2]=a}return}Z(113800,55629,334,62656);B()}function T3(a){a=a|0;var b=0,c=0,d=0,e=0,f=0,g=0,h=0,i=0;c=Ui-32|0;Ui=c;g=J[a+8>>2]-J[a+12>>2]>>4;b=mr(a);f=Aj(a,1,0);e=bj(f);h=Yi;a:{b:{d=J[b+16>>2];c:{if(!d){break c}d=J[J[b+12>>2]+(mxa(e,h,d)<<2)>>2];if((d|0)==-1){break c}i=J[b+20>>2];while(1){b=(d<<5)+i|0;if(J[b>>2]==(e|0)&(h|0)==J[b+4>>2]){break b}d=J[b+28>>2];if((d|0)!=-1){continue}break}}J[c>>2]=f;ik(a,148803,c);if((g+1|0)==J[a+8>>2]-J[a+12>>2]>>4){break a}Z(143334,41758,101,66196);B()}if(!XJ(a,J[b+8>>2],J[b+12>>2],J[b+24>>2])){e=Ij(a,1,0);J[c+24>>2]=Ij(a,-1,0);J[c+20>>2]=f;J[c+16>>2]=e;fj(a,31814,c+16|0)}if((g+1|0)==J[a+8>>2]-J[a+12>>2]>>4){break a}Z(143334,41758,110,66196);B()}Ui=c+32|0;return 1}function iJ(a,b,c){var d=0,e=0,f=0,g=0,h=0;d=Ui-32|0;Ui=d;a:{b:{h=(J[a+8>>2]-J[a+12>>2]>>4)-1|0;if(h){e=1;while(1){c:{if((kj(a,c)|0)==3){f=0;if(!e){break c}O[d+16>>3]=ok(a,c);e=Ui-16|0;Ui=e;g=d+16|0;J[e+12>>2]=g;g=Ct(b,57516,g,2810,0);Ui=e+16|0;f=(g|0)>0;break c}g=Aj(a,c,d+28|0);f=0;if(!e){break c}f=(yl(g,1,J[d+28>>2],b)|0)==J[d+28>>2]}e=f;c=c+1|0;h=h-1|0;if(h){continue}break}if(!e){break b}}b=J[a+8>>2];J[b+8>>2]=1;J[b>>2]=1;J[a+8>>2]=J[a+8>>2]+16;a=1;break a}b=J[245744];c=J[a+8>>2];J[c+8>>2]=0;J[a+8>>2]=c+16;J[d>>2]=L[((b>>>0<=153?b:0)<<1)+215472>>1]+213556;ik(a,31902,d);c=J[a+8>>2];J[c+8>>2]=3;O[c>>3]=b|0;J[a+8>>2]=J[a+8>>2]+16;a=3}Ui=d+32|0;return a}function bpa(a){a=a|0;var b=0,c=0,d=0,e=0,f=0,g=0,h=0;Em(a,3);b=Ej(a,2);Oj(a,1,6);a:{if(cr(a,1)){break a}c=J[a+12>>2];e=c>>>0>=M[a+8>>2]?173288:c;b:{if(J[e+8>>2]!=6){break b}c=J[e>>2];c:{if(K[c+6|0]){if((b|0)<=0|b>>>0>K[c+7|0]){break b}f=158859;b=(c+(b<<4)|0)+8|0;break c}if((b|0)<=0){break b}d=J[c+16>>2];if((b|0)>J[d+36>>2]){break b}b=(b<<2)-4|0;f=J[b+J[d+28>>2]>>2]+16|0;b=J[J[(b+c|0)+20>>2]+8>>2]}d=J[a+8>>2];c=d-16|0;J[a+8>>2]=c;g=J[c+4>>2];J[b>>2]=J[c>>2];J[b+4>>2]=g;J[b+8>>2]=J[d-8>>2];b=J[a+8>>2];if(J[b+8>>2]<4){break b}b=J[b>>2];if(!(K[b+5|0]&3)){break b}c=J[e>>2];if(!(K[c+5|0]&4)){break b}ap(a,c,b)}if(!f){break a}xj(a,f);Pk(a,-1);h=1}return h|0}function Zua(a){a=a|0;var b=0,c=Q(0),d=0,e=0;b=Ui-176|0;Ui=b;d=J[J[a+52>>2]+8>>2];e=J[J[a+48>>2]+8>>2];zj(156245,0);J[b+160>>2]=e;zj(156602,b+160|0);J[b+144>>2]=d;zj(156576,b+144|0);J[b+128>>2]=K[a+61|0];zj(157687,b+128|0);c=N[a+68>>2];O[b+120>>3]=N[a+72>>2];O[b+112>>3]=c;zj(157044,b+112|0);c=N[a+76>>2];O[b+104>>3]=N[a+80>>2];O[b+96>>3]=c;zj(156919,b+96|0);c=N[a+92>>2];O[b+88>>3]=N[a+96>>2];O[b+80>>3]=c;zj(157002,b+80|0);c=N[a+100>>2];O[b+72>>3]=N[a+104>>2];O[b+64>>3]=c;zj(156877,b- -64|0);O[b+48>>3]=N[a+84>>2];zj(156094,b+48|0);O[b+32>>3]=N[a+88>>2];zj(156069,b+32|0);O[b+16>>3]=N[a+112>>2];zj(155490,b+16|0);J[b>>2]=J[a+56>>2];zj(157263,b);Ui=b+176|0}function JZ(a,b,c){a=a|0;b=b|0;c=c|0;var d=0,e=0,f=0,g=0,h=0;g=Ui-384|0;Ui=g;d=J[a>>2];if(d){d=J[d+8>>2]}else{d=0}h=d&255;a:{if(c>>>0>1024){d=-3;break a}b:{d=J[a+92>>2];if(!d|J[a+84>>2]!=1&J[a+76>>2]<=J[a+88>>2]){break b}f=J[a+80>>2];if(f>>>0>384){d=-5;break a}e=ij(g,0,384);if(Zi[d|0](J[a+96>>2],e,f)|0){d=-9;break a}f=J[a+80>>2];d=zA(a,e,f);if(!d){J[a+76>>2]=1;Zi[J[66509]](e,0,f)|0;break b}Zi[J[66509]](e,0,f)|0;break a}if(c){e=a+12|0;while(1){d=Fn(a);if(d){break a}d=Jl(a,e,h);if(d){break a}d=Dm(a,e);if(d){break a}d=c>>>0>>0?c:h;b=hj(b,e,d)+d|0;c=c-d|0;if(c){continue}break}}d=zA(a,0,0);if(d){break a}J[a+76>>2]=J[a+76>>2]+1;d=0}Ui=g+384|0;return d|0}function ada(a){a=a|0;var b=0,c=0,d=0,e=0,f=0,g=0,h=0,i=0,j=0,k=Q(0);c=Ui-16|0;Ui=c;i=J[a+8>>2]-J[a+12>>2]>>4;e=mk(a,1);h=Yi;J[c+12>>2]=0;g=-13;d=J[245446];f=J[d+16>>2];if(f){Tj(f);d=J[245446]}b=J[d+80>>2];a:{if(!b){break a}b=J[J[d+76>>2]+(mxa(e,h,b)<<2)>>2];if((b|0)==-1){break a}j=J[d+84>>2];while(1){b=(b<<4)+j|0;if(J[b>>2]!=(e|0)|J[b+4>>2]!=(h|0)){b=J[b+12>>2];if((b|0)!=-1){continue}break a}break}N[c+12>>2]=N[(P(J[b+8>>2],1056)+d|0)+128>>2];g=0}if(f){Lj(f)}if(g){J[c>>2]=g;dj(3,88458,140946,c)}k=N[c+12>>2];e=J[a+8>>2];J[e+8>>2]=3;O[e>>3]=k;J[a+8>>2]=J[a+8>>2]+16;if((i+1|0)!=J[a+8>>2]-J[a+12>>2]>>4){Z(143334,42276,326,47929);B()}Ui=c+16|0;return 1}function wq(a,b,c,d,e,f,g){var h=0,i=0,j=0,k=0,l=0,m=0,n=0,o=0,p=0,q=0;i=Ui-1072|0;Ui=i;a:{b:{c:{if(c){if(!g){break c}J[i+1068>>2]=0;l=J[a+6164>>2];Tj(l);j=i+32|0;ip(c,j);m=Ul(j,yj(j));k=Yi;o=k;h=TK(a,m,k,g);if((h|0)!=-3){break a}d:{if(b){break d}b=ul(j,46);if(!b){J[i>>2]=j;dj(3,96538,120939,i);h=-4;break a}j=b+1|0;k=bj(j);p=Yi;n=J[a+6160>>2];if(!n){break b}q=a+16|0;h=0;while(1){b=P(h,48)+q|0;if((k|0)==J[b>>2]&J[b+4>>2]==(p|0)){break d}h=h+1|0;if((n|0)!=(h|0)){continue}break}break b}h=RK(a,b,c,i+32|0,m,o,d,e,f,g);break a}Z(66013,42212,945,50336);B()}Z(69784,42212,946,50336);B()}J[i+16>>2]=j;dj(4,96538,29516,i+16|0);h=-7}Lj(l);Ui=i+1072|0;return h}function k_(a){a=a|0;var b=0,c=0,d=0,e=0,f=0,g=0,h=0;b=wj(a,1);A(+b);e=v(1)|0;h=v(0)|0;d=e&2147483647;a:{if(d>>>0>=1072693248){c=b*1.5707963267948966+752316384526264e-51;if(!(d-1072693248|h)){break a}c=0/(b-b);break a}b:{if(d>>>0<=1071644671){if(d+-1048576>>>0<1044381696){break b}c=b*Xv(b*b)+b;break a}c=(1-R(b))*.5;b=Y(c);g=Xv(c);c:{if(d>>>0>=1072640819){b=b*g+b;b=1.5707963267948966-(b+b+-6123233995736766e-32);break c}A(+b);d=v(1)|0;v(0)|0;x(0,0);x(1,d|0);f=c;c=+z();f=(f-c*c)/(b+c);b=.7853981633974483-(c+c)-((b+b)*g-(6123233995736766e-32-(f+f)))+.7853981633974483}b=(e|0)<0?-b:b}c=b}e=J[a+8>>2];J[e+8>>2]=3;O[e>>3]=c;J[a+8>>2]=J[a+8>>2]+16;return 1}function hha(a){a=a|0;var b=0,c=0,d=0,e=0,f=0,g=0,h=0;e=Ui-16|0;Ui=e;f=J[a+8>>2]-J[a+12>>2]>>4;a:{b:{if(kk(a,1)){d=ok(a,1);c:{if(d<0x10000000000000000&d>=0){c=~~d>>>0;if(R(d)>=1){b=~~(d>0?T(V(d*2.3283064365386963e-10),4294967295):W((d-+(~~d>>>0>>>0))*2.3283064365386963e-10))>>>0}else{b=0}break c}b=0}if(ur(J[78229],c,b)){break b}c=fj(a,127275,0);break a}c=mk(a,1);b=Yi;g=b;h=c;b=Xp(a,J[78228],c,b,82442);c=J[b>>2];b=J[b+4>>2];if(ur(J[78229],c,b)){break b}J[e>>2]=tj(h,g);c=fj(a,125716,e);break a}if((b|0)!=1){c=fj(a,62906,0);break a}Fj(a,0,0);Qn(a,c,b);c=1;if((f+1|0)==J[a+8>>2]-J[a+12>>2]>>4){break a}Z(143411,42133,1544,44383);B()}Ui=e+16|0;return c|0}function Dba(a,b){a=a|0;b=b|0;var c=0,d=0,e=0,f=0,g=0;a:{b:{c:{d:{if(b>>>0<2097152){if(a+1>>>0<2){break a}d=a&65535;e=J[79491];if(d>>>0>=M[e+100>>2]){break d}b=J[J[e+92>>2]+(d<<2)>>2];if(!b|L[J[e+96>>2]+(d<<1)>>1]!=(a>>>16|0)){break a}a=L[b+76>>1];if(!a){a=0;break b}e=a&7;c=J[b+56>>2];d=0;if(a>>>0<8){a=0;break c}g=a&65528;a=0;while(1){a=a+c+(c>>>2)+(c>>>4)+(c>>>6)+(c>>>8)+(c>>>10)+(c>>>12)+(c>>>14)|0;c=c>>>16|0;f=f+8|0;if((g|0)!=(f|0)){continue}break}break c}Z(94863,55553,306,33926);B()}Z(2686,54166,244,5438);B()}if(!e){break b}while(1){a=a+c|0;c=c>>>2|0;d=d+1|0;if((e|0)!=(d|0)){continue}break}}c=a;a=L[b+70>>1];c=P(c,a>>>0<=1?1:a)+80|0}return c|0}function pta(a,b,c){a=a|0;b=b|0;c=c|0;var d=0,e=Q(0),f=Q(0),g=0,h=Q(0),i=Q(0),j=Q(0),k=Q(0),l=Q(0),m=Q(0),n=Q(0);d=Ui-96|0;Ui=d;J[d+44>>2]=0;J[d+48>>2]=0;g=d- -64|0;J[g>>2]=0;J[g+4>>2]=0;J[d+84>>2]=0;J[d+88>>2]=0;J[d+92>>2]=0;J[d+36>>2]=0;J[d+40>>2]=0;J[d+32>>2]=1065353216;J[d+56>>2]=0;J[d+60>>2]=0;J[d+52>>2]=1065353216;J[d+76>>2]=0;J[d+80>>2]=0;J[d+72>>2]=1065353216;Zi[J[J[a>>2]+8>>2]](a,d+32|0,d+16|0,d);h=N[d+8>>2];i=N[d+24>>2];e=Q(h-i);m=Q(e*e);e=N[d>>2];j=N[d+16>>2];f=Q(e-j);n=Q(f*f);f=N[d+4>>2];k=N[d+20>>2];l=Q(f-k);N[c>>2]=Q(Y(Q(m+Q(n+Q(l*l)))))*Q(.5);J[b+12>>2]=0;N[b+8>>2]=Q(h+i)*Q(.5);N[b+4>>2]=Q(f+k)*Q(.5);N[b>>2]=Q(e+j)*Q(.5);Ui=d+96|0}function cG(a,b,c,d,e,f,g,h){var i=0,j=0,k=0,l=0,m=0,n=0,o=0;i=Ui-80|0;Ui=i;J[i+4>>2]=0;J[i+8>>2]=0;J[i+12>>2]=0;a=a-3|0;if(a>>>0<=5){l=J[(a<<2)+266328>>2]}else{l=0}a:{if(!l){e=-27648;break a}a=l?J[l+8>>2]:0;k=yj(d);n=k+f|0;a=a&255;m=n+a|0;j=Zj(1,m);b:{if(!j){e=-32512;break b}o=k;k=hj(a+j|0,d,k);hj(o+k|0,e,f);d=i+4|0;e=oo(d,l,1);if(e){break b}iq(d,b,c);Jl(d,k,n);Dm(d,j);e=0;if(!h){break b}d=0;while(1){b=i+4|0;Fn(b);Jl(b,j,m);Dm(b,i+16|0);Fn(b);Jl(b,j,a);Dm(b,j);b=d;d=a+d|0;f=h>>>0>>0?(h>>>0)%(a>>>0)|0:a;if(f){hj(b+g|0,i+16|0,f)}if(d>>>0>>0){continue}break}}Kl(i+4|0);Zi[J[66509]](j,0,m)|0;Zi[J[66509]](i+16|0,0,64)|0;cj(j)}Ui=i+80|0;return e}function zv(a,b,c,d,e,f,g){var h=0,i=0,j=0,k=0,l=0;k=3;a:{b:{c:{if(a+1>>>0<2){break c}j=a&65535;h=J[216330];if(j>>>0>=M[h+8>>2]){break b}i=J[J[h>>2]+(j<<2)>>2];if(!i|L[J[h+4>>2]+(j<<1)>>1]!=(a>>>16|0)){break c}k=6;j=K[i+34|0];if(!j){break c}l=J[i+4>>2];a=0;while(1){h=(a<<4)+l|0;if(J[h>>2]!=(b|0)|(c|0)!=J[h+4>>2]){a=a+1|0;if((j|0)!=(a|0)){continue}break c}break}k=1;b=J[i>>2];a=J[i+28>>2];if(Wj(b+P(a,J[i+24>>2])|0,173904,16)){break c}J[d>>2]=b+J[h+8>>2];if(e){J[e>>2]=a}if(f){J[f>>2]=K[h+13|0]}k=0;if(!g){break c}a=K[h+12|0];if(a>>>0>=9){break a}J[g>>2]=M[i+24>>2]/M[(a<<2)+173920>>2]}return k}Z(2686,54230,244,5438);B()}Z(152787,40052,154,64561);B()}function xda(a){a=a|0;var b=0,c=0,d=0,e=0,f=0,g=0;a:{d=J[a>>2];b=J[d+4>>2];c=J[d>>2];if((b|0)!=(c|0)){b=b-c>>2;g=b>>>0<=1?1:b;c=0;while(1){b=J[d>>2];if(J[d+4>>2]-b>>2>>>0<=c>>>0){break a}b=J[b+(c<<2)>>2];e=J[b+128>>2];b:{if(!e){break b}f=J[J[a+16>>2]+8>>2];if((e|0)!=(f|0)){e=J[J[b+128>>2]+8>>2];if(!e|J[e+28>>2]!=(f|0)){break b}}e=J[b+132>>2];if(e){rK(J[d+124>>2],e)}KR(J[b>>2]);c:{if(!yQ(d,b)){dj(4,88458,131691,0);nv(d,c);break c}J[b+132>>2]=0;f=J[b+128>>2];if(DP(J[d+124>>2],b,J[f+8>>2],bj(J[J[f>>2]+4>>2]),Yi)){nv(d,c);break c}EP(b,J[b+128>>2]);H[b+262|0]=K[b+262|0]|8}}c=c+1|0;if((g|0)!=(c|0)){continue}break}}return}Z(145396,53895,494,84789);B()}function r2(a){a=a|0;var b=0,c=0,d=0,e=0,f=0,g=0;e=Ui-32|0;Ui=e;a:{b:{if(a){b=a?J[a>>2]:0;if(!b){break b}c=J[b+124>>2];if(!c){break a}g=pj(e+12|0,c,0,39844,446);b=ij(nj(84),0,84);J[b+52>>2]=0;J[b+56>>2]=0;J[b+48>>2]=-1;J[b+60>>2]=0;J[b+64>>2]=0;J[b+68>>2]=0;J[b+72>>2]=0;J[b+76>>2]=0;EM(b,8);d=ml(J[b+52>>2],16);J[b+60>>2]=8;J[b+52>>2]=d;if(M[b+56>>2]>=9){J[b+56>>2]=8}I[b+80>>1]=0;H[b+82|0]=K[b+82|0]&252;d=J[215668];f=J[c+8>>2];J[f+8>>2]=3;O[f>>3]=d|0;J[c+8>>2]=J[c+8>>2]+16;d=J[c+8>>2];J[d+8>>2]=2;J[d>>2]=b;J[c+8>>2]=J[c+8>>2]+16;RJ(a);oj(g);Ui=e+32|0;return}Z(111353,39844,441,71852);B()}Z(111232,39844,443,71852);B()}Z(111392,39844,445,71852);B()}function Cia(a,b){a=a|0;b=b|0;var c=0,d=0,e=0,f=0,g=0,h=Q(0);g=Ui-80|0;Ui=g;c=J[a+4>>2];e=J[c+32>>2];f=J[J[a+24>>2]>>2];if(f>>>0>2]-e>>3>>>0){e=J[(f<<3)+e>>2];d=J[c+20>>2];c=J[c+16>>2];if(e>>>0<(d-c|0)/20>>>0){e=c+P(e,20)|0;c=J[a+16>>2];f=J[a+20>>2];a:{if((c|0)==J[75830]&(f|0)==J[75831]){c=J[J[J[a+8>>2]+80>>2]>>2];a=J[e+4>>2];if(!a){a=J[J[e>>2]+8>>2]}d=Lm(c,a,b);break a}a=g+8|0;d=12;b:{if((c|0)==J[75824]&(f|0)==J[75825]){break b}d=8;if((c|0)==J[75826]&(f|0)==J[75827]){break b}d=-1;if(J[75828]!=(c|0)|J[75829]!=(f|0)){break a}d=16}h=N[d+e>>2];J[a>>2]=0;O[a+8>>3]=h;hj(b+32|0,a,72);d=0}a=d;Ui=g+80|0;return a|0}}Z(145396,53895,487,84789);B()}function PE(a){J[a+188>>2]=0;J[a+192>>2]=0;J[a+180>>2]=0;J[a+184>>2]=1566444395;J[a+172>>2]=1065353216;J[a+176>>2]=0;J[a+164>>2]=1065353216;J[a+168>>2]=1065353216;J[a+252>>2]=0;J[a+244>>2]=0;J[a+248>>2]=0;J[a+236>>2]=0;J[a+240>>2]=1065353216;J[a+228>>2]=0;J[a+232>>2]=1;J[a+220>>2]=0;J[a+224>>2]=1056964608;J[a+212>>2]=-1;J[a+216>>2]=1;J[a+204>>2]=1;J[a+208>>2]=-1;J[a+4>>2]=1065353216;J[a+8>>2]=0;J[a+12>>2]=0;J[a+24>>2]=1065353216;J[a>>2]=244588;J[a+196>>2]=0;J[a+200>>2]=0;J[a+16>>2]=0;J[a+20>>2]=0;J[a+36>>2]=0;J[a+40>>2]=0;J[a+28>>2]=0;J[a+32>>2]=0;J[a+48>>2]=0;J[a+52>>2]=0;J[a+44>>2]=1065353216;J[a+56>>2]=0;J[a+60>>2]=0;J[a- -64>>2]=0;return a}function W5(a){a=a|0;var b=0,c=0,d=0,e=0,f=0,g=0;d=Ui-80|0;Ui=d;b=J[a+8>>2]-J[a+12>>2]|0;Bj(a);e=qj(a,-1,J[84364],139081);gj(a,-2);if(b>>4==J[a+8>>2]-J[a+12>>2]>>4){f=pj(d+60|0,a,0,37616,1292);b=d+16|0;J[b+16>>2]=0;J[b+20>>2]=0;J[b+8>>2]=0;J[b+12>>2]=0;J[b>>2]=4;c=J[e+4>>2];a:{if((c|0)!=J[e+8>>2]){J[e+4>>2]=c+40;a=J[b+36>>2];J[c+32>>2]=J[b+32>>2];J[c+36>>2]=a;a=J[b+28>>2];J[c+24>>2]=J[b+24>>2];J[c+28>>2]=a;a=J[b+20>>2];J[c+16>>2]=J[b+16>>2];J[c+20>>2]=a;a=J[b+12>>2];J[c+8>>2]=J[b+8>>2];J[c+12>>2]=a;a=J[b+4>>2];J[c>>2]=J[b>>2];J[c+4>>2]=a;break a}J[d>>2]=(c-J[e>>2]|0)/40;g=fj(a,132935,d)}oj(f);Ui=d+80|0;return g|0}Z(143244,37616,478,51340);B()}function VK(a,b,c,d,e){var f=0,g=0,h=0,i=0,j=0,k=0;g=J[a+2212>>2];i=J[a+2208>>2];j=g-i>>4;a:{b:{if((g|0)==(i|0)){break b}k=j>>>0<=1?1:j;while(1){f=(h<<4)+i|0;if(J[f>>2]==(b|0)&J[f+4>>2]==(c|0)){if(!(d|e)){J[f>>2]=0;J[f+4>>2]=0}break a}if(J[f+8>>2]|J[f+12>>2]){h=h+1|0;if((k|0)==(h|0)){break b}continue}break}J[f>>2]=b;J[f+4>>2]=c;break a}f=a+2212|0;c:{d:{h=J[a+2216>>2];if((h|0)==(g|0)){if(H[a+2220|0]&1){break d}g=a+2208|0;a=a+2216|0;lj(j+4|0,16,g,a,f);h=J[a>>2];g=J[f>>2]}if((g|0)==(h|0)){break c}J[f>>2]=g+16;J[g+8>>2]=d;J[g+12>>2]=e;J[g>>2]=b;J[g+4>>2]=c;return}Z(151729,53895,501,2284);B()}Z(112520,53895,557,53220);B()}J[f+8>>2]=d;J[f+12>>2]=e}function IV(a,b){var c=0,d=0;d=Ui-32|0;Ui=d;a:{b:{c:{if(!Hk(82910,H[b|0])){J[245744]=28;break c}c=sj(1176);if(c){break b}}c=0;break a}ij(c,0,144);if(!Hk(b,43)){J[c>>2]=K[b|0]==114?8:4}d:{if(K[b|0]!=97){b=J[c>>2];break d}b=da(a|0,3,0)|0;if(!(b&1024)){b=b|1024;J[d+16>>2]=b;J[d+20>>2]=b>>31;da(a|0,4,d+16|0)|0}b=J[c>>2]|128;J[c>>2]=b}J[c+80>>2]=-1;J[c+48>>2]=1024;J[c+60>>2]=a;J[c+44>>2]=c+152;e:{if(b&8){break e}J[d>>2]=d+24;J[d+4>>2]=0;if(Mi(a|0,21523,d|0)|0){break e}J[c+80>>2]=10}J[c+40>>2]=2803;J[c+36>>2]=2804;J[c+32>>2]=2805;J[c+12>>2]=2806;if(!K[983073]){J[c+76>>2]=-1}a=J[245822];J[c+56>>2]=a;if(a){J[a+52>>2]=c}J[245822]=c}Ui=d+32|0;return c}function y7(a){a=a|0;var b=0,c=0,d=0,e=0,f=0,g=0,h=0,i=0,j=0;c=Ui+-64|0;Ui=c;f=pj(c+44|0,a,1,41468,354);d=Aj(a,1,0);g=Aj(a,2,0);e=Ej(a,3);h=$m(a,4);a:{if((e|0)<0){J[c>>2]=e;a=Jj(f,79597,c);break a}if(K[d|0]==95){J[c+16>>2]=d;a=Jj(f,31382,c+16|0);break a}if(K[981584]==1){i=J[245392];b:{if(!i){dj(4,95071,74996,0);b=-12;break b}b=nj(24);j=J[245394];J[b+20>>2]=e;J[b>>2]=j;J[b+8>>2]=Gk(d);e=Gk(g);J[b+16>>2]=h;J[b+12>>2]=2485;J[b+4>>2]=e;Qp(i,2477,2478,980536,b);b=0}}else{b=-12}if(b){J[c+40>>2]=EC(b);J[c+36>>2]=g;J[c+32>>2]=d;dj(4,95071,30297,c+32|0);Fl(h)}d=J[a+8>>2];J[d+8>>2]=3;O[d>>3]=b|0;J[a+8>>2]=J[a+8>>2]+16;a=1}oj(f);Ui=c- -64|0;return a|0}function j$(a){a=a|0;var b=0,c=0,d=0,e=0,f=0;d=Ui-112|0;Ui=d;b=Aj(a,1,0);e=J[a+8>>2]-J[a+12>>2]>>4;rj(a,-1e4,98029);c=e+1|0;rj(a,c,b);a:{if((kj(a,-1)|0)!=5){gj(a,-2);if(Ow(a,-10002,b,1)){J[d>>2]=b;c=fj(a,148466,d);break a}uj(a,-1);ej(a,c,b)}rj(a,-1,95768);c=kj(a,-1);gj(a,-2);if(!c){uj(a,-1);ej(a,-2,91661);xj(a,b);ej(a,-2,95768);c=ul(b,46);mj(a,b,(c?c+1|0:b)-b|0);ej(a,-2,96375)}uj(a,-1);b=d+12|0;b:{c:{if(!Zl(a,1,b)){break c}if(!Yo(a,58591,b)){break c}if(!cr(a,-1)){break b}}fj(a,45523,0)}uj(a,-2);jq(a,-2);gj(a,-2);b=2;c=0;if((e|0)<2){break a}while(1){uj(a,b);uj(a,-2);Wk(a,1,0);f=(b|0)!=(e|0);b=b+1|0;if(f){continue}break}}Ui=d+112|0;return c|0}function fwa(a,b,c,d){a=a|0;b=b|0;c=c|0;d=d|0;var e=Q(0),f=Q(0),g=0,h=Q(0),i=Q(0),j=Q(0),k=Q(0),l=Q(0),m=Q(0),n=Q(0);g=J[J[a+48>>2]+12>>2];a=J[J[a+52>>2]+12>>2];J[b+68>>2]=0;e=N[d+12>>2];f=N[a+24>>2];h=N[d+8>>2];i=N[a+28>>2];j=N[c+12>>2];k=N[g+24>>2];l=N[c+8>>2];m=N[g+28>>2];n=Q(Q(N[d>>2]+Q(Q(e*f)-Q(h*i)))-Q(N[c>>2]+Q(Q(j*k)-Q(l*m))));e=Q(Q(Q(Q(h*f)+Q(e*i))+N[d+4>>2])-Q(Q(Q(l*k)+Q(j*m))+N[c+4>>2]));e=Q(Q(n*n)+Q(e*e));f=Q(N[g+8>>2]+N[a+8>>2]);if(!(e>Q(f*f))){J[b+64>>2]=0;c=J[g+24>>2];d=J[g+28>>2];J[b+68>>2]=1;J[b+48>>2]=0;J[b+52>>2]=0;J[b+56>>2]=c;J[b+60>>2]=d;c=J[a+24>>2];a=J[a+28>>2];N[b+20>>2]=f-Q(Y(e));J[b+16>>2]=0;J[b>>2]=c;J[b+4>>2]=a}}function _M(a,b,c,d){var e=0,f=0,g=0,h=0,i=0,j=0,k=0;e=Ui-32|0;Ui=e;f=J[a+48>>2];Tj(f);go(e,0);em(e,b,yj(b));em(e,c,yj(c));i=jp(e);j=Yi;g=bj(b);h=Yi;a:{c=J[a+20>>2];b:{if(!c){break b}c=J[J[a+16>>2]+(mxa(g,h,c)<<2)>>2];if((c|0)==-1){break b}k=J[a+24>>2];while(1){a=k+P(c,136)|0;if(J[a>>2]==(g|0)&(h|0)==J[a+4>>2]){break a}c=J[a+128>>2];if((c|0)!=-1){continue}break}}Z(2794,41889,749,62678);B()}c:{d:{if(J[a+80>>2]==(i|0)&J[a+84>>2]==(j|0)){if(jj(b,J[a+72>>2])){break d}b=L[a+120>>1];if(!(b&255)){break c}I[a+120>>1]=b&65280|b-1&255;vk(d);Lj(f);Ui=e+32|0;return}Z(53301,41889,750,62678);B()}Z(113441,41889,751,62678);B()}Z(111918,41889,752,62678);B()}function q5(a){a=a|0;var b=0,c=0,d=0,e=0,f=0;d=Ui-48|0;Ui=d;c=J[a+8>>2]-J[a+12>>2]|0;Bj(a);e=qj(a,-1,J[84364],139081);gj(a,-2);if(c>>4==J[a+8>>2]-J[a+12>>2]>>4){c=d+8|0;f=wj(a,1);a:{if(f<4294967296&f>=0){b=~~f>>>0;break a}b=0}J[c+8>>2]=b;J[c+12>>2]=0;J[c>>2]=13;b=J[e+4>>2];b:{if((b|0)!=J[e+8>>2]){J[e+4>>2]=b+40;a=J[c+36>>2];J[b+32>>2]=J[c+32>>2];J[b+36>>2]=a;a=J[c+28>>2];J[b+24>>2]=J[c+24>>2];J[b+28>>2]=a;a=J[c+20>>2];J[b+16>>2]=J[c+16>>2];J[b+20>>2]=a;a=J[c+12>>2];J[b+8>>2]=J[c+8>>2];J[b+12>>2]=a;a=J[c+4>>2];J[b>>2]=J[c>>2];J[b+4>>2]=a;a=0;break b}J[d>>2]=(b-J[e>>2]|0)/40;a=fj(a,132935,d)}Ui=d+48|0;return a|0}Z(143244,37616,478,51340);B()}function Jba(a,b,c){a=a|0;b=b|0;c=c|0;var d=0,e=0,f=0;a:{if(b>>>0<2097152){b:{if(a+1>>>0<2){break b}b=a&65535;e=J[79491];if(b>>>0>=M[e+100>>2]){break a}f=J[J[e+92>>2]+(b<<2)>>2];if(!f){break b}d=L[J[e+96>>2]+(b<<1)>>1]==(a>>>16|0)?f:0}if(!(!(1<>>0>8)){a=(Up(c)<<6)+d|0;b=J[a+56>>2]==2;c=b?J[a+48>>2]:0;Yi=b?J[a+52>>2]:0;return c|0}if(J[d+440>>2]==2){Yi=J[d+436>>2];return J[d+432>>2]}a=0;b=0;c:{d:{c=c-16|0;if(c){if((c|0)==16){break d}else{break c}}if(J[d+312>>2]!=2){break c}Yi=J[d+308>>2];return J[d+304>>2]}if(J[d+376>>2]!=2){break c}a=J[d+368>>2];b=J[d+372>>2]}Yi=b;return a|0}Z(94863,55553,306,33926);B()}Z(2686,54166,244,5438);B()}function ZB(a,b,c){var d=0,e=0,f=0;a:{if(c){f=-10;e=J[a+4>>2];d=J[e+4>>2];b:{if(!d){break b}d=J[J[e>>2]+((b>>>0)%(d>>>0)<<2)>>2];if((d|0)==-1){break b}e=J[e+8>>2];while(1){d=e+P(d,24)|0;if(J[d>>2]!=(b|0)){d=J[d+16>>2];if((d|0)!=-1){continue}break b}break}c:{b=J[a>>2];f=J[b+4>>2];d:{if(!f){break d}a=J[d+8>>2];e=J[d+12>>2];d=J[J[b>>2]+(mxa(a,e,f)<<2)>>2];if((d|0)==-1){break d}f=J[b+8>>2];while(1){b=f+P(d,56)|0;if(J[b>>2]==(a|0)&(e|0)==J[b+4>>2]){break c}d=J[b+48>>2];if((d|0)!=-1){continue}break}}Z(70819,42212,1346,64490);B()}if(!J[b+36>>2]){break a}J[c>>2]=J[b+28>>2];f=0}return f}Z(64474,42212,1337,64490);B()}Z(111964,42212,1347,64490);B()}function xq(a,b,c){var d=0,e=0;a:{b:{if(b+1>>>0<2){break b}e=b&65535;if(e>>>0>=M[a+2272>>2]){break a}d=J[J[a+2264>>2]+(e<<2)>>2];if(!d|L[J[a+2268>>2]+(e<<1)>>1]!=(b>>>16|0)){break b}N[d+272>>2]=N[c>>2];N[d+276>>2]=N[c+4>>2];N[d+280>>2]=N[c+8>>2];N[d+284>>2]=N[c+12>>2];a=J[c+20>>2];J[d+288>>2]=J[c+16>>2];J[d+292>>2]=a;a=J[c+28>>2];J[d+296>>2]=J[c+24>>2];J[d+300>>2]=a;a=K[c+33|0]|K[c+34|0]<<8|(K[c+35|0]<<16|K[c+36|0]<<24);b=K[c+29|0]|K[c+30|0]<<8|(K[c+31|0]<<16|K[c+32|0]<<24);H[d+301|0]=b;H[d+302|0]=b>>>8;H[d+303|0]=b>>>16;H[d+304|0]=b>>>24;H[d+305|0]=a;H[d+306|0]=a>>>8;H[d+307|0]=a>>>16;H[d+308|0]=a>>>24}return}Z(2686,54166,244,5438);B()}function Ly(a,b){var c=0,d=0,e=0,f=0,g=0;d=(K[b+136|0]<<4)+a|0;e=d+1080|0;a:{b:{c:{d:{g=d+1088|0;c=J[g>>2];f=d+1084|0;d=J[f>>2];if((c|0)==(d|0)){if(H[e+12|0]&1){break d}c=J[a+1032>>2];a=d-J[e>>2]>>1;d=c-a|0;c=a>>>1|0;c=c>>>0<=10?10:c;lj((d>>>0>>0?d:c)+a|0,2,e,g,f);c=J[e+8>>2];d=J[e+4>>2]}if((d|0)==(c|0)){break c}e=J[e>>2];d=d-e|0;a=d>>>1&65535;if(a>>>0>=c-e>>1>>>0){break b}c=e;e=a<<1;c=c+e|0;J[f>>2]=c+2;if(a>>>0>=e+2>>>1>>>0){break a}I[c>>1]=L[b+140>>1]&32767;J[b+140>>2]=J[b+140>>2]&-2147418113|d<<15&2147418112;return}Z(151729,53895,501,2284);B()}Z(144837,38296,734,5532);B()}Z(144782,53895,514,59583);B()}Z(145396,53895,487,84789);B()}function Gx(a,b,c){var d=0,e=0;a:{b:{if(b+1>>>0<2){break b}e=b&65535;if(e>>>0>=M[a+2272>>2]){break a}d=J[J[a+2264>>2]+(e<<2)>>2];if(!d|L[J[a+2268>>2]+(e<<1)>>1]!=(b>>>16|0)){break b}N[c>>2]=N[d+272>>2];N[c+4>>2]=N[d+276>>2];N[c+8>>2]=N[d+280>>2];N[c+12>>2]=N[d+284>>2];a=J[d+292>>2];J[c+16>>2]=J[d+288>>2];J[c+20>>2]=a;a=J[d+300>>2];J[c+24>>2]=J[d+296>>2];J[c+28>>2]=a;a=K[d+305|0]|K[d+306|0]<<8|(K[d+307|0]<<16|K[d+308|0]<<24);b=K[d+301|0]|K[d+302|0]<<8|(K[d+303|0]<<16|K[d+304|0]<<24);H[c+29|0]=b;H[c+30|0]=b>>>8;H[c+31|0]=b>>>16;H[c+32|0]=b>>>24;H[c+33|0]=a;H[c+34|0]=a>>>8;H[c+35|0]=a>>>16;H[c+36|0]=a>>>24}return}Z(2686,54166,244,5438);B()}function qQ(a,b,c,d,e){var f=0,g=Q(0);f=Ui-48|0;Ui=f;a:{if(e){g=N[(d<<2)+b>>2];J[a>>2]=0;O[a+8>>3]=g;break a}b:{switch(c-1|0){case 0:g=N[b>>2];J[a>>2]=0;O[a+8>>3]=g;break a;case 1:c=J[b>>2];b=J[b+4>>2];J[f+40>>2]=0;J[f+32>>2]=c;J[f+36>>2]=b;J[a>>2]=3;N[a+8>>2]=N[f+32>>2];N[a+12>>2]=N[f+36>>2];N[a+16>>2]=N[f+40>>2];break a;case 2:c=J[b>>2];d=J[b+4>>2];N[f+24>>2]=N[b+8>>2];J[f+16>>2]=c;J[f+20>>2]=d;J[a>>2]=3;N[a+8>>2]=N[f+16>>2];N[a+12>>2]=N[f+20>>2];N[a+16>>2]=N[f+24>>2];break a;case 3:c=J[b>>2];d=J[b+4>>2];e=J[b+12>>2];J[f+8>>2]=J[b+8>>2];J[f+12>>2]=e;J[f>>2]=c;J[f+4>>2]=d;Yp(a,f);break a;default:break b}}H[a+8|0]=0;J[a>>2]=6}Ui=f+48|0}function fU(a){a=a|0;var b=0;J[a>>2]=244076;if(J[a+108>>2]){b=J[a+112>>2];Zi[J[J[b>>2]>>2]](b)|0;b=J[a+112>>2];if(b){J[83765]=J[83765]+1;Zi[J[61751]](J[b-4>>2])}b=J[a+108>>2];Zi[J[J[b>>2]>>2]](b)|0;b=J[a+108>>2];if(b){J[83765]=J[83765]+1;Zi[J[61751]](J[b-4>>2])}}b=J[a+88>>2];if(b){J[83765]=J[83765]+1;Zi[J[61751]](J[b-4>>2])}b=J[a+84>>2];if(b){J[83765]=J[83765]+1;Zi[J[61751]](J[b-4>>2])}b=J[a+80>>2];if(b){J[83765]=J[83765]+1;Zi[J[61751]](J[b-4>>2])}b=J[a+60>>2];if(b){J[83765]=J[83765]+1;Zi[J[61751]](J[b-4>>2])}if(K[a+100|0]==1){b=J[a+92>>2];Zi[J[J[b>>2]>>2]](b)|0;b=J[a+92>>2];if(b){J[83765]=J[83765]+1;Zi[J[61751]](J[b-4>>2])}}return a|0}function K3(a){a=a|0;var b=0,c=Q(0),d=Q(0),e=Q(0),f=0,g=Q(0),h=Q(0),i=Q(0),j=Q(0),k=Q(0),l=0,m=0,n=0,o=0,p=0;f=Ui-16|0;Ui=f;l=wj(a,1);m=wj(a,2);n=wj(a,3);o=wj(a,4);d=Q(wj(a,5));if(d==Q(0)){hu(a,1);J[f>>2]=Ij(a,-1,0);dj(3,86858,114059,f)}p=wj(a,6);b=Sj(a,64);J[b+4>>2]=0;J[b+8>>2]=0;J[b+60>>2]=0;J[b+52>>2]=0;J[b+44>>2]=-1082130432;J[b+48>>2]=0;J[b+24>>2]=0;J[b+28>>2]=0;J[b+12>>2]=0;J[b+16>>2]=0;e=Q(m);h=Q(l);i=Q(Q(1)/Q(e-h));g=Q(d+d);N[b>>2]=i*g;j=Q(o);k=Q(n);c=Q(Q(1)/Q(j-k));N[b+36>>2]=Q(k+j)*c;N[b+32>>2]=Q(h+e)*i;N[b+20>>2]=g*c;c=Q(p);e=Q(Q(1)/Q(d-c));N[b+40>>2]=Q(d+c)*e;N[b+56>>2]=Q(g*e)*c;rj(a,-1e4,106883);Mj(a,-2);Ui=f+16|0;return 1}function AL(a){var b=0,c=0,d=0,e=0;b=J[J[a+304>>2]+2080>>2];c=J[b+8>>2]-J[b+12>>2]|0;Nj(b,-1e4,J[a+320>>2]);Ok(b);IB(J[a+312>>2]);d=J[b+8>>2];J[d+8>>2]=0;J[b+8>>2]=d+16;Ok(b);hk(b,-1e4,J[a+320>>2]);hk(b,-1e4,J[a+324>>2]);hk(b,-1e4,J[a+328>>2]);if(c>>4==J[b+8>>2]-J[b+12>>2]>>4){c=J[a+316>>2];if(c){d=a+48|0;b=0;while(1){e=J[d+(b<<2)>>2];if(e){cj(e);c=J[a+316>>2]}b=b+1|0;if(c>>>0>b>>>0){continue}break}}a:{if(H[a+44|0]&1){break a}b=J[a+24>>2];if(b){cj(b)}b=J[a+16>>2];if(!b){break a}cj(b)}b:{if(H[a+12|0]&1){break b}b=J[a>>2];if(!b){break b}cj(b)}a=ij(a,0,320);J[a+328>>2]=-2;J[a+320>>2]=-2;J[a+324>>2]=-2;return}Z(143244,37616,3361,70312);B()}function zqa(a,b){a=a|0;b=b|0;var c=Q(0),d=0;d=Ui-96|0;Ui=d;ME(a,b);H[a+84|0]=1;if(!K[334032]){J[83485]=0;J[83486]=0;J[83484]=1065353216;J[83490]=0;J[83491]=0;J[83489]=1065353216;J[83497]=0;J[83498]=0;J[83496]=-1082130432;J[83494]=1065353216;J[83495]=0;J[83502]=0;J[83503]=0;J[83501]=-1082130432;J[83506]=-1082130432;J[83507]=0;H[334032]=1;J[83487]=0;J[83488]=0;J[83492]=0;J[83493]=0;J[83499]=0;J[83500]=0;J[83504]=0;J[83505]=0}b=ij(d,0,96);Zi[J[J[a>>2]+68>>2]](a,333936,b,6);c=N[a+44>>2];N[a+68>>2]=c+N[b>>2];N[a+52>>2]=N[b+48>>2]-c;N[a+72>>2]=c+N[b+20>>2];N[a+56>>2]=N[b+68>>2]-c;N[a+76>>2]=c+N[b+40>>2];N[a+60>>2]=N[b+88>>2]-c;Ui=b+96|0}function m6(a){a=a|0;var b=0,c=0,d=0,e=0,f=0,g=0;c=Ui-16|0;Ui=c;a:{b:{e=Vj(a,1);g=J[e>>2];if(g){d=bj(Aj(a,2,0));f=Yi;J[c+12>>2]=0;J[c+8>>2]=0;b=J[e+8>>2];c:{if(!b){break c}b=J[J[e+4>>2]+(mxa(d,f,b)<<2)>>2];if((b|0)==-1){break c}e=J[e+12>>2];while(1){b=e+P(b,40)|0;if(J[b>>2]==(d|0)&J[b+4>>2]==(f|0)){break b}b=J[b+32>>2];if((b|0)!=-1){continue}break}}if(rL(g,d,f,c+12|0,c+8|0,c+4|0)){b=0;if(!J[c+8>>2]){break a}d=J[c+12>>2];d:{switch(J[c+4>>2]){case 0:yo(a,d);b=1;break a;case 9:break d;default:break a}}Kp(a,d);b=1;break a}J[c>>2]=tj(d,f);b=fj(a,115755,c);break a}Z(82834,37616,151,5021);B()}Nj(a,-1e4,J[b+24>>2]);b=1}Ui=c+16|0;return b|0}function Rca(a){a=a|0;var b=0,c=0,d=0,e=0,f=0;b=Ui-96|0;Ui=b;e=pj(b+76|0,a,0,42276,587);f=J[a+8>>2]-J[a+12>>2]|0;pk(a);c=b- -64|0;J[c>>2]=0;J[c+4>>2]=0;J[b+56>>2]=0;J[b+60>>2]=0;J[b+48>>2]=0;J[b+52>>2]=0;J[b+40>>2]=0;J[b+44>>2]=0;J[b+32>>2]=0;J[b+36>>2]=0;J[b+24>>2]=0;J[b+28>>2]=0;J[b+16>>2]=0;J[b+20>>2]=0;J[b+8>>2]=0;J[b+12>>2]=0;Sk(a,1,b+40|0,b+8|0);c=-1;a:{if(f>>4<2){break a}if(!kj(a,2)){break a}Oj(a,2,5);uj(a,2);rj(a,-1,72402);c=-1;b:{if(!kj(a,-1)){break b}d=wj(a,-1);if(d<4294967296&d>=0){c=~~d>>>0;break b}c=0}gj(a,-2);gj(a,-2)}J[b+4>>2]=c;a=J[56958];Jk(b+8|0,b+40|0,J[a+8>>2],J[a+12>>2],0,0,a,b+4|0,4,0);oj(e);Ui=b+96|0;return 0}function sk(a,b){var c=0,d=0,e=0,f=0;a:{if((a|0)==(b|0)){break a}c=J[b+8>>2];if(!c){if(!a){break a}b=J[a+8>>2];if(b){Zi[J[66509]](b,0,J[a+4>>2]<<2)|0;cj(J[a+8>>2])}J[a+8>>2]=0;J[a>>2]=1;J[a+4>>2]=0;return 0}d=J[b+4>>2];b:{c:{d:{e:{while(1){e=d;d=e-1|0;if(!d){break e}if(!J[c+(d<<2)>>2]){continue}break}J[a>>2]=J[b>>2];c=J[a+4>>2];if(e>>>0<=c>>>0){break c}if(e>>>0<=1e4){break d}return-16}J[a>>2]=J[b>>2];c=J[a+4>>2];if(c){break c}c=0}d=Zj(e,4);if(!d){return-16}f=J[a+8>>2];if(f){c=c<<2;hj(d,f,c);Zi[J[66509]](f,0,c)|0;cj(J[a+8>>2])}J[a+8>>2]=d;J[a+4>>2]=e;break b}ij(J[a+8>>2]+(e<<2)|0,0,c-e<<2);d=J[a+8>>2]}hj(d,J[b+8>>2],e<<2)}return 0}function oA(a,b,c,d){var e=0,f=0,g=0,h=0,i=0,j=0,k=0,l=0;e=Ui-112|0;Ui=e;ij(e+4|0,0,104);J[e+108>>2]=d;a:{if(!d){f=-1694144372;g=1359893119;h=-1521486534;i=1013904242;j=-1150833019;k=1779033703;l=1541459225;d=528734635;break a}f=1750603025;g=-4191439;h=-150054599;i=812702999;j=914150663;k=-1056596264;l=-1090891868;d=1694076839}J[e+40>>2]=l;J[e+36>>2]=d;J[e+32>>2]=f;J[e+28>>2]=g;J[e+24>>2]=h;J[e+20>>2]=i;J[e+16>>2]=j;J[e+12>>2]=k;b:{if(!b){break b}J[e+4>>2]=b;if(b>>>0>=64){while(1){gs(e+4|0,a);a=a- -64|0;b=b+-64|0;if(b>>>0>63){continue}break}if(!b){break b}}hj(e+44|0,a,b)}a=e+4|0;xw(a,c);Zi[J[66509]](a,0,108)|0;Ui=e+112|0;return 0}function Yka(a){a=a|0;var b=0,c=0,d=0,e=0;c=J[a+8>>2];b=J[J[a+16>>2]>>2];a=J[J[a+12>>2]+4>>2];if(a){a=J[a+124>>2]}else{a=0}H[b+24|0]=K[b+24|0]&254;d=J[b+12>>2];if((d|0)!=-2){hk(a,-1e4,d);hk(a,-1e4,J[b+16>>2]);hk(a,-1e4,J[b+20>>2]);J[b+20>>2]=-2;J[b+12>>2]=-2;J[b+16>>2]=-2}a=J[b+8>>2];if(a){zo(a);J[b+8>>2]=0}a:{b:{d=J[c>>2];if((d|0)!=J[c+4>>2]){J[b>>2]=0;a=J[b+4>>2];if(a){RP(J[c+32>>2],a)}J[b+4>>2]=0;H[b+24|0]=K[b+24|0]&253;e=J[c+16>>2];if(!e){break b}a=J[c+24>>2]-1|0;if(a>>>0>=M[c+20>>2]){break a}J[c+24>>2]=a;J[(a<<2)+e>>2]=(b-d|0)/28;return 0}Z(145396,53895,487,84789);B()}Z(49493,54340,140,53220);B()}Z(2650,54340,141,53220);B()}function Ny(a){var b=0,c=0,d=0,e=0,f=0,g=0,h=0;g=Ui-16|0;Ui=g;J[g+12>>2]=0;h=1;a:{b:{b=K[a+3272|0];if(!(b&1)){e=J[a+1040>>2];d=J[a+1036>>2];if((e|0)!=(d|0)){b=e-d>>2;e=b>>>0<=1?1:b;while(1){b=J[a+1036>>2];if(J[a+1040>>2]-b>>2>>>0<=f>>>0){break a}c=J[b+(f<<2)>>2];c:{if(!c){break c}b=J[c+136>>2];if(!(b&256)){break c}J[c+136>>2]=b&-257;b=J[c+140>>2]&32767;d=J[a+1036>>2];if(b>>>0>=J[a+1040>>2]-d>>2>>>0){break a}if((c|0)!=J[(b<<2)+d>>2]){break b}h=ER(a,c)&h}f=f+1|0;if((e|0)!=(f|0)){continue}break}b=K[a+3272|0]}H[a+3272|0]=b&239;Ui=g+16|0;return}Z(152305,38296,1870,45938);B()}Z(70199,38296,1860,70408);B()}Z(145396,53895,487,84789);B()}function Kx(a,b){var c=0;qP(J[a+2480>>2],J[b+4>>2]);ll(J[b+20>>2]);a=J[b+24>>2];if(a){ll(a)}c=J[b+112>>2];if((c|0)!=J[b+116>>2]){a=0;while(1){Uu(J[P(a,40)+c>>2]);a=a+1|0;c=J[b+112>>2];if(a>>>0<(J[b+116>>2]-c|0)/40>>>0){continue}break}}a:{if(H[b+140|0]&1){break a}a=J[b+128>>2];if(!a){break a}cj(a)}b:{if(H[b+124|0]&1){break b}a=J[b+112>>2];if(!a){break b}cj(a)}c:{if(H[b+108|0]&1){break c}a=J[b+96>>2];if(!a){break c}cj(a)}d:{if(H[b+92|0]&1){break d}a=J[b+80>>2];if(!a){break d}cj(a)}e:{if(H[b+76|0]&1){break e}a=J[b+64>>2];if(!a){break e}cj(a)}f:{if(H[b+60|0]&1){break f}a=J[b+40>>2];if(a){cj(a)}a=J[b+32>>2];if(!a){break f}cj(a)}cj(b)}function $x(a,b,c){var d=0,e=0,f=0;a:{b:{c:{if(!(!b|(b|0)==(c|0))){d=b&65535;e=J[a+32>>2];if(d>>>0>=(J[a+36>>2]-e|0)/672>>>0){break a}e=e+P(d,672)|0;if(L[e+648>>1]!=(b>>>16|0)){break c}if((d|0)!=L[e+650>>1]){break b}dv(a,e);d:{if(c){b=c&65535;c=J[a+32>>2];f=(J[a+36>>2]-c|0)/672|0;if(b>>>0>=f>>>0){break a}b=c+P(b,672)|0;d=L[b+656>>1];if((d|0)==65535){c=0;break d}if(d>>>0>=f>>>0){break a}c=c+P(d,672)|0;break d}c=0;b=L[a+366>>1];if((b|0)==65535){b=0;break d}d=J[a+32>>2];if(b>>>0>=(J[a+36>>2]-d|0)/672>>>0){break a}b=d+P(b,672)|0}sD(a,e,c,b)}return}Z(47372,40876,188,69601);B()}Z(5388,40876,189,69601);B()}Z(145396,53895,487,84789);B()}function Fja(a){a=a|0;var b=0,c=0,d=0,e=0;b=J[a+4>>2];c=J[b+16>>2];e=J[J[a+12>>2]>>2];if(e>>>0>2]-c>>3>>>0){e=J[c+(e<<3)>>2];c=J[b+4>>2];b=J[b>>2];if(e>>>0>8>>>0){b=b+(e<<8)|0;c=J[a+16>>2];d=J[c+80>>2];if(d){nE(d,c+96|0);c=J[a+16>>2]}a=J[c+64>>2];d=J[55237];e=J[c+68>>2];if((a|0)==J[d+8>>2]&(e|0)==J[d+12>>2]){I[b+246>>1]=L[b+246>>1]|1;return 0}d=J[55238];if((a|0)==J[d+8>>2]&(e|0)==J[d+12>>2]){I[b+246>>1]=L[b+246>>1]&65534;return 0}d=J[57890];if((a|0)==J[d+8>>2]&(e|0)==J[d+12>>2]){a=L[b+246>>1];if(a&4){cj(J[b+240>>2]);a=L[b+246>>1]}c=Gk(J[c+96>>2]);I[b+246>>1]=a|4;J[b+240>>2]=c}return 0}}Z(145396,53895,487,84789);B()}function Pk(a,b){var c=0,d=0,e=0;a:{if((b|0)>0){b=(J[a+12>>2]+(b<<4)|0)-16|0;c=b>>>0>=M[a+8>>2]?173288:b;break a}c=J[a+8>>2]+(b<<4)|0;if((b|0)>=-9999){break a}b:{switch(b+10002|0){case 2:c=J[a+16>>2]+96|0;break a;case 1:b=J[J[J[J[a+20>>2]+4>>2]>>2]+12>>2];J[a+96>>2]=5;J[a+88>>2]=b;c=a+88|0;break a;case 0:c=a+72|0;break a;default:break b}}c=J[J[J[a+20>>2]+4>>2]>>2];c=K[c+7|0]<-10002-b>>>0?173288:(c+(0-b<<4)|0)-160024|0}b=J[a+8>>2];if(c>>>0>>0){while(1){d=b-16|0;e=J[d+4>>2];J[b>>2]=J[d>>2];J[b+4>>2]=e;J[b+8>>2]=J[b-8>>2];b=d;if(c>>>0>>0){continue}break}b=J[a+8>>2]}a=J[b+4>>2];J[c>>2]=J[b>>2];J[c+4>>2]=a;J[c+8>>2]=J[b+8>>2]}function wl(a,b,c){var d=0,e=0,f=0,g=0,h=0;a:{b:{c:{g=J[b>>2];if((P(g,J[c>>2])|0)>0){d=J[b+4>>2];e=0;d:{if(!d){break d}h=J[b+8>>2]-4|0;while(1){e=d;if(J[h+(d<<2)>>2]){break d}d=d-1|0;if(d){continue}break}e=0}d=J[c+4>>2];e:{if(!d){break e}h=J[c+8>>2]-4|0;while(1){if(J[(d<<2)+h>>2]){f=d;break e}d=d-1|0;if(d){continue}break}}if(!(e|f)|e>>>0>f>>>0){break c}if(e>>>0>=f>>>0){while(1){if(!e){break c}e=e-1|0;d=e<<2;f=J[d+J[b+8>>2]>>2];d=J[d+J[c+8>>2]>>2];if(f>>>0>d>>>0){break c}if(d>>>0<=f>>>0){continue}break}}d=tn(a,c,b);if(d){break a}g=0-g|0;break b}d=_t(a,b,c);if(d){break a}break b}d=tn(a,b,c);if(d){break a}}J[a>>2]=g;d=0}return d}function Ql(a,b,c){var d=0,e=0,f=0,g=0,h=0;a:{b:{c:{g=J[b>>2];if((P(g,J[c>>2])|0)<0){d=J[b+4>>2];e=0;d:{if(!d){break d}h=J[b+8>>2]-4|0;while(1){e=d;if(J[h+(d<<2)>>2]){break d}d=d-1|0;if(d){continue}break}e=0}d=J[c+4>>2];e:{if(!d){break e}h=J[c+8>>2]-4|0;while(1){if(J[(d<<2)+h>>2]){f=d;break e}d=d-1|0;if(d){continue}break}}if(!(e|f)|e>>>0>f>>>0){break c}if(e>>>0>=f>>>0){while(1){if(!e){break c}e=e-1|0;d=e<<2;f=J[d+J[b+8>>2]>>2];d=J[d+J[c+8>>2]>>2];if(f>>>0>d>>>0){break c}if(d>>>0<=f>>>0){continue}break}}d=tn(a,c,b);if(d){break a}g=0-g|0;break b}d=_t(a,b,c);if(d){break a}break b}d=tn(a,b,c);if(d){break a}}J[a>>2]=g;d=0}return d}function zC(a,b,c){var d=Q(0);J[a+128>>2]=bj(J[b>>2]);J[a+132>>2]=Yi;a:{if(!(H[a+68|0]&1)){lj(J[b+72>>2],160,a+56|0,a- -64|0,a+60|0);J[a+272>>2]=c;d=Q(Q((P(c,214013)+2531011>>>16&32767)>>>0)*Q(30518509447574615e-21));d=Q(Q(Q(Q(d+d)+Q(-1))*N[b+116>>2])+N[b+8>>2]);N[a+284>>2]=d>>16&32767)>>>0)*Q(30518509447574615e-21));N[a+288>>2]=Q(Q(Q(d+d)+Q(-1))*N[b+112>>2])+N[b+80>>2];if(!J[b+88>>2]){break a}d=Q(Q((P(c,214013)+2531011>>>16&32767)>>>0)*Q(30518509447574615e-21));N[a+292>>2]=Q(Q(d+d)+Q(-1))*N[J[b+84>>2]+12>>2];return}Z(151729,53895,501,2284);B()}Z(12664,55442,225,84789);B()}function kz(a,b,c,d){var e=Q(0),f=Q(0),g=Q(0),h=Q(0);g=Q(N[c+8>>2]-N[a+16>>2]);h=N[a+48>>2];f=Q(Q(N[c+4>>2]-N[a+12>>2])*N[a+44>>2]);e=Q(Q(N[c>>2]-N[a+8>>2])*N[a+40>>2]);c=d;a:{if(e<=Q(0)){break a}c=L[a+6>>1];if(e>=Q(c>>>0)){c=c&L[a+4>>1]|d;break a}if(e=Q(0)){c=~~e>>>0}else{c=0}c=c&L[a+4>>1]|d}e=Q(g*h);I[b>>1]=c;c=d;b:{if(f<=Q(0)){break b}c=L[a+6>>1];if(Q(c>>>0)<=f){c=c&L[a+4>>1]|d;break b}if(f=Q(0)){c=~~f>>>0}else{c=0}c=c&L[a+4>>1]|d}I[b+2>>1]=c;if(!(e<=Q(0))){c=L[a+6>>1];if(e>=Q(c>>>0)){I[b+4>>1]=c&L[a+4>>1]|d;return}if(e=Q(0)){c=~~e>>>0}else{c=0}d=c&L[a+4>>1]|d}I[b+4>>1]=d}function xW(a){a=a|0;var b=0,c=0,d=0,e=0,f=0;b=Ui-1072|0;Ui=b;f=mm(a,2,158859,b+32|0);Oj(a,1,5);c=Zm(a,3,1);a:{if((kj(a,4)|0)<=0){e=fl(a,1);break a}e=Ej(a,4)}d=b+36|0;J[d+4>>2]=0;J[d+8>>2]=a;J[d>>2]=d+12;b:{c:{if((c|0)<(e|0)){while(1){Nj(a,1,c);if(!Mk(a,-1)){d=kj(a,-1);if((d|0)==-1){d=60960}else{d=J[(d<<2)+257632>>2]}J[b+20>>2]=c;J[b+16>>2]=d;fj(a,145935,b+16|0)}d=b+36|0;ju(d);Yn(d,f,J[b+32>>2]);c=c+1|0;if((e|0)!=(c|0)){continue}break c}}if((c|0)!=(e|0)){break b}}Nj(a,1,e);if(!Mk(a,-1)){c=kj(a,-1);if((c|0)==-1){c=60960}else{c=J[(c<<2)+257632>>2]}J[b+4>>2]=e;J[b>>2]=c;fj(a,145935,b)}ju(b+36|0)}Ym(b+36|0);Ui=b+1072|0;return 1}function UB(a,b,c){var d=0,e=0,f=0,g=0,h=0;a:{d=J[a+163904>>2];b:{if(!d){break b}g=J[a+163900>>2]+(mxa(b,c,d)<<2)|0;e=J[g>>2];if((e|0)==-1){break b}f=J[a+163908>>2];d=e;while(1){d=(d<<4)+f|0;if((b|0)==J[d>>2]&(c|0)==J[d+4>>2]){break a}d=J[d+12>>2];if((d|0)!=-1){continue}break}}Z(111401,40201,302,18701);B()}c:{d=(e<<4)+f|0;if((b|0)==J[d>>2]&J[d+4>>2]==(c|0)){break c}while(1){h=d;e=J[d+12>>2];if((e|0)!=-1){d=(e<<4)+f|0;if(J[d>>2]!=(b|0)|J[d+4>>2]!=(c|0)){continue}break c}break}Z(152754,55629,366,62656);B()}J[a+163924>>2]=J[a+163924>>2]-1;b=(e<<4)+f|0;J[(h?h+12|0:g)>>2]=J[b+12>>2];c=J[a+163920>>2];J[a+163920>>2]=e;J[b+12>>2]=c}function bea(a){a=a|0;var b=0,c=0,d=0,e=0,f=0;c=Ui-16|0;Ui=c;b=-2;a:{if(!dk(J[a+20>>2],J[a+24>>2],264432,c+8|0,0)){a=J[J[a+36>>2]+8>>2];b=J[a>>2];if(b){Uj(b)}J[a>>2]=J[c+8>>2];ij(J[a+4>>2],255,J[a+8>>2]<<2);J[a+24>>2]=-1;J[a+28>>2]=0;b=J[a+12>>2];J[a+16>>2]=b;e=a+4|0;f=J[a+20>>2]-b>>4;d=J[a>>2];b=J[d+4>>2];b:{c:{if(f>>>0>>0){a=(b<<1>>>0)/3|0;$u(e,a>>>0<=1?1:a,b);J[c+12>>2]=0;break c}J[c+12>>2]=0;if(!b){break b}}a=0;while(1){if(M[d+4>>2]<=a>>>0){break a}a=J[d>>2]+P(a,192)|0;pl(e,J[a+8>>2],J[a+12>>2],c+12|0);a=J[c+12>>2]+1|0;J[c+12>>2]=a;if(a>>>0>>0){continue}break}}b=0}Ui=c+16|0;return b|0}Z(12664,55343,260,84789);B()}function Fia(a){a=a|0;var b=0,c=0,d=0,e=0;a:{b=J[a+4>>2];a=J[b+4>>2];d=J[b>>2];if((a|0)!=(d|0)){a=(a-d|0)/96|0;d=a>>>0<=1?1:a;a=0;while(1){c=J[b>>2];if((J[b+4>>2]-c|0)/96>>>0<=a>>>0){break a}c=c+P(a,96)|0;e=J[c+4>>2];if(e){DJ(e);HJ(J[c+4>>2])}a=a+1|0;if((d|0)!=(a|0)){continue}break}}b:{if(H[b+80|0]&1){break b}a=J[b+68>>2];if(!a){break b}cj(a)}c:{if(H[b+60|0]&1){break c}a=J[b+48>>2];if(!a){break c}cj(a)}d:{if(H[b+44|0]&1){break d}a=J[b+32>>2];if(!a){break d}cj(a)}e:{if(H[b+28|0]&1){break e}a=J[b+16>>2];if(!a){break e}cj(a)}f:{if(H[b+12|0]&1){break f}a=J[b>>2];if(!a){break f}cj(a)}cj(b);return 0}Z(145396,53895,487,84789);B()}function wqa(a,b,c){a=a|0;b=b|0;c=c|0;var d=0,e=Q(0),f=Q(0),g=Q(0),h=Q(0),i=0,j=Q(0);d=Ui-16|0;Ui=d;J[a>>2]=0;J[a+4>>2]=0;J[a+8>>2]=0;J[a+12>>2]=0;f=N[c+8>>2];g=N[c>>2];h=N[c+4>>2];e=Q(Q(f*f)+Q(Q(g*g)+Q(h*h)));a:{if(e>2]+84>>2]](b)|0)>0){g=Q(-0xde0b6b000000000);c=0;while(1){Zi[J[J[b>>2]+96>>2]](b,c,d);e=Q(Q(j*N[d+8>>2])+Q(Q(f*N[d>>2])+Q(h*N[d+4>>2])));if(e>g){i=J[d+4>>2];J[a>>2]=J[d>>2];J[a+4>>2]=i;i=J[d+12>>2];J[a+8>>2]=J[d+8>>2];J[a+12>>2]=i;g=e}c=c+1|0;if((Zi[J[J[b>>2]+84>>2]](b)|0)>(c|0)){continue}break}}Ui=d+16|0}function uD(a,b,c){var d=0,e=0,f=0;d=Ui-32|0;Ui=d;J[d+24>>2]=c;J[d+28>>2]=b;ta(a|0,1,d+28|0,d+24|0);a:{b:{c:{if(K[J[79491]+220|0]&2){b=_()|0;if(b){break c}}ya(a|0);if(K[J[79491]+220|0]&2){b=_()|0;if(b){break b}}Ga(a|0,35713,d+20|0);c=J[d+20>>2];d:{if(c){break d}dj(4,89301,119583,0);e=d+16|0;Ga(a|0,35716,e|0);b=J[d+16>>2];if((b|0)>0){f=a;a=sj(b);db(f|0,b|0,e|0,a|0);J[d>>2]=a;dj(4,89301,31902,d);cj(a)}if(!(K[J[79491]+220|0]&2)){break d}a=_()|0;if(a){break a}}Ui=d+32|0;return(c|0)!=0}Cj(b,35726,2808);Z(114101,40535,2808,35726);B()}Cj(b,35726,2810);Z(114101,40535,2810,35726);B()}Cj(a,35726,2826);Z(114101,40535,2826,35726);B()}function aQ(a,b){var c=0,d=0,e=0;c=Ui+-64|0;Ui=c;e=pj(c+12|0,a,0,39481,1084);d=J[J[pk(a)+80>>2]+8>>2];J[c+8>>2]=0;J[c+4>>2]=0;J[c+56>>2]=0;J[c+60>>2]=0;J[c+48>>2]=0;J[c+52>>2]=0;J[c+40>>2]=0;J[c+44>>2]=0;J[c+32>>2]=0;J[c+36>>2]=0;Al(a,1,d,80935,c+8|0,c+32|0,c+4|0);a:{if(H[J[c+4>>2]+145|0]&1){a=Jj(e,25661,0);break a}if(!J[c+8>>2]){a=Jj(e,16282,0);break a}d=ck(a,2);a=J[c+8>>2];if(b){d=(d|0)!=0;b=K[a+28|0];if(!(d^!(b&8))){eM(J[a+8>>2],Q(-1),Q(1));b=K[a+28|0]}H[a+28|0]=b&247|(d?8:0);a=0;break a}d=(d|0)!=0;b=K[a+28|0];if(!(d^!(b&16))){eM(J[a+8>>2],Q(1),Q(-1));b=K[a+28|0]}H[a+28|0]=b&239|(d?16:0);a=0}oj(e);Ui=c- -64|0;return a}function WD(a){var b=0,c=0,d=0,e=0,f=0,g=0,h=0,i=0,j=0,k=0,l=0;h=Ui-16|0;Ui=h;c=J[a+32>>2];j=J[a+28>>2]+J[a+24>>2]|0;d=J[a+20>>2];e=J[a+16>>2];f=J[a>>2];g=J[a+4>>2];b=c+(j+(d+(e+(J[a+8>>2]+(f+g|0)|0)|0)|0)|0)|0;i=b<<2;l=c+J[a+12>>2]|0;a=i;i=(b<<3)+43|0;c=a+i&-4;k=(a+c|0)+7&-8;g=k+(g<<3)|0;d=(g+((f+P(d,3)<<2)+(j<<4)|0)|0)+7&-8;f=d+(e<<5)|0;e=l+f|0;a:{if(fo(h+12|0,8,e)){b=0;break a}a=J[h+12>>2];J[a+4>>2]=b;J[a>>2]=e;J[a+32>>2]=a+f;J[a+28>>2]=a+d;J[a+24>>2]=a+g;J[a+20>>2]=a+k;J[a+16>>2]=a+c;J[a+8>>2]=a+40;J[a+12>>2]=a+(i&-8);b=nj(24);J[b+4>>2]=0;J[b+8>>2]=0;J[b>>2]=a;J[b+12>>2]=0;J[b+16>>2]=0;J[b+20>>2]=0}Ui=h+16|0;return b}function _j(a,b){var c=0,d=0,e=0,f=0;c=J[a+4>>2];d=0;a:{if(!c){break a}e=J[a+8>>2]-4|0;while(1){d=c;if(J[e+(c<<2)>>2]){break a}c=c-1|0;if(c){continue}break}d=0}c=J[b+4>>2];b:{if(!c){break b}e=J[b+8>>2]-4|0;while(1){if(J[e+(c<<2)>>2]){f=c;break b}c=c-1|0;if(c){continue}break}}if(!(f|d)){return 0}if(f>>>0>>0){return J[a>>2]}if(f>>>0>d>>>0){return 0-J[b>>2]|0}c=1;e=J[b>>2];f=J[a>>2];c:{d:{if((f|0)>0){if((e|0)>=0){break d}break c}if(!f){break d}c=-1;if((e|0)>0){break c}}while(1){if(!d){return 0}d=d-1|0;c=d<<2;e=J[c+J[a+8>>2]>>2];c=J[c+J[b+8>>2]>>2];if(e>>>0>c>>>0){return f}if(c>>>0<=e>>>0){continue}break}c=0-f|0}return c}function bP(a,b,c,d){a=a|0;b=b|0;c=c|0;d=d|0;var e=0,f=0,g=0;e=Ui-16|0;Ui=e;J[e+12>>2]=0;a:{b:{c:{d:{e:{if(!a|!b){break e}J[a+8>>2]=b;f=J[79491];g=J[f+108>>2];a=J[a>>2];if(a>>>0>=J[f+112>>2]-g>>2>>>0){break d}ba(34963,J[g+(a<<2)>>2]);if(K[J[79491]+220|0]&2){a=_()|0;if(a){break c}}Ka(34963,b|0,c|0,J[(d<<2)+160980>>2]);if(K[J[79491]+220|0]&2){a=_()|0;if(a){break b}}ba(34963,0);if(!(K[J[79491]+220|0]&2)){break e}a=_()|0;if(a){break a}}Ui=e+16|0;return}Z(145396,53895,487,84789);B()}Cj(a,83590,1763);Z(114101,40535,1763,83590);B()}Cj(a,83590,1765);Z(114101,40535,1765,83590);B()}Cj(a,83590,1767);Z(114101,40535,1767,83590);B()}function u3(a){a=a|0;var b=0,c=0,d=Q(0),e=Q(0),f=Q(0),g=Q(0),h=Q(0),i=Q(0),j=Q(0),k=Q(0),l=Q(0),m=Q(0),n=Q(0),o=Q(0),p=Q(0),q=Q(0),r=Q(0);b=Ui-144|0;Ui=b;c=Vj(a,1);d=N[c>>2];e=N[c+16>>2];f=N[c+32>>2];g=N[c+48>>2];h=N[c+4>>2];i=N[c+20>>2];j=N[c+36>>2];k=N[c+52>>2];l=N[c+8>>2];m=N[c+24>>2];n=N[c+40>>2];o=N[c+56>>2];p=N[c+12>>2];q=N[c+28>>2];r=N[c+44>>2];O[b+128>>3]=N[c+60>>2];O[b+120>>3]=r;O[b+112>>3]=q;O[b+104>>3]=p;O[b+96>>3]=o;O[b+88>>3]=n;O[b+80>>3]=m;O[b+72>>3]=l;O[b- -64>>3]=k;O[b+56>>3]=j;O[b+48>>3]=i;O[b+40>>3]=h;O[b+32>>3]=g;O[b+24>>3]=f;O[b+16>>3]=e;J[b>>2]=106883;O[b+8>>3]=d;ik(a,138736,b);Ui=b+144|0;return 1}function oka(a){a=a|0;var b=0,c=0,d=0,e=0;c=J[a+8>>2];b=J[J[a+16>>2]>>2];a=J[J[a+12>>2]+4>>2];if(a){a=J[a+124>>2]}else{a=0}J[b+24>>2]=J[b+24>>2]&-2;d=J[b+12>>2];if((d|0)!=-2){hk(a,-1e4,d);hk(a,-1e4,J[b+16>>2]);hk(a,-1e4,J[b+20>>2]);J[b+20>>2]=-2;J[b+12>>2]=-2;J[b+16>>2]=-2}a=J[b+8>>2];if(a){zo(a);J[b+8>>2]=0}a:{b:{d=J[c+4>>2];if((d|0)!=J[c+8>>2]){J[b>>2]=0;a=J[b+4>>2];if(a){QP(J[c>>2],a)}J[b+24>>2]=J[b+24>>2]&-3;e=J[c+20>>2];if(!e){break b}a=J[c+28>>2]-1|0;if(a>>>0>=M[c+24>>2]){break a}J[c+28>>2]=a;J[(a<<2)+e>>2]=(b-d|0)/28;return 0}Z(145396,53895,487,84789);B()}Z(49493,54340,140,53220);B()}Z(2650,54340,141,53220);B()}function Osa(a){a=a|0;var b=Q(0),c=0,d=0,e=0,f=0;c=Ui-32|0;Ui=c;J[a+56>>2]=-581039253;J[a+60>>2]=0;J[a+48>>2]=-581039253;J[a+52>>2]=-581039253;J[a+40>>2]=1566444395;J[a+44>>2]=0;J[a+32>>2]=1566444395;J[a+36>>2]=1566444395;if(J[a+16>>2]>0){while(1){e=J[a+24>>2]+P(d,80)|0;f=J[e+64>>2];Zi[J[J[f>>2]+8>>2]](f,e,c+16|0,c);b=N[c+16>>2];if(b>2]){N[a+32>>2]=b}b=N[c>>2];if(b>N[a+48>>2]){N[a+48>>2]=b}b=N[c+20>>2];if(b>2]){N[a+36>>2]=b}b=N[c+4>>2];if(b>N[a+52>>2]){N[a+52>>2]=b}b=N[c+24>>2];if(b>2]){N[a+40>>2]=b}b=N[c+8>>2];if(b>N[a+56>>2]){N[a+56>>2]=b}d=d+1|0;if((d|0)>2]){continue}break}}Ui=c+32|0}function Do(a,b){var c=0,d=0;a:{b:{if(J[218662]|!(a|b)){break b}while(1){c=J[218661];J[218661]=c?c:1;if(c){continue}break}c:{d=J[218660];c=J[d+4>>2];d:{if(!c){break d}c=J[J[d>>2]+(mxa(a,b,c)<<2)>>2];if((c|0)==-1){break d}d=J[d+8>>2];while(1){c=d+(c<<6)|0;if(J[c>>2]==(a|0)&(b|0)==J[c+4>>2]){break c}c=J[c+56>>2];if((c|0)!=-1){continue}break}}J[218661]=0;return 0}b=J[c+8>>2];if(!b){break a}a=c+8|0;J[c+8>>2]=b+1;J[218661]=0;b=J[c+36>>2];Tj(b);c=J[c+24>>2];Lj(b);while(1){b=J[218661];J[218661]=b?b:1;if(b){continue}break}b=J[a>>2]-1|0;J[a>>2]=b;J[218661]=0;c=(c|0)!=0;if(b){break b}Yu(a)}return c}Z(110696,42022,289,15448);B()}function _L(a,b){var c=0,d=Q(0),e=Q(0);c=nj(420);J[c+416>>2]=0;J[c+4>>2]=2;J[c+8>>2]=1008981770;J[c>>2]=247140;H[c+20|0]=0;J[c+24>>2]=0;J[c+28>>2]=0;d=N[a+64>>2];e=Q(d*N[b>>2]);d=Q(d*N[b+4>>2]);J[c+312>>2]=-1082130432;J[c+316>>2]=0;J[c+304>>2]=0;J[c+308>>2]=1065353216;J[c+296>>2]=1065353216;J[c+300>>2]=0;J[c+288>>2]=0;J[c+292>>2]=-1082130432;N[c+188>>2]=d;N[c+180>>2]=d;N[c+176>>2]=e;N[c+168>>2]=e;N[c+60>>2]=d;N[c+52>>2]=d;N[c+48>>2]=e;N[c+40>>2]=e;J[c+416>>2]=4;e=Q(-e);N[c+184>>2]=e;d=Q(-d);N[c+172>>2]=d;N[c+164>>2]=d;N[c+160>>2]=e;N[c+56>>2]=e;N[c+44>>2]=d;N[c+36>>2]=d;N[c+32>>2]=e;J[c+24>>2]=0;J[c+28>>2]=0;return c}function Baa(a,b,c,d){a=a|0;b=b|0;c=c|0;d=d|0;var e=0,f=0,g=0;e=Ui-16|0;Ui=e;J[e+12>>2]=0;a:{b:{c:{d:{e:{if(!b){break e}J[a+8>>2]=b;f=J[79491];g=J[f+108>>2];a=J[a>>2];if(a>>>0>=J[f+112>>2]-g>>2>>>0){break d}ba(34962,J[g+(a<<2)>>2]);if(K[J[79491]+220|0]&2){a=_()|0;if(a){break c}}Ka(34962,b|0,c|0,J[(d<<2)+160980>>2]);if(K[J[79491]+220|0]&2){a=_()|0;if(a){break b}}ba(34962,0);if(!(K[J[79491]+220|0]&2)){break e}a=_()|0;if(a){break a}}Ui=e+16|0;return}Z(145396,53895,487,84789);B()}Cj(a,83564,1712);Z(114101,40535,1712,83564);B()}Cj(a,83564,1714);Z(114101,40535,1714,83564);B()}Cj(a,83564,1716);Z(114101,40535,1716,83564);B()}function wD(a){a=a|0;var b=0,c=0,d=0;a:{b:{c:{if(a){c=J[79491];b=J[c+108>>2];d=J[c+112>>2]-b>>2;c=J[a>>2];if(d>>>0<=c>>>0){break c}xa(J[b+(c<<2)>>2]);b=J[79491];if(K[b+220|0]&2){b=_()|0;if(b){break b}b=J[79491]}wr(b,J[a>>2]);d:{if(H[a+80|0]&1){break d}b=J[a+68>>2];if(!b){break d}cj(b)}e:{if(H[a+64|0]&1){break e}b=J[a+52>>2];if(!b){break e}cj(b)}f:{if(H[a+48|0]&1){break f}b=J[a+36>>2];if(!b){break f}cj(b)}g:{if(H[a+32|0]&1){break g}b=J[a+20>>2];if(!b){break g}cj(b)}h:{if(H[a+16|0]&1){break h}b=J[a+4>>2];if(!b){break h}cj(b)}cj(a)}break a}Z(145396,53895,487,84789);B()}Cj(b,35677,2894);Z(114101,40535,2894,35677);B()}}function nV(a,b,c){var d=0,e=0,f=0,g=0;if(!((c|0)<0|(J[a+28>>2]-1|0)<=(c|0))){f=1;J[b+4>>2]=1;N[b+8>>2]=N[a+8>>2];e=c<<3;d=e+J[a+24>>2]|0;g=J[d+4>>2];J[b+24>>2]=J[d>>2];J[b+28>>2]=g;d=J[a+24>>2]+e|0;g=J[d+12>>2];J[b+32>>2]=J[d+8>>2];J[b+36>>2]=g;a:{if(c){e=(J[a+24>>2]+e|0)-8|0;d=J[e+4>>2];J[b+40>>2]=J[e>>2];J[b+44>>2]=d;break a}f=J[a+36>>2];J[b+40>>2]=J[a+32>>2];J[b+44>>2]=f;f=K[a+48|0]}H[b+56|0]=f;if((J[a+28>>2]-2|0)>(c|0)){a=J[a+24>>2]+(c<<3)|0;c=J[a+20>>2];J[b+48>>2]=J[a+16>>2];J[b+52>>2]=c;H[b+57|0]=1;return}c=J[a+44>>2];J[b+48>>2]=J[a+40>>2];J[b+52>>2]=c;H[b+57|0]=K[a+49|0];return}Z(110876,41635,89,68339);B()}function l_(a){a=a|0;var b=0,c=0,d=0,e=0,f=0,g=0,h=0;b=wj(a,1);A(+b);d=v(1)|0;f=v(0)|0;e=d&2147483647;a:{if(e>>>0>=1072693248){c=(d|0)>0|(d|0)>=0?0:3.141592653589793;if(!(e-1072693248|f)){break a}c=0/(b-b);break a}b:{if(e>>>0<=1071644671){c=1.5707963267948966;if(e>>>0<1012924417){break b}c=6123233995736766e-32-b*Xv(b*b)-b+1.5707963267948966;break a}if((d|0)<0){b=(b+1)*.5;c=Y(b);c=1.5707963267948966-(c+(c*Xv(b)+-6123233995736766e-32));c=c+c;break a}b=(1-b)*.5;c=Y(b);g=c*Xv(b);A(+c);d=v(1)|0;v(0)|0;x(0,0);x(1,d|0);h=b;b=+z();c=g+(h-b*b)/(c+b)+b;c=c+c}}d=J[a+8>>2];J[d+8>>2]=3;O[d>>3]=c;J[a+8>>2]=J[a+8>>2]+16;return 1}function g6(a){a=a|0;var b=0,c=0,d=0;b=Ui-32|0;Ui=b;c=Vj(a,1);J[b+24>>2]=0;J[b+28>>2]=0;J[b+16>>2]=0;J[b+20>>2]=0;J[b+8>>2]=0;J[b+12>>2]=0;J[b>>2]=0;J[b+4>>2]=0;H[b|0]=0;H[b+1|0]=0;H[b+2|0]=0;H[b+3|0]=0;H[b+4|0]=0;H[b+5|0]=0;H[b+6|0]=0;H[b+7|0]=0;H[b+24|0]=0;H[b+25|0]=0;H[b+26|0]=0;H[b+27|0]=0;H[b+28|0]=0;H[b+29|0]=0;H[b+30|0]=0;H[b+31|0]=0;H[b+16|0]=0;H[b+17|0]=0;H[b+18|0]=0;H[b+19|0]=0;H[b+20|0]=0;H[b+21|0]=0;H[b+22|0]=0;H[b+23|0]=0;H[b+8|0]=0;H[b+9|0]=0;H[b+10|0]=0;H[b+11|0]=0;H[b+12|0]=0;H[b+13|0]=0;H[b+14|0]=0;H[b+15|0]=0;d=J[c+304>>2];c=J[d+2500>>2];J[b>>2]=J[d+2496>>2];J[b+4>>2]=c;wm(a,b);Ui=b+32|0;return 1}function ln(a,b){var c=0;a:{b:{switch(J[b>>2]-6|0){case 0:J[b>>2]=12;return;case 1:a=El(a,J[b+8>>2]<<23|4,J[J[a+12>>2]+8>>2]);break a;case 2:a=El(a,J[b+8>>2]<<14|5,J[J[a+12>>2]+8>>2]);break a;case 3:c=J[b+12>>2];if(!(c&256|(c|0)>2]=J[a+36>>2]-1}c=J[b+8>>2];if(!(c&256|K[a+50|0]>(c|0))){J[a+36>>2]=J[a+36>>2]-1;c=J[b+8>>2]}a=El(a,c<<23|J[b+12>>2]<<14|6,J[J[a+12>>2]+8>>2]);break a;case 7:J[b>>2]=12;J[b+8>>2]=J[J[J[a>>2]+12>>2]+(J[b+8>>2]<<2)>>2]>>>6&255;return;case 8:a=J[J[a>>2]+12>>2]+(J[b+8>>2]<<2)|0;J[a>>2]=J[a>>2]&8388607|16777216;J[b>>2]=11;break;default:break b}}return}J[b>>2]=11;J[b+8>>2]=a}function h6(a){a=a|0;var b=0,c=0,d=0;b=Ui-32|0;Ui=b;c=Vj(a,1);J[b+24>>2]=0;J[b+28>>2]=0;J[b+16>>2]=0;J[b+20>>2]=0;J[b+8>>2]=0;J[b+12>>2]=0;J[b>>2]=0;J[b+4>>2]=0;H[b|0]=0;H[b+1|0]=0;H[b+2|0]=0;H[b+3|0]=0;H[b+4|0]=0;H[b+5|0]=0;H[b+6|0]=0;H[b+7|0]=0;H[b+24|0]=0;H[b+25|0]=0;H[b+26|0]=0;H[b+27|0]=0;H[b+28|0]=0;H[b+29|0]=0;H[b+30|0]=0;H[b+31|0]=0;H[b+16|0]=0;H[b+17|0]=0;H[b+18|0]=0;H[b+19|0]=0;H[b+20|0]=0;H[b+21|0]=0;H[b+22|0]=0;H[b+23|0]=0;H[b+8|0]=0;H[b+9|0]=0;H[b+10|0]=0;H[b+11|0]=0;H[b+12|0]=0;H[b+13|0]=0;H[b+14|0]=0;H[b+15|0]=0;d=J[c+16>>2];c=J[d+2500>>2];J[b>>2]=J[d+2496>>2];J[b+4>>2]=c;wm(a,b);Ui=b+32|0;return 1}function gda(a){a=a|0;var b=0,c=0,d=0,e=0,f=0,g=0;b=Ui-4096|0;Ui=b;e=pj(b+4076|0,a,0,40650,278);pk(a);J[b+4072>>2]=0;c=Aj(a,2,b+4072|0);a:{if(!c){a=Jj(e,13620,0);break a}d=J[b+4072>>2];f=d+5|0;if(f>>>0>=4001){a=Jj(e,153489,0);break a}J[b+64>>2]=4;g=b- -64|0;hj(g|4,c,d+1|0);J[b+56>>2]=0;J[b+60>>2]=0;J[b+48>>2]=0;J[b+52>>2]=0;J[b+40>>2]=0;J[b+44>>2]=0;J[b+32>>2]=0;J[b+36>>2]=0;J[b+24>>2]=0;J[b+28>>2]=0;J[b+16>>2]=0;J[b+20>>2]=0;J[b+8>>2]=0;J[b+12>>2]=0;J[b>>2]=0;J[b+4>>2]=0;$l(a,b);d=b+32|0;Sk(a,1,d,b);c=J[57890];a=0;if(!Jk(b,d,J[c+8>>2],J[c+12>>2],0,0,c,g,f,0)){break a}a=Jj(e,153654,0)}oj(e);Ui=b+4096|0;return a|0}function Ul(a,b){a=a|0;b=b|0;var c=0,d=0,e=0,f=0,g=0,h=0;e=Ui-16|0;Ui=e;f=YC(a,b);g=Yi;if(!K[874264]){nl();H[874264]=1}if(!(!(H[874164]&1)|b>>>0>1024)){h=J[218540];Tj(h);if(!K[874264]){nl();H[874264]=1}c=J[218551];a:{b:{if(!c){d=J[218552];break b}d=J[218552];c=J[J[218550]+(mxa(f,g,c)<<2)>>2];if((c|0)==-1){break b}while(1){c=P(c,24)+d|0;if(J[c>>2]==(f|0)&(g|0)==J[c+4>>2]){break a}c=J[c+16>>2];if((c|0)!=-1){continue}break}}c=(J[218554]-d|0)/24|0;d=J[218556];if((c|0)==(d|0)){d=d+16384|0;Wx(874200,(P(d,5)>>>0)/7|0,d)}a=hj(sj(b+1|0),a,b);H[a+b|0]=0;I[e+12>>1]=b;J[e+8>>2]=a;CN(f,g,e+8|0)}Lj(h)}Ui=e+16|0;Yi=g;return f|0}function aK(a,b,c){var d=0,e=0,f=0,g=0,h=0;f=Ui-112|0;Ui=f;d=a;if((kj(d,1)|0)==8){d=so(d,1);h=1}e=h|2;a:{if(kk(a,e)){e=sl(a,e);gj(a,-2);break a}e=(a|0)==(d|0)}b:{if(J[a+8>>2]-J[a+12>>2]>>4!=(h|0)){if(!Mk(a,h+1|0)){break b}}if(!Zl(d,e,f+12|0)){break b}g=(e|0)<=12?12:e;while(1){h=e+1|0;if((e|0)>=12){if(Zl(d,g+11|0,f+12|0)){mj(a,131432,5);while(1){g=h;h=g+1|0;if(Zl(d,g+10|0,f+12|0)){continue}break}}if(!Zl(d,g,f+12|0)){break b}while(1){a=f+12|0;if(Yo(d,47718,a)){Zi[b|0](d,a,c)}g=g+1|0;if(Zl(d,g,f+12|0)){continue}break}break b}e=f+12|0;if(Yo(d,47718,e)){Zi[b|0](d,e,c)}e=h;if(Zl(d,e,f+12|0)){continue}break}}Ui=f+112|0}function Jca(a){a=a|0;var b=0,c=0,d=0,e=0,f=0,g=0,h=0;c=Ui-48|0;Ui=c;f=pj(c+28|0,a,1,39971,853);a:{if((kj(a,1)|0)==7){b=qj(a,1,J[77574],0);if(b){if(lo(J[b>>2])){break a}}fj(a,72312,0)}Yk(a,1,49251);b=0}d=Ej(a,2);e=J[b+28>>2];b:{c:{if((d|0)>0){g=J[b+36>>2];if((d|0)<=(P(e,g)|0)){break c}}if(e){a=J[b+36>>2];J[c+20>>2]=49251;J[c+16>>2]=34859;J[c+24>>2]=P(a,e);a=Jj(f,130181,c+16|0);break b}J[c+4>>2]=49251;J[c>>2]=34859;a=Jj(f,131268,c);break b}d=d-1|0;e=(d>>>0)/(g>>>0)|0;h=+Zi[J[b+24>>2]](J[b+16>>2],P(e,J[b+32>>2])+(d-P(e,g)|0)|0);b=J[a+8>>2];J[b+8>>2]=3;O[b>>3]=h;J[a+8>>2]=J[a+8>>2]+16;a=1}oj(f);Ui=c+48|0;return a|0}function D9(a){a=a|0;var b=0,c=0,d=0,e=0,f=0,g=0,h=0;c=Ui-32|0;Ui=c;e=1;f=pj(c+12|0,a,1,37682,4753);Qj(a,1,c+8|0);Bj(a);b=qj(a,-1,J[219396],139183);gj(a,-2);J[c>>2]=0;J[c+4>>2]=0;a:{b:{c:{g=J[c+8>>2];d=g&65535;h=J[b+36>>2];b=J[b+32>>2];if(d>>>0<(h-b|0)/672>>>0){b=b+P(d,672)|0;if(L[b+648>>1]!=(g>>>16|0)){break c}if(L[b+650>>1]!=(d|0)){break b}if((J[b+476>>2]&240)==80){d=J[b+620>>2];J[c>>2]=J[b+616>>2];J[c+4>>2]=d;b=0}else{b=-10}break a}Z(145396,53895,487,84789);B()}Z(47372,40876,188,69601);B()}Z(5388,40876,189,69601);B()}d:{if((b|0)==-10){e=Jj(f,153268,0);break d}Bk(a,J[c>>2],J[c+4>>2])}oj(f);Ui=c+32|0;return e|0}function sC(a,b){var c=0,d=0,e=0,f=0;c=Ui-192|0;Ui=c;if(kk(a,1)){f=b;d=ok(a,1);a:{if(d<0x10000000000000000&d>=0){e=~~d>>>0;if(R(d)>=1){b=~~(d>0?T(V(d*2.3283064365386963e-10),4294967295):W((d-+(~~d>>>0>>>0))*2.3283064365386963e-10))>>>0}else{b=0}break a}b=0}b:{c:{if(!ur(f,e,b)){J[c+52>>2]=b>>>0>2?102398:J[(b<<2)+239944>>2];J[c+48>>2]=e;b=c- -64|0;Gj(b,128,136462,c+48|0);J[c+32>>2]=b;fj(a,127304,c+32|0);break c}if((b|0)==2){break b}J[c+20>>2]=b>>>0>2?102398:J[(b<<2)+239944>>2];J[c+16>>2]=e;b=c- -64|0;Gj(b,128,136462,c+16|0);J[c>>2]=b;fj(a,124196,c)}e=-1;b=-1}Ui=c+192|0;Yi=b;return e}Z(135533,37616,1040,66991);B()}function fl(a,b){var c=0;a:{if((b|0)>0){b=(J[a+12>>2]+(b<<4)|0)-16|0;c=b>>>0>=M[a+8>>2]?173288:b;break a}c=J[a+8>>2]+(b<<4)|0;if((b|0)>=-9999){break a}b:{switch(b+10002|0){case 2:c=J[a+16>>2]+96|0;break a;case 1:b=J[J[J[J[a+20>>2]+4>>2]>>2]+12>>2];J[a+96>>2]=5;J[a+88>>2]=b;c=a+88|0;break a;case 0:c=a+72|0;break a;default:break b}}c=J[J[J[a+20>>2]+4>>2]>>2];c=K[c+7|0]<-10002-b>>>0?173288:(c+(0-b<<4)|0)-160024|0}b=c;c=0;c:{d:{switch(J[b+8>>2]-3|0){case 1:return J[J[b>>2]+12>>2];case 4:return J[J[b>>2]+16>>2];case 2:return yI(J[b>>2]);case 0:break d;default:break c}}if(!nI(a,b)){break c}c=J[J[b>>2]+12>>2]}return c}function Oga(a){a=a|0;var b=0,c=0,d=0,e=0,f=0,g=Q(0);b=Ui-112|0;Ui=b;e=J[a+8>>2]-J[a+12>>2]|0;pk(a);d=mk(a,2);f=Yi;c=Qm(a,3);J[b+64>>2]=d;J[b+68>>2]=f;N[b+80>>2]=N[c>>2];N[b+84>>2]=N[c+4>>2];N[b+88>>2]=N[c+8>>2];g=N[c+12>>2];J[b+96>>2]=0;N[b+92>>2]=g;J[b+56>>2]=0;J[b+60>>2]=0;J[b+48>>2]=0;J[b+52>>2]=0;J[b+40>>2]=0;J[b+44>>2]=0;J[b+32>>2]=0;J[b+36>>2]=0;J[b+24>>2]=0;J[b+28>>2]=0;J[b+16>>2]=0;J[b+20>>2]=0;J[b+8>>2]=0;J[b+12>>2]=0;J[b>>2]=0;J[b+4>>2]=0;d=b+32|0;Sk(a,1,d,b);c=J[57150];Jk(b,d,J[c+8>>2],J[c+12>>2],0,0,c,b- -64|0,48,0);if(e>>4!=J[a+8>>2]-J[a+12>>2]>>4){Z(143244,40569,482,14154);B()}Ui=b+112|0;return 0}function Oca(a){a=a|0;var b=0,c=0,d=0,e=0,f=0,g=Q(0);b=Ui-112|0;Ui=b;e=J[a+8>>2]-J[a+12>>2]|0;pk(a);d=mk(a,2);f=Yi;c=Qm(a,3);J[b+64>>2]=d;J[b+68>>2]=f;N[b+80>>2]=N[c>>2];N[b+84>>2]=N[c+4>>2];N[b+88>>2]=N[c+8>>2];g=N[c+12>>2];J[b+96>>2]=0;N[b+92>>2]=g;J[b+56>>2]=0;J[b+60>>2]=0;J[b+48>>2]=0;J[b+52>>2]=0;J[b+40>>2]=0;J[b+44>>2]=0;J[b+32>>2]=0;J[b+36>>2]=0;J[b+24>>2]=0;J[b+28>>2]=0;J[b+16>>2]=0;J[b+20>>2]=0;J[b+8>>2]=0;J[b+12>>2]=0;J[b>>2]=0;J[b+4>>2]=0;d=b+32|0;Sk(a,1,d,b);c=J[57150];Jk(b,d,J[c+8>>2],J[c+12>>2],0,0,c,b- -64|0,48,0);if(e>>4!=J[a+8>>2]-J[a+12>>2]>>4){Z(143244,41350,374,14179);B()}Ui=b+112|0;return 0}function or(a,b,c,d,e){var f=0,g=0,h=0,i=0;f=Ui-48|0;Ui=f;a:{b:{c:{if(yj(b)>>>0>=64){J[f+4>>2]=b;J[f>>2]=64;dj(4,96538,149636,f);a=-6;break c}if(!zK(a,b,f+28|0)){J[f+16>>2]=b;dj(4,96538,149274,f+16|0);a=-6;break c}i=Gk(b);h=J[a+52>>2];Tj(h);b=J[a+4>>2];g=J[a+8>>2];if((b|0)==(g|0)){if(H[a+12|0]&1){break b}lj((b-J[a>>2]>>4)+2|0,16,a,a+8|0,a+4|0);g=J[a+8>>2];b=J[a+4>>2]}if((b|0)==(g|0)){break a}J[a+4>>2]=b+16;H[b+12|0]=e;J[b+8>>2]=d;J[b+4>>2]=c;J[b>>2]=i;b=J[a>>2];a=J[a+4>>2];bw(b,a,f+47|0,(a|0)!=(b|0)?62-(S(a-b>>4)<<1)|0:0,1);Lj(h);a=0}Ui=f+48|0;return a}Z(151729,53895,501,2284);B()}Z(112520,53895,557,53220);B()}function Usa(a,b,c){a=a|0;b=Q(b);c=c|0;var d=0,e=Q(0),f=Q(0),g=Q(0),h=0,i=Q(0);d=Ui-96|0;Ui=d;J[d+44>>2]=0;J[d+48>>2]=0;h=d- -64|0;J[h>>2]=0;J[h+4>>2]=0;J[d+84>>2]=0;J[d+88>>2]=0;J[d+92>>2]=0;J[d+36>>2]=0;J[d+40>>2]=0;J[d+32>>2]=1065353216;J[d+56>>2]=0;J[d+60>>2]=0;J[d+52>>2]=1065353216;J[d+76>>2]=0;J[d+80>>2]=0;J[d+72>>2]=1065353216;Zi[J[J[a>>2]+8>>2]](a,d+32|0,d+16|0,d);e=N[d+24>>2];i=N[d+8>>2];b=Q(b/Q(12));f=Q(Q(N[d>>2]-N[d+16>>2])*Q(.5));f=Q(f+f);f=Q(f*f);g=Q(Q(N[d+4>>2]-N[d+20>>2])*Q(.5));g=Q(g+g);g=Q(g*g);N[c+8>>2]=b*Q(f+g);e=Q(Q(i-e)*Q(.5));e=Q(e+e);e=Q(e*e);N[c+4>>2]=b*Q(f+e);N[c>>2]=b*Q(g+e);Ui=d+96|0}function Cma(a){a=a|0;var b=Q(0),c=0,d=Q(0),e=Q(0),f=0,g=Q(0),h=Q(0),i=0,j=Q(0);f=dn(a,1);c=J[f+140>>2]&32767;i=J[f+80>>2];f=J[i+3128>>2];if(J[i+3132>>2]-f>>6>>>0<=c>>>0){Z(145396,53895,487,84789);B()}c=f+(c<<6)|0;e=N[c+12>>2];b=Q(e*e);e=N[c+8>>2];d=Q(e*e);e=N[c+4>>2];g=Q(e*e);e=N[c>>2];e=Q(Y(Q(b+Q(d+Q(g+Q(e*e))))));b=N[c+28>>2];d=Q(b*b);b=N[c+24>>2];g=Q(b*b);b=N[c+20>>2];h=Q(b*b);b=N[c+16>>2];b=Q(Y(Q(d+Q(g+Q(h+Q(b*b))))));d=N[c+44>>2];g=Q(d*d);d=N[c+40>>2];h=Q(d*d);d=N[c+36>>2];j=Q(d*d);d=N[c+32>>2];d=Q(Y(Q(g+Q(h+Q(j+Q(d*d))))));b=b>d?b:d;c=J[a+8>>2];J[c+8>>2]=3;O[c>>3]=b>2]=J[a+8>>2]+16;return 1}function pv(a){var b=0,c=0,d=0,e=0,f=0;c=Ui-32|0;Ui=c;a=J[a>>2];J[c+28>>2]=0;d=1;a:{if(!(H[a+3272|0]&1)){ym(a);f=L[a+1058>>1];if(f){while(1){e=J[a+1036>>2];if(J[a+1040>>2]-e>>2>>>0<=b>>>0){break a}d=ZD(a,J[e+(b<<2)>>2])&d;b=b+1|0;if((f|0)!=(b|0)){continue}break}b=0;while(1){e=J[a+1036>>2];if(J[a+1040>>2]-e>>2>>>0<=b>>>0){break a}d=HR(a,J[e+(b<<2)>>2])&d;b=b+1|0;if((f|0)!=(b|0)){continue}break}}b=J[a+3220>>2];J[c>>2]=J[a+3216>>2];J[c+4>>2]=b;b=J[a+3228>>2];J[c+8>>2]=J[a+3224>>2];J[c+12>>2]=b;b=tv(a,c,2);H[a+3272|0]=K[a+3272|0]|16;Ui=c+32|0;return b&d}Z(152393,38296,1783,45923);B()}Z(145396,53895,487,84789);B()}function IE(a){var b=0,c=Q(0);b=Ui-96|0;Ui=b;H[a+84|0]=1;if(!K[334032]){J[83485]=0;J[83486]=0;J[83484]=1065353216;J[83490]=0;J[83491]=0;J[83489]=1065353216;J[83497]=0;J[83498]=0;J[83496]=-1082130432;J[83494]=1065353216;J[83495]=0;J[83502]=0;J[83503]=0;J[83501]=-1082130432;J[83506]=-1082130432;J[83507]=0;H[334032]=1;J[83487]=0;J[83488]=0;J[83492]=0;J[83493]=0;J[83499]=0;J[83500]=0;J[83504]=0;J[83505]=0}b=ij(b,0,96);Zi[J[J[a>>2]+68>>2]](a,333936,b,6);c=N[a+44>>2];N[a+68>>2]=N[b>>2]+c;N[a+52>>2]=N[b+48>>2]-c;N[a+72>>2]=c+N[b+20>>2];N[a+56>>2]=N[b+68>>2]-c;N[a+76>>2]=c+N[b+40>>2];N[a+60>>2]=N[b+88>>2]-c;Ui=b+96|0}function SR(a,b,c){var d=0,e=0,f=0,g=0,h=0,i=0;a:{b:{if(b>>>0<3){d=J[a+4>>2];e=J[a>>2];g=d-e>>3;f=b<<4;b=f&31;if((f&63)>>>0>=32){f=2>>>b|0}else{f=((1<>>b}c:{if((d|0)==(e|0)){break c}i=g>>>0<=1?1:g;b=0;while(1){h=e+(b<<3)|0;if(J[h>>2]!=(c|0)){b=b+1|0;if((i|0)!=(b|0)){continue}break c}break}I[h+4>>1]=L[h+4>>1]|f;return}e=a+4|0;b=J[a+8>>2];if((b|0)==(d|0)){if(H[a+12|0]&1){break b}lj(g+4|0,8,a,a+8|0,e);d=J[a+4>>2];a=J[a+8>>2]}else{a=b}if((a|0)==(d|0)){break a}J[e>>2]=d+8;J[d>>2]=c;J[d+4>>2]=f&65535;return}Z(62644,37012,30,60256);B()}Z(151729,54052,501,2284);B()}Z(112520,54052,557,53220);B()}function t_(a){a=a|0;var b=0;iu(a,135350);uj(a,-1);ej(a,-2,5326);uk(a,0,258320);Fj(a,0,1);Nk(a,2019,0);ej(a,-2,62387);ms(a,-10001);uk(a,44091,258224);Fj(a,0,1);Nk(a,2020,0);ej(a,-2,62387);b=Sj(a,4);J[b>>2]=0;rj(a,-1e4,135350);Mj(a,-2);J[b>>2]=J[53387];uj(a,-1);Ik(a,-10001,1);uj(a,-2);jq(a,-2);ej(a,-3,47800);b=Sj(a,4);J[b>>2]=0;rj(a,-1e4,135350);Mj(a,-2);J[b>>2]=J[53388];uj(a,-1);Ik(a,-10001,2);uj(a,-2);jq(a,-2);ej(a,-3,9588);b=Sj(a,4);J[b>>2]=0;rj(a,-1e4,135350);Mj(a,-2);J[b>>2]=J[53386];uj(a,-2);jq(a,-2);ej(a,-3,31926);gj(a,-2);rj(a,-1,48059);Fj(a,0,1);Nk(a,2021,0);ej(a,-2,62387);jq(a,-2);gj(a,-2);return 1}function mO(a,b,c){var d=0,e=0,f=0,g=0,h=0,i=0,j=0;g=Ui-16|0;Ui=g;J[a+344>>2]=b;J[a+348>>2]=c;f=J[a+312>>2];h=J[a+308>>2];i=f-h>>3;a:{if((f|0)==(h|0)){break a}f=i>>>0<=1?1:i;while(1){e=h+(d<<3)|0;if(J[e>>2]==(b|0)&J[e+4>>2]==(c|0)){break a}d=d+1|0;if((f|0)!=(d|0)){continue}break}d=f}b:{if((d|0)==(i|0)){J[g>>2]=tj(b,c);dj(4,93318,146683,g);c=0;break b}c=d&65535}b=J[a+36>>2];d=J[a+32>>2];if((b|0)!=(d|0)){b=(b-d|0)/672|0;f=b>>>0<=1?1:b;c=c<<2;while(1){e=d+P(j,672)|0;b=J[e+580>>2];if(b){KP(a,L[e+650>>1]|L[e+648>>1]<<16,J[b+c>>2]);J[e+476>>2]=J[e+476>>2]|4194304}j=j+1|0;if((f|0)!=(j|0)){continue}break}}Ui=g+16|0}function uQ(a,b){var c=0,d=0;c=J[b+12>>2];if(c){vj(a,c)}c=J[b+16>>2];if(c){vj(a,c)}a=J[b>>2];if(a){Uj(a)}a=J[b+4>>2];if(a){cj(xL(a))}c=J[b+60>>2];if(c){while(1){a=J[J[b+56>>2]+(d<<2)>>2];if((a|0)!=-1){while(1){a=J[b+64>>2]+P(a,12)|0;c=J[a+4>>2];cj(J[c+48>>2]);cj(c);a=J[a+8>>2];if((a|0)!=-1){continue}break}c=J[b+60>>2]}d=d+1|0;if(d>>>0>>0){continue}break}a=c<<2}else{a=0}ij(J[b+56>>2],255,a);J[b+76>>2]=-1;J[b+80>>2]=0;a=J[b+64>>2];J[b+68>>2]=a;a:{if(H[b+84|0]&1){break a}if(a){cj(a)}a=J[b+56>>2];if(!a){break a}cj(a)}b:{if(H[b+52|0]&1){break b}a=J[b+32>>2];if(a){cj(a)}a=J[b+24>>2];if(!a){break b}cj(a)}cj(b)}function nk(a,b,c){var d=0,e=0,f=0,g=0,h=0,i=0;e=Ui-16|0;Ui=e;J[e+12>>2]=0;g=e+12|0;if(!K[874264]){nl();H[874264]=1}if(K[874164]==1){h=J[218540];Tj(h);if(!K[874264]){nl();H[874264]=1}d=J[218551];a:{if(!d){break a}d=J[J[218550]+(mxa(b,c,d)<<2)>>2];if((d|0)==-1){break a}i=J[218552];while(1){d=P(d,24)+i|0;if(J[d>>2]!=(b|0)|J[d+4>>2]!=(c|0)){d=J[d+16>>2];if((d|0)!=-1){continue}break a}break}f=L[d+12>>1];if(g){J[g>>2]=f}f=IM(a,f+1|0);if(!f){break a}H[hj(f,J[d+8>>2],L[d+12>>1])+L[d+12>>1]|0]=0}Lj(h)}d=f;b:{if(d){break b}d=IM(a,31);if(!d){d=102358;break b}J[e>>2]=b;J[e+4>>2]=c;Gj(d,31,102238,e)}Ui=e+16|0;return d}function BG(a,b,c,d,e){a=a|0;b=b|0;c=c|0;d=d|0;e=e|0;var f=0,g=0,h=0,i=0;g=Ui-16|0;Ui=g;J[d>>2]=0;f=-2;h=J[a>>2];a:{if((h|0)==-1){break a}b:{f=Pt(h,b,c,0,0);if((f|0)<0){while(1){f=J[245744];c:{if((f|0)!=6){if((f|0)==27){break c}if((f|0)!=64){break a}f=-2;break a}f=J[a>>2];J[g+12>>2]=4;J[g+8>>2]=f;if(O[e>>3]==0){break b}while(1){h=g+8|0;i=Wq(e)*1e3;d:{if(R(i)<2147483648){f=~~i;break d}f=-2147483648}f=_q(h,1,(f|0)<0?-1:f);if((f|0)!=-1){if(f){break c}break b}f=J[245744];if((f|0)==27){continue}break}if(f){break a}}f=Pt(J[a>>2],b,c,0,0);if((f|0)<0){continue}break}}J[d>>2]=f;f=0;break a}f=-1}Ui=g+16|0;return f|0}function LT(a,b,c,d){var e=Q(0),f=Q(0),g=Q(0),h=Q(0),i=Q(0),j=Q(0),k=Q(0);f=Rj(c);e=N[b+432>>2];c=Hj(c);a:{if(!(Q(R(f))>Q(1.1920928955078125e-7))){h=Q(f*f);break a}h=Q(f*f);g=Q(Q(c*c)/h);i=Q(g/Q(e*e));e=N[b+436>>2];e=Q(Y(Q(Q(g+Q(1))/Q(i+Q(Q(1)/Q(e*e))))))}J[a+12>>2]=0;e=Q(e*Q(.5));g=Q(Hj(e)/Q(Y(Q(Q(c*c)+h))));c=Q(g*Q(-c));e=Rj(e);i=Q(e*Q(0));h=Q(g*Q(0));j=Q(h*Q(0));k=Q(Q(i+Q(d*c))-j);f=Q(f*g);g=Q(Q(i+j)-Q(f*d));j=Q(c*Q(-0));i=Q(j+Q(Q(f*Q(-0))-Q(h*d)));d=Q(j+Q(Q(e*d)+Q(f*Q(0))));N[a+8>>2]=Q(k*h)+Q(Q(Q(e*g)-Q(i*c))-Q(d*f));N[a+4>>2]=Q(d*c)+Q(Q(Q(e*k)-Q(i*f))-Q(g*h));N[a>>2]=Q(g*f)+Q(Q(Q(e*d)-Q(i*h))-Q(k*c))}function Uz(a,b,c,d){var e=0,f=0,g=0;f=Ui-16|0;Ui=f;a:{if(J[a>>2]==-1){e=-2;break a}while(1){if(!zE(J[a>>2],b,c)){e=0;break a}e=J[245744];if((e|0)==27){continue}break}if((e|0)!=26&(e|0)!=6){break a}if(O[d>>3]==0){e=-1;break a}b=J[a>>2];J[f+12>>2]=5;J[f+8>>2]=b;e=-1;b:{c:{while(1){c=f+8|0;g=Wq(d)*1e3;d:{if(R(g)<2147483648){b=~~g;break d}b=-2147483648}b=_q(c,1,(b|0)<0?-1:b);if((b|0)!=-1){if(!b){break a}if(K[f+14|0]&9){break c}e=0;break a}b=J[245744];if((b|0)==27){continue}break}J[f+4>>2]=b;e=b;if((b|0)!=-2){break a}break b}J[f+4>>2]=-2}e=0;if(!Wr(J[a>>2],f+4|0,0,0,0)){break a}e=J[245744]}Ui=f+16|0;return e}function Ns(a,b){var c=0,d=0,e=0;a:{d=J[a+4>>2];c=J[d+4>>2];b:{if(!c){break b}c=J[J[d>>2]+((b>>>0)%(c>>>0)<<2)>>2];if((c|0)==-1){break b}d=J[d+8>>2];while(1){c=d+P(c,24)|0;if(J[c>>2]==(b|0)){break a}c=J[c+16>>2];if((c|0)!=-1){continue}break}}Z(53392,42212,1448,57830);B()}c:{b=J[a>>2];d=J[b+4>>2];d:{if(!d){break d}a=J[c+8>>2];e=J[c+12>>2];c=J[J[b>>2]+(mxa(a,e,d)<<2)>>2];if((c|0)==-1){break d}d=J[b+8>>2];while(1){b=d+P(c,56)|0;if(J[b>>2]==(a|0)&(e|0)==J[b+4>>2]){break c}c=J[b+48>>2];if((c|0)!=-1){continue}break}}Z(70819,42212,1440,57830);B()}a=J[b+36>>2];if(!a){Z(111964,42212,1441,57830);B()}J[b+36>>2]=a+1}function q3(a){a=a|0;var b=0,c=Q(0),d=Q(0),e=Q(0),f=Q(0),g=Q(0),h=Q(0),i=Q(0),j=Q(0),k=Q(0),l=Q(0),m=Q(0),n=Q(0);b=an(a,1);c=N[b+48>>2];d=N[b+52>>2];e=N[b+56>>2];f=N[b>>2];g=N[b+16>>2];h=N[b+32>>2];i=N[b+4>>2];j=N[b+20>>2];k=N[b+36>>2];l=N[b+8>>2];m=N[b+24>>2];n=N[b+40>>2];b=Sj(a,64);J[b+60>>2]=1065353216;J[b+44>>2]=0;N[b+40>>2]=n;N[b+36>>2]=m;N[b+32>>2]=l;J[b+28>>2]=0;N[b+24>>2]=k;N[b+20>>2]=j;N[b+16>>2]=i;J[b+12>>2]=0;N[b+8>>2]=h;N[b+4>>2]=g;N[b>>2]=f;N[b+56>>2]=-Q(Q(h*c)+Q(Q(k*d)+Q(n*e)));N[b+52>>2]=-Q(Q(g*c)+Q(Q(j*d)+Q(m*e)));N[b+48>>2]=-Q(Q(f*c)+Q(Q(i*d)+Q(l*e)));rj(a,-1e4,106883);Mj(a,-2);return 1}function k3(a){a=a|0;var b=Q(0),c=Q(0),d=0,e=Q(0),f=0,g=0,h=Q(0),i=Q(0),j=0,k=0,l=0,m=Q(0);d=an(a,1);c=N[d+40>>2];b=N[d>>2];f=c>b;e=N[d+20>>2];k=e>2];m=Q(Q(N[d+4>>2]-(j?Q(-b):b))*c);b=N[d+8>>2];b=Q(Q(N[d+32>>2]-(g?Q(-b):b))*c);e=N[d+36>>2];e=Q(Q(N[d+24>>2]-(f?Q(-e):e))*c);a:{if(!j){i=e;c=b;b=m;e=h;break a}i=h;c=m}b:{if(!f){h=i;i=c;c=b;b=e;break b}h=c;c=e}d=Sj(a,16);N[d+12>>2]=b;N[d+8>>2]=c;N[d+4>>2]=i;N[d>>2]=h;rj(a,-1e4,16786);Mj(a,-2);return 1}function Ol(a,b,c,d){var e=0,f=0;e=Ui-32|0;Ui=e;Nk(a,1704,0);f=(b^-1)+(J[a+8>>2]-J[a+12>>2]>>4)|0;Pk(a,f);b=kq(a,b,c,f);Rl(a,f);a:{b:{switch(b|0){case 4:gj(a,-2);dj(4,86858,119063,0);break a;case 0:break a;default:break b}}rj(a,-1,32757);rj(a,-2,51795);c=Ij(a,-2,0);f=Ij(a,-1,0);if(d){J[e+20>>2]=f;J[e+16>>2]=c;dj(4,86858,26072,e+16|0);gj(a,-4);break a}J[e+4>>2]=f;J[e>>2]=c;dj(4,86858,31808,e);rj(a,-10002,55914);c:{if((kj(a,-1)|0)!=5){break c}mj(a,34141,15);Ll(a,-2);if((kj(a,-1)|0)==6){mj(a,83048,3);uj(a,-5);uj(a,-5);Ol(a,3,0,1);break c}if(kj(a,-1)){dj(4,86858,45563,0)}gj(a,-2)}gj(a,-5)}Ui=e+32|0;return b}function Mr(a,b,c,d,e,f,g,h){var i=0,j=0,k=0,l=0;k=1;i=d&2147483647;j=i;l=(i|0)==2147418112;a:{if(l&!c?a|b:l&(c|0)!=0|i>>>0>2147418112){break a}i=h&2147483647;if(!g&(i|0)==2147418112?e|f:(i|0)==2147418112&(g|0)!=0|i>>>0>2147418112){break a}if(!(a|e|(c|g)|(b|f|(i|j)))){return 0}i=d&h;if((i|0)>0){j=1}else{j=(i|0)>=0}if(j){if((c|0)==(g|0)&(d|0)==(h|0)?(b|0)==(f|0)&a>>>0>>0|b>>>0>>0:c>>>0>>0&(d|0)<=(h|0)|(d|0)<(h|0)){return-1}return(a^e|c^g|(b^f|d^h))!=0}if((c|0)==(g|0)&(d|0)==(h|0)?(b|0)==(f|0)&a>>>0>e>>>0|b>>>0>f>>>0:c>>>0>g>>>0&(d|0)>=(h|0)|(d|0)>(h|0)){return-1}k=(a^e|c^g|(b^f|d^h))!=0}return k}function rz(a,b,c){var d=Q(0),e=Q(0),f=Q(0),g=Q(0),h=Q(0),i=Q(0),j=Q(0),k=Q(0),l=Q(0),m=Q(0),n=Q(0),o=Q(0),p=Q(0),q=Q(0),r=Q(0),s=Q(0),t=Q(0);l=N[b+8>>2];g=N[b+12>>2];h=N[b+28>>2];d=N[b+16>>2];i=N[b+24>>2];p=Q(Q(g*h)-Q(d*i));m=N[b>>2];j=N[b+32>>2];k=N[b+20>>2];q=Q(Q(d*j)-Q(k*h));n=N[b+4>>2];r=Q(Q(k*i)-Q(g*j));e=Q(Q(l*p)+Q(Q(m*q)+Q(n*r)));o=e!=Q(0)?Q(Q(1)/e):e;e=N[c+4>>2];f=N[c>>2];s=Q(l*Q(Q(g*e)-Q(d*f)));t=d;d=N[c+8>>2];N[a+8>>2]=o*Q(s+Q(Q(m*Q(Q(t*d)-Q(k*e)))+Q(n*Q(Q(k*f)-Q(g*d)))));N[a+4>>2]=o*Q(Q(l*Q(Q(f*h)-Q(e*i)))+Q(Q(m*Q(Q(e*j)-Q(d*h)))+Q(n*Q(Q(d*i)-Q(f*j)))));N[a>>2]=o*Q(Q(d*p)+Q(Q(f*q)+Q(r*e)))}function CG(a,b,c,d,e){a=a|0;b=b|0;c=c|0;d=d|0;e=e|0;var f=0,g=0,h=0,i=0;g=Ui-16|0;Ui=g;J[d>>2]=0;f=J[a>>2];a:{if((f|0)==-1){f=-2;break a}b:{f=Wr(f,b,c,0,0);if((f|0)<=0){while(1){if(!f){f=-2;break a}f=J[245744];c:{if((f|0)==27){break c}if((f|0)!=6){break a}f=J[a>>2];J[g+12>>2]=1;J[g+8>>2]=f;if(O[e>>3]==0){break b}while(1){i=g+8|0;h=Wq(e)*1e3;d:{if(R(h)<2147483648){f=~~h;break d}f=-2147483648}f=_q(i,1,(f|0)<0?-1:f);if((f|0)!=-1){if(f){break c}break b}f=J[245744];if((f|0)==27){continue}break}if(f){break a}}f=Wr(J[a>>2],b,c,0,0);if((f|0)<=0){continue}break}}J[d>>2]=f;f=0;break a}f=-1}Ui=g+16|0;return f|0}function _H(a,b){J[a+8>>2]=2036477234;J[a+12>>2]=1797285236;J[a>>2]=1634760805;J[a+4>>2]=857760878;J[a+16>>2]=K[b|0]|K[b+1|0]<<8|(K[b+2|0]<<16|K[b+3|0]<<24);J[a+20>>2]=K[b+4|0]|K[b+5|0]<<8|(K[b+6|0]<<16|K[b+7|0]<<24);J[a+24>>2]=K[b+8|0]|K[b+9|0]<<8|(K[b+10|0]<<16|K[b+11|0]<<24);J[a+28>>2]=K[b+12|0]|K[b+13|0]<<8|(K[b+14|0]<<16|K[b+15|0]<<24);J[a+32>>2]=K[b+16|0]|K[b+17|0]<<8|(K[b+18|0]<<16|K[b+19|0]<<24);J[a+36>>2]=K[b+20|0]|K[b+21|0]<<8|(K[b+22|0]<<16|K[b+23|0]<<24);J[a+40>>2]=K[b+24|0]|K[b+25|0]<<8|(K[b+26|0]<<16|K[b+27|0]<<24);J[a+44>>2]=K[b+28|0]|K[b+29|0]<<8|(K[b+30|0]<<16|K[b+31|0]<<24);return 0}function zy(a,b){var c=0,d=0,e=0,f=0,g=0;a:{b:{d=J[b+136>>2];c=d>>>16|0;if((c|0)!=32767){if(!(d&255)){break b}d=J[a+1036>>2];e=J[a+1040>>2]-d>>2;if(c>>>0>=e>>>0){break a}f=J[d+(c<<2)>>2];g=J[f+148>>2];a=g>>>16&32767;c:{if((a|0)==32767){break c}c=0;while(1){if(a>>>0>=e>>>0){break a}a=J[d+(a<<2)>>2];if((a|0)==(b|0)){a=J[a+148>>2];if(c){J[c+148>>2]=J[c+148>>2]&-32768|a&32767;break c}J[f+148>>2]=g&-2147418113|a<<16&2147418112;break c}c=a;a=J[a+148>>2]&32767;if((a|0)!=32767){continue}break}}I[b+138>>1]=32767;J[b+148>>2]=J[b+148>>2]|32767}return}Z(112255,38296,1233,51005);B()}Z(145396,53895,487,84789);B()}function dl(a,b){var c=0,d=0;c=K[b+5|0];a:{b:{c:{d:{e:{f:{while(1){g:{c=c&252;H[b+5|0]=c;d=K[b+4|0];if((d|0)!=7){switch(d-5|0){case 4:break c;case 3:break d;case 0:break e;case 1:break f;case 5:break g;default:break a}}H[b+5|0]=c|4;c=J[b+8>>2];if(!(!c|!(K[c+5|0]&3))){dl(a,c)}b=J[b+12>>2];c=K[b+5|0];if(c&3){continue}break a}break}c=J[b+8>>2];h:{if(J[c+8>>2]<4){break h}d=J[c>>2];if(!(K[d+5|0]&3)){break h}dl(a,d);c=J[b+8>>2]}if((b+16|0)!=(c|0)){break a}H[b+5|0]=K[b+5|0]|4;return}J[b+8>>2]=J[a+36>>2];break b}J[b+24>>2]=J[a+36>>2];break b}J[b+108>>2]=J[a+36>>2];break b}J[b+68>>2]=J[a+36>>2]}J[a+36>>2]=b}}function Oia(a){a=a|0;var b=0,c=0,d=0,e=0;b=J[a+80>>2];c=J[b+68>>2];d=J[b+72>>2];if((c|0)==(d|0)){io(6018,J[65014],c);return-1e3}a:{b:{e=J[b+64>>2];if(e){if(d>>>0>=c>>>0){break b}J[b+72>>2]=d+1;d=J[(d<<2)+e>>2];c=J[b+52>>2];b=J[b+48>>2];if(d>>>0>=(c-b|0)/48>>>0){break a}c=J[a+20>>2];e=J[a+16>>2];b=b+P(d,48)|0;N[b+8>>2]=N[a+24>>2];J[b>>2]=e;J[b+4>>2]=c;N[b+16>>2]=N[a+32>>2];N[b+20>>2]=N[a+36>>2];N[b+24>>2]=N[a+40>>2];N[b+28>>2]=N[a+44>>2];J[b+32>>2]=J[a+76>>2];I[b+36>>1]=L[b+36>>1]&65534;J[J[a+88>>2]>>2]=b;return 0}Z(49493,54340,151,43112);B()}Z(2701,54340,152,43112);B()}Z(145396,53895,487,84789);B()}function Vu(a,b){var c=0,d=0,e=0;if(!b){return}a:{b:{c:{d:{if(!(K[a+2504|0]&4)){break d}c=L[b+20>>1]+1|0;I[b+20>>1]=c;if((c|0)!=(c&65535)){break d}e=b+8|0;c=b+4|0;d=J[b+4>>2];if((d|0)==J[b+8>>2]){if(H[b+12|0]&1){break c}lj((d-J[b>>2]>>2)+4|0,4,b,e,c)}d=J[a+2480>>2];a=0;e:{f:{switch(J[b+16>>2]){case 0:a=Zi[J[79391]](d,0,0,1)|0;break e;case 1:break f;default:break e}}a=Zi[J[79397]](d,0,0,1)|0}d=J[e>>2];e=J[c>>2];if((d|0)==(e|0)){break b}J[c>>2]=e+4;J[e>>2]=a}if(L[b+20>>1]>=J[b+4>>2]-J[b>>2]>>2>>>0){break a}return}Z(151729,53895,501,2284);B()}Z(112520,53895,557,53220);B()}Z(145396,53895,487,84789);B()}function Rea(a){a=a|0;var b=0,c=0,d=0;c=Ui-16|0;Ui=c;J[c+8>>2]=0;J[c>>2]=0;J[c+4>>2]=0;d=-13;a:{if(dk(J[a+20>>2],J[a+24>>2],J[57874],c,0)){break a}b:{b=J[a>>2];d=wk(b,J[J[c>>2]+108>>2],c|4);if(d){break b}if(J[J[J[c+4>>2]>>2]+168>>2]){dj(4,88458,150760,0);d=-15;break b}d=wk(b,J[J[c>>2]+104>>2],c+8|0);if(d){break b}d=J[a>>2];a=J[J[a+36>>2]+8>>2];b=J[a>>2];if(b){Uj(b)}b=J[a+4>>2];if(b){vj(d,b)}b=J[a+8>>2];if(b){vj(d,b)}d=J[c+4>>2];J[a>>2]=J[c>>2];J[a+4>>2]=d;J[a+8>>2]=J[c+8>>2];d=0;break a}a=J[a>>2];b=J[c>>2];if(b){Uj(b)}b=J[c+4>>2];if(b){vj(a,b)}b=J[c+8>>2];if(!b){break a}vj(a,b)}Ui=c+16|0;return d|0}function QL(a){var b=0,c=0,d=0,e=0,f=0,g=0,h=0,i=0,j=0,k=0,l=0,m=0;i=J[a+4>>2];if(i){k=J[a>>2];while(1){b=J[(e<<2)+k>>2];if((b|0)!=-1){l=J[a+8>>2];while(1){f=P(b,24)+l|0;d=J[f+12>>2];a:{if(!d){break a}j=J[f+8>>2];g=0;b=0;if(d>>>0>=8){m=d&-8;h=0;while(1){c=(b<<3)+j|0;J[c+4>>2]=0;J[c+12>>2]=0;J[c+20>>2]=0;J[c+28>>2]=0;J[c+36>>2]=0;J[c+44>>2]=0;J[c+52>>2]=0;J[c+60>>2]=0;b=b+8|0;h=h+8|0;if((m|0)!=(h|0)){continue}break}}c=d&7;if(!c){break a}while(1){J[((b<<3)+j|0)+4>>2]=0;b=b+1|0;g=g+1|0;if((c|0)!=(g|0)){continue}break}}b=J[f+20>>2];if((b|0)!=-1){continue}break}}e=e+1|0;if((i|0)!=(e|0)){continue}break}}}function Cs(a,b,c){var d=Q(0),e=0,f=0;e=Ui-16|0;Ui=e;f=K[a+60|0]&4;a:{b:{c:{switch(b|0){case 0:d=N[c>>2];d=d>2]=d;J[a+16>>2]=0}N[a+24>>2]=d;a=0;break b;case 1:d=N[c>>2];d=d>Q(1)?Q(1):d;d=Q(Q((d>2]=d;J[a+28>>2]=0}N[a+36>>2]=d;a=0;break b;case 2:d=N[c>>2];d=d>Q(5)?Q(5):d;N[a+40>>2]=d>2];a=L[a+58>>1];if(a>>>0>=(J[f+52>>2]-c|0)/40>>>0){break a}a=c+P(a,40)|0;J[e+4>>2]=tj(J[a>>2],J[a+4>>2]);J[e>>2]=b;dj(4,96825,158423,e);a=-6}Ui=e+16|0;return a}Z(145396,53895,487,84789);B()}function lma(a){a=a|0;var b=0,c=0,d=0,e=0,f=Q(0),g=Q(0),h=Q(0),i=0;c=Ui-48|0;Ui=c;i=pj(c+28|0,a,0,36839,138);b=qj(a,1,J[79308],3640);d=J[b+8>>2];e=J[b+12>>2];a:{if(!(d|e)){break a}if(xk(J[b+4>>2],d,e)){break a}J[c>>2]=tj(J[b+8>>2],J[b+12>>2]);fj(a,102051,c)}b=J[b>>2];Rn(c+20|0,a,2,N[59873]);Rn(c+12|0,a,3,N[59873]);if(J[b>>2]==2){a=L[b+4>>1];if(!(a&2)){J[b+144>>2]=0;I[b+4>>1]=a|2}f=N[c+24>>2];g=N[b+120>>2];h=N[c+20>>2];N[b+64>>2]=Q(g*h)+N[b+64>>2];N[b+68>>2]=Q(g*f)+N[b+68>>2];N[b+72>>2]=Q(N[b+128>>2]*Q(Q(f*Q(N[c+12>>2]-N[b+44>>2]))-Q(h*Q(N[c+16>>2]-N[b+48>>2]))))+N[b+72>>2]}oj(i);Ui=c+48|0;return 0}function hm(a,b){var c=0,d=0,e=0;c=Ui-32|0;Ui=c;a:{if(J[b+16>>2]!=J[b+20>>2]){Zn(a,b);break a}ln(a,b)}b:{c:{d:{e:{d=J[b>>2];switch(d-1|0){case 3:break d;case 0:case 1:case 2:case 4:break e;default:break c}}if(J[a+40>>2]>255){break c}f:{g:{switch(d-1|0){case 0:J[c+8>>2]=0;d=J[a+4>>2];J[c+24>>2]=5;J[c+16>>2]=d;a=At(a,c+16|0,c);break f;case 4:e=O[b+8>>3];J[c+24>>2]=3;O[c+16>>3]=e;d=a;a=c+16|0;a=At(d,a,a);break f;default:break g}}J[c+24>>2]=1;J[c+16>>2]=(d|0)==2;d=a;a=c+16|0;a=At(d,a,a)}J[b>>2]=4;J[b+8>>2]=a;a=a|256;break b}d=J[b+8>>2];if((d|0)>255){break c}a=d|256;break b}a=Zn(a,b)}Ui=c+32|0;return a}function eea(a){a=a|0;var b=0,c=0,d=0,e=0;c=Ui-16|0;Ui=c;b=nj(36);J[b+24>>2]=0;J[b+28>>2]=0;J[b>>2]=0;J[b+4>>2]=0;J[b+32>>2]=0;J[b+16>>2]=0;J[b+20>>2]=0;J[b+8>>2]=0;J[b+12>>2]=0;J[b+24>>2]=-1;J[b>>2]=J[a+24>>2];J[J[a+28>>2]+8>>2]=b;e=b+4|0;a:{d=J[b>>2];a=J[d+4>>2];b:{c:{if(a>>>0>J[b+20>>2]-J[b+12>>2]>>4>>>0){b=(a<<1>>>0)/3|0;$u(e,b>>>0<=1?1:b,a);J[c+12>>2]=0;break c}J[c+12>>2]=0;if(!a){break b}}b=0;while(1){if(M[d+4>>2]<=b>>>0){break a}b=J[d>>2]+P(b,192)|0;pl(e,J[b+8>>2],J[b+12>>2],c+12|0);b=J[c+12>>2]+1|0;J[c+12>>2]=b;if(a>>>0>b>>>0){continue}break}}Ui=c+16|0;return 0}Z(12664,55343,260,84789);B()}function Rl(a,b){var c=0,d=0;a:{if((b|0)>0){b=(J[a+12>>2]+(b<<4)|0)-16|0;c=b>>>0>=M[a+8>>2]?173288:b;break a}c=J[a+8>>2]+(b<<4)|0;if((b|0)>=-9999){break a}b:{switch(b+10002|0){case 2:c=J[a+16>>2]+96|0;break a;case 1:b=J[J[J[J[a+20>>2]+4>>2]>>2]+12>>2];J[a+96>>2]=5;J[a+88>>2]=b;c=a+88|0;break a;case 0:c=a+72|0;break a;default:break b}}c=J[J[J[a+20>>2]+4>>2]>>2];c=K[c+7|0]<-10002-b>>>0?173288:(c+(0-b<<4)|0)-160024|0}b=c;c=b+16|0;d=J[a+8>>2];if(c>>>0>>0){while(1){d=J[b+20>>2];J[b>>2]=J[b+16>>2];J[b+4>>2]=d;J[b+8>>2]=J[b+24>>2];b=c;c=b+16|0;d=J[a+8>>2];if(c>>>0>>0){continue}break}}J[a+8>>2]=d-16}function bW(a,b,c,d,e,f){a=a|0;b=b|0;c=c|0;d=d|0;e=e|0;f=f|0;var g=Q(0),h=Q(0),i=Q(0),j=Q(0),k=Q(0),l=Q(0),m=Q(0);if(J[b+44>>2]==(f|0)){if(f){m=Q(Q(1)/Q(f>>>0));d=J[b+4>>2];h=N[b+28>>2];i=Q(M[a+4>>2]);k=Q(Q(N[b+32>>2]-h)/i);l=Q(M[a>>2]);h=Q(Q(k*l)+h);k=Q(Q(k+h)-h);g=N[b+16>>2];j=Q(Q(N[b+20>>2]-g)/i);i=Q(Q(j*l)+g);l=Q(Q(j+i)-i);a=0;while(1){c=(a<<3)+e|0;g=Q(m*Q(a|0));j=Q(Q(Q(g*l)+i)*Q(Q(Q(K[a+d|0])+Q(-128))*Q(255)));g=Q(+Q(Q(g*k)+h)*1.5707963267948966);N[c>>2]=Q(j*Rj(g))+N[c>>2];N[c+4>>2]=Q(j*Hj(g))+N[c+4>>2];a=a+1|0;if((f|0)!=(a|0)){continue}break}}J[b+44>>2]=0;return}Z(11230,42316,1075,44e3);B()}function zga(a){a=a|0;var b=0,c=0,d=0,e=0,f=0,g=0,h=0;b=Ui+-64|0;Ui=b;g=pj(b+12|0,a,1,39481,1230);c=J[J[pk(a)+80>>2]+8>>2];J[b+8>>2]=0;J[b+4>>2]=0;J[b+56>>2]=0;J[b+60>>2]=0;J[b+48>>2]=0;J[b+52>>2]=0;J[b+40>>2]=0;J[b+44>>2]=0;J[b+32>>2]=0;J[b+36>>2]=0;Al(a,1,c,80935,b+8|0,b+32|0,b+4|0);h=a;a=0;c=J[J[b+8>>2]+8>>2];e=J[b+4>>2];if(H[e+145|0]&1){a=L[c+4>>1]}else{c=J[c+100>>2];if(!(!c|J[J[c+12>>2]+4>>2]==4)){a=L[J[c+40>>2]>>1]}}c=0;d=0;a:{if(!a){break a}if(!(a&1)){while(1){f=f+1|0;c=a&2;a=(a&65534)>>>1|0;if(!c){continue}break}}a=(f<<3)+e|0;c=J[a>>2];d=J[a+4>>2]}a=d;Bk(h,c,a);oj(g);Ui=b- -64|0;return 1}function ER(a,b){var c=0,d=0,e=0,f=0,g=0,h=0,i=0,j=0,k=0,l=0,m=0,n=0;d=Ui-32|0;Ui=d;a:{b:{f=J[b+84>>2];e=J[f+4>>2];c:{if(!e){c=1;break c}m=a+12|0;n=b+156|0;while(1){h=J[f>>2]+P(g,96)|0;c=J[h+16>>2];if(!c){break b}i=J[c+100>>2];k=((i&65536)>>>16|0)+j|0;if(k>>>0>M[b+152>>2]){break a}l=J[c+40>>2];if(l){e=J[a+8>>2];J[d+16>>2]=b;J[d+12>>2]=e;J[d+20>>2]=J[(J[h+20>>2]<<2)+m>>2];c=J[c+16>>2];J[d+28>>2]=(j<<2)+n&i<<15>>31;J[d+24>>2]=c;if(Zi[l|0](d+12|0)|0){c=0;break c}e=J[f+4>>2]}c=1;j=k;g=g+1|0;if(g>>>0>>0){continue}break}}Ui=d+32|0;return c}Z(63839,38296,1824,18148);B()}Z(12526,38296,1831,18148);B()}function Ct(a,b,c,d,e){var f=0,g=0,h=0,i=0;f=Ui-208|0;Ui=f;J[f+204>>2]=c;c=f+160|0;ij(c,0,40);J[f+200>>2]=J[f+204>>2];a:{if((UG(0,b,f+200|0,f+80|0,c,d,e)|0)<0){e=-1;break a}i=J[a+76>>2]<0;g=J[a>>2];J[a>>2]=g&-33;b:{c:{d:{if(!J[a+48>>2]){J[a+48>>2]=80;J[a+28>>2]=0;J[a+16>>2]=0;J[a+20>>2]=0;h=J[a+44>>2];J[a+44>>2]=f;break d}if(J[a+16>>2]){break c}}c=-1;if(hF(a)){break b}}c=UG(a,b,f+200|0,f+80|0,f+160|0,d,e)}if(h){Zi[J[a+36>>2]](a,0,0)|0;J[a+48>>2]=0;J[a+44>>2]=h;J[a+28>>2]=0;b=J[a+20>>2];J[a+16>>2]=0;J[a+20>>2]=0;c=b?c:-1}b=a;a=J[a>>2];J[b>>2]=a|g&32;e=a&32?-1:c;if(i){break a}}Ui=f+208|0;return e}function BU(a,b,c,d,e,f,g,h){var i=0,j=0,k=0,l=0,m=0,n=0;f=f<<2|f>>>4;i=c<<2|c>>>4;c=f-i|0;e=e<<3|e>>>2;j=b<<3|b>>>2;b=e-j|0;g=g<<3|g>>>2;k=d<<3|d>>>2;d=g-k|0;l=(P(c,(i+(f<<1)>>>0)/3|0)+P(b,(j+(e<<1)>>>0)/3|0)|0)+P(d,((g<<1)+k>>>0)/3|0)|0;m=(P(c,(f+(i<<1)>>>0)/3|0)+P(b,(e+(j<<1)>>>0)/3|0)|0)+P(d,(g+(k<<1)>>>0)/3|0)|0;n=l+m|0;e=((P(c,f)+P(b,e)|0)+P(d,g)|0)+l|0;f=((P(c,i)+P(b,j)|0)+P(d,k)|0)+m|0;g=c<<1;i=b<<1;d=d<<1;c=0;while(1){b=(c<<2)+a|0;b=(P(g,K[b+1|0])+P(K[b|0],i)|0)+P(d,K[b+2|0])|0;H[c+h|0]=K[((((b|0)<=(f|0))+((b|0)<(n|0))|0)+((b|0)<(e|0))|0)+158819|0];c=c+1|0;if((c|0)!=16){continue}break}}function w2(a){a=a|0;var b=0,c=0,d=0,e=0,f=0;if(a){b=px(a);if(b){f=J[215668];c=a?J[a>>2]:0;d=J[c+124>>2];e=J[d+8>>2];J[e+8>>2]=3;O[e>>3]=f|0;J[d+8>>2]=J[d+8>>2]+16;c=J[c+124>>2];d=J[c+8>>2];J[d+8>>2]=2;J[d>>2]=0;J[c+8>>2]=J[c+8>>2]+16;RJ(a);a:{if(!(H[b+82|0]&1)){b:{if(H[b+76|0]&1){break b}a=J[b+64>>2];if(!a){break b}cj(a)}cj(J[b+52>>2]);c:{if(H[b+44|0]&1){break c}a=J[b+32>>2];if(!a){break c}cj(a)}d:{if(H[b+28|0]&1){break d}a=J[b+16>>2];if(!a){break d}cj(a)}e:{if(H[b+12|0]&1){break e}a=J[b>>2];if(!a){break e}cj(a)}cj(b);break a}Z(113057,39844,176,71941);B()}}return}Z(111353,39844,456,71872);B()}function gG(a){var b=0,c=0,d=0,e=0;e=Ui-16|0;Ui=e;c=(C(a),v(2));b=c&2147483647;a:{if(b>>>0<=1061752794){if(b>>>0<964689920){break a}a=Dt(+a,0);break a}if(b>>>0<=1081824209){d=+a;if(b>>>0<=1075235811){a=Dt(((c|0)<0?1.5707963267948966:-1.5707963267948966)+d,1);break a}a=Dt(((c|0)<0?3.141592653589793:-3.141592653589793)+d,0);break a}if(b>>>0<=1088565717){d=+a;if(b>>>0<=1085271519){a=Dt(((c|0)<0?4.71238898038469:-4.71238898038469)+d,1);break a}a=Dt(((c|0)<0?6.283185307179586:-6.283185307179586)+d,0);break a}if(b>>>0>=2139095040){a=Q(a-a);break a}b=jF(a,e+8|0);a=Dt(O[e+8>>3],b&1)}Ui=e+16|0;return a}function CA(a){var b=0;J[a>>2]=0;J[a+12>>2]=0;J[a+4>>2]=1;J[a+8>>2]=0;J[a+24>>2]=0;J[a+16>>2]=1;J[a+20>>2]=0;J[a+36>>2]=0;J[a+28>>2]=1;J[a+32>>2]=0;J[a+48>>2]=0;J[a+40>>2]=1;J[a+44>>2]=0;J[a+60>>2]=0;J[a+52>>2]=1;J[a+56>>2]=0;b=a- -64|0;J[b+8>>2]=0;J[b>>2]=1;J[b+4>>2]=0;J[a+84>>2]=0;J[a+76>>2]=1;J[a+80>>2]=0;J[a+120>>2]=0;J[a+112>>2]=0;J[a+116>>2]=0;J[a+104>>2]=0;J[a+108>>2]=0;J[a+96>>2]=0;J[a+100>>2]=0;J[a+88>>2]=0;J[a+92>>2]=0;J[a+132>>2]=0;J[a+124>>2]=1;J[a+128>>2]=0;J[a+144>>2]=0;J[a+136>>2]=1;J[a+140>>2]=0;J[a+156>>2]=0;J[a+148>>2]=1;J[a+152>>2]=0;J[a+168>>2]=0;J[a+160>>2]=1;J[a+164>>2]=0}function bla(a){a=a|0;var b=0,c=0,d=0,e=0;b=Ui-80|0;Ui=b;c=J[a+4>>2];d=J[a+12>>2];a=J[J[a+16>>2]>>2];H[b+29|0]=0;H[b+30|0]=0;H[b+31|0]=0;H[b+32|0]=0;H[b+33|0]=0;H[b+34|0]=0;H[b+35|0]=0;H[b+36|0]=0;J[b+24>>2]=0;J[b+28>>2]=0;J[b+16>>2]=0;J[b+20>>2]=0;Gx(d,J[a+4>>2],b);c=J[c>>2];N[b+16>>2]=N[c>>2];N[b+20>>2]=N[c+4>>2];N[b+24>>2]=N[c+8>>2];N[b+28>>2]=N[c+12>>2];e=K[b+36|0]&-2|J[c+16>>2]!=0;H[b+36|0]=e;H[b+36|0]=e&253|(J[c+20>>2]!=0)<<1;N[b+32>>2]=N[c+24>>2];xq(d,J[a+4>>2],b);c=b- -64|0;yn(c,J[a>>2]);e=b+48|0;jt(e,J[a>>2]);Cx(d,J[a+4>>2],c,e);kC(d,J[a+4>>2],a+16|0);lC(d,J[a+4>>2],a+80|0);Ui=b+80|0}function YG(a,b,c,d,e){var f=0,g=0,h=0,i=0,j=0,k=0,l=0;a:{if((b|0)==-1){break a}k=d<<6&16320;l=(d|0)==255;while(1){i=J[J[a>>2]+12>>2]+(b<<2)|0;h=J[i>>2];j=h>>>14|0;b:{if((b|0)>0){g=i-4|0;f=J[g>>2];if(H[(f&63)+173568|0]<0){break b}}f=h;g=i}j=j-131071|0;c:{d:{e:{if((f&63)==27){if((f>>>23|0)==(d|0)|l){h=f>>>17&32704|f&8372250}else{h=f&-16357|k}J[g>>2]=h;f=(b^-1)+c|0;g=f>>31;if((f^g)-g>>>0>131071){break e}break d}f=(b^-1)+e|0;g=f>>31;if((f^g)-g>>>0<131072){break c}}qk(J[a+12>>2],56034)}h=J[i>>2]}J[i>>2]=(h&16383|f<<14)+2147467264;if((j|0)==-1){break a}b=(b+j|0)+1|0;if((b|0)!=-1){continue}break}}}function LL(a,b,c){var d=0,e=Q(0),f=Q(0),g=0,h=Q(0),i=Q(0),j=Q(0),k=Q(0);d=Ui-80|0;Ui=d;J[d+76>>2]=0;a:{if(((K[b+4|0]&32)>>>5|0)==(c|0)){break a}bF(b,c);g=L[b+4>>1];if(c){if(!(g&2)){J[b+144>>2]=0;I[b+4>>1]=g|2}c=J[a+103108>>2];if(!c){break a}Zi[c|0](J[b+148>>2],d+16|0);e=N[d+20>>2];f=N[d+16>>2];h=N[d+24>>2];j=N[d+28>>2];k=N[d+32>>2];i=N[J[a+36>>2]+64>>2];N[d+12>>2]=N[d+36>>2]*i;N[d+8>>2]=k*i;f=Q(Q(j*h)+Q(f*e));e=Q(Q(e*e)+Q(h*h));aF(b,d+8|0,rp(Q(f+f),Q(Q(1)-Q(e+e))));break a}J[b+144>>2]=0;J[b+64>>2]=0;J[b+68>>2]=0;I[b+4>>1]=g&65533;J[b+72>>2]=0;J[b+76>>2]=0;J[b+80>>2]=0;J[b+84>>2]=0}Ui=d+80|0}function M1(a){a=a|0;var b=0,c=Q(0),d=0,e=Q(0),f=Q(0),g=Q(0);d=Ui-48|0;Ui=d;b=J[a+8>>2]-J[a+12>>2]>>4;a:{if(!b){break a}if((b|0)==1){if((kj(a,-1)|0)==3){c=Q(ok(a,-1));f=c;g=c;e=c;break a}b=qj(a,-1,J[215721],0);g=N[b+8>>2];c=N[b>>2];f=N[b+4>>2];if(!(c!=c|f!=f|g!=g)){e=N[b+12>>2];if(e==e){break a}}e=N[b+12>>2];O[d+24>>3]=g;O[d+16>>3]=f;O[d+32>>3]=e;O[d+8>>3]=c;J[d>>2]=-1;fj(a,138642,d);e=N[b+12>>2];g=N[b+8>>2];f=N[b+4>>2];c=N[b>>2];break a}c=Q(wj(a,1));f=Q(wj(a,2));g=Q(wj(a,3));e=Q(wj(a,4))}b=Sj(a,16);N[b+12>>2]=e;N[b+8>>2]=g;N[b+4>>2]=f;N[b>>2]=c;rj(a,-1e4,106998);Mj(a,-2);Ui=d+48|0;return 1}function yP(a,b,c,d,e){var f=0,g=0,h=0;g=Ui-48|0;Ui=g;J[g+40>>2]=b;J[g+44>>2]=c;f=g+20|0;J[f>>2]=0;J[f+4>>2]=0;J[f+16>>2]=0;J[f+8>>2]=0;J[f+12>>2]=0;Ek(f,g+40|0,8);Ek(f,d,e<<4);f=mn(f);J[g+8>>2]=f;J[g+12>>2]=0;h=a+16|0;d=J[a+20>>2];a:{b:{if(!d){break b}e=J[J[h>>2]+(mxa(b,c,d)<<2)>>2];if((e|0)==-1){break b}d=J[a+24>>2];while(1){e=P(e,24)+d|0;if(J[e>>2]!=(b|0)|J[e+4>>2]!=(c|0)){e=J[e+16>>2];if((e|0)!=-1){continue}break b}break}if(!J[e+12>>2]&(f|0)==J[e+8>>2]){break a}}H[a+52|0]=1;d=J[a+24>>2]}d=(J[a+32>>2]-d|0)/24|0;a=J[a+40>>2];if((d|0)==(a|0)){a=a+8|0;Us(h,a,a<<1)}_u(h,b,c,g+8|0);Ui=g+48|0}function d7(a,b,c,d,e){a=a|0;b=b|0;c=Q(c);d=d|0;e=e|0;var f=Q(0),g=0,h=Q(0),i=Q(0),j=Q(0),k=0,l=0,m=Q(0);d=Ui-784|0;Ui=d;g=J[a+8>>2];k=J[g+4>>2];if(k){f=N[g+20>>2];c=Q(c*f);h=Q(f*N[b>>2]);f=Q(f*N[b+4>>2]);i=Q(1);a=0;while(1){l=d+16|0;b=l+P(a,48)|0;J[b+8>>2]=0;N[b+4>>2]=f;N[b>>2]=h;N[b+16>>2]=h+Q(c*i);J[b+24>>2]=0;N[b+20>>2]=f+Q(c*m);J[b+40>>2]=0;j=Q(j+Q(.39269909262657166));m=Hj(j);N[b+36>>2]=f+Q(c*m);i=Rj(j);N[b+32>>2]=h+Q(c*i);a=a+1|0;if((a|0)!=16){continue}break}a=J[e+4>>2];b=J[e>>2];c=N[e+8>>2];N[d+12>>2]=N[g+12>>2];N[d+8>>2]=c;J[d>>2]=b;J[d+4>>2]=a;Zi[k|0](l,48,d,J[g+8>>2])}Ui=d+784|0}function X5(a){a=a|0;var b=0,c=0,d=0,e=0;d=Ui-80|0;Ui=d;e=pj(d+60|0,a,0,37616,2663);b=J[a+8>>2]-J[a+12>>2]|0;Bj(a);c=qj(a,-1,J[84364],139081);gj(a,-2);if(b>>4==J[a+8>>2]-J[a+12>>2]>>4){a=d+16|0;J[a>>2]=22;b=J[c+4>>2];a:{if((b|0)!=J[c+8>>2]){J[c+4>>2]=b+40;c=J[a+36>>2];J[b+32>>2]=J[a+32>>2];J[b+36>>2]=c;c=J[a+28>>2];J[b+24>>2]=J[a+24>>2];J[b+28>>2]=c;c=J[a+20>>2];J[b+16>>2]=J[a+16>>2];J[b+20>>2]=c;c=J[a+12>>2];J[b+8>>2]=J[a+8>>2];J[b+12>>2]=c;c=J[a+4>>2];J[b>>2]=J[a>>2];J[b+4>>2]=c;a=0;break a}J[d>>2]=(b-J[c>>2]|0)/40;a=Jj(e,132935,d)}oj(e);Ui=d+80|0;return a|0}Z(143244,37616,478,51340);B()}function Aaa(a,b,c,d){a=a|0;b=b|0;c=c|0;d=d|0;var e=0,f=0,g=0;e=Ui-16|0;Ui=e;J[e+12>>2]=0;a:{b:{c:{d:{e:{if(!a){break e}f=J[79491];g=J[f+108>>2];a=J[a>>2];if(a>>>0>=J[f+112>>2]-g>>2>>>0){break d}ba(34962,J[g+(a<<2)>>2]);if(K[J[79491]+220|0]&2){a=_()|0;if(a){break c}}lb(34962,b|0,c|0,d|0);if(K[J[79491]+220|0]&2){a=_()|0;if(a){break b}}ba(34962,0);if(!(K[J[79491]+220|0]&2)){break e}a=_()|0;if(a){break a}}Ui=e+16|0;return}Z(145396,53895,487,84789);B()}Cj(a,83880,1728);Z(114101,40535,1728,83880);B()}Cj(a,83880,1730);Z(114101,40535,1730,83880);B()}Cj(a,83880,1732);Z(114101,40535,1732,83880);B()}function lP(a){var b=Q(0),c=Q(0),d=0,e=0,f=0,g=0;b=Q(a>>>0);a=(C(b),v(2));c=Q(0);a:{if((a|0)==1065353216){break a}b:{if(a-2139095040>>>0<=2164260863){d=a<<1;if(!d){a=Ui-16|0;N[a+12>>2]=-1;c=Q(N[a+12>>2]/Q(0));break a}if((a|0)==2139095040){break b}if(!(d>>>0<4278190080&(a|0)>=0)){b=Q(b-b);c=Q(b/b);break a}a=(C(Q(b*Q(8388608))),v(2))-192937984|0}f=a-1060306944|0;d=f>>>15&240;e=+(x(2,a-(f&-8388608)|0),D())*O[d+204048>>3]+-1;g=e*e;b=Q((O[25538]*g+(O[25539]*e+O[25540]))*g+(O[25541]*e+(O[d+204056>>3]+ +(f>>23))))}c=b}b=Q(V(c));c:{if(b=Q(0)){a=~~b>>>0;break c}a=0}return a+1&255}function j7(a){a=a|0;var b=0;J[a>>2]=243672;b=J[a+92>>2];if(!(b?!b|K[a+96|0]!=1:1)){J[83765]=J[83765]+1;Zi[J[61751]](J[b-4>>2])}J[a+92>>2]=0;H[a+96|0]=1;J[a+84>>2]=0;J[a+88>>2]=0;b=J[a+72>>2];if(!(b?!b|K[a+76|0]!=1:1)){J[83765]=J[83765]+1;Zi[J[61751]](J[b-4>>2])}J[a+72>>2]=0;H[a+76|0]=1;J[a+64>>2]=0;J[a+68>>2]=0;b=J[a+52>>2];if(!(b?!b|K[a+56|0]!=1:1)){J[83765]=J[83765]+1;Zi[J[61751]](J[b-4>>2])}J[a+52>>2]=0;H[a+56|0]=1;J[a+44>>2]=0;J[a+48>>2]=0;b=J[a+32>>2];if(!(b?!b|K[a+36|0]!=1:1)){J[83765]=J[83765]+1;Zi[J[61751]](J[b-4>>2])}J[a+32>>2]=0;H[a+36|0]=1;J[a+24>>2]=0;J[a+28>>2]=0;return a|0}function xca(a){a=a|0;var b=0,c=0,d=0,e=0,f=0;b=Ui-96|0;Ui=b;e=J[a+8>>2]-J[a+12>>2]|0;pk(a);d=mk(a,2);f=Yi;c=Qm(a,3);J[b+64>>2]=d;J[b+68>>2]=f;N[b+80>>2]=N[c>>2];N[b+84>>2]=N[c+4>>2];N[b+88>>2]=N[c+8>>2];N[b+92>>2]=N[c+12>>2];J[b+56>>2]=0;J[b+60>>2]=0;J[b+48>>2]=0;J[b+52>>2]=0;J[b+40>>2]=0;J[b+44>>2]=0;J[b+32>>2]=0;J[b+36>>2]=0;J[b+24>>2]=0;J[b+28>>2]=0;J[b+16>>2]=0;J[b+20>>2]=0;J[b+8>>2]=0;J[b+12>>2]=0;J[b>>2]=0;J[b+4>>2]=0;d=b+32|0;Sk(a,1,d,b);c=J[59596];Jk(b,d,J[c+8>>2],J[c+12>>2],0,0,c,b- -64|0,32,0);if(e>>4!=J[a+8>>2]-J[a+12>>2]>>4){Z(143244,40250,128,14202);B()}Ui=b+96|0;return 0}function i4(a){a=a|0;var b=0,c=0,d=0;b=Ui-144|0;Ui=b;d=J[a+8>>2]-J[a+12>>2]|0;hS(Aj(a,1,b+140|0),J[b+140>>2],b+112|0);J[b+16>>2]=K[b+116|0];J[b+20>>2]=K[b+117|0];J[b+24>>2]=K[b+118|0];J[b+28>>2]=K[b+119|0];J[b+32>>2]=K[b+120|0];J[b+36>>2]=K[b+121|0];J[b+40>>2]=K[b+122|0];J[b+44>>2]=K[b+123|0];J[b+48>>2]=K[b+124|0];J[b+52>>2]=K[b+125|0];J[b+56>>2]=K[b+126|0];J[b+60>>2]=K[b+127|0];J[b>>2]=K[b+112|0];J[b+4>>2]=K[b+113|0];J[b+8>>2]=K[b+114|0];J[b+12>>2]=K[b+115|0];c=b- -64|0;Gj(c,33,6134,b);xj(a,c);if(((d>>4)+1|0)!=J[a+8>>2]-J[a+12>>2]>>4){Z(143334,41058,140,106675);B()}Ui=b+144|0;return 1}function cH(a,b){var c=0,d=0;if(!a){return}a:{c=J[a+72>>2];b:{if(!c|!J[a+40>>2]){break b}d=J[a+44>>2];if(!d){break b}if(J[a+20>>2]==1){break a}}if(!b){return}J[a+28>>2]=24;return}J[a+72>>2]=0;Zi[d|0](J[a+52>>2],J[c>>2]);J[c+8>>2]=0;J[c+12>>2]=0;J[c>>2]=0;J[c+4>>2]=0;Zi[J[a+44>>2]](J[a+52>>2],J[c+16>>2]);J[c+24>>2]=0;J[c+28>>2]=0;J[c+16>>2]=0;J[c+20>>2]=0;Zi[J[a+44>>2]](J[a+52>>2],J[c+32>>2]);J[c+40>>2]=0;J[c+44>>2]=0;J[c+32>>2]=0;J[c+36>>2]=0;d=J[c+60>>2];if(d){c:{if(J[a+24>>2]!=4){break c}if(!b|(vk(d)|0)!=-1){break c}J[a+28>>2]=21}J[c+60>>2]=0}Zi[J[a+44>>2]](J[a+52>>2],c);J[a+20>>2]=0}function QJ(a,b,c){var d=0,e=0;d=Ui+-64|0;Ui=d;a:{if(K[J[a+8>>2]]){e=J[a+20>>2];J[d+56>>2]=J[a+4>>2];J[d+52>>2]=e;J[d+48>>2]=a+36;a=Gj(b,c,154680,d+48|0);break a}b:{c:{d:{e:{e=K[J[a+12>>2]];switch(e-109|0){case 7:break b;case 1:case 2:case 3:case 4:case 5:case 6:break c;case 0:break e;default:break d}}J[d+20>>2]=J[a+20>>2];J[d+16>>2]=a+36;a=Gj(b,c,154932,d+16|0);break a}if((e|0)==67){break b}}e=J[a+20>>2];J[d+12>>2]=J[a+28>>2];a=a+36|0;J[d+8>>2]=a;J[d+4>>2]=e;J[d>>2]=a;a=Gj(b,c,155340,d);break a}J[d+36>>2]=J[a+20>>2];J[d+32>>2]=a+36;a=Gj(b,c,155328,d+32|0)}Ui=d- -64|0;return(a|0)>0?a:0}function UM(a,b,c,d){var e=0,f=0,g=0;f=Ui-32|0;Ui=f;e=f+12|0;J[e>>2]=0;J[e+4>>2]=0;J[e+16>>2]=0;J[e+8>>2]=0;J[e+12>>2]=0;if(!NJ(b,e,1,1)){g=nj(67752);e=ij(g,0,67752);b=Gk(b);J[e+2128>>2]=0;J[e>>2]=b;J[e+2132>>2]=J[a>>2];J[e+2136>>2]=J[a+4>>2];J[e+2140>>2]=J[a+8>>2];J[e+2144>>2]=J[a+12>>2];J[e+2148>>2]=J[a+16>>2];J[e+2152>>2]=J[a+20>>2];J[e+2156>>2]=J[a+28>>2];b=J[a+32>>2];J[e+2168>>2]=0;J[e+2172>>2]=0;J[e+2160>>2]=b;b=e+2176|0;J[b>>2]=0;J[b+4>>2]=0;b=e+2184|0;J[b>>2]=0;J[b+4>>2]=0;a=J[a+24>>2];J[e+2204>>2]=0;I[e+2198>>1]=c;H[e+2196|0]=d;J[e+2192>>2]=a;H[e+2200|0]=!a}Ui=f+32|0;return g}function m4(a){a=a|0;var b=0,c=0,d=Q(0),e=Q(0),f=Q(0),g=0,h=Q(0),i=Q(0),j=Q(0);b=Ui+-64|0;Ui=b;c=qj(a,1,J[215720],0);d=N[c+8>>2];e=N[c>>2];f=N[c+4>>2];if(!(!(e!=e|f!=f)&d==d)){O[b+56>>3]=d;O[b+48>>3]=f;J[b+32>>2]=1;O[b+40>>3]=e;fj(a,138436,b+32|0)}g=qj(a,2,J[215720],0);d=N[g+8>>2];e=N[g>>2];f=N[g+4>>2];if(!(!(e!=e|f!=f)&d==d)){O[b+24>>3]=d;O[b+16>>3]=f;J[b>>2]=2;O[b+8>>3]=e;fj(a,138436,b);d=N[g+8>>2];f=N[g+4>>2];e=N[g>>2]}h=N[c+4>>2];i=N[c>>2];j=N[c+8>>2];c=Sj(a,16);N[c+8>>2]=Q(i*f)-Q(h*e);N[c+4>>2]=Q(j*e)-Q(i*d);N[c>>2]=Q(h*d)-Q(j*f);rj(a,-1e4,108973);Mj(a,-2);Ui=b- -64|0;return 1}function cW(a,b,c,d,e,f){a=a|0;b=b|0;c=c|0;d=d|0;e=e|0;f=f|0;var g=Q(0),h=Q(0),i=Q(0),j=Q(0),k=Q(0),l=Q(0),m=Q(0);if(J[b+44>>2]==(f|0)){if(f){m=Q(Q(1)/Q(f>>>0));d=J[b+4>>2];h=N[b+28>>2];i=Q(M[a+4>>2]);k=Q(Q(N[b+32>>2]-h)/i);l=Q(M[a>>2]);h=Q(Q(k*l)+h);k=Q(Q(k+h)-h);g=N[b+16>>2];j=Q(Q(N[b+20>>2]-g)/i);i=Q(Q(j*l)+g);l=Q(Q(j+i)-i);a=0;while(1){c=(a<<3)+e|0;g=Q(m*Q(a|0));j=Q(Q(Q(g*l)+i)*Q(I[(a<<1)+d>>1]));g=Q(+Q(Q(g*k)+h)*1.5707963267948966);N[c>>2]=Q(j*Rj(g))+N[c>>2];N[c+4>>2]=Q(j*Hj(g))+N[c+4>>2];a=a+1|0;if((f|0)!=(a|0)){continue}break}}J[b+44>>2]=0;return}Z(11230,42316,1075,44e3);B()}function dv(a,b){var c=0,d=0,e=0;a:{c=L[b+652>>1];b:{if((c|0)==65535){e=L[b+654>>1];break b}e=J[a+32>>2];if(c>>>0>=(J[a+36>>2]-e|0)/672>>>0){break a}d=e+P(c,672)|0;e=L[b+654>>1];I[d+654>>1]=e}if((e|0)!=65535){d=J[a+32>>2];if((J[a+36>>2]-d|0)/672>>>0<=e>>>0){break a}I[(d+P(e,672)|0)+652>>1]=c}c=L[b+656>>1];c:{if((c|0)!=65535){d=J[a+36>>2];a=J[a+32>>2];if(c>>>0>=(d-a|0)/672>>>0){break a}a=a+P(c,672)|0;c=a+660|0;d=a+658|0;break c}c=a+366|0;d=a+364|0}a=L[b+650>>1];if((a|0)==L[d>>1]){I[d>>1]=e;a=L[b+650>>1]}if(L[c>>1]==(a&65535)){I[c>>1]=L[b+652>>1]}return}Z(145396,53895,487,84789);B()}function E8(a){a=a|0;var b=0,c=0,d=0,e=0,f=0,g=0,h=0,i=0;c=Ui-16|0;Ui=c;h=J[a+8>>2]-J[a+12>>2]>>4;Bj(a);b=qj(a,-1,J[219396],139183);gj(a,-2);Qj(a,1,c+12|0);a:{if(Mk(a,2)){e=bj(Ij(a,2,0));f=Yi;break a}e=Tl(a,2);f=Yi}b:{c:{d:{g=J[c+12>>2];d=g&65535;i=J[b+36>>2];b=J[b+32>>2];if(d>>>0<(i-b|0)/672>>>0){b=b+P(d,672)|0;if(L[b+648>>1]!=(g>>>16|0)){break d}if(L[b+650>>1]!=(d|0)){break c}J[b+640>>2]=e;J[b+644>>2]=f;break b}Z(145396,53895,487,84789);B()}Z(47372,40876,188,69601);B()}Z(5388,40876,189,69601);B()}if(J[a+8>>2]-J[a+12>>2]>>4!=(h|0)){Z(143244,37682,640,76481);B()}Ui=c+16|0;return 0}function gja(a,b){a=a|0;b=b|0;var c=0,d=0,e=0,f=0,g=0,h=0;e=nj(12);J[e+4>>2]=J[a+4>>2];g=bj(35504);f=J[a+24>>2];h=Yi;c=J[J[a+16>>2]+(mxa(g,h,J[a+20>>2])<<2)>>2];d=f+(c<<4)|0;if((g|0)!=J[d>>2]|J[d+4>>2]!=(h|0)){while(1){c=J[((c<<4)+f|0)+12>>2];d=(c<<4)+f|0;if((g|0)!=J[d>>2]|(h|0)!=J[d+4>>2]){continue}break}}J[e>>2]=J[((c<<4)+f|0)+8>>2];J[e+8>>2]=ak(J[a>>2],10994,128);I[b+104>>1]=725;J[b+16>>2]=e;J[b+20>>2]=287;J[b+24>>2]=288;J[b+28>>2]=289;J[b+32>>2]=290;J[b+44>>2]=291;J[b+52>>2]=292;J[b+60>>2]=293;J[b+68>>2]=294;J[b+84>>2]=295;J[b+88>>2]=296;J[b+48>>2]=297;J[b+96>>2]=298;return 0}function Kba(a,b,c,d,e){a=a|0;b=b|0;c=c|0;d=d|0;e=e|0;var f=0,g=0,h=0;a:{b:{if(b>>>0<2097152){c:{if(a+1>>>0<2){break c}b=a&65535;g=J[79491];if(b>>>0>=M[g+100>>2]){break b}h=J[J[g+92>>2]+(b<<2)>>2];if(!h){break c}f=L[J[g+96>>2]+(b<<1)>>1]==(a>>>16|0)?h:0}d:{if(!(!(1<>>0>8)){a=Up(c);if(a>>>0>=4){break a}a=(a<<6)+f|0;break d}a=f+384|0;if(J[f+440>>2]){break d}a=c-16|0;if(a){if((a|0)==16){a=f+320|0;break d}Z(114101,40535,3671,59557);B()}a=f+256|0}J[d>>2]=L[a+40>>1];J[e>>2]=L[a+42>>1];return}Z(94863,55553,306,33926);B()}Z(2686,54166,244,5438);B()}Z(88705,40535,3654,59557);B()}function fna(a){a=a|0;var b=0,c=0,d=0,e=0,f=0,g=0;d=Ui-16|0;Ui=d;c=J[a+4>>2];f=-13;if(!dk(J[a+20>>2],J[a+24>>2],J[54914],d+12|0,0)){b=nj(24);J[b>>2]=0;J[b+4>>2]=0;J[b+16>>2]=0;J[b+20>>2]=0;J[b+8>>2]=0;J[b+12>>2]=0;f=QR(J[a>>2],c,J[d+12>>2],b,J[a+16>>2]);a:{if(!f){c=J[J[a+36>>2]+8>>2];e=J[c>>2];g=J[c+4>>2];J[c>>2]=J[b>>2];J[c+4>>2]=J[b+4>>2];J[b>>2]=e;J[b+4>>2]=g;J[J[a+36>>2]+12>>2]=b;break a}c=J[a>>2];if(J[b+4>>2]){a=0;while(1){e=J[b>>2]+P(a,96)|0;vj(c,J[e+24>>2]);ll(J[e+88>>2]);a=a+1|0;if(a>>>0>2]){continue}break}}Iq(c,b+8|0);cj(Dy(b))}Uj(J[d+12>>2])}Ui=d+16|0;return f|0}function YO(a,b){var c=0,d=0,e=0,f=0;d=Ui-16|0;Ui=d;e=jb()|0;a:{b:{if(K[J[79491]+220|0]&2){c=_()|0;if(c){break b}}c=0;if((b|0)>0){while(1){Qa(e|0,J[(c<<2)+a>>2]);if(K[J[79491]+220|0]&2){f=_()|0;if(f){break a}}c=c+1|0;if((c|0)!=(b|0)){continue}break}}Fa(e|0);na(e|0,35714,d+12|0);b=J[d+12>>2];c:{if(b){break c}dj(4,89301,121650,0);c=d+8|0;na(e|0,35716,c|0);a=J[d+8>>2];if((a|0)<=0){break c}f=a;a=sj(a);eb(e|0,f|0,c|0,a|0);J[d>>2]=a;dj(4,89301,31902,d);cj(a)}Oa(e|0);Ui=d+16|0;return(b|0)!=0}Cj(c,49073,2959);Z(114101,40535,2959,49073);B()}Cj(f,49073,2964);Z(114101,40535,2964,49073);B()}function Hca(a){a=a|0;var b=0,c=0,d=0,e=0,f=0,g=0,h=0;b=Ui-48|0;Ui=b;f=pj(b+28|0,a,0,39971,874);a:{if((kj(a,1)|0)==7){c=qj(a,1,J[77574],0);if(c){if(lo(J[c>>2])){break a}}fj(a,72312,0)}Yk(a,1,49251);c=0}d=Ej(a,2);e=J[c+28>>2];b:{c:{if((d|0)>0){g=J[c+36>>2];if((d|0)<=(P(e,g)|0)){break c}}if(e){a=J[c+36>>2];J[b+20>>2]=49251;J[b+16>>2]=34859;J[b+24>>2]=P(a,e);a=Jj(f,130181,b+16|0);break b}J[b+4>>2]=49251;J[b>>2]=34859;a=Jj(f,131268,b);break b}e=J[c+20>>2];d=d-1|0;h=(d>>>0)/(g>>>0)|0;Zi[e|0](J[c+16>>2],P(h,J[c+32>>2])+(d-P(g,h)|0)|0,wj(a,3));pE(J[c>>2]);a=0}oj(f);Ui=b+48|0;return a|0}function sl(a,b){var c=0,d=0,e=0;d=Ui-16|0;Ui=d;a:{b:{c:{if((b|0)>0){b=(J[a+12>>2]+(b<<4)|0)-16|0;c=b>>>0>=M[a+8>>2]?173288:b;break c}c=J[a+8>>2]+(b<<4)|0;if((b|0)>=-9999){break c}d:{switch(b+10002|0){case 2:c=J[a+16>>2]+96|0;break c;case 1:b=J[J[J[J[a+20>>2]+4>>2]>>2]+12>>2];J[a+96>>2]=5;J[a+88>>2]=b;c=a+88|0;break c;case 0:c=a+72|0;break c;default:break d}}a=J[J[J[a+20>>2]+4>>2]>>2];c=K[a+7|0]<-10002-b>>>0?173288:(a+(0-b<<4)|0)-160024|0}b=c;if(J[b+8>>2]==3){break b}b=Kw(b,d);if(b){break b}a=0;break a}e=O[b>>3];if(R(e)<2147483648){a=~~e;break a}a=-2147483648}Ui=d+16|0;return a}function pq(a,b,c){var d=0,e=0,f=0,g=0,h=0,i=0;e=lk(a,0,0,32);ss(a,e,5);J[e+28>>2]=0;J[e+8>>2]=0;J[e+12>>2]=0;J[e+16>>2]=173648;I[e+6>>1]=255;a:{if(b+1>>>0<=268435455){g=lk(a,0,0,b<<4);break a}g=Dl(a)}J[e+12>>2]=g;d=J[e+28>>2];b:{if((d|0)>=(b|0)){break b}f=d;h=b-d&7;if(h){while(1){J[((f<<4)+g|0)+8>>2]=0;f=f+1|0;i=i+1|0;if((h|0)!=(i|0)){continue}break}}if(d-b>>>0>4294967288){break b}while(1){d=(f<<4)+g|0;J[d+8>>2]=0;J[d+24>>2]=0;J[d+40>>2]=0;J[d+56>>2]=0;J[d+72>>2]=0;J[d+88>>2]=0;J[d+104>>2]=0;J[d+120>>2]=0;f=f+8|0;if((f|0)!=(b|0)){continue}break}}J[e+28>>2]=b;JG(a,e,c);return e}function h7(a,b,c,d){a=a|0;b=b|0;c=c|0;d=d|0;var e=0,f=Q(0),g=Q(0),h=Q(0),i=Q(0),j=Q(0),k=0;e=Ui-32|0;Ui=e;k=J[a+8>>2];if(J[k>>2]){f=N[c>>2];g=N[b>>2];i=N[k+16>>2];j=N[k+24>>2];h=Q(i*Q(j*N[c+4>>2]));N[e+28>>2]=h+N[b+4>>2];f=Q(i*Q(j*f));N[e+24>>2]=g+f;Zi[J[J[a>>2]+24>>2]](a,b,e+24|0,d);j=N[e+28>>2];c=J[e+28>>2];g=N[e+24>>2];b=J[e+24>>2];J[e>>2]=b;J[e+4>>2]=c;i=Q(h*Q(.15000000596046448));g=Q(g-Q(f*Q(.3499999940395355)));N[e+16>>2]=i+g;N[e+8>>2]=g-i;f=Q(f*Q(-.15000000596046448));h=Q(j-Q(h*Q(.3499999940395355)));N[e+20>>2]=f+h;N[e+12>>2]=h-f;Zi[J[J[a>>2]+12>>2]](a,e,3,d)}Ui=e+32|0}function ST(a,b,c,d,e){a=a|0;b=b|0;c=Q(c);d=d|0;e=e|0;var f=0,g=Q(0),h=Q(0),i=Q(0),j=Q(0),k=Q(0),l=Q(0),m=Q(0),n=Q(0),o=Q(0),p=Q(0),q=Q(0),r=Q(0);f=Ui-48|0;Ui=f;J[f+44>>2]=e;J[f+40>>2]=d;j=N[a+64>>2];k=N[a+56>>2];l=N[a+60>>2];m=N[a+80>>2];n=N[a+72>>2];o=N[a+76>>2];p=N[a+96>>2];g=N[b+8>>2];q=N[a+88>>2];h=N[b>>2];r=N[a+92>>2];i=N[b+4>>2];b=J[a+48>>2];N[f+36>>2]=c;J[f+32>>2]=0;J[f+12>>2]=b;N[f+28>>2]=Q(p*g)+Q(Q(q*h)+Q(i*r));N[f+24>>2]=Q(m*g)+Q(Q(n*h)+Q(i*o));N[f+20>>2]=Q(j*g)+Q(Q(k*h)+Q(l*i));J[f+16>>2]=f+40;a=J[a+44>>2];c=Q(Zi[J[J[a>>2]+12>>2]](a,f+12|0,1));Ui=f+48|0;return Q(c)}function BD(a){var b=0,c=0,d=0,e=0,f=0,g=0;e=Ui-32|0;Ui=e;d=J[J[a>>2]+4>>2];if(d){b=d?J[d>>2]:0;g=pj(e+12|0,b,0,37214,82);if(ao(d)){f=J[a+4>>2];c=J[b+8>>2];J[c+8>>2]=3;O[c>>3]=f>>>0;J[b+8>>2]=J[b+8>>2]+16;Fj(b,0,0);f=J[a+8>>2];c=J[a+4>>2];xj(b,52997);a:{if((c|0)==2){c=J[b+8>>2];J[c+8>>2]=3;O[c>>3]=f|0;J[b+8>>2]=J[b+8>>2]+16;break a}c=J[b+8>>2];J[c+8>>2]=0;J[b+8>>2]=c+16}Xj(b,-3);c=J[a+12>>2];a=J[a+4>>2];xj(b,14691);b:{if((a|0)==2){a=J[b+8>>2];J[a+8>>2]=3;O[a>>3]=c|0;J[b+8>>2]=J[b+8>>2]+16;break b}a=J[b+8>>2];J[a+8>>2]=0;J[b+8>>2]=a+16}Xj(b,-3);Ol(b,3,0,0);xo(d)}oj(g)}Ui=e+32|0}function o3(a){a=a|0;var b=0,c=0,d=Q(0),e=Q(0),f=Q(0),g=Q(0),h=0;c=Ui+-64|0;Ui=c;b=qj(a,1,J[215722],0);e=N[b+8>>2];f=N[b>>2];g=N[b+4>>2];a:{if(!(f!=f|g!=g|e!=e)){d=N[b+12>>2];if(d==d){break a}}d=N[b+12>>2];O[c+24>>3]=e;O[c+16>>3]=g;O[c+32>>3]=d;O[c+8>>3]=f;J[c>>2]=1;fj(a,138526,c);d=N[b+12>>2];e=N[b+8>>2];g=N[b+4>>2];f=N[b>>2]}fx(c+48|0,f,g,e,d);h=+N[c+48>>2];b=J[a+8>>2];J[b+8>>2]=3;O[b>>3]=h;J[a+8>>2]=J[a+8>>2]+16;h=+N[c+52>>2];b=J[a+8>>2];J[b+8>>2]=3;O[b>>3]=h;J[a+8>>2]=J[a+8>>2]+16;h=+N[c+56>>2];b=J[a+8>>2];J[b+8>>2]=3;O[b>>3]=h;J[a+8>>2]=J[a+8>>2]+16;Ui=c- -64|0;return 3}function ew(a,b,c,d,e,f,g){var h=0,i=0,j=0,k=0,l=0,m=0;i=Ui-240|0;Ui=i;h=J[d>>2];J[i+232>>2]=h;d=J[d+4>>2];J[i>>2]=a;J[i+236>>2]=d;m=0-b|0;l=!f;a:{b:{c:{d:{if((h|0)!=1){h=a;f=1;break d}h=a;f=1;if(d){break d}break c}while(1){j=(e<<2)+g|0;d=h-J[j>>2]|0;if((Vq(d,a,c)|0)<=0){break c}k=l^-1;l=1;e:{if(!((k|(e|0)<2)&1)){j=J[j-8>>2];k=h+m|0;if((Vq(k,d,c)|0)>=0){break e}if((Vq(k-j|0,d,c)|0)>=0){break e}}J[(f<<2)+i>>2]=d;j=i+232|0;h=XG(j);lw(j,h);f=f+1|0;e=e+h|0;h=d;if(J[i+236>>2]|J[i+232>>2]!=1){continue}break b}break}d=h;break b}d=h;if(!l){break a}}ES(b,i,f);Xz(d,b,c,e,g)}Ui=i+240|0}function rK(a,b){var c=0,d=0;a:{b:{if(!(!a|!b)){d=J[b+64>>2];b=J[a+16>>2];if(d>>>0>=J[a+20>>2]-b>>3>>>0){break b}b=J[b+(d<<3)>>2];c=J[a>>2];if(b>>>0>=J[a+4>>2]-c>>2>>>0){break b}b=J[c+(b<<2)>>2];if(H[b+124|0]&1){break a}lj(0,176,b+112|0,b+120|0,b+116|0);if(H[b+156|0]&1){break a}lj(0,48,b+144|0,b+152|0,b+148|0);c:{if(H[b+156|0]&1){break c}c=J[b+144>>2];if(!c){break c}cj(c)}d:{if(H[b+140|0]&1){break d}c=J[b+128>>2];if(!c){break d}cj(c)}e:{if(H[b+124|0]&1){break e}c=J[b+112>>2];if(!c){break e}cj(c)}cj(b);CC(a,d)}return}Z(145396,53895,487,84789);B()}Z(151729,53895,501,2284);B()}function mca(a){a=a|0;var b=0;a:{if(a){J[a+84>>2]=1;if(!(!(K[a+220|0]&64)|!J[a+52>>2])){break a}b=J[a>>2];if(b){On(b)}b:{if(H[a+136|0]&1){break b}b=J[a+124>>2];if(!b){break b}cj(b)}c:{if(H[a+120|0]&1){break c}b=J[a+108>>2];if(!b){break c}cj(b)}b=J[a+92>>2];if(b){cj(b);cj(J[a+96>>2])}d:{if(H[a+68|0]&1){break d}b=J[a+56>>2];if(!b){break d}cj(b)}e:{if(H[a+44|0]&1){break e}b=J[a+32>>2];if(!b){break e}cj(b)}f:{if(H[a+28|0]&1){break f}b=J[a+20>>2];if(!b){break f}cj(b)}g:{if(H[a+16|0]&1){break g}b=J[a+4>>2];if(!b){break g}cj(b)}cj(a);J[79491]=0}return}Z(110821,40535,702,76403);B()}function z3(a){a=a|0;var b=0,c=0,d=0;b=Kk(a,1,J[215723]);c=Kk(a,2,J[215723]);a:{if(!b|!c|(N[b>>2]!=N[c>>2]|N[b+16>>2]!=N[c+16>>2])){break a}if(N[b+32>>2]!=N[c+32>>2]|N[b+48>>2]!=N[c+48>>2]|(N[b+4>>2]!=N[c+4>>2]|N[b+20>>2]!=N[c+20>>2])){break a}if(N[b+36>>2]!=N[c+36>>2]|N[b+52>>2]!=N[c+52>>2]|(N[b+8>>2]!=N[c+8>>2]|N[b+24>>2]!=N[c+24>>2])){break a}if(N[b+40>>2]!=N[c+40>>2]|N[b+56>>2]!=N[c+56>>2]|(N[b+12>>2]!=N[c+12>>2]|N[b+28>>2]!=N[c+28>>2])){break a}if(N[b+44>>2]!=N[c+44>>2]){break a}d=N[b+60>>2]==N[c+60>>2]}b=J[a+8>>2];J[b+8>>2]=1;J[b>>2]=d;J[a+8>>2]=J[a+8>>2]+16;return 1}function q_(a){a=a|0;var b=0;iu(a,99336);Nk(a,2001,0);ej(a,-2,82368);uk(a,68765,258080);uj(a,-1);ms(a,-10001);Fj(a,0,4);Nk(a,2002,0);Ik(a,-2,1);Nk(a,2003,0);Ik(a,-2,2);Nk(a,2004,0);Ik(a,-2,3);Nk(a,2005,0);Ik(a,-2,4);ej(a,-2,19533);b=vo(93456);a:{if(!b){xj(a,82914);break a}nq(a,nq(a,b,102577,102580),158858,82914);Rl(a,-2)}ej(a,-2,53134);b=vo(93465);b:{if(!b){xj(a,43849);break b}nq(a,nq(a,b,102577,102580),158858,43849);Rl(a,-2)}ej(a,-2,53064);mj(a,135221,9);ej(a,-2,57428);Ow(a,-1e4,98029,2);ej(a,-2,75976);Fj(a,0,0);ej(a,-2,76194);uj(a,-10002);uk(a,0,258112);gj(a,-2);return 1}function Boa(a){a=a|0;var b=0,c=0,d=0,e=0,f=0,g=0,h=0;d=Ui-80|0;Ui=d;h=J[a+8>>2]-J[a+12>>2]>>4;e=Ej(a,1);if(!((e|0)==1&K[927968]!=0)){fj(a,72341,0)}Fj(a,0,0);a:{b=kS(e,0);c=(b|0)!=0;f=jS(e,0);if(c^!f){while(1){if(!c){break a}c=J[a+8>>2];J[c+8>>2]=3;g=g+1|0;O[c>>3]=g>>>0;J[a+8>>2]=J[a+8>>2]+16;Fj(a,0,0);mj(a,66013,4);xj(a,f);Kj(a,-3);J[d>>2]=b;b=d+16|0;Un(b,43805,d);mj(a,18814,7);xj(a,b);Kj(a,-3);Kj(a,-3);b=kS(e,g);c=(b|0)!=0;f=jS(e,g);if(c^!f){continue}break}}Z(139046,41034,164,22676);B()}if((h+1|0)!=J[a+8>>2]-J[a+12>>2]>>4){Z(144385,41034,186,22676);B()}Ui=d+80|0;return 1}function lC(a,b,c){var d=0,e=0;a:{b:{if(b+1>>>0<2){break b}e=b&65535;if(e>>>0>=M[a+2272>>2]){break a}d=J[J[a+2264>>2]+(e<<2)>>2];if(!d|L[J[a+2268>>2]+(e<<1)>>1]!=(b>>>16|0)){break b}N[c>>2]=N[d+112>>2];N[c+4>>2]=N[d+116>>2];N[c+8>>2]=N[d+120>>2];N[c+12>>2]=N[d+124>>2];N[c+16>>2]=N[d+128>>2];N[c+20>>2]=N[d+132>>2];N[c+24>>2]=N[d+136>>2];N[c+28>>2]=N[d+140>>2];N[c+32>>2]=N[d+144>>2];N[c+36>>2]=N[d+148>>2];N[c+40>>2]=N[d+152>>2];N[c+44>>2]=N[d+156>>2];N[c+48>>2]=N[d+160>>2];N[c+52>>2]=N[d+164>>2];N[c+56>>2]=N[d+168>>2];N[c+60>>2]=N[d+172>>2]}return}Z(2686,54166,244,5438);B()}function j8(a){a=a|0;var b=0,c=0,d=0,e=Q(0),f=Q(0),g=Q(0),h=Q(0),i=0,j=0;d=Ui-32|0;Ui=d;a:{b=Qj(a,1,d+28|0);c=J[b+476>>2];b:{if(c&262144){dj(3,93318,117735,0);break b}if(c&268435456){break b}c=Gm(a,2);c:{if(c){i=J[a+8>>2]-J[a+12>>2]|0;Bj(a);j=Kk(a,-1,J[219396]);gj(a,-2);if(i>>4!=J[a+8>>2]-J[a+12>>2]>>4){break a}fm(d,j,J[d+28>>2],4);e=N[c>>2];f=N[d+12>>2];g=N[c+8>>2];h=N[c+4>>2];break c}a=Qm(a,2);f=N[a+12>>2];e=N[a>>2];g=N[a+8>>2];h=N[a+4>>2]}N[b+76>>2]=f;N[b+72>>2]=g;N[b+68>>2]=h;N[b+64>>2]=e;J[b+476>>2]=J[b+476>>2]|4194304}Ui=d+32|0;return 0}Z(143244,37682,190,65548);B()}function uM(a){var b=0,c=0,d=0,e=0,f=0,g=0;c=Ui-48|0;Ui=c;a:{if(!(J[a+216>>2]?J[a+208>>2]:0)){H[a+296|0]=K[a+296|0]|8;break a}b=c+28|0;J[b>>2]=0;J[b+4>>2]=0;J[b+16>>2]=0;J[b+8>>2]=0;J[b+12>>2]=0;Ek(b,a+216|0,4);Ek(b,a+212|0,4);b=J[a+232>>2];if(b){g=J[a+228>>2];while(1){e=c+28|0;f=P(d,96)+g|0;Ek(e,f,8);Ek(e,f+16|0,16);d=d+1|0;if((b|0)!=(d|0)){continue}break}}J[c+24>>2]=J[c+44>>2];b=J[c+40>>2];J[c+16>>2]=J[c+36>>2];J[c+20>>2]=b;b=J[c+32>>2];J[c+8>>2]=J[c+28>>2];J[c+12>>2]=b;J[a+248>>2]=mn(c+8|0);b=c+28|0;Ek(b,a+208|0,4);J[a+244>>2]=mn(b);H[a+296|0]=K[a+296|0]&247}Ui=c+48|0}function ky(a,b,c,d,e){var f=0;f=K[e+40|0]?-9:0;if((a|0)==J[e>>2]&(b|0)==J[e+4>>2]){if(J[c>>2]!=4){return-4}a=J[c+8>>2];b=J[c+12>>2];e=J[c+20>>2];J[d+8>>2]=J[c+16>>2];J[d+12>>2]=e;J[d>>2]=a;J[d+4>>2]=b;return f}if((a|0)==J[e+8>>2]&(b|0)==J[e+12>>2]){if(J[c>>2]){return-4}N[d>>2]=O[c+8>>3];return f}if((a|0)==J[e+16>>2]&(b|0)==J[e+20>>2]){if(J[c>>2]){return-4}N[d+4>>2]=O[c+8>>3];return f}if((a|0)==J[e+24>>2]&(b|0)==J[e+28>>2]){if(J[c>>2]){return-4}N[d+8>>2]=O[c+8>>3];return f}if(J[e+32>>2]!=(a|0)|(b|0)!=J[e+36>>2]){return-1}if(J[c>>2]){return-4}N[d+12>>2]=O[c+8>>3];return f}function h9(a){a=a|0;var b=0,c=0,d=0,e=0,f=0,g=0;d=Ui-16|0;Ui=d;f=J[a+8>>2]-J[a+12>>2]>>4;Qj(a,1,d+12|0);Bj(a);b=qj(a,-1,J[219396],139183);gj(a,-2);a:{b:{c:{e=J[d+12>>2];c=e&65535;g=J[b+36>>2];b=J[b+32>>2];if(c>>>0<(g-b|0)/672>>>0){b=b+P(c,672)|0;if(L[b+648>>1]!=(e>>>16|0)){break c}if(L[b+650>>1]!=(c|0)){break b}b=J[b+476>>2]>>>10&3;break a}Z(145396,53895,487,84789);B()}Z(47372,40876,188,69601);B()}Z(5388,40876,189,69601);B()}c=J[a+8>>2];J[c+8>>2]=3;O[c>>3]=b>>>0;J[a+8>>2]=J[a+8>>2]+16;if((f+1|0)!=J[a+8>>2]-J[a+12>>2]>>4){Z(143334,37682,2839,32976);B()}Ui=d+16|0;return 1}function eca(a,b,c,d){a=a|0;b=b|0;c=c|0;d=d|0;var e=0,f=0;a:{b:{c:{if(d>>>0<2097152){d:{if(c+1>>>0<2){break d}d=c&65535;if(d>>>0>=M[a+100>>2]){break c}e=J[J[a+92>>2]+(d<<2)>>2];if(!e){break d}f=L[J[a+96>>2]+(d<<1)>>1]==(c>>>16|0)?e:0}nb(J[(b<<2)+240224>>2]);if(K[J[79491]+220|0]&2){a=_()|0;if(a){break b}}a=J[f+48>>2];if(a>>>0<=3){a=J[(a<<2)+161296>>2]}else{a=0}ja(a|0,0);if(K[J[79491]+220|0]&2){a=_()|0;if(a){break a}}return}Z(94863,55553,306,33926);B()}Z(2686,54166,244,5438);B()}Cj(a,63455,4598);Z(114101,40535,4598,63455);B()}Cj(a,63455,4609);Z(114101,40535,4609,63455);B()}function bD(a,b,c,d){var e=0,f=0,g=0;a:{b:{f=b&65535;e=f;g=J[a+32>>2];if(e>>>0<(J[a+36>>2]-g|0)/672>>>0){e=g+P(e,672)|0;if(L[e+648>>1]!=(b>>>16|0)){break b}if(L[e+650>>1]!=(f|0)){break a}if(c|d){b=J[a+196>>2];if(!b){return-5}b=J[J[a+192>>2]+(mxa(c,d,b)<<2)>>2];if((b|0)==-1){return-5}f=J[a+200>>2];c:{while(1){b=f+(b<<4)|0;if(J[b>>2]==(c|0)&(d|0)==J[b+4>>2]){break c}b=J[b+12>>2];if((b|0)!=-1){continue}break}return-5}a=J[b+8>>2]}else{a=0}J[e+600>>2]=a;J[e+592>>2]=c;J[e+596>>2]=d;return 0}Z(145396,53895,487,84789);B()}Z(47372,40876,188,69601);B()}Z(5388,40876,189,69601);B()}function a9(a){a=a|0;var b=0,c=0,d=0,e=0,f=0,g=0;b=Ui-208|0;Ui=b;f=pj(b+188|0,a,1,37682,4504);c=un(a,1);if(!c){c=Pl(a,1)}d=J[c>>2];e=J[c+4>>2];N[b+168>>2]=N[c+8>>2];J[b+160>>2]=d;J[b+164>>2]=e;c=mk(a,2);g=Yi;Bj(a);d=qj(a,-1,J[219396],139183);gj(a,-2);J[b+40>>2]=0;J[b+32>>2]=1065353216;J[b+36>>2]=1065353216;e=fD(d,b+160|0,b+32|0,5,0);a:{if(!e){J[b>>2]=(J[d+40>>2]-J[d+32>>2]|0)/672;a=Jj(f,142120,b);break a}if((aD(d,e,c,g)|0)==-5){J[b+16>>2]=rx(a,2,b+32|0);a=Jj(f,126934,b+16|0);break a}c=Sj(a,8);J[c+4>>2]=e;J[c>>2]=d;rj(a,-1e4,1423);Mj(a,-2);a=1}oj(f);Ui=b+208|0;return a|0}function k4(a){a=a|0;var b=0,c=0,d=Q(0),e=Q(0),f=Q(0),g=0,h=0,i=0;b=Ui-80|0;Ui=b;a:{if((kj(a,1)|0)==3){g=wj(a,1);h=wj(a,2);i=wj(a,3);N[b+52>>2]=h;N[b+48>>2]=g;N[b+56>>2]=i;Kn(b- -64|0,b+48|0);break a}c=qj(a,1,J[215720],0);d=N[c+8>>2];e=N[c>>2];f=N[c+4>>2];if(!(!(e!=e|f!=f)&d==d)){O[b+24>>3]=d;O[b+16>>3]=f;J[b>>2]=1;O[b+8>>3]=e;fj(a,138436,b);d=N[c+8>>2];f=N[c+4>>2];e=N[c>>2]}N[b+40>>2]=d;N[b+36>>2]=f;N[b+32>>2]=e;Kn(b- -64|0,b+32|0)}c=Sj(a,16);N[c>>2]=N[b+64>>2];N[c+4>>2]=N[b+68>>2];N[c+8>>2]=N[b+72>>2];N[c+12>>2]=N[b+76>>2];rj(a,-1e4,16786);Mj(a,-2);Ui=b+80|0;return 1}function Doa(a){a=a|0;var b=0,c=0,d=0,e=0,f=0,g=0,h=0;b=Ui-80|0;Ui=b;h=J[a+8>>2]-J[a+12>>2]>>4;g=Ej(a,1);if(!((g|0)==1&K[927968]!=0)){fj(a,72341,0)}c=J[236329];c=(g|0)==1?K[927968]?c>>>0>=64?64:c:0:0;Fj(a,0,0);if(c){while(1){d=0;a:{if(!K[927968]|(g|0)!=1){break a}e=J[236329];if((e>>>0>=64?64:e)>>>0<=f>>>0){break a}d=J[(f<<2)+945320>>2]}J[b>>2]=d;d=b+16|0;Un(d,43805,b);e=J[a+8>>2];J[e+8>>2]=3;f=f+1|0;O[e>>3]=f>>>0;J[a+8>>2]=J[a+8>>2]+16;xj(a,d);Kj(a,-3);if((c|0)!=(f|0)){continue}break}}if((h+1|0)!=J[a+8>>2]-J[a+12>>2]>>4){Z(144385,41034,284,70607);B()}Ui=b+80|0;return 1}function xp(a,b,c){var d=0,e=0;d=Ui-16|0;Ui=d;J[d+4>>2]=b;J[d+8>>2]=a;J[d>>2]=c;e=J[c>>2];c=J[b>>2];b=e>>>0>>0;a:{if(c>>>0>=M[a>>2]){if(!b){break a}b=d+4|0;a=J[b>>2];c=J[a>>2];e=a;a=J[d>>2];J[e>>2]=J[a>>2];J[a>>2]=c;a=J[d+8>>2];if(M[J[d+4>>2]>>2]>=M[a>>2]){break a}c=J[a>>2];e=a;a=J[b>>2];J[e>>2]=J[a>>2];J[a>>2]=c;break a}if(b){a=J[d+8>>2];b=J[a>>2];c=a;a=J[d>>2];J[c>>2]=J[a>>2];J[a>>2]=b;break a}a=J[d+8>>2];b=J[a>>2];e=a;c=d+4|0;a=J[c>>2];J[e>>2]=J[a>>2];J[a>>2]=b;a=J[d>>2];if(M[a>>2]>=M[J[d+4>>2]>>2]){break a}b=J[c>>2];c=J[b>>2];J[b>>2]=J[a>>2];J[a>>2]=c}Ui=d+16|0}function wK(a,b){var c=0,d=0,e=0,f=0,g=0,h=0,i=0,j=0;e=Ui-16|0;Ui=e;i=J[a+52>>2];Tj(i);a:{b:{f=J[a+4>>2];g=J[a>>2];c:{if((f|0)==(g|0)){break c}h=f-g>>4;j=h>>>0<=1?1:h;while(1){if((c|0)==(h|0)){break b}d=(c<<4)+g|0;if(J[d+4>>2]!=(b|0)){c=c+1|0;if((j|0)==(c|0)){break c}continue}break}b=f-16|0;c=J[b+4>>2];J[d>>2]=J[b>>2];J[d+4>>2]=c;c=J[b+12>>2];J[d+8>>2]=J[b+8>>2];J[d+12>>2]=c;b=J[a+4>>2]-16|0;J[a+4>>2]=b;a=J[a>>2];if(a>>>0>b>>>0){break a}bw(a,b,e+15|0,(a|0)!=(b|0)?62-(S(b-a>>4)<<1)|0:0,1)}Lj(i);Ui=e+16|0;return}Z(145396,53895,487,84789);B()}Z(12682,53895,540,43537);B()}function YH(a,b,c,d){var e=0,f=0,g=0;f=Ui-16|0;Ui=f;e=-84;g=J[a+224>>2];a:{if(g-1>>>0>1){break a}b:{if((g|0)!=1){break b}J[a+224>>2]=2;g=J[a+208>>2]&15;if(!g){break b}H[f+7|0]=0;H[f+8|0]=0;H[f+9|0]=0;H[f+10|0]=0;H[f+11|0]=0;H[f+12|0]=0;H[f+13|0]=0;H[f+14|0]=0;J[f>>2]=0;J[f+4>>2]=0;e=ar(a+132|0,f,16-g|0);if(e){break a}}e=J[a+220>>2];g=J[a+216>>2]+b|0;e=g>>>0>>0?e+1|0:e;J[a+216>>2]=g;J[a+220>>2]=e;c:{if(!J[a+228>>2]){e=Fw(a,b,c,d);if(e){break a}e=ar(a+132|0,d,b);if(!e){break c}break a}e=ar(a+132|0,c,b);if(e){break a}e=Fw(a,b,c,d);if(e){break a}}e=0}Ui=f+16|0;return e}function Oaa(a,b,c,d){a=a|0;b=b|0;c=c|0;d=d|0;var e=0,f=0,g=0;e=Ui-16|0;Ui=e;a:{b:{c:{d:{if(a){J[e+12>>2]=0;f=J[79491];g=J[f+108>>2];a=J[a>>2];if(a>>>0>=J[f+112>>2]-g>>2>>>0){break d}ba(34963,J[g+(a<<2)>>2]);if(K[J[79491]+220|0]&2){a=_()|0;if(a){break c}}lb(34963,b|0,c|0,d|0);if(K[J[79491]+220|0]&2){a=_()|0;if(a){break b}}ba(34963,0);if(K[J[79491]+220|0]&2){a=_()|0;if(a){break a}}}Ui=e+16|0;return}Z(145396,53895,487,84789);B()}Cj(a,83909,1806);Z(114101,40535,1806,83909);B()}Cj(a,83909,1808);Z(114101,40535,1808,83909);B()}Cj(a,83909,1810);Z(114101,40535,1810,83909);B()}function Lu(a,b,c){J[a>>2]=0;J[a+4>>2]=0;J[a+40>>2]=0;J[a+44>>2]=0;J[a+32>>2]=0;J[a+36>>2]=0;J[a+24>>2]=0;J[a+28>>2]=0;J[a+16>>2]=0;J[a+20>>2]=0;J[a+8>>2]=0;J[a+12>>2]=0;J[a>>2]=bj(b);J[a+4>>2]=Yi;Zi[c|0](a);a:{b:{c:{d:{e:{f:{if(J[a>>2]|J[a+4>>2]){if(!J[a+12>>2]){break f}if(!J[a+16>>2]){break e}if(!J[a+28>>2]){break d}if(!J[a+32>>2]){break c}if(!J[a+36>>2]){break b}break a}Z(113765,40171,37,3553);B()}Z(113631,40171,38,3553);B()}Z(113616,40171,39,3553);B()}Z(113781,40171,40,3553);B()}Z(113889,40171,41,3553);B()}Z(113742,40171,42,3553);B()}J[a+44>>2]=J[74549];J[74549]=a}function LQ(a){var b=0,c=0,d=0,e=0;c=Ui-16|0;Ui=c;d=J[a+4>>2];if(d){b=J[a+148>>2];if(b){Zi[J[79392]](b);J[a+148>>2]=0}e=a+144|0;b=J[a+144>>2];if(b){ll(b);J[e>>2]=0}b=0;a:{b:{switch(J[J[a>>2]+16>>2]-1|0){case 4:b=2;break a;default:Z(152055,40956,79,64537);B();case 0:break a;case 3:break b}}b=1}J[a+152>>2]=b;c:{if(!MQ(d,e)){dj(4,88458,126336,0);a=0;break c}J[c+12>>2]=0;J[c+8>>2]=0;b=on(J[d+4>>2],c+12|0,c+8|0);d:{if(b){dj(4,88458,119504,0);break d}J[a+148>>2]=Zi[J[79391]](J[77192],P(J[d+20>>2],J[d+16>>2]),J[c+12>>2],0)}a=!b}Ui=c+16|0;return a}Z(36110,40956,146,25138);B()}function Ada(a){a=a|0;var b=0,c=0,d=0,e=0,f=0,g=0,h=0,i=0,j=0;a:{c=J[a+8>>2];b=J[a>>2];a=J[a+12>>2];if(((c|0)!=J[b+152>>2]|(a|0)!=J[b+156>>2])&(J[b+160>>2]!=(c|0)|J[b+164>>2]!=(a|0))){break a}h=J[J[b>>2]+2480>>2];i=J[b+8>>2];j=J[b+12>>2];a=J[b+4>>2];b=a+2052|0;f=a+2048|0;c=J[a+2048>>2];d=J[a+2052>>2];if((c|0)!=(d|0)){while(1){g=J[(e<<5)+c>>2];if(g){cj(g);d=J[b>>2];c=J[f>>2]}e=e+1|0;if(e>>>0>5>>>0){continue}break}}if(H[a+2060|0]&1){Z(151729,53895,501,2284);B()}lj(0,32,f,a+2056|0,b);J[a+2052>>2]=J[a+2048>>2];if(Zi[J[79425]](h,a,i,j)|0){break a}dj(3,88458,129485,0)}}function pma(a){a=a|0;var b=0,c=0,d=0,e=0,f=0,g=0,h=0,i=0,j=0;d=Ui-32|0;Ui=d;g=pj(d+12|0,a,1,42560,89);b=J[J[pk(a)+80>>2]+8>>2];h=b;c=J[79146];i=J[79147];b=J[J[b>>2]+4>>2];e=J[b>>2];a:{if(e){j=b+8|0;b=0;while(1){f=P(b,112)+j|0;if((c|0)==J[f+8>>2]&J[f+12>>2]==(i|0)){break a}b=b+1|0;if((e|0)!=(b|0)){continue}break}}b=-1}c=J[h>>2];if(b>>>0>2]>>2]){c=J[(c+(b<<2)|0)+12>>2]}else{c=0}if(H[c+145|0]&1){b=0}else{b=J[c+132>>2]+40|0}b:{if(b){c=J[a+8>>2];J[c+8>>2]=2;J[c>>2]=b;J[a+8>>2]=J[a+8>>2]+16;break b}c=J[a+8>>2];J[c+8>>2]=0;J[a+8>>2]=c+16}oj(g);Ui=d+32|0;return 1}function dn(a,b){var c=0,d=0,e=0,f=0,g=0;c=Ui-48|0;Ui=c;Bj(a);d=qj(a,-1,J[74197],139276);gj(a,-2);e=J[d+4>>2];a:{if(J[a+8>>2]-J[a+12>>2]>>4!=(b|0)){break a}if(!kj(a,b)){break a}J[c+40>>2]=0;J[c+44>>2]=0;J[c+32>>2]=0;J[c+36>>2]=0;J[c+24>>2]=0;J[c+28>>2]=0;J[c+16>>2]=0;J[c+20>>2]=0;Sk(a,b,c+16|0,0);d=J[J[J[d+4>>2]+80>>2]+8>>2];b:{if(!d){break b}d=J[d>>2];if(!d){break b}f=J[d+3216>>2];g=J[d+3220>>2]}if((f|0)!=J[c+16>>2]|(g|0)!=J[c+20>>2]){fj(a,120508,0)}e=xk(J[J[e+80>>2]+8>>2],J[c+32>>2],J[c+36>>2]);if(e){break a}e=0;J[c>>2]=Ij(a,b,0);fj(a,70975,c)}Ui=c+48|0;return e} +function R3(a){a=a|0;var b=0,c=0,d=0,e=0,f=0,g=0;b=Ui-4e3|0;Ui=b;d=J[a+8>>2]-J[a+12>>2]>>4;rj(a,-10002,56236);H[b+16|0]=0;a:{b:{c:{if((d|0)<=0){break c}uj(a,-1);uj(a,1);Wk(a,1,1);c=Ij(a,-1,0);if(!c){break b}zl(b+16|0,c,3984);gj(a,-2);if((d|0)==1){break c}c=2;while(1){uj(a,-1);uj(a,c);Wk(a,1,1);e=Ij(a,-1,0);if(!e){break b}f=b+16|0;zl(f,158637,3984);zl(f,e,3984);gj(a,-2);e=(c|0)==(d|0);c=c+1|0;if(!e){continue}break}}J[b>>2]=b+16;dj(1,86858,31902,b);gj(a,-2);if(J[a+8>>2]-J[a+12>>2]>>4==(d|0)){break a}Z(143265,37704,390,12772);B()}g=fj(a,145858,0)}Ui=b+4e3|0;return g|0}function gna(a){a=a|0;var b=0,c=0,d=0,e=0;d=Ui-16|0;Ui=d;b=-13;if(!dk(J[a+12>>2],J[a+16>>2],219624,d+12|0,0)){c=J[d+12>>2];a:{if(!J[c+4>>2]){break a}b=0;while(1){Tk(J[a+24>>2],J[(J[c>>2]+P(b,160)|0)+4>>2]);b=b+1|0;c=J[d+12>>2];e=J[c+4>>2];if(b>>>0>>0){continue}break}if(!e){break a}c=J[c>>2];b=0;while(1){Tk(J[a+24>>2],J[(c+P(b,160)|0)+4>>2]);b=b+1|0;if((e|0)!=(b|0)){continue}break}c=J[d+12>>2]}e=J[c+20>>2];if(e){c=J[c+16>>2];b=0;while(1){Tk(J[a+24>>2],J[c+(b<<2)>>2]);b=b+1|0;if((e|0)!=(b|0)){continue}break}c=J[d+12>>2]}J[J[a+32>>2]>>2]=c;b=0}Ui=d+16|0;return b|0}function Xo(a,b,c){var d=0,e=0,f=0,g=0,h=0,i=0,j=0;a:{if((a|0)==(b|0)){break a}J[a+8>>2]=J[a+8>>2]-(c<<4);if((c|0)<=0){break a}if((c|0)!=1){i=c&2147483646;while(1){d=J[a+8>>2];e=J[b+8>>2];J[b+8>>2]=e+16;f=g<<4;d=d+f|0;j=J[d+4>>2];J[e>>2]=J[d>>2];J[e+4>>2]=j;J[e+8>>2]=J[d+8>>2];d=J[a+8>>2];e=J[b+8>>2];J[b+8>>2]=e+16;d=d+f|0;f=J[d+20>>2];J[e>>2]=J[d+16>>2];J[e+4>>2]=f;J[e+8>>2]=J[d+24>>2];g=g+2|0;h=h+2|0;if((i|0)!=(h|0)){continue}break}}if(!(c&1)){break a}c=J[a+8>>2];a=J[b+8>>2];J[b+8>>2]=a+16;b=c+(g<<4)|0;c=J[b+4>>2];J[a>>2]=J[b>>2];J[a+4>>2]=c;J[a+8>>2]=J[b+8>>2]}}function yma(a){a=a|0;var b=0,c=0,d=0;c=Ui-16|0;Ui=c;d=J[a+8>>2]-J[a+12>>2]>>4;Bj(a);b=Kk(a,-1,J[74198]);gj(a,-2);a:{if((d|0)==J[a+8>>2]-J[a+12>>2]>>4){b:{if(!b){b=fj(a,117542,0);break b}b=0;Aj(a,1,0);c:{if(kk(a,2)){break c}if(Fu(a,2)){break c}if(Lp(a,2)){break c}if(Gm(a,2)){break c}if(un(a,2)){break c}if(Au(a,2)){break c}if((kj(a,2)|0)==1){break c}b=kj(a,2);if((b|0)==-1){b=60960}else{b=J[(b<<2)+257632>>2]}J[c>>2]=b;b=fj(a,120994,c);break b}if(J[a+8>>2]-J[a+12>>2]>>4!=(d|0)){break a}}Ui=c+16|0;return b|0}Z(143244,37509,199,10503);B()}Z(143244,37509,2066,1511);B()}function nv(a,b){var c=0,d=0;a:{b:{c=J[a+16>>2];if(J[a+20>>2]-c>>3>>>0>b>>>0){c=J[c+(b<<3)>>2];d=J[a>>2];if(c>>>0>=J[a+4>>2]-d>>2>>>0){break a}c=J[d+(c<<2)>>2];KR(J[c>>2]);if(H[c+224|0]&1){break b}lj(0,4,c+212|0,c+220|0,c+216|0);d=J[c+132>>2];if(d){rK(J[a+124>>2],d)}d=J[c+172>>2];if(d){zr(d)}c:{if(H[c+256|0]&1){break c}d=J[c+244>>2];if(!d){break c}cj(d)}d:{if(H[c+240|0]&1){break d}d=J[c+228>>2];if(!d){break d}cj(d)}e:{if(H[c+224|0]&1){break e}d=J[c+212>>2];if(!d){break e}cj(d)}cj(c);CC(a,b);return}break a}Z(151729,53895,501,2284);B()}Z(145396,53895,487,84789);B()}function hM(a){var b=0,c=0,d=0,e=0,f=0;d=Ui-16|0;Ui=d;c=J[a+4>>2];b=J[a>>2];a:{if((c|0)==(b|0)){break a}J[d>>2]=c-b>>2;dj(3,89293,128273,d);b=J[a>>2];e=J[a+4>>2];if((b|0)==(e|0)){break a}while(1){c=J[(f<<2)+b>>2];if(c){b:{if(H[c+103080|0]&1){break b}b=J[c+103068>>2];if(!b){break b}cj(b)}IU(c+40|0);c:{if(H[c+28|0]&1){break c}b=J[c+8>>2];if(b){cj(b)}b=J[c>>2];if(!b){break c}cj(b)}cj(c);e=J[a+4>>2];b=J[a>>2]}f=f+1|0;if(f>>>0>2>>>0){continue}break}}c=J[a+56>>2];b=J[a+60>>2];if(c|b){Eo(c,b)}d:{if(H[a+12|0]&1){break d}c=J[a>>2];if(!c){break d}cj(c)}cj(a);Ui=d+16|0}function gva(a,b,c,d){a=a|0;b=b|0;c=c|0;d=d|0;var e=Q(0),f=Q(0),g=Q(0),h=Q(0),i=Q(0),j=Q(0),k=Q(0),l=Q(0),m=Q(0),n=Q(0),o=Q(0),p=0,q=0;j=N[c+8>>2];f=N[a+160>>2];k=N[c+12>>2];e=N[a+164>>2];n=N[c+4>>2];h=Q(Q(Q(j*f)+Q(k*e))+n);o=N[c>>2];i=Q(o+Q(Q(k*f)-Q(j*e)));c=1;p=J[a+416>>2];a:{if((p|0)<=1){f=i;e=h;break a}q=a+160|0;e=h;f=i;while(1){d=(c<<3)+q|0;l=N[d>>2];g=N[d+4>>2];m=Q(n+Q(Q(j*l)+Q(k*g)));e=e>m?e:m;g=Q(o+Q(Q(k*l)-Q(j*g)));f=f>g?f:g;h=h>2];N[b+12>>2]=l+e;N[b+8>>2]=f+e;N[b+4>>2]=h-e;N[b>>2]=i-e}function bH(a,b){var c=0,d=0,e=0;c=J[a+52>>2];d=VA(c);J[b>>2]=d;e=J[a+48>>2];J[b+16>>2]=c;J[b+12>>2]=a;J[b+8>>2]=e;J[a+48>>2]=b;J[b+28>>2]=-1;J[b+32>>2]=-1;J[b+20>>2]=0;J[b+24>>2]=0;J[b+36>>2]=0;J[b+40>>2]=0;H[b+43|0]=0;H[b+44|0]=0;H[b+45|0]=0;H[b+46|0]=0;H[b+47|0]=0;H[b+48|0]=0;H[b+49|0]=0;H[b+50|0]=0;a=J[a+64>>2];H[d+75|0]=2;J[d+32>>2]=a;a=pq(c,0,0);J[b+4>>2]=a;b=J[c+8>>2];J[b+8>>2]=5;J[b>>2]=a;b=J[c+8>>2];if((J[c+28>>2]-b|0)<=16){Ml(c,1);b=J[c+8>>2]}J[c+8>>2]=b+16;J[b+24>>2]=9;J[b+16>>2]=d;a=J[c+8>>2];if((J[c+28>>2]-a|0)<=16){Ml(c,1);a=J[c+8>>2]}J[c+8>>2]=a+16}function D0(a){a=a|0;var b=0,c=0,d=0,e=0,f=0;d=Ui-16|0;Ui=d;c=jn(a,135350);b=J[c>>2];if(!b){fj(a,66693,0);b=J[c>>2]}e=3;c=J[(qs(a,2,0,258416)<<2)+173724>>2];Zm(a,3,1024);f=-1;J[b+80>>2]=-1;a:{b:{if((c|0)==2){J[b+48>>2]=0;break b}if(c>>>0>1){break a}if(!J[b+48>>2]|(c|0)!=1){break b}J[b+80>>2]=10}J[b>>2]=J[b>>2]|64;f=0}c:{if(!f){e=1;b=J[a+8>>2];J[b+8>>2]=1;J[b>>2]=1;break c}b=J[245744];c=J[a+8>>2];J[c+8>>2]=0;J[a+8>>2]=c+16;J[d>>2]=L[((b>>>0<=153?b:0)<<1)+215472>>1]+213556;ik(a,31902,d);c=J[a+8>>2];J[c+8>>2]=3;O[c>>3]=b|0}J[a+8>>2]=J[a+8>>2]+16;Ui=d+16|0;return e|0}function jH(a){var b=0,c=0,d=0,e=0,f=0;e=Ui+-64|0;Ui=e;J[e+8>>2]=Kr(0);J[e+12>>2]=Yi;d=lF(e+8|0,e+20|0);a:{if(!d){f=1;break a}f=1;b=J[a>>2];c=J[d+20>>2]+1900|0;if((b|0)>(c|0)){break a}b:{if((b|0)!=(c|0)){break b}b=J[a+4>>2];c=J[d+16>>2]+1|0;if((b|0)>(c|0)){break a}if((b|0)!=(c|0)){break b}b=J[a+8>>2];c=J[d+12>>2];if((b|0)>(c|0)){break a}if((b|0)!=(c|0)){break b}b=J[a+12>>2];c=J[d+8>>2];if((b|0)>(c|0)){break a}if((b|0)!=(c|0)){break b}b=J[d+4>>2];c=J[a+16>>2];if((b|0)<(c|0)){break a}if((b|0)!=(c|0)){break b}if(J[a+20>>2]>J[d>>2]){break a}}f=0}Ui=e- -64|0;return f}function b7(a,b){a=a|0;b=b|0;var c=0,d=Q(0),e=0,f=Q(0),g=Q(0),h=Q(0),i=Q(0),j=Q(0),k=Q(0),l=Q(0);c=Ui-48|0;Ui=c;e=J[a+8>>2];if(J[e>>2]){h=N[b>>2];d=N[b+8>>2];j=Q(d*Q(0));k=N[b+12>>2];f=Q(k*Q(0));i=N[b+4>>2];N[c+44>>2]=Q(j+f)+i;l=Q(d*Q(-0));N[c+40>>2]=h+Q(f+l);g=d;d=N[e+24>>2];g=Q(g*d);N[c+36>>2]=i+Q(g+f);d=Q(k*d);N[c+32>>2]=h+Q(d+l);N[c+28>>2]=i+Q(j+d);N[c+24>>2]=h+Q(f-g);J[c+20>>2]=0;J[c+12>>2]=1065353216;J[c+16>>2]=0;b=c+40|0;e=c+12|0;Zi[J[J[a>>2]+24>>2]](a,b,c+32|0,e);J[c+20>>2]=0;J[c+12>>2]=0;J[c+16>>2]=1065353216;Zi[J[J[a>>2]+24>>2]](a,b,c+24|0,e)}Ui=c+48|0}function W9(a){a=a|0;var b=0,c=0,d=0,e=0,f=0,g=0,h=0,i=Q(0);c=Ui-32|0;Ui=c;e=1;f=pj(c+12|0,a,1,37682,4402);Bj(a);b=qj(a,-1,J[219396],139183);gj(a,-2);Qj(a,1,c+8|0);a:{if(dy(b,J[c+8>>2])){e=Jj(f,65056,0);break a}b:{c:{d:{g=J[c+8>>2];d=g&65535;h=J[b+36>>2];b=J[b+32>>2];if(d>>>0<(h-b|0)/672>>>0){b=b+P(d,672)|0;if(L[b+648>>1]!=(g>>>16|0)){break d}if(L[b+650>>1]!=(d|0)){break c}i=N[b+544>>2];break b}Z(145396,53895,487,84789);B()}Z(47372,40876,188,69601);B()}Z(5388,40876,189,69601);B()}b=J[a+8>>2];J[b+8>>2]=3;O[b>>3]=i;J[a+8>>2]=J[a+8>>2]+16}oj(f);Ui=c+32|0;return e|0}function nF(a,b){var c=0,d=0,e=0;if(!K[982992]){d=yi()|0;H[982992]=1;H[982993]=d}a:{b:{c:{d:{switch(a|0){case 0:break b;case 1:case 4:break d;default:break c}}if(K[982993]!=1){break c}e=+Ta();break a}J[245744]=28;return}e=+za()}c=e/1e3;e:{if(R(c)<0x8000000000000000){d=~~c>>>0;if(R(c)>=1){a=~~(c>0?T(V(c*2.3283064365386963e-10),4294967295):W((c-+(~~c>>>0>>>0))*2.3283064365386963e-10))>>>0}else{a=0}break e}d=0;a=-2147483648}J[b>>2]=d;J[b+4>>2]=a;c=(e-(+(ixa(d,a,1e3,0)>>>0)+ +(Yi|0)*4294967296))*1e3*1e3;f:{if(R(c)<2147483648){a=~~c;break f}a=-2147483648}J[b+8>>2]=a}function iH(a){var b=0,c=0,d=0,e=0,f=0;e=Ui+-64|0;Ui=e;J[e+8>>2]=Kr(0);J[e+12>>2]=Yi;d=lF(e+8|0,e+20|0);a:{if(!d){f=1;break a}f=1;b=J[d+20>>2]+1900|0;c=J[a>>2];if((b|0)>(c|0)){break a}b:{if((b|0)!=(c|0)){break b}b=J[d+16>>2];c=J[a+4>>2];if((b|0)>=(c|0)){break a}if((c|0)!=(b+1|0)){break b}b=J[d+12>>2];c=J[a+8>>2];if((b|0)>(c|0)){break a}if((b|0)!=(c|0)){break b}b=J[d+8>>2];c=J[a+12>>2];if((b|0)>(c|0)){break a}if((b|0)!=(c|0)){break b}b=J[d+4>>2];c=J[a+16>>2];if((b|0)>(c|0)){break a}if((b|0)!=(c|0)){break b}if(J[d>>2]>J[a+20>>2]){break a}}f=0}Ui=e- -64|0;return f}function aD(a,b,c,d){var e=0,f=0,g=0;a:{b:{f=b&65535;e=J[a+32>>2];if(f>>>0<(J[a+36>>2]-e|0)/672>>>0){e=e+P(f,672)|0;if(L[e+648>>1]!=(b>>>16|0)){break b}if(L[e+650>>1]!=(f|0)){break a}f=-10;c:{if((J[e+476>>2]&240)!=80){break c}f=-5;b=J[a+232>>2];if(!b){break c}b=J[J[a+228>>2]+(mxa(c,d,b)<<2)>>2];if((b|0)==-1){break c}g=J[a+236>>2];while(1){a=g+(b<<4)|0;if(J[a>>2]!=(c|0)|J[a+4>>2]!=(d|0)){b=J[a+12>>2];if((b|0)!=-1){continue}break c}break}J[e+616>>2]=c;J[e+620>>2]=d;f=0}return f}Z(145396,53895,487,84789);B()}Z(47372,40876,188,69601);B()}Z(5388,40876,189,69601);B()}function rY(a){a=a|0;var b=0,c=0,d=0,e=0,f=0,g=0,h=0;d=wj(a,1);b=_o(a,2,0);a:{if(R(b)<0x8000000000000000){e=~~b>>>0;if(R(b)>=1){c=~~(b>0?T(V(b*2.3283064365386963e-10),4294967295):W((b-+(~~b>>>0>>>0))*2.3283064365386963e-10))>>>0}else{c=0}break a}c=-2147483648}h=c;b:{if(R(d)<0x8000000000000000){b=d;f=~~b>>>0;if(R(b)>=1){c=~~(b>0?T(V(b*2.3283064365386963e-10),4294967295):W((b-+(~~b>>>0>>>0))*2.3283064365386963e-10))>>>0}else{c=0}break b}c=-2147483648}g=J[a+8>>2];J[g+8>>2]=3;O[g>>3]=+(f-e>>>0)+ +(c-((e>>>0>f>>>0)+h|0)|0)*4294967296;J[a+8>>2]=J[a+8>>2]+16;return 1}function WE(a,b,c,d){var e=0,f=0,g=Q(0),h=Q(0),i=0,j=Q(0),k=Q(0),l=0;e=Ui-48|0;Ui=e;if(J[a+28>>2]>0){while(1){i=J[a+12>>2];f=J[a+24>>2]+P(l,28)|0;Zi[J[J[i>>2]+24>>2]](i,e+32|0,c,J[f+20>>2]);i=J[a+12>>2];Zi[J[J[i>>2]+24>>2]](i,e+16|0,d,J[f+20>>2]);g=N[e+16>>2];h=N[e+32>>2];j=N[e+36>>2];k=N[e+20>>2];N[f+4>>2]=j>2]=g>h?h:g;g=N[e+24>>2];h=N[e+40>>2];j=N[e+44>>2];k=N[e+28>>2];N[f+12>>2]=j>k?j:k;N[f+8>>2]=g>2];h=N[d>>2];N[e+12>>2]=N[d+4>>2]-N[c+4>>2];N[e+8>>2]=h-g;pV(b,J[f+24>>2],f,e+8|0);l=l+1|0;if((l|0)>2]){continue}break}}Ui=e+48|0}function H3(a){a=a|0;var b=0,c=Q(0),d=0,e=Q(0),f=Q(0),g=Q(0),h=0,i=0,j=0,k=0;d=Ui-16|0;Ui=d;h=wj(a,1);i=wj(a,2);j=wj(a,3);k=wj(a,4);c=Q(j);if(c==Q(0)){hu(a,1);J[d>>2]=Ij(a,-1,0);dj(3,86858,114059,d)}b=Sj(a,64);J[b+4>>2]=0;J[b+8>>2]=0;J[b+24>>2]=0;J[b+28>>2]=0;J[b+60>>2]=0;J[b+52>>2]=0;J[b+44>>2]=-1082130432;J[b+48>>2]=0;J[b+12>>2]=0;J[b+16>>2]=0;J[b+32>>2]=0;J[b+36>>2]=0;f=gG(Q(Q(Q(h)*Q(-.5))+Q(1.5707963705062866)));N[b+20>>2]=f;e=Q(k);g=Q(Q(1)/Q(c-e));N[b+40>>2]=Q(c+e)*g;N[b>>2]=f/Q(i);c=Q(Q(c*e)*g);N[b+56>>2]=c+c;rj(a,-1e4,106883);Mj(a,-2);Ui=d+16|0;return 1}function Faa(a,b,c,d,e){a=a|0;b=b|0;c=c|0;d=d|0;e=e|0;var f=0;a:{if(a){nc(J[(b<<2)+161184>>2],J[(c<<2)+161200>>2],J[(d<<2)+161200>>2],J[(e<<2)+161200>>2]);if(K[J[79491]+220|0]&2){f=_()|0;if(f){break a}}b:{if((b|0)==1){d=e<<12&28672|(d<<15&229376|c<<9&3584);b=L[a+150>>1];c=(L[a+146>>1]|L[a+148>>1]<<16)&-261633;a=a+146|0;break b}I[a+144>>1]=L[a+144>>1]&8191|c<<13;d=e&7|d<<3&56;b=L[a+150>>1];c=(L[a+146>>1]|L[a+148>>1]<<16)&-64;a=a+146|0}I[a+4>>1]=b;b=c|d;I[a>>1]=b;I[a+2>>1]=b>>>16;return}Z(9196,40535,4828,61557);B()}Cj(f,61557,4841);Z(114101,40535,4841,61557);B()}function kC(a,b,c){var d=0,e=0;a:{b:{if(b+1>>>0<2){break b}e=b&65535;if(e>>>0>=M[a+2272>>2]){break a}d=J[J[a+2264>>2]+(e<<2)>>2];if(!d|L[J[a+2268>>2]+(e<<1)>>1]!=(b>>>16|0)){break b}N[c>>2]=N[d+48>>2];N[c+4>>2]=N[d+52>>2];N[c+8>>2]=N[d+56>>2];N[c+12>>2]=N[d+60>>2];N[c+16>>2]=N[d+64>>2];N[c+20>>2]=N[d+68>>2];N[c+24>>2]=N[d+72>>2];N[c+28>>2]=N[d+76>>2];N[c+32>>2]=N[d+80>>2];N[c+36>>2]=N[d+84>>2];N[c+40>>2]=N[d+88>>2];N[c+44>>2]=N[d+92>>2];N[c+48>>2]=N[d+96>>2];N[c+52>>2]=N[d+100>>2];N[c+56>>2]=N[d+104>>2];N[c+60>>2]=N[d+108>>2]}return}Z(2686,54166,244,5438);B()}function hO(a,b,c,d){var e=0,f=0,g=0;f=-5;a:{b:{c:{e=J[a+280>>2];d:{if(!e){break d}e=J[J[a+276>>2]+(mxa(c,d,e)<<2)>>2];if((e|0)==-1){break d}g=J[a+284>>2];while(1){e=(e<<4)+g|0;if(J[e>>2]!=(c|0)|J[e+4>>2]!=(d|0)){e=J[e+12>>2];if((e|0)!=-1){continue}break d}break}f=b&65535;g=J[a+36>>2];a=J[a+32>>2];if(f>>>0>=(g-a|0)/672>>>0){break c}a=a+P(f,672)|0;if(L[a+648>>1]!=(b>>>16|0)){break b}if((f|0)!=L[a+650>>1]){break a}J[a+568>>2]=c;J[a+572>>2]=d;I[a+576>>1]=L[e+8>>1];f=0}return f}Z(145396,53895,487,84789);B()}Z(47372,40876,188,69601);B()}Z(5388,40876,189,69601);B()}function c3(a){a=a|0;var b=0,c=0,d=Q(0),e=Q(0),f=Q(0),g=Q(0);c=Ui-48|0;Ui=c;a:{if(!(J[a+8>>2]-J[a+12>>2]>>4)){d=Q(1);break a}if(J[a+8>>2]-J[a+12>>2]>>4==1){b=qj(a,-1,J[215722],0);e=N[b+8>>2];f=N[b>>2];g=N[b+4>>2];if(!(f!=f|g!=g|e!=e)){d=N[b+12>>2];if(d==d){break a}}d=N[b+12>>2];O[c+24>>3]=e;O[c+16>>3]=g;O[c+32>>3]=d;O[c+8>>3]=f;J[c>>2]=-1;fj(a,138526,c);d=N[b+12>>2];e=N[b+8>>2];g=N[b+4>>2];f=N[b>>2];break a}f=Q(wj(a,1));g=Q(wj(a,2));e=Q(wj(a,3));d=Q(wj(a,4))}b=Sj(a,16);N[b+12>>2]=d;N[b+8>>2]=e;N[b+4>>2]=g;N[b>>2]=f;rj(a,-1e4,16786);Mj(a,-2);Ui=c+48|0;return 1}function VL(a,b,c){var d=0,e=0,f=0,g=Q(0),h=0,i=0,j=0,k=0;e=nj(420);J[e+416>>2]=0;J[e+4>>2]=2;J[e+8>>2]=1008981770;J[e>>2]=247140;H[e+20|0]=0;J[e+24>>2]=0;J[e+28>>2]=0;g=N[a+64>>2];f=c<<1;a=nj(f>>>0>1073741823?-1:c<<3);a:{if(!f){break a}if(f>>>0>=4){j=f&-4;while(1){d=h<<2;N[d+a>>2]=g*N[b+d>>2];i=d|4;N[i+a>>2]=g*N[b+i>>2];i=d|8;N[i+a>>2]=g*N[b+i>>2];d=d|12;N[d+a>>2]=g*N[b+d>>2];h=h+4|0;k=k+4|0;if((j|0)!=(k|0)){continue}break}}d=f&2;if(!d){break a}f=0;while(1){j=h<<2;N[j+a>>2]=g*N[b+j>>2];h=h+1|0;f=f+1|0;if((d|0)!=(f|0)){continue}break}}qz(e,a,c);cj(a);return e}function jO(a,b,c,d){var e=0,f=0,g=0;f=-5;a:{b:{c:{e=J[a+100>>2];d:{if(!e){break d}e=J[J[a+96>>2]+(mxa(c,d,e)<<2)>>2];if((e|0)==-1){break d}g=J[a+104>>2];while(1){e=(e<<4)+g|0;if(J[e>>2]!=(c|0)|J[e+4>>2]!=(d|0)){e=J[e+12>>2];if((e|0)!=-1){continue}break d}break}f=b&65535;g=J[a+36>>2];a=J[a+32>>2];if(f>>>0>=(g-a|0)/672>>>0){break c}a=a+P(f,672)|0;if(L[a+648>>1]!=(b>>>16|0)){break b}if((f|0)!=L[a+650>>1]){break a}J[a+552>>2]=c;J[a+556>>2]=d;J[a+560>>2]=J[e+8>>2];f=0}return f}Z(145396,53895,487,84789);B()}Z(47372,40876,188,69601);B()}Z(5388,40876,189,69601);B()}function CE(a,b,c,d,e){var f=0,g=0,h=0;a:{f=er(a,b,e);if(J[f+8>>2]){break a}f=er(a,c,e);if(J[f+8>>2]){break a}return 0}g=J[a+32>>2];h=J[f+4>>2];e=J[a+8>>2];J[e>>2]=J[f>>2];J[e+4>>2]=h;J[e+8>>2]=J[f+8>>2];f=J[b+4>>2];e=J[a+8>>2];J[e+16>>2]=J[b>>2];J[e+20>>2]=f;J[e+24>>2]=J[b+8>>2];e=J[c+4>>2];b=J[a+8>>2];J[b+32>>2]=J[c>>2];J[b+36>>2]=e;J[b+40>>2]=J[c+8>>2];b=J[a+8>>2];if((J[a+28>>2]-b|0)<=48){Ml(a,3);b=J[a+8>>2]}J[a+8>>2]=b+48;$o(a,b,1);c=J[a+8>>2];b=c-16|0;J[a+8>>2]=b;a=J[a+32>>2]+(d-g|0)|0;d=J[b+4>>2];J[a>>2]=J[b>>2];J[a+4>>2]=d;J[a+8>>2]=J[c-8>>2];return 1}function fF(a,b,c,d){var e=0,f=0;b=b-c|0;a:{b:{switch(J[d>>2]){case 13:case 14:c=(b|0)<0?-1:b;Pw(a,d,c+1|0);if((b|0)<=0){break a}fr(a,c);return;default:kn(a,d);break;case 0:break b}}if((b|0)<=0){break a}c=J[a+36>>2];fr(a,b);c:{d:{d=J[a+24>>2];if((d|0)<=J[a+28>>2]){break d}e:{if(!d){if((c|0)>=K[a+50|0]){break e}break d}e=(J[J[a>>2]+12>>2]+(d<<2)|0)-4|0;d=J[e>>2];if((d&63)!=3|(c|0)<(d>>>6&255)){break d}f=d>>>23|0;if((c|0)>(f+1|0)){break d}a=(b+c|0)-1|0;if((a|0)<=(f|0)){break e}J[e>>2]=d&8388547|a<<23}break c}El(a,(b+c<<23)-8388608|c<<6|3,J[J[a+12>>2]+8>>2])}}}function Ax(a,b){var c=0,d=0,e=0;a:{d=J[a+4>>2];c=J[d+4>>2];b:{if(!c){break b}c=J[J[d>>2]+((b>>>0)%(c>>>0)<<2)>>2];if((c|0)==-1){break b}d=J[d+8>>2];while(1){c=d+P(c,24)|0;if(J[c>>2]==(b|0)){break a}c=J[c+16>>2];if((c|0)!=-1){continue}break}}Z(53392,42212,1457,47396);B()}c:{b=J[a>>2];d=J[b+4>>2];d:{if(!d){break d}a=J[c+8>>2];e=J[c+12>>2];c=J[J[b>>2]+(mxa(a,e,d)<<2)>>2];if((c|0)==-1){break d}d=J[b+8>>2];while(1){b=d+P(c,56)|0;if(J[b>>2]==(a|0)&(e|0)==J[b+4>>2]){break c}c=J[b+48>>2];if((c|0)!=-1){continue}break}}Z(70819,42212,1460,47396);B()}return L[b+40>>1]}function wla(a){a=a|0;var b=0,c=0;b=Ui-16|0;Ui=b;a:{if((kj(a,1)|0)!=7){break a}a=Kk(a,1,J[77573]);if(!a){break a}c=a;b:{if(J[a+4>>2]!=2){break b}if(hp(J[77572],J[a>>2],b+8|0)){break a}c=a;if(J[a+4>>2]!=2){break b}c=J[a>>2]+4|0}c=J[c>>2];if(!c|!lo(c)){break a}c:{switch(J[a+4>>2]-1|0){case 0:ot(J[a>>2]);break a;case 1:break c;default:break a}}if(L[a+16>>1]==65535){break a}c=Ax(J[77572],J[a>>2]);J[b+8>>2]=0;J[b+12>>2]=0;hp(J[77572],J[a>>2],b+8|0);if(J[b+8>>2]!=J[a+8>>2]|J[b+12>>2]!=J[a+12>>2]|L[a+16>>1]!=(c|0)){break a}vj(J[77572],J[a>>2])}Ui=b+16|0;return 0}function vz(a,b,c,d,e){var f=Q(0),g=Q(0),h=Q(0),i=0,j=0,k=0,l=Q(0),m=Q(0);f=N[c>>2];g=N[c+4>>2];h=Q(Q(Q(f*N[b+12>>2])+Q(g*N[b+16>>2]))-d);c=0;d=Q(Q(Q(f*N[b>>2])+Q(g*N[b+4>>2]))-d);if(d<=Q(0)){c=J[b+4>>2];J[a>>2]=J[b>>2];J[a+4>>2]=c;J[a+8>>2]=J[b+8>>2];c=1}if(h<=Q(0)){i=b+12|0;k=J[i+4>>2];j=P(c,12)+a|0;J[j>>2]=J[i>>2];J[j+4>>2]=k;J[j+8>>2]=J[i+8>>2];c=c+1|0}if(Q(d*h)>2];l=N[b+12>>2];g=N[b+4>>2];m=N[b+16>>2];a=P(c,12)+a|0;H[a+8|0]=e;d=Q(d/Q(d-h));N[a+4>>2]=g+Q(d*Q(m-g));N[a>>2]=f+Q(d*Q(l-f));b=K[b+9|0];I[a+10>>1]=256;H[a+9|0]=b;c=c+1|0}return c}function YI(a,b,c){var d=0,e=0;d=Ui-208|0;Ui=d;J[d+76>>2]=128;b=Oi(J[b>>2],d+80|0,d+76|0,0,0,0)|0;if(b>>>0>=4294963201){J[245744]=0-b;b=-1}a:{if((b|0)<0){b=J[a+8>>2];J[b+8>>2]=0;J[a+8>>2]=b+16;xj(a,Tm(J[245744]));a=2;break a}b=ka(d+80|0,J[d+76>>2],d+16|0,46,d+10|0,6,3)|0;if(b){c=J[a+8>>2];J[c+8>>2]=0;J[a+8>>2]=c+16;xj(a,ru(b));a=2;break a}xj(a,d+16|0);b=Tr(d+10|0,0);e=J[a+8>>2];J[e+8>>2]=3;O[e>>3]=b|0;J[a+8>>2]=J[a+8>>2]+16;b:{c:{switch(c-2|0){case 0:mj(a,15405,4);break b;case 8:mj(a,103511,5);break b;default:break c}}mj(a,3515,13)}a=3}Ui=d+208|0;return a}function Lx(a,b){var c=0,d=0,e=0,f=0,g=0;d=Ui-16|0;Ui=d;a:{if(kk(a,1)){a=sC(a,J[J[b+304>>2]+2480>>2]);b=Yi;break a}b:{if(!Lp(a,1)){if(!Mk(a,1)){break b}}e=mk(a,1);f=Yi;c:{c=J[b+20>>2];d:{if(!c){break d}c=J[J[b+16>>2]+(mxa(e,f,c)<<2)>>2];if((c|0)==-1){break d}g=J[b+24>>2];while(1){b=g+(c<<5)|0;if(J[b>>2]==(e|0)&(f|0)==J[b+4>>2]){break c}c=J[b+24>>2];if((c|0)!=-1){continue}break}}J[d>>2]=tj(e,f);a=fj(a,146719,d);b=a>>31;break a}if(J[b+16>>2]!=2){a=fj(a,15600,0);b=a>>31;break a}a=J[b+8>>2];b=J[b+12>>2];break a}a=fj(a,116095,0);b=a>>31}Ui=d+16|0;Yi=b;return a}function yq(a,b,c){var d=0,e=0,f=0,g=0,h=0;a:{b:{g=(c-b|0)/48|0;h=J[a+2184>>2];f=J[a+2180>>2];if((g|0)<=h-f>>2){d=J[a+2116>>2];if(d>>>0>>0){break b}if(c>>>0>>0){e=J[a+2112>>2];d=c-e|0;if(d>>>0>J[a+2120>>2]-e>>>0){break a}J[a+2116>>2]=d+e}if((b|0)!=(c|0)){e=J[a+2112>>2];d=f;while(1){J[d>>2]=(b-e|0)/48;d=d+4|0;b=b+48|0;if((c|0)!=(b|0)){continue}break}c=J[a+2176>>2];b=(f-c>>2)+g|0;if(b>>>0>h-c>>2>>>0){break a}J[a+2196>>2]=J[a+2192>>2];J[a+2180>>2]=c+(b<<2)}return}Z(144859,40146,242,14384);B()}Z(145477,40146,243,14384);B()}Z(144782,53895,514,59583);B()}function Dka(a){a=a|0;var b=0,c=0,d=0,e=Q(0),f=0,g=0,h=0;d=Ui-16|0;Ui=d;f=-1e3;c=J[a+76>>2];a:{if(!c){break a}b=J[c+140>>2];if(!b){break a}b:{e=N[b+8>>2];c:{if(!(J[b+4>>2]|e!=Q(0))){b=0;break c}if(!(e>Q(0))){break b}b=J[b+4>>2];if(!b){break b}}J[d+8>>2]=b;O[d>>3]=e;dj(4,88458,78234,d);break a}g=J[a+84>>2];b=nj(32);J[b+24>>2]=0;J[b+28>>2]=0;h=K[g+17|0];J[b>>2]=c;c=J[a>>2];J[b+8>>2]=0;J[b+4>>2]=c;c=L[a+92>>1];H[b+28|0]=h|4;J[b+12>>2]=0;J[b+16>>2]=0;I[b+26>>1]=c;J[b+20>>2]=0;if(!AQ(g,J[a+80>>2],b,0)){cj(b);break a}J[J[a+88>>2]>>2]=b;f=0}Ui=d+16|0;return f|0}function xQ(a,b,c){var d=0,e=0,f=0,g=0;d=Ui-128|0;Ui=d;J[d+120>>2]=0;J[d+124>>2]=0;J[d+112>>2]=0;J[d+116>>2]=0;J[d+104>>2]=0;J[d+108>>2]=0;J[d+96>>2]=0;J[d+100>>2]=0;d=hj(d,b,72);e=d+96|0;cQ(d,e);J[d+88>>2]=0;J[d+92>>2]=0;J[d+80>>2]=0;J[d+84>>2]=0;ND(e,d+80|0);J[d+76>>2]=0;f=J[d+80>>2];g=J[d+84>>2]-f|0;a=wq(a,0,J[b>>2],f,g,g,d+76|0);rQ(e,!(J[b+40>>2]|J[b+44>>2]));a:{if(!a){e=J[b+16>>2];if(!e){break a}xv(e,J[b+8>>2],J[b+12>>2]);J[c>>2]=J[d+76>>2]}b:{if(H[d+92|0]&1){break b}b=J[d+80>>2];if(!b){break b}cj(b)}Ui=d+128|0;return a}Z(46064,42176,200,69854);B()}function nO(a,b){var c=0,d=0;a:{b:{c:{d=b&65535;c=J[a+32>>2];if(d>>>0<(J[a+36>>2]-c|0)/672>>>0){c=P(d,672)+c|0;if(L[c+648>>1]!=(b>>>16|0)){break c}if(L[c+650>>1]!=(d|0)){break b}J[c+476>>2]=J[c+476>>2]|4194304;b=L[c+658>>1];if((b|0)!=65535){while(1){c=J[a+32>>2];if((J[a+36>>2]-c|0)/672>>>0<=b>>>0){break a}b=c+P(b,672)|0;J[b+476>>2]=J[b+476>>2]|4194304;if(L[b+658>>1]!=65535){nO(a,L[b+650>>1]|L[b+648>>1]<<16)}b=L[b+654>>1];if((b|0)!=65535){continue}break}}return}break a}Z(47372,40876,188,69601);B()}Z(5388,40876,189,69601);B()}Z(145396,53895,487,84789);B()}function TZ(a){a=a|0;var b=0,c=0,d=0,e=0;c=ixa(J[245856],J[245857],1284865837,1481765933);b=Yi;c=c+1|0;b=c?b:b+1|0;J[245856]=c;J[245857]=b;d=+((b>>>1>>>0)%2147483647|0)/2147483647;a:{b:{switch(J[a+8>>2]-J[a+12>>2]>>4){case 0:b=J[a+8>>2];J[b+8>>2]=3;O[b>>3]=d;break a;case 1:b=Ej(a,1);if((b|0)<=0){Dk(a,1,1527)}c=J[a+8>>2];J[c+8>>2]=3;O[c>>3]=V(d*+(b|0))+1;break a;case 2:b=Ej(a,1);c=Ej(a,2);if((b|0)>(c|0)){Dk(a,2,1527)}e=J[a+8>>2];J[e+8>>2]=3;O[e>>3]=V(d*+((c-b|0)+1|0))+ +(b|0);break a;default:break b}}return fj(a,18252,0)|0}J[a+8>>2]=J[a+8>>2]+16;return 1}function Cca(a){a=a|0;var b=0,c=0,d=0,e=0;b=Ui-32|0;Ui=b;e=J[a+8>>2]-J[a+12>>2]|0;Al(a,1,J[J[pk(a)+80>>2]+8>>2],81707,b+28|0,0,0);sy(J[b+28>>2],b+24|0,b+20|0,b+16|0,b+12|0);d=J[b+24>>2]+1|0;c=J[a+8>>2];J[c+8>>2]=3;O[c>>3]=d|0;J[a+8>>2]=J[a+8>>2]+16;d=J[b+20>>2]+1|0;c=J[a+8>>2];J[c+8>>2]=3;O[c>>3]=d|0;J[a+8>>2]=J[a+8>>2]+16;d=J[b+16>>2];c=J[a+8>>2];J[c+8>>2]=3;O[c>>3]=d|0;J[a+8>>2]=J[a+8>>2]+16;d=J[b+12>>2];c=J[a+8>>2];J[c+8>>2]=3;O[c>>3]=d|0;J[a+8>>2]=J[a+8>>2]+16;if(((e>>4)+4|0)!=J[a+8>>2]-J[a+12>>2]>>4){Z(143284,40250,571,25370);B()}Ui=b+32|0;return 4}function pH(a){var b=0,c=0;if(!a){return-28928}if(!J[a>>2]){return-28928}a:{if(J[a+8>>2]==1){while(1){if(J[a+4>>2]==16){return 0}b=J[a>>2];if(!b){return-28928}if(H[b+184|0]&1){return-28800}b=Zr(a);if(!b){continue}break a}}if(J[a+4>>2]!=16){return-28928}b=iw(a);if(b){break a}c=J[J[a>>2]+184>>2];b:{if(!(c&2)|J[a+8>>2]!=3){break b}b=J[a+68>>2];if(c&1){J[b+472>>2]=1;break b}J[b+476>>2]=1}J[a+4>>2]=0;J[a+8>>2]=1;while(1){b=J[a>>2];if(!b){return-28928}if(!(H[b+184|0]&1)){b=Zr(a);if(b){break a}b=0;if(J[a+4>>2]==16){break a}continue}break}return-28800}return b}function ot(a){var b=0,c=0,d=0,e=0;a:{if(a){b:{c:{if(a+1>>>0<2){break c}d=a&65535;b=J[216330];if(d>>>0>=M[b+8>>2]){break a}e=J[b>>2]+(d<<2)|0;c=J[e>>2];if(!c|L[J[b+4>>2]+(d<<1)>>1]!=(a>>>16|0)){break c}if(!Wj(J[c>>2]+P(J[c+24>>2],J[c+28>>2])|0,173904,16)){break b}}dj(4,99340,34831,0);return}a=0;J[e>>2]=0;I[J[b+4>>2]+(d<<1)>>1]=0;b=J[c+8>>2];if((b|0)!=J[c+12>>2]){while(1){b=J[(a<<2)+b>>2];cj(J[b+12>>2]);cj(b);a=a+1|0;b=J[c+8>>2];if(a>>>0>2]-b>>2>>>0){continue}break}}J[c+12>>2]=b;if(!(!b|H[c+20|0]&1)){cj(b)}cj(c)}return}Z(2686,54230,244,5438);B()}function mma(a){a=a|0;var b=0,c=0,d=0,e=0,f=Q(0),g=Q(0),h=0;c=Ui-48|0;Ui=c;h=pj(c+28|0,a,0,36839,111);b=qj(a,1,J[79308],3640);d=J[b+8>>2];e=J[b+12>>2];a:{if(!(d|e)){break a}if(xk(J[b+4>>2],d,e)){break a}J[c>>2]=tj(J[b+8>>2],J[b+12>>2]);fj(a,102051,c)}b=J[b>>2];Rn(c+20|0,a,2,N[59873]);Rn(c+12|0,a,3,N[59873]);if(J[b>>2]==2){a=L[b+4>>1];if(!(a&2)){J[b+144>>2]=0;I[b+4>>1]=a|2}f=N[c+20>>2];N[b+76>>2]=f+N[b+76>>2];g=N[c+24>>2];N[b+80>>2]=g+N[b+80>>2];N[b+84>>2]=N[b+84>>2]+Q(Q(g*Q(N[c+12>>2]-N[b+44>>2]))-Q(f*Q(N[c+16>>2]-N[b+48>>2])))}oj(h);Ui=c+48|0;return 0}function b2(a){a=a|0;var b=0,c=0,d=Q(0),e=Q(0),f=Q(0),g=0,h=Q(0),i=Q(0),j=Q(0);b=Ui+-64|0;Ui=b;c=qj(a,1,J[215720],0);d=N[c+8>>2];e=N[c>>2];f=N[c+4>>2];if(!(!(e!=e|f!=f)&d==d)){O[b+56>>3]=d;O[b+48>>3]=f;J[b+32>>2]=1;O[b+40>>3]=e;fj(a,138436,b+32|0)}g=qj(a,2,J[215720],0);d=N[g+8>>2];e=N[g>>2];f=N[g+4>>2];if(!(!(e!=e|f!=f)&d==d)){O[b+24>>3]=d;O[b+16>>3]=f;J[b>>2]=2;O[b+8>>3]=e;fj(a,138436,b);d=N[g+8>>2];f=N[g+4>>2];e=N[g>>2]}h=N[c+8>>2];i=N[c>>2];j=N[c+4>>2];c=Sj(a,16);N[c+8>>2]=h+d;N[c+4>>2]=j+f;N[c>>2]=i+e;rj(a,-1e4,108973);Mj(a,-2);Ui=b- -64|0;return 1}function V1(a){a=a|0;var b=0,c=0,d=Q(0),e=Q(0),f=Q(0),g=0,h=Q(0),i=Q(0),j=Q(0);b=Ui+-64|0;Ui=b;c=qj(a,1,J[215720],0);d=N[c+8>>2];e=N[c>>2];f=N[c+4>>2];if(!(!(e!=e|f!=f)&d==d)){O[b+56>>3]=d;O[b+48>>3]=f;J[b+32>>2]=1;O[b+40>>3]=e;fj(a,138436,b+32|0)}g=qj(a,2,J[215720],0);d=N[g+8>>2];e=N[g>>2];f=N[g+4>>2];if(!(!(e!=e|f!=f)&d==d)){O[b+24>>3]=d;O[b+16>>3]=f;J[b>>2]=2;O[b+8>>3]=e;fj(a,138436,b);d=N[g+8>>2];f=N[g+4>>2];e=N[g>>2]}h=N[c+8>>2];i=N[c>>2];j=N[c+4>>2];c=Sj(a,16);N[c+8>>2]=h-d;N[c+4>>2]=j-f;N[c>>2]=i-e;rj(a,-1e4,108973);Mj(a,-2);Ui=b- -64|0;return 1}function g7(a,b,c,d){a=a|0;b=b|0;c=Q(c);d=d|0;var e=0,f=Q(0),g=0,h=Q(0),i=0,j=Q(0),k=Q(0),l=0,m=Q(0);e=Ui-528|0;Ui=e;g=J[a+8>>2];i=J[g>>2];if(i){f=N[g+20>>2];c=Q(c*f);j=Q(f*N[b>>2]);k=Q(f*N[b+4>>2]);h=Q(1);a=0;f=Q(0);while(1){l=e+16|0;b=l+(a<<5)|0;J[b+8>>2]=0;N[b+4>>2]=k+Q(c*m);N[b>>2]=j+Q(c*h);J[b+24>>2]=0;f=Q(f+Q(.39269909262657166));h=Rj(f);N[b+16>>2]=j+Q(c*h);m=Hj(f);N[b+20>>2]=k+Q(c*m);a=a+1|0;if((a|0)!=16){continue}break}a=J[d+4>>2];b=J[d>>2];c=N[d+8>>2];N[e+12>>2]=N[g+12>>2];N[e+8>>2]=c;J[e>>2]=b;J[e+4>>2]=a;Zi[i|0](l,32,e,J[g+8>>2])}Ui=e+528|0}function Sla(a){a=a|0;var b=0,c=0,d=Q(0),e=Q(0),f=Q(0),g=0,h=0,i=Q(0),j=Q(0),k=0;c=Ui+-64|0;Ui=c;k=pj(c+44|0,a,1,36839,386);b=qj(a,1,J[79308],3640);g=J[b+8>>2];h=J[b+12>>2];a:{if(!(g|h)){break a}if(xk(J[b+4>>2],g,h)){break a}J[c>>2]=tj(J[b+8>>2],J[b+12>>2]);fj(a,102051,c)}b=J[b>>2];Rn(c+36|0,a,1,N[59873]);d=N[b+12>>2];e=N[b+20>>2];f=N[c+36>>2];i=N[b+24>>2];j=N[c+40>>2];N[c+12>>2]=Q(Q(e*f)+Q(i*j))+N[b+16>>2];N[c+8>>2]=d+Q(Q(i*f)-Q(e*j));d=N[79200];e=N[c+8>>2];f=N[c+12>>2];b=c+16|0;J[b+8>>2]=0;N[b+4>>2]=d*f;N[b>>2]=d*e;cl(a,b);oj(k);Ui=c- -64|0;return 1}function M4(a,b,c,d,e,f,g,h){a=a|0;b=b|0;c=c|0;d=d|0;e=e|0;f=f|0;g=g|0;h=h|0;b=Ui-2064|0;Ui=b;J[b+8>>2]=d;J[b>>2]=a+8;J[b+4>>2]=a+140;d=b+1040|0;Gj(d,1024,25974,b);a=-2;c=b+16|0;if(!kr(c,d)){d=Ui-96|0;Ui=d;a=-21;a:{if(!f|!g){break a}if(!vG(c,d)){a=-2;if((J[d+4>>2]&61440)!=32768){break a}c=ol(c,82700);if(!c){break a}if((um(c,e,0)|0)<0){vk(c);a=lr(J[245744]);break a}e=Sl(g,1,f,c);if(J[c+76>>2]<0){a=J[c>>2]}else{a=J[c>>2]}vk(c);if(a>>>5&1){a=lr(J[245744]);break a}J[h>>2]=e;a=0;break a}a=lr(J[245744])}Ui=d+96|0;a=a?(a|0)==-2?-2:-3:0}Ui=b+2064|0;return a|0}function Mn(a,b,c,d,e){var f=0,g=0,h=0,i=0,j=0;f=Ui-48|0;Ui=f;g=bE(a);a:{if(g){break a}g=uO(a);if(!g){g=0;break a}g=J[J[g+360>>2]+12>>2]}b:{if(!kj(a,1)){break b}g=J[J[g+80>>2]+8>>2];J[f+40>>2]=0;J[f+44>>2]=0;J[f+32>>2]=0;J[f+36>>2]=0;J[f+24>>2]=0;J[f+28>>2]=0;J[f+16>>2]=0;J[f+20>>2]=0;Sk(a,1,f+16|0,0);c:{if(!g){break c}h=J[g>>2];if(!h){break c}i=J[h+3216>>2];j=J[h+3220>>2]}if((i|0)!=J[f+16>>2]|(j|0)!=J[f+20>>2]){fj(a,120508,0)}g=xk(g,J[f+32>>2],J[f+36>>2]);if(g){break b}g=0;J[f>>2]=Ij(a,1,0);fj(a,70975,f)}Ui=f+48|0;Al(a,1,J[J[g+80>>2]+8>>2],b,d,e,c)}function DC(a){var b=0,c=0,d=0,e=0,f=0,g=0;g=J[a>>2];e=J[a+4>>2]-g|0;f=e>>2;a:{b:{b=J[a+48>>2];c:{if((b|0)!=-1){d=J[a+16>>2];if(b>>>0>=J[a+20>>2]-d>>3>>>0){break b}b=(b<<3)+d|0;J[a+48>>2]=J[b+4>>2];c=f+1|0;break c}c=f+1|0;d=J[a+16>>2];if(c>>>0>J[a+24>>2]-d>>3>>>0){break a}J[a+20>>2]=(c<<3)+d;if((e|0)==-4){break b}b=(f<<3)+d|0}J[b>>2]=f;J[b+4>>2]=-1;if(J[a+8>>2]-g>>2>>>0>>0){break a}J[a+4>>2]=(c<<2)+g;c=J[a+36>>2];a=J[a+32>>2];if(c-a>>>0<=e>>>0){break b}c=a+e|0;a=b-d>>3;J[c>>2]=a;return a}Z(145396,53895,487,84789);B()}Z(144782,53895,514,59583);B()}function Cy(a,b,c,d,e){var f=0,g=0,h=Q(0);f=Ui-160|0;Ui=f;J[f+156>>2]=0;g=1;a:{b=(c<<2)+b|0;if(J[b+4>>2]!=-2){g=J[a+8>>2]-J[a+12>>2]>>4;Nj(a,-1e4,J[d+12>>2]);Ok(a);Nj(a,-1e4,J[b+4>>2]);Nj(a,-1e4,J[d+12>>2]);b:{c:{if(!c){Nj(a,-1e4,J[d+12>>2]);break c}b=1;if((c&-2)!=2){break b}h=N[J[e>>2]+4>>2];b=J[a+8>>2];J[b+8>>2]=3;O[b>>3]=h;J[a+8>>2]=J[a+8>>2]+16}b=2}c=Ui-128|0;Ui=c;Ui=c+128|0;J[f+12>>2]=0;b=Ol(a,b,0,0);c=J[a+8>>2];J[c+8>>2]=0;J[a+8>>2]=c+16;Ok(a);if(J[a+8>>2]-J[a+12>>2]>>4!=(g|0)){break a}g=b?-1:1}Ui=f+160|0;return g}Z(143244,37648,149,10546);B()}function yL(a,b,c,d,e,f,g){var h=0,i=0,j=0,k=0,l=0,m=0,n=0,o=0,p=0,q=0,r=0;if(c){while(1){p=J[e>>2];n=(b<<2)+a|0;i=c>>>1|0;j=n+(i<<2)|0;m=P(J[j>>2],48);q=J[(p+m|0)+32>>2];k=n;h=i;if((c|0)!=1){while(1){l=h>>>1|0;r=(l<<2)+k|0;o=M[(P(J[r>>2],48)+p|0)+32>>2]>>0;k=o?r+4|0:k;h=o?(l^-1)+h|0:l;if(h){continue}break}}o=J[(d+m|0)+32>>2];h=c-i|0;while(1){i=h>>>1|0;m=(i<<2)+j|0;l=M[(P(J[m>>2],48)+p|0)+32>>2]>q>>>0;j=l?j:m+4|0;h=l?i:(i^-1)+h|0;if(h){continue}break}Zi[g|0](f,o,k-a>>2,j-k>>2);yL(a,b,k-n>>2,d,e,f,g);b=j-a>>2;c=c-(j-n>>2)|0;if(c){continue}break}}}function SH(a,b,c){var d=0,e=0,f=0;d=Ui-416|0;Ui=d;J[d+24>>2]=0;J[d+28>>2]=0;J[d+16>>2]=0;J[d+20>>2]=0;J[d+8>>2]=0;J[d+12>>2]=0;J[d>>2]=0;J[d+4>>2]=0;e=a+32|0;Iw(e);J[a+316>>2]=b;J[a+312>>2]=2268;J[a+28>>2]=1e4;J[a+24>>2]=48;b=ls(e,d,256);a:{if(b){break a}b=-56;e=J[a+24>>2];if(e>>>0>384|384-e>>>0<17){break a}f=d+32|0;ij(f,0,384);b=-52;if(Zi[J[a+312>>2]](J[a+316>>2],f,e)|0){break a}b=J[a+24>>2];if(c){hj(b+f|0,c,17);b=b+17|0}c=d+32|0;b=tU(c,c,b);b:{if(b){break b}b=yE(a,c);if(b){break b}J[a+16>>2]=1;b=0}Zi[J[66509]](d+32|0,0,384)|0}Ui=d+416|0;return b}function yH(a,b,c){var d=0,e=0,f=0,g=0,h=0,i=0,j=0;a:{f=J[a+4>>2]<<2;e=f;b:{if(e>>>0>>0){break b}e=c;if(f>>>0<=e>>>0){break b}e=J[a+8>>2];d=c;while(1){if(J[e+(d&-4)>>2]>>>(d<<3)&255){break a}d=d+1|0;if((f|0)!=(d|0)){continue}break}e=c}c:{if(!e){break c}i=e&1;d=0;if((e|0)!=1){j=e&-2;e=0;while(1){g=d&-4;H[b+d|0]=J[g+J[a+8>>2]>>2]>>>(d<<3&16);h=d|1;H[h+b|0]=J[J[a+8>>2]+g>>2]>>>(h<<3);d=d+2|0;e=e+2|0;if((j|0)!=(e|0)){continue}break}}if(!i){break c}H[b+d|0]=J[J[a+8>>2]+(d&-4)>>2]>>>(d<<3)}if(c>>>0<=f>>>0){return 0}ij(b+f|0,0,c-f|0);return 0}return-8}function m9(a){a=a|0;var b=0,c=0,d=0,e=0,f=0,g=0;d=Ui-16|0;Ui=d;g=J[a+8>>2]-J[a+12>>2]>>4;Fj(a,0,0);Fj(a,0,1);Nk(a,2321,0);ej(a,-2,5326);Mj(a,-2);Bj(a);c=qj(a,-1,J[219396],139183);gj(a,-2);a:{b:{c:{if(kj(a,1)){eD(a,c,Qj(a,1,d+12|0));break c}b=L[c+364>>1];e=L[98140];if((b|0)==(e|0)){break c}while(1){f=J[c+32>>2];if((J[c+36>>2]-f|0)/672>>>0<=b>>>0){break b}b=P(b,672)+f|0;eD(a,c,b);b=L[b+654>>1];if((e|0)!=(b|0)){continue}break}}if((g+1|0)!=J[a+8>>2]-J[a+12>>2]>>4){break a}Ui=d+16|0;return 1}Z(145396,53895,487,84789);B()}Z(143334,37682,3883,68852);B()}function a4(a){a=a|0;var b=0,c=0,d=0,e=0,f=0,g=0,h=0,i=0;b=Ui-48|0;Ui=b;f=a?J[a+124>>2]:0;i=pj(b+8|0,f,0,39205,106);h=b+28|0;c=a?J[a+124>>2]:0;d=pj(h,c,0,39205,76);xj(c,J[63192]);cK(a);g=Vj(c,-1);gj(c,-2);oj(d);if(g){J[b+28>>2]=a?J[a>>2]:0;a=a?J[a+4>>2]:0;J[b+36>>2]=f;J[b+32>>2]=a;e=Ui-16|0;Ui=e;a=J[215795];if(a){while(1){d=J[a+32>>2];a:{if(!d){break a}c=K[a+52|0];if(!(c&2)){break a}H[a+52|0]=c&253;if(!(Zi[d|0](h)|0)){break a}J[e>>2]=a+4;dj(4,91468,28894,e)}a=J[a>>2];if(a){continue}break}}Ui=e+16|0;hk(f,-1e4,J[g+4>>2]);J[g+4>>2]=-2}oj(i);Ui=b+48|0}function gv(a,b){var c=0,d=0,e=0,f=Q(0);a:{b:{c=b&65535;d=J[a+36>>2];a=J[a+32>>2];if(c>>>0<(d-a|0)/672>>>0){a=a+P(c,672)|0;if(L[a+648>>1]!=(b>>>16|0)){break b}if((c|0)!=L[a+650>>1]){break a}b=0;c:{if(J[a+504>>2]!=2){break c}d=J[a+520>>2];if(!d){break c}b=J[a+508>>2];c=b&8191;b=(b>>>13&8191)-c|0;e=b-1|0;f=Q(N[a+544>>2]*Q(b|0));d:{if(Q(R(f))=0?(a|0)<(e|0)?a:e:0)+c|0;if((a|0)<0){break c}b=(a<<5)+d|0}return b}Z(145396,53895,487,84789);B()}Z(47372,40876,188,69601);B()}Z(5388,40876,189,69601);B()}function cp(a,b,c,d,e){var f=0,g=0;f=Ui-16|0;Ui=f;g=(b|0)!=1;b=Xa(a|0,b|0,c|0,d|0,e|0,0)|0;a:{b:{if(g|(b|0)!=-50){break b}b=-50;c:{switch(c-63|0){case 3:case 4:if(M[e>>2]<=15){J[245744]=28;a=-1;break a}J[f+4>>2]=8;b=a;a=(c|0)==66?20:c;b=Xa(b|0,1,((a|0)==67?21:a)|0,f+8|0,f+4|0,0)|0;if((b|0)<0){break b}a=J[f+8>>2];J[d>>2]=a;J[d+4>>2]=a>>31;J[d+8>>2]=J[f+12>>2];J[e>>2]=16;break b;case 0:case 1:break c;default:break b}}b=a;a=(c|0)==63?29:c;b=Xa(b|0,1,((a|0)==64?35:a)|0,d|0,e|0,0)|0}if(b>>>0>=4294963201){J[245744]=0-b;a=-1}else{a=b}}Ui=f+16|0;return a}function X0(a,b){a=a|0;b=b|0;var c=0,d=0,e=0,f=0,g=0;c=Ui-160|0;Ui=c;d=-20352;e=J[a>>2];a:{if(!e|(e|0)!=J[b>>2]){break a}e=b+136|0;if(_j(a+136|0,e)){break a}f=b+148|0;if(_j(a+148|0,f)){break a}g=b+160|0;if(_j(a+160|0,g)){break a}a=c+124|0;J[a+8>>2]=0;J[a>>2]=1;J[a+4>>2]=0;J[a+20>>2]=0;J[a+12>>2]=1;J[a+16>>2]=0;J[a+32>>2]=0;J[a+24>>2]=1;J[a+28>>2]=0;Cw(c);js(c,J[b>>2]);d=cu(c,a,b+124|0,b+40|0,0,0);b:{if(d){break b}c:{if(_j(a,e)){break c}if(_j(c+136|0,f)){break c}if(_j(c+148|0,g)){break c}d=0;break b}d=-20352}Cp(c+124|0);po(c)}Ui=c+160|0;return d|0}function RB(a){var b=0,c=0,d=0,e=0,f=0,g=0,h=0,i=0;c=Ui-16|0;Ui=c;g=a+12|0;f=J[J[J[a>>2]+8>>2]+32>>2];d=(f<<1>>>0)/3|0;SC(g,d>>>0<=1?1:d,f);if(f){i=c+12|0;while(1){b=J[J[J[a>>2]+8>>2]+28>>2]+P(h,48)|0;a:{if(!(K[b+32|0]&2)){break a}J[c+12>>2]=0;J[c+8>>2]=b;b:{d=J[a+8>>2];if(!d){break b}if(!TB(d,J[b>>2],J[b+4>>2],i)){break b}J[c>>2]=J[b+8>>2];dj(4,96538,60336,c);break a}d=J[b+16>>2];b=J[b+20>>2];e=J[a+36>>2];if((e|0)==((J[a+28>>2]-J[a+20>>2]|0)/24|0)){e=e+32|0;SC(g,(e<<1>>>0)/3|0,e)}nN(g,d,b,c+8|0)}h=h+1|0;if((h|0)!=(f|0)){continue}break}}Ui=c+16|0}function kt(a,b){var c=0,d=0,e=0,f=0;a:{b:{c:{d:{c=(K[b+136|0]<<4)+a|0;d=J[c+1084>>2];f=c+1080|0;c=J[f>>2];if((d|0)!=(c|0)){e=L[b+142>>1]&32767;if(e>>>0>=d-c>>1>>>0){break d}d=d-2|0;b=L[d>>1];I[c+(e<<1)>>1]=b;J[f+4>>2]=d;if(c>>>0>d>>>0){break c}c=J[a+1040>>2];a=J[a+1036>>2];if(b>>>0>=c-a>>2>>>0){break b}c=b;a=J[a+(b<<2)>>2];b=J[a+140>>2];if((c|0)!=(b&32767)){break a}J[a+140>>2]=b&-2147418113|e<<16;return}Z(112446,38296,702,5512);B()}Z(145203,38296,703,5512);B()}Z(12682,53895,540,43537);B()}Z(145396,53895,487,84789);B()}Z(5054,38296,708,5512);B()}function Lha(a){a=a|0;var b=0,c=0,d=0,e=0;b=Ui-384|0;Ui=b;d=J[a+8>>2]-J[a+12>>2]>>4;c=b+56|0;ij(c,0,72);JQ(a,c);J[b+52>>2]=0;a:{b:{c=xQ(J[78228],c,b+52|0);c:{if(c){if((d|0)!=J[a+8>>2]-J[a+12>>2]>>4){break b}d=J[b+64>>2];e=J[b+68>>2];J[b+32>>2]=tj(d,e);J[b+24>>2]=d;J[b+28>>2]=e;J[b+16>>2]=c;d=b+128|0;Gj(d,256,(c|0)==-3?31635:(c|0)==-15?31570:31677,b+16|0);J[b>>2]=d;c=fj(a,31902,b);break c}Bk(a,J[b+64>>2],J[b+68>>2]);c=1;if((d+1|0)!=J[a+8>>2]-J[a+12>>2]>>4){break a}}Ui=b+384|0;return c|0}Z(143244,42133,865,63426);B()}Z(143386,42133,870,63426);B()}function o6(a){a=a|0;var b=0,c=0,d=0,e=0,f=0,g=0,h=0,i=0,j=0,k=0;c=Ui-48|0;Ui=c;i=J[a+8>>2]-J[a+12>>2]>>4;d=Vj(a,1);b=J[d+8>>2];e=J[d+12>>2];j=J[d>>2];a:{if(!kk(a,2)){J[c>>2]=tj(b,e);b=fj(a,19662,c);break a}d=sl(a,2);if((d|0)<=0){b=tj(b,e);J[c+20>>2]=d;J[c+16>>2]=b;b=fj(a,110645,c+16|0);break a}f=d-1|0;b:{if(Hs(a,3)){f=f<<2;g=an(a,3);k=9;h=4;break b}g=Qm(a,3);h=1}if(dC(j,b,e,g,h,f,k)){b=tj(b,e);J[c+36>>2]=d;J[c+32>>2]=b;b=fj(a,72660,c+32|0);break a}b=0;if(J[a+8>>2]-J[a+12>>2]>>4==(i|0)){break a}Z(143244,37616,306,4866);B()}Ui=c+48|0;return b|0}function nn(a,b,c){var d=0,e=0,f=0,g=0,h=0,i=0,j=0;f=Ui-16|0;Ui=f;e=bj(b);i=Yi;a:{d=J[a+4>>2];g=J[a>>2];b:{if((d|0)==(g|0)){break b}d=d-g>>4;j=d>>>0<=1?1:d;d=0;while(1){h=g+(d<<4)|0;if((e|0)!=J[h>>2]|J[h+4>>2]!=(i|0)){d=d+1|0;if((j|0)!=(d|0)){continue}break b}break}e=J[h+8>>2];c=J[a+16>>2];if(e>>>0>=J[a+20>>2]-c>>>0){break a}c=c+e|0}J[f+12>>2]=0;d=J[216331];c:{if(!d){break c}while(1){d:{e=J[d+12>>2];if(e){if(Zi[e|0](a,b,c,f+12|0)|0){break d}}d=J[d+24>>2];if(d){continue}break c}break}c=J[f+12>>2]}Ui=f+16|0;return c}Z(145396,54052,487,84789);B()}function CF(a,b,c,d,e){var f=0,g=0,h=0;f=Ui-32|0;Ui=f;J[f+20>>2]=b;J[f+24>>2]=a;J[f+16>>2]=c;J[f+12>>2]=d;J[f+8>>2]=e;Iz(a,b,c,d);a:{if(M[e>>2]>=M[d>>2]){break a}d=f+12|0;e=J[d>>2];g=J[e>>2];h=e;e=J[f+8>>2];J[h>>2]=J[e>>2];J[e>>2]=g;if(M[J[f+12>>2]>>2]>=M[c>>2]){break a}c=f+16|0;e=J[c>>2];g=J[e>>2];d=J[d>>2];J[e>>2]=J[d>>2];J[d>>2]=g;if(M[J[f+16>>2]>>2]>=M[b>>2]){break a}b=f+20|0;d=J[b>>2];e=J[d>>2];c=J[c>>2];J[d>>2]=J[c>>2];J[c>>2]=e;if(M[J[f+20>>2]>>2]>=M[a>>2]){break a}a=J[f+24>>2];c=J[a>>2];d=a;a=J[b>>2];J[d>>2]=J[a>>2];J[a>>2]=c}Ui=f+32|0}function rr(a){aC(a+260|0);a=ij(a,0,336);J[a+20>>2]=0;J[a+24>>2]=0;J[a+16>>2]=1065353216;J[a+28>>2]=0;J[a+32>>2]=0;J[a+40>>2]=0;J[a+44>>2]=0;J[a+36>>2]=1065353216;J[a+48>>2]=0;J[a+52>>2]=0;J[a+60>>2]=0;J[a+64>>2]=0;J[a+56>>2]=1065353216;J[a+68>>2]=0;J[a+72>>2]=0;J[a+84>>2]=0;J[a+88>>2]=0;J[a+76>>2]=1065353216;J[a+80>>2]=1065353216;J[a+92>>2]=0;J[a+96>>2]=0;J[a+104>>2]=0;J[a+108>>2]=0;J[a+100>>2]=1065353216;J[a+112>>2]=0;J[a+116>>2]=0;J[a+120>>2]=1065353216;J[a+124>>2]=0;J[a+128>>2]=0;J[a+132>>2]=0;J[a+136>>2]=0;J[a+140>>2]=1065353216;return a}function ju(a){var b=0,c=0,d=0,e=0,f=0,g=0,h=0,i=0;g=Ui-16|0;Ui=g;e=J[a+8>>2];f=Ij(e,-1,g+12|0);b=J[g+12>>2];c=a+12|0;d=J[a>>2];a:{if(b>>>0<=(c-d|0)+1024>>>0){hj(d,f,b);J[a>>2]=J[a>>2]+J[g+12>>2];gj(e,-2);break a}if((c|0)!=(d|0)){mj(J[a+8>>2],c,d-c|0);J[a>>2]=c;J[a+4>>2]=J[a+4>>2]+1;Pk(e,-2)}b=J[a+4>>2];J[a+4>>2]=b+1;if((b|0)<=0){break a}h=J[a+8>>2];i=fl(h,-1);f=1;while(1){b:{b=f;c=fl(h,b^-1);f=b+1|0;d=J[a+4>>2];e=c>>>0>>0|(d-b|0)>8;if(!e){break b}i=c+i|0;if((f|0)<(d|0)){continue}}break}b=e?f:b;lm(h,b);J[a+4>>2]=(J[a+4>>2]-b|0)+1}Ui=g+16|0}function jv(a,b,c){var d=0,e=0,f=0,g=0,h=0;a:{b:{d=b&65535;e=J[a+32>>2];if(d>>>0<(J[a+36>>2]-e|0)/672>>>0){e=e+P(d,672)|0;if(L[e+648>>1]!=(b>>>16|0)){break b}if((d|0)!=L[e+650>>1]){break a}d=J[a+52>>2];f=J[a+48>>2];c:{if((d|0)==(f|0)){break c}g=e+544|0;a=(d-f|0)/72|0;h=a>>>0<=1?1:a;a=0;while(1){d=f+P(a,72)|0;if(!(J[d>>2]==(b|0)&J[d+4>>2]==(g|0))){a=a+1|0;if((h|0)!=(a|0)){continue}break c}break}H[d+68|0]=K[d+68|0]|4}if(!c){J[e+536>>2]=0;J[e+540>>2]=0}return}Z(145396,53895,487,84789);B()}Z(47372,40876,188,69601);B()}Z(5388,40876,189,69601);B()}function S8(a){a=a|0;var b=0,c=0,d=0,e=0,f=0,g=0;Bj(a);c=qj(a,-1,J[219396],139183);gj(a,-2);a=J[c+32>>2];b=J[c+36>>2];a:{if((a|0)==(b|0)){break a}b=(b-a|0)/672|0;d=b>>>0<=1?1:b;g=d&1;if(b>>>0>=2){d=d&-2;while(1){b=P(e,672)+a|0;if(H[b+468|0]&1){b=hj(b,b+192|0,192);J[b+476>>2]=J[b+464>>2]}b=P(e|1,672)+a|0;if(H[b+468|0]&1){b=hj(b,b+192|0,192);J[b+476>>2]=J[b+464>>2]}e=e+2|0;f=f+2|0;if((d|0)!=(f|0)){continue}break}}if(!g){break a}a=P(e,672)+a|0;if(!(H[a+468|0]&1)){break a}a=hj(a,a+192|0,192);J[a+476>>2]=J[a+464>>2]}J[c+52>>2]=J[c+48>>2];return 0}function $D(a,b){var c=Q(0),d=0,e=0,f=Q(0),g=Q(0),h=Q(0),i=Q(0),j=Q(0),k=Q(0),l=Q(0),m=Q(0),n=Q(0),o=Q(0),p=Q(0);d=J[b+80>>2];e=J[d+3128>>2];b=J[b+140>>2]&32767;if(b>>>0>=J[d+3132>>2]-e>>6>>>0){Z(145396,53895,487,84789);B()}b=e+(b<<6)|0;f=N[b+12>>2];g=N[b+8>>2];h=N[b+4>>2];i=N[b>>2];j=N[b+28>>2];k=N[b+24>>2];l=N[b+20>>2];m=N[b+16>>2];c=N[b+44>>2];n=Q(c*c);c=N[b+40>>2];o=Q(c*c);c=N[b+36>>2];p=Q(c*c);c=N[b+32>>2];N[a+8>>2]=Y(Q(n+Q(o+Q(p+Q(c*c)))));N[a+4>>2]=Y(Q(Q(j*j)+Q(Q(k*k)+Q(Q(l*l)+Q(m*m)))));N[a>>2]=Y(Q(Q(f*f)+Q(Q(g*g)+Q(Q(h*h)+Q(i*i)))))}function gZ(a){a=a|0;var b=0,c=0,d=0,e=0,f=0,g=0;e=Tn(a,1066);f=_o(a,2,32);a:{if(R(f)<2147483648){b=~~f;break a}b=-2147483648}c=Ui+-64|0;Ui=c;d=J[e>>2];J[c+48>>2]=0;d=nm(d,3,c+48|0);g=J[e>>2];J[c+32>>2]=d&-2049;nm(g,4,c+32|0);d=0;b=Li(J[e>>2],b|0,0,0,0,0)|0;if(b>>>0>=4294963201){J[245744]=0-b;b=-1}d=b?J[245744]:d;b=J[e>>2];J[c+16>>2]=0;b=nm(b,3,c+16|0);e=J[e>>2];J[c>>2]=b|2048;nm(e,4,c);Ui=c- -64|0;if(d){b=J[a+8>>2];J[b+8>>2]=0;J[a+8>>2]=b+16;xj(a,Tm(d));return 2}Uq(a,1054,1);b=J[a+8>>2];J[b+8>>2]=3;O[b>>3]=1;J[a+8>>2]=J[a+8>>2]+16;return 1}function Zla(a){a=a|0;var b=0,c=0,d=Q(0),e=Q(0),f=Q(0),g=0,h=0,i=Q(0),j=0;c=Ui+-64|0;Ui=c;j=pj(c+44|0,a,1,36839,404);b=qj(a,1,J[79308],3640);g=J[b+8>>2];h=J[b+12>>2];a:{if(!(g|h)){break a}if(xk(J[b+4>>2],g,h)){break a}J[c>>2]=tj(J[b+8>>2],J[b+12>>2]);fj(a,102051,c)}b=J[b>>2];Rn(c+36|0,a,1,N[59873]);d=N[b+24>>2];e=Q(N[c+40>>2]-N[b+16>>2]);f=N[b+20>>2];i=Q(N[c+36>>2]-N[b+12>>2]);N[c+12>>2]=Q(d*e)-Q(f*i);N[c+8>>2]=Q(d*i)+Q(e*f);d=N[79200];e=N[c+8>>2];f=N[c+12>>2];b=c+16|0;J[b+8>>2]=0;N[b+4>>2]=d*f;N[b>>2]=d*e;cl(a,b);oj(j);Ui=c- -64|0;return 1}function Mpa(a,b,c,d){a=a|0;b=b|0;c=c|0;d=d|0;var e=Q(0),f=Q(0),g=Q(0),h=Q(0),i=Q(0),j=Q(0),k=Q(0),l=Q(0),m=Q(0),n=Q(0);h=N[a+60>>2];g=N[a+72>>2];i=N[a+88>>2];e=N[a+56>>2];m=N[a+76>>2];k=N[a+84>>2];l=N[a+92>>2];f=N[a+52>>2];j=N[a+68>>2];J[c+12>>2]=0;j=Q(j-f);i=Q(i-e);g=Q(g-e);f=Q(k-f);e=Q(Q(j*i)-Q(g*f));k=e;n=Q(e*e);e=Q(l-h);l=Q(g*e);g=Q(m-h);h=Q(l-Q(g*i));e=Q(Q(g*f)-Q(j*e));f=Q(Q(1)/Q(Y(Q(n+Q(Q(h*h)+Q(e*e))))));N[c+8>>2]=k*f;N[c+4>>2]=e*f;N[c>>2]=h*f;b=J[a+64>>2];J[d+8>>2]=J[a+60>>2];J[d+12>>2]=b;b=J[a+56>>2];J[d>>2]=J[a+52>>2];J[d+4>>2]=b}function CO(a,b){var c=0,d=0,e=0,f=0,g=Q(0);a:{b:{d=b&65535;c=J[a+32>>2];if(d>>>0<(J[a+36>>2]-c|0)/672>>>0){c=c+P(d,672)|0;if(L[c+648>>1]!=(b>>>16|0)){break b}if((d|0)!=L[c+650>>1]){break a}c:{if(!(J[c+536>>2]|J[c+540>>2])){break c}e=J[a+52>>2];d=J[a+48>>2];if((e|0)==(d|0)){break c}f=c+544|0;a=(e-d|0)/72|0;e=a>>>0<=1?1:a;a=0;while(1){c=d+P(a,72)|0;if(!(J[c>>2]==(b|0)&J[c+4>>2]==(f|0))){a=a+1|0;if((e|0)!=(a|0)){continue}break c}break}g=N[c+28>>2]}return g}Z(145396,53895,487,84789);B()}Z(47372,40876,188,69601);B()}Z(5388,40876,189,69601);B()}function cda(a){a=a|0;var b=0,c=0,d=0,e=0,f=0,g=0,h=0;b=Ui-304|0;Ui=b;f=J[a+8>>2]-J[a+12>>2]>>4;c=mk(a,1);e=Yi;d=Iu(a,2);J[b+44>>2]=0;J[b+40>>2]=0;on(J[d>>2],b+40|0,b+44|0);d=VB(J[78228],c,e,J[b+40>>2],J[b+44>>2]);g=J[a+8>>2]-J[a+12>>2]>>4;a:{b:{c:{if(d){if((f|0)!=(g|0)){break b}J[b+32>>2]=tj(c,e);J[b+24>>2]=c;J[b+28>>2]=e;J[b+16>>2]=d;c=b+48|0;Gj(c,256,(d|0)==-3?31635:(d|0)==-15?31570:31677,b+16|0);J[b>>2]=c;h=fj(a,31902,b);break c}if((f|0)!=(g|0)){break a}}Ui=b+304|0;return h|0}Z(143244,42133,390,15709);B()}Z(143244,42133,393,15709);B()}function KC(a,b,c){var d=0,e=0,f=0,g=0,h=0,i=0;d=Ui-128|0;Ui=d;RN(J[J[a>>2]+72>>2],b,d);a:{if(!K[d|0]){break a}e=bv(d);b=J[a>>2];f=J[b+12>>2];if(!f){break a}b:{g=J[b+8>>2];a=J[g+((e>>>0)%(f>>>0)<<2)>>2];if((a|0)!=-1){h=J[b+16>>2];while(1){a=P(a,184)+h|0;if((e|0)==J[a>>2]){break b}a=J[a+180>>2];if((a|0)!=-1){continue}break}}e=J[215892];a=J[((e>>>0)%(f>>>0)<<2)+g>>2];if((a|0)==-1){break a}b=J[b+16>>2];while(1){a=b+P(a,184)|0;if((e|0)==J[a>>2]){break b}a=J[a+180>>2];if((a|0)!=-1){continue}break}break a}ek(c,d,128);i=a+4|0}Ui=d+128|0;return i}function Hu(a){var b=0,c=0,d=0,e=0;c=Ui-32|0;Ui=c;pj(c+12|0,a,1,37704,997);b=J[84546];d=J[a+8>>2];J[d+8>>2]=3;O[d>>3]=b|0;J[a+8>>2]=J[a+8>>2]+16;Ck(a,-10002);a:{b:{c:{if(sm(a,-1)){mj(a,173056,32);Ll(a,-2);Rl(a,-2);if(kj(a,-1)){break c}gj(a,-2)}gj(a,-2);b=J[a+8>>2];J[b+8>>2]=0;J[a+8>>2]=b+16;break b}Pk(a,-2);Wk(a,1,1);if((kj(a,-1)|0)!=3){break a}e=ok(a,-1);gj(a,-2);if(R(e)<2147483648){b=~~e}else{b=-2147483648}if((b|0)==-2){b=J[a+8>>2];J[b+8>>2]=0;J[a+8>>2]=b+16;break b}Nj(a,-1e4,b)}oj(c+12|0);Ui=c+32|0;return}Z(90514,37704,1017,67814);B()}function tN(a,b,c){var d=0,e=0,f=0,g=0,h=0;d=J[a+4>>2];if(d){a:{b:{c:{d:{e:{f=J[a>>2]+(mxa(b,c,d)<<2)|0;e=J[f>>2];if((e|0)!=-1){g=J[a+8>>2];d=g+P(e,136)|0;if(J[d>>2]!=(b|0)|J[d+4>>2]!=(c|0)){break e}break d}Z(85666,55689,340,62656);B()}while(1){e=J[d+128>>2];if((e|0)==-1){break c}h=d;d=g+P(e,136)|0;if(J[d>>2]!=(b|0)|J[d+4>>2]!=(c|0)){continue}break}}J[a+24>>2]=J[a+24>>2]-1;b=J[d+128>>2];if(h){break b}J[f>>2]=b;break a}Z(152754,55689,366,62656);B()}J[h+128>>2]=b}b=J[a+20>>2];J[a+20>>2]=e;J[d+128>>2]=b;return}Z(113800,55689,334,62656);B()}function gR(a){a=a|0;var b=0;b=Ui-32|0;Ui=b;J[b+24>>2]=0;J[b+28>>2]=0;J[b+16>>2]=0;J[b+20>>2]=0;J[b+8>>2]=0;J[b+12>>2]=0;J[b>>2]=0;J[b+4>>2]=0;H[b|0]=0;H[b+1|0]=0;H[b+2|0]=0;H[b+3|0]=0;H[b+4|0]=0;H[b+5|0]=0;H[b+6|0]=0;H[b+7|0]=0;H[b+24|0]=0;H[b+25|0]=0;H[b+26|0]=0;H[b+27|0]=0;H[b+28|0]=0;H[b+29|0]=0;H[b+30|0]=0;H[b+31|0]=0;H[b+16|0]=0;H[b+17|0]=0;H[b+18|0]=0;H[b+19|0]=0;H[b+20|0]=0;H[b+21|0]=0;H[b+22|0]=0;H[b+23|0]=0;H[b+8|0]=0;H[b+9|0]=0;H[b+10|0]=0;H[b+11|0]=0;H[b+12|0]=0;H[b+13|0]=0;H[b+14|0]=0;H[b+15|0]=0;wm(a,b);Ui=b+32|0;return 1}function g0(a,b,c){a=a|0;b=b|0;c=c|0;var d=0,e=0,f=0,g=0,h=0,i=0,j=0;d=-24832;if(!(!a|!c)){d=K[(a+b|0)-1|0];e=b-d|0;J[c>>2]=e;c=!d|b>>>0>>0;a:{if(!b){break a}g=b&3;b:{if(b>>>0<4){b=0;break b}j=b&-4;b=0;while(1){f=(b>>>0>=e>>>0?d^K[a+b|0]:0)|c;c=b|1;f=f|(c>>>0>=e>>>0?d^K[c+a|0]:0);c=b|2;f=f|(c>>>0>=e>>>0?d^K[c+a|0]:0);c=b|3;c=f|(c>>>0>=e>>>0?d^K[c+a|0]:0);b=b+4|0;h=h+4|0;if((j|0)!=(h|0)){continue}break}}if(!g){break a}while(1){c=(b>>>0>=e>>>0?d^K[a+b|0]:0)|c;b=b+1|0;i=i+1|0;if((i|0)!=(g|0)){continue}break}}d=c&255?-25088:0}return d|0}function TV(a){var b=0,c=0,d=0,e=0,f=0,g=0,h=0;d=J[a+16>>2];b=J[d+48>>2];c=J[b>>2];a:{if((b|0)==(c|0)){J[d+48>>2]=0;break a}J[b>>2]=J[c>>2]}J[c>>2]=J[J[d+112>>2]>>2];J[J[d+112>>2]>>2]=c;H[c+5|0]=K[d+20|0]&3|K[c+5|0]&248;b=J[c+8>>2];b:{if(!b|K[b+6|0]&4){break b}b=Zo(b,2,J[J[a+16>>2]+196>>2]);if(!b){break b}f=J[d+64>>2];g=K[a+57|0];H[a+57|0]=0;J[d+64>>2]=J[d+68>>2]<<1;h=J[b+4>>2];e=J[a+8>>2];J[e>>2]=J[b>>2];J[e+4>>2]=h;J[e+8>>2]=J[b+8>>2];b=J[a+8>>2];J[b+24>>2]=7;J[b+16>>2]=c;c=J[a+8>>2];J[a+8>>2]=c+32;$o(a,c,0);H[a+57|0]=g;J[d+64>>2]=f}}function h0(a,b,c){a=a|0;b=b|0;c=c|0;var d=0,e=0,f=0,g=0,h=0,i=0,j=0,k=0,l=0,m=0,n=0;d=-24832;if(!(!a|!c)){J[c>>2]=0;if(!b){return-25088}l=b&1;a:{if((b|0)==1){i=128;d=0;break a}m=b&-2;i=128;d=0;while(1){f=d;d=b-1|0;h=d+a|0;e=f|K[h|0]!=0;f=(f|0)==(e|0);g=(f?0:d)|g;J[c>>2]=g;n=K[h|0];b=b-2|0;j=b+a|0;d=e|K[j|0]!=0;h=(e|0)==(d|0);g=(h?0:b)|g;J[c>>2]=g;e=(f?0:n)^i;f=h?0:K[j|0];i=e^f;k=k+2|0;if((m|0)!=(k|0)){continue}break}}if(l){b=b-1|0;e=b+a|0;a=(K[e|0]!=0|d)==(d|0);J[c>>2]=(a?0:b)|g;f=a?0:K[e|0];e=i}d=(f&255)!=(e&255)?-25088:0}return d|0}function Yu(a){var b=0,c=0;b=J[a+16>>2];if(b){while(1){c=J[b+92>>2];if(c){Zi[c|0](b)}b=J[b+88>>2];if(b){continue}break}}cj(J[a+24>>2]);b=J[a+40>>2];if(b){while(1){c=J[b+4100>>2];cj(b);b=c;if(b){continue}break}}b=J[a+44>>2];if(b){while(1){c=J[b+4100>>2];cj(b);b=c;if(b){continue}break}}b=J[a+36>>2];if(b){cj(b)}a:{b=J[a+32>>2];if(b){cj(b);break a}Z(45231,41854,124,61302);B()}On(J[a+28>>2]);J[a+40>>2]=0;J[a+44>>2]=0;J[a+32>>2]=0;J[a+36>>2]=0;J[a+24>>2]=0;J[a+28>>2]=0;J[a+16>>2]=0;J[a+20>>2]=0;J[a+8>>2]=0;J[a+12>>2]=0;J[a>>2]=0;J[a+4>>2]=0}function f0(a,b,c){a=a|0;b=b|0;c=c|0;var d=0,e=0,f=0,g=0,h=0,i=0;d=-24832;if(!(!a|!c)){g=c;e=b-1|0;c=K[e+a|0];d=b-c|0;J[g>>2]=d;c=!c|b>>>0>>0;a:{if(!e){break a}g=e&3;b:{if(b-2>>>0<3){b=0;break b}i=e&-4;b=0;e=0;while(1){f=(b>>>0>=d>>>0?K[a+b|0]:0)|c;c=b|1;f=f|(c>>>0>=d>>>0?K[c+a|0]:0);c=b|2;f=f|(c>>>0>=d>>>0?K[c+a|0]:0);c=b|3;c=f|(c>>>0>=d>>>0?K[c+a|0]:0);b=b+4|0;e=e+4|0;if((i|0)!=(e|0)){continue}break}}if(!g){break a}while(1){c=(b>>>0>=d>>>0?K[a+b|0]:0)|c;b=b+1|0;h=h+1|0;if((h|0)!=(g|0)){continue}break}}d=c&255?-25088:0}return d|0}function UI(a,b){var c=0,d=0,e=0,f=0;Fj(a,0,0);f=J[a+8>>2]-J[a+12>>2]>>4;mj(a,66013,4);xj(a,J[b>>2]);Kj(a,f);mj(a,43427,2);mj(a,25917,5);c=J[b+4>>2];Fj(a,0,0);if(!(!c|!J[c>>2])){d=1;while(1){e=J[a+8>>2];J[e+8>>2]=3;O[e>>3]=d>>>0;J[a+8>>2]=J[a+8>>2]+16;xj(a,J[c>>2]);Kj(a,-3);d=d+1|0;e=J[c+4>>2];c=c+4|0;if(e){continue}break}}Kj(a,f);Fj(a,0,0);c=J[b+16>>2];if(!(!c|!J[c>>2])){d=1;while(1){b=J[a+8>>2];J[b+8>>2]=3;O[b>>3]=d>>>0;J[a+8>>2]=J[a+8>>2]+16;xj(a,dB(J[J[c>>2]>>2]));Kj(a,-3);d=d+1|0;b=J[c+4>>2];c=c+4|0;if(b){continue}break}}Kj(a,f)}function NM(a){var b=0,c=0,d=0;b=Ui-3264|0;Ui=b;c=b+2240|0;hj(c,196352,1024);d=yj(c);cm(a,J[71978],c+d|0,1024-d|0);a=b+52|0;ep(c,a);c=bo(bj(a),Yi);a:{if(!c){J[b>>2]=a;dj(4,95071,35555,b);a=0;break a}a=0;J[b+48>>2]=0;if(Nn(c,b+52|0,J[245391],b+48|0)){J[b+32>>2]=b+2240;dj(4,95071,146785,b+32|0);break a}a=J[b+48>>2];b:{if(!a){break b}a=or(J[245390],J[71977],a,10,1);if(a){a=a+21|0;if(a>>>0>21){a=97515}else{a=J[(a<<2)+223356>>2]}J[b+20>>2]=a;J[b+16>>2]=b+2240;dj(4,95071,31227,b+16|0);break b}Mu(J[245390])}a=J[b+48>>2]}Ui=b+3264|0;return a}function zq(a,b){var c=0,d=0,e=0,f=0;e=a+2112|0;a:{d=J[a+2120>>2];c=J[a+2116>>2];f=(d-c|0)/48|0;if(f>>>0>>0){if(H[a+2124|0]&1){break a}c=(d-J[a+2112>>2]|0)/48|0;d=b-f|0;lj(c+(d>>>0<=256?256:d)|0,48,e,a+2120|0,a+2116|0);if(H[a+2188|0]&1){break a}lj((J[a+2120>>2]-J[a+2112>>2]|0)/48|0,4,a+2176|0,a+2184|0,a+2180|0);c=J[a+2116>>2];d=J[a+2120>>2]}f=b;b=J[e>>2];c=c-b|0;e=f+((c|0)/48|0)|0;if((d-b|0)/48>>>0>=e>>>0){J[a+2224>>2]=-1;J[a+2228>>2]=0;J[a+2116>>2]=b+P(e,48);return b+c|0}Z(144782,53895,514,59583);B()}Z(151729,53895,501,2284);B()}function vt(a,b,c){var d=0,e=0,f=0,g=0,h=0,i=0;a:{b:{c:{d:{e:{if(b>>>0<=c>>>0){f=J[a>>2];if(f>>>0>b>>>0){break e}g=J[a+4>>2];d=(g<<2)+f|0;if(d>>>0>>0){break e}if(c>>>0>d>>>0){break d}h=b-f|0;e=h>>2;if((e|0)<0){break c}i=c-b|0;d=i>>2;if((d|0)<0){break b}e=d+e|0;if(e>>>0>g>>>0){break a}if((b|0)!=(c|0)){b=f+h|0;el(b,b+i|0,g-e<<2);J[a+4>>2]=J[a+4>>2]-d}return}Z(71469,54122,782,62650);B()}Z(145407,54122,783,62650);B()}Z(145444,54122,784,62650);B()}Z(114101,54122,789,62650);B()}Z(114101,54122,796,62650);B()}Z(58855,54122,729,62650);B()}function ut(a,b,c){var d=0,e=0,f=0,g=0,h=0,i=0;a:{b:{c:{d:{e:{if(b>>>0<=c>>>0){f=J[a>>2];if(f>>>0>b>>>0){break e}g=J[a+4>>2];d=(g<<1)+f|0;if(d>>>0>>0){break e}if(c>>>0>d>>>0){break d}h=b-f|0;e=h>>1;if((e|0)<0){break c}i=c-b|0;d=i>>1;if((d|0)<0){break b}e=d+e|0;if(e>>>0>g>>>0){break a}if((b|0)!=(c|0)){b=f+h|0;el(b,b+i|0,g-e<<1);J[a+4>>2]=J[a+4>>2]-d}return}Z(71469,54122,782,62650);B()}Z(145407,54122,783,62650);B()}Z(145444,54122,784,62650);B()}Z(114101,54122,789,62650);B()}Z(114101,54122,796,62650);B()}Z(58855,54122,729,62650);B()}function mJ(a,b){var c=0,d=0,e=0,f=0,g=0,h=0;e=Ui-48|0;Ui=e;a:{b:{g=K[255040];if((g|0)!=46){d=a;while(1){c:{c=K[d|0];d:{if((c-48&255)>>>0<10){break d}f=c-43|0;if(f>>>0<=3&(f|0)!=1){break d}if(((c|32)-122&255)>>>0<231){break c}}d=d+1|0;continue}break}if((a|0)==(d|0)){J[b>>2]=a;break a}c=e+16|0;d=d-a|0;if((d|0)>=32){c=sj(d+1|0);if(!c){break b}}c=hj(c,a,d);H[c+d|0]=0;f=Hk(c,46);if(f){H[f|0]=g}h=gw(c,e+12|0);J[b>>2]=(J[e+12>>2]-c|0)+a;if((d|0)<32){break a}cj(c);break a}h=gw(a,b);break a}yl(3003,13,1,J[53386]);Rv();B()}Ui=e+48|0;return h}function eH(a,b){var c=0,d=0;d=-1;if(b>>>0>3){while(1){c=J[(((K[a|0]^d)&255)<<2)+184704>>2]^d>>>8;c=c>>>8^J[(((c^K[a+1|0])&255)<<2)+184704>>2];c=c>>>8^J[(((c^K[a+2|0])&255)<<2)+184704>>2];d=c>>>8^J[(((c^K[a+3|0])&255)<<2)+184704>>2];a=a+4|0;b=b-4|0;if(b>>>0>3){continue}break}}a:{if(!b){break a}if(b&1){d=J[(((K[a|0]^d)&255)<<2)+184704>>2]^d>>>8;a=a+1|0;c=b-1|0}else{c=b}if((b|0)==1){break a}while(1){b=J[(((K[a|0]^d)&255)<<2)+184704>>2]^d>>>8;d=J[(((b^K[a+1|0])&255)<<2)+184704>>2]^b>>>8;a=a+2|0;c=c-2|0;if(c){continue}break}}return d^-1}function OR(a,b,c){var d=0,e=0,f=0,g=0,h=0,i=0,j=0;f=Ui-16|0;Ui=f;d=J[a+12>>2];if(d){d=J[d+124>>2]}else{d=0}i=J[d+8>>2]-J[d+12>>2]>>4;J[f+12>>2]=J[a+4>>2];a:{g=J[a+8>>2];e=J[g+4>>2];a=J[g>>2];if((e|0)==(a|0)){break a}a=e-a>>2;j=a>>>0<=1?1:a;a=0;while(1){e=J[g>>2];if(J[g+4>>2]-e>>2>>>0>a>>>0){e=J[e+(a<<2)>>2];if(H[e+32|0]&1){h=(Cy(d,J[e>>2],b,e,f+12|0)|0)==-1?-1e3:h}a=a+1|0;if((j|0)!=(a|0)){continue}break a}break}Z(145396,53895,487,84789);B()}H[c|0]=1;if(J[d+8>>2]-J[d+12>>2]>>4!=(i|0)){Z(143244,37648,250,50179);B()}Ui=f+16|0;return h}function OL(a){a=a|0;var b=0;J[a>>2]=243672;b=J[a+92>>2];if(!(b?!b|K[a+96|0]!=1:1)){J[83765]=J[83765]+1;Zi[J[61751]](J[b-4>>2])}J[a+92>>2]=0;H[a+96|0]=1;J[a+84>>2]=0;J[a+88>>2]=0;b=J[a+72>>2];if(!(b?!b|K[a+76|0]!=1:1)){J[83765]=J[83765]+1;Zi[J[61751]](J[b-4>>2])}J[a+72>>2]=0;H[a+76|0]=1;J[a+64>>2]=0;J[a+68>>2]=0;b=J[a+52>>2];if(!(b?!b|K[a+56|0]!=1:1)){J[83765]=J[83765]+1;Zi[J[61751]](J[b-4>>2])}J[a+52>>2]=0;H[a+56|0]=1;J[a+44>>2]=0;J[a+48>>2]=0;b=J[a+32>>2];if(!(b?!b|K[a+36|0]!=1:1)){J[83765]=J[83765]+1;Zi[J[61751]](J[b-4>>2])}cj(a)}function no(a,b,c){var d=0,e=0,f=0,g=0,h=0;e=J[a+4>>2]<<2;a:{if(e>>>0>=c>>>0){if(c>>>0>=e>>>0){e=c;break a}f=J[a+8>>2];d=c;b:{while(1){if(J[f+(d&-4)>>2]>>>(d<<3)&255){break b}d=d+1|0;if((e|0)!=(d|0)){continue}break}e=c;break a}return-8}b=(ij(b,0,c-e|0)+c|0)-e|0}if(!e){return 0}d=0;if((e|0)!=1){f=e&-2;c=0;while(1){g=d&-4;h=d<<3&16;H[((d^-1)+e|0)+b|0]=J[g+J[a+8>>2]>>2]>>>h;H[((d^-2)+e|0)+b|0]=J[J[a+8>>2]+g>>2]>>>(h|8);d=d+2|0;c=c+2|0;if((f|0)!=(c|0)){continue}break}}if(e&1){H[((d^-1)+e|0)+b|0]=J[J[a+8>>2]+(d&-4)>>2]>>>(d<<3)}return 0}function Pz(a,b,c){var d=0,e=0;e=a;a:{b:{c:{d:{if((e^b)&3){break d}d=(c|0)!=0;e:{if(!(b&3)|!c){break e}while(1){d=K[b|0];H[e|0]=d;if(!d){break a}e=e+1|0;c=c-1|0;d=(c|0)!=0;b=b+1|0;if(!(b&3)){break e}if(c){continue}break}}if(!d){break b}if(!K[b|0]){break a}if(c>>>0<4){break d}while(1){d=J[b>>2];if(((16843008-d|d)&-2139062144)!=-2139062144){break c}J[e>>2]=d;e=e+4|0;b=b+4|0;c=c-4|0;if(c>>>0>3){continue}break}}if(!c){break b}}while(1){d=K[b|0];H[e|0]=d;if(!d){break a}e=e+1|0;b=b+1|0;c=c-1|0;if(c){continue}break}}c=0}ij(e,0,c);return a}function PH(a,b,c,d,e,f){var g=0,h=0,i=0;h=Ui-48|0;Ui=h;g=-20352;a:{if(!a|!J[a+88>>2]){break a}i=h+12|0;g=i;J[g+8>>2]=0;J[g>>2]=1;J[g+4>>2]=0;J[g+20>>2]=0;J[g+12>>2]=1;J[g+16>>2]=0;J[g+32>>2]=0;J[g+24>>2]=1;J[g+28>>2]=0;b:{g=cu(a,g,a+124|0,a+172|0,e,f);if(!g){g=-20352;if(!HH(i)){break b}}Cp(h+12|0);break a}e=a+208|0;f=h+12|0;g=sk(e,f);Cp(f);if(g){break a}g=-20352;if(Um(e)>>>0>d>>>0){break a}d=J[a+88>>2];J[b>>2]=(d>>>3|0)+((d&7)!=0);b=J[b>>2];if(((J[a+48>>2]?J[a+60>>2]?1:2:0)|0)==2){g=yH(e,c,b);break a}g=no(e,c,b)}Ui=h+48|0;return g}function ok(a,b){var c=0,d=0,e=0;d=Ui-16|0;Ui=d;a:{b:{c:{if((b|0)>0){b=(J[a+12>>2]+(b<<4)|0)-16|0;c=b>>>0>=M[a+8>>2]?173288:b;break c}c=J[a+8>>2]+(b<<4)|0;if((b|0)>=-9999){break c}d:{switch(b+10002|0){case 2:c=J[a+16>>2]+96|0;break c;case 1:b=J[J[J[J[a+20>>2]+4>>2]>>2]+12>>2];J[a+96>>2]=5;J[a+88>>2]=b;c=a+88|0;break c;case 0:c=a+72|0;break c;default:break d}}a=J[J[J[a+20>>2]+4>>2]>>2];c=K[a+7|0]<-10002-b>>>0?173288:(a+(0-b<<4)|0)-160024|0}b=c;if(J[b+8>>2]==3){break b}b=Kw(b,d);if(b){break b}e=0;break a}e=O[b>>3]}Ui=d+16|0;return e}function oN(a,b,c){var d=0,e=0,f=0,g=0,h=0;d=J[a+4>>2];if(d){a:{b:{c:{d:{e:{f=J[a>>2]+(mxa(b,c,d)<<2)|0;e=J[f>>2];if((e|0)!=-1){g=J[a+8>>2];d=g+P(e,40)|0;if(J[d>>2]!=(b|0)|J[d+4>>2]!=(c|0)){break e}break d}Z(85666,55629,340,62656);B()}while(1){e=J[d+32>>2];if((e|0)==-1){break c}h=d;d=g+P(e,40)|0;if(J[d>>2]!=(b|0)|J[d+4>>2]!=(c|0)){continue}break}}J[a+24>>2]=J[a+24>>2]-1;b=J[d+32>>2];if(h){break b}J[f>>2]=b;break a}Z(152754,55629,366,62656);B()}J[h+32>>2]=b}b=J[a+20>>2];J[a+20>>2]=e;J[d+32>>2]=b;return}Z(113800,55629,334,62656);B()}function bX(a,b){a=a|0;b=b|0;if((b|0)<=0){a=b+2|0;if(a>>>0>2){a=32685}else{a=J[(a<<2)+254272>>2]}return a|0}a=62311;a:{b:{switch(b-2|0){case 28:return 74131;case 0:return 75407;case 12:return 74269;case 11:return 74507;case 13:return 74507;default:if((b|0)==73){break a}case 2:case 3:case 4:case 5:case 6:case 7:case 8:case 9:case 10:case 14:case 15:case 16:case 17:case 18:case 19:case 20:case 21:case 22:case 23:case 24:case 25:case 26:case 27:a=L[((b>>>0<=153?b:0)<<1)+215472>>1]+213556|0;break;case 1:break b}}return a|0}return 9580}function Ifa(a){a=a|0;var b=0,c=0,d=0,e=0,f=0,g=0;d=Ui-16|0;Ui=d;J[d+12>>2]=0;b=dQ(J[a>>2],J[a+12>>2],J[a+16>>2],d+12|0);c=J[d+12>>2];a:{b:{if(b){b=-2;if(!c){break b}c:{if(H[c+24|0]&1){break c}a=J[c+12>>2];if(!a){break c}cj(a)}cj(c);break b}d:{if(!J[a+24>>2]|H[c+28|0]&1){break d}f=J[c+8>>2];e=J[f+8>>2];if(!e){break d}b=0;while(1){if(b>>>0>=e>>>0){break a}g=J[(J[f+4>>2]+P(b,80)|0)+4>>2];if(g){Tk(J[a+24>>2],g);e=J[f+8>>2]}b=b+1|0;if(e>>>0>b>>>0){continue}break}}J[J[a+32>>2]>>2]=c;b=0}Ui=d+16|0;return b|0}Z(12664,54870,244,84789);B()}function ica(a,b){a=a|0;b=b|0;var c=0,d=0,e=0,f=0,g=0;if(a|b){if(ur(J[79491],a,b)){c=Zi[J[79470]](a,b)|0;d=J[79491];if(c&1){g=J[d>>2];Tj(g);f=d+36|0;a:{b:{c:{e=J[d+40>>2];c=J[d+36>>2];if((e|0)==(c|0)){if(H[d+44|0]&1){break c}e=c;c=d+32|0;lj((e-J[c>>2]>>3)- -64|0,8,c,d+40|0,f);e=J[d+40>>2];c=J[f>>2]}if((c|0)==(e|0)){break b}J[f>>2]=c+8;J[c>>2]=a;J[c+4>>2]=b;Lj(g);break a}Z(151729,53895,501,2284);B()}Z(112520,53895,557,53220);B()}return}if(K[d+220|0]&64){Qp(J[d+52>>2],937,0,d,a);return}jy(d,a,b)}return}Z(62928,40535,3836,63406);B()}function cm(a,b,c,d){var e=0,f=0,g=0,h=0;e=Ui-1024|0;Ui=e;a:{if(K[a|0]){ek(e,a,1024);zl(e,114114,1024);break a}H[e|0]=0}zl(e,b,1024);if(d){b=K[e|0];b:{if(!b){break b}a=e;while(1){h=f;g=b&255;c:{if(!((g|0)!=92&(g|0)!=47)){H[c+f|0]=47;while(1){b=K[a|0];if((b|0)==92|(b|0)==47){a=a+1|0;continue}else{g=47;break c}}}H[c+h|0]=b;g=b;b=K[a+1|0];a=a+1|0}f=h+1|0;if(f>>>0>>0?b&255:0){continue}break}if(!h){f=1;break b}if((g&255)!=47){break b}H[(c+f|0)-1|0]=0}a=d-1|0;H[(a>>>0>f>>>0?f:a)+c|0]=0;Ui=e+1024|0;return}Z(112290,40911,36,59269);B()}function OM(){var a=0,b=0,c=0,d=0,e=0,f=0;b=Ui-1104|0;Ui=b;c=J[71981];d=J[71980];e=J[71984];f=J[71979];a=b+80|0;cm(980536,J[71978],a,1024);if(_k(a)){J[b+64>>2]=a;dj(4,95071,148568,b- -64|0);Fm(a)}a=b+80|0;cm(980536,f,a,1024);if(_k(a)){J[b+48>>2]=a;dj(4,95071,148568,b+48|0);Fm(a)}a=b+80|0;cm(980536,e,a,1024);if(_k(a)){J[b+32>>2]=a;dj(4,95071,148568,b+32|0);Fm(a)}a=b+80|0;cm(980536,d,a,1024);if(_k(a)){J[b+16>>2]=a;dj(4,95071,148568,b+16|0);Fm(a)}a=b+80|0;cm(980536,c,a,1024);if(_k(a)){J[b>>2]=a;dj(4,95071,148568,b);Fm(a)}Ui=b+1104|0}function JW(a){a=a|0;var b=0,c=0,d=0,e=0,f=0;e=Ui-1040|0;Ui=e;Oj(a,1,6);gj(a,1);d=e+4|0;J[d+4>>2]=0;J[d+8>>2]=a;J[d>>2]=d+12;b=1;c=J[a+8>>2];a:{if(J[c-8>>2]!=6){break a}c=J[c-16>>2];if(K[c+6|0]){break a}f=J[c+16>>2];c=Ui-32|0;Ui=c;J[c+12>>2]=0;J[c+8>>2]=d;J[c+4>>2]=2053;J[c>>2]=a;b=c+20|0;H[b+4|0]=81;H[b+5|0]=0;H[b+6|0]=1;H[b+7|0]=4;H[b+8|0]=4;H[b+9|0]=4;H[b+10|0]=8;H[b+11|0]=0;H[b|0]=27;H[b+1|0]=76;H[b+2|0]=117;H[b+3|0]=97;J[c+16>>2]=wF(a,b,12,d);UV(f,0,c);b=J[c+16>>2];Ui=c+32|0}if(b){fj(a,45405,0)}Ym(e+4|0);Ui=e+1040|0;return 1}function ej(a,b,c){var d=0,e=0;e=Ui-16|0;Ui=e;a:{if((b|0)>0){b=(J[a+12>>2]+(b<<4)|0)-16|0;d=b>>>0>=M[a+8>>2]?173288:b;break a}d=J[a+8>>2]+(b<<4)|0;if((b|0)>=-9999){break a}b:{switch(b+10002|0){case 2:d=J[a+16>>2]+96|0;break a;case 1:b=J[J[J[J[a+20>>2]+4>>2]>>2]+12>>2];J[a+96>>2]=5;J[a+88>>2]=b;d=a+88|0;break a;case 0:d=a+72|0;break a;default:break b}}d=J[J[J[a+20>>2]+4>>2]>>2];d=K[d+7|0]<-10002-b>>>0?173288:(d+(0-b<<4)|0)-160024|0}b=d;c=zk(a,c,yj(c));J[e+8>>2]=4;J[e>>2]=c;Lw(a,b,e,J[a+8>>2]-16|0);J[a+8>>2]=J[a+8>>2]-16;Ui=e+16|0}function bR(a,b){var c=0,d=0,e=0,f=0,g=0,h=0;d=Ui-16|0;Ui=d;a:{b:{c:{d:{if(H[b+28|0]&1){break d}e=J[b+8>>2];f=J[e+8>>2];if(!f){break d}if(H[b+24|0]&1){break c}g=b;lj(f,4,b+12|0,b+20|0,b+16|0);b=0;while(1){if(M[e+8>>2]<=b>>>0){break b}c=J[(J[e+4>>2]+P(b,80)|0)+4>>2];if(c){c=wk(a,c,d+12|0);if(c){break d}c=J[g+16>>2];if((c|0)==J[g+20>>2]){break a}h=J[d+12>>2];J[g+16>>2]=c+4;J[c>>2]=h}b=b+1|0;if((f|0)!=(b|0)){continue}break}c=0}Ui=d+16|0;return c}Z(151729,53895,501,2284);B()}Z(12664,54870,244,84789);B()}Z(112520,53895,557,53220);B()}function ama(a){a=a|0;var b=0,c=0,d=Q(0),e=Q(0),f=Q(0),g=0,h=0,i=0;c=Ui+-64|0;Ui=c;i=pj(c+44|0,a,1,36839,422);b=qj(a,1,J[79308],3640);g=J[b+8>>2];h=J[b+12>>2];a:{if(!(g|h)){break a}if(xk(J[b+4>>2],g,h)){break a}J[c>>2]=tj(J[b+8>>2],J[b+12>>2]);fj(a,102051,c)}b=J[b>>2];Rn(c+36|0,a,1,N[59873]);d=N[b+64>>2];f=N[b+48>>2];e=N[b+72>>2];N[c+12>>2]=Q(e*Q(N[c+36>>2]-N[b+44>>2]))+N[b+68>>2];N[c+8>>2]=d-Q(e*Q(N[c+40>>2]-f));d=N[79200];f=N[c+8>>2];e=N[c+12>>2];b=c+16|0;J[b+8>>2]=0;N[b+4>>2]=d*e;N[b>>2]=d*f;cl(a,b);oj(i);Ui=c- -64|0;return 1}function _D(a,b){var c=0,d=0,e=0;c=Ui+-64|0;Ui=c;d=J[b+80>>2];e=J[d+3128>>2];b=J[b+140>>2]&32767;if(b>>>0>=J[d+3132>>2]-e>>6>>>0){Z(145396,53895,487,84789);B()}b=e+(b<<6)|0;N[c>>2]=N[b>>2];N[c+4>>2]=N[b+4>>2];N[c+8>>2]=N[b+8>>2];N[c+12>>2]=N[b+12>>2];N[c+16>>2]=N[b+16>>2];N[c+20>>2]=N[b+20>>2];N[c+24>>2]=N[b+24>>2];N[c+28>>2]=N[b+28>>2];N[c+32>>2]=N[b+32>>2];N[c+36>>2]=N[b+36>>2];N[c+40>>2]=N[b+40>>2];N[c+44>>2]=N[b+44>>2];N[c+48>>2]=N[b+48>>2];N[c+52>>2]=N[b+52>>2];N[c+56>>2]=N[b+56>>2];N[c+60>>2]=N[b+60>>2];rq(a,c);Ui=c- -64|0}function xH(a,b){var c=0,d=0;d=-46;a:{if(!a){break a}b:{c:{switch(J[a+4>>2]-5|0){case 3:a=J[a+8>>2];if((K[a|0]|K[a+1|0]<<8|(K[a+2|0]<<16|K[a+3|0]<<24))!=-2042067414|(K[a+4|0]|K[a+5|0]<<8|(K[a+6|0]<<16|K[a+7|0]<<24))!=84020727){break a}c=267008;break b;case 0:if(Wj(154421,J[a+8>>2],5)){break a}c=267028;break b;case 4:break c;default:break a}}a=J[a+8>>2];c=267048;if(!Wj(158704,a,9)){break b}c=267068;if(!Wj(158809,a,9)){break b}c=267088;if(!Wj(158765,a,9)){break b}if(Wj(158737,a,9)){break a}c=267108}J[b>>2]=J[c+16>>2];d=0}return d}function M9(a){a=a|0;var b=0,c=0,d=0,e=0,f=0,g=0;d=Ui-16|0;Ui=d;g=J[a+8>>2]-J[a+12>>2]>>4;Bj(a);c=qj(a,-1,J[219396],139183);gj(a,-2);Qj(a,1,d+12|0);a:{b:{c:{f=J[d+12>>2];e=f&65535;b=J[c+36>>2];c=J[c+32>>2];if(e>>>0<(b-c|0)/672>>>0){b=c+P(e,672)|0;if(L[b+648>>1]!=(f>>>16|0)){break c}if(L[b+650>>1]!=(e|0)){break b}c=J[b+568>>2];b=J[b+572>>2];break a}Z(145396,53895,487,84789);B()}Z(47372,40876,188,69601);B()}Z(5388,40876,189,69601);B()}Bk(a,c,b);if((g+1|0)!=J[a+8>>2]-J[a+12>>2]>>4){Z(143334,37682,2501,33127);B()}Ui=d+16|0;return 1}function I9(a){a=a|0;var b=0,c=0,d=0,e=0,f=0,g=0;d=Ui-16|0;Ui=d;g=J[a+8>>2]-J[a+12>>2]>>4;Bj(a);c=qj(a,-1,J[219396],139183);gj(a,-2);Qj(a,1,d+12|0);a:{b:{c:{f=J[d+12>>2];e=f&65535;b=J[c+36>>2];c=J[c+32>>2];if(e>>>0<(b-c|0)/672>>>0){b=c+P(e,672)|0;if(L[b+648>>1]!=(f>>>16|0)){break c}if(L[b+650>>1]!=(e|0)){break b}c=J[b+592>>2];b=J[b+596>>2];break a}Z(145396,53895,487,84789);B()}Z(47372,40876,188,69601);B()}Z(5388,40876,189,69601);B()}Bk(a,c,b);if((g+1|0)!=J[a+8>>2]-J[a+12>>2]>>4){Z(143334,37682,2305,50473);B()}Ui=d+16|0;return 1}function mQ(a){var b=0,c=0,d=0;a:{a=J[a>>2];if(!a){break a}b=J[a+8>>2]-J[a+12>>2]>>4;nr(a,J[78152]);c=Vj(a,-1);gj(a,-2);if(c){cj(c)}if(J[a+8>>2]-J[a+12>>2]>>4==(b|0)){break a}Z(143244,39481,1867,59237);B()}a=J[78499];if(a){Fl(a)}J[78498]=0;J[78499]=0;c=0;a=J[78404];if(a){On(a)}b=J[78402];if(b){d=J[78400];while(1){a=J[(c<<2)+d>>2];if(a){if(lo(J[a+8>>2])){ot(J[a+8>>2])}Fl(J[a>>2]);b:{if(H[a+24|0]&1){break b}b=J[a+12>>2];if(!b){break b}cj(b)}cj(a);d=J[78400];b=J[78402]}c=c+1|0;if(c>>>0>>0){continue}break}}J[78404]=0;J[78398]=0}function Fga(a){a=a|0;var b=0,c=0,d=0,e=0;b=Ui-80|0;Ui=b;e=J[a+8>>2]-J[a+12>>2]|0;pk(a);c=mk(a,2);d=Yi;J[b+72>>2]=mk(a,3);J[b+76>>2]=Yi;J[b+64>>2]=c;J[b+68>>2]=d;J[b+56>>2]=0;J[b+60>>2]=0;J[b+48>>2]=0;J[b+52>>2]=0;J[b+40>>2]=0;J[b+44>>2]=0;J[b+32>>2]=0;J[b+36>>2]=0;J[b+24>>2]=0;J[b+28>>2]=0;J[b+16>>2]=0;J[b+20>>2]=0;J[b+8>>2]=0;J[b+12>>2]=0;J[b>>2]=0;J[b+4>>2]=0;c=b+32|0;Sk(a,1,c,b);d=c;c=J[57120];Jk(b,d,J[c+8>>2],J[c+12>>2],0,0,c,b- -64|0,16,0);if(e>>4!=J[a+8>>2]-J[a+12>>2]>>4){Z(143244,37079,389,14129);B()}Ui=b+80|0;return 0}function o0(a){a=a|0;var b=0,c=0,d=0,e=0;b=Ui-16|0;Ui=b;J[b+8>>2]=0;J[b+12>>2]=0;J[b>>2]=0;J[b+4>>2]=0;e=aa(292920,158860,0)|0;a:{b:{if(!(H[b+12|0]&1)){lj((J[b+8>>2]-J[b>>2]>>2)+1|0,4,b,b+8|0,b+4|0);c=J[b+4>>2];if((c|0)==J[b+8>>2]){break b}J[b+4>>2]=c+4;J[c>>2]=e;break a}Z(151729,53951,501,2284);B()}Z(112520,53951,557,53220);B()}Fj(a,0,0);c=J[b>>2];if((c|0)!=J[b+4>>2]){while(1){c=J[(d<<2)+c>>2];xj(a,c);d=d+1|0;Ik(a,1,d);cj(c);c=J[b>>2];if(J[b+4>>2]-c>>2>>>0>d>>>0){continue}break}}if(!(!c|H[b+12|0]&1)){cj(c)}Ui=b+16|0;return 1}function aF(a,b,c){var d=0,e=Q(0),f=Q(0),g=Q(0),h=0,i=Q(0),j=Q(0);d=J[a+88>>2];if(!(K[d+102868|0]&2)){f=Rj(c);N[a+24>>2]=f;g=Hj(c);N[a+20>>2]=g;j=N[b+4>>2];h=J[b+4>>2];e=N[b>>2];b=J[b>>2];J[a+12>>2]=b;J[a+16>>2]=h;N[a+56>>2]=c;N[a+52>>2]=c;c=N[a+28>>2];i=N[a+32>>2];e=Q(Q(Q(f*c)-Q(g*i))+e);N[a+44>>2]=e;N[a+36>>2]=e;c=Q(Q(Q(g*c)+Q(f*i))+j);N[a+48>>2]=c;N[a+40>>2]=c;b=J[a+100>>2];if(b){h=d+102872|0;d=a+12|0;while(1){WE(b,h,d,d);b=J[b+4>>2];if(b){continue}break}d=J[a+88>>2]}a=d+102872|0;dw(a,a);return}Z(62621,36890,428,48539);B()}function TN(a,b,c,d,e,f,g,h){var i=0,j=0;H[b+1|0]=0;H[b+2|0]=255;if(d){i=K[d+1|0];H[b+1|0]=i}f=(f?16-S(f<<16)|0:0)&65535;j=J[a+476>>2]&134217728;a:{if(!j){a=e+1<>2]<<5>>31&15;H[c|0]=0;H[c+2|0]=0;a=K[b|0];H[c+1|0]=a;if(!d){break a}H[c|0]=K[d|0];H[c+1|0]=a|K[d+1|0]}H[c+3|0]=K[c+3|0]|15;if((f+h|0)+(j?e+1|0:g)>>>0>=9){dj(3,93318,128566,0)}}function O0(a){a=a|0;var b=0,c=0,d=0;c=Ui+-64|0;Ui=c;b=J[a+4>>2];a:{if(b>>>0<8){b=0;break a}J[c+52>>2]=1;b=b-7|0;J[c+56>>2]=b;if(b>>>0>9){b=-20352;break a}J[c+16>>2]=0;J[c+20>>2]=0;J[c+24>>2]=0;J[c+28>>2]=0;J[c+32>>2]=0;J[c+36>>2]=0;J[c>>2]=0;J[c+4>>2]=0;J[c+8>>2]=0;J[c+12>>2]=0;J[c+60>>2]=c;d=hj(c,J[a+8>>2]+28|0,b<<2);b=yk(d+52|0,31);if(b){break a}J[d+56>>2]=J[d+56>>2]+1;b=hq(a,255,0);if(b){break a}b=J[a+4>>2];if(b>>>0>=9){ij(J[a+8>>2]+32|0,0,(b<<2)-32|0)}d=d+52|0;b=vA(d,d,19);if(b){break a}b=_t(a,a,d)}Ui=c- -64|0;return b|0}function Ska(a){a=a|0;var b=0,c=0,d=0,e=0;a:{b:{c:{b=J[a+80>>2];d=J[b+20>>2];c=J[b+24>>2];if((d|0)!=(c|0)){e=J[b+16>>2];if(!e){break c}if(c>>>0>=d>>>0){break b}J[b+24>>2]=c+1;c=J[(c<<2)+e>>2];d=J[b+4>>2];b=J[b>>2];if(c>>>0>=(d-b|0)/144>>>0){break a}b=ij(b+P(c,144)|0,0,144);J[b+48>>2]=1065353216;J[b+32>>2]=J[a+76>>2];J[b+40>>2]=J[a>>2];J[b+56>>2]=L[a+92>>1];J[J[a+88>>2]>>2]=b;return 0}io(1362,J[56052],(J[b+4>>2]-J[b>>2]|0)/144|0);return-1e3}Z(49493,54340,151,43112);B()}Z(2701,54340,152,43112);B()}Z(145396,53895,487,84789);B()}function rj(a,b,c){var d=0,e=0;e=Ui-16|0;Ui=e;a:{if((b|0)>0){b=(J[a+12>>2]+(b<<4)|0)-16|0;d=b>>>0>=M[a+8>>2]?173288:b;break a}d=J[a+8>>2]+(b<<4)|0;if((b|0)>=-9999){break a}b:{switch(b+10002|0){case 2:d=J[a+16>>2]+96|0;break a;case 1:b=J[J[J[J[a+20>>2]+4>>2]>>2]+12>>2];J[a+96>>2]=5;J[a+88>>2]=b;d=a+88|0;break a;case 0:d=a+72|0;break a;default:break b}}d=J[J[J[a+20>>2]+4>>2]>>2];d=K[d+7|0]<-10002-b>>>0?173288:(d+(0-b<<4)|0)-160024|0}b=d;c=zk(a,c,yj(c));J[e+8>>2]=4;J[e>>2]=c;gu(a,b,e,J[a+8>>2]);J[a+8>>2]=J[a+8>>2]+16;Ui=e+16|0}function Wla(a){a=a|0;var b=0,c=0,d=0,e=0,f=0,g=0,h=0;f=Ui-32|0;Ui=f;g=pj(f+12|0,a,1,36839,448);b=qj(a,1,J[79308],3640);c=J[b+8>>2];e=J[b+12>>2];a:{if(!(c|e)){break a}if(xk(J[b+4>>2],c,e)){break a}J[f>>2]=tj(J[b+8>>2],J[b+12>>2]);fj(a,102051,f)}e=J[J[b>>2]+96>>2];b:{if(e){c=0;d=J[e+148>>2];c:{if(!d){break c}d=J[d+4>>2];if(!d){break c}c=J[d+96>>2];h=J[d+100>>2]}d=J[b+4>>2];b=Sj(a,16);J[b+8>>2]=c;J[b+12>>2]=h;J[b+4>>2]=d;J[b>>2]=e;rj(a,-1e4,3659);Mj(a,-2);break b}c=J[a+8>>2];J[c+8>>2]=0;J[a+8>>2]=c+16}oj(g);Ui=f+32|0;return 1}function Rka(a){a=a|0;var b=0,c=0,d=0,e=0,f=0,g=0,h=0;b=J[a+4>>2];d=J[b+4>>2];a:{c=J[b>>2];if((d|0)!=(c|0)){h=J[J[a>>2]>>2];a=0;while(1){g=P(a,144);e=g+c|0;f=J[e+36>>2];e=J[e+136>>2];if(e){cj(e);d=J[b+4>>2];c=J[b>>2]}if(f){if((d-c|0)/144>>>0<=a>>>0){break a}if(H[(c+g|0)+58|0]&1){sv(f)}vj(h,f);d=J[b+4>>2];c=J[b>>2]}a=a+1|0;if(a>>>0<(d-c|0)/144>>>0){continue}break}}b:{if(H[b+28|0]&1){break b}a=J[b+16>>2];if(!a){break b}cj(a)}c:{if(H[b+12|0]&1){break c}a=J[b>>2];if(!a){break c}cj(a)}cj(b);return 0}Z(145396,53895,487,84789);B()}function O1(a){a=a|0;var b=0,c=0,d=0,e=0;d=Ui-16|0;Ui=d;e=1;b=Vj(a,1);a:{b:{switch(K[Aj(a,2,0)|0]-119|0){case 1:c=+N[b>>2];b=J[a+8>>2];J[b+8>>2]=3;O[b>>3]=c;J[a+8>>2]=J[a+8>>2]+16;break a;case 2:c=+N[b+4>>2];b=J[a+8>>2];J[b+8>>2]=3;O[b>>3]=c;J[a+8>>2]=J[a+8>>2]+16;break a;case 3:c=+N[b+8>>2];b=J[a+8>>2];J[b+8>>2]=3;O[b>>3]=c;J[a+8>>2]=J[a+8>>2]+16;break a;case 0:c=+N[b+12>>2];b=J[a+8>>2];J[b+8>>2]=3;O[b>>3]=c;J[a+8>>2]=J[a+8>>2]+16;break a;default:break b}}J[d+4>>2]=106998;J[d>>2]=53139;e=fj(a,114776,d)}Ui=d+16|0;return e|0}function Mca(a){a=a|0;var b=0,c=0,d=0,e=0;b=Ui-80|0;Ui=b;d=J[a+8>>2]-J[a+12>>2]|0;pk(a);c=Pl(a,2);N[b+64>>2]=N[c>>2];N[b+68>>2]=N[c+4>>2];N[b+72>>2]=N[c+8>>2];J[b+56>>2]=0;J[b+60>>2]=0;J[b+48>>2]=0;J[b+52>>2]=0;J[b+40>>2]=0;J[b+44>>2]=0;J[b+32>>2]=0;J[b+36>>2]=0;J[b+24>>2]=0;J[b+28>>2]=0;J[b+16>>2]=0;J[b+20>>2]=0;J[b+8>>2]=0;J[b+12>>2]=0;J[b>>2]=0;J[b+4>>2]=0;c=b+32|0;Sk(a,1,c,b);e=c;c=J[57182];Jk(b,e,J[c+8>>2],J[c+12>>2],0,0,c,b- -64|0,16,0);if(d>>4!=J[a+8>>2]-J[a+12>>2]>>4){Z(143244,41350,436,68001);B()}Ui=b+80|0;return 0}function JI(a,b,c){var d=0,e=0,f=0;a:{b:{c:{d:{switch(J[b>>2]-11|0){case 1:break b;case 0:break d;default:break c}}d=J[J[J[a>>2]+12>>2]+(J[b+8>>2]<<2)>>2];if((d&63)!=19){break c}J[a+24>>2]=J[a+24>>2]-1;return Oq(a,26,d>>>23|0,0,!c)}e=J[a+36>>2];d=e+1|0;f=J[a>>2];e:{if((e|0)>>0>=250){qk(J[a+12>>2],4813);f=J[a>>2];e=J[a+36>>2]+1|0}H[f+75|0]=d}J[a+36>>2]=e;vE(a,b,e-1|0);if(J[b>>2]!=12){break a}}d=J[b+8>>2];if(d&256|(d|0)>2]=J[a+36>>2]-1}return Oq(a,27,255,J[b+8>>2],c)}function kca(a,b){a=a|0;b=b|0;var c=0,d=0,e=0;d=J[b+2068>>2];c=J[a+108>>2];if(d>>>0>2]-c>>2>>>0){Oa(J[c+(d<<2)>>2]);wr(a,J[b+2068>>2]);c=J[b+2092>>2];d=J[b+2096>>2];if((c|0)!=(d|0)){a=0;while(1){e=J[(P(a,56)+c|0)+32>>2];if(e){cj(e);d=J[b+2096>>2];c=J[b+2092>>2]}a=a+1|0;if(a>>>0<(d-c|0)/56>>>0){continue}break}}if(b){if(!(!c|H[b+2104|0]&1)){cj(c)}a:{if(H[b+2088|0]&1){break a}a=J[b+2076>>2];if(!a){break a}cj(a)}b:{if(H[b+2060|0]&1){break b}a=J[b+2048>>2];if(!a){break b}cj(a)}cj(b)}return}Z(145396,53895,487,84789);B()}function f7(a,b,c,d){a=a|0;b=b|0;c=c|0;d=d|0;var e=0,f=Q(0),g=0,h=0,i=Q(0),j=0,k=0,l=0;e=Ui-528|0;Ui=e;h=J[a+8>>2];j=J[h>>2];if(j){k=c>>>0>=16?16:c;if(c){f=N[h+20>>2];a=0;while(1){c=(e+16|0)+(a<<5)|0;g=(a<<3)+b|0;N[c>>2]=f*N[g>>2];i=N[g+4>>2];J[c+8>>2]=0;N[c+4>>2]=f*i;a=a+1|0;g=(k|0)==(a|0);l=((g?0:a)<<3)+b|0;N[c+16>>2]=f*N[l>>2];i=N[l+4>>2];J[c+24>>2]=0;N[c+20>>2]=f*i;if(!g){continue}break}}a=J[d+4>>2];b=J[d>>2];f=N[d+8>>2];N[e+12>>2]=N[h+12>>2];N[e+8>>2]=f;J[e>>2]=b;J[e+4>>2]=a;Zi[j|0](e+16|0,k<<1,e,J[h+8>>2])}Ui=e+528|0}function e3(a){a=a|0;var b=0,c=0,d=0,e=0;d=Ui-16|0;Ui=d;e=1;b=Vj(a,1);a:{b:{switch(K[Aj(a,2,0)|0]-119|0){case 1:c=+N[b>>2];b=J[a+8>>2];J[b+8>>2]=3;O[b>>3]=c;J[a+8>>2]=J[a+8>>2]+16;break a;case 2:c=+N[b+4>>2];b=J[a+8>>2];J[b+8>>2]=3;O[b>>3]=c;J[a+8>>2]=J[a+8>>2]+16;break a;case 3:c=+N[b+8>>2];b=J[a+8>>2];J[b+8>>2]=3;O[b>>3]=c;J[a+8>>2]=J[a+8>>2]+16;break a;case 0:c=+N[b+12>>2];b=J[a+8>>2];J[b+8>>2]=3;O[b>>3]=c;J[a+8>>2]=J[a+8>>2]+16;break a;default:break b}}J[d+4>>2]=16786;J[d>>2]=53139;e=fj(a,114776,d)}Ui=d+16|0;return e|0}function ck(a,b){var c=0;a:{b:{c:{d:{if((b|0)>0){b=(J[a+12>>2]+(b<<4)|0)-16|0;c=b>>>0>=M[a+8>>2]?173288:b;break d}c=J[a+8>>2]+(b<<4)|0;if((b|0)>=-9999){break d}e:{switch(b+10002|0){case 2:c=J[a+16>>2]+96|0;break d;case 1:b=J[J[J[J[a+20>>2]+4>>2]>>2]+12>>2];J[a+96>>2]=5;J[a+88>>2]=b;c=a+88|0;break d;case 0:c=a+72|0;break d;default:break e}}a=J[J[J[a+20>>2]+4>>2]>>2];c=K[a+7|0]<-10002-b>>>0?173288:(a+(0-b<<4)|0)-160024|0}b=c;a=J[b+8>>2];switch(a|0){case 0:break a;case 1:break c;default:break b}}return J[b>>2]!=0}a=1}return a}function xM(a,b,c){var d=0,e=0,f=0,g=0;f=Ui-16|0;Ui=f;J[f+12>>2]=0;a:{b:{if(!b){break b}e=b&65535;g=J[a+4>>2];a=J[a>>2];if(e>>>0>=g-a>>2>>>0){break a}a=J[a+(e<<2)>>2];if(L[a+80>>1]!=(b>>>16|0)){dj(4,96107,66969,0);break b}b=J[a+4>>2];a=J[a>>2];if((b|0)==(a|0)){break b}d=(b-a|0)/304|0;e=d>>>0<=1?1:d;b=0;c:{while(1){if(J[(a+P(b,304)|0)+280>>2]){break c}b=b+1|0;if((e|0)!=(b|0)){continue}break}d=0;break b}if(c>>>0>=d>>>0){break a}a=a+P(c,304)|0;d=(J[a+60>>2]-J[a+56>>2]|0)/160|0}Ui=f+16|0;return d}Z(145396,53895,487,84789);B()}function vba(a,b,c){a=a|0;b=b|0;c=c|0;var d=0;a:{b:{c:{if(!(b|c)){break c}d:{e:{switch(c-1|0){case 0:if((c|0)==2097152|c>>>0>2097152){break b}if(b+1>>>0<2){break c}c=b&65535;if(c>>>0>=M[a+100>>2]){break a}if(J[J[a+92>>2]+(c<<2)>>2]){break d}break c;case 1:break e;default:break c}}if((c|0)==2097152|c>>>0>2097152){break b}if(b+1>>>0<2){break c}c=b&65535;if(c>>>0>=M[a+100>>2]){break a}if(!J[J[a+92>>2]+(c<<2)>>2]){break c}}d=L[J[a+96>>2]+(c<<1)>>1]==(b>>>16|0)}return d|0}Z(94863,55553,306,33926);B()}Z(2686,54166,244,5438);B()}function TB(a,b,c,d){var e=0,f=0,g=0,h=0,i=0,j=0;f=J[a+4>>2];e=J[f+16>>2];g=e<<24|(e&65280)<<8|(e>>>8&65280|e>>>24);e=J[f+20>>2];h=e<<24|(e&65280)<<8|(e>>>8&65280|e>>>24);e=J[f+24>>2];e=e<<24|(e&65280)<<8|(e>>>8&65280|e>>>24);a:{if(!(H[a+20|0]&1)){a=J[a+8>>2];j=J[a+1028>>2];e=J[a+1024>>2];break a}j=f+h|0;e=e+f|0}f=1;b:{if((g|0)<=0){break b}a=g-1|0;while(1){g=((a-i|0)/2|0)+i|0;h=Wj(b,(g<<6)+e|0,c);if(!h){f=0;if(!d){break b}J[d>>2]=(g<<4)+j;return 0}h=(h|0)>0;i=h?g+1|0:i;a=h?a:g-1|0;if((i|0)<=(a|0)){continue}break}}return f}function Ll(a,b){var c=0,d=0;a:{if((b|0)>0){b=(J[a+12>>2]+(b<<4)|0)-16|0;c=b>>>0>=M[a+8>>2]?173288:b;break a}c=J[a+8>>2]+(b<<4)|0;if((b|0)>=-9999){break a}b:{switch(b+10002|0){case 2:c=J[a+16>>2]+96|0;break a;case 1:b=J[J[J[J[a+20>>2]+4>>2]>>2]+12>>2];J[a+96>>2]=5;J[a+88>>2]=b;c=a+88|0;break a;case 0:c=a+72|0;break a;default:break b}}c=J[J[J[a+20>>2]+4>>2]>>2];c=K[c+7|0]<-10002-b>>>0?173288:(c+(0-b<<4)|0)-160024|0}b=nu(J[c>>2],J[a+8>>2]-16|0);d=J[b+4>>2];a=J[a+8>>2];c=a-16|0;J[c>>2]=J[b>>2];J[c+4>>2]=d;J[a-8>>2]=J[b+8>>2]}function Ao(a){a=ij(a,0,336);J[a+20>>2]=0;J[a+24>>2]=0;J[a+16>>2]=1065353216;J[a+28>>2]=0;J[a+32>>2]=0;J[a+40>>2]=0;J[a+44>>2]=0;J[a+36>>2]=1065353216;J[a+48>>2]=0;J[a+52>>2]=0;J[a+60>>2]=0;J[a+64>>2]=0;J[a+56>>2]=1065353216;J[a+68>>2]=0;J[a+72>>2]=0;J[a+84>>2]=0;J[a+88>>2]=0;J[a+76>>2]=1065353216;J[a+80>>2]=1065353216;J[a+92>>2]=0;J[a+96>>2]=0;J[a+104>>2]=0;J[a+108>>2]=0;J[a+100>>2]=1065353216;J[a+112>>2]=0;J[a+116>>2]=0;J[a+120>>2]=1065353216;J[a+124>>2]=0;J[a+128>>2]=0;J[a+132>>2]=0;J[a+136>>2]=0;J[a+140>>2]=1065353216}function gpa(a){a=a|0;var b=0,c=0,d=0,e=0,f=0;c=Ej(a,2);Oj(a,1,6);a:{if(cr(a,1)){break a}b=J[a+12>>2];b=b>>>0>=M[a+8>>2]?173288:b;b:{if(J[b+8>>2]!=6){break b}b=J[b>>2];c:{if(K[b+6|0]){if((c|0)<=0|c>>>0>K[b+7|0]){break b}e=158859;c=((c<<4)+b|0)+8|0;break c}if((c|0)<=0){break b}d=J[b+16>>2];if((c|0)>J[d+36>>2]){break b}c=(c<<2)-4|0;e=J[c+J[d+28>>2]>>2]+16|0;c=J[J[(c+b|0)+20>>2]+8>>2]}d=J[c+4>>2];b=J[a+8>>2];J[b>>2]=J[c>>2];J[b+4>>2]=d;J[b+8>>2]=J[c+8>>2];J[a+8>>2]=J[a+8>>2]+16}if(!e){break a}xj(a,e);Pk(a,-2);f=2}return f|0}function Tm(a){var b=0;if((a|0)<=0){a=a+2|0;if(a>>>0>2){a=32685}else{a=J[(a<<2)+254272>>2]}return a}b=62311;a:{b:{switch(a-2|0){case 28:return 74131;case 0:return 75407;case 12:return 74269;case 11:return 74507;case 13:return 74507;default:if((a|0)==73){break a}case 2:case 3:case 4:case 5:case 6:case 7:case 8:case 9:case 10:case 14:case 15:case 16:case 17:case 18:case 19:case 20:case 21:case 22:case 23:case 24:case 25:case 26:case 27:b=L[((a>>>0<=153?a:0)<<1)+215472>>1]+213556|0;break;case 1:break b}}return b}return 9580}function Gca(a){a=a|0;var b=0,c=0,d=0,e=0;b=Ui-80|0;Ui=b;e=pj(b+60|0,a,1,39971,831);a:{if((kj(a,1)|0)==7){c=qj(a,1,J[77574],0);if(c){if(lo(J[c>>2])){break a}}fj(a,72312,0)}Yk(a,1,49251);B()}d=nt(J[c>>2],J[c+8>>2],J[c+12>>2],b+56|0,b+52|0);c=tj(J[c+8>>2],J[c+12>>2]);b:{if(!d){d=J[b+56>>2];if(d>>>0>8){d=64412}else{d=J[(d<<2)+266e3>>2]}J[b+16>>2]=J[b+52>>2];J[b>>2]=34859;J[b+4>>2]=49251;J[b+8>>2]=c;J[b+12>>2]=d;ik(a,135396,b);break b}J[b+40>>2]=c;J[b+36>>2]=49251;J[b+32>>2]=34859;ik(a,135356,b+32|0)}oj(e);Ui=b+80|0;return 1}function qI(a,b,c,d){a=a|0;b=b|0;c=c|0;d=d|0;var e=0,f=0;e=Ui+-64|0;Ui=e;a:{b:{c:{f=K[d|0];switch(f-61|0){case 1:case 2:break a;case 0:case 3:break b;default:break c}}if((f|0)!=27){break a}d=56302;break a}d=d+1|0}J[e+32>>2]=c;J[e+28>>2]=b;J[e+24>>2]=a;J[e+36>>2]=d;J[e+56>>2]=67174481;J[e+60>>2]=525316;J[e+52>>2]=1635077147;if(Hn(b,e+40|0,12)){J[e+16>>2]=d;J[e+20>>2]=71449;gk(a,50977,e+16|0);al(a,3)}if(Wj(e+52|0,e+40|0,12)){J[e>>2]=d;J[e+4>>2]=35834;gk(a,50977,e);al(a,3)}a=SV(e+24|0,zk(a,102196,2));Ui=e- -64|0;return a|0}function bE(a){var b=0,c=0,d=0,e=0,f=0,g=0;d=Ui-16|0;Ui=d;f=J[74197];e=Ui-32|0;Ui=e;pj(e+12|0,a,0,37704,852);b=J[84546];c=J[a+8>>2];J[c+8>>2]=3;O[c>>3]=b|0;J[a+8>>2]=J[a+8>>2]+16;Ck(a,-10002);b=-2;a:{if((kj(a,-1)|0)!=7){break a}if(!sm(a,-1)){break a}b=J[84547];c=J[a+8>>2];J[c+8>>2]=3;O[c>>3]=b|0;J[a+8>>2]=J[a+8>>2]+16;Ll(a,-2);b=-4;if((sl(a,-1)|0)!=(f|0)){break a}gj(a,-2);mj(a,173024,15);Ll(a,-2);if(!kj(a,-1)){break a}uj(a,-3);g=1;Wk(a,1,1);J[d+12>>2]=Vj(a,-1)}gj(a,b);oj(e+12|0);Ui=e+32|0;Ui=d+16|0;return g?J[d+12>>2]:0}function ana(a){a=a|0;var b=0,c=0,d=0,e=0;c=Ui-16|0;Ui=c;J[c+12>>2]=0;b=-13;a:{if(!dk(J[a+12>>2],J[a+16>>2],J[55330],c+12|0,0)){ht(J[c+12>>2]);b=J[c+12>>2];d=J[b+48>>2];if(d){b=0;while(1){e=J[c+12>>2];if(M[e+56>>2]<=b>>>0){break a}Tk(J[a+24>>2],J[J[e+52>>2]+(b<<2)>>2]);b=b+1|0;if((d|0)!=(b|0)){continue}break}b=J[c+12>>2]}d=J[b+144>>2];if(d){e=J[b+140>>2];b=0;while(1){Tk(J[a+24>>2],J[e+(b<<2)>>2]);b=b+1|0;if((d|0)!=(b|0)){continue}break}b=J[c+12>>2]}J[J[a+32>>2]>>2]=b;b=0}Ui=c+16|0;return b|0}Z(12664,55472,45,84789);B()}function _8(a){a=a|0;var b=0,c=0,d=0,e=0,f=0,g=Q(0),h=Q(0),i=Q(0),j=Q(0),k=Q(0);c=Ui-48|0;Ui=c;b=un(a,1);if(!b){b=Pl(a,1)}i=N[b>>2];j=N[b+4>>2];k=N[b+8>>2];f=Aj(a,2,0);Bj(a);d=qj(a,-1,J[219396],139183);gj(a,-2);e=J[d+356>>2];a:{if(!e){g=Q(1);h=Q(1);break a}b=c+32|0;J[b>>2]=0;J[b+4>>2]=0;J[b+8>>2]=0;J[b+12>>2]=0;Zi[J[J[d+12>>2]+16>>2]](e,f,Q(0),0,Q(1),Q(0),b);g=Q(N[b+8>>2]+N[b+12>>2]);h=N[b>>2]}N[c+24>>2]=k;N[c+20>>2]=j;N[c+16>>2]=i;J[c+8>>2]=1065353216;N[c+4>>2]=g;N[c>>2]=h;a=gD(a,d,c+16|0,c,1,f,e);Ui=c+48|0;return a|0}function Goa(a,b){a=a|0;b=b|0;var c=0,d=0,e=0,f=0,g=0;c=Ui-32|0;Ui=c;g=J[a+16>>2];d=J[a+12>>2];a:{if((g|0)<=(d|0)){e=d;break a}e=d+1|0;J[a+12>>2]=e;f=H[d+J[a+8>>2]|0]}while(1){b:{c:{d:{if((f|0)!=13){if((f|0)!=-1){break d}b=J[a+20>>2];J[c+20>>2]=J[a+692>>2];J[c+16>>2]=b;dj(3,99340,79863,c+16|0);ir(a+24|0,-4);B()}if((e|0)<(g|0)){break c}f=0}if((b|0)!=(f|0)){break b}Ui=c+32|0;return}d=e+1|0;J[a+12>>2]=d;f=H[J[a+8>>2]+e|0];e=d;continue}break}b=J[a+20>>2];J[c+4>>2]=J[a+692>>2];J[c>>2]=b;dj(3,99340,79863,c);ir(a+24|0,-3);B()}function uz(a,b,c){var d=0,e=0;a:{b:{c:{d:{switch(J[b+4>>2]){case 2:J[a+16>>2]=b+160;c=J[b+416>>2];break c;case 3:if((c|0)<0|J[b+28>>2]<=(c|0)){break a}d=J[b+24>>2]+(c<<3)|0;e=J[d+4>>2];J[a>>2]=J[d>>2];J[a+4>>2]=e;c=c+1|0;c=J[b+24>>2]+(((c|0)>2]?c:0)<<3)|0;d=J[c+4>>2];J[a+8>>2]=J[c>>2];J[a+12>>2]=d;J[a+16>>2]=a;c=2;break c;case 1:J[a+16>>2]=b+24;c=2;break c;default:Z(62644,42232,92,15709);B();case 4:break b;case 0:break d}}J[a+16>>2]=b+24;c=1}J[a+20>>2]=c;N[a+24>>2]=N[b+8>>2]}return}Z(11375,42232,53,15709);B()}function sea(a){a=a|0;var b=0,c=0,d=0,e=0;c=J[a+4>>2];b=nj(32);J[b>>2]=0;J[b+4>>2]=0;J[b+24>>2]=0;J[b+28>>2]=0;J[b+16>>2]=0;J[b+20>>2]=0;J[b+8>>2]=0;J[b+12>>2]=0;c=UQ(J[a>>2],J[a+12>>2],J[a+16>>2],c,b);if(!c){J[J[a+28>>2]+8>>2]=b;vq(J[a>>2],594,b);return c|0}e=J[a>>2];a=J[b+28>>2];if(a){vj(e,a)}d=J[b>>2];if((d|0)!=J[b+4>>2]){a=0;while(1){vj(e,J[(a<<2)+d>>2]);a=a+1|0;d=J[b>>2];if(a>>>0>2]-d>>2>>>0){continue}break}}a=J[b+24>>2];if(a){AL(a)}a:{if(H[b+12|0]&1){break a}a=J[b>>2];if(!a){break a}cj(a)}cj(b);return c|0}function k9(a){a=a|0;var b=0,c=0,d=0,e=0,f=0,g=0;d=Ui-32|0;Ui=d;f=pj(d+12|0,a,1,37682,3427);Qj(a,1,d+8|0);Bj(a);c=qj(a,-1,J[219396],139183);gj(a,-2);a:{b:{c:{b=J[c+32>>2];g=(J[c+36>>2]-b|0)/672|0;e=J[d+8>>2];c=e&65535;if(g>>>0>c>>>0){b=b+P(c,672)|0;if(L[b+648>>1]!=(e>>>16|0)){break c}if((c|0)!=L[b+650>>1]){break b}c=(K[b+478|0]&32)>>>5|0;break a}Z(145396,53895,487,84789);B()}Z(47372,40876,188,69601);B()}Z(5388,40876,189,69601);B()}b=J[a+8>>2];J[b+8>>2]=1;J[b>>2]=(c|0)!=0;J[a+8>>2]=J[a+8>>2]+16;oj(f);Ui=d+32|0;return 1}function mx(a,b,c,d){var e=0,f=0,g=0;f=Ui-16|0;Ui=f;a:{b:{e=J[84551];c:{if(!e){break c}e=J[J[84550]+((b>>>0)%(e>>>0)<<2)>>2];if((e|0)==-1){break c}g=J[84552];while(1){e=g+P(e,12)|0;if(J[e>>2]==(b|0)){break b}e=J[e+8>>2];if((e|0)!=-1){continue}break}}e=0;Fj(a,0,0);if(!K[b+24|0]){break a}d=d?c:0;while(1){g=P(e,24);xj(a,J[g+J[b+20>>2]>>2]);iK(a,g+J[b+20>>2]|0,c,d);Xj(a,-3);e=e+1|0;if(e>>>0>2]](a,b,c)|0;if(!c){break a}b=J[b+4>>2];J[f+4>>2]=c;J[f>>2]=b;fj(a,141498,f)}Ui=f+16|0}function jo(a,b,c){var d=0,e=0,f=0,g=0,h=0,i=0,j=0;d=Ui-576|0;Ui=d;J[d+572>>2]=c;e=d+48|0;c=Pr(e,512,b,c);if(!(!a|(c|0)>511)){b=tj(J[a+64>>2],J[a+68>>2]);f=dm(J[a>>2],J[a+4>>2]);g=tj(J[a+16>>2],J[a+20>>2]);h=tj(J[a+24>>2],J[a+28>>2]);i=dm(J[a+32>>2],J[a+36>>2]);j=tj(J[a+48>>2],J[a+52>>2]);J[d+40>>2]=tj(J[a+56>>2],J[a+60>>2]);J[d+36>>2]=j;J[d+32>>2]=i;J[d+28>>2]=h;J[d+24>>2]=g;J[d+20>>2]=f;J[d+16>>2]=b;c=Gj(c+e|0,512-c|0,117907,d+16|0)+c|0}if((c|0)>=511){dj(4,88458,137159,0)}J[d>>2]=d+48;dj(4,88458,31902,d);Ui=d+576|0}function Vj(a,b){var c=0;a:{if((b|0)>0){b=(J[a+12>>2]+(b<<4)|0)-16|0;c=b>>>0>=M[a+8>>2]?173288:b;break a}c=J[a+8>>2]+(b<<4)|0;if((b|0)>=-9999){break a}b:{switch(b+10002|0){case 2:c=J[a+16>>2]+96|0;break a;case 1:b=J[J[J[J[a+20>>2]+4>>2]>>2]+12>>2];J[a+96>>2]=5;J[a+88>>2]=b;c=a+88|0;break a;case 0:c=a+72|0;break a;default:break b}}a=J[J[J[a+20>>2]+4>>2]>>2];c=K[a+7|0]<-10002-b>>>0?173288:(a+(0-b<<4)|0)-160024|0}b=c;a=0;c:{switch(J[b+8>>2]-2|0){case 5:return J[b>>2]+32|0;case 0:a=J[b>>2];break;default:break c}}return a}function Rva(a,b){a=a|0;b=b|0;var c=0;b=Hl(b,60);J[b+4>>2]=1;J[b+8>>2]=1008981770;J[b>>2]=247060;I[b+56>>1]=0;J[b+48>>2]=0;J[b+52>>2]=0;J[b+40>>2]=0;J[b+44>>2]=0;H[b+20|0]=K[b+20|0]&254;c=J[a+8>>2];J[b+4>>2]=J[a+4>>2];J[b+8>>2]=c;c=J[a+16>>2];J[b+12>>2]=J[a+12>>2];J[b+16>>2]=c;H[b+20|0]=K[a+20|0];I[b+56>>1]=L[a+56>>1];c=J[a+28>>2];J[b+24>>2]=J[a+24>>2];J[b+28>>2]=c;c=J[a+36>>2];J[b+32>>2]=J[a+32>>2];J[b+36>>2]=c;c=J[a+44>>2];J[b+40>>2]=J[a+40>>2];J[b+44>>2]=c;c=J[a+52>>2];J[b+48>>2]=J[a+48>>2];J[b+52>>2]=c;return b|0}function qy(a,b,c,d,e){var f=0,g=0,h=0;f=Ui-1088|0;Ui=f;h=ul(b,46);a:{b:{c:{if(!(!h|!d)){while(1){if(!Cn(h,J[(g<<2)+c>>2])){break a}g=g+1|0;if((g|0)!=(d|0)){continue}break}J[f+32>>2]=b;Gj(f- -64|0,1024,154190,f+32|0);break c}J[f+48>>2]=b;Gj(f- -64|0,1024,154190,f+48|0);if(!d){break b}}g=0;while(1){zl(f- -64|0,J[(g<<2)+c>>2],1024);g=g+1|0;if((g|0)!=(d|0)){continue}break}}J[f+16>>2]=f- -64;fj(a,31902,f+16|0)}c=f- -64|0;c=Ul(c,ip(b,c));d=Yi;if(qr(J[78228],c,d)){J[f>>2]=b;fj(a,147810,f)}J[e>>2]=c;J[e+4>>2]=d;Ui=f+1088|0}function Kma(a){a=a|0;var b=0,c=0,d=0,e=0;b=Ui-96|0;Ui=b;e=pj(b+76|0,a,1,37509,2086);Bj(a);c=qj(a,-1,J[74197],139276);gj(a,-2);d=J[c+4>>2];c=b- -64|0;J[c>>2]=0;J[c+4>>2]=0;J[b+56>>2]=0;J[b+60>>2]=0;J[b+48>>2]=0;J[b+52>>2]=0;J[b+40>>2]=0;J[b+44>>2]=0;c=b+40|0;$l(a,c);J[b+32>>2]=0;J[b+36>>2]=0;J[b+24>>2]=0;J[b+28>>2]=0;J[b+16>>2]=0;J[b+20>>2]=0;J[b+8>>2]=0;J[b+12>>2]=0;Sk(a,1,b+8|0,c);d=xk(J[J[d+80>>2]+8>>2],J[b+24>>2],J[b+28>>2]);c=J[a+8>>2];J[c+8>>2]=1;J[c>>2]=(d|0)!=0;J[a+8>>2]=J[a+8>>2]+16;oj(e);Ui=b+96|0;return 1}function g3(a){a=a|0;var b=0,c=0,d=Q(0),e=Q(0),f=Q(0),g=Q(0),h=0,i=0,j=0;b=Ui-96|0;Ui=b;J[b+92>>2]=0;j=Aj(a,1,b+92|0);c=qj(a,2,J[215722],0);d=N[c+8>>2];e=N[c>>2];f=N[c+4>>2];a:{if(!(e!=e|f!=f|d!=d)){g=N[c+12>>2];if(g==g){break a}}g=N[c+12>>2];O[b+72>>3]=d;O[b- -64>>3]=f;O[b+80>>3]=g;O[b+56>>3]=e;J[b+48>>2]=2;fj(a,138526,b+48|0)}h=J[b+92>>2]+95|0;i=nj((h|0)<0?-1:h);d=N[c>>2];f=N[c+4>>2];e=N[c+8>>2];O[b+32>>3]=N[c+12>>2];O[b+24>>3]=e;O[b+16>>3]=f;J[b>>2]=j;O[b+8>>3]=d;Gj(i,h,138101,b);xj(a,i);cj(i);Ui=b+96|0;return 1}function dE(a){var b=0,c=0;c=J[a>>2];b=J[a+4>>2];if((b|0)!=-2){hk(c,-1e4,b)}b=J[a+8>>2];if((b|0)!=-2){hk(c,-1e4,b)}b=J[a+12>>2];if((b|0)!=-2){hk(c,-1e4,b)}b=J[a+16>>2];if((b|0)!=-2){hk(c,-1e4,b)}b=J[a+20>>2];if((b|0)!=-2){hk(c,-1e4,b)}b=J[a+24>>2];if((b|0)!=-2){hk(c,-1e4,b)}b=J[a+28>>2];if((b|0)!=-2){hk(c,-1e4,b)}hk(c,-1e4,J[a+48>>2]);a:{if(H[a+64|0]&1){break a}c=J[a+52>>2];if(!c){break a}cj(c)}a=ij(a,0,68);J[a+48>>2]=-2;J[a+28>>2]=-2;J[a+20>>2]=-2;J[a+24>>2]=-2;J[a+12>>2]=-2;J[a+16>>2]=-2;J[a+4>>2]=-2;J[a+8>>2]=-2}function bca(a,b,c,d,e){a=a|0;b=b|0;c=c|0;d=d|0;e=e|0;var f=0;f=Ui-32|0;Ui=f;J[f+28>>2]=0;J[79336]=J[79336]+1;J[f+16>>2]=1;J[f+20>>2]=0;J[f+8>>2]=1;J[f+12>>2]=0;a:{if(a){b=J[(b<<2)+161044>>2];pP(a);b:{if(K[a+221|0]&16){Mc(b|0,c|0,d|0,(e>>>0<=1?1:e)|0);if(!(K[J[79491]+220|0]&2)){break b}a=_()|0;if(!a){break b}Cj(a,6878,2077);Z(114101,40535,2077,6878);B()}Nc(b|0,c|0,d|0);if(!(K[J[79491]+220|0]&2)){break b}a=_()|0;if(a){break a}}Ui=f+32|0;return}Z(9197,40535,2069,6878);B()}Cj(a,6878,2082);Z(114101,40535,2082,6878);B()}function XK(a,b,c,d,e){var f=0,g=0,h=0,i=0,j=0,k=0;h=Ui-16|0;Ui=h;a:{f=J[a+4>>2];g=J[a>>2];b:{if((f|0)==(g|0)){break b}f=(f-g|0)/40|0;k=f>>>0<=1?1:f;g=0;while(1){i=J[a+4>>2];f=J[a>>2];if((i-f|0)/40>>>0<=g>>>0){break a}c:{j=J[P(g,40)+f>>2];if((b|0)==J[j+8>>2]&J[j+12>>2]==(c|0)){if((i-f|0)/40>>>0>g>>>0){break c}break a}g=g+1|0;if((k|0)!=(g|0)){continue}break b}break}if(!f){break b}a=J[f+P(g,40)>>2];J[h+12>>2]=L[a+32>>1];b=J[a>>2];a=J[h+12>>2];hj(b,d,(a>>>0>>0?a:e)<<4)}Ui=h+16|0;return}Z(145396,53895,494,84789);B()}function JL(a,b,c){var d=0,e=0,f=0;a:{b:{d=J[a+100>>2];if(!(!b|!d)){e=d;while(1){c:{e=J[e+4>>2];f=f+1|0;if(f>>>0>=b>>>0){break c}if(e){continue}}break}f=0;if(!e){break a}while(1){d:{d=J[d+4>>2];f=f+1|0;if(f>>>0>=b>>>0){break d}if(d){continue}}break}if(d){break b}return}e=d;if(d){break b}return}b=J[d+12>>2];if(J[b+4>>2]!=4){return}H[b+60|0]=K[b+60|0]&254|c&1;if(c){break a}b=J[a+112>>2];if(b){while(1){c=J[b+4>>2];b=J[b+12>>2];if(!(J[c+48>>2]!=(e|0)&J[c+52>>2]!=(e|0))){Pv(J[a+88>>2]+102872|0,c)}if(b){continue}break}}}}function I3(a){a=a|0;var b=0,c=Q(0),d=Q(0),e=Q(0),f=0,g=0,h=0,i=0,j=0,k=0;f=wj(a,1);g=wj(a,2);h=wj(a,3);i=wj(a,4);j=wj(a,5);k=wj(a,6);b=Sj(a,64);J[b+4>>2]=0;J[b+8>>2]=0;d=Q(g);e=Q(f);c=Q(Q(1)/Q(d-e));N[b>>2]=c+c;J[b+24>>2]=0;J[b+28>>2]=0;J[b+60>>2]=1065353216;N[b+48>>2]=c*Q(-Q(e+d));J[b+44>>2]=0;J[b+12>>2]=0;J[b+16>>2]=0;d=Q(i);e=Q(h);c=Q(Q(1)/Q(d-e));N[b+20>>2]=c+c;J[b+32>>2]=0;J[b+36>>2]=0;N[b+52>>2]=c*Q(-Q(e+d));d=Q(j);e=Q(k);c=Q(Q(1)/Q(d-e));N[b+56>>2]=Q(d+e)*c;N[b+40>>2]=c+c;rj(a,-1e4,106883);Mj(a,-2);return 1}function l8(a){a=a|0;var b=0,c=0,d=0,e=Q(0),f=Q(0),g=Q(0),h=Q(0),i=0,j=0;c=Ui-32|0;Ui=c;a:{b=Qj(a,1,c+28|0);if(!(K[b+479|0]&16)){d=Gm(a,2);b:{if(d){i=J[a+8>>2]-J[a+12>>2]|0;Bj(a);j=Kk(a,-1,J[219396]);gj(a,-2);if(i>>4!=J[a+8>>2]-J[a+12>>2]>>4){break a}fm(c,j,J[c+28>>2],6);e=N[d>>2];f=N[c+12>>2];g=N[d+8>>2];h=N[d+4>>2];break b}a=Qm(a,2);f=N[a+12>>2];e=N[a>>2];g=N[a+8>>2];h=N[a+4>>2]}N[b+108>>2]=f;N[b+104>>2]=g;N[b+100>>2]=h;N[b+96>>2]=e;J[b+476>>2]=J[b+476>>2]|4194304}Ui=c+32|0;return 0}Z(143244,37682,190,65548);B()}function _va(a){a=a|0;var b=0,c=Q(0),d=0,e=0;b=Ui-144|0;Ui=b;d=J[J[a+52>>2]+8>>2];e=J[J[a+48>>2]+8>>2];zj(156388,0);J[b+128>>2]=e;zj(156602,b+128|0);J[b+112>>2]=d;zj(156576,b+112|0);J[b+96>>2]=K[a+61|0];zj(157687,b+96|0);c=N[a+80>>2];O[b+88>>3]=N[a+84>>2];O[b+80>>3]=c;zj(157002,b+80|0);c=N[a+88>>2];O[b+72>>3]=N[a+92>>2];O[b+64>>3]=c;zj(156877,b- -64|0);O[b+48>>3]=N[a+104>>2];zj(155670,b+48|0);O[b+32>>3]=N[a+68>>2];zj(155370,b+32|0);O[b+16>>3]=N[a+72>>2];zj(155513,b+16|0);J[b>>2]=J[a+56>>2];zj(157263,b);Ui=b+144|0}function Yla(a){a=a|0;var b=0,c=0,d=Q(0),e=Q(0),f=Q(0),g=0,h=0,i=Q(0),j=0;c=Ui+-64|0;Ui=c;j=pj(c+44|0,a,1,36839,413);b=qj(a,1,J[79308],3640);g=J[b+8>>2];h=J[b+12>>2];a:{if(!(g|h)){break a}if(xk(J[b+4>>2],g,h)){break a}J[c>>2]=tj(J[b+8>>2],J[b+12>>2]);fj(a,102051,c)}b=J[b>>2];Rn(c+36|0,a,1,N[59873]);d=N[b+24>>2];e=N[c+40>>2];f=N[b+20>>2];i=N[c+36>>2];N[c+12>>2]=Q(d*e)-Q(f*i);N[c+8>>2]=Q(d*i)+Q(f*e);d=N[79200];e=N[c+8>>2];f=N[c+12>>2];b=c+16|0;J[b+8>>2]=0;N[b+4>>2]=d*f;N[b>>2]=d*e;cl(a,b);oj(j);Ui=c- -64|0;return 1}function Rla(a){a=a|0;var b=0,c=0,d=Q(0),e=Q(0),f=Q(0),g=0,h=0,i=Q(0),j=0;c=Ui+-64|0;Ui=c;j=pj(c+44|0,a,1,36839,395);b=qj(a,1,J[79308],3640);g=J[b+8>>2];h=J[b+12>>2];a:{if(!(g|h)){break a}if(xk(J[b+4>>2],g,h)){break a}J[c>>2]=tj(J[b+8>>2],J[b+12>>2]);fj(a,102051,c)}b=J[b>>2];Rn(c+36|0,a,1,N[59873]);d=N[b+20>>2];e=N[c+36>>2];f=N[b+24>>2];i=N[c+40>>2];N[c+12>>2]=Q(d*e)+Q(f*i);N[c+8>>2]=Q(f*e)-Q(d*i);d=N[79200];e=N[c+8>>2];f=N[c+12>>2];b=c+16|0;J[b+8>>2]=0;N[b+4>>2]=d*f;N[b>>2]=d*e;cl(a,b);oj(j);Ui=c- -64|0;return 1}function F2(a){a=a|0;var b=0,c=0,d=0,e=0,f=0;b=Ui-48|0;Ui=b;e=Aj(a,1,0);Oj(a,2,5);c=338288;a:{b:{d=lK(a,2);if(d>>>0<524289){break b}J[b+44>>2]=0;fo(b+44|0,16,d);c=J[b+44>>2];if(c){break b}J[b>>2]=d;a=fj(a,120769,b);break a}d=MB(a,c,d,2);f=ol(e,82669);if(!f){if((c|0)!=338288){cj(c)}J[b+16>>2]=e;a=fj(a,118439,b+16|0);break a}d=(yl(c,1,d,f)|0)==(d|0)&!vk(f);if((c|0)!=338288){cj(c)}if(!d){Fm(e);J[b+32>>2]=e;a=fj(a,118439,b+32|0);break a}c=J[a+8>>2];J[c+8>>2]=1;J[c>>2]=1;J[a+8>>2]=J[a+8>>2]+16;a=1}Ui=b+48|0;return a|0}function lua(a,b,c,d){a=a|0;b=b|0;c=c|0;d=d|0;var e=0,f=0,g=0,h=0,i=0;e=J[a+108>>2];if(!e){g=L[a+56>>1];if(g){e=1;h=1;while(1){f=J[a+68>>2]+(e<<2)|0;a:{if(!(H[f|0]&1)){break a}f=J[a+60>>2]+(L[f+2>>1]<<6)|0;e=0;b:{if(N[b>>2]>N[f+32>>2]){break b}e=0;if(N[c>>2]>2]){break b}e=1}if((N[c+8>>2]>2]|N[b+8>>2]>N[f+40>>2]?i:e)^1|N[c+4>>2]>2]|N[b+4>>2]>N[f+36>>2]){break a}Zi[J[J[d>>2]+8>>2]](d,f)|0;g=L[a+56>>1]}h=h+1|0;e=h&65535;if(e>>>0<=g<<1>>>0){continue}break}}return}Zi[J[J[e>>2]+28>>2]](e,b,c,d)}function R1(a){a=a|0;var b=0,c=0,d=0,e=Q(0),f=Q(0),g=Q(0),h=Q(0),i=0,j=0;b=Ui-96|0;Ui=b;J[b+92>>2]=0;j=Aj(a,1,b+92|0);c=qj(a,2,J[215721],0);e=N[c+8>>2];f=N[c>>2];g=N[c+4>>2];a:{if(!(f!=f|g!=g|e!=e)){h=N[c+12>>2];if(h==h){break a}}h=N[c+12>>2];O[b+72>>3]=e;O[b- -64>>3]=g;O[b+80>>3]=h;O[b+56>>3]=f;J[b+48>>2]=2;fj(a,138642,b+48|0)}d=J[b+92>>2];i=d+98|0;d=nj(i+d|0);e=N[c>>2];g=N[c+4>>2];f=N[c+8>>2];O[b+32>>3]=N[c+12>>2];O[b+24>>3]=f;O[b+16>>3]=g;J[b>>2]=j;O[b+8>>3]=e;Gj(d,i,138142,b);xj(a,d);cj(d);Ui=b+96|0;return 1}function Lua(a){a=a|0;var b=0,c=Q(0),d=0,e=0;b=Ui-144|0;Ui=b;d=J[J[a+52>>2]+8>>2];e=J[J[a+48>>2]+8>>2];zj(156414,0);J[b+128>>2]=e;zj(156602,b+128|0);J[b+112>>2]=d;zj(156576,b+112|0);J[b+96>>2]=K[a+61|0];zj(157687,b+96|0);c=N[a+80>>2];O[b+88>>3]=N[a+84>>2];O[b+80>>3]=c;zj(157002,b+80|0);c=N[a+88>>2];O[b+72>>3]=N[a+92>>2];O[b+64>>3]=c;zj(156877,b- -64|0);O[b+48>>3]=N[a+96>>2];zj(155922,b+48|0);O[b+32>>3]=N[a+68>>2];zj(155370,b+32|0);O[b+16>>3]=N[a+72>>2];zj(155513,b+16|0);J[b>>2]=J[a+56>>2];zj(157263,b);Ui=b+144|0}function w8(a){a=a|0;var b=0,c=0,d=0,e=Q(0),f=Q(0),g=Q(0),h=Q(0),i=0,j=0;c=Ui-32|0;Ui=c;a:{b=Qj(a,1,c+28|0);if(!(K[b+479|0]&16)){d=Gm(a,2);b:{if(d){i=J[a+8>>2]-J[a+12>>2]|0;Bj(a);j=Kk(a,-1,J[219396]);gj(a,-2);if(i>>4!=J[a+8>>2]-J[a+12>>2]>>4){break a}fm(c,j,J[c+28>>2],5);e=N[d>>2];f=N[c+12>>2];g=N[d+8>>2];h=N[d+4>>2];break b}a=Qm(a,2);f=N[a+12>>2];e=N[a>>2];g=N[a+8>>2];h=N[a+4>>2]}N[b+92>>2]=f;N[b+88>>2]=g;N[b+84>>2]=h;N[b+80>>2]=e;J[b+476>>2]=J[b+476>>2]|4194304}Ui=c+32|0;return 0}Z(143244,37682,190,65548);B()}function uj(a,b){var c=0,d=0;a:{if((b|0)>0){b=(J[a+12>>2]+(b<<4)|0)-16|0;c=b>>>0>=M[a+8>>2]?173288:b;break a}c=J[a+8>>2]+(b<<4)|0;if((b|0)>=-9999){break a}b:{switch(b+10002|0){case 2:c=J[a+16>>2]+96|0;break a;case 1:b=J[J[J[J[a+20>>2]+4>>2]>>2]+12>>2];J[a+96>>2]=5;J[a+88>>2]=b;c=a+88|0;break a;case 0:c=a+72|0;break a;default:break b}}c=J[J[J[a+20>>2]+4>>2]>>2];c=K[c+7|0]<-10002-b>>>0?173288:(c+(0-b<<4)|0)-160024|0}b=c;d=J[b+4>>2];c=J[a+8>>2];J[c>>2]=J[b>>2];J[c+4>>2]=d;J[c+8>>2]=J[b+8>>2];J[a+8>>2]=J[a+8>>2]+16}function n8(a){a=a|0;var b=0,c=0,d=0,e=Q(0),f=Q(0),g=Q(0),h=Q(0),i=0,j=0;c=Ui-32|0;Ui=c;a:{b=Qj(a,1,c+28|0);if(!(K[b+479|0]&16)){d=Gm(a,2);b:{if(d){i=J[a+8>>2]-J[a+12>>2]|0;Bj(a);j=Kk(a,-1,J[219396]);gj(a,-2);if(i>>4!=J[a+8>>2]-J[a+12>>2]>>4){break a}fm(c,j,J[c+28>>2],2);e=N[d>>2];f=N[c+12>>2];g=N[d+8>>2];h=N[d+4>>2];break b}a=Qm(a,2);f=N[a+12>>2];e=N[a>>2];g=N[a+8>>2];h=N[a+4>>2]}N[b+44>>2]=f;N[b+40>>2]=g;N[b+36>>2]=h;N[b+32>>2]=e;J[b+476>>2]=J[b+476>>2]|4194304}Ui=c+32|0;return 0}Z(143244,37682,190,65548);B()}function Qpa(a,b,c,d){a=a|0;b=b|0;c=c|0;d=d|0;var e=0,f=0,g=0,h=Q(0),i=Q(0),j=Q(0),k=0,l=Q(0),m=Q(0),n=0;if((d|0)>0){n=a+52|0;while(1){e=g<<4;f=e+c|0;e=b+e|0;h=N[e+8>>2];i=N[e>>2];j=N[e+4>>2];l=Q(Q(h*N[a+60>>2])+Q(Q(i*N[a+52>>2])+Q(j*N[a+56>>2])));m=Q(Q(h*N[a+76>>2])+Q(Q(i*N[a+68>>2])+Q(j*N[a+72>>2])));e=l>2])+Q(Q(i*N[a+84>>2])+Q(j*N[a+88>>2])))>(e?m:l)?2:e)<<4)+n|0;k=J[e+4>>2];J[f>>2]=J[e>>2];J[f+4>>2]=k;k=J[e+12>>2];J[f+8>>2]=J[e+8>>2];J[f+12>>2]=k;g=g+1|0;if((g|0)!=(d|0)){continue}break}}}function K8(a){a=a|0;var b=0,c=0,d=0,e=Q(0),f=Q(0),g=Q(0),h=Q(0),i=0,j=0;c=Ui-32|0;Ui=c;a:{b=Qj(a,1,c+28|0);if(!(K[b+479|0]&16)){d=Gm(a,2);b:{if(d){i=J[a+8>>2]-J[a+12>>2]|0;Bj(a);j=Kk(a,-1,J[219396]);gj(a,-2);if(i>>4!=J[a+8>>2]-J[a+12>>2]>>4){break a}fm(c,j,J[c+28>>2],3);e=N[d>>2];f=N[c+12>>2];g=N[d+8>>2];h=N[d+4>>2];break b}a=Qm(a,2);f=N[a+12>>2];e=N[a>>2];g=N[a+8>>2];h=N[a+4>>2]}N[b+60>>2]=f;N[b+56>>2]=g;N[b+52>>2]=h;N[b+48>>2]=e;J[b+476>>2]=J[b+476>>2]|4194304}Ui=c+32|0;return 0}Z(143244,37682,190,65548);B()}function jY(a){a=a|0;var b=0,c=0,d=0,e=0;d=Ui-32|0;Ui=d;b=Ui-48|0;Ui=b;c=K[216847]|K[216848]<<8|(K[216849]<<16|K[216850]<<24);H[b+31|0]=c;H[b+32|0]=c>>>8;H[b+33|0]=c>>>16;H[b+34|0]=c>>>24;c=J[54211];J[b+24>>2]=J[54210];J[b+28>>2]=c;c=J[54209];J[b+16>>2]=J[54208];J[b+20>>2]=c;c=b+16|12;a:{b:{while(1){yV(c);H[b+15|0]=0;if((Ii(-100,b+16|0,b+15|0,1)|0)==-44){break b}e=e+1|0;if((e|0)!=100){continue}break}c=0;break a}c=fq(d?d:994784,b+16|0)}Ui=b+48|0;c:{if(!c){a=fj(a,65834,0);break c}xj(a,d);a=1}Ui=d+32|0;return a|0}function jP(a,b,c){var d=0,e=0;d=J[b>>2];Tj(d);e=J[b+8>>2];b=J[b+4>>2];if(e-b>>6>>>0<=c>>>0){Z(145396,53895,487,84789);B()}b=b+(c<<6)|0;c=J[b+4>>2];J[a>>2]=J[b>>2];J[a+4>>2]=c;c=J[b+60>>2];J[a+56>>2]=J[b+56>>2];J[a+60>>2]=c;c=J[b+52>>2];J[a+48>>2]=J[b+48>>2];J[a+52>>2]=c;c=J[b+44>>2];J[a+40>>2]=J[b+40>>2];J[a+44>>2]=c;c=J[b+36>>2];J[a+32>>2]=J[b+32>>2];J[a+36>>2]=c;c=J[b+28>>2];J[a+24>>2]=J[b+24>>2];J[a+28>>2]=c;c=J[b+20>>2];J[a+16>>2]=J[b+16>>2];J[a+20>>2]=c;c=J[b+12>>2];J[a+8>>2]=J[b+8>>2];J[a+12>>2]=c;Lj(d)}function iea(a){a=a|0;var b=0,c=0,d=0;b=nj(36);J[b>>2]=0;J[b+4>>2]=0;J[b+32>>2]=0;J[b+24>>2]=0;J[b+28>>2]=0;J[b+16>>2]=0;J[b+20>>2]=0;J[b+8>>2]=0;J[b+12>>2]=0;J[b+16>>2]=J[a+24>>2];d=$Q(J[a>>2],b,0);if(!d){J[J[a+28>>2]+8>>2]=b;J[J[a+28>>2]+16>>2]=(J[b+8>>2]+(J[a+16>>2]-J[b>>2]|0)|0)+36;return d|0}a=J[a>>2];c=J[b+16>>2];if(c){Uj(c)}c=J[b+32>>2];if(c){vj(a,c)}c=J[b+20>>2];if(c){vj(a,c)}c=J[b+28>>2];if(c){vj(a,c)}c=J[b+24>>2];if(c){vj(a,c)}a:{if(H[b+12|0]&1){break a}a=J[b>>2];if(!a){break a}cj(a)}cj(b);return d|0}function bja(a){a=a|0;var b=0,c=0,d=0,e=0;d=J[a+8>>2];c=J[d+16>>2];e=J[J[a+16>>2]>>2];if(e>>>0>2]-c>>3>>>0){c=J[c+(e<<3)>>2];b=J[d>>2];if(c>>>0>2]-b>>2>>>0){a=J[J[J[a+4>>2]+80>>2]>>2];c=J[b+(c<<2)>>2];b=J[c+208>>2];if(b){vj(a,b)}b=J[c+176>>2];if(b){vj(a,b)}b=J[c+180>>2];if(b){vj(a,b)}b=J[c+184>>2];if(b){vj(a,b)}b=J[c+188>>2];if(b){vj(a,b)}b=J[c+192>>2];if(b){vj(a,b)}b=J[c+196>>2];if(b){vj(a,b)}b=J[c+200>>2];if(b){vj(a,b)}c=J[c+204>>2];if(c){vj(a,c)}nv(d,e);return 0}}Z(145396,53895,487,84789);B()}function tt(a,b,c){var d=0,e=0,f=0,g=0,h=0;a:{b:{c:{d:{e:{if(b>>>0<=c>>>0){e=J[a>>2];if(e>>>0>b>>>0){break e}f=J[a+4>>2];d=f+e|0;if(d>>>0>>0){break e}if(c>>>0>d>>>0){break d}g=b-e|0;if((g|0)<0){break c}d=c-b|0;if((d|0)<0){break b}h=d+g|0;if(h>>>0>f>>>0){break a}if((b|0)!=(c|0)){b=e+g|0;el(b,b+d|0,f-h|0);J[a+4>>2]=J[a+4>>2]-d}return}Z(71469,54122,782,62650);B()}Z(145407,54122,783,62650);B()}Z(145444,54122,784,62650);B()}Z(114101,54122,789,62650);B()}Z(114101,54122,796,62650);B()}Z(58855,54122,729,62650);B()}function Vs(a){var b=0,c=0,d=0,e=0;if(!K[874264]){nl();H[874264]=1}a:{b:{c:{d:{if(!(!J[a+24>>2]|K[874164]!=1)){d=J[218540];Tj(d);if(!K[874264]){nl();H[874264]=1}c=J[a+24>>2];b=J[218558];if(c>>>0>=J[218559]-b>>3>>>0){break d}cj(J[b+(c<<3)>>2]);c=J[a+24>>2];if(!c){break c}e=J[218562];if(!e){break b}b=J[218564]-1|0;if(b>>>0>=M[218563]){break a}J[218564]=b;J[(b<<2)+e>>2]=c;J[a+24>>2]=0;Lj(d)}return}Z(145396,54052,487,84789);B()}Z(113560,41081,136,10765);B()}Z(49493,54391,140,53220);B()}Z(2650,54391,141,53220);B()}function ft(a,b){var c=0,d=0,e=0;c=J[b+84>>2];if((c|0)!=296128){vj(J[a>>2],c)}kt(a,b);if(L[b+138>>1]<<16!=2147418112){zy(a,b)}c=J[b+140>>2];cj(b);a:{b:{c:{b=c&32767;d=J[a+1036>>2];if(b>>>0>2]-d>>2>>>0){J[d+(b<<2)>>2]=0;c=J[a+1052>>2];if(!c){break c}d=L[a+1058>>1]-1|0;e=d&65535;if(e>>>0>=L[a+1056>>1]){break b}I[a+1058>>1]=d;I[c+(e<<1)>>1]=b;if(M[a+3168>>2]>L[a+1058>>1]){break a}return}Z(145396,53895,487,84789);B()}Z(49493,54340,140,53220);B()}Z(2650,54340,141,53220);B()}Z(145129,38296,815,70254);B()}function eva(a,b,c){a=a|0;b=b|0;c=c|0;var d=0,e=Q(0),f=0,g=0,h=Q(0),i=Q(0),j=Q(0),k=Q(0);g=J[a+416>>2];d=1;a:{if((g|0)<=0){break a}e=N[b+12>>2];h=Q(N[c>>2]-N[b>>2]);i=Q(N[c+4>>2]-N[b+4>>2]);j=N[b+8>>2];k=Q(Q(e*h)+Q(i*j));e=Q(Q(e*i)-Q(j*h));d=0;if(Q(Q(N[a+288>>2]*Q(k-N[a+160>>2]))+Q(Q(e-N[a+164>>2])*N[a+292>>2]))>Q(0)){break a}b=a+288|0;a=a+160|0;while(1){f=f+1|0;if((g|0)!=(f|0)){c=f<<3;d=c+b|0;c=a+c|0;if(!(Q(Q(N[d>>2]*Q(k-N[c>>2]))+Q(Q(e-N[c+4>>2])*N[d+4>>2]))>Q(0))){continue}}break}d=(f|0)>=(g|0)}return d|0}function KD(a){var b=0;a:{if(H[a+160|0]&1){break a}b=J[a+140>>2];if(b){cj(b)}b=J[a+132>>2];if(!b){break a}cj(b)}b:{if(H[a+128|0]&1){break b}b=J[a+108>>2];if(b){cj(b)}b=J[a+100>>2];if(!b){break b}cj(b)}c:{if(H[a+84|0]&1){break c}b=J[a+72>>2];if(!b){break c}cj(b)}d:{if(H[a+68|0]&1){break d}b=J[a+56>>2];if(!b){break d}cj(b)}e:{if(H[a+52|0]&1){break e}b=J[a+40>>2];if(!b){break e}cj(b)}f:{if(H[a+36|0]&1){break f}b=J[a+24>>2];if(!b){break f}cj(b)}g:{if(H[a+20|0]&1){break g}b=J[a+8>>2];if(!b){break g}cj(b)}return a}function Eu(a){var b=0,c=0,d=0;b=J[a+8>>2];c=b-J[a+12>>2]>>4;d=J[84546];J[b+8>>2]=3;O[b>>3]=d|0;J[a+8>>2]=J[a+8>>2]+16;Ck(a,-10002);a:{b:{c:{d:{if(sm(a,-1)){mj(a,173040,10);Ll(a,-2);Rl(a,-2);if(kj(a,-1)){break d}gj(a,-2)}gj(a,-2);b=0;if(J[a+8>>2]-J[a+12>>2]>>4==(c|0)){break c}Z(143244,37704,936,70473);B()}uj(a,-2);Wk(a,1,1);if((c+2|0)!=J[a+8>>2]-J[a+12>>2]>>4){break b}b=ck(a,-1);gj(a,-3);if(J[a+8>>2]-J[a+12>>2]>>4!=(c|0)){break a}b=(b|0)!=0}return b}Z(143309,37704,929,70473);B()}Z(143244,37704,932,70473);B()}function xy(a,b){var c=0,d=0,e=0,f=0,g=0,h=0,i=0,j=0;a:{b:{d=J[a+20>>2];c=J[a+16>>2];c:{if((d|0)==(c|0)){break c}c=d-c>>2;h=c>>>0<=1?1:c;i=c-1|0;d=0;while(1){e=J[a+16>>2];g=J[a+20>>2]-e>>2;c=d;if(g>>>0<=c>>>0){break a}d=c+1|0;j=c>>>0>=i>>>0;c=(c<<2)+e|0;f=J[c>>2]==(b|0)|f;if(!(j|!(f&1))){if(d>>>0>=g>>>0){break a}J[c>>2]=J[(d<<2)+e>>2]}if((d|0)!=(h|0)){continue}break}if(!(f&1)){break c}b=J[a+20>>2];if((b|0)==J[a+16>>2]){break b}J[a+20>>2]=b-4}return}Z(112533,53895,572,43112);B()}Z(145396,53895,487,84789);B()}function aoa(a){a=a|0;var b=0,c=0,d=0;b=Ui-32|0;Ui=b;d=J[a+4>>2];c=J[a>>2];J[b+28>>2]=J[c>>2];J[b+24>>2]=J[c+4>>2];J[b+20>>2]=0;J[b+16>>2]=0;Zi[J[c+32>>2]](d,b+16|0,b+20|0,b+28|0,b+24|0);if(J[b+16>>2]){H[287712]=0;H[287904]=0;dd();hi();Zi[J[c+24>>2]](d);a:{if(J[b+16>>2]!=1){break a}c=Zi[J[c+20>>2]](J[b+28>>2],J[b+24>>2])|0;J[a+4>>2]=c;if(c){Sa(21,a|0,0,1);break a}dj(4,95703,10731,0);J[b+20>>2]=1}J[b>>2]=J[b+20>>2];dj(2,95703,78560,b)}if(!K[287712]){H[287712]=1;H[287904]=1}Zi[J[J[a>>2]+28>>2]](d)|0;Ui=b+32|0}function _n(a,b){var c=0,d=0,e=0;e=b+6|0;d=J[a+32>>2];a:{if(b+7>>>0<=268435455){c=lk(a,d,J[a+44>>2]<<4,e<<4);break a}c=Dl(a)}J[a+44>>2]=e;J[a+32>>2]=c;J[a+28>>2]=(b<<4)+c;J[a+8>>2]=(J[a+8>>2]-d|0)+c;b=J[a+104>>2];if(b){while(1){J[b+8>>2]=J[a+32>>2]+(J[b+8>>2]-d|0);b=J[b>>2];if(b){continue}break}c=J[a+32>>2]}b=J[a+40>>2];e=J[a+20>>2];if(b>>>0<=e>>>0){while(1){J[b+8>>2]=(J[b+8>>2]-d|0)+c;J[b>>2]=(J[b>>2]-d|0)+c;J[b+4>>2]=(J[b+4>>2]-d|0)+c;b=b+24|0;if(e>>>0>=b>>>0){continue}break}}J[a+12>>2]=(J[a+12>>2]-d|0)+c}function Nv(a,b,c){var d=0,e=0;c=J[a+40>>2]+P(P(H[J[a+12>>2]+20|0]&1,c),6)|0;d=L[b>>1]|L[b+2>>1]<<16;I[c>>1]=d;I[c+2>>1]=d>>>16;I[c+4>>1]=L[b+4>>1];d=J[a+8>>2];a:{if(!d){break a}e=J[J[a+12>>2]+4>>2];b=J[d+112>>2];if(b){while(1){c=J[b+4>>2];if(!(J[c+48>>2]!=(a|0)&J[c+52>>2]!=(a|0))){J[c+4>>2]=J[c+4>>2]|8}b=J[b+12>>2];if(b){continue}break}}if((e|0)==4){break a}b=J[d+88>>2];if(!b|J[a+28>>2]<=0){break a}c=b+102872|0;b=0;while(1){oV(c,J[(J[a+24>>2]+P(b,28)|0)+24>>2]);b=b+1|0;if((b|0)>2]){continue}break}}}function Kpa(a,b,c){a=a|0;b=b|0;c=c|0;var d=Q(0),e=Q(0),f=Q(0),g=Q(0),h=Q(0),i=Q(0),j=Q(0),k=Q(0),l=Q(0),m=Q(0);f=N[a+72>>2];h=N[a+88>>2];d=N[a+56>>2];k=N[a+76>>2];j=N[a+84>>2];e=N[a+52>>2];i=N[a+68>>2];l=N[a+92>>2];g=N[a+60>>2];J[c+12>>2]=0;i=Q(i-e);h=Q(h-d);f=Q(f-d);e=Q(j-e);d=Q(Q(i*h)-Q(f*e));j=d;m=Q(d*d);d=f;f=Q(l-g);g=Q(k-g);d=Q(Q(d*f)-Q(g*h));e=Q(Q(g*e)-Q(i*f));g=Q(Q(1)/Q(Y(Q(m+Q(Q(d*d)+Q(e*e))))));f=Q(j*g);N[c+8>>2]=f;e=Q(e*g);N[c+4>>2]=e;d=Q(d*g);N[c>>2]=d;if(b){N[c+8>>2]=-f;N[c+4>>2]=-e;N[c>>2]=-d}}function yca(a){a=a|0;var b=0,c=0,d=0,e=0,f=0;b=Ui-80|0;Ui=b;e=J[a+8>>2]-J[a+12>>2]|0;pk(a);J[b+72>>2]=mk(a,2);J[b+76>>2]=Yi;c=b- -64|0;J[c>>2]=0;J[c+4>>2]=0;J[b+56>>2]=0;J[b+60>>2]=0;J[b+48>>2]=0;J[b+52>>2]=0;J[b+40>>2]=0;J[b+44>>2]=0;J[b+32>>2]=0;J[b+36>>2]=0;J[b+24>>2]=0;J[b+28>>2]=0;J[b+16>>2]=0;J[b+20>>2]=0;J[b+8>>2]=0;J[b+12>>2]=0;c=b+40|0;d=b+8|0;Sk(a,1,c,d);f=c;c=J[59614];Jk(d,f,J[c+8>>2],J[c+12>>2],0,0,c,b+72|0,8,0);if(e>>4!=J[a+8>>2]-J[a+12>>2]>>4){Z(143244,40250,169,14107);B()}Ui=b+80|0;return 0}function xia(a,b){a=a|0;b=b|0;var c=0,d=0;c=nj(12);J[c>>2]=J[a+4>>2];J[c+4>>2]=ak(J[a>>2],11026,32);J[c+8>>2]=ak(J[a>>2],24777,256);d=ak(J[a>>2],58888,16384);J[J[77376]+16>>2]=d;d=ak(J[a>>2],58940,2097152);J[J[77376]+12>>2]=d;ak(J[a>>2],24777,256);I[b+104>>1]=600;J[b+16>>2]=c;J[b+100>>2]=J[b+100>>2]&-65537|65536;J[b+100>>2]=J[b+100>>2]&-131073|131072;J[b+20>>2]=303;J[b+24>>2]=304;J[b+28>>2]=305;J[b+32>>2]=306;J[b+44>>2]=307;J[b+52>>2]=308;J[b+68>>2]=309;J[b+84>>2]=310;J[b+88>>2]=311;J[b+48>>2]=312;return 0}function q8(a){a=a|0;var b=0,c=0,d=0,e=Q(0),f=Q(0),g=Q(0),h=Q(0),i=0,j=0;c=Ui-32|0;Ui=c;a:{b=Qj(a,1,c+28|0);if(!(K[b+479|0]&16)){d=Gm(a,2);b:{if(d){i=J[a+8>>2]-J[a+12>>2]|0;Bj(a);j=Kk(a,-1,J[219396]);gj(a,-2);if(i>>4!=J[a+8>>2]-J[a+12>>2]>>4){break a}fm(c,j,J[c+28>>2],0);e=N[d>>2];f=N[c+12>>2];g=N[d+8>>2];h=N[d+4>>2];break b}a=Qm(a,2);f=N[a+12>>2];e=N[a>>2];g=N[a+8>>2];h=N[a+4>>2]}N[b+12>>2]=f;N[b+8>>2]=g;N[b+4>>2]=h;N[b>>2]=e;J[b+476>>2]=J[b+476>>2]|4194304}Ui=c+32|0;return 0}Z(143244,37682,190,65548);B()}function hfa(a){a=a|0;var b=0,c=0,d=0,e=0,f=0;b=Ui-16|0;Ui=b;c=-2;a:{if(dk(J[a+20>>2],J[a+24>>2],J[56642],b+12|0,0)){break a}J[b+8>>2]=0;J[b>>2]=0;J[b+4>>2]=0;d=J[a>>2];c=J[b+12>>2];e=K[c+4|0];H[b+8|0]=e|K[c+5|0]<<1;f=Gk(J[c>>2]);J[b+4>>2]=f;b:{c:{if(e){Uj(c);break c}c=wk(d,f,b);Uj(J[b+12>>2]);if(c){break b}}c=J[J[a+36>>2]+8>>2];d=J[c>>2];if(d){vj(J[a>>2],d)}cj(J[c+4>>2]);J[c+8>>2]=J[b+8>>2];a=J[b+4>>2];J[c>>2]=J[b>>2];J[c+4>>2]=a;c=0;break a}d=J[b>>2];if(d){vj(J[a>>2],d)}cj(J[b+4>>2])}Ui=b+16|0;return c|0}function baa(a){a=a|0;var b=0,c=0,d=0,e=0,f=0,g=0,h=Q(0);c=Ui-32|0;Ui=c;f=pj(c+12|0,a,1,37682,4813);Bj(a);b=qj(a,-1,J[219396],139183);gj(a,-2);Qj(a,1,c+8|0);a:{b:{c:{e=J[c+8>>2];d=e&65535;g=J[b+36>>2];b=J[b+32>>2];if(d>>>0<(g-b|0)/672>>>0){b=b+P(d,672)|0;if(L[b+648>>1]!=(e>>>16|0)){break c}if(L[b+650>>1]!=(d|0)){break b}h=N[b+60>>2];break a}Z(145396,53895,487,84789);B()}Z(47372,40876,188,69601);B()}Z(5388,40876,189,69601);B()}b=J[a+8>>2];J[b+8>>2]=3;O[b>>3]=h;J[a+8>>2]=J[a+8>>2]+16;oj(f);Ui=c+32|0;return 1}function Pga(a){a=a|0;var b=0,c=0,d=0,e=0,f=0;b=Ui-80|0;Ui=b;e=J[a+8>>2]-J[a+12>>2]|0;pk(a);J[b+72>>2]=mk(a,2);J[b+76>>2]=Yi;c=b- -64|0;J[c>>2]=0;J[c+4>>2]=0;J[b+56>>2]=0;J[b+60>>2]=0;J[b+48>>2]=0;J[b+52>>2]=0;J[b+40>>2]=0;J[b+44>>2]=0;J[b+32>>2]=0;J[b+36>>2]=0;J[b+24>>2]=0;J[b+28>>2]=0;J[b+16>>2]=0;J[b+20>>2]=0;J[b+8>>2]=0;J[b+12>>2]=0;c=b+40|0;d=b+8|0;Sk(a,1,c,d);f=c;c=J[57166];Jk(d,f,J[c+8>>2],J[c+12>>2],0,0,c,b+72|0,8,0);if(e>>4!=J[a+8>>2]-J[a+12>>2]>>4){Z(143244,40569,523,14055);B()}Ui=b+80|0;return 0}function Pca(a){a=a|0;var b=0,c=0,d=0,e=0,f=0;b=Ui-80|0;Ui=b;e=J[a+8>>2]-J[a+12>>2]|0;pk(a);J[b+72>>2]=mk(a,2);J[b+76>>2]=Yi;c=b- -64|0;J[c>>2]=0;J[c+4>>2]=0;J[b+56>>2]=0;J[b+60>>2]=0;J[b+48>>2]=0;J[b+52>>2]=0;J[b+40>>2]=0;J[b+44>>2]=0;J[b+32>>2]=0;J[b+36>>2]=0;J[b+24>>2]=0;J[b+28>>2]=0;J[b+16>>2]=0;J[b+20>>2]=0;J[b+8>>2]=0;J[b+12>>2]=0;c=b+40|0;d=b+8|0;Sk(a,1,c,d);f=c;c=J[57166];Jk(d,f,J[c+8>>2],J[c+12>>2],0,0,c,b+72|0,8,0);if(e>>4!=J[a+8>>2]-J[a+12>>2]>>4){Z(143244,41350,415,14082);B()}Ui=b+80|0;return 0}function N1(a){a=a|0;var b=0,c=Q(0),d=0,e=Q(0),f=Q(0),g=Q(0),h=0,i=Q(0);d=Ui-48|0;Ui=d;b=Kk(a,1,J[215721]);a:{if(b){h=wj(a,2);break a}h=wj(a,1);b=qj(a,2,J[215721],0);c=N[b+8>>2];f=N[b>>2];g=N[b+4>>2];if(!(f!=f|g!=g|c!=c)){e=N[b+12>>2];if(e==e){break a}}e=N[b+12>>2];O[d+24>>3]=c;O[d+16>>3]=g;O[d+32>>3]=e;O[d+8>>3]=f;J[d>>2]=2;fj(a,138642,d)}c=N[b+12>>2];g=N[b>>2];f=N[b+4>>2];e=N[b+8>>2];b=Sj(a,16);i=c;c=Q(h);N[b+12>>2]=i*c;N[b+8>>2]=e*c;N[b+4>>2]=f*c;N[b>>2]=g*c;rj(a,-1e4,106998);Mj(a,-2);Ui=d+48|0;return 1}function Pj(a,b){var c=0,d=0,e=0;c=J[a+4>>2];d=0;a:{if(!c){break a}e=J[a+8>>2]-4|0;while(1){d=c;if(J[e+(c<<2)>>2]){break a}c=c-1|0;if(c){continue}break}d=0}c=(b|0)!=0;if(!(d|c)){return 0}if(c>>>0>>0){return J[a>>2]}if(c>>>0>d>>>0){return(b|0)>=0?-1:1}c=1;e=J[a>>2];b:{c:{if((e|0)>0){if((b|0)>=0){break c}break b}if((b|0)<0){break c}c=-1;if(e){break b}}c=b;b=b>>31;b=(c^b)-b|0;while(1){if(!d){return 0}d=d-1|0;c=J[J[a+8>>2]+(d<<2)>>2];if(c>>>0>b>>>0){return e}if(b>>>0<=c>>>0){continue}break}c=0-e|0}return c}function B_(a){a=a|0;var b=0,c=0,d=0,e=0,f=0;d=Ui-16|0;Ui=d;a:{b:{b=Zm(a,2,10);if((b|0)==10){Em(a,1);if(!kk(a,1)){break b}e=ok(a,1);b=J[a+8>>2];J[b+8>>2]=3;O[b>>3]=e;J[a+8>>2]=J[a+8>>2]+16;break a}c=Aj(a,1,0);if(b-2>>>0>=35){Dk(a,2,68229)}f=fw(c,d+12|0,b);b=J[d+12>>2];if((c|0)==(b|0)){break b}while(1){c=K[b|0];b=b+1|0;if((c|0)==32|c-14>>>0>4294967290){continue}break}if(c){break b}b=J[a+8>>2];J[b+8>>2]=3;O[b>>3]=f>>>0;J[a+8>>2]=J[a+8>>2]+16;break a}b=J[a+8>>2];J[b+8>>2]=0;J[a+8>>2]=b+16}Ui=d+16|0;return 1}function p6(a){a=a|0;var b=0,c=0,d=0,e=0,f=0,g=0,h=0,i=0;b=Ui-32|0;Ui=b;c=Vj(a,1);d=J[c+8>>2];f=J[c+12>>2];e=J[c>>2];c=Ej(a,2);J[b+28>>2]=0;J[b+24>>2]=0;a:{if(rL(e,d,f,b+28|0,b+24|0,b+20|0)){b:{e=c-1|0;g=e<<2;h=J[b+20>>2];if(M[b+24>>2]<=((h|0)==9?g:e)>>>0){break b}i=J[b+28>>2];c:{switch(h|0){case 0:yo(a,(e<<4)+i|0);a=1;break a;case 9:break c;default:break b}}Kp(a,(g<<4)+i|0);a=1;break a}d=tj(d,f);J[b+4>>2]=c;J[b>>2]=d;a=fj(a,115776,b);break a}J[b+16>>2]=tj(d,f);a=fj(a,115755,b+16|0)}Ui=b+32|0;return a|0}function K7(a,b){a=a|0;b=b|0;var c=0,d=0,e=0;a=Ui-2240|0;Ui=a;d=a+52|0;ep(J[b+4>>2],d);c=bo(bj(d),Yi);a:{if(!c){J[a>>2]=d;dj(4,95071,148397,a);d=-10;break a}d=0;J[a+48>>2]=0;if(Nn(c,a+52|0,J[245391],a+48|0)){J[a+32>>2]=J[b+4>>2];dj(4,95071,27112,a+32|0);d=-1e3;break a}c=J[a+48>>2];if(!c){break a}c=or(J[245390],J[b+8>>2],c,J[b+20>>2],1);if(c){e=J[b+4>>2];b=c+21|0;if(b>>>0>21){b=97515}else{b=J[(b<<2)+223356>>2]}J[a+20>>2]=b;J[a+16>>2]=e;dj(4,95071,31028,a+16|0);break a}Mu(J[245390])}Ui=a+2240|0;return d|0}function qma(a){a=a|0;var b=0,c=0,d=0,e=0,f=0,g=0,h=0;b=Ui+-64|0;Ui=b;f=pj(b+44|0,a,1,42560,105);e=J[J[pk(a)+80>>2]+8>>2];J[b+32>>2]=0;J[b+36>>2]=0;J[b+24>>2]=0;J[b+28>>2]=0;J[b+16>>2]=0;J[b+20>>2]=0;J[b+8>>2]=0;J[b+12>>2]=0;J[b+4>>2]=0;Al(a,1,e,80935,b+4|0,b+8|0,0);c=J[b+4>>2];if(H[c+28|0]&1){c=0}else{c=J[c+8>>2]}a:{if(c){g=J[b+28>>2];h=J[b+24>>2];d=Sj(a,16);J[d+8>>2]=h;J[d+12>>2]=g;J[d+4>>2]=e;J[d>>2]=c;rj(a,-1e4,3659);Mj(a,-2);break a}c=J[a+8>>2];J[c+8>>2]=0;J[a+8>>2]=c+16}oj(f);Ui=b- -64|0;return 1}function Du(a,b,c){var d=0,e=0,f=0;d=Ui-336|0;Ui=d;J[d+328>>2]=0;J[d+332>>2]=0;if(c>>>0<=7){J[d+48>>2]=c;J[d+52>>2]=8;e=d- -64|0;Gj(e,256,135737,d+48|0);J[d+32>>2]=e;fj(a,31902,d+32|0)}e=b;a:{b:{if(J[b>>2]==1112818760){f=J[b+4>>2];J[d+328>>2]=J[b>>2];J[d+332>>2]=f;if(f>>>0>4){break b}e=b+8|0}f=d- -64|0;ij(f,0,129);c=c-8|0;J[d+200>>2]=c;J[d+196>>2]=e;J[d+204>>2]=0;J[d+208>>2]=0;dK(a,f,d+328|0,b,e,c,0);break a}J[d+20>>2]=4;J[d+16>>2]=f;b=d- -64|0;Gj(b,256,135556,d+16|0);J[d>>2]=b;fj(a,31902,d)}Ui=d+336|0}function fQ(a,b,c,d){var e=0,f=0,g=0,h=0;f=Ui-16|0;Ui=f;e=-1;a:{b:{c:{if(!KK(a,b,-1,f+8|0,f+12|0,c)){c=0;break c}a=ol(b,82700);if(a){um(a,0,2);b=wo(a);um(a,0,0);if(H[c+12|0]&1){break a}h=c+8|0;e=c+4|0;lj(b,1,c,h,e);g=J[c>>2];if(b>>>0>J[c+8>>2]-g>>>0){break b}J[e>>2]=b+g;Sl(g,1,b,a);if(J[a+76>>2]<0){b=J[a>>2]}else{b=J[a>>2]}vk(a);if(!(b>>>5&1)){c=0;break c}if(H[c+12|0]&1){break a}lj(0,1,c,h,e);e=-2;c=-9}else{c=-3}J[d+40>>2]=e}Ui=f+16|0;return c}Z(144782,53895,514,59583);B()}Z(151729,53895,501,2284);B()}function fN(a,b){var c=0,d=0,e=0,f=0,g=0;c=J[a+4>>2];if(c){a:{b:{c:{d:{e:{e=J[a>>2]+((b>>>0)%(c>>>0)<<2)|0;d=J[e>>2];if((d|0)!=-1){f=J[a+8>>2];c=f+P(d,24)|0;if(J[c>>2]!=(b|0)){break e}break d}Z(85666,55629,340,62656);B()}while(1){d=J[c+16>>2];if((d|0)==-1){break c}g=c;c=P(d,24)+f|0;if(J[c>>2]!=(b|0)){continue}break}}J[a+24>>2]=J[a+24>>2]-1;b=J[c+16>>2];if(g){break b}J[e>>2]=b;break a}Z(152754,55629,366,62656);B()}J[g+16>>2]=b}b=J[a+20>>2];J[a+20>>2]=d;J[c+16>>2]=b;return}Z(113800,55629,334,62656);B()} +function mM(a,b){var c=0,d=0,e=0,f=0,g=0;c=Ui-1024|0;Ui=c;d=K[a|0];a:{if(!d){break a}while(1){f=e;b:{if(!((d|0)!=92&(d|0)!=47)){H[c+f|0]=47;while(1){d=K[a|0];if((d|0)==92|(d|0)==47){a=a+1|0;continue}else{g=47;break b}}}H[c+f|0]=d;g=d;d=K[a+1|0];a=a+1|0}e=f+1|0;if(f>>>0<1023?d:0){continue}break}if(!f){e=1;break a}if((g&255)!=47){break a}H[(c+e|0)-1|0]=0}H[(e>>>0>=1023?1023:e)+c|0]=0;c:{if(L[c>>1]==46){break c}a=ul(c,47);if(a){if((a|0)==(c|0)){break c}H[a|0]=0;break c}H[c|0]=0}ek(b,c,1024);Ui=c+1024|0}function q9(a){a=a|0;var b=0,c=0,d=Q(0),e=0,f=Q(0),g=Q(0),h=0,i=0,j=0;h=J[a+8>>2]-J[a+12>>2]>>4;Bj(a);i=qj(a,-1,J[219396],139183);gj(a,-2);a:{if(Mk(a,1)){b=bj(Aj(a,1,0));c=Yi;break a}b=Tl(a,1);c=Yi}j=Aj(a,2,0);if((kj(a,3)|0)<=0){d=Q(34028234663852886e22)}else{d=Q(wj(a,3))}if((kj(a,4)|0)>0){e=(ck(a,4)|0)!=0}else{e=0}if((kj(a,5)|0)<=0){f=Q(1)}else{f=Q(wj(a,5))}if((kj(a,6)|0)<=0){g=Q(0)}else{g=Q(wj(a,6))}qO(a,i,b,c,j,d,e,f,g);if((h+1|0)!=J[a+8>>2]-J[a+12>>2]>>4){Z(143334,37682,2753,25716);B()}return 1}function ho(a,b){var c=0,d=0,e=0,f=0,g=0;e=a+112|0;c=J[e>>2];d=J[a+108>>2];g=c-d>>2;a:{b:{c:{f=J[a+128>>2];d:{if((f|0)!=J[a+124>>2]){e=f-4|0;c=J[e>>2];J[a+128>>2]=e;break d}f=a+108|0;d=J[a+116>>2];if((d|0)==(c|0)){if(H[a+120|0]&1){break c}lj(g+32|0,4,f,a+116|0,e);d=J[a+116>>2];c=J[e>>2]}if((c|0)==(d|0)){break b}a=c+4|0;J[e>>2]=a;J[c>>2]=0;c=g;d=J[f>>2];g=a-d>>2}if(c>>>0>=g>>>0){break a}J[(c<<2)+d>>2]=b;return c}Z(151729,53895,501,2284);B()}Z(112520,53895,557,53220);B()}Z(145396,53895,487,84789);B()}function X3(a){a=a|0;var b=0,c=0,d=0,e=0,f=0,g=0;b=Ui-16|0;Ui=b;e=J[a+8>>2]-J[a+12>>2]>>4;if(!e){fj(a,115523,0)}J[b+12>>2]=0;J[b+8>>2]=0;c=Ui-1392|0;Ui=c;KI(a,c+32|0,1);a:{if(!J[c+1364>>2]){d=c+4|0;mG(d);break a}J[c+1320>>2]=0;d=c+1312|0}uj(a,1);ts(a,c+32|0,0,d);gj(a,-2);f=J[d+8>>2];g=J[d>>2];J[b+12>>2]=g;J[b+8>>2]=f;H[f+g|0]=0;J[d>>2]=0;if(!J[c+1364>>2]){gn(d)}Ui=c+1392|0;mj(a,J[b+12>>2],J[b+8>>2]);cj(J[b+12>>2]);if((e+1|0)!=J[a+8>>2]-J[a+12>>2]>>4){Z(143334,40292,170,69374);B()}Ui=b+16|0;return 1}function bF(a,b){var c=0,d=0;a:{b:{c:{c=J[a+88>>2];if(!(K[c+102868|0]&2)){d=L[a+4>>1];if(((d&32)>>>5|0)==(b|0)){break a}c=c+102872|0;if(b){I[a+4>>1]=d|32;b=J[a+100>>2];if(!b){break a}a=a+12|0;while(1){YU(b,c,a);b=J[b+4>>2];if(b){continue}break}break a}I[a+4>>1]=d&65503;b=J[a+100>>2];if(b){break c}break b}Z(62621,36890,491,60144);B()}while(1){YE(b,c);b=J[b+4>>2];if(b){continue}break}}b=J[a+112>>2];if(b){while(1){d=J[b+12>>2];Pv(J[a+88>>2]+102872|0,J[b+4>>2]);b=d;if(b){continue}break}}J[a+112>>2]=0}}function Lr(a,b,c,d,e,f){var g=0,h=0,i=0,j=0;a:{if(f&64){c=f+-64|0;b=c&31;if((c&63)>>>0>=32){c=0;b=e>>>b|0}else{c=e>>>b|0;b=((1<>>b}d=0;e=0;break a}if(!f){break a}i=d;h=64-f|0;g=h&31;if((h&63)>>>0>=32){h=d<>>32-g|e<>>0>=32){g=0;b=c>>>b|0}else{g=c>>>b|0;b=((1<>>b}b=j|b;c=g|h;g=d;d=f&31;if((f&63)>>>0>=32){h=0;d=e>>>d|0}else{h=e>>>d|0;d=((1<>>d}e=h}J[a>>2]=b;J[a+4>>2]=c;J[a+8>>2]=d;J[a+12>>2]=e}function J5(a){a=a|0;var b=0,c=0,d=0,e=0,f=0,g=0;c=Ui-16|0;Ui=c;b=J[a+8>>2]-J[a+12>>2]>>4;f=b;Bj(a);d=qj(a,-1,J[84364],139081);gj(a,-2);a:{if((b|0)==J[a+8>>2]-J[a+12>>2]>>4){d=Lx(a,d);g=Yi;b=Ej(a,2);e=b-1|0;if(!(1<>>0<=31:0)){J[c>>2]=b;b=fj(a,133241,c)}Zi[J[79451]](d,g,b,c+12|0,c+8|0);b=J[c+12>>2];d=J[a+8>>2];J[d+8>>2]=3;O[d>>3]=b>>>0;J[a+8>>2]=J[a+8>>2]+16;if((f+1|0)!=J[a+8>>2]-J[a+12>>2]>>4){break a}Ui=c+16|0;return 1}Z(143244,37616,478,51340);B()}Z(143334,37616,1573,53003);B()}function fp(a,b,c){var d=0,e=0,f=0,g=0,h=0;a:{if(b){if(!c){break a}b:{if(a){break b}a=J[c>>2];if(a){break b}return 0}while(1){e=a+1|0;f=K[a|0];d=b;c:{while(1){g=K[d|0];if(!g){break c}d=d+1|0;if((f|0)!=(g|0)){continue}break}a=e;continue}break}if(!f){J[c>>2]=0;return 0}while(1){f=e+1|0;g=K[e|0];d=b;d:{while(1){h=K[d|0];if((g|0)==(h|0)){if(g){break d}J[c>>2]=0;return a}d=d+1|0;if(h){continue}break}e=f;continue}break}H[e|0]=0;J[c>>2]=f;return a}Z(92289,39403,82,50943);B()}Z(92275,39403,83,50943);B()}function K5(a){a=a|0;var b=0,c=0,d=0,e=0,f=0,g=0;c=Ui-16|0;Ui=c;b=J[a+8>>2]-J[a+12>>2]>>4;f=b;Bj(a);d=qj(a,-1,J[84364],139081);gj(a,-2);a:{if((b|0)==J[a+8>>2]-J[a+12>>2]>>4){d=Lx(a,d);g=Yi;b=Ej(a,2);e=b-1|0;if(!(1<>>0<=31:0)){J[c>>2]=b;b=fj(a,133241,c)}Zi[J[79451]](d,g,b,c+12|0,c+8|0);b=J[c+8>>2];d=J[a+8>>2];J[d+8>>2]=3;O[d>>3]=b>>>0;J[a+8>>2]=J[a+8>>2]+16;if((f+1|0)!=J[a+8>>2]-J[a+12>>2]>>4){break a}Ui=c+16|0;return 1}Z(143244,37616,478,51340);B()}Z(143334,37616,1610,14698);B()}function psa(a,b,c){a=a|0;b=b|0;c=c|0;var d=0,e=Q(0),f=Q(0),g=Q(0),h=Q(0),i=Q(0),j=Q(0),k=Q(0),l=Q(0),m=Q(0),n=Q(0),o=Q(0),p=0,q=Q(0),r=Q(0),s=Q(0);d=J[b+92>>2];if((d|0)>0){j=N[c+8>>2];k=N[c+4>>2];l=N[c>>2];m=N[b+20>>2];n=N[b+16>>2];o=N[b+12>>2];p=J[b+100>>2];e=Q(-0xde0b6b000000000);b=0;while(1){c=p+(b<<4)|0;f=Q(N[c+8>>2]*m);g=Q(N[c>>2]*o);h=Q(N[c+4>>2]*n);i=Q(Q(j*f)+Q(Q(l*g)+Q(h*k)));if(i>e){q=f;r=h;s=g;e=i}b=b+1|0;if((d|0)!=(b|0)){continue}break}}J[a+12>>2]=0;N[a+8>>2]=q;N[a+4>>2]=r;N[a>>2]=s}function _aa(a,b,c,d){a=a|0;b=b|0;c=c|0;d=d|0;var e=0,f=0,g=0;e=Ui-16|0;Ui=e;a:{b:{f=J[c>>2];c=J[a+108>>2];g=J[a+112>>2]-c>>2;if(f>>>0>>0){J[e+8>>2]=J[c+(f<<2)>>2];d=J[d>>2];if(d>>>0>=g>>>0){break a}J[e+12>>2]=J[c+(d<<2)>>2];c=YO(e+8|0,2);if(c){d=J[b+2068>>2];f=J[a+112>>2];a=J[a+108>>2];if(d>>>0>=f-a>>2>>>0){break a}Fa(J[a+(d<<2)>>2]);if(K[J[79491]+220|0]&2){a=_()|0;if(a){break b}}tP(b)}Ui=e+16|0;return c|0}break a}Cj(a,25743,3003);Z(114101,40535,3003,25743);B()}Z(145396,53895,487,84789);B()}function IS(a,b,c,d,e){var f=0,g=0,h=0;if(kj(a,b)){Oj(a,b,5);f=J[a+8>>2];J[f+8>>2]=3;O[f>>3]=1;J[a+8>>2]=J[a+8>>2]+16;Ck(a,b);if(kj(a,-1)){h=1;while(1){f=fJ(a);if((f|0)!=-1){if((f|0)>=1024){Dk(a,b,59096)}g=(f>>>3&536870908)+d|0;J[g>>2]=J[g>>2]|1<>2];if(!((g|0)!=-1&(f|0)<=(g|0))){J[e>>2]=f}g=J[a+8>>2];J[g+8>>2]=3;O[g>>3]=f|0;J[a+8>>2]=J[a+8>>2]+16;uj(a,-2);Kj(a,c)}gj(a,-2);f=J[a+8>>2];J[f+8>>2]=3;h=h+1|0;O[f>>3]=h>>>0;J[a+8>>2]=J[a+8>>2]+16;Ck(a,b);if(kj(a,-1)){continue}break}}gj(a,-2)}}function rO(a,b,c){var d=0,e=0,f=0,g=0;a:{b:{c:{d=J[a+32>>2];f=(J[a+36>>2]-d|0)/672|0;g=b&65535;a=g;if(f>>>0>a>>>0){e=P(a,672)+d|0;if(L[e+648>>1]!=(b>>>16|0)){break c}a=L[e+650>>1];if((g|0)!=(a|0)){break b}d:{if(c){while(1){a=a&65535;if(a>>>0>=f>>>0){break a}a=P(a,672)+d|0;c=J[a+476>>2]&1048576;b=c>>>20|0;if(!c){break d}a=L[a+656>>1];if((a|0)!=65535){continue}break d}}b=(K[e+478|0]&16)>>>4|0}return b}break a}Z(47372,40876,188,69601);B()}Z(5388,40876,189,69601);B()}Z(145396,53895,487,84789);B()}function X1(a){a=a|0;var b=0,c=Q(0),d=0,e=Q(0),f=Q(0);d=Ui-32|0;Ui=d;b=J[a+8>>2]-J[a+12>>2]>>4;a:{if(!b){break a}if((b|0)==1){if((kj(a,-1)|0)==3){c=Q(ok(a,-1));e=c;f=c;break a}b=qj(a,-1,J[215720],0);f=N[b+8>>2];c=N[b>>2];e=N[b+4>>2];if(!(c!=c|e!=e)&f==f){break a}O[d+24>>3]=f;O[d+16>>3]=e;J[d>>2]=-1;O[d+8>>3]=c;fj(a,138436,d);f=N[b+8>>2];e=N[b+4>>2];c=N[b>>2];break a}c=Q(wj(a,1));e=Q(wj(a,2));f=Q(wj(a,3))}b=Sj(a,16);N[b+8>>2]=f;N[b+4>>2]=e;N[b>>2]=c;rj(a,-1e4,108973);Mj(a,-2);Ui=d+32|0;return 1}function Wo(a,b){a:{b:{switch((b-65>>>0<26?b|32:b)-97|0){case 2:a=(a|0)==127|a>>>0<32;break a;case 3:a=a-48>>>0<10;break a;case 11:a=a-97>>>0<26;break a;case 15:if(a-33>>>0<=93){a=a-48>>>0<10|(a|32)-97>>>0<26}else{a=1}a=!a;break a;case 18:a=(a|0)==32|a-9>>>0<5;break a;case 20:a=a-65>>>0<26;break a;case 22:a=a-48>>>0<10|(a|32)-97>>>0<26;break a;case 23:a=a-48>>>0<10|(a|32)-97>>>0<6;break a;case 25:a=!a;break a;default:return(a|0)==(b|0);case 0:break b}}a=(a|32)-97>>>0<26}return b-97>>>0<26?a:!a}function Nca(a){a=a|0;var b=0,c=0,d=0,e=0,f=0;b=Ui-80|0;Ui=b;e=J[a+8>>2]-J[a+12>>2]|0;pk(a);J[b+76>>2]=ck(a,2);c=b- -64|0;J[c>>2]=0;J[c+4>>2]=0;J[b+56>>2]=0;J[b+60>>2]=0;J[b+48>>2]=0;J[b+52>>2]=0;J[b+40>>2]=0;J[b+44>>2]=0;J[b+32>>2]=0;J[b+36>>2]=0;J[b+24>>2]=0;J[b+28>>2]=0;J[b+16>>2]=0;J[b+20>>2]=0;J[b+8>>2]=0;J[b+12>>2]=0;c=b+40|0;d=b+8|0;Sk(a,1,c,d);f=c;c=J[58942];Jk(d,f,J[c+8>>2],J[c+12>>2],0,0,c,b+76|0,4,0);if(e>>4!=J[a+8>>2]-J[a+12>>2]>>4){Z(143244,41350,289,43284);B()}Ui=b+80|0;return 0}function Lca(a){a=a|0;var b=0,c=0,d=0,e=0,f=0;b=Ui-80|0;Ui=b;e=J[a+8>>2]-J[a+12>>2]|0;pk(a);J[b+76>>2]=ck(a,2);c=b- -64|0;J[c>>2]=0;J[c+4>>2]=0;J[b+56>>2]=0;J[b+60>>2]=0;J[b+48>>2]=0;J[b+52>>2]=0;J[b+40>>2]=0;J[b+44>>2]=0;J[b+32>>2]=0;J[b+36>>2]=0;J[b+24>>2]=0;J[b+28>>2]=0;J[b+16>>2]=0;J[b+20>>2]=0;J[b+8>>2]=0;J[b+12>>2]=0;c=b+40|0;d=b+8|0;Sk(a,1,c,d);f=c;c=J[58958];Jk(d,f,J[c+8>>2],J[c+12>>2],0,0,c,b+76|0,4,0);if(e>>4!=J[a+8>>2]-J[a+12>>2]>>4){Z(143244,41350,328,43253);B()}Ui=b+80|0;return 0}function _P(a,b,c){var d=0,e=0,f=0,g=Q(0),h=0;e=Ui-16|0;Ui=e;g=N[c>>2];d=J[a+8>>2];J[d+8>>2]=3;O[d>>3]=g;J[a+8>>2]=J[a+8>>2]+16;ej(a,-2,46183);N[e>>2]=N[c+16>>2];N[e+4>>2]=N[c+20>>2];N[e+8>>2]=N[c+24>>2];cl(a,e);ej(a,-2,45222);cl(a,c+32|0);ej(a,-2,50321);d=L[c+52>>1];if(d){if(!(d&1)){while(1){f=f+1|0;h=d&2;d=(d&65534)>>>1|0;if(!h){continue}break}}d=(f<<3)+b|0;b=J[d>>2];d=J[d+4>>2]}else{b=0;d=0}Bk(a,b,d);ej(a,-2,36478);b=J[J[c+48>>2]+4>>2];Bk(a,J[b+96>>2],J[b+100>>2]);ej(a,-2,72520);Ui=e+16|0}function Np(a,b,c){var d=0,e=0,f=0,g=0,h=0,i=0;a:{b:{d=J[a+12>>2];c:{if(!d){break c}f=J[d+4>>2];d=J[d>>2];if((f|0)==(d|0)){break c}h=f-d>>3;d=0;while(1){f=J[a+12>>2];g=J[f+4>>2];e=J[f>>2];if(g-e>>3>>>0<=d>>>0){break b}e=e+(d<<3)|0;d:{if(!(J[e>>2]!=(b|0)|J[e+4>>2]!=(c|0))){g=g-8|0;i=J[g+4>>2];J[e>>2]=J[g>>2];J[e+4>>2]=i;e=J[f+4>>2]-8|0;J[f+4>>2]=e;if(e>>>0>2]){break a}h=h-1|0;break d}d=d+1|0}if(d>>>0>>0){continue}break}}return}Z(145396,53895,487,84789);B()}Z(12682,53895,540,43537);B()}function Cla(a){a=a|0;var b=0,c=0,d=Q(0),e=0,f=0,g=0,h=Q(0);c=Ui-48|0;Ui=c;g=pj(c+28|0,a,0,36839,212);b=qj(a,1,J[79308],3640);e=J[b+8>>2];f=J[b+12>>2];a:{if(!(e|f)){break a}if(xk(J[b+4>>2],e,f)){break a}J[c>>2]=tj(J[b+8>>2],J[b+12>>2]);fj(a,102051,c)}b=J[b>>2];Rn(c+16|0,a,2,N[59873]);if(J[b>>2]){d=N[c+16>>2];h=Q(d*d);d=N[c+20>>2];b:{if(!(Q(h+Q(d*d))>Q(0))){break b}a=L[b+4>>1];if(a&2){break b}J[b+144>>2]=0;I[b+4>>1]=a|2}a=J[c+20>>2];J[b+64>>2]=J[c+16>>2];J[b+68>>2]=a}oj(g);Ui=c+48|0;return 0}function kk(a,b){var c=0,d=0;d=Ui-16|0;Ui=d;a:{if((b|0)>0){b=(J[a+12>>2]+(b<<4)|0)-16|0;c=b>>>0>=M[a+8>>2]?173288:b;break a}c=J[a+8>>2]+(b<<4)|0;if((b|0)>=-9999){break a}b:{switch(b+10002|0){case 2:c=J[a+16>>2]+96|0;break a;case 1:b=J[J[J[J[a+20>>2]+4>>2]>>2]+12>>2];J[a+96>>2]=5;J[a+88>>2]=b;c=a+88|0;break a;case 0:c=a+72|0;break a;default:break b}}a=J[J[J[a+20>>2]+4>>2]>>2];c=K[a+7|0]<-10002-b>>>0?173288:(a+(0-b<<4)|0)-160024|0}b=c;a=1;if(J[b+8>>2]!=3){a=(Kw(b,d)|0)!=0}Ui=d+16|0;return a}function i5(a,b){a=a|0;b=b|0;var c=0,d=0,e=0,f=0,g=0;c=Ui-32|0;Ui=c;d=b+12|0;a:{e=J[b+32>>2];if(e>>>0>J[b+20>>2]-J[b+12>>2]>>>0){if(H[b+24|0]&1){break a}lj(e,1,d,b+20|0,b+16|0)}e=J[a+6164>>2];Tj(e);d=Pu(a,J[b+40>>2],J[b+28>>2],J[b+32>>2],c+28|0,c+24|0,d);if(d){a=J[b+28>>2];f=J[b+32>>2];g=J[b+36>>2];b=d+21|0;if(b>>>0>21){b=97515}else{b=J[(b<<2)+223356>>2]}J[c+12>>2]=b;J[c+8>>2]=g;J[c>>2]=a;J[c+4>>2]=f;dj(4,96538,136927,c);a=0}else{a=1}Lj(e);Ui=c+32|0;return a|0}Z(151729,53895,501,2284);B()}function Az(a,b){var c=0,d=0,e=0;a:{b:{c:{d=b&255;if(d){if(a&3){while(1){c=K[a|0];if(!c|(c|0)==(d|0)){break a}a=a+1|0;if(a&3){continue}break}}c=J[a>>2];if(((c|16843008-c)&-2139062144)!=-2139062144){break c}e=P(d,16843009);while(1){d=c^e;if(((16843008-d|d)&-2139062144)!=-2139062144){break c}c=J[a+4>>2];d=a+4|0;a=d;if(((16843008-c|c)&-2139062144)==-2139062144){continue}break}break b}return yj(a)+a|0}d=a}while(1){a=d;c=K[a|0];if(!c){break a}d=a+1|0;if((c|0)!=(b&255)){continue}break}}return a}function WQ(a,b,c){var d=0,e=0,f=0,g=0,h=0,i=0,j=0,k=0;g=ij(c+8|0,0,96);d=wk(a,J[b+12>>2],c+4|0);a:{if(d){break a}d=wk(a,J[b+16>>2],c);if(d){break a}d=J[b+52>>2];if(!d){return 0}i=c+40|0;j=J[b+48>>2];b:{while(1){e=P(f,48)+j|0;k=J[e+44>>2];h=(f<<3)+i|0;J[h>>2]=J[e+40>>2];J[h+4>>2]=k;e=J[e+32>>2];if(K[e|0]){d=wk(a,e,(f<<2)+g|0);if(d){break b}d=J[b+52>>2]}f=f+1|0;if(f>>>0>>0){continue}break}return 0}}b=J[c>>2];if(b){vj(a,b)}J[c>>2]=0;b=J[c+4>>2];if(b){vj(a,b)}J[c+4>>2]=0;$s(a,g);return d}function wL(a,b,c,d){var e=Q(0),f=0,g=0,h=0;a:{g=J[a>>2];a=J[a+4>>2];if((g|0)==(a|0)){break a}a=a-g>>4;h=a>>>0<=1?1:a;a=0;while(1){f=(a<<4)+g|0;if(J[f>>2]!=(b|0)|(c|0)!=J[f+4>>2]){a=a+1|0;if((h|0)!=(a|0)){continue}break a}break}if(!J[f+8>>2]){break a}a=J[f+12>>2];e=N[a>>2];b:{if(e=Q(0)){b=~~e>>>0;break b}b=0}J[d>>2]=b;e=N[a+4>>2];c:{if(e=Q(0)){b=~~e>>>0;break c}b=0}J[d+4>>2]=b;e=N[a+8>>2];d:{if(e=Q(0)){a=~~e>>>0;break d}a=0}J[d+8>>2]=a}}function sca(a,b,c,d,e,f){a=a|0;b=b|0;c=c|0;d=d|0;e=e|0;f=Q(f);var g=0,h=0;g=Ui-32|0;Ui=g;a:{h=J[J[a>>2]+468>>2];a=J[h+20>>2];b:{if(!a){break b}a=J[J[h+16>>2]+((d>>>0)%(a>>>0)<<2)>>2];if((a|0)==-1){break b}h=J[h+24>>2];while(1){a=h+P(a,12)|0;if(J[a>>2]==(d|0)){break a}a=J[a+8>>2];if((a|0)!=-1){continue}break}}H[301280]=1;J[g>>2]=d;dj(4,88458,9017,g);B()}a=J[a+4>>2];h=J[a+20>>2];if(h){J[g+24>>2]=c;J[g+20>>2]=b;a=J[a+4>>2];J[g+28>>2]=d;J[g+12>>2]=e;J[g+16>>2]=a;Zi[h|0](g+12|0,f)}Ui=g+32|0}function YF(a,b,c){var d=0,e=0,f=0,g=0,h=0,i=0,j=0,k=0,l=0;while(1){j=b;k=J[J[a+12>>2]+((b+c|0)/2<<3)>>2];d=c;while(1){f=J[a+12>>2];g=b;while(1){b=g;g=b+1|0;e=(b<<3)+f|0;if(J[e>>2]<(k|0)){continue}break}h=d;while(1){d=h;h=d-1|0;l=d<<3;i=l+f|0;if(J[i>>2]>(k|0)){continue}break}if((b|0)<=(d|0)){b=J[e>>2];d=J[e+4>>2];f=J[i+4>>2];J[e>>2]=J[i>>2];J[e+4>>2]=f;e=J[a+12>>2]+l|0;J[e>>2]=b;J[e+4>>2]=d;d=h;b=g}if((b|0)<=(d|0)){continue}break}if((d|0)>(j|0)){YF(a,j,d)}if((b|0)<(c|0)){continue}break}}function WL(a,b,c){var d=0,e=0,f=0,g=Q(0),h=0,i=0,j=0,k=0;g=N[a+72>>2];d=P(c,3);e=nj(d>>>0>1073741823?-1:P(c,12));a:{if(!c){break a}f=d>>>0<=1?1:d;i=f&3;a=0;if(d>>>0>=4){k=f&-4;f=0;while(1){d=a<<2;N[d+e>>2]=g*N[b+d>>2];h=d|4;N[h+e>>2]=g*N[b+h>>2];h=d|8;N[h+e>>2]=g*N[b+h>>2];d=d|12;N[d+e>>2]=g*N[b+d>>2];a=a+4|0;f=f+4|0;if((k|0)!=(f|0)){continue}break}}if(!i){break a}while(1){d=a<<2;N[d+e>>2]=g*N[b+d>>2];a=a+1|0;j=j+1|0;if((j|0)!=(i|0)){continue}break}}a=GT(Yj(108),e,c,12);cj(e);return a}function TS(a,b,c,d){var e=0,f=0;e=J[b+4>>2];J[a+292>>2]=J[b>>2];J[a+296>>2]=e;e=J[b+12>>2];J[a+300>>2]=J[b+8>>2];J[a+304>>2]=e;H[a+356|0]=1;f=J[b+4>>2];e=a+(J[a>>2]<<4)|0;J[e+4>>2]=J[b>>2];J[e+8>>2]=f;f=J[b+12>>2];J[e+12>>2]=J[b+8>>2];J[e+16>>2]=f;e=J[c+12>>2];b=(J[a>>2]<<4)+a|0;J[b+92>>2]=J[c+8>>2];J[b+96>>2]=e;e=J[c+4>>2];J[b+84>>2]=J[c>>2];J[b+88>>2]=e;c=J[d+12>>2];b=(J[a>>2]<<4)+a|0;J[b+172>>2]=J[d+8>>2];J[b+176>>2]=c;c=J[d+4>>2];J[b+164>>2]=J[d>>2];J[b+168>>2]=c;J[a>>2]=J[a>>2]+1}function M7(a,b,c){a=a|0;b=b|0;c=c|0;var d=0,e=0,f=0,g=0;e=Ui-16|0;Ui=e;H[e+15|0]=b;a:{d=J[c+76>>2];b:{if(!d){jN(c+40|0,a,e+15|0);break b}if(!b){break b}c:{b=J[d+16>>2];c=J[d+12>>2];if((b|0)==(c|0)){break c}b=b-c>>2;g=b>>>0<=1?1:b;b=0;while(1){f=J[c+(b<<2)>>2];if(K[f+344|0]!=(a|0)){b=b+1|0;if((g|0)!=(b|0)){continue}break c}break}JC(d,f,a);break b}b=Km(d,a);if(!b){break b}a=J[d+16>>2];if((a|0)==J[d+20>>2]){break a}J[d+16>>2]=a+4;J[a>>2]=b}Ui=e+16|0;return 1}Z(112520,53895,557,53220);B()}function rla(a,b,c,d,e){a=a|0;b=b|0;c=c|0;d=d|0;e=e|0;var f=0,g=0;f=Ui-32|0;Ui=f;a:{g=J[J[a>>2]+468>>2];a=J[g+20>>2];b:{if(!a){break b}a=J[J[g+16>>2]+((d>>>0)%(a>>>0)<<2)>>2];if((a|0)==-1){break b}g=J[g+24>>2];while(1){a=g+P(a,12)|0;if(J[a>>2]==(d|0)){break a}a=J[a+8>>2];if((a|0)!=-1){continue}break}}H[301280]=1;J[f>>2]=d;dj(4,88458,9017,f);B()}a=J[a+4>>2];J[f+20>>2]=c;J[f+16>>2]=b;b=J[a+4>>2];J[f+24>>2]=d;J[f+8>>2]=e;J[f+12>>2]=b;a=Zi[J[a+16>>2]](f+31|0,f+8|0)|0;Ui=f+32|0;return a|0}function nD(a,b){var c=0,d=0,e=Q(0);a:{b:{c=b&65535;d=J[a+36>>2];a=J[a+32>>2];if(c>>>0<(d-a|0)/672>>>0){a=a+P(c,672)|0;if(L[a+648>>1]!=(b>>>16|0)){break b}if((c|0)!=L[a+650>>1]){break a}b=-1;if(!(!J[a+520>>2]|J[a+504>>2]!=2)){c=J[a+508>>2];b=c&8191;d=(c>>>13&8191)-b|0;c=d-1|0;e=Q(N[a+544>>2]*Q(d|0));c:{if(Q(R(e))=0?(a|0)<(c|0)?a:c:0)|0}return b}Z(145396,53895,487,84789);B()}Z(47372,40876,188,69601);B()}Z(5388,40876,189,69601);B()}function Qj(a,b,c){var d=0,e=0,f=0,g=0;b=qj(a,b,J[219397],0);e=J[b>>2];f=J[a+8>>2]-J[a+12>>2]|0;Bj(a);d=Kk(a,-1,J[219396]);gj(a,-2);if(f>>4==J[a+8>>2]-J[a+12>>2]>>4){if((d|0)!=(e|0)){fj(a,65510,0)}f=J[b>>2];d=J[f+32>>2];a:{b:{e=J[b+4>>2];g=e&65535;if(g>>>0>=(J[f+36>>2]-d|0)/672>>>0){break b}d=P(g,672)+d|0;if(L[d+648>>1]!=(e>>>16|0)|L[d+650>>1]!=(e&65535)|K[d+479|0]&32){break b}a=hD(f,e);if(!c){break a}J[c>>2]=J[b+4>>2];return a}fj(a,69046,0);a=0}return a}Z(143244,37682,190,65548);B()}function Nja(a){a=a|0;var b=0,c=0,d=0;a:{b=J[a+4>>2];a=J[b+4>>2];d=J[b>>2];if((a|0)!=(d|0)){a=a-d>>8;d=a>>>0<=1?1:a;a=0;while(1){c=J[b>>2];if(J[b+4>>2]-c>>8>>>0<=a>>>0){break a}c=c+(a<<8)|0;if(K[c+246|0]&4){cj(J[c+240>>2])}a=a+1|0;if((d|0)!=(a|0)){continue}break}}b:{if(H[b+44|0]&1){break b}a=J[b+32>>2];if(!a){break b}cj(a)}c:{if(H[b+28|0]&1){break c}a=J[b+16>>2];if(!a){break c}cj(a)}d:{if(H[b+12|0]&1){break d}a=J[b>>2];if(!a){break d}cj(a)}cj(b);return 0}Z(145396,53895,487,84789);B()}function u2(a){a=a|0;var b=0,c=0,d=0,e=0,f=0;d=Ui-32|0;Ui=d;f=pj(d+12|0,a,1,39844,755);b=Ej(a,1);c=qx(ux(a),b&65535);a:{if(!((b|0)==J[c+12>>2]?c:0)){c=J[a+8>>2];J[c+8>>2]=0;J[a+8>>2]=c+16;break a}Fj(a,0,0);e=+N[c+16>>2];b=J[a+8>>2];J[b+8>>2]=3;O[b>>3]=e;J[a+8>>2]=J[a+8>>2]+16;ej(a,-2,56743);e=+N[c+20>>2];b=J[a+8>>2];J[b+8>>2]=3;O[b>>3]=e;J[a+8>>2]=J[a+8>>2]+16;ej(a,-2,4147);c=H[c+28|0]&1;b=J[a+8>>2];J[b+8>>2]=1;J[b>>2]=c;J[a+8>>2]=J[a+8>>2]+16;ej(a,-2,56200)}oj(f);Ui=d+32|0;return 1}function eo(a,b){var c=0,d=0,e=0,f=0;c=Ui-16|0;Ui=c;J[c+12>>2]=0;d=-4;a:{if(!a|!K[a|0]){break a}if(Hk(a,35)){break a}if(Hk(a,58)){break a}e=bj(a);f=Yi;while(1){a=J[218661];J[218661]=a?a:1;if(a){continue}break}J[b>>2]=e;J[b+4>>2]=f;d=-6;b=J[218660];a=J[b+4>>2];b:{if(!a){break b}a=J[J[b>>2]+(mxa(e,f,a)<<2)>>2];if((a|0)==-1){break b}b=J[b+8>>2];while(1){a=b+(a<<6)|0;if(J[a>>2]==(e|0)&J[a+4>>2]==(f|0)){d=0;break b}a=J[a+56>>2];if((a|0)!=-1){continue}break}}J[218661]=0}Ui=c+16|0;return d}function rS(a,b,c,d,e,f){var g=0,h=0,i=0,j=0;j=3;a:{b:{if(a+1>>>0<2){break b}h=a&65535;g=J[216330];if(h>>>0>=M[g+8>>2]){break a}i=J[J[g>>2]+(h<<2)>>2];if(!i|L[J[g+4>>2]+(h<<1)>>1]!=(a>>>16|0)){break b}j=11;a=J[i+12>>2];h=J[i+8>>2];if((a|0)==(h|0)){break b}a=a-h>>2;i=a>>>0<=1?1:a;a=0;while(1){g=J[h+(a<<2)>>2];if(J[g>>2]!=(b|0)|J[g+4>>2]!=(c|0)){a=a+1|0;if((i|0)!=(a|0)){continue}break b}break}J[e>>2]=K[g+9|0];J[f>>2]=K[g+8|0];J[d>>2]=J[g+12>>2];j=0}return j}Z(2686,54230,244,5438);B()}function dQ(a,b,c,d){var e=0,f=0;e=Ui-16|0;Ui=e;f=-13;if(!dk(b,c,J[56670],e+4|0,0)){b=nj(32);J[b+8>>2]=0;J[b+12>>2]=0;J[b+24>>2]=0;J[b+28>>2]=0;J[b+16>>2]=0;J[b+20>>2]=0;c=J[e+4>>2];H[b+28|0]=K[c+4|0]|K[c+5|0]<<1;J[b>>2]=bj(J[c>>2]);J[b+4>>2]=Yi;a:{b:{c=J[J[e+4>>2]>>2];c:{if(Bx(a,c,e+12|0,e+8|0)){f=-3;a=84519;break c}a=dk(J[e+12>>2],J[e+8>>2],J[55210],b+8|0,0);cj(J[e+12>>2]);if(!a){break b}f=-2;a=84477}J[e>>2]=c;dj(4,88458,a,e);break a}f=0}Uj(J[e+4>>2]);J[d>>2]=b}Ui=e+16|0;return f}function IU(a){var b=0,c=0,d=0;c=J[a+102952>>2];if(c){while(1){d=J[c+100>>2];c=J[c+96>>2];if(d){while(1){J[d+28>>2]=0;b=J[d+4>>2];XE(d,a);d=b;if(b){continue}break}}if(c){continue}break}}b=a+102872|0;cj(J[b+32>>2]);cj(J[b+44>>2]);cj(J[b+4>>2]);a:{b:{b=a+68|0;if(!J[b+102400>>2]){if(J[b+102796>>2]){break b}break a}Z(112620,39674,32,32516);B()}Z(112669,39674,33,32516);B()}b=0;if(J[a+4>>2]>0){while(1){cj(J[(J[a>>2]+(b<<3)|0)+4>>2]);b=b+1|0;if((b|0)>2]){continue}break}}cj(J[a>>2])}function Mm(a,b,c,d,e,f){var g=0,h=0,i=0;a:{if(f&64){e=f+-64|0;f=b;d=e&31;if((e&63)>>>0>=32){e=f<>>32-d|c<>>0>=32){i=d<>>32-g|e<>>0>=32){e=0;d=c>>>d|0}else{e=c>>>d|0;d=((1<>>d}d=h|d;e=e|i;h=b;g=f&31;if((f&63)>>>0>=32){i=b<>>32-g|c<>2]=b;J[a+4>>2]=c;J[a+8>>2]=d;J[a+12>>2]=e}function Iha(a,b,c,d,e){a=a|0;b=b|0;c=c|0;d=d|0;e=e|0;var f=0,g=0;f=Ui-32|0;Ui=f;a:{g=J[J[a>>2]+468>>2];a=J[g+20>>2];b:{if(!a){break b}a=J[J[g+16>>2]+((d>>>0)%(a>>>0)<<2)>>2];if((a|0)==-1){break b}g=J[g+24>>2];while(1){a=g+P(a,12)|0;if(J[a>>2]==(d|0)){break a}a=J[a+8>>2];if((a|0)!=-1){continue}break}}H[301280]=1;J[f>>2]=d;dj(4,88458,9017,f);B()}a=J[a+4>>2];g=J[a+12>>2];if(g){J[f+20>>2]=c;J[f+16>>2]=b;a=J[a+4>>2];J[f+24>>2]=d;J[f+8>>2]=e;J[f+12>>2]=a;Zi[g|0](f+31|0,f+8|0)}Ui=f+32|0}function I2(a){a=a|0;var b=0,c=0,d=0,e=0,f=0,g=0,h=0;b=Ui-32|0;Ui=b;f=1;g=Aj(a,1,0);c=ol(g,82700);a:{if(!c){Fj(a,0,0);break a}um(c,0,2);e=wo(c);um(c,0,0);d=338288;b:{if(e>>>0<524289){break b}J[b+28>>2]=0;fo(b+28|0,16,e);d=J[b+28>>2];if(d){break b}J[b>>2]=e;f=fj(a,120714,b);break a}h=Sl(d,1,e,c);if(J[c+76>>2]<0){e=J[c>>2]}else{e=J[c>>2]}vk(c);if(e>>>5&1){if((d|0)!=338288){cj(d)}J[b+16>>2]=g;f=fj(a,118471,b+16|0);break a}Du(a,d,h);if((d|0)==338288){break a}cj(d)}Ui=b+32|0;return f|0}function Ena(a){a=a|0;var b=0,c=0,d=0,e=0;d=J[a+8>>2];c=J[J[a+16>>2]>>2];b=J[c+28>>2];J[b>>2]=J[a+4>>2];J[b+4>>2]=d;J[b+8>>2]=J[a+12>>2];a=J[J[c>>2]>>2];d=J[a+8>>2]-J[a+12>>2]>>4;Bj(a);b=Vj(a,-1);gj(a,-2);Nj(a,-1e4,J[c+12>>2]);Ok(a);Nj(a,-1e4,J[c+16>>2]);c=vR(J[c>>2],J[c+28>>2],a);gj(a,-2);a:{if(b){e=J[a+8>>2];J[e+8>>2]=2;J[e>>2]=b;J[a+8>>2]=J[a+8>>2]+16;break a}b=J[a+8>>2];J[b+8>>2]=0;J[a+8>>2]=b+16}Ok(a);if(J[a+8>>2]-J[a+12>>2]>>4!=(d|0)){Z(143244,37648,808,23161);B()}return c|0}function gS(a,b,c){var d=0,e=0;e=Ui-96|0;Ui=e;d=e+4|0;ds(d);J[d+24>>2]=-1009589776;J[d+16>>2]=-1732584194;J[d+20>>2]=271733878;J[d+8>>2]=1732584193;J[d+12>>2]=-271733879;J[d>>2]=0;J[d+4>>2]=0;cs(d,a,b);a=es(d,c);if(d){Zi[J[66509]](d,0,92)|0}if(a){H[c|0]=0;H[c+1|0]=0;H[c+2|0]=0;H[c+3|0]=0;H[c+4|0]=0;H[c+5|0]=0;H[c+6|0]=0;H[c+7|0]=0;H[c+16|0]=0;H[c+17|0]=0;H[c+18|0]=0;H[c+19|0]=0;H[c+8|0]=0;H[c+9|0]=0;H[c+10|0]=0;H[c+11|0]=0;H[c+12|0]=0;H[c+13|0]=0;H[c+14|0]=0;H[c+15|0]=0}Ui=e+96|0}function cz(a,b,c){var d=0;d=J[a+4>>2];a:{if(d){J[a+4>>2]=0;break a}d=Yj(44);J[d>>2]=0;J[d+4>>2]=0;J[d+40>>2]=0;J[d+32>>2]=0;J[d+36>>2]=0;J[d+24>>2]=0;J[d+28>>2]=0;J[d+16>>2]=0;J[d+20>>2]=0;J[d+8>>2]=0;J[d+12>>2]=0}J[d+40>>2]=0;J[d+36>>2]=c;J[d+32>>2]=0;c=J[b+4>>2];J[d>>2]=J[b>>2];J[d+4>>2]=c;c=J[b+12>>2];J[d+8>>2]=J[b+8>>2];J[d+12>>2]=c;c=J[b+20>>2];J[d+16>>2]=J[b+16>>2];J[d+20>>2]=c;c=J[b+28>>2];J[d+24>>2]=J[b+24>>2];J[d+28>>2]=c;Ww(a,J[a>>2],d);J[a+12>>2]=J[a+12>>2]+1;return d}function Xea(a){a=a|0;var b=0,c=0,d=0;c=Ui-16|0;Ui=c;b=-13;if(!dk(J[a+12>>2],J[a+16>>2],260024,c+12|0,0)){d=J[a+4>>2];b=ij(nj(96),0,96);J[b+80>>2]=0;J[b+84>>2]=0;J[b+72>>2]=0;J[b+76>>2]=0;J[b+60>>2]=-1;J[b>>2]=d;VC(b+40|0,64,256);if(H[b+24|0]&1){Z(151729,53895,501,2284);B()}lj(16,4,b+12|0,b+20|0,b+16|0);J[b+36>>2]=0;J[b+28>>2]=0;J[b+32>>2]=0;J[b+88>>2]=0;J[b+92>>2]=0;J[b+4>>2]=0;J[b+8>>2]=0;J[d+76>>2]=b;SM(b,J[c+12>>2]);Uj(J[c+12>>2]);J[J[a+28>>2]+8>>2]=b;b=0}Ui=c+16|0;return b|0}function $qa(a,b,c){a=a|0;b=b|0;c=c|0;var d=0,e=0,f=0;J[83478]=J[83478]+1;d=J[b+12>>2]>J[c+12>>2];e=J[(d?b:c)+12>>2];b=J[(d?c:b)+12>>2];c=e<<16|b;c=(c<<15^-1)+c|0;c=P(c>>10^c,9);c=c>>6^c;c=(c<<11^-1)+c|0;c=J[a+12>>2]-1&(c>>16^c);a:{b:{if((c|0)>=J[a+36>>2]){break b}c=J[J[a+44>>2]+(c<<2)>>2];if((c|0)==-1){break b}d=J[a+64>>2];f=J[a+16>>2];while(1){a=(c<<4)+f|0;if((b|0)==J[J[a>>2]+12>>2]&J[J[a+4>>2]+12>>2]==(e|0)){break a}c=J[d+(c<<2)>>2];if((c|0)!=-1){continue}break}}a=0}return a|0}function sp(a,b){var c=0,d=0,e=0,f=0,g=0,h=0,i=0,j=0;e=Ui-16|0;Ui=e;A(+b);d=v(1)|0;f=v(0)|0;j=d;c=d&1048575;d=d>>>20&2047;a:{if(d|0){if((d|0)!=2047|g){h=(c&15)<<28|f>>>4;i=c>>>4|0;g=d+15360|0;d=f<<28;c=0;break a}h=(c&15)<<28|f>>>4;i=c>>>4|0;g=32767;d=f<<28;c=0;break a}if(!(c|f)){d=0;c=0;break a}d=c;c=c?S(c):S(f)+32|0;Mm(e,f,d,0,0,c+49|0);g=15372-c|0;h=J[e+8>>2];i=J[e+12>>2]^65536;d=J[e+4>>2];c=J[e>>2]}J[a>>2]=c;J[a+4>>2]=d;J[a+8>>2]=h;J[a+12>>2]=i|(j&-2147483648|g<<16);Ui=e+16|0}function Gba(a,b,c){a=a|0;b=b|0;c=c|0;var d=0,e=0,f=0,g=0;a:{b:{if(b>>>0<2097152){d=0;c:{if(a+1>>>0<2){break c}f=a&65535;e=J[79491];if(f>>>0>=M[e+100>>2]){break b}g=J[J[e+92>>2]+(f<<2)>>2];d=0;if(!g){break c}d=L[J[e+96>>2]+(f<<1)>>1]==(a>>>16|0)?g:0}e=d;J[c>>2]=0;if(!(a|b)){return-2}a=J[79491];b=J[a+108>>2];d=J[a+112>>2]-b>>2;a=J[J[e+52>>2]>>2];if(d>>>0<=a>>>0){break a}J[c>>2]=b+(a<<2);return 0}Z(94863,55553,306,33926);B()}Z(2686,54166,244,5438);B()}Z(145396,53895,487,84789);B()}function $n(a){var b=0,c=0,d=0;if(!a){a=J[72170];if(a){b=$n(a)}a=J[72096];if(a){b=$n(a)|b}a=J[245822];if(a){while(1){if(J[a+20>>2]!=J[a+28>>2]){b=$n(a)|b}a=J[a+56>>2];if(a){continue}break}}return b}d=J[a+76>>2]<0;a:{b:{if(J[a+20>>2]==J[a+28>>2]){break b}Zi[J[a+36>>2]](a,0,0)|0;if(J[a+20>>2]){break b}b=-1;break a}b=J[a+8>>2];c=J[a+4>>2];if((b|0)!=(c|0)){b=c-b|0;Zi[J[a+40>>2]](a,b,b>>31,1)|0}b=0;J[a+28>>2]=0;J[a+16>>2]=0;J[a+20>>2]=0;J[a+4>>2]=0;J[a+8>>2]=0;if(d){break a}}return b}function _3(a){a=a|0;var b=0,c=0,d=0,e=0,f=0,g=0,h=0;b=Ui-48|0;Ui=b;c=a?J[a+124>>2]:0;f=pj(b+8|0,c,0,39205,88);e=b+28|0;d=a?J[a+124>>2]:0;g=pj(e,d,0,39205,76);xj(d,J[63192]);cK(a);h=Vj(d,-1);gj(d,-2);oj(g);if(h){J[b+28>>2]=a?J[a>>2]:0;a=a?J[a+4>>2]:0;J[b+36>>2]=c;J[b+32>>2]=a;c=Ui-16|0;Ui=c;a=J[215795];if(a){while(1){d=J[a+36>>2];a:{if(!d|!(K[a+52|0]&2)){break a}if(!(Zi[d|0](e)|0)){break a}J[c>>2]=a+4;dj(4,91468,28962,c)}a=J[a>>2];if(a){continue}break}}Ui=c+16|0}oj(f);Ui=b+48|0}function Ewa(a,b,c){a=a|0;b=b|0;c=c|0;var d=0,e=0,f=0,g=0;e=Ui-32|0;Ui=e;J[e+16>>2]=b;d=J[a+48>>2];J[e+20>>2]=c-((d|0)!=0);g=J[a+44>>2];J[e+28>>2]=d;J[e+24>>2]=g;a:{b:{d=pb(J[a+60>>2],e+16|0,2,e+12|0)|0;if(d){J[245744]=d;d=-1}else{d=0}if(d){b=32}else{d=J[e+12>>2];if((d|0)>0){break b}b=d?32:16}J[a>>2]=b|J[a>>2];break a}f=d;g=J[e+20>>2];if(g>>>0>=d>>>0){break a}f=J[a+44>>2];J[a+4>>2]=f;J[a+8>>2]=f+(d-g|0);if(J[a+48>>2]){J[a+4>>2]=f+1;H[(b+c|0)-1|0]=K[f|0]}f=c}Ui=e+32|0;return f|0}function Pw(a,b,c){var d=0,e=0,f=0;a:{switch(J[b>>2]-13|0){case 0:a=J[J[a>>2]+12>>2]+(J[b+8>>2]<<2)|0;J[a>>2]=J[a>>2]&-8372225|(c<<14)+16384&8372224;return;case 1:d=J[a>>2];e=J[d+12>>2];f=e+(J[b+8>>2]<<2)|0;J[f>>2]=(J[f>>2]&8388607|c<<23)+8388608;b=(J[b+8>>2]<<2)+e|0;J[b>>2]=J[a+36>>2]<<6&16320|J[b>>2]&-16321;c=J[a+36>>2];b=c+1|0;b:{if((c|0)>>0>=250){qk(J[a+12>>2],4813);d=J[a>>2];c=J[a+36>>2]+1|0}H[d+75|0]=b}J[a+36>>2]=c;break;default:break a}}}function H4(a,b,c,d,e,f,g){a=a|0;b=b|0;c=c|0;d=d|0;e=e|0;f=f|0;g=g|0;if(!(!e|d)){J[b+2200>>2]=J[b+2196>>2];return}J[b+2224>>2]=c;a:{b:{f=J[b+2204>>2];a=J[b+2200>>2];c=f-a|0;if(c>>>0>>0){if(H[b+2208|0]&1){break b}a=b+2196|0;g=(e+f-(c+J[a>>2])|0)- -1048576|0;f=a;a=b+2204|0;c=b+2200|0;lj(g,1,f,a,c);f=J[a>>2];a=J[c>>2];c=f-a|0}if(c>>>0>>0){break a}hj(a,d,e);J[b+2200>>2]=J[b+2200>>2]+e;J[b+2220>>2]=J[b+2220>>2]+e;return}Z(151729,53895,501,2284);B()}Z(11738,53895,564,4042);B()}function pca(a,b){a=a|0;b=b|0;var c=0,d=0,e=0,f=0;c=Ui+-64|0;Ui=c;jP(c,a,b&65535);a:{b:{if(!J[a+84>>2]){Zi[J[79456]](J[c>>2],J[c+4>>2],c+8|0);Gc();d=J[c>>2];b=J[c+4>>2];if((b|0)==2097152|b>>>0>2097152){break b}b=0;c:{if(d+1>>>0<2){break c}e=d&65535;if(e>>>0>=M[a+100>>2]){break a}f=J[J[a+92>>2]+(e<<2)>>2];if(!f){break c}b=L[J[a+96>>2]+(e<<1)>>1]==(d>>>16|0)?f:0}J[b+60>>2]=J[b+60>>2]&oxa(-2,K[c+54|0])}Ui=c- -64|0;return 0}Z(94863,55553,306,33926);B()}Z(2686,54166,244,5438);B()} +function Uga(a){a=a|0;var b=0,c=0,d=0,e=0,f=0;b=Ui-80|0;Ui=b;e=J[a+8>>2]-J[a+12>>2]|0;pk(a);J[b+72>>2]=0;J[b+76>>2]=0;c=b- -64|0;J[c>>2]=0;J[c+4>>2]=0;J[b+56>>2]=0;J[b+60>>2]=0;J[b+48>>2]=0;J[b+52>>2]=0;J[b+40>>2]=0;J[b+44>>2]=0;J[b+32>>2]=0;J[b+36>>2]=0;J[b+24>>2]=0;J[b+28>>2]=0;J[b+16>>2]=0;J[b+20>>2]=0;c=b+48|0;d=b+16|0;Sk(a,1,c,d);f=c;c=J[59851];Jk(d,f,J[c+8>>2],J[c+12>>2],0,0,c,b+15|0,1,0);if(e>>4!=J[a+8>>2]-J[a+12>>2]>>4){Z(143244,40569,367,49971);B()}Ui=b+80|0;return 0}function aE(a,b,c){var d=0,e=0,f=0;e=Ui-16|0;Ui=e;a:{b:{c:{d:{e:{f=kj(a,b);switch(f-1|0){case 2:break a;case 6:break d;case 0:break e;default:break c}}d=6;break a}if(Lp(a,b)){d=1;break a}if(Fu(a,b)){d=2;break a}d=Gm(a,b);J[c>>2]=d;if(d){d=3;break a}d=un(a,b);J[c>>2]=d;if(d){d=4;break a}d=Au(a,b);J[c>>2]=d;if(d){d=5;break a}a=zB(a,b);J[c>>2]=a;if(a){d=7;break a}dj(4,88293,129306,0);break b}J[e>>2]=(f|0)==-1?60960:J[(f<<2)+257632>>2];dj(4,88293,134583,e)}d=8}Ui=e+16|0;return d}function Zn(a,b){var c=0,d=0,e=0;ln(a,b);a:{b:{if(J[b>>2]!=12){break b}d=b+8|0;if(J[b+16>>2]==J[b+20>>2]){break a}c=J[b+8>>2];if((c|0)>2]}ln(a,b);c:{if(J[b>>2]!=12){break c}c=J[b+8>>2];if(c&256|(c|0)>2]=J[a+36>>2]-1}c=J[a+36>>2];d=c+1|0;e=J[a>>2];d:{if((c|0)>>0>=250){qk(J[a+12>>2],4813);e=J[a>>2];c=J[a+36>>2]+1|0}H[e+75|0]=d}J[a+36>>2]=c;ys(a,b,c-1|0);d=b+8|0}return J[d>>2]}function ql(a,b){var c=0,d=0,e=0,f=0;d=Ui-16|0;Ui=d;a:{if((b|0)>0){c=b+1|0;f=J[a+4>>2];b:{if((c|0)<(f|0)){break b}e=J[a+12>>2];if((e|0)<0){c=f;if((c|0)>(b|0)){break b}while(1){c=0-P(c,e)|0;if((c|0)<=(b|0)){continue}break}break b}c=f;if(!e){break b}b=(c+e|0)-1|0;c=b-((b|0)%(e|0)|0)|0}if(J[a+24>>2]>=2){J[d+8>>2]=c;J[d+4>>2]=f;J[d>>2]=a;mB(J[53386],155189,d)}J[a+4>>2]=c;b=ml(J[a>>2],c);J[a>>2]=b;if(!b){break a}J[a+20>>2]=J[a+20>>2]+1;Ui=d+16|0;return}Av(73040);B()}Av(3003);B()}function i9(a){a=a|0;var b=0,c=0,d=0,e=0,f=0;d=Ui-16|0;Ui=d;Qj(a,1,d+12|0);Bj(a);b=qj(a,-1,J[219396],139183);gj(a,-2);a:{b:{c:{e=J[d+12>>2];c=e&65535;f=J[b+36>>2];b=J[b+32>>2];if(c>>>0<(f-b|0)/672>>>0){b=b+P(c,672)|0;if(L[b+648>>1]!=(e>>>16|0)){break c}if(L[b+650>>1]!=(c|0)){break b}b=J[b+476>>2]>>>8&3;break a}Z(145396,53895,487,84789);B()}Z(47372,40876,188,69601);B()}Z(5388,40876,189,69601);B()}c=J[a+8>>2];J[c+8>>2]=3;O[c>>3]=b>>>0;J[a+8>>2]=J[a+8>>2]+16;Ui=d+16|0;return 1}function Xga(a,b,c){a=a|0;b=b|0;c=c|0;var d=0;b=Ui-48|0;Ui=b;a:{if(!c){d=J[78404];Tj(d);c=a&65535;if(c>>>0>=M[78402]){break a}a=L[J[78401]+(c<<1)>>1]==(a>>>16|0)?J[J[78400]+(c<<2)>>2]:0;J[a+40>>2]=2;c=bj(83428);J[b+32>>2]=0;J[b+36>>2]=0;H[b+28|0]=1;J[b+24>>2]=0;J[b+16>>2]=c;J[b+20>>2]=Yi;Nq(J[a+16>>2]-J[a+12>>2]|0,b+16|0,1,a+8|0);J[b+12>>2]=0;J[b+8>>2]=0;on(J[a+8>>2],b+12|0,b+8|0);c=J[a+12>>2];hj(J[b+12>>2],c,J[a+16>>2]-c|0);Lj(d)}Ui=b+48|0;return}Z(2686,54166,244,5438);B()}function aH(a,b){a=a|0;b=b|0;var c=0,d=0;b=Ui-32|0;Ui=b;J[b+24>>2]=0;J[b+16>>2]=0;J[b+20>>2]=0;J[b+8>>2]=0;J[b+12>>2]=0;if((kj(a,3)|0)!=5){Yk(a,3,J[64413])}mj(a,36090,9);Ck(a,3);if(!Mk(a,-1)){Dk(a,3,73923)}if(!VI(10,Ij(a,-1,0),b+8|0)){Dk(a,3,18760)}mj(a,70656,9);Ck(a,3);a:{if(!kj(a,-1)){break a}if(kk(a,-1)){c=ok(a,-1);if(c<4294967296&c>=0){J[b+24>>2]=~~c>>>0;break a}J[b+24>>2]=0;break a}Dk(a,-1,73985)}d=J[a+8>>2];J[d+8>>2]=0;J[a+8>>2]=d+16;mj(a,74795,17);Ui=b+32|0;return 2}function WK(a,b,c,d,e,f,g,h,i,j){var k=0,l=0,m=0;k=J[a>>2];a:{if(!(c|d)|(J[a+4>>2]-k|0)/48>>>0<=e>>>0){break a}a=J[b+4>>2];if(!a){break a}a=J[J[b>>2]+(mxa(c,d,a)<<2)>>2];if((a|0)==-1){break a}l=J[b+8>>2];while(1){b=l+P(a,24)|0;if(J[b>>2]!=(c|0)|J[b+4>>2]!=(d|0)){a=J[b+16>>2];if((a|0)!=-1){continue}break a}break}a=P(e,48)+k|0;J[a>>2]=c;J[a+4>>2]=d;c=J[b+8>>2];b=J[b+12>>2];J[a+24>>2]=g;J[a+20>>2]=f;J[a+32>>2]=c;J[a+36>>2]=b;N[a+40>>2]=j;J[a+16>>2]=i;J[a+12>>2]=h;m=1}return m}function St(a,b,c){var d=0,e=0;d=(c|0)!=0;a:{b:{c:{if(!(a&3)|!c){break c}e=b&255;while(1){if((e|0)==K[a|0]){break b}c=c-1|0;d=(c|0)!=0;a=a+1|0;if(!(a&3)){break c}if(c){continue}break}}if(!d){break a}d=b&255;if(!((d|0)==K[a|0]|c>>>0<4)){d=P(d,16843009);while(1){e=d^J[a>>2];if(((16843008-e|e)&-2139062144)!=-2139062144){break b}a=a+4|0;c=c-4|0;if(c>>>0>3){continue}break}}if(!c){break a}}b=b&255;while(1){if((b|0)==K[a|0]){return a}a=a+1|0;c=c-1|0;if(c){continue}break}}return 0}function F$(a){a=a|0;var b=0,c=0,d=0,e=0;d=Ui-16|0;Ui=d;c=1;a:{if((kj(a,1)|0)<=0){Nj(a,-10001,1);if(J[jn(a,135350)>>2]){break a}fj(a,66693,0);break a}c=Aj(a,1,0);b=Sj(a,4);J[b>>2]=0;rj(a,-1e4,135350);Mj(a,-2);e=b;b=ol(c,36296);J[e>>2]=b;if(!b){b=J[245744];J[d+4>>2]=L[((b>>>0<=153?b:0)<<1)+215472>>1]+213556;J[d>>2]=c;ik(a,28428,d);Dk(a,1,Ij(a,-1,0))}b=1;c=J[a+8>>2]-J[a+12>>2]>>4}uj(a,c);c=J[a+8>>2];J[c+8>>2]=1;J[c>>2]=b;J[a+8>>2]=J[a+8>>2]+16;Nk(a,2022,2);Ui=d+16|0;return 1}function mla(a){a=a|0;var b=0,c=0,d=0,e=0,f=0,g=0;d=Ui-32|0;Ui=d;f=pj(d+12|0,a,0,36705,139);Mn(a,80464,d+8|0,d+4|0,0);e=J[d+8>>2];b=J[d+4>>2];a=J[b+4>>2];if(a){c=a}else{c=J[b>>2]}a:{if(H[c+28|0]&1){if(H[b+24|0]&1){dj(4,88458,123175,0);a=0;break a}a=a?a:J[b>>2];c=J[a+12>>2];if((c|0)!=J[a+16>>2]){e=J[e+32>>2];b=0;while(1){vj(e,J[(b<<2)+c>>2]);b=b+1|0;c=J[a+12>>2];if(b>>>0>2]-c>>2>>>0){continue}break}}J[a+16>>2]=c}a=1}if(!a){g=Jj(f,24250,0)}oj(f);Ui=d+32|0;return g|0}function _oa(a){a=a|0;var b=0,c=0,d=0;a:{b:{c:{switch(a|0){case 1:H[295460]=1;break b;case 0:H[295460]=0;break b;case 3:break c;default:break b}}if(K[295461]!=1){break a}H[295461]=0}b=Ui-16|0;Ui=b;d:{c=P(a,12)+218064|0;if(J[c+4>>2]==-2){break d}a=J[c>>2];d=J[a+8>>2]-J[a+12>>2]>>4;Nj(a,-1e4,J[c+4>>2]);Nj(a,-1e4,J[c+8>>2]);Ok(a);if(kq(a,0,0,0)){J[b>>2]=Ij(a,-1,0);dj(4,88875,28498,b);gj(a,-2)}if(J[a+8>>2]-J[a+12>>2]>>4==(d|0)){break d}Z(143244,39178,629,13377);B()}Ui=b+16|0}}function Nva(a){a=a|0;var b=0,c=Q(0),d=0,e=0;b=Ui-128|0;Ui=b;d=J[J[a+52>>2]+8>>2];e=J[J[a+48>>2]+8>>2];zj(156291,0);J[b+112>>2]=e;zj(156602,b+112|0);J[b+96>>2]=d;zj(156576,b+96|0);J[b+80>>2]=K[a+61|0];zj(157687,b+80|0);c=N[a+68>>2];O[b+72>>3]=N[a+72>>2];O[b+64>>3]=c;zj(157002,b- -64|0);c=N[a+76>>2];O[b+56>>3]=N[a+80>>2];O[b+48>>3]=c;zj(156877,b+48|0);O[b+32>>3]=N[a+96>>2];zj(155984,b+32|0);O[b+16>>3]=N[a+100>>2];zj(155784,b+16|0);J[b>>2]=J[a+56>>2];zj(157263,b);Ui=b+128|0}function sU(a,b,c,d){var e=0,f=0;e=Ui-592|0;Ui=e;bH(a,e+20|0);J[J[e+20>>2]+60>>2]=d;if(J[a+16>>2]!=40){f=J[a+52>>2];J[e+16>>2]=Cl(a,40);qk(a,gk(f,74053,e+16|0))}tk(a);if(c){sn(a,Ep(a,57607,4),0);c=J[a+48>>2];f=K[c+50|0]+1|0;H[c+50|0]=f;J[(J[J[c>>2]+24>>2]+P(L[(c+((f&255)<<1)|0)+170>>1],12)|0)+4>>2]=J[c+24>>2]}ZG(a);if(J[a+16>>2]!=41){c=J[a+52>>2];J[e>>2]=Cl(a,41);qk(a,gk(c,74053,e))}tk(a);Pq(a);J[J[e+20>>2]+64>>2]=J[a+4>>2];pp(a,262,265,d);AE(a);SG(a,e+20|0,b);Ui=e+592|0}function PW(a,b,c,d,e){a=a|0;b=b|0;c=c|0;d=d|0;e=e|0;var f=0,g=0,h=0,i=0,j=0,k=0,l=0,m=0;if(!((d|0)<=0|(e|0)<=0)){l=e&2147483640;j=e&7;m=e>>>0<8;while(1){k=P(e,h)+a|0;c=K[b+h|0];g=0;i=0;if(!m){while(1){f=g+k|0;H[f|0]=c;H[f+1|0]=c;H[f+2|0]=c;H[f+3|0]=c;H[f+4|0]=c;H[f+5|0]=c;H[f+6|0]=c;H[f+7|0]=c;g=g+8|0;i=i+8|0;if((l|0)!=(i|0)){continue}break}}f=0;if(j){while(1){H[g+k|0]=c;g=g+1|0;f=f+1|0;if((j|0)!=(f|0)){continue}break}}h=h+1|0;if((h|0)!=(d|0)){continue}break}}return a|0}function $r(a,b,c){var d=0,e=0,f=0,g=0,h=0;a:{if(!c){break a}g=J[a+4>>2];e=g;d=J[a>>2];h=d+c|0;e=h>>>0>>0?e+1|0:e;J[a>>2]=h;J[a+4>>2]=e;f=d&127;if((e|0)==(g|0)&d>>>0>h>>>0|e>>>0>>0){d=J[a+12>>2];e=J[a+8>>2]+1|0;d=e?d:d+1|0;J[a+8>>2]=e;J[a+12>>2]=d}b:{if(f){d=128-f|0;if(d>>>0>c>>>0){break b}e=a+80|0;hj(e+f|0,b,d);fs(a,e);c=c-d|0;b=b+d|0}if(c>>>0>=128){while(1){fs(a,b);b=b+128|0;c=c-128|0;if(c>>>0>127){continue}break}}f=0;if(!c){break a}}hj((a+f|0)+80|0,b,c)}return 0}function tha(a,b){a=a|0;b=b|0;var c=0,d=0;a:{b:{c=J[b+60>>2];c:{if(!c){break c}c=J[J[b+56>>2]+((a>>>0)%(c>>>0)<<2)>>2];if((c|0)==-1){break c}d=J[b+64>>2];while(1){c=d+P(c,12)|0;if(J[c>>2]==(a|0)){break b}c=J[c+8>>2];if((c|0)!=-1){continue}break}}d=0;c=J[b+28>>2];if(!c){break a}c=J[J[b+24>>2]+((a>>>0)%(c>>>0)<<2)>>2];if((c|0)==-1){break a}b=J[b+32>>2];while(1){c=b+P(c,12)|0;if(J[c>>2]==(a|0)){break b}c=J[c+8>>2];if((c|0)!=-1){continue}break}break a}d=J[c+4>>2]}return d|0}function eq(a,b,c,d,e){var f=0;f=Ui-16|0;Ui=f;J[a>>2]=0;J[a+4>>2]=0;J[a+48>>2]=0;J[a+52>>2]=0;J[a+40>>2]=0;J[a+44>>2]=0;J[a+32>>2]=0;J[a+36>>2]=0;J[a+24>>2]=0;J[a+28>>2]=0;J[a+16>>2]=0;J[a+20>>2]=0;J[a+8>>2]=0;J[a+12>>2]=0;ek(a+4|0,b,16);J[a+40>>2]=0;J[a+36>>2]=e;J[a+32>>2]=d;J[a+28>>2]=c;J[a+24>>2]=0;J[a+20>>2]=0;c=863180;J[a>>2]=J[215795];a:{b:{while(1){c=J[c>>2];if(!c){break b}if(jj(b,c+4|0)){continue}break}J[f>>2]=b;dj(4,91468,153946,f);break a}J[215795]=a}Ui=f+16|0}function Lea(a){a=a|0;var b=0,c=0,d=0,e=0,f=0,g=0;b=Ui-112|0;Ui=b;c=-2;a:{if(dk(J[a+20>>2],J[a+24>>2],J[62830],b+108|0,0)){break a}c=J[b+108>>2];if(!K[J[c>>2]]){Uj(c);c=-13;break a}J[b>>2]=0;J[b+4>>2]=0;c=WQ(J[a>>2],c,b);if(!c){g=J[a+4>>2];d=J[a>>2];e=J[J[a+36>>2]+8>>2];$s(d,e+4|0);f=J[e>>2];Np(d,592,f);vj(d,J[f+12>>2]);vj(d,J[f+8>>2]);Kx(g,f);d=CQ(J[a>>2],g,b,J[b+108>>2]);if(!d){c=-2;break a}J[e>>2]=d;LP(J[a+16>>2],e,b,J[b+108>>2])}Uj(J[b+108>>2])}Ui=b+112|0;return c|0}function xF(a,b){if(!a){return 0}a:{b:{if(a){if(b>>>0<=127){break b}c:{if(!J[J[245847]>>2]){if((b&-128)==57216){break b}break c}if(b>>>0<=2047){H[a+1|0]=b&63|128;H[a|0]=b>>>6|192;a=2;break a}if(!((b&-8192)!=57344&b>>>0>=55296)){H[a+2|0]=b&63|128;H[a|0]=b>>>12|224;H[a+1|0]=b>>>6&63|128;a=3;break a}if(b-65536>>>0<=1048575){H[a+3|0]=b&63|128;H[a|0]=b>>>18|240;H[a+2|0]=b>>>6&63|128;H[a+1|0]=b>>>12&63|128;a=4;break a}}J[245744]=25;a=-1}else{a=1}break a}H[a|0]=b;a=1}return a}function w5(a){a=a|0;var b=0,c=0,d=0,e=0,f=0;d=Ui-32|0;Ui=d;e=pj(d+12|0,a,0,37616,2908);b=J[a+8>>2]-J[a+12>>2]|0;Bj(a);c=qj(a,-1,J[84364],139081);gj(a,-2);if(b>>4==J[a+8>>2]-J[a+12>>2]>>4){b=J[J[c+304>>2]+2108>>2];f=kj(a,1);a:{if(f+1>>>0<=1){a=0;if(!b){break a}Fl(b);J[J[c+304>>2]+2108>>2]=0;a=0;break a}if((f|0)==6){if(b){Fl(b);J[J[c+304>>2]+2108>>2]=0}a=$m(a,1);J[J[c+304>>2]+2108>>2]=a;a=0;break a}a=Jj(e,45338,0)}oj(e);Ui=d+32|0;return a|0}Z(143244,37616,478,51340);B()}function SA(a,b,c){var d=0;a:{b:{c:{switch(J[b>>2]-6|0){case 0:d:{if(J[c>>2]!=12){break d}d=J[c+8>>2];if(d&256|K[a+50|0]>(d|0)){break d}J[a+36>>2]=J[a+36>>2]-1}ys(a,c,J[b+8>>2]);return;case 1:b=Zn(a,c)<<6|J[b+8>>2]<<23|8;break b;case 2:b=Zn(a,c)<<6|J[b+8>>2]<<14|7;break b;case 3:break c;default:break a}}b=hm(a,c)<<14|J[b+8>>2]<<6|J[b+12>>2]<<23|9}El(a,b,J[J[a+12>>2]+8>>2])}e:{if(J[c>>2]!=12){break e}b=J[c+8>>2];if(b&256|(b|0)>2]=J[a+36>>2]-1}}function NE(a){a=a|0;var b=0,c=0,d=0,e=0;J[a>>2]=244624;b=J[a+8>>2];if((b|0)>0){while(1){e=J[J[a+16>>2]+(c<<2)>>2];d=J[e+188>>2];if(d){b=J[a+76>>2];b=Zi[J[J[b>>2]+36>>2]](b)|0;Zi[J[J[b>>2]+40>>2]](b,d,J[a+24>>2]);b=J[a+76>>2];Zi[J[J[b>>2]+12>>2]](b,d,J[a+24>>2]);J[e+188>>2]=0;b=J[a+8>>2]}c=c+1|0;if((c|0)<(b|0)){continue}break}}b=J[a+16>>2];if(!(b?!b|K[a+20|0]!=1:1)){J[83765]=J[83765]+1;Zi[J[61751]](J[b-4>>2])}J[a+16>>2]=0;H[a+20|0]=1;J[a+8>>2]=0;J[a+12>>2]=0;return a|0}function LW(a){a=a|0;var b=0,c=0,d=0,e=0,f=0,g=0,h=0;e=Ui-16|0;Ui=e;f=Aj(a,1,e+12|0);b=Zm(a,2,1);b=b+(J[e+12>>2]+1&b>>31)|0;c=Zm(a,3,(b|0)>0?b:0);d=J[e+12>>2];c=c+(d+1&c>>31)|0;c=(c|0)>0?c:0;c=c>>>0>>0?c:d;b=(b|0)<=1?1:b;if(c>>>0>=b>>>0){d=c-b|0;g=d+1|0;if((c|0)==2147483647){fj(a,56061,0)}Gp(a,g,56061);c=d+1|0;d=(b+f|0)-1|0;b=0;while(1){f=K[b+d|0];h=J[a+8>>2];J[h+8>>2]=3;O[h>>3]=f|0;J[a+8>>2]=J[a+8>>2]+16;b=b+1|0;if((c|0)!=(b|0)){continue}break}}Ui=e+16|0;return g|0}function GM(a,b){var c=0,d=0,e=0,f=0,g=0;if(a){e=a;while(1){a:{b:{c=K[e|0];if((c|0)!=35){if((c|0)!=58){if(!c){break b}c=d;break a}d=d|f;c=0;f=e;if(!d){break a}return-5}c=e;if(!d){break a}return-5}c:{if(!f){c=0;break c}c=f-a|0;if(c>>>0>63){return-5}g=a;a=f+1|0}J[b+8>>2]=a;J[b+4>>2]=c;J[b>>2]=g;c=d+1|0;J[b+16>>2]=d?c:0;J[b+12>>2]=(d?d:e)-a;J[b+20>>2]=d?e-c|0:0;return 0}e=e+1|0;d=c;continue}}J[b>>2]=0;J[b+4>>2]=0;J[b+16>>2]=0;J[b+20>>2]=0;J[b+8>>2]=0;J[b+12>>2]=0;return 0}function zH(a,b){var c=0,d=0,e=0,f=0;f=-16;a:{if(b>>>0>1e4){break a}e=J[a+4>>2];b:{if(e>>>0>b>>>0){c=e;while(1){d=c;c=c-1|0;if(J[J[a+8>>2]+(c<<2)>>2]?0:c){continue}break}b=b>>>0>>0?d:b;c=Zj(b,4);if(!c){break a}d=J[a+8>>2];if(d){hj(c,d,b<<2);Zi[J[66509]](d,0,e<<2)|0;cj(J[a+8>>2])}J[a+8>>2]=c;J[a+4>>2]=b;break b}if(b>>>0<=e>>>0){break b}c=Zj(b,4);if(!c){break a}d=J[a+8>>2];if(d){e=e<<2;hj(c,d,e);Zi[J[66509]](d,0,e)|0;cj(J[a+8>>2])}J[a+8>>2]=c;J[a+4>>2]=b}f=0}return f}function pfa(a){a=a|0;var b=0,c=0;a=J[J[a+8>>2]+8>>2];c=J[J[a+24>>2]>>2];b=J[a>>2];if((b|0)!=-2){hk(c,-1e4,b)}b=J[a+4>>2];if((b|0)!=-2){hk(c,-1e4,b)}b=J[a+8>>2];if((b|0)!=-2){hk(c,-1e4,b)}b=J[a+12>>2];if((b|0)!=-2){hk(c,-1e4,b)}b=J[a+16>>2];if((b|0)!=-2){hk(c,-1e4,b)}b=J[a+20>>2];if((b|0)!=-2){hk(c,-1e4,b)}hk(c,-1e4,J[a+32>>2]);cj(J[a+28>>2]);J[a+32>>2]=-2;J[a+16>>2]=-2;J[a+20>>2]=-2;J[a+8>>2]=-2;J[a+12>>2]=-2;J[a>>2]=-2;J[a+4>>2]=-2;J[a+24>>2]=0;J[a+28>>2]=0;return 0}function cr(a,b){var c=0;a:{if((b|0)>0){b=(J[a+12>>2]+(b<<4)|0)-16|0;c=b>>>0>=M[a+8>>2]?173288:b;break a}c=J[a+8>>2]+(b<<4)|0;if((b|0)>=-9999){break a}b:{switch(b+10002|0){case 2:c=J[a+16>>2]+96|0;break a;case 1:b=J[J[J[J[a+20>>2]+4>>2]>>2]+12>>2];J[a+96>>2]=5;J[a+88>>2]=b;c=a+88|0;break a;case 0:c=a+72|0;break a;default:break b}}a=J[J[J[a+20>>2]+4>>2]>>2];c=K[a+7|0]<-10002-b>>>0?173288:(a+(0-b<<4)|0)-160024|0}a=c;if(J[a+8>>2]==6){a=K[J[a>>2]+6|0]!=0}else{a=0}return a}function qka(a){a=a|0;var b=0,c=0,d=0,e=0;a:{b:{c:{b=J[a+80>>2];d=J[b+24>>2];c=J[b+28>>2];if((d|0)!=(c|0)){e=J[b+20>>2];if(!e){break c}if(c>>>0>=d>>>0){break b}J[b+28>>2]=c+1;c=J[(c<<2)+e>>2];d=J[b+8>>2];b=J[b+4>>2];if(c>>>0>=(d-b|0)/28>>>0){break a}d=J[a+76>>2];b=b+P(c,28)|0;J[b+4>>2]=0;J[b>>2]=d;J[J[a+88>>2]>>2]=b;return 0}io(2957,J[56058],(J[b+8>>2]-J[b+4>>2]|0)/28|0);return-1e3}Z(49493,54340,151,43112);B()}Z(2701,54340,152,43112);B()}Z(145396,53895,487,84789);B()}function Uda(a){a=a|0;var b=0,c=0,d=0,e=0;c=Ui-16|0;Ui=c;b=-13;a:{if(!dk(J[a+12>>2],J[a+16>>2],J[58870],c+12|0,0)){b=J[c+12>>2];d=J[b+72>>2];if(d){b=0;while(1){e=J[c+12>>2];if(M[e+72>>2]<=b>>>0){break a}Tk(J[a+24>>2],J[(J[e+68>>2]+(b<<3)|0)+4>>2]);b=b+1|0;if((d|0)!=(b|0)){continue}break}b=J[c+12>>2]}d=J[b>>2];if(K[d|0]){J[c>>2]=d;dj(2,88458,128762,c);b=J[c+12>>2]}Tk(J[a+24>>2],J[b+8>>2]);J[J[a+32>>2]>>2]=J[c+12>>2];b=0}Ui=c+16|0;return b|0}Z(12664,55390,78,84789);B()}function U9(a){a=a|0;var b=0,c=0,d=0,e=0,f=0;c=Ui-16|0;Ui=c;Bj(a);b=qj(a,-1,J[219396],139183);gj(a,-2);Qj(a,1,c+12|0);e=a;a:{b:{c:{d=J[c+12>>2];a=d&65535;f=J[b+36>>2];b=J[b+32>>2];if(a>>>0<(f-b|0)/672>>>0){b=b+P(a,672)|0;if(L[b+648>>1]!=(d>>>16|0)){break c}if(L[b+650>>1]!=(a|0)){break b}if(J[b+504>>2]==2){a=J[b+536>>2];b=J[b+540>>2]}else{a=0;b=0}break a}Z(145396,53895,487,84789);B()}Z(47372,40876,188,69601);B()}Z(5388,40876,189,69601);B()}Bk(e,a,b);Ui=c+16|0;return 1}function P8(a){a=a|0;var b=0,c=0,d=0,e=0,f=0,g=Q(0),h=0;c=Ui-32|0;Ui=c;e=pj(c+12|0,a,0,37682,4834);Qj(a,1,c+8|0);f=wj(a,2);Bj(a);b=qj(a,-1,J[219396],139183);gj(a,-2);g=Q(f);a:{b:{c:{d=J[c+8>>2];a=d&65535;h=J[b+36>>2];b=J[b+32>>2];if(a>>>0<(h-b|0)/672>>>0){b=b+P(a,672)|0;if(L[b+648>>1]!=(d>>>16|0)){break c}if((a|0)!=L[b+650>>1]){break b}N[b+60>>2]=g;break a}Z(145396,53895,487,84789);B()}Z(47372,40876,188,69601);B()}Z(5388,40876,189,69601);B()}oj(e);Ui=c+32|0;return 0}function Ota(a,b,c){a=a|0;b=Q(b);c=c|0;var d=Q(0),e=Q(0),f=Q(0),g=0,h=0,i=0;h=a+28|0;g=J[a+52>>2];d=N[h+((g+2|0)%3<<2)>>2];a=Ui-16|0;J[a+12>>2]=0;N[a+8>>2]=d;N[a+4>>2]=d;N[a>>2]=d;g=g<<2;i=g+a|0;N[i>>2]=N[g+h>>2]+N[i>>2];d=N[a+8>>2];b=Q(b*Q(.0833333283662796));e=Q(N[a>>2]+Q(.03999999910593033));e=Q(e+e);e=Q(e*e);f=Q(N[a+4>>2]+Q(.03999999910593033));f=Q(f+f);f=Q(f*f);N[c+8>>2]=b*Q(e+f);d=Q(d+Q(.03999999910593033));d=Q(d+d);d=Q(d*d);N[c+4>>2]=b*Q(e+d);N[c>>2]=b*Q(f+d)}function Kj(a,b){var c=0;a:{if((b|0)>0){b=(J[a+12>>2]+(b<<4)|0)-16|0;c=b>>>0>=M[a+8>>2]?173288:b;break a}c=J[a+8>>2]+(b<<4)|0;if((b|0)>=-9999){break a}b:{switch(b+10002|0){case 2:c=J[a+16>>2]+96|0;break a;case 1:b=J[J[J[J[a+20>>2]+4>>2]>>2]+12>>2];J[a+96>>2]=5;J[a+88>>2]=b;c=a+88|0;break a;case 0:c=a+72|0;break a;default:break b}}c=J[J[J[a+20>>2]+4>>2]>>2];c=K[c+7|0]<-10002-b>>>0?173288:(c+(0-b<<4)|0)-160024|0}b=J[a+8>>2];Lw(a,c,b-32|0,b-16|0);J[a+8>>2]=J[a+8>>2]-32}function Ps(a){var b=0,c=0,d=0,e=0,f=0;a:{if(a){e=L[a+20>>1];d=e+1|0;b=J[a>>2];f=J[a+4>>2]-b>>2;if(d>>>0>>0){b=d;b:{while(1){c=J[a>>2];if(J[a+4>>2]-c>>2>>>0>b>>>0){c=J[c+(b<<2)>>2];c:{d:{switch(J[a+16>>2]){case 0:Zi[J[79392]](c);break c;case 1:break d;default:break c}}Zi[J[79398]](c)}b=b+1|0;if((f|0)!=(b|0)){continue}break b}break}Z(145396,53895,487,84789);B()}b=J[a>>2]}if(J[a+8>>2]-b>>2>>>0<=e>>>0){break a}J[a+4>>2]=(d<<2)+b}return}Z(144782,53895,514,59583);B()}function n_(a,b){a=a|0;b=b|0;var c=0,d=0,e=0,f=0;c=Ui-48|0;Ui=c;TR();J[c+44>>2]=15;J[c+40>>2]=16;J[c+36>>2]=17;J[c+32>>2]=18;J[c+28>>2]=19;J[c+24>>2]=20;J[c+20>>2]=0;J[c+16>>2]=b;J[c+12>>2]=a;d=c+12|0;a=Ui-16|0;Ui=a;b=J[c+24>>2];if(b){Zi[b|0](J[c+20>>2])}e=J[c+16>>2];f=J[c+12>>2];b=0;while(1){a:{if(!b){b=Zi[J[c+32>>2]](f,e)|0;if(!b){break a}}J[a+12>>2]=b;J[a+8>>2]=d;Sa(21,a+8|0,0,1);continue}break}b=J[c+28>>2];if(b){Zi[b|0](J[c+20>>2])}Ui=a+16|0;Ui=c+48|0;return 1}function LM(a){a=a|0;var b=0,c=0,d=0,e=0,f=0,g=0,h=0;b=Ui-32|0;Ui=b;g=pj(b+12|0,a,0,41468,180);J[b+8>>2]=0;c=Aj(a,1,b+8|0);d=$m(a,2);e=J[b+8>>2];a=-12;a:{b:{if(K[981584]!=1){break b}a=-11;if(!c|!e){break b}f=J[245392];if(!f){dj(4,95071,74996,0);a=-11;break a}a=nj(24);J[a+20>>2]=0;h=J[245394];H[a+20|0]=1;J[a+16>>2]=d;J[a+12>>2]=2483;J[a+8>>2]=e;J[a+4>>2]=c;J[a>>2]=h;Qp(f,2473,2474,980536,a);a=0}}if(a){J[b>>2]=EC(a);dj(4,95071,30349,b);Fl(d)}oj(g);Ui=b+32|0;return 0}function $q(a,b,c){var d=0,e=0,f=0,g=0,h=0;e=Ui-16|0;Ui=e;d=-16512;f=a+8|0;a:{if(J[a+4>>2]!=(Um(f)|0)|M[a+4>>2]>1024){break a}if((Pj(f,0)|0)<=0){break a}if(!Wm(f,0)){break a}h=a+20|0;if((Pj(h,0)|0)<=0){break a}g=e+4|0;d=g;J[d+8>>2]=0;J[d>>2]=1;J[d+4>>2]=0;b:{d=Vm(d,b,J[a+4>>2]);c:{if(d){break c}d=-4;if((_j(g,f)|0)>=0){break c}b=J[a+4>>2];d=To(g,g,h,f,a+104|0);if(!d){break b}}d=d-17024|0;Dj(e+4|0);break a}a=e+4|0;b=no(a,c,b);d=b?b-17024|0:0;Dj(a)}Ui=e+16|0;return d}function wva(a,b,c,d,e){a=a|0;b=b|0;c=c|0;d=d|0;e=e|0;var f=0,g=0,h=0,i=0;f=Ui-560|0;Ui=f;a:{b:{if(!(H[a+60|0]&1)){break b}g=J[J[a+32>>2]+(e<<2)>>2];if((g|0)==-1){break b}J[f+428>>2]=0;J[f+16>>2]=2;J[f+20>>2]=1008981770;H[f+32|0]=0;J[f+36>>2]=0;J[f+40>>2]=0;J[f+12>>2]=247140;g=J[J[a+40>>2]+8>>2]+(g<<2)|0;if(L[g+2>>1]>=17){break a}h=f+432|0;Ko(a,e,h);i=f+12|0;qz(i,h,L[g+2>>1]);N[f+20>>2]=N[a+8>>2];h=PU(i,b,c,d,e)}Ui=f+560|0;return h|0}Z(105899,41688,195,49612);B()}function lpa(a){a=a|0;var b=0,c=0,d=0,e=0;d=Ui-16|0;Ui=d;c=a;if((kj(a,1)|0)==8){c=so(a,1)}e=K[c+56|0];b=J[c+68>>2];a:{if(!(!b|(b|0)==2098)){mj(a,50842,13);break a}dJ(a);b=J[a+8>>2];J[b+8>>2]=2;J[b>>2]=c;J[a+8>>2]=J[a+8>>2]+16;Ll(a,-2);Rl(a,-2)}b=0;if(e&1){H[d+11|0]=99;b=1}if(e&2){H[(d+11|0)+b|0]=114;b=b+1|0}if(e&4){H[(d+11|0)+b|0]=108;b=b+1|0}e=b;b=d+11|0;H[e+b|0]=0;xj(a,b);c=J[c+60>>2];b=J[a+8>>2];J[b+8>>2]=3;O[b>>3]=c|0;J[a+8>>2]=J[a+8>>2]+16;Ui=d+16|0;return 3}function Zka(a){a=a|0;var b=0,c=0,d=0,e=0;a:{b:{c:{b=J[a+80>>2];d=J[b+20>>2];c=J[b+24>>2];if((d|0)!=(c|0)){e=J[b+16>>2];if(!e){break c}if(c>>>0>=d>>>0){break b}J[b+24>>2]=c+1;c=J[(c<<2)+e>>2];d=J[b+4>>2];b=J[b>>2];if(c>>>0>=(d-b|0)/28>>>0){break a}d=J[a+76>>2];b=b+P(c,28)|0;J[b+4>>2]=0;J[b>>2]=d;J[J[a+88>>2]>>2]=b;return 0}io(2896,J[56051],(J[b+4>>2]-J[b>>2]|0)/28|0);return-1e3}Z(49493,54340,151,43112);B()}Z(2701,54340,152,43112);B()}Z(145396,53895,487,84789);B()}function Q1(a){a=a|0;var b=0,c=Q(0),d=0,e=Q(0),f=Q(0),g=Q(0),h=0,i=Q(0);d=Ui-48|0;Ui=d;b=qj(a,1,J[215721],0);c=N[b+8>>2];f=N[b>>2];g=N[b+4>>2];a:{if(!(f!=f|g!=g|c!=c)){e=N[b+12>>2];if(e==e){break a}}e=N[b+12>>2];O[d+24>>3]=c;O[d+16>>3]=g;O[d+32>>3]=e;O[d+8>>3]=f;J[d>>2]=1;fj(a,138642,d)}h=wj(a,2);c=N[b+12>>2];g=N[b>>2];f=N[b+4>>2];e=N[b+8>>2];b=Sj(a,16);i=c;c=Q(h);N[b+12>>2]=i/c;N[b+8>>2]=e/c;N[b+4>>2]=f/c;N[b>>2]=g/c;rj(a,-1e4,106998);Mj(a,-2);Ui=d+48|0;return 1}function Uaa(a,b,c,d,e){a=a|0;b=b|0;c=c|0;d=d|0;e=e|0;var f=0;a:{if(e&65535){e=J[a+88>>2];a=J[e+2092>>2];f=(J[e+2096>>2]-a|0)/56|0;e=d&65535;if(f>>>0<=e>>>0){break a}a=a+P(e,56)|0;e=J[a+16>>2];d=d>>>16|0;if(d>>>0>=J[a+20>>2]-e>>2>>>0){break a}hj(J[a+32>>2]+J[e+(d<<2)>>2]|0,b,c<<6);H[a+52|0]=K[a+52|0]|1;return}gc(d|0,c|0,0,b|0);b:{if(K[J[79491]+220|0]&2){a=_()|0;if(a){break b}}return}Cj(a,107148,3143);Z(114101,40535,3143,107148);B()}Z(145396,53895,487,84789);B()}function UK(a,b,c,d){var e=0,f=0,g=0,h=0,i=0;a:{b:{e=J[a+2208>>2];f=J[a+2212>>2]-e>>4;if(f>>>0<=b>>>0){if(H[a+2220|0]&1){break b}e=a+2208|0;f=a+2212|0;lj(b+1|0,16,e,a+2216|0,f);i=J[a+2212>>2];g=J[a+2216>>2];J[a+2212>>2]=g;h=J[a+2208>>2];a=i-h|0;if(a>>>0>=g-h>>>0){break a}ij(a+h|0,0,g-i|0);e=J[e>>2];f=J[f>>2]-e>>4}if(b>>>0>=f>>>0){break a}a=(b<<4)+e|0;J[a>>2]=0;J[a+4>>2]=0;J[a+8>>2]=c;J[a+12>>2]=d;return}Z(151729,53895,501,2284);B()}Z(145396,53895,487,84789);B()}function Mk(a,b){a:{if((b|0)>0){b=(J[a+12>>2]+(b<<4)|0)-16|0;if(b>>>0>2]){break a}return 0}if((b|0)>=-9999){b=J[a+8>>2]+(b<<4)|0;break a}b:{switch(b+10002|0){case 1:b=J[J[J[J[a+20>>2]+4>>2]>>2]+12>>2];J[a+96>>2]=5;J[a+88>>2]=b;b=a+88|0;break a;case 0:b=a+72|0;break a;default:a=J[J[J[a+20>>2]+4>>2]>>2];if(K[a+7|0]>=-10002-b>>>0){b=(a+(0-b<<4)|0)-160024|0;break a}return 0;case 2:break b}}b=J[a+16>>2]+96|0}if((b|0)==173288){return 0}return J[b+8>>2]-3>>>0<2}function $l(a,b){var c=0,d=0,e=0,f=0;e=Ui-32|0;Ui=e;pj(e+12|0,a,0,37704,825);f=J[84546];c=J[a+8>>2];J[c+8>>2]=3;O[c>>3]=f|0;J[a+8>>2]=J[a+8>>2]+16;Ck(a,-10002);a:{if((tI(a,-1,173014)|0)!=1){gj(a,-2);break a}c=Vj(a,-1);if(c){d=J[c+4>>2];J[b>>2]=J[c>>2];J[b+4>>2]=d;d=J[c+28>>2];J[b+24>>2]=J[c+24>>2];J[b+28>>2]=d;d=J[c+20>>2];J[b+16>>2]=J[c+16>>2];J[b+20>>2]=d;d=J[c+12>>2];J[b+8>>2]=J[c+8>>2];J[b+12>>2]=d;gj(a,-3);d=1;break a}LB(a,-1)}oj(e+12|0);Ui=e+32|0;return d}function wta(a,b){a=a|0;b=b|0;var c=0,d=0,e=0,f=0,g=0,h=0,i=0;J[83479]=J[83479]-1;Zi[J[J[a>>2]+20>>2]](a,b);c=J[b+1136>>2];e=c<<2;f=J[a+20>>2];d=e+f|0;h=J[d>>2];i=d;d=J[a+12>>2]-1|0;g=d<<2;J[i>>2]=J[f+g>>2];J[J[a+20>>2]+g>>2]=h;J[J[J[a+20>>2]+e>>2]+1136>>2]=c;J[a+12>>2]=d;a=J[a+196>>2];c=J[a+16>>2];if(!(c>>>0>b>>>0|c+P(J[a>>2],J[a+4>>2])>>>0<=b>>>0)){J[b>>2]=J[a+12>>2];J[a+12>>2]=b;J[a+8>>2]=J[a+8>>2]+1;return}if(b){J[83765]=J[83765]+1;Zi[J[61751]](J[b-4>>2])}}function mga(a){a=a|0;var b=0,c=0,d=0,e=0,f=0;d=Ui-32|0;Ui=d;e=pj(d+12|0,a,0,39481,1641);nr(a,J[78152]);b=Vj(a,-1);gj(a,-2);c=J[J[J[pk(a)+80>>2]+8>>2]>>2];b=J[b+8>>2];if(M[J[c+4>>2]>>2]>b>>>0){b=J[(c+(b<<2)|0)+12>>2]}else{b=0}a:{if(!b){a=Jj(e,120224,0);break a}c=J[b+128>>2];f=kj(a,1);if(f+1>>>0<=1){a=0;if(!c){break a}Fl(c);J[b+128>>2]=0;a=0;break a}if((f|0)==6){if(c){Fl(c);J[b+128>>2]=0}J[b+128>>2]=$m(a,1);a=0;break a}a=Jj(e,45270,0)}oj(e);Ui=d+32|0;return a|0}function Hla(a){a=a|0;var b=0,c=0,d=0,e=0,f=0;c=Ui-32|0;Ui=c;f=pj(c+12|0,a,0,36839,326);b=qj(a,1,J[79308],3640);d=J[b+8>>2];e=J[b+12>>2];a:{if(!(d|e)){break a}if(xk(J[b+4>>2],d,e)){break a}J[c>>2]=tj(J[b+8>>2],J[b+12>>2]);fj(a,102051,c)}b=J[b>>2];d=ck(a,2);a=L[b+4>>1];b:{if(d){if(a&2){break b}J[b+144>>2]=0;I[b+4>>1]=a|2;break b}J[b+144>>2]=0;J[b+64>>2]=0;J[b+68>>2]=0;I[b+4>>1]=a&65533;J[b+72>>2]=0;J[b+76>>2]=0;J[b+80>>2]=0;J[b+84>>2]=0}oj(f);Ui=c+32|0;return 0}function Eka(a){a=a|0;var b=0,c=0,d=0,e=0,f=0;a:{b:{c=J[a+8>>2];if(c){b=J[c+152>>2];if((b|0)==J[c+156>>2]){io(16313,J[56053],b-J[c+148>>2]>>2);return-1e3}a=J[J[a+16>>2]>>2];b=K[a+28|0];if(b&2){break b}d=b&4;e=J[a+8>>2];f=J[c+132>>2];c:{if(b&1){KL(f,e,(d|0)!=0);break c}LL(f,e,(d|0)!=0)}H[a+28|0]=K[a+28|0]|2;b=J[c+152>>2];if((b|0)==J[c+156>>2]){break a}J[c+152>>2]=b+4;J[b>>2]=a;a=0}else{a=-1e3}return a|0}Z(62091,38329,971,62119);B()}Z(112520,53895,557,53220);B()}function uma(a){a=a|0;var b=0,c=0,d=0,e=Q(0),f=Q(0),g=Q(0),h=0;b=Ui-16|0;Ui=b;c=dn(a,2);d=Gm(a,1);a:{b:{if(d){c:{e=N[d>>2];d:{if(e<=Q(0)){break d}f=N[d+4>>2];if(f<=Q(0)){break d}g=N[d+8>>2];if(!(g<=Q(0))){break c}}a=fj(a,43918,0);break a}N[b+8>>2]=g;N[b+4>>2]=f;N[b>>2]=e;a=J[b+4>>2];d=J[b>>2];N[c+40>>2]=N[b+8>>2];J[c+32>>2]=d;J[c+36>>2]=a;break b}h=wj(a,1);if(h<=0){a=fj(a,131313,0);break a}e=Q(h);N[c+40>>2]=e;N[c+36>>2]=e;N[c+32>>2]=e}a=0}Ui=b+16|0;return a|0}function Taa(a,b,c,d,e){a=a|0;b=b|0;c=c|0;d=d|0;e=e|0;var f=0;a:{if(e&65535){e=J[a+88>>2];a=J[e+2092>>2];f=(J[e+2096>>2]-a|0)/56|0;e=d&65535;if(f>>>0<=e>>>0){break a}a=a+P(e,56)|0;e=J[a+16>>2];d=d>>>16|0;if(d>>>0>=J[a+20>>2]-e>>2>>>0){break a}hj(J[a+32>>2]+J[e+(d<<2)>>2]|0,b,c<<4);H[a+52|0]=K[a+52|0]|1;return}ic(d|0,c|0,b|0);b:{if(K[J[79491]+220|0]&2){a=_()|0;if(a){break b}}return}Cj(a,107060,3122);Z(114101,40535,3122,107060);B()}Z(145396,53895,487,84789);B()}function so(a,b){var c=0;a:{if((b|0)>0){b=(J[a+12>>2]+(b<<4)|0)-16|0;c=b>>>0>=M[a+8>>2]?173288:b;break a}c=J[a+8>>2]+(b<<4)|0;if((b|0)>=-9999){break a}b:{switch(b+10002|0){case 2:c=J[a+16>>2]+96|0;break a;case 1:b=J[J[J[J[a+20>>2]+4>>2]>>2]+12>>2];J[a+96>>2]=5;J[a+88>>2]=b;c=a+88|0;break a;case 0:c=a+72|0;break a;default:break b}}a=J[J[J[a+20>>2]+4>>2]>>2];c=K[a+7|0]<-10002-b>>>0?173288:(a+(0-b<<4)|0)-160024|0}a=c;if(J[a+8>>2]==8){a=J[a>>2]}else{a=0}return a}function ko(a,b){var c=0,d=0,e=0,f=0,g=0,h=0;f=Ui-16|0;Ui=f;d=J[a>>2];e=-1;a:{if((d|0)==255){break a}if(d){g=J[b>>2];h=a+8|0;while(1){e=-2;if(J[P(c,112)+h>>2]==(g|0)){break a}c=c+1|0;if((d|0)!=(c|0)){continue}break}}if(!(J[b+44>>2]|!J[b+52>>2])){J[f>>2]=J[b+4>>2];dj(3,88293,120043,f);e=-7;break a}c=a+8|0;hj(c+P(d,112)|0,b,106);d=bj(J[b+4>>2]);b=J[a>>2];c=c+P(b,112)|0;J[c+8>>2]=d;J[c+12>>2]=Yi;I[((b<<1)+a|0)+28568>>1]=b;J[a>>2]=b+1;e=0}c=e;Ui=f+16|0;return c}function Pra(a,b,c){a=a|0;b=b|0;c=c|0;var d=0,e=0;e=a;a=(b|0)!=8;d=64;a:{if(!(a|(c|0)!=8)){break a}d=72;if(!((c|0)!=1|a)){break a}d=76;if(!((b|0)!=1|(c|0)!=8)){break a}d=68;if(!(b|c)){break a}d=84;if(!((c|0)!=28|(b|0)>19)){break a}d=80;if(!((b|0)!=28|(c|0)>=20)){break a}b:{if((b|0)<=19){d=40;if((c|0)<20){break a}if(c-21>>>0>=9){break b}d=44;break a}d=48;if(!((c|0)>19|b-21>>>0>=9)){break a}if((b|0)!=31){break b}d=52;break a}d=(c|0)==31?56:60}return J[e+d>>2]}function qx(a,b){var c=0,d=0,e=0,f=0,g=0,h=0,i=0;a:{if(a){f=J[a+56>>2];b:{if(!f){break b}g=J[a+52>>2];d=g;c=f;while(1){e=(c&-2)+d|0;h=L[e>>1]>>0;d=h?e+2|0:d;e=c;c=c>>>1|0;c=h?e+(c^-1)|0:c;if(c){continue}break}if(L[d>>1]!=(b|0)|(f<<1)+g>>>0<=d>>>0){break b}c=J[a+16>>2];if(J[a+20>>2]-c>>3>>>0<=b>>>0){break a}b=J[c+(b<<3)>>2];c=J[a+4>>2];a=J[a>>2];if(b>>>0>=c-a>>5>>>0){break a}i=a+(b<<5)|0}return i}Z(111373,39844,182,5494);B()}Z(145396,53895,487,84789);B()}function pra(a){a=a|0;var b=0;J[a>>2]=243928;b=J[a+84>>2];if(!(b?!b|K[a+88|0]!=1:1)){J[83765]=J[83765]+1;Zi[J[61751]](J[b-4>>2])}J[a+84>>2]=0;H[a+88|0]=1;J[a+76>>2]=0;J[a+80>>2]=0;b=J[a+64>>2];if(!(b?!b|K[a+68|0]!=1:1)){J[83765]=J[83765]+1;Zi[J[61751]](J[b-4>>2])}J[a+64>>2]=0;H[a+68|0]=1;J[a+56>>2]=0;J[a+60>>2]=0;b=J[a+44>>2];if(!(b?!b|K[a+48|0]!=1:1)){J[83765]=J[83765]+1;Zi[J[61751]](J[b-4>>2])}J[a+44>>2]=0;H[a+48|0]=1;J[a+36>>2]=0;J[a+40>>2]=0;return a|0}function Wn(a,b,c){var d=0,e=0,f=0,g=0;d=Ui-144|0;Ui=d;e=d- -64|0;Xn(e,J[a+64>>2]+16|0,80);f=J[a+52>>2];g=J[a+4>>2];J[d+56>>2]=b;J[d+52>>2]=g;J[d+48>>2]=e;f=gk(f,30545,d+48|0);if(c){e=J[a+52>>2];a:{if(c-284>>>0<=2){vl(a,0);b=J[J[a+60>>2]>>2];break a}if((c|0)<=256){if((c|0)==127|c>>>0<32){J[d+32>>2]=c;b=gk(e,139850,d+32|0);break a}J[d+16>>2]=c;b=gk(e,82666,d+16|0);break a}b=J[(c<<2)+256476>>2]}J[d+4>>2]=b;J[d>>2]=f;gk(e,147143,d)}al(J[a+52>>2],3);Ui=d+144|0}function v8(a){a=a|0;var b=0,c=0,d=0,e=0,f=0,g=0;e=Ui-16|0;Ui=e;d=J[a+8>>2]-J[a+12>>2]>>4;b=e+12|0;f=Qj(a,1,b);a:{if(K[f+479|0]&16){break a}if(kj(a,2)){b=Qj(a,2,b);g=L[b+650>>1]|L[b+648>>1]<<16}b:{if((d|0)<3){break b}if((kj(a,3)|0)!=1){break b}c=(ck(a,3)|0)!=0}Bj(a);b=qj(a,-1,J[219396],139183);gj(a,-2);d=43021;c:{d:{c=Zx(b,L[f+650>>1]|L[f+648>>1]<<16,g,c);switch(c+8|0){case 8:break a;case 0:break c;default:break d}}d=74523}c=fj(a,d,0)}Ui=e+16|0;return c|0}function l9(a){a=a|0;var b=0,c=0,d=0,e=0,f=0,g=0;c=Ui-16|0;Ui=c;f=J[a+8>>2]-J[a+12>>2]>>4;Bj(a);b=qj(a,-1,J[219396],139183);gj(a,-2);Qj(a,1,c+12|0);d=Tp(b,J[c+12>>2]);e=J[a+8>>2];J[e+8>>2]=3;O[e>>3]=d>>>0;J[a+8>>2]=J[a+8>>2]+16;a:{if((d|0)==6){g=+(hv(b,J[c+12>>2])>>>0);b=J[a+8>>2];J[b+8>>2]=3;O[b>>3]=g;J[a+8>>2]=J[a+8>>2]+16;break a}b=J[a+8>>2];J[b+8>>2]=0;J[a+8>>2]=b+16}if((f+2|0)!=J[a+8>>2]-J[a+12>>2]>>4){Z(143309,37682,591,64487);B()}Ui=c+16|0;return 2}function X_(a){a=a|0;var b=0,c=0,d=0;d=Ui-112|0;Ui=d;a:{b:{c=so(a,1);if(c){if((a|0)==(c|0)){break a}c:{b=K[c+6|0];switch(b|0){case 1:break a;case 0:break c;default:break b}}b=2;if((Zl(c,0,d+12|0)|0)>0){break a}b=J[c+8>>2]-J[c+12>>2]>>4?1:3;break a}Dk(a,1,73819);if(!a){break a}d:{b=K[6];switch(b|0){case 1:break a;case 0:break d;default:break b}}b=2;if((Zl(0,0,d+12|0)|0)>0){break a}b=J[2]-J[3]>>4?1:3;break a}b=3}xj(a,J[(b<<2)+258064>>2]);Ui=d+112|0;return 1}function GD(a,b){var c=0,d=0;c=J[b>>2];if(c){Uj(c)}c=J[b+8>>2];if(c){vj(a,c)}c=J[b+4>>2];if(c){vj(a,c)}c=J[b+12>>2];if(c){d=J[b+44>>2];vj(a,d?d:c)}c=J[b+16>>2];if(c){d=J[b+48>>2];vj(a,d?d:c)}c=J[b+20>>2];if(c){d=J[b+52>>2];vj(a,d?d:c)}c=J[b+24>>2];if(c){d=J[b+56>>2];vj(a,d?d:c)}c=J[b+28>>2];if(c){d=J[b+60>>2];vj(a,d?d:c)}c=J[b+32>>2];if(c){d=J[b+64>>2];vj(a,d?d:c)}c=J[b+36>>2];if(c){d=J[b+68>>2];vj(a,d?d:c)}c=J[b+40>>2];if(c){d=a;a=J[b+72>>2];vj(d,a?a:c)}}function D1(a){a=a|0;var b=0,c=0,d=0,e=0,f=0,g=0;a:{b:{if(!(J[a+8>>2]-J[a+12>>2]>>4)){b=nj(8);J[b>>2]=0;break b}Oj(a,1,5);d=fl(a,1);b=nj(8);if((d|0)>=0){J[b>>2]=d;if(!d){break b}e=sj(d<<2);J[b+4>>2]=e;while(1){c=J[a+8>>2];J[c+8>>2]=3;g=c;c=f+1|0;O[g>>3]=c>>>0;J[a+8>>2]=J[a+8>>2]+16;Ck(a,1);N[(f<<2)+e>>2]=ok(a,-1);gj(a,-2);f=c;if((c|0)!=(d|0)){continue}break}break a}Z(112606,54595,37,32212);B()}J[b+4>>2]=0}J[Sj(a,4)>>2]=b;rj(a,-1e4,32205);Mj(a,-2);return 1}function nca(a){a=a|0;var b=0,c=0,d=0,e=0;e=Ui-16|0;Ui=e;a:{if(a){if(Ts(J[a+48>>2],1)){J[e+12>>2]=0;c=J[a+36>>2];b=J[a+32>>2];if((c|0)!=(b|0)){c=c-b>>3;c=c>>>0<=1?1:c;while(1){b=J[a+32>>2];if(J[a+36>>2]-b>>3>>>0<=d>>>0){break a}b=b+(d<<3)|0;jy(a,J[b>>2],J[b+4>>2]);d=d+1|0;if((c|0)!=(d|0)){continue}break}}J[a+164>>2]=0;J[a+168>>2]=0;J[a+60>>2]=J[a+56>>2];cj(J[a+72>>2]);J[a+72>>2]=0}Ui=e+16|0;return}Z(9196,40535,1534,6621);B()}Z(145396,53895,487,84789);B()}function kT(a){a=a|0;var b=0;J[a>>2]=244388;b=J[a+64>>2];if(!(b?!b|K[a+68|0]!=1:1)){J[83765]=J[83765]+1;Zi[J[61751]](J[b-4>>2])}J[a+64>>2]=0;H[a+68|0]=1;J[a+56>>2]=0;J[a+60>>2]=0;b=J[a+44>>2];if(!(b?!b|K[a+48|0]!=1:1)){J[83765]=J[83765]+1;Zi[J[61751]](J[b-4>>2])}J[a+44>>2]=0;H[a+48|0]=1;J[a+36>>2]=0;J[a+40>>2]=0;b=J[a+16>>2];if(!(b?!b|K[a+20|0]!=1:1)){J[83765]=J[83765]+1;Zi[J[61751]](J[b-4>>2])}J[a+16>>2]=0;H[a+20|0]=1;J[a+8>>2]=0;J[a+12>>2]=0;return a|0}function _S(a){a=a|0;var b=0;J[a>>2]=245712;b=J[a+56>>2];if(!(b?!b|K[a+60|0]!=1:1)){J[83765]=J[83765]+1;Zi[J[61751]](J[b-4>>2])}J[a+56>>2]=0;H[a+60|0]=1;J[a+48>>2]=0;J[a+52>>2]=0;b=J[a+36>>2];if(!(b?!b|K[a+40|0]!=1:1)){J[83765]=J[83765]+1;Zi[J[61751]](J[b-4>>2])}J[a+36>>2]=0;H[a+40|0]=1;J[a+28>>2]=0;J[a+32>>2]=0;b=J[a+16>>2];if(!(b?!b|K[a+20|0]!=1:1)){J[83765]=J[83765]+1;Zi[J[61751]](J[b-4>>2])}J[a+16>>2]=0;H[a+20|0]=1;J[a+8>>2]=0;J[a+12>>2]=0;return a|0}function z2(a){a=a|0;var b=0,c=0,d=0;b=Ui+-64|0;Ui=b;d=pj(b+36|0,a,0,39097,1280);J[b+32>>2]=Ej(a,1);J[b+8>>2]=0;J[b+12>>2]=0;a:{b:{if(!eo(48819,b+56|0)){a=J[b+56>>2];c=J[b+60>>2];if(!(a|c)){break b}J[b+24>>2]=0;J[b+28>>2]=0;J[b+16>>2]=0;J[b+20>>2]=0;J[b>>2]=a;J[b+4>>2]=c;a=J[64358];if(Jk(0,b,J[a+8>>2],J[a+12>>2],0,0,a,b+32|0,4,0)){break a}oj(d);Ui=b- -64|0;return 0}Z(92881,39097,1153,92224);B()}Z(15431,39097,1154,92224);B()}Z(92881,39097,1289,50076);B()}function kj(a,b){a:{if((b|0)>0){b=(J[a+12>>2]+(b<<4)|0)-16|0;if(b>>>0>2]){break a}return-1}if((b|0)>=-9999){b=J[a+8>>2]+(b<<4)|0;break a}b:{switch(b+10002|0){case 1:b=J[J[J[J[a+20>>2]+4>>2]>>2]+12>>2];J[a+96>>2]=5;J[a+88>>2]=b;b=a+88|0;break a;case 0:b=a+72|0;break a;default:a=J[J[J[a+20>>2]+4>>2]>>2];if(K[a+7|0]>=-10002-b>>>0){b=(a+(0-b<<4)|0)-160024|0;break a}return-1;case 2:break b}}b=J[a+16>>2]+96|0}if((b|0)==173288){return-1}return J[b+8>>2]}function W7(a,b){a=a|0;b=b|0;var c=0,d=0,e=0,f=0,g=0;d=J[b>>2];c=J[d+12>>2];f=J[d+16>>2];e=f&65535;g=J[c+36>>2];c=J[c+32>>2];if(e>>>0<(g-c|0)/672>>>0){c=c+P(e,672)|0;c=L[c+648>>1]==(f>>>16|0)&L[c+650>>1]==(e|0)}else{c=0}a:{if(c){c=J[d+16>>2];d=J[d+12>>2];e=Sj(a,8);J[e>>2]=d;J[e+4>>2]=c;rj(a,-1e4,1423);Mj(a,-2);break a}d=J[a+8>>2];J[d+8>>2]=0;J[a+8>>2]=d+16}Bk(a,J[b+8>>2],J[b+12>>2]);b=J[b+16>>2];d=J[a+8>>2];J[d+8>>2]=3;O[d>>3]=b|0;J[a+8>>2]=J[a+8>>2]+16}function V2(a){a=a|0;var b=0,c=0,d=0;b=Ui+-64|0;Ui=b;d=pj(b+36|0,a,0,39097,1181);J[b+32>>2]=Ej(a,1);J[b+8>>2]=0;J[b+12>>2]=0;a:{b:{if(!eo(48819,b+56|0)){a=J[b+56>>2];c=J[b+60>>2];if(!(a|c)){break b}J[b+24>>2]=0;J[b+28>>2]=0;J[b+16>>2]=0;J[b+20>>2]=0;J[b>>2]=a;J[b+4>>2]=c;a=J[64258];if(Jk(0,b,J[a+8>>2],J[a+12>>2],0,0,a,b+32|0,4,0)){break a}oj(d);Ui=b- -64|0;return 0}Z(92881,39097,1153,92224);B()}Z(15431,39097,1154,92224);B()}Z(92881,39097,1190,14290);B()}function gJ(a){a=a|0;var b=0,c=0,d=Q(0),e=Q(0),f=Q(0),g=Q(0);c=Ui-16|0;Ui=c;J[c>>2]=0;J[c+4>>2]=0;N[c+8>>2]=aa(293196,158860,0)|0;N[c+12>>2]=aa(293228,158860,0)|0;d=N[c+12>>2];e=N[c+8>>2];f=N[c+4>>2];g=N[c>>2];b=J[a+8>>2];J[b+8>>2]=3;O[b>>3]=g;J[a+8>>2]=J[a+8>>2]+16;b=J[a+8>>2];J[b+8>>2]=3;O[b>>3]=f;J[a+8>>2]=J[a+8>>2]+16;b=J[a+8>>2];J[b+8>>2]=3;O[b>>3]=e;J[a+8>>2]=J[a+8>>2]+16;b=J[a+8>>2];J[b+8>>2]=3;O[b>>3]=d;J[a+8>>2]=J[a+8>>2]+16;Ui=c+16|0;return 4}function f2(a){a=a|0;var b=0,c=0,d=0;d=Ui-16|0;Ui=d;b=Vj(a,1);a:{b:{c:{c=Aj(a,2,0);if(!jj(15431,c)){c=J[b>>2];b=J[b+4>>2];if(!(c|b)){break c}Bk(a,c,b);a=1;break a}if(!jj(53134,c)){c=J[b+16>>2];b=J[b+20>>2];if(!(c|b)){break c}Bk(a,c,b);a=1;break a}if(jj(13900,c)){break b}c=J[b+24>>2];b=J[b+28>>2];if(!(c|b)){break c}Bk(a,c,b);a=1;break a}b=J[a+8>>2];J[b+8>>2]=0;J[a+8>>2]=b+16;a=1;break a}J[d+4>>2]=49412;J[d>>2]=55920;a=fj(a,115646,d)}Ui=d+16|0;return a|0}function OE(a,b){a=a|0;b=b|0;var c=0,d=0,e=0,f=0,g=0;d=J[b+188>>2];if(d){c=J[a+76>>2];c=Zi[J[J[c>>2]+36>>2]](c)|0;Zi[J[J[c>>2]+40>>2]](c,d,J[a+24>>2]);c=J[a+76>>2];Zi[J[J[c>>2]+12>>2]](c,d,J[a+24>>2]);J[b+188>>2]=0}c=J[a+8>>2];a:{if((c|0)<=0){break a}e=J[a+16>>2];d=0;while(1){f=(d<<2)+e|0;g=J[f>>2];if((g|0)!=(b|0)){d=d+1|0;if((c|0)!=(d|0)){continue}break a}break}if((d|0)>=(c|0)){break a}b=c-1|0;d=b<<2;J[f>>2]=J[d+e>>2];J[d+J[a+16>>2]>>2]=g;J[a+8>>2]=b}}function Iaa(a,b,c,d,e){a=a|0;b=b|0;c=c|0;d=d|0;e=e|0;var f=0;a:{if(a){qc(J[(b<<2)+161184>>2],J[(c<<2)+161152>>2],d|0,e|0);if(K[J[79491]+220|0]&2){f=_()|0;if(f){break a}}b=(b|0)==1;c=(L[a+146>>1]|L[a+148>>1]<<16)&(b?535035903:536870463)|c<<(b?18:6)&(b?1835008:448);d=L[a+150>>1]&-8192|(d&255)<<5;b=e&255;e=b>>>3|0;b=b<<29|c;I[a+146>>1]=b;I[a+148>>1]=b>>>16;I[a+150>>1]=d|e;return}Z(9196,40535,4783,61650);B()}Cj(f,61650,4785);Z(114101,40535,4785,61650);B()}function DI(a,b,c){var d=0,e=0,f=0,g=0,h=0,i=0;d=Ui-112|0;Ui=d;g=J[a+68>>2];if(!(!g|!K[a+57|0])){e=J[a+20>>2];i=J[e+8>>2];h=J[a+32>>2];f=J[a+8>>2];J[d+32>>2]=c;J[d+12>>2]=b;c=f-h|0;if((b|0)!=4){b=(e-J[a+40>>2]|0)/24|0}else{b=0}J[d+108>>2]=b;if((J[a+28>>2]-f|0)<=320){b=J[a+44>>2];_n(a,(b|0)<20?b+20|0:b<<1);e=J[a+20>>2];f=J[a+8>>2]}J[e+8>>2]=f+320;H[a+57|0]=0;Zi[g|0](a,d+12|0);H[a+57|0]=1;b=J[a+32>>2];J[J[a+20>>2]+8>>2]=b+(i-h|0);J[a+8>>2]=b+c}Ui=d+112|0}function A2(a){a=a|0;var b=0,c=0,d=0;b=Ui+-64|0;Ui=b;d=pj(b+36|0,a,0,39097,1313);J[b+32>>2]=Ej(a,1);J[b+8>>2]=0;J[b+12>>2]=0;a:{b:{if(!eo(48819,b+56|0)){a=J[b+56>>2];c=J[b+60>>2];if(!(a|c)){break b}J[b+24>>2]=0;J[b+28>>2]=0;J[b+16>>2]=0;J[b+20>>2]=0;J[b>>2]=a;J[b+4>>2]=c;a=J[64374];if(Jk(0,b,J[a+8>>2],J[a+12>>2],0,0,a,b+32|0,4,0)){break a}oj(d);Ui=b- -64|0;return 0}Z(92881,39097,1153,92224);B()}Z(15431,39097,1154,92224);B()}Z(92881,39097,1322,3858);B()}function Maa(a,b,c,d){a=a|0;b=b|0;c=c|0;d=d|0;var e=0;a:{if(b>>>0<2097152){e=a&65535;b=J[79491];if(e>>>0>=M[b+100>>2]){break a}a=L[J[b+96>>2]+(e<<1)>>1]==(a>>>16|0)?J[J[b+92>>2]+(e<<2)>>2]:0;I[a+426>>1]=d;I[a+424>>1]=c;I[a+234>>1]=d;I[a+232>>1]=c;I[a+170>>1]=d;I[a+168>>1]=c;I[a+106>>1]=d;I[a+104>>1]=c;I[a+42>>1]=d;I[a+40>>1]=c;I[a+362>>1]=d;I[a+360>>1]=c;I[a+298>>1]=d;I[a+296>>1]=c;uP(b,a);return}Z(94863,55553,306,33926);B()}Z(2686,54166,244,5438);B()}function Iea(a){a=a|0;var b=0,c=0,d=0,e=0;c=Ui-16|0;Ui=c;b=-2;a:{if(!dk(J[a+12>>2],J[a+16>>2],231728,c+12|0,0)){Tk(J[a+24>>2],J[J[c+12>>2]>>2]);Tk(J[a+24>>2],J[J[c+12>>2]+4>>2]);d=J[c+12>>2];e=J[d+12>>2];b:{if(!e){break b}b=0;while(1){if(b>>>0>=e>>>0){break a}Tk(J[a+24>>2],J[J[d+8>>2]+(b<<2)>>2]);d=J[c+12>>2];if(b>>>0>6){break b}b=b+1|0;e=J[d+12>>2];if(b>>>0>>0){continue}break}}J[J[a+32>>2]>>2]=d;b=0}Ui=c+16|0;return b|0}Z(12664,55298,44,84789);B()}function oI(a,b,c){var d=0,e=0;d=J[b+8>>2];a:{if((d|0)==J[c+8>>2]){b:{switch(d-3|0){case 0:return O[b>>3]>3];case 1:d=J[b>>2];b=d+16|0;a=J[c>>2];e=a+16|0;c=jj(b,e);c:{if(c){break c}d=J[d+12>>2];a=J[a+12>>2];while(1){c=yj(b);if((c|0)==(a|0)){c=0;break c}if((c|0)==(d|0)){c=-1;break c}c=c+1|0;a=a-c|0;d=d-c|0;b=b+c|0;e=c+e|0;c=jj(b,e);if(!c){continue}break}}return c>>>31|0;default:break b}}d=BE(a,b,c,13);if((d|0)!=-1){break a}}d=zI(a,b,c)}return d}function ny(a,b,c){var d=0,e=0;d=J[c+168>>2];a:{if((d|0)>=0){break a}e=J[c+136>>2];if(!e){break a}vj(b,e);d=J[c+168>>2]}b=d&2147483647;if(b){d=J[c+164>>2];if(b>>>0>d>>>0){while(1){b:{if(K[a+17|0]==1){e=J[J[c+144>>2]+(d<<2)>>2];if(e){Zi[J[J[e>>2]+4>>2]](e)}break b}e=J[J[c+148>>2]+(d<<2)>>2];if(e){Zi[J[J[e>>2]+4>>2]](e)}}d=d+1|0;if((b|0)!=(d|0)){continue}break}}cj(J[(K[a+17|0]?144:148)+c>>2]);cj(J[c+152>>2]);cj(J[c+156>>2])}a=J[c+140>>2];if(a){Uj(a)}}function ly(a,b,c,d,e){var f=0;f=K[e+32|0]?-9:0;if((a|0)==J[e>>2]&(b|0)==J[e+4>>2]){if(J[c>>2]!=3){return-4}N[d>>2]=N[c+8>>2];N[d+4>>2]=N[c+12>>2];N[d+8>>2]=N[c+16>>2];return f}if((a|0)==J[e+8>>2]&(b|0)==J[e+12>>2]){if(J[c>>2]){return-4}N[d>>2]=O[c+8>>3];return f}if((a|0)==J[e+16>>2]&(b|0)==J[e+20>>2]){if(J[c>>2]){return-4}N[d+4>>2]=O[c+8>>3];return f}if(J[e+24>>2]!=(a|0)|(b|0)!=J[e+28>>2]){return-1}if(J[c>>2]){return-4}N[d+8>>2]=O[c+8>>3];return f}function XR(a,b){var c=0,d=Q(0),e=0,f=Q(0),g=Q(0);c=J[a>>2];a:{b:{if((c|0)==41){a=J[a+4>>2];c=J[a+4>>2];c:{a=J[a>>2];switch(a|0){case 0:break a;case 1:break c;default:break b}}return N[c>>2]}c=P(c,260)+269792|0;a=64}e=a-1|0;d=Q(e|0);g=Q(Q(1)/d);b=bQ(1)?Q(1):b;f=Q(b*d);d:{if(Q(R(f))>2]*Q(Q(1)-b));a=a+1|0;d=Q(d+Q(N[(((a|0)<(e|0)?a:e)<<2)+c>>2]*b))}return d}function U4(a,b,c,d,e,f){a=a|0;b=b|0;c=c|0;d=d|0;e=e|0;f=f|0;var g=0,h=0,i=0;g=-2;h=J[a+8>>2];a:{if(!h|!J[a+36>>2]){break a}d=J[a+16>>2];if(!d){break a}d=J[J[a+12>>2]+(mxa(b,c,d)<<2)>>2];if((d|0)==-1){break a}i=J[a+20>>2];while(1){a=i+P(d,24)|0;if(J[a>>2]!=(b|0)|J[a+4>>2]!=(c|0)){d=J[a+16>>2];if((d|0)!=-1){continue}break a}break}g=-4;b=J[a+12>>2];a=J[b+4>>2];if((a<<24|(a&65280)<<8|(a>>>8&65280|a>>>24))>>>0>f>>>0){break a}g=CK(h,b,e)?-3:0}return g|0}function gaa(a){a=a|0;var b=0,c=0,d=0,e=0,f=0,g=0;b=Ui-16|0;Ui=b;g=J[a+8>>2]-J[a+12>>2]>>4;e=1;Qj(a,1,b+12|0);Bj(a);d=qj(a,-1,J[219396],139183);gj(a,-2);c=69007;a:{b:{switch(KO(d,J[b+12>>2],b+8|0)+4|0){case 4:$x(d,J[b+8>>2],J[b+12>>2]);c=J[b+8>>2];f=Sj(a,8);J[f+4>>2]=c;J[f>>2]=d;rj(a,-1e4,1423);Mj(a,-2);if((g+1|0)==J[a+8>>2]-J[a+12>>2]>>4){break a}Z(143334,37682,3698,64972);B();default:c=74523;break;case 0:break b}}e=fj(a,c,0)}Ui=b+16|0;return e|0}function CV(a,b,c,d,e){var f=0,g=0,h=0;h=-1;g=d&2147483647;f=(g|0)==2147418112;a:{if(f&!c?a|b:f&(c|0)!=0|g>>>0>2147418112){break a}f=e&2147483647;if(((f|0)==2147418112&0|f>>>0>2147418112)&(f|0)!=2147418112){break a}if(!(a|c|(f|g|b))){return 0}f=d&e;if((f|0)>0){f=1}else{f=(f|0)>=0}if(f){if(((c|0)!=0|(d|0)!=(e|0))&(d|0)<(e|0)){break a}return(a|c|(d^e|b))!=0}if(!c&(d|0)==(e|0)?a|b:(c|0)!=0&(d|0)>=(e|0)|(d|0)>(e|0)){break a}h=(a|c|(d^e|b))!=0}return h}function XQ(a,b,c){var d=0,e=0,f=0,g=0,h=0,i=0,j=0,k=0;d=wk(a,J[b>>2],c);if(d){b=J[c>>2];if(b){vj(a,b)}J[c>>2]=0;$s(a,c+4|0);return d}e=J[b+16>>2];if(!e){return 0}i=J[b+12>>2];g=c+4|0;j=c+40|0;d=0;a:{while(1){f=P(d,48)+i|0;k=J[f+44>>2];h=(d<<3)+j|0;J[h>>2]=J[f+40>>2];J[h+4>>2]=k;f=J[f+32>>2];if(K[f|0]){e=wk(a,f,(d<<2)+g|0);if(e){break a}e=J[b+16>>2]}d=d+1|0;if(e>>>0>d>>>0){continue}break}return 0}b=J[c>>2];if(b){vj(a,b)}J[c>>2]=0;$s(a,g);return e}function Ck(a,b){var c=0,d=0;d=a;a:{if((b|0)>0){b=(J[a+12>>2]+(b<<4)|0)-16|0;c=b>>>0>=M[a+8>>2]?173288:b;break a}c=J[a+8>>2]+(b<<4)|0;if((b|0)>=-9999){break a}b:{switch(b+10002|0){case 2:c=J[a+16>>2]+96|0;break a;case 1:b=J[J[J[J[a+20>>2]+4>>2]>>2]+12>>2];J[a+96>>2]=5;J[a+88>>2]=b;c=a+88|0;break a;case 0:c=a+72|0;break a;default:break b}}c=J[J[J[a+20>>2]+4>>2]>>2];c=K[c+7|0]<-10002-b>>>0?173288:(c+(0-b<<4)|0)-160024|0}a=J[a+8>>2]-16|0;gu(d,c,a,a)}function Zz(a,b){var c=0,d=0;d=-16512;c=a+8|0;a:{if(J[a+4>>2]!=(Um(c)|0)|M[a+4>>2]>1024){break a}if((Pj(c,0)|0)<=0){break a}if(!Wm(c,0)){break a}b:{if(b){b=a+44|0;if((Pj(b,0)|0)<=0){break a}if(!Wm(b,0)){break a}b=a+56|0;if((Pj(b,0)|0)<=0){break a}if(!Wm(b,0)){break a}if((Pj(a+20|0,0)|0)<=0){break a}if((Pj(a+68|0,0)|0)<=0){break a}if((Pj(a+80|0,0)|0)<=0){break a}if((Pj(a+92|0,0)|0)<=0){break a}break b}if((Pj(a+20|0,0)|0)<=0){break a}}d=0}return d}function NA(a,b){var c=0;a:{if((b|0)>0){b=(J[a+12>>2]+(b<<4)|0)-16|0;c=b>>>0>=M[a+8>>2]?173288:b;break a}c=J[a+8>>2]+(b<<4)|0;if((b|0)>=-9999){break a}b:{switch(b+10002|0){case 2:c=J[a+16>>2]+96|0;break a;case 1:b=J[J[J[J[a+20>>2]+4>>2]>>2]+12>>2];J[a+96>>2]=5;J[a+88>>2]=b;c=a+88|0;break a;case 0:c=a+72|0;break a;default:break b}}a=J[J[J[a+20>>2]+4>>2]>>2];c=K[a+7|0]<-10002-b>>>0?173288:(a+(0-b<<4)|0)-160024|0}a=J[c+8>>2];return(a|0)==7|(a|0)==2}function vl(a,b){var c=0,d=0,e=0,f=0,g=0;f=Ui-96|0;Ui=f;c=J[a+60>>2];g=J[c+4>>2];d=g+1|0;e=J[c+8>>2];a:{if(d>>>0<=e>>>0){a=J[c>>2];break a}if(e>>>0>=2147483646){e=f+16|0;Xn(e,J[a+64>>2]+16|0,80);d=J[a+52>>2];g=J[a+4>>2];J[f+8>>2]=56009;J[f+4>>2]=g;J[f>>2]=e;gk(d,30545,f);al(J[a+52>>2],3);e=J[c+8>>2]}a=J[a+52>>2];d=e<<1;b:{if((d|0)!=-2){a=lk(a,J[c>>2],e,d);break b}a=Dl(a)}J[c+8>>2]=d;J[c>>2]=a;g=J[c+4>>2];d=g+1|0}J[c+4>>2]=d;H[a+g|0]=b;Ui=f+96|0}function nB(a,b,c){var d=0,e=0,f=0;d=Ui-32|0;Ui=d;f=nq(a,b,135027,114114);rj(a,-10001,c);b=Ij(a,-1,0);if(!b){J[d+16>>2]=c;fj(a,56525,d+16|0)}mj(a,158859,0);while(1){a:{b:{c:{c=K[b|0];if((c|0)!=59){if(c){break c}b=0;break b}b=b+1|0;continue}e=Hk(b,59);d:{if(e){c=e-b|0;break d}c=yj(b);e=c+b|0}mj(a,b,c);b=nq(a,Ij(a,-1,0),102200,f);Rl(a,-2);c=ol(b,36296);if(!c){break a}vk(c)}Ui=d+32|0;return b}J[d>>2]=b;ik(a,148803,d);Rl(a,-2);lm(a,2);b=e;continue}}function jK(a,b){var c=0,d=0,e=0,f=0;a:{b:{c:{c=J[a+4>>2];d=J[b>>2];e=J[b+8>>2]-d>>1;if(c>>>0>e>>>0){if(H[b+12|0]&1){break c}lj(c,2,b,b+8|0,b+4|0);d=J[b>>2];e=J[b+8>>2]-d>>1}if(c>>>0>e>>>0){break b}J[b+4>>2]=(c<<1)+d;if(c){e=J[a>>2];a=J[a+4>>2];b=0;while(1){if((a|0)==(b|0)){break a}f=b<<1;I[f+d>>1]=L[e+f>>1];b=b+1|0;if((c|0)!=(b|0)){continue}break}}return c}Z(151729,53895,501,2284);B()}Z(144782,53895,514,59583);B()}Z(145396,54078,297,84789);B()}function Zda(a){a=a|0;var b=0,c=0,d=0,e=0,f=0,g=0,h=0;d=Ui-16|0;Ui=d;e=J[J[a+36>>2]+8>>2];b=J[e+4>>2];c=J[a+20>>2];f=J[a+24>>2];a:{if(f>>>0<3){break a}b=K[c|0]!=79|K[c+1|0]!=103?b:K[c+2|0]==103?1:b;if(K[c+8|0]!=87|f>>>0<11|K[c+9|0]!=65){break a}b=K[c+10|0]!=86?b:0}g=-11;h=b;b=J[a+36>>2];if(!FJ(c,f,h,d+12|0,J[b>>2],J[b+4>>2])){jx(J[e>>2]);J[e>>2]=J[d+12>>2];J[J[a+36>>2]+8>>2]=e;J[J[a+36>>2]+16>>2]=J[J[d+12>>2]+12>>2]+40;g=0}Ui=d+16|0;return g|0}function Oq(a,b,c,d,e){var f=0,g=0,h=0,i=0;El(a,c<<6|b|d<<23|e<<14,J[J[a+12>>2]+8>>2]);f=J[a+32>>2];J[a+32>>2]=-1;g=El(a,2147450902,J[J[a+12>>2]+8>>2]);if((f|0)!=-1){if((g|0)==-1){return f}i=J[J[a>>2]+12>>2];d=g;while(1){e=d;b=(d<<2)+i|0;c=J[b>>2];h=(c>>>14|0)-131071|0;if((h|0)!=-1){d=(d+h|0)+1|0;if((d|0)!=-1){continue}}break}e=(e^-1)+f|0;d=e>>31;if((d^e)-d>>>0>=131072){qk(J[a+12>>2],56034);c=J[b>>2]}J[b>>2]=(c&16383|e<<14)+2147467264}return g}function Hoa(a,b){a=a|0;b=b|0;var c=0,d=0,e=0,f=0,g=0;g=a+716|0;c=a+712|0;f=J[a+720>>2];d=J[a+716>>2];a:{b:{c:{e=yj(b)+1|0;if(e>>>0>f-d>>>0){if(H[a+724|0]&1){break c}lj(((e>>>0<=1024?1024:e)+f|0)-J[c>>2]|0,1,c,a+720|0,g);d=J[g>>2];f=J[a+720>>2]}a=J[c>>2];c=d-a|0;d=c+e|0;if(d>>>0>f-a>>>0){break b}J[g>>2]=a+d;if(c>>>0>=d>>>0){break a}hj(a+c|0,b,e);return c|0}Z(151729,54052,501,2284);B()}Z(144782,54052,514,59583);B()}Z(145396,54052,487,84789);B()}function Mea(a){a=a|0;var b=0,c=0,d=0,e=0,f=0;c=Ui-16|0;Ui=c;b=-2;a:{if(dk(J[a+12>>2],J[a+16>>2],J[62830],c+12|0,0)){break a}b=J[c+12>>2];if(!K[J[b>>2]]){Uj(b);b=-13;break a}Tk(J[a+24>>2],J[b+12>>2]);Tk(J[a+24>>2],J[J[c+12>>2]+16>>2]);b=J[c+12>>2];if(J[b+52>>2]){f=J[b+48>>2];while(1){e=J[(P(d,48)+f|0)+32>>2];if(!(!e|!K[e|0])){Tk(J[a+24>>2],e);b=J[c+12>>2]}d=d+1|0;if(d>>>0>2]){continue}break}}J[J[a+32>>2]>>2]=b;b=0}Ui=c+16|0;return b|0}function Kfa(a){a=a|0;var b=0,c=0,d=0,e=0;b=J[a+24>>2];d=bR(J[a>>2],b);if(!d){J[J[a+28>>2]+8>>2]=b;J[J[a+28>>2]+16>>2]=(J[a+16>>2]+(J[b+16>>2]-J[b+12>>2]|0)|0)+32;return d|0}c=J[b+12>>2];if((c|0)!=J[b+16>>2]){e=J[a>>2];a=0;while(1){vj(e,J[(a<<2)+c>>2]);a=a+1|0;c=J[b+12>>2];if(a>>>0>2]-c>>2>>>0){continue}break}}J[b+16>>2]=c;a=J[b+8>>2];if(a){Uj(a);J[b+8>>2]=0}a:{if(H[b+24|0]&1){break a}a=J[b+12>>2];if(!a){break a}cj(a)}cj(b);return d|0}function oL(a,b,c,d){var e=0,f=0,g=0,h=0,i=0;e=Ui-48|0;Ui=e;if(b){while(1){J[e+40>>2]=0;J[e+44>>2]=0;J[e+32>>2]=0;J[e+36>>2]=0;J[e+24>>2]=0;J[e+28>>2]=0;J[e+16>>2]=0;J[e+20>>2]=0;hP(a,g,e+16|0);a:{b:{f=J[e+40>>2];if(f-7>>>0>=2){if(f>>>0<=20){if(1<>2]=J[e+16>>2];J[e+4>>2]=f;dj(3,90423,141603,e);break a}h=h+1|0;break a}i=i+1|0}g=g+1|0;if((g|0)!=(b|0)){continue}break}}J[c>>2]=h;J[d>>2]=i;Ui=e+48|0}function nY(a){a=a|0;var b=0,c=0,d=0,e=0;d=Ui-16|0;Ui=d;c=1;e=Aj(a,1,0);b=Va(-100,e|0,0)|0;if((b|0)==-31){b=Fi(e|0)|0}if(b>>>0>=4294963201){J[245744]=0-b;b=-1}a:{if(!b){b=J[a+8>>2];J[b+8>>2]=1;J[b>>2]=1;J[a+8>>2]=J[a+8>>2]+16;break a}b=J[245744];c=J[a+8>>2];J[c+8>>2]=0;J[a+8>>2]=c+16;J[d+4>>2]=L[((b>>>0<=153?b:0)<<1)+215472>>1]+213556;J[d>>2]=e;ik(a,28428,d);c=J[a+8>>2];J[c+8>>2]=3;O[c>>3]=b|0;J[a+8>>2]=J[a+8>>2]+16;c=3}Ui=d+16|0;return c|0}function Haa(a,b,c,d){a=a|0;b=b|0;c=c|0;d=d|0;var e=0,f=0,g=0;a:{if(a){rc(J[(b<<2)+161152>>2],c|0,d|0);if(K[J[79491]+220|0]&2){e=_()|0;if(e){break a}}f=L[a+150>>1]&57344;b=b&7;e=b>>>26|0;g=(L[a+146>>1]|L[a+148>>1]<<16)&535035455|b<<6;e=e|f;f=b<<18|g;e=b>>>14|e;b=(c&255)<<5;c=f;g=b|e;b=d&255;e=b>>>3|0;b=b<<29|c;I[a+146>>1]=b;I[a+148>>1]=b>>>16;I[a+150>>1]=e|g;return}Z(9196,40535,4770,82050);B()}Cj(e,82050,4772);Z(114101,40535,4772,82050);B()}function Dr(a,b){var c=0,d=0,e=0,f=0,g=0,h=0,i=0,j=0,k=0,l=0,m=0;a:{if(b){c=J[a+8>>2];h=J[a+4>>2];if(c>>>0>h>>>0){break a}b:{while(1){i=((e|0)!=10|(f|0)!=0)&c>>>0>>0;if(!i){break b}j=c+1|0;J[a+8>>2]=j;k=H[c|0];c=k&127;d=ixa(e,f,7,0);g=d&31;if((d&63)>>>0>=32){d=c<>>32-g;c=c<>2]=l}return i}Z(60977,39940,69,109390);B()}Z(71496,39940,70,109390);B()}function rda(a){a=a|0;var b=0,c=Q(0);c=Q(1);b=J[a>>2];if(b){c=fn(b,67977,Q(1))}N[79200]=Q(1)/c;N[59873]=c;a=J[a+8>>2];uk(a,76575,239504);J[79308]=vm(a,3659,160532,239536);Fj(a,0,0);uk(a,0,239568);b=J[a+8>>2];J[b+8>>2]=3;O[b>>3]=0;J[a+8>>2]=J[a+8>>2]+16;ej(a,-2,85134);b=J[a+8>>2];J[b+8>>2]=3;O[b>>3]=1;J[a+8>>2]=J[a+8>>2]+16;ej(a,-2,85149);b=J[a+8>>2];J[b+8>>2]=3;O[b>>3]=2;J[a+8>>2]=J[a+8>>2]+16;ej(a,-2,85167);ej(a,-2,3661);gj(a,-2);return 0}function kna(a){a=a|0;var b=0,c=0,d=0,e=0,f=0;c=Ui-16|0;Ui=c;b=-13;if(!dk(J[a+12>>2],J[a+16>>2],J[55210],c+12|0,0)){b=J[c+12>>2];d=J[b+8>>2];if(d){e=J[b+4>>2];b=0;while(1){f=J[(e+P(b,80)|0)+4>>2];if(f){Tk(J[a+24>>2],f)}b=b+1|0;if((d|0)!=(b|0)){continue}break}b=J[c+12>>2]}d=J[b+36>>2];if(d){e=J[b+32>>2];b=0;while(1){Tk(J[a+24>>2],J[e+(b<<2)>>2]);b=b+1|0;if((d|0)!=(b|0)){continue}break}b=J[c+12>>2]}J[J[a+32>>2]>>2]=b;b=0}Ui=c+16|0;return b|0}function Z1(a){a=a|0;var b=0,c=0,d=0,e=0;c=Ui-16|0;Ui=c;e=1;b=Vj(a,1);a:{b:{switch(K[Aj(a,2,0)|0]-120|0){case 0:d=+N[b>>2];b=J[a+8>>2];J[b+8>>2]=3;O[b>>3]=d;J[a+8>>2]=J[a+8>>2]+16;break a;case 1:d=+N[b+4>>2];b=J[a+8>>2];J[b+8>>2]=3;O[b>>3]=d;J[a+8>>2]=J[a+8>>2]+16;break a;case 2:d=+N[b+8>>2];b=J[a+8>>2];J[b+8>>2]=3;O[b>>3]=d;J[a+8>>2]=J[a+8>>2]+16;break a;default:break b}}J[c+4>>2]=108973;J[c>>2]=53139;e=fj(a,114116,c)}Ui=c+16|0;return e|0}function XI(a,b,c){var d=0;d=Ui-208|0;Ui=d;J[d+76>>2]=128;a:{if((iB(J[b>>2],d+80|0,d+76|0)|0)<0){b=J[a+8>>2];J[b+8>>2]=0;J[a+8>>2]=b+16;xj(a,Tm(J[245744]));a=2;break a}b=ka(d+80|0,J[d+76>>2],d+16|0,46,d+10|0,6,3)|0;if(b){c=J[a+8>>2];J[c+8>>2]=0;J[a+8>>2]=c+16;xj(a,ru(b));a=2;break a}xj(a,d+16|0);xj(a,d+10|0);b:{c:{switch(c-2|0){case 0:mj(a,15405,4);break b;case 8:mj(a,103511,5);break b;default:break c}}mj(a,3515,13)}a=3}Ui=d+208|0;return a}function RW(a,b,c,d,e,f){a=a|0;b=b|0;c=c|0;d=d|0;e=e|0;f=f|0;var g=0,h=0,i=0,j=0,k=0;if((e|0)>0){while(1){j=K[d+i|0];h=K[c+i|0];g=K[b+i|0];H[a+3|0]=255;k=h-128|0;h=g<<20|524288;g=P(k,1858048)+h>>20;g=(g|0)>0?g:0;H[a+2|0]=(g|0)>=255?255:g;j=j-128|0;g=h+P(j,1470208)>>20;g=(g|0)>0?g:0;H[a|0]=(g|0)>=255?255:g;h=(h+P(j,-748800)|0)+(P(k,-360960)&-65536)>>20;h=(h|0)>0?h:0;H[a+1|0]=(h|0)>=255?255:h;a=a+f|0;i=i+1|0;if((i|0)!=(e|0)){continue}break}}}function AM(a){var b=0,c=0,d=0;a:{b:{b=J[a+4>>2];c=J[a>>2];if((b|0)!=(c|0)){b=(b-c|0)/18568|0;d=b>>>0<=1?1:b;b=0;while(1){c=J[a>>2];if((J[a+4>>2]-c|0)/18568>>>0<=b>>>0){break b}c=c+P(b,18568)|0;if(H[c+18540|0]&1){break a}c=c+18528|0;lj(0,1544,c,c+8|0,c+4|0);b=b+1|0;if((d|0)!=(b|0)){continue}break}}Uj(J[a+16>>2]);c:{if(H[a+12|0]&1){break c}b=J[a>>2];if(!b){break c}cj(b)}cj(a);return}Z(145396,53895,487,84789);B()}Z(151729,53895,501,2284);B()}function $aa(a,b,c){a=a|0;b=b|0;c=c|0;var d=0,e=0;d=Ui-16|0;Ui=d;a:{b:{c=J[c>>2];e=J[a+108>>2];if(c>>>0>2]-e>>2>>>0){J[d+12>>2]=J[(c<<2)+e>>2];c=YO(d+12|0,1);c:{if(!c){break c}b=J[b+2068>>2];e=J[a+112>>2];a=J[a+108>>2];if(b>>>0>=e-a>>2>>>0){break a}Fa(J[a+(b<<2)>>2]);if(!(K[J[79491]+220|0]&2)){break c}a=_()|0;if(a){break b}}Ui=d+16|0;return c|0}break a}Cj(a,61109,3019);Z(114101,40535,3019,61109);B()}Z(145396,53895,487,84789);B()}function Uja(a,b,c,d,e,f){a=a|0;b=b|0;c=c|0;d=d|0;e=e|0;f=f|0;var g=0,h=0,i=0,j=0,k=0;k=J[a+8>>2];g=J[a>>2];h=J[a+4>>2];a=by(J[g+8>>2],h);if(!a){a:{a=Hq();j=J[g+8>>2];g=J[j+32>>2];b:{c:{i=h&65535;if(i>>>0<(J[j+36>>2]-g|0)/672>>>0){g=g+P(i,672)|0;if(L[g+648>>1]!=(h>>>16|0)){break c}if(L[g+650>>1]!=(i|0)){break b}J[g+604>>2]=a;break a}Z(145396,53895,487,84789);B()}Z(47372,40876,188,69601);B()}Z(5388,40876,189,69601);B()}}xr(a,k,b,c,d,e,f)}function Dm(a,b){var c=0,d=0,e=0,f=0,g=0;d=Ui+-64|0;Ui=d;c=-20736;a:{if(!a){break a}e=J[a>>2];if(!e){break a}f=J[a+8>>2];if(!f){break a}g=J[e+12>>2];c=Zi[J[e+24>>2]](J[a+4>>2],d)|0;if(c){break a}c=Zi[J[J[a>>2]+16>>2]](J[a+4>>2])|0;if(c){break a}c=J[a>>2];c=Zi[J[c+20>>2]](J[a+4>>2],f+g|0,J[c+12>>2])|0;if(c){break a}c=J[a>>2];c=Zi[J[c+20>>2]](J[a+4>>2],d,J[c+8>>2])|0;if(c){break a}c=Zi[J[J[a>>2]+24>>2]](J[a+4>>2],b)|0}Ui=d- -64|0;return c}function zK(a,b,c){var d=0,e=0,f=0,g=0,h=0,i=0;g=J[a+52>>2];Tj(g);a:{d=J[a+4>>2];e=J[a>>2];if((d|0)!=(e|0)){f=d-e>>4;i=f>>>0<=1?1:f;d=0;while(1){if((d|0)==(f|0)){break a}h=d<<4;if(!jj(J[e+h>>2],b)){e=J[a+52>>2];Tj(e);b=-6;f=J[a+4>>2];a=J[a>>2];if(f-a>>4>>>0>d>>>0){a=a+h|0;J[c>>2]=J[a>>2];J[c+4>>2]=J[a+4>>2];J[c+8>>2]=J[a+8>>2];b=0}Lj(e);Lj(g);return b}d=d+1|0;if((i|0)!=(d|0)){continue}break}}Lj(g);return-6}Z(145396,53895,487,84789);B()}function uZ(a){a=a|0;var b=0,c=0,d=0,e=0,f=0,g=0;b=Ui-32|0;Ui=b;e=2;c=gm(a,1033);d=Aj(a,2,0);g=Aj(a,3,0);J[b+8>>2]=0;J[b+12>>2]=0;J[b+24>>2]=0;J[b+28>>2]=0;J[b+16>>2]=0;J[b+20>>2]=0;J[b+8>>2]=1;J[b>>2]=0;J[b+4>>2]=0;J[b+4>>2]=J[c+8272>>2];f=c+8248|0;Po(f);c=bB(c,c+8272|0,d,g,f,b);Uq(a,1042,1);a:{if(c){d=J[a+8>>2];J[d+8>>2]=0;J[a+8>>2]=d+16;xj(a,c);break a}c=J[a+8>>2];J[c+8>>2]=3;O[c>>3]=1;J[a+8>>2]=J[a+8>>2]+16;e=1}Ui=b+32|0;return e|0}function ita(a,b,c,d,e,f){a=a|0;b=b|0;c=c|0;d=Q(d);e=e|0;f=f|0;var g=0;g=Ui+-64|0;Ui=g;J[g+60>>2]=f;J[g+56>>2]=e;e=J[a+208>>2];if(N[e+4>>2]>=d){J[g+12>>2]=J[a+212>>2];J[g+16>>2]=g+56;a=J[b+12>>2];J[g+28>>2]=J[b+8>>2];J[g+32>>2]=a;a=J[b+4>>2];J[g+20>>2]=J[b>>2];J[g+24>>2]=a;a=J[c+12>>2];J[g+44>>2]=J[c+8>>2];J[g+48>>2]=a;a=J[c+4>>2];J[g+36>>2]=J[c>>2];J[g+40>>2]=a;N[g+52>>2]=d;d=Q(Zi[J[J[e>>2]+12>>2]](e,g+12|0,1))}Ui=g- -64|0;return Q(d)}function hta(a,b,c,d,e,f){a=a|0;b=b|0;c=c|0;d=Q(d);e=e|0;f=f|0;var g=0;g=Ui+-64|0;Ui=g;J[g+60>>2]=f;J[g+56>>2]=e;e=J[a+208>>2];if(N[e+4>>2]>=d){J[g+12>>2]=J[a+212>>2];J[g+16>>2]=g+56;a=J[b+12>>2];J[g+28>>2]=J[b+8>>2];J[g+32>>2]=a;a=J[b+4>>2];J[g+20>>2]=J[b>>2];J[g+24>>2]=a;a=J[c+12>>2];J[g+44>>2]=J[c+8>>2];J[g+48>>2]=a;a=J[c+4>>2];J[g+36>>2]=J[c>>2];J[g+40>>2]=a;N[g+52>>2]=d;d=Q(Zi[J[J[e>>2]+12>>2]](e,g+12|0,0))}Ui=g- -64|0;return Q(d)}function bx(a,b){var c=0,d=0,e=0,f=0,g=0;d=Ui-32|0;Ui=d;g=b+24|0;if(Pj(g,0)){e=d+20|0;c=e;J[c+8>>2]=0;J[c>>2]=1;J[c+4>>2]=0;f=d+8|0;c=f;J[c+8>>2]=0;J[c>>2]=1;J[c+4>>2]=0;c=Bp(e,g,a+4|0);a:{if(c){break a}c=Ak(f,e,e);if(c){break a}c=Nl(f,a);if(c){break a}c=Ak(b,b,f);if(c){break a}c=Nl(b,a);if(c){break a}b=b+12|0;c=Ak(b,b,f);if(c){break a}c=Nl(b,a);if(c){break a}c=jl(a,b,b,e);if(c){break a}c=kl(g,1)}Dj(d+20|0);Dj(d+8|0)}Ui=d+32|0;return c}function Wp(a,b,c,d,e,f,g){var h=0,i=0,j=0,k=0;h=Ui-32|0;Ui=h;J[h+24>>2]=0;J[h+28>>2]=0;J[h+20>>2]=0;i=-1;J[h+16>>2]=-1;I[h+14>>1]=0;a:{if(!tL(a,b,c,h+24|0,h+20|0,h+16|0,h+14|0)){break a}if((fk(a,J[h+24>>2],J[h+28>>2])&Yi)==-1){break a}j=J[d>>2];a=J[h+24>>2];k=J[h+28>>2];if((a|0)==(b|0)&(k|0)==(c|0)){i=-4;if(!(1<>>0>7){break a}i=0;Zi[f|0](g,b,c,e,0,d);break a}i=-4;if(j){break a}Zi[f|0](g,a,k,e,h+16|0,d);i=0}Ui=h+32|0;return i}function fq(a,b){var c=0,d=0;d=a;a:{b:{if((d^b)&3){c=K[b|0];break b}if(b&3){while(1){c=K[b|0];H[d|0]=c;if(!c){break a}d=d+1|0;b=b+1|0;if(b&3){continue}break}}c=J[b>>2];if(((c|16843008-c)&-2139062144)!=-2139062144){break b}while(1){J[d>>2]=c;d=d+4|0;c=J[b+4>>2];b=b+4|0;if(((16843008-c|c)&-2139062144)==-2139062144){continue}break}}H[d|0]=c;if(!(c&255)){break a}while(1){c=K[b+1|0];H[d+1|0]=c;d=d+1|0;b=b+1|0;if(c){continue}break}}return a}function QS(a,b){var c=0,d=Q(0),e=0,f=0,g=0,h=Q(0),i=Q(0),j=Q(0),k=Q(0),l=0,m=Q(0),n=Q(0);f=J[a>>2];if((f|0)>0){g=a+4|0;h=N[a+308>>2];i=N[b+8>>2];j=N[b+4>>2];k=N[b>>2];while(1){l=c;c=(e<<4)+g|0;d=Q(i-N[c+8>>2]);m=Q(d*d);d=Q(k-N[c>>2]);n=Q(d*d);d=Q(j-N[c+4>>2]);c=l|Q(m+Q(n+Q(d*d)))<=h;e=e+1|0;if((f|0)!=(e|0)){continue}break}}if(!(N[b+12>>2]!=N[a+304>>2]|N[b+8>>2]!=N[a+300>>2]|N[b+4>>2]!=N[a+296>>2])){c=N[b>>2]==N[a+292>>2]|c}return c&1}function J2(a){a=a|0;var b=0,c=0,d=0,e=0,f=0;b=Ui-16|0;Ui=b;c=1;d=J[a+8>>2]-J[a+12>>2]>>4;e=Aj(a,1,0);a:{f=Bx(J[mr(a)+4>>2],e,b+12|0,b+8|0);if(f){c=J[a+8>>2];J[c+8>>2]=0;J[a+8>>2]=c+16;J[b+4>>2]=f;J[b>>2]=e;ik(a,140559,b);c=2;if((d+2|0)==J[a+8>>2]-J[a+12>>2]>>4){break a}Z(143309,39097,667,69913);B()}mj(a,J[b+12>>2],J[b+8>>2]);cj(J[b+12>>2]);if((d+1|0)==J[a+8>>2]-J[a+12>>2]>>4){break a}Z(143334,39097,672,69913);B()}Ui=b+16|0;return c|0}function vm(a,b,c,d){var e=0,f=0,g=0,h=0,i=0;e=Ui-48|0;Ui=e;h=e+8|0;pj(h,a,0,37704,718);uk(a,b,c);c=J[a+8>>2]-J[a+12>>2]>>4;iu(a,b);f=e+28|0;pj(f,a,0,37704,676);b=Dq(b,yj(b));uj(a,-1);g=J[84547];i=J[a+8>>2];J[i+8>>2]=3;O[i>>3]=g|0;J[a+8>>2]=J[a+8>>2]+16;g=J[a+8>>2];J[g+8>>2]=3;O[g>>3]=b|0;J[a+8>>2]=J[a+8>>2]+16;Kj(a,-3);gj(a,-2);oj(f);f=J[a+8>>2]-J[a+12>>2]>>4;uk(a,0,d);mj(a,67352,11);uj(a,c);Kj(a,f);gj(a,-3);oj(h);Ui=e+48|0;return b}function o9(a){a=a|0;var b=0,c=0,d=0,e=0,f=0;d=Ui-16|0;Ui=d;Bj(a);c=qj(a,-1,J[219396],139183);gj(a,-2);Qj(a,1,d+12|0);a:{b:{c:{b=J[c+32>>2];f=(J[c+36>>2]-b|0)/672|0;e=J[d+12>>2];c=e&65535;if(f>>>0>c>>>0){b=b+P(c,672)|0;if(L[b+648>>1]!=(e>>>16|0)){break c}if((c|0)!=L[b+650>>1]){break b}c=J[b+488>>2];b=J[b+492>>2];break a}Z(145396,53895,487,84789);B()}Z(47372,40876,188,69601);B()}Z(5388,40876,189,69601);B()}Bk(a,c,b);Ui=d+16|0;return 1}function iqa(a,b){a=a|0;b=b|0;var c=0,d=0,e=0,f=0,g=0,h=0,i=0,j=0;i=J[b+8>>2];if((i|0)>0){f=J[a+16>>2];j=J[b+16>>2];a=0;while(1){c=J[(d<<2)+j>>2];a:{if(!(K[c+204|0]&3)){g=(a<<3)+f|0;h=g;b=a;e=J[g>>2];if((b|0)!=(e|0)){while(1){b=J[(e<<3)+f>>2];J[h>>2]=b;h=(b<<3)+f|0;e=J[h>>2];if((e|0)!=(b|0)){continue}break}}J[c+208>>2]=b;J[g+4>>2]=d;J[c+212>>2]=-1;a=a+1|0;break a}J[c+208>>2]=-1;J[c+212>>2]=-2}d=d+1|0;if((i|0)!=(d|0)){continue}break}}}function hI(a){var b=0;b=J[a+152>>2];if(!(!b|!(K[b+5|0]&3))){dl(a,b)}b=J[a+156>>2];if(!(!b|!(K[b+5|0]&3))){dl(a,b)}b=J[a+160>>2];if(!(!b|!(K[b+5|0]&3))){dl(a,b)}b=J[a+164>>2];if(!(!b|!(K[b+5|0]&3))){dl(a,b)}b=J[a+168>>2];if(!(!b|!(K[b+5|0]&3))){dl(a,b)}b=J[a+172>>2];if(!(!b|!(K[b+5|0]&3))){dl(a,b)}b=J[a+176>>2];if(!(!b|!(K[b+5|0]&3))){dl(a,b)}b=J[a+180>>2];if(!(!b|!(K[b+5|0]&3))){dl(a,b)}b=J[a+184>>2];if(!(!b|!(K[b+5|0]&3))){dl(a,b)}}function Xp(a,b,c,d,e){var f=0,g=0,h=0;f=Ui-336|0;Ui=f;g=qr(b,c,d);a:{if(!g){J[f+4>>2]=tj(c,d);J[f>>2]=e;fj(a,30242,f);a=0;break a}b=am(b,e,f+76|0);if(b){J[f- -64>>2]=tj(c,d);J[f+56>>2]=c;J[f+60>>2]=d;J[f+48>>2]=b;h=f+80|0;Gj(h,256,(b|0)==-3?31635:(b|0)==-15?31570:31677,f+48|0);J[f+32>>2]=h;fj(a,31902,f+32|0)}if(J[g+20>>2]!=J[f+76>>2]){b=tj(c,d);J[f+20>>2]=e;J[f+16>>2]=b;fj(a,118408,f+16|0);a=0;break a}a=J[g+8>>2]}Ui=f+336|0;return a}function Bda(a){a=a|0;var b=0,c=0,d=0,e=0,f=0,g=0,h=0,i=0;a=J[J[a>>2]>>2];h=J[J[a>>2]+2480>>2];i=J[a+4>>2];a=J[a+8>>2];e=a+2052|0;f=a+2048|0;b=J[a+2048>>2];c=J[a+2052>>2];if((b|0)!=(c|0)){while(1){g=J[(d<<5)+b>>2];if(g){cj(g);c=J[e>>2];b=J[f>>2]}d=d+1|0;if(d>>>0>5>>>0){continue}break}}if(H[a+2060|0]&1){Z(151729,53895,501,2284);B()}lj(0,32,f,a+2056|0,e);J[a+2052>>2]=J[a+2048>>2];if(!(Zi[J[79484]](h,a,i)|0)){dj(3,88458,129345,0)}}function go(a,b){var c=0;J[a>>2]=0;J[a+4>>2]=0;J[a+24>>2]=0;J[a+28>>2]=0;J[a+16>>2]=0;J[a+20>>2]=0;J[a+8>>2]=0;J[a+12>>2]=0;a:{b:{if(!b){break b}if(!K[874264]){nl();H[874264]=1}if(K[874164]!=1){break b}b=J[218540];Tj(b);if(!K[874264]){nl();H[874264]=1}c=a;a=NV();J[c+24>>2]=a;if(!K[874264]){nl();H[874264]=1}c=J[218558];if(a>>>0>=J[218559]-c>>3>>>0){break a}a=(a<<3)+c|0;J[a>>2]=0;J[a+4>>2]=0;Lj(b)}return}Z(145396,54052,487,84789);B()}function Xja(a){a=a|0;var b=0,c=0,d=0,e=0,f=0;e=Ui-16|0;Ui=e;c=J[J[a+12>>2]>>2];d=J[a+16>>2];b=J[d+64>>2];f=J[55237];d=J[d+68>>2];a:{if((b|0)==J[f+8>>2]&(d|0)==J[f+12>>2]){H[c+22|0]=K[c+22|0]|1;break a}f=b;b=J[55238];if((f|0)!=J[b+8>>2]|J[b+12>>2]!=(d|0)){break a}H[c+22|0]=K[c+22|0]&254}b=HO(J[c+8>>2],J[a+16>>2]);if(b){c=J[a+16>>2];a=b+10|0;if(a>>>0>10){a=102253}else{a=J[(a<<2)+286536>>2]}J[e>>2]=a;jo(c,118728,e)}Ui=e+16|0;return 0}function yR(a,b){var c=0,d=0,e=0;a:{b:{c=b>>>16&32767;if((c|0)!=32767){b=J[a+1036>>2];d=J[a+1040>>2];while(1){if(d-b>>2>>>0<=c>>>0){break a}e=c<<2;b=J[e+b>>2];yR(a,J[b+148>>2]);if(K[b+136|0]>=127){break b}kt(a,b);H[b+136|0]=J[b+136>>2]+1;Ly(a,b);d=J[a+1040>>2];b=J[a+1036>>2];if(d-b>>2>>>0<=c>>>0){break a}c=J[J[b+e>>2]+148>>2]&32767;if((c|0)!=32767){continue}break}}return}Z(110954,38296,1672,44579);B()}Z(145396,53895,487,84789);B()}function oO(a,b){var c=0,d=0,e=0,f=0;dv(a,b);a:{b:{c=J[a+20>>2];if(c){e=L[a+26>>1]-1|0;f=e&65535;if(f>>>0>=L[a+24>>1]){break b}d=L[b+650>>1];I[a+26>>1]=e;I[c+(f<<1)>>1]=d;c=J[a+32>>2];if((d+1|0)==((J[a+36>>2]-c|0)/672|0)){if((J[a+40>>2]-c|0)/672>>>0>>0){break a}J[a+36>>2]=c+P(d,672)}a=J[b+484>>2];if(a){cj(a)}I[ij(b,0,672)+650>>1]=65535;return}Z(49493,54340,140,53220);B()}Z(2650,54340,141,53220);B()}Z(144782,53895,514,59583);B()}function bB(a,b,c,d,e,f){var g=0,h=0;g=Ui-16|0;Ui=g;J[g+12>>2]=0;d=Mt(pa(c|0,d|0,f|0,g+12|0)|0);f=J[g+12>>2];a:{b:{c:{if(!d){d=0;if(f){break c}break b}if(!f){break a}Ip(f);break a}while(1){Po(e);if(J[b>>2]!=J[f+4>>2]){Nt(a);d=Tm(Tz(a,J[f+4>>2],J[f+8>>2],J[f+12>>2]));if(d){Ip(J[g+12>>2]);break a}J[b>>2]=J[f+4>>2];jw(a)}d=Tm(Uz(a,J[f+20>>2],J[f+16>>2],e));if(d){f=J[f+28>>2];if(f){continue}}break}h=J[g+12>>2]}Ip(h)}Ui=g+16|0;return d}function Foa(a,b,c,d,e,f,g){a=a|0;b=b|0;c=c|0;d=d|0;e=e|0;f=f|0;g=g|0;a:{b:{c:{if((c|0)==200){if(!(d|e)){J[b+4>>2]=J[b>>2];return}a=b+4|0;c=b+8|0;f=J[b+8>>2];if(f-J[b+4>>2]>>>0>>0){if(H[b+12|0]&1){break c}lj(((e>>>0<=4096?4096:e)+f|0)-J[b>>2]|0,1,b,c,a)}if(!d){break b}b=J[a>>2];if(J[c>>2]-b>>>0>>0){break a}hj(b,d,e);J[a>>2]=J[a>>2]+e}return}Z(151729,54052,501,2284);B()}Z(83247,41783,539,13460);B()}Z(11738,54052,564,4042);B()}function D$(a){a=a|0;var b=0,c=0,d=0,e=0,f=0;c=Ui-32|0;Ui=c;d=1;e=Aj(a,1,0);b=mm(a,2,36296,0);f=Sj(a,4);J[f>>2]=0;rj(a,-1e4,135350);Mj(a,-2);b=ol(e,b);J[f>>2]=b;if(!b){d=J[245744];b=J[a+8>>2];J[b+8>>2]=0;J[a+8>>2]=b+16;b=L[((d>>>0<=153?d:0)<<1)+215472>>1]+213556|0;a:{if(e){J[c+20>>2]=b;J[c+16>>2]=e;ik(a,28428,c+16|0);break a}J[c>>2]=b;ik(a,31902,c)}e=J[a+8>>2];J[e+8>>2]=3;O[e>>3]=d|0;J[a+8>>2]=J[a+8>>2]+16;d=3}Ui=c+32|0;return d|0}function vr(a){var b=0,c=0,d=0,e=0;d=Ui-16|0;Ui=d;a:{b:{c:{switch(J[a+56>>2]-1|0){case 0:b=J[a+48>>2];if(!b){break b}e=J[79491];c=J[e+108>>2];if(J[e+112>>2]-c>>2>>>0<=b>>>0){break a}J[d+12>>2]=J[c+(b<<2)>>2];Sc(1,d+12|0);wr(J[79491],J[a+48>>2]);J[a+48>>2]=0;break b;case 1:break c;default:break b}}b=J[a+48>>2];c=J[a+52>>2];if(!(b|c)){break b}Zi[J[79455]](b,c);J[a+48>>2]=0;J[a+52>>2]=0}Ui=d+16|0;return}Z(145396,53895,487,84789);B()}function rwa(a,b,c,d,e,f,g){a=a|0;b=b|0;c=c|0;d=d|0;e=e|0;f=f|0;g=g|0;var h=0,i=0;h=J[d>>2];if(h>>>0<=15){a:{if(b){if(!c){break a}while(1){if(!h){Bw(a,e,e)}b=e+h|0;i=K[f|0]^K[b|0];H[g|0]=i;H[b|0]=i;g=g+1|0;f=f+1|0;h=h+1&15;c=c-1|0;if(c){continue}break}break a}if(!c){break a}while(1){if(!h){Bw(a,e,e)}i=K[f|0];b=e+h|0;H[g|0]=i^K[b|0];H[b|0]=i;g=g+1|0;f=f+1|0;h=h+1&15;c=c-1|0;if(c){continue}break}}J[d>>2]=h;a=0}else{a=-33}return a|0}function px(a){var b=0,c=0,d=0,e=0,f=0;d=Ui-32|0;Ui=d;a:{b:{if(a){b=a?J[a>>2]:0;if(!b){break b}b=J[b+124>>2];if(!b){break a}f=pj(d+12|0,b,0,39844,430);c=J[215668];e=J[b+8>>2];J[e+8>>2]=3;O[e>>3]=c|0;J[b+8>>2]=J[b+8>>2]+16;c=J[J[a>>2]+124>>2];Nj(c,-1e4,J[a+4>>2]);Pk(c,-2);Ck(c,-2);Pk(c,-2);gj(c,-2);a=Vj(b,-1);gj(b,-2);oj(f);Ui=d+32|0;return a}Z(111353,39844,425,71927);B()}Z(111232,39844,427,71927);B()}Z(111392,39844,429,71927);B()}function bia(a,b){a=a|0;b=b|0;var c=0,d=0,e=0,f=0;c=J[J[a+24>>2]>>2];d=J[a+16>>2];e=J[a+20>>2];if((d|0)==J[76262]&(e|0)==J[76263]){d=J[J[J[a+8>>2]+80>>2]>>2];a=J[c+148>>2];if(!a){a=J[J[c+156>>2]+24>>2]}return Lm(d,a,b)|0}if((d|0)==J[76286]&(e|0)==J[76287]){d=J[J[J[a+8>>2]+80>>2]>>2];a=J[c+152>>2];if(!a){a=J[J[c+156>>2]>>2]}return Lm(d,a,b)|0}f=J[c+148>>2];if(!f){f=J[J[c+156>>2]+24>>2]}return bt(J[f>>2],d,e,J[a+32>>2],b,1,321,c)|0}function Qua(a){a=a|0;var b=0,c=Q(0),d=0,e=0;b=Ui-112|0;Ui=b;d=J[J[a+52>>2]+8>>2];e=J[J[a+48>>2]+8>>2];zj(156366,0);J[b+96>>2]=e;zj(156602,b+96|0);J[b+80>>2]=d;zj(156576,b+80|0);J[b+64>>2]=K[a+61|0];zj(157687,b- -64|0);c=N[a+68>>2];O[b+56>>3]=N[a+72>>2];O[b+48>>3]=c;zj(157002,b+48|0);c=N[a+76>>2];O[b+40>>3]=N[a+80>>2];O[b+32>>3]=c;zj(156877,b+32|0);O[b+16>>3]=N[a+84>>2];zj(155694,b+16|0);J[b>>2]=J[a+56>>2];zj(157263,b);Ui=b+112|0}function PA(a,b){var c=0,d=0,e=0,f=0,g=0,h=0,i=0;if(K[J[a+16>>2]+21|0]!=2){a:{if(b+1>>>0<=1073741823){f=lk(a,0,0,b<<2);break a}f=Dl(a)}d=J[a+16>>2];if((b|0)>0){ij(f,0,b<<2)}e=J[d+8>>2];if((e|0)>0){i=b-1|0;while(1){c=J[J[d>>2]+(g<<2)>>2];if(c){while(1){e=J[c>>2];h=((J[c+8>>2]&i)<<2)+f|0;J[c>>2]=J[h>>2];J[h>>2]=c;c=e;if(c){continue}break}e=J[d+8>>2]}g=g+1|0;if((g|0)<(e|0)){continue}break}}lk(a,J[d>>2],e<<2,0);J[d>>2]=f;J[d+8>>2]=b}}function ND(a,b){var c=0,d=0;c=Ui-16|0;Ui=c;J[c+8>>2]=0;J[c+12>>2]=0;J[c>>2]=0;J[c+4>>2]=0;a:{b:{if(!Kq(a,J[60374],c)){if(H[b+12|0]&1){break b}d=(J[c+4>>2]-J[c>>2]|0)+4|0;lj(d,1,b,b+8|0,b+4|0);a=J[b>>2];if(d>>>0>J[b+8>>2]-a>>>0){break a}J[b+4>>2]=a+d;b=J[c>>2];d=J[c+4>>2]-b|0;J[a>>2]=d;hj(a+4|0,b,d);if(!(!b|H[c+12|0]&1)){cj(b)}Ui=c+16|0;return}Z(93093,42176,121,35219);B()}Z(151729,53895,501,2284);B()}Z(144782,53895,514,59583);B()}function FT(a,b,c){a=a|0;b=b|0;c=c|0;var d=Q(0),e=Q(0),f=Q(0),g=Q(0),h=Q(0);Zi[J[J[b>>2]+64>>2]](a,b,c);if(Q(Zi[J[J[b>>2]+44>>2]](b))!=Q(0)){e=N[c+4>>2];d=N[c>>2];f=N[c+8>>2];g=Q(Zi[J[J[b>>2]+44>>2]](b));b=Q(Q(f*f)+Q(Q(d*d)+Q(e*e)))>2]=N[a>>2]+Q(g*Q(h*d));N[a+4>>2]=N[a+4>>2]+Q(g*Q(e*d));N[a+8>>2]=N[a+8>>2]+Q(g*Q(f*d))}}function F4(a,b){a=a|0;b=b|0;var c=0,d=0,e=0;c=Ui-144|0;Ui=c;if(H[b+2236|0]&1){d=J[b+2232>>2];b=J[b+2228>>2];J[c>>2]=b;J[c+4>>2]=(b+d|0)-1;d=c+16|0;Gj(d,128,8346,c);b=Ui-8128|0;Ui=b;e=J[a>>2];a:{if(J[e+2128>>2]){break a}J[b+16>>2]=68273;J[b+20>>2]=d;if((Gj(b+32|0,8096,158549,b+16|0)|0)>=8097){J[b+4>>2]=8096;J[b>>2]=68273;dj(3,99340,77946,b)}d=a;a=b+32|0;a=Rm(d,a,yj(a));if(!a){break a}J[e+2128>>2]=a}Ui=b+8128|0}Ui=c+144|0;return 0}function Epa(a,b,c,d,e,f,g){a=a|0;b=b|0;c=c|0;d=d|0;e=e|0;f=f|0;g=g|0;var h=0,i=0;h=J[d>>2];if(h>>>0<=15){a:{if(b){if(!c){break a}while(1){if(!h){du(a,e,e)}b=e+h|0;i=K[f|0]^K[b|0];H[g|0]=i;H[b|0]=i;g=g+1|0;f=f+1|0;h=h+1&15;c=c-1|0;if(c){continue}break}break a}if(!c){break a}while(1){if(!h){du(a,e,e)}i=K[f|0];b=e+h|0;H[g|0]=i^K[b|0];H[b|0]=i;g=g+1|0;f=f+1|0;h=h+1&15;c=c-1|0;if(c){continue}break}}J[d>>2]=h;a=0}else{a=-36}return a|0}function Am(a,b,c,d,e,f,g,h,i){var j=0,k=0,l=0,m=0;i=ixa(b,c,h,i);h=Yi;e=ixa(d,e,f,g);i=e+i|0;d=Yi+h|0;h=e>>>0>i>>>0?d+1|0:d;j=g;e=0;k=c;d=0;c=ixa(g,e,c,d);g=c+i|0;i=Yi+h|0;l=g;c=c>>>0>g>>>0?i+1|0:i;g=ixa(f,0,b,0);h=Yi;i=0;d=ixa(f,i,k,d);h=h+d|0;f=Yi+i|0;f=d>>>0>h>>>0?f+1|0:f;i=f+l|0;d=c;f=f>>>0>i>>>0?d+1|0:d;b=ixa(b,m,j,e)+h|0;e=Yi;e=b>>>0>>0?e+1|0:e;h=e+i|0;i=f;J[a+8>>2]=h;J[a+12>>2]=e>>>0>h>>>0?i+1|0:i;J[a>>2]=g;J[a+4>>2]=b}function $la(a){a=a|0;var b=0,c=0,d=0,e=0,f=Q(0),g=0,h=Q(0),i=Q(0);c=Ui+-64|0;Ui=c;g=pj(c+44|0,a,1,36839,204);b=qj(a,1,J[79308],3640);d=J[b+8>>2];e=J[b+12>>2];a:{if(!(d|e)){break a}if(xk(J[b+4>>2],d,e)){break a}J[c>>2]=tj(J[b+8>>2],J[b+12>>2]);fj(a,102051,c)}b=J[b>>2];d=J[b+68>>2];J[c+8>>2]=J[b+64>>2];J[c+12>>2]=d;f=N[79200];h=N[c+8>>2];i=N[c+12>>2];b=c+16|0;J[b+8>>2]=0;N[b+4>>2]=f*i;N[b>>2]=f*h;cl(a,b);oj(g);Ui=c- -64|0;return 1}function tsa(a,b,c,d){a=a|0;b=b|0;c=c|0;d=d|0;var e=0,f=Q(0),g=Q(0),h=Q(0),i=Q(0),j=Q(0),k=Q(0),l=0;l=J[a+92>>2];e=J[a+100>>2]+((b|0)%(l|0)<<4)|0;f=N[e>>2];g=N[e+4>>2];h=N[e+8>>2];i=N[a+12>>2];j=N[a+16>>2];k=N[a+20>>2];J[c+12>>2]=0;N[c+8>>2]=h*k;N[c+4>>2]=g*j;N[c>>2]=f*i;b=J[a+100>>2]+((b+1|0)%(l|0)<<4)|0;f=N[b>>2];g=N[b+4>>2];h=N[b+8>>2];i=N[a+12>>2];j=N[a+16>>2];k=N[a+20>>2];J[d+12>>2]=0;N[d+8>>2]=h*k;N[d+4>>2]=g*j;N[d>>2]=f*i}function Ey(a,b){var c=0,d=0;J[a>>2]=7;c=J[b+4>>2];J[a+8>>2]=J[b>>2];J[a+12>>2]=c;c=J[b+12>>2];J[a+16>>2]=J[b+8>>2];J[a+20>>2]=c;c=J[b+20>>2];J[a+24>>2]=J[b+16>>2];J[a+28>>2]=c;c=J[b+28>>2];J[a+32>>2]=J[b+24>>2];J[a+36>>2]=c;c=J[b+36>>2];J[a+40>>2]=J[b+32>>2];J[a+44>>2]=c;c=J[b+44>>2];J[a+48>>2]=J[b+40>>2];J[a+52>>2]=c;c=J[b+52>>2];J[a+56>>2]=J[b+48>>2];J[a+60>>2]=c;d=J[b+60>>2];c=a- -64|0;J[c>>2]=J[b+56>>2];J[c+4>>2]=d;return a}function Eaa(a,b,c,d){a=a|0;b=b|0;c=c|0;d=d|0;var e=0,f=0;a:{if(a){oc(J[(b<<2)+161200>>2],J[(c<<2)+161200>>2],J[(d<<2)+161200>>2]);if(K[J[79491]+220|0]&2){e=_()|0;if(e){break a}}I[a+144>>1]=L[a+144>>1]&8191|b<<13;e=a;b=b<<9&3584;f=(L[a+146>>1]|L[a+148>>1]<<16)&-261696;a=c&7;c=b|(f|a<<3);b=a<<15|c;a=d&7;a=b|a<<12|a;I[e+146>>1]=a;I[e+148>>1]=a>>>16;return}Z(9196,40535,4802,43692);B()}Cj(e,43692,4815);Z(114101,40535,4815,43692);B()}function Ds(a,b,c){var d=0,e=0,f=0;d=Ui-544|0;Ui=d;J[d+28>>2]=512;J[d+20>>2]=d+32;J[d+24>>2]=0;J[d+12>>2]=2270;J[d+8>>2]=2271;J[d+16>>2]=d+8;H[b|0]=0;a:{if(Pp(J[a>>2],J[a+4>>2])){e=dm(J[a>>2],J[a+4>>2]);if(e){break a}}e=nk(d+8|0,J[a>>2],J[a+4>>2])}ek(b,e?e:102358,c);zl(b,102681,c);e=J[a+16>>2];f=J[a+20>>2];if(e|f){zl(b,nk(d+8|0,e,f),c)}e=J[a+24>>2];a=J[a+28>>2];if(e|a){a=nk(d+8|0,e,a);zl(b,151693,c);zl(b,a,c)}Ui=d+544|0;return b}function Cw(a){var b=0;J[a>>2]=0;J[a+12>>2]=0;J[a+4>>2]=1;J[a+8>>2]=0;J[a+24>>2]=0;J[a+16>>2]=1;J[a+20>>2]=0;J[a+36>>2]=0;J[a+28>>2]=1;J[a+32>>2]=0;J[a+48>>2]=0;J[a+40>>2]=1;J[a+44>>2]=0;J[a+60>>2]=0;J[a+52>>2]=1;J[a+56>>2]=0;b=a- -64|0;J[b+8>>2]=0;J[b>>2]=1;J[b+4>>2]=0;J[a+84>>2]=0;J[a+76>>2]=1;J[a+80>>2]=0;J[a+120>>2]=0;J[a+112>>2]=0;J[a+116>>2]=0;J[a+104>>2]=0;J[a+108>>2]=0;J[a+96>>2]=0;J[a+100>>2]=0;J[a+88>>2]=0;J[a+92>>2]=0}function AV(a,b){var c=0,d=0;if((a|0)==14){return J[b>>2]?103413:93429}c=a&65535;d=a>>16;if(!((c|0)!=65535|(d|0)>5)){a=J[(d<<2)+b>>2];return a?a+8|0:99232}a=158859;a:{b:{c:{switch(d-1|0){case 0:if(c>>>0>1){break a}a=215840;break b;case 1:if(c>>>0>49){break a}a=215856;break b;case 4:break c;default:break a}}if(c>>>0>3){break a}a=216176}if(!c){return a}while(1){b=K[a|0];a=a+1|0;if(b){continue}c=c-1|0;if(c){continue}break}}return a}function _ha(a){a=a|0;var b=0,c=0,d=0,e=0,f=0;b=nj(68);J[b+4>>2]=0;J[b+8>>2]=0;J[b+60>>2]=0;J[b+64>>2]=0;J[b+52>>2]=0;J[b+56>>2]=0;J[b+44>>2]=0;J[b+48>>2]=0;J[b+36>>2]=0;J[b+40>>2]=0;J[b+28>>2]=0;J[b+32>>2]=0;J[b+20>>2]=0;J[b+24>>2]=0;d=b+12|0;J[d>>2]=0;J[d+4>>2]=0;e=J[a>>2];J[b>>2]=J[e>>2];c=J[a+16>>2];f=J[e+4>>2];c=c>>>0>>0?c:f;J[b+56>>2]=c;J[b+60>>2]=J[e+8>>2];lj(c,4,b+4|0,d,b+8|0);J[b+36>>2]=0;J[J[a+12>>2]>>2]=b;return 0}function Uca(a){a=a|0;var b=0,c=0,d=0,e=0;b=Ui-96|0;Ui=b;e=pj(b+76|0,a,0,42276,671);pk(a);c=b- -64|0;J[c>>2]=0;J[c+4>>2]=0;J[b+56>>2]=0;J[b+60>>2]=0;J[b+48>>2]=0;J[b+52>>2]=0;J[b+40>>2]=0;J[b+44>>2]=0;J[b+32>>2]=0;J[b+36>>2]=0;J[b+24>>2]=0;J[b+28>>2]=0;J[b+16>>2]=0;J[b+20>>2]=0;J[b+8>>2]=0;J[b+12>>2]=0;d=b+40|0;c=b+8|0;Sk(a,1,d,c);N[b+4>>2]=wj(a,2);a=J[57010];Jk(c,d,J[a+8>>2],J[a+12>>2],0,0,a,b+4|0,4,0);oj(e);Ui=b+96|0;return 0}function Sca(a){a=a|0;var b=0,c=0,d=0,e=0;b=Ui-96|0;Ui=b;e=pj(b+76|0,a,0,42276,709);pk(a);c=b- -64|0;J[c>>2]=0;J[c+4>>2]=0;J[b+56>>2]=0;J[b+60>>2]=0;J[b+48>>2]=0;J[b+52>>2]=0;J[b+40>>2]=0;J[b+44>>2]=0;J[b+32>>2]=0;J[b+36>>2]=0;J[b+24>>2]=0;J[b+28>>2]=0;J[b+16>>2]=0;J[b+20>>2]=0;J[b+8>>2]=0;J[b+12>>2]=0;d=b+40|0;c=b+8|0;Sk(a,1,d,c);N[b+4>>2]=wj(a,2);a=J[57026];Jk(c,d,J[a+8>>2],J[a+12>>2],0,0,a,b+4|0,4,0);oj(e);Ui=b+96|0;return 0}function Iz(a,b,c,d){var e=0,f=0,g=0;e=Ui-32|0;Ui=e;J[e+20>>2]=b;J[e+24>>2]=a;J[e+16>>2]=c;J[e+12>>2]=d;xp(a,b,c);a:{if(M[d>>2]>=M[c>>2]){break a}c=e+16|0;d=J[c>>2];f=J[d>>2];g=d;d=J[e+12>>2];J[g>>2]=J[d>>2];J[d>>2]=f;if(M[J[e+16>>2]>>2]>=M[b>>2]){break a}b=e+20|0;d=J[b>>2];f=J[d>>2];c=J[c>>2];J[d>>2]=J[c>>2];J[c>>2]=f;if(M[J[e+20>>2]>>2]>=M[a>>2]){break a}a=J[e+24>>2];c=J[a>>2];d=a;a=J[b>>2];J[d>>2]=J[a>>2];J[a>>2]=c}Ui=e+32|0}function iS(a){var b=0,c=0,d=0,e=0;b=Ui-32|0;Ui=b;c=ol(a,82700);a:{if(!c){a=0;break a}J[b+24>>2]=0;J[b+28>>2]=0;b:{if((Sl(b+24|0,1,8,c)|0)==8){a=0;ij(927968,0,50376);d=J[b+24>>2];e=J[b+28>>2];if(!((d|0)!=2|(e|0)!=50376)){a=1;if((Sl(927968,1,50376,c)|0)==50376){break b}a=0;dj(4,93475,123435,0);break b}J[b+8>>2]=2;J[b+12>>2]=50376;J[b+4>>2]=e;J[b>>2]=d;dj(3,93475,76838,b);break b}a=0;dj(4,93475,119840,0)}vk(c)}Ui=b+32|0;return a}function Wca(a){a=a|0;var b=0,c=0,d=0,e=0;b=Ui-96|0;Ui=b;e=pj(b+76|0,a,0,42276,636);pk(a);c=b- -64|0;J[c>>2]=0;J[c+4>>2]=0;J[b+56>>2]=0;J[b+60>>2]=0;J[b+48>>2]=0;J[b+52>>2]=0;J[b+40>>2]=0;J[b+44>>2]=0;J[b+32>>2]=0;J[b+36>>2]=0;J[b+24>>2]=0;J[b+28>>2]=0;J[b+16>>2]=0;J[b+20>>2]=0;J[b+8>>2]=0;J[b+12>>2]=0;d=b+40|0;c=b+8|0;Sk(a,1,d,c);H[b+7|0]=gp(a,2);a=J[56974];Jk(c,d,J[a+8>>2],J[a+12>>2],0,0,a,b+7|0,1,0);oj(e);Ui=b+96|0;return 0}function Hy(a,b){var c=0,d=0,e=0;a:{b:{c=b>>>16&32767;if((c|0)!=32767){b=J[a+1036>>2];d=J[a+1040>>2];while(1){if(d-b>>2>>>0<=c>>>0){break a}e=c<<2;b=J[e+b>>2];Hy(a,J[b+148>>2]);if(!K[b+136|0]){break b}kt(a,b);H[b+136|0]=J[b+136>>2]-1;Ly(a,b);d=J[a+1040>>2];b=J[a+1036>>2];if(d-b>>2>>>0<=c>>>0){break a}c=J[J[b+e>>2]+148>>2]&32767;if((c|0)!=32767){continue}break}}return}Z(112255,38296,1264,43685);B()}Z(145396,53895,487,84789);B()}function zr(a){var b=0,c=0,d=0;a:{b=J[a+4>>2];d=J[a>>2];if((b|0)!=(d|0)){b=b-d>>2;d=b>>>0<=1?1:b;b=0;while(1){c=J[a>>2];if(J[a+4>>2]-c>>2>>>0<=b>>>0){break a}c=J[c+(b<<2)>>2];if(c){Uu(c)}b=b+1|0;if((d|0)!=(b|0)){continue}break}}Jx(J[a+48>>2]);b:{if(H[a+44|0]&1){break b}b=J[a+24>>2];if(b){cj(b)}b=J[a+16>>2];if(!b){break b}cj(b)}c:{if(H[a+12|0]&1){break c}b=J[a>>2];if(!b){break c}cj(b)}cj(a);return}Z(145396,53895,487,84789);B()}function z1(a){a=a|0;var b=0,c=0,d=0,e=0,f=0;b=Ui-32|0;Ui=b;d=b+24|0;J[d>>2]=0;J[d+4>>2]=0;J[b+16>>2]=0;J[b+20>>2]=0;e=1;c=b+16|0;f=c|4;lj(32768,1,c,d,f);a:{c=sJ(Aj(a,1,0),fl(a,1),c,1853);b:{if(!c){c=a;a=J[b+16>>2];mj(c,a,J[b+20>>2]-a|0);break b}if(H[b+28|0]&1){break a}e=0;lj(0,1,b+16|0,d,f);J[b>>2]=c;fj(a,140694,b)}c:{if(H[b+28|0]&1){break c}a=J[b+16>>2];if(!a){break c}cj(a)}Ui=b+32|0;return e|0}Z(151729,53895,501,2284);B()} +function n4(a){a=a|0;var b=0,c=0,d=Q(0),e=Q(0),f=Q(0),g=Q(0);c=Ui-48|0;Ui=c;b=qj(a,1,J[215722],0);e=N[b+8>>2];f=N[b>>2];g=N[b+4>>2];a:{if(!(f!=f|g!=g|e!=e)){d=N[b+12>>2];if(d==d){break a}}d=N[b+12>>2];O[c+24>>3]=e;O[c+16>>3]=g;O[c+32>>3]=d;O[c+8>>3]=f;J[c>>2]=1;fj(a,138526,c);d=N[b+12>>2];e=N[b+8>>2];g=N[b+4>>2];f=N[b>>2]}b=Sj(a,16);N[b+12>>2]=d;N[b+8>>2]=-e;N[b+4>>2]=-g;N[b>>2]=-f;rj(a,-1e4,16786);Mj(a,-2);Ui=c+48|0;return 1}function QZ(a){a=a|0;var b=0,c=0,d=0,e=0,f=0,g=0;A(.5);c=v(1)|0;f=v(0)|0;d=wj(a,1);A(+d);g=v(1)|0;v(0)|0;x(0,f|0);x(1,c&2147483647|g&-2147483648);e=+z();b=R(d);A(+b);c=v(1)|0;v(0)|0;a:{if((c|0)==1082535489|c>>>0<1082535489){b=su(b);if((c|0)==1072693247|c>>>0<1072693247){if(c>>>0<1045430272){break a}d=e*(b+b-b*b/(b+1));break a}d=e*(b+b/(b+1));break a}d=JV(b,e+e)}c=J[a+8>>2];J[c+8>>2]=3;O[c>>3]=d;J[a+8>>2]=J[a+8>>2]+16;return 1}function y2(a){a=a|0;var b=0,c=0,d=0,e=0,f=0,g=0;f=J[a+8>>2]-J[a+12>>2]>>4;d=Ej(a,1);c=ux(a);b=qx(c,d&65535);a:{if(!b|J[b+12>>2]!=(d|0)){break a}e=K[b+28|0];if(!(e&2)){break a}H[b+28|0]=e&253;Zi[J[b>>2]](c,2,d,Q(0),J[b+4>>2],J[b+8>>2]);g=1;if(H[c+82|0]&1){break a}GB(c,b);I[c+80>>1]=L[c+80>>1]+1}b=J[a+8>>2];J[b+8>>2]=1;J[b>>2]=g;J[a+8>>2]=J[a+8>>2]+16;if((f+1|0)!=J[a+8>>2]-J[a+12>>2]>>4){Z(143334,39844,672,49959);B()}return 1}function a2(a){a=a|0;var b=0,c=0,d=Q(0),e=Q(0),f=Q(0),g=0,h=0,i=0;b=Ui-80|0;Ui=b;J[b+76>>2]=0;i=Aj(a,1,b+76|0);c=qj(a,2,J[215720],0);d=N[c+8>>2];f=N[c>>2];e=N[c+4>>2];if(!(!(f!=f|e!=e)&d==d)){O[b+56>>3]=d;O[b+48>>3]=e;J[b+32>>2]=2;O[b+40>>3]=f;fj(a,138436,b+32|0)}g=J[b+76>>2]+77|0;h=nj((g|0)<0?-1:g);d=N[c>>2];e=N[c+4>>2];O[b+24>>3]=N[c+8>>2];O[b+16>>3]=e;J[b>>2]=i;O[b+8>>3]=d;Gj(h,g,138064,b);xj(a,h);cj(h);Ui=b+80|0;return 1}function nt(a,b,c,d,e){var f=0,g=0,h=0,i=0;i=3;a:{b:{if(a+1>>>0<2){break b}g=a&65535;f=J[216330];if(g>>>0>=M[f+8>>2]){break a}h=J[J[f>>2]+(g<<2)>>2];if(!h|L[J[f+4>>2]+(g<<1)>>1]!=(a>>>16|0)){break b}i=6;g=K[h+34|0];if(!g){break b}h=J[h+4>>2];a=0;while(1){f=h+(a<<4)|0;if(J[f>>2]!=(b|0)|(c|0)!=J[f+4>>2]){a=a+1|0;if((g|0)!=(a|0)){continue}break b}break}J[d>>2]=K[f+12|0];J[e>>2]=K[f+13|0];i=0}return i}Z(2686,54230,244,5438);B()}function Y1(a){a=a|0;var b=0,c=Q(0),d=0,e=Q(0),f=Q(0),g=0,h=Q(0);d=Ui-32|0;Ui=d;b=Kk(a,1,J[215720]);a:{if(b){g=wj(a,2);break a}g=wj(a,1);b=qj(a,2,J[215720],0);c=N[b+8>>2];e=N[b>>2];f=N[b+4>>2];if(!(e!=e|f!=f)&c==c){break a}O[d+24>>3]=c;O[d+16>>3]=f;J[d>>2]=2;O[d+8>>3]=e;fj(a,138436,d)}c=N[b+8>>2];f=N[b>>2];e=N[b+4>>2];b=Sj(a,16);h=c;c=Q(g);N[b+8>>2]=h*c;N[b+4>>2]=e*c;N[b>>2]=f*c;rj(a,-1e4,108973);Mj(a,-2);Ui=d+32|0;return 1}function Wna(a){a=a|0;var b=0;a=J[a+4>>2];if(!a){return-1e3}a:{if(H[a+104|0]&1){break a}b=J[a+84>>2];if(b){cj(b)}b=J[a+76>>2];if(!b){break a}cj(b)}b:{if(H[a+72|0]&1){break b}b=J[a+52>>2];if(b){cj(b)}b=J[a+44>>2];if(!b){break b}cj(b)}c:{if(H[a+40|0]&1){break c}b=J[a+32>>2];if(!b){break c}cj(b)}d:{if(H[a+28|0]&1){break d}b=J[a+16>>2];if(!b){break d}cj(b)}e:{if(H[a+12|0]&1){break e}b=J[a>>2];if(!b){break e}cj(b)}cj(a);return 0}function Uoa(a,b,c){a=a|0;b=b|0;c=c|0;var d=0,e=0,f=0,g=0,h=0,i=0;c=Ui-384|0;Ui=c;Dp(c,b);Dp(a+128|0,b+8|0);b=0;while(1){d=b<<2;f=J[(30-b<<2)+c>>2];J[d+a>>2]=f;g=d|4;h=J[(31-b<<2)+c>>2];J[g+a>>2]=h;e=c+d|0;J[e+128>>2]=J[(62-b<<2)+a>>2];J[e+132>>2]=J[(63-b<<2)+a>>2];i=d|256;J[i+c>>2]=J[e>>2];d=d|260;J[d+c>>2]=J[c+g>>2];J[a+i>>2]=f;J[a+d>>2]=h;d=b>>>0<30;b=b+2|0;if(d){continue}break}Zi[J[66509]](c,0,384)|0;Ui=c+384|0;return 0}function Toa(a,b,c){a=a|0;b=b|0;c=c|0;var d=0,e=0,f=0,g=0,h=0,i=0;c=Ui-384|0;Ui=c;Dp(a,b);Dp(c+128|0,b+8|0);b=0;while(1){d=b<<2;f=J[(30-b<<2)+a>>2];J[d+c>>2]=f;g=d|4;h=J[(31-b<<2)+a>>2];J[g+c>>2]=h;e=a+d|0;J[e+128>>2]=J[(62-b<<2)+c>>2];J[e+132>>2]=J[(63-b<<2)+c>>2];i=d|256;J[i+a>>2]=J[e>>2];d=d|260;J[d+a>>2]=J[a+g>>2];J[c+i>>2]=f;J[c+d>>2]=h;d=b>>>0<30;b=b+2|0;if(d){continue}break}Zi[J[66509]](c,0,384)|0;Ui=c+384|0;return 0}function OW(a,b,c,d,e){a=a|0;b=b|0;c=c|0;d=d|0;e=e|0;var f=0,g=0,h=0;c=1;e=K[b|0];if((d|0)==1){H[a|0]=e;H[a+1|0]=e;return a|0}H[a|0]=e;H[a+1|0]=(K[b+1|0]+P(e,3)|0)+2>>>2;e=d-1|0;if((d|0)>=3){while(1){f=(c<<1)+a|0;g=b+c|0;h=P(K[g|0],3)+2|0;H[f|0]=h+K[g-1|0]>>>2;c=c+1|0;H[f+1|0]=K[c+b|0]+h>>>2;if((c|0)!=(e|0)){continue}break}c=e<<1}else{c=2}c=c+a|0;e=b+e|0;H[c|0]=(K[e|0]+P(K[(b+d|0)-2|0],3)|0)+2>>>2;H[c+1|0]=K[e|0];return a|0}function YP(a,b,c,d){var e=0,f=0,g=0,h=0,i=0,j=0;i=qr(a,c,d);if(!i){return-3}e=J[b>>2];Tj(J[e+3232>>2]);a:{b:{b=J[e+3196>>2];f=J[e+3192>>2];if((b|0)!=(f|0)){while(1){g=(h<<3)+f|0;if(J[g>>2]==(c|0)&J[g+4>>2]==(d|0)){b=b-8|0;j=J[b+4>>2];J[g>>2]=J[b>>2];J[g+4>>2]=j;J[e+3196>>2]=b;if(b>>>0>>0){break b}}h=h+1|0;if(h>>>0>3>>>0){continue}break}}Lj(J[e+3232>>2]);break a}Z(12682,53895,540,43537);B()}vj(a,J[i+8>>2]);return 0}function Fl(a){var b=0,c=0,d=0,e=0;d=Ui-32|0;Ui=d;b=J[a>>2];pj(d+12|0,b,0,37704,1644);c=J[a+4>>2];a:{if((c|0)!=-2){Nj(b,-1e4,c);b:{if((kj(b,-1)|0)!=5){break b}Fp(b,-1,J[a+16>>2]);Fp(b,-1,J[a+12>>2]);e=J[a+8>>2];if((e|0)==-2){break b}c=J[84548];if((c|0)<=0){dj(4,86858,57703,0);c=J[84548]}J[84548]=c-1;Fp(b,-1e4,e)}J[a+12>>2]=-2;J[a+16>>2]=-2;J[a+4>>2]=-2;J[a+8>>2]=-2;gj(b,-2);break a}dj(3,86858,139538,0)}oj(d+12|0);Ui=d+32|0}function sQ(a){var b=0;b=J[a+12>>2];if(b){cj(b)}b=J[a+16>>2];if(b){cj(b)}b=J[a+20>>2];if(b){cj(b)}b=J[a+24>>2];if(b){cj(b)}b=J[a+28>>2];if(b){cj(b)}b=J[a+32>>2];if(b){cj(b)}b=J[a+36>>2];if(b){cj(b)}b=J[a+40>>2];if(b){cj(b)}b=J[a+44>>2];if(b){cj(b)}b=J[a+48>>2];if(b){cj(b)}b=J[a+52>>2];if(b){cj(b)}b=J[a+56>>2];if(b){cj(b)}b=J[a+60>>2];if(b){cj(b)}b=J[a+64>>2];if(b){cj(b)}b=J[a+68>>2];if(b){cj(b)}b=J[a>>2];if(b){cj(b)}cj(a)}function Sj(a,b){var c=0,d=0,e=0;c=J[a+16>>2];if(M[c+68>>2]>=M[c+64>>2]){Om(a)}c=J[a+20>>2];if((c|0)==J[a+40>>2]){c=a+72|0}else{c=J[J[c+4>>2]>>2]+12|0}d=J[c>>2];if(b>>>0>=4294967262){Dl(a)}c=lk(a,0,0,b+32|0);e=K[J[a+16>>2]+20|0];J[c+16>>2]=b;H[c+4|0]=7;J[c+12>>2]=d;J[c+8>>2]=0;H[c+5|0]=e&3;J[c>>2]=J[J[J[a+16>>2]+112>>2]>>2];J[J[J[a+16>>2]+112>>2]>>2]=c;b=J[a+8>>2];J[b+8>>2]=7;J[b>>2]=c;J[a+8>>2]=J[a+8>>2]+16;return c+32|0}function nma(a){a=a|0;var b=0,c=0,d=0,e=0,f=0;c=Ui-32|0;Ui=c;f=pj(c+12|0,a,0,36839,121);b=qj(a,1,J[79308],3640);d=J[b+8>>2];e=J[b+12>>2];a:{if(!(d|e)){break a}if(xk(J[b+4>>2],d,e)){break a}J[c>>2]=tj(J[b+8>>2],J[b+12>>2]);fj(a,102051,c)}b=J[b>>2];Rn(c+4|0,a,2,N[59873]);if(J[b>>2]==2){a=L[b+4>>1];if(!(a&2)){J[b+144>>2]=0;I[b+4>>1]=a|2}N[b+76>>2]=N[c+4>>2]+N[b+76>>2];N[b+80>>2]=N[c+8>>2]+N[b+80>>2]}oj(f);Ui=c+32|0;return 0}function _K(a,b,c,d){var e=0,f=0,g=0,h=0,i=0;a:{e=J[a+4>>2];f=J[a>>2];b:{if((e|0)==(f|0)){break b}e=(e-f|0)/40|0;i=e>>>0<=1?1:e;f=0;while(1){g=J[a+4>>2];e=J[a>>2];if((g-e|0)/40>>>0<=f>>>0){break a}c:{h=J[P(f,40)+e>>2];if((b|0)==J[h+8>>2]&J[h+12>>2]==(c|0)){if((g-e|0)/40>>>0>f>>>0){break c}break a}f=f+1|0;if((i|0)!=(f|0)){continue}break b}break}if(!e){break b}J[J[e+P(f,40)>>2]+16>>2]=d}return}Z(145396,53895,494,84789);B()}function vW(a){a=a|0;var b=0,c=0;b=Ui-32|0;Ui=b;c=wj(a,1);c=c<0?0:c;c=c>2147483647?2147483647:c;a:{if(R(c)<2147483648){a=~~c;break a}a=-2147483648}J[b+16>>2]=a;J[b+20>>2]=a>>31;c=(c-+(a|0))*1e9;b:{if(R(c)<2147483648){a=~~c;break b}a=-2147483648}J[b+24>>2]=(a|0)>=999999999?999999999:a;if(gA(b+16|0)){while(1){a=J[b+4>>2];J[b+16>>2]=J[b>>2];J[b+20>>2]=a;J[b+24>>2]=J[b+8>>2];if(gA(b+16|0)){continue}break}}Ui=b+32|0;return 0}function pL(a,b,c,d){var e=0,f=0,g=0,h=0,i=0;e=J[a+4>>2];f=J[a>>2];if((e|0)==(f|0)){return 0}e=(e-f|0)/40|0;i=e>>>0<=1?1:e;f=0;a:{b:{while(1){g=J[a+4>>2];e=J[a>>2];if((g-e|0)/40>>>0<=f>>>0){break a}h=J[P(f,40)+e>>2];if((b|0)==J[h+8>>2]&J[h+12>>2]==(c|0)){if((g-e|0)/40>>>0>f>>>0){break b}break a}f=f+1|0;if((i|0)!=(f|0)){continue}break}return 0}if(!e){return 0}J[d>>2]=J[e+P(f,40)>>2];return 1}Z(145396,53895,494,84789);B()}function a5(a,b,c,d,e,f){a=a|0;b=b|0;c=c|0;d=d|0;e=e|0;f=f|0;var g=0,h=0;d=-2;g=J[a+2200>>2];a:{if(!g){break a}g=J[J[a+2196>>2]+(mxa(b,c,g)<<2)>>2];if((g|0)==-1){break a}h=J[a+2204>>2];while(1){g=h+P(g,24)|0;if(J[g>>2]!=(b|0)|J[g+4>>2]!=(c|0)){g=J[g+16>>2];if((g|0)!=-1){continue}break a}break}d=-4;c=J[g+12>>2];b=J[c+4>>2];if((b<<24|(b&65280)<<8|(b>>>8&65280|b>>>24))>>>0>f>>>0){break a}CK(J[a+2192>>2],c,e);d=0}return d|0}function Tw(a,b,c){var d=0,e=0,f=0,g=0,h=0;d=Ui-48|0;Ui=d;J[d+44>>2]=0;g=J[(J[b+8>>2]<<2)+257632>>2];f=J[a+20>>2];h=J[f+8>>2];a:{b:{e=J[f>>2];if(h>>>0<=e>>>0){break b}while(1){if((b|0)!=(e|0)){e=e+16|0;if(h>>>0>e>>>0){continue}break b}break}b=Zw(a,f,b-J[a+12>>2]>>4,d+44|0);if(!b){break b}J[d+16>>2]=c;J[d+20>>2]=b;J[d+24>>2]=J[d+44>>2];J[d+28>>2]=g;xl(a,138999,d+16|0);break a}J[d+4>>2]=g;J[d>>2]=c;xl(a,60935,d)}Ui=d+48|0}function vw(a,b){var c=0,d=0,e=0,f=0,g=0,h=0,i=0;J[a>>2]=0;J[a+4>>2]=0;J[a+104>>2]=b;a:{if(!b){c=-1694144372;d=1359893119;e=-1521486534;f=1013904242;g=-1150833019;h=1779033703;i=1541459225;b=528734635;break a}c=1750603025;d=-4191439;e=-150054599;f=812702999;g=914150663;h=-1056596264;i=-1090891868;b=1694076839}J[a+36>>2]=i;J[a+32>>2]=b;J[a+28>>2]=c;J[a+24>>2]=d;J[a+20>>2]=e;J[a+16>>2]=f;J[a+12>>2]=g;J[a+8>>2]=h;return 0}function tM(a,b){var c=0,d=0;a:{b:{if(!b){a=0;break b}c=b&65535;d=J[a+4>>2];a=J[a>>2];if(c>>>0>=d-a>>2>>>0){break a}a=J[a+(c<<2)>>2];if(L[a+80>>1]==(b>>>16|0)){break b}a=0;dj(4,96107,66969,0)}b=J[a+4>>2];c=J[a>>2];if((b|0)!=(c|0)){b=(b-c|0)/304|0;c=b>>>0<=1?1:b;b=0;while(1){d=J[a>>2];if((J[a+4>>2]-d|0)/304>>>0<=b>>>0){break a}uM(P(b,304)+d|0);b=b+1|0;if((c|0)!=(b|0)){continue}break}}return}Z(145396,53895,487,84789);B()}function Wda(a){a=a|0;var b=0,c=0,d=0,e=0,f=0;b=nj(24);J[b>>2]=0;J[b+4>>2]=0;J[b+16>>2]=0;J[b+20>>2]=0;J[b+8>>2]=0;J[b+12>>2]=0;J[b>>2]=J[a+24>>2];c=_Q(J[a>>2],b);if(!c){J[J[a+28>>2]+8>>2]=b;return c|0}e=J[a>>2];a=J[b>>2];if(a){Uj(a)}a=J[b+4>>2];if(a){vj(e,a)}d=J[b+20>>2];if(d){a=0;while(1){f=J[(J[b+16>>2]+(a<<4)|0)+8>>2];if(f){vj(e,f);d=J[b+20>>2]}a=a+1|0;if(d>>>0>a>>>0){continue}break}}cj(J[b+16>>2]);cj(b);return c|0}function fm(a,b,c,d){var e=0,f=0;a:{b:{c:{if((d|0)<12){e=c&65535;f=J[b+36>>2];b=J[b+32>>2];if(e>>>0>=(f-b|0)/672>>>0){break c}b=b+P(e,672)|0;if(L[b+648>>1]!=(c>>>16|0)){break b}if(L[b+650>>1]!=(e|0)){break a}b=b+(d<<4)|0;N[a>>2]=N[b>>2];N[a+4>>2]=N[b+4>>2];N[a+8>>2]=N[b+8>>2];N[a+12>>2]=N[b+12>>2];return}Z(86871,40876,2839,1495);B()}Z(145396,53895,487,84789);B()}Z(47372,40876,188,69601);B()}Z(5388,40876,189,69601);B()}function fea(a){a=a|0;var b=0,c=0,d=0,e=0;e=Ui-16|0;Ui=e;c=-2;a:{if(dk(J[a+20>>2],J[a+24>>2],265920,e+12|0,0)){break a}c=J[a>>2];d=J[J[a+36>>2]+8>>2];b=J[d+16>>2];if(b){Uj(b)}b=J[d+32>>2];if(b){vj(c,b)}b=J[d+20>>2];if(b){vj(c,b)}b=J[d+28>>2];if(b){vj(c,b)}b=J[d+24>>2];if(b){vj(c,b)}J[d+16>>2]=J[e+12>>2];c=$Q(J[a>>2],d,1);if(c){break a}J[J[a+36>>2]+16>>2]=(J[d+8>>2]+(J[a+24>>2]-J[d>>2]|0)|0)+36;c=0}Ui=e+16|0;return c|0}function dma(a){a=a|0;var b=0,c=Q(0),d=0,e=0,f=0,g=0,h=Q(0);d=Ui-32|0;Ui=d;g=pj(d+12|0,a,1,36839,164);b=qj(a,1,J[79308],3640);e=J[b+8>>2];f=J[b+12>>2];a:{if(!(e|f)){break a}if(xk(J[b+4>>2],e,f)){break a}J[d>>2]=tj(J[b+8>>2],J[b+12>>2]);fj(a,102051,d)}b=J[b>>2];c=N[b+28>>2];h=Q(c*c);c=N[b+32>>2];c=Q(Q(N[b+116>>2]*Q(h+Q(c*c)))+N[b+124>>2]);b=J[a+8>>2];J[b+8>>2]=3;O[b>>3]=c;J[a+8>>2]=J[a+8>>2]+16;oj(g);Ui=d+32|0;return 1}function Sw(a,b,c){var d=0,e=0,f=0,g=0;e=Ui-16|0;Ui=e;a:{b:{c:{d=c-1|0;if(d>>>0>2]){d=J[b+12>>2]+(d<<4)|0;break c}f=+(c|0);if(c){g=J[b+16>>2];A(+f);d=v(1)|0;d=d+(v(0)|0)|0;d=((d>>>0)%((-1<>>0)<<5)+g|0}else{d=J[b+16>>2]}while(1){if(J[d+24>>2]==3&O[d+16>>3]==f){break c}d=J[d+28>>2];if(d){continue}break}break b}if((d|0)!=173288){break a}f=+(c|0)}J[e+8>>2]=3;O[e>>3]=f;d=Rt(a,b,e)}Ui=e+16|0;return d}function tla(a){a=a|0;var b=0,c=0,d=0,e=0;b=Ui-96|0;Ui=b;e=pj(b+76|0,a,0,42815,54);pk(a);c=b- -64|0;J[c>>2]=0;J[c+4>>2]=0;J[b+56>>2]=0;J[b+60>>2]=0;J[b+48>>2]=0;J[b+52>>2]=0;J[b+40>>2]=0;J[b+44>>2]=0;J[b+32>>2]=0;J[b+36>>2]=0;J[b+24>>2]=0;J[b+28>>2]=0;J[b+16>>2]=0;J[b+20>>2]=0;J[b+8>>2]=0;J[b+12>>2]=0;d=a;a=b+40|0;c=b+8|0;Sk(d,1,a,c);d=a;a=J[56613];Jk(c,d,J[a+8>>2],J[a+12>>2],0,0,a,b+7|0,1,0);oj(e);Ui=b+96|0;return 0}function sla(a){a=a|0;var b=0,c=0,d=0,e=0;b=Ui-96|0;Ui=b;e=pj(b+76|0,a,0,42815,77);pk(a);c=b- -64|0;J[c>>2]=0;J[c+4>>2]=0;J[b+56>>2]=0;J[b+60>>2]=0;J[b+48>>2]=0;J[b+52>>2]=0;J[b+40>>2]=0;J[b+44>>2]=0;J[b+32>>2]=0;J[b+36>>2]=0;J[b+24>>2]=0;J[b+28>>2]=0;J[b+16>>2]=0;J[b+20>>2]=0;J[b+8>>2]=0;J[b+12>>2]=0;d=a;a=b+40|0;c=b+8|0;Sk(d,1,a,c);d=a;a=J[56614];Jk(c,d,J[a+8>>2],J[a+12>>2],0,0,a,b+7|0,1,0);oj(e);Ui=b+96|0;return 0}function iI(a,b){var c=0,d=0,e=0,f=0;Fj(a,0,0);e=1;d=J[a+8>>2];f=d-J[a+12>>2]>>4;J[d+8>>2]=3;O[d>>3]=1;J[a+8>>2]=J[a+8>>2]+16;Ck(a,b);if(kj(a,-1)){d=1;while(1){c=J[a+8>>2];J[c+8>>2]=3;O[c>>3]=e;J[a+8>>2]=J[a+8>>2]+16;uj(a,-2);Kj(a,f);c=J[a+8>>2];J[c+8>>2]=3;O[c>>3]=e;J[a+8>>2]=J[a+8>>2]+16;Kj(a,f);c=J[a+8>>2];J[c+8>>2]=3;d=d+1|0;e=+(d>>>0);O[c>>3]=e;J[a+8>>2]=J[a+8>>2]+16;Ck(a,b);if(kj(a,-1)){continue}break}}gj(a,-2)}function fA(a){var b=0,c=0,d=0;a:{b:{if(!J[a+1396>>2]){b=J[a+1392>>2];if((b|0)==-1){J[a+1400>>2]=J[a+1128>>2]-1;if(!Qo(a)){J[a+1396>>2]=1;return 0}if(!(H[a+1387|0]&1)){break b}b=J[a+1392>>2]}d=b+1|0;J[a+1392>>2]=d;c=K[(a+b|0)+1132|0];if((c|0)!=255){J[a+1400>>2]=b;J[a+1396>>2]=1}if(J[a+1128>>2]<=(d|0)){J[a+1392>>2]=-1}if(K[a+1388|0]){break a}H[a+1388|0]=c}return c}J[a+112>>2]=32;return 0}Z(113014,82607,1555,13887);B()}function xha(a){a=a|0;var b=0,c=0,d=0,e=0,f=0;d=Ui-32|0;Ui=d;f=J[a+8>>2]-J[a+12>>2]>>4;b=mk(a,1);a:{c=Xp(a,J[78228],b,Yi,81654);b:{if(!lo(J[c+4>>2])){a=fj(a,72312,0);break b}Ns(J[78228],c);e=J[78228];b=d+8|0;I[b+16>>1]=65535;J[b+8>>2]=0;J[b+12>>2]=0;J[b+4>>2]=2;J[b>>2]=c;if(e){I[b+16>>1]=Ax(e,c);hp(e,c,b+8|0)}Gs(a,b);if((f+1|0)!=J[a+8>>2]-J[a+12>>2]>>4){break a}a=1}Ui=d+32|0;return a|0}Z(143334,42133,3078,35146);B()}function n3(a){a=a|0;var b=0,c=Q(0),d=0,e=Q(0),f=Q(0),g=Q(0),h=Q(0),i=0;d=Ui-32|0;Ui=d;b=qj(a,1,J[215720],0);c=N[b+8>>2];e=N[b>>2];f=N[b+4>>2];if(!(!(e!=e|f!=f)&c==c)){O[d+24>>3]=c;O[d+16>>3]=f;J[d>>2]=1;O[d+8>>3]=e;fj(a,138436,d)}i=wj(a,2);f=N[b>>2];e=N[b+4>>2];c=N[b+8>>2];h=Q(Q(i)*Q(.5));g=Rj(h);b=Sj(a,16);N[b+12>>2]=g;g=c;c=Hj(h);N[b+8>>2]=g*c;N[b+4>>2]=e*c;N[b>>2]=f*c;rj(a,-1e4,16786);Mj(a,-2);Ui=d+32|0;return 1}function Ez(a){var b=0,c=0,d=0,e=0;c=53;e=J[a+24>>2];b=J[a+28>>2];d=e-b|0;b=(((b-((e+6>>>0)%7|0)|0)+7>>>0)/7|0)+((d+369>>>0)%7>>>0<3)|0;a:{if((b|0)!=53){c=b;if(b){break a}c=52;b:{switch(((d+6>>>0)%7|0)-4|0){case 1:if(!QI((J[a+20>>2]%400|0)-1|0)){break a}break;case 0:break b;default:break a}}return 53}c:{switch(((d+371>>>0)%7|0)-3|0){case 0:if(QI(J[a+20>>2])){break a}break;case 1:break a;default:break c}}c=1}return c}function iga(a){a=a|0;var b=0,c=0,d=0;b=Ui+-64|0;Ui=b;d=pj(b+12|0,a,0,39481,1170);c=J[J[pk(a)+80>>2]+8>>2];J[b+8>>2]=0;J[b+4>>2]=0;J[b+56>>2]=0;J[b+60>>2]=0;J[b+48>>2]=0;J[b+52>>2]=0;J[b+40>>2]=0;J[b+44>>2]=0;J[b+32>>2]=0;J[b+36>>2]=0;Al(a,1,c,80935,b+8|0,b+32|0,b+4|0);a=J[J[b+8>>2]+8>>2];a:{if(H[J[b+4>>2]+145|0]&1){Gr(J[a>>2],1);break a}c=L[a+4>>1];if(!(c&2)){J[a+144>>2]=0;I[a+4>>1]=c|2}}oj(d);Ui=b- -64|0;return 0}function Jda(a){a=a|0;var b=0,c=0;b=nj(44);J[b>>2]=0;J[b+4>>2]=0;J[b+40>>2]=0;J[b+32>>2]=0;J[b+36>>2]=0;J[b+24>>2]=0;J[b+28>>2]=0;J[b+16>>2]=0;J[b+20>>2]=0;J[b+8>>2]=0;J[b+12>>2]=0;c=QQ(J[J[a+4>>2]>>2],J[a>>2],J[a+24>>2],b,0);if(!c){J[J[a+28>>2]+8>>2]=b;J[J[a+28>>2]+16>>2]=(J[b+16>>2]+(J[a+16>>2]-J[b+8>>2]|0)|0)+44;return c|0}oy(J[a>>2],b);a:{if(H[b+20|0]&1){break a}a=J[b+8>>2];if(!a){break a}cj(a)}cj(b);return c|0}function Iy(a,b,c,d){var e=0,f=0;e=Ui-16|0;Ui=e;Oj(a,b,5);uj(a,b);rj(a,-1,3612);if(kj(a,-1)){J[c>>2]=mk(a,-1);J[c+4>>2]=Yi;H[c+8|0]=K[c+8|0]|1}gj(a,-2);rj(a,-1,5432);a:{b:{if(!kj(a,-1)){break b}if(H[c+8|0]&1){a=fj(a,133955,0);break a}if(!kk(a,-1)){a=fj(a,125842,0);break a}f=c;b=Ej(a,-1);c=b-1|0;J[f>>2]=c;if((b|0)<=0){J[e>>2]=c;a=fj(a,132964,e);break a}if(!d){break b}H[d|0]=1}gj(a,-2);gj(a,-2);a=0}Ui=e+16|0;return a}function rfa(a){a=a|0;var b=0,c=0,d=0,e=0,f=0;e=-13;b=J[a+4>>2];c=J[a+24>>2];a:{if(!Jq(J[a>>2],J[b+4>>2],c)){break a}f=J[b>>2];d=J[f>>2];b=Sj(d,36);J[b+16>>2]=-2;J[b+20>>2]=-2;J[b+8>>2]=-2;J[b+12>>2]=-2;J[b>>2]=-2;J[b+4>>2]=-2;J[b+28>>2]=0;J[b+32>>2]=-2;J[b+24>>2]=f;rj(d,-1e4,10578);Mj(d,-2);J[b+32>>2]=Lk(d,-1e4);if(UN(b,c)){break a}J[J[a+28>>2]+8>>2]=b;J[J[a+28>>2]+16>>2]=J[a+16>>2]-J[c+4>>2];e=0}Uj(c);return e|0}function gM(a){var b=0,c=0,d=0,e=0,f=0;d=Ui-16|0;Ui=d;b=J[a+4>>2];c=J[a>>2];a:{if((b|0)==(c|0)){break a}J[d>>2]=b-c>>2;dj(3,89293,128220,d);b=J[a>>2];e=J[a+4>>2];if((b|0)==(e|0)){break a}c=0;while(1){f=J[(c<<2)+b>>2];if(f){FL(f);cj(f);e=J[a+4>>2];b=J[a>>2]}c=c+1|0;if(c>>>0>2>>>0){continue}break}}b=J[a+64>>2];c=J[a+68>>2];if(b|c){Eo(b,c)}b:{if(H[a+12|0]&1){break b}b=J[a>>2];if(!b){break b}cj(b)}cj(a);Ui=d+16|0}function e0(a,b,c){a=a|0;b=b|0;c=c|0;var d=0,e=0,f=0,g=0,h=0,i=0,j=0,k=0;g=-24832;a:{if(!a|!c){break a}g=0;J[c>>2]=0;if(!b){break a}f=a-1|0;j=b&1;b:{if((b|0)==1){a=0;break b}k=b&-2;a=0;while(1){e=d;d=K[b+f|0]!=0|a;h=e|((d|0)!=(a|0)?b:0);J[c>>2]=h;e=b-1|0;a=d|K[e+f|0]!=0;d=((a|0)!=(d|0)?e:0)|h;J[c>>2]=d;b=b-2|0;i=i+2|0;if((k|0)!=(i|0)){continue}break}}if(!j){break a}J[c>>2]=((K[b+f|0]!=0|a)!=(a|0)?b:0)|d}return g|0}function dfa(a){a=a|0;var b=0,c=0,d=0,e=0,f=0;d=Ui-16|0;Ui=d;c=J[J[a+36>>2]+8>>2];b=-13;a:{if(dk(J[a+20>>2],J[a+24>>2],J[62660],d+12|0,0)){break a}b=YQ(J[a>>2],J[a+4>>2],J[d+12>>2],c,J[a+16>>2]);if(b){break a}e=J[c+64>>2];f=J[c+72>>2];b=J[c+4>>2];J[J[a+36>>2]+16>>2]=((((J[c+40>>2]-J[c+32>>2]|0)/12<<2)+(P(J[b+172>>2],48)+(Zi[J[79459]](J[b+8>>2],J[b+12>>2])|0)|0)|0)+P((f-e|0)/12|0,24)|0)+328;b=0}Ui=d+16|0;return b|0}function NZ(a){a=a|0;var b=0,c=0,d=0;d=wj(a,1);b=R(d);A(+b);c=v(1)|0;v(0)|0;a:{if((c|0)==1071748075|c>>>0>1071748075){if((c|0)==1077149697|c>>>0>1077149697){b=-0/b+1;break a}b=1-2/(su(b+b)+2);break a}if((c|0)==1070618799|c>>>0>1070618799){b=su(b+b);b=b/(b+2);break a}if(c>>>0<1048576){break a}b=su(b*-2);b=-b/(b+2)}A(+d);c=v(1)|0;v(0)|0;b=(c|0)<0?-b:b;c=J[a+8>>2];J[c+8>>2]=3;O[c>>3]=b;J[a+8>>2]=J[a+8>>2]+16;return 1}function fba(a,b){a=a|0;b=b|0;var c=0,d=0,e=0,f=0,g=0,h=0,i=0;a=0;e=ij(nj(216),0,216);if(K[b+196|0]){while(1){f=P(i,24);g=f+b|0;h=J[g>>2];d=J[g+4>>2];c=e+f|0;I[c+8>>1]=65535;J[c>>2]=h;J[c+4>>2]=d;f=J[g+12>>2];I[c+10>>1]=f;h=J[g+16>>2];J[c+16>>2]=h;d=K[g+20|0];I[c+12>>1]=a;H[c+20|0]=d;a=P(Gq(h),f)+a|0;i=i+1|0;d=K[b+196|0];if(i>>>0>>0){continue}break}I[e+202>>1]=a}I[e+200>>1]=d;J[e+204>>2]=J[b+192>>2];return e|0}function rL(a,b,c,d,e,f){var g=0,h=0,i=0;a:{g=J[a+4>>2];b:{if(!g){break b}g=J[J[a>>2]+(mxa(b,c,g)<<2)>>2];if((g|0)==-1){break b}h=J[a+8>>2];while(1){g=P(g,40)+h|0;if(J[g>>2]!=(b|0)|J[g+4>>2]!=(c|0)){g=J[g+32>>2];if((g|0)!=-1){continue}break b}break}b=J[g+16>>2];c=J[a+36>>2];a=J[a+32>>2];if(b>>>0>=c-a>>4>>>0){break a}J[d>>2]=a+(b<<4);J[e>>2]=J[g+20>>2];J[f>>2]=J[g+24>>2];i=1}return i}Z(145396,53895,487,84789);B()}function nja(a){a=a|0;var b=0,c=0,d=0,e=0,f=0;b=J[a+1040>>2];c=J[b+32>>2];b=J[b+28>>2];d=J[b+20>>2];if(c>>>0>2]-d>>3>>>0){c=J[(c<<3)+d>>2];d=J[b+8>>2];b=J[b+4>>2];if(c>>>0>2>>>0){f=J[b+(c<<2)>>2];b=J[a+1052>>2];d=b;c=J[a+1048>>2];e=c+1|0;b=e?b:b+1|0;J[a+1048>>2]=e;J[a+1052>>2]=b;if(!(c|d)){J[a+8>>2]=6;H[a+16|0]=H[f+204|0]&1;J[a>>2]=bj(75216);J[a+4>>2]=Yi}return!(c|d)|0}}Z(145396,53895,487,84789);B()}function eB(a){var b=0,c=0,d=0;d=J[a>>2];b=J[a+56>>2];c=J[b>>2];J[b>>2]=c-1;a:{if(c){c=b;b=J[b+4>>2];J[c+4>>2]=b+1;b=K[b|0];break a}b=Rk(b)}J[a>>2]=b;b:{c:{switch(b-10|0){case 0:case 3:break c;default:break b}}if((b|0)==(d|0)){break b}b=J[a+56>>2];c=J[b>>2];J[b>>2]=c-1;d:{if(c){c=b;b=J[b+4>>2];J[c+4>>2]=b+1;b=K[b|0];break d}b=Rk(b)}J[a>>2]=b}b=J[a+4>>2];J[a+4>>2]=b+1;if((b|0)>=2147483644){Wn(a,22561,J[a+16>>2])}}function LI(a,b,c){var d=0,e=0,f=0;d=Ui-16|0;Ui=d;a=Ij(a,c,d+12|0);e=P(J[d+12>>2],6)+2|0;c=J[b+8>>2];if((e|0)>(J[b+4>>2]+(c^-1)|0)){ql(b,c+e|0);c=J[b+8>>2]}J[b+8>>2]=c+1;H[J[b>>2]+c|0]=34;if(J[d+12>>2]){c=0;while(1){e=K[a+c|0];f=J[(e<<2)+255056>>2];a:{if(f){nG(b,f);break a}f=J[b+8>>2];J[b+8>>2]=f+1;H[f+J[b>>2]|0]=e}c=c+1|0;if(c>>>0>2]){continue}break}}a=J[b+8>>2];J[b+8>>2]=a+1;H[a+J[b>>2]|0]=34;Ui=d+16|0}function A$(a){a=a|0;var b=0,c=0,d=0,e=0;b=Ui-32|0;Ui=b;d=Aj(a,1,0);mm(a,2,36296,0);c=Sj(a,4);J[c>>2]=0;rj(a,-1e4,135350);Mj(a,-2);fj(a,73458,0);J[c>>2]=0;c=J[245744];e=J[a+8>>2];J[e+8>>2]=0;J[a+8>>2]=e+16;e=L[((c>>>0<=153?c:0)<<1)+215472>>1]+213556|0;a:{if(d){J[b+20>>2]=e;J[b+16>>2]=d;ik(a,28428,b+16|0);break a}J[b>>2]=e;ik(a,31902,b)}d=J[a+8>>2];J[d+8>>2]=3;O[d>>3]=c|0;J[a+8>>2]=J[a+8>>2]+16;Ui=b+32|0;return 3}function epa(a){a=a|0;var b=0,c=0,d=0,e=0,f=0,g=0;e=a;if((kj(a,1)|0)==8){c=1;e=so(a,1)}f=c+1|0;a:{if((kj(a,f)|0)<=0){gj(a,f);c=0;b=0;break a}b=Aj(a,c|2,0);Oj(a,f,6);c=Zm(a,c+3|0,0);d=(Hk(b,99)|0)!=0;d=Hk(b,114)?d|2:d;b=Hk(b,108)?d|4:d;d=(c|0)>0?b|8:b;b=2098}dJ(a);g=J[a+8>>2];J[g+8>>2]=2;J[g>>2]=e;J[a+8>>2]=J[a+8>>2]+16;uj(a,f);Xj(a,-3);gj(a,-2);J[e+64>>2]=c;J[e+60>>2]=c;J[e+68>>2]=d?b:0;H[e+56|0]=b?d:0;return 0}function Wq(a){var b=0,c=0,d=0;c=Ui-16|0;Ui=c;b=O[a+8>>3];d=O[a>>3];a:{if(d<0){d=-1;if(b<0){break a}mo(c);b=O[a+16>>3]+(b-(+J[c+8>>2]/1e6+(+M[c>>2]+ +J[c+4>>2]*4294967296)));d=b>0?b:0;break a}if(b<0){mo(c);b=O[a+16>>3]+(d-(+J[c+8>>2]/1e6+(+M[c>>2]+ +J[c+4>>2]*4294967296)));d=b>0?b:0;break a}mo(c);d=O[a>>3];b=O[a+16>>3]+(b-(+J[c+8>>2]/1e6+(+M[c>>2]+ +J[c+4>>2]*4294967296)));b=b>0?b:0;d=b>d?d:b}Ui=c+16|0;return d}function $P(a,b){var c=0,d=0;mj(a,52997,5);d=J[b>>2];c=J[a+8>>2];J[c+8>>2]=3;O[c>>3]=d|0;J[a+8>>2]=J[a+8>>2]+16;Xj(a,-3);mj(a,14691,6);d=J[b+4>>2];c=J[a+8>>2];J[c+8>>2]=3;O[c>>3]=d|0;J[a+8>>2]=J[a+8>>2]+16;Xj(a,-3);mj(a,64474,4);a:{b:{switch(J[b+8>>2]){case 1:mj(a,84155,4);break a;case 2:mj(a,50602,1);break a;case 3:mj(a,83976,2);break a;default:Z(62644,42046,96,19129);B();case 0:break b}}mj(a,82806,3)}Xj(a,-3)}function Yia(a){a=a|0;var b=0,c=0,d=0,e=0,f=0;b=J[a+1040>>2];c=J[b+32>>2];b=J[b+28>>2];d=J[b+16>>2];if(c>>>0>2]-d>>3>>>0){c=J[(c<<3)+d>>2];d=J[b+4>>2];b=J[b>>2];if(c>>>0>2>>>0){f=J[b+(c<<2)>>2];b=J[a+1052>>2];d=b;c=J[a+1048>>2];e=c+1|0;b=e?b:b+1|0;J[a+1048>>2]=e;J[a+1052>>2]=b;if(!(c|d)){J[a+8>>2]=6;H[a+16|0]=H[f+262|0]&1;J[a>>2]=bj(75216);J[a+4>>2]=Yi}return!(c|d)|0}}Z(145396,53895,487,84789);B()}function Qva(a,b,c,d){a=a|0;b=b|0;c=c|0;d=d|0;var e=Q(0),f=Q(0),g=Q(0),h=Q(0),i=Q(0),j=Q(0),k=Q(0),l=Q(0),m=Q(0),n=Q(0);k=N[c>>2];h=N[a+8>>2];e=N[c+8>>2];f=N[a+24>>2];i=N[c+12>>2];l=N[a+28>>2];g=N[c+4>>2];j=Q(Q(Q(e*f)+Q(i*l))+g);m=N[a+32>>2];n=N[a+36>>2];g=Q(g+Q(Q(e*m)+Q(i*n)));N[b+12>>2]=h+(g>2]=h+(e>2]=(g>j?j:g)-h;N[b>>2]=(e>f?f:e)-h}function Oha(a,b,c,d){a=a|0;b=b|0;c=c|0;d=d|0;var e=0,f=0;e=Ui-16|0;Ui=e;a:{f=J[J[a>>2]+468>>2];a=J[f+20>>2];b:{if(!a){break b}a=J[J[f+16>>2]+((d>>>0)%(a>>>0)<<2)>>2];if((a|0)==-1){break b}f=J[f+24>>2];while(1){a=f+P(a,12)|0;if(J[a>>2]==(d|0)){break a}a=J[a+8>>2];if((a|0)!=-1){continue}break}}H[301280]=1;J[e>>2]=d;dj(4,88458,9017,e);B()}a=J[a+4>>2];a=Zi[J[a+8>>2]](e+15|0,J[a+4>>2],b,c,d)|0;Ui=e+16|0;return a|0}function RM(a,b,c){var d=Q(0),e=0,f=0,g=0,h=Q(0),i=Q(0),j=Q(0);g=J[a+96>>2];e=1;a:{if((g|0)<=0){break a}h=N[b+8>>2];i=N[b+4>>2];j=N[b>>2];d=Q(N[a+12>>2]+Q(Q(N[a+8>>2]*h)+Q(Q(N[a+4>>2]*i)+Q(j*N[a>>2]))));e=0;if(dc){break a}while(1){f=f+1|0;if((g|0)!=(f|0)){b=(f<<4)+a|0;d=Q(N[b+12>>2]+Q(Q(N[b+8>>2]*h)+Q(Q(N[b+4>>2]*i)+Q(j*N[b>>2]))));if(!(dc)){continue}}break}e=(f|0)>=(g|0)}return e}function sma(a){a=a|0;var b=0,c=0,d=Q(0),e=0,f=Q(0),g=Q(0),h=Q(0),i=Q(0),j=Q(0),k=Q(0),l=0,m=Q(0),n=Q(0);b=Ui-48|0;Ui=b;l=pj(b+28|0,a,1,37509,2119);e=Pl(a,1);c=op(dn(a,2));m=N[e>>2];d=N[e+4>>2];f=N[c+60>>2];g=N[c+56>>2];h=N[c+48>>2];i=Q(h*Q(0));j=N[c+52>>2];k=Q(j*Q(0));N[b+8>>2]=Q(N[e+8>>2]*f)+Q(g+Q(i+k));n=Q(d*f);d=Q(g*Q(0));N[b+4>>2]=n+Q(d+Q(i+j));N[b>>2]=Q(m*f)+Q(d+Q(h+k));cl(a,b);oj(l);Ui=b+48|0;return 1}function yr(a,b){var c=0,d=0,e=0,f=0,g=0,h=0;e=Ui-16|0;Ui=e;a:{c=J[a+4>>2];d=J[a>>2];if((c|0)!=(d|0)){c=c-d>>2;f=c>>>0<=1?1:c;c=0;while(1){d=J[a>>2];if(J[a+4>>2]-d>>2>>>0<=c>>>0){break a}d=J[d+(c<<2)>>2];J[e+12>>2]=L[d+32>>1];g=J[d>>2];h=J[d+12>>2];J[e>>2]=J[d+8>>2];J[e+4>>2]=h;Ek(b,e,8);Ek(b,g,J[e+12>>2]<<4);c=c+1|0;if((f|0)!=(c|0)){continue}break}}H[a+52|0]=0;Ui=e+16|0;return}Z(145396,53895,487,84789);B()}function _G(a,b){a=a|0;b=b|0;var c=0;b=Ui-16|0;Ui=b;if((kj(a,3)|0)!=5){Yk(a,3,J[64413])}mj(a,36090,9);Ck(a,3);if(!Mk(a,-1)){Dk(a,3,73923)}if(!Uv(Ij(a,-1,0),b+8|0)){Dk(a,3,18760)}mj(a,70656,9);Ck(a,3);if(!Mk(a,-1)){Dk(a,3,74019)}J[b+12>>2]=0;c=Ij(a,-1,0);a:{if(K[c|0]==42&!K[c+1|0]){break a}if(Uv(Ij(a,-1,0),b+12|0)){break a}Dk(a,3,18791)}c=J[a+8>>2];J[c+8>>2]=0;J[a+8>>2]=c+16;mj(a,74795,17);Ui=b+16|0;return 2}function Ila(a){a=a|0;var b=0,c=0,d=Q(0),e=0,f=0,g=0,h=0;c=Ui-32|0;Ui=c;g=pj(c+12|0,a,0,36839,229);b=qj(a,1,J[79308],3640);e=J[b+8>>2];f=J[b+12>>2];a:{if(!(e|f)){break a}if(xk(J[b+4>>2],e,f)){break a}J[c>>2]=tj(J[b+8>>2],J[b+12>>2]);fj(a,102051,c)}b=J[b>>2];h=wj(a,2);if(J[b>>2]){d=Q(h);b:{if(!(Q(d*d)>Q(0))){break b}a=L[b+4>>1];if(a&2){break b}J[b+144>>2]=0;I[b+4>>1]=a|2}N[b+72>>2]=d}oj(g);Ui=c+32|0;return 0}function wM(a,b){var c=0,d=0,e=0;e=1;a:{b:{if(!b){break b}c=b&65535;d=J[a+4>>2];a=J[a>>2];if(c>>>0>=d-a>>2>>>0){break a}a=J[a+(c<<2)>>2];if(L[a+80>>1]!=(b>>>16|0)){dj(4,96107,66969,0);return 1}b=J[a+4>>2];a=J[a>>2];if((b|0)==(a|0)){break b}b=(b-a|0)/304|0;c=b>>>0<=1?1:b;b=0;while(1){d=J[(a+P(b,304)|0)+280>>2];e=!d;if(d){break b}b=b+1|0;if((c|0)!=(b|0)){continue}break}}return e}Z(145396,53895,487,84789);B()}function Kva(a){a=a|0;var b=0,c=0,d=0,e=0,f=0;b=Ui-112|0;Ui=b;c=J[J[a+72>>2]+56>>2];d=J[J[a+68>>2]+56>>2];e=J[J[a+52>>2]+8>>2];f=J[J[a+48>>2]+8>>2];zj(156269,0);J[b+96>>2]=f;zj(156602,b+96|0);J[b+80>>2]=e;zj(156576,b+80|0);J[b+64>>2]=K[a+61|0];zj(157687,b- -64|0);J[b+48>>2]=d;zj(156549,b+48|0);J[b+32>>2]=c;zj(156522,b+32|0);O[b+16>>3]=N[a+152>>2];zj(155490,b+16|0);J[b>>2]=J[a+56>>2];zj(157263,b);Ui=b+112|0}function CQ(a,b,c,d){var e=0,f=0,g=0;e=Ui-16|0;Ui=e;a:{b:{b=gC(b,J[c+4>>2],J[c>>2]);c:{if(!b){vj(a,J[c+4>>2]);vj(a,J[c>>2]);break c}c=e+12|0;if(pr(a,J[d+12>>2],c)){break b}f=J[e+12>>2];g=J[f+4>>2];J[b+152>>2]=J[f>>2];J[b+156>>2]=g;if(pr(a,J[d+16>>2],c)){break a}c=J[e+12>>2];d=J[c+4>>2];J[b+160>>2]=J[c>>2];J[b+164>>2]=d;vq(a,592,b)}Ui=e+16|0;return b}Z(93026,40731,276,50488);B()}Z(93026,40731,280,50488);B()}function Uw(a,b,c){var d=0,e=0,f=0,g=0;d=Ui-176|0;Ui=d;J[d+168>>2]=0;J[d+8>>2]=J[a+112>>2];J[a+112>>2]=d+8;J[d+16>>2]=1;J[d+12>>2]=d+172;a:{while(1){if(!e){J[248826]=0;qa(b|0,a|0,c|0);e=J[248826];J[248826]=0;f=-1;b:{if(!e){break b}g=J[248827];if(!g){break b}f=J[e>>2]==(d+172|0)?J[e+4>>2]:0;if(!f){break a}Vi=g}e=Vi;if((f|0)==1){continue}}break}J[a+112>>2]=J[d+8>>2];Ui=d+176|0;return J[d+168>>2]}ir(e,g);B()}function oq(a){var b=0,c=0,d=0,e=0,f=0,g=0,h=0;d=J[a+32>>2];J[a+32>>2]=-1;e=El(a,2147450902,J[J[a+12>>2]+8>>2]);if((d|0)!=-1){if((e|0)==-1){return d}h=J[J[a>>2]+12>>2];b=e;while(1){c=b;f=(b<<2)+h|0;g=J[f>>2];b=(g>>>14|0)-131071|0;if((b|0)!=-1){b=(b+c|0)+1|0;if((b|0)!=-1){continue}}break}b=(c^-1)+d|0;c=b>>31;if((b^c)-c>>>0>=131072){qk(J[a+12>>2],56034);g=J[f>>2]}J[f>>2]=(g&16383|b<<14)+2147467264}return e}function I$(a){a=a|0;var b=0,c=0,d=0;c=Ui-32|0;Ui=c;Nj(a,-10001,2);b=J[Vj(a,-1)>>2];if(!b){J[c+16>>2]=9441;fj(a,74487,c+16|0)}a:{if(!$n(b)){b=J[a+8>>2];J[b+8>>2]=1;J[b>>2]=1;J[a+8>>2]=J[a+8>>2]+16;a=1;break a}b=J[245744];d=J[a+8>>2];J[d+8>>2]=0;J[a+8>>2]=d+16;J[c>>2]=L[((b>>>0<=153?b:0)<<1)+215472>>1]+213556;ik(a,31902,c);d=J[a+8>>2];J[d+8>>2]=3;O[d>>3]=b|0;J[a+8>>2]=J[a+8>>2]+16;a=3}Ui=c+32|0;return a|0}function HD(a,b){var c=0,d=0,e=0;a:{b:{if(!b){break b}e=(J[b+4>>2]-J[b>>2]|0)/18568|0;if(!e){break b}while(1){c=J[b>>2];if((J[b+4>>2]-c|0)/18568>>>0<=d>>>0){break a}c=J[(c+P(d,18568)|0)+18556>>2];if(c){vj(a,c);sM(b,d,0)}c=J[b>>2];if((J[b+4>>2]-c|0)/18568>>>0<=d>>>0){break a}c=J[(c+P(d,18568)|0)+18552>>2];if(c){vj(a,c);pM(b,d,0)}d=d+1|0;if((e|0)!=(d|0)){continue}break}}return}Z(145396,53895,487,84789);B()}function Eea(a){a=a|0;var b=0,c=0;b=nj(44);J[b+4>>2]=0;J[b+8>>2]=0;J[b+36>>2]=0;J[b+40>>2]=0;J[b+28>>2]=0;J[b+32>>2]=0;J[b+20>>2]=0;J[b+24>>2]=0;J[b+12>>2]=0;J[b+16>>2]=0;J[b>>2]=J[a+24>>2];c=OQ(J[a+4>>2],J[a>>2],b);if(!c){J[J[a+28>>2]+8>>2]=b;return c|0}FD(J[a>>2],b);a:{if(H[b+40|0]&1){break a}a=J[b+28>>2];if(!a){break a}cj(a)}b:{if(H[b+24|0]&1){break b}a=J[b+12>>2];if(!a){break b}cj(a)}cj(b);return c|0}function jR(a){var b=0,c=0,d=0,e=0,f=0,g=0,h=0,i=0;b=Ui-32|0;Ui=b;J[b+28>>2]=0;d=J[a>>2];if(d){e=1;g=J[J[d+4>>2]>>2];if(g){i=d+12|0;while(1){c=J[d+4>>2];h=L[(c+(f<<1)|0)+28568>>1];c=P(h,112)+c|0;if(J[c+68>>2]){J[b+24>>2]=0;J[b+12>>2]=a;J[b+16>>2]=J[(h<<2)+i>>2];J[b+20>>2]=J[c+24>>2];e=!(Zi[J[c+68>>2]](b+12|0)|0)&e}f=f+1|0;if((g|0)!=(f|0)){continue}break}}Ui=b+32|0;return e}Z(111261,38296,2714,35516);B()}function NW(a,b,c,d,e){a=a|0;b=b|0;c=c|0;d=d|0;e=e|0;var f=0,g=0,h=0,i=0;g=1;f=K[c|0];e=K[b|0];if((d|0)==1){b=(f+P(e,3)|0)+2>>>2|0;H[a|0]=b;H[a+1|0]=b;return a|0}e=f+P(e,3)|0;f=e+2>>>2|0;H[a|0]=f;i=((d<<1)+a|0)-1|0;if((d|0)>=2){while(1){h=(g<<1)+a|0;f=K[c+g|0]+P(K[b+g|0],3)|0;H[h-1|0]=(f+P(e,3)|0)+8>>>4;H[h|0]=(P(f,3)+e|0)+8>>>4;e=f;g=g+1|0;if((g|0)!=(d|0)){continue}break}f=f+2>>>2|0}H[i|0]=f;return a|0}function om(a,b,c,d){a=a|0;b=b|0;c=c|0;d=d|0;var e=0,f=Q(0),g=Q(0),h=Q(0),i=Q(0);e=Ui+-64|0;Ui=e;N[e+48>>2]=N[b>>2];N[e+52>>2]=N[b+4>>2];N[e+56>>2]=N[b+8>>2];N[e+32>>2]=N[c>>2];N[e+36>>2]=N[c+4>>2];N[e+40>>2]=N[c+8>>2];f=N[d>>2];N[e+16>>2]=f;g=N[d+4>>2];N[e+20>>2]=g;h=N[d+8>>2];N[e+24>>2]=h;i=N[d+12>>2];N[e+12>>2]=i;N[e+8>>2]=h;N[e+4>>2]=g;N[e>>2]=f;N[e+28>>2]=i;lL(a,e+48|0,e+32|0,e+16|0,e);Ui=e- -64|0}function nL(a,b,c,d){var e=0,f=Q(0),g=Q(0),h=0,i=Q(0),j=Q(0);e=Ui-1072|0;Ui=e;J[e+1068>>2]=0;f=N[a+48>>2];N[d+8>>2]=f;g=N[a+52>>2];N[d+12>>2]=g;h=K[c+4|0];i=N[c>>2];j=N[c+12>>2];J[e+20>>2]=a;f=Q(f+g);N[e+24>>2]=j*f;a=J[e+24>>2];J[e+8>>2]=J[e+20>>2];J[e+12>>2]=a;a=$F(b,h?i:Q(1e6),e+32|0,e+28|0,e+8|0,h^1);N[d>>2]=N[e+28>>2];g=N[c+8>>2];J[d+16>>2]=a;N[d+4>>2]=Q(Q(a>>>0)*Q(f*g))-Q(f*Q(g+Q(-1)));Ui=e+1072|0}function iha(a){a=a|0;var b=0,c=0,d=0;b=Ui-96|0;Ui=b;d=pj(b+76|0,a,1,40650,369);pk(a);c=b- -64|0;J[c>>2]=0;J[c+4>>2]=0;J[b+56>>2]=0;J[b+60>>2]=0;J[b+48>>2]=0;J[b+52>>2]=0;J[b+40>>2]=0;J[b+44>>2]=0;J[b+32>>2]=0;J[b+36>>2]=0;J[b+24>>2]=0;J[b+28>>2]=0;J[b+16>>2]=0;J[b+20>>2]=0;J[b+8>>2]=0;J[b+12>>2]=0;Sk(a,1,b+40|0,b+8|0);J[b+4>>2]=0;Mn(a,82205,0,b+4|0,0);xj(a,J[J[b+4>>2]+240>>2]);oj(d);Ui=b+96|0;return 1}function Z4(a,b,c,d,e){a=a|0;b=b|0;c=c|0;d=d|0;e=e|0;var f=0,g=0;f=-2;a:{if(!J[a+8>>2]){break a}d=J[a+16>>2];if(!d){break a}d=J[J[a+12>>2]+(mxa(b,c,d)<<2)>>2];if((d|0)==-1){break a}g=J[a+20>>2];while(1){a=g+P(d,24)|0;if(J[a>>2]!=(b|0)|J[a+4>>2]!=(c|0)){d=J[a+16>>2];if((d|0)!=-1){continue}break a}break}a=J[a+12>>2];if(!a){break a}a=J[a+4>>2];J[e>>2]=a<<24|(a&65280)<<8|(a>>>8&65280|a>>>24);f=0}return f|0}function ora(a){a=a|0;var b=0;J[a>>2]=243928;b=J[a+84>>2];if(!(b?!b|K[a+88|0]!=1:1)){J[83765]=J[83765]+1;Zi[J[61751]](J[b-4>>2])}J[a+84>>2]=0;H[a+88|0]=1;J[a+76>>2]=0;J[a+80>>2]=0;b=J[a+64>>2];if(!(b?!b|K[a+68|0]!=1:1)){J[83765]=J[83765]+1;Zi[J[61751]](J[b-4>>2])}J[a+64>>2]=0;H[a+68|0]=1;J[a+56>>2]=0;J[a+60>>2]=0;b=J[a+44>>2];if(!(b?!b|K[a+48|0]!=1:1)){J[83765]=J[83765]+1;Zi[J[61751]](J[b-4>>2])}cj(a)}function Y2(a,b){a=a|0;b=b|0;var c=0,d=0;d=J[a+8>>2]-J[a+12>>2]>>4;Yo(a,89346,b);Nj(a,-1e4,J[215644]);xj(a,J[b+16>>2]);b=J[b+32>>2];c=J[a+8>>2];J[c+8>>2]=3;O[c>>3]=b|0;J[a+8>>2]=J[a+8>>2]+16;b=J[a+8>>2];J[b+8>>2]=8;J[b>>2]=a;J[a+8>>2]=J[a+8>>2]+16;if(J[J[a+16>>2]+112>>2]==(a|0)){gj(a,-2);b=J[a+8>>2];J[b+8>>2]=0;J[a+8>>2]=b+16}Wk(a,3,0);if(J[a+8>>2]-J[a+12>>2]>>4!=(d|0)){Z(143244,39097,1407,50915);B()}}function Vha(a){a=a|0;var b=0,c=0,d=0,e=0;b=J[J[a+24>>2]>>2];c=J[a+16>>2];d=J[a+20>>2];if((c|0)==J[76262]&(d|0)==J[76263]){return xn(J[J[J[a+8>>2]+80>>2]>>2],a+32|0,J[76240],J[76241],b+148|0)|0}if((c|0)==J[76286]&(d|0)==J[76287]){a=xn(J[J[J[a+8>>2]+80>>2]>>2],a+32|0,J[76248],J[76249],b+152|0);lv(b);return a|0}e=J[b+148>>2];if(!e){e=J[J[b+156>>2]+24>>2]}return Wp(J[e>>2],c,d,a+32|0,J[a+104>>2],322,b)|0}function Kp(a,b){var c=0;c=Sj(a,64);N[c>>2]=N[b>>2];N[c+4>>2]=N[b+4>>2];N[c+8>>2]=N[b+8>>2];N[c+12>>2]=N[b+12>>2];N[c+16>>2]=N[b+16>>2];N[c+20>>2]=N[b+20>>2];N[c+24>>2]=N[b+24>>2];N[c+28>>2]=N[b+28>>2];N[c+32>>2]=N[b+32>>2];N[c+36>>2]=N[b+36>>2];N[c+40>>2]=N[b+40>>2];N[c+44>>2]=N[b+44>>2];N[c+48>>2]=N[b+48>>2];N[c+52>>2]=N[b+52>>2];N[c+56>>2]=N[b+56>>2];N[c+60>>2]=N[b+60>>2];rj(a,-1e4,106883);Mj(a,-2)}function FV(a,b,c,d){var e=0,f=0;a:{if(d>>>0>=3){J[245744]=28;break a}b:{if((d|0)!=1){break b}e=J[a+8>>2];if(!e){break b}f=b;e=e-J[a+4>>2]|0;b=b-e|0;c=c-((e>>31)+(e>>>0>f>>>0)|0)|0}if(J[a+20>>2]!=J[a+28>>2]){Zi[J[a+36>>2]](a,0,0)|0;if(!J[a+20>>2]){break a}}J[a+28>>2]=0;J[a+16>>2]=0;J[a+20>>2]=0;Zi[J[a+40>>2]](a,b,c,d)|0;if((Yi|0)<0){break a}J[a+4>>2]=0;J[a+8>>2]=0;J[a>>2]=J[a>>2]&-17;return 0}return-1}function una(a,b,c,d,e,f,g,h){a=a|0;b=b|0;c=c|0;d=d|0;e=e|0;f=f|0;g=g|0;h=h|0;var i=0,j=0;h=Ui-48|0;Ui=h;if(!(!f|!Hm(g))){f=J[J[a+80>>2]+8>>2];a:{if(!f){break a}f=J[f>>2];if(!f){break a}i=J[f+3216>>2];j=J[f+3220>>2]}f=J[a+96>>2];a=J[a+100>>2];J[h+40>>2]=d;J[h+44>>2]=e;J[h+32>>2]=b;J[h+36>>2]=c;J[h+24>>2]=f;J[h+28>>2]=a;J[h+16>>2]=0;J[h+20>>2]=0;J[h+8>>2]=i;J[h+12>>2]=j;Gu(g,111,h+8|0)}Fl(g);Ui=h+48|0}function q2(a){a=a|0;var b=0,c=0,d=0,e=0;c=Ui-32|0;Ui=c;e=pj(c+12|0,a,1,39844,696);d=Ej(a,1);b=qx(ux(a),d&65535);a:{if(!((d|0)==J[b+12>>2]?b:0)){b=J[a+8>>2];J[b+8>>2]=1;J[b>>2]=0;break a}d=J[b+8>>2];if(!Hm(d)){b=J[a+8>>2];J[b+8>>2]=1;J[b>>2]=0;break a}J[c+4>>2]=J[b+12>>2];N[c+8>>2]=N[b+20>>2]-N[b+16>>2];Gu(d,1761,c+4|0);b=J[a+8>>2];J[b+8>>2]=1;J[b>>2]=1}J[a+8>>2]=J[a+8>>2]+16;oj(e);Ui=c+32|0;return 1}function ena(a){a=a|0;var b=0,c=0,d=0;d=Ui-16|0;Ui=d;J[d+12>>2]=0;b=-13;if(!dk(J[a+12>>2],J[a+16>>2],J[55330],d+12|0,0)){b=J[d+12>>2];c=J[b+24>>2];a:{if(c){YD(J[b+12>>2],J[b+16>>2],J[b+20>>2],c);b=J[d+12>>2];break a}if(J[b+16>>2]){break a}c=J[b+32>>2];J[b+12>>2]=J[b+28>>2];J[b+16>>2]=c}c=nj(4);J[c>>2]=b;J[J[a+28>>2]+8>>2]=c;J[J[a+28>>2]+16>>2]=(J[a+16>>2]-J[J[c>>2]+4>>2]|0)+4;b=0}Ui=d+16|0;return b|0}function Qka(a){a=a|0;var b=0,c=0,d=0,e=0;c=J[a+12>>2];d=J[J[a+16>>2]>>2];b=J[d+60>>2];if(b){zo(b)}b=J[d+36>>2];if(b){vj(J[c>>2],b)}a=J[a+8>>2];c=J[a>>2];a:{b:{if((c|0)!=J[a+4>>2]){e=J[a+16>>2];if(!e){break b}b=J[a+24>>2]-1|0;if(b>>>0>=M[a+20>>2]){break a}J[a+24>>2]=b;J[(b<<2)+e>>2]=(d-c|0)/144;ij(d,0,144);return 0}Z(145396,53895,487,84789);B()}Z(49493,54340,140,53220);B()}Z(2650,54340,141,53220);B()}function Iga(a,b,c){a=a|0;b=b|0;c=c|0;var d=0,e=0;d=Ui-32|0;Ui=d;J[d+8>>2]=0;J[d+12>>2]=0;J[d+8>>2]=c;J[d>>2]=0;J[d+4>>2]=0;J[d+4>>2]=b;c=J[a+44>>2];e=d+24|0;b=e;J[b>>2]=0;J[b+4>>2]=0;J[d+16>>2]=0;J[d+20>>2]=0;b=d+16|0;lj(16,1,b,e,b|4);Kq(d,J[64144],b);b=J[d+16>>2];a=Fy(J[64144],b,J[d+20>>2]-b|0,0,a,c,0);a:{if(H[d+28|0]&1){break a}b=J[d+16>>2];if(!b){break a}cj(b)}if(a){dj(3,88458,101746,0)}Ui=d+32|0}function Fha(a,b,c,d,e){a=a|0;b=b|0;c=c|0;d=d|0;e=e|0;var f=0,g=0,h=0;g=Ui-32|0;Ui=g;if(Hm(J[e+8>>2])){h=g+12|0;f=J[e+8>>2];if(f){f=J[f>>2]}else{f=0}h=pj(h,f,0,37079,93);a:{b:{if(!ao(J[e+8>>2])){dj(4,88458,143541,0);break b}Bk(f,J[e>>2],J[e+4>>2]);Bk(f,b,c);b=J[f+8>>2];J[b+8>>2]=3;O[b>>3]=d>>>0;J[f+8>>2]=J[f+8>>2]+16;Ol(f,4,0,0);xo(J[e+8>>2]);if(a|d){break a}}Fl(J[e+8>>2]);J[e+8>>2]=0}oj(h)}Ui=g+32|0}function yT(a,b,c){var d=0,e=0,f=0,g=0;e=ow(a,b);a:{if(!e){e=0;break a}f=J[a+8>>2];if((f|0)>=0){if(!f){break a}while(1){d=J[e+32>>2];if(!d){break a}e=d;g=g+1|0;if((f|0)!=(g|0)){continue}break}break a}e=J[a>>2]}d=J[c+4>>2];J[b>>2]=J[c>>2];J[b+4>>2]=d;d=J[c+28>>2];J[b+24>>2]=J[c+24>>2];J[b+28>>2]=d;d=J[c+20>>2];J[b+16>>2]=J[c+16>>2];J[b+20>>2]=d;d=J[c+12>>2];J[b+8>>2]=J[c+8>>2];J[b+12>>2]=d;Ww(a,e,b)}function dx(a,b){var c=0,d=0,e=0;c=J[b+76>>2];if(!((c|0)>=0&(!c|J[245829]!=(c&1073741823)))){a:{d=a&255;if((d|0)==J[b+80>>2]){break a}c=J[b+20>>2];if((c|0)==J[b+16>>2]){break a}J[b+20>>2]=c+1;H[c|0]=a;return}zV(b,d);return}c=b+76|0;d=J[c>>2];J[c>>2]=d?d:1073741823;b:{c:{e=a&255;if((e|0)==J[b+80>>2]){break c}d=J[b+20>>2];if((d|0)==J[b+16>>2]){break c}J[b+20>>2]=d+1;H[d|0]=a;break b}zV(b,e)}J[c>>2]=0}function bI(a,b,c){var d=0,e=0,f=0;e=Um(c);d=J[a>>2];if(d>>>0>>0){return-108}if(d-b>>>0>>0){return-108}d=d-e|0;J[a>>2]=d;d=no(c,d,e);a:{if(d){break a}b:{if(J[c>>2]!=1){break b}c=J[a>>2];if(H[c|0]>=0){break b}if((c-b|0)<=0){return-108}c=c-1|0;J[a>>2]=c;H[c|0]=0;e=e+1|0}c=cI(a,b,e);if((c|0)<0){return c}d=-108;f=J[a>>2];if((f-b|0)<=0){break a}b=a;a=f-1|0;J[b>>2]=a;H[a|0]=2;d=(c+e|0)+1|0}return d}function y$(a){a=a|0;var b=0,c=0,d=0;d=Ui-16|0;Ui=d;b=J[Vj(a,-10003)>>2];a:{if(b){c=qw(a,b);break a}fj(a,74464,0);c=qw(a,0)}if(J[b+76>>2]<0){b=J[b>>2]}else{b=J[b>>2]}b:{if(b>>>5&1){c=J[245744];J[d>>2]=L[((c>>>0<=153?c:0)<<1)+215472>>1]+213556;b=fj(a,31902,d);break b}b=1;if(c){break b}b=0;if(!ck(a,-10004)){break b}gj(a,0);uj(a,-10003);fu(a,1);rj(a,-1,62387);Zi[KA(a)|0](a)|0;b=0}Ui=d+16|0;return b|0}function Km(a,b){var c=0,d=0,e=0,f=0,g=0;c=Ui-288|0;Ui=c;d=b&255;d=d>>>0<16?(J[J[a>>2]+72>>2]+P(d,148)|0)+4|0:0;f=c+160|0;g=KC(a,d,f);a:{if(g){e=nj(348);ij(e+4|0,0,344);J[e>>2]=d;if(J[g>>2]==J[215892]){J[c+16>>2]=b;J[c+20>>2]=f;dj(3,86420,128837,c+16|0);H[e+345|0]=2}JC(a,e,b);break a}f=J[J[a>>2]+72>>2];a=c+32|0;RN(f,d,a);if(K[c+32|0]){J[c>>2]=b;J[c+4>>2]=a;dj(3,86420,129079,c)}}Ui=c+288|0;return e}function Hpa(a,b,c){a=a|0;b=b|0;c=c|0;var d=Q(0),e=Q(0),f=Q(0),g=Q(0),h=Q(0);d=N[c+8>>2];e=N[c>>2];f=N[c+4>>2];g=Q(Q(d*N[b+60>>2])+Q(Q(e*N[b+52>>2])+Q(f*N[b+56>>2])));h=Q(Q(d*N[b+76>>2])+Q(Q(e*N[b+68>>2])+Q(f*N[b+72>>2])));c=g>2])+Q(Q(e*N[b+84>>2])+Q(f*N[b+88>>2])))>(c?h:g)?2:c)<<4)|0;c=J[b+4>>2];J[a>>2]=J[b>>2];J[a+4>>2]=c;c=J[b+12>>2];J[a+8>>2]=J[b+8>>2];J[a+12>>2]=c}function xua(a){a=a|0;var b=0,c=0,d=0,e=0;A(+(ok(a,1)+6755399441055744));v(1)|0;d=v(0)|0;a:{if(d){break a}if(kk(a,1)){break a}Yk(a,1,36031)}b=J[a+8>>2]-J[a+12>>2]>>4;if((b|0)>=2){while(1){c=b;A(+(ok(a,c)+6755399441055744));v(1)|0;e=v(0)|0;b:{if(e){break b}if(kk(a,c)){break b}Yk(a,c,36031)}b=c-1|0;d=d&e;if((c|0)>2){continue}break}}b=J[a+8>>2];J[b+8>>2]=3;O[b>>3]=d|0;J[a+8>>2]=J[a+8>>2]+16;return 1}function wr(a,b){var c=0,d=0,e=0;a:{b:{c=J[a+108>>2];if(J[a+112>>2]-c>>2>>>0>b>>>0){J[c+(b<<2)>>2]=0;e=a+128|0;c=J[a+128>>2];d=J[a+132>>2];if((c|0)==(d|0)){if(H[a+136|0]&1){break b}d=c;c=a+124|0;lj((d-J[c>>2]>>2)+32|0,4,c,a+132|0,e);d=J[a+132>>2];c=J[e>>2]}if((c|0)==(d|0)){break a}J[e>>2]=c+4;J[c>>2]=b;return}Z(145396,53895,487,84789);B()}Z(151729,53895,501,2284);B()}Z(112520,53895,557,53220);B()}function vua(a){a=a|0;var b=0,c=0,d=0,e=0;A(+(ok(a,1)+6755399441055744));v(1)|0;d=v(0)|0;a:{if(d){break a}if(kk(a,1)){break a}Yk(a,1,36031)}b=J[a+8>>2]-J[a+12>>2]>>4;if((b|0)>=2){while(1){c=b;A(+(ok(a,c)+6755399441055744));v(1)|0;e=v(0)|0;b:{if(e){break b}if(kk(a,c)){break b}Yk(a,c,36031)}b=c-1|0;d=d|e;if((c|0)>2){continue}break}}b=J[a+8>>2];J[b+8>>2]=3;O[b>>3]=d|0;J[a+8>>2]=J[a+8>>2]+16;return 1}function tua(a){a=a|0;var b=0,c=0,d=0,e=0;A(+(ok(a,1)+6755399441055744));v(1)|0;d=v(0)|0;a:{if(d){break a}if(kk(a,1)){break a}Yk(a,1,36031)}b=J[a+8>>2]-J[a+12>>2]>>4;if((b|0)>=2){while(1){c=b;A(+(ok(a,c)+6755399441055744));v(1)|0;e=v(0)|0;b:{if(e){break b}if(kk(a,c)){break b}Yk(a,c,36031)}b=c-1|0;d=d^e;if((c|0)>2){continue}break}}b=J[a+8>>2];J[b+8>>2]=3;O[b>>3]=d|0;J[a+8>>2]=J[a+8>>2]+16;return 1}function mE(a,b){var c=0,d=0,e=0,f=0,g=0,h=0,i=0,j=0,k=0,l=0,m=0;c=J[a+8>>2];h=J[a+4>>2];if(c>>>0<=h>>>0){a:{while(1){i=((e|0)!=10|(f|0)!=0)&c>>>0>>0;if(!i){break a}j=c+1|0;J[a+8>>2]=j;k=H[c|0];c=k&127;d=ixa(e,f,7,0);g=d&31;if((d&63)>>>0>=32){d=c<>>32-g;c=c<>2]=l}return i}Z(71496,39940,70,109390);B()}function ina(a){a=a|0;var b=0,c=0,d=0,e=0,f=0;d=J[a+24>>2];c=J[a+4>>2];b=nj(24);J[b>>2]=0;J[b+4>>2]=0;J[b+16>>2]=0;J[b+20>>2]=0;J[b+8>>2]=0;J[b+12>>2]=0;c=QR(J[a>>2],c,d,b,J[a+8>>2]);if(!c){J[J[a+28>>2]+8>>2]=b;Uj(d);return c|0}e=J[a>>2];if(J[b+4>>2]){a=0;while(1){f=J[b>>2]+P(a,96)|0;vj(e,J[f+24>>2]);ll(J[f+88>>2]);a=a+1|0;if(a>>>0>2]){continue}break}}Iq(e,b+8|0);cj(Dy(b));Uj(d);return c|0}function hq(a,b,c){var d=0,e=0,f=0,g=0,h=0;if(c>>>0>1){return-4}f=b>>>5|0;d=J[a+4>>2];a:{b:{c:{if(d<<5>>>0>b>>>0){break c}if(!c){break b}e=-16;if(b>>>0>319999){break a}if(f>>>0>>0){break c}h=f+1|0;g=Zj(h,4);if(!g){break a}e=J[a+8>>2];if(e){d=d<<2;hj(g,e,d);Zi[J[66509]](e,0,d)|0;cj(J[a+8>>2])}J[a+8>>2]=g;J[a+4>>2]=h}a=J[a+8>>2]+(f<<2)|0;f=J[a>>2];d=a;a=b&31;J[d>>2]=oxa(-2,a)&f|c<>2];c=P(g,3)>>>2|0;J[b+4>>2]=c;f=sj(c);d=Ui-16|0;Ui=d;J[d+12>>2]=0;c=JA(f,J[b+4>>2],d+12|0,e,g);a:{if(c){e=J[b+4>>2]?-1:J[d+12>>2];break a}e=J[d+12>>2]}J[b+4>>2]=e;Ui=d+16|0;b:{if(!c){mj(a,f,J[b+4>>2]);break b}c=J[a+8>>2];J[c+8>>2]=0;J[a+8>>2]=c+16}cj(f);oj(h);Ui=b+32|0;return 1}function aU(a,b){a=a|0;b=b|0;var c=Q(0),d=Q(0),e=Q(0),f=Q(0),g=Q(0),h=Q(0),i=Q(0),j=Q(0),k=Q(0);c=Q(Zi[J[J[a>>2]+44>>2]](a));d=Q(Zi[J[J[a>>2]+44>>2]](a));e=Q(Zi[J[J[a>>2]+44>>2]](a));f=N[a+12>>2];g=N[a+28>>2];h=N[a+16>>2];i=N[a+32>>2];j=N[a+20>>2];k=N[a+36>>2];ME(a,b);J[a+40>>2]=0;N[a+36>>2]=Q(Q(Q(e+k)/j)*N[a+20>>2])-e;N[a+32>>2]=Q(Q(Q(d+i)/h)*N[a+16>>2])-d;N[a+28>>2]=Q(Q(Q(c+g)/f)*N[a+12>>2])-c}function mF(a,b,c){var d=0,e=0,f=0;d=J[c+16>>2];a:{if(!d){if(hF(c)){break a}d=J[c+16>>2]}e=J[c+20>>2];if(d-e>>>0>>0){return Zi[J[c+36>>2]](c,a,b)|0}b:{c:{if(!b|J[c+80>>2]<0){break c}d=b;while(1){f=a+d|0;if(K[f-1|0]!=10){d=d-1|0;if(d){continue}break c}break}e=Zi[J[c+36>>2]](c,a,d)|0;if(e>>>0>>0){break a}b=b-d|0;e=J[c+20>>2];break b}f=a;d=0}hj(e,f,b);J[c+20>>2]=J[c+20>>2]+b;e=b+d|0}return e}function yY(a,b){a=a|0;b=b|0;var c=0,d=0,e=0;c=Ui-16|0;Ui=c;d=J[b>>2];J[c+12>>2]=8;b=1;a:{if((cp(d,1,13,c+4|0,c+12|0)|0)<0){b=J[a+8>>2];J[b+8>>2]=0;J[a+8>>2]=b+16;mj(a,74813,17);b=2;break a}Fj(a,0,0);d=J[c+4>>2];e=J[a+8>>2];J[e+8>>2]=1;J[e>>2]=(d|0)!=0;J[a+8>>2]=J[a+8>>2]+16;ej(a,-2,47708);d=J[c+8>>2];e=J[a+8>>2];J[e+8>>2]=3;O[e>>3]=d|0;J[a+8>>2]=J[a+8>>2]+16;ej(a,-2,9580)}Ui=c+16|0;return b|0}function vK(a){var b=0,c=0,d=0,e=0,f=0,g=0,h=0;c=Ui-16|0;Ui=c;f=a+2196|0;d=J[J[J[a+2188>>2]+8>>2]+32>>2];b=(d<<1>>>0)/3|0;mN(f,b>>>0<=1?1:b,d);g=J[(J[J[J[a+2188>>2]+8>>2]>>2]<<2)+159120>>2]>>>3|0;if(d){h=c+12|0;b=0;while(1){e=J[J[J[a+2188>>2]+8>>2]+28>>2]+P(b,48)|0;J[c+8>>2]=e;if(!TB(J[a+2192>>2],J[e>>2],g,h)){nN(f,J[e+16>>2],J[e+20>>2],c+8|0)}b=b+1|0;if((d|0)!=(b|0)){continue}break}}Ui=c+16|0}function j5(a,b,c){a=a|0;b=b|0;c=c|0;var d=0,e=0;c=Ui-16|0;Ui=c;if(J[b+4>>2]){a:{if(pr(a,J[b+40>>2],b)){J[c>>2]=J[b+36>>2];dj(4,96538,147026,c);break a}d=J[b+4>>2];if(!d){break a}e=a;a=J[b+12>>2];Zi[d|0](e,J[b+8>>2],J[b>>2],J[b+28>>2],J[b+16>>2]-a|0,a)|0}cj(J[b+36>>2]);cj(J[b+40>>2]);b:{if(H[b+24|0]&1){break b}a=J[b+12>>2];if(!a){break b}cj(a)}cj(b);Ui=c+16|0;return}Z(51779,39868,62,51767);B()}function im(a,b){var c=0,d=0;c=nj(24);J[c+16>>2]=0;J[c+20>>2]=0;J[c>>2]=0;J[c+4>>2]=0;d=c+8|0;J[d>>2]=0;J[d+4>>2]=0;J[c+16>>2]=b;lj(1,4,c,d,c+4|0);b=0;I[c+20>>1]=0;a=J[a+2480>>2];a:{b:{switch(J[c+16>>2]){case 0:b=Zi[J[79391]](a,0,0,1)|0;break a;case 1:break b;default:break a}}b=Zi[J[79397]](a,0,0,1)|0}a=J[c+4>>2];if((a|0)==J[d>>2]){Z(112520,53895,557,53220);B()}J[c+4>>2]=a+4;J[a>>2]=b;return c}function Zv(a,b,c,d){var e=0,f=0;f=J[c+144>>2];e=J[b+144>>2];a:{if(e>>>0>=M[a+144>>2]){if(f>>>0>=e>>>0){break a}rk(b,c);if(M[b+144>>2]>=M[a+144>>2]){break a}rk(a,b);break a}if(f>>>0>>0){rk(a,c);break a}rk(a,b);if(M[c+144>>2]>=M[b+144>>2]){break a}rk(b,c)}b:{if(M[d+144>>2]>=M[c+144>>2]){break b}rk(c,d);if(M[c+144>>2]>=M[b+144>>2]){break b}rk(b,c);if(M[b+144>>2]>=M[a+144>>2]){break b}rk(a,b)}}function Zpa(a,b,c){a=a|0;b=b|0;c=c|0;var d=Q(0),e=Q(0),f=Q(0),g=Q(0),h=Q(0);Zi[J[J[b>>2]+64>>2]](a,b,c);e=N[c+4>>2];d=N[c>>2];f=N[c+8>>2];g=Q(Zi[J[J[b>>2]+44>>2]](b));b=Q(Q(f*f)+Q(Q(d*d)+Q(e*e)))>2]=N[a>>2]+Q(g*Q(h*d));N[a+4>>2]=N[a+4>>2]+Q(g*Q(e*d));N[a+8>>2]=N[a+8>>2]+Q(g*Q(f*d))}function OX(a){a=a|0;var b=0,c=0,d=0;if(!kj(a,1)){zS();return 0}if(kk(a,1)){d=Ej(a,1);a=Ui-16|0;Ui=a;b=J[73866];a:{if(!b){break a}c=J[b>>2]-1|0;J[b>>2]=c;if(c){break a}cj(b)}b=d-1|0;if(b>>>0>2){b=14272}else{b=J[(b<<2)+218560>>2]}J[73866]=0;J[54638]=b;if(K[218556]==1){J[a>>2]=b;aa(293419,158960,a|0)|0}Ui=a+16|0;return 0}if(NA(a,1)){yS(J[Vj(a,1)>>2]);return 0}a=AS(Aj(a,1,0));yS(a);CS(a);return 0}function Nl(a,b){var c=0;if(!J[b+100>>2]){return Bl(a,a,b+4|0)}a:{if(J[a>>2]>=0){break a}if(!Pj(a,0)){break a}return-20352}if(Xk(a)>>>0>J[b+88>>2]<<1>>>0){return-20352}c=Zi[J[b+100>>2]](a)|0;b:{if(c){break b}b=b+4|0;while(1){c:{if(J[a>>2]>=0){break c}if(!Pj(a,0)){break c}c=Ql(a,a,b);if(!c){continue}break b}break}while(1){c=0;if((_j(a,b)|0)<0){break b}c=tn(a,a,b);if(!c){continue}break}}return c}function I_(a){a=a|0;var b=0,c=0,d=0,e=0;e=J[a+8>>2]-J[a+12>>2]>>4;rj(a,-10002,56236);c=J[53388];a:{b:{if((e|0)<=0){break b}uj(a,-1);uj(a,1);Wk(a,1,1);b=Ij(a,-1,0);if(!b){break a}_w(b,c);gj(a,-2);if((e|0)==1){break b}b=2;while(1){uj(a,-1);uj(a,b);Wk(a,1,1);d=Ij(a,-1,0);if(!d){break a}dx(9,c);_w(d,c);gj(a,-2);d=(b|0)!=(e|0);b=b+1|0;if(d){continue}break}}dx(10,c);return 0}return fj(a,145858,0)|0}function Hra(a){a=a|0;var b=0,c=0,d=0;c=J[a+204>>2];if((c|0)>0){while(1){a:{b:{b=J[J[a+212>>2]+(d<<2)>>2];switch(J[b+216>>2]-2|0){case 0:case 3:break a;default:break b}}if(!(K[b+204|0]&3)){N[b+404>>2]=Q(N[b+356>>2]*N[b+340>>2])+N[b+404>>2];N[b+408>>2]=Q(N[b+360>>2]*N[b+344>>2])+N[b+408>>2];N[b+412>>2]=Q(N[b+364>>2]*N[b+348>>2])+N[b+412>>2]}c=J[a+204>>2]}d=d+1|0;if((d|0)<(c|0)){continue}break}}}function E0(a){a=a|0;var b=0,c=0,d=0,e=0;e=Ui-16|0;Ui=e;d=jn(a,135350);b=J[d>>2];if(!b){fj(a,66693,0);b=J[d>>2]}c=J[(qs(a,2,31922,258400)<<2)+173712>>2];d=3;a:{if(um(b,Zm(a,3,0),c)){b=J[245744];c=J[a+8>>2];J[c+8>>2]=0;J[a+8>>2]=c+16;J[e>>2]=L[((b>>>0<=153?b:0)<<1)+215472>>1]+213556;ik(a,31902,e);break a}d=1;b=wo(b)}c=J[a+8>>2];J[c+8>>2]=3;O[c>>3]=b|0;J[a+8>>2]=J[a+8>>2]+16;Ui=e+16|0;return d|0}function wea(a){a=a|0;var b=0,c=0,d=0,e=0;c=Ui-16|0;Ui=c;J[c+12>>2]=0;b=-13;a:{if(!dk(J[a+12>>2],J[a+16>>2],J[55330],c+12|0,0)){ht(J[c+12>>2]);b=J[c+12>>2];d=J[b+48>>2];if(d){b=0;while(1){e=J[c+12>>2];if(M[e+56>>2]<=b>>>0){break a}Tk(J[a+24>>2],J[J[e+52>>2]+(b<<2)>>2]);b=b+1|0;if((d|0)!=(b|0)){continue}break}b=J[c+12>>2]}J[J[a+32>>2]>>2]=b;b=0}Ui=c+16|0;return b|0}Z(12664,55499,45,84789);B()}function uk(a,b,c){var d=0,e=0,f=0,g=0;d=Ui-16|0;Ui=d;if(b){if(J[c>>2]){e=c;while(1){f=f+1|0;g=J[e+8>>2];e=e+8|0;if(g){continue}break}}Ow(a,-1e4,98029,1);rj(a,-1,b);if((kj(a,-1)|0)!=5){gj(a,-2);if(Ow(a,-10002,b,f)){J[d>>2]=b;fj(a,148466,d)}uj(a,-1);ej(a,-3,b)}Rl(a,-2);Pk(a,-1)}if(J[c>>2]){while(1){Nk(a,J[c+4>>2],0);ej(a,-2,J[c>>2]);b=J[c+8>>2];c=c+8|0;if(b){continue}break}}gj(a,-1);Ui=d+16|0}function Qp(a,b,c,d,e){var f=0;a:{f=J[a+12>>2];if((f|0)<0){OI(a,(f&2147483647)+8|0);if(J[a+12>>2]<0){break a}}f=J[a>>2]+P(J[a+4>>2],20)|0;J[f+16>>2]=0;J[f+12>>2]=c;J[f+8>>2]=b;J[f+4>>2]=e;J[f>>2]=d;e=J[a+8>>2];b=J[a+12>>2];if((b|0)<0){b=b&2147483647;e=(e+1>>>0)%(b>>>0)|0;J[a+8>>2]=e}c=(J[a+4>>2]+1>>>0)%(b>>>0)|0;J[a+4>>2]=c;J[a+12>>2]=((c|0)==(e|0))<<31|b;return}Z(144851,54268,142,53220);B()}function IZ(a,b,c){a=a|0;b=b|0;c=c|0;var d=0;d=J[a>>2];if((d|0)<0){return-69}c=Dz(d,b,c);a:{if((c|0)>=0){break a}b=J[245744];a=nm(J[a>>2],3,0);J[245744]=b;c=-26752;if((b|0)==6?a&2048:0){break a}c=-80;b:{switch(b-15|0){case 12:return-26752;default:if((b|0)==64){break a}break;case 0:break a;case 1:case 2:case 3:case 4:case 5:case 6:case 7:case 8:case 9:case 10:case 11:break b}}c=-78}return c|0}function zja(a){a=a|0;var b=0,c=0,d=0,e=0,f=0;b=J[a+80>>2];c=b+8|0;e=b+4|0;f=J[a+76>>2];a:{b:{d=J[b+4>>2];if((d|0)==J[b+8>>2]){if(H[b+12|0]&1){break b}lj((d-J[b>>2]>>2)+16|0,4,b,c,e)}b=nj(16);d=J[a>>2];I[b+8>>1]=65535;J[b+4>>2]=f;J[b>>2]=d;d=J[c>>2];c=J[e>>2];if((d|0)==(c|0)){break a}J[e>>2]=c+4;J[c>>2]=b;J[J[a+88>>2]>>2]=b;return 0}Z(151729,53895,501,2284);B()}Z(112520,53895,557,53220);B()}function oma(a){a=a|0;var b=0,c=0,d=0,e=0,f=0,g=0;c=Ui-32|0;Ui=c;f=pj(c+12|0,a,0,36839,148);b=qj(a,1,J[79308],3640);d=J[b+8>>2];e=J[b+12>>2];a:{if(!(d|e)){break a}if(xk(J[b+4>>2],d,e)){break a}J[c>>2]=tj(J[b+8>>2],J[b+12>>2]);fj(a,102051,c)}b=J[b>>2];g=wj(a,2);if(J[b>>2]==2){a=L[b+4>>1];if(!(a&2)){J[b+144>>2]=0;I[b+4>>1]=a|2}N[b+72>>2]=Q(N[b+128>>2]*Q(g))+N[b+72>>2]}oj(f);Ui=c+32|0;return 0}function e$(a){a=a|0;var b=0,c=0,d=0,e=0,f=0;b=Ui-48|0;Ui=b;d=Aj(a,1,0);c=Hk(d,46);a:{if(!c){break a}mj(a,d,c-d|0);f=1;c=nB(a,Ij(a,-1,0),53064);if(!c){break a}e=Hk(d,45);J[b+32>>2]=nq(a,e?e+1|0:d,135027,84320);ik(a,26095,b+32|0);Rl(a,-2);if((YA(a,c)|0)!=2){e=Ij(a,1,0);J[b+24>>2]=Ij(a,-1,0);J[b+20>>2]=c;J[b+16>>2]=e;fj(a,31859,b+16|0)}J[b+4>>2]=c;J[b>>2]=d;ik(a,148818,b)}Ui=b+48|0;return f|0}function Vta(a,b,c,d){a=a|0;b=b|0;c=c|0;d=d|0;var e=0,f=Q(0),g=Q(0),h=Q(0);e=Ui-48|0;Ui=e;Zi[J[J[a>>2]+112>>2]](a,e+32|0,d);f=N[e+32>>2];g=N[e+36>>2];h=N[e+40>>2];J[b+12>>2]=0;N[b+8>>2]=h;N[b+4>>2]=g;N[b>>2]=f;J[e+12>>2]=0;N[e+8>>2]=-h;N[e+4>>2]=-g;N[e>>2]=-f;Zi[J[J[a>>2]+60>>2]](e+16|0,a,e);a=J[e+28>>2];J[c+8>>2]=J[e+24>>2];J[c+12>>2]=a;a=J[e+20>>2];J[c>>2]=J[e+16>>2];J[c+4>>2]=a;Ui=e+48|0}function Afa(a){a=a|0;var b=0,c=0,d=0;d=J[a+4>>2];c=J[J[a+8>>2]+8>>2];b=J[c>>2];$s(J[a>>2],c+4|0);Np(J[a>>2],578,b);vj(J[a>>2],J[b+4>>2]);qP(J[d+2480>>2],J[b+8>>2]);a:{if(H[b+72|0]&1){break a}a=J[b+52>>2];if(a){cj(a)}a=J[b+44>>2];if(!a){break a}cj(a)}b:{if(H[b+40|0]&1){break b}a=J[b+28>>2];if(!a){break b}cj(a)}c:{if(H[b+24|0]&1){break c}a=J[b+12>>2];if(!a){break c}cj(a)}cj(b);cj(c);return 0}function pxa(a,b,c){var d=0,e=0,f=0,g=0;g=c&63;f=g;e=f&31;if(f>>>0>=32){f=-1>>>e|0}else{d=-1>>>e|0;f=d|(1<>>0>=32){d=f<>>32-e|d<>>0>=32){d=-1<>>32-d}a=c&a;b=b&d;d=e&31;if(e>>>0>=32){c=0;a=b>>>d|0}else{c=b>>>d|0;a=((1<>>d}a=a|g;Yi=c|f;return a} +function tv(a,b,c){var d=0,e=0,f=0,g=0,h=0;e=Ui-16|0;Ui=e;J[e+12>>2]=0;H[e+8|0]=1;J[e+4>>2]=a;d=1;if(c){while(1){g=0;d=0;while(1){f=(d<<3)+b|0;a:{if(!Do(J[f>>2],J[f+4>>2])){break a}if(K[a+3272|0]&8){ym(a)}if(!Jm(J[f>>2],J[f+4>>2],84,e+4|0)){break a}H[a+3272|0]=K[a+3272|0]|8;g=1}d=d+1|0;if((d|0)!=(c|0)){continue}break}d=h>>>0<9;h=h+1|0;if(d&g){continue}break}d=K[e+8|0]}Ui=e+16|0;return d&1}function Bla(a){a=a|0;var b=0,c=0,d=0,e=0,f=0;d=Ui-32|0;Ui=d;f=pj(d+12|0,a,0,36839,360);b=qj(a,1,J[79308],3640);c=J[b+8>>2];e=J[b+12>>2];a:{if(!(c|e)){break a}if(xk(J[b+4>>2],c,e)){break a}J[d>>2]=tj(J[b+8>>2],J[b+12>>2]);fj(a,102051,d)}b=J[b>>2];c=ck(a,2);a=L[b+4>>1];b:{if(c){I[b+4>>1]=a|4;break b}c=a&65531;I[b+4>>1]=c;if(a&2){break b}J[b+144>>2]=0;I[b+4>>1]=c|2}oj(f);Ui=d+32|0;return 0}function xja(a){a=a|0;var b=0,c=0,d=0,e=0,f=0,g=0;a:{b=J[a+8>>2];c=J[b+4>>2];d=J[b>>2];if((c|0)==(d|0)){break a}e=J[J[a+16>>2]>>2];a=c-d>>2;g=a>>>0<=1?1:a;a=0;while(1){f=(a<<2)+d|0;if(J[f>>2]!=(e|0)){a=a+1|0;if((g|0)!=(a|0)){continue}break a}break}J[f>>2]=J[c-4>>2];a=J[b+4>>2]-4|0;J[b+4>>2]=a;if(a>>>0>=M[b>>2]){if(e){cj(e)}return 0}Z(12682,53895,540,43537);B()}Z(62644,38148,97,3246);B()}function qs(a,b,c,d){var e=0,f=0,g=0;e=Ui-32|0;Ui=e;a:{if(c){f=mm(a,b,c,0);break a}f=Ij(a,b,0);if(f){break a}f=J[64412];c=kj(a,b);if((c|0)==-1){c=60960}else{c=J[(c<<2)+257632>>2]}J[e+20>>2]=c;J[e+16>>2]=f;Dk(a,b,ik(a,26749,e+16|0));f=0}g=J[d>>2];b:{if(g){c=0;while(1){if(!jj(g,f)){break b}c=c+1|0;g=J[(c<<2)+d>>2];if(g){continue}break}}J[e>>2]=f;c=Dk(a,b,ik(a,147289,e))}Ui=e+32|0;return c}function mna(a){a=a|0;var b=0,c=0,d=0,e=0;b=Ui-16|0;Ui=b;c=J[a+24>>2];d=J[a+4>>2];J[b+12>>2]=0;d=PR(J[a>>2],d,c,J[a+8>>2],b+12|0);Uj(c);if(!d){c=J[b+12>>2];J[J[a+28>>2]+8>>2]=c;e=J[a+28>>2];a=J[c>>2];J[e+16>>2]=((((((L[a+1056>>1]<<1)+J[a+3136>>2]|0)+J[a+3184>>2]-(J[a+3128>>2]+J[a+3176>>2])|0)+P(J[a+3160>>2]-J[a+3152>>2]>>4,12)|0)+J[a+1044>>2]|0)-J[a+1036>>2]|0)+3284}Ui=b+16|0;return d|0}function fsa(a,b,c,d){a=a|0;b=b|0;c=c|0;d=d|0;var e=0,f=0,g=0;e=J[b>>2];e=Zi[J[J[e>>2]+48>>2]](e,28)|0;f=K[a+4|0];g=J[a+8>>2];a=J[a+12>>2];J[e>>2]=244932;J[e+4>>2]=J[b>>2];J[e+24>>2]=a;J[e+20>>2]=g;H[e+16|0]=f;J[e+12>>2]=0;H[e+8|0]=0;J[e>>2]=245368;a=J[e+4>>2];b=f?d:c;c=f?c:d;if(Zi[J[J[a>>2]+24>>2]](a,b,c)|0){a=J[e+4>>2];a=Zi[J[J[a>>2]+12>>2]](a,b,c)|0;H[e+8|0]=1;J[e+12>>2]=a}return e|0}function Pda(a){a=a|0;var b=0,c=0,d=0,e=0,f=0,g=0;c=Ui-16|0;Ui=c;J[c+12>>2]=0;d=-13;b=J[a+12>>2];e=J[b>>2];a:{if(dk(b+4|0,e,J[60374],c+8|0,0)){break a}f=J[c+8>>2];d=J[f+24>>2];e=J[f+28>>2]|d?d:(b+e|0)+4|0;g=J[a+20>>2]<0?J[a+12>>2]:g;d=0;b=nj(132);ij(b+12|0,0,120);J[b+8>>2]=e;J[b+4>>2]=f;J[b>>2]=g;J[J[a+32>>2]>>2]=b;if(!g){break a}a=J[a+36>>2];if(!a){break a}H[a|0]=1}Ui=c+16|0;return d|0}function J0(a){a=a|0;var b=0,c=0,d=0;d=Ui-16|0;Ui=d;c=jn(a,135350);b=J[c>>2];if(!b){fj(a,66693,0);b=J[c>>2]}a:{if(!$n(b)){b=J[a+8>>2];J[b+8>>2]=1;J[b>>2]=1;J[a+8>>2]=J[a+8>>2]+16;a=1;break a}b=J[245744];c=J[a+8>>2];J[c+8>>2]=0;J[a+8>>2]=c+16;J[d>>2]=L[((b>>>0<=153?b:0)<<1)+215472>>1]+213556;ik(a,31902,d);c=J[a+8>>2];J[c+8>>2]=3;O[c>>3]=b|0;J[a+8>>2]=J[a+8>>2]+16;a=3}Ui=d+16|0;return a|0}function DR(a,b,c,d,e,f){var g=0,h=0,i=0,j=0,k=0,l=0,m=0;a:{b:{if(!b){break b}k=1;while(1){i=(h<<5)+a|0;j=J[i+24>>2];if(j){m=J[i+20>>2];g=0;while(1){if((g|0)==(j|0)){break a}l=(g<<3)+m|0;if((c|0)==J[l>>2]&J[l+4>>2]==(d|0)){J[e>>2]=J[i>>2];J[f>>2]=g;break b}g=g+1|0;if((j|0)!=(g|0)){continue}break}}h=h+1|0;k=h>>>0>>0;if((b|0)!=(h|0)){continue}break}}return k}Z(12664,54938,39,84789);B()}function Uea(a){a=a|0;var b=0,c=0,d=0;b=nj(12);J[b+4>>2]=0;J[b+8>>2]=0;d=J[a+24>>2];J[b>>2]=d;a:{c=J[a>>2];d=wk(c,J[d+108>>2],b+4|0);if(d){break a}if(J[J[J[b+4>>2]>>2]+168>>2]){dj(4,88458,150760,0);d=-15;break a}d=wk(c,J[J[b>>2]+104>>2],b+8|0);if(d){break a}J[J[a+28>>2]+8>>2]=b;return 0}a=J[a>>2];c=J[b>>2];if(c){Uj(c)}c=J[b+4>>2];if(c){vj(a,c)}c=J[b+8>>2];if(c){vj(a,c)}cj(b);return d|0}function Q7(a,b,c,d){a=a|0;b=b|0;c=c|0;d=d|0;var e=0,f=0,g=0,h=0;e=J[b+28>>2];f=J[b+24>>2];a=(e-f|0)/12|0;g=-1;a:{b:{if((e|0)==(f|0)){break b}e=a>>>0<=1?1:a;b=0;while(1){h=P(b,12)+f|0;if(J[h+4>>2]==(c|0)){if(a>>>0<=b>>>0){break a}g=J[h>>2];break b}b=b+1|0;if((e|0)!=(b|0)){continue}break}}a=Ui-16|0;Ui=a;Xb(g|0,a+12|0)|0;Ui=a+16|0;ek(d,J[a+12>>2],128);return}Z(145396,53895,487,84789);B()}function OT(a){a=a|0;var b=0,c=0,d=0,e=0;J[a>>2]=245256;d=J[a+12>>2];if((d|0)>0){while(1){e=b<<2;c=J[e+J[a+20>>2]>>2];if(c){Zi[J[J[c>>2]>>2]](c)|0;c=J[a+4>>2];Zi[J[J[c>>2]+52>>2]](c,J[J[a+20>>2]+e>>2])}b=b+1|0;if((d|0)!=(b|0)){continue}break}}b=J[a+20>>2];if(!(b?!b|K[a+24|0]!=1:1)){J[83765]=J[83765]+1;Zi[J[61751]](J[b-4>>2])}J[a+20>>2]=0;H[a+24|0]=1;J[a+12>>2]=0;J[a+16>>2]=0;return a|0}function GZ(a,b,c){a=a|0;b=b|0;c=c|0;var d=0;d=Ui-96|0;Ui=d;ij(d+4|0,0,92);J[d+28>>2]=-1009589776;J[d+20>>2]=-1732584194;J[d+24>>2]=271733878;J[d+12>>2]=1732584193;J[d+16>>2]=-271733879;a:{if(!b){break a}J[d+4>>2]=b;if(b>>>0>=64){while(1){hs(d+4|0,a);a=a- -64|0;b=b+-64|0;if(b>>>0>63){continue}break}if(!b){break a}}hj(d+32|0,a,b)}a=d+4|0;es(a,c);Zi[J[66509]](a,0,92)|0;Ui=d+96|0;return 0}function $T(a,b){a=a|0;b=Q(b);var c=Q(0),d=Q(0),e=Q(0),f=Q(0),g=Q(0),h=Q(0),i=Q(0),j=Q(0);c=Q(Zi[J[J[a>>2]+44>>2]](a));d=Q(Zi[J[J[a>>2]+44>>2]](a));e=Q(Zi[J[J[a>>2]+44>>2]](a));N[a+44>>2]=b;b=N[a+36>>2];f=N[a+28>>2];g=N[a+32>>2];h=Q(Zi[J[J[a>>2]+44>>2]](a));i=Q(Zi[J[J[a>>2]+44>>2]](a));j=Q(Zi[J[J[a>>2]+44>>2]](a));J[a+40>>2]=0;N[a+32>>2]=Q(d+g)-i;N[a+28>>2]=Q(c+f)-h;N[a+36>>2]=Q(e+b)-j}function fma(a){a=a|0;var b=0,c=0,d=0,e=0,f=Q(0),g=0,h=Q(0),i=Q(0);c=Ui+-64|0;Ui=c;g=pj(c+44|0,a,1,36839,196);b=qj(a,1,J[79308],3640);d=J[b+8>>2];e=J[b+12>>2];a:{if(!(d|e)){break a}if(xk(J[b+4>>2],d,e)){break a}J[c>>2]=tj(J[b+8>>2],J[b+12>>2]);fj(a,102051,c)}f=N[79200];b=J[b>>2];h=N[b+76>>2];i=N[b+80>>2];b=c+16|0;J[b+8>>2]=0;N[b+4>>2]=f*i;N[b>>2]=f*h;cl(a,b);oj(g);Ui=c- -64|0;return 1}function _la(a){a=a|0;var b=0,c=0,d=0,e=0,f=Q(0),g=0,h=Q(0),i=Q(0);c=Ui+-64|0;Ui=c;g=pj(c+44|0,a,1,36839,188);b=qj(a,1,J[79308],3640);d=J[b+8>>2];e=J[b+12>>2];a:{if(!(d|e)){break a}if(xk(J[b+4>>2],d,e)){break a}J[c>>2]=tj(J[b+8>>2],J[b+12>>2]);fj(a,102051,c)}f=N[79200];b=J[b>>2];h=N[b+28>>2];i=N[b+32>>2];b=c+16|0;J[b+8>>2]=0;N[b+4>>2]=f*i;N[b>>2]=f*h;cl(a,b);oj(g);Ui=c- -64|0;return 1}function Tla(a){a=a|0;var b=0,c=0,d=0,e=0,f=Q(0),g=0,h=Q(0),i=Q(0);c=Ui+-64|0;Ui=c;g=pj(c+44|0,a,1,36839,180);b=qj(a,1,J[79308],3640);d=J[b+8>>2];e=J[b+12>>2];a:{if(!(d|e)){break a}if(xk(J[b+4>>2],d,e)){break a}J[c>>2]=tj(J[b+8>>2],J[b+12>>2]);fj(a,102051,c)}f=N[79200];b=J[b>>2];h=N[b+44>>2];i=N[b+48>>2];b=c+16|0;J[b+8>>2]=0;N[b+4>>2]=f*i;N[b>>2]=f*h;cl(a,b);oj(g);Ui=c- -64|0;return 1}function Sda(a){a=a|0;var b=0,c=0,d=0,e=0,f=0,g=0;c=Ui-16|0;Ui=c;e=J[a+4>>2];d=J[a+24>>2];b=nj(16);J[b>>2]=0;J[b+4>>2]=0;J[b+8>>2]=0;J[b+12>>2]=0;a:{if(J[J[d+4>>2]+4>>2]){H[b+8|0]=K[b+8|0]|1;f=J[a+8>>2];I[c+12>>1]=0;I[c+4>>1]=0;J[c+8>>2]=0;J[c>>2]=0;d=TQ(f,e,d,c,0,0,b);if(!d){J[J[a+28>>2]+8>>2]=b;break a}cj(b);g=d;break a}J[b>>2]=0;J[b+4>>2]=0;J[J[a+28>>2]+8>>2]=b}Ui=c+16|0;return g|0}function eD(a,b,c){var d=0,e=0;e=L[c+650>>1]|L[c+648>>1]<<16;Bk(a,J[c+640>>2],J[c+644>>2]);d=Sj(a,8);J[d+4>>2]=e;J[d>>2]=b;rj(a,-1e4,1423);Mj(a,-2);Xj(a,-3);a:{c=L[c+658>>1];e=L[98140];if((c|0)!=(e|0)){while(1){c=c&65535;d=J[b+32>>2];if(c>>>0>=(J[b+36>>2]-d|0)/672>>>0){break a}c=d+P(c,672)|0;eD(a,b,c);c=L[c+654>>1];if((e|0)!=(c|0)){continue}break}}return}Z(145396,53895,487,84789);B()}function Vla(a){a=a|0;var b=0,c=0,d=0,e=0,f=Q(0),g=0,h=Q(0),i=Q(0);c=Ui+-64|0;Ui=c;g=pj(c+44|0,a,1,36839,93);b=qj(a,1,J[79308],3640);d=J[b+8>>2];e=J[b+12>>2];a:{if(!(d|e)){break a}if(xk(J[b+4>>2],d,e)){break a}J[c>>2]=tj(J[b+8>>2],J[b+12>>2]);fj(a,102051,c)}f=N[79200];b=J[b>>2];h=N[b+12>>2];i=N[b+16>>2];b=c+16|0;J[b+8>>2]=0;N[b+4>>2]=f*i;N[b>>2]=f*h;cl(a,b);oj(g);Ui=c- -64|0;return 1}function Fca(a,b,c,d,e,f){a=a|0;b=b|0;c=c|0;d=d|0;e=e|0;f=f|0;var g=0,h=0,i=0;a=Ui-16|0;Ui=a;g=J[J[b+8>>2]>>2];Tj(g);h=J[b+16>>2];i=J[b+20>>2];a:{b:{c=J[J[b+8>>2]+8>>2];if(J[c+16>>2]-J[c+20>>2]>>>0>=e>>>0){break b}if(RV(c,e)){break b}J[a>>2]=e;dj(4,88458,154956,a);break a}J[a+12>>2]=e;J[a+4>>2]=f;J[a+8>>2]=d;PV(c,h,i,!d,a+4|0)}J[b+24>>2]=J[b+24>>2]&2147483647;Lj(g);Ui=a+16|0;return 1}function Dk(a,b,c){var d=0,e=0;d=Ui-144|0;Ui=d;a:{if(!Zl(a,0,d+44|0)){J[d+4>>2]=c;J[d>>2]=b;a=fj(a,136768,d);break a}Yo(a,48363,d+44|0);b:{if(jj(J[d+52>>2],70889)){break b}b=b-1|0;if(b){break b}J[d+16>>2]=J[d+48>>2];J[d+20>>2]=c;a=fj(a,136632,d+16|0);break a}e=J[d+48>>2];if(!e){J[d+48>>2]=102200;e=102200}J[d+40>>2]=c;J[d+36>>2]=e;J[d+32>>2]=b;a=fj(a,136897,d+32|0)}Ui=d+144|0;return a}function ux(a){var b=0,c=0;b=J[215668];c=J[a+8>>2];J[c+8>>2]=3;O[c>>3]=b|0;J[a+8>>2]=J[a+8>>2]+16;b=Ui-32|0;Ui=b;pj(b+12|0,a,0,37704,1232);Hu(a);a:{if((kj(a,-1)|0)!=5){gj(a,-3);c=J[a+8>>2];J[c+8>>2]=0;J[a+8>>2]=c+16;break a}Pk(a,-2);Ck(a,-2);Pk(a,-2);gj(a,-2)}oj(b+12|0);Ui=b+32|0;b:{c:{if((kj(a,-1)|0)!=2){gj(a,-2);break c}b=Vj(a,-1);gj(a,-2);if(b){break b}}b=0;fj(a,71742,0)}return b}function pK(a,b,c,d,e,f,g,h,i,j,k){ij(a+12|0,0,100);J[a+112>>2]=c;J[a>>2]=b;H[a+48|0]=1;J[a+44>>2]=3;J[a+40>>2]=0;H[a+24|0]=129;J[a+20>>2]=7;J[a+16>>2]=e;H[a+12|0]=129;J[a+8>>2]=7;J[a+4>>2]=d;H[a+96|0]=k&127;J[a+92>>2]=2;J[a+88>>2]=j;H[a+84|0]=1;J[a+80>>2]=4;J[a+76>>2]=i;H[a+72|0]=1;J[a+68>>2]=4;J[a+64>>2]=h;H[a+60|0]=1;J[a+56>>2]=3;J[a+52>>2]=g;H[a+36|0]=1;J[a+32>>2]=3;J[a+28>>2]=f}function jx(a){var b=0,c=0,d=0,e=0,f=0,g=0;c=J[J[245446]+16>>2];if(c){Tj(c)}b=L[a+32>>1]-1|0;I[a+32>>1]=b;a:{b:{if(!(b&65535)){b=J[a+8>>2];if(b){cj(b)}b=J[245446];d=J[b+64>>2];if(!d){break b}e=L[b+70>>1]-1|0;f=e&65535;if(f>>>0>=L[b+68>>1]){break a}g=L[a+24>>1];I[b+70>>1]=e;I[(f<<1)+d>>1]=g;I[a+24>>1]=65535}if(c){Lj(c)}return 0}Z(49493,54340,140,53220);B()}Z(2650,54340,141,53220);B()}function Wma(a){a=a|0;var b=0,c=0,d=0,e=0,f=0,g=0;b=Ui-32|0;Ui=b;f=Vj(a,1);c=J[f+4>>2];J[b+8>>2]=0;J[b+12>>2]=0;d=J[J[c+80>>2]+8>>2];a:{if(!d){break a}d=J[d>>2];if(!d){break a}e=J[d+3216>>2];g=J[d+3220>>2]}J[b>>2]=e;J[b+4>>2]=g;e=J[c+100>>2];J[b+16>>2]=J[c+96>>2];J[b+20>>2]=e;e=J[J[c+84>>2]>>2]+P(L[f+24>>1],96)|0;c=J[e+4>>2];J[b+24>>2]=J[e>>2];J[b+28>>2]=c;wm(a,b);Ui=b+32|0;return 1}function F1(a){a=a|0;var b=0,c=0,d=0,e=0,f=Q(0);b=Ui-32|0;Ui=b;e=J[Vj(a,1)>>2];c=Ej(a,2);d=J[e>>2];a:{if(!((c|0)<=0|(c|0)>(d|0))){f=N[(J[e+4>>2]+(c<<2)|0)-4>>2];c=J[a+8>>2];J[c+8>>2]=3;O[c>>3]=f;J[a+8>>2]=J[a+8>>2]+16;a=1;break a}if((d|0)>0){J[b+8>>2]=d;J[b+4>>2]=32205;J[b>>2]=53139;a=fj(a,130181,b);break a}J[b+20>>2]=32205;J[b+16>>2]=53139;a=fj(a,131268,b+16|0)}Ui=b+32|0;return a|0}function Bna(a,b){a=a|0;b=b|0;I[b+104>>1]=200;J[b+16>>2]=J[a+12>>2];J[b+100>>2]=J[b+100>>2]&-65537|65536;J[b+100>>2]=J[b+100>>2]&-131073|131072;J[b+20>>2]=93;J[b+24>>2]=94;J[b+28>>2]=95;J[b+32>>2]=96;J[b+36>>2]=97;J[b+40>>2]=98;J[b+44>>2]=99;J[b+52>>2]=100;J[b+56>>2]=101;J[b+68>>2]=102;J[b+72>>2]=103;J[b+76>>2]=104;J[b+80>>2]=105;J[b+84>>2]=106;J[b+88>>2]=107;J[b+96>>2]=108;return 0}function f8(a){a=a|0;var b=0,c=0,d=0,e=0,f=0;b=Ui-16|0;Ui=b;e=J[a+8>>2]-J[a+12>>2]>>4;Bj(a);d=qj(a,-1,J[219396],139183);gj(a,-2);Qj(a,1,b+12|0);a:{b:{if(Mk(a,2)){c=Aj(a,2,0);if($C(d,J[b+12>>2],c)){break b}break a}c=Tl(a,2);f=d;d=Yi;if(!YN(f,J[b+12>>2],c,d)){break a}c=tj(c,d)}J[b>>2]=c;fj(a,65471,b)}if(J[a+8>>2]-J[a+12>>2]>>4!=(e|0)){Z(143244,37682,1894,62991);B()}Ui=b+16|0;return 0}function _l(a){var b=0,c=0,d=0,e=0,f=0,g=0,h=0,i=0;c=a+12|0;b=J[a>>2];a:{if((c|0)==(b|0)){break a}mj(J[a+8>>2],c,b-c|0);J[a>>2]=c;b=J[a+4>>2];J[a+4>>2]=b+1;if((b|0)<=0){break a}e=J[a+8>>2];f=fl(e,-1);d=1;while(1){b:{b=d;g=fl(e,b^-1);d=b+1|0;h=J[a+4>>2];i=(h-b|0)>8|f>>>0>g>>>0;if(!i){break b}f=f+g|0;if((d|0)<(h|0)){continue}}break}b=i?d:b;lm(e,b);J[a+4>>2]=(J[a+4>>2]-b|0)+1}return c}function Wta(a,b,c){a=a|0;b=b|0;c=c|0;var d=Q(0),e=Q(0),f=Q(0),g=Q(0),h=Q(0),i=Q(0);g=N[a+36>>2];h=N[a+32>>2];d=N[a+28>>2];e=Q(1);a:{b:{c:{d:{e:{switch(c|0){case 1:e=Q(-1);break b;case 2:f=Q(1);break c;case 3:f=Q(-1);break c;case 4:d=Q(1);break d;case 0:break b;case 5:break e;default:break a}}d=Q(-1)}i=d;e=Q(0);d=g;break b}e=Q(0);d=h}N[b+8>>2]=i;N[b+4>>2]=f;N[b>>2]=e;N[b+12>>2]=-d}}function K6(a,b,c,d){a=a|0;b=b|0;c=c|0;d=d|0;var e=0,f=0,g=0;g=a+2196|0;a:{b:{e=J[a+2196>>2];f=J[a+2200>>2];if((e|0)==(f|0)){if(H[a+2204|0]&1){break b}f=e;e=a+2192|0;a=a+2200|0;lj(((f-J[e>>2]|0)/12|0)+16|0,12,e,a,g);f=J[a>>2];e=J[g>>2]}if((e|0)==(f|0)){break a}J[g>>2]=e+12;J[e+8>>2]=d&2147483647;J[e+4>>2]=c;J[e>>2]=b;return}Z(151729,53895,501,2284);B()}Z(112520,53895,557,53220);B()}function F8(a){a=a|0;var b=0,c=0,d=0,e=0,f=0;b=Ui-16|0;Ui=b;e=J[a+8>>2]-J[a+12>>2]>>4;Bj(a);d=qj(a,-1,J[219396],139183);gj(a,-2);Qj(a,1,b+12|0);a:{b:{if(Mk(a,2)){c=Aj(a,2,0);if(kO(d,J[b+12>>2],c)){break b}break a}c=Tl(a,2);f=d;d=Yi;if(!jO(f,J[b+12>>2],c,d)){break a}c=tj(c,d)}J[b>>2]=c;fj(a,65358,b)}if(J[a+8>>2]-J[a+12>>2]>>4!=(e|0)){Z(143244,37682,2478,12717);B()}Ui=b+16|0;return 0}function EM(a,b){var c=0;a:{b:{if(J[a+8>>2]-J[a>>2]>>5>>>0<=b>>>0){if(H[a+28|0]&1){break a}lj(b,8,a+16|0,a+24|0,a+20|0);if(H[a+12|0]&1){break a}lj(b,32,a,a+8|0,a+4|0);if(H[a+44|0]&1){break a}lj(b,4,a+32|0,a+40|0,a+36|0);c=J[a+32>>2];if(J[a+40>>2]-c>>2>>>0>>0){break b}J[a+36>>2]=(b<<2)+c;return}Z(144726,54416,76,2284);B()}Z(144782,53895,514,59583);B()}Z(151729,53895,501,2284);B()}function B8(a){a=a|0;var b=0,c=0,d=0,e=0,f=0;b=Ui-16|0;Ui=b;e=J[a+8>>2]-J[a+12>>2]>>4;Bj(a);d=qj(a,-1,J[219396],139183);gj(a,-2);Qj(a,1,b+12|0);a:{b:{if(Mk(a,2)){c=Aj(a,2,0);if(cD(d,J[b+12>>2],c)){break b}break a}c=Tl(a,2);f=d;d=Yi;if(!hO(f,J[b+12>>2],c,d)){break a}c=tj(c,d)}J[b>>2]=c;fj(a,65394,b)}if(J[a+8>>2]-J[a+12>>2]>>4!=(e|0)){Z(143244,37682,2542,33115);B()}Ui=b+16|0;return 0}function xv(a,b,c){var d=0,e=0,f=0,g=0;d=J[a>>2];Tj(J[d+3232>>2]);a:{b:{a=J[d+3196>>2];e=J[d+3200>>2];if((a|0)==(e|0)){if(H[d+3204|0]&1){break b}a=d+3192|0;f=(e-J[a>>2]>>3)+1|0;g=a;e=d+3200|0;a=d+3196|0;lj(f,8,g,e,a);e=J[e>>2];a=J[a>>2]}if((a|0)==(e|0)){break a}J[d+3196>>2]=a+8;J[a>>2]=b;J[a+4>>2]=c;Lj(J[d+3232>>2]);return}Z(151729,53895,501,2284);B()}Z(112520,53895,557,53220);B()}function _6(a,b,c,d){a=a|0;b=b|0;c=c|0;d=d|0;var e=0,f=Q(0),g=0;e=Ui-48|0;Ui=e;a=J[a+4>>2];g=J[a>>2];if(g){f=N[a+20>>2];N[e+16>>2]=f*N[b>>2];N[e+20>>2]=f*N[b+4>>2];N[e+24>>2]=f*N[b+8>>2];N[e+32>>2]=f*N[c>>2];N[e+36>>2]=f*N[c+4>>2];N[e+40>>2]=f*N[c+8>>2];b=J[d+4>>2];c=J[d>>2];f=N[d+8>>2];N[e+12>>2]=N[a+12>>2];N[e+8>>2]=f;J[e>>2]=c;J[e+4>>2]=b;Zi[g|0](e+16|0,2,e,J[a+8>>2])}Ui=e+48|0}function Fna(a){a=a|0;var b=0,c=0,d=0,e=0;c=Ui-16|0;Ui=c;b=J[J[a+16>>2]>>2];a=J[a+12>>2];if(a){a=J[a+124>>2]}else{a=0}e=J[a+8>>2]-J[a+12>>2]|0;Nj(a,-1e4,J[b+12>>2]);Ok(a);Nj(a,-1e4,J[b+16>>2]);vR(J[b>>2],J[b+28>>2],a);gj(a,-2);d=J[a+8>>2];J[d+8>>2]=0;J[a+8>>2]=d+16;Ok(a);J[c+12>>2]=0;Cy(a,J[b>>2],6,b,c+12|0);if(e>>4!=J[a+8>>2]-J[a+12>>2]>>4){Z(143244,37648,777,76261);B()}Ui=c+16|0}function FM(a,b){var c=0;a:{b:{if(J[a+8>>2]-J[a>>2]>>3>>>0<=b>>>0){if(H[a+28|0]&1){break a}lj(b,8,a+16|0,a+24|0,a+20|0);if(H[a+12|0]&1){break a}lj(b,8,a,a+8|0,a+4|0);if(H[a+44|0]&1){break a}lj(b,4,a+32|0,a+40|0,a+36|0);c=J[a+32>>2];if(J[a+40>>2]-c>>2>>>0>>0){break b}J[a+36>>2]=(b<<2)+c;return}Z(144726,54416,76,2284);B()}Z(144782,53895,514,59583);B()}Z(151729,53895,501,2284);B()}function BC(a,b){var c=0;a:{b:{if(J[a+8>>2]-J[a>>2]>>2>>>0<=b>>>0){if(H[a+28|0]&1){break a}lj(b,8,a+16|0,a+24|0,a+20|0);if(H[a+12|0]&1){break a}lj(b,4,a,a+8|0,a+4|0);if(H[a+44|0]&1){break a}lj(b,4,a+32|0,a+40|0,a+36|0);c=J[a+32>>2];if(J[a+40>>2]-c>>2>>>0>>0){break b}J[a+36>>2]=(b<<2)+c;return}Z(144726,54416,76,2284);B()}Z(144782,53895,514,59583);B()}Z(151729,53895,501,2284);B()}function Mda(a){a=a|0;var b=0,c=0;b=J[J[a+8>>2]+8>>2];c=J[b+80>>2];if(c){vj(J[a>>2],c)}a=J[b+96>>2];if(a){Uj(a)}a=J[b+100>>2];if(a){Mx(a)}a:{if(H[b+76|0]&1){break a}a=J[b+56>>2];if(a){cj(a)}a=J[b+48>>2];if(!a){break a}cj(a)}b:{if(H[b+44|0]&1){break b}a=J[b+24>>2];if(a){cj(a)}a=J[b+16>>2];if(!a){break b}cj(a)}c:{if(H[b+12|0]&1){break c}a=J[b>>2];if(!a){break c}cj(a)}cj(b);return 0}function Xl(a){var b=0,c=0,d=0;d=Ui-16|0;Ui=d;c=J[61752];a:{if(J[c>>2]==(a|0)){b=c;break a}b=J[c+24>>2];b:{if(b){while(1){if(J[b>>2]==(a|0)){break b}b=J[b+28>>2];if(b){continue}break}}b=nj(32);VV(b,a,c);J[b+28>>2]=J[c+24>>2];J[c+24>>2]=b}J[61752]=b}J[b+4>>2]=J[b+4>>2]+1;a=J[b+16>>2];J[b+16>>2]=a+1;if(!a){mo(d);J[b+12>>2]=(J[d+8>>2]-J[83768]|0)+P(J[d>>2]-J[83766]|0,1e6)}Ui=d+16|0}function Tq(a,b){var c=0,d=0,e=0;c=J[a+102796>>2];if((c|0)<32){c=P(c,12)+a|0;J[c+102416>>2]=b;e=c+102412|0;c=J[a+102400>>2];d=c+b|0;a:{if((d|0)>=102401){d=1;c=sj(b);break a}J[a+102400>>2]=d;d=0;c=a+c|0}H[e+8|0]=d;J[e>>2]=c;b=J[a+102404>>2]+b|0;J[a+102404>>2]=b;J[a+102796>>2]=J[a+102796>>2]+1;d=a;a=J[a+102408>>2];J[d+102408>>2]=(a|0)>(b|0)?a:b;return c}Z(23575,39674,38,62238);B()}function Hn(a,b,c){var d=0,e=0,f=0,g=0,h=0;f=Ui-16|0;Ui=f;a:{if(!c){break a}e=J[a>>2];while(1){b:{if(e){d=J[a+4>>2];break b}d=Zi[J[a+8>>2]](J[a+16>>2],J[a+12>>2],f+12|0)|0;if(!d){g=c;break a}e=J[f+12>>2];if(!e){g=c;break a}J[a+4>>2]=d;J[a>>2]=e}h=d;d=c>>>0>>0?c:e;b=hj(b,h,d);e=J[a>>2]-d|0;J[a>>2]=e;J[a+4>>2]=d+J[a+4>>2];b=b+d|0;c=c-d|0;if(c){continue}break}}Ui=f+16|0;return g}function xl(a,b,c){var d=0,e=0,f=0,g=0;d=Ui-80|0;Ui=d;J[d+12>>2]=c;g=Mw(a,b,c);b=J[a+20>>2];c=J[b+4>>2];if(!(J[c+8>>2]!=6|K[J[c>>2]+6|0])){e=J[a+24>>2];J[b+12>>2]=e;c=J[J[c>>2]+16>>2];e=e-J[c+12>>2]|0;f=-1;a:{if((e|0)<4){break a}b=J[c+20>>2];f=0;if(!b){break a}f=J[(b+e|0)-4>>2]}b=f;e=d+16|0;Xn(e,J[c+32>>2]+16|0,60);J[d+8>>2]=g;J[d+4>>2]=b;J[d>>2]=e;gk(a,30545,d)}AI(a);Ui=d+80|0}function _m(a,b){var c=0,d=0,e=0,f=0,g=0;J[a+28>>2]=J[a+24>>2];a:{if((b|0)!=-1){c=J[a+32>>2];if((c|0)==-1){break a}g=J[J[a>>2]+12>>2];while(1){d=c;e=(d<<2)+g|0;f=J[e>>2];c=(f>>>14|0)-131071|0;if((c|0)!=-1){c=(d+c|0)+1|0;if((c|0)!=-1){continue}}break}d=(d^-1)+b|0;b=d>>31;if((b^d)-b>>>0>=131072){qk(J[a+12>>2],56034);f=J[e>>2]}J[e>>2]=(f&16383|d<<14)+2147467264}return}J[a+32>>2]=b}function Qta(a,b,c){a=a|0;b=b|0;c=c|0;var d=Q(0),e=Q(0),f=Q(0),g=Q(0),h=Q(0),i=Q(0),j=Q(0),k=Q(0),l=Q(0);d=N[b+28>>2];e=N[b+32>>2];f=N[b+36>>2];g=Q(Zi[J[J[b>>2]+44>>2]](b));h=Q(Zi[J[J[b>>2]+44>>2]](b));i=Q(Zi[J[J[b>>2]+44>>2]](b));j=N[c>>2];k=N[c+4>>2];l=N[c+8>>2];J[a+12>>2]=0;f=Q(f+i);N[a+8>>2]=l>=Q(0)?f:Q(-f);e=Q(e+h);N[a+4>>2]=k>=Q(0)?e:Q(-e);d=Q(d+g);N[a>>2]=j>=Q(0)?d:Q(-d)}function NN(a,b){var c=0,d=0,e=0,f=0;if(!K[874264]){nl();H[874264]=1}if(K[874164]==1){d=J[218540];Tj(d);if(!K[874264]){nl();H[874264]=1}c=J[218543];a:{if(!c){break a}c=J[J[218542]+((a>>>0)%(c>>>0)<<2)>>2];if((c|0)==-1){break a}e=J[218544];while(1){c=(c<<4)+e|0;if(J[c>>2]!=(a|0)){c=J[c+12>>2];if((c|0)!=-1){continue}break a}break}if(b){J[b>>2]=L[c+8>>1]}f=J[c+4>>2]}Lj(d)}return f}function qv(a){var b=0,c=0,d=0;c=Ui-16|0;Ui=c;a:{if(!a){break a}d=J[a>>2];if(!d){break a}b=J[d>>2]}b:{if(!am(b,82181,c+12|0)){b=0;c:{if(!a){break c}d=J[a>>2];if(!d){break c}b=J[d+4>>2]}if(!My(b,J[c+12>>2],c+8|0)){break b}Ui=c+16|0;b=J[c+8>>2];a=J[a>>2];if(b>>>0>2]>>2]){a=J[(a+(b<<2)|0)+12>>2]}else{a=0}return a}Z(92938,40402,395,71918);B()}Z(111325,40402,398,71918);B()}function p1(a,b,c,d){a=a|0;b=b|0;c=c|0;d=d|0;var e=0,f=0,g=0;e=Ui-16|0;Ui=e;J[e+12>>2]=0;g=J[a+12>>2];f=J[a+4>>2];if(g>>>0<=f>>>0){f=f-g|0;c=c>>>0>>0?c:f;a:{if(!c){J[d>>2]=0;a=-5;break a}b=Bs(J[a+24>>2],J[a+20>>2]+g|0,c,b,e+8|0);b:{if(b>>>0<=1){c=J[e+8>>2];J[d>>2]=c;J[a+12>>2]=c+J[a+12>>2];break b}J[d>>2]=0}a=(b|0)==-18?-5:0}Ui=e+16|0;return a|0}Z(59999,37329,244,49332);B()}function O2(a){a=a|0;var b=0,c=0,d=0,e=0;b=Ui-80|0;Ui=b;e=J[a+8>>2]-J[a+12>>2]|0;c=b+6|0;ij(c,0,74);yJ(c);Fj(a,0,0);mj(a,47388,7);xj(a,b+22|0);Xj(a,-3);mj(a,110165,12);xj(a,b+38|0);Xj(a,-3);mj(a,55876,8);c=K[b+79|0];d=J[a+8>>2];J[d+8>>2]=1;J[d>>2]=(c|0)!=0;J[a+8>>2]=J[a+8>>2]+16;Xj(a,-3);if(((e>>4)+1|0)!=J[a+8>>2]-J[a+12>>2]>>4){Z(143334,39097,838,44412);B()}Ui=b+80|0;return 1}function xZ(a){a=a|0;var b=0,c=0,d=0,e=0,f=0,g=0;b=Ui-32|0;Ui=b;c=2;d=Tn(a,1066);e=Aj(a,2,0);f=Aj(a,3,0);J[b+28>>2]=0;J[b+20>>2]=0;J[b+24>>2]=0;J[b+12>>2]=0;J[b+16>>2]=0;J[b+8>>2]=1;g=J[d+8272>>2];J[b>>2]=1;J[b+4>>2]=g;d=cB(d,e,f,b);a:{if(d){e=J[a+8>>2];J[e+8>>2]=0;J[a+8>>2]=e+16;xj(a,d);break a}c=J[a+8>>2];J[c+8>>2]=3;O[c>>3]=1;J[a+8>>2]=J[a+8>>2]+16;c=1}Ui=b+32|0;return c|0}function wR(a){var b=0,c=0,d=0,e=0;e=Ui-16|0;Ui=e;J[e+12>>2]=0;a:{if(a){b=J[a+29088>>2];c=J[a+29084>>2];if((b|0)!=(c|0)){c=b-c>>2;b=0;while(1){d=J[a+29084>>2];if(J[a+29088>>2]-d>>2>>>0<=b>>>0){break a}d=J[d+(b<<2)>>2];b:{if(K[d+3272|0]&2){lt(d);c=c-1|0;break b}b=b+1|0}if(b>>>0>>0){continue}break}}Ui=e+16|0;return}Z(111314,38296,2846,62056);B()}Z(145396,53895,487,84789);B()}function qp(a,b){var c=0,d=0,e=0;J[a>>2]=247484;c=J[b+12>>2];d=J[b+8>>2];if((c|0)==(d|0)){Z(99234,38073,173,13234);B()}e=J[b>>2];J[a+56>>2]=0;J[a+52>>2]=c;J[a+48>>2]=d;J[a+8>>2]=0;J[a+12>>2]=0;J[a+4>>2]=e;c=K[b+16|0];H[a+60|0]=0;H[a+61|0]=c;b=J[b+4>>2];J[a+16>>2]=0;J[a+20>>2]=0;J[a+64>>2]=b;J[a+24>>2]=0;J[a+28>>2]=0;J[a+32>>2]=0;J[a+36>>2]=0;J[a+40>>2]=0;J[a+44>>2]=0;return a}function nl(){var a=0;J[218546]=0;J[218547]=0;J[218554]=0;J[218555]=0;J[218542]=0;J[218543]=0;J[218550]=0;J[218551]=0;J[218558]=0;J[218559]=0;J[218563]=0;J[218564]=0;J[218548]=0;J[218549]=0;J[218544]=0;J[218545]=0;J[218552]=0;J[218553]=0;J[218556]=0;J[218557]=0;J[218560]=0;J[218561]=0;J[218562]=0;J[218547]=-1;J[218555]=-1;H[874260]=K[874260]&254;a=Co();H[874164]=0;J[218540]=a}function kma(a){a=a|0;var b=0,c=0,d=0,e=0,f=0,g=0;c=Ui-32|0;Ui=c;f=pj(c+12|0,a,0,36839,130);b=qj(a,1,J[79308],3640);d=J[b+8>>2];e=J[b+12>>2];a:{if(!(d|e)){break a}if(xk(J[b+4>>2],d,e)){break a}J[c>>2]=tj(J[b+8>>2],J[b+12>>2]);fj(a,102051,c)}b=J[b>>2];g=wj(a,2);if(J[b>>2]==2){a=L[b+4>>1];if(!(a&2)){J[b+144>>2]=0;I[b+4>>1]=a|2}N[b+84>>2]=N[b+84>>2]+Q(g)}oj(f);Ui=c+32|0;return 0}function e7(a,b,c,d){a=a|0;b=b|0;c=c|0;d=d|0;var e=0,f=Q(0),g=Q(0),h=0;e=Ui-48|0;Ui=e;a=J[a+8>>2];h=J[a>>2];if(h){f=N[a+20>>2];N[e+16>>2]=f*N[b>>2];g=N[b+4>>2];J[e+24>>2]=0;N[e+20>>2]=f*g;N[e+32>>2]=f*N[c>>2];g=N[c+4>>2];J[e+40>>2]=0;N[e+36>>2]=f*g;b=J[d+4>>2];c=J[d>>2];f=N[d+8>>2];N[e+12>>2]=N[a+12>>2];N[e+8>>2]=f;J[e>>2]=c;J[e+4>>2]=b;Zi[h|0](e+16|0,2,e,J[a+8>>2])}Ui=e+48|0}function EC(a){var b=0;b=93163;a:{b:{switch(a+12|0){case 11:return 90490;case 10:return 89645;case 9:return 96530;case 8:return 93628;case 7:return 93621;case 6:return 93686;case 5:return 93744;case 4:return 93771;case 3:return 89456;case 2:return 89580;case 1:return 92664;case 0:return 97177;default:if((a|0)==-1e3){break a}b=97515;break;case 12:break b}}return b}return 91141}function Dw(a,b){var c=0;if(!b){return-24832}J[a>>2]=0;J[a+4>>2]=0;J[a+56>>2]=0;J[a+60>>2]=0;J[a+48>>2]=0;J[a+52>>2]=0;J[a+40>>2]=0;J[a+44>>2]=0;J[a+32>>2]=0;J[a+36>>2]=0;J[a+24>>2]=0;J[a+28>>2]=0;J[a+16>>2]=0;J[a+20>>2]=0;J[a+8>>2]=0;J[a+12>>2]=0;c=Zi[J[J[b+28>>2]+28>>2]]()|0;J[a+60>>2]=c;if(!c){return-24960}J[a>>2]=b;if(J[b+4>>2]==2){J[a+16>>2]=2259;J[a+12>>2]=2260}return 0}function gw(a,b){var c=0,d=0,e=0,f=0,g=0,h=0,i=0;d=Ui-16|0;Ui=d;c=Ui-160|0;Ui=c;J[c+60>>2]=a;J[c+20>>2]=a;J[c+24>>2]=-1;e=c+16|0;No(e,0,0);HV(c,e,1,1);f=J[c+8>>2];g=J[c+12>>2];e=J[c>>2];h=J[c+4>>2];if(b){J[b>>2]=J[c+136>>2]+((J[c+20>>2]-J[c+60>>2]|0)+a|0)}J[d+8>>2]=f;J[d+12>>2]=g;J[d>>2]=e;J[d+4>>2]=h;Ui=c+160|0;i=gF(J[d>>2],J[d+4>>2],J[d+8>>2],J[d+12>>2]);Ui=d+16|0;return i}function rH(a){var b=0,c=0,d=0;c=16384;b=(J[J[a>>2]+184>>2]>>>6&7)-1|0;if(b>>>0<=3){c=J[(b<<2)+184104>>2]}b=J[a+56>>2];a:{if(!b){break a}b=K[b+120|0];d=b-1&255;if(d>>>0>3|M[(d<<2)+184104>>2]>=c>>>0){break a}c=J[(b<<24>>24<<2)+184100>>2]}a=J[a+64>>2];b:{if(!a){break b}a=K[a+120|0];b=a-1&255;if(b>>>0>3|M[(b<<2)+184104>>2]>=c>>>0){break b}c=J[(a<<24>>24<<2)+184100>>2]}return c}function __(a){a=a|0;var b=0,c=0,d=0;b=J[(qs(a,1,15749,258032)<<2)+173680>>2];c=ns(a,b,Zm(a,2,0));a:{b:{switch(b-3|0){case 0:d=+(ns(a,4,0)|0)*.0009765625;b=J[a+8>>2];J[b+8>>2]=3;O[b>>3]=d+ +(c|0);break a;case 2:b=J[a+8>>2];J[b+8>>2]=1;J[b>>2]=(c|0)!=0;break a;default:break b}}b=J[a+8>>2];J[b+8>>2]=3;O[b>>3]=c|0;J[a+8>>2]=J[a+8>>2]+16;return 1}J[a+8>>2]=J[a+8>>2]+16;return 1}function WY(a){a=a|0;var b=0,c=0,d=0,e=0,f=0,g=0;b=Ui-32|0;Ui=b;c=2;d=Tn(a,1106);e=Aj(a,2,0);f=Aj(a,3,0);J[b+28>>2]=0;J[b+20>>2]=0;J[b+24>>2]=0;J[b+12>>2]=0;J[b+16>>2]=0;J[b+8>>2]=2;g=J[d+32>>2];J[b>>2]=1;J[b+4>>2]=g;d=cB(d,e,f,b);a:{if(d){e=J[a+8>>2];J[e+8>>2]=0;J[a+8>>2]=e+16;xj(a,d);break a}c=J[a+8>>2];J[c+8>>2]=3;O[c>>3]=1;J[a+8>>2]=J[a+8>>2]+16;c=1}Ui=b+32|0;return c|0}function FL(a){var b=0;b=J[a+84>>2];if(b){Zi[J[J[b>>2]+4>>2]](b)}b=J[a+80>>2];if(b){Zi[J[J[b>>2]+4>>2]](b)}b=J[a+76>>2];if(b){Zi[J[J[b>>2]+4>>2]](b)}b=J[a+72>>2];if(b){Zi[J[J[b>>2]+4>>2]](b)}b=J[a+68>>2];if(b){Zi[J[J[b>>2]+4>>2]](b)}a:{if(H[a+48|0]&1){break a}b=J[a+36>>2];if(!b){break a}cj(b)}b:{if(H[a+28|0]&1){break b}b=J[a+8>>2];if(b){cj(b)}a=J[a>>2];if(!a){break b}cj(a)}}function r9(a){a=a|0;var b=0,c=0,d=0,e=0,f=0,g=0;b=Ui-32|0;Ui=b;d=J[a+8>>2]-J[a+12>>2]|0;Bj(a);c=qj(a,-1,J[219396],139183);gj(a,-2);Qj(a,1,b+28|0);e=BO(c,J[b+28>>2]);f=Yi;g=iD(c,J[b+28>>2]);fm(b,c,J[b+28>>2],4);qO(a,c,e,f,g,N[b>>2],zO(c,J[b+28>>2]),kD(c,J[b+28>>2]),jD(c,J[b+28>>2]));if(((d>>4)+1|0)!=J[a+8>>2]-J[a+12>>2]>>4){Z(143334,37682,2706,69609);B()}Ui=b+32|0;return 1}function $1(a){a=a|0;var b=0,c=Q(0),d=0,e=Q(0),f=Q(0),g=0,h=Q(0);d=Ui-32|0;Ui=d;b=qj(a,1,J[215720],0);c=N[b+8>>2];e=N[b>>2];f=N[b+4>>2];if(!(!(e!=e|f!=f)&c==c)){O[d+24>>3]=c;O[d+16>>3]=f;J[d>>2]=1;O[d+8>>3]=e;fj(a,138436,d)}g=wj(a,2);c=N[b+8>>2];f=N[b>>2];e=N[b+4>>2];b=Sj(a,16);h=c;c=Q(g);N[b+8>>2]=h/c;N[b+4>>2]=e/c;N[b>>2]=f/c;rj(a,-1e4,108973);Mj(a,-2);Ui=d+32|0;return 1}function mo(a){var b=0,c=0,d=0,e=0;d=+za();b=d/1e3;a:{if(R(b)<0x8000000000000000){e=~~b>>>0;if(R(b)>=1){c=~~(b>0?T(V(b*2.3283064365386963e-10),4294967295):W((b-+(~~b>>>0>>>0))*2.3283064365386963e-10))>>>0}else{c=0}break a}c=-2147483648}J[a>>2]=e;J[a+4>>2]=c;b=(d-(+(ixa(e,c,1e3,0)>>>0)+ +(Yi|0)*4294967296))*1e3;b:{if(R(b)<2147483648){c=~~b;break b}c=-2147483648}J[a+8>>2]=c}function fB(a){if((a|0)>=0){if(a>>>0<=16383){if(a>>>0<=15){return H[a+197376|0]}if(a>>>0<=511){return H[(a>>>5|0)+197376|0]+5|0}return H[(a>>>10|0)+197376|0]+10|0}if(a>>>0<=16777215){if(a>>>0<=524287){return H[(a>>>15|0)+197376|0]+15|0}return H[(a>>>20|0)+197376|0]+20|0}if(a>>>0<=536870911){return H[(a>>>25|0)+197376|0]+25|0}a=H[(a>>>30|0)+197376|0]+30|0}else{a=0}return a}function Vy(a){var b=0,c=0,d=0;d=Ui-16|0;Ui=d;A(+a);c=v(1)|0;v(0)|0;c=c&2147483647;a:{if(c>>>0<=1072243195){b=1;if(c>>>0<1044816030){break a}b=Wv(a,0);break a}b=a-a;if(c>>>0>=2146435072){break a}c=kF(a,d);a=O[d+8>>3];b=O[d>>3];b:{switch((c&3)-1|0){default:b=Wv(b,a);break a;case 0:b=-Tv(b,a,1);break a;case 1:b=-Wv(b,a);break a;case 2:break b}}b=Tv(b,a,1)}Ui=d+16|0;return b}function Dva(a,b,c,d){a=a|0;b=b|0;c=c|0;d=d|0;var e=0,f=0,g=0,h=0;e=Ui-432|0;Ui=e;f=J[J[a+48>>2]+12>>2];a:{if(!(H[f+60|0]&1)){break a}g=J[J[a+52>>2]+12>>2];J[b+68>>2]=0;a=J[a+56>>2];if(J[J[f+32>>2]+(a<<2)>>2]==-1){break a}J[e+428>>2]=0;J[e+16>>2]=2;J[e+20>>2]=1008981770;H[e+32|0]=0;J[e+36>>2]=0;J[e+40>>2]=0;J[e+12>>2]=247140;h=a;a=e+12|0;VE(f,h,a);kV(b,a,c,g,d)}Ui=e+432|0}function Cz(a){var b=0,c=0,d=0,e=0;b=Ui-32|0;Ui=b;if(Hn(J[a+4>>2],b+28|0,4)){c=J[a>>2];d=J[a+12>>2];J[b+20>>2]=71449;J[b+16>>2]=d;gk(c,50977,b+16|0);al(J[a>>2],3)}c=J[b+28>>2];if(c){c=lI(J[a>>2],J[a+8>>2],c);if(Hn(J[a+4>>2],c,J[b+28>>2])){d=J[a>>2];e=J[a+12>>2];J[b+4>>2]=71449;J[b>>2]=e;gk(d,50977,b);al(J[a>>2],3)}a=zk(J[a>>2],c,J[b+28>>2]-1|0)}else{a=0}Ui=b+32|0;return a}function Bva(a,b,c,d){a=a|0;b=b|0;c=c|0;d=d|0;var e=0,f=0,g=0,h=0;e=Ui-432|0;Ui=e;f=J[J[a+48>>2]+12>>2];a:{if(!(H[f+60|0]&1)){break a}g=J[J[a+52>>2]+12>>2];J[b+68>>2]=0;a=J[a+56>>2];if(J[J[f+32>>2]+(a<<2)>>2]==-1){break a}J[e+428>>2]=0;J[e+16>>2]=2;J[e+20>>2]=1008981770;H[e+32|0]=0;J[e+36>>2]=0;J[e+40>>2]=0;J[e+12>>2]=247140;h=a;a=e+12|0;VE(f,h,a);jV(b,a,c,g,d)}Ui=e+432|0}function l5(a,b){a=a|0;b=b|0;var c=0,d=0,e=0,f=0;c=Ui-32|0;Ui=c;d=J[a+80>>2];a:{if(d){if((d|0)==J[56050]){d=J[a+100>>2];if(!d){break a}e=a+96|0;f=e+J[a+96>>2]|0;a=0;while(1){Ou(b,K[(a<<3)+f|0]+e|0,c+28|0);a=a+1|0;if((d|0)!=(a|0)){continue}break}break a}a=J[d+4>>2];J[c+20>>2]=69783;J[c+16>>2]=a;dj(4,96538,158377,c+16|0);break a}J[c>>2]=69783;dj(4,96538,158163,c)}Ui=c+32|0}function R$(a,b){a=a|0;b=b|0;var c=0;c=J[a+8>>2];J[c+8>>2]=2;J[c>>2]=173768;J[a+8>>2]=J[a+8>>2]+16;Ll(a,-1e4);c=J[a+8>>2];J[c+8>>2]=2;J[c>>2]=a;J[a+8>>2]=J[a+8>>2]+16;Ll(a,-2);if((kj(a,-1)|0)==6){xj(a,J[(J[b>>2]<<2)+259056>>2]);b=J[b+20>>2];a:{if((b|0)>=0){c=J[a+8>>2];J[c+8>>2]=3;O[c>>3]=b|0;J[a+8>>2]=J[a+8>>2]+16;break a}b=J[a+8>>2];J[b+8>>2]=0;J[a+8>>2]=b+16}Wk(a,2,0)}}function G7(a,b){a=a|0;b=b|0;var c=0,d=0,e=0,f=0;d=Ui-32|0;Ui=d;if(Hm(J[b>>2])){e=d+12|0;c=J[b>>2];if(c){c=J[c>>2]}else{c=0}e=pj(e,c,0,41468,71);a:{if(!ao(J[b>>2])){dj(4,95071,51495,0);break a}xj(c,J[b+12>>2]);f=J[c+8>>2];J[f+8>>2]=1;J[f>>2]=(a|0)!=0;J[c+8>>2]=J[c+8>>2]+16;Ol(c,3,0,0);xo(J[b>>2]);Fl(J[b>>2]);hk(c,-1e4,J[b+4>>2]);hk(c,-1e4,J[b+8>>2]);cj(b)}oj(e)}Ui=d+32|0}function kw(a){var b=0,c=0,d=0,e=0;e=J[a>>2];vl(a,e);b=J[a+56>>2];c=J[b>>2];J[b>>2]=c-1;a:{if(c){d=b;b=J[b+4>>2];J[d+4>>2]=b+1;b=K[b|0];break a}b=Rk(b)}J[a>>2]=b;c=0;if((b|0)==61){while(1){vl(a,61);b=J[a+56>>2];d=J[b>>2];J[b>>2]=d-1;b:{if(d){d=b;b=J[b+4>>2];J[d+4>>2]=b+1;b=K[b|0];break b}b=Rk(b)}J[a>>2]=b;c=c+1|0;if((b|0)==61){continue}break}}return((b|0)!=(e|0)?-1:0)^c}function gea(a){a=a|0;var b=0,c=0,d=0;d=Ui-16|0;Ui=d;b=-2;if(!dk(J[a+12>>2],J[a+16>>2],265920,d+12|0,0)){b=J[d+12>>2];c=J[b+12>>2];if(K[c|0]){Tk(J[a+24>>2],c);b=J[d+12>>2]}c=J[b>>2];if(K[c|0]){Tk(J[a+24>>2],c);b=J[d+12>>2]}c=J[b+4>>2];if(K[c|0]){Tk(J[a+24>>2],c);b=J[d+12>>2]}c=J[b+8>>2];if(K[c|0]){Tk(J[a+24>>2],c);b=J[d+12>>2]}J[J[a+32>>2]>>2]=b;b=0}Ui=d+16|0;return b|0}function Ur(a){var b=0,c=0,d=0;c=Ui-16|0;Ui=c;A(+a);b=v(1)|0;v(0)|0;b=b&2147483647;a:{if(b>>>0<=1072243195){if(b>>>0<1045430272){break a}a=Tv(a,0,0);break a}if(b>>>0>=2146435072){a=a-a;break a}b=kF(a,c);a=O[c+8>>3];d=O[c>>3];b:{switch((b&3)-1|0){default:a=Tv(d,a,1);break a;case 0:a=Wv(d,a);break a;case 1:a=-Tv(d,a,1);break a;case 2:break b}}a=-Wv(d,a)}Ui=c+16|0;return a}function Om(a){var b=0,c=0,d=0,e=0;b=J[a+16>>2];J[b+76>>2]=J[b+76>>2]+(J[b+68>>2]-J[b+64>>2]|0);c=P(J[b+84>>2],10);c=c?c:2147483646;while(1){a:{e=Wz(a);d=K[b+21|0];if(!d){break a}c=c-e|0;if((c|0)>0){continue}}break}if(d){a=J[b+76>>2];if(a>>>0<=1023){J[b+64>>2]=J[b+68>>2]+1024;return}J[b+76>>2]=a-1024;J[b+64>>2]=J[b+68>>2];return}J[b+64>>2]=P(J[b+80>>2],M[b+72>>2]/100|0)}function J$(a){a=a|0;var b=0,c=0,d=0,e=0;d=Ui-16|0;Ui=d;c=1;b=jn(a,135350);e=vk(J[b>>2]);J[b>>2]=0;a:{if(!e){b=J[a+8>>2];J[b+8>>2]=1;J[b>>2]=1;J[a+8>>2]=J[a+8>>2]+16;break a}c=J[245744];b=J[a+8>>2];J[b+8>>2]=0;J[a+8>>2]=b+16;J[d>>2]=L[((c>>>0<=153?c:0)<<1)+215472>>1]+213556;ik(a,31902,d);b=J[a+8>>2];J[b+8>>2]=3;O[b>>3]=c|0;J[a+8>>2]=J[a+8>>2]+16;c=3}Ui=d+16|0;return c|0}function $ta(a,b,c){a=a|0;b=Q(b);c=c|0;var d=Q(0),e=Q(0),f=Q(0),g=Q(0),h=Q(0),i=Q(0);d=N[a+36>>2];e=N[a+32>>2];f=N[a+28>>2];g=Q(Zi[J[J[a>>2]+44>>2]](a));h=Q(Zi[J[J[a>>2]+44>>2]](a));i=Q(Zi[J[J[a>>2]+44>>2]](a));J[c+12>>2]=0;b=Q(b/Q(12));f=Q(f+g);f=Q(f+f);f=Q(f*f);e=Q(e+h);e=Q(e+e);e=Q(e*e);N[c+8>>2]=b*Q(f+e);d=Q(d+i);d=Q(d+d);d=Q(d*d);N[c+4>>2]=b*Q(f+d);N[c>>2]=b*Q(e+d)}function mY(a){a=a|0;var b=0,c=0,d=0,e=0;d=Ui-16|0;Ui=d;c=1;b=Aj(a,1,0);a:{if(!PG(b,Aj(a,2,0))){b=J[a+8>>2];J[b+8>>2]=1;J[b>>2]=1;J[a+8>>2]=J[a+8>>2]+16;break a}c=J[245744];e=J[a+8>>2];J[e+8>>2]=0;J[a+8>>2]=e+16;J[d+4>>2]=L[((c>>>0<=153?c:0)<<1)+215472>>1]+213556;J[d>>2]=b;ik(a,28428,d);b=J[a+8>>2];J[b+8>>2]=3;O[b>>3]=c|0;J[a+8>>2]=J[a+8>>2]+16;c=3}Ui=d+16|0;return c|0}function eZ(a){a=a|0;var b=0,c=0,d=0,e=0,f=0,g=0;b=Ui-8208|0;Ui=b;d=gm(a,1024);e=_o(a,2,8192);f=d+8|0;Po(f);a:{b:{c:{g=b+16|0;if(e<4294967296&e>=0){c=~~e>>>0}else{c=0}d=CG(d,g,c>>>0>=8192?8192:c,b+12|0,f);switch(d+2|0){case 0:case 2:break b;default:break c}}c=J[a+8>>2];J[c+8>>2]=0;J[a+8>>2]=c+16;xj(a,Tm(d));a=2;break a}mj(a,b+16|0,J[b+12>>2]);a=1}Ui=b+8208|0;return a|0}function Zy(a){var b=Q(0),c=Q(0),d=Q(0);J[83370]=J[83370]|1;N[83403]=0;J[83411]=0;N[83410]=N[83414]*Q(0);N[83409]=N[83413]*Q(0);N[83408]=N[83412]*Q(0);b=N[a+8>>2];c=N[a+4>>2];d=N[a>>2];N[83457]=N[83404]*Q(0);N[83458]=N[83405]*Q(0);N[83459]=N[83406]*Q(0);J[83460]=0;J[83419]=0;N[83416]=d!=Q(0)?Q(Q(1)/d):Q(0);N[83417]=c!=Q(0)?Q(Q(1)/c):Q(0);N[83418]=b!=Q(0)?Q(Q(1)/b):Q(0)}function kJ(a,b,c){var d=0,e=0,f=0;d=Ui-16|0;Ui=d;if((kj(a,1)|0)>0){e=Ij(a,1,0);a:{if(e){f=Sj(a,4);J[f>>2]=0;rj(a,-1e4,135350);Mj(a,-2);c=ol(e,c);J[f>>2]=c;if(c){break a}c=J[245744];J[d+4>>2]=L[((c>>>0<=153?c:0)<<1)+215472>>1]+213556;J[d>>2]=e;ik(a,28428,d);Dk(a,1,Ij(a,-1,0));break a}if(!J[jn(a,135350)>>2]){fj(a,66693,0)}uj(a,1)}Ik(a,-10001,b)}Nj(a,-10001,b);Ui=d+16|0}function cq(a,b,c,d,e){var f=Q(0),g=Q(0);J[a+132>>2]=0;J[a+136>>2]=0;J[a+60>>2]=e;J[a+56>>2]=c;J[a+52>>2]=d;J[a+48>>2]=b;J[a+4>>2]=4;J[a+8>>2]=0;J[a+12>>2]=0;J[a>>2]=248e3;J[a+16>>2]=0;J[a+20>>2]=0;J[a+24>>2]=0;J[a+28>>2]=0;J[a+32>>2]=0;J[a+36>>2]=0;J[a+40>>2]=0;J[a+44>>2]=0;N[a+144>>2]=Y(Q(N[b+16>>2]*N[d+16>>2]));f=N[b+20>>2];g=N[d+20>>2];N[a+148>>2]=f>g?f:g;return a}function pJ(a,b,c,d,e){var f=0,g=0,h=0,i=0,j=0,k=0,l=0;g=Ui-16|0;Ui=g;a:{if(d){k=b+12|0;l=e>>>1&63;while(1){i=P(h,36)+c|0;j=(h|0)==(l|0);f=Xt(b,i,j);if(f){break a}f=Xt(k,i+12|0,j);if(f){break a}h=h+1|0;if((h|0)!=(d|0)){continue}break}}c=g+4|0;J[c+8>>2]=0;J[c>>2]=1;J[c+4>>2]=0;d=a+4|0;a=b+12|0;f=wl(c,d,a);if(!f){f=Xt(a,c,Pj(a,0)?e>>>7|0:0)}Dj(g+4|0)}Ui=g+16|0;return f}function f5(a,b,c,d,e){a=a|0;b=b|0;c=c|0;d=d|0;e=e|0;var f=0,g=0;f=-2;d=J[a+2200>>2];a:{if(!d){break a}d=J[J[a+2196>>2]+(mxa(b,c,d)<<2)>>2];if((d|0)==-1){break a}g=J[a+2204>>2];while(1){a=g+P(d,24)|0;if(J[a>>2]!=(b|0)|J[a+4>>2]!=(c|0)){d=J[a+16>>2];if((d|0)!=-1){continue}break a}break}a=J[J[a+12>>2]+4>>2];J[e>>2]=a<<24|(a&65280)<<8|(a>>>8&65280|a>>>24);f=0}return f|0}function at(a,b,c,d){var e=0,f=0,g=0,h=0;a:{g=J[a+4>>2]-J[a>>2]>>2;b:{if((g|0)<=0){break b}while(1){f=J[a>>2];if(J[a+4>>2]-f>>2>>>0<=e>>>0){break a}f=J[(e<<2)+f>>2];if((b|0)!=J[f+8>>2]|J[f+12>>2]!=(c|0)){e=e+1|0;if((g|0)!=(e|0)){continue}break b}break}b=J[a+4>>2];a=J[a>>2];if(b-a>>2>>>0<=e>>>0){break a}J[d>>2]=J[a+(e<<2)>>2];h=1}return h}Z(145396,53895,487,84789);B()}function MN(a,b){var c=0,d=0,e=0,f=0;if(!K[874264]){nl();H[874264]=1}if(K[874164]==1){d=J[218540];Tj(d);if(!K[874264]){nl();H[874264]=1}c=J[218551];a:{if(!c){break a}c=J[J[218550]+(mxa(a,b,c)<<2)>>2];if((c|0)==-1){break a}e=J[218552];while(1){c=P(c,24)+e|0;if(J[c>>2]!=(a|0)|J[c+4>>2]!=(b|0)){c=J[c+16>>2];if((c|0)!=-1){continue}break a}break}f=J[c+8>>2]}Lj(d)}return f}function JB(a){var b=0,c=0,d=0,e=0;if(a){b=J[a>>2];c=J[b+108>>2];d=J[b+112>>2];if((c|0)!=(d|0)){while(1){e=J[J[c>>2]+16>>2];if(e){Zi[e|0](a);d=J[b+112>>2]}c=c+4|0;if((d|0)!=(c|0)){continue}break}b=J[a>>2]}c=J[a+4>>2];if((c|0)!=-2){d=J[b+124>>2];b=J[84548];if((b|0)<=0){dj(4,86858,57703,0);b=J[84548]}J[84548]=b-1;Fp(d,-1e4,c)}cj(a);return}Z(111353,37704,1117,71877);B()}function dm(a,b){var c=0,d=0,e=0;while(1){c=J[218661];J[218661]=c?c:1;if(c){continue}break}e=J[218660];c=J[e+4>>2];d=0;a:{if(!c){break a}c=J[J[e>>2]+(mxa(a,b,c)<<2)>>2];d=0;if((c|0)==-1){break a}e=J[e+8>>2];b:{while(1){c=e+(c<<6)|0;if(J[c>>2]==(a|0)&(b|0)==J[c+4>>2]){break b}c=J[c+56>>2];if((c|0)!=-1){continue}break}d=0;break a}d=J[c+32>>2]}c=d;J[218661]=0;return c}function yG(a){var b=0,c=0,d=0;jA(a);cj(J[a+68>>2]);J[a+68>>2]=0;c=J[a+80>>2];if(c){b=c+80|0;if(b){d=J[b+60>>2];if(d){Zi[J[J[J[b>>2]+28>>2]+32>>2]](d)}Zi[J[66509]](b,0,64)|0}b=c+144|0;if(b){d=J[b+60>>2];if(d){Zi[J[J[J[b>>2]+28>>2]+32>>2]](d)}Zi[J[66509]](b,0,64)|0}Kl(c+52|0);Kl(c- -64|0);Zi[J[66509]](c,0,212)|0;cj(J[a+80>>2])}c=J[a+84>>2];J[a+84>>2]=0;J[a+80>>2]=c}function NP(a,b,c,d,e,f){var g=0;g=Ui-48|0;Ui=g;J[g+32>>2]=f;J[g+16>>2]=d;J[g>>2]=b;J[g+36>>2]=J[a+36>>2];J[g+40>>2]=J[a+40>>2];b=sj(d);J[g+8>>2]=b;J[g+12>>2]=0;hj(b,c,d);b=sj(f);J[g+24>>2]=b;J[g+28>>2]=0;hj(b,e,f);if(Jk(0,a,J[43320],J[43321],0,J[a+44>>2],J[64198],g,48,655)){cj(J[g+8>>2]);cj(J[g+24>>2]);cj(J[g+36>>2]);cj(J[g+40>>2]);dj(3,88458,101797,0)}Ui=g+48|0} +function A_(a){a=a|0;var b=0,c=0;b=Ui-16|0;Ui=b;Em(a,1);a:{if(tI(a,1,56234)){break a}b:{switch(kj(a,1)|0){case 3:xj(a,Ij(a,1,0));break a;case 4:uj(a,1);break a;case 1:xj(a,ck(a,1)?60828:62644);break a;case 0:mj(a,49721,3);break a;default:break b}}c=kj(a,1);if((c|0)==-1){c=60960}else{c=J[(c<<2)+257632>>2]}J[b+4>>2]=Jw(a,1);J[b>>2]=c;ik(a,43768,b)}Ui=b+16|0;return 1}function lE(a,b){var c=0,d=0,e=0,f=0,g=0,h=0,i=0,j=0,k=0,l=0,m=0;c=J[a+8>>2];m=J[a+4>>2];a:{while(1){h=((e|0)!=10|(f|0)!=0)&c>>>0>>0;if(!h){break a}i=c+1|0;J[a+8>>2]=i;j=H[c|0];c=j&127;d=ixa(e,f,7,0);g=d&31;if((d&63)>>>0>=32){d=c<>>32-g;c=c<>2]=k;J[b+4>>2]=l}return h}function Xma(a,b){a=a|0;b=b|0;var c=0,d=0,e=0,f=0;Bj(a);Bj(a);e=qj(a,-1,J[74197],139276);gj(a,-2);gj(a,-2);c=J[e+4>>2];a=J[J[c+80>>2]+8>>2];a:{if(!a){break a}a=J[a>>2];if(!a){break a}d=J[a+3216>>2];f=J[a+3220>>2]}J[b>>2]=d;J[b+4>>2]=f;a=J[c+100>>2];J[b+16>>2]=J[c+96>>2];J[b+20>>2]=a;d=J[J[c+84>>2]>>2]+P(L[e+24>>1],96)|0;a=J[d+4>>2];J[b+24>>2]=J[d>>2];J[b+28>>2]=a}function AH(a,b,c){a=a|0;b=b|0;c=c|0;var d=0;d=Ui-96|0;Ui=d;ij(d+8|0,0,88);J[d+24>>2]=-1732584194;J[d+28>>2]=271733878;J[d+16>>2]=1732584193;J[d+20>>2]=-271733879;a:{if(!b){break a}J[d+8>>2]=b;if(b>>>0>=64){while(1){is(d+8|0,a);a=a- -64|0;b=b+-64|0;if(b>>>0>63){continue}break}if(!b){break a}}hj(d+32|0,a,b)}a=d+8|0;bu(a,c);Zi[J[66509]](a,0,88)|0;Ui=d+96|0;return 0}function Gu(a,b,c){var d=0,e=0,f=0;e=Ui-176|0;Ui=e;d=J[a>>2];pj(e+156|0,d,0,37704,1766);if(ao(a)){f=J[d+8>>2]-J[d+12>>2]>>4;if(b){Zi[b|0](d,c)}b=(J[d+8>>2]-J[d+12>>2]>>4)-f|0;c=Ui-128|0;Ui=c;Ui=c+128|0;J[e+12>>2]=0;Ol(d,b+1|0,0,0);a=J[a>>2];gj(a,-2);b=J[84546];c=J[a+8>>2];J[c+8>>2]=3;O[c>>3]=b|0;J[a+8>>2]=J[a+8>>2]+16;Pk(a,-2);Kj(a,-10002)}oj(e+156|0);Ui=e+176|0}function yx(a,b){var c=0,d=0,e=0;a:{if((b&65535)==65535){break a}c=a+88112|0;b=c+P(b<<16>>16,72)|0;d=L[b+38>>1];if(d){break a}_B(a,b,0,0,0);UB(a,J[b+24>>2],J[b+28>>2]);b=L[b+32>>1];if((b|0)==65535){return 1}e=!d;while(1){b=P(b<<16>>16,72)+c|0;if(L[b+38>>1]){break a}_B(a,b,0,0,0);UB(a,J[b+24>>2],J[b+28>>2]);b=L[b+32>>1];if((b|0)!=65535){continue}break}}return e}function cT(a){H[a+20|0]=1;J[a+16>>2]=0;H[a+40|0]=1;J[a+8>>2]=0;J[a+12>>2]=0;J[a+36>>2]=0;H[a+60|0]=1;J[a+28>>2]=0;J[a+32>>2]=0;J[a+56>>2]=0;H[a+80|0]=1;J[a+48>>2]=0;J[a+52>>2]=0;J[a+76>>2]=0;H[a+100|0]=1;J[a+68>>2]=0;J[a+72>>2]=0;J[a+96>>2]=0;H[a+120|0]=1;J[a+88>>2]=0;J[a+92>>2]=0;J[a+116>>2]=0;J[a>>2]=243700;J[a+124>>2]=0;J[a+108>>2]=0;J[a+112>>2]=0;return a}function bqa(a,b,c,d){a=a|0;b=b|0;c=c|0;d=d|0;var e=Q(0),f=Q(0),g=Q(0),h=Q(0),i=Q(0),j=Q(0);h=Q(Zi[J[J[a>>2]+44>>2]](a));i=Q(Zi[J[J[a>>2]+44>>2]](a));j=Q(Zi[J[J[a>>2]+44>>2]](a));e=N[b+48>>2];f=N[b+52>>2];g=N[b+56>>2];J[c+12>>2]=0;N[c+8>>2]=g-j;N[c+4>>2]=f-i;N[c>>2]=e-h;e=N[b+48>>2];f=N[b+52>>2];g=N[b+56>>2];J[d+12>>2]=0;N[d+8>>2]=j+g;N[d+4>>2]=i+f;N[d>>2]=h+e}function zl(a,b,c){var d=0,e=0,f=0,g=0;e=a;a:{if(!K[a|0]|!c){break a}d=c;f=a;while(1){e=f+1|0;if(!K[f+1|0]){break a}f=e;d=d-1|0;if(d){continue}break}}b:{c:{g=e-a|0;d=c-g|0;if(d){a=K[b|0];if(a){break c}c=b;break b}return yj(b)+g|0}f=b;while(1){if((d|0)==1){d=1}else{H[e|0]=a;e=e+1|0;d=d-1|0}a=K[f+1|0];c=f+1|0;f=c;if(a){continue}break}}H[e|0]=0;return(c-b|0)+g|0}function rca(a,b,c){a=a|0;b=b|0;c=c|0;var d=0,e=0,f=0,g=0;c=Ui+-64|0;Ui=c;b=b&65535;jP(c,a,b);d=J[c+56>>2];if(d){Zi[d|0](J[c>>2],J[c+4>>2],J[c+60>>2])}d=J[a>>2];Tj(d);a:{b:{e=J[a+20>>2];if(e){f=L[a+26>>1]-1|0;g=f&65535;if(g>>>0>=L[a+24>>1]){break b}I[a+26>>1]=f;I[(g<<1)+e>>1]=b;Lj(d);break a}Z(49493,54340,140,53220);B()}Z(2650,54340,141,53220);B()}Ui=c- -64|0}function qua(a){a=a|0;var b=0,c=0,d=0,e=0,f=0;A(+(ok(a,1)+6755399441055744));v(1)|0;c=v(0)|0;a:{if(c){break a}if(kk(a,1)){break a}Yk(a,1,36031)}A(+(ok(a,2)+6755399441055744));v(1)|0;d=v(0)|0;b:{if(d){break b}if(kk(a,2)){break b}Yk(a,2,36031)}b=J[a+8>>2];J[b+8>>2]=3;e=b;b=0-d&31;f=(c&-1>>>b)<>3]=f|(b&-1<>>c;J[a+8>>2]=J[a+8>>2]+16;return 1}function ay(a,b,c){var d=0,e=0;a:{b:{d=c&65535;e=J[b+36>>2];b=J[b+32>>2];if(d>>>0<(e-b|0)/672>>>0){b=b+P(d,672)|0;if(L[b+648>>1]!=(c>>>16|0)){break b}if(L[b+650>>1]!=(d|0)){break a}N[a>>2]=N[b+112>>2];N[a+4>>2]=N[b+116>>2];N[a+8>>2]=N[b+120>>2];N[a+12>>2]=N[b+124>>2];return}Z(145396,53895,487,84789);B()}Z(47372,40876,188,69601);B()}Z(5388,40876,189,69601);B()}function Oqa(a,b,c,d){a=a|0;b=b|0;c=Q(c);d=d|0;var e=0;d=Ui+-64|0;Ui=d;J[d+12>>2]=0;J[d+16>>2]=0;J[d+32>>2]=0;J[d+36>>2]=0;J[d+4>>2]=0;J[d+8>>2]=0;J[d>>2]=1065353216;J[d+24>>2]=0;J[d+28>>2]=0;J[d+20>>2]=1065353216;J[d+40>>2]=1065353216;J[d+44>>2]=0;e=J[b+12>>2];J[d+56>>2]=J[b+8>>2];J[d+60>>2]=e;e=J[b+4>>2];J[d+48>>2]=J[b>>2];J[d+52>>2]=e;Gv(a,c,d);Ui=d- -64|0}function KW(a){a=a|0;var b=0,c=0,d=0,e=0,f=0,g=0;c=Ui-1040|0;Ui=c;e=J[a+8>>2]-J[a+12>>2]>>4;b=c+4|0;J[b+4>>2]=0;J[b+8>>2]=a;J[b>>2]=b+12;if((e|0)>0){g=c+1040|0;b=1;while(1){f=Ej(a,b);if(f>>>0>=256){Dk(a,b,60969)}d=J[c+4>>2];if(g>>>0<=d>>>0){_l(c+4|0);d=J[c+4>>2]}J[c+4>>2]=d+1;H[d|0]=f;d=(b|0)!=(e|0);b=b+1|0;if(d){continue}break}}Ym(c+4|0);Ui=c+1040|0;return 1}function yea(a){a=a|0;var b=0,c=0,d=0,e=0;c=Ui-16|0;Ui=c;b=-2;if(!dk(J[a+12>>2],J[a+16>>2],261376,c+12|0,0)){b=J[c+12>>2];if(J[b+4>>2]){while(1){d=P(e,160);Tk(J[a+24>>2],J[(d+J[b>>2]|0)+48>>2]);b=J[c+12>>2];d=J[(d+J[b>>2]|0)+56>>2];if(K[d|0]){Tk(J[a+24>>2],d);b=J[c+12>>2]}e=e+1|0;if(e>>>0>2]){continue}break}}J[J[a+32>>2]>>2]=b;b=0}Ui=c+16|0;return b|0}function tQ(a,b){var c=0,d=0,e=0;a:{c=J[b+12>>2];if(c){if(!(H[a+145|0]&1)){fM(J[a+132>>2],c)}a=0;J[b+12>>2]=0;d=J[b+20>>2];if(!d){break a}e=J[d+4>>2]+16|0;b=e;b:{while(1){c=a;a=J[b>>2];if(!a){break b}b=a;if((a|0)!=(d|0)){continue}break}J[(c?c:e)>>2]=J[a>>2];cj(d);return}Z(72973,38329,1696,13081);B()}Z(12979,38329,1702,13081);B()}Z(13018,38329,1672,13081);B()}function oy(a,b){var c=0,d=0;c=J[b>>2];if(c){vj(a,c)}c=J[b+24>>2];if(c){vj(a,c)}a=J[b+4>>2];if(a){Uj(a)}a:{a=J[b+12>>2];c=J[b+8>>2];if((a|0)!=(c|0)){a=a-c>>2;d=a>>>0<=1?1:a;a=0;while(1){c=J[b+8>>2];if(J[b+12>>2]-c>>2>>>0<=a>>>0){break a}c=J[c+(a<<2)>>2];if(c){Zi[J[J[c>>2]+4>>2]](c)}a=a+1|0;if((d|0)!=(a|0)){continue}break}}return}Z(145396,53895,487,84789);B()}function hJ(a){a=a|0;var b=0,c=0,d=Q(0),e=Q(0);c=Ui-16|0;Ui=c;b=Ui-32|0;Ui=b;J[b+16>>2]=0;J[b+20>>2]=0;N[c+8>>2]=ob(293347,158972,b+16|0);J[b>>2]=0;J[b+4>>2]=0;N[c+12>>2]=ob(293383,158972,b|0);Ui=b+32|0;d=N[c+12>>2];e=N[c+8>>2];b=J[a+8>>2];J[b+8>>2]=3;O[b>>3]=e;J[a+8>>2]=J[a+8>>2]+16;b=J[a+8>>2];J[b+8>>2]=3;O[b>>3]=d;J[a+8>>2]=J[a+8>>2]+16;Ui=c+16|0;return 2}function aN(a,b,c){var d=0,e=0,f=0,g=0,h=0;d=J[a+48>>2];Tj(d);e=bj(b);f=Yi;b=J[a+20>>2];if(!b){Lj(d);return 2}g=2;b=J[J[a+16>>2]+(mxa(e,f,b)<<2)>>2];a:{if((b|0)==-1){break a}h=J[a+24>>2];while(1){a=h+P(b,136)|0;if(J[a>>2]!=(e|0)|J[a+4>>2]!=(f|0)){b=J[a+128>>2];if((b|0)!=-1){continue}break a}break}if(!K[a+8|0]){Lj(d);return-4}ek(c,a+8|0,64);g=0}Lj(d);return g}function Pp(a,b){var c=0,d=0,e=0,f=0;if(!(a|b)){return 0}while(1){c=J[218661];J[218661]=c?c:1;if(c){continue}break}c=0;d=J[218660];e=J[d+4>>2];a:{if(!e){break a}e=J[J[d>>2]+(mxa(a,b,e)<<2)>>2];if((e|0)==-1){break a}f=J[d+8>>2];while(1){d=f+(e<<6)|0;c=J[d>>2]==(a|0)&(b|0)==J[d+4>>2];if(c){break a}e=J[d+56>>2];if((e|0)!=-1){continue}break}}J[218661]=0;return c}function uka(a){a=a|0;var b=0,c=0,d=0;c=Ui-16|0;Ui=c;d=J[a+4>>2];if(d){b=J[a>>2];a=J[a+8>>2];J[c>>2]=a;H[c+12|0]=1;J[c+8>>2]=K[d+144|0];d=0;a:{if(!b){break a}b=J[b>>2];if(!b){break a}d=J[b+4>>2]}J[c+4>>2]=d;b=J[a>>2];b:{if(K[a+17|0]==1){a=J[b+64>>2];b=J[b+68>>2];break b}a=J[b+56>>2];b=J[b+60>>2]}Jm(a,b,235,c);a=K[c+12|0]?0:-1e3}else{a=0}Ui=c+16|0;return a|0}function uC(a,b){var c=Q(0),d=Q(0),e=Q(0),f=Q(0),g=Q(0),h=Q(0),i=Q(0);d=N[b>>2];e=N[b+4>>2];f=N[b+8>>2];c=N[a+72>>2];a=Dv(Yj(52));J[a+4>>2]=0;J[a>>2]=245812;g=Q(Zi[J[61464]](a));h=Q(Zi[J[J[a>>2]+44>>2]](a));i=Q(Zi[J[J[a>>2]+44>>2]](a));J[a+40>>2]=0;N[a+36>>2]=Q(Q(c*f)*N[a+20>>2])-i;N[a+32>>2]=Q(Q(c*e)*N[a+16>>2])-h;N[a+28>>2]=Q(Q(c*d)*N[a+12>>2])-g;return a}function sra(a,b){a=a|0;b=b|0;var c=0,d=0,e=0;c=J[b+4>>2];J[a+220>>2]=J[b>>2];J[a+224>>2]=c;c=J[b+12>>2];J[a+228>>2]=J[b+8>>2];J[a+232>>2]=c;c=J[a+204>>2];if((c|0)>0){while(1){a:{b:{e=J[J[a+212>>2]+(d<<2)>>2];switch(J[e+216>>2]-2|0){case 0:case 3:break a;default:break b}}if(H[e+496|0]&1){break a}GE(e,b);c=J[a+204>>2]}d=d+1|0;if((c|0)>(d|0)){continue}break}}}function qw(a,b){var c=0,d=0,e=0,f=0;d=Ui-1040|0;Ui=d;c=d+4|0;J[c+4>>2]=0;J[c+8>>2]=a;J[c>>2]=c+12;c=_l(c);a:{if(xs(c,1024,b)){while(1){b:{e=yj(c);if(!e){break b}f=c;c=e-1|0;if(K[f+c|0]!=10){break b}J[d+4>>2]=J[d+4>>2]+c;Ym(d+4|0);a=1;break a}J[d+4>>2]=J[d+4>>2]+e;c=_l(d+4|0);if(xs(c,1024,b)){continue}break}}Ym(d+4|0);a=(fl(a,-1)|0)!=0}Ui=d+1040|0;return a}function X6(a,b){a=a|0;b=b|0;var c=0,d=Q(0),e=Q(0),f=Q(0),g=Q(0);c=Ui-48|0;Ui=c;if(J[a+16>>2]){e=N[b+48>>2];f=N[b+52>>2];g=N[b+56>>2];Fv(b,c+32|0);d=N[J[a+4>>2]+76>>2];b=J[c+44>>2];J[c+24>>2]=J[c+40>>2];J[c+28>>2]=b;b=J[c+36>>2];J[c+16>>2]=J[c+32>>2];J[c+20>>2]=b;b=J[a+16>>2];a=J[a+8>>2];N[c+8>>2]=g*d;N[c+4>>2]=f*d;N[c>>2]=e*d;Zi[b|0](a,c,c+16|0)}Ui=c+48|0}function $W(a,b,c){a=a|0;b=b|0;c=c|0;var d=0,e=0,f=0,g=0;d=Ui-224|0;Ui=d;g=J[a+64>>2];if(!g){g=J[a+60>>2]}e=d+136|0;au(e);f=d+44|0;ds(f);xA(e,J[a+68>>2]+596|0);qA(f,J[a+68>>2]+684|0);bu(e,d);es(f,d+16|0);Zi[J[J[a+68>>2]+1116>>2]](g+52|0,48,c?75472:75456,d,36,b,12)|0;if(e){Zi[J[66509]](e,0,88)|0}if(f){Zi[J[66509]](f,0,92)|0}Zi[J[66509]](d,0,36)|0;Ui=d+224|0}function GG(a,b,c){var d=0,e=0;e=Ui-32|0;Ui=e;d=qb(a|0,b|0,c|0,0,0,0)|0;a:{if(!(b&526336)|(d|0)!=-28&(d|0)!=-66){break a}d=qb(a|0,b&-526337,c|0,0,0,0)|0;if((d|0)<0){break a}if(b&524288){J[e+16>>2]=1;J[e+20>>2]=0;da(d|0,2,e+16|0)|0}if(!(b&2048)){break a}J[e>>2]=2048;J[e+4>>2]=0;da(d|0,4,e|0)|0}a=d;Ui=e+32|0;if(d>>>0>=4294963201){J[245744]=0-d;a=-1}return a}function nea(a){a=a|0;var b=0,c=0,d=0,e=0,f=0,g=0;b=Ui-16|0;Ui=b;d=J[a+4>>2];f=J[J[a+36>>2]+8>>2];J[b+12>>2]=0;e=-13;if(!dk(J[a+20>>2],J[a+24>>2],J[55330],b+12|0,0)){ht(J[b+12>>2]);g=Jq(J[a>>2],J[d+2076>>2],J[b+12>>2]);c=J[b+12>>2];if(g){if(kL(J[d+2080>>2],c,f)){J[J[a+36>>2]+16>>2]=J[a+24>>2]-J[J[b+12>>2]+4>>2];e=0}c=J[b+12>>2]}Uj(c)}Ui=b+16|0;return e|0}function fG(a,b){var c=0,d=0,e=0,f=0;e=Ui-16|0;Ui=e;f=1;d=e+12|0;c=TI(d,b,1);a:{if(!c){c=ij(Sj(a,8280),0,8280);Uq(a,1066,-1);jw(d);J[c>>2]=J[e+12>>2];a=c+4|0;J[a+12>>2]=1881;J[a+8>>2]=1882;J[a+4>>2]=1883;J[a>>2]=c;d=c+8248|0;O[d+8>>3]=-1;O[d>>3]=-1;EE(c+24|0,a,d);J[c+8272>>2]=b;break a}b=J[a+8>>2];J[b+8>>2]=0;J[a+8>>2]=b+16;xj(a,c);f=2}Ui=e+16|0;return f}function ewa(a,b){a=a|0;b=b|0;var c=0;b=Hl(b,40);J[b+24>>2]=0;J[b+28>>2]=0;J[b+4>>2]=0;J[b+8>>2]=0;J[b>>2]=247020;H[b+20|0]=K[b+20|0]&254;c=J[a+8>>2];J[b+4>>2]=J[a+4>>2];J[b+8>>2]=c;c=J[a+16>>2];J[b+12>>2]=J[a+12>>2];J[b+16>>2]=c;H[b+20|0]=K[a+20|0];c=J[a+28>>2];J[b+24>>2]=J[a+24>>2];J[b+28>>2]=c;c=J[a+36>>2];J[b+32>>2]=J[a+32>>2];J[b+36>>2]=c;return b|0}function lca(a){a=a|0;var b=0,c=0,d=0,e=0;d=Ui-16|0;Ui=d;a:{b:{if(a){b=J[79491];c=J[b+108>>2];e=J[b+112>>2]-c>>2;b=J[a>>2];if(e>>>0<=b>>>0){break b}J[d+12>>2]=J[c+(b<<2)>>2];ib(1,d+12|0);wr(J[79491],J[a>>2]);if(K[J[79491]+220|0]&2){c=_()|0;if(c){break a}}cj(a)}Ui=d+16|0;return}Z(145396,53895,487,84789);B()}Cj(c,35042,1793);Z(114101,40535,1793,35042);B()}function hca(a){a=a|0;var b=0,c=0,d=0,e=0;d=Ui-16|0;Ui=d;a:{b:{if(a){b=J[79491];c=J[b+108>>2];e=J[b+112>>2]-c>>2;b=J[a>>2];if(e>>>0<=b>>>0){break b}J[d+12>>2]=J[c+(b<<2)>>2];ib(1,d+12|0);wr(J[79491],J[a>>2]);if(K[J[79491]+220|0]&2){c=_()|0;if(c){break a}}cj(a)}Ui=d+16|0;return}Z(145396,53895,487,84789);B()}Cj(c,34951,1697);Z(114101,40535,1697,34951);B()}function UR(a,b){var c=0,d=0;c=Ui-16|0;Ui=c;J[b>>2]=J[a+4>>2];J[b+12>>2]=J[a+288>>2];J[b+8>>2]=J[a+156>>2];J[b+4>>2]=J[a+300>>2];b=b+16|0;Rp(b,3,8);pl(b,bj(25734),Yi,a+224|0);d=bj(35504);J[c+12>>2]=J[a+228>>2];pl(b,d,Yi,c+12|0);if(J[a+304>>2]){d=bj(80655);J[c+8>>2]=J[a+296>>2];pl(b,d,Yi,c+8|0);d=bj(82235);J[c+4>>2]=J[a+304>>2];pl(b,d,Yi,c+4|0)}Ui=c+16|0}function Jj(a,b,c){var d=0,e=0,f=0;d=Ui-32|0;Ui=d;f=J[a+12>>2];e=J[a>>2];e=J[e+8>>2]-J[e+12>>2]>>4;if((f|0)!=(e|0)){b=J[a+8>>2];a=J[a+4>>2];J[d+12>>2]=e;J[d+8>>2]=f;J[d>>2]=a;J[d+4>>2]=b;dj(4,86858,140976,d);Z(50107,37704,1504,3553);B()}J[d+28>>2]=c;hu(J[a>>2],1);jI(J[a>>2],b,J[d+28>>2]);lm(J[a>>2],2);J[a+16>>2]=-8388608;a=lq(J[a>>2]);Ui=d+32|0;return a}function rw(a,b,c,d){if(J[a+12>>2]<=(b|0)){a=J[a+8>>2];if(!b){mj(a,c,d-c|0);return}fj(a,5334,0);return}a:{b:{c:{b=(b<<3)+a|0;c=J[b+20>>2];switch(c+2|0){case 1:break b;case 0:break c;default:break a}}b=(J[b+16>>2]-J[a>>2]|0)+1|0;a=J[a+8>>2];c=J[a+8>>2];J[c+8>>2]=3;O[c>>3]=b|0;J[a+8>>2]=J[a+8>>2]+16;return}fj(J[a+8>>2],63668,0)}mj(J[a+8>>2],J[b+16>>2],c)}function Sl(a,b,c,d){var e=0,f=0,g=0,h=0;g=P(b,c);e=J[d+72>>2];J[d+72>>2]=e-1|e;e=J[d+4>>2];f=J[d+8>>2];if((e|0)==(f|0)){e=g}else{h=e;e=f-e|0;e=e>>>0>>0?e:g;hj(a,h,e);J[d+4>>2]=e+J[d+4>>2];a=a+e|0;e=g-e|0}if(e){while(1){a:{if(!zz(d)){f=Zi[J[d+32>>2]](d,a,e)|0;if(f){break a}}return(g-e>>>0)/(b>>>0)|0}a=a+f|0;e=e-f|0;if(e){continue}break}}return b?c:0}function MB(a,b,c,d){var e=0;e=Ui-32|0;Ui=e;if(!(b&15)){a:{if(c>>>0>=9){J[b>>2]=1112818760;J[b+4>>2]=4;J[e+24>>2]=0;J[e+28>>2]=0;J[e+16>>2]=0;J[e+20>>2]=0;a=fK(a,b,b,b+8|0,c-8|0,d,e+16|0);b:{if(H[e+28|0]&1){break b}b=J[e+16>>2];if(!b){break b}cj(b)}a=a+8|0;break a}J[e+4>>2]=8;J[e>>2]=c;fj(a,136313,e);a=0}Ui=e+32|0;return a}Z(113267,41830,717,67840);B()}function $E(a){var b=0,c=Q(0),d=0,e=Q(0),f=Q(0),g=Q(0),h=Q(0),i=0;b=Ui-16|0;Ui=b;c=N[a+52>>2];e=Rj(c);N[b+12>>2]=e;c=Hj(c);N[b+8>>2]=c;h=N[a+36>>2];f=N[a+28>>2];g=N[a+32>>2];N[b+4>>2]=N[a+40>>2]-Q(Q(c*f)+Q(e*g));N[b>>2]=h-Q(Q(e*f)-Q(c*g));d=J[a+100>>2];if(d){i=J[a+88>>2]+102872|0;a=a+12|0;while(1){WE(d,i,b,a);d=J[d+4>>2];if(d){continue}break}}Ui=b+16|0}function AI(a){var b=0,c=0,d=0,e=0;b=J[a+116>>2];if(b){b=b+J[a+32>>2]|0;if(J[b+8>>2]!=6){al(a,5)}c=J[a+8>>2];d=c-16|0;e=J[d+4>>2];J[c>>2]=J[d>>2];J[c+4>>2]=e;J[c+8>>2]=J[c-8>>2];e=J[b+4>>2];c=J[a+8>>2];d=c-16|0;J[d>>2]=J[b>>2];J[d+4>>2]=e;J[c-8>>2]=J[b+8>>2];b=J[a+8>>2];if((J[a+28>>2]-b|0)<=16){Ml(a,1);b=J[a+8>>2]}J[a+8>>2]=b+16;$o(a,b-16|0,1)}al(a,2)}function ps(a,b,c,d,e,f){var g=0,h=0;g=J[c>>2];a:{if((g|0)>=((e|0)/2|0)){if((e|0)>(g|0)){break a}xl(a,f,0);break a}e=g<<1;e=(e|0)<=4?4:e}if(e+1>>>0<=4294967293/(d>>>0)>>>0){f=J[a+16>>2];h=b;g=P(J[c>>2],d);b=P(d,e);d=Zi[J[f+12>>2]](J[f+16>>2],h,g,b)|0;if(!(d|!b)){al(a,4)}J[f+68>>2]=J[f+68>>2]+(b-g|0);J[c>>2]=e;return d}xl(a,57435,0);J[c>>2]=e;return 0}function hda(a){a=a|0;var b=0,c=0,d=0,e=0,f=0,g=0;b=Ui-320|0;Ui=b;f=pj(b+44|0,a,0,42133,2694);c=mk(a,1);e=Yi;Oj(a,2,4);d=Ij(a,2,b+40|0);d=VB(J[78228],c,e,d,J[b+40>>2]);if(d){J[b+32>>2]=tj(c,e);J[b+24>>2]=c;J[b+28>>2]=e;J[b+16>>2]=d;c=b- -64|0;Gj(c,256,(d|0)==-3?31635:(d|0)==-15?31570:31677,b+16|0);J[b>>2]=c;g=fj(a,31902,b)}oj(f);Ui=b+320|0;return g|0}function TJ(a,b,c,d){var e=0,f=0,g=0;f=Ui-32|0;Ui=f;pj(f+12|0,a,0,37704,810);e=J[84546];g=J[a+8>>2];J[g+8>>2]=3;O[g>>3]=e|0;J[a+8>>2]=J[a+8>>2]+16;Ck(a,-10002);a:{if(!sm(a,-1)){e=-2;break a}mj(a,172999,14);e=-2;Ll(a,-2);Rl(a,-2);if(!kj(a,-1)){gj(a,-2);break a}uj(a,-2);mj(a,b,c);Wk(a,2,1);J[d>>2]=Tl(a,-1);J[d+4>>2]=Yi;e=-3}gj(a,e);oj(f+12|0);Ui=f+32|0}function aua(a,b,c,d){a=a|0;b=b|0;c=c|0;d=d|0;var e=0,f=0,g=0,h=Q(0),i=Q(0),j=Q(0),k=Q(0),l=Q(0),m=Q(0);if((d|0)>0){while(1){g=f<<4;e=g+b|0;k=N[e>>2];l=N[e+4>>2];m=N[e+8>>2];h=N[a+28>>2];i=N[a+32>>2];j=N[a+36>>2];e=c+g|0;J[e+12>>2]=0;N[e+8>>2]=m>=Q(0)?j:Q(-j);N[e+4>>2]=l>=Q(0)?i:Q(-i);N[e>>2]=k>=Q(0)?h:Q(-h);f=f+1|0;if((f|0)!=(d|0)){continue}break}}}function PJ(a,b,c){a=a|0;b=b|0;c=c|0;var d=0,e=0,f=0,g=0;f=a+4|0;a:{b:{g=J[a+8>>2];e=J[a+4>>2];d=g-e|0;if(d>>>0>>0){if(H[a+12|0]&1){break b}d=c-d|0;lj((((d|0)<=32768?32768:d)+g|0)-J[a>>2]|0,1,a,a+8|0,f);e=J[a+4>>2];d=J[a+8>>2]-e|0}if(c>>>0>d>>>0){break a}hj(e,b,c);J[f>>2]=J[f>>2]+c;return 1}Z(151729,53895,501,2284);B()}Z(11738,53895,564,4042);B()}function lu(a,b,c){var d=0,e=0,f=0,g=0;a:{if((c|0)!=-1){d=J[b>>2];if((d|0)==-1){break a}g=J[J[a>>2]+12>>2];while(1){e=d;b=(e<<2)+g|0;f=J[b>>2];d=(f>>>14|0)-131071|0;if((d|0)!=-1){d=(e+d|0)+1|0;if((d|0)!=-1){continue}}break}e=(e^-1)+c|0;c=e>>31;if((c^e)-c>>>0>=131072){qk(J[a+12>>2],56034);f=J[b>>2]}J[b>>2]=(f&16383|e<<14)+2147467264}return}J[b>>2]=c}function cX(a,b,c){a=a|0;b=b|0;c=c|0;var d=0,e=0,f=0,g=0,h=0;e=J[a+84>>2];f=J[e>>2];d=J[e+4>>2];h=J[a+28>>2];g=J[a+20>>2]-h|0;g=d>>>0>>0?d:g;if(g){hj(f,h,g);f=g+J[e>>2]|0;J[e>>2]=f;d=J[e+4>>2]-g|0;J[e+4>>2]=d}d=c>>>0>d>>>0?d:c;if(d){hj(f,b,d);f=d+J[e>>2]|0;J[e>>2]=f;J[e+4>>2]=J[e+4>>2]-d}H[f|0]=0;b=J[a+44>>2];J[a+28>>2]=b;J[a+20>>2]=b;return c|0}function Aha(a){a=a|0;var b=0,c=0,d=0,e=0,f=0;b=Ui-32|0;Ui=b;d=pj(b+12|0,a,0,36620,117);Mn(a,80474,b+8|0,b+4|0,0);e=J[b+8>>2];c=J[b+4>>2];a=J[c+4>>2];if(!a){a=J[c>>2]}a:{b:{if(!(H[a+8|0]&1)){break b}if(H[c+24|0]&1){dj(4,88458,123235,0);a=0;break a}c=J[a>>2];if(!c){break b}vj(J[e>>2],c);J[a>>2]=0}a=1}if(!a){f=Jj(d,24338,0)}oj(d);Ui=b+32|0;return f|0}function nA(a,b,c){var d=0,e=0,f=0;a:{if(!c){break a}d=J[a>>2];f=d+c|0;J[a>>2]=f;e=d&63;if(d>>>0>f>>>0){J[a+4>>2]=J[a+4>>2]+1}b:{if(e){d=64-e|0;if(d>>>0>c>>>0){break b}f=e;e=a+40|0;hj(f+e|0,b,d);gs(a,e);c=c-d|0;b=b+d|0}if(c>>>0>=64){while(1){gs(a,b);b=b- -64|0;c=c+-64|0;if(c>>>0>63){continue}break}}e=0;if(!c){break a}}hj((a+e|0)+40|0,b,c)}return 0}function kG(a,b){var c=0,d=0,e=0;d=Ui-32|0;Ui=d;c=H[b|0];a:{if(!(K[b+1|0]?c:0)){b=Az(a,c);break a}ij(d,0,32);c=K[b|0];if(c){while(1){e=(c>>>3&28)+d|0;J[e>>2]=J[e>>2]|1<>>3&28)+d>>2]>>>c&1){break a}c=K[b+1|0];b=b+1|0;if(c){continue}break}}Ui=d+32|0;return b-a|0}function cs(a,b,c){var d=0,e=0,f=0;a:{if(!c){break a}d=J[a>>2];f=d+c|0;J[a>>2]=f;e=d&63;if(d>>>0>f>>>0){J[a+4>>2]=J[a+4>>2]+1}b:{if(e){d=64-e|0;if(d>>>0>c>>>0){break b}f=e;e=a+28|0;hj(f+e|0,b,d);hs(a,e);c=c-d|0;b=b+d|0}if(c>>>0>=64){while(1){hs(a,b);b=b- -64|0;c=c+-64|0;if(c>>>0>63){continue}break}}e=0;if(!c){break a}}hj((a+e|0)+28|0,b,c)}return 0}function $t(a,b,c){var d=0,e=0,f=0;a:{if(!c){break a}d=J[a>>2];f=d+c|0;J[a>>2]=f;e=d&63;if(d>>>0>f>>>0){J[a+4>>2]=J[a+4>>2]+1}b:{if(e){d=64-e|0;if(d>>>0>c>>>0){break b}f=e;e=a+24|0;hj(f+e|0,b,d);is(a,e);c=c-d|0;b=b+d|0}if(c>>>0>=64){while(1){is(a,b);b=b- -64|0;c=c+-64|0;if(c>>>0>63){continue}break}}e=0;if(!c){break a}}hj((a+e|0)+24|0,b,c)}return 0}function hw(a){var b=0,c=0,d=0;b=J[a+172>>2];a:{if(b>>>0>2]){J[a+172>>2]=b+1;b=K[b|0];break a}if(!J[a+32>>2]){b=0;break a}c=a+40|0;b=Zi[J[a+16>>2]](J[a+28>>2],c,J[a+36>>2])|0;J[a+168>>2]=J[a+168>>2]+(J[a+172>>2]-J[a+180>>2]|0);b:{if(!b){H[a+40|0]=0;J[a+32>>2]=0;d=a+41|0;b=0;break b}d=b+c|0;b=K[c|0]}J[a+176>>2]=d;J[a+172>>2]=a+41}return b}function F3(a){a=a|0;var b=0,c=Q(0),d=Q(0),e=0;e=wj(a,1);b=Sj(a,64);J[b+4>>2]=0;J[b+8>>2]=0;J[b>>2]=1065353216;J[b+44>>2]=0;J[b+48>>2]=0;J[b+28>>2]=0;J[b+32>>2]=0;J[b+60>>2]=1065353216;J[b+12>>2]=0;J[b+16>>2]=0;c=Q(e);d=Rj(c);N[b+40>>2]=d;c=Hj(c);N[b+24>>2]=c;N[b+20>>2]=d;J[b+52>>2]=0;J[b+56>>2]=0;N[b+36>>2]=-c;rj(a,-1e4,106883);Mj(a,-2);return 1}function E3(a){a=a|0;var b=0,c=Q(0),d=Q(0),e=0;e=wj(a,1);b=Sj(a,64);J[b+44>>2]=0;J[b+48>>2]=0;J[b+36>>2]=0;J[b+28>>2]=0;J[b+20>>2]=1065353216;J[b+24>>2]=0;J[b+12>>2]=0;J[b+16>>2]=0;J[b+4>>2]=0;J[b+60>>2]=1065353216;c=Q(e);d=Rj(c);N[b+40>>2]=d;c=Hj(c);N[b+32>>2]=c;N[b>>2]=d;J[b+52>>2]=0;J[b+56>>2]=0;N[b+8>>2]=-c;rj(a,-1e4,106883);Mj(a,-2);return 1}function D3(a){a=a|0;var b=0,c=Q(0),d=Q(0),e=0;e=wj(a,1);b=Sj(a,64);J[b+24>>2]=0;J[b+28>>2]=0;J[b+8>>2]=0;J[b+12>>2]=0;J[b+44>>2]=0;J[b+48>>2]=0;J[b+40>>2]=1065353216;J[b+60>>2]=1065353216;c=Q(e);d=Rj(c);N[b+20>>2]=d;c=Hj(c);N[b+4>>2]=c;N[b>>2]=d;J[b+32>>2]=0;J[b+36>>2]=0;J[b+52>>2]=0;J[b+56>>2]=0;N[b+16>>2]=-c;rj(a,-1e4,106883);Mj(a,-2);return 1}function Y5(a){a=a|0;var b=0,c=0,d=0,e=0,f=0,g=0;b=Ui-16|0;Ui=b;a:{b:{if(!kk(a,1)){J[b>>2]=35504;a=fj(a,115965,b);break b}c=J[a+8>>2]-J[a+12>>2]|0;Bj(a);d=qj(a,-1,J[84364],139081);gj(a,-2);if(c>>4!=J[a+8>>2]-J[a+12>>2]>>4){break a}f=sC(a,J[J[d+304>>2]+2480>>2]),g=Yi,e=J[79448],Zi[e](f|0,g|0);a=0}Ui=b+16|0;return a|0}Z(143244,37616,478,51340);B()}function SY(a){a=a|0;var b=0,c=0,d=0,e=0,f=0;c=Tn(a,1042);d=qs(a,2,52700,254608);b=Ui+-64|0;Ui=b;e=J[c>>2];J[b+48>>2]=0;e=nm(e,3,b+48|0);f=J[c>>2];J[b+32>>2]=e&-2049;nm(f,4,b+32|0);Yz(J[c>>2],d);d=J[c>>2];J[b+16>>2]=0;d=nm(d,3,b+16|0);c=J[c>>2];J[b>>2]=d|2048;nm(c,4,b);Ui=b- -64|0;b=J[a+8>>2];J[b+8>>2]=3;O[b>>3]=1;J[a+8>>2]=J[a+8>>2]+16;return 1}function BW(a){a=a|0;var b=0,c=0,d=0,e=0;b=Ui-1040|0;Ui=b;d=b+1036|0;e=Aj(a,1,d);J[b+4>>2]=0;J[b+8>>2]=a;J[b>>2]=b+12;a=J[b+1036>>2];c=a-1|0;J[b+1036>>2]=c;if(a){while(1){a=J[b>>2];if(d>>>0<=a>>>0){_l(b);c=J[b+1036>>2];a=J[b>>2]}c=K[c+e|0];J[b>>2]=a+1;H[a|0]=c;a=J[b+1036>>2];c=a-1|0;J[b+1036>>2]=c;if(a){continue}break}}Ym(b);Ui=b+1040|0;return 1}function eha(a,b){a=a|0;b=b|0;var c=0,d=0,e=0,f=0;c=Ui-16|0;Ui=c;d=J[a+360>>2];a=J[J[J[d+12>>2]+80>>2]+8>>2];a:{if(!a){break a}a=J[a>>2];if(!a){break a}e=J[a+3216>>2];f=J[a+3220>>2]}J[b>>2]=e;J[b+4>>2]=f;e=J[d+12>>2];a=J[e+100>>2];J[b+16>>2]=J[e+96>>2];J[b+20>>2]=a;a=Go(J[d+12>>2],L[d+20>>1],b+24|0);if(a){J[c>>2]=a;dj(4,88458,79008,c)}Ui=c+16|0}function ZN(a,b,c){var d=0,e=0;a:{b:{d=b&65535;e=J[a+36>>2];a=J[a+32>>2];if(d>>>0<(e-a|0)/672>>>0){a=a+P(d,672)|0;if(L[a+648>>1]!=(b>>>16|0)){break b}if(L[a+650>>1]!=(d|0)){break a}b=J[a+484>>2];if(b){cj(b)}if(!c){J[a+484>>2]=0;return}J[a+484>>2]=Gk(c);return}Z(145396,53895,487,84789);B()}Z(47372,40876,188,69601);B()}Z(5388,40876,189,69601);B()}function po(a){var b=0,c=0,d=0;if(a){if(J[a+96>>2]!=1){Dj(a+4|0);Dj(a+16|0);Dj(a+28|0);Dj(a+40|0);Dj(a+52|0);Dj(a- -64|0);Dj(a+76|0)}b=J[a+116>>2];if(b){c=J[a+120>>2];if(c){b=0;while(1){d=J[a+116>>2];if(d){c=P(b,36)+d|0;Dj(c);Dj(c+12|0);Dj(c+24|0);c=J[a+120>>2]}b=b+1|0;if(c>>>0>b>>>0){continue}break}b=J[a+116>>2]}cj(b)}Zi[J[66509]](a,0,124)|0}}function hma(a){a=a|0;var b=0,c=0,d=0,e=0,f=0,g=Q(0);c=Ui-32|0;Ui=c;f=pj(c+12|0,a,1,36839,253);b=qj(a,1,J[79308],3640);d=J[b+8>>2];e=J[b+12>>2];a:{if(!(d|e)){break a}if(xk(J[b+4>>2],d,e)){break a}J[c>>2]=tj(J[b+8>>2],J[b+12>>2]);fj(a,102051,c)}g=N[J[b>>2]+136>>2];b=J[a+8>>2];J[b+8>>2]=3;O[b>>3]=g;J[a+8>>2]=J[a+8>>2]+16;oj(f);Ui=c+32|0;return 1}function ema(a){a=a|0;var b=0,c=0,d=0,e=0,f=0,g=Q(0);c=Ui-32|0;Ui=c;f=pj(c+12|0,a,1,36839,269);b=qj(a,1,J[79308],3640);d=J[b+8>>2];e=J[b+12>>2];a:{if(!(d|e)){break a}if(xk(J[b+4>>2],d,e)){break a}J[c>>2]=tj(J[b+8>>2],J[b+12>>2]);fj(a,102051,c)}g=N[J[b>>2]+140>>2];b=J[a+8>>2];J[b+8>>2]=3;O[b>>3]=g;J[a+8>>2]=J[a+8>>2]+16;oj(f);Ui=c+32|0;return 1}function cma(a){a=a|0;var b=0,c=0,d=0,e=0,f=0,g=Q(0);c=Ui-32|0;Ui=c;f=pj(c+12|0,a,1,36839,237);b=qj(a,1,J[79308],3640);d=J[b+8>>2];e=J[b+12>>2];a:{if(!(d|e)){break a}if(xk(J[b+4>>2],d,e)){break a}J[c>>2]=tj(J[b+8>>2],J[b+12>>2]);fj(a,102051,c)}g=N[J[b>>2]+132>>2];b=J[a+8>>2];J[b+8>>2]=3;O[b>>3]=g;J[a+8>>2]=J[a+8>>2]+16;oj(f);Ui=c+32|0;return 1}function bZ(a){a=a|0;var b=0,c=0,d=0,e=0,f=0;c=Ui-16|0;Ui=c;d=1;b=Tn(a,1091);J[c+8>>2]=0;e=Aj(a,2,c+12|0);f=b+8|0;Po(f);b=BG(b,e,J[c+12>>2],c+8|0,f);a:{if(b){d=J[a+8>>2];J[d+8>>2]=0;J[a+8>>2]=d+16;if((b|0)==-2){b=74280}else{b=Tm(b)}xj(a,b);d=2;break a}b=J[c+8>>2];e=J[a+8>>2];J[e+8>>2]=3;O[e>>3]=b>>>0;J[a+8>>2]=J[a+8>>2]+16}Ui=c+16|0;return d|0}function Xla(a){a=a|0;var b=0,c=0,d=0,e=0,f=0,g=Q(0);c=Ui-32|0;Ui=c;f=pj(c+12|0,a,1,36839,156);b=qj(a,1,J[79308],3640);d=J[b+8>>2];e=J[b+12>>2];a:{if(!(d|e)){break a}if(xk(J[b+4>>2],d,e)){break a}J[c>>2]=tj(J[b+8>>2],J[b+12>>2]);fj(a,102051,c)}g=N[J[b>>2]+116>>2];b=J[a+8>>2];J[b+8>>2]=3;O[b>>3]=g;J[a+8>>2]=J[a+8>>2]+16;oj(f);Ui=c+32|0;return 1}function zp(a,b){a:{if((b|0)>=1024){a=a*898846567431158e293;if(b>>>0<2047){b=b-1023|0;break a}a=a*898846567431158e293;b=(b>>>0>=3069?3069:b)-2046|0;break a}if((b|0)>-1023){break a}a=a*2004168360008973e-307;if(b>>>0>4294965304){b=b+969|0;break a}a=a*2004168360008973e-307;b=(b>>>0<=4294964336?-2960:b)+1938|0}x(0,0);x(1,b+1023<<20);return a*+z()}function pr(a,b,c){var d=0,e=0,f=0,g=0,h=0;d=Ui-1024|0;Ui=d;ip(b,d);e=Ul(d,yj(d));f=Yi;g=-10;a=J[a>>2];b=J[a+4>>2];a:{if(!b){break a}b=J[J[a>>2]+(mxa(e,f,b)<<2)>>2];if((b|0)==-1){break a}h=J[a+8>>2];while(1){a=P(b,56)+h|0;if(J[a>>2]!=(e|0)|J[a+4>>2]!=(f|0)){b=J[a+48>>2];if((b|0)!=-1){continue}break a}break}J[c>>2]=a+8;g=0}Ui=d+1024|0;return g}function ima(a){a=a|0;var b=0,c=0,d=0,e=0,f=0,g=Q(0);c=Ui-32|0;Ui=c;f=pj(c+12|0,a,1,36839,172);b=qj(a,1,J[79308],3640);d=J[b+8>>2];e=J[b+12>>2];a:{if(!(d|e)){break a}if(xk(J[b+4>>2],d,e)){break a}J[c>>2]=tj(J[b+8>>2],J[b+12>>2]);fj(a,102051,c)}g=N[J[b>>2]+56>>2];b=J[a+8>>2];J[b+8>>2]=3;O[b>>3]=g;J[a+8>>2]=J[a+8>>2]+16;oj(f);Ui=c+32|0;return 1}function gma(a){a=a|0;var b=0,c=0,d=0,e=0,f=0,g=Q(0);c=Ui-32|0;Ui=c;f=pj(c+12|0,a,1,36839,221);b=qj(a,1,J[79308],3640);d=J[b+8>>2];e=J[b+12>>2];a:{if(!(d|e)){break a}if(xk(J[b+4>>2],d,e)){break a}J[c>>2]=tj(J[b+8>>2],J[b+12>>2]);fj(a,102051,c)}g=N[J[b>>2]+72>>2];b=J[a+8>>2];J[b+8>>2]=3;O[b>>3]=g;J[a+8>>2]=J[a+8>>2]+16;oj(f);Ui=c+32|0;return 1}function b9(a){a=a|0;var b=0,c=0,d=0,e=0,f=Q(0),g=0,h=0,i=Q(0);c=Ui-32|0;Ui=c;b=un(a,1);if(!b){b=Pl(a,1)}d=J[b>>2];e=J[b+4>>2];f=N[b+8>>2];b=Pl(a,2);g=J[b>>2];h=J[b+4>>2];i=N[b+8>>2];Bj(a);b=qj(a,-1,J[219396],139183);gj(a,-2);N[c+24>>2]=f;J[c+16>>2]=d;J[c+20>>2]=e;N[c+8>>2]=i;J[c>>2]=g;J[c+4>>2]=h;a=gD(a,b,c+16|0,c,0,0,0);Ui=c+32|0;return a|0}function _ra(a,b,c,d){a=a|0;b=b|0;c=c|0;d=d|0;var e=0;e=Ui-48|0;Ui=e;J[e+44>>2]=d;J[e+40>>2]=244352;d=J[b+12>>2];J[e+16>>2]=J[b+8>>2];J[e+20>>2]=d;d=J[b+4>>2];J[e+8>>2]=J[b>>2];J[e+12>>2]=d;b=J[c+12>>2];J[e+32>>2]=J[c+8>>2];J[e+36>>2]=b;b=J[c+4>>2];J[e+24>>2]=J[c>>2];J[e+28>>2]=b;b=e+8|0;c=e+40|0;Hv(J[a+4>>2],b,c);Hv(J[a+44>>2],b,c);Ui=e+48|0}function TU(a,b,c,d,e,f,g){J[a+56>>2]=g;J[a+52>>2]=f;N[a+48>>2]=e;N[a+44>>2]=d;J[a+40>>2]=b;J[a>>2]=247100;H[a+20|0]=K[a+20|0]&254;H[a+60|0]=K[a+60|0]|1;b=P(f,g);f=b<<2;g=sj(f);J[a+32>>2]=g;ij(g,255,f);f=sj(b);J[a+36>>2]=f;ij(f,0,b);b=J[c>>2];c=J[c+4>>2];J[a+4>>2]=4;J[a+8>>2]=1008981770;J[a+24>>2]=b;J[a+28>>2]=c;H[a+20|0]=K[a+20|0]|1;return a}function MW(a,b,c,d,e){a=a|0;b=b|0;c=c|0;d=d|0;e=e|0;var f=0,g=0,h=0;a:{if((d|0)<=0){break a}e=0;if((d|0)!=1){h=d&2147483646;while(1){H[a+e|0]=(K[c+e|0]+P(K[b+e|0],3)|0)+2>>>2;f=e|1;H[f+a|0]=(K[c+f|0]+P(K[b+f|0],3)|0)+2>>>2;e=e+2|0;g=g+2|0;if((h|0)!=(g|0)){continue}break}}if(!(d&1)){break a}H[a+e|0]=(K[c+e|0]+P(K[b+e|0],3)|0)+2>>>2}return a|0}function $8(a){a=a|0;var b=0,c=0,d=0,e=0,f=Q(0),g=0,h=0,i=Q(0);c=Ui-32|0;Ui=c;b=un(a,1);if(!b){b=Pl(a,1)}d=J[b>>2];e=J[b+4>>2];f=N[b+8>>2];b=Pl(a,2);g=J[b>>2];h=J[b+4>>2];i=N[b+8>>2];Bj(a);b=qj(a,-1,J[219396],139183);gj(a,-2);N[c+24>>2]=f;J[c+16>>2]=d;J[c+20>>2]=e;N[c+8>>2]=i;J[c>>2]=g;J[c+4>>2]=h;a=gD(a,b,c+16|0,c,2,0,0);Ui=c+32|0;return a|0}function vO(a,b,c){var d=0,e=0;a:{b:{d=c&65535;e=J[b+36>>2];b=J[b+32>>2];if(d>>>0<(e-b|0)/672>>>0){b=b+P(d,672)|0;if(L[b+648>>1]!=(c>>>16|0)){break b}if(L[b+650>>1]!=(d|0)){break a}c=J[b+68>>2];d=J[b+64>>2];N[a+8>>2]=N[b+72>>2];J[a>>2]=d;J[a+4>>2]=c;return}Z(145396,53895,487,84789);B()}Z(47372,40876,188,69601);B()}Z(5388,40876,189,69601);B()}function HB(a){var b=0,c=0,d=0,e=0;c=J[a+124>>2];d=J[a+112>>2];b=J[a+108>>2];if((d|0)!=(b|0)){while(1){e=J[J[b>>2]+8>>2];if(e){Zi[e|0](a);d=J[a+112>>2]}b=b+4|0;if((b|0)!=(d|0)){continue}break}}rj(c,-10002,75598);cj(Vj(c,-1));gj(c,-2);b=J[a+128>>2];if((b|0)!=-2){a=J[84548];if((a|0)<=0){dj(4,86858,57703,0);a=J[84548]}J[84548]=a-1;Fp(c,-1e4,b)}}function rea(a){a=a|0;var b=0,c=0,d=0,e=0;e=J[a>>2];b=J[J[a+8>>2]+8>>2];c=J[b+28>>2];if(c){vj(e,c)}d=J[b>>2];if((d|0)!=J[b+4>>2]){c=0;while(1){vj(e,J[(c<<2)+d>>2]);c=c+1|0;d=J[b>>2];if(c>>>0>2]-d>>2>>>0){continue}break}}c=J[b+24>>2];if(c){AL(c)}Np(J[a>>2],594,b);a:{if(H[b+12|0]&1){break a}a=J[b>>2];if(!a){break a}cj(a)}cj(b);return 0}function pj(a,b,c,d,e){var f=0;f=Ui-16|0;Ui=f;J[a+8>>2]=e;J[a+4>>2]=d;J[a>>2]=b;b=J[b+8>>2]-J[b+12>>2]>>4;J[a+16>>2]=c;J[a+12>>2]=b;e=0-b|0;if((e|0)>(c|0)){d=J[a+8>>2];e=J[a+4>>2];J[f+12>>2]=b;J[f+8>>2]=c;J[f>>2]=e;J[f+4>>2]=d;dj(4,86858,142390,f);e=0-J[a+12>>2]|0;c=J[a+16>>2]}if((c|0)<(e|0)){Z(43095,37704,1481,51326);B()}Ui=f+16|0;return a}function Sq(a,b){var c=0,d=0;a:{d=J[a+102796>>2];if((d|0)>0){c=P(d,12)+a|0;if(J[c+102400>>2]!=(b|0)){break a}c=c+102412|0;b:{if(K[c-4|0]==1){cj(b);b=J[c-8>>2];d=J[a+102796>>2];break b}b=J[c-8>>2];J[a+102400>>2]=J[a+102400>>2]-b}J[a+102796>>2]=d-1;J[a+102404>>2]=J[a+102404>>2]-b;return}Z(111790,39674,63,68876);B()}Z(83383,39674,65,68876);B()}function Pla(a){a=a|0;var b=0,c=0,d=0,e=0,f=0;c=Ui-32|0;Ui=c;f=pj(c+12|0,a,1,36839,369);b=qj(a,1,J[79308],3640);d=J[b+8>>2];e=J[b+12>>2];a:{if(!(d|e)){break a}if(xk(J[b+4>>2],d,e)){break a}J[c>>2]=tj(J[b+8>>2],J[b+12>>2]);fj(a,102051,c)}b=L[J[b>>2]+4>>1]>>>5&1;d=J[a+8>>2];J[d+8>>2]=1;J[d>>2]=b;J[a+8>>2]=J[a+8>>2]+16;oj(f);Ui=c+32|0;return 1}function Ola(a){a=a|0;var b=0,c=0,d=0,e=0,f=0;c=Ui-32|0;Ui=c;f=pj(c+12|0,a,1,36839,318);b=qj(a,1,J[79308],3640);d=J[b+8>>2];e=J[b+12>>2];a:{if(!(d|e)){break a}if(xk(J[b+4>>2],d,e)){break a}J[c>>2]=tj(J[b+8>>2],J[b+12>>2]);fj(a,102051,c)}b=L[J[b>>2]+4>>1]>>>1&1;d=J[a+8>>2];J[d+8>>2]=1;J[d>>2]=b;J[a+8>>2]=J[a+8>>2]+16;oj(f);Ui=c+32|0;return 1}function Nla(a){a=a|0;var b=0,c=0,d=0,e=0,f=0;c=Ui-32|0;Ui=c;f=pj(c+12|0,a,1,36839,301);b=qj(a,1,J[79308],3640);d=J[b+8>>2];e=J[b+12>>2];a:{if(!(d|e)){break a}if(xk(J[b+4>>2],d,e)){break a}J[c>>2]=tj(J[b+8>>2],J[b+12>>2]);fj(a,102051,c)}b=L[J[b>>2]+4>>1]>>>3&1;d=J[a+8>>2];J[d+8>>2]=1;J[d>>2]=b;J[a+8>>2]=J[a+8>>2]+16;oj(f);Ui=c+32|0;return 1}function Mla(a){a=a|0;var b=0,c=0,d=0,e=0,f=0;c=Ui-32|0;Ui=c;f=pj(c+12|0,a,1,36839,335);b=qj(a,1,J[79308],3640);d=J[b+8>>2];e=J[b+12>>2];a:{if(!(d|e)){break a}if(xk(J[b+4>>2],d,e)){break a}J[c>>2]=tj(J[b+8>>2],J[b+12>>2]);fj(a,102051,c)}b=L[J[b>>2]+4>>1]>>>4&1;d=J[a+8>>2];J[d+8>>2]=1;J[d>>2]=b;J[a+8>>2]=J[a+8>>2]+16;oj(f);Ui=c+32|0;return 1}function Lla(a){a=a|0;var b=0,c=0,d=0,e=0,f=0;c=Ui-32|0;Ui=c;f=pj(c+12|0,a,1,36839,352);b=qj(a,1,J[79308],3640);d=J[b+8>>2];e=J[b+12>>2];a:{if(!(d|e)){break a}if(xk(J[b+4>>2],d,e)){break a}J[c>>2]=tj(J[b+8>>2],J[b+12>>2]);fj(a,102051,c)}b=L[J[b>>2]+4>>1]>>>2&1;d=J[a+8>>2];J[d+8>>2]=1;J[d>>2]=b;J[a+8>>2]=J[a+8>>2]+16;oj(f);Ui=c+32|0;return 1}function _7(a){a=a|0;var b=0,c=0,d=0;c=Ui-16|0;Ui=c;b=Kk(a,1,J[219397]);d=Kk(a,2,J[219397]);a:{if(!(d?b:0)){b=J[a+8>>2];J[b+8>>2]=1;J[b>>2]=0;break a}if(J[b>>2]!=J[d>>2]){b=J[a+8>>2];J[b+8>>2]=1;J[b>>2]=0;break a}Qj(a,1,c+12|0);Qj(a,2,c+8|0);b=J[c+12>>2]==J[c+8>>2];d=J[a+8>>2];J[d+8>>2]=1;J[d>>2]=b}J[a+8>>2]=J[a+8>>2]+16;Ui=c+16|0;return 1}function R2(a){a=a|0;var b=0,c=0,d=Q(0),e=0,f=0;e=Ui-32|0;Ui=e;f=pj(e+12|0,a,1,39097,545);b=Aj(a,1,0);if((kj(a,2)|0)==-1){d=Q(0)}else{d=Q(wj(a,2))}a:{b:{c=mr(a);if(!c){break b}c=J[c>>2];if(!c){break b}d=fn(c,b,d);b=J[a+8>>2];J[b+8>>2]=3;O[b>>3]=d;J[a+8>>2]=J[a+8>>2]+16;break a}b=J[a+8>>2];J[b+8>>2]=0;J[a+8>>2]=b+16}oj(f);Ui=e+32|0;return 1}function C6(a){a=a|0;var b=0,c=0,d=0,e=0,f=0,g=0;c=Ui-32|0;Ui=c;d=1;g=pj(c+12|0,a,1,42776,90);Fj(a,0,0);b=J[84392];if(J[b+2272>>2]){while(1){f=J[J[b+2264>>2]+(e<<2)>>2];if(f){b=J[a+8>>2];J[b+8>>2]=3;O[b>>3]=d|0;J[a+8>>2]=J[a+8>>2]+16;wm(a,f);Kj(a,-3);b=J[84392];d=d+1|0}e=e+1|0;if(e>>>0>2]){continue}break}}oj(g);Ui=c+32|0;return 1}function yoa(a){a=a|0;var b=0,c=0,d=0,e=0;c=Ui-16|0;Ui=c;e=Ej(a,1);if(!((e|0)==1&K[927968]!=0)){fj(a,72341,0)}d=Ej(a,2);a:{if(d>>>0>=32){J[c>>2]=32;a=fj(a,77532,c);break a}if(!(!K[927968]|((e|0)!=1|d>>>0>31))){b=(d<<8)+927968|0;H[b+703|0]=0;b=b+448|0}b:{if(!b){b=J[a+8>>2];J[b+8>>2]=0;J[a+8>>2]=b+16;break b}xj(a,b)}a=1}Ui=c+16|0;return a|0}function u8(a){a=a|0;var b=0,c=0,d=0,e=0,f=0,g=0;b=Ui-176|0;Ui=b;c=pj(b+156|0,a,0,37682,4724);Qj(a,1,b+152|0);e=mk(a,2);f=Yi;Bj(a);g=qj(a,-1,J[219396],139183);gj(a,-2);a:{b:{switch(aD(g,J[b+152>>2],e,f)+10|0){case 0:d=Jj(c,153218,0);break a;case 5:break b;default:break a}}J[b>>2]=rx(a,2,b+16|0);d=Jj(c,149605,b)}oj(c);Ui=b+176|0;return d|0}function iA(a){var b=0,c=0;b=J[a+68>>2];c=J[b+496>>2];if(c){while(1){b=J[c+12>>2];cj(J[c>>2]);cj(c);c=b;if(b){continue}break}b=J[a+68>>2]}J[b+496>>2]=0;J[b+500>>2]=0;H[b+528|0]=0;J[b+508>>2]=J[b+476>>2];AG(a);c=J[a+92>>2];if(c){Zi[c|0](J[a+88>>2],0,0)}c=J[a+68>>2];a:{if(J[a+128>>2]==22){b=3;if(K[J[a+120>>2]]==20){break a}}b=0}H[c+492|0]=b}function nR(a,b,c,d){var e=0,f=0,g=0;f=J[a+4>>2];e=J[a>>2];if(f>>>0>=M[e+4>>2]){Z(12601,39139,270,2838);B()}J[a+4>>2]=f+1;g=J[e+8>>2]+(f<<3)|0;J[g>>2]=b;J[g+4>>2]=c;b=f<<2;J[b+J[e+16>>2]>>2]=5;c=J[a+8>>2];J[b+J[e+12>>2]>>2]=c;b=J[e+24>>2]+(c<<2)|0;N[b>>2]=N[d>>2];N[b+4>>2]=N[d+4>>2];N[b+8>>2]=N[d+8>>2];N[b+12>>2]=N[d+12>>2];J[a+8>>2]=c+4}function lR(a,b,c,d){var e=0,f=0,g=0;f=J[a+4>>2];e=J[a>>2];if(f>>>0>=M[e+4>>2]){Z(12601,39139,270,2838);B()}J[a+4>>2]=f+1;g=J[e+8>>2]+(f<<3)|0;J[g>>2]=b;J[g+4>>2]=c;b=f<<2;J[b+J[e+16>>2]>>2]=4;c=J[a+8>>2];J[b+J[e+12>>2]>>2]=c;b=J[e+24>>2]+(c<<2)|0;N[b>>2]=N[d>>2];N[b+4>>2]=N[d+4>>2];N[b+8>>2]=N[d+8>>2];N[b+12>>2]=N[d+12>>2];J[a+8>>2]=c+4}function Mt(a){var b=0;a:{switch(a+12|0){case 9:return 44794;case 11:return 21395;case 8:return 44831;case 6:return 73260;case 2:return 63697;case 10:return 44527;case 0:return 6449;case 4:return 64080;case 5:return 73432;case 1:a=J[245744];return L[((a>>>0<=153?a:0)<<1)+215472>>1]+213556|0;default:b=ru(a);break;case 12:break a}}return b}function fT(a,b){var c=0,d=0,e=0,f=0,g=0;d=J[a+480>>2];if((d|0)<=0){J[a+252>>2]=0;return}f=J[a+488>>2];a:{while(1){e=(c<<2)+f|0;g=J[e>>2];if((g|0)!=(b|0)){e=1;c=c+1|0;if((d|0)!=(c|0)){continue}break a}break}if((c|0)>=(d|0)){J[a+252>>2]=1;return}b=d-1|0;c=b<<2;J[e>>2]=J[c+f>>2];J[c+J[a+488>>2]>>2]=g;J[a+480>>2]=b;e=(d|0)!=1}J[a+252>>2]=e}function fL(a,b,c,d){var e=0,f=0;a:{b:{switch(J[a+16>>2]){case 0:e=J[a>>2];f=J[a+4>>2]-e>>2;a=L[a+20>>1];if(f>>>0<=a>>>0){break a}Zi[J[79394]](J[e+(a<<2)>>2],b,c,d);return;case 1:e=J[a>>2];f=J[a+4>>2]-e>>2;a=L[a+20>>1];if(f>>>0<=a>>>0){break a}Zi[J[79400]](J[e+(a<<2)>>2],b,c,d);break;default:break b}}return}Z(145396,53895,487,84789);B()}function Ula(a){a=a|0;var b=0,c=0,d=0,e=0,f=0;c=Ui-32|0;Ui=c;f=pj(c+12|0,a,1,36839,285);b=qj(a,1,J[79308],3640);d=J[b+8>>2];e=J[b+12>>2];a:{if(!(d|e)){break a}if(xk(J[b+4>>2],d,e)){break a}J[c>>2]=tj(J[b+8>>2],J[b+12>>2]);fj(a,102051,c)}b=J[J[b>>2]>>2];d=J[a+8>>2];J[d+8>>2]=3;O[d>>3]=b>>>0;J[a+8>>2]=J[a+8>>2]+16;oj(f);Ui=c+32|0;return 1}function Qs(a,b,c,d){var e=0,f=0;a:{b:{switch(J[a+16>>2]){case 0:e=J[a>>2];f=J[a+4>>2]-e>>2;a=L[a+20>>1];if(f>>>0<=a>>>0){break a}Zi[J[79393]](J[e+(a<<2)>>2],b,c,d);return;case 1:e=J[a>>2];f=J[a+4>>2]-e>>2;a=L[a+20>>1];if(f>>>0<=a>>>0){break a}Zi[J[79399]](J[e+(a<<2)>>2],b,c,d);break;default:break b}}return}Z(145396,53895,487,84789);B()}function uea(a){a=a|0;var b=0,c=0,d=0,e=0,f=0;b=Ui-16|0;Ui=b;c=J[a+4>>2];e=J[J[a+36>>2]+8>>2];J[b+12>>2]=0;d=-13;if(!dk(J[a+20>>2],J[a+24>>2],J[55330],b+12|0,0)){ht(J[b+12>>2]);f=Jq(J[a>>2],J[c+4>>2],J[b+12>>2]);c=J[b+12>>2];if(f){if(!UN(e,c)){J[J[a+36>>2]+16>>2]=J[a+24>>2]-J[J[b+12>>2]+4>>2];d=0}c=J[b+12>>2]}Uj(c)}Ui=b+16|0;return d|0}function Qla(a){a=a|0;var b=0,c=0,d=0,e=0,f=0;c=Ui-32|0;Ui=c;f=pj(c+12|0,a,1,36839,440);b=qj(a,1,J[79308],3640);d=J[b+8>>2];e=J[b+12>>2];a:{if(!(d|e)){break a}if(xk(J[b+4>>2],d,e)){break a}J[c>>2]=tj(J[b+8>>2],J[b+12>>2]);fj(a,102051,c)}b=J[J[b>>2]+88>>2];d=J[a+8>>2];J[d+8>>2]=2;J[d>>2]=b;J[a+8>>2]=J[a+8>>2]+16;oj(f);Ui=c+32|0;return 1}function zm(a){var b=0;a:{b=J[a+5820>>2];b:{if((b|0)==16){b=J[a+20>>2];J[a+20>>2]=b+1;H[b+J[a+8>>2]|0]=K[a+5816|0];b=J[a+20>>2];J[a+20>>2]=b+1;H[b+J[a+8>>2]|0]=K[a+5817|0];I[a+5816>>1]=0;b=0;break b}if((b|0)<8){break a}b=J[a+20>>2];J[a+20>>2]=b+1;H[b+J[a+8>>2]|0]=K[a+5816|0];I[a+5816>>1]=K[a+5817|0];b=J[a+5820>>2]-8|0}J[a+5820>>2]=b}}function lv(a){var b=0,c=0,d=0,e=0;c=Ui-32|0;Ui=c;e=J[a+156>>2];b=J[a+148>>2];if(!b){b=J[e+24>>2]}J[c+8>>2]=J[b>>2];b=c+12|0;J[b>>2]=0;J[b+4>>2]=0;J[b+16>>2]=0;J[b+8>>2]=0;J[b+12>>2]=0;Ek(b,c+8|0,4);d=J[a+152>>2];if(!d){d=J[J[a+156>>2]>>2]}Ek(b,d,104);Ek(b,J[e+4>>2]+16|0,4);d=J[a+144>>2];if(d){yr(d,b)}J[a+140>>2]=mn(c+12|0);Ui=c+32|0}function Zna(a,b,c,d,e){a=a|0;b=b|0;c=c|0;d=d|0;e=e|0;var f=0;if(b){f=b;b=J[a+148>>2];J[f>>2]=(b|0)==1?1:(b|0)==-1?-1:0}if(c){J[c>>2]=J[a+144>>2]}b=J[a+12>>2];if(d){J[d>>2]=b}a:{if(!e){break a}J[e>>2]=sj(b<<2);if((b|0)<=0){break a}c=a+16|0;a=0;while(1){d=a<<2;f=Gk(J[d+c>>2]);J[d+J[e>>2]>>2]=f;a=a+1|0;if((b|0)!=(a|0)){continue}break}}}function It(a,b,c){var d=0,e=0;if(!c){return 0}d=K[a|0];if(d){a:{while(1){e=K[b|0];if(!e){break a}c=c-1|0;if(!c){break a}if(!((d|0)==(e|0)|((d-65>>>0<26?d|32:d)|0)==((e-65>>>0<26?e|32:e)|0))){d=K[a|0];break a}b=b+1|0;d=K[a+1|0];a=a+1|0;if(d){continue}break}d=0}a=d}else{a=0}c=a-65>>>0<26?a|32:a;a=K[b|0];return c-(a-65>>>0<26?a|32:a)|0}function C1(a){a=a|0;var b=0,c=0,d=0,e=0,f=0;b=Ui-32|0;Ui=b;e=J[Vj(a,1)>>2];c=Ej(a,2);d=J[e>>2];a:{if(!((c|0)<=0|(d|0)<(c|0))){f=wj(a,3);N[(J[e+4>>2]+(c<<2)|0)-4>>2]=f;a=0;break a}if((d|0)>0){J[b+8>>2]=d;J[b+4>>2]=32205;J[b>>2]=53139;a=fj(a,130181,b);break a}J[b+20>>2]=32205;J[b+16>>2]=53139;a=fj(a,131268,b+16|0)}Ui=b+32|0;return a|0}function Gka(a){a=a|0;var b=0,c=0,d=0,e=0,f=0,g=0;b=J[a+1040>>2];f=J[b+32>>2];g=J[b+28>>2];b=J[a+1052>>2];d=b;c=J[a+1048>>2];e=c+1|0;b=e?b:b+1|0;J[a+1048>>2]=e;J[a+1052>>2]=b;if(!(d|c)){J[a+8>>2]=6;b=J[f+8>>2];if(H[g+145|0]&1){b=J[J[b>>2]+188>>2]!=0}else{b=(K[b+4|0]&32)>>>5|0}H[a+16|0]=b;J[a>>2]=bj(75216);J[a+4>>2]=Yi}return!(d|c)|0}function $s(a,b){var c=0;c=J[b>>2];if(c){vj(a,c)}c=J[b+4>>2];if(c){vj(a,c)}c=J[b+8>>2];if(c){vj(a,c)}c=J[b+12>>2];if(c){vj(a,c)}c=J[b+16>>2];if(c){vj(a,c)}c=J[b+20>>2];if(c){vj(a,c)}c=J[b+24>>2];if(c){vj(a,c)}c=J[b+28>>2];if(c){vj(a,c)}J[b>>2]=0;J[b+4>>2]=0;J[b+24>>2]=0;J[b+28>>2]=0;J[b+16>>2]=0;J[b+20>>2]=0;J[b+8>>2]=0;J[b+12>>2]=0}function lfa(a){a=a|0;var b=0,c=0,d=0,e=0,f=0;c=Ui-32|0;Ui=c;d=J[J[a+36>>2]+8>>2];e=hL();f=J[a+16>>2];if(dk(J[a+20>>2],J[a+24>>2],J[63106],c+28|0,0)){a=-13}else{b=c+8|0;J[b+8>>2]=0;J[b+12>>2]=0;J[b>>2]=0;J[b>>2]=J[c+28>>2];J[b+8>>2]=bj(f);J[b+12>>2]=Yi;dL(e,b);Uj(J[c+28>>2]);if(d){qC(d)}J[J[a+36>>2]+8>>2]=e;a=0}Ui=c+32|0;return a|0}function Xz(a,b,c,d,e){var f=0,g=0,h=0,i=0,j=0,k=0,l=0;h=Ui-240|0;Ui=h;J[h>>2]=a;i=1;a:{if((d|0)<2){break a}k=0-b|0;f=a;while(1){f=f+k|0;j=d-2|0;g=f-J[(j<<2)+e>>2]|0;if((Vq(a,g,c)|0)>=0){if((Vq(a,f,c)|0)>=0){break a}}l=g;g=(Vq(g,f,c)|0)>=0;f=g?l:f;J[(i<<2)+h>>2]=f;i=i+1|0;d=g?d-1|0:j;if((d|0)>1){continue}break}}ES(b,h,i);Ui=h+240|0}function qoa(a,b,c){a=a|0;b=b|0;c=c|0;var d=0,e=0,f=0,g=0;e=a+4|0;a:{b:{g=J[a+8>>2];d=J[a+4>>2];f=g-d|0;if(f>>>0>>0){if(H[a+12|0]&1){break b}lj(((c+g|0)-J[a>>2]|0)+1024|0,1,a,a+8|0,e);d=J[a+4>>2];f=J[a+8>>2]-d|0}if(c>>>0>f>>>0){break a}hj(d,b,c);J[e>>2]=J[e>>2]+c;return 1}Z(151729,53895,501,2284);B()}Z(11738,53895,564,4042);B()}function sL(a,b,c){var d=0,e=0;e=Ui-16|0;Ui=e;a:{b:{d=J[a+2236>>2];c:{if(!d){break c}d=J[J[a+2232>>2]+((b>>>0)%(d>>>0)<<2)>>2];if((d|0)==-1){break c}a=J[a+2240>>2];while(1){d=a+P(d,280)|0;if(J[d>>2]==(b|0)){break b}d=J[d+272>>2];if((d|0)!=-1){continue}break}}J[e>>2]=b;dj(4,90423,6029,e);J[c>>2]=0;break a}hj(c,d+8|0,264)}Ui=e+16|0}function lO(a,b,c){var d=0,e=0;a:{b:{e=b&65535;d=J[a+32>>2];if(e>>>0<(J[a+36>>2]-d|0)/672>>>0){d=P(e,672)+d|0;if(L[d+648>>1]!=(b>>>16|0)){break b}if(L[d+650>>1]!=(e|0)){break a}J[d+476>>2]=J[d+476>>2]&-1048577|(c?1048576:0);if(c){nO(a,b)}return}Z(145396,53895,487,84789);B()}Z(47372,40876,188,69601);B()}Z(5388,40876,189,69601);B()}function Gs(a,b){var c=0,d=0,e=0,f=0;e=Ui-32|0;Ui=e;f=pj(e+12|0,a,1,39971,1247);c=Sj(a,24);d=J[b+4>>2];J[c+4>>2]=d;a:{if((d|0)==2){J[c>>2]=J[b>>2];I[c+16>>1]=L[b+16>>1];d=J[b+12>>2];J[c+8>>2]=J[b+8>>2];J[c+12>>2]=d;break a}J[c>>2]=J[b>>2];if(d>>>0<3){break a}Z(137224,39971,1262,35167);B()}rj(a,-1e4,34859);Mj(a,-2);oj(f);Ui=e+32|0}function xra(a,b){a=a|0;b=b|0;var c=0,d=0,e=0,f=0,g=0;c=J[a+184>>2];a:{if((c|0)<=0){break a}e=J[a+192>>2];while(1){f=(d<<2)+e|0;g=J[f>>2];if((g|0)!=(b|0)){d=d+1|0;if((c|0)!=(d|0)){continue}break a}break}if((c|0)<=(d|0)){break a}c=c-1|0;d=c<<2;J[f>>2]=J[d+e>>2];J[d+J[a+192>>2]>>2]=g;J[a+184>>2]=c}fT(J[b+20>>2],b);fT(J[b+24>>2],b)}function gua(a,b,c,d,e,f){a=a|0;b=b|0;c=c|0;d=d|0;e=e|0;f=f|0;var g=0;g=J[a+108>>2];if(!g){e=L[a+56>>1];if(e){b=1;f=1;while(1){b=J[a+68>>2]+(b<<2)|0;if(H[b|0]&1){Zi[J[J[d>>2]+8>>2]](d,J[a+60>>2]+(L[b+2>>1]<<6)|0)|0;e=L[a+56>>1]}f=f+1|0;b=f&65535;if(b>>>0<=(e&65535)<<1>>>0){continue}break}}return}Zi[J[J[g>>2]+24>>2]](g,b,c,d,e,f)}function aS(a,b,c){var d=0,e=0,f=0,g=0,h=0;d=Ui-16|0;Ui=d;f=J[a+4>>2];h=J[a+8>>2]+b|0;if(f>>>0>=h>>>0){g=d+4|0;e=J[a>>2];J[g+8>>2]=e;J[g>>2]=e;J[g+4>>2]=(f-e|0)+e;J[d+4>>2]=J[a>>2];e=J[a+8>>2];J[d+12>>2]=e;b=b+e|0;J[d+8>>2]=b;J[a+8>>2]=b;J[c+8>>2]=J[d+12>>2];a=J[d+8>>2];J[c>>2]=J[d+4>>2];J[c+4>>2]=a}Ui=d+16|0;return f>>>0>=h>>>0}function Kwa(a){a=a|0;MV(0);On(J[218540]);a:{if(H[874260]&1){break a}a=J[218562];if(!a){break a}cj(a)}b:{if(H[874244]&1){break b}a=J[218558];if(!a){break b}cj(a)}c:{if(H[874228]&1){break c}a=J[218552];if(a){cj(a)}a=J[218550];if(!a){break c}cj(a)}d:{if(H[874196]&1){break d}a=J[218544];if(a){cj(a)}a=J[218542];if(!a){break d}cj(a)}}function vq(a,b,c){var d=0,e=0,f=0;a:{b:{d=J[a+12>>2];if(d){e=J[d+4>>2];f=J[d+8>>2];if((e|0)==(f|0)){if(H[d+12|0]&1){break b}lj((e-J[d>>2]>>3)+128|0,8,d,d+8|0,d+4|0);d=J[a+12>>2];e=J[d+4>>2];f=J[d+8>>2]}if((e|0)==(f|0)){break a}J[d+4>>2]=e+8;J[e+4>>2]=c;J[e>>2]=b}return}Z(151729,53895,501,2284);B()}Z(112520,53895,557,53220);B()}function qP(a,b){var c=0,d=0,e=0,f=0,g=0,h=0;f=b+2052|0;g=b+2048|0;c=J[b+2048>>2];d=J[b+2052>>2];if((c|0)!=(d|0)){while(1){h=J[(e<<5)+c>>2];if(h){cj(h);d=J[f>>2];c=J[g>>2]}e=e+1|0;if(e>>>0>5>>>0){continue}break}}if(H[b+2060|0]&1){Z(151729,53895,501,2284);B()}lj(0,32,g,b+2056|0,f);J[b+2052>>2]=J[b+2048>>2];Zi[J[79416]](a,b)}function iy(a,b){var c=0,d=0,e=0;if(b){a:{if(J[b+4>>2]){while(1){c=J[b>>2]+P(d,20)|0;b:{if(!(Zi[J[79422]](a,J[c>>2],J[b+56>>2])|0)){break b}if(K[c+16|0]!=1){e=c;break b}if(!(Zi[J[79480]](a,1)|0)){break a}}d=d+1|0;if(d>>>0>2]){continue}break}c=e;if(c){break a}}c=0;dj(4,89301,114960,0)}return c}Z(81307,39550,318,49056);B()}function fI(a,b,c){var d=0,e=0,f=0;e=-96;d=J[a>>2];a:{if((b-d|0)<=0){break a}if(K[d|0]!=3){return-98}J[a>>2]=d+1;e=Vo(a,b,c);if(e){break a}e=-96;d=J[c>>2];if(!d){break a}e=d-1|0;J[c>>2]=e;d=J[a>>2];f=K[d|0];H[c+4|0]=f;if(f>>>0>7){return-100}d=d+1|0;J[a>>2]=d;J[c+8>>2]=d;c=a;a=e+J[a>>2]|0;J[c>>2]=a;e=(a|0)!=(b|0)?-102:0}return e}function Br(a,b,c,d){var e=0,f=0;f=Ui-16|0;Ui=f;e=J[a>>2];a:{if(e){e=Zi[e|0](a,J[a+8>>2],b,c,d)|0;if((e|0)!=-1){break a}}e=J[a+12>>2];if(e){e=Zi[e|0](a,J[a+20>>2],b,c,d)|0;if((e|0)!=-1){break a}}e=J[a+24>>2];if(e){e=Zi[e|0](a,J[a+32>>2],b,c,d)|0;if((e|0)!=-1){break a}}J[f>>2]=tj(b,c);dj(4,88293,126888,f);e=-1}Ui=f+16|0;return e}function qE(a,b,c){var d=0,e=0,f=0,g=0;d=3;a:{b:{if(a+1>>>0<2){break b}e=a&65535;f=J[216330];if(e>>>0>=M[f+8>>2]){break a}g=J[J[f>>2]+(e<<2)>>2];if(!g|L[J[f+4>>2]+(e<<1)>>1]!=(a>>>16|0)){break b}d=6;if(K[g+34|0]<=b>>>0){break b}a=J[g+4>>2]+(b<<4)|0;b=J[a+4>>2];J[c>>2]=J[a>>2];J[c+4>>2]=b;d=0}return d}Z(2686,54230,244,5438);B()}function gA(a){var b=0,c=0,d=0,e=0,f=0,g=0;b=Ui-16|0;Ui=b;c=28;a:{if(!a){break a}d=J[a+8>>2];if(d>>>0>999999999){break a}e=J[a>>2];a=J[a+4>>2];if((a|0)<0){break a}f=(+(e>>>0)+ +(a|0)*4294967296)*1e3+ +(d|0)/1e6;g=+Ta();while(1){if(+Ta()-g>>0>=4294963201){J[245744]=0-a;a=-1}return a}function ar(a,b,c){var d=0,e=0,f=0;a:{if(!c){break a}d=J[a+68>>2];b:{if(!d){d=0;break b}e=a+52|0;f=e+d|0;d=16-d|0;if(d>>>0>c>>>0){hj(f,b,c);J[a+68>>2]=J[a+68>>2]+c;return 0}hj(f,b,d);J[a+68>>2]=0;bA(a,1,e,1);c=c-d|0}if(c>>>0>=16){bA(a,c>>>4|0,b+d|0,1);d=(c&-16)+d|0;c=c&15}if(!c){break a}J[a+68>>2]=c;hj(a+52|0,b+d|0,c)}return 0}function Mp(a,b,c){var d=0,e=0,f=0;d=Ui-16|0;Ui=d;a:{if((kj(a,b)|0)!=7){Yk(a,b,34859);break a}b=qj(a,b,J[77573],0);f=b;b:{if(J[b+4>>2]!=2){break b}if(hp(J[77572],J[b>>2],d+8|0)){fj(a,67863,0);break a}if(J[b+4>>2]!=2){break b}f=J[b>>2]+4|0}e=J[f>>2];if(lo(e)){if(!c){break a}J[c>>2]=b;break a}e=0;fj(a,72312,0)}Ui=d+16|0;return e}function Mna(a,b){a=a|0;b=b|0;var c=0,d=0,e=0,f=0;c=Ui-32|0;Ui=c;d=J[J[a+24>>2]>>2];f=J[J[d>>2]+44>>2];J[c+28>>2]=0;J[c+24>>2]=0;J[c+20>>2]=0;H[c+19|0]=0;J[c+12>>2]=0;e=-1;if(CR(f+60|0,J[a+16>>2],J[a+20>>2],c+20|0,c+28|0,c+24|0,c+19|0,c+12|0)){e=hR(d,J[c+20>>2],J[c+28>>2],J[c+24>>2],K[c+19|0],J[c+12>>2],b)}Ui=c+32|0;return e|0}function Jfa(a){a=a|0;var b=0,c=0,d=0;b=J[J[a+8>>2]+8>>2];c=J[b+12>>2];if((c|0)!=J[b+16>>2]){d=J[a>>2];a=0;while(1){vj(d,J[(a<<2)+c>>2]);a=a+1|0;c=J[b+12>>2];if(a>>>0>2]-c>>2>>>0){continue}break}}J[b+16>>2]=c;a=J[b+8>>2];if(a){Uj(a);J[b+8>>2]=0}a:{if(H[b+24|0]&1){break a}a=J[b+12>>2];if(!a){break a}cj(a)}cj(b);return 0}function on(a,b,c){var d=0,e=0,f=0,g=0;e=3;a:{b:{if(a+1>>>0<2){break b}f=a&65535;g=J[216330];if(f>>>0>=M[g+8>>2]){break a}d=J[J[g>>2]+(f<<2)>>2];if(!d|L[J[g+4>>2]+(f<<1)>>1]!=(a>>>16|0)){break b}e=1;a=J[d>>2];d=P(J[d+24>>2],J[d+28>>2]);if(Wj(a+d|0,173904,16)){break b}J[c>>2]=d;J[b>>2]=a;e=0}return e}Z(2686,54230,244,5438);B()}function Fla(a){a=a|0;var b=0,c=0,d=0,e=0,f=0;c=Ui-32|0;Ui=c;f=pj(c+12|0,a,0,36839,343);b=qj(a,1,J[79308],3640);d=J[b+8>>2];e=J[b+12>>2];a:{if(!(d|e)){break a}if(xk(J[b+4>>2],d,e)){break a}J[c>>2]=tj(J[b+8>>2],J[b+12>>2]);fj(a,102051,c)}b=J[b>>2];a=ck(a,2);I[b+4>>1]=L[b+4>>1]&65519|((a|0)!=0)<<4;Hr(b);oj(f);Ui=c+32|0;return 0}function Asa(a,b,c,d){a=a|0;b=b|0;c=c|0;d=d|0;var e=0,f=0,g=0;c=J[b>>2];c=Zi[J[J[c>>2]+48>>2]](c,36)|0;e=J[b+4>>2];f=J[a+12>>2];d=J[a+8>>2];g=J[a+16>>2];a=J[a+20>>2];J[c>>2]=244932;J[c+4>>2]=J[b>>2];J[c>>2]=244960;J[c+32>>2]=a;J[c+28>>2]=g;H[c+24|0]=0;J[c+20>>2]=e;H[c+16|0]=0;J[c+12>>2]=d;J[c+8>>2]=f;J[c>>2]=245008;return c|0}function vS(a,b,c){var d=0,e=0;Dp(a,c);Dp(b+128|0,c+8|0);Dp(a+256|0,c+16|0);c=0;while(1){e=c<<2;d=e+b|0;J[d>>2]=J[(94-c<<2)+a>>2];J[d+4>>2]=J[(95-c<<2)+a>>2];e=a+e|0;J[e+128>>2]=J[(62-c<<2)+b>>2];J[e+132>>2]=J[(63-c<<2)+b>>2];J[d+256>>2]=J[(30-c<<2)+a>>2];J[d+260>>2]=J[(31-c<<2)+a>>2];d=c>>>0<30;c=c+2|0;if(d){continue}break}}function f_(a){a=a|0;var b=0,c=0,d=0;b=R(wj(a,1));A(+b);d=v(1)|0;v(0)|0;a:{if((d|0)==1072049729|d>>>0<1072049729){c=1;if(d>>>0<1045430272){break a}c=su(b);b=c+1;c=c*c/(b+b)+1;break a}if((d|0)==1082535489|d>>>0<1082535489){b=ax(b);c=(b+1/b)*.5;break a}c=JV(b,1)}d=J[a+8>>2];J[d+8>>2]=3;O[d>>3]=c;J[a+8>>2]=J[a+8>>2]+16;return 1}function az(a,b,c,d,e){var f=Q(0);J[a+32>>2]=c;J[a+28>>2]=b;J[a+24>>2]=d;J[a+20>>2]=e;J[a+12>>2]=0;J[a+16>>2]=0;J[a+4>>2]=0;J[a+8>>2]=1065353216;J[a>>2]=246868;J[a+36>>2]=J[b+4>>2];J[a+40>>2]=J[c+4>>2];N[a+44>>2]=Zi[J[J[b>>2]+44>>2]](b);f=Q(Zi[J[J[c>>2]+44>>2]](c));J[a+72>>2]=1;J[a+60>>2]=-1;H[a+52|0]=0;N[a+48>>2]=f;return a}function H2(a){a=a|0;var b=0,c=0,d=0,e=0,f=0;d=Ui-32|0;Ui=d;e=pj(d+12|0,a,1,39097,596);b=J[a+8>>2]-J[a+12>>2]|0;f=Aj(a,1,0);if(b>>4>=2){Oj(a,2,5);uj(a,2);rj(a,-1,15632);if(kj(a,-1)){c=Aj(a,-1,0)}else{c=0}gj(a,-2);gj(a,-2)}c=ii(f|0,c|0)|0;b=J[a+8>>2];J[b+8>>2]=1;J[b>>2]=(c|0)!=0;J[a+8>>2]=J[a+8>>2]+16;oj(e);Ui=d+32|0;return 1}function S2(a){a=a|0;var b=0,c=0,d=0,e=0,f=0;e=Ui-32|0;Ui=e;f=pj(e+12|0,a,1,39097,506);b=Aj(a,1,0);if((kj(a,2)|0)!=-1){d=Ej(a,2)}a:{b:{c=mr(a);if(!c){break b}c=J[c>>2];if(!c){break b}b=ak(c,b,d);d=J[a+8>>2];J[d+8>>2]=3;O[d>>3]=b|0;J[a+8>>2]=J[a+8>>2]+16;break a}b=J[a+8>>2];J[b+8>>2]=0;J[a+8>>2]=b+16}oj(f);Ui=e+32|0;return 1}function zP(a,b,c){var d=0;d=Ui-32|0;Ui=d;rj(a,b,84160);b=kj(a,-1);a:{if(b+1>>>0<=1){gj(a,-2);break a}if((b|0)!=7){J[d+20>>2]=J[64415];J[d+16>>2]=84160;if(!fj(a,124246,d+16|0)){break a}}b=Gm(a,-1);if(!b){gj(a,-2);J[d>>2]=84160;fj(a,124341,d);break a}N[c>>2]=N[b>>2];N[c+4>>2]=N[b+4>>2];N[c+8>>2]=N[b+8>>2];gj(a,-2)}Ui=d+32|0}function xfa(a){a=a|0;var b=0,c=0,d=0,e=0,f=0,g=0;b=Ui-1040|0;Ui=b;f=J[a+8>>2];c=J[a+4>>2];d=J[a+24>>2];e=b+16|0;ij(e,0,1024);if(J[d+56>>2]!=2){Z(94919,39550,1896,49102);B()}c=Zi[J[79485]](c,d,e,1024)|0;a:{if(!c){J[b>>2]=f;J[b+4>>2]=e;dj(4,88458,31102,b);Uj(d);g=-13;break a}Uj(d);J[J[a+28>>2]+8>>2]=c}Ui=b+1040|0;return g|0}function YA(a,b){var c=0,d=0;c=Ui-32|0;Ui=c;J[c+20>>2]=b;J[c+16>>2]=154303;ik(a,26090,c+16|0);Ck(a,-1e4);a:{if(kj(a,-1)){d=Vj(a,-1);break a}gj(a,-2);d=Sj(a,4);J[d>>2]=0;rj(a,-1e4,99336);Mj(a,-2);J[c+4>>2]=b;J[c>>2]=154303;ik(a,26090,c);uj(a,-2);Kj(a,-1e4)}b=J[d>>2];mj(a,47120,58);a=2;Ui=c+32|0;if(!b){J[d>>2]=0;a=1}return a}function Nka(a){a=a|0;var b=0,c=0,d=0;c=J[a+84>>2];d=J[a+80>>2];J[a>>2]=d;J[a+4>>2]=c;J[a+80>>2]=0;J[a+84>>2]=0;b=J[a+116>>2];J[a+32>>2]=J[a+112>>2];J[a+36>>2]=b;b=J[a+108>>2];J[a+24>>2]=J[a+104>>2];J[a+28>>2]=b;b=J[a+100>>2];J[a+16>>2]=J[a+96>>2];J[a+20>>2]=b;b=J[a+92>>2];J[a+8>>2]=J[a+88>>2];J[a+12>>2]=b;return(c|d)!=0|0}function mq(a,b){var c=0,d=0,e=0,f=0,g=0;d=Ui-16|0;Ui=d;g=d+12|0;O[b>>3]=gw(a,g);c=J[d+12>>2];e=0;a:{if((c|0)==(a|0)){break a}f=K[c|0];if((f|32)==120){O[b>>3]=fw(a,g,16)>>>0;c=J[d+12>>2];f=K[c|0]}e=1;if(!f){break a}while(1){b=K[c|0];a=b-14|0;c=c+1|0;if((b|0)==32|a>>>0>4294967290){continue}break}e=!b}a=e;Ui=d+16|0;return a}function mR(a,b,c,d){var e=0,f=0,g=0;f=J[a+4>>2];e=J[a>>2];if(f>>>0>=M[e+4>>2]){Z(12601,39139,270,2838);B()}J[a+4>>2]=f+1;g=J[e+8>>2]+(f<<3)|0;J[g>>2]=b;J[g+4>>2]=c;b=f<<2;J[b+J[e+16>>2]>>2]=3;c=b+J[e+12>>2]|0;b=J[a+8>>2];J[c>>2]=b;c=J[e+24>>2]+(b<<2)|0;N[c>>2]=N[d>>2];N[c+4>>2]=N[d+4>>2];N[c+8>>2]=N[d+8>>2];J[a+8>>2]=b+3}function VY(a){a=a|0;var b=0,c=0,d=0;b=Tn(a,1042);c=_o(a,2,+M[b+36>>2]);a:{if(R(c)<2147483648){d=~~c;break a}d=-2147483648}J[b+36>>2]=d;c=_o(a,3,+M[b+32>>2]);b:{if(R(c)<2147483648){d=~~c;break b}d=-2147483648}J[b+32>>2]=d;if(kk(a,4)){O[b+24>>3]=Oz()-ok(a,4)}b=J[a+8>>2];J[b+8>>2]=3;O[b>>3]=1;J[a+8>>2]=J[a+8>>2]+16;return 1}function Qm(a,b){var c=0,d=0,e=Q(0),f=Q(0),g=Q(0),h=Q(0);c=Ui-48|0;Ui=c;d=qj(a,b,J[215721],0);f=N[d+4>>2];g=N[d>>2];a:{b:{if(g!=g|f!=f){break b}e=N[d+8>>2];if(e!=e){break b}e=N[d+12>>2];if(e==e){break a}}e=N[d+8>>2];h=N[d+12>>2];O[c+16>>3]=f;O[c+32>>3]=h;O[c+24>>3]=e;O[c+8>>3]=g;J[c>>2]=b;fj(a,138642,c)}Ui=c+48|0;return d}function Is(a,b){var c=0,d=0,e=Q(0),f=Q(0),g=Q(0),h=Q(0);c=Ui-48|0;Ui=c;d=qj(a,b,J[215722],0);f=N[d+4>>2];g=N[d>>2];a:{b:{if(g!=g|f!=f){break b}e=N[d+8>>2];if(e!=e){break b}e=N[d+12>>2];if(e==e){break a}}e=N[d+8>>2];h=N[d+12>>2];O[c+16>>3]=f;O[c+32>>3]=h;O[c+24>>3]=e;O[c+8>>3]=g;J[c>>2]=b;fj(a,138526,c)}Ui=c+48|0;return d}function ES(a,b,c){var d=0,e=0,f=0,g=0,h=0;f=Ui-256|0;Ui=f;a:{if((c|0)<2){break a}h=(c<<2)+b|0;J[h>>2]=f;if(!a){break a}while(1){e=a>>>0>=256?256:a;hj(J[h>>2],J[b>>2],e);d=0;while(1){g=(d<<2)+b|0;d=d+1|0;hj(J[g>>2],J[(d<<2)+b>>2],e);J[g>>2]=J[g>>2]+e;if((c|0)!=(d|0)){continue}break}a=a-e|0;if(a){continue}break}}Ui=f+256|0}function OZ(a){a=a|0;var b=0,c=0,d=0;b=wj(a,1);c=Ui-16|0;Ui=c;A(+b);d=v(1)|0;v(0)|0;d=d&2147483647;a:{if(d>>>0<=1072243195){if(d>>>0<1044381696){break a}b=vV(b,0,0);break a}if(d>>>0>=2146435072){b=b-b;break a}d=kF(b,c);b=vV(O[c>>3],O[c+8>>3],d&1)}Ui=c+16|0;c=J[a+8>>2];J[c+8>>2]=3;O[c>>3]=b;J[a+8>>2]=J[a+8>>2]+16;return 1}function Bs(a,b,c,d,e){var f=0,g=0;if(a){f=J[a+20>>2];if(f){return Zi[f|0](J[a+16>>2],b,c,d,e)|0}f=-18;g=J[a+8>>2];a:{if(!g){break a}a=J[a+12>>2];if(a>>>0<=b>>>0){break a}if(!c){f=0;if(!e){break a}J[e>>2]=0;return 0}a=a-b|0;f=a>>>0>>0;a=f?a:c;hj(d,b+g|0,a);if(!e){break a}J[e>>2]=a}return f}Z(83357,42316,602,76452);B()}function kfa(a){a=a|0;var b=0,c=0,d=0,e=0,f=0;c=J[a+24>>2];b=nj(12);J[b>>2]=0;J[b+4>>2]=0;J[b+8>>2]=0;d=J[a>>2];e=K[c+4|0];H[b+8|0]=e|K[c+5|0]<<1;f=Gk(J[c>>2]);J[b+4>>2]=f;a:{b:{if(e){Uj(c);break b}d=wk(d,f,b);Uj(c);if(d){break a}}J[J[a+28>>2]+8>>2]=b;return 0}c=J[b>>2];if(c){vj(J[a>>2],c)}cj(J[b+4>>2]);cj(b);return d|0}function iL(a,b,c,d){var e=0,f=0,g=0,h=0,i=0;a:{if(!c){break a}while(1){if(a>>>0<=g>>>0){break a}e=(f<<3)+d|0;h=J[e>>2];i=J[e+4>>2];e=g;while(1){b:{g=e+1|0;e=(e<<3)+b|0;if((h|0)==J[e>>2]&J[e+4>>2]==(i|0)){break b}e=g;if((a|0)!=(e|0)){continue}break a}break}f=f+1|0;if((f|0)!=(c|0)){continue}break}f=c}return c-1>>>0>>0}function ev(a,b,c){var d=0,e=0;a:{b:{d=b&65535;e=J[a+36>>2];a=J[a+32>>2];if(d>>>0<(e-a|0)/672>>>0){a=a+P(d,672)|0;if(L[a+648>>1]!=(b>>>16|0)){break b}if(L[a+650>>1]!=(d|0)){break a}J[c>>2]=J[a+504>>2];Yi=J[a+500>>2];return J[a+496>>2]}Z(145396,53895,487,84789);B()}Z(47372,40876,188,69601);B()}Z(5388,40876,189,69601);B()}function Z_(a){a=a|0;var b=0,c=0;b=so(a,1);a:{if(b){b=dF(a,b,(J[a+8>>2]-J[a+12>>2]>>4)-1|0);break a}Dk(a,1,73819);b=dF(a,0,(J[a+8>>2]-J[a+12>>2]>>4)-1|0)}if((b|0)<0){b=J[a+8>>2];J[b+8>>2]=1;J[b>>2]=0;J[a+8>>2]=J[a+8>>2]+16;Pk(a,-2);return 2}c=J[a+8>>2];J[c+8>>2]=1;J[c>>2]=1;J[a+8>>2]=J[a+8>>2]+16;Pk(a,b^-1);return b+1|0}function XN(a,b,c){var d=0,e=0;a:{b:{d=b&65535;e=J[a+36>>2];a=J[a+32>>2];if(d>>>0<(e-a|0)/672>>>0){a=a+P(d,672)|0;if(L[a+648>>1]!=(b>>>16|0)){break b}if(L[a+650>>1]!=(d|0)){break a}J[a+476>>2]=J[a+476>>2]&-2097153|(c?2097152:0);return}Z(145396,53895,487,84789);B()}Z(47372,40876,188,69601);B()}Z(5388,40876,189,69601);B()}function Gla(a){a=a|0;var b=0,c=0,d=0,e=0,f=0;c=Ui-32|0;Ui=c;f=pj(c+12|0,a,0,36839,309);b=qj(a,1,J[79308],3640);d=J[b+8>>2];e=J[b+12>>2];a:{if(!(d|e)){break a}if(xk(J[b+4>>2],d,e)){break a}J[c>>2]=tj(J[b+8>>2],J[b+12>>2]);fj(a,102051,c)}b=J[b>>2];a=ck(a,2);I[b+4>>1]=L[b+4>>1]&65527|((a|0)!=0)<<3;oj(f);Ui=c+32|0;return 0}function F6(a,b){a=a|0;b=b|0;var c=0,d=0,e=0,f=0;d=Ui-32|0;Ui=d;if(!b){H[a+2504|0]=K[a+2504|0]|16;Zi[J[79482]](J[a+2480>>2])}c=J[a+2108>>2];a:{if(!c){break a}if(!Hm(c)){break a}a=c?J[c>>2]:0;f=pj(d+12|0,a,0,40146,1244);if(ao(c)){e=J[a+8>>2];J[e+8>>2]=3;O[e>>3]=b|0;J[a+8>>2]=J[a+8>>2]+16;Ol(a,2,0,0);xo(c)}oj(f)}Ui=d+32|0}function Eq(a){if(!K[863484]){J[215870]=J[43153];J[215869]=J[43152];J[215868]=J[43151];J[215867]=J[43150];J[215866]=J[43149];J[215865]=J[43148];J[215864]=J[43147];J[215863]=J[43146];J[215862]=J[43145];J[215861]=J[43144];J[215860]=J[43143];H[863484]=1}if(a>>>0>=11){Z(139381,42458,524,61015);B()}return J[(a<<2)+863440>>2]}function dA(a,b,c){var d=0,e=0,f=0,g=0;f=ij(b,0,c);if(c){b=c<<1;g=b>>>0<=1?1:b;c=0;while(1){d=K[a|0];b=-48;a:{if((d-48&255)>>>0<10){break a}b=-55;if((d-65&255)>>>0<6){break a}if((d-97&255)>>>0>5){return-4608}b=-87}e=(c>>>1|0)+f|0;H[e|0]=K[e|0]|b+d<<((c^-1)<<2&4);a=a+1|0;c=c+1|0;if((g|0)!=(c|0)){continue}break}}return 0}function E2(a){a=a|0;var b=0,c=0,d=0,e=0,f=0;b=Ui-32|0;Ui=b;e=1;f=pj(b+8|0,a,1,39097,1347);Oj(a,1,5);c=338288;a:{b:{d=lK(a,1);if(d>>>0<524289){break b}J[b+28>>2]=0;fo(b+28|0,16,d);c=J[b+28>>2];if(c){break b}J[b>>2]=d;e=fj(a,120769,b);break a}mj(a,c,MB(a,c,d,1));if((c|0)==338288){break a}cj(c)}oj(f);Ui=b+32|0;return e|0}function DO(a,b,c,d){var e=0,f=0;a:{b:{e=b&65535;f=J[a+36>>2];a=J[a+32>>2];if(e>>>0<(f-a|0)/672>>>0){a=a+P(e,672)|0;if(L[a+648>>1]!=(b>>>16|0)){break b}if(L[a+650>>1]!=(e|0)){break a}H[c|0]=H[a+528|0]&1;H[d|0]=K[a+528|0]>>>1&1;return}Z(145396,53895,487,84789);B()}Z(47372,40876,188,69601);B()}Z(5388,40876,189,69601);B()}function y4(a,b,c,d,e){a=a|0;b=b|0;c=c|0;d=d|0;e=e|0;var f=0,g=0;f=-2;d=J[a+2200>>2];a:{if(!d){break a}d=J[J[a+2196>>2]+(mxa(b,c,d)<<2)>>2];if((d|0)==-1){break a}g=J[a+2204>>2];while(1){a=g+P(d,24)|0;if(J[a>>2]!=(b|0)|J[a+4>>2]!=(c|0)){d=J[a+20>>2];if((d|0)!=-1){continue}break a}break}J[e>>2]=J[a+12>>2];f=0}return f|0}function bN(a,b){var c=0,d=0,e=0,f=0;c=J[b+4>>2];if(c){vk(c)}c=J[b>>2];if(c){Fm(c);cj(J[b>>2])}a:{c=J[a+52>>2];if(c){d=L[a+58>>1]-1|0;e=d&65535;if(e>>>0>=L[a+56>>1]){break a}f=L[b+56>>1];I[a+58>>1]=d;I[c+(e<<1)>>1]=f;I[b+56>>1]=65535;J[b>>2]=0;J[b+4>>2]=0;return}Z(49493,54391,140,53220);B()}Z(2650,54391,141,53220);B()}function PY(a,b,c,d,e){a=a|0;b=b|0;c=c|0;d=d|0;e=e|0;var f=0,g=0,h=0,i=0;h=wo(J[J[a+72>>2]+60>>2]);f=J[a+72>>2];g=J[f+64>>2];c=J[f+68>>2]+c|0;i=b;b=b+g|0;c=i>>>0>b>>>0?c+1|0:c;g=c;if((c|0)<0){return 0}c=h;a:{if((c|0)!=(b|0)|(g|0)!=c>>31){c=0;if(um(J[f+60>>2],b,0)){break a}f=J[a+72>>2]}c=Sl(d,1,e,J[f+60>>2])}return c|0}function hba(a,b,c,d){a=a|0;b=b|0;c=c|0;d=d|0;var e=0,f=0;f=Ui-16|0;Ui=f;e=nj(12);J[e+8>>2]=b;J[e>>2]=0;J[e+4>>2]=0;J[f+12>>2]=0;Na(1,f+12|0);J[e>>2]=ho(a,J[f+12>>2]);a:{if(!(K[J[79491]+220|0]&2)){break a}a=_()|0;if(!a){break a}Cj(a,34866,1682);Z(114101,40535,1682,34866);B()}Zi[J[79393]](e,b,c,d);Ui=f+16|0;return e|0}function ey(a,b){var c=0,d=0,e=0,f=0,g=0;b=bj(b);e=Yi;d=J[a+32>>2];a=J[a+36>>2];if((d|0)==(a|0)){return 0}a=(a-d|0)/672|0;f=a>>>0<=1?1:a;a=0;while(1){a:{c=P(a,672)+d|0;if(J[c+640>>2]==(b|0)&J[c+644>>2]==(e|0)){g=L[c+650>>1]|L[c+648>>1]<<16;if(!(H[c+668|0]&1)){break a}}a=a+1|0;if((f|0)!=(a|0)){continue}}break}return g}function Ura(a,b){a=a|0;b=b|0;if(J[a+16>>2]==(0-J[a+56>>2]|0)){BT(a+4|0);BT(a+44|0);J[a+124>>2]=0;J[a+104>>2]=0;H[a+153|0]=0;H[a+154|0]=1;J[a+116>>2]=10;J[a+120>>2]=1;J[a+108>>2]=1;J[a+112>>2]=0;J[a+84>>2]=0;J[a+88>>2]=0;J[a+92>>2]=0;J[a+128>>2]=0;J[a+132>>2]=0;J[a+136>>2]=0;J[a+140>>2]=0;J[a+144>>2]=0;J[a+148>>2]=0}}function Pba(a,b){a=a|0;b=b|0;var c=0,d=0;a:{b:{if(b>>>0<2097152){if(a+1>>>0<2){break a}b=a&65535;c=J[79491];if(b>>>0>=M[c+100>>2]){break b}d=J[J[c+92>>2]+(b<<2)>>2];if(!d|L[J[c+96>>2]+(b<<1)>>1]!=(a>>>16|0)){break a}return K[d+64|0]}Z(94863,55553,306,33926);B()}Z(2686,54166,244,5438);B()}Z(4809,40535,3935,22874);B()}function AS(a){var b=0,c=0,d=0;d=yj(a);b=sj(d+16|0);J[b>>2]=1;c=K[145793]|K[145794]<<8|(K[145795]<<16|K[145796]<<24);H[b+4|0]=c;H[b+5|0]=c>>>8;H[b+6|0]=c>>>16;H[b+7|0]=c>>>24;c=b+8|0;H[c|0]=K[145797];a=fq(c,a)+d|0;H[a|0]=41;H[a+1|0]=44;H[a+2|0]=32;H[a+3|0]=97;H[a+4|0]=117;H[a+5|0]=116;H[a+6|0]=111;H[a+7|0]=0;return b}function y_(a){a=a|0;var b=0,c=0,d=0;Oj(a,1,5);b=Zm(a,2,1);a:{if((kj(a,3)|0)<=0){c=fl(a,1);break a}c=Ej(a,3)}b:{if((b|0)>(c|0)){break b}c:{d=c-b|0;if((d|0)>=0){d=d+1|0;if(dr(a,d)){break c}}return fj(a,51395,0)|0}Nj(a,1,b);if((b|0)>=(c|0)){break b}while(1){b=b+1|0;Nj(a,1,b);if((b|0)!=(c|0)){continue}break}}return d|0}function opa(a){a=a|0;var b=0,c=0,d=0;b=Ui-256|0;Ui=b;c=J[53386];yl(154165,11,1,c);d=J[53387];a:{if(!xs(b,250,d)){break a}while(1){if(!Wj(b,154522,6)){break a}b:{if(!Nw(a,b,yj(b),139488)){if(!kq(a,0,0,0)){break b}}_w(Ij(a,-1,0),c);dx(10,c)}gj(a,0);yl(154165,11,1,c);if(xs(b,250,d)){continue}break}}Ui=b+256|0;return 0}function lj(a,b,c,d,e){a=a|0;b=b|0;c=c|0;d=d|0;e=e|0;var f=0,g=0,h=0,i=0;g=J[c>>2];i=J[d>>2]-g|0;if(((i>>>0)/(b>>>0)|0)!=(a|0)){if(a){h=nj(P(a,b))}else{h=0}f=(J[e>>2]-g>>>0)/(b>>>0)|0;f=a>>>0>f>>>0?f:a;a:{if(b>>>0>i>>>0){f=P(b,f);break a}f=P(b,f);hj(h,g,f);if(!g){break a}cj(g)}J[c>>2]=h;J[e>>2]=f+h;J[d>>2]=P(a,b)+h}}function cO(a,b,c){var d=0,e=0;a:{b:{d=b&65535;e=J[a+36>>2];a=J[a+32>>2];if(d>>>0<(e-a|0)/672>>>0){a=a+P(d,672)|0;if(L[a+648>>1]!=(b>>>16|0)){break b}if(L[a+650>>1]!=(d|0)){break a}J[a+476>>2]=J[a+476>>2]&-61441|c<<12&61440;return}Z(145396,53895,487,84789);B()}Z(47372,40876,188,69601);B()}Z(5388,40876,189,69601);B()}function Um(a){var b=0,c=0,d=0,e=0;b=J[a+4>>2];if(!b){return 0}a=J[a+8>>2];a:{while(1){b=b-1|0;if(!b){c=J[a>>2];a=39;break a}c=J[a+(b<<2)>>2];if(!c){continue}break}a=(b<<5)+39|0}b=0;e=a;if((c|0)>=0){d=-2147483648;while(1){a=b;if(b>>>0<=30){b=b+1|0;d=d>>>1|0;if(!(d&c)){continue}}break}a=a^-1}else{a=0}return e+a>>>3|0}function Ala(a){a=a|0;var b=0,c=0,d=0,e=0,f=0;c=Ui-32|0;Ui=c;f=pj(c+12|0,a,0,36839,101);b=qj(a,1,J[79308],3640);d=J[b+8>>2];e=J[b+12>>2];a:{if(!(d|e)){break a}if(xk(J[b+4>>2],d,e)){break a}J[c>>2]=tj(J[b+8>>2],J[b+12>>2]);fj(a,102051,c)}b=J[b>>2];d=c+4|0;Rn(d,a,2,N[59873]);aF(b,d,Q(wj(a,3)));oj(f);Ui=c+32|0;return 0}function b3(a){a=a|0;var b=0,c=0,d=0;b=Ui-16|0;Ui=b;c=Vj(a,1);a:{b:{switch(K[Aj(a,2,0)|0]-119|0){case 1:N[c>>2]=wj(a,-1);break a;case 2:N[c+4>>2]=wj(a,-1);break a;case 3:N[c+8>>2]=wj(a,-1);break a;case 0:N[c+12>>2]=wj(a,-1);break a;default:break b}}J[b+4>>2]=16786;J[b>>2]=53139;d=fj(a,114776,b)}Ui=b+16|0;return d|0}function Ima(a){a=a|0;var b=0,c=0,d=0;a:{b:{c=dn(a,1);b=J[c+136>>2]>>>16|0;if((b|0)!=32767){d=J[c+80>>2];c=J[d+1036>>2];if(b>>>0>=J[d+1040>>2]-c>>2>>>0){break b}b=J[c+(b<<2)>>2]}else{b=0}break a}Z(145396,53895,487,84789);B()}if(b){Bk(a,J[b+96>>2],J[b+100>>2]);return 1}b=J[a+8>>2];J[b+8>>2]=0;J[a+8>>2]=b+16;return 1}function VN(a,b,c){var d=0,e=0;a:{b:{d=b&65535;e=J[a+36>>2];a=J[a+32>>2];if(d>>>0<(e-a|0)/672>>>0){a=a+P(d,672)|0;if(L[a+648>>1]!=(b>>>16|0)){break b}if(L[a+650>>1]!=(d|0)){break a}J[a+476>>2]=J[a+476>>2]&-3073|c<<10&3072;return}Z(145396,53895,487,84789);B()}Z(47372,40876,188,69601);B()}Z(5388,40876,189,69601);B()}function TF(a,b,c,d){var e=0,f=0,g=0,h=0;rj(a,-1,b);e=fl(a,-1);f=nj(e>>>0>1073741823?-1:e<<2);b=J[a+8>>2];J[b+8>>2]=0;J[a+8>>2]=b+16;if($j(a,-2)){b=f-4|0;while(1){g=ok(a,-2);a:{if(R(g)<2147483648){h=~~g;break a}h=-2147483648}N[(h<<2)+b>>2]=ok(a,-1);gj(a,-2);if($j(a,-2)){continue}break}}gj(a,-2);J[c>>2]=f;J[d>>2]=e}function Sv(a,b,c){var d=0,e=0,f=0,g=0;f=Ui-16|0;Ui=f;J[f+12>>2]=c;d=Ui-160|0;Ui=d;g=d+8|0;hj(g,217824,144);J[d+52>>2]=a;J[d+28>>2]=a;e=-2-a|0;e=e>>>0>2147483647?2147483647:e;J[d+56>>2]=e;e=a+e|0;J[d+36>>2]=e;J[d+24>>2]=e;Ct(g,b,c,2810,0);if((a|0)!=-2){a=J[d+28>>2];H[a-((a|0)==J[d+24>>2])|0]=0}Ui=d+160|0;Ui=f+16|0}function lwa(a){a=a|0;var b=0,c=0;b=Ui+-64|0;Ui=b;a:{b:{if(!sm(a,1)){break b}mj(a,5326,7);Ck(a,-2);if((kj(a,-1)|0)!=5){break b}mj(a,18991,5);Ck(a,-2);if(!Mk(a,-1)){break b}J[b+16>>2]=Vj(a,1);c=b+32|0;Un(c,43805,b+16|0);J[b>>2]=Ij(a,-1,0);J[b+4>>2]=c;ik(a,28428,b);break a}mj(a,150642,48);lq(a)}Ui=b- -64|0;return 1}function U2(a){a=a|0;var b=0,c=0,d=0,e=0;b=Ui-16|0;Ui=b;d=J[a+8>>2]-J[a+12>>2]|0;Aj(a,1,0);H[b+15|0]=0;H[b+15|0]=0;Fj(a,0,0);mj(a,74785,9);e=K[b+15|0];c=J[a+8>>2];J[c+8>>2]=1;J[c>>2]=(e|0)!=0;J[a+8>>2]=J[a+8>>2]+16;Xj(a,-3);if(((d>>4)+1|0)!=J[a+8>>2]-J[a+12>>2]>>4){Z(143334,39097,903,44360);B()}Ui=b+16|0;return 1}function zW(a){a=a|0;var b=0,c=0,d=0,e=0,f=0;b=Ui-1040|0;Ui=b;e=b+1036|0;f=Aj(a,1,e);J[b+4>>2]=0;J[b+8>>2]=a;J[b>>2]=b+12;if(J[b+1036>>2]){while(1){a=J[b>>2];if(e>>>0<=a>>>0){_l(b);a=J[b>>2]}d=K[c+f|0];J[b>>2]=a+1;H[a|0]=d-97>>>0<26?d&95:d;c=c+1|0;if(c>>>0>2]){continue}break}}Ym(b);Ui=b+1040|0;return 1}function iQ(a,b,c,d){var e=0,f=0,g=0,h=0;a:{a=J[J[a>>2]+140>>2];e=J[a+36>>2];b:{if(!e){break b}h=J[a+32>>2];a=0;f=1;while(1){if((a|0)==(e|0)){break a}g=P(a,80)+h|0;if((b|0)==J[g+64>>2]&J[g+68>>2]==(c|0)){J[d>>2]=a;break b}a=a+1|0;f=e>>>0>a>>>0;if((a|0)!=(e|0)){continue}break}}return f}Z(12664,54972,90,84789);B()}function Xk(a){var b=0,c=0,d=0,e=0;b=J[a+4>>2];if(!b){return 0}a=J[a+8>>2];a:{while(1){b=b-1|0;if(!b){c=J[a>>2];a=32;break a}c=J[a+(b<<2)>>2];if(!c){continue}break}a=(b<<5)+32|0}b=0;e=a;if((c|0)>=0){d=-2147483648;while(1){a=b;if(b>>>0<=30){b=b+1|0;d=d>>>1|0;if(!(d&c)){continue}}break}a=a^-1}else{a=0}return e+a|0}function L1(a){a=a|0;var b=0,c=0,d=0;b=Ui-16|0;Ui=b;c=Vj(a,1);a:{b:{switch(K[Aj(a,2,0)|0]-119|0){case 1:N[c>>2]=wj(a,3);break a;case 2:N[c+4>>2]=wj(a,3);break a;case 3:N[c+8>>2]=wj(a,3);break a;case 0:N[c+12>>2]=wj(a,3);break a;default:break b}}J[b+4>>2]=106998;J[b>>2]=53139;d=fj(a,114776,b)}Ui=b+16|0;return d|0}function EW(a){a=a|0;var b=0,c=0,d=0,e=0,f=0;b=Ui-1040|0;Ui=b;e=b+1036|0;f=Aj(a,1,e);J[b+4>>2]=0;J[b+8>>2]=a;J[b>>2]=b+12;if(J[b+1036>>2]){while(1){a=J[b>>2];if(e>>>0<=a>>>0){_l(b);a=J[b>>2]}d=K[c+f|0];J[b>>2]=a+1;H[a|0]=d-65>>>0<26?d|32:d;c=c+1|0;if(c>>>0>2]){continue}break}}Ym(b);Ui=b+1040|0;return 1}function $O(a,b,c){a:{switch(b|0){case 2:I[a>>1]=L[a>>1]&61439|(c&1)<<12;return;case 4:I[a+6>>1]=L[a+6>>1]&57343|(c&1)<<13;return;case 5:I[a+8>>1]=L[a+8>>1]&65279|(c&1)<<8;return;case 6:I[a+8>>1]=L[a+8>>1]&61439|(c&1)<<12;return;default:Z(152518,39550,926,61035);B();case 0:break a}}I[a>>1]=L[a>>1]&65279|(c&1)<<8}function Z5(a){a=a|0;var b=0,c=0,d=0;c=J[a+8>>2]-J[a+12>>2]|0;d=Fx();b=Sj(a,36);J[b+20>>2]=0;J[b+24>>2]=0;J[b+4>>2]=0;J[b+8>>2]=0;J[b>>2]=d;J[b+28>>2]=0;J[b+32>>2]=0;J[b+12>>2]=0;J[b+16>>2]=0;J[b+24>>2]=-1;rj(a,-1e4,35081);Mj(a,-2);if(((c>>4)+1|0)!=J[a+8>>2]-J[a+12>>2]>>4){Z(143334,37616,424,35108);B()}return 1}function WN(a,b,c){var d=0,e=0;a:{b:{d=b&65535;e=J[a+36>>2];a=J[a+32>>2];if(d>>>0<(e-a|0)/672>>>0){a=a+P(d,672)|0;if(L[a+648>>1]!=(b>>>16|0)){break b}if(L[a+650>>1]!=(d|0)){break a}J[a+476>>2]=J[a+476>>2]&-769|c<<8&768;return}Z(145396,53895,487,84789);B()}Z(47372,40876,188,69601);B()}Z(5388,40876,189,69601);B()}function gI(a){var b=0,c=0;b=J[a+16>>2];J[b+44>>2]=0;J[b+36>>2]=0;J[b+40>>2]=0;c=J[b+112>>2];if(K[c+5|0]&3){dl(b,c);c=J[b+112>>2]}a:{if(J[c+80>>2]<4){break a}c=J[c+72>>2];if(!(K[c+5|0]&3)){break a}dl(b,c)}a=J[a+16>>2];b:{if(J[a+104>>2]<4){break b}a=J[a+96>>2];if(!(K[a+5|0]&3)){break b}dl(b,a)}hI(b);H[b+21|0]=1}function fv(a,b){var c=0,d=0;a:{b:{c=b&65535;d=J[a+36>>2];a=J[a+32>>2];if(c>>>0<(d-a|0)/672>>>0){a=a+P(c,672)|0;if(L[a+648>>1]!=(b>>>16|0)){break b}if(L[a+650>>1]!=(c|0)){break a}return J[a+504>>2]==2?J[a+520>>2]?a+508|0:0:0}Z(145396,53895,487,84789);B()}Z(47372,40876,188,69601);B()}Z(5388,40876,189,69601);B()}function ws(a){var b=0,c=0,d=0;c=J[a+28>>2];zm(c);b=J[c+20>>2];d=J[a+16>>2];b=b>>>0>>0?b:d;a:{if(!b){break a}hj(J[a+12>>2],J[c+16>>2],b);J[a+12>>2]=b+J[a+12>>2];J[c+16>>2]=b+J[c+16>>2];J[a+20>>2]=b+J[a+20>>2];J[a+16>>2]=J[a+16>>2]-b;a=J[c+20>>2];J[c+20>>2]=a-b;if((a|0)!=(b|0)){break a}J[c+16>>2]=J[c+8>>2]}}function rx(a,b,c){var d=0,e=0;d=Ui-160|0;Ui=d;e=Kk(a,b,J[84567]);a:{if(e){a=d+8|0;J[a+20>>2]=128;J[a+12>>2]=d+32;J[a+16>>2]=0;J[a+4>>2]=2270;J[a>>2]=2271;J[a+8>>2]=a;ek(c,nk(a,J[e>>2],J[e+4>>2]),128);break a}if((kj(a,b)|0)==4){J[d+32>>2]=0;ek(c,Ij(a,b,d+32|0),128);break a}ek(c,102383,128)}Ui=d+160|0;return c}function XJ(a,b,c,d){var e=0,f=0;e=Ui-16|0;Ui=e;f=J[a+8>>2]-J[a+12>>2]>>4;a:{b=Nw(a,b,c,d);if(!b){if((f+1|0)==J[a+8>>2]-J[a+12>>2]>>4){break a}Z(143334,41758,74,66193);B()}J[e>>2]=Ij(a,-1,0);dj(4,86858,28177,e);gj(a,-2);if(J[a+8>>2]-J[a+12>>2]>>4==(f|0)){break a}Z(143244,41758,81,66193);B()}Ui=e+16|0;return!b}function PM(){var a=0,b=0,c=0,d=0,e=0;a=Ui-16|0;Ui=a;if(K[981584]==1){e=J[J[245390]+52>>2];Tj(e);d=yK(J[245390]);c=0;a:{if(!d){break a}c=1;if(!(SB(J[245390],0,a)|J[a+8>>2]<0)){break a}while(1){b=b+1|0;if((d|0)!=(b|0)){if(SB(J[245390],b,a)|J[a+8>>2]<0){continue}}break}c=b>>>0>>0}b=c;Lj(e)}Ui=a+16|0;return b}function GH(a,b,c,d){var e=0;a:{if(!Pj(c,1)){c=sk(b,d);if(c){break a}c=sk(b+12|0,d+12|0);if(c){break a}return sk(b+24|0,d+24|0)}if(!Pj(c,-1)){c=sk(b,d);if(c){break a}e=b+12|0;c=sk(e,d+12|0);if(c){break a}c=sk(b+24|0,d+24|0);if(c){break a}c=0;if(!Pj(e,0)){break a}return wl(e,a+4|0,e)}c=cu(a,b,c,d,0,0)}return c}function A9(a){a=a|0;var b=0,c=0,d=0,e=0;b=Ui-16|0;Ui=b;e=J[a+8>>2]-J[a+12>>2]|0;Bj(a);c=qj(a,-1,J[219396],139183);gj(a,-2);Qj(a,1,b+12|0);c=lD(c,J[b+12>>2]);d=J[a+8>>2];J[d+8>>2]=3;O[d>>3]=c>>>0;J[a+8>>2]=J[a+8>>2]+16;if(((e>>4)+1|0)!=J[a+8>>2]-J[a+12>>2]>>4){Z(143334,37682,2908,10703);B()}Ui=b+16|0;return 1}function yj(a){a=a|0;var b=0,c=0,d=0;a:{b:{b=a;if(!(b&3)){break b}if(!K[b|0]){return 0}while(1){b=b+1|0;if(!(b&3)){break b}if(K[b|0]){continue}break}break a}while(1){c=b;b=b+4|0;d=J[c>>2];if(((d|16843008-d)&-2139062144)==-2139062144){continue}break}while(1){b=c;c=b+1|0;if(K[b|0]){continue}break}}return b-a|0}function n9(a){a=a|0;var b=0,c=0,d=0,e=Q(0);b=Ui-16|0;Ui=b;d=J[a+8>>2]-J[a+12>>2]|0;Bj(a);c=qj(a,-1,J[219396],139183);gj(a,-2);Qj(a,1,b+12|0);e=jD(c,J[b+12>>2]);c=J[a+8>>2];J[c+8>>2]=3;O[c>>3]=e;J[a+8>>2]=J[a+8>>2]+16;if(((d>>4)+1|0)!=J[a+8>>2]-J[a+12>>2]>>4){Z(143334,37682,3341,56961);B()}Ui=b+16|0;return 1}function k0(a){a=a|0;var b=0,c=0,d=0;b=Ui-16|0;Ui=b;Oj(a,1,2);Vj(a,1);J[b+8>>2]=0;J[b+12>>2]=0;J[b>>2]=0;J[b+4>>2]=0;Fj(a,0,0);c=J[b>>2];if((c|0)!=J[b+4>>2]){while(1){TG(a,P(d,40)+c|0);d=d+1|0;Ik(a,-2,d);c=J[b>>2];if((J[b+4>>2]-c|0)/40>>>0>d>>>0){continue}break}}if(!(!c|H[b+12|0]&1)){cj(c)}Ui=b+16|0;return 1}function N9(a){a=a|0;var b=0,c=0,d=0,e=Q(0);b=Ui-16|0;Ui=b;d=J[a+8>>2]-J[a+12>>2]|0;Bj(a);c=qj(a,-1,J[219396],139183);gj(a,-2);Qj(a,1,b+12|0);e=AO(c,J[b+12>>2]);c=J[a+8>>2];J[c+8>>2]=3;O[c>>3]=e;J[a+8>>2]=J[a+8>>2]+16;if(((d>>4)+1|0)!=J[a+8>>2]-J[a+12>>2]>>4){Z(143334,37682,3185,17535);B()}Ui=b+16|0;return 1}function K9(a){a=a|0;var b=0,c=0,d=0,e=Q(0);b=Ui-16|0;Ui=b;d=J[a+8>>2]-J[a+12>>2]|0;Bj(a);c=qj(a,-1,J[219396],139183);gj(a,-2);Qj(a,1,b+12|0);e=kD(c,J[b+12>>2]);c=J[a+8>>2];J[c+8>>2]=3;O[c>>3]=e;J[a+8>>2]=J[a+8>>2]+16;if(((d>>4)+1|0)!=J[a+8>>2]-J[a+12>>2]>>4){Z(143334,37682,3292,57397);B()}Ui=b+16|0;return 1}function B9(a){a=a|0;var b=0,c=0,d=0,e=Q(0);b=Ui-16|0;Ui=b;d=J[a+8>>2]-J[a+12>>2]|0;Bj(a);c=qj(a,-1,J[219396],139183);gj(a,-2);Qj(a,1,b+12|0);e=xO(c,J[b+12>>2]);c=J[a+8>>2];J[c+8>>2]=3;O[c>>3]=e;J[a+8>>2]=J[a+8>>2]+16;if(((d>>4)+1|0)!=J[a+8>>2]-J[a+12>>2]>>4){Z(143334,37682,3131,66950);B()}Ui=b+16|0;return 1}function rua(a){a=a|0;var b=0,c=0,d=0;A(+(ok(a,1)+6755399441055744));v(1)|0;b=v(0)|0;a:{if(b){break a}if(kk(a,1)){break a}Yk(a,1,36031)}A(+(ok(a,2)+6755399441055744));v(1)|0;c=v(0)|0;b:{if(c){break b}if(kk(a,2)){break b}Yk(a,2,36031)}d=J[a+8>>2];J[d+8>>2]=3;O[d>>3]=oxa(b,c)|0;J[a+8>>2]=J[a+8>>2]+16;return 1}function nfa(a){a=a|0;var b=0,c=0,d=0,e=0;c=Ui-32|0;Ui=c;d=hL();e=J[a+8>>2];a:{if(!dk(J[a+12>>2],J[a+16>>2],J[63106],c+28|0,0)){b=c+8|0;J[b+8>>2]=0;J[b+12>>2]=0;J[b>>2]=0;J[b>>2]=J[c+28>>2];J[b+8>>2]=bj(e);J[b+12>>2]=Yi;dL(d,b);Uj(J[c+28>>2]);J[J[a+28>>2]+8>>2]=d;a=0;break a}qC(d);a=-13}Ui=c+32|0;return a|0}function kn(a,b){var c=0,d=0,e=0;ln(a,b);a:{if(J[b>>2]!=12){break a}c=J[b+8>>2];if(c&256|(c|0)>2]=J[a+36>>2]-1}d=J[a+36>>2];c=d+1|0;e=J[a>>2];b:{if((d|0)>>0>=250){qk(J[a+12>>2],4813);e=J[a>>2];d=J[a+36>>2]+1|0}H[e+75|0]=c}J[a+36>>2]=d;ys(a,b,d-1|0)}function hp(a,b,c){var d=0,e=0,f=0,g=0;e=-3;d=J[a+4>>2];a=J[d+4>>2];a:{if(!a){break a}a=J[J[d>>2]+((b>>>0)%(a>>>0)<<2)>>2];if((a|0)==-1){break a}d=J[d+8>>2];while(1){a=d+P(a,24)|0;if(J[a>>2]!=(b|0)){a=J[a+16>>2];if((a|0)!=-1){continue}break a}break}f=J[a+8>>2];g=J[a+12>>2];e=0}J[c>>2]=f;J[c+4>>2]=g;return e}function Un(a,b,c){var d=0,e=0,f=0,g=0;f=Ui-16|0;Ui=f;J[f+12>>2]=c;d=Ui-160|0;Ui=d;g=d+8|0;hj(g,217824,144);J[d+52>>2]=a;J[d+28>>2]=a;e=-2-a|0;e=e>>>0>2147483647?2147483647:e;J[d+56>>2]=e;e=a+e|0;J[d+36>>2]=e;J[d+24>>2]=e;_F(g,b,c);if((a|0)!=-2){a=J[d+28>>2];H[a-((a|0)==J[d+24>>2])|0]=0}Ui=d+160|0;Ui=f+16|0}function Os(a,b,c,d){var e=0,f=0,g=0,h=0,i=0;e=Ui-16|0;Ui=e;a:{if(!c|!d){break a}H[c|0]=0;if(!b){break a}d=d+1>>>1|0;h=(d>>>0<=1?1:d)-1|0;i=e+14|0;while(1){J[e>>2]=K[a+f|0];g=e+13|0;Gj(g,3,6224,e);if(d>>>0>f>>>0){Qz(c,g,1)}if((f|0)==(h|0)){break a}Qz(c,i,1);f=f+1|0;if((f|0)!=(b|0)){continue}break}}Ui=e+16|0}function ML(a,b,c,d,e){var f=0,g=0;f=Ui-16|0;Ui=f;a=J[a+100>>2];a:{if(!b|!a){break a}while(1){a=J[a+4>>2];g=g+1|0;if(g>>>0>=b>>>0){break a}if(a){continue}break}}b=J[a+40>>2]+P(P(H[J[a+12>>2]+20|0]&1,c),6)|0;I[f+12>>1]=L[b+4>>1];J[f+8>>2]=L[b>>1]|L[b+2>>1]<<16;I[f+10>>1]=e;I[f+8>>1]=d;Nv(a,f+8|0,c);Ui=f+16|0}function G9(a){a=a|0;var b=0,c=0,d=0,e=0;b=Ui-16|0;Ui=b;e=J[a+8>>2]-J[a+12>>2]|0;Bj(a);c=qj(a,-1,J[219396],139183);gj(a,-2);Qj(a,1,b+12|0);c=yO(c,J[b+12>>2]);d=J[a+8>>2];J[d+8>>2]=3;O[d>>3]=c|0;J[a+8>>2]=J[a+8>>2]+16;if(((e>>4)+1|0)!=J[a+8>>2]-J[a+12>>2]>>4){Z(143334,37682,3243,25418);B()}Ui=b+16|0;return 1}function CB(a){var b=0,c=0,d=0,e=0;c=sj(8);if(c){J[c>>2]=a;b=J[a+124>>2];Fj(b,0,0);J[84548]=J[84548]+1;J[c+4>>2]=to(b,-1e4);b=J[a+108>>2];d=J[a+112>>2];if((b|0)!=(d|0)){while(1){e=J[J[b>>2]+12>>2];if(e){Zi[e|0](c);d=J[a+112>>2]}b=b+4|0;if((d|0)!=(b|0)){continue}break}}return c}Z(111353,37704,1100,71857);B()}function C9(a){a=a|0;var b=0,c=0,d=0,e=0;b=Ui-16|0;Ui=b;e=J[a+8>>2]-J[a+12>>2]|0;Bj(a);c=qj(a,-1,J[219396],139183);gj(a,-2);Qj(a,1,b+12|0);c=cy(c,J[b+12>>2]);d=J[a+8>>2];J[d+8>>2]=3;O[d>>3]=c|0;J[a+8>>2]=J[a+8>>2]+16;if(((e>>4)+1|0)!=J[a+8>>2]-J[a+12>>2]>>4){Z(143334,37682,3079,25098);B()}Ui=b+16|0;return 1}function t8(a){a=a|0;var b=0,c=0,d=0,e=0;b=Ui-16|0;Ui=b;d=J[a+8>>2]-J[a+12>>2]>>4;Qj(a,1,b+12|0);c=Ej(a,2);if(c-100001>>>0<=4294867296){J[b>>2]=c;fj(a,79350,b)}Bj(a);e=qj(a,-1,J[219396],139183);gj(a,-2);eO(e,J[b+12>>2],c);if(J[a+8>>2]-J[a+12>>2]>>4!=(d|0)){Z(143244,37682,3054,25074);B()}Ui=b+16|0;return 0}function hva(a,b){a=a|0;b=b|0;var c=0;b=Hl(b,420);J[b+416>>2]=0;J[b+4>>2]=2;J[b+8>>2]=1008981770;J[b>>2]=247140;J[b+24>>2]=0;J[b+28>>2]=0;H[b+20|0]=K[b+20|0]&254;c=J[a+8>>2];J[b+4>>2]=J[a+4>>2];J[b+8>>2]=c;c=J[a+16>>2];J[b+12>>2]=J[a+12>>2];J[b+16>>2]=c;H[b+20|0]=K[a+20|0];hj(b+24|0,a+24|0,396);return b|0}function Vpa(a,b,c,d){a=a|0;b=b|0;c=c|0;d=d|0;var e=0,f=0;e=J[b>>2];e=Zi[J[J[e>>2]+48>>2]](e,20)|0;f=J[b+4>>2];a=K[a+4|0];J[e>>2]=244932;J[e+4>>2]=J[b>>2];J[e>>2]=244960;H[e+16|0]=a;J[e+12>>2]=f;H[e+8|0]=0;J[e>>2]=245784;if(!f){a=J[e+4>>2];a=Zi[J[J[a>>2]+12>>2]](a,c,d)|0;H[e+8|0]=1;J[e+12>>2]=a}return e|0}function VJ(a,b){var c=0,d=0,e=0;e=a+112|0;a:{b:{c=J[a+112>>2];d=J[a+116>>2];if((c|0)==(d|0)){if(H[a+120|0]&1){break b}d=c;c=a+108|0;lj((d-J[c>>2]>>2)+8|0,4,c,a+116|0,e);d=J[a+116>>2];c=J[e>>2]}if((c|0)==(d|0)){break a}J[e>>2]=c+4;J[c>>2]=b;return}Z(151729,53895,501,2284);B()}Z(112520,53895,557,53220);B()}function S5(a){a=a|0;var b=0,c=0;b=Ui-16|0;Ui=b;c=J[a+8>>2]-J[a+12>>2]|0;Bj(a);qj(a,-1,J[84364],139081);gj(a,-2);if(c>>4==J[a+8>>2]-J[a+12>>2]>>4){if(!K[337452]){H[337452]=1;J[b>>2]=35504;J[b+4>>2]=76562;J[b+8>>2]=35504;J[b+12>>2]=76511;dj(3,90423,129991,b)}Ui=b+16|0;return 0}Z(143244,37616,478,51340);B()}function LA(a,b,c,d){var e=0,f=0;f=Ui-32|0;Ui=f;e=f+12|0;J[e+12>>2]=c;J[e+8>>2]=b;J[e+16>>2]=a;J[e>>2]=0;J[e+4>>2]=0;b=Ui-32|0;Ui=b;J[b+28>>2]=d?d:102200;J[b+12>>2]=e;J[b+24>>2]=0;J[b+16>>2]=0;c=CI(a,1956,b+12|0,J[a+8>>2]-J[a+32>>2]|0,J[a+116>>2]);lk(a,J[b+16>>2],J[b+24>>2],0);Ui=b+32|0;Ui=f+32|0;return c}function pua(a){a=a|0;var b=0,c=0,d=0;A(+(ok(a,1)+6755399441055744));v(1)|0;b=v(0)|0;a:{if(b){break a}if(kk(a,1)){break a}Yk(a,1,36031)}A(+(ok(a,2)+6755399441055744));v(1)|0;c=v(0)|0;b:{if(c){break b}if(kk(a,2)){break b}Yk(a,2,36031)}d=J[a+8>>2];J[d+8>>2]=3;O[d>>3]=b>>>c|0;J[a+8>>2]=J[a+8>>2]+16;return 1}function eO(a,b,c){var d=0,e=0;a:{b:{d=b&65535;e=J[a+36>>2];a=J[a+32>>2];if(d>>>0<(e-a|0)/672>>>0){a=a+P(d,672)|0;if(L[a+648>>1]!=(b>>>16|0)){break b}if(L[a+650>>1]!=(d|0)){break a}J[a+468>>2]=J[a+468>>2]&1|c<<1;return}Z(145396,53895,487,84789);B()}Z(47372,40876,188,69601);B()}Z(5388,40876,189,69601);B()}function wra(a,b){a=a|0;b=b|0;var c=0,d=0,e=0,f=0,g=0;c=J[a+204>>2];a:{if((c|0)<=0){break a}e=J[a+212>>2];while(1){f=(d<<2)+e|0;g=J[f>>2];if((g|0)!=(b|0)){d=d+1|0;if((c|0)!=(d|0)){continue}break a}break}if((c|0)<=(d|0)){break a}c=c-1|0;d=c<<2;J[f>>2]=J[d+e>>2];J[d+J[a+212>>2]>>2]=g;J[a+204>>2]=c}OE(a,b)}function Ox(a,b,c){var d=0,e=0;a:{if(b){d=b&65535;e=J[a+4>>2];a=J[a>>2];if(d>>>0>=e-a>>2>>>0){break a}a=J[a+(d<<2)>>2];if(L[a+80>>1]!=(b>>>16|0)){dj(4,96107,66969,0);return}b=J[c>>2];d=J[c+4>>2];e=J[c+12>>2];J[a+56>>2]=J[c+8>>2];J[a+60>>2]=e;J[a+48>>2]=b;J[a+52>>2]=d}return}Z(145396,53895,487,84789);B()}function AW(a){a=a|0;var b=0,c=0,d=0,e=0,f=0,g=0;d=Ui-16|0;Ui=d;f=Aj(a,1,d+12|0);c=Ej(a,2);g=J[d+12>>2];b=Zm(a,3,-1);e=J[d+12>>2];b=b+(e+1&b>>31)|0;b=(b|0)>0?b:0;b=(b|0)<(e|0)?b:e;c=c+(g+1&c>>31)|0;c=(c|0)<=1?1:c;a:{if((b|0)>=(c|0)){mj(a,(c+f|0)-1|0,(b-c|0)+1|0);break a}mj(a,158859,0)}Ui=d+16|0;return 1}function hP(a,b,c){var d=0;d=J[a+2052>>2];a=J[a+2048>>2];if(d-a>>5>>>0<=b>>>0){Z(145396,53895,487,84789);B()}a=a+(b<<5)|0;b=J[a+4>>2];J[c>>2]=J[a>>2];J[c+4>>2]=b;b=J[a+28>>2];J[c+24>>2]=J[a+24>>2];J[c+28>>2]=b;b=J[a+20>>2];J[c+16>>2]=J[a+16>>2];J[c+20>>2]=b;b=J[a+12>>2];J[c+8>>2]=J[a+8>>2];J[c+12>>2]=b}function Nna(a,b){a=a|0;b=b|0;var c=0,d=0,e=0,f=0,g=0,h=Q(0);h=N[J[a+4>>2]+4>>2];d=J[J[a+8>>2]+16>>2];a:{if(!d){break a}e=J[d>>2];c=J[e+108>>2];f=J[e+112>>2];if((c|0)==(f|0)){break a}while(1){g=J[J[c>>2]+24>>2];if(g){Zi[g|0](d,h);f=J[e+112>>2]}c=c+4|0;if((f|0)!=(c|0)){continue}break}}return OR(a,3,b)|0}function Cba(a,b){a=a|0;b=b|0;var c=0,d=0,e=0;a:{if(b>>>0<2097152){b:{if(a+1>>>0<2){break b}b=a&65535;c=J[79491];if(b>>>0>=M[c+100>>2]){break a}d=J[J[c+92>>2]+(b<<2)>>2];if(!d|L[J[c+96>>2]+(b<<1)>>1]!=(a>>>16|0)){break b}e=J[d+60>>2]!=0}return e|0}Z(94863,55553,306,33926);B()}Z(2686,54166,244,5438);B()}function yua(a){a=a|0;var b=0,c=0,d=0;A(+(ok(a,1)+6755399441055744));v(1)|0;b=v(0)|0;a:{if(b){break a}if(kk(a,1)){break a}Yk(a,1,36031)}A(+(ok(a,2)+6755399441055744));v(1)|0;c=v(0)|0;b:{if(c){break b}if(kk(a,2)){break b}Yk(a,2,36031)}d=J[a+8>>2];J[d+8>>2]=3;O[d>>3]=b>>c;J[a+8>>2]=J[a+8>>2]+16;return 1}function y8(a){a=a|0;var b=0,c=0,d=0,e=0,f=0;b=Ui-16|0;Ui=b;e=J[a+8>>2]-J[a+12>>2]>>4;Bj(a);c=qj(a,-1,J[219396],139183);gj(a,-2);Qj(a,1,b+12|0);d=mk(a,2);f=c;c=Yi;if(bD(f,J[b+12>>2],d,c)){J[b>>2]=tj(d,c);fj(a,65431,b)}if(J[a+8>>2]-J[a+12>>2]>>4!=(e|0)){Z(143244,37682,2343,50458);B()}Ui=b+16|0;return 0}function v_(a){a=a|0;uj(a,-10002);ej(a,-10002,93880);uk(a,93880,257824);mj(a,110472,7);ej(a,-10002,91446);Nk(a,1965,0);Nk(a,1966,1);ej(a,-2,19016);Nk(a,1967,0);Nk(a,1968,1);ej(a,-2,19017);Fj(a,0,1);uj(a,-1);Mj(a,-2);mj(a,7105,2);ej(a,-2,69278);Nk(a,1969,1);ej(a,-10002,1337);uk(a,65244,257760);return 2}function uR(a){var b=0,c=0,d=0;d=Ui-16|0;Ui=d;if(!fo(d+12|0,8,J[a>>2])){hj(J[d+12>>2],a,J[a>>2]);b=J[d+12>>2];c=b-a|0;J[b+8>>2]=J[a+8>>2]+c;J[b+12>>2]=J[a+12>>2]+c;J[b+16>>2]=J[a+16>>2]+c;J[b+20>>2]=J[a+20>>2]+c;J[b+24>>2]=J[a+24>>2]+c;J[b+28>>2]=J[a+28>>2]+c;J[b+32>>2]=J[a+32>>2]+c}Ui=d+16|0;return b}function sua(a){a=a|0;var b=0,c=0,d=0;A(+(ok(a,1)+6755399441055744));v(1)|0;b=v(0)|0;a:{if(b){break a}if(kk(a,1)){break a}Yk(a,1,36031)}A(+(ok(a,2)+6755399441055744));v(1)|0;c=v(0)|0;b:{if(c){break b}if(kk(a,2)){break b}Yk(a,2,36031)}d=J[a+8>>2];J[d+8>>2]=3;O[d>>3]=b<>2]=J[a+8>>2]+16;return 1}function s8(a){a=a|0;var b=0,c=Q(0),d=0,e=0;b=Ui-16|0;Ui=b;d=J[a+8>>2]-J[a+12>>2]>>4;Qj(a,1,b+12|0);c=Q(wj(a,2));if(Q(R(c))>Q(360)){O[b>>3]=c;fj(a,58565,b)}Bj(a);e=qj(a,-1,J[219396],139183);gj(a,-2);dO(e,J[b+12>>2],c);if(J[a+8>>2]-J[a+12>>2]>>4!=(d|0)){Z(143244,37682,3107,66931);B()}Ui=b+16|0;return 0}function oj(a){var b=0,c=0,d=0,e=0;b=Ui-16|0;Ui=b;a:{c=J[a+16>>2];if((c|0)==-8388608){break a}c=c+J[a+12>>2]|0;d=J[a>>2];d=J[d+8>>2]-J[d+12>>2]>>4;if((c|0)==(d|0)){break a}e=J[a+8>>2];a=J[a+4>>2];J[b+12>>2]=d;J[b+8>>2]=c;J[b>>2]=a;J[b+4>>2]=e;dj(4,86858,140976,b);Z(50107,37704,1504,3553);B()}Ui=b+16|0}function jwa(a,b,c,d){a=a|0;b=b|0;c=c|0;d=d|0;var e=0,f=0,g=0;e=Ui+-64|0;Ui=e;f=J[J[a+48>>2]+12>>2];J[e+52>>2]=0;J[e+56>>2]=0;I[e+60>>1]=0;J[e+44>>2]=0;J[e+48>>2]=0;J[e+8>>2]=1;J[e+12>>2]=1008981770;J[e+4>>2]=247060;H[e+24|0]=0;g=f;f=e+4|0;nV(g,f,J[a+56>>2]);mV(b,f,c,J[J[a+52>>2]+12>>2],d);Ui=e- -64|0}function hwa(a,b,c,d){a=a|0;b=b|0;c=c|0;d=d|0;var e=0,f=0,g=0;e=Ui+-64|0;Ui=e;f=J[J[a+48>>2]+12>>2];J[e+52>>2]=0;J[e+56>>2]=0;I[e+60>>1]=0;J[e+44>>2]=0;J[e+48>>2]=0;J[e+8>>2]=1;J[e+12>>2]=1008981770;J[e+4>>2]=247060;H[e+24|0]=0;g=f;f=e+4|0;nV(g,f,J[a+56>>2]);lV(b,f,c,J[J[a+52>>2]+12>>2],d);Ui=e- -64|0}function Ica(a){a=a|0;var b=0,c=0,d=0,e=0;c=Ui-32|0;Ui=c;e=pj(c+12|0,a,1,39971,845);a:{if((kj(a,1)|0)==7){b=qj(a,1,J[77574],0);if(b){if(lo(J[b>>2])){break a}}fj(a,72312,0)}Yk(a,1,49251);B()}b=P(J[b+36>>2],J[b+28>>2]);d=J[a+8>>2];J[d+8>>2]=3;O[d>>3]=b>>>0;J[a+8>>2]=J[a+8>>2]+16;oj(e);Ui=c+32|0;return 1}function AC(a,b,c,d){var e=0,f=0;if(!b){J[d>>2]=0;return}e=b&65535;f=J[a+4>>2];a=J[a>>2];if(e>>>0>2>>>0){a=J[a+(e<<2)>>2];if(L[a+80>>1]!=(b>>>16|0)){dj(4,96107,66969,0);J[d>>2]=0;return}b=J[a>>2];J[d>>2]=d?(J[a+4>>2]-b|0)/304>>>0>c>>>0?(b+P(c,304)|0)+144|0:0:0;return}Z(145396,53895,487,84789);B()}function zL(a){var b=0,c=0;c=J[J[a+16>>2]+2080>>2];b=J[a>>2];if(b){hk(c,-1e4,b)}b=J[a+4>>2];if(b){hk(c,-1e4,b)}b=J[a+8>>2];if(b){hk(c,-1e4,b)}b=J[a+12>>2];if(b){hk(c,-1e4,b)}hk(c,-1e4,J[a+24>>2]);cj(J[a+20>>2]);J[a+24>>2]=-2;J[a+16>>2]=0;J[a+20>>2]=0;J[a+8>>2]=-2;J[a+12>>2]=-2;J[a>>2]=-2;J[a+4>>2]=-2}function V9(a){a=a|0;var b=0,c=0,d=0,e=0,f=Q(0);b=Ui-32|0;Ui=b;d=1;e=pj(b+12|0,a,1,37682,4453);Bj(a);c=qj(a,-1,J[219396],139183);gj(a,-2);Qj(a,1,b+8|0);a:{if(dy(c,J[b+8>>2])){d=Jj(e,65117,0);break a}f=CO(c,J[b+8>>2]);c=J[a+8>>2];J[c+8>>2]=3;O[c>>3]=f;J[a+8>>2]=J[a+8>>2]+16}oj(e);Ui=b+32|0;return d|0}function Sy(a,b,c){var d=0,e=0;d=Ui-16|0;Ui=d;a:{b:{if(!a){break b}J[d+8>>2]=0;J[d+12>>2]=0;J[d>>2]=0;J[d+4>>2]=0;if(!yv(a,b,d,176)){e=J[d+4>>2];a=J[d>>2];if((e|0)==(a|0)){break a}dk(a,e-a|0,b,c,0)}if(H[d+12|0]&1){break b}a=J[d>>2];if(!a){break b}cj(a)}Ui=d+16|0;return}Z(145396,53895,487,84789);B()}function BO(a,b){var c=0,d=0;a:{b:{c=b&65535;d=J[a+36>>2];a=J[a+32>>2];if(c>>>0<(d-a|0)/672>>>0){a=a+P(c,672)|0;if(L[a+648>>1]!=(b>>>16|0)){break b}if(L[a+650>>1]!=(c|0)){break a}Yi=J[a+556>>2];return J[a+552>>2]}Z(145396,53895,487,84789);B()}Z(47372,40876,188,69601);B()}Z(5388,40876,189,69601);B()}function dua(a,b,c,d){a=a|0;b=b|0;c=c|0;d=d|0;a=J[b>>2];a=Zi[J[J[a>>2]+48>>2]](a,16)|0;J[a>>2]=244932;J[a+4>>2]=J[b>>2];J[a>>2]=244960;J[a+12>>2]=0;H[a+8|0]=0;J[a>>2]=245340;b=J[a+4>>2];if(Zi[J[J[b>>2]+24>>2]](b,c,d)|0){b=J[a+4>>2];b=Zi[J[J[b>>2]+12>>2]](b,c,d)|0;H[a+8|0]=1;J[a+12>>2]=b}return a|0}function LR(a,b){var c=0;a:{if((b|0)!=32767){while(1){b=b&65535;c=J[a+1036>>2];if(b>>>0>=J[a+1040>>2]-c>>2>>>0){break a}b=J[(b<<2)+c>>2];if(!(!(K[b+137|0]&4)|K[b+141|0]&128)){LR(a,L[b+150>>1]&32767);uv(a,b,0)}b=J[b+148>>2]&32767;if((b|0)!=32767){continue}break}}return}Z(145396,53895,487,84789);B()}function DG(a){var b=0,c=0;if((a|0)<=0){a=a+2|0;if(a>>>0>2){a=32685}else{a=J[(a<<2)+254272>>2]}return a}if((a|0)==1){return 70960}b=203888;c=a-1|0;a:{if(!c){break a}while(1){if(!K[b|0]){break a}while(1){a=b;b=a+1|0;if(K[a+1|0]){continue}break}b=a+2|0;c=c-1|0;if(c){continue}break}}return!K[b|0]+b|0}function zra(a,b){a=a|0;b=b|0;var c=0,d=0,e=0,f=0,g=0;a:{c=J[a+248>>2];if((c|0)<=0){break a}e=J[a+256>>2];while(1){f=(d<<2)+e|0;g=J[f>>2];if((g|0)!=(b|0)){d=d+1|0;if((c|0)!=(d|0)){continue}break a}break}if((c|0)<=(d|0)){break a}b=c-1|0;c=b<<2;J[f>>2]=J[c+e>>2];J[c+J[a+256>>2]>>2]=g;J[a+248>>2]=b}}function zn(a,b){var c=0,d=0,e=0,f=0;d=Ui-32|0;Ui=d;e=d+20|0;c=e;J[c+8>>2]=0;J[c>>2]=1;J[c+4>>2]=0;f=d+8|0;c=f;J[c+8>>2]=0;J[c>>2]=1;J[c+4>>2]=0;c=kl(e,2);a:{if(c){break a}c=km(f,b,2);if(c){break a}c=0;if((_j(a,e)|0)>=0){if((_j(a,f)|0)<=0){break a}}c=-12416}Dj(d+20|0);Dj(d+8|0);Ui=d+32|0;return c}function zY(a,b){a=a|0;b=b|0;var c=0,d=0,e=0;c=Ui-16|0;Ui=c;d=J[b>>2];J[c+8>>2]=0;J[c+12>>2]=4;b=1;a:{if((cp(d,1,9,c+8|0,c+12|0)|0)<0){b=J[a+8>>2];J[b+8>>2]=0;J[a+8>>2]=b+16;mj(a,74813,17);b=2;break a}d=J[c+8>>2];e=J[a+8>>2];J[e+8>>2]=1;J[e>>2]=(d|0)!=0;J[a+8>>2]=J[a+8>>2]+16}Ui=c+16|0;return b|0}function wY(a,b){a=a|0;b=b|0;var c=0,d=0,e=0;c=Ui-16|0;Ui=c;d=J[b>>2];J[c+8>>2]=0;J[c+12>>2]=4;b=1;a:{if((cp(d,6,1,c+8|0,c+12|0)|0)<0){b=J[a+8>>2];J[b+8>>2]=0;J[a+8>>2]=b+16;mj(a,74813,17);b=2;break a}d=J[c+8>>2];e=J[a+8>>2];J[e+8>>2]=1;J[e>>2]=(d|0)!=0;J[a+8>>2]=J[a+8>>2]+16}Ui=c+16|0;return b|0}function fta(a){a=a|0;var b=0,c=0,d=0,e=0,f=0,g=0,h=0;Xl(45690);Zi[J[J[a>>2]+8>>2]](a);Xl(19049);b=J[a+76>>2];Zi[J[J[b>>2]+32>>2]](b,J[a+24>>2]);Wl();b=J[a+24>>2];Xl(19023);if(b){c=J[a+76>>2];e=b,f=Zi[J[J[c>>2]+36>>2]](c)|0,g=a+28|0,h=J[a+24>>2],d=J[J[b>>2]+32>>2],Zi[d](e|0,f|0,g|0,h|0)}Wl();Wl()}function fk(a,b,c){var d=0,e=0,f=0,g=0;e=-1;f=-1;d=J[a+36>>2];a:{if(!d){break a}d=J[J[a+32>>2]+(mxa(b,c,d)<<2)>>2];if((d|0)==-1){break a}g=J[a+40>>2];while(1){a=g+P(d,24)|0;if(J[a>>2]!=(b|0)|J[a+4>>2]!=(c|0)){d=J[a+16>>2];if((d|0)!=-1){continue}break a}break}e=J[a+8>>2];f=J[a+12>>2]}Yi=f;return e}function e9(a){a=a|0;var b=0,c=0,d=0,e=0;b=Ui-32|0;Ui=b;e=pj(b+12|0,a,1,37682,3381);Qj(a,1,b+8|0);Bj(a);d=qj(a,-1,J[219396],139183);gj(a,-2);if(J[a+8>>2]-J[a+12>>2]>>4>=2){c=(ck(a,2)|0)!=0}d=rO(d,J[b+8>>2],c);c=J[a+8>>2];J[c+8>>2]=1;J[c>>2]=(d|0)!=0;J[a+8>>2]=J[a+8>>2]+16;oj(e);Ui=b+32|0;return 1}function V7(a,b){a=a|0;b=b|0;var c=0,d=0;d=Ui-16|0;Ui=d;if(a){c=d+11|0;b=b&65535;a:{if(b>>>0<=127){H[c|0]=b;b=1;break a}if(b>>>0<=2047){H[c+1|0]=b&63|128;H[c|0]=b>>>6|192;b=2;break a}H[c+2|0]=b&63|128;H[c|0]=b>>>12|224;H[c+1|0]=b>>>6&63|128;b=3}H[b+c|0]=0;J[a+3184>>2]=zl(a+2928|0,c,256)}Ui=d+16|0}function Sia(a,b,c,d,e,f){a=a|0;b=b|0;c=c|0;d=d|0;e=e|0;f=f|0;var g=0,h=0,i=0;h=J[a+172>>2];if(!h){h=Hq();J[a+172>>2]=h}a:{g=J[a+208>>2];if(!g){g=J[a+128>>2];i=J[g+28>>2];if((i|0)==J[g+32>>2]){break a}g=J[i+4>>2]}xr(h,J[g>>2],b,c,d,e,f);H[a+262|0]=K[a+262|0]|8;return}Z(145396,53895,494,84789);B()}function Qda(a){a=a|0;var b=0,c=0,d=0,e=0;b=J[J[a+16>>2]+8>>2];c=J[b>>2];e=J[b+4>>2];a:{b:{if(K[b+8|0]&2){Zi[J[79455]](c,e);cj(b);break b}d=-17;if(Zi[J[79470]](c,e)&1){break a}H[b+8|0]=K[b+8|0]&254;c=J[a+12>>2];Uj(J[c+4>>2]);sQ(c);J[J[a+16>>2]+16>>2]=Zi[J[79459]](J[b>>2],J[b+4>>2])}d=0}return d|0}function lia(a){a=a|0;var b=0,c=0;b=J[a+8>>2];c=J[b+16>>2];a=J[J[a+16>>2]>>2];if(a>>>0>2]-c>>3>>>0){a=J[(a<<3)+c>>2];c=J[b+4>>2];b=J[b>>2];if(a>>>0<(c-b|0)/240>>>0){a=b+P(a,240)|0;if(K[a+234|0]&8){ry(a,J[a+208>>2],J[a+212>>2],N[a+224>>2],N[a+228>>2])}return}}Z(145396,53895,487,84789);B()}function gl(a){var b=0,c=0;b=J[a+76>>2];if(!((b|0)>=0&(!b|J[245829]!=(b&1073741823)))){b=J[a+4>>2];if((b|0)!=J[a+8>>2]){J[a+4>>2]=b+1;return K[b|0]}return yz(a)}b=a+76|0;c=J[b>>2];J[b>>2]=c?c:1073741823;c=J[a+4>>2];a:{if((c|0)!=J[a+8>>2]){J[a+4>>2]=c+1;a=K[c|0];break a}a=yz(a)}J[b>>2]=0;return a}function Xra(a,b,c){a=a|0;b=b|0;c=c|0;var d=0,e=0;bz((J[b+60>>2]==2?44:4)+a|0,J[b+48>>2]);d=J[b+52>>2];e=d?d+56|0:((J[b+60>>2]<<2)+a|0)+84|0;d=J[b+56>>2];J[e>>2]=d;if(d){J[d+52>>2]=J[b+52>>2]}d=J[a+96>>2];Zi[J[J[d>>2]+16>>2]](d,b,c);if(b){J[83765]=J[83765]+1;Zi[J[61751]](J[b-4>>2])}H[a+154|0]=1}function EY(a,b){a=a|0;b=b|0;var c=0,d=0;c=Ui-16|0;Ui=c;b=J[b>>2];J[c+8>>2]=0;J[c+12>>2]=4;a:{if((cp(b,41,19,c+8|0,c+12|0)|0)<0){b=J[a+8>>2];J[b+8>>2]=0;J[a+8>>2]=b+16;mj(a,74813,17);a=2;break a}b=J[c+8>>2];d=J[a+8>>2];J[d+8>>2]=1;J[d>>2]=(b|0)!=0;J[a+8>>2]=J[a+8>>2]+16;a=1}Ui=c+16|0;return a|0}function CY(a,b){a=a|0;b=b|0;var c=0,d=0;c=Ui-16|0;Ui=c;b=J[b>>2];J[c+8>>2]=0;J[c+12>>2]=4;a:{if((cp(b,41,26,c+8|0,c+12|0)|0)<0){b=J[a+8>>2];J[b+8>>2]=0;J[a+8>>2]=b+16;mj(a,74813,17);a=2;break a}b=J[c+8>>2];d=J[a+8>>2];J[d+8>>2]=1;J[d>>2]=(b|0)!=0;J[a+8>>2]=J[a+8>>2]+16;a=1}Ui=c+16|0;return a|0}function rQ(a,b){var c=0,d=0,e=0;if(J[a+4>>2]){while(1){c=J[a>>2]+P(e,60)|0;d=J[c+20>>2];if(d){cj(d)}d=J[c+28>>2];if(d){cj(d)}d=J[c+40>>2];if(d){cj(d)}c=J[c+48>>2];if(c){cj(c)}e=e+1|0;if(e>>>0>2]){continue}break}}c=J[a>>2];if(c){cj(c)}a:{if(!b){break a}a=J[a+24>>2];if(!a){break a}cj(a)}}function ix(a,b){var c=0,d=0;d=ki()|0;a:{b:{if(K[d|0]){c=-21;if(ek(b,d,1024)>>>0>=1024){break a}if(zl(b,114114,1024)>>>0<1024){break b}break a}H[b|0]=0}c=-21;if(zl(b,135027,1024)>>>0>=1024){break a}if(zl(b,a,1024)>>>0>=1024){break a}if(!fH(b)){return 0}a=lr(J[245744]);c=(a|0)!=-16?a:0}return c}function gha(a,b){a=a|0;b=b|0;var c=0;c=Ui-48|0;Ui=c;if(a){_D(c,J[a+4>>2]);N[b>>2]=N[c>>2];N[b+4>>2]=N[c+4>>2];N[b+8>>2]=N[c+8>>2];N[b+12>>2]=N[c+12>>2];N[b+16>>2]=N[c+16>>2];N[b+20>>2]=N[c+20>>2];N[b+24>>2]=N[c+24>>2];N[b+32>>2]=N[c+32>>2];N[b+36>>2]=N[c+36>>2];N[b+40>>2]=N[c+40>>2]}Ui=c+48|0}function Wj(a,b,c){var d=0,e=0;a:{b:{if(c>>>0>=4){if((a|b)&3){break b}while(1){if(J[a>>2]!=J[b>>2]){break b}b=b+4|0;a=a+4|0;c=c-4|0;if(c>>>0>3){continue}break}}if(!c){break a}}while(1){d=K[a|0];e=K[b|0];if((d|0)==(e|0)){b=b+1|0;a=a+1|0;c=c-1|0;if(c){continue}break a}break}return d-e|0}return 0}function PN(a,b){var c=0;if(!(!a|!b|J[a+40>>2]>=0)){c=J[a+4>>2];J[b>>2]=J[a>>2];J[b+4>>2]=c;c=J[a+36>>2];J[b+32>>2]=J[a+32>>2];J[b+36>>2]=c;c=J[a+28>>2];J[b+24>>2]=J[a+24>>2];J[b+28>>2]=c;c=J[a+20>>2];J[b+16>>2]=J[a+16>>2];J[b+20>>2]=c;c=J[a+12>>2];J[b+8>>2]=J[a+8>>2];J[b+12>>2]=c;c=1}return c}function Ffa(a){a=a|0;var b=0,c=0;c=Ui-16|0;Ui=c;a:{if(!dk(J[a+20>>2],J[a+24>>2],J[56744],c,0)){a=J[J[a+36>>2]+8>>2];b=J[a>>2];if(b){Uj(b)}b=J[c+4>>2];J[a>>2]=J[c>>2];J[a+4>>2]=b;b=J[c+12>>2];J[a+8>>2]=J[c+8>>2];J[a+12>>2]=b;a=0;break a}a=-13;b=J[c>>2];if(!b){break a}Uj(b)}Ui=c+16|0;return a|0}function Cn(a,b){var c=0,d=0;c=K[a|0];if(c){a:{while(1){d=K[b|0];if(!d){break a}if(!((c|0)==(d|0)|((c-65>>>0<26?c|32:c)|0)==((d-65>>>0<26?d|32:d)|0))){c=K[a|0];break a}b=b+1|0;c=K[a+1|0];a=a+1|0;if(c){continue}break}c=0}a=c}else{a=0}c=a-65>>>0<26?a|32:a;a=K[b|0];return c-(a-65>>>0<26?a|32:a)|0}function C8(a){a=a|0;var b=0,c=Q(0),d=0,e=0;b=Ui-16|0;Ui=b;d=J[a+8>>2]-J[a+12>>2]>>4;Qj(a,1,b+12|0);c=Q(wj(a,2));if(c>3]=c;fj(a,58535,b)}Bj(a);e=qj(a,-1,J[219396],139183);gj(a,-2);iO(e,J[b+12>>2],c);if(J[a+8>>2]-J[a+12>>2]>>4!=(d|0)){Z(143244,37682,3160,17517);B()}Ui=b+16|0;return 0}function AY(a,b){a=a|0;b=b|0;var c=0,d=0;c=Ui-16|0;Ui=c;b=J[b>>2];J[c+8>>2]=0;J[c+12>>2]=4;a:{if((cp(b,0,34,c+8|0,c+12|0)|0)<0){b=J[a+8>>2];J[b+8>>2]=0;J[a+8>>2]=b+16;mj(a,74813,17);a=2;break a}b=J[c+8>>2];d=J[a+8>>2];J[d+8>>2]=1;J[d>>2]=(b|0)!=0;J[a+8>>2]=J[a+8>>2]+16;a=1}Ui=c+16|0;return a|0}function xY(a,b){a=a|0;b=b|0;var c=0,d=0;c=Ui-16|0;Ui=c;d=J[b>>2];J[c+8>>2]=0;J[c+12>>2]=4;b=2;a:{if((cp(d,1,2,c+8|0,c+12|0)|0)<0){d=J[a+8>>2];J[d+8>>2]=0;J[a+8>>2]=d+16;mj(a,74813,17);break a}b=J[c+8>>2];d=J[a+8>>2];J[d+8>>2]=1;J[d>>2]=(b|0)!=0;J[a+8>>2]=J[a+8>>2]+16;b=1}Ui=c+16|0;return b|0}function oR(a,b,c,d,e){var f=0,g=0,h=0;g=J[a+4>>2];f=J[a>>2];if(g>>>0>=M[f+4>>2]){Z(12601,39139,270,2838);B()}J[a+4>>2]=g+1;h=J[f+8>>2]+(g<<3)|0;J[h>>2]=b;J[h+4>>2]=c;b=g<<2;J[b+J[f+16>>2]>>2]=1;c=b+J[f+12>>2]|0;b=J[a+12>>2];J[c>>2]=b;c=J[f+20>>2]+(b<<3)|0;J[c>>2]=d;J[c+4>>2]=e;J[a+12>>2]=b+1}function hr(a,b,c){var d=0,e=0;d=Ui-288|0;Ui=d;a:{if(!kj(a,-1)){break a}if(!kk(a,-1)){e=kj(a,-1);if((e|0)==-1){e=60960}else{e=J[(e<<2)+257632>>2]}J[d+24>>2]=e;J[d+20>>2]=36031;J[d+16>>2]=b;b=d+32|0;Gj(b,256,26654,d+16|0);J[d>>2]=b;c=Q(fj(a,31902,d)|0);break a}c=Q(ok(a,-1))}Ui=d+288|0;return c}function dy(a,b){var c=0,d=0;a:{b:{c=b&65535;d=J[a+36>>2];a=J[a+32>>2];if(c>>>0<(d-a|0)/672>>>0){a=a+P(c,672)|0;if(L[a+648>>1]!=(b>>>16|0)){break b}if(L[a+650>>1]!=(c|0)){break a}return(K[a+479|0]&16)>>>4|0}Z(145396,53895,487,84789);B()}Z(47372,40876,188,69601);B()}Z(5388,40876,189,69601);B()}function JT(a,b,c,d,e){var f=0;J[a>>2]=244932;J[a+4>>2]=J[b>>2];J[a>>2]=244960;H[a+8|0]=e;J[a>>2]=245064;b=J[b>>2];J[a+64>>2]=0;J[a+60>>2]=b;J[a+12>>2]=245092;f=e?c:d;J[a+20>>2]=f;c=e?d:c;J[a+16>>2]=c;b=Zi[J[J[b>>2]+12>>2]](b,c,f)|0;J[a+76>>2]=b;c=J[a+60>>2];Zi[J[J[c>>2]+20>>2]](c,b);return a}function Bn(a,b){var c=0,d=0,e=0,f=0;d=Ui-16|0;Ui=d;a:{if(!b){b=0;break a}c=b>>31;e=(c^b)-c|0;c=S(e);Mm(d,e,0,0,0,c+81|0);e=0+J[d+8>>2]|0;c=(J[d+12>>2]^65536)+(16414-c<<16)|0;c=e>>>0>>0?c+1|0:c;f=b&-2147483648|c;c=J[d+4>>2];b=J[d>>2]}J[a>>2]=b;J[a+4>>2]=c;J[a+8>>2]=e;J[a+12>>2]=f;Ui=d+16|0}function zO(a,b){var c=0,d=0;a:{b:{c=b&65535;d=J[a+36>>2];a=J[a+32>>2];if(c>>>0<(d-a|0)/672>>>0){a=a+P(c,672)|0;if(L[a+648>>1]!=(b>>>16|0)){break b}if(L[a+650>>1]!=(c|0)){break a}return(K[a+478|0]&8)>>>3|0}Z(145396,53895,487,84789);B()}Z(47372,40876,188,69601);B()}Z(5388,40876,189,69601);B()}function vfa(a){a=a|0;var b=0,c=0,d=0;b=Ui-16|0;Ui=b;d=J[J[a+36>>2]+8>>2];c=-13;a:{if(!d){break a}c=-13;if(dk(J[a+20>>2],J[a+24>>2],J[60794],b+12|0,0)){break a}a=J[b+12>>2];if(J[a+56>>2]!=2){Z(94919,39550,1657,49126);B()}a=Zi[J[79483]](d,a)|0;Uj(J[b+12>>2]);c=a?0:-13}a=c;Ui=b+16|0;return a|0}function up(a){var b=0,c=0,d=0;b=Ui-32|0;Ui=b;if(Hn(J[a+4>>2],b+28|0,4)){c=J[a>>2];d=J[a+12>>2];J[b+20>>2]=71449;J[b+16>>2]=d;gk(c,50977,b+16|0);al(J[a>>2],3)}c=J[b+28>>2];if((c|0)<0){c=J[a>>2];d=J[a+12>>2];J[b+4>>2]=34340;J[b>>2]=d;gk(c,50977,b);al(J[a>>2],3);c=J[b+28>>2]}Ui=b+32|0;return c}function lD(a,b){var c=0,d=0;a:{b:{c=b&65535;d=J[a+36>>2];a=J[a+32>>2];if(c>>>0<(d-a|0)/672>>>0){a=a+P(c,672)|0;if(L[a+648>>1]!=(b>>>16|0)){break b}if(L[a+650>>1]!=(c|0)){break a}return J[a+476>>2]>>>12&15}Z(145396,53895,487,84789);B()}Z(47372,40876,188,69601);B()}Z(5388,40876,189,69601);B()}function afa(a){a=a|0;var b=0,c=0,d=0;b=Ui-16|0;Ui=b;d=J[J[a+36>>2]+8>>2];c=-13;a:{if(!d){break a}c=-13;if(dk(J[a+20>>2],J[a+24>>2],J[60794],b+12|0,0)){break a}a=J[b+12>>2];if(J[a+56>>2]!=1){Z(87620,39550,1618,49022);B()}a=Zi[J[79418]](d,a)|0;Uj(J[b+12>>2]);c=a?0:-13}a=c;Ui=b+16|0;return a|0}function wu(a,b,c,d){var e=0,f=0,g=0;f=Ui-96|0;Ui=f;J[d>>2]=0;a:{if(!Vv(a,f)){e=-2;if((J[f+4>>2]&61440)!=32768){break a}g=c;c=J[f+24>>2];e=-21;if(g>>>0>>0){break a}a=ol(a,82700);b=Sl(b,1,c,a);vk(a);e=-5;if((b|0)!=(c|0)){break a}J[d>>2]=c;e=0;break a}e=lr(J[245744])}a=e;Ui=f+96|0;return a}function t2(a){a=a|0;var b=0,c=0,d=0,e=0,f=0;d=Ui-32|0;Ui=d;e=d+12|0;b=a?J[a>>2]:0;if(b){b=J[b+124>>2]}else{b=0}f=pj(e,b,0,39844,479);e=J[215668];c=J[b+8>>2];J[c+8>>2]=3;O[c>>3]=e|0;J[b+8>>2]=J[b+8>>2]+16;c=px(a);a=J[b+8>>2];J[a+8>>2]=2;J[a>>2]=c;J[b+8>>2]=J[b+8>>2]+16;SJ(b);oj(f);Ui=d+32|0}function bm(a){var b=0,c=0;if(a){b=J[a>>2];if((b|0)!=J[a+4>>2]){while(1){b=J[(c<<2)+b>>2];a:{b:{switch(J[a+16>>2]){case 0:Zi[J[79392]](b);break a;case 1:break b;default:break a}}Zi[J[79398]](b)}c=c+1|0;b=J[a>>2];if(c>>>0>2]-b>>2>>>0){continue}break}}if(!(!b|H[a+12|0]&1)){cj(b)}cj(a)}}function Tp(a,b){var c=0,d=0;a:{b:{c=b&65535;d=J[a+36>>2];a=J[a+32>>2];if(c>>>0<(d-a|0)/672>>>0){a=a+P(c,672)|0;if(L[a+648>>1]!=(b>>>16|0)){break b}if(L[a+650>>1]!=(c|0)){break a}return J[a+476>>2]>>>4&15}Z(145396,53895,487,84789);B()}Z(47372,40876,188,69601);B()}Z(5388,40876,189,69601);B()}function yva(a,b,c){a=a|0;b=b|0;c=Q(c);var d=Q(0),e=Q(0),f=0,g=Q(0);e=c;c=Q(N[a+48>>2]*Q(M[a+52>>2]));d=Q(N[a+44>>2]*Q(M[a+56>>2]));e=Q(e*Q(c*d));N[b>>2]=e;f=J[43181];J[b+4>>2]=J[43180];J[b+8>>2]=f;d=Q(Q(c*c)+Q(d*d));c=N[a+24>>2];g=Q(c*c);c=N[a+28>>2];N[b+12>>2]=Q(e*Q(d+Q(g+Q(c*c))))/Q(12)}function x8(a){a=a|0;var b=0,c=0,d=0,e=0;b=Ui-16|0;Ui=b;d=J[a+8>>2]-J[a+12>>2]>>4;Qj(a,1,b+12|0);c=Ej(a,2);if(c>>>0>=2){J[b>>2]=c;fj(a,80412,b)}Bj(a);e=qj(a,-1,J[219396],139183);gj(a,-2);fO(e,J[b+12>>2],c);if(J[a+8>>2]-J[a+12>>2]>>4!=(d|0)){Z(143244,37682,3216,25400);B()}Ui=b+16|0;return 0}function r8(a){a=a|0;var b=0,c=0,d=0,e=0;b=Ui-16|0;Ui=b;d=J[a+8>>2]-J[a+12>>2]>>4;Qj(a,1,b+12|0);c=Ej(a,2);if(c>>>0>=9){J[b>>2]=c;fj(a,78955,b)}Bj(a);e=qj(a,-1,J[219396],139183);gj(a,-2);cO(e,J[b+12>>2],c);if(J[a+8>>2]-J[a+12>>2]>>4!=(d|0)){Z(143244,37682,2949,10691);B()}Ui=b+16|0;return 0}function mm(a,b,c,d){var e=0;e=Ui-16|0;Ui=e;a:{if((kj(a,b)|0)<=0){if(!d){break a}if(!c){J[d>>2]=0;break a}J[d>>2]=yj(c);break a}c=Ij(a,b,d);if(c){break a}d=J[64412];c=kj(a,b);if((c|0)==-1){c=60960}else{c=J[(c<<2)+257632>>2]}J[e+4>>2]=c;J[e>>2]=d;Dk(a,b,ik(a,26749,e));c=0}Ui=e+16|0;return c}function gD(a,b,c,d,e,f,g){var h=0,i=0,j=0;h=Ui-32|0;Ui=h;i=1;j=pj(h+12|0,a,1,37682,1615);c=fD(b,c,d,e,0);a:{if(!c){J[h>>2]=(J[b+40>>2]-J[b+32>>2]|0)/672;i=Jj(j,142120,h);break a}J[hD(b,c)+560>>2]=g;ZN(b,c,f);d=Sj(a,8);J[d+4>>2]=c;J[d>>2]=b;rj(a,-1e4,1423);Mj(a,-2)}oj(j);Ui=h+32|0;return i}function cy(a,b){var c=0,d=0;a:{b:{c=b&65535;d=J[a+36>>2];a=J[a+32>>2];if(c>>>0<(d-a|0)/672>>>0){a=a+P(c,672)|0;if(L[a+648>>1]!=(b>>>16|0)){break b}if(L[a+650>>1]!=(c|0)){break a}return J[a+468>>2]>>>1|0}Z(145396,53895,487,84789);B()}Z(47372,40876,188,69601);B()}Z(5388,40876,189,69601);B()}function c8(a){a=a|0;var b=0,c=0,d=0,e=0;b=Ui-16|0;Ui=b;d=J[a+8>>2]-J[a+12>>2]>>4;Qj(a,1,b+12|0);c=Ej(a,2);if(c>>>0>=3){J[b>>2]=c;fj(a,79512,b)}Bj(a);e=qj(a,-1,J[219396],139183);gj(a,-2);WN(e,J[b+12>>2],c);if(J[a+8>>2]-J[a+12>>2]>>4!=(d|0)){Z(143244,37682,2811,32990);B()}Ui=b+16|0;return 0}function b8(a){a=a|0;var b=0,c=0,d=0,e=0;b=Ui-16|0;Ui=b;d=J[a+8>>2]-J[a+12>>2]>>4;Qj(a,1,b+12|0);c=Ej(a,2);if(c>>>0>=3){J[b>>2]=c;fj(a,79491,b)}Bj(a);e=qj(a,-1,J[219396],139183);gj(a,-2);VN(e,J[b+12>>2],c);if(J[a+8>>2]-J[a+12>>2]>>4!=(d|0)){Z(143244,37682,2873,32962);B()}Ui=b+16|0;return 0}function Zl(a,b,c){var d=0,e=0,f=0;d=J[a+20>>2];a:{if((b|0)>0){e=J[a+40>>2];while(1){if(d>>>0<=e>>>0){break a}b=b-1|0;b=K[J[J[d+4>>2]>>2]+6|0]?b:b-J[d+20>>2]|0;d=d-24|0;if((b|0)>0){continue}break}}if(b){a=0}else{a=J[a+40>>2];if(a>>>0>=d>>>0){break a}a=(d-a|0)/24|0}J[c+96>>2]=a;f=1}return f}function Wga(a,b){a=a|0;b=b|0;var c=0,d=0,e=0;d=J[78404];Tj(d);b=0;a:{b:{if(a+1>>>0<2){break b}c=a&65535;if(c>>>0>=M[78402]){break a}e=J[J[78400]+(c<<2)>>2];if(!e){break b}b=L[J[78401]+(c<<1)>>1]==(a>>>16|0)?e:0}a=fQ(J[78398],J[b+28>>2],b+12|0,b);Lj(d);return a|0}Z(2686,54166,244,5438);B()}function RU(a,b,c,d,e,f){J[a+48>>2]=d;J[a+44>>2]=c;J[a+40>>2]=b;J[a+36>>2]=0;J[a+28>>2]=0;J[a+32>>2]=0;J[a+4>>2]=f;J[a>>2]=e;J[a+8>>2]=Tq(e,b<<2);J[a+12>>2]=Tq(J[a>>2],c<<2);J[a+16>>2]=Tq(J[a>>2],d<<2);J[a+24>>2]=Tq(J[a>>2],P(J[a+40>>2],12));J[a+20>>2]=Tq(J[a>>2],P(J[a+40>>2],12));return a}function Oea(a){a=a|0;var b=0,c=0,d=0,e=0,f=0;b=Ui-112|0;Ui=b;c=J[a+4>>2];e=J[a+24>>2];J[b+8>>2]=0;J[b+12>>2]=0;d=b+8|0;f=WQ(J[a>>2],e,d);a:{if(!f){d=CQ(J[a>>2],c,d,e);if(!d){f=-2;break a}c=ij(nj(112),0,112);J[c>>2]=d;LP(J[a+8>>2],c,b+8|0,e);J[J[a+28>>2]+8>>2]=c}Uj(e)}Ui=b+112|0;return f|0}function DY(a,b){a=a|0;b=b|0;var c=0,d=0;c=Ui-16|0;Ui=c;b=J[b>>2];J[c+8>>2]=0;J[c+12>>2]=4;a:{if((cp(b,41,16,c+8|0,c+12|0)|0)<0){b=J[a+8>>2];J[b+8>>2]=0;J[a+8>>2]=b+16;mj(a,74813,17);a=2;break a}b=J[c+8>>2];d=J[a+8>>2];J[d+8>>2]=3;O[d>>3]=b|0;J[a+8>>2]=J[a+8>>2]+16;a=1}Ui=c+16|0;return a|0}function st(a,b,c){var d=0;d=Ui-288|0;Ui=d;if(kj(a,-1)){a:{if((kj(a,-1)|0)!=1){c=kj(a,-1);if((c|0)==-1){c=60960}else{c=J[(c<<2)+257632>>2]}J[d+24>>2]=c;J[d+20>>2]=48314;J[d+16>>2]=b;b=d+32|0;Gj(b,256,26654,d+16|0);J[d>>2]=b;a=fj(a,31902,d);break a}a=ck(a,-1)}c=(a|0)!=0}Ui=d+288|0;return c}function sha(a,b,c,d,e,f,g){a=a|0;b=b|0;c=c|0;d=d|0;e=e|0;f=f|0;g=g|0;var h=0,i=0;h=Ui-16|0;Ui=h;i=J[a+4>>2];b=Fo(b,c);a:{if(b){break a}b=J[a+16>>2];if(b){break a}b=J[i+96>>2]}b=J[b>>2];i=0;i=g?J[g>>2]:i;J[h+12>>2]=b;J[h+8>>2]=c;J[h+4>>2]=a;a=bt(b,d,e,i,f,0,278,h+4|0);Ui=h+16|0;return!a|0}function g2(a){a=a|0;var b=0,c=0,d=0;b=Kk(a,1,J[84570]);c=Kk(a,2,J[84570]);if(!(!b|!c|(J[b>>2]!=J[c>>2]|J[b+4>>2]!=J[c+4>>2]|(J[b+16>>2]!=J[c+16>>2]|J[b+20>>2]!=J[c+20>>2])))){d=J[b+24>>2]==J[c+24>>2]&J[b+28>>2]==J[c+28>>2]}b=J[a+8>>2];J[b+8>>2]=1;J[b>>2]=d;J[a+8>>2]=J[a+8>>2]+16;return 1}function Ow(a,b,c,d){var e=0;uj(a,b);while(1){b=Hk(c,46);if(!b){b=yj(c)+c|0}e=b-c|0;mj(a,c,e);Ll(a,-2);a:{if(!kj(a,-1)){gj(a,-2);Fj(a,0,K[b|0]==46?1:d);mj(a,c,e);uj(a,-2);Kj(a,-4);break a}if((kj(a,-1)|0)==5){break a}gj(a,-3);return c}Rl(a,-2);c=b+1|0;if(K[b|0]==46){continue}break}return 0}function Dda(a){a=a|0;var b=0,c=0,d=0;b=Ui-16|0;Ui=b;d=J[J[a+36>>2]+8>>2];c=-13;a:{if(!d){break a}c=-13;if(dk(J[a+20>>2],J[a+24>>2],J[60794],b+12|0,0)){break a}a=J[b+12>>2];if(J[a+56>>2]){Z(85331,39550,1613,48960);B()}a=Zi[J[79417]](d,a)|0;Uj(J[b+12>>2]);c=a?0:-13}a=c;Ui=b+16|0;return a|0}function zoa(a){a=a|0;var b=0,c=0,d=0;d=Ej(a,1);if(!((d|0)==1&K[927968]!=0)){fj(a,72341,0)}c=Ej(a,2);if(c>>>0>=10){return fj(a,75737,0)|0}if(!(!K[927968]|(d|0)!=1|c>>>0>9)){b=c<<2;H[J[b+287716>>2]]=0;b=J[b+287756>>2]}if(!b){b=J[a+8>>2];J[b+8>>2]=0;J[a+8>>2]=b+16;return 1}xj(a,b);return 1}function vla(a){a=a|0;var b=0,c=0,d=0,e=0,f=0;b=Ui-32|0;Ui=b;d=1;e=pj(b+12|0,a,1,39971,789);c=Mp(a,1,0);J[b+8>>2]=0;a:{if(Mq(c,b+8|0)){J[b+4>>2]=34859;J[b>>2]=34859;d=Jj(e,52803,b);break a}c=J[b+8>>2];f=J[a+8>>2];J[f+8>>2]=3;O[f>>3]=c>>>0;J[a+8>>2]=J[a+8>>2]+16}oj(e);Ui=b+32|0;return d|0}function iO(a,b,c){var d=0,e=0;a:{b:{d=b&65535;e=J[a+36>>2];a=J[a+32>>2];if(d>>>0<(e-a|0)/672>>>0){a=a+P(d,672)|0;if(L[a+648>>1]!=(b>>>16|0)){break b}if(L[a+650>>1]!=(d|0)){break a}N[a+128>>2]=c;return}Z(145396,53895,487,84789);B()}Z(47372,40876,188,69601);B()}Z(5388,40876,189,69601);B()}function fO(a,b,c){var d=0,e=0;a:{b:{d=b&65535;e=J[a+36>>2];a=J[a+32>>2];if(d>>>0<(e-a|0)/672>>>0){a=a+P(d,672)|0;if(L[a+648>>1]!=(b>>>16|0)){break b}if(L[a+650>>1]!=(d|0)){break a}J[a+472>>2]=c;return}Z(145396,53895,487,84789);B()}Z(47372,40876,188,69601);B()}Z(5388,40876,189,69601);B()}function dO(a,b,c){var d=0,e=0;a:{b:{d=b&65535;e=J[a+36>>2];a=J[a+32>>2];if(d>>>0<(e-a|0)/672>>>0){a=a+P(d,672)|0;if(L[a+648>>1]!=(b>>>16|0)){break b}if(L[a+650>>1]!=(d|0)){break a}N[a+132>>2]=c;return}Z(145396,53895,487,84789);B()}Z(47372,40876,188,69601);B()}Z(5388,40876,189,69601);B()}function bO(a,b,c){var d=0,e=0;a:{b:{d=b&65535;e=J[a+36>>2];a=J[a+32>>2];if(d>>>0<(e-a|0)/672>>>0){a=a+P(d,672)|0;if(L[a+648>>1]!=(b>>>16|0)){break b}if(L[a+650>>1]!=(d|0)){break a}J[a+608>>2]=c;return}Z(145396,53895,487,84789);B()}Z(47372,40876,188,69601);B()}Z(5388,40876,189,69601);B()}function _N(a,b,c){var d=0,e=0;a:{b:{d=b&65535;e=J[a+36>>2];a=J[a+32>>2];if(d>>>0<(e-a|0)/672>>>0){a=a+P(d,672)|0;if(L[a+648>>1]!=(b>>>16|0)){break b}if(L[a+650>>1]!=(d|0)){break a}N[a+148>>2]=c;return}Z(145396,53895,487,84789);B()}Z(47372,40876,188,69601);B()}Z(5388,40876,189,69601);B()}function Kla(a){a=a|0;var b=0,c=0,d=0,e=0,f=0;c=Ui-32|0;Ui=c;f=pj(c+12|0,a,0,36839,377);b=qj(a,1,J[79308],3640);d=J[b+8>>2];e=J[b+12>>2];a:{if(!(d|e)){break a}if(xk(J[b+4>>2],d,e)){break a}J[c>>2]=tj(J[b+8>>2],J[b+12>>2]);fj(a,102051,c)}bF(J[b>>2],(ck(a,2)|0)!=0);oj(f);Ui=c+32|0;return 0}function E7(a){a=a|0;var b=0,c=0,d=0,e=0;b=Ui-48|0;Ui=b;if(!K[981744]){H[981744]=1;J[b>>2]=69784;J[b+4>>2]=83271;J[b+8>>2]=62032;J[b+12>>2]=83271;dj(3,95071,129991,b)}d=pj(b+28|0,a,1,41468,57);e=PM();c=J[a+8>>2];J[c+8>>2]=1;J[c>>2]=(e|0)!=0;J[a+8>>2]=J[a+8>>2]+16;oj(d);Ui=b+48|0;return 1}function $N(a,b,c){var d=0,e=0;a:{b:{d=b&65535;e=J[a+36>>2];a=J[a+32>>2];if(d>>>0<(e-a|0)/672>>>0){a=a+P(d,672)|0;if(L[a+648>>1]!=(b>>>16|0)){break b}if(L[a+650>>1]!=(d|0)){break a}N[a+144>>2]=c;return}Z(145396,53895,487,84789);B()}Z(47372,40876,188,69601);B()}Z(5388,40876,189,69601);B()}function iv(a,b){var c=0,d=0;a:{b:{c=b&65535;d=J[a+36>>2];a=J[a+32>>2];if(c>>>0<(d-a|0)/672>>>0){a=a+P(c,672)|0;if(L[a+648>>1]!=(b>>>16|0)){break b}if(L[a+650>>1]!=(c|0)){break a}return J[a+476>>2]&15}Z(145396,53895,487,84789);B()}Z(47372,40876,188,69601);B()}Z(5388,40876,189,69601);B()}function i8(a){a=a|0;var b=0,c=0,d=0,e=0;b=Ui-16|0;Ui=b;d=J[a+8>>2]-J[a+12>>2]>>4;Qj(a,1,b+12|0);c=un(a,2);a:{if(c){Bj(a);e=qj(a,-1,J[219396],139183);gj(a,-2);Pn(e,J[b+12>>2],7,c);break a}fj(a,47972,0)}if(J[a+8>>2]-J[a+12>>2]>>4!=(d|0)){Z(143244,37682,3008,102705);B()}Ui=b+16|0;return 0}function gE(a){var b=0,c=0,d=0;a=J[a>>2];Tj(J[a+3232>>2]);b=-1;a:{b:{c=J[a+3252>>2];d=J[a+3248>>2];if((c|0)!=(d|0)){b=J[a+3244>>2];if(!b){break b}if(c>>>0>=d>>>0){break a}J[a+3252>>2]=c+1;b=J[b+(c<<2)>>2]}Lj(J[a+3232>>2]);return b}Z(49493,54340,151,43112);B()}Z(2701,54340,152,43112);B()}function _W(a,b,c){a=a|0;b=b|0;c=c|0;var d=0,e=0,f=0,g=0;e=Ui-144|0;Ui=e;f=J[a+64>>2];if(!f){f=J[a+60>>2]}d=e+4|0;ww(d);pA(d,J[a+68>>2]+776|0);g=e+112|0;xw(d,g);if(d){Zi[J[66509]](d,0,108)|0}Zi[J[J[a+68>>2]+1116>>2]](f+52|0,48,c?75472:75456,g,32,b,12)|0;Zi[J[66509]](g,0,32)|0;Ui=e+144|0}function ZW(a,b,c){a=a|0;b=b|0;c=c|0;var d=0,e=0,f=0,g=0;e=Ui-272|0;Ui=e;f=J[a+64>>2];if(!f){f=J[a+60>>2]}d=e+8|0;bs(d);mA(d,J[a+68>>2]+888|0);g=e+224|0;Ut(d,g);if(d){Zi[J[66509]](d,0,216)|0}Zi[J[J[a+68>>2]+1116>>2]](f+52|0,48,c?75472:75456,g,48,b,12)|0;Zi[J[66509]](g,0,48)|0;Ui=e+272|0}function Ona(a){a=a|0;var b=0,c=0,d=0,e=0;b=Ui-16|0;Ui=b;c=J[J[a+16>>2]>>2];a=J[a+12>>2];if(a){a=J[a+124>>2]}else{a=0}d=J[a+8>>2]-J[a+12>>2]|0;e=J[c>>2];J[b+12>>2]=0;c=Cy(a,e,1,c,b+12|0);if(d>>4!=J[a+8>>2]-J[a+12>>2]>>4){Z(143244,37648,201,50301);B()}Ui=b+16|0;return((c|0)==-1?-1e3:0)|0}function Jla(a){a=a|0;var b=0,c=0,d=0,e=0,f=0;c=Ui-32|0;Ui=c;f=pj(c+12|0,a,0,36839,261);b=qj(a,1,J[79308],3640);d=J[b+8>>2];e=J[b+12>>2];a:{if(!(d|e)){break a}if(xk(J[b+4>>2],d,e)){break a}J[c>>2]=tj(J[b+8>>2],J[b+12>>2]);fj(a,102051,c)}N[J[b>>2]+136>>2]=wj(a,2);oj(f);Ui=c+32|0;return 0}function Ela(a){a=a|0;var b=0,c=0,d=0,e=0,f=0;c=Ui-32|0;Ui=c;f=pj(c+12|0,a,0,36839,277);b=qj(a,1,J[79308],3640);d=J[b+8>>2];e=J[b+12>>2];a:{if(!(d|e)){break a}if(xk(J[b+4>>2],d,e)){break a}J[c>>2]=tj(J[b+8>>2],J[b+12>>2]);fj(a,102051,c)}N[J[b>>2]+140>>2]=wj(a,2);oj(f);Ui=c+32|0;return 0}function Dla(a){a=a|0;var b=0,c=0,d=0,e=0,f=0;c=Ui-32|0;Ui=c;f=pj(c+12|0,a,0,36839,245);b=qj(a,1,J[79308],3640);d=J[b+8>>2];e=J[b+12>>2];a:{if(!(d|e)){break a}if(xk(J[b+4>>2],d,e)){break a}J[c>>2]=tj(J[b+8>>2],J[b+12>>2]);fj(a,102051,c)}N[J[b>>2]+132>>2]=wj(a,2);oj(f);Ui=c+32|0;return 0}function vo(a){var b=0,c=0,d=0,e=0;b=Az(a,61);if((b|0)==(a|0)){return 0}d=b-a|0;a:{if(K[d+a|0]){break a}b=J[245749];if(!b){break a}c=J[b>>2];if(!c){break a}while(1){b:{if(!$k(a,c,d)){c=J[b>>2]+d|0;if(K[c|0]==61){break b}}c=J[b+4>>2];b=b+4|0;if(c){continue}break a}break}e=c+1|0}return e}function qq(a,b){var c=0,d=0;c=Ui-288|0;Ui=c;xj(a,b);Ck(a,2);a:{if(!kk(a,-1)){d=kj(a,-1);if((d|0)==-1){d=60960}else{d=J[(d<<2)+257632>>2]}J[c+24>>2]=d;J[c+20>>2]=34344;J[c+16>>2]=b;b=c+32|0;Gj(b,256,26654,c+16|0);J[c>>2]=b;b=fj(a,31902,c);break a}b=sl(a,-1)}gj(a,-2);Ui=c+288|0;return b}function pla(a){a=a|0;var b=0,c=0,d=0,e=0;d=Ui-32|0;Ui=d;e=pj(d+12|0,a,1,36705,110);Mn(a,80464,0,d+8|0,0);c=J[d+8>>2];if(H[c+24|0]&1){b=1}else{b=J[c+4>>2];if(!b){b=J[c>>2]}b=(J[b+16>>2]!=J[b+12>>2])<<1}c=J[a+8>>2];J[c+8>>2]=3;O[c>>3]=b|0;J[a+8>>2]=J[a+8>>2]+16;oj(e);Ui=d+32|0;return 1} +function mba(a,b,c,d){a=a|0;b=b|0;c=c|0;d=d|0;var e=0,f=0;e=Ui-16|0;Ui=e;f=nj(12);J[e+12>>2]=0;Na(1,e+12|0);J[f>>2]=ho(a,J[e+12>>2]);a:{if(!(K[J[79491]+220|0]&2)){break a}a=_()|0;if(!a){break a}Cj(a,35021,1776);Z(114101,40535,1776,35021);B()}bP(f,b,c,d);J[f+8>>2]=b;Ui=e+16|0;return f|0}function d4(a){a=a|0;var b=0,c=0,d=0,e=0;c=Ui-368|0;Ui=c;b=qj(a,1,J[84567],0);d=J[b>>2];e=J[b+4>>2];b=c+280|0;J[b+20>>2]=64;J[b+12>>2]=c+304;J[b+16>>2]=0;J[b+4>>2]=2270;J[b>>2]=2271;J[b+8>>2]=b;b=nk(b,d,e);J[c>>2]=53420;J[c+4>>2]=b;b=c+16|0;Gj(b,256,84560,c);xj(a,b);Ui=c+368|0;return 1}function PD(a,b,c,d){a=a|0;b=b|0;c=c|0;d=d|0;var e=0,f=0,g=0;e=J[J[a+148>>2]>>2];f=J[e+60>>2];a=0;e=J[e+64>>2];a:{if(e){while(1){g=P(a,56)+f|0;if((b|0)==J[g+8>>2]&J[g+12>>2]==(c|0)){break a}a=a+1|0;if((e|0)!=(a|0)){continue}break}}a=-1}if((a|0)>=0){J[d>>2]=P(a,56)+f}return(a^-1)>>>31|0}function Hq(){var a=0,b=0,c=0;a=nj(56);J[a+32>>2]=0;J[a+36>>2]=0;J[a>>2]=0;J[a+4>>2]=0;J[a+40>>2]=0;J[a+44>>2]=0;J[a+24>>2]=0;J[a+28>>2]=0;c=a+16|0;b=c;J[b>>2]=0;J[b+4>>2]=0;b=a+8|0;J[b>>2]=0;J[b+4>>2]=0;J[a+36>>2]=-1;lj(4,4,a,b,a+4|0);Us(c,5,8);b=Fx();H[a+52|0]=0;J[a+48>>2]=b;return a}function qda(a){a=a|0;var b=0;a=J[a+8>>2];b=J[a+8>>2]-J[a+12>>2]|0;uk(a,68730,224880);mj(a,82806,3);ej(a,-2,99373);mj(a,84155,4);ej(a,-2,101396);mj(a,50602,1);ej(a,-2,96643);mj(a,83976,2);ej(a,-2,101121);gj(a,-2);if(b>>4!=J[a+8>>2]-J[a+12>>2]>>4){Z(143244,42046,357,33350);B()}return 0}function H5(a){a=a|0;var b=0,c=0;c=J[a+8>>2]-J[a+12>>2]|0;Bj(a);b=qj(a,-1,J[84364],139081);gj(a,-2);if(c>>4!=J[a+8>>2]-J[a+12>>2]>>4){Z(143244,37616,478,51340);B()}c=J[(Zi[J[79381]](J[J[b+304>>2]+2480>>2])|0)+84>>2];b=J[a+8>>2];J[b+8>>2]=3;O[b>>3]=c>>>0;J[a+8>>2]=J[a+8>>2]+16;return 1}function G5(a){a=a|0;var b=0,c=0;c=J[a+8>>2]-J[a+12>>2]|0;Bj(a);b=qj(a,-1,J[84364],139081);gj(a,-2);if(c>>4!=J[a+8>>2]-J[a+12>>2]>>4){Z(143244,37616,478,51340);B()}c=J[(Zi[J[79381]](J[J[b+304>>2]+2480>>2])|0)+80>>2];b=J[a+8>>2];J[b+8>>2]=3;O[b>>3]=c>>>0;J[a+8>>2]=J[a+8>>2]+16;return 1}function BK(a){var b=0,c=0,d=0;a:{b=J[a+4>>2];d=J[a>>2];if((b|0)!=(d|0)){b=(b-d|0)/12|0;d=b>>>0<=1?1:b;b=0;while(1){c=J[a>>2];if((J[a+4>>2]-c|0)/12>>>0<=b>>>0){break a}c=c+P(b,12)|0;cj(J[c>>2]);cj(J[c+4>>2]);b=b+1|0;if((d|0)!=(b|0)){continue}break}}return}Z(145396,53895,487,84789);B()}function yO(a,b){var c=0,d=0;a:{b:{c=b&65535;d=J[a+36>>2];a=J[a+32>>2];if(c>>>0<(d-a|0)/672>>>0){a=a+P(c,672)|0;if(L[a+648>>1]!=(b>>>16|0)){break b}if(L[a+650>>1]!=(c|0)){break a}return J[a+472>>2]}Z(145396,53895,487,84789);B()}Z(47372,40876,188,69601);B()}Z(5388,40876,189,69601);B()}function xO(a,b){var c=0,d=0;a:{b:{c=b&65535;d=J[a+36>>2];a=J[a+32>>2];if(c>>>0<(d-a|0)/672>>>0){a=a+P(c,672)|0;if(L[a+648>>1]!=(b>>>16|0)){break b}if(L[a+650>>1]!=(c|0)){break a}return N[a+132>>2]}Z(145396,53895,487,84789);B()}Z(47372,40876,188,69601);B()}Z(5388,40876,189,69601);B()}function wO(a,b){var c=0,d=0;a:{b:{c=b&65535;d=J[a+36>>2];a=J[a+32>>2];if(c>>>0<(d-a|0)/672>>>0){a=a+P(c,672)|0;if(L[a+648>>1]!=(b>>>16|0)){break b}if(L[a+650>>1]!=(c|0)){break a}return J[a+608>>2]}Z(145396,53895,487,84789);B()}Z(47372,40876,188,69601);B()}Z(5388,40876,189,69601);B()}function rA(a){var b=0,c=0;c=-16896;b=a+8|0;a:{if(J[a+4>>2]!=(Um(b)|0)|M[a+4>>2]>1024){break a}if((Pj(b,0)|0)<=0){break a}if(!Wm(b,0)){break a}a=a+20|0;if((Pj(a,0)|0)<=0){break a}if(Xk(b)>>>0<128){break a}if(!Wm(a,0)){break a}if(Xk(a)>>>0<2){break a}c=(_j(a,b)|0)>=0?-16896:0}return c}function mD(a,b){var c=0,d=0;a:{b:{c=b&65535;d=J[a+36>>2];a=J[a+32>>2];if(c>>>0<(d-a|0)/672>>>0){a=a+P(c,672)|0;if(L[a+648>>1]!=(b>>>16|0)){break b}if(L[a+650>>1]!=(c|0)){break a}return J[a+560>>2]}Z(145396,53895,487,84789);B()}Z(47372,40876,188,69601);B()}Z(5388,40876,189,69601);B()}function kD(a,b){var c=0,d=0;a:{b:{c=b&65535;d=J[a+36>>2];a=J[a+32>>2];if(c>>>0<(d-a|0)/672>>>0){a=a+P(c,672)|0;if(L[a+648>>1]!=(b>>>16|0)){break b}if(L[a+650>>1]!=(c|0)){break a}return N[a+144>>2]}Z(145396,53895,487,84789);B()}Z(47372,40876,188,69601);B()}Z(5388,40876,189,69601);B()}function jD(a,b){var c=0,d=0;a:{b:{c=b&65535;d=J[a+36>>2];a=J[a+32>>2];if(c>>>0<(d-a|0)/672>>>0){a=a+P(c,672)|0;if(L[a+648>>1]!=(b>>>16|0)){break b}if(L[a+650>>1]!=(c|0)){break a}return N[a+148>>2]}Z(145396,53895,487,84789);B()}Z(47372,40876,188,69601);B()}Z(5388,40876,189,69601);B()}function iD(a,b){var c=0,d=0;a:{b:{c=b&65535;d=J[a+36>>2];a=J[a+32>>2];if(c>>>0<(d-a|0)/672>>>0){a=a+P(c,672)|0;if(L[a+648>>1]!=(b>>>16|0)){break b}if(L[a+650>>1]!=(c|0)){break a}return J[a+484>>2]}Z(145396,53895,487,84789);B()}Z(47372,40876,188,69601);B()}Z(5388,40876,189,69601);B()}function hv(a,b){var c=0,d=0;a:{b:{c=b&65535;d=J[a+36>>2];a=J[a+32>>2];if(c>>>0<(d-a|0)/672>>>0){a=a+P(c,672)|0;if(L[a+648>>1]!=(b>>>16|0)){break b}if(L[a+650>>1]!=(c|0)){break a}return J[a+480>>2]}Z(145396,53895,487,84789);B()}Z(47372,40876,188,69601);B()}Z(5388,40876,189,69601);B()}function by(a,b){var c=0,d=0;a:{b:{c=b&65535;d=J[a+36>>2];a=J[a+32>>2];if(c>>>0<(d-a|0)/672>>>0){a=a+P(c,672)|0;if(L[a+648>>1]!=(b>>>16|0)){break b}if(L[a+650>>1]!=(c|0)){break a}return J[a+604>>2]}Z(145396,53895,487,84789);B()}Z(47372,40876,188,69601);B()}Z(5388,40876,189,69601);B()}function Fo(a,b){var c=0,d=0;a:{b:{c=b&65535;d=J[a+36>>2];a=J[a+32>>2];if(c>>>0<(d-a|0)/672>>>0){a=a+P(c,672)|0;if(L[a+648>>1]!=(b>>>16|0)){break b}if(L[a+650>>1]!=(c|0)){break a}return J[a+600>>2]}Z(145396,53895,487,84789);B()}Z(47372,40876,188,69601);B()}Z(5388,40876,189,69601);B()}function EO(a,b){var c=0,d=0;a:{b:{c=b&65535;d=J[a+36>>2];a=J[a+32>>2];if(c>>>0<(d-a|0)/672>>>0){a=a+P(c,672)|0;if(L[a+648>>1]!=(b>>>16|0)){break b}if(L[a+650>>1]!=(c|0)){break a}return J[a+584>>2]}Z(145396,53895,487,84789);B()}Z(47372,40876,188,69601);B()}Z(5388,40876,189,69601);B()}function AO(a,b){var c=0,d=0;a:{b:{c=b&65535;d=J[a+36>>2];a=J[a+32>>2];if(c>>>0<(d-a|0)/672>>>0){a=a+P(c,672)|0;if(L[a+648>>1]!=(b>>>16|0)){break b}if(L[a+650>>1]!=(c|0)){break a}return N[a+128>>2]}Z(145396,53895,487,84789);B()}Z(47372,40876,188,69601);B()}Z(5388,40876,189,69601);B()}function uW(a){a=a|0;var b=0,c=0,d=0;Oj(a,1,5);b=fl(a,1);c=b+1|0;a:{switch((J[a+8>>2]-J[a+12>>2]>>4)-2|0){case 1:d=Ej(a,2);if((b|0)>=(d|0)){while(1){b=c-1|0;Nj(a,1,b);Ik(a,1,c);c=b;if((b|0)>(d|0)){continue}break}}c=d;case 0:Ik(a,1,c);return 0;default:break a}}return fj(a,145820,0)|0}function kda(a,b,c,d,e,f,g){a=a|0;b=b|0;c=c|0;d=d|0;e=e|0;f=f|0;g=g|0;var h=0,i=0;h=Ui-16|0;Ui=h;i=J[a+4>>2];b=Fo(b,c);a:{if(b){break a}b=J[a+16>>2];if(b){break a}b=J[i+96>>2]}b=J[b>>2];g=g?J[g>>2]:0;J[h+12>>2]=b;J[h+8>>2]=c;J[h+4>>2]=a;a=Wp(b,d,e,f,g,277,h+4|0);Ui=h+16|0;return!a|0}function hra(a,b,c,d){a=a|0;b=b|0;c=c|0;d=d|0;var e=0,f=0;a:{c=J[a+260>>2];if((c|0)<=0){break a}f=J[b>>2];d=J[a+268>>2];b=0;while(1){e=(b<<2)+d|0;if(J[e>>2]!=(f|0)){b=b+1|0;if((c|0)!=(b|0)){continue}break a}break}if((b|0)>=(c|0)){break a}b=c-1|0;J[e>>2]=J[(b<<2)+d>>2];J[a+260>>2]=b}}function fY(a){a=a|0;var b=0;uj(a,-10003);Pk(a,1);if(kq(a,(J[a+8>>2]-J[a+12>>2]>>4)-1|0,-1,0)){if((kj(a,-1)|0)==5){b=J[a+8>>2];J[b+8>>2]=3;O[b>>3]=1;J[a+8>>2]=J[a+8>>2]+16;Ck(a,-2);b=J[a+8>>2];J[b+8>>2]=0;J[a+8>>2]=b+16;Pk(a,-2);return 2}lq(a);return 0}return J[a+8>>2]-J[a+12>>2]>>4}function J7(a,b,c,d){a=a|0;b=b|0;c=c|0;d=d|0;var e=0,f=0,g=0;f=Ui-32|0;Ui=f;if(Hm(d)){e=d?J[d>>2]:0;g=pj(f+12|0,e,0,41468,334);a:{if(!ao(d)){dj(4,95071,51495,0);break a}xj(e,a);xj(e,b);a=J[e+8>>2];J[a+8>>2]=3;O[a>>3]=c|0;J[e+8>>2]=J[e+8>>2]+16;Ol(e,4,0,0);xo(d);Fl(d)}oj(g)}Ui=f+32|0}function qfa(a){a=a|0;var b=0,c=0;b=ij(nj(164),0,164);c=ZQ(J[a>>2],J[a+4>>2],J[a+24>>2],b);if(!c){J[J[a+28>>2]+8>>2]=b;J[J[a+28>>2]+16>>2]=(J[b+64>>2]+(J[b+48>>2]+(J[a+16>>2]+J[b+16>>2]|0)|0)-(J[b+56>>2]+(J[b+8>>2]+J[b+40>>2]|0))|0)+164;return c|0}py(J[a>>2],b);cj(KD(b));return c|0}function dwa(a,b,c,d){a=a|0;b=b|0;c=c|0;d=d|0;var e=Q(0),f=Q(0),g=Q(0),h=Q(0),i=Q(0),j=Q(0),k=Q(0);e=N[c>>2];g=N[c+8>>2];h=N[a+24>>2];i=N[c+12>>2];j=N[a+28>>2];k=Q(N[c+4>>2]+Q(Q(g*h)+Q(i*j)));f=N[a+8>>2];N[b+12>>2]=k+f;e=Q(e+Q(Q(i*h)-Q(g*j)));N[b+8>>2]=f+e;N[b+4>>2]=k-f;N[b>>2]=e-f}function ZT(a,b,c){J[a+4>>2]=35;J[a+8>>2]=0;J[a>>2]=246356;J[a+44>>2]=1025758986;J[a+20>>2]=1065353216;J[a+24>>2]=0;J[a+12>>2]=1065353216;J[a+16>>2]=1065353216;J[a>>2]=246264;J[a+52>>2]=1;J[a+4>>2]=10;J[a>>2]=245976;J[a+40>>2]=0;N[a+36>>2]=b;N[a+32>>2]=c*Q(.5);N[a+28>>2]=b;return a}function p4(a){a=a|0;var b=0,c=0,d=0;if(!(J[a+40>>2]|J[a+44>>2])){return-1}c=bl();b=J[a+24>>2];c=lxa(c-b|0,Yi-(J[a+28>>2]+(b>>>0>c>>>0)|0)|0,1e3);b=Yi;d=J[a+44>>2];if((b|0)==(d|0)&M[a+40>>2]<=c>>>0|b>>>0>d>>>0){return 2}d=J[a+36>>2];return(d|0)==(b|0)&M[a+32>>2]<=c>>>0|b>>>0>d>>>0}function ou(a,b){var c=0,d=0;c=Ui-288|0;Ui=c;rj(a,-1,b);a:{if(!kk(a,-1)){d=kj(a,-1);if((d|0)==-1){d=60960}else{d=J[(d<<2)+257632>>2]}J[c+24>>2]=d;J[c+20>>2]=34344;J[c+16>>2]=b;b=c+32|0;Gj(b,256,26654,c+16|0);J[c>>2]=b;b=fj(a,31902,c);break a}b=sl(a,-1)}gj(a,-2);Ui=c+288|0;return b}function dba(a,b,c){a=a|0;b=b|0;c=c|0;var d=0;a:{d=c;c=Zi[J[79383]](a)|0;a=Zi[J[79384]](a)|0;if(d>>>0>=P(c,a)<<2>>>0){tc(0,0,c|0,a|0,32993,5121,b|0);if(K[J[79491]+220|0]&2){a=_()|0;if(a){break a}}return}Z(108813,40535,4617,20819);B()}Cj(a,20819,4622);Z(114101,40535,4622,20819);B()}function KE(a){var b=0;b=J[a>>2];if(b){pw(a,b)}b=J[a+4>>2];if(b){J[83765]=J[83765]+1;Zi[J[61751]](J[b-4>>2])}J[a+4>>2]=0;J[a+8>>2]=-1;b=J[a+32>>2];if(!(b?!b|K[a+36|0]!=1:1)){J[83765]=J[83765]+1;Zi[J[61751]](J[b-4>>2])}H[a+36|0]=1;J[a+16>>2]=0;J[a+32>>2]=0;J[a+24>>2]=0;J[a+28>>2]=0}function In(a,b,c){var d=0;d=Ui-288|0;Ui=d;a:{if(!kj(a,-1)){break a}if(!kk(a,-1)){c=kj(a,-1);if((c|0)==-1){c=60960}else{c=J[(c<<2)+257632>>2]}J[d+24>>2]=c;J[d+20>>2]=34344;J[d+16>>2]=b;b=d+32|0;Gj(b,256,26654,d+16|0);J[d>>2]=b;c=fj(a,31902,d);break a}c=sl(a,-1)}Ui=d+288|0;return c}function GE(a,b){var c=Q(0),d=0,e=Q(0),f=Q(0),g=Q(0);c=N[a+336>>2];if(c!=Q(0)){e=N[b>>2];f=N[b+4>>2];g=N[b+8>>2];J[a+368>>2]=0;c=Q(Q(1)/c);N[a+364>>2]=g*c;N[a+360>>2]=c*f;N[a+356>>2]=c*e}d=J[b+4>>2];J[a+372>>2]=J[b>>2];J[a+376>>2]=d;d=J[b+12>>2];J[a+380>>2]=J[b+8>>2];J[a+384>>2]=d}function BT(a){var b=0;b=J[a>>2];if(b){pw(a,b)}b=J[a+4>>2];if(b){J[83765]=J[83765]+1;Zi[J[61751]](J[b-4>>2])}J[a+4>>2]=0;J[a+8>>2]=-1;b=J[a+32>>2];if(!(b?!b|K[a+36|0]!=1:1)){J[83765]=J[83765]+1;Zi[J[61751]](J[b-4>>2])}J[a+32>>2]=0;H[a+36|0]=1;J[a+24>>2]=0;J[a+28>>2]=0;J[a+16>>2]=0}function Vda(a){a=a|0;var b=0,c=0,d=0,e=0;d=J[a>>2];b=J[J[a+8>>2]+8>>2];a=J[b>>2];if(a){Uj(a)}a=J[b+4>>2];if(a){vj(d,a)}c=J[b+20>>2];if(c){a=0;while(1){e=J[(J[b+16>>2]+(a<<4)|0)+8>>2];if(e){vj(d,e);c=J[b+20>>2]}a=a+1|0;if(c>>>0>a>>>0){continue}break}}cj(J[b+16>>2]);cj(b);return 0}function UL(a,b){var c=0,d=Q(0);c=Yj(52);d=N[a+72>>2];J[c+4>>2]=35;J[c+8>>2]=0;J[c>>2]=246356;J[c+44>>2]=1025758986;J[c+20>>2]=1065353216;J[c+24>>2]=0;J[c+12>>2]=1065353216;J[c+16>>2]=1065353216;J[c>>2]=246264;b=Q(b*d);N[c+44>>2]=b;N[c+28>>2]=b;J[c+4>>2]=8;J[c>>2]=246688;return c}function Jta(a,b,c){a=a|0;b=b|0;c=c|0;Jv(a,b,c);N[b+28>>2]=N[a+28>>2];N[b+32>>2]=N[a+32>>2];N[b+36>>2]=N[a+36>>2];N[b+40>>2]=N[a+40>>2];N[b+12>>2]=N[a+12>>2];N[b+16>>2]=N[a+16>>2];N[b+20>>2]=N[a+20>>2];N[b+24>>2]=N[a+24>>2];N[b+44>>2]=N[a+44>>2];J[b+52>>2]=J[a+52>>2];return 83783}function sw(a,b,c){var d=0,e=0,f=0;e=Ui+-64|0;Ui=e;f=Aj(a,2,0);d=J[b>>2];a:{if(!d){break a}while(1){if(!jj(f,d)){break a}d=J[b+8>>2];b=b+8|0;if(d){continue}break}}d=c;c=J[b+4>>2];if(!c){J[e>>2]=f;c=e+16|0;Un(c,146305,e);Dk(a,2,c);c=J[b+4>>2]}a=Zi[c|0](a,d)|0;Ui=e- -64|0;return a}function W1(a){a=a|0;var b=0,c=0,d=0;b=Ui-16|0;Ui=b;c=Vj(a,1);a:{b:{switch(K[Aj(a,2,0)|0]-120|0){case 0:N[c>>2]=wj(a,3);break a;case 1:N[c+4>>2]=wj(a,3);break a;case 2:N[c+8>>2]=wj(a,3);break a;default:break b}}J[b+4>>2]=108973;J[b>>2]=53139;d=fj(a,114116,b)}Ui=b+16|0;return d|0}function Vaa(a,b,c,d,e){a=a|0;b=b|0;c=c|0;d=d|0;e=e|0;var f=0;a:{if(a){Wc(b|0,c|0,d|0,e|0);if(K[J[79491]+220|0]&2){f=_()|0;if(f){break a}}I[a+144>>1]=L[a+144>>1]&65520|((c?2:0)|(d?4:0)|(e?8:0)|b);return}Z(9196,40535,4696,50699);B()}Cj(f,50699,4698);Z(114101,40535,4698,50699);B()}function MT(a){a=a|0;var b=0;J[a>>2]=246068;b=J[a+64>>2];if(b){KE(b);b=J[a+64>>2];if(b){J[83765]=J[83765]+1;Zi[J[61751]](J[b-4>>2])}}b=J[a+24>>2];if(!(b?!b|K[a+28|0]!=1:1)){J[83765]=J[83765]+1;Zi[J[61751]](J[b-4>>2])}J[a+24>>2]=0;H[a+28|0]=1;J[a+16>>2]=0;J[a+20>>2]=0;return a|0} +function L$(a){a=a|0;var b=0,c=0,d=0;b=Ui-16|0;Ui=b;c=Aj(a,1,0);J[b+8>>2]=0;d=b+12|0;a:{if(Uv(c,d)){c=FG(d,b+8|0);break a}c=EG(c,b+8|0)}b:{if(c){d=J[a+8>>2];J[d+8>>2]=0;J[a+8>>2]=d+16;xj(a,DG(c));break b}xj(a,dB(J[J[J[J[b+8>>2]+16>>2]>>2]>>2]));UI(a,J[b+8>>2])}Ui=b+16|0;return 2}function Px(a,b,c){var d=0,e=0;a:{if(b){d=b&65535;e=J[a+4>>2];a=J[a>>2];if(d>>>0>=e-a>>2>>>0){break a}a=J[a+(d<<2)>>2];if(L[a+80>>1]!=(b>>>16|0)){dj(4,96107,66969,0);return}b=J[c+4>>2];d=J[c>>2];N[a+40>>2]=N[c+8>>2];J[a+32>>2]=d;J[a+36>>2]=b}return}Z(145396,53895,487,84789);B()}function $o(a,b,c){var d=0,e=0;d=L[a+52>>1]+1|0;I[a+52>>1]=d;a:{e=d&65535;b:{if(e>>>0<200){break b}if((e|0)==200){xl(a,6474,0);break b}if((d&65535)>>>0>=225){break a}}if(!Vw(a,b,c)){pI(a,1)}I[a+52>>1]=L[a+52>>1]-1;b=J[a+16>>2];if(M[b+68>>2]>=M[b+64>>2]){Om(a)}return}al(a,5);B()}function xla(a){a=a|0;var b=0,c=0,d=0,e=0;b=Ui-32|0;Ui=b;c=qj(a,1,J[79308],3640);d=J[c+8>>2];e=J[c+12>>2];a:{if(!(d|e)){break a}if(xk(J[c+4>>2],d,e)){break a}J[b+16>>2]=tj(J[c+8>>2],J[c+12>>2]);fj(a,102051,b+16|0)}J[b+4>>2]=J[c>>2];J[b>>2]=3659;ik(a,43723,b);Ui=b+32|0;return 1}function M_(a){a=a|0;var b=0;gj(a,1);Sj(a,0);if(ck(a,1)){a:{if((kj(a,1)|0)==1){Fj(a,0,0);uj(a,-1);b=J[a+8>>2];J[b+8>>2]=1;J[b>>2]=1;J[a+8>>2]=J[a+8>>2]+16;Xj(a,-10003);break a}b:{if(sm(a,1)){Ll(a,-10003);b=ck(a,-1);gj(a,-2);if(b){break b}}Dk(a,1,73650)}sm(a,1)}Mj(a,2)}return 1}function Gaa(a,b){a=a|0;b=b|0;var c=0;a:{if(a){pc(b|0);if(K[J[79491]+220|0]&2){c=_()|0;if(c){break a}}b=b<<21&534773760|(L[a+146>>1]|L[a+148>>1]<<16)&-534773761;I[a+146>>1]=b;I[a+148>>1]=b>>>16;return}Z(9197,40535,4762,50730);B()}Cj(c,50730,4764);Z(114101,40535,4764,50730);B()}function Bqa(a,b,c,d){a=a|0;b=b|0;c=c|0;d=Q(d);var e=0;if(N[a+36>>2]>d){H[a+40|0]=1;e=J[b+4>>2];J[a+4>>2]=J[b>>2];J[a+8>>2]=e;e=J[b+12>>2];J[a+12>>2]=J[b+8>>2];J[a+16>>2]=e;b=J[c+4>>2];J[a+20>>2]=J[c>>2];J[a+24>>2]=b;b=J[c+12>>2];J[a+28>>2]=J[c+8>>2];J[a+32>>2]=b;N[a+36>>2]=d}}function xk(a,b,c){var d=0,e=0;d=J[a>>2];a=J[d+3148>>2];a:{if(!a){break a}a=J[J[d+3144>>2]+(mxa(b,c,a)<<2)>>2];if((a|0)==-1){break a}d=J[d+3152>>2];while(1){a=d+(a<<4)|0;if(J[a>>2]!=(b|0)|J[a+4>>2]!=(c|0)){a=J[a+12>>2];if((a|0)!=-1){continue}break a}break}e=J[a+8>>2]}return e}function rR(a,b,c,d){var e=0,f=0,g=0;f=J[a+4>>2];e=J[a>>2];if(f>>>0>=M[e+4>>2]){Z(12601,39139,270,2838);B()}J[a+4>>2]=f+1;g=J[e+8>>2]+(f<<3)|0;J[g>>2]=b;J[g+4>>2]=c;b=f<<2;J[b+J[e+16>>2]>>2]=6;c=b+J[e+12>>2]|0;b=J[a+16>>2];J[c>>2]=b;H[b+J[e+32>>2]|0]=d;J[a+16>>2]=J[a+16>>2]+1}function jn(a,b){var c=0,d=0;d=Ui-16|0;Ui=d;a:{b:{c=Vj(a,1);if(!c){break b}if(!sm(a,1)){break b}rj(a,-1e4,b);if(!eu(a,-1,-2)){break b}gj(a,-3);break a}c=kj(a,1);if((c|0)==-1){c=60960}else{c=J[(c<<2)+257632>>2]}J[d+4>>2]=c;J[d>>2]=b;Dk(a,1,ik(a,26749,d));c=0}Ui=d+16|0;return c}function et(a){var b=0,c=Q(0),d=Q(0),e=Q(0);b=Ui-32|0;Ui=b;c=N[a+48>>2];N[a+64>>2]=c;d=N[a+52>>2];N[a+68>>2]=d;e=N[a+56>>2];N[a+72>>2]=e;N[b+8>>2]=e;N[b+4>>2]=d;N[b>>2]=c;Kn(b+16|0,b);N[a>>2]=N[b+16>>2];N[a+4>>2]=N[b+20>>2];N[a+8>>2]=N[b+24>>2];N[a+12>>2]=N[b+28>>2];Ui=b+32|0}function RP(a,b){var c=0,d=0;c=J[b+12>>2];if((c|0)!=J[b+16>>2]){while(1){vj(a,J[(d<<2)+c>>2]);d=d+1|0;c=J[b+12>>2];if(d>>>0>2]-c>>2>>>0){continue}break}}J[b+16>>2]=c;a=J[b+8>>2];if(a){Uj(a);J[b+8>>2]=0}a:{if(H[b+24|0]&1){break a}a=J[b+12>>2];if(!a){break a}cj(a)}cj(b)}function J6(a){a=a|0;var b=0,c=0,d=0,e=0;a:{if(J[a+8>>2]!=1){break a}b=J[a+16>>2];c=J[a+20>>2];if((b|0)==(c|0)){break a}e=J[a+4>>2];while(1){d=J[a+12>>2]+P(J[b>>2],48)|0;if(J[d+28>>2]==J[e+1952>>2]){Bo(J[a>>2],J[d+16>>2]);c=J[a+20>>2]}b=b+4|0;if((c|0)!=(b|0)){continue}break}}}function F7(a){a=a|0;var b=0,c=0,d=0;b=Ui-48|0;Ui=b;if(!K[981740]){H[981740]=1;J[b>>2]=69784;J[b+4>>2]=9955;J[b+8>>2]=62032;J[b+12>>2]=9955;dj(3,95071,129991,b)}d=pj(b+28|0,a,1,41468,50);c=J[a+8>>2];J[c+8>>2]=3;O[c>>3]=180895692;J[a+8>>2]=J[a+8>>2]+16;oj(d);Ui=b+48|0;return 1}function Dha(a){a=a|0;var b=0,c=0,d=0,e=0;b=Ui-32|0;Ui=b;e=pj(b+12|0,a,1,36620,88);Mn(a,80474,b+8|0,b+4|0,0);c=J[b+4>>2];if(H[c+24|0]&1){d=1}else{d=J[c+4>>2];if(!d){d=J[c>>2]}d=(J[d>>2]!=0)<<1}c=J[a+8>>2];J[c+8>>2]=3;O[c>>3]=d|0;J[a+8>>2]=J[a+8>>2]+16;oj(e);Ui=b+32|0;return 1}function ol(a,b){var c=0,d=0,e=0;c=Ui-16|0;Ui=c;a:{b:{if(!Hk(82910,H[b|0])){J[245744]=28;break b}e=GV(b);J[c>>2]=438;J[c+4>>2]=0;a=Wa(-100,a|0,e|32768,c|0)|0;if(a>>>0>=4294963201){J[245744]=0-a;a=-1}if((a|0)<0){break a}d=IV(a,b);if(d){break a}Aa(a|0)|0}d=0}Ui=c+16|0;return d}function hZ(a){a=a|0;var b=0,c=0,d=0;b=Tn(a,1042);c=+M[b+36>>2];d=J[a+8>>2];J[d+8>>2]=3;O[d>>3]=c;J[a+8>>2]=J[a+8>>2]+16;c=+M[b+32>>2];d=J[a+8>>2];J[d+8>>2]=3;O[d>>3]=c;J[a+8>>2]=J[a+8>>2]+16;c=Oz()-O[b+24>>3];b=J[a+8>>2];J[b+8>>2]=3;O[b>>3]=c;J[a+8>>2]=J[a+8>>2]+16;return 3}function Qfa(a){a=a|0;var b=0,c=0;b=nj(32);J[b>>2]=0;J[b+4>>2]=0;c=b+24|0;J[c>>2]=0;J[c+4>>2]=0;J[b+16>>2]=0;J[b+20>>2]=0;J[b+8>>2]=0;J[b+12>>2]=0;J[b>>2]=J[a+24>>2];J[J[a+28>>2]+8>>2]=b;J[b+8>>2]=bj(J[a+8>>2]);J[b+12>>2]=Yi;if(NQ(b)){Fr(J[b+4>>2],c);a=0}else{a=-1}return a|0}function lo(a){var b=0,c=0,d=0,e=0;a:{b:{if(a+1>>>0<2){break b}c=a&65535;d=J[216330];if(c>>>0>=M[d+8>>2]){break a}b=J[J[d>>2]+(c<<2)>>2];if(!b|L[J[d+4>>2]+(c<<1)>>1]!=(a>>>16|0)){break b}e=!Wj(J[b>>2]+P(J[b+24>>2],J[b+28>>2])|0,173904,16)}return e}Z(2686,54230,244,5438);B()}function hD(a,b){var c=0,d=0;a:{b:{c=b&65535;d=J[a+36>>2];a=J[a+32>>2];if(c>>>0<(d-a|0)/672>>>0){a=a+P(c,672)|0;if(L[a+648>>1]!=(b>>>16|0)){break b}if(L[a+650>>1]!=(c|0)){break a}return a}Z(145396,53895,487,84789);B()}Z(47372,40876,188,69601);B()}Z(5388,40876,189,69601);B()}function L5(a){a=a|0;var b=0,c=0;c=J[a+8>>2]-J[a+12>>2]|0;Bj(a);b=qj(a,-1,J[84364],139081);gj(a,-2);if(c>>4!=J[a+8>>2]-J[a+12>>2]>>4){Z(143244,37616,478,51340);B()}c=Zi[J[79384]](J[J[b+304>>2]+2480>>2])|0;b=J[a+8>>2];J[b+8>>2]=3;O[b>>3]=c>>>0;J[a+8>>2]=J[a+8>>2]+16;return 1}function I5(a){a=a|0;var b=0,c=0;c=J[a+8>>2]-J[a+12>>2]|0;Bj(a);b=qj(a,-1,J[84364],139081);gj(a,-2);if(c>>4!=J[a+8>>2]-J[a+12>>2]>>4){Z(143244,37616,478,51340);B()}c=Zi[J[79383]](J[J[b+304>>2]+2480>>2])|0;b=J[a+8>>2];J[b+8>>2]=3;O[b>>3]=c>>>0;J[a+8>>2]=J[a+8>>2]+16;return 1}function xm(a,b,c,d){var e=0,f=0,g=0,h=0;f=Ui-16|0;Ui=f;b=bj(b);e=Yi;h=e;g=K[a+196|0];a:{if(g>>>0>=8){a=tj(b,e);J[f+4>>2]=8;J[f>>2]=a;dj(4,89301,142309,f);break a}e=P(g,24)+a|0;H[e+20|0]=d;J[e+16>>2]=6;J[e+12>>2]=c;J[e>>2]=b;J[e+4>>2]=h;J[e+8>>2]=g;H[a+196|0]=g+1}Ui=f+16|0}function mv(a,b){var c=0,d=0;c=J[b+64>>2];d=J[b+68>>2];if((d|0)==2){Zi[J[79448]](c,d);c=J[b>>2];if(c){vj(a,c)}c=J[b+4>>2];if(c){vj(a,c)}c=J[b+8>>2];if(c){vj(a,c)}c=J[b+12>>2];if(c){vj(a,c)}if(J[b+56>>2]|J[b+60>>2]){vj(a,J[b+16>>2])}cj(b);return}Z(88199,38212,122,24481);B()}function mha(a){a=a|0;var b=0,c=0,d=0;b=J[a+8>>2];d=b-J[a+12>>2]|0;c=+J[78500];J[b+8>>2]=3;O[b>>3]=c;J[a+8>>2]=J[a+8>>2]+16;c=+J[78501];b=J[a+8>>2];J[b+8>>2]=3;O[b>>3]=c;J[a+8>>2]=J[a+8>>2]+16;if(((d>>4)+2|0)!=J[a+8>>2]-J[a+12>>2]>>4){Z(143309,37214,281,59591);B()}return 2}function fha(a,b,c,d,e,f,g){a=a|0;b=b|0;c=Q(c);d=d|0;e=Q(e);f=Q(f);g=g|0;var h=0;h=Ui-48|0;Ui=h;a=J[a+4>>2];N[h+44>>2]=f;N[h+40>>2]=e;H[h+36|0]=d;N[h+32>>2]=c;iC(a,b,h+32|0,h+12|0);N[g>>2]=N[h+12>>2];N[g+4>>2]=N[h+16>>2];N[g+8>>2]=N[h+20>>2];N[g+12>>2]=N[h+24>>2];Ui=h+48|0}function cwa(a,b,c){a=a|0;b=b|0;c=Q(c);var d=Q(0),e=0,f=Q(0),g=Q(0);d=N[a+8>>2];c=Q(d*Q(d*Q(c*Q(3.1415927410125732))));N[b>>2]=c;e=J[a+28>>2];J[b+4>>2]=J[a+24>>2];J[b+8>>2]=e;d=c;c=N[a+8>>2];f=Q(Q(c*Q(.5))*c);c=N[a+24>>2];g=Q(c*c);c=N[a+28>>2];N[b+12>>2]=d*Q(f+Q(g+Q(c*c)))}function cK(a){var b=0,c=0;c=Ui-32|0;Ui=c;if(a){b=J[a+124>>2];pj(c+12|0,b,0,37704,970);Nj(b,-1e4,J[a+128>>2]);a:{if((kj(b,-1)|0)!=5){gj(b,-3);a=J[b+8>>2];J[a+8>>2]=0;J[b+8>>2]=a+16;break a}Pk(b,-2);Ck(b,-2);Rl(b,-2)}oj(c+12|0);Ui=c+32|0;return}Z(111232,37704,967,60999);B()}function am(a,b,c){var d=0,e=0,f=0,g=0,h=0;f=bj(b);g=Yi;if(c){b=-7;e=J[a+6160>>2];a:{if(!e){break a}h=a+16|0;a=0;while(1){d=P(a,48)+h|0;if(J[d>>2]!=(f|0)|(g|0)!=J[d+4>>2]){a=a+1|0;if((e|0)!=(a|0)){continue}break a}break}J[c>>2]=d;b=0}return b}Z(64474,42212,1355,53464);B()}function Sta(a,b,c){a=a|0;b=b|0;c=Q(c);var d=Q(0),e=Q(0),f=0;d=N[b>>2];e=N[a+28>>2];a:{if(!(d<=Q(c+e))|!(d>=Q(Q(-e)-c))){break a}d=N[b+4>>2];e=N[a+32>>2];if(!(d<=Q(c+e))|!(d>=Q(Q(-e)-c))){break a}d=N[b+8>>2];e=N[a+36>>2];if(!(d<=Q(c+e))){break a}f=d>=Q(Q(-e)-c)}return f|0}function yfa(a){a=a|0;var b=0,c=0,d=0,e=0;c=Ui-112|0;Ui=c;d=-2;if(!dk(J[a+20>>2],J[a+24>>2],J[62226],c+108|0,0)){b=ij(c,0,104);d=XQ(J[a>>2],J[b+108>>2],b);if(!d){e=J[J[a+36>>2]+8>>2];vj(J[a>>2],J[e>>2]);IP(J[a+16>>2],e,J[b+108>>2],b)}Uj(J[b+108>>2])}Ui=c+112|0;return d|0}function uqa(a,b){a=a|0;b=b|0;var c=0,d=0,e=0;c=1;a:{if(!b|J[b+232>>2]!=2){break a}d=J[a+480>>2];if((d|0)<=0){break a}e=J[a+488>>2];a=0;while(1){c=J[(a<<2)+e>>2];if(!(J[c+20>>2]==(b|0)|J[c+24>>2]==(b|0))){c=1;a=a+1|0;if((d|0)!=(a|0)){continue}break a}break}c=0}return c|0}function pR(a,b,c,d){var e=0,f=0,g=0;f=J[a+4>>2];e=J[a>>2];if(f>>>0>=M[e+4>>2]){Z(12601,39139,270,2838);B()}J[a+4>>2]=f+1;g=J[e+8>>2]+(f<<3)|0;J[g>>2]=b;J[g+4>>2]=c;b=f<<2;J[b+J[e+16>>2]>>2]=0;c=b+J[e+12>>2]|0;b=J[a+8>>2];J[c>>2]=b;N[J[e+24>>2]+(b<<2)>>2]=d;J[a+8>>2]=b+1}function mu(a,b,c){var d=0,e=0;e=Ui-16|0;Ui=e;d=J[b+16>>2]+((J[c+8>>2]&(-1<>2]==4&J[d+16>>2]==(c|0))){d=J[d+28>>2];if(d){continue}break b}break}if((d|0)!=173288){break a}}J[e+8>>2]=4;J[e>>2]=c;d=Rt(a,b,e)}Ui=e+16|0;return d}function Ss(a,b,c){a:{b:{switch(a-1|0){case 0:if(b){$b(196609);return}ac(196609);return;case 2:if(!b){break a}cc();return;case 3:Ca(b|0,0,c|0);return;case 4:Ca(b|0,1,c|0);return;case 5:Ca(b|0,2,c|0);return;case 6:Ca(b|0,3,c|0);return;case 7:break b;default:break a}}Lb()}}function E_(a){a=a|0;var b=0,c=0;c=J[a+8>>2]-J[a+12>>2]>>4;a:{if((kj(a,1)|0)!=4){break a}if(K[Ij(a,1,0)|0]!=35){break a}b=J[a+8>>2];J[b+8>>2]=3;O[b>>3]=c-1|0;J[a+8>>2]=J[a+8>>2]+16;return 1}b=Ej(a,1);b=(b|0)<0?b+c|0:(b|0)<(c|0)?b:c;if((b|0)<=0){Dk(a,1,68148)}return c-b|0}function cY(a,b){a=a|0;b=b|0;var c=0;a:{b:{if(!K[a+6|0]){if(Vw(a,b-16|0,-1)){break a}c=J[a+20>>2];break b}H[a+6|0]=0;c=J[a+20>>2];if(K[J[J[c+4>>2]>>2]+6|0]){b=XA(a,b);c=J[a+20>>2];if(!b){break b}J[a+8>>2]=J[c+8>>2];break b}J[a+12>>2]=J[c>>2]}pI(a,(c-J[a+40>>2]|0)/24|0)}}function cE(a,b,c){var d=0,e=0,f=0;d=J[a+3148>>2];a:{if(!d){break a}d=J[J[a+3144>>2]+(mxa(b,c,d)<<2)>>2];if((d|0)==-1){break a}e=J[a+3152>>2];while(1){a=e+(d<<4)|0;if(J[a>>2]!=(b|0)|J[a+4>>2]!=(c|0)){d=J[a+12>>2];if((d|0)!=-1){continue}break a}break}f=J[a+8>>2]}return f}function hea(a){a=a|0;var b=0,c=0;c=J[a>>2];a=J[J[a+8>>2]+8>>2];b=J[a+16>>2];if(b){Uj(b)}b=J[a+32>>2];if(b){vj(c,b)}b=J[a+20>>2];if(b){vj(c,b)}b=J[a+28>>2];if(b){vj(c,b)}b=J[a+24>>2];if(b){vj(c,b)}a:{if(H[a+12|0]&1){break a}c=J[a>>2];if(!c){break a}cj(c)}cj(a);return 0}function bK(a){var b=0,c=0,d=0,e=0;b=Ui-32|0;Ui=b;pj(b+12|0,a,0,37704,1035);d=J[84546];c=J[a+8>>2];J[c+8>>2]=3;O[c>>3]=d|0;J[a+8>>2]=J[a+8>>2]+16;Ck(a,-10002);a:{switch(kj(a,-1)-2|0){case 0:case 5:e=Vj(a,-1);break;default:break a}}gj(a,-2);oj(b+12|0);Ui=b+32|0;return e}function Yq(a){var b=Q(0),c=0,d=0;c=(C(a),v(2));d=c>>>23&255;if(d>>>0<=149){if(d>>>0<=125){return Q(a*Q(0))}a=Q(R(a));b=Q(Q(Q(a+Q(8388608))+Q(-8388608))-a);a:{if(b>Q(.5)){a=Q(Q(a+b)+Q(-1));break a}a=Q(a+b);if(!(b<=Q(-.5))){break a}a=Q(a+Q(1))}a=(c|0)<0?Q(-a):a}return a}function VA(a){var b=0;b=a;a=lk(a,0,0,76);ss(b,a,9);J[a- -64>>2]=0;J[a+56>>2]=0;J[a+60>>2]=0;J[a+48>>2]=0;J[a+52>>2]=0;J[a+40>>2]=0;J[a+44>>2]=0;J[a+32>>2]=0;J[a+36>>2]=0;J[a+24>>2]=0;J[a+28>>2]=0;J[a+16>>2]=0;J[a+20>>2]=0;J[a+8>>2]=0;J[a+12>>2]=0;J[a+72>>2]=0;return a}function Nfa(a){a=a|0;var b=0,c=0;c=Ui-16|0;Ui=c;b=-2;a:{if(dk(J[a+20>>2],J[a+24>>2],226008,c+12|0,0)){break a}a=J[J[a+36>>2]+8>>2];b=J[a>>2];if(b){Uj(b)}J[a>>2]=0;b=J[a+4>>2];if(b){ot(b)}J[a>>2]=J[c+12>>2];b=-1;if(!NQ(a)){break a}pE(J[a+4>>2]);b=0}Ui=c+16|0;return b|0}function Kr(a){var b=0,c=0,d=0;b=+za()/1e3;a:{if(R(b)<0x8000000000000000){d=~~b>>>0;if(R(b)>=1){c=~~(b>0?T(V(b*2.3283064365386963e-10),4294967295):W((b-+(~~b>>>0>>>0))*2.3283064365386963e-10))>>>0}else{c=0}break a}c=-2147483648}if(a){J[a>>2]=d;J[a+4>>2]=c}Yi=c;return d}function Ap(a,b){a=a|0;b=b|0;var c=0,d=0;b=Ui-16|0;Ui=b;if((kj(a,3)|0)!=1){d=J[64409];c=kj(a,3);if((c|0)==-1){c=60960}else{c=J[(c<<2)+257632>>2]}J[b+4>>2]=c;J[b>>2]=d;Dk(a,3,ik(a,26749,b))}ck(a,3);Ui=b+16|0;b=J[a+8>>2];J[b+8>>2]=0;J[a+8>>2]=b+16;mj(a,74795,17);return 2}function vy(a,b,c){var d=0,e=0,f=0;a:{a=J[J[a+156>>2]+4>>2];d=J[a+8>>2];if(d){f=J[a+4>>2];a=0;while(1){if((a|0)==(d|0)){break a}e=(a<<5)+f|0;if(J[e+16>>2]==(b|0)&(c|0)==J[e+20>>2]){return a}a=a+1|0;if((d|0)!=(a|0)){continue}break}}return-1}Z(12664,55417,190,84789);B()}function laa(a,b,c,d,e){a=a|0;b=b|0;c=c|0;d=d|0;e=e|0;var f=0,g=0;b=Ui-32|0;Ui=b;f=J[J[a+12>>2]>>2];g=pj(b+12|0,f,0,37682,1067);a:{if(!c){break a}if(!Hm(d)){break a}J[b+8>>2]=e;J[b+4>>2]=a;Gu(d,2320,b+4|0)}Nj(f,-1e4,J[a+8>>2]);Fp(f,-1,e);gj(f,-2);Fl(d);oj(g);Ui=b+32|0}function aca(a,b){a=a|0;b=b|0;var c=0;J[a+88>>2]=b;a:{b=J[b+2068>>2];c=J[a+112>>2];a=J[a+108>>2];if(b>>>0>2>>>0){bb(J[a+(b<<2)>>2]);if(K[J[79491]+220|0]&2){a=_()|0;if(a){break a}}return}Z(145396,53895,487,84789);B()}Cj(a,49231,2945);Z(114101,40535,2945,49231);B()}function EV(a){var b=0,c=0,d=0,e=0;b=J[a+40>>2];c=Zi[b|0](a,0,0,K[a|0]&128?J[a+20>>2]==J[a+28>>2]?1:2:1)|0;b=Yi;a:{if((b|0)<0){break a}d=J[a+8>>2];if(d){e=4}else{d=J[a+28>>2];if(!d){break a}e=20}a=J[e+a>>2]-d|0;c=a+c|0;b=(a>>31)+b|0;b=a>>>0>c>>>0?b+1|0:b}Yi=b;return c}function uq(a,b){var c=0,d=0;c=Ui-32|0;Ui=c;pj(c+12|0,a,0,37704,739);uj(a,b);a:{if((kj(a,-1)|0)!=7){break a}if(!sm(a,-1)){break a}b=J[84547];d=J[a+8>>2];J[d+8>>2]=3;O[d>>3]=b|0;J[a+8>>2]=J[a+8>>2]+16;Ll(a,-2);d=sl(a,-1);gj(a,-3)}gj(a,-2);oj(c+12|0);Ui=c+32|0;return d}function doa(a,b){a=a|0;b=b|0;var c=0;c=Ui-16|0;Ui=c;J[c+4>>2]=J[a+4>>2];J[c+8>>2]=J[a+300>>2];J[c+12>>2]=0;J[c>>2]=!b;Py(c+4|0,c);a=Ui-16|0;Ui=a;b=(b|0)!=0;J[a+4>>2]=b;J[a>>2]=313992;J[a+8>>2]=0;J[a+12>>2]=0;BD(a);Ui=a+16|0;a=J[245446];if(a){H[a+33960|0]=b}Ui=c+16|0}function WS(a,b,c,d){var e=0;J[a>>2]=246940;e=J[b+4>>2];J[a+4>>2]=J[b>>2];J[a+8>>2]=e;e=J[b+12>>2];J[a+12>>2]=J[b+8>>2];J[a+16>>2]=e;b=J[c+4>>2];J[a+20>>2]=J[c>>2];J[a+24>>2]=b;b=J[c+12>>2];J[a+28>>2]=J[c+8>>2];J[a+32>>2]=b;J[a+40>>2]=1065353216;J[a+36>>2]=d;return a}function WJ(a,b){var c=0,d=0;c=Ui-544|0;Ui=c;d=Kk(a,b,J[84567]);a:{if(d){b=c+8|0;J[b+20>>2]=256;J[b+12>>2]=c+32;J[b+16>>2]=0;J[b+4>>2]=2270;J[b>>2]=2271;J[b+8>>2]=b;J[c>>2]=nk(b,J[d>>2],J[d+4>>2]);b=c+288|0;Gj(b,256,84564,c);xj(a,b);break a}xj(a,Aj(a,b,0))}Ui=c+544|0}function Nr(a,b,c){var d=0,e=0;d=J[a+4>>2];a=J[d+4>>2];a:{if(!a){break a}a=J[J[d>>2]+(mxa(b,c,a)<<2)>>2];if((a|0)==-1){break a}d=J[d+8>>2];while(1){a=d+(a<<4)|0;if(J[a>>2]!=(b|0)|J[a+4>>2]!=(c|0)){a=J[a+12>>2];if((a|0)!=-1){continue}break a}break}e=J[a+8>>2]}return e}function qr(a,b,c){var d=0,e=0;e=J[a>>2];a=J[e+4>>2];a:{if(!a){break a}a=J[J[e>>2]+(mxa(b,c,a)<<2)>>2];if((a|0)==-1){break a}e=J[e+8>>2];while(1){d=e+P(a,56)|0;if(J[d>>2]==(b|0)&(c|0)==J[d+4>>2]){break a}a=J[d+48>>2];if((a|0)!=-1){continue}break}d=0}return d?d+8|0:0}function kqa(a,b,c,d,e,f,g,h,i,j,k){a=a|0;b=b|0;c=c|0;d=d|0;e=e|0;f=f|0;g=g|0;h=h|0;i=i|0;j=j|0;k=k|0;Xl(36484);Q(Zi[J[J[a>>2]+32>>2]](a,b,c,d,e,f,g,h,i,j));Q(Zi[J[J[a>>2]+36>>2]](a,b,c,d,e,f,g,h,i,j));Q(Zi[J[J[a>>2]+28>>2]](a,b,c,d,e,f,g,h,i,j));Wl();return Q(Q(0))}function Tv(a,b,c){var d=0,e=0,f=0;d=a*a;f=d*(d*d)*(d*1.58969099521155e-10+-2.5050760253406863e-8)+(d*(d*27557313707070068e-22+-.0001984126982985795)+.00833333333332249);e=a*d;if(!c){return e*(d*f+-.16666666666666632)+a}return a-(d*(b*.5-e*f)-b+e*.16666666666666632)}function Ts(a,b){var c=0;a:{b:{c:{switch(b-11|0){case 0:return Pb()|0;case 9:return K[a+88|0];case 10:return L[a+88>>1]>>>11&1;case 11:break b;default:break c}}if(!(H[a+89|0]&1)){break b}if(b-1>>>0>=19){break a}c=Qb(b|131072)|0}return c}Z(114101,37255,395,85805);B()}function Op(a,b,c,d,e,f){var g=0;g=Ui-16|0;Ui=g;J[a+32>>2]=f;J[a+28>>2]=e;J[a+24>>2]=0;J[a+20>>2]=d;J[a+16>>2]=c;J[a+12>>2]=b;c=J[a+8>>2];a:{b:{if(ul(c,46)){a=148216;break b}a=148158;if(!d){break b}b=0;if(e){break a}}J[g>>2]=c;dj(4,96538,a,g);b=-6}Ui=g+16|0;return b}function I7(a,b,c){a=a|0;b=b|0;c=c|0;var d=0,e=0,f=0;e=Ui-32|0;Ui=e;if(Hm(c)){d=c?J[c>>2]:0;f=pj(e+12|0,d,0,41468,206);a:{if(!ao(c)){dj(4,95071,51495,0);break a}xj(d,a);a=J[d+8>>2];J[a+8>>2]=1;J[a>>2]=!b;J[d+8>>2]=J[d+8>>2]+16;Ol(d,3,0,0);xo(c);Fl(c)}oj(f)}Ui=e+32|0}function pp(a,b,c,d){var e=0,f=0,g=0;e=Ui-32|0;Ui=e;a:{if(J[a+16>>2]==(b|0)){tk(a);break a}g=J[a+4>>2];f=J[a+52>>2];b=Cl(a,b);if((d|0)==(g|0)){J[e>>2]=b;qk(a,gk(f,74053,e));break a}c=Cl(a,c);J[e+24>>2]=d;J[e+20>>2]=c;J[e+16>>2]=b;qk(a,gk(f,142142,e+16|0))}Ui=e+32|0}function jW(a,b,c){a=a|0;b=b|0;c=+c;a=(b<<3)+a|0;if(R(c)<0x8000000000000000){J[a>>2]=~~c>>>0;if(R(c)>=1){b=~~(c>0?T(V(c*2.3283064365386963e-10),4294967295):W((c-+(~~c>>>0>>>0))*2.3283064365386963e-10))>>>0}else{b=0}J[a+4>>2]=b;return}J[a>>2]=0;J[a+4>>2]=-2147483648}function Xka(a,b){a=a|0;b=b|0;var c=0,d=0,e=0;e=Ui-80|0;Ui=e;c=-1;if(J[a+16>>2]==J[74814]&J[a+20>>2]==J[74815]){c=b+32|0;b=e+8|0;d=J[J[a+24>>2]>>2];a=J[d+4>>2];if(!a){a=J[d>>2]}d=J[a+4>>2];J[b+8>>2]=J[a>>2];J[b+12>>2]=d;J[b>>2]=1;hj(c,b,72);c=0}Ui=e+80|0;return c|0}function O9(a){a=a|0;var b=0,c=0,d=0,e=0;b=Ui-16|0;Ui=b;d=J[a+8>>2]-J[a+12>>2]|0;e=J[Qj(a,1,b+12|0)+476>>2]>>>23|0;c=J[a+8>>2];J[c+8>>2]=1;J[c>>2]=e&1;J[a+8>>2]=J[a+8>>2]+16;if(((d>>4)+1|0)!=J[a+8>>2]-J[a+12>>2]>>4){Z(143334,37682,4782,84136);B()}Ui=b+16|0;return 1}function Et(a,b){var c=0,d=0,e=0,f=0;c=Ui-16|0;Ui=c;a:{if(!b){b=0;break a}d=b;b=S(b);Mm(c,d,0,0,0,112-(b^31)|0);d=0+J[c+8>>2]|0;b=(J[c+12>>2]^65536)+(16414-b<<16)|0;f=e>>>0>d>>>0?b+1|0:b;e=J[c+4>>2];b=J[c>>2]}J[a>>2]=b;J[a+4>>2]=e;J[a+8>>2]=d;J[a+12>>2]=f;Ui=c+16|0}function B$(a){a=a|0;var b=0,c=0,d=0;c=Ui-16|0;Ui=c;J[jn(a,135350)>>2]=0;d=J[245744];b=J[a+8>>2];J[b+8>>2]=0;J[a+8>>2]=b+16;J[c>>2]=L[((d>>>0<=153?d:0)<<1)+215472>>1]+213556;ik(a,31902,c);b=J[a+8>>2];J[b+8>>2]=3;O[b>>3]=d|0;J[a+8>>2]=J[a+8>>2]+16;Ui=c+16|0;return 3}function tba(a,b){a=a|0;b=b|0;var c=0,d=0,e=0,f=0;a:{if(Hk(b,32)|!K[b|0]){break a}c=J[a+56>>2];a=J[a+60>>2];if((c|0)==(a|0)){break a}a=a-c>>2;e=a>>>0<=1?1:a;a=0;while(1){d=jj(b,J[(a<<2)+c>>2]);f=!d;if(!d){break a}a=a+1|0;if((e|0)!=(a|0)){continue}break}}return f|0}function nW(a){a=a|0;var b=0,c=0,d=0,e=0;Oj(a,1,5);c=fl(a,1);b=Zm(a,2,c);if(!((b|0)<=0|(b|0)>(c|0))){e=1;Nj(a,1,b);if((b|0)<(c|0)){while(1){d=b+1|0;Nj(a,1,d);Ik(a,1,b);b=d;if((c|0)!=(b|0)){continue}break}}d=J[a+8>>2];J[d+8>>2]=0;J[a+8>>2]=d+16;Ik(a,1,c)}return e|0}function iM(a,b){var c=0,d=0;RL(a,J[b>>2]);c=J[b>>2];if(c){d=J[c+192>>2];if(J[d+4>>2]==31){Zi[J[J[d>>2]+4>>2]](d)}a:{if(J[c+232>>2]!=2){break a}d=J[c+472>>2];if(!d){break a}Zi[J[J[d>>2]+4>>2]](d)}a=J[a+84>>2];Zi[J[J[a>>2]+36>>2]](a,c);Zi[J[J[c>>2]+8>>2]](c);cj(b)}}function h4(a){a=a|0;var b=0,c=0,d=0,e=0;b=Ui-48|0;Ui=b;d=J[a+8>>2]-J[a+12>>2]|0;c=qj(a,1,J[84567],0);e=J[c+4>>2];J[b>>2]=J[c>>2];J[b+4>>2]=e;c=b+16|0;Gj(c,17,4605,b);xj(a,c);if(((d>>4)+1|0)!=J[a+8>>2]-J[a+12>>2]>>4){Z(143334,41058,121,5708);B()}Ui=b+48|0;return 1}function f$(a){a=a|0;var b=0,c=0,d=0,e=0;b=Ui-32|0;Ui=b;c=Aj(a,1,0);d=nB(a,c,53064);if(d){e=Hk(c,45);J[b+16>>2]=nq(a,e?e+1|0:c,135027,84320);ik(a,26095,b+16|0);Rl(a,-2);YA(a,d);c=Ij(a,1,0);J[b+8>>2]=Ij(a,-1,0);J[b+4>>2]=d;J[b>>2]=c;fj(a,31859,b)}Ui=b+32|0;return 1}function er(a,b,c){var d=0;a:{b:{c:{d:{d=J[b+8>>2];switch(d-5|0){case 2:break c;case 0:break d;default:break b}}b=J[b>>2]+8|0;break a}b=J[b>>2]+8|0;break a}b=(J[a+16>>2]+(d<<2)|0)+152|0}b=J[b>>2];if(b){a=xI(b,J[(J[a+16>>2]+(c<<2)|0)+188>>2])}else{a=173288}return a}function Q2(a){a=a|0;var b=0,c=0,d=0,e=0,f=0;d=Ui-32|0;Ui=d;e=pj(d+12|0,a,1,39097,460);c=Aj(a,1,0);if(Mk(a,2)){f=Ij(a,2,0)}a:{b:{b=mr(a);if(!b){break b}b=J[b>>2];if(!b){break b}xj(a,nn(b,c,f));break a}c=J[a+8>>2];J[c+8>>2]=0;J[a+8>>2]=c+16}oj(e);Ui=d+32|0;return 1}function Jka(a){a=a|0;var b=0,c=0,d=0,e=0,f=0,g=0;b=J[a+4>>2];d=J[b+4>>2];c=J[b>>2];if((d|0)!=(c|0)){a=0;while(1){e=P(a,144)+c|0;f=J[e+36>>2];if(!(!f|!(K[e+58|0]&2))){g=xR(f)?g:-1e3;c=J[b>>2];d=J[b+4>>2]}a=a+1|0;if(a>>>0<(d-c|0)/144>>>0){continue}break}}return g|0}function Ika(a){a=a|0;var b=0,c=0,d=0,e=0,f=0,g=0;b=J[a+4>>2];d=J[b+4>>2];c=J[b>>2];if((d|0)!=(c|0)){a=0;while(1){e=P(a,144)+c|0;f=J[e+36>>2];if(!(!f|!(K[e+58|0]&2))){g=jR(f)?g:-1e3;c=J[b>>2];d=J[b+4>>2]}a=a+1|0;if(a>>>0<(d-c|0)/144>>>0){continue}break}}return g|0}function Fda(a){a=a|0;var b=0,c=0,d=0,e=0,f=0,g=0;b=Ui-1040|0;Ui=b;f=J[a+8>>2];c=J[a+4>>2];d=J[a+24>>2];e=b+16|0;ij(e,0,1024);c=fP(c,d,e,1024);a:{if(!c){J[b>>2]=f;J[b+4>>2]=e;dj(4,88458,31143,b);Uj(d);g=-13;break a}Uj(d);J[J[a+28>>2]+8>>2]=c}Ui=b+1040|0;return g|0}function y0(a){a=a|0;var b=0,c=0,d=0;b=1;Oj(a,1,5);d=fl(a,1);Oj(a,2,6);if((d|0)>0){while(1){uj(a,2);c=J[a+8>>2];J[c+8>>2]=3;O[c>>3]=b|0;J[a+8>>2]=J[a+8>>2]+16;Nj(a,1,b);Wk(a,2,1);if(kj(a,-1)){return 1}gj(a,-2);c=(b|0)!=(d|0);b=b+1|0;if(c){continue}break}}return 0}function vma(a){a=a|0;var b=0,c=0,d=0,e=0;b=Ui-16|0;Ui=b;c=dn(a,2);a=Is(a,1);N[b>>2]=N[a>>2];N[b+4>>2]=N[a+4>>2];N[b+8>>2]=N[a+8>>2];N[b+12>>2]=N[a+12>>2];d=J[b>>2];e=J[b+4>>2];a=J[b+12>>2];J[c+8>>2]=J[b+8>>2];J[c+12>>2]=a;J[c>>2]=d;J[c+4>>2]=e;Ui=b+16|0;return 0}function awa(a,b,c){a=a|0;b=b|0;c=c|0;var d=Q(0),e=Q(0),f=Q(0),g=Q(0),h=Q(0);d=N[b+12>>2];e=N[a+24>>2];f=N[b+8>>2];g=N[a+28>>2];h=Q(N[c>>2]-Q(N[b>>2]+Q(Q(d*e)-Q(f*g))));d=Q(N[c+4>>2]-Q(N[b+4>>2]+Q(Q(f*e)+Q(d*g))));e=Q(Q(h*h)+Q(d*d));d=N[a+8>>2];return e<=Q(d*d)|0}function ZH(a,b){J[a+48>>2]=0;J[a+52>>2]=K[b|0]|K[b+1|0]<<8|(K[b+2|0]<<16|K[b+3|0]<<24);J[a+56>>2]=K[b+4|0]|K[b+5|0]<<8|(K[b+6|0]<<16|K[b+7|0]<<24);J[a+60>>2]=K[b+8|0]|K[b+9|0]<<8|(K[b+10|0]<<16|K[b+11|0]<<24);Zi[J[66509]](a- -64|0,0,64)|0;J[a+128>>2]=64;return 0}function Wl(){var a=0,b=0,c=0;b=Ui-16|0;Ui=b;a=J[61752];c=J[a+16>>2]-1|0;J[a+16>>2]=c;if(!(!J[a+4>>2]|c)){mo(b);N[a+8>>2]=N[a+8>>2]+Q(Q(J[b+8>>2]+P(J[b>>2]-J[83766]|0,1e6)-(J[83768]+J[a+12>>2])>>>0)/Q(1e3));c=J[a+16>>2]}if(!c){J[61752]=J[J[61752]+20>>2]}Ui=b+16|0}function DJ(a){var b=0,c=0;b=J[J[245446]+16>>2];a:{if(b){Tj(b);c=J[J[245446]+16>>2];if(c){Tj(c);H[a+60|0]=K[a+60|0]&251;As(J[a>>2]);Lj(c);Lj(b);return 0}H[a+60|0]=K[a+60|0]&251;As(J[a>>2]);if(!b){break a}Lj(b);return 0}H[a+60|0]=K[a+60|0]&251;As(J[a>>2])}return 0}function coa(a,b){a=a|0;b=b|0;var c=0;c=Ui-16|0;Ui=c;J[a+456>>2]=bl();J[a+460>>2]=Yi;J[c+4>>2]=J[a+4>>2];J[c+8>>2]=J[a+300>>2];J[c+12>>2]=0;J[c>>2]=b?2:3;Py(c+4|0,c);a=Ui-16|0;Ui=a;J[a>>2]=313992;J[a+8>>2]=0;J[a+12>>2]=0;J[a+4>>2]=b?3:4;BD(a);Ui=a+16|0;Ui=c+16|0}function t5(a){a=a|0;var b=0,c=0,d=0,e=0,f=0,g=0,h=0;b=J[a+8>>2]-J[a+12>>2]|0;Bj(a);c=qj(a,-1,J[84364],139081);gj(a,-2);if(b>>4!=J[a+8>>2]-J[a+12>>2]>>4){Z(143244,37616,478,51340);B()}e=Lx(a,c),f=Yi,g=Ej(a,2),h=Ej(a,3),d=J[79452],Zi[d](e|0,f|0,g|0,h|0);return 0}function mda(a){a=a|0;var b=0;b=J[a+8>>2]-J[a+12>>2]>>4;a:{b:{if(Ej(a,1)-1>>>0>=2){if(J[a+8>>2]-J[a+12>>2]>>4!=(b|0)){break b}return fj(a,127794,0)|0}if(J[a+8>>2]-J[a+12>>2]>>4!=(b|0)){break a}return 0}Z(143244,37214,232,69675);B()}Z(143244,37214,236,69675);B()}function hS(a,b,c){if(AH(a,b,c)){H[c|0]=0;H[c+1|0]=0;H[c+2|0]=0;H[c+3|0]=0;H[c+4|0]=0;H[c+5|0]=0;H[c+6|0]=0;H[c+7|0]=0;H[c+16|0]=0;H[c+17|0]=0;H[c+18|0]=0;H[c+19|0]=0;H[c+8|0]=0;H[c+9|0]=0;H[c+10|0]=0;H[c+11|0]=0;H[c+12|0]=0;H[c+13|0]=0;H[c+14|0]=0;H[c+15|0]=0}}function f3(a){a=a|0;var b=0,c=0,d=0;b=Kk(a,1,J[215722]);c=Kk(a,2,J[215722]);a:{if(!b|!c|(N[b>>2]!=N[c>>2]|N[b+4>>2]!=N[c+4>>2])){break a}if(N[b+8>>2]!=N[c+8>>2]){break a}d=N[b+12>>2]==N[c+12>>2]}b=J[a+8>>2];J[b+8>>2]=1;J[b>>2]=d;J[a+8>>2]=J[a+8>>2]+16;return 1}function dxa(a,b){a=a|0;b=b|0;var c=0,d=0,e=0,f=0;e=J[a>>2];c=e;f=J[c+8>>2];d=J[b>>2];a=J[d+8>>2];b=J[c+12>>2];c=J[d+12>>2];if((f|0)!=(a|0)|(b|0)!=(c|0)){return((b|0)==(c|0)&a>>>0>f>>>0|b>>>0>>0?-1:1)|0}return(J[e+24>>2]&2147483647)-(J[d+24>>2]&2147483647)|0}function _p(a,b,c,d){a:{b:{if((J[b+4>>2]&-268435456)!=805306368){if(J[b+8>>2]){break b}b=J[b+12>>2]+J[a+4>>2]|0;if(M[a+8>>2]>>0){break a}if(!K[a+12|0]){hj(b,c,d)}return}Z(97412,41995,228,36122);B()}Z(112919,41995,229,36122);B()}Z(71515,41995,231,36122);B()}function P1(a){a=a|0;var b=0,c=0,d=0;b=Kk(a,1,J[215721]);c=Kk(a,2,J[215721]);a:{if(!b|!c|(N[b>>2]!=N[c>>2]|N[b+4>>2]!=N[c+4>>2])){break a}if(N[b+8>>2]!=N[c+8>>2]){break a}d=N[b+12>>2]==N[c+12>>2]}b=J[a+8>>2];J[b+8>>2]=1;J[b>>2]=d;J[a+8>>2]=J[a+8>>2]+16;return 1}function nka(a,b){a=a|0;b=b|0;var c=0,d=0,e=0;d=Ui-80|0;Ui=d;c=-1;if(J[75178]==J[a+16>>2]&J[a+20>>2]==J[75179]){c=b+32|0;b=d+8|0;e=J[J[a+24>>2]>>2];a=J[e+4>>2];if(!a){a=J[e>>2]}J[b+8>>2]=bj(J[a+4>>2]);J[b+12>>2]=Yi;J[b>>2]=1;hj(c,b,72);c=0}Ui=d+80|0;return c|0}function dr(a,b){var c=0,d=0,e=0;a:{if((b|0)>8e3){break a}c=J[a+8>>2];if(((c-J[a+12>>2]>>4)+b|0)>8e3){break a}e=1;if((b|0)<=0){break a}d=b<<4;if((d|0)>=(J[a+28>>2]-c|0)){Ml(a,b);c=J[a+8>>2]}b=c+d|0;a=J[a+20>>2];if(b>>>0<=M[a+8>>2]){break a}J[a+8>>2]=b}return e}function aC(a){J[a+20>>2]=0;J[a+24>>2]=0;J[a+16>>2]=7;J[a+8>>2]=0;J[a+12>>2]=0;J[a>>2]=7;J[a+4>>2]=0;H[a+33|0]=255;H[a+34|0]=255;H[a+25|0]=0;H[a+26|0]=0;H[a+27|0]=0;H[a+28|0]=0;H[a+29|0]=0;H[a+30|0]=0;H[a+31|0]=0;H[a+32|0]=0;H[a+35|0]=K[a+35|0]&192|15;return a}function P3(a,b,c,d,e,f){a=a|0;b=b|0;c=c|0;d=Q(d);e=e|0;f=f|0;e=Ui-16|0;Ui=e;a:{if(!Hm(f)){break a}if((b|0)!=2){N[e+12>>2]=d;J[e+8>>2]=c;Gu(f,1761,e+8|0);if((b|0)==1){break a}}if(!Hm(f)){break a}Fl(f);a=qx(a,c&65535);J[(J[a+12>>2]==(c|0)?a:0)+8>>2]=0}Ui=e+16|0}function M$(a){a=a|0;var b=0,c=0,d=0;b=Ui-16|0;Ui=b;c=Aj(a,1,0);J[b+8>>2]=0;d=b+12|0;a:{if(Uv(c,d)){c=FG(d,b+8|0);break a}c=EG(c,b+8|0)}b:{if(c){d=J[a+8>>2];J[d+8>>2]=0;J[a+8>>2]=d+16;xj(a,DG(c));break b}xj(a,J[J[b+8>>2]>>2]);UI(a,J[b+8>>2])}Ui=b+16|0;return 2}function zV(a,b){var c=0,d=0,e=0;d=Ui-16|0;Ui=d;H[d+15|0]=b;c=J[a+16>>2];a:{if(!c){if(hF(a)){break a}c=J[a+16>>2]}e=c;c=J[a+20>>2];if(!((e|0)==(c|0)|J[a+80>>2]==(b&255))){J[a+20>>2]=c+1;H[c|0]=b;break a}if((Zi[J[a+36>>2]](a,d+15|0,1)|0)!=1){break a}}Ui=d+16|0}function wS(){var a=0,b=0,c=0;a=Ui-16|0;Ui=a;a:{if(K[295468]){H[295468]=0;O[a>>3]=N[73868];O[a+8>>3]=N[73869];aa(293139,158969,a|0)|0;break a}b=aa(293196,158860,0)|0;c=aa(293228,158860,0)|0;N[73868]=b|0;H[295468]=1;N[73869]=c|0;aa(292211,158860,0)|0}Ui=a+16|0}function us(a,b,c){var d=0,e=0;a:{if(!b){d=b;break a}while(1){c=c-1|0;e=a;a=lxa(a,b,10);d=Yi;H[c|0]=e-ixa(a,d,10,0)|48;e=b>>>0>9;b=d;if(e){continue}break}}if(a|d){while(1){c=c-1|0;b=(a>>>0)/10|0;H[c|0]=a-P(b,10)|48;d=a>>>0>9;a=b;if(d){continue}break}}return c}function d6(a){a=a|0;var b=0,c=0;c=J[a+8>>2]-J[a+12>>2]>>4;a:{b=qj(a,1,J[84364],139081);if(b){Nj(a,-1e4,J[b+324>>2]);uj(a,2);uj(a,3);Kj(a,-3);gj(a,-2);if(J[a+8>>2]-J[a+12>>2]>>4!=(c|0)){break a}return 0}Z(52640,37616,512,4943);B()}Z(143244,37616,520,4943);B()}function L2(a){a=a|0;var b=0,c=0,d=0;c=Ui-1040|0;Ui=c;b=Aj(a,1,0);d=ix(b,c+16|0);a:{if(d){J[c+4>>2]=d;J[c>>2]=b;a=fj(a,141906,c);break a}d=Aj(a,2,0);b=vo(95710);if(b){ek(c+16|0,b,1024)}b=c+16|0;zl(b,114114,1024);zl(b,d,1024);xj(a,b);a=1}Ui=c+1040|0;return a|0}function Gqa(a,b,c,d){a=a|0;b=b|0;c=c|0;d=Q(d);var e=0;e=J[b+4>>2];J[a+4>>2]=J[b>>2];J[a+8>>2]=e;e=J[b+12>>2];J[a+12>>2]=J[b+8>>2];J[a+16>>2]=e;b=J[c+4>>2];J[a+20>>2]=J[c>>2];J[a+24>>2]=b;b=J[c+12>>2];J[a+28>>2]=J[c+8>>2];J[a+32>>2]=b;H[a+40|0]=1;N[a+36>>2]=d}function gsa(a,b,c){a=a|0;b=b|0;c=c|0;Jv(a,b,c);N[b+28>>2]=N[a+28>>2];N[b+32>>2]=N[a+32>>2];N[b+36>>2]=N[a+36>>2];N[b+40>>2]=N[a+40>>2];N[b+12>>2]=N[a+12>>2];N[b+16>>2]=N[a+16>>2];N[b+20>>2]=N[a+20>>2];N[b+24>>2]=N[a+24>>2];N[b+44>>2]=N[a+44>>2];return 83757}function eW(a,b,c){a=a|0;b=b|0;c=+c;a=(b<<3)+a|0;if(c<0x10000000000000000&c>=0){J[a>>2]=~~c>>>0;if(R(c)>=1){b=~~(c>0?T(V(c*2.3283064365386963e-10),4294967295):W((c-+(~~c>>>0>>>0))*2.3283064365386963e-10))>>>0}else{b=0}J[a+4>>2]=b;return}J[a>>2]=0;J[a+4>>2]=0}function cfa(a){a=a|0;var b=0,c=0,d=0,e=0,f=0,g=0;b=Ui-1040|0;Ui=b;f=J[a+8>>2];c=J[a+4>>2];e=J[a+24>>2];d=b+16|0;ij(d,0,1024);c=gP(c,e,d,1024);a:{if(!c){J[b>>2]=f;J[b+4>>2]=d;dj(4,88458,31184,b);g=-13;break a}J[J[a+28>>2]+8>>2]=c}Uj(e);Ui=b+1040|0;return g|0}function ZR(a,b,c){var d=0,e=0,f=0;d=Ui-16|0;Ui=d;if(!c&b>>>0>=128|c){while(1){H[(d+6|0)+e|0]=b|128;e=e+1|0;f=!c&b>>>0>16383|(c|0)!=0;b=(c&127)<<25|b>>>7;c=c>>>7|0;if(f){continue}break}}c=d+6|0;H[c+e|0]=b;a=Zi[J[a>>2]](J[a+4>>2],c,e+1|0)|0;Ui=d+16|0;return a}function nG(a,b){var c=0,d=0,e=0,f=0;d=K[b|0];if(d){c=J[a+8>>2];e=J[a+4>>2]+(c^-1)|0;while(1){if((e|0)<=0){ql(a,c+1|0);d=K[b+f|0];c=J[a+8>>2];e=J[a+4>>2]+(c^-1)|0}H[J[a>>2]+c|0]=d;c=J[a+8>>2]+1|0;J[a+8>>2]=c;e=e-1|0;f=f+1|0;d=K[f+b|0];if(d){continue}break}}}function fj(a,b,c){var d=0;d=Ui-112|0;Ui=d;J[d+8>>2]=c;a:{b:{c=d+12|0;if(!Zl(a,1,c)){break b}Yo(a,50598,c);c=J[d+32>>2];if((c|0)<=0){break b}J[d+4>>2]=c;J[d>>2]=d+48;ik(a,154295,d);break a}mj(a,158859,0)}jI(a,b,J[d+8>>2]);lm(a,2);a=lq(a);Ui=d+112|0;return a}function aB(a){var b=0,c=0,d=0;a:{if(!a|!J[a+32>>2]){break a}c=J[a+36>>2];if(!c){break a}b=J[a+28>>2];if(!b|J[b>>2]!=(a|0)|J[b+4>>2]-16180>>>0>31){break a}d=J[b+56>>2];if(d){Zi[c|0](J[a+40>>2],d);c=J[a+36>>2];b=J[a+28>>2]}Zi[c|0](J[a+40>>2],b);J[a+28>>2]=0}}function $ca(a){a=a|0;var b=0,c=0,d=0,e=0,f=0;b=Ui-16|0;Ui=b;f=J[a+8>>2]-J[a+12>>2]>>4;c=Tl(a,1);d=Yi;e=MN(c,d);a:{if(e){xj(a,e);break a}J[b>>2]=c;J[b+4>>2]=d;ik(a,8320,b)}if((f+1|0)!=J[a+8>>2]-J[a+12>>2]>>4){Z(143334,42276,401,66039);B()}Ui=b+16|0;return 1}function oB(a,b){var c=0,d=0,e=0;c=Ui-32|0;Ui=c;e=J[a+48>>2];Zn(e,b);tk(a);if(J[a+16>>2]!=285){d=J[a+52>>2];J[c>>2]=Cl(a,285);qk(a,gk(d,74053,c))}d=J[a+24>>2];tk(a);J[c+16>>2]=rs(J[a+48>>2],d);J[c+8>>2]=4;J[c+24>>2]=-1;J[c+28>>2]=-1;vI(e,b,c+8|0);Ui=c+32|0}function dS(a,b){var c=0,d=0,e=0;c=J[74434];a:{if(!c){break a}c=J[J[74433]+(mxa(a,b,c)<<2)>>2];if((c|0)==-1){break a}d=J[74435];while(1){c=(c<<4)+d|0;if(J[c>>2]!=(a|0)|J[c+4>>2]!=(b|0)){c=J[c+12>>2];if((c|0)!=-1){continue}break a}break}e=J[c+8>>2]}return e}function Zba(a,b,c){a=a|0;b=b|0;c=c|0;a:{b=J[b>>2];c=J[a+112>>2];a=J[a+108>>2];if(b>>>0>2>>>0){ba(34962,J[a+(b<<2)>>2]);if(K[J[79491]+220|0]&2){a=_()|0;if(a){break a}}return}Z(145396,53895,487,84789);B()}Cj(a,34976,1901);Z(114101,40535,1901,34976);B()}function Xv(a){return a*(a*(a*(a*(a*(a*3479331075960212e-20+.0007915349942898145)+-.04005553450067941)+.20121253213486293)+-.3255658186224009)+.16666666666666666)/(a*(a*(a*(a*.07703815055590194+-.6882839716054533)+2.0209457602335057)+-2.403394911734414)+1)}function Vp(a,b,c,d,e,f){var g=0,h=0,i=0;h=Ui-16|0;Ui=h;i=K[a+196|0];a:{if(i>>>0>=8){a=tj(b,c);J[h+4>>2]=8;J[h>>2]=a;dj(4,89301,142309,h);break a}g=P(i,24)+a|0;H[g+20|0]=f;J[g+16>>2]=e;J[g+12>>2]=d;J[g>>2]=b;J[g+4>>2]=c;J[g+8>>2]=i;H[a+196|0]=i+1}Ui=h+16|0}function Pr(a,b,c,d){var e=0,f=0;e=Ui-160|0;Ui=e;f=b?a:e+158|0;J[e+148>>2]=f;a=b-1|0;J[e+152>>2]=a>>>0<=b>>>0?a:0;a=ij(e,0,144);J[a+76>>2]=-1;J[a+36>>2]=2812;J[a+80>>2]=-1;J[a+44>>2]=a+159;J[a+84>>2]=a+148;H[f|0]=0;b=Ct(a,c,d,2810,2811);Ui=a+160|0;return b}function Ms(a){var b=0,c=0;b=J[a>>2];c=J[b+8>>2];if(c){b=J[c+1028>>2];if(b){cj(b)}b=J[c+1024>>2];if(b){cj(b)}b=J[c+1032>>2];if(b){vk(b)}cj(c);b=J[a>>2]}a:{b:{if(H[b+20|0]&1){break b}c=J[b+4>>2];if(!c){break b}cj(c);b=J[a>>2];if(!b){break a}}cj(b)}J[a>>2]=0}function $va(a,b,c,d,e){a=a|0;b=b|0;c=c|0;d=d|0;e=e|0;b=J[b+40>>2]+P(P(H[J[b+12>>2]+20|0]&1,c),6)|0;c=I[b+4>>1];a=J[d+40>>2]+P(P(H[J[d+12>>2]+20|0]&1,e),6)|0;if(!(!c|L[a+4>>1]!=(c&65535))){return(c|0)>0|0}return(L[a>>1]&L[b+2>>1])!=0&(L[a+2>>1]&L[b>>1])!=0}function wia(a){a=a|0;var b=0,c=0;b=J[a+8>>2];c=J[b+16>>2];a=J[J[a+16>>2]>>2];if(a>>>0>2]-c>>3>>>0){a=J[(a<<3)+c>>2];c=J[b+4>>2];b=J[b>>2];if(a>>>0<(c-b|0)/240>>>0){a=b+P(a,240)|0;I[a+234>>1]=L[a+234>>1]|128;return 0}}Z(145396,53895,487,84789);B()}function w9(a){a=a|0;var b=0,c=0,d=0,e=0;b=Ui-112|0;Ui=b;d=pj(b+92|0,a,1,37682,4345);c=Qj(a,1,0);Bj(a);e=qj(a,-1,J[219396],139183);gj(a,-2);Xs(e,c,0,b+16|0);N[b+8>>2]=N[b+72>>2];c=J[b+68>>2];J[b>>2]=J[b+64>>2];J[b+4>>2]=c;cl(a,b);oj(d);Ui=b+112|0;return 1}function jva(a,b,c,d,e){a=a|0;b=b|0;c=c|0;d=d|0;e=e|0;b=Hl(e,152);a=cq(b,a,0,c,0);J[a>>2]=247860;a:{b:{if(J[J[J[a+48>>2]+12>>2]+4>>2]==2){if(J[J[J[a+52>>2]+12>>2]+4>>2]!=2){break b}break a}Z(47617,38577,44,16523);B()}Z(47573,38577,45,16523);B()}return b|0}function iwa(a,b,c,d,e){a=a|0;b=b|0;c=c|0;d=d|0;e=e|0;e=Hl(e,152);a=cq(e,a,b,c,d);J[a>>2]=247940;a:{b:{if(J[J[J[a+48>>2]+12>>2]+4>>2]==3){if(J[J[J[a+52>>2]+12>>2]+4>>2]!=2){break b}break a}Z(47818,38381,43,16450);B()}Z(47573,38381,44,16450);B()}return e|0}function Tva(a,b,c,d,e){a=a|0;b=b|0;c=c|0;d=d|0;e=e|0;b=Hl(e,152);a=cq(b,a,0,c,0);J[a>>2]=247920;a:{b:{if(J[J[J[a+48>>2]+12>>2]+4>>2]==1){if(J[J[J[a+52>>2]+12>>2]+4>>2]!=2){break b}break a}Z(68279,38447,41,16475);B()}Z(47573,38447,42,16475);B()}return b|0}function Tta(a,b,c){a=a|0;b=b|0;c=c|0;var d=Q(0),e=Q(0),f=Q(0);d=N[a+32>>2];e=N[a+36>>2];f=N[a+28>>2];J[c+12>>2]=0;a=b&1;N[c>>2]=Q(f*Q(!a>>>0))-Q(f*Q(a>>>0));a=b>>>2&1;N[c+8>>2]=Q(e*Q(!a>>>0))-Q(e*Q(a>>>0));a=b>>>1&1;N[c+4>>2]=Q(d*Q(!a>>>0))-Q(d*Q(a>>>0))}function H7(a,b){a=a|0;b=b|0;var c=0,d=0,e=0,f=0;d=Ui-32|0;Ui=d;if(Hm(b)){c=b?J[b>>2]:0;f=pj(d+12|0,c,0,41468,162);a:{if(!ao(b)){dj(4,95071,51495,0);break a}e=J[c+8>>2];J[e+8>>2]=3;O[e>>3]=a|0;J[c+8>>2]=J[c+8>>2]+16;Ol(c,2,0,0);xo(b);Fl(b)}oj(f)}Ui=d+32|0}function Cva(a,b,c,d,e){a=a|0;b=b|0;c=c|0;d=d|0;e=e|0;d=Hl(e,152);a=cq(d,a,b,c,0);J[a>>2]=247960;a:{b:{if(J[J[J[a+48>>2]+12>>2]+4>>2]==4){if(J[J[J[a+52>>2]+12>>2]+4>>2]!=2){break b}break a}Z(72248,38512,29,16499);B()}Z(47573,38512,30,16499);B()}return d|0}function e8(a){a=a|0;var b=0,c=0,d=0,e=0;b=Ui-16|0;Ui=b;c=J[a+8>>2]-J[a+12>>2]|0;Qj(a,1,b+12|0);d=wj(a,2);Bj(a);e=qj(a,-1,J[219396],139183);gj(a,-2);_N(e,J[b+12>>2],Q(d));if(c>>4!=J[a+8>>2]-J[a+12>>2]>>4){Z(143244,37682,3317,56946);B()}Ui=b+16|0;return 0}function bG(a,b){var c=0,d=0,e=0,f=0;d=Ui-16|0;Ui=d;c=2;e=d+12|0;f=TI(e,b,2);a:{if(!f){c=Sj(a,40);Uq(a,1106,-1);jw(e);J[c>>2]=J[d+12>>2];O[c+16>>3]=-1;O[c+8>>3]=-1;J[c+32>>2]=b;c=1;break a}b=J[a+8>>2];J[b+8>>2]=0;J[a+8>>2]=b+16;xj(a,f)}Ui=d+16|0;return c}function WA(a,b,c){var d=0,e=0,f=0;e=J[a+56>>2];if((e|0)<=0){return 0}f=J[a+24>>2];a=0;while(1){d=P(a,12)+f|0;if(J[d+4>>2]<=(c|0)){a:{if(J[d+8>>2]<=(c|0)){break a}b=b-1|0;if(b){break a}return J[d>>2]+16|0}a=a+1|0;if((e|0)!=(a|0)){continue}}break}return 0}function A8(a){a=a|0;var b=0,c=0,d=0,e=0;b=Ui-16|0;Ui=b;c=J[a+8>>2]-J[a+12>>2]|0;Qj(a,1,b+12|0);d=wj(a,2);Bj(a);e=qj(a,-1,J[219396],139183);gj(a,-2);$N(e,J[b+12>>2],Q(d));if(c>>4!=J[a+8>>2]-J[a+12>>2]>>4){Z(143244,37682,3268,57383);B()}Ui=b+16|0;return 0}function zz(a){var b=0,c=0;b=J[a+72>>2];J[a+72>>2]=b-1|b;if(J[a+20>>2]!=J[a+28>>2]){Zi[J[a+36>>2]](a,0,0)|0}J[a+28>>2]=0;J[a+16>>2]=0;J[a+20>>2]=0;b=J[a>>2];if(b&4){J[a>>2]=b|32;return-1}c=J[a+44>>2]+J[a+48>>2]|0;J[a+8>>2]=c;J[a+4>>2]=c;return b<<27>>31}function s_(a){a=a|0;var b=0;uk(a,53156,258688);b=J[a+8>>2];J[b+8>>2]=3;O[b>>3]=3.141592653589793;J[a+8>>2]=J[a+8>>2]+16;ej(a,-2,52261);b=J[a+8>>2];J[b+8>>2]=3;O[b>>3]=Infinity;J[a+8>>2]=J[a+8>>2]+16;ej(a,-2,68101);rj(a,-1,70822);ej(a,-2,70829);return 1}function ip(a,b){var c=0,d=0,e=0,f=0;d=Ui-16|0;Ui=d;J[d+4>>2]=a;J[d>>2]=158859;Gj(b,1024,26184,d);c=b;e=c;while(1){a=K[e|0];a:{b:{if((a|0)!=47){if(a){break b}H[c|0]=0;Ui=d+16|0;return c-b|0}if((f&255)==47){break a}}H[c|0]=a;c=c+1|0}e=e+1|0;f=a;continue}}function No(a,b,c){var d=0,e=0,f=0,g=0;J[a+112>>2]=b;J[a+116>>2]=c;f=J[a+4>>2];d=J[a+44>>2]-f|0;J[a+120>>2]=d;J[a+124>>2]=d>>31;d=J[a+8>>2];a:{if(!(b|c)){break a}e=d-f|0;g=b>>>0>=e>>>0;e=e>>31;if(g&(e|0)<=(c|0)|(c|0)>(e|0)){break a}d=b+f|0}J[a+104>>2]=d}function tta(a,b){a=a|0;b=b|0;var c=0,d=0,e=0,f=0,g=0,h=0,i=0;c=(e=b,f=Zi[J[J[a>>2]+16>>2]](a)|0,g=1,d=J[J[b>>2]+16>>2],Zi[d](e|0,f|0,g|0)|0);g=b,f=c,e=Zi[J[J[a>>2]+20>>2]](a,J[c+8>>2],b)|0,h=1245859651,i=a,d=J[J[b>>2]+20>>2],Zi[d](g|0,f|0,e|0,h|0,i|0)}function tqa(a,b){a=a|0;b=b|0;var c=0,d=0,e=0,f=0,g=0,h=0,i=0;c=(e=b,f=Zi[J[J[a>>2]+16>>2]](a)|0,g=1,d=J[J[b>>2]+16>>2],Zi[d](e|0,f|0,g|0)|0);g=b,f=c,e=Zi[J[J[a>>2]+20>>2]](a,J[c+8>>2],b)|0,h=1497645650,i=a,d=J[J[b>>2]+20>>2],Zi[d](g|0,f|0,e|0,h|0,i|0)}function nta(a,b){a=a|0;b=b|0;var c=0,d=0,e=0,f=0,g=0,h=0,i=0;c=(e=b,f=Zi[J[J[a>>2]+48>>2]](a)|0,g=1,d=J[J[b>>2]+16>>2],Zi[d](e|0,f|0,g|0)|0);g=b,f=c,e=Zi[J[J[a>>2]+52>>2]](a,J[c+8>>2],b)|0,h=1346455635,i=a,d=J[J[b>>2]+20>>2],Zi[d](g|0,f|0,e|0,h|0,i|0)}function lva(a,b,c,d,e){a=a|0;b=b|0;c=c|0;d=d|0;e=e|0;b=Hl(e,152);a=cq(b,a,0,c,0);J[a>>2]=247820;a:{b:{if(J[J[J[a+48>>2]+12>>2]+4>>2]==2){if(J[J[J[a+52>>2]+12>>2]+4>>2]){break b}break a}Z(47617,38635,41,16540);B()}Z(67008,38635,42,16540);B()}return b|0}function kwa(a,b,c,d,e){a=a|0;b=b|0;c=c|0;d=d|0;e=e|0;e=Hl(e,152);a=cq(e,a,b,c,d);J[a>>2]=247900;a:{b:{if(J[J[J[a+48>>2]+12>>2]+4>>2]==3){if(J[J[J[a+52>>2]+12>>2]+4>>2]){break b}break a}Z(47818,38702,43,16566);B()}Z(67008,38702,44,16566);B()}return e|0}function kl(a,b){var c=0,d=0;c=J[a+4>>2];a:{if(c){d=c<<2;c=J[a+8>>2];break a}c=Zj(1,4);if(!c){return-16}d=J[a+8>>2];if(d){Zi[J[66509]](d,0,0)|0;cj(J[a+8>>2])}J[a+8>>2]=c;J[a+4>>2]=1;d=4}ij(c,0,d);c=b;b=b>>31;J[J[a+8>>2]>>2]=(c^b)-b;J[a>>2]=b|1;return 0}function eJ(a,b){var c=0;c=Ui-112|0;Ui=c;a:{if((kj(a,1)|0)==6){uj(a,1);break a}b:{if(b){b=Zm(a,1,1);break b}b=Ej(a,1)}if((b|0)<0){Dk(a,1,60205)}if(!Zl(a,b,c+12|0)){Dk(a,1,49902)}Yo(a,58591,c+12|0);if(kj(a,-1)){break a}J[c>>2]=b;fj(a,78007,c)}Ui=c+112|0}function e6(a){a=a|0;var b=0,c=0;c=J[a+8>>2]-J[a+12>>2]>>4;a:{b=qj(a,1,J[84364],139081);if(b){Nj(a,-1e4,J[b+324>>2]);uj(a,2);Ck(a,-2);Rl(a,3);if((c+1|0)!=J[a+8>>2]-J[a+12>>2]>>4){break a}return 1}Z(52640,37616,494,5275);B()}Z(143334,37616,502,5275);B()}function bha(a){a=a|0;var b=0,c=0,d=0;d=J[J[a+16>>2]+8>>2];c=J[a>>2];b=J[c+32>>2];if((b|0)!=J[c+36>>2]){a=0;while(1){b=J[(a<<2)+b>>2];if(J[J[b+8>>2]+16>>2]==(d|0)){tr(J[b+8>>2],5,-2,0)}a=a+1|0;b=J[c+32>>2];if(a>>>0>2]-b>>2>>>0){continue}break}}}function Ypa(a,b,c,d){a=a|0;b=b|0;c=c|0;d=d|0;a=J[b>>2];a=Zi[J[J[a>>2]+48>>2]](a,16)|0;J[a>>2]=244932;J[a+4>>2]=J[b>>2];J[a>>2]=244960;J[a+12>>2]=0;H[a+8|0]=0;J[a>>2]=245736;b=J[a+4>>2];b=Zi[J[J[b>>2]+12>>2]](b,c,d)|0;H[a+8|0]=1;J[a+12>>2]=b;return a|0}function Vva(a,b,c,d,e){a=a|0;b=b|0;c=c|0;d=d|0;e=e|0;b=Hl(e,152);a=cq(b,a,0,c,0);J[a>>2]=247880;a:{b:{if(J[J[J[a+48>>2]+12>>2]+4>>2]==1){if(J[J[J[a+52>>2]+12>>2]+4>>2]){break b}break a}Z(68279,38767,41,16590);B()}Z(67008,38767,42,16590);B()}return b|0}function S9(a){a=a|0;var b=0,c=0,d=0;b=Ui-16|0;Ui=b;c=J[a+8>>2]-J[a+12>>2]|0;Bj(a);d=qj(a,-1,J[219396],139183);gj(a,-2);Qj(a,1,b+12|0);Bk(a,BO(d,J[b+12>>2]),Yi);if(((c>>4)+1|0)!=J[a+8>>2]-J[a+12>>2]>>4){Z(143334,37682,2396,12728);B()}Ui=b+16|0;return 1}function Pl(a,b){var c=0,d=0,e=Q(0),f=Q(0),g=Q(0);c=Ui-32|0;Ui=c;d=qj(a,b,J[215720],0);f=N[d+4>>2];g=N[d>>2];a:{if(!(g!=g|f!=f)){e=N[d+8>>2];if(e==e){break a}}e=N[d+8>>2];O[c+16>>3]=f;O[c+24>>3]=e;O[c+8>>3]=g;J[c>>2]=b;fj(a,138436,c)}Ui=c+32|0;return d}function Eva(a,b,c,d,e){a=a|0;b=b|0;c=c|0;d=d|0;e=e|0;d=Hl(e,152);a=cq(d,a,b,c,0);J[a>>2]=247980;a:{b:{if(J[J[J[a+48>>2]+12>>2]+4>>2]==4){if(J[J[J[a+52>>2]+12>>2]+4>>2]){break b}break a}Z(72248,38831,29,16613);B()}Z(67008,38831,30,16613);B()}return d|0}function Cfa(a){a=a|0;var b=0,c=0,d=0,e=0,f=0;b=Ui-176|0;Ui=b;d=J[J[a+36>>2]+8>>2];HQ(b);b=ij(b,0,176);c=J[a+4>>2];e=SQ(c,J[a>>2],J[a+20>>2],J[a+24>>2],b,J[a+16>>2]);a=J[a>>2];a:{if(e){ny(c,a,d);hj(d,b,172);break a}ny(c,a,b);f=-13}Ui=b+176|0;return f|0}function Bta(a,b){a=a|0;b=b|0;var c=0;a:{if(!b){break a}a=J[a+192>>2];c=J[a+16>>2];if(c>>>0>b>>>0|P(J[a>>2],J[a+4>>2])+c>>>0<=b>>>0){break a}J[b>>2]=J[a+12>>2];J[a+12>>2]=b;J[a+8>>2]=J[a+8>>2]+1;return}if(b){J[83765]=J[83765]+1;Zi[J[61751]](J[b-4>>2])}}function B2(a){a=a|0;var b=0,c=0;b=1;c=J[a+8>>2]-J[a+12>>2]>>4;Oj(a,1,6);rj(a,-10002,55914);a:{if((kj(a,-1)|0)!=5){gj(a,-2);break a}uj(a,1);ej(a,-2,34141);gj(a,-2);b=0;if(J[a+8>>2]-J[a+12>>2]>>4==(c|0)){break a}Z(143244,39097,1091,34157);B()}return b|0}function PK(a,b){var c=0,d=0,e=0;c=Ui+-64|0;Ui=c;d=J[39782]>>>3|0;a:{b:{if(d<<1>>>0>=41){dj(4,96538,9991,0);break b}e=J[J[a+8>>2]+12>>2];a=c+16|0;Os(e,d,a,41);d=0;if(!ix(a,b)){break a}J[c+4>>2]=0;J[c>>2]=a;dj(4,96538,52499,c)}d=-9}Ui=c- -64|0;return d}function Mq(a,b){var c=0,d=0,e=0,f=0;e=3;a:{b:{if(a+1>>>0<2){break b}c=a&65535;d=J[216330];if(c>>>0>=M[d+8>>2]){break a}f=J[J[d>>2]+(c<<2)>>2];if(!f|L[J[d+4>>2]+(c<<1)>>1]!=(a>>>16|0)){break b}J[b>>2]=J[f+28>>2];e=0}return e}Z(2686,54230,244,5438);B()}function Fta(a,b){a=a|0;b=b|0;var c=0,d=0,e=0,f=0;if(J[b+1116>>2]>0){f=b+4|0;a=0;while(1){c=P(a,276)+f|0;d=J[c+108>>2];a:{if(!d){break a}e=J[83761];if(!e){break a}Zi[e|0](d)|0;J[c+108>>2]=0}a=a+1|0;if((a|0)>2]){continue}break}}J[b+1116>>2]=0}function uoa(a){a=a|0;var b=0,c=0,d=0;b=Ui-32|0;Ui=b;c=Ej(a,1);d=Aj(a,2,0);a:{if(c>>>0>=32){J[b>>2]=32;a=fj(a,77532,b);break a}if(yj(d)>>>0>=256){J[b+16>>2]=255;dj(3,93475,78115,b+16|0)}if(c>>>0<=31){ek((c<<8)+878040|0,d,256)}a=0}Ui=b+32|0;return a|0}function uja(a){a=a|0;var b=0,c=0;b=J[a+8>>2];c=J[b+20>>2];a=J[J[a+16>>2]>>2];if(a>>>0>2]-c>>3>>>0){a=J[(a<<3)+c>>2];c=J[b+8>>2];b=J[b+4>>2];if(a>>>0>2>>>0){a=J[b+(a<<2)>>2];H[a+204|0]=K[a+204|0]|2;return 0}}Z(145396,53895,487,84789);B()}function uY(a,b){a=a|0;b=b|0;if((kj(a,3)|0)!=5){Yk(a,3,J[64413])}mj(a,47708,2);Ck(a,3);if((kj(a,-1)|0)!=1){Dk(a,3,73957)}ck(a,-1);mj(a,9580,7);Ck(a,3);if(!kk(a,-1)){Dk(a,3,73891)}ok(a,-1);b=J[a+8>>2];J[b+8>>2]=0;J[a+8>>2]=b+16;mj(a,74795,17);return 2}function rE(a,b){var c=0,d=0,e=0,f=0;e=3;a:{b:{if(a+1>>>0<2){break b}c=a&65535;d=J[216330];if(c>>>0>=M[d+8>>2]){break a}f=J[J[d>>2]+(c<<2)>>2];if(!f|L[J[d+4>>2]+(c<<1)>>1]!=(a>>>16|0)){break b}J[b>>2]=K[f+34|0];e=0}return e}Z(2686,54230,244,5438);B()}function gwa(a,b,c,d,e){a=a|0;b=b|0;c=c|0;d=d|0;e=e|0;b=Hl(e,152);a=cq(b,a,0,c,0);J[a>>2]=247840;a:{b:{if(!J[J[J[a+48>>2]+12>>2]+4>>2]){if(J[J[J[a+52>>2]+12>>2]+4>>2]){break b}break a}Z(67051,38895,44,16636);B()}Z(67008,38895,45,16636);B()}return b|0}function cka(a){a=a|0;var b=0,c=0;b=Ui-16|0;Ui=b;a=J[J[a+16>>2]>>2];c=tr(J[a+8>>2],0,-2,0);a:{if(c){a=c+10|0;if(a>>>0>10){a=102253}else{a=J[(a<<2)+286536>>2]}J[b>>2]=a;dj(4,88458,118641,b);a=-1e3;break a}H[a+22|0]=K[a+22|0]|4;a=0}Ui=b+16|0;return a|0}function Waa(a,b,c){a=a|0;b=b|0;c=c|0;var d=0;a:{if(a){$c(J[(b<<2)+161088>>2],J[(c<<2)+161088>>2]);if(K[J[79491]+220|0]&2){d=_()|0;if(d){break a}}H[a+152|0]=b&15|c<<4;return}Z(9196,40535,4659,82116);B()}Cj(d,82116,4686);Z(114101,40535,4686,82116);B()}function MZ(a){a=a|0;var b=0,c=0,d=0;Oj(a,1,5);b=J[a+8>>2];J[b+8>>2]=0;J[a+8>>2]=b+16;if($j(a,1)){while(1){gj(a,-2);if((kj(a,-1)|0)==3){d=ok(a,-1);c=c>2];J[b+8>>2]=3;O[b>>3]=c;J[a+8>>2]=J[a+8>>2]+16;return 1}function Ina(a){a=a|0;var b=0,c=0,d=0,e=0;if(!J[a+12>>2]){return-1e3}d=J[a+8>>2];e=J[a+16>>2];b=nj(20);J[b>>2]=0;J[b+4>>2]=0;J[b+16>>2]=0;c=b+8|0;J[c>>2]=0;J[c+4>>2]=0;lj(d>>>0>e>>>0?e:d,4,b,c,b+4|0);J[b+16>>2]=CB(J[a>>2]);J[J[a+12>>2]>>2]=b;return 0}function yD(a){var b=0,c=0;a:{b:{if(a>>>0>=33){break b}b=a&31;if((a&63)>>>0>=32){b=1>>>b|0}else{b=((1<>>b}if(!(b&1)){break b}c=J[(a<<2)+160612>>2];break a}if((a|0)==16|a-33>>>0<13){break a}Z(151695,39550,671,49807);B()}return c}function mL(a,b){var c=0,d=0;c=J[a+92>>2];a:{if(!c){break a}c=J[J[a+88>>2]+((b>>>0)%(c>>>0)<<2)>>2];if((c|0)==-1){break a}a=J[a+96>>2];while(1){c=a+P(c,12)|0;if(J[c>>2]!=(b|0)){c=J[c+8>>2];if((c|0)!=-1){continue}break a}break}d=J[c+4>>2]!=0}return d}function bC(a,b,c){var d=0,e=0;a:{b:{if(b+1>>>0<2){break b}d=b&65535;if(d>>>0>=M[a+2272>>2]){break a}e=J[J[a+2264>>2]+(d<<2)>>2];if(!e|L[J[a+2268>>2]+(d<<1)>>1]!=(b>>>16|0)){break b}H[e+320|0]=K[e+320|0]&251|(c?4:0)}return}Z(2686,54166,244,5438);B()}function _s(a,b,c){var d=0,e=0,f=0;e=Ui-32|0;Ui=e;a:{if(!Hm(a)){dj(4,88458,126969,0);break a}d=a?J[a>>2]:0;f=pj(e+12|0,d,0,39481,1735);b:{if(!ao(a)){dj(4,88458,51636,0);break b}Bk(d,J[b+8>>2],J[b+12>>2]);mx(d,b,c,0);Ol(d,3,0,0);xo(a)}oj(f)}Ui=e+32|0}function _qa(a,b,c){a=a|0;b=b|0;c=c|0;var d=0,e=0;if(J[a+8>>2]>0){while(1){e=J[a+16>>2]+(d<<4)|0;a:{if(Zi[J[J[b>>2]+8>>2]](b,e)|0){Zi[J[J[a>>2]+12>>2]](a,J[e>>2],J[e+4>>2],c)|0;J[83475]=J[83475]-1;break a}d=d+1|0}if(J[a+8>>2]>(d|0)){continue}break}}}function eja(a){a=a|0;var b=0,c=0;b=J[a+8>>2];c=J[b+16>>2];a=J[J[a+16>>2]>>2];if(a>>>0>2]-c>>3>>>0){a=J[(a<<3)+c>>2];c=J[b+4>>2];b=J[b>>2];if(a>>>0>2>>>0){a=J[b+(a<<2)>>2];H[a+262|0]=K[a+262|0]|4;return 0}}Z(145396,53895,487,84789);B()}function wm(a,b){var c=0,d=0;c=Sj(a,32);d=J[b+28>>2];J[c+24>>2]=J[b+24>>2];J[c+28>>2]=d;d=J[b+20>>2];J[c+16>>2]=J[b+16>>2];J[c+20>>2]=d;d=J[b+12>>2];J[c+8>>2]=J[b+8>>2];J[c+12>>2]=d;d=J[b+4>>2];J[c>>2]=J[b>>2];J[c+4>>2]=d;rj(a,-1e4,49412);Mj(a,-2)}function kP(a,b){var c=0,d=0;a:{if(!b){break a}c=b&7;if(b>>>0>=8){d=b&248;b=0;while(1){a=(a&65280)>>>8|0;b=b+8|0;if((d|0)!=(b|0)){continue}break}}if(!c){break a}b=0;while(1){a=(a&65534)>>>1|0;b=b+1|0;if((c|0)!=(b|0)){continue}break}}return a&65535}function eqa(a,b){a=a|0;b=b|0;var c=0,d=Q(0);c=J[a+184>>2];d=N[c+4>>2];a:{if(d==Q(0)){break a}b=J[b>>2];if(!(Zi[J[J[c>>2]+8>>2]](c,J[b+188>>2])|0)){break a}UT(J[a+192>>2],a+36|0,a+100|0,b,J[b+192>>2],b+4|0,J[a+184>>2],N[a+188>>2])}return d!=Q(0)|0}function cJ(a){var b=0,c=0,d=0,e=0,f=0;d=J[a>>2];b=H[d|0]-48|0;if(b>>>0>9){return 0}while(1){e=-1;if(c>>>0<=214748364){c=P(c,10);e=(c^2147483647)>>>0>>0?-1:c+b|0}b=d+1|0;J[a>>2]=b;f=H[d+1|0];c=e;d=b;b=f-48|0;if(b>>>0<10){continue}break}return c}function D_(a){a=a|0;var b=0;Oj(a,2,5);eJ(a,0);uj(a,2);a:{if(!kk(a,1)){break a}if(ok(a,1)!=0){break a}b=J[a+8>>2];J[b+8>>2]=8;J[b>>2]=a;J[a+8>>2]=J[a+8>>2]+16;Pk(a,-2);jq(a,-2);return 0}b:{if(!cr(a,-2)){if(jq(a,-2)){break b}}fj(a,16330,0)}return 1}function zt(a,b,c){var d=Q(0),e=Q(0),f=Q(0),g=Q(0),h=Q(0),i=Q(0),j=Q(0);e=N[b>>2];g=N[b+16>>2];h=N[b+12>>2];f=N[b+4>>2];d=Q(Q(e*g)-Q(h*f));d=d!=Q(0)?Q(Q(1)/d):d;i=e;e=N[c+4>>2];j=f;f=N[c>>2];N[a+4>>2]=d*Q(Q(i*e)-Q(j*f));N[a>>2]=d*Q(Q(g*f)-Q(h*e))}function zba(a,b){a=a|0;b=b|0;var c=0;a:{if(b>>>0<2097152){b=a&65535;c=J[79491];if(b>>>0>=M[c+100>>2]){break a}return L[(L[J[c+96>>2]+(b<<1)>>1]==(a>>>16|0)?J[J[c+92>>2]+(b<<2)>>2]:0)+66>>1]}Z(94863,55553,306,33926);B()}Z(2686,54166,244,5438);B()}function yV(a){var b=0,c=0,d=0,e=0,f=0,g=0;c=Ui-16|0;Ui=c;nF(0,c);b=J[c+8>>2];f=J[c>>2];g=J[245829];e=J[248694];J[248694]=e+1;b=((b+f|0)+P(g,65537)|0)+e|0;while(1){H[a+d|0]=(b&15|b<<1&32)+65;b=b>>>5|0;d=d+1|0;if((d|0)!=6){continue}break}Ui=c+16|0}function xea(a){a=a|0;var b=0,c=0,d=0,e=0;d=J[J[a+36>>2]+8>>2];HD(J[a>>2],d);c=J[a+20>>2];e=J[a+24>>2];b=Ui-16|0;Ui=b;J[b+12>>2]=0;c=dk(c,e,J[65352],b+12|0,0);if(!c){vM(d,J[b+12>>2])}Ui=b+16|0;if(c){a=-1}else{a=VQ(J[a>>2],d,J[a+16>>2])}return a|0}function vL(a,b){var c=0,d=0;c=J[a+92>>2];a:{if(!c){break a}c=J[J[a+88>>2]+((b>>>0)%(c>>>0)<<2)>>2];if((c|0)==-1){break a}a=J[a+96>>2];while(1){c=a+P(c,12)|0;if(J[c>>2]!=(b|0)){c=J[c+8>>2];if((c|0)!=-1){continue}break a}break}d=J[c+4>>2]}return d}function mK(a,b,c,d){var e=0,f=0,g=0,h=0;e=Ui-16|0;Ui=e;g=J[a+8>>2]-J[a+12>>2]>>4;f=J[b+16>>2];if(f>>>0>d>>>0){h=J[b+4>>2];J[e+4>>2]=d;J[e>>2]=h;fj(a,78601,e)}J[e+12>>2]=c+f;J[e+8>>2]=c+d;eK(a,b,c,e+12|0,e+8|0,g,c);Ui=e+16|0;return J[e+12>>2]-c|0}function kB(a,b){var c=0,d=0,e=0;A(+a);d=v(1)|0;e=v(0)|0;c=d>>>20&2047;if((c|0)!=2047){if(!c){if(a==0){c=0}else{a=kB(a*0x10000000000000000,b);c=J[b>>2]+-64|0}J[b>>2]=c;return a}J[b>>2]=c-1022;x(0,e|0);x(1,d&-2146435073|1071644672);a=+z()}return a}function Pja(a){a=a|0;var b=0,c=0;b=J[a+8>>2];c=J[b+16>>2];a=J[J[a+16>>2]>>2];if(a>>>0>2]-c>>3>>>0){a=J[(a<<3)+c>>2];c=J[b+4>>2];b=J[b>>2];if(a>>>0>8>>>0){a=b+(a<<8)|0;I[a+246>>1]=L[a+246>>1]|2;return 0}}Z(145396,53895,487,84789);B()}function Oba(a,b){a=a|0;b=b|0;var c=0;a:{if(b>>>0<2097152){b=a&65535;c=J[79491];if(b>>>0>=M[c+100>>2]){break a}return L[(L[J[c+96>>2]+(b<<1)>>1]==(a>>>16|0)?J[J[c+92>>2]+(b<<2)>>2]:0)+74>>1]}Z(94863,55553,306,33926);B()}Z(2686,54166,244,5438);B()}function Nba(a,b){a=a|0;b=b|0;var c=0;a:{if(b>>>0<2097152){b=a&65535;c=J[79491];if(b>>>0>=M[c+100>>2]){break a}return L[(L[J[c+96>>2]+(b<<1)>>1]==(a>>>16|0)?J[J[c+92>>2]+(b<<2)>>2]:0)+72>>1]}Z(94863,55553,306,33926);B()}Z(2686,54166,244,5438);B()}function Hba(a,b){a=a|0;b=b|0;var c=0;a:{if(b>>>0<2097152){b=a&65535;c=J[79491];if(b>>>0>=M[c+100>>2]){break a}return L[(L[J[c+96>>2]+(b<<1)>>1]==(a>>>16|0)?J[J[c+92>>2]+(b<<2)>>2]:0)+70>>1]}Z(94863,55553,306,33926);B()}Z(2686,54166,244,5438);B()}function Fra(a){a=a|0;var b=0,c=0;if(J[a+204>>2]>0){while(1){b=J[J[a+212>>2]+(c<<2)>>2];J[b+404>>2]=0;J[b+408>>2]=0;J[b+428>>2]=0;J[b+432>>2]=0;J[b+420>>2]=0;J[b+424>>2]=0;J[b+412>>2]=0;J[b+416>>2]=0;c=c+1|0;if((c|0)>2]){continue}break}}}function Fba(a,b){a=a|0;b=b|0;var c=0;a:{if(b>>>0<2097152){b=a&65535;c=J[79491];if(b>>>0>=M[c+100>>2]){break a}return L[(L[J[c+96>>2]+(b<<1)>>1]==(a>>>16|0)?J[J[c+92>>2]+(b<<2)>>2]:0)+68>>1]}Z(94863,55553,306,33926);B()}Z(2686,54166,244,5438);B()}function Bba(a,b){a=a|0;b=b|0;var c=0;a:{if(b>>>0<2097152){b=a&65535;c=J[79491];if(b>>>0>=M[c+100>>2]){break a}return J[(L[J[c+96>>2]+(b<<1)>>1]==(a>>>16|0)?J[J[c+92>>2]+(b<<2)>>2]:0)+48>>2]}Z(94863,55553,306,33926);B()}Z(2686,54166,244,5438);B()}function jia(a,b,c,d,e,f){a=a|0;b=b|0;c=c|0;d=d|0;e=e|0;f=f|0;var g=0,h=0,i=0;h=J[a+156>>2];if(!h){h=Hq();J[a+156>>2]=h}i=J[a+148>>2];g=J[a+152>>2];a:{if(g){g=J[g>>2];if(g){break a}}g=J[i+4>>2]}xr(h,J[g>>2],b,c,d,e,f);I[a+234>>1]=L[a+234>>1]|256}function aia(a){a=a|0;var b=0,c=0,d=0,e=0,f=0;f=J[J[a+1040>>2]+32>>2];b=J[a+1052>>2];d=b;c=J[a+1048>>2];e=c+1|0;b=e?b:b+1|0;J[a+1048>>2]=e;J[a+1052>>2]=b;if(!(d|c)){J[a+8>>2]=6;H[a+16|0]=H[f+166|0]&1;J[a>>2]=bj(75216);J[a+4>>2]=Yi}return!(d|c)|0}function Rta(a,b,c){a=a|0;b=b|0;c=c|0;var d=Q(0),e=Q(0),f=Q(0),g=Q(0),h=Q(0),i=Q(0);d=N[b+28>>2];g=N[c>>2];e=N[b+32>>2];h=N[c+4>>2];f=N[b+36>>2];i=N[c+8>>2];J[a+12>>2]=0;N[a+8>>2]=i>=Q(0)?f:Q(-f);N[a+4>>2]=h>=Q(0)?e:Q(-e);N[a>>2]=g>=Q(0)?d:Q(-d)}function Eba(a,b){a=a|0;b=b|0;var c=0;a:{if(b>>>0<2097152){b=a&65535;c=J[79491];if(b>>>0>=M[c+100>>2]){break a}return K[(L[J[c+96>>2]+(b<<1)>>1]==(a>>>16|0)?J[J[c+92>>2]+(b<<2)>>2]:0)+76|0]}Z(94863,55553,306,33926);B()}Z(2686,54166,244,5438);B()}function Cna(a,b){a=a|0;b=b|0;var c=0,d=0;d=Ui-16|0;Ui=d;c=J[a+8>>2];xB(J[c+16>>2],N[J[a+4>>2]+4>>2]);J[74108]=J[74108]+(J[c+4>>2]-J[c>>2]>>2);c=J[c+4>>2]-J[c>>2]>>2;J[d>>2]=c;J[d+4>>2]=0;J[d+8>>2]=c;J[d+12>>2]=0;a=OR(a,2,b);Ui=d+16|0;return a|0}function Aba(a,b){a=a|0;b=b|0;var c=0;a:{if(b>>>0<2097152){b=a&65535;c=J[79491];if(b>>>0>=M[c+100>>2]){break a}return K[(L[J[c+96>>2]+(b<<1)>>1]==(a>>>16|0)?J[J[c+92>>2]+(b<<2)>>2]:0)+78|0]}Z(94863,55553,306,33926);B()}Z(2686,54166,244,5438);B()}function wha(a){a=a|0;var b=0,c=0,d=0,e=0;b=Ui-32|0;Ui=b;d=1;e=pj(b+12|0,a,1,39971,694);c=on(Mp(a,1,0),b+8|0,b+4|0);a:{if(c){J[b>>2]=c>>>0>11?14245:J[(c<<2)+265952>>2];d=Jj(e,28640,b);break a}mj(a,J[b+8>>2],J[b+4>>2])}oj(e);Ui=b+32|0;return d|0}function uB(a){var b=0,c=0,d=0;b=Ui-144|0;Ui=b;c=b+16|0;ij(c,0,128);J[b+12>>2]=128;a:{if(!iB(a,c,b+12|0)){d=L[b+16>>1]==10;break a}a=Pm(36957,158,J[245744]);J[b+4>>2]=MJ(Pm(36957,158,J[245744]));J[b>>2]=a;dj(4,99340,30693,b)}Ui=b+144|0;return d}function ek(a,b,c){var d=0,e=0,f=0;a:{b:{if(c>>>0<2){d=b;break b}e=c-1|0;d=b;while(1){f=K[d|0];H[a|0]=f;d=d+1|0;if(!f){break a}a=a+1|0;e=e-1|0;if(e){continue}break}}if(c){H[a|0]=0}while(1){a=K[d|0];d=d+1|0;if(a){continue}break}}return(b^-1)+d|0}function Lq(a,b,c,d){a:{if((J[b+4>>2]&-268435456)==805306368){if(J[b+8>>2]){break a}if(!K[a+12|0]){a=J[a+4>>2]+J[b+12>>2]|0;hj(P(J[a+4>>2],d)+J[a>>2]|0,c,d);J[a+4>>2]=J[a+4>>2]+1}return}Z(97371,41995,240,36132);B()}Z(112919,41995,241,36132);B()}function LS(a,b){var c=0,d=0,e=0,f=0;c=b>>>20&2047;e=0;a:{if(c>>>0<1023){break a}e=2;if(c>>>0>1075){break a}c=1075-c|0;d=c&31;if((c&63)>>>0>=32){c=1<>>32-d;d=f}f=d-1|0;e=0;if(a&f|b&c-!d){break a}e=a&d|b&c?1:2}return e}function vB(a){var b=0,c=0,d=0;b=Ui-144|0;Ui=b;c=b+16|0;ij(c,0,128);J[b+12>>2]=128;a:{if(!iB(a,c,b+12|0)){d=L[b+16>>1]==2;break a}a=Pm(36957,133,J[245744]);J[b+4>>2]=MJ(Pm(36957,133,J[245744]));J[b>>2]=a;dj(4,99340,30693,b)}Ui=b+144|0;return d}function ifa(a){a=a|0;var b=0,c=0,d=0;c=Ui-16|0;Ui=c;b=-13;if(!dk(J[a+12>>2],J[a+16>>2],J[56642],c+12|0,0)){b=J[c+12>>2];a:{if(K[b+4|0]){break a}d=J[a+24>>2];if(!d){break a}Tk(d,J[b>>2]);b=J[c+12>>2]}J[J[a+32>>2]>>2]=b;b=0}Ui=c+16|0;return b|0}function UD(a,b){var c=0,d=0;b=J[b>>2];Tj(J[b+3232>>2]);a:{d=J[b+3244>>2];if(d){c=J[b+3252>>2]-1|0;if(c>>>0>=M[b+3248>>2]){break a}J[b+3252>>2]=c;J[(c<<2)+d>>2]=a;Lj(J[b+3232>>2]);return}Z(49493,54340,140,53220);B()}Z(2650,54340,141,53220);B()}function Qma(a){a=a|0;var b=0,c=0;c=J[a+8>>2]-J[a+12>>2]>>4;a:{b=Vj(a,1);if(b){Nj(a,-1e4,J[b+16>>2]);uj(a,2);uj(a,3);Kj(a,-3);gj(a,-2);if(J[a+8>>2]-J[a+12>>2]>>4!=(c|0)){break a}return 0}Z(52640,37509,276,4976);B()}Z(143244,37509,284,4976);B()}function Ew(a,b,c,d){var e=0,f=0,g=0;f=-24832;e=J[a>>2];a:{if(!e|!(K[e+20|0]&2)&J[e+8>>2]!=(c|0)){break a}J[a+8>>2]=d;J[a+4>>2]=c;g=20;a=J[a+60>>2];if(!((d|0)==1|J[e+4>>2]-3>>>0<3)){if(d){break a}g=24}f=Zi[J[g+J[e+28>>2]>>2]](a,b,c)|0}return f}function Bo(a,b){var c=0,d=0;c=Ui-16|0;Ui=c;a:{if(!a){break a}d=J[a+2092>>2];if((d|0)==J[a+2096>>2]){if(H[a+2504|0]&1){break a}J[c>>2]=d-J[a+2088>>2]>>2;dj(3,90423,20583,c);H[a+2504|0]=K[a+2504|0]|1;break a}J[a+2092>>2]=d+4;J[d>>2]=b}Ui=c+16|0}function paa(a){a=a|0;var b=0,c=0;c=J[a+8>>2]-J[a+12>>2]>>4;a:{b=Vj(a,1);if(b){Nj(a,-1e4,J[b+4>>2]);uj(a,2);uj(a,3);Kj(a,-3);gj(a,-2);if(J[a+8>>2]-J[a+12>>2]>>4!=(c|0)){break a}return 0}Z(52640,37682,235,4973);B()}Z(143244,37682,243,4973);B()}function QT(a,b,c,d,e){J[a>>2]=244932;J[a+4>>2]=J[b>>2];J[a>>2]=244960;H[a+24|0]=1;J[a>>2]=245256;J[a+20>>2]=0;H[a+28|0]=e;J[a+12>>2]=0;J[a+16>>2]=0;b=J[b+4>>2];H[a+36|0]=0;J[a+32>>2]=b;J[a+40>>2]=J[J[(e?d:c)+192>>2]+68>>2];PT(a,c,d);return a}function xL(a){var b=0;cj(J[a+124>>2]);J[a+124>>2]=0;cj(J[a+120>>2]);J[a+120>>2]=0;cj(J[a+84>>2]);J[a+84>>2]=0;Zi[J[79455]](J[a+8>>2],J[a+12>>2]);a:{if(H[a+116|0]&1){break a}b=J[a+96>>2];if(b){cj(b)}b=J[a+88>>2];if(!b){break a}cj(b)}return a}function qha(a){a=a|0;var b=0,c=0,d=0;c=J[a+8>>2]-J[a+12>>2]|0;b=Ui-16|0;Ui=b;d=Tb()|0;Ui=b+16|0;b=J[a+8>>2];J[b+8>>2]=1;J[b>>2]=(d|0)!=0;J[a+8>>2]=J[a+8>>2]+16;if(((c>>4)+1|0)!=J[a+8>>2]-J[a+12>>2]>>4){Z(143334,37214,299,51237);B()}return 1}function XO(a,b){var c=Q(0);a:{switch(a-1|0){case 0:return Q(H[b|0]);case 1:return Q(K[b|0]);case 2:return Q(I[b>>1]);case 3:return Q(L[b>>1]);case 4:return Q(J[b>>2]);case 5:return Q(M[b>>2]);case 6:c=N[b>>2];break;default:break a}}return c}function Wv(a,b){var c=0,d=0,e=0,f=0;c=a*a;d=c*.5;e=1-d;f=1-e-d;d=c*c;return e+(f+(c*(c*(c*(c*2480158728947673e-20+-.001388888888887411)+.0416666666666666)+d*d*(c*(c*-11359647557788195e-27+2.087572321298175e-9)+-2.7557314351390663e-7))-a*b))}function Saa(a,b){a=a|0;b=b|0;var c=0;a:{if(a){Uc(J[(b<<2)+161184>>2]);if(K[J[79491]+220|0]&2){c=_()|0;if(c){break a}}I[a+152>>1]=L[a+152>>1]&63999|b<<9&1536;return}Z(9197,40535,4860,70692);B()}Cj(c,70692,4862);Z(114101,40535,4862,70692);B()}function Raa(a,b){a=a|0;b=b|0;var c=0;a:{if(a){Rc(J[(b<<2)+161152>>2]);if(K[J[79491]+220|0]&2){c=_()|0;if(c){break a}}I[a+144>>1]=L[a+144>>1]&61951|b<<9&3584;return}Z(9197,40535,4747,82085);B()}Cj(c,82085,4749);Z(114101,40535,4749,82085);B()}function Iq(a,b){var c=0,d=0;c=J[b>>2];if((c|0)!=J[b+4>>2]){while(1){vj(a,J[(d<<2)+c>>2]);d=d+1|0;c=J[b>>2];if(d>>>0>2]-c>>2>>>0){continue}break}}J[b+4>>2]=c;if(!(H[b+12|0]&1)){lj(0,4,b,b+8|0,b+4|0);return}Z(151729,53895,501,2284);B()}function yta(a,b,c){a=a|0;b=b|0;c=c|0;a:{b:{c:{switch(J[b+216>>2]-2|0){case 0:case 3:break c;default:break b}}a=0;switch(J[c+216>>2]-2|0){case 0:case 3:break a;default:break b}}if(!J[b+252>>2]){return 1}a=Zi[J[J[b>>2]>>2]](b,c)|0}return a|0}function pE(a){var b=0,c=0,d=0;a:{b:{if(a+1>>>0<2){break b}b=a&65535;c=J[216330];if(b>>>0>=M[c+8>>2]){break a}d=J[J[c>>2]+(b<<2)>>2];if(!d|L[J[c+4>>2]+(b<<1)>>1]!=(a>>>16|0)){break b}I[d+32>>1]=L[d+32>>1]+1}return}Z(2686,54230,244,5438);B()}function Ot(a,b){var c=0,d=0;b=P(b,12)+218064|0;c=J[b+4>>2];if((c|0)!=-2){hk(J[b>>2],-1e4,c);hk(J[b>>2],-1e4,J[b+8>>2])}if(!kj(a,1)){J[b+4>>2]=-2;return}Oj(a,1,6);uj(a,1);c=Lk(a,-1e4);d=sx(a);J[b+4>>2]=c;J[b>>2]=d;Bj(a);J[b+8>>2]=Lk(a,-1e4)}function v$(a){a=a|0;var b=0;Em(a,1);b=Vj(a,1);rj(a,-1e4,135350);a:{b:{if(!b){break b}if(!sm(a,1)){break b}if(eu(a,-2,-1)){break a}}b=J[a+8>>2];J[b+8>>2]=0;J[a+8>>2]=b+16;return 1}if(!J[b>>2]){mj(a,66710,11);return 1}mj(a,66717,4);return 1}function lm(a,b){var c=0;if((b|0)>=2){c=J[a+16>>2];if(M[c+68>>2]>=M[c+64>>2]){Om(a)}OA(a,b,(J[a+8>>2]-J[a+12>>2]>>4)-1|0);J[a+8>>2]=J[a+8>>2]+(1-b<<4);return}if(!b){b=J[a+8>>2];c=zk(a,158859,0);J[b+8>>2]=4;J[b>>2]=c;J[a+8>>2]=J[a+8>>2]+16}}function T8(a){a=a|0;var b=0,c=0,d=0;b=Ui-16|0;Ui=b;c=J[a+8>>2]-J[a+12>>2]|0;Bj(a);d=qj(a,-1,J[219396],139183);gj(a,-2);Qj(a,1,b+12|0);bD(d,J[b+12>>2],0,0);if(c>>4!=J[a+8>>2]-J[a+12>>2]>>4){Z(143244,37682,2373,50441);B()}Ui=b+16|0;return 0}function D8(a){a=a|0;var b=0,c=0,d=0,e=0;b=Ui-16|0;Ui=b;d=J[a+8>>2]-J[a+12>>2]|0;c=Qj(a,1,b+12|0);e=ck(a,2);J[c+476>>2]=J[c+476>>2]&-8388609|e<<23&8388608;if(d>>4!=J[a+8>>2]-J[a+12>>2]>>4){Z(143244,37682,4801,84117);B()}Ui=b+16|0;return 0}function goa(a,b,c){a=a|0;b=b|0;c=c|0;var d=0;a=J[c+8>>2];d=J[c+4>>2];if(K[c|0]==1){a=Gj(d,a,158129,0);H[c|0]=0;a=(a|0)>0?a:0;d=a+J[c+4>>2]|0;J[c+4>>2]=d;a=J[c+8>>2]-a|0;J[c+8>>2]=a}a=QJ(b,d,a);J[c+4>>2]=a+J[c+4>>2];J[c+8>>2]=J[c+8>>2]-a}function YZ(a){a=a|0;var b=0,c=0,d=0,e=0,f=0;b=2;d=J[a+8>>2]-J[a+12>>2]>>4;c=wj(a,1);if((d|0)>=2){while(1){e=wj(a,b);c=c>2];J[b+8>>2]=3;O[b>>3]=c;J[a+8>>2]=J[a+8>>2]+16;return 1}function XZ(a){a=a|0;var b=0,c=0,d=0,e=0,f=0;b=2;d=J[a+8>>2]-J[a+12>>2]>>4;c=wj(a,1);if((d|0)>=2){while(1){e=wj(a,b);c=c>e?e:c;f=(b|0)!=(d|0);b=b+1|0;if(f){continue}break}}b=J[a+8>>2];J[b+8>>2]=3;O[b>>3]=c;J[a+8>>2]=J[a+8>>2]+16;return 1}function Jha(a,b,c,d,e){a=a|0;b=b|0;c=c|0;d=d|0;e=e|0;d=Ui-1040|0;Ui=d;a=J[a+360>>2];e=J[J[a+4>>2]+88>>2];J[d+8>>2]=b;J[d+12>>2]=c;J[d>>2]=e;b=d+16|0;Gj(b,1024,82395,d);b=bj(b);a=J[J[a+12>>2]+80>>2];YP(J[a>>2],J[a+8>>2],b,Yi);Ui=d+1040|0}function Fr(a,b){var c=0,d=0,e=0;a:{b:{if(a+1>>>0<2){break b}c=a&65535;d=J[216330];if(c>>>0>=M[d+8>>2]){break a}e=J[J[d>>2]+(c<<2)>>2];if(!e|L[J[d+4>>2]+(c<<1)>>1]!=(a>>>16|0)){break b}J[b>>2]=L[e+32>>1]}return}Z(2686,54230,244,5438);B()}function sda(a,b){a=a|0;b=b|0;var c=0;a=J[77376];if(!a){a=nj(20);J[a>>2]=0;J[a+4>>2]=0;J[a+16>>2]=0;c=a+8|0;J[c>>2]=0;J[c+4>>2]=0;c=Co();J[a+16>>2]=16384;J[a>>2]=c;J[a+8>>2]=0;J[a+12>>2]=2097152;J[77376]=a}return Op(b,a,0,604,603,602)|0}function qqa(a){a=a|0;var b=0;J[a>>2]=243976;b=J[a+488>>2];if(!(b?!b|K[a+492|0]!=1:1)){J[83765]=J[83765]+1;Zi[J[61751]](J[b-4>>2])}J[a+488>>2]=0;H[a+492|0]=1;J[a+480>>2]=0;J[a+484>>2]=0;if(a){J[83765]=J[83765]+1;Zi[J[61751]](J[a-4>>2])}}function j4(a,b,c){a=a|0;b=b|0;c=c|0;var d=0;a=J[c+8>>2];d=J[c+4>>2];if(K[c|0]==1){a=Gj(d,a,158145,0);H[c|0]=0;a=(a|0)>0?a:0;d=a+J[c+4>>2]|0;J[c+4>>2]=d;a=J[c+8>>2]-a|0;J[c+8>>2]=a}a=QJ(b,d,a);J[c+4>>2]=a+J[c+4>>2];J[c+8>>2]=J[c+8>>2]-a}function gn(a){var b=0,c=0,d=0;b=Ui-16|0;Ui=b;if(J[a+24>>2]){c=J[a+8>>2];d=J[a+4>>2];J[b+4>>2]=J[a+20>>2];J[b>>2]=a;J[b+8>>2]=pxa(d,c,32);J[b+12>>2]=Yi;mB(J[53386],155219,b)}c=J[a>>2];if(c){cj(c);J[a>>2]=0}if(J[a+16>>2]){cj(a)}Ui=b+16|0}function a7(a,b,c){a=a|0;b=b|0;c=c|0;var d=0,e=Q(0),f=Q(0),g=Q(0),h=Q(0);d=Ui-32|0;Ui=d;f=N[b>>2];g=N[b+4>>2];h=N[b+8>>2];e=N[J[a+4>>2]+20>>2];J[d+24>>2]=c;O[d+16>>3]=Q(e*h);O[d+8>>3]=Q(e*g);O[d>>3]=Q(e*f);dj(2,89293,154778,d);Ui=d+32|0}function uua(a){a=a|0;var b=0,c=0;A(+(ok(a,1)+6755399441055744));v(1)|0;b=v(0)|0;a:{if(b){break a}if(kk(a,1)){break a}Yk(a,1,36031)}c=J[a+8>>2];J[c+8>>2]=3;O[c>>3]=b<<24|(b&65280)<<8|(b>>>8&65280|b>>>24);J[a+8>>2]=J[a+8>>2]+16;return 1}function qM(a,b,c){var d=0,e=0;a:{if(b){d=b&65535;e=J[a+4>>2];a=J[a>>2];if(d>>>0>=e-a>>2>>>0){break a}a=J[a+(d<<2)>>2];if(L[a+80>>1]!=(b>>>16|0)){dj(4,96107,66969,0);return}H[a+82|0]=K[a+82|0]&254|c}return}Z(145396,53895,487,84789);B()}function eG(a,b){var c=0;c=_o(a,2,-1);a:{b:{switch(K[mm(a,3,82908,0)|0]-98|0){case 0:O[b>>3]=c;break a;case 16:case 18:O[b+8>>3]=c;break a;default:break b}}Dk(a,3,69285)}b=J[a+8>>2];J[b+8>>2]=3;O[b>>3]=1;J[a+8>>2]=J[a+8>>2]+16;return 1}function Ty(a){var b=0,c=0,d=0,e=0;a:{b:{if(a+1>>>0<2){break b}b=a&65535;c=J[216330];if(b>>>0>=M[c+8>>2]){break a}d=J[J[c>>2]+(b<<2)>>2];if(!d|L[J[c+4>>2]+(b<<1)>>1]!=(a>>>16|0)){break b}e=J[d+24>>2]}return e}Z(2686,54230,244,5438);B()}function wj(a,b){var c=0,d=0,e=0,f=0;c=Ui-16|0;Ui=c;e=ok(a,b);a:{if(e!=0){break a}if(kk(a,b)){break a}f=J[64411];d=kj(a,b);if((d|0)==-1){d=60960}else{d=J[(d<<2)+257632>>2]}J[c+4>>2]=d;J[c>>2]=f;Dk(a,b,ik(a,26749,c))}Ui=c+16|0;return e}function waa(a,b,c,d,e){a=a|0;b=b|0;c=c|0;d=d|0;e=e|0;var f=0;f=Ui-32|0;Ui=f;a:{if(!Hm(J[e+8>>2])){break a}J[f+16>>2]=b;J[f+20>>2]=c;J[f+24>>2]=d;J[f+8>>2]=e;Gu(J[e+8>>2],2323,f+8|0);if(a|d){break a}Fl(J[e+8>>2]);J[e+8>>2]=0}Ui=f+32|0}function oo(a,b,c){var d=0,e=0;d=-20736;a:{if(!a|!b){break a}e=Zi[J[b+32>>2]]()|0;J[a+4>>2]=e;d=-20864;if(!e){break a}b:{if(!c){break b}c=Zj(2,J[b+12>>2]);J[a+8>>2]=c;if(c){break b}Zi[J[b+36>>2]](e);return-20864}J[a>>2]=b;d=0}return d}function lsa(a){a=a|0;var b=0;J[a>>2]=246144;b=J[a+100>>2];if(!(b?!b|K[a+104|0]!=1:1)){J[83765]=J[83765]+1;Zi[J[61751]](J[b-4>>2])}J[a+100>>2]=0;H[a+104|0]=1;J[a+92>>2]=0;J[a+96>>2]=0;if(a){J[83765]=J[83765]+1;Zi[J[61751]](J[a-4>>2])}}function aG(a,b){var c=0,d=0;a:{if((a|0)==-1){break a}d=J[b+76>>2]<0;b:{c=J[b+4>>2];c:{if(!c){zz(b);c=J[b+4>>2];if(!c){break c}}if(J[b+44>>2]-8>>>0>>0){break b}}if(d){break a}return}c=c-1|0;J[b+4>>2]=c;H[c|0]=a;J[b>>2]=J[b>>2]&-17}}function FY(a,b){a=a|0;b=b|0;var c=0,d=0;c=Ui-16|0;Ui=c;J[c+12>>2]=0;J[c+8>>2]=4;d=1;a:{if((cp(J[b>>2],1,4,c+12|0,c+8|0)|0)<0){b=J[a+8>>2];J[b+8>>2]=0;J[a+8>>2]=b+16;mj(a,74813,17);d=2;break a}xj(a,Tm(J[c+12>>2]))}Ui=c+16|0;return d|0}function oha(a,b){a=a|0;b=b|0;var c=0,d=0,e=0;d=Ui-144|0;Ui=d;c=J[a>>2];Os(J[b+8>>2],J[b+12>>2],d,129);e=a;a=J[a+4>>2];J[e+4>>2]=a+1;e=J[c+8>>2];J[e+8>>2]=3;O[e>>3]=a|0;J[c+8>>2]=J[c+8>>2]+16;mj(c,d,J[b+12>>2]<<1);Kj(c,-3);Ui=d+144|0}function fga(a){a=a|0;var b=0,c=0,d=0;d=Ui-16|0;Ui=d;b=J[a+4>>2];c=J[b+4>>2];if(!c){c=J[b>>2]}b=1;a:{if(J[c>>2]){break a}if(!wk(J[a>>2],J[c+4>>2],c)){b=J[c>>2]!=0;break a}J[d>>2]=J[c+4>>2];dj(4,88458,30197,d);b=0}Ui=d+16|0;return b|0}function L4(a,b,c,d,e,f){a=a|0;b=b|0;c=c|0;d=d|0;e=e|0;f=f|0;b=Ui-2064|0;Ui=b;J[b+8>>2]=d;J[b>>2]=a+8;J[b+4>>2]=a+140;c=b+1040|0;Gj(c,1024,25974,b);a=-2;d=b+16|0;if(!kr(d,c)){a=wu(d,e,f,c);a=a?(a|0)==-2?-2:-3:0}Ui=b+2064|0;return a|0}function Aea(a){a=a|0;var b=0,c=0;c=J[a+24>>2];if(!c){return-2}b=nj(20);J[b>>2]=0;J[b+4>>2]=0;J[b+16>>2]=0;J[b+8>>2]=0;J[b+12>>2]=0;vM(b,c);c=VQ(J[a>>2],b,J[a+8>>2]);if(!c){J[J[a+28>>2]+8>>2]=b;return 0}HD(J[a>>2],b);AM(b);return c|0}function rsa(a,b,c){a=a|0;b=b|0;c=c|0;var d=Q(0),e=Q(0),f=Q(0),g=Q(0),h=Q(0),i=Q(0);b=J[a+100>>2]+(b<<4)|0;d=N[b>>2];e=N[b+4>>2];f=N[b+8>>2];g=N[a+12>>2];h=N[a+16>>2];i=N[a+20>>2];J[c+12>>2]=0;N[c+8>>2]=f*i;N[c+4>>2]=e*h;N[c>>2]=d*g}function rpa(){var a=0;a=Zj(1,232);if(a){Zi[J[66509]](a,0,64)|0;Zi[J[66509]](a- -64|0,0,64)|0;J[a+128>>2]=64;Zi[J[66509]](a+132|0,0,72)|0;J[a+224>>2]=0;J[a+228>>2]=0;J[a+216>>2]=0;J[a+220>>2]=0;J[a+208>>2]=0;J[a+212>>2]=0}return a|0}function eia(a){a=a|0;var b=0;a=J[a+4>>2];b=J[a+36>>2];if(b){ll(b);bm(J[a+40>>2]);cj(J[a+44>>2])}a:{if(H[a+32|0]&1){break a}b=J[a+20>>2];if(!b){break a}cj(b)}b:{if(H[a+16|0]&1){break b}b=J[a+4>>2];if(!b){break b}cj(b)}cj(a);return 0}function Vra(a,b,c,d,e,f){a=a|0;b=b|0;c=c|0;d=d|0;e=e|0;f=f|0;var g=0,h=0,i=0;c=Ui-16|0;Ui=c;J[c+8>>2]=244316;J[c+12>>2]=d;g=d+4|0;h=d+20|0;i=c+8|0;zT(J[a+4>>2],b,g,h,N[d+32>>2],e,f,i);zT(J[a+44>>2],b,g,h,N[d+32>>2],e,f,i);Ui=c+16|0}function OK(a,b,c){var d=0,e=0;d=Ui-16|0;Ui=d;J[d+4>>2]=b;J[d>>2]=a;Gj(c,1024,26184,d);a=c;while(1){b=K[a|0];a:{b:{if((b|0)!=47){if(b){break b}H[c|0]=0;Ui=d+16|0;return}if((e&255)==47){break a}}H[c|0]=b;c=c+1|0}a=a+1|0;e=b;continue}}function Hma(a){a=a|0;var b=0,c=0,d=0,e=0;b=Ui-32|0;Ui=b;c=dn(a,1);d=J[c+16>>2];e=J[c+20>>2];N[b+8>>2]=N[c+24>>2];J[b>>2]=d;J[b+4>>2]=e;N[b+16>>2]=N[b>>2];c=J[b+8>>2];J[b+20>>2]=J[b+4>>2];J[b+24>>2]=c;cl(a,b+16|0);Ui=b+32|0;return 1}function Ej(a,b){var c=0,d=0,e=0,f=0;c=Ui-16|0;Ui=c;e=sl(a,b);a:{if(e){break a}if(kk(a,b)){break a}f=J[64411];d=kj(a,b);if((d|0)==-1){d=60960}else{d=J[(d<<2)+257632>>2]}J[c+4>>2]=d;J[c>>2]=f;Dk(a,b,ik(a,26749,c))}Ui=c+16|0;return e}function $k(a,b,c){a=a|0;b=b|0;c=c|0;var d=0,e=0;if(!c){return 0}d=K[a|0];if(d){a:{while(1){e=K[b|0];if((e|0)!=(d|0)|!e){break a}c=c-1|0;if(!c){break a}b=b+1|0;d=K[a+1|0];a=a+1|0;if(d){continue}break}d=0}}else{d=0}return d-K[b|0]|0}function to(a,b){var c=0;if(b-1>>>0>=4294957296){b=((J[a+8>>2]-J[a+12>>2]>>4)+b|0)+1|0}if(!kj(a,-1)){gj(a,-2);return-1}Nj(a,b,0);c=sl(a,-1);gj(a,-2);if(c){Nj(a,b,c);Ik(a,b,0);Ik(a,b,c);return c}c=a;a=fl(a,b)+1|0;Ik(c,b,a);return a}function k8(a){a=a|0;var b=0,c=0,d=0,e=0;c=Ui-16|0;Ui=c;b=Qj(a,1,c+12|0);d=wj(a,2);Bj(a);e=qj(a,-1,J[219396],139183);gj(a,-2);b=L[b+650>>1]|L[b+648>>1]<<16;if(R(d)<2147483648){a=~~d}else{a=-2147483648}aO(e,b,a);Ui=c+16|0;return 0}function jr(a){var b=0,c=0,d=0,e=0,f=0,g=0;c=J[a>>2];b=K[c|0];if(b){while(1){a:{d=g;e=(e<<6)+b|0;f=c+1|0;b=K[c+1|0];if(!b){break a}g=d+1|0;c=f;if((b&192)==128){continue}}break}J[a>>2]=f;a=e-J[(d<<2)+184672>>2]|0}else{a=0}return a}function Iwa(a){a=a|0;var b=0;J[218662]=1;while(1){a=J[218661];J[218661]=a?a:1;if(a){continue}break}a=J[218660];if(a){a:{if(H[a+28|0]&1){break a}b=J[a+8>>2];if(b){cj(b)}b=J[a>>2];if(!b){break a}cj(b)}cj(a);J[218660]=0}J[218661]=0}function Gfa(a){a=a|0;var b=0;b=nj(16);J[b>>2]=0;J[b+4>>2]=0;J[b+8>>2]=0;J[b+12>>2]=0;if(!dk(J[a+12>>2],J[a+16>>2],J[56744],b,0)){J[b+8>>2]=bj(J[a+8>>2]);J[b+12>>2]=Yi;J[J[a+28>>2]+8>>2]=b;return 0}a=J[b>>2];if(a){Uj(a)}return-13}function faa(a){a=a|0;var b=0,c=0,d=0,e=0,f=0;c=Ui-32|0;Ui=c;d=J[a+12>>2];b=J[J[d+12>>2]>>2];e=pj(c+12|0,b,0,37682,1033);f=J[a+16>>2];Nj(b,-1e4,J[d+8>>2]);hk(b,-1,f);gj(b,-2);J[a+16>>2]=0;J[a+8>>2]=0;J[a+12>>2]=0;oj(e);Ui=c+32|0}function d9(a){a=a|0;var b=0,c=0,d=0,e=0;c=Ui-16|0;Ui=c;b=c+12|0;d=Qj(a,1,b);if(kj(a,2)){b=Qj(a,2,b);e=L[b+650>>1]|L[b+648>>1]<<16}Bj(a);b=qj(a,-1,J[219396],139183);gj(a,-2);$x(b,L[d+650>>1]|L[d+648>>1]<<16,e);Ui=c+16|0;return 0}function Wy(a){H[a+356|0]=1;J[a>>2]=0;H[a+312|0]=0;J[a+336>>2]=0;J[a+340>>2]=0;J[a+300>>2]=1566444395;J[a+304>>2]=0;J[a+292>>2]=1566444395;J[a+296>>2]=1566444395;J[a+344>>2]=0;J[a+348>>2]=0;H[a+352|0]=0;H[a+332|0]=K[a+332|0]&240}function Sea(a){a=a|0;var b=0,c=0;b=Ui-16|0;Ui=b;c=-13;if(!dk(J[a+12>>2],J[a+16>>2],J[57874],b+12|0,0)){Tk(J[a+24>>2],J[J[b+12>>2]+108>>2]);Tk(J[a+24>>2],J[J[b+12>>2]+104>>2]);J[J[a+32>>2]>>2]=J[b+12>>2];c=0}Ui=b+16|0;return c|0}function Io(a,b,c){var d=0,e=0;d=Ui-16|0;Ui=d;b=b<<3|c;if(b>>>0>=128){while(1){H[(d+11|0)+e|0]=b|128;e=e+1|0;c=b>>>0>16383;b=b>>>7|0;if(c){continue}break}}c=d+11|0;H[c+e|0]=b;a=Zi[J[a>>2]](J[a+4>>2],c,e+1|0)|0;Ui=d+16|0;return a}function CW(a){a=a|0;var b=0,c=0,d=0;b=Ui-1040|0;Ui=b;d=Aj(a,1,b+1036|0);c=Ej(a,2);J[b+4>>2]=0;J[b+8>>2]=a;J[b>>2]=b+12;if((c|0)>0){while(1){Yn(b,d,J[b+1036>>2]);a=c>>>0>1;c=c-1|0;if(a){continue}break}}Ym(b);Ui=b+1040|0;return 1}function yS(a){var b=0,c=0,d=0;b=Ui-16|0;Ui=b;J[a>>2]=J[a>>2]+1;c=J[73866];a:{if(!c){break a}d=J[c>>2]-1|0;J[c>>2]=d;if(d){break a}cj(c)}J[73866]=a;a=a+4|0;J[54638]=a;if(K[218556]==1){J[b>>2]=a;aa(293419,158960,b|0)|0}Ui=b+16|0}function b4(a){a=a|0;var b=0,c=0;Em(a,1);c=kj(a,1);b=J[84569];if(!c){if(b){aa(293736,158860,0)|0;Fl(J[84569])}J[84569]=0;return 0}if(b){Fl(b)}b=$m(a,1);J[84569]=b;if(!Hm(b)){return fj(a,51610,0)|0}aa(294024,158860,0)|0;return 0}function YW(a,b){a=a|0;b=b|0;var c=0,d=0,e=0;e=Ui-192|0;Ui=e;c=e+104|0;au(c);d=e+12|0;ds(d);xA(c,J[a+68>>2]+596|0);qA(d,J[a+68>>2]+684|0);bu(c,b);es(d,b+16|0);if(c){Zi[J[66509]](c,0,88)|0}if(d){Zi[J[66509]](d,0,92)|0}Ui=e+192|0}function Ir(a,b,c){a:{b:{if(c){if((c|0)<=0){break b}if(c>>>0>=641){cj(b);return}c=K[c+335136|0];if(c>>>0>=14){break a}a=(c<<2)+a|0;J[b>>2]=J[a+12>>2];J[a+12>>2]=b}return}Z(59203,39627,164,68876);B()}Z(21447,39627,173,68876);B()}function hua(a,b,c){a=a|0;b=b|0;c=c|0;var d=0;d=J[a+12>>2];J[b>>2]=J[a+8>>2];J[b+4>>2]=d;d=J[a+20>>2];J[b+8>>2]=J[a+16>>2];J[b+12>>2]=d;b=J[a+36>>2];J[c+8>>2]=J[a+32>>2];J[c+12>>2]=b;b=J[a+28>>2];J[c>>2]=J[a+24>>2];J[c+4>>2]=b}function gU(a,b,c,d){a=a|0;b=b|0;c=c|0;d=d|0;a=J[b+20>>2];J[c>>2]=J[b+16>>2];J[c+4>>2]=a;a=J[b+28>>2];J[c+8>>2]=J[b+24>>2];J[c+12>>2]=a;a=J[b+44>>2];J[d+8>>2]=J[b+40>>2];J[d+12>>2]=a;a=J[b+36>>2];J[d>>2]=J[b+32>>2];J[d+4>>2]=a}function cS(a,b,c){var d=0,e=0;a:{if(c){e=J[a+8>>2];d=J[a+4>>2];if(e>>>0>d>>>0){break a}d=d>>>0>=b+e>>>0;if(!d){J[c>>2]=0;return d}J[c>>2]=e;J[a+8>>2]=J[a+8>>2]+b;return d}Z(9595,39940,52,76461);B()}Z(71496,39940,53,76461);B()}function Kw(a,b){var c=0,d=0;c=Ui-16|0;Ui=c;a:{b:{c:{switch(J[a+8>>2]-3|0){case 0:break a;case 1:break c;default:break b}}if(!mq(J[a>>2]+16|0,c+8|0)){break b}d=O[c+8>>3];J[b+8>>2]=3;O[b>>3]=d;a=b;break a}a=0}Ui=c+16|0;return a}function Kea(a){a=a|0;var b=0,c=0;J[77192]=J[a+4>>2];b=ij(nj(192),0,192);J[b>>2]=J[a+24>>2];c=PQ(J[a>>2],b);a:{if(!c){J[J[a+28>>2]+8>>2]=b;break a}GD(J[a>>2],b);cj(b)}J[b+188>>2]=J[J[b+4>>2]+24>>2];vq(J[a>>2],593,b);return c|0}function yy(a){var b=0,c=Q(0),d=Q(0),e=Q(0);b=Ui-16|0;Ui=b;fx(b,N[a>>2],N[a+4>>2],N[a+8>>2],N[a+12>>2]);c=N[b>>2];N[a+48>>2]=c;d=N[b+4>>2];N[a+52>>2]=d;e=N[b+8>>2];N[a+56>>2]=e;N[a+72>>2]=e;N[a+68>>2]=d;N[a+64>>2]=c;Ui=b+16|0}function q0(a,b,c){a=a|0;b=b|0;c=c|0;if(J[b>>2]){J[b>>2]=0;J[c>>2]=1;return 158634}a=J[b+4>>2];a:{if(J[a+76>>2]<0){a=J[a>>2];break a}a=J[a>>2]}if(a>>>4&1){a=0}else{a=b+8|0;b=Sl(a,1,1024,J[b+4>>2]);J[c>>2]=b;a=b?a:0}return a|0}function moa(a,b){a=a|0;b=b|0;var c=0;a:{if(a){if(!b){break a}c=nj(8);J[c>>2]=0;J[c+4>>2]=0;a=qi(J[a>>2])|0;if((a|0)<0){return-11}H[c+4|0]=0;J[c>>2]=a;J[b>>2]=c;return 0}Z(20450,39308,45,48072);B()}Z(70570,39308,46,48072);B()}function mC(a,b,c){var d=0,e=0,f=0;d=J[a>>2];a=J[a+4>>2];if((d|0)!=(a|0)){a=(a-d|0)/48|0;f=a>>>0<=1?1:a;a=0;while(1){e=P(a,48)+d|0;if((b|0)==J[e>>2]&J[e+4>>2]==(c|0)){return a}a=a+1|0;if((f|0)!=(a|0)){continue}break}}return-1}function fua(a,b){a=a|0;b=b|0;var c=0,d=0;if(!L[a+56>>1]){b=1;I[a+64>>1]=1;d=J[a+60>>2];c=L[a+58>>1];if(c>>>0>1){while(1){c=(b<<6)+d|0;b=b+1|0;I[c+48>>1]=b;c=L[a+58>>1];if(c>>>0>b>>>0){continue}break}}I[((c<<6)+d|0)-16>>1]=0}}function e4(a){a=a|0;var b=0,c=0,d=0;d=J[a+8>>2]-J[a+12>>2]>>4;b=Kk(a,1,J[84567]);a:{if(b){c=J[b>>2];b=J[b+4>>2];break a}c=bj(Aj(a,1,0));b=Yi}Bk(a,c,b);if((d+1|0)!=J[a+8>>2]-J[a+12>>2]>>4){Z(143334,41058,93,6681);B()}return 1}function Es(a,b){var c=0,d=0,e=0,f=0;e=yj(b);if(e){c=J[a+144>>2];while(1){f=K[b+d|0];J[a+144>>2]=c+1;H[a+c|0]=f;c=J[a+144>>2];if(c>>>0>M[a+140>>2]){J[a+140>>2]=c}c=c&127;J[a+144>>2]=c;d=d+1|0;if((e|0)!=(d|0)){continue}break}}}function Cta(a,b,c,d){a=a|0;b=b|0;c=c|0;d=d|0;var e=0;e=Ui-16|0;Ui=e;J[e+12>>2]=d;J[e+8>>2]=a;a=J[((P(J[J[b+192>>2]+4>>2],144)+a|0)+(J[J[c+192>>2]+4>>2]<<2)|0)+200>>2];a=Zi[J[J[a>>2]+8>>2]](a,e+8|0,b,c)|0;Ui=e+16|0;return a|0}function z0(a){a=a|0;var b=0;Oj(a,1,5);Oj(a,2,6);b=J[a+8>>2];J[b+8>>2]=0;J[a+8>>2]=b+16;a:{if($j(a,1)){while(1){uj(a,2);uj(a,-3);uj(a,-3);Wk(a,2,1);b=1;if(kj(a,-1)){break a}gj(a,-3);if($j(a,1)){continue}break}}b=0}return b|0}function vY(a,b){a=a|0;b=b|0;var c=0;b=Ui-16|0;Ui=b;c=Aj(a,3,0);J[b+12>>2]=0;a:{if(!K[c+1|0]&K[c|0]==42){break a}if(Uv(c,b+12|0)){break a}Dk(a,3,73719)}c=J[a+8>>2];J[c+8>>2]=0;J[a+8>>2]=c+16;mj(a,74795,17);Ui=b+16|0;return 2}function mk(a,b){var c=0,d=0;c=Ui-16|0;Ui=c;d=Kk(a,b,J[84567]);a:{if(d){a=J[d>>2];b=J[d+4>>2];break a}if((kj(a,b)|0)==4){J[c+12>>2]=0;a=Ul(Ij(a,b,c+12|0),J[c+12>>2]);b=Yi;break a}Yk(a,b,73780);a=0;b=0}Ui=c+16|0;Yi=b;return a}function dla(a){a=a|0;var b=0,c=0,d=0;b=nj(32);J[b>>2]=0;J[b+4>>2]=0;J[b+24>>2]=0;J[b+28>>2]=0;J[b+16>>2]=0;J[b+20>>2]=0;c=b+8|0;J[c>>2]=0;J[c+4>>2]=0;d=J[a+16>>2];lj(d>>>0>=64?64:d,160,b,c,b+4|0);J[J[a+12>>2]>>2]=b;return 0}function a_(a){a=a|0;var b=0,c=0,d=0,e=0;b=Ui-16|0;Ui=b;e=kB(wj(a,1),b+12|0);c=J[a+8>>2];J[c+8>>2]=3;O[c>>3]=e;J[a+8>>2]=J[a+8>>2]+16;c=J[b+12>>2];d=J[a+8>>2];J[d+8>>2]=3;O[d>>3]=c|0;J[a+8>>2]=J[a+8>>2]+16;Ui=b+16|0;return 2}function Qaa(a,b){a=a|0;b=b|0;var c=0;a:{if(a){Qc(b|0);if(K[J[79491]+220|0]&2){c=_()|0;if(c){break a}}I[a+144>>1]=L[a+144>>1]&65519|(b?16:0);return}Z(9197,40535,4711,50765);B()}Cj(c,50765,4713);Z(114101,40535,4713,50765);B()}function Lna(a){a=a|0;var b=0,c=0,d=0;b=Ui-16|0;Ui=b;c=J[J[a+16>>2]>>2];J[b+12>>2]=0;a=J[a+12>>2];if(a){a=J[a+124>>2]}else{a=0}a:{if((Cy(a,J[c>>2],0,c,b+12|0)|0)==-1){d=-1e3;break a}H[c+32|0]=K[c+32|0]|2}Ui=b+16|0;return d|0}function Aw(a,b){var c=0,d=0,e=0;c=-16;a:{if(b>>>0>1e4){break a}d=J[a+4>>2];if(d>>>0>>0){e=Zj(b,4);if(!e){break a}c=J[a+8>>2];if(c){d=d<<2;hj(e,c,d);Zi[J[66509]](c,0,d)|0;cj(J[a+8>>2])}J[a+8>>2]=e;J[a+4>>2]=b}c=0}return c}function zI(a,b,c){var d=0;d=Ui-32|0;Ui=d;b=J[(J[b+8>>2]<<2)+257632>>2];c=J[(J[c+8>>2]<<2)+257632>>2];a:{if(K[b+2|0]==K[c+2|0]){J[d>>2]=b;xl(a,21627,d);break a}J[d+20>>2]=c;J[d+16>>2]=b;xl(a,27199,d+16|0)}Ui=d+32|0;return 0}function fqa(a,b){a=a|0;b=b|0;var c=0,d=Q(0);c=J[a+216>>2];d=N[c+4>>2];a:{if(d==Q(0)){break a}b=J[b>>2];if(!(Zi[J[J[c>>2]+8>>2]](c,J[b+188>>2])|0)){break a}TT(a+68|0,a+132|0,b,J[b+192>>2],b+4|0,J[a+216>>2])}return d!=Q(0)|0}function RN(a,b,c){var d=0,e=0,f=0;d=J[a+3476>>2];H[c|0]=0;a:{e=K[b+144|0];if((e|0)!=255){f=J[d+4>>2];d=J[d>>2];if(f-d>>2>>>0<=e>>>0){break a}f=a;a=J[d+(e<<2)>>2];Zi[J[a+16>>2]](f,a,b,c)}return}Z(145028,41200,341,66114);B()}function Hda(a){a=a|0;var b=0,c=0;b=Ui-16|0;Ui=b;c=-13;if(!dk(J[a+12>>2],J[a+16>>2],J[59572],b+12|0,0)){Tk(J[a+24>>2],J[J[b+12>>2]>>2]);Tk(J[a+24>>2],J[J[b+12>>2]+12>>2]);J[J[a+32>>2]>>2]=J[b+12>>2];c=0}Ui=b+16|0;return c|0}function B0(a){a=a|0;var b=0;if(!ck(a,1)){uj(a,-10003);kq(a,0,0,0);gj(a,2);Fj(a,0,0);b=J[a+8>>2];J[b+8>>2]=3;O[b>>3]=1;J[a+8>>2]=J[a+8>>2]+16;uj(a,-3);Kj(a,-3);Pk(a,-2);gj(a,-2);lq(a);return 0}return J[a+8>>2]-J[a+12>>2]>>4}function RS(a,b,c){var d=0;PS(a);d=J[a+248>>2];J[b>>2]=J[a+244>>2];J[b+4>>2]=d;d=J[a+256>>2];J[b+8>>2]=J[a+252>>2];J[b+12>>2]=d;b=J[a+272>>2];J[c+8>>2]=J[a+268>>2];J[c+12>>2]=b;b=J[a+264>>2];J[c>>2]=J[a+260>>2];J[c+4>>2]=b}function Nx(a,b,c){var d=0,e=0;a:{if(b){d=b&65535;e=J[a+4>>2];a=J[a>>2];if(d>>>0>=e-a>>2>>>0){break a}a=J[a+(d<<2)>>2];if(L[a+80>>1]!=(b>>>16|0)){dj(4,96107,66969,0);return}N[a+44>>2]=c}return}Z(145396,53895,487,84789);B()}function Nn(a,b,c,d){var e=0,f=0;e=Ui-16|0;Ui=e;f=-1;a:{if(!(Zi[J[a+8>>2]](b)|0)){break a}f=Zi[J[a+12>>2]](b,c,e+12|0)|0;if(f){break a}c=nj(2196);hj(c+8|0,b,2188);J[c>>2]=a;J[c+4>>2]=J[e+12>>2];J[d>>2]=c}Ui=e+16|0;return f}function LO(a,b,c,d){var e=0,f=0;e=KO(b,L[c+650>>1]|L[c+648>>1]<<16,d);if(!e){Bk(a,J[c+640>>2],J[c+644>>2]);f=J[d>>2];e=Sj(a,8);J[e+4>>2]=f;J[e>>2]=b;rj(a,-1e4,1423);Mj(a,-2);Xj(a,-3);e=MO(a,b,L[c+658>>1],J[d>>2])}return e}function yn(a,b){var c=0,d=0;c=J[b+80>>2];d=J[c+3128>>2];b=J[b+140>>2]&32767;if(b>>>0>=J[c+3132>>2]-d>>6>>>0){Z(145396,53895,487,84789);B()}b=d+(b<<6)|0;d=J[b+48>>2];c=J[b+52>>2];N[a+8>>2]=N[b+56>>2];J[a>>2]=d;J[a+4>>2]=c}function wG(a){var b=0;a:{b:{while(1){if(J[a+1392>>2]!=-1){break b}b=0;if(!Qo(a)){break a}if(!(H[a+1387|0]&1)){continue}break}J[a+112>>2]=32;return 0}J[a+1408>>2]=0;J[a+1412>>2]=0;J[a+1396>>2]=0;H[a+1388|0]=0;b=1}return b}function hna(a){a=a|0;var b=0,c=0,d=0;c=J[a>>2];b=J[J[a+8>>2]+8>>2];if(J[b+4>>2]){a=0;while(1){d=J[b>>2]+P(a,96)|0;vj(c,J[d+24>>2]);ll(J[d+88>>2]);a=a+1|0;if(a>>>0>2]){continue}break}}Iq(c,b+8|0);cj(Dy(b));return 0}function Qy(a,b){var c=0,d=0,e=0;c=Ui-16|0;Ui=c;if(b>>>0>=128){while(1){H[(c+11|0)+d|0]=b|128;d=d+1|0;e=b>>>0>16383;b=b>>>7|0;if(e){continue}break}}e=c+11|0;H[e+d|0]=b;a=Zi[J[a>>2]](J[a+4>>2],e,d+1|0)|0;Ui=c+16|0;return a}function P4(a,b,c,d,e){a=a|0;b=b|0;c=c|0;d=d|0;e=e|0;b=Ui-2064|0;Ui=b;J[b+8>>2]=d;J[b>>2]=a+8;J[b+4>>2]=a+140;c=b+1040|0;Gj(c,1024,25974,b);a=-2;d=b+16|0;if(!kr(d,c)){a=vu(d,e);a=a?(a|0)==-2?-2:-3:0}Ui=b+2064|0;return a|0}function J1(a){a=a|0;var b=0,c=0,d=Q(0),e=Q(0),f=Q(0);b=Ui-48|0;Ui=b;c=Vj(a,1);d=N[c>>2];e=N[c+4>>2];f=N[c+8>>2];O[b+32>>3]=N[c+12>>2];O[b+24>>3]=f;O[b+16>>3]=e;J[b>>2]=106998;O[b+8>>3]=d;ik(a,138617,b);Ui=b+48|0;return 1}function xB(a,b){var c=0,d=0,e=0,f=0;a:{if(!a){break a}d=J[a>>2];c=J[d+108>>2];e=J[d+112>>2];if((c|0)==(e|0)){break a}while(1){f=J[J[c>>2]+20>>2];if(f){Zi[f|0](a,b);e=J[d+112>>2]}c=c+4|0;if((e|0)!=(c|0)){continue}break}}}function wda(a,b){a=a|0;b=b|0;var c=0,d=0;c=Nr(a,bj(80655),Yi);if(!c){dj(4,88458,151428,0);return-6}d=Nr(a,bj(82235),Yi);if(!d){dj(4,88458,151512,0);return-6}a=sj(8);J[a+4>>2]=c;J[a>>2]=d;return Op(b,a,588,589,590,591)|0}function a3(a){a=a|0;var b=0,c=0,d=Q(0),e=Q(0),f=Q(0);b=Ui-48|0;Ui=b;c=Vj(a,1);d=N[c>>2];e=N[c+4>>2];f=N[c+8>>2];O[b+32>>3]=N[c+12>>2];O[b+24>>3]=f;O[b+16>>3]=e;J[b>>2]=16786;O[b+8>>3]=d;ik(a,138617,b);Ui=b+48|0;return 1}function fJ(a){var b=0,c=0,d=0;mj(a,72529,5);Ck(a,-2);b=-1;a:{if(!kj(a,-1)){break a}uj(a,-2);Wk(a,1,1);b=-1;if(!kk(a,-1)){break a}c=ok(a,-1);b=c>=0;if(R(c)<2147483648){d=~~c}else{d=-2147483648}b=b?d:-1}gj(a,-2);return b}function QK(a,b){var c=0,d=0,e=0,f=0;d=bj(b);e=Yi;b=0;c=J[a+6160>>2];a:{if(!c){break a}f=a+16|0;a=0;while(1){b=P(a,48)+f|0;if(J[b>>2]==(d|0)&J[b+4>>2]==(e|0)){break a}a=a+1|0;if((c|0)!=(a|0)){continue}break}b=0}return b}function Oj(a,b,c){var d=0,e=0;d=Ui-16|0;Ui=d;if((kj(a,b)|0)!=(c|0)){c=(c|0)==-1?60960:J[(c<<2)+257632>>2];e=kj(a,b);if((e|0)==-1){e=60960}else{e=J[(e<<2)+257632>>2]}J[d+4>>2]=e;J[d>>2]=c;Dk(a,b,ik(a,26749,d))}Ui=d+16|0}function Jma(a){a=a|0;var b=0,c=0;Bj(a);b=qj(a,-1,J[74197],139276);gj(a,-2);c=a;a:{if(J[a+8>>2]-J[a+12>>2]>>4>0){a=Aj(a,1,0);a=rv(J[b+4>>2],a,yj(a));b=Yi;break a}b=J[b+4>>2];a=J[b+96>>2];b=J[b+100>>2]}Bk(c,a,b);return 1}function Fn(a){var b=0,c=0,d=0;b=-20736;a:{if(!a){break a}c=J[a>>2];if(!c){break a}d=J[a+8>>2];if(!d){break a}b=Zi[J[c+16>>2]](J[a+4>>2])|0;if(b){break a}b=J[a+4>>2];a=J[a>>2];b=Zi[J[a+20>>2]](b,d,J[a+12>>2])|0}return b}function tY(a){a=a|0;var b=0,c=0,d=0;if(O[122873]==0){O[122873]=za()}b=(+za()-O[122873])*1e3;a:{if(R(b)<2147483648){c=~~b;break a}c=-2147483648}d=J[a+8>>2];J[d+8>>2]=3;O[d>>3]=+(c|0)/1e6;J[a+8>>2]=J[a+8>>2]+16;return 1}function _1(a){a=a|0;var b=0,c=0,d=0;b=Kk(a,1,J[215720]);c=Kk(a,2,J[215720]);if(!(!b|!c|(N[b>>2]!=N[c>>2]|N[b+4>>2]!=N[c+4>>2]))){d=N[b+8>>2]==N[c+8>>2]}b=J[a+8>>2];J[b+8>>2]=1;J[b>>2]=d;J[a+8>>2]=J[a+8>>2]+16;return 1}function Ru(a,b,c){var d=0,e=0,f=0;d=Ui-16|0;Ui=d;a:{b:{if(L[a+32>>1]>=c>>>0){e=c<<4;f=J[a>>2];break b}J[d+12>>2]=0;e=c<<4;if(fo(d+12|0,16,e)){break a}cj(J[a>>2]);f=J[d+12>>2];J[a>>2]=f}hj(f,b,e);I[a+32>>1]=c}Ui=d+16|0}function Qv(a,b,c){iu(a,b);mj(a,5326,7);Fj(a,0,0);mj(a,18991,5);xj(a,b);Xj(a,-3);b=J[c>>2];if(b){while(1){xj(a,b);Nk(a,J[c+4>>2],0);Xj(a,K[J[c>>2]]==95?-5:-3);b=J[c+8>>2];c=c+8|0;if(b){continue}break}}Xj(a,-3);gj(a,-2)}function C2(a){a=a|0;var b=0,c=0;b=1;c=a;if((kj(a,1)|0)==8){b=2;c=so(a,1)}Oj(a,b,6);uj(a,b);b=J[215644];if(b){hk(a,-1e4,b);J[215644]=0}J[215644]=Lk(a,-1e4);J[c+64>>2]=0;J[c+60>>2]=0;J[c+68>>2]=1728;H[c+56|0]=1;return 0}function BY(a,b){a=a|0;b=b|0;var c=0;c=Ui-16|0;Ui=c;J[c+8>>2]=4;a:{if((cp(J[b>>2],0,32,c+12|0,c+8|0)|0)<0){b=J[a+8>>2];J[b+8>>2]=0;J[a+8>>2]=b+16;mj(a,74813,17);a=2;break a}xj(a,dB(J[c+12>>2]));a=1}Ui=c+16|0;return a|0}function s2(a){a=a|0;var b=0,c=0,d=0;b=Ui-32|0;Ui=b;a=J[a+124>>2];d=pj(b+12|0,a,0,39844,788);uk(a,33989,253168);c=J[a+8>>2];J[c+8>>2]=3;O[c>>3]=4294967295;J[a+8>>2]=J[a+8>>2]+16;ej(a,-2,95982);gj(a,-2);oj(d);Ui=b+32|0}function s1(a){a=a|0;var b=0;b=J[a+12>>2];J[b+1432>>2]=0;J[b+1004>>2]=0;J[b+1516>>2]=0;J[b+1520>>2]=0;J[b+1424>>2]=0;J[b+1428>>2]=0;H[b+1389|0]=0;J[b+1076>>2]=0;J[a+20>>2]=0;J[a+48>>2]=0;J[a+28>>2]=J[a+24>>2];return 0}function qta(a){a=a|0;var b=0,c=Q(0),d=Q(0),e=Q(0);b=Ui-32|0;Ui=b;Zi[J[J[a>>2]+12>>2]](a,b+16|0,b+12|0);Ui=b+32|0;c=N[b+24>>2];d=Q(c*c);c=N[b+16>>2];e=Q(c*c);c=N[b+20>>2];return Q(Q(N[b+12>>2]+Q(Y(Q(d+Q(e+Q(c*c)))))))}function fca(a,b){a=a|0;b=b|0;var c=0;a:{if(a){Pc(J[(b<<2)+161056>>2]);if(K[J[79491]+220|0]&2){c=_()|0;if(c){break a}}$O(a+144|0,b,0);return}Z(9197,40535,4643,61495);B()}Cj(c,61495,4652);Z(114101,40535,4652,61495);B()}function dJ(a){var b=0;b=J[a+8>>2];J[b+8>>2]=2;J[b>>2]=173768;J[a+8>>2]=J[a+8>>2]+16;Ll(a,-1e4);if((kj(a,-1)|0)!=5){gj(a,-2);Fj(a,0,1);b=J[a+8>>2];J[b+8>>2]=2;J[b>>2]=173768;J[a+8>>2]=J[a+8>>2]+16;uj(a,-2);Xj(a,-1e4)}}function cva(a,b,c){a=a|0;b=b|0;c=Q(c);var d=Q(0),e=Q(0),f=Q(0),g=Q(0);f=N[b+184>>2];g=N[b+192>>2];d=N[b+104>>2];e=Q(N[b+116>>2]+N[b+112>>2]);N[a+4>>2]=c*Q(Q(d*N[b+196>>2])+Q(e*N[b+188>>2]));N[a>>2]=c*Q(Q(d*g)+Q(e*f))}function IA(a){J[a>>2]=0;J[a+4>>2]=0;J[a+56>>2]=0;J[a+60>>2]=0;J[a+48>>2]=0;J[a+52>>2]=0;J[a+40>>2]=0;J[a+44>>2]=0;J[a+32>>2]=0;J[a+36>>2]=0;J[a+24>>2]=0;J[a+28>>2]=0;J[a+16>>2]=0;J[a+20>>2]=0;J[a+8>>2]=0;J[a+12>>2]=0}function $ba(a,b){a=a|0;b=b|0;var c=0;a:{if(a){Ic(J[(b<<2)+161056>>2]);if(K[J[79491]+220|0]&2){c=_()|0;if(c){break a}}$O(a+144|0,b,1);return}Z(9197,40535,4627,61539);B()}Cj(c,61539,4636);Z(114101,40535,4636,61539);B()}function wma(a){a=a|0;var b=0,c=0,d=0;b=Ui-16|0;Ui=b;c=dn(a,2);a=Pl(a,1);N[b>>2]=N[a>>2];N[b+4>>2]=N[a+4>>2];N[b+8>>2]=N[a+8>>2];a=J[b+4>>2];d=J[b>>2];N[c+24>>2]=N[b+8>>2];J[c+16>>2]=d;J[c+20>>2]=a;Ui=b+16|0;return 0}function ixa(a,b,c,d){var e=0,f=0,g=0,h=0,i=0,j=0;e=c>>>16|0;f=a>>>16|0;j=P(e,f);g=c&65535;h=a&65535;i=P(g,h);f=(i>>>16|0)+P(f,g)|0;e=(f&65535)+P(e,h)|0;Yi=(P(b,c)+j|0)+P(a,d)+(f>>>16)+(e>>>16)|0;return i&65535|e<<16}function gm(a,b){var c=0,d=0;c=Ui+-64|0;Ui=c;a:{b:{if(!sm(a,1)){break b}xj(a,b);Ll(a,-2);d=kj(a,-1);gj(a,-3);if(!d){break b}d=Vj(a,1);if(d){break a}}J[c>>2]=b;b=c+16|0;Un(b,73704,c);Dk(a,1,b);d=0}Ui=c- -64|0;return d}function XE(a,b){var c=0;if(!J[a+28>>2]){c=J[a+12>>2];c=Zi[J[J[c>>2]+12>>2]](c)|0;Ir(b,J[a+24>>2],P(c,28));J[a+24>>2]=0;if(H[J[a+12>>2]+20|0]&1){Ir(b,J[a+40>>2],P(c,6))}J[a+12>>2]=0;return}Z(112651,41497,86,3321);B()}function UU(a,b){a=a|0;b=b|0;var c=0,d=Q(0),e=Q(0),f=Q(0),g=Q(0),h=Q(0);c=J[b+52>>2];h=N[c+12>>2];d=N[c+20>>2];e=N[b+100>>2];f=N[c+24>>2];g=N[b+104>>2];N[a+4>>2]=Q(Q(d*e)+Q(f*g))+N[c+16>>2];N[a>>2]=h+Q(Q(f*e)-Q(d*g))}function IB(a){var b=0,c=0,d=0,e=0;a:{if(!a){break a}c=J[a>>2];b=J[c+108>>2];d=J[c+112>>2];if((b|0)==(d|0)){break a}while(1){e=J[J[b>>2]+32>>2];if(e){Zi[e|0](a);d=J[c+112>>2]}b=b+4|0;if((d|0)!=(b|0)){continue}break}}}function FB(a){var b=0,c=0,d=0,e=0;a:{if(!a){break a}c=J[a>>2];b=J[c+108>>2];d=J[c+112>>2];if((b|0)==(d|0)){break a}while(1){e=J[J[b>>2]+28>>2];if(e){Zi[e|0](a);d=J[c+112>>2]}b=b+4|0;if((d|0)!=(b|0)){continue}break}}}function Dia(a){a=a|0;var b=0,c=0;b=J[a>>2];c=J[b+32>>2];a=J[a+4>>2];if(a>>>0>2]-c>>3>>>0){a=J[(a<<3)+c>>2];c=J[b+20>>2];b=J[b+16>>2];if(a>>>0<(c-b|0)/20>>>0){return b+P(a,20)|0}}Z(145396,53895,487,84789);B()}function DK(a){J[a>>2]=0;J[a+4>>2]=0;J[a+40>>2]=0;J[a+44>>2]=0;J[a+32>>2]=0;J[a+36>>2]=0;J[a+24>>2]=0;J[a+28>>2]=0;J[a+16>>2]=0;J[a+20>>2]=0;J[a+8>>2]=0;J[a+12>>2]=0;J[a+24>>2]=805306368;J[a+20>>2]=805306368;return a}function rva(a,b){a=a|0;b=b|0;var c=0,d=Q(0),e=Q(0),f=Q(0),g=Q(0),h=Q(0);c=J[b+52>>2];h=N[c+12>>2];d=N[c+20>>2];e=N[b+68>>2];f=N[c+24>>2];g=N[b+72>>2];N[a+4>>2]=Q(Q(d*e)+Q(f*g))+N[c+16>>2];N[a>>2]=h+Q(Q(f*e)-Q(d*g))}function Kca(a){a=a|0;var b=0,c=0,d=0;b=Ui-32|0;Ui=b;d=pj(b+12|0,a,0,39971,819);a:{if((kj(a,1)|0)!=7){break a}c=Kk(a,1,J[77574]);if(!c){break a}if(!lo(J[c>>2])){break a}hk(a,-1e4,J[c+44>>2])}oj(d);Ui=b+32|0;return 0}function Fx(){var a=0;a=nj(48);J[a+16>>2]=0;J[a+20>>2]=0;J[a>>2]=0;J[a+4>>2]=0;J[a+32>>2]=0;J[a+36>>2]=0;J[a+24>>2]=0;J[a+28>>2]=0;J[a+8>>2]=0;J[a+12>>2]=0;J[a+40>>2]=0;J[a+44>>2]=0;J[a+20>>2]=-1;Vx(a,9,16);return a}function Fua(a,b){a=a|0;b=b|0;var c=0,d=Q(0),e=Q(0),f=Q(0),g=Q(0),h=Q(0);c=J[b+48>>2];h=N[c+12>>2];d=N[c+20>>2];e=N[b+76>>2];f=N[c+24>>2];g=N[b+80>>2];N[a+4>>2]=Q(Q(d*e)+Q(f*g))+N[c+16>>2];N[a>>2]=h+Q(Q(f*e)-Q(d*g))}function Eua(a,b){a=a|0;b=b|0;var c=0,d=Q(0),e=Q(0),f=Q(0),g=Q(0),h=Q(0);c=J[b+52>>2];h=N[c+12>>2];d=N[c+20>>2];e=N[b+84>>2];f=N[c+24>>2];g=N[b+88>>2];N[a+4>>2]=Q(Q(d*e)+Q(f*g))+N[c+16>>2];N[a>>2]=h+Q(Q(f*e)-Q(d*g))}function xoa(a){a=a|0;var b=0,c=0;if(iS(979376)){b=1}else{b=iS(978352)}if(b){c=J[a+8>>2];J[c+8>>2]=3;O[c>>3]=b|0;J[a+8>>2]=J[a+8>>2]+16;Fm(978352);Fm(979376);return 1}b=J[a+8>>2];J[b+8>>2]=0;J[a+8>>2]=b+16;return 1}function tz(a,b){a=a|0;b=b|0;var c=0,d=Q(0),e=Q(0),f=Q(0),g=Q(0),h=Q(0);c=J[b+48>>2];h=N[c+12>>2];d=N[c+20>>2];e=N[b+68>>2];f=N[c+24>>2];g=N[b+72>>2];N[a+4>>2]=Q(Q(d*e)+Q(f*g))+N[c+16>>2];N[a>>2]=h+Q(Q(f*e)-Q(d*g))}function sz(a,b){a=a|0;b=b|0;var c=0,d=Q(0),e=Q(0),f=Q(0),g=Q(0),h=Q(0);c=J[b+52>>2];h=N[c+12>>2];d=N[c+20>>2];e=N[b+76>>2];f=N[c+24>>2];g=N[b+80>>2];N[a+4>>2]=Q(Q(d*e)+Q(f*g))+N[c+16>>2];N[a>>2]=h+Q(Q(f*e)-Q(d*g))}function sia(a){a=a|0;var b=0,c=0;b=J[a>>2];c=J[b+16>>2];a=J[a+4>>2];if(a>>>0>2]-c>>3>>>0){a=J[(a<<3)+c>>2];c=J[b+4>>2];b=J[b>>2];if(a>>>0<(c-b|0)/240>>>0){return b+P(a,240)|0}}Z(145396,53895,487,84789);B()}function eV(a,b){a=a|0;b=b|0;var c=0,d=Q(0),e=Q(0),f=Q(0),g=Q(0),h=Q(0);c=J[b+48>>2];h=N[c+12>>2];d=N[c+20>>2];e=N[b+80>>2];f=N[c+24>>2];g=N[b+84>>2];N[a+4>>2]=Q(Q(d*e)+Q(f*g))+N[c+16>>2];N[a>>2]=h+Q(Q(f*e)-Q(d*g))}function dV(a,b){a=a|0;b=b|0;var c=0,d=Q(0),e=Q(0),f=Q(0),g=Q(0),h=Q(0);c=J[b+52>>2];h=N[c+12>>2];d=N[c+20>>2];e=N[b+88>>2];f=N[c+24>>2];g=N[b+92>>2];N[a+4>>2]=Q(Q(d*e)+Q(f*g))+N[c+16>>2];N[a>>2]=h+Q(Q(f*e)-Q(d*g))}function VU(a,b){a=a|0;b=b|0;var c=0,d=Q(0),e=Q(0),f=Q(0),g=Q(0),h=Q(0);c=J[b+48>>2];h=N[c+12>>2];d=N[c+20>>2];e=N[b+92>>2];f=N[c+24>>2];g=N[b+96>>2];N[a+4>>2]=Q(Q(d*e)+Q(f*g))+N[c+16>>2];N[a>>2]=h+Q(Q(f*e)-Q(d*g))}function Q9(a){a=a|0;var b=0,c=0,d=0;b=Ui-16|0;Ui=b;d=J[a+8>>2]-J[a+12>>2]|0;c=Qj(a,1,b+12|0);Bk(a,J[c+640>>2],J[c+644>>2]);if(((d>>4)+1|0)!=J[a+8>>2]-J[a+12>>2]>>4){Z(143334,37682,549,76490);B()}Ui=b+16|0;return 1}function zaa(a,b,c,d,e){a=a|0;b=b|0;c=c|0;d=d|0;e=e|0;a:{if(a){dc(b|0,c|0,d|0,e|0);if(K[J[79491]+220|0]&2){a=_()|0;if(a){break a}}return}Z(9197,40535,3099,10213);B()}Cj(a,10213,3102);Z(114101,40535,3102,10213);B()}function tk(a){var b=0,c=0;J[a+8>>2]=J[a+4>>2];if(J[a+32>>2]!=287){b=a+16|0;a=a+32|0;c=J[a+4>>2];J[b>>2]=J[a>>2];J[b+4>>2]=c;c=J[a+12>>2];J[b+8>>2]=J[a+8>>2];J[b+12>>2]=c;J[a>>2]=287;return}J[a+16>>2]=HI(a,a+24|0)}function qja(a){a=a|0;var b=0,c=0;b=J[a>>2];c=J[b+20>>2];a=J[a+4>>2];if(a>>>0>2]-c>>3>>>0){a=J[(a<<3)+c>>2];c=J[b+8>>2];b=J[b+4>>2];if(a>>>0>2>>>0){return J[b+(a<<2)>>2]}}Z(145396,53895,487,84789);B()}function Su(a,b,c,d){var e=0;e=J[a+2132>>2];a:{if((e|0)==J[a+2136>>2]){dj(4,90423,101486,0);a=255;break a}J[a+2132>>2]=e+12;J[e+8>>2]=d;J[e+4>>2]=c;J[e>>2]=b;a=((J[a+2132>>2]-J[a+2128>>2]|0)/12|0)-1|0}return a&255}function Jaa(a,b,c,d,e){a=a|0;b=b|0;c=c|0;d=d|0;e=e|0;a:{if(a){sc(b|0,c|0,d|0,e|0);if(K[J[79491]+220|0]&2){a=_()|0;if(a){break a}}return}Z(9197,40535,4755,32534);B()}Cj(a,32534,4757);Z(114101,40535,4757,32534);B()}function Dt(a,b){var c=0,d=0,e=0;c=a*a;d=a*c;e=c*c;a=d*e*(e*(c*.009465647849436732+.002974357433599673)+(c*.024528318116654728+.05338123784456704))+(d*(c*.13339200271297674+.3333313950307914)+a);return Q(b?-1/a:a)}function taa(a){a=a|0;var b=0,c=0;b=Ui-32|0;Ui=b;c=Vj(a,1);J[b+24>>2]=0;J[b+28>>2]=0;J[b+16>>2]=0;J[b+20>>2]=0;J[b+8>>2]=0;J[b+12>>2]=0;J[b>>2]=0;J[b+4>>2]=0;Zi[J[J[c+12>>2]+4>>2]](c,b);wm(a,b);Ui=b+32|0;return 1}function sr(a,b){var c=0;c=24;a:{b:{c:{d:{switch(b|0){case 1:break c;case 0:break d;default:break a}}c=16;if(!(H[a+172|0]&1)){break c}b=J[a+20>>2];if(b){break b}}b=J[a+c>>2]}return b}Z(152483,40773,607,46519);B()}function eI(a,b,c){var d=0;d=J[a>>2];if((b-d|0)<=0){return-96}if(K[d|0]!=3){return-98}J[a>>2]=d+1;b=Vo(a,b,c);if(!b){b=J[c>>2];J[c>>2]=b-1;if(b>>>0<2){return-104}b=a;a=J[a>>2];J[b>>2]=a+1;b=K[a|0]?-104:0}return b}function UA(a,b,c){var d=0,e=0;d=nu(b,c);H[b+6|0]=0;if((d|0)==173288){d=49673;a:{b:{switch(J[c+8>>2]){case 3:e=O[c>>3];if(e==e){break a}d=91077;break;case 0:break b;default:break a}}xl(a,d,0)}d=Rt(a,b,c)}return d}function Cl(a,b){var c=0;c=Ui-32|0;Ui=c;a:{if((b|0)<=256){a=J[a+52>>2];if((b|0)==127|b>>>0<32){J[c+16>>2]=b;a=gk(a,139850,c+16|0);break a}J[c>>2]=b;a=gk(a,82666,c);break a}a=J[(b<<2)+256476>>2]}Ui=c+32|0;return a}function xj(a,b){var c=0,d=0;a:{if(!b){b=J[a+8>>2];J[b+8>>2]=0;a=a+8|0;break a}d=yj(b);c=J[a+16>>2];if(M[c+68>>2]>=M[c+64>>2]){Om(a)}c=J[a+8>>2];b=zk(a,b,d);J[c+8>>2]=4;J[c>>2]=b;b=J[a+8>>2];a=a+8|0}J[a>>2]=b+16}function fC(a,b,c){var d=0;d=J[a+2132>>2];a:{if((d|0)==J[a+2136>>2]){dj(4,90423,101486,0);a=255;break a}J[a+2132>>2]=d+12;J[d+8>>2]=c;J[d+4>>2]=0;J[d>>2]=b;a=((J[a+2132>>2]-J[a+2128>>2]|0)/12|0)-1|0}return a&255}function bn(a,b,c,d,e){var f=0,g=0;a:{if(!b){break a}g=J[a+2480>>2];a=J[b+32>>2];f=J[b+36>>2];if((a&f)==-1){break a}Zi[J[79430]](g,a,f,c);Zi[J[79458]](d,e,J[b+12>>2],J[b+16>>2],J[b+20>>2],J[b+24>>2],N[b+40>>2])}}function L9(a){a=a|0;var b=0,c=0;c=J[a+8>>2]-J[a+12>>2]|0;Bj(a);b=qj(a,-1,J[219396],139183);gj(a,-2);Bk(a,J[b+344>>2],J[b+348>>2]);if(((c>>4)+1|0)!=J[a+8>>2]-J[a+12>>2]>>4){Z(143334,37682,2558,9521);B()}return 1}function IJ(a,b){var c=0,d=0,e=0;c=Ui-32|0;Ui=c;J[c+16>>2]=0;d=nm(a,3,c+16|0);a:{if((d|0)<0){a=744}else{J[c>>2]=b?d&2147481599:d|2048;if((nm(a,4,c)|0)>=0){break a}a=758}e=Pm(36957,a,J[245744])}Ui=c+32|0;return e}function I1(a){a=a|0;var b=0,c=Q(0),d=Q(0),e=Q(0),f=Q(0);b=Vj(a,1);c=N[b>>2];d=N[b+4>>2];e=N[b+8>>2];f=N[b+12>>2];b=Sj(a,16);N[b+12>>2]=-f;N[b+8>>2]=-e;N[b+4>>2]=-d;N[b>>2]=-c;rj(a,-1e4,106998);Mj(a,-2);return 1}function $ia(a){a=a|0;var b=0,c=0;b=J[a>>2];c=J[b+16>>2];a=J[a+4>>2];if(a>>>0>2]-c>>3>>>0){a=J[(a<<3)+c>>2];c=J[b+4>>2];b=J[b>>2];if(a>>>0>2>>>0){return J[b+(a<<2)>>2]}}Z(145396,53895,487,84789);B()}function os(a,b){var c=0,d=0;c=J[a+8>>2];if((c|0)!=J[b+8>>2]){return 0}d=1;a:{switch(c|0){case 3:return O[a>>3]==O[b>>3];default:d=J[a>>2]==J[b>>2];case 0:return d;case 1:case 2:break a}}return J[a>>2]==J[b>>2]}function cga(a){a=a|0;var b=0,c=0,d=0,e=0,f=0;b=Ui-32|0;Ui=b;c=pj(b+12|0,a,0,42133,1176);d=mk(a,1);e=Yi;a=J[J[pk(a)+80>>2]+8>>2];if(YP(J[78228],a,d,e)){J[b>>2]=tj(d,e);f=Jj(c,30166,b)}oj(c);Ui=b+32|0;return f|0}function JX(a){a=a|0;var b=0;Oj(a,1,1);a=(ck(a,1)|0)!=0;b=Ui-16|0;Ui=b;a:{if((a|0)==K[218556]){break a}H[218556]=a;if(a){J[b>>2]=J[54638];aa(293261,158960,b|0)|0;break a}aa(293310,158860,0)|0}Ui=b+16|0;return 0}function Dea(a){a=a|0;var b=0;b=J[a>>2];a=J[J[a+8>>2]+8>>2];FD(b,a);if(a){a:{if(H[a+40|0]&1){break a}b=J[a+28>>2];if(!b){break a}cj(b)}b:{if(H[a+24|0]&1){break b}b=J[a+12>>2];if(!b){break b}cj(b)}cj(a)}return 0}function vk(a){var b=0,c=0,d=0,e=0;d=$n(a);e=Zi[J[a+12>>2]](a)|0;if(!(H[a|0]&1)){b=J[a+56>>2];c=J[a+52>>2];if(c){J[c+56>>2]=b}if(b){J[b+52>>2]=c}if(J[245822]==(a|0)){J[245822]=b}cj(J[a+96>>2]);cj(a)}return d|e}function zS(){var a=0,b=0,c=0;a=Ui-16|0;Ui=a;b=J[73866];a:{if(!b){break a}c=J[b>>2]-1|0;J[b>>2]=c;if(c){break a}cj(b)}J[73866]=0;J[54638]=14272;if(K[218556]==1){J[a>>2]=14272;aa(293419,158960,a|0)|0}Ui=a+16|0}function hu(a,b){var c=0,d=0;c=Ui-112|0;Ui=c;a:{b:{d=b;b=c+12|0;if(!Zl(a,d,b)){break b}Yo(a,50598,b);b=J[c+32>>2];if((b|0)<=0){break b}J[c+4>>2]=b;J[c>>2]=c+48;ik(a,154295,c);break a}mj(a,158859,0)}Ui=c+112|0}function gj(a,b){var c=0;a:{if((b|0)>=0){b=J[a+12>>2]+(b<<4)|0;c=J[a+8>>2];if(b>>>0<=c>>>0){break a}while(1){J[c+8>>2]=0;c=c+16|0;if(c>>>0>>0){continue}break}break a}b=(J[a+8>>2]+(b<<4)|0)+16|0}J[a+8>>2]=b}function _ja(a,b){a=a|0;b=b|0;a:{if((J[b+8>>2]&-2)==2){if(!J[b+20>>2]){break a}J[a+1048>>2]=0;J[a+1052>>2]=0;J[a+1040>>2]=b;J[a+1056>>2]=275;return}Z(87420,40837,3117,23286);B()}Z(113851,40837,3118,23286);B()}function Cja(a,b,c,d,e,f){a=a|0;b=b|0;c=c|0;d=d|0;e=e|0;f=f|0;var g=0,h=0;g=J[a+220>>2];if(!g){g=Hq();J[a+220>>2]=g}h=J[a+224>>2];if(!h){h=J[J[a+216>>2]+4>>2]}xr(g,J[h>>2],b,c,d,e,f);I[a+246>>1]=L[a+246>>1]|8}function $7(a){a=a|0;var b=0,c=0;Bj(a);qj(a,-1,J[219396],139183);gj(a,-2);b=Ej(a,1);Oj(a,2,1);a=ck(a,2);c=(a|0)!=0;a=Ui-16|0;Ui=a;if(b>>>0>=4){J[a>>2]=b;dj(3,97141,155139,a);B()}Ss(b|4,1,c);Ui=a+16|0;return 0}function qV(a,b){var c=0;c=J[a>>2];if(!((c|0)==2|(c|0)==1|J[b>>2]-1>>>0<=1)){return 0}a=J[a+108>>2];if(a){while(1){if(!(K[J[a+4>>2]+61|0]|J[a>>2]!=(b|0))){return 0}a=J[a+12>>2];if(a){continue}break}}return 1}function oV(a,b){var c=0,d=0;c=J[a+40>>2];if((c|0)==J[a+36>>2]){J[a+36>>2]=c<<1;d=J[a+32>>2];c=sj(c<<3);J[a+32>>2]=c;hj(c,d,J[a+40>>2]<<2);cj(d);c=J[a+40>>2]}J[J[a+32>>2]+(c<<2)>>2]=b;J[a+40>>2]=J[a+40>>2]+1}function fka(a){a=a|0;var b=0;b=Ui-16|0;Ui=b;a=GO(J[J[J[a+16>>2]>>2]+8>>2]);if(a){a=a+10|0;if(a>>>0>10){a=102253}else{a=J[(a<<2)+286536>>2]}J[b>>2]=a;dj(4,88458,118600,b);a=-1e3}else{a=0}Ui=b+16|0;return a|0}function _R(a,b,c){var d=0,e=0,f=0,g=0;d=J[b+40>>2]+15&-16;e=J[c+16>>2];f=d+e|0;J[b+40>>2]=f;g=K[b+44|0];if(!(g|M[b+36>>2]>=f>>>0)){Z(71484,37410,42,68562);B()}H[a+12|0]=g;J[a+4>>2]=d;J[a>>2]=c;J[a+8>>2]=d+e}function Lja(a){a=a|0;var b=0,c=0;b=J[a>>2];c=J[b+16>>2];a=J[a+4>>2];if(a>>>0>2]-c>>3>>>0){a=J[(a<<3)+c>>2];c=J[b+4>>2];b=J[b>>2];if(a>>>0>8>>>0){return b+(a<<8)|0}}Z(145396,53895,487,84789);B()}function vka(a){a=a|0;var b=0,c=0,d=0,e=0;b=Ui-16|0;Ui=b;d=J[a+8>>2];e=J[a+12>>2];c=J[J[a+16>>2]>>2];J[c>>2]=J[a+4>>2];H[c+28|0]=K[c+28|0]&249|4;if(!AQ(e,d,c,1)){J[b>>2]=129648;dj(4,88458,31902,b)}Ui=b+16|0}function ija(a,b,c,d,e,f){a=a|0;b=b|0;c=c|0;d=d|0;e=e|0;f=f|0;var g=0,h=0;g=J[a+148>>2];if(!g){g=Hq();J[a+148>>2]=g}h=J[a+192>>2];if(!h){h=J[J[a+152>>2]+8>>2]}xr(g,J[h>>2],b,c,d,e,f);H[a+204|0]=K[a+204|0]|4}function bga(a){a=a|0;var b=0;a:{if(J[a+8>>2]!=1){break a}b=J[a+16>>2];if((b|0)==J[a+20>>2]){break a}while(1){Bo(J[a>>2],J[(J[a+12>>2]+P(J[b>>2],48)|0)+16>>2]);b=b+4|0;if((b|0)!=J[a+20>>2]){continue}break}}}function NI(a){var b=0;b=J[a+8>>2];if((b-J[a+4>>2]|0)>=-1){ql(a,b+1|0);b=J[a+8>>2]}J[a+8>>2]=b+1;H[J[a>>2]+b|0]=91;b=J[a+8>>2];if((b-J[a+4>>2]|0)>=-1){ql(a,b+1|0);b=J[a+8>>2]}J[a+8>>2]=b+1;H[J[a>>2]+b|0]=93}function j6(a){a=a|0;var b=0,c=0,d=0,e=0;c=Ui-32|0;Ui=c;e=pj(c+12|0,a,1,37616,550);b=Vj(a,1);if(b){d=+J[b+328>>2]}else{d=-2}b=J[a+8>>2];J[b+8>>2]=3;O[b>>3]=d;J[a+8>>2]=J[a+8>>2]+16;oj(e);Ui=c+32|0;return 1}function i6(a){a=a|0;var b=0,c=0,d=0,e=0;c=Ui-32|0;Ui=c;e=pj(c+12|0,a,1,37616,562);b=Vj(a,1);if(b){d=+J[b+324>>2]}else{d=-2}b=J[a+8>>2];J[b+8>>2]=3;O[b>>3]=d;J[a+8>>2]=J[a+8>>2]+16;oj(e);Ui=c+32|0;return 1}function Zma(a){a=a|0;var b=0,c=0,d=0,e=0;c=Ui-32|0;Ui=c;e=pj(c+12|0,a,1,37509,356);b=Vj(a,1);if(b){d=+J[b+20>>2]}else{d=-2}b=J[a+8>>2];J[b+8>>2]=3;O[b>>3]=d;J[a+8>>2]=J[a+8>>2]+16;oj(e);Ui=c+32|0;return 1}function Yma(a){a=a|0;var b=0,c=0,d=0,e=0;c=Ui-32|0;Ui=c;e=pj(c+12|0,a,1,37509,368);b=Vj(a,1);if(b){d=+J[b+16>>2]}else{d=-2}b=J[a+8>>2];J[b+8>>2]=3;O[b>>3]=d;J[a+8>>2]=J[a+8>>2]+16;oj(e);Ui=c+32|0;return 1}function VE(a,b,c){var d=0,e=0;d=Ui-128|0;Ui=d;e=J[J[a+40>>2]+8>>2]+(J[J[a+32>>2]+(b<<2)>>2]<<2)|0;if(L[e+2>>1]>=17){Z(105899,41688,195,49612);B()}Ko(a,b,d);qz(c,d,L[e+2>>1]);N[c+8>>2]=N[a+8>>2];Ui=d+128|0}function Fs(a,b){var c=0,d=0,e=0;e=ij(b,0,129);c=J[a+140>>2];if(c){b=J[a+144>>2];while(1){b=(((b|0)<=0?127:-1)+b|0)%128|0;H[(c+e|0)+(d^-1)|0]=K[b+a|0];d=d+1|0;c=J[a+140>>2];if(d>>>0>>0){continue}break}}}function $H(a,b,c,d){var e=0;e=-13;b=WH(b,d);a:{if(!b|J[b+24>>2]!=16){break a}if(a){e=J[a+60>>2];if(e){Zi[J[J[J[a>>2]+28>>2]+32>>2]](e)}Zi[J[66509]](a,0,64)|0}e=Dw(a,b);if(e){break a}e=Ew(a,c,d,1)}return e}function vaa(a){a=a|0;var b=0,c=0,d=0,e=0;c=Ui-32|0;Ui=c;e=pj(c+12|0,a,1,37682,274);b=Vj(a,1);if(b){d=+J[b+8>>2]}else{d=-2}b=J[a+8>>2];J[b+8>>2]=3;O[b>>3]=d;J[a+8>>2]=J[a+8>>2]+16;oj(e);Ui=c+32|0;return 1}function uaa(a){a=a|0;var b=0,c=0,d=0,e=0;c=Ui-32|0;Ui=c;e=pj(c+12|0,a,1,37682,286);b=Vj(a,1);if(b){d=+J[b+4>>2]}else{d=-2}b=J[a+8>>2];J[b+8>>2]=3;O[b>>3]=d;J[a+8>>2]=J[a+8>>2]+16;oj(e);Ui=c+32|0;return 1}function Q8(a){a=a|0;var b=0,c=0,d=0,e=0;b=Ui-16|0;Ui=b;c=Qj(a,1,b+12|0);d=wj(a,2);e=J[c+476>>2]&-4390913;if(R(d)<2147483648){a=~~d}else{a=-2147483648}J[c+476>>2]=e|a<<16&196608|4194304;Ui=b+16|0;return 0}function oia(a,b){a=a|0;b=b|0;a:{if(J[b+8>>2]==2){if(!J[b+20>>2]){break a}J[a+1048>>2]=0;J[a+1052>>2]=0;J[a+1040>>2]=b;J[a+1056>>2]=318;return}Z(87364,41391,2428,23331);B()}Z(113851,41391,2429,23331);B()}function o4(a){a=a|0;var b=0,c=0;b=Ui-1040|0;Ui=b;if(Mk(a,1)){Fj(a,0,2);uj(a,1);ej(a,-2,32757);J[b+12>>2]=1024;H[b+4|0]=1;c=b+16|0;J[b+8>>2]=c;aK(a,1705,b+4|0);xj(a,c);ej(a,-2,51795)}Ui=b+1040|0;return 1}function mja(a,b){a=a|0;b=b|0;a:{if(J[b+8>>2]==2){if(!J[b+20>>2]){break a}J[a+1048>>2]=0;J[a+1052>>2]=0;J[a+1040>>2]=b;J[a+1056>>2]=284;return}Z(87364,40994,1153,23308);B()}Z(113851,40994,1154,23308);B()}function _da(a){a=a|0;var b=0,c=0;b=J[J[a+8>>2]+8>>2];a=J[b>>2];if(a){EJ(a);a=jx(J[b>>2]);J[b>>2]=0;a=a?-6:0}else{a=0}c=J[J[b+8>>2]+8>>2];if(c){QV(c,J[b+16>>2],J[b+20>>2])}cj(J[b+12>>2]);cj(b);return a|0}function Xia(a,b){a=a|0;b=b|0;a:{if(J[b+8>>2]==2){if(!J[b+20>>2]){break a}J[a+1048>>2]=0;J[a+1052>>2]=0;J[a+1040>>2]=b;J[a+1056>>2]=758;return}Z(87364,40609,2145,23238);B()}Z(113851,40609,2146,23238);B()}function Fka(a,b){a=a|0;b=b|0;a:{if(J[b+8>>2]==2){if(!J[b+20>>2]){break a}J[a+1048>>2]=0;J[a+1052>>2]=0;J[a+1040>>2]=b;J[a+1056>>2]=236;return}Z(87364,38329,2142,23210);B()}Z(113851,38329,2143,23210);B()}function $ha(a,b){a=a|0;b=b|0;a:{if(J[b+8>>2]==2){if(!J[b+20>>2]){break a}J[a+1048>>2]=0;J[a+1052>>2]=0;J[a+1040>>2]=b;J[a+1056>>2]=323;return}Z(87364,42414,1020,23356);B()}Z(113851,42414,1021,23356);B()}function d$(a){a=a|0;var b=0,c=0,d=0;b=Ui-16|0;Ui=b;c=nB(a,Aj(a,1,0),53134);a:{if(!c){break a}if(!RA(a,c)){break a}d=Ij(a,1,0);J[b+8>>2]=Ij(a,-1,0);J[b+4>>2]=c;J[b>>2]=d;fj(a,31859,b)}Ui=b+16|0;return 1}function Rk(a){var b=0,c=0,d=0,e=0;b=Ui-16|0;Ui=b;d=-1;c=Zi[J[a+8>>2]](J[a+16>>2],J[a+12>>2],b+12|0)|0;a:{if(!c){break a}e=J[b+12>>2];if(!e){break a}J[a+4>>2]=c+1;J[a>>2]=e-1;d=K[c|0]}Ui=b+16|0;return d}function Jna(a,b){a=a|0;b=b|0;a:{if(J[b+8>>2]==2){if(!J[b+20>>2]){break a}J[a+1048>>2]=0;J[a+1052>>2]=0;J[a+1040>>2]=b;J[a+1056>>2]=86;return}Z(87364,37648,1159,23185);B()}Z(113851,37648,1160,23185);B()}function Dua(a,b,c){a=a|0;b=b|0;c=Q(c);var d=Q(0),e=Q(0),f=Q(0),g=Q(0);f=N[b+180>>2];g=N[b+172>>2];d=N[b+108>>2];e=N[b+116>>2];N[a+4>>2]=c*Q(Q(d*N[b+184>>2])+Q(e*N[b+176>>2]));N[a>>2]=c*Q(Q(d*f)+Q(e*g))}function Kl(a){var b=0,c=0;a:{if(!a){break a}b=J[a>>2];if(!b){break a}c=J[a+4>>2];if(c){Zi[J[b+36>>2]](c)}b=J[a+8>>2];if(b){Zi[J[66509]](b,0,J[J[a>>2]+12>>2]<<1)|0;cj(J[a+8>>2])}Zi[J[66509]](a,0,12)|0}}function IH(){if(!K[865328]){J[216346]=10;J[216347]=0;J[216344]=11;J[216345]=1;J[216342]=6;J[216343]=2;J[216340]=3;J[216341]=12;J[216338]=4;J[216339]=7;J[216336]=5;J[216337]=8;H[865328]=1}return 865344}function Hja(a,b){a=a|0;b=b|0;a:{if(J[b+8>>2]==2){if(!J[b+20>>2]){break a}J[a+1048>>2]=0;J[a+1052>>2]=0;J[a+1040>>2]=b;J[a+1056>>2]=326;return}Z(87364,40690,820,23262);B()}Z(113851,40690,821,23262);B()}function Bea(a){a=a|0;var b=0,c=0;c=Ui-16|0;Ui=c;b=-2;if(!dk(J[a+20>>2],J[a+24>>2],239048,c+12|0,0)){b=J[J[a+36>>2]+8>>2];FD(J[a>>2],b);J[b>>2]=J[c+12>>2];b=OQ(J[a+4>>2],J[a>>2],b)}Ui=c+16|0;return b|0}function Aj(a,b,c){var d=0,e=0,f=0;d=Ui-16|0;Ui=d;e=Ij(a,b,c);if(!e){f=J[64412];c=kj(a,b);if((c|0)==-1){c=60960}else{c=J[(c<<2)+257632>>2]}J[d+4>>2]=c;J[d>>2]=f;Dk(a,b,ik(a,26749,d))}Ui=d+16|0;return e}function wua(a){a=a|0;var b=0,c=0;A(+(ok(a,1)+6755399441055744));v(1)|0;b=v(0)|0;a:{if(b){break a}if(kk(a,1)){break a}Yk(a,1,36031)}c=J[a+8>>2];J[c+8>>2]=3;O[c>>3]=b^-1;J[a+8>>2]=J[a+8>>2]+16;return 1}function h5(a,b){a=a|0;b=b|0;var c=0,d=0;c=Ui-32|0;Ui=c;d=J[b+4>>2];J[c+8>>2]=J[b>>2];J[c+12>>2]=d;J[c+16>>2]=J[b+8>>2];J[c+20>>2]=J[b+12>>2];H[c+24|0]=K[b+16|0];Zi[J[a>>2]](J[a+4>>2],c+8|0);Ui=c+32|0}function d8(a){a=a|0;var b=0,c=0,d=0,e=0;b=Ui-32|0;Ui=b;c=pj(b+12|0,a,0,37682,3447);Qj(a,1,b+8|0);d=ck(a,2);Bj(a);e=qj(a,-1,J[219396],139183);gj(a,-2);XN(e,J[b+8>>2],(d|0)!=0);oj(c);Ui=b+32|0;return 0}function BB(a,b){var c=0;c=Ui-32|0;Ui=c;pj(c+12|0,a,1,37704,1321);Hu(a);a:{if((kj(a,-1)|0)!=5){gj(a,-2);b=J[a+8>>2];J[b+8>>2]=0;J[a+8>>2]=b+16;break a}Nj(a,-1,b);Pk(a,-2);gj(a,-2)}oj(c+12|0);Ui=c+32|0}function uF(a,b,c,d){var e=0;e=J[a>>2];a:{if((e|0)==(b|0)){break a}J[c>>2]=K[e|0];b=Qk(a,b,c+4|0,d|160);if((b|0)==-98){break a}if(b){return b-8576|0}b=J[a>>2];J[c+8>>2]=b;J[a>>2]=b+J[c+4>>2]}return 0}function oua(a){a=a|0;var b=0,c=0;A(+(ok(a,1)+6755399441055744));v(1)|0;b=v(0)|0;a:{if(b){break a}if(kk(a,1)){break a}Yk(a,1,36031)}c=J[a+8>>2];J[c+8>>2]=3;O[c>>3]=b|0;J[a+8>>2]=J[a+8>>2]+16;return 1}function gta(a,b,c){a=a|0;b=b|0;c=c|0;var d=0,e=Q(0);d=Ui-16|0;Ui=d;J[d+8>>2]=-1;J[d+12>>2]=J[a+16>>2];if(!J[b+4>>2]){J[b+4>>2]=d+8}a=J[a+12>>2];e=Q(Zi[J[J[a>>2]+12>>2]](a,b,c));Ui=d+16|0;return Q(e)}function eta(a,b,c){a=a|0;b=b|0;c=c|0;var d=0,e=Q(0);d=Ui-16|0;Ui=d;J[d+8>>2]=-1;J[d+12>>2]=J[a+20>>2];if(!J[b+4>>2]){J[b+4>>2]=d+8}a=J[a+24>>2];e=Q(Zi[J[J[a>>2]+12>>2]](a,b,c));Ui=d+16|0;return Q(e)}function cqa(a,b,c){a=a|0;b=Q(b);c=c|0;var d=Q(0),e=Q(0);d=Q(Zi[J[J[a>>2]+44>>2]](a));e=Q(Zi[J[J[a>>2]+44>>2]](a));J[c+12>>2]=0;b=Q(e*Q(d*Q(b*Q(.4000000059604645))));N[c+8>>2]=b;N[c+4>>2]=b;N[c>>2]=b}function WH(a,b){var c=0,d=0,e=0;d=269040;c=J[67261];a:{if(c){while(1){e=d;if(!(J[J[c+28>>2]>>2]!=(a|0)|J[c+8>>2]!=(b|0))&J[c+4>>2]==1){break a}d=e+8|0;c=J[e+12>>2];if(c){continue}break}}c=0}return c}function M8(a){a=a|0;var b=0,c=0,d=0,e=0;b=Ui-16|0;Ui=b;c=Qj(a,1,b+12|0);d=wj(a,2);e=J[c+476>>2]&-50331649;if(R(d)<2147483648){a=~~d}else{a=-2147483648}J[c+476>>2]=e|a<<24&50331648;Ui=b+16|0;return 0}function Cm(a,b,c,d,e){var f=0;f=Ui-256|0;Ui=f;if(!(e&73728|(c|0)<=(d|0))){d=c-d|0;c=d>>>0<256;ij(f,b,c?d:256);if(!c){while(1){rm(a,f,256);d=d-256|0;if(d>>>0>255){continue}break}}rm(a,f,d)}Ui=f+256|0}function saa(a){a=a|0;var b=0,c=0;b=Vj(a,1);if(!b){b=J[a+8>>2];J[b+8>>2]=1;J[b>>2]=0;J[a+8>>2]=J[a+8>>2]+16;return 1}b=J[b+12>>2]!=0;c=J[a+8>>2];J[c+8>>2]=1;J[c>>2]=b;J[a+8>>2]=J[a+8>>2]+16;return 1}function naa(a){a=a|0;var b=0,c=0;b=Vj(a,1);if(!b){b=J[a+8>>2];J[b+8>>2]=1;J[b>>2]=0;J[a+8>>2]=J[a+8>>2]+16;return 1}b=J[b+24>>2]!=0;c=J[a+8>>2];J[c+8>>2]=1;J[c>>2]=b;J[a+8>>2]=J[a+8>>2]+16;return 1}function f6(a){a=a|0;var b=0,c=0;b=Vj(a,1);if(!b){b=J[a+8>>2];J[b+8>>2]=1;J[b>>2]=0;J[a+8>>2]=J[a+8>>2]+16;return 1}b=J[b+304>>2]!=0;c=J[a+8>>2];J[c+8>>2]=1;J[c>>2]=b;J[a+8>>2]=J[a+8>>2]+16;return 1}function eaa(a){a=a|0;var b=0,c=0,d=0,e=0;b=Ui-32|0;Ui=b;d=pj(b+12|0,a,0,37682,1014);c=Qj(a,1,b+8|0);a:{if(K[c+479|0]&16){e=fj(a,23962,0);break a}I[c+668>>1]=L[c+668>>1]|1}oj(d);Ui=b+32|0;return e|0}function T2(a){a=a|0;var b=0,c=0;b=Ui-4128|0;Ui=b;c=b+16|0;if(ek(c,mi()|0,4098)>>>0>=4098){H[c|0]=0;c=-21}else{c=0}a:{if(c){J[b>>2]=c;a=fj(a,141787,b);break a}xj(a,b+16|0);a=1}Ui=b+4128|0;return a|0}function Oma(a){a=a|0;var b=0,c=0;b=Vj(a,1);if(!b){b=J[a+8>>2];J[b+8>>2]=1;J[b>>2]=0;J[a+8>>2]=J[a+8>>2]+16;return 1}b=J[b+44>>2]!=0;c=J[a+8>>2];J[c+8>>2]=1;J[c>>2]=b;J[a+8>>2]=J[a+8>>2]+16;return 1}function B6(a){a=a|0;var b=0,c=0,d=0,e=0;b=Ui-32|0;Ui=b;d=pj(b+12|0,a,1,42776,120);e=K[wn(a,J[84392])+320|0]>>>2|0;c=J[a+8>>2];J[c+8>>2]=1;J[c>>2]=e&1;J[a+8>>2]=J[a+8>>2]+16;oj(d);Ui=b+32|0;return 1}function tna(a){a=a|0;var b=0,c=0;b=J[a+12>>2];c=J[b+8>>2]-J[b+12>>2]|0;hk(b,-1e4,J[a+16>>2]);J[a+16>>2]=0;J[a+8>>2]=0;J[a+12>>2]=0;if(c>>4!=J[b+8>>2]-J[b+12>>2]>>4){Z(143244,37509,1475,62670);B()}}function nP(a){var b=0;b=88034;a:{switch(a-1|0){case 1:return 87993;case 3:return 87952;case 7:return 87911;case 15:return 87859;case 31:return 87818;default:b=102430;break;case 0:break a}}return b}function Uma(a){a=a|0;var b=0,c=0;b=Vj(a,1);if(!b){b=J[a+8>>2];J[b+8>>2]=1;J[b>>2]=0;J[a+8>>2]=J[a+8>>2]+16;return 1}b=J[b+4>>2]!=0;c=J[a+8>>2];J[c+8>>2]=1;J[c>>2]=b;J[a+8>>2]=J[a+8>>2]+16;return 1}function TA(a,b,c,d){var e=0,f=0;e=(d|0)!=-1?d<<23:0;f=b<<6;d=((c-1|0)/50|0)+1|0;a:{if((c|0)<=25550){d=d<<14|e|f|34;break a}El(a,e|f|34,J[J[a+12>>2]+8>>2])}El(a,d,J[J[a+12>>2]+8>>2]);J[a+36>>2]=b+1}function Kaa(a,b,c,d){a=a|0;b=b|0;c=c|0;d=d|0;a:{if(a){jc(b|0,d|0);if(K[J[79491]+220|0]&2){a=_()|0;if(a){break a}}return}Z(9197,40535,3149,34056);B()}Cj(a,34056,3151);Z(114101,40535,3151,34056);B()}function IG(a,b){var c=0,d=0;c=Ui-16|0;Ui=c;if(J[a+16>>2]!=285){d=J[a+52>>2];J[c>>2]=Cl(a,285);qk(a,gk(d,74053,c))}d=J[a+24>>2];tk(a);a=J[a+48>>2];if((HG(a,d,b,1)|0)==8){J[b+8>>2]=rs(a,d)}Ui=c+16|0}function rqa(a){a=a|0;var b=0;J[a>>2]=243976;b=J[a+488>>2];if(!(b?!b|K[a+492|0]!=1:1)){J[83765]=J[83765]+1;Zi[J[61751]](J[b-4>>2])}J[a+488>>2]=0;H[a+492|0]=1;J[a+480>>2]=0;J[a+484>>2]=0;return a|0}function cpa(a){a=a|0;var b=0,c=0;a:{switch(kj(a,2)|0){default:Dk(a,2,73869);break;case 0:case 5:break a}}gj(a,2);c=Mj(a,1);b=J[a+8>>2];J[b+8>>2]=1;J[b>>2]=(c|0)!=0;J[a+8>>2]=J[a+8>>2]+16;return 1}function U7(a,b){a=a|0;b=b|0;var c=0,d=0;b=J[a+3476>>2];c=J[b>>2];if((c|0)!=J[b+4>>2]){while(1){c=J[(d<<2)+c>>2];Zi[J[c+12>>2]](a,c);d=d+1|0;c=J[b>>2];if(d>>>0>2]-c>>2>>>0){continue}break}}}function My(a,b,c){var d=0,e=0,f=0;e=J[a>>2];a:{if(e){f=a+8|0;a=0;while(1){d=P(a,112)+f|0;if(J[d>>2]==(b|0)){if(!c){break a}J[c>>2]=a;return d}a=a+1|0;if((e|0)!=(a|0)){continue}break}}d=0}return d}function ru(a){var b=0,c=0;b=203632;c=a+1|0;a:{if(!c){break a}while(1){if(!K[b|0]){break a}while(1){a=b;b=b+1|0;if(K[a+1|0]){continue}break}b=a+2|0;c=c+1|0;if(c){continue}break}}return!K[b|0]+b|0}function nT(a){a=a|0;var b=0;J[a>>2]=245640;b=J[a+268>>2];if(!(b?!b|K[a+272|0]!=1:1)){J[83765]=J[83765]+1;Zi[J[61751]](J[b-4>>2])}J[a+268>>2]=0;H[a+272|0]=1;J[a+260>>2]=0;J[a+264>>2]=0;return a|0}function gga(a){a=a|0;var b=0,c=0,d=0;c=Ui-16|0;Ui=c;d=J[a>>2];b=J[a+4>>2];a=J[b+136>>2];if(!a){a=J[J[J[b+32>>2]>>2]>>2]}b=wk(d,a,b+36|0);if(b){J[c>>2]=a;dj(4,88458,129952,c)}Ui=c+16|0;return!b|0}function bJ(a,b){var c=0;c=J[a+44>>2];a:{b:{if(c){if(M[a+52>>2]>>0){break b}hj(b,c,6);J[a+44>>2]=J[a+44>>2]+6;return 1}c=1;if((Sl(b,6,1,J[a+32>>2])|0)==1){break a}}J[a+108>>2]=1;c=0}return c}function Zs(a,b,c,d){var e=0;e=Ui-16|0;Ui=e;rj(a,b,c);b=kj(a,-1);a:{if(b+1>>>0>=2){if((b|0)!=1){J[e+4>>2]=J[64409];J[e>>2]=c;if(!fj(a,124246,e)){break a}}H[d|0]=(ck(a,-1)|0)!=0}gj(a,-2)}Ui=e+16|0}function z6(a){a=a|0;var b=0,c=0,d=0,e=Q(0);b=Ui-32|0;Ui=b;d=pj(b+12|0,a,1,42776,195);e=N[wn(a,J[84392])+292>>2];c=J[a+8>>2];J[c+8>>2]=3;O[c>>3]=e;J[a+8>>2]=J[a+8>>2]+16;oj(d);Ui=b+32|0;return 1}function y6(a){a=a|0;var b=0,c=0,d=0,e=Q(0);b=Ui-32|0;Ui=b;d=pj(b+12|0,a,1,42776,203);e=N[wn(a,J[84392])+296>>2];c=J[a+8>>2];J[c+8>>2]=3;O[c>>3]=e;J[a+8>>2]=J[a+8>>2]+16;oj(d);Ui=b+32|0;return 1}function x6(a){a=a|0;var b=0,c=0,d=0,e=Q(0);b=Ui-32|0;Ui=b;d=pj(b+12|0,a,1,42776,211);e=N[wn(a,J[84392])+304>>2];c=J[a+8>>2];J[c+8>>2]=3;O[c>>3]=e;J[a+8>>2]=J[a+8>>2]+16;oj(d);Ui=b+32|0;return 1}function qpa(a){a=a|0;var b=0;if(a){if(a){Zi[J[66509]](a,0,132)|0}b=a+132|0;if(b){Zi[J[66509]](b,0,72)|0}J[a+224>>2]=0;J[a+228>>2]=0;J[a+216>>2]=0;J[a+220>>2]=0;J[a+208>>2]=0;J[a+212>>2]=0}cj(a)}function msa(a){a=a|0;var b=0;J[a>>2]=246144;b=J[a+100>>2];if(!(b?!b|K[a+104|0]!=1:1)){J[83765]=J[83765]+1;Zi[J[61751]](J[b-4>>2])}J[a+100>>2]=0;H[a+104|0]=1;J[a+92>>2]=0;J[a+96>>2]=0;return a|0}function Yea(a){a=a|0;var b=0,c=0,d=0;b=Ui-16|0;Ui=b;c=J[J[a+36>>2]+8>>2];d=-13;if(!dk(J[a+20>>2],J[a+24>>2],J[62554],b+12|0,0)){a=J[c>>2];if(a){Uj(a)}J[c>>2]=J[b+12>>2];d=0}Ui=b+16|0;return d|0}function PX(a){a=a|0;var b=0,c=0,d=0,e=0;b=Ui-32|0;Ui=b;d=pj(b+12|0,a,0,39897,21);Oj(a,1,7);Ok(a);e=Eu(a);c=J[a+8>>2];J[c+8>>2]=1;J[c>>2]=(e|0)!=0;J[a+8>>2]=J[a+8>>2]+16;oj(d);Ui=b+32|0;return 1}function L7(a,b,c){a=a|0;b=b|0;c=c|0;var d=0;a=Ui-16|0;Ui=a;J[a>>2]=c;dj(2,95071,80253,a);d=J[b+12>>2];if(d){Zi[d|0](J[b+8>>2],J[b+4>>2],c,J[b+16>>2])}cj(J[b+8>>2]);cj(J[b+4>>2]);cj(b);Ui=a+16|0}function Dv(a){J[a+4>>2]=35;J[a+8>>2]=0;J[a>>2]=246356;J[a+44>>2]=1025758986;J[a+20>>2]=1065353216;J[a+24>>2]=0;J[a+12>>2]=1065353216;J[a+16>>2]=1065353216;J[a>>2]=246264;J[a>>2]=246448;return a}function D6(a){a=a|0;var b=0,c=0,d=0,e=Q(0);b=Ui-32|0;Ui=b;d=pj(b+12|0,a,1,42776,179);e=N[wn(a,J[84392])+288>>2];c=J[a+8>>2];J[c+8>>2]=3;O[c>>3]=e;J[a+8>>2]=J[a+8>>2]+16;oj(d);Ui=b+32|0;return 1}function A6(a){a=a|0;var b=0,c=0,d=0,e=Q(0);b=Ui-32|0;Ui=b;d=pj(b+12|0,a,1,42776,187);e=N[wn(a,J[84392])+300>>2];c=J[a+8>>2];J[c+8>>2]=3;O[c>>3]=e;J[a+8>>2]=J[a+8>>2]+16;oj(d);Ui=b+32|0;return 1}function wT(a){a=a|0;var b=0;J[a>>2]=244216;if(K[a+152|0]==1){b=J[a+96>>2];Zi[J[J[b>>2]>>2]](b)|0;b=J[a+96>>2];if(b){J[83765]=J[83765]+1;Zi[J[61751]](J[b-4>>2])}}KE(a+44|0);KE(a+4|0);return a|0}function Naa(a,b,c){a=a|0;b=Q(b);c=Q(c);a:{if(a){uc(Q(b),Q(c));if(K[J[79491]+220|0]&2){a=_()|0;if(a){break a}}return}Z(9197,40535,4883,15042);B()}Cj(a,15042,4885);Z(114101,40535,4885,15042);B()}function Dwa(a,b,c,d){a=a|0;b=b|0;c=c|0;d=d|0;var e=0;e=Ui-16|0;Ui=e;a=xb(J[a+60>>2],b|0,c|0,d&255,e+8|0)|0;if(a){J[245744]=a;a=-1}else{a=0}Ui=e+16|0;Yi=a?-1:J[e+12>>2];return(a?-1:J[e+8>>2])|0}function z4(a){a=a|0;var b=0;b=J[a+2188>>2];if(b){Uu(b)}b=J[a+2192>>2];if(b){dN(b)}J[a+2188>>2]=0;J[a+2192>>2]=0;a:{if(H[a+2208|0]&1){break a}b=J[a+2196>>2];if(!b){break a}cj(b)}cj(a);return 0}function nS(a,b,c,d){var e=0,f=0,g=0,h=0;e=ol(a,82700);if(!e){return-1}um(e,0,2);f=wo(e);um(e,0,0);g=nj((f|0)<0?-1:f);h=Sl(g,1,f,e);vk(e);e=-4;if((f|0)==(h|0)){e=oS(a,g,f,b,c,d)}cj(g);return e}function _4(a){a=a|0;var b=0;b=J[a+2188>>2];if(b){co(b)}if(J[a+2192>>2]){Ms(a+2192|0)}a:{if(H[a+2224|0]&1){break a}b=J[a+2204>>2];if(b){cj(b)}b=J[a+2196>>2];if(!b){break a}cj(b)}cj(a);return 0}function LD(a){var b=0,c=0;b=J[a+152>>2];a:{b:{if(!b){break b}c=J[b+4>>2];if(!c|J[b+8>>2]==(c|0)){break b}b=J[c+8>>2];if(b){break a}}a=J[J[a+148>>2]+16>>2];if(!a){return 0}b=J[a+8>>2]}return b}function fr(a,b){var c=0,d=0,e=0;c=J[a+36>>2]+b|0;d=J[a>>2];if((c|0)<=K[d+75|0]){J[a+36>>2]=c;return}e=c;if(c>>>0>=250){qk(J[a+12>>2],4813);d=J[a>>2];e=J[a+36>>2]+b|0}H[d+75|0]=c;J[a+36>>2]=e}function Ysa(a,b){a=a|0;b=b|0;var c=0,d=0,e=0;c=J[a+12>>2];if((c|0)>0){while(1){e=J[J[a+20>>2]+(d<<2)>>2];if(e){Zi[J[J[e>>2]+16>>2]](e,b);c=J[a+12>>2]}d=d+1|0;if((c|0)>(d|0)){continue}break}}}function Yl(a,b){var c=0,d=0;b=b+7&-8;J[a+8>>2]=b+J[a+8>>2];d=J[a+92>>2];if(d){c=b;b=J[a+100>>2];c=c+b|0;if((c|0)>J[a+104>>2]){return 0}J[a+100>>2]=c;return b+d|0}if(!b){return 0}return sj(b)}function Hea(a){a=a|0;var b=0,c=0;c=Ui-16|0;Ui=c;b=-2;if(!dk(J[a+20>>2],J[a+24>>2],231728,c+12|0,0)){b=J[J[a+36>>2]+8>>2];GD(J[a>>2],b);J[b>>2]=J[c+12>>2];b=PQ(J[a>>2],b)}Ui=c+16|0;return b|0}function Fp(a,b,c){var d=0;if((c|0)>=0){if(b-1>>>0>=4294957296){b=((J[a+8>>2]-J[a+12>>2]>>4)+b|0)+1|0}Nj(a,b,0);Ik(a,b,c);d=J[a+8>>2];J[d+8>>2]=3;O[d>>3]=c|0;J[a+8>>2]=J[a+8>>2]+16;Ik(a,b,0)}}function wW(a){a=a|0;var b=0,c=0,d=0,e=0;b=Ui-16|0;Ui=b;mo(b);d=+J[b+8>>2]/1e6;e=+M[b>>2]+ +J[b+4>>2]*4294967296;c=J[a+8>>2];J[c+8>>2]=3;O[c>>3]=d+e;J[a+8>>2]=J[a+8>>2]+16;Ui=b+16|0;return 1}function tI(a,b,c){if(b-1>>>0>=4294957296){b=((J[a+8>>2]-J[a+12>>2]>>4)+b|0)+1|0}if(sm(a,b)){xj(a,c);Ll(a,-2);if(!kj(a,-1)){gj(a,-3);return 0}Rl(a,-2);uj(a,b);Wk(a,1,1);a=1}else{a=0}return a}function kM(a){var b=0,c=0;a=J[a+100>>2];if(a){while(1){b=J[a+12>>2];if(J[b+4>>2]==4){c=P(J[b+56>>2],J[b+52>>2]);ij(J[b+32>>2],255,c<<2);ij(J[b+36>>2],0,c)}a=J[a+4>>2];if(a){continue}break}}}function efa(a){a=a|0;var b=0,c=0;b=Ui-16|0;Ui=b;c=-13;if(!dk(J[a+12>>2],J[a+16>>2],J[62660],b+12|0,0)){Tk(J[a+24>>2],J[J[b+12>>2]+4>>2]);J[J[a+32>>2]>>2]=J[b+12>>2];c=0}Ui=b+16|0;return c|0}function c4(a){a=a|0;var b=0,c=0,d=0;b=Ui-32|0;Ui=b;J[b+16>>2]=Aj(a,1,0);c=aa(293468,158960,b+16|0)|0;a:{if(!K[338272]){J[b>>2]=c;fj(a,31902,b);break a}xj(a,c);d=1}cj(c);Ui=b+32|0;return d|0}function r4(a){a=a|0;var b=0;b=J[a+2192>>2];if(b){co(b)}b=J[a+2188>>2];if(b){uu(b)}a:{if(H[a+2224|0]&1){break a}b=J[a+2204>>2];if(b){cj(b)}b=J[a+2196>>2];if(!b){break a}cj(b)}cj(a);return 0}function jm(a,b,c,d){var e=0;e=Ui-16|0;Ui=e;rj(a,b,c);b=kj(a,-1);a:{if(b+1>>>0>=2){if((b|0)!=3){J[e+4>>2]=J[64411];J[e>>2]=c;if(!fj(a,124246,e)){break a}}N[d>>2]=ok(a,-1)}gj(a,-2)}Ui=e+16|0}function YT(a){a=a|0;var b=0;J[a>>2]=244504;b=J[a+20>>2];if(!(b?!b|K[a+24|0]!=1:1)){J[83765]=J[83765]+1;Zi[J[61751]](J[b-4>>2])}J[a+20>>2]=0;H[a+24|0]=1;J[a+12>>2]=0;J[a+16>>2]=0;return a|0}function Wha(a,b,c,d,e,f){a=a|0;b=b|0;c=c|0;d=d|0;e=e|0;f=f|0;var g=0,h=0;g=J[a+144>>2];if(!g){g=Hq();J[a+144>>2]=g}h=J[a+148>>2];if(!h){h=J[J[a+156>>2]+24>>2]}xr(g,J[h>>2],b,c,d,e,f);lv(a)}function SB(a,b,c){var d=0,e=0,f=0;d=J[a+52>>2];Tj(d);e=-6;f=J[a+4>>2];a=J[a>>2];if(f-a>>4>>>0>b>>>0){a=a+(b<<4)|0;J[c>>2]=J[a>>2];J[c+4>>2]=J[a+4>>2];J[c+8>>2]=J[a+8>>2];e=0}Lj(d);return e}function Eqa(a){a=a|0;var b=0;J[a>>2]=244140;b=J[a+16>>2];if(!(b?!b|K[a+20|0]!=1:1)){J[83765]=J[83765]+1;Zi[J[61751]](J[b-4>>2])}J[a+16>>2]=0;H[a+20|0]=1;J[a+8>>2]=0;J[a+12>>2]=0;return a|0}function Efa(a){a=a|0;var b=0,c=0;b=nj(176);HQ(b);b=ij(b,0,176);c=J[a+4>>2];if(SQ(c,J[a>>2],J[a+12>>2],J[a+16>>2],b,J[a+8>>2])){J[J[a+28>>2]+8>>2]=b;return 0}ny(c,J[a>>2],b);cj(b);return-13}function Aoa(a){a=a|0;var b=0,c=0;b=Ej(a,1);if(!((b|0)==1&K[927968]!=0)){fj(a,72341,0)}b=(b|0)==1?K[927968]?J[236328]:0:0;c=J[a+8>>2];J[c+8>>2]=3;O[c>>3]=b|0;J[a+8>>2]=J[a+8>>2]+16;return 1}function vha(a){a=a|0;var b=0,c=0;b=J[a+8>>2];c=b-J[a+12>>2]|0;J[b+8>>2]=3;O[b>>3]=0;J[a+8>>2]=J[a+8>>2]+16;if(((c>>4)+1|0)!=J[a+8>>2]-J[a+12>>2]>>4){Z(143334,37214,262,69686);B()}return 1}function pG(a,b,c,d){a:{if(!a){break a}b:{switch(b+2|0){case 0:H[a|0]=c;return;case 1:I[a>>1]=c;return;case 2:case 3:J[a>>2]=c;return;case 5:break b;default:break a}}J[a>>2]=c;J[a+4>>2]=d}}function hF(a){var b=0;b=J[a+72>>2];J[a+72>>2]=b-1|b;b=J[a>>2];if(b&8){J[a>>2]=b|32;return-1}J[a+4>>2]=0;J[a+8>>2]=0;b=J[a+44>>2];J[a+28>>2]=b;J[a+20>>2]=b;J[a+16>>2]=b+J[a+48>>2];return 0}function Xda(a){a=a|0;var b=0,c=0;b=Ui-16|0;Ui=b;c=-13;if(!dk(J[a+12>>2],J[a+16>>2],J[58758],b+12|0,0)){Tk(J[a+24>>2],J[J[b+12>>2]>>2]);J[J[a+32>>2]>>2]=J[b+12>>2];c=0}Ui=b+16|0;return c|0}function Xca(a){a=a|0;var b=0,c=0;b=J[a+8>>2];c=b-J[a+12>>2]|0;J[b+8>>2]=1;J[b>>2]=0;J[a+8>>2]=J[a+8>>2]+16;if(((c>>4)+1|0)!=J[a+8>>2]-J[a+12>>2]>>4){Z(143334,42276,428,60154);B()}return 1}function U1(a){a=a|0;var b=0,c=0,d=Q(0),e=Q(0);b=Ui-32|0;Ui=b;c=Vj(a,1);d=N[c>>2];e=N[c+4>>2];O[b+24>>3]=N[c+8>>2];O[b+16>>3]=e;J[b>>2]=108973;O[b+8>>3]=d;ik(a,138314,b);Ui=b+32|0;return 1}function S0(a,b,c,d,e,f){a=a|0;b=b|0;c=c|0;d=d|0;e=e|0;f=f|0;var g=0;b=Ui-176|0;Ui=b;g=b+4|0;CA(g);a=NH(g,a);if(!a){a=MH(g,c,d,e,f);a=(a|0)==-19456?-14592:a}FA(b+4|0);Ui=b+176|0;return a|0}function N_(a){a=a|0;var b=0,c=0,d=0,e=0;c=Ui-16|0;Ui=c;b=1;d=Aj(a,1,c+12|0);e=mm(a,2,d,0);if(Nw(a,d,J[c+12>>2],e)){b=J[a+8>>2];J[b+8>>2]=0;J[a+8>>2]=b+16;Pk(a,-2);b=2}Ui=c+16|0;return b|0}function Lda(a){a=a|0;var b=0,c=0;b=Ui-16|0;Ui=b;c=-13;if(!dk(J[a+12>>2],J[a+16>>2],J[59226],b+12|0,0)){Tk(J[a+24>>2],J[J[b+12>>2]>>2]);J[J[a+32>>2]>>2]=J[b+12>>2];c=0}Ui=b+16|0;return c|0}function zfa(a){a=a|0;var b=0,c=0;b=Ui-16|0;Ui=b;c=-2;if(!dk(J[a+12>>2],J[a+16>>2],J[62226],b+12|0,0)){Tk(J[a+24>>2],J[J[b+12>>2]>>2]);J[J[a+32>>2]>>2]=J[b+12>>2];c=0}Ui=b+16|0;return c|0}function iF(a,b,c,d,e,f,g,h,i){var j=0;j=Ui-16|0;Ui=j;qn(j,b,c,d,e,f,g,h,i^-2147483648);d=J[j>>2];c=J[j+4>>2];b=J[j+12>>2];J[a+8>>2]=J[j+8>>2];J[a+12>>2]=b;J[a>>2]=d;J[a+4>>2]=c;Ui=j+16|0}function fz(a){a:{switch(J[a+4>>2]){case 8:return Q(N[a+28>>2]*N[a+12>>2]);case 0:case 1:case 4:case 5:case 10:case 13:return N[a+44>>2];default:break a}}return Q(Zi[J[J[a>>2]+44>>2]](a))}function Rfa(a){a=a|0;var b=0,c=0;c=Ui-16|0;Ui=c;b=-2;if(!dk(J[a+20>>2],J[a+24>>2],264984,c+12|0,0)){a=J[J[a+36>>2]+8>>2];b=J[a>>2];if(b){Uj(b)}J[a>>2]=J[c+12>>2];b=0}Ui=c+16|0;return b|0}function P2(a){a=a|0;var b=0,c=0;b=J[a+8>>2];c=b-J[a+12>>2]|0;J[b+8>>2]=3;O[b>>3]=1;J[a+8>>2]=J[a+8>>2]+16;if(((c>>4)+1|0)!=J[a+8>>2]-J[a+12>>2]>>4){Z(143334,39097,1143,1562);B()}return 1}function Fea(a){a=a|0;var b=0,c=0;c=Ui-16|0;Ui=c;b=-2;if(!dk(J[a+20>>2],J[a+24>>2],265792,c+12|0,0)){a=J[J[a+36>>2]+8>>2];b=J[a>>2];if(b){Uj(b)}J[a>>2]=J[c+12>>2];b=0}Ui=c+16|0;return b|0}function l1(a,b,c){a=a|0;b=b|0;c=c|0;var d=0,e=0,f=0;d=J[a+4>>2];e=J[a+12>>2];if(d>>>0<=e>>>0){J[c>>2]=0;return-5}f=c;c=d-e|0;b=b>>>0>>0?b:c;J[f>>2]=b;J[a+12>>2]=b+J[a+12>>2];return 0}function Lt(a,b,c){var d=0,e=0;e=Ui-16|0;Ui=e;J[e+12>>2]=c;d=Ui-144|0;Ui=d;d=ij(d,0,144);J[d+76>>2]=-1;J[d+44>>2]=a;J[d+32>>2]=2813;J[d+84>>2]=a;a=ZF(d,b,c);Ui=d+144|0;Ui=e+16|0;return a}function Cu(a){var b=0,c=0,d=0;b=Ui-32|0;Ui=b;pj(b+12|0,a,-1,37704,1268);Hu(a);d=a;a:{if((kj(a,-1)|0)!=5){a=-2;c=-3;break a}Pk(a,-2);a=to(a,-2);c=-2}gj(d,c);oj(b+12|0);Ui=b+32|0;return a}function yW(a,b,c){a=a|0;b=b|0;c=c|0;var d=0,e=0,f=0;e=J[a+84>>2];d=c+256|0;f=St(e,0,d);d=f?f-e|0:d;c=c>>>0>d>>>0?d:c;hj(b,e,c);b=e+d|0;J[a+84>>2]=b;J[a+8>>2]=b;J[a+4>>2]=c+e;return c|0}function jj(a,b){var c=0,d=0;c=K[a|0];d=K[b|0];a:{if(!c|(c|0)!=(d|0)){break a}while(1){d=K[b+1|0];c=K[a+1|0];if(!c){break a}b=b+1|0;a=a+1|0;if((c|0)==(d|0)){continue}break}}return c-d|0}function Q3(a,b){a=a|0;b=b|0;var c=0,d=0,e=Q(0);d=J[b>>2];c=J[a+8>>2];J[c+8>>2]=3;O[c>>3]=d|0;J[a+8>>2]=J[a+8>>2]+16;e=N[b+4>>2];b=J[a+8>>2];J[b+8>>2]=3;O[b>>3]=e;J[a+8>>2]=J[a+8>>2]+16}function tH(a,b){var c=0,d=0;d=-1;a=J[J[a>>2]+100>>2];a:{if(!a){break a}c=J[a>>2];if(!c){break a}while(1){if((b|0)!=(c|0)){c=J[a+4>>2];a=a+4|0;if(c){continue}break a}break}d=0}return d}function s7(a,b,c){a=a|0;b=b|0;c=c|0;var d=0;a=Ui-16|0;Ui=a;J[a>>2]=c;dj(2,95071,80281,a);d=J[b+12>>2];if(d){Zi[d|0](J[b+4>>2],c,J[b+16>>2])}cj(J[b+8>>2]);cj(J[b+4>>2]);cj(b);Ui=a+16|0}function lra(a,b){a=a|0;b=Q(b);var c=0,d=0;Xl(20023);if(J[a+248>>2]>0){while(1){d=J[J[a+256>>2]+(c<<2)>>2];Zi[J[J[d>>2]+8>>2]](d,a,b);c=c+1|0;if((c|0)>2]){continue}break}}Wl()}function dH(a,b,c){var d=0;d=J[b+12>>2];if(d){if(M[b+8>>2]>>0){a=Zi[J[a+48>>2]](J[a+52>>2],J[b>>2],d,c)|0;if(!a){return 0}J[b+8>>2]=c;J[b>>2]=a}return 1}Z(58720,53876,5340,2079);B()}function Pva(a,b,c){a=a|0;b=b|0;c=Q(c);var d=Q(0),e=Q(0),f=Q(0);J[b>>2]=0;c=N[a+32>>2];d=N[a+24>>2];e=N[a+36>>2];f=N[a+28>>2];J[b+12>>2]=0;N[b+8>>2]=Q(f+e)*Q(.5);N[b+4>>2]=Q(d+c)*Q(.5)}function v7(a){a=a|0;var b=0,c=0,d=0,e=0;b=Ui-32|0;Ui=b;d=pj(b+12|0,a,1,41468,383);e=K[981585];c=J[a+8>>2];J[c+8>>2]=1;J[c>>2]=(e|0)!=0;J[a+8>>2]=J[a+8>>2]+16;oj(d);Ui=b+32|0;return 1}function pka(a){a=a|0;var b=0;a=J[a+4>>2];if(a){a:{if(H[a+32|0]&1){break a}b=J[a+20>>2];if(!b){break a}cj(b)}b:{if(H[a+16|0]&1){break b}b=J[a+4>>2];if(!b){break b}cj(b)}cj(a)}return 0}function Jv(a,b,c){a=a|0;b=b|0;c=c|0;var d=0,e=0;d=Zi[J[J[c>>2]+40>>2]](c,a)|0;e=Zi[J[J[c>>2]+28>>2]](c,d)|0;J[b>>2]=e;if(e){Zi[J[J[c>>2]+48>>2]](c,d)}J[b+4>>2]=J[a+4>>2];return 83714}function EH(a){var b=0,c=0;J[a>>2]=0;ij(a+224|0,0,404);bs(a+8|0);c=J[a+224>>2];if((c|0)<=19){b=P(c,20)+a|0;J[b+240>>2]=32;J[b+244>>2]=1;J[b+232>>2]=0;J[b+228>>2]=2215;J[a+224>>2]=c+1}}function wH(a,b,c,d,e){var f=0;a:{if(b){f=a+8|0;b=Vm(f,b,c);if(b){break a}J[a+4>>2]=Um(f)}b:{if(!d){break b}a=Vm(a+20|0,d,e);if(!a){break b}return a-16512|0}return 0}return b-16512|0}function Cj(a,b,c){var d=0,e=0;d=Ui-16|0;Ui=d;e=a-1280|0;if(e>>>0>6){e=102313}else{e=J[(e<<2)+240352>>2]}J[d+12>>2]=e;J[d+8>>2]=a;J[d+4>>2]=c;J[d>>2]=b;dj(4,89301,154753,d);Ui=d+16|0}function $L(a,b,c){var d=Q(0);J[a+8>>2]=0;J[a>>2]=0;J[a+4>>2]=0;c=J[c>>2];if(!(!c|J[c+232>>2]!=2)){d=N[b+76>>2];N[a>>2]=d*N[c+304>>2];N[a+4>>2]=d*N[c+308>>2];N[a+8>>2]=d*N[c+312>>2]}}function uwa(a,b,c){a=a|0;b=b|0;c=c|0;var d=0,e=0,f=0;d=b-c|0;if(d>>>0>=2){f=(a+c|0)-1|0;c=1;e=1;while(1){H[c+f|0]=0;e=e+1|0;c=e&255;if(d>>>0>c>>>0){continue}break}}H[(a+b|0)-1|0]=d}function lK(a,b){var c=0;c=Ui-16|0;Ui=c;J[c+8>>2]=0;J[c+12>>2]=0;J[c>>2]=0;J[c+4>>2]=0;a=gK(a,b,0,c);a:{if(H[c+12|0]&1){break a}b=J[c>>2];if(!b){break a}cj(b)}Ui=c+16|0;return a+8|0}function lI(a,b,c){var d=0;d=J[b+8>>2];if(d>>>0>=c>>>0){return J[b>>2]}c=c>>>0<=32?32:c;a:{if(c+1>>>0<=4294967293){a=lk(a,J[b>>2],d,c);break a}a=Dl(a)}J[b+8>>2]=c;J[b>>2]=a;return a}function O8(a){a=a|0;var b=0,c=0,d=0;b=Ui-16|0;Ui=b;c=Qj(a,1,b+12|0);d=wj(a,2);a:{if(R(d)<2147483648){a=~~d;break a}a=-2147483648}J[c+476>>2]=J[c+476>>2]&-16|a&15;Ui=b+16|0;return 0}function Fma(a){a=a|0;var b=0,c=Q(0),d=Q(0),e=Q(0);b=dn(a,1);d=N[b+40>>2];c=N[b+32>>2];e=N[b+36>>2];c=c>2];J[b+8>>2]=3;O[b>>3]=c>d?d:c;J[a+8>>2]=J[a+8>>2]+16;return 1}function qj(a,b,c,d){var e=0,f=0;e=Ui-16|0;Ui=e;a:{if((uq(a,b)|0)==(c|0)){f=Vj(a,b);if(f){break a}}if(!d){f=0;Yk(a,b,NN(c,0));break a}J[e>>2]=d;fj(a,31902,e);f=0}Ui=e+16|0;return f}function lda(a){a=a|0;var b=0,c=0;Em(a,1);c=kj(a,1);b=J[78499];if(!c){if(b){Fl(b)}J[78499]=0;return 0}if(b){Fl(b)}b=$m(a,1);J[78499]=b;if(Hm(b)){a=0}else{a=fj(a,51610,0)}return a|0}function gr(a){var b=0;b=J[a+44>>2];a:{b:{if(b){if(b>>>0>=M[a+52>>2]){break b}J[a+44>>2]=b+1;b=K[b|0];break a}b=gl(J[a+32>>2]);if((b|0)!=-1){break a}}J[a+108>>2]=1;b=0}return b&255}function c$(a){a=a|0;var b=0,c=0;b=Ui-16|0;Ui=b;c=Aj(a,1,0);rj(a,-10001,76194);if((kj(a,-1)|0)!=5){fj(a,67578,0)}rj(a,-1,c);if(!kj(a,-1)){J[b>>2]=c;ik(a,85010,b)}Ui=b+16|0;return 1}function Pea(a){a=a|0;var b=0,c=0;b=Ui-16|0;Ui=b;c=-13;if(!dk(J[a+20>>2],J[a+24>>2],J[56834],b+12|0,0)){a=J[J[a+36>>2]+8>>2];Uj(J[a>>2]);J[a>>2]=J[b+12>>2];c=0}Ui=b+16|0;return c|0}function J_(a){a=a|0;var b=0,c=0;Em(a,1);c=kq(a,(J[a+8>>2]-J[a+12>>2]>>4)-1|0,-1,0);b=J[a+8>>2];J[b+8>>2]=1;J[b>>2]=!c;J[a+8>>2]=J[a+8>>2]+16;Pk(a,1);return J[a+8>>2]-J[a+12>>2]>>4}function GQ(a){a=a|0;var b=0;a=J[a+4>>2];if(a){a:{if(H[a+28|0]&1){break a}b=J[a+16>>2];if(!b){break a}cj(b)}b:{if(H[a+12|0]&1){break b}b=J[a>>2];if(!b){break b}cj(b)}cj(a)}return 0}function XX(a){a=a|0;if(a){Dj(a+140|0);Dj(a+152|0);Dj(a+104|0);Dj(a+32|0);Dj(a+56|0);Dj(a+44|0);Dj(a+20|0);Dj(a+8|0);Dj(a+128|0);Dj(a+116|0);Dj(a+92|0);Dj(a+80|0);Dj(a+68|0)}cj(a)}function OV(a){J[a+32>>2]=0;J[a+36>>2]=0;J[a>>2]=0;J[a+4>>2]=0;J[a+40>>2]=0;J[a+44>>2]=0;J[a+24>>2]=0;J[a+28>>2]=0;J[a+16>>2]=0;J[a+20>>2]=0;J[a+8>>2]=0;J[a+12>>2]=0;J[a+36>>2]=-1}function D7(a){a=a|0;var b=0;b=Ui-16|0;Ui=b;if(!K[981756]){H[981756]=1;J[b>>2]=69784;J[b+4>>2]=60322;J[b+8>>2]=62032;J[b+12>>2]=60322;dj(3,95071,129991,b)}MM(a);Ui=b+16|0;return 0}function B7(a){a=a|0;var b=0;b=Ui-16|0;Ui=b;if(!K[981748]){H[981748]=1;J[b>>2]=69784;J[b+4>>2]=69754;J[b+8>>2]=62032;J[b+12>>2]=69754;dj(3,95071,129991,b)}KM(a);Ui=b+16|0;return 0}function Vr(a){var b=0,c=0;b=J[72171];c=a+7&-8;a=b+c|0;a:{if(!(a>>>0<=b>>>0?c:0)){if(a>>>0<=_i()<<16>>>0){break a}if(cd(a|0)|0){break a}}J[245744]=48;return-1}J[72171]=a;return b}function Lfa(a){a=a|0;var b=0,c=0;b=Ui-16|0;Ui=b;c=-13;if(!dk(J[a+20>>2],J[a+24>>2],226232,b+12|0,0)){a=J[J[a+36>>2]+8>>2];Uj(J[a>>2]);J[a>>2]=J[b+12>>2];c=0}Ui=b+16|0;return c|0}function Jx(a){var b=0;if(a){a:{if(H[a+44|0]&1){break a}b=J[a+32>>2];if(!b){break a}cj(b)}b:{if(H[a+28|0]&1){break b}b=J[a+8>>2];if(b){cj(b)}b=J[a>>2];if(!b){break b}cj(b)}cj(a)}}function u7(a){a=a|0;var b=0,c=0,d=0,e=0;b=Ui-32|0;Ui=b;d=pj(b+12|0,a,1,41468,57);e=PM();c=J[a+8>>2];J[c+8>>2]=1;J[c>>2]=(e|0)!=0;J[a+8>>2]=J[a+8>>2]+16;oj(d);Ui=b+32|0;return 1}function T1(a){a=a|0;var b=0,c=Q(0),d=Q(0),e=Q(0);b=Vj(a,1);c=N[b>>2];d=N[b+4>>2];e=N[b+8>>2];b=Sj(a,16);N[b+8>>2]=-e;N[b+4>>2]=-d;N[b>>2]=-c;rj(a,-1e4,108973);Mj(a,-2);return 1}function C7(a){a=a|0;var b=0;b=Ui-16|0;Ui=b;if(!K[981752]){H[981752]=1;J[b>>2]=69784;J[b+4>>2]=9976;J[b+8>>2]=62032;J[b+12>>2]=9976;dj(3,95071,129991,b)}LM(a);Ui=b+16|0;return 0}function pw(a,b){var c=0;if(J[b+40>>2]){pw(a,J[b+36>>2]);pw(a,J[b+40>>2])}if(J[a>>2]==(b|0)){J[a>>2]=0}c=J[a+4>>2];if(c){J[83765]=J[83765]+1;Zi[J[61751]](J[c-4>>2])}J[a+4>>2]=b}function Sna(a){a=a|0;var b=0,c=0;a=J[J[a+16>>2]>>2];b=K[a+32|0];if(b&2){c=a;a=J[a>>2];if(J[a+12>>2]==-2){a=J[a+16>>2]!=-2}else{a=1}H[c+32|0]=a|b&254;a=0}else{a=-1e3}return a|0}function Qea(a){a=a|0;var b=0,c=0;c=Ui-16|0;Ui=c;b=-13;if(!dk(J[a+12>>2],J[a+16>>2],J[56834],c+12|0,0)){b=nj(4);J[b>>2]=J[c+12>>2];J[J[a+28>>2]+8>>2]=b;b=0}Ui=c+16|0;return b|0}function wB(a){var b=0,c=0,d=0;b=J[a+108>>2];c=J[a+112>>2];if((b|0)!=(c|0)){while(1){d=J[J[b>>2]+4>>2];if(d){Zi[d|0](a);c=J[a+112>>2]}b=b+4|0;if((c|0)!=(b|0)){continue}break}}}function tfa(a){a=a|0;var b=0;b=J[J[a+8>>2]+8>>2];a=J[b>>2];a:{if(!a){break a}if(K[b+4|0]==1){if(a){Zi[J[J[a>>2]+4>>2]](a)}break a}if(a){Zi[J[J[a>>2]+4>>2]](a)}}cj(b);return 0}function Vea(a){a=a|0;var b=0,c=0;b=Ui-16|0;Ui=b;c=-13;if(!dk(J[a+20>>2],J[a+24>>2],260024,b+12|0,0)){SM(J[J[a+36>>2]+8>>2],J[b+12>>2]);Uj(J[b+12>>2]);c=0}Ui=b+16|0;return c|0}function Sma(a){a=a|0;var b=0,c=0;b=Vj(a,1);c=a;a=Aj(a,2,0);a:{if(!(!a|!K[a|0])){a=rv(J[b+4>>2],a,yj(a));b=Yi;break a}b=J[b+4>>2];a=J[b+96>>2];b=J[b+100>>2]}Bk(c,a,b);return 1}function ufa(a){a=a|0;var b=0,c=0;b=nj(8);J[b>>2]=0;J[b+4>>2]=0;c=J[a+4>>2];H[b+4|0]=K[c+17|0];if(aR(c,J[a+12>>2],J[a+16>>2],b)){J[J[a+28>>2]+8>>2]=b;return 0}cj(b);return-13}function HZ(a,b,c,d){a=a|0;b=b|0;c=c|0;d=d|0;var e=0;J[d>>2]=0;a=-60;e=ol(48692,82700);a:{if(!e){break a}b=Sl(b,1,c,e);vk(e);if((b|0)!=(c|0)){break a}J[d>>2]=c;a=0}return a|0}function EL(a,b,c){var d=0,e=0;d=Ui-16|0;Ui=d;Bb(b|0,c|0);$a(d+12|0,d+8|0);b=J[d+12>>2];J[a+80>>2]=b;c=J[d+8>>2];J[a+84>>2]=c;e=J[a>>2];if(e){Zi[e|0](J[a+4>>2],b,c)}Ui=d+16|0}function Zta(a,b,c,d){a=a|0;b=b|0;c=c|0;d=d|0;var e=0;if(b>>>0<=11){b=b<<2;e=J[b+172268>>2];b=J[b+172220>>2]}else{b=0}Zi[J[J[a>>2]+96>>2]](a,b,c);Zi[J[J[a>>2]+96>>2]](a,e,d)}function Ym(a){var b=0,c=0;c=J[a>>2];b=a+12|0;a:{if((c|0)==(b|0)){b=J[a+4>>2];break a}mj(J[a+8>>2],b,c-b|0);J[a>>2]=b;b=J[a+4>>2]+1|0;J[a+4>>2]=b}lm(J[a+8>>2],b);J[a+4>>2]=1}function T0(a,b,c,d,e,f,g,h){a=a|0;b=b|0;c=c|0;d=d|0;e=e|0;f=f|0;g=g|0;h=h|0;g=Ui-176|0;Ui=g;h=g+4|0;CA(h);a=NH(h,a);if(!a){a=LH(h,b,c,d,e,f)}FA(g+4|0);Ui=g+176|0;return a|0}function GV(a){var b=0;b=2;if(!Hk(a,43)){b=K[a|0]!=114}b=Hk(a,120)?b|128:b;b=Hk(a,101)?b|524288:b;a=K[a|0];b=(a|0)==114?b:b|64;b=(a|0)==119?b|512:b;return(a|0)==97?b|1024:b} +function ida(a){a=a|0;var b=0;b=J[a+8>>2]-J[a+12>>2]>>4;a:{if(gp(a,1)){Ss(1,0,0);break a}Ss(1,1,0)}if(J[a+8>>2]-J[a+12>>2]>>4!=(b|0)){Z(143244,37214,198,51224);B()}return 0}function Yn(a,b,c){var d=0,e=0,f=0;if(c){e=a+1036|0;while(1){d=J[a>>2];if(e>>>0<=d>>>0){_l(a);d=J[a>>2]}f=K[b|0];J[a>>2]=d+1;H[d|0]=f;b=b+1|0;c=c-1|0;if(c){continue}break}}}function xI(a,b){a=J[a+16>>2]+((J[b+8>>2]&(-1<>2]!=4|J[a+16>>2]!=(b|0))){return a}a=J[a+28>>2];if(a){continue}break}return 173288}function m0(a){a=a|0;var b=0,c=0,d=0;b=Ui-32|0;Ui=b;c=1;d=pj(b+12|0,a,1,39897,7);a:{if(!Eu(a)){dj(4,90298,15198,0);c=Jj(d,15198,0);break a}Bj(a)}oj(d);Ui=b+32|0;return c|0}function jM(a){J[a+24>>2]=0;J[a+28>>2]=65537;J[a+16>>2]=0;J[a+20>>2]=0;J[a+8>>2]=1065353216;J[a+12>>2]=1056964608;J[a>>2]=0;J[a+4>>2]=0;J[a+32>>2]=J[a+32>>2]&-8|4;return a}function eE(a){var b=0;b=Ui-32|0;Ui=b;J[b+24>>2]=0;J[b+28>>2]=0;J[b+16>>2]=0;J[b+20>>2]=0;J[b+4>>2]=a;J[b>>2]=J[54660];a=b+16|0;a=Ul(a,Gj(a,16,76636,b));Ui=b+32|0;return a}function dea(a){a=a|0;var b=0;a=J[J[a+8>>2]+8>>2];b=J[a>>2];if(b){Uj(b)}a:{if(H[a+32|0]&1){break a}b=J[a+12>>2];if(b){cj(b)}b=J[a+4>>2];if(!b){break a}cj(b)}cj(a);return 0}function Go(a,b,c){if(a){a=J[a+84>>2];if(M[a+4>>2]>b>>>0){a=J[a>>2]+P(b,96)|0;b=J[a+4>>2];J[c>>2]=J[a>>2];J[c+4>>2]=b;a=0}else{a=-5}return a}Z(111337,38296,2102,76466);B()}function $B(a,b,c,d){var e=0;e=Ui-16|0;Ui=e;a:{b:{switch(a-1|0){case 0:hS(b,c,d);break a;case 1:gS(b,c,d);break a;default:break b}}J[e>>2]=a;dj(4,96538,137856,e)}Ui=e+16|0}function yla(a){a=a|0;var b=0,c=0,d=0;b=Kk(a,1,J[79308]);c=Kk(a,2,J[79308]);d=J[a+8>>2];J[d+8>>2]=1;J[d>>2]=(b|0)!=0&(c|0)!=0&(b|0)==(c|0);J[a+8>>2]=J[a+8>>2]+16;return 1}function Wu(a){I[a+52>>1]=0;J[a+48>>2]=0;J[a+40>>2]=0;J[a+32>>2]=0;J[a+36>>2]=0;J[a+24>>2]=0;J[a+16>>2]=0;J[a+20>>2]=0;J[a>>2]=1065353216;H[a+54|0]=K[a+54|0]&254;return a}function N3(a){a=a|0;var b=0,c=0;b=Ui-32|0;Ui=b;c=b+12|0;pj(c,a,0,37704,142);rj(a,-10002,75598);J[Vj(a,-1)>>2]=P(Ej(a,1),214013)+2531011;gj(a,-2);oj(c);Ui=b+32|0;return 0}function y9(a){a=a|0;var b=0,c=0;b=Ui-16|0;Ui=b;c=Qj(a,1,0);N[b>>2]=N[c+16>>2];N[b+4>>2]=N[c+20>>2];N[b+8>>2]=N[c+24>>2];N[b+12>>2]=N[c+28>>2];tq(a,b);Ui=b+16|0;return 1}function co(a){var b=0;if(a){b=J[a+4>>2];if(b){Uj(b)}b=J[a+8>>2];if(b){Uj(b)}a:{if(H[a+40|0]&1){break a}b=J[a+20>>2];if(b){cj(b)}b=J[a+12>>2];if(!b){break a}cj(b)}cj(a)}}function Yk(a,b,c){var d=0,e=0;d=Ui-16|0;Ui=d;e=kj(a,b);if((e|0)==-1){e=60960}else{e=J[(e<<2)+257632>>2]}J[d+4>>2]=e;J[d>>2]=c;a=Dk(a,b,ik(a,26749,d));Ui=d+16|0;return a}function S7(a,b){a=a|0;b=b|0;if(J[215872]==(b|0)){if(b){a:{if(H[b+36|0]&1){break a}a=J[b+24>>2];if(!a){break a}cj(a)}cj(b)}J[215872]=0;return}Z(33187,37287,381,3263);B()}function Qra(a,b,c){a=a|0;b=b|0;c=c|0;var d=0;if((b|0)!=(c|0)){d=J[J[a+4>>2]+96>>2];Zi[J[J[d>>2]+8>>2]](d,J[b+36>>2],J[c+36>>2])|0;a=J[a+4>>2];J[a+120>>2]=J[a+120>>2]+1}}function Nea(a){a=a|0;var b=0,c=0,d=0;d=J[a+4>>2];b=J[a>>2];c=J[J[a+8>>2]+8>>2];$s(b,c+4|0);a=J[c>>2];Np(b,592,a);vj(b,J[a+12>>2]);vj(b,J[a+8>>2]);Kx(d,a);cj(c);return 0}function x_(a){a=a|0;var b=0,c=0;Em(a,2);gj(a,2);Pk(a,1);c=kq(a,0,-1,1);b=J[a+8>>2];J[b+8>>2]=1;J[b>>2]=!c;J[a+8>>2]=J[a+8>>2]+16;ms(a,1);return J[a+8>>2]-J[a+12>>2]>>4}function Nt(a){var b=0,c=0,d=0;b=Ui-32|0;Ui=b;c=J[a>>2];if((c|0)!=-1){J[b+16>>2]=0;c=nm(c,3,b+16|0);d=J[a>>2];J[b>>2]=c&-2049;nm(d,4,b);pt(J[a>>2]);J[a>>2]=-1}Ui=b+32|0}function x7(a){a=a|0;var b=0,c=0,d=0;b=Ui-32|0;Ui=b;d=pj(b+12|0,a,1,41468,50);c=J[a+8>>2];J[c+8>>2]=3;O[c>>3]=180895692;J[a+8>>2]=J[a+8>>2]+16;oj(d);Ui=b+32|0;return 1}function qba(a,b){a=a|0;b=b|0;var c=0,d=0;d=1<>2]|J[a+204>>2]&d>>31){break a}c=0;if(!(K[a+221|0]&32)){break a}c=(b|0)==16|b-33>>>0<13}return c|0}function jB(a){var b=0,c=0,d=0,e=0;b=Zk(a);J[a+1408>>2]=0;c=Zk(a);J[a+1408>>2]=0;d=Zk(a);J[a+1408>>2]=0;e=Zk(a);J[a+1408>>2]=0;return(((c<<8)+b|0)+(d<<16)|0)+(e<<24)|0}function Lm(a,b,c){var d=0,e=0;d=Ui-80|0;Ui=d;e=-10;if(!hp(a,b,d+72|0)){a=J[d+76>>2];J[d+8>>2]=J[d+72>>2];J[d+12>>2]=a;J[d>>2]=1;hj(c+32|0,d,72);e=0}Ui=d+80|0;return e}function q6(a){a=a|0;var b=0,c=0,d=0;b=Ui-32|0;Ui=b;d=pj(b+12|0,a,0,42776,251);c=wn(a,J[84392]);N[c+304>>2]=ck(a,2)|0;H[c+320|0]=K[c+320|0]|2;oj(d);Ui=b+32|0;return 0}function j3(a){a=a|0;var b=0,c=Q(0),d=0;d=wj(a,1);b=Sj(a,16);J[b+4>>2]=0;J[b+8>>2]=0;c=Q(Q(d)*Q(.5));N[b+12>>2]=Rj(c);N[b>>2]=Hj(c);rj(a,-1e4,16786);Mj(a,-2);return 1}function i3(a){a=a|0;var b=0,c=Q(0),d=0;d=wj(a,1);b=Sj(a,16);J[b+8>>2]=0;J[b>>2]=0;c=Q(Q(d)*Q(.5));N[b+12>>2]=Rj(c);N[b+4>>2]=Hj(c);rj(a,-1e4,16786);Mj(a,-2);return 1}function h3(a){a=a|0;var b=0,c=Q(0),d=0;d=wj(a,1);b=Sj(a,16);J[b>>2]=0;J[b+4>>2]=0;c=Q(Q(d)*Q(.5));N[b+12>>2]=Rj(c);N[b+8>>2]=Hj(c);rj(a,-1e4,16786);Mj(a,-2);return 1}function _2(a){a=a|0;var b=0;a=J[a+8>>2];b=J[a+8>>2]-J[a+12>>2]|0;uk(a,22518,253216);gj(a,-2);if(b>>4!=J[a+8>>2]-J[a+12>>2]>>4){Z(143244,39428,149,59279);B()}return 0}function Ywa(a){a=a|0;var b=0;a=J[a+8>>2];b=J[a+8>>2]-J[a+12>>2]|0;uk(a,34352,218576);gj(a,-2);if(b>>4!=J[a+8>>2]-J[a+12>>2]>>4){Z(143244,39897,43,14317);B()}return 0}function Xwa(a){a=a|0;var b=0;a=J[a+8>>2];b=J[a+8>>2]-J[a+12>>2]|0;uk(a,33222,218608);gj(a,-2);if(b>>4!=J[a+8>>2]-J[a+12>>2]>>4){Z(143244,39778,64,14317);B()}return 0}function X9(a){a=a|0;var b=0,c=0,d=0,e=0;b=Ui-16|0;Ui=b;c=Qj(a,1,0);d=J[c+160>>2];e=J[c+164>>2];N[b+8>>2]=N[c+168>>2];J[b>>2]=d;J[b+4>>2]=e;cl(a,b);Ui=b+16|0;return 1}function Qz(a,b,c){var d=0,e=0;d=yj(a)+a|0;a:{if(!c){break a}while(1){e=K[b|0];if(!e){break a}H[d|0]=e;d=d+1|0;b=b+1|0;c=c-1|0;if(c){continue}break}}H[d|0]=0;return a}function p8(a){a=a|0;var b=0;Bj(a);b=qj(a,-1,J[219396],139183);gj(a,-2);a=Ej(a,1);if(a>>>0>=16){dj(3,93318,84805,0)}a=(a|0)>=15?15:a;I[b+370>>1]=(a|0)>0?a:0;return 0}function Y_(a){a=a|0;var b=0;b=J[a+8>>2];J[b+8>>2]=8;J[b>>2]=a;J[a+8>>2]=J[a+8>>2]+16;if(J[J[a+16>>2]+112>>2]==(a|0)){b=J[a+8>>2];J[b+8>>2]=0;J[a+8>>2]=b+16}return 1}function Up(a){var b=0;a:{switch(a-1|0){case 1:return 1;case 3:return 2;case 7:return 3;case 15:return 4;case 31:return 5;default:b=-1;break;case 0:break a}}return b}function Jy(a,b,c){var d=0;d=Ui-16|0;Ui=d;a:{if(!Jq(a,b,c)){J[d>>2]=J[c+8>>2];dj(4,88293,27458,d);break a}a=b?J[b+124>>2]:0;if(nx(a,c)){break a}Ol(a,0,0,0)}Ui=d+16|0}function u6(a){a=a|0;var b=0,c=0,d=0;b=Ui-32|0;Ui=b;d=pj(b+12|0,a,0,42776,219);c=wn(a,J[84392]);N[c+288>>2]=ok(a,2);H[c+320|0]=K[c+320|0]|2;oj(d);Ui=b+32|0;return 0}function t6(a){a=a|0;var b=0,c=0,d=0;b=Ui-32|0;Ui=b;d=pj(b+12|0,a,0,42776,227);c=wn(a,J[84392]);N[c+300>>2]=ok(a,2);H[c+320|0]=K[c+320|0]|2;oj(d);Ui=b+32|0;return 0}function s6(a){a=a|0;var b=0,c=0,d=0;b=Ui-32|0;Ui=b;d=pj(b+12|0,a,0,42776,235);c=wn(a,J[84392]);N[c+292>>2]=ok(a,2);H[c+320|0]=K[c+320|0]|2;oj(d);Ui=b+32|0;return 0}function r6(a){a=a|0;var b=0,c=0,d=0;b=Ui-32|0;Ui=b;d=pj(b+12|0,a,0,42776,243);c=wn(a,J[84392]);N[c+296>>2]=ok(a,2);H[c+320|0]=K[c+320|0]|2;oj(d);Ui=b+32|0;return 0}function r0(a,b,c){a=a|0;b=b|0;c=c|0;Gp(a,2,19979);uj(a,1);Wk(a,0,1);if(!kj(a,-1)){J[c>>2]=0;return 0}if(Mk(a,-1)){ms(a,3);return Ij(a,3,c)|0}fj(a,56488,0);return 0}function hL(){var a=0;a=nj(40);J[a>>2]=0;J[a+4>>2]=0;J[a+32>>2]=0;J[a+36>>2]=0;J[a+24>>2]=0;J[a+28>>2]=0;J[a+16>>2]=0;J[a+20>>2]=0;J[a+8>>2]=0;J[a+12>>2]=0;return a}function Nwa(a){a=a|0;J[83319]=243976;a=J[83441];if(!(a?!a|K[333768]!=1:1)){J[83765]=J[83765]+1;Zi[J[61751]](J[a-4>>2])}J[83441]=0;H[333768]=1;J[83439]=0;J[83440]=0}function J8(a){a=a|0;var b=0,c=0,d=0;b=Ui-16|0;Ui=b;Qj(a,1,b+12|0);c=ck(a,2);Bj(a);d=qj(a,-1,J[219396],139183);gj(a,-2);lO(d,J[b+12>>2],(c|0)!=0);Ui=b+16|0;return 0}function EI(a){var b=0,c=0;b=J[a+16>>2];H[b+20|0]=67;Ht(a,b+28|0,-3);if(J[b+8>>2]>0){while(1){Ht(a,J[b>>2]+(c<<2)|0,-3);c=c+1|0;if((c|0)>2]){continue}break}}}function x9(a){a=a|0;var b=0,c=0,d=0,e=0;b=Ui-16|0;Ui=b;c=Qj(a,1,0);d=J[c+32>>2];e=J[c+36>>2];N[b+8>>2]=N[c+40>>2];J[b>>2]=d;J[b+4>>2]=e;cl(a,b);Ui=b+16|0;return 1}function t9(a){a=a|0;var b=0,c=0,d=0,e=0;b=Ui-16|0;Ui=b;c=Qj(a,1,0);d=J[c+64>>2];e=J[c+68>>2];N[b+8>>2]=N[c+72>>2];J[b>>2]=d;J[b+4>>2]=e;cl(a,b);Ui=b+16|0;return 1}function qY(a){a=a|0;var b=0,c=0;b=vi(mm(a,1,0,0)|0)|0;if(b>>>0>=4294963201){J[245744]=0-b;b=-1}c=J[a+8>>2];J[c+8>>2]=3;O[c>>3]=b|0;J[a+8>>2]=J[a+8>>2]+16;return 1}function b$(a){a=a|0;var b=0;b=Ui-16|0;Ui=b;Em(a,1);a:{if(!ck(a,1)){J[b>>2]=mm(a,2,154049,0);a=fj(a,31902,b);break a}a=J[a+8>>2]-J[a+12>>2]>>4}Ui=b+16|0;return a|0}function Z9(a){a=a|0;var b=0,c=0,d=0;b=Ui-16|0;Ui=b;d=J[Qj(a,1,b+12|0)+476>>2]>>>26|0;c=J[a+8>>2];J[c+8>>2]=1;J[c>>2]=d&1;J[a+8>>2]=J[a+8>>2]+16;Ui=b+16|0;return 1}function Gma(a){a=a|0;var b=0,c=0;b=Ui-16|0;Ui=b;c=dn(a,1);N[b>>2]=N[c>>2];N[b+4>>2]=N[c+4>>2];N[b+8>>2]=N[c+8>>2];N[b+12>>2]=N[c+12>>2];tq(a,b);Ui=b+16|0;return 1}function C_(a){a=a|0;var b=0;b=kj(a,2);Oj(a,1,5);a:{switch(b|0){default:Dk(a,2,73869);break;case 0:case 5:break a}}if(sI(a)){fj(a,67364,0)}gj(a,2);Mj(a,1);return 1}function $9(a){a=a|0;var b=0,c=0,d=0;b=Ui-16|0;Ui=b;d=J[Qj(a,1,b+12|0)+476>>2]>>>27|0;c=J[a+8>>2];J[c+8>>2]=1;J[c>>2]=d&1;J[a+8>>2]=J[a+8>>2]+16;Ui=b+16|0;return 1}function wwa(a,b,c){a=a|0;b=b|0;c=c|0;var d=0;d=a+c|0;H[d|0]=128;b=b-c|0;if(b>>>0>=2){c=1;a=1;while(1){H[c+d|0]=0;a=a+1|0;c=a&255;if(b>>>0>c>>>0){continue}break}}}function p_(a){a=a|0;uk(a,56548,258560);rj(a,-1,53664);ej(a,-2,71335);Fj(a,0,1);mj(a,158859,0);uj(a,-2);Mj(a,-2);gj(a,-2);uj(a,-2);ej(a,-2,5326);gj(a,-2);return 1}function yX(a){a=a|0;J[a+24>>2]=-1009589776;J[a+16>>2]=-1732584194;J[a+20>>2]=271733878;J[a+8>>2]=1732584193;J[a+12>>2]=-271733879;J[a>>2]=0;J[a+4>>2]=0;return 0}function v1(a){a=a|0;var b=0;b=J[a+12>>2];a:{if(!b){break a}Fz(b);if(J[b+92>>2]){break a}cj(b)}b:{if(H[a+36|0]&1){break b}b=J[a+24>>2];if(!b){break b}cj(b)}cj(a)}function $K(a,b,c){var d=0,e=0;if(c){while(1){d=J[(e<<2)+b>>2];cC(a,J[d+8>>2],J[d+12>>2],J[d>>2],L[d+32>>1],J[d+16>>2]);e=e+1|0;if((e|0)!=(c|0)){continue}break}}}function uO(a){var b=0,c=0;b=J[a+8>>2]-J[a+12>>2]|0;Bj(a);c=Kk(a,-1,J[219396]);gj(a,-2);if(b>>4!=J[a+8>>2]-J[a+12>>2]>>4){Z(143244,37682,190,65548);B()}return c}function nI(a,b){var c=0,d=0;c=Ui-48|0;Ui=c;if(J[b+8>>2]==3){O[c>>3]=O[b>>3];d=c+16|0;Sv(d,57516,c);a=zk(a,d,yj(d));J[b+8>>2]=4;J[b>>2]=a;d=1}Ui=c+48|0;return d}function FO(a,b,c){var d=0;d=J[a+312>>2];a=J[a+308>>2];if((d-a>>>3&65535)>>>0>b>>>0){a=a+(b<<3)|0;b=J[a+4>>2];J[c>>2]=J[a>>2];J[c+4>>2]=b;a=0}else{a=-5}return a}function j9(a){a=a|0;var b=0,c=0;Bj(a);b=qj(a,-1,J[219396],139183);gj(a,-2);b=J[b+376>>2];c=J[a+8>>2];J[c+8>>2]=3;O[c>>3]=b>>>0;J[a+8>>2]=J[a+8>>2]+16;return 1}function R9(a){a=a|0;var b=0,c=0;Bj(a);b=qj(a,-1,J[219396],139183);gj(a,-2);b=J[b+380>>2];c=J[a+8>>2];J[c+8>>2]=3;O[c>>3]=b>>>0;J[a+8>>2]=J[a+8>>2]+16;return 1}function NH(a,b){var c=0;a:{c=js(a,J[b>>2]);if(c){break a}c=sk(a+124|0,b+124|0);if(c){break a}c=JH(a+136|0,b+136|0);if(c){break a}return 0}if(a){DA(a)}return c}function Ema(a){a=a|0;var b=0,c=0;b=Ui-32|0;Ui=b;yn(b,dn(a,1));N[b+16>>2]=N[b>>2];c=J[b+8>>2];J[b+20>>2]=J[b+4>>2];J[b+24>>2]=c;cl(a,b+16|0);Ui=b+32|0;return 1}function z9(a){a=a|0;var b=0,c=0,d=0,e=0;b=Ui-16|0;Ui=b;c=Qj(a,1,0);d=J[c>>2];e=J[c+4>>2];N[b+8>>2]=N[c+8>>2];J[b>>2]=d;J[b+4>>2]=e;cl(a,b);Ui=b+16|0;return 1}function bM(a,b){a=J[J[a>>2]+192>>2];a:{b:{if(J[a+4>>2]==31){if(M[a+16>>2]<=b>>>0){break b}return J[(J[a+24>>2]+P(b,80)|0)+64>>2]}if(!b){break a}}a=0}return a}function Vz(a,b){var c=0;a:{c=J[a+44>>2];if(c){b=b+c|0;J[a+44>>2]=b;if(b>>>0>2]){break a}J[a+108>>2]=1;return}c=wo(J[a+32>>2]);um(J[a+32>>2],b+c|0,0)}}function HC(){var a=0;a=nj(40);J[a+28>>2]=0;J[a+32>>2]=-2147483648;J[a+20>>2]=0;J[a+24>>2]=0;J[a+8>>2]=0;J[a+12>>2]=-2147483648;J[a>>2]=0;J[a+4>>2]=0;return a}function En(a,b,c,d){d=wl(b,c,d);a:{if(d){break a}a=a+4|0;while(1){d=0;if(J[b>>2]>=0){break a}if(!Pj(b,0)){break a}d=Ql(b,b,a);if(!d){continue}break}}return d}function $ea(a){a=a|0;var b=0,c=0;b=Ui-16|0;Ui=b;c=-13;if(!dk(J[a+12>>2],J[a+16>>2],J[64874],b+12|0,0)){J[J[a+28>>2]+8>>2]=J[b+12>>2];c=0}Ui=b+16|0;return c|0}function IK(a,b){var c=0;c=Ui-32|0;Ui=c;J[c+28>>2]=b;J[c+24>>2]=0;b=c+32|0;J[c+20>>2]=b;J[c+16>>2]=b;H[c+24|0]=1;J[c+12>>2]=c+28;a=HK(a,c+12|0);Ui=b;return a}function FW(a){a=a|0;var b=0,c=0,d=0;b=Ui-16|0;Ui=b;Aj(a,1,b+12|0);d=J[b+12>>2];c=J[a+8>>2];J[c+8>>2]=3;O[c>>3]=d|0;J[a+8>>2]=J[a+8>>2]+16;Ui=b+16|0;return 1}function zs(){var a=0,b=0,c=0;a=Ui-16|0;Ui=a;nF(0,a);Ui=a+16|0;b=M[a+8>>2]/1e3|0;c=ixa(J[a>>2],J[a+4>>2],1e6,0);b=b+c|0;a=Yi;Yi=b>>>0>>0?a+1|0:a;return b}function t$(a){a=a|0;var b=0,c=0;b=Ej(a,2);Oj(a,1,5);c=J[a+8>>2];J[c+8>>2]=3;b=b+1|0;O[c>>3]=b|0;J[a+8>>2]=J[a+8>>2]+16;Nj(a,1,b);return((kj(a,-1)|0)!=0)<<1}function rba(a,b,c){a=a|0;b=b|0;c=c|0;a=L[a+220>>1];if(a&16){if(a&8){return(b|0)==4|0}return(b|0)==3|0}if((c|0)==2){return(b|0)==7|0}return(b|0)==2|(b|0)==8}function mG(a){var b=0;J[a+24>>2]=0;J[a+16>>2]=0;J[a+20>>2]=0;J[a+8>>2]=0;J[a+12>>2]=-2;J[a+4>>2]=1023;b=a;a=sj(1023);J[b>>2]=a;if(!a){Av(3003);B()}H[a|0]=0}function dB(a){var b=0;b=Ui-16|0;Ui=b;J[b+12>>2]=a>>>24;J[b>>2]=a&255;J[b+8>>2]=a>>>16&255;J[b+4>>2]=a>>>8&255;Dn(983056,16,76826,b);Ui=b+16|0;return 983056}function bl(){var a=0,b=0,c=0;a=Ui-16|0;Ui=a;nF(1,a);Ui=a+16|0;b=M[a+8>>2]/1e3|0;c=ixa(J[a>>2],J[a+4>>2],1e6,0);b=b+c|0;a=Yi;Yi=b>>>0>>0?a+1|0:a;return b}function Zea(a){a=a|0;var b=0,c=0;b=Ui-16|0;Ui=b;c=-13;if(!dk(J[a+12>>2],J[a+16>>2],J[62554],b+12|0,0)){J[J[a+32>>2]>>2]=J[b+12>>2];c=0}Ui=b+16|0;return c|0}function SJ(a){var b=0,c=0;b=Ui-32|0;Ui=b;pj(b+12|0,a,-2,37704,1201);Hu(a);if((kj(a,-1)|0)==5){Pk(a,-3);Kj(a,-3);c=-2}else{c=-4}gj(a,c);oj(b+12|0);Ui=b+32|0}function P_(a){a=a|0;var b=0;b=mm(a,2,139642,0);Oj(a,1,6);gj(a,3);if(LA(a,1970,0,b)){b=J[a+8>>2];J[b+8>>2]=0;J[a+8>>2]=b+16;Pk(a,-2);a=2}else{a=1}return a|0}function M6(a,b){a=a|0;b=b|0;var c=0,d=0;c=J[83763];if(c){J[c+84>>2]=b;J[c+80>>2]=a;d=J[c>>2];if(d){Zi[d|0](J[c+4>>2],a,b)}return}Z(6639,37255,66,58624);B()}function Dz(a,b,c){var d=0;d=Ui-16|0;Ui=d;J[d+12>>2]=c;J[d+8>>2]=b;a=Ua(a|0,d+8|0,1,d+4|0)|0;if(a){J[245744]=a;a=-1}else{a=0}Ui=d+16|0;return a?-1:J[d+4>>2]}function vwa(a,b,c){a=a|0;b=b|0;c=c|0;var d=0;if((b|0)!=(c|0)){b=b-c|0;d=a+c|0;c=0;a=0;while(1){H[c+d|0]=b;a=a+1|0;c=a&255;if(b>>>0>c>>>0){continue}break}}}function op(a){var b=0,c=0;b=J[a+80>>2];c=J[b+3128>>2];a=J[a+140>>2]&32767;if(a>>>0>=J[b+3132>>2]-c>>6>>>0){Z(145396,53895,487,84789);B()}return c+(a<<6)|0}function nw(a,b){var c=0,d=0;b=b+7&-8;d=J[a+92>>2];a:{if(d){b=J[a+104>>2]-b|0;c=0;if((b|0)>2]){break a}J[a+104>>2]=b;return b+d|0}c=sj(b)}return c}function ioa(a,b,c){a=a|0;b=b|0;c=c|0;var d=0;d=Ui-16|0;Ui=d;a=J[a+284>>2];if(a){J[d+12>>2]=c;J[d+8>>2]=b;H[d+4|0]=1;aK(a?J[a+124>>2]:0,11,d+4|0)}Ui=d+16|0}function XB(a,b,c,d){var e=0;e=Ui-16|0;Ui=e;a:{if((b|0)!=(d|0)){J[e+4>>2]=b;J[e>>2]=d;dj(4,96538,8388,e);a=-13;break a}a=Wj(a,c,d)?-20:0}Ui=e+16|0;return a}function rv(a,b,c){var d=0;d=Ui-32|0;Ui=d;a:{if(K[b|0]==K[J[54660]]){a=Ul(b,c);b=Yi;break a}cv(d,a+104|0,0);em(d,b,c);a=jp(d);b=Yi}Ui=d+32|0;Yi=b;return a}function n6(a){a=a|0;var b=0;a=Vj(a,1);Jx(J[a>>2]);a:{if(H[a+32|0]&1){break a}b=J[a+12>>2];if(b){cj(b)}b=J[a+4>>2];if(!b){break a}cj(b)}J[a>>2]=0;return 0}function Zj(a,b){var c=0,d=0;a:{if(!a){break a}c=ixa(a,0,b,0);d=Yi;if((a|b)>>>0<65536){break a}c=d?-1:c}a=sj(c);if(!(!a|!(K[a-4|0]&3))){ij(a,0,c)}return a}function S4(a){a=a|0;J[a+40>>2]=191;J[a+36>>2]=192;J[a+32>>2]=193;J[a+28>>2]=194;J[a+24>>2]=195;J[a+20>>2]=196;J[a+16>>2]=197;J[a+12>>2]=198;J[a+8>>2]=199}function Mo(a){var b=0,c=0;b=a*a;c=a*b;return Q(c*(b*b)*(b*2718311493989822e-21+-.00019839334836096632)+(c*(b*.008333329385889463+-.16666666641626524)+a))}function DD(a){a=a|0;var b=0,c=0;b=Ui-16|0;Ui=b;c=-2;if(!dk(J[a+12>>2],J[a+16>>2],J[60794],b+12|0,0)){J[J[a+32>>2]>>2]=J[b+12>>2];c=0}Ui=b+16|0;return c|0}function s9(a){a=a|0;var b=0,c=0;b=Ui-32|0;Ui=b;Qj(a,1,b+28|0);Bj(a);c=qj(a,-1,J[219396],139183);gj(a,-2);fm(b,c,J[b+28>>2],7);yo(a,b);Ui=b+32|0;return 1}function kea(a){a=a|0;var b=0,c=0;b=Ui-16|0;Ui=b;c=-2;if(!dk(J[a+12>>2],J[a+16>>2],252736,b+12|0,0)){J[J[a+32>>2]>>2]=J[b+12>>2];c=0}Ui=b+16|0;return c|0}function cea(a){a=a|0;var b=0,c=0;b=Ui-16|0;Ui=b;c=-2;if(!dk(J[a+12>>2],J[a+16>>2],264432,b+12|0,0)){J[J[a+32>>2]>>2]=J[b+12>>2];c=0}Ui=b+16|0;return c|0}function Sfa(a){a=a|0;var b=0,c=0;b=Ui-16|0;Ui=b;c=-2;if(!dk(J[a+12>>2],J[a+16>>2],264984,b+12|0,0)){J[J[a+32>>2]>>2]=J[b+12>>2];c=0}Ui=b+16|0;return c|0}function PL(a){J[a+44>>2]=0;I[a+40>>1]=65535;J[a+32>>2]=-1;J[a+36>>2]=0;J[a+24>>2]=0;J[a+16>>2]=0;J[a+20>>2]=0;J[a+8>>2]=0;J[a>>2]=0;J[a+4>>2]=0;return a}function Ofa(a){a=a|0;var b=0,c=0;b=Ui-16|0;Ui=b;c=-2;if(!dk(J[a+12>>2],J[a+16>>2],226008,b+12|0,0)){J[J[a+32>>2]>>2]=J[b+12>>2];c=0}Ui=b+16|0;return c|0}function I0(a){a=a|0;var b=0;if(!J[jn(a,135350)>>2]){fj(a,66693,0)}uj(a,1);b=J[a+8>>2];J[b+8>>2]=1;J[b>>2]=0;J[a+8>>2]=J[a+8>>2]+16;Nk(a,2022,2);return 1}function Gea(a){a=a|0;var b=0,c=0;b=Ui-16|0;Ui=b;c=-2;if(!dk(J[a+12>>2],J[a+16>>2],265792,b+12|0,0)){J[J[a+32>>2]>>2]=J[b+12>>2];c=0}Ui=b+16|0;return c|0}function ht(a){var b=0;b=J[a+24>>2];if(b){YD(J[a+12>>2],J[a+16>>2],J[a+20>>2],b);return}if(!J[a+16>>2]){b=J[a+32>>2];J[a+12>>2]=J[a+28>>2];J[a+16>>2]=b}}function Tea(a){a=a|0;var b=0,c=0;c=J[a>>2];a=J[J[a+8>>2]+8>>2];b=J[a>>2];if(b){Uj(b)}b=J[a+4>>2];if(b){vj(c,b)}b=J[a+8>>2];if(b){vj(c,b)}cj(a);return 0}function HT(a){a=a|0;var b=0,c=0;J[a>>2]=245008;a:{if(K[a+16|0]!=1){break a}b=J[a+20>>2];if(!b){break a}c=J[a+4>>2];Zi[J[J[c>>2]+16>>2]](c,b)}return a|0}function Dta(a,b,c,d){a=a|0;b=b|0;c=c|0;d=d|0;var e=0;e=Ui-16|0;Ui=e;J[e+12>>2]=a;J[e+8>>2]=c;J[e+4>>2]=244568;Zi[J[J[b>>2]+48>>2]](b,e+4|0,d);Ui=e+16|0}function eU(a){a=a|0;var b=0,c=0;J[a>>2]=245340;a:{if(K[a+8|0]!=1){break a}b=J[a+12>>2];if(!b){break a}c=J[a+4>>2];Zi[J[J[c>>2]+16>>2]](c,b)}return a|0}function ZS(a){a=a|0;var b=0,c=0;J[a>>2]=245736;a:{if(K[a+8|0]!=1){break a}b=J[a+12>>2];if(!b){break a}c=J[a+4>>2];Zi[J[J[c>>2]+16>>2]](c,b)}return a|0}function YS(a){a=a|0;var b=0,c=0;J[a>>2]=245784;a:{if(K[a+8|0]!=1){break a}b=J[a+12>>2];if(!b){break a}c=J[a+4>>2];Zi[J[J[c>>2]+16>>2]](c,b)}return a|0}function TO(a,b,c,d){var e=0;e=Ui-16|0;Ui=e;J[e+12>>2]=d;d=-4;if(J[a+216>>2]!=J[a+208>>2]-J[a+200>>2]>>4){pl(a+192|0,b,c,e+12|0);d=0}Ui=e+16|0;return d}function Lka(a){a=a|0;var b=0,c=0;b=J[J[a+12>>2]>>2];a:{if(K[b+58|0]&2){c=J[b+36>>2];b=J[a+4>>2];IR(c,b,1);a=1;if(K[b+957|0]&8){break a}}a=0}return a|0}function CT(a){a=a|0;var b=0,c=0;J[a>>2]=245368;a:{if(K[a+8|0]!=1){break a}b=J[a+12>>2];if(!b){break a}c=J[a+4>>2];Zi[J[J[c>>2]+16>>2]](c,b)}return a|0}function raa(a){a=a|0;var b=0,c=0,d=0,e=0,f=0,g=0;b=Vj(a,1);c=Aj(a,2,0);Bk(a,(e=b,f=c,g=yj(c),d=J[J[b+12>>2]+12>>2],Zi[d](e|0,f|0,g|0)|0),Yi);return 1}function gca(a){a=a|0;J[a+88>>2]=0;bb(0);a:{if(!(K[J[79491]+220|0]&2)){break a}a=_()|0;if(!a){break a}Cj(a,49210,2953);Z(114101,40535,2953,49210);B()}}function dM(a,b){J[a+8>>2]=0;J[a>>2]=0;J[a+4>>2]=0;b=J[b>>2];if(!(!b|J[b+232>>2]!=2)){N[a>>2]=N[b+320>>2];N[a+4>>2]=N[b+324>>2];N[a+8>>2]=N[b+328>>2]}}function bra(a,b,c){a=a|0;b=b|0;c=c|0;var d=0;d=Ui-16|0;Ui=d;J[d+12>>2]=c;J[d+8>>2]=a;J[d+4>>2]=b;J[d>>2]=244464;Zi[J[J[a>>2]+48>>2]](a,d,c);Ui=d+16|0}function LE(a){a=a|0;var b=0;J[a>>2]=245092;b=J[a+48>>2];Zi[J[J[b>>2]+20>>2]](b,J[a+64>>2]);b=J[a+48>>2];Zi[J[J[b>>2]+16>>2]](b,J[a+64>>2]);return a|0}function x1(){var a=0,b=0,c=0,d=0;b=Ui-32|0;Ui=b;a=J[84569];if(a){c=a?J[a>>2]:0;d=pj(b+12|0,c,0,39337,60);if(ao(a)){Ol(c,1,0,0);xo(a)}oj(d)}Ui=b+32|0}function w1(a){a=a|0;var b=0;if(J[a+33904>>2]){while(1){if(J[a+33908>>2]){b=0}else{b=CJ(a)}J[a+33912>>2]=b;vp(8e3);if(J[a+33904>>2]){continue}break}}}function Tna(a,b){a=a|0;b=b|0;I[b+104>>1]=250;J[b+100>>2]=J[b+100>>2]&-131073|131072;J[b+20>>2]=88;J[b+24>>2]=89;J[b+44>>2]=90;J[b+52>>2]=91;return 0}function Lqa(a,b,c,d,e,f){a=a|0;b=b|0;c=c|0;d=d|0;e=e|0;f=Q(f);Zi[J[J[a>>2]+8>>2]](a,b,c,e);Zi[J[J[a>>2]+8>>2]](a,c,d,e);Zi[J[J[a>>2]+8>>2]](a,d,b,e)}function Gta(a,b){a=a|0;b=b|0;var c=0,d=0;a=J[a+192>>2];c=J[a+8>>2];if(c){b=J[a+12>>2];d=J[b>>2];J[a+8>>2]=c-1;J[a+12>>2]=d;return b|0}return Yj(b)|0}function tp(a,b,c,d){var e=0;e=Ui-16|0;Ui=e;J[e>>2]=b;dj(0,96538,26865,e);J[a+8>>2]=d;J[a+4>>2]=c;J[a>>2]=b;J[a+12>>2]=J[74548];J[74548]=a;Ui=e+16|0}function ov(a,b,c,d){var e=0;e=Ui-16|0;Ui=e;J[e>>2]=b;dj(0,88293,26825,e);J[a+8>>2]=d;J[a+4>>2]=c;J[a+12>>2]=b;J[a>>2]=J[73936];J[73936]=a;Ui=e+16|0}function k$(a){a=a|0;var b=0,c=0;b=Aj(a,1,0);Aj(a,2,0);b=YA(a,b);c=J[a+8>>2];J[c+8>>2]=0;J[a+8>>2]=c+16;Pk(a,-2);xj(a,(b|0)==1?13530:14312);return 3}function h2(a){a=a|0;var b=0,c=0;b=Ui-528|0;Ui=b;c=Aj(a,1,0);J[b+4>>2]=Ds(qj(a,2,J[84570],0),b+16|0,512);J[b>>2]=c;ik(a,84470,b);Ui=b+528|0;return 1}function N2(a){a=a|0;var b=0,c=0,d=0;b=Ui-1024|0;Ui=b;d=Aj(a,1,0);c=Ui-16|0;Ui=c;J[c>>2]=d;Gj(b,1024,31902,c);Ui=c+16|0;xj(a,b);Ui=b+1024|0;return 1}function ME(a,b){a=a|0;b=b|0;var c=Q(0),d=Q(0),e=Q(0);c=N[b>>2];d=N[b+4>>2];e=N[b+8>>2];J[a+24>>2]=0;N[a+20>>2]=R(e);N[a+16>>2]=R(d);N[a+12>>2]=R(c)}function KJ(a){var b=0,c=0;J[a>>2]=0;J[a+4>>2]=0;J[a+8>>2]=0;J[a+12>>2]=0;b=J[a+4>>2];c=J[a>>2];if((b|0)!=(c|0)){J[a+4>>2]=((c-b|0)+7&-8)+b}return a}function Ida(a){a=a|0;var b=0;b=J[a>>2];a=J[J[a+8>>2]+8>>2];oy(b,a);if(a){a:{if(H[a+20|0]&1){break a}b=J[a+8>>2];if(!b){break a}cj(b)}cj(a)}return 0}function yaa(a,b,c){a=a|0;b=b|0;c=c|0;if(a){if(Ts(J[a+48>>2],1)){J[a+168>>2]=c;J[a+164>>2]=b;EL(J[a+48>>2],b,c)}return}Z(9196,40535,1589,59537);B()}function tra(a,b){a=a|0;b=b|0;var c=0;if(K[a+241|0]==1){c=J[a+172>>2];if(c){J[83765]=J[83765]+1;Zi[J[61751]](J[c-4>>2])}}J[a+172>>2]=b;H[a+241|0]=0}function rI(a){var b=0,c=0;if(a>>>0<16){b=8}else{while(1){b=b+1|0;c=a+1|0;a=c>>>1|0;if(c>>>0>31){continue}break}b=(b<<3)+8|0}return a>>>0<8?a:b|a-8}function Qna(a){a=a|0;var b=0;a=J[a+4>>2];if(!a){return-1e3}JB(J[a+16>>2]);a:{if(H[a+12|0]&1){break a}b=J[a>>2];if(!b){break a}cj(b)}cj(a);return 0}function z$(a){a=a|0;var b=0,c=0;b=Ui-16|0;Ui=b;Nj(a,-10001,1);c=J[Vj(a,-1)>>2];if(!c){J[b>>2]=9472;fj(a,74487,b)}a=jJ(a,c,1);Ui=b+16|0;return a|0}function wo(a){var b=0;a:{if(J[a+76>>2]<0){a=EV(a);b=Yi;break a}a=EV(a);b=Yi}if((b|0)>=0&a>>>0>=2147483648|(b|0)>0){J[245744]=61;return-1}return a}function w$(a){a=a|0;var b=0,c=0;b=Ui-16|0;Ui=b;c=J[jn(a,135350)>>2];a:{if(!c){mj(a,139524,13);break a}J[b>>2]=c;ik(a,137317,b)}Ui=b+16|0;return 1}function u$(a){a=a|0;var b=0,c=0;b=Ui-16|0;Ui=b;Nj(a,-10001,2);c=J[Vj(a,-1)>>2];if(!c){J[b>>2]=9441;fj(a,74487,b)}a=iJ(a,c,1);Ui=b+16|0;return a|0}function qH(a,b,c,d){var e=0;e=K[d|0];if((c|0)==1){J[a>>2]=(e^255)+2;a=K[d+1|0];J[b>>2]=(a|0)==255?2:(a^255)+1|0;return}J[a>>2]=e;J[b>>2]=K[d+1|0]}function ara(a,b){a=a|0;b=b|0;var c=0;c=J[a+4>>2];if(!((c|0)!=J[b>>2]&(c|0)!=J[b+4>>2])){c=J[a+8>>2];Zi[J[J[c>>2]+32>>2]](c,b,J[a+12>>2])}return 0}function KS(a){var b=0,c=0;c=a>>>23&255;b=0;a:{if(c>>>0<127){break a}b=2;if(c>>>0>150){break a}c=1<<150-c;b=0;if(c-1&a){break a}b=a&c?1:2}return b}function vpa(a){a=a|0;var b=0;if(a){if(a){b=J[a+60>>2];if(b){Zi[J[J[J[a>>2]+28>>2]+32>>2]](b)}Zi[J[66509]](a,0,64)|0}Zi[J[66509]](a,0,64)|0}cj(a)}function t0(a){a=a|0;var b=0;if(a){if(a){b=J[a+60>>2];if(b){Zi[J[J[J[a>>2]+28>>2]+32>>2]](b)}Zi[J[66509]](a,0,64)|0}Zi[J[66509]](a,0,392)|0}cj(a)}function eR(a){a=a|0;var b=0,c=0;b=Ui-16|0;Ui=b;c=dn(a,1);N[b>>2]=N[c+32>>2];N[b+4>>2]=N[c+36>>2];N[b+8>>2]=N[c+40>>2];cl(a,b);Ui=b+16|0;return 1}function yz(a){var b=0,c=0;b=Ui-16|0;Ui=b;c=-1;a:{if(zz(a)){break a}if((Zi[J[a+32>>2]](a,b+15|0,1)|0)!=1){break a}c=K[b+15|0]}Ui=b+16|0;return c}function xta(a,b,c){a=a|0;b=b|0;c=c|0;a=0;b=J[b+204>>2];a:{if(b&4){break a}c=J[c+204>>2];if(c&4){break a}if(!(b&3)){return 1}a=!(c&3)}return a|0}function jra(a,b,c,d){a=a|0;b=b|0;c=c|0;d=d|0;a=J[b>>2];a=Zi[J[J[a>>2]+48>>2]](a,8)|0;J[a>>2]=244932;J[a+4>>2]=J[b>>2];J[a>>2]=245612;return a|0}function iaa(a){a=a|0;var b=0,c=0;b=Ui-16|0;Ui=b;Qj(a,1,b+12|0);Bj(a);c=qj(a,-1,J[219396],139183);gj(a,-2);jv(c,J[b+12>>2],0);Ui=b+16|0;return 0}function ZX(a,b,c,d,e,f,g,h){a=a|0;b=b|0;c=c|0;d=d|0;e=e|0;f=f|0;g=g|0;h=h|0;if(J[a+4>>2]==(c|0)){a=vH(a,g,h,1,e,b,d,f)}else{a=-16512}return a|0}function Uta(a,b,c){a=a|0;b=b|0;c=c|0;if(b>>>0<=5){J[c+12>>2]=0;a=b<<2;N[c+8>>2]=N[a+172196>>2];N[c+4>>2]=N[a+172172>>2];N[c>>2]=N[a+172148>>2]}}function N8(a){a=a|0;var b=0,c=0;b=Ui-16|0;Ui=b;c=Qj(a,1,b+12|0);a=ck(a,2);J[c+476>>2]=J[c+476>>2]&-134217729|a<<27&134217728;Ui=b+16|0;return 0}function yl(a,b,c,d){var e=0;e=P(b,c);a:{if(J[d+76>>2]<0){a=mF(a,e,d);break a}a=mF(a,e,d)}if((e|0)==(a|0)){return b?c:0}return(a>>>0)/(b>>>0)|0}function km(a,b,c){var d=0,e=0;d=Ui-16|0;Ui=d;J[d+8>>2]=1;e=c>>31;J[d+4>>2]=e|1;J[d>>2]=(c^e)-e;J[d+12>>2]=d;a=wl(a,b,d+4|0);Ui=d+16|0;return a}function h8(a){a=a|0;var b=0,c=0,d=0;b=Ui-16|0;Ui=b;c=Qj(a,1,b+12|0);a=Aj(a,2,0);d=J[c+484>>2];if(d){cj(d)}J[c+484>>2]=Gk(a);Ui=b+16|0;return 0}function XG(a){var b=0,c=0,d=0,e=0;b=J[a>>2]-1|0;b=(c=hxa(b),d=0,e=b,e?c:d);if(!b){a=J[a+4>>2];a=(c=hxa(a),d=0,e=a,e?c:d);b=a?a+32|0:0}return b}function XW(a,b){a=a|0;b=b|0;var c=0,d=0;d=Ui-112|0;Ui=d;c=d+4|0;ww(c);pA(c,J[a+68>>2]+776|0);xw(c,b);if(c){Zi[J[66509]](c,0,108)|0}Ui=d+112|0}function Wt(a,b){var c=0;c=Vn(b,1);a:{if(c){break a}a=a+4|0;while(1){c=0;if((_j(b,a)|0)<0){break a}c=tn(b,b,a);if(!c){continue}break}}return c}function WW(a,b){a=a|0;b=b|0;var c=0,d=0;d=Ui-224|0;Ui=d;c=d+8|0;bs(c);mA(c,J[a+68>>2]+888|0);Ut(c,b);if(c){Zi[J[66509]](c,0,216)|0}Ui=d+224|0}function L8(a){a=a|0;var b=0,c=0;b=Ui-16|0;Ui=b;c=Qj(a,1,b+12|0);a=ck(a,2);J[c+476>>2]=J[c+476>>2]&-67108865|a<<26&67108864;Ui=b+16|0;return 0}function w_(a){a=a|0;var b=0;b=J[a+8>>2]-J[a+12>>2]>>4;if(L[a+52>>1]>L[a+54>>1]){xl(a,3180,0)}H[a+6|0]=1;J[a+12>>2]=J[a+8>>2]-(b<<4);return-1}function mva(a,b){a=a|0;b=b|0;var c=0,d=0;c=J[a>>2];d=J[b>>2];if((c|0)<(d|0)){return 1}if((c|0)!=(d|0)){return 0}return J[a+4>>2]>2]|0}function mj(a,b,c){var d=0;d=J[a+16>>2];if(M[d+68>>2]>=M[d+64>>2]){Om(a)}d=J[a+8>>2];b=zk(a,b,c);J[d+8>>2]=4;J[d>>2]=b;J[a+8>>2]=J[a+8>>2]+16}function Wk(a,b,c){$o(a,J[a+8>>2]+((b^-1)<<4)|0,c);a:{if((c|0)!=-1){break a}b=J[a+20>>2];a=J[a+8>>2];if(M[b+8>>2]>a>>>0){break a}J[b+8>>2]=a}}function Tma(a,b,c){a=a|0;b=b|0;c=c|0;if(!(!b|!K[b|0])){a=rv(J[a+4>>2],b,yj(b));return a|0}a=J[a+4>>2];b=J[a+96>>2];Yi=J[a+100>>2];return b|0}function Oo(a){var b=0;a=a*a;b=a*a;return Q(a*b*(a*2439044879627741e-20+-.001388676377460993)+(b*.04166662332373906+(a*-.499999997251031+1)))}function Jpa(a,b,c){a=a|0;b=b|0;c=c|0;a=(b<<4)+a|0;b=J[a+64>>2];J[c+8>>2]=J[a+60>>2];J[c+12>>2]=b;b=J[a+56>>2];J[c>>2]=J[a+52>>2];J[c+4>>2]=b}function Fj(a,b,c){var d=0;d=J[a+16>>2];if(M[d+68>>2]>=M[d+64>>2]){Om(a)}d=J[a+8>>2];b=pq(a,b,c);J[d+8>>2]=5;J[d>>2]=b;J[a+8>>2]=J[a+8>>2]+16}function Co(){var a=0,b=0;b=Ui-32|0;Ui=b;a=nj(24);J[a>>2]=0;J[a+4>>2]=0;J[a+16>>2]=0;J[a+20>>2]=0;J[a+8>>2]=0;J[a+12>>2]=0;Ui=b+32|0;return a}function z8(a){a=a|0;var b=0,c=0;b=Ui-16|0;Ui=b;c=Qj(a,1,b+12|0);a=ck(a,2);J[c+476>>2]=J[c+476>>2]&-524289|((a|0)!=0)<<19;Ui=b+16|0;return 0}function yo(a,b){var c=0;c=Sj(a,16);N[c>>2]=N[b>>2];N[c+4>>2]=N[b+4>>2];N[c+8>>2]=N[b+8>>2];N[c+12>>2]=N[b+12>>2];rj(a,-1e4,106998);Mj(a,-2)}function a$(a){a=a|0;var b=0;b=dF(a,so(a,-10003),J[a+8>>2]-J[a+12>>2]>>4);if((b|0)<0){if(Mk(a,-1)){hu(a,1);Pk(a,-2);lm(a,2)}lq(a)}return b|0}function Zt(a,b,c,d){d=Ql(b,c,d);a:{if(d){break a}a=a+4|0;while(1){d=0;if((_j(b,a)|0)<0){break a}d=tn(b,b,a);if(!d){continue}break}}return d}function SS(a,b){var c=0,d=0;d=PS(a);c=J[a+288>>2];J[b+8>>2]=J[a+284>>2];J[b+12>>2]=c;c=J[a+280>>2];J[b>>2]=J[a+276>>2];J[b+4>>2]=c;return d}function K$(a){a=a|0;if((kj(a,1)|0)==-1){Nj(a,-10001,2)}if(!J[jn(a,135350)>>2]){fj(a,66693,0)}fu(a,1);rj(a,-1,62387);return Zi[KA(a)|0](a)|0}function B4(a,b,c,d,e,f){a=a|0;b=b|0;c=c|0;d=d|0;e=e|0;f=f|0;b=Ui-16|0;Ui=b;J[b+12>>2]=f;a=QB(a,88289,d,-1,-1,b+12|0,e);Ui=b+16|0;return a|0}function tq(a,b){var c=0;c=Sj(a,16);N[c>>2]=N[b>>2];N[c+4>>2]=N[b+4>>2];N[c+8>>2]=N[b+8>>2];N[c+12>>2]=N[b+12>>2];rj(a,-1e4,16786);Mj(a,-2)}function cM(a,b){var c=0;a=J[a+100>>2];if(a){while(1){if((b|0)==(c|0)){return J[a+12>>2]}c=c+1|0;a=J[a+4>>2];if(a){continue}break}}return 0}function bo(a,b){var c=0;c=J[74549];if(c){while(1){if(J[c>>2]==(a|0)&J[c+4>>2]==(b|0)){return c}c=J[c+44>>2];if(c){continue}break}}return 0}function Py(a,b){var c=0,d=0;c=J[215795];if(c){while(1){d=J[c+40>>2];if(!(!d|!(H[c+52|0]&1))){Zi[d|0](a,b)}c=J[c>>2];if(c){continue}break}}}function ul(a,b){var c=0,d=0;c=yj(a)+1|0;d=b&255;while(1){a:{b=0;if(!c){break a}c=c-1|0;b=c+a|0;if((d|0)!=K[b|0]){continue}}break}return b}function sM(a,b,c){var d=0;d=J[a+4>>2];a=J[a>>2];if((d-a|0)/18568>>>0<=b>>>0){Z(145396,53895,487,84789);B()}J[(a+P(b,18568)|0)+18556>>2]=c}function pM(a,b,c){var d=0;d=J[a+4>>2];a=J[a>>2];if((d-a|0)/18568>>>0<=b>>>0){Z(145396,53895,487,84789);B()}J[(a+P(b,18568)|0)+18552>>2]=c}function mr(a){var b=0,c=0;b=J[84549];c=J[a+8>>2];J[c+8>>2]=3;O[c>>3]=b|0;J[a+8>>2]=J[a+8>>2]+16;Ck(a,-10002);b=Vj(a,-1);gj(a,-2);return b}function AZ(a){a=a|0;J[a+16>>2]=-1732584194;J[a+20>>2]=271733878;J[a+8>>2]=1732584193;J[a+12>>2]=-271733879;J[a>>2]=0;J[a+4>>2]=0;return 0}function xo(a){var b=0,c=0;a=J[a>>2];gj(a,-2);c=J[84546];b=J[a+8>>2];J[b+8>>2]=3;O[b>>3]=c|0;J[a+8>>2]=J[a+8>>2]+16;Pk(a,-2);Kj(a,-10002)}function lk(a,b,c,d){var e=0;e=J[a+16>>2];b=Zi[J[e+12>>2]](J[e+16>>2],b,c,d)|0;if(!(b|!d)){al(a,4)}J[e+68>>2]=J[e+68>>2]+(d-c|0);return b}function V_(a){a=a|0;var b=0,c=0;b=mm(a,1,0,0);c=J[a+8>>2]-J[a+12>>2]>>4;if(RA(a,b)){lq(a)}Wk(a,0,-1);return(J[a+8>>2]-J[a+12>>2]>>4)-c|0}function V6(a,b,c){a=a|0;b=b|0;c=c|0;var d=Q(0),e=0;d=Q(1);e=J[b>>2];if(!(J[e+236>>2]==J[a+132>>2]|K[e+204|0]&4)){d=lM(a,b,c)}return Q(d)}function Rda(a){a=a|0;var b=0;a=J[J[a+8>>2]+8>>2];b=K[a+8|0];if(b&1){H[a+8|0]=b|2;return 0}Zi[J[79455]](J[a>>2],J[a+4>>2]);cj(a);return 0}function Iba(a,b){a=a|0;b=b|0;var c=0;c=J[a+60>>2];a=J[a+56>>2];if(c-a>>2>>>0<=b>>>0){Z(145396,53895,487,84789);B()}return J[a+(b<<2)>>2]}function B1(a){a=a|0;var b=0;b=Ui-16|0;Ui=b;J[b+8>>2]=J[J[Vj(a,1)>>2]>>2];J[b+4>>2]=32205;J[b>>2]=53139;ik(a,142462,b);Ui=b+16|0;return 1}function ooa(a,b){a=a|0;b=b|0;a:{if(a){if(!b){break a}J[b>>2]=oi(J[a>>2]);return}Z(70570,39308,86,44430);B()}Z(44312,39308,87,44430);B()}function lA(a){var b=0,c=0;b=280672;c=52392;a:{while(1){if((a|0)==(c|0)){break a}c=J[b+40>>2];b=b+40|0;if(c){continue}break}b=0}return b}function eA(a){var b=0,c=0;a=a>>>0<=1?1:a;while(1){a:{b=sj(a);if(b){break a}c=J[248828];if(!c){break a}Zi[c|0]();continue}break}return b}function SW(a,b,c){a=a|0;b=b|0;c=c|0;$t(J[a+68>>2]+596|0,b,c);cs(J[a+68>>2]+684|0,b,c);nA(J[a+68>>2]+776|0,b,c);$r(J[a+68>>2]+888|0,b,c)}function Jl(a,b,c){var d=0,e=0;d=-20736;a:{if(!a){break a}e=J[a>>2];if(!e|!J[a+8>>2]){break a}d=Zi[J[e+20>>2]](J[a+4>>2],b,c)|0}return d}function Gj(a,b,c,d){var e=0,f=0;e=Ui-16|0;Ui=e;f=-1;if(!(!c|(!a|!b))){J[e+12>>2]=d;a=Pr(a,b,c,d);f=(a|0)>=(b|0)?-1:a}Ui=e+16|0;return f}function D2(a){a=a|0;var b=0;b=J[a+8>>2]-J[a+12>>2]|0;Aj(a,1,0);if(b>>4!=J[a+8>>2]-J[a+12>>2]>>4){Z(143244,39097,1111,9646);B()}return 0}function tZ(a){a=a|0;var b=0,c=0;b=gm(a,1033);b=M[b+48>>2]>2];c=J[a+8>>2];J[c+8>>2]=1;J[c>>2]=b;J[a+8>>2]=J[a+8>>2]+16;return 1}function kxa(a,b){var c=0;c=b>>31;a=a^c;a=mxa(a-c|0,(b^c)-((a>>>0>>0)+c|0)|0,100)^c;b=a-c|0;Yi=(c^Yi)-((a>>>0>>0)+c|0)|0;return b}function jxa(a,b,c){var d=0;d=b>>31;a=a^d;a=d^lxa(a-d|0,(b^d)-((a>>>0>>0)+d|0)|0,c);b=a-d|0;Yi=(d^Yi)-((a>>>0>>0)+d|0)|0;return b}function ik(a,b,c){var d=0,e=0;d=Ui-16|0;Ui=d;e=J[a+16>>2];if(M[e+68>>2]>=M[e+64>>2]){Om(a)}J[d+12>>2]=c;a=Mw(a,b,c);Ui=d+16|0;return a}function U$(a){a=a|0;var b=0;Aj(a,1,0);Aj(a,2,0);gj(a,2);b=J[a+8>>2];J[b+8>>2]=3;O[b>>3]=0;J[a+8>>2]=J[a+8>>2]+16;Nk(a,2054,3);return 1}function Rs(a){var b=0,c=0;b=L[a+20>>1];c=J[a+4>>2];a=J[a>>2];if(b>>>0>=c-a>>2>>>0){Z(145396,53895,487,84789);B()}return J[a+(b<<2)>>2]}function R4(a){a=a|0;var b=0;if(a){a:{if(H[a+40|0]&1){break a}b=J[a+20>>2];if(b){cj(b)}b=J[a+12>>2];if(!b){break a}cj(b)}cj(a)}return 0}function LJ(a,b){var c=0;c=(b|0)>0?(b>>>0)/1e3|0:b;b=(c|0)>0;a=RR(a,b?c:0);if((a|0)<0){return Pm(15764,274,J[245744])}return b?a?0:-3:0}function BI(a,b,c){var d=0,e=0;e=a;d=b<<2;a=lk(a,0,0,d+20|0);ss(e,a,6);J[a+12>>2]=c;H[a+6|0]=0;H[a+7|0]=b;if(b){ij(a+20|0,0,d)}return a}function nsa(a,b){a=a|0;b=b|0;var c=0;c=J[b+4>>2];J[a+12>>2]=J[b>>2];J[a+16>>2]=c;c=J[b+12>>2];J[a+20>>2]=J[b+8>>2];J[a+24>>2]=c;IE(a)}function kE(a,b){var c=0;c=b;b=J[a+40>>2];c=c+b|0;J[a+40>>2]=c;if(!(K[a+44|0]|M[a+36>>2]>=c>>>0)){Z(71484,37410,76,56587);B()}return b}function jS(a,b){var c=0;a:{if(!K[927968]|((a|0)!=1|b>>>0>127)){break a}a=(b<<6)+936608|0;if(!K[a|0]){break a}H[a+63|0]=0;c=a}return c}function Xna(a,b){a=a|0;b=b|0;var c=0;c=a;a=J[b+16>>2];c=c+a|0;if(c>>>0<=M[b+20>>2]){J[b+16>>2]=c;a=a+J[b+12>>2]|0}else{a=0}return a|0}function W_(a){a=a|0;var b=0;b=kI(a);a:{if((kj(a,1)|0)==6){if(!cr(a,1)){break a}}Dk(a,1,73731)}uj(a,1);Xo(a,b,1);Nk(a,1971,1);return 1}function QA(a){var b=0,c=0;b=-1;if(a>>>0>=256){while(1){b=b+8|0;c=a>>>0>65535;a=a>>>8|0;if(c){continue}break}}return K[a+173312|0]+b|0}function Mfa(a){a=a|0;var b=0;b=nj(4);J[b>>2]=0;if(dk(J[a+12>>2],J[a+16>>2],226232,b,0)){cj(b);return-13}J[J[a+28>>2]+8>>2]=b;return 0}function Dqa(a){a=a|0;var b=0;J[a>>2]=244140;b=J[a+16>>2];if(!(b?!b|K[a+20|0]!=1:1)){J[83765]=J[83765]+1;Zi[J[61751]](J[b-4>>2])}cj(a)}function tda(a,b){a=a|0;b=b|0;a=J[77376];a:{if(!a){break a}b=J[a>>2];if(b){On(b);a=J[77376];if(!a){break a}}cj(a)}J[77376]=0;return 0}function loa(a,b,c){a=a|0;b=b|0;c=c|0;if(a){if(K[a+4|0]==1){pi(J[a>>2],b|0,c|0);a=0}else{a=-15}return a|0}Z(70570,39308,67,61057);B()}function lQ(a,b){a:{if(!a){a=J[b+28>>2];if(!((J[b+32>>2]-a|0)/24|0)){break a}a=J[a+4>>2]}return J[a>>2]}Z(145396,53895,494,84789);B()}function f4(a){a=a|0;var b=0,c=0,d=0;c=Vj(a,1);d=Vj(a,2);b=J[a+8>>2];J[b+8>>2]=1;J[b>>2]=(c|0)==(d|0);J[a+8>>2]=J[a+8>>2]+16;return 1}function VM(a,b,c,d,e){a=a|0;b=b|0;c=c|0;d=d|0;e=e|0;J[a+12>>2]=d;J[a+8>>2]=c;J[a+4>>2]=b;if((b<<16|c)<=65536){H[a+92|0]=K[a+92|0]|2}}function H_(a){a=a|0;var b=0,c=0;Em(a,1);Em(a,2);c=eu(a,1,2);b=J[a+8>>2];J[b+8>>2]=1;J[b>>2]=(c|0)!=0;J[a+8>>2]=J[a+8>>2]+16;return 1}function yB(a,b){var c=0;c=Ui-32|0;Ui=c;pj(c+12|0,a,0,37704,1299);Hu(a);if((kj(a,-1)|0)==5){Fp(a,-1,b)}gj(a,-2);oj(c+12|0);Ui=c+32|0}function Yqa(a,b,c){a=a|0;b=b|0;c=c|0;var d=0;d=Ui-16|0;Ui=d;J[d+12>>2]=b;J[d+8>>2]=244484;Zi[J[J[a>>2]+48>>2]](a,d+8|0,c);Ui=d+16|0}function Mba(a,b){a=a|0;b=b|0;var c=0;c=J[b+148>>2];J[a>>2]=J[b+144>>2];J[a+4>>2]=c;c=J[b+156>>2];J[a+8>>2]=J[b+152>>2];J[a+12>>2]=c}function Hm(a){var b=0;a:{if(!a|!J[a>>2]|(J[a+4>>2]==-2|J[a+8>>2]==-2)){break a}if(J[a+12>>2]==-2){break a}b=J[a+16>>2]!=-2}return b}function Dra(a,b){a=a|0;b=b|0;var c=0;c=J[b+224>>2];J[a>>2]=J[b+220>>2];J[a+4>>2]=c;c=J[b+232>>2];J[a+8>>2]=J[b+228>>2];J[a+12>>2]=c}function zda(a){a=a|0;a=J[a>>2];if(J[a+188>>2]!=J[J[a+4>>2]+24>>2]){if(!LQ(a)){dj(3,88458,116868,0)}J[a+188>>2]=J[J[a+4>>2]+24>>2]}}function u9(a){a=a|0;var b=0,c=0;c=J[Qj(a,1,0)+476>>2]>>>18&1;b=J[a+8>>2];J[b+8>>2]=3;O[b>>3]=c>>>0;J[a+8>>2]=J[a+8>>2]+16;return 1}function mw(a,b){var c=0,d=0;a:{if(b>>>0<=31){d=J[a>>2];c=a+4|0;break a}b=b-32|0;c=a}c=J[c>>2];J[a>>2]=d<>2]=c<>>32-b}function hC(a,b){var c=0;c=nj(40);I[c+32>>1]=0;J[c+24>>2]=-1;J[c+28>>2]=-1;J[c+16>>2]=0;J[c+8>>2]=a;J[c+12>>2]=b;J[c>>2]=0;return c}function vu(a,b){var c=0,d=0;c=Ui-96|0;Ui=c;d=-2;if(!(Vv(a,c)|(J[c+4>>2]&61440)!=32768)){J[b>>2]=J[c+24>>2];d=0}Ui=c+96|0;return d}function lw(a,b){var c=0,d=0;c=J[a+4>>2];a:{if(b>>>0<=31){d=J[a>>2];break a}b=b-32|0;d=c;c=0}J[a+4>>2]=c>>>b;J[a>>2]=c<<32-b|d>>>b}function gp(a,b){var c=0;c=Ui-16|0;Ui=c;a:{if((kj(a,b)|0)==1){a=ck(a,b);break a}J[c>>2]=b;a=fj(a,48292,c)}Ui=c+16|0;return(a|0)!=0}function bz(a,b){var c=0;ow(a,b);c=J[a+4>>2];if(c){J[83765]=J[83765]+1;Zi[J[61751]](J[c-4>>2])}J[a+4>>2]=b;J[a+12>>2]=J[a+12>>2]-1}function ZL(a,b){var c=0;c=nj(40);J[c+24>>2]=0;J[c+28>>2]=0;J[c+4>>2]=0;J[c>>2]=247020;H[c+20|0]=0;N[c+8>>2]=b*N[a+64>>2];return c}function Yua(a,b,c){a=a|0;b=b|0;c=Q(c);var d=Q(0),e=Q(0);e=N[b+136>>2];d=N[b+116>>2];N[a+4>>2]=c*Q(d*N[b+140>>2]);N[a>>2]=c*Q(d*e)}function Y7(a){a=a|0;var b=0;b=Ui-16|0;Ui=b;Qj(a,1,b+12|0);J[b+4>>2]=Aj(a,2,0);J[b>>2]=52074;a=fj(a,143805,b);Ui=b+16|0;return a|0}function X2(a){a=a|0;var b=0,c=0;b=Ui-32|0;Ui=b;c=pj(b+12|0,a,1,39097,1381);Du(a,Aj(a,1,b+8|0),J[b+8>>2]);oj(c);Ui=b+32|0;return 1}function Paa(a,b){a=a|0;b=b|0;if(!a){Z(9197,40535,4869,57068);B()}Dc(J[(b<<2)+161232>>2]);I[a+152>>1]=L[a+152>>1]&63487|b<<11&2048}function Jva(a,b,c){a=a|0;b=b|0;c=Q(c);var d=Q(0),e=Q(0);e=N[b+240>>2];d=N[b+156>>2];N[a+4>>2]=c*Q(d*N[b+244>>2]);N[a>>2]=c*Q(d*e)}function Gt(a){var b=0;a:{if(!a){break a}J[a+88>>2]=-1;J[a+176>>2]=0;J[a+180>>2]=0;b=J[a+92>>2];if(!b){break a}cj(b);J[a+92>>2]=0}}function hQ(a,b,c,d){var e=0;e=J[a+100>>2];a=J[a+156>>2];return L[(e+(P(P(J[a+32>>2],b)+d|0,J[a+28>>2])<<1)|0)+(c<<1)>>1]+1&65535}function T7(a,b,c){a=a|0;b=b|0;c=c|0;a:{if(c-1>>>0>1){break a}a=SN(J[215872],b);if(!a){break a}_C(J[J[215872]+20>>2],a,(c|0)==1)}}function J9(a){a=a|0;var b=0,c=0;c=J[Qj(a,1,0)+476>>2]>>>19|0;b=J[a+8>>2];J[b+8>>2]=1;J[b>>2]=c&1;J[a+8>>2]=J[a+8>>2]+16;return 1}function e_(a){a=a|0;var b=0,c=0;c=wj(a,1);b=J[a+8>>2];J[b+8>>2]=3;O[b>>3]=c/.017453292519943295;J[a+8>>2]=J[a+8>>2]+16;return 1}function aaa(a){a=a|0;var b=0,c=0;c=J[Qj(a,1,0)+476>>2]&15;b=J[a+8>>2];J[b+8>>2]=3;O[b>>3]=c>>>0;J[a+8>>2]=J[a+8>>2]+16;return 1}function Yj(a){var b=0;J[83764]=J[83764]+1;a=Zi[J[61750]](a+19|0)|0;if(!a){return 0}b=a+4|0;b=(16-b&15)+b|0;J[b-4>>2]=a;return b}function UZ(a){a=a|0;var b=0,c=0;c=wj(a,1);b=J[a+8>>2];J[b+8>>2]=3;O[b>>3]=c*.017453292519943295;J[a+8>>2]=J[a+8>>2]+16;return 1}function QU(a){Sq(J[a>>2],J[a+20>>2]);Sq(J[a>>2],J[a+24>>2]);Sq(J[a>>2],J[a+16>>2]);Sq(J[a>>2],J[a+12>>2]);Sq(J[a>>2],J[a+8>>2])}function Dj(a){var b=0;if(a){b=J[a+8>>2];if(b){Zi[J[66509]](b,0,J[a+4>>2]<<2)|0;cj(J[a+8>>2])}J[a+8>>2]=0;J[a>>2]=1;J[a+4>>2]=0}}function caa(a){a=a|0;var b=0,c=0;c=L[Qj(a,1,0)+478>>1]&3;b=J[a+8>>2];J[b+8>>2]=3;O[b>>3]=c>>>0;J[a+8>>2]=J[a+8>>2]+16;return 1}function Coa(a){a=a|0;var b=0;b=Ej(a,1);if(!((b|0)==1&K[927968]!=0)){fj(a,72341,0)}xj(a,(b|0)==1?K[927968]?945576:0:0);return 1}function w6(a){a=a|0;var b=0,c=0;b=Ui-32|0;Ui=b;c=pj(b+12|0,a,1,42776,134);Kp(a,wn(a,J[84392])+112|0);oj(c);Ui=b+32|0;return 1}function sA(a,b){var c=0;c=-16e3;if(!(J[a>>2]|!b)){c=Zi[J[b+36>>2]]()|0;J[a+4>>2]=c;if(!c){return-16256}J[a>>2]=b;c=0}return c}function pk(a){var b=0;b=bE(a);a:{if(b){break a}b=uO(a);if(b){b=J[J[b+360>>2]+12>>2];if(b){break a}}b=0;fj(a,13655,0)}return b}function jw(a){var b=0,c=0;b=Ui-32|0;Ui=b;c=J[a>>2];J[b+16>>2]=0;c=nm(c,3,b+16|0);a=J[a>>2];J[b>>2]=c|2048;nm(a,4,b);Ui=b+32|0}function P6(){var a=0,b=0;a=J[83763];if(a){b=J[a+8>>2];if(!b){return 1}return Zi[b|0](J[a+12>>2])|0}Z(6639,37255,78,62395);B()}function Ep(a,b,c){var d=0;d=J[a+52>>2];b=zk(d,b,c);a=mu(d,J[J[a+48>>2]+4>>2],b);if(!J[a+8>>2]){J[a+8>>2]=1;J[a>>2]=1}return b}function vp(a){var b=0,c=0;b=Ui-16|0;Ui=b;c=(a>>>0)/1e6|0;J[b>>2]=c;J[b+4>>2]=0;J[b+8>>2]=P(a-P(c,1e6)|0,1e3);gA(b);Ui=b+16|0}function v6(a){a=a|0;var b=0,c=0;b=Ui-32|0;Ui=b;c=pj(b+12|0,a,1,42776,148);Kp(a,wn(a,J[84392])+48|0);oj(c);Ui=b+32|0;return 1}function tB(a,b,c,d){J[d>>2]=0;a=Wr(a,b,c,0,0);if((a|0)<0){a=Pm(36957,107,J[245744]);return(a|0)==-27?-3:a}J[d>>2]=a;return 0}function lx(a,b,c,d){J[d>>2]=0;a=Pt(a,b,c,0,0);if((a|0)<0){a=Pm(36957,107,J[245744]);return(a|0)==-27?-3:a}J[d>>2]=a;return 0}function lna(a){a=a|0;var b=0;b=J[a>>2];a=J[J[a+8>>2]+8>>2];Iq(b,J[a>>2]+1064|0);a=J[a>>2];H[a+3272|0]=K[a+3272|0]|2;return 0}function cra(a,b,c){a=a|0;b=b|0;c=c|0;a=J[b+8>>2];if(a){Zi[J[J[a>>2]>>2]](a)|0;Zi[J[J[c>>2]+52>>2]](c,J[b+8>>2]);J[b+8>>2]=0}}function c2(a){a=a|0;var b=0;b=Ui-528|0;Ui=b;J[b+4>>2]=Ds(Vj(a,1),b+16|0,512);J[b>>2]=49412;ik(a,84560,b);Ui=b+528|0;return 1}function _wa(a){a=a|0;var b=0;a=J[73866];if(a){b=J[a>>2]-1|0;J[a>>2]=b;if(!b){cj(a)}J[73866]=0}aa(291202,158860,0)|0;return 0}function _Y(a){a=a|0;var b=0,c=0;c=gm(a,1024);b=wj(a,2);a:{if(R(b)<2147483648){a=~~b;break a}a=-2147483648}J[c>>2]=a;return 0}function _9(a){a=a|0;var b=0,c=0;c=K[Qj(a,1,0)+479|0]&3;b=J[a+8>>2];J[b+8>>2]=3;O[b>>3]=c>>>0;J[a+8>>2]=J[a+8>>2]+16;return 1}function Z7(a){a=a|0;var b=0;b=Ui-16|0;Ui=b;Qj(a,1,0);J[b+4>>2]=Aj(a,2,0);J[b>>2]=52074;a=fj(a,143855,b);Ui=b+16|0;return a|0}function Uo(a,b,c){var d=0,e=0;d=-20736;a:{if(!a){break a}e=J[a>>2];if(!e){break a}d=Zi[J[e+20>>2]](J[a+4>>2],b,c)|0}return d}function Tn(a,b){var c=0,d=0;c=Ui+-64|0;Ui=c;d=jn(a,b);if(!d){J[c>>2]=b;b=c+16|0;Un(b,73704,c);Dk(a,1,b)}Ui=c- -64|0;return d}function Q_(a){a=a|0;var b=0;Oj(a,1,5);uj(a,-10003);uj(a,1);b=J[a+8>>2];J[b+8>>2]=3;O[b>>3]=0;J[a+8>>2]=J[a+8>>2]+16;return 3}function KA(a){var b=0;b=J[a+8>>2]-16|0;a=0;a:{if(J[b+8>>2]!=6){break a}b=J[b>>2];if(!K[b+6|0]){break a}a=J[b+16>>2]}return a}function $Y(a){a=a|0;var b=0,c=0;c=gm(a,1033);b=wj(a,2);a:{if(R(b)<2147483648){a=~~b;break a}a=-2147483648}J[c>>2]=a;return 0}function s4(a){a=a|0;J[a+36>>2]=218;J[a+32>>2]=219;J[a+28>>2]=220;J[a+20>>2]=221;J[a+16>>2]=222;J[a+12>>2]=223;J[a+8>>2]=224}function O6(a){a=a|0;var b=0,c=0;b=J[83763];if(b){c=J[b+16>>2];if(c){Zi[c|0](J[b+20>>2],a)}return}Z(6639,37255,89,17663);B()}function G1(a){a=a|0;var b=0;a=J[Vj(a,1)>>2];if(a){a:{if(J[a>>2]<=0){break a}b=J[a+4>>2];if(!b){break a}cj(b)}cj(a)}return 0}function BV(a){var b=0;cx();b=J[a+4>>2];a=J[a>>2];vb(a|0,b|0,983128);J[245792]=J[(J[245790]?983184:983180)>>2];return 983128}function $4(a){a=a|0;J[a+36>>2]=183;J[a+32>>2]=184;J[a+28>>2]=185;J[a+20>>2]=186;J[a+16>>2]=187;J[a+12>>2]=188;J[a+8>>2]=189}function woa(a){a=a|0;var b=0;b=Ej(a,1);if(!((b|0)==1&K[927968]!=0)){fj(a,72341,0)}if((b|0)==1){ij(927968,0,50376)}return 0}function vA(a,b,c){var d=0;d=Ui-16|0;Ui=d;J[d+4>>2]=1;J[d+8>>2]=1;J[d>>2]=c;J[d+12>>2]=d;a=Ak(a,b,d+4|0);Ui=d+16|0;return a}function uda(a,b){a=a|0;b=b|0;a=Nr(a,J[b>>2],J[b+4>>2]);if(!a){Z(9197,40800,334,33411);B()}return Op(b,a,582,583,584,585)|0}function sy(a,b,c,d,e){a=J[a+156>>2];J[b>>2]=J[a+36>>2];J[c>>2]=J[a+40>>2];J[d>>2]=J[a+28>>2];J[e>>2]=J[a+32>>2]&2147483647}function qna(a,b){a=a|0;b=b|0;a=Nr(a,J[b>>2],J[b+4>>2]);if(!a){Z(9197,40315,361,45971);B()}return Op(b,a,157,158,159,160)|0}function pna(a,b){a=a|0;b=b|0;a=Nr(a,J[b>>2],J[b+4>>2]);if(!a){Z(9197,38259,218,16403);B()}return Op(b,a,162,163,164,165)|0}function nna(a,b){a=a|0;b=b|0;a=Nr(a,J[b>>2],J[b+4>>2]);if(!a){Z(9197,37583,139,10605);B()}return Op(b,a,171,172,173,174)|0}function VV(a,b,c){J[a+4>>2]=0;J[a+8>>2]=0;J[a>>2]=b;J[a+24>>2]=0;J[a+28>>2]=0;J[a+20>>2]=c;J[a+12>>2]=0;J[a+16>>2]=0;sF(a)}function N6(a){a=a|0;var b=0,c=0;b=J[83763];if(b){c=J[b+24>>2];if(c){Zi[c|0](J[b+28>>2],a)}return}Z(6639,37255,98,3560);B()}function cha(a,b,c){a=a|0;b=b|0;c=c|0;a=J[J[a+360>>2]+12>>2];if(c){a=rv(a,b,c);return a|0}Yi=J[a+100>>2];return J[a+96>>2]}function Rma(a){a=a|0;var b=0;b=Vj(a,1);if(!b){Z(52640,37509,261,5305);B()}Nj(a,-1e4,J[b+16>>2]);uj(a,2);Ck(a,-2);return 1}function Po(a){var b=0;b=Ui-16|0;Ui=b;mo(b);O[a+16>>3]=+J[b+8>>2]/1e6+(+M[b>>2]+ +J[b+4>>2]*4294967296);Ui=b+16|0;return a}function O_(a){a=a|0;var b=0;if(RA(a,mm(a,1,0,0))){b=J[a+8>>2];J[b+8>>2]=0;J[a+8>>2]=b+16;Pk(a,-2);a=2}else{a=1}return a|0}function E1(a){a=a|0;var b=0,c=0;c=J[J[Vj(a,1)>>2]>>2];b=J[a+8>>2];J[b+8>>2]=3;O[b>>3]=c|0;J[a+8>>2]=J[a+8>>2]+16;return 1}function xD(a,b,c){var d=0,e=0,f=0;d=Ui-496|0;Ui=d;f=J[79447];e=d+12|0;hj(e,c,484);a=Zi[f|0](a,b,e)|0;Ui=d+496|0;return a}function uE(a,b){var c=0;c=J[a+4>>2];if((c|0)==J[a+8>>2]){Z(112520,53895,557,53220);B()}b=J[b>>2];J[a+4>>2]=c+4;J[c>>2]=b}function qaa(a){a=a|0;var b=0;b=Vj(a,1);if(!b){Z(52640,37682,221,5302);B()}Nj(a,-1e4,J[b+4>>2]);uj(a,2);Ck(a,-2);return 1}function ona(a,b){a=a|0;b=b|0;a=Nr(a,J[b>>2],J[b+4>>2]);if(!a){Z(9197,42746,158,83115);B()}return Op(b,a,0,167,168,169)|0}function W2(a){a=a|0;var b=0,c=0;c=_k(Aj(a,1,0));b=J[a+8>>2];J[b+8>>2]=1;J[b>>2]=(c|0)!=0;J[a+8>>2]=J[a+8>>2]+16;return 1}function VH(a){var b=0,c=0;b=-24832;c=J[a>>2];if(!(!c|J[c+4>>2]!=2)){J[a+16>>2]=J[67446];J[a+12>>2]=J[67441];b=0}return b}function L_(a){a=a|0;var b=0;Oj(a,1,5);gj(a,2);if($j(a,1)){a=2}else{b=J[a+8>>2];J[b+8>>2]=0;J[a+8>>2]=b+16;a=1}return a|0}function EJ(a){var b=0;b=J[J[245446]+16>>2];if(!b){J[a+20>>2]=0;J[a+16>>2]=0;return}Tj(b);J[a+20>>2]=0;J[a+16>>2]=0;Lj(b)}function $_(a){a=a|0;var b=0;b=kI(a);a:{if((kj(a,1)|0)==6){if(!cr(a,1)){break a}}Dk(a,1,73731)}uj(a,1);Xo(a,b,1);return 1}function yja(a){a=a|0;var b=0;a=J[a+4>>2];if(a){a:{if(H[a+12|0]&1){break a}b=J[a>>2];if(!b){break a}cj(b)}cj(a)}return 0}function kQ(a,b){var c=0;c=J[a+4>>2];a=J[a>>2];if(c-a>>2>>>0<=b>>>0){Z(145396,53895,487,84789);B()}return J[a+(b<<2)>>2]}function d0(a){a=a|0;var b=0,c=0;Oj(a,1,5);c=fl(a,1);b=J[a+8>>2];J[b+8>>2]=3;O[b>>3]=c|0;J[a+8>>2]=J[a+8>>2]+16;return 1}function aM(a,b,c){var d=Q(0),e=Q(0),f=Q(0);e=N[c+64>>2];d=N[b+68>>2];f=N[c+68>>2];J[a+8>>2]=0;N[a+4>>2]=f*d;N[a>>2]=e*d}function VZ(a){a=a|0;var b=0,c=0;c=Zq(wj(a,1),wj(a,2));b=J[a+8>>2];J[b+8>>2]=3;O[b>>3]=c;J[a+8>>2]=J[a+8>>2]+16;return 1}function Qk(a,b,c,d){var e=0;e=J[a>>2];if((b-e|0)<=0){return-96}if(K[e|0]!=(d|0)){return-98}J[a>>2]=e+1;return Vo(a,b,c)}function Pfa(a){a=a|0;var b=0;a=J[J[a+8>>2]+8>>2];b=J[a>>2];if(b){Uj(b)}J[a>>2]=0;b=J[a+4>>2];if(b){ot(b)}cj(a);return 0}function Mqa(a,b,c,d,e,f,g,h,i){a=a|0;b=b|0;c=c|0;d=d|0;e=e|0;f=f|0;g=g|0;h=h|0;i=Q(i);Zi[J[J[a>>2]+24>>2]](a,b,c,d,h,i)}function $Z(a){a=a|0;var b=0,c=0;c=zp(wj(a,1),Ej(a,2));b=J[a+8>>2];J[b+8>>2]=3;O[b>>3]=c;J[a+8>>2]=J[a+8>>2]+16;return 1}function upa(){var a=0;a=Zj(1,132);if(a){Zi[J[66509]](a,0,64)|0;Zi[J[66509]](a- -64|0,0,64)|0;J[a+128>>2]=64}return a|0}function pZ(a){a=a|0;var b=0,c=0;c=J[gm(a,1033)>>2];b=J[a+8>>2];J[b+8>>2]=3;O[b>>3]=c|0;J[a+8>>2]=J[a+8>>2]+16;return 1}function oZ(a){a=a|0;var b=0,c=0;c=J[gm(a,1024)>>2];b=J[a+8>>2];J[b+8>>2]=3;O[b>>3]=c|0;J[a+8>>2]=J[a+8>>2]+16;return 1}function lF(a,b){var c=0;cx();c=J[a+4>>2];a=J[a>>2];wb(a|0,c|0,b|0);J[b+40>>2]=87686;J[b+32>>2]=0;J[b+36>>2]=0;return b}function hk(a,b,c){var d=0;if((c|0)!=-2){d=J[84548];if((d|0)<=0){dj(4,86858,57703,0);d=J[84548]}J[84548]=d-1;Fp(a,b,c)}}function gY(a,b){a=a|0;b=b|0;var c=0;c=b;b=J[b>>2]+7&-8;J[c>>2]=b+16;O[a>>3]=gF(J[b>>2],J[b+4>>2],J[b+8>>2],J[b+12>>2])}function aX(a){a=a|0;var b=0;Oj(a,1,5);b=fl(a,1);Gp(a,40,158859);if((kj(a,2)|0)>0){Oj(a,2,6)}gj(a,2);sV(a,1,b);return 0}function Gq(a){if(a>>>0<2){return 1}if((a&-2)!=2){a=a-4|0;if(a>>>0>11){return 0}a=J[(a<<2)+160564>>2]}else{a=2}return a}function nK(a,b,c){a=a|0;b=b|0;c=c|0;J[a+24>>2]=bl();J[a+28>>2]=Yi;J[a+40>>2]=c;J[a+44>>2]=0;J[a+32>>2]=b;J[a+36>>2]=0}function cl(a,b){var c=0;c=Sj(a,16);N[c>>2]=N[b>>2];N[c+4>>2]=N[b+4>>2];N[c+8>>2]=N[b+8>>2];rj(a,-1e4,108973);Mj(a,-2)}function Zva(a,b,c){a=a|0;b=b|0;c=Q(c);var d=Q(0);d=N[b+116>>2];c=Q(c*N[b+100>>2]);N[a+4>>2]=c*N[b+120>>2];N[a>>2]=c*d}function Yaa(a,b,c){a=a|0;b=b|0;c=c|0;if(a){if(Ts(J[a+48>>2],1)){EL(J[a+48>>2],b,c)}return}Z(9196,40535,1601,6602);B()}function Sz(a,b,c){if(kj(a,2)){uj(a,2);uj(a,b-1|0);uj(a,c-2|0);Wk(a,2,1);b=ck(a,-1);gj(a,-2);return b}return MA(a,b,c)}function Ok(a){var b=0,c=0;c=J[84546];b=J[a+8>>2];J[b+8>>2]=3;O[b>>3]=c|0;J[a+8>>2]=J[a+8>>2]+16;Pk(a,-2);Kj(a,-10002)}function r$(a){a=a|0;var b=0,c=0;c=K[295461];b=J[a+8>>2];J[b+8>>2]=1;J[b>>2]=(c|0)!=0;J[a+8>>2]=J[a+8>>2]+16;return 1}function q$(a){a=a|0;var b=0,c=0;c=K[218556];b=J[a+8>>2];J[b+8>>2]=1;J[b>>2]=(c|0)!=0;J[a+8>>2]=J[a+8>>2]+16;return 1}function o$(a){a=a|0;var b=0,c=0;c=K[295468];b=J[a+8>>2];J[b+8>>2]=1;J[b>>2]=(c|0)!=0;J[a+8>>2]=J[a+8>>2]+16;return 1}function n$(a){a=a|0;var b=0,c=0;c=K[295460];b=J[a+8>>2];J[b+8>>2]=1;J[b>>2]=(c|0)!=0;J[a+8>>2]=J[a+8>>2]+16;return 1}function m7(a){a=a|0;var b=0;a=Ui-16|0;Ui=a;if(K[981584]==1){J[a+12>>2]=0;b=J[245392];if(b){GC(b)}}Ui=a+16|0;return 0}function br(a){var b=0;b=J[a>>2];if(b){Zi[J[66509]](b,0,J[a+4>>2])|0;cj(J[a>>2])}cj(J[a+8>>2]);Zi[J[66509]](a,0,12)|0}function Yp(a,b){J[a>>2]=4;N[a+8>>2]=N[b>>2];N[a+12>>2]=N[b+4>>2];N[a+16>>2]=N[b+8>>2];N[a+20>>2]=N[b+12>>2];return a}function Vma(a){a=a|0;var b=0,c=0;c=J[Vj(a,1)+4>>2];b=J[a+8>>2];J[b+8>>2]=2;J[b>>2]=c;J[a+8>>2]=J[a+8>>2]+16;return 1}function QI(a){a=(a|0)>2147481747?a-2e3|0:a;if(a&3){return 0}a=a+1900|0;if((a|0)%100|0){return 1}return!((a|0)%400|0)}function Pua(a,b,c){a=a|0;b=b|0;c=Q(c);var d=Q(0);d=N[b+104>>2];c=Q(c*N[b+92>>2]);N[a+4>>2]=c*N[b+108>>2];N[a>>2]=c*d}function Pka(a){a=a|0;var b=0;a=J[J[a+16>>2]>>2];b=J[a+56>>2];if(b&65536){J[a+56>>2]=b&-65537;sv(J[a+36>>2])}return 0}function z_(a){a=a|0;var b=0;Em(a,1);b=a;a=kj(a,1);if((a|0)==-1){a=60960}else{a=J[(a<<2)+257632>>2]}xj(b,a);return 1}function uS(a,b){var c=0;c=J[a+4>>2];a=J[a>>2];if(c-a>>6>>>0<=b>>>0){Z(145396,53895,487,84789);B()}return a+(b<<6)|0}function kp(a,b){if((b|0)==4){b=-1;a=J[79488];if(a){b=J[a+16>>2]}return(b|0)!=1&(b|0)!=-1}return Zi[J[79480]](a,b)|0}function FS(a,b,c,d,e,f){J[a>>2]=b;J[a+4>>2]=c;J[a+8>>2]=d;J[a+12>>2]=e&65535|(f>>>16&32768|(e&2147418112)>>>16)<<16}function xaa(a,b){a=a|0;b=b|0;if(J[a+80>>2]){if(b){J[a+76>>2]=0}J[a+80>>2]=0;return 0}Z(138016,40535,677,33873);B()}function sF(a){var b=0;while(1){J[a+4>>2]=0;J[a+8>>2]=0;b=J[a+24>>2];if(b){sF(b)}a=J[a+28>>2];if(a){continue}break}}function o2(a){a=a|0;var b=0,c=0;c=Lp(a,1);b=J[a+8>>2];J[b+8>>2]=1;J[b>>2]=(c|0)!=0;J[a+8>>2]=J[a+8>>2]+16;return 1}function n2(a){a=a|0;var b=0,c=0;c=Hs(a,1);b=J[a+8>>2];J[b+8>>2]=1;J[b>>2]=(c|0)!=0;J[a+8>>2]=J[a+8>>2]+16;return 1}function m2(a){a=a|0;var b=0,c=0;c=$J(a,1);b=J[a+8>>2];J[b+8>>2]=1;J[b>>2]=(c|0)!=0;J[a+8>>2]=J[a+8>>2]+16;return 1}function l2(a){a=a|0;var b=0,c=0;c=Fu(a,1);b=J[a+8>>2];J[b+8>>2]=1;J[b>>2]=(c|0)!=0;J[a+8>>2]=J[a+8>>2]+16;return 1}function k2(a){a=a|0;var b=0,c=0;c=_J(a,1);b=J[a+8>>2];J[b+8>>2]=1;J[b>>2]=(c|0)!=0;J[a+8>>2]=J[a+8>>2]+16;return 1}function j2(a){a=a|0;var b=0,c=0;c=ZJ(a,1);b=J[a+8>>2];J[b+8>>2]=1;J[b>>2]=(c|0)!=0;J[a+8>>2]=J[a+8>>2]+16;return 1}function i2(a){a=a|0;var b=0,c=0;c=EB(a,1);b=J[a+8>>2];J[b+8>>2]=1;J[b>>2]=(c|0)!=0;J[a+8>>2]=J[a+8>>2]+16;return 1}function b6(a){a=a|0;var b=0,c=0;c=Vj(a,1);b=J[a+8>>2];J[b+8>>2]=1;J[b>>2]=(c|0)!=0;J[a+8>>2]=J[a+8>>2]+16;return 1}function uba(a,b){a=a|0;b=b|0;var c=0;if(!(!(47>>>b&1)|b>>>0>5)){c=(L[a+220>>1]&L[(b<<1)+161312>>1])!=0}return c|0}function eka(a,b,c,d){a=a|0;b=b|0;c=c|0;d=d|0;a=by(J[J[a>>2]+8>>2],J[a+4>>2]);if(!a){return 0}return at(a,b,c,d)|0}function _X(a,b){a=a|0;b=b|0;J[b+12>>2]=1;J[b>>2]=1;J[b+20>>2]=a+20;J[b+16>>2]=96706;J[b+8>>2]=a+8;J[b+4>>2]=91655}function Jr(a,b,c){rj(a,-1e4,b);xj(a,c);b=J[a+8>>2];J[b+8>>2]=1;J[b>>2]=1;J[a+8>>2]=J[a+8>>2]+16;Xj(a,-3);gj(a,-2)}function JH(a,b){var c=0;c=sk(a,b);a:{if(c){break a}c=sk(a+12|0,b+12|0);if(c){break a}c=sk(a+24|0,b+24|0)}return c}function FH(a){var b=0;b=a+8|0;if(b){Zi[J[66509]](b,0,216)|0}J[a+224>>2]=0;Zi[J[66509]](a+228|0,0,400)|0;J[a>>2]=0}function zea(a){a=a|0;var b=0;b=J[J[a+8>>2]+8>>2];if(!b){Z(95450,37124,131,3308);B()}HD(J[a>>2],b);AM(b);return 0}function wja(a){a=a|0;var b=0;b=nj(16);J[b>>2]=0;J[b+4>>2]=0;J[b+8>>2]=0;J[b+12>>2]=0;J[J[a+12>>2]>>2]=b;return 0}function rC(a){ij(J[a>>2],255,J[a+4>>2]<<2);J[a+20>>2]=-1;J[a+24>>2]=0;J[a+12>>2]=J[a+8>>2];J[a+36>>2]=J[a+32>>2]}function oP(a,b,c,d,e){var f=0;if(!(!a|!b)){f=b- -64|0;zD(a,b,f,c,d,e);zD(a,b+16|0,f,c,d,e);zD(a,b+32|0,f,c,d,e)}}function Xaa(a,b,c){a=a|0;b=b|0;c=c|0;if(Zi[c|0](a)|0){while(1){Sa(b|0,a|0,0,1);if(Zi[c|0](a)|0){continue}break}}}function xx(a,b){var c=0;c=Ui-2064|0;Ui=c;J[c>>2]=b;b=c+16|0;a=yl(b,Gj(b,2048,31902,c),1,a);Ui=c+2064|0;return a}function p$(a){a=a|0;var b=0,c=0;c=BS();b=J[a+8>>2];J[b+8>>2]=1;J[b>>2]=(c|0)!=0;J[a+8>>2]=J[a+8>>2]+16;return 1}function jfa(a){a=a|0;var b=0,c=0;b=J[J[a+8>>2]+8>>2];c=J[b>>2];if(c){vj(J[a>>2],c)}cj(J[b+4>>2]);cj(b);return 0}function j_(a){a=a|0;var b=0,c=0;c=eF(wj(a,1));b=J[a+8>>2];J[b+8>>2]=3;O[b>>3]=c;J[a+8>>2]=J[a+8>>2]+16;return 1}function g_(a){a=a|0;var b=0,c=0;c=Vy(wj(a,1));b=J[a+8>>2];J[b+8>>2]=3;O[b>>3]=c;J[a+8>>2]=J[a+8>>2]+16;return 1}function d_(a){a=a|0;var b=0,c=0;c=ax(wj(a,1));b=J[a+8>>2];J[b+8>>2]=3;O[b>>3]=c;J[a+8>>2]=J[a+8>>2]+16;return 1}function _Z(a){a=a|0;var b=0,c=0;c=GI(wj(a,1));b=J[a+8>>2];J[b+8>>2]=3;O[b>>3]=c;J[a+8>>2]=J[a+8>>2]+16;return 1}function U_(a){a=a|0;var b=0;b=Zm(a,2,1);gj(a,1);if(!(!Mk(a,1)|(b|0)<=0)){hu(a,b);uj(a,1);lm(a,2)}return lq(a)|0}function T_(a){a=a|0;var b=0,c=0;c=ns(a,3,0);b=J[a+8>>2];J[b+8>>2]=3;O[b>>3]=c|0;J[a+8>>2]=J[a+8>>2]+16;return 1}function R_(a){a=a|0;var b=0;Em(a,1);if(!sm(a,1)){b=J[a+8>>2];J[b+8>>2]=0;J[a+8>>2]=b+16;return 1}sI(a);return 1}function RZ(a){a=a|0;var b=0,c=0;c=Ur(wj(a,1));b=J[a+8>>2];J[b+8>>2]=3;O[b>>3]=c;J[a+8>>2]=J[a+8>>2]+16;return 1}function m_(a){a=a|0;var b=0,c=0;c=wj(a,1);b=J[a+8>>2];J[b+8>>2]=3;O[b>>3]=R(c);J[a+8>>2]=J[a+8>>2]+16;return 1}function jE(a){a=a-1|0;if(!(a>>>0>=18|!(258303>>>a&1))){return J[(a<<2)+158992>>2]}Z(151913,40511,52,59893);B()}function h_(a){a=a|0;var b=0,c=0;c=wj(a,1);b=J[a+8>>2];J[b+8>>2]=3;O[b>>3]=W(c);J[a+8>>2]=J[a+8>>2]+16;return 1}function cx(){if(!(H[983216]&1)){ti(983172,983176,983232,983264);J[245796]=983264;J[245795]=983232;H[983216]=1}}function c_(a){a=a|0;var b=0,c=0;c=wj(a,1);b=J[a+8>>2];J[b+8>>2]=3;O[b>>3]=V(c);J[a+8>>2]=J[a+8>>2]+16;return 1}function Vk(a,b){if(!(!a|!J[a>>2])){J[a+208>>2]=21;J[a+212>>2]=2;H[J[a+204>>2]]=2;H[J[a+204>>2]+1|0]=b;Nm(a,1)}}function PZ(a){a=a|0;var b=0,c=0;c=wj(a,1);b=J[a+8>>2];J[b+8>>2]=3;O[b>>3]=Y(c);J[a+8>>2]=J[a+8>>2]+16;return 1}function Opa(a,b,c,d){a=a|0;b=b|0;c=c|0;d=d|0;Zi[J[J[a>>2]+96>>2]](a,b,c);Zi[J[J[a>>2]+96>>2]](a,(b+1|0)%3|0,d)}function ur(a,b,c){if((c|0)==2097152|c>>>0>2097152){Z(94863,39550,1887,72368);B()}return Zi[J[79481]](a,b,c)|0}function sI(a){if(sm(a,1)){xj(a,67352);Ll(a,-2);if(!kj(a,-1)){gj(a,-3);return 0}Rl(a,-2);a=1}else{a=0}return a}function xn(a,b,c,d,e){var f=0;f=Ui-16|0;Ui=f;J[f+8>>2]=c;J[f+12>>2]=d;a=AD(a,b,f+8|0,1,e);Ui=f+16|0;return a}function wZ(a){a=a|0;var b=0;Nt(gm(a,1033));b=J[a+8>>2];J[b+8>>2]=3;O[b>>3]=1;J[a+8>>2]=J[a+8>>2]+16;return 1}function vZ(a){a=a|0;var b=0;Nt(gm(a,1024));b=J[a+8>>2];J[b+8>>2]=3;O[b>>3]=1;J[a+8>>2]=J[a+8>>2]+16;return 1}function kr(a,b){var c=0;c=Ui-112|0;Ui=c;J[c>>2]=b;Gj(a,1024,31902,c);a=Vv(a,c+16|0);Ui=c+112|0;return a?-2:0}function jka(a){a=a|0;var b=0;a=J[J[a+16>>2]>>2];b=K[a+22|0];if(b&4){H[a+22|0]=b|2;a=0}else{a=-1e3}return a|0}function Z0(a,b,c,d,e,f){a=a|0;b=b|0;c=c|0;d=d|0;e=e|0;f=f|0;a=MH(a,c,d,e,f);return((a|0)==-19456?-14592:a)|0}function Ry(a){var b=0;b=J[a+8>>2];a=J[a+4>>2];if(b>>>0>a>>>0){Z(71496,39940,86,57585);B()}return(a|0)==(b|0)}function K4(a){a=a|0;J[a+36>>2]=201;J[a+32>>2]=202;J[a+28>>2]=203;J[a+16>>2]=204;J[a+12>>2]=205;J[a+8>>2]=206}function Gpa(a,b){a=a|0;b=b|0;if(J[J[a+16>>2]+48>>2]){while(1){TV(a);if(J[J[a+16>>2]+48>>2]){continue}break}}}function Bj(a){var b=0,c=0;c=J[84546];b=J[a+8>>2];J[b+8>>2]=3;O[b>>3]=c|0;J[a+8>>2]=J[a+8>>2]+16;Ck(a,-10002)}function A4(a){a=a|0;J[a+36>>2]=208;J[a+32>>2]=209;J[a+28>>2]=210;J[a+16>>2]=211;J[a+12>>2]=212;J[a+8>>2]=213}function yda(a){a=a|0;var b=0;b=J[a>>2];if(J[b+16>>2]==J[a+8>>2]&J[a+12>>2]==J[b+20>>2]){Ex(J[b+24>>2],3,0)}}function Nw(a,b,c,d){var e=0;e=Ui-16|0;Ui=e;J[e+12>>2]=c;J[e+8>>2]=b;a=LA(a,1962,e+8|0,d);Ui=e+16|0;return a}function GX(a){a=a|0;var b=0;b=Aj(a,1,0);a=Ui-16|0;Ui=a;J[a>>2]=b;aa(292365,158960,a|0)|0;Ui=a+16|0;return 0}function FX(a){a=a|0;var b=0;b=Aj(a,1,0);a=Ui-16|0;Ui=a;J[a>>2]=b;aa(292329,158960,a|0)|0;Ui=a+16|0;return 0}function EE(a,b,c){J[a+24>>2]=0;J[a+28>>2]=0;J[a+20>>2]=c;J[a+16>>2]=b;J[a+8>>2]=0;J[a+12>>2]=0;O[a>>3]=Oz()}function kW(a,b,c){a=a|0;b=b|0;c=+c;a=(b<<2)+a|0;if(R(c)<2147483648){J[a>>2]=~~c;return}J[a>>2]=-2147483648}function Soa(a,b,c){a=a|0;b=b|0;c=c|0;c=Ui-384|0;Ui=c;vS(c,a,b);Zi[J[66509]](c,0,384)|0;Ui=c+384|0;return 0}function Roa(a,b,c){a=a|0;b=b|0;c=c|0;c=Ui-384|0;Ui=c;vS(a,c,b);Zi[J[66509]](c,0,384)|0;Ui=c+384|0;return 0}function Oz(){var a=0;a=Ui-16|0;Ui=a;mo(a);Ui=a+16|0;return+J[a+8>>2]/1e6+(+M[a>>2]+ +J[a+4>>2]*4294967296)}function K_(a){a=a|0;var b=0;Oj(a,1,5);uj(a,-10003);uj(a,1);b=J[a+8>>2];J[b+8>>2]=0;J[a+8>>2]=b+16;return 3}function F0(a){a=a|0;var b=0,c=0;c=jn(a,135350);b=J[c>>2];if(!b){fj(a,66693,0);b=J[c>>2]}return jJ(a,b,2)|0}function C4(a,b,c,d,e,f,g,h){a=a|0;b=b|0;c=c|0;d=d|0;e=e|0;f=f|0;g=g|0;h=h|0;return QB(a,88289,d,e,f,h,g)|0}function C0(a){a=a|0;var b=0,c=0;c=jn(a,135350);b=J[c>>2];if(!b){fj(a,66693,0);b=J[c>>2]}return iJ(a,b,2)|0}function sE(a){if(H[a+12|0]&1){Z(151729,53895,501,2284);B()}lj((J[a+8>>2]-J[a>>2]>>2)+1|0,4,a,a+8|0,a+4|0)}function io(a,b,c){var d=0;d=Ui-16|0;Ui=d;J[d+8>>2]=b;J[d+4>>2]=c;J[d>>2]=a;dj(4,88458,136077,d);Ui=d+16|0}function h$(a){a=a|0;Oj(a,1,5);if(!sm(a,1)){Fj(a,0,1);uj(a,-1);Mj(a,1)}uj(a,-10002);ej(a,-2,5326);return 0}function P7(a,b){a=a|0;b=b|0;b=Ts(J[a>>2],1);if(b){a=J[a>>2];J[a+60>>2]=0;J[a+56>>2]=2126}return(b|0)!=0|0}function Dfa(a){a=a|0;var b=0,c=0;b=J[a+4>>2];c=J[a>>2];a=J[J[a+8>>2]+8>>2];ny(b,c,a);if(a){cj(a)}return 0}function sZ(a){a=a|0;var b=0;gm(a,1024);b=J[a+8>>2];J[b+8>>2]=1;J[b>>2]=0;J[a+8>>2]=J[a+8>>2]+16;return 1}function _sa(a,b,c,d){a=a|0;b=b|0;c=c|0;d=d|0;a=J[b>>2];return QT(Zi[J[J[a>>2]+48>>2]](a,44)|0,b,c,d,1)|0}function N4(a,b,c){a=a|0;b=b|0;c=c|0;if(jj(a,66717)){a=-1}else{J[c>>2]=hj(nj(2188),a,2188);a=0}return a|0}function Hsa(a,b,c,d){a=a|0;b=b|0;c=c|0;d=d|0;a=J[b>>2];return JT(Zi[J[J[a>>2]+48>>2]](a,80)|0,b,c,d,0)|0}function Gsa(a,b,c,d){a=a|0;b=b|0;c=c|0;d=d|0;a=J[b>>2];return JT(Zi[J[J[a>>2]+48>>2]](a,80)|0,b,c,d,1)|0}function $sa(a,b,c,d){a=a|0;b=b|0;c=c|0;d=d|0;a=J[b>>2];return QT(Zi[J[J[a>>2]+48>>2]](a,44)|0,b,c,d,0)|0}function Qwa(a){a=a|0;a:{if(H[297760]&1){break a}a=J[74435];if(a){cj(a)}a=J[74433];if(!a){break a}cj(a)}}function Mwa(a){a=a|0;a:{if(H[338228]&1){break a}a=J[84552];if(a){cj(a)}a=J[84550];if(!a){break a}cj(a)}}function BJ(){var a=0,b=0;a=Ui-16|0;Ui=a;J[a+12>>2]=0;b=J[245446];if(b){if(!J[b+12>>2]){CJ(b)}}Ui=a+16|0}function q7(a,b,c){a=a|0;b=b|0;c=c|0;dj(2,95071,82703,0);a=J[b+12>>2];if(a){Zi[a|0](c,J[b+16>>2])}cj(b)}function iY(a){a=a|0;var b=0;b=Ui-16|0;Ui=b;J[b>>2]=Ij(a,-1,0);mB(J[53386],158451,b);Ui=b+16|0;return 0}function fW(a,b,c){a=a|0;b=b|0;c=+c;a=(b<<2)+a|0;if(c<4294967296&c>=0){J[a>>2]=~~c>>>0;return}J[a>>2]=0}function dW(a,b,c){a=a|0;b=b|0;c=+c;a=(b<<1)+a|0;if(c<4294967296&c>=0){I[a>>1]=~~c>>>0;return}I[a>>1]=0}function Wm(a,b){if(J[a+4>>2]<<5>>>0>b>>>0){a=J[J[a+8>>2]+(b>>>3&536870908)>>2]>>>b&1}else{a=0}return a}function Dy(a){var b=0;cj(J[a>>2]);a:{if(H[a+20|0]&1){break a}b=J[a+8>>2];if(!b){break a}cj(b)}return a}function bna(a){a=a|0;var b=0;b=J[a>>2];a=J[J[a+8>>2]+8>>2];Iq(b,a+52|0);Uj(J[a+44>>2]);dE(a);return 0}function Wr(a,b,c,d,e){a=Hi(a|0,b|0,c|0,0,d|0,e|0)|0;if(a>>>0>=4294963201){J[245744]=0-a;a=-1}return a}function Pt(a,b,c,d,e){a=Ei(a|0,b|0,c|0,0,d|0,e|0)|0;if(a>>>0>=4294963201){J[245744]=0-a;a=-1}return a}function Jea(a){a=a|0;var b=0;b=J[J[a+8>>2]+8>>2];Np(J[a>>2],593,b);GD(J[a>>2],b);if(b){cj(b)}return 0}function p0(a,b,c){a=a|0;b=b|0;c=c|0;a=J[b+4>>2];if(!a){return 0}J[c>>2]=a;J[b+4>>2]=0;return J[b>>2]}function _0(a,b,c,d,e,f,g,h){a=a|0;b=b|0;c=c|0;d=d|0;e=e|0;f=f|0;g=g|0;h=h|0;return LH(a,b,c,d,e,f)|0}function QM(a){if(a){cj(J[a+20>>2]);J[a+20>>2]=0;J[a+32>>2]=J[a+32>>2]&-2147483648;cj(J[a>>2]);cj(a)}}function Iu(a,b){var c=0;c=Ui-16|0;Ui=c;J[c+12>>2]=0;a=Mp(a,b,c+12|0);Ui=c+16|0;return a?J[c+12>>2]:0}function Av(a){var b=0;b=Ui-16|0;Ui=b;J[b+12>>2]=0;b=J[53386];Ct(b,a,0,2810,2811);dx(10,b);Ra(-1);B()}function $R(a){var b=0;b=J[a+8>>2];if(b>>>0>M[a+4>>2]){Z(71496,39940,33,49586);B()}return b-J[a>>2]|0}function w4(a){a=a|0;if(!jj(a,43210)){return 1}a=ul(a+140|0,46);if(!a){return 0}return!jj(a,43209)|0}function nH(a,b,c,d){var e=0,f=0;e=1-a|0;f=a;a=(c|0)==1;H[d|0]=a?e:f;H[d+1|0]=a?0-((b|0)==2?1:b)|0:b}function lta(a,b){a=a|0;b=b|0;if(!(L[a+14>>1]&L[b+4>>1])){return 0}return(L[b+6>>1]&L[a+12>>1])!=0|0}function CD(a){a=ul(a,46);if(!jj(a,82212)){return 1}if(!jj(a,80844)){return 2}return jj(a,82373)?0:3}function um(a,b,c){var d=0;d=b>>31;a:{if(J[a+76>>2]<0){a=FV(a,b,d,c);break a}a=FV(a,b,d,c)}return a}function ss(a,b,c){a=J[a+16>>2];J[b>>2]=J[a+28>>2];J[a+28>>2]=b;a=K[a+20|0];H[b+4|0]=c;H[b+5|0]=a&3}function mta(a,b){a=a|0;b=b|0;if(!(L[a+10>>1]&L[b+4>>1])){return 0}return(L[b+6>>1]&L[a+8>>1])!=0|0}function gP(a,b,c,d){if(J[b+56>>2]!=1){Z(87620,39550,1599,48997);B()}return Zi[J[79414]](a,b,c,d)|0}function Wba(a){a=a|0;if(!a){Z(55942,40535,3054,12228);B()}return(J[a+2080>>2]-J[a+2076>>2]|0)/24|0}function R6(a,b){a=a|0;b=b|0;var c=0,d=0;c=J[83763];d=J[c+56>>2];if(d){Zi[d|0](J[c+60>>2],a,b?1:2)}}function Kua(a,b,c){a=a|0;b=b|0;c=Q(c);var d=Q(0);d=N[b+104>>2];N[a+4>>2]=c*N[b+108>>2];N[a>>2]=c*d}function $G(a,b){a=a|0;b=b|0;ok(a,3);b=J[a+8>>2];J[b+8>>2]=0;J[a+8>>2]=b+16;mj(a,74795,17);return 2}function qva(a,b,c){a=a|0;b=b|0;c=Q(c);var d=Q(0);d=N[b+96>>2];N[a+4>>2]=c*N[b+100>>2];N[a>>2]=c*d}function nx(a,b){var c=0;c=a;a=J[b+16>>2];return Nw(c,J[(a?12:0)+b>>2],J[(a?16:4)+b>>2],J[b+8>>2])}function ipa(a){a=a|0;var b=0;Em(a,1);if(!sm(a,1)){b=J[a+8>>2];J[b+8>>2]=0;J[a+8>>2]=b+16}return 1}function sW(a,b,c,d,e,f,g){a=a|0;b=b|0;c=c|0;d=d|0;e=e|0;f=f|0;g=g|0;return cG(6,a,b,c,d,e,f,g)|0}function rW(a,b,c,d,e,f,g){a=a|0;b=b|0;c=c|0;d=d|0;e=e|0;f=f|0;g=g|0;return cG(7,a,b,c,d,e,f,g)|0}function iW(a,b,c){a=a|0;b=b|0;c=+c;a=(b<<1)+a|0;if(R(c)<2147483648){I[a>>1]=~~c;return}I[a>>1]=0}function ap(a,b,c){a=J[a+16>>2];if(K[a+21|0]==1){dl(a,c);return}H[b+5|0]=K[a+20|0]&3|K[b+5|0]&248}function VR(a,b){var c=0;c=b;b=(b|0)>0;_O(J[a+224>>2],b?c:0);if(!kp(J[a+224>>2],4)){H[a+452|0]=b}}function Ks(a,b){var c=0;c=Ui-16|0;Ui=c;J[c+4>>2]=a+140;J[c>>2]=a+8;Gj(b,1024,52316,c);Ui=c+16|0} +function zJ(a,b){a=a|0;b=b|0;var c=0;c=J[a+4>>2];J[b>>2]=J[a>>2];J[b+4>>2]=c;J[b+8>>2]=J[a+8>>2]}function vx(a,b){var c=0;c=Ui-16|0;Ui=c;J[c+4>>2]=a+140;J[c>>2]=a+8;Gj(b,1024,76118,c);Ui=c+16|0}function ria(a,b,c,d){a=a|0;b=b|0;c=c|0;d=d|0;a=J[a+156>>2];if(!a){return 0}return at(a,b,c,d)|0}function ppa(a,b,c){a=a|0;b=b|0;c=c|0;if((c|0)==256){a=_H(a,b)?-24832:0}else{a=-24832}return a|0}function pja(a,b,c,d){a=a|0;b=b|0;c=c|0;d=d|0;a=J[a+148>>2];if(!a){return 0}return at(a,b,c,d)|0}function nr(a,b){var c=0;c=J[a+8>>2];J[c+8>>2]=3;O[c>>3]=b|0;J[a+8>>2]=J[a+8>>2]+16;Ck(a,-10002)}function np(a,b){var c=0;c=J[b+48>>2];J[a>>2]=c;rC(c);c=J[a>>2];a=J[b>>2];$K(c,a,J[b+4>>2]-a>>2)}function gW(a,b,c){a=a|0;b=b|0;c=+c;a=a+b|0;if(c<4294967296&c>=0){H[a|0]=~~c>>>0;return}H[a|0]=0}function fP(a,b,c,d){if(J[b+56>>2]){Z(85331,39550,1594,48937);B()}return Zi[J[79413]](a,b,c,d)|0}function cia(a,b,c,d){a=a|0;b=b|0;c=c|0;d=d|0;a=J[a+144>>2];if(!a){return 0}return at(a,b,c,d)|0}function bY(){var a=0,b=0;a=Zj(1,172);if(a){b=ij(a,0,164);J[b+168>>2]=0;J[b+164>>2]=0}return a|0}function _ia(a,b,c,d){a=a|0;b=b|0;c=c|0;d=d|0;a=J[a+172>>2];if(!a){return 0}return at(a,b,c,d)|0}function XU(a,b,c){a=a|0;b=b|0;c=Q(c);var d=Q(0);d=N[b+84>>2];N[a+4>>2]=c*N[b+88>>2];N[a>>2]=c*d}function Kja(a,b,c,d){a=a|0;b=b|0;c=c|0;d=d|0;a=J[a+220>>2];if(!a){return 0}return at(a,b,c,d)|0}function yra(a,b){a=a|0;b=b|0;if(!(!b|J[b+232>>2]!=2)){Zi[J[J[a>>2]+84>>2]](a,b);return}OE(a,b)}function wE(a,b){var c=0;c=Ui-16|0;Ui=c;O[c+8>>3]=b;O[c>>3]=a;aa(293139,158969,c|0)|0;Ui=c+16|0}function u1(a){a=a|0;a=J[a+12>>2];if(J[a+1076>>2]){a=J[a+1072>>2]}else{a=-1}Yi=a>>31;return a|0}function kva(a,b,c,d){a=a|0;b=b|0;c=c|0;d=d|0;kV(b,J[J[a+48>>2]+12>>2],c,J[J[a+52>>2]+12>>2],d)}function iva(a,b,c,d){a=a|0;b=b|0;c=c|0;d=d|0;jV(b,J[J[a+48>>2]+12>>2],c,J[J[a+52>>2]+12>>2],d)}function eQ(a){a=a|0;a:{if(Mk(a,-1)){Bk(a,bj(Ij(a,-1,0)),Yi);break a}uj(a,-1)}Ll(a,-3);return 1}function Uva(a,b,c,d){a=a|0;b=b|0;c=c|0;d=d|0;mV(b,J[J[a+48>>2]+12>>2],c,J[J[a+52>>2]+12>>2],d)}function Sva(a,b,c,d){a=a|0;b=b|0;c=c|0;d=d|0;lV(b,J[J[a+48>>2]+12>>2],c,J[J[a+52>>2]+12>>2],d)}function NK(a,b){var c=0;c=Ui-16|0;Ui=c;J[c+4>>2]=a+140;J[c>>2]=a+8;Gj(b,1024,9898,c);Ui=c+16|0}function KG(a){a=a|0;if(kj(a,1)){wj(a,1)}if(kj(a,2)){wj(a,2)}wE(Q(wj(a,3)),Q(wj(a,4)));return 0}function zE(a,b,c){a=Qi(a|0,b|0,c|0,0,0,0)|0;if(a>>>0>=4294963201){J[245744]=0-a;a=-1}return a}function wz(a,b,c){a=Si(a|0,b|0,c|0,0,0,0)|0;if(a>>>0>=4294963201){J[245744]=0-a;a=-1}return a}function s$(a){a=a|0;var b=0;b=J[a+8>>2];J[b+8>>2]=1;J[b>>2]=1;J[a+8>>2]=J[a+8>>2]+16;return 1}function oJ(a){var b=0;b=+((a&2097151)>>>0);return Q(zp(+Q((a|0)<0?-b:b),(a>>>21&1023)-788|0))}function l0(a){a=a|0;var b=0;b=J[a+8>>2];J[b+8>>2]=2;J[b>>2]=0;J[a+8>>2]=J[a+8>>2]+16;return 1}function kS(a,b){var c=0;if(!(!K[927968]|((a|0)!=1|b>>>0>127))){c=J[(b<<2)+944800>>2]}return c}function iB(a,b,c){a=Ni(a|0,b|0,c|0,0,0,0)|0;if(a>>>0>=4294963201){J[245744]=0-a;a=-1}return a}function eT(a,b,c){N[a+440>>2]=cQ(1)?Q(1):c;N[a+436>>2]=bQ(1)?Q(1):b}function _A(a){a=a|0;var b=0;b=J[a+8>>2];J[b+8>>2]=1;J[b>>2]=0;J[a+8>>2]=J[a+8>>2]+16;return 1}function QN(a,b){var c=0;if(!a){return 0}c=a;a=b-J[43085]|0;return J[c+((a|0)/32<<2)>>2]>>>a&1}function Jga(a,b,c,d,e){a=a|0;b=b|0;c=c|0;d=d|0;e=e|0;NP(a,b,e,yj(e),c,d);cj(J[a+32>>2]);cj(a)}function A7(a){a=a|0;if(K[981584]==1){a=J[245392];if(a){QM(a)}J[245392]=0;J[245393]=0}return 0}function rta(a,b){a=a|0;b=b|0;var c=0;c=b;b=J[a+8>>2];Zi[J[b+188>>2]](c,b,J[a+4>>2]);return 0}function oaa(a){a=a|0;var b=0;b=Ui-16|0;Ui=b;J[b>>2]=Vj(a,1);ik(a,43754,b);Ui=b+16|0;return 1}function kaa(a,b){a=a|0;b=b|0;Nj(a,-1e4,J[J[b>>2]+8>>2]);Nj(a,-1,J[b+4>>2]);Pk(a,-2);gj(a,-2)}function bS(a){var b=0;b=J[a>>2];J[a+8>>2]=b;if(M[a+4>>2]>>0){Z(71496,39940,40,51031);B()}}function Pma(a){a=a|0;var b=0;b=Ui-16|0;Ui=b;J[b>>2]=Vj(a,1);ik(a,43757,b);Ui=b+16|0;return 1}function On(a){var b=0;b=Ui-16|0;Ui=b;if(a){cj(a);Ui=b+16|0;return}Z(4790,36929,54,61302);B()}function N7(a,b){a=a|0;b=b|0;if(a){H[a+3448|0]=K[a+3448|0]|1;J[a+3444>>2]=ek(a+3188|0,b,256)}}function JV(a,b){return b*2247116418577895e292*ax(a+-1416.0996898839683)*2247116418577895e292}function rs(a,b){var c=0;c=Ui-16|0;Ui=c;J[c+8>>2]=4;J[c>>2]=b;a=At(a,c,c);Ui=c+16|0;return a}function ofa(a){a=a|0;var b=0;b=J[a>>2];a=J[J[a+8>>2]+8>>2];py(b,a);if(a){cj(KD(a))}return 0}function k6(a){a=a|0;var b=0;b=Ui-16|0;Ui=b;J[b>>2]=Vj(a,1);ik(a,43775,b);Ui=b+16|0;return 1}function c6(a){a=a|0;var b=0;b=Ui-16|0;Ui=b;J[b>>2]=Vj(a,1);ik(a,43737,b);Ui=b+16|0;return 1}function UH(a){var b=0;if(a){b=a+32|0;if(b){Zi[J[66509]](b,0,280)|0}Zi[J[66509]](a,0,320)|0}}function PG(a,b){a=Gi(-100,a|0,-100,b|0)|0;if(a>>>0>=4294963201){J[245744]=0-a;a=-1}return a}function HL(a,b){a=a|0;b=b|0;var c=Q(0);c=Q(N[a>>2]-N[b>>2]);return(c!=Q(0)?c>2]){fu(a,1);rj(a,-1,62387);Zi[KA(a)|0](a)|0}return 0}function $5(a){a=a|0;var b=0;b=Ui-16|0;Ui=b;J[b>>2]=Vj(a,1);ik(a,43794,b);Ui=b+16|0;return 1}function i0(a,b,c){a=a|0;b=b|0;c=c|0;var d=0;d=-24832;if(!(!a|!c)){J[c>>2]=b;d=0}return d|0}function H6(a,b,c){a=a|0;b=b|0;c=c|0;hj(J[a+4>>2]+J[a>>2]|0,b,c);J[a>>2]=J[a>>2]+c;return 1}function E$(a){a=a|0;var b=0;b=J[a+8>>2];J[b+8>>2]=0;J[a+8>>2]=b+16;mj(a,66666,26);return 2}function o7(a,b,c){a=a|0;b=b|0;c=c|0;a=J[b+20>>2];if(a){Zi[a|0]((c|0)==1,J[b+24>>2])}cj(b)}function hW(a,b,c){a=a|0;b=b|0;c=+c;a=a+b|0;if(R(c)<2147483648){H[a|0]=~~c;return}H[a|0]=0}function Yz(a,b){a=Di(a|0,b|0,0,0,0,0)|0;if(a>>>0>=4294963201){J[245744]=0-a;a=-1}return a}function Yda(a){a=a|0;var b=0;b=J[a>>2];a=J[J[a+8>>2]+8>>2];vj(b,J[a+8>>2]);cj(a);return 0}function RJ(a){var b=0;b=J[J[a>>2]+124>>2];Nj(b,-1e4,J[a+4>>2]);Pk(b,-3);Kj(b,-3);gj(b,-2)}function Gr(a,b){if(K[a+204|0]&3?b:1){if((J[a+216>>2]&-2)!=4){J[a+216>>2]=1}J[a+220>>2]=0}}function spa(a,b,c,d){a=a|0;b=b|0;c=c|0;d=d|0;a=Fw(a,b,c,d);return((a|0)==-81?-24832:a)|0}function T6(a,b){a=a|0;b=b|0;var c=0;b=J[83763];c=J[b+32>>2];if(c){Zi[c|0](J[b+36>>2],a)}}function Gp(a,b,c){var d=0;d=Ui-16|0;Ui=d;if(!dr(a,b)){J[d>>2]=c;fj(a,136481,d)}Ui=d+16|0}function Dn(a,b,c,d){var e=0;e=Ui-16|0;Ui=e;J[e+12>>2]=d;a=Pr(a,b,c,d);Ui=e+16|0;return a}function oxa(a,b){var c=0,d=0;c=b&31;d=(-1>>>c&a)<>>a}function _q(a,b,c){a=Ji(a|0,b|0,c|0)|0;if(a>>>0>=4294963201){J[245744]=0-a;a=-1}return a}function KK(a,b,c,d,e,f){var g=0;g=J[a+6164>>2];Tj(g);a=Pu(a,b,0,c,d,e,f);Lj(g);return a}function zj(a,b){var c=0;c=Ui-16|0;Ui=c;J[c+12>>2]=b;Ct(288536,a,b,2810,2811);Ui=c+16|0}function yK(a){var b=0,c=0;b=J[a+52>>2];Tj(b);c=J[a>>2];a=J[a+4>>2];Lj(b);return a-c>>4}function Tj(a){var b=0;b=Ui-16|0;Ui=b;if(a){Ui=b+16|0;return}Z(4790,36929,62,51245);B()}function Lj(a){var b=0;b=Ui-16|0;Ui=b;if(a){Ui=b+16|0;return}Z(4790,36929,75,51036);B()}function GU(a){if(a>>>0>=22){Z(114101,40075,10867,49757);B()}return J[(a<<2)+171956>>2]}function FJ(a,b,c,d,e,f){if(!a){Z(34735,42316,539,83822);B()}return GJ(a,b,0,0,c,d,e,f)}function g$(a){a=a|0;J[Sj(a,4)>>2]=AS(Aj(a,1,0));Nj(a,-1e4,J[73864]);Mj(a,-2);return 1}function VW(a,b,c){a=a|0;b=b|0;c=c|0;$t(J[a+68>>2]+596|0,b,c);cs(J[a+68>>2]+684|0,b,c)}function S6(a){a=a|0;var b=0,c=0;b=J[83763];c=J[b+48>>2];if(c){Zi[c|0](J[b+52>>2],a)}} +function As(a){if(!a){Z(35417,42636,115,15099);B()}Zi[J[J[a+8>>2]+24>>2]](J[a+4>>2])|0}function rF(a){var b=0;b=J[a+24>>2];if(b){rF(b);cj(b)}a=J[a+28>>2];if(a){rF(a);cj(a)}}function my(a){a=a|0;var b=0;a=J[J[a+8>>2]+8>>2];b=J[a>>2];if(b){Uj(b)}cj(a);return 0}function mW(a,b){a=a|0;b=b|0;a=J[a>>2];b=J[b>>2];return(a>>>0>>0?-1:a>>>0>b>>>0)|0}function iu(a,b){rj(a,-1e4,b);if(!kj(a,-1)){gj(a,-2);Fj(a,0,0);uj(a,-1);ej(a,-1e4,b)}}function hY(a,b){a=a|0;b=b|0;a=L[a>>1];b=L[b>>1];return(a>>>0>>0?-1:a>>>0>b>>>0)|0}function gk(a,b,c){var d=0;d=Ui-16|0;Ui=d;J[d+12>>2]=c;a=Mw(a,b,c);Ui=d+16|0;return a}function fH(a){a=Ki(-100,a|0,493)|0;if(a>>>0>=4294963201){J[245744]=0-a;a=-1}return a}function cta(a,b){a=a|0;b=b|0;Zi[J[J[b>>2]+32>>2]](b);RT(a,b);Zi[J[J[b>>2]+36>>2]](b)}function V4(a,b,c,d,e,f,g,h){a=a|0;b=b|0;c=c|0;d=d|0;e=e|0;f=f|0;g=g|0;h=h|0;return-3}function V$(a){a=a|0;a=(Ej(a,1)^-1)+(J[a+8>>2]-J[a+12>>2]>>4)|0;return((a|0)>0?a:0)|0}function Rn(a,b,c,d){var e=Q(0);b=Pl(b,c);e=N[b>>2];N[a+4>>2]=d*N[b+4>>2];N[a>>2]=d*e}function Q6(a){a=a|0;var b=0,c=0;b=J[83763];c=J[b+40>>2];if(c){Zi[c|0](J[b+44>>2],a)}}function Ppa(a,b,c){a=a|0;b=Q(b);c=c|0;J[c>>2]=0;J[c+4>>2]=0;J[c+8>>2]=0;J[c+12>>2]=0}function O$(a){a=a|0;var b=0;b=Ui-272|0;Ui=b;H[b+256|0]=0;xj(a,b);Ui=b+272|0;return 1}function Mga(a){a=a|0;cj(J[a+104>>2]);cj(J[a+120>>2]);cj(J[a+132>>2]);cj(J[a+136>>2])}function I4(a,b,c,d,e){a=a|0;b=b|0;c=c|0;d=d|0;e=e|0;return QB(a,98184,d,-1,-1,e,0)|0}function ED(a){a=a|0;var b=0;b=nj(4);J[b>>2]=J[a+24>>2];J[J[a+28>>2]+8>>2]=b;return 0}function Dma(a){a=a|0;var b=0;b=Ui-16|0;Ui=b;jt(b,dn(a,1));tq(a,b);Ui=b+16|0;return 1}function CS(a){var b=0;a:{if(!a){break a}b=J[a>>2]-1|0;J[a>>2]=b;if(b){break a}cj(a)}}function Bma(a){a=a|0;var b=0;b=Ui-16|0;Ui=b;$D(b,dn(a,1));cl(a,b);Ui=b+16|0;return 1}function gba(a,b,c){a=a|0;b=b|0;c=c|0;a=Zi[J[79404]](a,b)|0;I[a+202>>1]=c;return a|0}function gQ(a){if(a>>>0>=4){Z(114101,42176,176,64625);B()}return J[(a<<2)+159864>>2]}function _pa(a,b,c){a=a|0;b=b|0;c=c|0;J[a>>2]=0;J[a+4>>2]=0;J[a+8>>2]=0;J[a+12>>2]=0}function Er(a){if(a>>>0>=9){Z(152787,40052,154,64561);B()}return J[(a<<2)+173920>>2]}function tE(a,b){if(H[a+12|0]&1){Z(151729,53895,501,2284);B()}lj(b,4,a,a+8|0,a+4|0)}function pt(a){a=Aa(a|0)|0;a=(a|0)!=27?a:0;if(a){J[245744]=a;a=-1}else{a=0}return a}function ir(a,b){a=a|0;b=b|0;if(!J[248826]){J[248827]=b>>>0<=1?1:b;J[248826]=a}ui()}function Z6(a,b){a=a|0;b=b|0;a=Ui-16|0;Ui=a;J[a>>2]=b;dj(3,89293,31902,a);Ui=a+16|0}function Nz(a){a=Va(-100,a|0,0)|0;if(a>>>0>=4294963201){J[245744]=0-a;a=-1}return a}function IM(a,b){var c=0;c=J[a>>2];if(c){return Zi[c|0](b,J[a+8>>2])|0}return sj(b)}function II(a,b,c,d){a=a|0;b=b|0;c=c|0;d=d|0;if(!d){cj(b);return 0}return ml(b,d)|0}function Fwa(a){a=a|0;a=Aa(J[a+60>>2])|0;if(a){J[245744]=a;a=-1}else{a=0}return a|0}function jI(a,b,c){var d=0;d=J[a+16>>2];if(M[d+68>>2]>=M[d+64>>2]){Om(a)}Mw(a,b,c)}function h1(a,b){a=a|0;b=b|0;a=(b<<3)+a|0;return+(+M[a>>2]+ +J[a+4>>2]*4294967296)}function c1(a,b){a=a|0;b=b|0;a=(b<<3)+a|0;return+(+M[a>>2]+ +M[a+4>>2]*4294967296)}function Vv(a,b){a=Ci(a|0,b|0)|0;if(a>>>0>=4294963201){J[245744]=0-a;a=-1}return a}function Tz(a,b,c,d){var e=0;e=a;a=GG(b,c,d);J[e>>2]=a;return(a|0)==-1?J[245744]:0}function Qqa(a,b,c,d,e){a=a|0;b=b|0;c=c|0;d=d|0;e=e|0;Zi[J[J[a>>2]+8>>2]](a,b,c,d)}function Lwa(a){a=a|0;a:{if(H[862688]&1){break a}a=J[215669];if(!a){break a}cj(a)}}function sva(a,b){a=a|0;b=b|0;var c=0;c=J[b+80>>2];J[a>>2]=J[b+76>>2];J[a+4>>2]=c}function S_(a){a=a|0;eJ(a,1);if(cr(a,-1)){uj(a,-10002);return 1}fu(a,-1);return 1}function OY(a,b,c,d){a=a|0;b=b|0;c=c|0;d=d|0;a=a-4|0;Zi[J[J[a>>2]+8>>2]](a,b,c,d)}function f9(a){a=a|0;Bj(a);qj(a,-1,J[219396],139183);gj(a,-2);Ss(4,0,0);return 0}function U8(a){a=a|0;Bj(a);qj(a,-1,J[219396],139183);gj(a,-2);Ss(8,1,0);return 0}function n0(a){a=a|0;var b=0;b=a;a=aa(292667,158860,0)|0;xj(b,a);cj(a);return 1}function hU(a){a=a|0;a=fU(a);if(a){J[83765]=J[83765]+1;Zi[J[61751]](J[a-4>>2])}}function Zo(a,b,c){c=xI(a,c);if(!J[c+8>>2]){H[a+6|0]=K[a+6|0]|1<>2];return(a|0)==J[b>>2]|(a|0)==J[b+4>>2]}function Tka(a){a=a|0;a=J[J[a+16>>2]>>2];J[a+56>>2]=J[a+56>>2]|1048576;return 0}function Gk(a){var b=0,c=0;b=yj(a)+1|0;c=sj(b);if(!c){return 0}return hj(c,a,b)}function x4(a,b){a=a|0;b=b|0;a=J[a+2192>>2];if(!a){return-2}J[b>>2]=a;return 0}function nxa(a){var b=0;while(1){if(a){a=a-1&a;b=b+1|0;continue}break}return b}function gra(a){a=a|0;nT(a);if(a){J[83765]=J[83765]+1;Zi[J[61751]](J[a-4>>2])}}function e5(a,b){a=a|0;b=b|0;a=J[a+2188>>2];if(!a){return-2}J[b>>2]=a;return 0}function Jsa(a){a=a|0;MT(a);if(a){J[83765]=J[83765]+1;Zi[J[61751]](J[a-4>>2])}}function HX(a){a=a|0;Oj(a,1,1);if(((ck(a,1)|0)!=0|0)!=K[295468]){wS()}return 0}function rZ(a){a=a|0;mj(a,J[gm(a,1033)+8272>>2]==10?103511:106930,5);return 1}function noa(a){a=a|0;if(!a){Z(70570,39308,79,17727);B()}return ri(J[a>>2])|0}function foa(a,b){a=a|0;b=b|0;return(L[a+956>>1]>>>5&1)-(L[b+956>>1]>>>5&1)|0}function Tba(a,b,c){a=a|0;b=b|0;c=c|0;J[b>>2]=J[a+176>>2];J[c>>2]=J[a+180>>2]}function Ln(a){if((a|0)==-1){return}if(!pt(a)){return}Pm(36957,324,J[245744])}function IX(a){a=a|0;Oj(a,1,1);if(((ck(a,1)|0)!=0|0)!=(BS()|0)){xS()}return 0}function yba(a){a=a|0;if(!a){Z(9197,40535,1577,53037);B()}return J[a+164>>2]}function Y$(a){a=a|0;gj(a,1);if(!kj(a,1)){Nk(a,1868,0)}Nk(a,1869,1);return 1}function WV(a,b){a=a|0;b=b|0;a=J[a+4>>2];Zi[J[J[a>>2]+8>>2]](a,J[b+36>>2])|0}function SU(a){a=a|0;J[a>>2]=247100;cj(J[a+32>>2]);cj(J[a+36>>2]);return a|0}function Rba(a){a=a|0;if(!a){Z(9197,40535,1583,14733);B()}return J[a+168>>2]}function Qx(a){cj(J[a+12>>2]);J[a+8>>2]=0;J[a+12>>2]=0;J[a>>2]=0;J[a+4>>2]=0}function MX(a){a=a|0;Oj(a,1,1);a=(ck(a,1)|0)!=0;H[295461]=a;si(a|0);return 0}function Lpa(a,b,c,d){a=a|0;b=b|0;c=c|0;d=d|0;Zi[J[J[a>>2]+112>>2]](a,d,b,c)}function qZ(a){a=a|0;mj(a,J[gm(a,1024)+32>>2]==10?103511:106930,5);return 1}function lZ(a){a=a|0;var b=0;b=a;a=gm(a,1033);return YI(b,a,J[a+8272>>2])|0}function jZ(a){a=a|0;var b=0;b=a;a=gm(a,1033);return XI(b,a,J[a+8272>>2])|0}function fpa(a){a=a|0;Oj(a,2,5);gj(a,2);if(!jq(a,1)){fj(a,16330,0)}return 1}function DA(a){if(a){po(a);Dj(a+124|0);Dj(a+136|0);Dj(a+148|0);Dj(a+160|0)}}function Aka(a){a=a|0;a=J[J[a+16>>2]>>2];H[a+28|0]=K[a+28|0]&249|4;return 0}function xba(a){a=a|0;if(!a){Z(9196,40535,1527,6575);B()}return J[a+48>>2]}function tC(a,b,c){var d=Q(0);d=N[a+72>>2];return ZT(Yj(56),Q(b*d),Q(c*d))}function mB(a,b,c){var d=0;d=Ui-16|0;Ui=d;J[d+12>>2]=c;_F(a,b,c);Ui=d+16|0}function lp(a){a=a-1|0;if(a>>>0>=7){Z(152146,39550,452,64498);B()}return a}function axa(a,b,c,d){a=a|0;b=b|0;c=c|0;d=d|0;Zi[J[J[a>>2]+8>>2]](a,b,c,d)}function VS(a,b,c,d){a=a|0;b=b|0;c=c|0;d=d|0;Zi[J[J[a>>2]+72>>2]](a,b,c,d)}function zu(a){if(J[a>>2]!=1){Z(107080,38189,46,106925);B()}return a+16|0}function tm(a,b,c,d,e){return El(a,c<<6|b|d<<23|e<<14,J[J[a+12>>2]+8>>2])}function rka(a){a=a|0;a=J[J[a+16>>2]>>2];J[a+24>>2]=J[a+24>>2]|2;return 0}function kZ(a){a=a|0;var b=0;b=a;a=Tn(a,1091);return YI(b,a,J[a+32>>2])|0}function iZ(a){a=a|0;var b=0;b=a;a=gm(a,1024);return XI(b,a,J[a+32>>2])|0}function hla(a){a=a|0;a=J[J[a+16>>2]>>2];H[a+146|0]=K[a+146|0]|1;return 0}function gia(a){a=a|0;a=J[J[a+16>>2]>>2];H[a+166|0]=K[a+166|0]|2;return 0}function Y4(a,b){a=a|0;b=b|0;a=J[a>>2];if(!a){return-2}J[b>>2]=a;return 0}function Rra(a,b){a=a|0;b=b|0;Zi[J[J[a>>2]+8>>2]](a,b,J[J[a+8>>2]+48>>2])}function Pia(a){a=a|0;a=J[J[a+16>>2]>>2];I[a+36>>1]=L[a+36>>1]|1;return 0}function yu(a){if(J[a>>2]!=2){Z(103629,38189,52,103506);B()}return a+4|0}function twa(a,b,c){a=a|0;b=b|0;c=c|0;if(b>>>0>c>>>0){ij(a+c|0,0,b-c|0)}}function ota(a,b){a=a|0;b=Q(b);return Q(Q(b*Q(Zi[J[J[a>>2]+16>>2]](a))))}function nba(a,b,c,d){a=a|0;b=b|0;c=c|0;d=d|0;return rP(a,35632,b,c,d)|0}function eba(a,b,c,d){a=a|0;b=b|0;c=c|0;d=d|0;return rP(a,35633,b,c,d)|0}function aL(a,b,c,d,e,f,g,h,i){return WK(a+128|0,a+32|0,b,c,d,e,f,g,h,i)}function SX(a){a=a|0;Oj(a,1,1);if(ck(a,1)){dj(3,88875,106296,0)}return 0}function Iva(a,b){a=a|0;b=Q(b);return Q(Q(b*Q(N[a+156>>2]*N[a+256>>2])))}function ro(a,b,c,d){if((b|0)==1){Bw(a,c,d);return 0}yA(a,c,d);return 0}function pba(a,b,c,d){a=a|0;b=b|0;c=c|0;d=d|0;Gj(c,d,121229,0);return 0}function eL(a,b,c,d,e,f,g,h,i){return WK(a+28|0,a+44|0,b,c,d,e,f,g,h,i)}function dqa(a,b,c,d){a=a|0;b=b|0;c=c|0;d=d|0;if((d|0)>0){ij(c,0,d<<4)}}function _ka(a){a=a|0;a=J[J[a+16>>2]>>2];H[a+24|0]=K[a+24|0]|2;return 0}function Kv(a){a=a|0;if(a){J[83765]=J[83765]+1;Zi[J[61751]](J[a-4>>2])}}function F_(a){a=a|0;Oj(a,1,5);Em(a,2);Em(a,3);gj(a,3);Xj(a,1);return 1}function Aja(a){a=a|0;a=J[J[a+16>>2]>>2];I[a+8>>1]=L[a+8>>1]|1;return 0}function zka(a,b){a=a|0;b=b|0;if(K[J[a+12>>2]+18|0]==1){FQ(a)}return 0}function sx(a){var b=0;rj(a,-10002,76382);b=Vj(a,-1);gj(a,-2);return b}function pda(a){a=a|0;a=J[a+8>>2];uk(a,49923,238464);gj(a,-2);return 0}function l$(a,b,c){a=a|0;b=b|0;c=c|0;a=Zi[a|0](b,c)|0;Vi=Yi;return a|0}function W0(a,b){a=a|0;b=b|0;J[b>>2]=2;J[b+8>>2]=a+136;J[b+4>>2]=90725}function Ml(a,b){var c=0;c=a;a=J[a+44>>2];_n(c,(a|0)<(b|0)?a+b|0:a<<1)}function JJ(a,b,c){if(b>>>0>=3){Z(62644,38189,237,13436);B()}SR(a,b,c)}function Yha(a){a=a|0;if(!wQ(J[J[a+16>>2]>>2])){dj(4,88458,129709,0)}}function Tl(a,b){a=qj(a,b,J[84567],0);b=J[a>>2];Yi=J[a+4>>2];return b}function Kk(a,b,c){if((uq(a,b)|0)==(c|0)){a=Vj(a,b)}else{a=0}return a}function ska(a,b){a=a|0;b=b|0;if(!K[J[a+12>>2]+18|0]){FQ(a)}return 0}function roa(a,b,c){a=a|0;b=b|0;c=c|0;return(yl(b,1,c,a)|0)==(c|0)|0}function joa(a){a=a|0;if(!a){Z(70570,39308,101,42926);B()}H[a+4|0]=0}function ZM(a,b,c,d,e,f,g){a=a|0;b=b|0;c=c|0;d=d|0;e=e|0;f=f|0;g=g|0}function TX(a,b){a=a|0;b=b|0;if(!J[248826]){J[248827]=b;J[248826]=a}}function QP(a,b){var c=0;c=J[b>>2];if(c){vj(a,c)}cj(J[b+4>>2]);cj(b)}function NX(a){a=a|0;Oj(a,1,1);ck(a,1);dj(3,88875,106615,0);return 0}function Hk(a,b){a=a|0;b=b|0;a=Az(a,b);return(K[a|0]==(b&255)?a:0)|0}function wba(a){a=a|0;var b=0;b=J[a+108>>2];ij(b,0,J[a+112>>2]-b|0)}function uI(a,b,c){El(a,(c<<23)+8388608|b<<6|30,J[J[a+12>>2]+8>>2])}function koa(a){a=a|0;if(!a){Z(70570,39308,94,10410);B()}H[a+4|0]=1}function d5(a){a=a|0;if(!jj(a,57616)){return 1}return!jj(a,60730)|0}function X4(a){a=a|0;if(!jj(a,67284)){return 1}return!jj(a,57616)|0}function SD(a){a=a|0;a=J[J[a+8>>2]+8>>2];Uj(J[a>>2]);cj(a);return 0}function QX(a){a=a|0;Oj(a,1,1);ck(a,1);dj(3,88875,17359,0);return 0}function Q$(a){a=a|0;return a<<24|(a&65280)<<8|(a>>>8&65280|a>>>24)}function Lv(a,b,c,d,e){a=a|0;b=b|0;c=c|0;d=d|0;e=e|0;return Q(Q(1))}function E4(a){a=a|0;if(!jj(a,36507)){return 1}return!jj(a,19811)|0}function wI(a,b){if(J[b+16>>2]!=J[b+20>>2]){Zn(a,b);return}ln(a,b)}function qwa(a,b,c,d){a=a|0;b=b|0;c=c|0;d=d|0;return ro(a,b,c,d)|0}function fV(a){Sq(J[a+32>>2],J[a+40>>2]);Sq(J[a+32>>2],J[a+36>>2])}function fM(a,b){if(!b){Z(12978,42606,1785,98529);B()}KU(a+40|0,b)}function _k(a){var b=0;b=Ui-96|0;Ui=b;a=Vv(a,b);Ui=b+96|0;return!a}function Sba(a){a=a|0;if(!a){Z(9197,40535,1571,52244);B()}return 0}function QY(a,b,c,d){a=a|0;b=b|0;c=c|0;d=d|0;return ml(b,P(c,d))|0}function LX(a){a=a|0;wj(a,1);wj(a,2);dj(3,88875,106240,0);return 0}function KX(a){a=a|0;wj(a,1);wj(a,2);dj(3,88875,106179,0);return 0}function vna(a,b){a=a|0;b=b|0;wm(a,b);Bk(a,J[b+32>>2],J[b+36>>2])}function gy(a){var b=0;b=ij(nj(200),0,200);J[b+192>>2]=a;return b}function era(a,b,c,d,e){a=a|0;b=b|0;c=c|0;d=d|0;e=e|0;Rq(a,b,c,d)}function bq(a,b){a=a|0;b=b|0;Zi[J[J[a>>2]+4>>2]](a)|0;Ir(b,a,152)}function Rw(a,b,c,d){return El(a,c<<6|b|d<<14,J[J[a+12>>2]+8>>2])}function Jqa(a,b,c){a=a|0;b=b|0;c=c|0;J[a+152>>2]=c;J[a+144>>2]=b}function Iqa(a,b,c){a=a|0;b=b|0;c=c|0;J[a+156>>2]=c;J[a+148>>2]=b}function AF(a,b){var c=0;c=a;a=b-a>>3;IF(c,b,31-(a?S(a):32)<<1,1)}function soa(a,b,c){a=a|0;b=b|0;c=c|0;J[a>>2]=J[a>>2]+c;return 1}function Xoa(a,b,c,d){a=a|0;b=b|0;c=c|0;d=d|0;return HA(a,c,d)|0}function RR(a,b){var c=0;c=J[a>>2];return _q(c,J[a+4>>2]-c>>3,b)}function Poa(a,b,c,d){a=a|0;b=b|0;c=c|0;d=d|0;return GA(a,c,d)|0}function Dpa(a,b,c,d){a=a|0;b=b|0;c=c|0;d=d|0;return du(a,c,d)|0}function $ra(a,b,c){a=a|0;b=b|0;c=Q(c);Zi[J[J[a>>2]+12>>2]](a,b)}function wF(a,b,c,d){a=a|0;b=b|0;c=c|0;d=d|0;Yn(d,b,c);return 0}function k1(a){a=a|0;Zi[J[a>>2]](J[a+8>>2]);cj(J[a+4>>2]);cj(a)}function eY(a,b,c,d,e){a=a|0;b=b|0;c=c|0;d=d|0;e=e|0;return b|0}function Woa(){var a=0;a=Zj(1,384);if(a){ij(a,0,384)}return a|0}function Ooa(){var a=0;a=Zj(1,128);if(a){ij(a,0,128)}return a|0}function G_(a){a=a|0;Oj(a,1,5);Em(a,2);gj(a,2);Ll(a,1);return 1}function Cpa(){var a=0;a=Zj(1,276);if(a){ij(a,0,276)}return a|0}function wfa(a){a=a|0;Zi[J[79487]](J[J[a+8>>2]+8>>2]);return 0}function u0(){var a=0;a=Zj(1,392);if(a){ij(a,0,392)}return a|0}function q1(a){a=a|0;if(!a){Z(49310,37329,227,49317);B()}cj(a)}function poa(a){a=a|0;if(!a){Z(70570,39308,61,62409);B()}cj(a)}function dga(a,b){a=a|0;b=b|0;return Op(b,0,574,575,576,577)|0}function bfa(a){a=a|0;Zi[J[79420]](J[J[a+8>>2]+8>>2]);return 0}function Eda(a){a=a|0;Zi[J[79419]](J[J[a+8>>2]+8>>2]);return 0}function EQ(a,b){a=a|0;b=b|0;a=J[b+16>>2];if(a){cj(a)}return 0}function a6(a){a=a|0;a=Vj(a,1);ll(J[a>>2]);J[a>>2]=0;return 0}function UW(a,b,c){a=a|0;b=b|0;c=c|0;nA(J[a+68>>2]+776|0,b,c)}function TW(a,b,c){a=a|0;b=b|0;c=c|0;$r(J[a+68>>2]+888|0,b,c)}function SZ(a){a=a|0;J[245856]=Ej(a,1)-1;J[245857]=0;return 0}function EX(a){a=a|0;Oj(a,1,5);fj(a,61269,0);uj(a,1);return 1}function tT(a,b){a=a|0;b=b|0;return J[J[a+192>>2]+(b<<2)>>2]}function m$(a,b){a=a|0;b=b|0;a=Zi[a|0](b)|0;Vi=Yi;return a|0}function lea(a){a=a|0;mv(J[a>>2],J[J[a+8>>2]+8>>2]);return 0}function ffa(a){a=a|0;uQ(J[a>>2],J[J[a+8>>2]+8>>2]);return 0}function Ata(a,b){a=a|0;b=b|0;return J[J[a+20>>2]+(b<<2)>>2]}function lba(a,b){a=a|0;b=b|0;dj(2,89301,121229,0);return 0}function _O(a,b){if(K[(Zi[J[79381]](a)|0)+89|0]&2){Za(b|0)}}function Hwa(a,b,c,d){a=a|0;b=b|0;c=c|0;d=d|0;Yi=0;return 0}function ypa(a,b,c){a=a|0;b=b|0;c=c|0;return $H(a,2,b,c)|0}function xpa(a,b,c){a=a|0;b=b|0;c=c|0;return $H(a,5,b,c)|0}function rna(a,b){a=a|0;b=b|0;return Op(b,0,0,154,155,0)|0}function jl(a,b,c,d){c=Ak(b,c,d);if(!c){c=Nl(b,a)}return c}function Vq(a,b,c){a=a|0;b=b|0;c=c|0;return Zi[c|0](a,b)|0}function Pwa(a){a=a|0;a=J[78230];if(a){cj(a);cj(J[78231])}}function Owa(a){a=a|0;a=J[78400];if(a){cj(a);cj(J[78401])}}function x0(a){a=a|0;Oj(a,1,7);CS(J[Vj(a,1)>>2]);return 0}function w0(a,b,c){a=a|0;b=b|0;c=c|0;return CH(a,2,b,c)|0}function v0(a,b,c){a=a|0;b=b|0;c=c|0;return CH(a,5,b,c)|0}function tpa(a){a=a|0;if(a){Zi[J[66509]](a,0,132)|0}cj(a)}function sta(a,b){a=a|0;b=b|0;J[a+200>>2]=b;J[a+192>>2]=b}function sq(a){if((Yz(a,2)|0)<0){Pm(36957,464,J[245744])}}function r1(a,b,c){a=a|0;b=b|0;c=c|0;return AJ(a,0,b,c)|0}function pwa(){var a=0;a=Zj(1,280);if(a){Iw(a)}return a|0}function pX(a,b,c){a=a|0;b=b|0;c=c|0;return oA(a,b,c,1)|0}function owa(a){a=a|0;if(a){Zi[J[66509]](a,0,280)|0}cj(a)}function nX(a,b,c){a=a|0;b=b|0;c=c|0;return oA(a,b,c,0)|0}function fX(a,b,c){a=a|0;b=b|0;c=c|0;return Tt(a,b,c,1)|0}function dX(a,b,c){a=a|0;b=b|0;c=c|0;return Tt(a,b,c,0)|0}function bva(a,b){a=a|0;b=Q(b);return Q(Q(b*N[a+108>>2]))}function Voa(a){a=a|0;if(a){Zi[J[66509]](a,0,384)|0}cj(a)}function Noa(a){a=a|0;if(a){Zi[J[66509]](a,0,128)|0}cj(a)}function Lra(a,b,c,d){a=a|0;b=b|0;c=c|0;d=d|0;WT(a,b,c,d)}function Kq(a,b,c){J[c+4>>2]=J[c>>2];return yv(a,b,c,176)}function IT(a){a=a|0;J[a>>2]=245064;LE(a+12|0);return a|0}function Bpa(a){a=a|0;if(a){Zi[J[66509]](a,0,276)|0}cj(a)}function Ava(a,b){a=a|0;b=b|0;Z(62644,41688,44,64975);B()}function zpa(a,b,c){a=a|0;b=b|0;c=c|0;return aI(a,b,c)|0}function wpa(){var a=0;a=Zj(1,64);if(a){IA(a)}return a|0}function voa(a){a=a|0;ek(978352,Aj(a,1,0),1024);return 0}function vX(){var a=0;a=Zj(1,108);if(a){ww(a)}return a|0}function uX(a){a=a|0;if(a){Zi[J[66509]](a,0,108)|0}cj(a)}function rJ(){var a=0;a=Zj(1,172);if(a){CA(a)}return a|0}function mwa(a,b,c){a=a|0;b=b|0;c=c|0;return ls(a,b,c)|0}function lX(){var a=0;a=Zj(1,216);if(a){bs(a)}return a|0}function kX(a){a=a|0;if(a){Zi[J[66509]](a,0,216)|0}cj(a)}function hH(a,b,c){a=a|0;b=b|0;c=c|0;return sj(P(b,c))|0}function aqa(a){a=a|0;return Q(Q(N[a+28>>2]*N[a+12>>2]))}function Uj(a){if(!a){Z(68419,41181,373,68510);B()}cj(a)}function LU(a,b){a=a|0;b=Q(b);return Q(Q(b*N[a+112>>2]))}function zZ(a,b,c){a=a|0;b=b|0;c=c|0;return $t(a,b,c)|0}function xva(a){a=a|0;return P(J[a+56>>2],J[a+52>>2])|0}function xX(a,b,c){a=a|0;b=b|0;c=c|0;return cs(a,b,c)|0}function qX(a,b,c){a=a|0;b=b|0;c=c|0;return nA(a,b,c)|0}function p9(a){a=a|0;xj(a,J[Qj(a,1,0)+484>>2]);return 1}function nj(a){a=a|0;a=eA(a);if(!a){Rv();B()}return a|0}function gX(a,b,c){a=a|0;b=b|0;c=c|0;return $r(a,b,c)|0}function _o(a,b,c){if((kj(a,b)|0)>0){c=wj(a,b)}return c}function Zm(a,b,c){if((kj(a,b)|0)>0){c=Ej(a,b)}return c}function WU(a,b){a=a|0;b=Q(b);return Q(Q(b*N[a+92>>2]))}function Fm(a){if(!Nz(a)){return 0}return lr(J[245744])}function EZ(){var a=0;a=Zj(1,88);if(a){au(a)}return a|0}function DZ(a){a=a|0;if(a){Zi[J[66509]](a,0,88)|0}cj(a)}function CX(){var a=0;a=Zj(1,92);if(a){ds(a)}return a|0}function BX(a){a=a|0;if(a){Zi[J[66509]](a,0,92)|0}cj(a)}function wx(a){Zi[J[J[a>>2]+16>>2]](J[a+4>>2])|0;cj(a)}function uT(a,b){a=a|0;b=b|0;Zi[J[J[a>>2]+60>>2]](a,b)}function sba(a,b){a=a|0;b=b|0;return J[a+192>>2]>>>b&1}function rT(a,b){a=a|0;b=b|0;Zi[J[J[a>>2]+64>>2]](a,b)}function mH(a,b,c,d){a=Hw(a,b,c,d);return a?a-8960|0:0}function Loa(a,b,c){a=a|0;b=b|0;c=c|0;Dp(a,b);return 0}function Fqa(a,b,c,d){a=a|0;b=b|0;c=c|0;d=d|0;return 0}function vda(a,b){a=a|0;b=b|0;cj(J[b+12>>2]);return 0}function uu(a){if(a){if(J[a+20>>2]==1){cH(a,1)}cj(a)}}function nZ(a){a=a|0;return sw(a,254512,gm(a,1033))|0}function mZ(a){a=a|0;return sw(a,254976,gm(a,1024))|0}function jG(a,b){var c=0;c=St(a,0,b);return c?c-a|0:b}function g4(a){a=a|0;WJ(a,1);WJ(a,2);lm(a,2);return 1}function eP(a){a=a|0;if(!a){return 0}return J[a+8>>2]}function ZY(a){a=a|0;return sw(a,254560,gm(a,1033))|0}function YY(a){a=a|0;return sw(a,254848,gm(a,1024))|0}function UY(a){a=a|0;return eG(a,gm(a,1033)+8248|0)|0}function Qba(a){a=a|0;return J[a+60>>2]-J[a+56>>2]>>2}function Mx(a){if(a){cj(J[a>>2]);cj(J[a+8>>2]);cj(a)}}function oea(a){a=a|0;zL(J[J[a+8>>2]+8>>2]);return 0}function oT(a,b,c,d,e){a=a|0;b=b|0;c=c|0;d=d|0;e=e|0}function mfa(a){a=a|0;qC(J[J[a+8>>2]+8>>2]);return 0}function lW(a,b,c){a=a|0;b=b|0;c=+c;N[(b<<2)+a>>2]=c}function hxa(a){if(a){return 31-S(a-1^a)|0}return 32}function _ea(a){a=a|0;Uj(J[J[a+8>>2]+8>>2]);return 0}function K0(a,b){a=a|0;b=b|0;$o(a,J[b>>2],J[b+4>>2])}function By(a){a=a|0;Bk(a,bj(Aj(a,2,0)),Yi);return 1}function xwa(a){a=a|0;dj(3,88875,106571,0);return 0}function vI(a,b,c){a=hm(a,c);J[b>>2]=9;J[b+12>>2]=a}function Lk(a,b){J[84548]=J[84548]+1;return to(a,b)}function Koa(a){a=a|0;dj(3,88875,106352,0);return 0}function Joa(a){a=a|0;dj(3,88875,106411,0);return 0}function Ioa(a){a=a|0;dj(3,88875,106470,0);return 0}function Em(a,b){if((kj(a,b)|0)==-1){Dk(a,b,73804)}}function v9(a){a=a|0;yo(a,Qj(a,1,0)+96|0);return 1}function qW(a){a=a|0;dj(3,88875,106296,0);return 0}function pva(a,b){a=a|0;b=Q(b);return Q(Q(b*Q(0)))}function j1(a,b){a=a|0;b=b|0;return+N[(b<<2)+a>>2]}function i1(a,b){a=a|0;b=b|0;return+J[(b<<2)+a>>2]}function g1(a,b){a=a|0;b=b|0;return+I[(b<<1)+a>>1]}function d1(a,b){a=a|0;b=b|0;return+M[(b<<2)+a>>2]}function b1(a,b){a=a|0;b=b|0;return+L[(b<<1)+a>>1]}function Y9(a){a=a|0;yo(a,Qj(a,1,0)+48|0);return 1}function TY(a){a=a|0;return eG(a,gm(a,1024)+8|0)|0}function RY(a){a=a|0;dj(3,88875,106527,0);return 0}function F9(a){a=a|0;yo(a,Qj(a,1,0)+80|0);return 1}function Cp(a){if(a){Dj(a);Dj(a+12|0);Dj(a+24|0)}} +function s0(a){a=a|0;J[jn(a,99336)>>2]=0;return 0}function oY(a){a=a|0;xj(a,vo(Aj(a,1,0)));return 1}function kK(a,b){return J[qj(a,b,J[215724],0)>>2]}function dha(a){a=a|0;return J[J[a+360>>2]+12>>2]}function Zp(a){ij(a+32|0,0,72);return ij(a,0,112)}function Uq(a,b,c){rj(a,-1e4,b);Mj(a,(c>>31)+c|0)}function u_(a){a=a|0;uk(a,55914,258928);return 1}function r_(a){a=a|0;uk(a,19950,258432);return 1}function qca(a,b){a=a|0;b=b|0;jy(a,b,0);return 0}function o_(a){a=a|0;uk(a,67726,258144);return 1}function HO(a,b){return tr(a,3,J[b+76>>2]-2|0,b)}function HE(a,b,c){qt(a+4|0,a+304|0,a+320|0,b,c)}function Awa(a){a=a|0;a=Ui-a&-16;Ui=a;return a|0}function Ama(a){a=a|0;Kp(a,op(dn(a,1)));return 1}function sR(a){var b=0;b=J[a>>2];cj(a);return b}function qsa(a,b,c){a=a|0;b=b|0;c=Q(c);return 0}function kv(a,b){return Ts(Zi[J[79381]](a)|0,b)}function RX(a){a=a|0;Oj(a,1,1);ck(a,1);return 0}function KR(a){LR(J[a+80>>2],L[a+150>>1]&32767)}function Gwa(a){a=a|0;return(a|0)==32|a-9>>>0<5}function rm(a,b,c){if(!(K[a|0]&32)){mF(b,c,a)}}function mxa(a,b,c){gxa(a,b,c);Yi=Xi;return Wi}function Tr(a,b){return iG(a,b,10,-2147483648)}function Lp(a,b){return(Kk(a,b,J[84567])|0)!=0}function KP(a,b,c){a=a|0;b=b|0;c=c|0;JP(a,b,c)}function Fu(a,b){return(Kk(a,b,J[84570])|0)!=0}function BS(){return(aa(292299,158860,0)|0)!=0}function zx(a,b,c){a=a|0;b=b|0;c=c|0;return 0}function zX(a,b){a=a|0;b=b|0;return hs(a,b)|0}function tX(a,b){a=a|0;b=b|0;return xw(a,b)|0}function sX(a,b){a=a|0;b=b|0;return gs(a,b)|0}function jX(a,b){a=a|0;b=b|0;return Ut(a,b)|0}function iX(a,b){a=a|0;b=b|0;return fs(a,b)|0}function gx(a,b){return(PG(b,a)|0)==-1?-1e3:0}function bj(a){a=a|0;a=Ul(a,yj(a));return a|0}function _J(a,b){return(uq(a,b)|0)==J[215720]}function _I(a){a=a|0;return(a<<8|a>>>8)&65535}function ZJ(a,b){return(uq(a,b)|0)==J[215721]}function Y0(a){a=a|0;return(a|0)==4|(a&-2)==2}function Tu(a,b,c,d){return pL(a+112|0,b,c,d)}function Kga(a,b){a=a|0;b=b|0;NP(a,b,0,0,0,0)}function Hs(a,b){return(uq(a,b)|0)==J[215723]}function EB(a,b){return(uq(a,b)|0)==J[215724]}function CZ(a,b){a=a|0;b=b|0;return bu(a,b)|0}function BZ(a,b){a=a|0;b=b|0;return is(a,b)|0}function AX(a,b){a=a|0;b=b|0;return es(a,b)|0}function $J(a,b){return(uq(a,b)|0)==J[215722]}function vD(a,b,c,d){a=a|0;b=b|0;c=c|0;d=d|0}function tj(a,b){a=MN(a,b);return a?a:102358}function f1(a,b){a=a|0;b=b|0;return+H[a+b|0]}function e1(a,b){a=a|0;b=b|0;return+K[a+b|0]}function c0(a){a=a|0;return fj(a,150596,0)|0}function aY(a){a=a|0;return(a|0)==1|(a|0)==6}function ZE(a,b){a=a|0;b=Q(b);return Q(Q(0))}function Q0(a){a=a|0;return pB(a,267344,6)|0}function P0(a){a=a|0;return pB(a,267352,7)|0}function N0(a){a=a|0;return pB(a,267360,8)|0}function o1(a){a=a|0;Yi=0;return J[a+12>>2]}function eoa(a){a=a|0;H[a+152|0]=0;return 0}function Ksa(a,b){a=a|0;b=Q(b);N[a+72>>2]=b}function G$(a){a=a|0;kJ(a,1,36296);return 1}function zna(a,b){a=a|0;b=b|0;J[a+72>>2]=b}function yna(a,b){a=a|0;b=b|0;J[a+80>>2]=b}function xJ(){Z(112887,37050,88,47736);B()}function m1(a){a=a|0;J[a+12>>2]=0;return 0}function kO(a,b,c){return jO(a,b,bj(c),Yi)}function hsa(a){a=a|0;return Q(N[a+44>>2])}function cD(a,b,c){return hO(a,b,bj(c),Yi)}function bL(a,b,c,d,e){XK(a+112|0,b,c,d,e)}function X$(a){a=a|0;Nk(a,1870,1);return 1}function Qsa(a){a=a|0;return Q(N[a+72>>2])}function LB(a,b){return qj(a,b,J[84570],0)}function ET(a,b){a=a|0;b=Q(b);N[a+44>>2]=b}function C$(a){a=a|0;kJ(a,2,6988);return 1}function Ana(a,b){a=a|0;b=b|0;J[a+24>>2]=b}function $C(a,b,c){return YN(a,b,bj(c),Yi)}function zB(a,b){return Kk(a,b,J[215723])}function un(a,b){return Kk(a,b,J[215721])}function hpa(a){a=a|0;uj(a,-1e4);return 1}function Uwa(a,b){a=a|0;b=b|0;J[a+8>>2]=b}function TI(a,b,c){return Tm(Tz(a,b,c,0))}function O4(a){a=a|0;return!jj(a,66717)|0}function NR(a,b){a=a|0;b=b|0;J[a+16>>2]=b}function Lba(a){a=a|0;return J[a+2072>>2]}function J4(a){a=a|0;if(a){cj(a)}return 0}function Gm(a,b){return Kk(a,b,J[215720])}function Au(a,b){return Kk(a,b,J[215722])}function Aq(a,b,c){return mC(a+128|0,b,c)}function pY(a){a=a|0;Ra(Zm(a,1,0)|0);B()}function WX(a){a=a|0;return J[a+4>>2]<<3}function Bu(a,b){return Kk(a,b,J[84567])}function Bq(a,b,c){return mC(a+28|0,b,c)}function y1(a){a=a|0;H[338272]=(a|0)!=0}function jta(a){a=a|0;return J[a+80>>2]}function dP(a){a=a|0;return J[a+184>>2]}function cP(a){a=a|0;return J[a+172>>2]}function Wka(a){a=a|0;return J[a+32>>2]}function Vwa(a){a=a|0;return J[a+12>>2]}function Ora(a){a=a|0;return J[a+24>>2]}function xT(a){a=a|0;return J[a+96>>2]}function wv(a){a=a|0;return J[a+16>>2]}function rga(a){a=a|0;return aQ(a,1)|0}function qga(a){a=a|0;return aQ(a,0)|0}function mpa(a){a=a|0;fu(a,1);return 1}function lz(a){a=a|0;return J[a+92>>2]}function lla(a){a=a|0;return IQ(a,0)|0}function kla(a){a=a|0;return IQ(a,1)|0}function k5(a){a=a|0;return J[a+20>>2]}function fw(a,b,c){return iG(a,b,c,-1)}function _$(a){a=a|0;return bG(a,10)|0}function U0(a){a=a|0;return J[a+88>>2]}function R0(a){a=a|0;return(a&-2)==2|0}function Fq(){return ij(nj(200),0,200)}function Dx(a,b,c,d){_K(a+112|0,b,c,d)}function Bca(a){a=a|0;BP(a,1);return 1}function Aca(a){a=a|0;BP(a,0);return 1}function $$(a){a=a|0;return fG(a,10)|0}function tO(a,b){return(Ws(a,b)|0)!=0}function rX(a){a=a|0;return vw(a,1)|0}function pF(a){a=a|0;return J[a+8>>2]}function oX(a){a=a|0;return vw(a,0)|0}function lxa(a,b,c){return gxa(a,b,c)}function kx(){Pm(36957,805,J[245744])}function hX(a){a=a|0;return as(a,1)|0}function g5(a,b){a=a|0;b=b|0;return 0}function eX(a){a=a|0;return as(a,0)|0}function a1(a){a=a|0;return(a|0)==4|0}function a0(a){a=a|0;return fG(a,2)|0}function Z$(a){a=a|0;return bG(a,2)|0}function LY(a){a=a|0;Ot(a,2);return 0}function KY(a){a=a|0;Ot(a,3);return 0}function JY(a){a=a|0;Ot(a,4);return 0}function Iv(a,b){a=a|0;b=b|0;return 1}function IY(a){a=a|0;Ot(a,1);return 0}function IW(a){a=a|0;return oG(a,1)|0}function HY(a){a=a|0;Ot(a,0);return 0}function Dl(a){xl(a,57435,0);return 0}function DW(a){a=a|0;return oG(a,0)|0}function Ar(a){a=a|0;return J[a+4>>2]}function wX(a,b){a=a|0;b=b|0;pA(a,b)}function mua(a){a=a|0;return sj(a)|0}function mX(a,b){a=a|0;b=b|0;mA(a,b)}function Sn(a,b,c){a=a|0;b=b|0;c=c|0}function Lma(a){a=a|0;return fR(a)|0}function FZ(a,b){a=a|0;b=b|0;xA(a,b)}function DX(a,b){a=a|0;b=b|0;qA(a,b)}function xS(){aa(292184,158860,0)|0}function qk(a,b){Wn(a,b,J[a+16>>2])}function pqa(a){a=a|0;J[a+124>>2]=0}function pS(a,b,c){return fn(a,b,c)}function isa(a){a=a|0;return a+12|0}function Rsa(a){a=a|0;return a+76|0}function Ip(a){cj(J[a+20>>2]);cj(a)}function GY(a){a=a|0;return nj(a)|0}function uva(a){a=a|0;zj(158226,0)}function tva(a){a=a|0;zj(158273,0)}function pW(a){a=a|0;xS();return 0}function oW(a){a=a|0;wS();return 0}function gH(a,b){a=a|0;b=b|0;cj(b)}function dY(a){a=a|0;zS();return 0}function Psa(a){a=a|0;return 70951}function Oy(a,b,c){uv(J[a>>2],b,c)}function Npa(a){a=a|0;return 66756}function Lta(a){a=a|0;return 64943}function Hha(a){a=a|0;if(a){zr(a)}}function HH(a){return!Pj(a+24|0,0)}function $pa(a){a=a|0;return 95252}function wsa(a){a=a|0;HT(a);cj(a)}function vva(a){a=a|0;SU(a);cj(a)}function vta(a){a=a|0;YT(a);cj(a)}function ssa(a){a=a|0;return 4783}function ll(a){a=a|0;if(a){cj(a)}}function kra(a){a=a|0;pT(a);cj(a)}function jqa(a){a=a|0;$S(a);cj(a)}function jT(a){a=a|0;return a+4|0}function gqa(a){a=a|0;_S(a);cj(a)}function dsa(a){a=a|0;CT(a);cj(a)}function bv(a){return Dq(a,yj(a))}function bua(a){a=a|0;eU(a);cj(a)}function ata(a){a=a|0;NE(a);cj(a)}function asa(a){a=a|0;LE(a);cj(a)}function Yta(a){a=a|0;return 4542}function Wsa(a){a=a|0;OT(a);cj(a)}function Wpa(a){a=a|0;ZS(a);cj(a)}function Vqa(a){a=a|0;kT(a);cj(a)}function Tpa(a){a=a|0;YS(a);cj(a)}function Sra(a){a=a|0;wT(a);cj(a)}function Nra(a){a=a|0;vT(a);cj(a)}function NY(a){a=a|0;return a-4|0}function Ls(a,b){hj(b,a+8|0,2188)}function Bsa(a){a=a|0;IT(a);cj(a)}function vqa(a){a=a|0;return 480}function uta(a){a=a|0;return 248}function lG(a,b){fq(yj(a)+a|0,b)}function iC(a,b,c,d){nL(a,b,c,d)}function _w(a,b){yl(a,1,yj(a),b)}function _F(a,b,c){Ct(a,b,c,0,0)}function V0(a){a=a|0;DA(a);cj(a)}function Uu(a){cj(J[a>>2]);cj(a)}function Swa(a){a=a|0;Dy(296128)}function Rwa(a){a=a|0;rF(335080)}function $z(a,b,c,d){Bz(a,b,c,d)}function $0(a){a=a|0;FA(a);cj(a)}function xu(a,b){return Cn(a,b)}function vG(a,b){return Vv(a,b)}function usa(a){a=a|0;return 68}function tl(a){a=a|0;return a|0}function ksa(a){a=a|0;return 52}function Tsa(a){a=a|0;return 24}function Nta(a){a=a|0;return 60}function HM(a,b){Jm(a,b,2288,0)}function yJ(a){hj(a,875244,74)}function cU(a){a=a|0;return 12}function Xta(a){a=a|0;return 8}function Uba(){return J[79491]}function TD(a){a=a|0;return-15}function MY(a){a=a|0;cj(a-4|0)}function Isa(a,b){a=a|0;b=Q(b)}function sT(a){a=a|0;return 2}function pm(a){a=a|0;return 0}function lq(a){AI(a);return 0}function bU(a){a=a|0;return 6}function US(a){a=a|0;return 3}function Ev(a){a=a|0;return 1}function pA(a,b){hj(a,b,108)}function mA(a,b){hj(a,b,216)}function Ho(a,b){a=a|0;b=b|0}function xA(a,b){hj(a,b,88)}function qA(a,b){hj(a,b,92)}function FA(a){if(a){DA(a)}}function zwa(a){a=a|0;Ui=a}function ywa(a){a=a|0;Vi=a}function ww(a){ij(a,0,108)}function sv(a){Ny(J[a>>2])}function jk(a){a=a|0;cj(a)}function bs(a){ij(a,0,216)}function TH(a){ij(a,0,320)}function Iw(a){ij(a,0,280)}function HQ(a){ij(a,0,176)}function ds(a){ij(a,0,92)}function au(a){ij(a,0,88)}function L0(){return Ui|0}function Jo(a){a=a|0;B()}function Zoa(){return 1}function Twa(){Rv();B()}function Rv(){zi();B()}function hE(a){a=a|0}function L6(){} +// EMSCRIPTEN_END_FUNCS +e=K;p(q);var Zi=c([null,ioa,coa,doa,eoa,boa,M7,fha,cha,dha,eha,goa,iE,foa,hoa,Zna,Yna,_na,$na,exa,fxa,aoa,x0,pm,_wa,Zwa,Koa,Joa,Ioa,FX,gJ,KG,pW,IX,p$,pm,RX,s$,qW,SX,_A,oW,HX,o$,RY,xwa,QX,_A,JX,q$,IY,HY,LY,JY,n$,hJ,hJ,LX,KX,NX,_A,MX,r$,KY,KG,gJ,OX,dY,g$,j0,k0,l0,GX,n0,o0,Ywa,m0,PX,Xwa,bxa,cxa,_ma,ll,sna,xna,Swa,Kna,Tna,Vna,Wna,pm,Una,Bna,Ina,Qna,Rna,Pna,Lna,Ona,Sna,Cna,Nna,Gna,Hna,Fna,Ena,Mna,Dna,Jna,tna,una,vna,wna,Xma,Tma,gR,By,Oma,Pma,Rma,Qma,Wma,Vma,Sma,Uma,Zma,Yma,zma,tma,Hma,Gma,eR,eR,Fma,Ima,wma,vma,uma,xma,Ema,Dma,Bma,Cma,Ama,Jma,Nma,Mma,fR,Lma,yma,Kma,sma,rma,rna,TD,TD,qna,kna,mna,lna,jna,pna,gna,ina,hna,fna,ona,ena,SD,dna,nna,ana,cna,bna,$ma,roa,qoa,Qwa,soa,l5,h5,m5,$4,b5,a5,f5,e5,_4,c5,d5,S4,Q4,V4,U4,Z4,T4,Y4,R4,W4,X4,K4,M4,L4,P4,J4,N4,O4,A4,C4,B4,I4,z4,D4,E4,F4,H4,G4,s4,u4,t4,y4,x4,r4,v4,w4,hga,gga,Nka,dda,gha,tca,uca,Tha,ila,ega,Gha,Gka,fga,Sja,Rja,Zja,hka,ika,gka,cka,fka,jka,Qja,Vja,Xja,Yja,Wja,dka,Tja,bka,_ja,Ar,bha,zha,fda,Jha,Lga,Hga,Hha,kda,sha,nha,sca,rla,Iha,Oha,pQ,Tfa,bga,aka,$ja,KP,Uja,eka,Cda,aga,Xfa,ija,pja,nja,gja,EQ,lja,sja,tja,rja,uja,fja,jja,kja,oja,hja,qja,mja,om,$fa,EQ,xia,Bia,Fia,Gia,Eia,pm,yia,Aia,Cia,zia,Dia,_fa,Wfa,jia,ria,PD,pia,Zfa,Vfa,cia,Wha,aia,Kja,Cja,Ija,Ffa,my,Gfa,Cfa,Dfa,Efa,sfa,tfa,ufa,xea,zea,Aea,yea,Oda,Rda,Qda,Sda,Pda,Dda,Eda,Fda,DD,afa,bfa,cfa,DD,dfa,ffa,gfa,efa,Nfa,Pfa,Qfa,Ofa,Hea,Jea,Kea,Iea,Bea,Dea,Eea,Cea,Lea,Nea,Oea,Mea,yfa,Afa,Bfa,zfa,vfa,wfa,xfa,DD,Yea,my,ED,Zea,pm,Yda,aea,Xda,Lfa,SD,Mfa,Vea,Wea,Xea,TD,_ea,$ea,hfa,jfa,kfa,ifa,Hfa,Jfa,Kfa,Ifa,Rea,Tea,Uea,Sea,Pea,SD,Qea,nea,oea,pea,jea,lea,mea,kea,qea,rea,sea,Tda,Vda,Wda,Uda,Kda,Mda,Nda,Lda,Gda,Ida,Jda,Hda,Fea,my,ED,Gea,bea,dea,eea,cea,fea,hea,iea,gea,lfa,mfa,nfa,Ika,Tka,Pka,Qka,Ska,Rka,Mka,Oka,Lka,Kka,Jka,Hka,Ar,Eka,Aka,Bka,Dka,Cka,xka,Fka,tka,yka,vka,wka,uka,zka,ska,Ar,hla,fla,gla,GQ,dla,ala,ela,bla,cla,$ka,Tia,$ia,eja,bja,dja,cja,Wia,Xia,Ria,Zia,Via,Qia,Iia,Ar,Pia,Mia,Oia,Nia,Lia,Jia,Kia,Hia,Ar,rka,oka,qka,pka,mka,nka,lka,kka,_ka,Yka,Zka,GQ,Vka,Uka,Xka,Ar,Aja,xja,zja,yja,wja,pm,vja,kia,sia,wia,tia,via,uia,nia,oia,iia,qia,lia,mia,hia,Xha,Ar,gia,dia,fia,eia,_ha,$ha,Vha,bia,Yha,Zha,Uha,Dja,Lja,Pja,Mja,Oja,Nja,Gja,Hja,Bja,Jja,Eja,Fja,g5,dga,Sfa,ED,my,Rfa,Bda,uha,tha,uda,vea,qfa,ofa,tea,wda,vda,wea,rfa,pfa,uea,Ada,zda,yda,dxa,i5,j5,bda,Fca,sda,tda,Zda,_da,$da,wla,ula,vla,Kca,Gca,Ica,Jca,Hca,Kha,lha,wha,Rha,Sha,jda,rha,e1,b1,d1,c1,f1,g1,i1,h1,j1,gW,dW,fW,eW,hW,iW,kW,jW,lW,tla,sla,eQ,qla,ola,mla,pla,nla,oha,kla,lla,jla,Eha,Cha,Aha,Dha,Bha,Mga,Iga,Kga,Jga,$ga,_ga,qda,pm,Yga,Zga,gda,iha,kha,Fha,Gga,Dga,Ega,Fga,tga,sga,Cga,Bga,yga,nga,xga,wga,pga,Aga,rga,qga,iga,zga,oga,vga,lga,mga,jga,uga,kga,aha,Pwa,cda,Vga,Qha,Pha,Lha,Mha,Nha,cga,oda,yha,eda,hha,pha,hda,xha,nda,jha,_A,Yca,Zca,Tca,ada,_ca,$ca,Xca,Vca,Rca,Wca,Uca,Sca,Nca,Lca,Oca,Pca,Mca,Qca,Wga,Xga,Owa,Dca,Eca,xca,yca,wca,Aca,zca,Bca,Cca,vca,lda,mda,ida,vha,mha,qha,xda,aja,Uia,Yfa,Ufa,Sia,_ia,Yia,pda,pm,Qga,Rga,Uga,Tga,Oga,Pga,Nga,Sga,rda,pm,pma,qma,xla,yla,Vla,Ala,Xla,dma,ima,fma,$la,Cla,gma,Ila,cma,Dla,hma,Jla,Nla,Gla,Ola,Hla,Mla,Fla,Lla,Bla,Pla,Kla,ema,Ela,Ula,zla,Tla,_la,Sla,Rla,Zla,Yla,ama,bma,mma,nma,kma,lma,oma,Wla,Qla,jma,Zoa,cba,Uba,$aa,_aa,gca,aca,rba,Lba,wD,wD,aba,Zaa,kca,kba,nba,eba,vD,bca,cca,Ho,Zba,dca,Yba,gba,fba,sba,eP,Oaa,bP,lca,mba,dP,eP,Aaa,Baa,hca,hba,oca,Xba,hE,Tba,Yaa,yaa,Rba,yba,Sba,xba,nca,L6,mca,oba,Eba,bba,Hba,Oba,Nba,Fba,zba,Dba,aP,Daa,Caa,ica,iba,qba,Maa,Kba,Jba,Laa,jca,jba,Naa,Paa,Saa,Faa,Eaa,Iaa,Haa,Gaa,Jaa,Raa,Qaa,Vaa,Waa,fca,$ba,zaa,Kaa,Uaa,Taa,Vba,Wba,Gba,Xaa,dba,Cba,cP,eca,_ba,Bba,pm,tba,Qba,Iba,Pba,Aba,Mba,uba,vba,wba,pba,lba,wD,sP,xaa,pca,rca,qca,zua,oz,tl,jk,f7,c7,g7,d7,e7,b7,h7,HL,tl,jk,Ho,Ho,Sn,i7,tl,jk,W6,tl,jk,_6,Qqa,Oqa,Mqa,Lqa,$6,Z6,a7,Uwa,pF,Uqa,Nqa,Tqa,Pqa,Rqa,Sqa,HL,tl,jk,lta,U6,tl,jk,Y6,X6,j7,OL,V6,OL,lM,Nwa,$S,jqa,Sn,kqa,vD,pqa,lqa,oqa,mqa,nqa,pT,kra,bta,yna,jta,Era,kta,dta,Lra,yra,fta,ura,nra,Kra,xra,Mra,zra,sra,Dra,mra,Jra,wra,tra,cP,dP,tT,tT,sT,Fra,uT,rT,uT,rT,Ara,Cra,Gra,rra,Bra,vra,Ira,Hra,Ho,lra,pra,ora,qra,tl,jk,Hta,Ita,uqa,rqa,qqa,sta,vqa,sqa,tqa,fU,hU,jua,iua,eua,gU,gua,lua,kua,lz,lz,hua,fua,hE,hU,Eqa,Dqa,zx,Fqa,Sn,wv,wv,jT,Sn,pm,Sn,Ho,Sn,zx,Ev,Ho,Ho,wT,Sra,Yra,Xra,Tra,gU,Vra,_ra,Zra,xT,xT,Wra,Ura,hE,tl,jk,Qra,Rra,$ra,Iv,Iv,jk,Sn,WV,jk,WV,kT,Vqa,dra,Zqa,Yqa,wv,wv,jT,cra,pF,bra,Ana,_qa,$qa,pm,zna,Wqa,tl,jk,ara,jk,Xqa,Eta,YT,vta,Cta,zta,wta,Fta,yta,xta,Dta,Vwa,Ata,k5,Gta,Bta,jk,rta,Iv,tl,Kv,uta,XT,tta,NE,ata,VT,WT,OE,cta,Isa,Ho,tl,jk,tl,jk,Rpa,ST,jk,ST,jk,eta,jk,Spa,ita,jk,hta,jk,mta,gta,tl,jk,fqa,jk,eqa,tl,jk,$wa,axa,NY,MY,OY,tl,Jo,Twa,tl,Jo,tl,jk,Asa,HT,wsa,xsa,zsa,ysa,tl,jk,Jqa,Iqa,Cqa,IT,Bsa,Csa,Fsa,Dsa,LE,asa,bsa,tl,Kv,VS,pta,qta,ota,ME,isa,Ppa,Npa,ET,hsa,ksa,gsa,nta,FT,Hpa,Qpa,jsa,sT,Kpa,US,US,Opa,Jpa,Ev,Lpa,Ipa,Mpa,jk,Esa,OT,Wsa,Xsa,Zsa,Ysa,jk,Vsa,tl,jk,dU,eU,bua,cua,Lv,hz,CT,dsa,esa,Lv,hz,vT,Nra,wv,Ora,pF,Pra,Wka,tl,jk,Hsa,jk,Gsa,jk,$sa,jk,_sa,jk,jra,jk,Ypa,jk,Vpa,jk,dua,jk,fsa,jk,oT,Lv,Ho,nT,gra,ira,hra,jk,Kqa,_S,gqa,hqa,iqa,ZS,Wpa,Xpa,Lv,hz,jk,LV,YS,Tpa,Upa,Lv,hz,Kv,_ta,aU,$ta,Yta,$T,Qta,Rta,aua,bU,Uta,Xta,cU,Zta,Tta,bU,Vta,Sta,Wta,tl,jk,_T,jk,_T,Kv,Mta,aU,Ota,Lta,$T,Nta,Jta,Kta,Pta,pm,Sn,MT,Jsa,Ssa,Lsa,Rsa,Usa,Psa,Ksa,Qsa,Tsa,Msa,Nsa,Osa,msa,lsa,Aqa,nsa,xqa,ssa,usa,osa,FT,psa,vsa,lz,lz,tsa,rsa,pm,vD,qsa,Jo,VS,Jo,cU,Jv,Jo,wqa,yqa,Jo,zqa,Kv,bqa,cqa,$pa,ET,aqa,Zpa,_pa,dqa,tl,jk,KT,jk,Sn,Sn,Bqa,jk,JE,ez,csa,tl,jk,fra,jk,era,jk,Hqa,jk,Sn,Sn,Gqa,Jo,Jo,jk,FE,M6,P6,O6,N6,R6,T6,Q6,S6,mua,jk,Rwa,tl,jk,ewa,Ev,awa,bwa,dwa,cwa,jk,Rva,Ev,zx,Ova,Qva,Pva,SU,vva,Ava,xva,zx,wva,zva,yva,jk,hva,Ev,eva,PU,gva,fva,Jo,sva,rva,qva,pva,tva,tl,jk,ova,nva,Iv,VU,UU,Jva,Iva,Kva,jk,Hva,Fva,Gva,tz,sz,XU,WU,Nva,jk,Mva,Lva,Iv,eV,dV,Zva,ZE,_va,jk,Yva,Wva,Xva,uva,Jo,tz,sz,cva,bva,dva,jk,ava,_ua,$ua,VU,UU,Yua,ZE,Zua,jk,Xua,Vua,Wua,tz,sz,XU,WU,Uua,jk,Tua,Rua,Sua,tz,sz,Pua,ZE,Qua,jk,Oua,Mua,Nua,eV,dV,Kua,LU,Lua,jk,Jua,Hua,Iua,Fua,Eua,Dua,LU,Gua,jk,Cua,Aua,Bua,kva,tl,jk,fwa,jk,iva,jk,Uva,jk,jwa,jk,Sva,jk,hwa,jk,Bva,jk,Dva,jk,bq,lva,bq,gwa,bq,jva,bq,Vva,bq,kwa,bq,Tva,bq,iwa,Cva,bq,Eva,bq,Jo,mva,jk,Sn,tl,jk,$va,J6,H6,G6,E6,F6,K6,I6,h6,By,b6,c6,e6,d6,g6,By,f6,j6,i6,n6,k6,m6,l6,a6,$5,p6,o6,N5,V5,E5,Y5,s5,O5,W5,t5,M5,U5,J5,K5,_5,n5,o5,u5,D5,B5,x5,y5,q5,r5,p5,z5,v5,Q5,R5,S5,I5,L5,G5,H5,F5,Z5,P5,X5,A5,T5,C5,w5,C6,w6,v6,B6,D6,u6,z6,s6,y6,r6,A6,t6,x6,q6,R3,S3,O3,N3,o4,j4,Mwa,a4,_3,$3,f4,d4,g4,e4,h4,i4,c4,b4,Y3,X3,T3,c2,h2,f2,d2,g2,e2,t3,Y2,F2,I2,W2,N2,L2,Q2,S2,R2,H2,J2,K2,O2,U2,T2,M2,B2,D2,P2,V2,G2,A2,z2,E2,X2,C2,v2,t2,p2,w2,r2,s2,P3,Q3,Lwa,x2,y2,q2,u2,_2,pm,i2,n2,k2,j2,m2,o2,l2,G1,B1,E1,F1,C1,U1,Z1,W1,b2,V1,Y1,$1,T1,a2,_1,J1,O1,L1,S1,K1,N1,Q1,I1,R1,P1,a3,e3,b3,d3,g3,f3,u3,y3,v3,x3,A3,z3,D1,X1,M1,c3,w3,l3,n3,m3,j3,i3,h3,K3,J3,I3,H3,G3,M3,F3,E3,D3,B3,l4,W3,V3,r3,m4,U3,Z2,n4,$2,p3,Z3,q3,s3,k3,L3,C3,H1,o3,k4,PJ,z1,A1,oua,wua,xua,vua,tua,sua,pua,yua,rua,qua,uua,nua,pm,B0,fY,Y$,X$,L$,P$,M$,N$,O$,V$,pm,W$,bX,CG,BG,wZ,lwa,yZ,xZ,uZ,tZ,rZ,pZ,nZ,lZ,jZ,hZ,VY,gZ,fZ,cZ,$Y,ZY,UY,SY,a0,$$,b0,zY,xY,wY,yY,FY,Ap,Ap,Ap,Ap,uY,wW,vW,vZ,sZ,qZ,oZ,kZ,iZ,eZ,dZ,bZ,aZ,_Y,YY,mZ,XY,WY,TY,Z$,_$,Ap,Ap,Ap,vY,$G,Ap,_G,_G,$G,Ap,aH,aH,BY,AY,DY,EY,CY,K0,cY,G0,mI,qI,H0,Gpa,q0,p0,II,iY,t$,Q_,L_,K_,M_,r0,a$,$_,Z_,Y_,X_,W_,w_,b$,__,V_,U_,T_,S_,R_,O_,P_,N_,J_,I_,H_,G_,F_,E_,D_,C_,B_,A_,z_,y_,x_,s0,c$,d$,f$,e$,k$,h$,j$,i$,xW,z0,y0,d0,MZ,uW,nW,EX,aX,J$,E$,B$,y$,K$,I$,G$,F$,D$,C$,A$,z$,x$,v$,u$,J0,I0,F0,E0,D0,C0,H$,w$,tY,sY,rY,qY,pY,oY,nY,mY,lY,kY,jY,wF,T$,LW,KW,JW,IW,HW,c0,U$,GW,FW,EW,DW,CW,BW,AW,zW,m_,l_,k_,i_,j_,h_,f_,g_,e_,d_,c_,b_,a_,$Z,ZZ,_Z,YZ,XZ,WZ,VZ,UZ,TZ,SZ,QZ,RZ,PZ,NZ,OZ,R$,opa,mpa,lpa,kpa,jpa,hpa,ipa,gpa,fpa,epa,dpa,cpa,bpa,npa,v_,q_,o_,t_,r_,p_,s_,u_,Q7,R7,O7,S7,P7,T7,V7,N7,U7,GY,lj,Z,Gwa,Goa,Eoa,yj,dj,ir,$k,Hk,bj,Hoa,jk,Ul,nj,oT,Foa,ij,AZ,zZ,CZ,AH,EZ,DZ,FZ,BZ,yX,xX,AX,GZ,CX,BX,DX,zX,rX,qX,tX,pX,vX,uX,wX,sX,oX,nX,hX,gX,jX,fX,lX,kX,mX,iX,eX,dX,Q0,P0,N0,O0,M0,JZ,WX,aY,UX,VX,ZX,YX,$X,bY,XX,_X,U0,Y0,S0,T0,X0,rJ,V0,W0,R0,a1,Z0,_0,rJ,$0,HZ,qwa,swa,rwa,mwa,nwa,pwa,owa,w0,u0,t0,ypa,wpa,vpa,Dpa,Fpa,Epa,zpa,Apa,Cpa,Bpa,v0,xpa,Poa,Qoa,Loa,Moa,Ooa,Noa,Xoa,Yoa,Toa,Uoa,Woa,Voa,Roa,Soa,spa,ppa,upa,tpa,ppa,rpa,qpa,g0,vwa,wwa,uwa,twa,h0,f0,e0,i0,KZ,LZ,Ho,Xna,Kwa,ZM,VM,WM,NR,ZM,Jwa,NW,RW,QW,OW,PW,eY,MW,k7,l7,Ho,Iwa,$W,YW,tW,ZW,WW,rW,_W,XW,sW,VW,TW,UW,SW,IZ,q4,nK,p4,k1,hH,gH,QY,PY,hH,gH,DS,apa,$oa,S$,faa,laa,kaa,eQ,waa,W7,gR,By,naa,oaa,qaa,paa,taa,raa,saa,vaa,uaa,X7,Z7,Y7,_7,H9,Q9,E8,l9,g9,a8,P9,eaa,maa,jaa,b9,_8,$8,p9,h8,z8,J9,aaa,O8,_9,M8,Z9,L8,$9,N8,o9,f8,U9,V8,iaa,Z8,daa,g8,I9,y8,T8,S9,T9,F8,M9,B8,L9,q9,r9,i9,c8,h9,b8,A9,r8,j9,R9,s9,i8,W8,e9,J8,k9,d8,caa,Q8,u9,k8,d9,c9,E9,v8,gaa,haa,m9,$7,f9,U8,w9,m8,R8,S8,p8,s8,B9,t8,C9,C8,N9,x8,G9,A8,K9,e8,n9,j8,t9,W9,H8,V9,G8,a9,u8,D9,Y8,X8,O9,D8,baa,P8,z9,q8,y9,o8,X9,I8,x9,n8,Y9,K8,F9,w8,v9,l8,toa,pm,voa,xoa,yoa,zoa,Doa,Boa,Coa,Aoa,woa,uoa,pm,n7,o7,p7,q7,r7,s7,K7,L7,z7,A7,m7,G7,H7,I7,J7,x7,u7,KM,LM,MM,w7,y7,t7,v7,F7,E7,B7,C7,D7,w1,YV,XV,_V,ZV,aW,$V,cW,bW,n1,q1,p1,m1,l1,zJ,o1,t1,v1,AJ,s1,r1,zJ,u1,hY,mW,moa,poa,loa,noa,ooa,koa,joa,qg,ih,af,ci,Cg,Me,If,Nf,Kf,Of,Mf,Sh,ah,kg,Ue,Ng,Tg,Kg,pd,fi,ei,ai,$h,Yh,Xh,Vh,Rh,Qh,Ph,Oh,Nh,Lh,Kh,Jh,Ih,Dh,Ch,Bh,zh,yh,xh,vh,sh,rh,ph,oh,nh,mh,lh,kh,hh,fh,dh,$g,_g,Zg,Yg,Xg,Wg,Vg,Mg,Fg,Eg,zg,yg,xg,wg,ug,tg,jg,sg,pg,ng,ig,hg,dg,cg,bg,$f,_f,Zf,Xf,Tf,Pf,Qf,Hf,Bf,Ef,Df,Cf,Af,xf,wf,rf,qf,sf,lf,kf,mf,jf,ff,ef,df,cf,$e,Ze,Xe,Te,Se,Qe,Pe,Ke,Je,Ie,Fe,Ae,ze,ye,xe,we,ve,ue,te,se,re,pe,oe,ne,me,je,ge,fe,ee,de,ae,$d,_d,Zd,Wd,Vd,Ud,Td,Qd,Pd,Od,Nd,Jd,Gd,Dd,Ad,zd,yd,xd,wd,vd,ud,td,sd,rd,gd,fd,nd,Rg,Hg,Og,Le,Gg,qe,ie,qh,wh,uh,rg,jh,bf,di,Dg,Jf,Lf,Pg,Id,Fd,Hd,Cd,Ed,Bd,Mh,He,vg,Th,bh,lg,Ve,Uf,bi,Bg,Zh,_h,he,vf,hd,of,nf,ld,jd,kd,id,pf,Yf,ce,Yd,Sd,Md,be,Xd,Rd,Ld,Fh,Eh,Gh,Hh,zf,th,tf,eg,uf,fg,gg,Kd,Ug,Lg,Ag,Ye,eh,Ah,ed,Vf,yf,Wf,ag,og,gh,_e,Wh,Ce,Be,Ee,De,Ff,Gf,qd,Uh,ch,mg,We,Re,Ge,Rf,Oe,Ne,hf,gf,le,ke,Sf,md,od,Qg,Sg,Ig,Jg,Dwa,Cwa,Ewa,Fwa,Vq,pm,Hwa,A0,gY,cX,yW]);function _i(){return G.byteLength/65536|0}return{Yh:Bwa,Zh:TR,_h:n_,$h:sj,ai:cj,bi:Zi,ci:_oa,di:Q$,ei:y1,fi:x1,gi:_I,hi:_I,ii:Wwa,ji:TX,ki:ywa,li:zwa,mi:Awa,ni:L0,oi:l$,pi:m$}}return $i(aj)} +// EMSCRIPTEN_END_ASM + + +)(info)},instantiate:function instantiate(binary,info){return{then:function then(ok){var module=new WebAssembly.Module(binary);ok({instance:new WebAssembly.Instance(module,info)})}}},RuntimeError:Error,isWasm2js:true};if(WebAssembly.isWasm2js){wasmBinary=[]}var wasmMemory;var ABORT=false;var EXITSTATUS;function assert(condition,text){if(!condition){abort(text)}}var HEAP8,HEAPU8,HEAP16,HEAPU16,HEAP32,HEAPU32,HEAPF32,HEAPF64;function updateMemoryViews(){var b=wasmMemory.buffer;Module["HEAP8"]=HEAP8=new Int8Array(b);Module["HEAP16"]=HEAP16=new Int16Array(b);Module["HEAPU8"]=HEAPU8=new Uint8Array(b);Module["HEAPU16"]=HEAPU16=new Uint16Array(b);Module["HEAP32"]=HEAP32=new Int32Array(b);Module["HEAPU32"]=HEAPU32=new Uint32Array(b);Module["HEAPF32"]=HEAPF32=new Float32Array(b);Module["HEAPF64"]=HEAPF64=new Float64Array(b)}if(Module["wasmMemory"]){wasmMemory=Module["wasmMemory"]}else{var INITIAL_MEMORY=Module["INITIAL_MEMORY"]||33554432;wasmMemory=new WebAssembly.Memory({initial:INITIAL_MEMORY/65536,maximum:INITIAL_MEMORY/65536})}updateMemoryViews();var __ATPRERUN__=[];var __ATINIT__=[];var __ATMAIN__=[];var __ATEXIT__=[];var __ATPOSTRUN__=[];var runtimeInitialized=false;function preRun(){if(Module["preRun"]){if(typeof Module["preRun"]=="function")Module["preRun"]=[Module["preRun"]];while(Module["preRun"].length){addOnPreRun(Module["preRun"].shift())}}callRuntimeCallbacks(__ATPRERUN__)}function initRuntime(){runtimeInitialized=true;if(!Module["noFSInit"]&&!FS.initialized)FS.init();FS.ignorePermissions=false;TTY.init();SOCKFS.root=FS.mount(SOCKFS,{},null);callRuntimeCallbacks(__ATINIT__)}function preMain(){callRuntimeCallbacks(__ATMAIN__)}function postRun(){if(Module["postRun"]){if(typeof Module["postRun"]=="function")Module["postRun"]=[Module["postRun"]];while(Module["postRun"].length){addOnPostRun(Module["postRun"].shift())}}callRuntimeCallbacks(__ATPOSTRUN__)}function addOnPreRun(cb){__ATPRERUN__.unshift(cb)}function addOnInit(cb){__ATINIT__.unshift(cb)}function addOnPostRun(cb){__ATPOSTRUN__.unshift(cb)}if(!Math.imul||Math.imul(4294967295,5)!==-5)Math.imul=function(a,b){var ah=a>>>16;var al=a&65535;var bh=b>>>16;var bl=b&65535;return al*bl+(ah*bl+al*bh<<16)|0};if(!Math.fround){var froundBuffer=new Float32Array(1);Math.fround=function(x){froundBuffer[0]=x;return froundBuffer[0]}}Math.clz32||(Math.clz32=function(x){var n=32;var y=x>>16;if(y){n-=16;x=y}y=x>>8;if(y){n-=8;x=y}y=x>>4;if(y){n-=4;x=y}y=x>>2;if(y){n-=2;x=y}y=x>>1;if(y)return n-2;return n-x});Math.trunc||(Math.trunc=function(x){return x<0?Math.ceil(x):Math.floor(x)});var runDependencies=0;var runDependencyWatcher=null;var dependenciesFulfilled=null;function getUniqueRunDependency(id){return id}function addRunDependency(id){var _Module$monitorRunDep;runDependencies++;(_Module$monitorRunDep=Module["monitorRunDependencies"])===null||_Module$monitorRunDep===void 0||_Module$monitorRunDep.call(Module,runDependencies)}function removeRunDependency(id){var _Module$monitorRunDep2;runDependencies--;(_Module$monitorRunDep2=Module["monitorRunDependencies"])===null||_Module$monitorRunDep2===void 0||_Module$monitorRunDep2.call(Module,runDependencies);if(runDependencies==0){if(runDependencyWatcher!==null){clearInterval(runDependencyWatcher);runDependencyWatcher=null}if(dependenciesFulfilled){var callback=dependenciesFulfilled;dependenciesFulfilled=null;callback()}}}function abort(what){var _Module$onAbort;(_Module$onAbort=Module["onAbort"])===null||_Module$onAbort===void 0||_Module$onAbort.call(Module,what);what="Aborted("+what+")";err(what);ABORT=true;EXITSTATUS=1;what+=". Build with -sASSERTIONS for more info.";var e=new WebAssembly.RuntimeError(what);throw e}var dataURIPrefix="data:application/octet-stream;base64,";var isDataURI=function isDataURI(filename){return filename.startsWith(dataURIPrefix)};var isFileURI=function isFileURI(filename){return filename.startsWith("file://")};function findWasmBinary(){var f="dmengine.wasm";if(!isDataURI(f)){return locateFile(f)}return f}var wasmBinaryFile;function getBinarySync(file){if(file==wasmBinaryFile&&wasmBinary){return new Uint8Array(wasmBinary)}if(readBinary){return readBinary(file)}throw"both async and sync fetching of the wasm failed"}function getBinaryPromise(binaryFile){if(!wasmBinary){return readAsync(binaryFile).then(function(response){return new Uint8Array(response)},function(){return getBinarySync(binaryFile)})}return Promise.resolve().then(function(){return getBinarySync(binaryFile)})}function instantiateArrayBuffer(binaryFile,imports,receiver){return getBinaryPromise(binaryFile).then(function(binary){return WebAssembly.instantiate(binary,imports)}).then(receiver,function(reason){err("failed to asynchronously prepare wasm: ".concat(reason));abort(reason)})}function instantiateAsync(binary,binaryFile,imports,callback){if(!binary&&typeof WebAssembly.instantiateStreaming=="function"&&!isDataURI(binaryFile)&&!isFileURI(binaryFile)&&!ENVIRONMENT_IS_NODE&&typeof fetch=="function"){return fetch(binaryFile,{credentials:"same-origin"}).then(function(response){var result=WebAssembly.instantiateStreaming(response,imports);return result.then(callback,function(reason){err("wasm streaming compile failed: ".concat(reason));err("falling back to ArrayBuffer instantiation");return instantiateArrayBuffer(binaryFile,imports,callback)})})}return instantiateArrayBuffer(binaryFile,imports,callback)}function getWasmImports(){return{a:wasmImports}}function createWasm(){var info=getWasmImports();function receiveInstance(instance,module){wasmExports=instance.exports;wasmTable=wasmExports["bi"];addOnInit(wasmExports["Yh"]);removeRunDependency("wasm-instantiate");return wasmExports}addRunDependency("wasm-instantiate");function receiveInstantiationResult(result){receiveInstance(result["instance"])}if(Module["instantiateWasm"]){try{return Module["instantiateWasm"](info,receiveInstance)}catch(e){err("Module.instantiateWasm callback failed with error: ".concat(e));return false}}if(!wasmBinaryFile)wasmBinaryFile=findWasmBinary();instantiateAsync(wasmBinary,wasmBinaryFile,info,receiveInstantiationResult);return{}}var tempDouble;var tempI64;var ASM_CONSTS={288688:function _(){if(navigator.userAgent.toLowerCase().indexOf("chrome")>-1){console.log("%c %c Made with Defold %c %c https://www.defold.com","background: #fd6623; padding:5px 0; border: 5px;","background: #272c31; color: #fafafa; padding:5px 0;","background: #39a3e4; padding:5px 0;","background: #ffffff; color: #000000; padding:5px 0;")}else{console.log("Made with Defold -=[ https://www.defold.com ]=-")}},289116:function _($0){console.warn(UTF8ToString($0))},289149:function _($0,$1,$2,$3){Module.__defosjs_mouseenter_listener=function(){_defos_emit_event_from_js($0)};Module.__defosjs_mouseleave_listener=function(){_defos_emit_event_from_js($1)};Module.__defosjs_click_listener=function(){_defos_emit_event_from_js($2)};Module.__defosjs_interaction_listener=function(){_defos_emit_event_from_js($3)};Module.__defosjs_mousemove_listener=function(evt){var rect=Module.canvas.getBoundingClientRect();Module.__defosjs_mouse_x=evt.clientX-rect.left;Module.__defosjs_mouse_y=evt.clientY-rect.top};Module.__defosjs_mouse_x=-1;Module.__defosjs_mouse_y=-1;Module.canvas.addEventListener("mouseenter",Module.__defosjs_mouseenter_listener);Module.canvas.addEventListener("mouseleave",Module.__defosjs_mouseleave_listener);Module.canvas.addEventListener("click",Module.__defosjs_click_listener);Module.canvas.addEventListener("click",Module.__defosjs_interaction_listener);Module.canvas.addEventListener("keyup",Module.__defosjs_interaction_listener);Module.canvas.addEventListener("touchend",Module.__defosjs_interaction_listener);document.addEventListener("mousemove",Module.__defosjs_mousemove_listener)},290332:function _($0){Module.__defosjs_pointerlockchange_listener=function(){if((document.pointerLockElement||document.mozPointerLockElement||document.webkitPointerLockElement||document.msPointerLockElement)!==Module.canvas){_defos_emit_event_from_js($0)}};if("onpointerlockchange"in document){document.addEventListener("pointerlockchange",Module.__defosjs_pointerlockchange_listener,false)}else if("onmozpointerlockchange"in document){document.addEventListener("mozpointerlockchange",Module.__defosjs_pointerlockchange_listener,false)}else if("onwebkitpointerlockchange"in document){document.addEventListener("webkitpointerlockchange",Module.__defosjs_pointerlockchange_listener,false)}else if("onmspointerlockchange"in document){document.addEventListener("mspointerlockchange",Module.__defosjs_pointerlockchange_listener,false)}},291202:function _(){Module.canvas.removeEventListener("mouseenter",Module.__defosjs_mouseenter_listener);Module.canvas.removeEventListener("mouseleave",Module.__defosjs_mouseleave_listener);Module.canvas.removeEventListener("click",Module.__defosjs_click_listener);Module.canvas.removeEventListener("click",Module.__defosjs_interaction_listener);Module.canvas.removeEventListener("keyup",Module.__defosjs_interaction_listener);Module.canvas.removeEventListener("touchend",Module.__defosjs_interaction_listener);document.removeEventListener("mousemove",Module.__defosjs_mousemove_listener);document.removeEventListener("pointerlockchange",Module.__defosjs_pointerlockchange_listener);document.removeEventListener("mozpointerlockchange",Module.__defosjs_pointerlockchange_listener);document.removeEventListener("webkitpointerlockchange",Module.__defosjs_pointerlockchange_listener);document.removeEventListener("mspointerlockchange",Module.__defosjs_pointerlockchange_listener)},292184:function _(){Module.toggleFullscreen()},292211:function _(){Module.canvas.width=window.innerWidth;Module.canvas.height=window.innerHeight},292299:function _(){return GLFW.isFullscreen},292329:function _($0){document.title=UTF8ToString($0)},292365:function _($0){function changeFavicon(src){var oldLink=document.querySelector("link[rel*='icon']");if(oldLink){document.head.removeChild(oldLink)}var link=document.createElement("link");link.rel="shortcut icon";link.href=src;document.head.appendChild(link)}changeFavicon(UTF8ToString($0))},292667:function _(){var jsString=location.href.substring(0,location.href.lastIndexOf("/"));var lengthBytes=lengthBytesUTF8(jsString)+1;var stringOnWasmHeap=_malloc(lengthBytes);stringToUTF8(jsString,stringOnWasmHeap,lengthBytes+1);return stringOnWasmHeap},292920:function _(){var jsString=window.location.search;var lengthBytes=lengthBytesUTF8(jsString)+1;var stringOnWasmHeap=_malloc(lengthBytes);stringToUTF8(jsString,stringOnWasmHeap,lengthBytes+1);return stringOnWasmHeap},293139:function _($0,$1){Module.canvas.width=$0;Module.canvas.height=$1},293196:function _(){return Module.canvas.width},293228:function _(){return Module.canvas.height},293261:function _($0){Module.canvas.style.cursor=UTF8ToString($0)},293310:function _(){Module.canvas.style.cursor="none"},293347:function _(){return Module.__defosjs_mouse_x},293383:function _(){return Module.__defosjs_mouse_y},293419:function _($0){Module.canvas.style.cursor=UTF8ToString($0)},293468:function _($0){var jsResult;var isSuccess=1;try{jsResult=eval(UTF8ToString($0))}catch(err){isSuccess=0;jsResult=err}_dmScript_Html5ReportOperationSuccess(isSuccess);jsResult+="";var stringOnWasmHeap=stringToNewUTF8(jsResult);return stringOnWasmHeap},293736:function _(){document.removeEventListener("click",Module.__defold_interaction_listener);document.removeEventListener("keyup",Module.__defold_interaction_listener);document.removeEventListener("touchend",Module.__defold_interaction_listener);Module.__defold_interaction_listener=undefined},294024:function _(){Module.__defold_interaction_listener=function(){_dmScript_RunInteractionCallback()};document.addEventListener("click",Module.__defold_interaction_listener);document.addEventListener("keyup",Module.__defold_interaction_listener);document.addEventListener("touchend",Module.__defold_interaction_listener)},294345:function _($0){Module.printErr(UTF8ToString($0))},294384:function _($0){Module.print(UTF8ToString($0))}};function defos_set_cursor_locked_(locked){if(locked){(Module.canvas.requestPointerLock||Module.canvas.mozRequestPointerLock||Module.canvas.webkitRequestPointerLock||Module.canvas.msRequestPointerLock||function(){}).call(Module.canvas)}else{(document.exitPointerLock||document.mozExitPointerLock||document.webkitExitPointerLock||document.msExitPointerLock||function(){}).call(document)}}function ExitStatus(status){this.name="ExitStatus";this.message="Program terminated with exit(".concat(status,")");this.status=status}var callRuntimeCallbacks=function callRuntimeCallbacks(callbacks){while(callbacks.length>0){callbacks.shift()(Module)}};function getValue(ptr){var type=arguments.length>1&&arguments[1]!==undefined?arguments[1]:"i8";if(type.endsWith("*"))type="*";switch(type){case"i1":return HEAP8[ptr];case"i8":return HEAP8[ptr];case"i16":return HEAP16[ptr>>1];case"i32":return HEAP32[ptr>>2];case"i64":abort("to do getValue(i64) use WASM_BIGINT");case"float":return HEAPF32[ptr>>2];case"double":return HEAPF64[ptr>>3];case"*":return HEAPU32[ptr>>2];default:abort("invalid type for getValue: ".concat(type))}}var noExitRuntime=Module["noExitRuntime"]||true;function setValue(ptr,value){var type=arguments.length>2&&arguments[2]!==undefined?arguments[2]:"i8";if(type.endsWith("*"))type="*";switch(type){case"i1":HEAP8[ptr]=value;break;case"i8":HEAP8[ptr]=value;break;case"i16":HEAP16[ptr>>1]=value;break;case"i32":HEAP32[ptr>>2]=value;break;case"i64":abort("to do setValue(i64) use WASM_BIGINT");case"float":HEAPF32[ptr>>2]=value;break;case"double":HEAPF64[ptr>>3]=value;break;case"*":HEAPU32[ptr>>2]=value;break;default:abort("invalid type for setValue: ".concat(type))}}var stackRestore=function stackRestore(val){return _emscripten_stack_restore(val)};var stackSave=function stackSave(){return _emscripten_stack_get_current2()};var UTF8Decoder=typeof TextDecoder!="undefined"?new TextDecoder:undefined;var UTF8ArrayToString=function UTF8ArrayToString(heapOrArray,idx,maxBytesToRead){var endIdx=idx+maxBytesToRead;var endPtr=idx;while(heapOrArray[endPtr]&&!(endPtr>=endIdx))++endPtr;if(endPtr-idx>16&&heapOrArray.buffer&&UTF8Decoder){return UTF8Decoder.decode(heapOrArray.subarray(idx,endPtr))}var str="";while(idx>10,56320|ch&1023)}}return str};var UTF8ToString=function UTF8ToString(ptr,maxBytesToRead){return ptr?UTF8ArrayToString(HEAPU8,ptr,maxBytesToRead):""};var ___assert_fail=function ___assert_fail(condition,filename,line,func){abort("Assertion failed: ".concat(UTF8ToString(condition),", at: ")+[filename?UTF8ToString(filename):"unknown filename",line,func?UTF8ToString(func):"unknown function"])};var PATH={isAbs:function isAbs(path){return path.charAt(0)==="/"},splitPath:function splitPath(filename){var splitPathRe=/^(\/?|)([\s\S]*?)((?:\.{1,2}|[^\/]+?|)(\.[^.\/]*|))(?:[\/]*)$/;return splitPathRe.exec(filename).slice(1)},normalizeArray:function normalizeArray(parts,allowAboveRoot){var up=0;for(var i=parts.length-1;i>=0;i--){var last=parts[i];if(last==="."){parts.splice(i,1)}else if(last===".."){parts.splice(i,1);up++}else if(up){parts.splice(i,1);up--}}if(allowAboveRoot){for(;up;up--){parts.unshift("..")}}return parts},normalize:function normalize(path){var isAbsolute=PATH.isAbs(path),trailingSlash=path.substr(-1)==="/";path=PATH.normalizeArray(path.split("/").filter(function(p){return!!p}),!isAbsolute).join("/");if(!path&&!isAbsolute){path="."}if(path&&trailingSlash){path+="/"}return(isAbsolute?"/":"")+path},dirname:function dirname(path){var result=PATH.splitPath(path),root=result[0],dir=result[1];if(!root&&!dir){return"."}if(dir){dir=dir.substr(0,dir.length-1)}return root+dir},basename:function basename(path){if(path==="/")return"/";path=PATH.normalize(path);path=path.replace(/\/$/,"");var lastSlash=path.lastIndexOf("/");if(lastSlash===-1)return path;return path.substr(lastSlash+1)},join:function join(){for(var _len=arguments.length,paths=new Array(_len),_key=0;_key<_len;_key++){paths[_key]=arguments[_key]}return PATH.normalize(paths.join("/"))},join2:function join2(l,r){return PATH.normalize(l+"/"+r)}};var initRandomFill=function initRandomFill(){if((typeof crypto==="undefined"?"undefined":_typeof(crypto))=="object"&&typeof crypto["getRandomValues"]=="function"){return function(view){return crypto.getRandomValues(view)}}else if(ENVIRONMENT_IS_NODE){try{var crypto_module=require("crypto");var randomFillSync=crypto_module["randomFillSync"];if(randomFillSync){return function(view){return crypto_module["randomFillSync"](view)}}var randomBytes=crypto_module["randomBytes"];return function(view){return view.set(randomBytes(view.byteLength)),view}}catch(e){}}abort("initRandomDevice")};var _randomFill=function randomFill(view){return(_randomFill=initRandomFill())(view)};var PATH_FS={resolve:function resolve(){var resolvedPath="",resolvedAbsolute=false;for(var i=arguments.length-1;i>=-1&&!resolvedAbsolute;i--){var path=i>=0?i<0||arguments.length<=i?undefined:arguments[i]:FS.cwd();if(typeof path!="string"){throw new TypeError("Arguments to path.resolve must be strings")}else if(!path){return""}resolvedPath=path+"/"+resolvedPath;resolvedAbsolute=PATH.isAbs(path)}resolvedPath=PATH.normalizeArray(resolvedPath.split("/").filter(function(p){return!!p}),!resolvedAbsolute).join("/");return(resolvedAbsolute?"/":"")+resolvedPath||"."},relative:function relative(from,to){from=PATH_FS.resolve(from).substr(1);to=PATH_FS.resolve(to).substr(1);function trim(arr){var start=0;for(;start=0;end--){if(arr[end]!=="")break}if(start>end)return[];return arr.slice(start,end-start+1)}var fromParts=trim(from.split("/"));var toParts=trim(to.split("/"));var length=Math.min(fromParts.length,toParts.length);var samePartsLength=length;for(var i=0;i=55296&&c<=57343){len+=4;++i}else{len+=3}}return len};var stringToUTF8Array=function stringToUTF8Array(str,heap,outIdx,maxBytesToWrite){if(!(maxBytesToWrite>0))return 0;var startIdx=outIdx;var endIdx=outIdx+maxBytesToWrite-1;for(var i=0;i=55296&&u<=57343){var u1=str.charCodeAt(++i);u=65536+((u&1023)<<10)|u1&1023}if(u<=127){if(outIdx>=endIdx)break;heap[outIdx++]=u}else if(u<=2047){if(outIdx+1>=endIdx)break;heap[outIdx++]=192|u>>6;heap[outIdx++]=128|u&63}else if(u<=65535){if(outIdx+2>=endIdx)break;heap[outIdx++]=224|u>>12;heap[outIdx++]=128|u>>6&63;heap[outIdx++]=128|u&63}else{if(outIdx+3>=endIdx)break;heap[outIdx++]=240|u>>18;heap[outIdx++]=128|u>>12&63;heap[outIdx++]=128|u>>6&63;heap[outIdx++]=128|u&63}}heap[outIdx]=0;return outIdx-startIdx};function intArrayFromString(stringy,dontAddNull,length){var len=length>0?length:lengthBytesUTF8(stringy)+1;var u8array=new Array(len);var numBytesWritten=stringToUTF8Array(stringy,u8array,0,u8array.length);if(dontAddNull)u8array.length=numBytesWritten;return u8array}var FS_stdin_getChar=function FS_stdin_getChar(){if(!FS_stdin_getChar_buffer.length){var result=null;if(ENVIRONMENT_IS_NODE){var BUFSIZE=256;var buf=Buffer.alloc(BUFSIZE);var bytesRead=0;var fd=process.stdin.fd;try{bytesRead=fs.readSync(fd,buf,0,BUFSIZE)}catch(e){if(e.toString().includes("EOF"))bytesRead=0;else throw e}if(bytesRead>0){result=buf.slice(0,bytesRead).toString("utf-8")}}else if(typeof window!="undefined"&&typeof window.prompt=="function"){result=window.prompt("Input: ");if(result!==null){result+="\n"}}else{}if(!result){return null}FS_stdin_getChar_buffer=intArrayFromString(result,true)}return FS_stdin_getChar_buffer.shift()};var TTY={ttys:[],init:function init(){},shutdown:function shutdown(){},register:function register(dev,ops){TTY.ttys[dev]={input:[],output:[],ops:ops};FS.registerDevice(dev,TTY.stream_ops)},stream_ops:{open:function open(stream){var tty=TTY.ttys[stream.node.rdev];if(!tty){throw new FS.ErrnoError(43)}stream.tty=tty;stream.seekable=false},close:function close(stream){stream.tty.ops.fsync(stream.tty)},fsync:function fsync(stream){stream.tty.ops.fsync(stream.tty)},read:function read(stream,buffer,offset,length,pos){if(!stream.tty||!stream.tty.ops.get_char){throw new FS.ErrnoError(60)}var bytesRead=0;for(var i=0;i0){out(UTF8ArrayToString(tty.output,0));tty.output=[]}},ioctl_tcgets:function ioctl_tcgets(tty){return{c_iflag:25856,c_oflag:5,c_cflag:191,c_lflag:35387,c_cc:[3,28,127,21,4,0,1,0,17,19,26,0,18,15,23,22,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0]}},ioctl_tcsets:function ioctl_tcsets(tty,optional_actions,data){return 0},ioctl_tiocgwinsz:function ioctl_tiocgwinsz(tty){return[24,80]}},default_tty1_ops:{put_char:function put_char(tty,val){if(val===null||val===10){err(UTF8ArrayToString(tty.output,0));tty.output=[]}else{if(val!=0)tty.output.push(val)}},fsync:function fsync(tty){if(tty.output&&tty.output.length>0){err(UTF8ArrayToString(tty.output,0));tty.output=[]}}}};var zeroMemory=function zeroMemory(address,size){if(!HEAPU8.fill){for(var i=0;i=newCapacity)return;var CAPACITY_DOUBLING_MAX=1024*1024;newCapacity=Math.max(newCapacity,prevCapacity*(prevCapacity>>0);if(prevCapacity!=0)newCapacity=Math.max(newCapacity,256);var oldContents=node.contents;node.contents=new Uint8Array(newCapacity);if(node.usedBytes>0)node.contents.set(oldContents.subarray(0,node.usedBytes),0)},resizeFileStorage:function resizeFileStorage(node,newSize){if(node.usedBytes==newSize)return;if(newSize==0){node.contents=null;node.usedBytes=0}else{var oldContents=node.contents;node.contents=new Uint8Array(newSize);if(oldContents){node.contents.set(oldContents.subarray(0,Math.min(newSize,node.usedBytes)))}node.usedBytes=newSize}},node_ops:{getattr:function getattr(node){var attr={};attr.dev=FS.isChrdev(node.mode)?node.id:1;attr.ino=node.id;attr.mode=node.mode;attr.nlink=1;attr.uid=0;attr.gid=0;attr.rdev=node.rdev;if(FS.isDir(node.mode)){attr.size=4096}else if(FS.isFile(node.mode)){attr.size=node.usedBytes}else if(FS.isLink(node.mode)){attr.size=node.link.length}else{attr.size=0}attr.atime=new Date(node.timestamp);attr.mtime=new Date(node.timestamp);attr.ctime=new Date(node.timestamp);attr.blksize=4096;attr.blocks=Math.ceil(attr.size/attr.blksize);return attr},setattr:function setattr(node,attr){if(attr.mode!==undefined){node.mode=attr.mode}if(attr.timestamp!==undefined){node.timestamp=attr.timestamp}if(attr.size!==undefined){MEMFS.resizeFileStorage(node,attr.size)}},lookup:function lookup(parent,name){throw FS.genericErrors[44]},mknod:function mknod(parent,name,mode,dev){return MEMFS.createNode(parent,name,mode,dev)},rename:function rename(old_node,new_dir,new_name){if(FS.isDir(old_node.mode)){var new_node;try{new_node=FS.lookupNode(new_dir,new_name)}catch(e){}if(new_node){for(var i in new_node.contents){throw new FS.ErrnoError(55)}}}delete old_node.parent.contents[old_node.name];old_node.parent.timestamp=Date.now();old_node.name=new_name;new_dir.contents[new_name]=old_node;new_dir.timestamp=old_node.parent.timestamp},unlink:function unlink(parent,name){delete parent.contents[name];parent.timestamp=Date.now()},rmdir:function rmdir(parent,name){var node=FS.lookupNode(parent,name);for(var i in node.contents){throw new FS.ErrnoError(55)}delete parent.contents[name];parent.timestamp=Date.now()},readdir:function readdir(node){var entries=[".",".."];for(var _i2=0,_Object$keys=Object.keys(node.contents);_i2<_Object$keys.length;_i2++){var key=_Object$keys[_i2];entries.push(key)}return entries},symlink:function symlink(parent,newname,oldpath){var node=MEMFS.createNode(parent,newname,511|40960,0);node.link=oldpath;return node},readlink:function readlink(node){if(!FS.isLink(node.mode)){throw new FS.ErrnoError(28)}return node.link}},stream_ops:{read:function read(stream,buffer,offset,length,position){var contents=stream.node.contents;if(position>=stream.node.usedBytes)return 0;var size=Math.min(stream.node.usedBytes-position,length);if(size>8&&contents.subarray){buffer.set(contents.subarray(position,position+size),offset)}else{for(var i=0;i0||position+length1&&arguments[1]!==undefined?arguments[1]:{};path=PATH_FS.resolve(path);if(!path)return{path:"",node:null};var defaults={follow_mount:true,recurse_count:0};opts=Object.assign(defaults,opts);if(opts.recurse_count>8){throw new FS.ErrnoError(32)}var parts=path.split("/").filter(function(p){return!!p});var current=FS.root;var current_path="/";for(var i=0;i40){throw new FS.ErrnoError(32)}}}}return{path:current_path,node:current}},getPath:function getPath(node){var path;while(true){if(FS.isRoot(node)){var mount=node.mount.mountpoint;if(!path)return mount;return mount[mount.length-1]!=="/"?"".concat(mount,"/").concat(path):mount+path}path=path?"".concat(node.name,"/").concat(path):node.name;node=node.parent}},hashName:function hashName(parentid,name){var hash=0;for(var i=0;i>>0)%FS.nameTable.length},hashAddNode:function hashAddNode(node){var hash=FS.hashName(node.parent.id,node.name);node.name_next=FS.nameTable[hash];FS.nameTable[hash]=node},hashRemoveNode:function hashRemoveNode(node){var hash=FS.hashName(node.parent.id,node.name);if(FS.nameTable[hash]===node){FS.nameTable[hash]=node.name_next}else{var current=FS.nameTable[hash];while(current){if(current.name_next===node){current.name_next=node.name_next;break}current=current.name_next}}},lookupNode:function lookupNode(parent,name){var errCode=FS.mayLookup(parent);if(errCode){throw new FS.ErrnoError(errCode)}var hash=FS.hashName(parent.id,name);for(var node=FS.nameTable[hash];node;node=node.name_next){var nodeName=node.name;if(node.parent.id===parent.id&&nodeName===name){return node}}return FS.lookup(parent,name)},createNode:function createNode(parent,name,mode,rdev){var node=new FS.FSNode(parent,name,mode,rdev);FS.hashAddNode(node);return node},destroyNode:function destroyNode(node){FS.hashRemoveNode(node)},isRoot:function isRoot(node){return node===node.parent},isMountpoint:function isMountpoint(node){return!!node.mounted},isFile:function isFile(mode){return(mode&61440)===32768},isDir:function isDir(mode){return(mode&61440)===16384},isLink:function isLink(mode){return(mode&61440)===40960},isChrdev:function isChrdev(mode){return(mode&61440)===8192},isBlkdev:function isBlkdev(mode){return(mode&61440)===24576},isFIFO:function isFIFO(mode){return(mode&61440)===4096},isSocket:function isSocket(mode){return(mode&49152)===49152},flagsToPermissionString:function flagsToPermissionString(flag){var perms=["r","w","rw"][flag&3];if(flag&512){perms+="w"}return perms},nodePermissions:function nodePermissions(node,perms){if(FS.ignorePermissions){return 0}if(perms.includes("r")&&!(node.mode&292)){return 2}else if(perms.includes("w")&&!(node.mode&146)){return 2}else if(perms.includes("x")&&!(node.mode&73)){return 2}return 0},mayLookup:function mayLookup(dir){if(!FS.isDir(dir.mode))return 54;var errCode=FS.nodePermissions(dir,"x");if(errCode)return errCode;if(!dir.node_ops.lookup)return 2;return 0},mayCreate:function mayCreate(dir,name){try{var node=FS.lookupNode(dir,name);return 20}catch(e){}return FS.nodePermissions(dir,"wx")},mayDelete:function mayDelete(dir,name,isdir){var node;try{node=FS.lookupNode(dir,name)}catch(e){return e.errno}var errCode=FS.nodePermissions(dir,"wx");if(errCode){return errCode}if(isdir){if(!FS.isDir(node.mode)){return 54}if(FS.isRoot(node)||FS.getPath(node)===FS.cwd()){return 10}}else{if(FS.isDir(node.mode)){return 31}}return 0},mayOpen:function mayOpen(node,flags){if(!node){return 44}if(FS.isLink(node.mode)){return 32}else if(FS.isDir(node.mode)){if(FS.flagsToPermissionString(flags)!=="r"||flags&512){return 31}}return FS.nodePermissions(node,FS.flagsToPermissionString(flags))},MAX_OPEN_FDS:4096,nextfd:function nextfd(){for(var fd=0;fd<=FS.MAX_OPEN_FDS;fd++){if(!FS.streams[fd]){return fd}}throw new FS.ErrnoError(33)},getStreamChecked:function getStreamChecked(fd){var stream=FS.getStream(fd);if(!stream){throw new FS.ErrnoError(8)}return stream},getStream:function getStream(fd){return FS.streams[fd]},createStream:function createStream(stream){var fd=arguments.length>1&&arguments[1]!==undefined?arguments[1]:-1;stream=Object.assign(new FS.FSStream,stream);if(fd==-1){fd=FS.nextfd()}stream.fd=fd;FS.streams[fd]=stream;return stream},closeStream:function closeStream(fd){FS.streams[fd]=null},dupStream:function dupStream(origStream){var _stream$stream_ops,_stream$stream_ops$du;var fd=arguments.length>1&&arguments[1]!==undefined?arguments[1]:-1;var stream=FS.createStream(origStream,fd);(_stream$stream_ops=stream.stream_ops)===null||_stream$stream_ops===void 0||(_stream$stream_ops$du=_stream$stream_ops.dup)===null||_stream$stream_ops$du===void 0||_stream$stream_ops$du.call(_stream$stream_ops,stream);return stream},chrdev_stream_ops:{open:function open(stream){var _stream$stream_ops$op,_stream$stream_ops2;var device=FS.getDevice(stream.node.rdev);stream.stream_ops=device.stream_ops;(_stream$stream_ops$op=(_stream$stream_ops2=stream.stream_ops).open)===null||_stream$stream_ops$op===void 0||_stream$stream_ops$op.call(_stream$stream_ops2,stream)},llseek:function llseek(){throw new FS.ErrnoError(70)}},major:function major(dev){return dev>>8},minor:function minor(dev){return dev&255},makedev:function makedev(ma,mi){return ma<<8|mi},registerDevice:function registerDevice(dev,ops){FS.devices[dev]={stream_ops:ops}},getDevice:function getDevice(dev){return FS.devices[dev]},getMounts:function getMounts(mount){var mounts=[];var check=[mount];while(check.length){var m=check.pop();mounts.push(m);check.push.apply(check,_toConsumableArray(m.mounts))}return mounts},syncfs:function syncfs(populate,callback){if(typeof populate=="function"){callback=populate;populate=false}FS.syncFSRequests++;if(FS.syncFSRequests>1){err("warning: ".concat(FS.syncFSRequests," FS.syncfs operations in flight at once, probably just doing extra work"))}var mounts=FS.getMounts(FS.root.mount);var completed=0;function doCallback(errCode){FS.syncFSRequests--;return callback(errCode)}function done(errCode){if(errCode){if(!done.errored){done.errored=true;return doCallback(errCode)}return}if(++completed>=mounts.length){doCallback(null)}}mounts.forEach(function(mount){if(!mount.type.syncfs){return done(null)}mount.type.syncfs(mount,populate,done)})},mount:function mount(type,opts,mountpoint){var root=mountpoint==="/";var pseudo=!mountpoint;var node;if(root&&FS.root){throw new FS.ErrnoError(10)}else if(!root&&!pseudo){var lookup=FS.lookupPath(mountpoint,{follow_mount:false});mountpoint=lookup.path;node=lookup.node;if(FS.isMountpoint(node)){throw new FS.ErrnoError(10)}if(!FS.isDir(node.mode)){throw new FS.ErrnoError(54)}}var mount={type:type,opts:opts,mountpoint:mountpoint,mounts:[]};var mountRoot=type.mount(mount);mountRoot.mount=mount;mount.root=mountRoot;if(root){FS.root=mountRoot}else if(node){node.mounted=mount;if(node.mount){node.mount.mounts.push(mount)}}return mountRoot},unmount:function unmount(mountpoint){var lookup=FS.lookupPath(mountpoint,{follow_mount:false});if(!FS.isMountpoint(lookup.node)){throw new FS.ErrnoError(28)}var node=lookup.node;var mount=node.mounted;var mounts=FS.getMounts(mount);Object.keys(FS.nameTable).forEach(function(hash){var current=FS.nameTable[hash];while(current){var next=current.name_next;if(mounts.includes(current.mount)){FS.destroyNode(current)}current=next}});node.mounted=null;var idx=node.mount.mounts.indexOf(mount);node.mount.mounts.splice(idx,1)},lookup:function lookup(parent,name){return parent.node_ops.lookup(parent,name)},mknod:function mknod(path,mode,dev){var lookup=FS.lookupPath(path,{parent:true});var parent=lookup.node;var name=PATH.basename(path);if(!name||name==="."||name===".."){throw new FS.ErrnoError(28)}var errCode=FS.mayCreate(parent,name);if(errCode){throw new FS.ErrnoError(errCode)}if(!parent.node_ops.mknod){throw new FS.ErrnoError(63)}return parent.node_ops.mknod(parent,name,mode,dev)},create:function create(path,mode){mode=mode!==undefined?mode:438;mode&=4095;mode|=32768;return FS.mknod(path,mode,0)},mkdir:function mkdir(path,mode){mode=mode!==undefined?mode:511;mode&=511|512;mode|=16384;return FS.mknod(path,mode,0)},mkdirTree:function mkdirTree(path,mode){var dirs=path.split("/");var d="";for(var i=0;i1&&arguments[1]!==undefined?arguments[1]:{};opts.flags=opts.flags||0;opts.encoding=opts.encoding||"binary";if(opts.encoding!=="utf8"&&opts.encoding!=="binary"){throw new Error('Invalid encoding type "'.concat(opts.encoding,'"'))}var ret;var stream=FS.open(path,opts.flags);var stat=FS.stat(path);var length=stat.size;var buf=new Uint8Array(length);FS.read(stream,buf,0,length,0);if(opts.encoding==="utf8"){ret=UTF8ArrayToString(buf,0)}else if(opts.encoding==="binary"){ret=buf}FS.close(stream);return ret},writeFile:function writeFile(path,data){var opts=arguments.length>2&&arguments[2]!==undefined?arguments[2]:{};opts.flags=opts.flags||577;var stream=FS.open(path,opts.flags,opts.mode);if(typeof data=="string"){var buf=new Uint8Array(lengthBytesUTF8(data)+1);var actualNumBytes=stringToUTF8Array(data,buf,0,buf.length);FS.write(stream,buf,0,actualNumBytes,undefined,opts.canOwn)}else if(ArrayBuffer.isView(data)){FS.write(stream,data,0,data.byteLength,undefined,opts.canOwn)}else{throw new Error("Unsupported data type")}FS.close(stream)},cwd:function cwd(){return FS.currentPath},chdir:function chdir(path){var lookup=FS.lookupPath(path,{follow:true});if(lookup.node===null){throw new FS.ErrnoError(44)}if(!FS.isDir(lookup.node.mode)){throw new FS.ErrnoError(54)}var errCode=FS.nodePermissions(lookup.node,"x");if(errCode){throw new FS.ErrnoError(errCode)}FS.currentPath=lookup.path},createDefaultDirectories:function createDefaultDirectories(){FS.mkdir("/tmp");FS.mkdir("/home");FS.mkdir("/home/web_user")},createDefaultDevices:function createDefaultDevices(){FS.mkdir("/dev");FS.registerDevice(FS.makedev(1,3),{read:function read(){return 0},write:function write(stream,buffer,offset,length,pos){return length}});FS.mkdev("/dev/null",FS.makedev(1,3));TTY.register(FS.makedev(5,0),TTY.default_tty_ops);TTY.register(FS.makedev(6,0),TTY.default_tty1_ops);FS.mkdev("/dev/tty",FS.makedev(5,0));FS.mkdev("/dev/tty1",FS.makedev(6,0));var randomBuffer=new Uint8Array(1024),randomLeft=0;var randomByte=function randomByte(){if(randomLeft===0){randomLeft=_randomFill(randomBuffer).byteLength}return randomBuffer[--randomLeft]};FS.createDevice("/dev","random",randomByte);FS.createDevice("/dev","urandom",randomByte);FS.mkdir("/dev/shm");FS.mkdir("/dev/shm/tmp")},createSpecialDirectories:function createSpecialDirectories(){FS.mkdir("/proc");var proc_self=FS.mkdir("/proc/self");FS.mkdir("/proc/self/fd");FS.mount({mount:function mount(){var node=FS.createNode(proc_self,"fd",16384|511,73);node.node_ops={lookup:function lookup(parent,name){var fd=+name;var stream=FS.getStreamChecked(fd);var ret={parent:null,mount:{mountpoint:"fake"},node_ops:{readlink:function readlink(){return stream.path}}};ret.parent=ret;return ret}};return node}},{},"/proc/self/fd")},createStandardStreams:function createStandardStreams(input,output,error){if(input){FS.createDevice("/dev","stdin",input)}else{FS.symlink("/dev/tty","/dev/stdin")}if(output){FS.createDevice("/dev","stdout",null,output)}else{FS.symlink("/dev/tty","/dev/stdout")}if(error){FS.createDevice("/dev","stderr",null,error)}else{FS.symlink("/dev/tty1","/dev/stderr")}var stdin=FS.open("/dev/stdin",0);var stdout=FS.open("/dev/stdout",1);var stderr=FS.open("/dev/stderr",1)},staticInit:function staticInit(){[44].forEach(function(code){FS.genericErrors[code]=new FS.ErrnoError(code);FS.genericErrors[code].stack=""});FS.nameTable=new Array(4096);FS.mount(MEMFS,{},"/");FS.createDefaultDirectories();FS.createDefaultDevices();FS.createSpecialDirectories();FS.filesystems={MEMFS:MEMFS,IDBFS:IDBFS}},init:function init(input,output,error){var _input,_output,_error;FS.initialized=true;(_input=input)!==null&&_input!==void 0?_input:input=Module["stdin"];(_output=output)!==null&&_output!==void 0?_output:output=Module["stdout"];(_error=error)!==null&&_error!==void 0?_error:error=Module["stderr"];FS.createStandardStreams(input,output,error)},quit:function quit(){FS.initialized=false;for(var i=0;ithis.length-1||idx<0){return undefined}var chunkOffset=idx%this.chunkSize;var chunkNum=idx/this.chunkSize|0;return this.getter(chunkNum)[chunkOffset]}},{key:"setDataGetter",value:function setDataGetter(getter){this.getter=getter}},{key:"cacheLength",value:function cacheLength(){var xhr=new XMLHttpRequest;xhr.open("HEAD",url,false);xhr.send(null);if(!(xhr.status>=200&&xhr.status<300||xhr.status===304))throw new Error("Couldn't load "+url+". Status: "+xhr.status);var datalength=Number(xhr.getResponseHeader("Content-length"));var header;var hasByteServing=(header=xhr.getResponseHeader("Accept-Ranges"))&&header==="bytes";var usesGzip=(header=xhr.getResponseHeader("Content-Encoding"))&&header==="gzip";var chunkSize=1024*1024;if(!hasByteServing)chunkSize=datalength;var doXHR=function doXHR(from,to){if(from>to)throw new Error("invalid range ("+from+", "+to+") or no bytes requested!");if(to>datalength-1)throw new Error("only "+datalength+" bytes available! programmer error!");var xhr=new XMLHttpRequest;xhr.open("GET",url,false);if(datalength!==chunkSize)xhr.setRequestHeader("Range","bytes="+from+"-"+to);xhr.responseType="arraybuffer";if(xhr.overrideMimeType){xhr.overrideMimeType("text/plain; charset=x-user-defined")}xhr.send(null);if(!(xhr.status>=200&&xhr.status<300||xhr.status===304))throw new Error("Couldn't load "+url+". Status: "+xhr.status);if(xhr.response!==undefined){return new Uint8Array(xhr.response||[])}return intArrayFromString(xhr.responseText||"",true)};var lazyArray=this;lazyArray.setDataGetter(function(chunkNum){var start=chunkNum*chunkSize;var end=(chunkNum+1)*chunkSize-1;end=Math.min(end,datalength-1);if(typeof lazyArray.chunks[chunkNum]=="undefined"){lazyArray.chunks[chunkNum]=doXHR(start,end)}if(typeof lazyArray.chunks[chunkNum]=="undefined")throw new Error("doXHR failed!");return lazyArray.chunks[chunkNum]});if(usesGzip||!datalength){chunkSize=datalength=1;datalength=this.getter(0).length;chunkSize=datalength;out("LazyFiles on gzip forces download of the whole file when length is accessed")}this._length=datalength;this._chunkSize=chunkSize;this.lengthKnown=true}},{key:"length",get:function get(){if(!this.lengthKnown){this.cacheLength()}return this._length}},{key:"chunkSize",get:function get(){if(!this.lengthKnown){this.cacheLength()}return this._chunkSize}}])}();if(typeof XMLHttpRequest!="undefined"){if(!ENVIRONMENT_IS_WORKER)throw"Cannot do synchronous binary XHRs outside webworkers in modern browsers. Use --embed-file or --preload-file in emcc";var lazyArray=new LazyUint8Array;var properties={isDevice:false,contents:lazyArray}}else{var properties={isDevice:false,url:url}}var node=FS.createFile(parent,name,properties,canRead,canWrite);if(properties.contents){node.contents=properties.contents}else if(properties.url){node.contents=null;node.url=properties.url}Object.defineProperties(node,{usedBytes:{get:function get(){return this.contents.length}}});var stream_ops={};var keys=Object.keys(node.stream_ops);keys.forEach(function(key){var fn=node.stream_ops[key];stream_ops[key]=function(){FS.forceLoadFile(node);return fn.apply(void 0,arguments)}});function writeChunks(stream,buffer,offset,length,position){var contents=stream.node.contents;if(position>=contents.length)return 0;var size=Math.min(contents.length-position,length);if(contents.slice){for(var i=0;i>2]=stat.dev;HEAP32[buf+4>>2]=stat.mode;HEAPU32[buf+8>>2]=stat.nlink;HEAP32[buf+12>>2]=stat.uid;HEAP32[buf+16>>2]=stat.gid;HEAP32[buf+20>>2]=stat.rdev;tempI64=[stat.size>>>0,(tempDouble=stat.size,+Math.abs(tempDouble)>=1?tempDouble>0?+Math.floor(tempDouble/4294967296)>>>0:~~+Math.ceil((tempDouble-+(~~tempDouble>>>0))/4294967296)>>>0:0)],HEAP32[buf+24>>2]=tempI64[0],HEAP32[buf+28>>2]=tempI64[1];HEAP32[buf+32>>2]=4096;HEAP32[buf+36>>2]=stat.blocks;var atime=stat.atime.getTime();var mtime=stat.mtime.getTime();var ctime=stat.ctime.getTime();tempI64=[Math.floor(atime/1e3)>>>0,(tempDouble=Math.floor(atime/1e3),+Math.abs(tempDouble)>=1?tempDouble>0?+Math.floor(tempDouble/4294967296)>>>0:~~+Math.ceil((tempDouble-+(~~tempDouble>>>0))/4294967296)>>>0:0)],HEAP32[buf+40>>2]=tempI64[0],HEAP32[buf+44>>2]=tempI64[1];HEAPU32[buf+48>>2]=atime%1e3*1e3;tempI64=[Math.floor(mtime/1e3)>>>0,(tempDouble=Math.floor(mtime/1e3),+Math.abs(tempDouble)>=1?tempDouble>0?+Math.floor(tempDouble/4294967296)>>>0:~~+Math.ceil((tempDouble-+(~~tempDouble>>>0))/4294967296)>>>0:0)],HEAP32[buf+56>>2]=tempI64[0],HEAP32[buf+60>>2]=tempI64[1];HEAPU32[buf+64>>2]=mtime%1e3*1e3;tempI64=[Math.floor(ctime/1e3)>>>0,(tempDouble=Math.floor(ctime/1e3),+Math.abs(tempDouble)>=1?tempDouble>0?+Math.floor(tempDouble/4294967296)>>>0:~~+Math.ceil((tempDouble-+(~~tempDouble>>>0))/4294967296)>>>0:0)],HEAP32[buf+72>>2]=tempI64[0],HEAP32[buf+76>>2]=tempI64[1];HEAPU32[buf+80>>2]=ctime%1e3*1e3;tempI64=[stat.ino>>>0,(tempDouble=stat.ino,+Math.abs(tempDouble)>=1?tempDouble>0?+Math.floor(tempDouble/4294967296)>>>0:~~+Math.ceil((tempDouble-+(~~tempDouble>>>0))/4294967296)>>>0:0)],HEAP32[buf+88>>2]=tempI64[0],HEAP32[buf+92>>2]=tempI64[1];return 0},doMsync:function doMsync(addr,stream,len,flags,offset){if(!FS.isFile(stream.node.mode)){throw new FS.ErrnoError(43)}if(flags&2){return 0}var buffer=HEAPU8.slice(addr,addr+len);FS.msync(stream,buffer,offset,len,flags)},getStreamFromFD:function getStreamFromFD(fd){var stream=FS.getStreamChecked(fd);return stream},varargs:undefined,getStr:function getStr(ptr){var ret=UTF8ToString(ptr);return ret}};function ___syscall__newselect(nfds,readfds,writefds,exceptfds,timeout){try{var total=0;var srcReadLow=readfds?HEAP32[readfds>>2]:0,srcReadHigh=readfds?HEAP32[readfds+4>>2]:0;var srcWriteLow=writefds?HEAP32[writefds>>2]:0,srcWriteHigh=writefds?HEAP32[writefds+4>>2]:0;var srcExceptLow=exceptfds?HEAP32[exceptfds>>2]:0,srcExceptHigh=exceptfds?HEAP32[exceptfds+4>>2]:0;var dstReadLow=0,dstReadHigh=0;var dstWriteLow=0,dstWriteHigh=0;var dstExceptLow=0,dstExceptHigh=0;var allLow=(readfds?HEAP32[readfds>>2]:0)|(writefds?HEAP32[writefds>>2]:0)|(exceptfds?HEAP32[exceptfds>>2]:0);var allHigh=(readfds?HEAP32[readfds+4>>2]:0)|(writefds?HEAP32[writefds+4>>2]:0)|(exceptfds?HEAP32[exceptfds+4>>2]:0);var check=function check(fd,low,high,val){return fd<32?low&val:high&val};for(var fd=0;fd>2]:0,tv_usec=readfds?HEAP32[timeout+4>>2]:0;timeoutInMillis=(tv_sec+tv_usec/1e6)*1e3}flags=stream.stream_ops.poll(stream,timeoutInMillis)}if(flags&1&&check(fd,srcReadLow,srcReadHigh,mask)){fd<32?dstReadLow=dstReadLow|mask:dstReadHigh=dstReadHigh|mask;total++}if(flags&4&&check(fd,srcWriteLow,srcWriteHigh,mask)){fd<32?dstWriteLow=dstWriteLow|mask:dstWriteHigh=dstWriteHigh|mask;total++}if(flags&2&&check(fd,srcExceptLow,srcExceptHigh,mask)){fd<32?dstExceptLow=dstExceptLow|mask:dstExceptHigh=dstExceptHigh|mask;total++}}if(readfds){HEAP32[readfds>>2]=dstReadLow;HEAP32[readfds+4>>2]=dstReadHigh}if(writefds){HEAP32[writefds>>2]=dstWriteLow;HEAP32[writefds+4>>2]=dstWriteHigh}if(exceptfds){HEAP32[exceptfds>>2]=dstExceptLow;HEAP32[exceptfds+4>>2]=dstExceptHigh}return total}catch(e){if(typeof FS=="undefined"||!(e.name==="ErrnoError"))throw e;return-e.errno}}var SOCKFS={mount:function mount(_mount3){Module["websocket"]=Module["websocket"]&&"object"===_typeof(Module["websocket"])?Module["websocket"]:{};Module["websocket"]._callbacks={};Module["websocket"]["on"]=function(event,callback){if("function"===typeof callback){this._callbacks[event]=callback}return this};Module["websocket"].emit=function(event,param){if("function"===typeof this._callbacks[event]){this._callbacks[event].call(this,param)}};return FS.createNode(null,"/",16384|511,0)},createSocket:function createSocket(family,type,protocol){type&=~526336;var streaming=type==1;if(streaming&&protocol&&protocol!=6){throw new FS.ErrnoError(66)}var sock={family:family,type:type,protocol:protocol,server:null,error:null,peers:{},pending:[],recv_queue:[],sock_ops:SOCKFS.websocket_sock_ops};var name=SOCKFS.nextname();var node=FS.createNode(SOCKFS.root,name,49152,0);node.sock=sock;var stream=FS.createStream({path:name,node:node,flags:2,seekable:false,stream_ops:SOCKFS.stream_ops});sock.stream=stream;return sock},getSocket:function getSocket(fd){var stream=FS.getStream(fd);if(!stream||!FS.isSocket(stream.node.mode)){return null}return stream.node.sock},stream_ops:{poll:function poll(stream){var sock=stream.node.sock;return sock.sock_ops.poll(sock)},ioctl:function ioctl(stream,request,varargs){var sock=stream.node.sock;return sock.sock_ops.ioctl(sock,request,varargs)},read:function read(stream,buffer,offset,length,position){var sock=stream.node.sock;var msg=sock.sock_ops.recvmsg(sock,length);if(!msg){return 0}buffer.set(msg.buffer,offset);return msg.buffer.length},write:function write(stream,buffer,offset,length,position){var sock=stream.node.sock;return sock.sock_ops.sendmsg(sock,buffer,offset,length)},close:function close(stream){var sock=stream.node.sock;sock.sock_ops.close(sock)}},nextname:function nextname(){if(!SOCKFS.nextname.current){SOCKFS.nextname.current=0}return"socket["+SOCKFS.nextname.current+++"]"},websocket_sock_ops:{createPeer:function createPeer(sock,addr,port){var ws;if(_typeof(addr)=="object"){ws=addr;addr=null;port=null}if(ws){if(ws._socket){addr=ws._socket.remoteAddress;port=ws._socket.remotePort}else{var result=/ws[s]?:\/\/([^:]+):(\d+)/.exec(ws.url);if(!result){throw new Error("WebSocket URL must be in the format ws(s)://address:port")}addr=result[1];port=parseInt(result[2],10)}}else{try{var runtimeConfig=Module["websocket"]&&"object"===_typeof(Module["websocket"]);var url="ws:#".replace("#","//");if(runtimeConfig){if("string"===typeof Module["websocket"]["url"]){url=Module["websocket"]["url"]}}if(url==="ws://"||url==="wss://"){var parts=addr.split("/");url=url+parts[0]+":"+port+"/"+parts.slice(1).join("/")}var subProtocols="binary";if(runtimeConfig){if("string"===typeof Module["websocket"]["subprotocol"]){subProtocols=Module["websocket"]["subprotocol"]}}var opts=undefined;if(subProtocols!=="null"){subProtocols=subProtocols.replace(/^ +| +$/g,"").split(/ *, */);opts=subProtocols}if(runtimeConfig&&null===Module["websocket"]["subprotocol"]){subProtocols="null";opts=undefined}var WebSocketConstructor;if(ENVIRONMENT_IS_NODE){WebSocketConstructor=require("ws")}else{WebSocketConstructor=WebSocket}ws=new WebSocketConstructor(url,opts);ws.binaryType="arraybuffer"}catch(e){throw new FS.ErrnoError(23)}}var peer={addr:addr,port:port,socket:ws,dgram_send_queue:[]};SOCKFS.websocket_sock_ops.addPeer(sock,peer);SOCKFS.websocket_sock_ops.handlePeerEvents(sock,peer);if(sock.type===2&&typeof sock.sport!="undefined"){peer.dgram_send_queue.push(new Uint8Array([255,255,255,255,"p".charCodeAt(0),"o".charCodeAt(0),"r".charCodeAt(0),"t".charCodeAt(0),(sock.sport&65280)>>8,sock.sport&255]))}return peer},getPeer:function getPeer(sock,addr,port){return sock.peers[addr+":"+port]},addPeer:function addPeer(sock,peer){sock.peers[peer.addr+":"+peer.port]=peer},removePeer:function removePeer(sock,peer){delete sock.peers[peer.addr+":"+peer.port]},handlePeerEvents:function handlePeerEvents(sock,peer){var first=true;var handleOpen=function handleOpen(){Module["websocket"].emit("open",sock.stream.fd);try{var queued=peer.dgram_send_queue.shift();while(queued){peer.socket.send(queued);queued=peer.dgram_send_queue.shift()}}catch(e){peer.socket.close()}};function handleMessage(data){if(typeof data=="string"){var encoder=new TextEncoder;data=encoder.encode(data)}else{assert(data.byteLength!==undefined);if(data.byteLength==0){return}data=new Uint8Array(data)}var wasfirst=first;first=false;if(wasfirst&&data.length===10&&data[0]===255&&data[1]===255&&data[2]===255&&data[3]===255&&data[4]==="p".charCodeAt(0)&&data[5]==="o".charCodeAt(0)&&data[6]==="r".charCodeAt(0)&&data[7]==="t".charCodeAt(0)){var newport=data[8]<<8|data[9];SOCKFS.websocket_sock_ops.removePeer(sock,peer);peer.port=newport;SOCKFS.websocket_sock_ops.addPeer(sock,peer);return}sock.recv_queue.push({addr:peer.addr,port:peer.port,data:data});Module["websocket"].emit("message",sock.stream.fd)}if(ENVIRONMENT_IS_NODE){peer.socket.on("open",handleOpen);peer.socket.on("message",function(data,isBinary){if(!isBinary){return}handleMessage(new Uint8Array(data).buffer)});peer.socket.on("close",function(){Module["websocket"].emit("close",sock.stream.fd)});peer.socket.on("error",function(error){sock.error=14;Module["websocket"].emit("error",[sock.stream.fd,sock.error,"ECONNREFUSED: Connection refused"])})}else{peer.socket.onopen=handleOpen;peer.socket.onclose=function(){Module["websocket"].emit("close",sock.stream.fd)};peer.socket.onmessage=function peer_socket_onmessage(event){handleMessage(event.data)};peer.socket.onerror=function(error){sock.error=14;Module["websocket"].emit("error",[sock.stream.fd,sock.error,"ECONNREFUSED: Connection refused"])}}},poll:function poll(sock){if(sock.type===1&&sock.server){return sock.pending.length?64|1:0}var mask=0;var dest=sock.type===1?SOCKFS.websocket_sock_ops.getPeer(sock,sock.daddr,sock.dport):null;if(sock.recv_queue.length||!dest||dest&&dest.socket.readyState===dest.socket.CLOSING||dest&&dest.socket.readyState===dest.socket.CLOSED){mask|=64|1}if(!dest||dest&&dest.socket.readyState===dest.socket.OPEN){mask|=4}if(dest&&dest.socket.readyState===dest.socket.CLOSING||dest&&dest.socket.readyState===dest.socket.CLOSED){mask|=16}return mask},ioctl:function ioctl(sock,request,arg){switch(request){case 21531:var bytes=0;if(sock.recv_queue.length){bytes=sock.recv_queue[0].data.length}HEAP32[arg>>2]=bytes;return 0;default:return 28}},close:function close(sock){if(sock.server){try{sock.server.close()}catch(e){}sock.server=null}var peers=Object.keys(sock.peers);for(var i=0;i>>0};var jstoi_q=function jstoi_q(str){return parseInt(str)};var inetPton6=function inetPton6(str){var words;var w,offset,z;var valid6regx=/^((?=.*::)(?!.*::.+::)(::)?([\dA-F]{1,4}:(:|\b)|){5}|([\dA-F]{1,4}:){6})((([\dA-F]{1,4}((?!\3)::|:\b|$))|(?!\2\3)){2}|(((2[0-4]|1\d|[1-9])?\d|25[0-5])\.?\b){4})$/i;var parts=[];if(!valid6regx.test(str)){return null}if(str==="::"){return[0,0,0,0,0,0,0,0]}if(str.startsWith("::")){str=str.replace("::","Z:")}else{str=str.replace("::",":Z:")}if(str.indexOf(".")>0){str=str.replace(new RegExp("[.]","g"),":");words=str.split(":");words[words.length-4]=jstoi_q(words[words.length-4])+jstoi_q(words[words.length-3])*256;words[words.length-3]=jstoi_q(words[words.length-2])+jstoi_q(words[words.length-1])*256;words=words.slice(0,words.length-2)}else{words=str.split(":")}offset=0;z=0;for(w=0;w>2]=16}HEAP16[sa>>1]=family;HEAP32[sa+4>>2]=addr;HEAP16[sa+2>>1]=_htons2(port);break;case 10:addr=inetPton6(addr);zeroMemory(sa,28);if(addrlen){HEAP32[addrlen>>2]=28}HEAP32[sa>>2]=family;HEAP32[sa+8>>2]=addr[0];HEAP32[sa+12>>2]=addr[1];HEAP32[sa+16>>2]=addr[2];HEAP32[sa+20>>2]=addr[3];HEAP16[sa+2>>1]=_htons2(port);break;default:return 5}return 0};var DNS={address_map:{id:1,addrs:{},names:{}},lookup_name:function lookup_name(name){var res=inetPton4(name);if(res!==null){return name}res=inetPton6(name);if(res!==null){return name}var addr;if(DNS.address_map.addrs[name]){addr=DNS.address_map.addrs[name]}else{var id=DNS.address_map.id++;assert(id<65535,"exceeded max address mappings of 65535");addr="172.29."+(id&255)+"."+(id&65280);DNS.address_map.names[addr]=name;DNS.address_map.addrs[name]=addr}return addr},lookup_addr:function lookup_addr(addr){if(DNS.address_map.names[addr]){return DNS.address_map.names[addr]}return null}};function ___syscall_accept4(fd,addr,addrlen,flags,d1,d2){try{var sock=getSocketFromFD(fd);var newsock=sock.sock_ops.accept(sock);if(addr){var errno=writeSockaddr(addr,newsock.family,DNS.lookup_name(newsock.daddr),newsock.dport,addrlen)}return newsock.stream.fd}catch(e){if(typeof FS=="undefined"||!(e.name==="ErrnoError"))throw e;return-e.errno}}var inetNtop4=function inetNtop4(addr){return(addr&255)+"."+(addr>>8&255)+"."+(addr>>16&255)+"."+(addr>>24&255)};var inetNtop6=function inetNtop6(ints){var str="";var word=0;var longest=0;var lastzero=0;var zstart=0;var len=0;var i=0;var parts=[ints[0]&65535,ints[0]>>16,ints[1]&65535,ints[1]>>16,ints[2]&65535,ints[2]>>16,ints[3]&65535,ints[3]>>16];var hasipv4=true;var v4part="";for(i=0;i<5;i++){if(parts[i]!==0){hasipv4=false;break}}if(hasipv4){v4part=inetNtop4(parts[6]|parts[7]<<16);if(parts[5]===-1){str="::ffff:";str+=v4part;return str}if(parts[5]===0){str="::";if(v4part==="0.0.0.0")v4part="";if(v4part==="0.0.0.1")v4part="1";str+=v4part;return str}}for(word=0;word<8;word++){if(parts[word]===0){if(word-lastzero>1){len=0}lastzero=word;len++}if(len>longest){longest=len;zstart=word-longest+1}}for(word=0;word<8;word++){if(longest>1){if(parts[word]===0&&word>=zstart&&word>1];var port=_ntohs2(HEAPU16[sa+2>>1]);var addr;switch(family){case 2:if(salen!==16){return{errno:28}}addr=HEAP32[sa+4>>2];addr=inetNtop4(addr);break;case 10:if(salen!==28){return{errno:28}}addr=[HEAP32[sa+8>>2],HEAP32[sa+12>>2],HEAP32[sa+16>>2],HEAP32[sa+20>>2]];addr=inetNtop6(addr);break;default:return{errno:5}}return{family:family,addr:addr,port:port}};var getSocketAddress=function getSocketAddress(addrp,addrlen,allowNull){if(allowNull&&addrp===0)return null;var info=readSockaddr(addrp,addrlen);if(info.errno)throw new FS.ErrnoError(info.errno);info.addr=DNS.lookup_addr(info.addr)||info.addr;return info};function ___syscall_bind(fd,addr,addrlen,d1,d2,d3){try{var sock=getSocketFromFD(fd);var info=getSocketAddress(addr,addrlen);sock.sock_ops.bind(sock,info.addr,info.port);return 0}catch(e){if(typeof FS=="undefined"||!(e.name==="ErrnoError"))throw e;return-e.errno}}function ___syscall_connect(fd,addr,addrlen,d1,d2,d3){try{var sock=getSocketFromFD(fd);var info=getSocketAddress(addr,addrlen);sock.sock_ops.connect(sock,info.addr,info.port);return 0}catch(e){if(typeof FS=="undefined"||!(e.name==="ErrnoError"))throw e;return-e.errno}}function ___syscall_dup3(fd,newfd,flags){try{var old=SYSCALLS.getStreamFromFD(fd);if(old.fd===newfd)return-28;if(newfd<0||newfd>=FS.MAX_OPEN_FDS)return-8;var existing=FS.getStream(newfd);if(existing)FS.close(existing);return FS.dupStream(old,newfd).fd}catch(e){if(typeof FS=="undefined"||!(e.name==="ErrnoError"))throw e;return-e.errno}}function syscallGetVarargI(){var ret=HEAP32[+SYSCALLS.varargs>>2];SYSCALLS.varargs+=4;return ret}var syscallGetVarargP=syscallGetVarargI;function ___syscall_fcntl64(fd,cmd,varargs){SYSCALLS.varargs=varargs;try{var stream=SYSCALLS.getStreamFromFD(fd);switch(cmd){case 0:{var arg=syscallGetVarargI();if(arg<0){return-28}while(FS.streams[arg]){arg++}var newStream;newStream=FS.dupStream(stream,arg);return newStream.fd}case 1:case 2:return 0;case 3:return stream.flags;case 4:{var arg=syscallGetVarargI();stream.flags|=arg;return 0}case 12:{var arg=syscallGetVarargP();var offset=0;HEAP16[arg+offset>>1]=2;return 0}case 13:case 14:return 0}return-28}catch(e){if(typeof FS=="undefined"||!(e.name==="ErrnoError"))throw e;return-e.errno}}function ___syscall_getpeername(fd,addr,addrlen,d1,d2,d3){try{var sock=getSocketFromFD(fd);if(!sock.daddr){return-53}var errno=writeSockaddr(addr,sock.family,DNS.lookup_name(sock.daddr),sock.dport,addrlen);return 0}catch(e){if(typeof FS=="undefined"||!(e.name==="ErrnoError"))throw e;return-e.errno}}function ___syscall_getsockname(fd,addr,addrlen,d1,d2,d3){try{var sock=getSocketFromFD(fd);var errno=writeSockaddr(addr,sock.family,DNS.lookup_name(sock.saddr||"0.0.0.0"),sock.sport,addrlen);return 0}catch(e){if(typeof FS=="undefined"||!(e.name==="ErrnoError"))throw e;return-e.errno}}function ___syscall_getsockopt(fd,level,optname,optval,optlen,d1){try{var sock=getSocketFromFD(fd);if(level===1){if(optname===4){HEAP32[optval>>2]=sock.error;HEAP32[optlen>>2]=4;sock.error=null;return 0}}return-50}catch(e){if(typeof FS=="undefined"||!(e.name==="ErrnoError"))throw e;return-e.errno}}function ___syscall_ioctl(fd,op,varargs){SYSCALLS.varargs=varargs;try{var stream=SYSCALLS.getStreamFromFD(fd);switch(op){case 21509:{if(!stream.tty)return-59;return 0}case 21505:{if(!stream.tty)return-59;if(stream.tty.ops.ioctl_tcgets){var termios=stream.tty.ops.ioctl_tcgets(stream);var argp=syscallGetVarargP();HEAP32[argp>>2]=termios.c_iflag||0;HEAP32[argp+4>>2]=termios.c_oflag||0;HEAP32[argp+8>>2]=termios.c_cflag||0;HEAP32[argp+12>>2]=termios.c_lflag||0;for(var i=0;i<32;i++){HEAP8[argp+i+17]=termios.c_cc[i]||0}return 0}return 0}case 21510:case 21511:case 21512:{if(!stream.tty)return-59;return 0}case 21506:case 21507:case 21508:{if(!stream.tty)return-59;if(stream.tty.ops.ioctl_tcsets){var argp=syscallGetVarargP();var c_iflag=HEAP32[argp>>2];var c_oflag=HEAP32[argp+4>>2];var c_cflag=HEAP32[argp+8>>2];var c_lflag=HEAP32[argp+12>>2];var c_cc=[];for(var i=0;i<32;i++){c_cc.push(HEAP8[argp+i+17])}return stream.tty.ops.ioctl_tcsets(stream.tty,op,{c_iflag:c_iflag,c_oflag:c_oflag,c_cflag:c_cflag,c_lflag:c_lflag,c_cc:c_cc})}return 0}case 21519:{if(!stream.tty)return-59;var argp=syscallGetVarargP();HEAP32[argp>>2]=0;return 0}case 21520:{if(!stream.tty)return-59;return-28}case 21531:{var argp=syscallGetVarargP();return FS.ioctl(stream,op,argp)}case 21523:{if(!stream.tty)return-59;if(stream.tty.ops.ioctl_tiocgwinsz){var winsize=stream.tty.ops.ioctl_tiocgwinsz(stream.tty);var argp=syscallGetVarargP();HEAP16[argp>>1]=winsize[0];HEAP16[argp+2>>1]=winsize[1]}return 0}case 21524:{if(!stream.tty)return-59;return 0}case 21515:{if(!stream.tty)return-59;return 0}default:return-28}}catch(e){if(typeof FS=="undefined"||!(e.name==="ErrnoError"))throw e;return-e.errno}}function ___syscall_listen(fd,backlog){try{var sock=getSocketFromFD(fd);sock.sock_ops.listen(sock,backlog);return 0}catch(e){if(typeof FS=="undefined"||!(e.name==="ErrnoError"))throw e;return-e.errno}}function ___syscall_mkdirat(dirfd,path,mode){try{path=SYSCALLS.getStr(path);path=SYSCALLS.calculateAt(dirfd,path);path=PATH.normalize(path);if(path[path.length-1]==="/")path=path.substr(0,path.length-1);FS.mkdir(path,mode,0);return 0}catch(e){if(typeof FS=="undefined"||!(e.name==="ErrnoError"))throw e;return-e.errno}}function ___syscall_openat(dirfd,path,flags,varargs){SYSCALLS.varargs=varargs;try{path=SYSCALLS.getStr(path);path=SYSCALLS.calculateAt(dirfd,path);var mode=varargs?syscallGetVarargI():0;return FS.open(path,flags,mode).fd}catch(e){if(typeof FS=="undefined"||!(e.name==="ErrnoError"))throw e;return-e.errno}}function ___syscall_poll(fds,nfds,timeout){try{var nonzero=0;for(var i=0;i>2];var events=HEAP16[pollfd+4>>1];var mask=32;var stream=FS.getStream(fd);if(stream){mask=SYSCALLS.DEFAULT_POLLMASK;if(stream.stream_ops.poll){mask=stream.stream_ops.poll(stream,-1)}}mask&=events|8|16;if(mask)nonzero++;HEAP16[pollfd+6>>1]=mask}return nonzero}catch(e){if(typeof FS=="undefined"||!(e.name==="ErrnoError"))throw e;return-e.errno}}var stringToUTF8=function stringToUTF8(str,outPtr,maxBytesToWrite){return stringToUTF8Array(str,HEAPU8,outPtr,maxBytesToWrite)};function ___syscall_readlinkat(dirfd,path,buf,bufsize){try{path=SYSCALLS.getStr(path);path=SYSCALLS.calculateAt(dirfd,path);if(bufsize<=0)return-28;var ret=FS.readlink(path);var len=Math.min(bufsize,lengthBytesUTF8(ret));var endChar=HEAP8[buf+len];stringToUTF8(ret,buf,bufsize+1);HEAP8[buf+len]=endChar;return len}catch(e){if(typeof FS=="undefined"||!(e.name==="ErrnoError"))throw e;return-e.errno}}function ___syscall_recvfrom(fd,buf,len,flags,addr,addrlen){try{var sock=getSocketFromFD(fd);var msg=sock.sock_ops.recvmsg(sock,len);if(!msg)return 0;if(addr){var errno=writeSockaddr(addr,sock.family,DNS.lookup_name(msg.addr),msg.port,addrlen)}HEAPU8.set(msg.buffer,buf);return msg.buffer.byteLength}catch(e){if(typeof FS=="undefined"||!(e.name==="ErrnoError"))throw e;return-e.errno}}function ___syscall_renameat(olddirfd,oldpath,newdirfd,newpath){try{oldpath=SYSCALLS.getStr(oldpath);newpath=SYSCALLS.getStr(newpath);oldpath=SYSCALLS.calculateAt(olddirfd,oldpath);newpath=SYSCALLS.calculateAt(newdirfd,newpath);FS.rename(oldpath,newpath);return 0}catch(e){if(typeof FS=="undefined"||!(e.name==="ErrnoError"))throw e;return-e.errno}}function ___syscall_rmdir(path){try{path=SYSCALLS.getStr(path);FS.rmdir(path);return 0}catch(e){if(typeof FS=="undefined"||!(e.name==="ErrnoError"))throw e;return-e.errno}}function ___syscall_sendto(fd,message,length,flags,addr,addr_len){try{var sock=getSocketFromFD(fd);var dest=getSocketAddress(addr,addr_len,true);if(!dest){return FS.write(sock.stream,HEAP8,message,length)}return sock.sock_ops.sendmsg(sock,HEAP8,message,length,dest.addr,dest.port)}catch(e){if(typeof FS=="undefined"||!(e.name==="ErrnoError"))throw e;return-e.errno}}function ___syscall_shutdown(fd,how){try{getSocketFromFD(fd);return-52}catch(e){if(typeof FS=="undefined"||!(e.name==="ErrnoError"))throw e;return-e.errno}}function ___syscall_socket(domain,type,protocol){try{var sock=SOCKFS.createSocket(domain,type,protocol);return sock.stream.fd}catch(e){if(typeof FS=="undefined"||!(e.name==="ErrnoError"))throw e;return-e.errno}}function ___syscall_stat64(path,buf){try{path=SYSCALLS.getStr(path);return SYSCALLS.doStat(FS.stat,path,buf)}catch(e){if(typeof FS=="undefined"||!(e.name==="ErrnoError"))throw e;return-e.errno}}function ___syscall_unlinkat(dirfd,path,flags){try{path=SYSCALLS.getStr(path);path=SYSCALLS.calculateAt(dirfd,path);if(flags===0){FS.unlink(path)}else if(flags===512){FS.rmdir(path)}else{abort("Invalid flags passed to unlinkat")}return 0}catch(e){if(typeof FS=="undefined"||!(e.name==="ErrnoError"))throw e;return-e.errno}}var __abort_js=function __abort_js(){abort("")};var nowIsMonotonic=1;var __emscripten_get_now_is_monotonic=function __emscripten_get_now_is_monotonic(){return nowIsMonotonic};var __emscripten_lookup_name=function __emscripten_lookup_name(name){var nameString=UTF8ToString(name);return inetPton4(DNS.lookup_name(nameString))};var __emscripten_memcpy_js=Uint8Array.prototype.copyWithin?function(dest,src,num){return HEAPU8.copyWithin(dest,src,src+num)}:function(dest,src,num){return HEAPU8.set(HEAPU8.subarray(src,src+num),dest)};var __emscripten_system=function __emscripten_system(command){if(ENVIRONMENT_IS_NODE){if(!command)return 1;var cmdstr=UTF8ToString(command);if(!cmdstr.length)return 0;var cp=require("child_process");var ret=cp.spawnSync(cmdstr,[],{shell:true,stdio:"inherit"});var _W_EXITCODE=function _W_EXITCODE(ret,sig){return ret<<8|sig};if(ret.status===null){var signalToNumber=function signalToNumber(sig){switch(sig){case"SIGHUP":return 1;case"SIGINT":return 2;case"SIGQUIT":return 3;case"SIGFPE":return 8;case"SIGKILL":return 9;case"SIGALRM":return 14;case"SIGTERM":return 15}return 2};return _W_EXITCODE(0,signalToNumber(ret.signal))}return _W_EXITCODE(ret.status,0)}if(!command)return 0;return-52};var __emscripten_throw_longjmp=function __emscripten_throw_longjmp(){throw Infinity};var convertI32PairToI53Checked=function convertI32PairToI53Checked(lo,hi){return hi+2097152>>>0<4194305-!!lo?(lo>>>0)+hi*4294967296:NaN};function __gmtime_js(time_low,time_high,tmPtr){var time=convertI32PairToI53Checked(time_low,time_high);var date=new Date(time*1e3);HEAP32[tmPtr>>2]=date.getUTCSeconds();HEAP32[tmPtr+4>>2]=date.getUTCMinutes();HEAP32[tmPtr+8>>2]=date.getUTCHours();HEAP32[tmPtr+12>>2]=date.getUTCDate();HEAP32[tmPtr+16>>2]=date.getUTCMonth();HEAP32[tmPtr+20>>2]=date.getUTCFullYear()-1900;HEAP32[tmPtr+24>>2]=date.getUTCDay();var start=Date.UTC(date.getUTCFullYear(),0,1,0,0,0,0);var yday=(date.getTime()-start)/(1e3*60*60*24)|0;HEAP32[tmPtr+28>>2]=yday}var isLeapYear=function isLeapYear(year){return year%4===0&&(year%100!==0||year%400===0)};var MONTH_DAYS_LEAP_CUMULATIVE=[0,31,60,91,121,152,182,213,244,274,305,335];var MONTH_DAYS_REGULAR_CUMULATIVE=[0,31,59,90,120,151,181,212,243,273,304,334];var ydayFromDate=function ydayFromDate(date){var leap=isLeapYear(date.getFullYear());var monthDaysCumulative=leap?MONTH_DAYS_LEAP_CUMULATIVE:MONTH_DAYS_REGULAR_CUMULATIVE;var yday=monthDaysCumulative[date.getMonth()]+date.getDate()-1;return yday};function __localtime_js(time_low,time_high,tmPtr){var time=convertI32PairToI53Checked(time_low,time_high);var date=new Date(time*1e3);HEAP32[tmPtr>>2]=date.getSeconds();HEAP32[tmPtr+4>>2]=date.getMinutes();HEAP32[tmPtr+8>>2]=date.getHours();HEAP32[tmPtr+12>>2]=date.getDate();HEAP32[tmPtr+16>>2]=date.getMonth();HEAP32[tmPtr+20>>2]=date.getFullYear()-1900;HEAP32[tmPtr+24>>2]=date.getDay();var yday=ydayFromDate(date)|0;HEAP32[tmPtr+28>>2]=yday;HEAP32[tmPtr+36>>2]=-(date.getTimezoneOffset()*60);var start=new Date(date.getFullYear(),0,1);var summerOffset=new Date(date.getFullYear(),6,1).getTimezoneOffset();var winterOffset=start.getTimezoneOffset();var dst=(summerOffset!=winterOffset&&date.getTimezoneOffset()==Math.min(winterOffset,summerOffset))|0;HEAP32[tmPtr+32>>2]=dst}var setTempRet0=function setTempRet0(val){return _emscripten_tempret_set(val)};var __mktime_js=function __mktime_js(tmPtr){var ret=function(){var date=new Date(HEAP32[tmPtr+20>>2]+1900,HEAP32[tmPtr+16>>2],HEAP32[tmPtr+12>>2],HEAP32[tmPtr+8>>2],HEAP32[tmPtr+4>>2],HEAP32[tmPtr>>2],0);var dst=HEAP32[tmPtr+32>>2];var guessedOffset=date.getTimezoneOffset();var start=new Date(date.getFullYear(),0,1);var summerOffset=new Date(date.getFullYear(),6,1).getTimezoneOffset();var winterOffset=start.getTimezoneOffset();var dstOffset=Math.min(winterOffset,summerOffset);if(dst<0){HEAP32[tmPtr+32>>2]=Number(summerOffset!=winterOffset&&dstOffset==guessedOffset)}else if(dst>0!=(dstOffset==guessedOffset)){var nonDstOffset=Math.max(winterOffset,summerOffset);var trueOffset=dst>0?dstOffset:nonDstOffset;date.setTime(date.getTime()+(trueOffset-guessedOffset)*6e4)}HEAP32[tmPtr+24>>2]=date.getDay();var yday=ydayFromDate(date)|0;HEAP32[tmPtr+28>>2]=yday;HEAP32[tmPtr>>2]=date.getSeconds();HEAP32[tmPtr+4>>2]=date.getMinutes();HEAP32[tmPtr+8>>2]=date.getHours();HEAP32[tmPtr+12>>2]=date.getDate();HEAP32[tmPtr+16>>2]=date.getMonth();HEAP32[tmPtr+20>>2]=date.getYear();var timeMs=date.getTime();if(isNaN(timeMs)){return-1}return timeMs/1e3}();return setTempRet0((tempDouble=ret,+Math.abs(tempDouble)>=1?tempDouble>0?+Math.floor(tempDouble/4294967296)>>>0:~~+Math.ceil((tempDouble-+(~~tempDouble>>>0))/4294967296)>>>0:0)),ret>>>0};var __tzset_js=function __tzset_js(timezone,daylight,std_name,dst_name){var currentYear=(new Date).getFullYear();var winter=new Date(currentYear,0,1);var summer=new Date(currentYear,6,1);var winterOffset=winter.getTimezoneOffset();var summerOffset=summer.getTimezoneOffset();var stdTimezoneOffset=Math.max(winterOffset,summerOffset);HEAPU32[timezone>>2]=stdTimezoneOffset*60;HEAP32[daylight>>2]=Number(winterOffset!=summerOffset);var extractZone=function extractZone(timezoneOffset){var sign=timezoneOffset>=0?"-":"+";var absOffset=Math.abs(timezoneOffset);var hours=String(Math.floor(absOffset/60)).padStart(2,"0");var minutes=String(absOffset%60).padStart(2,"0");return"UTC".concat(sign).concat(hours).concat(minutes)};var winterName=extractZone(winterOffset);var summerName=extractZone(summerOffset);if(summerOffset=wasmTableMirror.length)wasmTableMirror.length=funcPtr+1;wasmTableMirror[funcPtr]=func=wasmTable.get(funcPtr)}return func};function _dmScriptHttpRequestAsync(method,url,headers,arg,onload,onerror,onprogress,send_data,send_data_length,timeout){var xhr=new XMLHttpRequest;function listener(){var resp_headers=xhr.getAllResponseHeaders();resp_headers=resp_headers.replace(new RegExp("\r","g"),"");resp_headers+="\n";if(xhr.status!=0){var ab=new Uint8Array(xhr.response);var b=_malloc(ab.length*ab.BYTES_PER_ELEMENT);HEAPU8.set(ab,b);var resp_headers_buffer=stringToNewUTF8(resp_headers);getWasmTableEntry(onload)(arg,xhr.status,b,ab.length,resp_headers_buffer);_free(resp_headers_buffer);_free(b)}else{getWasmTableEntry(onerror)(arg,xhr.status)}}xhr.onload=listener;xhr.onerror=listener;xhr.ontimeout=listener;xhr.onprogress=function(progress_event){if(onprogress!=0){getWasmTableEntry(onprogress)(arg,progress_event.loaded,progress_event.total)}};xhr.open(UTF8ToString(method),UTF8ToString(url),true);xhr.responseType="arraybuffer";if(timeout>0){xhr.timeout=timeout/1e3}var headersArray=UTF8ToString(headers).split("\n");for(var i=0;i0){xhr.send(HEAPU8.subarray(send_data,send_data+send_data_length))}else{xhr.send()}}var DMSYS={_folder:"/data",_cstr:null,GetUserPersistentDataRoot:function GetUserPersistentDataRoot(){if(typeof window!=="undefined")return DMSYS._folder;else return""},PumpMessageQueue:function PumpMessageQueue(){if(typeof window==="undefined"){var uvrun=require("uvrun");uvrun.runOnce()}}};function _dmSysGetApplicationPath(){var path=location.href.substring(0,location.href.lastIndexOf("/"));var buffer=stringToNewUTF8(path);return buffer}function _dmSysGetUserAgent(){var useragent=navigator.userAgent;var buffer=stringToNewUTF8(useragent);return buffer}function _dmSysGetUserPersistentDataRoot(){if(null==DMSYS._cstr){var str=DMSYS.GetUserPersistentDataRoot();DMSYS._cstr=stringToNewUTF8(str)}return DMSYS._cstr}function _dmSysGetUserPreferredLanguage(defaultlang){var jsdefault=UTF8ToString(defaultlang);var preferred=navigator==undefined?jsdefault:navigator.languages?navigator.languages[0]||jsdefault:navigator.language||navigator.userLanguage||navigator.browserLanguage||navigator.systemLanguage||jsdefault;var buffer=stringToNewUTF8(preferred);return buffer}var JSEvents={removeAllEventListeners:function removeAllEventListeners(){while(JSEvents.eventHandlers.length){JSEvents._removeHandler(JSEvents.eventHandlers.length-1)}JSEvents.deferredCalls=[]},inEventHandler:0,deferredCalls:[],deferCall:function deferCall(targetFunction,precedence,argsList){function arraysHaveEqualContent(arrA,arrB){if(arrA.length!=arrB.length)return false;for(var i in arrA){if(arrA[i]!=arrB[i])return false}return true}var _iterator=_createForOfIteratorHelper(JSEvents.deferredCalls),_step;try{for(_iterator.s();!(_step=_iterator.n()).done;){var call=_step.value;if(call.targetFunction==targetFunction&&arraysHaveEqualContent(call.argsList,argsList)){return}}}catch(err){_iterator.e(err)}finally{_iterator.f()}JSEvents.deferredCalls.push({targetFunction:targetFunction,precedence:precedence,argsList:argsList});JSEvents.deferredCalls.sort(function(x,y){return x.precedence>2]:ch==105?HEAP32[buf>>2]:HEAPF64[buf>>3]);buf+=wide?8:4}return readEmAsmArgsArray};var runEmAsmFunction=function runEmAsmFunction(code,sigPtr,argbuf){var args=readEmAsmArgs(sigPtr,argbuf);return ASM_CONSTS[code].apply(ASM_CONSTS,_toConsumableArray(args))};var _emscripten_asm_const_double=function _emscripten_asm_const_double(code,sigPtr,argbuf){return runEmAsmFunction(code,sigPtr,argbuf)};var _emscripten_asm_const_int=function _emscripten_asm_const_int(code,sigPtr,argbuf){return runEmAsmFunction(code,sigPtr,argbuf)};var _emscripten_set_main_loop_timing=function _emscripten_set_main_loop_timing(mode,value){Browser.mainLoop.timingMode=mode;Browser.mainLoop.timingValue=value;if(!Browser.mainLoop.func){return 1}if(!Browser.mainLoop.running){Browser.mainLoop.running=true}if(mode==0){Browser.mainLoop.scheduler=function Browser_mainLoop_scheduler_setTimeout(){var timeUntilNextTick=Math.max(0,Browser.mainLoop.tickStartTime+value-_emscripten_get_now())|0;setTimeout(Browser.mainLoop.runner,timeUntilNextTick)};Browser.mainLoop.method="timeout"}else if(mode==1){Browser.mainLoop.scheduler=function Browser_mainLoop_scheduler_rAF(){Browser.requestAnimationFrame(Browser.mainLoop.runner)};Browser.mainLoop.method="rAF"}else if(mode==2){if(typeof Browser.setImmediate=="undefined"){if(typeof setImmediate=="undefined"){var setImmediates=[];var emscriptenMainLoopMessageId="setimmediate";var Browser_setImmediate_messageHandler=function Browser_setImmediate_messageHandler(event){if(event.data===emscriptenMainLoopMessageId||event.data.target===emscriptenMainLoopMessageId){event.stopPropagation();setImmediates.shift()()}};addEventListener("message",Browser_setImmediate_messageHandler,true);Browser.setImmediate=function Browser_emulated_setImmediate(func){setImmediates.push(func);if(ENVIRONMENT_IS_WORKER){var _setImmediates,_Module$_setImmediate;(_Module$_setImmediate=Module[_setImmediates="setImmediates"])!==null&&_Module$_setImmediate!==void 0?_Module$_setImmediate:Module[_setImmediates]=[];Module["setImmediates"].push(func);postMessage({target:emscriptenMainLoopMessageId})}else postMessage(emscriptenMainLoopMessageId,"*")}}else{Browser.setImmediate=setImmediate}}Browser.mainLoop.scheduler=function Browser_mainLoop_scheduler_setImmediate(){Browser.setImmediate(Browser.mainLoop.runner)};Browser.mainLoop.method="immediate"}return 0};var _emscripten_get_now;if(ENVIRONMENT_IS_NODE){global.performance=require("perf_hooks").performance}_emscripten_get_now=function _emscripten_get_now(){return performance.now()};var setMainLoop=function setMainLoop(browserIterationFunc,fps,simulateInfiniteLoop,arg,noSetTiming){Browser.mainLoop.func=browserIterationFunc;Browser.mainLoop.arg=arg;var thisMainLoopId=Browser.mainLoop.currentlyRunningMainloop;function checkIsRunning(){if(thisMainLoopId0){var start=Date.now();var blocker=Browser.mainLoop.queue.shift();blocker.func(blocker.arg);if(Browser.mainLoop.remainingBlockers){var remaining=Browser.mainLoop.remainingBlockers;var next=remaining%1==0?remaining-1:Math.floor(remaining);if(blocker.counted){Browser.mainLoop.remainingBlockers=next}else{next=next+.5;Browser.mainLoop.remainingBlockers=(8*remaining+next)/9}}Browser.mainLoop.updateStatus();if(!checkIsRunning())return;setTimeout(Browser.mainLoop.runner,0);return}if(!checkIsRunning())return;Browser.mainLoop.currentFrameNumber=Browser.mainLoop.currentFrameNumber+1|0;if(Browser.mainLoop.timingMode==1&&Browser.mainLoop.timingValue>1&&Browser.mainLoop.currentFrameNumber%Browser.mainLoop.timingValue!=0){Browser.mainLoop.scheduler();return}else if(Browser.mainLoop.timingMode==0){Browser.mainLoop.tickStartTime=_emscripten_get_now()}Browser.mainLoop.runIter(browserIterationFunc);if(!checkIsRunning())return;if((typeof SDL==="undefined"?"undefined":_typeof(SDL))=="object")(_SDL$audio=SDL.audio)===null||_SDL$audio===void 0||(_SDL$audio$queueNewAu=_SDL$audio.queueNewAudioData)===null||_SDL$audio$queueNewAu===void 0||_SDL$audio$queueNewAu.call(_SDL$audio);Browser.mainLoop.scheduler()};if(!noSetTiming){if(fps&&fps>0){_emscripten_set_main_loop_timing(0,1e3/fps)}else{_emscripten_set_main_loop_timing(1,1)}Browser.mainLoop.scheduler()}if(simulateInfiniteLoop){throw"unwind"}};var handleException=function handleException(e){if(e instanceof ExitStatus||e=="unwind"){return EXITSTATUS}quit_(1,e)};var runtimeKeepaliveCounter=0;var keepRuntimeAlive=function keepRuntimeAlive(){return noExitRuntime||runtimeKeepaliveCounter>0};var _proc_exit=function _proc_exit(code){EXITSTATUS=code;if(!keepRuntimeAlive()){var _Module$onExit;(_Module$onExit=Module["onExit"])===null||_Module$onExit===void 0||_Module$onExit.call(Module,code);ABORT=true}quit_(code,new ExitStatus(code))};var exitJS=function exitJS(status,implicit){EXITSTATUS=status;_proc_exit(status)};var _exit=exitJS;var maybeExit=function maybeExit(){if(!keepRuntimeAlive()){try{_exit(EXITSTATUS)}catch(e){handleException(e)}}};var callUserCallback=function callUserCallback(func){if(ABORT){return}try{func();maybeExit()}catch(e){handleException(e)}};var _safeSetTimeout=function safeSetTimeout(func,timeout){return setTimeout(function(){callUserCallback(func)},timeout)};var warnOnce=function warnOnce(text){warnOnce.shown||(warnOnce.shown={});if(!warnOnce.shown[text]){warnOnce.shown[text]=1;if(ENVIRONMENT_IS_NODE)text="warning: "+text;err(text)}};var Browser={mainLoop:{running:false,scheduler:null,method:"",currentlyRunningMainloop:0,func:null,arg:0,timingMode:0,timingValue:0,currentFrameNumber:0,queue:[],pause:function pause(){Browser.mainLoop.scheduler=null;Browser.mainLoop.currentlyRunningMainloop++},resume:function resume(){Browser.mainLoop.currentlyRunningMainloop++;var timingMode=Browser.mainLoop.timingMode;var timingValue=Browser.mainLoop.timingValue;var func=Browser.mainLoop.func;Browser.mainLoop.func=null;setMainLoop(func,0,false,Browser.mainLoop.arg,true);_emscripten_set_main_loop_timing(timingMode,timingValue);Browser.mainLoop.scheduler()},updateStatus:function updateStatus(){if(Module["setStatus"]){var message=Module["statusMessage"]||"Please wait...";var remaining=Browser.mainLoop.remainingBlockers;var expected=Browser.mainLoop.expectedBlockers;if(remaining){if(remaining=6){var curr=leftchar>>leftbits-6&63;leftbits-=6;ret+=BASE[curr]}}if(leftbits==2){ret+=BASE[(leftchar&3)<<4];ret+=PAD+PAD}else if(leftbits==4){ret+=BASE[(leftchar&15)<<2];ret+=PAD}return ret}audio.src="data:audio/x-"+name.substr(-3)+";base64,"+encode64(byteArray);finish(audio)};audio.src=url;_safeSetTimeout(function(){finish(audio)},1e4)};preloadPlugins.push(audioPlugin);function pointerLockChange(){Browser.pointerLock=document["pointerLockElement"]===Module["canvas"]||document["mozPointerLockElement"]===Module["canvas"]||document["webkitPointerLockElement"]===Module["canvas"]||document["msPointerLockElement"]===Module["canvas"]}var canvas=Module["canvas"];if(canvas){canvas.requestPointerLock=canvas["requestPointerLock"]||canvas["mozRequestPointerLock"]||canvas["webkitRequestPointerLock"]||canvas["msRequestPointerLock"]||function(){};canvas.exitPointerLock=document["exitPointerLock"]||document["mozExitPointerLock"]||document["webkitExitPointerLock"]||document["msExitPointerLock"]||function(){};canvas.exitPointerLock=canvas.exitPointerLock.bind(document);document.addEventListener("pointerlockchange",pointerLockChange,false);document.addEventListener("mozpointerlockchange",pointerLockChange,false);document.addEventListener("webkitpointerlockchange",pointerLockChange,false);document.addEventListener("mspointerlockchange",pointerLockChange,false);if(Module["elementPointerLock"]){canvas.addEventListener("click",function(ev){if(!Browser.pointerLock&&Module["canvas"].requestPointerLock){Module["canvas"].requestPointerLock();ev.preventDefault()}},false)}}},createContext:function createContext(canvas,useWebGL,setInModule,webGLContextAttributes){if(useWebGL&&Module.ctx&&canvas==Module.canvas)return Module.ctx;var ctx;var contextHandle;if(useWebGL){var contextAttributes={antialias:false,alpha:false,majorVersion:typeof WebGL2RenderingContext!="undefined"?2:1};if(webGLContextAttributes){for(var attribute in webGLContextAttributes){contextAttributes[attribute]=webGLContextAttributes[attribute]}}if(typeof GL!="undefined"){contextHandle=GL.createContext(canvas,contextAttributes);if(contextHandle){ctx=GL.getContext(contextHandle).GLctx}}}else{ctx=canvas.getContext("2d")}if(!ctx)return null;if(setInModule){Module.ctx=ctx;if(useWebGL)GL.makeContextCurrent(contextHandle);Browser.useWebGL=useWebGL;Browser.moduleContextCreatedCallbacks.forEach(function(callback){return callback()});Browser.init()}return ctx},fullscreenHandlersInstalled:false,lockPointer:undefined,resizeCanvas:undefined,requestFullscreen:function requestFullscreen(lockPointer,resizeCanvas){Browser.lockPointer=lockPointer;Browser.resizeCanvas=resizeCanvas;if(typeof Browser.lockPointer=="undefined")Browser.lockPointer=true;if(typeof Browser.resizeCanvas=="undefined")Browser.resizeCanvas=false;var canvas=Module["canvas"];function fullscreenChange(){var _Module$onFullScreen,_Module$onFullscreen;Browser.isFullscreen=false;var canvasContainer=canvas.parentNode;if((document["fullscreenElement"]||document["mozFullScreenElement"]||document["msFullscreenElement"]||document["webkitFullscreenElement"]||document["webkitCurrentFullScreenElement"])===canvasContainer){canvas.exitFullscreen=Browser.exitFullscreen;if(Browser.lockPointer)canvas.requestPointerLock();Browser.isFullscreen=true;if(Browser.resizeCanvas){Browser.setFullscreenCanvasSize()}else{Browser.updateCanvasDimensions(canvas)}}else{canvasContainer.parentNode.insertBefore(canvas,canvasContainer);canvasContainer.parentNode.removeChild(canvasContainer);if(Browser.resizeCanvas){Browser.setWindowedCanvasSize()}else{Browser.updateCanvasDimensions(canvas)}}(_Module$onFullScreen=Module["onFullScreen"])===null||_Module$onFullScreen===void 0||_Module$onFullScreen.call(Module,Browser.isFullscreen);(_Module$onFullscreen=Module["onFullscreen"])===null||_Module$onFullscreen===void 0||_Module$onFullscreen.call(Module,Browser.isFullscreen)}if(!Browser.fullscreenHandlersInstalled){Browser.fullscreenHandlersInstalled=true;document.addEventListener("fullscreenchange",fullscreenChange,false);document.addEventListener("mozfullscreenchange",fullscreenChange,false);document.addEventListener("webkitfullscreenchange",fullscreenChange,false);document.addEventListener("MSFullscreenChange",fullscreenChange,false)}var canvasContainer=document.createElement("div");canvas.parentNode.insertBefore(canvasContainer,canvas);canvasContainer.appendChild(canvas);canvasContainer.requestFullscreen=canvasContainer["requestFullscreen"]||canvasContainer["mozRequestFullScreen"]||canvasContainer["msRequestFullscreen"]||(canvasContainer["webkitRequestFullscreen"]?function(){return canvasContainer["webkitRequestFullscreen"](Element["ALLOW_KEYBOARD_INPUT"])}:null)||(canvasContainer["webkitRequestFullScreen"]?function(){return canvasContainer["webkitRequestFullScreen"](Element["ALLOW_KEYBOARD_INPUT"])}:null);canvasContainer.requestFullscreen()},exitFullscreen:function exitFullscreen(){if(!Browser.isFullscreen){return false}var CFS=document["exitFullscreen"]||document["cancelFullScreen"]||document["mozCancelFullScreen"]||document["msExitFullscreen"]||document["webkitCancelFullScreen"]||function(){};CFS.apply(document,[]);return true},nextRAF:0,fakeRequestAnimationFrame:function fakeRequestAnimationFrame(func){var now=Date.now();if(Browser.nextRAF===0){Browser.nextRAF=now+1e3/60}else{while(now+2>=Browser.nextRAF){Browser.nextRAF+=1e3/60}}var delay=Math.max(Browser.nextRAF-now,0);setTimeout(func,delay)},requestAnimationFrame:function(_requestAnimationFrame){function requestAnimationFrame(_x){return _requestAnimationFrame.apply(this,arguments)}requestAnimationFrame.toString=function(){return _requestAnimationFrame.toString()};return requestAnimationFrame}(function(func){if(typeof requestAnimationFrame=="function"){requestAnimationFrame(func);return}var RAF=Browser.fakeRequestAnimationFrame;if(typeof window!="undefined"){RAF=window["requestAnimationFrame"]||window["mozRequestAnimationFrame"]||window["webkitRequestAnimationFrame"]||window["msRequestAnimationFrame"]||window["oRequestAnimationFrame"]||RAF}RAF(func)}),safeSetTimeout:function safeSetTimeout(func,timeout){return _safeSetTimeout(func,timeout)},safeRequestAnimationFrame:function safeRequestAnimationFrame(func){return Browser.requestAnimationFrame(function(){callUserCallback(func)})},getMimetype:function getMimetype(name){return{jpg:"image/jpeg",jpeg:"image/jpeg",png:"image/png",bmp:"image/bmp",ogg:"audio/ogg",wav:"audio/wav",mp3:"audio/mpeg"}[name.substr(name.lastIndexOf(".")+1)]},getUserMedia:function getUserMedia(func){var _window;(_window=window).getUserMedia||(_window.getUserMedia=navigator["getUserMedia"]||navigator["mozGetUserMedia"]);window.getUserMedia(func)},getMovementX:function getMovementX(event){return event["movementX"]||event["mozMovementX"]||event["webkitMovementX"]||0},getMovementY:function getMovementY(event){return event["movementY"]||event["mozMovementY"]||event["webkitMovementY"]||0},getMouseWheelDelta:function getMouseWheelDelta(event){var delta=0;switch(event.type){case"DOMMouseScroll":delta=event.detail/3;break;case"mousewheel":delta=event.wheelDelta/120;break;case"wheel":delta=event.deltaY;switch(event.deltaMode){case 0:delta/=100;break;case 1:delta/=3;break;case 2:delta*=80;break;default:throw"unrecognized mouse wheel delta mode: "+event.deltaMode}break;default:throw"unrecognized mouse wheel event: "+event.type}return delta},mouseX:0,mouseY:0,mouseMovementX:0,mouseMovementY:0,touches:{},lastTouches:{},calculateMouseCoords:function calculateMouseCoords(pageX,pageY){var rect=Module["canvas"].getBoundingClientRect();var cw=Module["canvas"].width;var ch=Module["canvas"].height;var scrollX=typeof window.scrollX!="undefined"?window.scrollX:window.pageXOffset;var scrollY=typeof window.scrollY!="undefined"?window.scrollY:window.pageYOffset;var adjustedX=pageX-(scrollX+rect.left);var adjustedY=pageY-(scrollY+rect.top);adjustedX=adjustedX*(cw/rect.width);adjustedY=adjustedY*(ch/rect.height);return{x:adjustedX,y:adjustedY}},setMouseCoords:function setMouseCoords(pageX,pageY){var _Browser$calculateMou=Browser.calculateMouseCoords(pageX,pageY),x=_Browser$calculateMou.x,y=_Browser$calculateMou.y;Browser.mouseMovementX=x-Browser.mouseX;Browser.mouseMovementY=y-Browser.mouseY;Browser.mouseX=x;Browser.mouseY=y},calculateMouseEvent:function calculateMouseEvent(event){if(Browser.pointerLock){if(event.type!="mousemove"&&"mozMovementX"in event){Browser.mouseMovementX=Browser.mouseMovementY=0}else{Browser.mouseMovementX=Browser.getMovementX(event);Browser.mouseMovementY=Browser.getMovementY(event)}Browser.mouseX+=Browser.mouseMovementX;Browser.mouseY+=Browser.mouseMovementY}else{if(event.type==="touchstart"||event.type==="touchend"||event.type==="touchmove"){var touch=event.touch;if(touch===undefined){return}var coords=Browser.calculateMouseCoords(touch.pageX,touch.pageY);if(event.type==="touchstart"){Browser.lastTouches[touch.identifier]=coords;Browser.touches[touch.identifier]=coords}else if(event.type==="touchend"||event.type==="touchmove"){var last=Browser.touches[touch.identifier];last||(last=coords);Browser.lastTouches[touch.identifier]=last;Browser.touches[touch.identifier]=coords}return}Browser.setMouseCoords(event.pageX,event.pageY)}},resizeListeners:[],updateResizeListeners:function updateResizeListeners(){var canvas=Module["canvas"];Browser.resizeListeners.forEach(function(listener){return listener(canvas.width,canvas.height)})},setCanvasSize:function setCanvasSize(width,height,noUpdates){var canvas=Module["canvas"];Browser.updateCanvasDimensions(canvas,width,height);if(!noUpdates)Browser.updateResizeListeners()},windowedWidth:0,windowedHeight:0,setFullscreenCanvasSize:function setFullscreenCanvasSize(){if(typeof SDL!="undefined"){var flags=HEAPU32[SDL.screen>>2];flags=flags|8388608;HEAP32[SDL.screen>>2]=flags}Browser.updateCanvasDimensions(Module["canvas"]);Browser.updateResizeListeners()},setWindowedCanvasSize:function setWindowedCanvasSize(){if(typeof SDL!="undefined"){var flags=HEAPU32[SDL.screen>>2];flags=flags&~8388608;HEAP32[SDL.screen>>2]=flags}Browser.updateCanvasDimensions(Module["canvas"]);Browser.updateResizeListeners()},updateCanvasDimensions:function updateCanvasDimensions(canvas,wNative,hNative){if(wNative&&hNative){canvas.widthNative=wNative;canvas.heightNative=hNative}else{wNative=canvas.widthNative;hNative=canvas.heightNative}var w=wNative;var h=hNative;if(Module["forcedAspectRatio"]&&Module["forcedAspectRatio"]>0){if(w/h>2]=id}},getSource:function getSource(shader,count,string,length){var source="";for(var i=0;i>2]:undefined;source+=UTF8ToString(HEAPU32[string+i*4>>2],len)}return source},createContext:function createContext(canvas,webGLContextAttributes){function getChromeVersion(){var chromeVersion=navigator.userAgent.match(/Chrom(e|ium)\/([0-9]+)\./);if(chromeVersion)return chromeVersion[2]|0}if(!canvas.getContextSafariWebGL2Fixed){var fixedGetContext=function fixedGetContext(ver,attrs){var gl=canvas.getContextSafariWebGL2Fixed(ver,attrs);return ver=="webgl"==gl instanceof WebGLRenderingContext?gl:null};canvas.getContextSafariWebGL2Fixed=canvas.getContext;canvas.getContext=fixedGetContext}var ctx=webGLContextAttributes.majorVersion>1?!(getChromeVersion()<=57)&&canvas.getContext("webgl2",webGLContextAttributes):canvas.getContext("webgl",webGLContextAttributes)||canvas.getContext("experimental-webgl",webGLContextAttributes);if(!ctx)return 0;var handle=GL.registerContext(ctx,webGLContextAttributes);return handle},registerContext:function registerContext(ctx,webGLContextAttributes){var handle=GL.getNewId(GL.contexts);var context={handle:handle,attributes:webGLContextAttributes,version:webGLContextAttributes.majorVersion,GLctx:ctx};if(ctx.canvas)ctx.canvas.GLctxObject=context;GL.contexts[handle]=context;if(typeof webGLContextAttributes.enableExtensionsByDefault=="undefined"||webGLContextAttributes.enableExtensionsByDefault){GL.initExtensions(context)}return handle},makeContextCurrent:function makeContextCurrent(contextHandle){var _GL$currentContext;GL.currentContext=GL.contexts[contextHandle];Module.ctx=GLctx=(_GL$currentContext=GL.currentContext)===null||_GL$currentContext===void 0?void 0:_GL$currentContext.GLctx;return!(contextHandle&&!GLctx)},getContext:function getContext(contextHandle){return GL.contexts[contextHandle]},deleteContext:function deleteContext(contextHandle){if(GL.currentContext===GL.contexts[contextHandle]){GL.currentContext=null}if(_typeof(JSEvents)=="object"){JSEvents.removeAllHandlersOnTarget(GL.contexts[contextHandle].GLctx.canvas)}if(GL.contexts[contextHandle]&&GL.contexts[contextHandle].GLctx.canvas){GL.contexts[contextHandle].GLctx.canvas.GLctxObject=undefined}GL.contexts[contextHandle]=null},initExtensions:function initExtensions(context){context||(context=GL.currentContext);if(context.initExtensionsDone)return;context.initExtensionsDone=true;var GLctx=context.GLctx;webgl_enable_ANGLE_instanced_arrays(GLctx);webgl_enable_OES_vertex_array_object(GLctx);webgl_enable_WEBGL_draw_buffers(GLctx);webgl_enable_WEBGL_draw_instanced_base_vertex_base_instance(GLctx);webgl_enable_WEBGL_multi_draw_instanced_base_vertex_base_instance(GLctx);if(context.version>=2){GLctx.disjointTimerQueryExt=GLctx.getExtension("EXT_disjoint_timer_query_webgl2")}if(context.version<2||!GLctx.disjointTimerQueryExt){GLctx.disjointTimerQueryExt=GLctx.getExtension("EXT_disjoint_timer_query")}webgl_enable_WEBGL_multi_draw(GLctx);getEmscriptenSupportedExtensions(GLctx).forEach(function(ext){if(!ext.includes("lose_context")&&!ext.includes("debug")){GLctx.getExtension(ext)}})}};var _glActiveTexture=function _glActiveTexture(x0){return GLctx.activeTexture(x0)};var _emscripten_glActiveTexture=_glActiveTexture;var _glAttachShader=function _glAttachShader(program,shader){GLctx.attachShader(GL.programs[program],GL.shaders[shader])};var _emscripten_glAttachShader=_glAttachShader;var _glBeginQuery=function _glBeginQuery(target,id){GLctx.beginQuery(target,GL.queries[id])};var _emscripten_glBeginQuery=_glBeginQuery;var _glBeginQueryEXT=function _glBeginQueryEXT(target,id){GLctx.disjointTimerQueryExt["beginQueryEXT"](target,GL.queries[id])};var _emscripten_glBeginQueryEXT=_glBeginQueryEXT;var _glBeginTransformFeedback=function _glBeginTransformFeedback(x0){return GLctx.beginTransformFeedback(x0)};var _emscripten_glBeginTransformFeedback=_glBeginTransformFeedback;var _glBindAttribLocation=function _glBindAttribLocation(program,index,name){GLctx.bindAttribLocation(GL.programs[program],index,UTF8ToString(name))};var _emscripten_glBindAttribLocation=_glBindAttribLocation;var _glBindBuffer=function _glBindBuffer(target,buffer){if(target==35051){GLctx.currentPixelPackBufferBinding=buffer}else if(target==35052){GLctx.currentPixelUnpackBufferBinding=buffer}GLctx.bindBuffer(target,GL.buffers[buffer])};var _emscripten_glBindBuffer=_glBindBuffer;var _glBindBufferBase=function _glBindBufferBase(target,index,buffer){GLctx.bindBufferBase(target,index,GL.buffers[buffer])};var _emscripten_glBindBufferBase=_glBindBufferBase;var _glBindBufferRange=function _glBindBufferRange(target,index,buffer,offset,ptrsize){GLctx.bindBufferRange(target,index,GL.buffers[buffer],offset,ptrsize)};var _emscripten_glBindBufferRange=_glBindBufferRange;var _glBindFramebuffer=function _glBindFramebuffer(target,framebuffer){GLctx.bindFramebuffer(target,GL.framebuffers[framebuffer])};var _emscripten_glBindFramebuffer=_glBindFramebuffer;var _glBindRenderbuffer=function _glBindRenderbuffer(target,renderbuffer){GLctx.bindRenderbuffer(target,GL.renderbuffers[renderbuffer])};var _emscripten_glBindRenderbuffer=_glBindRenderbuffer;var _glBindSampler=function _glBindSampler(unit,sampler){GLctx.bindSampler(unit,GL.samplers[sampler])};var _emscripten_glBindSampler=_glBindSampler;var _glBindTexture=function _glBindTexture(target,texture){GLctx.bindTexture(target,GL.textures[texture])};var _emscripten_glBindTexture=_glBindTexture;var _glBindTransformFeedback=function _glBindTransformFeedback(target,id){GLctx.bindTransformFeedback(target,GL.transformFeedbacks[id])};var _emscripten_glBindTransformFeedback=_glBindTransformFeedback;var _glBindVertexArray=function _glBindVertexArray(vao){GLctx.bindVertexArray(GL.vaos[vao])};var _emscripten_glBindVertexArray=_glBindVertexArray;var _glBindVertexArrayOES=_glBindVertexArray;var _emscripten_glBindVertexArrayOES=_glBindVertexArrayOES;var _glBlendColor=function _glBlendColor(x0,x1,x2,x3){return GLctx.blendColor(x0,x1,x2,x3)};var _emscripten_glBlendColor=_glBlendColor;var _glBlendEquation=function _glBlendEquation(x0){return GLctx.blendEquation(x0)};var _emscripten_glBlendEquation=_glBlendEquation;var _glBlendEquationSeparate=function _glBlendEquationSeparate(x0,x1){return GLctx.blendEquationSeparate(x0,x1)};var _emscripten_glBlendEquationSeparate=_glBlendEquationSeparate;var _glBlendFunc=function _glBlendFunc(x0,x1){return GLctx.blendFunc(x0,x1)};var _emscripten_glBlendFunc=_glBlendFunc;var _glBlendFuncSeparate=function _glBlendFuncSeparate(x0,x1,x2,x3){return GLctx.blendFuncSeparate(x0,x1,x2,x3)};var _emscripten_glBlendFuncSeparate=_glBlendFuncSeparate;var _glBlitFramebuffer=function _glBlitFramebuffer(x0,x1,x2,x3,x4,x5,x6,x7,x8,x9){return GLctx.blitFramebuffer(x0,x1,x2,x3,x4,x5,x6,x7,x8,x9)};var _emscripten_glBlitFramebuffer=_glBlitFramebuffer;var _glBufferData=function _glBufferData(target,size,data,usage){if(GL.currentContext.version>=2){if(data&&size){GLctx.bufferData(target,HEAPU8,usage,data,size)}else{GLctx.bufferData(target,size,usage)}return}GLctx.bufferData(target,data?HEAPU8.subarray(data,data+size):size,usage)};var _emscripten_glBufferData=_glBufferData;var _glBufferSubData=function _glBufferSubData(target,offset,size,data){if(GL.currentContext.version>=2){size&&GLctx.bufferSubData(target,offset,HEAPU8,data,size);return}GLctx.bufferSubData(target,offset,HEAPU8.subarray(data,data+size))};var _emscripten_glBufferSubData=_glBufferSubData;var _glCheckFramebufferStatus=function _glCheckFramebufferStatus(x0){return GLctx.checkFramebufferStatus(x0)};var _emscripten_glCheckFramebufferStatus=_glCheckFramebufferStatus;var _glClear=function _glClear(x0){return GLctx.clear(x0)};var _emscripten_glClear=_glClear;var _glClearBufferfi=function _glClearBufferfi(x0,x1,x2,x3){return GLctx.clearBufferfi(x0,x1,x2,x3)};var _emscripten_glClearBufferfi=_glClearBufferfi;var _glClearBufferfv=function _glClearBufferfv(buffer,drawbuffer,value){GLctx.clearBufferfv(buffer,drawbuffer,HEAPF32,value>>2)};var _emscripten_glClearBufferfv=_glClearBufferfv;var _glClearBufferiv=function _glClearBufferiv(buffer,drawbuffer,value){GLctx.clearBufferiv(buffer,drawbuffer,HEAP32,value>>2)};var _emscripten_glClearBufferiv=_glClearBufferiv;var _glClearBufferuiv=function _glClearBufferuiv(buffer,drawbuffer,value){GLctx.clearBufferuiv(buffer,drawbuffer,HEAPU32,value>>2)};var _emscripten_glClearBufferuiv=_glClearBufferuiv;var _glClearColor=function _glClearColor(x0,x1,x2,x3){return GLctx.clearColor(x0,x1,x2,x3)};var _emscripten_glClearColor=_glClearColor;var _glClearDepthf=function _glClearDepthf(x0){return GLctx.clearDepth(x0)};var _emscripten_glClearDepthf=_glClearDepthf;var _glClearStencil=function _glClearStencil(x0){return GLctx.clearStencil(x0)};var _emscripten_glClearStencil=_glClearStencil;var convertI32PairToI53=function convertI32PairToI53(lo,hi){return(lo>>>0)+hi*4294967296};var _glClientWaitSync=function _glClientWaitSync(sync,flags,timeout_low,timeout_high){var timeout=convertI32PairToI53(timeout_low,timeout_high);return GLctx.clientWaitSync(GL.syncs[sync],flags,timeout)};var _emscripten_glClientWaitSync=_glClientWaitSync;var _glColorMask=function _glColorMask(red,green,blue,alpha){GLctx.colorMask(!!red,!!green,!!blue,!!alpha)};var _emscripten_glColorMask=_glColorMask;var _glCompileShader=function _glCompileShader(shader){GLctx.compileShader(GL.shaders[shader])};var _emscripten_glCompileShader=_glCompileShader;var _glCompressedTexImage2D=function _glCompressedTexImage2D(target,level,internalFormat,width,height,border,imageSize,data){if(GL.currentContext.version>=2){if(GLctx.currentPixelUnpackBufferBinding||!imageSize){GLctx.compressedTexImage2D(target,level,internalFormat,width,height,border,imageSize,data);return}GLctx.compressedTexImage2D(target,level,internalFormat,width,height,border,HEAPU8,data,imageSize);return}GLctx.compressedTexImage2D(target,level,internalFormat,width,height,border,data?HEAPU8.subarray(data,data+imageSize):null)};var _emscripten_glCompressedTexImage2D=_glCompressedTexImage2D;var _glCompressedTexImage3D=function _glCompressedTexImage3D(target,level,internalFormat,width,height,depth,border,imageSize,data){if(GLctx.currentPixelUnpackBufferBinding){GLctx.compressedTexImage3D(target,level,internalFormat,width,height,depth,border,imageSize,data)}else{GLctx.compressedTexImage3D(target,level,internalFormat,width,height,depth,border,HEAPU8,data,imageSize)}};var _emscripten_glCompressedTexImage3D=_glCompressedTexImage3D;var _glCompressedTexSubImage2D=function _glCompressedTexSubImage2D(target,level,xoffset,yoffset,width,height,format,imageSize,data){if(GL.currentContext.version>=2){if(GLctx.currentPixelUnpackBufferBinding||!imageSize){GLctx.compressedTexSubImage2D(target,level,xoffset,yoffset,width,height,format,imageSize,data);return}GLctx.compressedTexSubImage2D(target,level,xoffset,yoffset,width,height,format,HEAPU8,data,imageSize);return}GLctx.compressedTexSubImage2D(target,level,xoffset,yoffset,width,height,format,data?HEAPU8.subarray(data,data+imageSize):null)};var _emscripten_glCompressedTexSubImage2D=_glCompressedTexSubImage2D;var _glCompressedTexSubImage3D=function _glCompressedTexSubImage3D(target,level,xoffset,yoffset,zoffset,width,height,depth,format,imageSize,data){if(GLctx.currentPixelUnpackBufferBinding){GLctx.compressedTexSubImage3D(target,level,xoffset,yoffset,zoffset,width,height,depth,format,imageSize,data)}else{GLctx.compressedTexSubImage3D(target,level,xoffset,yoffset,zoffset,width,height,depth,format,HEAPU8,data,imageSize)}};var _emscripten_glCompressedTexSubImage3D=_glCompressedTexSubImage3D;var _glCopyBufferSubData=function _glCopyBufferSubData(x0,x1,x2,x3,x4){return GLctx.copyBufferSubData(x0,x1,x2,x3,x4)};var _emscripten_glCopyBufferSubData=_glCopyBufferSubData;var _glCopyTexImage2D=function _glCopyTexImage2D(x0,x1,x2,x3,x4,x5,x6,x7){return GLctx.copyTexImage2D(x0,x1,x2,x3,x4,x5,x6,x7)};var _emscripten_glCopyTexImage2D=_glCopyTexImage2D;var _glCopyTexSubImage2D=function _glCopyTexSubImage2D(x0,x1,x2,x3,x4,x5,x6,x7){return GLctx.copyTexSubImage2D(x0,x1,x2,x3,x4,x5,x6,x7)};var _emscripten_glCopyTexSubImage2D=_glCopyTexSubImage2D;var _glCopyTexSubImage3D=function _glCopyTexSubImage3D(x0,x1,x2,x3,x4,x5,x6,x7,x8){return GLctx.copyTexSubImage3D(x0,x1,x2,x3,x4,x5,x6,x7,x8)};var _emscripten_glCopyTexSubImage3D=_glCopyTexSubImage3D;var _glCreateProgram=function _glCreateProgram(){var id=GL.getNewId(GL.programs);var program=GLctx.createProgram();program.name=id;program.maxUniformLength=program.maxAttributeLength=program.maxUniformBlockNameLength=0;program.uniformIdCounter=1;GL.programs[id]=program;return id};var _emscripten_glCreateProgram=_glCreateProgram;var _glCreateShader=function _glCreateShader(shaderType){var id=GL.getNewId(GL.shaders);GL.shaders[id]=GLctx.createShader(shaderType);return id};var _emscripten_glCreateShader=_glCreateShader;var _glCullFace=function _glCullFace(x0){return GLctx.cullFace(x0)};var _emscripten_glCullFace=_glCullFace;var _glDeleteBuffers=function _glDeleteBuffers(n,buffers){for(var i=0;i>2];var buffer=GL.buffers[id];if(!buffer)continue;GLctx.deleteBuffer(buffer);buffer.name=0;GL.buffers[id]=null;if(id==GLctx.currentPixelPackBufferBinding)GLctx.currentPixelPackBufferBinding=0;if(id==GLctx.currentPixelUnpackBufferBinding)GLctx.currentPixelUnpackBufferBinding=0}};var _emscripten_glDeleteBuffers=_glDeleteBuffers;var _glDeleteFramebuffers=function _glDeleteFramebuffers(n,framebuffers){for(var i=0;i>2];var framebuffer=GL.framebuffers[id];if(!framebuffer)continue;GLctx.deleteFramebuffer(framebuffer);framebuffer.name=0;GL.framebuffers[id]=null}};var _emscripten_glDeleteFramebuffers=_glDeleteFramebuffers;var _glDeleteProgram=function _glDeleteProgram(id){if(!id)return;var program=GL.programs[id];if(!program){GL.recordError(1281);return}GLctx.deleteProgram(program);program.name=0;GL.programs[id]=null};var _emscripten_glDeleteProgram=_glDeleteProgram;var _glDeleteQueries=function _glDeleteQueries(n,ids){for(var i=0;i>2];var query=GL.queries[id];if(!query)continue;GLctx.deleteQuery(query);GL.queries[id]=null}};var _emscripten_glDeleteQueries=_glDeleteQueries;var _glDeleteQueriesEXT=function _glDeleteQueriesEXT(n,ids){for(var i=0;i>2];var query=GL.queries[id];if(!query)continue;GLctx.disjointTimerQueryExt["deleteQueryEXT"](query);GL.queries[id]=null}};var _emscripten_glDeleteQueriesEXT=_glDeleteQueriesEXT;var _glDeleteRenderbuffers=function _glDeleteRenderbuffers(n,renderbuffers){for(var i=0;i>2];var renderbuffer=GL.renderbuffers[id];if(!renderbuffer)continue;GLctx.deleteRenderbuffer(renderbuffer);renderbuffer.name=0;GL.renderbuffers[id]=null}};var _emscripten_glDeleteRenderbuffers=_glDeleteRenderbuffers;var _glDeleteSamplers=function _glDeleteSamplers(n,samplers){for(var i=0;i>2];var sampler=GL.samplers[id];if(!sampler)continue;GLctx.deleteSampler(sampler);sampler.name=0;GL.samplers[id]=null}};var _emscripten_glDeleteSamplers=_glDeleteSamplers;var _glDeleteShader=function _glDeleteShader(id){if(!id)return;var shader=GL.shaders[id];if(!shader){GL.recordError(1281);return}GLctx.deleteShader(shader);GL.shaders[id]=null};var _emscripten_glDeleteShader=_glDeleteShader;var _glDeleteSync=function _glDeleteSync(id){if(!id)return;var sync=GL.syncs[id];if(!sync){GL.recordError(1281);return}GLctx.deleteSync(sync);sync.name=0;GL.syncs[id]=null};var _emscripten_glDeleteSync=_glDeleteSync;var _glDeleteTextures=function _glDeleteTextures(n,textures){for(var i=0;i>2];var texture=GL.textures[id];if(!texture)continue;GLctx.deleteTexture(texture);texture.name=0;GL.textures[id]=null}};var _emscripten_glDeleteTextures=_glDeleteTextures;var _glDeleteTransformFeedbacks=function _glDeleteTransformFeedbacks(n,ids){for(var i=0;i>2];var transformFeedback=GL.transformFeedbacks[id];if(!transformFeedback)continue;GLctx.deleteTransformFeedback(transformFeedback);transformFeedback.name=0;GL.transformFeedbacks[id]=null}};var _emscripten_glDeleteTransformFeedbacks=_glDeleteTransformFeedbacks;var _glDeleteVertexArrays=function _glDeleteVertexArrays(n,vaos){for(var i=0;i>2];GLctx.deleteVertexArray(GL.vaos[id]);GL.vaos[id]=null}};var _emscripten_glDeleteVertexArrays=_glDeleteVertexArrays;var _glDeleteVertexArraysOES=_glDeleteVertexArrays;var _emscripten_glDeleteVertexArraysOES=_glDeleteVertexArraysOES;var _glDepthFunc=function _glDepthFunc(x0){return GLctx.depthFunc(x0)};var _emscripten_glDepthFunc=_glDepthFunc;var _glDepthMask=function _glDepthMask(flag){GLctx.depthMask(!!flag)};var _emscripten_glDepthMask=_glDepthMask;var _glDepthRangef=function _glDepthRangef(x0,x1){return GLctx.depthRange(x0,x1)};var _emscripten_glDepthRangef=_glDepthRangef;var _glDetachShader=function _glDetachShader(program,shader){GLctx.detachShader(GL.programs[program],GL.shaders[shader])};var _emscripten_glDetachShader=_glDetachShader;var _glDisable=function _glDisable(x0){return GLctx.disable(x0)};var _emscripten_glDisable=_glDisable;var _glDisableVertexAttribArray=function _glDisableVertexAttribArray(index){GLctx.disableVertexAttribArray(index)};var _emscripten_glDisableVertexAttribArray=_glDisableVertexAttribArray;var _glDrawArrays=function _glDrawArrays(mode,first,count){GLctx.drawArrays(mode,first,count)};var _emscripten_glDrawArrays=_glDrawArrays;var _glDrawArraysInstanced=function _glDrawArraysInstanced(mode,first,count,primcount){GLctx.drawArraysInstanced(mode,first,count,primcount)};var _emscripten_glDrawArraysInstanced=_glDrawArraysInstanced;var _glDrawArraysInstancedANGLE=_glDrawArraysInstanced;var _emscripten_glDrawArraysInstancedANGLE=_glDrawArraysInstancedANGLE;var _glDrawArraysInstancedARB=_glDrawArraysInstanced;var _emscripten_glDrawArraysInstancedARB=_glDrawArraysInstancedARB;var _glDrawArraysInstancedEXT=_glDrawArraysInstanced;var _emscripten_glDrawArraysInstancedEXT=_glDrawArraysInstancedEXT;var _glDrawArraysInstancedNV=_glDrawArraysInstanced;var _emscripten_glDrawArraysInstancedNV=_glDrawArraysInstancedNV;var tempFixedLengthArray=[];var _glDrawBuffers=function _glDrawBuffers(n,bufs){var bufArray=tempFixedLengthArray[n];for(var i=0;i>2]}GLctx.drawBuffers(bufArray)};var _emscripten_glDrawBuffers=_glDrawBuffers;var _glDrawBuffersEXT=_glDrawBuffers;var _emscripten_glDrawBuffersEXT=_glDrawBuffersEXT;var _glDrawBuffersWEBGL=_glDrawBuffers;var _emscripten_glDrawBuffersWEBGL=_glDrawBuffersWEBGL;var _glDrawElements=function _glDrawElements(mode,count,type,indices){GLctx.drawElements(mode,count,type,indices)};var _emscripten_glDrawElements=_glDrawElements;var _glDrawElementsInstanced=function _glDrawElementsInstanced(mode,count,type,indices,primcount){GLctx.drawElementsInstanced(mode,count,type,indices,primcount)};var _emscripten_glDrawElementsInstanced=_glDrawElementsInstanced;var _glDrawElementsInstancedANGLE=_glDrawElementsInstanced;var _emscripten_glDrawElementsInstancedANGLE=_glDrawElementsInstancedANGLE;var _glDrawElementsInstancedARB=_glDrawElementsInstanced;var _emscripten_glDrawElementsInstancedARB=_glDrawElementsInstancedARB;var _glDrawElementsInstancedEXT=_glDrawElementsInstanced;var _emscripten_glDrawElementsInstancedEXT=_glDrawElementsInstancedEXT;var _glDrawElementsInstancedNV=_glDrawElementsInstanced;var _emscripten_glDrawElementsInstancedNV=_glDrawElementsInstancedNV;var _glDrawRangeElements=function _glDrawRangeElements(mode,start,end,count,type,indices){_glDrawElements(mode,count,type,indices)};var _emscripten_glDrawRangeElements=_glDrawRangeElements;var _glEnable=function _glEnable(x0){return GLctx.enable(x0)};var _emscripten_glEnable=_glEnable;var _glEnableVertexAttribArray=function _glEnableVertexAttribArray(index){GLctx.enableVertexAttribArray(index)};var _emscripten_glEnableVertexAttribArray=_glEnableVertexAttribArray;var _glEndQuery=function _glEndQuery(x0){return GLctx.endQuery(x0)};var _emscripten_glEndQuery=_glEndQuery;var _glEndQueryEXT=function _glEndQueryEXT(target){GLctx.disjointTimerQueryExt["endQueryEXT"](target)};var _emscripten_glEndQueryEXT=_glEndQueryEXT;var _glEndTransformFeedback=function _glEndTransformFeedback(){return GLctx.endTransformFeedback()};var _emscripten_glEndTransformFeedback=_glEndTransformFeedback;var _glFenceSync=function _glFenceSync(condition,flags){var sync=GLctx.fenceSync(condition,flags);if(sync){var id=GL.getNewId(GL.syncs);sync.name=id;GL.syncs[id]=sync;return id}return 0};var _emscripten_glFenceSync=_glFenceSync;var _glFinish=function _glFinish(){return GLctx.finish()};var _emscripten_glFinish=_glFinish;var _glFlush=function _glFlush(){return GLctx.flush()};var _emscripten_glFlush=_glFlush;var _glFramebufferRenderbuffer=function _glFramebufferRenderbuffer(target,attachment,renderbuffertarget,renderbuffer){GLctx.framebufferRenderbuffer(target,attachment,renderbuffertarget,GL.renderbuffers[renderbuffer])};var _emscripten_glFramebufferRenderbuffer=_glFramebufferRenderbuffer;var _glFramebufferTexture2D=function _glFramebufferTexture2D(target,attachment,textarget,texture,level){GLctx.framebufferTexture2D(target,attachment,textarget,GL.textures[texture],level)};var _emscripten_glFramebufferTexture2D=_glFramebufferTexture2D;var _glFramebufferTextureLayer=function _glFramebufferTextureLayer(target,attachment,texture,level,layer){GLctx.framebufferTextureLayer(target,attachment,GL.textures[texture],level,layer)};var _emscripten_glFramebufferTextureLayer=_glFramebufferTextureLayer;var _glFrontFace=function _glFrontFace(x0){return GLctx.frontFace(x0)};var _emscripten_glFrontFace=_glFrontFace;var _glGenBuffers=function _glGenBuffers(n,buffers){GL.genObject(n,buffers,"createBuffer",GL.buffers)};var _emscripten_glGenBuffers=_glGenBuffers;var _glGenFramebuffers=function _glGenFramebuffers(n,ids){GL.genObject(n,ids,"createFramebuffer",GL.framebuffers)};var _emscripten_glGenFramebuffers=_glGenFramebuffers;var _glGenQueries=function _glGenQueries(n,ids){GL.genObject(n,ids,"createQuery",GL.queries)};var _emscripten_glGenQueries=_glGenQueries;var _glGenQueriesEXT=function _glGenQueriesEXT(n,ids){for(var i=0;i>2]=0;return}var id=GL.getNewId(GL.queries);query.name=id;GL.queries[id]=query;HEAP32[ids+i*4>>2]=id}};var _emscripten_glGenQueriesEXT=_glGenQueriesEXT;var _glGenRenderbuffers=function _glGenRenderbuffers(n,renderbuffers){GL.genObject(n,renderbuffers,"createRenderbuffer",GL.renderbuffers)};var _emscripten_glGenRenderbuffers=_glGenRenderbuffers;var _glGenSamplers=function _glGenSamplers(n,samplers){GL.genObject(n,samplers,"createSampler",GL.samplers)};var _emscripten_glGenSamplers=_glGenSamplers;var _glGenTextures=function _glGenTextures(n,textures){GL.genObject(n,textures,"createTexture",GL.textures)};var _emscripten_glGenTextures=_glGenTextures;var _glGenTransformFeedbacks=function _glGenTransformFeedbacks(n,ids){GL.genObject(n,ids,"createTransformFeedback",GL.transformFeedbacks)};var _emscripten_glGenTransformFeedbacks=_glGenTransformFeedbacks;var _glGenVertexArrays=function _glGenVertexArrays(n,arrays){GL.genObject(n,arrays,"createVertexArray",GL.vaos)};var _emscripten_glGenVertexArrays=_glGenVertexArrays;var _glGenVertexArraysOES=_glGenVertexArrays;var _emscripten_glGenVertexArraysOES=_glGenVertexArraysOES;var _glGenerateMipmap=function _glGenerateMipmap(x0){return GLctx.generateMipmap(x0)};var _emscripten_glGenerateMipmap=_glGenerateMipmap;var __glGetActiveAttribOrUniform=function __glGetActiveAttribOrUniform(funcName,program,index,bufSize,length,size,type,name){program=GL.programs[program];var info=GLctx[funcName](program,index);if(info){var numBytesWrittenExclNull=name&&stringToUTF8(info.name,name,bufSize);if(length)HEAP32[length>>2]=numBytesWrittenExclNull;if(size)HEAP32[size>>2]=info.size;if(type)HEAP32[type>>2]=info.type}};var _glGetActiveAttrib=function _glGetActiveAttrib(program,index,bufSize,length,size,type,name){__glGetActiveAttribOrUniform("getActiveAttrib",program,index,bufSize,length,size,type,name)};var _emscripten_glGetActiveAttrib=_glGetActiveAttrib;var _glGetActiveUniform=function _glGetActiveUniform(program,index,bufSize,length,size,type,name){__glGetActiveAttribOrUniform("getActiveUniform",program,index,bufSize,length,size,type,name)};var _emscripten_glGetActiveUniform=_glGetActiveUniform;var _glGetActiveUniformBlockName=function _glGetActiveUniformBlockName(program,uniformBlockIndex,bufSize,length,uniformBlockName){program=GL.programs[program];var result=GLctx.getActiveUniformBlockName(program,uniformBlockIndex);if(!result)return;if(uniformBlockName&&bufSize>0){var numBytesWrittenExclNull=stringToUTF8(result,uniformBlockName,bufSize);if(length)HEAP32[length>>2]=numBytesWrittenExclNull}else{if(length)HEAP32[length>>2]=0}};var _emscripten_glGetActiveUniformBlockName=_glGetActiveUniformBlockName;var _glGetActiveUniformBlockiv=function _glGetActiveUniformBlockiv(program,uniformBlockIndex,pname,params){if(!params){GL.recordError(1281);return}program=GL.programs[program];if(pname==35393){var name=GLctx.getActiveUniformBlockName(program,uniformBlockIndex);HEAP32[params>>2]=name.length+1;return}var result=GLctx.getActiveUniformBlockParameter(program,uniformBlockIndex,pname);if(result===null)return;if(pname==35395){for(var i=0;i>2]=result[i]}}else{HEAP32[params>>2]=result}};var _emscripten_glGetActiveUniformBlockiv=_glGetActiveUniformBlockiv;var _glGetActiveUniformsiv=function _glGetActiveUniformsiv(program,uniformCount,uniformIndices,pname,params){if(!params){GL.recordError(1281);return}if(uniformCount>0&&uniformIndices==0){GL.recordError(1281);return}program=GL.programs[program];var ids=[];for(var i=0;i>2])}var result=GLctx.getActiveUniforms(program,ids,pname);if(!result)return;var len=result.length;for(var i=0;i>2]=result[i]}};var _emscripten_glGetActiveUniformsiv=_glGetActiveUniformsiv;var _glGetAttachedShaders=function _glGetAttachedShaders(program,maxCount,count,shaders){var result=GLctx.getAttachedShaders(GL.programs[program]);var len=result.length;if(len>maxCount){len=maxCount}HEAP32[count>>2]=len;for(var i=0;i>2]=id}};var _emscripten_glGetAttachedShaders=_glGetAttachedShaders;var _glGetAttribLocation=function _glGetAttribLocation(program,name){return GLctx.getAttribLocation(GL.programs[program],UTF8ToString(name))};var _emscripten_glGetAttribLocation=_glGetAttribLocation;var writeI53ToI64=function writeI53ToI64(ptr,num){HEAPU32[ptr>>2]=num;var lower=HEAPU32[ptr>>2];HEAPU32[ptr+4>>2]=(num-lower)/4294967296};var webglGetExtensions=function $webglGetExtensions(){var exts=getEmscriptenSupportedExtensions(GLctx);exts=exts.concat(exts.map(function(e){return"GL_"+e}));return exts};var emscriptenWebGLGet=function emscriptenWebGLGet(name_,p,type){if(!p){GL.recordError(1281);return}var ret=undefined;switch(name_){case 36346:ret=1;break;case 36344:if(type!=0&&type!=1){GL.recordError(1280)}return;case 34814:case 36345:ret=0;break;case 34466:var formats=GLctx.getParameter(34467);ret=formats?formats.length:0;break;case 33309:if(GL.currentContext.version<2){GL.recordError(1282);return}ret=webglGetExtensions().length;break;case 33307:case 33308:if(GL.currentContext.version<2){GL.recordError(1280);return}ret=name_==33307?3:0;break}if(ret===undefined){var result=GLctx.getParameter(name_);switch(_typeof(result)){case"number":ret=result;break;case"boolean":ret=result?1:0;break;case"string":GL.recordError(1280);return;case"object":if(result===null){switch(name_){case 34964:case 35725:case 34965:case 36006:case 36007:case 32873:case 34229:case 36662:case 36663:case 35053:case 35055:case 36010:case 35097:case 35869:case 32874:case 36389:case 35983:case 35368:case 34068:{ret=0;break}default:{GL.recordError(1280);return}}}else if(result instanceof Float32Array||result instanceof Uint32Array||result instanceof Int32Array||result instanceof Array){for(var i=0;i>2]=result[i];break;case 2:HEAPF32[p+i*4>>2]=result[i];break;case 4:HEAP8[p+i]=result[i]?1:0;break}}return}else{try{ret=result.name|0}catch(e){GL.recordError(1280);err("GL_INVALID_ENUM in glGet".concat(type,"v: Unknown object returned from WebGL getParameter(").concat(name_,")! (error: ").concat(e,")"));return}}break;default:GL.recordError(1280);err("GL_INVALID_ENUM in glGet".concat(type,"v: Native code calling glGet").concat(type,"v(").concat(name_,") and it returns ").concat(result," of type ").concat(_typeof(result),"!"));return}}switch(type){case 1:writeI53ToI64(p,ret);break;case 0:HEAP32[p>>2]=ret;break;case 2:HEAPF32[p>>2]=ret;break;case 4:HEAP8[p]=ret?1:0;break}};var _glGetBooleanv=function _glGetBooleanv(name_,p){return emscriptenWebGLGet(name_,p,4)};var _emscripten_glGetBooleanv=_glGetBooleanv;var _glGetBufferParameteri64v=function _glGetBufferParameteri64v(target,value,data){if(!data){GL.recordError(1281);return}writeI53ToI64(data,GLctx.getBufferParameter(target,value))};var _emscripten_glGetBufferParameteri64v=_glGetBufferParameteri64v;var _glGetBufferParameteriv=function _glGetBufferParameteriv(target,value,data){if(!data){GL.recordError(1281);return}HEAP32[data>>2]=GLctx.getBufferParameter(target,value)};var _emscripten_glGetBufferParameteriv=_glGetBufferParameteriv;var _glGetError=function _glGetError(){var error=GLctx.getError()||GL.lastError;GL.lastError=0;return error};var _emscripten_glGetError=_glGetError;var _glGetFloatv=function _glGetFloatv(name_,p){return emscriptenWebGLGet(name_,p,2)};var _emscripten_glGetFloatv=_glGetFloatv;var _glGetFragDataLocation=function _glGetFragDataLocation(program,name){return GLctx.getFragDataLocation(GL.programs[program],UTF8ToString(name))};var _emscripten_glGetFragDataLocation=_glGetFragDataLocation;var _glGetFramebufferAttachmentParameteriv=function _glGetFramebufferAttachmentParameteriv(target,attachment,pname,params){var result=GLctx.getFramebufferAttachmentParameter(target,attachment,pname);if(result instanceof WebGLRenderbuffer||result instanceof WebGLTexture){result=result.name|0}HEAP32[params>>2]=result};var _emscripten_glGetFramebufferAttachmentParameteriv=_glGetFramebufferAttachmentParameteriv;var emscriptenWebGLGetIndexed=function emscriptenWebGLGetIndexed(target,index,data,type){if(!data){GL.recordError(1281);return}var result=GLctx.getIndexedParameter(target,index);var ret;switch(_typeof(result)){case"boolean":ret=result?1:0;break;case"number":ret=result;break;case"object":if(result===null){switch(target){case 35983:case 35368:ret=0;break;default:{GL.recordError(1280);return}}}else if(result instanceof WebGLBuffer){ret=result.name|0}else{GL.recordError(1280);return}break;default:GL.recordError(1280);return}switch(type){case 1:writeI53ToI64(data,ret);break;case 0:HEAP32[data>>2]=ret;break;case 2:HEAPF32[data>>2]=ret;break;case 4:HEAP8[data]=ret?1:0;break;default:throw"internal emscriptenWebGLGetIndexed() error, bad type: "+type}};var _glGetInteger64i_v=function _glGetInteger64i_v(target,index,data){return emscriptenWebGLGetIndexed(target,index,data,1)};var _emscripten_glGetInteger64i_v=_glGetInteger64i_v;var _glGetInteger64v=function _glGetInteger64v(name_,p){emscriptenWebGLGet(name_,p,1)};var _emscripten_glGetInteger64v=_glGetInteger64v;var _glGetIntegeri_v=function _glGetIntegeri_v(target,index,data){return emscriptenWebGLGetIndexed(target,index,data,0)};var _emscripten_glGetIntegeri_v=_glGetIntegeri_v;var _glGetIntegerv=function _glGetIntegerv(name_,p){return emscriptenWebGLGet(name_,p,0)};var _emscripten_glGetIntegerv=_glGetIntegerv;var _glGetInternalformativ=function _glGetInternalformativ(target,internalformat,pname,bufSize,params){if(bufSize<0){GL.recordError(1281);return}if(!params){GL.recordError(1281);return}var ret=GLctx.getInternalformatParameter(target,internalformat,pname);if(ret===null)return;for(var i=0;i>2]=ret[i]}};var _emscripten_glGetInternalformativ=_glGetInternalformativ;var _glGetProgramBinary=function _glGetProgramBinary(program,bufSize,length,binaryFormat,binary){GL.recordError(1282)};var _emscripten_glGetProgramBinary=_glGetProgramBinary;var _glGetProgramInfoLog=function _glGetProgramInfoLog(program,maxLength,length,infoLog){var log=GLctx.getProgramInfoLog(GL.programs[program]);if(log===null)log="(unknown error)";var numBytesWrittenExclNull=maxLength>0&&infoLog?stringToUTF8(log,infoLog,maxLength):0;if(length)HEAP32[length>>2]=numBytesWrittenExclNull};var _emscripten_glGetProgramInfoLog=_glGetProgramInfoLog;var _glGetProgramiv=function _glGetProgramiv(program,pname,p){if(!p){GL.recordError(1281);return}if(program>=GL.counter){GL.recordError(1281);return}program=GL.programs[program];if(pname==35716){var log=GLctx.getProgramInfoLog(program);if(log===null)log="(unknown error)";HEAP32[p>>2]=log.length+1}else if(pname==35719){if(!program.maxUniformLength){for(var i=0;i>2]=program.maxUniformLength}else if(pname==35722){if(!program.maxAttributeLength){for(var i=0;i>2]=program.maxAttributeLength}else if(pname==35381){if(!program.maxUniformBlockNameLength){for(var i=0;i>2]=program.maxUniformBlockNameLength}else{HEAP32[p>>2]=GLctx.getProgramParameter(program,pname)}};var _emscripten_glGetProgramiv=_glGetProgramiv;var _glGetQueryObjecti64vEXT=function _glGetQueryObjecti64vEXT(id,pname,params){if(!params){GL.recordError(1281);return}var query=GL.queries[id];var param;if(GL.currentContext.version<2){param=GLctx.disjointTimerQueryExt["getQueryObjectEXT"](query,pname)}else{param=GLctx.getQueryParameter(query,pname)}var ret;if(typeof param=="boolean"){ret=param?1:0}else{ret=param}writeI53ToI64(params,ret)};var _emscripten_glGetQueryObjecti64vEXT=_glGetQueryObjecti64vEXT;var _glGetQueryObjectivEXT=function _glGetQueryObjectivEXT(id,pname,params){if(!params){GL.recordError(1281);return}var query=GL.queries[id];var param=GLctx.disjointTimerQueryExt["getQueryObjectEXT"](query,pname);var ret;if(typeof param=="boolean"){ret=param?1:0}else{ret=param}HEAP32[params>>2]=ret};var _emscripten_glGetQueryObjectivEXT=_glGetQueryObjectivEXT;var _glGetQueryObjectui64vEXT=_glGetQueryObjecti64vEXT;var _emscripten_glGetQueryObjectui64vEXT=_glGetQueryObjectui64vEXT;var _glGetQueryObjectuiv=function _glGetQueryObjectuiv(id,pname,params){if(!params){GL.recordError(1281);return}var query=GL.queries[id];var param=GLctx.getQueryParameter(query,pname);var ret;if(typeof param=="boolean"){ret=param?1:0}else{ret=param}HEAP32[params>>2]=ret};var _emscripten_glGetQueryObjectuiv=_glGetQueryObjectuiv;var _glGetQueryObjectuivEXT=_glGetQueryObjectivEXT;var _emscripten_glGetQueryObjectuivEXT=_glGetQueryObjectuivEXT;var _glGetQueryiv=function _glGetQueryiv(target,pname,params){if(!params){GL.recordError(1281);return}HEAP32[params>>2]=GLctx.getQuery(target,pname)};var _emscripten_glGetQueryiv=_glGetQueryiv;var _glGetQueryivEXT=function _glGetQueryivEXT(target,pname,params){if(!params){GL.recordError(1281);return}HEAP32[params>>2]=GLctx.disjointTimerQueryExt["getQueryEXT"](target,pname)};var _emscripten_glGetQueryivEXT=_glGetQueryivEXT;var _glGetRenderbufferParameteriv=function _glGetRenderbufferParameteriv(target,pname,params){if(!params){GL.recordError(1281);return}HEAP32[params>>2]=GLctx.getRenderbufferParameter(target,pname)};var _emscripten_glGetRenderbufferParameteriv=_glGetRenderbufferParameteriv;var _glGetSamplerParameterfv=function _glGetSamplerParameterfv(sampler,pname,params){if(!params){GL.recordError(1281);return}HEAPF32[params>>2]=GLctx.getSamplerParameter(GL.samplers[sampler],pname)};var _emscripten_glGetSamplerParameterfv=_glGetSamplerParameterfv;var _glGetSamplerParameteriv=function _glGetSamplerParameteriv(sampler,pname,params){if(!params){GL.recordError(1281);return}HEAP32[params>>2]=GLctx.getSamplerParameter(GL.samplers[sampler],pname)};var _emscripten_glGetSamplerParameteriv=_glGetSamplerParameteriv;var _glGetShaderInfoLog=function _glGetShaderInfoLog(shader,maxLength,length,infoLog){var log=GLctx.getShaderInfoLog(GL.shaders[shader]);if(log===null)log="(unknown error)";var numBytesWrittenExclNull=maxLength>0&&infoLog?stringToUTF8(log,infoLog,maxLength):0;if(length)HEAP32[length>>2]=numBytesWrittenExclNull};var _emscripten_glGetShaderInfoLog=_glGetShaderInfoLog;var _glGetShaderPrecisionFormat=function _glGetShaderPrecisionFormat(shaderType,precisionType,range,precision){var result=GLctx.getShaderPrecisionFormat(shaderType,precisionType);HEAP32[range>>2]=result.rangeMin;HEAP32[range+4>>2]=result.rangeMax;HEAP32[precision>>2]=result.precision};var _emscripten_glGetShaderPrecisionFormat=_glGetShaderPrecisionFormat;var _glGetShaderSource=function _glGetShaderSource(shader,bufSize,length,source){var result=GLctx.getShaderSource(GL.shaders[shader]);if(!result)return;var numBytesWrittenExclNull=bufSize>0&&source?stringToUTF8(result,source,bufSize):0;if(length)HEAP32[length>>2]=numBytesWrittenExclNull};var _emscripten_glGetShaderSource=_glGetShaderSource;var _glGetShaderiv=function _glGetShaderiv(shader,pname,p){if(!p){GL.recordError(1281);return}if(pname==35716){var log=GLctx.getShaderInfoLog(GL.shaders[shader]);if(log===null)log="(unknown error)";var logLength=log?log.length+1:0;HEAP32[p>>2]=logLength}else if(pname==35720){var source=GLctx.getShaderSource(GL.shaders[shader]);var sourceLength=source?source.length+1:0;HEAP32[p>>2]=sourceLength}else{HEAP32[p>>2]=GLctx.getShaderParameter(GL.shaders[shader],pname)}};var _emscripten_glGetShaderiv=_glGetShaderiv;var stringToNewUTF8=function stringToNewUTF8(str){var size=lengthBytesUTF8(str)+1;var ret=_malloc(size);if(ret)stringToUTF8(str,ret,size);return ret};var _glGetString=function _glGetString(name_){var ret=GL.stringCache[name_];if(!ret){switch(name_){case 7939:ret=stringToNewUTF8(webglGetExtensions().join(" "));break;case 7936:case 7937:case 37445:case 37446:var s=GLctx.getParameter(name_);if(!s){GL.recordError(1280)}ret=s?stringToNewUTF8(s):0;break;case 7938:var webGLVersion=GLctx.getParameter(7938);var glVersion="OpenGL ES 2.0 (".concat(webGLVersion,")");if(GL.currentContext.version>=2)glVersion="OpenGL ES 3.0 (".concat(webGLVersion,")");ret=stringToNewUTF8(glVersion);break;case 35724:var glslVersion=GLctx.getParameter(35724);var ver_re=/^WebGL GLSL ES ([0-9]\.[0-9][0-9]?)(?:$| .*)/;var ver_num=glslVersion.match(ver_re);if(ver_num!==null){if(ver_num[1].length==3)ver_num[1]=ver_num[1]+"0";glslVersion="OpenGL ES GLSL ES ".concat(ver_num[1]," (").concat(glslVersion,")")}ret=stringToNewUTF8(glslVersion);break;default:GL.recordError(1280)}GL.stringCache[name_]=ret}return ret};var _emscripten_glGetString=_glGetString;var _glGetStringi=function _glGetStringi(name,index){if(GL.currentContext.version<2){GL.recordError(1282);return 0}var stringiCache=GL.stringiCache[name];if(stringiCache){if(index<0||index>=stringiCache.length){GL.recordError(1281);return 0}return stringiCache[index]}switch(name){case 7939:var exts=webglGetExtensions().map(stringToNewUTF8);stringiCache=GL.stringiCache[name]=exts;if(index<0||index>=stringiCache.length){GL.recordError(1281);return 0}return stringiCache[index];default:GL.recordError(1280);return 0}};var _emscripten_glGetStringi=_glGetStringi;var _glGetSynciv=function _glGetSynciv(sync,pname,bufSize,length,values){if(bufSize<0){GL.recordError(1281);return}if(!values){GL.recordError(1281);return}var ret=GLctx.getSyncParameter(GL.syncs[sync],pname);if(ret!==null){HEAP32[values>>2]=ret;if(length)HEAP32[length>>2]=1}};var _emscripten_glGetSynciv=_glGetSynciv;var _glGetTexParameterfv=function _glGetTexParameterfv(target,pname,params){if(!params){GL.recordError(1281);return}HEAPF32[params>>2]=GLctx.getTexParameter(target,pname)};var _emscripten_glGetTexParameterfv=_glGetTexParameterfv;var _glGetTexParameteriv=function _glGetTexParameteriv(target,pname,params){if(!params){GL.recordError(1281);return}HEAP32[params>>2]=GLctx.getTexParameter(target,pname)};var _emscripten_glGetTexParameteriv=_glGetTexParameteriv;var _glGetTransformFeedbackVarying=function _glGetTransformFeedbackVarying(program,index,bufSize,length,size,type,name){program=GL.programs[program];var info=GLctx.getTransformFeedbackVarying(program,index);if(!info)return;if(name&&bufSize>0){var numBytesWrittenExclNull=stringToUTF8(info.name,name,bufSize);if(length)HEAP32[length>>2]=numBytesWrittenExclNull}else{if(length)HEAP32[length>>2]=0}if(size)HEAP32[size>>2]=info.size;if(type)HEAP32[type>>2]=info.type};var _emscripten_glGetTransformFeedbackVarying=_glGetTransformFeedbackVarying;var _glGetUniformBlockIndex=function _glGetUniformBlockIndex(program,uniformBlockName){return GLctx.getUniformBlockIndex(GL.programs[program],UTF8ToString(uniformBlockName))};var _emscripten_glGetUniformBlockIndex=_glGetUniformBlockIndex;var _glGetUniformIndices=function _glGetUniformIndices(program,uniformCount,uniformNames,uniformIndices){if(!uniformIndices){GL.recordError(1281);return}if(uniformCount>0&&(uniformNames==0||uniformIndices==0)){GL.recordError(1281);return}program=GL.programs[program];var names=[];for(var i=0;i>2]));var result=GLctx.getUniformIndices(program,names);if(!result)return;var len=result.length;for(var i=0;i>2]=result[i]}};var _emscripten_glGetUniformIndices=_glGetUniformIndices;var webglGetLeftBracePos=function webglGetLeftBracePos(name){return name.slice(-1)=="]"&&name.lastIndexOf("[")};var webglPrepareUniformLocationsBeforeFirstUse=function webglPrepareUniformLocationsBeforeFirstUse(program){var uniformLocsById=program.uniformLocsById,uniformSizeAndIdsByName=program.uniformSizeAndIdsByName,i,j;if(!uniformLocsById){program.uniformLocsById=uniformLocsById={};program.uniformArrayNamesById={};for(i=0;i0?nm.slice(0,lb):nm;var id=program.uniformIdCounter;program.uniformIdCounter+=sz;uniformSizeAndIdsByName[arrayName]=[sz,id];for(j=0;j0){arrayIndex=jstoi_q(name.slice(leftBrace+1))>>>0;uniformBaseName=name.slice(0,leftBrace)}var sizeAndId=program.uniformSizeAndIdsByName[uniformBaseName];if(sizeAndId&&arrayIndex0?"[".concat(webglLoc,"]"):""))}return webglLoc}else{GL.recordError(1282)}};var emscriptenWebGLGetUniform=function emscriptenWebGLGetUniform(program,location,params,type){if(!params){GL.recordError(1281);return}program=GL.programs[program];webglPrepareUniformLocationsBeforeFirstUse(program);var data=GLctx.getUniform(program,webglGetUniformLocation(location));if(typeof data=="number"||typeof data=="boolean"){switch(type){case 0:HEAP32[params>>2]=data;break;case 2:HEAPF32[params>>2]=data;break}}else{for(var i=0;i>2]=data[i];break;case 2:HEAPF32[params+i*4>>2]=data[i];break}}}};var _glGetUniformfv=function _glGetUniformfv(program,location,params){emscriptenWebGLGetUniform(program,location,params,2)};var _emscripten_glGetUniformfv=_glGetUniformfv;var _glGetUniformiv=function _glGetUniformiv(program,location,params){emscriptenWebGLGetUniform(program,location,params,0)};var _emscripten_glGetUniformiv=_glGetUniformiv;var _glGetUniformuiv=function _glGetUniformuiv(program,location,params){return emscriptenWebGLGetUniform(program,location,params,0)};var _emscripten_glGetUniformuiv=_glGetUniformuiv;var emscriptenWebGLGetVertexAttrib=function emscriptenWebGLGetVertexAttrib(index,pname,params,type){if(!params){GL.recordError(1281);return}var data=GLctx.getVertexAttrib(index,pname);if(pname==34975){HEAP32[params>>2]=data&&data["name"]}else if(typeof data=="number"||typeof data=="boolean"){switch(type){case 0:HEAP32[params>>2]=data;break;case 2:HEAPF32[params>>2]=data;break;case 5:HEAP32[params>>2]=Math.fround(data);break}}else{for(var i=0;i>2]=data[i];break;case 2:HEAPF32[params+i*4>>2]=data[i];break;case 5:HEAP32[params+i*4>>2]=Math.fround(data[i]);break}}}};var _glGetVertexAttribIiv=function _glGetVertexAttribIiv(index,pname,params){emscriptenWebGLGetVertexAttrib(index,pname,params,0)};var _emscripten_glGetVertexAttribIiv=_glGetVertexAttribIiv;var _glGetVertexAttribIuiv=_glGetVertexAttribIiv;var _emscripten_glGetVertexAttribIuiv=_glGetVertexAttribIuiv;var _glGetVertexAttribPointerv=function _glGetVertexAttribPointerv(index,pname,pointer){if(!pointer){GL.recordError(1281);return}HEAP32[pointer>>2]=GLctx.getVertexAttribOffset(index,pname)};var _emscripten_glGetVertexAttribPointerv=_glGetVertexAttribPointerv;var _glGetVertexAttribfv=function _glGetVertexAttribfv(index,pname,params){emscriptenWebGLGetVertexAttrib(index,pname,params,2)};var _emscripten_glGetVertexAttribfv=_glGetVertexAttribfv;var _glGetVertexAttribiv=function _glGetVertexAttribiv(index,pname,params){emscriptenWebGLGetVertexAttrib(index,pname,params,5)};var _emscripten_glGetVertexAttribiv=_glGetVertexAttribiv;var _glHint=function _glHint(x0,x1){return GLctx.hint(x0,x1)};var _emscripten_glHint=_glHint;var _glInvalidateFramebuffer=function _glInvalidateFramebuffer(target,numAttachments,attachments){var list=tempFixedLengthArray[numAttachments];for(var i=0;i>2]}GLctx.invalidateFramebuffer(target,list)};var _emscripten_glInvalidateFramebuffer=_glInvalidateFramebuffer;var _glInvalidateSubFramebuffer=function _glInvalidateSubFramebuffer(target,numAttachments,attachments,x,y,width,height){var list=tempFixedLengthArray[numAttachments];for(var i=0;i>2]}GLctx.invalidateSubFramebuffer(target,list,x,y,width,height)};var _emscripten_glInvalidateSubFramebuffer=_glInvalidateSubFramebuffer;var _glIsBuffer=function _glIsBuffer(buffer){var b=GL.buffers[buffer];if(!b)return 0;return GLctx.isBuffer(b)};var _emscripten_glIsBuffer=_glIsBuffer;var _glIsEnabled=function _glIsEnabled(x0){return GLctx.isEnabled(x0)};var _emscripten_glIsEnabled=_glIsEnabled;var _glIsFramebuffer=function _glIsFramebuffer(framebuffer){var fb=GL.framebuffers[framebuffer];if(!fb)return 0;return GLctx.isFramebuffer(fb)};var _emscripten_glIsFramebuffer=_glIsFramebuffer;var _glIsProgram=function _glIsProgram(program){program=GL.programs[program];if(!program)return 0;return GLctx.isProgram(program)};var _emscripten_glIsProgram=_glIsProgram;var _glIsQuery=function _glIsQuery(id){var query=GL.queries[id];if(!query)return 0;return GLctx.isQuery(query)};var _emscripten_glIsQuery=_glIsQuery;var _glIsQueryEXT=function _glIsQueryEXT(id){var query=GL.queries[id];if(!query)return 0;return GLctx.disjointTimerQueryExt["isQueryEXT"](query)};var _emscripten_glIsQueryEXT=_glIsQueryEXT;var _glIsRenderbuffer=function _glIsRenderbuffer(renderbuffer){var rb=GL.renderbuffers[renderbuffer];if(!rb)return 0;return GLctx.isRenderbuffer(rb)};var _emscripten_glIsRenderbuffer=_glIsRenderbuffer;var _glIsSampler=function _glIsSampler(id){var sampler=GL.samplers[id];if(!sampler)return 0;return GLctx.isSampler(sampler)};var _emscripten_glIsSampler=_glIsSampler;var _glIsShader=function _glIsShader(shader){var s=GL.shaders[shader];if(!s)return 0;return GLctx.isShader(s)};var _emscripten_glIsShader=_glIsShader;var _glIsSync=function _glIsSync(sync){return GLctx.isSync(GL.syncs[sync])};var _emscripten_glIsSync=_glIsSync;var _glIsTexture=function _glIsTexture(id){var texture=GL.textures[id];if(!texture)return 0;return GLctx.isTexture(texture)};var _emscripten_glIsTexture=_glIsTexture;var _glIsTransformFeedback=function _glIsTransformFeedback(id){return GLctx.isTransformFeedback(GL.transformFeedbacks[id])};var _emscripten_glIsTransformFeedback=_glIsTransformFeedback;var _glIsVertexArray=function _glIsVertexArray(array){var vao=GL.vaos[array];if(!vao)return 0;return GLctx.isVertexArray(vao)};var _emscripten_glIsVertexArray=_glIsVertexArray;var _glIsVertexArrayOES=_glIsVertexArray;var _emscripten_glIsVertexArrayOES=_glIsVertexArrayOES;var _glLineWidth=function _glLineWidth(x0){return GLctx.lineWidth(x0)};var _emscripten_glLineWidth=_glLineWidth;var _glLinkProgram=function _glLinkProgram(program){program=GL.programs[program];GLctx.linkProgram(program);program.uniformLocsById=0;program.uniformSizeAndIdsByName={}};var _emscripten_glLinkProgram=_glLinkProgram;var _glPauseTransformFeedback=function _glPauseTransformFeedback(){return GLctx.pauseTransformFeedback()};var _emscripten_glPauseTransformFeedback=_glPauseTransformFeedback;var _glPixelStorei=function _glPixelStorei(pname,param){if(pname==3317){GL.unpackAlignment=param}else if(pname==3314){GL.unpackRowLength=param}GLctx.pixelStorei(pname,param)};var _emscripten_glPixelStorei=_glPixelStorei;var _glPolygonOffset=function _glPolygonOffset(x0,x1){return GLctx.polygonOffset(x0,x1)};var _emscripten_glPolygonOffset=_glPolygonOffset;var _glProgramBinary=function _glProgramBinary(program,binaryFormat,binary,length){GL.recordError(1280)};var _emscripten_glProgramBinary=_glProgramBinary;var _glProgramParameteri=function _glProgramParameteri(program,pname,value){GL.recordError(1280)};var _emscripten_glProgramParameteri=_glProgramParameteri;var _glQueryCounterEXT=function _glQueryCounterEXT(id,target){GLctx.disjointTimerQueryExt["queryCounterEXT"](GL.queries[id],target)};var _emscripten_glQueryCounterEXT=_glQueryCounterEXT;var _glReadBuffer=function _glReadBuffer(x0){return GLctx.readBuffer(x0)};var _emscripten_glReadBuffer=_glReadBuffer;var computeUnpackAlignedImageSize=function computeUnpackAlignedImageSize(width,height,sizePerPixel){function roundedToNextMultipleOf(x,y){return x+y-1&-y}var plainRowSize=(GL.unpackRowLength||width)*sizePerPixel;var alignedRowSize=roundedToNextMultipleOf(plainRowSize,GL.unpackAlignment);return height*alignedRowSize};var colorChannelsInGlTextureFormat=function colorChannelsInGlTextureFormat(format){var colorChannels={5:3,6:4,8:2,29502:3,29504:4,26917:2,26918:2,29846:3,29847:4};return colorChannels[format-6402]||1};var heapObjectForWebGLType=function heapObjectForWebGLType(type){type-=5120;if(type==0)return HEAP8;if(type==1)return HEAPU8;if(type==2)return HEAP16;if(type==4)return HEAP32;if(type==6)return HEAPF32;if(type==5||type==28922||type==28520||type==30779||type==30782)return HEAPU32;return HEAPU16};var toTypedArrayIndex=function toTypedArrayIndex(pointer,heap){return pointer>>>31-Math.clz32(heap.BYTES_PER_ELEMENT)};var emscriptenWebGLGetTexPixelData=function emscriptenWebGLGetTexPixelData(type,format,width,height,pixels,internalFormat){var heap=heapObjectForWebGLType(type);var sizePerPixel=colorChannelsInGlTextureFormat(format)*heap.BYTES_PER_ELEMENT;var bytes=computeUnpackAlignedImageSize(width,height,sizePerPixel);return heap.subarray(toTypedArrayIndex(pixels,heap),toTypedArrayIndex(pixels+bytes,heap))};var _glReadPixels=function _glReadPixels(x,y,width,height,format,type,pixels){if(GL.currentContext.version>=2){if(GLctx.currentPixelPackBufferBinding){GLctx.readPixels(x,y,width,height,format,type,pixels);return}var heap=heapObjectForWebGLType(type);var target=toTypedArrayIndex(pixels,heap);GLctx.readPixels(x,y,width,height,format,type,heap,target);return}var pixelData=emscriptenWebGLGetTexPixelData(type,format,width,height,pixels,format);if(!pixelData){GL.recordError(1280);return}GLctx.readPixels(x,y,width,height,format,type,pixelData)};var _emscripten_glReadPixels=_glReadPixels;var _glReleaseShaderCompiler=function _glReleaseShaderCompiler(){};var _emscripten_glReleaseShaderCompiler=_glReleaseShaderCompiler;var _glRenderbufferStorage=function _glRenderbufferStorage(x0,x1,x2,x3){return GLctx.renderbufferStorage(x0,x1,x2,x3)};var _emscripten_glRenderbufferStorage=_glRenderbufferStorage;var _glRenderbufferStorageMultisample=function _glRenderbufferStorageMultisample(x0,x1,x2,x3,x4){return GLctx.renderbufferStorageMultisample(x0,x1,x2,x3,x4)};var _emscripten_glRenderbufferStorageMultisample=_glRenderbufferStorageMultisample;var _glResumeTransformFeedback=function _glResumeTransformFeedback(){return GLctx.resumeTransformFeedback()};var _emscripten_glResumeTransformFeedback=_glResumeTransformFeedback;var _glSampleCoverage=function _glSampleCoverage(value,invert){GLctx.sampleCoverage(value,!!invert)};var _emscripten_glSampleCoverage=_glSampleCoverage;var _glSamplerParameterf=function _glSamplerParameterf(sampler,pname,param){GLctx.samplerParameterf(GL.samplers[sampler],pname,param)};var _emscripten_glSamplerParameterf=_glSamplerParameterf;var _glSamplerParameterfv=function _glSamplerParameterfv(sampler,pname,params){var param=HEAPF32[params>>2];GLctx.samplerParameterf(GL.samplers[sampler],pname,param)};var _emscripten_glSamplerParameterfv=_glSamplerParameterfv;var _glSamplerParameteri=function _glSamplerParameteri(sampler,pname,param){GLctx.samplerParameteri(GL.samplers[sampler],pname,param)};var _emscripten_glSamplerParameteri=_glSamplerParameteri;var _glSamplerParameteriv=function _glSamplerParameteriv(sampler,pname,params){var param=HEAP32[params>>2];GLctx.samplerParameteri(GL.samplers[sampler],pname,param)};var _emscripten_glSamplerParameteriv=_glSamplerParameteriv;var _glScissor=function _glScissor(x0,x1,x2,x3){return GLctx.scissor(x0,x1,x2,x3)};var _emscripten_glScissor=_glScissor;var _glShaderBinary=function _glShaderBinary(count,shaders,binaryformat,binary,length){GL.recordError(1280)};var _emscripten_glShaderBinary=_glShaderBinary;var _glShaderSource=function _glShaderSource(shader,count,string,length){var source=GL.getSource(shader,count,string,length);GLctx.shaderSource(GL.shaders[shader],source)};var _emscripten_glShaderSource=_glShaderSource;var _glStencilFunc=function _glStencilFunc(x0,x1,x2){return GLctx.stencilFunc(x0,x1,x2)};var _emscripten_glStencilFunc=_glStencilFunc;var _glStencilFuncSeparate=function _glStencilFuncSeparate(x0,x1,x2,x3){return GLctx.stencilFuncSeparate(x0,x1,x2,x3)};var _emscripten_glStencilFuncSeparate=_glStencilFuncSeparate;var _glStencilMask=function _glStencilMask(x0){return GLctx.stencilMask(x0)};var _emscripten_glStencilMask=_glStencilMask;var _glStencilMaskSeparate=function _glStencilMaskSeparate(x0,x1){return GLctx.stencilMaskSeparate(x0,x1)};var _emscripten_glStencilMaskSeparate=_glStencilMaskSeparate;var _glStencilOp=function _glStencilOp(x0,x1,x2){return GLctx.stencilOp(x0,x1,x2)};var _emscripten_glStencilOp=_glStencilOp;var _glStencilOpSeparate=function _glStencilOpSeparate(x0,x1,x2,x3){return GLctx.stencilOpSeparate(x0,x1,x2,x3)};var _emscripten_glStencilOpSeparate=_glStencilOpSeparate;var _glTexImage2D=function _glTexImage2D(target,level,internalFormat,width,height,border,format,type,pixels){if(GL.currentContext.version>=2){if(GLctx.currentPixelUnpackBufferBinding){GLctx.texImage2D(target,level,internalFormat,width,height,border,format,type,pixels);return}if(pixels){var heap=heapObjectForWebGLType(type);var index=toTypedArrayIndex(pixels,heap);GLctx.texImage2D(target,level,internalFormat,width,height,border,format,type,heap,index);return}}var pixelData=pixels?emscriptenWebGLGetTexPixelData(type,format,width,height,pixels,internalFormat):null;GLctx.texImage2D(target,level,internalFormat,width,height,border,format,type,pixelData)};var _emscripten_glTexImage2D=_glTexImage2D;var _glTexImage3D=function _glTexImage3D(target,level,internalFormat,width,height,depth,border,format,type,pixels){if(GLctx.currentPixelUnpackBufferBinding){GLctx.texImage3D(target,level,internalFormat,width,height,depth,border,format,type,pixels)}else if(pixels){var heap=heapObjectForWebGLType(type);GLctx.texImage3D(target,level,internalFormat,width,height,depth,border,format,type,heap,toTypedArrayIndex(pixels,heap))}else{GLctx.texImage3D(target,level,internalFormat,width,height,depth,border,format,type,null)}};var _emscripten_glTexImage3D=_glTexImage3D;var _glTexParameterf=function _glTexParameterf(x0,x1,x2){return GLctx.texParameterf(x0,x1,x2)};var _emscripten_glTexParameterf=_glTexParameterf;var _glTexParameterfv=function _glTexParameterfv(target,pname,params){var param=HEAPF32[params>>2];GLctx.texParameterf(target,pname,param)};var _emscripten_glTexParameterfv=_glTexParameterfv;var _glTexParameteri=function _glTexParameteri(x0,x1,x2){return GLctx.texParameteri(x0,x1,x2)};var _emscripten_glTexParameteri=_glTexParameteri;var _glTexParameteriv=function _glTexParameteriv(target,pname,params){var param=HEAP32[params>>2];GLctx.texParameteri(target,pname,param)};var _emscripten_glTexParameteriv=_glTexParameteriv;var _glTexStorage2D=function _glTexStorage2D(x0,x1,x2,x3,x4){return GLctx.texStorage2D(x0,x1,x2,x3,x4)};var _emscripten_glTexStorage2D=_glTexStorage2D;var _glTexStorage3D=function _glTexStorage3D(x0,x1,x2,x3,x4,x5){return GLctx.texStorage3D(x0,x1,x2,x3,x4,x5)};var _emscripten_glTexStorage3D=_glTexStorage3D;var _glTexSubImage2D=function _glTexSubImage2D(target,level,xoffset,yoffset,width,height,format,type,pixels){if(GL.currentContext.version>=2){if(GLctx.currentPixelUnpackBufferBinding){GLctx.texSubImage2D(target,level,xoffset,yoffset,width,height,format,type,pixels);return}if(pixels){var heap=heapObjectForWebGLType(type);GLctx.texSubImage2D(target,level,xoffset,yoffset,width,height,format,type,heap,toTypedArrayIndex(pixels,heap));return}}var pixelData=pixels?emscriptenWebGLGetTexPixelData(type,format,width,height,pixels,0):null;GLctx.texSubImage2D(target,level,xoffset,yoffset,width,height,format,type,pixelData)};var _emscripten_glTexSubImage2D=_glTexSubImage2D;var _glTexSubImage3D=function _glTexSubImage3D(target,level,xoffset,yoffset,zoffset,width,height,depth,format,type,pixels){if(GLctx.currentPixelUnpackBufferBinding){GLctx.texSubImage3D(target,level,xoffset,yoffset,zoffset,width,height,depth,format,type,pixels)}else if(pixels){var heap=heapObjectForWebGLType(type);GLctx.texSubImage3D(target,level,xoffset,yoffset,zoffset,width,height,depth,format,type,heap,toTypedArrayIndex(pixels,heap))}else{GLctx.texSubImage3D(target,level,xoffset,yoffset,zoffset,width,height,depth,format,type,null)}};var _emscripten_glTexSubImage3D=_glTexSubImage3D;var _glTransformFeedbackVaryings=function _glTransformFeedbackVaryings(program,count,varyings,bufferMode){program=GL.programs[program];var vars=[];for(var i=0;i>2]));GLctx.transformFeedbackVaryings(program,vars,bufferMode)};var _emscripten_glTransformFeedbackVaryings=_glTransformFeedbackVaryings;var _glUniform1f=function _glUniform1f(location,v0){GLctx.uniform1f(webglGetUniformLocation(location),v0)};var _emscripten_glUniform1f=_glUniform1f;var miniTempWebGLFloatBuffers=[];var _glUniform1fv=function _glUniform1fv(location,count,value){if(GL.currentContext.version>=2){count&&GLctx.uniform1fv(webglGetUniformLocation(location),HEAPF32,value>>2,count);return}if(count<=288){var view=miniTempWebGLFloatBuffers[count];for(var i=0;i>2]}}else{var view=HEAPF32.subarray(value>>2,value+count*4>>2)}GLctx.uniform1fv(webglGetUniformLocation(location),view)};var _emscripten_glUniform1fv=_glUniform1fv;var _glUniform1i=function _glUniform1i(location,v0){GLctx.uniform1i(webglGetUniformLocation(location),v0)};var _emscripten_glUniform1i=_glUniform1i;var miniTempWebGLIntBuffers=[];var _glUniform1iv=function _glUniform1iv(location,count,value){if(GL.currentContext.version>=2){count&&GLctx.uniform1iv(webglGetUniformLocation(location),HEAP32,value>>2,count);return}if(count<=288){var view=miniTempWebGLIntBuffers[count];for(var i=0;i>2]}}else{var view=HEAP32.subarray(value>>2,value+count*4>>2)}GLctx.uniform1iv(webglGetUniformLocation(location),view)};var _emscripten_glUniform1iv=_glUniform1iv;var _glUniform1ui=function _glUniform1ui(location,v0){GLctx.uniform1ui(webglGetUniformLocation(location),v0)};var _emscripten_glUniform1ui=_glUniform1ui;var _glUniform1uiv=function _glUniform1uiv(location,count,value){count&&GLctx.uniform1uiv(webglGetUniformLocation(location),HEAPU32,value>>2,count)};var _emscripten_glUniform1uiv=_glUniform1uiv;var _glUniform2f=function _glUniform2f(location,v0,v1){GLctx.uniform2f(webglGetUniformLocation(location),v0,v1)};var _emscripten_glUniform2f=_glUniform2f;var _glUniform2fv=function _glUniform2fv(location,count,value){if(GL.currentContext.version>=2){count&&GLctx.uniform2fv(webglGetUniformLocation(location),HEAPF32,value>>2,count*2);return}if(count<=144){var view=miniTempWebGLFloatBuffers[2*count];for(var i=0;i<2*count;i+=2){view[i]=HEAPF32[value+4*i>>2];view[i+1]=HEAPF32[value+(4*i+4)>>2]}}else{var view=HEAPF32.subarray(value>>2,value+count*8>>2)}GLctx.uniform2fv(webglGetUniformLocation(location),view)};var _emscripten_glUniform2fv=_glUniform2fv;var _glUniform2i=function _glUniform2i(location,v0,v1){GLctx.uniform2i(webglGetUniformLocation(location),v0,v1)};var _emscripten_glUniform2i=_glUniform2i;var _glUniform2iv=function _glUniform2iv(location,count,value){if(GL.currentContext.version>=2){count&&GLctx.uniform2iv(webglGetUniformLocation(location),HEAP32,value>>2,count*2);return}if(count<=144){var view=miniTempWebGLIntBuffers[2*count];for(var i=0;i<2*count;i+=2){view[i]=HEAP32[value+4*i>>2];view[i+1]=HEAP32[value+(4*i+4)>>2]}}else{var view=HEAP32.subarray(value>>2,value+count*8>>2)}GLctx.uniform2iv(webglGetUniformLocation(location),view)};var _emscripten_glUniform2iv=_glUniform2iv;var _glUniform2ui=function _glUniform2ui(location,v0,v1){GLctx.uniform2ui(webglGetUniformLocation(location),v0,v1)};var _emscripten_glUniform2ui=_glUniform2ui;var _glUniform2uiv=function _glUniform2uiv(location,count,value){count&&GLctx.uniform2uiv(webglGetUniformLocation(location),HEAPU32,value>>2,count*2)};var _emscripten_glUniform2uiv=_glUniform2uiv;var _glUniform3f=function _glUniform3f(location,v0,v1,v2){GLctx.uniform3f(webglGetUniformLocation(location),v0,v1,v2)};var _emscripten_glUniform3f=_glUniform3f;var _glUniform3fv=function _glUniform3fv(location,count,value){if(GL.currentContext.version>=2){count&&GLctx.uniform3fv(webglGetUniformLocation(location),HEAPF32,value>>2,count*3);return}if(count<=96){var view=miniTempWebGLFloatBuffers[3*count];for(var i=0;i<3*count;i+=3){view[i]=HEAPF32[value+4*i>>2];view[i+1]=HEAPF32[value+(4*i+4)>>2];view[i+2]=HEAPF32[value+(4*i+8)>>2]}}else{var view=HEAPF32.subarray(value>>2,value+count*12>>2)}GLctx.uniform3fv(webglGetUniformLocation(location),view)};var _emscripten_glUniform3fv=_glUniform3fv;var _glUniform3i=function _glUniform3i(location,v0,v1,v2){GLctx.uniform3i(webglGetUniformLocation(location),v0,v1,v2)};var _emscripten_glUniform3i=_glUniform3i;var _glUniform3iv=function _glUniform3iv(location,count,value){if(GL.currentContext.version>=2){count&&GLctx.uniform3iv(webglGetUniformLocation(location),HEAP32,value>>2,count*3);return}if(count<=96){var view=miniTempWebGLIntBuffers[3*count];for(var i=0;i<3*count;i+=3){view[i]=HEAP32[value+4*i>>2];view[i+1]=HEAP32[value+(4*i+4)>>2];view[i+2]=HEAP32[value+(4*i+8)>>2]}}else{var view=HEAP32.subarray(value>>2,value+count*12>>2)}GLctx.uniform3iv(webglGetUniformLocation(location),view)};var _emscripten_glUniform3iv=_glUniform3iv;var _glUniform3ui=function _glUniform3ui(location,v0,v1,v2){GLctx.uniform3ui(webglGetUniformLocation(location),v0,v1,v2)};var _emscripten_glUniform3ui=_glUniform3ui;var _glUniform3uiv=function _glUniform3uiv(location,count,value){count&&GLctx.uniform3uiv(webglGetUniformLocation(location),HEAPU32,value>>2,count*3)};var _emscripten_glUniform3uiv=_glUniform3uiv;var _glUniform4f=function _glUniform4f(location,v0,v1,v2,v3){GLctx.uniform4f(webglGetUniformLocation(location),v0,v1,v2,v3)};var _emscripten_glUniform4f=_glUniform4f;var _glUniform4fv=function _glUniform4fv(location,count,value){if(GL.currentContext.version>=2){count&&GLctx.uniform4fv(webglGetUniformLocation(location),HEAPF32,value>>2,count*4);return}if(count<=72){var view=miniTempWebGLFloatBuffers[4*count];var heap=HEAPF32;value=value>>2;for(var i=0;i<4*count;i+=4){var dst=value+i;view[i]=heap[dst];view[i+1]=heap[dst+1];view[i+2]=heap[dst+2];view[i+3]=heap[dst+3]}}else{var view=HEAPF32.subarray(value>>2,value+count*16>>2)}GLctx.uniform4fv(webglGetUniformLocation(location),view)};var _emscripten_glUniform4fv=_glUniform4fv;var _glUniform4i=function _glUniform4i(location,v0,v1,v2,v3){GLctx.uniform4i(webglGetUniformLocation(location),v0,v1,v2,v3)};var _emscripten_glUniform4i=_glUniform4i;var _glUniform4iv=function _glUniform4iv(location,count,value){if(GL.currentContext.version>=2){count&&GLctx.uniform4iv(webglGetUniformLocation(location),HEAP32,value>>2,count*4);return}if(count<=72){var view=miniTempWebGLIntBuffers[4*count];for(var i=0;i<4*count;i+=4){view[i]=HEAP32[value+4*i>>2];view[i+1]=HEAP32[value+(4*i+4)>>2];view[i+2]=HEAP32[value+(4*i+8)>>2];view[i+3]=HEAP32[value+(4*i+12)>>2]}}else{var view=HEAP32.subarray(value>>2,value+count*16>>2)}GLctx.uniform4iv(webglGetUniformLocation(location),view)};var _emscripten_glUniform4iv=_glUniform4iv;var _glUniform4ui=function _glUniform4ui(location,v0,v1,v2,v3){GLctx.uniform4ui(webglGetUniformLocation(location),v0,v1,v2,v3)};var _emscripten_glUniform4ui=_glUniform4ui;var _glUniform4uiv=function _glUniform4uiv(location,count,value){count&&GLctx.uniform4uiv(webglGetUniformLocation(location),HEAPU32,value>>2,count*4)};var _emscripten_glUniform4uiv=_glUniform4uiv;var _glUniformBlockBinding=function _glUniformBlockBinding(program,uniformBlockIndex,uniformBlockBinding){program=GL.programs[program];GLctx.uniformBlockBinding(program,uniformBlockIndex,uniformBlockBinding)};var _emscripten_glUniformBlockBinding=_glUniformBlockBinding;var _glUniformMatrix2fv=function _glUniformMatrix2fv(location,count,transpose,value){if(GL.currentContext.version>=2){count&&GLctx.uniformMatrix2fv(webglGetUniformLocation(location),!!transpose,HEAPF32,value>>2,count*4);return}if(count<=72){var view=miniTempWebGLFloatBuffers[4*count];for(var i=0;i<4*count;i+=4){view[i]=HEAPF32[value+4*i>>2];view[i+1]=HEAPF32[value+(4*i+4)>>2];view[i+2]=HEAPF32[value+(4*i+8)>>2];view[i+3]=HEAPF32[value+(4*i+12)>>2]}}else{var view=HEAPF32.subarray(value>>2,value+count*16>>2)}GLctx.uniformMatrix2fv(webglGetUniformLocation(location),!!transpose,view)};var _emscripten_glUniformMatrix2fv=_glUniformMatrix2fv;var _glUniformMatrix2x3fv=function _glUniformMatrix2x3fv(location,count,transpose,value){count&&GLctx.uniformMatrix2x3fv(webglGetUniformLocation(location),!!transpose,HEAPF32,value>>2,count*6)};var _emscripten_glUniformMatrix2x3fv=_glUniformMatrix2x3fv;var _glUniformMatrix2x4fv=function _glUniformMatrix2x4fv(location,count,transpose,value){count&&GLctx.uniformMatrix2x4fv(webglGetUniformLocation(location),!!transpose,HEAPF32,value>>2,count*8)};var _emscripten_glUniformMatrix2x4fv=_glUniformMatrix2x4fv;var _glUniformMatrix3fv=function _glUniformMatrix3fv(location,count,transpose,value){if(GL.currentContext.version>=2){count&&GLctx.uniformMatrix3fv(webglGetUniformLocation(location),!!transpose,HEAPF32,value>>2,count*9);return}if(count<=32){var view=miniTempWebGLFloatBuffers[9*count];for(var i=0;i<9*count;i+=9){view[i]=HEAPF32[value+4*i>>2];view[i+1]=HEAPF32[value+(4*i+4)>>2];view[i+2]=HEAPF32[value+(4*i+8)>>2];view[i+3]=HEAPF32[value+(4*i+12)>>2];view[i+4]=HEAPF32[value+(4*i+16)>>2];view[i+5]=HEAPF32[value+(4*i+20)>>2];view[i+6]=HEAPF32[value+(4*i+24)>>2];view[i+7]=HEAPF32[value+(4*i+28)>>2];view[i+8]=HEAPF32[value+(4*i+32)>>2]}}else{var view=HEAPF32.subarray(value>>2,value+count*36>>2)}GLctx.uniformMatrix3fv(webglGetUniformLocation(location),!!transpose,view)};var _emscripten_glUniformMatrix3fv=_glUniformMatrix3fv;var _glUniformMatrix3x2fv=function _glUniformMatrix3x2fv(location,count,transpose,value){count&&GLctx.uniformMatrix3x2fv(webglGetUniformLocation(location),!!transpose,HEAPF32,value>>2,count*6)};var _emscripten_glUniformMatrix3x2fv=_glUniformMatrix3x2fv;var _glUniformMatrix3x4fv=function _glUniformMatrix3x4fv(location,count,transpose,value){count&&GLctx.uniformMatrix3x4fv(webglGetUniformLocation(location),!!transpose,HEAPF32,value>>2,count*12)};var _emscripten_glUniformMatrix3x4fv=_glUniformMatrix3x4fv;var _glUniformMatrix4fv=function _glUniformMatrix4fv(location,count,transpose,value){if(GL.currentContext.version>=2){count&&GLctx.uniformMatrix4fv(webglGetUniformLocation(location),!!transpose,HEAPF32,value>>2,count*16);return}if(count<=18){var view=miniTempWebGLFloatBuffers[16*count];var heap=HEAPF32;value=value>>2;for(var i=0;i<16*count;i+=16){var dst=value+i;view[i]=heap[dst];view[i+1]=heap[dst+1];view[i+2]=heap[dst+2];view[i+3]=heap[dst+3];view[i+4]=heap[dst+4];view[i+5]=heap[dst+5];view[i+6]=heap[dst+6];view[i+7]=heap[dst+7];view[i+8]=heap[dst+8];view[i+9]=heap[dst+9];view[i+10]=heap[dst+10];view[i+11]=heap[dst+11];view[i+12]=heap[dst+12];view[i+13]=heap[dst+13];view[i+14]=heap[dst+14];view[i+15]=heap[dst+15]}}else{var view=HEAPF32.subarray(value>>2,value+count*64>>2)}GLctx.uniformMatrix4fv(webglGetUniformLocation(location),!!transpose,view)};var _emscripten_glUniformMatrix4fv=_glUniformMatrix4fv;var _glUniformMatrix4x2fv=function _glUniformMatrix4x2fv(location,count,transpose,value){count&&GLctx.uniformMatrix4x2fv(webglGetUniformLocation(location),!!transpose,HEAPF32,value>>2,count*8)};var _emscripten_glUniformMatrix4x2fv=_glUniformMatrix4x2fv;var _glUniformMatrix4x3fv=function _glUniformMatrix4x3fv(location,count,transpose,value){count&&GLctx.uniformMatrix4x3fv(webglGetUniformLocation(location),!!transpose,HEAPF32,value>>2,count*12)};var _emscripten_glUniformMatrix4x3fv=_glUniformMatrix4x3fv;var _glUseProgram=function _glUseProgram(program){program=GL.programs[program];GLctx.useProgram(program);GLctx.currentProgram=program};var _emscripten_glUseProgram=_glUseProgram;var _glValidateProgram=function _glValidateProgram(program){GLctx.validateProgram(GL.programs[program])};var _emscripten_glValidateProgram=_glValidateProgram;var _glVertexAttrib1f=function _glVertexAttrib1f(x0,x1){return GLctx.vertexAttrib1f(x0,x1)};var _emscripten_glVertexAttrib1f=_glVertexAttrib1f;var _glVertexAttrib1fv=function _glVertexAttrib1fv(index,v){GLctx.vertexAttrib1f(index,HEAPF32[v>>2])};var _emscripten_glVertexAttrib1fv=_glVertexAttrib1fv;var _glVertexAttrib2f=function _glVertexAttrib2f(x0,x1,x2){return GLctx.vertexAttrib2f(x0,x1,x2)};var _emscripten_glVertexAttrib2f=_glVertexAttrib2f;var _glVertexAttrib2fv=function _glVertexAttrib2fv(index,v){GLctx.vertexAttrib2f(index,HEAPF32[v>>2],HEAPF32[v+4>>2])};var _emscripten_glVertexAttrib2fv=_glVertexAttrib2fv;var _glVertexAttrib3f=function _glVertexAttrib3f(x0,x1,x2,x3){return GLctx.vertexAttrib3f(x0,x1,x2,x3)};var _emscripten_glVertexAttrib3f=_glVertexAttrib3f;var _glVertexAttrib3fv=function _glVertexAttrib3fv(index,v){GLctx.vertexAttrib3f(index,HEAPF32[v>>2],HEAPF32[v+4>>2],HEAPF32[v+8>>2])};var _emscripten_glVertexAttrib3fv=_glVertexAttrib3fv;var _glVertexAttrib4f=function _glVertexAttrib4f(x0,x1,x2,x3,x4){return GLctx.vertexAttrib4f(x0,x1,x2,x3,x4)};var _emscripten_glVertexAttrib4f=_glVertexAttrib4f;var _glVertexAttrib4fv=function _glVertexAttrib4fv(index,v){GLctx.vertexAttrib4f(index,HEAPF32[v>>2],HEAPF32[v+4>>2],HEAPF32[v+8>>2],HEAPF32[v+12>>2])};var _emscripten_glVertexAttrib4fv=_glVertexAttrib4fv;var _glVertexAttribDivisor=function _glVertexAttribDivisor(index,divisor){GLctx.vertexAttribDivisor(index,divisor)};var _emscripten_glVertexAttribDivisor=_glVertexAttribDivisor;var _glVertexAttribDivisorANGLE=_glVertexAttribDivisor;var _emscripten_glVertexAttribDivisorANGLE=_glVertexAttribDivisorANGLE;var _glVertexAttribDivisorARB=_glVertexAttribDivisor;var _emscripten_glVertexAttribDivisorARB=_glVertexAttribDivisorARB;var _glVertexAttribDivisorEXT=_glVertexAttribDivisor;var _emscripten_glVertexAttribDivisorEXT=_glVertexAttribDivisorEXT;var _glVertexAttribDivisorNV=_glVertexAttribDivisor;var _emscripten_glVertexAttribDivisorNV=_glVertexAttribDivisorNV;var _glVertexAttribI4i=function _glVertexAttribI4i(x0,x1,x2,x3,x4){return GLctx.vertexAttribI4i(x0,x1,x2,x3,x4)};var _emscripten_glVertexAttribI4i=_glVertexAttribI4i;var _glVertexAttribI4iv=function _glVertexAttribI4iv(index,v){GLctx.vertexAttribI4i(index,HEAP32[v>>2],HEAP32[v+4>>2],HEAP32[v+8>>2],HEAP32[v+12>>2])};var _emscripten_glVertexAttribI4iv=_glVertexAttribI4iv;var _glVertexAttribI4ui=function _glVertexAttribI4ui(x0,x1,x2,x3,x4){return GLctx.vertexAttribI4ui(x0,x1,x2,x3,x4)};var _emscripten_glVertexAttribI4ui=_glVertexAttribI4ui;var _glVertexAttribI4uiv=function _glVertexAttribI4uiv(index,v){GLctx.vertexAttribI4ui(index,HEAPU32[v>>2],HEAPU32[v+4>>2],HEAPU32[v+8>>2],HEAPU32[v+12>>2])};var _emscripten_glVertexAttribI4uiv=_glVertexAttribI4uiv;var _glVertexAttribIPointer=function _glVertexAttribIPointer(index,size,type,stride,ptr){GLctx.vertexAttribIPointer(index,size,type,stride,ptr)};var _emscripten_glVertexAttribIPointer=_glVertexAttribIPointer;var _glVertexAttribPointer=function _glVertexAttribPointer(index,size,type,normalized,stride,ptr){GLctx.vertexAttribPointer(index,size,type,!!normalized,stride,ptr)};var _emscripten_glVertexAttribPointer=_glVertexAttribPointer;var _glViewport=function _glViewport(x0,x1,x2,x3){return GLctx.viewport(x0,x1,x2,x3)};var _emscripten_glViewport=_glViewport;var _glWaitSync=function _glWaitSync(sync,flags,timeout_low,timeout_high){var timeout=convertI32PairToI53(timeout_low,timeout_high);GLctx.waitSync(GL.syncs[sync],flags,timeout)};var _emscripten_glWaitSync=_glWaitSync;var _emscripten_pause_main_loop=function _emscripten_pause_main_loop(){Browser.mainLoop.pause()};var abortOnCannotGrowMemory=function abortOnCannotGrowMemory(requestedSize){abort("OOM")};var _emscripten_resize_heap=function _emscripten_resize_heap(requestedSize){var oldSize=HEAPU8.length;requestedSize>>>=0;abortOnCannotGrowMemory(requestedSize)};var _emscripten_set_main_loop_arg=function _emscripten_set_main_loop_arg(func,arg,fps,simulateInfiniteLoop){var browserIterationFunc=function browserIterationFunc(){return getWasmTableEntry(func)(arg)};setMainLoop(browserIterationFunc,fps,simulateInfiniteLoop,arg)};var _emscripten_webgl_enable_extension=function _emscripten_webgl_enable_extension(contextHandle,extension){var context=GL.getContext(contextHandle);var extString=UTF8ToString(extension);if(extString.startsWith("GL_"))extString=extString.substr(3);if(extString=="ANGLE_instanced_arrays")webgl_enable_ANGLE_instanced_arrays(GLctx);if(extString=="OES_vertex_array_object")webgl_enable_OES_vertex_array_object(GLctx);if(extString=="WEBGL_draw_buffers")webgl_enable_WEBGL_draw_buffers(GLctx);if(extString=="WEBGL_draw_instanced_base_vertex_base_instance")webgl_enable_WEBGL_draw_instanced_base_vertex_base_instance(GLctx);if(extString=="WEBGL_multi_draw_instanced_base_vertex_base_instance")webgl_enable_WEBGL_multi_draw_instanced_base_vertex_base_instance(GLctx);if(extString=="WEBGL_multi_draw")webgl_enable_WEBGL_multi_draw(GLctx);var ext=context.GLctx.getExtension(extString);return!!ext};var _emscripten_webgl_do_get_current_context=function _emscripten_webgl_do_get_current_context(){return GL.currentContext?GL.currentContext.handle:0};var _emscripten_webgl_get_current_context=_emscripten_webgl_do_get_current_context;var ENV={};var getExecutableName=function getExecutableName(){return thisProgram||"./this.program"};var getEnvStrings=function getEnvStrings(){if(!getEnvStrings.strings){var lang=((typeof navigator==="undefined"?"undefined":_typeof(navigator))=="object"&&navigator.languages&&navigator.languages[0]||"C").replace("-","_")+".UTF-8";var env={USER:"web_user",LOGNAME:"web_user",PATH:"/",PWD:"/",HOME:"/home/web_user",LANG:lang,_:getExecutableName()};for(var x in ENV){if(ENV[x]===undefined)delete env[x];else env[x]=ENV[x]}var strings=[];for(var x in env){strings.push("".concat(x,"=").concat(env[x]))}getEnvStrings.strings=strings}return getEnvStrings.strings};var stringToAscii=function stringToAscii(str,buffer){for(var i=0;i>2]=ptr;stringToAscii(string,ptr);bufSize+=string.length+1});return 0};var _environ_sizes_get=function _environ_sizes_get(penviron_count,penviron_buf_size){var strings=getEnvStrings();HEAPU32[penviron_count>>2]=strings.length;var bufSize=0;strings.forEach(function(string){return bufSize+=string.length+1});HEAPU32[penviron_buf_size>>2]=bufSize;return 0};function _fd_close(fd){try{var stream=SYSCALLS.getStreamFromFD(fd);FS.close(stream);return 0}catch(e){if(typeof FS=="undefined"||!(e.name==="ErrnoError"))throw e;return e.errno}}var doReadv=function doReadv(stream,iov,iovcnt,offset){var ret=0;for(var i=0;i>2];var len=HEAPU32[iov+4>>2];iov+=8;var curr=FS.read(stream,HEAP8,ptr,len,offset);if(curr<0)return-1;ret+=curr;if(curr>2]=num;return 0}catch(e){if(typeof FS=="undefined"||!(e.name==="ErrnoError"))throw e;return e.errno}}function _fd_seek(fd,offset_low,offset_high,whence,newOffset){var offset=convertI32PairToI53Checked(offset_low,offset_high);try{if(isNaN(offset))return 61;var stream=SYSCALLS.getStreamFromFD(fd);FS.llseek(stream,offset,whence);tempI64=[stream.position>>>0,(tempDouble=stream.position,+Math.abs(tempDouble)>=1?tempDouble>0?+Math.floor(tempDouble/4294967296)>>>0:~~+Math.ceil((tempDouble-+(~~tempDouble>>>0))/4294967296)>>>0:0)],HEAP32[newOffset>>2]=tempI64[0],HEAP32[newOffset+4>>2]=tempI64[1];if(stream.getdents&&offset===0&&whence===0)stream.getdents=null;return 0}catch(e){if(typeof FS=="undefined"||!(e.name==="ErrnoError"))throw e;return e.errno}}var doWritev=function doWritev(stream,iov,iovcnt,offset){var ret=0;for(var i=0;i>2];var len=HEAPU32[iov+4>>2];iov+=8;var curr=FS.write(stream,HEAP8,ptr,len,offset);if(curr<0)return-1;ret+=curr;if(curr>2]=num;return 0}catch(e){if(typeof FS=="undefined"||!(e.name==="ErrnoError"))throw e;return e.errno}}var _getaddrinfo=function _getaddrinfo(node,service,hint,out){var addr=0;var port=0;var flags=0;var family=0;var type=0;var proto=0;var ai;function allocaddrinfo(family,type,proto,canon,addr,port){var sa,salen,ai;var errno;salen=family===10?28:16;addr=family===10?inetNtop6(addr):inetNtop4(addr);sa=_malloc(salen);errno=writeSockaddr(sa,family,addr,port);assert(!errno);ai=_malloc(32);HEAP32[ai+4>>2]=family;HEAP32[ai+8>>2]=type;HEAP32[ai+12>>2]=proto;HEAPU32[ai+24>>2]=canon;HEAPU32[ai+20>>2]=sa;if(family===10){HEAP32[ai+16>>2]=28}else{HEAP32[ai+16>>2]=16}HEAP32[ai+28>>2]=0;return ai}if(hint){flags=HEAP32[hint>>2];family=HEAP32[hint+4>>2];type=HEAP32[hint+8>>2];proto=HEAP32[hint+12>>2]}if(type&&!proto){proto=type===2?17:6}if(!type&&proto){type=proto===17?2:1}if(proto===0){proto=6}if(type===0){type=1}if(!node&&!service){return-2}if(flags&~(1|2|4|1024|8|16|32)){return-1}if(hint!==0&&HEAP32[hint>>2]&2&&!node){return-1}if(flags&32){return-2}if(type!==0&&type!==1&&type!==2){return-7}if(family!==0&&family!==2&&family!==10){return-6}if(service){service=UTF8ToString(service);port=parseInt(service,10);if(isNaN(port)){if(flags&1024){return-2}return-8}}if(!node){if(family===0){family=2}if((flags&1)===0){if(family===2){addr=_htonl2(2130706433)}else{addr=[0,0,0,1]}}ai=allocaddrinfo(family,type,proto,null,addr,port);HEAPU32[out>>2]=ai;return 0}node=UTF8ToString(node);addr=inetPton4(node);if(addr!==null){if(family===0||family===2){family=2}else if(family===10&&flags&8){addr=[0,0,_htonl2(65535),addr];family=10}else{return-2}}else{addr=inetPton6(node);if(addr!==null){if(family===0||family===10){family=10}else{return-2}}}if(addr!=null){ai=allocaddrinfo(family,type,proto,node,addr,port);HEAPU32[out>>2]=ai;return 0}if(flags&4){return-2}node=DNS.lookup_name(node);addr=inetPton4(node);if(family===0){family=2}else if(family===10){addr=[0,0,_htonl2(65535),addr]}ai=allocaddrinfo(family,type,proto,null,addr,port);HEAPU32[out>>2]=ai;return 0};var _getnameinfo=function _getnameinfo(sa,salen,node,nodelen,serv,servlen,flags){var info=readSockaddr(sa,salen);if(info.errno){return-6}var port=info.port;var addr=info.addr;var overflowed=false;if(node&&nodelen){var lookup;if(flags&1||!(lookup=DNS.lookup_addr(addr))){if(flags&8){return-2}}else{addr=lookup}var numBytesWrittenExclNull=stringToUTF8(addr,node,nodelen);if(numBytesWrittenExclNull+1>=nodelen){overflowed=true}}if(serv&&servlen){port=""+port;var numBytesWrittenExclNull=stringToUTF8(port,serv,servlen);if(numBytesWrittenExclNull+1>=servlen){overflowed=true}}if(overflowed){return-12}return 0};var GLFW={keyFunc:null,charFunc:null,markedTextFunc:null,gamepadFunc:null,mouseButtonFunc:null,mousePosFunc:null,mouseWheelFunc:null,resizeFunc:null,closeFunc:null,refreshFunc:null,focusFunc:null,iconifyFunc:null,touchFunc:null,params:null,initTime:null,wheelPos:0,buttons:0,keys:0,initWindowWidth:640,initWindowHeight:480,windowX:0,windowY:0,windowWidth:0,windowHeight:0,prevWidth:0,prevHeight:0,prevNonFSWidth:0,prevNonFSHeight:0,isFullscreen:false,isPointerLocked:false,dpi:1,mouseTouchId:null,DOMToGLFWKeyCode:function DOMToGLFWKeyCode(keycode,code){switch(keycode){case 8:return 295;case 9:return 293;case 13:return 294;case 27:return 257;case 106:return 313;case 107:return 315;case 109:return 314;case 110:return 316;case 111:return 312;case 112:return 258;case 113:return 259;case 114:return 260;case 115:return 261;case 116:return 262;case 117:return 263;case 118:return 264;case 119:return 265;case 120:return 266;case 121:return 267;case 122:return 268;case 123:return 269;case 37:return 285;case 38:return 283;case 39:return 286;case 40:return 284;case 33:return 298;case 34:return 299;case 36:return 300;case 35:return 301;case 45:return 296;case 16:return 287;case 5:return 287;case 6:return 288;case 17:return 289;case 3:return 289;case 4:return 290;case 18:return 291;case 2:return 291;case 1:return 292;case 96:return 302;case 97:return 303;case 98:return 304;case 99:return 305;case 100:return 306;case 101:return 307;case 102:return 308;case 103:return 309;case 104:return 310;case 105:return 311}switch(code){case"Minus":return 45;case"Period":return 46;case"Comma":return 44;case"Slash":return 47;case"Backslash":return 92;case"IntlRo":return 92;case"IntlYen":return 92;case"IntlBackslash":return 92;case"Backquote":return 96;case"BracketLeft":return 91;case"BracketRight":return 93;case"Equal":return 61;case"Quote":return 39;case"Semicolon":return 59;case"NumpadComma":return 316}return keycode},DOMtoGLFWButton:function DOMtoGLFWButton(button){if(button==1){button=2}else if(button==2){button=1}return button},getUnicodeChar:function getUnicodeChar(value){var output="";if(value>65535){value-=65536;output+=String.fromCharCode(value>>>10&1023|55296);value=56320|value&1023}output+=String.fromCharCode(value);return output},addEventListener:function addEventListener(type,listener,useCapture){if(typeof window!=="undefined"){window.addEventListener(type,listener,useCapture)}},removeEventListener:function removeEventListener(type,listener,useCapture){if(typeof window!=="undefined"){window.removeEventListener(type,listener,useCapture)}},addEventListenerCanvas:function addEventListenerCanvas(type,listener,useCapture){if(typeof Module["canvas"]!=="undefined"){Module["canvas"].addEventListener(type,listener,useCapture)}},removeEventListenerCanvas:function removeEventListenerCanvas(type,listener,useCapture){if(typeof Module["canvas"]!=="undefined"){Module["canvas"].removeEventListener(type,listener,useCapture)}},isCanvasActive:function isCanvasActive(event){var res=typeof document.activeElement=="undefined"||document.activeElement==Module["canvas"];if(!res){res=event.target==Module["canvas"]}if(event.target.focus)event.target.focus();return res},onKeyPress:function onKeyPress(event){if(!GLFW.isCanvasActive(event)){return}if(event.charCode){var _char=GLFW.getUnicodeChar(event.charCode);if(_char!==null&&GLFW.charFunc){getWasmTableEntry(GLFW.charFunc)(event.charCode,1)}}},onKeyChanged:function onKeyChanged(event,status){if(!GLFW.isCanvasActive(event)){return}var key=GLFW.DOMToGLFWKeyCode(event.keyCode,event.code);if(key){GLFW.keys[key]=status;if(GLFW.keyFunc){getWasmTableEntry(GLFW.keyFunc)(key,status)}}},onKeydown:function onKeydown(event){if(!GLFW.isCanvasActive(event)){return}switch(event.keyCode){case 37:case 38:case 39:case 40:case 32:event.preventDefault();event.stopPropagation();default:break}GLFW.onKeyChanged(event,1);if(event.keyCode===32){if(GLFW.charFunc){getWasmTableEntry(GLFW.charFunc)(32,1);event.preventDefault()}}else if(event.keyCode===8||event.keyCode===9||event.keyCode===13){event.preventDefault()}},onKeyup:function onKeyup(event){if(!GLFW.isCanvasActive(event)){return}GLFW.onKeyChanged(event,0)},onMousemove:function onMousemove(event){var lastX=Browser.mouseX;var lastY=Browser.mouseY;Browser.calculateMouseEvent(event);var newX=Browser.mouseX;var newY=Browser.mouseY;if(event.target==Module["canvas"]&&GLFW.mousePosFunc){event.preventDefault();getWasmTableEntry(GLFW.mousePosFunc)(lastX,lastY)}},onMouseButtonChanged:function onMouseButtonChanged(event,status){if(!GLFW.isCanvasActive(event)){return}if(GLFW.mouseButtonFunc==null){return}Browser.calculateMouseEvent(event);if(event.target!=Module["canvas"]){return}if(status==1){try{event.target.setCapture()}catch(e){}}event.preventDefault();var eventButton=GLFW.DOMtoGLFWButton(event["button"]);getWasmTableEntry(GLFW.mouseButtonFunc)(eventButton,status)},fillTouch:function fillTouch(id,x,y,phase){if(GLFW.touchFunc){getWasmTableEntry(GLFW.touchFunc)(id,x,y,phase)}},touchWasFinished:function touchWasFinished(event,phase){if(!GLFW.isCanvasActive(event)){return}for(var i=0;i0}function _glfwGetMouseLocked(){return GLFW.isPointerLocked?1:0}function _glfwGetMousePos(xpos,ypos){setValue(xpos,Browser.mouseX,"i32");setValue(ypos,Browser.mouseY,"i32")}function _glfwGetMouseWheel(){return GLFW.wheelPos}function _glfwGetWindowParam(param){return GLFW.params[param]}function _glfwGetWindowRefreshRate(){return 0}function _glfwGetWindowSize(width,height){setValue(width,Module["canvas"].width,"i32");setValue(height,Module["canvas"].height,"i32")}function _glfwIconifyWindow(){}function _glfwInitJS(){GLFW.initTime=Date.now()/1e3;GLFW.addEventListener("gamepadconnected",GLFW.onJoystickConnected,true);GLFW.addEventListener("gamepaddisconnected",GLFW.onJoystickDisconnected,true);GLFW.addEventListener("keydown",GLFW.onKeydown,true);GLFW.addEventListener("keypress",GLFW.onKeyPress,true);GLFW.addEventListener("keyup",GLFW.onKeyup,true);GLFW.addEventListener("mousemove",GLFW.onMousemove,true);GLFW.addEventListener("mousedown",GLFW.onMouseButtonDown,true);GLFW.addEventListener("mouseup",GLFW.onMouseButtonUp,true);GLFW.addEventListener("DOMMouseScroll",GLFW.onMouseWheel,{capture:true,passive:false});GLFW.addEventListener("mousewheel",GLFW.onMouseWheel,{capture:true,passive:false});GLFW.addEventListenerCanvas("touchstart",GLFW.onTouchStart,true);GLFW.addEventListenerCanvas("touchend",GLFW.onTouchEnd,true);GLFW.addEventListenerCanvas("touchcancel",GLFW.onTouchCancel,true);GLFW.addEventListenerCanvas("touchmove",GLFW.onTouchMove,true);GLFW.addEventListenerCanvas("focus",GLFW.onFocus,true);GLFW.addEventListenerCanvas("blur",GLFW.onBlur,true);__ATEXIT__.push({func:function func(){GLFW.removeEventListener("gamepadconnected",GLFW.onJoystickConnected,true);GLFW.removeEventListener("gamepaddisconnected",GLFW.onJoystickDisconnected,true);GLFW.removeEventListener("keydown",GLFW.onKeydown,true);GLFW.removeEventListener("keypress",GLFW.onKeyPress,true);GLFW.removeEventListener("keyup",GLFW.onKeyup,true);GLFW.removeEventListener("mousemove",GLFW.onMousemove,true);GLFW.removeEventListener("mousedown",GLFW.onMouseButtonDown,true);GLFW.removeEventListener("mouseup",GLFW.onMouseButtonUp,true);GLFW.removeEventListener("DOMMouseScroll",GLFW.onMouseWheel,{capture:true,passive:false});GLFW.removeEventListener("mousewheel",GLFW.onMouseWheel,{capture:true,passive:false});GLFW.removeEventListenerCanvas("touchstart",GLFW.onTouchStart,true);GLFW.removeEventListenerCanvas("touchend",GLFW.onTouchEnd,true);GLFW.removeEventListenerCanvas("touchcancel",GLFW.onTouchEnd,true);GLFW.removeEventListenerCanvas("touchmove",GLFW.onTouchMove,true);GLFW.removeEventListenerCanvas("focus",GLFW.onFocus,true);GLFW.removeEventListenerCanvas("blur",GLFW.onBlur,true);var canvas=Module["canvas"];if(typeof canvas!=="undefined"){Module["canvas"].width=Module["canvas"].height=1}}});GLFW.params=new Array;GLFW.params[196609]=true;GLFW.params[196610]=false;GLFW.params[196611]=true;GLFW.params[196612]=false;GLFW.params[196613]=false;GLFW.params[196614]=true;GLFW.params[131073]=true;GLFW.params[131074]=true;GLFW.params[131075]=false;GLFW.params[131076]=true;GLFW.params[131077]=0;GLFW.params[131078]=0;GLFW.params[131079]=0;GLFW.params[131080]=0;GLFW.params[131081]=0;GLFW.params[131082]=0;GLFW.params[131083]=0;GLFW.params[131084]=0;GLFW.params[131085]=0;GLFW.params[131086]=0;GLFW.params[131087]=0;GLFW.params[131088]=0;GLFW.params[131089]=0;GLFW.params[131090]=0;GLFW.params[131091]=0;GLFW.params[131092]=0;GLFW.params[131093]=0;GLFW.params[131094]=0;GLFW.params[131095]=0;GLFW.params[131096]=0;GLFW.params[327681]=0;GLFW.params[327682]=1;GLFW.params[327683]=2;GLFW.params[131097]=0;GLFW.dpi=1;GLFW.keys=new Array;GLFW.GLFW_PHASE_BEGAN=0;GLFW.GLFW_PHASE_MOVED=1;GLFW.GLFW_PHASE_ENDED=3;GLFW.GLFW_PHASE_CANCELLED=4;return 1}function _glfwOpenWindow(width,height,redbits,greenbits,bluebits,alphabits,depthbits,stencilbits,mode){if(width==0&&height>0){width=4*height/3}if(width>0&&height==0){height=3*width/4}GLFW.params[131077]=redbits;GLFW.params[131078]=greenbits;GLFW.params[131079]=bluebits;GLFW.params[131080]=alphabits;GLFW.params[131081]=depthbits;GLFW.params[131082]=stencilbits;if(mode==65537){GLFW.initWindowWidth=width;GLFW.initWindowHeight=height;GLFW.params[196611]=true}else if(mode==65538){GLFW.requestFullScreen();GLFW.params[196611]=false}else{throw"Invalid glfwOpenWindow mode."}var useWebGL=GLFW.params[131098]>0;if(useWebGL){var contextAttributes={antialias:GLFW.params[131091]>1,depth:GLFW.params[131081]>0,stencil:GLFW.params[131082]>0,alpha:GLFW.params[131080]>0};var iOSVersion=false;try{iOSVersion=parseFloat((""+(/CPU.*OS ([0-9_]{1,5})|(CPU like).*AppleWebKit.*Mobile/i.exec(navigator.userAgent)||[0,""])[1]).replace("undefined","3_2").replace("_",".").replace("_",""))||false}catch(e){}if(iOSVersion&&iOSVersion<15.2){contextAttributes.majorVersion=1}Module.ctx=Browser.createContext(Module["canvas"],true,true,contextAttributes);if(Module.ctx==null){contextAttributes.majorVersion=1;Module.ctx=Browser.createContext(Module["canvas"],true,true,contextAttributes)}}return 1}function _glfwOpenWindowHint(target,hint){GLFW.params[target]=hint;if(target==131097){if(hint!=0){GLFW.dpi=window.devicePixelRatio||1}}}function _glfwPollEvents(){}function _glfwResetKeyboard(){}function _glfwSetCharCallback(cbfun){GLFW.charFunc=cbfun;return 1}function _glfwSetDeviceChangedCallback(cbfun){return 1}function _glfwSetGamepadCallback(cbfun){GLFW.gamepadFunc=cbfun;try{GLFW.refreshJoysticks();return 1}catch(e){GLFW.gamepadFunc=null;return 0}}function _glfwSetMarkedTextCallback(cbfun){GLFW.markedTextFunc=cbfun;return 1}function _glfwSetTouchCallback(cbfun){GLFW.touchFunc=cbfun;return 1}function _glfwSetWindowBackgroundColor(color){}function _glfwSetWindowCloseCallback(cbfun){GLFW.closeFunc=cbfun}function _glfwSetWindowFocusCallback(cbfun){GLFW.focusFunc=cbfun}function _glfwSetWindowIconifyCallback(cbfun){GLFW.iconifyFunc=cbfun}function _glfwSetWindowSize(width,height){Browser.setCanvasSize(width,height);if(GLFW.resizeFunc){getWasmTableEntry(GLFW.resizeFunc)(width,height)}}function _glfwSetWindowSizeCallback(cbfun){GLFW.resizeFunc=cbfun}function _glfwShowKeyboard(show_keyboard){Module["canvas"].contentEditable=show_keyboard?true:false;if(show_keyboard){Module["canvas"].focus()}}function _glfwSwapBuffers(){var width=Module["canvas"].width;var height=Module["canvas"].height;if(GLFW.prevWidth!=width||GLFW.prevHeight!=height){if(GLFW.isFullscreen){width=Math.floor(window.innerWidth*GLFW.dpi);height=Math.floor(window.innerHeight*GLFW.dpi)}GLFW.prevWidth=width;GLFW.prevHeight=height;_glfwSetWindowSize(width,height)}}function _glfwSwapInterval(interval){}function _glfwTerminate(){}var dmRenderer={renderContext:null,renderCallback:null,CONTEXT_LOST_EVENT:0,CONTEXT_RESTORED_EVENT:1,rendererContextEvent:function rendererContextEvent(event_type){if(dmRenderer.renderCallback){getWasmTableEntry(dmRenderer.renderCallback)(dmRenderer.renderContext,event_type)}}};function _setupCallbackJS(context,callback){dmRenderer.renderContext=context;dmRenderer.renderCallback=callback}var stackAlloc=function stackAlloc(sz){return _emscripten_stack_alloc(sz)};var stringToUTF8OnStack=function stringToUTF8OnStack(str){var size=lengthBytesUTF8(str)+1;var ret=stackAlloc(size);stringToUTF8(str,ret,size);return ret};var getCFunc=function getCFunc(ident){var func=Module["_"+ident];return func};var writeArrayToMemory=function writeArrayToMemory(array,buffer){HEAP8.set(array,buffer)};var ccall=function ccall(ident,returnType,argTypes,args,opts){var toC={string:function string(str){var ret=0;if(str!==null&&str!==undefined&&str!==0){ret=stringToUTF8OnStack(str)}return ret},array:function array(arr){var ret=stackAlloc(arr.length);writeArrayToMemory(arr,ret);return ret}};function convertReturnValue(ret){if(returnType==="string"){return UTF8ToString(ret)}if(returnType==="boolean")return Boolean(ret);return ret}var func=getCFunc(ident);var cArgs=[];var stack=0;if(args){for(var i=0;i0&&arguments[0]!==undefined?arguments[0]:[];var entryFunction=_main;args.unshift(thisProgram);var argc=args.length;var argv=stackAlloc((argc+1)*4);var argv_ptr=argv;args.forEach(function(arg){HEAPU32[argv_ptr>>2]=stringToUTF8OnStack(arg);argv_ptr+=4});HEAPU32[argv_ptr>>2]=0;try{var ret=entryFunction(argc,argv);exitJS(ret,true);return ret}catch(e){return handleException(e)}}function run(){var args=arguments.length>0&&arguments[0]!==undefined?arguments[0]:arguments_;if(runDependencies>0){return}preRun();if(runDependencies>0){return}function doRun(){var _Module$onRuntimeInit;if(calledRun)return;calledRun=true;Module["calledRun"]=true;if(ABORT)return;initRuntime();preMain();(_Module$onRuntimeInit=Module["onRuntimeInitialized"])===null||_Module$onRuntimeInit===void 0||_Module$onRuntimeInit.call(Module);if(shouldRunNow)callMain(args);postRun()}if(Module["setStatus"]){Module["setStatus"]("Running...");setTimeout(function(){setTimeout(function(){Module["setStatus"]("")},1);doRun()},1)}else{doRun()}}if(Module["preInit"]){if(typeof Module["preInit"]=="function")Module["preInit"]=[Module["preInit"]];while(Module["preInit"].length>0){Module["preInit"].pop()()}}var shouldRunNow=true;if(Module["noInitialRun"])shouldRunNow=false;run(); diff --git a/docs/archive/archive_files.json b/docs/archive/archive_files.json new file mode 100644 index 0000000..31a2ddb --- /dev/null +++ b/docs/archive/archive_files.json @@ -0,0 +1 @@ +{"content":[{"name":"game.projectc","size":4552,"pieces":[{"name":"game0.projectc","offset":0}]},{"name":"game.arci","size":15008,"pieces":[{"name":"game0.arci","offset":0}]},{"name":"game.arcd","size":3789178,"pieces":[{"name":"game0.arcd","offset":0},{"name":"game1.arcd","offset":2097152}]},{"name":"game.dmanifest","size":17041,"pieces":[{"name":"game0.dmanifest","offset":0}]},{"name":"game.public.der","size":162,"pieces":[{"name":"game0.public.der","offset":0}]}],"total_size":3825941} \ No newline at end of file diff --git a/docs/druid/archive/game0.arcd b/docs/archive/game0.arcd similarity index 81% rename from docs/druid/archive/game0.arcd rename to docs/archive/game0.arcd index fe18b0b..30798da 100644 Binary files a/docs/druid/archive/game0.arcd and b/docs/archive/game0.arcd differ diff --git a/docs/archive/game0.arci b/docs/archive/game0.arci new file mode 100644 index 0000000..f9755a8 Binary files /dev/null and b/docs/archive/game0.arci differ diff --git a/docs/archive/game0.dmanifest b/docs/archive/game0.dmanifest new file mode 100644 index 0000000..b43d9be Binary files /dev/null and b/docs/archive/game0.dmanifest differ diff --git a/docs/druid/archive/game0.projectc b/docs/archive/game0.projectc similarity index 92% rename from docs/druid/archive/game0.projectc rename to docs/archive/game0.projectc index aa4e932..0067442 100644 --- a/docs/druid/archive/game0.projectc +++ b/docs/archive/game0.projectc @@ -1,13 +1,14 @@ [project] -title = druid -version = 1.0.1 +title = Druid +version = 1.1.0 write_log = 0 +minimum_log_level = 1 compress_archive = 1 publisher = Insality developer = Maksim Tuprikov custom_resources = /example/locales -commit_sha = be1a3d37887787185992c88df8bb28c4ed52eb3f -title_as_file_name = druid +commit_sha = 9fe8763c7f6f272421fb8b4c14edcfb9db880b4c +title_as_file_name = Druid [display] width = 1920 @@ -15,7 +16,7 @@ height = 1080 high_dpi = 1 samples = 0 fullscreen = 0 -update_frequency = 0 +update_frequency = 60 swap_interval = 1 vsync = 1 display_profiles = /builtins/render/default.display_profilesc @@ -26,7 +27,7 @@ display_device_info = 0 clear_color_red = 0 clear_color_green = 0 clear_color_blue = 0 -clear_color_alpha = 0 +clear_color_alpha = 1 [physics] type = 2D @@ -63,6 +64,8 @@ max_font_batches = 128 max_debug_vertices = 10000 texture_profiles = /builtins/graphics/default.texture_profiles verify_graphics_calls = 0 +opengl_version_hint = 33 +opengl_core_profile_hint = true memory_size = 512 [shader] @@ -129,9 +132,9 @@ default_language = en localizations = en [android] -version_code = 929 +version_code = 968 minimum_sdk_version = 19 -target_sdk_version = 34 +target_sdk_version = 35 package = com.insality.druid gcm_sender_id = manifest = /builtins/manifests/android/AndroidManifest.xml @@ -170,6 +173,7 @@ show_fullscreen_button = 0 show_made_with_defold = 0 show_console_banner = 0 scale_mode = stretch +transparent_graphics_context = 0 [particle_fx] max_count = 0 @@ -212,8 +216,6 @@ max_time_step = 0.5 [druid] no_auto_input = 0 -no_stencil_check = 0 -no_auto_template = 0 input_text = text input_touch = touch input_marked_text = marked_text @@ -236,3 +238,6 @@ path = /example/locales langs = en,ru,es,de,fr,ja,pt,it,kr,zh default = es +[event] +use_xpcall = 1 + diff --git a/docs/archive/game0.public.der b/docs/archive/game0.public.der new file mode 100644 index 0000000..b4930a3 Binary files /dev/null and b/docs/archive/game0.public.der differ diff --git a/docs/druid/archive/game1.arcd b/docs/archive/game1.arcd similarity index 86% rename from docs/druid/archive/game1.arcd rename to docs/archive/game1.arcd index 55d0702..77c540d 100644 Binary files a/docs/druid/archive/game1.arcd and b/docs/archive/game1.arcd differ diff --git a/docs/druid/dmloader.js b/docs/dmloader.js similarity index 77% rename from docs/druid/dmloader.js rename to docs/dmloader.js index d41711e..1fbba5b 100644 --- a/docs/druid/dmloader.js +++ b/docs/dmloader.js @@ -86,7 +86,7 @@ var CUSTOM_PARAMETERS = { game_canvas.width = Math.floor(width * dpi); game_canvas.height = Math.floor(height * dpi); } -} +}; // file downloader // wraps XMLHttpRequest and adds retry support and progress updates when the @@ -184,16 +184,20 @@ var FileLoader = { }; request.onretry = function(xhr, event, loadedSize, currentAttempt) { onretry(loadedSize, currentAttempt); - } + }; request.send(); } }; var EngineLoader = { - wasm_size: 2374239, - wasmjs_size: 340441, - asmjs_size: 4000000, + + + wasm_size: 2435513, + + wasmjs_size: 270371, + + asmjs_size: 5093239, wasm_instantiate_progress: 0, stream_wasm: "false" === "true", @@ -209,9 +213,16 @@ var EngineLoader = { ProgressUpdater.updateCurrent(delta); }, function(error) { throw error; }, - function(wasm) { + async function(wasm) { if (wasm.byteLength != EngineLoader.wasm_size) { - throw "Invalid wasm size. Expected: " + EngineLoader.wasm_size + ", actual: " + wasm.byteLength; + console.warn("Unexpected wasm size: " + wasm.byteLength + ", expected: " + EngineLoader.wasm_size); + } + if (EngineLoader.wasm_sha1) { + const digest = await window.crypto.subtle.digest("SHA-1", wasm); + const sha1 = Array.from(new Uint8Array(digest)).map(b => b.toString(16).padStart(2, '0')).join(''); + if (sha1 != EngineLoader.wasm_sha1) { + console.warn("Unexpected wasm sha1: " + sha1 + ", expected: " + EngineLoader.wasm_sha1); + } } var wasmInstantiate = WebAssembly.instantiate(new Uint8Array(wasm), imports).then(function(output) { successCallback(output.instance); @@ -270,21 +281,31 @@ var EngineLoader = { } return {}; // Compiling asynchronously, no exports. }; - EngineLoader.loadAndRunScriptAsync(exeName + '_wasm.js'); + EngineLoader.loadAndRunScriptAsync(exeName + '_wasm.js', EngineLoader.wasmjs_size, EngineLoader.wasmjs_sha1); }, loadAsmJsAsync: function(exeName) { - EngineLoader.loadAndRunScriptAsync(exeName + '_asmjs.js'); + EngineLoader.loadAndRunScriptAsync(exeName + '_asmjs.js', EngineLoader.asmjs_size, EngineLoader.asmjs_sha1); }, // load and start engine script (asm.js or wasm.js) - loadAndRunScriptAsync: function(src) { + loadAndRunScriptAsync: function(src, expectedLength, expectedSHA1) { FileLoader.load(src, "text", function(delta) { ProgressUpdater.updateCurrent(delta); }, function(error) { throw error; }, - function(response) { + async function(response) { + if (response.length != expectedLength) { + console.warn("Unexpected JS size: " + response.length + ", expected: " + expectedLength); + } + if (expectedSHA1) { + const digest = await window.crypto.subtle.digest("SHA-1", new TextEncoder().encode(response)); + const sha1 = Array.from(new Uint8Array(digest)).map(b => b.toString(16).padStart(2, '0')).join(''); + if (sha1 != expectedSHA1) { + throw new Error("Unexpected sha1: " + sha1 + ", expected: " + expectedSHA1); + } + } var tag = document.createElement("script"); tag.text = response; document.body.appendChild(tag); @@ -315,14 +336,14 @@ var EngineLoader = { // move resize callback setup here to make possible to override callback // from outside of dmloader.js if (typeof CUSTOM_PARAMETERS["resize_window_callback"] === "function") { - var callback = CUSTOM_PARAMETERS["resize_window_callback"] + var callback = CUSTOM_PARAMETERS["resize_window_callback"]; callback(); window.addEventListener('resize', callback, false); window.addEventListener('orientationchange', callback, false); window.addEventListener('focus', callback, false); } } -} +}; /* ********************************************************************* */ @@ -367,7 +388,7 @@ var GameArchiveLoader = { list.push(callback); }, notifyListeners: function(list, data) { - for (i=0; i b.toString(16).padStart(2, '0')).join(''); + if (sha1 != EngineLoader.arc_sha1) { + throw new Error(`Unexpected hash ${sha1} wanted ${EngineLoader.arc_sha1}`); + } + } + } catch (e) { + GameArchiveLoader.notifyFileDownloadError(e.toString()); + return; + } + var totalSize = json.total_size; var exeName = CUSTOM_PARAMETERS['exe_name']; this._files = json.content; @@ -424,7 +460,11 @@ var GameArchiveLoader = { EngineLoader.loadAsmJsAsync(exeName); totalSize += EngineLoader.asmjs_size; } - this.downloadContent(); + if (!Module['isDMFSSupported']) { + // we can download in parallel here because we will not rely on FS, otherwise + // we have to wait until after the [w]asm is loaded. + this.downloadContent(); + } ProgressUpdater.resetCurrent(); if (isWASMSupported) { EngineLoader.updateWasmInstantiateProgress(totalSize); @@ -432,18 +472,45 @@ var GameArchiveLoader = { ProgressUpdater.setupTotal(totalSize + EngineLoader.wasm_instantiate_progress); }, - downloadContent: function() { + downloadContent: async function() { var file = this._files[this._fileIndex]; - // if the file consists of more than one piece we prepare an array to store the pieces in - if (file.pieces.length > 1) { - file.data = new Uint8Array(file.size); + + if (Module['isDMFSSupported']) { + const path = `${DMSYS.GetUserPersistentDataRoot()}/${file.name}`; + try { // see if already and stored + const stat = FS.stat(path); + if (stat) { + let matches = (file.size == stat.size); + if (matches && file.sha1) { + const stream = FS.open(path, "r"); + if (stream) { + try { + const mmap = FS.mmap(stream, stat.size, 0, 0x01, 0x01); //PROT_READ, MAP_SHARED + if (mmap) { + const digest = await window.crypto.subtle.digest("SHA-1", mmap); + matches = Array.from(new Uint8Array(digest)).map(b => b.toString(16).padStart(2, '0')).join('') == file.sha1; + } + } catch(e) { } + FS.close(stream); + } else { + matches = false; + } + } + if (matches) { + this.onFileLoaded(file); + return; + } + } + } catch(_e) { } + file.stream = FS.open(path, "w+"); } + // how many pieces to download at a time var limit = file.pieces.length; if (typeof this.MAX_CONCURRENT_XHR !== 'undefined') { limit = Math.min(limit, this.MAX_CONCURRENT_XHR); } - // download pieces + for (var i=0; i start) { @@ -507,7 +579,16 @@ var GameArchiveLoader = { ++file.totalLoadedPieces; // is all pieces of the file loaded? if (file.totalLoadedPieces == file.pieces.length) { - this.onFileLoaded(file); + this.verifyFile(file).then(() => { + if (file.stream !== undefined) { + FS.close(file.stream); + file.stream = undefined; + } + this.onFileLoaded(file); + }).catch((e) => { + console.log('file verification failed! ' + e); + throw e; + }); } // continue loading more pieces of the file // if not all pieces are already in progress @@ -526,7 +607,7 @@ var GameArchiveLoader = { actualSize += file.pieces[i].dataLength; } if (actualSize != file.size) { - throw "Unexpected data size: " + file.name + ", expected size: " + file.size + ", actual size: " + actualSize; + return Promise.reject(new Error("Unexpected data size: " + file.name + ", expected size: " + file.size + ", actual size: " + actualSize)); } // verify the pieces @@ -540,21 +621,35 @@ var GameArchiveLoader = { if (0 < i) { var previous = pieces[i - 1]; if (previous.offset + previous.dataLength > start) { - throw RangeError("Segment underflow in file: " + file.name + ", offset: " + (previous.offset + previous.dataLength) + " , start: " + start); + return Promise.reject(new RangeError("Segment underflow in file: " + file.name + ", offset: " + (previous.offset + previous.dataLength) + " , start: " + start)); } } if (pieces.length - 2 > i) { var next = pieces[i + 1]; if (end > next.offset) { - throw RangeError("Segment overflow in file: " + file.name + ", offset: " + next.offset + ", end: " + end); + return Promise.reject(new RangeError("Segment overflow in file: " + file.name + ", offset: " + next.offset + ", end: " + end)); } } } } + if (file.sha1) { + let data = file.data; + if (file.stream) { + try { + data = FS.mmap(file.stream, file.size, 0, 0x01, 0x01); //PROT_READ, MAP_SHARED + } catch(e) { } + } + return window.crypto.subtle.digest("SHA-1", data).then((digest) => { + const sha1 = Array.from(new Uint8Array(digest)).map(b => b.toString(16).padStart(2, '0')).join(''); + if (sha1 !== file.sha1) + return Promise.reject(new Error(`Unexpected hash ${sha1} wanted ${file.sha1}`)); + return; + }); + } + return Promise.resolve(); }, onFileLoaded: function(file) { - this.verifyFile(file); this.notifyFileLoaded(file); ++this._fileIndex; if (this._fileIndex == this._files.length) { @@ -597,7 +692,7 @@ var ProgressView = { // Remove any background/splash image that was set in runApp(). // Workaround for Safari bug DEF-3061. - Module.canvas.style.background = ""; + Module.canvas.style.background = "none"; } } }; @@ -691,6 +786,7 @@ var Module = { _archiveLoaded: false, _preLoadDone: false, _isEngineLoaded: false, + _isMainCalled: false, // Persistent storage persistentStorage: true, @@ -707,6 +803,13 @@ var Module = { setStatus: function(text) { console.log(text); }, + isDMFSSupported: (function() { + // DMFS is meant as a mount for FS to provide another way to acess resources, by default we just use IDBFS + if (typeof DMFS === "undefined") + return false; + return true; + })(), + isWASMSupported: (function() { try { if (typeof WebAssembly === "object" && typeof WebAssembly.instantiate === "function") { @@ -755,9 +858,27 @@ var Module = { return { stack:stack, message:message }; }, + hasWebGPUSupport: function() { + var webgpu_support = false; + try { + var canvas = document.createElement("canvas"); + var webgpu = canvas.getContext("webgpu"); + if (webgpu && webgpu instanceof GPUCanvasContext) { + webgpu_support = true; + } + } catch (error) { + console.log("An error occurred while detecting WebGPU support: " + error); + webgpu_support = false; + } + + return webgpu_support; + }, + hasWebGLSupport: function() { var webgl_support = false; try { + // create canvas to simply check is rendering context supported + // real render context created by glfw var canvas = document.createElement("canvas"); var gl = canvas.getContext("webgl") || canvas.getContext("experimental-webgl"); if (gl && gl instanceof WebGLRenderingContext) { @@ -782,6 +903,10 @@ var Module = { * Module.runApp - Starts the application given a canvas element id **/ runApp: function(appCanvasId, _) { + window.addEventListener("error", (errorEvent) => { + var errorObject = Module.prepareErrorObject(errorEvent.message, errorEvent.filename, errorEvent.lineno, errorEvent.colno, errorEvent.error); + Module.ccall('JSWriteDump', 'null', ['string'], [JSON.stringify(errorObject.stack)]); + }); Module._isEngineLoaded = true; Module.setupCanvas(appCanvasId); @@ -793,9 +918,16 @@ var Module = { } Module.fullScreenContainer = fullScreenContainer || Module.canvas; - if (Module.hasWebGLSupport()) { + if (Module.hasWebGLSupport() || Module.hasWebGPUSupport()) { Module.canvas.focus(); + Module.canvas.addEventListener("webglcontextlost", function(event) { + event.preventDefault(); + dmRenderer.rendererContextEvent(dmRenderer.CONTEXT_LOST_EVENT); + }, false); + Module.canvas.addEventListener("webglcontextrestored", function(event) { + dmRenderer.rendererContextEvent(dmRenderer.CONTEXT_RESTORED_EVENT); + }, false); // Add context menu hide-handler if requested if (CUSTOM_PARAMETERS["disable_context_menu"]) { @@ -818,7 +950,9 @@ var Module = { }, onArchiveFileLoaded: function(file) { - Module._filesToPreload.push({path: file.name, data: file.data}); + if (file.data) { + Module._filesToPreload.push({path: file.name, data: file.data}); + } }, onArchiveLoaded: function() { @@ -844,14 +978,17 @@ var Module = { FS.syncfs(true, function(err) { if (err) { Module._syncTries += 1; - console.warn("Unable to synchronize mounted file systems: " + err); + console.info(`Unable to synchronize mounted file systems (attempt ${Module._syncTries} of ${Module._syncMaxTries}): `, err); if (Module._syncMaxTries > Module._syncTries) { Module.preSync(done); } else { + console.warn("Mounted system wasn't synchronized. Retry count was exceeded."); + Module._syncTries = 0; Module._syncInitial = true; done(); } } else { + Module._syncTries = 0; Module._syncInitial = true; if (done !== undefined) { done(); @@ -902,18 +1039,25 @@ var Module = { return; } - // If IndexedDB is supported we mount the persistent data root as IDBFS, - // then try to do a IDB->MEM sync before we start the engine to get - // previously saved data before boot. try { - FS.mount(IDBFS, {}, dir); + if (Module['isDMFSSupported']) { + // In DMFS mode we will use that as our mountpoint and make sure that all + // relative paths point into there. + FS.mount(new DMFS(CUSTOM_PARAMETERS['exe_name']), {}, dir); + FS.chdir(dir); + } else { + // If IndexedDB is supported we mount the persistent data root as IDBFS, + // then try to do a IDB->MEM sync before we start the engine to get + // previously saved data before boot. + FS.mount(IDBFS, {}, dir); + } // Patch FS.close so it will try to sync MEM->IDB var _close = FS.close; FS.close = function(stream) { var r = _close(stream); Module.persistentSync(); return r; - } + }; } catch (error) { Module.persistentStorage = false; @@ -929,14 +1073,17 @@ var Module = { preRun: [function() { /* If archive is loaded, preload all its files */ - if(Module._archiveLoaded) { + if (Module._archiveLoaded) { Module.preloadAll(); } }], postRun: [function() { - if(Module._archiveLoaded) { + if (Module._archiveLoaded) { ProgressView.removeProgress(); + } else if (Module['isDMFSSupported']) { + // kick off the content download now that we have FS access + GameArchiveLoader.downloadContent(); } }], @@ -955,12 +1102,17 @@ var Module = { } }, - _callMain: function() { - ProgressView.removeProgress(); - if (Module.callMain === undefined) { - Module.noInitialRun = false; + _callMain: function(_, _) { + if (!Module._isMainCalled) { + Module._isMainCalled = true; + ProgressView.removeProgress(); + if (Module.callMain === undefined) { + Module.noInitialRun = false; + } else { + Module.callMain(Module.arguments); + } } else { - Module.callMain(Module.arguments); + console.warn("Main was called several times!"); } }, // Wrap IDBFS syncfs call with logic to avoid multiple syncs @@ -973,8 +1125,10 @@ var Module = { Module._syncInProgress = false; if (err) { - console.warn("Unable to synchronize mounted file systems: " + err); + console.info(`Unable to synchronize mounted file systems (attempt ${Module._syncTries} of ${Module._syncMaxTries}): `, err); Module._syncTries += 1; + } else { + Module._syncTries = 0; } if (Module._syncNeeded) { @@ -983,6 +1137,9 @@ var Module = { } }); + } else { + console.warn("Mounted system wasn't synchronized. Retry count was exceeded."); + Module._syncTries = 0; } }, }; @@ -1001,19 +1158,15 @@ Module["locateFile"] = function(path, scriptDirectory) // dmengine*.wasm is hardcoded in the built JS loader for WASM, // we need to replace it here with the correct project name. if (path == "dmengine.wasm" || path == "dmengine_release.wasm" || path == "dmengine_headless.wasm") { - path = "druid.wasm"; + path = "Druid.wasm"; } return scriptDirectory + path; }; -window.onerror = function(err, url, line, column, errObj) { - if (typeof Module.ccall !== 'undefined') { - var errorObject = Module.prepareErrorObject(err, url, line, column, errObj); - Module.ccall('JSWriteDump', 'null', ['string'], [JSON.stringify(errorObject.stack)]); - } +window.addEventListener("error", (errorEvent) => { Module.setStatus('Exception thrown, see JavaScript console'); Module.setStatus = function(text) { if (text) Module.printErr('[post-exception status] ' + text); }; -}; +}); diff --git a/docs/druid.wasm b/docs/druid.wasm new file mode 100644 index 0000000..e384527 Binary files /dev/null and b/docs/druid.wasm differ diff --git a/docs/druid/archive/archive_files.json b/docs/druid/archive/archive_files.json deleted file mode 100644 index b4e0ce0..0000000 --- a/docs/druid/archive/archive_files.json +++ /dev/null @@ -1 +0,0 @@ -{"content":[{"name":"game.projectc","size":4457,"pieces":[{"name":"game0.projectc","offset":0}]},{"name":"game.arci","size":12368,"pieces":[{"name":"game0.arci","offset":0}]},{"name":"game.arcd","size":3557312,"pieces":[{"name":"game0.arcd","offset":0},{"name":"game1.arcd","offset":2097152}]},{"name":"game.dmanifest","size":13892,"pieces":[{"name":"game0.dmanifest","offset":0}]},{"name":"game.public.der","size":162,"pieces":[{"name":"game0.public.der","offset":0}]}],"total_size":3588191} \ No newline at end of file diff --git a/docs/druid/archive/game0.arci b/docs/druid/archive/game0.arci deleted file mode 100644 index 665c631..0000000 Binary files a/docs/druid/archive/game0.arci and /dev/null differ diff --git a/docs/druid/archive/game0.dmanifest b/docs/druid/archive/game0.dmanifest deleted file mode 100644 index 3b34859..0000000 Binary files a/docs/druid/archive/game0.dmanifest and /dev/null differ diff --git a/docs/druid/archive/game0.public.der b/docs/druid/archive/game0.public.der deleted file mode 100644 index ebf423a..0000000 Binary files a/docs/druid/archive/game0.public.der and /dev/null differ diff --git a/docs/druid/druid.wasm b/docs/druid/druid.wasm deleted file mode 100644 index f569556..0000000 Binary files a/docs/druid/druid.wasm and /dev/null differ diff --git a/docs/druid/druid_wasm.js b/docs/druid/druid_wasm.js deleted file mode 100644 index fbc736c..0000000 --- a/docs/druid/druid_wasm.js +++ /dev/null @@ -1,10098 +0,0 @@ -function _defineProperties(target, props) { for (var i = 0; i < props.length; i++) { var descriptor = props[i]; descriptor.enumerable = descriptor.enumerable || false; descriptor.configurable = true; if ("value" in descriptor) descriptor.writable = true; Object.defineProperty(target, _toPropertyKey(descriptor.key), descriptor); } } -function _createClass(Constructor, protoProps, staticProps) { if (protoProps) _defineProperties(Constructor.prototype, protoProps); if (staticProps) _defineProperties(Constructor, staticProps); Object.defineProperty(Constructor, "prototype", { writable: false }); return Constructor; } -function _toPropertyKey(t) { var i = _toPrimitive(t, "string"); return "symbol" == _typeof(i) ? i : String(i); } -function _toPrimitive(t, r) { if ("object" != _typeof(t) || !t) return t; var e = t[Symbol.toPrimitive]; if (void 0 !== e) { var i = e.call(t, r || "default"); if ("object" != _typeof(i)) return i; throw new TypeError("@@toPrimitive must return a primitive value."); } return ("string" === r ? String : Number)(t); } -function _classCallCheck(instance, Constructor) { if (!(instance instanceof Constructor)) { throw new TypeError("Cannot call a class as a function"); } } -function _toConsumableArray(arr) { return _arrayWithoutHoles(arr) || _iterableToArray(arr) || _unsupportedIterableToArray(arr) || _nonIterableSpread(); } -function _nonIterableSpread() { throw new TypeError("Invalid attempt to spread non-iterable instance.\nIn order to be iterable, non-array objects must have a [Symbol.iterator]() method."); } -function _unsupportedIterableToArray(o, minLen) { if (!o) return; if (typeof o === "string") return _arrayLikeToArray(o, minLen); var n = Object.prototype.toString.call(o).slice(8, -1); if (n === "Object" && o.constructor) n = o.constructor.name; if (n === "Map" || n === "Set") return Array.from(o); if (n === "Arguments" || /^(?:Ui|I)nt(?:8|16|32)(?:Clamped)?Array$/.test(n)) return _arrayLikeToArray(o, minLen); } -function _iterableToArray(iter) { if (typeof Symbol !== "undefined" && iter[Symbol.iterator] != null || iter["@@iterator"] != null) return Array.from(iter); } -function _arrayWithoutHoles(arr) { if (Array.isArray(arr)) return _arrayLikeToArray(arr); } -function _arrayLikeToArray(arr, len) { if (len == null || len > arr.length) len = arr.length; for (var i = 0, arr2 = new Array(len); i < len; i++) arr2[i] = arr[i]; return arr2; } -function _typeof(o) { "@babel/helpers - typeof"; return _typeof = "function" == typeof Symbol && "symbol" == typeof Symbol.iterator ? function (o) { return typeof o; } : function (o) { return o && "function" == typeof Symbol && o.constructor === Symbol && o !== Symbol.prototype ? "symbol" : typeof o; }, _typeof(o); } -var Module = typeof Module != "undefined" ? Module : {}; -if (typeof Object.assign == "undefined") { - Object.assign = function (target, source) { - for (var i = 1; i < arguments.length; i++) { - var source = arguments[i]; - if (!source) continue; - for (var key in source) { - if (source.hasOwnProperty(key)) target[key] = source[key]; - } - } - return target; - }; -} -var moduleOverrides = Object.assign({}, Module); -var arguments_ = []; -var thisProgram = "./this.program"; -var quit_ = function quit_(status, toThrow) { - throw toThrow; -}; -var ENVIRONMENT_IS_WEB = (typeof window === "undefined" ? "undefined" : _typeof(window)) == "object"; -var ENVIRONMENT_IS_WORKER = typeof importScripts == "function"; -var ENVIRONMENT_IS_NODE = (typeof process === "undefined" ? "undefined" : _typeof(process)) == "object" && _typeof(process.versions) == "object" && typeof process.versions.node == "string"; -var scriptDirectory = ""; -function locateFile(path) { - if (Module["locateFile"]) { - return Module["locateFile"](path, scriptDirectory); - } - return scriptDirectory + path; -} -var read_, readAsync, readBinary; -if (ENVIRONMENT_IS_NODE) { - var fs = require("fs"); - var nodePath = require("path"); - if (ENVIRONMENT_IS_WORKER) { - scriptDirectory = nodePath.dirname(scriptDirectory) + "/"; - } else { - scriptDirectory = __dirname + "/"; - } - read_ = function read_(filename, binary) { - filename = isFileURI(filename) ? new URL(filename) : nodePath.normalize(filename); - return fs.readFileSync(filename, binary ? undefined : "utf8"); - }; - readBinary = function readBinary(filename) { - var ret = read_(filename, true); - if (!ret.buffer) { - ret = new Uint8Array(ret); - } - return ret; - }; - readAsync = function readAsync(filename, onload, onerror) { - var binary = arguments.length > 3 && arguments[3] !== undefined ? arguments[3] : true; - filename = isFileURI(filename) ? new URL(filename) : nodePath.normalize(filename); - fs.readFile(filename, binary ? undefined : "utf8", function (err, data) { - if (err) onerror(err);else onload(binary ? data.buffer : data); - }); - }; - if (!Module["thisProgram"] && process.argv.length > 1) { - thisProgram = process.argv[1].replace(/\\/g, "/"); - } - arguments_ = process.argv.slice(2); - if (typeof module != "undefined") { - module["exports"] = Module; - } - process.on("uncaughtException", function (ex) { - if (ex !== "unwind" && !(ex instanceof ExitStatus) && !(ex.context instanceof ExitStatus)) { - throw ex; - } - }); - quit_ = function quit_(status, toThrow) { - process.exitCode = status; - throw toThrow; - }; -} else if (ENVIRONMENT_IS_WEB || ENVIRONMENT_IS_WORKER) { - if (ENVIRONMENT_IS_WORKER) { - scriptDirectory = self.location.href; - } else if (typeof document != "undefined" && document.currentScript) { - scriptDirectory = document.currentScript.src; - } - if (scriptDirectory.startsWith("blob:")) { - scriptDirectory = ""; - } else { - scriptDirectory = scriptDirectory.substr(0, scriptDirectory.replace(/[?#].*/, "").lastIndexOf("/") + 1); - } - { - read_ = function read_(url) { - var xhr = new XMLHttpRequest(); - xhr.open("GET", url, false); - xhr.send(null); - return xhr.responseText; - }; - if (ENVIRONMENT_IS_WORKER) { - readBinary = function readBinary(url) { - var xhr = new XMLHttpRequest(); - xhr.open("GET", url, false); - xhr.responseType = "arraybuffer"; - xhr.send(null); - return new Uint8Array(xhr.response); - }; - } - readAsync = function readAsync(url, onload, onerror) { - var xhr = new XMLHttpRequest(); - xhr.open("GET", url, true); - xhr.responseType = "arraybuffer"; - xhr.onload = function () { - if (xhr.status == 200 || xhr.status == 0 && xhr.response) { - onload(xhr.response); - return; - } - onerror(); - }; - xhr.onerror = onerror; - xhr.send(null); - }; - } -} else {} -var out = Module["print"] || console.log.bind(console); -var err = Module["printErr"] || console.error.bind(console); -Object.assign(Module, moduleOverrides); -moduleOverrides = null; -if (Module["arguments"]) arguments_ = Module["arguments"]; -if (Module["thisProgram"]) thisProgram = Module["thisProgram"]; -if (Module["quit"]) quit_ = Module["quit"]; -var wasmBinary; -if (Module["wasmBinary"]) wasmBinary = Module["wasmBinary"]; -if ((typeof WebAssembly === "undefined" ? "undefined" : _typeof(WebAssembly)) != "object") { - abort("no native wasm support detected"); -} -var wasmMemory; -var ABORT = false; -var EXITSTATUS; -function assert(condition, text) { - if (!condition) { - abort(text); - } -} -var HEAP8, HEAPU8, HEAP16, HEAPU16, HEAP32, HEAPU32, HEAPF32, HEAPF64; -function updateMemoryViews() { - var b = wasmMemory.buffer; - Module["HEAP8"] = HEAP8 = new Int8Array(b); - Module["HEAP16"] = HEAP16 = new Int16Array(b); - Module["HEAPU8"] = HEAPU8 = new Uint8Array(b); - Module["HEAPU16"] = HEAPU16 = new Uint16Array(b); - Module["HEAP32"] = HEAP32 = new Int32Array(b); - Module["HEAPU32"] = HEAPU32 = new Uint32Array(b); - Module["HEAPF32"] = HEAPF32 = new Float32Array(b); - Module["HEAPF64"] = HEAPF64 = new Float64Array(b); -} -var INITIAL_MEMORY = Module["INITIAL_MEMORY"] || 33554432; -if (Module["wasmMemory"]) { - wasmMemory = Module["wasmMemory"]; -} else { - wasmMemory = new WebAssembly.Memory({ - "initial": INITIAL_MEMORY / 65536, - "maximum": 2147483648 / 65536 - }); -} -updateMemoryViews(); -INITIAL_MEMORY = wasmMemory.buffer.byteLength; -var __ATPRERUN__ = []; -var __ATINIT__ = []; -var __ATMAIN__ = []; -var __ATEXIT__ = []; -var __ATPOSTRUN__ = []; -var runtimeInitialized = false; -function preRun() { - if (Module["preRun"]) { - if (typeof Module["preRun"] == "function") Module["preRun"] = [Module["preRun"]]; - while (Module["preRun"].length) { - addOnPreRun(Module["preRun"].shift()); - } - } - callRuntimeCallbacks(__ATPRERUN__); -} -function initRuntime() { - runtimeInitialized = true; - if (!Module["noFSInit"] && !FS.init.initialized) FS.init(); - FS.ignorePermissions = false; - TTY.init(); - SOCKFS.root = FS.mount(SOCKFS, {}, null); - callRuntimeCallbacks(__ATINIT__); -} -function preMain() { - callRuntimeCallbacks(__ATMAIN__); -} -function postRun() { - if (Module["postRun"]) { - if (typeof Module["postRun"] == "function") Module["postRun"] = [Module["postRun"]]; - while (Module["postRun"].length) { - addOnPostRun(Module["postRun"].shift()); - } - } - callRuntimeCallbacks(__ATPOSTRUN__); -} -function addOnPreRun(cb) { - __ATPRERUN__.unshift(cb); -} -function addOnInit(cb) { - __ATINIT__.unshift(cb); -} -function addOnPostRun(cb) { - __ATPOSTRUN__.unshift(cb); -} -if (!Math.fround) { - var froundBuffer = new Float32Array(1); - Math.fround = function (x) { - froundBuffer[0] = x; - return froundBuffer[0]; - }; -} -Math.clz32 || (Math.clz32 = function (x) { - var n = 32; - var y = x >> 16; - if (y) { - n -= 16; - x = y; - } - y = x >> 8; - if (y) { - n -= 8; - x = y; - } - y = x >> 4; - if (y) { - n -= 4; - x = y; - } - y = x >> 2; - if (y) { - n -= 2; - x = y; - } - y = x >> 1; - if (y) return n - 2; - return n - x; -}); -Math.trunc || (Math.trunc = function (x) { - return x < 0 ? Math.ceil(x) : Math.floor(x); -}); -var runDependencies = 0; -var runDependencyWatcher = null; -var dependenciesFulfilled = null; -function getUniqueRunDependency(id) { - return id; -} -function addRunDependency(id) { - var _Module$monitorRunDep; - runDependencies++; - (_Module$monitorRunDep = Module["monitorRunDependencies"]) === null || _Module$monitorRunDep === void 0 || _Module$monitorRunDep.call(Module, runDependencies); -} -function removeRunDependency(id) { - var _Module$monitorRunDep2; - runDependencies--; - (_Module$monitorRunDep2 = Module["monitorRunDependencies"]) === null || _Module$monitorRunDep2 === void 0 || _Module$monitorRunDep2.call(Module, runDependencies); - if (runDependencies == 0) { - if (runDependencyWatcher !== null) { - clearInterval(runDependencyWatcher); - runDependencyWatcher = null; - } - if (dependenciesFulfilled) { - var callback = dependenciesFulfilled; - dependenciesFulfilled = null; - callback(); - } - } -} -function abort(what) { - var _Module$onAbort; - (_Module$onAbort = Module["onAbort"]) === null || _Module$onAbort === void 0 || _Module$onAbort.call(Module, what); - what = "Aborted(" + what + ")"; - err(what); - ABORT = true; - EXITSTATUS = 1; - what += ". Build with -sASSERTIONS for more info."; - var e = new WebAssembly.RuntimeError(what); - throw e; -} -var dataURIPrefix = "data:application/octet-stream;base64,"; -var isDataURI = function isDataURI(filename) { - return filename.startsWith(dataURIPrefix); -}; -var isFileURI = function isFileURI(filename) { - return filename.startsWith("file://"); -}; -var wasmBinaryFile; -wasmBinaryFile = "dmengine_release.wasm"; -if (!isDataURI(wasmBinaryFile)) { - wasmBinaryFile = locateFile(wasmBinaryFile); -} -function getBinarySync(file) { - if (file == wasmBinaryFile && wasmBinary) { - return new Uint8Array(wasmBinary); - } - if (readBinary) { - return readBinary(file); - } - throw "both async and sync fetching of the wasm failed"; -} -function getBinaryPromise(binaryFile) { - if (!wasmBinary && (ENVIRONMENT_IS_WEB || ENVIRONMENT_IS_WORKER)) { - if (typeof fetch == "function" && !isFileURI(binaryFile)) { - return fetch(binaryFile, { - credentials: "same-origin" - }).then(function (response) { - if (!response["ok"]) { - throw "failed to load wasm binary file at '".concat(binaryFile, "'"); - } - return response["arrayBuffer"](); - }).catch(function () { - return getBinarySync(binaryFile); - }); - } else if (readAsync) { - return new Promise(function (resolve, reject) { - readAsync(binaryFile, function (response) { - return resolve(new Uint8Array(response)); - }, reject); - }); - } - } - return Promise.resolve().then(function () { - return getBinarySync(binaryFile); - }); -} -function instantiateArrayBuffer(binaryFile, imports, receiver) { - return getBinaryPromise(binaryFile).then(function (binary) { - return WebAssembly.instantiate(binary, imports); - }).then(receiver, function (reason) { - err("failed to asynchronously prepare wasm: ".concat(reason)); - abort(reason); - }); -} -function instantiateAsync(binary, binaryFile, imports, callback) { - if (!binary && typeof WebAssembly.instantiateStreaming == "function" && !isDataURI(binaryFile) && !isFileURI(binaryFile) && !ENVIRONMENT_IS_NODE && typeof fetch == "function") { - return fetch(binaryFile, { - credentials: "same-origin" - }).then(function (response) { - var result = WebAssembly.instantiateStreaming(response, imports); - return result.then(callback, function (reason) { - err("wasm streaming compile failed: ".concat(reason)); - err("falling back to ArrayBuffer instantiation"); - return instantiateArrayBuffer(binaryFile, imports, callback); - }); - }); - } - return instantiateArrayBuffer(binaryFile, imports, callback); -} -function createWasm() { - var info = { - "a": wasmImports - }; - function receiveInstance(instance, module) { - wasmExports = instance.exports; - wasmTable = wasmExports["Vh"]; - addOnInit(wasmExports["Qh"]); - removeRunDependency("wasm-instantiate"); - return wasmExports; - } - addRunDependency("wasm-instantiate"); - function receiveInstantiationResult(result) { - receiveInstance(result["instance"]); - } - if (Module["instantiateWasm"]) { - try { - return Module["instantiateWasm"](info, receiveInstance); - } catch (e) { - err("Module.instantiateWasm callback failed with error: ".concat(e)); - return false; - } - } - instantiateAsync(wasmBinary, wasmBinaryFile, info, receiveInstantiationResult); - return {}; -} -var tempDouble; -var tempI64; -var ASM_CONSTS = { - 277608: function _() { - if (navigator.userAgent.toLowerCase().indexOf("chrome") > -1) { - console.log("%c %c Made with Defold %c %c https://www.defold.com", "background: #fd6623; padding:5px 0; border: 5px;", "background: #272c31; color: #fafafa; padding:5px 0;", "background: #39a3e4; padding:5px 0;", "background: #ffffff; color: #000000; padding:5px 0;"); - } else { - console.log("Made with Defold -=[ https://www.defold.com ]=-"); - } - }, - 278036: function _($0) { - var jsResult; - var isSuccess = 1; - try { - jsResult = eval(UTF8ToString($0)); - } catch (err) { - isSuccess = 0; - jsResult = err; - } - _dmScript_Html5ReportOperationSuccess(isSuccess); - jsResult += ""; - var stringOnWasmHeap = stringToNewUTF8(jsResult); - return stringOnWasmHeap; - }, - 278304: function _() { - document.removeEventListener("click", Module.__defold_interaction_listener); - document.removeEventListener("keyup", Module.__defold_interaction_listener); - document.removeEventListener("touchend", Module.__defold_interaction_listener); - Module.__defold_interaction_listener = undefined; - }, - 278592: function _() { - Module.__defold_interaction_listener = function () { - _dmScript_RunInteractionCallback(); - }; - document.addEventListener("click", Module.__defold_interaction_listener); - document.addEventListener("keyup", Module.__defold_interaction_listener); - document.addEventListener("touchend", Module.__defold_interaction_listener); - }, - 278913: function _($0) { - Module.printErr(UTF8ToString($0)); - }, - 278952: function _($0) { - Module.print(UTF8ToString($0)); - } -}; -function ExitStatus(status) { - this.name = "ExitStatus"; - this.message = "Program terminated with exit(".concat(status, ")"); - this.status = status; -} -var callRuntimeCallbacks = function callRuntimeCallbacks(callbacks) { - while (callbacks.length > 0) { - callbacks.shift()(Module); - } -}; -function getValue(ptr) { - var type = arguments.length > 1 && arguments[1] !== undefined ? arguments[1] : "i8"; - if (type.endsWith("*")) type = "*"; - switch (type) { - case "i1": - return HEAP8[ptr]; - case "i8": - return HEAP8[ptr]; - case "i16": - return HEAP16[ptr >> 1]; - case "i32": - return HEAP32[ptr >> 2]; - case "i64": - abort("to do getValue(i64) use WASM_BIGINT"); - case "float": - return HEAPF32[ptr >> 2]; - case "double": - return HEAPF64[ptr >> 3]; - case "*": - return HEAPU32[ptr >> 2]; - default: - abort("invalid type for getValue: ".concat(type)); - } -} -var noExitRuntime = Module["noExitRuntime"] || true; -function setValue(ptr, value) { - var type = arguments.length > 2 && arguments[2] !== undefined ? arguments[2] : "i8"; - if (type.endsWith("*")) type = "*"; - switch (type) { - case "i1": - HEAP8[ptr] = value; - break; - case "i8": - HEAP8[ptr] = value; - break; - case "i16": - HEAP16[ptr >> 1] = value; - break; - case "i32": - HEAP32[ptr >> 2] = value; - break; - case "i64": - abort("to do setValue(i64) use WASM_BIGINT"); - case "float": - HEAPF32[ptr >> 2] = value; - break; - case "double": - HEAPF64[ptr >> 3] = value; - break; - case "*": - HEAPU32[ptr >> 2] = value; - break; - default: - abort("invalid type for setValue: ".concat(type)); - } -} -var UTF8Decoder = typeof TextDecoder != "undefined" ? new TextDecoder("utf8") : undefined; -var UTF8ArrayToString = function UTF8ArrayToString(heapOrArray, idx, maxBytesToRead) { - var endIdx = idx + maxBytesToRead; - var endPtr = idx; - while (heapOrArray[endPtr] && !(endPtr >= endIdx)) ++endPtr; - if (endPtr - idx > 16 && heapOrArray.buffer && UTF8Decoder) { - return UTF8Decoder.decode(heapOrArray.subarray(idx, endPtr)); - } - var str = ""; - while (idx < endPtr) { - var u0 = heapOrArray[idx++]; - if (!(u0 & 128)) { - str += String.fromCharCode(u0); - continue; - } - var u1 = heapOrArray[idx++] & 63; - if ((u0 & 224) == 192) { - str += String.fromCharCode((u0 & 31) << 6 | u1); - continue; - } - var u2 = heapOrArray[idx++] & 63; - if ((u0 & 240) == 224) { - u0 = (u0 & 15) << 12 | u1 << 6 | u2; - } else { - u0 = (u0 & 7) << 18 | u1 << 12 | u2 << 6 | heapOrArray[idx++] & 63; - } - if (u0 < 65536) { - str += String.fromCharCode(u0); - } else { - var ch = u0 - 65536; - str += String.fromCharCode(55296 | ch >> 10, 56320 | ch & 1023); - } - } - return str; -}; -var UTF8ToString = function UTF8ToString(ptr, maxBytesToRead) { - return ptr ? UTF8ArrayToString(HEAPU8, ptr, maxBytesToRead) : ""; -}; -var ___assert_fail = function ___assert_fail(condition, filename, line, func) { - abort("Assertion failed: ".concat(UTF8ToString(condition), ", at: ") + [filename ? UTF8ToString(filename) : "unknown filename", line, func ? UTF8ToString(func) : "unknown function"]); -}; -var PATH = { - isAbs: function isAbs(path) { - return path.charAt(0) === "/"; - }, - splitPath: function splitPath(filename) { - var splitPathRe = /^(\/?|)([\s\S]*?)((?:\.{1,2}|[^\/]+?|)(\.[^.\/]*|))(?:[\/]*)$/; - return splitPathRe.exec(filename).slice(1); - }, - normalizeArray: function normalizeArray(parts, allowAboveRoot) { - var up = 0; - for (var i = parts.length - 1; i >= 0; i--) { - var last = parts[i]; - if (last === ".") { - parts.splice(i, 1); - } else if (last === "..") { - parts.splice(i, 1); - up++; - } else if (up) { - parts.splice(i, 1); - up--; - } - } - if (allowAboveRoot) { - for (; up; up--) { - parts.unshift(".."); - } - } - return parts; - }, - normalize: function normalize(path) { - var isAbsolute = PATH.isAbs(path), - trailingSlash = path.substr(-1) === "/"; - path = PATH.normalizeArray(path.split("/").filter(function (p) { - return !!p; - }), !isAbsolute).join("/"); - if (!path && !isAbsolute) { - path = "."; - } - if (path && trailingSlash) { - path += "/"; - } - return (isAbsolute ? "/" : "") + path; - }, - dirname: function dirname(path) { - var result = PATH.splitPath(path), - root = result[0], - dir = result[1]; - if (!root && !dir) { - return "."; - } - if (dir) { - dir = dir.substr(0, dir.length - 1); - } - return root + dir; - }, - basename: function basename(path) { - if (path === "/") return "/"; - path = PATH.normalize(path); - path = path.replace(/\/$/, ""); - var lastSlash = path.lastIndexOf("/"); - if (lastSlash === -1) return path; - return path.substr(lastSlash + 1); - }, - join: function join() { - for (var _len = arguments.length, paths = new Array(_len), _key = 0; _key < _len; _key++) { - paths[_key] = arguments[_key]; - } - return PATH.normalize(paths.join("/")); - }, - join2: function join2(l, r) { - return PATH.normalize(l + "/" + r); - } -}; -var initRandomFill = function initRandomFill() { - if ((typeof crypto === "undefined" ? "undefined" : _typeof(crypto)) == "object" && typeof crypto["getRandomValues"] == "function") { - return function (view) { - return crypto.getRandomValues(view); - }; - } else if (ENVIRONMENT_IS_NODE) { - try { - var crypto_module = require("crypto"); - var randomFillSync = crypto_module["randomFillSync"]; - if (randomFillSync) { - return function (view) { - return crypto_module["randomFillSync"](view); - }; - } - var randomBytes = crypto_module["randomBytes"]; - return function (view) { - return view.set(randomBytes(view.byteLength)), view; - }; - } catch (e) {} - } - abort("initRandomDevice"); -}; -var _randomFill = function randomFill(view) { - return (_randomFill = initRandomFill())(view); -}; -var PATH_FS = { - resolve: function resolve() { - var resolvedPath = "", - resolvedAbsolute = false; - for (var i = arguments.length - 1; i >= -1 && !resolvedAbsolute; i--) { - var path = i >= 0 ? i < 0 || arguments.length <= i ? undefined : arguments[i] : FS.cwd(); - if (typeof path != "string") { - throw new TypeError("Arguments to path.resolve must be strings"); - } else if (!path) { - return ""; - } - resolvedPath = path + "/" + resolvedPath; - resolvedAbsolute = PATH.isAbs(path); - } - resolvedPath = PATH.normalizeArray(resolvedPath.split("/").filter(function (p) { - return !!p; - }), !resolvedAbsolute).join("/"); - return (resolvedAbsolute ? "/" : "") + resolvedPath || "."; - }, - relative: function relative(from, to) { - from = PATH_FS.resolve(from).substr(1); - to = PATH_FS.resolve(to).substr(1); - function trim(arr) { - var start = 0; - for (; start < arr.length; start++) { - if (arr[start] !== "") break; - } - var end = arr.length - 1; - for (; end >= 0; end--) { - if (arr[end] !== "") break; - } - if (start > end) return []; - return arr.slice(start, end - start + 1); - } - var fromParts = trim(from.split("/")); - var toParts = trim(to.split("/")); - var length = Math.min(fromParts.length, toParts.length); - var samePartsLength = length; - for (var i = 0; i < length; i++) { - if (fromParts[i] !== toParts[i]) { - samePartsLength = i; - break; - } - } - var outputParts = []; - for (var i = samePartsLength; i < fromParts.length; i++) { - outputParts.push(".."); - } - outputParts = outputParts.concat(toParts.slice(samePartsLength)); - return outputParts.join("/"); - } -}; -var FS_stdin_getChar_buffer = []; -var lengthBytesUTF8 = function lengthBytesUTF8(str) { - var len = 0; - for (var i = 0; i < str.length; ++i) { - var c = str.charCodeAt(i); - if (c <= 127) { - len++; - } else if (c <= 2047) { - len += 2; - } else if (c >= 55296 && c <= 57343) { - len += 4; - ++i; - } else { - len += 3; - } - } - return len; -}; -var stringToUTF8Array = function stringToUTF8Array(str, heap, outIdx, maxBytesToWrite) { - if (!(maxBytesToWrite > 0)) return 0; - var startIdx = outIdx; - var endIdx = outIdx + maxBytesToWrite - 1; - for (var i = 0; i < str.length; ++i) { - var u = str.charCodeAt(i); - if (u >= 55296 && u <= 57343) { - var u1 = str.charCodeAt(++i); - u = 65536 + ((u & 1023) << 10) | u1 & 1023; - } - if (u <= 127) { - if (outIdx >= endIdx) break; - heap[outIdx++] = u; - } else if (u <= 2047) { - if (outIdx + 1 >= endIdx) break; - heap[outIdx++] = 192 | u >> 6; - heap[outIdx++] = 128 | u & 63; - } else if (u <= 65535) { - if (outIdx + 2 >= endIdx) break; - heap[outIdx++] = 224 | u >> 12; - heap[outIdx++] = 128 | u >> 6 & 63; - heap[outIdx++] = 128 | u & 63; - } else { - if (outIdx + 3 >= endIdx) break; - heap[outIdx++] = 240 | u >> 18; - heap[outIdx++] = 128 | u >> 12 & 63; - heap[outIdx++] = 128 | u >> 6 & 63; - heap[outIdx++] = 128 | u & 63; - } - } - heap[outIdx] = 0; - return outIdx - startIdx; -}; -function intArrayFromString(stringy, dontAddNull, length) { - var len = length > 0 ? length : lengthBytesUTF8(stringy) + 1; - var u8array = new Array(len); - var numBytesWritten = stringToUTF8Array(stringy, u8array, 0, u8array.length); - if (dontAddNull) u8array.length = numBytesWritten; - return u8array; -} -var FS_stdin_getChar = function FS_stdin_getChar() { - if (!FS_stdin_getChar_buffer.length) { - var result = null; - if (ENVIRONMENT_IS_NODE) { - var BUFSIZE = 256; - var buf = Buffer.alloc(BUFSIZE); - var bytesRead = 0; - var fd = process.stdin.fd; - try { - bytesRead = fs.readSync(fd, buf); - } catch (e) { - if (e.toString().includes("EOF")) bytesRead = 0;else throw e; - } - if (bytesRead > 0) { - result = buf.slice(0, bytesRead).toString("utf-8"); - } else { - result = null; - } - } else if (typeof window != "undefined" && typeof window.prompt == "function") { - result = window.prompt("Input: "); - if (result !== null) { - result += "\n"; - } - } else if (typeof readline == "function") { - result = readline(); - if (result !== null) { - result += "\n"; - } - } - if (!result) { - return null; - } - FS_stdin_getChar_buffer = intArrayFromString(result, true); - } - return FS_stdin_getChar_buffer.shift(); -}; -var TTY = { - ttys: [], - init: function init() {}, - shutdown: function shutdown() {}, - register: function register(dev, ops) { - TTY.ttys[dev] = { - input: [], - output: [], - ops: ops - }; - FS.registerDevice(dev, TTY.stream_ops); - }, - stream_ops: { - open: function open(stream) { - var tty = TTY.ttys[stream.node.rdev]; - if (!tty) { - throw new FS.ErrnoError(43); - } - stream.tty = tty; - stream.seekable = false; - }, - close: function close(stream) { - stream.tty.ops.fsync(stream.tty); - }, - fsync: function fsync(stream) { - stream.tty.ops.fsync(stream.tty); - }, - read: function read(stream, buffer, offset, length, pos) { - if (!stream.tty || !stream.tty.ops.get_char) { - throw new FS.ErrnoError(60); - } - var bytesRead = 0; - for (var i = 0; i < length; i++) { - var result; - try { - result = stream.tty.ops.get_char(stream.tty); - } catch (e) { - throw new FS.ErrnoError(29); - } - if (result === undefined && bytesRead === 0) { - throw new FS.ErrnoError(6); - } - if (result === null || result === undefined) break; - bytesRead++; - buffer[offset + i] = result; - } - if (bytesRead) { - stream.node.timestamp = Date.now(); - } - return bytesRead; - }, - write: function write(stream, buffer, offset, length, pos) { - if (!stream.tty || !stream.tty.ops.put_char) { - throw new FS.ErrnoError(60); - } - try { - for (var i = 0; i < length; i++) { - stream.tty.ops.put_char(stream.tty, buffer[offset + i]); - } - } catch (e) { - throw new FS.ErrnoError(29); - } - if (length) { - stream.node.timestamp = Date.now(); - } - return i; - } - }, - default_tty_ops: { - get_char: function get_char(tty) { - return FS_stdin_getChar(); - }, - put_char: function put_char(tty, val) { - if (val === null || val === 10) { - out(UTF8ArrayToString(tty.output, 0)); - tty.output = []; - } else { - if (val != 0) tty.output.push(val); - } - }, - fsync: function fsync(tty) { - if (tty.output && tty.output.length > 0) { - out(UTF8ArrayToString(tty.output, 0)); - tty.output = []; - } - }, - ioctl_tcgets: function ioctl_tcgets(tty) { - return { - c_iflag: 25856, - c_oflag: 5, - c_cflag: 191, - c_lflag: 35387, - c_cc: [3, 28, 127, 21, 4, 0, 1, 0, 17, 19, 26, 0, 18, 15, 23, 22, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0] - }; - }, - ioctl_tcsets: function ioctl_tcsets(tty, optional_actions, data) { - return 0; - }, - ioctl_tiocgwinsz: function ioctl_tiocgwinsz(tty) { - return [24, 80]; - } - }, - default_tty1_ops: { - put_char: function put_char(tty, val) { - if (val === null || val === 10) { - err(UTF8ArrayToString(tty.output, 0)); - tty.output = []; - } else { - if (val != 0) tty.output.push(val); - } - }, - fsync: function fsync(tty) { - if (tty.output && tty.output.length > 0) { - err(UTF8ArrayToString(tty.output, 0)); - tty.output = []; - } - } - } -}; -var zeroMemory = function zeroMemory(address, size) { - HEAPU8.fill(0, address, address + size); - return address; -}; -var mmapAlloc = function mmapAlloc(size) { - abort(); -}; -var MEMFS = { - ops_table: null, - mount: function mount(_mount) { - return MEMFS.createNode(null, "/", 16384 | 511, 0); - }, - createNode: function createNode(parent, name, mode, dev) { - if (FS.isBlkdev(mode) || FS.isFIFO(mode)) { - throw new FS.ErrnoError(63); - } - MEMFS.ops_table || (MEMFS.ops_table = { - dir: { - node: { - getattr: MEMFS.node_ops.getattr, - setattr: MEMFS.node_ops.setattr, - lookup: MEMFS.node_ops.lookup, - mknod: MEMFS.node_ops.mknod, - rename: MEMFS.node_ops.rename, - unlink: MEMFS.node_ops.unlink, - rmdir: MEMFS.node_ops.rmdir, - readdir: MEMFS.node_ops.readdir, - symlink: MEMFS.node_ops.symlink - }, - stream: { - llseek: MEMFS.stream_ops.llseek - } - }, - file: { - node: { - getattr: MEMFS.node_ops.getattr, - setattr: MEMFS.node_ops.setattr - }, - stream: { - llseek: MEMFS.stream_ops.llseek, - read: MEMFS.stream_ops.read, - write: MEMFS.stream_ops.write, - allocate: MEMFS.stream_ops.allocate, - mmap: MEMFS.stream_ops.mmap, - msync: MEMFS.stream_ops.msync - } - }, - link: { - node: { - getattr: MEMFS.node_ops.getattr, - setattr: MEMFS.node_ops.setattr, - readlink: MEMFS.node_ops.readlink - }, - stream: {} - }, - chrdev: { - node: { - getattr: MEMFS.node_ops.getattr, - setattr: MEMFS.node_ops.setattr - }, - stream: FS.chrdev_stream_ops - } - }); - var node = FS.createNode(parent, name, mode, dev); - if (FS.isDir(node.mode)) { - node.node_ops = MEMFS.ops_table.dir.node; - node.stream_ops = MEMFS.ops_table.dir.stream; - node.contents = {}; - } else if (FS.isFile(node.mode)) { - node.node_ops = MEMFS.ops_table.file.node; - node.stream_ops = MEMFS.ops_table.file.stream; - node.usedBytes = 0; - node.contents = null; - } else if (FS.isLink(node.mode)) { - node.node_ops = MEMFS.ops_table.link.node; - node.stream_ops = MEMFS.ops_table.link.stream; - } else if (FS.isChrdev(node.mode)) { - node.node_ops = MEMFS.ops_table.chrdev.node; - node.stream_ops = MEMFS.ops_table.chrdev.stream; - } - node.timestamp = Date.now(); - if (parent) { - parent.contents[name] = node; - parent.timestamp = node.timestamp; - } - return node; - }, - getFileDataAsTypedArray: function getFileDataAsTypedArray(node) { - if (!node.contents) return new Uint8Array(0); - if (node.contents.subarray) return node.contents.subarray(0, node.usedBytes); - return new Uint8Array(node.contents); - }, - expandFileStorage: function expandFileStorage(node, newCapacity) { - var prevCapacity = node.contents ? node.contents.length : 0; - if (prevCapacity >= newCapacity) return; - var CAPACITY_DOUBLING_MAX = 1024 * 1024; - newCapacity = Math.max(newCapacity, prevCapacity * (prevCapacity < CAPACITY_DOUBLING_MAX ? 2 : 1.125) >>> 0); - if (prevCapacity != 0) newCapacity = Math.max(newCapacity, 256); - var oldContents = node.contents; - node.contents = new Uint8Array(newCapacity); - if (node.usedBytes > 0) node.contents.set(oldContents.subarray(0, node.usedBytes), 0); - }, - resizeFileStorage: function resizeFileStorage(node, newSize) { - if (node.usedBytes == newSize) return; - if (newSize == 0) { - node.contents = null; - node.usedBytes = 0; - } else { - var oldContents = node.contents; - node.contents = new Uint8Array(newSize); - if (oldContents) { - node.contents.set(oldContents.subarray(0, Math.min(newSize, node.usedBytes))); - } - node.usedBytes = newSize; - } - }, - node_ops: { - getattr: function getattr(node) { - var attr = {}; - attr.dev = FS.isChrdev(node.mode) ? node.id : 1; - attr.ino = node.id; - attr.mode = node.mode; - attr.nlink = 1; - attr.uid = 0; - attr.gid = 0; - attr.rdev = node.rdev; - if (FS.isDir(node.mode)) { - attr.size = 4096; - } else if (FS.isFile(node.mode)) { - attr.size = node.usedBytes; - } else if (FS.isLink(node.mode)) { - attr.size = node.link.length; - } else { - attr.size = 0; - } - attr.atime = new Date(node.timestamp); - attr.mtime = new Date(node.timestamp); - attr.ctime = new Date(node.timestamp); - attr.blksize = 4096; - attr.blocks = Math.ceil(attr.size / attr.blksize); - return attr; - }, - setattr: function setattr(node, attr) { - if (attr.mode !== undefined) { - node.mode = attr.mode; - } - if (attr.timestamp !== undefined) { - node.timestamp = attr.timestamp; - } - if (attr.size !== undefined) { - MEMFS.resizeFileStorage(node, attr.size); - } - }, - lookup: function lookup(parent, name) { - throw FS.genericErrors[44]; - }, - mknod: function mknod(parent, name, mode, dev) { - return MEMFS.createNode(parent, name, mode, dev); - }, - rename: function rename(old_node, new_dir, new_name) { - if (FS.isDir(old_node.mode)) { - var new_node; - try { - new_node = FS.lookupNode(new_dir, new_name); - } catch (e) {} - if (new_node) { - for (var i in new_node.contents) { - throw new FS.ErrnoError(55); - } - } - } - delete old_node.parent.contents[old_node.name]; - old_node.parent.timestamp = Date.now(); - old_node.name = new_name; - new_dir.contents[new_name] = old_node; - new_dir.timestamp = old_node.parent.timestamp; - old_node.parent = new_dir; - }, - unlink: function unlink(parent, name) { - delete parent.contents[name]; - parent.timestamp = Date.now(); - }, - rmdir: function rmdir(parent, name) { - var node = FS.lookupNode(parent, name); - for (var i in node.contents) { - throw new FS.ErrnoError(55); - } - delete parent.contents[name]; - parent.timestamp = Date.now(); - }, - readdir: function readdir(node) { - var entries = [".", ".."]; - for (var _i = 0, _Object$keys = Object.keys(node.contents); _i < _Object$keys.length; _i++) { - var key = _Object$keys[_i]; - entries.push(key); - } - return entries; - }, - symlink: function symlink(parent, newname, oldpath) { - var node = MEMFS.createNode(parent, newname, 511 | 40960, 0); - node.link = oldpath; - return node; - }, - readlink: function readlink(node) { - if (!FS.isLink(node.mode)) { - throw new FS.ErrnoError(28); - } - return node.link; - } - }, - stream_ops: { - read: function read(stream, buffer, offset, length, position) { - var contents = stream.node.contents; - if (position >= stream.node.usedBytes) return 0; - var size = Math.min(stream.node.usedBytes - position, length); - if (size > 8 && contents.subarray) { - buffer.set(contents.subarray(position, position + size), offset); - } else { - for (var i = 0; i < size; i++) buffer[offset + i] = contents[position + i]; - } - return size; - }, - write: function write(stream, buffer, offset, length, position, canOwn) { - if (buffer.buffer === HEAP8.buffer) { - canOwn = false; - } - if (!length) return 0; - var node = stream.node; - node.timestamp = Date.now(); - if (buffer.subarray && (!node.contents || node.contents.subarray)) { - if (canOwn) { - node.contents = buffer.subarray(offset, offset + length); - node.usedBytes = length; - return length; - } else if (node.usedBytes === 0 && position === 0) { - node.contents = buffer.slice(offset, offset + length); - node.usedBytes = length; - return length; - } else if (position + length <= node.usedBytes) { - node.contents.set(buffer.subarray(offset, offset + length), position); - return length; - } - } - MEMFS.expandFileStorage(node, position + length); - if (node.contents.subarray && buffer.subarray) { - node.contents.set(buffer.subarray(offset, offset + length), position); - } else { - for (var i = 0; i < length; i++) { - node.contents[position + i] = buffer[offset + i]; - } - } - node.usedBytes = Math.max(node.usedBytes, position + length); - return length; - }, - llseek: function llseek(stream, offset, whence) { - var position = offset; - if (whence === 1) { - position += stream.position; - } else if (whence === 2) { - if (FS.isFile(stream.node.mode)) { - position += stream.node.usedBytes; - } - } - if (position < 0) { - throw new FS.ErrnoError(28); - } - return position; - }, - allocate: function allocate(stream, offset, length) { - MEMFS.expandFileStorage(stream.node, offset + length); - stream.node.usedBytes = Math.max(stream.node.usedBytes, offset + length); - }, - mmap: function mmap(stream, length, position, prot, flags) { - if (!FS.isFile(stream.node.mode)) { - throw new FS.ErrnoError(43); - } - var ptr; - var allocated; - var contents = stream.node.contents; - if (!(flags & 2) && contents.buffer === HEAP8.buffer) { - allocated = false; - ptr = contents.byteOffset; - } else { - if (position > 0 || position + length < contents.length) { - if (contents.subarray) { - contents = contents.subarray(position, position + length); - } else { - contents = Array.prototype.slice.call(contents, position, position + length); - } - } - allocated = true; - ptr = mmapAlloc(length); - if (!ptr) { - throw new FS.ErrnoError(48); - } - HEAP8.set(contents, ptr); - } - return { - ptr: ptr, - allocated: allocated - }; - }, - msync: function msync(stream, buffer, offset, length, mmapFlags) { - MEMFS.stream_ops.write(stream, buffer, 0, length, offset, false); - return 0; - } - } -}; -var asyncLoad = function asyncLoad(url, onload, onerror, noRunDep) { - var dep = !noRunDep ? getUniqueRunDependency("al ".concat(url)) : ""; - readAsync(url, function (arrayBuffer) { - onload(new Uint8Array(arrayBuffer)); - if (dep) removeRunDependency(dep); - }, function (event) { - if (onerror) { - onerror(); - } else { - throw "Loading data file \"".concat(url, "\" failed."); - } - }); - if (dep) addRunDependency(dep); -}; -var FS_createDataFile = function FS_createDataFile(parent, name, fileData, canRead, canWrite, canOwn) { - FS.createDataFile(parent, name, fileData, canRead, canWrite, canOwn); -}; -var preloadPlugins = Module["preloadPlugins"] || []; -var FS_handledByPreloadPlugin = function FS_handledByPreloadPlugin(byteArray, fullname, finish, onerror) { - if (typeof Browser != "undefined") Browser.init(); - var handled = false; - preloadPlugins.forEach(function (plugin) { - if (handled) return; - if (plugin["canHandle"](fullname)) { - plugin["handle"](byteArray, fullname, finish, onerror); - handled = true; - } - }); - return handled; -}; -var FS_createPreloadedFile = function FS_createPreloadedFile(parent, name, url, canRead, canWrite, onload, onerror, dontCreateFile, canOwn, preFinish) { - var fullname = name ? PATH_FS.resolve(PATH.join2(parent, name)) : parent; - var dep = getUniqueRunDependency("cp ".concat(fullname)); - function processData(byteArray) { - function finish(byteArray) { - preFinish === null || preFinish === void 0 || preFinish(); - if (!dontCreateFile) { - FS_createDataFile(parent, name, byteArray, canRead, canWrite, canOwn); - } - onload === null || onload === void 0 || onload(); - removeRunDependency(dep); - } - if (FS_handledByPreloadPlugin(byteArray, fullname, finish, function () { - onerror === null || onerror === void 0 || onerror(); - removeRunDependency(dep); - })) { - return; - } - finish(byteArray); - } - addRunDependency(dep); - if (typeof url == "string") { - asyncLoad(url, processData, onerror); - } else { - processData(url); - } -}; -var FS_modeStringToFlags = function FS_modeStringToFlags(str) { - var flagModes = { - "r": 0, - "r+": 2, - "w": 512 | 64 | 1, - "w+": 512 | 64 | 2, - "a": 1024 | 64 | 1, - "a+": 1024 | 64 | 2 - }; - var flags = flagModes[str]; - if (typeof flags == "undefined") { - throw new Error("Unknown file open mode: ".concat(str)); - } - return flags; -}; -var FS_getMode = function FS_getMode(canRead, canWrite) { - var mode = 0; - if (canRead) mode |= 292 | 73; - if (canWrite) mode |= 146; - return mode; -}; -var IDBFS = { - dbs: {}, - indexedDB: function (_indexedDB) { - function indexedDB() { - return _indexedDB.apply(this, arguments); - } - indexedDB.toString = function () { - return _indexedDB.toString(); - }; - return indexedDB; - }(function () { - if (typeof indexedDB != "undefined") return indexedDB; - var ret = null; - if ((typeof window === "undefined" ? "undefined" : _typeof(window)) == "object") ret = window.indexedDB || window.mozIndexedDB || window.webkitIndexedDB || window.msIndexedDB; - return ret; - }), - DB_VERSION: 21, - DB_STORE_NAME: "FILE_DATA", - mount: function mount() { - return MEMFS.mount.apply(MEMFS, arguments); - }, - syncfs: function syncfs(mount, populate, callback) { - IDBFS.getLocalSet(mount, function (err, local) { - if (err) return callback(err); - IDBFS.getRemoteSet(mount, function (err, remote) { - if (err) return callback(err); - var src = populate ? remote : local; - var dst = populate ? local : remote; - IDBFS.reconcile(src, dst, callback); - }); - }); - }, - quit: function quit() { - Object.values(IDBFS.dbs).forEach(function (value) { - return value.close(); - }); - IDBFS.dbs = {}; - }, - getDB: function getDB(name, callback) { - var db = IDBFS.dbs[name]; - if (db) { - return callback(null, db); - } - var req; - try { - req = IDBFS.indexedDB().open(name, IDBFS.DB_VERSION); - } catch (e) { - return callback(e); - } - if (!req) { - return callback("Unable to connect to IndexedDB"); - } - req.onupgradeneeded = function (e) { - var db = e.target.result; - var transaction = e.target.transaction; - var fileStore; - if (db.objectStoreNames.contains(IDBFS.DB_STORE_NAME)) { - fileStore = transaction.objectStore(IDBFS.DB_STORE_NAME); - } else { - fileStore = db.createObjectStore(IDBFS.DB_STORE_NAME); - } - if (!fileStore.indexNames.contains("timestamp")) { - fileStore.createIndex("timestamp", "timestamp", { - unique: false - }); - } - }; - req.onsuccess = function () { - db = req.result; - IDBFS.dbs[name] = db; - callback(null, db); - }; - req.onerror = function (e) { - callback(e.target.error); - e.preventDefault(); - }; - }, - getLocalSet: function getLocalSet(mount, callback) { - var entries = {}; - function isRealDir(p) { - return p !== "." && p !== ".."; - } - function toAbsolute(root) { - return function (p) { - return PATH.join2(root, p); - }; - } - var check = FS.readdir(mount.mountpoint).filter(isRealDir).map(toAbsolute(mount.mountpoint)); - while (check.length) { - var path = check.pop(); - var stat; - try { - stat = FS.stat(path); - } catch (e) { - return callback(e); - } - if (FS.isDir(stat.mode)) { - check.push.apply(check, _toConsumableArray(FS.readdir(path).filter(isRealDir).map(toAbsolute(path)))); - } - entries[path] = { - "timestamp": stat.mtime - }; - } - return callback(null, { - type: "local", - entries: entries - }); - }, - getRemoteSet: function getRemoteSet(mount, callback) { - var entries = {}; - IDBFS.getDB(mount.mountpoint, function (err, db) { - if (err) return callback(err); - try { - var transaction = db.transaction([IDBFS.DB_STORE_NAME], "readonly"); - transaction.onerror = function (e) { - callback(e.target.error); - e.preventDefault(); - }; - var store = transaction.objectStore(IDBFS.DB_STORE_NAME); - var index = store.index("timestamp"); - index.openKeyCursor().onsuccess = function (event) { - var cursor = event.target.result; - if (!cursor) { - return callback(null, { - type: "remote", - db: db, - entries: entries - }); - } - entries[cursor.primaryKey] = { - "timestamp": cursor.key - }; - cursor.continue(); - }; - } catch (e) { - return callback(e); - } - }); - }, - loadLocalEntry: function loadLocalEntry(path, callback) { - var stat, node; - try { - var lookup = FS.lookupPath(path); - node = lookup.node; - stat = FS.stat(path); - } catch (e) { - return callback(e); - } - if (FS.isDir(stat.mode)) { - return callback(null, { - "timestamp": stat.mtime, - "mode": stat.mode - }); - } else if (FS.isFile(stat.mode)) { - node.contents = MEMFS.getFileDataAsTypedArray(node); - return callback(null, { - "timestamp": stat.mtime, - "mode": stat.mode, - "contents": node.contents - }); - } else { - return callback(new Error("node type not supported")); - } - }, - storeLocalEntry: function storeLocalEntry(path, entry, callback) { - try { - if (FS.isDir(entry["mode"])) { - FS.mkdirTree(path, entry["mode"]); - } else if (FS.isFile(entry["mode"])) { - FS.writeFile(path, entry["contents"], { - canOwn: true - }); - } else { - return callback(new Error("node type not supported")); - } - FS.chmod(path, entry["mode"]); - FS.utime(path, entry["timestamp"], entry["timestamp"]); - } catch (e) { - return callback(e); - } - callback(null); - }, - removeLocalEntry: function removeLocalEntry(path, callback) { - try { - var stat = FS.stat(path); - if (FS.isDir(stat.mode)) { - FS.rmdir(path); - } else if (FS.isFile(stat.mode)) { - FS.unlink(path); - } - } catch (e) { - return callback(e); - } - callback(null); - }, - loadRemoteEntry: function loadRemoteEntry(store, path, callback) { - var req = store.get(path); - req.onsuccess = function (event) { - return callback(null, event.target.result); - }; - req.onerror = function (e) { - callback(e.target.error); - e.preventDefault(); - }; - }, - storeRemoteEntry: function storeRemoteEntry(store, path, entry, callback) { - try { - var req = store.put(entry, path); - } catch (e) { - callback(e); - return; - } - req.onsuccess = function (event) { - return callback(); - }; - req.onerror = function (e) { - callback(e.target.error); - e.preventDefault(); - }; - }, - removeRemoteEntry: function removeRemoteEntry(store, path, callback) { - var req = store.delete(path); - req.onsuccess = function (event) { - return callback(); - }; - req.onerror = function (e) { - callback(e.target.error); - e.preventDefault(); - }; - }, - reconcile: function reconcile(src, dst, callback) { - var total = 0; - var create = []; - Object.keys(src.entries).forEach(function (key) { - var e = src.entries[key]; - var e2 = dst.entries[key]; - if (!e2 || e["timestamp"].getTime() != e2["timestamp"].getTime()) { - create.push(key); - total++; - } - }); - var remove = []; - Object.keys(dst.entries).forEach(function (key) { - if (!src.entries[key]) { - remove.push(key); - total++; - } - }); - if (!total) { - return callback(null); - } - var errored = false; - var db = src.type === "remote" ? src.db : dst.db; - var transaction = db.transaction([IDBFS.DB_STORE_NAME], "readwrite"); - var store = transaction.objectStore(IDBFS.DB_STORE_NAME); - function done(err) { - if (err && !errored) { - errored = true; - return callback(err); - } - } - transaction.onerror = transaction.onabort = function (e) { - done(e.target.error); - e.preventDefault(); - }; - transaction.oncomplete = function (e) { - if (!errored) { - callback(null); - } - }; - create.sort().forEach(function (path) { - if (dst.type === "local") { - IDBFS.loadRemoteEntry(store, path, function (err, entry) { - if (err) return done(err); - IDBFS.storeLocalEntry(path, entry, done); - }); - } else { - IDBFS.loadLocalEntry(path, function (err, entry) { - if (err) return done(err); - IDBFS.storeRemoteEntry(store, path, entry, done); - }); - } - }); - remove.sort().reverse().forEach(function (path) { - if (dst.type === "local") { - IDBFS.removeLocalEntry(path, done); - } else { - IDBFS.removeRemoteEntry(store, path, done); - } - }); - } -}; -var FS = { - root: null, - mounts: [], - devices: {}, - streams: [], - nextInode: 1, - nameTable: null, - currentPath: "/", - initialized: false, - ignorePermissions: true, - ErrnoError: /*#__PURE__*/_createClass(function ErrnoError(errno) { - "use strict"; - - _classCallCheck(this, ErrnoError); - this.name = "ErrnoError"; - this.errno = errno; - }), - genericErrors: {}, - filesystems: null, - syncFSRequests: 0, - FSStream: /*#__PURE__*/function () { - "use strict"; - - function FSStream() { - _classCallCheck(this, FSStream); - this.shared = {}; - } - _createClass(FSStream, [{ - key: "object", - get: function get() { - return this.node; - }, - set: function set(val) { - this.node = val; - } - }, { - key: "isRead", - get: function get() { - return (this.flags & 2097155) !== 1; - } - }, { - key: "isWrite", - get: function get() { - return (this.flags & 2097155) !== 0; - } - }, { - key: "isAppend", - get: function get() { - return this.flags & 1024; - } - }, { - key: "flags", - get: function get() { - return this.shared.flags; - }, - set: function set(val) { - this.shared.flags = val; - } - }, { - key: "position", - get: function get() { - return this.shared.position; - }, - set: function set(val) { - this.shared.position = val; - } - }]); - return FSStream; - }(), - FSNode: /*#__PURE__*/function () { - "use strict"; - - function FSNode(parent, name, mode, rdev) { - _classCallCheck(this, FSNode); - if (!parent) { - parent = this; - } - this.parent = parent; - this.mount = parent.mount; - this.mounted = null; - this.id = FS.nextInode++; - this.name = name; - this.mode = mode; - this.node_ops = {}; - this.stream_ops = {}; - this.rdev = rdev; - this.readMode = 292 | 73; - this.writeMode = 146; - } - _createClass(FSNode, [{ - key: "read", - get: function get() { - return (this.mode & this.readMode) === this.readMode; - }, - set: function set(val) { - val ? this.mode |= this.readMode : this.mode &= ~this.readMode; - } - }, { - key: "write", - get: function get() { - return (this.mode & this.writeMode) === this.writeMode; - }, - set: function set(val) { - val ? this.mode |= this.writeMode : this.mode &= ~this.writeMode; - } - }, { - key: "isFolder", - get: function get() { - return FS.isDir(this.mode); - } - }, { - key: "isDevice", - get: function get() { - return FS.isChrdev(this.mode); - } - }]); - return FSNode; - }(), - lookupPath: function lookupPath(path) { - var opts = arguments.length > 1 && arguments[1] !== undefined ? arguments[1] : {}; - path = PATH_FS.resolve(path); - if (!path) return { - path: "", - node: null - }; - var defaults = { - follow_mount: true, - recurse_count: 0 - }; - opts = Object.assign(defaults, opts); - if (opts.recurse_count > 8) { - throw new FS.ErrnoError(32); - } - var parts = path.split("/").filter(function (p) { - return !!p; - }); - var current = FS.root; - var current_path = "/"; - for (var i = 0; i < parts.length; i++) { - var islast = i === parts.length - 1; - if (islast && opts.parent) { - break; - } - current = FS.lookupNode(current, parts[i]); - current_path = PATH.join2(current_path, parts[i]); - if (FS.isMountpoint(current)) { - if (!islast || islast && opts.follow_mount) { - current = current.mounted.root; - } - } - if (!islast || opts.follow) { - var count = 0; - while (FS.isLink(current.mode)) { - var link = FS.readlink(current_path); - current_path = PATH_FS.resolve(PATH.dirname(current_path), link); - var lookup = FS.lookupPath(current_path, { - recurse_count: opts.recurse_count + 1 - }); - current = lookup.node; - if (count++ > 40) { - throw new FS.ErrnoError(32); - } - } - } - } - return { - path: current_path, - node: current - }; - }, - getPath: function getPath(node) { - var path; - while (true) { - if (FS.isRoot(node)) { - var mount = node.mount.mountpoint; - if (!path) return mount; - return mount[mount.length - 1] !== "/" ? "".concat(mount, "/").concat(path) : mount + path; - } - path = path ? "".concat(node.name, "/").concat(path) : node.name; - node = node.parent; - } - }, - hashName: function hashName(parentid, name) { - var hash = 0; - for (var i = 0; i < name.length; i++) { - hash = (hash << 5) - hash + name.charCodeAt(i) | 0; - } - return (parentid + hash >>> 0) % FS.nameTable.length; - }, - hashAddNode: function hashAddNode(node) { - var hash = FS.hashName(node.parent.id, node.name); - node.name_next = FS.nameTable[hash]; - FS.nameTable[hash] = node; - }, - hashRemoveNode: function hashRemoveNode(node) { - var hash = FS.hashName(node.parent.id, node.name); - if (FS.nameTable[hash] === node) { - FS.nameTable[hash] = node.name_next; - } else { - var current = FS.nameTable[hash]; - while (current) { - if (current.name_next === node) { - current.name_next = node.name_next; - break; - } - current = current.name_next; - } - } - }, - lookupNode: function lookupNode(parent, name) { - var errCode = FS.mayLookup(parent); - if (errCode) { - throw new FS.ErrnoError(errCode); - } - var hash = FS.hashName(parent.id, name); - for (var node = FS.nameTable[hash]; node; node = node.name_next) { - var nodeName = node.name; - if (node.parent.id === parent.id && nodeName === name) { - return node; - } - } - return FS.lookup(parent, name); - }, - createNode: function createNode(parent, name, mode, rdev) { - var node = new FS.FSNode(parent, name, mode, rdev); - FS.hashAddNode(node); - return node; - }, - destroyNode: function destroyNode(node) { - FS.hashRemoveNode(node); - }, - isRoot: function isRoot(node) { - return node === node.parent; - }, - isMountpoint: function isMountpoint(node) { - return !!node.mounted; - }, - isFile: function isFile(mode) { - return (mode & 61440) === 32768; - }, - isDir: function isDir(mode) { - return (mode & 61440) === 16384; - }, - isLink: function isLink(mode) { - return (mode & 61440) === 40960; - }, - isChrdev: function isChrdev(mode) { - return (mode & 61440) === 8192; - }, - isBlkdev: function isBlkdev(mode) { - return (mode & 61440) === 24576; - }, - isFIFO: function isFIFO(mode) { - return (mode & 61440) === 4096; - }, - isSocket: function isSocket(mode) { - return (mode & 49152) === 49152; - }, - flagsToPermissionString: function flagsToPermissionString(flag) { - var perms = ["r", "w", "rw"][flag & 3]; - if (flag & 512) { - perms += "w"; - } - return perms; - }, - nodePermissions: function nodePermissions(node, perms) { - if (FS.ignorePermissions) { - return 0; - } - if (perms.includes("r") && !(node.mode & 292)) { - return 2; - } else if (perms.includes("w") && !(node.mode & 146)) { - return 2; - } else if (perms.includes("x") && !(node.mode & 73)) { - return 2; - } - return 0; - }, - mayLookup: function mayLookup(dir) { - if (!FS.isDir(dir.mode)) return 54; - var errCode = FS.nodePermissions(dir, "x"); - if (errCode) return errCode; - if (!dir.node_ops.lookup) return 2; - return 0; - }, - mayCreate: function mayCreate(dir, name) { - try { - var node = FS.lookupNode(dir, name); - return 20; - } catch (e) {} - return FS.nodePermissions(dir, "wx"); - }, - mayDelete: function mayDelete(dir, name, isdir) { - var node; - try { - node = FS.lookupNode(dir, name); - } catch (e) { - return e.errno; - } - var errCode = FS.nodePermissions(dir, "wx"); - if (errCode) { - return errCode; - } - if (isdir) { - if (!FS.isDir(node.mode)) { - return 54; - } - if (FS.isRoot(node) || FS.getPath(node) === FS.cwd()) { - return 10; - } - } else { - if (FS.isDir(node.mode)) { - return 31; - } - } - return 0; - }, - mayOpen: function mayOpen(node, flags) { - if (!node) { - return 44; - } - if (FS.isLink(node.mode)) { - return 32; - } else if (FS.isDir(node.mode)) { - if (FS.flagsToPermissionString(flags) !== "r" || flags & 512) { - return 31; - } - } - return FS.nodePermissions(node, FS.flagsToPermissionString(flags)); - }, - MAX_OPEN_FDS: 4096, - nextfd: function nextfd() { - for (var fd = 0; fd <= FS.MAX_OPEN_FDS; fd++) { - if (!FS.streams[fd]) { - return fd; - } - } - throw new FS.ErrnoError(33); - }, - getStreamChecked: function getStreamChecked(fd) { - var stream = FS.getStream(fd); - if (!stream) { - throw new FS.ErrnoError(8); - } - return stream; - }, - getStream: function getStream(fd) { - return FS.streams[fd]; - }, - createStream: function createStream(stream) { - var fd = arguments.length > 1 && arguments[1] !== undefined ? arguments[1] : -1; - stream = Object.assign(new FS.FSStream(), stream); - if (fd == -1) { - fd = FS.nextfd(); - } - stream.fd = fd; - FS.streams[fd] = stream; - return stream; - }, - closeStream: function closeStream(fd) { - FS.streams[fd] = null; - }, - dupStream: function dupStream(origStream) { - var _stream$stream_ops, _stream$stream_ops$du; - var fd = arguments.length > 1 && arguments[1] !== undefined ? arguments[1] : -1; - var stream = FS.createStream(origStream, fd); - (_stream$stream_ops = stream.stream_ops) === null || _stream$stream_ops === void 0 || (_stream$stream_ops$du = _stream$stream_ops.dup) === null || _stream$stream_ops$du === void 0 || _stream$stream_ops$du.call(_stream$stream_ops, stream); - return stream; - }, - chrdev_stream_ops: { - open: function open(stream) { - var _stream$stream_ops$op, _stream$stream_ops2; - var device = FS.getDevice(stream.node.rdev); - stream.stream_ops = device.stream_ops; - (_stream$stream_ops$op = (_stream$stream_ops2 = stream.stream_ops).open) === null || _stream$stream_ops$op === void 0 || _stream$stream_ops$op.call(_stream$stream_ops2, stream); - }, - llseek: function llseek() { - throw new FS.ErrnoError(70); - } - }, - major: function major(dev) { - return dev >> 8; - }, - minor: function minor(dev) { - return dev & 255; - }, - makedev: function makedev(ma, mi) { - return ma << 8 | mi; - }, - registerDevice: function registerDevice(dev, ops) { - FS.devices[dev] = { - stream_ops: ops - }; - }, - getDevice: function getDevice(dev) { - return FS.devices[dev]; - }, - getMounts: function getMounts(mount) { - var mounts = []; - var check = [mount]; - while (check.length) { - var m = check.pop(); - mounts.push(m); - check.push.apply(check, _toConsumableArray(m.mounts)); - } - return mounts; - }, - syncfs: function syncfs(populate, callback) { - if (typeof populate == "function") { - callback = populate; - populate = false; - } - FS.syncFSRequests++; - if (FS.syncFSRequests > 1) { - err("warning: ".concat(FS.syncFSRequests, " FS.syncfs operations in flight at once, probably just doing extra work")); - } - var mounts = FS.getMounts(FS.root.mount); - var completed = 0; - function doCallback(errCode) { - FS.syncFSRequests--; - return callback(errCode); - } - function done(errCode) { - if (errCode) { - if (!done.errored) { - done.errored = true; - return doCallback(errCode); - } - return; - } - if (++completed >= mounts.length) { - doCallback(null); - } - } - mounts.forEach(function (mount) { - if (!mount.type.syncfs) { - return done(null); - } - mount.type.syncfs(mount, populate, done); - }); - }, - mount: function mount(type, opts, mountpoint) { - var root = mountpoint === "/"; - var pseudo = !mountpoint; - var node; - if (root && FS.root) { - throw new FS.ErrnoError(10); - } else if (!root && !pseudo) { - var lookup = FS.lookupPath(mountpoint, { - follow_mount: false - }); - mountpoint = lookup.path; - node = lookup.node; - if (FS.isMountpoint(node)) { - throw new FS.ErrnoError(10); - } - if (!FS.isDir(node.mode)) { - throw new FS.ErrnoError(54); - } - } - var mount = { - type: type, - opts: opts, - mountpoint: mountpoint, - mounts: [] - }; - var mountRoot = type.mount(mount); - mountRoot.mount = mount; - mount.root = mountRoot; - if (root) { - FS.root = mountRoot; - } else if (node) { - node.mounted = mount; - if (node.mount) { - node.mount.mounts.push(mount); - } - } - return mountRoot; - }, - unmount: function unmount(mountpoint) { - var lookup = FS.lookupPath(mountpoint, { - follow_mount: false - }); - if (!FS.isMountpoint(lookup.node)) { - throw new FS.ErrnoError(28); - } - var node = lookup.node; - var mount = node.mounted; - var mounts = FS.getMounts(mount); - Object.keys(FS.nameTable).forEach(function (hash) { - var current = FS.nameTable[hash]; - while (current) { - var next = current.name_next; - if (mounts.includes(current.mount)) { - FS.destroyNode(current); - } - current = next; - } - }); - node.mounted = null; - var idx = node.mount.mounts.indexOf(mount); - node.mount.mounts.splice(idx, 1); - }, - lookup: function lookup(parent, name) { - return parent.node_ops.lookup(parent, name); - }, - mknod: function mknod(path, mode, dev) { - var lookup = FS.lookupPath(path, { - parent: true - }); - var parent = lookup.node; - var name = PATH.basename(path); - if (!name || name === "." || name === "..") { - throw new FS.ErrnoError(28); - } - var errCode = FS.mayCreate(parent, name); - if (errCode) { - throw new FS.ErrnoError(errCode); - } - if (!parent.node_ops.mknod) { - throw new FS.ErrnoError(63); - } - return parent.node_ops.mknod(parent, name, mode, dev); - }, - create: function create(path, mode) { - mode = mode !== undefined ? mode : 438; - mode &= 4095; - mode |= 32768; - return FS.mknod(path, mode, 0); - }, - mkdir: function mkdir(path, mode) { - mode = mode !== undefined ? mode : 511; - mode &= 511 | 512; - mode |= 16384; - return FS.mknod(path, mode, 0); - }, - mkdirTree: function mkdirTree(path, mode) { - var dirs = path.split("/"); - var d = ""; - for (var i = 0; i < dirs.length; ++i) { - if (!dirs[i]) continue; - d += "/" + dirs[i]; - try { - FS.mkdir(d, mode); - } catch (e) { - if (e.errno != 20) throw e; - } - } - }, - mkdev: function mkdev(path, mode, dev) { - if (typeof dev == "undefined") { - dev = mode; - mode = 438; - } - mode |= 8192; - return FS.mknod(path, mode, dev); - }, - symlink: function symlink(oldpath, newpath) { - if (!PATH_FS.resolve(oldpath)) { - throw new FS.ErrnoError(44); - } - var lookup = FS.lookupPath(newpath, { - parent: true - }); - var parent = lookup.node; - if (!parent) { - throw new FS.ErrnoError(44); - } - var newname = PATH.basename(newpath); - var errCode = FS.mayCreate(parent, newname); - if (errCode) { - throw new FS.ErrnoError(errCode); - } - if (!parent.node_ops.symlink) { - throw new FS.ErrnoError(63); - } - return parent.node_ops.symlink(parent, newname, oldpath); - }, - rename: function rename(old_path, new_path) { - var old_dirname = PATH.dirname(old_path); - var new_dirname = PATH.dirname(new_path); - var old_name = PATH.basename(old_path); - var new_name = PATH.basename(new_path); - var lookup, old_dir, new_dir; - lookup = FS.lookupPath(old_path, { - parent: true - }); - old_dir = lookup.node; - lookup = FS.lookupPath(new_path, { - parent: true - }); - new_dir = lookup.node; - if (!old_dir || !new_dir) throw new FS.ErrnoError(44); - if (old_dir.mount !== new_dir.mount) { - throw new FS.ErrnoError(75); - } - var old_node = FS.lookupNode(old_dir, old_name); - var relative = PATH_FS.relative(old_path, new_dirname); - if (relative.charAt(0) !== ".") { - throw new FS.ErrnoError(28); - } - relative = PATH_FS.relative(new_path, old_dirname); - if (relative.charAt(0) !== ".") { - throw new FS.ErrnoError(55); - } - var new_node; - try { - new_node = FS.lookupNode(new_dir, new_name); - } catch (e) {} - if (old_node === new_node) { - return; - } - var isdir = FS.isDir(old_node.mode); - var errCode = FS.mayDelete(old_dir, old_name, isdir); - if (errCode) { - throw new FS.ErrnoError(errCode); - } - errCode = new_node ? FS.mayDelete(new_dir, new_name, isdir) : FS.mayCreate(new_dir, new_name); - if (errCode) { - throw new FS.ErrnoError(errCode); - } - if (!old_dir.node_ops.rename) { - throw new FS.ErrnoError(63); - } - if (FS.isMountpoint(old_node) || new_node && FS.isMountpoint(new_node)) { - throw new FS.ErrnoError(10); - } - if (new_dir !== old_dir) { - errCode = FS.nodePermissions(old_dir, "w"); - if (errCode) { - throw new FS.ErrnoError(errCode); - } - } - FS.hashRemoveNode(old_node); - try { - old_dir.node_ops.rename(old_node, new_dir, new_name); - } catch (e) { - throw e; - } finally { - FS.hashAddNode(old_node); - } - }, - rmdir: function rmdir(path) { - var lookup = FS.lookupPath(path, { - parent: true - }); - var parent = lookup.node; - var name = PATH.basename(path); - var node = FS.lookupNode(parent, name); - var errCode = FS.mayDelete(parent, name, true); - if (errCode) { - throw new FS.ErrnoError(errCode); - } - if (!parent.node_ops.rmdir) { - throw new FS.ErrnoError(63); - } - if (FS.isMountpoint(node)) { - throw new FS.ErrnoError(10); - } - parent.node_ops.rmdir(parent, name); - FS.destroyNode(node); - }, - readdir: function readdir(path) { - var lookup = FS.lookupPath(path, { - follow: true - }); - var node = lookup.node; - if (!node.node_ops.readdir) { - throw new FS.ErrnoError(54); - } - return node.node_ops.readdir(node); - }, - unlink: function unlink(path) { - var lookup = FS.lookupPath(path, { - parent: true - }); - var parent = lookup.node; - if (!parent) { - throw new FS.ErrnoError(44); - } - var name = PATH.basename(path); - var node = FS.lookupNode(parent, name); - var errCode = FS.mayDelete(parent, name, false); - if (errCode) { - throw new FS.ErrnoError(errCode); - } - if (!parent.node_ops.unlink) { - throw new FS.ErrnoError(63); - } - if (FS.isMountpoint(node)) { - throw new FS.ErrnoError(10); - } - parent.node_ops.unlink(parent, name); - FS.destroyNode(node); - }, - readlink: function readlink(path) { - var lookup = FS.lookupPath(path); - var link = lookup.node; - if (!link) { - throw new FS.ErrnoError(44); - } - if (!link.node_ops.readlink) { - throw new FS.ErrnoError(28); - } - return PATH_FS.resolve(FS.getPath(link.parent), link.node_ops.readlink(link)); - }, - stat: function stat(path, dontFollow) { - var lookup = FS.lookupPath(path, { - follow: !dontFollow - }); - var node = lookup.node; - if (!node) { - throw new FS.ErrnoError(44); - } - if (!node.node_ops.getattr) { - throw new FS.ErrnoError(63); - } - return node.node_ops.getattr(node); - }, - lstat: function lstat(path) { - return FS.stat(path, true); - }, - chmod: function chmod(path, mode, dontFollow) { - var node; - if (typeof path == "string") { - var lookup = FS.lookupPath(path, { - follow: !dontFollow - }); - node = lookup.node; - } else { - node = path; - } - if (!node.node_ops.setattr) { - throw new FS.ErrnoError(63); - } - node.node_ops.setattr(node, { - mode: mode & 4095 | node.mode & ~4095, - timestamp: Date.now() - }); - }, - lchmod: function lchmod(path, mode) { - FS.chmod(path, mode, true); - }, - fchmod: function fchmod(fd, mode) { - var stream = FS.getStreamChecked(fd); - FS.chmod(stream.node, mode); - }, - chown: function chown(path, uid, gid, dontFollow) { - var node; - if (typeof path == "string") { - var lookup = FS.lookupPath(path, { - follow: !dontFollow - }); - node = lookup.node; - } else { - node = path; - } - if (!node.node_ops.setattr) { - throw new FS.ErrnoError(63); - } - node.node_ops.setattr(node, { - timestamp: Date.now() - }); - }, - lchown: function lchown(path, uid, gid) { - FS.chown(path, uid, gid, true); - }, - fchown: function fchown(fd, uid, gid) { - var stream = FS.getStreamChecked(fd); - FS.chown(stream.node, uid, gid); - }, - truncate: function truncate(path, len) { - if (len < 0) { - throw new FS.ErrnoError(28); - } - var node; - if (typeof path == "string") { - var lookup = FS.lookupPath(path, { - follow: true - }); - node = lookup.node; - } else { - node = path; - } - if (!node.node_ops.setattr) { - throw new FS.ErrnoError(63); - } - if (FS.isDir(node.mode)) { - throw new FS.ErrnoError(31); - } - if (!FS.isFile(node.mode)) { - throw new FS.ErrnoError(28); - } - var errCode = FS.nodePermissions(node, "w"); - if (errCode) { - throw new FS.ErrnoError(errCode); - } - node.node_ops.setattr(node, { - size: len, - timestamp: Date.now() - }); - }, - ftruncate: function ftruncate(fd, len) { - var stream = FS.getStreamChecked(fd); - if ((stream.flags & 2097155) === 0) { - throw new FS.ErrnoError(28); - } - FS.truncate(stream.node, len); - }, - utime: function utime(path, atime, mtime) { - var lookup = FS.lookupPath(path, { - follow: true - }); - var node = lookup.node; - node.node_ops.setattr(node, { - timestamp: Math.max(atime, mtime) - }); - }, - open: function open(path, flags, mode) { - if (path === "") { - throw new FS.ErrnoError(44); - } - flags = typeof flags == "string" ? FS_modeStringToFlags(flags) : flags; - mode = typeof mode == "undefined" ? 438 : mode; - if (flags & 64) { - mode = mode & 4095 | 32768; - } else { - mode = 0; - } - var node; - if (_typeof(path) == "object") { - node = path; - } else { - path = PATH.normalize(path); - try { - var lookup = FS.lookupPath(path, { - follow: !(flags & 131072) - }); - node = lookup.node; - } catch (e) {} - } - var created = false; - if (flags & 64) { - if (node) { - if (flags & 128) { - throw new FS.ErrnoError(20); - } - } else { - node = FS.mknod(path, mode, 0); - created = true; - } - } - if (!node) { - throw new FS.ErrnoError(44); - } - if (FS.isChrdev(node.mode)) { - flags &= ~512; - } - if (flags & 65536 && !FS.isDir(node.mode)) { - throw new FS.ErrnoError(54); - } - if (!created) { - var errCode = FS.mayOpen(node, flags); - if (errCode) { - throw new FS.ErrnoError(errCode); - } - } - if (flags & 512 && !created) { - FS.truncate(node, 0); - } - flags &= ~(128 | 512 | 131072); - var stream = FS.createStream({ - node: node, - path: FS.getPath(node), - flags: flags, - seekable: true, - position: 0, - stream_ops: node.stream_ops, - ungotten: [], - error: false - }); - if (stream.stream_ops.open) { - stream.stream_ops.open(stream); - } - if (Module["logReadFiles"] && !(flags & 1)) { - if (!FS.readFiles) FS.readFiles = {}; - if (!(path in FS.readFiles)) { - FS.readFiles[path] = 1; - } - } - return stream; - }, - close: function close(stream) { - if (FS.isClosed(stream)) { - throw new FS.ErrnoError(8); - } - if (stream.getdents) stream.getdents = null; - try { - if (stream.stream_ops.close) { - stream.stream_ops.close(stream); - } - } catch (e) { - throw e; - } finally { - FS.closeStream(stream.fd); - } - stream.fd = null; - }, - isClosed: function isClosed(stream) { - return stream.fd === null; - }, - llseek: function llseek(stream, offset, whence) { - if (FS.isClosed(stream)) { - throw new FS.ErrnoError(8); - } - if (!stream.seekable || !stream.stream_ops.llseek) { - throw new FS.ErrnoError(70); - } - if (whence != 0 && whence != 1 && whence != 2) { - throw new FS.ErrnoError(28); - } - stream.position = stream.stream_ops.llseek(stream, offset, whence); - stream.ungotten = []; - return stream.position; - }, - read: function read(stream, buffer, offset, length, position) { - if (length < 0 || position < 0) { - throw new FS.ErrnoError(28); - } - if (FS.isClosed(stream)) { - throw new FS.ErrnoError(8); - } - if ((stream.flags & 2097155) === 1) { - throw new FS.ErrnoError(8); - } - if (FS.isDir(stream.node.mode)) { - throw new FS.ErrnoError(31); - } - if (!stream.stream_ops.read) { - throw new FS.ErrnoError(28); - } - var seeking = typeof position != "undefined"; - if (!seeking) { - position = stream.position; - } else if (!stream.seekable) { - throw new FS.ErrnoError(70); - } - var bytesRead = stream.stream_ops.read(stream, buffer, offset, length, position); - if (!seeking) stream.position += bytesRead; - return bytesRead; - }, - write: function write(stream, buffer, offset, length, position, canOwn) { - if (length < 0 || position < 0) { - throw new FS.ErrnoError(28); - } - if (FS.isClosed(stream)) { - throw new FS.ErrnoError(8); - } - if ((stream.flags & 2097155) === 0) { - throw new FS.ErrnoError(8); - } - if (FS.isDir(stream.node.mode)) { - throw new FS.ErrnoError(31); - } - if (!stream.stream_ops.write) { - throw new FS.ErrnoError(28); - } - if (stream.seekable && stream.flags & 1024) { - FS.llseek(stream, 0, 2); - } - var seeking = typeof position != "undefined"; - if (!seeking) { - position = stream.position; - } else if (!stream.seekable) { - throw new FS.ErrnoError(70); - } - var bytesWritten = stream.stream_ops.write(stream, buffer, offset, length, position, canOwn); - if (!seeking) stream.position += bytesWritten; - return bytesWritten; - }, - allocate: function allocate(stream, offset, length) { - if (FS.isClosed(stream)) { - throw new FS.ErrnoError(8); - } - if (offset < 0 || length <= 0) { - throw new FS.ErrnoError(28); - } - if ((stream.flags & 2097155) === 0) { - throw new FS.ErrnoError(8); - } - if (!FS.isFile(stream.node.mode) && !FS.isDir(stream.node.mode)) { - throw new FS.ErrnoError(43); - } - if (!stream.stream_ops.allocate) { - throw new FS.ErrnoError(138); - } - stream.stream_ops.allocate(stream, offset, length); - }, - mmap: function mmap(stream, length, position, prot, flags) { - if ((prot & 2) !== 0 && (flags & 2) === 0 && (stream.flags & 2097155) !== 2) { - throw new FS.ErrnoError(2); - } - if ((stream.flags & 2097155) === 1) { - throw new FS.ErrnoError(2); - } - if (!stream.stream_ops.mmap) { - throw new FS.ErrnoError(43); - } - return stream.stream_ops.mmap(stream, length, position, prot, flags); - }, - msync: function msync(stream, buffer, offset, length, mmapFlags) { - if (!stream.stream_ops.msync) { - return 0; - } - return stream.stream_ops.msync(stream, buffer, offset, length, mmapFlags); - }, - ioctl: function ioctl(stream, cmd, arg) { - if (!stream.stream_ops.ioctl) { - throw new FS.ErrnoError(59); - } - return stream.stream_ops.ioctl(stream, cmd, arg); - }, - readFile: function readFile(path) { - var opts = arguments.length > 1 && arguments[1] !== undefined ? arguments[1] : {}; - opts.flags = opts.flags || 0; - opts.encoding = opts.encoding || "binary"; - if (opts.encoding !== "utf8" && opts.encoding !== "binary") { - throw new Error("Invalid encoding type \"".concat(opts.encoding, "\"")); - } - var ret; - var stream = FS.open(path, opts.flags); - var stat = FS.stat(path); - var length = stat.size; - var buf = new Uint8Array(length); - FS.read(stream, buf, 0, length, 0); - if (opts.encoding === "utf8") { - ret = UTF8ArrayToString(buf, 0); - } else if (opts.encoding === "binary") { - ret = buf; - } - FS.close(stream); - return ret; - }, - writeFile: function writeFile(path, data) { - var opts = arguments.length > 2 && arguments[2] !== undefined ? arguments[2] : {}; - opts.flags = opts.flags || 577; - var stream = FS.open(path, opts.flags, opts.mode); - if (typeof data == "string") { - var buf = new Uint8Array(lengthBytesUTF8(data) + 1); - var actualNumBytes = stringToUTF8Array(data, buf, 0, buf.length); - FS.write(stream, buf, 0, actualNumBytes, undefined, opts.canOwn); - } else if (ArrayBuffer.isView(data)) { - FS.write(stream, data, 0, data.byteLength, undefined, opts.canOwn); - } else { - throw new Error("Unsupported data type"); - } - FS.close(stream); - }, - cwd: function cwd() { - return FS.currentPath; - }, - chdir: function chdir(path) { - var lookup = FS.lookupPath(path, { - follow: true - }); - if (lookup.node === null) { - throw new FS.ErrnoError(44); - } - if (!FS.isDir(lookup.node.mode)) { - throw new FS.ErrnoError(54); - } - var errCode = FS.nodePermissions(lookup.node, "x"); - if (errCode) { - throw new FS.ErrnoError(errCode); - } - FS.currentPath = lookup.path; - }, - createDefaultDirectories: function createDefaultDirectories() { - FS.mkdir("/tmp"); - FS.mkdir("/home"); - FS.mkdir("/home/web_user"); - }, - createDefaultDevices: function createDefaultDevices() { - FS.mkdir("/dev"); - FS.registerDevice(FS.makedev(1, 3), { - read: function read() { - return 0; - }, - write: function write(stream, buffer, offset, length, pos) { - return length; - } - }); - FS.mkdev("/dev/null", FS.makedev(1, 3)); - TTY.register(FS.makedev(5, 0), TTY.default_tty_ops); - TTY.register(FS.makedev(6, 0), TTY.default_tty1_ops); - FS.mkdev("/dev/tty", FS.makedev(5, 0)); - FS.mkdev("/dev/tty1", FS.makedev(6, 0)); - var randomBuffer = new Uint8Array(1024), - randomLeft = 0; - var randomByte = function randomByte() { - if (randomLeft === 0) { - randomLeft = _randomFill(randomBuffer).byteLength; - } - return randomBuffer[--randomLeft]; - }; - FS.createDevice("/dev", "random", randomByte); - FS.createDevice("/dev", "urandom", randomByte); - FS.mkdir("/dev/shm"); - FS.mkdir("/dev/shm/tmp"); - }, - createSpecialDirectories: function createSpecialDirectories() { - FS.mkdir("/proc"); - var proc_self = FS.mkdir("/proc/self"); - FS.mkdir("/proc/self/fd"); - FS.mount({ - mount: function mount() { - var node = FS.createNode(proc_self, "fd", 16384 | 511, 73); - node.node_ops = { - lookup: function lookup(parent, name) { - var fd = +name; - var stream = FS.getStreamChecked(fd); - var ret = { - parent: null, - mount: { - mountpoint: "fake" - }, - node_ops: { - readlink: function readlink() { - return stream.path; - } - } - }; - ret.parent = ret; - return ret; - } - }; - return node; - } - }, {}, "/proc/self/fd"); - }, - createStandardStreams: function createStandardStreams() { - if (Module["stdin"]) { - FS.createDevice("/dev", "stdin", Module["stdin"]); - } else { - FS.symlink("/dev/tty", "/dev/stdin"); - } - if (Module["stdout"]) { - FS.createDevice("/dev", "stdout", null, Module["stdout"]); - } else { - FS.symlink("/dev/tty", "/dev/stdout"); - } - if (Module["stderr"]) { - FS.createDevice("/dev", "stderr", null, Module["stderr"]); - } else { - FS.symlink("/dev/tty1", "/dev/stderr"); - } - var stdin = FS.open("/dev/stdin", 0); - var stdout = FS.open("/dev/stdout", 1); - var stderr = FS.open("/dev/stderr", 1); - }, - staticInit: function staticInit() { - [44].forEach(function (code) { - FS.genericErrors[code] = new FS.ErrnoError(code); - FS.genericErrors[code].stack = ""; - }); - FS.nameTable = new Array(4096); - FS.mount(MEMFS, {}, "/"); - FS.createDefaultDirectories(); - FS.createDefaultDevices(); - FS.createSpecialDirectories(); - FS.filesystems = { - "MEMFS": MEMFS, - "IDBFS": IDBFS - }; - }, - init: function init(input, output, error) { - FS.init.initialized = true; - Module["stdin"] = input || Module["stdin"]; - Module["stdout"] = output || Module["stdout"]; - Module["stderr"] = error || Module["stderr"]; - FS.createStandardStreams(); - }, - quit: function quit() { - FS.init.initialized = false; - for (var i = 0; i < FS.streams.length; i++) { - var stream = FS.streams[i]; - if (!stream) { - continue; - } - FS.close(stream); - } - }, - findObject: function findObject(path, dontResolveLastLink) { - var ret = FS.analyzePath(path, dontResolveLastLink); - if (!ret.exists) { - return null; - } - return ret.object; - }, - analyzePath: function analyzePath(path, dontResolveLastLink) { - try { - var lookup = FS.lookupPath(path, { - follow: !dontResolveLastLink - }); - path = lookup.path; - } catch (e) {} - var ret = { - isRoot: false, - exists: false, - error: 0, - name: null, - path: null, - object: null, - parentExists: false, - parentPath: null, - parentObject: null - }; - try { - var lookup = FS.lookupPath(path, { - parent: true - }); - ret.parentExists = true; - ret.parentPath = lookup.path; - ret.parentObject = lookup.node; - ret.name = PATH.basename(path); - lookup = FS.lookupPath(path, { - follow: !dontResolveLastLink - }); - ret.exists = true; - ret.path = lookup.path; - ret.object = lookup.node; - ret.name = lookup.node.name; - ret.isRoot = lookup.path === "/"; - } catch (e) { - ret.error = e.errno; - } - return ret; - }, - createPath: function createPath(parent, path, canRead, canWrite) { - parent = typeof parent == "string" ? parent : FS.getPath(parent); - var parts = path.split("/").reverse(); - while (parts.length) { - var part = parts.pop(); - if (!part) continue; - var current = PATH.join2(parent, part); - try { - FS.mkdir(current); - } catch (e) {} - parent = current; - } - return current; - }, - createFile: function createFile(parent, name, properties, canRead, canWrite) { - var path = PATH.join2(typeof parent == "string" ? parent : FS.getPath(parent), name); - var mode = FS_getMode(canRead, canWrite); - return FS.create(path, mode); - }, - createDataFile: function createDataFile(parent, name, data, canRead, canWrite, canOwn) { - var path = name; - if (parent) { - parent = typeof parent == "string" ? parent : FS.getPath(parent); - path = name ? PATH.join2(parent, name) : parent; - } - var mode = FS_getMode(canRead, canWrite); - var node = FS.create(path, mode); - if (data) { - if (typeof data == "string") { - var arr = new Array(data.length); - for (var i = 0, len = data.length; i < len; ++i) arr[i] = data.charCodeAt(i); - data = arr; - } - FS.chmod(node, mode | 146); - var stream = FS.open(node, 577); - FS.write(stream, data, 0, data.length, 0, canOwn); - FS.close(stream); - FS.chmod(node, mode); - } - }, - createDevice: function createDevice(parent, name, input, output) { - var path = PATH.join2(typeof parent == "string" ? parent : FS.getPath(parent), name); - var mode = FS_getMode(!!input, !!output); - if (!FS.createDevice.major) FS.createDevice.major = 64; - var dev = FS.makedev(FS.createDevice.major++, 0); - FS.registerDevice(dev, { - open: function open(stream) { - stream.seekable = false; - }, - close: function close(stream) { - var _output$buffer; - if (output !== null && output !== void 0 && (_output$buffer = output.buffer) !== null && _output$buffer !== void 0 && _output$buffer.length) { - output(10); - } - }, - read: function read(stream, buffer, offset, length, pos) { - var bytesRead = 0; - for (var i = 0; i < length; i++) { - var result; - try { - result = input(); - } catch (e) { - throw new FS.ErrnoError(29); - } - if (result === undefined && bytesRead === 0) { - throw new FS.ErrnoError(6); - } - if (result === null || result === undefined) break; - bytesRead++; - buffer[offset + i] = result; - } - if (bytesRead) { - stream.node.timestamp = Date.now(); - } - return bytesRead; - }, - write: function write(stream, buffer, offset, length, pos) { - for (var i = 0; i < length; i++) { - try { - output(buffer[offset + i]); - } catch (e) { - throw new FS.ErrnoError(29); - } - } - if (length) { - stream.node.timestamp = Date.now(); - } - return i; - } - }); - return FS.mkdev(path, mode, dev); - }, - forceLoadFile: function forceLoadFile(obj) { - if (obj.isDevice || obj.isFolder || obj.link || obj.contents) return true; - if (typeof XMLHttpRequest != "undefined") { - throw new Error("Lazy loading should have been performed (contents set) in createLazyFile, but it was not. Lazy loading only works in web workers. Use --embed-file or --preload-file in emcc on the main thread."); - } else if (read_) { - try { - obj.contents = intArrayFromString(read_(obj.url), true); - obj.usedBytes = obj.contents.length; - } catch (e) { - throw new FS.ErrnoError(29); - } - } else { - throw new Error("Cannot load without read() or XMLHttpRequest."); - } - }, - createLazyFile: function createLazyFile(parent, name, url, canRead, canWrite) { - var LazyUint8Array = /*#__PURE__*/function () { - "use strict"; - - function LazyUint8Array() { - _classCallCheck(this, LazyUint8Array); - this.lengthKnown = false; - this.chunks = []; - } - _createClass(LazyUint8Array, [{ - key: "get", - value: function get(idx) { - if (idx > this.length - 1 || idx < 0) { - return undefined; - } - var chunkOffset = idx % this.chunkSize; - var chunkNum = idx / this.chunkSize | 0; - return this.getter(chunkNum)[chunkOffset]; - } - }, { - key: "setDataGetter", - value: function setDataGetter(getter) { - this.getter = getter; - } - }, { - key: "cacheLength", - value: function cacheLength() { - var xhr = new XMLHttpRequest(); - xhr.open("HEAD", url, false); - xhr.send(null); - if (!(xhr.status >= 200 && xhr.status < 300 || xhr.status === 304)) throw new Error("Couldn't load " + url + ". Status: " + xhr.status); - var datalength = Number(xhr.getResponseHeader("Content-length")); - var header; - var hasByteServing = (header = xhr.getResponseHeader("Accept-Ranges")) && header === "bytes"; - var usesGzip = (header = xhr.getResponseHeader("Content-Encoding")) && header === "gzip"; - var chunkSize = 1024 * 1024; - if (!hasByteServing) chunkSize = datalength; - var doXHR = function doXHR(from, to) { - if (from > to) throw new Error("invalid range (" + from + ", " + to + ") or no bytes requested!"); - if (to > datalength - 1) throw new Error("only " + datalength + " bytes available! programmer error!"); - var xhr = new XMLHttpRequest(); - xhr.open("GET", url, false); - if (datalength !== chunkSize) xhr.setRequestHeader("Range", "bytes=" + from + "-" + to); - xhr.responseType = "arraybuffer"; - if (xhr.overrideMimeType) { - xhr.overrideMimeType("text/plain; charset=x-user-defined"); - } - xhr.send(null); - if (!(xhr.status >= 200 && xhr.status < 300 || xhr.status === 304)) throw new Error("Couldn't load " + url + ". Status: " + xhr.status); - if (xhr.response !== undefined) { - return new Uint8Array(xhr.response || []); - } - return intArrayFromString(xhr.responseText || "", true); - }; - var lazyArray = this; - lazyArray.setDataGetter(function (chunkNum) { - var start = chunkNum * chunkSize; - var end = (chunkNum + 1) * chunkSize - 1; - end = Math.min(end, datalength - 1); - if (typeof lazyArray.chunks[chunkNum] == "undefined") { - lazyArray.chunks[chunkNum] = doXHR(start, end); - } - if (typeof lazyArray.chunks[chunkNum] == "undefined") throw new Error("doXHR failed!"); - return lazyArray.chunks[chunkNum]; - }); - if (usesGzip || !datalength) { - chunkSize = datalength = 1; - datalength = this.getter(0).length; - chunkSize = datalength; - out("LazyFiles on gzip forces download of the whole file when length is accessed"); - } - this._length = datalength; - this._chunkSize = chunkSize; - this.lengthKnown = true; - } - }, { - key: "length", - get: function get() { - if (!this.lengthKnown) { - this.cacheLength(); - } - return this._length; - } - }, { - key: "chunkSize", - get: function get() { - if (!this.lengthKnown) { - this.cacheLength(); - } - return this._chunkSize; - } - }]); - return LazyUint8Array; - }(); - if (typeof XMLHttpRequest != "undefined") { - if (!ENVIRONMENT_IS_WORKER) throw "Cannot do synchronous binary XHRs outside webworkers in modern browsers. Use --embed-file or --preload-file in emcc"; - var lazyArray = new LazyUint8Array(); - var properties = { - isDevice: false, - contents: lazyArray - }; - } else { - var properties = { - isDevice: false, - url: url - }; - } - var node = FS.createFile(parent, name, properties, canRead, canWrite); - if (properties.contents) { - node.contents = properties.contents; - } else if (properties.url) { - node.contents = null; - node.url = properties.url; - } - Object.defineProperties(node, { - usedBytes: { - get: function get() { - return this.contents.length; - } - } - }); - var stream_ops = {}; - var keys = Object.keys(node.stream_ops); - keys.forEach(function (key) { - var fn = node.stream_ops[key]; - stream_ops[key] = function () { - FS.forceLoadFile(node); - return fn.apply(void 0, arguments); - }; - }); - function writeChunks(stream, buffer, offset, length, position) { - var contents = stream.node.contents; - if (position >= contents.length) return 0; - var size = Math.min(contents.length - position, length); - if (contents.slice) { - for (var i = 0; i < size; i++) { - buffer[offset + i] = contents[position + i]; - } - } else { - for (var i = 0; i < size; i++) { - buffer[offset + i] = contents.get(position + i); - } - } - return size; - } - stream_ops.read = function (stream, buffer, offset, length, position) { - FS.forceLoadFile(node); - return writeChunks(stream, buffer, offset, length, position); - }; - stream_ops.mmap = function (stream, length, position, prot, flags) { - FS.forceLoadFile(node); - var ptr = mmapAlloc(length); - if (!ptr) { - throw new FS.ErrnoError(48); - } - writeChunks(stream, HEAP8, ptr, length, position); - return { - ptr: ptr, - allocated: true - }; - }; - node.stream_ops = stream_ops; - return node; - } -}; -var SYSCALLS = { - DEFAULT_POLLMASK: 5, - calculateAt: function calculateAt(dirfd, path, allowEmpty) { - if (PATH.isAbs(path)) { - return path; - } - var dir; - if (dirfd === -100) { - dir = FS.cwd(); - } else { - var dirstream = SYSCALLS.getStreamFromFD(dirfd); - dir = dirstream.path; - } - if (path.length == 0) { - if (!allowEmpty) { - throw new FS.ErrnoError(44); - } - return dir; - } - return PATH.join2(dir, path); - }, - doStat: function doStat(func, path, buf) { - var stat = func(path); - HEAP32[buf >> 2] = stat.dev; - HEAP32[buf + 4 >> 2] = stat.mode; - HEAPU32[buf + 8 >> 2] = stat.nlink; - HEAP32[buf + 12 >> 2] = stat.uid; - HEAP32[buf + 16 >> 2] = stat.gid; - HEAP32[buf + 20 >> 2] = stat.rdev; - tempI64 = [stat.size >>> 0, (tempDouble = stat.size, +Math.abs(tempDouble) >= 1 ? tempDouble > 0 ? +Math.floor(tempDouble / 4294967296) >>> 0 : ~~+Math.ceil((tempDouble - +(~~tempDouble >>> 0)) / 4294967296) >>> 0 : 0)], HEAP32[buf + 24 >> 2] = tempI64[0], HEAP32[buf + 28 >> 2] = tempI64[1]; - HEAP32[buf + 32 >> 2] = 4096; - HEAP32[buf + 36 >> 2] = stat.blocks; - var atime = stat.atime.getTime(); - var mtime = stat.mtime.getTime(); - var ctime = stat.ctime.getTime(); - tempI64 = [Math.floor(atime / 1e3) >>> 0, (tempDouble = Math.floor(atime / 1e3), +Math.abs(tempDouble) >= 1 ? tempDouble > 0 ? +Math.floor(tempDouble / 4294967296) >>> 0 : ~~+Math.ceil((tempDouble - +(~~tempDouble >>> 0)) / 4294967296) >>> 0 : 0)], HEAP32[buf + 40 >> 2] = tempI64[0], HEAP32[buf + 44 >> 2] = tempI64[1]; - HEAPU32[buf + 48 >> 2] = atime % 1e3 * 1e3; - tempI64 = [Math.floor(mtime / 1e3) >>> 0, (tempDouble = Math.floor(mtime / 1e3), +Math.abs(tempDouble) >= 1 ? tempDouble > 0 ? +Math.floor(tempDouble / 4294967296) >>> 0 : ~~+Math.ceil((tempDouble - +(~~tempDouble >>> 0)) / 4294967296) >>> 0 : 0)], HEAP32[buf + 56 >> 2] = tempI64[0], HEAP32[buf + 60 >> 2] = tempI64[1]; - HEAPU32[buf + 64 >> 2] = mtime % 1e3 * 1e3; - tempI64 = [Math.floor(ctime / 1e3) >>> 0, (tempDouble = Math.floor(ctime / 1e3), +Math.abs(tempDouble) >= 1 ? tempDouble > 0 ? +Math.floor(tempDouble / 4294967296) >>> 0 : ~~+Math.ceil((tempDouble - +(~~tempDouble >>> 0)) / 4294967296) >>> 0 : 0)], HEAP32[buf + 72 >> 2] = tempI64[0], HEAP32[buf + 76 >> 2] = tempI64[1]; - HEAPU32[buf + 80 >> 2] = ctime % 1e3 * 1e3; - tempI64 = [stat.ino >>> 0, (tempDouble = stat.ino, +Math.abs(tempDouble) >= 1 ? tempDouble > 0 ? +Math.floor(tempDouble / 4294967296) >>> 0 : ~~+Math.ceil((tempDouble - +(~~tempDouble >>> 0)) / 4294967296) >>> 0 : 0)], HEAP32[buf + 88 >> 2] = tempI64[0], HEAP32[buf + 92 >> 2] = tempI64[1]; - return 0; - }, - doMsync: function doMsync(addr, stream, len, flags, offset) { - if (!FS.isFile(stream.node.mode)) { - throw new FS.ErrnoError(43); - } - if (flags & 2) { - return 0; - } - var buffer = HEAPU8.slice(addr, addr + len); - FS.msync(stream, buffer, offset, len, flags); - }, - varargs: undefined, - get: function get() { - var ret = HEAP32[+SYSCALLS.varargs >> 2]; - SYSCALLS.varargs += 4; - return ret; - }, - getp: function getp() { - return SYSCALLS.get(); - }, - getStr: function getStr(ptr) { - var ret = UTF8ToString(ptr); - return ret; - }, - getStreamFromFD: function getStreamFromFD(fd) { - var stream = FS.getStreamChecked(fd); - return stream; - } -}; -function ___syscall__newselect(nfds, readfds, writefds, exceptfds, timeout) { - try { - var total = 0; - var srcReadLow = readfds ? HEAP32[readfds >> 2] : 0, - srcReadHigh = readfds ? HEAP32[readfds + 4 >> 2] : 0; - var srcWriteLow = writefds ? HEAP32[writefds >> 2] : 0, - srcWriteHigh = writefds ? HEAP32[writefds + 4 >> 2] : 0; - var srcExceptLow = exceptfds ? HEAP32[exceptfds >> 2] : 0, - srcExceptHigh = exceptfds ? HEAP32[exceptfds + 4 >> 2] : 0; - var dstReadLow = 0, - dstReadHigh = 0; - var dstWriteLow = 0, - dstWriteHigh = 0; - var dstExceptLow = 0, - dstExceptHigh = 0; - var allLow = (readfds ? HEAP32[readfds >> 2] : 0) | (writefds ? HEAP32[writefds >> 2] : 0) | (exceptfds ? HEAP32[exceptfds >> 2] : 0); - var allHigh = (readfds ? HEAP32[readfds + 4 >> 2] : 0) | (writefds ? HEAP32[writefds + 4 >> 2] : 0) | (exceptfds ? HEAP32[exceptfds + 4 >> 2] : 0); - var check = function check(fd, low, high, val) { - return fd < 32 ? low & val : high & val; - }; - for (var fd = 0; fd < nfds; fd++) { - var mask = 1 << fd % 32; - if (!check(fd, allLow, allHigh, mask)) { - continue; - } - var stream = SYSCALLS.getStreamFromFD(fd); - var flags = SYSCALLS.DEFAULT_POLLMASK; - if (stream.stream_ops.poll) { - var timeoutInMillis = -1; - if (timeout) { - var tv_sec = readfds ? HEAP32[timeout >> 2] : 0, - tv_usec = readfds ? HEAP32[timeout + 4 >> 2] : 0; - timeoutInMillis = (tv_sec + tv_usec / 1e6) * 1e3; - } - flags = stream.stream_ops.poll(stream, timeoutInMillis); - } - if (flags & 1 && check(fd, srcReadLow, srcReadHigh, mask)) { - fd < 32 ? dstReadLow = dstReadLow | mask : dstReadHigh = dstReadHigh | mask; - total++; - } - if (flags & 4 && check(fd, srcWriteLow, srcWriteHigh, mask)) { - fd < 32 ? dstWriteLow = dstWriteLow | mask : dstWriteHigh = dstWriteHigh | mask; - total++; - } - if (flags & 2 && check(fd, srcExceptLow, srcExceptHigh, mask)) { - fd < 32 ? dstExceptLow = dstExceptLow | mask : dstExceptHigh = dstExceptHigh | mask; - total++; - } - } - if (readfds) { - HEAP32[readfds >> 2] = dstReadLow; - HEAP32[readfds + 4 >> 2] = dstReadHigh; - } - if (writefds) { - HEAP32[writefds >> 2] = dstWriteLow; - HEAP32[writefds + 4 >> 2] = dstWriteHigh; - } - if (exceptfds) { - HEAP32[exceptfds >> 2] = dstExceptLow; - HEAP32[exceptfds + 4 >> 2] = dstExceptHigh; - } - return total; - } catch (e) { - if (typeof FS == "undefined" || !(e.name === "ErrnoError")) throw e; - return -e.errno; - } -} -var SOCKFS = { - mount: function mount(_mount2) { - Module["websocket"] = Module["websocket"] && "object" === _typeof(Module["websocket"]) ? Module["websocket"] : {}; - Module["websocket"]._callbacks = {}; - Module["websocket"]["on"] = function (event, callback) { - if ("function" === typeof callback) { - this._callbacks[event] = callback; - } - return this; - }; - Module["websocket"].emit = function (event, param) { - if ("function" === typeof this._callbacks[event]) { - this._callbacks[event].call(this, param); - } - }; - return FS.createNode(null, "/", 16384 | 511, 0); - }, - createSocket: function createSocket(family, type, protocol) { - type &= ~526336; - var streaming = type == 1; - if (streaming && protocol && protocol != 6) { - throw new FS.ErrnoError(66); - } - var sock = { - family: family, - type: type, - protocol: protocol, - server: null, - error: null, - peers: {}, - pending: [], - recv_queue: [], - sock_ops: SOCKFS.websocket_sock_ops - }; - var name = SOCKFS.nextname(); - var node = FS.createNode(SOCKFS.root, name, 49152, 0); - node.sock = sock; - var stream = FS.createStream({ - path: name, - node: node, - flags: 2, - seekable: false, - stream_ops: SOCKFS.stream_ops - }); - sock.stream = stream; - return sock; - }, - getSocket: function getSocket(fd) { - var stream = FS.getStream(fd); - if (!stream || !FS.isSocket(stream.node.mode)) { - return null; - } - return stream.node.sock; - }, - stream_ops: { - poll: function poll(stream) { - var sock = stream.node.sock; - return sock.sock_ops.poll(sock); - }, - ioctl: function ioctl(stream, request, varargs) { - var sock = stream.node.sock; - return sock.sock_ops.ioctl(sock, request, varargs); - }, - read: function read(stream, buffer, offset, length, position) { - var sock = stream.node.sock; - var msg = sock.sock_ops.recvmsg(sock, length); - if (!msg) { - return 0; - } - buffer.set(msg.buffer, offset); - return msg.buffer.length; - }, - write: function write(stream, buffer, offset, length, position) { - var sock = stream.node.sock; - return sock.sock_ops.sendmsg(sock, buffer, offset, length); - }, - close: function close(stream) { - var sock = stream.node.sock; - sock.sock_ops.close(sock); - } - }, - nextname: function nextname() { - if (!SOCKFS.nextname.current) { - SOCKFS.nextname.current = 0; - } - return "socket[" + SOCKFS.nextname.current++ + "]"; - }, - websocket_sock_ops: { - createPeer: function createPeer(sock, addr, port) { - var ws; - if (_typeof(addr) == "object") { - ws = addr; - addr = null; - port = null; - } - if (ws) { - if (ws._socket) { - addr = ws._socket.remoteAddress; - port = ws._socket.remotePort; - } else { - var result = /ws[s]?:\/\/([^:]+):(\d+)/.exec(ws.url); - if (!result) { - throw new Error("WebSocket URL must be in the format ws(s)://address:port"); - } - addr = result[1]; - port = parseInt(result[2], 10); - } - } else { - try { - var runtimeConfig = Module["websocket"] && "object" === _typeof(Module["websocket"]); - var url = "ws:#".replace("#", "//"); - if (runtimeConfig) { - if ("string" === typeof Module["websocket"]["url"]) { - url = Module["websocket"]["url"]; - } - } - if (url === "ws://" || url === "wss://") { - var parts = addr.split("/"); - url = url + parts[0] + ":" + port + "/" + parts.slice(1).join("/"); - } - var subProtocols = "binary"; - if (runtimeConfig) { - if ("string" === typeof Module["websocket"]["subprotocol"]) { - subProtocols = Module["websocket"]["subprotocol"]; - } - } - var opts = undefined; - if (subProtocols !== "null") { - subProtocols = subProtocols.replace(/^ +| +$/g, "").split(/ *, */); - opts = subProtocols; - } - if (runtimeConfig && null === Module["websocket"]["subprotocol"]) { - subProtocols = "null"; - opts = undefined; - } - var WebSocketConstructor; - if (ENVIRONMENT_IS_NODE) { - WebSocketConstructor = require("ws"); - } else { - WebSocketConstructor = WebSocket; - } - ws = new WebSocketConstructor(url, opts); - ws.binaryType = "arraybuffer"; - } catch (e) { - throw new FS.ErrnoError(23); - } - } - var peer = { - addr: addr, - port: port, - socket: ws, - dgram_send_queue: [] - }; - SOCKFS.websocket_sock_ops.addPeer(sock, peer); - SOCKFS.websocket_sock_ops.handlePeerEvents(sock, peer); - if (sock.type === 2 && typeof sock.sport != "undefined") { - peer.dgram_send_queue.push(new Uint8Array([255, 255, 255, 255, "p".charCodeAt(0), "o".charCodeAt(0), "r".charCodeAt(0), "t".charCodeAt(0), (sock.sport & 65280) >> 8, sock.sport & 255])); - } - return peer; - }, - getPeer: function getPeer(sock, addr, port) { - return sock.peers[addr + ":" + port]; - }, - addPeer: function addPeer(sock, peer) { - sock.peers[peer.addr + ":" + peer.port] = peer; - }, - removePeer: function removePeer(sock, peer) { - delete sock.peers[peer.addr + ":" + peer.port]; - }, - handlePeerEvents: function handlePeerEvents(sock, peer) { - var first = true; - var handleOpen = function handleOpen() { - Module["websocket"].emit("open", sock.stream.fd); - try { - var queued = peer.dgram_send_queue.shift(); - while (queued) { - peer.socket.send(queued); - queued = peer.dgram_send_queue.shift(); - } - } catch (e) { - peer.socket.close(); - } - }; - function handleMessage(data) { - if (typeof data == "string") { - var encoder = new TextEncoder(); - data = encoder.encode(data); - } else { - assert(data.byteLength !== undefined); - if (data.byteLength == 0) { - return; - } - data = new Uint8Array(data); - } - var wasfirst = first; - first = false; - if (wasfirst && data.length === 10 && data[0] === 255 && data[1] === 255 && data[2] === 255 && data[3] === 255 && data[4] === "p".charCodeAt(0) && data[5] === "o".charCodeAt(0) && data[6] === "r".charCodeAt(0) && data[7] === "t".charCodeAt(0)) { - var newport = data[8] << 8 | data[9]; - SOCKFS.websocket_sock_ops.removePeer(sock, peer); - peer.port = newport; - SOCKFS.websocket_sock_ops.addPeer(sock, peer); - return; - } - sock.recv_queue.push({ - addr: peer.addr, - port: peer.port, - data: data - }); - Module["websocket"].emit("message", sock.stream.fd); - } - if (ENVIRONMENT_IS_NODE) { - peer.socket.on("open", handleOpen); - peer.socket.on("message", function (data, isBinary) { - if (!isBinary) { - return; - } - handleMessage(new Uint8Array(data).buffer); - }); - peer.socket.on("close", function () { - Module["websocket"].emit("close", sock.stream.fd); - }); - peer.socket.on("error", function (error) { - sock.error = 14; - Module["websocket"].emit("error", [sock.stream.fd, sock.error, "ECONNREFUSED: Connection refused"]); - }); - } else { - peer.socket.onopen = handleOpen; - peer.socket.onclose = function () { - Module["websocket"].emit("close", sock.stream.fd); - }; - peer.socket.onmessage = function peer_socket_onmessage(event) { - handleMessage(event.data); - }; - peer.socket.onerror = function (error) { - sock.error = 14; - Module["websocket"].emit("error", [sock.stream.fd, sock.error, "ECONNREFUSED: Connection refused"]); - }; - } - }, - poll: function poll(sock) { - if (sock.type === 1 && sock.server) { - return sock.pending.length ? 64 | 1 : 0; - } - var mask = 0; - var dest = sock.type === 1 ? SOCKFS.websocket_sock_ops.getPeer(sock, sock.daddr, sock.dport) : null; - if (sock.recv_queue.length || !dest || dest && dest.socket.readyState === dest.socket.CLOSING || dest && dest.socket.readyState === dest.socket.CLOSED) { - mask |= 64 | 1; - } - if (!dest || dest && dest.socket.readyState === dest.socket.OPEN) { - mask |= 4; - } - if (dest && dest.socket.readyState === dest.socket.CLOSING || dest && dest.socket.readyState === dest.socket.CLOSED) { - mask |= 16; - } - return mask; - }, - ioctl: function ioctl(sock, request, arg) { - switch (request) { - case 21531: - var bytes = 0; - if (sock.recv_queue.length) { - bytes = sock.recv_queue[0].data.length; - } - HEAP32[arg >> 2] = bytes; - return 0; - default: - return 28; - } - }, - close: function close(sock) { - if (sock.server) { - try { - sock.server.close(); - } catch (e) {} - sock.server = null; - } - var peers = Object.keys(sock.peers); - for (var i = 0; i < peers.length; i++) { - var peer = sock.peers[peers[i]]; - try { - peer.socket.close(); - } catch (e) {} - SOCKFS.websocket_sock_ops.removePeer(sock, peer); - } - return 0; - }, - bind: function bind(sock, addr, port) { - if (typeof sock.saddr != "undefined" || typeof sock.sport != "undefined") { - throw new FS.ErrnoError(28); - } - sock.saddr = addr; - sock.sport = port; - if (sock.type === 2) { - if (sock.server) { - sock.server.close(); - sock.server = null; - } - try { - sock.sock_ops.listen(sock, 0); - } catch (e) { - if (!(e.name === "ErrnoError")) throw e; - if (e.errno !== 138) throw e; - } - } - }, - connect: function connect(sock, addr, port) { - if (sock.server) { - throw new FS.ErrnoError(138); - } - if (typeof sock.daddr != "undefined" && typeof sock.dport != "undefined") { - var dest = SOCKFS.websocket_sock_ops.getPeer(sock, sock.daddr, sock.dport); - if (dest) { - if (dest.socket.readyState === dest.socket.CONNECTING) { - throw new FS.ErrnoError(7); - } else { - throw new FS.ErrnoError(30); - } - } - } - var peer = SOCKFS.websocket_sock_ops.createPeer(sock, addr, port); - sock.daddr = peer.addr; - sock.dport = peer.port; - throw new FS.ErrnoError(26); - }, - listen: function listen(sock, backlog) { - if (!ENVIRONMENT_IS_NODE) { - throw new FS.ErrnoError(138); - } - if (sock.server) { - throw new FS.ErrnoError(28); - } - var WebSocketServer = require("ws").Server; - var host = sock.saddr; - sock.server = new WebSocketServer({ - host: host, - port: sock.sport - }); - Module["websocket"].emit("listen", sock.stream.fd); - sock.server.on("connection", function (ws) { - if (sock.type === 1) { - var newsock = SOCKFS.createSocket(sock.family, sock.type, sock.protocol); - var peer = SOCKFS.websocket_sock_ops.createPeer(newsock, ws); - newsock.daddr = peer.addr; - newsock.dport = peer.port; - sock.pending.push(newsock); - Module["websocket"].emit("connection", newsock.stream.fd); - } else { - SOCKFS.websocket_sock_ops.createPeer(sock, ws); - Module["websocket"].emit("connection", sock.stream.fd); - } - }); - sock.server.on("close", function () { - Module["websocket"].emit("close", sock.stream.fd); - sock.server = null; - }); - sock.server.on("error", function (error) { - sock.error = 23; - Module["websocket"].emit("error", [sock.stream.fd, sock.error, "EHOSTUNREACH: Host is unreachable"]); - }); - }, - accept: function accept(listensock) { - if (!listensock.server || !listensock.pending.length) { - throw new FS.ErrnoError(28); - } - var newsock = listensock.pending.shift(); - newsock.stream.flags = listensock.stream.flags; - return newsock; - }, - getname: function getname(sock, peer) { - var addr, port; - if (peer) { - if (sock.daddr === undefined || sock.dport === undefined) { - throw new FS.ErrnoError(53); - } - addr = sock.daddr; - port = sock.dport; - } else { - addr = sock.saddr || 0; - port = sock.sport || 0; - } - return { - addr: addr, - port: port - }; - }, - sendmsg: function sendmsg(sock, buffer, offset, length, addr, port) { - if (sock.type === 2) { - if (addr === undefined || port === undefined) { - addr = sock.daddr; - port = sock.dport; - } - if (addr === undefined || port === undefined) { - throw new FS.ErrnoError(17); - } - } else { - addr = sock.daddr; - port = sock.dport; - } - var dest = SOCKFS.websocket_sock_ops.getPeer(sock, addr, port); - if (sock.type === 1) { - if (!dest || dest.socket.readyState === dest.socket.CLOSING || dest.socket.readyState === dest.socket.CLOSED) { - throw new FS.ErrnoError(53); - } else if (dest.socket.readyState === dest.socket.CONNECTING) { - throw new FS.ErrnoError(6); - } - } - if (ArrayBuffer.isView(buffer)) { - offset += buffer.byteOffset; - buffer = buffer.buffer; - } - var data; - data = buffer.slice(offset, offset + length); - if (sock.type === 2) { - if (!dest || dest.socket.readyState !== dest.socket.OPEN) { - if (!dest || dest.socket.readyState === dest.socket.CLOSING || dest.socket.readyState === dest.socket.CLOSED) { - dest = SOCKFS.websocket_sock_ops.createPeer(sock, addr, port); - } - dest.dgram_send_queue.push(data); - return length; - } - } - try { - dest.socket.send(data); - return length; - } catch (e) { - throw new FS.ErrnoError(28); - } - }, - recvmsg: function recvmsg(sock, length) { - if (sock.type === 1 && sock.server) { - throw new FS.ErrnoError(53); - } - var queued = sock.recv_queue.shift(); - if (!queued) { - if (sock.type === 1) { - var dest = SOCKFS.websocket_sock_ops.getPeer(sock, sock.daddr, sock.dport); - if (!dest) { - throw new FS.ErrnoError(53); - } - if (dest.socket.readyState === dest.socket.CLOSING || dest.socket.readyState === dest.socket.CLOSED) { - return null; - } - throw new FS.ErrnoError(6); - } - throw new FS.ErrnoError(6); - } - var queuedLength = queued.data.byteLength || queued.data.length; - var queuedOffset = queued.data.byteOffset || 0; - var queuedBuffer = queued.data.buffer || queued.data; - var bytesRead = Math.min(length, queuedLength); - var res = { - buffer: new Uint8Array(queuedBuffer, queuedOffset, bytesRead), - addr: queued.addr, - port: queued.port - }; - if (sock.type === 1 && bytesRead < queuedLength) { - var bytesRemaining = queuedLength - bytesRead; - queued.data = new Uint8Array(queuedBuffer, queuedOffset + bytesRead, bytesRemaining); - sock.recv_queue.unshift(queued); - } - return res; - } - } -}; -var getSocketFromFD = function getSocketFromFD(fd) { - var socket = SOCKFS.getSocket(fd); - if (!socket) throw new FS.ErrnoError(8); - return socket; -}; -var inetPton4 = function inetPton4(str) { - var b = str.split("."); - for (var i = 0; i < 4; i++) { - var tmp = Number(b[i]); - if (isNaN(tmp)) return null; - b[i] = tmp; - } - return (b[0] | b[1] << 8 | b[2] << 16 | b[3] << 24) >>> 0; -}; -var jstoi_q = function jstoi_q(str) { - return parseInt(str); -}; -var inetPton6 = function inetPton6(str) { - var words; - var w, offset, z; - var valid6regx = /^((?=.*::)(?!.*::.+::)(::)?([\dA-F]{1,4}:(:|\b)|){5}|([\dA-F]{1,4}:){6})((([\dA-F]{1,4}((?!\3)::|:\b|$))|(?!\2\3)){2}|(((2[0-4]|1\d|[1-9])?\d|25[0-5])\.?\b){4})$/i; - var parts = []; - if (!valid6regx.test(str)) { - return null; - } - if (str === "::") { - return [0, 0, 0, 0, 0, 0, 0, 0]; - } - if (str.startsWith("::")) { - str = str.replace("::", "Z:"); - } else { - str = str.replace("::", ":Z:"); - } - if (str.indexOf(".") > 0) { - str = str.replace(new RegExp("[.]", "g"), ":"); - words = str.split(":"); - words[words.length - 4] = jstoi_q(words[words.length - 4]) + jstoi_q(words[words.length - 3]) * 256; - words[words.length - 3] = jstoi_q(words[words.length - 2]) + jstoi_q(words[words.length - 1]) * 256; - words = words.slice(0, words.length - 2); - } else { - words = str.split(":"); - } - offset = 0; - z = 0; - for (w = 0; w < words.length; w++) { - if (typeof words[w] == "string") { - if (words[w] === "Z") { - for (z = 0; z < 8 - words.length + 1; z++) { - parts[w + z] = 0; - } - offset = z - 1; - } else { - parts[w + offset] = _htons2(parseInt(words[w], 16)); - } - } else { - parts[w + offset] = words[w]; - } - } - return [parts[1] << 16 | parts[0], parts[3] << 16 | parts[2], parts[5] << 16 | parts[4], parts[7] << 16 | parts[6]]; -}; -var writeSockaddr = function writeSockaddr(sa, family, addr, port, addrlen) { - switch (family) { - case 2: - addr = inetPton4(addr); - zeroMemory(sa, 16); - if (addrlen) { - HEAP32[addrlen >> 2] = 16; - } - HEAP16[sa >> 1] = family; - HEAP32[sa + 4 >> 2] = addr; - HEAP16[sa + 2 >> 1] = _htons2(port); - break; - case 10: - addr = inetPton6(addr); - zeroMemory(sa, 28); - if (addrlen) { - HEAP32[addrlen >> 2] = 28; - } - HEAP32[sa >> 2] = family; - HEAP32[sa + 8 >> 2] = addr[0]; - HEAP32[sa + 12 >> 2] = addr[1]; - HEAP32[sa + 16 >> 2] = addr[2]; - HEAP32[sa + 20 >> 2] = addr[3]; - HEAP16[sa + 2 >> 1] = _htons2(port); - break; - default: - return 5; - } - return 0; -}; -var DNS = { - address_map: { - id: 1, - addrs: {}, - names: {} - }, - lookup_name: function lookup_name(name) { - var res = inetPton4(name); - if (res !== null) { - return name; - } - res = inetPton6(name); - if (res !== null) { - return name; - } - var addr; - if (DNS.address_map.addrs[name]) { - addr = DNS.address_map.addrs[name]; - } else { - var id = DNS.address_map.id++; - assert(id < 65535, "exceeded max address mappings of 65535"); - addr = "172.29." + (id & 255) + "." + (id & 65280); - DNS.address_map.names[addr] = name; - DNS.address_map.addrs[name] = addr; - } - return addr; - }, - lookup_addr: function lookup_addr(addr) { - if (DNS.address_map.names[addr]) { - return DNS.address_map.names[addr]; - } - return null; - } -}; -function ___syscall_accept4(fd, addr, addrlen, flags, d1, d2) { - try { - var sock = getSocketFromFD(fd); - var newsock = sock.sock_ops.accept(sock); - if (addr) { - var errno = writeSockaddr(addr, newsock.family, DNS.lookup_name(newsock.daddr), newsock.dport, addrlen); - } - return newsock.stream.fd; - } catch (e) { - if (typeof FS == "undefined" || !(e.name === "ErrnoError")) throw e; - return -e.errno; - } -} -var inetNtop4 = function inetNtop4(addr) { - return (addr & 255) + "." + (addr >> 8 & 255) + "." + (addr >> 16 & 255) + "." + (addr >> 24 & 255); -}; -var inetNtop6 = function inetNtop6(ints) { - var str = ""; - var word = 0; - var longest = 0; - var lastzero = 0; - var zstart = 0; - var len = 0; - var i = 0; - var parts = [ints[0] & 65535, ints[0] >> 16, ints[1] & 65535, ints[1] >> 16, ints[2] & 65535, ints[2] >> 16, ints[3] & 65535, ints[3] >> 16]; - var hasipv4 = true; - var v4part = ""; - for (i = 0; i < 5; i++) { - if (parts[i] !== 0) { - hasipv4 = false; - break; - } - } - if (hasipv4) { - v4part = inetNtop4(parts[6] | parts[7] << 16); - if (parts[5] === -1) { - str = "::ffff:"; - str += v4part; - return str; - } - if (parts[5] === 0) { - str = "::"; - if (v4part === "0.0.0.0") v4part = ""; - if (v4part === "0.0.0.1") v4part = "1"; - str += v4part; - return str; - } - } - for (word = 0; word < 8; word++) { - if (parts[word] === 0) { - if (word - lastzero > 1) { - len = 0; - } - lastzero = word; - len++; - } - if (len > longest) { - longest = len; - zstart = word - longest + 1; - } - } - for (word = 0; word < 8; word++) { - if (longest > 1) { - if (parts[word] === 0 && word >= zstart && word < zstart + longest) { - if (word === zstart) { - str += ":"; - if (zstart === 0) str += ":"; - } - continue; - } - } - str += Number(_ntohs2(parts[word] & 65535)).toString(16); - str += word < 7 ? ":" : ""; - } - return str; -}; -var readSockaddr = function readSockaddr(sa, salen) { - var family = HEAP16[sa >> 1]; - var port = _ntohs2(HEAPU16[sa + 2 >> 1]); - var addr; - switch (family) { - case 2: - if (salen !== 16) { - return { - errno: 28 - }; - } - addr = HEAP32[sa + 4 >> 2]; - addr = inetNtop4(addr); - break; - case 10: - if (salen !== 28) { - return { - errno: 28 - }; - } - addr = [HEAP32[sa + 8 >> 2], HEAP32[sa + 12 >> 2], HEAP32[sa + 16 >> 2], HEAP32[sa + 20 >> 2]]; - addr = inetNtop6(addr); - break; - default: - return { - errno: 5 - }; - } - return { - family: family, - addr: addr, - port: port - }; -}; -var getSocketAddress = function getSocketAddress(addrp, addrlen, allowNull) { - if (allowNull && addrp === 0) return null; - var info = readSockaddr(addrp, addrlen); - if (info.errno) throw new FS.ErrnoError(info.errno); - info.addr = DNS.lookup_addr(info.addr) || info.addr; - return info; -}; -function ___syscall_bind(fd, addr, addrlen, d1, d2, d3) { - try { - var sock = getSocketFromFD(fd); - var info = getSocketAddress(addr, addrlen); - sock.sock_ops.bind(sock, info.addr, info.port); - return 0; - } catch (e) { - if (typeof FS == "undefined" || !(e.name === "ErrnoError")) throw e; - return -e.errno; - } -} -function ___syscall_connect(fd, addr, addrlen, d1, d2, d3) { - try { - var sock = getSocketFromFD(fd); - var info = getSocketAddress(addr, addrlen); - sock.sock_ops.connect(sock, info.addr, info.port); - return 0; - } catch (e) { - if (typeof FS == "undefined" || !(e.name === "ErrnoError")) throw e; - return -e.errno; - } -} -function ___syscall_dup3(fd, newfd, flags) { - try { - var old = SYSCALLS.getStreamFromFD(fd); - if (old.fd === newfd) return -28; - var existing = FS.getStream(newfd); - if (existing) FS.close(existing); - return FS.dupStream(old, newfd).fd; - } catch (e) { - if (typeof FS == "undefined" || !(e.name === "ErrnoError")) throw e; - return -e.errno; - } -} -function ___syscall_fcntl64(fd, cmd, varargs) { - SYSCALLS.varargs = varargs; - try { - var stream = SYSCALLS.getStreamFromFD(fd); - switch (cmd) { - case 0: - { - var arg = SYSCALLS.get(); - if (arg < 0) { - return -28; - } - while (FS.streams[arg]) { - arg++; - } - var newStream; - newStream = FS.dupStream(stream, arg); - return newStream.fd; - } - case 1: - case 2: - return 0; - case 3: - return stream.flags; - case 4: - { - var arg = SYSCALLS.get(); - stream.flags |= arg; - return 0; - } - case 12: - { - var arg = SYSCALLS.getp(); - var offset = 0; - HEAP16[arg + offset >> 1] = 2; - return 0; - } - case 13: - case 14: - return 0; - } - return -28; - } catch (e) { - if (typeof FS == "undefined" || !(e.name === "ErrnoError")) throw e; - return -e.errno; - } -} -function ___syscall_getpeername(fd, addr, addrlen, d1, d2, d3) { - try { - var sock = getSocketFromFD(fd); - if (!sock.daddr) { - return -53; - } - var errno = writeSockaddr(addr, sock.family, DNS.lookup_name(sock.daddr), sock.dport, addrlen); - return 0; - } catch (e) { - if (typeof FS == "undefined" || !(e.name === "ErrnoError")) throw e; - return -e.errno; - } -} -function ___syscall_getsockname(fd, addr, addrlen, d1, d2, d3) { - try { - var sock = getSocketFromFD(fd); - var errno = writeSockaddr(addr, sock.family, DNS.lookup_name(sock.saddr || "0.0.0.0"), sock.sport, addrlen); - return 0; - } catch (e) { - if (typeof FS == "undefined" || !(e.name === "ErrnoError")) throw e; - return -e.errno; - } -} -function ___syscall_getsockopt(fd, level, optname, optval, optlen, d1) { - try { - var sock = getSocketFromFD(fd); - if (level === 1) { - if (optname === 4) { - HEAP32[optval >> 2] = sock.error; - HEAP32[optlen >> 2] = 4; - sock.error = null; - return 0; - } - } - return -50; - } catch (e) { - if (typeof FS == "undefined" || !(e.name === "ErrnoError")) throw e; - return -e.errno; - } -} -function ___syscall_ioctl(fd, op, varargs) { - SYSCALLS.varargs = varargs; - try { - var stream = SYSCALLS.getStreamFromFD(fd); - switch (op) { - case 21509: - { - if (!stream.tty) return -59; - return 0; - } - case 21505: - { - if (!stream.tty) return -59; - if (stream.tty.ops.ioctl_tcgets) { - var termios = stream.tty.ops.ioctl_tcgets(stream); - var argp = SYSCALLS.getp(); - HEAP32[argp >> 2] = termios.c_iflag || 0; - HEAP32[argp + 4 >> 2] = termios.c_oflag || 0; - HEAP32[argp + 8 >> 2] = termios.c_cflag || 0; - HEAP32[argp + 12 >> 2] = termios.c_lflag || 0; - for (var i = 0; i < 32; i++) { - HEAP8[argp + i + 17] = termios.c_cc[i] || 0; - } - return 0; - } - return 0; - } - case 21510: - case 21511: - case 21512: - { - if (!stream.tty) return -59; - return 0; - } - case 21506: - case 21507: - case 21508: - { - if (!stream.tty) return -59; - if (stream.tty.ops.ioctl_tcsets) { - var argp = SYSCALLS.getp(); - var c_iflag = HEAP32[argp >> 2]; - var c_oflag = HEAP32[argp + 4 >> 2]; - var c_cflag = HEAP32[argp + 8 >> 2]; - var c_lflag = HEAP32[argp + 12 >> 2]; - var c_cc = []; - for (var i = 0; i < 32; i++) { - c_cc.push(HEAP8[argp + i + 17]); - } - return stream.tty.ops.ioctl_tcsets(stream.tty, op, { - c_iflag: c_iflag, - c_oflag: c_oflag, - c_cflag: c_cflag, - c_lflag: c_lflag, - c_cc: c_cc - }); - } - return 0; - } - case 21519: - { - if (!stream.tty) return -59; - var argp = SYSCALLS.getp(); - HEAP32[argp >> 2] = 0; - return 0; - } - case 21520: - { - if (!stream.tty) return -59; - return -28; - } - case 21531: - { - var argp = SYSCALLS.getp(); - return FS.ioctl(stream, op, argp); - } - case 21523: - { - if (!stream.tty) return -59; - if (stream.tty.ops.ioctl_tiocgwinsz) { - var winsize = stream.tty.ops.ioctl_tiocgwinsz(stream.tty); - var argp = SYSCALLS.getp(); - HEAP16[argp >> 1] = winsize[0]; - HEAP16[argp + 2 >> 1] = winsize[1]; - } - return 0; - } - case 21524: - { - if (!stream.tty) return -59; - return 0; - } - case 21515: - { - if (!stream.tty) return -59; - return 0; - } - default: - return -28; - } - } catch (e) { - if (typeof FS == "undefined" || !(e.name === "ErrnoError")) throw e; - return -e.errno; - } -} -function ___syscall_listen(fd, backlog) { - try { - var sock = getSocketFromFD(fd); - sock.sock_ops.listen(sock, backlog); - return 0; - } catch (e) { - if (typeof FS == "undefined" || !(e.name === "ErrnoError")) throw e; - return -e.errno; - } -} -function ___syscall_mkdirat(dirfd, path, mode) { - try { - path = SYSCALLS.getStr(path); - path = SYSCALLS.calculateAt(dirfd, path); - path = PATH.normalize(path); - if (path[path.length - 1] === "/") path = path.substr(0, path.length - 1); - FS.mkdir(path, mode, 0); - return 0; - } catch (e) { - if (typeof FS == "undefined" || !(e.name === "ErrnoError")) throw e; - return -e.errno; - } -} -function ___syscall_openat(dirfd, path, flags, varargs) { - SYSCALLS.varargs = varargs; - try { - path = SYSCALLS.getStr(path); - path = SYSCALLS.calculateAt(dirfd, path); - var mode = varargs ? SYSCALLS.get() : 0; - return FS.open(path, flags, mode).fd; - } catch (e) { - if (typeof FS == "undefined" || !(e.name === "ErrnoError")) throw e; - return -e.errno; - } -} -function ___syscall_poll(fds, nfds, timeout) { - try { - var nonzero = 0; - for (var i = 0; i < nfds; i++) { - var pollfd = fds + 8 * i; - var fd = HEAP32[pollfd >> 2]; - var events = HEAP16[pollfd + 4 >> 1]; - var mask = 32; - var stream = FS.getStream(fd); - if (stream) { - mask = SYSCALLS.DEFAULT_POLLMASK; - if (stream.stream_ops.poll) { - mask = stream.stream_ops.poll(stream, -1); - } - } - mask &= events | 8 | 16; - if (mask) nonzero++; - HEAP16[pollfd + 6 >> 1] = mask; - } - return nonzero; - } catch (e) { - if (typeof FS == "undefined" || !(e.name === "ErrnoError")) throw e; - return -e.errno; - } -} -var stringToUTF8 = function stringToUTF8(str, outPtr, maxBytesToWrite) { - return stringToUTF8Array(str, HEAPU8, outPtr, maxBytesToWrite); -}; -function ___syscall_readlinkat(dirfd, path, buf, bufsize) { - try { - path = SYSCALLS.getStr(path); - path = SYSCALLS.calculateAt(dirfd, path); - if (bufsize <= 0) return -28; - var ret = FS.readlink(path); - var len = Math.min(bufsize, lengthBytesUTF8(ret)); - var endChar = HEAP8[buf + len]; - stringToUTF8(ret, buf, bufsize + 1); - HEAP8[buf + len] = endChar; - return len; - } catch (e) { - if (typeof FS == "undefined" || !(e.name === "ErrnoError")) throw e; - return -e.errno; - } -} -function ___syscall_recvfrom(fd, buf, len, flags, addr, addrlen) { - try { - var sock = getSocketFromFD(fd); - var msg = sock.sock_ops.recvmsg(sock, len); - if (!msg) return 0; - if (addr) { - var errno = writeSockaddr(addr, sock.family, DNS.lookup_name(msg.addr), msg.port, addrlen); - } - HEAPU8.set(msg.buffer, buf); - return msg.buffer.byteLength; - } catch (e) { - if (typeof FS == "undefined" || !(e.name === "ErrnoError")) throw e; - return -e.errno; - } -} -function ___syscall_renameat(olddirfd, oldpath, newdirfd, newpath) { - try { - oldpath = SYSCALLS.getStr(oldpath); - newpath = SYSCALLS.getStr(newpath); - oldpath = SYSCALLS.calculateAt(olddirfd, oldpath); - newpath = SYSCALLS.calculateAt(newdirfd, newpath); - FS.rename(oldpath, newpath); - return 0; - } catch (e) { - if (typeof FS == "undefined" || !(e.name === "ErrnoError")) throw e; - return -e.errno; - } -} -function ___syscall_rmdir(path) { - try { - path = SYSCALLS.getStr(path); - FS.rmdir(path); - return 0; - } catch (e) { - if (typeof FS == "undefined" || !(e.name === "ErrnoError")) throw e; - return -e.errno; - } -} -function ___syscall_sendto(fd, message, length, flags, addr, addr_len) { - try { - var sock = getSocketFromFD(fd); - var dest = getSocketAddress(addr, addr_len, true); - if (!dest) { - return FS.write(sock.stream, HEAP8, message, length); - } - return sock.sock_ops.sendmsg(sock, HEAP8, message, length, dest.addr, dest.port); - } catch (e) { - if (typeof FS == "undefined" || !(e.name === "ErrnoError")) throw e; - return -e.errno; - } -} -function ___syscall_socket(domain, type, protocol) { - try { - var sock = SOCKFS.createSocket(domain, type, protocol); - return sock.stream.fd; - } catch (e) { - if (typeof FS == "undefined" || !(e.name === "ErrnoError")) throw e; - return -e.errno; - } -} -function ___syscall_stat64(path, buf) { - try { - path = SYSCALLS.getStr(path); - return SYSCALLS.doStat(FS.stat, path, buf); - } catch (e) { - if (typeof FS == "undefined" || !(e.name === "ErrnoError")) throw e; - return -e.errno; - } -} -function ___syscall_unlinkat(dirfd, path, flags) { - try { - path = SYSCALLS.getStr(path); - path = SYSCALLS.calculateAt(dirfd, path); - if (flags === 0) { - FS.unlink(path); - } else if (flags === 512) { - FS.rmdir(path); - } else { - abort("Invalid flags passed to unlinkat"); - } - return 0; - } catch (e) { - if (typeof FS == "undefined" || !(e.name === "ErrnoError")) throw e; - return -e.errno; - } -} -var nowIsMonotonic = 1; -var __emscripten_get_now_is_monotonic = function __emscripten_get_now_is_monotonic() { - return nowIsMonotonic; -}; -var __emscripten_lookup_name = function __emscripten_lookup_name(name) { - var nameString = UTF8ToString(name); - return inetPton4(DNS.lookup_name(nameString)); -}; -var __emscripten_system = function __emscripten_system(command) { - if (ENVIRONMENT_IS_NODE) { - if (!command) return 1; - var cmdstr = UTF8ToString(command); - if (!cmdstr.length) return 0; - var cp = require("child_process"); - var ret = cp.spawnSync(cmdstr, [], { - shell: true, - stdio: "inherit" - }); - var _W_EXITCODE = function _W_EXITCODE(ret, sig) { - return ret << 8 | sig; - }; - if (ret.status === null) { - var signalToNumber = function signalToNumber(sig) { - switch (sig) { - case "SIGHUP": - return 1; - case "SIGINT": - return 2; - case "SIGQUIT": - return 3; - case "SIGFPE": - return 8; - case "SIGKILL": - return 9; - case "SIGALRM": - return 14; - case "SIGTERM": - return 15; - } - return 2; - }; - return _W_EXITCODE(0, signalToNumber(ret.signal)); - } - return _W_EXITCODE(ret.status, 0); - } - if (!command) return 0; - return -52; -}; -var __emscripten_throw_longjmp = function __emscripten_throw_longjmp() { - throw Infinity; -}; -var convertI32PairToI53Checked = function convertI32PairToI53Checked(lo, hi) { - return hi + 2097152 >>> 0 < 4194305 - !!lo ? (lo >>> 0) + hi * 4294967296 : NaN; -}; -function __gmtime_js(time_low, time_high, tmPtr) { - var time = convertI32PairToI53Checked(time_low, time_high); - var date = new Date(time * 1e3); - HEAP32[tmPtr >> 2] = date.getUTCSeconds(); - HEAP32[tmPtr + 4 >> 2] = date.getUTCMinutes(); - HEAP32[tmPtr + 8 >> 2] = date.getUTCHours(); - HEAP32[tmPtr + 12 >> 2] = date.getUTCDate(); - HEAP32[tmPtr + 16 >> 2] = date.getUTCMonth(); - HEAP32[tmPtr + 20 >> 2] = date.getUTCFullYear() - 1900; - HEAP32[tmPtr + 24 >> 2] = date.getUTCDay(); - var start = Date.UTC(date.getUTCFullYear(), 0, 1, 0, 0, 0, 0); - var yday = (date.getTime() - start) / (1e3 * 60 * 60 * 24) | 0; - HEAP32[tmPtr + 28 >> 2] = yday; -} -var isLeapYear = function isLeapYear(year) { - return year % 4 === 0 && (year % 100 !== 0 || year % 400 === 0); -}; -var MONTH_DAYS_LEAP_CUMULATIVE = [0, 31, 60, 91, 121, 152, 182, 213, 244, 274, 305, 335]; -var MONTH_DAYS_REGULAR_CUMULATIVE = [0, 31, 59, 90, 120, 151, 181, 212, 243, 273, 304, 334]; -var ydayFromDate = function ydayFromDate(date) { - var leap = isLeapYear(date.getFullYear()); - var monthDaysCumulative = leap ? MONTH_DAYS_LEAP_CUMULATIVE : MONTH_DAYS_REGULAR_CUMULATIVE; - var yday = monthDaysCumulative[date.getMonth()] + date.getDate() - 1; - return yday; -}; -function __localtime_js(time_low, time_high, tmPtr) { - var time = convertI32PairToI53Checked(time_low, time_high); - var date = new Date(time * 1e3); - HEAP32[tmPtr >> 2] = date.getSeconds(); - HEAP32[tmPtr + 4 >> 2] = date.getMinutes(); - HEAP32[tmPtr + 8 >> 2] = date.getHours(); - HEAP32[tmPtr + 12 >> 2] = date.getDate(); - HEAP32[tmPtr + 16 >> 2] = date.getMonth(); - HEAP32[tmPtr + 20 >> 2] = date.getFullYear() - 1900; - HEAP32[tmPtr + 24 >> 2] = date.getDay(); - var yday = ydayFromDate(date) | 0; - HEAP32[tmPtr + 28 >> 2] = yday; - HEAP32[tmPtr + 36 >> 2] = -(date.getTimezoneOffset() * 60); - var start = new Date(date.getFullYear(), 0, 1); - var summerOffset = new Date(date.getFullYear(), 6, 1).getTimezoneOffset(); - var winterOffset = start.getTimezoneOffset(); - var dst = (summerOffset != winterOffset && date.getTimezoneOffset() == Math.min(winterOffset, summerOffset)) | 0; - HEAP32[tmPtr + 32 >> 2] = dst; -} -var __mktime_js = function __mktime_js(tmPtr) { - var ret = function () { - var date = new Date(HEAP32[tmPtr + 20 >> 2] + 1900, HEAP32[tmPtr + 16 >> 2], HEAP32[tmPtr + 12 >> 2], HEAP32[tmPtr + 8 >> 2], HEAP32[tmPtr + 4 >> 2], HEAP32[tmPtr >> 2], 0); - var dst = HEAP32[tmPtr + 32 >> 2]; - var guessedOffset = date.getTimezoneOffset(); - var start = new Date(date.getFullYear(), 0, 1); - var summerOffset = new Date(date.getFullYear(), 6, 1).getTimezoneOffset(); - var winterOffset = start.getTimezoneOffset(); - var dstOffset = Math.min(winterOffset, summerOffset); - if (dst < 0) { - HEAP32[tmPtr + 32 >> 2] = Number(summerOffset != winterOffset && dstOffset == guessedOffset); - } else if (dst > 0 != (dstOffset == guessedOffset)) { - var nonDstOffset = Math.max(winterOffset, summerOffset); - var trueOffset = dst > 0 ? dstOffset : nonDstOffset; - date.setTime(date.getTime() + (trueOffset - guessedOffset) * 6e4); - } - HEAP32[tmPtr + 24 >> 2] = date.getDay(); - var yday = ydayFromDate(date) | 0; - HEAP32[tmPtr + 28 >> 2] = yday; - HEAP32[tmPtr >> 2] = date.getSeconds(); - HEAP32[tmPtr + 4 >> 2] = date.getMinutes(); - HEAP32[tmPtr + 8 >> 2] = date.getHours(); - HEAP32[tmPtr + 12 >> 2] = date.getDate(); - HEAP32[tmPtr + 16 >> 2] = date.getMonth(); - HEAP32[tmPtr + 20 >> 2] = date.getYear(); - var timeMs = date.getTime(); - if (isNaN(timeMs)) { - return -1; - } - return timeMs / 1e3; - }(); - return _setTempRet((tempDouble = ret, +Math.abs(tempDouble) >= 1 ? tempDouble > 0 ? +Math.floor(tempDouble / 4294967296) >>> 0 : ~~+Math.ceil((tempDouble - +(~~tempDouble >>> 0)) / 4294967296) >>> 0 : 0)), ret >>> 0; -}; -var __tzset_js = function __tzset_js(timezone, daylight, std_name, dst_name) { - var currentYear = new Date().getFullYear(); - var winter = new Date(currentYear, 0, 1); - var summer = new Date(currentYear, 6, 1); - var winterOffset = winter.getTimezoneOffset(); - var summerOffset = summer.getTimezoneOffset(); - var stdTimezoneOffset = Math.max(winterOffset, summerOffset); - HEAPU32[timezone >> 2] = stdTimezoneOffset * 60; - HEAP32[daylight >> 2] = Number(winterOffset != summerOffset); - function extractZone(date) { - var match = date.toTimeString().match(/\(([A-Za-z ]+)\)$/); - return match ? match[1] : "GMT"; - } - var winterName = extractZone(winter); - var summerName = extractZone(summer); - if (summerOffset < winterOffset) { - stringToUTF8(winterName, std_name, 7); - stringToUTF8(summerName, dst_name, 7); - } else { - stringToUTF8(winterName, dst_name, 7); - stringToUTF8(summerName, std_name, 7); - } -}; -var _abort = function _abort() { - abort(""); -}; -var DefoldSoundDevice = { - TryResumeAudio: function TryResumeAudio() { - var audioCtx = window._dmJSDeviceShared.audioCtx; - if (audioCtx !== undefined && audioCtx.state != "running") { - audioCtx.resume(); - } - } -}; -function _dmDeviceJSFreeBufferSlots(id) { - return window._dmJSDeviceShared.devices[id]._freeBufferSlots(); -} -function _dmDeviceJSOpen(bufferCount) { - var shared = window._dmJSDeviceShared; - if (shared === undefined) { - shared = { - count: 0, - devices: {} - }; - window._dmJSDeviceShared = shared; - } - var id = shared.count++; - var device; - if (window.AudioContext || window.webkitAudioContext) { - if (shared.audioCtx === undefined) { - var audioCtxCtor = window.AudioContext || window.webkitAudioContext; - try { - shared.audioCtx = new audioCtxCtor({ - sampleRate: 44100 - }); - } catch (e) { - shared.audioCtx = new audioCtxCtor(); - } - } - device = { - sampleRate: shared.audioCtx.sampleRate, - bufferedTo: 0, - bufferDuration: 0, - creatingTime: Date.now() / 1e3, - lastTimeInSuspendedState: Date.now() / 1e3, - suspendedBufferedTo: 0, - _isContextRunning: function _isContextRunning() { - var audioCtx = window._dmJSDeviceShared.audioCtx; - return audioCtx !== undefined && audioCtx.state == "running"; - }, - _getCurrentSuspendedTime: function _getCurrentSuspendedTime() { - if (!this._isContextRunning()) { - this.lastTimeInSuspendedState = Date.now() / 1e3; - return this.lastTimeInSuspendedState - this.creatingTime; - } - return 0; - }, - _queue: function _queue(samples, sample_count) { - var len = sample_count / this.sampleRate; - this.bufferDuration = len; - if (!this._isContextRunning()) { - this.suspendedBufferedTo += len; - return; - } - var buf = shared.audioCtx.createBuffer(2, sample_count, this.sampleRate); - var c0 = buf.getChannelData(0); - var c1 = buf.getChannelData(1); - for (var i = 0; i < sample_count; i++) { - c0[i] = getValue(samples + 4 * i, "i16") / 32768; - c1[i] = getValue(samples + 4 * i + 2, "i16") / 32768; - } - var source = shared.audioCtx.createBufferSource(); - source.buffer = buf; - source.connect(shared.audioCtx.destination); - var t = shared.audioCtx.currentTime; - if (this.bufferedTo <= t) { - source.start(t); - this.bufferedTo = t + len; - } else { - source.start(this.bufferedTo); - this.bufferedTo = this.bufferedTo + len; - } - }, - _freeBufferSlots: function _freeBufferSlots() { - var ahead = 0; - if (this._isContextRunning()) { - if (this.bufferDuration == 0) return 1; - ahead = this.bufferedTo - shared.audioCtx.currentTime; - } else { - ahead = this.suspendedBufferedTo - this._getCurrentSuspendedTime(); - } - var inqueue = Math.ceil(ahead / this.bufferDuration); - if (inqueue < 0) { - inqueue = 0; - } - var left = bufferCount - inqueue; - if (left < 0) { - return 0; - } - return left; - } - }; - } - if (device != null) { - shared.audioCtx.onstatechanged = function () { - if (device._isContextRunning()) { - device.timeInSuspendedState = Date.now() / 1e3; - } else { - device.creatingTime = Date.now() / 1e3; - device.lastTimeInSuspendedState = Date.now() / 1e3; - device.suspendedBufferedTo = 0; - } - }; - shared.devices[id] = device; - return id; - } - return -1; -} -function _dmDeviceJSQueue(id, samples, sample_count) { - window._dmJSDeviceShared.devices[id]._queue(samples, sample_count); -} -function _dmGetDeviceSampleRate(id) { - return window._dmJSDeviceShared.devices[id].sampleRate; -} -var wasmTableMirror = []; -var wasmTable; -var getWasmTableEntry = function getWasmTableEntry(funcPtr) { - var func = wasmTableMirror[funcPtr]; - if (!func) { - if (funcPtr >= wasmTableMirror.length) wasmTableMirror.length = funcPtr + 1; - wasmTableMirror[funcPtr] = func = wasmTable.get(funcPtr); - } - return func; -}; -function _dmScriptHttpRequestAsync(method, url, headers, arg, onload, onerror, onprogress, send_data, send_data_length, timeout) { - var xhr = new XMLHttpRequest(); - function listener() { - var resp_headers = xhr.getAllResponseHeaders(); - resp_headers = resp_headers.replace(new RegExp("\r", "g"), ""); - resp_headers += "\n"; - if (xhr.status != 0) { - var ab = new Uint8Array(xhr.response); - var b = _malloc(ab.length * ab.BYTES_PER_ELEMENT); - HEAPU8.set(ab, b); - var resp_headers_buffer = stringToNewUTF8(resp_headers); - getWasmTableEntry(onload)(arg, xhr.status, b, ab.length, resp_headers_buffer); - _free(resp_headers_buffer); - _free(b); - } else { - getWasmTableEntry(onerror)(arg, xhr.status); - } - } - xhr.onload = listener; - xhr.onerror = listener; - xhr.ontimeout = listener; - xhr.onprogress = function (progress_event) { - if (onprogress != 0) { - getWasmTableEntry(onprogress)(arg, progress_event.loaded, progress_event.total); - } - }; - xhr.open(UTF8ToString(method), UTF8ToString(url), true); - xhr.responseType = "arraybuffer"; - if (timeout > 0) { - xhr.timeout = timeout / 1e3; - } - var headersArray = UTF8ToString(headers).split("\n"); - for (var i = 0; i < headersArray.length; i++) { - if (headersArray[i].trim() != "") { - var a = headersArray[i].split(":"); - xhr.setRequestHeader(a[0], a[1]); - } - } - if (send_data_length > 0) { - xhr.send(HEAPU8.subarray(send_data, send_data + send_data_length)); - } else { - xhr.send(); - } -} -var DMSYS = { - _folder: "/data", - _cstr: null, - GetUserPersistentDataRoot: function GetUserPersistentDataRoot() { - if (typeof window !== "undefined") return DMSYS._folder;else return ""; - }, - PumpMessageQueue: function PumpMessageQueue() { - if (typeof window === "undefined") { - var uvrun = require("uvrun"); - uvrun.runOnce(); - } - } -}; -function _dmSysGetApplicationPath() { - var path = location.href.substring(0, location.href.lastIndexOf("/")); - var buffer = stringToNewUTF8(path); - return buffer; -} -function _dmSysGetUserAgent() { - var useragent = navigator.userAgent; - var buffer = stringToNewUTF8(useragent); - return buffer; -} -function _dmSysGetUserPersistentDataRoot() { - if (null == DMSYS._cstr) { - var str = DMSYS.GetUserPersistentDataRoot(); - DMSYS._cstr = stringToNewUTF8(str); - } - return DMSYS._cstr; -} -function _dmSysGetUserPreferredLanguage(defaultlang) { - var jsdefault = UTF8ToString(defaultlang); - var preferred = navigator == undefined ? jsdefault : navigator.languages ? navigator.languages[0] || jsdefault : navigator.language || navigator.userLanguage || navigator.browserLanguage || navigator.systemLanguage || jsdefault; - var buffer = stringToNewUTF8(preferred); - return buffer; -} -var JSEvents = { - removeAllEventListeners: function removeAllEventListeners() { - while (JSEvents.eventHandlers.length) { - JSEvents._removeHandler(JSEvents.eventHandlers.length - 1); - } - JSEvents.deferredCalls = []; - }, - inEventHandler: 0, - deferredCalls: [], - deferCall: function deferCall(targetFunction, precedence, argsList) { - function arraysHaveEqualContent(arrA, arrB) { - if (arrA.length != arrB.length) return false; - for (var i in arrA) { - if (arrA[i] != arrB[i]) return false; - } - return true; - } - for (var i in JSEvents.deferredCalls) { - var call = JSEvents.deferredCalls[i]; - if (call.targetFunction == targetFunction && arraysHaveEqualContent(call.argsList, argsList)) { - return; - } - } - JSEvents.deferredCalls.push({ - targetFunction: targetFunction, - precedence: precedence, - argsList: argsList - }); - JSEvents.deferredCalls.sort(function (x, y) { - return x.precedence < y.precedence; - }); - }, - removeDeferredCalls: function removeDeferredCalls(targetFunction) { - for (var i = 0; i < JSEvents.deferredCalls.length; ++i) { - if (JSEvents.deferredCalls[i].targetFunction == targetFunction) { - JSEvents.deferredCalls.splice(i, 1); - --i; - } - } - }, - canPerformEventHandlerRequests: function canPerformEventHandlerRequests() { - if (navigator.userActivation) { - return navigator.userActivation.isActive; - } - return JSEvents.inEventHandler && JSEvents.currentEventHandler.allowsDeferredCalls; - }, - runDeferredCalls: function runDeferredCalls() { - if (!JSEvents.canPerformEventHandlerRequests()) { - return; - } - for (var i = 0; i < JSEvents.deferredCalls.length; ++i) { - var _call; - var call = JSEvents.deferredCalls[i]; - JSEvents.deferredCalls.splice(i, 1); - --i; - (_call = call).targetFunction.apply(_call, _toConsumableArray(call.argsList)); - } - }, - eventHandlers: [], - removeAllHandlersOnTarget: function removeAllHandlersOnTarget(target, eventTypeString) { - for (var i = 0; i < JSEvents.eventHandlers.length; ++i) { - if (JSEvents.eventHandlers[i].target == target && (!eventTypeString || eventTypeString == JSEvents.eventHandlers[i].eventTypeString)) { - JSEvents._removeHandler(i--); - } - } - }, - _removeHandler: function _removeHandler(i) { - var h = JSEvents.eventHandlers[i]; - h.target.removeEventListener(h.eventTypeString, h.eventListenerFunc, h.useCapture); - JSEvents.eventHandlers.splice(i, 1); - }, - registerOrRemoveHandler: function registerOrRemoveHandler(eventHandler) { - if (!eventHandler.target) { - return -4; - } - if (eventHandler.callbackfunc) { - eventHandler.eventListenerFunc = function (event) { - ++JSEvents.inEventHandler; - JSEvents.currentEventHandler = eventHandler; - JSEvents.runDeferredCalls(); - eventHandler.handlerFunc(event); - JSEvents.runDeferredCalls(); - --JSEvents.inEventHandler; - }; - eventHandler.target.addEventListener(eventHandler.eventTypeString, eventHandler.eventListenerFunc, eventHandler.useCapture); - JSEvents.eventHandlers.push(eventHandler); - } else { - for (var i = 0; i < JSEvents.eventHandlers.length; ++i) { - if (JSEvents.eventHandlers[i].target == eventHandler.target && JSEvents.eventHandlers[i].eventTypeString == eventHandler.eventTypeString) { - JSEvents._removeHandler(i--); - } - } - } - return 0; - }, - getNodeNameForTarget: function getNodeNameForTarget(target) { - if (!target) return ""; - if (target == window) return "#window"; - if (target == screen) return "#screen"; - return (target === null || target === void 0 ? void 0 : target.nodeName) || ""; - }, - fullscreenEnabled: function fullscreenEnabled() { - return document.fullscreenEnabled || document.mozFullScreenEnabled || document.webkitFullscreenEnabled; - } -}; -function _dmSysOpenURL(url, target) { - var jsurl = UTF8ToString(url); - var jstarget = UTF8ToString(target); - if (jstarget == 0) { - jstarget = "_self"; - } - if (window.open(jsurl, jstarget) == null) { - window.location = jsurl; - } - return true; -} -var readEmAsmArgsArray = []; -var readEmAsmArgs = function readEmAsmArgs(sigPtr, buf) { - readEmAsmArgsArray.length = 0; - var ch; - while (ch = HEAPU8[sigPtr++]) { - var wide = ch != 105; - wide &= ch != 112; - buf += wide && buf % 8 ? 4 : 0; - readEmAsmArgsArray.push(ch == 112 ? HEAPU32[buf >> 2] : ch == 105 ? HEAP32[buf >> 2] : HEAPF64[buf >> 3]); - buf += wide ? 8 : 4; - } - return readEmAsmArgsArray; -}; -var runEmAsmFunction = function runEmAsmFunction(code, sigPtr, argbuf) { - var args = readEmAsmArgs(sigPtr, argbuf); - return ASM_CONSTS[code].apply(ASM_CONSTS, _toConsumableArray(args)); -}; -var _emscripten_asm_const_int = function _emscripten_asm_const_int(code, sigPtr, argbuf) { - return runEmAsmFunction(code, sigPtr, argbuf); -}; -var _emscripten_set_main_loop_timing = function _emscripten_set_main_loop_timing(mode, value) { - Browser.mainLoop.timingMode = mode; - Browser.mainLoop.timingValue = value; - if (!Browser.mainLoop.func) { - return 1; - } - if (!Browser.mainLoop.running) { - Browser.mainLoop.running = true; - } - if (mode == 0) { - Browser.mainLoop.scheduler = function Browser_mainLoop_scheduler_setTimeout() { - var timeUntilNextTick = Math.max(0, Browser.mainLoop.tickStartTime + value - _emscripten_get_now()) | 0; - setTimeout(Browser.mainLoop.runner, timeUntilNextTick); - }; - Browser.mainLoop.method = "timeout"; - } else if (mode == 1) { - Browser.mainLoop.scheduler = function Browser_mainLoop_scheduler_rAF() { - Browser.requestAnimationFrame(Browser.mainLoop.runner); - }; - Browser.mainLoop.method = "rAF"; - } else if (mode == 2) { - if (typeof Browser.setImmediate == "undefined") { - if (typeof setImmediate == "undefined") { - var setImmediates = []; - var emscriptenMainLoopMessageId = "setimmediate"; - var Browser_setImmediate_messageHandler = function Browser_setImmediate_messageHandler(event) { - if (event.data === emscriptenMainLoopMessageId || event.data.target === emscriptenMainLoopMessageId) { - event.stopPropagation(); - setImmediates.shift()(); - } - }; - addEventListener("message", Browser_setImmediate_messageHandler, true); - Browser.setImmediate = function Browser_emulated_setImmediate(func) { - setImmediates.push(func); - if (ENVIRONMENT_IS_WORKER) { - if (Module["setImmediates"] === undefined) Module["setImmediates"] = []; - Module["setImmediates"].push(func); - postMessage({ - target: emscriptenMainLoopMessageId - }); - } else postMessage(emscriptenMainLoopMessageId, "*"); - }; - } else { - Browser.setImmediate = setImmediate; - } - } - Browser.mainLoop.scheduler = function Browser_mainLoop_scheduler_setImmediate() { - Browser.setImmediate(Browser.mainLoop.runner); - }; - Browser.mainLoop.method = "immediate"; - } - return 0; -}; -var _emscripten_get_now; -_emscripten_get_now = function _emscripten_get_now() { - return performance.now(); -}; -var setMainLoop = function setMainLoop(browserIterationFunc, fps, simulateInfiniteLoop, arg, noSetTiming) { - Browser.mainLoop.func = browserIterationFunc; - Browser.mainLoop.arg = arg; - var thisMainLoopId = Browser.mainLoop.currentlyRunningMainloop; - function checkIsRunning() { - if (thisMainLoopId < Browser.mainLoop.currentlyRunningMainloop) { - return false; - } - return true; - } - Browser.mainLoop.running = false; - Browser.mainLoop.runner = function Browser_mainLoop_runner() { - var _SDL$audio, _SDL$audio$queueNewAu; - if (ABORT) return; - if (Browser.mainLoop.queue.length > 0) { - var start = Date.now(); - var blocker = Browser.mainLoop.queue.shift(); - blocker.func(blocker.arg); - if (Browser.mainLoop.remainingBlockers) { - var remaining = Browser.mainLoop.remainingBlockers; - var next = remaining % 1 == 0 ? remaining - 1 : Math.floor(remaining); - if (blocker.counted) { - Browser.mainLoop.remainingBlockers = next; - } else { - next = next + .5; - Browser.mainLoop.remainingBlockers = (8 * remaining + next) / 9; - } - } - Browser.mainLoop.updateStatus(); - if (!checkIsRunning()) return; - setTimeout(Browser.mainLoop.runner, 0); - return; - } - if (!checkIsRunning()) return; - Browser.mainLoop.currentFrameNumber = Browser.mainLoop.currentFrameNumber + 1 | 0; - if (Browser.mainLoop.timingMode == 1 && Browser.mainLoop.timingValue > 1 && Browser.mainLoop.currentFrameNumber % Browser.mainLoop.timingValue != 0) { - Browser.mainLoop.scheduler(); - return; - } else if (Browser.mainLoop.timingMode == 0) { - Browser.mainLoop.tickStartTime = _emscripten_get_now(); - } - Browser.mainLoop.runIter(browserIterationFunc); - if (!checkIsRunning()) return; - if ((typeof SDL === "undefined" ? "undefined" : _typeof(SDL)) == "object") (_SDL$audio = SDL.audio) === null || _SDL$audio === void 0 || (_SDL$audio$queueNewAu = _SDL$audio.queueNewAudioData) === null || _SDL$audio$queueNewAu === void 0 || _SDL$audio$queueNewAu.call(_SDL$audio); - Browser.mainLoop.scheduler(); - }; - if (!noSetTiming) { - if (fps && fps > 0) { - _emscripten_set_main_loop_timing(0, 1e3 / fps); - } else { - _emscripten_set_main_loop_timing(1, 1); - } - Browser.mainLoop.scheduler(); - } - if (simulateInfiniteLoop) { - throw "unwind"; - } -}; -var handleException = function handleException(e) { - if (e instanceof ExitStatus || e == "unwind") { - return EXITSTATUS; - } - quit_(1, e); -}; -var runtimeKeepaliveCounter = 0; -var keepRuntimeAlive = function keepRuntimeAlive() { - return noExitRuntime || runtimeKeepaliveCounter > 0; -}; -var _proc_exit = function _proc_exit(code) { - EXITSTATUS = code; - if (!keepRuntimeAlive()) { - var _Module$onExit; - (_Module$onExit = Module["onExit"]) === null || _Module$onExit === void 0 || _Module$onExit.call(Module, code); - ABORT = true; - } - quit_(code, new ExitStatus(code)); -}; -var exitJS = function exitJS(status, implicit) { - EXITSTATUS = status; - _proc_exit(status); -}; -var _exit = exitJS; -var maybeExit = function maybeExit() { - if (!keepRuntimeAlive()) { - try { - _exit(EXITSTATUS); - } catch (e) { - handleException(e); - } - } -}; -var callUserCallback = function callUserCallback(func) { - if (ABORT) { - return; - } - try { - func(); - maybeExit(); - } catch (e) { - handleException(e); - } -}; -var _safeSetTimeout = function safeSetTimeout(func, timeout) { - return setTimeout(function () { - callUserCallback(func); - }, timeout); -}; -var warnOnce = function warnOnce(text) { - warnOnce.shown || (warnOnce.shown = {}); - if (!warnOnce.shown[text]) { - warnOnce.shown[text] = 1; - if (ENVIRONMENT_IS_NODE) text = "warning: " + text; - err(text); - } -}; -var Browser = { - mainLoop: { - running: false, - scheduler: null, - method: "", - currentlyRunningMainloop: 0, - func: null, - arg: 0, - timingMode: 0, - timingValue: 0, - currentFrameNumber: 0, - queue: [], - pause: function pause() { - Browser.mainLoop.scheduler = null; - Browser.mainLoop.currentlyRunningMainloop++; - }, - resume: function resume() { - Browser.mainLoop.currentlyRunningMainloop++; - var timingMode = Browser.mainLoop.timingMode; - var timingValue = Browser.mainLoop.timingValue; - var func = Browser.mainLoop.func; - Browser.mainLoop.func = null; - setMainLoop(func, 0, false, Browser.mainLoop.arg, true); - _emscripten_set_main_loop_timing(timingMode, timingValue); - Browser.mainLoop.scheduler(); - }, - updateStatus: function updateStatus() { - if (Module["setStatus"]) { - var message = Module["statusMessage"] || "Please wait..."; - var remaining = Browser.mainLoop.remainingBlockers; - var expected = Browser.mainLoop.expectedBlockers; - if (remaining) { - if (remaining < expected) { - Module["setStatus"]("{message} ({expected - remaining}/{expected})"); - } else { - Module["setStatus"](message); - } - } else { - Module["setStatus"](""); - } - } - }, - runIter: function runIter(func) { - var _Module$postMainLoop; - if (ABORT) return; - if (Module["preMainLoop"]) { - var preRet = Module["preMainLoop"](); - if (preRet === false) { - return; - } - } - callUserCallback(func); - (_Module$postMainLoop = Module["postMainLoop"]) === null || _Module$postMainLoop === void 0 || _Module$postMainLoop.call(Module); - } - }, - isFullscreen: false, - pointerLock: false, - moduleContextCreatedCallbacks: [], - workers: [], - init: function init() { - if (Browser.initted) return; - Browser.initted = true; - var imagePlugin = {}; - imagePlugin["canHandle"] = function imagePlugin_canHandle(name) { - return !Module.noImageDecoding && /\.(jpg|jpeg|png|bmp)$/i.test(name); - }; - imagePlugin["handle"] = function imagePlugin_handle(byteArray, name, onload, onerror) { - var b = new Blob([byteArray], { - type: Browser.getMimetype(name) - }); - if (b.size !== byteArray.length) { - b = new Blob([new Uint8Array(byteArray).buffer], { - type: Browser.getMimetype(name) - }); - } - var url = URL.createObjectURL(b); - var img = new Image(); - img.onload = function () { - var canvas = document.createElement("canvas"); - canvas.width = img.width; - canvas.height = img.height; - var ctx = canvas.getContext("2d"); - ctx.drawImage(img, 0, 0); - preloadedImages[name] = canvas; - URL.revokeObjectURL(url); - onload === null || onload === void 0 || onload(byteArray); - }; - img.onerror = function (event) { - err("Image ".concat(url, " could not be decoded")); - onerror === null || onerror === void 0 || onerror(); - }; - img.src = url; - }; - preloadPlugins.push(imagePlugin); - var audioPlugin = {}; - audioPlugin["canHandle"] = function audioPlugin_canHandle(name) { - return !Module.noAudioDecoding && name.substr(-4) in { - ".ogg": 1, - ".wav": 1, - ".mp3": 1 - }; - }; - audioPlugin["handle"] = function audioPlugin_handle(byteArray, name, onload, onerror) { - var done = false; - function finish(audio) { - if (done) return; - done = true; - preloadedAudios[name] = audio; - onload === null || onload === void 0 || onload(byteArray); - } - var b = new Blob([byteArray], { - type: Browser.getMimetype(name) - }); - var url = URL.createObjectURL(b); - var audio = new Audio(); - audio.addEventListener("canplaythrough", function () { - return finish(audio); - }, false); - audio.onerror = function audio_onerror(event) { - if (done) return; - err("warning: browser could not fully decode audio ".concat(name, ", trying slower base64 approach")); - function encode64(data) { - var BASE = "ABCDEFGHIJKLMNOPQRSTUVWXYZabcdefghijklmnopqrstuvwxyz0123456789+/"; - var PAD = "="; - var ret = ""; - var leftchar = 0; - var leftbits = 0; - for (var i = 0; i < data.length; i++) { - leftchar = leftchar << 8 | data[i]; - leftbits += 8; - while (leftbits >= 6) { - var curr = leftchar >> leftbits - 6 & 63; - leftbits -= 6; - ret += BASE[curr]; - } - } - if (leftbits == 2) { - ret += BASE[(leftchar & 3) << 4]; - ret += PAD + PAD; - } else if (leftbits == 4) { - ret += BASE[(leftchar & 15) << 2]; - ret += PAD; - } - return ret; - } - audio.src = "data:audio/x-" + name.substr(-3) + ";base64," + encode64(byteArray); - finish(audio); - }; - audio.src = url; - _safeSetTimeout(function () { - finish(audio); - }, 1e4); - }; - preloadPlugins.push(audioPlugin); - function pointerLockChange() { - Browser.pointerLock = document["pointerLockElement"] === Module["canvas"] || document["mozPointerLockElement"] === Module["canvas"] || document["webkitPointerLockElement"] === Module["canvas"] || document["msPointerLockElement"] === Module["canvas"]; - } - var canvas = Module["canvas"]; - if (canvas) { - canvas.requestPointerLock = canvas["requestPointerLock"] || canvas["mozRequestPointerLock"] || canvas["webkitRequestPointerLock"] || canvas["msRequestPointerLock"] || function () {}; - canvas.exitPointerLock = document["exitPointerLock"] || document["mozExitPointerLock"] || document["webkitExitPointerLock"] || document["msExitPointerLock"] || function () {}; - canvas.exitPointerLock = canvas.exitPointerLock.bind(document); - document.addEventListener("pointerlockchange", pointerLockChange, false); - document.addEventListener("mozpointerlockchange", pointerLockChange, false); - document.addEventListener("webkitpointerlockchange", pointerLockChange, false); - document.addEventListener("mspointerlockchange", pointerLockChange, false); - if (Module["elementPointerLock"]) { - canvas.addEventListener("click", function (ev) { - if (!Browser.pointerLock && Module["canvas"].requestPointerLock) { - Module["canvas"].requestPointerLock(); - ev.preventDefault(); - } - }, false); - } - } - }, - createContext: function createContext(canvas, useWebGL, setInModule, webGLContextAttributes) { - if (useWebGL && Module.ctx && canvas == Module.canvas) return Module.ctx; - var ctx; - var contextHandle; - if (useWebGL) { - var contextAttributes = { - antialias: false, - alpha: false, - majorVersion: typeof WebGL2RenderingContext != "undefined" ? 2 : 1 - }; - if (webGLContextAttributes) { - for (var attribute in webGLContextAttributes) { - contextAttributes[attribute] = webGLContextAttributes[attribute]; - } - } - if (typeof GL != "undefined") { - contextHandle = GL.createContext(canvas, contextAttributes); - if (contextHandle) { - ctx = GL.getContext(contextHandle).GLctx; - } - } - } else { - ctx = canvas.getContext("2d"); - } - if (!ctx) return null; - if (setInModule) { - Module.ctx = ctx; - if (useWebGL) GL.makeContextCurrent(contextHandle); - Module.useWebGL = useWebGL; - Browser.moduleContextCreatedCallbacks.forEach(function (callback) { - return callback(); - }); - Browser.init(); - } - return ctx; - }, - destroyContext: function destroyContext(canvas, useWebGL, setInModule) {}, - fullscreenHandlersInstalled: false, - lockPointer: undefined, - resizeCanvas: undefined, - requestFullscreen: function requestFullscreen(lockPointer, resizeCanvas) { - Browser.lockPointer = lockPointer; - Browser.resizeCanvas = resizeCanvas; - if (typeof Browser.lockPointer == "undefined") Browser.lockPointer = true; - if (typeof Browser.resizeCanvas == "undefined") Browser.resizeCanvas = false; - var canvas = Module["canvas"]; - function fullscreenChange() { - var _Module$onFullScreen, _Module$onFullscreen; - Browser.isFullscreen = false; - var canvasContainer = canvas.parentNode; - if ((document["fullscreenElement"] || document["mozFullScreenElement"] || document["msFullscreenElement"] || document["webkitFullscreenElement"] || document["webkitCurrentFullScreenElement"]) === canvasContainer) { - canvas.exitFullscreen = Browser.exitFullscreen; - if (Browser.lockPointer) canvas.requestPointerLock(); - Browser.isFullscreen = true; - if (Browser.resizeCanvas) { - Browser.setFullscreenCanvasSize(); - } else { - Browser.updateCanvasDimensions(canvas); - } - } else { - canvasContainer.parentNode.insertBefore(canvas, canvasContainer); - canvasContainer.parentNode.removeChild(canvasContainer); - if (Browser.resizeCanvas) { - Browser.setWindowedCanvasSize(); - } else { - Browser.updateCanvasDimensions(canvas); - } - } - (_Module$onFullScreen = Module["onFullScreen"]) === null || _Module$onFullScreen === void 0 || _Module$onFullScreen.call(Module, Browser.isFullscreen); - (_Module$onFullscreen = Module["onFullscreen"]) === null || _Module$onFullscreen === void 0 || _Module$onFullscreen.call(Module, Browser.isFullscreen); - } - if (!Browser.fullscreenHandlersInstalled) { - Browser.fullscreenHandlersInstalled = true; - document.addEventListener("fullscreenchange", fullscreenChange, false); - document.addEventListener("mozfullscreenchange", fullscreenChange, false); - document.addEventListener("webkitfullscreenchange", fullscreenChange, false); - document.addEventListener("MSFullscreenChange", fullscreenChange, false); - } - var canvasContainer = document.createElement("div"); - canvas.parentNode.insertBefore(canvasContainer, canvas); - canvasContainer.appendChild(canvas); - canvasContainer.requestFullscreen = canvasContainer["requestFullscreen"] || canvasContainer["mozRequestFullScreen"] || canvasContainer["msRequestFullscreen"] || (canvasContainer["webkitRequestFullscreen"] ? function () { - return canvasContainer["webkitRequestFullscreen"](Element["ALLOW_KEYBOARD_INPUT"]); - } : null) || (canvasContainer["webkitRequestFullScreen"] ? function () { - return canvasContainer["webkitRequestFullScreen"](Element["ALLOW_KEYBOARD_INPUT"]); - } : null); - canvasContainer.requestFullscreen(); - }, - exitFullscreen: function exitFullscreen() { - if (!Browser.isFullscreen) { - return false; - } - var CFS = document["exitFullscreen"] || document["cancelFullScreen"] || document["mozCancelFullScreen"] || document["msExitFullscreen"] || document["webkitCancelFullScreen"] || function () {}; - CFS.apply(document, []); - return true; - }, - nextRAF: 0, - fakeRequestAnimationFrame: function fakeRequestAnimationFrame(func) { - var now = Date.now(); - if (Browser.nextRAF === 0) { - Browser.nextRAF = now + 1e3 / 60; - } else { - while (now + 2 >= Browser.nextRAF) { - Browser.nextRAF += 1e3 / 60; - } - } - var delay = Math.max(Browser.nextRAF - now, 0); - setTimeout(func, delay); - }, - requestAnimationFrame: function (_requestAnimationFrame) { - function requestAnimationFrame(_x) { - return _requestAnimationFrame.apply(this, arguments); - } - requestAnimationFrame.toString = function () { - return _requestAnimationFrame.toString(); - }; - return requestAnimationFrame; - }(function (func) { - if (typeof requestAnimationFrame == "function") { - requestAnimationFrame(func); - return; - } - var RAF = Browser.fakeRequestAnimationFrame; - RAF(func); - }), - safeSetTimeout: function safeSetTimeout(func, timeout) { - return _safeSetTimeout(func, timeout); - }, - safeRequestAnimationFrame: function safeRequestAnimationFrame(func) { - return Browser.requestAnimationFrame(function () { - callUserCallback(func); - }); - }, - getMimetype: function getMimetype(name) { - return { - "jpg": "image/jpeg", - "jpeg": "image/jpeg", - "png": "image/png", - "bmp": "image/bmp", - "ogg": "audio/ogg", - "wav": "audio/wav", - "mp3": "audio/mpeg" - }[name.substr(name.lastIndexOf(".") + 1)]; - }, - getUserMedia: function getUserMedia(func) { - var _window; - (_window = window).getUserMedia || (_window.getUserMedia = navigator["getUserMedia"] || navigator["mozGetUserMedia"]); - window.getUserMedia(func); - }, - getMovementX: function getMovementX(event) { - return event["movementX"] || event["mozMovementX"] || event["webkitMovementX"] || 0; - }, - getMovementY: function getMovementY(event) { - return event["movementY"] || event["mozMovementY"] || event["webkitMovementY"] || 0; - }, - getMouseWheelDelta: function getMouseWheelDelta(event) { - var delta = 0; - switch (event.type) { - case "DOMMouseScroll": - delta = event.detail / 3; - break; - case "mousewheel": - delta = event.wheelDelta / 120; - break; - case "wheel": - delta = event.deltaY; - switch (event.deltaMode) { - case 0: - delta /= 100; - break; - case 1: - delta /= 3; - break; - case 2: - delta *= 80; - break; - default: - throw "unrecognized mouse wheel delta mode: " + event.deltaMode; - } - break; - default: - throw "unrecognized mouse wheel event: " + event.type; - } - return delta; - }, - mouseX: 0, - mouseY: 0, - mouseMovementX: 0, - mouseMovementY: 0, - touches: {}, - lastTouches: {}, - calculateMouseCoords: function calculateMouseCoords(pageX, pageY) { - var rect = Module["canvas"].getBoundingClientRect(); - var cw = Module["canvas"].width; - var ch = Module["canvas"].height; - var scrollX = typeof window.scrollX != "undefined" ? window.scrollX : window.pageXOffset; - var scrollY = typeof window.scrollY != "undefined" ? window.scrollY : window.pageYOffset; - var adjustedX = pageX - (scrollX + rect.left); - var adjustedY = pageY - (scrollY + rect.top); - adjustedX = adjustedX * (cw / rect.width); - adjustedY = adjustedY * (ch / rect.height); - return { - x: adjustedX, - y: adjustedY - }; - }, - setMouseCoords: function setMouseCoords(pageX, pageY) { - var _Browser$calculateMou = Browser.calculateMouseCoords(pageX, pageY), - x = _Browser$calculateMou.x, - y = _Browser$calculateMou.y; - Browser.mouseMovementX = x - Browser.mouseX; - Browser.mouseMovementY = y - Browser.mouseY; - Browser.mouseX = x; - Browser.mouseY = y; - }, - calculateMouseEvent: function calculateMouseEvent(event) { - if (Browser.pointerLock) { - if (event.type != "mousemove" && "mozMovementX" in event) { - Browser.mouseMovementX = Browser.mouseMovementY = 0; - } else { - Browser.mouseMovementX = Browser.getMovementX(event); - Browser.mouseMovementY = Browser.getMovementY(event); - } - if (typeof SDL != "undefined") { - Browser.mouseX = SDL.mouseX + Browser.mouseMovementX; - Browser.mouseY = SDL.mouseY + Browser.mouseMovementY; - } else { - Browser.mouseX += Browser.mouseMovementX; - Browser.mouseY += Browser.mouseMovementY; - } - } else { - if (event.type === "touchstart" || event.type === "touchend" || event.type === "touchmove") { - var touch = event.touch; - if (touch === undefined) { - return; - } - var coords = Browser.calculateMouseCoords(touch.pageX, touch.pageY); - if (event.type === "touchstart") { - Browser.lastTouches[touch.identifier] = coords; - Browser.touches[touch.identifier] = coords; - } else if (event.type === "touchend" || event.type === "touchmove") { - var last = Browser.touches[touch.identifier]; - last || (last = coords); - Browser.lastTouches[touch.identifier] = last; - Browser.touches[touch.identifier] = coords; - } - return; - } - Browser.setMouseCoords(event.pageX, event.pageY); - } - }, - resizeListeners: [], - updateResizeListeners: function updateResizeListeners() { - var canvas = Module["canvas"]; - Browser.resizeListeners.forEach(function (listener) { - return listener(canvas.width, canvas.height); - }); - }, - setCanvasSize: function setCanvasSize(width, height, noUpdates) { - var canvas = Module["canvas"]; - Browser.updateCanvasDimensions(canvas, width, height); - if (!noUpdates) Browser.updateResizeListeners(); - }, - windowedWidth: 0, - windowedHeight: 0, - setFullscreenCanvasSize: function setFullscreenCanvasSize() { - if (typeof SDL != "undefined") { - var flags = HEAPU32[SDL.screen >> 2]; - flags = flags | 8388608; - HEAP32[SDL.screen >> 2] = flags; - } - Browser.updateCanvasDimensions(Module["canvas"]); - Browser.updateResizeListeners(); - }, - setWindowedCanvasSize: function setWindowedCanvasSize() { - if (typeof SDL != "undefined") { - var flags = HEAPU32[SDL.screen >> 2]; - flags = flags & ~8388608; - HEAP32[SDL.screen >> 2] = flags; - } - Browser.updateCanvasDimensions(Module["canvas"]); - Browser.updateResizeListeners(); - }, - updateCanvasDimensions: function updateCanvasDimensions(canvas, wNative, hNative) { - if (wNative && hNative) { - canvas.widthNative = wNative; - canvas.heightNative = hNative; - } else { - wNative = canvas.widthNative; - hNative = canvas.heightNative; - } - var w = wNative; - var h = hNative; - if (Module["forcedAspectRatio"] && Module["forcedAspectRatio"] > 0) { - if (w / h < Module["forcedAspectRatio"]) { - w = Math.round(h * Module["forcedAspectRatio"]); - } else { - h = Math.round(w / Module["forcedAspectRatio"]); - } - } - if ((document["fullscreenElement"] || document["mozFullScreenElement"] || document["msFullscreenElement"] || document["webkitFullscreenElement"] || document["webkitCurrentFullScreenElement"]) === canvas.parentNode && typeof screen != "undefined") { - var factor = Math.min(screen.width / w, screen.height / h); - w = Math.round(w * factor); - h = Math.round(h * factor); - } - if (Browser.resizeCanvas) { - if (canvas.width != w) canvas.width = w; - if (canvas.height != h) canvas.height = h; - if (typeof canvas.style != "undefined") { - canvas.style.removeProperty("width"); - canvas.style.removeProperty("height"); - } - } else { - if (canvas.width != wNative) canvas.width = wNative; - if (canvas.height != hNative) canvas.height = hNative; - if (typeof canvas.style != "undefined") { - if (w != wNative || h != hNative) { - canvas.style.setProperty("width", w + "px", "important"); - canvas.style.setProperty("height", h + "px", "important"); - } else { - canvas.style.removeProperty("width"); - canvas.style.removeProperty("height"); - } - } - } - } -}; -var _emscripten_cancel_main_loop = function _emscripten_cancel_main_loop() { - Browser.mainLoop.pause(); - Browser.mainLoop.func = null; -}; -var _emscripten_date_now = function _emscripten_date_now() { - return Date.now(); -}; -var getHeapMax = function getHeapMax() { - return 2147483648; -}; -var _emscripten_get_heap_max = function _emscripten_get_heap_max() { - return getHeapMax(); -}; -var GL = { - counter: 1, - buffers: [], - programs: [], - framebuffers: [], - renderbuffers: [], - textures: [], - shaders: [], - vaos: [], - contexts: [], - offscreenCanvases: {}, - queries: [], - samplers: [], - transformFeedbacks: [], - syncs: [], - stringCache: {}, - stringiCache: {}, - unpackAlignment: 4, - recordError: function recordError(errorCode) { - if (!GL.lastError) { - GL.lastError = errorCode; - } - }, - getNewId: function getNewId(table) { - var ret = GL.counter++; - for (var i = table.length; i < ret; i++) { - table[i] = null; - } - return ret; - }, - genObject: function genObject(n, buffers, createFunction, objectTable) { - for (var i = 0; i < n; i++) { - var buffer = GLctx[createFunction](); - var id = buffer && GL.getNewId(objectTable); - if (buffer) { - buffer.name = id; - objectTable[id] = buffer; - } else { - GL.recordError(1282); - } - HEAP32[buffers + i * 4 >> 2] = id; - } - }, - getSource: function getSource(shader, count, string, length) { - var source = ""; - for (var i = 0; i < count; ++i) { - var len = length ? HEAPU32[length + i * 4 >> 2] : undefined; - source += UTF8ToString(HEAPU32[string + i * 4 >> 2], len); - } - return source; - }, - createContext: function createContext(canvas, webGLContextAttributes) { - function getChromeVersion() { - var chromeVersion = navigator.userAgent.match(/Chrom(e|ium)\/([0-9]+)\./); - if (chromeVersion) return chromeVersion[2] | 0; - } - if (!canvas.getContextSafariWebGL2Fixed) { - var fixedGetContext = function fixedGetContext(ver, attrs) { - var gl = canvas.getContextSafariWebGL2Fixed(ver, attrs); - return ver == "webgl" == gl instanceof WebGLRenderingContext ? gl : null; - }; - canvas.getContextSafariWebGL2Fixed = canvas.getContext; - canvas.getContext = fixedGetContext; - } - var ctx = webGLContextAttributes.majorVersion > 1 ? !(getChromeVersion() <= 57) && canvas.getContext("webgl2", webGLContextAttributes) : canvas.getContext("webgl", webGLContextAttributes) || canvas.getContext("experimental-webgl", webGLContextAttributes); - if (!ctx) return 0; - var handle = GL.registerContext(ctx, webGLContextAttributes); - return handle; - }, - registerContext: function registerContext(ctx, webGLContextAttributes) { - var handle = GL.getNewId(GL.contexts); - var context = { - handle: handle, - attributes: webGLContextAttributes, - version: webGLContextAttributes.majorVersion, - GLctx: ctx - }; - if (ctx.canvas) ctx.canvas.GLctxObject = context; - GL.contexts[handle] = context; - return handle; - }, - makeContextCurrent: function makeContextCurrent(contextHandle) { - var _GL$currentContext; - GL.currentContext = GL.contexts[contextHandle]; - Module.ctx = GLctx = (_GL$currentContext = GL.currentContext) === null || _GL$currentContext === void 0 ? void 0 : _GL$currentContext.GLctx; - return !(contextHandle && !GLctx); - }, - getContext: function getContext(contextHandle) { - return GL.contexts[contextHandle]; - }, - deleteContext: function deleteContext(contextHandle) { - if (GL.currentContext === GL.contexts[contextHandle]) { - GL.currentContext = null; - } - if (_typeof(JSEvents) == "object") { - JSEvents.removeAllHandlersOnTarget(GL.contexts[contextHandle].GLctx.canvas); - } - if (GL.contexts[contextHandle] && GL.contexts[contextHandle].GLctx.canvas) { - GL.contexts[contextHandle].GLctx.canvas.GLctxObject = undefined; - } - GL.contexts[contextHandle] = null; - } -}; -var _glActiveTexture = function _glActiveTexture(x0) { - return GLctx.activeTexture(x0); -}; -var _emscripten_glActiveTexture = _glActiveTexture; -var _glAttachShader = function _glAttachShader(program, shader) { - GLctx.attachShader(GL.programs[program], GL.shaders[shader]); -}; -var _emscripten_glAttachShader = _glAttachShader; -var _glBeginQuery = function _glBeginQuery(target, id) { - GLctx.beginQuery(target, GL.queries[id]); -}; -var _emscripten_glBeginQuery = _glBeginQuery; -var _glBeginQueryEXT = function _glBeginQueryEXT(target, id) { - GLctx.disjointTimerQueryExt["beginQueryEXT"](target, GL.queries[id]); -}; -var _emscripten_glBeginQueryEXT = _glBeginQueryEXT; -var _glBeginTransformFeedback = function _glBeginTransformFeedback(x0) { - return GLctx.beginTransformFeedback(x0); -}; -var _emscripten_glBeginTransformFeedback = _glBeginTransformFeedback; -var _glBindAttribLocation = function _glBindAttribLocation(program, index, name) { - GLctx.bindAttribLocation(GL.programs[program], index, UTF8ToString(name)); -}; -var _emscripten_glBindAttribLocation = _glBindAttribLocation; -var _glBindBuffer = function _glBindBuffer(target, buffer) { - if (target == 35051) { - GLctx.currentPixelPackBufferBinding = buffer; - } else if (target == 35052) { - GLctx.currentPixelUnpackBufferBinding = buffer; - } - GLctx.bindBuffer(target, GL.buffers[buffer]); -}; -var _emscripten_glBindBuffer = _glBindBuffer; -var _glBindBufferBase = function _glBindBufferBase(target, index, buffer) { - GLctx.bindBufferBase(target, index, GL.buffers[buffer]); -}; -var _emscripten_glBindBufferBase = _glBindBufferBase; -var _glBindBufferRange = function _glBindBufferRange(target, index, buffer, offset, ptrsize) { - GLctx.bindBufferRange(target, index, GL.buffers[buffer], offset, ptrsize); -}; -var _emscripten_glBindBufferRange = _glBindBufferRange; -var _glBindFramebuffer = function _glBindFramebuffer(target, framebuffer) { - GLctx.bindFramebuffer(target, GL.framebuffers[framebuffer]); -}; -var _emscripten_glBindFramebuffer = _glBindFramebuffer; -var _glBindRenderbuffer = function _glBindRenderbuffer(target, renderbuffer) { - GLctx.bindRenderbuffer(target, GL.renderbuffers[renderbuffer]); -}; -var _emscripten_glBindRenderbuffer = _glBindRenderbuffer; -var _glBindSampler = function _glBindSampler(unit, sampler) { - GLctx.bindSampler(unit, GL.samplers[sampler]); -}; -var _emscripten_glBindSampler = _glBindSampler; -var _glBindTexture = function _glBindTexture(target, texture) { - GLctx.bindTexture(target, GL.textures[texture]); -}; -var _emscripten_glBindTexture = _glBindTexture; -var _glBindTransformFeedback = function _glBindTransformFeedback(target, id) { - GLctx.bindTransformFeedback(target, GL.transformFeedbacks[id]); -}; -var _emscripten_glBindTransformFeedback = _glBindTransformFeedback; -var _glBindVertexArray = function _glBindVertexArray(vao) { - GLctx.bindVertexArray(GL.vaos[vao]); -}; -var _emscripten_glBindVertexArray = _glBindVertexArray; -var _glBindVertexArrayOES = _glBindVertexArray; -var _emscripten_glBindVertexArrayOES = _glBindVertexArrayOES; -var _glBlendColor = function _glBlendColor(x0, x1, x2, x3) { - return GLctx.blendColor(x0, x1, x2, x3); -}; -var _emscripten_glBlendColor = _glBlendColor; -var _glBlendEquation = function _glBlendEquation(x0) { - return GLctx.blendEquation(x0); -}; -var _emscripten_glBlendEquation = _glBlendEquation; -var _glBlendEquationSeparate = function _glBlendEquationSeparate(x0, x1) { - return GLctx.blendEquationSeparate(x0, x1); -}; -var _emscripten_glBlendEquationSeparate = _glBlendEquationSeparate; -var _glBlendFunc = function _glBlendFunc(x0, x1) { - return GLctx.blendFunc(x0, x1); -}; -var _emscripten_glBlendFunc = _glBlendFunc; -var _glBlendFuncSeparate = function _glBlendFuncSeparate(x0, x1, x2, x3) { - return GLctx.blendFuncSeparate(x0, x1, x2, x3); -}; -var _emscripten_glBlendFuncSeparate = _glBlendFuncSeparate; -var _glBlitFramebuffer = function _glBlitFramebuffer(x0, x1, x2, x3, x4, x5, x6, x7, x8, x9) { - return GLctx.blitFramebuffer(x0, x1, x2, x3, x4, x5, x6, x7, x8, x9); -}; -var _emscripten_glBlitFramebuffer = _glBlitFramebuffer; -var _glBufferData = function _glBufferData(target, size, data, usage) { - if (GL.currentContext.version >= 2) { - if (data && size) { - GLctx.bufferData(target, HEAPU8, usage, data, size); - } else { - GLctx.bufferData(target, size, usage); - } - return; - } - GLctx.bufferData(target, data ? HEAPU8.subarray(data, data + size) : size, usage); -}; -var _emscripten_glBufferData = _glBufferData; -var _glBufferSubData = function _glBufferSubData(target, offset, size, data) { - if (GL.currentContext.version >= 2) { - size && GLctx.bufferSubData(target, offset, HEAPU8, data, size); - return; - } - GLctx.bufferSubData(target, offset, HEAPU8.subarray(data, data + size)); -}; -var _emscripten_glBufferSubData = _glBufferSubData; -var _glCheckFramebufferStatus = function _glCheckFramebufferStatus(x0) { - return GLctx.checkFramebufferStatus(x0); -}; -var _emscripten_glCheckFramebufferStatus = _glCheckFramebufferStatus; -var _glClear = function _glClear(x0) { - return GLctx.clear(x0); -}; -var _emscripten_glClear = _glClear; -var _glClearBufferfi = function _glClearBufferfi(x0, x1, x2, x3) { - return GLctx.clearBufferfi(x0, x1, x2, x3); -}; -var _emscripten_glClearBufferfi = _glClearBufferfi; -var _glClearBufferfv = function _glClearBufferfv(buffer, drawbuffer, value) { - GLctx.clearBufferfv(buffer, drawbuffer, HEAPF32, value >> 2); -}; -var _emscripten_glClearBufferfv = _glClearBufferfv; -var _glClearBufferiv = function _glClearBufferiv(buffer, drawbuffer, value) { - GLctx.clearBufferiv(buffer, drawbuffer, HEAP32, value >> 2); -}; -var _emscripten_glClearBufferiv = _glClearBufferiv; -var _glClearBufferuiv = function _glClearBufferuiv(buffer, drawbuffer, value) { - GLctx.clearBufferuiv(buffer, drawbuffer, HEAPU32, value >> 2); -}; -var _emscripten_glClearBufferuiv = _glClearBufferuiv; -var _glClearColor = function _glClearColor(x0, x1, x2, x3) { - return GLctx.clearColor(x0, x1, x2, x3); -}; -var _emscripten_glClearColor = _glClearColor; -var _glClearDepthf = function _glClearDepthf(x0) { - return GLctx.clearDepth(x0); -}; -var _emscripten_glClearDepthf = _glClearDepthf; -var _glClearStencil = function _glClearStencil(x0) { - return GLctx.clearStencil(x0); -}; -var _emscripten_glClearStencil = _glClearStencil; -var convertI32PairToI53 = function convertI32PairToI53(lo, hi) { - return (lo >>> 0) + hi * 4294967296; -}; -var _glClientWaitSync = function _glClientWaitSync(sync, flags, timeout_low, timeout_high) { - var timeout = convertI32PairToI53(timeout_low, timeout_high); - return GLctx.clientWaitSync(GL.syncs[sync], flags, timeout); -}; -var _emscripten_glClientWaitSync = _glClientWaitSync; -var _glColorMask = function _glColorMask(red, green, blue, alpha) { - GLctx.colorMask(!!red, !!green, !!blue, !!alpha); -}; -var _emscripten_glColorMask = _glColorMask; -var _glCompileShader = function _glCompileShader(shader) { - GLctx.compileShader(GL.shaders[shader]); -}; -var _emscripten_glCompileShader = _glCompileShader; -var _glCompressedTexImage2D = function _glCompressedTexImage2D(target, level, internalFormat, width, height, border, imageSize, data) { - if (GL.currentContext.version >= 2) { - if (GLctx.currentPixelUnpackBufferBinding || !imageSize) { - GLctx.compressedTexImage2D(target, level, internalFormat, width, height, border, imageSize, data); - } else { - GLctx.compressedTexImage2D(target, level, internalFormat, width, height, border, HEAPU8, data, imageSize); - } - return; - } - GLctx.compressedTexImage2D(target, level, internalFormat, width, height, border, data ? HEAPU8.subarray(data, data + imageSize) : null); -}; -var _emscripten_glCompressedTexImage2D = _glCompressedTexImage2D; -var _glCompressedTexImage3D = function _glCompressedTexImage3D(target, level, internalFormat, width, height, depth, border, imageSize, data) { - if (GLctx.currentPixelUnpackBufferBinding) { - GLctx.compressedTexImage3D(target, level, internalFormat, width, height, depth, border, imageSize, data); - } else { - GLctx.compressedTexImage3D(target, level, internalFormat, width, height, depth, border, HEAPU8, data, imageSize); - } -}; -var _emscripten_glCompressedTexImage3D = _glCompressedTexImage3D; -var _glCompressedTexSubImage2D = function _glCompressedTexSubImage2D(target, level, xoffset, yoffset, width, height, format, imageSize, data) { - if (GL.currentContext.version >= 2) { - if (GLctx.currentPixelUnpackBufferBinding || !imageSize) { - GLctx.compressedTexSubImage2D(target, level, xoffset, yoffset, width, height, format, imageSize, data); - } else { - GLctx.compressedTexSubImage2D(target, level, xoffset, yoffset, width, height, format, HEAPU8, data, imageSize); - } - return; - } - GLctx.compressedTexSubImage2D(target, level, xoffset, yoffset, width, height, format, data ? HEAPU8.subarray(data, data + imageSize) : null); -}; -var _emscripten_glCompressedTexSubImage2D = _glCompressedTexSubImage2D; -var _glCompressedTexSubImage3D = function _glCompressedTexSubImage3D(target, level, xoffset, yoffset, zoffset, width, height, depth, format, imageSize, data) { - if (GLctx.currentPixelUnpackBufferBinding) { - GLctx.compressedTexSubImage3D(target, level, xoffset, yoffset, zoffset, width, height, depth, format, imageSize, data); - } else { - GLctx.compressedTexSubImage3D(target, level, xoffset, yoffset, zoffset, width, height, depth, format, HEAPU8, data, imageSize); - } -}; -var _emscripten_glCompressedTexSubImage3D = _glCompressedTexSubImage3D; -var _glCopyBufferSubData = function _glCopyBufferSubData(x0, x1, x2, x3, x4) { - return GLctx.copyBufferSubData(x0, x1, x2, x3, x4); -}; -var _emscripten_glCopyBufferSubData = _glCopyBufferSubData; -var _glCopyTexImage2D = function _glCopyTexImage2D(x0, x1, x2, x3, x4, x5, x6, x7) { - return GLctx.copyTexImage2D(x0, x1, x2, x3, x4, x5, x6, x7); -}; -var _emscripten_glCopyTexImage2D = _glCopyTexImage2D; -var _glCopyTexSubImage2D = function _glCopyTexSubImage2D(x0, x1, x2, x3, x4, x5, x6, x7) { - return GLctx.copyTexSubImage2D(x0, x1, x2, x3, x4, x5, x6, x7); -}; -var _emscripten_glCopyTexSubImage2D = _glCopyTexSubImage2D; -var _glCopyTexSubImage3D = function _glCopyTexSubImage3D(x0, x1, x2, x3, x4, x5, x6, x7, x8) { - return GLctx.copyTexSubImage3D(x0, x1, x2, x3, x4, x5, x6, x7, x8); -}; -var _emscripten_glCopyTexSubImage3D = _glCopyTexSubImage3D; -var _glCreateProgram = function _glCreateProgram() { - var id = GL.getNewId(GL.programs); - var program = GLctx.createProgram(); - program.name = id; - program.maxUniformLength = program.maxAttributeLength = program.maxUniformBlockNameLength = 0; - program.uniformIdCounter = 1; - GL.programs[id] = program; - return id; -}; -var _emscripten_glCreateProgram = _glCreateProgram; -var _glCreateShader = function _glCreateShader(shaderType) { - var id = GL.getNewId(GL.shaders); - GL.shaders[id] = GLctx.createShader(shaderType); - return id; -}; -var _emscripten_glCreateShader = _glCreateShader; -var _glCullFace = function _glCullFace(x0) { - return GLctx.cullFace(x0); -}; -var _emscripten_glCullFace = _glCullFace; -var _glDeleteBuffers = function _glDeleteBuffers(n, buffers) { - for (var i = 0; i < n; i++) { - var id = HEAP32[buffers + i * 4 >> 2]; - var buffer = GL.buffers[id]; - if (!buffer) continue; - GLctx.deleteBuffer(buffer); - buffer.name = 0; - GL.buffers[id] = null; - if (id == GLctx.currentPixelPackBufferBinding) GLctx.currentPixelPackBufferBinding = 0; - if (id == GLctx.currentPixelUnpackBufferBinding) GLctx.currentPixelUnpackBufferBinding = 0; - } -}; -var _emscripten_glDeleteBuffers = _glDeleteBuffers; -var _glDeleteFramebuffers = function _glDeleteFramebuffers(n, framebuffers) { - for (var i = 0; i < n; ++i) { - var id = HEAP32[framebuffers + i * 4 >> 2]; - var framebuffer = GL.framebuffers[id]; - if (!framebuffer) continue; - GLctx.deleteFramebuffer(framebuffer); - framebuffer.name = 0; - GL.framebuffers[id] = null; - } -}; -var _emscripten_glDeleteFramebuffers = _glDeleteFramebuffers; -var _glDeleteProgram = function _glDeleteProgram(id) { - if (!id) return; - var program = GL.programs[id]; - if (!program) { - GL.recordError(1281); - return; - } - GLctx.deleteProgram(program); - program.name = 0; - GL.programs[id] = null; -}; -var _emscripten_glDeleteProgram = _glDeleteProgram; -var _glDeleteQueries = function _glDeleteQueries(n, ids) { - for (var i = 0; i < n; i++) { - var id = HEAP32[ids + i * 4 >> 2]; - var query = GL.queries[id]; - if (!query) continue; - GLctx.deleteQuery(query); - GL.queries[id] = null; - } -}; -var _emscripten_glDeleteQueries = _glDeleteQueries; -var _glDeleteQueriesEXT = function _glDeleteQueriesEXT(n, ids) { - for (var i = 0; i < n; i++) { - var id = HEAP32[ids + i * 4 >> 2]; - var query = GL.queries[id]; - if (!query) continue; - GLctx.disjointTimerQueryExt["deleteQueryEXT"](query); - GL.queries[id] = null; - } -}; -var _emscripten_glDeleteQueriesEXT = _glDeleteQueriesEXT; -var _glDeleteRenderbuffers = function _glDeleteRenderbuffers(n, renderbuffers) { - for (var i = 0; i < n; i++) { - var id = HEAP32[renderbuffers + i * 4 >> 2]; - var renderbuffer = GL.renderbuffers[id]; - if (!renderbuffer) continue; - GLctx.deleteRenderbuffer(renderbuffer); - renderbuffer.name = 0; - GL.renderbuffers[id] = null; - } -}; -var _emscripten_glDeleteRenderbuffers = _glDeleteRenderbuffers; -var _glDeleteSamplers = function _glDeleteSamplers(n, samplers) { - for (var i = 0; i < n; i++) { - var id = HEAP32[samplers + i * 4 >> 2]; - var sampler = GL.samplers[id]; - if (!sampler) continue; - GLctx.deleteSampler(sampler); - sampler.name = 0; - GL.samplers[id] = null; - } -}; -var _emscripten_glDeleteSamplers = _glDeleteSamplers; -var _glDeleteShader = function _glDeleteShader(id) { - if (!id) return; - var shader = GL.shaders[id]; - if (!shader) { - GL.recordError(1281); - return; - } - GLctx.deleteShader(shader); - GL.shaders[id] = null; -}; -var _emscripten_glDeleteShader = _glDeleteShader; -var _glDeleteSync = function _glDeleteSync(id) { - if (!id) return; - var sync = GL.syncs[id]; - if (!sync) { - GL.recordError(1281); - return; - } - GLctx.deleteSync(sync); - sync.name = 0; - GL.syncs[id] = null; -}; -var _emscripten_glDeleteSync = _glDeleteSync; -var _glDeleteTextures = function _glDeleteTextures(n, textures) { - for (var i = 0; i < n; i++) { - var id = HEAP32[textures + i * 4 >> 2]; - var texture = GL.textures[id]; - if (!texture) continue; - GLctx.deleteTexture(texture); - texture.name = 0; - GL.textures[id] = null; - } -}; -var _emscripten_glDeleteTextures = _glDeleteTextures; -var _glDeleteTransformFeedbacks = function _glDeleteTransformFeedbacks(n, ids) { - for (var i = 0; i < n; i++) { - var id = HEAP32[ids + i * 4 >> 2]; - var transformFeedback = GL.transformFeedbacks[id]; - if (!transformFeedback) continue; - GLctx.deleteTransformFeedback(transformFeedback); - transformFeedback.name = 0; - GL.transformFeedbacks[id] = null; - } -}; -var _emscripten_glDeleteTransformFeedbacks = _glDeleteTransformFeedbacks; -var _glDeleteVertexArrays = function _glDeleteVertexArrays(n, vaos) { - for (var i = 0; i < n; i++) { - var id = HEAP32[vaos + i * 4 >> 2]; - GLctx.deleteVertexArray(GL.vaos[id]); - GL.vaos[id] = null; - } -}; -var _emscripten_glDeleteVertexArrays = _glDeleteVertexArrays; -var _glDeleteVertexArraysOES = _glDeleteVertexArrays; -var _emscripten_glDeleteVertexArraysOES = _glDeleteVertexArraysOES; -var _glDepthFunc = function _glDepthFunc(x0) { - return GLctx.depthFunc(x0); -}; -var _emscripten_glDepthFunc = _glDepthFunc; -var _glDepthMask = function _glDepthMask(flag) { - GLctx.depthMask(!!flag); -}; -var _emscripten_glDepthMask = _glDepthMask; -var _glDepthRangef = function _glDepthRangef(x0, x1) { - return GLctx.depthRange(x0, x1); -}; -var _emscripten_glDepthRangef = _glDepthRangef; -var _glDetachShader = function _glDetachShader(program, shader) { - GLctx.detachShader(GL.programs[program], GL.shaders[shader]); -}; -var _emscripten_glDetachShader = _glDetachShader; -var _glDisable = function _glDisable(x0) { - return GLctx.disable(x0); -}; -var _emscripten_glDisable = _glDisable; -var _glDisableVertexAttribArray = function _glDisableVertexAttribArray(index) { - GLctx.disableVertexAttribArray(index); -}; -var _emscripten_glDisableVertexAttribArray = _glDisableVertexAttribArray; -var _glDrawArrays = function _glDrawArrays(mode, first, count) { - GLctx.drawArrays(mode, first, count); -}; -var _emscripten_glDrawArrays = _glDrawArrays; -var _glDrawArraysInstanced = function _glDrawArraysInstanced(mode, first, count, primcount) { - GLctx.drawArraysInstanced(mode, first, count, primcount); -}; -var _emscripten_glDrawArraysInstanced = _glDrawArraysInstanced; -var _glDrawArraysInstancedANGLE = _glDrawArraysInstanced; -var _emscripten_glDrawArraysInstancedANGLE = _glDrawArraysInstancedANGLE; -var _glDrawArraysInstancedARB = _glDrawArraysInstanced; -var _emscripten_glDrawArraysInstancedARB = _glDrawArraysInstancedARB; -var _glDrawArraysInstancedEXT = _glDrawArraysInstanced; -var _emscripten_glDrawArraysInstancedEXT = _glDrawArraysInstancedEXT; -var _glDrawArraysInstancedNV = _glDrawArraysInstanced; -var _emscripten_glDrawArraysInstancedNV = _glDrawArraysInstancedNV; -var tempFixedLengthArray = []; -var _glDrawBuffers = function _glDrawBuffers(n, bufs) { - var bufArray = tempFixedLengthArray[n]; - for (var i = 0; i < n; i++) { - bufArray[i] = HEAP32[bufs + i * 4 >> 2]; - } - GLctx.drawBuffers(bufArray); -}; -var _emscripten_glDrawBuffers = _glDrawBuffers; -var _glDrawBuffersEXT = _glDrawBuffers; -var _emscripten_glDrawBuffersEXT = _glDrawBuffersEXT; -var _glDrawBuffersWEBGL = _glDrawBuffers; -var _emscripten_glDrawBuffersWEBGL = _glDrawBuffersWEBGL; -var _glDrawElements = function _glDrawElements(mode, count, type, indices) { - GLctx.drawElements(mode, count, type, indices); -}; -var _emscripten_glDrawElements = _glDrawElements; -var _glDrawElementsInstanced = function _glDrawElementsInstanced(mode, count, type, indices, primcount) { - GLctx.drawElementsInstanced(mode, count, type, indices, primcount); -}; -var _emscripten_glDrawElementsInstanced = _glDrawElementsInstanced; -var _glDrawElementsInstancedANGLE = _glDrawElementsInstanced; -var _emscripten_glDrawElementsInstancedANGLE = _glDrawElementsInstancedANGLE; -var _glDrawElementsInstancedARB = _glDrawElementsInstanced; -var _emscripten_glDrawElementsInstancedARB = _glDrawElementsInstancedARB; -var _glDrawElementsInstancedEXT = _glDrawElementsInstanced; -var _emscripten_glDrawElementsInstancedEXT = _glDrawElementsInstancedEXT; -var _glDrawElementsInstancedNV = _glDrawElementsInstanced; -var _emscripten_glDrawElementsInstancedNV = _glDrawElementsInstancedNV; -var _glDrawRangeElements = function _glDrawRangeElements(mode, start, end, count, type, indices) { - _glDrawElements(mode, count, type, indices); -}; -var _emscripten_glDrawRangeElements = _glDrawRangeElements; -var _glEnable = function _glEnable(x0) { - return GLctx.enable(x0); -}; -var _emscripten_glEnable = _glEnable; -var _glEnableVertexAttribArray = function _glEnableVertexAttribArray(index) { - GLctx.enableVertexAttribArray(index); -}; -var _emscripten_glEnableVertexAttribArray = _glEnableVertexAttribArray; -var _glEndQuery = function _glEndQuery(x0) { - return GLctx.endQuery(x0); -}; -var _emscripten_glEndQuery = _glEndQuery; -var _glEndQueryEXT = function _glEndQueryEXT(target) { - GLctx.disjointTimerQueryExt["endQueryEXT"](target); -}; -var _emscripten_glEndQueryEXT = _glEndQueryEXT; -var _glEndTransformFeedback = function _glEndTransformFeedback() { - return GLctx.endTransformFeedback(); -}; -var _emscripten_glEndTransformFeedback = _glEndTransformFeedback; -var _glFenceSync = function _glFenceSync(condition, flags) { - var sync = GLctx.fenceSync(condition, flags); - if (sync) { - var id = GL.getNewId(GL.syncs); - sync.name = id; - GL.syncs[id] = sync; - return id; - } - return 0; -}; -var _emscripten_glFenceSync = _glFenceSync; -var _glFinish = function _glFinish() { - return GLctx.finish(); -}; -var _emscripten_glFinish = _glFinish; -var _glFlush = function _glFlush() { - return GLctx.flush(); -}; -var _emscripten_glFlush = _glFlush; -var _glFramebufferRenderbuffer = function _glFramebufferRenderbuffer(target, attachment, renderbuffertarget, renderbuffer) { - GLctx.framebufferRenderbuffer(target, attachment, renderbuffertarget, GL.renderbuffers[renderbuffer]); -}; -var _emscripten_glFramebufferRenderbuffer = _glFramebufferRenderbuffer; -var _glFramebufferTexture2D = function _glFramebufferTexture2D(target, attachment, textarget, texture, level) { - GLctx.framebufferTexture2D(target, attachment, textarget, GL.textures[texture], level); -}; -var _emscripten_glFramebufferTexture2D = _glFramebufferTexture2D; -var _glFramebufferTextureLayer = function _glFramebufferTextureLayer(target, attachment, texture, level, layer) { - GLctx.framebufferTextureLayer(target, attachment, GL.textures[texture], level, layer); -}; -var _emscripten_glFramebufferTextureLayer = _glFramebufferTextureLayer; -var _glFrontFace = function _glFrontFace(x0) { - return GLctx.frontFace(x0); -}; -var _emscripten_glFrontFace = _glFrontFace; -var _glGenBuffers = function _glGenBuffers(n, buffers) { - GL.genObject(n, buffers, "createBuffer", GL.buffers); -}; -var _emscripten_glGenBuffers = _glGenBuffers; -var _glGenFramebuffers = function _glGenFramebuffers(n, ids) { - GL.genObject(n, ids, "createFramebuffer", GL.framebuffers); -}; -var _emscripten_glGenFramebuffers = _glGenFramebuffers; -var _glGenQueries = function _glGenQueries(n, ids) { - GL.genObject(n, ids, "createQuery", GL.queries); -}; -var _emscripten_glGenQueries = _glGenQueries; -var _glGenQueriesEXT = function _glGenQueriesEXT(n, ids) { - for (var i = 0; i < n; i++) { - var query = GLctx.disjointTimerQueryExt["createQueryEXT"](); - if (!query) { - GL.recordError(1282); - while (i < n) HEAP32[ids + i++ * 4 >> 2] = 0; - return; - } - var id = GL.getNewId(GL.queries); - query.name = id; - GL.queries[id] = query; - HEAP32[ids + i * 4 >> 2] = id; - } -}; -var _emscripten_glGenQueriesEXT = _glGenQueriesEXT; -var _glGenRenderbuffers = function _glGenRenderbuffers(n, renderbuffers) { - GL.genObject(n, renderbuffers, "createRenderbuffer", GL.renderbuffers); -}; -var _emscripten_glGenRenderbuffers = _glGenRenderbuffers; -var _glGenSamplers = function _glGenSamplers(n, samplers) { - GL.genObject(n, samplers, "createSampler", GL.samplers); -}; -var _emscripten_glGenSamplers = _glGenSamplers; -var _glGenTextures = function _glGenTextures(n, textures) { - GL.genObject(n, textures, "createTexture", GL.textures); -}; -var _emscripten_glGenTextures = _glGenTextures; -var _glGenTransformFeedbacks = function _glGenTransformFeedbacks(n, ids) { - GL.genObject(n, ids, "createTransformFeedback", GL.transformFeedbacks); -}; -var _emscripten_glGenTransformFeedbacks = _glGenTransformFeedbacks; -var _glGenVertexArrays = function _glGenVertexArrays(n, arrays) { - GL.genObject(n, arrays, "createVertexArray", GL.vaos); -}; -var _emscripten_glGenVertexArrays = _glGenVertexArrays; -var _glGenVertexArraysOES = _glGenVertexArrays; -var _emscripten_glGenVertexArraysOES = _glGenVertexArraysOES; -var _glGenerateMipmap = function _glGenerateMipmap(x0) { - return GLctx.generateMipmap(x0); -}; -var _emscripten_glGenerateMipmap = _glGenerateMipmap; -var __glGetActiveAttribOrUniform = function __glGetActiveAttribOrUniform(funcName, program, index, bufSize, length, size, type, name) { - program = GL.programs[program]; - var info = GLctx[funcName](program, index); - if (info) { - var numBytesWrittenExclNull = name && stringToUTF8(info.name, name, bufSize); - if (length) HEAP32[length >> 2] = numBytesWrittenExclNull; - if (size) HEAP32[size >> 2] = info.size; - if (type) HEAP32[type >> 2] = info.type; - } -}; -var _glGetActiveAttrib = function _glGetActiveAttrib(program, index, bufSize, length, size, type, name) { - __glGetActiveAttribOrUniform("getActiveAttrib", program, index, bufSize, length, size, type, name); -}; -var _emscripten_glGetActiveAttrib = _glGetActiveAttrib; -var _glGetActiveUniform = function _glGetActiveUniform(program, index, bufSize, length, size, type, name) { - __glGetActiveAttribOrUniform("getActiveUniform", program, index, bufSize, length, size, type, name); -}; -var _emscripten_glGetActiveUniform = _glGetActiveUniform; -var _glGetActiveUniformBlockName = function _glGetActiveUniformBlockName(program, uniformBlockIndex, bufSize, length, uniformBlockName) { - program = GL.programs[program]; - var result = GLctx.getActiveUniformBlockName(program, uniformBlockIndex); - if (!result) return; - if (uniformBlockName && bufSize > 0) { - var numBytesWrittenExclNull = stringToUTF8(result, uniformBlockName, bufSize); - if (length) HEAP32[length >> 2] = numBytesWrittenExclNull; - } else { - if (length) HEAP32[length >> 2] = 0; - } -}; -var _emscripten_glGetActiveUniformBlockName = _glGetActiveUniformBlockName; -var _glGetActiveUniformBlockiv = function _glGetActiveUniformBlockiv(program, uniformBlockIndex, pname, params) { - if (!params) { - GL.recordError(1281); - return; - } - program = GL.programs[program]; - if (pname == 35393) { - var name = GLctx.getActiveUniformBlockName(program, uniformBlockIndex); - HEAP32[params >> 2] = name.length + 1; - return; - } - var result = GLctx.getActiveUniformBlockParameter(program, uniformBlockIndex, pname); - if (result === null) return; - if (pname == 35395) { - for (var i = 0; i < result.length; i++) { - HEAP32[params + i * 4 >> 2] = result[i]; - } - } else { - HEAP32[params >> 2] = result; - } -}; -var _emscripten_glGetActiveUniformBlockiv = _glGetActiveUniformBlockiv; -var _glGetActiveUniformsiv = function _glGetActiveUniformsiv(program, uniformCount, uniformIndices, pname, params) { - if (!params) { - GL.recordError(1281); - return; - } - if (uniformCount > 0 && uniformIndices == 0) { - GL.recordError(1281); - return; - } - program = GL.programs[program]; - var ids = []; - for (var i = 0; i < uniformCount; i++) { - ids.push(HEAP32[uniformIndices + i * 4 >> 2]); - } - var result = GLctx.getActiveUniforms(program, ids, pname); - if (!result) return; - var len = result.length; - for (var i = 0; i < len; i++) { - HEAP32[params + i * 4 >> 2] = result[i]; - } -}; -var _emscripten_glGetActiveUniformsiv = _glGetActiveUniformsiv; -var _glGetAttachedShaders = function _glGetAttachedShaders(program, maxCount, count, shaders) { - var result = GLctx.getAttachedShaders(GL.programs[program]); - var len = result.length; - if (len > maxCount) { - len = maxCount; - } - HEAP32[count >> 2] = len; - for (var i = 0; i < len; ++i) { - var id = GL.shaders.indexOf(result[i]); - HEAP32[shaders + i * 4 >> 2] = id; - } -}; -var _emscripten_glGetAttachedShaders = _glGetAttachedShaders; -var _glGetAttribLocation = function _glGetAttribLocation(program, name) { - return GLctx.getAttribLocation(GL.programs[program], UTF8ToString(name)); -}; -var _emscripten_glGetAttribLocation = _glGetAttribLocation; -var writeI53ToI64 = function writeI53ToI64(ptr, num) { - HEAPU32[ptr >> 2] = num; - var lower = HEAPU32[ptr >> 2]; - HEAPU32[ptr + 4 >> 2] = (num - lower) / 4294967296; -}; -var getEmscriptenSupportedExtensions = function getEmscriptenSupportedExtensions(ctx) { - var supportedExtensions = ["ANGLE_instanced_arrays", "EXT_blend_minmax", "EXT_disjoint_timer_query", "EXT_frag_depth", "EXT_shader_texture_lod", "EXT_sRGB", "OES_element_index_uint", "OES_fbo_render_mipmap", "OES_standard_derivatives", "OES_texture_float", "OES_texture_half_float", "OES_texture_half_float_linear", "OES_vertex_array_object", "WEBGL_color_buffer_float", "WEBGL_depth_texture", "WEBGL_draw_buffers", "EXT_color_buffer_float", "EXT_conservative_depth", "EXT_disjoint_timer_query_webgl2", "EXT_texture_norm16", "NV_shader_noperspective_interpolation", "WEBGL_clip_cull_distance", "EXT_color_buffer_half_float", "EXT_depth_clamp", "EXT_float_blend", "EXT_texture_compression_bptc", "EXT_texture_compression_rgtc", "EXT_texture_filter_anisotropic", "KHR_parallel_shader_compile", "OES_texture_float_linear", "WEBGL_blend_func_extended", "WEBGL_compressed_texture_astc", "WEBGL_compressed_texture_etc", "WEBGL_compressed_texture_etc1", "WEBGL_compressed_texture_s3tc", "WEBGL_compressed_texture_s3tc_srgb", "WEBGL_debug_renderer_info", "WEBGL_debug_shaders", "WEBGL_lose_context", "WEBGL_multi_draw"]; - return (ctx.getSupportedExtensions() || []).filter(function (ext) { - return supportedExtensions.includes(ext); - }); -}; -var webglGetExtensions = function $webglGetExtensions() { - var exts = getEmscriptenSupportedExtensions(GLctx); - exts = exts.concat(exts.map(function (e) { - return "GL_" + e; - })); - return exts; -}; -var emscriptenWebGLGet = function emscriptenWebGLGet(name_, p, type) { - if (!p) { - GL.recordError(1281); - return; - } - var ret = undefined; - switch (name_) { - case 36346: - ret = 1; - break; - case 36344: - if (type != 0 && type != 1) { - GL.recordError(1280); - } - return; - case 34814: - case 36345: - ret = 0; - break; - case 34466: - var formats = GLctx.getParameter(34467); - ret = formats ? formats.length : 0; - break; - case 33309: - if (GL.currentContext.version < 2) { - GL.recordError(1282); - return; - } - ret = webglGetExtensions().length; - break; - case 33307: - case 33308: - if (GL.currentContext.version < 2) { - GL.recordError(1280); - return; - } - ret = name_ == 33307 ? 3 : 0; - break; - } - if (ret === undefined) { - var result = GLctx.getParameter(name_); - switch (_typeof(result)) { - case "number": - ret = result; - break; - case "boolean": - ret = result ? 1 : 0; - break; - case "string": - GL.recordError(1280); - return; - case "object": - if (result === null) { - switch (name_) { - case 34964: - case 35725: - case 34965: - case 36006: - case 36007: - case 32873: - case 34229: - case 36662: - case 36663: - case 35053: - case 35055: - case 36010: - case 35097: - case 35869: - case 32874: - case 36389: - case 35983: - case 35368: - case 34068: - { - ret = 0; - break; - } - default: - { - GL.recordError(1280); - return; - } - } - } else if (result instanceof Float32Array || result instanceof Uint32Array || result instanceof Int32Array || result instanceof Array) { - for (var i = 0; i < result.length; ++i) { - switch (type) { - case 0: - HEAP32[p + i * 4 >> 2] = result[i]; - break; - case 2: - HEAPF32[p + i * 4 >> 2] = result[i]; - break; - case 4: - HEAP8[p + i] = result[i] ? 1 : 0; - break; - } - } - return; - } else { - try { - ret = result.name | 0; - } catch (e) { - GL.recordError(1280); - err("GL_INVALID_ENUM in glGet".concat(type, "v: Unknown object returned from WebGL getParameter(").concat(name_, ")! (error: ").concat(e, ")")); - return; - } - } - break; - default: - GL.recordError(1280); - err("GL_INVALID_ENUM in glGet".concat(type, "v: Native code calling glGet").concat(type, "v(").concat(name_, ") and it returns ").concat(result, " of type ").concat(_typeof(result), "!")); - return; - } - } - switch (type) { - case 1: - writeI53ToI64(p, ret); - break; - case 0: - HEAP32[p >> 2] = ret; - break; - case 2: - HEAPF32[p >> 2] = ret; - break; - case 4: - HEAP8[p] = ret ? 1 : 0; - break; - } -}; -var _glGetBooleanv = function _glGetBooleanv(name_, p) { - return emscriptenWebGLGet(name_, p, 4); -}; -var _emscripten_glGetBooleanv = _glGetBooleanv; -var _glGetBufferParameteri64v = function _glGetBufferParameteri64v(target, value, data) { - if (!data) { - GL.recordError(1281); - return; - } - writeI53ToI64(data, GLctx.getBufferParameter(target, value)); -}; -var _emscripten_glGetBufferParameteri64v = _glGetBufferParameteri64v; -var _glGetBufferParameteriv = function _glGetBufferParameteriv(target, value, data) { - if (!data) { - GL.recordError(1281); - return; - } - HEAP32[data >> 2] = GLctx.getBufferParameter(target, value); -}; -var _emscripten_glGetBufferParameteriv = _glGetBufferParameteriv; -var _glGetError = function _glGetError() { - var error = GLctx.getError() || GL.lastError; - GL.lastError = 0; - return error; -}; -var _emscripten_glGetError = _glGetError; -var _glGetFloatv = function _glGetFloatv(name_, p) { - return emscriptenWebGLGet(name_, p, 2); -}; -var _emscripten_glGetFloatv = _glGetFloatv; -var _glGetFragDataLocation = function _glGetFragDataLocation(program, name) { - return GLctx.getFragDataLocation(GL.programs[program], UTF8ToString(name)); -}; -var _emscripten_glGetFragDataLocation = _glGetFragDataLocation; -var _glGetFramebufferAttachmentParameteriv = function _glGetFramebufferAttachmentParameteriv(target, attachment, pname, params) { - var result = GLctx.getFramebufferAttachmentParameter(target, attachment, pname); - if (result instanceof WebGLRenderbuffer || result instanceof WebGLTexture) { - result = result.name | 0; - } - HEAP32[params >> 2] = result; -}; -var _emscripten_glGetFramebufferAttachmentParameteriv = _glGetFramebufferAttachmentParameteriv; -var emscriptenWebGLGetIndexed = function emscriptenWebGLGetIndexed(target, index, data, type) { - if (!data) { - GL.recordError(1281); - return; - } - var result = GLctx.getIndexedParameter(target, index); - var ret; - switch (_typeof(result)) { - case "boolean": - ret = result ? 1 : 0; - break; - case "number": - ret = result; - break; - case "object": - if (result === null) { - switch (target) { - case 35983: - case 35368: - ret = 0; - break; - default: - { - GL.recordError(1280); - return; - } - } - } else if (result instanceof WebGLBuffer) { - ret = result.name | 0; - } else { - GL.recordError(1280); - return; - } - break; - default: - GL.recordError(1280); - return; - } - switch (type) { - case 1: - writeI53ToI64(data, ret); - break; - case 0: - HEAP32[data >> 2] = ret; - break; - case 2: - HEAPF32[data >> 2] = ret; - break; - case 4: - HEAP8[data] = ret ? 1 : 0; - break; - default: - throw "internal emscriptenWebGLGetIndexed() error, bad type: " + type; - } -}; -var _glGetInteger64i_v = function _glGetInteger64i_v(target, index, data) { - return emscriptenWebGLGetIndexed(target, index, data, 1); -}; -var _emscripten_glGetInteger64i_v = _glGetInteger64i_v; -var _glGetInteger64v = function _glGetInteger64v(name_, p) { - emscriptenWebGLGet(name_, p, 1); -}; -var _emscripten_glGetInteger64v = _glGetInteger64v; -var _glGetIntegeri_v = function _glGetIntegeri_v(target, index, data) { - return emscriptenWebGLGetIndexed(target, index, data, 0); -}; -var _emscripten_glGetIntegeri_v = _glGetIntegeri_v; -var _glGetIntegerv = function _glGetIntegerv(name_, p) { - return emscriptenWebGLGet(name_, p, 0); -}; -var _emscripten_glGetIntegerv = _glGetIntegerv; -var _glGetInternalformativ = function _glGetInternalformativ(target, internalformat, pname, bufSize, params) { - if (bufSize < 0) { - GL.recordError(1281); - return; - } - if (!params) { - GL.recordError(1281); - return; - } - var ret = GLctx.getInternalformatParameter(target, internalformat, pname); - if (ret === null) return; - for (var i = 0; i < ret.length && i < bufSize; ++i) { - HEAP32[params + i * 4 >> 2] = ret[i]; - } -}; -var _emscripten_glGetInternalformativ = _glGetInternalformativ; -var _glGetProgramBinary = function _glGetProgramBinary(program, bufSize, length, binaryFormat, binary) { - GL.recordError(1282); -}; -var _emscripten_glGetProgramBinary = _glGetProgramBinary; -var _glGetProgramInfoLog = function _glGetProgramInfoLog(program, maxLength, length, infoLog) { - var log = GLctx.getProgramInfoLog(GL.programs[program]); - if (log === null) log = "(unknown error)"; - var numBytesWrittenExclNull = maxLength > 0 && infoLog ? stringToUTF8(log, infoLog, maxLength) : 0; - if (length) HEAP32[length >> 2] = numBytesWrittenExclNull; -}; -var _emscripten_glGetProgramInfoLog = _glGetProgramInfoLog; -var _glGetProgramiv = function _glGetProgramiv(program, pname, p) { - if (!p) { - GL.recordError(1281); - return; - } - if (program >= GL.counter) { - GL.recordError(1281); - return; - } - program = GL.programs[program]; - if (pname == 35716) { - var log = GLctx.getProgramInfoLog(program); - if (log === null) log = "(unknown error)"; - HEAP32[p >> 2] = log.length + 1; - } else if (pname == 35719) { - if (!program.maxUniformLength) { - for (var i = 0; i < GLctx.getProgramParameter(program, 35718); ++i) { - program.maxUniformLength = Math.max(program.maxUniformLength, GLctx.getActiveUniform(program, i).name.length + 1); - } - } - HEAP32[p >> 2] = program.maxUniformLength; - } else if (pname == 35722) { - if (!program.maxAttributeLength) { - for (var i = 0; i < GLctx.getProgramParameter(program, 35721); ++i) { - program.maxAttributeLength = Math.max(program.maxAttributeLength, GLctx.getActiveAttrib(program, i).name.length + 1); - } - } - HEAP32[p >> 2] = program.maxAttributeLength; - } else if (pname == 35381) { - if (!program.maxUniformBlockNameLength) { - for (var i = 0; i < GLctx.getProgramParameter(program, 35382); ++i) { - program.maxUniformBlockNameLength = Math.max(program.maxUniformBlockNameLength, GLctx.getActiveUniformBlockName(program, i).length + 1); - } - } - HEAP32[p >> 2] = program.maxUniformBlockNameLength; - } else { - HEAP32[p >> 2] = GLctx.getProgramParameter(program, pname); - } -}; -var _emscripten_glGetProgramiv = _glGetProgramiv; -var _glGetQueryObjecti64vEXT = function _glGetQueryObjecti64vEXT(id, pname, params) { - if (!params) { - GL.recordError(1281); - return; - } - var query = GL.queries[id]; - var param; - if (GL.currentContext.version < 2) { - param = GLctx.disjointTimerQueryExt["getQueryObjectEXT"](query, pname); - } else { - param = GLctx.getQueryParameter(query, pname); - } - var ret; - if (typeof param == "boolean") { - ret = param ? 1 : 0; - } else { - ret = param; - } - writeI53ToI64(params, ret); -}; -var _emscripten_glGetQueryObjecti64vEXT = _glGetQueryObjecti64vEXT; -var _glGetQueryObjectivEXT = function _glGetQueryObjectivEXT(id, pname, params) { - if (!params) { - GL.recordError(1281); - return; - } - var query = GL.queries[id]; - var param = GLctx.disjointTimerQueryExt["getQueryObjectEXT"](query, pname); - var ret; - if (typeof param == "boolean") { - ret = param ? 1 : 0; - } else { - ret = param; - } - HEAP32[params >> 2] = ret; -}; -var _emscripten_glGetQueryObjectivEXT = _glGetQueryObjectivEXT; -var _glGetQueryObjectui64vEXT = _glGetQueryObjecti64vEXT; -var _emscripten_glGetQueryObjectui64vEXT = _glGetQueryObjectui64vEXT; -var _glGetQueryObjectuiv = function _glGetQueryObjectuiv(id, pname, params) { - if (!params) { - GL.recordError(1281); - return; - } - var query = GL.queries[id]; - var param = GLctx.getQueryParameter(query, pname); - var ret; - if (typeof param == "boolean") { - ret = param ? 1 : 0; - } else { - ret = param; - } - HEAP32[params >> 2] = ret; -}; -var _emscripten_glGetQueryObjectuiv = _glGetQueryObjectuiv; -var _glGetQueryObjectuivEXT = _glGetQueryObjectivEXT; -var _emscripten_glGetQueryObjectuivEXT = _glGetQueryObjectuivEXT; -var _glGetQueryiv = function _glGetQueryiv(target, pname, params) { - if (!params) { - GL.recordError(1281); - return; - } - HEAP32[params >> 2] = GLctx.getQuery(target, pname); -}; -var _emscripten_glGetQueryiv = _glGetQueryiv; -var _glGetQueryivEXT = function _glGetQueryivEXT(target, pname, params) { - if (!params) { - GL.recordError(1281); - return; - } - HEAP32[params >> 2] = GLctx.disjointTimerQueryExt["getQueryEXT"](target, pname); -}; -var _emscripten_glGetQueryivEXT = _glGetQueryivEXT; -var _glGetRenderbufferParameteriv = function _glGetRenderbufferParameteriv(target, pname, params) { - if (!params) { - GL.recordError(1281); - return; - } - HEAP32[params >> 2] = GLctx.getRenderbufferParameter(target, pname); -}; -var _emscripten_glGetRenderbufferParameteriv = _glGetRenderbufferParameteriv; -var _glGetSamplerParameterfv = function _glGetSamplerParameterfv(sampler, pname, params) { - if (!params) { - GL.recordError(1281); - return; - } - HEAPF32[params >> 2] = GLctx.getSamplerParameter(GL.samplers[sampler], pname); -}; -var _emscripten_glGetSamplerParameterfv = _glGetSamplerParameterfv; -var _glGetSamplerParameteriv = function _glGetSamplerParameteriv(sampler, pname, params) { - if (!params) { - GL.recordError(1281); - return; - } - HEAP32[params >> 2] = GLctx.getSamplerParameter(GL.samplers[sampler], pname); -}; -var _emscripten_glGetSamplerParameteriv = _glGetSamplerParameteriv; -var _glGetShaderInfoLog = function _glGetShaderInfoLog(shader, maxLength, length, infoLog) { - var log = GLctx.getShaderInfoLog(GL.shaders[shader]); - if (log === null) log = "(unknown error)"; - var numBytesWrittenExclNull = maxLength > 0 && infoLog ? stringToUTF8(log, infoLog, maxLength) : 0; - if (length) HEAP32[length >> 2] = numBytesWrittenExclNull; -}; -var _emscripten_glGetShaderInfoLog = _glGetShaderInfoLog; -var _glGetShaderPrecisionFormat = function _glGetShaderPrecisionFormat(shaderType, precisionType, range, precision) { - var result = GLctx.getShaderPrecisionFormat(shaderType, precisionType); - HEAP32[range >> 2] = result.rangeMin; - HEAP32[range + 4 >> 2] = result.rangeMax; - HEAP32[precision >> 2] = result.precision; -}; -var _emscripten_glGetShaderPrecisionFormat = _glGetShaderPrecisionFormat; -var _glGetShaderSource = function _glGetShaderSource(shader, bufSize, length, source) { - var result = GLctx.getShaderSource(GL.shaders[shader]); - if (!result) return; - var numBytesWrittenExclNull = bufSize > 0 && source ? stringToUTF8(result, source, bufSize) : 0; - if (length) HEAP32[length >> 2] = numBytesWrittenExclNull; -}; -var _emscripten_glGetShaderSource = _glGetShaderSource; -var _glGetShaderiv = function _glGetShaderiv(shader, pname, p) { - if (!p) { - GL.recordError(1281); - return; - } - if (pname == 35716) { - var log = GLctx.getShaderInfoLog(GL.shaders[shader]); - if (log === null) log = "(unknown error)"; - var logLength = log ? log.length + 1 : 0; - HEAP32[p >> 2] = logLength; - } else if (pname == 35720) { - var source = GLctx.getShaderSource(GL.shaders[shader]); - var sourceLength = source ? source.length + 1 : 0; - HEAP32[p >> 2] = sourceLength; - } else { - HEAP32[p >> 2] = GLctx.getShaderParameter(GL.shaders[shader], pname); - } -}; -var _emscripten_glGetShaderiv = _glGetShaderiv; -var stringToNewUTF8 = function stringToNewUTF8(str) { - var size = lengthBytesUTF8(str) + 1; - var ret = _malloc(size); - if (ret) stringToUTF8(str, ret, size); - return ret; -}; -var _glGetString = function _glGetString(name_) { - var ret = GL.stringCache[name_]; - if (!ret) { - switch (name_) { - case 7939: - ret = stringToNewUTF8(webglGetExtensions().join(" ")); - break; - case 7936: - case 7937: - case 37445: - case 37446: - var s = GLctx.getParameter(name_); - if (!s) { - GL.recordError(1280); - } - ret = s ? stringToNewUTF8(s) : 0; - break; - case 7938: - var glVersion = GLctx.getParameter(7938); - if (GL.currentContext.version >= 2) glVersion = "OpenGL ES 3.0 (".concat(glVersion, ")");else { - glVersion = "OpenGL ES 2.0 (".concat(glVersion, ")"); - } - ret = stringToNewUTF8(glVersion); - break; - case 35724: - var glslVersion = GLctx.getParameter(35724); - var ver_re = /^WebGL GLSL ES ([0-9]\.[0-9][0-9]?)(?:$| .*)/; - var ver_num = glslVersion.match(ver_re); - if (ver_num !== null) { - if (ver_num[1].length == 3) ver_num[1] = ver_num[1] + "0"; - glslVersion = "OpenGL ES GLSL ES ".concat(ver_num[1], " (").concat(glslVersion, ")"); - } - ret = stringToNewUTF8(glslVersion); - break; - default: - GL.recordError(1280); - } - GL.stringCache[name_] = ret; - } - return ret; -}; -var _emscripten_glGetString = _glGetString; -var _glGetStringi = function _glGetStringi(name, index) { - if (GL.currentContext.version < 2) { - GL.recordError(1282); - return 0; - } - var stringiCache = GL.stringiCache[name]; - if (stringiCache) { - if (index < 0 || index >= stringiCache.length) { - GL.recordError(1281); - return 0; - } - return stringiCache[index]; - } - switch (name) { - case 7939: - var exts = webglGetExtensions().map(stringToNewUTF8); - stringiCache = GL.stringiCache[name] = exts; - if (index < 0 || index >= stringiCache.length) { - GL.recordError(1281); - return 0; - } - return stringiCache[index]; - default: - GL.recordError(1280); - return 0; - } -}; -var _emscripten_glGetStringi = _glGetStringi; -var _glGetSynciv = function _glGetSynciv(sync, pname, bufSize, length, values) { - if (bufSize < 0) { - GL.recordError(1281); - return; - } - if (!values) { - GL.recordError(1281); - return; - } - var ret = GLctx.getSyncParameter(GL.syncs[sync], pname); - if (ret !== null) { - HEAP32[values >> 2] = ret; - if (length) HEAP32[length >> 2] = 1; - } -}; -var _emscripten_glGetSynciv = _glGetSynciv; -var _glGetTexParameterfv = function _glGetTexParameterfv(target, pname, params) { - if (!params) { - GL.recordError(1281); - return; - } - HEAPF32[params >> 2] = GLctx.getTexParameter(target, pname); -}; -var _emscripten_glGetTexParameterfv = _glGetTexParameterfv; -var _glGetTexParameteriv = function _glGetTexParameteriv(target, pname, params) { - if (!params) { - GL.recordError(1281); - return; - } - HEAP32[params >> 2] = GLctx.getTexParameter(target, pname); -}; -var _emscripten_glGetTexParameteriv = _glGetTexParameteriv; -var _glGetTransformFeedbackVarying = function _glGetTransformFeedbackVarying(program, index, bufSize, length, size, type, name) { - program = GL.programs[program]; - var info = GLctx.getTransformFeedbackVarying(program, index); - if (!info) return; - if (name && bufSize > 0) { - var numBytesWrittenExclNull = stringToUTF8(info.name, name, bufSize); - if (length) HEAP32[length >> 2] = numBytesWrittenExclNull; - } else { - if (length) HEAP32[length >> 2] = 0; - } - if (size) HEAP32[size >> 2] = info.size; - if (type) HEAP32[type >> 2] = info.type; -}; -var _emscripten_glGetTransformFeedbackVarying = _glGetTransformFeedbackVarying; -var _glGetUniformBlockIndex = function _glGetUniformBlockIndex(program, uniformBlockName) { - return GLctx.getUniformBlockIndex(GL.programs[program], UTF8ToString(uniformBlockName)); -}; -var _emscripten_glGetUniformBlockIndex = _glGetUniformBlockIndex; -var _glGetUniformIndices = function _glGetUniformIndices(program, uniformCount, uniformNames, uniformIndices) { - if (!uniformIndices) { - GL.recordError(1281); - return; - } - if (uniformCount > 0 && (uniformNames == 0 || uniformIndices == 0)) { - GL.recordError(1281); - return; - } - program = GL.programs[program]; - var names = []; - for (var i = 0; i < uniformCount; i++) names.push(UTF8ToString(HEAP32[uniformNames + i * 4 >> 2])); - var result = GLctx.getUniformIndices(program, names); - if (!result) return; - var len = result.length; - for (var i = 0; i < len; i++) { - HEAP32[uniformIndices + i * 4 >> 2] = result[i]; - } -}; -var _emscripten_glGetUniformIndices = _glGetUniformIndices; -var webglGetLeftBracePos = function webglGetLeftBracePos(name) { - return name.slice(-1) == "]" && name.lastIndexOf("["); -}; -var webglPrepareUniformLocationsBeforeFirstUse = function webglPrepareUniformLocationsBeforeFirstUse(program) { - var uniformLocsById = program.uniformLocsById, - uniformSizeAndIdsByName = program.uniformSizeAndIdsByName, - i, - j; - if (!uniformLocsById) { - program.uniformLocsById = uniformLocsById = {}; - program.uniformArrayNamesById = {}; - for (i = 0; i < GLctx.getProgramParameter(program, 35718); ++i) { - var u = GLctx.getActiveUniform(program, i); - var nm = u.name; - var sz = u.size; - var lb = webglGetLeftBracePos(nm); - var arrayName = lb > 0 ? nm.slice(0, lb) : nm; - var id = program.uniformIdCounter; - program.uniformIdCounter += sz; - uniformSizeAndIdsByName[arrayName] = [sz, id]; - for (j = 0; j < sz; ++j) { - uniformLocsById[id] = j; - program.uniformArrayNamesById[id++] = arrayName; - } - } - } -}; -var _glGetUniformLocation = function _glGetUniformLocation(program, name) { - name = UTF8ToString(name); - if (program = GL.programs[program]) { - webglPrepareUniformLocationsBeforeFirstUse(program); - var uniformLocsById = program.uniformLocsById; - var arrayIndex = 0; - var uniformBaseName = name; - var leftBrace = webglGetLeftBracePos(name); - if (leftBrace > 0) { - arrayIndex = jstoi_q(name.slice(leftBrace + 1)) >>> 0; - uniformBaseName = name.slice(0, leftBrace); - } - var sizeAndId = program.uniformSizeAndIdsByName[uniformBaseName]; - if (sizeAndId && arrayIndex < sizeAndId[0]) { - arrayIndex += sizeAndId[1]; - if (uniformLocsById[arrayIndex] = uniformLocsById[arrayIndex] || GLctx.getUniformLocation(program, name)) { - return arrayIndex; - } - } - } else { - GL.recordError(1281); - } - return -1; -}; -var _emscripten_glGetUniformLocation = _glGetUniformLocation; -var webglGetUniformLocation = function webglGetUniformLocation(location) { - var p = GLctx.currentProgram; - if (p) { - var webglLoc = p.uniformLocsById[location]; - if (typeof webglLoc == "number") { - p.uniformLocsById[location] = webglLoc = GLctx.getUniformLocation(p, p.uniformArrayNamesById[location] + (webglLoc > 0 ? "[".concat(webglLoc, "]") : "")); - } - return webglLoc; - } else { - GL.recordError(1282); - } -}; -var emscriptenWebGLGetUniform = function emscriptenWebGLGetUniform(program, location, params, type) { - if (!params) { - GL.recordError(1281); - return; - } - program = GL.programs[program]; - webglPrepareUniformLocationsBeforeFirstUse(program); - var data = GLctx.getUniform(program, webglGetUniformLocation(location)); - if (typeof data == "number" || typeof data == "boolean") { - switch (type) { - case 0: - HEAP32[params >> 2] = data; - break; - case 2: - HEAPF32[params >> 2] = data; - break; - } - } else { - for (var i = 0; i < data.length; i++) { - switch (type) { - case 0: - HEAP32[params + i * 4 >> 2] = data[i]; - break; - case 2: - HEAPF32[params + i * 4 >> 2] = data[i]; - break; - } - } - } -}; -var _glGetUniformfv = function _glGetUniformfv(program, location, params) { - emscriptenWebGLGetUniform(program, location, params, 2); -}; -var _emscripten_glGetUniformfv = _glGetUniformfv; -var _glGetUniformiv = function _glGetUniformiv(program, location, params) { - emscriptenWebGLGetUniform(program, location, params, 0); -}; -var _emscripten_glGetUniformiv = _glGetUniformiv; -var _glGetUniformuiv = function _glGetUniformuiv(program, location, params) { - return emscriptenWebGLGetUniform(program, location, params, 0); -}; -var _emscripten_glGetUniformuiv = _glGetUniformuiv; -var emscriptenWebGLGetVertexAttrib = function emscriptenWebGLGetVertexAttrib(index, pname, params, type) { - if (!params) { - GL.recordError(1281); - return; - } - var data = GLctx.getVertexAttrib(index, pname); - if (pname == 34975) { - HEAP32[params >> 2] = data && data["name"]; - } else if (typeof data == "number" || typeof data == "boolean") { - switch (type) { - case 0: - HEAP32[params >> 2] = data; - break; - case 2: - HEAPF32[params >> 2] = data; - break; - case 5: - HEAP32[params >> 2] = Math.fround(data); - break; - } - } else { - for (var i = 0; i < data.length; i++) { - switch (type) { - case 0: - HEAP32[params + i * 4 >> 2] = data[i]; - break; - case 2: - HEAPF32[params + i * 4 >> 2] = data[i]; - break; - case 5: - HEAP32[params + i * 4 >> 2] = Math.fround(data[i]); - break; - } - } - } -}; -var _glGetVertexAttribIiv = function _glGetVertexAttribIiv(index, pname, params) { - emscriptenWebGLGetVertexAttrib(index, pname, params, 0); -}; -var _emscripten_glGetVertexAttribIiv = _glGetVertexAttribIiv; -var _glGetVertexAttribIuiv = _glGetVertexAttribIiv; -var _emscripten_glGetVertexAttribIuiv = _glGetVertexAttribIuiv; -var _glGetVertexAttribPointerv = function _glGetVertexAttribPointerv(index, pname, pointer) { - if (!pointer) { - GL.recordError(1281); - return; - } - HEAP32[pointer >> 2] = GLctx.getVertexAttribOffset(index, pname); -}; -var _emscripten_glGetVertexAttribPointerv = _glGetVertexAttribPointerv; -var _glGetVertexAttribfv = function _glGetVertexAttribfv(index, pname, params) { - emscriptenWebGLGetVertexAttrib(index, pname, params, 2); -}; -var _emscripten_glGetVertexAttribfv = _glGetVertexAttribfv; -var _glGetVertexAttribiv = function _glGetVertexAttribiv(index, pname, params) { - emscriptenWebGLGetVertexAttrib(index, pname, params, 5); -}; -var _emscripten_glGetVertexAttribiv = _glGetVertexAttribiv; -var _glHint = function _glHint(x0, x1) { - return GLctx.hint(x0, x1); -}; -var _emscripten_glHint = _glHint; -var _glInvalidateFramebuffer = function _glInvalidateFramebuffer(target, numAttachments, attachments) { - var list = tempFixedLengthArray[numAttachments]; - for (var i = 0; i < numAttachments; i++) { - list[i] = HEAP32[attachments + i * 4 >> 2]; - } - GLctx.invalidateFramebuffer(target, list); -}; -var _emscripten_glInvalidateFramebuffer = _glInvalidateFramebuffer; -var _glInvalidateSubFramebuffer = function _glInvalidateSubFramebuffer(target, numAttachments, attachments, x, y, width, height) { - var list = tempFixedLengthArray[numAttachments]; - for (var i = 0; i < numAttachments; i++) { - list[i] = HEAP32[attachments + i * 4 >> 2]; - } - GLctx.invalidateSubFramebuffer(target, list, x, y, width, height); -}; -var _emscripten_glInvalidateSubFramebuffer = _glInvalidateSubFramebuffer; -var _glIsBuffer = function _glIsBuffer(buffer) { - var b = GL.buffers[buffer]; - if (!b) return 0; - return GLctx.isBuffer(b); -}; -var _emscripten_glIsBuffer = _glIsBuffer; -var _glIsEnabled = function _glIsEnabled(x0) { - return GLctx.isEnabled(x0); -}; -var _emscripten_glIsEnabled = _glIsEnabled; -var _glIsFramebuffer = function _glIsFramebuffer(framebuffer) { - var fb = GL.framebuffers[framebuffer]; - if (!fb) return 0; - return GLctx.isFramebuffer(fb); -}; -var _emscripten_glIsFramebuffer = _glIsFramebuffer; -var _glIsProgram = function _glIsProgram(program) { - program = GL.programs[program]; - if (!program) return 0; - return GLctx.isProgram(program); -}; -var _emscripten_glIsProgram = _glIsProgram; -var _glIsQuery = function _glIsQuery(id) { - var query = GL.queries[id]; - if (!query) return 0; - return GLctx.isQuery(query); -}; -var _emscripten_glIsQuery = _glIsQuery; -var _glIsQueryEXT = function _glIsQueryEXT(id) { - var query = GL.queries[id]; - if (!query) return 0; - return GLctx.disjointTimerQueryExt["isQueryEXT"](query); -}; -var _emscripten_glIsQueryEXT = _glIsQueryEXT; -var _glIsRenderbuffer = function _glIsRenderbuffer(renderbuffer) { - var rb = GL.renderbuffers[renderbuffer]; - if (!rb) return 0; - return GLctx.isRenderbuffer(rb); -}; -var _emscripten_glIsRenderbuffer = _glIsRenderbuffer; -var _glIsSampler = function _glIsSampler(id) { - var sampler = GL.samplers[id]; - if (!sampler) return 0; - return GLctx.isSampler(sampler); -}; -var _emscripten_glIsSampler = _glIsSampler; -var _glIsShader = function _glIsShader(shader) { - var s = GL.shaders[shader]; - if (!s) return 0; - return GLctx.isShader(s); -}; -var _emscripten_glIsShader = _glIsShader; -var _glIsSync = function _glIsSync(sync) { - return GLctx.isSync(GL.syncs[sync]); -}; -var _emscripten_glIsSync = _glIsSync; -var _glIsTexture = function _glIsTexture(id) { - var texture = GL.textures[id]; - if (!texture) return 0; - return GLctx.isTexture(texture); -}; -var _emscripten_glIsTexture = _glIsTexture; -var _glIsTransformFeedback = function _glIsTransformFeedback(id) { - return GLctx.isTransformFeedback(GL.transformFeedbacks[id]); -}; -var _emscripten_glIsTransformFeedback = _glIsTransformFeedback; -var _glIsVertexArray = function _glIsVertexArray(array) { - var vao = GL.vaos[array]; - if (!vao) return 0; - return GLctx.isVertexArray(vao); -}; -var _emscripten_glIsVertexArray = _glIsVertexArray; -var _glIsVertexArrayOES = _glIsVertexArray; -var _emscripten_glIsVertexArrayOES = _glIsVertexArrayOES; -var _glLineWidth = function _glLineWidth(x0) { - return GLctx.lineWidth(x0); -}; -var _emscripten_glLineWidth = _glLineWidth; -var _glLinkProgram = function _glLinkProgram(program) { - program = GL.programs[program]; - GLctx.linkProgram(program); - program.uniformLocsById = 0; - program.uniformSizeAndIdsByName = {}; -}; -var _emscripten_glLinkProgram = _glLinkProgram; -var _glPauseTransformFeedback = function _glPauseTransformFeedback() { - return GLctx.pauseTransformFeedback(); -}; -var _emscripten_glPauseTransformFeedback = _glPauseTransformFeedback; -var _glPixelStorei = function _glPixelStorei(pname, param) { - if (pname == 3317) { - GL.unpackAlignment = param; - } - GLctx.pixelStorei(pname, param); -}; -var _emscripten_glPixelStorei = _glPixelStorei; -var _glPolygonOffset = function _glPolygonOffset(x0, x1) { - return GLctx.polygonOffset(x0, x1); -}; -var _emscripten_glPolygonOffset = _glPolygonOffset; -var _glProgramBinary = function _glProgramBinary(program, binaryFormat, binary, length) { - GL.recordError(1280); -}; -var _emscripten_glProgramBinary = _glProgramBinary; -var _glProgramParameteri = function _glProgramParameteri(program, pname, value) { - GL.recordError(1280); -}; -var _emscripten_glProgramParameteri = _glProgramParameteri; -var _glQueryCounterEXT = function _glQueryCounterEXT(id, target) { - GLctx.disjointTimerQueryExt["queryCounterEXT"](GL.queries[id], target); -}; -var _emscripten_glQueryCounterEXT = _glQueryCounterEXT; -var _glReadBuffer = function _glReadBuffer(x0) { - return GLctx.readBuffer(x0); -}; -var _emscripten_glReadBuffer = _glReadBuffer; -var computeUnpackAlignedImageSize = function computeUnpackAlignedImageSize(width, height, sizePerPixel, alignment) { - function roundedToNextMultipleOf(x, y) { - return x + y - 1 & -y; - } - var plainRowSize = width * sizePerPixel; - var alignedRowSize = roundedToNextMultipleOf(plainRowSize, alignment); - return height * alignedRowSize; -}; -var colorChannelsInGlTextureFormat = function colorChannelsInGlTextureFormat(format) { - var colorChannels = { - 5: 3, - 6: 4, - 8: 2, - 29502: 3, - 29504: 4, - 26917: 2, - 26918: 2, - 29846: 3, - 29847: 4 - }; - return colorChannels[format - 6402] || 1; -}; -var heapObjectForWebGLType = function heapObjectForWebGLType(type) { - type -= 5120; - if (type == 0) return HEAP8; - if (type == 1) return HEAPU8; - if (type == 2) return HEAP16; - if (type == 4) return HEAP32; - if (type == 6) return HEAPF32; - if (type == 5 || type == 28922 || type == 28520 || type == 30779 || type == 30782) return HEAPU32; - return HEAPU16; -}; -var toTypedArrayIndex = function toTypedArrayIndex(pointer, heap) { - return pointer >>> 31 - Math.clz32(heap.BYTES_PER_ELEMENT); -}; -var emscriptenWebGLGetTexPixelData = function emscriptenWebGLGetTexPixelData(type, format, width, height, pixels, internalFormat) { - var heap = heapObjectForWebGLType(type); - var sizePerPixel = colorChannelsInGlTextureFormat(format) * heap.BYTES_PER_ELEMENT; - var bytes = computeUnpackAlignedImageSize(width, height, sizePerPixel, GL.unpackAlignment); - return heap.subarray(toTypedArrayIndex(pixels, heap), toTypedArrayIndex(pixels + bytes, heap)); -}; -var _glReadPixels = function _glReadPixels(x, y, width, height, format, type, pixels) { - if (GL.currentContext.version >= 2) { - if (GLctx.currentPixelPackBufferBinding) { - GLctx.readPixels(x, y, width, height, format, type, pixels); - } else { - var heap = heapObjectForWebGLType(type); - var target = toTypedArrayIndex(pixels, heap); - GLctx.readPixels(x, y, width, height, format, type, heap, target); - } - return; - } - var pixelData = emscriptenWebGLGetTexPixelData(type, format, width, height, pixels, format); - if (!pixelData) { - GL.recordError(1280); - return; - } - GLctx.readPixels(x, y, width, height, format, type, pixelData); -}; -var _emscripten_glReadPixels = _glReadPixels; -var _glReleaseShaderCompiler = function _glReleaseShaderCompiler() {}; -var _emscripten_glReleaseShaderCompiler = _glReleaseShaderCompiler; -var _glRenderbufferStorage = function _glRenderbufferStorage(x0, x1, x2, x3) { - return GLctx.renderbufferStorage(x0, x1, x2, x3); -}; -var _emscripten_glRenderbufferStorage = _glRenderbufferStorage; -var _glRenderbufferStorageMultisample = function _glRenderbufferStorageMultisample(x0, x1, x2, x3, x4) { - return GLctx.renderbufferStorageMultisample(x0, x1, x2, x3, x4); -}; -var _emscripten_glRenderbufferStorageMultisample = _glRenderbufferStorageMultisample; -var _glResumeTransformFeedback = function _glResumeTransformFeedback() { - return GLctx.resumeTransformFeedback(); -}; -var _emscripten_glResumeTransformFeedback = _glResumeTransformFeedback; -var _glSampleCoverage = function _glSampleCoverage(value, invert) { - GLctx.sampleCoverage(value, !!invert); -}; -var _emscripten_glSampleCoverage = _glSampleCoverage; -var _glSamplerParameterf = function _glSamplerParameterf(sampler, pname, param) { - GLctx.samplerParameterf(GL.samplers[sampler], pname, param); -}; -var _emscripten_glSamplerParameterf = _glSamplerParameterf; -var _glSamplerParameterfv = function _glSamplerParameterfv(sampler, pname, params) { - var param = HEAPF32[params >> 2]; - GLctx.samplerParameterf(GL.samplers[sampler], pname, param); -}; -var _emscripten_glSamplerParameterfv = _glSamplerParameterfv; -var _glSamplerParameteri = function _glSamplerParameteri(sampler, pname, param) { - GLctx.samplerParameteri(GL.samplers[sampler], pname, param); -}; -var _emscripten_glSamplerParameteri = _glSamplerParameteri; -var _glSamplerParameteriv = function _glSamplerParameteriv(sampler, pname, params) { - var param = HEAP32[params >> 2]; - GLctx.samplerParameteri(GL.samplers[sampler], pname, param); -}; -var _emscripten_glSamplerParameteriv = _glSamplerParameteriv; -var _glScissor = function _glScissor(x0, x1, x2, x3) { - return GLctx.scissor(x0, x1, x2, x3); -}; -var _emscripten_glScissor = _glScissor; -var _glShaderBinary = function _glShaderBinary(count, shaders, binaryformat, binary, length) { - GL.recordError(1280); -}; -var _emscripten_glShaderBinary = _glShaderBinary; -var _glShaderSource = function _glShaderSource(shader, count, string, length) { - var source = GL.getSource(shader, count, string, length); - GLctx.shaderSource(GL.shaders[shader], source); -}; -var _emscripten_glShaderSource = _glShaderSource; -var _glStencilFunc = function _glStencilFunc(x0, x1, x2) { - return GLctx.stencilFunc(x0, x1, x2); -}; -var _emscripten_glStencilFunc = _glStencilFunc; -var _glStencilFuncSeparate = function _glStencilFuncSeparate(x0, x1, x2, x3) { - return GLctx.stencilFuncSeparate(x0, x1, x2, x3); -}; -var _emscripten_glStencilFuncSeparate = _glStencilFuncSeparate; -var _glStencilMask = function _glStencilMask(x0) { - return GLctx.stencilMask(x0); -}; -var _emscripten_glStencilMask = _glStencilMask; -var _glStencilMaskSeparate = function _glStencilMaskSeparate(x0, x1) { - return GLctx.stencilMaskSeparate(x0, x1); -}; -var _emscripten_glStencilMaskSeparate = _glStencilMaskSeparate; -var _glStencilOp = function _glStencilOp(x0, x1, x2) { - return GLctx.stencilOp(x0, x1, x2); -}; -var _emscripten_glStencilOp = _glStencilOp; -var _glStencilOpSeparate = function _glStencilOpSeparate(x0, x1, x2, x3) { - return GLctx.stencilOpSeparate(x0, x1, x2, x3); -}; -var _emscripten_glStencilOpSeparate = _glStencilOpSeparate; -var _glTexImage2D = function _glTexImage2D(target, level, internalFormat, width, height, border, format, type, pixels) { - if (GL.currentContext.version >= 2) { - if (GLctx.currentPixelUnpackBufferBinding) { - GLctx.texImage2D(target, level, internalFormat, width, height, border, format, type, pixels); - } else if (pixels) { - var heap = heapObjectForWebGLType(type); - GLctx.texImage2D(target, level, internalFormat, width, height, border, format, type, heap, toTypedArrayIndex(pixels, heap)); - } else { - GLctx.texImage2D(target, level, internalFormat, width, height, border, format, type, null); - } - return; - } - GLctx.texImage2D(target, level, internalFormat, width, height, border, format, type, pixels ? emscriptenWebGLGetTexPixelData(type, format, width, height, pixels, internalFormat) : null); -}; -var _emscripten_glTexImage2D = _glTexImage2D; -var _glTexImage3D = function _glTexImage3D(target, level, internalFormat, width, height, depth, border, format, type, pixels) { - if (GLctx.currentPixelUnpackBufferBinding) { - GLctx.texImage3D(target, level, internalFormat, width, height, depth, border, format, type, pixels); - } else if (pixels) { - var heap = heapObjectForWebGLType(type); - GLctx.texImage3D(target, level, internalFormat, width, height, depth, border, format, type, heap, toTypedArrayIndex(pixels, heap)); - } else { - GLctx.texImage3D(target, level, internalFormat, width, height, depth, border, format, type, null); - } -}; -var _emscripten_glTexImage3D = _glTexImage3D; -var _glTexParameterf = function _glTexParameterf(x0, x1, x2) { - return GLctx.texParameterf(x0, x1, x2); -}; -var _emscripten_glTexParameterf = _glTexParameterf; -var _glTexParameterfv = function _glTexParameterfv(target, pname, params) { - var param = HEAPF32[params >> 2]; - GLctx.texParameterf(target, pname, param); -}; -var _emscripten_glTexParameterfv = _glTexParameterfv; -var _glTexParameteri = function _glTexParameteri(x0, x1, x2) { - return GLctx.texParameteri(x0, x1, x2); -}; -var _emscripten_glTexParameteri = _glTexParameteri; -var _glTexParameteriv = function _glTexParameteriv(target, pname, params) { - var param = HEAP32[params >> 2]; - GLctx.texParameteri(target, pname, param); -}; -var _emscripten_glTexParameteriv = _glTexParameteriv; -var _glTexStorage2D = function _glTexStorage2D(x0, x1, x2, x3, x4) { - return GLctx.texStorage2D(x0, x1, x2, x3, x4); -}; -var _emscripten_glTexStorage2D = _glTexStorage2D; -var _glTexStorage3D = function _glTexStorage3D(x0, x1, x2, x3, x4, x5) { - return GLctx.texStorage3D(x0, x1, x2, x3, x4, x5); -}; -var _emscripten_glTexStorage3D = _glTexStorage3D; -var _glTexSubImage2D = function _glTexSubImage2D(target, level, xoffset, yoffset, width, height, format, type, pixels) { - if (GL.currentContext.version >= 2) { - if (GLctx.currentPixelUnpackBufferBinding) { - GLctx.texSubImage2D(target, level, xoffset, yoffset, width, height, format, type, pixels); - } else if (pixels) { - var heap = heapObjectForWebGLType(type); - GLctx.texSubImage2D(target, level, xoffset, yoffset, width, height, format, type, heap, toTypedArrayIndex(pixels, heap)); - return; - } - } - var pixelData = pixels ? emscriptenWebGLGetTexPixelData(type, format, width, height, pixels, 0) : null; - GLctx.texSubImage2D(target, level, xoffset, yoffset, width, height, format, type, pixelData); -}; -var _emscripten_glTexSubImage2D = _glTexSubImage2D; -var _glTexSubImage3D = function _glTexSubImage3D(target, level, xoffset, yoffset, zoffset, width, height, depth, format, type, pixels) { - if (GLctx.currentPixelUnpackBufferBinding) { - GLctx.texSubImage3D(target, level, xoffset, yoffset, zoffset, width, height, depth, format, type, pixels); - } else if (pixels) { - var heap = heapObjectForWebGLType(type); - GLctx.texSubImage3D(target, level, xoffset, yoffset, zoffset, width, height, depth, format, type, heap, toTypedArrayIndex(pixels, heap)); - } else { - GLctx.texSubImage3D(target, level, xoffset, yoffset, zoffset, width, height, depth, format, type, null); - } -}; -var _emscripten_glTexSubImage3D = _glTexSubImage3D; -var _glTransformFeedbackVaryings = function _glTransformFeedbackVaryings(program, count, varyings, bufferMode) { - program = GL.programs[program]; - var vars = []; - for (var i = 0; i < count; i++) vars.push(UTF8ToString(HEAP32[varyings + i * 4 >> 2])); - GLctx.transformFeedbackVaryings(program, vars, bufferMode); -}; -var _emscripten_glTransformFeedbackVaryings = _glTransformFeedbackVaryings; -var _glUniform1f = function _glUniform1f(location, v0) { - GLctx.uniform1f(webglGetUniformLocation(location), v0); -}; -var _emscripten_glUniform1f = _glUniform1f; -var miniTempWebGLFloatBuffers = []; -var _glUniform1fv = function _glUniform1fv(location, count, value) { - if (GL.currentContext.version >= 2) { - count && GLctx.uniform1fv(webglGetUniformLocation(location), HEAPF32, value >> 2, count); - return; - } - if (count <= 288) { - var view = miniTempWebGLFloatBuffers[count - 1]; - for (var i = 0; i < count; ++i) { - view[i] = HEAPF32[value + 4 * i >> 2]; - } - } else { - var view = HEAPF32.subarray(value >> 2, value + count * 4 >> 2); - } - GLctx.uniform1fv(webglGetUniformLocation(location), view); -}; -var _emscripten_glUniform1fv = _glUniform1fv; -var _glUniform1i = function _glUniform1i(location, v0) { - GLctx.uniform1i(webglGetUniformLocation(location), v0); -}; -var _emscripten_glUniform1i = _glUniform1i; -var miniTempWebGLIntBuffers = []; -var _glUniform1iv = function _glUniform1iv(location, count, value) { - if (GL.currentContext.version >= 2) { - count && GLctx.uniform1iv(webglGetUniformLocation(location), HEAP32, value >> 2, count); - return; - } - if (count <= 288) { - var view = miniTempWebGLIntBuffers[count - 1]; - for (var i = 0; i < count; ++i) { - view[i] = HEAP32[value + 4 * i >> 2]; - } - } else { - var view = HEAP32.subarray(value >> 2, value + count * 4 >> 2); - } - GLctx.uniform1iv(webglGetUniformLocation(location), view); -}; -var _emscripten_glUniform1iv = _glUniform1iv; -var _glUniform1ui = function _glUniform1ui(location, v0) { - GLctx.uniform1ui(webglGetUniformLocation(location), v0); -}; -var _emscripten_glUniform1ui = _glUniform1ui; -var _glUniform1uiv = function _glUniform1uiv(location, count, value) { - count && GLctx.uniform1uiv(webglGetUniformLocation(location), HEAPU32, value >> 2, count); -}; -var _emscripten_glUniform1uiv = _glUniform1uiv; -var _glUniform2f = function _glUniform2f(location, v0, v1) { - GLctx.uniform2f(webglGetUniformLocation(location), v0, v1); -}; -var _emscripten_glUniform2f = _glUniform2f; -var _glUniform2fv = function _glUniform2fv(location, count, value) { - if (GL.currentContext.version >= 2) { - count && GLctx.uniform2fv(webglGetUniformLocation(location), HEAPF32, value >> 2, count * 2); - return; - } - if (count <= 144) { - var view = miniTempWebGLFloatBuffers[2 * count - 1]; - for (var i = 0; i < 2 * count; i += 2) { - view[i] = HEAPF32[value + 4 * i >> 2]; - view[i + 1] = HEAPF32[value + (4 * i + 4) >> 2]; - } - } else { - var view = HEAPF32.subarray(value >> 2, value + count * 8 >> 2); - } - GLctx.uniform2fv(webglGetUniformLocation(location), view); -}; -var _emscripten_glUniform2fv = _glUniform2fv; -var _glUniform2i = function _glUniform2i(location, v0, v1) { - GLctx.uniform2i(webglGetUniformLocation(location), v0, v1); -}; -var _emscripten_glUniform2i = _glUniform2i; -var _glUniform2iv = function _glUniform2iv(location, count, value) { - if (GL.currentContext.version >= 2) { - count && GLctx.uniform2iv(webglGetUniformLocation(location), HEAP32, value >> 2, count * 2); - return; - } - if (count <= 144) { - var view = miniTempWebGLIntBuffers[2 * count - 1]; - for (var i = 0; i < 2 * count; i += 2) { - view[i] = HEAP32[value + 4 * i >> 2]; - view[i + 1] = HEAP32[value + (4 * i + 4) >> 2]; - } - } else { - var view = HEAP32.subarray(value >> 2, value + count * 8 >> 2); - } - GLctx.uniform2iv(webglGetUniformLocation(location), view); -}; -var _emscripten_glUniform2iv = _glUniform2iv; -var _glUniform2ui = function _glUniform2ui(location, v0, v1) { - GLctx.uniform2ui(webglGetUniformLocation(location), v0, v1); -}; -var _emscripten_glUniform2ui = _glUniform2ui; -var _glUniform2uiv = function _glUniform2uiv(location, count, value) { - count && GLctx.uniform2uiv(webglGetUniformLocation(location), HEAPU32, value >> 2, count * 2); -}; -var _emscripten_glUniform2uiv = _glUniform2uiv; -var _glUniform3f = function _glUniform3f(location, v0, v1, v2) { - GLctx.uniform3f(webglGetUniformLocation(location), v0, v1, v2); -}; -var _emscripten_glUniform3f = _glUniform3f; -var _glUniform3fv = function _glUniform3fv(location, count, value) { - if (GL.currentContext.version >= 2) { - count && GLctx.uniform3fv(webglGetUniformLocation(location), HEAPF32, value >> 2, count * 3); - return; - } - if (count <= 96) { - var view = miniTempWebGLFloatBuffers[3 * count - 1]; - for (var i = 0; i < 3 * count; i += 3) { - view[i] = HEAPF32[value + 4 * i >> 2]; - view[i + 1] = HEAPF32[value + (4 * i + 4) >> 2]; - view[i + 2] = HEAPF32[value + (4 * i + 8) >> 2]; - } - } else { - var view = HEAPF32.subarray(value >> 2, value + count * 12 >> 2); - } - GLctx.uniform3fv(webglGetUniformLocation(location), view); -}; -var _emscripten_glUniform3fv = _glUniform3fv; -var _glUniform3i = function _glUniform3i(location, v0, v1, v2) { - GLctx.uniform3i(webglGetUniformLocation(location), v0, v1, v2); -}; -var _emscripten_glUniform3i = _glUniform3i; -var _glUniform3iv = function _glUniform3iv(location, count, value) { - if (GL.currentContext.version >= 2) { - count && GLctx.uniform3iv(webglGetUniformLocation(location), HEAP32, value >> 2, count * 3); - return; - } - if (count <= 96) { - var view = miniTempWebGLIntBuffers[3 * count - 1]; - for (var i = 0; i < 3 * count; i += 3) { - view[i] = HEAP32[value + 4 * i >> 2]; - view[i + 1] = HEAP32[value + (4 * i + 4) >> 2]; - view[i + 2] = HEAP32[value + (4 * i + 8) >> 2]; - } - } else { - var view = HEAP32.subarray(value >> 2, value + count * 12 >> 2); - } - GLctx.uniform3iv(webglGetUniformLocation(location), view); -}; -var _emscripten_glUniform3iv = _glUniform3iv; -var _glUniform3ui = function _glUniform3ui(location, v0, v1, v2) { - GLctx.uniform3ui(webglGetUniformLocation(location), v0, v1, v2); -}; -var _emscripten_glUniform3ui = _glUniform3ui; -var _glUniform3uiv = function _glUniform3uiv(location, count, value) { - count && GLctx.uniform3uiv(webglGetUniformLocation(location), HEAPU32, value >> 2, count * 3); -}; -var _emscripten_glUniform3uiv = _glUniform3uiv; -var _glUniform4f = function _glUniform4f(location, v0, v1, v2, v3) { - GLctx.uniform4f(webglGetUniformLocation(location), v0, v1, v2, v3); -}; -var _emscripten_glUniform4f = _glUniform4f; -var _glUniform4fv = function _glUniform4fv(location, count, value) { - if (GL.currentContext.version >= 2) { - count && GLctx.uniform4fv(webglGetUniformLocation(location), HEAPF32, value >> 2, count * 4); - return; - } - if (count <= 72) { - var view = miniTempWebGLFloatBuffers[4 * count - 1]; - var heap = HEAPF32; - value = value >> 2; - for (var i = 0; i < 4 * count; i += 4) { - var dst = value + i; - view[i] = heap[dst]; - view[i + 1] = heap[dst + 1]; - view[i + 2] = heap[dst + 2]; - view[i + 3] = heap[dst + 3]; - } - } else { - var view = HEAPF32.subarray(value >> 2, value + count * 16 >> 2); - } - GLctx.uniform4fv(webglGetUniformLocation(location), view); -}; -var _emscripten_glUniform4fv = _glUniform4fv; -var _glUniform4i = function _glUniform4i(location, v0, v1, v2, v3) { - GLctx.uniform4i(webglGetUniformLocation(location), v0, v1, v2, v3); -}; -var _emscripten_glUniform4i = _glUniform4i; -var _glUniform4iv = function _glUniform4iv(location, count, value) { - if (GL.currentContext.version >= 2) { - count && GLctx.uniform4iv(webglGetUniformLocation(location), HEAP32, value >> 2, count * 4); - return; - } - if (count <= 72) { - var view = miniTempWebGLIntBuffers[4 * count - 1]; - for (var i = 0; i < 4 * count; i += 4) { - view[i] = HEAP32[value + 4 * i >> 2]; - view[i + 1] = HEAP32[value + (4 * i + 4) >> 2]; - view[i + 2] = HEAP32[value + (4 * i + 8) >> 2]; - view[i + 3] = HEAP32[value + (4 * i + 12) >> 2]; - } - } else { - var view = HEAP32.subarray(value >> 2, value + count * 16 >> 2); - } - GLctx.uniform4iv(webglGetUniformLocation(location), view); -}; -var _emscripten_glUniform4iv = _glUniform4iv; -var _glUniform4ui = function _glUniform4ui(location, v0, v1, v2, v3) { - GLctx.uniform4ui(webglGetUniformLocation(location), v0, v1, v2, v3); -}; -var _emscripten_glUniform4ui = _glUniform4ui; -var _glUniform4uiv = function _glUniform4uiv(location, count, value) { - count && GLctx.uniform4uiv(webglGetUniformLocation(location), HEAPU32, value >> 2, count * 4); -}; -var _emscripten_glUniform4uiv = _glUniform4uiv; -var _glUniformBlockBinding = function _glUniformBlockBinding(program, uniformBlockIndex, uniformBlockBinding) { - program = GL.programs[program]; - GLctx.uniformBlockBinding(program, uniformBlockIndex, uniformBlockBinding); -}; -var _emscripten_glUniformBlockBinding = _glUniformBlockBinding; -var _glUniformMatrix2fv = function _glUniformMatrix2fv(location, count, transpose, value) { - if (GL.currentContext.version >= 2) { - count && GLctx.uniformMatrix2fv(webglGetUniformLocation(location), !!transpose, HEAPF32, value >> 2, count * 4); - return; - } - if (count <= 72) { - var view = miniTempWebGLFloatBuffers[4 * count - 1]; - for (var i = 0; i < 4 * count; i += 4) { - view[i] = HEAPF32[value + 4 * i >> 2]; - view[i + 1] = HEAPF32[value + (4 * i + 4) >> 2]; - view[i + 2] = HEAPF32[value + (4 * i + 8) >> 2]; - view[i + 3] = HEAPF32[value + (4 * i + 12) >> 2]; - } - } else { - var view = HEAPF32.subarray(value >> 2, value + count * 16 >> 2); - } - GLctx.uniformMatrix2fv(webglGetUniformLocation(location), !!transpose, view); -}; -var _emscripten_glUniformMatrix2fv = _glUniformMatrix2fv; -var _glUniformMatrix2x3fv = function _glUniformMatrix2x3fv(location, count, transpose, value) { - count && GLctx.uniformMatrix2x3fv(webglGetUniformLocation(location), !!transpose, HEAPF32, value >> 2, count * 6); -}; -var _emscripten_glUniformMatrix2x3fv = _glUniformMatrix2x3fv; -var _glUniformMatrix2x4fv = function _glUniformMatrix2x4fv(location, count, transpose, value) { - count && GLctx.uniformMatrix2x4fv(webglGetUniformLocation(location), !!transpose, HEAPF32, value >> 2, count * 8); -}; -var _emscripten_glUniformMatrix2x4fv = _glUniformMatrix2x4fv; -var _glUniformMatrix3fv = function _glUniformMatrix3fv(location, count, transpose, value) { - if (GL.currentContext.version >= 2) { - count && GLctx.uniformMatrix3fv(webglGetUniformLocation(location), !!transpose, HEAPF32, value >> 2, count * 9); - return; - } - if (count <= 32) { - var view = miniTempWebGLFloatBuffers[9 * count - 1]; - for (var i = 0; i < 9 * count; i += 9) { - view[i] = HEAPF32[value + 4 * i >> 2]; - view[i + 1] = HEAPF32[value + (4 * i + 4) >> 2]; - view[i + 2] = HEAPF32[value + (4 * i + 8) >> 2]; - view[i + 3] = HEAPF32[value + (4 * i + 12) >> 2]; - view[i + 4] = HEAPF32[value + (4 * i + 16) >> 2]; - view[i + 5] = HEAPF32[value + (4 * i + 20) >> 2]; - view[i + 6] = HEAPF32[value + (4 * i + 24) >> 2]; - view[i + 7] = HEAPF32[value + (4 * i + 28) >> 2]; - view[i + 8] = HEAPF32[value + (4 * i + 32) >> 2]; - } - } else { - var view = HEAPF32.subarray(value >> 2, value + count * 36 >> 2); - } - GLctx.uniformMatrix3fv(webglGetUniformLocation(location), !!transpose, view); -}; -var _emscripten_glUniformMatrix3fv = _glUniformMatrix3fv; -var _glUniformMatrix3x2fv = function _glUniformMatrix3x2fv(location, count, transpose, value) { - count && GLctx.uniformMatrix3x2fv(webglGetUniformLocation(location), !!transpose, HEAPF32, value >> 2, count * 6); -}; -var _emscripten_glUniformMatrix3x2fv = _glUniformMatrix3x2fv; -var _glUniformMatrix3x4fv = function _glUniformMatrix3x4fv(location, count, transpose, value) { - count && GLctx.uniformMatrix3x4fv(webglGetUniformLocation(location), !!transpose, HEAPF32, value >> 2, count * 12); -}; -var _emscripten_glUniformMatrix3x4fv = _glUniformMatrix3x4fv; -var _glUniformMatrix4fv = function _glUniformMatrix4fv(location, count, transpose, value) { - if (GL.currentContext.version >= 2) { - count && GLctx.uniformMatrix4fv(webglGetUniformLocation(location), !!transpose, HEAPF32, value >> 2, count * 16); - return; - } - if (count <= 18) { - var view = miniTempWebGLFloatBuffers[16 * count - 1]; - var heap = HEAPF32; - value = value >> 2; - for (var i = 0; i < 16 * count; i += 16) { - var dst = value + i; - view[i] = heap[dst]; - view[i + 1] = heap[dst + 1]; - view[i + 2] = heap[dst + 2]; - view[i + 3] = heap[dst + 3]; - view[i + 4] = heap[dst + 4]; - view[i + 5] = heap[dst + 5]; - view[i + 6] = heap[dst + 6]; - view[i + 7] = heap[dst + 7]; - view[i + 8] = heap[dst + 8]; - view[i + 9] = heap[dst + 9]; - view[i + 10] = heap[dst + 10]; - view[i + 11] = heap[dst + 11]; - view[i + 12] = heap[dst + 12]; - view[i + 13] = heap[dst + 13]; - view[i + 14] = heap[dst + 14]; - view[i + 15] = heap[dst + 15]; - } - } else { - var view = HEAPF32.subarray(value >> 2, value + count * 64 >> 2); - } - GLctx.uniformMatrix4fv(webglGetUniformLocation(location), !!transpose, view); -}; -var _emscripten_glUniformMatrix4fv = _glUniformMatrix4fv; -var _glUniformMatrix4x2fv = function _glUniformMatrix4x2fv(location, count, transpose, value) { - count && GLctx.uniformMatrix4x2fv(webglGetUniformLocation(location), !!transpose, HEAPF32, value >> 2, count * 8); -}; -var _emscripten_glUniformMatrix4x2fv = _glUniformMatrix4x2fv; -var _glUniformMatrix4x3fv = function _glUniformMatrix4x3fv(location, count, transpose, value) { - count && GLctx.uniformMatrix4x3fv(webglGetUniformLocation(location), !!transpose, HEAPF32, value >> 2, count * 12); -}; -var _emscripten_glUniformMatrix4x3fv = _glUniformMatrix4x3fv; -var _glUseProgram = function _glUseProgram(program) { - program = GL.programs[program]; - GLctx.useProgram(program); - GLctx.currentProgram = program; -}; -var _emscripten_glUseProgram = _glUseProgram; -var _glValidateProgram = function _glValidateProgram(program) { - GLctx.validateProgram(GL.programs[program]); -}; -var _emscripten_glValidateProgram = _glValidateProgram; -var _glVertexAttrib1f = function _glVertexAttrib1f(x0, x1) { - return GLctx.vertexAttrib1f(x0, x1); -}; -var _emscripten_glVertexAttrib1f = _glVertexAttrib1f; -var _glVertexAttrib1fv = function _glVertexAttrib1fv(index, v) { - GLctx.vertexAttrib1f(index, HEAPF32[v >> 2]); -}; -var _emscripten_glVertexAttrib1fv = _glVertexAttrib1fv; -var _glVertexAttrib2f = function _glVertexAttrib2f(x0, x1, x2) { - return GLctx.vertexAttrib2f(x0, x1, x2); -}; -var _emscripten_glVertexAttrib2f = _glVertexAttrib2f; -var _glVertexAttrib2fv = function _glVertexAttrib2fv(index, v) { - GLctx.vertexAttrib2f(index, HEAPF32[v >> 2], HEAPF32[v + 4 >> 2]); -}; -var _emscripten_glVertexAttrib2fv = _glVertexAttrib2fv; -var _glVertexAttrib3f = function _glVertexAttrib3f(x0, x1, x2, x3) { - return GLctx.vertexAttrib3f(x0, x1, x2, x3); -}; -var _emscripten_glVertexAttrib3f = _glVertexAttrib3f; -var _glVertexAttrib3fv = function _glVertexAttrib3fv(index, v) { - GLctx.vertexAttrib3f(index, HEAPF32[v >> 2], HEAPF32[v + 4 >> 2], HEAPF32[v + 8 >> 2]); -}; -var _emscripten_glVertexAttrib3fv = _glVertexAttrib3fv; -var _glVertexAttrib4f = function _glVertexAttrib4f(x0, x1, x2, x3, x4) { - return GLctx.vertexAttrib4f(x0, x1, x2, x3, x4); -}; -var _emscripten_glVertexAttrib4f = _glVertexAttrib4f; -var _glVertexAttrib4fv = function _glVertexAttrib4fv(index, v) { - GLctx.vertexAttrib4f(index, HEAPF32[v >> 2], HEAPF32[v + 4 >> 2], HEAPF32[v + 8 >> 2], HEAPF32[v + 12 >> 2]); -}; -var _emscripten_glVertexAttrib4fv = _glVertexAttrib4fv; -var _glVertexAttribDivisor = function _glVertexAttribDivisor(index, divisor) { - GLctx.vertexAttribDivisor(index, divisor); -}; -var _emscripten_glVertexAttribDivisor = _glVertexAttribDivisor; -var _glVertexAttribDivisorANGLE = _glVertexAttribDivisor; -var _emscripten_glVertexAttribDivisorANGLE = _glVertexAttribDivisorANGLE; -var _glVertexAttribDivisorARB = _glVertexAttribDivisor; -var _emscripten_glVertexAttribDivisorARB = _glVertexAttribDivisorARB; -var _glVertexAttribDivisorEXT = _glVertexAttribDivisor; -var _emscripten_glVertexAttribDivisorEXT = _glVertexAttribDivisorEXT; -var _glVertexAttribDivisorNV = _glVertexAttribDivisor; -var _emscripten_glVertexAttribDivisorNV = _glVertexAttribDivisorNV; -var _glVertexAttribI4i = function _glVertexAttribI4i(x0, x1, x2, x3, x4) { - return GLctx.vertexAttribI4i(x0, x1, x2, x3, x4); -}; -var _emscripten_glVertexAttribI4i = _glVertexAttribI4i; -var _glVertexAttribI4iv = function _glVertexAttribI4iv(index, v) { - GLctx.vertexAttribI4i(index, HEAP32[v >> 2], HEAP32[v + 4 >> 2], HEAP32[v + 8 >> 2], HEAP32[v + 12 >> 2]); -}; -var _emscripten_glVertexAttribI4iv = _glVertexAttribI4iv; -var _glVertexAttribI4ui = function _glVertexAttribI4ui(x0, x1, x2, x3, x4) { - return GLctx.vertexAttribI4ui(x0, x1, x2, x3, x4); -}; -var _emscripten_glVertexAttribI4ui = _glVertexAttribI4ui; -var _glVertexAttribI4uiv = function _glVertexAttribI4uiv(index, v) { - GLctx.vertexAttribI4ui(index, HEAPU32[v >> 2], HEAPU32[v + 4 >> 2], HEAPU32[v + 8 >> 2], HEAPU32[v + 12 >> 2]); -}; -var _emscripten_glVertexAttribI4uiv = _glVertexAttribI4uiv; -var _glVertexAttribIPointer = function _glVertexAttribIPointer(index, size, type, stride, ptr) { - GLctx.vertexAttribIPointer(index, size, type, stride, ptr); -}; -var _emscripten_glVertexAttribIPointer = _glVertexAttribIPointer; -var _glVertexAttribPointer = function _glVertexAttribPointer(index, size, type, normalized, stride, ptr) { - GLctx.vertexAttribPointer(index, size, type, !!normalized, stride, ptr); -}; -var _emscripten_glVertexAttribPointer = _glVertexAttribPointer; -var _glViewport = function _glViewport(x0, x1, x2, x3) { - return GLctx.viewport(x0, x1, x2, x3); -}; -var _emscripten_glViewport = _glViewport; -var _glWaitSync = function _glWaitSync(sync, flags, timeout_low, timeout_high) { - var timeout = convertI32PairToI53(timeout_low, timeout_high); - GLctx.waitSync(GL.syncs[sync], flags, timeout); -}; -var _emscripten_glWaitSync = _glWaitSync; -var _emscripten_memcpy_js = Uint8Array.prototype.copyWithin ? function (dest, src, num) { - return HEAPU8.copyWithin(dest, src, src + num); -} : function (dest, src, num) { - return HEAPU8.set(HEAPU8.subarray(src, src + num), dest); -}; -var _emscripten_pause_main_loop = function _emscripten_pause_main_loop() { - Browser.mainLoop.pause(); -}; -var growMemory = function growMemory(size) { - var b = wasmMemory.buffer; - var pages = (size - b.byteLength + 65535) / 65536; - try { - wasmMemory.grow(pages); - updateMemoryViews(); - return 1; - } catch (e) {} -}; -var _emscripten_resize_heap = function _emscripten_resize_heap(requestedSize) { - var oldSize = HEAPU8.length; - requestedSize >>>= 0; - var maxHeapSize = getHeapMax(); - if (requestedSize > maxHeapSize) { - return false; - } - var alignUp = function alignUp(x, multiple) { - return x + (multiple - x % multiple) % multiple; - }; - for (var cutDown = 1; cutDown <= 4; cutDown *= 2) { - var overGrownHeapSize = oldSize * (1 + .2 / cutDown); - overGrownHeapSize = Math.min(overGrownHeapSize, requestedSize + 100663296); - var newSize = Math.min(maxHeapSize, alignUp(Math.max(requestedSize, overGrownHeapSize), 65536)); - var replacement = growMemory(newSize); - if (replacement) { - return true; - } - } - return false; -}; -var _emscripten_set_main_loop_arg = function _emscripten_set_main_loop_arg(func, arg, fps, simulateInfiniteLoop) { - var browserIterationFunc = function browserIterationFunc() { - return getWasmTableEntry(func)(arg); - }; - setMainLoop(browserIterationFunc, fps, simulateInfiniteLoop, arg); -}; -var webgl_enable_ANGLE_instanced_arrays = function webgl_enable_ANGLE_instanced_arrays(ctx) { - var ext = ctx.getExtension("ANGLE_instanced_arrays"); - if (ext) { - ctx["vertexAttribDivisor"] = function (index, divisor) { - return ext["vertexAttribDivisorANGLE"](index, divisor); - }; - ctx["drawArraysInstanced"] = function (mode, first, count, primcount) { - return ext["drawArraysInstancedANGLE"](mode, first, count, primcount); - }; - ctx["drawElementsInstanced"] = function (mode, count, type, indices, primcount) { - return ext["drawElementsInstancedANGLE"](mode, count, type, indices, primcount); - }; - return 1; - } -}; -var webgl_enable_OES_vertex_array_object = function webgl_enable_OES_vertex_array_object(ctx) { - var ext = ctx.getExtension("OES_vertex_array_object"); - if (ext) { - ctx["createVertexArray"] = function () { - return ext["createVertexArrayOES"](); - }; - ctx["deleteVertexArray"] = function (vao) { - return ext["deleteVertexArrayOES"](vao); - }; - ctx["bindVertexArray"] = function (vao) { - return ext["bindVertexArrayOES"](vao); - }; - ctx["isVertexArray"] = function (vao) { - return ext["isVertexArrayOES"](vao); - }; - return 1; - } -}; -var webgl_enable_WEBGL_draw_buffers = function webgl_enable_WEBGL_draw_buffers(ctx) { - var ext = ctx.getExtension("WEBGL_draw_buffers"); - if (ext) { - ctx["drawBuffers"] = function (n, bufs) { - return ext["drawBuffersWEBGL"](n, bufs); - }; - return 1; - } -}; -var webgl_enable_WEBGL_draw_instanced_base_vertex_base_instance = function webgl_enable_WEBGL_draw_instanced_base_vertex_base_instance(ctx) { - return !!(ctx.dibvbi = ctx.getExtension("WEBGL_draw_instanced_base_vertex_base_instance")); -}; -var webgl_enable_WEBGL_multi_draw_instanced_base_vertex_base_instance = function webgl_enable_WEBGL_multi_draw_instanced_base_vertex_base_instance(ctx) { - return !!(ctx.mdibvbi = ctx.getExtension("WEBGL_multi_draw_instanced_base_vertex_base_instance")); -}; -var webgl_enable_WEBGL_multi_draw = function webgl_enable_WEBGL_multi_draw(ctx) { - return !!(ctx.multiDrawWebgl = ctx.getExtension("WEBGL_multi_draw")); -}; -var _emscripten_webgl_enable_extension = function _emscripten_webgl_enable_extension(contextHandle, extension) { - var context = GL.getContext(contextHandle); - var extString = UTF8ToString(extension); - if (extString.startsWith("GL_")) extString = extString.substr(3); - if (extString == "ANGLE_instanced_arrays") webgl_enable_ANGLE_instanced_arrays(GLctx); - if (extString == "OES_vertex_array_object") webgl_enable_OES_vertex_array_object(GLctx); - if (extString == "WEBGL_draw_buffers") webgl_enable_WEBGL_draw_buffers(GLctx); - if (extString == "WEBGL_draw_instanced_base_vertex_base_instance") webgl_enable_WEBGL_draw_instanced_base_vertex_base_instance(GLctx); - if (extString == "WEBGL_multi_draw_instanced_base_vertex_base_instance") webgl_enable_WEBGL_multi_draw_instanced_base_vertex_base_instance(GLctx); - if (extString == "WEBGL_multi_draw") webgl_enable_WEBGL_multi_draw(GLctx); - var ext = context.GLctx.getExtension(extString); - return !!ext; -}; -var _emscripten_webgl_do_get_current_context = function _emscripten_webgl_do_get_current_context() { - return GL.currentContext ? GL.currentContext.handle : 0; -}; -var _emscripten_webgl_get_current_context = _emscripten_webgl_do_get_current_context; -var ENV = {}; -var getExecutableName = function getExecutableName() { - return thisProgram || "./this.program"; -}; -var getEnvStrings = function getEnvStrings() { - if (!getEnvStrings.strings) { - var lang = ((typeof navigator === "undefined" ? "undefined" : _typeof(navigator)) == "object" && navigator.languages && navigator.languages[0] || "C").replace("-", "_") + ".UTF-8"; - var env = { - "USER": "web_user", - "LOGNAME": "web_user", - "PATH": "/", - "PWD": "/", - "HOME": "/home/web_user", - "LANG": lang, - "_": getExecutableName() - }; - for (var x in ENV) { - if (ENV[x] === undefined) delete env[x];else env[x] = ENV[x]; - } - var strings = []; - for (var x in env) { - strings.push("".concat(x, "=").concat(env[x])); - } - getEnvStrings.strings = strings; - } - return getEnvStrings.strings; -}; -var stringToAscii = function stringToAscii(str, buffer) { - for (var i = 0; i < str.length; ++i) { - HEAP8[buffer++] = str.charCodeAt(i); - } - HEAP8[buffer] = 0; -}; -var _environ_get = function _environ_get(__environ, environ_buf) { - var bufSize = 0; - getEnvStrings().forEach(function (string, i) { - var ptr = environ_buf + bufSize; - HEAPU32[__environ + i * 4 >> 2] = ptr; - stringToAscii(string, ptr); - bufSize += string.length + 1; - }); - return 0; -}; -var _environ_sizes_get = function _environ_sizes_get(penviron_count, penviron_buf_size) { - var strings = getEnvStrings(); - HEAPU32[penviron_count >> 2] = strings.length; - var bufSize = 0; - strings.forEach(function (string) { - return bufSize += string.length + 1; - }); - HEAPU32[penviron_buf_size >> 2] = bufSize; - return 0; -}; -function _fd_close(fd) { - try { - var stream = SYSCALLS.getStreamFromFD(fd); - FS.close(stream); - return 0; - } catch (e) { - if (typeof FS == "undefined" || !(e.name === "ErrnoError")) throw e; - return e.errno; - } -} -var doReadv = function doReadv(stream, iov, iovcnt, offset) { - var ret = 0; - for (var i = 0; i < iovcnt; i++) { - var ptr = HEAPU32[iov >> 2]; - var len = HEAPU32[iov + 4 >> 2]; - iov += 8; - var curr = FS.read(stream, HEAP8, ptr, len, offset); - if (curr < 0) return -1; - ret += curr; - if (curr < len) break; - if (typeof offset !== "undefined") { - offset += curr; - } - } - return ret; -}; -function _fd_read(fd, iov, iovcnt, pnum) { - try { - var stream = SYSCALLS.getStreamFromFD(fd); - var num = doReadv(stream, iov, iovcnt); - HEAPU32[pnum >> 2] = num; - return 0; - } catch (e) { - if (typeof FS == "undefined" || !(e.name === "ErrnoError")) throw e; - return e.errno; - } -} -function _fd_seek(fd, offset_low, offset_high, whence, newOffset) { - var offset = convertI32PairToI53Checked(offset_low, offset_high); - try { - if (isNaN(offset)) return 61; - var stream = SYSCALLS.getStreamFromFD(fd); - FS.llseek(stream, offset, whence); - tempI64 = [stream.position >>> 0, (tempDouble = stream.position, +Math.abs(tempDouble) >= 1 ? tempDouble > 0 ? +Math.floor(tempDouble / 4294967296) >>> 0 : ~~+Math.ceil((tempDouble - +(~~tempDouble >>> 0)) / 4294967296) >>> 0 : 0)], HEAP32[newOffset >> 2] = tempI64[0], HEAP32[newOffset + 4 >> 2] = tempI64[1]; - if (stream.getdents && offset === 0 && whence === 0) stream.getdents = null; - return 0; - } catch (e) { - if (typeof FS == "undefined" || !(e.name === "ErrnoError")) throw e; - return e.errno; - } -} -var doWritev = function doWritev(stream, iov, iovcnt, offset) { - var ret = 0; - for (var i = 0; i < iovcnt; i++) { - var ptr = HEAPU32[iov >> 2]; - var len = HEAPU32[iov + 4 >> 2]; - iov += 8; - var curr = FS.write(stream, HEAP8, ptr, len, offset); - if (curr < 0) return -1; - ret += curr; - if (typeof offset !== "undefined") { - offset += curr; - } - } - return ret; -}; -function _fd_write(fd, iov, iovcnt, pnum) { - try { - var stream = SYSCALLS.getStreamFromFD(fd); - var num = doWritev(stream, iov, iovcnt); - HEAPU32[pnum >> 2] = num; - return 0; - } catch (e) { - if (typeof FS == "undefined" || !(e.name === "ErrnoError")) throw e; - return e.errno; - } -} -var _getaddrinfo = function _getaddrinfo(node, service, hint, out) { - var addr = 0; - var port = 0; - var flags = 0; - var family = 0; - var type = 0; - var proto = 0; - var ai; - function allocaddrinfo(family, type, proto, canon, addr, port) { - var sa, salen, ai; - var errno; - salen = family === 10 ? 28 : 16; - addr = family === 10 ? inetNtop6(addr) : inetNtop4(addr); - sa = _malloc(salen); - errno = writeSockaddr(sa, family, addr, port); - assert(!errno); - ai = _malloc(32); - HEAP32[ai + 4 >> 2] = family; - HEAP32[ai + 8 >> 2] = type; - HEAP32[ai + 12 >> 2] = proto; - HEAPU32[ai + 24 >> 2] = canon; - HEAPU32[ai + 20 >> 2] = sa; - if (family === 10) { - HEAP32[ai + 16 >> 2] = 28; - } else { - HEAP32[ai + 16 >> 2] = 16; - } - HEAP32[ai + 28 >> 2] = 0; - return ai; - } - if (hint) { - flags = HEAP32[hint >> 2]; - family = HEAP32[hint + 4 >> 2]; - type = HEAP32[hint + 8 >> 2]; - proto = HEAP32[hint + 12 >> 2]; - } - if (type && !proto) { - proto = type === 2 ? 17 : 6; - } - if (!type && proto) { - type = proto === 17 ? 2 : 1; - } - if (proto === 0) { - proto = 6; - } - if (type === 0) { - type = 1; - } - if (!node && !service) { - return -2; - } - if (flags & ~(1 | 2 | 4 | 1024 | 8 | 16 | 32)) { - return -1; - } - if (hint !== 0 && HEAP32[hint >> 2] & 2 && !node) { - return -1; - } - if (flags & 32) { - return -2; - } - if (type !== 0 && type !== 1 && type !== 2) { - return -7; - } - if (family !== 0 && family !== 2 && family !== 10) { - return -6; - } - if (service) { - service = UTF8ToString(service); - port = parseInt(service, 10); - if (isNaN(port)) { - if (flags & 1024) { - return -2; - } - return -8; - } - } - if (!node) { - if (family === 0) { - family = 2; - } - if ((flags & 1) === 0) { - if (family === 2) { - addr = _htonl2(2130706433); - } else { - addr = [0, 0, 0, 1]; - } - } - ai = allocaddrinfo(family, type, proto, null, addr, port); - HEAPU32[out >> 2] = ai; - return 0; - } - node = UTF8ToString(node); - addr = inetPton4(node); - if (addr !== null) { - if (family === 0 || family === 2) { - family = 2; - } else if (family === 10 && flags & 8) { - addr = [0, 0, _htonl2(65535), addr]; - family = 10; - } else { - return -2; - } - } else { - addr = inetPton6(node); - if (addr !== null) { - if (family === 0 || family === 10) { - family = 10; - } else { - return -2; - } - } - } - if (addr != null) { - ai = allocaddrinfo(family, type, proto, node, addr, port); - HEAPU32[out >> 2] = ai; - return 0; - } - if (flags & 4) { - return -2; - } - node = DNS.lookup_name(node); - addr = inetPton4(node); - if (family === 0) { - family = 2; - } else if (family === 10) { - addr = [0, 0, _htonl2(65535), addr]; - } - ai = allocaddrinfo(family, type, proto, null, addr, port); - HEAPU32[out >> 2] = ai; - return 0; -}; -var _getnameinfo = function _getnameinfo(sa, salen, node, nodelen, serv, servlen, flags) { - var info = readSockaddr(sa, salen); - if (info.errno) { - return -6; - } - var port = info.port; - var addr = info.addr; - var overflowed = false; - if (node && nodelen) { - var lookup; - if (flags & 1 || !(lookup = DNS.lookup_addr(addr))) { - if (flags & 8) { - return -2; - } - } else { - addr = lookup; - } - var numBytesWrittenExclNull = stringToUTF8(addr, node, nodelen); - if (numBytesWrittenExclNull + 1 >= nodelen) { - overflowed = true; - } - } - if (serv && servlen) { - port = "" + port; - var numBytesWrittenExclNull = stringToUTF8(port, serv, servlen); - if (numBytesWrittenExclNull + 1 >= servlen) { - overflowed = true; - } - } - if (overflowed) { - return -12; - } - return 0; -}; -var GLFW = { - keyFunc: null, - charFunc: null, - markedTextFunc: null, - gamepadFunc: null, - mouseButtonFunc: null, - mousePosFunc: null, - mouseWheelFunc: null, - resizeFunc: null, - closeFunc: null, - refreshFunc: null, - focusFunc: null, - iconifyFunc: null, - touchFunc: null, - params: null, - initTime: null, - wheelPos: 0, - buttons: 0, - keys: 0, - initWindowWidth: 640, - initWindowHeight: 480, - windowX: 0, - windowY: 0, - windowWidth: 0, - windowHeight: 0, - prevWidth: 0, - prevHeight: 0, - prevNonFSWidth: 0, - prevNonFSHeight: 0, - isFullscreen: false, - isPointerLocked: false, - dpi: 1, - mouseTouchId: null, - DOMToGLFWKeyCode: function DOMToGLFWKeyCode(keycode, code) { - switch (keycode) { - case 8: - return 295; - case 9: - return 293; - case 13: - return 294; - case 27: - return 257; - case 106: - return 313; - case 107: - return 315; - case 109: - return 314; - case 110: - return 316; - case 111: - return 312; - case 112: - return 258; - case 113: - return 259; - case 114: - return 260; - case 115: - return 261; - case 116: - return 262; - case 117: - return 263; - case 118: - return 264; - case 119: - return 265; - case 120: - return 266; - case 121: - return 267; - case 122: - return 268; - case 123: - return 269; - case 37: - return 285; - case 38: - return 283; - case 39: - return 286; - case 40: - return 284; - case 33: - return 298; - case 34: - return 299; - case 36: - return 300; - case 35: - return 301; - case 45: - return 296; - case 16: - return 287; - case 5: - return 287; - case 6: - return 288; - case 17: - return 289; - case 3: - return 289; - case 4: - return 290; - case 18: - return 291; - case 2: - return 291; - case 1: - return 292; - case 96: - return 302; - case 97: - return 303; - case 98: - return 304; - case 99: - return 305; - case 100: - return 306; - case 101: - return 307; - case 102: - return 308; - case 103: - return 309; - case 104: - return 310; - case 105: - return 311; - } - switch (code) { - case "Minus": - return 45; - case "Period": - return 46; - case "Comma": - return 44; - case "Slash": - return 47; - case "Backslash": - return 92; - case "IntlRo": - return 92; - case "IntlYen": - return 92; - case "IntlBackslash": - return 92; - case "Backquote": - return 96; - case "BracketLeft": - return 91; - case "BracketRight": - return 93; - case "Equal": - return 61; - case "Quote": - return 39; - case "Semicolon": - return 59; - case "NumpadComma": - return 316; - } - return keycode; - }, - DOMtoGLFWButton: function DOMtoGLFWButton(button) { - if (button == 1) { - button = 2; - } else if (button == 2) { - button = 1; - } - return button; - }, - getUnicodeChar: function getUnicodeChar(value) { - var output = ""; - if (value > 65535) { - value -= 65536; - output += String.fromCharCode(value >>> 10 & 1023 | 55296); - value = 56320 | value & 1023; - } - output += String.fromCharCode(value); - return output; - }, - addEventListener: function addEventListener(type, listener, useCapture) { - if (typeof window !== "undefined") { - window.addEventListener(type, listener, useCapture); - } - }, - removeEventListener: function removeEventListener(type, listener, useCapture) { - if (typeof window !== "undefined") { - window.removeEventListener(type, listener, useCapture); - } - }, - addEventListenerCanvas: function addEventListenerCanvas(type, listener, useCapture) { - if (typeof Module["canvas"] !== "undefined") { - Module["canvas"].addEventListener(type, listener, useCapture); - } - }, - removeEventListenerCanvas: function removeEventListenerCanvas(type, listener, useCapture) { - if (typeof Module["canvas"] !== "undefined") { - Module["canvas"].removeEventListener(type, listener, useCapture); - } - }, - isCanvasActive: function isCanvasActive(event) { - var res = typeof document.activeElement == "undefined" || document.activeElement == Module["canvas"]; - if (!res) { - res = event.target == Module["canvas"]; - } - if (event.target.focus) event.target.focus(); - return res; - }, - onKeyPress: function onKeyPress(event) { - if (!GLFW.isCanvasActive(event)) { - return; - } - if (event.charCode) { - var char = GLFW.getUnicodeChar(event.charCode); - if (char !== null && GLFW.charFunc) { - getWasmTableEntry(GLFW.charFunc)(event.charCode, 1); - } - } - }, - onKeyChanged: function onKeyChanged(event, status) { - if (!GLFW.isCanvasActive(event)) { - return; - } - var key = GLFW.DOMToGLFWKeyCode(event.keyCode, event.code); - if (key) { - GLFW.keys[key] = status; - if (GLFW.keyFunc) { - getWasmTableEntry(GLFW.keyFunc)(key, status); - } - } - }, - onKeydown: function onKeydown(event) { - if (!GLFW.isCanvasActive(event)) { - return; - } - switch (event.keyCode) { - case 37: - case 38: - case 39: - case 40: - case 32: - event.preventDefault(); - event.stopPropagation(); - default: - break; - } - GLFW.onKeyChanged(event, 1); - if (event.keyCode === 32) { - if (GLFW.charFunc) { - getWasmTableEntry(GLFW.charFunc)(32, 1); - event.preventDefault(); - } - } else if (event.keyCode === 8 || event.keyCode === 9 || event.keyCode === 13) { - event.preventDefault(); - } - }, - onKeyup: function onKeyup(event) { - if (!GLFW.isCanvasActive(event)) { - return; - } - GLFW.onKeyChanged(event, 0); - }, - onMousemove: function onMousemove(event) { - var lastX = Browser.mouseX; - var lastY = Browser.mouseY; - Browser.calculateMouseEvent(event); - var newX = Browser.mouseX; - var newY = Browser.mouseY; - if (event.target == Module["canvas"] && GLFW.mousePosFunc) { - event.preventDefault(); - getWasmTableEntry(GLFW.mousePosFunc)(lastX, lastY); - } - }, - onMouseButtonChanged: function onMouseButtonChanged(event, status) { - if (!GLFW.isCanvasActive(event)) { - return; - } - if (GLFW.mouseButtonFunc == null) { - return; - } - Browser.calculateMouseEvent(event); - if (event.target != Module["canvas"]) { - return; - } - if (status == 1) { - try { - event.target.setCapture(); - } catch (e) {} - } - event.preventDefault(); - var eventButton = GLFW.DOMtoGLFWButton(event["button"]); - getWasmTableEntry(GLFW.mouseButtonFunc)(eventButton, status); - }, - fillTouch: function fillTouch(id, x, y, phase) { - if (GLFW.touchFunc) { - getWasmTableEntry(GLFW.touchFunc)(id, x, y, phase); - } - }, - touchWasFinished: function touchWasFinished(event, phase) { - if (!GLFW.isCanvasActive(event)) { - return; - } - for (var i = 0; i < event.changedTouches.length; ++i) { - var touch = event.changedTouches[i]; - var coord = GLFW.convertCoordinatesFromMonitorToWebGLPixels(touch.clientX, touch.clientY); - var canvasX = coord[0]; - var canvasY = coord[1]; - GLFW.fillTouch(touch.identifier, canvasX, canvasY, phase); - if (touch.identifier == GLFW.mouseTouchId) { - GLFW.mouseTouchId = null; - GLFW.buttons &= ~(1 << 0); - } - } - if (event.touches.length == 0) { - GLFW.buttons &= ~(1 << 0); - } - if (typeof DefoldSoundDevice != "undefined" && DefoldSoundDevice != null) { - DefoldSoundDevice.TryResumeAudio(); - } - event.preventDefault(); - }, - onTouchEnd: function onTouchEnd(event) { - GLFW.touchWasFinished(event, GLFW.GLFW_PHASE_ENDED); - }, - onTouchCancel: function onTouchCancel(event) { - GLFW.touchWasFinished(event, GLFW.GLFW_PHASE_CANCELLED); - }, - convertCoordinatesFromMonitorToWebGLPixels: function convertCoordinatesFromMonitorToWebGLPixels(x, y) { - var rect = Module["canvas"].getBoundingClientRect(); - var canvasWidth = rect.right - rect.left; - var canvasHeight = rect.bottom - rect.top; - var canvasX = x - rect.left; - var canvasY = y - rect.top; - var canvasXNormalized = canvasX / canvasWidth; - var canvasYNormalized = canvasY / canvasHeight; - var finalX = Module["canvas"].width * canvasXNormalized; - var finalY = Module["canvas"].height * canvasYNormalized; - return [finalX, finalY]; - }, - onTouchMove: function onTouchMove(event) { - if (!GLFW.isCanvasActive(event)) { - return; - } - var e = event; - var touch; - var coord; - var canvasX; - var canvasY; - for (var i = 0; i < e.changedTouches.length; ++i) { - touch = e.changedTouches[i]; - coord = GLFW.convertCoordinatesFromMonitorToWebGLPixels(touch.clientX, touch.clientY); - canvasX = coord[0]; - canvasY = coord[1]; - if (touch.identifier == GLFW.mouseTouchId) { - Browser.mouseX = canvasX; - Browser.mouseY = canvasY; - } - GLFW.fillTouch(touch.identifier, canvasX, canvasY, GLFW.GLFW_PHASE_MOVED); - } - event.preventDefault(); - }, - onTouchStart: function onTouchStart(event) { - if (event.target != Module["canvas"]) { - return; - } - var e = event; - var touch; - var coord; - var canvasX; - var canvasY; - for (var i = 0; i < e.changedTouches.length; ++i) { - touch = e.changedTouches[i]; - coord = GLFW.convertCoordinatesFromMonitorToWebGLPixels(touch.clientX, touch.clientY); - canvasX = coord[0]; - canvasY = coord[1]; - if (i == 0 && GLFW.mouseTouchId == null) { - GLFW.mouseTouchId = touch.identifier; - GLFW.buttons |= 1 << 0; - Browser.mouseX = canvasX; - Browser.mouseY = canvasY; - } - GLFW.fillTouch(touch.identifier, canvasX, canvasY, GLFW.GLFW_PHASE_BEGAN); - } - event.preventDefault(); - }, - onMouseButtonDown: function onMouseButtonDown(event) { - if (event.target != Module["canvas"]) { - return; - } - GLFW.buttons |= 1 << event["button"]; - GLFW.onMouseButtonChanged(event, 1); - }, - onMouseButtonUp: function onMouseButtonUp(event) { - if (!GLFW.isCanvasActive(event)) { - return; - } - GLFW.buttons &= ~(1 << event["button"]); - GLFW.onMouseButtonChanged(event, 0); - if (typeof DefoldSoundDevice != "undefined" && DefoldSoundDevice != null) { - DefoldSoundDevice.TryResumeAudio(); - } - }, - onMouseWheel: function onMouseWheel(event) { - if (!GLFW.isCanvasActive(event)) { - return; - } - GLFW.wheelPos += Browser.getMouseWheelDelta(event); - if (event.target == Module["canvas"]) { - if (GLFW.mouseWheelFunc) { - getWasmTableEntry(GLFW.mouseWheelFunc)(GLFW.wheelPos); - } - if (event.cancelable) { - event.preventDefault(); - } - } - }, - onFocusChanged: function onFocusChanged(focus) { - if (focus == 0) { - for (var i = 0; i < GLFW.keys.length; i++) { - GLFW.keys[i] = 0; - } - GLFW.buttons = 0; - } - if (GLFW.focusFunc) { - getWasmTableEntry(GLFW.focusFunc)(focus); - } - }, - onFocus: function onFocus(event) { - GLFW.onFocusChanged(1); - }, - onBlur: function onBlur(event) { - GLFW.onFocusChanged(0); - }, - onFullScreenEventChange: function onFullScreenEventChange(event) { - GLFW.isFullscreen = document["fullScreen"] || document["mozFullScreen"] || document["webkitIsFullScreen"] || document["msIsFullScreen"]; - if (!GLFW.isFullscreen) { - document.removeEventListener("fullscreenchange", GLFW.onFullScreenEventChange, true); - document.removeEventListener("mozfullscreenchange", GLFW.onFullScreenEventChange, true); - document.removeEventListener("webkitfullscreenchange", GLFW.onFullScreenEventChange, true); - document.removeEventListener("msfullscreenchange", GLFW.onFullScreenEventChange, true); - } - GLFW.prevWidth = 0; - GLFW.prevHeight = 0; - }, - requestFullScreen: function requestFullScreen(element) { - element = element || Module["fullScreenContainer"] || Module["canvas"]; - if (!element) { - return; - } - document.addEventListener("fullscreenchange", GLFW.onFullScreenEventChange, true); - document.addEventListener("mozfullscreenchange", GLFW.onFullScreenEventChange, true); - document.addEventListener("webkitfullscreenchange", GLFW.onFullScreenEventChange, true); - document.addEventListener("msfullscreenchange", GLFW.onFullScreenEventChange, true); - var RFS = element["requestFullscreen"] || element["requestFullScreen"] || element["mozRequestFullScreen"] || element["webkitRequestFullScreen"] || element["msRequestFullScreen"] || function () {}; - RFS.apply(element, []); - }, - cancelFullScreen: function cancelFullScreen() { - var CFS = document["exitFullscreen"] || document["cancelFullScreen"] || document["mozCancelFullScreen"] || document["webkitCancelFullScreen"] || document["msExitFullscreen"] || function () {}; - CFS.apply(document, []); - }, - onJoystickConnected: function onJoystickConnected(event) { - GLFW.refreshJoysticks(); - }, - onJoystickDisconnected: function onJoystickDisconnected(event) { - GLFW.refreshJoysticks(true); - }, - onPointerLockEventChange: function onPointerLockEventChange(event) { - GLFW.isPointerLocked = !!document["pointerLockElement"]; - if (!GLFW.isPointerLocked) { - document.removeEventListener("pointerlockchange", GLFW.onPointerLockEventChange, true); - } - }, - requestPointerLock: function requestPointerLock(element) { - element = element || Module["canvas"]; - if (!element) { - return; - } - if (!GLFW.isPointerLocked) { - document.addEventListener("pointerlockchange", GLFW.onPointerLockEventChange, true); - var RPL = element.requestPointerLock || function () {}; - RPL.apply(element, []); - } - }, - cancelPointerLock: function cancelPointerLock() { - var EPL = document.exitPointerLock || function () {}; - EPL.apply(document, []); - }, - disconnectJoystick: function disconnectJoystick(joy) { - if (GLFW.gamepadFunc) { - _free(GLFW.joys[joy].id); - delete GLFW.joys[joy]; - getWasmTableEntry(GLFW.gamepadFunc)(joy, 0); - } - }, - joys: {}, - lastGamepadState: null, - lastGamepadStateFrame: null, - refreshJoysticks: function refreshJoysticks(forceUpdate) { - if (GLFW.gamepadFunc) { - if (forceUpdate || Browser.mainLoop.currentFrameNumber !== GLFW.lastGamepadStateFrame || !Browser.mainLoop.currentFrameNumber) { - GLFW.lastGamepadState = navigator.getGamepads ? navigator.getGamepads() : navigator.webkitGetGamepads ? navigator.webkitGetGamepads : null; - if (!GLFW.lastGamepadState) { - return; - } - GLFW.lastGamepadStateFrame = Browser.mainLoop.currentFrameNumber; - for (var joy = 0; joy < GLFW.lastGamepadState.length; ++joy) { - var gamepad = GLFW.lastGamepadState[joy]; - if (gamepad) { - var gamepad_id = gamepad.mapping == "standard" ? "Standard Gamepad" : gamepad.id; - if (!GLFW.joys[joy] || GLFW.joys[joy].id_string != gamepad_id) { - if (GLFW.joys[joy]) { - GLFW.disconnectJoystick(joy); - } - GLFW.joys[joy] = { - id: stringToNewUTF8(gamepad_id), - id_string: gamepad_id, - axesCount: gamepad.axes.length, - buttonsCount: gamepad.buttons.length - }; - getWasmTableEntry(GLFW.gamepadFunc)(joy, 1); - } - GLFW.joys[joy].buttons = gamepad.buttons; - GLFW.joys[joy].axes = gamepad.axes; - } else { - if (GLFW.joys[joy]) { - GLFW.disconnectJoystick(joy); - } - } - } - } - } - } -}; -function _glfwAccelerometerEnable() {} -function _glfwCloseWindow() { - if (GLFW.closeFunc) { - getWasmTableEntry(GLFW.closeFunc)(); - } - Module.ctx = Browser.destroyContext(Module["canvas"], true, true); -} -function _glfwDisable(token) { - GLFW.params[token] = false; - if (token == 196609) { - GLFW.requestPointerLock(); - } -} -function _glfwEnable(token) { - GLFW.params[token] = true; - if (token == 196609) { - GLFW.cancelPointerLock(); - } -} -function _glfwGetAcceleration(x, y, z) { - return 0; -} -function _glfwGetDefaultFramebuffer() { - return 0; -} -function _glfwGetDisplayScaleFactor() { - return 1; -} -function _glfwGetJoystickButtons(joy, buttons, numbuttons) { - GLFW.refreshJoysticks(); - var state = GLFW.joys[joy]; - if (!state || !state.buttons) { - for (var i = 0; i < numbuttons; i++) { - setValue(buttons + i, 0, "i8"); - } - return; - } - for (var i = 0; i < Math.min(numbuttons, state.buttonsCount); i++) { - setValue(buttons + i, state.buttons[i].pressed, "i8"); - } -} -function _glfwGetJoystickDeviceId(joy, device_id) { - if (GLFW.joys[joy]) { - setValue(device_id, GLFW.joys[joy].id, "*"); - return 1; - } else { - return 0; - } -} -function _glfwGetJoystickHats(joy, buttons, numhats) { - return 0; -} -function _glfwGetJoystickParam(joy, param) { - var result = 0; - if (GLFW.joys[joy]) { - switch (GLFW.params[param]) { - case 0: - result = 1; - break; - case 1: - result = GLFW.joys[joy].axesCount; - break; - case 2: - result = GLFW.joys[joy].buttonsCount; - break; - } - } - return result; -} -function _glfwGetJoystickPos(joy, pos, numaxes) { - GLFW.refreshJoysticks(); - var state = GLFW.joys[joy]; - if (!state || !state.axes) { - for (var i = 0; i < numaxes; i++) { - setValue(pos + i * 4, 0, "float"); - } - return; - } - for (var i = 0; i < numaxes; i++) { - setValue(pos + i * 4, state.axes[i], "float"); - } -} -function _glfwGetKey(key) { - return GLFW.keys[key]; -} -function _glfwGetMouseButton(button) { - return (GLFW.buttons & 1 << GLFW.DOMtoGLFWButton(button)) > 0; -} -function _glfwGetMouseLocked() { - return GLFW.isPointerLocked ? 1 : 0; -} -function _glfwGetMousePos(xpos, ypos) { - setValue(xpos, Browser.mouseX, "i32"); - setValue(ypos, Browser.mouseY, "i32"); -} -function _glfwGetMouseWheel() { - return GLFW.wheelPos; -} -function _glfwGetWindowParam(param) { - return GLFW.params[param]; -} -function _glfwGetWindowRefreshRate() { - return 0; -} -function _glfwGetWindowSize(width, height) { - setValue(width, Module["canvas"].width, "i32"); - setValue(height, Module["canvas"].height, "i32"); -} -function _glfwIconifyWindow() {} -function _glfwInitJS() { - GLFW.initTime = Date.now() / 1e3; - GLFW.addEventListener("gamepadconnected", GLFW.onJoystickConnected, true); - GLFW.addEventListener("gamepaddisconnected", GLFW.onJoystickDisconnected, true); - GLFW.addEventListener("keydown", GLFW.onKeydown, true); - GLFW.addEventListener("keypress", GLFW.onKeyPress, true); - GLFW.addEventListener("keyup", GLFW.onKeyup, true); - GLFW.addEventListener("mousemove", GLFW.onMousemove, true); - GLFW.addEventListener("mousedown", GLFW.onMouseButtonDown, true); - GLFW.addEventListener("mouseup", GLFW.onMouseButtonUp, true); - GLFW.addEventListener("DOMMouseScroll", GLFW.onMouseWheel, { - capture: true, - passive: false - }); - GLFW.addEventListener("mousewheel", GLFW.onMouseWheel, { - capture: true, - passive: false - }); - GLFW.addEventListenerCanvas("touchstart", GLFW.onTouchStart, true); - GLFW.addEventListenerCanvas("touchend", GLFW.onTouchEnd, true); - GLFW.addEventListenerCanvas("touchcancel", GLFW.onTouchCancel, true); - GLFW.addEventListenerCanvas("touchmove", GLFW.onTouchMove, true); - GLFW.addEventListenerCanvas("focus", GLFW.onFocus, true); - GLFW.addEventListenerCanvas("blur", GLFW.onBlur, true); - __ATEXIT__.push({ - func: function func() { - GLFW.removeEventListener("gamepadconnected", GLFW.onJoystickConnected, true); - GLFW.removeEventListener("gamepaddisconnected", GLFW.onJoystickDisconnected, true); - GLFW.removeEventListener("keydown", GLFW.onKeydown, true); - GLFW.removeEventListener("keypress", GLFW.onKeyPress, true); - GLFW.removeEventListener("keyup", GLFW.onKeyup, true); - GLFW.removeEventListener("mousemove", GLFW.onMousemove, true); - GLFW.removeEventListener("mousedown", GLFW.onMouseButtonDown, true); - GLFW.removeEventListener("mouseup", GLFW.onMouseButtonUp, true); - GLFW.removeEventListener("DOMMouseScroll", GLFW.onMouseWheel, { - capture: true, - passive: false - }); - GLFW.removeEventListener("mousewheel", GLFW.onMouseWheel, { - capture: true, - passive: false - }); - GLFW.removeEventListenerCanvas("touchstart", GLFW.onTouchStart, true); - GLFW.removeEventListenerCanvas("touchend", GLFW.onTouchEnd, true); - GLFW.removeEventListenerCanvas("touchcancel", GLFW.onTouchEnd, true); - GLFW.removeEventListenerCanvas("touchmove", GLFW.onTouchMove, true); - GLFW.removeEventListenerCanvas("focus", GLFW.onFocus, true); - GLFW.removeEventListenerCanvas("blur", GLFW.onBlur, true); - var canvas = Module["canvas"]; - if (typeof canvas !== "undefined") { - Module["canvas"].width = Module["canvas"].height = 1; - } - } - }); - GLFW.params = new Array(); - GLFW.params[196609] = true; - GLFW.params[196610] = false; - GLFW.params[196611] = true; - GLFW.params[196612] = false; - GLFW.params[196613] = false; - GLFW.params[196614] = true; - GLFW.params[131073] = true; - GLFW.params[131074] = true; - GLFW.params[131075] = false; - GLFW.params[131076] = true; - GLFW.params[131077] = 0; - GLFW.params[131078] = 0; - GLFW.params[131079] = 0; - GLFW.params[131080] = 0; - GLFW.params[131081] = 0; - GLFW.params[131082] = 0; - GLFW.params[131083] = 0; - GLFW.params[131084] = 0; - GLFW.params[131085] = 0; - GLFW.params[131086] = 0; - GLFW.params[131087] = 0; - GLFW.params[131088] = 0; - GLFW.params[131089] = 0; - GLFW.params[131090] = 0; - GLFW.params[131091] = 0; - GLFW.params[131092] = 0; - GLFW.params[131093] = 0; - GLFW.params[131094] = 0; - GLFW.params[131095] = 0; - GLFW.params[131096] = 0; - GLFW.params[327681] = 0; - GLFW.params[327682] = 1; - GLFW.params[327683] = 2; - GLFW.params[131097] = 0; - GLFW.keys = new Array(); - GLFW.GLFW_PHASE_BEGAN = 0; - GLFW.GLFW_PHASE_MOVED = 1; - GLFW.GLFW_PHASE_ENDED = 3; - GLFW.GLFW_PHASE_CANCELLED = 4; - return 1; -} -function _glfwOpenWindow(width, height, redbits, greenbits, bluebits, alphabits, depthbits, stencilbits, mode) { - if (width == 0 && height > 0) { - width = 4 * height / 3; - } - if (width > 0 && height == 0) { - height = 3 * width / 4; - } - GLFW.params[131077] = redbits; - GLFW.params[131078] = greenbits; - GLFW.params[131079] = bluebits; - GLFW.params[131080] = alphabits; - GLFW.params[131081] = depthbits; - GLFW.params[131082] = stencilbits; - if (mode == 65537) { - GLFW.initWindowWidth = width; - GLFW.initWindowHeight = height; - GLFW.params[196611] = true; - } else if (mode == 65538) { - GLFW.requestFullScreen(); - GLFW.params[196611] = false; - } else { - throw "Invalid glfwOpenWindow mode."; - } - var contextAttributes = { - antialias: GLFW.params[131091] > 1, - depth: GLFW.params[131081] > 0, - stencil: GLFW.params[131082] > 0 - }; - var iOSVersion = false; - try { - iOSVersion = parseFloat(("" + (/CPU.*OS ([0-9_]{1,5})|(CPU like).*AppleWebKit.*Mobile/i.exec(navigator.userAgent) || [0, ""])[1]).replace("undefined", "3_2").replace("_", ".").replace("_", "")) || false; - } catch (e) {} - if (iOSVersion && iOSVersion < 15.2) { - contextAttributes.majorVersion = 1; - } - Module.ctx = Browser.createContext(Module["canvas"], true, true, contextAttributes); - if (Module.ctx == null) { - contextAttributes.majorVersion = 1; - Module.ctx = Browser.createContext(Module["canvas"], true, true, contextAttributes); - } - return 1; -} -function _glfwOpenWindowHint(target, hint) { - GLFW.params[target] = hint; - if (target == 131097) { - if (hint != 0) { - GLFW.dpi = window.devicePixelRatio || 1; - } - } -} -function _glfwPollEvents() {} -function _glfwResetKeyboard() {} -function _glfwSetCharCallback(cbfun) { - GLFW.charFunc = cbfun; - return 1; -} -function _glfwSetDeviceChangedCallback(cbfun) { - return 1; -} -function _glfwSetGamepadCallback(cbfun) { - GLFW.gamepadFunc = cbfun; - try { - GLFW.refreshJoysticks(); - return 1; - } catch (e) { - GLFW.gamepadFunc = null; - return 0; - } -} -function _glfwSetMarkedTextCallback(cbfun) { - GLFW.markedTextFunc = cbfun; - return 1; -} -function _glfwSetTouchCallback(cbfun) { - GLFW.touchFunc = cbfun; - return 1; -} -function _glfwSetWindowBackgroundColor() {} -function _glfwSetWindowCloseCallback(cbfun) { - GLFW.closeFunc = cbfun; -} -function _glfwSetWindowFocusCallback(cbfun) { - GLFW.focusFunc = cbfun; -} -function _glfwSetWindowIconifyCallback(cbfun) { - GLFW.iconifyFunc = cbfun; -} -function _glfwSetWindowSize(width, height) { - Browser.setCanvasSize(width, height); - if (GLFW.resizeFunc) { - getWasmTableEntry(GLFW.resizeFunc)(width, height); - } -} -function _glfwSetWindowSizeCallback(cbfun) { - GLFW.resizeFunc = cbfun; -} -function _glfwShowKeyboard(show_keyboard) { - Module["canvas"].contentEditable = show_keyboard ? true : false; - if (show_keyboard) { - Module["canvas"].focus(); - } -} -function _glfwSwapBuffers() { - var width = Module["canvas"].width; - var height = Module["canvas"].height; - if (GLFW.prevWidth != width || GLFW.prevHeight != height) { - if (GLFW.isFullscreen) { - width = Math.floor(window.innerWidth * GLFW.dpi); - height = Math.floor(window.innerHeight * GLFW.dpi); - } - GLFW.prevWidth = width; - GLFW.prevHeight = height; - _glfwSetWindowSize(width, height); - } -} -function _glfwSwapInterval(interval) {} -function _glfwTerminate() {} -var arraySum = function arraySum(array, index) { - var sum = 0; - for (var i = 0; i <= index; sum += array[i++]) {} - return sum; -}; -var MONTH_DAYS_LEAP = [31, 29, 31, 30, 31, 30, 31, 31, 30, 31, 30, 31]; -var MONTH_DAYS_REGULAR = [31, 28, 31, 30, 31, 30, 31, 31, 30, 31, 30, 31]; -var addDays = function addDays(date, days) { - var newDate = new Date(date.getTime()); - while (days > 0) { - var leap = isLeapYear(newDate.getFullYear()); - var currentMonth = newDate.getMonth(); - var daysInCurrentMonth = (leap ? MONTH_DAYS_LEAP : MONTH_DAYS_REGULAR)[currentMonth]; - if (days > daysInCurrentMonth - newDate.getDate()) { - days -= daysInCurrentMonth - newDate.getDate() + 1; - newDate.setDate(1); - if (currentMonth < 11) { - newDate.setMonth(currentMonth + 1); - } else { - newDate.setMonth(0); - newDate.setFullYear(newDate.getFullYear() + 1); - } - } else { - newDate.setDate(newDate.getDate() + days); - return newDate; - } - } - return newDate; -}; -var writeArrayToMemory = function writeArrayToMemory(array, buffer) { - HEAP8.set(array, buffer); -}; -var _strftime = function _strftime(s, maxsize, format, tm) { - var tm_zone = HEAPU32[tm + 40 >> 2]; - var date = { - tm_sec: HEAP32[tm >> 2], - tm_min: HEAP32[tm + 4 >> 2], - tm_hour: HEAP32[tm + 8 >> 2], - tm_mday: HEAP32[tm + 12 >> 2], - tm_mon: HEAP32[tm + 16 >> 2], - tm_year: HEAP32[tm + 20 >> 2], - tm_wday: HEAP32[tm + 24 >> 2], - tm_yday: HEAP32[tm + 28 >> 2], - tm_isdst: HEAP32[tm + 32 >> 2], - tm_gmtoff: HEAP32[tm + 36 >> 2], - tm_zone: tm_zone ? UTF8ToString(tm_zone) : "" - }; - var pattern = UTF8ToString(format); - var EXPANSION_RULES_1 = { - "%c": "%a %b %d %H:%M:%S %Y", - "%D": "%m/%d/%y", - "%F": "%Y-%m-%d", - "%h": "%b", - "%r": "%I:%M:%S %p", - "%R": "%H:%M", - "%T": "%H:%M:%S", - "%x": "%m/%d/%y", - "%X": "%H:%M:%S", - "%Ec": "%c", - "%EC": "%C", - "%Ex": "%m/%d/%y", - "%EX": "%H:%M:%S", - "%Ey": "%y", - "%EY": "%Y", - "%Od": "%d", - "%Oe": "%e", - "%OH": "%H", - "%OI": "%I", - "%Om": "%m", - "%OM": "%M", - "%OS": "%S", - "%Ou": "%u", - "%OU": "%U", - "%OV": "%V", - "%Ow": "%w", - "%OW": "%W", - "%Oy": "%y" - }; - for (var rule in EXPANSION_RULES_1) { - pattern = pattern.replace(new RegExp(rule, "g"), EXPANSION_RULES_1[rule]); - } - var WEEKDAYS = ["Sunday", "Monday", "Tuesday", "Wednesday", "Thursday", "Friday", "Saturday"]; - var MONTHS = ["January", "February", "March", "April", "May", "June", "July", "August", "September", "October", "November", "December"]; - function leadingSomething(value, digits, character) { - var str = typeof value == "number" ? value.toString() : value || ""; - while (str.length < digits) { - str = character[0] + str; - } - return str; - } - function leadingNulls(value, digits) { - return leadingSomething(value, digits, "0"); - } - function compareByDay(date1, date2) { - function sgn(value) { - return value < 0 ? -1 : value > 0 ? 1 : 0; - } - var compare; - if ((compare = sgn(date1.getFullYear() - date2.getFullYear())) === 0) { - if ((compare = sgn(date1.getMonth() - date2.getMonth())) === 0) { - compare = sgn(date1.getDate() - date2.getDate()); - } - } - return compare; - } - function getFirstWeekStartDate(janFourth) { - switch (janFourth.getDay()) { - case 0: - return new Date(janFourth.getFullYear() - 1, 11, 29); - case 1: - return janFourth; - case 2: - return new Date(janFourth.getFullYear(), 0, 3); - case 3: - return new Date(janFourth.getFullYear(), 0, 2); - case 4: - return new Date(janFourth.getFullYear(), 0, 1); - case 5: - return new Date(janFourth.getFullYear() - 1, 11, 31); - case 6: - return new Date(janFourth.getFullYear() - 1, 11, 30); - } - } - function getWeekBasedYear(date) { - var thisDate = addDays(new Date(date.tm_year + 1900, 0, 1), date.tm_yday); - var janFourthThisYear = new Date(thisDate.getFullYear(), 0, 4); - var janFourthNextYear = new Date(thisDate.getFullYear() + 1, 0, 4); - var firstWeekStartThisYear = getFirstWeekStartDate(janFourthThisYear); - var firstWeekStartNextYear = getFirstWeekStartDate(janFourthNextYear); - if (compareByDay(firstWeekStartThisYear, thisDate) <= 0) { - if (compareByDay(firstWeekStartNextYear, thisDate) <= 0) { - return thisDate.getFullYear() + 1; - } - return thisDate.getFullYear(); - } - return thisDate.getFullYear() - 1; - } - var EXPANSION_RULES_2 = { - "%a": function a(date) { - return WEEKDAYS[date.tm_wday].substring(0, 3); - }, - "%A": function A(date) { - return WEEKDAYS[date.tm_wday]; - }, - "%b": function b(date) { - return MONTHS[date.tm_mon].substring(0, 3); - }, - "%B": function B(date) { - return MONTHS[date.tm_mon]; - }, - "%C": function C(date) { - var year = date.tm_year + 1900; - return leadingNulls(year / 100 | 0, 2); - }, - "%d": function d(date) { - return leadingNulls(date.tm_mday, 2); - }, - "%e": function e(date) { - return leadingSomething(date.tm_mday, 2, " "); - }, - "%g": function g(date) { - return getWeekBasedYear(date).toString().substring(2); - }, - "%G": getWeekBasedYear, - "%H": function H(date) { - return leadingNulls(date.tm_hour, 2); - }, - "%I": function I(date) { - var twelveHour = date.tm_hour; - if (twelveHour == 0) twelveHour = 12;else if (twelveHour > 12) twelveHour -= 12; - return leadingNulls(twelveHour, 2); - }, - "%j": function j(date) { - return leadingNulls(date.tm_mday + arraySum(isLeapYear(date.tm_year + 1900) ? MONTH_DAYS_LEAP : MONTH_DAYS_REGULAR, date.tm_mon - 1), 3); - }, - "%m": function m(date) { - return leadingNulls(date.tm_mon + 1, 2); - }, - "%M": function M(date) { - return leadingNulls(date.tm_min, 2); - }, - "%n": function n() { - return "\n"; - }, - "%p": function p(date) { - if (date.tm_hour >= 0 && date.tm_hour < 12) { - return "AM"; - } - return "PM"; - }, - "%S": function S(date) { - return leadingNulls(date.tm_sec, 2); - }, - "%t": function t() { - return "\t"; - }, - "%u": function u(date) { - return date.tm_wday || 7; - }, - "%U": function U(date) { - var days = date.tm_yday + 7 - date.tm_wday; - return leadingNulls(Math.floor(days / 7), 2); - }, - "%V": function V(date) { - var val = Math.floor((date.tm_yday + 7 - (date.tm_wday + 6) % 7) / 7); - if ((date.tm_wday + 371 - date.tm_yday - 2) % 7 <= 2) { - val++; - } - if (!val) { - val = 52; - var dec31 = (date.tm_wday + 7 - date.tm_yday - 1) % 7; - if (dec31 == 4 || dec31 == 5 && isLeapYear(date.tm_year % 400 - 1)) { - val++; - } - } else if (val == 53) { - var jan1 = (date.tm_wday + 371 - date.tm_yday) % 7; - if (jan1 != 4 && (jan1 != 3 || !isLeapYear(date.tm_year))) val = 1; - } - return leadingNulls(val, 2); - }, - "%w": function w(date) { - return date.tm_wday; - }, - "%W": function W(date) { - var days = date.tm_yday + 7 - (date.tm_wday + 6) % 7; - return leadingNulls(Math.floor(days / 7), 2); - }, - "%y": function y(date) { - return (date.tm_year + 1900).toString().substring(2); - }, - "%Y": function Y(date) { - return date.tm_year + 1900; - }, - "%z": function z(date) { - var off = date.tm_gmtoff; - var ahead = off >= 0; - off = Math.abs(off) / 60; - off = off / 60 * 100 + off % 60; - return (ahead ? "+" : "-") + String("0000" + off).slice(-4); - }, - "%Z": function Z(date) { - return date.tm_zone; - }, - "%%": function _() { - return "%"; - } - }; - pattern = pattern.replace(/%%/g, "\0\0"); - for (var rule in EXPANSION_RULES_2) { - if (pattern.includes(rule)) { - pattern = pattern.replace(new RegExp(rule, "g"), EXPANSION_RULES_2[rule](date)); - } - } - pattern = pattern.replace(/\0\0/g, "%"); - var bytes = intArrayFromString(pattern, false); - if (bytes.length > maxsize) { - return 0; - } - writeArrayToMemory(bytes, s); - return bytes.length - 1; -}; -var stringToUTF8OnStack = function stringToUTF8OnStack(str) { - var size = lengthBytesUTF8(str) + 1; - var ret = _stackAlloc(size); - stringToUTF8(str, ret, size); - return ret; -}; -var getCFunc = function getCFunc(ident) { - var func = Module["_" + ident]; - return func; -}; -var ccall = function ccall(ident, returnType, argTypes, args, opts) { - var toC = { - "string": function string(str) { - var ret = 0; - if (str !== null && str !== undefined && str !== 0) { - ret = stringToUTF8OnStack(str); - } - return ret; - }, - "array": function array(arr) { - var ret = _stackAlloc(arr.length); - writeArrayToMemory(arr, ret); - return ret; - } - }; - function convertReturnValue(ret) { - if (returnType === "string") { - return UTF8ToString(ret); - } - if (returnType === "boolean") return Boolean(ret); - return ret; - } - var func = getCFunc(ident); - var cArgs = []; - var stack = 0; - if (args) { - for (var i = 0; i < args.length; i++) { - var converter = toC[argTypes[i]]; - if (converter) { - if (stack === 0) stack = _stackSave(); - cArgs[i] = converter(args[i]); - } else { - cArgs[i] = args[i]; - } - } - } - var ret = func.apply(void 0, cArgs); - function onDone(ret) { - if (stack !== 0) _stackRestore(stack); - return convertReturnValue(ret); - } - ret = onDone(ret); - return ret; -}; -function jsStackTrace() { - return new Error().stack.toString(); -} -function stackTrace() { - var js = jsStackTrace(); - if (Module["extraStackTrace"]) js += "\n" + Module["extraStackTrace"](); - return js; -} -FS.createPreloadedFile = FS_createPreloadedFile; -FS.staticInit(); -Module["requestFullscreen"] = Browser.requestFullscreen; -Module["requestAnimationFrame"] = Browser.requestAnimationFrame; -Module["setCanvasSize"] = Browser.setCanvasSize; -Module["pauseMainLoop"] = Browser.mainLoop.pause; -Module["resumeMainLoop"] = Browser.mainLoop.resume; -Module["getUserMedia"] = Browser.getUserMedia; -Module["createContext"] = Browser.createContext; -var preloadedImages = {}; -var preloadedAudios = {}; -var GLctx; -for (var i = 0; i < 32; ++i) tempFixedLengthArray.push(new Array(i)); -var miniTempWebGLFloatBuffersStorage = new Float32Array(288); -for (var i = 0; i < 288; ++i) { - miniTempWebGLFloatBuffers[i] = miniTempWebGLFloatBuffersStorage.subarray(0, i + 1); -} -var miniTempWebGLIntBuffersStorage = new Int32Array(288); -for (var i = 0; i < 288; ++i) { - miniTempWebGLIntBuffers[i] = miniTempWebGLIntBuffersStorage.subarray(0, i + 1); -} -var wasmImports = { - b: ___assert_fail, - Ph: ___syscall__newselect, - Oh: ___syscall_accept4, - Nh: ___syscall_bind, - Mh: ___syscall_connect, - Lh: ___syscall_dup3, - g: ___syscall_fcntl64, - Kh: ___syscall_getpeername, - Jh: ___syscall_getsockname, - aa: ___syscall_getsockopt, - Ih: ___syscall_ioctl, - Hh: ___syscall_listen, - Gh: ___syscall_mkdirat, - $: ___syscall_openat, - Fh: ___syscall_poll, - Eh: ___syscall_readlinkat, - Dh: ___syscall_recvfrom, - Ch: ___syscall_renameat, - Bh: ___syscall_rmdir, - Ah: ___syscall_sendto, - va: ___syscall_socket, - zh: ___syscall_stat64, - _: ___syscall_unlinkat, - wh: __emscripten_get_now_is_monotonic, - vh: __emscripten_lookup_name, - uh: __emscripten_system, - th: __emscripten_throw_longjmp, - Ba: __gmtime_js, - Aa: __localtime_js, - za: __mktime_js, - sh: __tzset_js, - F: _abort, - rh: _dmDeviceJSFreeBufferSlots, - qh: _dmDeviceJSOpen, - ph: _dmDeviceJSQueue, - oh: _dmGetDeviceSampleRate, - nh: _dmScriptHttpRequestAsync, - mh: _dmSysGetApplicationPath, - lh: _dmSysGetUserAgent, - kh: _dmSysGetUserPersistentDataRoot, - jh: _dmSysGetUserPreferredLanguage, - ih: _dmSysOpenURL, - E: _emscripten_asm_const_int, - hh: _emscripten_cancel_main_loop, - D: _emscripten_date_now, - gh: _emscripten_get_heap_max, - ta: _emscripten_get_now, - fh: _emscripten_glActiveTexture, - eh: _emscripten_glAttachShader, - dh: _emscripten_glBeginQuery, - ch: _emscripten_glBeginQueryEXT, - bh: _emscripten_glBeginTransformFeedback, - ah: _emscripten_glBindAttribLocation, - $g: _emscripten_glBindBuffer, - _g: _emscripten_glBindBufferBase, - Zg: _emscripten_glBindBufferRange, - Yg: _emscripten_glBindFramebuffer, - Xg: _emscripten_glBindRenderbuffer, - Wg: _emscripten_glBindSampler, - Vg: _emscripten_glBindTexture, - Ug: _emscripten_glBindTransformFeedback, - Tg: _emscripten_glBindVertexArray, - Sg: _emscripten_glBindVertexArrayOES, - Rg: _emscripten_glBlendColor, - Qg: _emscripten_glBlendEquation, - Pg: _emscripten_glBlendEquationSeparate, - Og: _emscripten_glBlendFunc, - Ng: _emscripten_glBlendFuncSeparate, - Mg: _emscripten_glBlitFramebuffer, - Lg: _emscripten_glBufferData, - Kg: _emscripten_glBufferSubData, - Jg: _emscripten_glCheckFramebufferStatus, - Ig: _emscripten_glClear, - Hg: _emscripten_glClearBufferfi, - Gg: _emscripten_glClearBufferfv, - Fg: _emscripten_glClearBufferiv, - Eg: _emscripten_glClearBufferuiv, - Dg: _emscripten_glClearColor, - Cg: _emscripten_glClearDepthf, - Bg: _emscripten_glClearStencil, - Ag: _emscripten_glClientWaitSync, - zg: _emscripten_glColorMask, - yg: _emscripten_glCompileShader, - xg: _emscripten_glCompressedTexImage2D, - wg: _emscripten_glCompressedTexImage3D, - vg: _emscripten_glCompressedTexSubImage2D, - ug: _emscripten_glCompressedTexSubImage3D, - tg: _emscripten_glCopyBufferSubData, - sg: _emscripten_glCopyTexImage2D, - rg: _emscripten_glCopyTexSubImage2D, - qg: _emscripten_glCopyTexSubImage3D, - pg: _emscripten_glCreateProgram, - og: _emscripten_glCreateShader, - ng: _emscripten_glCullFace, - mg: _emscripten_glDeleteBuffers, - lg: _emscripten_glDeleteFramebuffers, - kg: _emscripten_glDeleteProgram, - jg: _emscripten_glDeleteQueries, - ig: _emscripten_glDeleteQueriesEXT, - hg: _emscripten_glDeleteRenderbuffers, - gg: _emscripten_glDeleteSamplers, - fg: _emscripten_glDeleteShader, - eg: _emscripten_glDeleteSync, - dg: _emscripten_glDeleteTextures, - cg: _emscripten_glDeleteTransformFeedbacks, - bg: _emscripten_glDeleteVertexArrays, - ag: _emscripten_glDeleteVertexArraysOES, - $f: _emscripten_glDepthFunc, - _f: _emscripten_glDepthMask, - Zf: _emscripten_glDepthRangef, - Yf: _emscripten_glDetachShader, - Xf: _emscripten_glDisable, - Wf: _emscripten_glDisableVertexAttribArray, - Vf: _emscripten_glDrawArrays, - Uf: _emscripten_glDrawArraysInstanced, - Tf: _emscripten_glDrawArraysInstancedANGLE, - Sf: _emscripten_glDrawArraysInstancedARB, - Rf: _emscripten_glDrawArraysInstancedEXT, - Qf: _emscripten_glDrawArraysInstancedNV, - Pf: _emscripten_glDrawBuffers, - Of: _emscripten_glDrawBuffersEXT, - Nf: _emscripten_glDrawBuffersWEBGL, - Mf: _emscripten_glDrawElements, - Lf: _emscripten_glDrawElementsInstanced, - Kf: _emscripten_glDrawElementsInstancedANGLE, - Jf: _emscripten_glDrawElementsInstancedARB, - If: _emscripten_glDrawElementsInstancedEXT, - Hf: _emscripten_glDrawElementsInstancedNV, - Gf: _emscripten_glDrawRangeElements, - Ff: _emscripten_glEnable, - Ef: _emscripten_glEnableVertexAttribArray, - Df: _emscripten_glEndQuery, - Cf: _emscripten_glEndQueryEXT, - Bf: _emscripten_glEndTransformFeedback, - Af: _emscripten_glFenceSync, - zf: _emscripten_glFinish, - yf: _emscripten_glFlush, - xf: _emscripten_glFramebufferRenderbuffer, - wf: _emscripten_glFramebufferTexture2D, - vf: _emscripten_glFramebufferTextureLayer, - uf: _emscripten_glFrontFace, - tf: _emscripten_glGenBuffers, - sf: _emscripten_glGenFramebuffers, - rf: _emscripten_glGenQueries, - qf: _emscripten_glGenQueriesEXT, - pf: _emscripten_glGenRenderbuffers, - of: _emscripten_glGenSamplers, - nf: _emscripten_glGenTextures, - mf: _emscripten_glGenTransformFeedbacks, - lf: _emscripten_glGenVertexArrays, - kf: _emscripten_glGenVertexArraysOES, - jf: _emscripten_glGenerateMipmap, - hf: _emscripten_glGetActiveAttrib, - gf: _emscripten_glGetActiveUniform, - ff: _emscripten_glGetActiveUniformBlockName, - ef: _emscripten_glGetActiveUniformBlockiv, - df: _emscripten_glGetActiveUniformsiv, - cf: _emscripten_glGetAttachedShaders, - bf: _emscripten_glGetAttribLocation, - af: _emscripten_glGetBooleanv, - $e: _emscripten_glGetBufferParameteri64v, - _e: _emscripten_glGetBufferParameteriv, - Ze: _emscripten_glGetError, - Ye: _emscripten_glGetFloatv, - Xe: _emscripten_glGetFragDataLocation, - We: _emscripten_glGetFramebufferAttachmentParameteriv, - Ve: _emscripten_glGetInteger64i_v, - Ue: _emscripten_glGetInteger64v, - Te: _emscripten_glGetIntegeri_v, - Se: _emscripten_glGetIntegerv, - Re: _emscripten_glGetInternalformativ, - Qe: _emscripten_glGetProgramBinary, - Pe: _emscripten_glGetProgramInfoLog, - Oe: _emscripten_glGetProgramiv, - Ne: _emscripten_glGetQueryObjecti64vEXT, - Me: _emscripten_glGetQueryObjectivEXT, - Le: _emscripten_glGetQueryObjectui64vEXT, - Ke: _emscripten_glGetQueryObjectuiv, - Je: _emscripten_glGetQueryObjectuivEXT, - Ie: _emscripten_glGetQueryiv, - He: _emscripten_glGetQueryivEXT, - Ge: _emscripten_glGetRenderbufferParameteriv, - Fe: _emscripten_glGetSamplerParameterfv, - Ee: _emscripten_glGetSamplerParameteriv, - De: _emscripten_glGetShaderInfoLog, - Ce: _emscripten_glGetShaderPrecisionFormat, - Be: _emscripten_glGetShaderSource, - Ae: _emscripten_glGetShaderiv, - ze: _emscripten_glGetString, - ye: _emscripten_glGetStringi, - xe: _emscripten_glGetSynciv, - we: _emscripten_glGetTexParameterfv, - ve: _emscripten_glGetTexParameteriv, - ue: _emscripten_glGetTransformFeedbackVarying, - te: _emscripten_glGetUniformBlockIndex, - se: _emscripten_glGetUniformIndices, - re: _emscripten_glGetUniformLocation, - qe: _emscripten_glGetUniformfv, - pe: _emscripten_glGetUniformiv, - oe: _emscripten_glGetUniformuiv, - ne: _emscripten_glGetVertexAttribIiv, - me: _emscripten_glGetVertexAttribIuiv, - le: _emscripten_glGetVertexAttribPointerv, - ke: _emscripten_glGetVertexAttribfv, - je: _emscripten_glGetVertexAttribiv, - ie: _emscripten_glHint, - he: _emscripten_glInvalidateFramebuffer, - ge: _emscripten_glInvalidateSubFramebuffer, - fe: _emscripten_glIsBuffer, - ee: _emscripten_glIsEnabled, - de: _emscripten_glIsFramebuffer, - ce: _emscripten_glIsProgram, - be: _emscripten_glIsQuery, - ae: _emscripten_glIsQueryEXT, - $d: _emscripten_glIsRenderbuffer, - _d: _emscripten_glIsSampler, - Zd: _emscripten_glIsShader, - Yd: _emscripten_glIsSync, - Xd: _emscripten_glIsTexture, - Wd: _emscripten_glIsTransformFeedback, - Vd: _emscripten_glIsVertexArray, - Ud: _emscripten_glIsVertexArrayOES, - Td: _emscripten_glLineWidth, - Sd: _emscripten_glLinkProgram, - Rd: _emscripten_glPauseTransformFeedback, - Qd: _emscripten_glPixelStorei, - Pd: _emscripten_glPolygonOffset, - Od: _emscripten_glProgramBinary, - Nd: _emscripten_glProgramParameteri, - Md: _emscripten_glQueryCounterEXT, - Ld: _emscripten_glReadBuffer, - Kd: _emscripten_glReadPixels, - Jd: _emscripten_glReleaseShaderCompiler, - Id: _emscripten_glRenderbufferStorage, - Hd: _emscripten_glRenderbufferStorageMultisample, - Gd: _emscripten_glResumeTransformFeedback, - Fd: _emscripten_glSampleCoverage, - Ed: _emscripten_glSamplerParameterf, - Dd: _emscripten_glSamplerParameterfv, - Cd: _emscripten_glSamplerParameteri, - Bd: _emscripten_glSamplerParameteriv, - Ad: _emscripten_glScissor, - zd: _emscripten_glShaderBinary, - yd: _emscripten_glShaderSource, - xd: _emscripten_glStencilFunc, - wd: _emscripten_glStencilFuncSeparate, - vd: _emscripten_glStencilMask, - ud: _emscripten_glStencilMaskSeparate, - td: _emscripten_glStencilOp, - sd: _emscripten_glStencilOpSeparate, - rd: _emscripten_glTexImage2D, - qd: _emscripten_glTexImage3D, - pd: _emscripten_glTexParameterf, - od: _emscripten_glTexParameterfv, - nd: _emscripten_glTexParameteri, - md: _emscripten_glTexParameteriv, - ld: _emscripten_glTexStorage2D, - kd: _emscripten_glTexStorage3D, - jd: _emscripten_glTexSubImage2D, - id: _emscripten_glTexSubImage3D, - hd: _emscripten_glTransformFeedbackVaryings, - gd: _emscripten_glUniform1f, - fd: _emscripten_glUniform1fv, - ed: _emscripten_glUniform1i, - dd: _emscripten_glUniform1iv, - cd: _emscripten_glUniform1ui, - bd: _emscripten_glUniform1uiv, - ad: _emscripten_glUniform2f, - $c: _emscripten_glUniform2fv, - _c: _emscripten_glUniform2i, - Zc: _emscripten_glUniform2iv, - Yc: _emscripten_glUniform2ui, - Xc: _emscripten_glUniform2uiv, - Wc: _emscripten_glUniform3f, - Vc: _emscripten_glUniform3fv, - Uc: _emscripten_glUniform3i, - Tc: _emscripten_glUniform3iv, - Sc: _emscripten_glUniform3ui, - Rc: _emscripten_glUniform3uiv, - Qc: _emscripten_glUniform4f, - Pc: _emscripten_glUniform4fv, - Oc: _emscripten_glUniform4i, - Nc: _emscripten_glUniform4iv, - Mc: _emscripten_glUniform4ui, - Lc: _emscripten_glUniform4uiv, - Kc: _emscripten_glUniformBlockBinding, - Jc: _emscripten_glUniformMatrix2fv, - Ic: _emscripten_glUniformMatrix2x3fv, - Hc: _emscripten_glUniformMatrix2x4fv, - Gc: _emscripten_glUniformMatrix3fv, - Fc: _emscripten_glUniformMatrix3x2fv, - Ec: _emscripten_glUniformMatrix3x4fv, - Dc: _emscripten_glUniformMatrix4fv, - Cc: _emscripten_glUniformMatrix4x2fv, - Bc: _emscripten_glUniformMatrix4x3fv, - Ac: _emscripten_glUseProgram, - zc: _emscripten_glValidateProgram, - yc: _emscripten_glVertexAttrib1f, - xc: _emscripten_glVertexAttrib1fv, - wc: _emscripten_glVertexAttrib2f, - vc: _emscripten_glVertexAttrib2fv, - uc: _emscripten_glVertexAttrib3f, - tc: _emscripten_glVertexAttrib3fv, - sc: _emscripten_glVertexAttrib4f, - rc: _emscripten_glVertexAttrib4fv, - qc: _emscripten_glVertexAttribDivisor, - pc: _emscripten_glVertexAttribDivisorANGLE, - oc: _emscripten_glVertexAttribDivisorARB, - nc: _emscripten_glVertexAttribDivisorEXT, - mc: _emscripten_glVertexAttribDivisorNV, - lc: _emscripten_glVertexAttribI4i, - kc: _emscripten_glVertexAttribI4iv, - jc: _emscripten_glVertexAttribI4ui, - ic: _emscripten_glVertexAttribI4uiv, - hc: _emscripten_glVertexAttribIPointer, - gc: _emscripten_glVertexAttribPointer, - fc: _emscripten_glViewport, - ec: _emscripten_glWaitSync, - dc: _emscripten_memcpy_js, - cc: _emscripten_pause_main_loop, - bc: _emscripten_resize_heap, - Y: _emscripten_set_main_loop_arg, - d: _emscripten_webgl_enable_extension, - ac: _emscripten_webgl_get_current_context, - yh: _environ_get, - xh: _environ_sizes_get, - X: _exit, - G: _fd_close, - ua: _fd_read, - Ca: _fd_seek, - Z: _fd_write, - t: _getaddrinfo, - o: _getnameinfo, - sa: _glActiveTexture, - W: _glAttachShader, - e: _glBindBuffer, - ra: _glBindBufferBase, - V: _glBindFramebuffer, - s: _glBindRenderbuffer, - n: _glBindTexture, - $b: _glBlendFunc, - Q: _glBufferData, - qa: _glBufferSubData, - P: _glCheckFramebufferStatus, - _b: _glClear, - Zb: _glClearColor, - Yb: _glClearDepthf, - Xb: _glClearStencil, - Wb: _glColorMask, - C: _glCompileShader, - m: _glCompressedTexImage2D, - pa: _glCompressedTexImage3D, - l: _glCompressedTexSubImage2D, - Vb: _glCompressedTexSubImage3D, - oa: _glCreateProgram, - O: _glCreateShader, - Ub: _glCullFace, - na: _glDeleteBuffers, - Tb: _glDeleteFramebuffers, - U: _glDeleteProgram, - k: _glDeleteRenderbuffers, - B: _glDeleteShader, - ma: _glDeleteTextures, - Sb: _glDepthFunc, - Rb: _glDepthMask, - Qb: _glDisable, - Pb: _glDisableVertexAttribArray, - Ob: _glDrawArrays, - Nb: _glDrawBuffers, - Mb: _glDrawElements, - Lb: _glEnable, - Kb: _glEnableVertexAttribArray, - Jb: _glFlush, - Ib: _glFramebufferRenderbuffer, - Hb: _glFramebufferTexture2D, - Gb: _glFrontFace, - T: _glGenBuffers, - Fb: _glGenFramebuffers, - A: _glGenRenderbuffers, - la: _glGenTextures, - Eb: _glGetActiveAttrib, - Db: _glGetActiveUniform, - N: _glGetActiveUniformBlockiv, - ka: _glGetActiveUniformsiv, - Cb: _glGetAttribLocation, - c: _glGetError, - Bb: _glGetFloatv, - z: _glGetIntegerv, - ja: _glGetProgramInfoLog, - r: _glGetProgramiv, - ia: _glGetShaderInfoLog, - M: _glGetShaderiv, - y: _glGetString, - Ab: _glGetUniformBlockIndex, - zb: _glGetUniformLocation, - L: _glLinkProgram, - ha: _glPixelStorei, - yb: _glPolygonOffset, - xb: _glReadPixels, - S: _glRenderbufferStorage, - wb: _glScissor, - x: _glShaderSource, - vb: _glStencilFunc, - ub: _glStencilFuncSeparate, - tb: _glStencilMask, - sb: _glStencilOp, - rb: _glStencilOpSeparate, - i: _glTexImage2D, - qb: _glTexImage3D, - pb: _glTexParameterf, - K: _glTexParameteri, - j: _glTexSubImage2D, - ob: _glTexSubImage3D, - nb: _glUniform1i, - mb: _glUniform4fv, - lb: _glUniformBlockBinding, - kb: _glUniformMatrix4fv, - ga: _glUseProgram, - jb: _glVertexAttribPointer, - ib: _glViewport, - hb: _glfwAccelerometerEnable, - gb: _glfwCloseWindow, - fb: _glfwDisable, - eb: _glfwEnable, - db: _glfwGetAcceleration, - fa: _glfwGetDefaultFramebuffer, - cb: _glfwGetDisplayScaleFactor, - bb: _glfwGetJoystickButtons, - ab: _glfwGetJoystickDeviceId, - $a: _glfwGetJoystickHats, - J: _glfwGetJoystickParam, - _a: _glfwGetJoystickPos, - Za: _glfwGetKey, - h: _glfwGetMouseButton, - Ya: _glfwGetMouseLocked, - Xa: _glfwGetMousePos, - Wa: _glfwGetMouseWheel, - Va: _glfwGetWindowParam, - Ua: _glfwGetWindowRefreshRate, - ea: _glfwGetWindowSize, - Ta: _glfwIconifyWindow, - Sa: _glfwInitJS, - da: _glfwOpenWindow, - w: _glfwOpenWindowHint, - Ra: _glfwPollEvents, - Qa: _glfwResetKeyboard, - Pa: _glfwSetCharCallback, - Oa: _glfwSetDeviceChangedCallback, - Na: _glfwSetGamepadCallback, - Ma: _glfwSetMarkedTextCallback, - La: _glfwSetTouchCallback, - Ka: _glfwSetWindowBackgroundColor, - Ja: _glfwSetWindowCloseCallback, - Ia: _glfwSetWindowFocusCallback, - Ha: _glfwSetWindowIconifyCallback, - Ga: _glfwSetWindowSize, - Fa: _glfwSetWindowSizeCallback, - I: _glfwShowKeyboard, - Ea: _glfwSwapBuffers, - ca: _glfwSwapInterval, - Da: _glfwTerminate, - v: invoke_ii, - q: invoke_iii, - R: invoke_iiii, - ya: invoke_ji, - xa: invoke_jii, - H: invoke_vi, - u: invoke_vii, - ba: invoke_viii, - f: invoke_viiii, - p: invoke_viiiii, - a: wasmMemory, - wa: _strftime -}; -var wasmExports = createWasm(); -var _wasm_call_ctors = function ___wasm_call_ctors() { - return (_wasm_call_ctors = wasmExports["Qh"])(); -}; -var _main = Module["_main"] = function (a0, a1) { - return (_main = Module["_main"] = wasmExports["Rh"])(a0, a1); -}; -var _dmExportedSymbols = Module["_dmExportedSymbols"] = function () { - return (_dmExportedSymbols = Module["_dmExportedSymbols"] = wasmExports["Sh"])(); -}; -var _malloc = Module["_malloc"] = function (a0) { - return (_malloc = Module["_malloc"] = wasmExports["Th"])(a0); -}; -var _free = Module["_free"] = function (a0) { - return (_free = Module["_free"] = wasmExports["Uh"])(a0); -}; -var _htonl2 = function _htonl(a0) { - return (_htonl2 = wasmExports["Wh"])(a0); -}; -var _dmScript_Html5ReportOperationSuccess = Module["_dmScript_Html5ReportOperationSuccess"] = function (a0) { - return (_dmScript_Html5ReportOperationSuccess = Module["_dmScript_Html5ReportOperationSuccess"] = wasmExports["Xh"])(a0); -}; -var _dmScript_RunInteractionCallback = Module["_dmScript_RunInteractionCallback"] = function () { - return (_dmScript_RunInteractionCallback = Module["_dmScript_RunInteractionCallback"] = wasmExports["Yh"])(); -}; -var _setTempRet = function setTempRet0(a0) { - return (_setTempRet = wasmExports["Zh"])(a0); -}; -var _htons2 = function _htons(a0) { - return (_htons2 = wasmExports["_h"])(a0); -}; -var _ntohs2 = function _ntohs(a0) { - return (_ntohs2 = wasmExports["$h"])(a0); -}; -var _JSWriteDump = Module["_JSWriteDump"] = function (a0) { - return (_JSWriteDump = Module["_JSWriteDump"] = wasmExports["ai"])(a0); -}; -var _setThrew2 = function _setThrew(a0, a1) { - return (_setThrew2 = wasmExports["bi"])(a0, a1); -}; -var _stackSave = function stackSave() { - return (_stackSave = wasmExports["ci"])(); -}; -var _stackRestore = function stackRestore(a0) { - return (_stackRestore = wasmExports["di"])(a0); -}; -var _stackAlloc = function stackAlloc(a0) { - return (_stackAlloc = wasmExports["ei"])(a0); -}; -var dynCall_ji = Module["dynCall_ji"] = function (a0, a1) { - return (dynCall_ji = Module["dynCall_ji"] = wasmExports["fi"])(a0, a1); -}; -var dynCall_jii = Module["dynCall_jii"] = function (a0, a1, a2) { - return (dynCall_jii = Module["dynCall_jii"] = wasmExports["gi"])(a0, a1, a2); -}; -function invoke_vii(index, a1, a2) { - var sp = _stackSave(); - try { - getWasmTableEntry(index)(a1, a2); - } catch (e) { - _stackRestore(sp); - if (e !== e + 0) throw e; - _setThrew2(1, 0); - } -} -function invoke_ii(index, a1) { - var sp = _stackSave(); - try { - return getWasmTableEntry(index)(a1); - } catch (e) { - _stackRestore(sp); - if (e !== e + 0) throw e; - _setThrew2(1, 0); - } -} -function invoke_viiiii(index, a1, a2, a3, a4, a5) { - var sp = _stackSave(); - try { - getWasmTableEntry(index)(a1, a2, a3, a4, a5); - } catch (e) { - _stackRestore(sp); - if (e !== e + 0) throw e; - _setThrew2(1, 0); - } -} -function invoke_viiii(index, a1, a2, a3, a4) { - var sp = _stackSave(); - try { - getWasmTableEntry(index)(a1, a2, a3, a4); - } catch (e) { - _stackRestore(sp); - if (e !== e + 0) throw e; - _setThrew2(1, 0); - } -} -function invoke_viii(index, a1, a2, a3) { - var sp = _stackSave(); - try { - getWasmTableEntry(index)(a1, a2, a3); - } catch (e) { - _stackRestore(sp); - if (e !== e + 0) throw e; - _setThrew2(1, 0); - } -} -function invoke_iiii(index, a1, a2, a3) { - var sp = _stackSave(); - try { - return getWasmTableEntry(index)(a1, a2, a3); - } catch (e) { - _stackRestore(sp); - if (e !== e + 0) throw e; - _setThrew2(1, 0); - } -} -function invoke_iii(index, a1, a2) { - var sp = _stackSave(); - try { - return getWasmTableEntry(index)(a1, a2); - } catch (e) { - _stackRestore(sp); - if (e !== e + 0) throw e; - _setThrew2(1, 0); - } -} -function invoke_vi(index, a1) { - var sp = _stackSave(); - try { - getWasmTableEntry(index)(a1); - } catch (e) { - _stackRestore(sp); - if (e !== e + 0) throw e; - _setThrew2(1, 0); - } -} -function invoke_ji(index, a1) { - var sp = _stackSave(); - try { - return dynCall_ji(index, a1); - } catch (e) { - _stackRestore(sp); - if (e !== e + 0) throw e; - _setThrew2(1, 0); - } -} -function invoke_jii(index, a1, a2) { - var sp = _stackSave(); - try { - return dynCall_jii(index, a1, a2); - } catch (e) { - _stackRestore(sp); - if (e !== e + 0) throw e; - _setThrew2(1, 0); - } -} -Module["callMain"] = callMain; -Module["ccall"] = ccall; -Module["UTF8ToString"] = UTF8ToString; -Module["stringToNewUTF8"] = stringToNewUTF8; -Module["stackTrace"] = stackTrace; -var calledRun; -dependenciesFulfilled = function runCaller() { - if (!calledRun) run(); - if (!calledRun) dependenciesFulfilled = runCaller; -}; -function callMain() { - var args = arguments.length > 0 && arguments[0] !== undefined ? arguments[0] : []; - var entryFunction = _main; - args.unshift(thisProgram); - var argc = args.length; - var argv = _stackAlloc((argc + 1) * 4); - var argv_ptr = argv; - args.forEach(function (arg) { - HEAPU32[argv_ptr >> 2] = stringToUTF8OnStack(arg); - argv_ptr += 4; - }); - HEAPU32[argv_ptr >> 2] = 0; - try { - var ret = entryFunction(argc, argv); - exitJS(ret, true); - return ret; - } catch (e) { - return handleException(e); - } -} -function run() { - var args = arguments.length > 0 && arguments[0] !== undefined ? arguments[0] : arguments_; - if (runDependencies > 0) { - return; - } - preRun(); - if (runDependencies > 0) { - return; - } - function doRun() { - if (calledRun) return; - calledRun = true; - Module["calledRun"] = true; - if (ABORT) return; - initRuntime(); - preMain(); - if (Module["onRuntimeInitialized"]) Module["onRuntimeInitialized"](); - if (shouldRunNow) callMain(args); - postRun(); - } - if (Module["setStatus"]) { - Module["setStatus"]("Running..."); - setTimeout(function () { - setTimeout(function () { - Module["setStatus"](""); - }, 1); - doRun(); - }, 1); - } else { - doRun(); - } -} -if (Module["preInit"]) { - if (typeof Module["preInit"] == "function") Module["preInit"] = [Module["preInit"]]; - while (Module["preInit"].length > 0) { - Module["preInit"].pop()(); - } -} -var shouldRunNow = true; -if (Module["noInitialRun"]) shouldRunNow = false; -run(); diff --git a/docs/druid/index.html b/docs/druid/index.html deleted file mode 100644 index 77629c9..0000000 --- a/docs/druid/index.html +++ /dev/null @@ -1,158 +0,0 @@ - - - - - - - - - - druid 1.0.1 - - - - - -

- - - - - - diff --git a/docs/druid/druid_logo.png b/docs/druid_logo.png similarity index 100% rename from docs/druid/druid_logo.png rename to docs/druid_logo.png diff --git a/docs/druid_wasm.js b/docs/druid_wasm.js new file mode 100644 index 0000000..c746472 --- /dev/null +++ b/docs/druid_wasm.js @@ -0,0 +1 @@ +function _createForOfIteratorHelper(r,e){var t="undefined"!=typeof Symbol&&r[Symbol.iterator]||r["@@iterator"];if(!t){if(Array.isArray(r)||(t=_unsupportedIterableToArray(r))||e&&r&&"number"==typeof r.length){t&&(r=t);var _n=0,F=function F(){};return{s:F,n:function n(){return _n>=r.length?{done:!0}:{done:!1,value:r[_n++]}},e:function e(r){throw r},f:F}}throw new TypeError("Invalid attempt to iterate non-iterable instance.\nIn order to be iterable, non-array objects must have a [Symbol.iterator]() method.")}var o,a=!0,u=!1;return{s:function s(){t=t.call(r)},n:function n(){var r=t.next();return a=r.done,r},e:function e(r){u=!0,o=r},f:function f(){try{a||null==t.return||t.return()}finally{if(u)throw o}}}}function _defineProperties(e,r){for(var t=0;tr.length)&&(a=r.length);for(var e=0,n=Array(a);e1&&arguments[1]!==undefined?arguments[1]:true;filename=isFileURI(filename)?new URL(filename):nodePath.normalize(filename);return new Promise(function(resolve,reject){fs.readFile(filename,binary?undefined:"utf8",function(err,data){if(err)reject(err);else resolve(binary?data.buffer:data)})})};if(!Module["thisProgram"]&&process.argv.length>1){thisProgram=process.argv[1].replace(/\\/g,"/")}arguments_=process.argv.slice(2);if(typeof module!="undefined"){module["exports"]=Module}quit_=function quit_(status,toThrow){process.exitCode=status;throw toThrow}}else if(ENVIRONMENT_IS_WEB||ENVIRONMENT_IS_WORKER){if(ENVIRONMENT_IS_WORKER){scriptDirectory=self.location.href}else if(typeof document!="undefined"&&document.currentScript){scriptDirectory=document.currentScript.src}if(scriptDirectory.startsWith("blob:")){scriptDirectory=""}else{scriptDirectory=scriptDirectory.substr(0,scriptDirectory.replace(/[?#].*/,"").lastIndexOf("/")+1)}{if(ENVIRONMENT_IS_WORKER){readBinary=function readBinary(url){var xhr=new XMLHttpRequest;xhr.open("GET",url,false);xhr.responseType="arraybuffer";xhr.send(null);return new Uint8Array(xhr.response)}}readAsync=function readAsync(url){if(isFileURI(url)){return new Promise(function(resolve,reject){var xhr=new XMLHttpRequest;xhr.open("GET",url,true);xhr.responseType="arraybuffer";xhr.onload=function(){if(xhr.status==200||xhr.status==0&&xhr.response){resolve(xhr.response);return}reject(xhr.status)};xhr.onerror=reject;xhr.send(null)})}return fetch(url,{credentials:"same-origin"}).then(function(response){if(response.ok){return response.arrayBuffer()}return Promise.reject(new Error(response.status+" : "+response.url))})}}}else{}var out=Module["print"]||console.log.bind(console);var err=Module["printErr"]||console.error.bind(console);Object.assign(Module,moduleOverrides);moduleOverrides=null;if(Module["arguments"])arguments_=Module["arguments"];if(Module["thisProgram"])thisProgram=Module["thisProgram"];var wasmBinary=Module["wasmBinary"];var wasmMemory;var ABORT=false;var EXITSTATUS;function assert(condition,text){if(!condition){abort(text)}}var HEAP8,HEAPU8,HEAP16,HEAPU16,HEAP32,HEAPU32,HEAPF32,HEAPF64;function updateMemoryViews(){var b=wasmMemory.buffer;Module["HEAP8"]=HEAP8=new Int8Array(b);Module["HEAP16"]=HEAP16=new Int16Array(b);Module["HEAPU8"]=HEAPU8=new Uint8Array(b);Module["HEAPU16"]=HEAPU16=new Uint16Array(b);Module["HEAP32"]=HEAP32=new Int32Array(b);Module["HEAPU32"]=HEAPU32=new Uint32Array(b);Module["HEAPF32"]=HEAPF32=new Float32Array(b);Module["HEAPF64"]=HEAPF64=new Float64Array(b)}if(Module["wasmMemory"]){wasmMemory=Module["wasmMemory"]}else{var INITIAL_MEMORY=Module["INITIAL_MEMORY"]||33554432;wasmMemory=new WebAssembly.Memory({initial:INITIAL_MEMORY/65536,maximum:2147483648/65536})}updateMemoryViews();var __ATPRERUN__=[];var __ATINIT__=[];var __ATMAIN__=[];var __ATEXIT__=[];var __ATPOSTRUN__=[];var runtimeInitialized=false;function preRun(){if(Module["preRun"]){if(typeof Module["preRun"]=="function")Module["preRun"]=[Module["preRun"]];while(Module["preRun"].length){addOnPreRun(Module["preRun"].shift())}}callRuntimeCallbacks(__ATPRERUN__)}function initRuntime(){runtimeInitialized=true;if(!Module["noFSInit"]&&!FS.initialized)FS.init();FS.ignorePermissions=false;TTY.init();SOCKFS.root=FS.mount(SOCKFS,{},null);callRuntimeCallbacks(__ATINIT__)}function preMain(){callRuntimeCallbacks(__ATMAIN__)}function postRun(){if(Module["postRun"]){if(typeof Module["postRun"]=="function")Module["postRun"]=[Module["postRun"]];while(Module["postRun"].length){addOnPostRun(Module["postRun"].shift())}}callRuntimeCallbacks(__ATPOSTRUN__)}function addOnPreRun(cb){__ATPRERUN__.unshift(cb)}function addOnInit(cb){__ATINIT__.unshift(cb)}function addOnPostRun(cb){__ATPOSTRUN__.unshift(cb)}if(!Math.fround){var froundBuffer=new Float32Array(1);Math.fround=function(x){froundBuffer[0]=x;return froundBuffer[0]}}Math.clz32||(Math.clz32=function(x){var n=32;var y=x>>16;if(y){n-=16;x=y}y=x>>8;if(y){n-=8;x=y}y=x>>4;if(y){n-=4;x=y}y=x>>2;if(y){n-=2;x=y}y=x>>1;if(y)return n-2;return n-x});Math.trunc||(Math.trunc=function(x){return x<0?Math.ceil(x):Math.floor(x)});var runDependencies=0;var runDependencyWatcher=null;var dependenciesFulfilled=null;function getUniqueRunDependency(id){return id}function addRunDependency(id){var _Module$monitorRunDep;runDependencies++;(_Module$monitorRunDep=Module["monitorRunDependencies"])===null||_Module$monitorRunDep===void 0||_Module$monitorRunDep.call(Module,runDependencies)}function removeRunDependency(id){var _Module$monitorRunDep2;runDependencies--;(_Module$monitorRunDep2=Module["monitorRunDependencies"])===null||_Module$monitorRunDep2===void 0||_Module$monitorRunDep2.call(Module,runDependencies);if(runDependencies==0){if(runDependencyWatcher!==null){clearInterval(runDependencyWatcher);runDependencyWatcher=null}if(dependenciesFulfilled){var callback=dependenciesFulfilled;dependenciesFulfilled=null;callback()}}}function abort(what){var _Module$onAbort;(_Module$onAbort=Module["onAbort"])===null||_Module$onAbort===void 0||_Module$onAbort.call(Module,what);what="Aborted("+what+")";err(what);ABORT=true;EXITSTATUS=1;what+=". Build with -sASSERTIONS for more info.";var e=new WebAssembly.RuntimeError(what);throw e}var dataURIPrefix="data:application/octet-stream;base64,";var isDataURI=function isDataURI(filename){return filename.startsWith(dataURIPrefix)};var isFileURI=function isFileURI(filename){return filename.startsWith("file://")};function findWasmBinary(){var f="dmengine.wasm";if(!isDataURI(f)){return locateFile(f)}return f}var wasmBinaryFile;function getBinarySync(file){if(file==wasmBinaryFile&&wasmBinary){return new Uint8Array(wasmBinary)}if(readBinary){return readBinary(file)}throw"both async and sync fetching of the wasm failed"}function getBinaryPromise(binaryFile){if(!wasmBinary){return readAsync(binaryFile).then(function(response){return new Uint8Array(response)},function(){return getBinarySync(binaryFile)})}return Promise.resolve().then(function(){return getBinarySync(binaryFile)})}function instantiateArrayBuffer(binaryFile,imports,receiver){return getBinaryPromise(binaryFile).then(function(binary){return WebAssembly.instantiate(binary,imports)}).then(receiver,function(reason){err("failed to asynchronously prepare wasm: ".concat(reason));abort(reason)})}function instantiateAsync(binary,binaryFile,imports,callback){if(!binary&&typeof WebAssembly.instantiateStreaming=="function"&&!isDataURI(binaryFile)&&!isFileURI(binaryFile)&&!ENVIRONMENT_IS_NODE&&typeof fetch=="function"){return fetch(binaryFile,{credentials:"same-origin"}).then(function(response){var result=WebAssembly.instantiateStreaming(response,imports);return result.then(callback,function(reason){err("wasm streaming compile failed: ".concat(reason));err("falling back to ArrayBuffer instantiation");return instantiateArrayBuffer(binaryFile,imports,callback)})})}return instantiateArrayBuffer(binaryFile,imports,callback)}function getWasmImports(){return{a:wasmImports}}function createWasm(){var info=getWasmImports();function receiveInstance(instance,module){wasmExports=instance.exports;wasmTable=wasmExports["bi"];addOnInit(wasmExports["Yh"]);removeRunDependency("wasm-instantiate");return wasmExports}addRunDependency("wasm-instantiate");function receiveInstantiationResult(result){receiveInstance(result["instance"])}if(Module["instantiateWasm"]){try{return Module["instantiateWasm"](info,receiveInstance)}catch(e){err("Module.instantiateWasm callback failed with error: ".concat(e));return false}}if(!wasmBinaryFile)wasmBinaryFile=findWasmBinary();instantiateAsync(wasmBinary,wasmBinaryFile,info,receiveInstantiationResult);return{}}var tempDouble;var tempI64;var ASM_CONSTS={288688:function _(){if(navigator.userAgent.toLowerCase().indexOf("chrome")>-1){console.log("%c %c Made with Defold %c %c https://www.defold.com","background: #fd6623; padding:5px 0; border: 5px;","background: #272c31; color: #fafafa; padding:5px 0;","background: #39a3e4; padding:5px 0;","background: #ffffff; color: #000000; padding:5px 0;")}else{console.log("Made with Defold -=[ https://www.defold.com ]=-")}},289116:function _($0){console.warn(UTF8ToString($0))},289149:function _($0,$1,$2,$3){Module.__defosjs_mouseenter_listener=function(){_defos_emit_event_from_js($0)};Module.__defosjs_mouseleave_listener=function(){_defos_emit_event_from_js($1)};Module.__defosjs_click_listener=function(){_defos_emit_event_from_js($2)};Module.__defosjs_interaction_listener=function(){_defos_emit_event_from_js($3)};Module.__defosjs_mousemove_listener=function(evt){var rect=Module.canvas.getBoundingClientRect();Module.__defosjs_mouse_x=evt.clientX-rect.left;Module.__defosjs_mouse_y=evt.clientY-rect.top};Module.__defosjs_mouse_x=-1;Module.__defosjs_mouse_y=-1;Module.canvas.addEventListener("mouseenter",Module.__defosjs_mouseenter_listener);Module.canvas.addEventListener("mouseleave",Module.__defosjs_mouseleave_listener);Module.canvas.addEventListener("click",Module.__defosjs_click_listener);Module.canvas.addEventListener("click",Module.__defosjs_interaction_listener);Module.canvas.addEventListener("keyup",Module.__defosjs_interaction_listener);Module.canvas.addEventListener("touchend",Module.__defosjs_interaction_listener);document.addEventListener("mousemove",Module.__defosjs_mousemove_listener)},290332:function _($0){Module.__defosjs_pointerlockchange_listener=function(){if((document.pointerLockElement||document.mozPointerLockElement||document.webkitPointerLockElement||document.msPointerLockElement)!==Module.canvas){_defos_emit_event_from_js($0)}};if("onpointerlockchange"in document){document.addEventListener("pointerlockchange",Module.__defosjs_pointerlockchange_listener,false)}else if("onmozpointerlockchange"in document){document.addEventListener("mozpointerlockchange",Module.__defosjs_pointerlockchange_listener,false)}else if("onwebkitpointerlockchange"in document){document.addEventListener("webkitpointerlockchange",Module.__defosjs_pointerlockchange_listener,false)}else if("onmspointerlockchange"in document){document.addEventListener("mspointerlockchange",Module.__defosjs_pointerlockchange_listener,false)}},291202:function _(){Module.canvas.removeEventListener("mouseenter",Module.__defosjs_mouseenter_listener);Module.canvas.removeEventListener("mouseleave",Module.__defosjs_mouseleave_listener);Module.canvas.removeEventListener("click",Module.__defosjs_click_listener);Module.canvas.removeEventListener("click",Module.__defosjs_interaction_listener);Module.canvas.removeEventListener("keyup",Module.__defosjs_interaction_listener);Module.canvas.removeEventListener("touchend",Module.__defosjs_interaction_listener);document.removeEventListener("mousemove",Module.__defosjs_mousemove_listener);document.removeEventListener("pointerlockchange",Module.__defosjs_pointerlockchange_listener);document.removeEventListener("mozpointerlockchange",Module.__defosjs_pointerlockchange_listener);document.removeEventListener("webkitpointerlockchange",Module.__defosjs_pointerlockchange_listener);document.removeEventListener("mspointerlockchange",Module.__defosjs_pointerlockchange_listener)},292184:function _(){Module.toggleFullscreen()},292211:function _(){Module.canvas.width=window.innerWidth;Module.canvas.height=window.innerHeight},292299:function _(){return GLFW.isFullscreen},292329:function _($0){document.title=UTF8ToString($0)},292365:function _($0){function changeFavicon(src){var oldLink=document.querySelector("link[rel*='icon']");if(oldLink){document.head.removeChild(oldLink)}var link=document.createElement("link");link.rel="shortcut icon";link.href=src;document.head.appendChild(link)}changeFavicon(UTF8ToString($0))},292667:function _(){var jsString=location.href.substring(0,location.href.lastIndexOf("/"));var lengthBytes=lengthBytesUTF8(jsString)+1;var stringOnWasmHeap=_malloc(lengthBytes);stringToUTF8(jsString,stringOnWasmHeap,lengthBytes+1);return stringOnWasmHeap},292920:function _(){var jsString=window.location.search;var lengthBytes=lengthBytesUTF8(jsString)+1;var stringOnWasmHeap=_malloc(lengthBytes);stringToUTF8(jsString,stringOnWasmHeap,lengthBytes+1);return stringOnWasmHeap},293139:function _($0,$1){Module.canvas.width=$0;Module.canvas.height=$1},293196:function _(){return Module.canvas.width},293228:function _(){return Module.canvas.height},293261:function _($0){Module.canvas.style.cursor=UTF8ToString($0)},293310:function _(){Module.canvas.style.cursor="none"},293347:function _(){return Module.__defosjs_mouse_x},293383:function _(){return Module.__defosjs_mouse_y},293419:function _($0){Module.canvas.style.cursor=UTF8ToString($0)},293468:function _($0){var jsResult;var isSuccess=1;try{jsResult=eval(UTF8ToString($0))}catch(err){isSuccess=0;jsResult=err}_dmScript_Html5ReportOperationSuccess(isSuccess);jsResult+="";var stringOnWasmHeap=stringToNewUTF8(jsResult);return stringOnWasmHeap},293736:function _(){document.removeEventListener("click",Module.__defold_interaction_listener);document.removeEventListener("keyup",Module.__defold_interaction_listener);document.removeEventListener("touchend",Module.__defold_interaction_listener);Module.__defold_interaction_listener=undefined},294024:function _(){Module.__defold_interaction_listener=function(){_dmScript_RunInteractionCallback()};document.addEventListener("click",Module.__defold_interaction_listener);document.addEventListener("keyup",Module.__defold_interaction_listener);document.addEventListener("touchend",Module.__defold_interaction_listener)},294345:function _($0){Module.printErr(UTF8ToString($0))},294384:function _($0){Module.print(UTF8ToString($0))}};function defos_set_cursor_locked_(locked){if(locked){(Module.canvas.requestPointerLock||Module.canvas.mozRequestPointerLock||Module.canvas.webkitRequestPointerLock||Module.canvas.msRequestPointerLock||function(){}).call(Module.canvas)}else{(document.exitPointerLock||document.mozExitPointerLock||document.webkitExitPointerLock||document.msExitPointerLock||function(){}).call(document)}}function ExitStatus(status){this.name="ExitStatus";this.message="Program terminated with exit(".concat(status,")");this.status=status}var callRuntimeCallbacks=function callRuntimeCallbacks(callbacks){while(callbacks.length>0){callbacks.shift()(Module)}};function getValue(ptr){var type=arguments.length>1&&arguments[1]!==undefined?arguments[1]:"i8";if(type.endsWith("*"))type="*";switch(type){case"i1":return HEAP8[ptr];case"i8":return HEAP8[ptr];case"i16":return HEAP16[ptr>>1];case"i32":return HEAP32[ptr>>2];case"i64":abort("to do getValue(i64) use WASM_BIGINT");case"float":return HEAPF32[ptr>>2];case"double":return HEAPF64[ptr>>3];case"*":return HEAPU32[ptr>>2];default:abort("invalid type for getValue: ".concat(type))}}var noExitRuntime=Module["noExitRuntime"]||true;function setValue(ptr,value){var type=arguments.length>2&&arguments[2]!==undefined?arguments[2]:"i8";if(type.endsWith("*"))type="*";switch(type){case"i1":HEAP8[ptr]=value;break;case"i8":HEAP8[ptr]=value;break;case"i16":HEAP16[ptr>>1]=value;break;case"i32":HEAP32[ptr>>2]=value;break;case"i64":abort("to do setValue(i64) use WASM_BIGINT");case"float":HEAPF32[ptr>>2]=value;break;case"double":HEAPF64[ptr>>3]=value;break;case"*":HEAPU32[ptr>>2]=value;break;default:abort("invalid type for setValue: ".concat(type))}}var stackRestore=function stackRestore(val){return _emscripten_stack_restore(val)};var stackSave=function stackSave(){return _emscripten_stack_get_current2()};var UTF8Decoder=typeof TextDecoder!="undefined"?new TextDecoder:undefined;var UTF8ArrayToString=function UTF8ArrayToString(heapOrArray,idx,maxBytesToRead){var endIdx=idx+maxBytesToRead;var endPtr=idx;while(heapOrArray[endPtr]&&!(endPtr>=endIdx))++endPtr;if(endPtr-idx>16&&heapOrArray.buffer&&UTF8Decoder){return UTF8Decoder.decode(heapOrArray.subarray(idx,endPtr))}var str="";while(idx>10,56320|ch&1023)}}return str};var UTF8ToString=function UTF8ToString(ptr,maxBytesToRead){return ptr?UTF8ArrayToString(HEAPU8,ptr,maxBytesToRead):""};var ___assert_fail=function ___assert_fail(condition,filename,line,func){abort("Assertion failed: ".concat(UTF8ToString(condition),", at: ")+[filename?UTF8ToString(filename):"unknown filename",line,func?UTF8ToString(func):"unknown function"])};var PATH={isAbs:function isAbs(path){return path.charAt(0)==="/"},splitPath:function splitPath(filename){var splitPathRe=/^(\/?|)([\s\S]*?)((?:\.{1,2}|[^\/]+?|)(\.[^.\/]*|))(?:[\/]*)$/;return splitPathRe.exec(filename).slice(1)},normalizeArray:function normalizeArray(parts,allowAboveRoot){var up=0;for(var i=parts.length-1;i>=0;i--){var last=parts[i];if(last==="."){parts.splice(i,1)}else if(last===".."){parts.splice(i,1);up++}else if(up){parts.splice(i,1);up--}}if(allowAboveRoot){for(;up;up--){parts.unshift("..")}}return parts},normalize:function normalize(path){var isAbsolute=PATH.isAbs(path),trailingSlash=path.substr(-1)==="/";path=PATH.normalizeArray(path.split("/").filter(function(p){return!!p}),!isAbsolute).join("/");if(!path&&!isAbsolute){path="."}if(path&&trailingSlash){path+="/"}return(isAbsolute?"/":"")+path},dirname:function dirname(path){var result=PATH.splitPath(path),root=result[0],dir=result[1];if(!root&&!dir){return"."}if(dir){dir=dir.substr(0,dir.length-1)}return root+dir},basename:function basename(path){if(path==="/")return"/";path=PATH.normalize(path);path=path.replace(/\/$/,"");var lastSlash=path.lastIndexOf("/");if(lastSlash===-1)return path;return path.substr(lastSlash+1)},join:function join(){for(var _len=arguments.length,paths=new Array(_len),_key=0;_key<_len;_key++){paths[_key]=arguments[_key]}return PATH.normalize(paths.join("/"))},join2:function join2(l,r){return PATH.normalize(l+"/"+r)}};var initRandomFill=function initRandomFill(){if((typeof crypto==="undefined"?"undefined":_typeof(crypto))=="object"&&typeof crypto["getRandomValues"]=="function"){return function(view){return crypto.getRandomValues(view)}}else if(ENVIRONMENT_IS_NODE){try{var crypto_module=require("crypto");var randomFillSync=crypto_module["randomFillSync"];if(randomFillSync){return function(view){return crypto_module["randomFillSync"](view)}}var randomBytes=crypto_module["randomBytes"];return function(view){return view.set(randomBytes(view.byteLength)),view}}catch(e){}}abort("initRandomDevice")};var _randomFill=function randomFill(view){return(_randomFill=initRandomFill())(view)};var PATH_FS={resolve:function resolve(){var resolvedPath="",resolvedAbsolute=false;for(var i=arguments.length-1;i>=-1&&!resolvedAbsolute;i--){var path=i>=0?i<0||arguments.length<=i?undefined:arguments[i]:FS.cwd();if(typeof path!="string"){throw new TypeError("Arguments to path.resolve must be strings")}else if(!path){return""}resolvedPath=path+"/"+resolvedPath;resolvedAbsolute=PATH.isAbs(path)}resolvedPath=PATH.normalizeArray(resolvedPath.split("/").filter(function(p){return!!p}),!resolvedAbsolute).join("/");return(resolvedAbsolute?"/":"")+resolvedPath||"."},relative:function relative(from,to){from=PATH_FS.resolve(from).substr(1);to=PATH_FS.resolve(to).substr(1);function trim(arr){var start=0;for(;start=0;end--){if(arr[end]!=="")break}if(start>end)return[];return arr.slice(start,end-start+1)}var fromParts=trim(from.split("/"));var toParts=trim(to.split("/"));var length=Math.min(fromParts.length,toParts.length);var samePartsLength=length;for(var i=0;i=55296&&c<=57343){len+=4;++i}else{len+=3}}return len};var stringToUTF8Array=function stringToUTF8Array(str,heap,outIdx,maxBytesToWrite){if(!(maxBytesToWrite>0))return 0;var startIdx=outIdx;var endIdx=outIdx+maxBytesToWrite-1;for(var i=0;i=55296&&u<=57343){var u1=str.charCodeAt(++i);u=65536+((u&1023)<<10)|u1&1023}if(u<=127){if(outIdx>=endIdx)break;heap[outIdx++]=u}else if(u<=2047){if(outIdx+1>=endIdx)break;heap[outIdx++]=192|u>>6;heap[outIdx++]=128|u&63}else if(u<=65535){if(outIdx+2>=endIdx)break;heap[outIdx++]=224|u>>12;heap[outIdx++]=128|u>>6&63;heap[outIdx++]=128|u&63}else{if(outIdx+3>=endIdx)break;heap[outIdx++]=240|u>>18;heap[outIdx++]=128|u>>12&63;heap[outIdx++]=128|u>>6&63;heap[outIdx++]=128|u&63}}heap[outIdx]=0;return outIdx-startIdx};function intArrayFromString(stringy,dontAddNull,length){var len=length>0?length:lengthBytesUTF8(stringy)+1;var u8array=new Array(len);var numBytesWritten=stringToUTF8Array(stringy,u8array,0,u8array.length);if(dontAddNull)u8array.length=numBytesWritten;return u8array}var FS_stdin_getChar=function FS_stdin_getChar(){if(!FS_stdin_getChar_buffer.length){var result=null;if(ENVIRONMENT_IS_NODE){var BUFSIZE=256;var buf=Buffer.alloc(BUFSIZE);var bytesRead=0;var fd=process.stdin.fd;try{bytesRead=fs.readSync(fd,buf,0,BUFSIZE)}catch(e){if(e.toString().includes("EOF"))bytesRead=0;else throw e}if(bytesRead>0){result=buf.slice(0,bytesRead).toString("utf-8")}}else if(typeof window!="undefined"&&typeof window.prompt=="function"){result=window.prompt("Input: ");if(result!==null){result+="\n"}}else{}if(!result){return null}FS_stdin_getChar_buffer=intArrayFromString(result,true)}return FS_stdin_getChar_buffer.shift()};var TTY={ttys:[],init:function init(){},shutdown:function shutdown(){},register:function register(dev,ops){TTY.ttys[dev]={input:[],output:[],ops:ops};FS.registerDevice(dev,TTY.stream_ops)},stream_ops:{open:function open(stream){var tty=TTY.ttys[stream.node.rdev];if(!tty){throw new FS.ErrnoError(43)}stream.tty=tty;stream.seekable=false},close:function close(stream){stream.tty.ops.fsync(stream.tty)},fsync:function fsync(stream){stream.tty.ops.fsync(stream.tty)},read:function read(stream,buffer,offset,length,pos){if(!stream.tty||!stream.tty.ops.get_char){throw new FS.ErrnoError(60)}var bytesRead=0;for(var i=0;i0){out(UTF8ArrayToString(tty.output,0));tty.output=[]}},ioctl_tcgets:function ioctl_tcgets(tty){return{c_iflag:25856,c_oflag:5,c_cflag:191,c_lflag:35387,c_cc:[3,28,127,21,4,0,1,0,17,19,26,0,18,15,23,22,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0]}},ioctl_tcsets:function ioctl_tcsets(tty,optional_actions,data){return 0},ioctl_tiocgwinsz:function ioctl_tiocgwinsz(tty){return[24,80]}},default_tty1_ops:{put_char:function put_char(tty,val){if(val===null||val===10){err(UTF8ArrayToString(tty.output,0));tty.output=[]}else{if(val!=0)tty.output.push(val)}},fsync:function fsync(tty){if(tty.output&&tty.output.length>0){err(UTF8ArrayToString(tty.output,0));tty.output=[]}}}};var zeroMemory=function zeroMemory(address,size){HEAPU8.fill(0,address,address+size);return address};var alignMemory=function alignMemory(size,alignment){return Math.ceil(size/alignment)*alignment};var mmapAlloc=function mmapAlloc(size){abort()};var MEMFS={ops_table:null,mount:function mount(_mount){return MEMFS.createNode(null,"/",16384|511,0)},createNode:function createNode(parent,name,mode,dev){if(FS.isBlkdev(mode)||FS.isFIFO(mode)){throw new FS.ErrnoError(63)}MEMFS.ops_table||(MEMFS.ops_table={dir:{node:{getattr:MEMFS.node_ops.getattr,setattr:MEMFS.node_ops.setattr,lookup:MEMFS.node_ops.lookup,mknod:MEMFS.node_ops.mknod,rename:MEMFS.node_ops.rename,unlink:MEMFS.node_ops.unlink,rmdir:MEMFS.node_ops.rmdir,readdir:MEMFS.node_ops.readdir,symlink:MEMFS.node_ops.symlink},stream:{llseek:MEMFS.stream_ops.llseek}},file:{node:{getattr:MEMFS.node_ops.getattr,setattr:MEMFS.node_ops.setattr},stream:{llseek:MEMFS.stream_ops.llseek,read:MEMFS.stream_ops.read,write:MEMFS.stream_ops.write,allocate:MEMFS.stream_ops.allocate,mmap:MEMFS.stream_ops.mmap,msync:MEMFS.stream_ops.msync}},link:{node:{getattr:MEMFS.node_ops.getattr,setattr:MEMFS.node_ops.setattr,readlink:MEMFS.node_ops.readlink},stream:{}},chrdev:{node:{getattr:MEMFS.node_ops.getattr,setattr:MEMFS.node_ops.setattr},stream:FS.chrdev_stream_ops}});var node=FS.createNode(parent,name,mode,dev);if(FS.isDir(node.mode)){node.node_ops=MEMFS.ops_table.dir.node;node.stream_ops=MEMFS.ops_table.dir.stream;node.contents={}}else if(FS.isFile(node.mode)){node.node_ops=MEMFS.ops_table.file.node;node.stream_ops=MEMFS.ops_table.file.stream;node.usedBytes=0;node.contents=null}else if(FS.isLink(node.mode)){node.node_ops=MEMFS.ops_table.link.node;node.stream_ops=MEMFS.ops_table.link.stream}else if(FS.isChrdev(node.mode)){node.node_ops=MEMFS.ops_table.chrdev.node;node.stream_ops=MEMFS.ops_table.chrdev.stream}node.timestamp=Date.now();if(parent){parent.contents[name]=node;parent.timestamp=node.timestamp}return node},getFileDataAsTypedArray:function getFileDataAsTypedArray(node){if(!node.contents)return new Uint8Array(0);if(node.contents.subarray)return node.contents.subarray(0,node.usedBytes);return new Uint8Array(node.contents)},expandFileStorage:function expandFileStorage(node,newCapacity){var prevCapacity=node.contents?node.contents.length:0;if(prevCapacity>=newCapacity)return;var CAPACITY_DOUBLING_MAX=1024*1024;newCapacity=Math.max(newCapacity,prevCapacity*(prevCapacity>>0);if(prevCapacity!=0)newCapacity=Math.max(newCapacity,256);var oldContents=node.contents;node.contents=new Uint8Array(newCapacity);if(node.usedBytes>0)node.contents.set(oldContents.subarray(0,node.usedBytes),0)},resizeFileStorage:function resizeFileStorage(node,newSize){if(node.usedBytes==newSize)return;if(newSize==0){node.contents=null;node.usedBytes=0}else{var oldContents=node.contents;node.contents=new Uint8Array(newSize);if(oldContents){node.contents.set(oldContents.subarray(0,Math.min(newSize,node.usedBytes)))}node.usedBytes=newSize}},node_ops:{getattr:function getattr(node){var attr={};attr.dev=FS.isChrdev(node.mode)?node.id:1;attr.ino=node.id;attr.mode=node.mode;attr.nlink=1;attr.uid=0;attr.gid=0;attr.rdev=node.rdev;if(FS.isDir(node.mode)){attr.size=4096}else if(FS.isFile(node.mode)){attr.size=node.usedBytes}else if(FS.isLink(node.mode)){attr.size=node.link.length}else{attr.size=0}attr.atime=new Date(node.timestamp);attr.mtime=new Date(node.timestamp);attr.ctime=new Date(node.timestamp);attr.blksize=4096;attr.blocks=Math.ceil(attr.size/attr.blksize);return attr},setattr:function setattr(node,attr){if(attr.mode!==undefined){node.mode=attr.mode}if(attr.timestamp!==undefined){node.timestamp=attr.timestamp}if(attr.size!==undefined){MEMFS.resizeFileStorage(node,attr.size)}},lookup:function lookup(parent,name){throw FS.genericErrors[44]},mknod:function mknod(parent,name,mode,dev){return MEMFS.createNode(parent,name,mode,dev)},rename:function rename(old_node,new_dir,new_name){if(FS.isDir(old_node.mode)){var new_node;try{new_node=FS.lookupNode(new_dir,new_name)}catch(e){}if(new_node){for(var i in new_node.contents){throw new FS.ErrnoError(55)}}}delete old_node.parent.contents[old_node.name];old_node.parent.timestamp=Date.now();old_node.name=new_name;new_dir.contents[new_name]=old_node;new_dir.timestamp=old_node.parent.timestamp},unlink:function unlink(parent,name){delete parent.contents[name];parent.timestamp=Date.now()},rmdir:function rmdir(parent,name){var node=FS.lookupNode(parent,name);for(var i in node.contents){throw new FS.ErrnoError(55)}delete parent.contents[name];parent.timestamp=Date.now()},readdir:function readdir(node){var entries=[".",".."];for(var _i2=0,_Object$keys=Object.keys(node.contents);_i2<_Object$keys.length;_i2++){var key=_Object$keys[_i2];entries.push(key)}return entries},symlink:function symlink(parent,newname,oldpath){var node=MEMFS.createNode(parent,newname,511|40960,0);node.link=oldpath;return node},readlink:function readlink(node){if(!FS.isLink(node.mode)){throw new FS.ErrnoError(28)}return node.link}},stream_ops:{read:function read(stream,buffer,offset,length,position){var contents=stream.node.contents;if(position>=stream.node.usedBytes)return 0;var size=Math.min(stream.node.usedBytes-position,length);if(size>8&&contents.subarray){buffer.set(contents.subarray(position,position+size),offset)}else{for(var i=0;i0||position+length1&&arguments[1]!==undefined?arguments[1]:{};path=PATH_FS.resolve(path);if(!path)return{path:"",node:null};var defaults={follow_mount:true,recurse_count:0};opts=Object.assign(defaults,opts);if(opts.recurse_count>8){throw new FS.ErrnoError(32)}var parts=path.split("/").filter(function(p){return!!p});var current=FS.root;var current_path="/";for(var i=0;i40){throw new FS.ErrnoError(32)}}}}return{path:current_path,node:current}},getPath:function getPath(node){var path;while(true){if(FS.isRoot(node)){var mount=node.mount.mountpoint;if(!path)return mount;return mount[mount.length-1]!=="/"?"".concat(mount,"/").concat(path):mount+path}path=path?"".concat(node.name,"/").concat(path):node.name;node=node.parent}},hashName:function hashName(parentid,name){var hash=0;for(var i=0;i>>0)%FS.nameTable.length},hashAddNode:function hashAddNode(node){var hash=FS.hashName(node.parent.id,node.name);node.name_next=FS.nameTable[hash];FS.nameTable[hash]=node},hashRemoveNode:function hashRemoveNode(node){var hash=FS.hashName(node.parent.id,node.name);if(FS.nameTable[hash]===node){FS.nameTable[hash]=node.name_next}else{var current=FS.nameTable[hash];while(current){if(current.name_next===node){current.name_next=node.name_next;break}current=current.name_next}}},lookupNode:function lookupNode(parent,name){var errCode=FS.mayLookup(parent);if(errCode){throw new FS.ErrnoError(errCode)}var hash=FS.hashName(parent.id,name);for(var node=FS.nameTable[hash];node;node=node.name_next){var nodeName=node.name;if(node.parent.id===parent.id&&nodeName===name){return node}}return FS.lookup(parent,name)},createNode:function createNode(parent,name,mode,rdev){var node=new FS.FSNode(parent,name,mode,rdev);FS.hashAddNode(node);return node},destroyNode:function destroyNode(node){FS.hashRemoveNode(node)},isRoot:function isRoot(node){return node===node.parent},isMountpoint:function isMountpoint(node){return!!node.mounted},isFile:function isFile(mode){return(mode&61440)===32768},isDir:function isDir(mode){return(mode&61440)===16384},isLink:function isLink(mode){return(mode&61440)===40960},isChrdev:function isChrdev(mode){return(mode&61440)===8192},isBlkdev:function isBlkdev(mode){return(mode&61440)===24576},isFIFO:function isFIFO(mode){return(mode&61440)===4096},isSocket:function isSocket(mode){return(mode&49152)===49152},flagsToPermissionString:function flagsToPermissionString(flag){var perms=["r","w","rw"][flag&3];if(flag&512){perms+="w"}return perms},nodePermissions:function nodePermissions(node,perms){if(FS.ignorePermissions){return 0}if(perms.includes("r")&&!(node.mode&292)){return 2}else if(perms.includes("w")&&!(node.mode&146)){return 2}else if(perms.includes("x")&&!(node.mode&73)){return 2}return 0},mayLookup:function mayLookup(dir){if(!FS.isDir(dir.mode))return 54;var errCode=FS.nodePermissions(dir,"x");if(errCode)return errCode;if(!dir.node_ops.lookup)return 2;return 0},mayCreate:function mayCreate(dir,name){try{var node=FS.lookupNode(dir,name);return 20}catch(e){}return FS.nodePermissions(dir,"wx")},mayDelete:function mayDelete(dir,name,isdir){var node;try{node=FS.lookupNode(dir,name)}catch(e){return e.errno}var errCode=FS.nodePermissions(dir,"wx");if(errCode){return errCode}if(isdir){if(!FS.isDir(node.mode)){return 54}if(FS.isRoot(node)||FS.getPath(node)===FS.cwd()){return 10}}else{if(FS.isDir(node.mode)){return 31}}return 0},mayOpen:function mayOpen(node,flags){if(!node){return 44}if(FS.isLink(node.mode)){return 32}else if(FS.isDir(node.mode)){if(FS.flagsToPermissionString(flags)!=="r"||flags&512){return 31}}return FS.nodePermissions(node,FS.flagsToPermissionString(flags))},MAX_OPEN_FDS:4096,nextfd:function nextfd(){for(var fd=0;fd<=FS.MAX_OPEN_FDS;fd++){if(!FS.streams[fd]){return fd}}throw new FS.ErrnoError(33)},getStreamChecked:function getStreamChecked(fd){var stream=FS.getStream(fd);if(!stream){throw new FS.ErrnoError(8)}return stream},getStream:function getStream(fd){return FS.streams[fd]},createStream:function createStream(stream){var fd=arguments.length>1&&arguments[1]!==undefined?arguments[1]:-1;stream=Object.assign(new FS.FSStream,stream);if(fd==-1){fd=FS.nextfd()}stream.fd=fd;FS.streams[fd]=stream;return stream},closeStream:function closeStream(fd){FS.streams[fd]=null},dupStream:function dupStream(origStream){var _stream$stream_ops,_stream$stream_ops$du;var fd=arguments.length>1&&arguments[1]!==undefined?arguments[1]:-1;var stream=FS.createStream(origStream,fd);(_stream$stream_ops=stream.stream_ops)===null||_stream$stream_ops===void 0||(_stream$stream_ops$du=_stream$stream_ops.dup)===null||_stream$stream_ops$du===void 0||_stream$stream_ops$du.call(_stream$stream_ops,stream);return stream},chrdev_stream_ops:{open:function open(stream){var _stream$stream_ops$op,_stream$stream_ops2;var device=FS.getDevice(stream.node.rdev);stream.stream_ops=device.stream_ops;(_stream$stream_ops$op=(_stream$stream_ops2=stream.stream_ops).open)===null||_stream$stream_ops$op===void 0||_stream$stream_ops$op.call(_stream$stream_ops2,stream)},llseek:function llseek(){throw new FS.ErrnoError(70)}},major:function major(dev){return dev>>8},minor:function minor(dev){return dev&255},makedev:function makedev(ma,mi){return ma<<8|mi},registerDevice:function registerDevice(dev,ops){FS.devices[dev]={stream_ops:ops}},getDevice:function getDevice(dev){return FS.devices[dev]},getMounts:function getMounts(mount){var mounts=[];var check=[mount];while(check.length){var m=check.pop();mounts.push(m);check.push.apply(check,_toConsumableArray(m.mounts))}return mounts},syncfs:function syncfs(populate,callback){if(typeof populate=="function"){callback=populate;populate=false}FS.syncFSRequests++;if(FS.syncFSRequests>1){err("warning: ".concat(FS.syncFSRequests," FS.syncfs operations in flight at once, probably just doing extra work"))}var mounts=FS.getMounts(FS.root.mount);var completed=0;function doCallback(errCode){FS.syncFSRequests--;return callback(errCode)}function done(errCode){if(errCode){if(!done.errored){done.errored=true;return doCallback(errCode)}return}if(++completed>=mounts.length){doCallback(null)}}mounts.forEach(function(mount){if(!mount.type.syncfs){return done(null)}mount.type.syncfs(mount,populate,done)})},mount:function mount(type,opts,mountpoint){var root=mountpoint==="/";var pseudo=!mountpoint;var node;if(root&&FS.root){throw new FS.ErrnoError(10)}else if(!root&&!pseudo){var lookup=FS.lookupPath(mountpoint,{follow_mount:false});mountpoint=lookup.path;node=lookup.node;if(FS.isMountpoint(node)){throw new FS.ErrnoError(10)}if(!FS.isDir(node.mode)){throw new FS.ErrnoError(54)}}var mount={type:type,opts:opts,mountpoint:mountpoint,mounts:[]};var mountRoot=type.mount(mount);mountRoot.mount=mount;mount.root=mountRoot;if(root){FS.root=mountRoot}else if(node){node.mounted=mount;if(node.mount){node.mount.mounts.push(mount)}}return mountRoot},unmount:function unmount(mountpoint){var lookup=FS.lookupPath(mountpoint,{follow_mount:false});if(!FS.isMountpoint(lookup.node)){throw new FS.ErrnoError(28)}var node=lookup.node;var mount=node.mounted;var mounts=FS.getMounts(mount);Object.keys(FS.nameTable).forEach(function(hash){var current=FS.nameTable[hash];while(current){var next=current.name_next;if(mounts.includes(current.mount)){FS.destroyNode(current)}current=next}});node.mounted=null;var idx=node.mount.mounts.indexOf(mount);node.mount.mounts.splice(idx,1)},lookup:function lookup(parent,name){return parent.node_ops.lookup(parent,name)},mknod:function mknod(path,mode,dev){var lookup=FS.lookupPath(path,{parent:true});var parent=lookup.node;var name=PATH.basename(path);if(!name||name==="."||name===".."){throw new FS.ErrnoError(28)}var errCode=FS.mayCreate(parent,name);if(errCode){throw new FS.ErrnoError(errCode)}if(!parent.node_ops.mknod){throw new FS.ErrnoError(63)}return parent.node_ops.mknod(parent,name,mode,dev)},create:function create(path,mode){mode=mode!==undefined?mode:438;mode&=4095;mode|=32768;return FS.mknod(path,mode,0)},mkdir:function mkdir(path,mode){mode=mode!==undefined?mode:511;mode&=511|512;mode|=16384;return FS.mknod(path,mode,0)},mkdirTree:function mkdirTree(path,mode){var dirs=path.split("/");var d="";for(var i=0;i1&&arguments[1]!==undefined?arguments[1]:{};opts.flags=opts.flags||0;opts.encoding=opts.encoding||"binary";if(opts.encoding!=="utf8"&&opts.encoding!=="binary"){throw new Error('Invalid encoding type "'.concat(opts.encoding,'"'))}var ret;var stream=FS.open(path,opts.flags);var stat=FS.stat(path);var length=stat.size;var buf=new Uint8Array(length);FS.read(stream,buf,0,length,0);if(opts.encoding==="utf8"){ret=UTF8ArrayToString(buf,0)}else if(opts.encoding==="binary"){ret=buf}FS.close(stream);return ret},writeFile:function writeFile(path,data){var opts=arguments.length>2&&arguments[2]!==undefined?arguments[2]:{};opts.flags=opts.flags||577;var stream=FS.open(path,opts.flags,opts.mode);if(typeof data=="string"){var buf=new Uint8Array(lengthBytesUTF8(data)+1);var actualNumBytes=stringToUTF8Array(data,buf,0,buf.length);FS.write(stream,buf,0,actualNumBytes,undefined,opts.canOwn)}else if(ArrayBuffer.isView(data)){FS.write(stream,data,0,data.byteLength,undefined,opts.canOwn)}else{throw new Error("Unsupported data type")}FS.close(stream)},cwd:function cwd(){return FS.currentPath},chdir:function chdir(path){var lookup=FS.lookupPath(path,{follow:true});if(lookup.node===null){throw new FS.ErrnoError(44)}if(!FS.isDir(lookup.node.mode)){throw new FS.ErrnoError(54)}var errCode=FS.nodePermissions(lookup.node,"x");if(errCode){throw new FS.ErrnoError(errCode)}FS.currentPath=lookup.path},createDefaultDirectories:function createDefaultDirectories(){FS.mkdir("/tmp");FS.mkdir("/home");FS.mkdir("/home/web_user")},createDefaultDevices:function createDefaultDevices(){FS.mkdir("/dev");FS.registerDevice(FS.makedev(1,3),{read:function read(){return 0},write:function write(stream,buffer,offset,length,pos){return length}});FS.mkdev("/dev/null",FS.makedev(1,3));TTY.register(FS.makedev(5,0),TTY.default_tty_ops);TTY.register(FS.makedev(6,0),TTY.default_tty1_ops);FS.mkdev("/dev/tty",FS.makedev(5,0));FS.mkdev("/dev/tty1",FS.makedev(6,0));var randomBuffer=new Uint8Array(1024),randomLeft=0;var randomByte=function randomByte(){if(randomLeft===0){randomLeft=_randomFill(randomBuffer).byteLength}return randomBuffer[--randomLeft]};FS.createDevice("/dev","random",randomByte);FS.createDevice("/dev","urandom",randomByte);FS.mkdir("/dev/shm");FS.mkdir("/dev/shm/tmp")},createSpecialDirectories:function createSpecialDirectories(){FS.mkdir("/proc");var proc_self=FS.mkdir("/proc/self");FS.mkdir("/proc/self/fd");FS.mount({mount:function mount(){var node=FS.createNode(proc_self,"fd",16384|511,73);node.node_ops={lookup:function lookup(parent,name){var fd=+name;var stream=FS.getStreamChecked(fd);var ret={parent:null,mount:{mountpoint:"fake"},node_ops:{readlink:function readlink(){return stream.path}}};ret.parent=ret;return ret}};return node}},{},"/proc/self/fd")},createStandardStreams:function createStandardStreams(input,output,error){if(input){FS.createDevice("/dev","stdin",input)}else{FS.symlink("/dev/tty","/dev/stdin")}if(output){FS.createDevice("/dev","stdout",null,output)}else{FS.symlink("/dev/tty","/dev/stdout")}if(error){FS.createDevice("/dev","stderr",null,error)}else{FS.symlink("/dev/tty1","/dev/stderr")}var stdin=FS.open("/dev/stdin",0);var stdout=FS.open("/dev/stdout",1);var stderr=FS.open("/dev/stderr",1)},staticInit:function staticInit(){[44].forEach(function(code){FS.genericErrors[code]=new FS.ErrnoError(code);FS.genericErrors[code].stack=""});FS.nameTable=new Array(4096);FS.mount(MEMFS,{},"/");FS.createDefaultDirectories();FS.createDefaultDevices();FS.createSpecialDirectories();FS.filesystems={MEMFS:MEMFS,IDBFS:IDBFS}},init:function init(input,output,error){var _input,_output,_error;FS.initialized=true;(_input=input)!==null&&_input!==void 0?_input:input=Module["stdin"];(_output=output)!==null&&_output!==void 0?_output:output=Module["stdout"];(_error=error)!==null&&_error!==void 0?_error:error=Module["stderr"];FS.createStandardStreams(input,output,error)},quit:function quit(){FS.initialized=false;for(var i=0;ithis.length-1||idx<0){return undefined}var chunkOffset=idx%this.chunkSize;var chunkNum=idx/this.chunkSize|0;return this.getter(chunkNum)[chunkOffset]}},{key:"setDataGetter",value:function setDataGetter(getter){this.getter=getter}},{key:"cacheLength",value:function cacheLength(){var xhr=new XMLHttpRequest;xhr.open("HEAD",url,false);xhr.send(null);if(!(xhr.status>=200&&xhr.status<300||xhr.status===304))throw new Error("Couldn't load "+url+". Status: "+xhr.status);var datalength=Number(xhr.getResponseHeader("Content-length"));var header;var hasByteServing=(header=xhr.getResponseHeader("Accept-Ranges"))&&header==="bytes";var usesGzip=(header=xhr.getResponseHeader("Content-Encoding"))&&header==="gzip";var chunkSize=1024*1024;if(!hasByteServing)chunkSize=datalength;var doXHR=function doXHR(from,to){if(from>to)throw new Error("invalid range ("+from+", "+to+") or no bytes requested!");if(to>datalength-1)throw new Error("only "+datalength+" bytes available! programmer error!");var xhr=new XMLHttpRequest;xhr.open("GET",url,false);if(datalength!==chunkSize)xhr.setRequestHeader("Range","bytes="+from+"-"+to);xhr.responseType="arraybuffer";if(xhr.overrideMimeType){xhr.overrideMimeType("text/plain; charset=x-user-defined")}xhr.send(null);if(!(xhr.status>=200&&xhr.status<300||xhr.status===304))throw new Error("Couldn't load "+url+". Status: "+xhr.status);if(xhr.response!==undefined){return new Uint8Array(xhr.response||[])}return intArrayFromString(xhr.responseText||"",true)};var lazyArray=this;lazyArray.setDataGetter(function(chunkNum){var start=chunkNum*chunkSize;var end=(chunkNum+1)*chunkSize-1;end=Math.min(end,datalength-1);if(typeof lazyArray.chunks[chunkNum]=="undefined"){lazyArray.chunks[chunkNum]=doXHR(start,end)}if(typeof lazyArray.chunks[chunkNum]=="undefined")throw new Error("doXHR failed!");return lazyArray.chunks[chunkNum]});if(usesGzip||!datalength){chunkSize=datalength=1;datalength=this.getter(0).length;chunkSize=datalength;out("LazyFiles on gzip forces download of the whole file when length is accessed")}this._length=datalength;this._chunkSize=chunkSize;this.lengthKnown=true}},{key:"length",get:function get(){if(!this.lengthKnown){this.cacheLength()}return this._length}},{key:"chunkSize",get:function get(){if(!this.lengthKnown){this.cacheLength()}return this._chunkSize}}])}();if(typeof XMLHttpRequest!="undefined"){if(!ENVIRONMENT_IS_WORKER)throw"Cannot do synchronous binary XHRs outside webworkers in modern browsers. Use --embed-file or --preload-file in emcc";var lazyArray=new LazyUint8Array;var properties={isDevice:false,contents:lazyArray}}else{var properties={isDevice:false,url:url}}var node=FS.createFile(parent,name,properties,canRead,canWrite);if(properties.contents){node.contents=properties.contents}else if(properties.url){node.contents=null;node.url=properties.url}Object.defineProperties(node,{usedBytes:{get:function get(){return this.contents.length}}});var stream_ops={};var keys=Object.keys(node.stream_ops);keys.forEach(function(key){var fn=node.stream_ops[key];stream_ops[key]=function(){FS.forceLoadFile(node);return fn.apply(void 0,arguments)}});function writeChunks(stream,buffer,offset,length,position){var contents=stream.node.contents;if(position>=contents.length)return 0;var size=Math.min(contents.length-position,length);if(contents.slice){for(var i=0;i>2]=stat.dev;HEAP32[buf+4>>2]=stat.mode;HEAPU32[buf+8>>2]=stat.nlink;HEAP32[buf+12>>2]=stat.uid;HEAP32[buf+16>>2]=stat.gid;HEAP32[buf+20>>2]=stat.rdev;tempI64=[stat.size>>>0,(tempDouble=stat.size,+Math.abs(tempDouble)>=1?tempDouble>0?+Math.floor(tempDouble/4294967296)>>>0:~~+Math.ceil((tempDouble-+(~~tempDouble>>>0))/4294967296)>>>0:0)],HEAP32[buf+24>>2]=tempI64[0],HEAP32[buf+28>>2]=tempI64[1];HEAP32[buf+32>>2]=4096;HEAP32[buf+36>>2]=stat.blocks;var atime=stat.atime.getTime();var mtime=stat.mtime.getTime();var ctime=stat.ctime.getTime();tempI64=[Math.floor(atime/1e3)>>>0,(tempDouble=Math.floor(atime/1e3),+Math.abs(tempDouble)>=1?tempDouble>0?+Math.floor(tempDouble/4294967296)>>>0:~~+Math.ceil((tempDouble-+(~~tempDouble>>>0))/4294967296)>>>0:0)],HEAP32[buf+40>>2]=tempI64[0],HEAP32[buf+44>>2]=tempI64[1];HEAPU32[buf+48>>2]=atime%1e3*1e3;tempI64=[Math.floor(mtime/1e3)>>>0,(tempDouble=Math.floor(mtime/1e3),+Math.abs(tempDouble)>=1?tempDouble>0?+Math.floor(tempDouble/4294967296)>>>0:~~+Math.ceil((tempDouble-+(~~tempDouble>>>0))/4294967296)>>>0:0)],HEAP32[buf+56>>2]=tempI64[0],HEAP32[buf+60>>2]=tempI64[1];HEAPU32[buf+64>>2]=mtime%1e3*1e3;tempI64=[Math.floor(ctime/1e3)>>>0,(tempDouble=Math.floor(ctime/1e3),+Math.abs(tempDouble)>=1?tempDouble>0?+Math.floor(tempDouble/4294967296)>>>0:~~+Math.ceil((tempDouble-+(~~tempDouble>>>0))/4294967296)>>>0:0)],HEAP32[buf+72>>2]=tempI64[0],HEAP32[buf+76>>2]=tempI64[1];HEAPU32[buf+80>>2]=ctime%1e3*1e3;tempI64=[stat.ino>>>0,(tempDouble=stat.ino,+Math.abs(tempDouble)>=1?tempDouble>0?+Math.floor(tempDouble/4294967296)>>>0:~~+Math.ceil((tempDouble-+(~~tempDouble>>>0))/4294967296)>>>0:0)],HEAP32[buf+88>>2]=tempI64[0],HEAP32[buf+92>>2]=tempI64[1];return 0},doMsync:function doMsync(addr,stream,len,flags,offset){if(!FS.isFile(stream.node.mode)){throw new FS.ErrnoError(43)}if(flags&2){return 0}var buffer=HEAPU8.slice(addr,addr+len);FS.msync(stream,buffer,offset,len,flags)},getStreamFromFD:function getStreamFromFD(fd){var stream=FS.getStreamChecked(fd);return stream},varargs:undefined,getStr:function getStr(ptr){var ret=UTF8ToString(ptr);return ret}};function ___syscall__newselect(nfds,readfds,writefds,exceptfds,timeout){try{var total=0;var srcReadLow=readfds?HEAP32[readfds>>2]:0,srcReadHigh=readfds?HEAP32[readfds+4>>2]:0;var srcWriteLow=writefds?HEAP32[writefds>>2]:0,srcWriteHigh=writefds?HEAP32[writefds+4>>2]:0;var srcExceptLow=exceptfds?HEAP32[exceptfds>>2]:0,srcExceptHigh=exceptfds?HEAP32[exceptfds+4>>2]:0;var dstReadLow=0,dstReadHigh=0;var dstWriteLow=0,dstWriteHigh=0;var dstExceptLow=0,dstExceptHigh=0;var allLow=(readfds?HEAP32[readfds>>2]:0)|(writefds?HEAP32[writefds>>2]:0)|(exceptfds?HEAP32[exceptfds>>2]:0);var allHigh=(readfds?HEAP32[readfds+4>>2]:0)|(writefds?HEAP32[writefds+4>>2]:0)|(exceptfds?HEAP32[exceptfds+4>>2]:0);var check=function check(fd,low,high,val){return fd<32?low&val:high&val};for(var fd=0;fd>2]:0,tv_usec=readfds?HEAP32[timeout+4>>2]:0;timeoutInMillis=(tv_sec+tv_usec/1e6)*1e3}flags=stream.stream_ops.poll(stream,timeoutInMillis)}if(flags&1&&check(fd,srcReadLow,srcReadHigh,mask)){fd<32?dstReadLow=dstReadLow|mask:dstReadHigh=dstReadHigh|mask;total++}if(flags&4&&check(fd,srcWriteLow,srcWriteHigh,mask)){fd<32?dstWriteLow=dstWriteLow|mask:dstWriteHigh=dstWriteHigh|mask;total++}if(flags&2&&check(fd,srcExceptLow,srcExceptHigh,mask)){fd<32?dstExceptLow=dstExceptLow|mask:dstExceptHigh=dstExceptHigh|mask;total++}}if(readfds){HEAP32[readfds>>2]=dstReadLow;HEAP32[readfds+4>>2]=dstReadHigh}if(writefds){HEAP32[writefds>>2]=dstWriteLow;HEAP32[writefds+4>>2]=dstWriteHigh}if(exceptfds){HEAP32[exceptfds>>2]=dstExceptLow;HEAP32[exceptfds+4>>2]=dstExceptHigh}return total}catch(e){if(typeof FS=="undefined"||!(e.name==="ErrnoError"))throw e;return-e.errno}}var SOCKFS={mount:function mount(_mount3){Module["websocket"]=Module["websocket"]&&"object"===_typeof(Module["websocket"])?Module["websocket"]:{};Module["websocket"]._callbacks={};Module["websocket"]["on"]=function(event,callback){if("function"===typeof callback){this._callbacks[event]=callback}return this};Module["websocket"].emit=function(event,param){if("function"===typeof this._callbacks[event]){this._callbacks[event].call(this,param)}};return FS.createNode(null,"/",16384|511,0)},createSocket:function createSocket(family,type,protocol){type&=~526336;var streaming=type==1;if(streaming&&protocol&&protocol!=6){throw new FS.ErrnoError(66)}var sock={family:family,type:type,protocol:protocol,server:null,error:null,peers:{},pending:[],recv_queue:[],sock_ops:SOCKFS.websocket_sock_ops};var name=SOCKFS.nextname();var node=FS.createNode(SOCKFS.root,name,49152,0);node.sock=sock;var stream=FS.createStream({path:name,node:node,flags:2,seekable:false,stream_ops:SOCKFS.stream_ops});sock.stream=stream;return sock},getSocket:function getSocket(fd){var stream=FS.getStream(fd);if(!stream||!FS.isSocket(stream.node.mode)){return null}return stream.node.sock},stream_ops:{poll:function poll(stream){var sock=stream.node.sock;return sock.sock_ops.poll(sock)},ioctl:function ioctl(stream,request,varargs){var sock=stream.node.sock;return sock.sock_ops.ioctl(sock,request,varargs)},read:function read(stream,buffer,offset,length,position){var sock=stream.node.sock;var msg=sock.sock_ops.recvmsg(sock,length);if(!msg){return 0}buffer.set(msg.buffer,offset);return msg.buffer.length},write:function write(stream,buffer,offset,length,position){var sock=stream.node.sock;return sock.sock_ops.sendmsg(sock,buffer,offset,length)},close:function close(stream){var sock=stream.node.sock;sock.sock_ops.close(sock)}},nextname:function nextname(){if(!SOCKFS.nextname.current){SOCKFS.nextname.current=0}return"socket["+SOCKFS.nextname.current+++"]"},websocket_sock_ops:{createPeer:function createPeer(sock,addr,port){var ws;if(_typeof(addr)=="object"){ws=addr;addr=null;port=null}if(ws){if(ws._socket){addr=ws._socket.remoteAddress;port=ws._socket.remotePort}else{var result=/ws[s]?:\/\/([^:]+):(\d+)/.exec(ws.url);if(!result){throw new Error("WebSocket URL must be in the format ws(s)://address:port")}addr=result[1];port=parseInt(result[2],10)}}else{try{var runtimeConfig=Module["websocket"]&&"object"===_typeof(Module["websocket"]);var url="ws:#".replace("#","//");if(runtimeConfig){if("string"===typeof Module["websocket"]["url"]){url=Module["websocket"]["url"]}}if(url==="ws://"||url==="wss://"){var parts=addr.split("/");url=url+parts[0]+":"+port+"/"+parts.slice(1).join("/")}var subProtocols="binary";if(runtimeConfig){if("string"===typeof Module["websocket"]["subprotocol"]){subProtocols=Module["websocket"]["subprotocol"]}}var opts=undefined;if(subProtocols!=="null"){subProtocols=subProtocols.replace(/^ +| +$/g,"").split(/ *, */);opts=subProtocols}if(runtimeConfig&&null===Module["websocket"]["subprotocol"]){subProtocols="null";opts=undefined}var WebSocketConstructor;if(ENVIRONMENT_IS_NODE){WebSocketConstructor=require("ws")}else{WebSocketConstructor=WebSocket}ws=new WebSocketConstructor(url,opts);ws.binaryType="arraybuffer"}catch(e){throw new FS.ErrnoError(23)}}var peer={addr:addr,port:port,socket:ws,dgram_send_queue:[]};SOCKFS.websocket_sock_ops.addPeer(sock,peer);SOCKFS.websocket_sock_ops.handlePeerEvents(sock,peer);if(sock.type===2&&typeof sock.sport!="undefined"){peer.dgram_send_queue.push(new Uint8Array([255,255,255,255,"p".charCodeAt(0),"o".charCodeAt(0),"r".charCodeAt(0),"t".charCodeAt(0),(sock.sport&65280)>>8,sock.sport&255]))}return peer},getPeer:function getPeer(sock,addr,port){return sock.peers[addr+":"+port]},addPeer:function addPeer(sock,peer){sock.peers[peer.addr+":"+peer.port]=peer},removePeer:function removePeer(sock,peer){delete sock.peers[peer.addr+":"+peer.port]},handlePeerEvents:function handlePeerEvents(sock,peer){var first=true;var handleOpen=function handleOpen(){Module["websocket"].emit("open",sock.stream.fd);try{var queued=peer.dgram_send_queue.shift();while(queued){peer.socket.send(queued);queued=peer.dgram_send_queue.shift()}}catch(e){peer.socket.close()}};function handleMessage(data){if(typeof data=="string"){var encoder=new TextEncoder;data=encoder.encode(data)}else{assert(data.byteLength!==undefined);if(data.byteLength==0){return}data=new Uint8Array(data)}var wasfirst=first;first=false;if(wasfirst&&data.length===10&&data[0]===255&&data[1]===255&&data[2]===255&&data[3]===255&&data[4]==="p".charCodeAt(0)&&data[5]==="o".charCodeAt(0)&&data[6]==="r".charCodeAt(0)&&data[7]==="t".charCodeAt(0)){var newport=data[8]<<8|data[9];SOCKFS.websocket_sock_ops.removePeer(sock,peer);peer.port=newport;SOCKFS.websocket_sock_ops.addPeer(sock,peer);return}sock.recv_queue.push({addr:peer.addr,port:peer.port,data:data});Module["websocket"].emit("message",sock.stream.fd)}if(ENVIRONMENT_IS_NODE){peer.socket.on("open",handleOpen);peer.socket.on("message",function(data,isBinary){if(!isBinary){return}handleMessage(new Uint8Array(data).buffer)});peer.socket.on("close",function(){Module["websocket"].emit("close",sock.stream.fd)});peer.socket.on("error",function(error){sock.error=14;Module["websocket"].emit("error",[sock.stream.fd,sock.error,"ECONNREFUSED: Connection refused"])})}else{peer.socket.onopen=handleOpen;peer.socket.onclose=function(){Module["websocket"].emit("close",sock.stream.fd)};peer.socket.onmessage=function peer_socket_onmessage(event){handleMessage(event.data)};peer.socket.onerror=function(error){sock.error=14;Module["websocket"].emit("error",[sock.stream.fd,sock.error,"ECONNREFUSED: Connection refused"])}}},poll:function poll(sock){if(sock.type===1&&sock.server){return sock.pending.length?64|1:0}var mask=0;var dest=sock.type===1?SOCKFS.websocket_sock_ops.getPeer(sock,sock.daddr,sock.dport):null;if(sock.recv_queue.length||!dest||dest&&dest.socket.readyState===dest.socket.CLOSING||dest&&dest.socket.readyState===dest.socket.CLOSED){mask|=64|1}if(!dest||dest&&dest.socket.readyState===dest.socket.OPEN){mask|=4}if(dest&&dest.socket.readyState===dest.socket.CLOSING||dest&&dest.socket.readyState===dest.socket.CLOSED){mask|=16}return mask},ioctl:function ioctl(sock,request,arg){switch(request){case 21531:var bytes=0;if(sock.recv_queue.length){bytes=sock.recv_queue[0].data.length}HEAP32[arg>>2]=bytes;return 0;default:return 28}},close:function close(sock){if(sock.server){try{sock.server.close()}catch(e){}sock.server=null}var peers=Object.keys(sock.peers);for(var i=0;i>>0};var jstoi_q=function jstoi_q(str){return parseInt(str)};var inetPton6=function inetPton6(str){var words;var w,offset,z;var valid6regx=/^((?=.*::)(?!.*::.+::)(::)?([\dA-F]{1,4}:(:|\b)|){5}|([\dA-F]{1,4}:){6})((([\dA-F]{1,4}((?!\3)::|:\b|$))|(?!\2\3)){2}|(((2[0-4]|1\d|[1-9])?\d|25[0-5])\.?\b){4})$/i;var parts=[];if(!valid6regx.test(str)){return null}if(str==="::"){return[0,0,0,0,0,0,0,0]}if(str.startsWith("::")){str=str.replace("::","Z:")}else{str=str.replace("::",":Z:")}if(str.indexOf(".")>0){str=str.replace(new RegExp("[.]","g"),":");words=str.split(":");words[words.length-4]=jstoi_q(words[words.length-4])+jstoi_q(words[words.length-3])*256;words[words.length-3]=jstoi_q(words[words.length-2])+jstoi_q(words[words.length-1])*256;words=words.slice(0,words.length-2)}else{words=str.split(":")}offset=0;z=0;for(w=0;w>2]=16}HEAP16[sa>>1]=family;HEAP32[sa+4>>2]=addr;HEAP16[sa+2>>1]=_htons2(port);break;case 10:addr=inetPton6(addr);zeroMemory(sa,28);if(addrlen){HEAP32[addrlen>>2]=28}HEAP32[sa>>2]=family;HEAP32[sa+8>>2]=addr[0];HEAP32[sa+12>>2]=addr[1];HEAP32[sa+16>>2]=addr[2];HEAP32[sa+20>>2]=addr[3];HEAP16[sa+2>>1]=_htons2(port);break;default:return 5}return 0};var DNS={address_map:{id:1,addrs:{},names:{}},lookup_name:function lookup_name(name){var res=inetPton4(name);if(res!==null){return name}res=inetPton6(name);if(res!==null){return name}var addr;if(DNS.address_map.addrs[name]){addr=DNS.address_map.addrs[name]}else{var id=DNS.address_map.id++;assert(id<65535,"exceeded max address mappings of 65535");addr="172.29."+(id&255)+"."+(id&65280);DNS.address_map.names[addr]=name;DNS.address_map.addrs[name]=addr}return addr},lookup_addr:function lookup_addr(addr){if(DNS.address_map.names[addr]){return DNS.address_map.names[addr]}return null}};function ___syscall_accept4(fd,addr,addrlen,flags,d1,d2){try{var sock=getSocketFromFD(fd);var newsock=sock.sock_ops.accept(sock);if(addr){var errno=writeSockaddr(addr,newsock.family,DNS.lookup_name(newsock.daddr),newsock.dport,addrlen)}return newsock.stream.fd}catch(e){if(typeof FS=="undefined"||!(e.name==="ErrnoError"))throw e;return-e.errno}}var inetNtop4=function inetNtop4(addr){return(addr&255)+"."+(addr>>8&255)+"."+(addr>>16&255)+"."+(addr>>24&255)};var inetNtop6=function inetNtop6(ints){var str="";var word=0;var longest=0;var lastzero=0;var zstart=0;var len=0;var i=0;var parts=[ints[0]&65535,ints[0]>>16,ints[1]&65535,ints[1]>>16,ints[2]&65535,ints[2]>>16,ints[3]&65535,ints[3]>>16];var hasipv4=true;var v4part="";for(i=0;i<5;i++){if(parts[i]!==0){hasipv4=false;break}}if(hasipv4){v4part=inetNtop4(parts[6]|parts[7]<<16);if(parts[5]===-1){str="::ffff:";str+=v4part;return str}if(parts[5]===0){str="::";if(v4part==="0.0.0.0")v4part="";if(v4part==="0.0.0.1")v4part="1";str+=v4part;return str}}for(word=0;word<8;word++){if(parts[word]===0){if(word-lastzero>1){len=0}lastzero=word;len++}if(len>longest){longest=len;zstart=word-longest+1}}for(word=0;word<8;word++){if(longest>1){if(parts[word]===0&&word>=zstart&&word>1];var port=_ntohs2(HEAPU16[sa+2>>1]);var addr;switch(family){case 2:if(salen!==16){return{errno:28}}addr=HEAP32[sa+4>>2];addr=inetNtop4(addr);break;case 10:if(salen!==28){return{errno:28}}addr=[HEAP32[sa+8>>2],HEAP32[sa+12>>2],HEAP32[sa+16>>2],HEAP32[sa+20>>2]];addr=inetNtop6(addr);break;default:return{errno:5}}return{family:family,addr:addr,port:port}};var getSocketAddress=function getSocketAddress(addrp,addrlen,allowNull){if(allowNull&&addrp===0)return null;var info=readSockaddr(addrp,addrlen);if(info.errno)throw new FS.ErrnoError(info.errno);info.addr=DNS.lookup_addr(info.addr)||info.addr;return info};function ___syscall_bind(fd,addr,addrlen,d1,d2,d3){try{var sock=getSocketFromFD(fd);var info=getSocketAddress(addr,addrlen);sock.sock_ops.bind(sock,info.addr,info.port);return 0}catch(e){if(typeof FS=="undefined"||!(e.name==="ErrnoError"))throw e;return-e.errno}}function ___syscall_connect(fd,addr,addrlen,d1,d2,d3){try{var sock=getSocketFromFD(fd);var info=getSocketAddress(addr,addrlen);sock.sock_ops.connect(sock,info.addr,info.port);return 0}catch(e){if(typeof FS=="undefined"||!(e.name==="ErrnoError"))throw e;return-e.errno}}function ___syscall_dup3(fd,newfd,flags){try{var old=SYSCALLS.getStreamFromFD(fd);if(old.fd===newfd)return-28;if(newfd<0||newfd>=FS.MAX_OPEN_FDS)return-8;var existing=FS.getStream(newfd);if(existing)FS.close(existing);return FS.dupStream(old,newfd).fd}catch(e){if(typeof FS=="undefined"||!(e.name==="ErrnoError"))throw e;return-e.errno}}function syscallGetVarargI(){var ret=HEAP32[+SYSCALLS.varargs>>2];SYSCALLS.varargs+=4;return ret}var syscallGetVarargP=syscallGetVarargI;function ___syscall_fcntl64(fd,cmd,varargs){SYSCALLS.varargs=varargs;try{var stream=SYSCALLS.getStreamFromFD(fd);switch(cmd){case 0:{var arg=syscallGetVarargI();if(arg<0){return-28}while(FS.streams[arg]){arg++}var newStream;newStream=FS.dupStream(stream,arg);return newStream.fd}case 1:case 2:return 0;case 3:return stream.flags;case 4:{var arg=syscallGetVarargI();stream.flags|=arg;return 0}case 12:{var arg=syscallGetVarargP();var offset=0;HEAP16[arg+offset>>1]=2;return 0}case 13:case 14:return 0}return-28}catch(e){if(typeof FS=="undefined"||!(e.name==="ErrnoError"))throw e;return-e.errno}}function ___syscall_getpeername(fd,addr,addrlen,d1,d2,d3){try{var sock=getSocketFromFD(fd);if(!sock.daddr){return-53}var errno=writeSockaddr(addr,sock.family,DNS.lookup_name(sock.daddr),sock.dport,addrlen);return 0}catch(e){if(typeof FS=="undefined"||!(e.name==="ErrnoError"))throw e;return-e.errno}}function ___syscall_getsockname(fd,addr,addrlen,d1,d2,d3){try{var sock=getSocketFromFD(fd);var errno=writeSockaddr(addr,sock.family,DNS.lookup_name(sock.saddr||"0.0.0.0"),sock.sport,addrlen);return 0}catch(e){if(typeof FS=="undefined"||!(e.name==="ErrnoError"))throw e;return-e.errno}}function ___syscall_getsockopt(fd,level,optname,optval,optlen,d1){try{var sock=getSocketFromFD(fd);if(level===1){if(optname===4){HEAP32[optval>>2]=sock.error;HEAP32[optlen>>2]=4;sock.error=null;return 0}}return-50}catch(e){if(typeof FS=="undefined"||!(e.name==="ErrnoError"))throw e;return-e.errno}}function ___syscall_ioctl(fd,op,varargs){SYSCALLS.varargs=varargs;try{var stream=SYSCALLS.getStreamFromFD(fd);switch(op){case 21509:{if(!stream.tty)return-59;return 0}case 21505:{if(!stream.tty)return-59;if(stream.tty.ops.ioctl_tcgets){var termios=stream.tty.ops.ioctl_tcgets(stream);var argp=syscallGetVarargP();HEAP32[argp>>2]=termios.c_iflag||0;HEAP32[argp+4>>2]=termios.c_oflag||0;HEAP32[argp+8>>2]=termios.c_cflag||0;HEAP32[argp+12>>2]=termios.c_lflag||0;for(var i=0;i<32;i++){HEAP8[argp+i+17]=termios.c_cc[i]||0}return 0}return 0}case 21510:case 21511:case 21512:{if(!stream.tty)return-59;return 0}case 21506:case 21507:case 21508:{if(!stream.tty)return-59;if(stream.tty.ops.ioctl_tcsets){var argp=syscallGetVarargP();var c_iflag=HEAP32[argp>>2];var c_oflag=HEAP32[argp+4>>2];var c_cflag=HEAP32[argp+8>>2];var c_lflag=HEAP32[argp+12>>2];var c_cc=[];for(var i=0;i<32;i++){c_cc.push(HEAP8[argp+i+17])}return stream.tty.ops.ioctl_tcsets(stream.tty,op,{c_iflag:c_iflag,c_oflag:c_oflag,c_cflag:c_cflag,c_lflag:c_lflag,c_cc:c_cc})}return 0}case 21519:{if(!stream.tty)return-59;var argp=syscallGetVarargP();HEAP32[argp>>2]=0;return 0}case 21520:{if(!stream.tty)return-59;return-28}case 21531:{var argp=syscallGetVarargP();return FS.ioctl(stream,op,argp)}case 21523:{if(!stream.tty)return-59;if(stream.tty.ops.ioctl_tiocgwinsz){var winsize=stream.tty.ops.ioctl_tiocgwinsz(stream.tty);var argp=syscallGetVarargP();HEAP16[argp>>1]=winsize[0];HEAP16[argp+2>>1]=winsize[1]}return 0}case 21524:{if(!stream.tty)return-59;return 0}case 21515:{if(!stream.tty)return-59;return 0}default:return-28}}catch(e){if(typeof FS=="undefined"||!(e.name==="ErrnoError"))throw e;return-e.errno}}function ___syscall_listen(fd,backlog){try{var sock=getSocketFromFD(fd);sock.sock_ops.listen(sock,backlog);return 0}catch(e){if(typeof FS=="undefined"||!(e.name==="ErrnoError"))throw e;return-e.errno}}function ___syscall_mkdirat(dirfd,path,mode){try{path=SYSCALLS.getStr(path);path=SYSCALLS.calculateAt(dirfd,path);path=PATH.normalize(path);if(path[path.length-1]==="/")path=path.substr(0,path.length-1);FS.mkdir(path,mode,0);return 0}catch(e){if(typeof FS=="undefined"||!(e.name==="ErrnoError"))throw e;return-e.errno}}function ___syscall_openat(dirfd,path,flags,varargs){SYSCALLS.varargs=varargs;try{path=SYSCALLS.getStr(path);path=SYSCALLS.calculateAt(dirfd,path);var mode=varargs?syscallGetVarargI():0;return FS.open(path,flags,mode).fd}catch(e){if(typeof FS=="undefined"||!(e.name==="ErrnoError"))throw e;return-e.errno}}function ___syscall_poll(fds,nfds,timeout){try{var nonzero=0;for(var i=0;i>2];var events=HEAP16[pollfd+4>>1];var mask=32;var stream=FS.getStream(fd);if(stream){mask=SYSCALLS.DEFAULT_POLLMASK;if(stream.stream_ops.poll){mask=stream.stream_ops.poll(stream,-1)}}mask&=events|8|16;if(mask)nonzero++;HEAP16[pollfd+6>>1]=mask}return nonzero}catch(e){if(typeof FS=="undefined"||!(e.name==="ErrnoError"))throw e;return-e.errno}}var stringToUTF8=function stringToUTF8(str,outPtr,maxBytesToWrite){return stringToUTF8Array(str,HEAPU8,outPtr,maxBytesToWrite)};function ___syscall_readlinkat(dirfd,path,buf,bufsize){try{path=SYSCALLS.getStr(path);path=SYSCALLS.calculateAt(dirfd,path);if(bufsize<=0)return-28;var ret=FS.readlink(path);var len=Math.min(bufsize,lengthBytesUTF8(ret));var endChar=HEAP8[buf+len];stringToUTF8(ret,buf,bufsize+1);HEAP8[buf+len]=endChar;return len}catch(e){if(typeof FS=="undefined"||!(e.name==="ErrnoError"))throw e;return-e.errno}}function ___syscall_recvfrom(fd,buf,len,flags,addr,addrlen){try{var sock=getSocketFromFD(fd);var msg=sock.sock_ops.recvmsg(sock,len);if(!msg)return 0;if(addr){var errno=writeSockaddr(addr,sock.family,DNS.lookup_name(msg.addr),msg.port,addrlen)}HEAPU8.set(msg.buffer,buf);return msg.buffer.byteLength}catch(e){if(typeof FS=="undefined"||!(e.name==="ErrnoError"))throw e;return-e.errno}}function ___syscall_renameat(olddirfd,oldpath,newdirfd,newpath){try{oldpath=SYSCALLS.getStr(oldpath);newpath=SYSCALLS.getStr(newpath);oldpath=SYSCALLS.calculateAt(olddirfd,oldpath);newpath=SYSCALLS.calculateAt(newdirfd,newpath);FS.rename(oldpath,newpath);return 0}catch(e){if(typeof FS=="undefined"||!(e.name==="ErrnoError"))throw e;return-e.errno}}function ___syscall_rmdir(path){try{path=SYSCALLS.getStr(path);FS.rmdir(path);return 0}catch(e){if(typeof FS=="undefined"||!(e.name==="ErrnoError"))throw e;return-e.errno}}function ___syscall_sendto(fd,message,length,flags,addr,addr_len){try{var sock=getSocketFromFD(fd);var dest=getSocketAddress(addr,addr_len,true);if(!dest){return FS.write(sock.stream,HEAP8,message,length)}return sock.sock_ops.sendmsg(sock,HEAP8,message,length,dest.addr,dest.port)}catch(e){if(typeof FS=="undefined"||!(e.name==="ErrnoError"))throw e;return-e.errno}}function ___syscall_shutdown(fd,how){try{getSocketFromFD(fd);return-52}catch(e){if(typeof FS=="undefined"||!(e.name==="ErrnoError"))throw e;return-e.errno}}function ___syscall_socket(domain,type,protocol){try{var sock=SOCKFS.createSocket(domain,type,protocol);return sock.stream.fd}catch(e){if(typeof FS=="undefined"||!(e.name==="ErrnoError"))throw e;return-e.errno}}function ___syscall_stat64(path,buf){try{path=SYSCALLS.getStr(path);return SYSCALLS.doStat(FS.stat,path,buf)}catch(e){if(typeof FS=="undefined"||!(e.name==="ErrnoError"))throw e;return-e.errno}}function ___syscall_unlinkat(dirfd,path,flags){try{path=SYSCALLS.getStr(path);path=SYSCALLS.calculateAt(dirfd,path);if(flags===0){FS.unlink(path)}else if(flags===512){FS.rmdir(path)}else{abort("Invalid flags passed to unlinkat")}return 0}catch(e){if(typeof FS=="undefined"||!(e.name==="ErrnoError"))throw e;return-e.errno}}var __abort_js=function __abort_js(){abort("")};var nowIsMonotonic=1;var __emscripten_get_now_is_monotonic=function __emscripten_get_now_is_monotonic(){return nowIsMonotonic};var __emscripten_lookup_name=function __emscripten_lookup_name(name){var nameString=UTF8ToString(name);return inetPton4(DNS.lookup_name(nameString))};var __emscripten_memcpy_js=Uint8Array.prototype.copyWithin?function(dest,src,num){return HEAPU8.copyWithin(dest,src,src+num)}:function(dest,src,num){return HEAPU8.set(HEAPU8.subarray(src,src+num),dest)};var __emscripten_system=function __emscripten_system(command){if(ENVIRONMENT_IS_NODE){if(!command)return 1;var cmdstr=UTF8ToString(command);if(!cmdstr.length)return 0;var cp=require("child_process");var ret=cp.spawnSync(cmdstr,[],{shell:true,stdio:"inherit"});var _W_EXITCODE=function _W_EXITCODE(ret,sig){return ret<<8|sig};if(ret.status===null){var signalToNumber=function signalToNumber(sig){switch(sig){case"SIGHUP":return 1;case"SIGINT":return 2;case"SIGQUIT":return 3;case"SIGFPE":return 8;case"SIGKILL":return 9;case"SIGALRM":return 14;case"SIGTERM":return 15}return 2};return _W_EXITCODE(0,signalToNumber(ret.signal))}return _W_EXITCODE(ret.status,0)}if(!command)return 0;return-52};var __emscripten_throw_longjmp=function __emscripten_throw_longjmp(){throw Infinity};var convertI32PairToI53Checked=function convertI32PairToI53Checked(lo,hi){return hi+2097152>>>0<4194305-!!lo?(lo>>>0)+hi*4294967296:NaN};function __gmtime_js(time_low,time_high,tmPtr){var time=convertI32PairToI53Checked(time_low,time_high);var date=new Date(time*1e3);HEAP32[tmPtr>>2]=date.getUTCSeconds();HEAP32[tmPtr+4>>2]=date.getUTCMinutes();HEAP32[tmPtr+8>>2]=date.getUTCHours();HEAP32[tmPtr+12>>2]=date.getUTCDate();HEAP32[tmPtr+16>>2]=date.getUTCMonth();HEAP32[tmPtr+20>>2]=date.getUTCFullYear()-1900;HEAP32[tmPtr+24>>2]=date.getUTCDay();var start=Date.UTC(date.getUTCFullYear(),0,1,0,0,0,0);var yday=(date.getTime()-start)/(1e3*60*60*24)|0;HEAP32[tmPtr+28>>2]=yday}var isLeapYear=function isLeapYear(year){return year%4===0&&(year%100!==0||year%400===0)};var MONTH_DAYS_LEAP_CUMULATIVE=[0,31,60,91,121,152,182,213,244,274,305,335];var MONTH_DAYS_REGULAR_CUMULATIVE=[0,31,59,90,120,151,181,212,243,273,304,334];var ydayFromDate=function ydayFromDate(date){var leap=isLeapYear(date.getFullYear());var monthDaysCumulative=leap?MONTH_DAYS_LEAP_CUMULATIVE:MONTH_DAYS_REGULAR_CUMULATIVE;var yday=monthDaysCumulative[date.getMonth()]+date.getDate()-1;return yday};function __localtime_js(time_low,time_high,tmPtr){var time=convertI32PairToI53Checked(time_low,time_high);var date=new Date(time*1e3);HEAP32[tmPtr>>2]=date.getSeconds();HEAP32[tmPtr+4>>2]=date.getMinutes();HEAP32[tmPtr+8>>2]=date.getHours();HEAP32[tmPtr+12>>2]=date.getDate();HEAP32[tmPtr+16>>2]=date.getMonth();HEAP32[tmPtr+20>>2]=date.getFullYear()-1900;HEAP32[tmPtr+24>>2]=date.getDay();var yday=ydayFromDate(date)|0;HEAP32[tmPtr+28>>2]=yday;HEAP32[tmPtr+36>>2]=-(date.getTimezoneOffset()*60);var start=new Date(date.getFullYear(),0,1);var summerOffset=new Date(date.getFullYear(),6,1).getTimezoneOffset();var winterOffset=start.getTimezoneOffset();var dst=(summerOffset!=winterOffset&&date.getTimezoneOffset()==Math.min(winterOffset,summerOffset))|0;HEAP32[tmPtr+32>>2]=dst}var setTempRet0=function setTempRet0(val){return _emscripten_tempret_set(val)};var __mktime_js=function __mktime_js(tmPtr){var ret=function(){var date=new Date(HEAP32[tmPtr+20>>2]+1900,HEAP32[tmPtr+16>>2],HEAP32[tmPtr+12>>2],HEAP32[tmPtr+8>>2],HEAP32[tmPtr+4>>2],HEAP32[tmPtr>>2],0);var dst=HEAP32[tmPtr+32>>2];var guessedOffset=date.getTimezoneOffset();var start=new Date(date.getFullYear(),0,1);var summerOffset=new Date(date.getFullYear(),6,1).getTimezoneOffset();var winterOffset=start.getTimezoneOffset();var dstOffset=Math.min(winterOffset,summerOffset);if(dst<0){HEAP32[tmPtr+32>>2]=Number(summerOffset!=winterOffset&&dstOffset==guessedOffset)}else if(dst>0!=(dstOffset==guessedOffset)){var nonDstOffset=Math.max(winterOffset,summerOffset);var trueOffset=dst>0?dstOffset:nonDstOffset;date.setTime(date.getTime()+(trueOffset-guessedOffset)*6e4)}HEAP32[tmPtr+24>>2]=date.getDay();var yday=ydayFromDate(date)|0;HEAP32[tmPtr+28>>2]=yday;HEAP32[tmPtr>>2]=date.getSeconds();HEAP32[tmPtr+4>>2]=date.getMinutes();HEAP32[tmPtr+8>>2]=date.getHours();HEAP32[tmPtr+12>>2]=date.getDate();HEAP32[tmPtr+16>>2]=date.getMonth();HEAP32[tmPtr+20>>2]=date.getYear();var timeMs=date.getTime();if(isNaN(timeMs)){return-1}return timeMs/1e3}();return setTempRet0((tempDouble=ret,+Math.abs(tempDouble)>=1?tempDouble>0?+Math.floor(tempDouble/4294967296)>>>0:~~+Math.ceil((tempDouble-+(~~tempDouble>>>0))/4294967296)>>>0:0)),ret>>>0};var __tzset_js=function __tzset_js(timezone,daylight,std_name,dst_name){var currentYear=(new Date).getFullYear();var winter=new Date(currentYear,0,1);var summer=new Date(currentYear,6,1);var winterOffset=winter.getTimezoneOffset();var summerOffset=summer.getTimezoneOffset();var stdTimezoneOffset=Math.max(winterOffset,summerOffset);HEAPU32[timezone>>2]=stdTimezoneOffset*60;HEAP32[daylight>>2]=Number(winterOffset!=summerOffset);var extractZone=function extractZone(timezoneOffset){var sign=timezoneOffset>=0?"-":"+";var absOffset=Math.abs(timezoneOffset);var hours=String(Math.floor(absOffset/60)).padStart(2,"0");var minutes=String(absOffset%60).padStart(2,"0");return"UTC".concat(sign).concat(hours).concat(minutes)};var winterName=extractZone(winterOffset);var summerName=extractZone(summerOffset);if(summerOffset=wasmTableMirror.length)wasmTableMirror.length=funcPtr+1;wasmTableMirror[funcPtr]=func=wasmTable.get(funcPtr)}return func};function _dmScriptHttpRequestAsync(method,url,headers,arg,onload,onerror,onprogress,send_data,send_data_length,timeout){var xhr=new XMLHttpRequest;function listener(){var resp_headers=xhr.getAllResponseHeaders();resp_headers=resp_headers.replace(new RegExp("\r","g"),"");resp_headers+="\n";if(xhr.status!=0){var ab=new Uint8Array(xhr.response);var b=_malloc(ab.length*ab.BYTES_PER_ELEMENT);HEAPU8.set(ab,b);var resp_headers_buffer=stringToNewUTF8(resp_headers);getWasmTableEntry(onload)(arg,xhr.status,b,ab.length,resp_headers_buffer);_free(resp_headers_buffer);_free(b)}else{getWasmTableEntry(onerror)(arg,xhr.status)}}xhr.onload=listener;xhr.onerror=listener;xhr.ontimeout=listener;xhr.onprogress=function(progress_event){if(onprogress!=0){getWasmTableEntry(onprogress)(arg,progress_event.loaded,progress_event.total)}};xhr.open(UTF8ToString(method),UTF8ToString(url),true);xhr.responseType="arraybuffer";if(timeout>0){xhr.timeout=timeout/1e3}var headersArray=UTF8ToString(headers).split("\n");for(var i=0;i0){xhr.send(HEAPU8.subarray(send_data,send_data+send_data_length))}else{xhr.send()}}var DMSYS={_folder:"/data",_cstr:null,GetUserPersistentDataRoot:function GetUserPersistentDataRoot(){if(typeof window!=="undefined")return DMSYS._folder;else return""},PumpMessageQueue:function PumpMessageQueue(){if(typeof window==="undefined"){var uvrun=require("uvrun");uvrun.runOnce()}}};function _dmSysGetApplicationPath(){var path=location.href.substring(0,location.href.lastIndexOf("/"));var buffer=stringToNewUTF8(path);return buffer}function _dmSysGetUserAgent(){var useragent=navigator.userAgent;var buffer=stringToNewUTF8(useragent);return buffer}function _dmSysGetUserPersistentDataRoot(){if(null==DMSYS._cstr){var str=DMSYS.GetUserPersistentDataRoot();DMSYS._cstr=stringToNewUTF8(str)}return DMSYS._cstr}function _dmSysGetUserPreferredLanguage(defaultlang){var jsdefault=UTF8ToString(defaultlang);var preferred=navigator==undefined?jsdefault:navigator.languages?navigator.languages[0]||jsdefault:navigator.language||navigator.userLanguage||navigator.browserLanguage||navigator.systemLanguage||jsdefault;var buffer=stringToNewUTF8(preferred);return buffer}var JSEvents={removeAllEventListeners:function removeAllEventListeners(){while(JSEvents.eventHandlers.length){JSEvents._removeHandler(JSEvents.eventHandlers.length-1)}JSEvents.deferredCalls=[]},inEventHandler:0,deferredCalls:[],deferCall:function deferCall(targetFunction,precedence,argsList){function arraysHaveEqualContent(arrA,arrB){if(arrA.length!=arrB.length)return false;for(var i in arrA){if(arrA[i]!=arrB[i])return false}return true}var _iterator=_createForOfIteratorHelper(JSEvents.deferredCalls),_step;try{for(_iterator.s();!(_step=_iterator.n()).done;){var call=_step.value;if(call.targetFunction==targetFunction&&arraysHaveEqualContent(call.argsList,argsList)){return}}}catch(err){_iterator.e(err)}finally{_iterator.f()}JSEvents.deferredCalls.push({targetFunction:targetFunction,precedence:precedence,argsList:argsList});JSEvents.deferredCalls.sort(function(x,y){return x.precedence>2]:ch==105?HEAP32[buf>>2]:HEAPF64[buf>>3]);buf+=wide?8:4}return readEmAsmArgsArray};var runEmAsmFunction=function runEmAsmFunction(code,sigPtr,argbuf){var args=readEmAsmArgs(sigPtr,argbuf);return ASM_CONSTS[code].apply(ASM_CONSTS,_toConsumableArray(args))};var _emscripten_asm_const_double=function _emscripten_asm_const_double(code,sigPtr,argbuf){return runEmAsmFunction(code,sigPtr,argbuf)};var _emscripten_asm_const_int=function _emscripten_asm_const_int(code,sigPtr,argbuf){return runEmAsmFunction(code,sigPtr,argbuf)};var _emscripten_set_main_loop_timing=function _emscripten_set_main_loop_timing(mode,value){Browser.mainLoop.timingMode=mode;Browser.mainLoop.timingValue=value;if(!Browser.mainLoop.func){return 1}if(!Browser.mainLoop.running){Browser.mainLoop.running=true}if(mode==0){Browser.mainLoop.scheduler=function Browser_mainLoop_scheduler_setTimeout(){var timeUntilNextTick=Math.max(0,Browser.mainLoop.tickStartTime+value-_emscripten_get_now())|0;setTimeout(Browser.mainLoop.runner,timeUntilNextTick)};Browser.mainLoop.method="timeout"}else if(mode==1){Browser.mainLoop.scheduler=function Browser_mainLoop_scheduler_rAF(){Browser.requestAnimationFrame(Browser.mainLoop.runner)};Browser.mainLoop.method="rAF"}else if(mode==2){if(typeof Browser.setImmediate=="undefined"){if(typeof setImmediate=="undefined"){var setImmediates=[];var emscriptenMainLoopMessageId="setimmediate";var Browser_setImmediate_messageHandler=function Browser_setImmediate_messageHandler(event){if(event.data===emscriptenMainLoopMessageId||event.data.target===emscriptenMainLoopMessageId){event.stopPropagation();setImmediates.shift()()}};addEventListener("message",Browser_setImmediate_messageHandler,true);Browser.setImmediate=function Browser_emulated_setImmediate(func){setImmediates.push(func);if(ENVIRONMENT_IS_WORKER){var _setImmediates,_Module$_setImmediate;(_Module$_setImmediate=Module[_setImmediates="setImmediates"])!==null&&_Module$_setImmediate!==void 0?_Module$_setImmediate:Module[_setImmediates]=[];Module["setImmediates"].push(func);postMessage({target:emscriptenMainLoopMessageId})}else postMessage(emscriptenMainLoopMessageId,"*")}}else{Browser.setImmediate=setImmediate}}Browser.mainLoop.scheduler=function Browser_mainLoop_scheduler_setImmediate(){Browser.setImmediate(Browser.mainLoop.runner)};Browser.mainLoop.method="immediate"}return 0};var _emscripten_get_now;_emscripten_get_now=function _emscripten_get_now(){return performance.now()};var setMainLoop=function setMainLoop(browserIterationFunc,fps,simulateInfiniteLoop,arg,noSetTiming){Browser.mainLoop.func=browserIterationFunc;Browser.mainLoop.arg=arg;var thisMainLoopId=Browser.mainLoop.currentlyRunningMainloop;function checkIsRunning(){if(thisMainLoopId0){var start=Date.now();var blocker=Browser.mainLoop.queue.shift();blocker.func(blocker.arg);if(Browser.mainLoop.remainingBlockers){var remaining=Browser.mainLoop.remainingBlockers;var next=remaining%1==0?remaining-1:Math.floor(remaining);if(blocker.counted){Browser.mainLoop.remainingBlockers=next}else{next=next+.5;Browser.mainLoop.remainingBlockers=(8*remaining+next)/9}}Browser.mainLoop.updateStatus();if(!checkIsRunning())return;setTimeout(Browser.mainLoop.runner,0);return}if(!checkIsRunning())return;Browser.mainLoop.currentFrameNumber=Browser.mainLoop.currentFrameNumber+1|0;if(Browser.mainLoop.timingMode==1&&Browser.mainLoop.timingValue>1&&Browser.mainLoop.currentFrameNumber%Browser.mainLoop.timingValue!=0){Browser.mainLoop.scheduler();return}else if(Browser.mainLoop.timingMode==0){Browser.mainLoop.tickStartTime=_emscripten_get_now()}Browser.mainLoop.runIter(browserIterationFunc);if(!checkIsRunning())return;if((typeof SDL==="undefined"?"undefined":_typeof(SDL))=="object")(_SDL$audio=SDL.audio)===null||_SDL$audio===void 0||(_SDL$audio$queueNewAu=_SDL$audio.queueNewAudioData)===null||_SDL$audio$queueNewAu===void 0||_SDL$audio$queueNewAu.call(_SDL$audio);Browser.mainLoop.scheduler()};if(!noSetTiming){if(fps&&fps>0){_emscripten_set_main_loop_timing(0,1e3/fps)}else{_emscripten_set_main_loop_timing(1,1)}Browser.mainLoop.scheduler()}if(simulateInfiniteLoop){throw"unwind"}};var handleException=function handleException(e){if(e instanceof ExitStatus||e=="unwind"){return EXITSTATUS}quit_(1,e)};var runtimeKeepaliveCounter=0;var keepRuntimeAlive=function keepRuntimeAlive(){return noExitRuntime||runtimeKeepaliveCounter>0};var _proc_exit=function _proc_exit(code){EXITSTATUS=code;if(!keepRuntimeAlive()){var _Module$onExit;(_Module$onExit=Module["onExit"])===null||_Module$onExit===void 0||_Module$onExit.call(Module,code);ABORT=true}quit_(code,new ExitStatus(code))};var exitJS=function exitJS(status,implicit){EXITSTATUS=status;_proc_exit(status)};var _exit=exitJS;var maybeExit=function maybeExit(){if(!keepRuntimeAlive()){try{_exit(EXITSTATUS)}catch(e){handleException(e)}}};var callUserCallback=function callUserCallback(func){if(ABORT){return}try{func();maybeExit()}catch(e){handleException(e)}};var _safeSetTimeout=function safeSetTimeout(func,timeout){return setTimeout(function(){callUserCallback(func)},timeout)};var warnOnce=function warnOnce(text){warnOnce.shown||(warnOnce.shown={});if(!warnOnce.shown[text]){warnOnce.shown[text]=1;if(ENVIRONMENT_IS_NODE)text="warning: "+text;err(text)}};var Browser={mainLoop:{running:false,scheduler:null,method:"",currentlyRunningMainloop:0,func:null,arg:0,timingMode:0,timingValue:0,currentFrameNumber:0,queue:[],pause:function pause(){Browser.mainLoop.scheduler=null;Browser.mainLoop.currentlyRunningMainloop++},resume:function resume(){Browser.mainLoop.currentlyRunningMainloop++;var timingMode=Browser.mainLoop.timingMode;var timingValue=Browser.mainLoop.timingValue;var func=Browser.mainLoop.func;Browser.mainLoop.func=null;setMainLoop(func,0,false,Browser.mainLoop.arg,true);_emscripten_set_main_loop_timing(timingMode,timingValue);Browser.mainLoop.scheduler()},updateStatus:function updateStatus(){if(Module["setStatus"]){var message=Module["statusMessage"]||"Please wait...";var remaining=Browser.mainLoop.remainingBlockers;var expected=Browser.mainLoop.expectedBlockers;if(remaining){if(remaining=6){var curr=leftchar>>leftbits-6&63;leftbits-=6;ret+=BASE[curr]}}if(leftbits==2){ret+=BASE[(leftchar&3)<<4];ret+=PAD+PAD}else if(leftbits==4){ret+=BASE[(leftchar&15)<<2];ret+=PAD}return ret}audio.src="data:audio/x-"+name.substr(-3)+";base64,"+encode64(byteArray);finish(audio)};audio.src=url;_safeSetTimeout(function(){finish(audio)},1e4)};preloadPlugins.push(audioPlugin);function pointerLockChange(){Browser.pointerLock=document["pointerLockElement"]===Module["canvas"]||document["mozPointerLockElement"]===Module["canvas"]||document["webkitPointerLockElement"]===Module["canvas"]||document["msPointerLockElement"]===Module["canvas"]}var canvas=Module["canvas"];if(canvas){canvas.requestPointerLock=canvas["requestPointerLock"]||canvas["mozRequestPointerLock"]||canvas["webkitRequestPointerLock"]||canvas["msRequestPointerLock"]||function(){};canvas.exitPointerLock=document["exitPointerLock"]||document["mozExitPointerLock"]||document["webkitExitPointerLock"]||document["msExitPointerLock"]||function(){};canvas.exitPointerLock=canvas.exitPointerLock.bind(document);document.addEventListener("pointerlockchange",pointerLockChange,false);document.addEventListener("mozpointerlockchange",pointerLockChange,false);document.addEventListener("webkitpointerlockchange",pointerLockChange,false);document.addEventListener("mspointerlockchange",pointerLockChange,false);if(Module["elementPointerLock"]){canvas.addEventListener("click",function(ev){if(!Browser.pointerLock&&Module["canvas"].requestPointerLock){Module["canvas"].requestPointerLock();ev.preventDefault()}},false)}}},createContext:function createContext(canvas,useWebGL,setInModule,webGLContextAttributes){if(useWebGL&&Module.ctx&&canvas==Module.canvas)return Module.ctx;var ctx;var contextHandle;if(useWebGL){var contextAttributes={antialias:false,alpha:false,majorVersion:typeof WebGL2RenderingContext!="undefined"?2:1};if(webGLContextAttributes){for(var attribute in webGLContextAttributes){contextAttributes[attribute]=webGLContextAttributes[attribute]}}if(typeof GL!="undefined"){contextHandle=GL.createContext(canvas,contextAttributes);if(contextHandle){ctx=GL.getContext(contextHandle).GLctx}}}else{ctx=canvas.getContext("2d")}if(!ctx)return null;if(setInModule){Module.ctx=ctx;if(useWebGL)GL.makeContextCurrent(contextHandle);Browser.useWebGL=useWebGL;Browser.moduleContextCreatedCallbacks.forEach(function(callback){return callback()});Browser.init()}return ctx},fullscreenHandlersInstalled:false,lockPointer:undefined,resizeCanvas:undefined,requestFullscreen:function requestFullscreen(lockPointer,resizeCanvas){Browser.lockPointer=lockPointer;Browser.resizeCanvas=resizeCanvas;if(typeof Browser.lockPointer=="undefined")Browser.lockPointer=true;if(typeof Browser.resizeCanvas=="undefined")Browser.resizeCanvas=false;var canvas=Module["canvas"];function fullscreenChange(){var _Module$onFullScreen,_Module$onFullscreen;Browser.isFullscreen=false;var canvasContainer=canvas.parentNode;if((document["fullscreenElement"]||document["mozFullScreenElement"]||document["msFullscreenElement"]||document["webkitFullscreenElement"]||document["webkitCurrentFullScreenElement"])===canvasContainer){canvas.exitFullscreen=Browser.exitFullscreen;if(Browser.lockPointer)canvas.requestPointerLock();Browser.isFullscreen=true;if(Browser.resizeCanvas){Browser.setFullscreenCanvasSize()}else{Browser.updateCanvasDimensions(canvas)}}else{canvasContainer.parentNode.insertBefore(canvas,canvasContainer);canvasContainer.parentNode.removeChild(canvasContainer);if(Browser.resizeCanvas){Browser.setWindowedCanvasSize()}else{Browser.updateCanvasDimensions(canvas)}}(_Module$onFullScreen=Module["onFullScreen"])===null||_Module$onFullScreen===void 0||_Module$onFullScreen.call(Module,Browser.isFullscreen);(_Module$onFullscreen=Module["onFullscreen"])===null||_Module$onFullscreen===void 0||_Module$onFullscreen.call(Module,Browser.isFullscreen)}if(!Browser.fullscreenHandlersInstalled){Browser.fullscreenHandlersInstalled=true;document.addEventListener("fullscreenchange",fullscreenChange,false);document.addEventListener("mozfullscreenchange",fullscreenChange,false);document.addEventListener("webkitfullscreenchange",fullscreenChange,false);document.addEventListener("MSFullscreenChange",fullscreenChange,false)}var canvasContainer=document.createElement("div");canvas.parentNode.insertBefore(canvasContainer,canvas);canvasContainer.appendChild(canvas);canvasContainer.requestFullscreen=canvasContainer["requestFullscreen"]||canvasContainer["mozRequestFullScreen"]||canvasContainer["msRequestFullscreen"]||(canvasContainer["webkitRequestFullscreen"]?function(){return canvasContainer["webkitRequestFullscreen"](Element["ALLOW_KEYBOARD_INPUT"])}:null)||(canvasContainer["webkitRequestFullScreen"]?function(){return canvasContainer["webkitRequestFullScreen"](Element["ALLOW_KEYBOARD_INPUT"])}:null);canvasContainer.requestFullscreen()},exitFullscreen:function exitFullscreen(){if(!Browser.isFullscreen){return false}var CFS=document["exitFullscreen"]||document["cancelFullScreen"]||document["mozCancelFullScreen"]||document["msExitFullscreen"]||document["webkitCancelFullScreen"]||function(){};CFS.apply(document,[]);return true},nextRAF:0,fakeRequestAnimationFrame:function fakeRequestAnimationFrame(func){var now=Date.now();if(Browser.nextRAF===0){Browser.nextRAF=now+1e3/60}else{while(now+2>=Browser.nextRAF){Browser.nextRAF+=1e3/60}}var delay=Math.max(Browser.nextRAF-now,0);setTimeout(func,delay)},requestAnimationFrame:function(_requestAnimationFrame){function requestAnimationFrame(_x){return _requestAnimationFrame.apply(this,arguments)}requestAnimationFrame.toString=function(){return _requestAnimationFrame.toString()};return requestAnimationFrame}(function(func){if(typeof requestAnimationFrame=="function"){requestAnimationFrame(func);return}var RAF=Browser.fakeRequestAnimationFrame;RAF(func)}),safeSetTimeout:function safeSetTimeout(func,timeout){return _safeSetTimeout(func,timeout)},safeRequestAnimationFrame:function safeRequestAnimationFrame(func){return Browser.requestAnimationFrame(function(){callUserCallback(func)})},getMimetype:function getMimetype(name){return{jpg:"image/jpeg",jpeg:"image/jpeg",png:"image/png",bmp:"image/bmp",ogg:"audio/ogg",wav:"audio/wav",mp3:"audio/mpeg"}[name.substr(name.lastIndexOf(".")+1)]},getUserMedia:function getUserMedia(func){var _window;(_window=window).getUserMedia||(_window.getUserMedia=navigator["getUserMedia"]||navigator["mozGetUserMedia"]);window.getUserMedia(func)},getMovementX:function getMovementX(event){return event["movementX"]||event["mozMovementX"]||event["webkitMovementX"]||0},getMovementY:function getMovementY(event){return event["movementY"]||event["mozMovementY"]||event["webkitMovementY"]||0},getMouseWheelDelta:function getMouseWheelDelta(event){var delta=0;switch(event.type){case"DOMMouseScroll":delta=event.detail/3;break;case"mousewheel":delta=event.wheelDelta/120;break;case"wheel":delta=event.deltaY;switch(event.deltaMode){case 0:delta/=100;break;case 1:delta/=3;break;case 2:delta*=80;break;default:throw"unrecognized mouse wheel delta mode: "+event.deltaMode}break;default:throw"unrecognized mouse wheel event: "+event.type}return delta},mouseX:0,mouseY:0,mouseMovementX:0,mouseMovementY:0,touches:{},lastTouches:{},calculateMouseCoords:function calculateMouseCoords(pageX,pageY){var rect=Module["canvas"].getBoundingClientRect();var cw=Module["canvas"].width;var ch=Module["canvas"].height;var scrollX=typeof window.scrollX!="undefined"?window.scrollX:window.pageXOffset;var scrollY=typeof window.scrollY!="undefined"?window.scrollY:window.pageYOffset;var adjustedX=pageX-(scrollX+rect.left);var adjustedY=pageY-(scrollY+rect.top);adjustedX=adjustedX*(cw/rect.width);adjustedY=adjustedY*(ch/rect.height);return{x:adjustedX,y:adjustedY}},setMouseCoords:function setMouseCoords(pageX,pageY){var _Browser$calculateMou=Browser.calculateMouseCoords(pageX,pageY),x=_Browser$calculateMou.x,y=_Browser$calculateMou.y;Browser.mouseMovementX=x-Browser.mouseX;Browser.mouseMovementY=y-Browser.mouseY;Browser.mouseX=x;Browser.mouseY=y},calculateMouseEvent:function calculateMouseEvent(event){if(Browser.pointerLock){if(event.type!="mousemove"&&"mozMovementX"in event){Browser.mouseMovementX=Browser.mouseMovementY=0}else{Browser.mouseMovementX=Browser.getMovementX(event);Browser.mouseMovementY=Browser.getMovementY(event)}Browser.mouseX+=Browser.mouseMovementX;Browser.mouseY+=Browser.mouseMovementY}else{if(event.type==="touchstart"||event.type==="touchend"||event.type==="touchmove"){var touch=event.touch;if(touch===undefined){return}var coords=Browser.calculateMouseCoords(touch.pageX,touch.pageY);if(event.type==="touchstart"){Browser.lastTouches[touch.identifier]=coords;Browser.touches[touch.identifier]=coords}else if(event.type==="touchend"||event.type==="touchmove"){var last=Browser.touches[touch.identifier];last||(last=coords);Browser.lastTouches[touch.identifier]=last;Browser.touches[touch.identifier]=coords}return}Browser.setMouseCoords(event.pageX,event.pageY)}},resizeListeners:[],updateResizeListeners:function updateResizeListeners(){var canvas=Module["canvas"];Browser.resizeListeners.forEach(function(listener){return listener(canvas.width,canvas.height)})},setCanvasSize:function setCanvasSize(width,height,noUpdates){var canvas=Module["canvas"];Browser.updateCanvasDimensions(canvas,width,height);if(!noUpdates)Browser.updateResizeListeners()},windowedWidth:0,windowedHeight:0,setFullscreenCanvasSize:function setFullscreenCanvasSize(){if(typeof SDL!="undefined"){var flags=HEAPU32[SDL.screen>>2];flags=flags|8388608;HEAP32[SDL.screen>>2]=flags}Browser.updateCanvasDimensions(Module["canvas"]);Browser.updateResizeListeners()},setWindowedCanvasSize:function setWindowedCanvasSize(){if(typeof SDL!="undefined"){var flags=HEAPU32[SDL.screen>>2];flags=flags&~8388608;HEAP32[SDL.screen>>2]=flags}Browser.updateCanvasDimensions(Module["canvas"]);Browser.updateResizeListeners()},updateCanvasDimensions:function updateCanvasDimensions(canvas,wNative,hNative){if(wNative&&hNative){canvas.widthNative=wNative;canvas.heightNative=hNative}else{wNative=canvas.widthNative;hNative=canvas.heightNative}var w=wNative;var h=hNative;if(Module["forcedAspectRatio"]&&Module["forcedAspectRatio"]>0){if(w/h>2]=id}},getSource:function getSource(shader,count,string,length){var source="";for(var i=0;i>2]:undefined;source+=UTF8ToString(HEAPU32[string+i*4>>2],len)}return source},createContext:function createContext(canvas,webGLContextAttributes){function getChromeVersion(){var chromeVersion=navigator.userAgent.match(/Chrom(e|ium)\/([0-9]+)\./);if(chromeVersion)return chromeVersion[2]|0}if(!canvas.getContextSafariWebGL2Fixed){var fixedGetContext=function fixedGetContext(ver,attrs){var gl=canvas.getContextSafariWebGL2Fixed(ver,attrs);return ver=="webgl"==gl instanceof WebGLRenderingContext?gl:null};canvas.getContextSafariWebGL2Fixed=canvas.getContext;canvas.getContext=fixedGetContext}var ctx=webGLContextAttributes.majorVersion>1?!(getChromeVersion()<=57)&&canvas.getContext("webgl2",webGLContextAttributes):canvas.getContext("webgl",webGLContextAttributes)||canvas.getContext("experimental-webgl",webGLContextAttributes);if(!ctx)return 0;var handle=GL.registerContext(ctx,webGLContextAttributes);return handle},registerContext:function registerContext(ctx,webGLContextAttributes){var handle=GL.getNewId(GL.contexts);var context={handle:handle,attributes:webGLContextAttributes,version:webGLContextAttributes.majorVersion,GLctx:ctx};if(ctx.canvas)ctx.canvas.GLctxObject=context;GL.contexts[handle]=context;if(typeof webGLContextAttributes.enableExtensionsByDefault=="undefined"||webGLContextAttributes.enableExtensionsByDefault){GL.initExtensions(context)}return handle},makeContextCurrent:function makeContextCurrent(contextHandle){var _GL$currentContext;GL.currentContext=GL.contexts[contextHandle];Module.ctx=GLctx=(_GL$currentContext=GL.currentContext)===null||_GL$currentContext===void 0?void 0:_GL$currentContext.GLctx;return!(contextHandle&&!GLctx)},getContext:function getContext(contextHandle){return GL.contexts[contextHandle]},deleteContext:function deleteContext(contextHandle){if(GL.currentContext===GL.contexts[contextHandle]){GL.currentContext=null}if(_typeof(JSEvents)=="object"){JSEvents.removeAllHandlersOnTarget(GL.contexts[contextHandle].GLctx.canvas)}if(GL.contexts[contextHandle]&&GL.contexts[contextHandle].GLctx.canvas){GL.contexts[contextHandle].GLctx.canvas.GLctxObject=undefined}GL.contexts[contextHandle]=null},initExtensions:function initExtensions(context){context||(context=GL.currentContext);if(context.initExtensionsDone)return;context.initExtensionsDone=true;var GLctx=context.GLctx;webgl_enable_ANGLE_instanced_arrays(GLctx);webgl_enable_OES_vertex_array_object(GLctx);webgl_enable_WEBGL_draw_buffers(GLctx);webgl_enable_WEBGL_draw_instanced_base_vertex_base_instance(GLctx);webgl_enable_WEBGL_multi_draw_instanced_base_vertex_base_instance(GLctx);if(context.version>=2){GLctx.disjointTimerQueryExt=GLctx.getExtension("EXT_disjoint_timer_query_webgl2")}if(context.version<2||!GLctx.disjointTimerQueryExt){GLctx.disjointTimerQueryExt=GLctx.getExtension("EXT_disjoint_timer_query")}webgl_enable_WEBGL_multi_draw(GLctx);getEmscriptenSupportedExtensions(GLctx).forEach(function(ext){if(!ext.includes("lose_context")&&!ext.includes("debug")){GLctx.getExtension(ext)}})}};var _glActiveTexture=function _glActiveTexture(x0){return GLctx.activeTexture(x0)};var _emscripten_glActiveTexture=_glActiveTexture;var _glAttachShader=function _glAttachShader(program,shader){GLctx.attachShader(GL.programs[program],GL.shaders[shader])};var _emscripten_glAttachShader=_glAttachShader;var _glBeginQuery=function _glBeginQuery(target,id){GLctx.beginQuery(target,GL.queries[id])};var _emscripten_glBeginQuery=_glBeginQuery;var _glBeginQueryEXT=function _glBeginQueryEXT(target,id){GLctx.disjointTimerQueryExt["beginQueryEXT"](target,GL.queries[id])};var _emscripten_glBeginQueryEXT=_glBeginQueryEXT;var _glBeginTransformFeedback=function _glBeginTransformFeedback(x0){return GLctx.beginTransformFeedback(x0)};var _emscripten_glBeginTransformFeedback=_glBeginTransformFeedback;var _glBindAttribLocation=function _glBindAttribLocation(program,index,name){GLctx.bindAttribLocation(GL.programs[program],index,UTF8ToString(name))};var _emscripten_glBindAttribLocation=_glBindAttribLocation;var _glBindBuffer=function _glBindBuffer(target,buffer){if(target==35051){GLctx.currentPixelPackBufferBinding=buffer}else if(target==35052){GLctx.currentPixelUnpackBufferBinding=buffer}GLctx.bindBuffer(target,GL.buffers[buffer])};var _emscripten_glBindBuffer=_glBindBuffer;var _glBindBufferBase=function _glBindBufferBase(target,index,buffer){GLctx.bindBufferBase(target,index,GL.buffers[buffer])};var _emscripten_glBindBufferBase=_glBindBufferBase;var _glBindBufferRange=function _glBindBufferRange(target,index,buffer,offset,ptrsize){GLctx.bindBufferRange(target,index,GL.buffers[buffer],offset,ptrsize)};var _emscripten_glBindBufferRange=_glBindBufferRange;var _glBindFramebuffer=function _glBindFramebuffer(target,framebuffer){GLctx.bindFramebuffer(target,GL.framebuffers[framebuffer])};var _emscripten_glBindFramebuffer=_glBindFramebuffer;var _glBindRenderbuffer=function _glBindRenderbuffer(target,renderbuffer){GLctx.bindRenderbuffer(target,GL.renderbuffers[renderbuffer])};var _emscripten_glBindRenderbuffer=_glBindRenderbuffer;var _glBindSampler=function _glBindSampler(unit,sampler){GLctx.bindSampler(unit,GL.samplers[sampler])};var _emscripten_glBindSampler=_glBindSampler;var _glBindTexture=function _glBindTexture(target,texture){GLctx.bindTexture(target,GL.textures[texture])};var _emscripten_glBindTexture=_glBindTexture;var _glBindTransformFeedback=function _glBindTransformFeedback(target,id){GLctx.bindTransformFeedback(target,GL.transformFeedbacks[id])};var _emscripten_glBindTransformFeedback=_glBindTransformFeedback;var _glBindVertexArray=function _glBindVertexArray(vao){GLctx.bindVertexArray(GL.vaos[vao])};var _emscripten_glBindVertexArray=_glBindVertexArray;var _glBindVertexArrayOES=_glBindVertexArray;var _emscripten_glBindVertexArrayOES=_glBindVertexArrayOES;var _glBlendColor=function _glBlendColor(x0,x1,x2,x3){return GLctx.blendColor(x0,x1,x2,x3)};var _emscripten_glBlendColor=_glBlendColor;var _glBlendEquation=function _glBlendEquation(x0){return GLctx.blendEquation(x0)};var _emscripten_glBlendEquation=_glBlendEquation;var _glBlendEquationSeparate=function _glBlendEquationSeparate(x0,x1){return GLctx.blendEquationSeparate(x0,x1)};var _emscripten_glBlendEquationSeparate=_glBlendEquationSeparate;var _glBlendFunc=function _glBlendFunc(x0,x1){return GLctx.blendFunc(x0,x1)};var _emscripten_glBlendFunc=_glBlendFunc;var _glBlendFuncSeparate=function _glBlendFuncSeparate(x0,x1,x2,x3){return GLctx.blendFuncSeparate(x0,x1,x2,x3)};var _emscripten_glBlendFuncSeparate=_glBlendFuncSeparate;var _glBlitFramebuffer=function _glBlitFramebuffer(x0,x1,x2,x3,x4,x5,x6,x7,x8,x9){return GLctx.blitFramebuffer(x0,x1,x2,x3,x4,x5,x6,x7,x8,x9)};var _emscripten_glBlitFramebuffer=_glBlitFramebuffer;var _glBufferData=function _glBufferData(target,size,data,usage){if(GL.currentContext.version>=2){if(data&&size){GLctx.bufferData(target,HEAPU8,usage,data,size)}else{GLctx.bufferData(target,size,usage)}return}GLctx.bufferData(target,data?HEAPU8.subarray(data,data+size):size,usage)};var _emscripten_glBufferData=_glBufferData;var _glBufferSubData=function _glBufferSubData(target,offset,size,data){if(GL.currentContext.version>=2){size&&GLctx.bufferSubData(target,offset,HEAPU8,data,size);return}GLctx.bufferSubData(target,offset,HEAPU8.subarray(data,data+size))};var _emscripten_glBufferSubData=_glBufferSubData;var _glCheckFramebufferStatus=function _glCheckFramebufferStatus(x0){return GLctx.checkFramebufferStatus(x0)};var _emscripten_glCheckFramebufferStatus=_glCheckFramebufferStatus;var _glClear=function _glClear(x0){return GLctx.clear(x0)};var _emscripten_glClear=_glClear;var _glClearBufferfi=function _glClearBufferfi(x0,x1,x2,x3){return GLctx.clearBufferfi(x0,x1,x2,x3)};var _emscripten_glClearBufferfi=_glClearBufferfi;var _glClearBufferfv=function _glClearBufferfv(buffer,drawbuffer,value){GLctx.clearBufferfv(buffer,drawbuffer,HEAPF32,value>>2)};var _emscripten_glClearBufferfv=_glClearBufferfv;var _glClearBufferiv=function _glClearBufferiv(buffer,drawbuffer,value){GLctx.clearBufferiv(buffer,drawbuffer,HEAP32,value>>2)};var _emscripten_glClearBufferiv=_glClearBufferiv;var _glClearBufferuiv=function _glClearBufferuiv(buffer,drawbuffer,value){GLctx.clearBufferuiv(buffer,drawbuffer,HEAPU32,value>>2)};var _emscripten_glClearBufferuiv=_glClearBufferuiv;var _glClearColor=function _glClearColor(x0,x1,x2,x3){return GLctx.clearColor(x0,x1,x2,x3)};var _emscripten_glClearColor=_glClearColor;var _glClearDepthf=function _glClearDepthf(x0){return GLctx.clearDepth(x0)};var _emscripten_glClearDepthf=_glClearDepthf;var _glClearStencil=function _glClearStencil(x0){return GLctx.clearStencil(x0)};var _emscripten_glClearStencil=_glClearStencil;var convertI32PairToI53=function convertI32PairToI53(lo,hi){return(lo>>>0)+hi*4294967296};var _glClientWaitSync=function _glClientWaitSync(sync,flags,timeout_low,timeout_high){var timeout=convertI32PairToI53(timeout_low,timeout_high);return GLctx.clientWaitSync(GL.syncs[sync],flags,timeout)};var _emscripten_glClientWaitSync=_glClientWaitSync;var _glColorMask=function _glColorMask(red,green,blue,alpha){GLctx.colorMask(!!red,!!green,!!blue,!!alpha)};var _emscripten_glColorMask=_glColorMask;var _glCompileShader=function _glCompileShader(shader){GLctx.compileShader(GL.shaders[shader])};var _emscripten_glCompileShader=_glCompileShader;var _glCompressedTexImage2D=function _glCompressedTexImage2D(target,level,internalFormat,width,height,border,imageSize,data){if(GL.currentContext.version>=2){if(GLctx.currentPixelUnpackBufferBinding||!imageSize){GLctx.compressedTexImage2D(target,level,internalFormat,width,height,border,imageSize,data);return}GLctx.compressedTexImage2D(target,level,internalFormat,width,height,border,HEAPU8,data,imageSize);return}GLctx.compressedTexImage2D(target,level,internalFormat,width,height,border,data?HEAPU8.subarray(data,data+imageSize):null)};var _emscripten_glCompressedTexImage2D=_glCompressedTexImage2D;var _glCompressedTexImage3D=function _glCompressedTexImage3D(target,level,internalFormat,width,height,depth,border,imageSize,data){if(GLctx.currentPixelUnpackBufferBinding){GLctx.compressedTexImage3D(target,level,internalFormat,width,height,depth,border,imageSize,data)}else{GLctx.compressedTexImage3D(target,level,internalFormat,width,height,depth,border,HEAPU8,data,imageSize)}};var _emscripten_glCompressedTexImage3D=_glCompressedTexImage3D;var _glCompressedTexSubImage2D=function _glCompressedTexSubImage2D(target,level,xoffset,yoffset,width,height,format,imageSize,data){if(GL.currentContext.version>=2){if(GLctx.currentPixelUnpackBufferBinding||!imageSize){GLctx.compressedTexSubImage2D(target,level,xoffset,yoffset,width,height,format,imageSize,data);return}GLctx.compressedTexSubImage2D(target,level,xoffset,yoffset,width,height,format,HEAPU8,data,imageSize);return}GLctx.compressedTexSubImage2D(target,level,xoffset,yoffset,width,height,format,data?HEAPU8.subarray(data,data+imageSize):null)};var _emscripten_glCompressedTexSubImage2D=_glCompressedTexSubImage2D;var _glCompressedTexSubImage3D=function _glCompressedTexSubImage3D(target,level,xoffset,yoffset,zoffset,width,height,depth,format,imageSize,data){if(GLctx.currentPixelUnpackBufferBinding){GLctx.compressedTexSubImage3D(target,level,xoffset,yoffset,zoffset,width,height,depth,format,imageSize,data)}else{GLctx.compressedTexSubImage3D(target,level,xoffset,yoffset,zoffset,width,height,depth,format,HEAPU8,data,imageSize)}};var _emscripten_glCompressedTexSubImage3D=_glCompressedTexSubImage3D;var _glCopyBufferSubData=function _glCopyBufferSubData(x0,x1,x2,x3,x4){return GLctx.copyBufferSubData(x0,x1,x2,x3,x4)};var _emscripten_glCopyBufferSubData=_glCopyBufferSubData;var _glCopyTexImage2D=function _glCopyTexImage2D(x0,x1,x2,x3,x4,x5,x6,x7){return GLctx.copyTexImage2D(x0,x1,x2,x3,x4,x5,x6,x7)};var _emscripten_glCopyTexImage2D=_glCopyTexImage2D;var _glCopyTexSubImage2D=function _glCopyTexSubImage2D(x0,x1,x2,x3,x4,x5,x6,x7){return GLctx.copyTexSubImage2D(x0,x1,x2,x3,x4,x5,x6,x7)};var _emscripten_glCopyTexSubImage2D=_glCopyTexSubImage2D;var _glCopyTexSubImage3D=function _glCopyTexSubImage3D(x0,x1,x2,x3,x4,x5,x6,x7,x8){return GLctx.copyTexSubImage3D(x0,x1,x2,x3,x4,x5,x6,x7,x8)};var _emscripten_glCopyTexSubImage3D=_glCopyTexSubImage3D;var _glCreateProgram=function _glCreateProgram(){var id=GL.getNewId(GL.programs);var program=GLctx.createProgram();program.name=id;program.maxUniformLength=program.maxAttributeLength=program.maxUniformBlockNameLength=0;program.uniformIdCounter=1;GL.programs[id]=program;return id};var _emscripten_glCreateProgram=_glCreateProgram;var _glCreateShader=function _glCreateShader(shaderType){var id=GL.getNewId(GL.shaders);GL.shaders[id]=GLctx.createShader(shaderType);return id};var _emscripten_glCreateShader=_glCreateShader;var _glCullFace=function _glCullFace(x0){return GLctx.cullFace(x0)};var _emscripten_glCullFace=_glCullFace;var _glDeleteBuffers=function _glDeleteBuffers(n,buffers){for(var i=0;i>2];var buffer=GL.buffers[id];if(!buffer)continue;GLctx.deleteBuffer(buffer);buffer.name=0;GL.buffers[id]=null;if(id==GLctx.currentPixelPackBufferBinding)GLctx.currentPixelPackBufferBinding=0;if(id==GLctx.currentPixelUnpackBufferBinding)GLctx.currentPixelUnpackBufferBinding=0}};var _emscripten_glDeleteBuffers=_glDeleteBuffers;var _glDeleteFramebuffers=function _glDeleteFramebuffers(n,framebuffers){for(var i=0;i>2];var framebuffer=GL.framebuffers[id];if(!framebuffer)continue;GLctx.deleteFramebuffer(framebuffer);framebuffer.name=0;GL.framebuffers[id]=null}};var _emscripten_glDeleteFramebuffers=_glDeleteFramebuffers;var _glDeleteProgram=function _glDeleteProgram(id){if(!id)return;var program=GL.programs[id];if(!program){GL.recordError(1281);return}GLctx.deleteProgram(program);program.name=0;GL.programs[id]=null};var _emscripten_glDeleteProgram=_glDeleteProgram;var _glDeleteQueries=function _glDeleteQueries(n,ids){for(var i=0;i>2];var query=GL.queries[id];if(!query)continue;GLctx.deleteQuery(query);GL.queries[id]=null}};var _emscripten_glDeleteQueries=_glDeleteQueries;var _glDeleteQueriesEXT=function _glDeleteQueriesEXT(n,ids){for(var i=0;i>2];var query=GL.queries[id];if(!query)continue;GLctx.disjointTimerQueryExt["deleteQueryEXT"](query);GL.queries[id]=null}};var _emscripten_glDeleteQueriesEXT=_glDeleteQueriesEXT;var _glDeleteRenderbuffers=function _glDeleteRenderbuffers(n,renderbuffers){for(var i=0;i>2];var renderbuffer=GL.renderbuffers[id];if(!renderbuffer)continue;GLctx.deleteRenderbuffer(renderbuffer);renderbuffer.name=0;GL.renderbuffers[id]=null}};var _emscripten_glDeleteRenderbuffers=_glDeleteRenderbuffers;var _glDeleteSamplers=function _glDeleteSamplers(n,samplers){for(var i=0;i>2];var sampler=GL.samplers[id];if(!sampler)continue;GLctx.deleteSampler(sampler);sampler.name=0;GL.samplers[id]=null}};var _emscripten_glDeleteSamplers=_glDeleteSamplers;var _glDeleteShader=function _glDeleteShader(id){if(!id)return;var shader=GL.shaders[id];if(!shader){GL.recordError(1281);return}GLctx.deleteShader(shader);GL.shaders[id]=null};var _emscripten_glDeleteShader=_glDeleteShader;var _glDeleteSync=function _glDeleteSync(id){if(!id)return;var sync=GL.syncs[id];if(!sync){GL.recordError(1281);return}GLctx.deleteSync(sync);sync.name=0;GL.syncs[id]=null};var _emscripten_glDeleteSync=_glDeleteSync;var _glDeleteTextures=function _glDeleteTextures(n,textures){for(var i=0;i>2];var texture=GL.textures[id];if(!texture)continue;GLctx.deleteTexture(texture);texture.name=0;GL.textures[id]=null}};var _emscripten_glDeleteTextures=_glDeleteTextures;var _glDeleteTransformFeedbacks=function _glDeleteTransformFeedbacks(n,ids){for(var i=0;i>2];var transformFeedback=GL.transformFeedbacks[id];if(!transformFeedback)continue;GLctx.deleteTransformFeedback(transformFeedback);transformFeedback.name=0;GL.transformFeedbacks[id]=null}};var _emscripten_glDeleteTransformFeedbacks=_glDeleteTransformFeedbacks;var _glDeleteVertexArrays=function _glDeleteVertexArrays(n,vaos){for(var i=0;i>2];GLctx.deleteVertexArray(GL.vaos[id]);GL.vaos[id]=null}};var _emscripten_glDeleteVertexArrays=_glDeleteVertexArrays;var _glDeleteVertexArraysOES=_glDeleteVertexArrays;var _emscripten_glDeleteVertexArraysOES=_glDeleteVertexArraysOES;var _glDepthFunc=function _glDepthFunc(x0){return GLctx.depthFunc(x0)};var _emscripten_glDepthFunc=_glDepthFunc;var _glDepthMask=function _glDepthMask(flag){GLctx.depthMask(!!flag)};var _emscripten_glDepthMask=_glDepthMask;var _glDepthRangef=function _glDepthRangef(x0,x1){return GLctx.depthRange(x0,x1)};var _emscripten_glDepthRangef=_glDepthRangef;var _glDetachShader=function _glDetachShader(program,shader){GLctx.detachShader(GL.programs[program],GL.shaders[shader])};var _emscripten_glDetachShader=_glDetachShader;var _glDisable=function _glDisable(x0){return GLctx.disable(x0)};var _emscripten_glDisable=_glDisable;var _glDisableVertexAttribArray=function _glDisableVertexAttribArray(index){GLctx.disableVertexAttribArray(index)};var _emscripten_glDisableVertexAttribArray=_glDisableVertexAttribArray;var _glDrawArrays=function _glDrawArrays(mode,first,count){GLctx.drawArrays(mode,first,count)};var _emscripten_glDrawArrays=_glDrawArrays;var _glDrawArraysInstanced=function _glDrawArraysInstanced(mode,first,count,primcount){GLctx.drawArraysInstanced(mode,first,count,primcount)};var _emscripten_glDrawArraysInstanced=_glDrawArraysInstanced;var _glDrawArraysInstancedANGLE=_glDrawArraysInstanced;var _emscripten_glDrawArraysInstancedANGLE=_glDrawArraysInstancedANGLE;var _glDrawArraysInstancedARB=_glDrawArraysInstanced;var _emscripten_glDrawArraysInstancedARB=_glDrawArraysInstancedARB;var _glDrawArraysInstancedEXT=_glDrawArraysInstanced;var _emscripten_glDrawArraysInstancedEXT=_glDrawArraysInstancedEXT;var _glDrawArraysInstancedNV=_glDrawArraysInstanced;var _emscripten_glDrawArraysInstancedNV=_glDrawArraysInstancedNV;var tempFixedLengthArray=[];var _glDrawBuffers=function _glDrawBuffers(n,bufs){var bufArray=tempFixedLengthArray[n];for(var i=0;i>2]}GLctx.drawBuffers(bufArray)};var _emscripten_glDrawBuffers=_glDrawBuffers;var _glDrawBuffersEXT=_glDrawBuffers;var _emscripten_glDrawBuffersEXT=_glDrawBuffersEXT;var _glDrawBuffersWEBGL=_glDrawBuffers;var _emscripten_glDrawBuffersWEBGL=_glDrawBuffersWEBGL;var _glDrawElements=function _glDrawElements(mode,count,type,indices){GLctx.drawElements(mode,count,type,indices)};var _emscripten_glDrawElements=_glDrawElements;var _glDrawElementsInstanced=function _glDrawElementsInstanced(mode,count,type,indices,primcount){GLctx.drawElementsInstanced(mode,count,type,indices,primcount)};var _emscripten_glDrawElementsInstanced=_glDrawElementsInstanced;var _glDrawElementsInstancedANGLE=_glDrawElementsInstanced;var _emscripten_glDrawElementsInstancedANGLE=_glDrawElementsInstancedANGLE;var _glDrawElementsInstancedARB=_glDrawElementsInstanced;var _emscripten_glDrawElementsInstancedARB=_glDrawElementsInstancedARB;var _glDrawElementsInstancedEXT=_glDrawElementsInstanced;var _emscripten_glDrawElementsInstancedEXT=_glDrawElementsInstancedEXT;var _glDrawElementsInstancedNV=_glDrawElementsInstanced;var _emscripten_glDrawElementsInstancedNV=_glDrawElementsInstancedNV;var _glDrawRangeElements=function _glDrawRangeElements(mode,start,end,count,type,indices){_glDrawElements(mode,count,type,indices)};var _emscripten_glDrawRangeElements=_glDrawRangeElements;var _glEnable=function _glEnable(x0){return GLctx.enable(x0)};var _emscripten_glEnable=_glEnable;var _glEnableVertexAttribArray=function _glEnableVertexAttribArray(index){GLctx.enableVertexAttribArray(index)};var _emscripten_glEnableVertexAttribArray=_glEnableVertexAttribArray;var _glEndQuery=function _glEndQuery(x0){return GLctx.endQuery(x0)};var _emscripten_glEndQuery=_glEndQuery;var _glEndQueryEXT=function _glEndQueryEXT(target){GLctx.disjointTimerQueryExt["endQueryEXT"](target)};var _emscripten_glEndQueryEXT=_glEndQueryEXT;var _glEndTransformFeedback=function _glEndTransformFeedback(){return GLctx.endTransformFeedback()};var _emscripten_glEndTransformFeedback=_glEndTransformFeedback;var _glFenceSync=function _glFenceSync(condition,flags){var sync=GLctx.fenceSync(condition,flags);if(sync){var id=GL.getNewId(GL.syncs);sync.name=id;GL.syncs[id]=sync;return id}return 0};var _emscripten_glFenceSync=_glFenceSync;var _glFinish=function _glFinish(){return GLctx.finish()};var _emscripten_glFinish=_glFinish;var _glFlush=function _glFlush(){return GLctx.flush()};var _emscripten_glFlush=_glFlush;var _glFramebufferRenderbuffer=function _glFramebufferRenderbuffer(target,attachment,renderbuffertarget,renderbuffer){GLctx.framebufferRenderbuffer(target,attachment,renderbuffertarget,GL.renderbuffers[renderbuffer])};var _emscripten_glFramebufferRenderbuffer=_glFramebufferRenderbuffer;var _glFramebufferTexture2D=function _glFramebufferTexture2D(target,attachment,textarget,texture,level){GLctx.framebufferTexture2D(target,attachment,textarget,GL.textures[texture],level)};var _emscripten_glFramebufferTexture2D=_glFramebufferTexture2D;var _glFramebufferTextureLayer=function _glFramebufferTextureLayer(target,attachment,texture,level,layer){GLctx.framebufferTextureLayer(target,attachment,GL.textures[texture],level,layer)};var _emscripten_glFramebufferTextureLayer=_glFramebufferTextureLayer;var _glFrontFace=function _glFrontFace(x0){return GLctx.frontFace(x0)};var _emscripten_glFrontFace=_glFrontFace;var _glGenBuffers=function _glGenBuffers(n,buffers){GL.genObject(n,buffers,"createBuffer",GL.buffers)};var _emscripten_glGenBuffers=_glGenBuffers;var _glGenFramebuffers=function _glGenFramebuffers(n,ids){GL.genObject(n,ids,"createFramebuffer",GL.framebuffers)};var _emscripten_glGenFramebuffers=_glGenFramebuffers;var _glGenQueries=function _glGenQueries(n,ids){GL.genObject(n,ids,"createQuery",GL.queries)};var _emscripten_glGenQueries=_glGenQueries;var _glGenQueriesEXT=function _glGenQueriesEXT(n,ids){for(var i=0;i>2]=0;return}var id=GL.getNewId(GL.queries);query.name=id;GL.queries[id]=query;HEAP32[ids+i*4>>2]=id}};var _emscripten_glGenQueriesEXT=_glGenQueriesEXT;var _glGenRenderbuffers=function _glGenRenderbuffers(n,renderbuffers){GL.genObject(n,renderbuffers,"createRenderbuffer",GL.renderbuffers)};var _emscripten_glGenRenderbuffers=_glGenRenderbuffers;var _glGenSamplers=function _glGenSamplers(n,samplers){GL.genObject(n,samplers,"createSampler",GL.samplers)};var _emscripten_glGenSamplers=_glGenSamplers;var _glGenTextures=function _glGenTextures(n,textures){GL.genObject(n,textures,"createTexture",GL.textures)};var _emscripten_glGenTextures=_glGenTextures;var _glGenTransformFeedbacks=function _glGenTransformFeedbacks(n,ids){GL.genObject(n,ids,"createTransformFeedback",GL.transformFeedbacks)};var _emscripten_glGenTransformFeedbacks=_glGenTransformFeedbacks;var _glGenVertexArrays=function _glGenVertexArrays(n,arrays){GL.genObject(n,arrays,"createVertexArray",GL.vaos)};var _emscripten_glGenVertexArrays=_glGenVertexArrays;var _glGenVertexArraysOES=_glGenVertexArrays;var _emscripten_glGenVertexArraysOES=_glGenVertexArraysOES;var _glGenerateMipmap=function _glGenerateMipmap(x0){return GLctx.generateMipmap(x0)};var _emscripten_glGenerateMipmap=_glGenerateMipmap;var __glGetActiveAttribOrUniform=function __glGetActiveAttribOrUniform(funcName,program,index,bufSize,length,size,type,name){program=GL.programs[program];var info=GLctx[funcName](program,index);if(info){var numBytesWrittenExclNull=name&&stringToUTF8(info.name,name,bufSize);if(length)HEAP32[length>>2]=numBytesWrittenExclNull;if(size)HEAP32[size>>2]=info.size;if(type)HEAP32[type>>2]=info.type}};var _glGetActiveAttrib=function _glGetActiveAttrib(program,index,bufSize,length,size,type,name){__glGetActiveAttribOrUniform("getActiveAttrib",program,index,bufSize,length,size,type,name)};var _emscripten_glGetActiveAttrib=_glGetActiveAttrib;var _glGetActiveUniform=function _glGetActiveUniform(program,index,bufSize,length,size,type,name){__glGetActiveAttribOrUniform("getActiveUniform",program,index,bufSize,length,size,type,name)};var _emscripten_glGetActiveUniform=_glGetActiveUniform;var _glGetActiveUniformBlockName=function _glGetActiveUniformBlockName(program,uniformBlockIndex,bufSize,length,uniformBlockName){program=GL.programs[program];var result=GLctx.getActiveUniformBlockName(program,uniformBlockIndex);if(!result)return;if(uniformBlockName&&bufSize>0){var numBytesWrittenExclNull=stringToUTF8(result,uniformBlockName,bufSize);if(length)HEAP32[length>>2]=numBytesWrittenExclNull}else{if(length)HEAP32[length>>2]=0}};var _emscripten_glGetActiveUniformBlockName=_glGetActiveUniformBlockName;var _glGetActiveUniformBlockiv=function _glGetActiveUniformBlockiv(program,uniformBlockIndex,pname,params){if(!params){GL.recordError(1281);return}program=GL.programs[program];if(pname==35393){var name=GLctx.getActiveUniformBlockName(program,uniformBlockIndex);HEAP32[params>>2]=name.length+1;return}var result=GLctx.getActiveUniformBlockParameter(program,uniformBlockIndex,pname);if(result===null)return;if(pname==35395){for(var i=0;i>2]=result[i]}}else{HEAP32[params>>2]=result}};var _emscripten_glGetActiveUniformBlockiv=_glGetActiveUniformBlockiv;var _glGetActiveUniformsiv=function _glGetActiveUniformsiv(program,uniformCount,uniformIndices,pname,params){if(!params){GL.recordError(1281);return}if(uniformCount>0&&uniformIndices==0){GL.recordError(1281);return}program=GL.programs[program];var ids=[];for(var i=0;i>2])}var result=GLctx.getActiveUniforms(program,ids,pname);if(!result)return;var len=result.length;for(var i=0;i>2]=result[i]}};var _emscripten_glGetActiveUniformsiv=_glGetActiveUniformsiv;var _glGetAttachedShaders=function _glGetAttachedShaders(program,maxCount,count,shaders){var result=GLctx.getAttachedShaders(GL.programs[program]);var len=result.length;if(len>maxCount){len=maxCount}HEAP32[count>>2]=len;for(var i=0;i>2]=id}};var _emscripten_glGetAttachedShaders=_glGetAttachedShaders;var _glGetAttribLocation=function _glGetAttribLocation(program,name){return GLctx.getAttribLocation(GL.programs[program],UTF8ToString(name))};var _emscripten_glGetAttribLocation=_glGetAttribLocation;var writeI53ToI64=function writeI53ToI64(ptr,num){HEAPU32[ptr>>2]=num;var lower=HEAPU32[ptr>>2];HEAPU32[ptr+4>>2]=(num-lower)/4294967296};var webglGetExtensions=function $webglGetExtensions(){var exts=getEmscriptenSupportedExtensions(GLctx);exts=exts.concat(exts.map(function(e){return"GL_"+e}));return exts};var emscriptenWebGLGet=function emscriptenWebGLGet(name_,p,type){if(!p){GL.recordError(1281);return}var ret=undefined;switch(name_){case 36346:ret=1;break;case 36344:if(type!=0&&type!=1){GL.recordError(1280)}return;case 34814:case 36345:ret=0;break;case 34466:var formats=GLctx.getParameter(34467);ret=formats?formats.length:0;break;case 33309:if(GL.currentContext.version<2){GL.recordError(1282);return}ret=webglGetExtensions().length;break;case 33307:case 33308:if(GL.currentContext.version<2){GL.recordError(1280);return}ret=name_==33307?3:0;break}if(ret===undefined){var result=GLctx.getParameter(name_);switch(_typeof(result)){case"number":ret=result;break;case"boolean":ret=result?1:0;break;case"string":GL.recordError(1280);return;case"object":if(result===null){switch(name_){case 34964:case 35725:case 34965:case 36006:case 36007:case 32873:case 34229:case 36662:case 36663:case 35053:case 35055:case 36010:case 35097:case 35869:case 32874:case 36389:case 35983:case 35368:case 34068:{ret=0;break}default:{GL.recordError(1280);return}}}else if(result instanceof Float32Array||result instanceof Uint32Array||result instanceof Int32Array||result instanceof Array){for(var i=0;i>2]=result[i];break;case 2:HEAPF32[p+i*4>>2]=result[i];break;case 4:HEAP8[p+i]=result[i]?1:0;break}}return}else{try{ret=result.name|0}catch(e){GL.recordError(1280);err("GL_INVALID_ENUM in glGet".concat(type,"v: Unknown object returned from WebGL getParameter(").concat(name_,")! (error: ").concat(e,")"));return}}break;default:GL.recordError(1280);err("GL_INVALID_ENUM in glGet".concat(type,"v: Native code calling glGet").concat(type,"v(").concat(name_,") and it returns ").concat(result," of type ").concat(_typeof(result),"!"));return}}switch(type){case 1:writeI53ToI64(p,ret);break;case 0:HEAP32[p>>2]=ret;break;case 2:HEAPF32[p>>2]=ret;break;case 4:HEAP8[p]=ret?1:0;break}};var _glGetBooleanv=function _glGetBooleanv(name_,p){return emscriptenWebGLGet(name_,p,4)};var _emscripten_glGetBooleanv=_glGetBooleanv;var _glGetBufferParameteri64v=function _glGetBufferParameteri64v(target,value,data){if(!data){GL.recordError(1281);return}writeI53ToI64(data,GLctx.getBufferParameter(target,value))};var _emscripten_glGetBufferParameteri64v=_glGetBufferParameteri64v;var _glGetBufferParameteriv=function _glGetBufferParameteriv(target,value,data){if(!data){GL.recordError(1281);return}HEAP32[data>>2]=GLctx.getBufferParameter(target,value)};var _emscripten_glGetBufferParameteriv=_glGetBufferParameteriv;var _glGetError=function _glGetError(){var error=GLctx.getError()||GL.lastError;GL.lastError=0;return error};var _emscripten_glGetError=_glGetError;var _glGetFloatv=function _glGetFloatv(name_,p){return emscriptenWebGLGet(name_,p,2)};var _emscripten_glGetFloatv=_glGetFloatv;var _glGetFragDataLocation=function _glGetFragDataLocation(program,name){return GLctx.getFragDataLocation(GL.programs[program],UTF8ToString(name))};var _emscripten_glGetFragDataLocation=_glGetFragDataLocation;var _glGetFramebufferAttachmentParameteriv=function _glGetFramebufferAttachmentParameteriv(target,attachment,pname,params){var result=GLctx.getFramebufferAttachmentParameter(target,attachment,pname);if(result instanceof WebGLRenderbuffer||result instanceof WebGLTexture){result=result.name|0}HEAP32[params>>2]=result};var _emscripten_glGetFramebufferAttachmentParameteriv=_glGetFramebufferAttachmentParameteriv;var emscriptenWebGLGetIndexed=function emscriptenWebGLGetIndexed(target,index,data,type){if(!data){GL.recordError(1281);return}var result=GLctx.getIndexedParameter(target,index);var ret;switch(_typeof(result)){case"boolean":ret=result?1:0;break;case"number":ret=result;break;case"object":if(result===null){switch(target){case 35983:case 35368:ret=0;break;default:{GL.recordError(1280);return}}}else if(result instanceof WebGLBuffer){ret=result.name|0}else{GL.recordError(1280);return}break;default:GL.recordError(1280);return}switch(type){case 1:writeI53ToI64(data,ret);break;case 0:HEAP32[data>>2]=ret;break;case 2:HEAPF32[data>>2]=ret;break;case 4:HEAP8[data]=ret?1:0;break;default:throw"internal emscriptenWebGLGetIndexed() error, bad type: "+type}};var _glGetInteger64i_v=function _glGetInteger64i_v(target,index,data){return emscriptenWebGLGetIndexed(target,index,data,1)};var _emscripten_glGetInteger64i_v=_glGetInteger64i_v;var _glGetInteger64v=function _glGetInteger64v(name_,p){emscriptenWebGLGet(name_,p,1)};var _emscripten_glGetInteger64v=_glGetInteger64v;var _glGetIntegeri_v=function _glGetIntegeri_v(target,index,data){return emscriptenWebGLGetIndexed(target,index,data,0)};var _emscripten_glGetIntegeri_v=_glGetIntegeri_v;var _glGetIntegerv=function _glGetIntegerv(name_,p){return emscriptenWebGLGet(name_,p,0)};var _emscripten_glGetIntegerv=_glGetIntegerv;var _glGetInternalformativ=function _glGetInternalformativ(target,internalformat,pname,bufSize,params){if(bufSize<0){GL.recordError(1281);return}if(!params){GL.recordError(1281);return}var ret=GLctx.getInternalformatParameter(target,internalformat,pname);if(ret===null)return;for(var i=0;i>2]=ret[i]}};var _emscripten_glGetInternalformativ=_glGetInternalformativ;var _glGetProgramBinary=function _glGetProgramBinary(program,bufSize,length,binaryFormat,binary){GL.recordError(1282)};var _emscripten_glGetProgramBinary=_glGetProgramBinary;var _glGetProgramInfoLog=function _glGetProgramInfoLog(program,maxLength,length,infoLog){var log=GLctx.getProgramInfoLog(GL.programs[program]);if(log===null)log="(unknown error)";var numBytesWrittenExclNull=maxLength>0&&infoLog?stringToUTF8(log,infoLog,maxLength):0;if(length)HEAP32[length>>2]=numBytesWrittenExclNull};var _emscripten_glGetProgramInfoLog=_glGetProgramInfoLog;var _glGetProgramiv=function _glGetProgramiv(program,pname,p){if(!p){GL.recordError(1281);return}if(program>=GL.counter){GL.recordError(1281);return}program=GL.programs[program];if(pname==35716){var log=GLctx.getProgramInfoLog(program);if(log===null)log="(unknown error)";HEAP32[p>>2]=log.length+1}else if(pname==35719){if(!program.maxUniformLength){for(var i=0;i>2]=program.maxUniformLength}else if(pname==35722){if(!program.maxAttributeLength){for(var i=0;i>2]=program.maxAttributeLength}else if(pname==35381){if(!program.maxUniformBlockNameLength){for(var i=0;i>2]=program.maxUniformBlockNameLength}else{HEAP32[p>>2]=GLctx.getProgramParameter(program,pname)}};var _emscripten_glGetProgramiv=_glGetProgramiv;var _glGetQueryObjecti64vEXT=function _glGetQueryObjecti64vEXT(id,pname,params){if(!params){GL.recordError(1281);return}var query=GL.queries[id];var param;if(GL.currentContext.version<2){param=GLctx.disjointTimerQueryExt["getQueryObjectEXT"](query,pname)}else{param=GLctx.getQueryParameter(query,pname)}var ret;if(typeof param=="boolean"){ret=param?1:0}else{ret=param}writeI53ToI64(params,ret)};var _emscripten_glGetQueryObjecti64vEXT=_glGetQueryObjecti64vEXT;var _glGetQueryObjectivEXT=function _glGetQueryObjectivEXT(id,pname,params){if(!params){GL.recordError(1281);return}var query=GL.queries[id];var param=GLctx.disjointTimerQueryExt["getQueryObjectEXT"](query,pname);var ret;if(typeof param=="boolean"){ret=param?1:0}else{ret=param}HEAP32[params>>2]=ret};var _emscripten_glGetQueryObjectivEXT=_glGetQueryObjectivEXT;var _glGetQueryObjectui64vEXT=_glGetQueryObjecti64vEXT;var _emscripten_glGetQueryObjectui64vEXT=_glGetQueryObjectui64vEXT;var _glGetQueryObjectuiv=function _glGetQueryObjectuiv(id,pname,params){if(!params){GL.recordError(1281);return}var query=GL.queries[id];var param=GLctx.getQueryParameter(query,pname);var ret;if(typeof param=="boolean"){ret=param?1:0}else{ret=param}HEAP32[params>>2]=ret};var _emscripten_glGetQueryObjectuiv=_glGetQueryObjectuiv;var _glGetQueryObjectuivEXT=_glGetQueryObjectivEXT;var _emscripten_glGetQueryObjectuivEXT=_glGetQueryObjectuivEXT;var _glGetQueryiv=function _glGetQueryiv(target,pname,params){if(!params){GL.recordError(1281);return}HEAP32[params>>2]=GLctx.getQuery(target,pname)};var _emscripten_glGetQueryiv=_glGetQueryiv;var _glGetQueryivEXT=function _glGetQueryivEXT(target,pname,params){if(!params){GL.recordError(1281);return}HEAP32[params>>2]=GLctx.disjointTimerQueryExt["getQueryEXT"](target,pname)};var _emscripten_glGetQueryivEXT=_glGetQueryivEXT;var _glGetRenderbufferParameteriv=function _glGetRenderbufferParameteriv(target,pname,params){if(!params){GL.recordError(1281);return}HEAP32[params>>2]=GLctx.getRenderbufferParameter(target,pname)};var _emscripten_glGetRenderbufferParameteriv=_glGetRenderbufferParameteriv;var _glGetSamplerParameterfv=function _glGetSamplerParameterfv(sampler,pname,params){if(!params){GL.recordError(1281);return}HEAPF32[params>>2]=GLctx.getSamplerParameter(GL.samplers[sampler],pname)};var _emscripten_glGetSamplerParameterfv=_glGetSamplerParameterfv;var _glGetSamplerParameteriv=function _glGetSamplerParameteriv(sampler,pname,params){if(!params){GL.recordError(1281);return}HEAP32[params>>2]=GLctx.getSamplerParameter(GL.samplers[sampler],pname)};var _emscripten_glGetSamplerParameteriv=_glGetSamplerParameteriv;var _glGetShaderInfoLog=function _glGetShaderInfoLog(shader,maxLength,length,infoLog){var log=GLctx.getShaderInfoLog(GL.shaders[shader]);if(log===null)log="(unknown error)";var numBytesWrittenExclNull=maxLength>0&&infoLog?stringToUTF8(log,infoLog,maxLength):0;if(length)HEAP32[length>>2]=numBytesWrittenExclNull};var _emscripten_glGetShaderInfoLog=_glGetShaderInfoLog;var _glGetShaderPrecisionFormat=function _glGetShaderPrecisionFormat(shaderType,precisionType,range,precision){var result=GLctx.getShaderPrecisionFormat(shaderType,precisionType);HEAP32[range>>2]=result.rangeMin;HEAP32[range+4>>2]=result.rangeMax;HEAP32[precision>>2]=result.precision};var _emscripten_glGetShaderPrecisionFormat=_glGetShaderPrecisionFormat;var _glGetShaderSource=function _glGetShaderSource(shader,bufSize,length,source){var result=GLctx.getShaderSource(GL.shaders[shader]);if(!result)return;var numBytesWrittenExclNull=bufSize>0&&source?stringToUTF8(result,source,bufSize):0;if(length)HEAP32[length>>2]=numBytesWrittenExclNull};var _emscripten_glGetShaderSource=_glGetShaderSource;var _glGetShaderiv=function _glGetShaderiv(shader,pname,p){if(!p){GL.recordError(1281);return}if(pname==35716){var log=GLctx.getShaderInfoLog(GL.shaders[shader]);if(log===null)log="(unknown error)";var logLength=log?log.length+1:0;HEAP32[p>>2]=logLength}else if(pname==35720){var source=GLctx.getShaderSource(GL.shaders[shader]);var sourceLength=source?source.length+1:0;HEAP32[p>>2]=sourceLength}else{HEAP32[p>>2]=GLctx.getShaderParameter(GL.shaders[shader],pname)}};var _emscripten_glGetShaderiv=_glGetShaderiv;var stringToNewUTF8=function stringToNewUTF8(str){var size=lengthBytesUTF8(str)+1;var ret=_malloc(size);if(ret)stringToUTF8(str,ret,size);return ret};var _glGetString=function _glGetString(name_){var ret=GL.stringCache[name_];if(!ret){switch(name_){case 7939:ret=stringToNewUTF8(webglGetExtensions().join(" "));break;case 7936:case 7937:case 37445:case 37446:var s=GLctx.getParameter(name_);if(!s){GL.recordError(1280)}ret=s?stringToNewUTF8(s):0;break;case 7938:var webGLVersion=GLctx.getParameter(7938);var glVersion="OpenGL ES 2.0 (".concat(webGLVersion,")");if(GL.currentContext.version>=2)glVersion="OpenGL ES 3.0 (".concat(webGLVersion,")");ret=stringToNewUTF8(glVersion);break;case 35724:var glslVersion=GLctx.getParameter(35724);var ver_re=/^WebGL GLSL ES ([0-9]\.[0-9][0-9]?)(?:$| .*)/;var ver_num=glslVersion.match(ver_re);if(ver_num!==null){if(ver_num[1].length==3)ver_num[1]=ver_num[1]+"0";glslVersion="OpenGL ES GLSL ES ".concat(ver_num[1]," (").concat(glslVersion,")")}ret=stringToNewUTF8(glslVersion);break;default:GL.recordError(1280)}GL.stringCache[name_]=ret}return ret};var _emscripten_glGetString=_glGetString;var _glGetStringi=function _glGetStringi(name,index){if(GL.currentContext.version<2){GL.recordError(1282);return 0}var stringiCache=GL.stringiCache[name];if(stringiCache){if(index<0||index>=stringiCache.length){GL.recordError(1281);return 0}return stringiCache[index]}switch(name){case 7939:var exts=webglGetExtensions().map(stringToNewUTF8);stringiCache=GL.stringiCache[name]=exts;if(index<0||index>=stringiCache.length){GL.recordError(1281);return 0}return stringiCache[index];default:GL.recordError(1280);return 0}};var _emscripten_glGetStringi=_glGetStringi;var _glGetSynciv=function _glGetSynciv(sync,pname,bufSize,length,values){if(bufSize<0){GL.recordError(1281);return}if(!values){GL.recordError(1281);return}var ret=GLctx.getSyncParameter(GL.syncs[sync],pname);if(ret!==null){HEAP32[values>>2]=ret;if(length)HEAP32[length>>2]=1}};var _emscripten_glGetSynciv=_glGetSynciv;var _glGetTexParameterfv=function _glGetTexParameterfv(target,pname,params){if(!params){GL.recordError(1281);return}HEAPF32[params>>2]=GLctx.getTexParameter(target,pname)};var _emscripten_glGetTexParameterfv=_glGetTexParameterfv;var _glGetTexParameteriv=function _glGetTexParameteriv(target,pname,params){if(!params){GL.recordError(1281);return}HEAP32[params>>2]=GLctx.getTexParameter(target,pname)};var _emscripten_glGetTexParameteriv=_glGetTexParameteriv;var _glGetTransformFeedbackVarying=function _glGetTransformFeedbackVarying(program,index,bufSize,length,size,type,name){program=GL.programs[program];var info=GLctx.getTransformFeedbackVarying(program,index);if(!info)return;if(name&&bufSize>0){var numBytesWrittenExclNull=stringToUTF8(info.name,name,bufSize);if(length)HEAP32[length>>2]=numBytesWrittenExclNull}else{if(length)HEAP32[length>>2]=0}if(size)HEAP32[size>>2]=info.size;if(type)HEAP32[type>>2]=info.type};var _emscripten_glGetTransformFeedbackVarying=_glGetTransformFeedbackVarying;var _glGetUniformBlockIndex=function _glGetUniformBlockIndex(program,uniformBlockName){return GLctx.getUniformBlockIndex(GL.programs[program],UTF8ToString(uniformBlockName))};var _emscripten_glGetUniformBlockIndex=_glGetUniformBlockIndex;var _glGetUniformIndices=function _glGetUniformIndices(program,uniformCount,uniformNames,uniformIndices){if(!uniformIndices){GL.recordError(1281);return}if(uniformCount>0&&(uniformNames==0||uniformIndices==0)){GL.recordError(1281);return}program=GL.programs[program];var names=[];for(var i=0;i>2]));var result=GLctx.getUniformIndices(program,names);if(!result)return;var len=result.length;for(var i=0;i>2]=result[i]}};var _emscripten_glGetUniformIndices=_glGetUniformIndices;var webglGetLeftBracePos=function webglGetLeftBracePos(name){return name.slice(-1)=="]"&&name.lastIndexOf("[")};var webglPrepareUniformLocationsBeforeFirstUse=function webglPrepareUniformLocationsBeforeFirstUse(program){var uniformLocsById=program.uniformLocsById,uniformSizeAndIdsByName=program.uniformSizeAndIdsByName,i,j;if(!uniformLocsById){program.uniformLocsById=uniformLocsById={};program.uniformArrayNamesById={};for(i=0;i0?nm.slice(0,lb):nm;var id=program.uniformIdCounter;program.uniformIdCounter+=sz;uniformSizeAndIdsByName[arrayName]=[sz,id];for(j=0;j0){arrayIndex=jstoi_q(name.slice(leftBrace+1))>>>0;uniformBaseName=name.slice(0,leftBrace)}var sizeAndId=program.uniformSizeAndIdsByName[uniformBaseName];if(sizeAndId&&arrayIndex0?"[".concat(webglLoc,"]"):""))}return webglLoc}else{GL.recordError(1282)}};var emscriptenWebGLGetUniform=function emscriptenWebGLGetUniform(program,location,params,type){if(!params){GL.recordError(1281);return}program=GL.programs[program];webglPrepareUniformLocationsBeforeFirstUse(program);var data=GLctx.getUniform(program,webglGetUniformLocation(location));if(typeof data=="number"||typeof data=="boolean"){switch(type){case 0:HEAP32[params>>2]=data;break;case 2:HEAPF32[params>>2]=data;break}}else{for(var i=0;i>2]=data[i];break;case 2:HEAPF32[params+i*4>>2]=data[i];break}}}};var _glGetUniformfv=function _glGetUniformfv(program,location,params){emscriptenWebGLGetUniform(program,location,params,2)};var _emscripten_glGetUniformfv=_glGetUniformfv;var _glGetUniformiv=function _glGetUniformiv(program,location,params){emscriptenWebGLGetUniform(program,location,params,0)};var _emscripten_glGetUniformiv=_glGetUniformiv;var _glGetUniformuiv=function _glGetUniformuiv(program,location,params){return emscriptenWebGLGetUniform(program,location,params,0)};var _emscripten_glGetUniformuiv=_glGetUniformuiv;var emscriptenWebGLGetVertexAttrib=function emscriptenWebGLGetVertexAttrib(index,pname,params,type){if(!params){GL.recordError(1281);return}var data=GLctx.getVertexAttrib(index,pname);if(pname==34975){HEAP32[params>>2]=data&&data["name"]}else if(typeof data=="number"||typeof data=="boolean"){switch(type){case 0:HEAP32[params>>2]=data;break;case 2:HEAPF32[params>>2]=data;break;case 5:HEAP32[params>>2]=Math.fround(data);break}}else{for(var i=0;i>2]=data[i];break;case 2:HEAPF32[params+i*4>>2]=data[i];break;case 5:HEAP32[params+i*4>>2]=Math.fround(data[i]);break}}}};var _glGetVertexAttribIiv=function _glGetVertexAttribIiv(index,pname,params){emscriptenWebGLGetVertexAttrib(index,pname,params,0)};var _emscripten_glGetVertexAttribIiv=_glGetVertexAttribIiv;var _glGetVertexAttribIuiv=_glGetVertexAttribIiv;var _emscripten_glGetVertexAttribIuiv=_glGetVertexAttribIuiv;var _glGetVertexAttribPointerv=function _glGetVertexAttribPointerv(index,pname,pointer){if(!pointer){GL.recordError(1281);return}HEAP32[pointer>>2]=GLctx.getVertexAttribOffset(index,pname)};var _emscripten_glGetVertexAttribPointerv=_glGetVertexAttribPointerv;var _glGetVertexAttribfv=function _glGetVertexAttribfv(index,pname,params){emscriptenWebGLGetVertexAttrib(index,pname,params,2)};var _emscripten_glGetVertexAttribfv=_glGetVertexAttribfv;var _glGetVertexAttribiv=function _glGetVertexAttribiv(index,pname,params){emscriptenWebGLGetVertexAttrib(index,pname,params,5)};var _emscripten_glGetVertexAttribiv=_glGetVertexAttribiv;var _glHint=function _glHint(x0,x1){return GLctx.hint(x0,x1)};var _emscripten_glHint=_glHint;var _glInvalidateFramebuffer=function _glInvalidateFramebuffer(target,numAttachments,attachments){var list=tempFixedLengthArray[numAttachments];for(var i=0;i>2]}GLctx.invalidateFramebuffer(target,list)};var _emscripten_glInvalidateFramebuffer=_glInvalidateFramebuffer;var _glInvalidateSubFramebuffer=function _glInvalidateSubFramebuffer(target,numAttachments,attachments,x,y,width,height){var list=tempFixedLengthArray[numAttachments];for(var i=0;i>2]}GLctx.invalidateSubFramebuffer(target,list,x,y,width,height)};var _emscripten_glInvalidateSubFramebuffer=_glInvalidateSubFramebuffer;var _glIsBuffer=function _glIsBuffer(buffer){var b=GL.buffers[buffer];if(!b)return 0;return GLctx.isBuffer(b)};var _emscripten_glIsBuffer=_glIsBuffer;var _glIsEnabled=function _glIsEnabled(x0){return GLctx.isEnabled(x0)};var _emscripten_glIsEnabled=_glIsEnabled;var _glIsFramebuffer=function _glIsFramebuffer(framebuffer){var fb=GL.framebuffers[framebuffer];if(!fb)return 0;return GLctx.isFramebuffer(fb)};var _emscripten_glIsFramebuffer=_glIsFramebuffer;var _glIsProgram=function _glIsProgram(program){program=GL.programs[program];if(!program)return 0;return GLctx.isProgram(program)};var _emscripten_glIsProgram=_glIsProgram;var _glIsQuery=function _glIsQuery(id){var query=GL.queries[id];if(!query)return 0;return GLctx.isQuery(query)};var _emscripten_glIsQuery=_glIsQuery;var _glIsQueryEXT=function _glIsQueryEXT(id){var query=GL.queries[id];if(!query)return 0;return GLctx.disjointTimerQueryExt["isQueryEXT"](query)};var _emscripten_glIsQueryEXT=_glIsQueryEXT;var _glIsRenderbuffer=function _glIsRenderbuffer(renderbuffer){var rb=GL.renderbuffers[renderbuffer];if(!rb)return 0;return GLctx.isRenderbuffer(rb)};var _emscripten_glIsRenderbuffer=_glIsRenderbuffer;var _glIsSampler=function _glIsSampler(id){var sampler=GL.samplers[id];if(!sampler)return 0;return GLctx.isSampler(sampler)};var _emscripten_glIsSampler=_glIsSampler;var _glIsShader=function _glIsShader(shader){var s=GL.shaders[shader];if(!s)return 0;return GLctx.isShader(s)};var _emscripten_glIsShader=_glIsShader;var _glIsSync=function _glIsSync(sync){return GLctx.isSync(GL.syncs[sync])};var _emscripten_glIsSync=_glIsSync;var _glIsTexture=function _glIsTexture(id){var texture=GL.textures[id];if(!texture)return 0;return GLctx.isTexture(texture)};var _emscripten_glIsTexture=_glIsTexture;var _glIsTransformFeedback=function _glIsTransformFeedback(id){return GLctx.isTransformFeedback(GL.transformFeedbacks[id])};var _emscripten_glIsTransformFeedback=_glIsTransformFeedback;var _glIsVertexArray=function _glIsVertexArray(array){var vao=GL.vaos[array];if(!vao)return 0;return GLctx.isVertexArray(vao)};var _emscripten_glIsVertexArray=_glIsVertexArray;var _glIsVertexArrayOES=_glIsVertexArray;var _emscripten_glIsVertexArrayOES=_glIsVertexArrayOES;var _glLineWidth=function _glLineWidth(x0){return GLctx.lineWidth(x0)};var _emscripten_glLineWidth=_glLineWidth;var _glLinkProgram=function _glLinkProgram(program){program=GL.programs[program];GLctx.linkProgram(program);program.uniformLocsById=0;program.uniformSizeAndIdsByName={}};var _emscripten_glLinkProgram=_glLinkProgram;var _glPauseTransformFeedback=function _glPauseTransformFeedback(){return GLctx.pauseTransformFeedback()};var _emscripten_glPauseTransformFeedback=_glPauseTransformFeedback;var _glPixelStorei=function _glPixelStorei(pname,param){if(pname==3317){GL.unpackAlignment=param}else if(pname==3314){GL.unpackRowLength=param}GLctx.pixelStorei(pname,param)};var _emscripten_glPixelStorei=_glPixelStorei;var _glPolygonOffset=function _glPolygonOffset(x0,x1){return GLctx.polygonOffset(x0,x1)};var _emscripten_glPolygonOffset=_glPolygonOffset;var _glProgramBinary=function _glProgramBinary(program,binaryFormat,binary,length){GL.recordError(1280)};var _emscripten_glProgramBinary=_glProgramBinary;var _glProgramParameteri=function _glProgramParameteri(program,pname,value){GL.recordError(1280)};var _emscripten_glProgramParameteri=_glProgramParameteri;var _glQueryCounterEXT=function _glQueryCounterEXT(id,target){GLctx.disjointTimerQueryExt["queryCounterEXT"](GL.queries[id],target)};var _emscripten_glQueryCounterEXT=_glQueryCounterEXT;var _glReadBuffer=function _glReadBuffer(x0){return GLctx.readBuffer(x0)};var _emscripten_glReadBuffer=_glReadBuffer;var computeUnpackAlignedImageSize=function computeUnpackAlignedImageSize(width,height,sizePerPixel){function roundedToNextMultipleOf(x,y){return x+y-1&-y}var plainRowSize=(GL.unpackRowLength||width)*sizePerPixel;var alignedRowSize=roundedToNextMultipleOf(plainRowSize,GL.unpackAlignment);return height*alignedRowSize};var colorChannelsInGlTextureFormat=function colorChannelsInGlTextureFormat(format){var colorChannels={5:3,6:4,8:2,29502:3,29504:4,26917:2,26918:2,29846:3,29847:4};return colorChannels[format-6402]||1};var heapObjectForWebGLType=function heapObjectForWebGLType(type){type-=5120;if(type==0)return HEAP8;if(type==1)return HEAPU8;if(type==2)return HEAP16;if(type==4)return HEAP32;if(type==6)return HEAPF32;if(type==5||type==28922||type==28520||type==30779||type==30782)return HEAPU32;return HEAPU16};var toTypedArrayIndex=function toTypedArrayIndex(pointer,heap){return pointer>>>31-Math.clz32(heap.BYTES_PER_ELEMENT)};var emscriptenWebGLGetTexPixelData=function emscriptenWebGLGetTexPixelData(type,format,width,height,pixels,internalFormat){var heap=heapObjectForWebGLType(type);var sizePerPixel=colorChannelsInGlTextureFormat(format)*heap.BYTES_PER_ELEMENT;var bytes=computeUnpackAlignedImageSize(width,height,sizePerPixel);return heap.subarray(toTypedArrayIndex(pixels,heap),toTypedArrayIndex(pixels+bytes,heap))};var _glReadPixels=function _glReadPixels(x,y,width,height,format,type,pixels){if(GL.currentContext.version>=2){if(GLctx.currentPixelPackBufferBinding){GLctx.readPixels(x,y,width,height,format,type,pixels);return}var heap=heapObjectForWebGLType(type);var target=toTypedArrayIndex(pixels,heap);GLctx.readPixels(x,y,width,height,format,type,heap,target);return}var pixelData=emscriptenWebGLGetTexPixelData(type,format,width,height,pixels,format);if(!pixelData){GL.recordError(1280);return}GLctx.readPixels(x,y,width,height,format,type,pixelData)};var _emscripten_glReadPixels=_glReadPixels;var _glReleaseShaderCompiler=function _glReleaseShaderCompiler(){};var _emscripten_glReleaseShaderCompiler=_glReleaseShaderCompiler;var _glRenderbufferStorage=function _glRenderbufferStorage(x0,x1,x2,x3){return GLctx.renderbufferStorage(x0,x1,x2,x3)};var _emscripten_glRenderbufferStorage=_glRenderbufferStorage;var _glRenderbufferStorageMultisample=function _glRenderbufferStorageMultisample(x0,x1,x2,x3,x4){return GLctx.renderbufferStorageMultisample(x0,x1,x2,x3,x4)};var _emscripten_glRenderbufferStorageMultisample=_glRenderbufferStorageMultisample;var _glResumeTransformFeedback=function _glResumeTransformFeedback(){return GLctx.resumeTransformFeedback()};var _emscripten_glResumeTransformFeedback=_glResumeTransformFeedback;var _glSampleCoverage=function _glSampleCoverage(value,invert){GLctx.sampleCoverage(value,!!invert)};var _emscripten_glSampleCoverage=_glSampleCoverage;var _glSamplerParameterf=function _glSamplerParameterf(sampler,pname,param){GLctx.samplerParameterf(GL.samplers[sampler],pname,param)};var _emscripten_glSamplerParameterf=_glSamplerParameterf;var _glSamplerParameterfv=function _glSamplerParameterfv(sampler,pname,params){var param=HEAPF32[params>>2];GLctx.samplerParameterf(GL.samplers[sampler],pname,param)};var _emscripten_glSamplerParameterfv=_glSamplerParameterfv;var _glSamplerParameteri=function _glSamplerParameteri(sampler,pname,param){GLctx.samplerParameteri(GL.samplers[sampler],pname,param)};var _emscripten_glSamplerParameteri=_glSamplerParameteri;var _glSamplerParameteriv=function _glSamplerParameteriv(sampler,pname,params){var param=HEAP32[params>>2];GLctx.samplerParameteri(GL.samplers[sampler],pname,param)};var _emscripten_glSamplerParameteriv=_glSamplerParameteriv;var _glScissor=function _glScissor(x0,x1,x2,x3){return GLctx.scissor(x0,x1,x2,x3)};var _emscripten_glScissor=_glScissor;var _glShaderBinary=function _glShaderBinary(count,shaders,binaryformat,binary,length){GL.recordError(1280)};var _emscripten_glShaderBinary=_glShaderBinary;var _glShaderSource=function _glShaderSource(shader,count,string,length){var source=GL.getSource(shader,count,string,length);GLctx.shaderSource(GL.shaders[shader],source)};var _emscripten_glShaderSource=_glShaderSource;var _glStencilFunc=function _glStencilFunc(x0,x1,x2){return GLctx.stencilFunc(x0,x1,x2)};var _emscripten_glStencilFunc=_glStencilFunc;var _glStencilFuncSeparate=function _glStencilFuncSeparate(x0,x1,x2,x3){return GLctx.stencilFuncSeparate(x0,x1,x2,x3)};var _emscripten_glStencilFuncSeparate=_glStencilFuncSeparate;var _glStencilMask=function _glStencilMask(x0){return GLctx.stencilMask(x0)};var _emscripten_glStencilMask=_glStencilMask;var _glStencilMaskSeparate=function _glStencilMaskSeparate(x0,x1){return GLctx.stencilMaskSeparate(x0,x1)};var _emscripten_glStencilMaskSeparate=_glStencilMaskSeparate;var _glStencilOp=function _glStencilOp(x0,x1,x2){return GLctx.stencilOp(x0,x1,x2)};var _emscripten_glStencilOp=_glStencilOp;var _glStencilOpSeparate=function _glStencilOpSeparate(x0,x1,x2,x3){return GLctx.stencilOpSeparate(x0,x1,x2,x3)};var _emscripten_glStencilOpSeparate=_glStencilOpSeparate;var _glTexImage2D=function _glTexImage2D(target,level,internalFormat,width,height,border,format,type,pixels){if(GL.currentContext.version>=2){if(GLctx.currentPixelUnpackBufferBinding){GLctx.texImage2D(target,level,internalFormat,width,height,border,format,type,pixels);return}if(pixels){var heap=heapObjectForWebGLType(type);var index=toTypedArrayIndex(pixels,heap);GLctx.texImage2D(target,level,internalFormat,width,height,border,format,type,heap,index);return}}var pixelData=pixels?emscriptenWebGLGetTexPixelData(type,format,width,height,pixels,internalFormat):null;GLctx.texImage2D(target,level,internalFormat,width,height,border,format,type,pixelData)};var _emscripten_glTexImage2D=_glTexImage2D;var _glTexImage3D=function _glTexImage3D(target,level,internalFormat,width,height,depth,border,format,type,pixels){if(GLctx.currentPixelUnpackBufferBinding){GLctx.texImage3D(target,level,internalFormat,width,height,depth,border,format,type,pixels)}else if(pixels){var heap=heapObjectForWebGLType(type);GLctx.texImage3D(target,level,internalFormat,width,height,depth,border,format,type,heap,toTypedArrayIndex(pixels,heap))}else{GLctx.texImage3D(target,level,internalFormat,width,height,depth,border,format,type,null)}};var _emscripten_glTexImage3D=_glTexImage3D;var _glTexParameterf=function _glTexParameterf(x0,x1,x2){return GLctx.texParameterf(x0,x1,x2)};var _emscripten_glTexParameterf=_glTexParameterf;var _glTexParameterfv=function _glTexParameterfv(target,pname,params){var param=HEAPF32[params>>2];GLctx.texParameterf(target,pname,param)};var _emscripten_glTexParameterfv=_glTexParameterfv;var _glTexParameteri=function _glTexParameteri(x0,x1,x2){return GLctx.texParameteri(x0,x1,x2)};var _emscripten_glTexParameteri=_glTexParameteri;var _glTexParameteriv=function _glTexParameteriv(target,pname,params){var param=HEAP32[params>>2];GLctx.texParameteri(target,pname,param)};var _emscripten_glTexParameteriv=_glTexParameteriv;var _glTexStorage2D=function _glTexStorage2D(x0,x1,x2,x3,x4){return GLctx.texStorage2D(x0,x1,x2,x3,x4)};var _emscripten_glTexStorage2D=_glTexStorage2D;var _glTexStorage3D=function _glTexStorage3D(x0,x1,x2,x3,x4,x5){return GLctx.texStorage3D(x0,x1,x2,x3,x4,x5)};var _emscripten_glTexStorage3D=_glTexStorage3D;var _glTexSubImage2D=function _glTexSubImage2D(target,level,xoffset,yoffset,width,height,format,type,pixels){if(GL.currentContext.version>=2){if(GLctx.currentPixelUnpackBufferBinding){GLctx.texSubImage2D(target,level,xoffset,yoffset,width,height,format,type,pixels);return}if(pixels){var heap=heapObjectForWebGLType(type);GLctx.texSubImage2D(target,level,xoffset,yoffset,width,height,format,type,heap,toTypedArrayIndex(pixels,heap));return}}var pixelData=pixels?emscriptenWebGLGetTexPixelData(type,format,width,height,pixels,0):null;GLctx.texSubImage2D(target,level,xoffset,yoffset,width,height,format,type,pixelData)};var _emscripten_glTexSubImage2D=_glTexSubImage2D;var _glTexSubImage3D=function _glTexSubImage3D(target,level,xoffset,yoffset,zoffset,width,height,depth,format,type,pixels){if(GLctx.currentPixelUnpackBufferBinding){GLctx.texSubImage3D(target,level,xoffset,yoffset,zoffset,width,height,depth,format,type,pixels)}else if(pixels){var heap=heapObjectForWebGLType(type);GLctx.texSubImage3D(target,level,xoffset,yoffset,zoffset,width,height,depth,format,type,heap,toTypedArrayIndex(pixels,heap))}else{GLctx.texSubImage3D(target,level,xoffset,yoffset,zoffset,width,height,depth,format,type,null)}};var _emscripten_glTexSubImage3D=_glTexSubImage3D;var _glTransformFeedbackVaryings=function _glTransformFeedbackVaryings(program,count,varyings,bufferMode){program=GL.programs[program];var vars=[];for(var i=0;i>2]));GLctx.transformFeedbackVaryings(program,vars,bufferMode)};var _emscripten_glTransformFeedbackVaryings=_glTransformFeedbackVaryings;var _glUniform1f=function _glUniform1f(location,v0){GLctx.uniform1f(webglGetUniformLocation(location),v0)};var _emscripten_glUniform1f=_glUniform1f;var miniTempWebGLFloatBuffers=[];var _glUniform1fv=function _glUniform1fv(location,count,value){if(GL.currentContext.version>=2){count&&GLctx.uniform1fv(webglGetUniformLocation(location),HEAPF32,value>>2,count);return}if(count<=288){var view=miniTempWebGLFloatBuffers[count];for(var i=0;i>2]}}else{var view=HEAPF32.subarray(value>>2,value+count*4>>2)}GLctx.uniform1fv(webglGetUniformLocation(location),view)};var _emscripten_glUniform1fv=_glUniform1fv;var _glUniform1i=function _glUniform1i(location,v0){GLctx.uniform1i(webglGetUniformLocation(location),v0)};var _emscripten_glUniform1i=_glUniform1i;var miniTempWebGLIntBuffers=[];var _glUniform1iv=function _glUniform1iv(location,count,value){if(GL.currentContext.version>=2){count&&GLctx.uniform1iv(webglGetUniformLocation(location),HEAP32,value>>2,count);return}if(count<=288){var view=miniTempWebGLIntBuffers[count];for(var i=0;i>2]}}else{var view=HEAP32.subarray(value>>2,value+count*4>>2)}GLctx.uniform1iv(webglGetUniformLocation(location),view)};var _emscripten_glUniform1iv=_glUniform1iv;var _glUniform1ui=function _glUniform1ui(location,v0){GLctx.uniform1ui(webglGetUniformLocation(location),v0)};var _emscripten_glUniform1ui=_glUniform1ui;var _glUniform1uiv=function _glUniform1uiv(location,count,value){count&&GLctx.uniform1uiv(webglGetUniformLocation(location),HEAPU32,value>>2,count)};var _emscripten_glUniform1uiv=_glUniform1uiv;var _glUniform2f=function _glUniform2f(location,v0,v1){GLctx.uniform2f(webglGetUniformLocation(location),v0,v1)};var _emscripten_glUniform2f=_glUniform2f;var _glUniform2fv=function _glUniform2fv(location,count,value){if(GL.currentContext.version>=2){count&&GLctx.uniform2fv(webglGetUniformLocation(location),HEAPF32,value>>2,count*2);return}if(count<=144){var view=miniTempWebGLFloatBuffers[2*count];for(var i=0;i<2*count;i+=2){view[i]=HEAPF32[value+4*i>>2];view[i+1]=HEAPF32[value+(4*i+4)>>2]}}else{var view=HEAPF32.subarray(value>>2,value+count*8>>2)}GLctx.uniform2fv(webglGetUniformLocation(location),view)};var _emscripten_glUniform2fv=_glUniform2fv;var _glUniform2i=function _glUniform2i(location,v0,v1){GLctx.uniform2i(webglGetUniformLocation(location),v0,v1)};var _emscripten_glUniform2i=_glUniform2i;var _glUniform2iv=function _glUniform2iv(location,count,value){if(GL.currentContext.version>=2){count&&GLctx.uniform2iv(webglGetUniformLocation(location),HEAP32,value>>2,count*2);return}if(count<=144){var view=miniTempWebGLIntBuffers[2*count];for(var i=0;i<2*count;i+=2){view[i]=HEAP32[value+4*i>>2];view[i+1]=HEAP32[value+(4*i+4)>>2]}}else{var view=HEAP32.subarray(value>>2,value+count*8>>2)}GLctx.uniform2iv(webglGetUniformLocation(location),view)};var _emscripten_glUniform2iv=_glUniform2iv;var _glUniform2ui=function _glUniform2ui(location,v0,v1){GLctx.uniform2ui(webglGetUniformLocation(location),v0,v1)};var _emscripten_glUniform2ui=_glUniform2ui;var _glUniform2uiv=function _glUniform2uiv(location,count,value){count&&GLctx.uniform2uiv(webglGetUniformLocation(location),HEAPU32,value>>2,count*2)};var _emscripten_glUniform2uiv=_glUniform2uiv;var _glUniform3f=function _glUniform3f(location,v0,v1,v2){GLctx.uniform3f(webglGetUniformLocation(location),v0,v1,v2)};var _emscripten_glUniform3f=_glUniform3f;var _glUniform3fv=function _glUniform3fv(location,count,value){if(GL.currentContext.version>=2){count&&GLctx.uniform3fv(webglGetUniformLocation(location),HEAPF32,value>>2,count*3);return}if(count<=96){var view=miniTempWebGLFloatBuffers[3*count];for(var i=0;i<3*count;i+=3){view[i]=HEAPF32[value+4*i>>2];view[i+1]=HEAPF32[value+(4*i+4)>>2];view[i+2]=HEAPF32[value+(4*i+8)>>2]}}else{var view=HEAPF32.subarray(value>>2,value+count*12>>2)}GLctx.uniform3fv(webglGetUniformLocation(location),view)};var _emscripten_glUniform3fv=_glUniform3fv;var _glUniform3i=function _glUniform3i(location,v0,v1,v2){GLctx.uniform3i(webglGetUniformLocation(location),v0,v1,v2)};var _emscripten_glUniform3i=_glUniform3i;var _glUniform3iv=function _glUniform3iv(location,count,value){if(GL.currentContext.version>=2){count&&GLctx.uniform3iv(webglGetUniformLocation(location),HEAP32,value>>2,count*3);return}if(count<=96){var view=miniTempWebGLIntBuffers[3*count];for(var i=0;i<3*count;i+=3){view[i]=HEAP32[value+4*i>>2];view[i+1]=HEAP32[value+(4*i+4)>>2];view[i+2]=HEAP32[value+(4*i+8)>>2]}}else{var view=HEAP32.subarray(value>>2,value+count*12>>2)}GLctx.uniform3iv(webglGetUniformLocation(location),view)};var _emscripten_glUniform3iv=_glUniform3iv;var _glUniform3ui=function _glUniform3ui(location,v0,v1,v2){GLctx.uniform3ui(webglGetUniformLocation(location),v0,v1,v2)};var _emscripten_glUniform3ui=_glUniform3ui;var _glUniform3uiv=function _glUniform3uiv(location,count,value){count&&GLctx.uniform3uiv(webglGetUniformLocation(location),HEAPU32,value>>2,count*3)};var _emscripten_glUniform3uiv=_glUniform3uiv;var _glUniform4f=function _glUniform4f(location,v0,v1,v2,v3){GLctx.uniform4f(webglGetUniformLocation(location),v0,v1,v2,v3)};var _emscripten_glUniform4f=_glUniform4f;var _glUniform4fv=function _glUniform4fv(location,count,value){if(GL.currentContext.version>=2){count&&GLctx.uniform4fv(webglGetUniformLocation(location),HEAPF32,value>>2,count*4);return}if(count<=72){var view=miniTempWebGLFloatBuffers[4*count];var heap=HEAPF32;value=value>>2;for(var i=0;i<4*count;i+=4){var dst=value+i;view[i]=heap[dst];view[i+1]=heap[dst+1];view[i+2]=heap[dst+2];view[i+3]=heap[dst+3]}}else{var view=HEAPF32.subarray(value>>2,value+count*16>>2)}GLctx.uniform4fv(webglGetUniformLocation(location),view)};var _emscripten_glUniform4fv=_glUniform4fv;var _glUniform4i=function _glUniform4i(location,v0,v1,v2,v3){GLctx.uniform4i(webglGetUniformLocation(location),v0,v1,v2,v3)};var _emscripten_glUniform4i=_glUniform4i;var _glUniform4iv=function _glUniform4iv(location,count,value){if(GL.currentContext.version>=2){count&&GLctx.uniform4iv(webglGetUniformLocation(location),HEAP32,value>>2,count*4);return}if(count<=72){var view=miniTempWebGLIntBuffers[4*count];for(var i=0;i<4*count;i+=4){view[i]=HEAP32[value+4*i>>2];view[i+1]=HEAP32[value+(4*i+4)>>2];view[i+2]=HEAP32[value+(4*i+8)>>2];view[i+3]=HEAP32[value+(4*i+12)>>2]}}else{var view=HEAP32.subarray(value>>2,value+count*16>>2)}GLctx.uniform4iv(webglGetUniformLocation(location),view)};var _emscripten_glUniform4iv=_glUniform4iv;var _glUniform4ui=function _glUniform4ui(location,v0,v1,v2,v3){GLctx.uniform4ui(webglGetUniformLocation(location),v0,v1,v2,v3)};var _emscripten_glUniform4ui=_glUniform4ui;var _glUniform4uiv=function _glUniform4uiv(location,count,value){count&&GLctx.uniform4uiv(webglGetUniformLocation(location),HEAPU32,value>>2,count*4)};var _emscripten_glUniform4uiv=_glUniform4uiv;var _glUniformBlockBinding=function _glUniformBlockBinding(program,uniformBlockIndex,uniformBlockBinding){program=GL.programs[program];GLctx.uniformBlockBinding(program,uniformBlockIndex,uniformBlockBinding)};var _emscripten_glUniformBlockBinding=_glUniformBlockBinding;var _glUniformMatrix2fv=function _glUniformMatrix2fv(location,count,transpose,value){if(GL.currentContext.version>=2){count&&GLctx.uniformMatrix2fv(webglGetUniformLocation(location),!!transpose,HEAPF32,value>>2,count*4);return}if(count<=72){var view=miniTempWebGLFloatBuffers[4*count];for(var i=0;i<4*count;i+=4){view[i]=HEAPF32[value+4*i>>2];view[i+1]=HEAPF32[value+(4*i+4)>>2];view[i+2]=HEAPF32[value+(4*i+8)>>2];view[i+3]=HEAPF32[value+(4*i+12)>>2]}}else{var view=HEAPF32.subarray(value>>2,value+count*16>>2)}GLctx.uniformMatrix2fv(webglGetUniformLocation(location),!!transpose,view)};var _emscripten_glUniformMatrix2fv=_glUniformMatrix2fv;var _glUniformMatrix2x3fv=function _glUniformMatrix2x3fv(location,count,transpose,value){count&&GLctx.uniformMatrix2x3fv(webglGetUniformLocation(location),!!transpose,HEAPF32,value>>2,count*6)};var _emscripten_glUniformMatrix2x3fv=_glUniformMatrix2x3fv;var _glUniformMatrix2x4fv=function _glUniformMatrix2x4fv(location,count,transpose,value){count&&GLctx.uniformMatrix2x4fv(webglGetUniformLocation(location),!!transpose,HEAPF32,value>>2,count*8)};var _emscripten_glUniformMatrix2x4fv=_glUniformMatrix2x4fv;var _glUniformMatrix3fv=function _glUniformMatrix3fv(location,count,transpose,value){if(GL.currentContext.version>=2){count&&GLctx.uniformMatrix3fv(webglGetUniformLocation(location),!!transpose,HEAPF32,value>>2,count*9);return}if(count<=32){var view=miniTempWebGLFloatBuffers[9*count];for(var i=0;i<9*count;i+=9){view[i]=HEAPF32[value+4*i>>2];view[i+1]=HEAPF32[value+(4*i+4)>>2];view[i+2]=HEAPF32[value+(4*i+8)>>2];view[i+3]=HEAPF32[value+(4*i+12)>>2];view[i+4]=HEAPF32[value+(4*i+16)>>2];view[i+5]=HEAPF32[value+(4*i+20)>>2];view[i+6]=HEAPF32[value+(4*i+24)>>2];view[i+7]=HEAPF32[value+(4*i+28)>>2];view[i+8]=HEAPF32[value+(4*i+32)>>2]}}else{var view=HEAPF32.subarray(value>>2,value+count*36>>2)}GLctx.uniformMatrix3fv(webglGetUniformLocation(location),!!transpose,view)};var _emscripten_glUniformMatrix3fv=_glUniformMatrix3fv;var _glUniformMatrix3x2fv=function _glUniformMatrix3x2fv(location,count,transpose,value){count&&GLctx.uniformMatrix3x2fv(webglGetUniformLocation(location),!!transpose,HEAPF32,value>>2,count*6)};var _emscripten_glUniformMatrix3x2fv=_glUniformMatrix3x2fv;var _glUniformMatrix3x4fv=function _glUniformMatrix3x4fv(location,count,transpose,value){count&&GLctx.uniformMatrix3x4fv(webglGetUniformLocation(location),!!transpose,HEAPF32,value>>2,count*12)};var _emscripten_glUniformMatrix3x4fv=_glUniformMatrix3x4fv;var _glUniformMatrix4fv=function _glUniformMatrix4fv(location,count,transpose,value){if(GL.currentContext.version>=2){count&&GLctx.uniformMatrix4fv(webglGetUniformLocation(location),!!transpose,HEAPF32,value>>2,count*16);return}if(count<=18){var view=miniTempWebGLFloatBuffers[16*count];var heap=HEAPF32;value=value>>2;for(var i=0;i<16*count;i+=16){var dst=value+i;view[i]=heap[dst];view[i+1]=heap[dst+1];view[i+2]=heap[dst+2];view[i+3]=heap[dst+3];view[i+4]=heap[dst+4];view[i+5]=heap[dst+5];view[i+6]=heap[dst+6];view[i+7]=heap[dst+7];view[i+8]=heap[dst+8];view[i+9]=heap[dst+9];view[i+10]=heap[dst+10];view[i+11]=heap[dst+11];view[i+12]=heap[dst+12];view[i+13]=heap[dst+13];view[i+14]=heap[dst+14];view[i+15]=heap[dst+15]}}else{var view=HEAPF32.subarray(value>>2,value+count*64>>2)}GLctx.uniformMatrix4fv(webglGetUniformLocation(location),!!transpose,view)};var _emscripten_glUniformMatrix4fv=_glUniformMatrix4fv;var _glUniformMatrix4x2fv=function _glUniformMatrix4x2fv(location,count,transpose,value){count&&GLctx.uniformMatrix4x2fv(webglGetUniformLocation(location),!!transpose,HEAPF32,value>>2,count*8)};var _emscripten_glUniformMatrix4x2fv=_glUniformMatrix4x2fv;var _glUniformMatrix4x3fv=function _glUniformMatrix4x3fv(location,count,transpose,value){count&&GLctx.uniformMatrix4x3fv(webglGetUniformLocation(location),!!transpose,HEAPF32,value>>2,count*12)};var _emscripten_glUniformMatrix4x3fv=_glUniformMatrix4x3fv;var _glUseProgram=function _glUseProgram(program){program=GL.programs[program];GLctx.useProgram(program);GLctx.currentProgram=program};var _emscripten_glUseProgram=_glUseProgram;var _glValidateProgram=function _glValidateProgram(program){GLctx.validateProgram(GL.programs[program])};var _emscripten_glValidateProgram=_glValidateProgram;var _glVertexAttrib1f=function _glVertexAttrib1f(x0,x1){return GLctx.vertexAttrib1f(x0,x1)};var _emscripten_glVertexAttrib1f=_glVertexAttrib1f;var _glVertexAttrib1fv=function _glVertexAttrib1fv(index,v){GLctx.vertexAttrib1f(index,HEAPF32[v>>2])};var _emscripten_glVertexAttrib1fv=_glVertexAttrib1fv;var _glVertexAttrib2f=function _glVertexAttrib2f(x0,x1,x2){return GLctx.vertexAttrib2f(x0,x1,x2)};var _emscripten_glVertexAttrib2f=_glVertexAttrib2f;var _glVertexAttrib2fv=function _glVertexAttrib2fv(index,v){GLctx.vertexAttrib2f(index,HEAPF32[v>>2],HEAPF32[v+4>>2])};var _emscripten_glVertexAttrib2fv=_glVertexAttrib2fv;var _glVertexAttrib3f=function _glVertexAttrib3f(x0,x1,x2,x3){return GLctx.vertexAttrib3f(x0,x1,x2,x3)};var _emscripten_glVertexAttrib3f=_glVertexAttrib3f;var _glVertexAttrib3fv=function _glVertexAttrib3fv(index,v){GLctx.vertexAttrib3f(index,HEAPF32[v>>2],HEAPF32[v+4>>2],HEAPF32[v+8>>2])};var _emscripten_glVertexAttrib3fv=_glVertexAttrib3fv;var _glVertexAttrib4f=function _glVertexAttrib4f(x0,x1,x2,x3,x4){return GLctx.vertexAttrib4f(x0,x1,x2,x3,x4)};var _emscripten_glVertexAttrib4f=_glVertexAttrib4f;var _glVertexAttrib4fv=function _glVertexAttrib4fv(index,v){GLctx.vertexAttrib4f(index,HEAPF32[v>>2],HEAPF32[v+4>>2],HEAPF32[v+8>>2],HEAPF32[v+12>>2])};var _emscripten_glVertexAttrib4fv=_glVertexAttrib4fv;var _glVertexAttribDivisor=function _glVertexAttribDivisor(index,divisor){GLctx.vertexAttribDivisor(index,divisor)};var _emscripten_glVertexAttribDivisor=_glVertexAttribDivisor;var _glVertexAttribDivisorANGLE=_glVertexAttribDivisor;var _emscripten_glVertexAttribDivisorANGLE=_glVertexAttribDivisorANGLE;var _glVertexAttribDivisorARB=_glVertexAttribDivisor;var _emscripten_glVertexAttribDivisorARB=_glVertexAttribDivisorARB;var _glVertexAttribDivisorEXT=_glVertexAttribDivisor;var _emscripten_glVertexAttribDivisorEXT=_glVertexAttribDivisorEXT;var _glVertexAttribDivisorNV=_glVertexAttribDivisor;var _emscripten_glVertexAttribDivisorNV=_glVertexAttribDivisorNV;var _glVertexAttribI4i=function _glVertexAttribI4i(x0,x1,x2,x3,x4){return GLctx.vertexAttribI4i(x0,x1,x2,x3,x4)};var _emscripten_glVertexAttribI4i=_glVertexAttribI4i;var _glVertexAttribI4iv=function _glVertexAttribI4iv(index,v){GLctx.vertexAttribI4i(index,HEAP32[v>>2],HEAP32[v+4>>2],HEAP32[v+8>>2],HEAP32[v+12>>2])};var _emscripten_glVertexAttribI4iv=_glVertexAttribI4iv;var _glVertexAttribI4ui=function _glVertexAttribI4ui(x0,x1,x2,x3,x4){return GLctx.vertexAttribI4ui(x0,x1,x2,x3,x4)};var _emscripten_glVertexAttribI4ui=_glVertexAttribI4ui;var _glVertexAttribI4uiv=function _glVertexAttribI4uiv(index,v){GLctx.vertexAttribI4ui(index,HEAPU32[v>>2],HEAPU32[v+4>>2],HEAPU32[v+8>>2],HEAPU32[v+12>>2])};var _emscripten_glVertexAttribI4uiv=_glVertexAttribI4uiv;var _glVertexAttribIPointer=function _glVertexAttribIPointer(index,size,type,stride,ptr){GLctx.vertexAttribIPointer(index,size,type,stride,ptr)};var _emscripten_glVertexAttribIPointer=_glVertexAttribIPointer;var _glVertexAttribPointer=function _glVertexAttribPointer(index,size,type,normalized,stride,ptr){GLctx.vertexAttribPointer(index,size,type,!!normalized,stride,ptr)};var _emscripten_glVertexAttribPointer=_glVertexAttribPointer;var _glViewport=function _glViewport(x0,x1,x2,x3){return GLctx.viewport(x0,x1,x2,x3)};var _emscripten_glViewport=_glViewport;var _glWaitSync=function _glWaitSync(sync,flags,timeout_low,timeout_high){var timeout=convertI32PairToI53(timeout_low,timeout_high);GLctx.waitSync(GL.syncs[sync],flags,timeout)};var _emscripten_glWaitSync=_glWaitSync;var _emscripten_pause_main_loop=function _emscripten_pause_main_loop(){Browser.mainLoop.pause()};var growMemory=function growMemory(size){var b=wasmMemory.buffer;var pages=(size-b.byteLength+65535)/65536;try{wasmMemory.grow(pages);updateMemoryViews();return 1}catch(e){}};var _emscripten_resize_heap=function _emscripten_resize_heap(requestedSize){var oldSize=HEAPU8.length;requestedSize>>>=0;var maxHeapSize=getHeapMax();if(requestedSize>maxHeapSize){return false}for(var cutDown=1;cutDown<=4;cutDown*=2){var overGrownHeapSize=oldSize*(1+.2/cutDown);overGrownHeapSize=Math.min(overGrownHeapSize,requestedSize+100663296);var newSize=Math.min(maxHeapSize,alignMemory(Math.max(requestedSize,overGrownHeapSize),65536));var replacement=growMemory(newSize);if(replacement){return true}}return false};var _emscripten_set_main_loop_arg=function _emscripten_set_main_loop_arg(func,arg,fps,simulateInfiniteLoop){var browserIterationFunc=function browserIterationFunc(){return getWasmTableEntry(func)(arg)};setMainLoop(browserIterationFunc,fps,simulateInfiniteLoop,arg)};var _emscripten_webgl_enable_extension=function _emscripten_webgl_enable_extension(contextHandle,extension){var context=GL.getContext(contextHandle);var extString=UTF8ToString(extension);if(extString.startsWith("GL_"))extString=extString.substr(3);if(extString=="ANGLE_instanced_arrays")webgl_enable_ANGLE_instanced_arrays(GLctx);if(extString=="OES_vertex_array_object")webgl_enable_OES_vertex_array_object(GLctx);if(extString=="WEBGL_draw_buffers")webgl_enable_WEBGL_draw_buffers(GLctx);if(extString=="WEBGL_draw_instanced_base_vertex_base_instance")webgl_enable_WEBGL_draw_instanced_base_vertex_base_instance(GLctx);if(extString=="WEBGL_multi_draw_instanced_base_vertex_base_instance")webgl_enable_WEBGL_multi_draw_instanced_base_vertex_base_instance(GLctx);if(extString=="WEBGL_multi_draw")webgl_enable_WEBGL_multi_draw(GLctx);var ext=context.GLctx.getExtension(extString);return!!ext};var _emscripten_webgl_do_get_current_context=function _emscripten_webgl_do_get_current_context(){return GL.currentContext?GL.currentContext.handle:0};var _emscripten_webgl_get_current_context=_emscripten_webgl_do_get_current_context;var ENV={};var getExecutableName=function getExecutableName(){return thisProgram||"./this.program"};var getEnvStrings=function getEnvStrings(){if(!getEnvStrings.strings){var lang=((typeof navigator==="undefined"?"undefined":_typeof(navigator))=="object"&&navigator.languages&&navigator.languages[0]||"C").replace("-","_")+".UTF-8";var env={USER:"web_user",LOGNAME:"web_user",PATH:"/",PWD:"/",HOME:"/home/web_user",LANG:lang,_:getExecutableName()};for(var x in ENV){if(ENV[x]===undefined)delete env[x];else env[x]=ENV[x]}var strings=[];for(var x in env){strings.push("".concat(x,"=").concat(env[x]))}getEnvStrings.strings=strings}return getEnvStrings.strings};var stringToAscii=function stringToAscii(str,buffer){for(var i=0;i>2]=ptr;stringToAscii(string,ptr);bufSize+=string.length+1});return 0};var _environ_sizes_get=function _environ_sizes_get(penviron_count,penviron_buf_size){var strings=getEnvStrings();HEAPU32[penviron_count>>2]=strings.length;var bufSize=0;strings.forEach(function(string){return bufSize+=string.length+1});HEAPU32[penviron_buf_size>>2]=bufSize;return 0};function _fd_close(fd){try{var stream=SYSCALLS.getStreamFromFD(fd);FS.close(stream);return 0}catch(e){if(typeof FS=="undefined"||!(e.name==="ErrnoError"))throw e;return e.errno}}var doReadv=function doReadv(stream,iov,iovcnt,offset){var ret=0;for(var i=0;i>2];var len=HEAPU32[iov+4>>2];iov+=8;var curr=FS.read(stream,HEAP8,ptr,len,offset);if(curr<0)return-1;ret+=curr;if(curr>2]=num;return 0}catch(e){if(typeof FS=="undefined"||!(e.name==="ErrnoError"))throw e;return e.errno}}function _fd_seek(fd,offset_low,offset_high,whence,newOffset){var offset=convertI32PairToI53Checked(offset_low,offset_high);try{if(isNaN(offset))return 61;var stream=SYSCALLS.getStreamFromFD(fd);FS.llseek(stream,offset,whence);tempI64=[stream.position>>>0,(tempDouble=stream.position,+Math.abs(tempDouble)>=1?tempDouble>0?+Math.floor(tempDouble/4294967296)>>>0:~~+Math.ceil((tempDouble-+(~~tempDouble>>>0))/4294967296)>>>0:0)],HEAP32[newOffset>>2]=tempI64[0],HEAP32[newOffset+4>>2]=tempI64[1];if(stream.getdents&&offset===0&&whence===0)stream.getdents=null;return 0}catch(e){if(typeof FS=="undefined"||!(e.name==="ErrnoError"))throw e;return e.errno}}var doWritev=function doWritev(stream,iov,iovcnt,offset){var ret=0;for(var i=0;i>2];var len=HEAPU32[iov+4>>2];iov+=8;var curr=FS.write(stream,HEAP8,ptr,len,offset);if(curr<0)return-1;ret+=curr;if(curr>2]=num;return 0}catch(e){if(typeof FS=="undefined"||!(e.name==="ErrnoError"))throw e;return e.errno}}var _getaddrinfo=function _getaddrinfo(node,service,hint,out){var addr=0;var port=0;var flags=0;var family=0;var type=0;var proto=0;var ai;function allocaddrinfo(family,type,proto,canon,addr,port){var sa,salen,ai;var errno;salen=family===10?28:16;addr=family===10?inetNtop6(addr):inetNtop4(addr);sa=_malloc(salen);errno=writeSockaddr(sa,family,addr,port);assert(!errno);ai=_malloc(32);HEAP32[ai+4>>2]=family;HEAP32[ai+8>>2]=type;HEAP32[ai+12>>2]=proto;HEAPU32[ai+24>>2]=canon;HEAPU32[ai+20>>2]=sa;if(family===10){HEAP32[ai+16>>2]=28}else{HEAP32[ai+16>>2]=16}HEAP32[ai+28>>2]=0;return ai}if(hint){flags=HEAP32[hint>>2];family=HEAP32[hint+4>>2];type=HEAP32[hint+8>>2];proto=HEAP32[hint+12>>2]}if(type&&!proto){proto=type===2?17:6}if(!type&&proto){type=proto===17?2:1}if(proto===0){proto=6}if(type===0){type=1}if(!node&&!service){return-2}if(flags&~(1|2|4|1024|8|16|32)){return-1}if(hint!==0&&HEAP32[hint>>2]&2&&!node){return-1}if(flags&32){return-2}if(type!==0&&type!==1&&type!==2){return-7}if(family!==0&&family!==2&&family!==10){return-6}if(service){service=UTF8ToString(service);port=parseInt(service,10);if(isNaN(port)){if(flags&1024){return-2}return-8}}if(!node){if(family===0){family=2}if((flags&1)===0){if(family===2){addr=_htonl2(2130706433)}else{addr=[0,0,0,1]}}ai=allocaddrinfo(family,type,proto,null,addr,port);HEAPU32[out>>2]=ai;return 0}node=UTF8ToString(node);addr=inetPton4(node);if(addr!==null){if(family===0||family===2){family=2}else if(family===10&&flags&8){addr=[0,0,_htonl2(65535),addr];family=10}else{return-2}}else{addr=inetPton6(node);if(addr!==null){if(family===0||family===10){family=10}else{return-2}}}if(addr!=null){ai=allocaddrinfo(family,type,proto,node,addr,port);HEAPU32[out>>2]=ai;return 0}if(flags&4){return-2}node=DNS.lookup_name(node);addr=inetPton4(node);if(family===0){family=2}else if(family===10){addr=[0,0,_htonl2(65535),addr]}ai=allocaddrinfo(family,type,proto,null,addr,port);HEAPU32[out>>2]=ai;return 0};var _getnameinfo=function _getnameinfo(sa,salen,node,nodelen,serv,servlen,flags){var info=readSockaddr(sa,salen);if(info.errno){return-6}var port=info.port;var addr=info.addr;var overflowed=false;if(node&&nodelen){var lookup;if(flags&1||!(lookup=DNS.lookup_addr(addr))){if(flags&8){return-2}}else{addr=lookup}var numBytesWrittenExclNull=stringToUTF8(addr,node,nodelen);if(numBytesWrittenExclNull+1>=nodelen){overflowed=true}}if(serv&&servlen){port=""+port;var numBytesWrittenExclNull=stringToUTF8(port,serv,servlen);if(numBytesWrittenExclNull+1>=servlen){overflowed=true}}if(overflowed){return-12}return 0};var GLFW={keyFunc:null,charFunc:null,markedTextFunc:null,gamepadFunc:null,mouseButtonFunc:null,mousePosFunc:null,mouseWheelFunc:null,resizeFunc:null,closeFunc:null,refreshFunc:null,focusFunc:null,iconifyFunc:null,touchFunc:null,params:null,initTime:null,wheelPos:0,buttons:0,keys:0,initWindowWidth:640,initWindowHeight:480,windowX:0,windowY:0,windowWidth:0,windowHeight:0,prevWidth:0,prevHeight:0,prevNonFSWidth:0,prevNonFSHeight:0,isFullscreen:false,isPointerLocked:false,dpi:1,mouseTouchId:null,DOMToGLFWKeyCode:function DOMToGLFWKeyCode(keycode,code){switch(keycode){case 8:return 295;case 9:return 293;case 13:return 294;case 27:return 257;case 106:return 313;case 107:return 315;case 109:return 314;case 110:return 316;case 111:return 312;case 112:return 258;case 113:return 259;case 114:return 260;case 115:return 261;case 116:return 262;case 117:return 263;case 118:return 264;case 119:return 265;case 120:return 266;case 121:return 267;case 122:return 268;case 123:return 269;case 37:return 285;case 38:return 283;case 39:return 286;case 40:return 284;case 33:return 298;case 34:return 299;case 36:return 300;case 35:return 301;case 45:return 296;case 16:return 287;case 5:return 287;case 6:return 288;case 17:return 289;case 3:return 289;case 4:return 290;case 18:return 291;case 2:return 291;case 1:return 292;case 96:return 302;case 97:return 303;case 98:return 304;case 99:return 305;case 100:return 306;case 101:return 307;case 102:return 308;case 103:return 309;case 104:return 310;case 105:return 311}switch(code){case"Minus":return 45;case"Period":return 46;case"Comma":return 44;case"Slash":return 47;case"Backslash":return 92;case"IntlRo":return 92;case"IntlYen":return 92;case"IntlBackslash":return 92;case"Backquote":return 96;case"BracketLeft":return 91;case"BracketRight":return 93;case"Equal":return 61;case"Quote":return 39;case"Semicolon":return 59;case"NumpadComma":return 316}return keycode},DOMtoGLFWButton:function DOMtoGLFWButton(button){if(button==1){button=2}else if(button==2){button=1}return button},getUnicodeChar:function getUnicodeChar(value){var output="";if(value>65535){value-=65536;output+=String.fromCharCode(value>>>10&1023|55296);value=56320|value&1023}output+=String.fromCharCode(value);return output},addEventListener:function addEventListener(type,listener,useCapture){if(typeof window!=="undefined"){window.addEventListener(type,listener,useCapture)}},removeEventListener:function removeEventListener(type,listener,useCapture){if(typeof window!=="undefined"){window.removeEventListener(type,listener,useCapture)}},addEventListenerCanvas:function addEventListenerCanvas(type,listener,useCapture){if(typeof Module["canvas"]!=="undefined"){Module["canvas"].addEventListener(type,listener,useCapture)}},removeEventListenerCanvas:function removeEventListenerCanvas(type,listener,useCapture){if(typeof Module["canvas"]!=="undefined"){Module["canvas"].removeEventListener(type,listener,useCapture)}},isCanvasActive:function isCanvasActive(event){var res=typeof document.activeElement=="undefined"||document.activeElement==Module["canvas"];if(!res){res=event.target==Module["canvas"]}if(event.target.focus)event.target.focus();return res},onKeyPress:function onKeyPress(event){if(!GLFW.isCanvasActive(event)){return}if(event.charCode){var char=GLFW.getUnicodeChar(event.charCode);if(char!==null&&GLFW.charFunc){getWasmTableEntry(GLFW.charFunc)(event.charCode,1)}}},onKeyChanged:function onKeyChanged(event,status){if(!GLFW.isCanvasActive(event)){return}var key=GLFW.DOMToGLFWKeyCode(event.keyCode,event.code);if(key){GLFW.keys[key]=status;if(GLFW.keyFunc){getWasmTableEntry(GLFW.keyFunc)(key,status)}}},onKeydown:function onKeydown(event){if(!GLFW.isCanvasActive(event)){return}switch(event.keyCode){case 37:case 38:case 39:case 40:case 32:event.preventDefault();event.stopPropagation();default:break}GLFW.onKeyChanged(event,1);if(event.keyCode===32){if(GLFW.charFunc){getWasmTableEntry(GLFW.charFunc)(32,1);event.preventDefault()}}else if(event.keyCode===8||event.keyCode===9||event.keyCode===13){event.preventDefault()}},onKeyup:function onKeyup(event){if(!GLFW.isCanvasActive(event)){return}GLFW.onKeyChanged(event,0)},onMousemove:function onMousemove(event){var lastX=Browser.mouseX;var lastY=Browser.mouseY;Browser.calculateMouseEvent(event);var newX=Browser.mouseX;var newY=Browser.mouseY;if(event.target==Module["canvas"]&&GLFW.mousePosFunc){event.preventDefault();getWasmTableEntry(GLFW.mousePosFunc)(lastX,lastY)}},onMouseButtonChanged:function onMouseButtonChanged(event,status){if(!GLFW.isCanvasActive(event)){return}if(GLFW.mouseButtonFunc==null){return}Browser.calculateMouseEvent(event);if(event.target!=Module["canvas"]){return}if(status==1){try{event.target.setCapture()}catch(e){}}event.preventDefault();var eventButton=GLFW.DOMtoGLFWButton(event["button"]);getWasmTableEntry(GLFW.mouseButtonFunc)(eventButton,status)},fillTouch:function fillTouch(id,x,y,phase){if(GLFW.touchFunc){getWasmTableEntry(GLFW.touchFunc)(id,x,y,phase)}},touchWasFinished:function touchWasFinished(event,phase){if(!GLFW.isCanvasActive(event)){return}for(var i=0;i0}function _glfwGetMouseLocked(){return GLFW.isPointerLocked?1:0}function _glfwGetMousePos(xpos,ypos){setValue(xpos,Browser.mouseX,"i32");setValue(ypos,Browser.mouseY,"i32")}function _glfwGetMouseWheel(){return GLFW.wheelPos}function _glfwGetWindowParam(param){return GLFW.params[param]}function _glfwGetWindowRefreshRate(){return 0}function _glfwGetWindowSize(width,height){setValue(width,Module["canvas"].width,"i32");setValue(height,Module["canvas"].height,"i32")}function _glfwIconifyWindow(){}function _glfwInitJS(){GLFW.initTime=Date.now()/1e3;GLFW.addEventListener("gamepadconnected",GLFW.onJoystickConnected,true);GLFW.addEventListener("gamepaddisconnected",GLFW.onJoystickDisconnected,true);GLFW.addEventListener("keydown",GLFW.onKeydown,true);GLFW.addEventListener("keypress",GLFW.onKeyPress,true);GLFW.addEventListener("keyup",GLFW.onKeyup,true);GLFW.addEventListener("mousemove",GLFW.onMousemove,true);GLFW.addEventListener("mousedown",GLFW.onMouseButtonDown,true);GLFW.addEventListener("mouseup",GLFW.onMouseButtonUp,true);GLFW.addEventListener("DOMMouseScroll",GLFW.onMouseWheel,{capture:true,passive:false});GLFW.addEventListener("mousewheel",GLFW.onMouseWheel,{capture:true,passive:false});GLFW.addEventListenerCanvas("touchstart",GLFW.onTouchStart,true);GLFW.addEventListenerCanvas("touchend",GLFW.onTouchEnd,true);GLFW.addEventListenerCanvas("touchcancel",GLFW.onTouchCancel,true);GLFW.addEventListenerCanvas("touchmove",GLFW.onTouchMove,true);GLFW.addEventListenerCanvas("focus",GLFW.onFocus,true);GLFW.addEventListenerCanvas("blur",GLFW.onBlur,true);__ATEXIT__.push({func:function func(){GLFW.removeEventListener("gamepadconnected",GLFW.onJoystickConnected,true);GLFW.removeEventListener("gamepaddisconnected",GLFW.onJoystickDisconnected,true);GLFW.removeEventListener("keydown",GLFW.onKeydown,true);GLFW.removeEventListener("keypress",GLFW.onKeyPress,true);GLFW.removeEventListener("keyup",GLFW.onKeyup,true);GLFW.removeEventListener("mousemove",GLFW.onMousemove,true);GLFW.removeEventListener("mousedown",GLFW.onMouseButtonDown,true);GLFW.removeEventListener("mouseup",GLFW.onMouseButtonUp,true);GLFW.removeEventListener("DOMMouseScroll",GLFW.onMouseWheel,{capture:true,passive:false});GLFW.removeEventListener("mousewheel",GLFW.onMouseWheel,{capture:true,passive:false});GLFW.removeEventListenerCanvas("touchstart",GLFW.onTouchStart,true);GLFW.removeEventListenerCanvas("touchend",GLFW.onTouchEnd,true);GLFW.removeEventListenerCanvas("touchcancel",GLFW.onTouchEnd,true);GLFW.removeEventListenerCanvas("touchmove",GLFW.onTouchMove,true);GLFW.removeEventListenerCanvas("focus",GLFW.onFocus,true);GLFW.removeEventListenerCanvas("blur",GLFW.onBlur,true);var canvas=Module["canvas"];if(typeof canvas!=="undefined"){Module["canvas"].width=Module["canvas"].height=1}}});GLFW.params=new Array;GLFW.params[196609]=true;GLFW.params[196610]=false;GLFW.params[196611]=true;GLFW.params[196612]=false;GLFW.params[196613]=false;GLFW.params[196614]=true;GLFW.params[131073]=true;GLFW.params[131074]=true;GLFW.params[131075]=false;GLFW.params[131076]=true;GLFW.params[131077]=0;GLFW.params[131078]=0;GLFW.params[131079]=0;GLFW.params[131080]=0;GLFW.params[131081]=0;GLFW.params[131082]=0;GLFW.params[131083]=0;GLFW.params[131084]=0;GLFW.params[131085]=0;GLFW.params[131086]=0;GLFW.params[131087]=0;GLFW.params[131088]=0;GLFW.params[131089]=0;GLFW.params[131090]=0;GLFW.params[131091]=0;GLFW.params[131092]=0;GLFW.params[131093]=0;GLFW.params[131094]=0;GLFW.params[131095]=0;GLFW.params[131096]=0;GLFW.params[327681]=0;GLFW.params[327682]=1;GLFW.params[327683]=2;GLFW.params[131097]=0;GLFW.dpi=1;GLFW.keys=new Array;GLFW.GLFW_PHASE_BEGAN=0;GLFW.GLFW_PHASE_MOVED=1;GLFW.GLFW_PHASE_ENDED=3;GLFW.GLFW_PHASE_CANCELLED=4;return 1}function _glfwOpenWindow(width,height,redbits,greenbits,bluebits,alphabits,depthbits,stencilbits,mode){if(width==0&&height>0){width=4*height/3}if(width>0&&height==0){height=3*width/4}GLFW.params[131077]=redbits;GLFW.params[131078]=greenbits;GLFW.params[131079]=bluebits;GLFW.params[131080]=alphabits;GLFW.params[131081]=depthbits;GLFW.params[131082]=stencilbits;if(mode==65537){GLFW.initWindowWidth=width;GLFW.initWindowHeight=height;GLFW.params[196611]=true}else if(mode==65538){GLFW.requestFullScreen();GLFW.params[196611]=false}else{throw"Invalid glfwOpenWindow mode."}var useWebGL=GLFW.params[131098]>0;if(useWebGL){var contextAttributes={antialias:GLFW.params[131091]>1,depth:GLFW.params[131081]>0,stencil:GLFW.params[131082]>0,alpha:GLFW.params[131080]>0};var iOSVersion=false;try{iOSVersion=parseFloat((""+(/CPU.*OS ([0-9_]{1,5})|(CPU like).*AppleWebKit.*Mobile/i.exec(navigator.userAgent)||[0,""])[1]).replace("undefined","3_2").replace("_",".").replace("_",""))||false}catch(e){}if(iOSVersion&&iOSVersion<15.2){contextAttributes.majorVersion=1}Module.ctx=Browser.createContext(Module["canvas"],true,true,contextAttributes);if(Module.ctx==null){contextAttributes.majorVersion=1;Module.ctx=Browser.createContext(Module["canvas"],true,true,contextAttributes)}}return 1}function _glfwOpenWindowHint(target,hint){GLFW.params[target]=hint;if(target==131097){if(hint!=0){GLFW.dpi=window.devicePixelRatio||1}}}function _glfwPollEvents(){}function _glfwResetKeyboard(){}function _glfwSetCharCallback(cbfun){GLFW.charFunc=cbfun;return 1}function _glfwSetDeviceChangedCallback(cbfun){return 1}function _glfwSetGamepadCallback(cbfun){GLFW.gamepadFunc=cbfun;try{GLFW.refreshJoysticks();return 1}catch(e){GLFW.gamepadFunc=null;return 0}}function _glfwSetMarkedTextCallback(cbfun){GLFW.markedTextFunc=cbfun;return 1}function _glfwSetTouchCallback(cbfun){GLFW.touchFunc=cbfun;return 1}function _glfwSetWindowBackgroundColor(color){}function _glfwSetWindowCloseCallback(cbfun){GLFW.closeFunc=cbfun}function _glfwSetWindowFocusCallback(cbfun){GLFW.focusFunc=cbfun}function _glfwSetWindowIconifyCallback(cbfun){GLFW.iconifyFunc=cbfun}function _glfwSetWindowSize(width,height){Browser.setCanvasSize(width,height);if(GLFW.resizeFunc){getWasmTableEntry(GLFW.resizeFunc)(width,height)}}function _glfwSetWindowSizeCallback(cbfun){GLFW.resizeFunc=cbfun}function _glfwShowKeyboard(show_keyboard){Module["canvas"].contentEditable=show_keyboard?true:false;if(show_keyboard){Module["canvas"].focus()}}function _glfwSwapBuffers(){var width=Module["canvas"].width;var height=Module["canvas"].height;if(GLFW.prevWidth!=width||GLFW.prevHeight!=height){if(GLFW.isFullscreen){width=Math.floor(window.innerWidth*GLFW.dpi);height=Math.floor(window.innerHeight*GLFW.dpi)}GLFW.prevWidth=width;GLFW.prevHeight=height;_glfwSetWindowSize(width,height)}}function _glfwSwapInterval(interval){}function _glfwTerminate(){}var dmRenderer={renderContext:null,renderCallback:null,CONTEXT_LOST_EVENT:0,CONTEXT_RESTORED_EVENT:1,rendererContextEvent:function rendererContextEvent(event_type){if(dmRenderer.renderCallback){getWasmTableEntry(dmRenderer.renderCallback)(dmRenderer.renderContext,event_type)}}};function _setupCallbackJS(context,callback){dmRenderer.renderContext=context;dmRenderer.renderCallback=callback}var stackAlloc=function stackAlloc(sz){return _emscripten_stack_alloc(sz)};var stringToUTF8OnStack=function stringToUTF8OnStack(str){var size=lengthBytesUTF8(str)+1;var ret=stackAlloc(size);stringToUTF8(str,ret,size);return ret};var getCFunc=function getCFunc(ident){var func=Module["_"+ident];return func};var writeArrayToMemory=function writeArrayToMemory(array,buffer){HEAP8.set(array,buffer)};var ccall=function ccall(ident,returnType,argTypes,args,opts){var toC={string:function string(str){var ret=0;if(str!==null&&str!==undefined&&str!==0){ret=stringToUTF8OnStack(str)}return ret},array:function array(arr){var ret=stackAlloc(arr.length);writeArrayToMemory(arr,ret);return ret}};function convertReturnValue(ret){if(returnType==="string"){return UTF8ToString(ret)}if(returnType==="boolean")return Boolean(ret);return ret}var func=getCFunc(ident);var cArgs=[];var stack=0;if(args){for(var i=0;i0&&arguments[0]!==undefined?arguments[0]:[];var entryFunction=_main;args.unshift(thisProgram);var argc=args.length;var argv=stackAlloc((argc+1)*4);var argv_ptr=argv;args.forEach(function(arg){HEAPU32[argv_ptr>>2]=stringToUTF8OnStack(arg);argv_ptr+=4});HEAPU32[argv_ptr>>2]=0;try{var ret=entryFunction(argc,argv);exitJS(ret,true);return ret}catch(e){return handleException(e)}}function run(){var args=arguments.length>0&&arguments[0]!==undefined?arguments[0]:arguments_;if(runDependencies>0){return}preRun();if(runDependencies>0){return}function doRun(){var _Module$onRuntimeInit;if(calledRun)return;calledRun=true;Module["calledRun"]=true;if(ABORT)return;initRuntime();preMain();(_Module$onRuntimeInit=Module["onRuntimeInitialized"])===null||_Module$onRuntimeInit===void 0||_Module$onRuntimeInit.call(Module);if(shouldRunNow)callMain(args);postRun()}if(Module["setStatus"]){Module["setStatus"]("Running...");setTimeout(function(){setTimeout(function(){Module["setStatus"]("")},1);doRun()},1)}else{doRun()}}if(Module["preInit"]){if(typeof Module["preInit"]=="function")Module["preInit"]=[Module["preInit"]];while(Module["preInit"].length>0){Module["preInit"].pop()()}}var shouldRunNow=true;if(Module["noInitialRun"])shouldRunNow=false;run(); diff --git a/docs/index.html b/docs/index.html index 192ca28..180d13b 100644 --- a/docs/index.html +++ b/docs/index.html @@ -1,186 +1,161 @@ - - - + + - Defold Druid UI Framework - + + + + + + + Druid 1.1.0 + + -
- -
- -
-
-
- - -
- - - - - - -
- - -

Documentation for Druid Framework

- -

Modules

- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -
BackHandlerComponent with event on back and backspace button.
BlockerComponent to consume input in special zone defined by GUI node.
ButtonDruid Component for Handling User Click Interactions: Click, Long Click, Double Click, and More.
DragComponent to handle drag action on node.
HoverComponent to handle hover node interaction
ScrollComponent to handle scroll content.
StaticGridComponent to handle component's position by row and columns.
TextComponent for Wrapping GUI Text Nodes: Druid Text -

## Overview ## -

Druid Text is a component that provides various adjustment modes for text nodes.

BaseComponentBasic class for all Druid components.
RichInputDruid Rich Input custom component.
RichTextDruid Rich Text Custom Component.
DruidDruid UI Component Framework.
DruidEventDruid Event Module -

The Event module provides a simple class for handling callbacks.

DataListComponent to manage data for huge dataset in scroll.
DynamicGridComponent to handle placing components in row
HotkeyDruid hotkey component
InputDruid input text component.
LangTextComponent to wrap over GUI Text nodes with localization helpers -

# Overview # -

• The initialization of druid.set_text_function is required to enable localization - using the localization ID.

LayoutLayout management on node
ProgressDruid component to handle the progress bars.
SliderDruid slider component
SwipeComponent to handle swipe gestures on node.
TimerComponent to handle GUI timers.
HelperHelper module with various usefull GUI functions.
DruidInstanceDruid Instance which you use for component creation.
- -
-
-
-generated by LDoc TESTING -Last updated 2015-01-01 12:00:00 -
-
+
+ + +
+ +
+
+
+
+ + + + diff --git a/docs/ldoc_fixed.css b/docs/ldoc_fixed.css deleted file mode 100644 index e63d191..0000000 --- a/docs/ldoc_fixed.css +++ /dev/null @@ -1,311 +0,0 @@ -/* BEGIN RESET - -Copyright (c) 2010, Yahoo! Inc. All rights reserved. -Code licensed under the BSD License: -http://developer.yahoo.com/yui/license.html -version: 2.8.2r1 -*/ -html { - color: #000; - background: #FFF; -} -body,div,dl,dt,dd,ul,ol,li,h1,h2,h3,h4,h5,h6,pre,code,form,fieldset,legend,input,button,textarea,p,blockquote,th,td { - margin: 0; - padding: 0; -} -table { - border-collapse: collapse; - border-spacing: 0; -} -fieldset,img { - border: 0; -} -address,caption,cite,code,dfn,em,strong,th,var,optgroup { - font-style: inherit; - font-weight: inherit; -} -del,ins { - text-decoration: none; -} -li { - margin-left: 20px; -} -caption,th { - text-align: left; -} -h1,h2,h3,h4,h5,h6 { - font-size: 100%; - font-weight: bold; -} -q:before,q:after { - content: ''; -} -abbr,acronym { - border: 0; - font-variant: normal; -} -sup { - vertical-align: baseline; -} -sub { - vertical-align: baseline; -} -legend { - color: #000; -} -input,button,textarea,select,optgroup,option { - font-family: inherit; - font-size: inherit; - font-style: inherit; - font-weight: inherit; -} -input,button,textarea,select {*font-size:100%; -} -/* END RESET */ - -body { - margin-left: 1em; - margin-right: 1em; - font-family: arial, helvetica, geneva, sans-serif; - background-color: #ffffff; margin: 0px; -} - -code, tt { font-family: monospace; font-size: 1.1em; } -span.parameter { font-family:monospace; } -span.parameter:after { content:":"; } -span.types:before { content:"("; } -span.types:after { content:")"; } -.type { font-weight: bold; font-style:italic } - -body, p, td, th { font-size: .95em; line-height: 1.2em;} - -p, ul { margin: 10px 0 0 0px;} - -strong { font-weight: bold;} - -em { font-style: italic;} - -h1 { - font-size: 1.5em; - margin: 0 0 20px 0; -} -h2, h3, h4 { margin: 15px 0 10px 0; } -h2 { font-size: 1.25em; } -h3 { font-size: 1.15em; } -h4 { font-size: 1.06em; } - -a:link { font-weight: bold; color: #004080; text-decoration: none; } -a:visited { font-weight: bold; color: #006699; text-decoration: none; } -a:link:hover { text-decoration: underline; } - -hr { - color:#cccccc; - background: #00007f; - height: 1px; -} - -blockquote { margin-left: 3em; } - -ul { list-style-type: disc; } - -p.name { - font-family: "Andale Mono", monospace; - padding-top: 1em; -} - -pre { - background-color: rgb(245, 245, 245); - border: 1px solid #C0C0C0; /* silver */ - padding: 10px; - margin: 10px 0 10px 0; - overflow: auto; - font-family: "Andale Mono", monospace; -} - -pre.example { - font-size: .85em; -} - -table.index { border: 1px #00007f; } -table.index td { text-align: left; vertical-align: top; } - -#container { - margin-left: 1em; - margin-right: 1em; - background-color: #ffffff; -} - -#product { - text-align: center; - border-bottom: 1px solid #cccccc; - background-color: #ffffff; -} - -#product big { - font-size: 2em; -} - -#main { - background-color:#FFFFFF; // #f0f0f0; - border-left: 1px solid #cccccc; -} - -#navigation { - position: fixed; - top: 0; - left: 0; - float: left; - width: 14em; - vertical-align: top; - background-color:#FFFFFF; // #f0f0f0; - border-right: 2px solid #cccccc; - overflow: visible; - overflow-y: scroll; - height: 100%; - padding-left: 1em; -} - -#navigation h2 { - background-color:#FFFFFF;//:#e7e7e7; - font-size:1.1em; - color:#000000; - text-align: left; - padding:0.2em; - border-bottom:1px solid #dddddd; -} - -#navigation ul -{ - font-size:1em; - list-style-type: none; - margin: 1px 1px 10px 1px; -} - -#navigation li { - text-indent: -1em; - display: block; - margin: 3px 0px 0px 22px; -} - -#navigation li li a { - margin: 0px 3px 0px -1em; -} - -#content { - margin-left: 14em; - padding: 1em; - padding-left: 2em; - width: 900px; - border-left: 2px solid #cccccc; - // border-right: 2px solid #cccccc; - background-color: #ffffff; -} - -#about { - clear: both; - padding-left: 1em; - margin-left: 14em; // avoid the damn sidebar! - border-top: 2px solid #cccccc; - border-left: 2px solid #cccccc; - background-color: #ffffff; -} - -@media print { - body { - font: 12pt "Times New Roman", "TimeNR", Times, serif; - } - a { font-weight: bold; color: #004080; text-decoration: underline; } - - #main { - background-color: #ffffff; - border-left: 0px; - } - - #container { - margin-left: 2%; - margin-right: 2%; - background-color: #ffffff; - } - - #content { - padding: 1em; - background-color: #ffffff; - } - - #navigation { - display: none; - } - pre.example { - font-family: "Andale Mono", monospace; - font-size: 10pt; - page-break-inside: avoid; - } -} - -table.module_list { - border-width: 1px; - border-style: solid; - border-color: #cccccc; - border-collapse: collapse; -} -table.module_list td { - border-width: 1px; - padding: 3px; - border-style: solid; - border-color: #cccccc; -} -table.module_list td.name { background-color: #f0f0f0; ; min-width: 200px; } -table.module_list td.summary { width: 100%; } - -table.function_list { - border-width: 1px; - border-style: solid; - border-color: #cccccc; - border-collapse: collapse; -} -table.function_list td { - border-width: 1px; - padding: 3px; - border-style: solid; - border-color: #cccccc; -} -table.function_list td.name { background-color: #f6f6ff; ; min-width: 200px; } -table.function_list td.summary { width: 100%; } - -dl.table dt, dl.function dt {border-top: 1px solid #ccc; padding-top: 1em;} -dl.table dd, dl.function dd {padding-bottom: 1em; margin: 10px 0 0 20px;} -dl.table h3, dl.function h3 {font-size: .95em;} - -ul.nowrap { - overflow:auto; - whitespace:nowrap; -} - -/* stop sublists from having initial vertical space */ -ul ul { margin-top: 0px; } -ol ul { margin-top: 0px; } -ol ol { margin-top: 0px; } -ul ol { margin-top: 0px; } - -/* make the target distinct; helps when we're navigating to a function */ -a:target + * { - background-color: #FF9; -} - - -/* styles for prettification of source */ -pre .comment { color: #558817; } -pre .constant { color: #a8660d; } -pre .escape { color: #844631; } -pre .keyword { color: #aa5050; font-weight: bold; } -pre .library { color: #0e7c6b; } -pre .marker { color: #512b1e; background: #fedc56; font-weight: bold; } -pre .string { color: #8080ff; } -pre .number { color: #f8660d; } -pre .operator { color: #2239a8; font-weight: bold; } -pre .preprocessor, pre .prepro { color: #a33243; } -pre .global { color: #800080; } -pre .user-keyword { color: #800080; } -pre .prompt { color: #558817; } -pre .url { color: #272fc2; text-decoration: underline; } - diff --git a/docs/modules/BackHandler.html b/docs/modules/BackHandler.html deleted file mode 100644 index e8f7dc7..0000000 --- a/docs/modules/BackHandler.html +++ /dev/null @@ -1,172 +0,0 @@ - - - - - Defold Druid UI Framework - - - - -
- -
- -
-
-
- - -
- - - - - - -
- -

Module BackHandler

-

Component with event on back and backspace button.

-

- # Overview # -

Back Handler is recommended to put in every game window to close it - or in main screen to call settings window. -

# Notes # -

• Back Handler inheritance BaseComponent, you can use all of its methods in addition to those described here. -

• Back Handler react on release action ACTION_BACK or ACTION_BACKSPACE

-

Usage:

-
    -
    local callback = function(self, params) ... end
    -
    -local params = {}
    -local back_handler = self.druid:new_back_handler(callback, [params])
    -
    -
- - -

Fields

- - - - - - - - - -
on_backThe DruidEvent Event on back handler action.
paramsCustom args to pass in the callback
- -
-
- - -

Fields

- -
-
- - on_back -
-
- The DruidEvent Event on back handler action. -

Trigger on input action ACTION_BACK or ACTION_BACKSPACE - - -

- - - - -

Usage:

-
    -
    -- Subscribe additional callbacks:
    -back_handler.on_back:subscribe(callback)
    -
- -
-
- - params -
-
- Custom args to pass in the callback - - -
    -
  • params - any or nil - -
  • -
- - - - -

Usage:

-
    -
    -- Replace params on runtime:
    -back_handler.params = { ... }
    -
- -
-
- - -
-
-
-generated by LDoc TESTING -Last updated 2015-01-01 12:00:00 -
-
- - diff --git a/docs/modules/BaseComponent.html b/docs/modules/BaseComponent.html deleted file mode 100644 index ab54602..0000000 --- a/docs/modules/BaseComponent.html +++ /dev/null @@ -1,665 +0,0 @@ - - - - - Defold Druid UI Framework - - - - -
- -
- -
-
-
- - -
- - - - - - -
- -

Module BaseComponent

-

Basic class for all Druid components.

-

- To create you custom component, use static function `component.create`

-

Usage:

-
    -
    -- Create your component:
    -local component = require("druid.component")
    -
    -local AwesomeComponent = component.create("awesome_component")
    -
    -function AwesomeComponent:init(template, nodes)
    -    self:set_template(template)
    -    self:set_nodes(nodes)
    -    self.druid = self:get_druid()
    -end
    -
    -return AwesomeComponent
    -
    -
- - -

Functions

- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -
get_childrens(self)Return all children components, recursive
get_context(self)Context used as first arg in all Druid events
get_druid(self, template, nodes)Get Druid instance for inner component creation.
get_input_priority(self)Return component input priority
get_name(self)Return component name
get_node(self, node_or_name)Get component node by name.
get_parent_component(self)Return the parent component if exist
get_parent_name(self)Return parent component name
get_template(self)Get current component template name.
get_uid(self)Return component UID.
reset_input_priority(self)Reset component input priority to default value
set_input_enabled(self, state)Set component input state.
set_input_priority(self, value, is_temporary)Set component input priority
set_nodes(self, nodes)Set current component nodes.
set_style(self, druid_style)Set current component style table.
set_template(self, template)Set component template name.
- -
-
- - -

Functions

- -
-
- - get_childrens(self) -
-
- Return all children components, recursive - - -

Parameters:

- - -

Returns:

-
    - - table - Array of childrens if the Druid component instance -
- - - - -
-
- - get_context(self) -
-
- Context used as first arg in all Druid events Context is usually self of gui_script. - - -

Parameters:

- - -

Returns:

-
    - - table - BaseComponent context -
- - - - -
-
- - get_druid(self, template, nodes) -
-
- Get Druid instance for inner component creation. - - -

Parameters:

-
    -
  • self - BaseComponent - BaseComponent -
  • -
  • template - string or nil - The template name -
  • -
  • nodes - table or nil - The nodes table -
  • -
- -

Returns:

-
    - - DruidInstance - Druid instance with component context -
- - - - -
-
- - get_input_priority(self) -
-
- Return component input priority - - -

Parameters:

- - -

Returns:

-
    - - number - The component input priority -
- - - - -
-
- - get_name(self) -
-
- Return component name - - -

Parameters:

- - -

Returns:

-
    - - string - The component name -
- - - - -
-
- - get_node(self, node_or_name) -
-
- Get component node by name. -

If component has nodes, node_or_name should be string - It autopick node by template name or from nodes by gui.clone_tree - if they was setup via component:set_nodes, component:set_template. - If node is not found, the exception will fired - - -

Parameters:

-
    -
  • self - BaseComponent - BaseComponent -
  • -
  • node_or_name - string or node - Node name or node itself -
  • -
- -

Returns:

-
    - - node - Gui node -
- - - - -
-
- - get_parent_component(self) -
-
- Return the parent component if exist - - -

Parameters:

- - -

Returns:

-
    - - BaseComponent or nil - The druid component instance or nil -
- - - - -
-
- - get_parent_name(self) -
-
- Return parent component name - - -

Parameters:

- - -

Returns:

-
    - - string or nil - The parent component name if exist or bil -
- - - - -
-
- - get_template(self) -
-
- Get current component template name. - - -

Parameters:

- - -

Returns:

-
    - - string - Component full template name -
- - - - -
-
- - get_uid(self) -
-
- Return component UID. -

UID generated in component creation order. - - -

Parameters:

- - -

Returns:

-
    - - number - The component uid -
- - - - -
-
- - reset_input_priority(self) -
-
- Reset component input priority to default value - - -

Parameters:

- - -

Returns:

-
    - - number - The component input priority -
- - - - -
-
- - set_input_enabled(self, state) -
-
- Set component input state. By default it enabled -

If input is disabled, the component will not receive input events - - -

Parameters:

-
    -
  • self - BaseComponent - BaseComponent -
  • -
  • state - boolean or nil - The component input state -
  • -
- -

Returns:

-
    - - BaseComponent - BaseComponent itself -
- - - - -
-
- - set_input_priority(self, value, is_temporary) -
-
- Set component input priority Default value: 10 - - -

Parameters:

-
    -
  • self - BaseComponent - BaseComponent -
  • -
  • value - number - The new input priority value -
  • -
  • is_temporary - boolean or nil - If true, the reset input priority will return to previous value -
  • -
- -

Returns:

-
    - - number - The component input priority -
- - - - -
-
- - set_nodes(self, nodes) -
-
- Set current component nodes. - Use if your component nodes was cloned with `gui.clone_tree` and you got the node tree. - - -

Parameters:

-
    -
  • self - BaseComponent - BaseComponent -
  • -
  • nodes - table - BaseComponent nodes table -
  • -
- -

Returns:

-
    - - BaseComponent - BaseComponent -
- - - -

Usage:

-
    -
    local nodes = gui.clone_tree(self.prefab)
    -... In your component:
    -self:set_nodes(nodes)
    -
- -
-
- - set_style(self, druid_style) -
-
- Set current component style table. -

Invoke `on_style_change` on component, if exist. Component should handle - their style changing and store all style params - - -

Parameters:

-
    -
  • self - BaseComponent - BaseComponent -
  • -
  • druid_style - table or nil - Druid style module -
  • -
- -

Returns:

-
    - - BaseComponent - BaseComponent -
- - - - -
-
- - set_template(self, template) -
-
- Set component template name. -

Use on all your custom components with GUI layouts used as templates. - It will check parent template name to build full template name in self:get_node() - - -

Parameters:

-
    -
  • self - BaseComponent - BaseComponent -
  • -
  • template - string - BaseComponent template name -
  • -
- -

Returns:

-
    - - BaseComponent - BaseComponent -
- - - - -
-
- - -
-
-
-generated by LDoc TESTING -Last updated 2015-01-01 12:00:00 -
-
- - diff --git a/docs/modules/Blocker.html b/docs/modules/Blocker.html deleted file mode 100644 index c3ec691..0000000 --- a/docs/modules/Blocker.html +++ /dev/null @@ -1,233 +0,0 @@ - - - - - Defold Druid UI Framework - - - - -
- -
- -
-
-
- - -
- - - - - - -
- -

Module Blocker

-

Component to consume input in special zone defined by GUI node.

-

- # Overview # -

# Notes # -

Blocker consume input if `gui.pick_node` works on it. -

• Blocker inheritance BaseComponent, you can use all of its methods in addition to those described here. -

• Blocker initial enabled state is `gui.is_enabled(node, true)` -

• The Blocker node should be enabled to capture the input

-

Usage:

-
    -
    local node = gui.get_node("blocker_node")
    -local blocker = self.druid:new_blocker(node)
    -
    -
- - -

Functions

- - - - - - - - - - - - - -
init(self, node)The Blocker constructor
is_enabled(self)Return blocker enabled state
set_enabled(self, state)Set enabled blocker component state.
-

Fields

- - - - - -
nodeBlocker node
- -
-
- - -

Functions

- -
-
- - init(self, node) -
-
- The Blocker constructor - - -

Parameters:

-
    -
  • self - Blocker - Blocker -
  • -
  • node - node - Gui node -
  • -
- - - - - -
-
- - is_enabled(self) -
-
- Return blocker enabled state - - -

Parameters:

- - -

Returns:

-
    - - boolean - @True, if blocker is enabled -
- - - - -
-
- - set_enabled(self, state) -
-
- Set enabled blocker component state. -

Don't change node enabled state itself. - - -

Parameters:

-
    -
  • self - Blocker - Blocker -
  • -
  • state - boolean or nil - Enabled state -
  • -
- - - - - -
-
-

Fields

- -
-
- - node -
-
- Blocker node - - -
    -
  • node - node - -
  • -
- - - - - -
-
- - -
-
-
-generated by LDoc TESTING -Last updated 2015-01-01 12:00:00 -
-
- - diff --git a/docs/modules/Button.html b/docs/modules/Button.html deleted file mode 100644 index 6bcc4cd..0000000 --- a/docs/modules/Button.html +++ /dev/null @@ -1,880 +0,0 @@ - - - - - Defold Druid UI Framework - - - - -
- -
- -
-
-
- - -
- - - - - - -
- -

Module Button

-

Druid Component for Handling User Click Interactions: Click, Long Click, Double Click, and More.

-

-

# Overview # -

This component provides a versatile solution for handling user click interactions. - It allows you to make any GUI node clickable and define various callbacks for different types of clicks. -

# Notes # -

• The click callback will not trigger if the cursor moves outside the node's - area between the pressed and released states. -

• If a button has a double click event subscriber and the double click event is triggered, - the regular click callback will not be triggered. -

• Buttons can be triggered using a keyboard key by calling the button:set_key_trigger method. -

• To animate a small icon on a big button panel, you can use an animation node. - The trigger node name should be set as "big panel," and the animation node should be set as "small icon." -

Example Link

-

Usage:

-
    -
    local function on_button_click(self, args, button)
    -    print("Button has clicked with params: " .. args)
    -    print("Also the button component is passed in callback params")
    -end
    -
    -local custom_args = "Any variable to pass inside callback"
    -local button = self.druid:new_button("button_name", on_button_click, custom_args)
    -
    -
- - -

Functions

- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -
get_key_trigger(self)Get current key name to trigger this button.
init(self, node, callback, custom_args, anim_node)The Button constructor
is_enabled(self)Get button enabled state.
set_check_function(self, check_function, failure_callback)Set function for additional check for button click availability
set_click_zone(self, zone)Set additional button click area.
set_enabled(self, state)Set button enabled state.
set_key_trigger(self, key)Set key name to trigger this button by keyboard.
set_web_user_interaction(self, is_web_mode)Set Button mode to work inside user HTML5 interaction event.
-

Tables

- - - - - -
styleComponent style params.
-

Fields

- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -
anim_nodeButton animation node.
click_zoneAdditional button click area, defined by another GUI node
hoverThe Hover: Button Hover component
nodeButton trigger node
node_idThe GUI node id from button node
on_clickThe DruidEvent: Event on successful release action over button.
on_click_outsideThe DruidEvent: Event calls if click event was outside of button.
on_double_clickThe DruidEvent: Event on double tap action over button.
on_hold_callbackThe DruidEvent: Event calls every frame before on_long_click event.
on_long_clickThe DruidEvent: Event on long tap action over button.
on_pressedThe DruidEvent: Event triggered if button was pressed by user.
on_repeated_clickThe DruidEvent: Event on repeated action over button.
paramsCustom args for any Button event.
- -
-
- - -

Functions

- -
-
- - get_key_trigger(self) -
-
- Get current key name to trigger this button. - - -

Parameters:

-
    -
  • self - Button - -
  • -
- -

Returns:

-
    - - hash - The action_id of the input key -
- - - -

Usage:

-
    -
    local key_hash = button:get_key_trigger()
    -
- -
-
- - init(self, node, callback, custom_args, anim_node) -
-
- The Button constructor - - -

Parameters:

-
    -
  • self - Button - Button -
  • -
  • node - string or node - The node_id or gui.get_node(node_id) -
  • -
  • callback - function - On click button callback -
  • -
  • custom_args - any or nil - Button events custom arguments -
  • -
  • anim_node - string, node or nil - Node to animate instead of trigger node. -
  • -
- - - - - -
-
- - is_enabled(self) -
-
- Get button enabled state. -

By default all Buttons is enabled on creating. - - -

Parameters:

-
    -
  • self - Button - Button -
  • -
- -

Returns:

-
    - - boolean - @True, if button is enabled now, False overwise -
- - - -

Usage:

-
    -
    local is_enabled = button:is_enabled()
    -
- -
-
- - set_check_function(self, check_function, failure_callback) -
-
- Set function for additional check for button click availability - - -

Parameters:

-
    -
  • self - Button - -
  • -
  • check_function - function or nil - Should return true or false. If true - button can be pressed. -
  • -
  • failure_callback - function or nil - Function will be called on button click, if check function return false -
  • -
- -

Returns:

-
    - - Button - Current button instance -
- - - - -
-
- - set_click_zone(self, zone) -
-
- Set additional button click area. - Useful to restrict click outside out stencil node or scrollable content. -

This functions calls automatically if you don't disable it in game.project: druid.no_stencil_check - - -

Parameters:

- - -

Returns:

-
    - - Button - Current button instance -
- - - -

Usage:

-
    -
    button:set_click_zone("stencil_node")
    -
- -
-
- - set_enabled(self, state) -
-
- Set button enabled state. - The style.on_set_enabled will be triggered. - Disabled button is not clickable. - - -

Parameters:

-
    -
  • self - Button - Button -
  • -
  • state - boolean or nil - Enabled state -
  • -
- -

Returns:

-
    - - Button - Current button instance -
- - - -

Usage:

-
    -
    button:set_enabled(false)
    -button:set_enabled(true)
    -
- -
-
- - set_key_trigger(self, key) -
-
- Set key name to trigger this button by keyboard. - - -

Parameters:

-
    -
  • self - Button - Button -
  • -
  • key - hash or string - The action_id of the input key -
  • -
- -

Returns:

-
    - - Button - Current button instance -
- - - -

Usage:

-
    -
    button:set_key_trigger("key_space")
    -
- -
-
- - set_web_user_interaction(self, is_web_mode) -
-
- Set Button mode to work inside user HTML5 interaction event. -

It's required to make protected things like copy & paste text, show mobile keyboard, etc - The HTML5 button's doesn't call any events except on_click event. -

If the game is not HTML, html mode will be not enabled - - -

Parameters:

-
    -
  • self - Button - -
  • -
  • is_web_mode - boolean or nil - If true - button will be called inside html5 callback -
  • -
- -

Returns:

-
    - - Button - Current button instance -
- - - -

Usage:

-
    -
    button:set_web_user_interaction(true)
    -
- -
-
-

Tables

- -
-
- - style -
-
- Component style params. - You can override this component styles params in Druid styles table - or create your own style - - -

Fields:

-
    -
  • LONGTAP_TIME - number or nil - Minimum time to trigger on_hold_callback. Default: 0.4 -
  • -
  • AUTOHOLD_TRIGGER - number or nil - Maximum hold time to trigger button release while holding. Default: 0.8 -
  • -
  • DOUBLETAP_TIME - number or nil - Time between double taps. Default: 0.4 -
  • -
  • on_click - function - function(self, node) -
  • -
  • on_click_disabled - function - function(self, node) -
  • -
  • on_hover - function - function(self, node, hover_state) -
  • -
  • on_mouse_hover - function - function(self, node, hover_state) -
  • -
  • on_set_enabled - function - function(self, node, enabled_state) -
  • -
- - - - - -
-
-

Fields

- -
-
- - anim_node -
-
- Button animation node. - In default case equals to clickable node. -

Usecase: You have the big clickable panel, but want to animate only one small icon on it. - - -

    -
  • anim_node - node or nil - Default node -
  • -
- - - - - -
-
- - click_zone -
-
- Additional button click area, defined by another GUI node - - -
    -
  • click_zone - node or nil - -
  • -
- - - - - -
-
- - hover -
-
- The Hover: Button Hover component - - -
    -
  • hover - Hover - Hover -
  • -
- - - - - -
-
- - node -
-
- Button trigger node - - -
    -
  • node - node - -
  • -
- - - - - -
-
- - node_id -
-
- The GUI node id from button node - - -
    -
  • node_id - hash - -
  • -
- - - - - -
-
- - on_click -
-
- The DruidEvent: Event on successful release action over button. - - - - - - - -

Usage:

-
    -
    -- Custom args passed in Button constructor
    -button.on_click:subscribe(function(self, custom_args, button_instance)
    -    print("On button click!")
    -end)
    -
- -
-
- - on_click_outside -
-
- The DruidEvent: Event calls if click event was outside of button. -

This event will be triggered for each button what was not clicked on user click action -

Usecase: Hide the popup when click outside - - -

    -
  • on_click_outside - DruidEvent - DruidEvent -
  • -
- - - - -

Usage:

-
    -
    -- Custom args passed in Button constructor
    -button.on_click_outside:subscribe(function(self, custom_args, button_instance)
    -    print("On click Button outside!")
    -end)
    -
- -
-
- - on_double_click -
-
- The DruidEvent: Event on double tap action over button. -

If secondary click was too fast after previous one, the double - click will be called instead usual click (if on_double_click subscriber exists) - - -

- - - - -

Usage:

-
    -
    -- Custom args passed in Button constructor
    -button.on_double_click:subscribe(function(self, custom_args, button_instance, click_amount)
    -    print("On double Button click!")
    -end)
    -
- -
-
- - on_hold_callback -
-
- The DruidEvent: Event calls every frame before on_long_click event. -

If long_click subscriber exists, the on_hold_callback will be called before long_click trigger. -

Usecase: Animate button progress of long tap - - -

    -
  • on_hold_callback - DruidEvent - DruidEvent -
  • -
- - - - -

Usage:

-
    -
    -- Custom args passed in Button constructor
    -button.on_double_click:subscribe(function(self, custom_args, button_instance, time)
    -    print("On hold Button callback!")
    -end)
    -
- -
-
- - on_long_click -
-
- The DruidEvent: Event on long tap action over button. -

This callback will be triggered if user pressed the button and hold the some amount of time. - The amount of time picked from button style param: LONGTAP_TIME - - -

- - - - -

Usage:

-
    -
    -- Custom args passed in Button constructor
    -button.on_long_click:subscribe(function(self, custom_args, button_instance, hold_time)
    -    print("On long Button click!")
    -end)
    -
- -
-
- - on_pressed -
-
- The DruidEvent: Event triggered if button was pressed by user. - - - - - - - -

Usage:

-
    -
    -- Custom args passed in Button constructor
    -button.on_pressed:subscribe(function(self, custom_args, button_instance)
    -    print("On Button pressed!")
    -end)
    -
- -
-
- - on_repeated_click -
-
- The DruidEvent: Event on repeated action over button. -

This callback will be triggered if user hold the button. The repeat rate pick from `input.repeat_interval` in game.project - - -

    -
  • on_repeated_click - DruidEvent - DruidEvent -
  • -
- - - - -

Usage:

-
    -
    -- Custom args passed in Button constructor
    -button.on_repeated_click:subscribe(function(self, custom_args, button_instance, click_count)
    -    print("On repeated Button click!")
    -end)
    -
- -
-
- - params -
-
- Custom args for any Button event. Setup in Button constructor - - -
    -
  • params - any - -
  • -
- - - - - -
-
- - -
-
-
-generated by LDoc TESTING -Last updated 2015-01-01 12:00:00 -
-
- - diff --git a/docs/modules/Checkbox.html b/docs/modules/Checkbox.html deleted file mode 100644 index fd0aef1..0000000 --- a/docs/modules/Checkbox.html +++ /dev/null @@ -1,350 +0,0 @@ - - - - - Defold Druid UI Framework - - - - -
- -
- -
-
-
- - -
- - - - - - -
- -

Module Checkbox

-

Druid checkbox component

-

Example Link

- - -

Functions

- - - - - - - - - - - - - -
get_state(self)Return checkbox state
init(self, node, callback, click_node, initial_state)The Checkbox constructor
set_state(self, state, is_silent, is_instant)Set checkbox state
-

Tables

- - - - - -
styleComponent style params.
-

Fields

- - - - - - - - - - - - - - - - - -
buttonButton component from click_node
click_nodeButton trigger node
nodeVisual node
on_change_stateOn change state callback(self, state)
- -
-
- - -

Functions

- -
-
- - get_state(self) -
-
- Return checkbox state - - -

Parameters:

- - -

Returns:

-
    - - boolean - Checkbox state -
- - - - -
-
- - init(self, node, callback, click_node, initial_state) -
-
- The Checkbox constructor - - -

Parameters:

-
    -
  • self - Checkbox - Checkbox -
  • -
  • node - node - Gui node -
  • -
  • callback - function - Checkbox callback -
  • -
  • click_node - node or nil - Trigger node, by default equals to node. Default: node -
  • -
  • initial_state - boolean or nil - The initial state of checkbox, default - false -
  • -
- - - - - -
-
- - set_state(self, state, is_silent, is_instant) -
-
- Set checkbox state - - -

Parameters:

-
    -
  • self - Checkbox - Checkbox -
  • -
  • state - boolean or nil - Checkbox state -
  • -
  • is_silent - boolean or nil - Don't trigger on_change_state if true -
  • -
  • is_instant - boolean or nil - If instant checkbox change -
  • -
- - - - - -
-
-

Tables

- -
-
- - style -
-
- Component style params. - You can override this component styles params in druid styles table - or create your own style - - -

Fields:

-
    -
  • on_change_state - function - (self, node, state) -
  • -
- - - - - -
-
-

Fields

- -
-
- - button -
-
- Button component from click_node - - -
    -
  • button - Button - Button -
  • -
- - - - - -
-
- - click_node -
-
- Button trigger node - - -
    -
  • click_node - node or nil - -
  • -
- - - - - -
-
- - node -
-
- Visual node - - -
    -
  • node - node - -
  • -
- - - - - -
-
- - on_change_state -
-
- On change state callback(self, state) - - - - - - - - -
-
- - -
-
-
-generated by LDoc TESTING -Last updated 2015-01-01 12:00:00 -
-
- - diff --git a/docs/modules/CheckboxGroup.html b/docs/modules/CheckboxGroup.html deleted file mode 100644 index 5ff8ec1..0000000 --- a/docs/modules/CheckboxGroup.html +++ /dev/null @@ -1,259 +0,0 @@ - - - - - Defold Druid UI Framework - - - - -
- -
- -
-
-
- - -
- - - - - - -
- -

Module CheckboxGroup

-

Checkbox group module

-

Example Link

- - -

Functions

- - - - - - - - - - - - - -
get_state(self)Return checkbox group state
init(self, nodes, callback, click_nodes)The CheckboxGroup constructor
set_state(self, indexes, is_instant)Set checkbox group state
-

Fields

- - - - - - - - - -
checkboxesArray of checkbox components
on_checkbox_clickOn any checkbox click callback(self, index)
- -
-
- - -

Functions

- -
-
- - get_state(self) -
-
- Return checkbox group state - - -

Parameters:

- - -

Returns:

-
    - - boolean[] - Array if checkboxes state -
- - - - -
-
- - init(self, nodes, callback, click_nodes) -
-
- The CheckboxGroup constructor - - -

Parameters:

-
    -
  • self - CheckboxGroup - CheckboxGroup -
  • -
  • nodes - node[] - Array of gui node -
  • -
  • callback - function - Checkbox callback -
  • -
  • click_nodes - node[] or nil - Array of trigger nodes, by default equals to nodes -
  • -
- - - - - -
-
- - set_state(self, indexes, is_instant) -
-
- Set checkbox group state - - -

Parameters:

-
    -
  • self - CheckboxGroup - CheckboxGroup -
  • -
  • indexes - boolean[] - Array of checkbox state -
  • -
  • is_instant - boolean or nil - If instant state change -
  • -
- - - - - -
-
-

Fields

- -
-
- - checkboxes -
-
- Array of checkbox components - - - - - - - - -
-
- - on_checkbox_click -
-
- On any checkbox click callback(self, index) - - -
    -
  • on_checkbox_click - DruidEvent - DruidEvent -
  • -
- - - - - -
-
- - -
-
-
-generated by LDoc TESTING -Last updated 2015-01-01 12:00:00 -
-
- - diff --git a/docs/modules/DataList.html b/docs/modules/DataList.html deleted file mode 100644 index 680d3ce..0000000 --- a/docs/modules/DataList.html +++ /dev/null @@ -1,712 +0,0 @@ - - - - - Defold Druid UI Framework - - - - -
- -
- -
-
-
- - -
- - - - - - -
- -

Module DataList

-

Component to manage data for huge dataset in scroll.

-

- It requires Druid Scroll and Druid Grid (Static or Dynamic) components -

Example Link

- - -

Functions

- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -
add(self, data, index, shift_policy)Add element to DataList.
clear(self)Clear the DataList and refresh visuals
get_created_components(self)Return all currenly created components in DataList
get_created_nodes(self)Return all currenly created nodes in DataList
get_data(self)Return current data from DataList component
get_index(self, data)Return index for data value
init(self, scroll, grid, create_function)The DataList constructor
on_remove(self)Druid System on_remove function
remove(self, index, shift_policy)Remove element from DataList.
remove_by_data(self, data, shift_policy)Remove element from DataList by data value.
scroll_to_index(self, index)Instant scroll to element with passed index
set_data(self, data)Set new data set for DataList component
set_use_cache(self, is_use_cache)Set refresh function for DataList component
-

Fields

- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -
gridThe Druid Grid component
last_indexThe current last index of visual elements
on_element_addOn DataList visual element created Event callback(self, index, node, instance)
on_element_removeOn DataList visual element created Event callback(self, index)
on_scroll_progress_changeEvent triggered when scroll progress is changed; event(self, progress_value)
scrollThe Druid scroll component
scroll_progressThe current progress of scroll posititon
top_indexThe current top index of visual elements
- -
-
- - -

Functions

- -
-
- - add(self, data, index, shift_policy) -
-
- Add element to DataList. Currenly untested - - -

Parameters:

-
    -
  • self - DataList - DataList -
  • -
  • data - table - -
  • -
  • index - number or nil - -
  • -
  • shift_policy - number or nil - The constant from const.SHIFT.* -
  • -
- - - - - -
-
- - clear(self) -
-
- Clear the DataList and refresh visuals - - -

Parameters:

- - - - - - -
-
- - get_created_components(self) -
-
- Return all currenly created components in DataList - - -

Parameters:

- - -

Returns:

-
    - - druid.base_component[] - List of created nodes -
- - - - -
-
- - get_created_nodes(self) -
-
- Return all currenly created nodes in DataList - - -

Parameters:

- - -

Returns:

-
    - - node[] - List of created nodes -
- - - - -
-
- - get_data(self) -
-
- Return current data from DataList component - - -

Parameters:

- - -

Returns:

-
    - - table - The current data array -
- - - - -
-
- - get_index(self, data) -
-
- Return index for data value - - -

Parameters:

- - - - - - -
-
- - init(self, scroll, grid, create_function) -
-
- The DataList constructor - - -

Parameters:

-
    -
  • self - DataList - DataList -
  • -
  • scroll - Scroll - The Scroll instance for Data List component -
  • -
  • grid - StaticGrid - The StaticGrid or DynamicGrid instance for Data List component -
  • -
  • create_function - function - The create function callback(self, data, index, data_list). Function should return (node, [component]) -
  • -
- - - - - -
-
- - on_remove(self) -
-
- Druid System on_remove function - - -

Parameters:

- - - - - - -
-
- - remove(self, index, shift_policy) -
-
- Remove element from DataList. Currenly untested - - -

Parameters:

-
    -
  • self - DataList - DataList -
  • -
  • index - number or nil - -
  • -
  • shift_policy - number or nil - The constant from const.SHIFT.* -
  • -
- - - - - -
-
- - remove_by_data(self, data, shift_policy) -
-
- Remove element from DataList by data value. Currenly untested - - -

Parameters:

-
    -
  • self - DataList - DataList -
  • -
  • data - table - -
  • -
  • shift_policy - number or nil - The constant from const.SHIFT.* -
  • -
- - - - - -
-
- - scroll_to_index(self, index) -
-
- Instant scroll to element with passed index - - -

Parameters:

-
    -
  • self - DataList - DataList -
  • -
  • index - number - -
  • -
- - - - - -
-
- - set_data(self, data) -
-
- Set new data set for DataList component - - -

Parameters:

-
    -
  • self - DataList - DataList -
  • -
  • data - table - The new data array -
  • -
- -

Returns:

-
    - - druid.data_list - Current DataList instance -
- - - - -
-
- - set_use_cache(self, is_use_cache) -
-
- Set refresh function for DataList component - - -

Parameters:

-
    -
  • self - DataList - DataList -
  • -
  • is_use_cache - boolean - Use cache version of DataList. Requires make setup of components in on_element_add callback and clean in on_element_remove -
  • -
- -

Returns:

-
    - - druid.data_list - Current DataList instance -
- - - - -
-
-

Fields

- -
-
- - grid -
-
- The Druid Grid component - - - - - - - - -
-
- - last_index -
-
- The current last index of visual elements - - -
    -
  • last_index - number - -
  • -
- - - - - -
-
- - on_element_add -
-
- On DataList visual element created Event callback(self, index, node, instance) - - - - - - - - -
-
- - on_element_remove -
-
- On DataList visual element created Event callback(self, index) - - -
    -
  • on_element_remove - DruidEvent - DruidEvent -
  • -
- - - - - -
-
- - on_scroll_progress_change -
-
- Event triggered when scroll progress is changed; event(self, progress_value) - - -
    -
  • on_scroll_progress_change - DruidEvent - DruidEvent -
  • -
- - - - - -
-
- - scroll -
-
- The Druid scroll component - - -
    -
  • scroll - Scroll - Scroll -
  • -
- - - - - -
-
- - scroll_progress -
-
- The current progress of scroll posititon - - -
    -
  • scroll_progress - number - -
  • -
- - - - - -
-
- - top_index -
-
- The current top index of visual elements - - -
    -
  • top_index - number - -
  • -
- - - - - -
-
- - -
-
-
-generated by LDoc TESTING -Last updated 2015-01-01 12:00:00 -
-
- - diff --git a/docs/modules/Drag.html b/docs/modules/Drag.html deleted file mode 100644 index 51a7c36..0000000 --- a/docs/modules/Drag.html +++ /dev/null @@ -1,633 +0,0 @@ - - - - - Defold Druid UI Framework - - - - -
- -
- -
-
-
- - -
- - - - - - -
- -

Module Drag

-

Component to handle drag action on node.

-

- Drag have correct handling for multitouch and swap - touched while dragging. Drag will be processed even - the cursor is outside of node, if drag is already started -

Example Link

- - -

Functions

- - - - - - - - - - - - - - - - - -
init(self, node, on_drag_callback)The Drag constructor
is_enabled(self)Check if Drag component is enabled
set_click_zone(self, node)Strict drag click area.
set_enabled(self, is_enabled)Set Drag input enabled or disabled
-

Tables

- - - - - -
styleComponent style params.
-

Fields

- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -
can_xIs drag component process vertical dragging.
can_yIs drag component process horizontal.
is_dragIs component now dragging
is_touchIs component now touching
nodeDrag node
on_dragon drag progress callback(self, dx, dy, total_x, total_y, touch)
on_drag_endEvent on drag end callback(self, total_x, total_y, touch)
on_drag_startEvent on drag start callback(self, touch)
on_touch_endEvent on touch end callback(self)
on_touch_startEvent on touch start callback(self)
screen_xCurrent touch x screen position
screen_yCurrent touch y screen position
touch_start_posTouch start position
xCurrent touch x position
yCurrent touch y position
- -
-
- - -

Functions

- -
-
- - init(self, node, on_drag_callback) -
-
- The Drag constructor - - -

Parameters:

-
    -
  • self - Drag - Drag -
  • -
  • node - node - GUI node to detect dragging -
  • -
  • on_drag_callback - function - Callback for on_drag_event(self, dx, dy) -
  • -
- - - - - -
-
- - is_enabled(self) -
-
- Check if Drag component is enabled - - -

Parameters:

-
    -
  • self - Drag - Drag -
  • -
- -

Returns:

-
    - - boolean - -
- - - - -
-
- - set_click_zone(self, node) -
-
- Strict drag click area. Useful for - restrict events outside stencil node - - -

Parameters:

- - - - - - -
-
- - set_enabled(self, is_enabled) -
-
- Set Drag input enabled or disabled - - -

Parameters:

-
    -
  • self - Drag - Drag -
  • -
  • is_enabled - boolean or nil - -
  • -
- - - - - -
-
-

Tables

- -
-
- - style -
-
- Component style params. - You can override this component styles params in druid styles table - or create your own style - - -

Fields:

-
    -
  • DRAG_DEADZONE - number or nil - Distance in pixels to start dragging. Default: 10 -
  • -
  • NO_USE_SCREEN_KOEF - boolean or nil - If screen aspect ratio affects on drag values. Default: false -
  • -
- - - - - -
-
-

Fields

- -
-
- - can_x -
-
- Is drag component process vertical dragging. Default - true - - -
    -
  • can_x - boolean - -
  • -
- - - - - -
-
- - can_y -
-
- Is drag component process horizontal. Default - true - - -
    -
  • can_y - boolean - -
  • -
- - - - - -
-
- - is_drag -
-
- Is component now dragging - - -
    -
  • is_drag - boolean - -
  • -
- - - - - -
-
- - is_touch -
-
- Is component now touching - - -
    -
  • is_touch - boolean - -
  • -
- - - - - -
-
- - node -
-
- Drag node - - -
    -
  • node - node - -
  • -
- - - - - -
-
- - on_drag -
-
- on drag progress callback(self, dx, dy, total_x, total_y, touch) - - - - - - - - -
-
- - on_drag_end -
-
- Event on drag end callback(self, total_x, total_y, touch) - - - - - - - - -
-
- - on_drag_start -
-
- Event on drag start callback(self, touch) - - - - - - - - -
-
- - on_touch_end -
-
- Event on touch end callback(self) - - - - - - - - -
-
- - on_touch_start -
-
- Event on touch start callback(self) - - - - - - - - -
-
- - screen_x -
-
- Current touch x screen position - - -
    -
  • screen_x - number - -
  • -
- - - - - -
-
- - screen_y -
-
- Current touch y screen position - - -
    -
  • screen_y - number - -
  • -
- - - - - -
-
- - touch_start_pos -
-
- Touch start position - - -
    -
  • touch_start_pos - vector3 - -
  • -
- - - - - -
-
- - x -
-
- Current touch x position - - -
    -
  • x - number - -
  • -
- - - - - -
-
- - y -
-
- Current touch y position - - -
    -
  • y - number - -
  • -
- - - - - -
-
- - -
-
-
-generated by LDoc TESTING -Last updated 2015-01-01 12:00:00 -
-
- - diff --git a/docs/modules/Druid.html b/docs/modules/Druid.html deleted file mode 100644 index 0af243a..0000000 --- a/docs/modules/Druid.html +++ /dev/null @@ -1,374 +0,0 @@ - - - - - Defold Druid UI Framework - - - - -
- -
- -
-
-
- - -
- - - - - - -
- -

Module Druid

-

Druid UI Component Framework.

-

- # Overview # -

Druid - powerful Defold component UI library. Use basic and extended - Druid components or make your own game-specific components to make - amazing GUI in your games. -

To start using Druid, please refer to the Usage section below. -

# Notes # -

• Each Druid instance maintains the self context from the constructor and passes it to each Druid callback. -

See next: DruidInstance -

-

Usage:

-
    -
    local druid = require("druid.druid")
    -
    -local function on_play(self)
    -    print("Gonna play!")
    -end
    -
    -function init(self)
    -    self.druid = druid.new(self)
    -    self.druid:new_button("button_play", on_play)
    -end
    -
    -function final(self)
    -    self.druid:final()
    -end
    -
    -function update(self, dt)
    -    self.druid:update(dt)
    -end
    -
    -function on_message(self, message_id, message, sender)
    -    self.druid:on_message(message_id, message, sender)
    -end
    -
    -function on_input(self, action_id, action)
    -    return self.druid:on_input(action_id, action)
    -end
    -
    -
- - -

Functions

- - - - - - - - - - - - - - - - - - - - - - - - - - - - - -
druid.new(context, style)Create a new Druid instance for creating GUI components.
druid.on_language_change()Call this function when the game language changes.
druid.on_window_callback(event)Set the window callback to enable on_focus_gain and on_focus_lost functions.
druid.register(name, module)Register a new external Druid component.
druid.set_default_style(style)Set your own default style for all Druid instances.
druid.set_sound_function(callback)Set the Druid sound function to play UI sounds if used.
druid.set_text_function(callback)Set the text function for the LangText component.
- -
-
- - -

Functions

- -
-
- - druid.new(context, style) -
-
- Create a new Druid instance for creating GUI components. - - -

Parameters:

-
    -
  • context - table - The Druid context. Usually, this is the self of the gui_script. It is passed into all Druid callbacks. -
  • -
  • style - table or nil - The Druid style table to override style parameters for this Druid instance. -
  • -
- -

Returns:

-
    - - druid_instance - The Druid instance DruidInstance. -
- - - -

Usage:

-
    -
    local druid = require("druid.druid")
    -
    -function init(self)
    -   self.druid = druid.new(self)
    -end
    -
- -
-
- - druid.on_language_change() -
-
- Call this function when the game language changes. -

This function will translate all current LangText components. - - - - - - -

Usage:

-
    -
    druid.on_language_change()
    -
- -
-
- - druid.on_window_callback(event) -
-
- Set the window callback to enable on_focus_gain and on_focus_lost functions. -

This is used to trigger the on_focus_lost and on_focus_gain functions in Druid components. - - -

Parameters:

-
    -
  • event - string - Event param from window listener -
  • -
- - - - -

Usage:

-
    -
    window.set_listener(function(_, event)
    -   druid.on_window_callback(event)
    -end)
    -
- -
-
- - druid.register(name, module) -
-
- Register a new external Druid component. -

You can register your own components to make new alias: the druid:new_{name} function. - For example, if you want to register a component called "my_component", you can create it using druid:new_my_component(...). - This can be useful if you have your own "basic" components that you don't want to re-create each time. - - -

Parameters:

-
    -
  • name - string - module name -
  • -
  • module - table - lua table with component -
  • -
- - - - -

Usage:

-
    -
    local my_component = require("path.to.my.component")
    -druid.register("my_component", my_component)
    -...
    -local druid = druid.new(self)
    -local component_instance = self.druid:new_my_component(...)
    -
- -
-
- - druid.set_default_style(style) -
-
- Set your own default style for all Druid instances. -

To create your own style file, copy the default style file and make changes to it. - Register the new style before creating your Druid instances. - - -

Parameters:

-
    -
  • style - table - Druid style module -
  • -
- - - - -

Usage:

-
    -
    local my_style = require("path.to.my.style")
    -druid.set_default_style(my_style)
    -
- -
-
- - druid.set_sound_function(callback) -
-
- Set the Druid sound function to play UI sounds if used. -

Set a function to play a sound given a sound_id. This function is used for button clicks to play the "click" sound. - It can also be used to play sounds in your custom components (see the default Druid style file for an example). - - -

Parameters:

-
    -
  • callback - function - Sound play callback -
  • -
- - - - -

Usage:

-
    -
    druid.set_sound_function(function(sound_id)
    -    sound.play(sound_id) -- Replace with your real function
    -end)
    -
- -
-
- - druid.set_text_function(callback) -
-
- Set the text function for the LangText component. -

The Druid locale component will call this function to get translated text. - After setting the text function, all existing locale components will be updated. - - -

Parameters:

-
    -
  • callback - function - Get localized text function -
  • -
- - - - -

Usage:

-
    -
    druid.set_text_function(function(text_id)
    -   return lang_data[text_id] -- Replace with your real function
    -end)
    -
- -
-
- - -
-
-
-generated by LDoc TESTING -Last updated 2015-01-01 12:00:00 -
-
- - diff --git a/docs/modules/DruidEvent.html b/docs/modules/DruidEvent.html deleted file mode 100644 index a761399..0000000 --- a/docs/modules/DruidEvent.html +++ /dev/null @@ -1,399 +0,0 @@ - - - - - Defold Druid UI Framework - - - - -
- -
- -
-
-
- - -
- - - - - - -
- -

Module DruidEvent

-

Druid Event Module -

The Event module provides a simple class for handling callbacks.

-

It is used in many Druid components. -

You can subscribe to an event using the `:subscribe` method and unsubscribe using the `:unsubscribe` method.

- - -

Functions

- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -
clear(self)Clear the all event handlers
create(callback, callback_context)DruidEvent constructor
is_empty(self)Return true, if event not have handler
is_exist(self)Return true, if event have at lease one handler
is_subscribed(self, callback, callback_context)Check is event subscribed.
subscribe(self, callback, callback_context)Subscribe callback on event
trigger(self, ...)Trigger the event and call all subscribed callbacks
unsubscribe(self, callback, callback_context)Unsubscribe callback on event
- -
-
- - -

Functions

- -
-
- - clear(self) -
-
- Clear the all event handlers - - -

Parameters:

- - - - - -

Usage:

-
    -
    button.on_long_click:clear()
    -
- -
-
- - create(callback, callback_context) -
-
- DruidEvent constructor - - -

Parameters:

-
    -
  • callback - function or nil - Subscribe the callback on new event, if callback exist -
  • -
  • callback_context - any or nil - Additional context as first param to callback call -
  • -
- - - - -

Usage:

-
    -
    local Event = require("druid.event")
    -...
    -local event = Event(callback)
    -
- -
-
- - is_empty(self) -
-
- Return true, if event not have handler - - -

Parameters:

- - -

Returns:

-
    - - boolean - True if event not have handlers -
- - - -

Usage:

-
    -
    local is_long_click_handler_not_exists = button.on_long_click:is_empty()
    -
- -
-
- - is_exist(self) -
-
- Return true, if event have at lease one handler - - -

Parameters:

- - -

Returns:

-
    - - boolean - True if event have handlers -
- - - -

Usage:

-
    -
    local is_long_click_handler_exists = button.on_long_click:is_exist()
    -
- -
-
- - is_subscribed(self, callback, callback_context) -
-
- Check is event subscribed. - - -

Parameters:

-
    -
  • self - DruidEvent - DruidEvent -
  • -
  • callback - function - Callback itself -
  • -
  • callback_context - any or nil - Additional context as first param to callback call -
  • -
- -

Returns:

-
    - - boolean, - number|nil @Is event subscribed, return index of callback in event as second param -
- - - - -
-
- - subscribe(self, callback, callback_context) -
-
- Subscribe callback on event - - -

Parameters:

-
    -
  • self - DruidEvent - DruidEvent -
  • -
  • callback - function - Callback itself -
  • -
  • callback_context - any or nil - Additional context as first param to callback call, usually it's self -
  • -
- -

Returns:

-
    - - boolean - True if callback was subscribed -
- - - -

Usage:

-
    -
    local function on_long_callback(self)
    -    print("Long click!")
    -end
    -...
    -local button = self.druid:new_button("button", callback)
    -button.on_long_click:subscribe(on_long_callback, self)
    -
- -
-
- - trigger(self, ...) -
-
- Trigger the event and call all subscribed callbacks - - -

Parameters:

-
    -
  • self - DruidEvent - DruidEvent -
  • -
  • ... - any - All event params -
  • -
- - - - -

Usage:

-
    -
    local Event = require("druid.event")
    -...
    -local event = Event()
    -event:trigger("Param1", "Param2")
    -
- -
-
- - unsubscribe(self, callback, callback_context) -
-
- Unsubscribe callback on event - - -

Parameters:

-
    -
  • self - DruidEvent - DruidEvent -
  • -
  • callback - function - Callback itself -
  • -
  • callback_context - any or nil - Additional context as first param to callback call -
  • -
- - - - -

Usage:

-
    -
    local function on_long_callback(self)
    -    print("Long click!")
    -end
    -...
    -button.on_long_click:unsubscribe(on_long_callback, self)
    -
- -
-
- - -
-
-
-generated by LDoc TESTING -Last updated 2015-01-01 12:00:00 -
-
- - diff --git a/docs/modules/DruidInstance.html b/docs/modules/DruidInstance.html deleted file mode 100644 index afa2ecb..0000000 --- a/docs/modules/DruidInstance.html +++ /dev/null @@ -1,1223 +0,0 @@ - - - - - Defold Druid UI Framework - - - - -
- -
- -
-
-
- - -
- - - - - - -
- -

Module DruidInstance

-

Druid Instance which you use for component creation.

-

-

# Component List # -

For a list of all available components, please refer to the "See Also" section. -

# Notes # -

Please review the following API pages: -

Helper - A useful set of functions for working with GUI nodes, such as centering nodes, get GUI scale ratio, etc -

DruidEvent - The core event system in Druid. Learn how to subscribe to any event in every Druid component. -

BaseComponent - The parent class of all Druid components. You can find all default component methods there. -

# Tech Info # -

• To use Druid, you need to create a Druid instance first. This instance is used to spawn components. -

• When using Druid components, provide the node name as a string argument directly. Avoid calling gui.get_node() before passing it to the component. Because Druid can get nodes from template and cloned gui nodes. -

• All Druid and component methods are called using the colon operator (e.g., self.druid:new_button()).

-

See also:

- -

Usage:

-
    -
    local druid = require("druid.druid")
    -
    -local function close_window(self)
    -    print("Yeah! You closed the game!")
    -end
    -
    -function init(self)
    -    self.druid = druid.new(self)
    -
    -    -- Call all druid instance function with ":" syntax:
    -    local text = self.druid:new_text("text_header", "Hello Druid!")
    -    local button = self.druid:new_button("button_close", close_window)
    -
    -    -- You not need to save component reference if not need it
    -    self.druid:new_back_handler(close_window)
    -end
    -
    -
- - -

Functions

- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -
final(self)Call this in gui_script final function.
new_back_handler(self, callback, params)Create BackHandler component
new_blocker(self, node)Create Blocker component
new_button(self, node, callback, params, anim_node)Create Button component
new_data_list(self, druid_scroll, druid_grid, create_function)Create DataList component
new_drag(self, node, on_drag_callback)Create Drag component
new_dynamic_grid(self, parent_node)Create DynamicGrid component - Deprecated
new_hotkey(self, keys_array, callback, callback_argument)Create Hotkey component
new_hover(self, node, on_hover_callback, on_mouse_hover_callback)Create Hover component
new_input(self, click_node, text_node, keyboard_type)Create Input component
new_lang_text(self, node, locale_id, adjust_type)Create LangText component
new_layout(self, node, mode)Create Layout component
new_progress(self, node, key, init_value)Create Progress component
new_rich_input(self, template, nodes)Create RichInput component.
new_rich_text(self, text_node, value)Create RichText component.
new_scroll(self, view_node, content_node)Create Scroll component
new_slider(self, pin_node, end_pos, callback)Create Slider component
new_static_grid(self, parent_node, item, in_row)Create StaticGrid component
new_swipe(self, node, on_swipe_callback)Create Swipe component
new_text(self, node, value, no_adjust)Create Text component
new_timer(self, node, seconds_from, seconds_to, callback)Create Timer component
on_input(self, action_id, action)Call this in gui_script on_input function.
on_message(self, message_id, message, sender)Call this in gui_script on_message function.
remove(self, component)Remove created component from Druid instance.
set_blacklist(self, blacklist_components)Set blacklist components for input processing.
set_whitelist(self, whitelist_components)Set whitelist components for input processing.
update(self, dt)Call this in gui_script update function.
- -
-
- - -

Functions

- -
-
- - final(self) -
-
- Call this in gui_script final function. - - -

Parameters:

-
    -
  • self - DruidInstance - -
  • -
- - - - - -
-
- - new_back_handler(self, callback, params) -
-
- Create BackHandler component - - -

Parameters:

-
    -
  • self - DruidInstance - -
  • -
  • callback - function or nil - @The callback(self, custom_args) to call on back event -
  • -
  • params - any or nil - Callback argument -
  • -
- -

Returns:

-
    - - BackHandler - BackHandler component -
- - - - -
-
- - new_blocker(self, node) -
-
- Create Blocker component - - -

Parameters:

-
    -
  • self - DruidInstance - -
  • -
  • node - string or node - The node_id or gui.get_node(node_id) -
  • -
- -

Returns:

-
    - - Blocker - Blocker component -
- - - - -
-
- - new_button(self, node, callback, params, anim_node) -
-
- Create Button component - - -

Parameters:

-
    -
  • self - DruidInstance - -
  • -
  • node - string or node - The node_id or gui.get_node(node_id) -
  • -
  • callback - function or nil - Button callback -
  • -
  • params - any or nil - Button callback params -
  • -
  • anim_node - node, string or nil - Button anim node (node, if not provided) -
  • -
- -

Returns:

-
    - - Button - Button component -
- - - - -
-
- - new_data_list(self, druid_scroll, druid_grid, create_function) -
-
- Create DataList component - - -

Parameters:

-
    -
  • self - DruidInstance - -
  • -
  • druid_scroll - Scroll - The Scroll instance for Data List component -
  • -
  • druid_grid - StaticGrid - The StaticGrid or DynamicGrid instance for Data List component -
  • -
  • create_function - function - The create function callback(self, data, index, data_list). Function should return (node, [component]) -
  • -
- -

Returns:

-
    - - DataList - DataList component -
- - - - -
-
- - new_drag(self, node, on_drag_callback) -
-
- Create Drag component - - -

Parameters:

-
    -
  • self - DruidInstance - -
  • -
  • node - string or node - The node_id or gui.get_node(node_id). Will used as user input node. -
  • -
  • on_drag_callback - function or nil - Callback for on_drag_event(self, dx, dy) -
  • -
- -

Returns:

-
    - - Drag - Drag component -
- - - - -
-
- - new_dynamic_grid(self, parent_node) -
-
- Create DynamicGrid component - Deprecated - - -

Parameters:

-
    -
  • self - DruidInstance - -
  • -
  • parent_node - string or node - The node_id or gui.get_node(node_id). Parent of all Grid items. -
  • -
- -

Returns:

-
    - - DynamicGrid - DynamicGrid component -
- - - - -
-
- - new_hotkey(self, keys_array, callback, callback_argument) -
-
- Create Hotkey component - - -

Parameters:

-
    -
  • self - DruidInstance - -
  • -
  • keys_array - string or string[] - Keys for trigger action. Should contains one action key and any amount of modificator keys -
  • -
  • callback - function - The callback function -
  • -
  • callback_argument - any or nil - The argument to pass into the callback function -
  • -
- -

Returns:

-
    - - Hotkey - Hotkey component -
- - - - -
-
- - new_hover(self, node, on_hover_callback, on_mouse_hover_callback) -
-
- Create Hover component - - -

Parameters:

-
    -
  • self - DruidInstance - -
  • -
  • node - string or node - The node_id or gui.get_node(node_id) -
  • -
  • on_hover_callback - function or nil - Hover callback -
  • -
  • on_mouse_hover_callback - function or nil - Mouse hover callback -
  • -
- -

Returns:

-
    - - Hover - Hover component -
- - - - -
-
- - new_input(self, click_node, text_node, keyboard_type) -
-
- Create Input component - - -

Parameters:

-
    -
  • self - DruidInstance - -
  • -
  • click_node - string or node - Button node to enabled input component -
  • -
  • text_node - string, node or druid.text - Text node what will be changed on user input -
  • -
  • keyboard_type - number or nil - Gui keyboard type for input field -
  • -
- -

Returns:

-
    - - Input - Input component -
- - - - -
-
- - new_lang_text(self, node, locale_id, adjust_type) -
-
- Create LangText component - - -

Parameters:

-
    -
  • self - DruidInstance - -
  • -
  • node - string or node - The_node id or gui.get_node(node_id) -
  • -
  • locale_id - string or nil - Default locale id or text from node as default -
  • -
  • adjust_type - string or nil - Adjust type for text node. Default: const.TEXT_ADJUST.DOWNSCALE -
  • -
- -

Returns:

-
    - - LangText - LangText component -
- - - - -
-
- - new_layout(self, node, mode) -
-
- Create Layout component - - -

Parameters:

-
    -
  • self - DruidInstance - -
  • -
  • node - string or node - The_node id or gui.get_node(node_id). -
  • -
  • mode - string - The layout mode -
  • -
- -

Returns:

-
    - - Layout - Layout component -
- - - - -
-
- - new_progress(self, node, key, init_value) -
-
- Create Progress component - - -

Parameters:

-
    -
  • self - DruidInstance - -
  • -
  • node - string or node - Progress bar fill node or node name -
  • -
  • key - string - Progress bar direction: const.SIDE.X or const.SIDE.Y -
  • -
  • init_value - number or nil - Initial value of progress bar. Default: 1 -
  • -
- -

Returns:

-
    - - Progress - Progress component -
- - - - -
-
- - new_rich_input(self, template, nodes) -
-
- Create RichInput component. - As a template please check rich_input.gui layout. - - -

Parameters:

-
    -
  • self - DruidInstance - -
  • -
  • template - string - The template string name -
  • -
  • nodes - table - Nodes table from gui.clone_tree -
  • -
- -

Returns:

-
    - - RichInput - RichInput component -
- - - - -
-
- - new_rich_text(self, text_node, value) -
-
- Create RichText component. - - -

Parameters:

-
    -
  • self - DruidInstance - -
  • -
  • text_node - string or node - The text node to make Rich Text -
  • -
  • value - string or nil - The initial text value. Default will be gui.get_text(text_node) -
  • -
- -

Returns:

-
    - - RichText - RichText component -
- - - - -
-
- - new_scroll(self, view_node, content_node) -
-
- Create Scroll component - - -

Parameters:

-
    -
  • self - DruidInstance - -
  • -
  • view_node - string or node - The node_id or gui.get_node(node_id). Will used as user input node. -
  • -
  • content_node - string or node - The node_id or gui.get_node(node_id). Will used as scrollable node inside view_node. -
  • -
- -

Returns:

-
    - - Scroll - Scroll component -
- - - - -
-
- - new_slider(self, pin_node, end_pos, callback) -
-
- Create Slider component - - -

Parameters:

-
    -
  • self - DruidInstance - -
  • -
  • pin_node - string or node - The_node id or gui.get_node(node_id). -
  • -
  • end_pos - vector3 - The end position of slider -
  • -
  • callback - function or nil - On slider change callback -
  • -
- -

Returns:

-
    - - Slider - Slider component -
- - - - -
-
- - new_static_grid(self, parent_node, item, in_row) -
-
- Create StaticGrid component - - -

Parameters:

-
    -
  • self - DruidInstance - -
  • -
  • parent_node - string or node - The node_id or gui.get_node(node_id). Parent of all Grid items. -
  • -
  • item - string or node - Item prefab. Required to get grid's item size. Can be adjusted separately. -
  • -
  • in_row - number or nil - How many nodes in row can be placed -
  • -
- -

Returns:

-
    - - StaticGrid - StaticGrid component -
- - - - -
-
- - new_swipe(self, node, on_swipe_callback) -
-
- Create Swipe component - - -

Parameters:

-
    -
  • self - DruidInstance - -
  • -
  • node - string or node - The node_id or gui.get_node(node_id). Will used as user input node. -
  • -
  • on_swipe_callback - function or nil - Swipe callback for on_swipe_end event -
  • -
- -

Returns:

-
    - - Swipe - Swipe component -
- - - - -
-
- - new_text(self, node, value, no_adjust) -
-
- Create Text component - - -

Parameters:

-
    -
  • self - DruidInstance - -
  • -
  • node - string or node - The node_id or gui.get_node(node_id) -
  • -
  • value - string or nil - Initial text. Default value is node text from GUI scene. -
  • -
  • no_adjust - boolean or nil - If true, text will be not auto-adjust size -
  • -
- -

Returns:

-
    - - Text - Text component -
- - - - -
-
- - new_timer(self, node, seconds_from, seconds_to, callback) -
-
- Create Timer component - - -

Parameters:

-
    -
  • self - DruidInstance - -
  • -
  • node - string or node - Gui text node -
  • -
  • seconds_from - number - Start timer value in seconds -
  • -
  • seconds_to - number or nil - End timer value in seconds -
  • -
  • callback - function or nil - Function on timer end -
  • -
- -

Returns:

-
    - - Timer - Timer component -
- - - - -
-
- - on_input(self, action_id, action) -
-
- Call this in gui_script on_input function. -

Used for almost all components - - -

Parameters:

-
    -
  • self - DruidInstance - -
  • -
  • action_id - hash - Action_id from on_input -
  • -
  • action - table - Action from on_input -
  • -
- -

Returns:

-
    - - boolean - The boolean value is input was consumed -
- - - - -
-
- - on_message(self, message_id, message, sender) -
-
- Call this in gui_script on_message function. -

Used for special actions. See SPECIFIC_UI_MESSAGES table - - -

Parameters:

-
    -
  • self - DruidInstance - -
  • -
  • message_id - hash - Message_id from on_message -
  • -
  • message - table - Message from on_message -
  • -
  • sender - url - Sender from on_message -
  • -
- - - - - -
-
- - remove(self, component) -
-
- Remove created component from Druid instance. -

Component `on_remove` function will be invoked, if exist. - - -

Parameters:

-
    -
  • self - DruidInstance - -
  • -
  • component - BaseComponent - Component instance -
  • -
- -

Returns:

-
    - - boolean - True if component was removed -
- - - - -
-
- - set_blacklist(self, blacklist_components) -
-
- Set blacklist components for input processing. -

If blacklist is not empty and component contains in this list, - component will be not processed on input step - - -

Parameters:

-
    -
  • self - DruidInstance - DruidInstance -
  • -
  • blacklist_components - table, BaseComponent or nil - The array of component to blacklist -
  • -
- -

Returns:

-
    - - self - DruidInstance -
- - - - -
-
- - set_whitelist(self, whitelist_components) -
-
- Set whitelist components for input processing. -

If whitelist is not empty and component not contains in this list, - component will be not processed on input step - - -

Parameters:

-
    -
  • self - DruidInstance - -
  • -
  • whitelist_components - table, BaseComponent or nil - The array of component to whitelist -
  • -
- -

Returns:

-
    - - self - DruidInstance -
- - - - -
-
- - update(self, dt) -
-
- Call this in gui_script update function. -

Used for: scroll, progress, timer components - - -

Parameters:

-
    -
  • self - DruidInstance - -
  • -
  • dt - number - Delta time -
  • -
- - - - - -
-
- - -
-
-
-generated by LDoc TESTING -Last updated 2015-01-01 12:00:00 -
-
- - diff --git a/docs/modules/DynamicGrid.html b/docs/modules/DynamicGrid.html deleted file mode 100644 index d6e7af6..0000000 --- a/docs/modules/DynamicGrid.html +++ /dev/null @@ -1,788 +0,0 @@ - - - - - Defold Druid UI Framework - - - - -
- -
- -
-
-
- - -
- - - - - - -
- -

Module DynamicGrid

-

Component to handle placing components in row

-

Example Link

- - -

Functions

- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -
_get_side_vector(self, side, is_forward)Return side vector to correct node shifting
add(self, node, index, shift_policy, is_instant)Add new node to the grid
clear(self)Clear grid nodes array.
get_all_pos(self)Return array of all node positions
get_borders(self)Return grid content borders
get_index_by_node(self, node)Return grid index by node
get_offset(self)Return DynamicGrid offset, where DynamicGrid content starts.
get_pos(self, index, node, origin_index)Return pos for grid node index
get_size(self, border)Return grid content size
init(self, parent)The DynamicGrid constructor
remove(self, index, shift_policy, is_instant)Remove the item from the grid.
set_position_function(self, callback)Change set position function for grid nodes.
-

Fields

- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -
borderThe size of item content
first_indexThe first index of node in grid
last_indexThe last index of node in grid
node_sizeItem size
nodesList of all grid elements.
on_add_itemOn item add callback(self, node, index)
on_change_itemsOn item add or remove callback(self, index)
on_clearOn grid clear callback(self)
on_remove_itemOn item remove callback(self, index)
on_update_positionsOn update item positions callback(self)
parentParent gui node
- -
-
- - -

Functions

- -
-
- - _get_side_vector(self, side, is_forward) -
-
- Return side vector to correct node shifting - - -

Parameters:

-
    -
  • self - -
  • -
  • side - -
  • -
  • is_forward - -
  • -
- - - - - -
-
- - add(self, node, index, shift_policy, is_instant) -
-
- Add new node to the grid - - -

Parameters:

-
    -
  • self - DynamicGrid - DynamicGrid -
  • -
  • node - node - Gui node -
  • -
  • index - number or nil - The node position. By default add as last node -
  • -
  • shift_policy - number or nil - How shift nodes, if required. Default: const.SHIFT.RIGHT -
  • -
  • is_instant - boolean or nil - If true, update node positions instantly -
  • -
- - - - - -
-
- - clear(self) -
-
- Clear grid nodes array. GUI nodes will be not deleted! - If you want to delete GUI nodes, use dynamic_grid.nodes array before grid:clear - - -

Parameters:

- - -

Returns:

-
    - - druid.dynamic_grid - Current grid instance -
- - - - -
-
- - get_all_pos(self) -
-
- Return array of all node positions - - -

Parameters:

- - -

Returns:

-
    - - vector3[] - All grid node positions -
- - - - -
-
- - get_borders(self) -
-
- Return grid content borders - - -

Parameters:

- - -

Returns:

-
    - - vector3 - The grid content borders -
- - - - -
-
- - get_index_by_node(self, node) -
-
- Return grid index by node - - -

Parameters:

-
    -
  • self - DynamicGrid - DynamicGrid -
  • -
  • node - node - The gui node in the grid -
  • -
- -

Returns:

-
    - - number - The node index -
- - - - -
-
- - get_offset(self) -
-
- Return DynamicGrid offset, where DynamicGrid content starts. - - -

Parameters:

-
    -
  • self - DynamicGrid - DynamicGrid The DynamicGrid instance -
  • -
- -

Returns:

-
    - - vector3 - The DynamicGrid offset -
- - - - -
-
- - get_pos(self, index, node, origin_index) -
-
- Return pos for grid node index - - -

Parameters:

-
    -
  • self - DynamicGrid - DynamicGrid -
  • -
  • index - number - The grid element index -
  • -
  • node - node - The node to be placed -
  • -
  • origin_index - number or nil - Index of nearby node -
  • -
- -

Returns:

-
    - - vector3 - node position -
- - - - -
-
- - get_size(self, border) -
-
- Return grid content size - - -

Parameters:

-
    -
  • self - DynamicGrid - DynamicGrid -
  • -
  • border - vector3 - -
  • -
- -

Returns:

-
    - - vector3 - The grid content size -
- - - - -
-
- - init(self, parent) -
-
- The DynamicGrid constructor - - -

Parameters:

-
    -
  • self - DynamicGrid - DynamicGrid -
  • -
  • parent - node - The gui node parent, where items will be placed -
  • -
- - - - - -
-
- - remove(self, index, shift_policy, is_instant) -
-
- Remove the item from the grid. Note that gui node will be not deleted - - -

Parameters:

-
    -
  • self - DynamicGrid - DynamicGrid -
  • -
  • index - number - The grid node index to remove -
  • -
  • shift_policy - number or nil - How shift nodes, if required. Default: const.SHIFT.RIGHT -
  • -
  • is_instant - boolean or nil - If true, update node positions instantly -
  • -
- -

Returns:

-
    - - node - The deleted gui node from grid -
- - - - -
-
- - set_position_function(self, callback) -
-
- Change set position function for grid nodes. It will call on - update poses on grid elements. Default: gui.set_position - - -

Parameters:

-
    -
  • self - DynamicGrid - DynamicGrid -
  • -
  • callback - function - Function on node set position -
  • -
- -

Returns:

-
    - - druid.dynamic_grid - Current grid instance -
- - - - -
-
-

Fields

- -
-
- - border -
-
- The size of item content - - -
    -
  • border - vector4 - -
  • -
- - - - - -
-
- - first_index -
-
- The first index of node in grid - - -
    -
  • first_index - number - -
  • -
- - - - - -
-
- - last_index -
-
- The last index of node in grid - - -
    -
  • last_index - number - -
  • -
- - - - - -
-
- - node_size -
-
- Item size - - -
    -
  • node_size - vector3 - -
  • -
- - - - - -
-
- - nodes -
-
- List of all grid elements. Contains from node, pos, size, pivot - - -
    -
  • nodes - node[] - -
  • -
- - - - - -
-
- - on_add_item -
-
- On item add callback(self, node, index) - - - - - - - - -
-
- - on_change_items -
-
- On item add or remove callback(self, index) - - - - - - - - -
-
- - on_clear -
-
- On grid clear callback(self) - - - - - - - - -
-
- - on_remove_item -
-
- On item remove callback(self, index) - - - - - - - - -
-
- - on_update_positions -
-
- On update item positions callback(self) - - -
    -
  • on_update_positions - DruidEvent - DruidEvent -
  • -
- - - - - -
-
- - parent -
-
- Parent gui node - - -
    -
  • parent - node - -
  • -
- - - - - -
-
- - -
-
-
-generated by LDoc TESTING -Last updated 2015-01-01 12:00:00 -
-
- - diff --git a/docs/modules/Helper.html b/docs/modules/Helper.html deleted file mode 100644 index 1bc2ed6..0000000 --- a/docs/modules/Helper.html +++ /dev/null @@ -1,927 +0,0 @@ - - - - - Defold Druid UI Framework - - - - -
- -
- -
-
-
- - -
- - - - - - -
- -

Module Helper

-

Helper module with various usefull GUI functions.

-

-

Usage:

-
    -
    local helper = require("druid.helper")
    -helper.centrate_nodes(0, node_1, node_2)
    -
    -
- - -

Functions

- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -
helper.add_array(target, source)Add all elements from source array to the target array
helper.centrate_nodes(margin, ...)Centerate nodes by x position with margin.
helper.clamp(a, min, max)Clamp value between min and max
helper.contains(t, value)Check if value is in array and return index of it
helper.deepcopy(orig_table)Make a copy table with all nested tables
helper.distance(x1, y1, x2, y2)Calculate distance between two points
helper.get_border(node, offset)Distance from node position to his borders
helper.get_closest_stencil_node(node)Return closest non inverted clipping parent node for given node
helper.get_gui_scale()Get current GUI scale for each side
helper.get_pivot_offset(pivot)Get node offset for given GUI pivot.
helper.get_scaled_size(node)Get node size adjusted by scale
helper.get_scene_scale(node, include_passed_node_scale)Get cumulative parent's node scale
helper.get_screen_aspect_koef()Get current screen stretch multiplier for each side
helper.get_text_metrics_from_node(text_node)Get text metric from GUI node.
helper.insert_with_shift(array, any, index, shift_policy)Add value to array with shift policy
helper.is_mobile()Check if device is native mobile (Android or iOS)
helper.is_multitouch_supported()Check if device is mobile and can support multitouch
helper.is_web()Check if device is HTML5
helper.is_web_mobile()Check if device is HTML5 mobile
helper.lerp(a, b, t)Lerp between two values
helper.remove_with_shift(array, index, shift_policy)Remove value from array with shift policy
helper.round(num, num_decimal_places)Round number to specified decimal places
helper.sign(val)Return sign of value (-1, 0, 1)
helper.step(current, target, step)Move value from current to target value with step amount
helper.table_to_string(t)Simple table to one-line string converter
- -
-
- - -

Functions

- -
-
- - helper.add_array(target, source) -
-
- Add all elements from source array to the target array - - -

Parameters:

-
    -
  • target - any[] - Array to put elements from source -
  • -
  • source - any[] or nil - The source array to get elements from -
  • -
- -

Returns:

-
    - - any[] - The target array -
- - - - -
-
- - helper.centrate_nodes(margin, ...) -
-
- Centerate nodes by x position with margin. -

This functions calculate total width of nodes and set position for each node. - The centrate will be around 0 x position. - - -

Parameters:

-
    -
  • margin - number or nil - Offset between nodes -
  • -
  • ... - Gui nodes -
  • -
- - - - - -
-
- - helper.clamp(a, min, max) -
-
- Clamp value between min and max - - -

Parameters:

-
    -
  • a - number - Value -
  • -
  • min - number - Min value -
  • -
  • max - number - Max value -
  • -
- -

Returns:

-
    - - number - Clamped value -
- - - - -
-
- - helper.contains(t, value) -
-
- Check if value is in array and return index of it - - -

Parameters:

-
    -
  • t - table - Array -
  • -
  • value - Value -
  • -
- -

Returns:

-
    - - number or nil - Index of value or nil -
- - - - -
-
- - helper.deepcopy(orig_table) -
-
- Make a copy table with all nested tables - - -

Parameters:

-
    -
  • orig_table - table - Original table -
  • -
- -

Returns:

-
    - - table - Copy of original table -
- - - - -
-
- - helper.distance(x1, y1, x2, y2) -
-
- Calculate distance between two points - - -

Parameters:

-
    -
  • x1 - number - First point x -
  • -
  • y1 - number - First point y -
  • -
  • x2 - number - Second point x -
  • -
  • y2 - number - Second point y -
  • -
- -

Returns:

-
    - - number - Distance -
- - - - -
-
- - helper.get_border(node, offset) -
-
- Distance from node position to his borders - - -

Parameters:

-
    -
  • node - node - GUI node -
  • -
  • offset - vector3 or nil - Offset from node position. Pass current node position to get non relative border values -
  • -
- -

Returns:

-
    - - vector4 - Vector4 with border values (left, top, right, down) -
- - - - -
-
- - helper.get_closest_stencil_node(node) -
-
- Return closest non inverted clipping parent node for given node - - -

Parameters:

-
    -
  • node - node - GUI node -
  • -
- -

Returns:

-
    - - node or nil - The closest stencil node or nil -
- - - - -
-
- - helper.get_gui_scale() -
-
- Get current GUI scale for each side - - - -

Returns:

-
    -
  1. - number - scale_x
  2. -
  3. - number - scale_y
  4. -
- - - - -
-
- - helper.get_pivot_offset(pivot) -
-
- Get node offset for given GUI pivot. -

Offset shown in [-0.5 .. 0.5] range, where -0.5 is left or bottom, 0.5 is right or top. - - -

Parameters:

-
    -
  • pivot - number - The gui.PIVOT_* constant -
  • -
- -

Returns:

-
    - - vector3 - Vector offset with [-0.5..0.5] values -
- - - - -
-
- - helper.get_scaled_size(node) -
-
- Get node size adjusted by scale - - -

Parameters:

-
    -
  • node - node - GUI node -
  • -
- -

Returns:

-
    - - vector3 - Scaled size -
- - - - -
-
- - helper.get_scene_scale(node, include_passed_node_scale) -
-
- Get cumulative parent's node scale - - -

Parameters:

-
    -
  • node - node - Gui node -
  • -
  • include_passed_node_scale - boolean or nil - True if add current node scale to result -
  • -
- -

Returns:

-
    - - vector3 - The scene node scale -
- - - - -
-
- - helper.get_screen_aspect_koef() -
-
- Get current screen stretch multiplier for each side - - - -

Returns:

-
    -
  1. - number - stretch_x
  2. -
  3. - number - stretch_y
  4. -
- - - - -
-
- - helper.get_text_metrics_from_node(text_node) -
-
- Get text metric from GUI node. - - -

Parameters:

-
    -
  • text_node - node - -
  • -
- -

Returns:

-
    - - GUITextMetrics - -
- - - -

Usage:

-
    -
    type GUITextMetrics = {
    -  width: number,
    -  height: number,
    -  max_ascent: number,
    -  max_descent: number
    -}
    -
- -
-
- - helper.insert_with_shift(array, any, index, shift_policy) -
-
- Add value to array with shift policy Shift policy can be: left, right, no_shift - - -

Parameters:

-
    -
  • array - table - Array -
  • -
  • any - Item to insert -
  • -
  • index - number or nil - Index to insert. If nil, item will be inserted at the end of array -
  • -
  • shift_policy - number or nil - The druid_const.SHIFT.* constant -
  • -
- -

Returns:

-
    - - any - Inserted item -
- - - - -
-
- - helper.is_mobile() -
-
- Check if device is native mobile (Android or iOS) - - - -

Returns:

-
    - - boolean - Is mobile -
- - - - -
-
- - helper.is_multitouch_supported() -
-
- Check if device is mobile and can support multitouch - - - -

Returns:

-
    - - boolean - Is multitouch supported -
- - - - -
-
- - helper.is_web() -
-
- Check if device is HTML5 - - - -

Returns:

-
    - - boolean - Is web -
- - - - -
-
- - helper.is_web_mobile() -
-
- Check if device is HTML5 mobile - - - -

Returns:

-
    - - boolean - Is web mobile -
- - - - -
-
- - helper.lerp(a, b, t) -
-
- Lerp between two values - - -

Parameters:

-
    -
  • a - number - First value -
  • -
  • b - number - Second value -
  • -
  • t - number - Lerp amount -
  • -
- -

Returns:

-
    - - number - Lerped value -
- - - - -
-
- - helper.remove_with_shift(array, index, shift_policy) -
-
- Remove value from array with shift policy Shift policy can be: left, right, no_shift - - -

Parameters:

-
    -
  • array - table - Array -
  • -
  • index - number or nil - Index to remove. If nil, item will be removed from the end of array -
  • -
  • shift_policy - number or nil - The druid_const.SHIFT.* constant -
  • -
- -

Returns:

-
    - - any - Removed item -
- - - - -
-
- - helper.round(num, num_decimal_places) -
-
- Round number to specified decimal places - - -

Parameters:

-
    -
  • num - number - Number -
  • -
  • num_decimal_places - number or nil - Decimal places -
  • -
- -

Returns:

-
    - - number - Rounded number -
- - - - -
-
- - helper.sign(val) -
-
- Return sign of value (-1, 0, 1) - - -

Parameters:

-
    -
  • val - number - Value -
  • -
- -

Returns:

-
    - - number - Sign -
- - - - -
-
- - helper.step(current, target, step) -
-
- Move value from current to target value with step amount - - -

Parameters:

-
    -
  • current - number - Current value -
  • -
  • target - number - Target value -
  • -
  • step - number - Step amount -
  • -
- -

Returns:

-
    - - number - New value -
- - - - -
-
- - helper.table_to_string(t) -
-
- Simple table to one-line string converter - - -

Parameters:

- - -

Returns:

-
    - - string - -
- - - - -
-
- - -
-
-
-generated by LDoc TESTING -Last updated 2015-01-01 12:00:00 -
-
- - diff --git a/docs/modules/Hotkey.html b/docs/modules/Hotkey.html deleted file mode 100644 index 6237aa5..0000000 --- a/docs/modules/Hotkey.html +++ /dev/null @@ -1,373 +0,0 @@ - - - - - Defold Druid UI Framework - - - - -
- -
- -
-
-
- - -
- - - - - - -
- -

Module Hotkey

-

Druid hotkey component

-

Example Link

- - -

Functions

- - - - - - - - - - - - - -
add_hotkey(self, keys, callback_argument)Add hotkey for component callback
init(self, keys, callback, callback_argument)The Hotkey constructor
set_repeat(self, is_enabled_repeated)If true, the callback will be triggered on action.repeated
-

Tables

- - - - - -
styleComponent style params.
-

Fields

- - - - - - - - - - - - - - - - - - - - - -
buttonButton component from click_node
click_nodeButton trigger node
nodeVisual node
on_hotkey_pressedOn hotkey released callback(self, argument)
on_hotkey_releasedOn hotkey released callback(self, argument)
- -
-
- - -

Functions

- -
-
- - add_hotkey(self, keys, callback_argument) -
-
- Add hotkey for component callback - - -

Parameters:

-
    -
  • self - Hotkey - Hotkey -
  • -
  • keys - string[], hash[], string or hash - that have to be pressed before key pressed to activate -
  • -
  • callback_argument - any or nil - The argument to pass into the callback function -
  • -
- -

Returns:

-
    - - Hotkey - Current instance -
- - - - -
-
- - init(self, keys, callback, callback_argument) -
-
- The Hotkey constructor - - -

Parameters:

-
    -
  • self - Hotkey - Hotkey -
  • -
  • keys - string[] or string - The keys to be pressed for trigger callback. Should contains one key and any modificator keys -
  • -
  • callback - function - The callback function -
  • -
  • callback_argument - any or nil - The argument to pass into the callback function -
  • -
- - - - - -
-
- - set_repeat(self, is_enabled_repeated) -
-
- If true, the callback will be triggered on action.repeated - - -

Parameters:

-
    -
  • self - Hotkey - Hotkey -
  • -
  • is_enabled_repeated - bool - The flag value -
  • -
- -

Returns:

-
    - - Hotkey - -
- - - - -
-
-

Tables

- -
-
- - style -
-
- Component style params. - You can override this component styles params in druid styles table - or create your own style - - -

Fields:

-
    -
  • MODIFICATORS - string[] - The list of action_id as hotkey modificators -
  • -
- - - - - -
-
-

Fields

- -
-
- - button -
-
- Button component from click_node - - -
    -
  • button - Button - Button -
  • -
- - - - - -
-
- - click_node -
-
- Button trigger node - - -
    -
  • click_node - node or nil - -
  • -
- - - - - -
-
- - node -
-
- Visual node - - -
    -
  • node - node - -
  • -
- - - - - -
-
- - on_hotkey_pressed -
-
- On hotkey released callback(self, argument) - - -
    -
  • on_hotkey_pressed - DruidEvent - DruidEvent -
  • -
- - - - - -
-
- - on_hotkey_released -
-
- On hotkey released callback(self, argument) - - -
    -
  • on_hotkey_released - DruidEvent - DruidEvent -
  • -
- - - - - -
-
- - -
-
-
-generated by LDoc TESTING -Last updated 2015-01-01 12:00:00 -
-
- - diff --git a/docs/modules/Hover.html b/docs/modules/Hover.html deleted file mode 100644 index 65c7eed..0000000 --- a/docs/modules/Hover.html +++ /dev/null @@ -1,469 +0,0 @@ - - - - - Defold Druid UI Framework - - - - -
- -
- -
-
-
- - -
- - - - - - -
- -

Module Hover

-

Component to handle hover node interaction

-

- - -

Functions

- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -
init(self, node, on_hover_callback, on_mouse_hover)The Hover constructor
is_enabled(self)Return current hover enabled state
is_hovered(self)Return current hover state.
is_mouse_hovered(self)Return current hover state.
set_click_zone(self, zone)Strict hover click area.
set_enabled(self, state)Set enable state of hover component.
set_hover(self, state)Set hover state
set_mouse_hover(self, state)Set mouse hover state
-

Tables

- - - - - -
styleComponent style params.
-

Fields

- - - - - - - - - - - - - -
nodeHover node
on_hoverOn hover callback(self, state, hover_instance)
on_mouse_hoverOn mouse hover callback(self, state, hover_instance)
- -
-
- - -

Functions

- -
-
- - init(self, node, on_hover_callback, on_mouse_hover) -
-
- The Hover constructor - - -

Parameters:

-
    -
  • self - Hover - Hover -
  • -
  • node - node - Gui node -
  • -
  • on_hover_callback - function - Hover callback -
  • -
  • on_mouse_hover - function - On mouse hover callback -
  • -
- - - - - -
-
- - is_enabled(self) -
-
- Return current hover enabled state - - -

Parameters:

-
    -
  • self - Hover - Hover -
  • -
- -

Returns:

-
    - - boolean - The hover enabled state -
- - - - -
-
- - is_hovered(self) -
-
- Return current hover state. True if touch action was on the node at current time - - -

Parameters:

-
    -
  • self - Hover - Hover -
  • -
- -

Returns:

-
    - - boolean - The current hovered state -
- - - - -
-
- - is_mouse_hovered(self) -
-
- Return current hover state. True if nil action_id (usually desktop mouse) was on the node at current time - - -

Parameters:

-
    -
  • self - Hover - Hover -
  • -
- -

Returns:

-
    - - boolean - The current hovered state -
- - - - -
-
- - set_click_zone(self, zone) -
-
- Strict hover click area. Useful for - no click events outside stencil node - - -

Parameters:

- - - - - - -
-
- - set_enabled(self, state) -
-
- Set enable state of hover component. - If hover is not enabled, it will not generate - any hover events - - -

Parameters:

-
    -
  • self - Hover - Hover -
  • -
  • state - boolean or nil - The hover enabled state -
  • -
- - - - - -
-
- - set_hover(self, state) -
-
- Set hover state - - -

Parameters:

-
    -
  • self - Hover - Hover -
  • -
  • state - boolean or nil - The hover state -
  • -
- - - - - -
-
- - set_mouse_hover(self, state) -
-
- Set mouse hover state - - -

Parameters:

-
    -
  • self - Hover - Hover -
  • -
  • state - boolean or nil - The mouse hover state -
  • -
- - - - - -
-
-

Tables

- -
-
- - style -
-
- Component style params. - You can override this component styles params in druid styles table - or create your own style - - -

Fields:

-
    -
  • ON_HOVER_CURSOR - string - Mouse hover style on node hover - (optional) -
  • -
  • ON_MOUSE_HOVER_CURSOR - string - Mouse hover style on node mouse hover - (optional) -
  • -
- - - - - -
-
-

Fields

- -
-
- - node -
-
- Hover node - - -
    -
  • node - node - -
  • -
- - - - - -
-
- - on_hover -
-
- On hover callback(self, state, hover_instance) - - - - - - - - -
-
- - on_mouse_hover -
-
- On mouse hover callback(self, state, hover_instance) - - - - - - - - -
-
- - -
-
-
-generated by LDoc TESTING -Last updated 2015-01-01 12:00:00 -
-
- - diff --git a/docs/modules/Input.html b/docs/modules/Input.html deleted file mode 100644 index ee1a9e4..0000000 --- a/docs/modules/Input.html +++ /dev/null @@ -1,1086 +0,0 @@ - - - - - Defold Druid UI Framework - - - - -
- -
- -
-
-
- - -
- - - - - - -
- -

Module Input

-

Druid input text component.

-

- Carry on user text input -

Example Link

-

Info:

-
    -
  • Author: Part of code from Britzl gooey input component
  • -
- - -

Functions

- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -
get_text(self)Return current input field text
get_text_selected_replaced(self, text)Replace selected text with new text
init(self, click_node, text_node, keyboard_type)The Input constructor
move_selection(self, delta, is_add_to_selection, is_move_to_end)Change cursor position by delta
reset_changes(self)Reset current input selection and return previous value
select(self)Select input field.
select_cursor(self, cursor_index, start_index, end_index)Set cursor position in input field
set_allowed_characters(self, characters)Set allowed charaters for input field.
set_max_length(self, max_length)Set maximum length for input field.
set_text(self, input_text)Set text for input field
unselect(self)Remove selection from input.
-

Tables

- - - - - -
styleComponent style params.
-

Fields

- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -
allowerd_charactersPattern matching for user input
buttonButton component
current_valueCurrent input value with marked text
cursor_indexThe cursor index.
end_indexTheselection end index.
is_emptyIs current input is empty now
is_selectedIs current input selected now
keyboard_typeGui keyboard type for input field
marked_text_widthMarked text width
marked_valueMarked text for input field.
max_lengthMax length for input text
on_input_emptyOn input field text change to empty string callback(self, input_text)
on_input_fullOn input field text change to max length string callback(self, input_text)
on_input_selectOn input field select callback(self, input_instance)
on_input_textOn input field text change callback(self, input_text)
on_input_unselectOn input field unselect callback(self, input_text, input_instance)
on_input_wrongOn trying user input with not allowed character callback(self, params, input_text)
on_select_cursor_changeOn cursor position change callback(self, cursor_index, start_index, end_index)
previous_valuePrevious input value
start_indexThe selection start index.
textText component
text_widthText width
valueCurrent input value
- -
-
- - -

Functions

- -
-
- - get_text(self) -
-
- Return current input field text - - -

Parameters:

-
    -
  • self - Input - Input -
  • -
- -

Returns:

-
    - - string - The current input field text -
- - - - -
-
- - get_text_selected_replaced(self, text) -
-
- Replace selected text with new text - - -

Parameters:

-
    -
  • self - Input - Input -
  • -
  • text - string - The text to replace selected text -
  • -
- -

Returns:

-
    - - string - New input text -
- - - - -
-
- - init(self, click_node, text_node, keyboard_type) -
-
- The Input constructor - - -

Parameters:

-
    -
  • self - Input - Input -
  • -
  • click_node - node - Node to enabled input component -
  • -
  • text_node - node or Text - Text node what will be changed on user input. You can pass text component instead of text node name Text -
  • -
  • keyboard_type - number or nil - Gui keyboard type for input field -
  • -
- - - - - -
-
- - move_selection(self, delta, is_add_to_selection, is_move_to_end) -
-
- Change cursor position by delta - - -

Parameters:

-
    -
  • self - Input - Input -
  • -
  • delta - number - side for cursor position, -1 for left, 1 for right -
  • -
  • is_add_to_selection - boolean - (Shift key) -
  • -
  • is_move_to_end - boolean - (Ctrl key) -
  • -
- - - - - -
-
- - reset_changes(self) -
-
- Reset current input selection and return previous value - - -

Parameters:

-
    -
  • self - Input - Input -
  • -
- -

Returns:

-
    - - druid.input - Current input instance -
- - - - -
-
- - select(self) -
-
- Select input field. It will show the keyboard and trigger on_select events - - -

Parameters:

-
    -
  • self - Input - Input -
  • -
- - - - - -
-
- - select_cursor(self, cursor_index, start_index, end_index) -
-
- Set cursor position in input field - - -

Parameters:

-
    -
  • self - Input - Input -
  • -
  • cursor_index - number or nil - Cursor index for cursor position, if nil - will be set to the end of the text -
  • -
  • start_index - number or nil - Start index for cursor position, if nil - will be set to the end of the text -
  • -
  • end_index - number or nil - End index for cursor position, if nil - will be set to the start_index -
  • -
- -

Returns:

-
    - - druid.input - Current input instance -
- - - - -
-
- - set_allowed_characters(self, characters) -
-
- Set allowed charaters for input field. - See: https://defold.com/ref/stable/string/ - ex: [%a%d] for alpha and numeric - - -

Parameters:

-
    -
  • self - Input - Input -
  • -
  • characters - string - Regulax exp. for validate user input -
  • -
- -

Returns:

-
    - - druid.input - Current input instance -
- - - - -
-
- - set_max_length(self, max_length) -
-
- Set maximum length for input field. - Pass nil to make input field unliminted (by default) - - -

Parameters:

-
    -
  • self - Input - Input -
  • -
  • max_length - number - Maximum length for input text field -
  • -
- -

Returns:

-
    - - druid.input - Current input instance -
- - - - -
-
- - set_text(self, input_text) -
-
- Set text for input field - - -

Parameters:

-
    -
  • self - Input - Input -
  • -
  • input_text - string - The string to apply for input field -
  • -
- - - - - -
-
- - unselect(self) -
-
- Remove selection from input. It will hide the keyboard and trigger on_unselect events - - -

Parameters:

-
    -
  • self - Input - Input -
  • -
- - - - - -
-
-

Tables

- -
-
- - style -
-
- Component style params. - You can override this component styles params in druid styles table - or create your own style - - -

Fields:

-
    -
  • IS_LONGTAP_ERASE - boolean - Is long tap will erase current input data. Default: false -
  • -
  • MASK_DEFAULT_CHAR - string - Default character mask for password input. Default: *] -
  • -
  • IS_UNSELECT_ON_RESELECT - boolean - If true, call unselect on select selected input. Default: false -
  • -
  • on_select - function - (self, button_node) Callback on input field selecting -
  • -
  • on_unselect - function - (self, button_node) Callback on input field unselecting -
  • -
  • on_input_wrong - function - (self, button_node) Callback on wrong user input -
  • -
- - - - - -
-
-

Fields

- -
-
- - allowerd_characters -
-
- Pattern matching for user input - - -
    -
  • allowerd_characters - string or nil - -
  • -
- - - - - -
-
- - button -
-
- Button component - - -
    -
  • button - Button - Button -
  • -
- - - - - -
-
- - current_value -
-
- Current input value with marked text - - -
    -
  • current_value - string - -
  • -
- - - - - -
-
- - cursor_index -
-
- The cursor index. The index of letter cursor after. Leftmost cursor - 0 - - -
    -
  • cursor_index - number - -
  • -
- - - - - -
-
- - end_index -
-
- Theselection end index. The index of letter cursor before. Rightmost selection - #text - - -
    -
  • end_index - number - -
  • -
- - - - - -
-
- - is_empty -
-
- Is current input is empty now - - -
    -
  • is_empty - boolean - -
  • -
- - - - - -
-
- - is_selected -
-
- Is current input selected now - - -
    -
  • is_selected - boolean - -
  • -
- - - - - -
-
- - keyboard_type -
-
- Gui keyboard type for input field - - -
    -
  • keyboard_type - number - -
  • -
- - - - - -
-
- - marked_text_width -
-
- Marked text width - - -
    -
  • marked_text_width - number - -
  • -
- - - - - -
-
- - marked_value -
-
- Marked text for input field. Info: https://defold.com/manuals/input-key-and-text/#marked-text - - -
    -
  • marked_value - string - -
  • -
- - - - - -
-
- - max_length -
-
- Max length for input text - - -
    -
  • max_length - number or nil - -
  • -
- - - - - -
-
- - on_input_empty -
-
- On input field text change to empty string callback(self, input_text) - - - - - - - - -
-
- - on_input_full -
-
- On input field text change to max length string callback(self, input_text) - - - - - - - - -
-
- - on_input_select -
-
- On input field select callback(self, input_instance) - - - - - - - - -
-
- - on_input_text -
-
- On input field text change callback(self, input_text) - - - - - - - - -
-
- - on_input_unselect -
-
- On input field unselect callback(self, input_text, input_instance) - - -
    -
  • on_input_unselect - DruidEvent - DruidEvent -
  • -
- - - - - -
-
- - on_input_wrong -
-
- On trying user input with not allowed character callback(self, params, input_text) - - - - - - - - -
-
- - on_select_cursor_change -
-
- On cursor position change callback(self, cursor_index, start_index, end_index) - - -
    -
  • on_select_cursor_change - DruidEvent - DruidEvent -
  • -
- - - - - -
-
- - previous_value -
-
- Previous input value - - -
    -
  • previous_value - string - -
  • -
- - - - - -
-
- - start_index -
-
- The selection start index. The index of letter cursor after. Leftmost selection - 0 - - -
    -
  • start_index - number - -
  • -
- - - - - -
-
- - text -
-
- Text component - - -
    -
  • text - Text - Text -
  • -
- - - - - -
-
- - text_width -
-
- Text width - - -
    -
  • text_width - number - -
  • -
- - - - - -
-
- - value -
-
- Current input value - - - - - - - - -
-
- - -
-
-
-generated by LDoc TESTING -Last updated 2015-01-01 12:00:00 -
-
- - diff --git a/docs/modules/LangText.html b/docs/modules/LangText.html deleted file mode 100644 index be1a8b1..0000000 --- a/docs/modules/LangText.html +++ /dev/null @@ -1,380 +0,0 @@ - - - - - Defold Druid UI Framework - - - - -
- -
- -
-
-
- - -
- - - - - - -
- -

Module LangText

-

Component to wrap over GUI Text nodes with localization helpers -

# Overview # -

• The initialization of druid.set_text_function is required to enable localization - using the localization ID.

-

-

• The LangText component supports up to 7 string format parameters. - This limitation exists due to certain issues with using ... arguments. -

# Notes # -

Example Link

- - -

Functions

- - - - - - - - - - - - - - - - - -
format(self, a, b, c, d, e, f, g)Format string with new text params on localized text
init(self, node, locale_id, adjust_type)The LangText constructor
set_to(self, text)Setup raw text to lang_text component
translate(self, locale_id, a, b, c, d, e, f, g)Translate the text by locale_id
-

Fields

- - - - - - - - - - - - - -
nodeText node
on_changeOn change text callback
textThe text component
- -
-
- - -

Functions

- -
-
- - format(self, a, b, c, d, e, f, g) -
-
- Format string with new text params on localized text - - -

Parameters:

-
    -
  • self - LangText - LangText -
  • -
  • a - string or nil - Optional param to string.format -
  • -
  • b - string or nil - Optional param to string.format -
  • -
  • c - string or nil - Optional param to string.format -
  • -
  • d - string or nil - Optional param to string.format -
  • -
  • e - string or nil - Optional param to string.format -
  • -
  • f - string or nil - Optional param to string.format -
  • -
  • g - string or nil - Optional param to string.format -
  • -
- -

Returns:

-
    - - LangText - Current instance -
- - - - -
-
- - init(self, node, locale_id, adjust_type) -
-
- The LangText constructor - - -

Parameters:

-
    -
  • self - LangText - LangText -
  • -
  • node - string or node - The node_id or gui.get_node(node_id) -
  • -
  • locale_id - string or nil - Default locale id or text from node as default -
  • -
  • adjust_type - string or nil - Adjust type for text. By default is DOWNSCALE. Look const.TEXT_ADJUST for reference -
  • -
- - - - - -
-
- - set_to(self, text) -
-
- Setup raw text to lang_text component - - -

Parameters:

-
    -
  • self - LangText - LangText -
  • -
  • text - string - Text for text node -
  • -
- -

Returns:

-
    - - LangText - Current instance -
- - - - -
-
- - translate(self, locale_id, a, b, c, d, e, f, g) -
-
- Translate the text by locale_id - - -

Parameters:

-
    -
  • self - LangText - LangText -
  • -
  • locale_id - string - Locale id -
  • -
  • a - string or nil - Optional param to string.format -
  • -
  • b - string or nil - Optional param to string.format -
  • -
  • c - string or nil - Optional param to string.format -
  • -
  • d - string or nil - Optional param to string.format -
  • -
  • e - string or nil - Optional param to string.format -
  • -
  • f - string or nil - Optional param to string.format -
  • -
  • g - string or nil - Optional param to string.format -
  • -
- -

Returns:

-
    - - LangText - Current instance -
- - - - -
-
-

Fields

- -
-
- - node -
-
- Text node - - -
    -
  • node - node - -
  • -
- - - - - -
-
- - on_change -
-
- On change text callback - - - - - - - - -
-
- - text -
-
- The text component - - -
    -
  • text - Text - Text -
  • -
- - - - - -
-
- - -
-
-
-generated by LDoc TESTING -Last updated 2015-01-01 12:00:00 -
-
- - diff --git a/docs/modules/Layout.html b/docs/modules/Layout.html deleted file mode 100644 index 0058f48..0000000 --- a/docs/modules/Layout.html +++ /dev/null @@ -1,147 +0,0 @@ - - - - - Defold Druid UI Framework - - - - -
- -
- -
-
-
- - -
- - - - - - -
- -

Module Layout

-

Layout management on node

-

Example Link

- - -

Fields

- - - - - - - - - -
modeCurrent layout mode
nodeLayout node
- -
-
- - -

Fields

- -
-
- - mode -
-
- Current layout mode - - - - - - - - -
-
- - node -
-
- Layout node - - -
    -
  • node - node - -
  • -
- - - - - -
-
- - -
-
-
-generated by LDoc TESTING -Last updated 2015-01-01 12:00:00 -
-
- - diff --git a/docs/modules/PinKnob.html b/docs/modules/PinKnob.html deleted file mode 100644 index d97d64e..0000000 --- a/docs/modules/PinKnob.html +++ /dev/null @@ -1,299 +0,0 @@ - - - - - Defold Druid UI Framework - - - - -
- -
- -
-
-
- - -
- - - - - - -
- -

Module PinKnob

-

Druid pin knob custom component.

-

- It's simple rotating input element

- - -

Functions

- - - - - - - - - - - - - -
init(self, callback, template, nodes)The PinKnob constructor
set_angle(self, cur_value, min, max)Set current and min/max angles for component
set_friction(self, value)Set current and min/max angles for component
-

Fields

- - - - - - - - - - - - - -
druidThe component druid instance
is_dragIs currently under user control
nodeThe pin node
- -
-
- - -

Functions

- -
-
- - init(self, callback, template, nodes) -
-
- The PinKnob constructor - - -

Parameters:

-
    -
  • self - PinKnob - PinKnob -
  • -
  • callback - function - Callback(self, value) on value changed -
  • -
  • template - string - The template string name -
  • -
  • nodes - table - Nodes table from gui.clone_tree -
  • -
- - - - - -
-
- - set_angle(self, cur_value, min, max) -
-
- Set current and min/max angles for component - - -

Parameters:

-
    -
  • self - PinKnob - PinKnob -
  • -
  • cur_value - number - The new value for pin knob -
  • -
  • min - number - The minimum value for pin knob -
  • -
  • max - number - The maximum value for pin knob -
  • -
- -

Returns:

-
    - - PinKnob - PinKnob -
- - - - -
-
- - set_friction(self, value) -
-
- Set current and min/max angles for component - - -

Parameters:

-
    -
  • self - PinKnob - PinKnob -
  • -
  • value - number or nil - The spin speed multiplier. Default: 1 -
  • -
- -

Returns:

-
    - - PinKnob - PinKnob -
- - - - -
-
-

Fields

- -
-
- - druid -
-
- The component druid instance - - - - - - - - -
-
- - is_drag -
-
- Is currently under user control - - -
    -
  • is_drag - boolean - -
  • -
- - - - - -
-
- - node -
-
- The pin node - - -
    -
  • node - node - -
  • -
- - - - - -
-
- - -
-
-
-generated by LDoc TESTING -Last updated 2015-01-01 12:00:00 -
-
- - diff --git a/docs/modules/Progress.html b/docs/modules/Progress.html deleted file mode 100644 index d9fa818..0000000 --- a/docs/modules/Progress.html +++ /dev/null @@ -1,569 +0,0 @@ - - - - - Defold Druid UI Framework - - - - -
- -
- -
-
-
- - -
- - - - - - -
- -

Module Progress

-

Druid component to handle the progress bars.

-

- # Overview # -

# Notes # -

• Progress Node should be fully filled in your GUI scene node. It will be the progress maximum size -

• Progress correct working with Slice9 nodes, it trying to set size by _set_size_ first, if it is not possible, it set up sizing via _set_scale_ -

• Progress bar can fill only by vertical or horizontal size. If you want make diagonal progress bar, just rotate node in GUI scene -

• If you have glitchy or dark texture bug with progress bar, try to disable mipmaps in your texture profiles -

- Example Link

- - -

Functions

- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -
empty(self)Empty a progress bar
fill(self)Fill a progress bar and stop progress animation
get(self)Return current progress bar value
init(self, node, key, init_value)The Progress constructor
set_max_size(self, max_size)Set progress bar max node size
set_steps(self, steps, callback)Set points on progress bar to fire the callback
set_to(self, to)Instant fill progress bar to value
to(self, to, callback)Start animation of a progress bar
-

Tables

- - - - - -
styleComponent style params.
-

Fields

- - - - - - - - - - - - - - - - - - - - - - - - - - - - - -
keyThe progress bar direction.
max_sizeMaximum size of progress bar
nodeProgress bar fill node
on_changeOn progress bar change callback(self, new_value)
scaleCurrent progress bar scale
sizeCurrent progress bar size
sliceProgress bar slice9 settings
- -
-
- - -

Functions

- -
-
- - empty(self) -
-
- Empty a progress bar - - -

Parameters:

- - - - - - -
-
- - fill(self) -
-
- Fill a progress bar and stop progress animation - - -

Parameters:

- - - - - - -
-
- - get(self) -
-
- Return current progress bar value - - -

Parameters:

- - - - - - -
-
- - init(self, node, key, init_value) -
-
- The Progress constructor - - -

Parameters:

-
    -
  • self - Progress - Progress -
  • -
  • node - string or node - Node name or GUI Node itself. -
  • -
  • key - string - Progress bar direction: const.SIDE.X or const.SIDE.Y -
  • -
  • init_value - number or nil - Initial value of progress bar. Default: 1 -
  • -
- - - - - -
-
- - set_max_size(self, max_size) -
-
- Set progress bar max node size - - -

Parameters:

-
    -
  • self - Progress - Progress -
  • -
  • max_size - vector3 - The new node maximum (full) size -
  • -
- -

Returns:

-
    - - Progress - Progress -
- - - - -
-
- - set_steps(self, steps, callback) -
-
- Set points on progress bar to fire the callback - - -

Parameters:

-
    -
  • self - Progress - Progress -
  • -
  • steps - number[] - Array of progress bar values -
  • -
  • callback - function - Callback on intersect step value -
  • -
- - - - -

Usage:

-
    -
    progress:set_steps({0, 0.3, 0.6, 1}, function(self, step) end)
    -
- -
-
- - set_to(self, to) -
-
- Instant fill progress bar to value - - -

Parameters:

-
    -
  • self - Progress - Progress -
  • -
  • to - number - Progress bar value, from 0 to 1 -
  • -
- - - - - -
-
- - to(self, to, callback) -
-
- Start animation of a progress bar - - -

Parameters:

-
    -
  • self - Progress - Progress -
  • -
  • to - number - value between 0..1 -
  • -
  • callback - function or nil - Callback on animation ends -
  • -
- - - - - -
-
-

Tables

- -
-
- - style -
-
- Component style params. - You can override this component styles params in druid styles table - or create your own style - - -

Fields:

-
    -
  • SPEED - number or nil - Progress bas fill rate. More -> faster. Default: 5 -
  • -
  • MIN_DELTA - number or nil - Minimum step to fill progress bar. Default: 0.005 -
  • -
- - - - - -
-
-

Fields

- -
-
- - key -
-
- The progress bar direction. -

The values are: "x" or "y". (const.SIDE.X or const.SIDE.Y) - - -

- - - - - -
-
- - max_size -
-
- Maximum size of progress bar - - -
    -
  • max_size - number - -
  • -
- - - - - -
-
- - node -
-
- Progress bar fill node - - -
    -
  • node - node - -
  • -
- - - - - -
-
- - on_change -
-
- On progress bar change callback(self, new_value) - - - - - - - - -
-
- - scale -
-
- Current progress bar scale - - -
    -
  • scale - vector3 - -
  • -
- - - - - -
-
- - size -
-
- Current progress bar size - - -
    -
  • size - vector3 - -
  • -
- - - - - -
-
- - slice -
-
- Progress bar slice9 settings - - -
    -
  • slice - vector4 - -
  • -
- - - - - -
-
- - -
-
-
-generated by LDoc TESTING -Last updated 2015-01-01 12:00:00 -
-
- - diff --git a/docs/modules/RadioGroup.html b/docs/modules/RadioGroup.html deleted file mode 100644 index 41f2b10..0000000 --- a/docs/modules/RadioGroup.html +++ /dev/null @@ -1,259 +0,0 @@ - - - - - Defold Druid UI Framework - - - - -
- -
- -
-
-
- - -
- - - - - - -
- -

Module RadioGroup

-

Radio group module

-

Example Link

- - -

Functions

- - - - - - - - - - - - - -
get_state(self)Return radio group state
init(self, nodes, callback, click_nodes)The RadioGroup constructor
set_state(self, index, is_instant)Set radio group state
-

Fields

- - - - - - - - - -
checkboxesArray of checkbox components
on_radio_clickOn any checkbox click
- -
-
- - -

Functions

- -
-
- - get_state(self) -
-
- Return radio group state - - -

Parameters:

- - -

Returns:

-
    - - number - Index in radio group -
- - - - -
-
- - init(self, nodes, callback, click_nodes) -
-
- The RadioGroup constructor - - -

Parameters:

-
    -
  • self - RadioGroup - RadioGroup -
  • -
  • nodes - node[] - Array of gui node -
  • -
  • callback - function - Radio callback -
  • -
  • click_nodes - node[] or nil - Array of trigger nodes, by default equals to nodes. Default - nodes -
  • -
- - - - - -
-
- - set_state(self, index, is_instant) -
-
- Set radio group state - - -

Parameters:

-
    -
  • self - RadioGroup - RadioGroup -
  • -
  • index - number - Index in radio group -
  • -
  • is_instant - boolean or nil - If is instant state change -
  • -
- - - - - -
-
-

Fields

- -
-
- - checkboxes -
-
- Array of checkbox components - - -
    -
  • checkboxes - Checkbox[] - -
  • -
- - - - - -
-
- - on_radio_click -
-
- On any checkbox click - - - - - - - - -
-
- - -
-
-
-generated by LDoc TESTING -Last updated 2015-01-01 12:00:00 -
-
- - diff --git a/docs/modules/RichInput.html b/docs/modules/RichInput.html deleted file mode 100644 index 6c5cdf8..0000000 --- a/docs/modules/RichInput.html +++ /dev/null @@ -1,567 +0,0 @@ - - - - - Defold Druid UI Framework - - - - -
- -
- -
-
-
- - -
- - - - - - -
- -

Module RichInput

-

Druid Rich Input custom component.

-

- It's wrapper on Input component with cursor and placeholder text

- - -

Functions

- - - - - - - - - - - - - - - - - - - - - - - - - - - - - -
get_text(self)Set input field text
init(self, template, nodes)The RichInput constructor
select(self)Select input field
set_allowed_characters(self, characters)Set allowed charaters for input field.
set_font(self, font)Set input field font
set_placeholder(self, placeholder_text)Set placeholder text
set_text(self, text)Set input field text
-

Fields

- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -
cursorOn input field text change to empty string callback(self, input_text)
cursor_positionOn input field text change to empty string callback(self, input_text)
cursor_textOn input field text change to empty string callback(self, input_text)
dragOn input field text change to empty string callback(self, input_text)
druidThe component druid instance
inputOn input field text change callback(self, input_text)
input_textOn input field text change to empty string callback(self, input_text)
placeholderOn input field text change to empty string callback(self, input_text)
rootRoot node
text_positionOn input field text change to empty string callback(self, input_text)
- -
-
- - -

Functions

- -
-
- - get_text(self) -
-
- Set input field text - - -

Parameters:

- - - - - - -
-
- - init(self, template, nodes) -
-
- The RichInput constructor - - -

Parameters:

-
    -
  • self - RichInput - RichInput -
  • -
  • template - string - The template string name -
  • -
  • nodes - table - Nodes table from gui.clone_tree -
  • -
- - - - - -
-
- - select(self) -
-
- Select input field - - -

Parameters:

- - - - - - -
-
- - set_allowed_characters(self, characters) -
-
- Set allowed charaters for input field. - See: https://defold.com/ref/stable/string/ - ex: [%a%d] for alpha and numeric - - -

Parameters:

-
    -
  • self - RichInput - RichInput -
  • -
  • characters - string - Regulax exp. for validate user input -
  • -
- -

Returns:

-
    - - RichInput - Current instance -
- - - - -
-
- - set_font(self, font) -
-
- Set input field font - - -

Parameters:

-
    -
  • self - RichInput - RichInput -
  • -
  • font - hash - The font hash -
  • -
- -

Returns:

-
    - - druid.input - Current input instance -
- - - - -
-
- - set_placeholder(self, placeholder_text) -
-
- Set placeholder text - - -

Parameters:

-
    -
  • self - RichInput - RichInput -
  • -
  • placeholder_text - string - The placeholder text -
  • -
- - - - - -
-
- - set_text(self, text) -
-
- Set input field text - - -

Parameters:

- - -

Returns:

-
    - - druid.input - Current input instance -
- - - - -
-
-

Fields

- -
-
- - cursor -
-
- On input field text change to empty string callback(self, input_text) - - -
    -
  • cursor - node - -
  • -
- - - - - -
-
- - cursor_position -
-
- On input field text change to empty string callback(self, input_text) - - -
    -
  • cursor_position - vector3 - -
  • -
- - - - - -
-
- - cursor_text -
-
- On input field text change to empty string callback(self, input_text) - - -
    -
  • cursor_text - node - -
  • -
- - - - - -
-
- - drag -
-
- On input field text change to empty string callback(self, input_text) - - -
    -
  • drag - druid.drag - -
  • -
- - - - - -
-
- - druid -
-
- The component druid instance - - - - - - - - -
-
- - input -
-
- On input field text change callback(self, input_text) - - -
    -
  • input - Input - Input -
  • -
- - - - - -
-
- - input_text -
-
- On input field text change to empty string callback(self, input_text) - - -
    -
  • input_text - druid.text - -
  • -
- - - - - -
-
- - placeholder -
-
- On input field text change to empty string callback(self, input_text) - - -
    -
  • placeholder - druid.text - -
  • -
- - - - - -
-
- - root -
-
- Root node - - -
    -
  • root - node - -
  • -
- - - - - -
-
- - text_position -
-
- On input field text change to empty string callback(self, input_text) - - -
    -
  • text_position - vector3 - -
  • -
- - - - - -
-
- - -
-
-
-generated by LDoc TESTING -Last updated 2015-01-01 12:00:00 -
-
- - diff --git a/docs/modules/RichText.html b/docs/modules/RichText.html deleted file mode 100644 index 075846c..0000000 --- a/docs/modules/RichText.html +++ /dev/null @@ -1,560 +0,0 @@ - - - - - Defold Druid UI Framework - - - - -
- -
- -
-
-
- - -
- - - - - - -
- -

Module RichText

-

Druid Rich Text Custom Component.

-

- # Overview # -

This custom component is inspired by defold-richtext by britzl. - It uses a similar syntax for tags but currently supports fewer tags. -

Create Rich Text on your GUI Text Node. All properties of the text node will be used as default for the text. -

# Notes # -

• Nested tags are supported -

Example Link

-

Usage:

-
    -
  • local RichText = require("druid.custom.rich_text.rich_text")
    -...
    -self.rich_text = self.druid:new(RichText, "rich_text")
    -self.rich_text:set_text("Hello, Druid Rich Text!")
    -
  • -
  • type druid.rich_text.word = {
    -  node: Node,
    -  relative_scale: number,
    -  color: vector4,
    -  position: vector3,
    -  offset: vector3,
    -  scale: vector3,
    -  size: vector3,
    -  metrics: druid.rich_text.metrics,
    -  pivot: Pivot,
    -  text: string,
    -  shadow: vector4,
    -  outline: vector4,
    -  font: string,
    -  image: druid.rich_text.image,
    -  br: boolean,
    -  nobr: boolean,
    -}
    -
    -type druid.rich_text.word.image = {
    -  texture: string,
    -  anim: string,
    -  width: number,
    -  height: number,
    -}
    -
    -type druid.rich_text.lines_metrics = {
    -  text_width: number,
    -  text_height: number,
    -  lines: table<number, druid.rich_text.metrics>,
    -}
    -
    -type druid.rich_text.metrics = {
    -  width: number,
    -  height: number,
    -  offset_x: number|nil,
    -  offset_y: number|nil,
    -  node_size: vector3|nil @For images only,
    -}
    -
  • -
- - -

Functions

- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -
characters(self, word)Split a word into it's characters
clear()Clear all created words.
get_line_metric()Get current line metrics
get_text(self)Get current text
get_words()Get all current words.
init(self, text_node, value)The RichText constructor
set_text(self, text)Set text for Rich Text
tagged(self, tag)Get all words, which has a passed tag.
-

Tables

- - - - - -
styleComponent style params.
-

Fields

- - - - - - - - - - - - - -
druidThe component druid instance
rootThe root node of the Rich Text
text_prefabThe text prefab node
- -
-
- - -

Functions

- -
-
- - characters(self, word) -
-
- Split a word into it's characters - - -

Parameters:

-
    -
  • self - RichText - RichText -
  • -
  • word - druid.rich_text.word - -
  • -
- -

Returns:

-
    - - druid.rich_text.word[] - characters -
- - - - -
-
- - clear() -
-
- Clear all created words. - - - - - - - -
-
- - get_line_metric() -
-
- Get current line metrics - - - -

Returns:

-
    - - druid.rich_text.lines_metrics - -
- - - - -
-
- - get_text(self) -
-
- Get current text - - -

Parameters:

- - -

Returns:

-
    - - string - text -
- - - - -
-
- - get_words() -
-
- Get all current words. - - - -

Returns:

-
    - - table - druid.rich_text.word[] -
- - - - -
-
- - init(self, text_node, value) -
-
- The RichText constructor - - -

Parameters:

-
    -
  • self - RichText - RichText -
  • -
  • text_node - node or string - The text node to make Rich Text -
  • -
  • value - string or nil - The initial text value. Default will be gui.get_text(text_node) -
  • -
- - - - - -
-
- - set_text(self, text) -
-
- Set text for Rich Text - - -

Parameters:

-
    -
  • self - RichText - RichText -
  • -
  • text - string or nil - The text to set -
  • -
- -

Returns:

-
    -
  1. - druid.rich_text.word[] - words
  2. -
  3. - druid.rich_text.lines_metrics - line_metrics
  4. -
- - - -

Usage:

-
    -
    • color: Change text color
    -
    -<color=red>Foobar</color>
    -<color=1.0,0,0,1.0>Foobar</color>
    -<color=#ff0000>Foobar</color>
    -<color=#ff0000ff>Foobar</color>
    -
    -• shadow: Change text shadow
    -
    -<shadow=red>Foobar</shadow>
    -<shadow=1.0,0,0,1.0>Foobar</shadow>
    -<shadow=#ff0000>Foobar</shadow>
    -<shadow=#ff0000ff>Foobar</shadow>
    -
    -• outline: Change text shadow
    -
    -<outline=red>Foobar</outline>
    -<outline=1.0,0,0,1.0>Foobar</outline>
    -<outline=#ff0000>Foobar</outline>
    -<outline=#ff0000ff>Foobar</outline>
    -
    -• font: Change font
    -
    -<font=MyCoolFont>Foobar</font>
    -
    -• size: Change text size, relative to default size
    -
    -<size=2>Twice as large</size>
    -
    -• br: Insert a line break
    -
    -<br/>
    -
    -• nobr: Prevent the text from breaking
    -
    -Words <nobr>inside tag</nobr> won't break
    -
    -• img: Display image
    -
    -<img=texture:image/>
    -<img=texture:image,size/>
    -<img=texture:image,width,height/>
    -
- -
-
- - tagged(self, tag) -
-
- Get all words, which has a passed tag. - - -

Parameters:

- - -

Returns:

-
    - - druid.rich_text.word[] - words -
- - - - -
-
-

Tables

- -
-
- - style -
-
- Component style params. - You can override this component styles params in Druid styles table - or create your own style - - -

Fields:

-
    -
  • COLORS - table or nil - Rich Text color aliases. Default: {} -
  • -
  • ADJUST_STEPS - number or nil - Amount steps of attemps text adjust by height. Default: 20 -
  • -
  • ADJUST_SCALE_DELTA - number or nil - Scale step on each height adjust step. Default: 0.02 -
  • -
- - - - - -
-
-

Fields

- -
-
- - druid -
-
- The component druid instance - - - - - - - - -
-
- - root -
-
- The root node of the Rich Text - - -
    -
  • root - node - -
  • -
- - - - - -
-
- - text_prefab -
-
- The text prefab node - - -
    -
  • text_prefab - node - -
  • -
- - - - - -
-
- - -
-
-
-generated by LDoc TESTING -Last updated 2015-01-01 12:00:00 -
-
- - diff --git a/docs/modules/Scroll.html b/docs/modules/Scroll.html deleted file mode 100644 index 457f77c..0000000 --- a/docs/modules/Scroll.html +++ /dev/null @@ -1,1183 +0,0 @@ - - - - - Defold Druid UI Framework - - - - -
- -
- -
-
-
- - -
- - - - - - -
- -

Module Scroll

-

Component to handle scroll content.

-

- # Overview # -

The Scroll component is designed to handle scrollable content and consists of two nodes: the scroll parent and the scroll input. -

The scroll input represents the user input zone and remains static. -

The scroll parent is the movable part of the scroll and changes its position. -

The initial scroll size can be set by adjusting the size of the scroll parent. - If the size of the scroll parent is smaller than the scroll input size, scrolling is not available. -

# Notes # -

• By default, the scroll style includes inertia and extra size for a stretching effect. - These settings can be adjusted using the scroll style settings. - For more details, refer to the scroll style settings. -

• "Points of interest" can be set up for the scroll. - The scroll will always be centered on the closest point of interest. - This feature allows creating a slider without inertia and with points of interest on each scroll element. -

• The scroll content size can be adjusted using the scroll:set_size(node_size) method. - This method sets a new size for the _content node. -

• Inertial scrolling mode can be enabled or disabled using the scroll:set_inert(state) method. -

• The extra stretch size can be adjusted using the scroll:set_extra_stretch_size method. -

• Multitouch is required for scrolling. The scroll component correctly handles - touch ID swaps while dragging the scroll. -

Example Link

- - -

Functions

- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -
bind_grid(self, grid)Bind the grid component (Static or Dynamic) to recalculate - scroll size on grid changes
get_percent(self)Return current scroll progress status.
get_scroll_size(self)Return vector of scroll size with width and height.
init(self, view_node, content_node)The Scroll constructor
is_inert(self)Return if scroll have inertion.
is_node_in_view(self, node)Check node if it visible now on scroll.
scroll_to(self, point, is_instant)Start scroll to target point.
scroll_to_index(self, index, skip_cb)Scroll to item in scroll by point index.
scroll_to_percent(self, percent, is_instant)Start scroll to target scroll percent
set_click_zone(self, node)Strict drag scroll area.
set_extra_stretch_size(self, stretch_size)Set extra size for scroll stretching.
set_horizontal_scroll(self, state)Lock or unlock horizontal scroll
set_inert(self, state)Enable or disable scroll inert.
set_points(self, points)Set points of interest.
set_size(self, size, offset)Set scroll content size.
set_vertical_scroll(self, state)Lock or unlock vertical scroll
set_view_size(self, size)Set new scroll view size in case the node size was changed.
update_view_size(self)Refresh scroll view size
-

Tables

- - - - - -
styleComponent style params.
-

Fields

- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -
_is_inertFlag, if scroll now moving by inertion
available_posAvailable position for content node: (min_x, max_y, max_x, min_y)
available_sizeSize of available positions: (width, height, 0)
content_nodeScroll content node
dragDrag Druid component
inertionCurrent inert speed
is_animateFlag, if scroll now animating by gui.animate
on_point_scrollOn scroll_to_index function callback(self, index, point)
on_scrollOn scroll move callback(self, position)
on_scroll_toOn scroll_to function callback(self, target, is_instant)
positionCurrent scroll posisition
selectedCurrent index of points of interests
target_positionCurrent scroll target position
view_nodeScroll view node
view_sizeScroll view size
- -
-
- - -

Functions

- -
-
- - bind_grid(self, grid) -
-
- Bind the grid component (Static or Dynamic) to recalculate - scroll size on grid changes - - -

Parameters:

-
    -
  • self - Scroll - Scroll -
  • -
  • grid - StaticGrid - Druid grid component -
  • -
- -

Returns:

-
    - - druid.scroll - Current scroll instance -
- - - - -
-
- - get_percent(self) -
-
- Return current scroll progress status. - Values will be in [0..1] interval - - -

Parameters:

-
    -
  • self - Scroll - Scroll -
  • -
- -

Returns:

-
    - - vector3 - New vector with scroll progress values -
- - - - -
-
- - get_scroll_size(self) -
-
- Return vector of scroll size with width and height. - - -

Parameters:

-
    -
  • self - Scroll - Scroll -
  • -
- -

Returns:

-
    - - vector3 - Available scroll size -
- - - - -
-
- - init(self, view_node, content_node) -
-
- The Scroll constructor - - -

Parameters:

-
    -
  • self - Scroll - Scroll -
  • -
  • view_node - string or node - GUI view scroll node -
  • -
  • content_node - string or node - GUI content scroll node -
  • -
- - - - - -
-
- - is_inert(self) -
-
- Return if scroll have inertion. - - -

Parameters:

-
    -
  • self - Scroll - Scroll -
  • -
- -

Returns:

-
    - - boolean - @If scroll have inertion -
- - - - -
-
- - is_node_in_view(self, node) -
-
- Check node if it visible now on scroll. - Extra border is not affected. Return true for elements in extra scroll zone - - -

Parameters:

-
    -
  • self - Scroll - Scroll -
  • -
  • node - node - The node to check -
  • -
- -

Returns:

-
    - - boolean - True if node in visible scroll area -
- - - - -
-
- - scroll_to(self, point, is_instant) -
-
- Start scroll to target point. - - -

Parameters:

-
    -
  • self - Scroll - Scroll -
  • -
  • point - vector3 - Target point -
  • -
  • is_instant - boolean or nil - Instant scroll flag -
  • -
- - - - -

Usage:

-
    -
  • scroll:scroll_to(vmath.vector3(0, 50, 0))
  • -
  • scroll:scroll_to(vmath.vector3(0), true)
  • -
- -
-
- - scroll_to_index(self, index, skip_cb) -
-
- Scroll to item in scroll by point index. - - -

Parameters:

-
    -
  • self - Scroll - Scroll -
  • -
  • index - number - Point index -
  • -
  • skip_cb - boolean or nil - If true, skip the point callback -
  • -
- - - - - -
-
- - scroll_to_percent(self, percent, is_instant) -
-
- Start scroll to target scroll percent - - -

Parameters:

-
    -
  • self - Scroll - Scroll -
  • -
  • percent - vector3 - target percent -
  • -
  • is_instant - boolean or nil - instant scroll flag -
  • -
- - - - -

Usage:

-
    -
    scroll:scroll_to_percent(vmath.vector3(0.5, 0, 0))
    -
- -
-
- - set_click_zone(self, node) -
-
- Strict drag scroll area. Useful for - restrict events outside stencil node - - -

Parameters:

-
    -
  • self - Drag - -
  • -
  • node - node or string - Gui node -
  • -
- - - - - -
-
- - set_extra_stretch_size(self, stretch_size) -
-
- Set extra size for scroll stretching. - Set 0 to disable stretching effect - - -

Parameters:

-
    -
  • self - Scroll - Scroll -
  • -
  • stretch_size - number or nil - Size in pixels of additional scroll area -
  • -
- -

Returns:

-
    - - druid.scroll - Current scroll instance -
- - - - -
-
- - set_horizontal_scroll(self, state) -
-
- Lock or unlock horizontal scroll - - -

Parameters:

-
    -
  • self - Scroll - Scroll -
  • -
  • state - boolean or nil - True, if horizontal scroll is enabled -
  • -
- -

Returns:

-
    - - druid.scroll - Current scroll instance -
- - - - -
-
- - set_inert(self, state) -
-
- Enable or disable scroll inert. - If disabled, scroll through points (if exist) - If no points, just simple drag without inertion - - -

Parameters:

-
    -
  • self - Scroll - Scroll -
  • -
  • state - boolean or nil - Inert scroll state -
  • -
- -

Returns:

-
    - - druid.scroll - Current scroll instance -
- - - - -
-
- - set_points(self, points) -
-
- Set points of interest. - Scroll will always centered on closer points - - -

Parameters:

-
    -
  • self - Scroll - Scroll -
  • -
  • points - table - Array of vector3 points -
  • -
- -

Returns:

-
    - - druid.scroll - Current scroll instance -
- - - - -
-
- - set_size(self, size, offset) -
-
- Set scroll content size. - It will change content gui node size - - -

Parameters:

-
    -
  • self - Scroll - Scroll -
  • -
  • size - vector3 - The new size for content node -
  • -
  • offset - vector3 or nil - Offset value to set, where content is starts -
  • -
- -

Returns:

-
    - - druid.scroll - Current scroll instance -
- - - - -
-
- - set_vertical_scroll(self, state) -
-
- Lock or unlock vertical scroll - - -

Parameters:

-
    -
  • self - Scroll - Scroll -
  • -
  • state - boolean or nil - True, if vertical scroll is enabled -
  • -
- -

Returns:

-
    - - druid.scroll - Current scroll instance -
- - - - -
-
- - set_view_size(self, size) -
-
- Set new scroll view size in case the node size was changed. - - -

Parameters:

-
    -
  • self - Scroll - Scroll -
  • -
  • size - vector3 - The new size for view node -
  • -
- -

Returns:

-
    - - druid.scroll - Current scroll instance -
- - - - -
-
- - update_view_size(self) -
-
- Refresh scroll view size - - -

Parameters:

-
    -
  • self - Scroll - Scroll -
  • -
- - - - - -
-
-

Tables

- -
-
- - style -
-
- Component style params. - You can override this component styles params in druid styles table - or create your own style - - -

Fields:

-
    -
  • FRICT - number or nil - Multiplier for free inertion. Default: 0 -
  • -
  • FRICT_HOLD - number or nil - Multiplier for inertion, while touching. Default: 0 -
  • -
  • INERT_THRESHOLD - number or nil - Scroll speed to stop inertion. Default: 3 -
  • -
  • INERT_SPEED - number or nil - Multiplier for inertion speed. Default: 30 -
  • -
  • POINTS_DEADZONE - number or nil - Speed to check points of interests in no_inertion mode. Default: 20 -
  • -
  • BACK_SPEED - number or nil - Scroll back returning lerp speed. Default: 35 -
  • -
  • ANIM_SPEED - number or nil - Scroll gui.animation speed for scroll_to function. Default: 2 -
  • -
  • EXTRA_STRETCH_SIZE - number or nil - extra size in pixels outside of scroll (stretch effect). Default: 0 -
  • -
  • SMALL_CONTENT_SCROLL - boolean or nil - If true, content node with size less than view node size can be scrolled. Default: false -
  • -
  • WHEEL_SCROLL_SPEED - boolean or nil - The scroll speed via mouse wheel scroll or touchpad. Set to 0 to disable wheel scrolling. Default: 0 -
  • -
  • WHEEL_SCROLL_INVERTED - boolean or nil - If true, invert direction for touchpad and mouse wheel scroll. Default: false -
  • -
  • WHEEL_SCROLL_BY_INERTION - boolean or nil - If true, wheel will add inertion to scroll. Direct set position otherwise.. Default: false -
  • -
- - - - - -
-
-

Fields

- -
-
- - _is_inert -
-
- Flag, if scroll now moving by inertion - - -
    -
  • _is_inert - boolean - -
  • -
- - - - - -
-
- - available_pos -
-
- Available position for content node: (min_x, max_y, max_x, min_y) - - -
    -
  • available_pos - vector4 - -
  • -
- - - - - -
-
- - available_size -
-
- Size of available positions: (width, height, 0) - - -
    -
  • available_size - vector3 - -
  • -
- - - - - -
-
- - content_node -
-
- Scroll content node - - -
    -
  • content_node - node - -
  • -
- - - - - -
-
- - drag -
-
- Drag Druid component - - -
    -
  • drag - Drag - Drag -
  • -
- - - - - -
-
- - inertion -
-
- Current inert speed - - -
    -
  • inertion - vector3 - -
  • -
- - - - - -
-
- - is_animate -
-
- Flag, if scroll now animating by gui.animate - - -
    -
  • is_animate - boolean - -
  • -
- - - - - -
-
- - on_point_scroll -
-
- On scroll_to_index function callback(self, index, point) - - - - - - - - -
-
- - on_scroll -
-
- On scroll move callback(self, position) - - - - - - - - -
-
- - on_scroll_to -
-
- On scroll_to function callback(self, target, is_instant) - - - - - - - - -
-
- - position -
-
- Current scroll posisition - - -
    -
  • position - vector3 - -
  • -
- - - - - -
-
- - selected -
-
- Current index of points of interests - - -
    -
  • selected - number or nil - -
  • -
- - - - - -
-
- - target_position -
-
- Current scroll target position - - -
    -
  • target_position - vector3 - -
  • -
- - - - - -
-
- - view_node -
-
- Scroll view node - - -
    -
  • view_node - node - -
  • -
- - - - - -
-
- - view_size -
-
- Scroll view size - - -
    -
  • view_size - vector3 - -
  • -
- - - - - -
-
- - -
-
-
-generated by LDoc TESTING -Last updated 2015-01-01 12:00:00 -
-
- - diff --git a/docs/modules/Slider.html b/docs/modules/Slider.html deleted file mode 100644 index 45ce723..0000000 --- a/docs/modules/Slider.html +++ /dev/null @@ -1,531 +0,0 @@ - - - - - Defold Druid UI Framework - - - - -
- -
- -
-
-
- - -
- - - - - - -
- -

Module Slider

-

Druid slider component

-

Example Link

- - -

Functions

- - - - - - - - - - - - - - - - - - - - - - - - - -
init(self, node, end_pos, callback)The Slider constructor
is_enabled(self)Check if Slider component is enabled
set(self, value, is_silent)Set value for slider
set_enabled(self, is_enabled)Set Slider input enabled or disabled
set_input_node(self, input_node)Set input zone for slider.
set_steps(self, steps)Set slider steps.
-

Fields

- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -
distLength between start and end position
end_posEnd pin node position
is_dragCurrent drag state
nodeSlider pin node
on_change_valueOn change value callback(self, value)
posCurrent pin node position
start_posStart pin node position
target_posTarger pin node position
valueCurrent slider value
- -
-
- - -

Functions

- -
-
- - init(self, node, end_pos, callback) -
-
- The Slider constructor - - -

Parameters:

-
    -
  • self - Slider - Slider -
  • -
  • node - node - Gui pin node -
  • -
  • end_pos - vector3 - The end position of slider -
  • -
  • callback - function or nil - On slider change callback -
  • -
- - - - - -
-
- - is_enabled(self) -
-
- Check if Slider component is enabled - - -

Parameters:

-
    -
  • self - Slider - Slider -
  • -
- -

Returns:

-
    - - boolean - -
- - - - -
-
- - set(self, value, is_silent) -
-
- Set value for slider - - -

Parameters:

-
    -
  • self - Slider - Slider -
  • -
  • value - number - Value from 0 to 1 -
  • -
  • is_silent - boolean or nil - Don't trigger event if true -
  • -
- - - - - -
-
- - set_enabled(self, is_enabled) -
-
- Set Slider input enabled or disabled - - -

Parameters:

-
    -
  • self - Slider - Slider -
  • -
  • is_enabled - boolean - -
  • -
- - - - - -
-
- - set_input_node(self, input_node) -
-
- Set input zone for slider. - User can touch any place of node, pin instantly will - move at this position and node drag will start. - This function require the Defold version 1.3.0+ - - -

Parameters:

- - -

Returns:

-
    - - Slider - Slider -
- - - - -
-
- - set_steps(self, steps) -
-
- Set slider steps. Pin node will - apply closest step position - - -

Parameters:

-
    -
  • self - Slider - Slider -
  • -
  • steps - number[] - Array of steps -
  • -
- -

Returns:

-
    - - Slider - Slider -
- - - -

Usage:

-
    -
    slider:set_steps({0, 0.2, 0.6, 1})
    -
- -
-
-

Fields

- -
-
- - dist -
-
- Length between start and end position - - -
    -
  • dist - vector3 - -
  • -
- - - - - -
-
- - end_pos -
-
- End pin node position - - -
    -
  • end_pos - vector3 - -
  • -
- - - - - -
-
- - is_drag -
-
- Current drag state - - -
    -
  • is_drag - boolean - -
  • -
- - - - - -
-
- - node -
-
- Slider pin node - - -
    -
  • node - node - -
  • -
- - - - - -
-
- - on_change_value -
-
- On change value callback(self, value) - - - - - - - - -
-
- - pos -
-
- Current pin node position - - -
    -
  • pos - vector3 - -
  • -
- - - - - -
-
- - start_pos -
-
- Start pin node position - - -
    -
  • start_pos - vector3 - -
  • -
- - - - - -
-
- - target_pos -
-
- Targer pin node position - - -
    -
  • target_pos - vector3 - -
  • -
- - - - - -
-
- - value -
-
- Current slider value - - -
    -
  • value - number - -
  • -
- - - - - -
-
- - -
-
-
-generated by LDoc TESTING -Last updated 2015-01-01 12:00:00 -
-
- - diff --git a/docs/modules/StaticGrid.html b/docs/modules/StaticGrid.html deleted file mode 100644 index 5281ef5..0000000 --- a/docs/modules/StaticGrid.html +++ /dev/null @@ -1,1094 +0,0 @@ - - - - - Defold Druid UI Framework - - - - -
- -
- -
-
-
- - -
- - - - - - -
- -

Module StaticGrid

-

Component to handle component's position by row and columns.

-

- # Overview # -

The Static Grid component allows for positioning components in rows and columns. - It provides a static grid layout with constant node sizes, allowing for pre-calculated - node positions and the option to include gaps between nodes. -

# Notes # -

• In a static grid, the node size remains constant, enabling the calculation of node - positions before placement. If you want add gaps between nodes, increase the root prefab size, - including the padding and margin. -

• The static grid can automatically shift elements when nodes are added or removed. -

• When a node is added, the grid will set the node's parent to the specified parent_node. -

• You can obtain an array of positions for each element, which can be used to set - points of interest in a scroll component. -

• The size of all elements can be retrieved for setting up the size in a scroll component. -

• The grid can be bound to a scroll component for automatic resizing of the scroll content size. -

• The pivot of the parent_node affects the node placement within the grid. -

• A prefab node is used to determine the node size and anchor. -

• You can specify a position_function for animations using the - _static_grid:set_position_function(node, pos) callback. The default position function is gui.set_position(). -

Example Link

- - -

Functions

- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -
add(self, item, index, shift_policy, is_instant)Add new item to the grid
clear(self)Clear grid nodes array.
get_all_pos(self)Return array of all node positions
get_borders(self)Return grid content borders
get_index(self, pos)Return index for grid pos
get_index_by_node(self, node)Return grid index by node
get_offset(self)Return StaticGrid offset, where StaticGrid content starts.
get_pos(self, index)Return pos for grid node index
get_size(self)Return grid content size
init(self, parent, element, in_row)The StaticGrid constructor
refresh(self)Update grid content
remove(self, index, shift_policy, is_instant)Remove the item from the grid.
set_anchor(self, anchor)Set grid anchor.
set_in_row(self, in_row)Set new in_row elements for grid
set_item_size(self[, width[, height]])Set new node size for grid
set_items(self, nodes[, is_instant=false])Set new items to the grid.
set_position_function(self, callback)Change set position function for grid nodes.
sort_nodes(self, comparator)Sort grid nodes by custom comparator function
-

Tables

- - - - - -
styleComponent style params.
-

Fields

- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -
anchorItem anchor [0..1]
borderThe size of item content
first_indexThe first index of node in grid
last_indexThe last index of node in grid
node_sizeItem size
nodesList of all grid nodes
on_add_itemOn item add callback(self, node, index)
on_change_itemsOn item add, remove or change in_row callback(self, index|nil)
on_clearOn grid clear callback(self)
on_remove_itemOn item remove callback(self, index)
on_update_positionsOn update item positions callback(self)
parentParent gui node
pivotItem pivot [-0.5..0.5]
- -
-
- - -

Functions

- -
-
- - add(self, item, index, shift_policy, is_instant) -
-
- Add new item to the grid - - -

Parameters:

-
    -
  • self - StaticGrid - StaticGrid -
  • -
  • item - node - GUI node -
  • -
  • index - number or nil - The item position. By default add as last item -
  • -
  • shift_policy - number or nil - How shift nodes, if required. Default: const.SHIFT.RIGHT -
  • -
  • is_instant - boolean or nil - If true, update node positions instantly -
  • -
- - - - - -
-
- - clear(self) -
-
- Clear grid nodes array. GUI nodes will be not deleted! - If you want to delete GUI nodes, use static_grid.nodes array before grid:clear - - -

Parameters:

- - -

Returns:

-
    - - druid.static_grid - Current grid instance -
- - - - -
-
- - get_all_pos(self) -
-
- Return array of all node positions - - -

Parameters:

- - -

Returns:

-
    - - vector3[] - All grid node positions -
- - - - -
-
- - get_borders(self) -
-
- Return grid content borders - - -

Parameters:

- - -

Returns:

-
    - - vector3 - The grid content borders -
- - - - -
-
- - get_index(self, pos) -
-
- Return index for grid pos - - -

Parameters:

-
    -
  • self - StaticGrid - StaticGrid -
  • -
  • pos - vector3 - The node position in the grid -
  • -
- -

Returns:

-
    - - number - The node index -
- - - - -
-
- - get_index_by_node(self, node) -
-
- Return grid index by node - - -

Parameters:

-
    -
  • self - StaticGrid - StaticGrid -
  • -
  • node - node - The gui node in the grid -
  • -
- -

Returns:

-
    - - number - The node index -
- - - - -
-
- - get_offset(self) -
-
- Return StaticGrid offset, where StaticGrid content starts. - - -

Parameters:

-
    -
  • self - StaticGrid - StaticGrid The StaticGrid instance -
  • -
- -

Returns:

-
    - - vector3 - The StaticGrid offset -
- - - - -
-
- - get_pos(self, index) -
-
- Return pos for grid node index - - -

Parameters:

-
    -
  • self - StaticGrid - StaticGrid -
  • -
  • index - number - The grid element index -
  • -
- -

Returns:

-
    - - vector3 - @Node position -
- - - - -
-
- - get_size(self) -
-
- Return grid content size - - -

Parameters:

- - -

Returns:

-
    - - vector3 - The grid content size -
- - - - -
-
- - init(self, parent, element, in_row) -
-
- The StaticGrid constructor - - -

Parameters:

-
    -
  • self - StaticGrid - StaticGrid -
  • -
  • parent - string or node - The GUI Node container, where grid's items will be placed -
  • -
  • element - node - Element prefab. Need to get it size -
  • -
  • in_row - number or nil - How many nodes in row can be placed. By default 1 -
  • -
- - - - - -
-
- - refresh(self) -
-
- Update grid content - - -

Parameters:

- - - - - - -
-
- - remove(self, index, shift_policy, is_instant) -
-
- Remove the item from the grid. Note that gui node will be not deleted - - -

Parameters:

-
    -
  • self - StaticGrid - StaticGrid -
  • -
  • index - number - The grid node index to remove -
  • -
  • shift_policy - number or nil - How shift nodes, if required. Default: const.SHIFT.RIGHT -
  • -
  • is_instant - boolean or nil - If true, update node positions instantly -
  • -
- -

Returns:

-
    - - node - The deleted gui node from grid -
- - - - -
-
- - set_anchor(self, anchor) -
-
- Set grid anchor. Default anchor is equal to anchor of grid parent node - - -

Parameters:

-
    -
  • self - StaticGrid - StaticGrid -
  • -
  • anchor - vector3 - Anchor -
  • -
- - - - - -
-
- - set_in_row(self, in_row) -
-
- Set new in_row elements for grid - - -

Parameters:

-
    -
  • self - StaticGrid - StaticGrid -
  • -
  • in_row - number - The new in_row value -
  • -
- -

Returns:

-
    - - druid.static_grid - Current grid instance -
- - - - -
-
- - set_item_size(self[, width[, height]]) -
-
- Set new node size for grid - - -

Parameters:

-
    -
  • self - StaticGrid - StaticGrid -
  • -
  • width - number - The new node width - (optional) -
  • -
  • height - number - The new node height - (optional) -
  • -
- -

Returns:

-
    - - druid.static_grid - Current grid instance -
- - - - -
-
- - set_items(self, nodes[, is_instant=false]) -
-
- Set new items to the grid. All previous items will be removed - - -

Parameters:

-
    -
  • self - StaticGrid - StaticGrid -
  • -
  • nodes - node[] - The new grid nodes -
  • -
  • is_instant - boolean - If true, update node positions instantly - (default false) -
  • -
- - - - - -
-
- - set_position_function(self, callback) -
-
- Change set position function for grid nodes. It will call on - update poses on grid elements. Default: gui.set_position - - -

Parameters:

-
    -
  • self - StaticGrid - StaticGrid -
  • -
  • callback - function - Function on node set position -
  • -
- -

Returns:

-
    - - druid.static_grid - Current grid instance -
- - - - -
-
- - sort_nodes(self, comparator) -
-
- Sort grid nodes by custom comparator function - - -

Parameters:

-
    -
  • self - StaticGrid - StaticGrid -
  • -
  • comparator - function - The comparator function. (a, b) -> boolean -
  • -
- -

Returns:

-
    - - druid.static_grid - Current grid instance -
- - - - -
-
-

Tables

- -
-
- - style -
-
- Component style params. - You can override this component styles params in druid styles table - or create your own style - - -

Fields:

-
    -
  • IS_DYNAMIC_NODE_POSES - boolean or nil - If true, always center grid content as grid pivot sets. Default: false -
  • -
  • IS_ALIGN_LAST_ROW - boolean or nil - If true, always align last row of the grid as grid pivot sets. Default: false -
  • -
- - - - - -
-
-

Fields

- -
-
- - anchor -
-
- Item anchor [0..1] - - -
    -
  • anchor - vector3 - -
  • -
- - - - - -
-
- - border -
-
- The size of item content - - -
    -
  • border - vector4 - -
  • -
- - - - - -
-
- - first_index -
-
- The first index of node in grid - - -
    -
  • first_index - number - -
  • -
- - - - - -
-
- - last_index -
-
- The last index of node in grid - - -
    -
  • last_index - number - -
  • -
- - - - - -
-
- - node_size -
-
- Item size - - -
    -
  • node_size - vector3 - -
  • -
- - - - - -
-
- - nodes -
-
- List of all grid nodes - - -
    -
  • nodes - node[] - -
  • -
- - - - - -
-
- - on_add_item -
-
- On item add callback(self, node, index) - - - - - - - - -
-
- - on_change_items -
-
- On item add, remove or change in_row callback(self, index|nil) - - - - - - - - -
-
- - on_clear -
-
- On grid clear callback(self) - - - - - - - - -
-
- - on_remove_item -
-
- On item remove callback(self, index) - - - - - - - - -
-
- - on_update_positions -
-
- On update item positions callback(self) - - -
    -
  • on_update_positions - DruidEvent - DruidEvent -
  • -
- - - - - -
-
- - parent -
-
- Parent gui node - - -
    -
  • parent - node - -
  • -
- - - - - -
-
- - pivot -
-
- Item pivot [-0.5..0.5] - - -
    -
  • pivot - vector3 - -
  • -
- - - - - -
-
- - -
-
-
-generated by LDoc TESTING -Last updated 2015-01-01 12:00:00 -
-
- - diff --git a/docs/modules/Swipe.html b/docs/modules/Swipe.html deleted file mode 100644 index 9b7a2a9..0000000 --- a/docs/modules/Swipe.html +++ /dev/null @@ -1,288 +0,0 @@ - - - - - Defold Druid UI Framework - - - - -
- -
- -
-
-
- - -
- - - - - - -
- -

Module Swipe

-

Component to handle swipe gestures on node.

-

- Swipe will be triggered, if swipe was started and - ended on one node -

Example Link

- - -

Functions

- - - - - - - - - -
init(self, node, on_swipe_callback)The Swipe constructor
set_click_zone(self, zone)Strict swipe click area.
-

Tables

- - - - - -
styleComponent style params.
-

Fields

- - - - - - - - - - - - - -
click_zoneRestriction zone
nodeSwipe node
on_swipeTrigger on swipe event(self, swipe_side, dist, delta_time)
- -
-
- - -

Functions

- -
-
- - init(self, node, on_swipe_callback) -
-
- The Swipe constructor - - -

Parameters:

-
    -
  • self - Swipe - Swipe -
  • -
  • node - node - Gui node -
  • -
  • on_swipe_callback - function - Swipe callback for on_swipe_end event -
  • -
- - - - - -
-
- - set_click_zone(self, zone) -
-
- Strict swipe click area. Useful for - restrict events outside stencil node - - -

Parameters:

- - - - - - -
-
-

Tables

- -
-
- - style -
-
- Component style params. - You can override this component styles params in druid styles table - or create your own style - - -

Fields:

-
    -
  • SWIPE_TIME - number or nil - Maximum time for swipe trigger. Default: 0.4 -
  • -
  • SWIPE_THRESHOLD - number or nil - Minimum distance for swipe trigger. Default: 50 -
  • -
  • SWIPE_TRIGGER_ON_MOVE - boolean or nil - If true, trigger on swipe moving, not only release action. Default: false -
  • -
- - - - - -
-
-

Fields

- -
-
- - click_zone -
-
- Restriction zone - - -
    -
  • click_zone - node or nil - -
  • -
- - - - - -
-
- - node -
-
- Swipe node - - -
    -
  • node - node - -
  • -
- - - - - -
-
- - on_swipe -
-
- Trigger on swipe event(self, swipe_side, dist, delta_time) - - - - - - - - -
-
- - -
-
-
-generated by LDoc TESTING -Last updated 2015-01-01 12:00:00 -
-
- - diff --git a/docs/modules/Text.html b/docs/modules/Text.html deleted file mode 100644 index bcf6e6c..0000000 --- a/docs/modules/Text.html +++ /dev/null @@ -1,942 +0,0 @@ - - - - - Defold Druid UI Framework - - - - -
- -
- -
-
-
- - -
- - - - - - -
- -

Module Text

-

Component for Wrapping GUI Text Nodes: Druid Text -

## Overview ## -

Druid Text is a component that provides various adjustment modes for text nodes.

-

It allows text to be scaled down to fit within the size of the text node. -

## Notes ## -

• The text pivot can be changed using the text:set_pivot method. - The anchoring will be inside the text node's area size. -

• There are several text adjustment types available. The default is DOWNSCALE. - You can change the default adjustment type in the Text style. Refer to the example below to see all available adjustment types: -

- const.TEXT_ADJUST.DOWNSCALE: Changes the text's scale to fit within the text node's size. -

- const.TEXT_ADJUST.TRIM: Trims the text with a postfix (default: "...", can be overridden in styles) - to fit within the text node's size. -

- const.TEXT_ADJUST.NO_ADJUST: No adjustment is applied, similar - to the default Defold Text Node behavior. -

- const.TEXT_ADJUST.DOWNSCALE_LIMITED: Changes the text's scale - with a limited downscale. You can set the minimum scale using the text:set_minimal_scale() function. -

- const.TEXT_ADJUST.SCROLL: Changes the text's pivot to imitate scrolling within the text box. - For better effect, use with a stencil node. -

- const.TEXT_ADJUST.SCALE_THEN_SCROLL: Combines two modes: limited downscale first, then scroll. -

Example Link

- - -

Functions

- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -
get_text_adjust(self, adjust_type)Return current text adjust type
get_text_index_by_width(self, width)Get chars count by width
get_text_size(self, text)Calculate text width with font with respect to trailing space
init(self, node, value, adjust_type)The Text constructor
is_multiline(self)Return true, if text with line break
set_alpha(self, alpha)Set alpha
set_color(self, color)Set color
set_minimal_scale(self, minimal_scale)Set minimal scale for DOWNSCALE_LIMITED or SCALE_THEN_SCROLL adjust types
set_pivot(self, pivot)Set text pivot.
set_scale(self, scale)Set scale
set_size(self, size)Set text area size
set_text_adjust(self, adjust_type, minimal_scale)Set text adjust, refresh the current text visuals, if needed
set_to(self, set_to)Set text to text field
-

Tables

- - - - - -
styleComponent style params.
-

Fields

- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -
adjust_typeCurrent text size adjust settings
colorCurrent text color
last_valueThe last text value
nodeText node
node_idThe node id of text node
on_set_pivotOn change pivot callback(self, pivot)
on_set_textOn set text callback(self, text)
on_update_text_scaleOn adjust text size callback(self, new_scale, text_metrics)
posCurrent text position
scaleCurrent text node scale
start_scaleInitial text node scale
start_sizeInitial text node size
text_areaCurrent text node available are
- -
-
- - -

Functions

- -
-
- - get_text_adjust(self, adjust_type) -
-
- Return current text adjust type - - -

Parameters:

-
    -
  • self - -
  • -
  • adjust_type - -
  • -
- -

Returns:

-
    - - number - The current text adjust type -
- - - - -
-
- - get_text_index_by_width(self, width) -
-
- Get chars count by width - - -

Parameters:

-
    -
  • self - Text - Text -
  • -
  • width - number - -
  • -
- -

Returns:

-
    - - number - Chars count -
- - - - -
-
- - get_text_size(self, text) -
-
- Calculate text width with font with respect to trailing space - - -

Parameters:

-
    -
  • self - Text - Text -
  • -
  • text - string - |nil -
  • -
- -

Returns:

-
    -
  1. - number - Width
  2. -
  3. - number - Height
  4. -
- - - - -
-
- - init(self, node, value, adjust_type) -
-
- The Text constructor - - -

Parameters:

-
    -
  • self - Text - Text -
  • -
  • node - string or node - Node name or GUI Text Node itself -
  • -
  • value - string or nil - Initial text. Default value is node text from GUI scene. Default: nil -
  • -
  • adjust_type - string or nil - Adjust type for text. By default is DOWNSCALE. Look const.TEXT_ADJUST for reference. Default: DOWNSCALE -
  • -
- - - - - -
-
- - is_multiline(self) -
-
- Return true, if text with line break - - -

Parameters:

-
    -
  • self - Text - Text -
  • -
- -

Returns:

-
    - - boolean - Is text node with line break -
- - - - -
-
- - set_alpha(self, alpha) -
-
- Set alpha - - -

Parameters:

-
    -
  • self - Text - Text -
  • -
  • alpha - number - Alpha for node -
  • -
- -

Returns:

-
    - - Text - Current text instance -
- - - - -
-
- - set_color(self, color) -
-
- Set color - - -

Parameters:

-
    -
  • self - Text - Text -
  • -
  • color - vector4 - Color for node -
  • -
- -

Returns:

-
    - - Text - Current text instance -
- - - - -
-
- - set_minimal_scale(self, minimal_scale) -
-
- Set minimal scale for DOWNSCALE_LIMITED or SCALE_THEN_SCROLL adjust types - - -

Parameters:

-
    -
  • self - Text - Text -
  • -
  • minimal_scale - number - If pass nil - not use minimal scale -
  • -
- -

Returns:

-
    - - Text - Current text instance -
- - - - -
-
- - set_pivot(self, pivot) -
-
- Set text pivot. Text will re-anchor inside text area - - -

Parameters:

-
    -
  • self - Text - Text -
  • -
  • pivot - number - The gui.PIVOT_* constant -
  • -
- -

Returns:

-
    - - Text - Current text instance -
- - - - -
-
- - set_scale(self, scale) -
-
- Set scale - - -

Parameters:

-
    -
  • self - Text - Text -
  • -
  • scale - vector3 - Scale for node -
  • -
- -

Returns:

-
    - - Text - Current text instance -
- - - - -
-
- - set_size(self, size) -
-
- Set text area size - - -

Parameters:

-
    -
  • self - Text - Text -
  • -
  • size - vector3 - The new text area size -
  • -
- -

Returns:

-
    - - Text - Current text instance -
- - - - -
-
- - set_text_adjust(self, adjust_type, minimal_scale) -
-
- Set text adjust, refresh the current text visuals, if needed - - -

Parameters:

-
    -
  • self - Text - Text -
  • -
  • adjust_type - string or nil - See const.TEXT_ADJUST. If pass nil - use current adjust type -
  • -
  • minimal_scale - number or nil - If pass nil - not use minimal scale -
  • -
- -

Returns:

-
    - - Text - Current text instance -
- - - - -
-
- - set_to(self, set_to) -
-
- Set text to text field - - -

Parameters:

-
    -
  • self - Text - Text -
  • -
  • set_to - string - Text for node -
  • -
- -

Returns:

-
    - - Text - Current text instance -
- - - - -
-
-

Tables

- -
-
- - style -
-
- Component style params. - You can override this component styles params in druid styles table - or create your own style - - -

Fields:

-
    -
  • TRIM_POSTFIX - string or nil - The postfix for TRIM adjust type. Default: ... -
  • -
  • DEFAULT_ADJUST - string or nil - The default adjust type for any text component. Default: DOWNSCALE -
  • -
  • ADJUST_STEPS - string or nil - Amount of iterations for text adjust by height. Default: 20 -
  • -
  • ADJUST_SCALE_DELTA - string or nil - Scale step on each height adjust step. Default: 0.02 -
  • -
- - - - - -
-
-

Fields

- -
-
- - adjust_type -
-
- Current text size adjust settings - - -
    -
  • adjust_type - number - -
  • -
- - - - - -
-
- - color -
-
- Current text color - - -
    -
  • color - vector3 - -
  • -
- - - - - -
-
- - last_value -
-
- The last text value - - - - - - - - -
-
- - node -
-
- Text node - - -
    -
  • node - node - -
  • -
- - - - - -
-
- - node_id -
-
- The node id of text node - - -
    -
  • node_id - hash - -
  • -
- - - - - -
-
- - on_set_pivot -
-
- On change pivot callback(self, pivot) - - - - - - - - -
-
- - on_set_text -
-
- On set text callback(self, text) - - - - - - - - -
-
- - on_update_text_scale -
-
- On adjust text size callback(self, new_scale, text_metrics) - - -
    -
  • on_update_text_scale - DruidEvent - DruidEvent -
  • -
- - - - - -
-
- - pos -
-
- Current text position - - -
    -
  • pos - vector3 - -
  • -
- - - - - -
-
- - scale -
-
- Current text node scale - - -
    -
  • scale - vector3 - -
  • -
- - - - - -
-
- - start_scale -
-
- Initial text node scale - - -
    -
  • start_scale - vector3 - -
  • -
- - - - - -
-
- - start_size -
-
- Initial text node size - - -
    -
  • start_size - vector3 - -
  • -
- - - - - -
-
- - text_area -
-
- Current text node available are - - -
    -
  • text_area - vector3 - -
  • -
- - - - - -
-
- - -
-
-
-generated by LDoc TESTING -Last updated 2015-01-01 12:00:00 -
-
- - diff --git a/docs/modules/Timer.html b/docs/modules/Timer.html deleted file mode 100644 index 7fabb1b..0000000 --- a/docs/modules/Timer.html +++ /dev/null @@ -1,409 +0,0 @@ - - - - - Defold Druid UI Framework - - - - -
- -
- -
-
-
- - -
- - - - - - -
- -

Module Timer

-

Component to handle GUI timers.

-

- Timer updating by game delta time. If game is not focused - - timer will be not updated.

- - -

Functions

- - - - - - - - - - - - - - - - - -
init(self, node, seconds_from, seconds_to, callback)The Timer constructor
set_interval(self, from, to)Set time interval
set_state(self, is_on)Called when update
set_to(self, set_to)Set text to text field
-

Fields

- - - - - - - - - - - - - - - - - - - - - - - - - - - - - -
fromInitial timer value
nodeTrigger node
on_set_enabledOn timer change enabled state callback(self, is_enabled)
on_tickOn timer tick.
on_timer_endOn timer end callback
targetTarget timer value
valueCurrent timer value
- -
-
- - -

Functions

- -
-
- - init(self, node, seconds_from, seconds_to, callback) -
-
- The Timer constructor - - -

Parameters:

-
    -
  • self - Timer - Timer -
  • -
  • node - node - Gui text node -
  • -
  • seconds_from - number or nil - Start timer value in seconds -
  • -
  • seconds_to - number or nil - End timer value in seconds -
  • -
  • callback - function or nil - Function on timer end -
  • -
- - - - - -
-
- - set_interval(self, from, to) -
-
- Set time interval - - -

Parameters:

-
    -
  • self - Timer - Timer -
  • -
  • from - number - Start time in seconds -
  • -
  • to - number - Target time in seconds -
  • -
- - - - - -
-
- - set_state(self, is_on) -
-
- Called when update - - -

Parameters:

-
    -
  • self - Timer - Timer -
  • -
  • is_on - boolean or nil - Timer enable state -
  • -
- - - - - -
-
- - set_to(self, set_to) -
-
- Set text to text field - - -

Parameters:

-
    -
  • self - Timer - Timer -
  • -
  • set_to - number - Value in seconds -
  • -
- - - - - -
-
-

Fields

- -
-
- - from -
-
- Initial timer value - - -
    -
  • from - number - -
  • -
- - - - - -
-
- - node -
-
- Trigger node - - -
    -
  • node - node - -
  • -
- - - - - -
-
- - on_set_enabled -
-
- On timer change enabled state callback(self, is_enabled) - - - - - - - - -
-
- - on_tick -
-
- On timer tick. Fire every second callback(self, value) - - - - - - - - -
-
- - on_timer_end -
-
- On timer end callback - - -
    -
  • on_timer_end - DruidEvent - (self, Timer) DruidEvent -
  • -
- - - - - -
-
- - target -
-
- Target timer value - - -
    -
  • target - number - -
  • -
- - - - - -
-
- - value -
-
- Current timer value - - -
    -
  • value - number - -
  • -
- - - - - -
-
- - -
-
-
-generated by LDoc TESTING -Last updated 2015-01-01 12:00:00 -
-
- - diff --git a/docs/modules/druid.extended.layout.html b/docs/modules/druid.extended.layout.html deleted file mode 100644 index 4f01fd5..0000000 --- a/docs/modules/druid.extended.layout.html +++ /dev/null @@ -1,95 +0,0 @@ - - - - - Defold Druid UI Framework - - - - -
- -
- -
-
-
- - -
- - - - - - -
- -

Module druid.extended.layout

-

Druid layout module -

# Overview # -

Layout component works like Dynamic Grid before - for aligning elements in a row or column.

-

Works like a Figma layout. -

# Notes

- - - -
-
- - - - -
-
-
-generated by LDoc TESTING -Last updated 2015-01-01 12:00:00 -
-
- - diff --git a/docs/modules/druid.system.utf8.html b/docs/modules/druid.system.utf8.html deleted file mode 100644 index 0582106..0000000 --- a/docs/modules/druid.system.utf8.html +++ /dev/null @@ -1,93 +0,0 @@ - - - - - Defold Druid UI Framework - - - - -
- -
- -
-
-
- - -
- - - - - - -
- -

Module druid.system.utf8

-

-

- - - -
-
- - - - -
-
-
-generated by LDoc TESTING -Last updated 2015-01-01 12:00:00 -
-
- - diff --git a/docs_md/01-components.md b/docs_md/01-components.md deleted file mode 100644 index 6aa0735..0000000 --- a/docs_md/01-components.md +++ /dev/null @@ -1,399 +0,0 @@ -# Druid components - - -## Button -[Button API here](https://insality.github.io/druid/modules/Button.html) - -### Overview -Basic Druid input component. Handle input on node and provide different callbacks on touch events. - -### Setup -Create button with druid: `button = druid:new_button(node_name, callback, [params], [animation_node])` -Where node name is name of node from GUI scene. You can use `node_name` as input trigger zone and point another node for animation via `animation_node` - -### Usecase -_fill example usecases_ - -### Notes -- Button callback have next params: (self, params, button_instance) - - **self** - Druid self context - - **params** - Additional params, specified on button creating - - **button_instance** - button itself -- You can set _params_ on button callback on button creating: `druid:new_button("node_name", callback, params)`. This _params_ will pass in callback as second argument -- Button have next events: - - **on_click** - basic button callback - - **on_repeated_click** - repeated click callback, while holding the button, don't trigger if callback is empty - - **on_long_click** - callback on long button tap, don't trigger if callback is empty - - **on_hold_click** - hold callback, before long_click trigger, don't trigger if callback is empty - - **on_double_click** - different callback, if tap button 2+ in row, don't trigger if callback is empty -- Click event will not trigger, if between pressed and released state cursor was outside of node zone -- If button have double click event and it is triggered, usual callback will be not invoked -- If you have stencil on buttons and you don't want trigger them outside of stencil node, you can use `button:set_click_zone` to restrict button click zone -- Button can have key trigger to use then by key: `button:set_key_trigger` -- Animation node can be used for example to animate small icon on big panel. Node name of trigger zone will be `big panel` and animation node will be `small icon` - - -## Text -[Text API here](https://insality.github.io/druid/modules/Text.html) - -### Overview -Basic Druid text component. Text components by default have the text size adjusting. - -### Setup -Create text node with druid: `text = druid:new_text(node_name, [initial_value], [text_adjust_type])` - -### Notes -- Text component by default have auto adjust text sizing. Text never will be bigger, than text node size, which you can setup in GUI scene. It can be disabled on component creating by settings argument `is_no_adjust` to _true_ - -![](../media/text_autosize.png) - -- Text pivot can be changed with `text:set_pivot`, and text will save their position inside their text size box: - -![](../media/text_anchor.gif) - -- There is several text adjust types. Default Downscale. You can change the default adjust type in the text style table. - - **const.TEXT_ADJUST.DOWNSCALE** - Change text's scale to fit in the text node size - - **const.TEXT_ADJUST.TRIM** - Trim the text with postfix (default - "...", override in styles) to fit in the text node size - - **const.TEXT_ADJUST.NO_ADJUST** - No any adjust, like default Defold text node - - **const.TEXT_ADJUST.DOWNSCALE_LIMITED** - Change text's scale list downscale, but there is limit for text's scale - - **const.TEXT_ADJUST.SCROLL** - Change text's pivot to imitate scrolling in the text box. Use with stencil node for better effect. - - **const.TEXT_ADJUST.SCALE_THEN_SCROLL** - Combine two modes: first limited downscale, then scroll - - -## Blocker -[Blocker API here](https://insality.github.io/druid/modules/Blocker.html) - -### Overview -Druid component for block input. Use it to block input in special zone. - -### Setup -Create blocker component with druid: `druid:new_blocker(node_name)` - -### Notes -Explanation: -![](../media/blocker_scheme.png) - -Blue zone is **button** with close_window callback - -Yellow zone is blocker with window content - -So you can do the safe zones, when you have the big buttons - - -## Back Handler -[Back handler API here](https://insality.github.io/druid/modules/BackHandler.html) - -### Overview -Component to handle back button. It handle Android back button and Backspace key. Key triggers in `input.binding` should be setup for correct working. - -### Setup -Setup callback with `druid:new_back_handler(callback)` - -### Notes - - -## Lang text -[Lang text API here](https://insality.github.io/druid/modules/LangText.html) - -### Overview -Wrap on Text component to handle localization. It uses druid get_text_function to set text by it's id - -### Setup -Create lang text component with druid `text = druid:new_lang_text(node_name, locale_id)` - -### Notes - - -## Scroll -[Scroll API here](https://insality.github.io/druid/modules/Scroll.html) - -### Overview -Basic Druid scroll component. Handle all scrolling stuff in druid GUI - -### Setup -Create scroll component with druid: `scroll = druid:new_scroll(view_node, content_node)`. - -_View_node_ - is static part. It capturing user input and recognize scrolling touches - -_Content_node_ - is dynamic part. This node will change position by scroll system - -Initial scroll size will be equal to _content_node_ node size. The initial view box will be equal to _view_node_ node size - -Usually, Place _view_node_ and as children add _content_node_: -![](../media/scroll_scheme.png) -![](../media/scroll_outline.png) - -*Here content_node below view_node, in game content_node be able to scroll left until end* - -### Notes -- Scroll by default style have inertion and extra size for strecthing effect. It can be adjust via scroll [style settings](https://insality.github.io/druid/modules/Scroll.html#Style) -- You can setup "points of interest". Scroll always will be centered on closes point of interest. It is able to create slider without inertion and points of interest on each scroll element. -- Scroll have next events: - - *on_scroll* (self, position) On scroll move callback - - *on_scroll_to* (self, position, is_instant) On scroll_to function callback - - *on_point_scroll* (self, item_index, position) On scroll_to_index function callback -- You can adjust scroll content size by `scroll:set_size(node_size)`. It will setup new size to _content node_ -- You can enabled or disable inertion mode via `scroll:set_inert(state)` -- You can adjust extra stretch size via `scroll:set_extra_stretch_size` -- Multitouch is required for scroll. Scroll is correctly handling touch_id swap while dragging scroll - - -## Progress -[Progress API here](https://insality.github.io/druid/modules/Progress.html) - -### Overview -Basic Druid progress bar component - -### Setup -Create progress bar component with druid: `progress = druid:new_progress(node_name, key, init_value)` - -Node name should have maximum node size, so in GUI scene, node_name should be fully filled. -Key is value from druid const: const.SIDE.X (or just "x") or const.SIDE.Y (or just "y") - -### Notes -- Progress correct working with 9slice nodes, it trying to set size by _set_size_ first, if it is not possible, it set up sizing via _set_scale_ -- Progress bar can fill only by vertical or horizontal size. If you want make diagonal progress bar, just rotate node in GUI scene -- If you have glitchy or dark texture bug with progress bar, try to disable mipmaps in your texture profiles - - -## Slider -[Slider API here](https://insality.github.io/druid/modules/Slider.html) - -### Overview -Basic Druid slider component - -### Setup -Create slider component with druid: `slider = druid:new_slider(node_name, end_pos, callback)` - -Pin node (node_name in params) should be placed in zero position (initial). It will be available to mode Pin node between start pos and end pos. - -### Notes -- You can setup points of interests on slider via `slider:set_steps`. If steps are exist, slider values will be only from this steps (notched slider) -- For now, start pos and end pos should be on vertical or horizontal line (their x or y value should be equal) - - -## Input -[Input API here](https://insality.github.io/druid/modules/Input.html) - -### Overview -Basic Druid text input component - -### Setup -Create input component with druid: `input = druid:new_input(button_node_name, text_node_name, keyboard_type)` - -### Notes -- Input component handle user text input. Input contains from button and text components. Button needed for selecting/unselecting input field -- Long click on input field for clear and select input field (clearing can be disable via styles) -- Click outside of button to unselect input field -- On focus lost (game minimized) input field will be unselected -- You can setup max length of the text -- You can setup allowed characters. On add not allowed characters `on_input_wrong` will be called. By default it cause simple shake animation -- The keyboard for input will not show on mobile HTML5. So input field in mobile HTML5 is not working now -- To make work different keyboard type, make sure value in game.project Android:InputMethod set to HidderInputField (https://defold.com/manuals/project-settings/#input-method) - - -## Timer -[Timer API here](https://insality.github.io/druid/modules/Timer.html) - -### Overview -Handle timer work on gui text node - -### Setup -Create timer component with druid: `timer = druid:new_timer(text_node, from_seconds, to_seconds, callback)` - -### Notes -- Timer fires callback, when timer value equals to _to_seconds_ -- Timer will set text node with current timer value -- Timer uses update function to handle time - - -## Static Grid -[Static Grid API here](https://insality.github.io/druid/modules/StaticGrid.html) - -### Overview -Component for manage node positions. -Static grid have constant node size, so it possible to calculate node positions before placement. Nodes can be placed with gaps. -Static grid can shift elements on add/remove functions. - -### Setup -Create component with druid: `grid = druid:new_static_grid(parent_node, prefab_node, max_in_row_elements)` - -### Notes -- On _add node_ grid will set nodeup parent to _parent_node_ -- You can get array of position of every element for setup points of interest in scroll component -- You can get size of all elements for setup size in scroll component -- You can also bind the grid to the scroll component for auto resize scroll content size -- Pivot of parent_node matter for node placement -- _Prefab node_ used to get node size and anchor -- You can point *position_function* for animations with _static_grid:set_position_function(node, pos)_ callback. Default - *gui.set_position()* - - -## Dynamic Grid -[Dynamic Grid API here](https://insality.github.io/druid/modules/DynamicGrid.html) - -### Overview -Component for manage node positions with different node sizes. -Unlike Static Grid, Dynamic Grid can place nodes only in one row or in one column. -Dynamic Grid can't have gaps between elements -- you will get error, if try spawn element far away from others. -Dynamic Grid should have __West__, __East__, __South__ or __North__ pivot (vertical or horizontal element placement) - -### Setup -Create component with druid: `grid = druid:new_dynamic_grid(parent_node)` - -Check the _parent_node_ have correct pivot point. You will get the error otherwise. - -### Notes -- On _add node_ grid will set node parent to _parent_node_ -- You can get array of position of every element for setup points of interest in scroll component -- You can get size of all elements for setup size in scroll component -- You can also bind the grid to the scroll component for auto resize scroll content size -- Pivot of parent_node matter for node placement -- You can point *position_function* for animations with _static_grid:set_position_function(node, pos)_ callback. Default - *gui.set_position()* -- First node placed at Grid pivot point. Other nodes placed nearby of other nodes. -- On *add/remove* nodes always shifted. You can point the shift side in this functions (*is_shift_left* boolean argumentp - - -## Data List -[Data List API here](https://insality.github.io/druid/modules/DataList.html) - -### Overview -Component to manage data for huge dataset in scroll. DataList create elements only in scroll view. -It requires Druid Scroll and Druid Grid (Static or Dynamic) components - - -### Setup -Create component with druid: `grid = druid:new_data_list(scroll, grid, create_callback)` -- scroll - already created Scroll component -- grid - already created StaticGrid or DynamicGrid component -- create_function - your function to create node instances. This callback have next parameters: fun(self, data, index, data_list) - - self - Script/Druid context - - data- your element data - - index - element index - - data_list - current DataList component - -Create function should return root node and optionaly, Druid component. It’s required to manage create/remove lifecycle. - -### Notes -- Set data with `data_list:set_data({...})` after component initialize -- You can use `data_list:scroll_to_index()` function to show data element - - -## Hover -[Hover API here](https://insality.github.io/druid/modules/Hover.html) - -### Overview -System Druid component, handle hover node state. - -### Setup -Create hover component with druid: `hover = druid:new_hover(node, callback)` - -### Notes -- By default, hover handles _hover event_ with pressed touch action_id. So it's mean, what mouse or touch have to be pressed -- On desktop platforms there is _on_mouse_hover_ event. It's event on mouse hover without any action id -- By default, assume what node is on not hovered state (both _hover_ and _mouse_hover_) - - -## Swipe -[Swipe API here](https://insality.github.io/druid/modules/Swipe.html) - -### Overview -System Druid component, handle swipe actions on node - -### Setup -Create swipe component with druid: `hover = druid:new_swipe(node, swipe_callback)` - -### Notes -- Swipe callback have next params: (self, swipe_side, distance, time) - - **self** - Druid self context - - **swipe_side**: *string* - values from ["up", "down", "left", "right"] - - **distance**: *number* - in pixels, distance of swipe - - **time**: *number* - in seconds, time of swiping -- Swipe trigger only, if all input actions was on swipe node. If action will be outside of node, swipe status will be reseted -- In swipe style table you can adjust minimal distance and maximum time to trigg- Hover state trigger only with touch on mobile devices or button mouse holding. Just mouse over swipe -- In swipe style table you can toggle type of swipe triggering. if SWIPE_TRIGGER_ON_MOVE setup to true - swipe will trigger as swipe can be triggered. If setup to false - swipe will trigger only on released action -- If you have stencil on swipe node and you don't want trigger it outside of stencil node, you can use `swipe:set_click_zone` to restrict swipe zonethout buttons is now not allowed. - - -## Drag -[Drag API here](https://insality.github.io/druid/modules/Drag.html) - -### Overview -System Druid component, handle drag actions on node - -### Setup -Create drag component with druid: `hover = druid:new_drag(node, drag_callback)` - -### Notes -- Drag callback have next params: (self, dx, dy, total_x, total_y) - - **self**: Druid self context - - **dx**: *number* - delta x position - - **dy**: *number* - delta y position - - **total_x**: *number* - total delta x position - - **total_y**: *number* - total delta y position -- In styles, you can point the drag start deadzone. Default value is 10 pixels -- Drag correctly process multitouch. You can switch touch_id, while dragging on node with correct _dx_ and _dy_ values (made for correct scrolling) -- You can restrict horizontal or vertical dragging by setting `drag.can_x` or `drag.can_y` to _false_ value -- You can get info about current drag state: - - _is_touch_ - Is currently node touching - - _is_drag_ - Is currently node is dragging - - _x_ and _y_ - Current touch position - - _touch_start_pos_ - Touch stat positions -- Drag have next events: - - _on_touch_start_ (self) - Event on touch start - - _on_touch_end_ (self) - Event on touch end - - _on_drag_start_ (self) - Event on drag start - - _on_drag_ (self, dx, dy) - Event on drag process - - _on_drag_end_ (self) - Event on drag end -- Drag node zone can be restricted via `drag:set_click_zone(node)` - - -## Hotkey -[Hotkey API here](https://insality.github.io/druid/modules/Hotkey.html) - -### Overview -Druid component to handle keyboard hotkeys with key modificators - -### Setup -This is extended component. Before use it, you should register it: -``` -local druid = require("druid.druid") -local hotkey = require("druid.extended.hotkey") -druid.register("hotkey", hotkey) -``` -Create hotkey component with druid: `hotkey = druid:new_hotkey(keys_array, callback, [callback_argument])` - -### Notes -- Hotkey callback is similar with button callback: (self, callback_argument) - - **self**: Druid self context - - **callback_argument**: *value* - Any value passed at component constructor -- In styles, you can point the array of modificator keys. This keys should be pressed with main key to trigger the callback -- The keys_arrays should contains one action key and any amount of modificator keys -- You can add additional hotkeys to hotkey component with `hotkey:add_hotkey(keys_array, callback_argument)` - - -## Layout -[Layout API here](https://insality.github.io/druid/modules/Layout.html) - -### Overview -Component to arrange nodes inside layout node with margin/paddings settings. Works with different node sizes and pivots. Works in the same way as Figma AutoLayout - -### Setup -This is extended component. Before use it, you should register it: -``` -local druid = require("druid.druid") -local layout = require("druid.extended.layout") -druid.register("layout", layout) -``` -Create layout component with druid: `layout = druid:new_layout(node, layout_mode)` - - -### Notes -- Layout mode can be next: - - `horizontal` - arrange nodes in horizontal line - - `vertical` - arrange nodes in vertical line - - `horizontal_wrap` - arrange nodes in horizontal line with wrap to next line -- You can setup margin and padding for layout nodes -- You can set "justify" alignment to place nodes with the same margin between layout node borders -- You can set "hug" by content. This option will set layout node size by content size. Can be setup separately for width and height - diff --git a/docs_md/FAQ.md b/docs_md/FAQ.md deleted file mode 100644 index 2ac1fdc..0000000 --- a/docs_md/FAQ.md +++ /dev/null @@ -1,36 +0,0 @@ -# Druid FAQ - -Welcome to the Druid FAQ! Here are answers to some common questions you may have: - -### Q: How do I remove a Druid component instance? -**A:** To remove a created Druid component, use the `druid:remove` function. You can find more information in the [API reference](https://insality.github.io/druid/modules/DruidInstance.html#remove). - -### Q: How does Druid process input? -**A:** Input processing in Druid follows a Last-In-First-Out (LIFO) queue. Buttons added later have higher priority than those added earlier. To ensure correct button behavior, place your buttons from back to front in most cases. - -### Q: What is the purpose of the Blocker component? -**A:** The Blocker component is used to block input in a specific zone. It is useful for creating unclickable zones within buttons or for creating a panel of buttons on top of another button (e.g., closing windows by clicking on the window background). You can find more information about the Blocker component [here](https://github.com/Insality/druid/blob/master/docs_md/01-components.md#notes-2). - -### Q: What can I do with custom components? -**A:** With custom components in Druid, the possibilities are endless! Custom components allow you to separate component placement and game logic from other elements, making them reusable and easier to test and develop. Custom components can be used for scroll elements with buttons, custom GUI widgets, or even components with custom game logic. Templates often accompany custom components, allowing you to create multiple visual variations for a single component module. You can find some examples of custom components [here](https://github.com/Insality/druid-assets). - -### Q: How does `self:get_node()` work? -**A:** The `self:get_node()` function in a Druid component searches for nodes in the GUI directly or in cloned nodes created using `gui.clone_tree()`. It also considers nodes placed as templates, with the full node ID composed of the template name and node name (including cloned nodes). To ensure correct usage of `self:get_node()`, set up the component nodes using `self:set_template()` and `self:set_component_nodes()` before calling `self:get_node()`. It's best to pass the string name of the node, rather than the GUI node itself. - -### Q: My button in a scroll is clickable outside the stencil node. How can I fix this? -**A:** When using Druid, the stencil node does not prevent buttons from being clickable outside its bounds. To address this, you can set up an additional click zone on your buttons using the `button:set_click_zone()` function. After adding a button to the scroll, you can use the following code: -```lua --- Assuming the scroll view node is the stencil node -button:set_click_zone(scroll.view_node) -``` - -### Q: How do I use EmmyLua annotations? (from Druid 0.6.0) -**A:** EmmyLua annotations are used for better autocompletion and type inference in editors. To use the generated EmmyLua annotations, copy the `druid/annotations.lua` file to your project. After copying, you may need to restart the EmmyLua server to ensure the changes take effect. Once the annotations are processed, you can specify the type of Druid in your code: -```lua ----@type druid -local druid = require("druid.druid") - --- Autocomplete and type information should now work -``` - -Feel free to ask any additional questions you have about Druid! diff --git a/druid.code-workspace b/druid.code-workspace deleted file mode 100644 index ac43fbc..0000000 --- a/druid.code-workspace +++ /dev/null @@ -1,31 +0,0 @@ -{ - "folders": [ - { - "path": "." - } - ], - "settings": { - "files.exclude": { - "**/.git": true, // this is a default value - "**/.DS_Store": true, // this is a default value - - "**/node_modules": true, // this excludes all folders - // named "node_modules" from - // the explore tree - - // alternative version - "node_modules": true, // this excludes the folder - // only from the root of - // your workspace - ".internal": true, - "bundle": true, - "input": true, - "media": true, - "build": true, - "docs": true, - ".github": true, - ".deployer_cache": true, - "dist": true - } - } -} diff --git a/druid/annotations.lua b/druid/annotations.lua deleted file mode 100644 index f883f5e..0000000 --- a/druid/annotations.lua +++ /dev/null @@ -1,1899 +0,0 @@ --- luacheck: ignore ----@meta - ----@class druid -local druid = {} - ---- Create a new Druid instance for creating GUI components. ----@param context table The Druid context. Usually, this is the self of the gui_script. It is passed into all Druid callbacks. ----@param style table|nil The Druid style table to override style parameters for this Druid instance. ----@return druid_instance The Druid instance @{DruidInstance}. -function druid.new(context, style) end - ---- Call this function when the game language changes. ---- This function will translate all current LangText components. -function druid.on_language_change() end - ---- Set the window callback to enable on_focus_gain and on_focus_lost functions. ---- This is used to trigger the on_focus_lost and on_focus_gain functions in Druid components. ----@param event string Event param from window listener -function druid.on_window_callback(event) end - ---- Register a new external Druid component. ---- You can register your own components to make new alias: the druid:new_{name} function. For example, if you want to register a component called "my_component", you can create it using druid:new_my_component(...). This can be useful if you have your own "basic" components that you don't want to re-create each time. ----@param name string module name ----@param module table lua table with component -function druid.register(name, module) end - ---- Set your own default style for all Druid instances. ---- To create your own style file, copy the default style file and make changes to it. Register the new style before creating your Druid instances. ----@param style table Druid style module -function druid.set_default_style(style) end - ---- Set the Druid sound function to play UI sounds if used. ---- Set a function to play a sound given a sound_id. This function is used for button clicks to play the "click" sound. It can also be used to play sounds in your custom components (see the default Druid style file for an example). ----@param callback function Sound play callback -function druid.set_sound_function(callback) end - ---- Set the text function for the LangText component. ---- The Druid locale component will call this function to get translated text. After setting the text function, all existing locale components will be updated. ----@param callback function Get localized text function -function druid.set_text_function(callback) end - - ----@class druid.back_handler : druid.base_component ----@field on_back druid.event The @{DruidEvent} Event on back handler action. ----@field params any|nil Custom args to pass in the callback -local druid__back_handler = {} - - ----@class druid.base_component -local druid__base_component = {} - ---- Return all children components, recursive ----@param self druid.base_component @{BaseComponent} ----@return table Array of childrens if the Druid component instance -function druid__base_component.get_childrens(self) end - ---- Context used as first arg in all Druid events ---- Context is usually self of gui_script. ----@param self druid.base_component @{BaseComponent} ----@return table BaseComponent context -function druid__base_component.get_context(self) end - ---- Get Druid instance for inner component creation. ----@param self druid.base_component @{BaseComponent} ----@param template string|nil The template name ----@param nodes table|nil The nodes table ----@return druid_instance Druid instance with component context -function druid__base_component.get_druid(self, template, nodes) end - ---- Return component input priority ----@param self druid.base_component @{BaseComponent} ----@return number The component input priority -function druid__base_component.get_input_priority(self) end - ---- Return component name ----@param self druid.base_component @{BaseComponent} ----@return string The component name -function druid__base_component.get_name(self) end - ---- Get component node by name. ---- If component has nodes, node_or_name should be string It autopick node by template name or from nodes by gui.clone_tree if they was setup via component:set_nodes, component:set_template. If node is not found, the exception will fired ----@param self druid.base_component @{BaseComponent} ----@param node_or_name string|node Node name or node itself ----@return node Gui node -function druid__base_component.get_node(self, node_or_name) end - ---- Return the parent component if exist ----@param self druid.base_component @{BaseComponent} ----@return druid.base_component|nil The druid component instance or nil -function druid__base_component.get_parent_component(self) end - ---- Return parent component name ----@param self druid.base_component @{BaseComponent} ----@return string|nil The parent component name if exist or bil -function druid__base_component.get_parent_name(self) end - ---- Get current component template name. ----@param self druid.base_component @{BaseComponent} ----@return string Component full template name -function druid__base_component.get_template(self) end - ---- Return component UID. ---- UID generated in component creation order. ----@param self druid.base_component @{BaseComponent} ----@return number The component uid -function druid__base_component.get_uid(self) end - ---- Reset component input priority to default value ----@param self druid.base_component @{BaseComponent} ----@return number The component input priority -function druid__base_component.reset_input_priority(self) end - ---- Set component input state. ---- By default it enabled If input is disabled, the component will not receive input events ----@param self druid.base_component @{BaseComponent} ----@param state boolean|nil The component input state ----@return druid.base_component BaseComponent itself -function druid__base_component.set_input_enabled(self, state) end - ---- Set component input priority ---- Default value: 10 ----@param self druid.base_component @{BaseComponent} ----@param value number The new input priority value ----@param is_temporary boolean|nil If true, the reset input priority will return to previous value ----@return number The component input priority -function druid__base_component.set_input_priority(self, value, is_temporary) end - ---- Set current component nodes. ---- Use if your component nodes was cloned with `gui.clone_tree` and you got the node tree. ----@param self druid.base_component @{BaseComponent} ----@param nodes table BaseComponent nodes table ----@return druid.base_component @{BaseComponent} -function druid__base_component.set_nodes(self, nodes) end - ---- Set current component style table. ---- Invoke `on_style_change` on component, if exist. Component should handle their style changing and store all style params ----@param self druid.base_component @{BaseComponent} ----@param druid_style table|nil Druid style module ----@return druid.base_component @{BaseComponent} -function druid__base_component.set_style(self, druid_style) end - ---- Set component template name. ---- Use on all your custom components with GUI layouts used as templates. It will check parent template name to build full template name in self:get_node() ----@param self druid.base_component @{BaseComponent} ----@param template string BaseComponent template name ----@return druid.base_component @{BaseComponent} -function druid__base_component.set_template(self, template) end - - ----@class druid.blocker : druid.base_component ----@field node node Blocker node -local druid__blocker = {} - ---- The @{Blocker} constructor ----@param self druid.blocker @{Blocker} ----@param node node Gui node -function druid__blocker.init(self, node) end - ---- Return blocker enabled state ----@param self druid.blocker @{Blocker} ----@return boolean @True, if blocker is enabled -function druid__blocker.is_enabled(self) end - ---- Set enabled blocker component state. ---- Don't change node enabled state itself. ----@param self druid.blocker @{Blocker} ----@param state boolean|nil Enabled state -function druid__blocker.set_enabled(self, state) end - - ----@class druid.button : druid.base_component ----@field anim_node node|nil Button animation node. ----@field click_zone node|nil Additional button click area, defined by another GUI node ----@field hover druid.hover The @{Hover}: Button Hover component ----@field node node Button trigger node ----@field node_id hash The GUI node id from button node ----@field on_click druid.event The @{DruidEvent}: Event on successful release action over button. ----@field on_click_outside druid.event The @{DruidEvent}: Event calls if click event was outside of button. ----@field on_double_click druid.event The @{DruidEvent}: Event on double tap action over button. ----@field on_hold_callback druid.event The @{DruidEvent}: Event calls every frame before on_long_click event. ----@field on_long_click druid.event The @{DruidEvent}: Event on long tap action over button. ----@field on_pressed druid.event The @{DruidEvent}: Event triggered if button was pressed by user. ----@field on_repeated_click druid.event The @{DruidEvent}: Event on repeated action over button. ----@field params any Custom args for any Button event. ----@field style druid.button.style Component style params. -local druid__button = {} - ---- Get current key name to trigger this button. ----@param self druid.button ----@return hash The action_id of the input key -function druid__button.get_key_trigger(self) end - ---- The @{Button} constructor ----@param self druid.button @{Button} ----@param node string|node The node_id or gui.get_node(node_id) ----@param callback function On click button callback ----@param custom_args any|nil Button events custom arguments ----@param anim_node string|node|nil Node to animate instead of trigger node. -function druid__button.init(self, node, callback, custom_args, anim_node) end - ---- Get button enabled state. ---- By default all Buttons is enabled on creating. ----@param self druid.button @{Button} ----@return boolean @True, if button is enabled now, False overwise -function druid__button.is_enabled(self) end - ---- Set function for additional check for button click availability ----@param self druid.button ----@param check_function function|nil Should return true or false. If true - button can be pressed. ----@param failure_callback function|nil Function will be called on button click, if check function return false ----@return druid.button Current button instance -function druid__button.set_check_function(self, check_function, failure_callback) end - ---- Set additional button click area. ---- Useful to restrict click outside out stencil node or scrollable content. This functions calls automatically if you don't disable it in game.project: druid.no_stencil_check ----@param self druid.button @{Button} ----@param zone node|string|nil Gui node ----@return druid.button Current button instance -function druid__button.set_click_zone(self, zone) end - ---- Set button enabled state. ---- The style.on_set_enabled will be triggered. Disabled button is not clickable. ----@param self druid.button @{Button} ----@param state boolean|nil Enabled state ----@return druid.button Current button instance -function druid__button.set_enabled(self, state) end - ---- Set key name to trigger this button by keyboard. ----@param self druid.button @{Button} ----@param key hash|string The action_id of the input key ----@return druid.button Current button instance -function druid__button.set_key_trigger(self, key) end - ---- Set Button mode to work inside user HTML5 interaction event. ---- It's required to make protected things like copy & paste text, show mobile keyboard, etc The HTML5 button's doesn't call any events except on_click event. If the game is not HTML, html mode will be not enabled ----@param self druid.button ----@param is_web_mode boolean|nil If true - button will be called inside html5 callback ----@return druid.button Current button instance -function druid__button.set_web_user_interaction(self, is_web_mode) end - - ----@class druid.button.style ----@field AUTOHOLD_TRIGGER number|nil Maximum hold time to trigger button release while holding. Default: 0.8 ----@field DOUBLETAP_TIME number|nil Time between double taps. Default: 0.4 ----@field LONGTAP_TIME number|nil Minimum time to trigger on_hold_callback. Default: 0.4 ----@field on_click function function(self, node) ----@field on_click_disabled function function(self, node) ----@field on_hover function function(self, node, hover_state) ----@field on_mouse_hover function function(self, node, hover_state) ----@field on_set_enabled function function(self, node, enabled_state) -local druid__button__style = {} - - ----@class druid.data_list : druid.base_component ----@field grid druid.static_grid The Druid Grid component ----@field last_index number The current last index of visual elements ----@field on_element_add druid.event On DataList visual element created Event callback(self, index, node, instance) ----@field on_element_remove druid.event On DataList visual element created Event callback(self, index) ----@field on_scroll_progress_change druid.event Event triggered when scroll progress is changed; event(self, progress_value) ----@field scroll druid.scroll The Druid scroll component ----@field scroll_progress number The current progress of scroll posititon ----@field top_index number The current top index of visual elements -local druid__data_list = {} - ---- Add element to DataList. ---- Currenly untested ----@param self druid.data_list @{DataList} ----@param data table ----@param index number|nil ----@param shift_policy number|nil The constant from const.SHIFT.* -function druid__data_list.add(self, data, index, shift_policy) end - ---- Clear the DataList and refresh visuals ----@param self druid.data_list @{DataList} -function druid__data_list.clear(self) end - ---- Return all currenly created components in DataList ----@param self druid.data_list @{DataList} ----@return druid.base_component[] List of created nodes -function druid__data_list.get_created_components(self) end - ---- Return all currenly created nodes in DataList ----@param self druid.data_list @{DataList} ----@return node[] List of created nodes -function druid__data_list.get_created_nodes(self) end - ---- Return current data from DataList component ----@param self druid.data_list @{DataList} ----@return table The current data array -function druid__data_list.get_data(self) end - ---- Return index for data value ----@param self druid.data_list @{DataList} ----@param data table -function druid__data_list.get_index(self, data) end - ---- The @{DataList} constructor ----@param self druid.data_list @{DataList} ----@param scroll druid.scroll The @{Scroll} instance for Data List component ----@param grid druid.static_grid The @{StaticGrid} or @{DynamicGrid} instance for Data List component ----@param create_function function The create function callback(self, data, index, data_list). Function should return (node, [component]) -function druid__data_list.init(self, scroll, grid, create_function) end - ---- Druid System on_remove function ----@param self druid.data_list @{DataList} -function druid__data_list.on_remove(self) end - ---- Remove element from DataList. ---- Currenly untested ----@param self druid.data_list @{DataList} ----@param index number|nil ----@param shift_policy number|nil The constant from const.SHIFT.* -function druid__data_list.remove(self, index, shift_policy) end - ---- Remove element from DataList by data value. ---- Currenly untested ----@param self druid.data_list @{DataList} ----@param data table ----@param shift_policy number|nil The constant from const.SHIFT.* -function druid__data_list.remove_by_data(self, data, shift_policy) end - ---- Instant scroll to element with passed index ----@param self druid.data_list @{DataList} ----@param index number -function druid__data_list.scroll_to_index(self, index) end - ---- Set new data set for DataList component ----@param self druid.data_list @{DataList} ----@param data table The new data array ----@return druid.data_list Current DataList instance -function druid__data_list.set_data(self, data) end - ---- Set refresh function for DataList component ----@param self druid.data_list @{DataList} ----@param is_use_cache boolean Use cache version of DataList. Requires make setup of components in on_element_add callback and clean in on_element_remove ----@return druid.data_list Current DataList instance -function druid__data_list.set_use_cache(self, is_use_cache) end - - ----@class druid.drag : druid.base_component ----@field can_x boolean Is drag component process vertical dragging. ----@field can_y boolean Is drag component process horizontal. ----@field is_drag boolean Is component now dragging ----@field is_touch boolean Is component now touching ----@field node node Drag node ----@field on_drag druid.event on drag progress callback(self, dx, dy, total_x, total_y, touch) ----@field on_drag_end druid.event Event on drag end callback(self, total_x, total_y, touch) ----@field on_drag_start druid.event Event on drag start callback(self, touch) ----@field on_touch_end druid.event Event on touch end callback(self) ----@field on_touch_start druid.event Event on touch start callback(self) ----@field screen_x number Current touch x screen position ----@field screen_y number Current touch y screen position ----@field style druid.drag.style Component style params. ----@field touch_start_pos vector3 Touch start position ----@field x number Current touch x position ----@field y number Current touch y position -local druid__drag = {} - ---- The @{Drag} constructor ----@param self druid.drag @{Drag} ----@param node node GUI node to detect dragging ----@param on_drag_callback function Callback for on_drag_event(self, dx, dy) -function druid__drag.init(self, node, on_drag_callback) end - ---- Check if Drag component is enabled ----@param self druid.drag @{Drag} ----@return boolean -function druid__drag.is_enabled(self) end - ---- Strict drag click area. ---- Useful for restrict events outside stencil node ----@param self druid.drag @{Drag} ----@param node node|string|nil Gui node -function druid__drag.set_click_zone(self, node) end - ---- Set Drag input enabled or disabled ----@param self druid.drag @{Drag} ----@param is_enabled boolean|nil -function druid__drag.set_enabled(self, is_enabled) end - - ----@class druid.drag.style ----@field DRAG_DEADZONE number|nil Distance in pixels to start dragging. Default: 10 ----@field NO_USE_SCREEN_KOEF boolean|nil If screen aspect ratio affects on drag values. Default: false -local druid__drag__style = {} - - ----@class druid.dynamic_grid : druid.base_component ----@field border vector4 The size of item content ----@field first_index number The first index of node in grid ----@field last_index number The last index of node in grid ----@field node_size vector3 Item size ----@field nodes node[] List of all grid elements. ----@field on_add_item druid.event On item add callback(self, node, index) ----@field on_change_items druid.event On item add or remove callback(self, index) ----@field on_clear druid.event On grid clear callback(self) ----@field on_remove_item druid.event On item remove callback(self, index) ----@field on_update_positions druid.event On update item positions callback(self) ----@field parent node Parent gui node -local druid__dynamic_grid = {} - ---- Return side vector to correct node shifting ----@param self unknown ----@param side unknown ----@param is_forward unknown -function druid__dynamic_grid._get_side_vector(self, side, is_forward) end - ---- Add new node to the grid ----@param self druid.dynamic_grid @{DynamicGrid} ----@param node node Gui node ----@param index number|nil The node position. By default add as last node ----@param shift_policy number|nil How shift nodes, if required. Default: const.SHIFT.RIGHT ----@param is_instant boolean|nil If true, update node positions instantly -function druid__dynamic_grid.add(self, node, index, shift_policy, is_instant) end - ---- Clear grid nodes array. ---- GUI nodes will be not deleted! If you want to delete GUI nodes, use dynamic_grid.nodes array before grid:clear ----@param self druid.dynamic_grid @{DynamicGrid} ----@return druid.dynamic_grid Current grid instance -function druid__dynamic_grid.clear(self) end - ---- Return array of all node positions ----@param self druid.dynamic_grid @{DynamicGrid} ----@return vector3[] All grid node positions -function druid__dynamic_grid.get_all_pos(self) end - ---- Return grid content borders ----@param self druid.dynamic_grid @{DynamicGrid} ----@return vector3 The grid content borders -function druid__dynamic_grid.get_borders(self) end - ---- Return grid index by node ----@param self druid.dynamic_grid @{DynamicGrid} ----@param node node The gui node in the grid ----@return number The node index -function druid__dynamic_grid.get_index_by_node(self, node) end - ---- Return DynamicGrid offset, where DynamicGrid content starts. ----@param self druid.dynamic_grid @{DynamicGrid} The DynamicGrid instance ----@return vector3 The DynamicGrid offset -function druid__dynamic_grid.get_offset(self) end - ---- Return pos for grid node index ----@param self druid.dynamic_grid @{DynamicGrid} ----@param index number The grid element index ----@param node node The node to be placed ----@param origin_index number|nil Index of nearby node ----@return vector3 node position -function druid__dynamic_grid.get_pos(self, index, node, origin_index) end - ---- Return grid content size ----@param self druid.dynamic_grid @{DynamicGrid} ----@param border vector3 ----@return vector3 The grid content size -function druid__dynamic_grid.get_size(self, border) end - ---- The @{DynamicGrid} constructor ----@param self druid.dynamic_grid @{DynamicGrid} ----@param parent node The gui node parent, where items will be placed -function druid__dynamic_grid.init(self, parent) end - ---- Remove the item from the grid. ---- Note that gui node will be not deleted ----@param self druid.dynamic_grid @{DynamicGrid} ----@param index number The grid node index to remove ----@param shift_policy number|nil How shift nodes, if required. Default: const.SHIFT.RIGHT ----@param is_instant boolean|nil If true, update node positions instantly ----@return node The deleted gui node from grid -function druid__dynamic_grid.remove(self, index, shift_policy, is_instant) end - ---- Change set position function for grid nodes. ---- It will call on update poses on grid elements. Default: gui.set_position ----@param self druid.dynamic_grid @{DynamicGrid} ----@param callback function Function on node set position ----@return druid.dynamic_grid Current grid instance -function druid__dynamic_grid.set_position_function(self, callback) end - - ----@class druid.event -local druid__event = {} - ---- Clear the all event handlers ----@param self druid.event @{DruidEvent} -function druid__event.clear(self) end - ---- DruidEvent constructor ----@param callback function|nil Subscribe the callback on new event, if callback exist ----@param callback_context any|nil Additional context as first param to callback call -function druid__event.create(callback, callback_context) end - ---- Return true, if event not have handler ----@param self druid.event @{DruidEvent} ----@return boolean True if event not have handlers -function druid__event.is_empty(self) end - ---- Return true, if event have at lease one handler ----@param self druid.event @{DruidEvent} ----@return boolean True if event have handlers -function druid__event.is_exist(self) end - ---- Check is event subscribed. ----@param self druid.event @{DruidEvent} ----@param callback function Callback itself ----@param callback_context any|nil Additional context as first param to callback call ----@return boolean, number|nil @Is event subscribed, return index of callback in event as second param -function druid__event.is_subscribed(self, callback, callback_context) end - ---- Subscribe callback on event ----@param self druid.event @{DruidEvent} ----@param callback function Callback itself ----@param callback_context any|nil Additional context as first param to callback call, usually it's self ----@return boolean True if callback was subscribed -function druid__event.subscribe(self, callback, callback_context) end - ---- Trigger the event and call all subscribed callbacks ----@param self druid.event @{DruidEvent} ----@param ... any All event params -function druid__event.trigger(self, ...) end - ---- Unsubscribe callback on event ----@param self druid.event @{DruidEvent} ----@param callback function Callback itself ----@param callback_context any|nil Additional context as first param to callback call -function druid__event.unsubscribe(self, callback, callback_context) end - - ----@class druid.hotkey : druid.base_component ----@field button druid.button Button component from click_node ----@field click_node node|nil Button trigger node ----@field node node Visual node ----@field on_hotkey_pressed druid.event On hotkey released callback(self, argument) ----@field on_hotkey_released druid.event On hotkey released callback(self, argument) ----@field style druid.hotkey.style Component style params. -local druid__hotkey = {} - ---- Add hotkey for component callback ----@param self druid.hotkey @{Hotkey} ----@param keys string[]|hash[]|string|hash that have to be pressed before key pressed to activate ----@param callback_argument any|nil The argument to pass into the callback function ----@return druid.hotkey Current instance -function druid__hotkey.add_hotkey(self, keys, callback_argument) end - ---- The @{Hotkey} constructor ----@param self druid.hotkey @{Hotkey} ----@param keys string[]|string The keys to be pressed for trigger callback. Should contains one key and any modificator keys ----@param callback function The callback function ----@param callback_argument any|nil The argument to pass into the callback function -function druid__hotkey.init(self, keys, callback, callback_argument) end - ---- If true, the callback will be triggered on action.repeated ----@param self druid.hotkey @{Hotkey} ----@param is_enabled_repeated bool The flag value ----@return druid.hotkey -function druid__hotkey.set_repeat(self, is_enabled_repeated) end - - ----@class druid.hotkey.style ----@field MODIFICATORS string[] The list of action_id as hotkey modificators -local druid__hotkey__style = {} - - ----@class druid.hover : druid.base_component ----@field node node Hover node ----@field on_hover druid.event On hover callback(self, state, hover_instance) ----@field on_mouse_hover druid.event On mouse hover callback(self, state, hover_instance) ----@field style druid.hover.style Component style params. -local druid__hover = {} - ---- The @{Hover} constructor ----@param self druid.hover @{Hover} ----@param node node Gui node ----@param on_hover_callback function Hover callback ----@param on_mouse_hover function On mouse hover callback -function druid__hover.init(self, node, on_hover_callback, on_mouse_hover) end - ---- Return current hover enabled state ----@param self druid.hover @{Hover} ----@return boolean The hover enabled state -function druid__hover.is_enabled(self) end - ---- Return current hover state. ---- True if touch action was on the node at current time ----@param self druid.hover @{Hover} ----@return boolean The current hovered state -function druid__hover.is_hovered(self) end - ---- Return current hover state. ---- True if nil action_id (usually desktop mouse) was on the node at current time ----@param self druid.hover @{Hover} ----@return boolean The current hovered state -function druid__hover.is_mouse_hovered(self) end - ---- Strict hover click area. ---- Useful for no click events outside stencil node ----@param self druid.hover @{Hover} ----@param zone node|string|nil Gui node -function druid__hover.set_click_zone(self, zone) end - ---- Set enable state of hover component. ---- If hover is not enabled, it will not generate any hover events ----@param self druid.hover @{Hover} ----@param state boolean|nil The hover enabled state -function druid__hover.set_enabled(self, state) end - ---- Set hover state ----@param self druid.hover @{Hover} ----@param state boolean|nil The hover state -function druid__hover.set_hover(self, state) end - ---- Set mouse hover state ----@param self druid.hover @{Hover} ----@param state boolean|nil The mouse hover state -function druid__hover.set_mouse_hover(self, state) end - - ----@class druid.hover.style ----@field ON_HOVER_CURSOR string Mouse hover style on node hover ----@field ON_MOUSE_HOVER_CURSOR string Mouse hover style on node mouse hover -local druid__hover__style = {} - - ----@class druid.input : druid.base_component ----@field allowerd_characters string|nil Pattern matching for user input ----@field button druid.button Button component ----@field current_value string Current input value with marked text ----@field cursor_index number The cursor index. ----@field end_index number Theselection end index. ----@field is_empty boolean Is current input is empty now ----@field is_selected boolean Is current input selected now ----@field keyboard_type number Gui keyboard type for input field ----@field marked_text_width number Marked text width ----@field marked_value string Marked text for input field. ----@field max_length number|nil Max length for input text ----@field on_input_empty druid.event On input field text change to empty string callback(self, input_text) ----@field on_input_full druid.event On input field text change to max length string callback(self, input_text) ----@field on_input_select druid.event On input field select callback(self, input_instance) ----@field on_input_text druid.event On input field text change callback(self, input_text) ----@field on_input_unselect druid.event On input field unselect callback(self, input_text, input_instance) ----@field on_input_wrong druid.event On trying user input with not allowed character callback(self, params, input_text) ----@field on_select_cursor_change druid.event On cursor position change callback(self, cursor_index, start_index, end_index) ----@field previous_value string Previous input value ----@field start_index number The selection start index. ----@field style druid.input.style Component style params. ----@field text druid.text Text component ----@field text_width number Text width ----@field value string Current input value -local druid__input = {} - ---- Return current input field text ----@param self druid.input @{Input} ----@return string The current input field text -function druid__input.get_text(self) end - ---- Replace selected text with new text ----@param self druid.input @{Input} ----@param text string The text to replace selected text ----@return string New input text -function druid__input.get_text_selected_replaced(self, text) end - ---- The @{Input} constructor ----@param self druid.input @{Input} ----@param click_node node Node to enabled input component ----@param text_node node|druid.text Text node what will be changed on user input. You can pass text component instead of text node name @{Text} ----@param keyboard_type number|nil Gui keyboard type for input field -function druid__input.init(self, click_node, text_node, keyboard_type) end - ---- Change cursor position by delta ----@param self druid.input @{Input} ----@param delta number side for cursor position, -1 for left, 1 for right ----@param is_add_to_selection boolean (Shift key) ----@param is_move_to_end boolean (Ctrl key) -function druid__input.move_selection(self, delta, is_add_to_selection, is_move_to_end) end - ---- Reset current input selection and return previous value ----@param self druid.input @{Input} ----@return druid.input Current input instance -function druid__input.reset_changes(self) end - ---- Select input field. ---- It will show the keyboard and trigger on_select events ----@param self druid.input @{Input} -function druid__input.select(self) end - ---- Set cursor position in input field ----@param self druid.input @{Input} ----@param cursor_index number|nil Cursor index for cursor position, if nil - will be set to the end of the text ----@param start_index number|nil Start index for cursor position, if nil - will be set to the end of the text ----@param end_index number|nil End index for cursor position, if nil - will be set to the start_index ----@return druid.input Current input instance -function druid__input.select_cursor(self, cursor_index, start_index, end_index) end - ---- Set allowed charaters for input field. ---- See: https://defold.com/ref/stable/string/ ex: [%a%d] for alpha and numeric ----@param self druid.input @{Input} ----@param characters string Regulax exp. for validate user input ----@return druid.input Current input instance -function druid__input.set_allowed_characters(self, characters) end - ---- Set maximum length for input field. ---- Pass nil to make input field unliminted (by default) ----@param self druid.input @{Input} ----@param max_length number Maximum length for input text field ----@return druid.input Current input instance -function druid__input.set_max_length(self, max_length) end - ---- Set text for input field ----@param self druid.input @{Input} ----@param input_text string The string to apply for input field -function druid__input.set_text(self, input_text) end - ---- Remove selection from input. ---- It will hide the keyboard and trigger on_unselect events ----@param self druid.input @{Input} -function druid__input.unselect(self) end - - ----@class druid.input.style ----@field IS_LONGTAP_ERASE boolean Is long tap will erase current input data. Default: false ----@field IS_UNSELECT_ON_RESELECT boolean If true, call unselect on select selected input. Default: false ----@field MASK_DEFAULT_CHAR string Default character mask for password input. Default: *] ----@field on_input_wrong function (self, button_node) Callback on wrong user input ----@field on_select function (self, button_node) Callback on input field selecting ----@field on_unselect function (self, button_node) Callback on input field unselecting -local druid__input__style = {} - - ----@class druid.lang_text : druid.base_component ----@field node node Text node ----@field on_change druid.event On change text callback ----@field text druid.text The text component -local druid__lang_text = {} - ---- Format string with new text params on localized text ----@param self druid.lang_text @{LangText} ----@param a string|nil Optional param to string.format ----@param b string|nil Optional param to string.format ----@param c string|nil Optional param to string.format ----@param d string|nil Optional param to string.format ----@param e string|nil Optional param to string.format ----@param f string|nil Optional param to string.format ----@param g string|nil Optional param to string.format ----@return druid.lang_text Current instance -function druid__lang_text.format(self, a, b, c, d, e, f, g) end - ---- The @{LangText} constructor ----@param self druid.lang_text @{LangText} ----@param node string|node The node_id or gui.get_node(node_id) ----@param locale_id string|nil Default locale id or text from node as default ----@param adjust_type string|nil Adjust type for text. By default is DOWNSCALE. Look const.TEXT_ADJUST for reference -function druid__lang_text.init(self, node, locale_id, adjust_type) end - ---- Setup raw text to lang_text component ----@param self druid.lang_text @{LangText} ----@param text string Text for text node ----@return druid.lang_text Current instance -function druid__lang_text.set_to(self, text) end - ---- Translate the text by locale_id ----@param self druid.lang_text @{LangText} ----@param locale_id string Locale id ----@param a string|nil Optional param to string.format ----@param b string|nil Optional param to string.format ----@param c string|nil Optional param to string.format ----@param d string|nil Optional param to string.format ----@param e string|nil Optional param to string.format ----@param f string|nil Optional param to string.format ----@param g string|nil Optional param to string.format ----@return druid.lang_text Current instance -function druid__lang_text.translate(self, locale_id, a, b, c, d, e, f, g) end - - ----@class druid.layout : druid.base_component ----@field mode string Current layout mode ----@field node node Layout node -local druid__layout = {} - - ----@class druid.progress : druid.base_component ----@field key string The progress bar direction. ----@field max_size number Maximum size of progress bar ----@field node node Progress bar fill node ----@field on_change druid.event On progress bar change callback(self, new_value) ----@field scale vector3 Current progress bar scale ----@field size vector3 Current progress bar size ----@field slice vector4 Progress bar slice9 settings ----@field style druid.progress.style Component style params. -local druid__progress = {} - ---- Empty a progress bar ----@param self druid.progress @{Progress} -function druid__progress.empty(self) end - ---- Fill a progress bar and stop progress animation ----@param self druid.progress @{Progress} -function druid__progress.fill(self) end - ---- Return current progress bar value ----@param self druid.progress @{Progress} -function druid__progress.get(self) end - ---- The @{Progress} constructor ----@param self druid.progress @{Progress} ----@param node string|node Node name or GUI Node itself. ----@param key string Progress bar direction: const.SIDE.X or const.SIDE.Y ----@param init_value number|nil Initial value of progress bar. Default: 1 -function druid__progress.init(self, node, key, init_value) end - ---- Set progress bar max node size ----@param self druid.progress @{Progress} ----@param max_size vector3 The new node maximum (full) size ----@return druid.progress @{Progress} -function druid__progress.set_max_size(self, max_size) end - ---- Set points on progress bar to fire the callback ----@param self druid.progress @{Progress} ----@param steps number[] Array of progress bar values ----@param callback function Callback on intersect step value -function druid__progress.set_steps(self, steps, callback) end - ---- Instant fill progress bar to value ----@param self druid.progress @{Progress} ----@param to number Progress bar value, from 0 to 1 -function druid__progress.set_to(self, to) end - ---- Start animation of a progress bar ----@param self druid.progress @{Progress} ----@param to number value between 0..1 ----@param callback function|nil Callback on animation ends -function druid__progress.to(self, to, callback) end - - ----@class druid.progress.style ----@field MIN_DELTA number|nil Minimum step to fill progress bar. Default: 0.005 ----@field SPEED number|nil Progress bas fill rate. More -> faster. Default: 5 -local druid__progress__style = {} - - ----@class druid.rich_input ----@field cursor node On input field text change to empty string callback(self, input_text) ----@field cursor_position vector3 On input field text change to empty string callback(self, input_text) ----@field cursor_text node On input field text change to empty string callback(self, input_text) ----@field drag druid.drag On input field text change to empty string callback(self, input_text) ----@field druid druid_instance The component druid instance ----@field input druid.input On input field text change callback(self, input_text) ----@field input_text druid.text On input field text change to empty string callback(self, input_text) ----@field placeholder druid.text On input field text change to empty string callback(self, input_text) ----@field root node Root node ----@field text_position vector3 On input field text change to empty string callback(self, input_text) -local druid__rich_input = {} - ---- Set input field text ----@param self druid.rich_input @{RichInput} -function druid__rich_input.get_text(self) end - ---- The @{RichInput} constructor ----@param self druid.rich_input @{RichInput} ----@param template string The template string name ----@param nodes table Nodes table from gui.clone_tree -function druid__rich_input.init(self, template, nodes) end - ---- Select input field ----@param self druid.rich_input @{RichInput} -function druid__rich_input.select(self) end - ---- Set allowed charaters for input field. ---- See: https://defold.com/ref/stable/string/ ex: [%a%d] for alpha and numeric ----@param self druid.rich_input @{RichInput} ----@param characters string Regulax exp. for validate user input ----@return druid.rich_input Current instance -function druid__rich_input.set_allowed_characters(self, characters) end - ---- Set input field font ----@param self druid.rich_input @{RichInput} ----@param font hash The font hash ----@return druid.input Current input instance -function druid__rich_input.set_font(self, font) end - ---- Set placeholder text ----@param self druid.rich_input @{RichInput} ----@param placeholder_text string The placeholder text -function druid__rich_input.set_placeholder(self, placeholder_text) end - ---- Set input field text ----@param self druid.rich_input @{RichInput} ----@param text string The input text ----@return druid.input Current input instance -function druid__rich_input.set_text(self, text) end - - ----@class druid.rich_text : druid.base_component ----@field druid druid_instance The component druid instance ----@field root node The root node of the Rich Text ----@field style druid.rich_text.style Component style params. ----@field text_prefab node The text prefab node -local druid__rich_text = {} - ---- Split a word into it's characters ----@param self druid.rich_text @{RichText} ----@param word druid.rich_text.word ----@return druid.rich_text.word[] characters -function druid__rich_text.characters(self, word) end - ---- Clear all created words. -function druid__rich_text.clear() end - ---- Get current line metrics ----@return druid.rich_text.lines_metrics -function druid__rich_text.get_line_metric() end - ---- Get current text ----@param self druid.rich_text @{RichText} ----@return string text -function druid__rich_text.get_text(self) end - ---- Get all current words. ----@return table druid.rich_text.word[] -function druid__rich_text.get_words() end - ---- The @{RichText} constructor ----@param self druid.rich_text @{RichText} ----@param text_node node|string The text node to make Rich Text ----@param value string|nil The initial text value. Default will be gui.get_text(text_node) -function druid__rich_text.init(self, text_node, value) end - ---- Set text for Rich Text ----@param self druid.rich_text @{RichText} ----@param text string|nil The text to set ----@return druid.rich_text.word[] words ----@return druid.rich_text.lines_metrics line_metrics -function druid__rich_text.set_text(self, text) end - ---- Get all words, which has a passed tag. ----@param self druid.rich_text @{RichText} ----@param tag string ----@return druid.rich_text.word[] words -function druid__rich_text.tagged(self, tag) end - - ----@class druid.rich_text.style ----@field ADJUST_SCALE_DELTA number|nil Scale step on each height adjust step. Default: 0.02 ----@field ADJUST_STEPS number|nil Amount steps of attemps text adjust by height. Default: 20 ----@field COLORS table|nil Rich Text color aliases. Default: {} -local druid__rich_text__style = {} - - ----@class druid.scroll : druid.base_component ----@field _is_inert boolean Flag, if scroll now moving by inertion ----@field available_pos vector4 Available position for content node: (min_x, max_y, max_x, min_y) ----@field available_size vector3 Size of available positions: (width, height, 0) ----@field content_node node Scroll content node ----@field drag druid.drag Drag Druid component ----@field inertion vector3 Current inert speed ----@field is_animate boolean Flag, if scroll now animating by gui.animate ----@field on_point_scroll druid.event On scroll_to_index function callback(self, index, point) ----@field on_scroll druid.event On scroll move callback(self, position) ----@field on_scroll_to druid.event On scroll_to function callback(self, target, is_instant) ----@field position vector3 Current scroll posisition ----@field selected number|nil Current index of points of interests ----@field style druid.scroll.style Component style params. ----@field target_position vector3 Current scroll target position ----@field view_node node Scroll view node ----@field view_size vector3 Scroll view size -local druid__scroll = {} - ---- Bind the grid component (Static or Dynamic) to recalculate scroll size on grid changes ----@param self druid.scroll @{Scroll} ----@param grid druid.static_grid Druid grid component ----@return druid.scroll Current scroll instance -function druid__scroll.bind_grid(self, grid) end - ---- Return current scroll progress status. ---- Values will be in [0..1] interval ----@param self druid.scroll @{Scroll} ----@return vector3 New vector with scroll progress values -function druid__scroll.get_percent(self) end - ---- Return vector of scroll size with width and height. ----@param self druid.scroll @{Scroll} ----@return vector3 Available scroll size -function druid__scroll.get_scroll_size(self) end - ---- The @{Scroll} constructor ----@param self druid.scroll @{Scroll} ----@param view_node string|node GUI view scroll node ----@param content_node string|node GUI content scroll node -function druid__scroll.init(self, view_node, content_node) end - ---- Return if scroll have inertion. ----@param self druid.scroll @{Scroll} ----@return boolean @If scroll have inertion -function druid__scroll.is_inert(self) end - ---- Check node if it visible now on scroll. ---- Extra border is not affected. Return true for elements in extra scroll zone ----@param self druid.scroll @{Scroll} ----@param node node The node to check ----@return boolean True if node in visible scroll area -function druid__scroll.is_node_in_view(self, node) end - ---- Start scroll to target point. ----@param self druid.scroll @{Scroll} ----@param point vector3 Target point ----@param is_instant boolean|nil Instant scroll flag -function druid__scroll.scroll_to(self, point, is_instant) end - ---- Scroll to item in scroll by point index. ----@param self druid.scroll @{Scroll} ----@param index number Point index ----@param skip_cb boolean|nil If true, skip the point callback -function druid__scroll.scroll_to_index(self, index, skip_cb) end - ---- Start scroll to target scroll percent ----@param self druid.scroll @{Scroll} ----@param percent vector3 target percent ----@param is_instant boolean|nil instant scroll flag -function druid__scroll.scroll_to_percent(self, percent, is_instant) end - ---- Strict drag scroll area. ---- Useful for restrict events outside stencil node ----@param self druid.drag ----@param node node|string Gui node -function druid__scroll.set_click_zone(self, node) end - ---- Set extra size for scroll stretching. ---- Set 0 to disable stretching effect ----@param self druid.scroll @{Scroll} ----@param stretch_size number|nil Size in pixels of additional scroll area ----@return druid.scroll Current scroll instance -function druid__scroll.set_extra_stretch_size(self, stretch_size) end - ---- Lock or unlock horizontal scroll ----@param self druid.scroll @{Scroll} ----@param state boolean|nil True, if horizontal scroll is enabled ----@return druid.scroll Current scroll instance -function druid__scroll.set_horizontal_scroll(self, state) end - ---- Enable or disable scroll inert. ---- If disabled, scroll through points (if exist) If no points, just simple drag without inertion ----@param self druid.scroll @{Scroll} ----@param state boolean|nil Inert scroll state ----@return druid.scroll Current scroll instance -function druid__scroll.set_inert(self, state) end - ---- Set points of interest. ---- Scroll will always centered on closer points ----@param self druid.scroll @{Scroll} ----@param points table Array of vector3 points ----@return druid.scroll Current scroll instance -function druid__scroll.set_points(self, points) end - ---- Set scroll content size. ---- It will change content gui node size ----@param self druid.scroll @{Scroll} ----@param size vector3 The new size for content node ----@param offset vector3|nil Offset value to set, where content is starts ----@return druid.scroll Current scroll instance -function druid__scroll.set_size(self, size, offset) end - ---- Lock or unlock vertical scroll ----@param self druid.scroll @{Scroll} ----@param state boolean|nil True, if vertical scroll is enabled ----@return druid.scroll Current scroll instance -function druid__scroll.set_vertical_scroll(self, state) end - ---- Set new scroll view size in case the node size was changed. ----@param self druid.scroll @{Scroll} ----@param size vector3 The new size for view node ----@return druid.scroll Current scroll instance -function druid__scroll.set_view_size(self, size) end - ---- Refresh scroll view size ----@param self druid.scroll @{Scroll} -function druid__scroll.update_view_size(self) end - - ----@class druid.scroll.style ----@field ANIM_SPEED number|nil Scroll gui.animation speed for scroll_to function. Default: 2 ----@field BACK_SPEED number|nil Scroll back returning lerp speed. Default: 35 ----@field EXTRA_STRETCH_SIZE number|nil extra size in pixels outside of scroll (stretch effect). Default: 0 ----@field FRICT number|nil Multiplier for free inertion. Default: 0 ----@field FRICT_HOLD number|nil Multiplier for inertion, while touching. Default: 0 ----@field INERT_SPEED number|nil Multiplier for inertion speed. Default: 30 ----@field INERT_THRESHOLD number|nil Scroll speed to stop inertion. Default: 3 ----@field POINTS_DEADZONE number|nil Speed to check points of interests in no_inertion mode. Default: 20 ----@field SMALL_CONTENT_SCROLL boolean|nil If true, content node with size less than view node size can be scrolled. Default: false ----@field WHEEL_SCROLL_BY_INERTION boolean|nil If true, wheel will add inertion to scroll. Direct set position otherwise.. Default: false ----@field WHEEL_SCROLL_INVERTED boolean|nil If true, invert direction for touchpad and mouse wheel scroll. Default: false ----@field WHEEL_SCROLL_SPEED boolean|nil The scroll speed via mouse wheel scroll or touchpad. Set to 0 to disable wheel scrolling. Default: 0 -local druid__scroll__style = {} - - ----@class druid.slider : druid.base_component ----@field dist vector3 Length between start and end position ----@field end_pos vector3 End pin node position ----@field is_drag boolean Current drag state ----@field node node Slider pin node ----@field on_change_value druid.event On change value callback(self, value) ----@field pos vector3 Current pin node position ----@field start_pos vector3 Start pin node position ----@field target_pos vector3 Targer pin node position ----@field value number Current slider value -local druid__slider = {} - ---- The @{Slider} constructor ----@param self druid.slider @{Slider} ----@param node node Gui pin node ----@param end_pos vector3 The end position of slider ----@param callback function|nil On slider change callback -function druid__slider.init(self, node, end_pos, callback) end - ---- Check if Slider component is enabled ----@param self druid.slider @{Slider} ----@return boolean -function druid__slider.is_enabled(self) end - ---- Set value for slider ----@param self druid.slider @{Slider} ----@param value number Value from 0 to 1 ----@param is_silent boolean|nil Don't trigger event if true -function druid__slider.set(self, value, is_silent) end - ---- Set Slider input enabled or disabled ----@param self druid.slider @{Slider} ----@param is_enabled boolean -function druid__slider.set_enabled(self, is_enabled) end - ---- Set input zone for slider. ---- User can touch any place of node, pin instantly will move at this position and node drag will start. This function require the Defold version 1.3.0+ ----@param self druid.slider @{Slider} ----@param input_node node|string|nil ----@return druid.slider @{Slider} -function druid__slider.set_input_node(self, input_node) end - ---- Set slider steps. ---- Pin node will apply closest step position ----@param self druid.slider @{Slider} ----@param steps number[] Array of steps ----@return druid.slider @{Slider} -function druid__slider.set_steps(self, steps) end - - ----@class druid.static_grid : druid.base_component ----@field anchor vector3 Item anchor [0..1] ----@field border vector4 The size of item content ----@field first_index number The first index of node in grid ----@field last_index number The last index of node in grid ----@field node_size vector3 Item size ----@field nodes node[] List of all grid nodes ----@field on_add_item druid.event On item add callback(self, node, index) ----@field on_change_items druid.event On item add, remove or change in_row callback(self, index|nil) ----@field on_clear druid.event On grid clear callback(self) ----@field on_remove_item druid.event On item remove callback(self, index) ----@field on_update_positions druid.event On update item positions callback(self) ----@field parent node Parent gui node ----@field pivot vector3 Item pivot [-0.5..0.5] ----@field style druid.static_grid.style Component style params. -local druid__static_grid = {} - ---- Add new item to the grid ----@param self druid.static_grid @{StaticGrid} ----@param item node GUI node ----@param index number|nil The item position. By default add as last item ----@param shift_policy number|nil How shift nodes, if required. Default: const.SHIFT.RIGHT ----@param is_instant boolean|nil If true, update node positions instantly -function druid__static_grid.add(self, item, index, shift_policy, is_instant) end - ---- Clear grid nodes array. ---- GUI nodes will be not deleted! If you want to delete GUI nodes, use static_grid.nodes array before grid:clear ----@param self druid.static_grid @{StaticGrid} ----@return druid.static_grid Current grid instance -function druid__static_grid.clear(self) end - ---- Return array of all node positions ----@param self druid.static_grid @{StaticGrid} ----@return vector3[] All grid node positions -function druid__static_grid.get_all_pos(self) end - ---- Return grid content borders ----@param self druid.static_grid @{StaticGrid} ----@return vector3 The grid content borders -function druid__static_grid.get_borders(self) end - ---- Return index for grid pos ----@param self druid.static_grid @{StaticGrid} ----@param pos vector3 The node position in the grid ----@return number The node index -function druid__static_grid.get_index(self, pos) end - ---- Return grid index by node ----@param self druid.static_grid @{StaticGrid} ----@param node node The gui node in the grid ----@return number The node index -function druid__static_grid.get_index_by_node(self, node) end - ---- Return StaticGrid offset, where StaticGrid content starts. ----@param self druid.static_grid @{StaticGrid} The StaticGrid instance ----@return vector3 The StaticGrid offset -function druid__static_grid.get_offset(self) end - ---- Return pos for grid node index ----@param self druid.static_grid @{StaticGrid} ----@param index number The grid element index ----@return vector3 @Node position -function druid__static_grid.get_pos(self, index) end - ---- Return grid content size ----@param self druid.static_grid @{StaticGrid} ----@return vector3 The grid content size -function druid__static_grid.get_size(self) end - ---- The @{StaticGrid} constructor ----@param self druid.static_grid @{StaticGrid} ----@param parent string|node The GUI Node container, where grid's items will be placed ----@param element node Element prefab. Need to get it size ----@param in_row number|nil How many nodes in row can be placed. By default 1 -function druid__static_grid.init(self, parent, element, in_row) end - ---- Update grid content ----@param self druid.static_grid @{StaticGrid} -function druid__static_grid.refresh(self) end - ---- Remove the item from the grid. ---- Note that gui node will be not deleted ----@param self druid.static_grid @{StaticGrid} ----@param index number The grid node index to remove ----@param shift_policy number|nil How shift nodes, if required. Default: const.SHIFT.RIGHT ----@param is_instant boolean|nil If true, update node positions instantly ----@return node The deleted gui node from grid -function druid__static_grid.remove(self, index, shift_policy, is_instant) end - ---- Set grid anchor. ---- Default anchor is equal to anchor of grid parent node ----@param self druid.static_grid @{StaticGrid} ----@param anchor vector3 Anchor -function druid__static_grid.set_anchor(self, anchor) end - ---- Set new in_row elements for grid ----@param self druid.static_grid @{StaticGrid} ----@param in_row number The new in_row value ----@return druid.static_grid Current grid instance -function druid__static_grid.set_in_row(self, in_row) end - ---- Set new node size for grid ----@param self druid.static_grid @{StaticGrid} ----@param width number The new node width ----@param height number The new node height ----@return druid.static_grid Current grid instance -function druid__static_grid.set_item_size(self, width, height) end - ---- Set new items to the grid. ---- All previous items will be removed ----@param self druid.static_grid @{StaticGrid} ----@param nodes node[] The new grid nodes ----@param is_instant boolean If true, update node positions instantly -function druid__static_grid.set_items(self, nodes, is_instant) end - ---- Change set position function for grid nodes. ---- It will call on update poses on grid elements. Default: gui.set_position ----@param self druid.static_grid @{StaticGrid} ----@param callback function Function on node set position ----@return druid.static_grid Current grid instance -function druid__static_grid.set_position_function(self, callback) end - ---- Sort grid nodes by custom comparator function ----@param self druid.static_grid @{StaticGrid} ----@param comparator function The comparator function. (a, b) -> boolean ----@return druid.static_grid Current grid instance -function druid__static_grid.sort_nodes(self, comparator) end - - ----@class druid.static_grid.style ----@field IS_ALIGN_LAST_ROW boolean|nil If true, always align last row of the grid as grid pivot sets. Default: false ----@field IS_DYNAMIC_NODE_POSES boolean|nil If true, always center grid content as grid pivot sets. Default: false -local druid__static_grid__style = {} - - ----@class druid.swipe : druid.base_component ----@field click_zone node|nil Restriction zone ----@field node node Swipe node ----@field on_swipe druid.event Trigger on swipe event(self, swipe_side, dist, delta_time) ----@field style druid.swipe.style Component style params. -local druid__swipe = {} - ---- The @{Swipe} constructor ----@param self druid.swipe @{Swipe} ----@param node node Gui node ----@param on_swipe_callback function Swipe callback for on_swipe_end event -function druid__swipe.init(self, node, on_swipe_callback) end - ---- Strict swipe click area. ---- Useful for restrict events outside stencil node ----@param self druid.swipe @{Swipe} ----@param zone node|string|nil Gui node -function druid__swipe.set_click_zone(self, zone) end - - ----@class druid.swipe.style ----@field SWIPE_THRESHOLD number|nil Minimum distance for swipe trigger. Default: 50 ----@field SWIPE_TIME number|nil Maximum time for swipe trigger. Default: 0.4 ----@field SWIPE_TRIGGER_ON_MOVE boolean|nil If true, trigger on swipe moving, not only release action. Default: false -local druid__swipe__style = {} - - ----@class druid.text : druid.base_component ----@field adjust_type number Current text size adjust settings ----@field color vector3 Current text color ----@field last_value string The last text value ----@field node node Text node ----@field node_id hash The node id of text node ----@field on_set_pivot druid.event On change pivot callback(self, pivot) ----@field on_set_text druid.event On set text callback(self, text) ----@field on_update_text_scale druid.event On adjust text size callback(self, new_scale, text_metrics) ----@field pos vector3 Current text position ----@field scale vector3 Current text node scale ----@field start_scale vector3 Initial text node scale ----@field start_size vector3 Initial text node size ----@field style druid.text.style Component style params. ----@field text_area vector3 Current text node available are -local druid__text = {} - ---- Return current text adjust type ----@param self unknown ----@param adjust_type unknown ----@return number The current text adjust type -function druid__text.get_text_adjust(self, adjust_type) end - ---- Get chars count by width ----@param self druid.text @{Text} ----@param width number ----@return number Chars count -function druid__text.get_text_index_by_width(self, width) end - ---- Calculate text width with font with respect to trailing space ----@param self druid.text @{Text} ----@param text string |nil ----@return number Width ----@return number Height -function druid__text.get_text_size(self, text) end - ---- The @{Text} constructor ----@param self druid.text @{Text} ----@param node string|node Node name or GUI Text Node itself ----@param value string|nil Initial text. Default value is node text from GUI scene. Default: nil ----@param adjust_type string|nil Adjust type for text. By default is DOWNSCALE. Look const.TEXT_ADJUST for reference. Default: DOWNSCALE -function druid__text.init(self, node, value, adjust_type) end - ---- Return true, if text with line break ----@param self druid.text @{Text} ----@return boolean Is text node with line break -function druid__text.is_multiline(self) end - ---- Set alpha ----@param self druid.text @{Text} ----@param alpha number Alpha for node ----@return druid.text Current text instance -function druid__text.set_alpha(self, alpha) end - ---- Set color ----@param self druid.text @{Text} ----@param color vector4 Color for node ----@return druid.text Current text instance -function druid__text.set_color(self, color) end - ---- Set minimal scale for DOWNSCALE_LIMITED or SCALE_THEN_SCROLL adjust types ----@param self druid.text @{Text} ----@param minimal_scale number If pass nil - not use minimal scale ----@return druid.text Current text instance -function druid__text.set_minimal_scale(self, minimal_scale) end - ---- Set text pivot. ---- Text will re-anchor inside text area ----@param self druid.text @{Text} ----@param pivot number The gui.PIVOT_* constant ----@return druid.text Current text instance -function druid__text.set_pivot(self, pivot) end - ---- Set scale ----@param self druid.text @{Text} ----@param scale vector3 Scale for node ----@return druid.text Current text instance -function druid__text.set_scale(self, scale) end - ---- Set text area size ----@param self druid.text @{Text} ----@param size vector3 The new text area size ----@return druid.text Current text instance -function druid__text.set_size(self, size) end - ---- Set text adjust, refresh the current text visuals, if needed ----@param self druid.text @{Text} ----@param adjust_type string|nil See const.TEXT_ADJUST. If pass nil - use current adjust type ----@param minimal_scale number|nil If pass nil - not use minimal scale ----@return druid.text Current text instance -function druid__text.set_text_adjust(self, adjust_type, minimal_scale) end - ---- Set text to text field ----@param self druid.text @{Text} ----@param set_to string Text for node ----@return druid.text Current text instance -function druid__text.set_to(self, set_to) end - - ----@class druid.text.style ----@field ADJUST_SCALE_DELTA string|nil Scale step on each height adjust step. Default: 0.02 ----@field ADJUST_STEPS string|nil Amount of iterations for text adjust by height. Default: 20 ----@field DEFAULT_ADJUST string|nil The default adjust type for any text component. Default: DOWNSCALE ----@field TRIM_POSTFIX string|nil The postfix for TRIM adjust type. Default: ... -local druid__text__style = {} - - ----@class druid.timer : druid.base_component ----@field from number Initial timer value ----@field node node Trigger node ----@field on_set_enabled druid.event On timer change enabled state callback(self, is_enabled) ----@field on_tick druid.event On timer tick. ----@field on_timer_end druid.event On timer end callback ----@field target number Target timer value ----@field value number Current timer value -local druid__timer = {} - ---- The @{Timer} constructor ----@param self druid.timer @{Timer} ----@param node node Gui text node ----@param seconds_from number|nil Start timer value in seconds ----@param seconds_to number|nil End timer value in seconds ----@param callback function|nil Function on timer end -function druid__timer.init(self, node, seconds_from, seconds_to, callback) end - ---- Set time interval ----@param self druid.timer @{Timer} ----@param from number Start time in seconds ----@param to number Target time in seconds -function druid__timer.set_interval(self, from, to) end - ---- Called when update ----@param self druid.timer @{Timer} ----@param is_on boolean|nil Timer enable state -function druid__timer.set_state(self, is_on) end - ---- Set text to text field ----@param self druid.timer @{Timer} ----@param set_to number Value in seconds -function druid__timer.set_to(self, set_to) end - - ----@class druid_instance -local druid_instance = {} - ---- Call this in gui_script final function. ----@param self druid_instance -function druid_instance.final(self) end - ---- Create @{BackHandler} component ----@param self druid_instance ----@param callback function|nil @The callback(self, custom_args) to call on back event ----@param params any|nil Callback argument ----@return druid.back_handler @{BackHandler} component -function druid_instance.new_back_handler(self, callback, params) end - ---- Create @{Blocker} component ----@param self druid_instance ----@param node string|node The node_id or gui.get_node(node_id) ----@return druid.blocker @{Blocker} component -function druid_instance.new_blocker(self, node) end - ---- Create @{Button} component ----@param self druid_instance ----@param node string|node The node_id or gui.get_node(node_id) ----@param callback function|nil Button callback ----@param params any|nil Button callback params ----@param anim_node node|string|nil Button anim node (node, if not provided) ----@return druid.button @{Button} component -function druid_instance.new_button(self, node, callback, params, anim_node) end - ---- Create @{DataList} component ----@param self druid_instance ----@param druid_scroll druid.scroll The Scroll instance for Data List component ----@param druid_grid druid.static_grid The @{StaticGrid} or @{DynamicGrid} instance for Data List component ----@param create_function function The create function callback(self, data, index, data_list). Function should return (node, [component]) ----@return druid.data_list @{DataList} component -function druid_instance.new_data_list(self, druid_scroll, druid_grid, create_function) end - ---- Create @{Drag} component ----@param self druid_instance ----@param node string|node The node_id or gui.get_node(node_id). Will used as user input node. ----@param on_drag_callback function|nil Callback for on_drag_event(self, dx, dy) ----@return druid.drag @{Drag} component -function druid_instance.new_drag(self, node, on_drag_callback) end - ---- Create @{DynamicGrid} component Deprecated ----@param self druid_instance ----@param parent_node string|node The node_id or gui.get_node(node_id). Parent of all Grid items. ----@return druid.dynamic_grid @{DynamicGrid} component -function druid_instance.new_dynamic_grid(self, parent_node) end - ---- Create @{Hotkey} component ----@param self druid_instance ----@param keys_array string|string[] Keys for trigger action. Should contains one action key and any amount of modificator keys ----@param callback function The callback function ----@param callback_argument any|nil The argument to pass into the callback function ----@return druid.hotkey @{Hotkey} component -function druid_instance.new_hotkey(self, keys_array, callback, callback_argument) end - ---- Create @{Hover} component ----@param self druid_instance ----@param node string|node The node_id or gui.get_node(node_id) ----@param on_hover_callback function|nil Hover callback ----@param on_mouse_hover_callback function|nil Mouse hover callback ----@return druid.hover @{Hover} component -function druid_instance.new_hover(self, node, on_hover_callback, on_mouse_hover_callback) end - ---- Create @{Input} component ----@param self druid_instance ----@param click_node string|node Button node to enabled input component ----@param text_node string|node|druid.text Text node what will be changed on user input ----@param keyboard_type number|nil Gui keyboard type for input field ----@return druid.input @{Input} component -function druid_instance.new_input(self, click_node, text_node, keyboard_type) end - ---- Create @{LangText} component ----@param self druid_instance ----@param node string|node The_node id or gui.get_node(node_id) ----@param locale_id string|nil Default locale id or text from node as default ----@param adjust_type string|nil Adjust type for text node. Default: const.TEXT_ADJUST.DOWNSCALE ----@return druid.lang_text @{LangText} component -function druid_instance.new_lang_text(self, node, locale_id, adjust_type) end - ---- Create @{Layout} component ----@param self druid_instance ----@param node string|node The_node id or gui.get_node(node_id). ----@param mode string The layout mode ----@return druid.layout @{Layout} component -function druid_instance.new_layout(self, node, mode) end - ---- Create @{Progress} component ----@param self druid_instance ----@param node string|node Progress bar fill node or node name ----@param key string Progress bar direction: const.SIDE.X or const.SIDE.Y ----@param init_value number|nil Initial value of progress bar. Default: 1 ----@return druid.progress @{Progress} component -function druid_instance.new_progress(self, node, key, init_value) end - ---- Create @{RichInput} component. ---- As a template please check rich_input.gui layout. ----@param self druid_instance ----@param template string The template string name ----@param nodes table Nodes table from gui.clone_tree ----@return druid.rich_input @{RichInput} component -function druid_instance.new_rich_input(self, template, nodes) end - ---- Create @{RichText} component. ----@param self druid_instance ----@param text_node string|node The text node to make Rich Text ----@param value string|nil The initial text value. Default will be gui.get_text(text_node) ----@return druid.rich_text @{RichText} component -function druid_instance.new_rich_text(self, text_node, value) end - ---- Create @{Scroll} component ----@param self druid_instance ----@param view_node string|node The node_id or gui.get_node(node_id). Will used as user input node. ----@param content_node string|node The node_id or gui.get_node(node_id). Will used as scrollable node inside view_node. ----@return druid.scroll @{Scroll} component -function druid_instance.new_scroll(self, view_node, content_node) end - ---- Create @{Slider} component ----@param self druid_instance ----@param pin_node string|node The_node id or gui.get_node(node_id). ----@param end_pos vector3 The end position of slider ----@param callback function|nil On slider change callback ----@return druid.slider @{Slider} component -function druid_instance.new_slider(self, pin_node, end_pos, callback) end - ---- Create @{StaticGrid} component ----@param self druid_instance ----@param parent_node string|node The node_id or gui.get_node(node_id). Parent of all Grid items. ----@param item string|node Item prefab. Required to get grid's item size. Can be adjusted separately. ----@param in_row number|nil How many nodes in row can be placed ----@return druid.static_grid @{StaticGrid} component -function druid_instance.new_static_grid(self, parent_node, item, in_row) end - ---- Create @{Swipe} component ----@param self druid_instance ----@param node string|node The node_id or gui.get_node(node_id). Will used as user input node. ----@param on_swipe_callback function|nil Swipe callback for on_swipe_end event ----@return druid.swipe @{Swipe} component -function druid_instance.new_swipe(self, node, on_swipe_callback) end - ---- Create @{Text} component ----@param self druid_instance ----@param node string|node The node_id or gui.get_node(node_id) ----@param value string|nil Initial text. Default value is node text from GUI scene. ----@param no_adjust boolean|nil If true, text will be not auto-adjust size ----@return druid.text @{Text} component -function druid_instance.new_text(self, node, value, no_adjust) end - ---- Create @{Timer} component ----@param self druid_instance ----@param node string|node Gui text node ----@param seconds_from number Start timer value in seconds ----@param seconds_to number|nil End timer value in seconds ----@param callback function|nil Function on timer end ----@return druid.timer @{Timer} component -function druid_instance.new_timer(self, node, seconds_from, seconds_to, callback) end - ---- Call this in gui_script on_input function. ---- Used for almost all components ----@param self druid_instance ----@param action_id hash Action_id from on_input ----@param action table Action from on_input ----@return boolean The boolean value is input was consumed -function druid_instance.on_input(self, action_id, action) end - ---- Call this in gui_script on_message function. ---- Used for special actions. See SPECIFIC_UI_MESSAGES table ----@param self druid_instance ----@param message_id hash Message_id from on_message ----@param message table Message from on_message ----@param sender url Sender from on_message -function druid_instance.on_message(self, message_id, message, sender) end - ---- Remove created component from Druid instance. ---- Component `on_remove` function will be invoked, if exist. ----@param self druid_instance ----@param component druid.base_component Component instance ----@return boolean True if component was removed -function druid_instance.remove(self, component) end - ---- Set blacklist components for input processing. ---- If blacklist is not empty and component contains in this list, component will be not processed on input step ----@param self druid_instance @{DruidInstance} ----@param blacklist_components table|druid.base_component|nil The array of component to blacklist ----@return self @{DruidInstance} -function druid_instance.set_blacklist(self, blacklist_components) end - ---- Set whitelist components for input processing. ---- If whitelist is not empty and component not contains in this list, component will be not processed on input step ----@param self druid_instance ----@param whitelist_components table|druid.base_component|nil The array of component to whitelist ----@return self @{DruidInstance} -function druid_instance.set_whitelist(self, whitelist_components) end - ---- Call this in gui_script update function. ---- Used for: scroll, progress, timer components ----@param self druid_instance ----@param dt number Delta time -function druid_instance.update(self, dt) end - - ----@class helper -local helper = {} - ---- Add all elements from source array to the target array ----@param target any[] Array to put elements from source ----@param source any[]|nil The source array to get elements from ----@return any[] The target array -function helper.add_array(target, source) end - ---- Centerate nodes by x position with margin. ---- This functions calculate total width of nodes and set position for each node. The centrate will be around 0 x position. ----@param margin number|nil Offset between nodes ----@param ... unknown Gui nodes -function helper.centrate_nodes(margin, ...) end - ---- Clamp value between min and max ----@param a number Value ----@param min number Min value ----@param max number Max value ----@return number Clamped value -function helper.clamp(a, min, max) end - ---- Check if value is in array and return index of it ----@param t table Array ----@param value unknown Value ----@return number|nil Index of value or nil -function helper.contains(t, value) end - ---- Make a copy table with all nested tables ----@param orig_table table Original table ----@return table Copy of original table -function helper.deepcopy(orig_table) end - ---- Calculate distance between two points ----@param x1 number First point x ----@param y1 number First point y ----@param x2 number Second point x ----@param y2 number Second point y ----@return number Distance -function helper.distance(x1, y1, x2, y2) end - ---- Distance from node position to his borders ----@param node node GUI node ----@param offset vector3|nil Offset from node position. Pass current node position to get non relative border values ----@return vector4 Vector4 with border values (left, top, right, down) -function helper.get_border(node, offset) end - ---- Return closest non inverted clipping parent node for given node ----@param node node GUI node ----@return node|nil The closest stencil node or nil -function helper.get_closest_stencil_node(node) end - ---- Get current GUI scale for each side ----@return number scale_x ----@return number scale_y -function helper.get_gui_scale() end - ---- Get node offset for given GUI pivot. ---- Offset shown in [-0.5 .. 0.5] range, where -0.5 is left or bottom, 0.5 is right or top. ----@param pivot number The gui.PIVOT_* constant ----@return vector3 Vector offset with [-0.5..0.5] values -function helper.get_pivot_offset(pivot) end - ---- Get node size adjusted by scale ----@param node node GUI node ----@return vector3 Scaled size -function helper.get_scaled_size(node) end - ---- Get cumulative parent's node scale ----@param node node Gui node ----@param include_passed_node_scale boolean|nil True if add current node scale to result ----@return vector3 The scene node scale -function helper.get_scene_scale(node, include_passed_node_scale) end - ---- Get current screen stretch multiplier for each side ----@return number stretch_x ----@return number stretch_y -function helper.get_screen_aspect_koef() end - ---- Get text metric from GUI node. ----@param text_node node ----@return GUITextMetrics -function helper.get_text_metrics_from_node(text_node) end - ---- Add value to array with shift policy ---- Shift policy can be: left, right, no_shift ----@param array table Array ----@param any unknown Item to insert ----@param index number|nil Index to insert. If nil, item will be inserted at the end of array ----@param shift_policy number|nil The druid_const.SHIFT.* constant ----@return any Inserted item -function helper.insert_with_shift(array, any, index, shift_policy) end - ---- Check if device is native mobile (Android or iOS) ----@return boolean Is mobile -function helper.is_mobile() end - ---- Check if device is mobile and can support multitouch ----@return boolean Is multitouch supported -function helper.is_multitouch_supported() end - ---- Check if device is HTML5 ----@return boolean Is web -function helper.is_web() end - ---- Check if device is HTML5 mobile ----@return boolean Is web mobile -function helper.is_web_mobile() end - ---- Lerp between two values ----@param a number First value ----@param b number Second value ----@param t number Lerp amount ----@return number Lerped value -function helper.lerp(a, b, t) end - ---- Remove value from array with shift policy ---- Shift policy can be: left, right, no_shift ----@param array table Array ----@param index number|nil Index to remove. If nil, item will be removed from the end of array ----@param shift_policy number|nil The druid_const.SHIFT.* constant ----@return any Removed item -function helper.remove_with_shift(array, index, shift_policy) end - ---- Round number to specified decimal places ----@param num number Number ----@param num_decimal_places number|nil Decimal places ----@return number Rounded number -function helper.round(num, num_decimal_places) end - ---- Return sign of value (-1, 0, 1) ----@param val number Value ----@return number Sign -function helper.sign(val) end - ---- Move value from current to target value with step amount ----@param current number Current value ----@param target number Target value ----@param step number Step amount ----@return number New value -function helper.step(current, target, step) end - ---- Simple table to one-line string converter ----@param t table ----@return string -function helper.table_to_string(t) end - - --- Manual Annotations -- - ----@class druid.component: druid.base_component - ----@class druid.rich_text.metrics ----@field width number ----@field height number ----@field offset_x number|nil ----@field offset_y number|nil ----@field max_ascent number ----@field max_descent number ----@field node_size vector3|nil @For images only - ----@class druid.rich_text.lines_metrics ----@field text_width number ----@field text_height number ----@field lines table - ----@class druid.rich_text.word ----@field node node ----@field relative_scale number ----@field color vector4 ----@field position vector3 ----@field offset vector3 ----@field scale vector3 ----@field size vector3 ----@field metrics druid.rich_text.metrics ----@field pivot userdata @ The gui.PIVOT_* constant ----@field text string ----@field shadow vector4 ----@field outline vector4 ----@field font string ----@field image druid.rich_text.image ----@field default_animation string ----@field anchor number ----@field br boolean ----@field nobr boolean ----@field source_text string ----@field image_color vector4 ----@field text_color vector4 - ----@class druid.rich_text.image ----@field texture string ----@field anim string ----@field width number ----@field height number - ----@class druid.rich_text.settings ----@field parent node ----@field size number ----@field fonts table ----@field scale vector3 ----@field color vector4 ----@field shadow vector4 ----@field outline vector4 ----@field position vector3 ----@field image_pixel_grid_snap boolean ----@field combine_words boolean ----@field default_animation string ----@field text_prefab node ----@field adjust_scale number ----@field default_texture string ----@field is_multiline boolean ----@field text_leading number ----@field font hash ----@field width number ----@field height number - ----@class GUITextMetrics ----@field width number ----@field height number ----@field max_ascent number ----@field max_descent number - ----@class utf8 ----@field len fun(s: string):number ----@field sub fun(s: string, start_index: number, length: number) ----@field reverse fun() ----@field char fun() ----@field unicode fun() ----@field gensub fun() ----@field byte fun() ----@field find fun() ----@field match fun(s: string, m: string) ----@field gmatch fun(s: string, m: string) ----@field gsub fun() ----@field dump fun() ----@field format fun() ----@field lower fun() ----@field upper fun() ----@field rep fun() - - ----Add generics to some functions. - ----Create new component. ----@generic T: druid.base_component ----@param self druid_instance ----@param component T Component module ----@param ... any Other component params to pass it to component:init function ----@return T Component instance -function druid_instance.new(self, component, ...) end \ No newline at end of file diff --git a/druid/base/back_handler.lua b/druid/base/back_handler.lua index 899e12e..5e9d297 100644 --- a/druid/base/back_handler.lua +++ b/druid/base/back_handler.lua @@ -1,70 +1,36 @@ --- Copyright (c) 2023 Maksim Tuprikov . This code is licensed under MIT license - ---- Component with event on back and backspace button. --- # Overview # --- --- Back Handler is recommended to put in every game window to close it --- or in main screen to call settings window. --- --- # Notes # --- --- • Back Handler inheritance @{BaseComponent}, you can use all of its methods in addition to those described here. --- --- • Back Handler react on release action ACTION_BACK or ACTION_BACKSPACE --- @usage --- local callback = function(self, params) ... end --- --- local params = {} --- local back_handler = self.druid:new_back_handler(callback, [params]) --- @module BackHandler --- @within BaseComponent --- @alias druid.back_handler - ---- The @{DruidEvent} Event on back handler action. --- --- Trigger on input action ACTION_BACK or ACTION_BACKSPACE --- @usage --- -- Subscribe additional callbacks: --- back_handler.on_back:subscribe(callback) --- @tfield DruidEvent on_back @{DruidEvent} - ---- Custom args to pass in the callback --- @usage --- -- Replace params on runtime: --- back_handler.params = { ... } --- @tfield any|nil params - ---- - -local Event = require("druid.event") +local event = require("event.event") local const = require("druid.const") local component = require("druid.component") -local BackHandler = component.create("back_handler") +---Component to handle back button. It handles Android back button and Backspace key. +--- +---### Setup +---Create back handler component with druid: `druid:new_back_handler(callback)` +--- +---### Notes +---- Key triggers in `input.binding` should be setup for correct working +---- It uses a key_back and key_backspace action ids +---@class druid.back_handler: druid.component +---@field on_back event fun(self: druid.back_handler, params: any?) Trigger on back handler action +---@field params any? Custom args to pass in the callback +local M = component.create("back_handler") ---- The @{BackHandler} constructor --- @tparam BackHandler self @{BackHandler} --- @tparam function callback @The callback(self, custom_args) to call on back event --- @tparam any|nil custom_args Button events custom arguments --- @local -function BackHandler.init(self, callback, custom_args) - self.params = custom_args - self.on_back = Event(callback) +---The Back Handler constructor +---@param callback function|nil The callback to call when the back handler is triggered +---@param params any? Custom args to pass in the callback +function M:init(callback, params) + self.params = params + self.on_back = event.create(callback) end ---- Component input handler --- @tparam BackHandler self @{BackHandler} --- @tparam string action_id on_input action id --- @tparam table action on_input action --- @local -function BackHandler.on_input(self, action_id, action) - if not action.released then - return false - end - - if action_id == const.ACTION_BACK or action_id == const.ACTION_BACKSPACE then +---@private +---@param action_id hash The action id +---@param action table The action table +---@return boolean is_consumed True if the input was consumed +function M:on_input(action_id, action) + if action.released and (action_id == const.ACTION_BACK or action_id == const.ACTION_BACKSPACE) then self.on_back:trigger(self:get_context(), self.params) return true end @@ -73,4 +39,4 @@ function BackHandler.on_input(self, action_id, action) end -return BackHandler +return M diff --git a/druid/base/blocker.lua b/druid/base/blocker.lua index 92fc414..f2190cb 100644 --- a/druid/base/blocker.lua +++ b/druid/base/blocker.lua @@ -1,50 +1,34 @@ --- Copyright (c) 2023 Maksim Tuprikov . This code is licensed under MIT license - ---- Component to consume input in special zone defined by GUI node. --- # Overview # --- --- # Notes # --- --- Blocker consume input if `gui.pick_node` works on it. --- --- • Blocker inheritance @{BaseComponent}, you can use all of its methods in addition to those described here. --- --- • Blocker initial enabled state is `gui.is_enabled(node, true)` --- --- • The Blocker node should be enabled to capture the input --- @usage --- local node = gui.get_node("blocker_node") --- local blocker = self.druid:new_blocker(node) --- @module Blocker --- @within BaseComponent --- @alias druid.blocker - ----Blocker node --- @tfield node node - ---- - local const = require("druid.const") local component = require("druid.component") -local Blocker = component.create("blocker") +---Druid component for block input. Use it to block input in special zone. +--- +---### Setup +---Create blocker component with druid: `druid:new_blocker(node_name)` +--- +---### Notes +---- Blocker can be used to create safe zones, where you have big buttons +---- Blocker will capture all input events that hit the node, preventing them from reaching other components +---- Blocker works placed as usual component in stack, so any other component can be placed on top of it and will work as usual +---@class druid.blocker: druid.component +---@field node node The node that will block input +---@field private _is_enabled boolean Whether blocker is enabled +local M = component.create("blocker") ---- The @{Blocker} constructor --- @tparam Blocker self @{Blocker} --- @tparam node node Gui node -function Blocker.init(self, node) +---The Blocker constructor +---@param node node|string The node to use as a blocker +function M:init(node) self.node = self:get_node(node) self._is_enabled = gui.is_enabled(self.node, true) end ---- Component input handler --- @tparam Blocker self @{Blocker} --- @tparam string action_id on_input action id --- @tparam table action on_input action --- @local -function Blocker.on_input(self, action_id, action) +---@private +---@param action_id string The action id +---@param action table The action table +---@return boolean is_consumed True if the input was consumed +function M:on_input(action_id, action) if action_id ~= const.ACTION_TOUCH and action_id ~= const.ACTION_MULTITOUCH and action_id ~= nil then @@ -67,22 +51,21 @@ function Blocker.on_input(self, action_id, action) end ---- Set enabled blocker component state. --- --- Don't change node enabled state itself. --- @tparam Blocker self @{Blocker} --- @tparam boolean|nil state Enabled state -function Blocker.set_enabled(self, state) +---Set blocker enabled state +---@param state boolean The new enabled state +---@return druid.blocker self The blocker instance +function M:set_enabled(state) self._is_enabled = state + + return self end ---- Return blocker enabled state --- @tparam Blocker self @{Blocker} --- @treturn boolean @True, if blocker is enabled -function Blocker.is_enabled(self) +---Get blocker enabled state +---@return boolean is_enabled True if the blocker is enabled +function M:is_enabled() return self._is_enabled end -return Blocker +return M diff --git a/druid/base/button.lua b/druid/base/button.lua index 9b09c48..d0f9aa9 100755 --- a/druid/base/button.lua +++ b/druid/base/button.lua @@ -1,307 +1,74 @@ --- Copyright (c) 2021 Maksim Tuprikov . This code is licensed under MIT license - ---- Druid Component for Handling User Click Interactions: Click, Long Click, Double Click, and More. --- --- # Overview # --- --- This component provides a versatile solution for handling user click interactions. --- It allows you to make any GUI node clickable and define various callbacks for different types of clicks. --- --- # Notes # --- --- • The click callback will not trigger if the cursor moves outside the node's --- area between the pressed and released states. --- --- • If a button has a double click event subscriber and the double click event is triggered, --- the regular click callback will not be triggered. --- --- • Buttons can be triggered using a keyboard key by calling the button:set_key_trigger method. --- --- • To animate a small icon on a big button panel, you can use an animation node. --- The trigger node name should be set as "big panel," and the animation node should be set as "small icon." --- --- Example Link --- @usage --- local function on_button_click(self, args, button) --- print("Button has clicked with params: " .. args) --- print("Also the button component is passed in callback params") --- end --- --- local custom_args = "Any variable to pass inside callback" --- local button = self.druid:new_button("button_name", on_button_click, custom_args) --- --- @module Button --- @within BaseComponent --- @alias druid.button - - ---- The @{DruidEvent}: Event on successful release action over button. --- @usage --- -- Custom args passed in Button constructor --- button.on_click:subscribe(function(self, custom_args, button_instance) --- print("On button click!") --- end) --- @tfield DruidEvent on_click @{DruidEvent} - - ---- The @{DruidEvent}: Event on repeated action over button. --- --- This callback will be triggered if user hold the button. The repeat rate pick from `input.repeat_interval` in game.project --- @usage --- -- Custom args passed in Button constructor --- button.on_repeated_click:subscribe(function(self, custom_args, button_instance, click_count) --- print("On repeated Button click!") --- end) --- @tfield DruidEvent on_repeated_click @{DruidEvent} - - ---- The @{DruidEvent}: Event on long tap action over button. --- --- This callback will be triggered if user pressed the button and hold the some amount of time. --- The amount of time picked from button style param: LONGTAP_TIME --- @usage --- -- Custom args passed in Button constructor --- button.on_long_click:subscribe(function(self, custom_args, button_instance, hold_time) --- print("On long Button click!") --- end) --- @tfield DruidEvent on_long_click @{DruidEvent} - - ---- The @{DruidEvent}: Event on double tap action over button. --- --- If secondary click was too fast after previous one, the double --- click will be called instead usual click (if on_double_click subscriber exists) --- @usage --- -- Custom args passed in Button constructor --- button.on_double_click:subscribe(function(self, custom_args, button_instance, click_amount) --- print("On double Button click!") --- end) --- @tfield DruidEvent on_double_click @{DruidEvent} - - ---- The @{DruidEvent}: Event calls every frame before on_long_click event. --- --- If long_click subscriber exists, the on_hold_callback will be called before long_click trigger. --- --- Usecase: Animate button progress of long tap --- @usage --- -- Custom args passed in Button constructor --- button.on_double_click:subscribe(function(self, custom_args, button_instance, time) --- print("On hold Button callback!") --- end) --- @tfield DruidEvent on_hold_callback @{DruidEvent} - - ---- The @{DruidEvent}: Event calls if click event was outside of button. --- --- This event will be triggered for each button what was not clicked on user click action --- --- Usecase: Hide the popup when click outside --- @usage --- -- Custom args passed in Button constructor --- button.on_click_outside:subscribe(function(self, custom_args, button_instance) --- print("On click Button outside!") --- end) --- @tfield DruidEvent on_click_outside @{DruidEvent} - - ---- The @{DruidEvent}: Event triggered if button was pressed by user. --- @usage --- -- Custom args passed in Button constructor --- button.on_pressed:subscribe(function(self, custom_args, button_instance) --- print("On Button pressed!") --- end) --- @tfield DruidEvent on_pressed @{DruidEvent} - ---- Button trigger node --- @tfield node node - ----The GUI node id from button node --- @tfield hash node_id - ---- Button animation node. --- In default case equals to clickable node. --- --- Usecase: You have the big clickable panel, but want to animate only one small icon on it. --- @tfield node|nil anim_node Default node - ----Custom args for any Button event. Setup in Button constructor --- @tfield any params - ---- The @{Hover}: Button Hover component --- @tfield Hover hover @{Hover} - ---- Additional button click area, defined by another GUI node --- @tfield node|nil click_zone - ---- - -local Event = require("druid.event") +local event = require("event.event") local const = require("druid.const") local helper = require("druid.helper") local component = require("druid.component") -local Button = component.create("button") +---Button style params. +---You can override this component styles params in Druid styles table or create your own style +---@class druid.button.style +---@field LONGTAP_TIME number|nil Minimum time to trigger on_hold_callback. Default: 0.4 +---@field AUTOHOLD_TRIGGER number|nil Maximum hold time to trigger button release while holding. Default: 0.8 +---@field DOUBLETAP_TIME number|nil Time between double taps. Default: 0.4 +---@field on_click fun(self, node)|nil +---@field on_click_disabled fun(self, node)|nil +---@field on_hover fun(self, node, hover_state)|nil +---@field on_mouse_hover fun(self, node, hover_state)|nil +---@field on_set_enabled fun(self, node, enabled_state)|nil + +---Basic Druid input component. Handle input on node and provide different callbacks on touch events. +--- +---### Setup +---Create button with druid: `button = druid:new_button(node_name, callback, [params], [animation_node])` +---Where node_name is name of node from GUI scene. You can use `node_name` as input trigger zone and point another node for animation via `animation_node` +--- +---### Notes +---- Button callback have next params: (self, params, button_instance) +---- - **self** - Druid self context +---- - **params** - Additional params, specified on button creating +---- - **button_instance** - button itself +---- You can set _params_ on button callback on button creating: `druid:new_button("node_name", callback, params)`. +---- Button have several events like on_click, on_repeated_click, on_long_click, on_hold_click, on_double_click +---- Click event will not trigger if between pressed and released state cursor was outside of node zone +---- Button can have key trigger to use them by key: `button:set_key_trigger` +---- +---@class druid.button: druid.component +---@field on_click event fun(self, custom_args, button_instance) +---@field on_pressed event fun(self, custom_args, button_instance) +---@field on_repeated_click event fun(self, custom_args, button_instance, click_count) Repeated click callback, while holding the button +---@field on_long_click event fun(self, custom_args, button_instance, hold_time) Callback on long button tap +---@field on_double_click event fun(self, custom_args, button_instance, click_amount) Different callback, if tap button 2+ in row +---@field on_hold_callback event fun(self, custom_args, button_instance, press_time) Hold callback, before long_click trigger +---@field on_click_outside event fun(self, custom_args, button_instance) +---@field node node Clickable node +---@field node_id hash Node id +---@field anim_node node Animation node. In default case equals to clickable node +---@field params any Custom arguments for any Button event +---@field hover druid.hover Hover component for this button +---@field click_zone node|nil Click zone node to restrict click area +---@field start_scale vector3 Start scale of the button +---@field start_pos vector3 Start position of the button +---@field disabled boolean Is button disabled +---@field key_trigger hash Key trigger for this button +---@field style table Style for this button +local M = component.create("button") -local function is_input_match(self, action_id) - if action_id == const.ACTION_TOUCH or action_id == const.ACTION_MULTITOUCH then - return true - end - - if self.key_trigger and action_id == self.key_trigger then - return true - end - - return false -end - - -local function on_button_hover(self, hover_state) - self.style.on_hover(self, self.anim_node, hover_state) -end - - -local function on_button_mouse_hover(self, hover_state) - self.style.on_mouse_hover(self, self.anim_node, hover_state) -end - - -local function on_button_click(self) - if self._is_html5_mode then - self._is_html5_listener_set = false - html5.set_interaction_listener(nil) - end - self.click_in_row = 1 - self.on_click:trigger(self:get_context(), self.params, self) - self.style.on_click(self, self.anim_node) -end - - -local function on_button_repeated_click(self) - if not self.is_repeated_started then - self.click_in_row = 0 - self.is_repeated_started = true - end - - self.click_in_row = self.click_in_row + 1 - self.on_repeated_click:trigger(self:get_context(), self.params, self, self.click_in_row) - self.style.on_click(self, self.anim_node) -end - - -local function on_button_long_click(self) - self.click_in_row = 1 - local time = socket.gettime() - self.last_pressed_time - self.on_long_click:trigger(self:get_context(), self.params, self, time) - self.style.on_click(self, self.anim_node) -end - - -local function on_button_double_click(self) - self.click_in_row = self.click_in_row + 1 - self.on_double_click:trigger(self:get_context(), self.params, self, self.click_in_row) - self.style.on_click(self, self.anim_node) -end - - -local function on_button_hold(self, press_time) - self.on_hold_callback:trigger(self:get_context(), self.params, self, press_time) -end - - -local function on_button_release(self) - if self.is_repeated_started then - return false - end - - local check_function_result = true - if self._check_function then - check_function_result = self._check_function(self:get_context()) - end - - if self.disabled then - self.style.on_click_disabled(self, self.anim_node) - return true - elseif not check_function_result then - if self._failure_callback then - self._failure_callback(self:get_context()) - end - return true - else - if self.can_action and not self._is_html5_mode then - self.can_action = false - - local time = socket.gettime() - local is_long_click = (time - self.last_pressed_time) >= self.style.LONGTAP_TIME - is_long_click = is_long_click and self.on_long_click:is_exist() - - local is_double_click = (time - self.last_released_time) < self.style.DOUBLETAP_TIME - is_double_click = is_double_click and self.on_double_click:is_exist() - - if is_long_click then - local is_hold_complete = (time - self.last_pressed_time) >= self.style.AUTOHOLD_TRIGGER - if is_hold_complete then - on_button_long_click(self) - else - self.on_click_outside:trigger(self:get_context(), self.params, self) - end - elseif is_double_click then - on_button_double_click(self) - else - on_button_click(self) - end - - self.last_released_time = time - end - return true - end -end - - ---- Component style params. --- You can override this component styles params in Druid styles table --- or create your own style --- @table style --- @tfield number|nil LONGTAP_TIME Minimum time to trigger on_hold_callback. Default: 0.4 --- @tfield number|nil AUTOHOLD_TRIGGER Maximum hold time to trigger button release while holding. Default: 0.8 --- @tfield number|nil DOUBLETAP_TIME Time between double taps. Default: 0.4 --- @tfield function on_click function(self, node) --- @tfield function on_click_disabled function(self, node) --- @tfield function on_hover function(self, node, hover_state) --- @tfield function on_mouse_hover function(self, node, hover_state) --- @tfield function on_set_enabled function(self, node, enabled_state) -function Button.on_style_change(self, style) - self.style = {} - self.style.LONGTAP_TIME = style.LONGTAP_TIME or 0.4 - self.style.AUTOHOLD_TRIGGER = style.AUTOHOLD_TRIGGER or 0.8 - self.style.DOUBLETAP_TIME = style.DOUBLETAP_TIME or 0.4 - - self.style.on_click = style.on_click or function(_, node) end - self.style.on_click_disabled = style.on_click_disabled or function(_, node) end - self.style.on_mouse_hover = style.on_mouse_hover or function(_, node, state) end - self.style.on_hover = style.on_hover or function(_, node, state) end - self.style.on_set_enabled = style.on_set_enabled or function(_, node, state) end -end - - ---- The @{Button} constructor --- @tparam Button self @{Button} --- @tparam string|node node The node_id or gui.get_node(node_id) --- @tparam function callback On click button callback --- @tparam any|nil custom_args Button events custom arguments --- @tparam string|node|nil anim_node Node to animate instead of trigger node. -function Button.init(self, node, callback, custom_args, anim_node) +---The constructor for the button component +---@param node_or_node_id node|string Node name or GUI Node itself +---@param callback fun()|nil Callback on button click +---@param custom_args any|nil Custom args for any Button event, will be passed to callbacks +---@param anim_node node|string|nil Node to animate instead of trigger node, useful for animating small icons on big panels +function M:init(node_or_node_id, callback, custom_args, anim_node) self.druid = self:get_druid() - self.node = self:get_node(node) + self.node = self:get_node(node_or_node_id) self.node_id = gui.get_id(self.node) self.anim_node = anim_node and self:get_node(anim_node) or self.node self.start_scale = gui.get_scale(self.anim_node) self.start_pos = gui.get_position(self.anim_node) self.params = custom_args - self.hover = self.druid:new_hover(node, on_button_hover) - self.hover.on_mouse_hover:subscribe(on_button_mouse_hover) + self.hover = self.druid:new_hover(node_or_node_id, self._on_button_hover) + self.hover.on_mouse_hover:subscribe(self._on_button_mouse_hover) self.click_zone = nil self.is_repeated_started = false self.last_pressed_time = 0 @@ -315,18 +82,51 @@ function Button.init(self, node, callback, custom_args, anim_node) self._is_html5_listener_set = false -- Events - self.on_click = Event(callback) - self.on_pressed = Event() - self.on_repeated_click = Event() - self.on_long_click = Event() - self.on_double_click = Event() - self.on_hold_callback = Event() - self.on_click_outside = Event() + self.on_click = event.create(callback) + self.on_pressed = event.create() + self.on_repeated_click = event.create() + self.on_long_click = event.create() + self.on_double_click = event.create() + self.on_hold_callback = event.create() + self.on_click_outside = event.create() end -function Button.on_late_init(self) - if not self.click_zone and const.IS_STENCIL_CHECK then +---@private +---@param style druid.button.style +function M:on_style_change(style) + self.style = { + LONGTAP_TIME = style.LONGTAP_TIME or 0.4, + AUTOHOLD_TRIGGER = style.AUTOHOLD_TRIGGER or 0.8, + DOUBLETAP_TIME = style.DOUBLETAP_TIME or 0.4, + + on_click = style.on_click or function(_, node) end, + on_click_disabled = style.on_click_disabled or function(_, node) end, + on_mouse_hover = style.on_mouse_hover or function(_, node, state) end, + on_hover = style.on_hover or function(_, node, state) end, + on_set_enabled = style.on_set_enabled or function(_, node, state) end, + } +end + + +---Remove default button style animations +---@return druid.button self The current button instance +function M:set_animations_disabled() + local empty_function = function() end + + self.style.on_click = empty_function + self.style.on_hover = empty_function + self.style.on_mouse_hover = empty_function + self.style.on_set_enabled = empty_function + self.style.on_click_disabled = empty_function + + return self +end + + +---@private +function M:on_late_init() + if not self.click_zone then local stencil_node = helper.get_closest_stencil_node(self.node) if stencil_node then self:set_click_zone(stencil_node) @@ -335,8 +135,12 @@ function Button.on_late_init(self) end -function Button.on_input(self, action_id, action) - if not is_input_match(self, action_id) then +---@private +---@param action_id hash The action id +---@param action table The action table +---@return boolean is_consumed True if the input was consumed +function M:on_input(action_id, action) + if not self:_is_input_match(action_id) then return false end @@ -380,7 +184,7 @@ function Button.on_input(self, action_id, action) if self._is_html5_mode then self._is_html5_listener_set = true html5.set_interaction_listener(function() - on_button_click(self) + self:_on_button_click() end) end return is_consume @@ -388,26 +192,26 @@ function Button.on_input(self, action_id, action) -- While hold button, repeat rate pick from input.repeat_interval if action.repeated then - if self.on_repeated_click:is_exist() and self.can_action then - on_button_repeated_click(self) + if not self.on_repeated_click:is_empty() and self.can_action then + self:_on_button_repeated_click() return is_consume end end if action.released then - return on_button_release(self) and is_consume + return self:_on_button_release() and is_consume end - if self.can_action and self.on_long_click:is_exist() then + if self.can_action and not self.on_long_click:is_empty() then local press_time = socket.gettime() - self.last_pressed_time if self.style.AUTOHOLD_TRIGGER <= press_time then - on_button_release(self) + self:_on_button_release() return is_consume end if press_time >= self.style.LONGTAP_TIME then - on_button_hold(self, press_time) + self:_on_button_hold(press_time) return is_consume end end @@ -416,48 +220,20 @@ function Button.on_input(self, action_id, action) end -function Button.on_input_interrupt(self) +---@private +function M:on_input_interrupt() self.can_action = false self.hover:set_hover(false) self.hover:set_mouse_hover(false) end -function Button.on_message_input(self, node_id, message) - if node_id ~= self.node_id or self.disabled or not gui.is_enabled(self.node) then - return false - end - - if message.action == const.MESSAGE_INPUT.BUTTON_CLICK then - on_button_click(self) - end - - if message.action == const.MESSAGE_INPUT.BUTTON_LONG_CLICK then - on_button_long_click(self) - end - - if message.action == const.MESSAGE_INPUT.BUTTON_DOUBLE_CLICK then - on_button_double_click(self) - end - - if message.action == const.MESSAGE_INPUT.BUTTON_REPEATED_CLICK then - on_button_repeated_click(self) - self.is_repeated_started = false - self.last_pressed_time = socket.gettime() - end -end - - ---- Set button enabled state. --- The style.on_set_enabled will be triggered. --- Disabled button is not clickable. --- @tparam Button self @{Button} --- @tparam boolean|nil state Enabled state --- @treturn Button Current button instance --- @usage --- button:set_enabled(false) --- button:set_enabled(true) -function Button.set_enabled(self, state) +---Set button enabled state. +---The style.on_set_enabled will be triggered. +---Disabled button is not clickable. +---@param state boolean|nil Enabled state +---@return druid.button self The current button instance +function M:set_enabled(state) self.disabled = not state self.hover:set_enabled(state) self.style.on_set_enabled(self, self.node, state) @@ -466,84 +242,192 @@ function Button.set_enabled(self, state) end ---- Get button enabled state. --- --- By default all Buttons is enabled on creating. --- @tparam Button self @{Button} --- @treturn boolean @True, if button is enabled now, False overwise --- @usage --- local is_enabled = button:is_enabled() -function Button.is_enabled(self) +---Get button enabled state. +---By default all Buttons are enabled on creating. +---@return boolean is_enabled True, if button is enabled now, False otherwise +function M:is_enabled() return not self.disabled end ---- Set additional button click area. --- Useful to restrict click outside out stencil node or scrollable content. --- --- This functions calls automatically if you don't disable it in game.project: druid.no_stencil_check --- @tparam Button self @{Button} --- @tparam node|string|nil zone Gui node --- @treturn Button Current button instance --- @usage --- button:set_click_zone("stencil_node") -function Button.set_click_zone(self, zone) - self.click_zone = self:get_node(zone) +---Set additional button click area. +---Useful to restrict click outside of stencil node or scrollable content. +---If button node placed inside stencil node, it will be automatically set to this stencil node. +---@param zone node|string|nil Gui node +---@return druid.button self The current button instance +function M:set_click_zone(zone) + self.click_zone = zone and self:get_node(zone) or nil self.hover:set_click_zone(zone) return self end ---- Set key name to trigger this button by keyboard. --- @tparam Button self @{Button} --- @tparam hash|string key The action_id of the input key --- @treturn Button Current button instance --- @usage --- button:set_key_trigger("key_space") -function Button.set_key_trigger(self, key) - self.key_trigger = hash(key) +---Set key name to trigger this button by keyboard. +---@param key hash|string The action_id of the input key. Example: "key_space" +---@return druid.button self The current button instance +function M:set_key_trigger(key) + if type(key) == "string" then + self.key_trigger = hash(key) + else + self.key_trigger = key + end return self end ---- Get current key name to trigger this button. --- @tparam Button self --- @treturn hash The action_id of the input key --- @usage --- local key_hash = button:get_key_trigger() -function Button.get_key_trigger(self) +---Get current key name to trigger this button. +---@return hash key_trigger The action_id of the input key +function M:get_key_trigger() return self.key_trigger end ---- Set function for additional check for button click availability --- @tparam Button self --- @tparam function|nil check_function Should return true or false. If true - button can be pressed. --- @tparam function|nil failure_callback Function will be called on button click, if check function return false --- @treturn Button Current button instance -function Button.set_check_function(self, check_function, failure_callback) +---Set function for additional check for button click availability. +---@param check_function function|nil Should return true or false. If true - button can be pressed. +---@param failure_callback function|nil Function will be called on button click, if check function returns false +---@return druid.button self The current button instance +function M:set_check_function(check_function, failure_callback) self._check_function = check_function self._failure_callback = failure_callback + + return self end ---- Set Button mode to work inside user HTML5 interaction event. --- --- It's required to make protected things like copy & paste text, show mobile keyboard, etc --- The HTML5 button's doesn't call any events except on_click event. --- --- If the game is not HTML, html mode will be not enabled --- @tparam Button self --- @tparam boolean|nil is_web_mode If true - button will be called inside html5 callback --- @treturn Button Current button instance --- @usage --- button:set_web_user_interaction(true) -function Button.set_web_user_interaction(self, is_web_mode) +---Set Button mode to work inside user HTML5 interaction event. +--- +---It's required to make protected things like copy & paste text, show mobile keyboard, etc +---The HTML5 button doesn't call any events except on_click event. +--- +---If the game is not HTML, html mode will be not enabled +---@param is_web_mode boolean|nil If true - button will be called inside html5 callback +---@return druid.button self The current button instance +function M:set_web_user_interaction(is_web_mode) self._is_html5_mode = not not (is_web_mode and html5) return self end -return Button +---@param action_id hash The action id +---@return boolean is_match True if the input matches the button +function M:_is_input_match(action_id) + if action_id == const.ACTION_TOUCH or action_id == const.ACTION_MULTITOUCH then + return true + end + + if self.key_trigger and action_id == self.key_trigger then + return true + end + + return false +end + + +---@param hover_state boolean True if the hover state is active +function M:_on_button_hover(hover_state) + self.style.on_hover(self, self.anim_node, hover_state) +end + + +---@param hover_state boolean True if the hover state is active +function M:_on_button_mouse_hover(hover_state) + self.style.on_mouse_hover(self, self.anim_node, hover_state) +end + + +function M:_on_button_click() + if self._is_html5_mode then + self._is_html5_listener_set = false + html5.set_interaction_listener(nil) + end + self.click_in_row = 1 + self.on_click:trigger(self:get_context(), self.params, self) + self.style.on_click(self, self.anim_node) +end + + +function M:_on_button_repeated_click() + if not self.is_repeated_started then + self.click_in_row = 0 + self.is_repeated_started = true + end + + self.click_in_row = self.click_in_row + 1 + self.on_repeated_click:trigger(self:get_context(), self.params, self, self.click_in_row) + self.style.on_click(self, self.anim_node) +end + + +function M:_on_button_long_click() + self.click_in_row = 1 + local time = socket.gettime() - self.last_pressed_time + self.on_long_click:trigger(self:get_context(), self.params, self, time) + self.style.on_click(self, self.anim_node) +end + + +function M:_on_button_double_click() + self.click_in_row = self.click_in_row + 1 + self.on_double_click:trigger(self:get_context(), self.params, self, self.click_in_row) + self.style.on_click(self, self.anim_node) +end + + +---@param press_time number Amount of time the button was held +function M:_on_button_hold(press_time) + self.on_hold_callback:trigger(self:get_context(), self.params, self, press_time) +end + + +function M:_on_button_release() + if self.is_repeated_started then + return false + end + + local check_function_result = true + if self._check_function then + check_function_result = self._check_function(self:get_context()) + end + + if self.disabled then + self.style.on_click_disabled(self, self.anim_node) + return true + elseif not check_function_result then + if self._failure_callback then + self._failure_callback(self:get_context()) + end + return true + else + if self.can_action and not self._is_html5_mode then + self.can_action = false + + local time = socket.gettime() + local is_long_click = (time - self.last_pressed_time) >= self.style.LONGTAP_TIME + is_long_click = is_long_click and not self.on_long_click:is_empty() + + local is_double_click = (time - self.last_released_time) < self.style.DOUBLETAP_TIME + is_double_click = is_double_click and not self.on_double_click:is_empty() + + if is_long_click then + local is_hold_complete = (time - self.last_pressed_time) >= self.style.AUTOHOLD_TRIGGER + if is_hold_complete then + self:_on_button_long_click() + else + self.on_click_outside:trigger(self:get_context(), self.params, self) + end + elseif is_double_click then + self:_on_button_double_click() + else + self:_on_button_click() + end + + self.last_released_time = time + end + return true + end +end + + +return M diff --git a/druid/base/drag.lua b/druid/base/drag.lua index fd79105..12dd51c 100644 --- a/druid/base/drag.lua +++ b/druid/base/drag.lua @@ -1,195 +1,47 @@ --- Copyright (c) 2021 Maksim Tuprikov . This code is licensed under MIT license - ---- Component to handle drag action on node. --- Drag have correct handling for multitouch and swap --- touched while dragging. Drag will be processed even --- the cursor is outside of node, if drag is already started --- --- Example Link --- @module Drag --- @within BaseComponent --- @alias druid.drag - ---- Drag node --- @tfield node node - ---- Event on touch start callback(self) --- @tfield DruidEvent on_touch_start @{DruidEvent} - ---- Event on touch end callback(self) --- @tfield DruidEvent on_touch_end @{DruidEvent} - ---- Event on drag start callback(self, touch) --- @tfield DruidEvent on_drag_start @{DruidEvent} - ---- on drag progress callback(self, dx, dy, total_x, total_y, touch) --- @tfield DruidEvent on_drag Event @{DruidEvent} - ---- Event on drag end callback(self, total_x, total_y, touch) --- @tfield DruidEvent on_drag_end @{DruidEvent} - ---- Is component now touching --- @tfield boolean is_touch - ---- Is component now dragging --- @tfield boolean is_drag - ---- Is drag component process vertical dragging. Default - true --- @tfield boolean can_x - ---- Is drag component process horizontal. Default - true --- @tfield boolean can_y - ---- Current touch x position --- @tfield number x - ---- Current touch y position --- @tfield number y - ---- Current touch x screen position --- @tfield number screen_x - ---- Current touch y screen position --- @tfield number screen_y - ---- Touch start position --- @tfield vector3 touch_start_pos - ---- - -local Event = require("druid.event") +local event = require("event.event") local const = require("druid.const") local helper = require("druid.helper") local component = require("druid.component") -local Drag = component.create("drag", const.PRIORITY_INPUT_HIGH) +---@class druid.drag.style +---@field DRAG_DEADZONE number Distance in pixels to start dragging. Default: 10 +---@field NO_USE_SCREEN_KOEF boolean If screen aspect ratio affects on drag values. Default: false + +---A component that allows you to subscribe to drag events over a node +---@class druid.drag: druid.component +---@field node node The node to subscribe to drag events over +---@field on_touch_start event fun(self, touch) The event triggered when a touch starts +---@field on_touch_end event fun(self, touch) The event triggered when a touch ends +---@field on_drag_start event fun(self, touch) The event triggered when a drag starts +---@field on_drag event fun(self, touch) The event triggered when a drag occurs +---@field on_drag_end event fun(self, touch) The event triggered when a drag ends +---@field style druid.drag.style The style of Drag component +---@field click_zone node|nil The click zone of Drag component +---@field is_touch boolean True if a touch is active +---@field is_drag boolean True if a drag is active +---@field can_x boolean True if Drag can move horizontally +---@field can_y boolean True if Drag can move vertically +---@field dx number The horizontal drag distance +---@field dy number The vertical drag distance +---@field touch_id number The touch id +---@field x number The current x position +---@field y number The current y position +---@field screen_x number The current screen x position +---@field screen_y number The current screen y position +---@field touch_start_pos vector3 The touch start position +---@field private _is_enabled boolean True if Drag component is enabled +---@field private _x_koef number The x koef +---@field private _y_koef number The y koef +local M = component.create("drag", const.PRIORITY_INPUT_HIGH) -local function start_touch(self, touch) - self.is_touch = true - self.is_drag = false - - self.touch_start_pos.x = touch.x - self.touch_start_pos.y = touch.y - - self.x = touch.x - self.y = touch.y - - self.screen_x = touch.screen_x - self.screen_y = touch.screen_y - - self._scene_scale = helper.get_scene_scale(self.node) - - self.on_touch_start:trigger(self:get_context(), touch) -end - - -local function end_touch(self, touch) - if self.is_drag then - self.on_drag_end:trigger( - self:get_context(), - self.x - self.touch_start_pos.x, - self.y - self.touch_start_pos.y, - touch - ) - end - - self.is_drag = false - if self.is_touch then - self.is_touch = false - self.on_touch_end:trigger(self:get_context(), touch) - end - self:reset_input_priority() - self.touch_id = 0 -end - - -local function process_touch(self, touch) - if not self.can_x then - self.touch_start_pos.x = touch.x - end - - if not self.can_y then - self.touch_start_pos.y = touch.y - end - - local distance = helper.distance(touch.x, touch.y, self.touch_start_pos.x, self.touch_start_pos.y) - if not self.is_drag and distance >= self.style.DRAG_DEADZONE then - self.is_drag = true - self.on_drag_start:trigger(self:get_context(), touch) - self:set_input_priority(const.PRIORITY_INPUT_MAX, true) - end -end - - ---- Return current touch action from action input data --- If touch_id stored - return exact this touch action -local function find_touch(action_id, action, touch_id) - local act = helper.is_mobile() and const.ACTION_MULTITOUCH or const.ACTION_TOUCH - - if action_id ~= act then - return - end - - if action.touch then - local touch = action.touch - for i = 1, #touch do - if touch[i].id == touch_id then - return touch[i] - end - end - return touch[1] - else - return action - end -end - - ---- Process on touch release. We should to find, if any other --- touches exists to switch to another touch. -local function on_touch_release(self, action_id, action) - if #action.touch >= 2 then - -- Find next unpressed touch - local next_touch - for i = 1, #action.touch do - if not action.touch[i].released then - next_touch = action.touch[i] - break - end - end - - if next_touch then - self.x = next_touch.x - self.y = next_touch.y - self.touch_id = next_touch.id - else - end_touch(self) - end - elseif #action.touch == 1 then - end_touch(self) - end -end - - ---- Component style params. --- You can override this component styles params in druid styles table --- or create your own style --- @table style --- @tfield number|nil DRAG_DEADZONE Distance in pixels to start dragging. Default: 10 --- @tfield boolean|nil NO_USE_SCREEN_KOEF If screen aspect ratio affects on drag values. Default: false -function Drag.on_style_change(self, style) - self.style = {} - self.style.DRAG_DEADZONE = style.DRAG_DEADZONE or 10 - self.style.NO_USE_SCREEN_KOEF = style.NO_USE_SCREEN_KOEF or false -end - - ---- The @{Drag} constructor --- @tparam Drag self @{Drag} --- @tparam node node GUI node to detect dragging --- @tparam function on_drag_callback Callback for on_drag_event(self, dx, dy) -function Drag.init(self, node, on_drag_callback) - self.node = self:get_node(node) +---The constructor for Drag component +---@param node_or_node_id node|string The node to subscribe to drag events over +---@param on_drag_callback fun(self, touch) The callback to call when a drag occurs +function M:init(node_or_node_id, on_drag_callback) + self.druid = self:get_druid() + self.node = self:get_node(node_or_node_id) + self.hover = self.druid:new_hover(self.node) self.dx = 0 self.dy = 0 @@ -209,18 +61,43 @@ function Drag.init(self, node, on_drag_callback) self._scene_scale = helper.get_scene_scale(self.node) self.click_zone = nil - self.on_touch_start = Event() - self.on_touch_end = Event() - self.on_drag_start = Event() - self.on_drag = Event(on_drag_callback) - self.on_drag_end = Event() + self.on_touch_start = event.create() + self.on_touch_end = event.create() + self.on_drag_start = event.create() + self.on_drag = event.create(on_drag_callback) + self.on_drag_end = event.create() self:on_window_resized() + self:set_drag_cursors(true) end -function Drag.on_late_init(self) - if not self.click_zone and const.IS_STENCIL_CHECK then +---@private +---@param style druid.drag.style The style of Drag component +function M:on_style_change(style) + self.style = { + DRAG_DEADZONE = style.DRAG_DEADZONE or 10, + NO_USE_SCREEN_KOEF = style.NO_USE_SCREEN_KOEF or false, + } +end + + +---Set Drag component enabled state. +---@param is_enabled boolean True if Drag component is enabled +function M:set_drag_cursors(is_enabled) + if defos and is_enabled then + self.hover.style.ON_HOVER_CURSOR = defos.CURSOR_CROSSHAIR + self.hover.style.ON_MOUSE_HOVER_CURSOR = defos.CURSOR_HAND + else + self.hover.style.ON_HOVER_CURSOR = nil + self.hover.style.ON_MOUSE_HOVER_CURSOR = nil + end +end + + +---@private +function M:on_late_init() + if not self.click_zone then local stencil_node = helper.get_closest_stencil_node(self.node) if stencil_node then self:set_click_zone(stencil_node) @@ -229,7 +106,8 @@ function Drag.on_late_init(self) end -function Drag.on_window_resized(self) +---@private +function M:on_window_resized() local x_koef, y_koef = helper.get_screen_aspect_koef() self._x_koef = x_koef self._y_koef = y_koef @@ -237,14 +115,19 @@ function Drag.on_window_resized(self) end -function Drag.on_input_interrupt(self) +---@private +function M:on_input_interrupt() if self.is_drag or self.is_touch then - end_touch(self) + self:_end_touch() end end -function Drag.on_input(self, action_id, action) +---@private +---@param action_id hash Action id from on_input +---@param action table Action from on_input +---@return boolean is_consumed True if the input was consumed +function M:on_input(action_id, action) if action_id ~= const.ACTION_TOUCH and action_id ~= const.ACTION_MULTITOUCH then return false end @@ -255,12 +138,12 @@ function Drag.on_input(self, action_id, action) local is_pick = helper.pick_node(self.node, action.x, action.y, self.click_zone) if not is_pick and not self.is_drag then - end_touch(self) + self:_end_touch() return false end - local touch = find_touch(action_id, action, self.touch_id) + local touch = self:_find_touch(action_id, action, self.touch_id) if not touch then return false end @@ -273,24 +156,24 @@ function Drag.on_input(self, action_id, action) self.dy = 0 if touch.pressed and not self.is_touch then - start_touch(self, touch) + self:_start_touch(touch) end if touch.released and self.is_touch then if action.touch then -- Mobile - on_touch_release(self, action_id, action) + self:_on_touch_release(action_id, action, touch) else -- PC - end_touch(self, touch) + self:_end_touch(touch) end end if self.is_touch then - process_touch(self, touch) + self:_process_touch(touch) end - local touch_modified = find_touch(action_id, action, self.touch_id) + local touch_modified = self:_find_touch(action_id, action, self.touch_id) if touch_modified and self.is_drag then self.dx = touch_modified.x - self.x self.dy = touch_modified.y - self.y @@ -321,29 +204,146 @@ function Drag.on_input(self, action_id, action) end ---- Strict drag click area. Useful for --- restrict events outside stencil node --- @tparam Drag self @{Drag} --- @tparam node|string|nil node Gui node -function Drag.set_click_zone(self, node) - self.click_zone = self:get_node(node) +---Set Drag click zone +---@param node node|string|nil Node or node id +---@return druid.drag self Current instance +function M:set_click_zone(node) + self.click_zone = node and self:get_node(node) or nil + + return self end ---- Set Drag input enabled or disabled --- @tparam Drag self @{Drag} --- @tparam boolean|nil is_enabled -function Drag.set_enabled(self, is_enabled) +---Set Drag component enabled state. +---@param is_enabled boolean +---@return druid.drag self Current instance +function M:set_enabled(is_enabled) self._is_enabled = is_enabled + + return self end ---- Check if Drag component is enabled --- @tparam Drag self @{Drag} --- @treturn boolean -function Drag.is_enabled(self) +---Check if Drag component is capture input +---@return boolean is_enabled True if Drag component is enabled +function M:is_enabled() return self._is_enabled end -return Drag +function M:_start_touch(touch) + self.is_touch = true + self.is_drag = false + + self.touch_start_pos.x = touch.x + self.touch_start_pos.y = touch.y + + self.x = touch.x + self.y = touch.y + + self.screen_x = touch.screen_x + self.screen_y = touch.screen_y + + self._scene_scale = helper.get_scene_scale(self.node) + + self.on_touch_start:trigger(self:get_context(), touch) +end + + +---@param touch touch|nil +function M:_end_touch(touch) + if self.is_drag then + self.on_drag_end:trigger( + self:get_context(), + self.x - self.touch_start_pos.x, + self.y - self.touch_start_pos.y, + touch + ) + end + + self.is_drag = false + if self.is_touch then + self.is_touch = false + self.on_touch_end:trigger(self:get_context(), touch) + end + self:reset_input_priority() + self.touch_id = 0 +end + + +---@param touch touch Touch action +function M:_process_touch(touch) + if not self.can_x then + self.touch_start_pos.x = touch.x + end + + if not self.can_y then + self.touch_start_pos.y = touch.y + end + + local distance = helper.distance(touch.x, touch.y, self.touch_start_pos.x, self.touch_start_pos.y) + if not self.is_drag and distance >= self.style.DRAG_DEADZONE then + self.is_drag = true + self.on_drag_start:trigger(self:get_context(), touch) + self:set_input_priority(const.PRIORITY_INPUT_MAX, true) + end +end + + +---Return current touch action from action input data +---If touch_id stored - return exact this touch action +---@param action_id hash Action id from on_input +---@param action table Action from on_input +---@param touch_id number Touch id +---@return table|nil touch Touch action +function M:_find_touch(action_id, action, touch_id) + local act = helper.is_mobile() and const.ACTION_MULTITOUCH or const.ACTION_TOUCH + + if action_id ~= act then + return + end + + if action.touch then + local touch = action.touch + for i = 1, #touch do + if touch[i].id == touch_id then + return touch[i] + end + end + return touch[1] + else + return action + end +end + + +---Process on touch release. We should to find, if any other +---touches exists to switch to another touch. +---@param action_id hash Action id from on_input +---@param action table Action from on_input +---@param touch table Touch action +function M:_on_touch_release(action_id, action, touch) + if #action.touch >= 2 then + -- Find next unpressed touch + local next_touch + for i = 1, #action.touch do + if not action.touch[i].released then + next_touch = action.touch[i] + break + end + end + + if next_touch then + self.x = next_touch.x + self.y = next_touch.y + self.touch_id = next_touch.id + else + self:_end_touch(touch) + end + elseif #action.touch == 1 then + self:_end_touch(touch) + end +end + + +return M diff --git a/druid/base/hover.lua b/druid/base/hover.lua index f178cf2..315316d 100644 --- a/druid/base/hover.lua +++ b/druid/base/hover.lua @@ -1,35 +1,31 @@ --- Copyright (c) 2021 Maksim Tuprikov . This code is licensed under MIT license - ---- Component to handle hover node interaction --- @module Hover --- @within BaseComponent --- @alias druid.hover - ---- Hover node --- @tfield node node - ---- On hover callback(self, state, hover_instance) --- @tfield DruidEvent on_hover @{DruidEvent} - ---- On mouse hover callback(self, state, hover_instance) --- @tfield DruidEvent on_mouse_hover @{DruidEvent} - ---- - -local Event = require("druid.event") +local event = require("event.event") local const = require("druid.const") local helper = require("druid.helper") local component = require("druid.component") -local Hover = component.create("hover") +---@class druid.hover.style +---@field ON_HOVER_CURSOR string|nil Mouse hover style on node hover +---@field ON_MOUSE_HOVER_CURSOR string|nil Mouse hover style on node mouse hover + +---The component for handling hover events on a node +---@class druid.hover: druid.component +---@field node node Gui node +---@field on_hover event fun(self: druid.hover, is_hover: boolean) Hover event +---@field on_mouse_hover event fun(self: druid.hover, is_hover: boolean) Mouse hover event +---@field style druid.hover.style Style of the hover component +---@field click_zone node Click zone of the hover component +---@field private _is_hovered boolean|nil True if the node is hovered +---@field private _is_mouse_hovered boolean|nil True if the node is mouse hovered +---@field private _is_enabled boolean|nil True if the hover component is enabled +---@field private _is_mobile boolean True if the platform is mobile +local M = component.create("hover") ---- The @{Hover} constructor --- @tparam Hover self @{Hover} --- @tparam node node Gui node --- @tparam function on_hover_callback Hover callback --- @tparam function on_mouse_hover On mouse hover callback -function Hover.init(self, node, on_hover_callback, on_mouse_hover) +---The constructor for the hover component +---@param node node Gui node +---@param on_hover_callback function Hover callback +---@param on_mouse_hover function On mouse hover callback +function M:init(node, on_hover_callback, on_mouse_hover) self.node = self:get_node(node) self._is_hovered = false @@ -37,13 +33,14 @@ function Hover.init(self, node, on_hover_callback, on_mouse_hover) self._is_enabled = true self._is_mobile = helper.is_mobile() - self.on_hover = Event(on_hover_callback) - self.on_mouse_hover = Event(on_mouse_hover) + self.on_hover = event.create(on_hover_callback) + self.on_mouse_hover = event.create(on_mouse_hover) end -function Hover.on_late_init(self) - if not self.click_zone and const.IS_STENCIL_CHECK then +---@private +function M:on_late_init() + if not self.click_zone then local stencil_node = helper.get_closest_stencil_node(self.node) if stencil_node then self:set_click_zone(stencil_node) @@ -52,20 +49,20 @@ function Hover.on_late_init(self) end ---- Component style params. --- You can override this component styles params in druid styles table --- or create your own style --- @table style --- @tfield[opt] string ON_HOVER_CURSOR Mouse hover style on node hover --- @tfield[opt] string ON_MOUSE_HOVER_CURSOR Mouse hover style on node mouse hover -function Hover.on_style_change(self, style) +---@private +---@param style druid.hover.style +function M:on_style_change(style) self.style = {} self.style.ON_HOVER_CURSOR = style.ON_HOVER_CURSOR or nil self.style.ON_MOUSE_HOVER_CURSOR = style.ON_MOUSE_HOVER_CURSOR or nil end -function Hover.on_input(self, action_id, action) +---@private +---@param action_id hash Action id from on_input +---@param action table Action from on_input +---@return boolean is_consumed True if the input was consumed +function M:on_input(action_id, action) if action_id ~= const.ACTION_TOUCH and action_id ~= nil then return false end @@ -99,15 +96,15 @@ function Hover.on_input(self, action_id, action) end -function Hover.on_input_interrupt(self) +---@private +function M:on_input_interrupt() self:set_hover(false) end ---- Set hover state --- @tparam Hover self @{Hover} --- @tparam boolean|nil state The hover state -function Hover.set_hover(self, state) +---Set hover state +---@param state boolean|nil The hover state +function M:set_hover(state) if self._is_hovered == state then return end @@ -121,18 +118,16 @@ function Hover.set_hover(self, state) end ---- Return current hover state. True if touch action was on the node at current time --- @tparam Hover self @{Hover} --- @treturn boolean The current hovered state -function Hover.is_hovered(self) +---Return current hover state. True if touch action was on the node at current time +---@return boolean is_hovered The current hovered state +function M:is_hovered() return self._is_hovered end ---- Set mouse hover state --- @tparam Hover self @{Hover} --- @tparam boolean|nil state The mouse hover state -function Hover.set_mouse_hover(self, state) +---Set mouse hover state +---@param state boolean|nil The mouse hover state +function M:set_mouse_hover(state) if self._is_mouse_hovered == state then return end @@ -146,29 +141,30 @@ function Hover.set_mouse_hover(self, state) end ---- Return current hover state. True if nil action_id (usually desktop mouse) was on the node at current time --- @tparam Hover self @{Hover} --- @treturn boolean The current hovered state -function Hover.is_mouse_hovered(self) +---Return current hover state. True if nil action_id (usually desktop mouse) was on the node at current time +---@return boolean The current hovered state +function M:is_mouse_hovered() return self._is_mouse_hovered end ---- Strict hover click area. Useful for --- no click events outside stencil node --- @tparam Hover self @{Hover} --- @tparam node|string|nil zone Gui node -function Hover.set_click_zone(self, zone) +---Strict hover click area. Useful for no click events outside stencil node +---@param zone node|string|nil Gui node +function M:set_click_zone(zone) + if not zone then + self.click_zone = nil + return + end + self.click_zone = self:get_node(zone) end ---- Set enable state of hover component. --- If hover is not enabled, it will not generate --- any hover events --- @tparam Hover self @{Hover} --- @tparam boolean|nil state The hover enabled state -function Hover.set_enabled(self, state) +---Set enable state of hover component. +---If hover is not enabled, it will not generate +---any hover events +---@param state boolean|nil The hover enabled state +function M:set_enabled(state) self._is_enabled = state if not state then @@ -182,17 +178,17 @@ function Hover.set_enabled(self, state) end ---- Return current hover enabled state --- @tparam Hover self @{Hover} --- @treturn boolean The hover enabled state -function Hover.is_enabled(self) +---Return current hover enabled state +---@return boolean The hover enabled state +function M:is_enabled() return self._is_enabled end -- Internal cursor stack local cursor_stack = {} -function Hover:_set_cursor(priority, cursor) +---@local +function M:_set_cursor(priority, cursor) if not defos then return end @@ -217,4 +213,4 @@ function Hover:_set_cursor(priority, cursor) end -return Hover +return M diff --git a/druid/base/scroll.lua b/druid/base/scroll.lua index 3aa9f77..d8c8070 100755 --- a/druid/base/scroll.lua +++ b/druid/base/scroll.lua @@ -1,144 +1,112 @@ --- Copyright (c) 2021 Maksim Tuprikov . This code is licensed under MIT license - ---- Component to handle scroll content. --- # Overview # --- --- The Scroll component is designed to handle scrollable content and consists of two nodes: the scroll parent and the scroll input. --- --- The scroll input represents the user input zone and remains static. --- --- The scroll parent is the movable part of the scroll and changes its position. --- --- The initial scroll size can be set by adjusting the size of the scroll parent. --- If the size of the scroll parent is smaller than the scroll input size, scrolling is not available. --- --- # Notes # --- --- • By default, the scroll style includes inertia and extra size for a stretching effect. --- These settings can be adjusted using the scroll style settings. --- For more details, refer to the scroll style settings. --- --- • "Points of interest" can be set up for the scroll. --- The scroll will always be centered on the closest point of interest. --- This feature allows creating a slider without inertia and with points of interest on each scroll element. --- --- • The scroll content size can be adjusted using the scroll:set_size(node_size) method. --- This method sets a new size for the _content node. --- --- • Inertial scrolling mode can be enabled or disabled using the scroll:set_inert(state) method. --- --- • The extra stretch size can be adjusted using the scroll:set_extra_stretch_size method. --- --- • Multitouch is required for scrolling. The scroll component correctly handles --- touch ID swaps while dragging the scroll. --- --- Example Link --- @module Scroll --- @within BaseComponent --- @alias druid.scroll - - ---- On scroll move callback(self, position) --- @tfield DruidEvent on_scroll @{DruidEvent} - ---- On scroll_to function callback(self, target, is_instant) --- @tfield DruidEvent on_scroll_to @{DruidEvent} - ---- On scroll_to_index function callback(self, index, point) --- @tfield DruidEvent on_point_scroll @{DruidEvent} - ---- Scroll view node --- @tfield node view_node - ---- Scroll view size --- @tfield vector3 view_size - ---- Scroll content node --- @tfield node content_node - ---- Flag, if scroll now moving by inertion --- @tfield boolean _is_inert - ---- Current inert speed --- @tfield vector3 inertion - ---- Current scroll posisition --- @tfield vector3 position - ---- Current scroll target position --- @tfield vector3 target_position - ---- Available position for content node: (min_x, max_y, max_x, min_y) --- @tfield vector4 available_pos - ---- Size of available positions: (width, height, 0) --- @tfield vector3 available_size - ---- Drag Druid component --- @tfield Drag drag @{Drag} - ---- Current index of points of interests --- @tfield number|nil selected - ---- Flag, if scroll now animating by gui.animate --- @tfield boolean is_animate - ---- - -local Event = require("druid.event") +local event = require("event.event") local const = require("druid.const") local helper = require("druid.helper") local component = require("druid.component") -local Scroll = component.create("scroll") +---Scroll style parameters +---@class druid.scroll.style +---@field FRICT number|nil Multiplier for free inertion. Default: 0 +---@field FRICT_HOLD number|nil Multiplier for inertion, while touching. Default: 0 +---@field INERT_THRESHOLD number|nil Scroll speed to stop inertion. Default: 3 +---@field INERT_SPEED number|nil Multiplier for inertion speed. Default: 30 +---@field POINTS_DEADZONE number|nil Speed to check points of interests in no_inertion mode. Default: 20 +---@field BACK_SPEED number|nil Scroll back returning lerp speed. Default: 35 +---@field ANIM_SPEED number|nil Scroll gui.animation speed for scroll_to function. Default: 2 +---@field EXTRA_STRETCH_SIZE number|nil extra size in pixels outside of scroll (stretch effect). Default: 0 +---@field SMALL_CONTENT_SCROLL boolean|nil If true, content node with size less than view node size can be scrolled. Default: false +---@field WHEEL_SCROLL_SPEED number|nil The scroll speed via mouse wheel scroll or touchpad. Set to 0 to disable wheel scrolling. Default: 0 +---@field WHEEL_SCROLL_INVERTED boolean|nil If true, invert direction for touchpad and mouse wheel scroll. Default: false +---@field WHEEL_SCROLL_BY_INERTION boolean|nil If true, wheel will add inertion to scroll. Direct set position otherwise.. Default: false + +---Basic Druid scroll component. Handles all scrolling behavior in Druid GUI. +--- +---### Setup +---Create scroll component with druid: `druid:new_scroll(view_node, content_node)` +--- +---### Notes +---- View_node is the static part that captures user input and recognizes scrolling touches +---- Content_node is the dynamic part that will change position according to the scroll system +---- Initial scroll size will be equal to content_node size +---- The initial view box will be equal to view_node size +---- Scroll by default style has inertia and extra size for stretching effect +---- You can setup "points of interest" to make scroll always center on closest point +---- Scroll events: +---- - on_scroll(self, position): On scroll move callback +---- - on_scroll_to(self, position, is_instant): On scroll_to function callback +---- - on_point_scroll(self, item_index, position): On scroll_to_index function callback +---- Multitouch is required for scroll. Scroll correctly handles touch_id swap while dragging +---@class druid.scroll: druid.component +---@field node node The root node +---@field click_zone node|nil Optional click zone to restrict scroll area +---@field on_scroll event fun(self: druid.scroll, position: vector3) Triggered on scroll move +---@field on_scroll_to event fun(self: druid.scroll, target: vector3, is_instant: boolean) Triggered on scroll_to +---@field on_point_scroll event fun(self: druid.scroll, index: number, point: vector3) Triggered on scroll_to_index +---@field view_node node The scroll view node (static part) +---@field view_border vector4 The scroll view borders +---@field content_node node The scroll content node (moving part) +---@field view_size vector3 Size of the view node +---@field position vector3 Current scroll position +---@field target_position vector3 Target scroll position for animations +---@field available_pos vector4 Available content position (min_x, max_y, max_x, min_y) +---@field available_size vector3 Size of available positions (width, height, 0) +---@field drag druid.drag The drag component instance +---@field selected number|nil Current selected point of interest index +---@field is_animate boolean True if scroll is animating +---@field style druid.scroll.style Component style parameters +---@field private _is_inert boolean True if inertial scrolling is enabled +---@field private inertion vector3 Current inertial movement vector +---@field private _is_horizontal_scroll boolean True if horizontal scroll enabled +---@field private _is_vertical_scroll boolean True if vertical scroll enabled +---@field private _grid_on_change event Grid items change event +---@field private _grid_on_change_callback function Grid change callback +---@field private _offset vector3 Content start offset +local M = component.create("scroll") -local function inverse_lerp(min, max, current) - return helper.clamp((current - min) / (max - min), 0, 1) +---The Scroll constructor +---@param view_node string|node GUI view scroll node - the static part that captures user input +---@param content_node string|node GUI content scroll node - the dynamic part that will change position +function M:init(view_node, content_node) + self.druid = self:get_druid() + + self.view_node = self:get_node(view_node) + self.view_border = helper.get_border(self.view_node) + self.content_node = self:get_node(content_node) + + self.view_size = helper.get_scaled_size(self.view_node) + + self.position = gui.get_position(self.content_node) + self.target_position = vmath.vector3(self.position) + self.inertion = vmath.vector3(0) + + self.drag = self.druid:new_drag(view_node, self._on_scroll_drag) + self.drag.on_touch_start:subscribe(self._on_touch_start) + self.drag.on_touch_end:subscribe(self._on_touch_end) + + self.hover = self.druid:new_hover(view_node) + self.hover.on_mouse_hover:subscribe(self._on_mouse_hover) + self._is_mouse_hover = false + + self.on_scroll = event.create() + self.on_scroll_to = event.create() + self.on_point_scroll = event.create() + + self.selected = nil + self.is_animate = false + + self._offset = vmath.vector3(0) + self._is_horizontal_scroll = true + self._is_vertical_scroll = true + self._grid_on_change = nil + self._grid_on_change_callback = nil + + self:_update_size() end ---- Update vector with next conditions: --- Field x have to <= field z --- Field y have to <= field w -local function get_border_vector(vector, offset) - if vector.x > vector.z then - vector.x, vector.z = vector.z, vector.x - end - if vector.y > vector.w then - vector.y, vector.w = vector.w, vector.y - end - vector.x = vector.x - offset.x - vector.z = vector.z - offset.x - vector.y = vector.y - offset.y - vector.w = vector.w - offset.y - return vector -end - - ---- Return size from scroll border vector4 -local function get_size_vector(vector) - return vmath.vector3(vector.z - vector.x, vector.w - vector.y, 0) -end - - ---- Component style params. --- You can override this component styles params in druid styles table --- or create your own style --- @table style --- @tfield number|nil FRICT Multiplier for free inertion. Default: 0 --- @tfield number|nil FRICT_HOLD Multiplier for inertion, while touching. Default: 0 --- @tfield number|nil INERT_THRESHOLD Scroll speed to stop inertion. Default: 3 --- @tfield number|nil INERT_SPEED Multiplier for inertion speed. Default: 30 --- @tfield number|nil POINTS_DEADZONE Speed to check points of interests in no_inertion mode. Default: 20 --- @tfield number|nil BACK_SPEED Scroll back returning lerp speed. Default: 35 --- @tfield number|nil ANIM_SPEED Scroll gui.animation speed for scroll_to function. Default: 2 --- @tfield number|nil EXTRA_STRETCH_SIZE extra size in pixels outside of scroll (stretch effect). Default: 0 --- @tfield boolean|nil SMALL_CONTENT_SCROLL If true, content node with size less than view node size can be scrolled. Default: false --- @tfield boolean|nil WHEEL_SCROLL_SPEED The scroll speed via mouse wheel scroll or touchpad. Set to 0 to disable wheel scrolling. Default: 0 --- @tfield boolean|nil WHEEL_SCROLL_INVERTED If true, invert direction for touchpad and mouse wheel scroll. Default: false --- @tfield boolean|nil WHEEL_SCROLL_BY_INERTION If true, wheel will add inertion to scroll. Direct set position otherwise.. Default: false -function Scroll.on_style_change(self, style) +---@private +---@param style druid.scroll.style +function M:on_style_change(style) self.style = {} self.style.EXTRA_STRETCH_SIZE = style.EXTRA_STRETCH_SIZE or 0 self.style.ANIM_SPEED = style.ANIM_SPEED or 0.2 @@ -161,50 +129,9 @@ function Scroll.on_style_change(self, style) end ---- The @{Scroll} constructor --- @tparam Scroll self @{Scroll} --- @tparam string|node view_node GUI view scroll node --- @tparam string|node content_node GUI content scroll node -function Scroll.init(self, view_node, content_node) - self.druid = self:get_druid() - - self.view_node = self:get_node(view_node) - self.view_border = helper.get_border(self.view_node) - self.content_node = self:get_node(content_node) - - self.view_size = helper.get_scaled_size(self.view_node) - - self.position = gui.get_position(self.content_node) - self.target_position = vmath.vector3(self.position) - self.inertion = vmath.vector3(0) - - self.drag = self.druid:new_drag(view_node, self._on_scroll_drag) - self.drag.on_touch_start:subscribe(self._on_touch_start) - self.drag.on_touch_end:subscribe(self._on_touch_end) - - self.hover = self.druid:new_hover(view_node) - self.hover.on_mouse_hover:subscribe(self._on_mouse_hover) - self._is_mouse_hover = false - - self.on_scroll = Event() - self.on_scroll_to = Event() - self.on_point_scroll = Event() - - self.selected = nil - self.is_animate = false - - self._offset = vmath.vector3(0) - self._is_horizontal_scroll = true - self._is_vertical_scroll = true - self._grid_on_change = nil - self._grid_on_change_callback = nil - - self:_update_size() -end - - -function Scroll.on_late_init(self) - if not self.click_zone and const.IS_STENCIL_CHECK then +---@private +function M:on_late_init() + if not self.click_zone then local stencil_node = helper.get_closest_stencil_node(self.node) if stencil_node then self:set_click_zone(stencil_node) @@ -213,15 +140,17 @@ function Scroll.on_late_init(self) end -function Scroll.on_layout_change(self) +---@private +function M:on_layout_change() gui.set_position(self.content_node, self.position) end -function Scroll.update(self, dt) +---@private +function M:update(dt) if self.is_animate then - self.position.x = gui.get(self.content_node, "position.x") - self.position.y = gui.get(self.content_node, "position.y") + self.position.x = gui.get(self.content_node, "position.x") --[[@as number]] + self.position.y = gui.get(self.content_node, "position.y") --[[@as number]] self.on_scroll:trigger(self:get_context(), self.position) end @@ -233,23 +162,22 @@ function Scroll.update(self, dt) end -function Scroll.on_input(self, action_id, action) +---@private +function M:on_input(action_id, action) return self:_process_scroll_wheel(action_id, action) end -function Scroll.on_remove(self) +---@private +function M:on_remove() self:bind_grid(nil) end ---- Start scroll to target point. --- @tparam Scroll self @{Scroll} --- @tparam vector3 point Target point --- @tparam boolean|nil is_instant Instant scroll flag --- @usage scroll:scroll_to(vmath.vector3(0, 50, 0)) --- @usage scroll:scroll_to(vmath.vector3(0), true) -function Scroll.scroll_to(self, point, is_instant) +---Start scroll to target point. +---@param point vector3 Target point +---@param is_instant boolean|nil Instant scroll flag +function M:scroll_to(point, is_instant) local b = self.available_pos local target = vmath.vector3( self._is_horizontal_scroll and -point.x or self.target_position.x, @@ -277,11 +205,10 @@ function Scroll.scroll_to(self, point, is_instant) end ---- Scroll to item in scroll by point index. --- @tparam Scroll self @{Scroll} --- @tparam number index Point index --- @tparam boolean|nil skip_cb If true, skip the point callback -function Scroll.scroll_to_index(self, index, skip_cb) +---Scroll to item in scroll by point index. +---@param index number Point index +---@param skip_cb boolean|nil If true, skip the point callback +function M:scroll_to_index(index, skip_cb) if not self.points then return end @@ -300,12 +227,10 @@ function Scroll.scroll_to_index(self, index, skip_cb) end ---- Start scroll to target scroll percent --- @tparam Scroll self @{Scroll} --- @tparam vector3 percent target percent --- @tparam boolean|nil is_instant instant scroll flag --- @usage scroll:scroll_to_percent(vmath.vector3(0.5, 0, 0)) -function Scroll.scroll_to_percent(self, percent, is_instant) +---Start scroll to target scroll percent +---@param percent vector3 target percent +---@param is_instant boolean|nil instant scroll flag +function M:scroll_to_percent(percent, is_instant) local border = self.available_pos local pos = vmath.vector3( @@ -325,25 +250,23 @@ function Scroll.scroll_to_percent(self, percent, is_instant) end ---- Return current scroll progress status. +---Return current scroll progress status. -- Values will be in [0..1] interval --- @tparam Scroll self @{Scroll} --- @treturn vector3 New vector with scroll progress values -function Scroll.get_percent(self) - local x_perc = 1 - inverse_lerp(self.available_pos.x, self.available_pos.z, self.position.x) - local y_perc = inverse_lerp(self.available_pos.w, self.available_pos.y, self.position.y) +---@return vector3 New vector with scroll progress values +function M:get_percent() + local x_perc = 1 - self:_inverse_lerp(self.available_pos.x, self.available_pos.z, self.position.x) + local y_perc = self:_inverse_lerp(self.available_pos.w, self.available_pos.y, self.position.y) return vmath.vector3(x_perc, y_perc, 0) end ---- Set scroll content size. +---Set scroll content size. -- It will change content gui node size --- @tparam Scroll self @{Scroll} --- @tparam vector3 size The new size for content node --- @tparam vector3|nil offset Offset value to set, where content is starts --- @treturn druid.scroll Current scroll instance -function Scroll.set_size(self, size, offset) +---@param size vector3 The new size for content node +---@param offset vector3|nil Offset value to set, where content is starts +---@return druid.scroll self Current scroll instance +function M:set_size(size, offset) if offset then self._offset = offset end @@ -354,11 +277,10 @@ function Scroll.set_size(self, size, offset) end ---- Set new scroll view size in case the node size was changed. --- @tparam Scroll self @{Scroll} --- @tparam vector3 size The new size for view node --- @treturn druid.scroll Current scroll instance -function Scroll.set_view_size(self, size) +---Set new scroll view size in case the node size was changed. +---@param size vector3 The new size for view node +---@return druid.scroll self Current scroll instance +function M:set_view_size(size) gui.set_size(self.view_node, size) self.view_size = size self.view_border = helper.get_border(self.view_node) @@ -368,9 +290,9 @@ function Scroll.set_view_size(self, size) end ---- Refresh scroll view size --- @tparam Scroll self @{Scroll} -function Scroll.update_view_size(self) +---Refresh scroll view size, used when view node size is changed +---@return druid.scroll self Current scroll instance +function M:update_view_size() self.view_size = helper.get_scaled_size(self.view_node) self.view_border = helper.get_border(self.view_node) self:_update_size() @@ -379,33 +301,30 @@ function Scroll.update_view_size(self) end ---- Enable or disable scroll inert. +---Enable or disable scroll inert -- If disabled, scroll through points (if exist) -- If no points, just simple drag without inertion --- @tparam Scroll self @{Scroll} --- @tparam boolean|nil state Inert scroll state --- @treturn druid.scroll Current scroll instance -function Scroll.set_inert(self, state) +---@param state boolean Inert scroll state +---@return druid.scroll self Current scroll instance +function M:set_inert(state) self._is_inert = state return self end ---- Return if scroll have inertion. --- @tparam Scroll self @{Scroll} --- @treturn boolean @If scroll have inertion -function Scroll.is_inert(self) +---Return if scroll have inertion +---@return boolean is_inert If scroll have inertion +function M:is_inert() return self._is_inert end ---- Set extra size for scroll stretching. +---Set extra size for scroll stretching -- Set 0 to disable stretching effect --- @tparam Scroll self @{Scroll} --- @tparam number|nil stretch_size Size in pixels of additional scroll area --- @treturn druid.scroll Current scroll instance -function Scroll.set_extra_stretch_size(self, stretch_size) +---@param stretch_size number|nil Size in pixels of additional scroll area +---@return druid.scroll self Current scroll instance +function M:set_extra_stretch_size(stretch_size) self.style.EXTRA_STRETCH_SIZE = stretch_size or 0 self:_update_size() @@ -413,20 +332,18 @@ function Scroll.set_extra_stretch_size(self, stretch_size) end ---- Return vector of scroll size with width and height. --- @tparam Scroll self @{Scroll} --- @treturn vector3 Available scroll size -function Scroll.get_scroll_size(self) +---Return vector of scroll size with width and height. +---@return vector3 Available scroll size +function M:get_scroll_size() return self.available_size end ---- Set points of interest. +---Set points of interest. -- Scroll will always centered on closer points --- @tparam Scroll self @{Scroll} --- @tparam table points Array of vector3 points --- @treturn druid.scroll Current scroll instance -function Scroll.set_points(self, points) +---@param points table Array of vector3 points +---@return druid.scroll self Current scroll instance +function M:set_points(points) self.points = points table.sort(self.points, function(a, b) @@ -439,34 +356,31 @@ function Scroll.set_points(self, points) end ---- Lock or unlock horizontal scroll --- @tparam Scroll self @{Scroll} --- @tparam boolean|nil state True, if horizontal scroll is enabled --- @treturn druid.scroll Current scroll instance -function Scroll.set_horizontal_scroll(self, state) +---Lock or unlock horizontal scroll +---@param state boolean True, if horizontal scroll is enabled +---@return druid.scroll self Current scroll instance +function M:set_horizontal_scroll(state) self._is_horizontal_scroll = state - self.drag.can_x = self.available_size.x > 0 and state + self.drag.can_x = self.available_size.x > 0 and state or false return self end ---- Lock or unlock vertical scroll --- @tparam Scroll self @{Scroll} --- @tparam boolean|nil state True, if vertical scroll is enabled --- @treturn druid.scroll Current scroll instance -function Scroll.set_vertical_scroll(self, state) +---Lock or unlock vertical scroll +---@param state boolean True, if vertical scroll is enabled +---@return druid.scroll self Current scroll instance +function M:set_vertical_scroll(state) self._is_vertical_scroll = state - self.drag.can_y = self.available_size.y > 0 and state + self.drag.can_y = self.available_size.y > 0 and state or false return self end ---- Check node if it visible now on scroll. +---Check node if it visible now on scroll. -- Extra border is not affected. Return true for elements in extra scroll zone --- @tparam Scroll self @{Scroll} --- @tparam node node The node to check --- @treturn boolean True if node in visible scroll area -function Scroll.is_node_in_view(self, node) +---@param node node The node to check +---@return boolean True if node in visible scroll area +function M:is_node_in_view(node) local node_offset_for_view = gui.get_position(node) local parent = gui.get_parent(node) local is_parent_of_view = false @@ -502,12 +416,11 @@ function Scroll.is_node_in_view(self, node) end ---- Bind the grid component (Static or Dynamic) to recalculate +---Bind the grid component (Static or Dynamic) to recalculate -- scroll size on grid changes --- @tparam Scroll self @{Scroll} --- @tparam StaticGrid grid Druid grid component --- @treturn druid.scroll Current scroll instance -function Scroll.bind_grid(self, grid) +---@param grid druid.grid|nil Druid grid component +---@return druid.scroll self Current scroll instance +function M:bind_grid(grid) if self._grid_on_change then self._grid_on_change:unsubscribe(self._grid_on_change_callback) @@ -516,31 +429,58 @@ function Scroll.bind_grid(self, grid) end if not grid then - return + return self end self._grid_on_change = grid.on_change_items - self._grid_on_change_callback = self._grid_on_change:subscribe(function() + self._grid_on_change_callback = function() local size = grid:get_size() local offset = grid:get_offset() self:set_size(size, offset) - end) + end + self._grid_on_change:subscribe(self._grid_on_change_callback) self:set_size(grid:get_size(), grid:get_offset()) return self end ---- Strict drag scroll area. Useful for +---Bind the layout component to recalculate +-- scroll size on layout changes +---@param layout druid.layout|nil Druid layout component +---@return druid.scroll self Current scroll instance +function M:bind_layout(layout) + if self._layout_on_change then + self._layout_on_change:unsubscribe(self._layout_on_change_callback) + + self._layout_on_change = nil + self._layout_on_change_callback = nil + end + + if not layout then + return self + end + + self._layout_on_change = layout.on_size_changed + self._layout_on_change_callback = function(size) + self:set_size(size) + end + self._layout_on_change:subscribe(self._layout_on_change_callback) + self:set_size(layout:get_size()) + + return self +end + + +---Strict drag scroll area. Useful for -- restrict events outside stencil node --- @tparam Drag self --- @tparam node|string node Gui node -function Scroll.set_click_zone(self, node) +---@param node node|string Gui node +function M:set_click_zone(node) self.drag:set_click_zone(node) end -function Scroll._on_scroll_drag(self, dx, dy) +function M:_on_scroll_drag(dx, dy) local t = self.target_position local b = self.available_pos local eb = self.available_pos_extra @@ -552,11 +492,11 @@ function Scroll._on_scroll_drag(self, dx, dy) -- Right border (minimum x) if t.x < b.x and dx < 0 then - x_perc = inverse_lerp(eb.x, b.x, t.x) + x_perc = self:_inverse_lerp(eb.x, b.x, t.x) end -- Left border (maximum x) if t.x > b.z and dx > 0 then - x_perc = inverse_lerp(eb.z, b.z, t.x) + x_perc = self:_inverse_lerp(eb.z, b.z, t.x) end -- Disable x scroll if not self.drag.can_x then @@ -565,11 +505,11 @@ function Scroll._on_scroll_drag(self, dx, dy) -- Top border (minimum y) if t.y < b.y and dy < 0 then - y_perc = inverse_lerp(eb.y, b.y, t.y) + y_perc = self:_inverse_lerp(eb.y, b.y, t.y) end -- Bot border (maximum y) if t.y > b.w and dy > 0 then - y_perc = inverse_lerp(eb.w, b.w, t.y) + y_perc = self:_inverse_lerp(eb.w, b.w, t.y) end -- Disable y scroll if not self.drag.can_y then @@ -581,7 +521,7 @@ function Scroll._on_scroll_drag(self, dx, dy) end -function Scroll._check_soft_zone(self) +function M:_check_soft_zone() local target = self.target_position local border = self.available_pos local speed = self.style.BACK_SPEED @@ -610,7 +550,7 @@ end -- Cancel animation on other animation or input touch -function Scroll._cancel_animate(self) +function M:_cancel_animate() self.inertion.x = 0 self.inertion.y = 0 @@ -624,7 +564,7 @@ function Scroll._cancel_animate(self) end -function Scroll._set_scroll_position(self, position_x, position_y) +function M:_set_scroll_position(position_x, position_y) local available_extra = self.available_pos_extra position_x = helper.clamp(position_x, available_extra.x, available_extra.z) position_y = helper.clamp(position_y, available_extra.w, available_extra.y) @@ -639,11 +579,11 @@ function Scroll._set_scroll_position(self, position_x, position_y) end ---- Find closer point of interest +---Find closer point of interest -- if no inert, scroll to next point by scroll direction -- if inert, find next point by scroll director --- @local -function Scroll._check_points(self) +---@private +function M:_check_points() if not self.points then return end @@ -699,7 +639,7 @@ function Scroll._check_points(self) end -function Scroll._check_threshold(self) +function M:_check_threshold() local is_stopped = false if self.drag.can_x and math.abs(self.inertion.x) < self.style.INERT_THRESHOLD then @@ -717,7 +657,7 @@ function Scroll._check_threshold(self) end -function Scroll._update_free_scroll(self, dt) +function M:_update_free_scroll(dt) if self.is_animate then return end @@ -742,7 +682,7 @@ function Scroll._update_free_scroll(self, dt) end -function Scroll._update_hand_scroll(self, dt) +function M:_update_hand_scroll(dt) if self.is_animate then self:_cancel_animate() end @@ -757,7 +697,7 @@ function Scroll._update_hand_scroll(self, dt) end -function Scroll._on_touch_start(self) +function M:_on_touch_start() self.inertion.x = 0 self.inertion.y = 0 self.target_position.x = self.position.x @@ -765,17 +705,17 @@ function Scroll._on_touch_start(self) end -function Scroll._on_touch_end(self) +function M:_on_touch_end() self:_check_threshold() end -function Scroll._update_size(self) +function M:_update_size() local content_border = helper.get_border(self.content_node) local content_size = helper.get_scaled_size(self.content_node) - self.available_pos = get_border_vector(self.view_border - content_border, self._offset) - self.available_size = get_size_vector(self.available_pos) + self.available_pos = self:_get_border_vector(self.view_border - content_border, self._offset) + self.available_size = self:_get_size_vector(self.available_pos) self.drag.can_x = self.available_size.x > 0 and self._is_horizontal_scroll self.drag.can_y = self.available_size.y > 0 and self._is_vertical_scroll @@ -799,16 +739,18 @@ function Scroll._update_size(self) self.drag.can_y = content_size.y > self.view_size.y and self._is_vertical_scroll end - self.available_pos_extra = get_border_vector(self.view_border - content_border_extra, self._offset) - self.available_size_extra = get_size_vector(self.available_pos_extra) + self.available_pos_extra = self:_get_border_vector(self.view_border - content_border_extra, self._offset) + self.available_size_extra = self:_get_size_vector(self.available_pos_extra) self:_set_scroll_position(self.position.x, self.position.y) self.target_position.x = self.position.x self.target_position.y = self.position.y + + self.drag:set_drag_cursors(self.drag.can_x or self.drag.can_y) end -function Scroll._process_scroll_wheel(self, action_id, action) +function M:_process_scroll_wheel(action_id, action) if not self._is_mouse_hover or self.style.WHEEL_SCROLL_SPEED == 0 then return false end @@ -845,9 +787,43 @@ function Scroll._process_scroll_wheel(self, action_id, action) end -function Scroll._on_mouse_hover(self, state) +function M:_on_mouse_hover(state) self._is_mouse_hover = state end -return Scroll +function M:_inverse_lerp(min, max, current) + return helper.clamp((current - min) / (max - min), 0, 1) +end + + +---Update vector with next conditions: +---Field x have to <= field z +---Field y have to <= field w +---@param vector vector4 +---@param offset vector3 +---@return vector4 +function M:_get_border_vector(vector, offset) + if vector.x > vector.z then + vector.x, vector.z = vector.z, vector.x + end + if vector.y > vector.w then + vector.y, vector.w = vector.w, vector.y + end + vector.x = vector.x - offset.x + vector.z = vector.z - offset.x + vector.y = vector.y - offset.y + vector.w = vector.w - offset.y + return vector +end + + +---Return size from scroll border vector4 +---@param vector vector4 +---@return vector3 +function M:_get_size_vector(vector) + return vmath.vector3(vector.z - vector.x, vector.w - vector.y, 0) +end + + +return M diff --git a/druid/base/static_grid.lua b/druid/base/static_grid.lua index c602ce0..968956b 100644 --- a/druid/base/static_grid.lua +++ b/druid/base/static_grid.lua @@ -1,126 +1,41 @@ --- Copyright (c) 2021 Maksim Tuprikov . This code is licensed under MIT license - ---- Component to handle component's position by row and columns. --- # Overview # --- --- The Static Grid component allows for positioning components in rows and columns. --- It provides a static grid layout with constant node sizes, allowing for pre-calculated --- node positions and the option to include gaps between nodes. --- --- # Notes # --- --- • In a static grid, the node size remains constant, enabling the calculation of node --- positions before placement. If you want add gaps between nodes, increase the root prefab size, --- including the padding and margin. --- --- • The static grid can automatically shift elements when nodes are added or removed. --- --- • When a node is added, the grid will set the node's parent to the specified parent_node. --- --- • You can obtain an array of positions for each element, which can be used to set --- points of interest in a scroll component. --- --- • The size of all elements can be retrieved for setting up the size in a scroll component. --- --- • The grid can be bound to a scroll component for automatic resizing of the scroll content size. --- --- • The pivot of the parent_node affects the node placement within the grid. --- --- • A prefab node is used to determine the node size and anchor. --- --- • You can specify a position_function for animations using the --- _static_grid:set_position_function(node, pos) callback. The default position function is gui.set_position(). --- --- Example Link --- @module StaticGrid --- @within BaseComponent --- @alias druid.static_grid - ---- On item add callback(self, node, index) --- @tfield DruidEvent on_add_item @{DruidEvent} - ---- On item remove callback(self, index) --- @tfield DruidEvent on_remove_item @{DruidEvent} - ---- On item add, remove or change in_row callback(self, index|nil) --- @tfield DruidEvent on_change_items @{DruidEvent} - ---- On grid clear callback(self) --- @tfield DruidEvent on_clear @{DruidEvent} - ---- On update item positions callback(self) --- @tfield DruidEvent on_update_positions @{DruidEvent} - ---- Parent gui node --- @tfield node parent - ---- List of all grid nodes --- @tfield node[] nodes - ---- The first index of node in grid --- @tfield number first_index - ---- The last index of node in grid --- @tfield number last_index - ---- Item anchor [0..1] --- @tfield vector3 anchor - ---- Item pivot [-0.5..0.5] --- @tfield vector3 pivot - ---- Item size --- @tfield vector3 node_size - ---- The size of item content --- @tfield vector4 border - ---- - local const = require("druid.const") -local Event = require("druid.event") +local event = require("event.event") local helper = require("druid.helper") local component = require("druid.component") -local StaticGrid = component.create("static_grid") +---@class druid.grid.style +---@field IS_DYNAMIC_NODE_POSES boolean|nil If true, always center grid content as grid pivot sets. Default: false +---@field IS_ALIGN_LAST_ROW boolean|nil If true, always align last row of the grid as grid pivot sets. Default: false + +---The component for manage the nodes position in the grid with various options +---@class druid.grid: druid.component +---@field on_add_item event fun(self: druid.grid, item: node, index: number) Trigger on add item event +---@field on_remove_item event fun(self: druid.grid, index: number) Trigger on remove item event +---@field on_change_items event fun(self: druid.grid, index: number) Trigger on change items event +---@field on_clear event fun(self: druid.grid) Trigger on clear event +---@field on_update_positions event fun(self: druid.grid) Trigger on update positions event +---@field parent node Parent node +---@field nodes node[] Nodes array +---@field first_index number First index +---@field last_index number Last index +---@field anchor vector3 Anchor +---@field pivot vector3 Pivot +---@field node_size vector3 Node size +---@field border vector4 Border +---@field in_row number In row +---@field style druid.grid.style Style +local M = component.create("grid") -local function _extend_border(border, pos, size, pivot) - local left = pos.x - size.x/2 - (size.x * pivot.x) - local right = pos.x + size.x/2 - (size.x * pivot.x) - local top = pos.y + size.y/2 - (size.y * pivot.y) - local bottom = pos.y - size.y/2 - (size.y * pivot.y) - - border.x = math.min(border.x, left) - border.y = math.max(border.y, top) - border.z = math.max(border.z, right) - border.w = math.min(border.w, bottom) -end - - ---- Component style params. --- You can override this component styles params in druid styles table --- or create your own style --- @table style --- @tfield boolean|nil IS_DYNAMIC_NODE_POSES If true, always center grid content as grid pivot sets. Default: false --- @tfield boolean|nil IS_ALIGN_LAST_ROW If true, always align last row of the grid as grid pivot sets. Default: false -function StaticGrid.on_style_change(self, style) - self.style = {} - self.style.IS_DYNAMIC_NODE_POSES = style.IS_DYNAMIC_NODE_POSES or false - self.style.IS_ALIGN_LAST_ROW = style.IS_ALIGN_LAST_ROW or false -end - - ---- The @{StaticGrid} constructor --- @tparam StaticGrid self @{StaticGrid} --- @tparam string|node parent The GUI Node container, where grid's items will be placed --- @tparam node element Element prefab. Need to get it size --- @tparam number|nil in_row How many nodes in row can be placed. By default 1 -function StaticGrid.init(self, parent, element, in_row) +---The constructor for the grid component +---@param parent string|node The GUI Node container, where grid's items will be placed +---@param element node Element prefab. Need to get it size +---@param in_row number|nil How many nodes in row can be placed. By default 1 +function M:init(parent, element, in_row) self.parent = self:get_node(parent) self.nodes = {} - self.pivot = helper.get_pivot_offset(gui.get_pivot(self.parent)) + self.pivot = helper.get_pivot_offset(self.parent) self.anchor = vmath.vector3(0.5 + self.pivot.x, 0.5 - self.pivot.y, 0) self.in_row = in_row or 1 @@ -137,22 +52,31 @@ function StaticGrid.init(self, parent, element, in_row) self.border = vmath.vector4(0) -- Current grid content size - self.on_add_item = Event() - self.on_remove_item = Event() - self.on_change_items = Event() - self.on_clear = Event() - self.on_update_positions = Event() + self.on_add_item = event.create() + self.on_remove_item = event.create() + self.on_change_items = event.create() + self.on_clear = event.create() + self.on_update_positions = event.create() self._set_position_function = gui.set_position end +---@private +---@param style druid.grid.style +function M:on_style_change(style) + self.style = { + IS_DYNAMIC_NODE_POSES = style.IS_DYNAMIC_NODE_POSES or false, + IS_ALIGN_LAST_ROW = style.IS_ALIGN_LAST_ROW or false, + } +end + + local _temp_pos = vmath.vector3(0) ---- Return pos for grid node index --- @tparam StaticGrid self @{StaticGrid} --- @tparam number index The grid element index --- @treturn vector3 @Node position -function StaticGrid.get_pos(self, index) +---Return pos for grid node index +---@param index number The grid element index +---@return vector3 position Node position +function M:get_pos(index) local row = math.ceil(index / self.in_row) - 1 local col = (index - row * self.in_row) - 1 @@ -166,11 +90,10 @@ function StaticGrid.get_pos(self, index) end ---- Return index for grid pos --- @tparam StaticGrid self @{StaticGrid} --- @tparam vector3 pos The node position in the grid --- @treturn number The node index -function StaticGrid.get_index(self, pos) +---Return grid index by position +---@param pos vector3 The node position in the grid +---@return number index The node index +function M:get_index(pos) -- Offset to left-top corner from node pivot local node_offset_x = self.node_size.x * (-0.5 + self.node_pivot.x) local node_offset_y = self.node_size.y * (0.5 - self.node_pivot.y) @@ -186,11 +109,10 @@ function StaticGrid.get_index(self, pos) end ---- Return grid index by node --- @tparam StaticGrid self @{StaticGrid} --- @tparam node node The gui node in the grid --- @treturn number The node index -function StaticGrid.get_index_by_node(self, node) +---Return grid index by node +---@param node node The gui node in the grid +---@return number|nil index The node index +function M:get_index_by_node(node) for index, grid_node in pairs(self.nodes) do if node == grid_node then return index @@ -201,38 +123,38 @@ function StaticGrid.get_index_by_node(self, node) end -function StaticGrid.on_layout_change(self) +---@private +function M:on_layout_change() self:_update(true) end ---- Set grid anchor. Default anchor is equal to anchor of grid parent node --- @tparam StaticGrid self @{StaticGrid} --- @tparam vector3 anchor Anchor -function StaticGrid.set_anchor(self, anchor) +---Set grid anchor. Default anchor is equal to anchor of grid parent node +---@param anchor vector3 Anchor +function M:set_anchor(anchor) self.anchor = anchor self:_update() end ---- Update grid content --- @tparam StaticGrid self @{StaticGrid} -function StaticGrid.refresh(self) +---Instantly update the grid content +---@return druid.grid self Current grid instance +function M:refresh() self:_update(true) + + return self end -function StaticGrid.set_pivot(self, pivot) +---Set grid pivot +---@param pivot constant The new pivot +---@return druid.grid self Current grid instance +function M:set_pivot(pivot) local prev_pivot = helper.get_pivot_offset(gui.get_pivot(self.parent)) self.pivot = helper.get_pivot_offset(pivot) local width = gui.get(self.parent, "size.x") local height = gui.get(self.parent, "size.y") - --local pos_offset = vmath.vector3( - -- width * (self.pivot.x - prev_pivot.x), - -- height * (self.pivot.y - prev_pivot.y), - -- 0 - --) local position = gui.get_position(self.parent) position.x = position.x + width * (self.pivot.x - prev_pivot.x) @@ -250,16 +172,18 @@ function StaticGrid.set_pivot(self, pivot) ) self:_update(true) + + return self end ---- Add new item to the grid --- @tparam StaticGrid self @{StaticGrid} --- @tparam node item GUI node --- @tparam number|nil index The item position. By default add as last item --- @tparam number|nil shift_policy How shift nodes, if required. Default: const.SHIFT.RIGHT --- @tparam boolean|nil is_instant If true, update node positions instantly -function StaticGrid.add(self, item, index, shift_policy, is_instant) +---Add new item to the grid +---@param item node GUI node +---@param index number|nil The item position. By default add as last item +---@param shift_policy number|nil How shift nodes, if required. Default: const.SHIFT.RIGHT +---@param is_instant boolean|nil If true, update node positions instantly +---@return druid.grid self Current grid instance +function M:add(item, index, shift_policy, is_instant) index = index or ((self.last_index or 0) + 1) helper.insert_with_shift(self.nodes, item, index, shift_policy) @@ -275,14 +199,16 @@ function StaticGrid.add(self, item, index, shift_policy, is_instant) self.on_add_item:trigger(self:get_context(), item, index) self.on_change_items:trigger(self:get_context(), index) + + return self end ---- Set new items to the grid. All previous items will be removed --- @tparam StaticGrid self @{StaticGrid} --- @tparam node[] nodes The new grid nodes --- @tparam[opt=false] boolean is_instant If true, update node positions instantly -function StaticGrid.set_items(self, nodes, is_instant) +---Set new items to the grid. All previous items will be removed +---@param nodes node[] The new grid nodes +---@param is_instant boolean|nil If true, update node positions instantly +---@return druid.grid self Current grid instance +function M:set_items(nodes, is_instant) self.nodes = nodes for index = 1, #nodes do local item = nodes[index] @@ -292,16 +218,17 @@ function StaticGrid.set_items(self, nodes, is_instant) self:_update(is_instant) self.on_change_items:trigger(self:get_context()) + + return self end ---- Remove the item from the grid. Note that gui node will be not deleted --- @tparam StaticGrid self @{StaticGrid} --- @tparam number index The grid node index to remove --- @tparam number|nil shift_policy How shift nodes, if required. Default: const.SHIFT.RIGHT --- @tparam boolean|nil is_instant If true, update node positions instantly --- @treturn node The deleted gui node from grid -function StaticGrid.remove(self, index, shift_policy, is_instant) +---Remove the item from the grid. Note that gui node will be not deleted +---@param index number The grid node index to remove +---@param shift_policy number|nil How shift nodes, if required. Default: const.SHIFT.RIGHT +---@param is_instant boolean|nil If true, update node positions instantly +---@return node node The deleted gui node from grid +function M:remove(index, shift_policy, is_instant) assert(self.nodes[index], "No grid item at given index " .. index) local remove_node = self.nodes[index] @@ -316,10 +243,16 @@ function StaticGrid.remove(self, index, shift_policy, is_instant) end ---- Return grid content size --- @tparam StaticGrid self @{StaticGrid} --- @treturn vector3 The grid content size -function StaticGrid.get_size(self) +---Return items count in grid +---@return number count The items count in grid +function M:get_items_count() + return #self.nodes +end + + +---Return grid content size +---@return vector3 size The grid content size +function M:get_size() return vmath.vector3( self.border.z - self.border.x, self.border.y - self.border.w, @@ -327,7 +260,10 @@ function StaticGrid.get_size(self) end -function StaticGrid.get_size_for(self, count) +---Return grid content size for given count of nodes +---@param count number The count of nodes +---@return vector3 size The grid content size +function M:get_size_for(count) if not count or count == 0 then return vmath.vector3(0) end @@ -336,10 +272,10 @@ function StaticGrid.get_size_for(self, count) local size = self.node_size local pivot = self.node_pivot - _extend_border(border, self:get_pos(1), size, pivot) - _extend_border(border, self:get_pos(count), size, pivot) + self:_extend_border(border, self:get_pos(1), size, pivot) + self:_extend_border(border, self:get_pos(count), size, pivot) if count >= self.in_row then - _extend_border(border, self:get_pos(self.in_row), size, pivot) + self:_extend_border(border, self:get_pos(self.in_row), size, pivot) end return vmath.vector3( @@ -349,18 +285,16 @@ function StaticGrid.get_size_for(self, count) end ---- Return grid content borders --- @tparam StaticGrid self @{StaticGrid} --- @treturn vector3 The grid content borders -function StaticGrid.get_borders(self) +---Return grid content borders +---@return vector4 borders The grid content borders +function M:get_borders() return self.border end ---- Return array of all node positions --- @tparam StaticGrid self @{StaticGrid} --- @treturn vector3[] All grid node positions -function StaticGrid.get_all_pos(self) +---Return array of all node positions +---@return vector3[] positions All grid node positions +function M:get_all_pos() local result = {} for i, node in pairs(self.nodes) do table.insert(result, gui.get_position(node)) @@ -370,23 +304,21 @@ function StaticGrid.get_all_pos(self) end ---- Change set position function for grid nodes. It will call on +---Change set position function for grid nodes. It will call on -- update poses on grid elements. Default: gui.set_position --- @tparam StaticGrid self @{StaticGrid} --- @tparam function callback Function on node set position --- @treturn druid.static_grid Current grid instance -function StaticGrid.set_position_function(self, callback) +---@param callback function Function on node set position +---@return druid.grid self Current grid instance +function M:set_position_function(callback) self._set_position_function = callback or gui.set_position return self end ---- Clear grid nodes array. GUI nodes will be not deleted! +---Clear grid nodes array. GUI nodes will be not deleted! -- If you want to delete GUI nodes, use static_grid.nodes array before grid:clear --- @tparam StaticGrid self @{StaticGrid} --- @treturn druid.static_grid Current grid instance -function StaticGrid.clear(self) +---@return druid.grid self Current grid instance +function M:clear() self.border.x = 0 self.border.y = 0 self.border.w = 0 @@ -402,10 +334,9 @@ function StaticGrid.clear(self) end ---- Return StaticGrid offset, where StaticGrid content starts. --- @tparam StaticGrid self @{StaticGrid} The StaticGrid instance --- @treturn vector3 The StaticGrid offset -function StaticGrid:get_offset() +---Return StaticGrid offset, where StaticGrid content starts. +---@return vector3 offset The StaticGrid offset +function M:get_offset() local borders = self:get_borders() local size = self:get_size() @@ -418,11 +349,10 @@ function StaticGrid:get_offset() end ---- Set new in_row elements for grid --- @tparam StaticGrid self @{StaticGrid} --- @tparam number in_row The new in_row value --- @treturn druid.static_grid Current grid instance -function StaticGrid.set_in_row(self, in_row) +---Set new in_row elements for grid +---@param in_row number The new in_row value +---@return druid.grid self Current grid instance +function M:set_in_row(in_row) self.in_row = in_row self._grid_horizonal_offset = self.node_size.x * (self.in_row - 1) * self.anchor.x self._zero_offset = vmath.vector3( @@ -437,12 +367,11 @@ function StaticGrid.set_in_row(self, in_row) end ---- Set new node size for grid --- @tparam StaticGrid self @{StaticGrid} --- @tparam[opt] number width The new node width --- @tparam[opt] number height The new node height --- @treturn druid.static_grid Current grid instance -function StaticGrid.set_item_size(self, width, height) +---Set new node size for grid +---@param width number|nil The new node width +---@param height number|nil The new node height +---@return druid.grid self Current grid instance +function M:set_item_size(width, height) if width then self.node_size.x = width end @@ -462,31 +391,30 @@ function StaticGrid.set_item_size(self, width, height) end ---- Sort grid nodes by custom comparator function --- @tparam StaticGrid self @{StaticGrid} --- @tparam function comparator The comparator function. (a, b) -> boolean --- @treturn druid.static_grid Current grid instance -function StaticGrid.sort_nodes(self, comparator) +---Sort grid nodes by custom comparator function +---@param comparator function The comparator function. (a, b) -> boolean +---@return druid.grid self Current grid instance +function M:sort_nodes(comparator) table.sort(self.nodes, comparator) self:_update(true) + + return self end ---- Update grid inner state --- @tparam StaticGrid self @{StaticGrid} --- @tparam boolean|nil is_instant If true, node position update instantly, otherwise with set_position_function callback --- @local -function StaticGrid._update(self, is_instant) +---Update grid inner state +---@param is_instant boolean|nil If true, node position update instantly, otherwise with set_position_function callback +---@private +function M:_update(is_instant) self:_update_indexes() self:_update_borders() self:_update_pos(is_instant) end ---- Update first and last indexes of grid nodes --- @tparam StaticGrid self @{StaticGrid} --- @local -function StaticGrid._update_indexes(self) +---Update first and last indexes of grid nodes +---@private +function M:_update_indexes() self.first_index = nil self.last_index = nil for index in pairs(self.nodes) do @@ -499,10 +427,9 @@ function StaticGrid._update_indexes(self) end ---- Update grid content borders, recalculate min and max values --- @tparam StaticGrid self @{StaticGrid} --- @local -function StaticGrid._update_borders(self) +---Update grid content borders, recalculate min and max values +---@private +function M:_update_borders() if not self.first_index then self.border = vmath.vector4(0) return @@ -513,16 +440,15 @@ function StaticGrid._update_borders(self) local size = self.node_size local pivot = self.node_pivot for index, node in pairs(self.nodes) do - _extend_border(self.border, self:get_pos(index), size, pivot) + self:_extend_border(self.border, self:get_pos(index), size, pivot) end end ---- Update grid nodes position --- @tparam StaticGrid self @{StaticGrid} --- @tparam boolean|nil is_instant If true, node position update instantly, otherwise with set_position_function callback --- @local -function StaticGrid._update_pos(self, is_instant) +---Update grid nodes position +---@param is_instant boolean|nil If true, node position update instantly, otherwise with set_position_function callback +---@private +function M:_update_pos(is_instant) local zero_offset = self:_get_zero_offset() for i, node in pairs(self.nodes) do @@ -541,13 +467,13 @@ function StaticGrid._update_pos(self, is_instant) end ---- Return elements offset for correct posing nodes. Correct posing at --- parent pivot node (0:0) with adjusting of node sizes and anchoring --- @treturn vector3 The offset vector --- @local -function StaticGrid:_get_zero_offset() +---Return elements offset for correct posing nodes. Correct posing at +---parent pivot node (0:0) with adjusting of node sizes and anchoring +---@return vector3 The offset vector +---@private +function M:_get_zero_offset() if not self.style.IS_DYNAMIC_NODE_POSES then - return const.VECTOR_ZERO + return vmath.vector3(0) end -- zero offset: center pos - border size * anchor @@ -559,10 +485,10 @@ function StaticGrid:_get_zero_offset() end ---- Return offset x for last row in grid. Used to align this row accorting to grid's anchor --- @treturn number The offset x value --- @local -function StaticGrid:_get_zero_offset_x(row_index) +---Return offset x for last row in grid. Used to align this row accorting to grid's anchor +---@return number The offset x value +---@private +function M:_get_zero_offset_x(row_index) if not self.style.IS_DYNAMIC_NODE_POSES or not self.style.IS_ALIGN_LAST_ROW then return self._zero_offset.x end @@ -580,4 +506,21 @@ function StaticGrid:_get_zero_offset_x(row_index) end -return StaticGrid +---@param border vector4 Will be updated with new border values +---@param pos vector3 +---@param size vector3 +---@param pivot vector3 +function M:_extend_border(border, pos, size, pivot) + local left = pos.x - size.x/2 - (size.x * pivot.x) + local right = pos.x + size.x/2 - (size.x * pivot.x) + local top = pos.y + size.y/2 - (size.y * pivot.y) + local bottom = pos.y - size.y/2 - (size.y * pivot.y) + + border.x = math.min(border.x, left) + border.y = math.max(border.y, top) + border.z = math.max(border.z, right) + border.w = math.min(border.w, bottom) +end + + +return M diff --git a/druid/base/text.lua b/druid/base/text.lua index 39188f4..e13f612 100755 --- a/druid/base/text.lua +++ b/druid/base/text.lua @@ -1,289 +1,53 @@ --- Copyright (c) 2021 Maksim Tuprikov . This code is licensed under MIT license - ---- Component for Wrapping GUI Text Nodes: Druid Text --- --- ## Overview ## --- --- Druid Text is a component that provides various adjustment modes for text nodes. It allows text to be scaled down to fit within the size of the text node. --- --- ## Notes ## --- --- • The text pivot can be changed using the text:set_pivot method. --- The anchoring will be inside the text node's area size. --- --- • There are several text adjustment types available. The default is DOWNSCALE. --- You can change the default adjustment type in the Text style. Refer to the example below to see all available adjustment types: --- --- - const.TEXT_ADJUST.DOWNSCALE: Changes the text's scale to fit within the text node's size. --- --- - const.TEXT_ADJUST.TRIM: Trims the text with a postfix (default: "...", can be overridden in styles) --- to fit within the text node's size. --- --- - const.TEXT_ADJUST.NO_ADJUST: No adjustment is applied, similar --- to the default Defold Text Node behavior. --- --- - const.TEXT_ADJUST.DOWNSCALE_LIMITED: Changes the text's scale --- with a limited downscale. You can set the minimum scale using the text:set_minimal_scale() function. --- --- - const.TEXT_ADJUST.SCROLL: Changes the text's pivot to imitate scrolling within the text box. --- For better effect, use with a stencil node. --- --- - const.TEXT_ADJUST.SCALE_THEN_SCROLL: Combines two modes: limited downscale first, then scroll. --- --- Example Link --- @module Text --- @within BaseComponent --- @alias druid.text - ---- On set text callback(self, text) --- @tfield DruidEvent on_set_text @{DruidEvent} - ---- On adjust text size callback(self, new_scale, text_metrics) --- @tfield DruidEvent on_update_text_scale @{DruidEvent} - ---- On change pivot callback(self, pivot) --- @tfield DruidEvent on_set_pivot @{DruidEvent} - ---- Text node --- @tfield node node - ---- The node id of text node --- @tfield hash node_id - ---- Current text position --- @tfield vector3 pos - ---- The last text value --- @tfield string last_value - ---- Initial text node scale --- @tfield vector3 start_scale - ---- Current text node scale --- @tfield vector3 scale - ---- Initial text node size --- @tfield vector3 start_size - ---- Current text node available are --- @tfield vector3 text_area - ---- Current text size adjust settings --- @tfield number adjust_type - ---- Current text color --- @tfield vector3 color - ---- - -local Event = require("druid.event") +local event = require("event.event") local const = require("druid.const") local helper = require("druid.helper") local utf8_lua = require("druid.system.utf8") local component = require("druid.component") local utf8 = utf8 or utf8_lua --[[@as utf8]] -local Text = component.create("text") +---@class druid.text.style +---@field TRIM_POSTFIX string|nil The postfix for TRIM adjust type. Default: ... +---@field DEFAULT_ADJUST string|nil The default adjust type for any text component. Default: DOWNSCALE +---@field ADJUST_STEPS number|nil Amount of iterations for text adjust by height. Default: 20 +---@field ADJUST_SCALE_DELTA number|nil Scale step on each height adjust step. Default: 0.02 -local function update_text_size(self) - if self.scale.x == 0 or self.scale.y == 0 then - return - end - if self.start_scale.x == 0 or self.start_scale.y == 0 then - return - end +---@alias druid.text.adjust_type "downscale"|"trim"|"no_adjust"|"downscale_limited"|"scroll"|"scale_then_scroll"|"trim_left"|"scale_then_trim"|"scale_then_trim_left" - local size = vmath.vector3( - self.start_size.x * (self.start_scale.x / self.scale.x), - self.start_size.y * (self.start_scale.y / self.scale.y), - self.start_size.z - ) - gui.set_size(self.node, size) -end +---Basic Druid text component. Text components by default have the text size adjusting. +--- +---### Setup +---Create text node with druid: `text = druid:new_text(node_name, [initial_value], [text_adjust_type])` +--- +---### Notes +---- Text component by default have auto adjust text sizing. Text never will be bigger, than text node size, which you can setup in GUI scene. +---- Text pivot can be changed with `text:set_pivot`, and text will save their position inside their text size box +---- There are several text adjust types: +---- - **"downscale"** - Change text's scale to fit in the text node size (default) +---- - **"trim"** - Trim the text with postfix (default - "...") to fit in the text node size +---- - **"no_adjust"** - No any adjust, like default Defold text node +---- - **"downscale_limited"** - Change text's scale like downscale, but there is limit for text's scale +---- - **"scroll"** - Change text's pivot to imitate scrolling in the text box. Use with stencil node for better effect. +---- - **"scale_then_scroll"** - Combine two modes: first limited downscale, then scroll +---- - **"trim_left"** - Trim the text with postfix (default - "...") to fit in the text node size +---- - **"scale_then_trim"** - Combine two modes: first limited downscale, then trim +---- - **"scale_then_trim_left"** - Combine two modes: first limited downscale, then trim left +---@class druid.text: druid.component +---@field node node The text node +---@field on_set_text event fun(self: druid.text, text: string) The event triggered when the text is set +---@field on_update_text_scale event fun(self: druid.text, scale: vector3, metrics: table) The event triggered when the text scale is updated +---@field on_set_pivot event fun(self: druid.text, pivot: userdata) The event triggered when the text pivot is set +---@field style druid.text.style The style of the text +---@field start_pivot userdata The start pivot of the text +---@field start_scale vector3 The start scale of the text +---@field scale vector3 The current scale of the text +local M = component.create("text") ---- Reset initial scale for text -local function reset_default_scale(self) - self.scale.x = self.start_scale.x - self.scale.y = self.start_scale.y - self.scale.z = self.start_scale.z - gui.set_scale(self.node, self.start_scale) - gui.set_size(self.node, self.start_size) -end - - -local function is_fit_info_area(self, metrics) - return metrics.width * self.scale.x <= self.text_area.x and - metrics.height * self.scale.y <= self.text_area.y -end - - ---- Setup scale x, but can only be smaller, than start text scale -local function update_text_area_size(self) - reset_default_scale(self) - - local metrics = helper.get_text_metrics_from_node(self.node) - - if metrics.width == 0 then - reset_default_scale(self) - self.on_update_text_scale:trigger(self:get_context(), self.start_scale, metrics) - return - end - - local text_area_width = self.text_area.x - local text_area_height = self.text_area.y - - -- Adjust by width - local scale_modifier = text_area_width / metrics.width - - -- Adjust by height - if self:is_multiline() then - -- Approximate scale by height to start adjust scale - scale_modifier = math.sqrt(text_area_height / metrics.height) - if metrics.width * scale_modifier > text_area_width then - scale_modifier = text_area_width / metrics.width - end - - -- #RMME - if self._minimal_scale then - scale_modifier = math.max(scale_modifier, self._minimal_scale) - end - -- Limit max scale by initial scale - scale_modifier = math.min(scale_modifier, self.start_scale.x) - -- #RMME - - local is_fit = is_fit_info_area(self, metrics) - local step = is_fit and self.style.ADJUST_SCALE_DELTA or -self.style.ADJUST_SCALE_DELTA - - for i = 1, self.style.ADJUST_STEPS do - -- Grow down to check if we fit - if step < 0 and is_fit then - break - end - -- Grow up to check if we still fit - if step > 0 and not is_fit then - break - end - - scale_modifier = scale_modifier + step - - if self._minimal_scale then - scale_modifier = math.max(scale_modifier, self._minimal_scale) - end - -- Limit max scale by initial scale - scale_modifier = math.min(scale_modifier, self.start_scale.x) - - self.scale.x = scale_modifier - self.scale.y = scale_modifier - self.scale.z = self.start_scale.z - gui.set_scale(self.node, self.scale) - update_text_size(self) - metrics = helper.get_text_metrics_from_node(self.node) - is_fit = is_fit_info_area(self, metrics) - end - end - - if self._minimal_scale then - scale_modifier = math.max(scale_modifier, self._minimal_scale) - end - - -- Limit max scale by initial scale - scale_modifier = math.min(scale_modifier, self.start_scale.x) - - self.scale.x = scale_modifier - self.scale.y = scale_modifier - self.scale.z = self.start_scale.z - gui.set_scale(self.node, self.scale) - update_text_size(self) - - self.on_update_text_scale:trigger(self:get_context(), self.scale, metrics) -end - - -local function update_text_with_trim(self, trim_postfix) - local max_width = self.text_area.x - local text_width = self:get_text_size() - - if text_width > max_width then - local text_length = utf8.len(self.last_value) - local new_text = self.last_value - while text_width > max_width do - text_length = text_length - 1 - new_text = utf8.sub(self.last_value, 1, text_length) - text_width = self:get_text_size(new_text .. trim_postfix) - if text_length == 0 then - break - end - end - - gui.set_text(self.node, new_text .. trim_postfix) - else - gui.set_text(self.node, self.last_value) - end -end - - -local function update_text_with_anchor_shift(self) - if self:get_text_size() >= self.text_area.x then - self:set_pivot(const.REVERSE_PIVOTS[self.start_pivot]) - else - self:set_pivot(self.start_pivot) - end -end - - -local function update_adjust(self) - if not self.adjust_type or self.adjust_type == const.TEXT_ADJUST.NO_ADJUST then - reset_default_scale(self) - return - end - - if self.adjust_type == const.TEXT_ADJUST.DOWNSCALE then - update_text_area_size(self) - end - - if self.adjust_type == const.TEXT_ADJUST.TRIM then - update_text_with_trim(self, self.style.TRIM_POSTFIX) - end - - if self.adjust_type == const.TEXT_ADJUST.DOWNSCALE_LIMITED then - update_text_area_size(self) - end - - if self.adjust_type == const.TEXT_ADJUST.SCROLL then - update_text_with_anchor_shift(self) - end - - if self.adjust_type == const.TEXT_ADJUST.SCALE_THEN_SCROLL then - update_text_area_size(self) - update_text_with_anchor_shift(self) - end -end - - ---- Component style params. --- You can override this component styles params in druid styles table --- or create your own style --- @table style --- @tfield string|nil TRIM_POSTFIX The postfix for TRIM adjust type. Default: ... --- @tfield string|nil DEFAULT_ADJUST The default adjust type for any text component. Default: DOWNSCALE --- @tfield string|nil ADJUST_STEPS Amount of iterations for text adjust by height. Default: 20 --- @tfield string|nil ADJUST_SCALE_DELTA Scale step on each height adjust step. Default: 0.02 -function Text.on_style_change(self, style) - self.style = {} - self.style.TRIM_POSTFIX = style.TRIM_POSTFIX or "..." - self.style.DEFAULT_ADJUST = style.DEFAULT_ADJUST or const.TEXT_ADJUST.DOWNSCALE - self.style.ADJUST_STEPS = style.ADJUST_STEPS or 20 - self.style.ADJUST_SCALE_DELTA = style.ADJUST_SCALE_DELTA or 0.02 -end - - ---- The @{Text} constructor --- @tparam Text self @{Text} --- @tparam string|node node Node name or GUI Text Node itself --- @tparam string|nil value Initial text. Default value is node text from GUI scene. Default: nil --- @tparam string|nil adjust_type Adjust type for text. By default is DOWNSCALE. Look const.TEXT_ADJUST for reference. Default: DOWNSCALE -function Text.init(self, node, value, adjust_type) +---The Text constructor +---@param node string|node Node name or GUI Text Node itself +---@param value string|nil Initial text. Default value is node text from GUI scene. Default: nil +---@param adjust_type druid.text.adjust_type|nil Adjust type for text. By default is "downscale". Options: "downscale", "trim", "no_adjust", "downscale_limited", "scroll", "scale_then_scroll", "trim_left", "scale_then_trim", "scale_then_trim_left" +function M:init(node, value, adjust_type) self.node = self:get_node(node) self.pos = gui.get_position(self.node) self.node_id = gui.get_id(self.node) @@ -300,37 +64,37 @@ function Text.init(self, node, value, adjust_type) self.adjust_type = adjust_type or self.style.DEFAULT_ADJUST self.color = gui.get_color(self.node) - self.on_set_text = Event() - self.on_set_pivot = Event() - self.on_update_text_scale = Event() + self.on_set_text = event.create() + self.on_set_pivot = event.create() + self.on_update_text_scale = event.create() - self:set_to(value or gui.get_text(self.node)) - return self + self:set_text(value or gui.get_text(self.node)) end -function Text.on_layout_change(self) - self:set_to(self.last_value) +---@private +---@param style druid.text.style +function M:on_style_change(style) + self.style = { + TRIM_POSTFIX = style.TRIM_POSTFIX or "...", + DEFAULT_ADJUST = style.DEFAULT_ADJUST or "downscale", + ADJUST_STEPS = style.ADJUST_STEPS or 20, + ADJUST_SCALE_DELTA = style.ADJUST_SCALE_DELTA or 0.02 + } end -function Text.on_message_input(self, node_id, message) - if node_id ~= self.node_id then - return false - end - - if message.action == const.MESSAGE_INPUT.TEXT_SET then - Text.set_to(self, message.value) - end +---@private +function M:on_layout_change() + self:set_text(self.last_value) end ---- Calculate text width with font with respect to trailing space --- @tparam Text self @{Text} --- @tparam string text|nil --- @treturn number Width --- @treturn number Height -function Text.get_text_size(self, text) +---Calculate text width with font with respect to trailing space +---@param text string|nil The text to calculate the size of, if nil - use current text +---@return number width The text width +---@return number height The text height +function M:get_text_size(text) text = text or self.last_value local font_name = gui.get_font(self.node) local font = gui.get_font_resource(font_name) @@ -350,11 +114,10 @@ function Text.get_text_size(self, text) end ---- Get chars count by width --- @tparam Text self @{Text} --- @tparam number width --- @treturn number Chars count -function Text.get_text_index_by_width(self, width) +---Get chars count by width +---@param width number The width to get the chars count of +---@return number index The chars count +function M:get_text_index_by_width(width) local text = self.last_value local font_name = gui.get_font(self.node) local font = gui.get_font_resource(font_name) @@ -384,42 +147,53 @@ function Text.get_text_index_by_width(self, width) end ---- Set text to text field --- @tparam Text self @{Text} --- @tparam string set_to Text for node --- @treturn Text Current text instance -function Text.set_to(self, set_to) - set_to = set_to or "" +---Set text to text field +---@deprecated +---@param set_to string Text for node +---@return druid.text self Current text instance +function M:set_to(set_to) + set_to = tostring(set_to or "") self.last_value = set_to gui.set_text(self.node, set_to) self.on_set_text:trigger(self:get_context(), set_to) - update_adjust(self) + self:_update_adjust() return self end ---- Set text area size --- @tparam Text self @{Text} --- @tparam vector3 size The new text area size --- @treturn Text Current text instance -function Text.set_size(self, size) +function M:set_text(new_text) +---@diagnostic disable-next-line: deprecated + return self:set_to(new_text) +end + + +function M:get_text() + return self.last_value +end + + +---Set text area size +---@param size vector3 The new text area size +---@return druid.text self Current text instance +function M:set_size(size) self.start_size = size self.text_area = vmath.vector3(size) self.text_area.x = self.text_area.x * self.start_scale.x self.text_area.y = self.text_area.y * self.start_scale.y - update_adjust(self) + self:_update_adjust() + + return self end ---- Set color --- @tparam Text self @{Text} --- @tparam vector4 color Color for node --- @treturn Text Current text instance -function Text.set_color(self, color) +---Set color +---@param color vector4 Color for node +---@return druid.text self Current text instance +function M:set_color(color) self.color = color gui.set_color(self.node, color) @@ -427,11 +201,10 @@ function Text.set_color(self, color) end ---- Set alpha --- @tparam Text self @{Text} --- @tparam number alpha Alpha for node --- @treturn Text Current text instance -function Text.set_alpha(self, alpha) +---Set alpha +---@param alpha number Alpha for node +---@return druid.text self Current text instance +function M:set_alpha(alpha) self.color.w = alpha gui.set_color(self.node, self.color) @@ -439,11 +212,10 @@ function Text.set_alpha(self, alpha) end ---- Set scale --- @tparam Text self @{Text} --- @tparam vector3 scale Scale for node --- @treturn Text Current text instance -function Text.set_scale(self, scale) +---Set scale +---@param scale vector3 Scale for node +---@return druid.text self Current text instance +function M:set_scale(scale) self.last_scale = scale gui.set_scale(self.node, scale) @@ -451,11 +223,10 @@ function Text.set_scale(self, scale) end ---- Set text pivot. Text will re-anchor inside text area --- @tparam Text self @{Text} --- @tparam number pivot The gui.PIVOT_* constant --- @treturn Text Current text instance -function Text.set_pivot(self, pivot) +---Set text pivot. Text will re-anchor inside text area +---@param pivot userdata The gui.PIVOT_* constant +---@return druid.text self Current text instance +function M:set_pivot(pivot) local prev_pivot = gui.get_pivot(self.node) local prev_offset = const.PIVOTS[prev_pivot] @@ -477,44 +248,262 @@ function Text.set_pivot(self, pivot) end ---- Return true, if text with line break --- @tparam Text self @{Text} --- @treturn boolean Is text node with line break -function Text.is_multiline(self) +---Return true, if text with line break +---@return boolean Is text node with line break +function M:is_multiline() return gui.get_line_break(self.node) end ---- Set text adjust, refresh the current text visuals, if needed --- @tparam Text self @{Text} --- @tparam string|nil adjust_type See const.TEXT_ADJUST. If pass nil - use current adjust type --- @tparam number|nil minimal_scale If pass nil - not use minimal scale --- @treturn Text Current text instance -function Text.set_text_adjust(self, adjust_type, minimal_scale) +---Set text adjust, refresh the current text visuals, if needed +---@param adjust_type druid.text.adjust_type|nil The adjust type to set, values: "downscale", "trim", "no_adjust", "downscale_limited", "scroll", "scale_then_scroll", "trim_left", "scale_then_trim", "scale_then_trim_left" +---@param minimal_scale number|nil To remove minimal scale, use `text:set_minimal_scale(nil)`, if pass nil - not change minimal scale +---@return druid.text self Current text instance +function M:set_text_adjust(adjust_type, minimal_scale) self.adjust_type = adjust_type - self._minimal_scale = minimal_scale - self:set_to(self.last_value) + self._minimal_scale = minimal_scale or self._minimal_scale + self:set_text(self.last_value) return self end ---- Set minimal scale for DOWNSCALE_LIMITED or SCALE_THEN_SCROLL adjust types --- @tparam Text self @{Text} --- @tparam number minimal_scale If pass nil - not use minimal scale --- @treturn Text Current text instance -function Text.set_minimal_scale(self, minimal_scale) +---Set minimal scale for "downscale_limited" or "scale_then_scroll" adjust types +---@param minimal_scale number If pass nil - not use minimal scale +---@return druid.text self Current text instance +function M:set_minimal_scale(minimal_scale) self._minimal_scale = minimal_scale return self end ---- Return current text adjust type --- @treturn number The current text adjust type -function Text.get_text_adjust(self, adjust_type) +---Return current text adjust type +---@return string adjust_type The current text adjust type +function M:get_text_adjust() return self.adjust_type end -return Text +---@private +function M:_update_text_size() + if self.scale.x == 0 or self.scale.y == 0 then + return + end + if self.start_scale.x == 0 or self.start_scale.y == 0 then + return + end + + local size = vmath.vector3( + self.start_size.x * (self.start_scale.x / self.scale.x), + self.start_size.y * (self.start_scale.y / self.scale.y), + self.start_size.z + ) + gui.set_size(self.node, size) +end + + +---Reset initial scale for text +---@private +function M:_reset_default_scale() + self.scale.x = self.start_scale.x + self.scale.y = self.start_scale.y + self.scale.z = self.start_scale.z + gui.set_scale(self.node, self.start_scale) + gui.set_size(self.node, self.start_size) +end + + +---@private +---@param metrics table +---@return boolean +function M:_is_fit_info_area(metrics) + return metrics.width * self.scale.x <= self.text_area.x and + metrics.height * self.scale.y <= self.text_area.y +end + + +---Setup scale x, but can only be smaller, than start text scale +---@private +function M:_update_text_area_size() + self:_reset_default_scale() + + local metrics = helper.get_text_metrics_from_node(self.node) + + if metrics.width == 0 then + self:_reset_default_scale() + self.on_update_text_scale:trigger(self:get_context(), self.start_scale, metrics) + return + end + + local text_area_width = self.text_area.x + local text_area_height = self.text_area.y + + -- Adjust by width + local scale_modifier = text_area_width / metrics.width + + -- Adjust by height + if self:is_multiline() then + -- Approximate scale by height to start adjust scale + scale_modifier = math.sqrt(text_area_height / metrics.height) + if metrics.width * scale_modifier > text_area_width then + scale_modifier = text_area_width / metrics.width + end + + -- #RMME + if self._minimal_scale then + scale_modifier = math.max(scale_modifier, self._minimal_scale) + end + -- Limit max scale by initial scale + scale_modifier = math.min(scale_modifier, self.start_scale.x) + -- #RMME + + local is_fit = self:_is_fit_info_area(metrics) + local step = is_fit and self.style.ADJUST_SCALE_DELTA or -self.style.ADJUST_SCALE_DELTA + + for i = 1, self.style.ADJUST_STEPS do + -- Grow down to check if we fit + if step < 0 and is_fit then + break + end + -- Grow up to check if we still fit + if step > 0 and not is_fit then + break + end + + scale_modifier = scale_modifier + step + + if self._minimal_scale then + scale_modifier = math.max(scale_modifier, self._minimal_scale) + end + -- Limit max scale by initial scale + scale_modifier = math.min(scale_modifier, self.start_scale.x) + + self.scale.x = scale_modifier + self.scale.y = scale_modifier + self.scale.z = self.start_scale.z + gui.set_scale(self.node, self.scale) + self:_update_text_size() + metrics = helper.get_text_metrics_from_node(self.node) + is_fit = self:_is_fit_info_area(metrics) + end + end + + if self._minimal_scale then + scale_modifier = math.max(scale_modifier, self._minimal_scale) + end + + -- Limit max scale by initial scale + scale_modifier = math.min(scale_modifier, self.start_scale.x) + + self.scale.x = scale_modifier + self.scale.y = scale_modifier + self.scale.z = self.start_scale.z + gui.set_scale(self.node, self.scale) + self:_update_text_size() + + self.on_update_text_scale:trigger(self:get_context(), self.scale, metrics) +end + + +---@private +---@param trim_postfix string +function M:_update_text_with_trim(trim_postfix) + local max_width = self.text_area.x + local text_width = self:get_text_size() + + if text_width > max_width then + local text_length = utf8.len(self.last_value) + local new_text = self.last_value + while text_width > max_width do + text_length = text_length - 1 + new_text = utf8.sub(self.last_value, 1, text_length) + text_width = self:get_text_size(new_text .. trim_postfix) + if text_length == 0 then + break + end + end + + gui.set_text(self.node, new_text .. trim_postfix) + else + gui.set_text(self.node, self.last_value) + end +end + + +---@private +---@param trim_postfix string +function M:_update_text_with_trim_left(trim_postfix) + local max_width = self.text_area.x + local text_width = self:get_text_size() + local text_length = utf8.len(self.last_value) + local trim_index = 1 + + if text_width > max_width then + local new_text = self.last_value + while text_width > max_width and trim_index < text_length do + trim_index = trim_index + 1 + new_text = trim_postfix .. utf8.sub(self.last_value, trim_index, text_length) + text_width = self:get_text_size(new_text) + end + + gui.set_text(self.node, new_text) + end +end + + +---@private +function M:_update_text_with_anchor_shift() + if self:get_text_size() >= self.text_area.x then + self:set_pivot(const.REVERSE_PIVOTS[self.start_pivot]) + else + self:set_pivot(self.start_pivot) + end +end + + +---@private +function M:_update_adjust() + if not self.adjust_type or self.adjust_type == "no_adjust" then + self:_reset_default_scale() + return + end + + if self.adjust_type == "downscale" then + self:_update_text_area_size() + end + + if self.adjust_type == "trim" then + self:_update_text_with_trim(self.style.TRIM_POSTFIX) + end + + if self.adjust_type == "trim_left" then + self:_update_text_with_trim_left(self.style.TRIM_POSTFIX) + end + + if self.adjust_type == "downscale_limited" then + self:_update_text_area_size() + end + + if self.adjust_type == "scroll" then + self:_update_text_with_anchor_shift() + end + + if self.adjust_type == "scale_then_scroll" then + self:_update_text_area_size() + self:_update_text_with_anchor_shift() + end + + if self.adjust_type == "scale_then_trim" then + self:_update_text_area_size() + self:_update_text_with_trim(self.style.TRIM_POSTFIX) + end + + if self.adjust_type == "scale_then_trim_left" then + self:_update_text_area_size() + self:_update_text_with_trim_left(self.style.TRIM_POSTFIX) + end +end + + +return M diff --git a/druid/color.lua b/druid/color.lua new file mode 100644 index 0000000..dbf64c9 --- /dev/null +++ b/druid/color.lua @@ -0,0 +1,174 @@ +local PALETTE_DATA = {} +local COLOR_WHITE = vmath.vector4(1, 1, 1, 1) +local COLOR_X = hash("color.x") +local COLOR_Y = hash("color.y") +local COLOR_Z = hash("color.z") + +local M = {} + + +---Get color by string (hex or from palette) +---@param color_id string Color id from palette or hex color +---@return vector4 +function M.get_color(color_id) + -- Check is it hex: starts with "#" or contains only 3 or 6 hex symbols + if type(color_id) == "string" then + if string.sub(color_id, 1, 1) == "#" or string.match(color_id, "^[0-9a-fA-F]+$") then + return M.hex2vector4(color_id) + end + end + + return PALETTE_DATA[color_id] or COLOR_WHITE +end + + +---Add palette to palette data +---@param palette_data table +function M.add_palette(palette_data) + for color_id, color in pairs(palette_data) do + if type(color) == "string" then + PALETTE_DATA[color_id] = M.hex2vector4(color) + else + PALETTE_DATA[color_id] = color + end + end +end + + +function M.get_palette() + return PALETTE_DATA +end + + +---Set color of gui node without changing alpha +---@param gui_node node +---@param color vector4|vector3|string Color in vector4, vector3 or color id from palette +function M.set_color(gui_node, color) + if type(color) == "string" then + color = M.get_color(color) + end + + gui.set(gui_node, COLOR_X, color.x) + gui.set(gui_node, COLOR_Y, color.y) + gui.set(gui_node, COLOR_Z, color.z) +end + + +---Lerp colors via color HSB values +---@param t number Lerp value. 0 - color1, 1 - color2 +---@param color1 vector4 Color 1 +---@param color2 vector4 Color 2 +---@return vector4 result Color between color1 and color2 +function M.lerp(t, color1, color2) + local h1, s1, v1 = M.rgb2hsb(color1.x, color1.y, color1.z) + local h2, s2, v2 = M.rgb2hsb(color2.x, color2.y, color2.z) + + local h = h1 + (h2 - h1) * t + local s = s1 + (s2 - s1) * t + local v = v1 + (v2 - v1) * t + + local r, g, b, a = M.hsb2rgb(h, s, v) + a = a or 1 + return vmath.vector4(r, g, b, a) +end + + + +---Convert hex color to rgb values. +---@param hex string Hex color. #00BBAA or 00BBAA or #0BA or 0BA +---@return number, number, number +function M.hex2rgb(hex) + if not hex or #hex < 3 then + return 0, 0, 0 + end + + hex = hex:gsub("^#", "") + if #hex == 3 then + hex = hex:gsub("(.)", "%1%1") + end + return tonumber("0x" .. hex:sub(1,2)) / 255, + tonumber("0x" .. hex:sub(3,4)) / 255, + tonumber("0x" .. hex:sub(5,6)) / 255 +end + + +---Convert hex color to vector4. +---@param hex string Hex color. #00BBAA or 00BBAA or #0BA or 0BA +---@param alpha number|nil Alpha value. Default is 1 +---@return vector4 +function M.hex2vector4(hex, alpha) + local r, g, b = M.hex2rgb(hex) + return vmath.vector4(r, g, b, alpha or 1) +end + + +---Convert hsb color to rgb colo +---@param r number Red value +---@param g number Green value +---@param b number Blue value +---@param alpha number|nil Alpha value. Default is 1 +function M.rgb2hsb(r, g, b, alpha) + alpha = alpha or 1 + local min, max = math.min(r, g, b), math.max(r, g, b) + local delta = max - min + local h, s, v = 0, max, max + + s = max ~= 0 and delta / max or 0 + + if delta ~= 0 then + if r == max then + h = (g - b) / delta + elseif g == max then + h = 2 + (b - r) / delta + else + h = 4 + (r - g) / delta + end + h = (h / 6) % 1 + end + + alpha = alpha > 1 and alpha / 100 or alpha + + return h, s, v, alpha +end + + +---Convert hsb color to rgb color +---@param h number Hue +---@param s number Saturation +---@param v number Value +---@param alpha number|nil Alpha value. Default is 1 +function M.hsb2rgb(h, s, v, alpha) + local r, g, b + local i = math.floor(h * 6) + local f = h * 6 - i + local p = v * (1 - s) + local q = v * (1 - f * s) + local t = v * (1 - (1 - f) * s) + + i = i % 6 + + if i == 0 then r, g, b = v, t, p + elseif i == 1 then r, g, b = q, v, p + elseif i == 2 then r, g, b = p, v, t + elseif i == 3 then r, g, b = p, q, v + elseif i == 4 then r, g, b = t, p, v + elseif i == 5 then r, g, b = v, p, q + end + + return r, g, b, alpha +end + + +---Convert rgb color to hex color +---@param red number Red value +---@param green number Green value +---@param blue number Blue value +function M.rgb2hex(red, green, blue) + local r = string.format("%x", math.floor(red * 255)) + local g = string.format("%x", math.floor(green * 255)) + local b = string.format("%x", math.floor(blue * 255)) + return string.upper((#r == 1 and "0" or "") .. r .. (#g == 1 and "0" or "") .. g .. (#b == 1 and "0" or "") .. b) +end + + +return M diff --git a/druid/component.lua b/druid/component.lua index 1bd76c9..f92a9b0 100644 --- a/druid/component.lua +++ b/druid/component.lua @@ -1,82 +1,60 @@ --- Copyright (c) 2021 Maksim Tuprikov . This code is licensed under MIT license - ---- Basic class for all Druid components. --- To create you custom component, use static function `component.create` --- @usage --- -- Create your component: --- local component = require("druid.component") --- --- local AwesomeComponent = component.create("awesome_component") --- --- function AwesomeComponent:init(template, nodes) --- self:set_template(template) --- self:set_nodes(nodes) --- self.druid = self:get_druid() --- end --- --- return AwesomeComponent --- @module BaseComponent --- @alias druid.base_component - local const = require("druid.const") local helper = require("druid.helper") -local BaseComponent = {} +---@class druid.component.meta +---@field template string +---@field context table +---@field nodes table|nil +---@field style table|nil +---@field druid druid.instance +---@field input_enabled boolean +---@field children table +---@field parent druid.component|nil +---@field instance_class table -local INTERESTS = {} -- Cache interests per component class in runtime -local IS_AUTO_TEMPLATE = not (sys.get_config_int("druid.no_auto_template", 0) == 1) +---@class druid.component.component +---@field name string +---@field input_priority number +---@field default_input_priority number +---@field _is_input_priority_changed boolean +---@field _uid number --- Component Interests -BaseComponent.ON_INPUT = const.ON_INPUT -BaseComponent.ON_UPDATE = const.ON_UPDATE -BaseComponent.ON_MESSAGE = const.ON_MESSAGE -BaseComponent.ON_LATE_INIT = const.ON_LATE_INIT -BaseComponent.ON_FOCUS_LOST = const.ON_FOCUS_LOST -BaseComponent.ON_FOCUS_GAINED = const.ON_FOCUS_GAINED -BaseComponent.ON_LAYOUT_CHANGE = const.ON_LAYOUT_CHANGE -BaseComponent.ON_MESSAGE_INPUT = const.ON_MESSAGE_INPUT -BaseComponent.ON_WINDOW_RESIZED = const.ON_WINDOW_RESIZED -BaseComponent.ON_LANGUAGE_CHANGE = const.ON_LANGUAGE_CHANGE - -BaseComponent.ALL_INTERESTS = { - BaseComponent.ON_INPUT, - BaseComponent.ON_UPDATE, - BaseComponent.ON_MESSAGE, - BaseComponent.ON_LATE_INIT, - BaseComponent.ON_FOCUS_LOST, - BaseComponent.ON_FOCUS_GAINED, - BaseComponent.ON_LAYOUT_CHANGE, - BaseComponent.ON_MESSAGE_INPUT, - BaseComponent.ON_WINDOW_RESIZED, - BaseComponent.ON_LANGUAGE_CHANGE, -} - --- Mapping from on_message method to specific method name -BaseComponent.SPECIFIC_UI_MESSAGES = { - [hash("layout_changed")] = BaseComponent.ON_LAYOUT_CHANGE, -- The message_id from Defold - [hash(BaseComponent.ON_FOCUS_LOST)] = BaseComponent.ON_FOCUS_LOST, - [hash(BaseComponent.ON_FOCUS_GAINED)] = BaseComponent.ON_FOCUS_GAINED, - [hash(BaseComponent.ON_WINDOW_RESIZED)] = BaseComponent.ON_WINDOW_RESIZED, - [hash(BaseComponent.ON_MESSAGE_INPUT)] = BaseComponent.ON_MESSAGE_INPUT, - [hash(BaseComponent.ON_LANGUAGE_CHANGE)] = BaseComponent.ON_LANGUAGE_CHANGE, -} +---@class druid.component +---@field druid druid.instance Druid instance to create inner components +---@field init fun(self:druid.component, ...)|nil Called when component is created +---@field update fun(self:druid.component, dt:number)|nil Called every frame +---@field on_remove fun(self:druid.component)|nil Called when component is removed +---@field on_input fun(self:druid.component, action_id:hash, action:table)|nil Called when input event is triggered +---@field on_input_interrupt fun(self:druid.component, action_id:hash, action:table)|nil Called when input event is consumed before +---@field on_message fun(self:druid.component, message_id:hash, message:table, sender:url)|nil Called when message is received +---@field on_late_init fun(self:druid.component)|nil Called before update once time after GUI init +---@field on_focus_lost fun(self:druid.component)|nil Called when app lost focus +---@field on_focus_gained fun(self:druid.component)|nil Called when app gained focus +---@field on_style_change fun(self:druid.component, style: table)|nil Called when style is changed +---@field on_layout_change fun(self:druid.component)|nil Called when GUI layout is changed +---@field on_window_resized fun(self:druid.component)|nil Called when window is resized +---@field on_language_change fun(self:druid.component)|nil Called when language is changed +---@field private _component druid.component.component +---@field private _meta druid.component.meta +local M = {} local uid = 0 -function BaseComponent.create_uid() +---@private +function M.create_uid() uid = uid + 1 return uid end ---- Set current component style table. --- --- Invoke `on_style_change` on component, if exist. Component should handle --- their style changing and store all style params --- @tparam BaseComponent self @{BaseComponent} --- @tparam table|nil druid_style Druid style module --- @treturn BaseComponent @{BaseComponent} -function BaseComponent.set_style(self, druid_style) +---Set component style. Pass nil to clear style +---@generic T +---@param self T +---@param druid_style table|nil +---@return T self The component itself for chaining +function M:set_style(druid_style) + ---@cast self druid.component + self._meta.style = druid_style or {} local component_style = self._meta.style[self._component.name] or {} @@ -88,20 +66,22 @@ function BaseComponent.set_style(self, druid_style) end ---- Set component template name. --- --- Use on all your custom components with GUI layouts used as templates. --- It will check parent template name to build full template name in self:get_node() --- @tparam BaseComponent self @{BaseComponent} --- @tparam string template BaseComponent template name --- @treturn BaseComponent @{BaseComponent} -function BaseComponent.set_template(self, template) +---Set component template name. Pass nil to clear template. +---This template id used to access nodes inside the template on GUI scene. +---Parent template will be added automatically if exist. +---@generic T +---@param self T +---@param template string|nil +---@return T self The component itself for chaining +function M:set_template(template) + ---@cast self druid.component + template = template or "" local parent = self:get_parent_component() - if parent and IS_AUTO_TEMPLATE then + if parent then local parent_template = parent:get_template() - if #parent_template > 0 then + if parent_template and #parent_template > 0 then if #template > 0 then template = "/" .. template end @@ -109,107 +89,62 @@ function BaseComponent.set_template(self, template) end end - self._meta.template = template + if template ~= "" then + self._meta.template = template + else + self._meta.template = nil + end + return self end ---- Get current component template name. --- @tparam BaseComponent self @{BaseComponent} --- @treturn string Component full template name -function BaseComponent.get_template(self) +---Get full template name. +---@return string +function M:get_template() return self._meta.template end ---- Set current component nodes. --- Use if your component nodes was cloned with `gui.clone_tree` and you got the node tree. --- @tparam BaseComponent self @{BaseComponent} --- @tparam table nodes BaseComponent nodes table --- @treturn BaseComponent @{BaseComponent} --- @usage --- local nodes = gui.clone_tree(self.prefab) --- ... In your component: --- self:set_nodes(nodes) -function BaseComponent.set_nodes(self, nodes) - self._meta.nodes = nodes - - -- When we use gui.clone_tree in inner template (template inside other template) - -- this nodes have no id. We have table: hash(correct_id) : hash("") - -- It's wrong and we use this hack to fix this - if nodes then - for id, node in pairs(nodes) do - gui.set_id(node, id) - end +---Set current component nodes, returned from `gui.clone_tree` function. +---@param nodes table|node|string|nil The nodes table from gui.clone_tree or prefab node to use for clone or node id to clone +---@return druid.component +function M:set_nodes(nodes) + if type(nodes) == "string" then + nodes = self:get_node(nodes) + end + if type(nodes) == "userdata" then + nodes = gui.clone_tree(nodes) --[[@as table]] end + self._meta.nodes = nodes return self end ---- Context used as first arg in all Druid events --- --- Context is usually self of gui_script. --- @tparam BaseComponent self @{BaseComponent} --- @treturn table BaseComponent context -function BaseComponent.get_context(self) +---Return current component context +---@return any context Usually it's self of script but can be any other Druid component +function M:get_context() return self._meta.context end ---- Increase input priority in input stack --- @tparam BaseComponent self @{BaseComponent} --- @local -function BaseComponent.increase_input_priority(self) - helper.deprecated("The component:increase_input_priority is deprecated. Please use component:set_input_priority(druid_const.PRIORITY_INPUT_MAX) instead") +---Get component node by node_id. Respect to current template and nodes. +---@param node_id string|node +---@return node +function M:get_node(node_id) + return helper.get_node(node_id, self:get_template(), self:get_nodes()) end ---- Get component node by name. --- --- If component has nodes, node_or_name should be string --- It autopick node by template name or from nodes by gui.clone_tree --- if they was setup via component:set_nodes, component:set_template. --- If node is not found, the exception will fired --- @tparam BaseComponent self @{BaseComponent} --- @tparam string|node node_or_name Node name or node itself --- @treturn node Gui node -function BaseComponent.get_node(self, node_or_name) - if type(node_or_name) ~= "string" then - -- Assume it's already node from gui.get_node - return node_or_name - end - - local template_name = self:get_template() - local nodes = self:__get_nodes() - - if #template_name > 0 then - template_name = template_name .. "/" - end - - local node - if nodes then - node = nodes[template_name .. node_or_name] - else - node = gui.get_node(template_name .. node_or_name) - end - - if not node then - assert(node, "No component with name: " .. (template_name or "") .. (node_or_name or "")) - end - - return node -end - - ---- Get Druid instance for inner component creation. --- @tparam BaseComponent self @{BaseComponent} --- @tparam string|nil template The template name --- @tparam table|nil nodes The nodes table --- @treturn DruidInstance Druid instance with component context -function BaseComponent.get_druid(self, template, nodes) - local context = { _context = self } - local druid_instance = setmetatable(context, { __index = self._meta.druid }) +---Get Druid instance for inner component creation. +---@param template string|nil +---@param nodes table|node|string|nil The nodes table from gui.clone_tree or prefab node to use for clone or node id to clone +---@return druid.instance +function M:get_druid(template, nodes) + local druid_instance = setmetatable({ + _context = self + }, { __index = self._meta.druid }) if template then self:set_template(template) @@ -223,50 +158,46 @@ function BaseComponent.get_druid(self, template, nodes) end ---- Return component name --- @tparam BaseComponent self @{BaseComponent} --- @treturn string The component name -function BaseComponent.get_name(self) - return self._component.name .. BaseComponent.create_uid() +---Get component name +---@return string name The component name + uid +function M:get_name() + return self._component.name .. M.create_uid() end ---- Return parent component name --- @tparam BaseComponent self @{BaseComponent} --- @treturn string|nil The parent component name if exist or bil -function BaseComponent.get_parent_name(self) +---Get parent component name +---@return string|nil parent_name The parent component name if exist or nil +function M:get_parent_name() local parent = self:get_parent_component() return parent and parent:get_name() end ---- Return component input priority --- @tparam BaseComponent self @{BaseComponent} --- @treturn number The component input priority -function BaseComponent.get_input_priority(self) +---Get component input priority, the bigger number processed first. Default value: 10 +---@return number +function M:get_input_priority() return self._component.input_priority end ---- Set component input priority --- --- Default value: 10 --- @tparam BaseComponent self @{BaseComponent} --- @tparam number value The new input priority value --- @tparam boolean|nil is_temporary If true, the reset input priority will return to previous value --- @treturn number The component input priority -function BaseComponent.set_input_priority(self, value, is_temporary) +---Set component input priority, the bigger number processed first. Default value: 10 +---@param value number +---@param is_temporary boolean|nil If true, the reset input priority will return to previous value +---@return druid.component self The component itself for chaining +function M:set_input_priority(value, is_temporary) assert(value) - if self._component.input_priority == value then + local component = self._component + + if component.input_priority == value then return self end - self._component.input_priority = value - self._component._is_input_priority_changed = true + component.input_priority = value + component._is_input_priority_changed = true if not is_temporary then - self._component.default_input_priority = value + component.default_input_priority = value end local children = self:get_childrens() @@ -278,32 +209,27 @@ function BaseComponent.set_input_priority(self, value, is_temporary) end ---- Reset component input priority to default value --- @tparam BaseComponent self @{BaseComponent} --- @treturn number The component input priority -function BaseComponent.reset_input_priority(self) +---Reset component input priority to it's default value, that was set in `create` function or `set_input_priority` +---@return druid.component self The component itself for chaining +function M:reset_input_priority() self:set_input_priority(self._component.default_input_priority) return self end ---- Return component UID. --- --- UID generated in component creation order. --- @tparam BaseComponent self @{BaseComponent} --- @treturn number The component uid -function BaseComponent.get_uid(self) +---Get component UID, unique identifier created in component creation order. +---@return number uid The component uid +function M:get_uid() return self._component._uid end ---- Set component input state. By default it enabled --- --- If input is disabled, the component will not receive input events --- @tparam BaseComponent self @{BaseComponent} --- @tparam boolean|nil state The component input state --- @treturn BaseComponent BaseComponent itself -function BaseComponent.set_input_enabled(self, state) +---Set component input state. By default it's enabled. +---If input is disabled, the component will not receive input events. +---Recursive for all children components. +---@param state boolean +---@return druid.component self The component itself for chaining +function M:set_input_enabled(state) self._meta.input_enabled = state for index = 1, #self._meta.children do @@ -314,23 +240,28 @@ function BaseComponent.set_input_enabled(self, state) end ---- Return the parent component if exist --- @tparam BaseComponent self @{BaseComponent} --- @treturn BaseComponent|nil The druid component instance or nil -function BaseComponent.get_parent_component(self) +---Get component input state. By default it's enabled. Can be disabled by `set_input_enabled` function. +---@return boolean +function M:get_input_enabled() + return self._meta.input_enabled +end + + +---Get parent component +---@return druid.component|nil parent_component The parent component if exist or nil +function M:get_parent_component() return self._meta.parent end ---- Setup component context and his style table --- @tparam BaseComponent self @{BaseComponent} --- @tparam table druid_instance The parent druid instance --- @tparam table context Druid context. Usually it is self of script --- @tparam table style Druid style module --- @tparam table instance_class The component instance class --- @treturn component BaseComponent itself --- @local -function BaseComponent.setup_component(self, druid_instance, context, style, instance_class) +---Setup component context and his style table +---@param druid_instance druid.instance The parent druid instance +---@param context table Druid context. Usually it is self of script +---@param style table Druid style module +---@param instance_class table The component instance class +---@return druid.component BaseComponent itself +---@private +function M:setup_component(druid_instance, context, style, instance_class) self._meta = { template = "", context = context, @@ -339,7 +270,7 @@ function BaseComponent.setup_component(self, druid_instance, context, style, ins druid = druid_instance, input_enabled = true, children = {}, - parent = type(context) ~= "userdata" and context, + parent = type(context) ~= "userdata" and context --[[@as druid.component]], instance_class = instance_class } @@ -354,113 +285,65 @@ function BaseComponent.setup_component(self, druid_instance, context, style, ins end ---- Print log information if debug mode is enabled --- @tparam BaseComponent self @{BaseComponent} --- @tparam string message --- @tparam table context --- @local -function BaseComponent.log_message(self, message, context) - if not self._component.is_debug then - return - end - print("[" .. self:get_name() .. "]:", message, helper.table_to_string(context)) -end - - ---- Set debug logs for component enabled or disabled --- @tparam BaseComponent self @{BaseComponent} --- @tparam boolean|nil is_debug --- @local -function BaseComponent.set_debug(self, is_debug) - self._component.is_debug = is_debug -end - - ---- Return true, if input priority was changed --- @tparam BaseComponent self @{BaseComponent} --- @local -function BaseComponent._is_input_priority_changed(self) +---Return true, if input priority was changed +---@private +function M:_is_input_priority_changed() return self._component._is_input_priority_changed end ---- Reset is_input_priority_changed field --- @tparam BaseComponent self @{BaseComponent} --- @local -function BaseComponent._reset_input_priority_changed(self) +---Reset is_input_priority_changed field +---@private +function M:_reset_input_priority_changed() self._component._is_input_priority_changed = false end -function BaseComponent.__tostring(self) - return self._component.name -end - - ---- Get current component interests --- @tparam BaseComponent self @{BaseComponent} --- @treturn table List of component interests --- @local -function BaseComponent.__get_interests(self) - local instance_class = self._meta.instance_class - if INTERESTS[instance_class] then - return INTERESTS[instance_class] - end - - local interests = {} - for index = 1, #BaseComponent.ALL_INTERESTS do - local interest = BaseComponent.ALL_INTERESTS[index] - if self[interest] and type(self[interest]) == "function" then - table.insert(interests, interest) - end - end - - INTERESTS[instance_class] = interests - return INTERESTS[instance_class] -end - - ---- Get current component nodes --- @tparam BaseComponent self @{BaseComponent} --- @treturn table BaseComponent nodes table --- @local -function BaseComponent.__get_nodes(self) +---Get current component nodes +---@return table|nil +function M:get_nodes() local nodes = self._meta.nodes local parent = self:get_parent_component() if parent then - nodes = nodes or parent:__get_nodes() + nodes = nodes or parent:get_nodes() end + return nodes end ---- Add child to component children list --- @tparam BaseComponent self @{BaseComponent} --- @tparam component child The druid component instance --- @local -function BaseComponent.__add_child(self, child) +---Add child to component children list +---@generic T: druid.component +---@param child T The druid component instance +---@return T self The component itself for chaining +---@private +function M:__add_child(child) table.insert(self._meta.children, child) + + return self end ---- Remove child from component children list --- @tparam BaseComponent self @{BaseComponent} --- @tparam component child The druid component instance --- @local -function BaseComponent.__remove_child(self, child) +---Remove child from component children list +---@generic T: druid.component +---@param child T The druid component instance +---@return boolean true if child was removed +---@private +function M:__remove_child(child) for i = #self._meta.children, 1, -1 do if self._meta.children[i] == child then table.remove(self._meta.children, i) return true end end + + return false end ---- Return all children components, recursive --- @tparam BaseComponent self @{BaseComponent} --- @treturn table Array of childrens if the Druid component instance -function BaseComponent.get_childrens(self) +---Return all children components, recursive +---@return table Array of childrens if the Druid component instance +function M:get_childrens() local childrens = {} for i = 1, #self._meta.children do @@ -474,23 +357,21 @@ function BaseComponent.get_childrens(self) end ---- Create new component. It will inheritance from basic Druid component. --- @function BaseComponent.create --- @tparam string name BaseComponent name --- @tparam number|nil input_priority The input priority. The bigger number processed first --- @local -function BaseComponent.create(name, input_priority) +---Сreate a new component class, which will inherit from the base Druid component. +---@param name string|nil The name of the component +---@param input_priority number|nil The input priority. The bigger number processed first. Default value: 10 +---@return druid.component +function M.create(name, input_priority) local new_class = setmetatable({}, { - __index = BaseComponent, + __index = M, __call = function(cls, ...) local self = setmetatable({ _component = { - name = name, + name = name or "Druid Component", input_priority = input_priority or const.PRIORITY_INPUT, default_input_priority = input_priority or const.PRIORITY_INPUT, - is_debug = false, _is_input_priority_changed = true, -- Default true for sort once time after GUI init - _uid = BaseComponent.create_uid() + _uid = M.create_uid() } }, { __index = cls @@ -503,4 +384,49 @@ function BaseComponent.create(name, input_priority) end -return BaseComponent +local WIDGET_METATABLE = { __index = M } + +---Create the Druid component instance +---@param self druid.instance +---@param widget_class druid.widget +---@param context table +---@return druid.widget +function M.create_widget(self, widget_class, context) + local instance = setmetatable({}, { + __index = setmetatable(widget_class, WIDGET_METATABLE) + }) + + instance._component = { + _uid = M.create_uid(), + name = "Druid Widget", + input_priority = const.PRIORITY_INPUT, + default_input_priority = const.PRIORITY_INPUT, + _is_input_priority_changed = true, -- Default true for sort once time after GUI init + } + + -- I'll hide a meta fields under metatable to hide this tables from pprint output + -- cause it's leads to recursive pprint's from (druid = self) + -- Wish this to be better, since it can reduce a memory usage + instance._meta = setmetatable({}, { __index = { + druid = self, + template = "", + nodes = nil, + context = context, + style = nil, + input_enabled = true, + children = {}, + parent = type(context) ~= "userdata" and context or nil, + instance_class = widget_class + }}) + + -- Register + if instance._meta.parent then + instance._meta.parent:__add_child(instance) + end + + ---@cast instance druid.widget + return instance +end + + +return M diff --git a/druid/const.lua b/druid/const.lua index 70667de..0363871 100755 --- a/druid/const.lua +++ b/druid/const.lua @@ -1,10 +1,4 @@ --- Copyright (c) 2021 Maksim Tuprikov . This code is licensed under MIT license - ---- Druid constants --- @local --- @module DruidConst --- @alias druid_const - +---@class druid.system.const local M = {} M.ACTION_TEXT = hash(sys.get_config_string("druid.input_text", "text")) @@ -23,9 +17,6 @@ M.ACTION_LSHIFT = hash(sys.get_config_string("druid.input_key_lshift", "key_lshi M.ACTION_LCTRL = hash(sys.get_config_string("druid.input_key_lctrl", "key_lctrl")) M.ACTION_LCMD = hash(sys.get_config_string("druid.input_key_lsuper", "key_lsuper")) -M.IS_STENCIL_CHECK = not (sys.get_config_int("druid.no_stencil_check", 0) == 1) - - M.ON_INPUT = "on_input" M.ON_UPDATE = "update" M.ON_MESSAGE = "on_message" @@ -33,23 +24,28 @@ M.ON_LATE_INIT = "on_late_init" M.ON_FOCUS_LOST = "on_focus_lost" M.ON_FOCUS_GAINED = "on_focus_gained" M.ON_LAYOUT_CHANGE = "on_layout_change" -M.ON_MESSAGE_INPUT = "on_message_input" M.ON_WINDOW_RESIZED = "on_window_resized" M.ON_LANGUAGE_CHANGE = "on_language_change" +M.ALL_INTERESTS = { + M.ON_INPUT, + M.ON_UPDATE, + M.ON_MESSAGE, + M.ON_LATE_INIT, + M.ON_FOCUS_LOST, + M.ON_FOCUS_GAINED, + M.ON_LAYOUT_CHANGE, + M.ON_WINDOW_RESIZED, + M.ON_LANGUAGE_CHANGE, +} + +M.MSG_LAYOUT_CHANGED = hash("layout_changed") + -- Components with higher priority value processed first M.PRIORITY_INPUT = 10 M.PRIORITY_INPUT_HIGH = 20 M.PRIORITY_INPUT_MAX = 100 -M.MESSAGE_INPUT = { - BUTTON_CLICK = "button_click", - BUTTON_LONG_CLICK = "button_long_click", - BUTTON_DOUBLE_CLICK = "button_double_click", - BUTTON_REPEATED_CLICK = "button_repeated_click", - TEXT_SET = "text_set", -} - M.PIVOTS = { [gui.PIVOT_CENTER] = vmath.vector3(0), [gui.PIVOT_N] = vmath.vector3(0, 0.5, 0), @@ -83,9 +79,7 @@ M.LAYOUT_MODE = { STRETCH = gui.ADJUST_STRETCH, } -M.VECTOR_ZERO = vmath.vector3(0) -M.SYS_INFO = sys.get_sys_info() -M.CURRENT_SYSTEM_NAME = M.SYS_INFO.system_name +M.CURRENT_SYSTEM_NAME = sys.get_sys_info().system_name M.OS = { ANDROID = "Android", @@ -104,10 +98,13 @@ M.SHIFT = { M.TEXT_ADJUST = { DOWNSCALE = "downscale", - TRIM = "trim", NO_ADJUST = "no_adjust", DOWNSCALE_LIMITED = "downscale_limited", SCROLL = "scroll", + TRIM = "trim", + TRIM_LEFT = "trim_left", + SCALE_THEN_TRIM = "scale_then_trim", + SCALE_THEN_TRIM_LEFT = "scale_then_trim_left", SCALE_THEN_SCROLL = "scale_then_scroll", } @@ -116,17 +113,4 @@ M.SIDE = { Y = "y" } -M.SWIPE = { - UP = "up", - DOWN = "down", - LEFT = "left", - RIGHT = "right", -} - -M.ERRORS = { - GRID_DYNAMIC_ANCHOR = "The pivot of dynamic grid node should be West, East, South or North" -} - -M.EMPTY_FUNCTION = function() end - return M diff --git a/druid/custom/rich_input/rich_input.gui b/druid/custom/rich_input/rich_input.gui index b511cec..c179f20 100644 --- a/druid/custom/rich_input/rich_input.gui +++ b/druid/custom/rich_input/rich_input.gui @@ -1,371 +1,160 @@ -script: "" fonts { - name: "game" - font: "/example/assets/fonts/game.font" + name: "druid_text_bold" + font: "/druid/fonts/druid_text_bold.font" } textures { - name: "kenney" - texture: "/example/assets/images/kenney.atlas" -} -background_color { - x: 0.0 - y: 0.0 - z: 0.0 - w: 0.0 + name: "druid" + texture: "/druid/druid.atlas" } nodes { - position { - x: 0.0 - y: 0.0 - z: 0.0 - w: 1.0 - } - rotation { - x: 0.0 - y: 0.0 - z: 0.0 - w: 1.0 - } - scale { - x: 1.0 - y: 1.0 - z: 1.0 - w: 1.0 - } size { - x: 1.0 - y: 1.0 - z: 0.0 - w: 1.0 - } - color { - x: 1.0 - y: 1.0 - z: 1.0 - w: 1.0 + x: 200.0 + y: 40.0 } type: TYPE_BOX - blend_mode: BLEND_MODE_ALPHA - texture: "kenney/empty" id: "root" - xanchor: XANCHOR_NONE - yanchor: YANCHOR_NONE - pivot: PIVOT_CENTER - adjust_mode: ADJUST_MODE_FIT - layer: "" inherit_alpha: true - slice9 { - x: 0.0 - y: 0.0 - z: 0.0 - w: 0.0 - } - clipping_mode: CLIPPING_MODE_NONE - clipping_visible: true - clipping_inverted: false - alpha: 1.0 - template_node_child: false - size_mode: SIZE_MODE_AUTO + visible: false } nodes { - position { - x: 0.0 - y: 0.0 - z: 0.0 - w: 1.0 - } - rotation { - x: 0.0 - y: 0.0 - z: 0.0 - w: 1.0 - } - scale { - x: 1.0 - y: 1.0 - z: 1.0 - w: 1.0 - } size { - x: 190.0 - y: 45.0 - z: 0.0 - w: 1.0 + x: 200.0 + y: 40.0 } color { - x: 1.0 - y: 1.0 - z: 1.0 - w: 1.0 + x: 0.31 + y: 0.318 + z: 0.322 } type: TYPE_BOX - blend_mode: BLEND_MODE_ALPHA - texture: "kenney/progress_back" + texture: "druid/rect_round2_width2" id: "button" - xanchor: XANCHOR_NONE - yanchor: YANCHOR_NONE - pivot: PIVOT_CENTER - adjust_mode: ADJUST_MODE_FIT parent: "root" - layer: "" inherit_alpha: true slice9 { - x: 0.0 - y: 0.0 - z: 0.0 - w: 0.0 + x: 4.0 + y: 4.0 + z: 4.0 + w: 4.0 } - clipping_mode: CLIPPING_MODE_NONE - clipping_visible: true - clipping_inverted: false - alpha: 1.0 - template_node_child: false - size_mode: SIZE_MODE_AUTO } nodes { - position { - x: 0.0 - y: 0.0 - z: 0.0 - w: 1.0 - } - rotation { - x: 0.0 - y: 0.0 - z: 0.0 - w: 1.0 - } scale { x: 0.5 y: 0.5 - z: 1.0 - w: 1.0 } size { - x: 300.0 - y: 60.0 - z: 0.0 - w: 1.0 + x: 380.0 + y: 50.0 } color { - x: 0.9490196 - y: 0.9490196 - z: 0.9490196 - w: 1.0 + x: 0.31 + y: 0.318 + z: 0.322 } type: TYPE_TEXT - blend_mode: BLEND_MODE_ALPHA text: "Placeholder" - font: "game" + font: "druid_text_bold" id: "placeholder_text" - xanchor: XANCHOR_NONE - yanchor: YANCHOR_NONE - pivot: PIVOT_CENTER outline { x: 0.4 y: 0.4 z: 0.4 - w: 1.0 } shadow { x: 1.0 y: 1.0 z: 1.0 - w: 1.0 } - adjust_mode: ADJUST_MODE_FIT - line_break: false - parent: "button" - layer: "" + parent: "root" inherit_alpha: true - alpha: 1.0 - outline_alpha: 1.0 + outline_alpha: 0.0 shadow_alpha: 0.0 - template_node_child: false - text_leading: 1.0 - text_tracking: 0.0 } nodes { - position { - x: 0.0 - y: 0.0 - z: 0.0 - w: 1.0 - } - rotation { - x: 0.0 - y: 0.0 - z: 0.0 - w: 1.0 - } scale { - x: 0.6 - y: 0.6 - z: 1.0 - w: 1.0 + x: 0.5 + y: 0.5 } size { - x: 300.0 - y: 60.0 - z: 0.0 - w: 1.0 + x: 380.0 + y: 50.0 } color { - x: 1.0 - y: 1.0 - z: 1.0 - w: 1.0 + x: 0.722 + y: 0.741 + z: 0.761 } type: TYPE_TEXT - blend_mode: BLEND_MODE_ALPHA text: "User input" - font: "game" + font: "druid_text_bold" id: "input_text" - xanchor: XANCHOR_NONE - yanchor: YANCHOR_NONE - pivot: PIVOT_CENTER - outline { - x: 0.0 - y: 0.0 - z: 0.0 - w: 1.0 - } shadow { x: 1.0 y: 1.0 z: 1.0 - w: 1.0 } - adjust_mode: ADJUST_MODE_FIT - line_break: false - parent: "button" - layer: "" + parent: "root" inherit_alpha: true - alpha: 1.0 - outline_alpha: 1.0 + outline_alpha: 0.0 shadow_alpha: 0.0 - template_node_child: false - text_leading: 1.0 - text_tracking: 0.0 } nodes { position { - x: 67.0 - y: 0.0 - z: 0.0 - w: 1.0 - } - rotation { - x: 0.0 - y: 0.0 - z: 0.0 - w: 1.0 + x: 61.0 } scale { - x: 0.6 - y: 0.6 - z: 1.0 - w: 1.0 + x: 0.5 + y: 0.5 } size { - x: 1.0 - y: 1.0 - z: 0.0 - w: 1.0 + x: 16.0 + y: 50.0 } color { - x: 1.0 - y: 1.0 - z: 1.0 - w: 1.0 + x: 0.631 + y: 0.843 + z: 0.961 } type: TYPE_BOX - blend_mode: BLEND_MODE_ALPHA - texture: "kenney/empty" + texture: "druid/ui_circle_16" id: "cursor_node" - xanchor: XANCHOR_NONE - yanchor: YANCHOR_NONE - pivot: PIVOT_CENTER - adjust_mode: ADJUST_MODE_FIT - parent: "button" - layer: "" + parent: "root" inherit_alpha: true slice9 { - x: 0.0 - y: 0.0 - z: 0.0 - w: 0.0 + x: 8.0 + y: 8.0 + z: 8.0 + w: 8.0 } - clipping_mode: CLIPPING_MODE_NONE - clipping_visible: true - clipping_inverted: false - alpha: 1.0 - template_node_child: false - size_mode: SIZE_MODE_AUTO + alpha: 0.5 } nodes { position { - x: 0.0 - y: 2.0 - z: 0.0 - w: 1.0 - } - rotation { - x: 0.0 - y: 0.0 - z: 0.0 - w: 1.0 - } - scale { - x: 1.0 - y: 1.0 - z: 1.0 - w: 1.0 + x: -1.4 + y: 4.0 } size { x: 20.0 y: 40.0 - z: 0.0 - w: 1.0 } color { - x: 0.2 - y: 0.2 - z: 0.2 - w: 1.0 + x: 0.722 + y: 0.741 + z: 0.761 } type: TYPE_TEXT - blend_mode: BLEND_MODE_ALPHA text: "|" - font: "game" + font: "druid_text_bold" id: "cursor_text" - xanchor: XANCHOR_NONE - yanchor: YANCHOR_NONE - pivot: PIVOT_CENTER - outline { - x: 0.0 - y: 0.0 - z: 0.0 - w: 1.0 - } shadow { x: 1.0 y: 1.0 z: 1.0 - w: 1.0 } - adjust_mode: ADJUST_MODE_FIT - line_break: false parent: "cursor_node" - layer: "" - inherit_alpha: true - alpha: 1.0 outline_alpha: 0.0 shadow_alpha: 0.0 - template_node_child: false - text_leading: 1.0 - text_tracking: 0.0 } material: "/builtins/materials/gui.material" adjust_reference: ADJUST_REFERENCE_PARENT -max_nodes: 512 diff --git a/druid/custom/rich_input/rich_input.lua b/druid/custom/rich_input/rich_input.lua index c42b637..213d14d 100644 --- a/druid/custom/rich_input/rich_input.lua +++ b/druid/custom/rich_input/rich_input.lua @@ -1,59 +1,17 @@ --- Copyright (c) 2022 Maksim Tuprikov . This code is licensed under MIT license - ---- Druid Rich Input custom component. --- It's wrapper on Input component with cursor and placeholder text --- @module RichInput --- @alias druid.rich_input - ---- The component druid instance --- @tfield DruidInstance druid @{DruidInstance} - ---- Root node --- @tfield node root - ---- On input field text change callback(self, input_text) --- @tfield Input input @{Input} - ---- On input field text change to empty string callback(self, input_text) --- @tfield node cursor - ---- On input field text change to empty string callback(self, input_text) --- @tfield node cursor_text - ---- On input field text change to empty string callback(self, input_text) --- @tfield vector3 cursor_position - ---- On input field text change to empty string callback(self, input_text) --- @tfield druid.text input_text - ---- On input field text change to empty string callback(self, input_text) --- @tfield druid.drag drag - ---- On input field text change to empty string callback(self, input_text) --- @tfield druid.text placeholder - ---- On input field text change to empty string callback(self, input_text) --- @tfield vector3 text_position - ---- - local component = require("druid.component") local helper = require("druid.helper") local const = require("druid.const") local utf8_lua = require("druid.system.utf8") local utf8 = utf8 or utf8_lua -local input = require("druid.extended.input") -local RichInput = component.create("druid.rich_input") - -local SCHEME = { - ROOT = "root", - BUTTON = "button", - PLACEHOLDER = "placeholder_text", - INPUT = "input_text", - CURSOR = "cursor_node", - CURSOR_TEXT = "cursor_text", -} +---The component that handles a rich text input field, it's a wrapper around the druid.input component +---@class druid.rich_input: druid.component +---@field root node The root node of the rich input +---@field input druid.input The input component +---@field cursor node The cursor node +---@field cursor_text node The cursor text node +---@field cursor_position vector3 The position of the cursor +local M = component.create("druid.rich_input") local DOUBLE_CLICK_TIME = 0.35 @@ -76,8 +34,21 @@ local function set_selection_width(self, selection_width) end +---@param self druid.rich_input local function update_text(self) - local left_text_part = utf8.sub(self.input:get_text(), 0, self.input.cursor_index) + local full_text = self.input:get_text() + local visible_text = self.input.text:get_text() + + local is_truncated = visible_text ~= full_text + local cursor_index = self.input.cursor_index + if is_truncated then + -- If text is truncated, we need to adjust the cursor index + -- to the last visible character + cursor_index = utf8.len(visible_text) + + end + + local left_text_part = utf8.sub(self.input:get_text(), 0, cursor_index) local selected_text_part = utf8.sub(self.input:get_text(), self.input.start_index + 1, self.input.end_index) local left_part_width = self.input.text:get_text_size(left_text_part) @@ -86,7 +57,7 @@ local function update_text(self) local pivot_text = gui.get_pivot(self.input.text.node) local pivot_offset = helper.get_pivot_offset(pivot_text) - self.cursor_position.x = self.text_position.x - self.input.total_width * (0.5 + pivot_offset.x) + left_part_width + self.cursor_position.x = self.text_position.x - self.input.text_width * (0.5 + pivot_offset.x) + left_part_width gui.set_position(self.cursor, self.cursor_position) gui.set_scale(self.cursor, self.input.text.scale) @@ -115,7 +86,7 @@ local function on_unselect(self) end ---- Update selection +---Update selection local function update_selection(self) update_text(self) end @@ -174,7 +145,12 @@ local function on_touch_start_callback(self, touch) end - +---@param self druid.rich_input +---@param dx number The delta x position +---@param dy number The delta y position +---@param x number The x position +---@param y number The y position +---@param touch table The touch table local function on_drag_callback(self, dx, dy, x, y, touch) if not self._last_touch_info.cursor_index then return @@ -189,13 +165,11 @@ local function on_drag_callback(self, dx, dy, x, y, touch) end ---- The @{RichInput} constructor --- @tparam RichInput self @{RichInput} --- @tparam string template The template string name --- @tparam table nodes Nodes table from gui.clone_tree -function RichInput.init(self, template, nodes) +---@param template string The template string name +---@param nodes table Nodes table from gui.clone_tree +function M:init(template, nodes) self.druid = self:get_druid(template, nodes) - self.root = self:get_node(SCHEME.ROOT) + self.root = self:get_node("root") self._last_touch_info = { cursor_index = nil, @@ -204,20 +178,20 @@ function RichInput.init(self, template, nodes) self.is_lshift = false self.is_lctrl = false - self.input = self.druid:new(input, self:get_node(SCHEME.BUTTON), self:get_node(SCHEME.INPUT)) + self.input = self.druid:new_input("button", "input_text") self.is_button_input_enabled = gui.is_enabled(self.input.button.node) - self.cursor = self:get_node(SCHEME.CURSOR) + self.cursor = self:get_node("cursor_node") self.cursor_position = gui.get_position(self.cursor) - self.cursor_text = self:get_node(SCHEME.CURSOR_TEXT) + self.cursor_text = self:get_node("cursor_text") - self.drag = self.druid:new_drag(self:get_node(SCHEME.BUTTON), on_drag_callback) + self.drag = self.druid:new_drag("button", on_drag_callback) self.drag.on_touch_start:subscribe(on_touch_start_callback) self.drag:set_input_priority(const.PRIORITY_INPUT_MAX + 1) self.drag:set_enabled(false) self.input:set_text("") - self.placeholder = self.druid:new_text(self:get_node(SCHEME.PLACEHOLDER)) + self.placeholder = self.druid:new_text("placeholder_text") self.text_position = gui.get_position(self.input.text.node) self.input.on_input_text:subscribe(update_text) @@ -230,7 +204,11 @@ function RichInput.init(self, template, nodes) end -function RichInput.on_input(self, action_id, action) +---@private +---@param action_id hash Action id from on_input +---@param action table Action table from on_input +---@return boolean is_consumed True if input was consumed +function M:on_input(action_id, action) if action_id == const.ACTION_LSHIFT then if action.pressed then self.is_lshift = true @@ -247,37 +225,43 @@ function RichInput.on_input(self, action_id, action) end end - if action_id == const.ACTION_LEFT and (action.pressed or action.repeated) then - self.input:move_selection(-1, self.is_lshift, self.is_lctrl) + if self.input.is_selected then + if action_id == const.ACTION_LEFT and (action.pressed or action.repeated) then + self.input:move_selection(-1, self.is_lshift, self.is_lctrl) + return true + end + + if action_id == const.ACTION_RIGHT and (action.pressed or action.repeated) then + self.input:move_selection(1, self.is_lshift, self.is_lctrl) + return true + end end - if action_id == const.ACTION_RIGHT and (action.pressed or action.repeated) then - self.input:move_selection(1, self.is_lshift, self.is_lctrl) - end + return false end ---- Set placeholder text --- @tparam RichInput self @{RichInput} --- @tparam string placeholder_text The placeholder text -function RichInput.set_placeholder(self, placeholder_text) - self.placeholder:set_to(placeholder_text) +---Set placeholder text +---@param placeholder_text string The placeholder text +---@return druid.rich_input self Current instance +function M:set_placeholder(placeholder_text) + self.placeholder:set_text(placeholder_text) return self end ---- Select input field --- @tparam RichInput self @{RichInput} -function RichInput.select(self) +---Select input field +---@return druid.rich_input self Current instance +function M:select() self.input:select() + return self end ---- Set input field text --- @tparam RichInput self @{RichInput} --- @treturn druid.input Current input instance --- @tparam string text The input text -function RichInput.set_text(self, text) +---Set input field text +---@param text string The input text +---@return druid.rich_input self Current instance +function M:set_text(text) self.input:set_text(text) gui.set_enabled(self.placeholder.node, true and #self.input:get_text() == 0) @@ -285,11 +269,10 @@ function RichInput.set_text(self, text) end ---- Set input field font --- @tparam RichInput self @{RichInput} --- @tparam hash font The font hash --- @treturn druid.input Current input instance -function RichInput.set_font(self, font) +---Set input field font +---@param font hash The font hash +---@return druid.rich_input self Current instance +function M:set_font(font) gui.set_font(self.input.text.node, font) gui.set_font(self.placeholder.node, font) @@ -297,24 +280,22 @@ function RichInput.set_font(self, font) end ---- Set input field text --- @tparam RichInput self @{RichInput} -function RichInput.get_text(self) +---Set input field text +function M:get_text() return self.input:get_text() end ---- Set allowed charaters for input field. +---Set allowed charaters for input field. -- See: https://defold.com/ref/stable/string/ -- ex: [%a%d] for alpha and numeric --- @tparam RichInput self @{RichInput} --- @tparam string characters Regulax exp. for validate user input --- @treturn RichInput Current instance -function RichInput.set_allowed_characters(self, characters) +---@param characters string Regular expression for validate user input +---@return druid.rich_input self Current instance +function M:set_allowed_characters(characters) self.input:set_allowed_characters(characters) return self end -return RichInput +return M diff --git a/druid/custom/rich_text/module/rt.lua b/druid/custom/rich_text/module/rt.lua index 8baa48c..e688f43 100755 --- a/druid/custom/rich_text/module/rt.lua +++ b/druid/custom/rich_text/module/rt.lua @@ -1,11 +1,8 @@ +---@diagnostic disable: inject-field -- Source: https://github.com/britzl/defold-richtext version 5.19.0 -- Author: Britzl -- Modified by: Insality ---- RT --- @module rich_text.rt --- @local - local helper = require("druid.helper") local parser = require("druid.custom.rich_text.module.rt_parse") local utf8_lua = require("druid.system.utf8") @@ -54,10 +51,10 @@ local function compare_words(one, two) end ---- Get the length of a text ignoring any tags except image tags --- which are treated as having a length of 1 --- @param text String with text or a list of words (from richtext.create) --- @return Length of text +---Get the length of a text ignoring any tags except image tags +---which are treated as having a length of 1 +---@param text string|table String with text or a list of words (from richtext.create) +---@return number Length of text function M.length(text) assert(text) if type(text) == "string" then @@ -156,12 +153,12 @@ end -- Create rich text gui nodes from text ---- @param text string The text to create rich text nodes from ---- @param settings table Optional settings table (refer to documentation for details) ---- @param style druid.rich_text.style ---- @return druid.rich_text.word[] ---- @return druid.rich_text.settings ---- @return druid.rich_text.lines_metrics +---@param text string The text to create rich text nodes from +---@param settings table Optional settings table (refer to documentation for details) +---@param style druid.rich_text.style +---@return druid.rich_text.word[] +---@return druid.rich_text.settings +---@return druid.rich_text.lines_metrics function M.create(text, settings, style) assert(text, "You must provide a text") @@ -185,7 +182,7 @@ function M.create(text, settings, style) outline = settings.outline, font = gui.get_font(settings.text_prefab), -- Image params - ---@type druid.rich_text.image + ---@type druid.rich_text.word.image image = nil, -- Tags br = nil, @@ -526,10 +523,10 @@ function M.is_fit_info_area(lines, settings) end ---- Get all words with a specific tag --- @param words The words to search (as received from richtext.create) --- @param tag The tag to search for. Nil to search for words without a tag --- @return Words matching the tag +---Get all words with a specific tag +---@param words druid.rich_text.word[] The words to search (as received from richtext.create) +---@param tag string|nil The tag to search for. Nil to search for words without a tag +---@return druid.rich_text.word[] Words matching the tag function M.tagged(words, tag) local tagged = {} for i = 1, #words do diff --git a/druid/custom/rich_text/module/rt_color.lua b/druid/custom/rich_text/module/rt_color.lua index dd7a725..6729998 100644 --- a/druid/custom/rich_text/module/rt_color.lua +++ b/druid/custom/rich_text/module/rt_color.lua @@ -34,7 +34,7 @@ function M.parse_decimal(dec) local r,g,b,a = dec:match("(%d*%.?%d*),(%d*%.?%d*),(%d*%.?%d*),(%d*%.?%d*)") if r and g and b and a then - local color = vmath.vector4(tonumber(r), tonumber(g), tonumber(b), tonumber(a)) + local color = vmath.vector4(tonumber(r) or 0, tonumber(g) or 0, tonumber(b) or 0, tonumber(a) or 1) cache[dec] = color return color end diff --git a/druid/custom/rich_text/module/rt_parse.lua b/druid/custom/rich_text/module/rt_parse.lua index 53d42a6..3d019c7 100755 --- a/druid/custom/rich_text/module/rt_parse.lua +++ b/druid/custom/rich_text/module/rt_parse.lua @@ -107,11 +107,11 @@ local function merge_tags(dst, src) end ---- Parse the text into individual words --- @param text The text to parse --- @param default_settings Default settings for each word --- @param color_aliases Color aliases table --- @return List of all words +---Parse the text into individual words +---@param text string The text to parse +---@param default_settings table Default settings for each word +---@param style table Style settings +---@return table List of all words function M.parse(text, default_settings, style) assert(text) assert(default_settings) @@ -184,7 +184,9 @@ function M.parse(text, default_settings, style) end ---- Get the length of a text, excluding any tags (except image and spine tags) +---Get the length of a text, excluding any tags (except image and spine tags) +---@param text string The text to get the length of +---@return number The length of the text function M.length(text) return utf8.len(text:gsub("", " "):gsub("<.->", "")) end diff --git a/druid/custom/rich_text/module/rt_tags.lua b/druid/custom/rich_text/module/rt_tags.lua index 058131e..f061954 100644 --- a/druid/custom/rich_text/module/rt_tags.lua +++ b/druid/custom/rich_text/module/rt_tags.lua @@ -26,12 +26,11 @@ function M.register(tag, fn) end --- Split string at first occurrence of token --- If the token doesn't exist the whole string is returned --- @param s The string to split --- @param token The token to split string on --- @return before The string before the token or the whole string if token doesn't exist --- @return after The string after the token or nul +---Split string at first occurrence of token +---@param s string? The string to split +---@param token string The token to split string on +---@return string? before The string before the token or the whole string if token doesn't exist +---@return string? after The string after the token or nil local function split(s, token) if not s then return nil, nil end local before, after = s:match("(.-)" .. token .. "(.*)") diff --git a/druid/custom/rich_text/rich_text.lua b/druid/custom/rich_text/rich_text.lua index 4ed7198..7b38045 100644 --- a/druid/custom/rich_text/rich_text.lua +++ b/druid/custom/rich_text/rich_text.lua @@ -1,89 +1,83 @@ --- Copyright (c) 2022 Maksim Tuprikov . This code is licensed under MIT license - ---- Druid Rich Text Custom Component. --- # Overview # --- --- This custom component is inspired by defold-richtext by britzl. --- It uses a similar syntax for tags but currently supports fewer tags. --- --- Create Rich Text on your GUI Text Node. All properties of the text node will be used as default for the text. --- --- # Notes # --- --- • Nested tags are supported --- --- Example Link --- @usage --- local RichText = require("druid.custom.rich_text.rich_text") --- ... --- self.rich_text = self.druid:new(RichText, "rich_text") --- self.rich_text:set_text("Hello, Druid Rich Text!") --- @usage --- type druid.rich_text.word = { --- node: Node, --- relative_scale: number, --- color: vector4, --- position: vector3, --- offset: vector3, --- scale: vector3, --- size: vector3, --- metrics: druid.rich_text.metrics, --- pivot: Pivot, --- text: string, --- shadow: vector4, --- outline: vector4, --- font: string, --- image: druid.rich_text.image, --- br: boolean, --- nobr: boolean, --- } --- --- type druid.rich_text.word.image = { --- texture: string, --- anim: string, --- width: number, --- height: number, --- } --- --- type druid.rich_text.lines_metrics = { --- text_width: number, --- text_height: number, --- lines: table, --- } --- --- type druid.rich_text.metrics = { --- width: number, --- height: number, --- offset_x: number|nil, --- offset_y: number|nil, --- node_size: vector3|nil @For images only, --- } --- @module RichText --- @within BaseComponent --- @alias druid.rich_text - ---- The component druid instance --- @tfield DruidInstance druid @{DruidInstance} - ---- The root node of the Rich Text --- @tfield node root - ---- The text prefab node --- @tfield node text_prefab - --- - local component = require("druid.component") local rich_text = require("druid.custom.rich_text.module.rt") -local RichText = component.create("rich_text") +---@class druid.rich_text.settings +---@field parent node +---@field size number +---@field fonts table +---@field scale vector3 +---@field color vector4 +---@field shadow vector4 +---@field outline vector4 +---@field position vector3 +---@field image_pixel_grid_snap boolean +---@field combine_words boolean +---@field default_animation string +---@field text_prefab node +---@field adjust_scale number +---@field default_texture string +---@field is_multiline boolean +---@field text_leading number +---@field font hash +---@field width number +---@field height number + +---@class druid.rich_text.word +---@field node node +---@field relative_scale number +---@field source_text string +---@field color vector4 +---@field text_color vector4 +---@field position vector3 +---@field offset vector3 +---@field scale vector3 +---@field size vector3 +---@field metrics druid.rich_text.metrics +---@field pivot userdata +---@field text string +---@field shadow vector4 +---@field outline vector4 +---@field font string +---@field image druid.rich_text.word.image +---@field br boolean +---@field nobr boolean +---@field tags table + +---@class druid.rich_text.word.image +---@field texture string +---@field anim string +---@field width number +---@field height number + +---@class druid.rich_text.style +---@field COLORS table +---@field ADJUST_STEPS number +---@field ADJUST_SCALE_DELTA number + +---@class druid.rich_text.lines_metrics +---@field text_width number +---@field text_height number +---@field lines table + +---@class druid.rich_text.metrics +---@field width number +---@field height number +---@field offset_x number|nil +---@field offset_y number|nil +---@field node_size vector3|nil + +---The component that handles a rich text display, allows to custom color, size, font, etc. of the parts of the text +---@class druid.rich_text: druid.component +---@field root node The root node of the rich text +---@field text_prefab node The text prefab node +---@field private _last_value string The last value of the rich text +---@field private _settings table The settings of the rich text +local M = component.create("rich_text") ---- The @{RichText} constructor --- @tparam RichText self @{RichText} --- @tparam node|string text_node The text node to make Rich Text --- @tparam string|nil value The initial text value. Default will be gui.get_text(text_node) -function RichText.init(self, text_node, value) +---@param text_node node|string The text node to make Rich Text +---@param value string|nil The initial text value. Default will be gui.get_text(text_node) +function M:init(text_node, value) self.root = self:get_node(text_node) self.text_prefab = self.root @@ -98,77 +92,57 @@ function RichText.init(self, text_node, value) end -function RichText.on_layout_change(self) +---@private +function M:on_layout_change() if self._last_value then self:set_text(self._last_value) end end ---- Component style params. --- You can override this component styles params in Druid styles table --- or create your own style --- @table style --- @tfield table|nil COLORS Rich Text color aliases. Default: {} --- @tfield number|nil ADJUST_STEPS Amount steps of attemps text adjust by height. Default: 20 --- @tfield number|nil ADJUST_SCALE_DELTA Scale step on each height adjust step. Default: 0.02 -function RichText.on_style_change(self, style) - self.style = {} - self.style.COLORS = style.COLORS or {} - self.style.ADJUST_STEPS = style.ADJUST_STEPS or 20 - self.style.ADJUST_SCALE_DELTA = style.ADJUST_SCALE_DELTA or 0.02 +---@private +---@param style druid.rich_text.style +function M:on_style_change(style) + self.style = { + COLORS = style.COLORS or {}, + ADJUST_STEPS = style.ADJUST_STEPS or 20, + ADJUST_SCALE_DELTA = style.ADJUST_SCALE_DELTA or 0.02, + } end ---- Set text for Rich Text --- @tparam RichText self @{RichText} --- @tparam string|nil text The text to set --- @treturn druid.rich_text.word[] words --- @treturn druid.rich_text.lines_metrics line_metrics --- @usage --- • color: Change text color --- --- Foobar --- Foobar --- Foobar --- Foobar --- --- • shadow: Change text shadow --- --- Foobar --- Foobar --- Foobar --- Foobar --- --- • outline: Change text shadow --- --- Foobar --- Foobar --- Foobar --- Foobar --- --- • font: Change font --- --- Foobar --- --- • size: Change text size, relative to default size --- --- Twice as large --- --- • br: Insert a line break --- ---
--- --- • nobr: Prevent the text from breaking --- --- Words inside tag won't break --- --- • img: Display image --- --- --- --- -function RichText.set_text(self, text) +---Set text for Rich Text +--- -- Color +--- rich_text:set_text("<color=red>Foobar</color>") +--- rich_text:set_text("<color=1.0,0,0,1.0>Foobar</color>") +--- rich_text:set_text("<color=#ff0000>Foobar</color>") +--- rich_text:set_text("<color=#ff0000ff>Foobar</color>") +--- -- Shadow +--- rich_text:set_text("<shadow=red>Foobar</shadow>") +--- rich_text:set_text("<shadow=1.0,0,0,1.0>Foobar</shadow>") +--- rich_text:set_text("<shadow=#ff0000>Foobar</shadow>") +--- rich_text:set_text("<shadow=#ff0000ff>Foobar</shadow>") +--- -- Outline +--- rich_text:set_text("<outline=red>Foobar</outline>") +--- rich_text:set_text("<outline=1.0,0,0,1.0>Foobar</outline>") +--- rich_text:set_text("<outline=#ff0000>Foobar</outline>") +--- rich_text:set_text("<outline=#ff0000ff>Foobar</outline>") +--- -- Font +--- rich_text:set_text("<font=MyCoolFont>Foobar</font>") +--- -- Size +--- rich_text:set_text("<size=2>Twice as large</size>") +--- -- Line break +--- rich_text:set_text("<br/>Insert a line break") +--- -- No break +--- rich_text:set_text("<nobr>Prevent the text from breaking") +--- -- Image +--- rich_text:set_text("<img=texture:image>Display image") +--- rich_text:set_text("<img=texture:image,size>Display image with size") +--- rich_text:set_text("<img=texture:image,width,height>Display image with width and height") +---@param text string|nil The text to set +---@return druid.rich_text.word[] words +---@return druid.rich_text.lines_metrics line_metrics +function M:set_text(text) text = text or "" self:clear() self._last_value = text @@ -183,23 +157,23 @@ function RichText.set_text(self, text) end ---- Get current text --- @tparam RichText self @{RichText} --- @treturn string text -function RichText.get_text(self) +---Get the current text of the rich text +---@return string text The current text of the rich text +function M:get_text() return self._last_value end -function RichText:on_remove() +---@private +function M:on_remove() gui.set_scale(self.root, self._default_scale) gui.set_size(self.root, self._default_size) self:clear() end ---- Clear all created words. -function RichText:clear() +---Clear all created words. +function M:clear() if self._words then rich_text.remove(self._words) self._words = nil @@ -208,43 +182,35 @@ function RichText:clear() end ---- Get all words, which has a passed tag. --- @tparam RichText self @{RichText} --- @tparam string tag --- @treturn druid.rich_text.word[] words -function RichText.tagged(self, tag) +---Get all words, which has a passed tag. +---@param tag string The tag to get the words for +---@return druid.rich_text.word[] words The words with the passed tag +function M:tagged(tag) if not self._words then - return + return {} end return rich_text.tagged(self._words, tag) end ----Split a word into it's characters --- @tparam RichText self @{RichText} --- @tparam druid.rich_text.word word --- @treturn druid.rich_text.word[] characters -function RichText.characters(self, word) - return rich_text.characters(word) -end - - ---- Get all current words. --- @treturn table druid.rich_text.word[] -function RichText:get_words() +---Get all current created words, each word is a table that contains the information about the word +---@return druid.rich_text.word[] +function M:get_words() return self._words end ---- Get current line metrics ---- @treturn druid.rich_text.lines_metrics -function RichText:get_line_metric() +---Get the current line metrics +---@return druid.rich_text.lines_metrics lines_metrics The line metrics of the rich text +function M:get_line_metric() return self._line_metrics end -function RichText:_create_settings() +---@private +---@return table settings The settings of the rich text, they are created based on the root node on the GUI scene +function M:_create_settings() local root_size = gui.get_size(self.root) local scale = gui.get_scale(self.root) @@ -280,4 +246,4 @@ function RichText:_create_settings() end -return RichText +return M diff --git a/druid/custom/tiling_node/gui_tiling_node.fp b/druid/custom/tiling_node/gui_tiling_node.fp new file mode 100644 index 0000000..b18e002 --- /dev/null +++ b/druid/custom/tiling_node/gui_tiling_node.fp @@ -0,0 +1,83 @@ +#version 140 + +uniform sampler2D texture_sampler; + +in vec2 var_texcoord0; +in vec4 var_color; +in vec4 var_uv; +in vec4 var_repeat; // [repeat_x, repeat_y, anchor_x, anchor_y] +in vec4 var_params; // [margin_x, margin_y, offset_x, offset_y] +in vec4 var_uv_rotated; + +out vec4 color_out; + +void main() { + vec2 pivot = var_repeat.zw; + // Margin is a value between 0 and 1 that means offset/padding from the one image to another + vec2 margin = var_params.xy; + vec2 offset = var_params.zw; + vec2 repeat = var_repeat.xy; + + // Atlas UV to local UV [0, 1] + float u = (var_texcoord0.x - var_uv.x) / (var_uv.z - var_uv.x); + float v = (var_texcoord0.y - var_uv.y) / (var_uv.w - var_uv.y); + + // Adjust local UV by the pivot point. So 0:0 will be at the pivot point of node + u = u - (0.5 + pivot.x); + v = v - (0.5 - pivot.y); + + // If rotated, swap UV + if (var_uv_rotated.y < 0.5) { + float temp = u; + u = v; + v = temp; + } + + // Adjust repeat by the margin + repeat.x = repeat.x / (1.0 + margin.x); + repeat.y = repeat.y / (1.0 + margin.y); + + // Repeat is a value between 0 and 1 that represents the number of times the texture is repeated in the atlas. + float tile_u = fract(u * repeat.x); + float tile_v = fract(v * repeat.y); + + float tile_width = 1.0 / repeat.x; + float tile_height = 1.0 / repeat.y; + + // Adjust tile UV by the pivot point. + // Not center is left top corner, need to adjust it to pivot point + tile_u = fract(tile_u + pivot.x + 0.5); + tile_v = fract(tile_v - pivot.y + 0.5); + + // Apply offset + tile_u = fract(tile_u + offset.x); + tile_v = fract(tile_v + offset.y); + + // Extend margins + margin = margin * 0.5; + tile_u = mix(0.0 - margin.x, 1.0 + margin.x, tile_u); + tile_v = mix(0.0 - margin.y, 1.0 + margin.y, tile_v); + float alpha = 0.0; + // If the tile is outside the margins, make it transparent, without IF + alpha = step(0.0, tile_u) * step(tile_u, 1.0) * step(0.0, tile_v) * step(tile_v, 1.0); + + tile_u = clamp(tile_u, 0.0, 1.0); // Keep borders in the range 0-1 + tile_v = clamp(tile_v, 0.0, 1.0); // Keep borders in the range 0-1 + + if (var_uv_rotated.y < 0.5) { + float temp = tile_u; + tile_u = tile_v; + tile_v = temp; + } + + // Remap local UV to the atlas UV + vec2 uv = vec2( + mix(var_uv.x, var_uv.z, tile_u), // Get texture coordinate from the atlas + mix(var_uv.y, var_uv.w, tile_v) // Get texture coordinate from the atlas + //mix(var_uv.x, var_uv.z, tile_u * var_uv_rotated.x + tile_v * var_uv_rotated.z), + //mix(var_uv.y, var_uv.w, 1.0 - (tile_u * var_uv_rotated.y + tile_v * var_uv_rotated.x)) + ); + + lowp vec4 tex = texture(texture_sampler, uv); + color_out = tex * var_color; +} diff --git a/druid/custom/tiling_node/gui_tiling_node.material b/druid/custom/tiling_node/gui_tiling_node.material new file mode 100644 index 0000000..4c0a29e --- /dev/null +++ b/druid/custom/tiling_node/gui_tiling_node.material @@ -0,0 +1,37 @@ +name: "repeat" +tags: "gui" +vertex_program: "/druid/custom/tiling_node/gui_tiling_node.vp" +fragment_program: "/druid/custom/tiling_node/gui_tiling_node.fp" +vertex_constants { + name: "view_proj" + type: CONSTANT_TYPE_VIEWPROJ +} +vertex_constants { + name: "uv_coord" + type: CONSTANT_TYPE_USER + value { + z: 1.0 + w: 1.0 + } +} +vertex_constants { + name: "uv_repeat" + type: CONSTANT_TYPE_USER + value { + x: 1.0 + y: 1.0 + } +} +vertex_constants { + name: "params" + type: CONSTANT_TYPE_USER + value { + } +} +vertex_constants { + name: "uv_rotated" + type: CONSTANT_TYPE_USER + value { + x: 1.0 + } +} diff --git a/druid/custom/tiling_node/gui_tiling_node.vp b/druid/custom/tiling_node/gui_tiling_node.vp new file mode 100644 index 0000000..93146f7 --- /dev/null +++ b/druid/custom/tiling_node/gui_tiling_node.vp @@ -0,0 +1,40 @@ +#version 140 + +in mediump vec3 position; +in mediump vec2 texcoord0; +in lowp vec4 color; + +uniform vertex_inputs +{ + highp mat4 view_proj; + highp vec4 uv_coord; + highp vec4 uv_repeat; // [repeat_x, repeat_y, pivot_x, pivot_y] + vec4 uv_rotated; + vec4 params; // [margin_x, margin_y, offset_x, offset_y] +}; + +out mediump vec2 var_texcoord0; +out lowp vec4 var_color; +out highp vec4 var_uv; +out highp vec4 var_repeat; +out vec4 var_params; +out vec4 var_uv_rotated; + +void main() +{ + var_texcoord0 = texcoord0; + var_color = vec4(color.rgb * color.a, color.a); + var_uv = uv_coord; + var_repeat = uv_repeat; + var_params = params; + var_uv_rotated = uv_rotated; + + mat4 transform = mat4( + 1.0, 0, 0, 0.0, + 0, 1.0, 0, 0.0, + 0, 0, 1, 0, + 0.0, position.z, 0, 1.0 + ); + + gl_Position = view_proj * vec4(position.xyz, 1.0) * transform; +} diff --git a/druid/custom/tiling_node/tiling_node.lua b/druid/custom/tiling_node/tiling_node.lua new file mode 100644 index 0000000..2fef09b --- /dev/null +++ b/druid/custom/tiling_node/tiling_node.lua @@ -0,0 +1,184 @@ +local component = require("druid.component") +local helper = require("druid.helper") +local defer = require("event.defer") + +---@class druid.tiling_node: druid.component +---@field animation table +---@field node node +---@field params vector4 +---@field time number +local M = component.create("tiling_node") + +M.PROP_SIZE_X = hash("size.x") +M.PROP_SIZE_Y = hash("size.y") +M.PROP_SCALE_X = hash("scale.x") +M.PROP_SCALE_Y = hash("scale.y") + + +---@param node node|string +function M:init(node) + self.node = self:get_node(node) + self.animation = nil + self.time = 0 + self.margin = 0 + + self.params = gui.get(self.node, "params") --[[@as vector4]] + + self.timer_no_init = timer.delay(0.1, false, function() + print("The druid.script is not found, please add it nearby to the GUI collection", msg.url()) + end) + + defer.push("druid.get_atlas_path", { + texture_name = gui.get_texture(self.node), + sender = msg.url(), + }, self.on_get_atlas_path, self) +end + + +---@param atlas_path string +function M:on_get_atlas_path(atlas_path) + timer.cancel(self.timer_no_init) + self.is_inited = self:init_tiling_animation(atlas_path) + local repeat_x, repeat_y = self:get_repeat_count_from_node() + self:start_animation(repeat_x, repeat_y) +end + + +---@param node node +---@param property string +function M:on_node_property_changed(node, property) + if not self.is_inited or node ~= self.node then + return + end + + if property == "size" or property == "scale" then + local repeat_x, repeat_y = self:get_repeat_count_from_node() + self:set_repeat(repeat_x, repeat_y) + end +end + + +function M:get_repeat_count_from_node() + if not self.is_inited then + return 1, 1 + end + local size_x = gui.get(self.node, M.PROP_SIZE_X) + local size_y = gui.get(self.node, M.PROP_SIZE_Y) + local scale_x = gui.get(self.node, M.PROP_SCALE_X) + local scale_y = gui.get(self.node, M.PROP_SCALE_Y) + + local repeat_x = (size_x / self.animation.width) / scale_x + local repeat_y = (size_y / self.animation.height) / scale_y + + return repeat_x, repeat_y +end + + +---@param atlas_path string +---@return boolean +function M:init_tiling_animation(atlas_path) + if not atlas_path then + print("No atlas path found for node", gui.get_id(self.node), gui.get_texture(self.node)) + print("Probably you should add druid.script at window collection to access resources") + return false + end + + self.animation = helper.get_animation_data_from_node(self.node, atlas_path) + return true +end + + +-- Start our repeat shader work +---@param repeat_x number X factor +---@param repeat_y number Y factor +function M:start_animation(repeat_x, repeat_y) + if not self.is_inited then + return + end + + self:set_repeat(repeat_x, repeat_y) + + local node = self.node + local animation = self.animation + local frame = animation.frames[1] + gui.set(node, "uv_coord", frame.uv_coord) + + if #animation.frames > 1 and animation.fps > 0 then + animation.handle = + timer.delay(1/animation.fps, true, function(_, handle, time_elapsed) + local next_rame = animation.frames[animation.current_frame] + gui.set(node, "uv_coord", next_rame.uv_coord) + + animation.current_frame = animation.current_frame + 1 + if animation.current_frame > #animation.frames then + animation.current_frame = 1 + end + end) + end +end + + +function M:final() + local animation = self.animation + if animation.handle then + timer.cancel(animation.handle) + animation.handle = nil + end +end + + +---Update repeat factor values +---@param repeat_x number? X factor +---@param repeat_y number? Y factor +function M:set_repeat(repeat_x, repeat_y) + local animation = self.animation + animation.v.x = repeat_x or animation.v.x + animation.v.y = repeat_y or animation.v.y + + local anchor = helper.get_pivot_offset(gui.get_pivot(self.node)) + animation.v.z = anchor.x + animation.v.w = anchor.y + + gui.set(self.node, "uv_repeat", animation.v) +end + + +---@param offset_perc_x number? X offset +---@param offset_perc_y number? Y offset +function M:set_offset(offset_perc_x, offset_perc_y) + self.params.z = offset_perc_x or self.params.z + self.params.w = offset_perc_y or self.params.w + gui.set(self.node, "params", self.params) + return self +end + + +---@param margin_x number? X margin +---@param margin_y number? Y margin +function M:set_margin(margin_x, margin_y) + self.params.x = margin_x or self.params.x + self.params.y = margin_y or self.params.y + gui.set(self.node, "params", self.params) + return self +end + + +---@param scale number +function M:set_scale(scale) + local current_scale_x = gui.get(self.node, M.PROP_SCALE_X) + local current_scale_y = gui.get(self.node, M.PROP_SCALE_Y) + local current_size_x = gui.get(self.node, M.PROP_SIZE_X) + local current_size_y = gui.get(self.node, M.PROP_SIZE_Y) + + local delta_scale_x = scale / current_scale_x + local delta_scale_y = scale / current_scale_y + gui.set(self.node, M.PROP_SCALE_X, scale) + gui.set(self.node, M.PROP_SCALE_Y, scale) + gui.set(self.node, M.PROP_SIZE_X, current_size_x / delta_scale_x) + gui.set(self.node, M.PROP_SIZE_Y, current_size_y / delta_scale_y) + + return self +end + + +return M diff --git a/druid/druid.atlas b/druid/druid.atlas index ce36b4e..10868c4 100644 --- a/druid/druid.atlas +++ b/druid/druid.atlas @@ -19,4 +19,13 @@ images { images { image: "/druid/images/pixel.png" } +images { + image: "/druid/images/panels/rect_round2_width2.png" +} +images { + image: "/druid/images/icons/icon_drag.png" +} +images { + image: "/druid/images/icons/icon_arrow.png" +} extrude_borders: 2 diff --git a/druid/druid.lua b/druid/druid.lua index 37997d4..e9b161a 100644 --- a/druid/druid.lua +++ b/druid/druid.lua @@ -1,211 +1,185 @@ --- Copyright (c) 2021 Maksim Tuprikov . This code is licensed under MIT license - ---- Druid UI Component Framework. --- # Overview # --- --- Druid - powerful Defold component UI library. Use basic and extended --- Druid components or make your own game-specific components to make --- amazing GUI in your games. --- --- To start using Druid, please refer to the Usage section below. --- --- # Notes # --- --- • Each Druid instance maintains the self context from the constructor and passes it to each Druid callback. --- --- See next: @{DruidInstance} --- --- @usage --- local druid = require("druid.druid") --- --- local function on_play(self) --- print("Gonna play!") --- end --- --- function init(self) --- self.druid = druid.new(self) --- self.druid:new_button("button_play", on_play) --- end --- --- function final(self) --- self.druid:final() --- end --- --- function update(self, dt) --- self.druid:update(dt) --- end --- --- function on_message(self, message_id, message, sender) --- self.druid:on_message(message_id, message, sender) --- end --- --- function on_input(self, action_id, action) --- return self.druid:on_input(action_id, action) --- end --- --- @module Druid - -local const = require("druid.const") -local base_component = require("druid.component") +local event = require("event.event") +local events = require("event.events") local settings = require("druid.system.settings") local druid_instance = require("druid.system.druid_instance") local default_style = require("druid.styles.default.style") + +---Entry point for Druid UI Framework. +---Create a new Druid instance and adjust the Druid settings here. +---@class druid local M = {} -local _instances = {} + +---Create a new Druid instance for creating GUI components. +---@param context table The Druid context. Usually, this is the self of the gui_script. It is passed into all Druid callbacks. +---@param style table|nil The Druid style table to override style parameters for this Druid instance. +---@return druid.instance druid_instance The new Druid instance +function M.new(context, style) + if settings.default_style == nil then + M.set_default_style(default_style) + end + + return druid_instance.create_druid_instance(context, style) +end -local function clean_deleted_druid_instances() - for i = #_instances, 1, -1 do - if _instances[i]._deleted then - table.remove(_instances, i) +---Register a new external Druid component. +---Register component just makes the druid:new_{name} function. +---For example, if you register a component called "my_component", you can create it using druid:new_my_component(...). +---This can be useful if you have your own "basic" components that you don't want to require in every file. +---The default way to create component is `druid_instance:new(component_class, ...)`. +---@param name string Module name +---@param module table Lua table with component +function M.register(name, module) + local is_custom_component = getmetatable(module) ~= nil + if is_custom_component then + druid_instance["new_" .. name] = function(self, ...) + return druid_instance.new(self, module, ...) + end + else + -- Just for some compatability. But better to use direct druid_instance:new_widget(module, ...) function + druid_instance["new_" .. name] = function(self, template, nodes, ...) + return druid_instance.new_widget(self, module, template, nodes, ...) end end end -local function get_druid_instances() - clean_deleted_druid_instances() - return _instances -end - - ---- Register a new external Druid component. --- --- You can register your own components to make new alias: the druid:new_{name} function. --- For example, if you want to register a component called "my_component", you can create it using druid:new_my_component(...). --- This can be useful if you have your own "basic" components that you don't want to re-create each time. --- @function druid.register --- @tparam string name module name --- @tparam table module lua table with component --- @usage --- local my_component = require("path.to.my.component") --- druid.register("my_component", my_component) --- ... --- local druid = druid.new(self) --- local component_instance = self.druid:new_my_component(...) -function M.register(name, module) - druid_instance["new_" .. name] = function(self, ...) - return druid_instance.new(self, module, ...) - end - - return druid_instance["new_" .. name] -end - - ---- Create a new Druid instance for creating GUI components. --- --- @function druid.new --- @tparam table context The Druid context. Usually, this is the self of the gui_script. It is passed into all Druid callbacks. --- @tparam table|nil style The Druid style table to override style parameters for this Druid instance. --- @treturn druid_instance The Druid instance @{DruidInstance}. --- @usage --- local druid = require("druid.druid") --- --- function init(self) --- self.druid = druid.new(self) --- end -function M.new(context, style) - clean_deleted_druid_instances() - - if settings.default_style == nil then - M.set_default_style(default_style) - end - - local new_instance = setmetatable({}, { __index = druid_instance }) - new_instance:initialize(context, style) - - table.insert(_instances, new_instance) - return new_instance -end - - ---- Set your own default style for all Druid instances. --- --- To create your own style file, copy the default style file and make changes to it. --- Register the new style before creating your Druid instances. --- @function druid.set_default_style --- @tparam table style Druid style module --- @usage --- local my_style = require("path.to.my.style") --- druid.set_default_style(my_style) +---Set the default style for all Druid instances. +---@param style table Default style function M.set_default_style(style) settings.default_style = style or {} end ---- Set the text function for the LangText component. --- --- The Druid locale component will call this function to get translated text. --- After setting the text function, all existing locale components will be updated. --- @function druid.set_text_function --- @tparam function callback Get localized text function --- @usage --- druid.set_text_function(function(text_id) --- return lang_data[text_id] -- Replace with your real function --- end) +---Set the text function for the LangText component. +---@param callback fun(text_id: string): string Get localized text function function M.set_text_function(callback) - settings.get_text = callback or const.EMPTY_FUNCTION + settings.get_text = callback or function() end M.on_language_change() end ---- Set the Druid sound function to play UI sounds if used. --- --- Set a function to play a sound given a sound_id. This function is used for button clicks to play the "click" sound. --- It can also be used to play sounds in your custom components (see the default Druid style file for an example). --- @function druid.set_sound_function --- @tparam function callback Sound play callback --- @usage --- druid.set_sound_function(function(sound_id) --- sound.play(sound_id) -- Replace with your real function --- end) +---Set the sound function to able components to play sounds. +---@param callback fun(sound_id: string) Sound play callback function M.set_sound_function(callback) - settings.play_sound = callback or const.EMPTY_FUNCTION + settings.play_sound = callback or function() end end ---- Set the window callback to enable on_focus_gain and on_focus_lost functions. --- --- This is used to trigger the on_focus_lost and on_focus_gain functions in Druid components. --- @function druid.on_window_callback --- @tparam string event Event param from window listener --- @usage --- window.set_listener(function(_, event) --- druid.on_window_callback(event) --- end) -function M.on_window_callback(event) - local instances = get_druid_instances() +---Subscribe Druid to the window listener. It will override your previous +---window listener, so if you have one, you should call M.on_window_callback manually. +function M.init_window_listener() + window.set_listener(function(_, window_event) + events.trigger("druid.window_event", window_event) + end) +end - if event == window.WINDOW_EVENT_FOCUS_LOST then - for i = 1, #instances do - msg.post(instances[i].url, base_component.ON_FOCUS_LOST) - end - elseif event == window.WINDOW_EVENT_FOCUS_GAINED then - for i = 1, #instances do - msg.post(instances[i].url, base_component.ON_FOCUS_GAINED) - end - elseif event == window.WINDOW_EVENT_RESIZED then - for i = 1, #instances do - msg.post(instances[i].url, base_component.ON_WINDOW_RESIZED) + +---Set the window callback to enable Druid window events. +---@param window_event constant Event param from window listener +function M.on_window_callback(window_event) + events.trigger("druid.window_event", window_event) +end + + +---Call this function when the game language changes. +---It will notify all Druid instances to update the lang text components. +function M.on_language_change() + events.trigger("druid.language_change") +end + + +---@type table +local REGISTERED_GUI_WIDGETS = {} + +---Set a widget to the current game object. The game object can acquire the widget by calling `bindings.get_widget` +---It wraps with events only top level functions cross-context, so you will have no access to nested widgets functions +---@param widget druid.widget +---@return druid.widget +local function wrap_widget(widget) + -- Make a copy of the widget with all functions wrapped in events + -- It makes available to call gui functions from game objects + local wrapped_widget = setmetatable({}, { __index = widget }) + local parent_table = getmetatable(widget).__index + + -- Go through all functions and wrap them in events + for key, value in pairs(parent_table) do + if type(value) == "function" then + wrapped_widget[key] = event.create(function(_, ...) + return value(widget, ...) + end) end end + + return wrapped_widget end ---- Call this function when the game language changes. --- --- This function will translate all current LangText components. --- @function druid.on_language_change --- @usage --- druid.on_language_change() -function M.on_language_change() - local instances = get_druid_instances() +---Create a widget from the bound Druid GUI instance. +---The widget will be created and all widget functions can be called from Game Object contexts. +---This allows using only `druid_widget.gui_script` for GUI files and call this widget functions from Game Object script file. +---Widget class here is your lua file for the GUI scene (widgets in Druid) +--- msg.url(nil, nil, "gui_widget") -- current game object +--- msg.url(nil, object_url, "gui_widget") -- other game object +---@generic T: druid.widget +---@param widget_class T The class of the widget to return +---@param gui_url url GUI url +---@return T? widget The new created widget, +function M.get_widget(widget_class, gui_url) + gui_url = gui_url or msg.url() + local registered_druids = REGISTERED_GUI_WIDGETS[gui_url.socket] + if not registered_druids then + return nil + end - for i = 1, #instances do - msg.post(instances[i].url, base_component.ON_LANGUAGE_CHANGE) + for index = 1, #registered_druids do + local druid = registered_druids[index] + if druid.fragment == gui_url.fragment and druid.path == gui_url.path then + return druid.new_widget:trigger(widget_class) + end + end + + return nil +end + + +---Bind a Druid GUI instance to the current game object. +---This instance now can produce widgets from `druid.get_widget()` function. +---Only one widget can be set per game object. +---@param druid druid.instance The druid instance to register +function M.register_druid_as_widget(druid) + local gui_url = msg.url() + REGISTERED_GUI_WIDGETS[gui_url.socket] = REGISTERED_GUI_WIDGETS[gui_url.socket] or {} + table.insert(REGISTERED_GUI_WIDGETS[gui_url.socket], { + path = gui_url.path, + fragment = gui_url.fragment, + new_widget = event.create(function(widget_class) + return wrap_widget(druid:new_widget(widget_class)) + end), + }) +end + + +---Should be called on final, where druid instance is destroyed. +function M.unregister_druid_as_widget() + local gui_url = msg.url() + local socket = gui_url.socket + local path = gui_url.path + local fragment = gui_url.fragment + + for index = 1, #REGISTERED_GUI_WIDGETS[socket] do + local gui = REGISTERED_GUI_WIDGETS[socket][index] + if gui.path == path and gui.fragment == fragment then + table.remove(REGISTERED_GUI_WIDGETS[socket], index) + break + end + end + + if #REGISTERED_GUI_WIDGETS[socket] == 0 then + REGISTERED_GUI_WIDGETS[socket] = nil end end diff --git a/druid/druid.script b/druid/druid.script new file mode 100644 index 0000000..61738f7 --- /dev/null +++ b/druid/druid.script @@ -0,0 +1,44 @@ +-- Place this script nearby with the gui component to able make requests +-- To the go namespace from GUI with events systems (cross context) +-- This one is a required to make a unified "Shaders" pipeline in the GUI scripts +-- This required to grab a texture data with `go.get` function + +local defer = require("event.defer") + +---Usage: defer.push("druid.get_atlas_path", { +--- texture_name = gui.get_texture(self.node), +--- sender = msg.url(), +---}, callback, [context]) +---Pass texture name to get atlas info and sender url to check if the request is valid +local MESSAGE_GET_ATLAS_PATH = "druid.get_atlas_path" + +---@class druid.get_atlas_path_request +---@field texture_name hash +---@field sender hash + +---@param request druid.get_atlas_path_request +---@return string? +local function get_atlas_path(self, request) + local my_url = msg.url() + my_url.fragment = nil + + local copy_url = msg.url(request.sender) + copy_url.fragment = nil + + -- This check should works well + if my_url ~= copy_url then + return nil + end + + return go.get(request.sender, "textures", { key = request.texture_name }) +end + + +function init(self) + defer.subscribe(MESSAGE_GET_ATLAS_PATH, get_atlas_path, self) +end + + +function final(self) + defer.unsubscribe(MESSAGE_GET_ATLAS_PATH, get_atlas_path, self) +end diff --git a/druid/druid_widget.gui_script b/druid/druid_widget.gui_script new file mode 100644 index 0000000..6d1b1d1 --- /dev/null +++ b/druid/druid_widget.gui_script @@ -0,0 +1,30 @@ +--- Attach this script to your GUI file instead custom *.gui_script file +--- This allows to grab a widget from the GO scripts by gui_url +--- To do this you need to call `druid.get_widget` in the GO script +--- The new widget will be created and returned to GO script +--- And now all top level functions from the widget will be available in the GO script +--- Use with caution, this is a new feature, but allow utilize flexability of `event` module + +local druid = require("druid.druid") + +function init(self) + self.druid = druid.new(self) + druid.register_druid_as_widget(self.druid) +end + +function final(self) + druid.unregister_druid_as_widget() + self.druid:final() +end + +function update(self, dt) + self.druid:update(dt) +end + +function on_message(self, message_id, message, sender) + self.druid:on_message(message_id, message, sender) +end + +function on_input(self, action_id, action) + return self.druid:on_input(action_id, action) +end diff --git a/druid/editor_scripts/assign_layers.lua b/druid/editor_scripts/assign_layers.lua new file mode 100644 index 0000000..8fe59d9 --- /dev/null +++ b/druid/editor_scripts/assign_layers.lua @@ -0,0 +1,241 @@ +--- Module for assigning layers to GUI nodes based on textures and fonts + +local defold_parser = require("druid.editor_scripts.defold_parser.defold_parser") +local system = require("druid.editor_scripts.defold_parser.system.system") + +local M = {} + + +---Create a backup of a file +---@param file_path string - The path of the file to backup +---@return string|nil - The backup file path, or nil if backup failed +local function create_backup(file_path) + local backup_path = file_path .. ".backup" + print("Creating backup at:", backup_path) + + -- Read and write using system module + local content, err_read = system.read_file(file_path) + if not content then + print("Error reading original file for backup:", err_read) + return nil + end + + local success, err_write = system.write_file(backup_path, content) + if not success then + print("Error creating backup file:", err_write) + return nil + end + + print("Backup created successfully") + return backup_path +end + + +---Restore from a backup file +---@param backup_path string - The path of the backup file +---@param original_path string - The path to restore to +---@return boolean - True if restore was successful +local function restore_from_backup(backup_path, original_path) + print("Restoring from backup:", backup_path) + + -- Read backup file + local content, err = system.read_file(backup_path) + if not content then + print("Error reading backup file:", err) + return false + end + + -- Write to original file + local success, err = system.write_file(original_path, content) + if not success then + print("Error restoring from backup:", err) + return false + end + + print("Restored successfully from backup") + return true +end + + +---Remove a backup file +---@param backup_path string - The path of the backup file to remove +local function remove_backup(backup_path) + -- Check file exists and remove it + local file = io.open(backup_path, "r") + if file then + file:close() + os.remove(backup_path) + print("Backup file removed successfully") + end +end + +---Assign layers to GUI nodes based on textures and fonts +---@param gui_resource string - The GUI resource to process +---@return table - Editor command to reload the resource +function M.assign_layers(gui_resource) + local gui_path = editor.get(gui_resource, "path") + print("Setting up layers for", gui_path) + + -- Get the absolute path to the file + local absolute_project_path = editor.external_file_attributes(".").path + if not absolute_project_path:match("[\\/]$") then + absolute_project_path = absolute_project_path .. "/" + end + local clean_gui_path = gui_path + if clean_gui_path:sub(1, 1) == "/" then + clean_gui_path = clean_gui_path:sub(2) + end + local gui_absolute_path = absolute_project_path .. clean_gui_path + + -- Create a backup before modifying the file + local backup_path = create_backup(gui_absolute_path) + if not backup_path then + print("Failed to create backup, aborting...") + return {} + end + + -- Parse the GUI file using defold_parser + print("Parsing GUI file...") + local gui_data = defold_parser.load_from_file(gui_absolute_path) + if not gui_data then + print("Error: Failed to parse GUI file") + return {} + end + + -- Collect all textures and fonts + print("Collecting all available textures and fonts...") + local all_textures = {} + local all_fonts = {} + + -- Get textures + if gui_data.textures then + for _, texture in ipairs(gui_data.textures) do + print("Found texture:", texture.name) + all_textures[texture.name] = true + end + end + + -- Get fonts + if gui_data.fonts then + for _, font in ipairs(gui_data.fonts) do + print("Found font:", font.name) + all_fonts[font.name] = true + end + end + + -- Track which textures and fonts are actually used by nodes + print("Finding used textures and fonts...") + local used_layers = {} + + -- First pass: find all used textures and fonts + if gui_data.nodes then + for _, node in ipairs(gui_data.nodes) do + if node.texture then + local layer_name = node.texture:match("([^/]+)") + if layer_name and all_textures[layer_name] then + used_layers[layer_name] = true + print("Node", node.id, "uses texture:", layer_name) + end + elseif node.font then + local layer_name = node.font + if all_fonts[layer_name] then + used_layers[layer_name] = true + print("Node", node.id, "uses font:", layer_name) + end + end + end + end + + -- Create a set of existing layer names for faster lookup + print("Checking existing layers...") + local existing_layers = {} + if gui_data.layers then + for _, layer in ipairs(gui_data.layers) do + if layer.name then + existing_layers[layer.name] = true + print("Found existing layer:", layer.name) + end + end + end + + -- Convert set to array of used layers + local layers = {} + for layer_name in pairs(used_layers) do + if not existing_layers[layer_name] then + table.insert(layers, layer_name) + print("Adding new layer:", layer_name) + else + print("Layer already exists:", layer_name) + end + end + + -- Sort new layers for consistent output + table.sort(layers) + + print("Found", #layers, "new layers to add") + + -- Add new layers (preserving existing ones) + print("Adding new layers...") + gui_data.layers = gui_data.layers or {} + for _, layer_name in ipairs(layers) do + table.insert(gui_data.layers, { + name = layer_name, + }) + end + if #gui_data.layers == 0 then + gui_data.layers = nil + end + + -- Create a lookup table for faster matching - include both existing and new layers + local layer_lookup = {} + for layer_name in pairs(existing_layers) do + layer_lookup[layer_name] = true + end + for _, layer_name in ipairs(layers) do + layer_lookup[layer_name] = true + end + + -- Update nodes to use the correct layer + print("Updating node layers...") + if gui_data.nodes then + for _, node in ipairs(gui_data.nodes) do + if node.texture then + local layer_name = node.texture:match("([^/]+)") + if layer_name and layer_lookup[layer_name] then + print("Assigning node", node.id, "to layer:", layer_name) + node.layer = layer_name + end + elseif node.font then + local layer_name = node.font + if layer_lookup[layer_name] then + print("Assigning node", node.id, "to layer:", layer_name) + node.layer = layer_name + end + end + end + end + + -- Write the updated GUI file + print("Writing updated GUI file...") + local success = defold_parser.save_to_file(gui_absolute_path, gui_data) + + if not success then + print("Error: Failed to save GUI file") + print("Attempting to restore from backup...") + local restored = restore_from_backup(backup_path, gui_absolute_path) + if not restored then + print("Critical: Failed to restore from backup. Manual intervention may be required.") + end + return {} + end + + -- Everything worked, remove the backup + remove_backup(backup_path) + + print("Successfully assigned layers for GUI:", gui_path) + + return {} +end + + +return M diff --git a/druid/editor_scripts/component.lua_template b/druid/editor_scripts/component.lua_template deleted file mode 100644 index f33bae3..0000000 --- a/druid/editor_scripts/component.lua_template +++ /dev/null @@ -1,22 +0,0 @@ ---- For component interest functions ---- see https://github.com/Insality/druid/blob/master/docs_md/02-creating_custom_components.md ---- Require this component in you gui file: ---- $ local {COMPONENT_NAME} = require("{COMPONENT_PATH}") ---- And create this component via: ---- $ self.{COMPONENT_TYPE} = self.druid:new({COMPONENT_NAME}, template, nodes) - -local component = require("druid.component") - ----@class {COMPONENT_TYPE}: druid.component ----@field druid druid_instance{COMPONENT_ANNOTATIONS} -local M = component.create("{COMPONENT_TYPE}") - - ----@param template string ----@param nodes table -function M:init(template, nodes) - self.druid = self:get_druid(template, nodes){COMPONENT_DEFINE} -end - -{COMPONENT_FUNCTIONS} -return M diff --git a/druid/editor_scripts/create_druid_component.py b/druid/editor_scripts/create_druid_component.py deleted file mode 100644 index 24d1203..0000000 --- a/druid/editor_scripts/create_druid_component.py +++ /dev/null @@ -1,139 +0,0 @@ -# @license MIT, Insality 2021 -# @source https://github.com/Insality/druid - -import os -import sys -import deftree - -current_filepath = os.path.abspath(os.path.dirname(__file__)) -TEMPLATE_PATH = current_filepath + "/component.lua_template" - -component_annotations = "" -component_functions = "" -component_define = "" - -def to_camel_case(snake_str): - components = snake_str.split('_') - return ''.join(x.title() for x in components[0:]) - - -def get_id(node_name): - return node_name.upper().replace("/", "_") - - -def process_component(node_name, component_name): - global component_annotations - global component_functions - global component_define - - if node_name == "root": - component_annotations += "\n---@field root node" - component_define += "\n\tself.root = self:get_node(\"root\")" - - if node_name.startswith("button"): - component_annotations += "\n---@field {0} druid.button".format(node_name) - component_functions += "\nfunction M:_on_{0}()\n\tprint(\"Click on {0}\")\nend\n\n".format(node_name) - component_define += "\n\tself.{0} = self.druid:new_button(\"{1}\", self._on_{0})".format(node_name, node_name) - - if node_name.startswith("text"): - component_annotations += "\n---@field {0} druid.text".format(node_name) - component_define += "\n\tself.{0} = self.druid:new_text(\"{1}\")".format(node_name, node_name) - - if node_name.startswith("lang_text"): - component_annotations += "\n---@field {0} druid.text".format(node_name) - component_define += "\n\tself.{0} = self.druid:new_lang_text(\"{1}\", \"lang_id\")".format(node_name, node_name) - - if node_name.startswith("grid") or node_name.startswith("static_grid"): - component_annotations += "\n---@field {0} druid.static_grid".format(node_name) - component_define += "\n--TODO: Replace prefab_name with grid element prefab" - component_define += "\n\tself.{0} = self.druid:new_static_grid(\"{1}\", \"prefab_name\", 1)".format(node_name, node_name) - - if node_name.startswith("dynamic_grid"): - component_annotations += "\n---@field {0} druid.dynamic_grid".format(node_name) - component_define += "\n\tself.{0} = self.druid:new_dynamic_grid(\"{1}\")".format(node_name, node_name) - - if node_name.startswith("scroll_view"): - field_name = node_name.replace("_view", "") - content_name = node_name.replace("_view", "_content") - component_annotations += "\n---@field {0} druid.scroll".format(field_name) - component_define += "\n\tself.{0} = self.druid:new_scroll(\"{1}\", \"{2}\")".format(field_name, node_name, content_name) - - if node_name.startswith("blocker"): - component_annotations += "\n---@field {0} druid.blocker".format(node_name) - component_define += "\n\tself.{0} = self.druid:new_blocker(\"{1}\")".format(node_name, node_name) - - if node_name.startswith("slider"): - component_annotations += "\n---@field {0} druid.slider".format(node_name) - component_define += "\n--TODO: Replace slider end position. It should be only vertical or horizontal" - component_define += "\n\tself.{0} = self.druid:new_slider(\"{1}\", vmath.vector3(100, 0, 0), self._on_{0}_change)".format(node_name, node_name) - component_functions += "\nfunction M:_on_{0}_change(value)\n\tprint(\"Slider change:\", value)\nend\n\n".format(node_name) - - if node_name.startswith("progress"): - component_annotations += "\n---@field {0} druid.progress".format(node_name) - component_define += "\n\tself.{0} = self.druid:new_progress(\"{1}\", \"x\")".format(node_name, get_id(node_name)) - - if node_name.startswith("timer"): - component_annotations += "\n---@field {0} druid.timer".format(node_name) - component_define += "\n\tself.{0} = self.druid:new_timer(\"{1}\", 59, 0, self._on_{0}_end)".format(node_name, get_id(node_name)) - component_functions += "\nfunction M:_on_{0}_end()\n\tprint(\"Timer {0} trigger\")\nend\n\n".format(node_name) - - -def main(): - global component_annotations - global component_functions - global component_define - - filename = sys.argv[1] - print("Create Druid component from gui file", filename) - tree = deftree.parse(filename) - root = tree.get_root() - - output_directory = os.path.dirname(filename) - output_filename = os.path.splitext(os.path.basename(filename))[0] - - output_full_path = os.path.join(output_directory, output_filename + ".lua") - is_already_exists = os.path.exists(output_full_path) - if is_already_exists: - print("Error: The file is already exists") - print("File:", output_full_path) - return - - component_require_path = os.path.join(output_directory, output_filename).replace("/", ".").replace("..", "") - component_name = to_camel_case(output_filename) - component_type = output_filename - scheme_list = [] - - # Gather nodes from GUI scene - for node in root.iter_elements("nodes"): - node_name = node.get_attribute("id").value - scheme_list.append("\t" + get_id(node_name) + " = \"" + node_name + "\"") - - is_template = node.get_attribute("template") - is_in_template = "/" in node_name - if not is_template and not is_in_template: - process_component(node_name, component_name) - - if len(component_define) > 2: - component_define = "\n" + component_define - - template_file = open(TEMPLATE_PATH, "r") - filedata = template_file.read() - template_file.close() - - filedata = filedata.replace("{COMPONENT_NAME}", component_name) - filedata = filedata.replace("{COMPONENT_TYPE}", component_type) - filedata = filedata.replace("{COMPONENT_PATH}", component_require_path) - filedata = filedata.replace("{COMPONENT_DEFINE}", component_define) - filedata = filedata.replace("{COMPONENT_FUNCTIONS}", component_functions) - filedata = filedata.replace("{COMPONENT_ANNOTATIONS}", component_annotations) - #filedata = filedata.replace("{SCHEME_LIST}", ",\n".join(scheme_list)) - - output_file = open(output_full_path, "w") - output_file.write(filedata) - output_file.close() - - print("Success: The file is created") - print("File:", output_full_path) - - -main() diff --git a/druid/editor_scripts/create_druid_gui_script.lua b/druid/editor_scripts/create_druid_gui_script.lua new file mode 100644 index 0000000..1807bbb --- /dev/null +++ b/druid/editor_scripts/create_druid_gui_script.lua @@ -0,0 +1,144 @@ +local M = {} + +local function to_camel_case(snake_str) + local components = {} + for component in snake_str:gmatch("[^_]+") do + table.insert(components, component:sub(1, 1):upper() .. component:sub(2)) + end + return table.concat(components, "") +end + + +function M.create_druid_gui_script(selection) + local gui_filepath = editor.get(selection, "path") + local filename = gui_filepath:match("([^/]+)%.gui$") + print("Create Druid GUI Script for", gui_filepath) + + local absolute_project_path = editor.external_file_attributes(".").path + local widget_resource_path = gui_filepath:gsub("%.gui$", ".gui_script") + local new_widget_absolute_path = absolute_project_path .. widget_resource_path + + local widget_name = to_camel_case(filename) + local widget_type = filename + + -- Check if file already exists + local f = io.open(new_widget_absolute_path, "r") + if f then + f:close() + print("Widget file already exists at " .. new_widget_absolute_path) + print("Creation aborted to prevent overwriting") + return + end + + -- Get template path from preferences + local template_path = editor.prefs.get("druid.gui_script_template_path") + + -- Get template content using the path from preferences + local template_content = editor.get(template_path, "text") + if not template_content then + print("Error: Could not load template from", template_path) + print("Check the template path in [Druid] Settings") + return + end + + -- Replace template variables + template_content = template_content:gsub("{COMPONENT_NAME}", widget_name) + template_content = template_content:gsub("{COMPONENT_TYPE}", widget_type) + + -- Write file + local file, err = io.open(new_widget_absolute_path, "w") + if not file then + print("Error creating widget file:", err) + return + end + file:write(template_content) + file:close() + + print("Widget created at " .. widget_resource_path) + + M.link_gui_script(selection, widget_resource_path) +end + + +---Links a GUI script to a GUI file by updating the script property +---@param selection string The GUI resource to modify +---@param widget_resource_path string The path to the GUI script to link +function M.link_gui_script(selection, widget_resource_path) + local defold_parser = require("druid.editor_scripts.defold_parser.defold_parser") + local system = require("druid.editor_scripts.defold_parser.system.system") + + local gui_filepath = editor.get(selection, "path") + print("Linking GUI script to", gui_filepath) + + -- Get the absolute path to the file + local absolute_project_path = editor.external_file_attributes(".").path + if not absolute_project_path:match("[\\/]$") then + absolute_project_path = absolute_project_path .. "/" + end + local clean_gui_path = gui_filepath + if clean_gui_path:sub(1, 1) == "/" then + clean_gui_path = clean_gui_path:sub(2) + end + local gui_absolute_path = absolute_project_path .. clean_gui_path + + -- Create a backup + local backup_path = gui_absolute_path .. ".backup" + print("Creating backup at:", backup_path) + + -- Read and write backup + local content, err_read = system.read_file(gui_absolute_path) + if not content then + print("Error reading original file for backup:", err_read) + return + end + + local success, err_write = system.write_file(backup_path, content) + if not success then + print("Error creating backup file:", err_write) + return + end + + -- Parse the GUI file + print("Parsing GUI file...") + local gui_data = defold_parser.load_from_file(gui_absolute_path) + if not gui_data then + print("Error: Failed to parse GUI file") + return + end + + -- Update the script property + print("Setting script property to:", widget_resource_path) + gui_data.script = widget_resource_path + + -- Write the updated GUI file + print("Writing updated GUI file...") + local save_success = defold_parser.save_to_file(gui_absolute_path, gui_data) + + if not save_success then + print("Error: Failed to save GUI file") + print("Attempting to restore from backup...") + + -- Restore from backup on failure + local backup_content, backup_err_read = system.read_file(backup_path) + if not backup_content then + print("Error reading backup file:", backup_err_read) + return + end + + local restore_success, restore_err_write = system.write_file(gui_absolute_path, backup_content) + if not restore_success then + print("Critical: Failed to restore from backup:", restore_err_write) + return + end + + print("Restored successfully from backup") + return + end + + -- Remove backup on success + os.remove(backup_path) + print("Successfully linked GUI script to:", gui_filepath) +end + + +return M diff --git a/druid/editor_scripts/create_druid_widget.lua b/druid/editor_scripts/create_druid_widget.lua new file mode 100644 index 0000000..75b2116 --- /dev/null +++ b/druid/editor_scripts/create_druid_widget.lua @@ -0,0 +1,61 @@ +local M = {} + +local function to_camel_case(snake_str) + local components = {} + for component in snake_str:gmatch("[^_]+") do + table.insert(components, component:sub(1, 1):upper() .. component:sub(2)) + end + return table.concat(components, "") +end + + +function M.create_druid_widget(selection) + local gui_filepath = editor.get(selection, "path") + local filename = gui_filepath:match("([^/]+)%.gui$") + print("Create Druid widget for", gui_filepath) + + local absolute_project_path = editor.external_file_attributes(".").path + local widget_resource_path = gui_filepath:gsub("%.gui$", ".lua") + local new_widget_absolute_path = absolute_project_path .. widget_resource_path + + local widget_name = to_camel_case(filename) + local widget_type = filename + + -- Check if file already exists + local f = io.open(new_widget_absolute_path, "r") + if f then + f:close() + print("Widget file already exists at " .. new_widget_absolute_path) + print("Creation aborted to prevent overwriting") + return + end + + -- Get template path from preferences + local template_path = editor.prefs.get("druid.widget_template_path") + + -- Get template content using the path from preferences + local template_content = editor.get(template_path, "text") + if not template_content then + print("Error: Could not load template from", template_path) + print("Check the template path in [Druid] Settings") + return + end + + -- Replace template variables + template_content = template_content:gsub("{COMPONENT_NAME}", widget_name) + template_content = template_content:gsub("{COMPONENT_TYPE}", widget_type) + + -- Write file + local file, err = io.open(new_widget_absolute_path, "w") + if not file then + print("Error creating widget file:", err) + return + end + file:write(template_content) + file:close() + + print("Widget created at " .. widget_resource_path) +end + + +return M diff --git a/druid/editor_scripts/defold_parser/defold_parser.lua b/druid/editor_scripts/defold_parser/defold_parser.lua new file mode 100644 index 0000000..e0d257d --- /dev/null +++ b/druid/editor_scripts/defold_parser/defold_parser.lua @@ -0,0 +1,153 @@ +--- Defold Text Proto format encoder/decoder to lua table + +local config = require("druid.editor_scripts.defold_parser.system.config") +local system = require("druid.editor_scripts.defold_parser.system.system") + +local M = {} + + +--- Decode a Defold object from a string +---@param text string +---@return table +function M.decode_defold_object(text) + -- Create a root object, which will contain all the file data + local root = {} + -- Stack to keep track of nested objects. Always insert data to the last object in the stack + local stack = { root } + + -- For each line in the text, we go through the following steps: + for raw_line in text:gmatch("[^\r\n]+") do + system.parse_line(raw_line, stack) + end + + return root +end + + +-- Encoding Functions +function M.encode_defold_object(obj, spaces, data_level, extension) + spaces = spaces or 0 + data_level = data_level or 0 + local key_order = extension and config.KEY_ORDER[extension] or {} + + local result = '' + local tabString = string.rep(' ', spaces) + + local keys = {} + for key in pairs(obj) do + table.insert(keys, key) + end + + table.sort(keys, function(a, b) + local index_a = system.contains(key_order, a) or 0 + local index_b = system.contains(key_order, b) or 0 + return index_a < index_b + end) + + -- Iterate over the sorted keys + for _, key in ipairs(keys) do + local value = obj[key] + local value_type = type(value) + + -- Handle different types of values + if value_type == "table" then + -- Check if it's an array-like table + if #value > 0 then + -- It's an array-like table, process each element + for _, array_item in ipairs(value) do + local item_type = type(array_item) + + if key == "data" and item_type == "table" then + -- Handle nested data + local encodedChild = M.encode_defold_object(array_item, spaces + 2, data_level + 1, extension) + result = result .. tabString .. key .. ': "' .. encodedChild .. '"\n' + elseif item_type == "number" or item_type == "boolean" then + local is_contains_dot = string.find(key, "%.") + if item_type == "number" and (system.contains(config.with_dot_params, key) and not is_contains_dot) then + result = result .. tabString .. key .. ': ' .. string.format("%.1f", array_item) .. '\n' + else + result = result .. tabString .. key .. ': ' .. tostring(array_item) .. '\n' + end + elseif item_type == "string" then + -- Handle multiline text + if key == "text" then + result = result .. tabString .. key .. ': "' .. array_item:gsub("\n", '\\n"\n' .. tabString .. '"') .. '"\n' + else + -- Check if the key should not have quotes + local is_uppercase = (array_item == string.upper(array_item)) + local is_boolean = (array_item == "true" or array_item == "false") + if (is_uppercase and not config.string_keys[key]) or is_boolean then + result = result .. tabString .. key .. ': ' .. array_item .. '\n' + else + result = result .. tabString .. key .. ': "' .. array_item .. '"\n' + end + end + elseif item_type == "table" then + result = result .. tabString .. key .. ' {\n' .. M.encode_defold_object(array_item, spaces + 2, data_level, extension) .. tabString .. '}\n' + end + end + else + -- It's a dictionary-like table + result = result .. tabString .. key .. ' {\n' .. M.encode_defold_object(value, spaces + 2, data_level, extension) .. tabString .. '}\n' + end + else + -- Handle scalar values (string, number, boolean) + if value_type == "number" or value_type == "boolean" then + local is_contains_dot = string.find(key, "%.") + if value_type == "number" and (system.contains(config.with_dot_params, key) and not is_contains_dot) then + result = result .. tabString .. key .. ': ' .. string.format("%.1f", value) .. '\n' + else + result = result .. tabString .. key .. ': ' .. tostring(value) .. '\n' + end + elseif value_type == "string" then + -- Handle multiline text + if key == "text" then + result = result .. tabString .. key .. ': "' .. value:gsub("\n", '\\n"\n' .. tabString .. '"') .. '"\n' + else + -- Check if the key should not have quotes + local is_uppercase = (value == string.upper(value)) + local is_boolean = (value == "true" or value == "false") + if (is_uppercase and not config.string_keys[key]) or is_boolean then + result = result .. tabString .. key .. ': ' .. value .. '\n' + else + result = result .. tabString .. key .. ': "' .. value .. '"\n' + end + end + end + end + end + + return result +end + + +---Load lua table from file in Defold Text Proto format +---@param file_path string +---@return table|nil, string|nil +function M.load_from_file(file_path) + local content, reason = system.read_file(file_path) + if not content then + return nil, reason + end + + return M.decode_defold_object(content), nil +end + + +---Write lua table to file in Defold Text Proto format +---The path file extension will be used to determine the Defold format (*.atlas, *.gui, *.font, etc) +---@param file_path string +---@param lua_table table +---@return boolean, string|nil +function M.save_to_file(file_path, lua_table) + -- Get extension without the dot + local defold_format_name = file_path:match("^.+%.(.+)$") + print("File extension:", defold_format_name) + + local encoded_object = M.encode_defold_object(lua_table, nil, nil, defold_format_name) + + return system.write_file(file_path, encoded_object) +end + + +return M diff --git a/druid/editor_scripts/defold_parser/system/config.lua b/druid/editor_scripts/defold_parser/system/config.lua new file mode 100644 index 0000000..33a6494 --- /dev/null +++ b/druid/editor_scripts/defold_parser/system/config.lua @@ -0,0 +1,179 @@ +local M = {} + +-- Define a set of keys that should not have quotes +M.string_keys = { + text = true, + id = true, + value = true, + rename_patterns = true, +} + + +M.ALWAYS_LIST = { + attributes = true, + nodes = true, + images = true, + children = true, + fonts = true, + layers = true, + textures = true, + embedded_components = true, + embedded_instances = true, + collection_instances = true, + instances = true, +} + + +M.with_dot_params = { + "x", + "y", + "z", + "w", + "alpha", + "outline_alpha", + "shadow_alpha", + "text_leading", + "text_tracking", + "pieFillAngle", + "innerRadius", + "leading", + "tracking", + "data", + "t_x", + "t_y", + "spread", + "start_delay", + "inherit_velocity", + "start_delay_spread", + "duration_spread", + "start_offset", + "outline_width", + "shadow_x", + "shadow_y", + "aspect_ratio", + "far_z", + "mass", + "linear_damping", + "angular_damping", + "gain", + "pan", + "speed", + "duration" +} + +M.KEY_ORDER = { + ["font"] = { + "extrude_borders", + "images", + "inner_padding", + "margin", + "font", + "material", + "size", + "antialias", + "alpha", + "outline_alpha", + "outline_width", + "shadow_alpha", + "shadow_blur", + "shadow_x", + "shadow_y", + "extra_characters", + "output_format", + "all_chars", + "cache_width", + "cache_height", + "render_mode", + }, + ["atlas"] = { + "id", + "images", + "playback", + "fps", + "flip_horizontal", + "flip_vertical", + "image", + "sprite_trim_mode", + "images", + "animations", + "margin", + "extrude_borders", + "inner_padding", + "max_page_width", + "max_page_height", + "rename_patterns", + }, + ["gui"] = { + "position", + "rotation", + "scale", + "size", + "color", + "type", + "blend_mode", + "text", + "texture", + "font", + "id", + "xanchor", + "yanchor", + "pivot", + "outline", + "shadow", + "adjust_mode", + "line_break", + "parent", + "layer", + "inherit_alpha", + "slice9", + "outerBounds", + "innerRadius", + "perimeterVertices", + "pieFillAngle", + "clipping_mode", + "clipping_visible", + "clipping_inverted", + "alpha", + "outline_alpha", + "shadow_alpha", + "overridden_fields", + "template", + "template_node_child", + "text_leading", + "text_tracking", + "size_mode", + "spine_scene", + "spine_default_animation", + "spine_skin", + "spine_node_child", + "particlefx", + "custom_type", + "enabled", + "visible", + + -- Scene + "scripts", + "fonts", + "textures", + "background_color", + "nodes", + "layers", + "material", + "layouts", + "adjust_reference", + "max_nodes", + "spine_scenes", + "particlefxs", + "resources", + "materials", + "max_dynamic_textures", + + -- Vectors + "x", + "y", + "z", + "w", + }, +} + +return M diff --git a/druid/editor_scripts/defold_parser/system/parser.lua b/druid/editor_scripts/defold_parser/system/parser.lua new file mode 100644 index 0000000..212878b --- /dev/null +++ b/druid/editor_scripts/defold_parser/system/parser.lua @@ -0,0 +1,139 @@ +local config = require("druid.editor_scripts.defold_parser.system.config") + +local M = {} + +-- Example: "name: value" +M.REGEX_KEY_COLUM_VALUE = "^%s*([%w_]+):%s*(.+)$" +-- Example: "name {" +M.REGEX_START_TABLE = "^%s*([%w_]*)%s*{%s*$" +-- Example: "}" +M.REGEX_END_TABLE = "^%s*}%s*$" + + +---@param value string +---@return string +function M.unescape_text_field(value) + -- Splitting the value by new lines and processing each line + local lines = {} + for line in value:gmatch("[^\r\n]+") do + line = line:gsub('\\"', '"') -- Unescaping quotes + line = line:gsub("\\n", "") -- Removing newline escapes + line = line:gsub("\\", "") -- Unescaping backslashes + table.insert(lines, line) + end + + -- Reconstructing the value + value = table.concat(lines, "\n") + return value +end + + +function M.is_multiline_value(value) + return value:find("\\n\"") ~= nil +end + + +---@param value any +---@param property_name string|nil +---@return any +function M.decode_value(value, property_name) + if value:match('^".*"$') then + -- Removing the quotes from the string + value = value:sub(2, -2) + + -- Check if value is escaped + -- If ends with \n + if value:sub(-2) == "\\n" then + value = value:gsub('\\"', '"') -- Unescaping quotes + value = value:gsub("\\n", "") + value = value:gsub("\\", "") + end + + elseif value:match('^%-?[0-9.E%-]+$') then + -- Converting to number + value = tonumber(value) + end + + -- Specific handling for the "text" property + if property_name == "text" then + value = tostring(value) + else + if value == "true" then + value = true + elseif value == "false" then + value = false + end + end + + if property_name == "text" and M.is_multiline_value(value) and type(value) == "string" then + value = M.unescape_text_field(value) + end + + return value +end + + +---@param parent_object table +---@param name string +---@param stack table +function M.new_inner_struct(parent_object, name, stack) + local new_object = {} + M.apply_value(parent_object, name, new_object) + + local is_object_always_list = config.ALWAYS_LIST[name] + if is_object_always_list and not M.is_array(parent_object[name]) then + parent_object[name] = { parent_object[name] } + end + + table.insert(stack, new_object) +end + + +---Apply value to the object, if the value is already present, convert it to an array +---@param object table +---@param name string +---@param value any +---@return table object +function M.apply_value(object, name, value) + local is_object_always_list = config.ALWAYS_LIST[name] + if object[name] == nil then + object[name] = value + if is_object_always_list then + object[name] = { object[name] } + end + return object + end + + -- Convert to array if not already + if not M.is_array(object[name]) then + object[name] = { object[name] } + end + + table.insert(object[name], value) + return object +end + + +---@param object table +---@param value string +---@return table @object +function M.apply_multiline_value(object, name, value) + if object[name] == nil then + object[name] = value + else + object[name] = object[name] .. "\n" .. value + end + + return object +end + + +--- Check if table is array +---@param t table +---@return boolean +function M.is_array(t) + return type(t) == "table" and t[1] ~= nil +end + + +return M diff --git a/druid/editor_scripts/defold_parser/system/system.lua b/druid/editor_scripts/defold_parser/system/system.lua new file mode 100644 index 0000000..bab54df --- /dev/null +++ b/druid/editor_scripts/defold_parser/system/system.lua @@ -0,0 +1,163 @@ +local parser = require("druid.editor_scripts.defold_parser.system.parser") + +local M = {} + + +--- Check if table-array contains element +---@param table table +---@param element any +---@return number|boolean index of element or false +function M.contains(table, element) + for index, value in pairs(table) do + if value == element then + return index + end + end + + return false +end + + +---@param file_path string +---@return string|nil, string|nil @success, reason +function M.read_file(file_path) + local file = io.open(file_path, "r") + if file == nil then + return nil, "Could not open file: " .. file_path + end + + local content = file:read("*a") + file:close() + + return content, nil +end + + +---@param file_path string +---@param content string +---@return boolean, string|nil @success, reason +function M.write_file(file_path, content) + local file = io.open(file_path, "w") + if file == nil then + return false, "Could not open file: " .. file_path + end + + file:write(content) + file:close() + + return true, nil +end + + +---@param line string +function M.unescape_line(line) + -- Trim whitespaces + line = line:match("^%s*(.-)%s*$") + + -- Remove first and last quote symbols only if exists + if line:sub(1, 1) == '"' and line:sub(-1) == '"' then + line = line:sub(2, -2) + end + + -- Trim whitespaces + line = line:match("^%s*(.-)%s*$") + + -- Splitting the value by new lines and processing each line + line = line:gsub('\\"', '"') -- Unescaping quotes + line = line:gsub("\\n", "") -- Removing newline escapes + line = line:gsub("\\", "") -- Unescaping backslashes + + return line +end + + +---@param line string +---@return string, string, string, boolean @new_object_name, name, value, end_struct_flag +function M.split_line(line) + local new_object_name = line:match(parser.REGEX_START_TABLE) + local name, value = line:match(parser.REGEX_KEY_COLUM_VALUE) + local end_struct_flag = line:match(parser.REGEX_END_TABLE) + + -- We hit a line what is contains only value, like multiline strings + if not name and not value then + value = line + end + + return new_object_name, name, value, end_struct_flag +end + + +-- what a crap... +local LAST_USED_NAME = nil + +---@param unescaped_line string @line to parse +---@param stack table @stack of objects +---@return boolean +function M.parse_line(unescaped_line, stack) + unescaped_line = unescaped_line:match("^%s*(.-)%s*$") + + -- Use last object to insert data + local object = stack[#stack] + local line = M.unescape_line(unescaped_line) + local inner_object_name, name, value, end_struct_flag = M.split_line(line) + + local is_just_new_line = (unescaped_line == "\"\\n\"") + if not end_struct_flag and (line == "\"" or line == "") and (not is_just_new_line) then + if LAST_USED_NAME ~= "text" then + end_struct_flag = true + end + end + + if inner_object_name then + parser.new_inner_struct(object, inner_object_name, stack) + object = stack[#stack] + end + + if name and value ~= nil then + -- If value is nested object... + if value:sub(1, 1) == '"' then + value = value:sub(2, -1) + end + if value:sub(-1) == '"' then + value = value:sub(1, -2) + end + + local unescape_line = M.unescape_line(value) + local new_object_name, field_name, _, end_flag = M.split_line(unescape_line) + + if (new_object_name or field_name or end_flag) and name ~= "text" then + parser.new_inner_struct(object, name, stack) + object = stack[#stack] + + M.parse_line(value, stack) + else + -- Just a hack honestly + -- If first character is a quote, then remove it + if value:sub(1, 1) == '"' then + value = value:sub(2, -1) + end + if value:sub(-1) == '"' then + value = value:sub(1, -2) + end + + value = parser.decode_value(value, name) + LAST_USED_NAME = name + parser.apply_value(object, name, value) + end + end + + if not name and value and not inner_object_name and not end_struct_flag then + -- We should to add value to the last as a multiline data + parser.apply_multiline_value(object, LAST_USED_NAME, value) + end + + if end_struct_flag then + -- Go back to the parent object + table.remove(stack) + end + + return true +end + + +return M diff --git a/druid/editor_scripts/druid.editor_script b/druid/editor_scripts/druid.editor_script index 7903c00..ba9c01b 100644 --- a/druid/editor_scripts/druid.editor_script +++ b/druid/editor_scripts/druid.editor_script @@ -1,94 +1,75 @@ ---- @license MIT, Insality 2021 ---- @source https://github.com/Insality/druid +local assign_layers = require("druid.editor_scripts.assign_layers") +local create_druid_widget = require("druid.editor_scripts.create_druid_widget") +local create_druid_gui_script = require("druid.editor_scripts.create_druid_gui_script") +local druid_settings = require("druid.editor_scripts.druid_settings") local M = {} +local DEFAULT_WIDGET_TEMPLATE_PATH = "/druid/templates/widget_full.lua.template" +local DEFAULT_GUI_SCRIPT_TEMPLATE_PATH = "/druid/templates/druid.gui_script.template" -local function ends_with(str, ending) - return ending == "" or str:sub(-#ending) == ending -end - - -local function save_file_from_dependency(dependency_file_path, output_file_path) - local content = editor.get(dependency_file_path, "text") - local file, err = io.open(output_file_path, "w") - if err then - print("Error:", err) - return false - end - file:write(content) - file:close() - print("Write file at", output_file_path) - return true +---Define preferences schema +function M.get_prefs_schema() + return { + ["druid.widget_template_path"] = editor.prefs.schema.string({ + default = DEFAULT_WIDGET_TEMPLATE_PATH, + scope = editor.prefs.SCOPE.PROJECT + }), + ["druid.gui_script_template_path"] = editor.prefs.schema.string({ + default = DEFAULT_GUI_SCRIPT_TEMPLATE_PATH, + scope = editor.prefs.SCOPE.PROJECT + }) + } end +---Define the editor commands function M.get_commands() return { { - label = "Assign Layers", - - locations = {"Edit"}, - - query = { - selection = {type = "resource", cardinality = "one"} - }, - + label = "[Druid] Assign Layers", + locations = { "Edit" }, + query = { selection = {type = "resource", cardinality = "one"} }, active = function(opts) local path = editor.get(opts.selection, "path") - return ends_with(path, ".gui") + return path:match("%.gui$") ~= nil end, - run = function(opts) - local file = opts.selection - print("Run script for", editor.get(file, "path")) - save_file_from_dependency('/druid/editor_scripts/run_python_script_on_gui.sh', "./build/run_python_script_on_gui.sh") - save_file_from_dependency('/druid/editor_scripts/setup_layers.py', "./build/setup_layers.py") - return { - { - action = "shell", - command = { - "bash", - "./build/run_python_script_on_gui.sh", - "./build/setup_layers.py", - "." .. editor.get(file, "path") - } - } - } + return assign_layers.assign_layers(opts.selection) end }, { - label = "Create Druid Component", - - locations = {"Edit"}, - - query = { - selection = {type = "resource", cardinality = "one"} - }, - + label = "[Druid] Create Druid Widget", + locations = { "Edit", "Assets" }, + query = { selection = {type = "resource", cardinality = "one"} }, active = function(opts) local path = editor.get(opts.selection, "path") - return ends_with(path, ".gui") + return path:match("%.gui$") ~= nil end, - run = function(opts) - local file = opts.selection - print("Run script for", editor.get(file, "path")) - save_file_from_dependency('/druid/editor_scripts/run_python_script_on_gui.sh', "./build/run_python_script_on_gui.sh") - save_file_from_dependency('/druid/editor_scripts/create_druid_component.py', "./build/create_druid_component.py") - save_file_from_dependency('/druid/editor_scripts/component.lua_template', "./build/component.lua_template") - return { - { - action = "shell", - command = { - "bash", - "./build/run_python_script_on_gui.sh", - "./build/create_druid_component.py", - "." .. editor.get(file, "path") - } - } - } + return create_druid_widget.create_druid_widget(opts.selection) + end + }, + + { + label = "[Druid] Create Druid GUI Script", + locations = { "Edit", "Assets" }, + query = { selection = {type = "resource", cardinality = "one"} }, + active = function(opts) + local path = editor.get(opts.selection, "path") + return path:match("%.gui$") ~= nil + end, + run = function(opts) + return create_druid_gui_script.create_druid_gui_script(opts.selection) + end + }, + + { + label = "[Druid] Settings", + locations = { "Edit" }, + run = function() + return druid_settings.open_settings() end } } diff --git a/druid/editor_scripts/druid_settings.lua b/druid/editor_scripts/druid_settings.lua new file mode 100644 index 0000000..8efa360 --- /dev/null +++ b/druid/editor_scripts/druid_settings.lua @@ -0,0 +1,144 @@ +local M = {} + + +function M.open_settings() + print("Opening Druid settings") + + local dialog_component = editor.ui.component(function(props) + local template_path, set_template_path = editor.ui.use_state(editor.prefs.get("druid.widget_template_path")) + local path_valid = editor.ui.use_memo(function(path) + -- Use resource_exists to check if the resource exists + local exists = false + pcall(function() + -- If we can get the text property, the resource exists + local content = editor.get(path, "text") + exists = content ~= nil + end) + return exists + end, template_path) + + local gui_script_template_path, set_gui_script_template_path = editor.ui.use_state(editor.prefs.get("druid.gui_script_template_path")) + local gui_script_template_path_valid = editor.ui.use_memo(function(path) + local exists = false + pcall(function() + local content = editor.get(path, "text") + exists = content ~= nil + end) + return exists + end, gui_script_template_path) + + return editor.ui.dialog({ + title = "Druid Settings", + content = editor.ui.vertical({ + spacing = editor.ui.SPACING.MEDIUM, + padding = editor.ui.PADDING.MEDIUM, + children = { + editor.ui.label({ + text = "Widget Template Path:" + }), + editor.ui.resource_field({ + value = template_path, + on_value_changed = set_template_path, + extensions = {"lua", "template"}, + padding = editor.ui.PADDING.SMALL + }), + not path_valid and editor.ui.label({ + text = "Warning: Path not found!", + color = editor.ui.COLOR.WARNING + }) or nil, + + editor.ui.label({ + text = "GUI Script Template Path:" + }), + editor.ui.resource_field({ + value = gui_script_template_path, + on_value_changed = set_gui_script_template_path, + extensions = {"lua", "template"}, + padding = editor.ui.PADDING.SMALL + }), + not gui_script_template_path_valid and editor.ui.label({ + text = "Warning: Path not found!", + color = editor.ui.COLOR.WARNING + }) or nil, + + -- Links section title + editor.ui.label({ + text = "Documentation:", + color = editor.ui.COLOR.TEXT + }), + + -- Documentation buttons + editor.ui.horizontal({ + spacing = editor.ui.SPACING.SMALL, + children = { + editor.ui.button({ + text = "Project Repository", + on_pressed = function() + editor.browse("https://github.com/Insality/druid") + end + }), + editor.ui.button({ + text = "Open Quick API Reference", + on_pressed = function() + editor.browse("https://github.com/Insality/druid/blob/develop/api/quick_api_reference.md") + end + }), + } + }), + + -- Sponsor section + editor.ui.label({ + text = "Support the project:", + color = editor.ui.COLOR.TEXT + }), + editor.ui.horizontal({ + spacing = editor.ui.SPACING.SMALL, + children = { + editor.ui.button({ + text = "❤️ Sponsor on GitHub", + on_pressed = function() + editor.browse("https://github.com/sponsors/Insality") + end + }), + editor.ui.button({ + text = "☕ Ko-fi", + on_pressed = function() + editor.browse("https://ko-fi.com/insality") + end + }), + editor.ui.button({ + text = "☕ Buy Me A Coffee", + on_pressed = function() + editor.browse("https://buymeacoffee.com/insality") + end + }) + } + }) + } + }), + buttons = { + editor.ui.dialog_button({ + text = "Cancel", + cancel = true + }), + editor.ui.dialog_button({ + text = "Save", + default = true, + result = { template_path = template_path } + }) + } + }) + end) + + local result = editor.ui.show_dialog(dialog_component({})) + if result and result.template_path then + -- Update the preferences + editor.prefs.set("druid.widget_template_path", result.template_path) + print("Widget template path updated to:", result.template_path) + end + + return result +end + + +return M diff --git a/druid/editor_scripts/run_python_script_on_gui.sh b/druid/editor_scripts/run_python_script_on_gui.sh deleted file mode 100644 index 5b0e2b9..0000000 --- a/druid/editor_scripts/run_python_script_on_gui.sh +++ /dev/null @@ -1,24 +0,0 @@ -#!/bin/bash -# @license MIT, Insality 2022 -# @source https://github.com/Insality/druid - -echo "Run bash for $1" -DIR="$( cd "$( dirname "${BASH_SOURCE[0]}" )" >/dev/null 2>&1 && pwd )" - -# Check if pip3 is installed -if command -v pip3 &> /dev/null; then - PIP_CMD="pip3" - PYTHON_CMD="python3" -else - PIP_CMD="pip" - PYTHON_CMD="python" -fi - -is_defree_installed=$($PIP_CMD list --disable-pip-version-check | grep -E "deftree") -if [ -z "$is_defree_installed" ]; then - echo "The python deftree is not installed. Please install it via" - echo "$ $PIP_CMD install deftree" - exit 0 -fi - -$PYTHON_CMD $1 $2 diff --git a/druid/editor_scripts/setup_layers.py b/druid/editor_scripts/setup_layers.py deleted file mode 100644 index dd0d580..0000000 --- a/druid/editor_scripts/setup_layers.py +++ /dev/null @@ -1,44 +0,0 @@ -# @license MIT, Insality 2021 -# @source https://github.com/Insality/druid - -import sys -import deftree - -def main(): - filename = sys.argv[1] - print("Auto setup layers for file", filename) - tree = deftree.parse(filename) - root = tree.get_root() - - layers = [] - for texture in root.iter_elements("textures"): - layers.append(texture.get_attribute("name").value) - - for fonts in root.iter_elements("fonts"): - layers.append(fonts.get_attribute("name").value) - - to_remove_layers = [] - for layer in root.iter_elements("layers"): - to_remove_layers.append(layer) - for layer in to_remove_layers: - root.remove(layer) - - for layer in layers: - new_layer = root.add_element("layers") - new_layer.add_attribute("name", layer) - - for node in root.iter_elements("nodes"): - texture = node.get_attribute("texture") - font = node.get_attribute("font") - - if texture: - layer = texture.value.split("/")[0] - node.set_attribute("layer", layer) - - if font: - layer = font.value - node.set_attribute("layer", layer) - - tree.write() - -main() \ No newline at end of file diff --git a/druid/event.lua b/druid/event.lua deleted file mode 100644 index ef79c86..0000000 --- a/druid/event.lua +++ /dev/null @@ -1,205 +0,0 @@ --- Copyright (c) 2021 Maksim Tuprikov . This code is licensed under MIT license - ---- Druid Event Module --- --- The Event module provides a simple class for handling callbacks. It is used in many Druid components. --- --- You can subscribe to an event using the `:subscribe` method and unsubscribe using the `:unsubscribe` method. --- @module DruidEvent --- @alias druid.event - -local M = {} -M.COUNTER = 0 - --- Forward declaration -local EVENT_METATABLE - --- Local versions -local pcall = pcall -local tinsert = table.insert -local tremove = table.remove - ---- DruidEvent constructor --- @tparam function|nil callback Subscribe the callback on new event, if callback exist --- @tparam any|nil callback_context Additional context as first param to callback call --- @usage --- local Event = require("druid.event") --- ... --- local event = Event(callback) -function M.create(callback, callback_context) - local instance = setmetatable({}, EVENT_METATABLE) - - if callback then - instance:subscribe(callback, callback_context) - end - - M.COUNTER = M.COUNTER + 1 - return instance -end - - ---- Check is event subscribed. --- @tparam DruidEvent self @{DruidEvent} --- @tparam function callback Callback itself --- @tparam any|nil callback_context Additional context as first param to callback call --- @treturn boolean, number|nil @Is event subscribed, return index of callback in event as second param -function M.is_subscribed(self, callback, callback_context) - if #self == 0 then - return false, nil - end - - for index = 1, #self do - local cb = self[index] - if cb[1] == callback and cb[2] == callback_context then - return true, index - end - end - - return false, nil -end - - ---- Subscribe callback on event --- @tparam DruidEvent self @{DruidEvent} --- @tparam function callback Callback itself --- @tparam any|nil callback_context Additional context as first param to callback call, usually it's self --- @treturn boolean True if callback was subscribed --- @usage --- local function on_long_callback(self) --- print("Long click!") --- end --- ... --- local button = self.druid:new_button("button", callback) --- button.on_long_click:subscribe(on_long_callback, self) -function M.subscribe(self, callback, callback_context) - assert(type(self) == "table", "You should subscribe to event with : syntax") - assert(callback, "A function must be passed to subscribe to an event") - - if self:is_subscribed(callback, callback_context) then - return false - end - - tinsert(self, { callback, callback_context }) - return true -end - - ---- Unsubscribe callback on event --- @tparam DruidEvent self @{DruidEvent} --- @tparam function callback Callback itself --- @tparam any|nil callback_context Additional context as first param to callback call --- @usage --- local function on_long_callback(self) --- print("Long click!") --- end --- ... --- button.on_long_click:unsubscribe(on_long_callback, self) -function M.unsubscribe(self, callback, callback_context) - assert(callback, "A function must be passed to subscribe to an event") - - local _, event_index = self:is_subscribed(callback, callback_context) - if not event_index then - return false - end - - tremove(self, event_index) - return true -end - - ---- Return true, if event have at lease one handler --- @tparam DruidEvent self @{DruidEvent} --- @treturn boolean True if event have handlers --- @usage --- local is_long_click_handler_exists = button.on_long_click:is_exist() -function M.is_exist(self) - return #self > 0 -end - - ---- Return true, if event not have handler ---- @tparam DruidEvent self @{DruidEvent} ---- @treturn boolean True if event not have handlers ---- @usage ---- local is_long_click_handler_not_exists = button.on_long_click:is_empty() -function M:is_empty() - return #self == 0 -end - - ---- Clear the all event handlers --- @tparam DruidEvent self @{DruidEvent} --- @usage --- button.on_long_click:clear() -function M.clear(self) - for index = #self, 1, -1 do - self[index] = nil - end -end - - ---- Trigger the event and call all subscribed callbacks --- @tparam DruidEvent self @{DruidEvent} --- @tparam any ... All event params --- @usage --- local Event = require("druid.event") --- ... --- local event = Event() --- event:trigger("Param1", "Param2") -function M.trigger(self, ...) - if #self == 0 then - return - end - - local result = nil - - local call_callback = self.call_callback - for index = 1, #self do - result = call_callback(self, self[index], ...) - end - - return result -end - - --- @tparam table callback Callback data {function, context} --- @tparam any ... All event params --- @treturn any Result of the callback --- @local -function M:call_callback(callback, ...) - local event_callback = callback[1] - local event_callback_context = callback[2] - - -- Call callback - local ok, result_or_error - if event_callback_context then - ok, result_or_error = pcall(event_callback, event_callback_context, ...) - else - ok, result_or_error = pcall(event_callback, ...) - end - - -- Handle errors - if not ok then - local caller_info = debug.getinfo(2) - pprint("An error occurred during event processing", { - trigger = caller_info.short_src .. ":" .. caller_info.currentline, - error = result_or_error, - }) - pprint("Traceback", debug.traceback()) - return nil - end - - return result_or_error -end - --- Construct event metatable -EVENT_METATABLE = { - __index = M, - __call = M.trigger, -} - -return setmetatable(M, { - __call = function(_, callback) - return M.create(callback) - end, -}) diff --git a/example/components/container/container.lua b/druid/extended/container.lua similarity index 71% rename from example/components/container/container.lua rename to druid/extended/container.lua index 8e0c977..9e320b7 100644 --- a/example/components/container/container.lua +++ b/druid/extended/container.lua @@ -1,4 +1,5 @@ ---- Container component +---Container component +---Experimental, not tested well, main idea is working -- Container setup in GUI -- parent container - container that contains this container. If not, then it's a window default container or parent node -- container pivot - the point of the parent container that will be used as a pivot point for positioning @@ -13,27 +14,7 @@ local const = require("druid.const") local helper = require("druid.helper") local component = require("druid.component") -local Event = require("druid.event") - ----@class druid.container: druid.base_component ----@field node node ----@field druid druid_instance ----@field node_offset vector4 ----@field origin_size vector3 ----@field size vector3 ----@field origin_position vector3 ----@field position vector3 ----@field pivot_offset vector3 ----@field center_offset vector3 ----@field mode string ----@field fit_size vector3 ----@field min_size_x number|nil ----@field min_size_y number|nil ----@field on_size_changed druid.event @function on_size_changed(size) ----@field _parent_container druid.container ----@field _containers table ----@field _draggable_corners table -local M = component.create("container") +local event = require("event.event") local abs = math.abs local min = math.min @@ -46,11 +27,48 @@ local CORNER_PIVOTS = { gui.PIVOT_SW, } +---@class druid.container.style +---@field DRAGGABLE_CORNER_SIZE vector3 Size of box node for debug draggable corners +---@field DRAGGABLE_CORNER_COLOR vector4 Color of debug draggable corners ---- The Container init +---Druid component to manage the size and positions with other containers relations to create a adaptable layouts. +--- +---### Setup +---Create container component with druid: `container = druid:new_container(node, mode, callback)` +--- +---### Notes +---- Container can be used to create adaptable layouts that respond to window size changes +---- Container supports different layout modes: FIT, STRETCH, STRETCH_X, STRETCH_Y +---- Container can be nested inside other containers +---- Container supports fixed margins and percentage-based sizing +---- Container can be positioned using pivot points +---- Container supports minimum size constraints +---- Container can be fitted into window or custom size +---@class druid.container: druid.component +---@field node node The gui node +---@field druid druid.instance The druid instance +---@field node_offset vector4 The node offset +---@field origin_size vector3 The origin size +---@field size vector3 The current size +---@field origin_position vector3 The origin position +---@field position vector3 The current position +---@field pivot_offset vector3 The pivot offset +---@field center_offset vector3 The center offset +---@field mode string The layout mode +---@field fit_size vector3 The fit size +---@field min_size_x number|nil The minimum size x +---@field min_size_y number|nil The minimum size y +---@field on_size_changed event fun(self: druid.container, size: vector3) The event triggered when the size changes +---@field _parent_container druid.container The parent container +---@field _containers table The containers +---@field _draggable_corners table The draggable corners +local M = component.create("container") + + +---The Container constructor ---@param node node Gui node ---@param mode string Layout mode ----@param callback fun(self: druid.container, size: vector3) Callback on size changed +---@param callback fun(self: druid.container, size: vector3)|nil Callback on size changed function M:init(node, mode, callback) self.node = self:get_node(node) self.druid = self:get_druid() @@ -76,13 +94,13 @@ function M:init(node, mode, callback) self.position = gui.get_position(self.node) self.origin_position = gui.get_position(self.node) - local adjust_mode = gui.get_adjust_mode(self.node) - self.mode = mode or (adjust_mode == gui.ADJUST_FIT) and const.LAYOUT_MODE.FIT or const.LAYOUT_MODE.STRETCH + self._initial_adjust_mode = gui.get_adjust_mode(self.node) + self.mode = mode or (self._initial_adjust_mode == gui.ADJUST_FIT) and const.LAYOUT_MODE.FIT or const.LAYOUT_MODE.STRETCH gui.set_size_mode(self.node, gui.SIZE_MODE_MANUAL) gui.set_adjust_mode(self.node, gui.ADJUST_FIT) - self.on_size_changed = Event(callback) + self.on_size_changed = event.create(callback) self.pivot_offset = helper.get_pivot_offset(gui.get_pivot(self.node)) self.center_offset = -vmath.vector3(self.size.x * self.pivot_offset.x, self.size.y * self.pivot_offset.y, 0) @@ -90,6 +108,7 @@ function M:init(node, mode, callback) end +---@private function M:on_late_init() if not gui.get_parent(self.node) then -- TODO: Scale issue here, in fit into window! @@ -98,11 +117,14 @@ function M:on_late_init() end +---@private function M:on_remove() self:clear_draggable_corners() + gui.set_adjust_mode(self.node, self._initial_adjust_mode) end +---Refresh the origins of the container, origins is the size and position of the container when it was created function M:refresh_origins() self.origin_size = gui.get_size(self.node) self.origin_position = gui.get_position(self.node) @@ -110,7 +132,8 @@ function M:refresh_origins() end ----@param pivot constant +---Set the pivot of the container +---@param pivot constant The pivot to set function M:set_pivot(pivot) gui.set_pivot(self.node, pivot) self.pivot_offset = helper.get_pivot_offset(pivot) @@ -118,24 +141,22 @@ function M:set_pivot(pivot) end ---- Component style params. --- You can override this component styles params in Druid styles table --- or create your own style --- @table style --- @tfield[opt=vector3(24, 24, 0)] vector3 DRAGGABLE_CORNER_SIZE Size of box node for debug draggable corners --- @tfield[opt=vector4(1)] vector4 DRAGGABLE_CORNER_COLOR Color of debug draggable corners +---@private +---@param style druid.container.style function M:on_style_change(style) - self.style = {} - self.style.DRAGGABLE_CORNER_SIZE = style.DRAGGABLE_CORNER_SIZE or vmath.vector3(24, 24, 0) - self.style.DRAGGABLE_CORNER_COLOR = style.DRAGGABLE_CORNER_COLOR or vmath.vector4(10) + self.style = { + DRAGGABLE_CORNER_SIZE = style.DRAGGABLE_CORNER_SIZE or vmath.vector3(24, 24, 0), + DRAGGABLE_CORNER_COLOR = style.DRAGGABLE_CORNER_COLOR or vmath.vector4(10) + } end ---- Set new size of layout node ----@param width number|nil ----@param height number|nil ----@return druid.container @{Container} -function M:set_size(width, height) +---Set new size of layout node +---@param width number|nil The width to set +---@param height number|nil The height to set +---@param anchor_pivot constant|nil If set will keep the corner position relative to the new size +---@return druid.container Container +function M:set_size(width, height, anchor_pivot) width = width or self.size.x height = height or self.size.y @@ -149,11 +170,23 @@ function M:set_size(width, height) if (width and width ~= self.size.x) or (height and height ~= self.size.y) then self.center_offset.x = -width * self.pivot_offset.x self.center_offset.y = -height * self.pivot_offset.y + local dx = self.size.x - width + local dy = self.size.y - height self.size.x = width self.size.y = height self.size.z = 0 gui.set_size(self.node, self.size) + if anchor_pivot then + local pivot = gui.get_pivot(self.node) + local pivot_offset = helper.get_pivot_offset(pivot) + local new_pivot_offset = helper.get_pivot_offset(anchor_pivot) + + local position_dx = dx * (pivot_offset.x - new_pivot_offset.x) + local position_dy = dy * (pivot_offset.y - new_pivot_offset.y) + self:set_position(self._position.x + position_dx, self._position.y - position_dy) + end + self:update_child_containers() self.on_size_changed:trigger(self:get_context(), self.size) end @@ -162,8 +195,16 @@ function M:set_size(width, height) end ----@param pos_x number ----@param pos_y number +---Get the position of the container +---@return vector3 position The position of the container +function M:get_position() + return self._position +end + + +---Set the position of the container +---@param pos_x number The x position to set +---@param pos_y number The y position to set function M:set_position(pos_x, pos_y) if self._position.x == pos_x and self._position.y == pos_y then return @@ -175,38 +216,39 @@ function M:set_position(pos_x, pos_y) end ----Get current size of layout node ----@return vector3 size +---Get the current size of the layout node +---@return vector3 size The current size of the layout node function M:get_size() - return self.size + return vmath.vector3(self.size) end ----Get current scale of layout node ----@return vector3 scale +---Get the current scale of the layout node +---@return vector3 scale The current scale of the layout node function M:get_scale() return helper.get_scene_scale(self.node, true) --[[@as vector3]] end ---- Set size for layout node to fit inside it ----@param target_size vector3 ----@return druid.container @{Container} +---Set size for layout node to fit inside it +---@param target_size vector3 The target size to fit into +---@return druid.container self Current container instance function M:fit_into_size(target_size) self.fit_size = target_size self:refresh() + return self end ---- Set current size for layout node to fit inside it ----@return druid.container @{Container} +---Set current size for layout node to fit inside it +---@return druid.container self Current container instance function M:fit_into_window() return self:fit_into_size(vmath.vector3(gui.get_width(), gui.get_height(), 0)) end ----@param self druid.container +---@private function M:on_window_resized() local x_koef, y_koef = helper.get_screen_aspect_koef() self.x_koef = x_koef @@ -218,22 +260,23 @@ function M:on_window_resized() end ----@param node_or_container node|string|druid.container|table +---@param node_or_container node|string|druid.container|table The node or container to add ---@param mode string|nil stretch, fit, stretch_x, stretch_y. Default: Pick from node, "fit" or "stretch" ---@param on_resize_callback fun(self: userdata, size: vector3)|nil ----@return druid.container @{Container} New created layout instance +---@return druid.container Container New created layout instance function M:add_container(node_or_container, mode, on_resize_callback) local container = nil local node = node_or_container -- Check it's a container components instead of node - if type(node_or_container) == "table" and node_or_container._component then + if type(node_or_container) == "table" and node_or_container.add_container then node = node_or_container.node container = node_or_container mode = mode or container.mode end -- Covert node_id to node if needed + ---@cast node node node = self:get_node(node) container = container or self.druid:new(M, node, mode) @@ -327,6 +370,7 @@ end -- Glossary -- Center Offset - vector from node position to visual center of node + function M:refresh() local x_koef, y_koef = self.x_koef, self.y_koef self:refresh_scale() @@ -369,7 +413,7 @@ function M:refresh() stretch_side_y = parent.size.y - (abs(self.node_offset.y) + abs(self.node_offset.w)) end - ---- Size Update (for stretch) + ----Size Update (for stretch) if self.mode == const.LAYOUT_MODE.STRETCH then self:set_size( abs(stretch_side_x * self.node_fill_x), @@ -422,7 +466,7 @@ function M:update_child_containers() end ----@return druid.container @{Container} +---@return druid.container self Current container instance function M:create_draggable_corners() self:clear_draggable_corners() @@ -452,7 +496,7 @@ function M:create_draggable_corners() end ----@return druid.container @{Container} +---@return druid.container self Current container instance function M:clear_draggable_corners() for index = 1, #self._draggable_corners do local drag_component = self._draggable_corners[index] @@ -503,9 +547,9 @@ function M:_on_corner_drag(x, y, corner_offset) end ---- Set node for layout node to fit inside it. Pass nil to reset +---Set node for layout node to fit inside it. Pass nil to reset ---@param node string|node The node_id or gui.get_node(node_id) ----@return druid.container @{Layout} +---@return druid.container self Current container instance function M:fit_into_node(node) self._fit_node = self:get_node(node) self:refresh_scale() @@ -513,8 +557,10 @@ function M:fit_into_node(node) end ----@param min_size_x number|nil ----@param min_size_y number|nil +---Set the minimum size of the container +---@param min_size_x number|nil The minimum size x +---@param min_size_y number|nil The minimum size y +---@return druid.container self Current container instance function M:set_min_size(min_size_x, min_size_y) self.min_size_x = min_size_x or self.min_size_x self.min_size_y = min_size_y or self.min_size_y diff --git a/druid/extended/data_list.lua b/druid/extended/data_list.lua index 81bf959..c21c4fa 100644 --- a/druid/extended/data_list.lua +++ b/druid/extended/data_list.lua @@ -1,54 +1,42 @@ --- Copyright (c) 2021 Maksim Tuprikov . This code is licensed under MIT license - ---- Component to manage data for huge dataset in scroll. --- It requires Druid Scroll and Druid Grid (Static or Dynamic) components --- --- Example Link --- @module DataList --- @within BaseComponent --- @alias druid.data_list - - ---- The Druid scroll component --- @tfield Scroll scroll @{Scroll} - ---- The Druid Grid component --- @tfield StaticGrid grid @{StaticGrid}, @{DynamicGrid} - ---- The current progress of scroll posititon --- @tfield number scroll_progress - ---- The current top index of visual elements --- @tfield number top_index - ---- The current last index of visual elements --- @tfield number last_index - ---- Event triggered when scroll progress is changed; event(self, progress_value) --- @tfield DruidEvent on_scroll_progress_change @{DruidEvent} - ----On DataList visual element created Event callback(self, index, node, instance) --- @tfield DruidEvent on_element_add @{DruidEvent} - ----On DataList visual element created Event callback(self, index) --- @tfield DruidEvent on_element_remove @{DruidEvent} - ---- - local const = require("druid.const") local helper = require("druid.helper") local component = require("druid.component") -local Event = require("druid.event") +local event = require("event.event") -local DataList = component.create("data_list") +---Druid component to manage a list of data with a scrollable view, used to manage huge list data and render only visible elements. +--- +---### Setup +---Create data list component with druid: `data_list = druid:new_data_list(scroll, grid, create_function)` +--- +---### Notes +---- Data List uses a scroll component for scrolling and a grid component for layout +---- Data List only renders visible elements for better performance +---- Data List supports caching of elements for better performance +---- Data List supports adding, removing and updating elements +---- Data List supports scrolling to specific elements +---- Data List supports custom element creation and cleanup +---@class druid.data_list: druid.component +---@field scroll druid.scroll The scroll instance for Data List component +---@field grid druid.grid The StaticGrid or DynamicGrid instance for Data List component +---@field on_scroll_progress_change event fun(self: druid.data_list, progress: number) The event triggered when the scroll progress changes +---@field on_element_add event fun(self: druid.data_list, index: number, node: node, instance: druid.component, data: table) The event triggered when a new element is added +---@field on_element_remove event fun(self: druid.data_list, index: number, node: node, instance: druid.component, data: table) The event triggered when an element is removed +---@field top_index number The top index of the visible elements +---@field last_index number The last index of the visible elements +---@field scroll_progress number The scroll progress +---@field private _create_function function The create function callback(self, data, index, data_list). Function should return (node, [component]) +---@field private _is_use_cache boolean Use cache version of DataList. Requires make setup of components in on_element_add callback and clean in on_element_remove +---@field private _cache table The cache table +---@field private _data table The data table +---@field private _data_visual table The data visual table +local M = component.create("data_list") ---- The @{DataList} constructor --- @tparam DataList self @{DataList} --- @tparam Scroll scroll The @{Scroll} instance for Data List component --- @tparam StaticGrid grid The @{StaticGrid} or @{DynamicGrid} instance for Data List component --- @tparam function create_function The create function callback(self, data, index, data_list). Function should return (node, [component]) -function DataList.init(self, scroll, grid, create_function) +---The DataList constructor +---@param scroll druid.scroll The Scroll instance for Data List component +---@param grid druid.grid The StaticGrid instance for Data List component +---@param create_function function The create function callback(self, data, index, data_list). Function should return (node, [component]) +function M:init(scroll, grid, create_function) self.scroll = scroll self.grid = grid if self.grid.style then @@ -68,35 +56,32 @@ function DataList.init(self, scroll, grid, create_function) self.scroll.on_scroll:subscribe(self._refresh, self) - self.on_scroll_progress_change = Event() - self.on_element_add = Event() - self.on_element_remove = Event() + self.on_scroll_progress_change = event.create() + self.on_element_add = event.create() + self.on_element_remove = event.create() end ---- Druid System on_remove function --- @tparam DataList self @{DataList} -function DataList.on_remove(self) +---@private +function M:on_remove() self:clear() self.scroll.on_scroll:unsubscribe(self._refresh, self) end ---- Set refresh function for DataList component --- @tparam DataList self @{DataList} --- @tparam boolean is_use_cache Use cache version of DataList. Requires make setup of components in on_element_add callback and clean in on_element_remove --- @treturn druid.data_list Current DataList instance -function DataList.set_use_cache(self, is_use_cache) +---Set use cache version of DataList. Requires make setup of components in on_element_add callback and clean in on_element_remove +---@param is_use_cache boolean Use cache version of DataList +---@return druid.data_list self Current DataList instance +function M:set_use_cache(is_use_cache) self._is_use_cache = is_use_cache return self end ---- Set new data set for DataList component --- @tparam DataList self @{DataList} --- @tparam table data The new data array --- @treturn druid.data_list Current DataList instance -function DataList.set_data(self, data) +---Set new data set for DataList component +---@param data table The new data array +---@return druid.data_list self Current DataList instance +function M:set_data(data) self._data = data or {} self:_refresh() @@ -104,63 +89,69 @@ function DataList.set_data(self, data) end ---- Return current data from DataList component --- @tparam DataList self @{DataList} --- @treturn table The current data array -function DataList.get_data(self) +---Return current data from DataList component +---@return table data The current data array +function M:get_data() return self._data end ---- Add element to DataList. Currenly untested --- @tparam DataList self @{DataList} --- @tparam table data --- @tparam number|nil index --- @tparam number|nil shift_policy The constant from const.SHIFT.* -function DataList.add(self, data, index, shift_policy) +---Add element to DataList +---@param data table The data to add +---@param index number|nil The index to add the data at +---@param shift_policy number|nil The constant from const.SHIFT.* +---@return druid.data_list self Current DataList instance +function M:add(data, index, shift_policy) index = index or #self._data + 1 shift_policy = shift_policy or const.SHIFT.RIGHT helper.insert_with_shift(self._data, data, index, shift_policy) self:_refresh() + + return self end ---- Remove element from DataList. Currenly untested --- @tparam DataList self @{DataList} --- @tparam number|nil index --- @tparam number|nil shift_policy The constant from const.SHIFT.* -function DataList.remove(self, index, shift_policy) +---Remove element from DataList +---@param index number|nil The index to remove the data at +---@param shift_policy number|nil The constant from const.SHIFT.* +---@return druid.data_list self Current DataList instance +function M:remove(index, shift_policy) helper.remove_with_shift(self._data, index, shift_policy) self:_refresh() + + return self end ---- Remove element from DataList by data value. Currenly untested --- @tparam DataList self @{DataList} --- @tparam table data --- @tparam number|nil shift_policy The constant from const.SHIFT.* -function DataList.remove_by_data(self, data, shift_policy) +---Remove element from DataList by data value +---@param data table The data to remove +---@param shift_policy number|nil The constant from const.SHIFT.* +---@return druid.data_list self Current DataList instance +function M:remove_by_data(data, shift_policy) local index = helper.contains(self._data, data) if index then helper.remove_with_shift(self._data, index, shift_policy) self:_refresh() end + + return self end ---- Clear the DataList and refresh visuals --- @tparam DataList self @{DataList} -function DataList.clear(self) +---Clear the DataList and refresh visuals +---@return druid.data_list self Current DataList instance +function M:clear() self._data = {} self:_refresh() + + return self end ---- Return index for data value --- @tparam DataList self @{DataList} --- @tparam table data -function DataList.get_index(self, data) +---Return index for data value +---@param data table +function M:get_index(data) for index, value in pairs(self._data) do if value == data then return index @@ -171,10 +162,9 @@ function DataList.get_index(self, data) end ---- Return all currenly created nodes in DataList --- @tparam DataList self @{DataList} --- @treturn node[] List of created nodes -function DataList.get_created_nodes(self) +---Return all currently created nodes in DataList +---@return node[] List of created nodes +function M:get_created_nodes() local nodes = {} for index, data in pairs(self._data_visual) do @@ -185,10 +175,9 @@ function DataList.get_created_nodes(self) end ---- Return all currenly created components in DataList --- @tparam DataList self @{DataList} --- @treturn druid.base_component[] List of created nodes -function DataList.get_created_components(self) +---Return all currently created components in DataList +---@return druid.component[] components List of created components +function M:get_created_components() local components = {} for index, data in pairs(self._data_visual) do @@ -199,20 +188,18 @@ function DataList.get_created_components(self) end ---- Instant scroll to element with passed index --- @tparam DataList self @{DataList} --- @tparam number index -function DataList.scroll_to_index(self, index) +---Instant scroll to element with passed index +---@param index number The index to scroll to +function M:scroll_to_index(index) local pos = self.grid:get_pos(index) self.scroll:scroll_to(pos) end ---- Add element at passed index using cache or create new --- @tparam DataList self @{DataList} --- @tparam number index --- @local -function DataList._add_at(self, index) +---Add element at passed index using cache or create new +---@param index number The index to add the element at +---@private +function M:_add_at(index) if self._data_visual[index] then self:_remove_at(index) end @@ -242,11 +229,10 @@ function DataList._add_at(self, index) end ---- Remove element from passed index and add it to cache if applicable --- @tparam DataList self @{DataList} --- @tparam number index --- @local -function DataList._remove_at(self, index) +---Remove element from passed index and add it to cache if applicable +---@param index number The index to remove the element at +---@private +function M:_remove_at(index) self.grid:remove(index, const.SHIFT.NO_SHIFT) local visual_data = self._data_visual[index] @@ -272,11 +258,9 @@ function DataList._remove_at(self, index) end - ---- Refresh all elements in DataList --- @tparam DataList self @{DataList} --- @local -function DataList._refresh(self) +---Refresh all elements in DataList +---@private +function M:_refresh() self.scroll:set_size(self.grid:get_size_for(#self._data)) local start_pos = -self.scroll.position --[[@as vector3]] @@ -313,4 +297,4 @@ function DataList._refresh(self) end -return DataList +return M diff --git a/druid/extended/dynamic_grid.lua b/druid/extended/dynamic_grid.lua deleted file mode 100644 index c4f0c76..0000000 --- a/druid/extended/dynamic_grid.lua +++ /dev/null @@ -1,427 +0,0 @@ --- Copyright (c) 2021 Maksim Tuprikov . This code is licensed under MIT license - ---- Component to handle placing components in row --- --- Example Link --- @module DynamicGrid --- @within BaseComponent --- @alias druid.dynamic_grid - ---- On item add callback(self, node, index) --- @tfield DruidEvent on_add_item @{DruidEvent} - ---- On item remove callback(self, index) --- @tfield DruidEvent on_remove_item @{DruidEvent} - ---- On item add or remove callback(self, index) --- @tfield DruidEvent on_change_items @{DruidEvent} - ---- On grid clear callback(self) --- @tfield DruidEvent on_clear @{DruidEvent} - ---- On update item positions callback(self) --- @tfield DruidEvent on_update_positions @{DruidEvent} - ---- Parent gui node --- @tfield node parent - ---- List of all grid elements. Contains from node, pos, size, pivot --- @tfield node[] nodes - ---- The first index of node in grid --- @tfield number first_index - ---- The last index of node in grid --- @tfield number last_index - ---- Item size --- @tfield vector3 node_size - ---- The size of item content --- @tfield vector4 border - ---- - -local const = require("druid.const") -local Event = require("druid.event") -local helper = require("druid.helper") -local component = require("druid.component") - -local DynamicGrid = component.create("dynamic_grid") - - -local SIDE_VECTORS = { - LEFT = vmath.vector3(-1, 0, 0), - RIGHT = vmath.vector3(1, 0, 0), - TOP = vmath.vector3(0, -1, 0), - BOT = vmath.vector3(0, 1, 0), -} - -local AVAILABLE_PIVOTS = { - gui.PIVOT_N, - gui.PIVOT_S, - gui.PIVOT_W, - gui.PIVOT_E, -} - - ---- The @{DynamicGrid} constructor --- @tparam DynamicGrid self @{DynamicGrid} --- @tparam node parent The gui node parent, where items will be placed -function DynamicGrid.init(self, parent) - self.parent = self:get_node(parent) - - local parent_pivot = gui.get_pivot(self.parent) - self.pivot = helper.get_pivot_offset(parent_pivot) - - assert(helper.contains(AVAILABLE_PIVOTS, parent_pivot), const.ERRORS.GRID_DYNAMIC_ANCHOR) - self.side = ((parent_pivot == gui.PIVOT_W or parent_pivot == gui.PIVOT_E) - and const.SIDE.X or const.SIDE.Y) - - self.nodes = {} - self.border = vmath.vector4(0) -- Current grid content size - - self.on_add_item = Event() - self.on_remove_item = Event() - self.on_change_items = Event() - self.on_clear = Event() - self.on_update_positions = Event() - - self._set_position_function = gui.set_position -end - - -function DynamicGrid.on_layout_change(self) - self:_update(true) -end - - ---- Return pos for grid node index --- @tparam DynamicGrid self @{DynamicGrid} --- @tparam number index The grid element index --- @tparam node node The node to be placed --- @tparam number|nil origin_index Index of nearby node --- @treturn vector3 node position -function DynamicGrid.get_pos(self, index, node, origin_index) - local origin_node = self.nodes[origin_index] - - -- If anchor node is not exist, check around nodes - if not origin_node then - if self.nodes[index + 1] then - origin_index = index + 1 - end - if self.nodes[index - 1] then - origin_index = index - 1 - end - origin_node = self.nodes[origin_index] - end - - if not origin_node then - assert(not self.first_index, "Dynamic Grid can't have gaps between nodes. Error on grid:add") - - -- If not origin node, so it should be first element in the grid - local size = helper.get_scaled_size(node) - local pivot = const.PIVOTS[gui.get_pivot(node)] - return vmath.vector3( - size.x * pivot.x - size.x * self.pivot.x, - size.y * pivot.y - size.y * self.pivot.y, - 0) - end - - if origin_node then - -- Other nodes spawn from other side of the origin node - local is_forward = origin_index < index - local delta = is_forward and 1 or -1 - return self:_get_next_node_pos(index - delta, node, self:_get_side_vector(self.side, is_forward)) - end -end - - ---- Add new node to the grid --- @tparam DynamicGrid self @{DynamicGrid} --- @tparam node node Gui node --- @tparam number|nil index The node position. By default add as last node --- @tparam number|nil shift_policy How shift nodes, if required. Default: const.SHIFT.RIGHT --- @tparam boolean|nil is_instant If true, update node positions instantly -function DynamicGrid.add(self, node, index, shift_policy, is_instant) - shift_policy = shift_policy or const.SHIFT.RIGHT - local delta = shift_policy -- -1 or 1 or 0 - - -- By default add node at end - index = index or ((self.last_index or 0) + 1) - - -- If node exist at index place, shifting them - local is_shift = self.nodes[index] and shift_policy ~= const.SHIFT.NO_SHIFT - if is_shift then - -- We need to iterate from index to start or end grid, depends of shift side - local start_index = shift_policy == const.SHIFT.LEFT and self.first_index or self.last_index - for i = start_index, index, -delta do - self.nodes[i + delta] = self.nodes[i] - end - end - - self:_add_node(node, index, index - delta) - - -- After shifting we should recalc node poses - if is_shift then - -- We need to iterate from placed node to start or end grid, depends of shift side - local target_index = shift_policy == const.SHIFT.LEFT and self.first_index or self.last_index - for i = index + delta, target_index + delta, delta do - local move_node = self.nodes[i] - move_node.pos = self:get_pos(i, move_node.node, i - delta) - end - end - - -- Sync grid data - self:_update(is_instant) - - self.on_add_item:trigger(self:get_context(), node, index) - self.on_change_items:trigger(self:get_context(), index) -end - - ---- Remove the item from the grid. Note that gui node will be not deleted --- @tparam DynamicGrid self @{DynamicGrid} --- @tparam number index The grid node index to remove --- @tparam number|nil shift_policy How shift nodes, if required. Default: const.SHIFT.RIGHT --- @tparam boolean|nil is_instant If true, update node positions instantly --- @treturn node The deleted gui node from grid -function DynamicGrid.remove(self, index, shift_policy, is_instant) - shift_policy = shift_policy or const.SHIFT.RIGHT - local delta = shift_policy -- -1 or 1 or 0 - - assert(self.nodes[index], "No grid item at given index " .. index) - - -- Just set nil for delete node data - local removed_node = self.nodes[index].node - self.nodes[index] = nil - - -- After delete node, we should shift nodes and recalc their poses, depends from is_shift_left - if shift_policy ~= const.SHIFT.NO_SHIFT then - local target_index = shift_policy == const.SHIFT.LEFT and self.first_index or self.last_index - for i = index, target_index, delta do - self.nodes[i] = self.nodes[i + delta] - if self.nodes[i] then - self.nodes[i].pos = self:get_pos(i, self.nodes[i].node, i - delta) - end - end - end - - -- Sync grid data - self:_update(is_instant) - - self.on_remove_item:trigger(self:get_context(), index) - self.on_change_items:trigger(self:get_context(), index) - - return removed_node -end - - ---- Return grid content size --- @tparam DynamicGrid self @{DynamicGrid} --- @tparam vector3 border --- @treturn vector3 The grid content size -function DynamicGrid.get_size(self, border) - border = border or self.border - return vmath.vector3( - border.z - border.x, - border.y - border.w, - 0) -end - - ---- Return DynamicGrid offset, where DynamicGrid content starts. --- @tparam DynamicGrid self @{DynamicGrid} The DynamicGrid instance --- @treturn vector3 The DynamicGrid offset -function DynamicGrid.get_offset(self) - local size = self:get_size() - local borders = self:get_borders() - local offset = vmath.vector3( - (borders.z + borders.x)/2 + size.x * self.pivot.x, - (borders.y + borders.w)/2 + size.y * self.pivot.y, - 0) - - return offset -end - - ---- Return grid content borders --- @tparam DynamicGrid self @{DynamicGrid} --- @treturn vector3 The grid content borders -function DynamicGrid.get_borders(self) - return self.border -end - - ---- Return grid index by node --- @tparam DynamicGrid self @{DynamicGrid} --- @tparam node node The gui node in the grid --- @treturn number The node index -function DynamicGrid.get_index_by_node(self, node) - for index, node_info in pairs(self.nodes) do - if node == node_info.node then - return index - end - end - - return nil -end - - ---- Return array of all node positions --- @tparam DynamicGrid self @{DynamicGrid} --- @treturn vector3[] All grid node positions -function DynamicGrid.get_all_pos(self) - local result = {} - for i, node in pairs(self.nodes) do - table.insert(result, gui.get_position(node.node)) - end - - return result -end - - ---- Change set position function for grid nodes. It will call on --- update poses on grid elements. Default: gui.set_position --- @tparam DynamicGrid self @{DynamicGrid} --- @tparam function callback Function on node set position --- @treturn druid.dynamic_grid Current grid instance -function DynamicGrid.set_position_function(self, callback) - self._set_position_function = callback or gui.set_position - return self -end - - ---- Clear grid nodes array. GUI nodes will be not deleted! --- If you want to delete GUI nodes, use dynamic_grid.nodes array before grid:clear --- @tparam DynamicGrid self @{DynamicGrid} --- @treturn druid.dynamic_grid Current grid instance -function DynamicGrid.clear(self) - self.nodes = {} - self:_update() - - self.on_clear:trigger(self:get_context()) - - return self -end - - -function DynamicGrid._add_node(self, node, index, origin_index) - self.nodes[index] = { - node = node, - pos = self:get_pos(index, node, origin_index), - size = helper.get_scaled_size(node), - pivot = const.PIVOTS[gui.get_pivot(node)] - } - - -- Add new item instantly in new pos - gui.set_parent(node, self.parent) - gui.set_position(node, self.nodes[index].pos) -end - - ---- Update grid inner state --- @tparam DynamicGrid self @{DynamicGrid} --- @tparam boolean|nil is_instant If true, node position update instantly, otherwise with set_position_function callback --- @local -function DynamicGrid._update(self, is_instant) - self:_update_indexes() - self:_update_borders() - self:_update_pos(is_instant) -end - - ---- Update first and last indexes of grid nodes --- @tparam DynamicGrid self @{DynamicGrid} --- @local -function DynamicGrid._update_indexes(self) - self.first_index = nil - self.last_index = nil - for index in pairs(self.nodes) do - self.first_index = self.first_index or index - self.last_index = self.last_index or index - - self.first_index = math.min(self.first_index, index) - self.last_index = math.max(self.last_index, index) - end -end - - ---- Update grid content borders, recalculate min and max values --- @tparam DynamicGrid self @{DynamicGrid} --- @local -function DynamicGrid._update_borders(self) - if not self.first_index then - self.border = vmath.vector4(0) - return - end - - self.border = vmath.vector4(math.huge, -math.huge, -math.huge, math.huge) - - for index, node in pairs(self.nodes) do - local pos = node.pos - local size = node.size - local pivot = node.pivot - - local left = pos.x - size.x/2 - (size.x * pivot.x) - local right = pos.x + size.x/2 - (size.x * pivot.x) - local top = pos.y + size.y/2 - (size.y * pivot.y) - local bottom = pos.y - size.y/2 - (size.y * pivot.y) - - self.border.x = math.min(self.border.x, left) - self.border.y = math.max(self.border.y, top) - self.border.z = math.max(self.border.z, right) - self.border.w = math.min(self.border.w, bottom) - end -end - - ---- Update grid nodes position --- @tparam DynamicGrid self @{DynamicGrid} --- @tparam boolean|nil is_instant If true, node position update instantly, otherwise with set_position_function callback --- @local -function DynamicGrid._update_pos(self, is_instant) - for index, node in pairs(self.nodes) do - if is_instant then - gui.set_position(node.node, node.pos) - else - self._set_position_function(node.node, node.pos) - end - end - - self.on_update_positions:trigger(self:get_context()) -end - - -function DynamicGrid._get_next_node_pos(self, origin_node_index, new_node, place_side) - local node = self.nodes[origin_node_index] - - local new_node_size = helper.get_scaled_size(new_node) - local new_pivot = const.PIVOTS[gui.get_pivot(new_node)] - - local dist_x = (node.size.x/2 + new_node_size.x/2) * place_side.x - local dist_y = (node.size.y/2 + new_node_size.y/2) * place_side.y - local node_center_x = node.pos.x - node.size.x * node.pivot.x - local node_center_y = node.pos.y - node.size.y * node.pivot.y - - return vmath.vector3( - node_center_x + dist_x + new_node_size.x * new_pivot.x, - node_center_y - dist_y + new_node_size.y * new_pivot.y, - 0 - ) -end - - ---- Return side vector to correct node shifting -function DynamicGrid._get_side_vector(self, side, is_forward) - if side == const.SIDE.X then - return is_forward and SIDE_VECTORS.RIGHT or SIDE_VECTORS.LEFT - end - - if side == const.SIDE.Y then - return is_forward and SIDE_VECTORS.BOT or SIDE_VECTORS.TOP - end -end - - -return DynamicGrid diff --git a/druid/extended/hotkey.lua b/druid/extended/hotkey.lua index 41507bd..58070cd 100644 --- a/druid/extended/hotkey.lua +++ b/druid/extended/hotkey.lua @@ -1,49 +1,44 @@ --- Copyright (c) 2021 Maksim Tuprikov . This code is licensed under MIT license - ---- Druid hotkey component --- --- Example Link --- @module Hotkey --- @within BaseComponent --- @alias druid.hotkey - ---- On hotkey released callback(self, argument) --- @tfield DruidEvent on_hotkey_pressed @{DruidEvent} - ---- On hotkey released callback(self, argument) --- @tfield DruidEvent on_hotkey_released @{DruidEvent} - ---- Visual node --- @tfield node node - ---- Button trigger node --- @tfield node|nil click_node - ---- Button component from click_node --- @tfield Button button @{Button} - ---- - +local event = require("event.event") local helper = require("druid.helper") local component = require("druid.component") -local Event = require("druid.event") -local Hotkey = component.create("hotkey") +---@class druid.hotkey.style +---@field MODIFICATORS string[]|hash[] The list of action_id as hotkey modificators + +---Druid component to manage hotkeys and trigger callbacks when hotkeys are pressed. +--- +---### Setup +---Create hotkey component with druid: `hotkey = druid:new_hotkey(keys, callback, callback_argument)` +--- +---### Notes +---- Hotkey can be triggered by pressing a single key or a combination of keys +---- Hotkey supports modificator keys (e.g. Ctrl, Shift, Alt) +---- Hotkey can be triggered on key press, release or repeat +---- Hotkey can be added or removed at runtime +---- Hotkey can be enabled or disabled +---- Hotkey can be set to repeat on key hold +---@class druid.hotkey: druid.component +---@field on_hotkey_pressed event fun(self, context, callback_argument) The event triggered when a hotkey is pressed +---@field on_hotkey_released event fun(self, context, callback_argument) The event triggered when a hotkey is released +---@field style druid.hotkey.style The style of the hotkey component +---@field private _hotkeys table The list of hotkeys +---@field private _modificators table The list of modificators +---@field private _node node|nil The node to bind the hotkey to +local M = component.create("hotkey") ---- The @{Hotkey} constructor --- @tparam Hotkey self @{Hotkey} --- @tparam string[]|string keys The keys to be pressed for trigger callback. Should contains one key and any modificator keys --- @tparam function callback The callback function --- @tparam any|nil callback_argument The argument to pass into the callback function -function Hotkey.init(self, keys, callback, callback_argument) +---The Hotkey constructor +---@param keys string[]|string The keys to be pressed for trigger callback. Should contains one key and any modificator keys +---@param callback function The callback function +---@param callback_argument any|nil The argument to pass into the callback function +function M:init(keys, callback, callback_argument) self.druid = self:get_druid() self._hotkeys = {} self._modificators = {} - - self.on_hotkey_pressed = Event() - self.on_hotkey_released = Event(callback) + self._node = nil + self.on_hotkey_pressed = event.create() + self.on_hotkey_released = event.create(callback) if keys then self:add_hotkey(keys, callback_argument) @@ -51,27 +46,27 @@ function Hotkey.init(self, keys, callback, callback_argument) end ---- Component style params. --- You can override this component styles params in druid styles table --- or create your own style --- @table style --- @tfield string[] MODIFICATORS The list of action_id as hotkey modificators -function Hotkey.on_style_change(self, style) - self.style = {} - self.style.MODIFICATORS = style.MODIFICATORS or {} +---@private +---@param style druid.hotkey.style +function M:on_style_change(style) + self.style = { + MODIFICATORS = style.MODIFICATORS or {}, + } for index = 1, #style.MODIFICATORS do - self.style.MODIFICATORS[index] = hash(self.style.MODIFICATORS[index]) + local modificator = style.MODIFICATORS[index] + if type(modificator) == "string" then + self.style.MODIFICATORS[index] = hash(modificator) + end end end ---- Add hotkey for component callback --- @tparam Hotkey self @{Hotkey} --- @tparam string[]|hash[]|string|hash keys that have to be pressed before key pressed to activate --- @tparam any|nil callback_argument The argument to pass into the callback function --- @treturn Hotkey Current instance -function Hotkey.add_hotkey(self, keys, callback_argument) +---Add hotkey for component callback +---@param keys string[]|hash[]|string|hash that have to be pressed before key pressed to activate +---@param callback_argument any|nil The argument to pass into the callback function +---@return druid.hotkey self Current instance +function M:add_hotkey(keys, callback_argument) keys = keys or {} if type(keys) == "string" then keys = { keys } @@ -80,9 +75,10 @@ function Hotkey.add_hotkey(self, keys, callback_argument) local modificators = {} local key = nil + ---@cast keys string[] for index = 1, #keys do local key_hash = hash(keys[index]) - if helper.contains(self.style.MODIFICATORS, key_hash) then + if #keys > 1 and helper.contains(self.style.MODIFICATORS, key_hash) then table.insert(modificators, key_hash) else if not key then @@ -101,8 +97,9 @@ function Hotkey.add_hotkey(self, keys, callback_argument) }) -- Current hotkey status - for index = 1, #self.style.MODIFICATORS do - local modificator = hash(self.style.MODIFICATORS[index]) + local mods = self.style.MODIFICATORS ---@type string[] + for index = 1, #mods do + local modificator = hash(mods[index]) self._modificators[modificator] = self._modificators[modificator] or false end @@ -110,40 +107,60 @@ function Hotkey.add_hotkey(self, keys, callback_argument) end -function Hotkey.on_focus_gained(self) +function M:is_processing() + for index = 1, #self._hotkeys do + if self._hotkeys[index].is_processing then + return true + end + end + + return false +end + + +---@private +function M:on_focus_gained() for k, v in pairs(self._modificators) do self._modificators[k] = false end end -function Hotkey.on_input(self, action_id, action) - if not action_id or #self._hotkeys == 0 then +---@private +---@param action_id hash|nil The action id +---@param action action The action +---@return boolean is_consume True if the action is consumed +function M:on_input(action_id, action) + if not action_id then return false end - if self._modificators[action_id] ~= nil then - if action.pressed then - self._modificators[action_id] = true - end - if action.released then - self._modificators[action_id] = false - end + if self._node and not gui.is_enabled(self._node, true) then + return false + end + + if self._modificators[action_id] ~= nil and action.pressed then + self._modificators[action_id] = true end for index = 1, #self._hotkeys do local hotkey = self._hotkeys[index] - if action_id == hotkey.key then + local is_relative_key = helper.contains(self.style.MODIFICATORS, action_id) or action_id == hotkey.key + + if is_relative_key and (action_id == hotkey.key or not hotkey.key) then local is_modificator_ok = true + local is_consume = not not (hotkey.key) -- Check only required modificators pressed - for i = 1, #self.style.MODIFICATORS do - local mod = self.style.MODIFICATORS[i] - if helper.contains(hotkey.modificators, mod) and self._modificators[mod] == false then - is_modificator_ok = false - end - if not helper.contains(hotkey.modificators, mod) and self._modificators[mod] == true then - is_modificator_ok = false + if hotkey.key and #hotkey.modificators > 0 then + for i = 1, #self.style.MODIFICATORS do + local mod = self.style.MODIFICATORS[i] + if helper.contains(hotkey.modificators, mod) and self._modificators[mod] == false then + is_modificator_ok = false + end + if not helper.contains(hotkey.modificators, mod) and self._modificators[mod] == true then + is_modificator_ok = false + end end end @@ -153,28 +170,41 @@ function Hotkey.on_input(self, action_id, action) end if not action.pressed and self._is_process_repeated and action.repeated and is_modificator_ok and hotkey.is_processing then self.on_hotkey_released:trigger(self:get_context(), hotkey.callback_argument) - return true + return is_consume end if action.released and is_modificator_ok and hotkey.is_processing then - hotkey.is_processing = false self.on_hotkey_released:trigger(self:get_context(), hotkey.callback_argument) - return true + hotkey.is_processing = false + return is_consume end end end + if self._modificators[action_id] ~= nil and action.released then + self._modificators[action_id] = false + end + return false end ---- If true, the callback will be triggered on action.repeated --- @tparam Hotkey self @{Hotkey} --- @tparam bool is_enabled_repeated The flag value --- @treturn Hotkey -function Hotkey.set_repeat(self, is_enabled_repeated) +---If true, the callback will be triggered on action.repeated +---@param is_enabled_repeated boolean The flag value +---@return druid.hotkey self Current instance +function M:set_repeat(is_enabled_repeated) self._is_process_repeated = is_enabled_repeated return self end -return Hotkey +---If node is provided, the hotkey can be disabled, if the node is disabled +---@param node node|nil The node to bind the hotkey to. Nil to unbind the node +---@return druid.hotkey self Current instance +function M:bind_node(node) + self._node = node + + return self +end + + +return M diff --git a/druid/extended/input.lua b/druid/extended/input.lua index 04419ae..b5108dc 100755 --- a/druid/extended/input.lua +++ b/druid/extended/input.lua @@ -1,95 +1,43 @@ --- Copyright (c) 2021 Maksim Tuprikov . This code is licensed under MIT license - ---- Druid input text component. --- Carry on user text input --- --- Example Link --- @author Part of code from Britzl gooey input component --- @module Input --- @within BaseComponent --- @alias druid.input - ---- On input field select callback(self, input_instance) --- @tfield DruidEvent on_input_select @{DruidEvent} - ---- On input field unselect callback(self, input_text, input_instance) --- @tfield DruidEvent on_input_unselect @{DruidEvent} - ---- On input field text change callback(self, input_text) --- @tfield DruidEvent on_input_text @{DruidEvent} - ---- On input field text change to empty string callback(self, input_text) --- @tfield DruidEvent on_input_empty @{DruidEvent} - ---- On input field text change to max length string callback(self, input_text) --- @tfield DruidEvent on_input_full @{DruidEvent} - ---- On trying user input with not allowed character callback(self, params, input_text) --- @tfield DruidEvent on_input_wrong @{DruidEvent} - ---- On cursor position change callback(self, cursor_index, start_index, end_index) --- @tfield DruidEvent on_select_cursor_change @{DruidEvent} - ---- The cursor index. The index of letter cursor after. Leftmost cursor - 0 --- @tfield number cursor_index - ---- The selection start index. The index of letter cursor after. Leftmost selection - 0 --- @tfield number start_index - ---- Theselection end index. The index of letter cursor before. Rightmost selection - #text --- @tfield number end_index - ---- Text component --- @tfield Text text @{Text} - ---- Current input value --- @tfield string value - ---- Previous input value --- @tfield string previous_value - ---- Current input value with marked text --- @tfield string current_value - ---- Marked text for input field. Info: https://defold.com/manuals/input-key-and-text/#marked-text --- @tfield string marked_value - ---- Text width --- @tfield number text_width - ---- Marked text width --- @tfield number marked_text_width - ---- Button component --- @tfield Button button @{Button} - ---- Is current input selected now --- @tfield boolean is_selected - ---- Is current input is empty now --- @tfield boolean is_empty - ---- Max length for input text --- @tfield number|nil max_length - ---- Pattern matching for user input --- @tfield string|nil allowerd_characters - ---- Gui keyboard type for input field --- @tfield number keyboard_type - ---- - -local Event = require("druid.event") +local event = require("event.event") local const = require("druid.const") local helper = require("druid.helper") local component = require("druid.component") local utf8_lua = require("druid.system.utf8") local utf8 = utf8 or utf8_lua -local Input = component.create("input") +---@class druid.input.style +---@field MASK_DEFAULT_CHAR string Default character mask for password input +---@field IS_LONGTAP_ERASE boolean Is long tap will erase current input data +---@field IS_UNSELECT_ON_RESELECT boolean If true, call unselect on select selected input +---@field on_select fun(self: druid.input, button_node: node) Callback on input field selecting +---@field on_unselect fun(self: druid.input, button_node: node) Callback on input field unselecting +---@field on_input_wrong fun(self: druid.input, button_node: node) Callback on wrong user input -Input.ALLOWED_ACTIONS = { +---Basic Druid text input component. Handles user text input via component with button and text. +--- +---### Setup +---Create input component with druid: `input = druid:new_input(button_node_name, text_node_name, keyboard_type)` +--- +---### Notes +---- Input component handles user text input. Input contains button and text components +---- Button needed for selecting/unselecting input field +---- Click outside of button to unselect input field +---- On focus lost (game minimized) input field will be unselected +---- You can setup max length of the text +---- You can setup allowed characters. On add not allowed characters `on_input_wrong` will be called +---@class druid.input: druid.component +---@field on_input_select event fun(self: druid.input, input: druid.input) The event triggered when the input field is selected +---@field on_input_unselect event fun(self: druid.input, text: string, input: druid.input) The event triggered when the input field is unselected +---@field on_input_text event fun(self: druid.input) The event triggered when the input field is changed +---@field on_input_empty event fun(self: druid.input) The event triggered when the input field is empty +---@field on_input_full event fun(self: druid.input) The event triggered when the input field is full +---@field on_input_wrong event fun(self: druid.input) The event triggered when the input field is wrong +---@field on_select_cursor_change event fun(self: druid.input, cursor_index: number, start_index: number, end_index: number) The event triggered when the cursor index is changed +---@field style druid.input.style The style of the input component +local M = component.create("input") + +---@private +M.ALLOWED_ACTIONS = { [const.ACTION_TOUCH] = true, [const.ACTION_TEXT] = true, [const.ACTION_MARKED_TEXT] = true, @@ -98,10 +46,10 @@ Input.ALLOWED_ACTIONS = { [const.ACTION_ESC] = true, } ---- Mask text by replacing every character with a mask character --- @tparam string text --- @tparam string mask --- @treturn string Masked text +---Mask text by replacing every character with a mask character +---@param text string +---@param mask string +---@return string Masked text local function mask_text(text, mask) mask = mask or "*" local masked_text = "" @@ -122,35 +70,10 @@ local function clear_and_select(self) end ---- Component style params. --- You can override this component styles params in druid styles table --- or create your own style --- @table style --- @tfield boolean IS_LONGTAP_ERASE Is long tap will erase current input data. Default: false --- @tfield string MASK_DEFAULT_CHAR Default character mask for password input. Default: *] --- @tfield boolean IS_UNSELECT_ON_RESELECT If true, call unselect on select selected input. Default: false --- @tfield function on_select (self, button_node) Callback on input field selecting --- @tfield function on_unselect (self, button_node) Callback on input field unselecting --- @tfield function on_input_wrong (self, button_node) Callback on wrong user input -function Input.on_style_change(self, style) - self.style = {} - - self.style.IS_LONGTAP_ERASE = style.IS_LONGTAP_ERASE or false - self.style.MASK_DEFAULT_CHAR = style.MASK_DEFAULT_CHAR or "*" - self.style.IS_UNSELECT_ON_RESELECT = style.IS_UNSELECT_ON_RESELECT or false - - self.style.on_select = style.on_select or function(_, button_node) end - self.style.on_unselect = style.on_unselect or function(_, button_node) end - self.style.on_input_wrong = style.on_input_wrong or function(_, button_node) end -end - - ---- The @{Input} constructor --- @tparam Input self @{Input} --- @tparam node click_node Node to enabled input component --- @tparam node|Text text_node Text node what will be changed on user input. You can pass text component instead of text node name @{Text} --- @tparam number|nil keyboard_type Gui keyboard type for input field -function Input.init(self, click_node, text_node, keyboard_type) +---@param click_node node Node to enabled input component +---@param text_node node|druid.text Text node what will be changed on user input. You can pass text component instead of text node name Text +---@param keyboard_type constant|nil Gui keyboard type for input field +function M:init(click_node, text_node, keyboard_type) self.druid = self:get_druid() if type(text_node) == "table" then @@ -191,18 +114,37 @@ function Input.init(self, click_node, text_node, keyboard_type) self.button:set_web_user_interaction(true) end - self.on_input_select = Event() - self.on_input_unselect = Event() - self.on_input_text = Event() - self.on_input_empty = Event() - self.on_input_full = Event() - self.on_input_wrong = Event() - self.on_select_cursor_change = Event() + self.on_input_select = event.create() + self.on_input_unselect = event.create() + self.on_input_text = event.create() + self.on_input_empty = event.create() + self.on_input_full = event.create() + self.on_input_wrong = event.create() + self.on_select_cursor_change = event.create() end -function Input.on_input(self, action_id, action) - if not (action_id == nil or Input.ALLOWED_ACTIONS[action_id]) then +---@private +---@param style druid.input.style +function M:on_style_change(style) + self.style = { + IS_LONGTAP_ERASE = style.IS_LONGTAP_ERASE or false, + MASK_DEFAULT_CHAR = style.MASK_DEFAULT_CHAR or "*", + IS_UNSELECT_ON_RESELECT = style.IS_UNSELECT_ON_RESELECT or false, + + on_select = style.on_select or function(_, button_node) end, + on_unselect = style.on_unselect or function(_, button_node) end, + on_input_wrong = style.on_input_wrong or function(_, button_node) end, + } +end + + +---@private +---@param action_id hash|nil The action id +---@param action action The action +---@return boolean is_consume True if the action is consumed +function M:on_input(action_id, action) + if not (action_id == nil or M.ALLOWED_ACTIONS[action_id]) then return false end @@ -299,12 +241,13 @@ function Input.on_input(self, action_id, action) end -function Input.on_focus_lost(self) +---@private +function M:on_focus_lost() self:unselect() end -function Input.get_text_selected(self) +function M:get_text_selected() if self.start_index == self.end_index then return self.value end @@ -312,11 +255,11 @@ function Input.get_text_selected(self) return utf8.sub(self.value, self.start_index + 1, self.end_index) end ---- Replace selected text with new text --- @tparam Input self @{Input} --- @tparam string text The text to replace selected text --- @treturn string New input text -function Input.get_text_selected_replaced(self, text) + +---Replace selected text with new text +---@param text string The text to replace selected text +---@return string new_text New input text +function M:get_text_selected_replaced(text) local left_part = utf8.sub(self.value, 1, self.start_index) local right_part = utf8.sub(self.value, self.end_index + 1, utf8.len(self.value)) local result = left_part .. text .. right_part @@ -330,10 +273,9 @@ function Input.get_text_selected_replaced(self, text) end ---- Set text for input field --- @tparam Input self @{Input} --- @tparam string input_text The string to apply for input field -function Input.set_text(self, input_text) +---Set text for input field +---@param input_text string? The string to apply for input field, if nil - will be set to empty string +function M:set_text(input_text) input_text = tostring(input_text or "") -- Case when update with marked text @@ -361,7 +303,7 @@ function Input.set_text(self, input_text) self.is_empty = #value == 0 and #marked_value == 0 local final_text = value .. marked_value - self.text:set_to(final_text) + self.text:set_text(final_text) -- measure it self.text_width = self.text:get_text_size(value) @@ -379,9 +321,8 @@ function Input.set_text(self, input_text) end ---- Select input field. It will show the keyboard and trigger on_select events --- @tparam Input self @{Input} -function Input.select(self) +---Select input field. It will show the keyboard and trigger on_select events +function M:select() gui.reset_keyboard() self.marked_value = "" if not self.is_selected then @@ -404,9 +345,8 @@ function Input.select(self) end ---- Remove selection from input. It will hide the keyboard and trigger on_unselect events --- @tparam Input self @{Input} -function Input.unselect(self) +---Remove selection from input. It will hide the keyboard and trigger on_unselect events +function M:unselect() gui.reset_keyboard() self.marked_value = "" self.value = self.current_value @@ -423,10 +363,9 @@ function Input.unselect(self) end ---- Return current input field text --- @tparam Input self @{Input} --- @treturn string The current input field text -function Input.get_text(self) +---Return current input field text +---@return string text The current input field text +function M:get_text() if self.marked_value ~= "" then return self.value .. self.marked_value end @@ -435,46 +374,44 @@ function Input.get_text(self) end ---- Set maximum length for input field. --- Pass nil to make input field unliminted (by default) --- @tparam Input self @{Input} --- @tparam number max_length Maximum length for input text field --- @treturn druid.input Current input instance -function Input.set_max_length(self, max_length) +---Set maximum length for input field. +---Pass nil to make input field unliminted (by default) +---@param max_length number Maximum length for input text field +---@return druid.input self Current input instance +function M:set_max_length(max_length) self.max_length = max_length return self end ---- Set allowed charaters for input field. --- See: https://defold.com/ref/stable/string/ --- ex: [%a%d] for alpha and numeric --- @tparam Input self @{Input} --- @tparam string characters Regulax exp. for validate user input --- @treturn druid.input Current input instance -function Input.set_allowed_characters(self, characters) +---Set allowed charaters for input field. +---See: https://defold.com/ref/stable/string/ +---ex: [%a%d] for alpha and numeric +---ex: [abcdef] to allow only these characters +---ex: [^%s] to allow only non-space characters +---@param characters string Regular expression for validate user input +---@return druid.input self Current input instance +function M:set_allowed_characters(characters) self.allowed_characters = characters return self end ---- Reset current input selection and return previous value --- @tparam Input self @{Input} --- @treturn druid.input Current input instance -function Input.reset_changes(self) +---Reset current input selection and return previous value +---@return druid.input self Current input instance +function M:reset_changes() self:set_text(self.previous_value) self:unselect() return self end ---- Set cursor position in input field --- @tparam Input self @{Input} --- @tparam number|nil cursor_index Cursor index for cursor position, if nil - will be set to the end of the text --- @tparam number|nil start_index Start index for cursor position, if nil - will be set to the end of the text --- @tparam number|nil end_index End index for cursor position, if nil - will be set to the start_index --- @treturn druid.input Current input instance -function Input.select_cursor(self, cursor_index, start_index, end_index) +---Set cursor position in input field +---@param cursor_index number|nil Cursor index for cursor position, if nil - will be set to the end of the text +---@param start_index number|nil Start index for cursor position, if nil - will be set to the end of the text +---@param end_index number|nil End index for cursor position, if nil - will be set to the start_index +---@return druid.input self Current input instance +function M:select_cursor(cursor_index, start_index, end_index) local len = utf8.len(self.value) self.cursor_index = cursor_index or len @@ -491,12 +428,12 @@ function Input.select_cursor(self, cursor_index, start_index, end_index) end ---- Change cursor position by delta --- @tparam Input self @{Input} --- @tparam number delta side for cursor position, -1 for left, 1 for right --- @tparam boolean is_add_to_selection (Shift key) --- @tparam boolean is_move_to_end (Ctrl key) -function Input.move_selection(self, delta, is_add_to_selection, is_move_to_end) +---Change cursor position by delta +---@param delta number side for cursor position, -1 for left, 1 for right +---@param is_add_to_selection boolean (Shift key) +---@param is_move_to_end boolean (Ctrl key) +---@return druid.input self Current input instance +function M:move_selection(delta, is_add_to_selection, is_move_to_end) local len = utf8.len(self.value) local cursor_index = self.cursor_index local start_index, end_index -- if nil, the selection will be 0 at cursor position @@ -551,7 +488,9 @@ function Input.move_selection(self, delta, is_add_to_selection, is_move_to_end) end self:select_cursor(cursor_index, start_index, end_index) + + return self end -return Input +return M diff --git a/druid/extended/lang_text.lua b/druid/extended/lang_text.lua index 6d38f83..75099d9 100755 --- a/druid/extended/lang_text.lua +++ b/druid/extended/lang_text.lua @@ -1,52 +1,36 @@ --- Copyright (c) 2021 Maksim Tuprikov . This code is licensed under MIT license - ---- Component to wrap over GUI Text nodes with localization helpers --- --- # Overview # --- --- • The initialization of druid.set_text_function is required to enable localization --- using the localization ID. --- --- • The LangText component supports up to 7 string format parameters. --- This limitation exists due to certain issues with using ... arguments. --- --- # Notes # --- --- Example Link --- @module LangText --- @within BaseComponent --- @alias druid.lang_text - ---- On change text callback --- @tfield DruidEvent on_change @{DruidEvent} - ---- The text component --- @tfield Text text @{Text} - ---- Text node --- @tfield node node - ---- - -local Event = require("druid.event") -local settings = require("druid.system.settings") +local event = require("event.event") local component = require("druid.component") +local settings = require("druid.system.settings") -local LangText = component.create("lang_text") +---The component used for displaying localized text, can automatically update text when locale is changed. +---It wraps the Text component to handle localization using druid's get_text_function to set text by its id. +--- +---### Setup +---Create lang text component with druid: `text = druid:new_lang_text(node_name, locale_id)` +--- +---### Notes +---- Component automatically updates text when locale is changed +---- Uses druid's get_text_function to get localized text by id +---- Supports string formatting with additional parameters +---@class druid.lang_text: druid.component +---@field text druid.text The text component +---@field node node The node of the text component +---@field on_change event fun(self: druid.lang_text) The event triggered when the text is changed +---@field private last_locale_args table The last locale arguments +---@field private last_locale string The last locale +local M = component.create("lang_text") ---- The @{LangText} constructor --- @tparam LangText self @{LangText} --- @tparam string|node node The node_id or gui.get_node(node_id) --- @tparam string|nil locale_id Default locale id or text from node as default --- @tparam string|nil adjust_type Adjust type for text. By default is DOWNSCALE. Look const.TEXT_ADJUST for reference -function LangText.init(self, node, locale_id, adjust_type) +---@param node string|node The node_id or gui.get_node(node_id) +---@param locale_id string|nil Default locale id or text from node as default. If not provided, will use text from the node +---@param adjust_type string|nil Adjust type for text. By default is DOWNSCALE. Look const.TEXT_ADJUST for reference +function M:init(node, locale_id, adjust_type) self.druid = self:get_druid() self.text = self.druid:new_text(node, locale_id, adjust_type) self.node = self.text.node self.last_locale_args = {} - self.on_change = Event() + self.on_change = event.create() self:translate(locale_id or gui.get_text(self.node)) self.text.on_set_text:subscribe(self.on_change.trigger, self.on_change) @@ -55,61 +39,56 @@ function LangText.init(self, node, locale_id, adjust_type) end -function LangText.on_language_change(self) +---@private +function M:on_language_change() if self.last_locale then self:translate(self.last_locale, unpack(self.last_locale_args)) end end ---- Setup raw text to lang_text component --- @tparam LangText self @{LangText} --- @tparam string text Text for text node --- @treturn LangText Current instance -function LangText.set_to(self, text) - self.last_locale = false - self.text:set_to(text) +---Setup raw text to lang_text component. This will clear any locale settings. +---@param text string Text for text node +---@return druid.lang_text self Current instance +function M:set_to(text) + self.last_locale = nil + self.text:set_text(text) self.on_change:trigger() return self end ---- Translate the text by locale_id --- @tparam LangText self @{LangText} --- @tparam string locale_id Locale id --- @tparam string|nil a Optional param to string.format --- @tparam string|nil b Optional param to string.format --- @tparam string|nil c Optional param to string.format --- @tparam string|nil d Optional param to string.format --- @tparam string|nil e Optional param to string.format --- @tparam string|nil f Optional param to string.format --- @tparam string|nil g Optional param to string.format --- @treturn LangText Current instance -function LangText.translate(self, locale_id, a, b, c, d, e, f, g) - self.last_locale_args = { a, b, c, d, e, f, g } +---Setup raw text to lang_text component. This will clear any locale settings. +---@param text string Text for text node +---@return druid.lang_text self Current instance +function M:set_text(text) + return self:set_to(text) +end + + +---Translate the text by locale_id. The text will be automatically updated when locale changes. +---@param locale_id string Locale id to get text from +---@param ... string Optional params for string.format +---@return druid.lang_text self Current instance +function M:translate(locale_id, ...) + self.last_locale_args = { ... } self.last_locale = locale_id or self.last_locale - self.text:set_to(settings.get_text(self.last_locale, a, b, c, d, e, f, g) or "") + self.text:set_text(settings.get_text(self.last_locale, ...) or "") return self end ---- Format string with new text params on localized text --- @tparam LangText self @{LangText} --- @tparam string|nil a Optional param to string.format --- @tparam string|nil b Optional param to string.format --- @tparam string|nil c Optional param to string.format --- @tparam string|nil d Optional param to string.format --- @tparam string|nil e Optional param to string.format --- @tparam string|nil f Optional param to string.format --- @tparam string|nil g Optional param to string.format --- @treturn LangText Current instance -function LangText.format(self, a, b, c, d, e, f, g) - self.last_locale_args = { a, b, c, d, e, f, g } - self.text:set_to(settings.get_text(self.last_locale, a, b, c, d, e, f, g) or "") +---Format string with new text params on localized text. Keeps the current locale but updates the format parameters. +---@param ... string Optional params for string.format +---@return druid.lang_text self Current instance +function M:format(...) + self.last_locale_args = { ... } + self.text:set_text(settings.get_text(self.last_locale, ...) or "") return self end -return LangText + +return M diff --git a/druid/extended/layout.lua b/druid/extended/layout.lua index dea876b..5a8c40b 100644 --- a/druid/extended/layout.lua +++ b/druid/extended/layout.lua @@ -1,56 +1,78 @@ --- Copyright (c) 2024 Maksim Tuprikov . This code is licensed under MIT license - ---- Layout management on node --- --- Example Link --- @module Layout --- @within BaseComponent --- @alias druid.layout - ---- Layout node --- @tfield node node - ---- Current layout mode --- @tfield string mode - ---- - +local event = require("event.event") local helper = require("druid.helper") local component = require("druid.component") --- @class druid.layout.row_data --- @tfield width number --- @tfield height number --- @tfield count number +---@alias druid.layout.type "horizontal"|"vertical"|"horizontal_wrap" --- @class druid.layout.rows_data --- @tfield total_width number --- @tfield total_height number --- @tfield nodes_width table --- @tfield nodes_height table --- @tfield rows druid.layout.row_data[]> +---@class event.on_size_changed: event +---@field subscribe fun(_, callback: fun(new_size: vector3), context: any|nil) --- @class druid.layout: druid.base_component +---@class druid.layout.row_data +---@field width number +---@field height number +---@field count number + +---@class druid.layout.rows_data +---@field total_width number +---@field total_height number +---@field nodes_width table +---@field nodes_height table +---@field rows druid.layout.row_data[]> + +---Druid component to manage the layout of nodes, placing them inside the node size with respect to the size and pivot of each node. +--- +---### Setup +---Create layout component with druid: `layout = druid:new_layout(node, layout_type)` +--- +---### Notes +---- Layout can be horizontal, vertical or horizontal with wrapping +---- Layout can resize parent node to fit content +---- Layout can justify content +---- Layout supports margins and padding +---- Layout automatically updates when nodes are added or removed +---- Layout can be manually updated by calling set_dirty() +---@class druid.layout: druid.component +---@field node node The node to manage the layout of +---@field rows_data druid.layout.rows_data Last calculated rows data +---@field is_dirty boolean True if layout needs to be updated +---@field entities node[] The entities to manage the layout of +---@field margin {x: number, y: number} The margin of the layout +---@field padding vector4 The padding of the layout +---@field type string The type of the layout +---@field is_resize_width boolean True if the layout should resize the width of the node +---@field is_resize_height boolean True if the layout should resize the height of the node +---@field is_justify boolean True if the layout should justify the nodes +---@field on_size_changed event.on_size_changed fun(self: druid.layout, size: vector3) The event triggered when the size of the layout is changed local M = component.create("layout") --- The @{Layout} constructor --- @tparam Layout self @{Layout} --- @tparam node node Gui node --- @tparam string layout_type The layout mode (from const.LAYOUT_MODE) --- @tparam function|nil on_size_changed_callback The callback on window resize -function M.init(self, node, layout_type) - self.node = self:get_node(node) + +---@param node_or_node_id node|string The node to manage the layout of +---@param layout_type druid.layout.type The type of layout (horizontal, vertical, horizontal_wrap) +function M:init(node_or_node_id, layout_type) + self.node = self:get_node(node_or_node_id) self.is_dirty = true self.entities = {} - self.margin = { x = 0, y = 0 } + self.size = gui.get_size(self.node) + self.padding = gui.get_slice9(self.node) + -- Margin X is a Slice9 R Value + -- Margin Y is a Slice9 B Value + self.margin = { x = self.padding.z, y = self.padding.w } + -- Padding X is a Slice9 L Value + -- Padding Y is a Slice9 T Value + self.padding.z = self.padding.x + self.padding.w = self.padding.y + self.type = layout_type or "horizontal" self.is_resize_width = false self.is_resize_height = false self.is_justify = false + + self.on_size_changed = event.create() --[[@as event.on_size_changed]] end + function M:update() if not self.is_dirty then return @@ -60,11 +82,39 @@ function M:update() end --- @tparam Layout self @{Layout} --- @tparam number|nil margin_x --- @tparam number|nil margin_y --- @treturn druid.layout @{Layout} -function M.set_margin(self, margin_x, margin_y) +---@return node[] entities The entities to manage the layout of +function M:get_entities() + return self.entities +end + + +---@return number count The count of entities in layout +function M:get_entities_count() + return #self.entities +end + + +---@param node node The node to set the index of +---@param index number The index to set the node to +---@return druid.layout self for chaining +function M:set_node_index(node, index) + for i = 1, #self.entities do + if self.entities[i] == node then + table.remove(self.entities, i) + table.insert(self.entities, index, node) + break + end + end + + return self +end + + +---Set the margin of the layout +---@param margin_x number|nil The margin x +---@param margin_y number|nil The margin y +---@return druid.layout self Current layout instance +function M:set_margin(margin_x, margin_y) self.margin.x = margin_x or self.margin.x self.margin.y = margin_y or self.margin.y self.is_dirty = true @@ -73,30 +123,33 @@ function M.set_margin(self, margin_x, margin_y) end --- @tparam Layout self @{Layout} --- @tparam vector4 padding The vector4 with padding values, where x - left, y - top, z - right, w - bottom --- @treturn druid.layout @{Layout} -function M.set_padding(self, padding) - self.padding = padding +---@param padding_x number|nil The padding x +---@param padding_y number|nil The padding y +---@param padding_z number|nil The padding z +---@param padding_w number|nil The padding w +---@return druid.layout self Current layout instance +function M:set_padding(padding_x, padding_y, padding_z, padding_w) + self.padding.x = padding_x or self.padding.x + self.padding.y = padding_y or self.padding.y + self.padding.z = padding_z or self.padding.z + self.padding.w = padding_w or self.padding.w self.is_dirty = true return self end --- @tparam Layout self @{Layout} --- @treturn druid.layout @{Layout} -function M.set_dirty(self) +---@return druid.layout self Current layout instance +function M:set_dirty() self.is_dirty = true return self end --- @tparam Layout self @{Layout} --- @tparam boolean is_justify --- @treturn druid.layout @{Layout} -function M.set_justify(self, is_justify) +---@param is_justify boolean +---@return druid.layout self Current layout instance +function M:set_justify(is_justify) self.is_justify = is_justify self.is_dirty = true @@ -104,22 +157,20 @@ function M.set_justify(self, is_justify) end --- @tparam Layout self @{Layout} --- @tparam string type The layout type: "horizontal", "vertical", "horizontal_wrap" --- @treturn druid.layout @{Layout} -function M.set_type(self, type) - self.type = type +---@param layout_type druid.layout.type +---@return druid.layout self Current layout instance +function M:set_type(layout_type) + self.type = layout_type self.is_dirty = true return self end --- @tparam Layout self @{Layout} --- @tparam boolean is_hug_width --- @tparam boolean is_hug_height --- @treturn druid.layout @{Layout} -function M.set_hug_content(self, is_hug_width, is_hug_height) +---@param is_hug_width boolean +---@param is_hug_height boolean +---@return druid.layout self Current layout instance +function M:set_hug_content(is_hug_width, is_hug_height) self.is_resize_width = is_hug_width or false self.is_resize_height = is_hug_height or false self.is_dirty = true @@ -128,33 +179,63 @@ function M.set_hug_content(self, is_hug_width, is_hug_height) end --- @tparam Layout self @{Layout} --- @tparam string|node node_or_node_id --- @treturn druid.layout @{Layout} -function M.add(self, node_or_node_id) +---Add node to layout +---@param node_or_node_id node|string node_or_node_id +---@return druid.layout self Current layout instance +function M:add(node_or_node_id) -- Acquire node from entity or by id local node = node_or_node_id if type(node_or_node_id) == "table" then assert(node_or_node_id.node, "The entity should have a node") node = node_or_node_id.node else - -- @cast node_or_node_id string|node + ---@cast node_or_node_id string|node node = self:get_node(node_or_node_id) end - -- @cast node node + ---@cast node node table.insert(self.entities, node) gui.set_parent(node, self.node) - self.is_dirty = true return self end --- @tparam Layout self @{Layout} --- @treturn druid.layout @{Layout} -function M.refresh_layout(self) +---Remove node from layout +---@param node_or_node_id node|string node_or_node_id +---@return druid.layout self for chaining +function M:remove(node_or_node_id) + local node = type(node_or_node_id) == "table" and node_or_node_id.node or self:get_node(node_or_node_id) + + for index = #self.entities, 1, -1 do + if self.entities[index] == node then + table.remove(self.entities, index) + self.is_dirty = true + break + end + end + + return self +end + + +---@return vector3 +function M:get_size() + return self.size +end + + +---@return number, number +function M:get_content_size() + local width = self.size.x - self.padding.x - self.padding.z + local height = self.size.y - self.padding.y - self.padding.w + return width, height +end + + +---@return druid.layout self Current layout instance +function M:refresh_layout() local layout_node = self.node local entities = self.entities @@ -168,6 +249,7 @@ function M.refresh_layout(self) local layout_pivot_offset = helper.get_pivot_offset(gui.get_pivot(layout_node)) -- {x: -0.5, y: -0.5} - is left bot, {x: 0.5, y: 0.5} - is right top local rows_data = self:calculate_rows_data() + self.rows_data = rows_data local rows = rows_data.rows local row_index = 1 local row = rows[row_index] @@ -191,7 +273,7 @@ function M.refresh_layout(self) local node_height = rows_data.nodes_height[node] local pivot_offset = helper.get_pivot_offset(gui.get_pivot(node)) - if node_width > 0 and node_height > 0 then + if node_width > 0 or node_height > 0 then -- Calculate position for current node local position_x, position_y @@ -231,14 +313,16 @@ function M.refresh_layout(self) local new_row_width = width * (0.5 - layout_pivot_offset.x) -- Compare with eps due the float loss and element flickering - if current_x + node_width - new_row_width > 0.0001 then + if current_x + node_width - new_row_width > 0.00001 then + current_y = current_y - row.height - margin.y + if row_index < #rows then row_index = row_index + 1 row = rows[row_index] end current_x = -row.width * (0.5 + layout_pivot_offset.x) - current_y = current_y - row.height - margin.y + if is_justify and row.count > 1 then current_x = -max_width * (0.5 + layout_pivot_offset.x) end @@ -281,6 +365,9 @@ function M.refresh_layout(self) size.y = rows_data.total_height + padding.y + padding.w end gui.set_size(layout_node, size) + self.size = size + + self.on_size_changed(size) end self.is_dirty = false @@ -289,9 +376,8 @@ function M.refresh_layout(self) end --- @tparam Layout self @{Layout} --- @treturn druid.layout @{Layout} -function M.clear_layout(self) +---@return druid.layout self Current layout instance +function M:clear_layout() for index = #self.entities, 1, -1 do self.entities[index] = nil end @@ -302,10 +388,10 @@ function M.clear_layout(self) end --- @tparam node node --- @treturn number, number --- @local -function M.get_node_size(node) +---@param node node +---@return number width The width of the node +---@return number height The height of the node +function M:get_node_size(node) if not gui.is_enabled(node, false) then return 0, 0 end @@ -323,11 +409,10 @@ function M.get_node_size(node) end --- @tparam Layout self @{Layout} --- Calculate rows data for layout. Contains total width, height and rows info (width, height, count of elements in row) --- @treturn druid.layout.rows_data --- @local -function M.calculate_rows_data(self) +---Calculate rows data for layout. Contains total width, height and rows info (width, height, count of elements in row) +---@local +---@return druid.layout.rows_data +function M:calculate_rows_data() local entities = self.entities local margin = self.margin local type = self.type @@ -353,12 +438,12 @@ function M.calculate_rows_data(self) -- Get node size if it's not calculated yet if not node_width or not node_height then - node_width, node_height = M.get_node_size(node) + node_width, node_height = self:get_node_size(node) rows_data.nodes_width[node] = node_width rows_data.nodes_height[node] = node_height end - if node_width > 0 and node_height > 0 then + if node_width > 0 or node_height > 0 then if type == "horizontal" then current_row.width = current_row.width + node_width + margin.x current_row.height = math.max(current_row.height, node_height) @@ -407,16 +492,16 @@ function M.calculate_rows_data(self) end --- @tparam node node --- @tparam number x --- @tparam number y --- @treturn node --- @local +---Will reset z value to 0! +local TEMP_VECTOR = vmath.vector3(0, 0, 0) +---@param node node +---@param x number +---@param y number +---@return node function M:set_node_position(node, x, y) - local position = gui.get_position(node) - position.x = x - position.y = y - gui.set_position(node, position) + TEMP_VECTOR.x = x + TEMP_VECTOR.y = y + gui.set_position(node, TEMP_VECTOR) return node end diff --git a/druid/extended/progress.lua b/druid/extended/progress.lua index 163b017..d4a9a09 100644 --- a/druid/extended/progress.lua +++ b/druid/extended/progress.lua @@ -1,58 +1,188 @@ --- Copyright (c) 2021 Maksim Tuprikov . This code is licensed under MIT license - ---- Druid component to handle the progress bars. --- # Overview # --- --- # Notes # --- --- • Progress Node should be fully filled in your GUI scene node. It will be the progress maximum size --- --- • Progress correct working with Slice9 nodes, it trying to set size by _set_size_ first, if it is not possible, it set up sizing via _set_scale_ --- --- • Progress bar can fill only by vertical or horizontal size. If you want make diagonal progress bar, just rotate node in GUI scene --- --- • If you have glitchy or dark texture bug with progress bar, try to disable mipmaps in your texture profiles --- --- --- Example Link --- @module Progress --- @within BaseComponent --- @alias druid.progress - ---- On progress bar change callback(self, new_value) --- @tfield DruidEvent on_change @{DruidEvent} - ---- Progress bar fill node --- @tfield node node - ---- The progress bar direction. --- --- The values are: "x" or "y". (const.SIDE.X or const.SIDE.Y) --- @tfield string key - ---- Current progress bar scale --- @tfield vector3 scale - ---- Current progress bar size --- @tfield vector3 size - ---- Maximum size of progress bar --- @tfield number max_size - ---- Progress bar slice9 settings --- @tfield vector4 slice - ---- - -local Event = require("druid.event") -local const = require("druid.const") +local event = require("event.event") local helper = require("druid.helper") local component = require("druid.component") -local Progress = component.create("progress") +---@class druid.progress.style +---@field SPEED number|nil Progress bar fill rate. Higher value means faster fill. Default: 5 +---@field MIN_DELTA number|nil Minimum step to fill progress bar. Default: 0.005 + +---Basic Druid progress bar component. Changes the size or scale of a node to represent progress. +--- +---### Setup +---Create progress bar component with druid: `progress = druid:new_progress(node_name, key, init_value)` +--- +---### Notes +---- Node should have maximum node size in GUI scene, it represents the progress bar's maximum size +---- Key is value from druid const: "x" or "y" +---- Progress works correctly with 9slice nodes, it tries to set size by _set_size_ first until minimum size is reached, then it continues sizing via _set_scale_ +---- Progress bar can fill only by vertical or horizontal size. For diagonal progress bar, just rotate the node in GUI scene +---- If you have glitchy or dark texture bugs with progress bar, try to disable mipmaps in your texture profiles +---@class druid.progress: druid.component +---@field node node The progress bar node +---@field on_change event fun(self: druid.progress, value: number) Event triggered when progress value changes +---@field style druid.progress.style Component style parameters +---@field key string Progress bar direction: "x" or "y" +---@field prop hash Property for scaling the progress bar +local M = component.create("progress") -local function check_steps(self, from, to, exactly) +---@param node string|node Node name or GUI Node itself. +---@param key string Progress bar direction: "x" or "y" +---@param init_value number|nil Initial value of progress bar (0 to 1). Default: 1 +function M:init(node, key, init_value) + assert(key == "x" or key == "y", "Progress bar key should be 'x' or 'y'") + + self.key = key + self.prop = hash("scale." .. self.key) + + self._init_value = init_value or 1 + self.node = self:get_node(node) + self.scale = gui.get_scale(self.node) + self.size = gui.get_size(self.node) + self.max_size = gui.get_size(self.node) + self.slice = gui.get_slice9(self.node) + self.last_value = self._init_value + + self.slice_size = vmath.vector3( + self.slice.x + self.slice.z, + self.slice.y + self.slice.w, + 0 + ) + + self.on_change = event.create() + + self:set_to(self.last_value) +end + + +---@private +---@param style druid.progress.style +function M:on_style_change(style) + self.style = { + SPEED = style.SPEED or 5, + MIN_DELTA = style.MIN_DELTA or 0.005, + } +end + + +---@private +function M:on_layout_change() + self:set_to(self.last_value) +end + + +---@private +function M:on_remove() + gui.set_size(self.node, self.max_size) +end + + +---@param dt number Delta time +function M:update(dt) + if self.target then + local prev_value = self.last_value + local step = math.abs(self.last_value - self.target) * (self.style.SPEED * dt) + step = math.max(step, self.style.MIN_DELTA) + self:set_to(helper.step(self.last_value, self.target, step)) + + if self.last_value == self.target then + self:_check_steps(prev_value, self.target, self.target) + + if self.target_callback then + self.target_callback(self:get_context(), self.target) + end + + self.target = nil + end + end +end + + +---Fill the progress bar +---@return druid.progress self Current progress instance +function M:fill() + self:_set_bar_to(1, true) + + return self +end + + +---Empty the progress bar +---@return druid.progress self Current progress instance +function M:empty() + self:_set_bar_to(0, true) + + return self +end + + +---Instant fill progress bar to value +---@param to number Progress bar value, from 0 to 1 +---@return druid.progress self Current progress instance +function M:set_to(to) + to = helper.clamp(to, 0, 1) + self:_set_bar_to(to) + + return self +end + + +---Return the current value of the progress bar +---@return number value The current value of the progress bar +function M:get() + return self.last_value +end + + +---Set points on progress bar to fire the callback +---@param steps number[] Array of progress bar values +---@param callback function Callback on intersect step value +---@return druid.progress self Current progress instance +function M:set_steps(steps, callback) + self.steps = steps + self.step_callback = callback + + return self +end + + +---Start animation of a progress bar +---@param to number value between 0..1 +---@param callback function|nil Callback on animation ends +---@return druid.progress self Current progress instance +function M:to(to, callback) + to = helper.clamp(to, 0, 1) + -- cause of float error + local value = helper.round(to, 5) + if value ~= self.last_value then + self.target = value + self.target_callback = callback + else + if callback then + callback(self:get_context(), to) + end + end + + return self +end + + +---Set progress bar max node size +---@param max_size vector3 The new node maximum (full) size +---@return druid.progress self Current progress instance +function M:set_max_size(max_size) + self.max_size[self.key] = max_size[self.key] + self:set_to(self.last_value) + + return self +end + + +---@private +---@param from number The start value +---@param to number The end value +---@param exactly number|nil The exact value +function M:_check_steps(from, to, exactly) if not self.steps then return end @@ -74,9 +204,11 @@ local function check_steps(self, from, to, exactly) end -local function set_bar_to(self, set_to, is_silent) +---@private +---@param set_to number The value to set the progress bar to +function M:_set_bar_to(set_to, is_silent) local prev_value = self.last_value - local other_side = self.key == const.SIDE.X and const.SIDE.Y or const.SIDE.X + local other_side = self.key == "x" and "y" or "x" self.last_value = set_to local total_width = set_to * self.max_size[self.key] @@ -103,158 +235,14 @@ local function set_bar_to(self, set_to, is_silent) gui.set_size(self.node, self.size) if not is_silent then - check_steps(self, prev_value, set_to) + self:_check_steps(prev_value, set_to) if prev_value ~= self.last_value then self.on_change:trigger(self:get_context(), self.last_value) end end -end - ---- Component style params. --- You can override this component styles params in druid styles table --- or create your own style --- @table style --- @tfield number|nil SPEED Progress bas fill rate. More -> faster. Default: 5 --- @tfield number|nil MIN_DELTA Minimum step to fill progress bar. Default: 0.005 -function Progress.on_style_change(self, style) - self.style = {} - self.style.SPEED = style.SPEED or 5 - self.style.MIN_DELTA = style.MIN_DELTA or 0.005 -end - - ---- The @{Progress} constructor --- @tparam Progress self @{Progress} --- @tparam string|node node Node name or GUI Node itself. --- @tparam string key Progress bar direction: const.SIDE.X or const.SIDE.Y --- @tparam number|nil init_value Initial value of progress bar. Default: 1 -function Progress.init(self, node, key, init_value) - assert(key == const.SIDE.X or const.SIDE.Y, "Progress bar key should be 'x' or 'y'") - - self.key = key - self.prop = hash("scale." .. self.key) - - self._init_value = init_value or 1 - self.node = self:get_node(node) - self.scale = gui.get_scale(self.node) - self.size = gui.get_size(self.node) - self.max_size = gui.get_size(self.node) - self.slice = gui.get_slice9(self.node) - self.last_value = self._init_value - - self.slice_size = vmath.vector3( - self.slice.x + self.slice.z, - self.slice.y + self.slice.w, - 0 - ) - - self.on_change = Event() - - self:set_to(self.last_value) -end - - -function Progress.on_layout_change(self) - self:set_to(self.last_value) -end - - -function Progress.on_remove(self) - -- Return default size - gui.set_size(self.node, self.max_size) -end - - -function Progress.update(self, dt) - if self.target then - local prev_value = self.last_value - local step = math.abs(self.last_value - self.target) * (self.style.SPEED*dt) - step = math.max(step, self.style.MIN_DELTA) - self:set_to(helper.step(self.last_value, self.target, step)) - - if self.last_value == self.target then - check_steps(self, prev_value, self.target, self.target) - - if self.target_callback then - self.target_callback(self:get_context(), self.target) - end - - self.target = nil - end - end -end - - ---- Fill a progress bar and stop progress animation --- @tparam Progress self @{Progress} -function Progress.fill(self) - set_bar_to(self, 1, true) -end - - ---- Empty a progress bar --- @tparam Progress self @{Progress} -function Progress.empty(self) - set_bar_to(self, 0, true) -end - - ---- Instant fill progress bar to value --- @tparam Progress self @{Progress} --- @tparam number to Progress bar value, from 0 to 1 -function Progress.set_to(self, to) - to = helper.clamp(to, 0, 1) - set_bar_to(self, to) -end - - ---- Return current progress bar value --- @tparam Progress self @{Progress} -function Progress.get(self) - return self.last_value -end - - ---- Set points on progress bar to fire the callback --- @tparam Progress self @{Progress} --- @tparam number[] steps Array of progress bar values --- @tparam function callback Callback on intersect step value --- @usage progress:set_steps({0, 0.3, 0.6, 1}, function(self, step) end) -function Progress.set_steps(self, steps, callback) - self.steps = steps - self.step_callback = callback -end - - ---- Start animation of a progress bar --- @tparam Progress self @{Progress} --- @tparam number to value between 0..1 --- @tparam function|nil callback Callback on animation ends -function Progress.to(self, to, callback) - to = helper.clamp(to, 0, 1) - -- cause of float error - local value = helper.round(to, 5) - if value ~= self.last_value then - self.target = value - self.target_callback = callback - else - if callback then - callback(self:get_context(), to) - end - end -end - - ---- Set progress bar max node size --- @tparam Progress self @{Progress} --- @tparam vector3 max_size The new node maximum (full) size --- @treturn Progress @{Progress} -function Progress.set_max_size(self, max_size) - self.max_size[self.key] = max_size[self.key] - self:set_to(self.last_value) return self end -return Progress +return M diff --git a/druid/extended/slider.lua b/druid/extended/slider.lua index 7af97d3..102fa45 100644 --- a/druid/extended/slider.lua +++ b/druid/extended/slider.lua @@ -1,67 +1,39 @@ --- Copyright (c) 2021 Maksim Tuprikov . This code is licensed under MIT license - ---- Druid slider component --- --- Example Link --- @module Slider --- @within BaseComponent --- @alias druid.slider - ---- On change value callback(self, value) --- @tfield DruidEvent on_change_value @{DruidEvent} - ---- Slider pin node --- @tfield node node - ---- Start pin node position --- @tfield vector3 start_pos - ---- Current pin node position --- @tfield vector3 pos - ---- Targer pin node position --- @tfield vector3 target_pos - ---- End pin node position --- @tfield vector3 end_pos - ---- Length between start and end position --- @tfield vector3 dist - ---- Current drag state --- @tfield boolean is_drag - ---- Current slider value --- @tfield number value - ---- - - -local Event = require("druid.event") +local event = require("event.event") local helper = require("druid.helper") local const = require("druid.const") local component = require("druid.component") -local Slider = component.create("slider", const.PRIORITY_INPUT_HIGH) +---Basic Druid slider component. Creates a draggable node over a line with progress reporting. +--- +---### Setup +---Create slider component with druid: `slider = druid:new_slider(node_name, end_pos, callback)` +--- +---### Notes +---- Pin node should be placed in initial position at zero progress +---- It will be available to move Pin node between start pos and end pos +---- You can setup points of interests on slider via `slider:set_steps`. If steps exist, slider values will be only from these steps (notched slider) +---- Start pos and end pos should be on vertical or horizontal line (their x or y value should be equal) +---- To catch input across all slider, you can setup input node via `slider:set_input_node` +---@class druid.slider: druid.component +---@field node node The node to manage the slider +---@field on_change_value event fun(self: druid.slider, value: number) The event triggered when the slider value changes +---@field style table The style of the slider +---@field private start_pos vector3 The start position of the slider +---@field private pos vector3 The current position of the slider +---@field private target_pos vector3 The target position of the slider +---@field private end_pos vector3 The end position of the slider +---@field private dist vector3 The distance between the start and end positions of the slider +---@field private is_drag boolean True if the slider is being dragged +---@field private value number The current value of the slider +---@field private steps number[] The steps of the slider +local M = component.create("slider", const.PRIORITY_INPUT_HIGH) -local function on_change_value(self) - self.on_change_value:trigger(self:get_context(), self.value) -end - - -local function set_position(self, value) - value = helper.clamp(value, 0, 1) - gui.set_position(self.node, self.start_pos + self.dist * value) -end - - ---- The @{Slider} constructor --- @tparam Slider self @{Slider} --- @tparam node node Gui pin node --- @tparam vector3 end_pos The end position of slider --- @tparam function|nil callback On slider change callback -function Slider.init(self, node, end_pos, callback) +---The Slider constructor +---@param node node GUI node to drag as a slider +---@param end_pos vector3 The end position of slider, should be on the same axis as the node +---@param callback function|nil On slider change callback +function M:init(node, end_pos, callback) self.node = self:get_node(node) self.start_pos = gui.get_position(self.node) @@ -74,25 +46,28 @@ function Slider.init(self, node, end_pos, callback) self.is_drag = false self.value = 0 - self.on_change_value = Event(callback) + self.on_change_value = event.create(callback) self:on_window_resized() assert(self.dist.x == 0 or self.dist.y == 0, "Slider for now can be only vertical or horizontal") end -function Slider.on_layout_change(self) +---@private +function M:on_layout_change() self:set(self.value) end -function Slider.on_remove(self) +---@private +function M:on_remove() -- Return pin to start position gui.set_position(self.node, self.start_pos) end -function Slider.on_window_resized(self) +---@private +function M:on_window_resized() local x_koef, y_koef = helper.get_screen_aspect_koef() self._x_koef = x_koef self._y_koef = y_koef @@ -100,7 +75,11 @@ function Slider.on_window_resized(self) end -function Slider.on_input(self, action_id, action) +---@private +---@param action_id hash Action id from on_input +---@param action table Action table from on_input +---@return boolean is_consumed True if input was consumed +function M:on_input(action_id, action) if action_id ~= const.ACTION_TOUCH then return false end @@ -169,11 +148,11 @@ function Slider.on_input(self, action_id, action) end if prev_value ~= self.value then - on_change_value(self) + self:_on_change_value() end end - set_position(self, self.value) + self:_set_position(self.value) end if action.released then @@ -184,59 +163,77 @@ function Slider.on_input(self, action_id, action) end ---- Set value for slider --- @tparam Slider self @{Slider} --- @tparam number value Value from 0 to 1 --- @tparam boolean|nil is_silent Don't trigger event if true -function Slider.set(self, value, is_silent) +---Set value for slider +---@param value number Value from 0 to 1 +---@param is_silent boolean|nil Don't trigger event if true +---@return druid.slider self Current slider instance +function M:set(value, is_silent) value = helper.clamp(value, 0, 1) - set_position(self, value) + self:_set_position(value) self.value = value if not is_silent then - on_change_value(self) + self:_on_change_value() end + + return self end ---- Set slider steps. Pin node will --- apply closest step position --- @tparam Slider self @{Slider} --- @tparam number[] steps Array of steps --- @usage slider:set_steps({0, 0.2, 0.6, 1}) --- @treturn Slider @{Slider} -function Slider.set_steps(self, steps) +---Set slider steps. Pin node will +---apply closest step position +---@param steps number[] Array of steps +---@return druid.slider self Current slider instance +function M:set_steps(steps) self.steps = steps return self end ---- Set input zone for slider. --- User can touch any place of node, pin instantly will --- move at this position and node drag will start. --- This function require the Defold version 1.3.0+ --- @tparam Slider self @{Slider} --- @tparam node|string|nil input_node --- @treturn Slider @{Slider} -function Slider.set_input_node(self, input_node) +---Set input zone for slider. +---User can touch any place of node, pin instantly will +---move at this position and node drag will start. +---This function require the Defold version 1.3.0+ +---@param input_node node|string|nil +---@return druid.slider self Current slider instance +function M:set_input_node(input_node) + if not input_node then + self._input_node = nil + return self + end + self._input_node = self:get_node(input_node) return self end ---- Set Slider input enabled or disabled --- @tparam Slider self @{Slider} --- @tparam boolean is_enabled -function Slider.set_enabled(self, is_enabled) +---Set Slider input enabled or disabled +---@param is_enabled boolean True if slider is enabled +---@return druid.slider self Current slider instance +function M:set_enabled(is_enabled) self._is_enabled = is_enabled + + return self end ---- Check if Slider component is enabled --- @tparam Slider self @{Slider} --- @treturn boolean -function Slider.is_enabled(self) +---Check if Slider component is enabled +---@return boolean is_enabled True if slider is enabled +function M:is_enabled() return self._is_enabled end -return Slider +---@private +function M:_on_change_value() + self.on_change_value:trigger(self:get_context(), self.value) +end + + +---@private +function M:_set_position(value) + value = helper.clamp(value, 0, 1) + gui.set_position(self.node, self.start_pos + self.dist * value) +end + + +return M diff --git a/druid/extended/swipe.lua b/druid/extended/swipe.lua index 110d9f4..203126e 100644 --- a/druid/extended/swipe.lua +++ b/druid/extended/swipe.lua @@ -1,108 +1,44 @@ --- Copyright (c) 2021 Maksim Tuprikov . This code is licensed under MIT license - ---- Component to handle swipe gestures on node. --- Swipe will be triggered, if swipe was started and --- ended on one node --- --- Example Link --- @module Swipe --- @within BaseComponent --- @alias druid.swipe - ---- Swipe node --- @tparam node node - ---- Restriction zone --- @tparam node|nil click_zone - ---- Trigger on swipe event(self, swipe_side, dist, delta_time) --- @tfield DruidEvent on_swipe) @{DruidEvent} - ---- - -local Event = require("druid.event") +local event = require("event.event") local const = require("druid.const") local helper = require("druid.helper") local component = require("druid.component") -local Swipe = component.create("swipe") +---@class druid.swipe.style +---@field SWIPE_TIME number|nil Maximum time for swipe trigger. Default: 0.4 +---@field SWIPE_THRESHOLD number|nil Minimum distance for swipe trigger. Default: 50 +---@field SWIPE_TRIGGER_ON_MOVE boolean|nil If true, trigger on swipe moving, not only release action. Default: false + +---The component to manage swipe events over a node +---@class druid.swipe: druid.component +---@field node node The node to manage the swipe +---@field on_swipe event fun(context, side, dist, dt) The event triggered when a swipe is detected +---@field style druid.swipe.style The style of the swipe +---@field click_zone node The click zone of the swipe +---@field private _trigger_on_move boolean True if the swipe should trigger on move +---@field private _swipe_start_time number The time the swipe started +---@field private _start_pos vector3 The start position of the swipe +---@field private _is_enabled boolean True if the swipe is enabled +---@field private _is_mobile boolean True if the swipe is on a mobile device +local M = component.create("swipe") -local function start_swipe(self, action) - self._swipe_start_time = socket.gettime() - self._start_pos.x = action.x - self._start_pos.y = action.y -end - - -local function reset_swipe(self, action) - self._swipe_start_time = false -end - - -local function check_swipe(self, action) - local dx = action.x - self._start_pos.x - local dy = action.y - self._start_pos.y - local dist = helper.distance(self._start_pos.x, self._start_pos.y, action.x, action.y) - local delta_time = socket.gettime() - self._swipe_start_time - local is_swipe = self.style.SWIPE_THRESHOLD <= dist and delta_time <= self.style.SWIPE_TIME - - if is_swipe then - local is_x_swipe = math.abs(dx) >= math.abs(dy) - local swipe_side = false - - if is_x_swipe and dx > 0 then - swipe_side = const.SWIPE.RIGHT - end - if is_x_swipe and dx < 0 then - swipe_side = const.SWIPE.LEFT - end - if not is_x_swipe and dy > 0 then - swipe_side = const.SWIPE.UP - end - if not is_x_swipe and dy < 0 then - swipe_side = const.SWIPE.DOWN - end - - self.on_swipe:trigger(self:get_context(), swipe_side, dist, delta_time) - reset_swipe(self) - end -end - - ---- Component style params. --- You can override this component styles params in druid styles table --- or create your own style --- @table style --- @tfield number|nil SWIPE_TIME Maximum time for swipe trigger. Default: 0.4 --- @tfield number|nil SWIPE_THRESHOLD Minimum distance for swipe trigger. Default: 50 --- @tfield boolean|nil SWIPE_TRIGGER_ON_MOVE If true, trigger on swipe moving, not only release action. Default: false -function Swipe.on_style_change(self, style) - self.style = {} - self.style.SWIPE_TIME = style.SWIPE_TIME or 0.4 - self.style.SWIPE_THRESHOLD = style.SWIPE_THRESHOLD or 50 - self.style.SWIPE_TRIGGER_ON_MOVE = style.SWIPE_TRIGGER_ON_MOVE or false -end - - ---- The @{Swipe} constructor --- @tparam Swipe self @{Swipe} --- @tparam node node Gui node --- @tparam function on_swipe_callback Swipe callback for on_swipe_end event -function Swipe.init(self, node, on_swipe_callback) +---@param node_or_node_id node|string +---@param on_swipe_callback function +function M:init(node_or_node_id, on_swipe_callback) self._trigger_on_move = self.style.SWIPE_TRIGGER_ON_MOVE - self.node = self:get_node(node) + self.node = self:get_node(node_or_node_id) - self._swipe_start_time = false + self._swipe_start_time = 0 self._start_pos = vmath.vector3(0) self.click_zone = nil - self.on_swipe = Event(on_swipe_callback) + self.on_swipe = event.create(on_swipe_callback) end -function Swipe.on_late_init(self) - if not self.click_zone and const.IS_STENCIL_CHECK then +---@private +function M:on_late_init() + if not self.click_zone then local stencil_node = helper.get_closest_stencil_node(self.node) if stencil_node then self:set_click_zone(stencil_node) @@ -111,7 +47,22 @@ function Swipe.on_late_init(self) end -function Swipe.on_input(self, action_id, action) +---@private +---@param style druid.swipe.style +function M:on_style_change(style) + self.style = { + SWIPE_TIME = style.SWIPE_TIME or 0.4, + SWIPE_THRESHOLD = style.SWIPE_THRESHOLD or 50, + SWIPE_TRIGGER_ON_MOVE = style.SWIPE_TRIGGER_ON_MOVE or false, + } +end + + +---@private +---@param action_id hash The action id +---@param action action The action table +---@return boolean is_consumed True if the input was consumed +function M:on_input(action_id, action) if action_id ~= const.ACTION_TOUCH then return false end @@ -122,38 +73,90 @@ function Swipe.on_input(self, action_id, action) local is_pick = helper.pick_node(self.node, action.x, action.y, self.click_zone) if not is_pick then - reset_swipe(self, action) + self:_reset_swipe() return false end - if self._swipe_start_time and (self._trigger_on_move or action.released) then - check_swipe(self, action) + if self._swipe_start_time ~= 0 and (self._trigger_on_move or action.released) then + self:_check_swipe(action) end if action.pressed then - start_swipe(self, action) + self:_start_swipe(action) end if action.released then - reset_swipe(self, action) + self:_reset_swipe() end return true end -function Swipe.on_input_interrupt(self) - reset_swipe(self) +---@private +function M:on_input_interrupt() + self:_reset_swipe() end ---- Strict swipe click area. Useful for --- restrict events outside stencil node --- @tparam Swipe self @{Swipe} --- @tparam node|string|nil zone Gui node -function Swipe.set_click_zone(self, zone) +---Set the click zone for the swipe, useful for restricting events outside stencil node +---@param zone node|string|nil Gui node +function M:set_click_zone(zone) + if not zone then + self.click_zone = nil + return + end + self.click_zone = self:get_node(zone) end -return Swipe +---Start swipe event +---@param action action The action table +function M:_start_swipe(action) + self._swipe_start_time = socket.gettime() + self._start_pos.x = action.x + self._start_pos.y = action.y +end + + +---Reset swipe event +function M:_reset_swipe() + self._swipe_start_time = 0 +end + + +---Check swipe event +---@param self druid.swipe +---@param action action +function M:_check_swipe(action) + local dx = action.x - self._start_pos.x + local dy = action.y - self._start_pos.y + local dist = helper.distance(self._start_pos.x, self._start_pos.y, action.x, action.y) + local delta_time = socket.gettime() - self._swipe_start_time + local is_swipe = self.style.SWIPE_THRESHOLD <= dist and delta_time <= self.style.SWIPE_TIME + + if is_swipe then + local is_x_swipe = math.abs(dx) >= math.abs(dy) + local swipe_side = "undefined" + + if is_x_swipe and dx > 0 then + swipe_side = "right" + end + if is_x_swipe and dx < 0 then + swipe_side = "left" + end + if not is_x_swipe and dy > 0 then + swipe_side = "up" + end + if not is_x_swipe and dy < 0 then + swipe_side = "down" + end + + self.on_swipe:trigger(self:get_context(), swipe_side, dist, delta_time) + self:_reset_swipe() + end +end + + +return M diff --git a/druid/extended/timer.lua b/druid/extended/timer.lua index 235f4be..833e465 100644 --- a/druid/extended/timer.lua +++ b/druid/extended/timer.lua @@ -1,62 +1,39 @@ --- Copyright (c) 2021 Maksim Tuprikov . This code is licensed under MIT license - ---- Component to handle GUI timers. --- Timer updating by game delta time. If game is not focused - --- timer will be not updated. --- @module Timer --- @within BaseComponent --- @alias druid.timer - ---- On timer tick. Fire every second callback(self, value) --- @tfield DruidEvent on_tick @{DruidEvent} - ---- On timer change enabled state callback(self, is_enabled) --- @tfield DruidEvent on_set_enabled @{DruidEvent} - ---- On timer end callback --- @tfield DruidEvent on_timer_end(self, Timer) @{DruidEvent} - ---- Trigger node --- @tfield node node - ---- Initial timer value --- @tfield number from - ---- Target timer value --- @tfield number target - ---- Current timer value --- @tfield number value - ---- - -local Event = require("druid.event") +local event = require("event.event") local helper = require("druid.helper") local component = require("druid.component") -local Timer = component.create("timer") +---Druid component to handle timer work on gui text node. Displays time in a formatted way. +--- +---### Setup +---Create timer component with druid: `timer = druid:new_timer(text_node, from_seconds, to_seconds, callback)` +--- +---### Notes +---- Timer fires callback when timer value equals to _to_seconds_ +---- Timer will set text node with current timer value +---- Timer uses update function to handle time +---@class druid.timer: druid.component +---@field on_tick event fun(context, value) The event triggered when the timer ticks +---@field on_set_enabled event fun(context, is_on) The event triggered when the timer is enabled +---@field on_timer_end event fun(context) The event triggered when the timer ends +---@field node node The node to display the timer +---@field from number The start time of the timer +---@field target number The target time of the timer +---@field value number The current value of the timer +---@field is_on boolean|nil True if the timer is on +local M = component.create("timer") -local function second_string_min(sec) - local mins = math.floor(sec / 60) - local seconds = math.floor(sec - mins * 60) - return string.format("%.2d:%.2d", mins, seconds) -end - - ---- The @{Timer} constructor --- @tparam Timer self @{Timer} --- @tparam node node Gui text node --- @tparam number|nil seconds_from Start timer value in seconds --- @tparam number|nil seconds_to End timer value in seconds --- @tparam function|nil callback Function on timer end -function Timer.init(self, node, seconds_from, seconds_to, callback) +---@param node node Gui text node +---@param seconds_from number|nil Start timer value in seconds +---@param seconds_to number|nil End timer value in seconds +---@param callback function|nil Function that triggers when timer value equals to seconds_to +function M:init(node, seconds_from, seconds_to, callback) self.node = self:get_node(node) seconds_to = math.max(seconds_to or 0, 0) - self.on_tick = Event() - self.on_set_enabled = Event() - self.on_timer_end = Event(callback) + self.on_tick = event.create() + self.on_set_enabled = event.create() + self.on_timer_end = event.create(callback) if seconds_from then seconds_from = math.max(seconds_from, 0) @@ -73,7 +50,8 @@ function Timer.init(self, node, seconds_from, seconds_to, callback) end -function Timer.update(self, dt) +---@private +function M:update(dt) if not self.is_on then return end @@ -96,42 +74,58 @@ function Timer.update(self, dt) end -function Timer.on_layout_change(self) +---@private +function M:on_layout_change() self:set_to(self.last_value) end ---- Set text to text field --- @tparam Timer self @{Timer} --- @tparam number set_to Value in seconds -function Timer.set_to(self, set_to) +---Set the timer to a specific value +---@param set_to number Value in seconds +---@return druid.timer self Current timer instance +function M:set_to(set_to) self.last_value = set_to - gui.set_text(self.node, second_string_min(set_to)) + gui.set_text(self.node, self:_second_string_min(set_to)) + + return self end ---- Called when update --- @tparam Timer self @{Timer} --- @tparam boolean|nil is_on Timer enable state -function Timer.set_state(self, is_on) +---Set the timer to a specific value +---@param is_on boolean|nil Timer enable state +---@return druid.timer self Current timer instance +function M:set_state(is_on) self.is_on = is_on - self.on_set_enabled:trigger(self:get_context(), is_on) + + return self end ---- Set time interval --- @tparam Timer self @{Timer} --- @tparam number from Start time in seconds --- @tparam number to Target time in seconds -function Timer.set_interval(self, from, to) +---Set the timer interval +---@param from number Start time in seconds +---@param to number Target time in seconds +---@return druid.timer self Current timer instance +function M:set_interval(from, to) self.from = from self.value = from self.temp = 0 self.target = to self:set_state(true) self:set_to(from) + + return self end -return Timer +---@private +---@param sec number Seconds to convert +---@return string The formatted time string +function M:_second_string_min(sec) + local mins = math.floor(sec / 60) + local seconds = math.floor(sec - mins * 60) + return string.format("%.2d:%.2d", mins, seconds) +end + + +return M diff --git a/druid/fonts/druid_text_bold.font b/druid/fonts/druid_text_bold.font new file mode 100644 index 0000000..f0d884d --- /dev/null +++ b/druid/fonts/druid_text_bold.font @@ -0,0 +1,9 @@ +font: "/druid/fonts/Roboto-Bold.ttf" +material: "/builtins/fonts/font-df.material" +size: 40 +outline_alpha: 1.0 +outline_width: 2.0 +shadow_blur: 0 +output_format: TYPE_DISTANCE_FIELD +render_mode: MODE_MULTI_LAYER +characters: "\302\241\302\253\302\273\302\277\303\200\303\202\303\206\303\207\303\210\303\211\303\212\303\213\303\216\303\217\303\224\303\231\303\233\303\234\303\237\303\240\303\241\303\242\303\243\303\244\303\246\303\247\303\250\303\251\303\252\303\253\303\255\303\256\303\257\303\261\303\262\303\263\303\264\303\265\303\266\303\271\303\273\303\274\303\277\305\222\305\223\305\270\320\201\320\220\320\221\320\222\320\223\320\224\320\225\320\226\320\227\320\230\320\231\320\232\320\233\320\234\320\235\320\236\320\237\320\240\320\241\320\242\320\243\320\244\320\245\320\246\320\247\320\250\320\251\320\252\320\253\320\254\320\255\320\256\320\257\320\260\320\261\320\262\320\263\320\264\320\265\320\266\320\267\320\270\320\271\320\272\320\273\320\274\320\275\320\276\320\277\321\200\321\201\321\202\321\203\321\204\321\205\321\206\321\207\321\210\321\211\321\212\321\213\321\214\321\215\321\216\321\217\321\221\342\200\224\343\200\201\343\200\202\343\200\214\343\200\215\357\274\201\357\274\214\357\274\237 !\"#$%&\'()*+,-./0123456789:;<=>?@ABCDEFGHIJKLMNOPQRSTUVWXYZ[]^_`abcdefghijklmnopqrstuvwxyz{|}" diff --git a/druid/fonts/druid_text_regular.font b/druid/fonts/druid_text_regular.font new file mode 100644 index 0000000..eafbcfd --- /dev/null +++ b/druid/fonts/druid_text_regular.font @@ -0,0 +1,8 @@ +font: "/druid/fonts/Roboto-Regular.ttf" +material: "/builtins/fonts/font-df.material" +size: 40 +outline_alpha: 1.0 +outline_width: 2.0 +output_format: TYPE_DISTANCE_FIELD +render_mode: MODE_MULTI_LAYER +characters: "\302\241\302\253\302\273\302\277\303\200\303\202\303\206\303\207\303\210\303\211\303\212\303\213\303\216\303\217\303\224\303\231\303\233\303\234\303\237\303\240\303\241\303\242\303\243\303\244\303\246\303\247\303\250\303\251\303\252\303\253\303\255\303\256\303\257\303\261\303\262\303\263\303\264\303\265\303\266\303\271\303\273\303\274\303\277\305\222\305\223\305\270\320\201\320\220\320\221\320\222\320\223\320\224\320\225\320\226\320\227\320\230\320\231\320\232\320\233\320\234\320\235\320\236\320\237\320\240\320\241\320\242\320\243\320\244\320\245\320\246\320\247\320\250\320\251\320\252\320\253\320\254\320\255\320\256\320\257\320\260\320\261\320\262\320\263\320\264\320\265\320\266\320\267\320\270\320\271\320\272\320\273\320\274\320\275\320\276\320\277\321\200\321\201\321\202\321\203\321\204\321\205\321\206\321\207\321\210\321\211\321\212\321\213\321\214\321\215\321\216\321\217\321\221\342\200\224\343\200\201\343\200\202\343\200\214\343\200\215\357\274\201\357\274\214\357\274\237 !\"#$%&\'()*+,-./0123456789:;<=>?@ABCDEFGHIJKLMNOPQRSTUVWXYZ[]^_`abcdefghijklmnopqrstuvwxyz{|}" diff --git a/druid/fonts/text_bold.font b/druid/fonts/text_bold.font deleted file mode 100644 index 3bae9c5..0000000 --- a/druid/fonts/text_bold.font +++ /dev/null @@ -1,10 +0,0 @@ -font: "/druid/fonts/Roboto-Bold.ttf" -material: "/builtins/fonts/font-df.material" -size: 40 -outline_alpha: 1.0 -outline_width: 2.0 -shadow_alpha: 1.0 -shadow_blur: 2 -output_format: TYPE_DISTANCE_FIELD -render_mode: MODE_MULTI_LAYER -characters: " !\"#$%&\'()*+,-./0123456789:;<=>?@ABCDEFGHIJKLMNOPQRSTUVWXYZ[\\]^_`abcdefghijklmnopqrstuvwxyz{|}~\302\241\302\277\303\200\303\202\303\206\303\207\303\210\303\211\303\212\303\213\303\216\303\217\303\224\303\231\303\233\303\234\303\240\303\241\303\242\303\243\303\244\303\246\303\247\303\250\303\251\303\252\303\253\303\255\303\256\303\257\303\261\303\263\303\264\303\271\303\273\303\274\303\277\305\222\305\223\305\270\320\201\320\220\320\221\320\222\320\223\320\224\320\225\320\226\320\227\320\230\320\231\320\232\320\233\320\234\320\235\320\236\320\237\320\240\320\241\320\242\320\243\320\244\320\245\320\246\320\247\320\250\320\251\320\252\320\253\320\254\320\255\320\256\320\257\320\260\320\261\320\262\320\263\320\264\320\265\320\266\320\267\320\270\320\271\320\272\320\273\320\274\320\275\320\276\320\277\321\200\321\201\321\202\321\203\321\204\321\205\321\206\321\207\321\210\321\211\321\212\321\213\321\214\321\215\321\216\321\217\321\221\343\200\202\357\274\201\357\274\237" diff --git a/druid/fonts/text_regular.font b/druid/fonts/text_regular.font deleted file mode 100644 index 3decaf2..0000000 --- a/druid/fonts/text_regular.font +++ /dev/null @@ -1,8 +0,0 @@ -font: "/druid/fonts/Roboto-Regular.ttf" -material: "/builtins/fonts/font-df.material" -size: 40 -outline_alpha: 1.0 -outline_width: 2.0 -output_format: TYPE_DISTANCE_FIELD -render_mode: MODE_MULTI_LAYER -characters: " !\"#$%&\'()*+,-./0123456789:;<=>?@ABCDEFGHIJKLMNOPQRSTUVWXYZ[\\]^_`abcdefghijklmnopqrstuvwxyz{|}~\302\241\302\277\303\200\303\202\303\206\303\207\303\210\303\211\303\212\303\213\303\216\303\217\303\224\303\231\303\233\303\234\303\240\303\241\303\242\303\243\303\244\303\246\303\247\303\250\303\251\303\252\303\253\303\255\303\256\303\257\303\261\303\263\303\264\303\271\303\273\303\274\303\277\305\222\305\223\305\270\320\201\320\220\320\221\320\222\320\223\320\224\320\225\320\226\320\227\320\230\320\231\320\232\320\233\320\234\320\235\320\236\320\237\320\240\320\241\320\242\320\243\320\244\320\245\320\246\320\247\320\250\320\251\320\252\320\253\320\254\320\255\320\256\320\257\320\260\320\261\320\262\320\263\320\264\320\265\320\266\320\267\320\270\320\271\320\272\320\273\320\274\320\275\320\276\320\277\321\200\321\201\321\202\321\203\321\204\321\205\321\206\321\207\321\210\321\211\321\212\321\213\321\214\321\215\321\216\321\217\321\221\343\200\202\357\274\201\357\274\237" diff --git a/druid/helper.lua b/druid/helper.lua index 827e9cf..ab3109a 100644 --- a/druid/helper.lua +++ b/druid/helper.lua @@ -1,24 +1,23 @@ --- Copyright (c) 2021 Maksim Tuprikov . This code is licensed under MIT license - ---- Helper module with various usefull GUI functions. --- @usage --- local helper = require("druid.helper") --- helper.centrate_nodes(0, node_1, node_2) --- @module Helper --- @alias druid.helper - local const = require("druid.const") +-- Localize functions for better performance +local gui_get_node = gui.get_node +local gui_get = gui.get +local gui_pick_node = gui.pick_node + +---The helper module contains various functions that are used in the Druid library. +---You can use these functions in your projects as well. +---@class druid.helper local M = {} + local POSITION_X = hash("position.x") local SCALE_X = hash("scale.x") local SIZE_X = hash("size.x") - local function get_text_width(text_node) if text_node then local text_metrics = M.get_text_metrics_from_node(text_node) - local text_scale = gui.get(text_node, SCALE_X) + local text_scale = gui_get(text_node, SCALE_X) return text_metrics.width * text_scale end @@ -28,7 +27,7 @@ end local function get_icon_width(icon_node) if icon_node then - return gui.get(icon_node, SIZE_X) * gui.get(icon_node, SCALE_X) -- icon width + return gui_get(icon_node, SIZE_X) * gui_get(icon_node, SCALE_X) -- icon width end return 0 @@ -40,45 +39,45 @@ local function is_text_node(node) end ---- Text node or icon node can be nil +---Text node or icon node can be nil local function get_width(node) return is_text_node(node) and get_text_width(node) or get_icon_width(node) end ---- Center two nodes. --- Nodes will be center around 0 x position --- text_node will be first (at left side) --- @function helper.centrate_text_with_icon --- @tparam text|nil text_node Gui text node --- @tparam box|nil icon_node Gui box node --- @tparam number margin Offset between nodes --- @local +---Center two nodes. +---Nodes will be center around 0 x position +---text_node will be first (at left side) +---@param text_node node|nil Gui text node +---@param icon_node node|nil Gui box node +---@param margin number Offset between nodes +---@return number width Total width of the centrated elements +---@local function M.centrate_text_with_icon(text_node, icon_node, margin) return M.centrate_nodes(margin, text_node, icon_node) end ---- Center two nodes. --- Nodes will be center around 0 x position --- icon_node will be first (at left side) --- @function helper.centrate_icon_with_text --- @tparam box|nil icon_node Gui box node --- @tparam text|nil text_node Gui text node --- @tparam number|nil margin Offset between nodes --- @local +---Center two nodes. +---Nodes will be center around 0 x position +---icon_node will be first (at left side) +---@param icon_node node|nil Gui box node +---@param text_node node|nil Gui text node +---@param margin number|nil Offset between nodes +---@return number width Total width of the centrated elements +---@local function M.centrate_icon_with_text(icon_node, text_node, margin) return M.centrate_nodes(margin, icon_node, text_node) end ---- Centerate nodes by x position with margin. --- --- This functions calculate total width of nodes and set position for each node. --- The centrate will be around 0 x position. --- @function helper.centrate_nodes --- @tparam number|nil margin Offset between nodes --- @param ... Gui nodes +---Centerate nodes by x position with margin. +--- +---This functions calculate total width of nodes and set position for each node. +---The centrate will be around 0 x position. +---@param margin number|nil Offset between nodes +---@param ... node Nodes to centrate +---@return number width Total width of the centrated elements function M.centrate_nodes(margin, ...) margin = margin or 0 @@ -113,36 +112,61 @@ function M.centrate_nodes(margin, ...) end ---- Get current screen stretch multiplier for each side --- @function helper.get_screen_aspect_koef --- @treturn number stretch_x --- @treturn number stretch_y +---Get GUI node from string name, node itself, or template/nodes structure +---@param node_id string|node The node name or node itself +---@param template string|nil Full path to the template +---@param nodes table|nil Nodes created with gui.clone_tree +---@return node The requested node +function M.get_node(node_id, template, nodes) + if type(node_id) ~= "string" then + -- Assume it's already node from gui.get_node + return node_id + end + + -- If template is set, then add it to the node_id + if template and #template > 0 then + node_id = template .. "/" .. node_id + end + + -- If nodes is set, then try to find node in it + if nodes then + return nodes[node_id] + end + + return gui_get_node(node_id) +end + + +---Get current screen stretch multiplier for each side +---@return number stretch_x +---@return number stretch_y function M.get_screen_aspect_koef() local window_x, window_y = window.get_size() + local stretch_x = window_x / gui.get_width() local stretch_y = window_y / gui.get_height() - return stretch_x / math.min(stretch_x, stretch_y), - stretch_y / math.min(stretch_x, stretch_y) + local stretch_koef = math.min(stretch_x, stretch_y) + + local koef_x = window_x / (stretch_koef * sys.get_config_int("display.width")) + local koef_y = window_y / (stretch_koef * sys.get_config_int("display.height")) + + return koef_x, koef_y end ---- Get current GUI scale for each side --- @function helper.get_gui_scale --- @treturn number scale_x --- @treturn number scale_y +---Get current GUI scale +---@return number scale function M.get_gui_scale() local window_x, window_y = window.get_size() - return math.min(window_x / gui.get_width(), - window_y / gui.get_height()) + return math.min(window_x / gui.get_width(), window_y / gui.get_height()) end ---- Move value from current to target value with step amount --- @function helper.step --- @tparam number current Current value --- @tparam number target Target value --- @tparam number step Step amount --- @treturn number New value +---Move value from current to target value with step amount +---@param current number Current value +---@param target number Target value +---@param step number Step amount +---@return number New value function M.step(current, target, step) if current < target then return math.min(current + step, target) @@ -152,43 +176,44 @@ function M.step(current, target, step) end ---- Clamp value between min and max --- @function helper.clamp --- @tparam number a Value --- @tparam number min Min value --- @tparam number max Max value --- @treturn number Clamped value -function M.clamp(a, min, max) - if min > max then - min, max = max, min +---Clamp value between min and max. Works with nil values and swap min and max if needed. +---@param value number Value +---@param v1 number|nil Min value. If nil, value will be clamped to positive infinity +---@param v2 number|nil Max value If nil, value will be clamped to negative infinity +---@return number value Clamped value +function M.clamp(value, v1, v2) + if v1 and v2 then + if v1 > v2 then + v1, v2 = v2, v1 + end end - if a >= min and a <= max then - return a - elseif a < min then - return min - else - return max + if v1 and value < v1 then + return v1 end + + if v2 and value > v2 then + return v2 + end + + return value end ---- Calculate distance between two points --- @function helper.distance --- @tparam number x1 First point x --- @tparam number y1 First point y --- @tparam number x2 Second point x --- @tparam number y2 Second point y --- @treturn number Distance +---Calculate distance between two points +---@param x1 number First point x +---@param y1 number First point y +---@param x2 number Second point x +---@param y2 number Second point y +---@return number distance function M.distance(x1, y1, x2, y2) return math.sqrt((x2 - x1) ^ 2 + (y2 - y1) ^ 2) end ---- Return sign of value (-1, 0, 1) --- @function helper.sign --- @tparam number val Value --- @treturn number Sign +---Return sign of value +---@param val number Value +---@return number sign Sign of value, -1, 0 or 1 function M.sign(val) if val == 0 then return 0 @@ -198,47 +223,43 @@ function M.sign(val) end ---- Round number to specified decimal places --- @function helper.round --- @tparam number num Number --- @tparam number|nil num_decimal_places Decimal places --- @treturn number Rounded number +---Round number to specified decimal places +---@param num number Number +---@param num_decimal_places number|nil Decimal places +---@return number value Rounded number function M.round(num, num_decimal_places) local mult = 10^(num_decimal_places or 0) return math.floor(num * mult + 0.5) / mult end ---- Lerp between two values --- @function helper.lerp --- @tparam number a First value --- @tparam number b Second value --- @tparam number t Lerp amount --- @treturn number Lerped value +---Lerp between two values +---@param a number First value +---@param b number Second value +---@param t number Lerp amount +---@return number value Lerped value function M.lerp(a, b, t) return a + (b - a) * t end ---- Check if value is in array and return index of it --- @function helper.contains --- @tparam table t Array --- @param value Value --- @treturn number|nil Index of value or nil -function M.contains(t, value) - for i = 1, #t do - if t[i] == value then - return i +---Check if value contains in array +---@param array any[] Array to check +---@param value any Value +---@return number|nil index Index of value in array or nil if value not found +function M.contains(array, value) + for index = 1, #array do + if array[index] == value then + return index end end return nil end ---- Make a copy table with all nested tables --- @function helper.deepcopy --- @tparam table orig_table Original table --- @treturn table Copy of original table +---Make a copy table with all nested tables +---@param orig_table table Original table +---@return table Copy of original table function M.deepcopy(orig_table) local orig_type = type(orig_table) local copy @@ -254,11 +275,10 @@ function M.deepcopy(orig_table) end ---- Add all elements from source array to the target array --- @function helper.add_array --- @tparam any[] target Array to put elements from source --- @tparam any[]|nil source The source array to get elements from --- @treturn any[] The target array +---Add all elements from source array to the target array +---@param target any[] Array to put elements from source +---@param source any[]|nil The source array to get elements from +---@return any[] The target array function M.add_array(target, source) assert(target) @@ -274,37 +294,35 @@ function M.add_array(target, source) end ---- Make a check with gui.pick_node, but with additional node_click_area check. --- @function helper.pick_node --- @tparam node node --- @tparam number x --- @tparam number y --- @tparam node|nil node_click_area --- @local +---Make a check with gui.pick_node, but with additional node_click_area check. +---@param node node +---@param x number +---@param y number +---@param node_click_area node|nil Additional node to check for click area. If nil, only node will be checked +---@local function M.pick_node(node, x, y, node_click_area) - local is_pick = gui.pick_node(node, x, y) + local is_pick = gui_pick_node(node, x, y) if node_click_area then - is_pick = is_pick and gui.pick_node(node_click_area, x, y) + is_pick = is_pick and gui_pick_node(node_click_area, x, y) end return is_pick end ---- Get node size adjusted by scale --- @function helper.get_scaled_size --- @tparam node node GUI node --- @treturn vector3 Scaled size + +---Get size of node with scale multiplier +---@param node node GUI node +---@return vector3 scaled_size function M.get_scaled_size(node) - return vmath.mul_per_elem(gui.get_size(node), gui.get_scale(node)) + return vmath.mul_per_elem(gui.get_size(node), gui.get_scale(node)) --[[@as vector3]] end ---- Get cumulative parent's node scale --- @function helper.get_scene_scale --- @tparam node node Gui node --- @tparam boolean|nil include_passed_node_scale True if add current node scale to result --- @treturn vector3 The scene node scale +---Get cumulative parent's node scale +---@param node node Gui node +---@param include_passed_node_scale boolean|nil True if add current node scale to result +---@return vector3 The scene node scale function M.get_scene_scale(node, include_passed_node_scale) local scale = include_passed_node_scale and gui.get_scale(node) or vmath.vector3(1) local parent = gui.get_parent(node) @@ -317,10 +335,9 @@ function M.get_scene_scale(node, include_passed_node_scale) end ---- Return closest non inverted clipping parent node for given node --- @function helper.get_closest_stencil_node --- @tparam node node GUI node --- @treturn node|nil The closest stencil node or nil +---Return closest non inverted clipping parent node for given node +---@param node node GUI node +---@return node|nil stencil_node The closest stencil node or nil function M.get_closest_stencil_node(node) if not node then return nil @@ -342,37 +359,43 @@ function M.get_closest_stencil_node(node) end ---- Get node offset for given GUI pivot. --- --- Offset shown in [-0.5 .. 0.5] range, where -0.5 is left or bottom, 0.5 is right or top. --- @function helper.get_pivot_offset --- @tparam number pivot The gui.PIVOT_* constant --- @treturn vector3 Vector offset with [-0.5..0.5] values -function M.get_pivot_offset(pivot) - return const.PIVOTS[pivot] +---Get pivot offset for given pivot or node +---Offset shown in [-0.5 .. 0.5] range, where -0.5 is left or bottom, 0.5 is right or top. +---@param pivot_or_node number|node GUI pivot or node +---@return vector3 offset The pivot offset +function M.get_pivot_offset(pivot_or_node) + if type(pivot_or_node) == "number" then + return const.PIVOTS[pivot_or_node] + end + return const.PIVOTS[gui.get_pivot(pivot_or_node)] end ---- Check if device is native mobile (Android or iOS) --- @function helper.is_mobile --- @treturn boolean Is mobile +---Check if device is desktop +---@return boolean +function M.is_desktop() + return const.CURRENT_SYSTEM_NAME == const.OS.WINDOWS or const.CURRENT_SYSTEM_NAME == const.OS.MAC or const.CURRENT_SYSTEM_NAME == const.OS.LINUX +end + + + +---Check if device is native mobile (Android or iOS) +---@return boolean Is mobile function M.is_mobile() - return const.CURRENT_SYSTEM_NAME == const.OS.IOS or - const.CURRENT_SYSTEM_NAME == const.OS.ANDROID + local sys_name = const.CURRENT_SYSTEM_NAME + return sys_name == const.OS.IOS or sys_name == const.OS.ANDROID end ---- Check if device is HTML5 --- @function helper.is_web --- @treturn boolean Is web +---Check if device is HTML5 +---@return boolean function M.is_web() return const.CURRENT_SYSTEM_NAME == const.OS.BROWSER end ---- Check if device is HTML5 mobile --- @function helper.is_web_mobile --- @treturn boolean Is web mobile +---Check if device is HTML5 mobile +---@return boolean function M.is_web_mobile() if html5 then return html5.run("(typeof window.orientation !== 'undefined') || (navigator.userAgent.indexOf('IEMobile') !== -1);") == "true" @@ -381,18 +404,16 @@ function M.is_web_mobile() end ---- Check if device is mobile and can support multitouch --- @function helper.is_multitouch_supported --- @treturn boolean Is multitouch supported +---Check if device is mobile and can support multitouch +---@return boolean is_multitouch Is multitouch supported function M.is_multitouch_supported() return M.is_mobile() or M.is_web_mobile() end ---- Simple table to one-line string converter --- @function helper.table_to_string --- @tparam table t --- @treturn string +---Simple table to one-line string converter +---@param t table +---@return string function M.table_to_string(t) if not t then return "" @@ -411,20 +432,19 @@ function M.table_to_string(t) end ---- Distance from node position to his borders --- @function helper.get_border --- @tparam node node GUI node --- @tparam vector3|nil offset Offset from node position. Pass current node position to get non relative border values --- @treturn vector4 Vector4 with border values (left, top, right, down) +---Distance from node position to his borders +---@param node node GUI node +---@param offset vector3|nil Offset from node position. Pass current node position to get non relative border values +---@return vector4 border Vector4 with border values (left, top, right, down) function M.get_border(node, offset) local pivot = gui.get_pivot(node) local pivot_offset = M.get_pivot_offset(pivot) local size = M.get_scaled_size(node) local border = vmath.vector4( - -size.x*(0.5 + pivot_offset.x), - size.y*(0.5 - pivot_offset.y), - size.x*(0.5 - pivot_offset.x), - -size.y*(0.5 + pivot_offset.y) + -size.x * (0.5 + pivot_offset.x), + size.y * (0.5 - pivot_offset.y), + size.x * (0.5 - pivot_offset.x), + -size.y * (0.5 + pivot_offset.y) ) if offset then @@ -438,23 +458,20 @@ function M.get_border(node, offset) end ---- Get text metric from GUI node. --- @function helper.get_text_metrics_from_node --- @tparam node text_node --- @treturn GUITextMetrics --- @usage --- type GUITextMetrics = { --- width: number, --- height: number, --- max_ascent: number, --- max_descent: number --- } +local TEXT_METRICS_OPTIONS = { + line_break = false, + tracking = 0, + leading = 0, + width = 0, +} + +---Get text metric from GUI node. +---@param text_node node +---@return GUITextMetrics function M.get_text_metrics_from_node(text_node) - local font_resource = gui.get_font_resource(gui.get_font(text_node)) - local options = { - tracking = gui.get_tracking(text_node), - line_break = gui.get_line_break(text_node), - } + local options = TEXT_METRICS_OPTIONS + options.tracking = gui.get_tracking(text_node) + options.line_break = gui.get_line_break(text_node) -- Gather other options only if it used in node if options.line_break then @@ -462,19 +479,18 @@ function M.get_text_metrics_from_node(text_node) options.leading = gui.get_leading(text_node) end + local font_resource = gui.get_font_resource(gui.get_font(text_node)) return resource.get_text_metrics(font_resource, gui.get_text(text_node), options) end ---- Add value to array with shift policy --- --- Shift policy can be: left, right, no_shift --- @function helper.insert_with_shift --- @tparam table array Array --- @param any Item to insert --- @tparam number|nil index Index to insert. If nil, item will be inserted at the end of array --- @tparam number|nil shift_policy The druid_const.SHIFT.* constant --- @treturn any Inserted item +---Add value to array with shift policy +---Shift policy can be: left, right, no_shift +---@param array table Array +---@param item any Item to insert +---@param index number|nil Index to insert. If nil, item will be inserted at the end of array +---@param shift_policy number|nil The druid_const.SHIFT.* constant +---@return any Inserted item function M.insert_with_shift(array, item, index, shift_policy) shift_policy = shift_policy or const.SHIFT.RIGHT @@ -498,14 +514,12 @@ function M.insert_with_shift(array, item, index, shift_policy) end ---- Remove value from array with shift policy --- +---Remove value from array with shift policy -- Shift policy can be: left, right, no_shift --- @function helper.remove_with_shift --- @tparam table array Array --- @tparam number|nil index Index to remove. If nil, item will be removed from the end of array --- @tparam number|nil shift_policy The druid_const.SHIFT.* constant --- @treturn any Removed item +---@param array any[] Array +---@param index number|nil Index to remove. If nil, item will be removed from the end of array +---@param shift_policy number|nil The druid_const.SHIFT.* constant +---@return any Removed item function M.remove_with_shift(array, index, shift_policy) shift_policy = shift_policy or const.SHIFT.RIGHT @@ -530,30 +544,140 @@ function M.remove_with_shift(array, index, shift_policy) end ---- Show deprecated message. Once time per message --- @function helper.deprecated --- @tparam string message The deprecated message --- @local -local _deprecated_messages = {} -function M.deprecated(message) - if _deprecated_messages[message] then - return +---Get full position of node in the GUI tree +---@param node node GUI node +---@param root node|nil GUI root node to stop search +function M.get_full_position(node, root) + local position = gui.get_position(node) + local parent = gui.get_parent(node) + while parent and parent ~= root do + local parent_position = gui.get_position(parent) + position.x = position.x + parent_position.x + position.y = position.y + parent_position.y + parent = gui.get_parent(parent) end - print("[Druid]: " .. message) - _deprecated_messages[message] = true + return position end ---- Show message to require component --- @local -function M.require_component_message(component_name, component_type) - component_type = component_type or "extended" +---@class druid.system.animation_data +---@field frames table> List of frames with uv coordinates and size +---@field width number Width of the animation +---@field height number Height of the animation +---@field fps number Frames per second +---@field current_frame number Current frame +---@field node node Node with flipbook animation +---@field v vector4 Vector with UV coordinates and size - print(string.format("[Druid]: The component %s is %s component. You have to register it via druid.register to use it", component_name, component_type)) - print("[Druid]: Use next code:") - print(string.format('local %s = require("druid.%s.%s")', component_name, component_type, component_name)) - print(string.format('druid.register("%s", %s)', component_name, component_name)) + +---Source: https://github.com/Dragosha/defold-sprite-repeat/blob/main/node_repeat/node_repeat.lua +---Thanks to Dragosha! ( ・ω・ ) < Hey friend! +---@param node node +---@param atlas_path string Path to the atlas +---@return druid.system.animation_data +function M.get_animation_data_from_node(node, atlas_path) + local atlas_data = resource.get_atlas(atlas_path) + local tex_info = resource.get_texture_info(atlas_data.texture) + local tex_w = tex_info.width + local tex_h = tex_info.height + + local animation_data + + local sprite_image_id = gui.get_flipbook(node) + for _, animation in ipairs(atlas_data.animations) do + if hash(animation.id) == sprite_image_id then + animation_data = animation + break + end + end + assert(animation_data, "Unable to find image " .. sprite_image_id) + + local frames = {} + for index = animation_data.frame_start, animation_data.frame_end - 1 do + local uvs = atlas_data.geometries[index].uvs + assert(#uvs == 8, "Sprite trim mode should be disabled for the images.") + + -- UV texture coordinates + -- 1 + -- ^ V + -- | + -- | + -- | U + -- 0-------> 1 + + -- uvs = { + -- 0, 0, + -- 0, height, + -- width, height, + -- width, 0 + -- }, + -- Point indeces (Point number {uv_index_x, uv_index_y}) + -- geometries.indices = {0 (1,2), 1(3,4), 2(5,6), 0(1,2), 2(5,6), 3(7,8)} + -- 1------2 + -- | / | + -- | A / | + -- | / B | + -- | / | + -- 0------3 + + local width = uvs[5] - uvs[1] -- Width of sprite region + local height = uvs[2] - uvs[4] -- Height of sprite region + local is_rotated = height < 0 -- In case of rotated sprite + + local x_left = uvs[1] + local y_bottom = uvs[2] + local x_right = uvs[5] + local y_top = uvs[6] + + -- Okay now it's correct for non rotated + local uv_coord = vmath.vector4( + x_left / tex_w, + (tex_h - y_bottom) / tex_h, + x_right / tex_w, + (tex_h - y_top) / tex_h + ) + + if is_rotated then + -- In case the atlas has clockwise rotated sprite. + -- 0---------------1 + -- | \ A | + -- | \ | + -- | \ | + -- | B \ | + -- 3---------------2 + height = -height + + uv_coord.x, uv_coord.y, uv_coord.z, uv_coord.w = uv_coord.y, uv_coord.z, uv_coord.w, uv_coord.x + + -- Update uv_coord + --uv_coord = vmath.vector4( + -- u1 / tex_w, + -- (tex_h - v2) / tex_h, + -- u2 / tex_w, + -- (tex_h - v1) / tex_h + --) + end + + local frame = { + uv_coord = uv_coord, + w = width, + h = height, + uv_rotated = is_rotated and vmath.vector4(0, 1, 0, 0) or vmath.vector4(1, 0, 0, 0) + } + + table.insert(frames, frame) + end + + return { + frames = frames, + width = animation_data.width, + height = animation_data.height, + fps = animation_data.fps, + v = vmath.vector4(1, 1, animation_data.width, animation_data.height), + current_frame = 1, + node = node, + } end diff --git a/druid/images/icons/icon_arrow.png b/druid/images/icons/icon_arrow.png new file mode 100644 index 0000000..40fbf2a Binary files /dev/null and b/druid/images/icons/icon_arrow.png differ diff --git a/druid/images/icons/icon_drag.png b/druid/images/icons/icon_drag.png new file mode 100644 index 0000000..3bd2c35 Binary files /dev/null and b/druid/images/icons/icon_drag.png differ diff --git a/druid/images/panels/rect_round2_width2.png b/druid/images/panels/rect_round2_width2.png new file mode 100644 index 0000000..8084114 Binary files /dev/null and b/druid/images/panels/rect_round2_width2.png differ diff --git a/druid/materials/gui_world/gui_world.material b/druid/materials/gui_world/gui_world.material new file mode 100644 index 0000000..62671ac --- /dev/null +++ b/druid/materials/gui_world/gui_world.material @@ -0,0 +1,8 @@ +name: "gui_world" +tags: "tile" +vertex_program: "/builtins/materials/gui.vp" +fragment_program: "/builtins/materials/gui.fp" +vertex_constants { + name: "view_proj" + type: CONSTANT_TYPE_VIEWPROJ +} diff --git a/druid/materials/stencil/gui_stencil.fp b/druid/materials/stencil/gui_stencil.fp new file mode 100644 index 0000000..cc58610 --- /dev/null +++ b/druid/materials/stencil/gui_stencil.fp @@ -0,0 +1,18 @@ +#version 140 + +uniform sampler2D texture_sampler; + +in vec2 var_texcoord0; +in vec4 var_color; + +out vec4 color_out; + +void main() { + lowp vec4 tex = texture(texture_sampler, var_texcoord0.xy); + + if (tex.a < 0.5) { + discard; + } + + color_out = tex * var_color; +} diff --git a/druid/materials/stencil/gui_stencil.material b/druid/materials/stencil/gui_stencil.material new file mode 100644 index 0000000..e994c21 --- /dev/null +++ b/druid/materials/stencil/gui_stencil.material @@ -0,0 +1,8 @@ +name: "repeat" +tags: "gui" +vertex_program: "/builtins/materials/gui.vp" +fragment_program: "/druid/materials/stencil/gui_stencil.fp" +vertex_constants { + name: "view_proj" + type: CONSTANT_TYPE_VIEWPROJ +} diff --git a/druid/styles/default/style.lua b/druid/styles/default/style.lua index 03c722d..08c3195 100644 --- a/druid/styles/default/style.lua +++ b/druid/styles/default/style.lua @@ -1,6 +1,3 @@ --- Copyright (c) 2021 Maksim Tuprikov . This code is licensed under MIT license - -local const = require("druid.const") local settings = require("druid.system.settings") local M = {} @@ -63,7 +60,7 @@ M["hover"] = { } M["drag"] = { - DRAG_DEADZONE = 10, -- Size in pixels of drag deadzone + DRAG_DEADZONE = 4, -- Size in pixels of drag deadzone NO_USE_SCREEN_KOEF = false, } @@ -132,7 +129,7 @@ M["input"] = { M["text"] = { TRIM_POSTFIX = "...", - DEFAULT_ADJUST = const.TEXT_ADJUST.DOWNSCALE + DEFAULT_ADJUST = "downscale" } diff --git a/druid/system/druid_annotations.lua b/druid/system/druid_annotations.lua new file mode 100644 index 0000000..2e30ddf --- /dev/null +++ b/druid/system/druid_annotations.lua @@ -0,0 +1,66 @@ +---@class druid.widget: druid.component +---@field druid druid.instance Ready to use druid instance + +---@class druid.logger +---@field trace fun(message: string, context: any) +---@field debug fun(message: string, context: any) +---@field info fun(message: string, context: any) +---@field warn fun(message: string, context: any) +---@field error fun(message: string, context: any) + +---@class GUITextMetrics +---@field width number +---@field height number +---@field max_ascent number +---@field max_descent number +---@field offset_x number +---@field offset_y number + +---@class utf8 +---@field len fun(s: string):number +---@field sub fun(s: string, start_index: number, length: number) +---@field reverse fun() +---@field char fun() +---@field unicode fun() +---@field gensub fun() +---@field byte fun() +---@field find fun() +---@field match fun(s: string, m: string) +---@field gmatch fun(s: string, m: string) +---@field gsub fun() +---@field dump fun() +---@field format fun() +---@field lower fun() +---@field upper fun() +---@field rep fun() + +-- This one should be a part of Defold annotations +---@class action +---@field value number The amount of input given by the user. This is usually 1 for buttons and 0-1 for analogue inputs. This is not present for mouse movement. +---@field pressed boolean If the input was pressed this frame. This is not present for mouse movement. +---@field released boolean If the input was released this frame. This is not present for mouse movement. +---@field repeated boolean If the input was repeated this frame. This is similar to how a key on a keyboard is repeated when you hold it down. This is not present for mouse movement. +---@field x number The x value of a pointer device, if present. +---@field y number The y value of a pointer device, if present. +---@field screen_x number The screen space x value of a pointer device, if present. +---@field screen_y number The screen space y value of a pointer device, if present. +---@field dx number The change in x value of a pointer device, if present. +---@field dy number The change in y value of a pointer device, if present. +---@field screen_dx number The change in screen space x value of a pointer device, if present. +---@field screen_dy number The change in screen space y value of a pointer device, if present. +---@field gamepad number The index of the gamepad device that provided the input. +---@field touch touch[] List of touch input, one element per finger, if present. See table below about touch input +---@field text string The text input. + +---@class touch +---@field id number A number identifying the touch input during its duration. +---@field pressed boolean True if the finger was pressed this frame. +---@field released boolean True if the finger was released this frame. +---@field tap_count number Number of taps, one for single, two for double-tap, etc +---@field x number The x touch location. +---@field y number The y touch location. +---@field dx number The change in x value. +---@field dy number The change in y value. +---@field acc_x number|nil Accelerometer x value (if present). +---@field acc_y number|nil Accelerometer y value (if present). +---@field acc_z number|nil Accelerometer z value (if present). diff --git a/druid/system/druid_instance.lua b/druid/system/druid_instance.lua index 56de63f..08c8f33 100755 --- a/druid/system/druid_instance.lua +++ b/druid/system/druid_instance.lua @@ -1,99 +1,28 @@ --- Copyright (c) 2021 Maksim Tuprikov . This code is licensed under MIT license - ---- Druid Instance which you use for component creation. --- --- # Component List # --- --- For a list of all available components, please refer to the "See Also" section. --- --- # Notes # --- --- Please review the following API pages: --- --- @{Helper} - A useful set of functions for working with GUI nodes, such as centering nodes, get GUI scale ratio, etc --- --- @{DruidEvent} - The core event system in Druid. Learn how to subscribe to any event in every Druid component. --- --- @{BaseComponent} - The parent class of all Druid components. You can find all default component methods there. --- --- # Tech Info # --- --- • To use Druid, you need to create a Druid instance first. This instance is used to spawn components. --- --- • When using Druid components, provide the node name as a string argument directly. Avoid calling gui.get_node() before passing it to the component. Because Druid can get nodes from template and cloned gui nodes. --- --- • All Druid and component methods are called using the colon operator (e.g., self.druid:new_button()). --- @usage --- local druid = require("druid.druid") --- --- local function close_window(self) --- print("Yeah! You closed the game!") --- end --- --- function init(self) --- self.druid = druid.new(self) --- --- -- Call all druid instance function with ":" syntax: --- local text = self.druid:new_text("text_header", "Hello Druid!") --- local button = self.druid:new_button("button_close", close_window) --- --- -- You not need to save component reference if not need it --- self.druid:new_back_handler(close_window) --- end --- --- @module DruidInstance --- @alias druid_instance --- @see BackHandler --- @see Blocker --- @see Button --- @see Checkbox --- @see CheckboxGroup --- @see DataList --- @see Drag --- @see DynamicGrid --- @see Hotkey --- @see Hover --- @see Input --- @see LangText --- @see Layout --- @see Progress --- @see RadioGroup --- @see RichInput --- @see RichText --- @see Scroll --- @see Slider --- @see StaticGrid --- @see Swipe --- @see Text --- @see Timer +-- Hello, Defolder! Wish you a good day! +local events = require("event.events") +local const = require("druid.const") local helper = require("druid.helper") local settings = require("druid.system.settings") -local base_component = require("druid.component") +local druid_component = require("druid.component") -local drag = require("druid.base.drag") -local text = require("druid.base.text") -local hover = require("druid.base.hover") -local scroll = require("druid.base.scroll") -local button = require("druid.base.button") -local blocker = require("druid.base.blocker") -local static_grid = require("druid.base.static_grid") -local back_handler = require("druid.base.back_handler") +---The Druid Factory used to create components +---@class druid.instance +---@field package input_inited boolean Used to check if input is initialized +---@field package components_all druid.component[] All created components +---@field package components_interest table All components sorted by interest +---@field package _context table Druid context, usually a self of gui script +---@field package _style table Druid style table +---@field package _late_init_timer_id number Timer id for late init +---@field package _late_remove druid.component[] Components to be removed on late update +---@field package _is_late_remove_enabled boolean Used to check if components should be removed on late update +---@field package _input_blacklist druid.component[]|nil Components that should not receive input +---@field package _input_whitelist druid.component[]|nil Components that should receive input +local M = {} --- To use this components, you should register them first --- local input = require("druid.extended.input") --- local swipe = require("druid.extended.swipe") --- local slider = require("druid.extended.slider") --- local progress = require("druid.extended.progress") --- local data_list = require("druid.extended.data_list") --- local lang_text = require("druid.extended.lang_text") --- local timer_component = require("druid.extended.timer") - -local DruidInstance = {} - -local MSG_ADD_FOCUS = hash("acquire_input_focus") -local MSG_REMOVE_FOCUS = hash("release_input_focus") local IS_NO_AUTO_INPUT = sys.get_config_int("druid.no_auto_input", 0) == 1 +local INTERESTS_CACHE = {} -- Cache interests per component class in runtime +local DRUID_INSTANCE_METATABLE = { __index = M } local function set_input_state(self, is_input_inited) if IS_NO_AUTO_INPUT or (self.input_inited == is_input_inited) then @@ -101,26 +30,28 @@ local function set_input_state(self, is_input_inited) end self.input_inited = is_input_inited - msg.post(".", is_input_inited and MSG_ADD_FOCUS or MSG_REMOVE_FOCUS) + msg.post(".", is_input_inited and "acquire_input_focus" or "release_input_focus") end --- The a and b - two Druid components --- @local -local function sort_input_comparator(a, b) - local a_priority = a:get_input_priority() - local b_priority = b:get_input_priority() +---@private +---@param component_a druid.component +---@param component_b druid.component +---@return boolean +local function sort_input_comparator(component_a, component_b) + local a_priority = component_a:get_input_priority() + local b_priority = component_b:get_input_priority() if a_priority ~= b_priority then return a_priority < b_priority end - return a:get_uid() < b:get_uid() + return component_a:get_uid() < component_b:get_uid() end local function sort_input_stack(self) - local input_components = self.components_interest[base_component.ON_INPUT] + local input_components = self.components_interest[const.ON_INPUT] if not input_components then return end @@ -129,24 +60,70 @@ local function sort_input_stack(self) end --- Create the Druid component instance -local function create(self, instance_class) - local instance = instance_class() - instance:setup_component(self, self._context, self._style, instance_class) +---Get current component interests +---@param instance druid.component +---@return table interest_list List of component interests +local function get_component_interests(instance) + ---@diagnostic disable-next-line: invisible + local instance_class = instance._meta.instance_class + if INTERESTS_CACHE[instance_class] then + return INTERESTS_CACHE[instance_class] + end + local interests = {} + for index = 1, #const.ALL_INTERESTS do + local interest = const.ALL_INTERESTS[index] + if instance[interest] and type(instance[interest]) == "function" then + table.insert(interests, interest) + end + end + + INTERESTS_CACHE[instance_class] = interests + return INTERESTS_CACHE[instance_class] +end + + +---@private +---@param self druid.instance +---@param instance druid.component +local function register_interests(self, instance) table.insert(self.components_all, instance) - - local register_to = instance:__get_interests() - for i = 1, #register_to do - local interest = register_to[i] + local interest_list = get_component_interests(instance) + for i = 1, #interest_list do + local interest = interest_list[i] table.insert(self.components_interest[interest], instance) end +end + + +---Create the Druid component instance +---@param self druid.instance +---@param instance_class druid.component +---@return druid.component +local function create(self, instance_class) + local instance = instance_class() + instance:setup_component(self, self:get_context(), self:get_style(), instance_class) + register_interests(self, instance) return instance end --- Before processing any input check if we need to update input stack +---@private +---@param self druid.instance +---@param widget_class druid.widget +---@return druid.widget +local function create_widget(self, widget_class) + local instance = druid_component.create_widget(self, widget_class, self:get_context()) + register_interests(self, instance) + + return instance +end + + +---Before processing any input check if we need to update input stack +---@param self druid.instance +---@param components table[] local function check_sort_input_stack(self, components) if not components or #components == 0 then return @@ -168,8 +145,10 @@ local function check_sort_input_stack(self, components) end ---- Check whitelists and blacklists for input components -local function can_use_input_component(self, component) +---Check whitelists and blacklists for input components +---@param component druid.component The component to check +---@return boolean is_can_use True if component can be processed on input step +function M:_can_use_input_component(component) local can_by_whitelist = true local can_by_blacklist = true @@ -185,27 +164,6 @@ local function can_use_input_component(self, component) end -local function process_input(self, action_id, action, components) - local is_input_consumed = false - - for i = #components, 1, -1 do - local component = components[i] - local meta = component._meta - if meta.input_enabled and can_use_input_component(self, component) then - if not is_input_consumed then - is_input_consumed = component:on_input(action_id, action) or false - else - if component.on_input_interrupt then - component:on_input_interrupt(action_id, action) - end - end - end - end - - return is_input_consumed -end - - local function schedule_late_init(self) if self._late_init_timer_id then return @@ -218,42 +176,46 @@ local function schedule_late_init(self) end ---- Druid class constructor --- @tparam DruidInstance self --- @tparam table context Druid context. Usually it is self of gui script --- @tparam table style Druid style table --- @local -function DruidInstance.initialize(self, context, style) +---Druid class constructor which used to create Druid components +---@param context table Druid context. Usually it is self of gui script +---@param style table? Druid style table +---@return druid.instance instance The new Druid instance +function M.create_druid_instance(context, style) + local self = setmetatable({}, DRUID_INSTANCE_METATABLE) + self._context = context self._style = style or settings.default_style - self._deleted = false self._is_late_remove_enabled = false self._late_remove = {} - self._is_debug = false - self.url = msg.url() self._input_blacklist = nil self._input_whitelist = nil self.components_all = {} self.components_interest = {} - for i = 1, #base_component.ALL_INTERESTS do - self.components_interest[base_component.ALL_INTERESTS[i]] = {} + for i = 1, #const.ALL_INTERESTS do + self.components_interest[const.ALL_INTERESTS[i]] = {} end + + events.subscribe("druid.window_event", self.on_window_event, self) + events.subscribe("druid.language_change", self.on_language_change, self) + + return self end --- Create new component. --- @tparam DruidInstance self --- @tparam BaseComponent component Component module --- @tparam any ... Other component params to pass it to component:init function --- @treturn BaseComponent Component instance -function DruidInstance.new(self, component, ...) +---Create new Druid component instance +---@generic T: druid.component +---@param component T The component class to create +---@vararg any Additional arguments to pass to the component's init function +---@return T instance The new ready to use component +function M:new(component, ...) local instance = create(self, component) if instance.init then instance:init(...) end + if instance.on_late_init or (not self.input_inited and instance.on_input) then schedule_late_init(self) end @@ -262,9 +224,8 @@ function DruidInstance.new(self, component, ...) end ---- Call this in gui_script final function. --- @tparam DruidInstance self -function DruidInstance.final(self) +---Call this in gui_script final function. +function M:final() local components = self.components_all for i = #components, 1, -1 do @@ -273,19 +234,20 @@ function DruidInstance.final(self) end end - self._deleted = true - set_input_state(self, false) + + events.unsubscribe("druid.window_event", self.on_window_event, self) + events.unsubscribe("druid.language_change", self.on_language_change, self) end ---- Remove created component from Druid instance. --- --- Component `on_remove` function will be invoked, if exist. --- @tparam DruidInstance self --- @tparam BaseComponent component Component instance --- @treturn boolean True if component was removed -function DruidInstance.remove(self, component) +---Remove created component from Druid instance. +--- +---Component `on_remove` function will be invoked, if exist. +---@generic T: druid.component +---@param component T Component instance +---@return boolean is_removed True if component was removed +function M:remove(component) if self._is_late_remove_enabled then table.insert(self._late_remove, component) return false @@ -316,9 +278,9 @@ function DruidInstance.remove(self, component) end end - local interests = component:__get_interests() - for i = 1, #interests do - local interest = interests[i] + local interest_list = get_component_interests(component) + for i = 1, #interest_list do + local interest = interest_list[i] local components = self.components_interest[interest] for j = #components, 1, -1 do if components[j] == component then @@ -331,34 +293,46 @@ function DruidInstance.remove(self, component) end ---- Druid late update function called after initialization and before the regular update step --- This function is used to check the GUI state and perform actions after all components and nodes have been created. --- An example use case is performing an auto stencil check in the GUI hierarchy for input components. --- @tparam DruidInstance self --- @local -function DruidInstance.late_init(self) - local late_init_components = self.components_interest[base_component.ON_LATE_INIT] +---Get a context of Druid instance (usually a self of gui script) +---@package +---@return any context The Druid context +function M:get_context() + return self._context +end + + +---Get a style of Druid instance +---@package +---@return table style The Druid style table +function M:get_style() + return self._style +end + + +---Druid late update function called after initialization and before the regular update step. +---This function is used to check the GUI state and perform actions after all components and nodes have been created. +---An example use case is performing an auto stencil check in the GUI hierarchy for input components. +---@private +function M:late_init() + local late_init_components = self.components_interest[const.ON_LATE_INIT] while late_init_components[1] do late_init_components[1]:on_late_init() table.remove(late_init_components, 1) end - if not self.input_inited and #self.components_interest[base_component.ON_INPUT] > 0 then + if not self.input_inited and #self.components_interest[const.ON_INPUT] > 0 then -- Input init on late init step, to be sure it goes after user go acquire input set_input_state(self, true) end end ---- Call this in gui_script update function. --- --- Used for: scroll, progress, timer components --- @tparam DruidInstance self --- @tparam number dt Delta time -function DruidInstance.update(self, dt) +---Call this in gui_script update function. +---@param dt number Delta time +function M:update(dt) self._is_late_remove_enabled = true - local components = self.components_interest[base_component.ON_UPDATE] + local components = self.components_interest[const.ON_UPDATE] for i = 1, #components do components[i]:update(dt) end @@ -368,19 +342,32 @@ function DruidInstance.update(self, dt) end ---- Call this in gui_script on_input function. --- --- Used for almost all components --- @tparam DruidInstance self --- @tparam hash action_id Action_id from on_input --- @tparam table action Action from on_input --- @treturn boolean The boolean value is input was consumed -function DruidInstance.on_input(self, action_id, action) +---Call this in gui_script on_input function. +---@param action_id hash Action_id from on_input +---@param action table Action from on_input +---@return boolean is_input_consumed The boolean value is input was consumed +function M:on_input(action_id, action) self._is_late_remove_enabled = true - local components = self.components_interest[base_component.ON_INPUT] + local components = self.components_interest[const.ON_INPUT] check_sort_input_stack(self, components) - local is_input_consumed = process_input(self, action_id, action, components) + + local is_input_consumed = false + + for i = #components, 1, -1 do + local component = components[i] + local input_enabled = component:get_input_enabled() + + if input_enabled and self:_can_use_input_component(component) then + if not is_input_consumed then + is_input_consumed = component:on_input(action_id, action) or false + else + if component.on_input_interrupt then + component:on_input_interrupt(action_id, action) + end + end + end + end self._is_late_remove_enabled = false self:_clear_late_remove() @@ -389,39 +376,20 @@ function DruidInstance.on_input(self, action_id, action) end ---- Call this in gui_script on_message function. --- --- Used for special actions. See SPECIFIC_UI_MESSAGES table --- @tparam DruidInstance self --- @tparam hash message_id Message_id from on_message --- @tparam table message Message from on_message --- @tparam url sender Sender from on_message -function DruidInstance.on_message(self, message_id, message, sender) - local specific_ui_message = base_component.SPECIFIC_UI_MESSAGES[message_id] - - if specific_ui_message == base_component.ON_MESSAGE_INPUT then - -- ON_MESSAGE_INPUT is special message, need to perform additional logic - local components = self.components_interest[base_component.ON_MESSAGE_INPUT] - if components then - for i = 1, #components do - local component = components[i] - if can_use_input_component(self, component) then - component[specific_ui_message](component, hash(message.node_id), message) - end - end - end - elseif specific_ui_message then +---Call this in gui_script on_message function. +---@param message_id hash Message_id from on_message +---@param message table Message from on_message +---@param sender url Sender from on_message +function M:on_message(message_id, message, sender) + if message_id == const.MSG_LAYOUT_CHANGED then -- Resend special message to all components with the related interest - local components = self.components_interest[specific_ui_message] - if components then - for i = 1, #components do - local component = components[i] - component[specific_ui_message](component, message, sender) - end + local components = self.components_interest[const.ON_LAYOUT_CHANGE] + for i = 1, #components do + components[i]:on_layout_change() end else -- Resend message to all components with on_message interest - local components = self.components_interest[base_component.ON_MESSAGE] + local components = self.components_interest[const.ON_MESSAGE] for i = 1, #components do components[i]:on_message(message_id, message, sender) end @@ -429,51 +397,45 @@ function DruidInstance.on_message(self, message_id, message, sender) end ---- Calls the on_focus_lost function in all related components --- This one called by on_window_callback by global window listener --- @tparam DruidInstance self --- @local -function DruidInstance.on_focus_lost(self) - local components = self.components_interest[base_component.ON_FOCUS_LOST] - for i = 1, #components do - components[i]:on_focus_lost() +---Called when the window event occurs +---@param window_event number The window event +function M:on_window_event(window_event) + if window_event == window.WINDOW_EVENT_FOCUS_LOST then + local components = self.components_interest[const.ON_FOCUS_LOST] + for i = 1, #components do + components[i]:on_focus_lost() + end + elseif window_event == window.WINDOW_EVENT_FOCUS_GAINED then + local components = self.components_interest[const.ON_FOCUS_GAINED] + for i = 1, #components do + components[i]:on_focus_gained() + end + elseif window_event == window.WINDOW_EVENT_RESIZED then + local components = self.components_interest[const.ON_WINDOW_RESIZED] + for i = 1, #components do + components[i]:on_window_resized() + end end end ---- Calls the on_focus_gained function in all related components --- This one called by on_window_callback by global window listener --- @tparam DruidInstance self --- @local -function DruidInstance.on_focus_gained(self) - local components = self.components_interest[base_component.ON_FOCUS_GAINED] - for i = 1, #components do - components[i]:on_focus_gained() - end -end - - ---- Calls the on_language_change function in all related components --- This one called by global druid.on_language_change, but can be --- call manualy to update all translations --- @tparam DruidInstance self --- @local -function DruidInstance.on_language_change(self) - local components = self.components_interest[base_component.ON_LANGUAGE_CHANGE] +---Calls the on_language_change function in all related components +---This one called by global druid.on_language_change, but can be called manually to update all translations +---@private +function M:on_language_change() + local components = self.components_interest[const.ON_LANGUAGE_CHANGE] for i = 1, #components do components[i]:on_language_change() end end ---- Set whitelist components for input processing. --- --- If whitelist is not empty and component not contains in this list, --- component will be not processed on input step --- @tparam DruidInstance self --- @tparam table|BaseComponent|nil whitelist_components The array of component to whitelist --- @treturn self @{DruidInstance} -function DruidInstance.set_whitelist(self, whitelist_components) +---Set whitelist components for input processing. +---If whitelist is not empty and component not contains in this list, +---component will be not processed on the input step +---@param whitelist_components table|druid.component[] The array of component to whitelist +---@return druid.instance self The Druid instance +function M:set_whitelist(whitelist_components) if whitelist_components and whitelist_components._component then whitelist_components = { whitelist_components } end @@ -488,14 +450,12 @@ function DruidInstance.set_whitelist(self, whitelist_components) end ---- Set blacklist components for input processing. --- --- If blacklist is not empty and component contains in this list, --- component will be not processed on input step --- @tparam DruidInstance self @{DruidInstance} --- @tparam table|BaseComponent|nil blacklist_components The array of component to blacklist --- @treturn self @{DruidInstance} -function DruidInstance.set_blacklist(self, blacklist_components) +---Set blacklist components for input processing. +---If blacklist is not empty and component is contained in this list, +---component will be not processed on the input step DruidInstance +---@param blacklist_components table|druid.component[] The array of component to blacklist +---@return druid.instance self The Druid instance +function M:set_blacklist(blacklist_components) if blacklist_components and blacklist_components._component then blacklist_components = { blacklist_components } end @@ -510,35 +470,9 @@ function DruidInstance.set_blacklist(self, blacklist_components) end ---- Set debug mode for current Druid instance. It's enable debug log messages --- @tparam DruidInstance self @{DruidInstance} --- @tparam boolean|nil is_debug --- @treturn self @{DruidInstance} --- @local -function DruidInstance.set_debug(self, is_debug) - self._is_debug = is_debug - return self -end - - ---- Log message, if is_debug mode is enabled --- @tparam DruidInstance self @{DruidInstance} --- @tparam string message --- @tparam table|nil context --- @local -function DruidInstance.log_message(self, message, context) - if not self._is_debug then - return - end - - print("[Druid]:", message, helper.table_to_string(context)) -end - - ---- Remove all components on late remove step --- @tparam DruidInstance self @{DruidInstance} --- @local -function DruidInstance._clear_late_remove(self) +---Remove all components on late remove step DruidInstance +---@private +function M:_clear_late_remove() if #self._late_remove == 0 then return end @@ -550,229 +484,241 @@ function DruidInstance._clear_late_remove(self) end ---- Create @{Button} component --- @tparam DruidInstance self --- @tparam string|node node The node_id or gui.get_node(node_id) --- @tparam function|nil callback Button callback --- @tparam any|nil params Button callback params --- @tparam node|string|nil anim_node Button anim node (node, if not provided) --- @treturn Button @{Button} component -function DruidInstance.new_button(self, node, callback, params, anim_node) - return DruidInstance.new(self, button, node, callback, params, anim_node) +---Create new Druid widget instance +---@generic T: druid.component +---@param widget T The widget class to create +---@param template string|nil The template name used by widget +---@param nodes table|node|string|nil The nodes table from gui.clone_tree or prefab node to use for clone or node id to clone +---@vararg any Additional arguments to pass to the widget's init function +---@return T widget The new ready to use widget +function M:new_widget(widget, template, nodes, ...) + local instance = create_widget(self, widget) + + instance.druid = instance:get_druid(template, nodes) + + if instance.init then + instance:init(...) + end + if instance.on_late_init or (not self.input_inited and instance.on_input) then + schedule_late_init(self) + end + + return instance end ---- Create @{Blocker} component --- @tparam DruidInstance self --- @tparam string|node node The node_id or gui.get_node(node_id) --- @treturn Blocker @{Blocker} component -function DruidInstance.new_blocker(self, node) - return DruidInstance.new(self, blocker, node) +local button = require("druid.base.button") +---Create Button component +---@param node string|node The node_id or gui.get_node(node_id) +---@param callback function|event|nil Button callback +---@param params any|nil Button callback params +---@param anim_node node|string|nil Button anim node (node, if not provided) +---@return druid.button button The new button component +function M:new_button(node, callback, params, anim_node) + return self:new(button, node, callback, params, anim_node) end ---- Create @{BackHandler} component --- @tparam DruidInstance self --- @tparam function|nil callback @The callback(self, custom_args) to call on back event --- @tparam any|nil params Callback argument --- @treturn BackHandler @{BackHandler} component -function DruidInstance.new_back_handler(self, callback, params) - return DruidInstance.new(self, back_handler, callback, params) +local blocker = require("druid.base.blocker") +---Create Blocker component +---@param node string|node The node_id or gui.get_node(node_id) +---@return druid.blocker blocker The new blocker component +function M:new_blocker(node) + return self:new(blocker, node) end ---- Create @{Hover} component --- @tparam DruidInstance self --- @tparam string|node node The node_id or gui.get_node(node_id) --- @tparam function|nil on_hover_callback Hover callback --- @tparam function|nil on_mouse_hover_callback Mouse hover callback --- @treturn Hover @{Hover} component -function DruidInstance.new_hover(self, node, on_hover_callback, on_mouse_hover_callback) - return DruidInstance.new(self, hover, node, on_hover_callback, on_mouse_hover_callback) +local back_handler = require("druid.base.back_handler") +---Create BackHandler component +---@param callback function|event|nil The callback(self, custom_args) to call on back event +---@param params any|nil Callback argument +---@return druid.back_handler back_handler The new back handler component +function M:new_back_handler(callback, params) + return self:new(back_handler, callback, params) end ---- Create @{Text} component --- @tparam DruidInstance self --- @tparam string|node node The node_id or gui.get_node(node_id) --- @tparam string|nil value Initial text. Default value is node text from GUI scene. --- @tparam boolean|nil no_adjust If true, text will be not auto-adjust size --- @treturn Text @{Text} component -function DruidInstance.new_text(self, node, value, no_adjust) - return DruidInstance.new(self, text, node, value, no_adjust) +local hover = require("druid.base.hover") +---Create Hover component +---@param node string|node The node_id or gui.get_node(node_id) +---@param on_hover_callback function|nil Hover callback +---@param on_mouse_hover_callback function|nil Mouse hover callback +---@return druid.hover hover The new hover component +function M:new_hover(node, on_hover_callback, on_mouse_hover_callback) + return self:new(hover, node, on_hover_callback, on_mouse_hover_callback) end ---- Create @{StaticGrid} component --- @tparam DruidInstance self --- @tparam string|node parent_node The node_id or gui.get_node(node_id). Parent of all Grid items. --- @tparam node item Element prefab. Required to get grid's item size. Can be adjusted separately. --- @tparam number|nil in_row How many nodes in row can be placed --- @treturn StaticGrid @{StaticGrid} component --- @local -function DruidInstance.new_grid(self, parent_node, item, in_row) - return DruidInstance.new(self, static_grid, parent_node, item, in_row) +local text = require("druid.base.text") +---Create Text component +---@param node string|node|druid.text The node_id or gui.get_node(node_id) +---@param value string|nil Initial text. Default value is node text from GUI scene. +---@param adjust_type string|nil Adjust type for text. By default is DOWNSCALE. Look const.TEXT_ADJUST for reference +---@return druid.text text The new text component +function M:new_text(node, value, adjust_type) + return self:new(text, node, value, adjust_type) end ---- Create @{StaticGrid} component --- @tparam DruidInstance self --- @tparam string|node parent_node The node_id or gui.get_node(node_id). Parent of all Grid items. --- @tparam string|node item Item prefab. Required to get grid's item size. Can be adjusted separately. --- @tparam number|nil in_row How many nodes in row can be placed --- @treturn StaticGrid @{StaticGrid} component -function DruidInstance.new_static_grid(self, parent_node, item, in_row) - return DruidInstance.new(self, static_grid, parent_node, item, in_row) +local static_grid = require("druid.base.static_grid") +---Create Grid component +---@param parent_node string|node The node_id or gui.get_node(node_id). Parent of all Grid items. +---@param item string|node Item prefab. Required to get grid's item size. Can be adjusted separately. +---@param in_row number|nil How many nodes can be placed in a row +---@return druid.grid grid The new grid component +function M:new_grid(parent_node, item, in_row) + return self:new(static_grid, parent_node, item, in_row) end ---- Create @{Scroll} component --- @tparam DruidInstance self --- @tparam string|node view_node The node_id or gui.get_node(node_id). Will used as user input node. --- @tparam string|node content_node The node_id or gui.get_node(node_id). Will used as scrollable node inside view_node. --- @treturn Scroll @{Scroll} component -function DruidInstance.new_scroll(self, view_node, content_node) - return DruidInstance.new(self, scroll, view_node, content_node) +local scroll = require("druid.base.scroll") +---Create Scroll component +---@param view_node string|node The node_id or gui.get_node(node_id). Will be used as user input node. +---@param content_node string|node The node_id or gui.get_node(node_id). Will be used as scrollable node inside view_node. +---@return druid.scroll scroll The new scroll component +function M:new_scroll(view_node, content_node) + return self:new(scroll, view_node, content_node) end ---- Create @{Drag} component --- @tparam DruidInstance self --- @tparam string|node node The node_id or gui.get_node(node_id). Will used as user input node. --- @tparam function|nil on_drag_callback Callback for on_drag_event(self, dx, dy) --- @treturn Drag @{Drag} component -function DruidInstance.new_drag(self, node, on_drag_callback) - return DruidInstance.new(self, drag, node, on_drag_callback) +local drag = require("druid.base.drag") +---Create Drag component +---@param node string|node The node_id or gui.get_node(node_id). Will be used as user input node. +---@param on_drag_callback function|nil Callback for on_drag_event(self, dx, dy) +---@return druid.drag drag The new drag component +function M:new_drag(node, on_drag_callback) + return self:new(drag, node, on_drag_callback) end ---- Create @{Swipe} component --- @tparam DruidInstance self --- @tparam string|node node The node_id or gui.get_node(node_id). Will used as user input node. --- @tparam function|nil on_swipe_callback Swipe callback for on_swipe_end event --- @treturn Swipe @{Swipe} component -function DruidInstance.new_swipe(self, node, on_swipe_callback) - return helper.require_component_message("swipe") +local swipe = require("druid.extended.swipe") +---Create Swipe component +---@param node string|node The node_id or gui.get_node(node_id). Will be used as user input node. +---@param on_swipe_callback function|nil Swipe callback for on_swipe_end event +---@return druid.swipe swipe The new swipe component +function M:new_swipe(node, on_swipe_callback) + return self:new(swipe, node, on_swipe_callback) end ---- Create @{DynamicGrid} component --- Deprecated --- @tparam DruidInstance self --- @tparam string|node parent_node The node_id or gui.get_node(node_id). Parent of all Grid items. --- @treturn DynamicGrid @{DynamicGrid} component -function DruidInstance.new_dynamic_grid(self, parent_node) - return helper.require_component_message("dynamic_grid") +local lang_text = require("druid.extended.lang_text") +---Create LangText component +---@param node string|node The node_id or gui.get_node(node_id) +---@param locale_id string|nil Default locale id or text from node as default +---@param adjust_type string|nil Adjust type for text node. Default: "downscale" +---@return druid.lang_text lang_text The new lang text component +function M:new_lang_text(node, locale_id, adjust_type) + return self:new(lang_text, node, locale_id, adjust_type) end ---- Create @{LangText} component --- @tparam DruidInstance self --- @tparam string|node node The_node id or gui.get_node(node_id) --- @tparam string|nil locale_id Default locale id or text from node as default --- @tparam string|nil adjust_type Adjust type for text node. Default: const.TEXT_ADJUST.DOWNSCALE --- @treturn LangText @{LangText} component -function DruidInstance.new_lang_text(self, node, locale_id, adjust_type) - return helper.require_component_message("lang_text") +local slider = require("druid.extended.slider") +---Create Slider component +---@param pin_node string|node The node_id or gui.get_node(node_id). +---@param end_pos vector3 The end position of slider +---@param callback function|nil On slider change callback +---@return druid.slider slider The new slider component +function M:new_slider(pin_node, end_pos, callback) + return self:new(slider, pin_node, end_pos, callback) end ---- Create @{Slider} component --- @tparam DruidInstance self --- @tparam string|node pin_node The_node id or gui.get_node(node_id). --- @tparam vector3 end_pos The end position of slider --- @tparam function|nil callback On slider change callback --- @treturn Slider @{Slider} component -function DruidInstance.new_slider(self, pin_node, end_pos, callback) - return helper.require_component_message("slider") +local input = require("druid.extended.input") +---Create Input component +---@param click_node string|node Button node to enable input component +---@param text_node string|node|druid.text Text node that will be changed on user input +---@param keyboard_type number|nil Gui keyboard type for input field +---@return druid.input input The new input component +function M:new_input(click_node, text_node, keyboard_type) + return self:new(input, click_node, text_node, keyboard_type) end ---- Create @{Input} component --- @tparam DruidInstance self --- @tparam string|node click_node Button node to enabled input component --- @tparam string|node|druid.text text_node Text node what will be changed on user input --- @tparam number|nil keyboard_type Gui keyboard type for input field --- @treturn Input @{Input} component -function DruidInstance.new_input(self, click_node, text_node, keyboard_type) - return helper.require_component_message("input") +local data_list = require("druid.extended.data_list") +---Create DataList component +---@param druid_scroll druid.scroll The Scroll instance for Data List component +---@param druid_grid druid.grid The Grid instance for Data List component +---@param create_function function The create function callback(self, data, index, data_list). Function should return (node, [component]) +---@return druid.data_list data_list The new data list component +function M:new_data_list(druid_scroll, druid_grid, create_function) + return self:new(data_list, druid_scroll, druid_grid, create_function) end ---- Create @{DataList} component --- @tparam DruidInstance self --- @tparam Scroll druid_scroll The Scroll instance for Data List component --- @tparam StaticGrid druid_grid The @{StaticGrid} or @{DynamicGrid} instance for Data List component --- @tparam function create_function The create function callback(self, data, index, data_list). Function should return (node, [component]) --- @treturn DataList @{DataList} component -function DruidInstance.new_data_list(self, druid_scroll, druid_grid, create_function) - return helper.require_component_message("data_list") +local timer_component = require("druid.extended.timer") +---Create Timer component +---@param node string|node Gui text node +---@param seconds_from number|nil Start timer value in seconds +---@param seconds_to number|nil End timer value in seconds +---@param callback function|nil Function on timer end +---@return druid.timer timer The new timer component +function M:new_timer(node, seconds_from, seconds_to, callback) + return self:new(timer_component, node, seconds_from, seconds_to, callback) end ---- Create @{Timer} component --- @tparam DruidInstance self --- @tparam string|node node Gui text node --- @tparam number seconds_from Start timer value in seconds --- @tparam number|nil seconds_to End timer value in seconds --- @tparam function|nil callback Function on timer end --- @treturn Timer @{Timer} component -function DruidInstance.new_timer(self, node, seconds_from, seconds_to, callback) - return helper.require_component_message("timer") +local progress = require("druid.extended.progress") +---Create Progress component +---@param node string|node Progress bar fill node or node name +---@param key string Progress bar direction: "x" or "y" +---@param init_value number|nil Initial value of progress bar. Default: 1 +---@return druid.progress progress The new progress component +function M:new_progress(node, key, init_value) + return self:new(progress, node, key, init_value) end ---- Create @{Progress} component --- @tparam DruidInstance self --- @tparam string|node node Progress bar fill node or node name --- @tparam string key Progress bar direction: const.SIDE.X or const.SIDE.Y --- @tparam number|nil init_value Initial value of progress bar. Default: 1 --- @treturn Progress @{Progress} component -function DruidInstance.new_progress(self, node, key, init_value) - return helper.require_component_message("progress") +local layout = require("druid.extended.layout") +---Create Layout component +---@param node string|node The node_id or gui.get_node(node_id). +---@param mode string|nil vertical|horizontal|horizontal_wrap. Default: horizontal +---@return druid.layout layout The new layout component +function M:new_layout(node, mode) + return self:new(layout, node, mode) end ---- Create @{Layout} component --- @tparam DruidInstance self --- @tparam string|node node The_node id or gui.get_node(node_id). --- @tparam string mode The layout mode --- @treturn Layout @{Layout} component -function DruidInstance.new_layout(self, node, mode) - return helper.require_component_message("layout") +local container = require("druid.extended.container") +---Create Container component +---@param node string|node The node_id or gui.get_node(node_id). +---@param mode string|nil Layout mode +---@param callback fun(self: druid.container, size: vector3)|nil Callback on size changed +---@return druid.container container The new container component +function M:new_container(node, mode, callback) + return self:new(container, node, mode, callback) end ---- Create @{Hotkey} component --- @tparam DruidInstance self --- @tparam string|string[] keys_array Keys for trigger action. Should contains one action key and any amount of modificator keys --- @tparam function callback The callback function --- @tparam any|nil callback_argument The argument to pass into the callback function --- @treturn Hotkey @{Hotkey} component -function DruidInstance.new_hotkey(self, keys_array, callback, callback_argument) - return helper.require_component_message("hotkey") +local hotkey = require("druid.extended.hotkey") +---Create Hotkey component +---@param keys_array string|string[] Keys for trigger action. Should contains one action key and any amount of modificator keys +---@param callback function|event|nil The callback function +---@param callback_argument any|nil The argument to pass into the callback function +---@return druid.hotkey hotkey The new hotkey component +function M:new_hotkey(keys_array, callback, callback_argument) + return self:new(hotkey, keys_array, callback, callback_argument) end ---- Create @{RichText} component. --- @tparam DruidInstance self --- @tparam string|node text_node The text node to make Rich Text --- @tparam string|nil value The initial text value. Default will be gui.get_text(text_node) --- @treturn RichText @{RichText} component -function DruidInstance.new_rich_text(self, text_node, value) - return helper.require_component_message("rich_text", "custom") +local rich_text = require("druid.custom.rich_text.rich_text") +---Create RichText component. +---@param text_node string|node The text node to make Rich Text +---@param value string|nil The initial text value. Default will be gui.get_text(text_node) +---@return druid.rich_text rich_text The new rich text component +function M:new_rich_text(text_node, value) + return self:new(rich_text, text_node, value) end ---- Create @{RichInput} component. --- As a template please check rich_input.gui layout. --- @tparam DruidInstance self --- @tparam string template The template string name --- @tparam table nodes Nodes table from gui.clone_tree --- @treturn RichInput @{RichInput} component -function DruidInstance.new_rich_input(self, template, nodes) - return helper.require_component_message("rich_input", "custom") +local rich_input = require("druid.custom.rich_input.rich_input") +---Create RichInput component. +---As a template please check rich_input.gui layout. +---@param template string The template string name +---@param nodes table|nil Nodes table from gui.clone_tree +---@return druid.rich_input rich_input The new rich input component +function M:new_rich_input(template, nodes) + return self:new(rich_input, template, nodes) end -return DruidInstance +return M diff --git a/druid/system/settings.lua b/druid/system/settings.lua index 384a706..e0b2c21 100755 --- a/druid/system/settings.lua +++ b/druid/system/settings.lua @@ -1,20 +1,16 @@ --- Copyright (c) 2021 Maksim Tuprikov . This code is licensed under MIT license - ---- Druid settings file --- @module settings --- @local - +---@class druid.system.settings local M = {} M.default_style = nil - -function M.get_text(name, a, b, c, d, e, f, g) +---@param text_id string +---@param ... string Optional params for string.format +function M.get_text(text_id, ...) return "[Druid]: locales not inited" end -function M.play_sound(name) +function M.play_sound(sound_id) end diff --git a/druid/templates/component.lua.template b/druid/templates/component.lua.template new file mode 100644 index 0000000..d2c2e03 --- /dev/null +++ b/druid/templates/component.lua.template @@ -0,0 +1,16 @@ +---@class druid.widget.TEMPLATE: druid.widget +local M = {} + + +function M:init() + self.root = self:get_node("root") + self.button = self.druid:new_button("button", self.on_button, self) +end + + +function M:on_button() + print("Root node", self.root) +end + + +return M \ No newline at end of file diff --git a/druid/templates/component.template.lua b/druid/templates/component.template.lua deleted file mode 100644 index d67bf32..0000000 --- a/druid/templates/component.template.lua +++ /dev/null @@ -1,21 +0,0 @@ -local component = require("druid.component") - ----@class component_name : druid.base_component -local Component = component.create("component_name") - - --- Component constructor. Template name and nodes are optional. Pass it if you use it in your component -function Component:init(template, nodes) - self.druid = self:get_druid(template, nodes) - self.root = self:get_node("root") - - self.button = self.druid:new_button("button", function() end) -end - - --- [OPTIONAL] Call on component remove or on druid:final -function Component:on_remove() -end - - -return Component diff --git a/druid/templates/component_full.template.lua b/druid/templates/component_full.lua.template similarity index 69% rename from druid/templates/component_full.template.lua rename to druid/templates/component_full.lua.template index 1978cf2..e657798 100644 --- a/druid/templates/component_full.template.lua +++ b/druid/templates/component_full.lua.template @@ -1,10 +1,10 @@ local component = require("druid.component") ----@class component_name : druid.base_component -local Component = component.create("component_name") +---@class new_component: druid.component +local M = component.create("new_component") -- Component constructor. Template name and nodes are optional. Pass it if you use it in your component -function Component:init(template, nodes) +function M:init(template, nodes) -- If your component is gui template, pass the template name and set it -- If your component is cloned my gui.clone_tree, pass nodes to component and set it -- Use inner druid instance to create components inside this component @@ -17,55 +17,55 @@ end -- [OPTIONAL] Call every update step -function Component:update(dt) +function M:update(dt) end -- [OPTIONAL] Call default on_input from gui script -function Component:on_input(action_id, action) +function M:on_input(action_id, action) return false end -- [OPTIONAL] Call on component creation and on component:set_style() function -function Component:on_style_change(style) +function M:on_style_change(style) end -- [OPTIONAL] Call default on_message from gui script -function Component:on_message(message_id, message, sender) +function M:on_message(message_id, message, sender) end -- [OPTIONAL] Call if druid has triggered on_language_change -function Component:on_language_change() +function M:on_language_change() end -- [OPTIONAL] Call if game layout has changed and need to restore values in component -function Component:on_layout_change() +function M:on_layout_change() end -- [OPTIONAL] Call, if input was capturing before this component -- Example: scroll is start scrolling, so you need unhover button -function Component:on_input_interrupt() +function M:on_input_interrupt() end -- [OPTIONAL] Call, if game lost focus -function Component:on_focus_lost() +function M:on_focus_lost() end -- [OPTIONAL] Call, if game gained focus -function Component:on_focus_gained() +function M:on_focus_gained() end -- [OPTIONAL] Call on component remove or on druid:final -function Component:on_remove() +function M:on_remove() end -return Component +return M diff --git a/druid/templates/druid.gui_script.template b/druid/templates/druid.gui_script.template new file mode 100644 index 0000000..2d90afd --- /dev/null +++ b/druid/templates/druid.gui_script.template @@ -0,0 +1,21 @@ +local druid = require("druid.druid") + +function init(self) + self.druid = druid.new(self) +end + +function final(self) + self.druid:final() +end + +function update(self, dt) + self.druid:update(dt) +end + +function on_message(self, message_id, message, sender) + self.druid:on_message(message_id, message, sender) +end + +function on_input(self, action_id, action) + return self.druid:on_input(action_id, action) +end diff --git a/druid/templates/widget.lua.template b/druid/templates/widget.lua.template new file mode 100644 index 0000000..18d4ffe --- /dev/null +++ b/druid/templates/widget.lua.template @@ -0,0 +1,9 @@ +---@class widget.{COMPONENT_TYPE}: druid.widget +local M = {} + + +function M:init() +end + + +return M diff --git a/druid/templates/widget_full.lua.template b/druid/templates/widget_full.lua.template new file mode 100644 index 0000000..4f66669 --- /dev/null +++ b/druid/templates/widget_full.lua.template @@ -0,0 +1,27 @@ +---This is a template for a {COMPONENT_NAME} Druid widget. +---Instantiate this template with `druid.new_widget(widget_module, [template_id], [nodes])`. +---Read more about Druid Widgets here: ... + +---@class widget.{COMPONENT_TYPE}: druid.widget +local M = {} + + +function M:init() + -- Now we have next functions to use here: + -- self:get_node([node_id]) -- Get node inside widget by id + -- self.druid to access Druid Instance API, like: + -- self.druid:new_button([node_id], [callback]) + -- self.druid:new_text([node_id], [text]) + -- And all functions from component.lua file + + self.root = self:get_node("root") + self.button = self.druid:new_button("button", self.on_button, self) +end + + +function M:on_button() + print("Root node", self.root) +end + + +return M diff --git a/druid/widget/fps_panel/fps_panel.gui b/druid/widget/fps_panel/fps_panel.gui new file mode 100644 index 0000000..5b85967 --- /dev/null +++ b/druid/widget/fps_panel/fps_panel.gui @@ -0,0 +1,222 @@ +fonts { + name: "druid_text_regular" + font: "/druid/fonts/druid_text_regular.font" +} +fonts { + name: "druid_text_bold" + font: "/druid/fonts/druid_text_bold.font" +} +textures { + name: "druid" + texture: "/druid/druid.atlas" +} +nodes { + size { + x: 200.0 + y: 140.0 + } + type: TYPE_BOX + id: "root" + inherit_alpha: true + size_mode: SIZE_MODE_AUTO + visible: false +} +nodes { + type: TYPE_TEMPLATE + id: "mini_graph" + parent: "root" + inherit_alpha: true + template: "/druid/widget/mini_graph/mini_graph.gui" +} +nodes { + color { + x: 0.173 + y: 0.184 + z: 0.204 + } + type: TYPE_BOX + id: "mini_graph/root" + parent: "mini_graph" + overridden_fields: 5 + template_node_child: true +} +nodes { + type: TYPE_BOX + id: "mini_graph/header" + parent: "mini_graph/root" + template_node_child: true +} +nodes { + type: TYPE_TEXT + text: "FPS" + id: "mini_graph/text_header" + parent: "mini_graph/header" + overridden_fields: 8 + template_node_child: true +} +nodes { + type: TYPE_BOX + id: "mini_graph/icon_drag" + parent: "mini_graph/header" + template_node_child: true +} +nodes { + type: TYPE_BOX + id: "mini_graph/content" + parent: "mini_graph/root" + template_node_child: true +} +nodes { + color { + x: 0.525 + y: 0.525 + z: 0.525 + } + type: TYPE_BOX + id: "mini_graph/prefab_line" + parent: "mini_graph/content" + overridden_fields: 5 + template_node_child: true +} +nodes { + color { + x: 0.957 + y: 0.608 + z: 0.608 + } + type: TYPE_BOX + id: "mini_graph/color_low" + parent: "mini_graph/content" + overridden_fields: 5 + template_node_child: true +} +nodes { + size { + x: 200.0 + y: 100.0 + } + type: TYPE_BOX + id: "content" + parent: "root" + inherit_alpha: true + size_mode: SIZE_MODE_AUTO + visible: false +} +nodes { + position { + x: -96.0 + y: 12.0 + } + scale { + x: 0.3 + y: 0.3 + } + size { + x: 260.0 + y: 40.0 + } + color { + x: 0.463 + y: 0.475 + z: 0.49 + } + type: TYPE_TEXT + text: "12 FPS" + font: "druid_text_regular" + id: "text_min_fps" + pivot: PIVOT_W + outline { + x: 1.0 + y: 1.0 + z: 1.0 + } + shadow { + x: 1.0 + y: 1.0 + z: 1.0 + } + parent: "content" + inherit_alpha: true + outline_alpha: 0.0 + shadow_alpha: 0.0 +} +nodes { + position { + y: 12.0 + } + scale { + x: 0.3 + y: 0.3 + } + size { + x: 260.0 + y: 40.0 + } + color { + x: 0.463 + y: 0.475 + z: 0.49 + } + type: TYPE_TEXT + text: "60 FPS" + font: "druid_text_bold" + id: "text_fps" + outline { + x: 1.0 + y: 1.0 + z: 1.0 + } + shadow { + x: 1.0 + y: 1.0 + z: 1.0 + } + parent: "content" + inherit_alpha: true + outline_alpha: 0.0 + shadow_alpha: 0.0 +} +nodes { + position { + x: -33.4 + y: 30.0 + } + size { + x: 3.0 + y: 8.0 + } + color { + x: 0.173 + y: 0.184 + z: 0.204 + } + type: TYPE_BOX + texture: "druid/pixel" + id: "line_second_1" + pivot: PIVOT_N + parent: "content" + inherit_alpha: true +} +nodes { + position { + x: 33.2 + y: 30.0 + } + size { + x: 3.0 + y: 8.0 + } + color { + x: 0.173 + y: 0.184 + z: 0.204 + } + type: TYPE_BOX + texture: "druid/pixel" + id: "line_second_2" + pivot: PIVOT_N + parent: "content" + inherit_alpha: true +} +material: "/builtins/materials/gui.material" +adjust_reference: ADJUST_REFERENCE_PARENT diff --git a/druid/widget/fps_panel/fps_panel.lua b/druid/widget/fps_panel/fps_panel.lua new file mode 100644 index 0000000..27827db --- /dev/null +++ b/druid/widget/fps_panel/fps_panel.lua @@ -0,0 +1,105 @@ +local helper = require("druid.helper") +local mini_graph = require("druid.widget.mini_graph.mini_graph") + +---@class druid.widget.fps_panel: druid.widget +---@field root node +local M = {} + +local TARGET_FPS = sys.get_config_int("display.update_frequency", 60) +if TARGET_FPS == 0 then + TARGET_FPS = 60 +end + + +function M:init() + self.root = self:get_node("root") + + self.delta_time = 0.1 -- in seconds + self.collect_time = 3 -- in seconds + self.collect_time_counter = 0 + self.graph_samples = self.collect_time / self.delta_time + + -- Store frame time in seconds last collect_time seconds + self.fps_samples = {} + + self.mini_graph = self.druid:new_widget(mini_graph, "mini_graph") + self.mini_graph:set_samples(self.graph_samples) -- show last 30 seconds + self.mini_graph:set_max_value(TARGET_FPS) + + do -- Set parent manually + local parent_node = self.mini_graph.content + local position = helper.get_full_position(parent_node, self.mini_graph.root) + local content = self:get_node("content") + gui.set_parent(content, self.mini_graph.content) + gui.set_position(content, -position) + end + + self.text_min_fps = self.druid:new_text("text_min_fps") + self.text_fps = self.druid:new_text("text_fps") + + self.timer_id = timer.delay(self.delta_time, true, function() + self:push_fps_value() + end) + + --self.container = self.druid:new_container(self.root) + --self.container:add_container(self.mini_graph.container) + --local container_content = self.container:add_container("content") + --container_content:add_container("text_min_fps") + --container_content:add_container("text_fps") +end + + +function M:on_remove() + timer.cancel(self.timer_id) +end + + +function M:update(dt) + if not self.previous_time then + self.previous_time = socket.gettime() + return + end + + local current_time = socket.gettime() + local delta_time = current_time - self.previous_time + self.previous_time = current_time + + self.collect_time_counter = self.collect_time_counter + delta_time + table.insert(self.fps_samples, 1, delta_time) + + while self.collect_time_counter > self.collect_time do + -- Remove last + local removed_value = table.remove(self.fps_samples) + self.collect_time_counter = self.collect_time_counter - removed_value + end +end + + +function M:push_fps_value() + if #self.fps_samples == 0 then + return + end + + local max_frame_time = 0 + local average_frame_time = 0 + local average_samples_count = self.delta_time + local average_collected = 0 + for index = 1, #self.fps_samples do + if average_frame_time < average_samples_count then + average_frame_time = average_frame_time + self.fps_samples[index] + average_collected = average_collected + 1 + end + max_frame_time = math.max(max_frame_time, self.fps_samples[index]) + end + + average_frame_time = average_frame_time / average_collected + + self.mini_graph:push_line_value(1 / average_frame_time) + + self.text_fps:set_text(tostring(math.ceil(1 / average_frame_time) .. " FPS")) + local lowest_value = math.ceil(self.mini_graph:get_lowest_value()) + self.text_min_fps:set_text(lowest_value .. " lowest") +end + + +return M diff --git a/druid/widget/memory_panel/memory_panel.gui b/druid/widget/memory_panel/memory_panel.gui new file mode 100644 index 0000000..1892972 --- /dev/null +++ b/druid/widget/memory_panel/memory_panel.gui @@ -0,0 +1,244 @@ +fonts { + name: "druid_text_regular" + font: "/druid/fonts/druid_text_regular.font" +} +fonts { + name: "druid_text_bold" + font: "/druid/fonts/druid_text_bold.font" +} +textures { + name: "druid" + texture: "/druid/druid.atlas" +} +nodes { + size { + x: 200.0 + y: 140.0 + } + type: TYPE_BOX + id: "root" + inherit_alpha: true + size_mode: SIZE_MODE_AUTO + visible: false +} +nodes { + type: TYPE_TEMPLATE + id: "mini_graph" + parent: "root" + inherit_alpha: true + template: "/druid/widget/mini_graph/mini_graph.gui" +} +nodes { + type: TYPE_BOX + id: "mini_graph/root" + parent: "mini_graph" + template_node_child: true +} +nodes { + type: TYPE_BOX + id: "mini_graph/header" + parent: "mini_graph/root" + template_node_child: true +} +nodes { + type: TYPE_TEXT + text: "Memory" + id: "mini_graph/text_header" + parent: "mini_graph/header" + overridden_fields: 8 + template_node_child: true +} +nodes { + type: TYPE_BOX + id: "mini_graph/icon_drag" + parent: "mini_graph/header" + template_node_child: true +} +nodes { + type: TYPE_BOX + id: "mini_graph/content" + parent: "mini_graph/root" + template_node_child: true +} +nodes { + type: TYPE_BOX + id: "mini_graph/prefab_line" + parent: "mini_graph/content" + template_node_child: true +} +nodes { + type: TYPE_BOX + id: "mini_graph/color_low" + parent: "mini_graph/content" + template_node_child: true +} +nodes { + size { + x: 200.0 + y: 100.0 + } + type: TYPE_BOX + id: "content" + parent: "root" + inherit_alpha: true + size_mode: SIZE_MODE_AUTO + visible: false +} +nodes { + position { + x: -96.0 + y: 12.0 + } + scale { + x: 0.3 + y: 0.3 + } + size { + x: 200.0 + y: 40.0 + } + color { + x: 0.463 + y: 0.475 + z: 0.49 + } + type: TYPE_TEXT + text: "120.23 KB" + font: "druid_text_regular" + id: "text_max_value" + pivot: PIVOT_W + outline { + x: 1.0 + y: 1.0 + z: 1.0 + } + shadow { + x: 1.0 + y: 1.0 + z: 1.0 + } + adjust_mode: ADJUST_MODE_STRETCH + parent: "content" + inherit_alpha: true + outline_alpha: 0.0 + shadow_alpha: 0.0 +} +nodes { + position { + x: 96.0 + y: 12.0 + } + scale { + x: 0.3 + y: 0.3 + } + size { + x: 200.0 + y: 40.0 + } + color { + x: 0.463 + y: 0.475 + z: 0.49 + } + type: TYPE_TEXT + text: "120 KB/s" + font: "druid_text_regular" + id: "text_per_second" + pivot: PIVOT_E + outline { + x: 1.0 + y: 1.0 + z: 1.0 + } + shadow { + x: 1.0 + y: 1.0 + z: 1.0 + } + adjust_mode: ADJUST_MODE_STRETCH + parent: "content" + inherit_alpha: true + outline_alpha: 0.0 + shadow_alpha: 0.0 +} +nodes { + position { + x: -33.4 + y: 30.0 + } + size { + x: 3.0 + y: 8.0 + } + color { + x: 0.173 + y: 0.184 + z: 0.204 + } + type: TYPE_BOX + texture: "druid/pixel" + id: "line_second_1" + pivot: PIVOT_N + parent: "content" + inherit_alpha: true +} +nodes { + position { + x: 33.2 + y: 30.0 + } + size { + x: 3.0 + y: 8.0 + } + color { + x: 0.173 + y: 0.184 + z: 0.204 + } + type: TYPE_BOX + texture: "druid/pixel" + id: "line_second_2" + pivot: PIVOT_N + parent: "content" + inherit_alpha: true +} +nodes { + position { + y: 12.0 + } + scale { + x: 0.3 + y: 0.3 + } + size { + x: 200.0 + y: 40.0 + } + color { + x: 0.463 + y: 0.475 + z: 0.49 + } + type: TYPE_TEXT + text: "120 KB" + font: "druid_text_bold" + id: "text_memory" + outline { + x: 1.0 + y: 1.0 + z: 1.0 + } + shadow { + x: 1.0 + y: 1.0 + z: 1.0 + } + parent: "content" + inherit_alpha: true + outline_alpha: 0.0 + shadow_alpha: 0.0 +} +material: "/builtins/materials/gui.material" +adjust_reference: ADJUST_REFERENCE_PARENT diff --git a/druid/widget/memory_panel/memory_panel.lua b/druid/widget/memory_panel/memory_panel.lua new file mode 100644 index 0000000..fafdd01 --- /dev/null +++ b/druid/widget/memory_panel/memory_panel.lua @@ -0,0 +1,100 @@ +local helper = require("druid.helper") +local mini_graph = require("druid.widget.mini_graph.mini_graph") + +---@class druid.widget.memory_panel: druid.widget +---@field root node +local M = {} + + +function M:init() + self.root = self:get_node("root") + self.delta_time = 0.1 + self.samples_count = 30 + self.memory_limit = 100 + + self.mini_graph = self.druid:new_widget(mini_graph, "mini_graph") + self.mini_graph:set_samples(self.samples_count) + + -- This one is not works with scaled root + --gui.set_parent(self:get_node("content"), self.mini_graph.content, true) + + do -- Set parent manually + local parent_node = self.mini_graph.content + local position = helper.get_full_position(parent_node, self.mini_graph.root) + local content = self:get_node("content") + gui.set_parent(content, self.mini_graph.content) + gui.set_position(content, -position) + end + + self.max_value = self.druid:new_text("text_max_value") + self.text_per_second = self.druid:new_text("text_per_second") + self.text_memory = self.druid:new_text("text_memory") + + self.memory = collectgarbage("count") + self.memory_samples = {} + + self:update_text_memory() + + self.timer_id = timer.delay(self.delta_time, true, function() + self:push_next_value() + end) + + --self.container = self.druid:new_container(self.root) + --self.container:add_container(self.mini_graph.container) + --local container_content = self.container:add_container("content") + --container_content:add_container("text_max_value") + --container_content:add_container("text_per_second") +end + + +function M:on_remove() + timer.cancel(self.timer_id) +end + + +function M:set_low_memory_limit(limit) + self.memory_limit = limit +end + + +function M:push_next_value() + local memory = collectgarbage("count") + local diff = math.max(0, memory - self.memory) + self.memory = memory + self:update_text_memory() + + table.insert(self.memory_samples, diff) + if #self.memory_samples > self.samples_count then + table.remove(self.memory_samples, 1) + end + + self.mini_graph:push_line_value(diff) + + local max_value = math.max(unpack(self.memory_samples)) + max_value = math.max(max_value, self.memory_limit) -- low limit to display + self.mini_graph:set_max_value(max_value) + + local max_memory = math.ceil(self.mini_graph:get_highest_value()) + self.max_value:set_text(max_memory .. " KB") + + local last_second = 0 + local last_second_samples = math.ceil(1 / self.delta_time) + for index = #self.memory_samples - last_second_samples + 1, #self.memory_samples do + last_second = last_second + (self.memory_samples[index] or 0) + end + self.text_per_second:set_text(math.ceil(last_second) .. " KB/s") +end + + +function M:update_text_memory() + local memory = math.ceil(collectgarbage("count")) -- in KB + if memory > 1024 then + memory = memory / 1024 + self.text_memory:set_text(string.format("%.2f", memory) .. " MB") + else + self.text_memory:set_text(memory .. " KB") + end +end + + +return M diff --git a/druid/widget/mini_graph/mini_graph.gui b/druid/widget/mini_graph/mini_graph.gui new file mode 100644 index 0000000..ed5fa6d --- /dev/null +++ b/druid/widget/mini_graph/mini_graph.gui @@ -0,0 +1,178 @@ +fonts { + name: "druid_text_regular" + font: "/druid/fonts/druid_text_regular.font" +} +fonts { + name: "druid_text_bold" + font: "/druid/fonts/druid_text_bold.font" +} +textures { + name: "druid" + texture: "/druid/druid.atlas" +} +nodes { + size { + x: 200.0 + y: 140.0 + } + color { + x: 0.173 + y: 0.184 + z: 0.204 + } + type: TYPE_BOX + texture: "druid/ui_circle_16" + id: "root" + adjust_mode: ADJUST_MODE_STRETCH + inherit_alpha: true + slice9 { + x: 8.0 + y: 8.0 + z: 8.0 + w: 8.0 + } +} +nodes { + position { + y: 70.0 + } + size { + x: 200.0 + y: 40.0 + } + type: TYPE_BOX + id: "header" + pivot: PIVOT_N + parent: "root" + inherit_alpha: true + size_mode: SIZE_MODE_AUTO + visible: false +} +nodes { + position { + x: -92.0 + y: -8.0 + } + scale { + x: 0.5 + y: 0.5 + } + size { + x: 260.0 + y: 50.0 + } + color { + x: 0.463 + y: 0.475 + z: 0.49 + } + type: TYPE_TEXT + text: "Mini Graph" + font: "druid_text_bold" + id: "text_header" + pivot: PIVOT_NW + outline { + x: 1.0 + y: 1.0 + z: 1.0 + } + shadow { + x: 1.0 + y: 1.0 + z: 1.0 + } + parent: "header" + inherit_alpha: true + outline_alpha: 0.0 + shadow_alpha: 0.0 +} +nodes { + position { + x: 96.0 + y: -4.0 + } + color { + x: 0.306 + y: 0.31 + z: 0.314 + } + type: TYPE_BOX + texture: "druid/icon_drag" + id: "icon_drag" + pivot: PIVOT_NE + parent: "header" + inherit_alpha: true + size_mode: SIZE_MODE_AUTO +} +nodes { + position { + y: -70.0 + } + size { + x: 200.0 + y: 100.0 + } + color { + x: 0.129 + y: 0.141 + z: 0.157 + } + type: TYPE_BOX + texture: "druid/ui_circle_16" + id: "content" + pivot: PIVOT_S + adjust_mode: ADJUST_MODE_STRETCH + parent: "root" + inherit_alpha: true + slice9 { + x: 8.0 + y: 8.0 + z: 8.0 + w: 8.0 + } + clipping_mode: CLIPPING_MODE_STENCIL + material: "gui_stencil" +} +nodes { + size { + x: 8.0 + y: 70.0 + } + color { + x: 0.957 + y: 0.608 + z: 0.608 + } + type: TYPE_BOX + texture: "druid/pixel" + id: "prefab_line" + pivot: PIVOT_S + parent: "content" + inherit_alpha: true +} +nodes { + position { + x: -10.0 + y: 4.0 + } + size { + x: 8.0 + y: 8.0 + } + color { + x: 0.557 + y: 0.835 + z: 0.62 + } + type: TYPE_BOX + texture: "druid/pixel" + id: "color_low" + parent: "content" + inherit_alpha: true +} +material: "/builtins/materials/gui.material" +adjust_reference: ADJUST_REFERENCE_PARENT +materials { + name: "gui_stencil" + material: "/druid/materials/stencil/gui_stencil.material" +} diff --git a/druid/widget/mini_graph/mini_graph.lua b/druid/widget/mini_graph/mini_graph.lua new file mode 100644 index 0000000..10a5237 --- /dev/null +++ b/druid/widget/mini_graph/mini_graph.lua @@ -0,0 +1,176 @@ +local color = require("druid.color") +local helper = require("druid.helper") + +---Widget to display a several lines with different height in a row +---Init, set amount of samples and max value of value means that the line will be at max height +---Use `push_line_value` to add a new value to the line +---Or `set_line_value` to set a value to the line by index +---Setup colors inside template file (at minimum and maximum) +---@class druid.widget.mini_graph: druid.widget +local M = {} + +local SIZE_Y = hash("size.y") + + +function M:init() + self.root = self:get_node("root") + self.text_header = self.druid:new_text("text_header") + + self.icon_drag = self:get_node("icon_drag") + self.druid:new_drag("header", self.on_drag_widget) + self.druid:new_button("icon_drag", self.toggle_hide) + :set_style(nil) + + self.content = self:get_node("content") + self.layout = self.druid:new_layout(self.content, "horizontal") + :set_margin(0, 0) + :set_padding(0, 0, 0, 0) + + self.prefab_line = self:get_node("prefab_line") + gui.set_enabled(self.prefab_line, false) + + local node_color_low = self:get_node("color_low") + self.color_zero = gui.get_color(node_color_low) + self.color_one = gui.get_color(self.prefab_line) + gui.set_enabled(node_color_low, false) + + self.is_hidden = false + self.max_value = 1 -- in this value line will be at max height + self.lines = {} + self.values = {} + + self.container = self.druid:new_container(self.root) + local container_header = self.container:add_container("header", "stretch_x") + container_header:add_container("text_header") + container_header:add_container("icon_drag") + + self.container:add_container("content", "stretch_x") + self.default_size = self.container:get_size() +end + + +function M:on_remove() + self:clear() +end + + +function M:clear() + self.layout:clear_layout() + for index = 1, #self.lines do + gui.delete_node(self.lines[index]) + end + + self.lines = {} +end + + +function M:set_samples(samples) + self.samples = samples + self:clear() + + local line_width = self.layout:get_size().x / self.samples + for index = 1, self.samples do + local line = gui.clone(self.prefab_line) + gui.set_enabled(line, true) + gui.set(line, "size.x", line_width) + self.layout:add(line) + table.insert(self.lines, line) + end +end + + +function M:get_samples() + return self.samples +end + + +---Set normalized to control the color of the line +--- for index = 1, mini_graph:get_samples() do +--- mini_graph:set_line_value(index, math.random()) +--- end +---@param index number +---@param value number The normalized value from 0 to 1 +function M:set_line_value(index, value) + local line = self.lines[index] + if not line then + return + end + + self.values[index] = value + + local normalized = helper.clamp(value/self.max_value, 0, 1) + local target_color = color.lerp(normalized, self.color_zero, self.color_one) + gui.set_color(line, target_color) + self:set_line_height(index) +end + + +---@return number +function M:get_line_value(index) + return self.values[index] or 0 +end + + +function M:push_line_value(value) + for index = 1, self.samples - 1 do + self:set_line_value(index, self:get_line_value(index + 1)) + end + + self:set_line_value(self.samples, value) +end + + +function M:set_max_value(max_value) + if self.max_value == max_value then + return + end + + self.max_value = max_value + for index = 1, self.samples do + self:set_line_height(index) + end +end + + +function M:set_line_height(index) + local value = self.values[index] or 0 + local normalized = helper.clamp(value / self.max_value, 0, 1) + local size_y = normalized * 70 + gui.set(self.lines[index], SIZE_Y, size_y) +end + + +function M:get_lowest_value() + return math.min(unpack(self.values)) +end + + +function M:get_highest_value() + return math.max(unpack(self.values)) +end + + +function M:on_drag_widget(dx, dy) + if not gui.is_enabled(self.icon_drag) then + return + end + + local position = self.container:get_position() + self.container:set_position(position.x + dx, position.y + dy) +end + + +function M:toggle_hide() + self.is_hidden = not self.is_hidden + local hidden_size = gui.get_size(self:get_node("header")) + + local new_size = self.is_hidden and hidden_size or self.default_size + self.container:set_size(new_size.x, new_size.y, gui.PIVOT_N) + + gui.set_enabled(self.content, not self.is_hidden) + + return self +end + + +return M diff --git a/druid/widget/properties_panel/properties/property_button.gui b/druid/widget/properties_panel/properties/property_button.gui new file mode 100644 index 0000000..a7e55c8 --- /dev/null +++ b/druid/widget/properties_panel/properties/property_button.gui @@ -0,0 +1,155 @@ +fonts { + name: "druid_text_bold" + font: "/druid/fonts/druid_text_bold.font" +} +textures { + name: "druid" + texture: "/druid/druid.atlas" +} +nodes { + size { + x: 400.0 + y: 40.0 + } + type: TYPE_BOX + texture: "druid/empty" + id: "root" + adjust_mode: ADJUST_MODE_STRETCH + inherit_alpha: true + visible: false +} +nodes { + position { + x: -200.0 + } + scale { + x: 0.5 + y: 0.5 + } + size { + x: 350.0 + y: 40.0 + } + color { + x: 0.463 + y: 0.475 + z: 0.49 + } + type: TYPE_TEXT + text: "Button" + font: "druid_text_bold" + id: "text_name" + pivot: PIVOT_W + outline { + x: 1.0 + y: 1.0 + z: 1.0 + } + shadow { + x: 1.0 + y: 1.0 + z: 1.0 + } + adjust_mode: ADJUST_MODE_STRETCH + parent: "root" + inherit_alpha: true + outline_alpha: 0.0 + shadow_alpha: 0.0 +} +nodes { + position { + x: 200.0 + } + size { + x: 200.0 + y: 40.0 + } + type: TYPE_BOX + id: "E_Anchor" + pivot: PIVOT_E + parent: "root" + inherit_alpha: true + size_mode: SIZE_MODE_AUTO + visible: false +} +nodes { + position { + x: -100.0 + } + size { + x: 200.0 + y: 40.0 + } + color { + x: 0.463 + y: 0.475 + z: 0.49 + } + type: TYPE_BOX + texture: "druid/rect_round2_width2" + id: "button" + parent: "E_Anchor" + inherit_alpha: true + slice9 { + x: 5.0 + y: 5.0 + z: 5.0 + w: 5.0 + } +} +nodes { + position { + y: -20.0 + } + size { + x: 200.0 + y: 4.0 + } + color { + x: 0.894 + y: 0.506 + z: 0.333 + } + type: TYPE_BOX + texture: "druid/pixel" + id: "selected" + pivot: PIVOT_S + adjust_mode: ADJUST_MODE_STRETCH + parent: "button" + inherit_alpha: true +} +nodes { + scale { + x: 0.5 + y: 0.5 + } + size { + x: 380.0 + y: 50.0 + } + color { + x: 0.722 + y: 0.741 + z: 0.761 + } + type: TYPE_TEXT + text: "Button" + font: "druid_text_bold" + id: "text_button" + outline { + x: 1.0 + y: 1.0 + z: 1.0 + } + shadow { + x: 1.0 + y: 1.0 + z: 1.0 + } + parent: "button" + inherit_alpha: true + outline_alpha: 0.0 + shadow_alpha: 0.0 +} +material: "/builtins/materials/gui.material" +adjust_reference: ADJUST_REFERENCE_PARENT diff --git a/druid/widget/properties_panel/properties/property_button.lua b/druid/widget/properties_panel/properties/property_button.lua new file mode 100644 index 0000000..cce90fb --- /dev/null +++ b/druid/widget/properties_panel/properties/property_button.lua @@ -0,0 +1,59 @@ +local color = require("druid.color") + +---@class druid.widget.property_button: druid.widget +---@field root node +---@field container druid.container +---@field text_name druid.text +---@field button druid.button +---@field text_button druid.text +---@field druid druid.instance +local M = {} + + +function M:init() + self.root = self:get_node("root") + self.text_name = self.druid:new_text("text_name") + :set_text_adjust("scale_then_trim", 0.3) + + self.selected = self:get_node("selected") + gui.set_alpha(self.selected, 0) + + self.button = self.druid:new_button("button", self.on_click) + self.text_button = self.druid:new_text("text_button") + + self.container = self.druid:new_container(self.root) + self.container:add_container("text_name", nil, function(_, size) + self.text_button:set_size(size) + end) + self.container:add_container("E_Anchor") +end + + +function M:on_click() + gui.set_alpha(self.selected, 1) + gui.animate(self.selected, "color.w", 0, gui.EASING_INSINE, 0.16) +end + + +---@param text string +---@return druid.widget.property_button +function M:set_text_property(text) + self.text_name:set_text(text) + return self +end + + +---@param text string +---@return druid.widget.property_button +function M:set_text_button(text) + self.text_button:set_text(text) + return self +end + + +function M:set_color(color_value) + color.set_color(self:get_node("button"), color_value) +end + + +return M diff --git a/druid/widget/properties_panel/properties/property_checkbox.gui b/druid/widget/properties_panel/properties/property_checkbox.gui new file mode 100644 index 0000000..aeb1180 --- /dev/null +++ b/druid/widget/properties_panel/properties/property_checkbox.gui @@ -0,0 +1,134 @@ +fonts { + name: "druid_text_bold" + font: "/druid/fonts/druid_text_bold.font" +} +textures { + name: "druid" + texture: "/druid/druid.atlas" +} +nodes { + size { + x: 400.0 + y: 40.0 + } + type: TYPE_BOX + texture: "druid/empty" + id: "root" + adjust_mode: ADJUST_MODE_STRETCH + inherit_alpha: true + visible: false +} +nodes { + position { + x: -200.0 + } + scale { + x: 0.5 + y: 0.5 + } + size { + x: 360.0 + y: 40.0 + } + color { + x: 0.463 + y: 0.475 + z: 0.49 + } + type: TYPE_TEXT + text: "Checkbox" + font: "druid_text_bold" + id: "text_name" + pivot: PIVOT_W + outline { + x: 1.0 + y: 1.0 + z: 1.0 + } + shadow { + x: 1.0 + y: 1.0 + z: 1.0 + } + parent: "root" + inherit_alpha: true + outline_alpha: 0.0 + shadow_alpha: 0.0 +} +nodes { + position { + x: 200.0 + } + size { + x: 200.0 + y: 40.0 + } + type: TYPE_BOX + id: "E_Anchor" + pivot: PIVOT_E + parent: "root" + inherit_alpha: true + size_mode: SIZE_MODE_AUTO + visible: false +} +nodes { + position { + x: -180.0 + } + size { + x: 40.0 + y: 40.0 + } + color { + x: 0.463 + y: 0.475 + z: 0.49 + } + type: TYPE_BOX + texture: "druid/rect_round2_width2" + id: "button" + parent: "E_Anchor" + inherit_alpha: true + slice9 { + x: 5.0 + y: 5.0 + z: 5.0 + w: 5.0 + } +} +nodes { + color { + x: 0.722 + y: 0.741 + z: 0.761 + } + type: TYPE_BOX + texture: "druid/ui_circle_16" + id: "icon" + parent: "button" + inherit_alpha: true + size_mode: SIZE_MODE_AUTO +} +nodes { + position { + y: -20.0 + } + size { + x: 40.0 + y: 4.0 + } + color { + x: 0.894 + y: 0.506 + z: 0.333 + } + type: TYPE_BOX + texture: "druid/pixel" + id: "selected" + pivot: PIVOT_S + adjust_mode: ADJUST_MODE_STRETCH + parent: "button" + inherit_alpha: true +} +material: "/builtins/materials/gui.material" +adjust_reference: ADJUST_REFERENCE_PARENT diff --git a/druid/widget/properties_panel/properties/property_checkbox.lua b/druid/widget/properties_panel/properties/property_checkbox.lua new file mode 100644 index 0000000..71179c3 --- /dev/null +++ b/druid/widget/properties_panel/properties/property_checkbox.lua @@ -0,0 +1,76 @@ +local event = require("event.event") + +---@class druid.widget.property_checkbox: druid.widget +---@field root node +---@field druid druid.instance +---@field text_name druid.text +---@field button druid.button +---@field selected node +local M = {} + + +function M:init() + self.root = self:get_node("root") + + self.icon = self:get_node("icon") + gui.set_enabled(self.icon, false) + + self.selected = self:get_node("selected") + gui.set_alpha(self.selected, 0) + + self.text_name = self.druid:new_text("text_name") + :set_text_adjust("scale_then_trim", 0.3) + + self.button = self.druid:new_button("button", self.on_click) + + self.container = self.druid:new_container(self.root) + self.container:add_container("text_name") + self.container:add_container("E_Anchor") + + self.on_change_value = event.create() +end + + +---@param value boolean +function M:set_value(value, is_instant) + if self._value == value then + return + end + + self._value = value + gui.set_enabled(self.icon, value) + self.on_change_value:trigger(value) + + if not is_instant then + gui.set_alpha(self.selected, 1) + gui.animate(self.selected, "color.w", 0, gui.EASING_INSINE, 0.16) + end +end + + +---@return boolean +function M:get_value() + return self._value +end + + +function M:on_click() + self:set_value(not self:get_value()) +end + + +---Set the text property of the checkbox +---@param text string +function M:set_text_property(text) + self.text_name:set_text(text) +end + + +---Set the callback function for when the checkbox value changes +---@param callback function +function M:on_change(callback) + self.on_change_value:subscribe(callback) +end + + +return M diff --git a/druid/widget/properties_panel/properties/property_input.gui b/druid/widget/properties_panel/properties/property_input.gui new file mode 100644 index 0000000..c204d30 --- /dev/null +++ b/druid/widget/properties_panel/properties/property_input.gui @@ -0,0 +1,143 @@ +fonts { + name: "druid_text_bold" + font: "/druid/fonts/druid_text_bold.font" +} +textures { + name: "druid" + texture: "/druid/druid.atlas" +} +nodes { + size { + x: 400.0 + y: 40.0 + } + type: TYPE_BOX + texture: "druid/empty" + id: "root" + adjust_mode: ADJUST_MODE_STRETCH + inherit_alpha: true + visible: false +} +nodes { + position { + x: -200.0 + } + scale { + x: 0.5 + y: 0.5 + } + size { + x: 350.0 + y: 50.0 + } + color { + x: 0.463 + y: 0.475 + z: 0.49 + } + type: TYPE_TEXT + text: "Input" + font: "druid_text_bold" + id: "text_name" + pivot: PIVOT_W + outline { + x: 1.0 + y: 1.0 + z: 1.0 + } + shadow { + x: 1.0 + y: 1.0 + z: 1.0 + } + parent: "root" + inherit_alpha: true + outline_alpha: 0.0 + shadow_alpha: 0.0 +} +nodes { + position { + x: 200.0 + } + size { + x: 200.0 + y: 40.0 + } + type: TYPE_BOX + id: "E_Anchor" + pivot: PIVOT_E + parent: "root" + inherit_alpha: true + size_mode: SIZE_MODE_AUTO + visible: false +} +nodes { + position { + x: -100.0 + } + type: TYPE_TEMPLATE + id: "rich_input" + parent: "E_Anchor" + inherit_alpha: true + template: "/druid/custom/rich_input/rich_input.gui" +} +nodes { + type: TYPE_BOX + id: "rich_input/root" + parent: "rich_input" + template_node_child: true +} +nodes { + type: TYPE_BOX + id: "rich_input/button" + parent: "rich_input/root" + template_node_child: true +} +nodes { + type: TYPE_TEXT + id: "rich_input/placeholder_text" + parent: "rich_input/root" + template_node_child: true +} +nodes { + type: TYPE_TEXT + id: "rich_input/input_text" + parent: "rich_input/root" + template_node_child: true +} +nodes { + type: TYPE_BOX + id: "rich_input/cursor_node" + parent: "rich_input/root" + template_node_child: true +} +nodes { + type: TYPE_TEXT + id: "rich_input/cursor_text" + parent: "rich_input/cursor_node" + template_node_child: true +} +nodes { + position { + x: -100.0 + y: -20.0 + } + size { + x: 200.0 + y: 4.0 + } + color { + x: 0.894 + y: 0.506 + z: 0.333 + } + type: TYPE_BOX + texture: "druid/pixel" + id: "selected" + pivot: PIVOT_S + adjust_mode: ADJUST_MODE_STRETCH + parent: "E_Anchor" + inherit_alpha: true +} +material: "/builtins/materials/gui.material" +adjust_reference: ADJUST_REFERENCE_PARENT diff --git a/druid/widget/properties_panel/properties/property_input.lua b/druid/widget/properties_panel/properties/property_input.lua new file mode 100644 index 0000000..c33bb1b --- /dev/null +++ b/druid/widget/properties_panel/properties/property_input.lua @@ -0,0 +1,48 @@ +---@class druid.widget.property_input: druid.widget +---@field root node +---@field container druid.container +---@field text_name druid.text +---@field button druid.button +---@field druid druid.instance +local M = {} + +function M:init() + self.root = self:get_node("root") + self.text_name = self.druid:new_text("text_name") + :set_text_adjust("scale_then_trim", 0.3) + + self.selected = self:get_node("selected") + gui.set_alpha(self.selected, 0) + + self.rich_input = self.druid:new_rich_input("rich_input") + + self.container = self.druid:new_container(self.root) + self.container:add_container("text_name") + self.container:add_container("E_Anchor") +end + + +---@param text string +---@return druid.widget.property_input +function M:set_text_property(text) + self.text_name:set_text(text) + return self +end + + +---@param text string|number +---@return druid.widget.property_input +function M:set_text_value(text) + self.rich_input:set_text(tostring(text)) + return self +end + + +---@param callback fun(self: druid.widget.property_input, text: string) +---@param callback_context any +function M:on_change(callback, callback_context) + self.rich_input.input.on_input_unselect:subscribe(callback, callback_context) +end + + +return M diff --git a/druid/widget/properties_panel/properties/property_left_right_selector.gui b/druid/widget/properties_panel/properties/property_left_right_selector.gui new file mode 100644 index 0000000..69f8b73 --- /dev/null +++ b/druid/widget/properties_panel/properties/property_left_right_selector.gui @@ -0,0 +1,212 @@ +fonts { + name: "druid_text_bold" + font: "/druid/fonts/druid_text_bold.font" +} +textures { + name: "druid" + texture: "/druid/druid.atlas" +} +nodes { + size { + x: 400.0 + y: 40.0 + } + type: TYPE_BOX + texture: "druid/empty" + id: "root" + adjust_mode: ADJUST_MODE_STRETCH + inherit_alpha: true + visible: false +} +nodes { + position { + x: -200.0 + } + scale { + x: 0.5 + y: 0.5 + } + size { + x: 360.0 + y: 40.0 + } + color { + x: 0.463 + y: 0.475 + z: 0.49 + } + type: TYPE_TEXT + text: "Left Right Selector" + font: "druid_text_bold" + id: "text_name" + pivot: PIVOT_W + outline { + x: 1.0 + y: 1.0 + z: 1.0 + } + shadow { + x: 1.0 + y: 1.0 + z: 1.0 + } + parent: "root" + inherit_alpha: true + outline_alpha: 0.0 + shadow_alpha: 0.0 +} +nodes { + position { + x: 200.0 + } + size { + x: 200.0 + y: 40.0 + } + type: TYPE_BOX + id: "E_Anchor" + pivot: PIVOT_E + parent: "root" + inherit_alpha: true + size_mode: SIZE_MODE_AUTO + visible: false +} +nodes { + position { + x: -180.0 + } + size { + x: 40.0 + y: 40.0 + } + color { + x: 0.463 + y: 0.475 + z: 0.49 + } + type: TYPE_BOX + texture: "druid/rect_round2_width2" + id: "button_left" + parent: "E_Anchor" + inherit_alpha: true + slice9 { + x: 5.0 + y: 5.0 + z: 5.0 + w: 5.0 + } +} +nodes { + rotation { + z: 180.0 + } + color { + x: 0.722 + y: 0.741 + z: 0.761 + } + type: TYPE_BOX + texture: "druid/icon_arrow" + id: "icon_left" + parent: "button_left" + inherit_alpha: true + size_mode: SIZE_MODE_AUTO +} +nodes { + position { + x: -20.0 + } + size { + x: 40.0 + y: 40.0 + } + color { + x: 0.463 + y: 0.475 + z: 0.49 + } + type: TYPE_BOX + texture: "druid/rect_round2_width2" + id: "button_right" + parent: "E_Anchor" + inherit_alpha: true + slice9 { + x: 5.0 + y: 5.0 + z: 5.0 + w: 5.0 + } +} +nodes { + color { + x: 0.722 + y: 0.741 + z: 0.761 + } + type: TYPE_BOX + texture: "druid/icon_arrow" + id: "icon_right" + parent: "button_right" + inherit_alpha: true + size_mode: SIZE_MODE_AUTO +} +nodes { + position { + x: -100.0 + y: -20.0 + } + size { + x: 120.0 + y: 4.0 + } + color { + x: 0.894 + y: 0.506 + z: 0.333 + } + type: TYPE_BOX + texture: "druid/pixel" + id: "selected" + pivot: PIVOT_S + adjust_mode: ADJUST_MODE_STRETCH + parent: "E_Anchor" + inherit_alpha: true +} +nodes { + position { + x: -100.0 + } + scale { + x: 0.5 + y: 0.5 + } + size { + x: 220.0 + y: 40.0 + } + color { + x: 0.463 + y: 0.475 + z: 0.49 + } + type: TYPE_TEXT + text: "42" + font: "druid_text_bold" + id: "text_value" + outline { + x: 1.0 + y: 1.0 + z: 1.0 + } + shadow { + x: 1.0 + y: 1.0 + z: 1.0 + } + parent: "E_Anchor" + inherit_alpha: true + outline_alpha: 0.0 + shadow_alpha: 0.0 +} +material: "/builtins/materials/gui.material" +adjust_reference: ADJUST_REFERENCE_PARENT diff --git a/druid/widget/properties_panel/properties/property_left_right_selector.lua b/druid/widget/properties_panel/properties/property_left_right_selector.lua new file mode 100644 index 0000000..2f3dd5d --- /dev/null +++ b/druid/widget/properties_panel/properties/property_left_right_selector.lua @@ -0,0 +1,211 @@ +local event = require("event.event") + +---@class druid.widget.property_left_right_selector: druid.widget +---@field root node +---@field druid druid.instance +---@field text_name druid.text +---@field button druid.button +---@field selected node +---@field value string|number +---@field on_change_value event fun(value: string|number) +local M = {} + + +function M:init() + self.root = self:get_node("root") + self.selected = self:get_node("selected") + gui.set_alpha(self.selected, 0) + + self.text_name = self.druid:new_text("text_name") + :set_text_adjust("scale_then_trim", 0.3) + + self.text_value = self.druid:new_text("text_value") + self.button_left = self.druid:new_button("button_left", self.on_button_left) + self.button_left.on_repeated_click:subscribe(self.on_button_left, self) + + self.button_right = self.druid:new_button("button_right", self.on_button_right) + self.button_right.on_repeated_click:subscribe(self.on_button_right, self) + + self.on_change_value = event.create() + + self.container = self.druid:new_container(self.root) + self.container:add_container("text_name") + self.container:add_container("E_Anchor") +end + + +function M:set_text(text) + self.text_name:set_text(text) + return self +end + + +---Helper to cycle number in range +---@param value number Current value +---@param min number Min range value +---@param max number Max range value +---@param step number Step size +---@param is_loop boolean Is looped +---@return number Cycled value +local function step_number(value, min, max, step, is_loop) + local range = max - min + 1 + if is_loop then + -- Normalize step within range + local effective_step = step + if math.abs(step) >= range then + effective_step = step % range + if effective_step == 0 then + effective_step = step > 0 and range or -range + end + end + + value = value + effective_step + -- Handle wrapping + if max then + while value > max do + value = min + (value - max - 1) + end + end + if min then + while value < min do + value = max - (min - value - 1) + end + end + else + -- Clamp values + value = value + step + if max and value > max then + return max + elseif min and value < min then + return min + end + end + return value +end + + +---Helper to cycle array index with proper step wrapping +---@param array table Array to cycle through +---@param current_value any Current value to find index for +---@param step number Step direction +---@param is_loop boolean If true, cycle values. If false, clamp at ends +---@return any Next value in cycle +local function step_array(array, current_value, step, is_loop) + local index = 1 + for i, v in ipairs(array) do + if v == current_value then + index = i + break + end + end + + if is_loop then + -- Normalize step within array length + local range = #array + local effective_step = step + if math.abs(step) >= range then + effective_step = step % range + if effective_step == 0 then + effective_step = step > 0 and range or -range + end + end + + index = index + effective_step + -- Handle wrapping + while index > range do + index = 1 + (index - range - 1) + end + while index < 1 do + index = range - (1 - index - 1) + end + else + -- Clamp values + index = index + step + if index > #array then + index = #array + elseif index < 1 then + index = 1 + end + end + + return array[index] +end + + +function M:on_button_left() + self:add_step(-1) +end + +function M:on_button_right() + self:add_step(1) +end + + +---@param koef number -1 0 1, on 0 will not move +function M:add_step(koef) + local array_type = self.array_type + if array_type then + local value = self.value + local new_value = step_array(array_type.array, value, koef * array_type.steps, array_type.is_loop) + self:set_value(new_value) + return + end + + + local number_type = self.number_type + if number_type then + local value = tonumber(self.value) --[[@as number]] + local new_value = step_number(value, number_type.min, number_type.max, koef * number_type.steps, number_type.is_loop) + self:set_value(new_value) + return + end +end + + +function M:set_number_type(min, max, is_loop, steps) + self.number_type = { + min = min, + max = max, + steps = steps or 1, + is_loop = is_loop, + } + + return self +end + + +function M:set_array_type(array, is_loop, steps) + self.array_type = { + array = array, + steps = steps or 1, + is_loop = is_loop, + } + + return self +end + + +---@param value string|number +function M:set_value(value, is_instant) + if self.value == value then + return + end + + self.value = value + self.text_value:set_text(tostring(value)) + self.on_change_value:trigger(value) + + if not is_instant then + gui.set_alpha(self.selected, 1) + gui.animate(self.selected, "color.w", 0, gui.EASING_INSINE, 0.16) + end +end + + +---@return string|number +function M:get_value() + return self.value +end + + +return M diff --git a/druid/widget/properties_panel/properties/property_slider.gui b/druid/widget/properties_panel/properties/property_slider.gui new file mode 100644 index 0000000..4a2f739 --- /dev/null +++ b/druid/widget/properties_panel/properties/property_slider.gui @@ -0,0 +1,222 @@ +fonts { + name: "druid_text_bold" + font: "/druid/fonts/druid_text_bold.font" +} +textures { + name: "druid" + texture: "/druid/druid.atlas" +} +nodes { + size { + x: 400.0 + y: 40.0 + } + type: TYPE_BOX + texture: "druid/empty" + id: "root" + adjust_mode: ADJUST_MODE_STRETCH + inherit_alpha: true + visible: false +} +nodes { + position { + x: -200.0 + } + scale { + x: 0.5 + y: 0.5 + } + size { + x: 380.0 + y: 40.0 + } + color { + x: 0.463 + y: 0.475 + z: 0.49 + } + type: TYPE_TEXT + text: "Slider" + font: "druid_text_bold" + id: "text_name" + pivot: PIVOT_W + outline { + x: 1.0 + y: 1.0 + z: 1.0 + } + shadow { + x: 1.0 + y: 1.0 + z: 1.0 + } + parent: "root" + inherit_alpha: true + outline_alpha: 0.0 + shadow_alpha: 0.0 +} +nodes { + position { + x: 200.0 + } + size { + x: 200.0 + y: 40.0 + } + type: TYPE_BOX + id: "E_Anchor" + pivot: PIVOT_E + adjust_mode: ADJUST_MODE_STRETCH + parent: "root" + inherit_alpha: true + size_mode: SIZE_MODE_AUTO + visible: false +} +nodes { + position { + x: -133.0 + } + size { + x: 134.0 + y: 40.0 + } + color { + x: 0.129 + y: 0.141 + z: 0.157 + } + type: TYPE_BOX + texture: "druid/empty" + id: "slider" + parent: "E_Anchor" + inherit_alpha: true +} +nodes { + size { + x: 134.0 + y: 8.0 + } + color { + x: 0.129 + y: 0.141 + z: 0.157 + } + type: TYPE_BOX + texture: "druid/ui_circle_8" + id: "slider_back" + parent: "slider" + inherit_alpha: true + slice9 { + x: 4.0 + y: 4.0 + z: 4.0 + w: 4.0 + } +} +nodes { + position { + x: -55.0 + } + size { + x: 24.0 + y: 24.0 + } + color { + x: 0.722 + y: 0.741 + z: 0.761 + } + type: TYPE_BOX + texture: "druid/ui_circle_8" + id: "slider_pin" + parent: "slider" + inherit_alpha: true + slice9 { + x: 4.0 + y: 4.0 + z: 4.0 + w: 4.0 + } +} +nodes { + size { + x: 60.0 + y: 40.0 + } + color { + x: 0.463 + y: 0.475 + z: 0.49 + } + type: TYPE_BOX + texture: "druid/rect_round2_width2" + id: "button" + pivot: PIVOT_E + parent: "E_Anchor" + inherit_alpha: true + slice9 { + x: 4.0 + y: 4.0 + z: 4.0 + w: 4.0 + } +} +nodes { + position { + y: -20.0 + } + size { + x: 60.0 + y: 4.0 + } + color { + x: 0.894 + y: 0.506 + z: 0.333 + } + type: TYPE_BOX + texture: "druid/pixel" + id: "selected" + pivot: PIVOT_SE + adjust_mode: ADJUST_MODE_STRETCH + parent: "button" + inherit_alpha: true +} +nodes { + position { + x: -30.0 + } + scale { + x: 0.55 + y: 0.55 + } + size { + x: 100.0 + y: 40.0 + } + color { + x: 0.722 + y: 0.741 + z: 0.761 + } + type: TYPE_TEXT + text: "25 %" + font: "druid_text_bold" + id: "text_value" + outline { + x: 1.0 + y: 1.0 + z: 1.0 + } + shadow { + x: 1.0 + y: 1.0 + z: 1.0 + } + parent: "button" + inherit_alpha: true + outline_alpha: 0.0 + shadow_alpha: 0.0 +} +material: "/builtins/materials/gui.material" +adjust_reference: ADJUST_REFERENCE_PARENT diff --git a/druid/widget/properties_panel/properties/property_slider.lua b/druid/widget/properties_panel/properties/property_slider.lua new file mode 100644 index 0000000..38114b6 --- /dev/null +++ b/druid/widget/properties_panel/properties/property_slider.lua @@ -0,0 +1,126 @@ +local event = require("event.event") +local helper = require("druid.helper") + +---@class druid.widget.property_slider: druid.widget +---@field root node +---@field container druid.container +---@field druid druid.instance +---@field text_name druid.text +---@field text_value druid.text +---@field slider druid.slider +---@field on_change_value event fun(value:number) +local M = {} + + +function M:init() + self.root = self:get_node("root") + self.selected = self:get_node("selected") + gui.set_alpha(self.selected, 0) + self._value = 0 + + self.min = 0 + self.max = 1 + self.step = 0.01 + + self.text_name = self.druid:new_text("text_name") + :set_text_adjust("scale_then_trim", 0.3) + + self.text_value = self.druid:new_text("text_value") + self.slider = self.druid:new_slider("slider_pin", vmath.vector3(55, 0, 0), self.update_value) --[[@as druid.slider]] + self.slider:set_input_node("slider") + + self:set_text_function(function(value) + return math.floor(value * 100) .. "%" + end) + + self.container = self.druid:new_container(self.root) + self.container:add_container("text_name") + self.container:add_container("E_Anchor") + + self.on_change_value = event.create() +end + + +---@param callback fun(value:number):string +function M:set_text_function(callback) + self._text_function = callback + self.text_value:set_text(self._text_function(self._value)) +end + + +---Sets the text property of the slider +---@param text string +function M:set_text_property(text) + self.text_name:set_text(text) +end + + +---Sets the callback function for when the slider value changes +---@param callback fun(value:number) +function M:on_change(callback) + self.on_change_value:subscribe(callback) +end + + +---@param value number +function M:set_value(value, is_instant) + local diff = math.abs(self.max - self.min) + self.slider:set((value - self.min) / diff, true) + + local is_changed = self._value ~= value + if not is_changed then + return + end + + self._value = value + self.text_value:set_text(self._text_function(value)) + self.on_change_value:trigger(value) + + if not is_instant then + gui.set_alpha(self.selected, 1) + gui.animate(self.selected, "color.w", 0, gui.EASING_INSINE, 0.16) + end +end + + +---@return number +function M:get_value() + return self._value +end + + +function M:update_value(value) + local current_value = self._value + + local diff = math.abs(self.max - self.min) + -- [0..1] To range + value = value * diff + self.min + + -- Round to steps value (0.1, or 5. Should be divided on this value) + value = math.floor(value / self.step + 0.5) * self.step + + value = helper.clamp(value, self.min, self.max) + + self:set_value(value) +end + + +function M:set_number_type(min, max, step) + self.min = min or 0 + self.max = max or 1 + self.step = step + + self:set_text_function(function(value) + return tostring(value) + end) + + self:set_value(self._value, true) +end + + +function M:_on_slider_change_by_user(value) + self:set_value(value) +end + + +return M diff --git a/druid/widget/properties_panel/properties/property_text.gui b/druid/widget/properties_panel/properties/property_text.gui new file mode 100644 index 0000000..1f1af0a --- /dev/null +++ b/druid/widget/properties_panel/properties/property_text.gui @@ -0,0 +1,96 @@ +fonts { + name: "druid_text_bold" + font: "/druid/fonts/druid_text_bold.font" +} +textures { + name: "druid" + texture: "/druid/druid.atlas" +} +nodes { + size { + x: 400.0 + y: 40.0 + } + type: TYPE_BOX + texture: "druid/empty" + id: "root" + adjust_mode: ADJUST_MODE_STRETCH + inherit_alpha: true + visible: false +} +nodes { + position { + x: -200.0 + } + scale { + x: 0.5 + y: 0.5 + } + size { + x: 400.0 + y: 50.0 + } + color { + x: 0.463 + y: 0.475 + z: 0.49 + } + type: TYPE_TEXT + text: "Text" + font: "druid_text_bold" + id: "text_name" + pivot: PIVOT_W + outline { + x: 1.0 + y: 1.0 + z: 1.0 + } + shadow { + x: 1.0 + y: 1.0 + z: 1.0 + } + parent: "root" + inherit_alpha: true + outline_alpha: 0.0 + shadow_alpha: 0.0 +} +nodes { + position { + x: 200.0 + } + scale { + x: 0.5 + y: 0.5 + } + size { + x: 350.0 + y: 50.0 + } + color { + x: 0.722 + y: 0.741 + z: 0.761 + } + type: TYPE_TEXT + text: "Text" + font: "druid_text_bold" + id: "text_right" + pivot: PIVOT_E + outline { + x: 1.0 + y: 1.0 + z: 1.0 + } + shadow { + x: 1.0 + y: 1.0 + z: 1.0 + } + parent: "root" + inherit_alpha: true + outline_alpha: 0.0 + shadow_alpha: 0.0 +} +material: "/builtins/materials/gui.material" +adjust_reference: ADJUST_REFERENCE_PARENT diff --git a/druid/widget/properties_panel/properties/property_text.lua b/druid/widget/properties_panel/properties/property_text.lua new file mode 100644 index 0000000..ef2ed48 --- /dev/null +++ b/druid/widget/properties_panel/properties/property_text.lua @@ -0,0 +1,42 @@ +---@class druid.widget.property_text: druid.widget +---@field root node +---@field container druid.container +---@field text_name druid.text +---@field text_right druid.text +local M = {} + +function M:init() + self.root = self:get_node("root") + self.text_name = self.druid:new_text("text_name") + :set_text_adjust("scale_then_trim_left", 0.3) + + self.text_right = self.druid:new_text("text_right", "") + --:set_text_adjust("scale_then_trim_left", 0.3) -- TODO: not works? why? + + self.container = self.druid:new_container(self.root) + self.container:add_container("text_name", nil, function(_, size) + self.text_name:set_size(size) + end) + self.container:add_container("text_right", nil, function(_, size) + self.text_right:set_size(size) + end) +end + + +---@param text string +---@return druid.widget.property_text +function M:set_text_property(text) + self.text_name:set_text(text) + return self +end + + +---@param text string|nil +---@return druid.widget.property_text +function M:set_text_value(text) + self.text_right:set_text(text or "") + return self +end + + +return M diff --git a/druid/widget/properties_panel/properties/property_vector3.gui b/druid/widget/properties_panel/properties/property_vector3.gui new file mode 100644 index 0000000..71b30f2 --- /dev/null +++ b/druid/widget/properties_panel/properties/property_vector3.gui @@ -0,0 +1,490 @@ +fonts { + name: "druid_text_bold" + font: "/druid/fonts/druid_text_bold.font" +} +fonts { + name: "druid_text_regular" + font: "/druid/fonts/druid_text_regular.font" +} +textures { + name: "druid" + texture: "/druid/druid.atlas" +} +nodes { + size { + x: 400.0 + y: 40.0 + } + type: TYPE_BOX + texture: "druid/empty" + id: "root" + adjust_mode: ADJUST_MODE_STRETCH + inherit_alpha: true + visible: false +} +nodes { + position { + x: -200.0 + } + scale { + x: 0.5 + y: 0.5 + } + size { + x: 350.0 + y: 50.0 + } + color { + x: 0.463 + y: 0.475 + z: 0.49 + } + type: TYPE_TEXT + text: "Vector3" + font: "druid_text_bold" + id: "text_name" + pivot: PIVOT_W + outline { + x: 1.0 + y: 1.0 + z: 1.0 + } + shadow { + x: 1.0 + y: 1.0 + z: 1.0 + } + parent: "root" + inherit_alpha: true + outline_alpha: 0.0 + shadow_alpha: 0.0 +} +nodes { + position { + x: 200.0 + } + size { + x: 200.0 + y: 40.0 + } + type: TYPE_BOX + id: "E_Anchor" + pivot: PIVOT_E + parent: "root" + inherit_alpha: true + size_mode: SIZE_MODE_AUTO + visible: false +} +nodes { + position { + x: -200.0 + } + size { + x: 66.0 + y: 40.0 + } + type: TYPE_BOX + id: "field_x" + pivot: PIVOT_W + parent: "E_Anchor" + inherit_alpha: true + size_mode: SIZE_MODE_AUTO + visible: false +} +nodes { + position { + x: 7.0 + } + scale { + x: 0.5 + y: 0.5 + } + size { + x: 30.0 + y: 40.0 + } + color { + x: 0.31 + y: 0.318 + z: 0.322 + } + type: TYPE_TEXT + text: "X" + font: "druid_text_regular" + id: "text_x" + parent: "field_x" + inherit_alpha: true + outline_alpha: 0.0 + shadow_alpha: 0.0 +} +nodes { + position { + x: 40.0 + } + type: TYPE_TEMPLATE + id: "rich_input_x" + parent: "field_x" + inherit_alpha: true + template: "/druid/custom/rich_input/rich_input.gui" +} +nodes { + size { + x: 50.0 + y: 40.0 + } + type: TYPE_BOX + id: "rich_input_x/root" + parent: "rich_input_x" + overridden_fields: 4 + template_node_child: true +} +nodes { + size { + x: 50.0 + y: 40.0 + } + type: TYPE_BOX + id: "rich_input_x/button" + parent: "rich_input_x/root" + overridden_fields: 4 + template_node_child: true +} +nodes { + size { + x: 70.0 + y: 50.0 + } + type: TYPE_TEXT + id: "rich_input_x/placeholder_text" + parent: "rich_input_x/root" + overridden_fields: 4 + overridden_fields: 8 + template_node_child: true +} +nodes { + size { + x: 70.0 + y: 50.0 + } + type: TYPE_TEXT + text: "20.0" + id: "rich_input_x/input_text" + parent: "rich_input_x/root" + overridden_fields: 4 + overridden_fields: 8 + template_node_child: true +} +nodes { + position { + x: 18.0 + } + type: TYPE_BOX + id: "rich_input_x/cursor_node" + parent: "rich_input_x/root" + overridden_fields: 1 + template_node_child: true +} +nodes { + type: TYPE_TEXT + id: "rich_input_x/cursor_text" + parent: "rich_input_x/cursor_node" + template_node_child: true +} +nodes { + position { + x: 40.0 + y: -20.0 + } + size { + x: 50.0 + y: 4.0 + } + color { + x: 0.894 + y: 0.506 + z: 0.333 + } + type: TYPE_BOX + texture: "druid/pixel" + id: "selected_x" + pivot: PIVOT_S + adjust_mode: ADJUST_MODE_STRETCH + parent: "field_x" + inherit_alpha: true +} +nodes { + position { + x: -132.0 + } + size { + x: 66.0 + y: 40.0 + } + type: TYPE_BOX + id: "field_y" + pivot: PIVOT_W + parent: "E_Anchor" + inherit_alpha: true + size_mode: SIZE_MODE_AUTO + visible: false +} +nodes { + position { + x: 7.0 + } + scale { + x: 0.5 + y: 0.5 + } + size { + x: 30.0 + y: 40.0 + } + color { + x: 0.31 + y: 0.318 + z: 0.322 + } + type: TYPE_TEXT + text: "Y" + font: "druid_text_regular" + id: "text_y" + parent: "field_y" + inherit_alpha: true + outline_alpha: 0.0 + shadow_alpha: 0.0 +} +nodes { + position { + x: 40.0 + } + type: TYPE_TEMPLATE + id: "rich_input_y" + parent: "field_y" + inherit_alpha: true + template: "/druid/custom/rich_input/rich_input.gui" +} +nodes { + size { + x: 50.0 + y: 40.0 + } + type: TYPE_BOX + id: "rich_input_y/root" + parent: "rich_input_y" + overridden_fields: 4 + template_node_child: true +} +nodes { + size { + x: 50.0 + y: 40.0 + } + type: TYPE_BOX + id: "rich_input_y/button" + parent: "rich_input_y/root" + overridden_fields: 4 + template_node_child: true +} +nodes { + size { + x: 70.0 + y: 50.0 + } + type: TYPE_TEXT + id: "rich_input_y/placeholder_text" + parent: "rich_input_y/root" + overridden_fields: 4 + overridden_fields: 8 + template_node_child: true +} +nodes { + size { + x: 70.0 + y: 50.0 + } + type: TYPE_TEXT + text: "20.0" + id: "rich_input_y/input_text" + parent: "rich_input_y/root" + overridden_fields: 4 + overridden_fields: 8 + template_node_child: true +} +nodes { + position { + x: 18.0 + } + type: TYPE_BOX + id: "rich_input_y/cursor_node" + parent: "rich_input_y/root" + overridden_fields: 1 + template_node_child: true +} +nodes { + type: TYPE_TEXT + id: "rich_input_y/cursor_text" + parent: "rich_input_y/cursor_node" + template_node_child: true +} +nodes { + position { + x: 40.0 + y: -20.0 + } + size { + x: 50.0 + y: 4.0 + } + color { + x: 0.894 + y: 0.506 + z: 0.333 + } + type: TYPE_BOX + texture: "druid/pixel" + id: "selected_y" + pivot: PIVOT_S + adjust_mode: ADJUST_MODE_STRETCH + parent: "field_y" + inherit_alpha: true +} +nodes { + position { + x: -66.0 + } + size { + x: 66.0 + y: 40.0 + } + type: TYPE_BOX + id: "field_z" + pivot: PIVOT_W + parent: "E_Anchor" + inherit_alpha: true + size_mode: SIZE_MODE_AUTO + visible: false +} +nodes { + position { + x: 7.0 + } + scale { + x: 0.5 + y: 0.5 + } + size { + x: 30.0 + y: 40.0 + } + color { + x: 0.31 + y: 0.318 + z: 0.322 + } + type: TYPE_TEXT + text: "Z" + font: "druid_text_regular" + id: "text_z" + parent: "field_z" + inherit_alpha: true + outline_alpha: 0.0 + shadow_alpha: 0.0 +} +nodes { + position { + x: 40.0 + } + type: TYPE_TEMPLATE + id: "rich_input_z" + parent: "field_z" + inherit_alpha: true + template: "/druid/custom/rich_input/rich_input.gui" +} +nodes { + size { + x: 50.0 + y: 40.0 + } + type: TYPE_BOX + id: "rich_input_z/root" + parent: "rich_input_z" + overridden_fields: 4 + template_node_child: true +} +nodes { + size { + x: 50.0 + y: 40.0 + } + type: TYPE_BOX + id: "rich_input_z/button" + parent: "rich_input_z/root" + overridden_fields: 4 + template_node_child: true +} +nodes { + size { + x: 70.0 + y: 50.0 + } + type: TYPE_TEXT + id: "rich_input_z/placeholder_text" + parent: "rich_input_z/root" + overridden_fields: 4 + overridden_fields: 8 + template_node_child: true +} +nodes { + size { + x: 70.0 + y: 50.0 + } + type: TYPE_TEXT + text: "20.0" + id: "rich_input_z/input_text" + parent: "rich_input_z/root" + overridden_fields: 4 + overridden_fields: 8 + template_node_child: true +} +nodes { + position { + x: 18.0 + } + type: TYPE_BOX + id: "rich_input_z/cursor_node" + parent: "rich_input_z/root" + overridden_fields: 1 + template_node_child: true +} +nodes { + type: TYPE_TEXT + id: "rich_input_z/cursor_text" + parent: "rich_input_z/cursor_node" + template_node_child: true +} +nodes { + position { + x: 40.0 + y: -20.0 + } + size { + x: 50.0 + y: 4.0 + } + color { + x: 0.894 + y: 0.506 + z: 0.333 + } + type: TYPE_BOX + texture: "druid/pixel" + id: "selected_z" + pivot: PIVOT_S + adjust_mode: ADJUST_MODE_STRETCH + parent: "field_z" + inherit_alpha: true +} +material: "/builtins/materials/gui.material" +adjust_reference: ADJUST_REFERENCE_PARENT diff --git a/druid/widget/properties_panel/properties/property_vector3.lua b/druid/widget/properties_panel/properties/property_vector3.lua new file mode 100644 index 0000000..820ccbd --- /dev/null +++ b/druid/widget/properties_panel/properties/property_vector3.lua @@ -0,0 +1,75 @@ +local event = require("event.event") + + +---@class druid.widget.property_vector3: druid.widget +---@field root node +---@field container druid.container +---@field text_name druid.text +---@field button druid.button +---@field druid druid.instance +local M = {} + +function M:init() + self.root = self:get_node("root") + self.text_name = self.druid:new_text("text_name") + :set_text_adjust("scale_then_trim", 0.3) + + self.selected_x = self:get_node("selected_x") + gui.set_alpha(self.selected_x, 0) + + self.selected_y = self:get_node("selected_y") + gui.set_alpha(self.selected_y, 0) + + self.selected_z = self:get_node("selected_z") + gui.set_alpha(self.selected_z, 0) + + self.rich_input_x = self.druid:new_rich_input("rich_input_x") + self.rich_input_y = self.druid:new_rich_input("rich_input_y") + self.rich_input_z = self.druid:new_rich_input("rich_input_z") + + self.value = vmath.vector3(0) + + self.rich_input_x.input.on_input_unselect:subscribe(function() + self.value.x = tonumber(self.rich_input_x.input:get_text()) or 0 + self.on_change:trigger(self.value) + end) + + self.rich_input_y.input.on_input_unselect:subscribe(function() + self.value.y = tonumber(self.rich_input_y.input:get_text()) or 0 + self.on_change:trigger(self.value) + end) + + self.rich_input_z.input.on_input_unselect:subscribe(function() + self.value.z = tonumber(self.rich_input_z.input:get_text()) or 0 + self.on_change:trigger(self.value) + end) + + self.container = self.druid:new_container(self.root) + self.container:add_container("text_name") + self.container:add_container("E_Anchor") + + self.on_change = event.create() +end + + +---@param text string +---@return druid.widget.property_vector3 +function M:set_text_property(text) + self.text_name:set_text(text) + return self +end + + +---@param x number +---@param y number +---@param z number +---@return druid.widget.property_vector3 +function M:set_value(x, y, z) + self.rich_input_x:set_text(tostring(x)) + self.rich_input_y:set_text(tostring(y)) + self.rich_input_z:set_text(tostring(z)) + return self +end + + +return M diff --git a/druid/widget/properties_panel/properties_panel.gui b/druid/widget/properties_panel/properties_panel.gui new file mode 100644 index 0000000..43dbf4c --- /dev/null +++ b/druid/widget/properties_panel/properties_panel.gui @@ -0,0 +1,699 @@ +fonts { + name: "druid_text_regular" + font: "/druid/fonts/druid_text_regular.font" +} +fonts { + name: "druid_text_bold" + font: "/druid/fonts/druid_text_bold.font" +} +textures { + name: "druid" + texture: "/druid/druid.atlas" +} +nodes { + size { + x: 400.0 + y: 400.0 + } + color { + x: 0.173 + y: 0.184 + z: 0.204 + } + type: TYPE_BOX + texture: "druid/ui_circle_16" + id: "root" + pivot: PIVOT_N + inherit_alpha: true + slice9 { + x: 8.0 + y: 8.0 + z: 8.0 + w: 8.0 + } +} +nodes { + size { + x: 400.0 + y: 40.0 + } + type: TYPE_BOX + id: "header" + pivot: PIVOT_N + parent: "root" + inherit_alpha: true + size_mode: SIZE_MODE_AUTO + visible: false +} +nodes { + position { + x: -192.0 + y: -8.0 + } + scale { + x: 0.5 + y: 0.5 + } + size { + x: 500.0 + y: 50.0 + } + color { + x: 0.463 + y: 0.475 + z: 0.49 + } + type: TYPE_TEXT + text: "Properties" + font: "druid_text_regular" + id: "text_header" + pivot: PIVOT_NW + outline { + x: 1.0 + y: 1.0 + z: 1.0 + } + shadow { + x: 1.0 + y: 1.0 + z: 1.0 + } + parent: "header" + inherit_alpha: true + outline_alpha: 0.0 + shadow_alpha: 0.0 +} +nodes { + position { + x: 192.0 + y: -4.0 + } + color { + x: 0.306 + y: 0.31 + z: 0.314 + } + type: TYPE_BOX + texture: "druid/icon_drag" + id: "icon_drag" + pivot: PIVOT_NE + parent: "header" + inherit_alpha: true + size_mode: SIZE_MODE_AUTO +} +nodes { + position { + y: -50.0 + } + size { + x: 400.0 + y: 350.0 + } + type: TYPE_BOX + id: "content" + pivot: PIVOT_N + parent: "root" + inherit_alpha: true + size_mode: SIZE_MODE_AUTO + visible: false +} +nodes { + position { + x: -200.0 + } + size { + x: 400.0 + y: 350.0 + } + type: TYPE_BOX + texture: "druid/empty" + id: "scroll_view" + xanchor: XANCHOR_LEFT + pivot: PIVOT_NW + adjust_mode: ADJUST_MODE_STRETCH + parent: "content" + inherit_alpha: true + clipping_mode: CLIPPING_MODE_STENCIL +} +nodes { + size { + x: 400.0 + y: 350.0 + } + type: TYPE_BOX + texture: "druid/pixel" + id: "scroll_content" + pivot: PIVOT_NW + adjust_mode: ADJUST_MODE_STRETCH + parent: "scroll_view" + inherit_alpha: true + slice9 { + x: 8.0 + y: 8.0 + w: 6.0 + } + visible: false +} +nodes { + position { + y: -10.0 + } + type: TYPE_BOX + texture: "druid/empty" + id: "propeties" + parent: "content" + inherit_alpha: true + size_mode: SIZE_MODE_AUTO + visible: false +} +nodes { + type: TYPE_TEMPLATE + id: "property_slider" + parent: "propeties" + inherit_alpha: true + template: "/druid/widget/properties_panel/properties/property_slider.gui" +} +nodes { + type: TYPE_BOX + id: "property_slider/root" + parent: "property_slider" + template_node_child: true +} +nodes { + type: TYPE_TEXT + id: "property_slider/text_name" + parent: "property_slider/root" + template_node_child: true +} +nodes { + type: TYPE_BOX + id: "property_slider/E_Anchor" + parent: "property_slider/root" + template_node_child: true +} +nodes { + type: TYPE_BOX + id: "property_slider/slider" + parent: "property_slider/E_Anchor" + template_node_child: true +} +nodes { + type: TYPE_BOX + id: "property_slider/slider_back" + parent: "property_slider/slider" + template_node_child: true +} +nodes { + type: TYPE_BOX + id: "property_slider/slider_pin" + parent: "property_slider/slider" + template_node_child: true +} +nodes { + type: TYPE_BOX + id: "property_slider/button" + parent: "property_slider/E_Anchor" + template_node_child: true +} +nodes { + type: TYPE_BOX + id: "property_slider/selected" + parent: "property_slider/button" + template_node_child: true +} +nodes { + type: TYPE_TEXT + id: "property_slider/text_value" + parent: "property_slider/button" + template_node_child: true +} +nodes { + position { + y: -50.0 + } + type: TYPE_TEMPLATE + id: "property_checkbox" + parent: "propeties" + inherit_alpha: true + template: "/druid/widget/properties_panel/properties/property_checkbox.gui" +} +nodes { + type: TYPE_BOX + id: "property_checkbox/root" + parent: "property_checkbox" + template_node_child: true +} +nodes { + type: TYPE_TEXT + id: "property_checkbox/text_name" + parent: "property_checkbox/root" + template_node_child: true +} +nodes { + type: TYPE_BOX + id: "property_checkbox/E_Anchor" + parent: "property_checkbox/root" + template_node_child: true +} +nodes { + type: TYPE_BOX + id: "property_checkbox/button" + parent: "property_checkbox/E_Anchor" + template_node_child: true +} +nodes { + type: TYPE_BOX + id: "property_checkbox/icon" + parent: "property_checkbox/button" + template_node_child: true +} +nodes { + type: TYPE_BOX + id: "property_checkbox/selected" + parent: "property_checkbox/button" + template_node_child: true +} +nodes { + position { + y: -100.0 + } + type: TYPE_TEMPLATE + id: "property_button" + parent: "propeties" + inherit_alpha: true + template: "/druid/widget/properties_panel/properties/property_button.gui" +} +nodes { + type: TYPE_BOX + id: "property_button/root" + parent: "property_button" + template_node_child: true +} +nodes { + type: TYPE_TEXT + id: "property_button/text_name" + parent: "property_button/root" + template_node_child: true +} +nodes { + type: TYPE_BOX + id: "property_button/E_Anchor" + parent: "property_button/root" + template_node_child: true +} +nodes { + type: TYPE_BOX + id: "property_button/button" + parent: "property_button/E_Anchor" + template_node_child: true +} +nodes { + type: TYPE_BOX + id: "property_button/selected" + parent: "property_button/button" + template_node_child: true +} +nodes { + type: TYPE_TEXT + id: "property_button/text_button" + parent: "property_button/button" + template_node_child: true +} +nodes { + position { + y: -150.0 + } + type: TYPE_TEMPLATE + id: "property_input" + parent: "propeties" + inherit_alpha: true + template: "/druid/widget/properties_panel/properties/property_input.gui" +} +nodes { + type: TYPE_BOX + id: "property_input/root" + parent: "property_input" + template_node_child: true +} +nodes { + type: TYPE_TEXT + id: "property_input/text_name" + parent: "property_input/root" + template_node_child: true +} +nodes { + type: TYPE_BOX + id: "property_input/E_Anchor" + parent: "property_input/root" + template_node_child: true +} +nodes { + type: TYPE_TEMPLATE + id: "property_input/rich_input" + parent: "property_input/E_Anchor" + template_node_child: true +} +nodes { + type: TYPE_BOX + id: "property_input/rich_input/root" + parent: "property_input/rich_input" + template_node_child: true +} +nodes { + type: TYPE_BOX + id: "property_input/rich_input/button" + parent: "property_input/rich_input/root" + template_node_child: true +} +nodes { + type: TYPE_TEXT + id: "property_input/rich_input/placeholder_text" + parent: "property_input/rich_input/root" + template_node_child: true +} +nodes { + type: TYPE_TEXT + id: "property_input/rich_input/input_text" + parent: "property_input/rich_input/root" + template_node_child: true +} +nodes { + type: TYPE_BOX + id: "property_input/rich_input/cursor_node" + parent: "property_input/rich_input/root" + template_node_child: true +} +nodes { + type: TYPE_TEXT + id: "property_input/rich_input/cursor_text" + parent: "property_input/rich_input/cursor_node" + template_node_child: true +} +nodes { + type: TYPE_BOX + id: "property_input/selected" + parent: "property_input/E_Anchor" + template_node_child: true +} +nodes { + position { + y: -200.0 + } + type: TYPE_TEMPLATE + id: "property_text" + parent: "propeties" + inherit_alpha: true + template: "/druid/widget/properties_panel/properties/property_text.gui" +} +nodes { + type: TYPE_BOX + id: "property_text/root" + parent: "property_text" + template_node_child: true +} +nodes { + type: TYPE_TEXT + id: "property_text/text_name" + parent: "property_text/root" + template_node_child: true +} +nodes { + type: TYPE_TEXT + id: "property_text/text_right" + parent: "property_text/root" + template_node_child: true +} +nodes { + position { + y: -250.0 + } + type: TYPE_TEMPLATE + id: "property_left_right_selector" + parent: "propeties" + inherit_alpha: true + template: "/druid/widget/properties_panel/properties/property_left_right_selector.gui" +} +nodes { + type: TYPE_BOX + id: "property_left_right_selector/root" + parent: "property_left_right_selector" + template_node_child: true +} +nodes { + type: TYPE_TEXT + id: "property_left_right_selector/text_name" + parent: "property_left_right_selector/root" + template_node_child: true +} +nodes { + type: TYPE_BOX + id: "property_left_right_selector/E_Anchor" + parent: "property_left_right_selector/root" + template_node_child: true +} +nodes { + type: TYPE_BOX + id: "property_left_right_selector/button_left" + parent: "property_left_right_selector/E_Anchor" + template_node_child: true +} +nodes { + type: TYPE_BOX + id: "property_left_right_selector/icon_left" + parent: "property_left_right_selector/button_left" + template_node_child: true +} +nodes { + type: TYPE_BOX + id: "property_left_right_selector/button_right" + parent: "property_left_right_selector/E_Anchor" + template_node_child: true +} +nodes { + type: TYPE_BOX + id: "property_left_right_selector/icon_right" + parent: "property_left_right_selector/button_right" + template_node_child: true +} +nodes { + type: TYPE_BOX + id: "property_left_right_selector/selected" + parent: "property_left_right_selector/E_Anchor" + template_node_child: true +} +nodes { + type: TYPE_TEXT + id: "property_left_right_selector/text_value" + parent: "property_left_right_selector/E_Anchor" + template_node_child: true +} +nodes { + position { + y: -300.0 + } + type: TYPE_TEMPLATE + id: "property_vector3" + parent: "propeties" + inherit_alpha: true + template: "/druid/widget/properties_panel/properties/property_vector3.gui" +} +nodes { + type: TYPE_BOX + id: "property_vector3/root" + parent: "property_vector3" + template_node_child: true +} +nodes { + type: TYPE_TEXT + id: "property_vector3/text_name" + parent: "property_vector3/root" + template_node_child: true +} +nodes { + type: TYPE_BOX + id: "property_vector3/E_Anchor" + parent: "property_vector3/root" + template_node_child: true +} +nodes { + type: TYPE_BOX + id: "property_vector3/field_x" + parent: "property_vector3/E_Anchor" + template_node_child: true +} +nodes { + type: TYPE_TEXT + id: "property_vector3/text_x" + parent: "property_vector3/field_x" + template_node_child: true +} +nodes { + type: TYPE_TEMPLATE + id: "property_vector3/rich_input_x" + parent: "property_vector3/field_x" + template_node_child: true +} +nodes { + type: TYPE_BOX + id: "property_vector3/rich_input_x/root" + parent: "property_vector3/rich_input_x" + template_node_child: true +} +nodes { + type: TYPE_BOX + id: "property_vector3/rich_input_x/button" + parent: "property_vector3/rich_input_x/root" + template_node_child: true +} +nodes { + type: TYPE_TEXT + id: "property_vector3/rich_input_x/placeholder_text" + parent: "property_vector3/rich_input_x/root" + template_node_child: true +} +nodes { + type: TYPE_TEXT + id: "property_vector3/rich_input_x/input_text" + parent: "property_vector3/rich_input_x/root" + template_node_child: true +} +nodes { + type: TYPE_BOX + id: "property_vector3/rich_input_x/cursor_node" + parent: "property_vector3/rich_input_x/root" + template_node_child: true +} +nodes { + type: TYPE_TEXT + id: "property_vector3/rich_input_x/cursor_text" + parent: "property_vector3/rich_input_x/cursor_node" + template_node_child: true +} +nodes { + type: TYPE_BOX + id: "property_vector3/selected_x" + parent: "property_vector3/field_x" + template_node_child: true +} +nodes { + type: TYPE_BOX + id: "property_vector3/field_y" + parent: "property_vector3/E_Anchor" + template_node_child: true +} +nodes { + type: TYPE_TEXT + id: "property_vector3/text_y" + parent: "property_vector3/field_y" + template_node_child: true +} +nodes { + type: TYPE_TEMPLATE + id: "property_vector3/rich_input_y" + parent: "property_vector3/field_y" + template_node_child: true +} +nodes { + type: TYPE_BOX + id: "property_vector3/rich_input_y/root" + parent: "property_vector3/rich_input_y" + template_node_child: true +} +nodes { + type: TYPE_BOX + id: "property_vector3/rich_input_y/button" + parent: "property_vector3/rich_input_y/root" + template_node_child: true +} +nodes { + type: TYPE_TEXT + id: "property_vector3/rich_input_y/placeholder_text" + parent: "property_vector3/rich_input_y/root" + template_node_child: true +} +nodes { + type: TYPE_TEXT + id: "property_vector3/rich_input_y/input_text" + parent: "property_vector3/rich_input_y/root" + template_node_child: true +} +nodes { + type: TYPE_BOX + id: "property_vector3/rich_input_y/cursor_node" + parent: "property_vector3/rich_input_y/root" + template_node_child: true +} +nodes { + type: TYPE_TEXT + id: "property_vector3/rich_input_y/cursor_text" + parent: "property_vector3/rich_input_y/cursor_node" + template_node_child: true +} +nodes { + type: TYPE_BOX + id: "property_vector3/selected_y" + parent: "property_vector3/field_y" + template_node_child: true +} +nodes { + type: TYPE_BOX + id: "property_vector3/field_z" + parent: "property_vector3/E_Anchor" + template_node_child: true +} +nodes { + type: TYPE_TEXT + id: "property_vector3/text_z" + parent: "property_vector3/field_z" + template_node_child: true +} +nodes { + type: TYPE_TEMPLATE + id: "property_vector3/rich_input_z" + parent: "property_vector3/field_z" + template_node_child: true +} +nodes { + type: TYPE_BOX + id: "property_vector3/rich_input_z/root" + parent: "property_vector3/rich_input_z" + template_node_child: true +} +nodes { + type: TYPE_BOX + id: "property_vector3/rich_input_z/button" + parent: "property_vector3/rich_input_z/root" + template_node_child: true +} +nodes { + type: TYPE_TEXT + id: "property_vector3/rich_input_z/placeholder_text" + parent: "property_vector3/rich_input_z/root" + template_node_child: true +} +nodes { + type: TYPE_TEXT + id: "property_vector3/rich_input_z/input_text" + parent: "property_vector3/rich_input_z/root" + template_node_child: true +} +nodes { + type: TYPE_BOX + id: "property_vector3/rich_input_z/cursor_node" + parent: "property_vector3/rich_input_z/root" + template_node_child: true +} +nodes { + type: TYPE_TEXT + id: "property_vector3/rich_input_z/cursor_text" + parent: "property_vector3/rich_input_z/cursor_node" + template_node_child: true +} +nodes { + type: TYPE_BOX + id: "property_vector3/selected_z" + parent: "property_vector3/field_z" + template_node_child: true +} +material: "/builtins/materials/gui.material" +adjust_reference: ADJUST_REFERENCE_PARENT diff --git a/druid/widget/properties_panel/properties_panel.lua b/druid/widget/properties_panel/properties_panel.lua new file mode 100644 index 0000000..505c76d --- /dev/null +++ b/druid/widget/properties_panel/properties_panel.lua @@ -0,0 +1,316 @@ +local property_checkbox = require("druid.widget.properties_panel.properties.property_checkbox") +local property_slider = require("druid.widget.properties_panel.properties.property_slider") +local property_button = require("druid.widget.properties_panel.properties.property_button") +local property_input = require("druid.widget.properties_panel.properties.property_input") +local property_text = require("druid.widget.properties_panel.properties.property_text") +local property_left_right_selector = require("druid.widget.properties_panel.properties.property_left_right_selector") +local property_vector3 = require("druid.widget.properties_panel.properties.property_vector3") + +---@class druid.widget.properties_panel: druid.widget +---@field root node +---@field scroll druid.scroll +---@field layout druid.layout +---@field container druid.container +---@field container_content druid.container +---@field container_scroll_view druid.container +---@field contaienr_scroll_content druid.container +---@field button_hidden druid.button +---@field text_header druid.text +---@field paginator druid.widget.property_left_right_selector +---@field properties druid.widget[] List of created properties +---@field properties_constructors fun()[] List of properties functions to create a new widget. Used to not spawn non-visible widgets but keep the reference +local M = {} + + +function M:init() + self.root = self:get_node("root") + self.content = self:get_node("content") + + self.container = self.druid:new_container(self.root) + self.container:add_container("header") + self.container_content = self.container:add_container("content") + self.container_scroll_view = self.container_content:add_container("scroll_view") + self.contaienr_scroll_content = self.container_scroll_view:add_container("scroll_content") + + self.default_size = self.container:get_size() + + self.properties = {} + self.properties_constructors = {} + self.current_page = 1 + self.properties_per_page = 15 + + self.text_header = self.druid:new_text("text_header") + self.scroll = self.druid:new_scroll("scroll_view", "scroll_content") + self.layout = self.druid:new_layout("scroll_content", "vertical") + :set_hug_content(false, true) + :set_padding(nil, 0) + + self.layout.on_size_changed:subscribe(self.on_size_changed, self) + + self.druid:new_drag("header", self.on_drag_widget) + self.button_hidden = self.druid:new_button("icon_drag", function() + self:set_hidden(not self._is_hidden) + end):set_style(nil) + + -- We not using as a part of properties, since it handled in a way to be paginable + self.paginator = self.druid:new_widget(property_left_right_selector, "property_left_right_selector", "root") + self.paginator:set_text("Page") + self.paginator:set_number_type(1, 1, true) + self.paginator:set_value(self.current_page) + self.paginator.on_change_value:subscribe(function(value) + self:set_page(value) + end) + local width = self.layout:get_content_size() + self.paginator.container:set_size(width) + + gui.set_enabled(self.paginator.root, false) + + gui.set_enabled(self:get_node("property_checkbox/root"), false) + gui.set_enabled(self:get_node("property_slider/root"), false) + gui.set_enabled(self:get_node("property_button/root"), false) + gui.set_enabled(self:get_node("property_input/root"), false) + gui.set_enabled(self:get_node("property_text/root"), false) + gui.set_enabled(self:get_node("property_left_right_selector/root"), false) + gui.set_enabled(self:get_node("property_vector3/root"), false) +end + + +function M:on_remove() + self:clear() +end + + +function M:on_drag_widget(dx, dy) + local position = self.container:get_position() + self.container:set_position(position.x + dx, position.y + dy) +end + + +function M:clear_created_properties() + for index = 1, #self.properties do + local property = self.properties[index] + local root = property.root --[[@as node]] + + if root then + -- If prefab used clone nodes we can remove it + if property:get_nodes() then + gui.delete_node(root) + else + -- Probably we have component placed on scene directly + gui.set_enabled(root, false) + end + end + + self.druid:remove(self.properties[index]) + end + self.properties = {} + + self.layout:clear_layout() + + -- Use paginator as "pinned" widget + self.layout:add(self.paginator.root) +end + + +function M:clear() + self:clear_created_properties() + self.properties_constructors = {} +end + + +function M:on_size_changed(new_size) + self.container_content:set_size(new_size.x, new_size.y, gui.PIVOT_N) + + self.default_size = vmath.vector3(new_size.x, new_size.y + 50, 0) + if not self._is_hidden then + self.container:set_size(self.default_size.x, self.default_size.y, gui.PIVOT_N) + end + + local width = self.layout:get_size().x - self.layout.padding.x - self.layout.padding.z + for index = 1, #self.properties do + local property = self.properties[index] + local container = property.container --[[@as druid.container]] + if container then + container:set_size(width) + end + end + self.paginator.container:set_size(width) +end + + +function M:update(dt) + if self.is_dirty then + self.is_dirty = false + + self:clear_created_properties() + + local properties_count = #self.properties_constructors + + -- Render all current properties + local start_index = (self.current_page - 1) * self.properties_per_page + 1 + local end_index = start_index + self.properties_per_page - 1 + end_index = math.min(end_index, properties_count) + + local is_paginator_visible = properties_count > self.properties_per_page + gui.set_enabled(self.paginator.root, is_paginator_visible) + self.paginator:set_number_type(1, math.ceil(properties_count / self.properties_per_page), true) + self.paginator.text_value:set_text(self.current_page .. " / " .. math.ceil(properties_count / self.properties_per_page)) + + for index = start_index, end_index do + self.properties_constructors[index]() + end + end +end + + +---@param on_create fun(checkbox: druid.widget.property_checkbox)|nil +---@return druid.widget.properties_panel +function M:add_checkbox(on_create) + return self:add_inner_widget(property_checkbox, "property_checkbox", "root", on_create) +end + + +---@param on_create fun(slider: druid.widget.property_slider)|nil +---@return druid.widget.properties_panel +function M:add_slider(on_create) + return self:add_inner_widget(property_slider, "property_slider", "root", on_create) +end + + +---@param on_create fun(button: druid.widget.property_button)|nil +---@return druid.widget.properties_panel +function M:add_button(on_create) + return self:add_inner_widget(property_button, "property_button", "root", on_create) +end + + +---@param on_create fun(input: druid.widget.property_input)|nil +---@return druid.widget.properties_panel +function M:add_input(on_create) + return self:add_inner_widget(property_input, "property_input", "root", on_create) +end + + +---@param on_create fun(text: druid.widget.property_text)|nil +function M:add_text(on_create) + return self:add_inner_widget(property_text, "property_text", "root", on_create) +end + + +---@param on_create fun(selector: druid.widget.property_left_right_selector)|nil +function M:add_left_right_selector(on_create) + return self:add_inner_widget(property_left_right_selector, "property_left_right_selector", "root", on_create) +end + + +---@param on_create fun(vector3: druid.widget.property_vector3)|nil +function M:add_vector3(on_create) + return self:add_inner_widget(property_vector3, "property_vector3", "root", on_create) +end + + +---@generic T: druid.widget +---@param widget_class T +---@param template string|nil +---@param nodes table|string|node|nil +---@param on_create fun(widget: T)|nil +---@return druid.widget.properties_panel +function M:add_inner_widget(widget_class, template, nodes, on_create) + table.insert(self.properties_constructors, function() + local widget = self.druid:new_widget(widget_class, template, nodes) + + self:add_property(widget) + if on_create then + on_create(widget) + end + end) + + self.is_dirty = true + + return self +end + + +---@param create_widget_callback fun(): druid.widget +---@return druid.widget.properties_panel +function M:add_widget(create_widget_callback) + table.insert(self.properties_constructors, function() + local widget = create_widget_callback() + self:add_property(widget) + end) + + self.is_dirty = true + + return self +end + + +---@private +function M:create_from_prefab(widget_class, template, nodes) + return self:add_property(self.druid:new_widget(widget_class, template, nodes)) +end + + +---@private +function M:add_property(widget) + gui.set_enabled(widget.root, true) + table.insert(self.properties, widget) + local width = self.layout:get_content_size() + widget.container:set_size(width) + + self.layout:add(widget.root) + + return widget +end + + +function M:remove(widget) + for index = 1, #self.properties do + if self.properties[index] == widget then + self.druid:remove(widget) + self.layout:remove(widget.root) + + -- If prefab used clone nodes we can remove it + if widget:get_nodes() then + gui.delete_node(widget.root) + else + -- Probably we have component placed on scene directly + gui.set_enabled(widget.root, false) + end + + table.remove(self.properties, index) + break + end + end +end + + +function M:set_hidden(is_hidden) + self._is_hidden = is_hidden + local hidden_size = gui.get_size(self:get_node("header")) + + local new_size = self._is_hidden and hidden_size or self.default_size + self.container:set_size(new_size.x, new_size.y, gui.PIVOT_N) + + gui.set_enabled(self.content, not self._is_hidden) +end + + +function M:is_hidden() + return self._is_hidden +end + + +---@param properties_per_page number +function M:set_properties_per_page(properties_per_page) + self.properties_per_page = properties_per_page +end + + +function M:set_page(page) + self.current_page = page + self.is_dirty = true +end + + +return M diff --git a/example/assets/druid.atlas b/example/assets/druid_example.atlas similarity index 100% rename from example/assets/druid.atlas rename to example/assets/druid_example.atlas diff --git a/example/assets/fonts/gui_world/druid_gui_world_text_bold.font b/example/assets/fonts/gui_world/druid_gui_world_text_bold.font new file mode 100644 index 0000000..bac775b --- /dev/null +++ b/example/assets/fonts/gui_world/druid_gui_world_text_bold.font @@ -0,0 +1,10 @@ +font: "/druid/fonts/Roboto-Bold.ttf" +material: "/example/assets/fonts/gui_world/gui-world-font-df.material" +size: 40 +outline_alpha: 1.0 +outline_width: 2.0 +shadow_alpha: 1.0 +shadow_blur: 2 +output_format: TYPE_DISTANCE_FIELD +render_mode: MODE_MULTI_LAYER +characters: "\302\241\302\253\302\273\302\277\303\200\303\202\303\206\303\207\303\210\303\211\303\212\303\213\303\216\303\217\303\224\303\231\303\233\303\234\303\237\303\240\303\241\303\242\303\243\303\244\303\246\303\247\303\250\303\251\303\252\303\253\303\255\303\256\303\257\303\261\303\262\303\263\303\264\303\265\303\266\303\271\303\273\303\274\303\277\305\222\305\223\305\270\320\201\320\220\320\221\320\222\320\223\320\224\320\225\320\226\320\227\320\230\320\231\320\232\320\233\320\234\320\235\320\236\320\237\320\240\320\241\320\242\320\243\320\244\320\245\320\246\320\247\320\250\320\251\320\252\320\253\320\254\320\255\320\256\320\257\320\260\320\261\320\262\320\263\320\264\320\265\320\266\320\267\320\270\320\271\320\272\320\273\320\274\320\275\320\276\320\277\321\200\321\201\321\202\321\203\321\204\321\205\321\206\321\207\321\210\321\211\321\212\321\213\321\214\321\215\321\216\321\217\321\221\342\200\224\343\200\201\343\200\202\343\200\214\343\200\215\357\274\201\357\274\214\357\274\237 !\"#$%&\'()*+,-./0123456789:;<=>?@ABCDEFGHIJKLMNOPQRSTUVWXYZ[]^_`abcdefghijklmnopqrstuvwxyz{|}" diff --git a/example/assets/fonts/gui_world/druid_gui_world_text_regular.font b/example/assets/fonts/gui_world/druid_gui_world_text_regular.font new file mode 100644 index 0000000..367a221 --- /dev/null +++ b/example/assets/fonts/gui_world/druid_gui_world_text_regular.font @@ -0,0 +1,8 @@ +font: "/druid/fonts/Roboto-Regular.ttf" +material: "/example/assets/fonts/gui_world/gui-world-font-df.material" +size: 40 +outline_alpha: 1.0 +outline_width: 2.0 +output_format: TYPE_DISTANCE_FIELD +render_mode: MODE_MULTI_LAYER +characters: "\302\241\302\253\302\273\302\277\303\200\303\202\303\206\303\207\303\210\303\211\303\212\303\213\303\216\303\217\303\224\303\231\303\233\303\234\303\237\303\240\303\241\303\242\303\243\303\244\303\246\303\247\303\250\303\251\303\252\303\253\303\255\303\256\303\257\303\261\303\262\303\263\303\264\303\265\303\266\303\271\303\273\303\274\303\277\305\222\305\223\305\270\320\201\320\220\320\221\320\222\320\223\320\224\320\225\320\226\320\227\320\230\320\231\320\232\320\233\320\234\320\235\320\236\320\237\320\240\320\241\320\242\320\243\320\244\320\245\320\246\320\247\320\250\320\251\320\252\320\253\320\254\320\255\320\256\320\257\320\260\320\261\320\262\320\263\320\264\320\265\320\266\320\267\320\270\320\271\320\272\320\273\320\274\320\275\320\276\320\277\321\200\321\201\321\202\321\203\321\204\321\205\321\206\321\207\321\210\321\211\321\212\321\213\321\214\321\215\321\216\321\217\321\221\342\200\224\343\200\201\343\200\202\343\200\214\343\200\215\357\274\201\357\274\214\357\274\237 !\"#$%&\'()*+,-./0123456789:;<=>?@ABCDEFGHIJKLMNOPQRSTUVWXYZ[]^_`abcdefghijklmnopqrstuvwxyz{|}" diff --git a/example/assets/fonts/gui_world/gui-world-font-df.material b/example/assets/fonts/gui_world/gui-world-font-df.material new file mode 100644 index 0000000..5996a3a --- /dev/null +++ b/example/assets/fonts/gui_world/gui-world-font-df.material @@ -0,0 +1,8 @@ +name: "font" +tags: "tile" +vertex_program: "/example/assets/fonts/gui_world/gui-world-font-df.vp" +fragment_program: "/builtins/fonts/font-df.fp" +vertex_constants { + name: "view_proj" + type: CONSTANT_TYPE_VIEWPROJ +} diff --git a/example/assets/fonts/gui_world/gui-world-font-df.vp b/example/assets/fonts/gui_world/gui-world-font-df.vp new file mode 100644 index 0000000..4cc0a99 --- /dev/null +++ b/example/assets/fonts/gui_world/gui-world-font-df.vp @@ -0,0 +1,34 @@ +#version 140 + +// positions are in world space +in highp vec4 position; +in mediump vec2 texcoord0; +in mediump vec4 sdf_params; +in mediump vec4 face_color; +in mediump vec4 outline_color; +in mediump vec4 shadow_color; +in mediump vec3 layer_mask; + +out mediump vec2 var_texcoord0; +out mediump vec4 var_face_color; +out mediump vec4 var_outline_color; +out mediump vec4 var_shadow_color; +out mediump vec4 var_sdf_params; +out mediump vec4 var_layer_mask; + +uniform vs_uniforms +{ + highp mat4 view_proj; +}; + +void main() +{ + var_texcoord0 = texcoord0; + var_face_color = vec4(face_color.xyz * face_color.w, face_color.w); + var_outline_color = vec4(outline_color.xyz * outline_color.w, outline_color.w); + var_shadow_color = vec4(shadow_color.xyz * shadow_color.w, shadow_color.w); + var_sdf_params = sdf_params; + var_layer_mask.rgb = layer_mask; + var_layer_mask.a = layer_mask.r * layer_mask.g * layer_mask.b; + gl_Position = view_proj * vec4(position.x, position.y, position.z, 1.0); +} diff --git a/example/components/druid_logo/druid_logo.gui b/example/components/druid_logo/druid_logo.gui index 15b549d..7680ab4 100644 --- a/example/components/druid_logo/druid_logo.gui +++ b/example/components/druid_logo/druid_logo.gui @@ -1,4 +1,3 @@ -script: "" fonts { name: "text_regular" font: "/example/assets/fonts/text_regular.font" @@ -8,434 +7,129 @@ textures { texture: "/example/assets/druid_logo.atlas" } textures { - name: "druid" - texture: "/example/assets/druid.atlas" -} -background_color { - x: 0.0 - y: 0.0 - z: 0.0 - w: 0.0 + name: "druid_example" + texture: "/example/assets/druid_example.atlas" } nodes { - position { - x: 0.0 - y: 0.0 - z: 0.0 - w: 1.0 - } - rotation { - x: 0.0 - y: 0.0 - z: 0.0 - w: 1.0 - } - scale { - x: 1.0 - y: 1.0 - z: 1.0 - w: 1.0 - } size { x: 400.0 y: 170.0 - z: 0.0 - w: 1.0 } color { x: 0.129 y: 0.141 z: 0.157 - w: 1.0 } type: TYPE_BOX - blend_mode: BLEND_MODE_ALPHA - texture: "druid/pixel" + texture: "druid_example/pixel" id: "root" - xanchor: XANCHOR_NONE - yanchor: YANCHOR_NONE - pivot: PIVOT_CENTER - adjust_mode: ADJUST_MODE_FIT layer: "druid" inherit_alpha: true - slice9 { - x: 0.0 - y: 0.0 - z: 0.0 - w: 0.0 - } clipping_mode: CLIPPING_MODE_STENCIL - clipping_visible: true - clipping_inverted: false - alpha: 1.0 - template_node_child: false - size_mode: SIZE_MODE_MANUAL - custom_type: 0 - enabled: true - visible: true - material: "" } nodes { position { x: 200.0 - y: 0.0 - z: 0.0 - w: 1.0 - } - rotation { - x: 0.0 - y: 0.0 - z: 0.0 - w: 1.0 - } - scale { - x: 1.0 - y: 1.0 - z: 1.0 - w: 1.0 } size { x: 16.0 y: 16.0 - z: 0.0 - w: 1.0 - } - color { - x: 1.0 - y: 1.0 - z: 1.0 - w: 1.0 } type: TYPE_BOX - blend_mode: BLEND_MODE_ALPHA - texture: "" id: "E_Anchor" - xanchor: XANCHOR_NONE - yanchor: YANCHOR_NONE pivot: PIVOT_E adjust_mode: ADJUST_MODE_STRETCH parent: "root" - layer: "" inherit_alpha: true - slice9 { - x: 0.0 - y: 0.0 - z: 0.0 - w: 0.0 - } - clipping_mode: CLIPPING_MODE_NONE - clipping_visible: true - clipping_inverted: false - alpha: 1.0 - template_node_child: false - size_mode: SIZE_MODE_MANUAL - custom_type: 0 - enabled: true visible: false - material: "" } nodes { position { x: 10.0 - y: 0.0 - z: 0.0 - w: 1.0 - } - rotation { - x: 0.0 - y: 0.0 - z: 0.0 - w: 1.0 - } - scale { - x: 1.0 - y: 1.0 - z: 1.0 - w: 1.0 - } - size { - x: 200.0 - y: 100.0 - z: 0.0 - w: 1.0 - } - color { - x: 1.0 - y: 1.0 - z: 1.0 - w: 1.0 } type: TYPE_BOX - blend_mode: BLEND_MODE_ALPHA texture: "druid_logo/icon_druid" id: "icon_druid_right" - xanchor: XANCHOR_NONE - yanchor: YANCHOR_NONE - pivot: PIVOT_CENTER - adjust_mode: ADJUST_MODE_FIT parent: "E_Anchor" layer: "druid_logo" inherit_alpha: true - slice9 { - x: 0.0 - y: 0.0 - z: 0.0 - w: 0.0 - } - clipping_mode: CLIPPING_MODE_NONE - clipping_visible: true - clipping_inverted: false alpha: 0.5 - template_node_child: false size_mode: SIZE_MODE_AUTO - custom_type: 0 - enabled: true - visible: true - material: "" } nodes { position { x: -200.0 - y: 0.0 - z: 0.0 - w: 1.0 - } - rotation { - x: 0.0 - y: 0.0 - z: 0.0 - w: 1.0 - } - scale { - x: 1.0 - y: 1.0 - z: 1.0 - w: 1.0 } size { x: 16.0 y: 16.0 - z: 0.0 - w: 1.0 - } - color { - x: 1.0 - y: 1.0 - z: 1.0 - w: 1.0 } type: TYPE_BOX - blend_mode: BLEND_MODE_ALPHA - texture: "" id: "W_Anchor" - xanchor: XANCHOR_NONE - yanchor: YANCHOR_NONE pivot: PIVOT_W adjust_mode: ADJUST_MODE_STRETCH parent: "root" - layer: "" inherit_alpha: true - slice9 { - x: 0.0 - y: 0.0 - z: 0.0 - w: 0.0 - } - clipping_mode: CLIPPING_MODE_NONE - clipping_visible: true - clipping_inverted: false - alpha: 1.0 - template_node_child: false - size_mode: SIZE_MODE_MANUAL - custom_type: 0 - enabled: true visible: false - material: "" } nodes { position { x: -10.0 - y: 0.0 - z: 0.0 - w: 1.0 - } - rotation { - x: 0.0 - y: 0.0 - z: 0.0 - w: 1.0 - } - scale { - x: 1.0 - y: 1.0 - z: 1.0 - w: 1.0 - } - size { - x: 200.0 - y: 100.0 - z: 0.0 - w: 1.0 - } - color { - x: 1.0 - y: 1.0 - z: 1.0 - w: 1.0 } type: TYPE_BOX - blend_mode: BLEND_MODE_ALPHA texture: "druid_logo/icon_druid" id: "icon_druid_left" - xanchor: XANCHOR_NONE - yanchor: YANCHOR_NONE - pivot: PIVOT_CENTER - adjust_mode: ADJUST_MODE_FIT parent: "W_Anchor" layer: "druid_logo" inherit_alpha: true - slice9 { - x: 0.0 - y: 0.0 - z: 0.0 - w: 0.0 - } - clipping_mode: CLIPPING_MODE_NONE - clipping_visible: true - clipping_inverted: false alpha: 0.5 - template_node_child: false size_mode: SIZE_MODE_AUTO - custom_type: 0 - enabled: true - visible: true - material: "" } nodes { - position { - x: 0.0 - y: 0.0 - z: 0.0 - w: 1.0 - } - rotation { - x: 0.0 - y: 0.0 - z: 0.0 - w: 1.0 - } - scale { - x: 1.0 - y: 1.0 - z: 1.0 - w: 1.0 - } - size { - x: 200.0 - y: 100.0 - z: 0.0 - w: 1.0 - } - color { - x: 1.0 - y: 1.0 - z: 1.0 - w: 1.0 - } type: TYPE_BOX - blend_mode: BLEND_MODE_ALPHA texture: "druid_logo/logo_druid" id: "icon_logo" - xanchor: XANCHOR_NONE - yanchor: YANCHOR_NONE - pivot: PIVOT_CENTER - adjust_mode: ADJUST_MODE_FIT parent: "root" layer: "druid_logo" inherit_alpha: true - slice9 { - x: 0.0 - y: 0.0 - z: 0.0 - w: 0.0 - } - clipping_mode: CLIPPING_MODE_NONE - clipping_visible: true - clipping_inverted: false - alpha: 1.0 - template_node_child: false size_mode: SIZE_MODE_AUTO - custom_type: 0 - enabled: true - visible: true - material: "" } nodes { position { - x: 0.0 y: -50.0 - z: 0.0 - w: 1.0 - } - rotation { - x: 0.0 - y: 0.0 - z: 0.0 - w: 1.0 } scale { x: 0.6 y: 0.6 - z: 1.0 - w: 1.0 } size { x: 400.0 y: 50.0 - z: 0.0 - w: 1.0 } color { x: 0.463 y: 0.475 z: 0.49 - w: 1.0 } type: TYPE_TEXT - blend_mode: BLEND_MODE_ALPHA text: "Defold UI Framework" font: "text_regular" id: "text_description" - xanchor: XANCHOR_NONE - yanchor: YANCHOR_NONE - pivot: PIVOT_CENTER outline { x: 1.0 y: 1.0 z: 1.0 - w: 1.0 } shadow { x: 1.0 y: 1.0 z: 1.0 - w: 1.0 } - adjust_mode: ADJUST_MODE_FIT - line_break: false parent: "root" layer: "text_regular" inherit_alpha: true - alpha: 1.0 outline_alpha: 0.0 shadow_alpha: 0.0 - template_node_child: false - text_leading: 1.0 - text_tracking: 0.0 - custom_type: 0 - enabled: true - visible: true - material: "" } layers { name: "druid" @@ -448,4 +142,3 @@ layers { } material: "/builtins/materials/gui.material" adjust_reference: ADJUST_REFERENCE_PARENT -max_nodes: 512 diff --git a/example/components/druid_logo/druid_logo.lua b/example/components/druid_logo/druid_logo.lua index 4784a80..5f70ba0 100644 --- a/example/components/druid_logo/druid_logo.lua +++ b/example/components/druid_logo/druid_logo.lua @@ -2,12 +2,11 @@ local panthera = require("panthera.panthera") local component = require("druid.component") local druid_logo_panthera = require("example.components.druid_logo.druid_logo_panthera") -local container = require("example.components.container.container") ----@class druid_logo: druid.base_component +---@class examples.druid_logo: druid.component ---@field root druid.container ---@field text_description druid.text ----@field druid druid_instance +---@field druid druid.instance local DruidLogo = component.create("druid_logo") @@ -16,7 +15,7 @@ local DruidLogo = component.create("druid_logo") function DruidLogo:init(template, nodes) self.druid = self:get_druid(template, nodes) - self.root = self.druid:new(container, "root") --[[@as druid.container]] + self.root = self.druid:new_container("root") --[[@as druid.container]] self.root:add_container("E_Anchor") self.root:add_container("W_Anchor") diff --git a/example/components/example_scene/example_scene.lua b/example/components/example_scene/example_scene.lua index a237456..f8751b3 100644 --- a/example/components/example_scene/example_scene.lua +++ b/example/components/example_scene/example_scene.lua @@ -1,11 +1,10 @@ local component = require("druid.component") -local container = require("example.components.container.container") ----@class example_scene: druid.base_component +---@class examples.example_scene: druid.component ---@field root druid.container ---@field text_debug_info druid.text ---@field text_gui_path druid.text ----@field druid druid_instance +---@field druid druid.instance local M = component.create("example_scene") @@ -14,7 +13,7 @@ local M = component.create("example_scene") function M:init(template, nodes) self.druid = self:get_druid(template, nodes) - self.root = self.druid:new(container, "root") --[[@as druid.container]] + self.root = self.druid:new_container("root") --[[@as druid.container]] self.root:add_container("text_debug_info") self.root:add_container("text_gui_path") @@ -25,7 +24,7 @@ end ---@param info string function M:set_debug_info(info) - self.text_debug_info:set_to(info) + self.text_debug_info:set_text(info) end @@ -35,7 +34,7 @@ function M:set_gui_path(path) -- We need add "/" before path and replace .lua to .gui path = "/" .. path:gsub(".lua", ".gui") - self.text_gui_path:set_to(path) + self.text_gui_path:set_text(path) end diff --git a/example/components/examples_list_view/examples_list_view.gui b/example/components/examples_list_view/examples_list_view.gui index 750684c..af607e7 100644 --- a/example/components/examples_list_view/examples_list_view.gui +++ b/example/components/examples_list_view/examples_list_view.gui @@ -1,605 +1,140 @@ -script: "" fonts { name: "text_regular" font: "/example/assets/fonts/text_regular.font" } textures { - name: "druid" - texture: "/example/assets/druid.atlas" -} -background_color { - x: 0.0 - y: 0.0 - z: 0.0 - w: 0.0 + name: "druid_example" + texture: "/example/assets/druid_example.atlas" } nodes { - position { - x: 0.0 - y: 0.0 - z: 0.0 - w: 1.0 - } - rotation { - x: 0.0 - y: 0.0 - z: 0.0 - w: 1.0 - } - scale { - x: 1.0 - y: 1.0 - z: 1.0 - w: 1.0 - } size { x: 400.0 y: 910.0 - z: 0.0 - w: 1.0 } color { x: 0.173 y: 0.184 z: 0.204 - w: 1.0 } type: TYPE_BOX - blend_mode: BLEND_MODE_ALPHA - texture: "druid/pixel" + texture: "druid_example/pixel" id: "root" - xanchor: XANCHOR_NONE - yanchor: YANCHOR_NONE - pivot: PIVOT_CENTER adjust_mode: ADJUST_MODE_STRETCH layer: "druid" inherit_alpha: true - slice9 { - x: 0.0 - y: 0.0 - z: 0.0 - w: 0.0 - } - clipping_mode: CLIPPING_MODE_NONE - clipping_visible: true - clipping_inverted: false - alpha: 1.0 - template_node_child: false - size_mode: SIZE_MODE_MANUAL - custom_type: 0 - enabled: true - visible: true - material: "" } nodes { position { x: -190.0 y: 445.0 - z: 0.0 - w: 1.0 - } - rotation { - x: 0.0 - y: 0.0 - z: 0.0 - w: 1.0 } scale { x: 0.9 y: 0.9 - z: 1.0 - w: 1.0 } size { x: 250.0 y: 60.0 - z: 0.0 - w: 1.0 } color { x: 0.463 y: 0.475 z: 0.49 - w: 1.0 } type: TYPE_TEXT - blend_mode: BLEND_MODE_ALPHA text: "Examples" font: "text_regular" id: "text_header" - xanchor: XANCHOR_NONE - yanchor: YANCHOR_NONE pivot: PIVOT_NW outline { x: 1.0 y: 1.0 z: 1.0 - w: 1.0 } shadow { x: 1.0 y: 1.0 z: 1.0 - w: 1.0 } - adjust_mode: ADJUST_MODE_FIT - line_break: false parent: "root" layer: "text_regular" inherit_alpha: true - alpha: 1.0 outline_alpha: 0.0 shadow_alpha: 0.0 - template_node_child: false - text_leading: 1.0 - text_tracking: 0.0 - custom_type: 0 - enabled: true - visible: true - material: "" } nodes { position { x: -200.0 y: 395.0 - z: 0.0 - w: 1.0 - } - rotation { - x: 0.0 - y: 0.0 - z: 0.0 - w: 1.0 - } - scale { - x: 1.0 - y: 1.0 - z: 1.0 - w: 1.0 } size { x: 400.0 y: 850.0 - z: 0.0 - w: 1.0 - } - color { - x: 1.0 - y: 1.0 - z: 1.0 - w: 1.0 } type: TYPE_BOX - blend_mode: BLEND_MODE_ALPHA - texture: "druid/empty" + texture: "druid_example/empty" id: "scroll_view" - xanchor: XANCHOR_NONE - yanchor: YANCHOR_NONE pivot: PIVOT_NW adjust_mode: ADJUST_MODE_STRETCH parent: "root" layer: "druid" inherit_alpha: true - slice9 { - x: 0.0 - y: 0.0 - z: 0.0 - w: 0.0 - } clipping_mode: CLIPPING_MODE_STENCIL - clipping_visible: true - clipping_inverted: false - alpha: 1.0 - template_node_child: false - size_mode: SIZE_MODE_MANUAL - custom_type: 0 - enabled: true - visible: true - material: "" } nodes { - position { - x: 0.0 - y: 0.0 - z: 0.0 - w: 1.0 - } - rotation { - x: 0.0 - y: 0.0 - z: 0.0 - w: 1.0 - } - scale { - x: 1.0 - y: 1.0 - z: 1.0 - w: 1.0 - } size { x: 400.0 y: 850.0 - z: 0.0 - w: 1.0 - } - color { - x: 1.0 - y: 1.0 - z: 1.0 - w: 1.0 } type: TYPE_BOX - blend_mode: BLEND_MODE_ALPHA - texture: "druid/empty" + texture: "druid_example/empty" id: "scroll_content" - xanchor: XANCHOR_NONE - yanchor: YANCHOR_NONE pivot: PIVOT_NW adjust_mode: ADJUST_MODE_STRETCH parent: "scroll_view" layer: "druid" inherit_alpha: true - slice9 { - x: 0.0 - y: 0.0 - z: 0.0 - w: 0.0 - } - clipping_mode: CLIPPING_MODE_NONE - clipping_visible: true - clipping_inverted: false - alpha: 1.0 - template_node_child: false - size_mode: SIZE_MODE_MANUAL - custom_type: 0 - enabled: true visible: false - material: "" } nodes { position { - x: 0.0 y: -52.0 - z: 0.0 - w: 1.0 - } - rotation { - x: 0.0 - y: 0.0 - z: 0.0 - w: 1.0 - } - scale { - x: 1.0 - y: 1.0 - z: 1.0 - w: 1.0 - } - size { - x: 200.0 - y: 100.0 - z: 0.0 - w: 1.0 - } - color { - x: 1.0 - y: 1.0 - z: 1.0 - w: 1.0 } type: TYPE_TEMPLATE id: "examples_list_view_item" parent: "scroll_content" - layer: "" inherit_alpha: true - alpha: 1.0 template: "/example/components/examples_list_view/examples_list_view_item.gui" - template_node_child: false - custom_type: 0 - enabled: true } nodes { - position { - x: 0.0 - y: 0.0 - z: 0.0 - w: 1.0 - } - rotation { - x: 0.0 - y: 0.0 - z: 0.0 - w: 1.0 - } - scale { - x: 1.0 - y: 1.0 - z: 1.0 - w: 1.0 - } - size { - x: 400.0 - y: 50.0 - z: 0.0 - w: 1.0 - } - color { - x: 0.173 - y: 0.184 - z: 0.204 - w: 1.0 - } type: TYPE_BOX - blend_mode: BLEND_MODE_ALPHA - texture: "druid/empty" id: "examples_list_view_item/root" - xanchor: XANCHOR_NONE - yanchor: YANCHOR_NONE - pivot: PIVOT_W - adjust_mode: ADJUST_MODE_STRETCH parent: "examples_list_view_item" - layer: "druid" - inherit_alpha: true - slice9 { - x: 0.0 - y: 0.0 - z: 0.0 - w: 0.0 - } - clipping_mode: CLIPPING_MODE_NONE - clipping_visible: true - clipping_inverted: false - alpha: 1.0 template_node_child: true - size_mode: SIZE_MODE_MANUAL - custom_type: 0 - enabled: true - visible: false - material: "" } nodes { - position { - x: 0.0 - y: 0.0 - z: 0.0 - w: 1.0 - } - rotation { - x: 0.0 - y: 0.0 - z: 0.0 - w: 1.0 - } - scale { - x: 1.0 - y: 1.0 - z: 1.0 - w: 1.0 - } - size { - x: 400.0 - y: 50.0 - z: 0.0 - w: 1.0 - } - color { - x: 0.31 - y: 0.318 - z: 0.322 - w: 1.0 - } type: TYPE_BOX - blend_mode: BLEND_MODE_ALPHA - texture: "druid/pixel" id: "examples_list_view_item/panel_highlight" - xanchor: XANCHOR_NONE - yanchor: YANCHOR_NONE - pivot: PIVOT_W - adjust_mode: ADJUST_MODE_FIT parent: "examples_list_view_item/root" - layer: "druid" - inherit_alpha: true - slice9 { - x: 0.0 - y: 0.0 - z: 0.0 - w: 0.0 - } - clipping_mode: CLIPPING_MODE_NONE - clipping_visible: true - clipping_inverted: false - alpha: 0.0 template_node_child: true - size_mode: SIZE_MODE_MANUAL - custom_type: 0 - enabled: true - visible: true - material: "" } nodes { - position { - x: 0.0 - y: 0.0 - z: 0.0 - w: 1.0 - } - rotation { - x: 0.0 - y: 0.0 - z: 0.0 - w: 1.0 - } - scale { - x: 1.0 - y: 1.0 - z: 1.0 - w: 1.0 - } - size { - x: 4.0 - y: 50.0 - z: 0.0 - w: 1.0 - } - color { - x: 0.894 - y: 0.506 - z: 0.333 - w: 1.0 - } type: TYPE_BOX - blend_mode: BLEND_MODE_ALPHA - texture: "druid/pixel" id: "examples_list_view_item/panel_selected" - xanchor: XANCHOR_NONE - yanchor: YANCHOR_NONE - pivot: PIVOT_W - adjust_mode: ADJUST_MODE_FIT parent: "examples_list_view_item/root" - layer: "druid" - inherit_alpha: true - slice9 { - x: 0.0 - y: 0.0 - z: 0.0 - w: 0.0 - } - clipping_mode: CLIPPING_MODE_NONE - clipping_visible: true - clipping_inverted: false - alpha: 1.0 template_node_child: true - size_mode: SIZE_MODE_MANUAL - custom_type: 0 - enabled: false - visible: true - material: "" } nodes { - position { - x: 18.0 - y: 0.0 - z: 0.0 - w: 1.0 - } - rotation { - x: 0.0 - y: 0.0 - z: 0.0 - w: 1.0 - } - scale { - x: 0.6 - y: 0.6 - z: 1.0 - w: 1.0 - } - size { - x: 200.0 - y: 100.0 - z: 0.0 - w: 1.0 - } - color { - x: 0.851 - y: 0.851 - z: 0.851 - w: 1.0 - } type: TYPE_BOX - blend_mode: BLEND_MODE_ALPHA - texture: "druid/icon_arrow" id: "examples_list_view_item/icon" - xanchor: XANCHOR_NONE - yanchor: YANCHOR_NONE - pivot: PIVOT_CENTER - adjust_mode: ADJUST_MODE_FIT parent: "examples_list_view_item/root" - layer: "druid" - inherit_alpha: true - slice9 { - x: 0.0 - y: 0.0 - z: 0.0 - w: 0.0 - } - clipping_mode: CLIPPING_MODE_NONE - clipping_visible: true - clipping_inverted: false - alpha: 1.0 template_node_child: true - size_mode: SIZE_MODE_AUTO - custom_type: 0 - enabled: false - visible: true - material: "" } nodes { - position { - x: 36.0 - y: 0.0 - z: 0.0 - w: 1.0 - } - rotation { - x: 0.0 - y: 0.0 - z: 0.0 - w: 1.0 - } - scale { - x: 0.7 - y: 0.7 - z: 1.0 - w: 1.0 - } - size { - x: 500.0 - y: 60.0 - z: 0.0 - w: 1.0 - } - color { - x: 0.463 - y: 0.475 - z: 0.49 - w: 1.0 - } type: TYPE_TEXT - blend_mode: BLEND_MODE_ALPHA - text: "Basic" - font: "text_bold" id: "examples_list_view_item/text" - xanchor: XANCHOR_NONE - yanchor: YANCHOR_NONE - pivot: PIVOT_W - outline { - x: 0.941 - y: 0.984 - z: 1.0 - w: 1.0 - } - shadow { - x: 1.0 - y: 1.0 - z: 1.0 - w: 1.0 - } - adjust_mode: ADJUST_MODE_FIT - line_break: false parent: "examples_list_view_item/root" - layer: "text_bold" - inherit_alpha: true - alpha: 1.0 - outline_alpha: 0.0 - shadow_alpha: 0.0 template_node_child: true - text_leading: 1.0 - text_tracking: 0.0 - custom_type: 0 - enabled: true - visible: true - material: "" } layers { name: "druid" @@ -609,4 +144,3 @@ layers { } material: "/builtins/materials/gui.material" adjust_reference: ADJUST_REFERENCE_PARENT -max_nodes: 512 diff --git a/example/components/examples_list_view/examples_list_view.lua b/example/components/examples_list_view/examples_list_view.lua index 7f66b4d..8c519af 100644 --- a/example/components/examples_list_view/examples_list_view.lua +++ b/example/components/examples_list_view/examples_list_view.lua @@ -1,16 +1,14 @@ -local event = require("druid.event") +local event = require("event.event") local component = require("druid.component") -local container = require("example.components.container.container") -local lang_text = require("druid.extended.lang_text") local storage = require("saver.storage") local examples_list_view_item = require("example.components.examples_list_view.examples_list_view_item") ----@class examples_list_view: druid.base_component +---@class examples_list_view: druid.component ---@field root druid.container ----@field druid druid_instance +---@field druid druid.instance ---@field scroll druid.scroll ----@field grid druid.static_grid +---@field grid druid.grid local M = component.create("examples_list_view") @@ -19,17 +17,17 @@ local M = component.create("examples_list_view") function M:init(template, nodes) self.druid = self:get_druid(template, nodes) - self.root = self.druid:new(container, "root") --[[@as druid.container]] + self.root = self.druid:new_container("root") --[[@as druid.container]] self.root:add_container("text_header") - self.druid:new(lang_text, "text_header", "ui_examples") + self.druid:new_lang_text("text_header", "ui_examples") self.druid:new(examples_list_view_item, "examples_list_view_item") self.prefab = self:get_node("examples_list_view_item/root") gui.set_enabled(self.prefab, false) self.scroll = self.druid:new_scroll("scroll_view", "scroll_content") - self.grid = self.druid:new_static_grid("scroll_content", self.prefab, 1) + self.grid = self.druid:new_grid("scroll_content", self.prefab, 1) self.scroll:bind_grid(self.grid) self.root:add_container("scroll_view", nil, function(_, size) @@ -39,15 +37,19 @@ function M:init(template, nodes) self.selected_example = nil self.examples = {} - self.on_debug_info = event() - self.on_set_information = event() - self.add_log_text = event() + self.on_debug_info = event.create() + self.on_set_information = event.create() + self.add_log_text = event.create() timer.delay(0.1, true, function() self:update_debug_info() end) end +---@class example_instance: druid.widget +---@field on_example_created fun(self: example_instance, output_list: output_list)? +---@field properties_control fun(self: example_instance, properties_panel: properties_panel)? +---@field get_debug_info fun(self: example_instance):string? ---@param examples druid.examples ---@param druid_example druid.example @The main GUI component @@ -88,41 +90,17 @@ function M:add_example(examples, druid_example) self.selected_example = nil end - local root = gui.get_node(example_data.root) - gui.set_enabled(root, true) - local instance = druid_example.druid:new(example_data.component_class, example_data.template) + -- This one helps only to help with a select the same example + -- Cause the nodes can't be returned to initial state SO fast, need a little brake here + timer.delay(0, false, function() + self:on_example_click(druid_example, example_data, item) - self.selected_example = { - data = example_data, - list_item = item, - instance = instance, - root = root - } - item:set_selected(true) - - druid_example.output_list:clear() - if example_data.on_create then - example_data.on_create(instance, druid_example.output_list) - end - - if example_data.information_text_id then - self.on_set_information(example_data.information_text_id) - else - self.on_set_information("") - end - - druid_example.example_scene:set_gui_path(example_data.code_url) - - druid_example.properties_panel:clear() - if example_data.properties_control then - example_data.properties_control(instance, druid_example.properties_panel) - end - - storage.set("last_selected_example", example_data.name_id) - if html5 then - local command = string.format('window.history.replaceState(null, null, "?example=%s")', example_data.name_id) - html5.run(command) - end + storage.set("last_selected_example", example_data.name_id) + if html5 then + local command = string.format('window.history.replaceState(null, null, "?example=%s")', example_data.name_id) + html5.run(command) + end + end) end) self.grid:add(item.root.node) @@ -134,6 +112,55 @@ function M:add_example(examples, druid_example) end +---@param druid_example druid.example +---@param example_data druid.example.data +---@param item examples_list_view_item +function M:on_example_click(druid_example, example_data, item) + local root = gui.get_node(example_data.root) + gui.set_enabled(root, true) + + local instance + if example_data.widget_class then + instance = druid_example.druid:new_widget(example_data.widget_class, example_data.template) + elseif example_data.component_class then -- Keep for backward compatibility + instance = druid_example.druid:new(example_data.component_class, example_data.template) + end + ---@cast instance example_instance + + self.selected_example = { + data = example_data, + list_item = item, + instance = instance, + root = root + } + item:set_selected(true) + + druid_example.output_list:clear() + if instance.on_example_created then + instance:on_example_created(druid_example.output_list) + elseif example_data.on_create then + example_data.on_create(instance, druid_example.output_list) + end + + if example_data.information_text_id then + self.on_set_information(example_data.information_text_id) + else + self.on_set_information("") + end + + druid_example.example_scene:set_gui_path(example_data.code_url) + + druid_example.properties_panel:clear() + + -- First we want to chec + if instance.properties_control then + instance:properties_control(druid_example.properties_panel) + elseif example_data.properties_control then + example_data.properties_control(instance, druid_example.properties_panel) + end +end + + ---@param name_id string ---@return boolean @true if example was found and selected function M:select_example_by_name_id(name_id) @@ -163,6 +190,13 @@ function M:update_debug_info() return end + local instance = self.selected_example.instance + if instance.get_debug_info then + local info = instance:get_debug_info() + self.on_debug_info:trigger(info) + return + end + local data = self.selected_example.data if data.get_debug_info then local info = data.get_debug_info(self.selected_example.instance) diff --git a/example/components/examples_list_view/examples_list_view_item.gui b/example/components/examples_list_view/examples_list_view_item.gui index 2cef928..b562ad0 100644 --- a/example/components/examples_list_view/examples_list_view_item.gui +++ b/example/components/examples_list_view/examples_list_view_item.gui @@ -1,319 +1,127 @@ -script: "" fonts { name: "text_bold" font: "/example/assets/fonts/text_bold.font" } textures { - name: "druid" - texture: "/example/assets/druid.atlas" -} -background_color { - x: 0.0 - y: 0.0 - z: 0.0 - w: 0.0 + name: "druid_example" + texture: "/example/assets/druid_example.atlas" } nodes { - position { - x: 0.0 - y: 0.0 - z: 0.0 - w: 1.0 - } - rotation { - x: 0.0 - y: 0.0 - z: 0.0 - w: 1.0 - } - scale { - x: 1.0 - y: 1.0 - z: 1.0 - w: 1.0 - } size { x: 400.0 y: 50.0 - z: 0.0 - w: 1.0 } color { x: 0.173 y: 0.184 z: 0.204 - w: 1.0 } type: TYPE_BOX - blend_mode: BLEND_MODE_ALPHA - texture: "druid/empty" + texture: "druid_example/empty" id: "root" - xanchor: XANCHOR_NONE - yanchor: YANCHOR_NONE pivot: PIVOT_W adjust_mode: ADJUST_MODE_STRETCH layer: "druid" inherit_alpha: true - slice9 { - x: 0.0 - y: 0.0 - z: 0.0 - w: 0.0 - } - clipping_mode: CLIPPING_MODE_NONE - clipping_visible: true - clipping_inverted: false - alpha: 1.0 - template_node_child: false - size_mode: SIZE_MODE_MANUAL - custom_type: 0 - enabled: true visible: false - material: "" } nodes { - position { - x: 0.0 - y: 0.0 - z: 0.0 - w: 1.0 - } - rotation { - x: 0.0 - y: 0.0 - z: 0.0 - w: 1.0 - } - scale { - x: 1.0 - y: 1.0 - z: 1.0 - w: 1.0 - } size { x: 400.0 y: 50.0 - z: 0.0 - w: 1.0 } color { x: 0.31 y: 0.318 z: 0.322 - w: 1.0 } type: TYPE_BOX - blend_mode: BLEND_MODE_ALPHA - texture: "druid/pixel" + texture: "druid_example/pixel" id: "panel_highlight" - xanchor: XANCHOR_NONE - yanchor: YANCHOR_NONE pivot: PIVOT_W - adjust_mode: ADJUST_MODE_FIT parent: "root" layer: "druid" inherit_alpha: true - slice9 { - x: 0.0 - y: 0.0 - z: 0.0 - w: 0.0 - } - clipping_mode: CLIPPING_MODE_NONE - clipping_visible: true - clipping_inverted: false alpha: 0.0 - template_node_child: false - size_mode: SIZE_MODE_MANUAL - custom_type: 0 - enabled: true - visible: true - material: "" } nodes { - position { - x: 0.0 - y: 0.0 - z: 0.0 - w: 1.0 - } - rotation { - x: 0.0 - y: 0.0 - z: 0.0 - w: 1.0 - } - scale { - x: 1.0 - y: 1.0 - z: 1.0 - w: 1.0 - } size { x: 4.0 y: 50.0 - z: 0.0 - w: 1.0 } color { x: 0.894 y: 0.506 z: 0.333 - w: 1.0 } type: TYPE_BOX - blend_mode: BLEND_MODE_ALPHA - texture: "druid/pixel" + texture: "druid_example/pixel" id: "panel_selected" - xanchor: XANCHOR_NONE - yanchor: YANCHOR_NONE pivot: PIVOT_W - adjust_mode: ADJUST_MODE_FIT parent: "root" layer: "druid" inherit_alpha: true - slice9 { - x: 0.0 - y: 0.0 - z: 0.0 - w: 0.0 - } - clipping_mode: CLIPPING_MODE_NONE - clipping_visible: true - clipping_inverted: false - alpha: 1.0 - template_node_child: false - size_mode: SIZE_MODE_MANUAL - custom_type: 0 enabled: false - visible: true - material: "" } nodes { position { x: 18.0 - y: 0.0 - z: 0.0 - w: 1.0 - } - rotation { - x: 0.0 - y: 0.0 - z: 0.0 - w: 1.0 } scale { x: 0.6 y: 0.6 - z: 1.0 - w: 1.0 - } - size { - x: 200.0 - y: 100.0 - z: 0.0 - w: 1.0 } color { x: 0.851 y: 0.851 z: 0.851 - w: 1.0 } type: TYPE_BOX - blend_mode: BLEND_MODE_ALPHA - texture: "druid/icon_arrow" + texture: "druid_example/icon_arrow" id: "icon" - xanchor: XANCHOR_NONE - yanchor: YANCHOR_NONE - pivot: PIVOT_CENTER - adjust_mode: ADJUST_MODE_FIT parent: "root" layer: "druid" inherit_alpha: true - slice9 { - x: 0.0 - y: 0.0 - z: 0.0 - w: 0.0 - } - clipping_mode: CLIPPING_MODE_NONE - clipping_visible: true - clipping_inverted: false - alpha: 1.0 - template_node_child: false size_mode: SIZE_MODE_AUTO - custom_type: 0 enabled: false - visible: true - material: "" } nodes { position { x: 36.0 - y: 0.0 - z: 0.0 - w: 1.0 - } - rotation { - x: 0.0 - y: 0.0 - z: 0.0 - w: 1.0 } scale { x: 0.7 y: 0.7 - z: 1.0 - w: 1.0 } size { x: 500.0 y: 60.0 - z: 0.0 - w: 1.0 } color { x: 0.463 y: 0.475 z: 0.49 - w: 1.0 } type: TYPE_TEXT - blend_mode: BLEND_MODE_ALPHA text: "Basic" font: "text_bold" id: "text" - xanchor: XANCHOR_NONE - yanchor: YANCHOR_NONE pivot: PIVOT_W outline { x: 0.941 y: 0.984 z: 1.0 - w: 1.0 } shadow { x: 1.0 y: 1.0 z: 1.0 - w: 1.0 } - adjust_mode: ADJUST_MODE_FIT - line_break: false parent: "root" layer: "text_bold" inherit_alpha: true - alpha: 1.0 outline_alpha: 0.0 shadow_alpha: 0.0 - template_node_child: false - text_leading: 1.0 - text_tracking: 0.0 - custom_type: 0 - enabled: true - visible: true - material: "" } layers { name: "druid" @@ -323,4 +131,3 @@ layers { } material: "/builtins/materials/gui.material" adjust_reference: ADJUST_REFERENCE_PARENT -max_nodes: 512 diff --git a/example/components/examples_list_view/examples_list_view_item.lua b/example/components/examples_list_view/examples_list_view_item.lua index 4793fb5..26427b5 100644 --- a/example/components/examples_list_view/examples_list_view_item.lua +++ b/example/components/examples_list_view/examples_list_view_item.lua @@ -1,12 +1,10 @@ local component = require("druid.component") -local container = require("example.components.container.container") -local lang_text = require("druid.extended.lang_text") ----@class examples_list_view_item: druid.base_component +---@class examples_list_view_item: druid.component ---@field root druid.container ---@field text druid.lang_text ----@field druid druid_instance ----@field on_click druid.event +---@field druid druid.instance +---@field on_click event local M = component.create("examples_list_view_item") ---@param template string @@ -14,8 +12,8 @@ local M = component.create("examples_list_view_item") function M:init(template, nodes) self.druid = self:get_druid(template, nodes) - self.root = self.druid:new(container, "root") --[[@as druid.container]] - self.text = self.druid:new(lang_text, "text") --[[ @as druid.lang_text]] + self.root = self.druid:new_container("root") --[[@as druid.container]] + self.text = self.druid:new_lang_text("text") --[[ @as druid.lang_text]] self.icon = self:get_node("icon") self.selected = self:get_node("panel_selected") self.highlight = self:get_node("panel_highlight") diff --git a/example/components/output_list/output_list.gui b/example/components/output_list/output_list.gui index 5063895..19456e3 100644 --- a/example/components/output_list/output_list.gui +++ b/example/components/output_list/output_list.gui @@ -7,8 +7,8 @@ fonts { font: "/example/assets/fonts/text_bold.font" } textures { - name: "druid" - texture: "/example/assets/druid.atlas" + name: "druid_example" + texture: "/example/assets/druid_example.atlas" } nodes { size { @@ -21,7 +21,7 @@ nodes { z: 0.204 } type: TYPE_BOX - texture: "druid/pixel" + texture: "druid_example/pixel" id: "root" adjust_mode: ADJUST_MODE_STRETCH layer: "druid" @@ -76,7 +76,7 @@ nodes { y: 190.0 } type: TYPE_BOX - texture: "druid/empty" + texture: "druid_example/empty" id: "scroll_view" pivot: PIVOT_NW adjust_mode: ADJUST_MODE_STRETCH @@ -91,7 +91,7 @@ nodes { y: 190.0 } type: TYPE_BOX - texture: "druid/empty" + texture: "druid_example/empty" id: "scroll_content" pivot: PIVOT_NW adjust_mode: ADJUST_MODE_STRETCH @@ -150,7 +150,7 @@ nodes { z: 0.157 } type: TYPE_BOX - texture: "druid/pixel" + texture: "druid_example/pixel" id: "separator" pivot: PIVOT_N parent: "root" diff --git a/example/components/output_list/output_list.lua b/example/components/output_list/output_list.lua index 3dabc2a..13f997c 100644 --- a/example/components/output_list/output_list.lua +++ b/example/components/output_list/output_list.lua @@ -1,12 +1,10 @@ local component = require("druid.component") -local container = require("example.components.container.container") -local lang_text = require("druid.extended.lang_text") ----@class output_list: druid.base_component +---@class output_list: druid.component ---@field root druid.container ---@field text_header druid.text ---@field scroll druid.scroll ----@field druid druid_instance +---@field druid druid.instance local M = component.create("output_list") ---@param template string @@ -14,7 +12,7 @@ local M = component.create("output_list") function M:init(template, nodes) self.druid = self:get_druid(template, nodes) - self.root = self.druid:new(container, "root") --[[@as druid.container]] + self.root = self.druid:new_container("root") --[[@as druid.container]] self.root:add_container("text_header") self.root:add_container("separator") @@ -22,12 +20,12 @@ function M:init(template, nodes) self.prefab = self:get_node("text") gui.set_enabled(self.prefab, false) - self.grid = self.druid:new_static_grid("scroll_content", "text", 1) + self.grid = self.druid:new_grid("scroll_content", "text", 1) self.scroll = self.druid:new_scroll("scroll_view", "scroll_content") self.scroll:bind_grid(self.grid) self.scroll:set_horizontal_scroll(false) - self.druid:new(lang_text, "text_header", "ui_output") + self.druid:new_lang_text("text_header", "ui_output") local defold_version = sys.get_engine_info().version gui.set_text(self:get_node("text_version_defold"), "Defold v" .. defold_version) diff --git a/example/components/panel_druid_profiler/panel_druid_profiler.gui b/example/components/panel_druid_profiler/panel_druid_profiler.gui index e157c46..3824272 100644 --- a/example/components/panel_druid_profiler/panel_druid_profiler.gui +++ b/example/components/panel_druid_profiler/panel_druid_profiler.gui @@ -1,981 +1,385 @@ -script: "" fonts { name: "text_bold" font: "/example/assets/fonts/text_bold.font" } textures { - name: "druid" - texture: "/example/assets/druid.atlas" -} -background_color { - x: 0.0 - y: 0.0 - z: 0.0 - w: 0.0 + name: "druid_example" + texture: "/example/assets/druid_example.atlas" } nodes { - position { - x: 0.0 - y: 0.0 - z: 0.0 - w: 1.0 - } - rotation { - x: 0.0 - y: 0.0 - z: 0.0 - w: 1.0 - } - scale { - x: 1.0 - y: 1.0 - z: 1.0 - w: 1.0 - } size { x: 1080.0 y: 50.0 - z: 0.0 - w: 1.0 } color { x: 0.129 y: 0.141 z: 0.157 - w: 1.0 } type: TYPE_BOX - blend_mode: BLEND_MODE_ALPHA - texture: "" + texture: "druid_example/pixel" id: "root" - xanchor: XANCHOR_NONE - yanchor: YANCHOR_NONE - pivot: PIVOT_CENTER adjust_mode: ADJUST_MODE_STRETCH - layer: "" inherit_alpha: true - slice9 { - x: 0.0 - y: 0.0 - z: 0.0 - w: 0.0 +} +nodes { + size { + x: 1040.0 + y: 50.0 } - clipping_mode: CLIPPING_MODE_NONE - clipping_visible: true - clipping_inverted: false - alpha: 1.0 - template_node_child: false - size_mode: SIZE_MODE_MANUAL - custom_type: 0 - enabled: true - visible: true - material: "" + type: TYPE_BOX + id: "layout" + xanchor: XANCHOR_LEFT + adjust_mode: ADJUST_MODE_STRETCH + parent: "root" + inherit_alpha: true + size_mode: SIZE_MODE_AUTO + visible: false } nodes { position { x: -530.0 - y: 0.0 - z: 0.0 - w: 1.0 - } - rotation { - x: 0.0 - y: 0.0 - z: 0.0 - w: 1.0 - } - scale { - x: 1.0 - y: 1.0 - z: 1.0 - w: 1.0 } size { x: 16.0 y: 50.0 - z: 0.0 - w: 1.0 - } - color { - x: 1.0 - y: 1.0 - z: 1.0 - w: 1.0 } type: TYPE_BOX - blend_mode: BLEND_MODE_ALPHA - texture: "" id: "group_memory" - xanchor: XANCHOR_NONE - yanchor: YANCHOR_NONE pivot: PIVOT_W - adjust_mode: ADJUST_MODE_FIT - parent: "root" - layer: "" + parent: "layout" inherit_alpha: true - slice9 { - x: 0.0 - y: 0.0 - z: 0.0 - w: 0.0 - } - clipping_mode: CLIPPING_MODE_NONE - clipping_visible: true - clipping_inverted: false - alpha: 1.0 - template_node_child: false - size_mode: SIZE_MODE_MANUAL - custom_type: 0 - enabled: true visible: false - material: "" } nodes { position { x: 89.0 - y: 0.0 - z: 0.0 - w: 1.0 - } - rotation { - x: 0.0 - y: 0.0 - z: 0.0 - w: 1.0 } scale { x: 0.8 y: 0.8 - z: 1.0 - w: 1.0 } size { x: 200.0 y: 50.0 - z: 0.0 - w: 1.0 } color { x: 0.306 y: 0.31 z: 0.314 - w: 1.0 } type: TYPE_TEXT - blend_mode: BLEND_MODE_ALPHA text: "Memory" font: "text_bold" id: "text_memory" - xanchor: XANCHOR_NONE - yanchor: YANCHOR_NONE - pivot: PIVOT_CENTER outline { x: 1.0 y: 1.0 z: 1.0 - w: 1.0 } shadow { x: 1.0 y: 1.0 z: 1.0 - w: 1.0 } - adjust_mode: ADJUST_MODE_FIT - line_break: false parent: "group_memory" layer: "text_bold" inherit_alpha: true - alpha: 1.0 outline_alpha: 0.0 shadow_alpha: 0.0 - template_node_child: false - text_leading: 1.0 - text_tracking: 0.0 - custom_type: 0 - enabled: true - visible: true - material: "" } nodes { position { x: 199.0 - y: 0.0 - z: 0.0 - w: 1.0 - } - rotation { - x: 0.0 - y: 0.0 - z: 0.0 - w: 1.0 } scale { x: 0.8 y: 0.8 - z: 1.0 - w: 1.0 } size { x: 200.0 y: 50.0 - z: 0.0 - w: 1.0 } color { x: 0.463 y: 0.475 z: 0.49 - w: 1.0 } type: TYPE_TEXT - blend_mode: BLEND_MODE_ALPHA text: "2048" font: "text_bold" id: "text_memory_amount" - xanchor: XANCHOR_NONE - yanchor: YANCHOR_NONE - pivot: PIVOT_CENTER outline { x: 1.0 y: 1.0 z: 1.0 - w: 1.0 } shadow { x: 1.0 y: 1.0 z: 1.0 - w: 1.0 } - adjust_mode: ADJUST_MODE_FIT - line_break: false parent: "group_memory" layer: "text_bold" inherit_alpha: true - alpha: 1.0 outline_alpha: 0.0 shadow_alpha: 0.0 - template_node_child: false - text_leading: 1.0 - text_tracking: 0.0 - custom_type: 0 - enabled: true - visible: true - material: "" } nodes { position { x: 273.0 - y: 0.0 - z: 0.0 - w: 1.0 - } - rotation { - x: 0.0 - y: 0.0 - z: 0.0 - w: 1.0 } scale { x: 0.8 y: 0.8 - z: 1.0 - w: 1.0 } size { x: 200.0 y: 50.0 - z: 0.0 - w: 1.0 } color { x: 0.306 y: 0.31 z: 0.314 - w: 1.0 } type: TYPE_TEXT - blend_mode: BLEND_MODE_ALPHA text: "KB" font: "text_bold" id: "text_memory_kb" - xanchor: XANCHOR_NONE - yanchor: YANCHOR_NONE - pivot: PIVOT_CENTER outline { x: 1.0 y: 1.0 z: 1.0 - w: 1.0 } shadow { x: 1.0 y: 1.0 z: 1.0 - w: 1.0 } - adjust_mode: ADJUST_MODE_FIT - line_break: false parent: "group_memory" layer: "text_bold" inherit_alpha: true - alpha: 1.0 outline_alpha: 0.0 shadow_alpha: 0.0 - template_node_child: false - text_leading: 1.0 - text_tracking: 0.0 - custom_type: 0 - enabled: true - visible: true - material: "" } nodes { position { - x: -130.0 - y: 0.0 - z: 0.0 - w: 1.0 - } - rotation { - x: 0.0 - y: 0.0 - z: 0.0 - w: 1.0 - } - scale { - x: 1.0 - y: 1.0 - z: 1.0 - w: 1.0 + x: -31.0 } size { x: 16.0 y: 50.0 - z: 0.0 - w: 1.0 - } - color { - x: 1.0 - y: 1.0 - z: 1.0 - w: 1.0 } type: TYPE_BOX - blend_mode: BLEND_MODE_ALPHA - texture: "druid/empty" + texture: "druid_example/empty" id: "group_fps" - xanchor: XANCHOR_NONE - yanchor: YANCHOR_NONE - pivot: PIVOT_CENTER - adjust_mode: ADJUST_MODE_FIT - parent: "root" - layer: "" + parent: "layout" inherit_alpha: true - slice9 { - x: 0.0 - y: 0.0 - z: 0.0 - w: 0.0 - } - clipping_mode: CLIPPING_MODE_NONE - clipping_visible: true - clipping_inverted: false - alpha: 1.0 - template_node_child: false - size_mode: SIZE_MODE_MANUAL - custom_type: 0 - enabled: true visible: false - material: "" } nodes { position { x: -50.0 - y: 0.0 - z: 0.0 - w: 1.0 - } - rotation { - x: 0.0 - y: 0.0 - z: 0.0 - w: 1.0 } scale { x: 0.8 y: 0.8 - z: 1.0 - w: 1.0 } size { x: 120.0 y: 50.0 - z: 0.0 - w: 1.0 } color { x: 0.306 y: 0.31 z: 0.314 - w: 1.0 } type: TYPE_TEXT - blend_mode: BLEND_MODE_ALPHA text: "FPS" font: "text_bold" id: "text_fps" - xanchor: XANCHOR_NONE - yanchor: YANCHOR_NONE - pivot: PIVOT_CENTER outline { x: 1.0 y: 1.0 z: 1.0 - w: 1.0 } shadow { x: 1.0 y: 1.0 z: 1.0 - w: 1.0 } - adjust_mode: ADJUST_MODE_FIT - line_break: false parent: "group_fps" layer: "text_bold" inherit_alpha: true - alpha: 1.0 outline_alpha: 0.0 shadow_alpha: 0.0 - template_node_child: false - text_leading: 1.0 - text_tracking: 0.0 - custom_type: 0 - enabled: true - visible: true - material: "" } nodes { position { x: 17.0 y: -20.0 - z: 0.0 - w: 1.0 - } - rotation { - x: 0.0 - y: 0.0 - z: 0.0 - w: 1.0 } scale { x: 0.8 y: 0.8 - z: 1.0 - w: 1.0 } size { x: 200.0 y: 50.0 - z: 0.0 - w: 1.0 } color { x: 0.463 y: 0.475 z: 0.49 - w: 1.0 } type: TYPE_TEXT - blend_mode: BLEND_MODE_ALPHA text: "60" font: "text_bold" id: "text_fps_amount" - xanchor: XANCHOR_NONE - yanchor: YANCHOR_NONE pivot: PIVOT_S outline { x: 1.0 y: 1.0 z: 1.0 - w: 1.0 } shadow { x: 1.0 y: 1.0 z: 1.0 - w: 1.0 } - adjust_mode: ADJUST_MODE_FIT - line_break: false parent: "group_fps" layer: "text_bold" inherit_alpha: true - alpha: 1.0 outline_alpha: 0.0 shadow_alpha: 0.0 - template_node_child: false - text_leading: 1.0 - text_tracking: 0.0 - custom_type: 0 - enabled: true - visible: true - material: "" } nodes { position { x: 65.0 y: -17.5 - z: 0.0 - w: 1.0 - } - rotation { - x: 0.0 - y: 0.0 - z: 0.0 - w: 1.0 } scale { x: 0.6 y: 0.6 - z: 1.0 - w: 1.0 } size { x: 100.0 y: 50.0 - z: 0.0 - w: 1.0 } color { x: 0.31 y: 0.318 z: 0.322 - w: 1.0 } type: TYPE_TEXT - blend_mode: BLEND_MODE_ALPHA text: "/60" font: "text_bold" id: "text_fps_min" - xanchor: XANCHOR_NONE - yanchor: YANCHOR_NONE pivot: PIVOT_S outline { x: 1.0 y: 1.0 z: 1.0 - w: 1.0 } shadow { x: 1.0 y: 1.0 z: 1.0 - w: 1.0 } - adjust_mode: ADJUST_MODE_FIT - line_break: false parent: "group_fps" layer: "text_bold" inherit_alpha: true - alpha: 1.0 outline_alpha: 0.0 shadow_alpha: 0.0 - template_node_child: false - text_leading: 1.0 - text_tracking: 0.0 - custom_type: 0 - enabled: true - visible: true - material: "" } nodes { position { - x: 130.0 - y: 0.0 - z: 0.0 - w: 1.0 - } - rotation { - x: 0.0 - y: 0.0 - z: 0.0 - w: 1.0 - } - scale { - x: 1.0 - y: 1.0 - z: 1.0 - w: 1.0 + x: 355.0 } size { x: 16.0 y: 50.0 - z: 0.0 - w: 1.0 - } - color { - x: 1.0 - y: 1.0 - z: 1.0 - w: 1.0 } type: TYPE_BOX - blend_mode: BLEND_MODE_ALPHA - texture: "druid/empty" + texture: "druid_example/empty" id: "group_components" - xanchor: XANCHOR_NONE - yanchor: YANCHOR_NONE - pivot: PIVOT_CENTER - adjust_mode: ADJUST_MODE_FIT - parent: "root" - layer: "" + parent: "layout" inherit_alpha: true - slice9 { - x: 0.0 - y: 0.0 - z: 0.0 - w: 0.0 - } - clipping_mode: CLIPPING_MODE_NONE - clipping_visible: true - clipping_inverted: false - alpha: 1.0 - template_node_child: false - size_mode: SIZE_MODE_MANUAL - custom_type: 0 - enabled: true visible: false - material: "" } nodes { position { x: -50.0 - y: 0.0 - z: 0.0 - w: 1.0 - } - rotation { - x: 0.0 - y: 0.0 - z: 0.0 - w: 1.0 } scale { x: 0.8 y: 0.8 - z: 1.0 - w: 1.0 } size { x: 350.0 y: 50.0 - z: 0.0 - w: 1.0 } color { x: 0.306 y: 0.31 z: 0.314 - w: 1.0 } type: TYPE_TEXT - blend_mode: BLEND_MODE_ALPHA text: "Components" font: "text_bold" id: "text_components" - xanchor: XANCHOR_NONE - yanchor: YANCHOR_NONE - pivot: PIVOT_CENTER outline { x: 1.0 y: 1.0 z: 1.0 - w: 1.0 } shadow { x: 1.0 y: 1.0 z: 1.0 - w: 1.0 } - adjust_mode: ADJUST_MODE_FIT - line_break: false parent: "group_components" layer: "text_bold" inherit_alpha: true - alpha: 1.0 outline_alpha: 0.0 shadow_alpha: 0.0 - template_node_child: false - text_leading: 1.0 - text_tracking: 0.0 - custom_type: 0 - enabled: true - visible: true - material: "" } nodes { position { x: 90.0 - y: 0.0 - z: 0.0 - w: 1.0 - } - rotation { - x: 0.0 - y: 0.0 - z: 0.0 - w: 1.0 } scale { x: 0.8 y: 0.8 - z: 1.0 - w: 1.0 } size { x: 200.0 y: 50.0 - z: 0.0 - w: 1.0 } color { x: 0.463 y: 0.475 z: 0.49 - w: 1.0 } type: TYPE_TEXT - blend_mode: BLEND_MODE_ALPHA text: "2004" font: "text_bold" id: "text_components_amount" - xanchor: XANCHOR_NONE - yanchor: YANCHOR_NONE - pivot: PIVOT_CENTER outline { x: 1.0 y: 1.0 z: 1.0 - w: 1.0 } shadow { x: 1.0 y: 1.0 z: 1.0 - w: 1.0 } - adjust_mode: ADJUST_MODE_FIT - line_break: false parent: "group_components" layer: "text_bold" inherit_alpha: true - alpha: 1.0 outline_alpha: 0.0 shadow_alpha: 0.0 - template_node_child: false - text_leading: 1.0 - text_tracking: 0.0 - custom_type: 0 - enabled: true - visible: true - material: "" -} -nodes { - position { - x: 530.0 - y: 0.0 - z: 0.0 - w: 1.0 - } - rotation { - x: 0.0 - y: 0.0 - z: 0.0 - w: 1.0 - } - scale { - x: 1.0 - y: 1.0 - z: 1.0 - w: 1.0 - } - size { - x: 16.0 - y: 50.0 - z: 0.0 - w: 1.0 - } - color { - x: 1.0 - y: 1.0 - z: 1.0 - w: 1.0 - } - type: TYPE_BOX - blend_mode: BLEND_MODE_ALPHA - texture: "" - id: "group_events" - xanchor: XANCHOR_NONE - yanchor: YANCHOR_NONE - pivot: PIVOT_E - adjust_mode: ADJUST_MODE_FIT - parent: "root" - layer: "" - inherit_alpha: true - slice9 { - x: 0.0 - y: 0.0 - z: 0.0 - w: 0.0 - } - clipping_mode: CLIPPING_MODE_NONE - clipping_visible: true - clipping_inverted: false - alpha: 1.0 - template_node_child: false - size_mode: SIZE_MODE_MANUAL - custom_type: 0 - enabled: true - visible: false - material: "" -} -nodes { - position { - x: -163.0 - y: 0.0 - z: 0.0 - w: 1.0 - } - rotation { - x: 0.0 - y: 0.0 - z: 0.0 - w: 1.0 - } - scale { - x: 0.8 - y: 0.8 - z: 1.0 - w: 1.0 - } - size { - x: 200.0 - y: 50.0 - z: 0.0 - w: 1.0 - } - color { - x: 0.306 - y: 0.31 - z: 0.314 - w: 1.0 - } - type: TYPE_TEXT - blend_mode: BLEND_MODE_ALPHA - text: "Events" - font: "text_bold" - id: "text_events" - xanchor: XANCHOR_NONE - yanchor: YANCHOR_NONE - pivot: PIVOT_CENTER - outline { - x: 1.0 - y: 1.0 - z: 1.0 - w: 1.0 - } - shadow { - x: 1.0 - y: 1.0 - z: 1.0 - w: 1.0 - } - adjust_mode: ADJUST_MODE_FIT - line_break: false - parent: "group_events" - layer: "text_bold" - inherit_alpha: true - alpha: 1.0 - outline_alpha: 0.0 - shadow_alpha: 0.0 - template_node_child: false - text_leading: 1.0 - text_tracking: 0.0 - custom_type: 0 - enabled: true - visible: true - material: "" -} -nodes { - position { - x: -59.0 - y: 0.0 - z: 0.0 - w: 1.0 - } - rotation { - x: 0.0 - y: 0.0 - z: 0.0 - w: 1.0 - } - scale { - x: 0.8 - y: 0.8 - z: 1.0 - w: 1.0 - } - size { - x: 200.0 - y: 50.0 - z: 0.0 - w: 1.0 - } - color { - x: 0.463 - y: 0.475 - z: 0.49 - w: 1.0 - } - type: TYPE_TEXT - blend_mode: BLEND_MODE_ALPHA - text: "6000" - font: "text_bold" - id: "text_events_amount" - xanchor: XANCHOR_NONE - yanchor: YANCHOR_NONE - pivot: PIVOT_CENTER - outline { - x: 1.0 - y: 1.0 - z: 1.0 - w: 1.0 - } - shadow { - x: 1.0 - y: 1.0 - z: 1.0 - w: 1.0 - } - adjust_mode: ADJUST_MODE_FIT - line_break: false - parent: "group_events" - layer: "text_bold" - inherit_alpha: true - alpha: 1.0 - outline_alpha: 0.0 - shadow_alpha: 0.0 - template_node_child: false - text_leading: 1.0 - text_tracking: 0.0 - custom_type: 0 - enabled: true - visible: true - material: "" } layers { name: "druid" @@ -985,4 +389,3 @@ layers { } material: "/builtins/materials/gui.material" adjust_reference: ADJUST_REFERENCE_PARENT -max_nodes: 512 diff --git a/example/components/panel_druid_profiler/panel_druid_profiler.lua b/example/components/panel_druid_profiler/panel_druid_profiler.lua index 974aaf3..d2c2e27 100644 --- a/example/components/panel_druid_profiler/panel_druid_profiler.lua +++ b/example/components/panel_druid_profiler/panel_druid_profiler.lua @@ -1,13 +1,11 @@ -local event = require("druid.event") +local event = require("event.event") local helper = require("druid.helper") local component = require("druid.component") -local container = require("example.components.container.container") -local lang_text = require("druid.extended.lang_text") ----@class panel_druid_profiler: druid.base_component +---@class panel_druid_profiler: druid.component ---@field root druid.container ----@field druid druid_instance +---@field druid druid.instance local M = component.create("panel_druid_profiler") local FPS_SAMPLES = 60 @@ -16,29 +14,34 @@ local FPS_SAMPLES = 60 function M:init(template, nodes) self.druid = self:get_druid(template, nodes) - self.root = self.druid:new(container, "root") --[[@as druid.container]] + self.root = self.druid:new_container("root") --[[@as druid.container]] self.group_memory = self.root:add_container("group_memory") self.group_fps = self.root:add_container("group_fps") self.group_components = self.root:add_container("group_components") - self.group_events = self.root:add_container("group_events") + + self.root:add_container("layout", nil, function() + self.layout:set_dirty() + end) + self.layout = self.druid:new_layout("layout", "horizontal") + self.layout:add(self.group_memory.node) + self.layout:add(self.group_fps.node) + self.layout:add(self.group_components.node) + self.layout:set_justify(true) self.druid:new_button("group_memory", self.run_collectgarbage) self.group_memory:set_min_size(270, nil) self.group_fps:set_min_size(270, nil) self.group_components:set_min_size(270, nil) - self.group_events:set_min_size(270, nil) self.text_memory_amount = self.druid:new_text("text_memory_amount") self.text_fps_amount = self.druid:new_text("text_fps_amount") self.text_fps_min = self.druid:new_text("text_fps_min") self.text_components_amount = self.druid:new_text("text_components_amount") - self.text_events_amount = self.druid:new_text("text_events_amount") - self.druid:new(lang_text, "text_memory", "ui_profiler_memory") - self.druid:new(lang_text, "text_fps", "ui_profiler_fps") - self.druid:new(lang_text, "text_components", "ui_profiler_components") - self.druid:new(lang_text, "text_events", "ui_profiler_events") + self.druid:new_lang_text("text_memory", "ui_profiler_memory") + self.druid:new_lang_text("text_fps", "ui_profiler_fps") + self.druid:new_lang_text("text_components", "ui_profiler_components") self.previous_time = nil self.fps_samples = {} @@ -57,17 +60,12 @@ function M:init(template, nodes) self:get_node("text_components"), self:get_node("text_components_amount"), } - self.nodes_events = { - self:get_node("text_events"), - self:get_node("text_events_amount"), - } timer.delay(0.16, true, function() self:update_memory() self:update_fps() self:update_components() - self:update_events() - self:align_fps_components() + self.layout:set_dirty() end) end @@ -76,14 +74,13 @@ function M:on_language_change() self:update_memory() self:update_fps() self:update_components() - self:update_events() - self:align_fps_components() + self.layout:set_dirty() end function M:update_memory() local memory = collectgarbage("count") - self.text_memory_amount:set_to(tostring(math.ceil(memory))) + self.text_memory_amount:set_text(tostring(math.ceil(memory))) local width = helper.centrate_nodes(2, unpack(self.nodes_memory)) for index = 1, #self.nodes_memory do @@ -104,8 +101,8 @@ function M:update_fps() end average_frame_time = average_frame_time / #self.fps_samples - self.text_fps_amount:set_to(tostring(math.ceil(1 / average_frame_time))) - self.text_fps_min:set_to("/ " .. tostring(math.ceil(1 / max_frame_time))) + self.text_fps_amount:set_text(tostring(math.ceil(1 / average_frame_time))) + self.text_fps_min:set_text("/ " .. tostring(math.ceil(1 / max_frame_time))) local width = helper.centrate_nodes(2, unpack(self.nodes_fps)) self.group_fps:set_size(width, nil) @@ -113,43 +110,15 @@ end function M:update_components() - ---@diagnostic disable-next-line: undefined-field + ---@diagnostic disable-next-line, invisible local components = #self.druid.components_all - self.text_components_amount:set_to(tostring(components)) + self.text_components_amount:set_text(tostring(components)) local width = helper.centrate_nodes(2, unpack(self.nodes_components)) self.group_components:set_size(width, nil) end -function M:update_events() - self.text_events_amount:set_to(tostring(event.COUNTER)) - - local width = helper.centrate_nodes(2, unpack(self.nodes_events)) - for index = 1, #self.nodes_events do - local node = self.nodes_events[index] - local position_x = gui.get(node, "position.x") - gui.set(node, "position.x", position_x - width/2) - end - self.group_events:set_size(width, nil) -end - - -function M:align_fps_components() - local pos_x_memory = gui.get(self.group_memory.node, "position.x") + gui.get(self.group_memory.node, "size.x") - local pos_x_events = gui.get(self.group_events.node, "position.x") - gui.get(self.group_events.node, "size.x") - local width = pos_x_events - pos_x_memory - - -- Align FPS and Components - local fps_size = gui.get(self.group_fps.node, "size.x") - local components_size = gui.get(self.group_components.node, "size.x") - - local free_width = width - fps_size - components_size - gui.set(self.group_fps.node, "position.x", pos_x_memory + fps_size/2 + free_width/3) - gui.set(self.group_components.node, "position.x", pos_x_events - components_size/2 - free_width/3) -end - - function M:update() self:sample_fps() end diff --git a/example/components/panel_information/panel_information.gui b/example/components/panel_information/panel_information.gui index e9df7b8..5cf8924 100644 --- a/example/components/panel_information/panel_information.gui +++ b/example/components/panel_information/panel_information.gui @@ -7,8 +7,8 @@ fonts { font: "/example/assets/fonts/text_regular.font" } textures { - name: "druid" - texture: "/example/assets/druid.atlas" + name: "druid_example" + texture: "/example/assets/druid_example.atlas" } nodes { size { @@ -21,7 +21,7 @@ nodes { z: 0.204 } type: TYPE_BOX - texture: "druid/pixel" + texture: "druid_example/pixel" id: "root" adjust_mode: ADJUST_MODE_STRETCH layer: "druid" @@ -92,27 +92,15 @@ nodes { template: "/example/templates/button_text_blue.gui" } nodes { - size { - x: 240.0 - y: 80.0 - } type: TYPE_BOX id: "button_view_code/root" parent: "button_view_code" - overridden_fields: 4 template_node_child: true } nodes { - scale { - x: 0.75 - y: 0.75 - } type: TYPE_TEXT - text: "View code" id: "button_view_code/text" parent: "button_view_code/root" - overridden_fields: 3 - overridden_fields: 8 template_node_child: true } nodes { @@ -136,6 +124,10 @@ nodes { x: -85.0 y: -32.5 } + scale { + x: 0.5 + y: 0.5 + } type: TYPE_TEMPLATE id: "button_profiler" parent: "NE_Anchor" @@ -143,41 +135,15 @@ nodes { template: "/example/templates/button_text_yellow.gui" } nodes { - size { - x: 130.0 - y: 35.0 - } type: TYPE_BOX - texture: "druid/ui_circle_8" id: "button_profiler/root" parent: "button_profiler" - slice9 { - x: 4.0 - y: 4.0 - z: 4.0 - w: 4.0 - } - overridden_fields: 4 - overridden_fields: 9 - overridden_fields: 22 template_node_child: true } nodes { - scale { - x: 0.6 - y: 0.6 - } - size { - x: 190.0 - y: 50.0 - } type: TYPE_TEXT - text: "Profiler" id: "button_profiler/text" parent: "button_profiler/root" - overridden_fields: 3 - overridden_fields: 4 - overridden_fields: 8 template_node_child: true } nodes { @@ -190,7 +156,7 @@ nodes { y: 250.0 } type: TYPE_BOX - texture: "druid/empty" + texture: "druid_example/empty" id: "scroll_view" pivot: PIVOT_NW parent: "root" @@ -203,7 +169,7 @@ nodes { y: 250.0 } type: TYPE_BOX - texture: "druid/empty" + texture: "druid_example/empty" id: "scroll_content" pivot: PIVOT_NW parent: "scroll_view" diff --git a/example/components/panel_information/panel_information.lua b/example/components/panel_information/panel_information.lua index fd0a35e..a190151 100644 --- a/example/components/panel_information/panel_information.lua +++ b/example/components/panel_information/panel_information.lua @@ -1,15 +1,11 @@ local lang = require("lang.lang") local component = require("druid.component") -local container = require("example.components.container.container") -local lang_text = require("druid.extended.lang_text") -local rich_text = require("druid.custom.rich_text.rich_text") - ----@class panel_information: druid.base_component +---@class panel_information: druid.component ---@field root druid.container ---@field text_header druid.lang_text ---@field rich_text druid.rich_text ----@field druid druid_instance +---@field druid druid.instance local PanelInformation = component.create("panel_information") ---@param template string @@ -17,17 +13,17 @@ local PanelInformation = component.create("panel_information") function PanelInformation:init(template, nodes) self.druid = self:get_druid(template, nodes) - self.root = self.druid:new(container, "root") --[[@as druid.container]] + self.root = self.druid:new_container("root") --[[@as druid.container]] self.root:add_container("text_header") self.root:add_container("scroll_view") self.root:add_container("S_Anchor") self.root:add_container("NE_Anchor") - self.druid:new(lang_text, "text_header", "ui_information") - self.druid:new(lang_text, "button_profiler/text", "ui_profiler") + self.druid:new_lang_text("text_header", "ui_information") + self.druid:new_lang_text("button_profiler/text", "ui_profiler") - --self.text_description = self.druid:new(lang_text, "text_description", "") --[[@as druid.lang_text]] - self.rich_text = self.druid:new(rich_text, "text_description") + --self.text_description = self.druid:new_lang_text("text_description", "") --[[@as druid.lang_text]] + self.rich_text = self.druid:new_rich_text("text_description") self.button_profiler = self.druid:new_button("button_profiler/root", self.on_profiler_click) self.button_profiler:set_key_trigger("key_p") self.button_view_code = self.druid:new_button("button_view_code/root") diff --git a/example/components/properties_panel/properties/property_button.gui b/example/components/properties_panel/properties/property_button.gui index 20e4680..061bd7a 100644 --- a/example/components/properties_panel/properties/property_button.gui +++ b/example/components/properties_panel/properties/property_button.gui @@ -1,184 +1,79 @@ -script: "" fonts { name: "text_bold" font: "/example/assets/fonts/text_bold.font" } textures { - name: "druid" - texture: "/example/assets/druid.atlas" -} -background_color { - x: 0.0 - y: 0.0 - z: 0.0 - w: 0.0 + name: "druid_example" + texture: "/example/assets/druid_example.atlas" } nodes { - position { - x: 0.0 - y: 0.0 - z: 0.0 - w: 1.0 - } - rotation { - x: 0.0 - y: 0.0 - z: 0.0 - w: 1.0 - } - scale { - x: 1.0 - y: 1.0 - z: 1.0 - w: 1.0 - } size { x: 400.0 y: 40.0 - z: 0.0 - w: 1.0 - } - color { - x: 1.0 - y: 1.0 - z: 1.0 - w: 1.0 } type: TYPE_BOX - blend_mode: BLEND_MODE_ALPHA - texture: "druid/empty" + texture: "druid_example/empty" id: "root" - xanchor: XANCHOR_NONE - yanchor: YANCHOR_NONE pivot: PIVOT_NW adjust_mode: ADJUST_MODE_STRETCH - layer: "" inherit_alpha: true - slice9 { - x: 0.0 - y: 0.0 - z: 0.0 - w: 0.0 - } - clipping_mode: CLIPPING_MODE_NONE - clipping_visible: true - clipping_inverted: false - alpha: 1.0 - template_node_child: false - size_mode: SIZE_MODE_MANUAL - custom_type: 0 - enabled: true visible: false - material: "" } nodes { position { - x: 0.0 y: -20.0 - z: 0.0 - w: 1.0 - } - rotation { - x: 0.0 - y: 0.0 - z: 0.0 - w: 1.0 } scale { x: 0.65 y: 0.65 - z: 1.0 - w: 1.0 } size { x: 200.0 y: 40.0 - z: 0.0 - w: 1.0 } color { x: 0.463 y: 0.475 z: 0.49 - w: 1.0 } type: TYPE_TEXT - blend_mode: BLEND_MODE_ALPHA text: "Button" font: "text_bold" id: "text_name" - xanchor: XANCHOR_NONE - yanchor: YANCHOR_NONE pivot: PIVOT_W outline { x: 1.0 y: 1.0 z: 1.0 - w: 1.0 } shadow { x: 1.0 y: 1.0 z: 1.0 - w: 1.0 } - adjust_mode: ADJUST_MODE_FIT - line_break: false parent: "root" - layer: "" inherit_alpha: true - alpha: 1.0 outline_alpha: 0.0 shadow_alpha: 0.0 - template_node_child: false - text_leading: 1.0 - text_tracking: 0.0 - custom_type: 0 - enabled: true - visible: true - material: "" } nodes { position { x: 267.0 y: -20.0 - z: 0.0 - w: 1.0 - } - rotation { - x: 0.0 - y: 0.0 - z: 0.0 - w: 1.0 - } - scale { - x: 1.0 - y: 1.0 - z: 1.0 - w: 1.0 } size { x: 226.0 y: 40.0 - z: 0.0 - w: 1.0 } color { x: 0.463 y: 0.475 z: 0.49 - w: 1.0 } type: TYPE_BOX - blend_mode: BLEND_MODE_ALPHA - texture: "druid/rect_round2_width1" + texture: "druid_example/rect_round2_width1" id: "button" - xanchor: XANCHOR_NONE - yanchor: YANCHOR_NONE - pivot: PIVOT_CENTER - adjust_mode: ADJUST_MODE_FIT parent: "root" - layer: "" inherit_alpha: true slice9 { x: 4.0 @@ -186,143 +81,60 @@ nodes { z: 4.0 w: 4.0 } - clipping_mode: CLIPPING_MODE_NONE - clipping_visible: true - clipping_inverted: false - alpha: 1.0 - template_node_child: false - size_mode: SIZE_MODE_MANUAL - custom_type: 0 - enabled: true - visible: true - material: "" } nodes { position { - x: 0.0 y: -20.0 - z: 0.0 - w: 1.0 - } - rotation { - x: 0.0 - y: 0.0 - z: 0.0 - w: 1.0 - } - scale { - x: 1.0 - y: 1.0 - z: 1.0 - w: 1.0 } size { x: 226.0 y: 4.0 - z: 0.0 - w: 1.0 } color { x: 0.894 y: 0.506 z: 0.333 - w: 1.0 } type: TYPE_BOX - blend_mode: BLEND_MODE_ALPHA - texture: "druid/pixel" + texture: "druid_example/pixel" id: "selected" - xanchor: XANCHOR_NONE - yanchor: YANCHOR_NONE pivot: PIVOT_S adjust_mode: ADJUST_MODE_STRETCH parent: "button" - layer: "" inherit_alpha: true - slice9 { - x: 0.0 - y: 0.0 - z: 0.0 - w: 0.0 - } - clipping_mode: CLIPPING_MODE_NONE - clipping_visible: true - clipping_inverted: false - alpha: 1.0 - template_node_child: false - size_mode: SIZE_MODE_MANUAL - custom_type: 0 - enabled: true - visible: true - material: "" } nodes { - position { - x: 0.0 - y: 0.0 - z: 0.0 - w: 1.0 - } - rotation { - x: 0.0 - y: 0.0 - z: 0.0 - w: 1.0 - } scale { x: 0.65 y: 0.65 - z: 1.0 - w: 1.0 } size { x: 250.0 y: 30.0 - z: 0.0 - w: 1.0 } color { x: 0.722 y: 0.741 z: 0.761 - w: 1.0 } type: TYPE_TEXT - blend_mode: BLEND_MODE_ALPHA text: "Button" font: "text_bold" id: "text_button" - xanchor: XANCHOR_NONE - yanchor: YANCHOR_NONE - pivot: PIVOT_CENTER outline { x: 1.0 y: 1.0 z: 1.0 - w: 1.0 } shadow { x: 1.0 y: 1.0 z: 1.0 - w: 1.0 } - adjust_mode: ADJUST_MODE_FIT - line_break: false parent: "button" - layer: "" inherit_alpha: true - alpha: 1.0 outline_alpha: 0.0 shadow_alpha: 0.0 - template_node_child: false - text_leading: 1.0 - text_tracking: 0.0 - custom_type: 0 - enabled: true - visible: true - material: "" } material: "/builtins/materials/gui.material" adjust_reference: ADJUST_REFERENCE_PARENT -max_nodes: 512 diff --git a/example/components/properties_panel/properties/property_button.lua b/example/components/properties_panel/properties/property_button.lua index 9ffa273..008c0d4 100644 --- a/example/components/properties_panel/properties/property_button.lua +++ b/example/components/properties_panel/properties/property_button.lua @@ -1,21 +1,14 @@ -local component = require("druid.component") -local lang_text = require("druid.extended.lang_text") - ----@class property_button: druid.base_component +---@class property_button: druid.widget ---@field root node ---@field text_name druid.lang_text ---@field button druid.button ---@field text_button druid.text ----@field druid druid_instance -local M = component.create("property_button") +local M = {} ----@param template string ----@param nodes table -function M:init(template, nodes) - self.druid = self:get_druid(template, nodes) +function M:init() self.root = self:get_node("root") - self.text_name = self.druid:new(lang_text, "text_name") --[[@as druid.lang_text]] + self.text_name = self.druid:new_lang_text("text_name") --[[@as druid.lang_text]] self.selected = self:get_node("selected") gui.set_alpha(self.selected, 0) diff --git a/example/components/properties_panel/properties/property_checkbox.gui b/example/components/properties_panel/properties/property_checkbox.gui index 69de501..bcab99a 100644 --- a/example/components/properties_panel/properties/property_checkbox.gui +++ b/example/components/properties_panel/properties/property_checkbox.gui @@ -1,184 +1,79 @@ -script: "" fonts { name: "text_bold" font: "/example/assets/fonts/text_bold.font" } textures { - name: "druid" - texture: "/example/assets/druid.atlas" -} -background_color { - x: 0.0 - y: 0.0 - z: 0.0 - w: 0.0 + name: "druid_example" + texture: "/example/assets/druid_example.atlas" } nodes { - position { - x: 0.0 - y: 0.0 - z: 0.0 - w: 1.0 - } - rotation { - x: 0.0 - y: 0.0 - z: 0.0 - w: 1.0 - } - scale { - x: 1.0 - y: 1.0 - z: 1.0 - w: 1.0 - } size { x: 400.0 y: 40.0 - z: 0.0 - w: 1.0 - } - color { - x: 1.0 - y: 1.0 - z: 1.0 - w: 1.0 } type: TYPE_BOX - blend_mode: BLEND_MODE_ALPHA - texture: "druid/empty" + texture: "druid_example/empty" id: "root" - xanchor: XANCHOR_NONE - yanchor: YANCHOR_NONE pivot: PIVOT_NW adjust_mode: ADJUST_MODE_STRETCH - layer: "" inherit_alpha: true - slice9 { - x: 0.0 - y: 0.0 - z: 0.0 - w: 0.0 - } - clipping_mode: CLIPPING_MODE_NONE - clipping_visible: true - clipping_inverted: false - alpha: 1.0 - template_node_child: false - size_mode: SIZE_MODE_MANUAL - custom_type: 0 - enabled: true visible: false - material: "" } nodes { position { - x: 0.0 y: -20.0 - z: 0.0 - w: 1.0 - } - rotation { - x: 0.0 - y: 0.0 - z: 0.0 - w: 1.0 } scale { x: 0.65 y: 0.65 - z: 1.0 - w: 1.0 } size { x: 200.0 y: 40.0 - z: 0.0 - w: 1.0 } color { x: 0.463 y: 0.475 z: 0.49 - w: 1.0 } type: TYPE_TEXT - blend_mode: BLEND_MODE_ALPHA text: "Checkbox" font: "text_bold" id: "text_name" - xanchor: XANCHOR_NONE - yanchor: YANCHOR_NONE pivot: PIVOT_W outline { x: 1.0 y: 1.0 z: 1.0 - w: 1.0 } shadow { x: 1.0 y: 1.0 z: 1.0 - w: 1.0 } - adjust_mode: ADJUST_MODE_FIT - line_break: false parent: "root" - layer: "" inherit_alpha: true - alpha: 1.0 outline_alpha: 0.0 shadow_alpha: 0.0 - template_node_child: false - text_leading: 1.0 - text_tracking: 0.0 - custom_type: 0 - enabled: true - visible: true - material: "" } nodes { position { x: 174.0 y: -20.0 - z: 0.0 - w: 1.0 - } - rotation { - x: 0.0 - y: 0.0 - z: 0.0 - w: 1.0 - } - scale { - x: 1.0 - y: 1.0 - z: 1.0 - w: 1.0 } size { x: 40.0 y: 40.0 - z: 0.0 - w: 1.0 } color { x: 0.463 y: 0.475 z: 0.49 - w: 1.0 } type: TYPE_BOX - blend_mode: BLEND_MODE_ALPHA - texture: "druid/rect_round2_width1" + texture: "druid_example/rect_round2_width1" id: "button" - xanchor: XANCHOR_NONE - yanchor: YANCHOR_NONE - pivot: PIVOT_CENTER - adjust_mode: ADJUST_MODE_FIT parent: "root" - layer: "" inherit_alpha: true slice9 { x: 4.0 @@ -186,135 +81,40 @@ nodes { z: 4.0 w: 4.0 } - clipping_mode: CLIPPING_MODE_NONE - clipping_visible: true - clipping_inverted: false - alpha: 1.0 - template_node_child: false - size_mode: SIZE_MODE_MANUAL - custom_type: 0 - enabled: true - visible: true - material: "" } nodes { - position { - x: 0.0 - y: 0.0 - z: 0.0 - w: 1.0 - } - rotation { - x: 0.0 - y: 0.0 - z: 0.0 - w: 1.0 - } - scale { - x: 1.0 - y: 1.0 - z: 1.0 - w: 1.0 - } - size { - x: 200.0 - y: 100.0 - z: 0.0 - w: 1.0 - } color { x: 0.722 y: 0.741 z: 0.761 - w: 1.0 } type: TYPE_BOX - blend_mode: BLEND_MODE_ALPHA - texture: "druid/icon_check" + texture: "druid_example/icon_check" id: "icon" - xanchor: XANCHOR_NONE - yanchor: YANCHOR_NONE - pivot: PIVOT_CENTER - adjust_mode: ADJUST_MODE_FIT parent: "button" - layer: "" inherit_alpha: true - slice9 { - x: 0.0 - y: 0.0 - z: 0.0 - w: 0.0 - } - clipping_mode: CLIPPING_MODE_NONE - clipping_visible: true - clipping_inverted: false - alpha: 1.0 - template_node_child: false size_mode: SIZE_MODE_AUTO - custom_type: 0 - enabled: true - visible: true - material: "" } nodes { position { - x: 0.0 y: -20.0 - z: 0.0 - w: 1.0 - } - rotation { - x: 0.0 - y: 0.0 - z: 0.0 - w: 1.0 - } - scale { - x: 1.0 - y: 1.0 - z: 1.0 - w: 1.0 } size { x: 40.0 y: 4.0 - z: 0.0 - w: 1.0 } color { x: 0.894 y: 0.506 z: 0.333 - w: 1.0 } type: TYPE_BOX - blend_mode: BLEND_MODE_ALPHA - texture: "druid/pixel" + texture: "druid_example/pixel" id: "selected" - xanchor: XANCHOR_NONE - yanchor: YANCHOR_NONE pivot: PIVOT_S adjust_mode: ADJUST_MODE_STRETCH parent: "button" - layer: "" inherit_alpha: true - slice9 { - x: 0.0 - y: 0.0 - z: 0.0 - w: 0.0 - } - clipping_mode: CLIPPING_MODE_NONE - clipping_visible: true - clipping_inverted: false - alpha: 1.0 - template_node_child: false - size_mode: SIZE_MODE_MANUAL - custom_type: 0 - enabled: true - visible: true - material: "" } material: "/builtins/materials/gui.material" adjust_reference: ADJUST_REFERENCE_PARENT -max_nodes: 512 diff --git a/example/components/properties_panel/properties/property_checkbox.lua b/example/components/properties_panel/properties/property_checkbox.lua index fbe92c5..81b56db 100644 --- a/example/components/properties_panel/properties/property_checkbox.lua +++ b/example/components/properties_panel/properties/property_checkbox.lua @@ -1,21 +1,13 @@ -local component = require("druid.component") -local container = require("example.components.container.container") -local lang_text = require("druid.extended.lang_text") - ----@class property_checkbox: druid.base_component ----@field druid druid_instance +---@class property_checkbox: druid.widget ---@field root druid.container ---@field text_name druid.lang_text ---@field button druid.button ---@field selected node -local M = component.create("property_checkbox") +local M = {} ----@param template string ----@param nodes table -function M:init(template, nodes) - self.druid = self:get_druid(template, nodes) - self.root = self.druid:new(container, "root") --[[@as druid.container]] +function M:init() + self.root = self.druid:new_container("root") --[[@as druid.container]] self.icon = self:get_node("icon") gui.set_enabled(self.icon, false) @@ -23,7 +15,7 @@ function M:init(template, nodes) self.selected = self:get_node("selected") gui.set_alpha(self.selected, 0) - self.text_name = self.druid:new(lang_text, "text_name") --[[@as druid.lang_text]] + self.text_name = self.druid:new_lang_text("text_name") --[[@as druid.lang_text]] self.button = self.druid:new_button("button", self.on_click) end diff --git a/example/components/properties_panel/properties/property_slider.gui b/example/components/properties_panel/properties/property_slider.gui index 4c47d1b..f4579ae 100644 --- a/example/components/properties_panel/properties/property_slider.gui +++ b/example/components/properties_panel/properties/property_slider.gui @@ -3,8 +3,8 @@ fonts { font: "/example/assets/fonts/text_bold.font" } textures { - name: "druid" - texture: "/example/assets/druid.atlas" + name: "druid_example" + texture: "/example/assets/druid_example.atlas" } nodes { size { @@ -12,7 +12,7 @@ nodes { y: 40.0 } type: TYPE_BOX - texture: "druid/empty" + texture: "druid_example/empty" id: "root" pivot: PIVOT_NW adjust_mode: ADJUST_MODE_STRETCH @@ -62,7 +62,7 @@ nodes { y: -20.0 } type: TYPE_BOX - texture: "druid/empty" + texture: "druid_example/empty" id: "E_Anchor" pivot: PIVOT_E adjust_mode: ADJUST_MODE_STRETCH @@ -85,7 +85,7 @@ nodes { z: 0.49 } type: TYPE_BOX - texture: "druid/rect_round2_width1" + texture: "druid_example/rect_round2_width1" id: "button" pivot: PIVOT_E parent: "E_Anchor" @@ -111,7 +111,7 @@ nodes { z: 0.333 } type: TYPE_BOX - texture: "druid/pixel" + texture: "druid_example/pixel" id: "selected" pivot: PIVOT_SE adjust_mode: ADJUST_MODE_STRETCH @@ -169,7 +169,7 @@ nodes { z: 0.157 } type: TYPE_BOX - texture: "druid/empty" + texture: "druid_example/empty" id: "slider" parent: "root" inherit_alpha: true @@ -185,7 +185,7 @@ nodes { z: 0.157 } type: TYPE_BOX - texture: "druid/ui_circle_8" + texture: "druid_example/ui_circle_8" id: "slider_back" parent: "slider" inherit_alpha: true @@ -210,7 +210,7 @@ nodes { z: 0.761 } type: TYPE_BOX - texture: "druid/ui_circle_8" + texture: "druid_example/ui_circle_8" id: "slider_pin" parent: "slider" inherit_alpha: true diff --git a/example/components/properties_panel/properties/property_slider.lua b/example/components/properties_panel/properties/property_slider.lua index d5ada5f..ecae11d 100644 --- a/example/components/properties_panel/properties/property_slider.lua +++ b/example/components/properties_panel/properties/property_slider.lua @@ -1,30 +1,20 @@ -local component = require("druid.component") -local container = require("example.components.container.container") -local lang_text = require("druid.extended.lang_text") -local slider = require("druid.extended.slider") - ----@class property_slider: druid.base_component ----@field druid druid_instance +---@class property_slider: druid.widget ---@field root druid.container ---@field text_name druid.lang_text ---@field text_value druid.text ---@field slider druid.slider -local M = component.create("property_slider") +local M = {} ----@param template string ----@param nodes table -function M:init(template, nodes) - self.druid = self:get_druid(template, nodes) - - self.root = self.druid:new(container, "root") --[[@as druid.container]] +function M:init() + self.root = self.druid:new_container("root") --[[@as druid.container]] self.selected = self:get_node("selected") gui.set_alpha(self.selected, 0) self._value = 0 - self.text_name = self.druid:new(lang_text, "text_name") --[[@as druid.lang_text]] + self.text_name = self.druid:new_lang_text("text_name") --[[@as druid.lang_text]] self.text_value = self.druid:new_text("text_value") - self.slider = self.druid:new(slider, "slider_pin", vmath.vector3(68, 0, 0), self._on_slider_change_by_user) --[[@as druid.slider]] + self.slider = self.druid:new_slider("slider_pin", vmath.vector3(68, 0, 0), self._on_slider_change_by_user) --[[@as druid.slider]] self.slider:set_input_node("slider") self:set_text_function(function(value) @@ -36,7 +26,7 @@ end ---@param callback fun(value:number):string function M:set_text_function(callback) self._text_function = callback - self.text_value:set_to(self._text_function(self._value)) + self.text_value:set_text(self._text_function(self._value)) end @@ -48,7 +38,7 @@ function M:set_value(value, is_instant) self._value = value self.slider:set(value, true) - self.text_value:set_to(self._text_function(value)) + self.text_value:set_text(self._text_function(value)) if not is_instant then gui.set_alpha(self.selected, 1) @@ -65,7 +55,7 @@ end function M:_on_slider_change_by_user(value) self._value = value - self.text_value:set_to(self._text_function(value)) + self.text_value:set_text(self._text_function(value)) gui.set_alpha(self.selected, 1) gui.animate(self.selected, "color.w", 0, gui.EASING_INSINE, 0.16) diff --git a/example/components/properties_panel/properties_panel.gui b/example/components/properties_panel/properties_panel.gui index 49cc600..449fdaa 100644 --- a/example/components/properties_panel/properties_panel.gui +++ b/example/components/properties_panel/properties_panel.gui @@ -1,1791 +1,330 @@ -script: "" fonts { name: "text_regular" font: "/example/assets/fonts/text_regular.font" } textures { - name: "druid" - texture: "/example/assets/druid.atlas" -} -background_color { - x: 0.0 - y: 0.0 - z: 0.0 - w: 0.0 + name: "druid_example" + texture: "/example/assets/druid_example.atlas" } nodes { - position { - x: 0.0 - y: 0.0 - z: 0.0 - w: 1.0 - } - rotation { - x: 0.0 - y: 0.0 - z: 0.0 - w: 1.0 - } - scale { - x: 1.0 - y: 1.0 - z: 1.0 - w: 1.0 - } size { x: 440.0 y: 350.0 - z: 0.0 - w: 1.0 } color { x: 0.173 y: 0.184 z: 0.204 - w: 1.0 } type: TYPE_BOX - blend_mode: BLEND_MODE_ALPHA - texture: "druid/pixel" + texture: "druid_example/pixel" id: "root" - xanchor: XANCHOR_NONE - yanchor: YANCHOR_NONE - pivot: PIVOT_CENTER adjust_mode: ADJUST_MODE_STRETCH layer: "druid" inherit_alpha: true - slice9 { - x: 0.0 - y: 0.0 - z: 0.0 - w: 0.0 - } - clipping_mode: CLIPPING_MODE_NONE - clipping_visible: true - clipping_inverted: false - alpha: 1.0 - template_node_child: false - size_mode: SIZE_MODE_MANUAL - custom_type: 0 - enabled: true - visible: true - material: "" } nodes { position { x: -210.0 y: 165.0 - z: 0.0 - w: 1.0 - } - rotation { - x: 0.0 - y: 0.0 - z: 0.0 - w: 1.0 } scale { x: 0.9 y: 0.9 - z: 1.0 - w: 1.0 } size { x: 245.0 y: 50.0 - z: 0.0 - w: 1.0 } color { x: 0.463 y: 0.475 z: 0.49 - w: 1.0 } type: TYPE_TEXT - blend_mode: BLEND_MODE_ALPHA text: "Properties" font: "text_regular" id: "text_header" - xanchor: XANCHOR_NONE - yanchor: YANCHOR_NONE pivot: PIVOT_NW outline { x: 1.0 y: 1.0 z: 1.0 - w: 1.0 } shadow { x: 1.0 y: 1.0 z: 1.0 - w: 1.0 } - adjust_mode: ADJUST_MODE_FIT - line_break: false parent: "root" layer: "text_regular" inherit_alpha: true - alpha: 1.0 outline_alpha: 0.0 shadow_alpha: 0.0 - template_node_child: false - text_leading: 1.0 - text_tracking: 0.0 - custom_type: 0 - enabled: true - visible: true - material: "" } nodes { position { x: -200.0 y: 115.0 - z: 0.0 - w: 1.0 - } - rotation { - x: 0.0 - y: 0.0 - z: 0.0 - w: 1.0 - } - scale { - x: 1.0 - y: 1.0 - z: 1.0 - w: 1.0 } size { x: 400.0 y: 290.0 - z: 0.0 - w: 1.0 - } - color { - x: 1.0 - y: 1.0 - z: 1.0 - w: 1.0 } type: TYPE_BOX - blend_mode: BLEND_MODE_ALPHA - texture: "druid/empty" + texture: "druid_example/empty" id: "scroll_view" xanchor: XANCHOR_LEFT - yanchor: YANCHOR_NONE pivot: PIVOT_NW adjust_mode: ADJUST_MODE_STRETCH parent: "root" layer: "druid" inherit_alpha: true - slice9 { - x: 0.0 - y: 0.0 - z: 0.0 - w: 0.0 - } clipping_mode: CLIPPING_MODE_STENCIL - clipping_visible: true - clipping_inverted: false - alpha: 1.0 - template_node_child: false - size_mode: SIZE_MODE_MANUAL - custom_type: 0 - enabled: true - visible: true - material: "" } nodes { - position { - x: 0.0 - y: 0.0 - z: 0.0 - w: 1.0 - } - rotation { - x: 0.0 - y: 0.0 - z: 0.0 - w: 1.0 - } - scale { - x: 1.0 - y: 1.0 - z: 1.0 - w: 1.0 - } size { x: 400.0 y: 290.0 - z: 0.0 - w: 1.0 - } - color { - x: 1.0 - y: 1.0 - z: 1.0 - w: 1.0 } type: TYPE_BOX - blend_mode: BLEND_MODE_ALPHA - texture: "druid/empty" + texture: "druid_example/empty" id: "scroll_content" - xanchor: XANCHOR_NONE - yanchor: YANCHOR_NONE pivot: PIVOT_NW adjust_mode: ADJUST_MODE_STRETCH parent: "scroll_view" layer: "druid" inherit_alpha: true - slice9 { - x: 0.0 - y: 0.0 - z: 0.0 - w: 0.0 - } - clipping_mode: CLIPPING_MODE_NONE - clipping_visible: true - clipping_inverted: false - alpha: 1.0 - template_node_child: false - size_mode: SIZE_MODE_MANUAL - custom_type: 0 - enabled: true visible: false - material: "" } nodes { position { - x: 0.0 y: -35.0 - z: 0.0 - w: 1.0 - } - rotation { - x: 0.0 - y: 0.0 - z: 0.0 - w: 1.0 - } - scale { - x: 1.0 - y: 1.0 - z: 1.0 - w: 1.0 } size { x: 400.0 y: 50.0 - z: 0.0 - w: 1.0 - } - color { - x: 1.0 - y: 1.0 - z: 1.0 - w: 1.0 } type: TYPE_BOX - blend_mode: BLEND_MODE_ALPHA - texture: "" id: "item_size" - xanchor: XANCHOR_NONE - yanchor: YANCHOR_NONE pivot: PIVOT_NW - adjust_mode: ADJUST_MODE_FIT parent: "scroll_content" - layer: "" inherit_alpha: true - slice9 { - x: 0.0 - y: 0.0 - z: 0.0 - w: 0.0 - } - clipping_mode: CLIPPING_MODE_NONE - clipping_visible: true - clipping_inverted: false - alpha: 1.0 - template_node_child: false - size_mode: SIZE_MODE_MANUAL - custom_type: 0 - enabled: true visible: false - material: "" } nodes { position { - x: 0.0 y: 175.0 - z: 0.0 - w: 1.0 - } - rotation { - x: 0.0 - y: 0.0 - z: 0.0 - w: 1.0 - } - scale { - x: 1.0 - y: 1.0 - z: 1.0 - w: 1.0 } size { x: 440.0 y: 4.0 - z: 0.0 - w: 1.0 } color { x: 0.129 y: 0.141 z: 0.157 - w: 1.0 } type: TYPE_BOX - blend_mode: BLEND_MODE_ALPHA - texture: "druid/pixel" + texture: "druid_example/pixel" id: "separator" - xanchor: XANCHOR_NONE - yanchor: YANCHOR_NONE pivot: PIVOT_N - adjust_mode: ADJUST_MODE_FIT parent: "root" layer: "druid" inherit_alpha: true - slice9 { - x: 0.0 - y: 0.0 - z: 0.0 - w: 0.0 - } - clipping_mode: CLIPPING_MODE_NONE - clipping_visible: true - clipping_inverted: false - alpha: 1.0 - template_node_child: false - size_mode: SIZE_MODE_MANUAL - custom_type: 0 - enabled: true - visible: true - material: "" } nodes { position { x: -200.0 y: 100.0 - z: 0.0 - w: 1.0 - } - rotation { - x: 0.0 - y: 0.0 - z: 0.0 - w: 1.0 - } - scale { - x: 1.0 - y: 1.0 - z: 1.0 - w: 1.0 - } - size { - x: 200.0 - y: 100.0 - z: 0.0 - w: 1.0 - } - color { - x: 1.0 - y: 1.0 - z: 1.0 - w: 1.0 } type: TYPE_BOX - blend_mode: BLEND_MODE_ALPHA - texture: "druid/empty" + texture: "druid_example/empty" id: "propeties" - xanchor: XANCHOR_NONE - yanchor: YANCHOR_NONE - pivot: PIVOT_CENTER - adjust_mode: ADJUST_MODE_FIT parent: "root" - layer: "" inherit_alpha: true - slice9 { - x: 0.0 - y: 0.0 - z: 0.0 - w: 0.0 - } - clipping_mode: CLIPPING_MODE_NONE - clipping_visible: true - clipping_inverted: false - alpha: 1.0 - template_node_child: false size_mode: SIZE_MODE_AUTO - custom_type: 0 - enabled: true visible: false - material: "" } nodes { - position { - x: 0.0 - y: 0.0 - z: 0.0 - w: 1.0 - } - rotation { - x: 0.0 - y: 0.0 - z: 0.0 - w: 1.0 - } - scale { - x: 1.0 - y: 1.0 - z: 1.0 - w: 1.0 - } - size { - x: 200.0 - y: 100.0 - z: 0.0 - w: 1.0 - } - color { - x: 1.0 - y: 1.0 - z: 1.0 - w: 1.0 - } type: TYPE_TEMPLATE id: "property_slider" parent: "propeties" - layer: "" inherit_alpha: true - alpha: 1.0 template: "/example/components/properties_panel/properties/property_slider.gui" - template_node_child: false - custom_type: 0 - enabled: true } nodes { - position { - x: 0.0 - y: 0.0 - z: 0.0 - w: 1.0 - } - rotation { - x: 0.0 - y: 0.0 - z: 0.0 - w: 1.0 - } - scale { - x: 1.0 - y: 1.0 - z: 1.0 - w: 1.0 - } - size { - x: 400.0 - y: 40.0 - z: 0.0 - w: 1.0 - } - color { - x: 1.0 - y: 1.0 - z: 1.0 - w: 1.0 - } type: TYPE_BOX - blend_mode: BLEND_MODE_ALPHA - texture: "druid/empty" id: "property_slider/root" - xanchor: XANCHOR_NONE - yanchor: YANCHOR_NONE - pivot: PIVOT_NW - adjust_mode: ADJUST_MODE_STRETCH parent: "property_slider" - layer: "" - inherit_alpha: true - slice9 { - x: 0.0 - y: 0.0 - z: 0.0 - w: 0.0 - } - clipping_mode: CLIPPING_MODE_NONE - clipping_visible: true - clipping_inverted: false - alpha: 1.0 template_node_child: true - size_mode: SIZE_MODE_MANUAL - custom_type: 0 - enabled: true - visible: false - material: "" } nodes { - position { - x: 0.0 - y: -20.0 - z: 0.0 - w: 1.0 - } - rotation { - x: 0.0 - y: 0.0 - z: 0.0 - w: 1.0 - } - scale { - x: 0.65 - y: 0.65 - z: 1.0 - w: 1.0 - } - size { - x: 200.0 - y: 40.0 - z: 0.0 - w: 1.0 - } - color { - x: 0.463 - y: 0.475 - z: 0.49 - w: 1.0 - } type: TYPE_TEXT - blend_mode: BLEND_MODE_ALPHA - text: "Checkbox" - font: "text_bold" id: "property_slider/text_name" - xanchor: XANCHOR_NONE - yanchor: YANCHOR_NONE - pivot: PIVOT_W - outline { - x: 1.0 - y: 1.0 - z: 1.0 - w: 1.0 - } - shadow { - x: 1.0 - y: 1.0 - z: 1.0 - w: 1.0 - } - adjust_mode: ADJUST_MODE_FIT - line_break: false parent: "property_slider/root" - layer: "" - inherit_alpha: true - alpha: 1.0 - outline_alpha: 0.0 - shadow_alpha: 0.0 template_node_child: true - text_leading: 1.0 - text_tracking: 0.0 - custom_type: 0 - enabled: true - visible: true - material: "" } nodes { - position { - x: 400.0 - y: -20.0 - z: 0.0 - w: 1.0 - } - rotation { - x: 0.0 - y: 0.0 - z: 0.0 - w: 1.0 - } - scale { - x: 1.0 - y: 1.0 - z: 1.0 - w: 1.0 - } - size { - x: 200.0 - y: 100.0 - z: 0.0 - w: 1.0 - } - color { - x: 1.0 - y: 1.0 - z: 1.0 - w: 1.0 - } type: TYPE_BOX - blend_mode: BLEND_MODE_ALPHA - texture: "druid/empty" id: "property_slider/E_Anchor" - xanchor: XANCHOR_NONE - yanchor: YANCHOR_NONE - pivot: PIVOT_E - adjust_mode: ADJUST_MODE_STRETCH parent: "property_slider/root" - layer: "" - inherit_alpha: true - slice9 { - x: 0.0 - y: 0.0 - z: 0.0 - w: 0.0 - } - clipping_mode: CLIPPING_MODE_NONE - clipping_visible: true - clipping_inverted: false - alpha: 1.0 template_node_child: true - size_mode: SIZE_MODE_AUTO - custom_type: 0 - enabled: true - visible: false - material: "" } nodes { - position { - x: -20.0 - y: 0.0 - z: 0.0 - w: 1.0 - } - rotation { - x: 0.0 - y: 0.0 - z: 0.0 - w: 1.0 - } - scale { - x: 1.0 - y: 1.0 - z: 1.0 - w: 1.0 - } - size { - x: 60.0 - y: 40.0 - z: 0.0 - w: 1.0 - } - color { - x: 0.463 - y: 0.475 - z: 0.49 - w: 1.0 - } type: TYPE_BOX - blend_mode: BLEND_MODE_ALPHA - texture: "druid/rect_round2_width1" id: "property_slider/button" - xanchor: XANCHOR_NONE - yanchor: YANCHOR_NONE - pivot: PIVOT_E - adjust_mode: ADJUST_MODE_FIT parent: "property_slider/E_Anchor" - layer: "" - inherit_alpha: true - slice9 { - x: 4.0 - y: 4.0 - z: 4.0 - w: 4.0 - } - clipping_mode: CLIPPING_MODE_NONE - clipping_visible: true - clipping_inverted: false - alpha: 1.0 template_node_child: true - size_mode: SIZE_MODE_MANUAL - custom_type: 0 - enabled: true - visible: true - material: "" } nodes { - position { - x: 0.0 - y: -20.0 - z: 0.0 - w: 1.0 - } - rotation { - x: 0.0 - y: 0.0 - z: 0.0 - w: 1.0 - } - scale { - x: 1.0 - y: 1.0 - z: 1.0 - w: 1.0 - } - size { - x: 60.0 - y: 4.0 - z: 0.0 - w: 1.0 - } - color { - x: 0.894 - y: 0.506 - z: 0.333 - w: 1.0 - } type: TYPE_BOX - blend_mode: BLEND_MODE_ALPHA - texture: "druid/pixel" id: "property_slider/selected" - xanchor: XANCHOR_NONE - yanchor: YANCHOR_NONE - pivot: PIVOT_SE - adjust_mode: ADJUST_MODE_STRETCH parent: "property_slider/button" - layer: "" - inherit_alpha: true - slice9 { - x: 0.0 - y: 0.0 - z: 0.0 - w: 0.0 - } - clipping_mode: CLIPPING_MODE_NONE - clipping_visible: true - clipping_inverted: false - alpha: 1.0 template_node_child: true - size_mode: SIZE_MODE_MANUAL - custom_type: 0 - enabled: true - visible: true - material: "" } nodes { - position { - x: -30.0 - y: 0.0 - z: 0.0 - w: 1.0 - } - rotation { - x: 0.0 - y: 0.0 - z: 0.0 - w: 1.0 - } - scale { - x: 0.55 - y: 0.55 - z: 1.0 - w: 1.0 - } - size { - x: 100.0 - y: 40.0 - z: 0.0 - w: 1.0 - } - color { - x: 0.722 - y: 0.741 - z: 0.761 - w: 1.0 - } type: TYPE_TEXT - blend_mode: BLEND_MODE_ALPHA - text: "25 %" - font: "text_bold" id: "property_slider/text_value" - xanchor: XANCHOR_NONE - yanchor: YANCHOR_NONE - pivot: PIVOT_CENTER - outline { - x: 1.0 - y: 1.0 - z: 1.0 - w: 1.0 - } - shadow { - x: 1.0 - y: 1.0 - z: 1.0 - w: 1.0 - } - adjust_mode: ADJUST_MODE_FIT - line_break: false parent: "property_slider/button" - layer: "" - inherit_alpha: true - alpha: 1.0 - outline_alpha: 0.0 - shadow_alpha: 0.0 template_node_child: true - text_leading: 1.0 - text_tracking: 0.0 - custom_type: 0 - enabled: true - visible: true - material: "" } nodes { - position { - x: 234.0 - y: -20.0 - z: 0.0 - w: 1.0 - } - rotation { - x: 0.0 - y: 0.0 - z: 0.0 - w: 1.0 - } - scale { - x: 1.0 - y: 1.0 - z: 1.0 - w: 1.0 - } - size { - x: 160.0 - y: 40.0 - z: 0.0 - w: 1.0 - } - color { - x: 0.129 - y: 0.141 - z: 0.157 - w: 1.0 - } type: TYPE_BOX - blend_mode: BLEND_MODE_ALPHA - texture: "druid/empty" id: "property_slider/slider" - xanchor: XANCHOR_NONE - yanchor: YANCHOR_NONE - pivot: PIVOT_CENTER - adjust_mode: ADJUST_MODE_FIT parent: "property_slider/root" - layer: "" - inherit_alpha: true - slice9 { - x: 0.0 - y: 0.0 - z: 0.0 - w: 0.0 - } - clipping_mode: CLIPPING_MODE_NONE - clipping_visible: true - clipping_inverted: false - alpha: 1.0 template_node_child: true - size_mode: SIZE_MODE_MANUAL - custom_type: 0 - enabled: true - visible: true - material: "" } nodes { - position { - x: 0.0 - y: 0.0 - z: 0.0 - w: 1.0 - } - rotation { - x: 0.0 - y: 0.0 - z: 0.0 - w: 1.0 - } - scale { - x: 1.0 - y: 1.0 - z: 1.0 - w: 1.0 - } - size { - x: 160.0 - y: 8.0 - z: 0.0 - w: 1.0 - } - color { - x: 0.129 - y: 0.141 - z: 0.157 - w: 1.0 - } type: TYPE_BOX - blend_mode: BLEND_MODE_ALPHA - texture: "druid/ui_circle_8" id: "property_slider/slider_back" - xanchor: XANCHOR_NONE - yanchor: YANCHOR_NONE - pivot: PIVOT_CENTER - adjust_mode: ADJUST_MODE_FIT parent: "property_slider/slider" - layer: "" - inherit_alpha: true - slice9 { - x: 4.0 - y: 4.0 - z: 4.0 - w: 4.0 - } - clipping_mode: CLIPPING_MODE_NONE - clipping_visible: true - clipping_inverted: false - alpha: 1.0 template_node_child: true - size_mode: SIZE_MODE_MANUAL - custom_type: 0 - enabled: true - visible: true - material: "" } nodes { - position { - x: -68.0 - y: 0.0 - z: 0.0 - w: 1.0 - } - rotation { - x: 0.0 - y: 0.0 - z: 0.0 - w: 1.0 - } - scale { - x: 1.0 - y: 1.0 - z: 1.0 - w: 1.0 - } - size { - x: 24.0 - y: 24.0 - z: 0.0 - w: 1.0 - } - color { - x: 0.722 - y: 0.741 - z: 0.761 - w: 1.0 - } type: TYPE_BOX - blend_mode: BLEND_MODE_ALPHA - texture: "druid/ui_circle_8" id: "property_slider/slider_pin" - xanchor: XANCHOR_NONE - yanchor: YANCHOR_NONE - pivot: PIVOT_CENTER - adjust_mode: ADJUST_MODE_FIT parent: "property_slider/slider" - layer: "" - inherit_alpha: true - slice9 { - x: 4.0 - y: 4.0 - z: 4.0 - w: 4.0 - } - clipping_mode: CLIPPING_MODE_NONE - clipping_visible: true - clipping_inverted: false - alpha: 1.0 template_node_child: true - size_mode: SIZE_MODE_MANUAL - custom_type: 0 - enabled: true - visible: true - material: "" } nodes { position { - x: 0.0 y: -50.0 - z: 0.0 - w: 1.0 - } - rotation { - x: 0.0 - y: 0.0 - z: 0.0 - w: 1.0 - } - scale { - x: 1.0 - y: 1.0 - z: 1.0 - w: 1.0 - } - size { - x: 200.0 - y: 100.0 - z: 0.0 - w: 1.0 - } - color { - x: 1.0 - y: 1.0 - z: 1.0 - w: 1.0 } type: TYPE_TEMPLATE id: "property_checkbox" parent: "propeties" - layer: "" inherit_alpha: true - alpha: 1.0 template: "/example/components/properties_panel/properties/property_checkbox.gui" - template_node_child: false - custom_type: 0 - enabled: true } nodes { - position { - x: 0.0 - y: 0.0 - z: 0.0 - w: 1.0 - } - rotation { - x: 0.0 - y: 0.0 - z: 0.0 - w: 1.0 - } - scale { - x: 1.0 - y: 1.0 - z: 1.0 - w: 1.0 - } - size { - x: 400.0 - y: 40.0 - z: 0.0 - w: 1.0 - } - color { - x: 1.0 - y: 1.0 - z: 1.0 - w: 1.0 - } type: TYPE_BOX - blend_mode: BLEND_MODE_ALPHA - texture: "druid/empty" id: "property_checkbox/root" - xanchor: XANCHOR_NONE - yanchor: YANCHOR_NONE - pivot: PIVOT_NW - adjust_mode: ADJUST_MODE_STRETCH parent: "property_checkbox" - layer: "" - inherit_alpha: true - slice9 { - x: 0.0 - y: 0.0 - z: 0.0 - w: 0.0 - } - clipping_mode: CLIPPING_MODE_NONE - clipping_visible: true - clipping_inverted: false - alpha: 1.0 template_node_child: true - size_mode: SIZE_MODE_MANUAL - custom_type: 0 - enabled: true - visible: false - material: "" } nodes { - position { - x: 0.0 - y: -20.0 - z: 0.0 - w: 1.0 - } - rotation { - x: 0.0 - y: 0.0 - z: 0.0 - w: 1.0 - } - scale { - x: 0.65 - y: 0.65 - z: 1.0 - w: 1.0 - } - size { - x: 200.0 - y: 40.0 - z: 0.0 - w: 1.0 - } - color { - x: 0.463 - y: 0.475 - z: 0.49 - w: 1.0 - } type: TYPE_TEXT - blend_mode: BLEND_MODE_ALPHA - text: "Checkbox" - font: "text_bold" id: "property_checkbox/text_name" - xanchor: XANCHOR_NONE - yanchor: YANCHOR_NONE - pivot: PIVOT_W - outline { - x: 1.0 - y: 1.0 - z: 1.0 - w: 1.0 - } - shadow { - x: 1.0 - y: 1.0 - z: 1.0 - w: 1.0 - } - adjust_mode: ADJUST_MODE_FIT - line_break: false parent: "property_checkbox/root" - layer: "" - inherit_alpha: true - alpha: 1.0 - outline_alpha: 0.0 - shadow_alpha: 0.0 template_node_child: true - text_leading: 1.0 - text_tracking: 0.0 - custom_type: 0 - enabled: true - visible: true - material: "" } nodes { - position { - x: 174.0 - y: -20.0 - z: 0.0 - w: 1.0 - } - rotation { - x: 0.0 - y: 0.0 - z: 0.0 - w: 1.0 - } - scale { - x: 1.0 - y: 1.0 - z: 1.0 - w: 1.0 - } - size { - x: 40.0 - y: 40.0 - z: 0.0 - w: 1.0 - } - color { - x: 0.463 - y: 0.475 - z: 0.49 - w: 1.0 - } type: TYPE_BOX - blend_mode: BLEND_MODE_ALPHA - texture: "druid/rect_round2_width1" id: "property_checkbox/button" - xanchor: XANCHOR_NONE - yanchor: YANCHOR_NONE - pivot: PIVOT_CENTER - adjust_mode: ADJUST_MODE_FIT parent: "property_checkbox/root" - layer: "" - inherit_alpha: true - slice9 { - x: 4.0 - y: 4.0 - z: 4.0 - w: 4.0 - } - clipping_mode: CLIPPING_MODE_NONE - clipping_visible: true - clipping_inverted: false - alpha: 1.0 template_node_child: true - size_mode: SIZE_MODE_MANUAL - custom_type: 0 - enabled: true - visible: true - material: "" } nodes { - position { - x: 0.0 - y: 0.0 - z: 0.0 - w: 1.0 - } - rotation { - x: 0.0 - y: 0.0 - z: 0.0 - w: 1.0 - } - scale { - x: 1.0 - y: 1.0 - z: 1.0 - w: 1.0 - } - size { - x: 200.0 - y: 100.0 - z: 0.0 - w: 1.0 - } - color { - x: 0.722 - y: 0.741 - z: 0.761 - w: 1.0 - } type: TYPE_BOX - blend_mode: BLEND_MODE_ALPHA - texture: "druid/icon_check" id: "property_checkbox/icon" - xanchor: XANCHOR_NONE - yanchor: YANCHOR_NONE - pivot: PIVOT_CENTER - adjust_mode: ADJUST_MODE_FIT parent: "property_checkbox/button" - layer: "" - inherit_alpha: true - slice9 { - x: 0.0 - y: 0.0 - z: 0.0 - w: 0.0 - } - clipping_mode: CLIPPING_MODE_NONE - clipping_visible: true - clipping_inverted: false - alpha: 1.0 template_node_child: true - size_mode: SIZE_MODE_AUTO - custom_type: 0 - enabled: true - visible: true - material: "" } nodes { - position { - x: 0.0 - y: -20.0 - z: 0.0 - w: 1.0 - } - rotation { - x: 0.0 - y: 0.0 - z: 0.0 - w: 1.0 - } - scale { - x: 1.0 - y: 1.0 - z: 1.0 - w: 1.0 - } - size { - x: 40.0 - y: 4.0 - z: 0.0 - w: 1.0 - } - color { - x: 0.894 - y: 0.506 - z: 0.333 - w: 1.0 - } type: TYPE_BOX - blend_mode: BLEND_MODE_ALPHA - texture: "druid/pixel" id: "property_checkbox/selected" - xanchor: XANCHOR_NONE - yanchor: YANCHOR_NONE - pivot: PIVOT_S - adjust_mode: ADJUST_MODE_STRETCH parent: "property_checkbox/button" - layer: "" - inherit_alpha: true - slice9 { - x: 0.0 - y: 0.0 - z: 0.0 - w: 0.0 - } - clipping_mode: CLIPPING_MODE_NONE - clipping_visible: true - clipping_inverted: false - alpha: 1.0 template_node_child: true - size_mode: SIZE_MODE_MANUAL - custom_type: 0 - enabled: true - visible: true - material: "" } nodes { position { - x: 0.0 y: -100.0 - z: 0.0 - w: 1.0 - } - rotation { - x: 0.0 - y: 0.0 - z: 0.0 - w: 1.0 - } - scale { - x: 1.0 - y: 1.0 - z: 1.0 - w: 1.0 - } - size { - x: 200.0 - y: 100.0 - z: 0.0 - w: 1.0 - } - color { - x: 1.0 - y: 1.0 - z: 1.0 - w: 1.0 } type: TYPE_TEMPLATE id: "property_button" parent: "propeties" - layer: "" inherit_alpha: true - alpha: 1.0 template: "/example/components/properties_panel/properties/property_button.gui" - template_node_child: false - custom_type: 0 - enabled: true } nodes { - position { - x: 0.0 - y: 0.0 - z: 0.0 - w: 1.0 - } - rotation { - x: 0.0 - y: 0.0 - z: 0.0 - w: 1.0 - } - scale { - x: 1.0 - y: 1.0 - z: 1.0 - w: 1.0 - } - size { - x: 400.0 - y: 40.0 - z: 0.0 - w: 1.0 - } - color { - x: 1.0 - y: 1.0 - z: 1.0 - w: 1.0 - } type: TYPE_BOX - blend_mode: BLEND_MODE_ALPHA - texture: "druid/empty" id: "property_button/root" - xanchor: XANCHOR_NONE - yanchor: YANCHOR_NONE - pivot: PIVOT_NW - adjust_mode: ADJUST_MODE_STRETCH parent: "property_button" - layer: "" - inherit_alpha: true - slice9 { - x: 0.0 - y: 0.0 - z: 0.0 - w: 0.0 - } - clipping_mode: CLIPPING_MODE_NONE - clipping_visible: true - clipping_inverted: false - alpha: 1.0 template_node_child: true - size_mode: SIZE_MODE_MANUAL - custom_type: 0 - enabled: true - visible: false - material: "" } nodes { - position { - x: 0.0 - y: -20.0 - z: 0.0 - w: 1.0 - } - rotation { - x: 0.0 - y: 0.0 - z: 0.0 - w: 1.0 - } - scale { - x: 0.65 - y: 0.65 - z: 1.0 - w: 1.0 - } - size { - x: 200.0 - y: 40.0 - z: 0.0 - w: 1.0 - } - color { - x: 0.463 - y: 0.475 - z: 0.49 - w: 1.0 - } type: TYPE_TEXT - blend_mode: BLEND_MODE_ALPHA - text: "Button" - font: "text_bold" id: "property_button/text_name" - xanchor: XANCHOR_NONE - yanchor: YANCHOR_NONE - pivot: PIVOT_W - outline { - x: 1.0 - y: 1.0 - z: 1.0 - w: 1.0 - } - shadow { - x: 1.0 - y: 1.0 - z: 1.0 - w: 1.0 - } - adjust_mode: ADJUST_MODE_FIT - line_break: false parent: "property_button/root" - layer: "" - inherit_alpha: true - alpha: 1.0 - outline_alpha: 0.0 - shadow_alpha: 0.0 template_node_child: true - text_leading: 1.0 - text_tracking: 0.0 - custom_type: 0 - enabled: true - visible: true - material: "" } nodes { - position { - x: 267.0 - y: -20.0 - z: 0.0 - w: 1.0 - } - rotation { - x: 0.0 - y: 0.0 - z: 0.0 - w: 1.0 - } - scale { - x: 1.0 - y: 1.0 - z: 1.0 - w: 1.0 - } - size { - x: 226.0 - y: 40.0 - z: 0.0 - w: 1.0 - } - color { - x: 0.463 - y: 0.475 - z: 0.49 - w: 1.0 - } type: TYPE_BOX - blend_mode: BLEND_MODE_ALPHA - texture: "druid/rect_round2_width1" id: "property_button/button" - xanchor: XANCHOR_NONE - yanchor: YANCHOR_NONE - pivot: PIVOT_CENTER - adjust_mode: ADJUST_MODE_FIT parent: "property_button/root" - layer: "" - inherit_alpha: true - slice9 { - x: 4.0 - y: 4.0 - z: 4.0 - w: 4.0 - } - clipping_mode: CLIPPING_MODE_NONE - clipping_visible: true - clipping_inverted: false - alpha: 1.0 template_node_child: true - size_mode: SIZE_MODE_MANUAL - custom_type: 0 - enabled: true - visible: true - material: "" } nodes { - position { - x: 0.0 - y: -20.0 - z: 0.0 - w: 1.0 - } - rotation { - x: 0.0 - y: 0.0 - z: 0.0 - w: 1.0 - } - scale { - x: 1.0 - y: 1.0 - z: 1.0 - w: 1.0 - } - size { - x: 226.0 - y: 4.0 - z: 0.0 - w: 1.0 - } - color { - x: 0.894 - y: 0.506 - z: 0.333 - w: 1.0 - } type: TYPE_BOX - blend_mode: BLEND_MODE_ALPHA - texture: "druid/pixel" id: "property_button/selected" - xanchor: XANCHOR_NONE - yanchor: YANCHOR_NONE - pivot: PIVOT_S - adjust_mode: ADJUST_MODE_STRETCH parent: "property_button/button" - layer: "" - inherit_alpha: true - slice9 { - x: 0.0 - y: 0.0 - z: 0.0 - w: 0.0 - } - clipping_mode: CLIPPING_MODE_NONE - clipping_visible: true - clipping_inverted: false - alpha: 1.0 template_node_child: true - size_mode: SIZE_MODE_MANUAL - custom_type: 0 - enabled: true - visible: true - material: "" } nodes { - position { - x: 0.0 - y: 0.0 - z: 0.0 - w: 1.0 - } - rotation { - x: 0.0 - y: 0.0 - z: 0.0 - w: 1.0 - } - scale { - x: 0.65 - y: 0.65 - z: 1.0 - w: 1.0 - } - size { - x: 250.0 - y: 30.0 - z: 0.0 - w: 1.0 - } - color { - x: 0.722 - y: 0.741 - z: 0.761 - w: 1.0 - } type: TYPE_TEXT - blend_mode: BLEND_MODE_ALPHA - text: "Button" - font: "text_bold" id: "property_button/text_button" - xanchor: XANCHOR_NONE - yanchor: YANCHOR_NONE - pivot: PIVOT_CENTER - outline { - x: 1.0 - y: 1.0 - z: 1.0 - w: 1.0 - } - shadow { - x: 1.0 - y: 1.0 - z: 1.0 - w: 1.0 - } - adjust_mode: ADJUST_MODE_FIT - line_break: false parent: "property_button/button" - layer: "" - inherit_alpha: true - alpha: 1.0 - outline_alpha: 0.0 - shadow_alpha: 0.0 template_node_child: true - text_leading: 1.0 - text_tracking: 0.0 - custom_type: 0 - enabled: true - visible: true - material: "" } nodes { position { x: -200.0 y: 115.0 - z: 0.0 - w: 1.0 - } - rotation { - x: 0.0 - y: 0.0 - z: 0.0 - w: 1.0 } scale { x: 0.7 y: 0.7 - z: 1.0 - w: 1.0 } size { x: 570.0 y: 50.0 - z: 0.0 - w: 1.0 } color { x: 0.31 y: 0.318 z: 0.322 - w: 1.0 } type: TYPE_TEXT - blend_mode: BLEND_MODE_ALPHA text: "No properties for this example" font: "text_regular" id: "text_no_properties" - xanchor: XANCHOR_NONE - yanchor: YANCHOR_NONE pivot: PIVOT_NW outline { x: 1.0 y: 1.0 z: 1.0 - w: 1.0 } shadow { x: 1.0 y: 1.0 z: 1.0 - w: 1.0 } - adjust_mode: ADJUST_MODE_FIT - line_break: false parent: "root" layer: "text_regular" inherit_alpha: true - alpha: 1.0 outline_alpha: 0.0 shadow_alpha: 0.0 - template_node_child: false - text_leading: 1.0 - text_tracking: 0.0 - custom_type: 0 - enabled: true - visible: true - material: "" } layers { name: "druid" @@ -1795,4 +334,3 @@ layers { } material: "/builtins/materials/gui.material" adjust_reference: ADJUST_REFERENCE_PARENT -max_nodes: 512 diff --git a/example/components/properties_panel/properties_panel.lua b/example/components/properties_panel/properties_panel.lua index 60a9f78..f2ac53f 100644 --- a/example/components/properties_panel/properties_panel.lua +++ b/example/components/properties_panel/properties_panel.lua @@ -1,16 +1,14 @@ local component = require("druid.component") -local container = require("example.components.container.container") -local lang_text = require("druid.extended.lang_text") local property_checkbox = require("example.components.properties_panel.properties.property_checkbox") local property_slider = require("example.components.properties_panel.properties.property_slider") local property_button = require("example.components.properties_panel.properties.property_button") ----@class properties_panel: druid.base_component +---@class properties_panel: druid.component ---@field root druid.container ---@field text_no_properties druid.lang_text ---@field scroll druid.scroll ----@field druid druid_instance +---@field druid druid.instance local M = component.create("properties_panel") ---@param template string @@ -18,7 +16,7 @@ local M = component.create("properties_panel") function M:init(template, nodes) self.druid = self:get_druid(template, nodes) - self.root = self.druid:new(container, "root") --[[@as druid.container]] + self.root = self.druid:new_container("root") --[[@as druid.container]] self.root:add_container("text_header") self.root:add_container("separator") --self.root:add_container("scroll_view", nil, function() @@ -27,11 +25,11 @@ function M:init(template, nodes) self.properties = {} - self.druid:new(lang_text, "text_header", "ui_properties_panel") - self.text_no_properties = self.druid:new(lang_text, "text_no_properties", "ui_no_properties") --[[@as druid.lang_text]] + self.druid:new_lang_text("text_header", "ui_properties_panel") + self.text_no_properties = self.druid:new_lang_text("text_no_properties", "ui_no_properties") --[[@as druid.lang_text]] self.scroll = self.druid:new_scroll("scroll_view", "scroll_content") - self.grid = self.druid:new_static_grid("scroll_content", "item_size", 1) + self.grid = self.druid:new_grid("scroll_content", "item_size", 1) self.scroll:bind_grid(self.grid) self.property_checkbox_prefab = self:get_node("property_checkbox/root") @@ -66,8 +64,7 @@ end ---@param on_change_callback function ---@return property_checkbox function M:add_checkbox(text_id, initial_value, on_change_callback) - local nodes = gui.clone_tree(self.property_checkbox_prefab) - local instance = self.druid:new(property_checkbox, "property_checkbox", nodes) --[[@as property_checkbox]] + local instance = self.druid:new_widget(property_checkbox, "property_checkbox", self.property_checkbox_prefab) --[[@as property_checkbox]] instance.text_name:translate(text_id) instance:set_value(initial_value, true) instance.button.on_click:subscribe(function() @@ -88,8 +85,7 @@ end ---@param on_change_callback function ---@return property_slider function M:add_slider(text_id, initial_value, on_change_callback) - local nodes = gui.clone_tree(self.property_slider_prefab) - local instance = self.druid:new(property_slider, "property_slider", nodes) --[[@as property_slider]] + local instance = self.druid:new_widget(property_slider, "property_slider", self.property_slider_prefab) --[[@as property_slider]] instance.text_name:translate(text_id) instance:set_value(initial_value, true) @@ -109,8 +105,7 @@ end ---@param text_id string ---@param on_click_callback function function M:add_button(text_id, on_click_callback) - local nodes = gui.clone_tree(self.property_button_prefab) - local instance = self.druid:new(property_button, "property_button", nodes) --[[@as property_button]] + local instance = self.druid:new_widget(property_button, "property_button", self.property_button_prefab) --[[@as property_button]] instance.text_name:translate(text_id) gui.set_enabled(instance.root, true) diff --git a/example/druid.collection b/example/druid.collection index 5273ec0..009ffaa 100644 --- a/example/druid.collection +++ b/example/druid.collection @@ -5,35 +5,10 @@ embedded_instances { data: "components {\n" " id: \"druid\"\n" " component: \"/example/druid.gui\"\n" - " position {\n" - " x: 0.0\n" - " y: 0.0\n" - " z: 0.0\n" - " }\n" - " rotation {\n" - " x: 0.0\n" - " y: 0.0\n" - " z: 0.0\n" - " w: 1.0\n" - " }\n" - " property_decls {\n" - " }\n" + "}\n" + "components {\n" + " id: \"druid1\"\n" + " component: \"/druid/druid.script\"\n" "}\n" "" - position { - x: 0.0 - y: 0.0 - z: 0.0 - } - rotation { - x: 0.0 - y: 0.0 - z: 0.0 - w: 1.0 - } - scale3 { - x: 1.0 - y: 1.0 - z: 1.0 - } } diff --git a/example/druid.gui b/example/druid.gui index 4918bc8..35f0c2c 100644 --- a/example/druid.gui +++ b/example/druid.gui @@ -8,8 +8,8 @@ fonts { font: "/example/assets/fonts/text_regular.font" } textures { - name: "druid" - texture: "/example/assets/druid.atlas" + name: "druid_example" + texture: "/example/assets/druid_example.atlas" } textures { name: "druid_logo" @@ -39,7 +39,7 @@ nodes { y: 1080.0 } type: TYPE_BOX - texture: "druid/empty" + texture: "druid_example/empty" id: "container_left" pivot: PIVOT_W adjust_mode: ADJUST_MODE_STRETCH @@ -56,7 +56,7 @@ nodes { y: 170.0 } type: TYPE_BOX - texture: "druid/empty" + texture: "druid_example/empty" id: "container_logo" pivot: PIVOT_NW parent: "container_left" @@ -125,7 +125,7 @@ nodes { y: 910.0 } type: TYPE_BOX - texture: "druid/empty" + texture: "druid_example/empty" id: "container_examples" pivot: PIVOT_NW adjust_mode: ADJUST_MODE_STRETCH @@ -213,7 +213,7 @@ nodes { y: 1080.0 } type: TYPE_BOX - texture: "druid/empty" + texture: "druid_example/empty" id: "container_right" pivot: PIVOT_E adjust_mode: ADJUST_MODE_STRETCH @@ -230,7 +230,7 @@ nodes { y: 450.0 } type: TYPE_BOX - texture: "druid/empty" + texture: "druid_example/empty" id: "container_info" pivot: PIVOT_NE adjust_mode: ADJUST_MODE_STRETCH @@ -336,7 +336,7 @@ nodes { y: 630.0 } type: TYPE_BOX - texture: "druid/empty" + texture: "druid_example/empty" id: "container_group_settings_output" pivot: PIVOT_SE adjust_mode: ADJUST_MODE_STRETCH @@ -353,7 +353,7 @@ nodes { y: 350.0 } type: TYPE_BOX - texture: "druid/empty" + texture: "druid_example/empty" id: "container_settings" pivot: PIVOT_NE adjust_mode: ADJUST_MODE_STRETCH @@ -367,189 +367,189 @@ nodes { y: -175.0 } type: TYPE_TEMPLATE - id: "properties_panel" + id: "example_properties_panel" parent: "container_settings" inherit_alpha: true template: "/example/components/properties_panel/properties_panel.gui" } nodes { type: TYPE_BOX - id: "properties_panel/root" - parent: "properties_panel" + id: "example_properties_panel/root" + parent: "example_properties_panel" template_node_child: true } nodes { type: TYPE_TEXT - id: "properties_panel/text_header" - parent: "properties_panel/root" + id: "example_properties_panel/text_header" + parent: "example_properties_panel/root" template_node_child: true } nodes { type: TYPE_BOX - id: "properties_panel/scroll_view" - parent: "properties_panel/root" + id: "example_properties_panel/scroll_view" + parent: "example_properties_panel/root" template_node_child: true } nodes { type: TYPE_BOX - id: "properties_panel/scroll_content" - parent: "properties_panel/scroll_view" + id: "example_properties_panel/scroll_content" + parent: "example_properties_panel/scroll_view" template_node_child: true } nodes { type: TYPE_BOX - id: "properties_panel/item_size" - parent: "properties_panel/scroll_content" + id: "example_properties_panel/item_size" + parent: "example_properties_panel/scroll_content" template_node_child: true } nodes { type: TYPE_BOX - id: "properties_panel/separator" - parent: "properties_panel/root" + id: "example_properties_panel/separator" + parent: "example_properties_panel/root" template_node_child: true } nodes { type: TYPE_BOX - id: "properties_panel/propeties" - parent: "properties_panel/root" + id: "example_properties_panel/propeties" + parent: "example_properties_panel/root" template_node_child: true } nodes { type: TYPE_TEMPLATE - id: "properties_panel/property_slider" - parent: "properties_panel/propeties" + id: "example_properties_panel/property_slider" + parent: "example_properties_panel/propeties" template_node_child: true } nodes { type: TYPE_BOX - id: "properties_panel/property_slider/root" - parent: "properties_panel/property_slider" + id: "example_properties_panel/property_slider/root" + parent: "example_properties_panel/property_slider" template_node_child: true } nodes { type: TYPE_TEXT - id: "properties_panel/property_slider/text_name" - parent: "properties_panel/property_slider/root" + id: "example_properties_panel/property_slider/text_name" + parent: "example_properties_panel/property_slider/root" template_node_child: true } nodes { type: TYPE_BOX - id: "properties_panel/property_slider/E_Anchor" - parent: "properties_panel/property_slider/root" + id: "example_properties_panel/property_slider/E_Anchor" + parent: "example_properties_panel/property_slider/root" template_node_child: true } nodes { type: TYPE_BOX - id: "properties_panel/property_slider/button" - parent: "properties_panel/property_slider/E_Anchor" + id: "example_properties_panel/property_slider/button" + parent: "example_properties_panel/property_slider/E_Anchor" template_node_child: true } nodes { type: TYPE_BOX - id: "properties_panel/property_slider/selected" - parent: "properties_panel/property_slider/button" + id: "example_properties_panel/property_slider/selected" + parent: "example_properties_panel/property_slider/button" template_node_child: true } nodes { type: TYPE_TEXT - id: "properties_panel/property_slider/text_value" - parent: "properties_panel/property_slider/button" + id: "example_properties_panel/property_slider/text_value" + parent: "example_properties_panel/property_slider/button" template_node_child: true } nodes { type: TYPE_BOX - id: "properties_panel/property_slider/slider" - parent: "properties_panel/property_slider/root" + id: "example_properties_panel/property_slider/slider" + parent: "example_properties_panel/property_slider/root" template_node_child: true } nodes { type: TYPE_BOX - id: "properties_panel/property_slider/slider_back" - parent: "properties_panel/property_slider/slider" + id: "example_properties_panel/property_slider/slider_back" + parent: "example_properties_panel/property_slider/slider" template_node_child: true } nodes { type: TYPE_BOX - id: "properties_panel/property_slider/slider_pin" - parent: "properties_panel/property_slider/slider" + id: "example_properties_panel/property_slider/slider_pin" + parent: "example_properties_panel/property_slider/slider" template_node_child: true } nodes { type: TYPE_TEMPLATE - id: "properties_panel/property_checkbox" - parent: "properties_panel/propeties" + id: "example_properties_panel/property_checkbox" + parent: "example_properties_panel/propeties" template_node_child: true } nodes { type: TYPE_BOX - id: "properties_panel/property_checkbox/root" - parent: "properties_panel/property_checkbox" + id: "example_properties_panel/property_checkbox/root" + parent: "example_properties_panel/property_checkbox" template_node_child: true } nodes { type: TYPE_TEXT - id: "properties_panel/property_checkbox/text_name" - parent: "properties_panel/property_checkbox/root" + id: "example_properties_panel/property_checkbox/text_name" + parent: "example_properties_panel/property_checkbox/root" template_node_child: true } nodes { type: TYPE_BOX - id: "properties_panel/property_checkbox/button" - parent: "properties_panel/property_checkbox/root" + id: "example_properties_panel/property_checkbox/button" + parent: "example_properties_panel/property_checkbox/root" template_node_child: true } nodes { type: TYPE_BOX - id: "properties_panel/property_checkbox/icon" - parent: "properties_panel/property_checkbox/button" + id: "example_properties_panel/property_checkbox/icon" + parent: "example_properties_panel/property_checkbox/button" template_node_child: true } nodes { type: TYPE_BOX - id: "properties_panel/property_checkbox/selected" - parent: "properties_panel/property_checkbox/button" + id: "example_properties_panel/property_checkbox/selected" + parent: "example_properties_panel/property_checkbox/button" template_node_child: true } nodes { type: TYPE_TEMPLATE - id: "properties_panel/property_button" - parent: "properties_panel/propeties" + id: "example_properties_panel/property_button" + parent: "example_properties_panel/propeties" template_node_child: true } nodes { type: TYPE_BOX - id: "properties_panel/property_button/root" - parent: "properties_panel/property_button" + id: "example_properties_panel/property_button/root" + parent: "example_properties_panel/property_button" template_node_child: true } nodes { type: TYPE_TEXT - id: "properties_panel/property_button/text_name" - parent: "properties_panel/property_button/root" + id: "example_properties_panel/property_button/text_name" + parent: "example_properties_panel/property_button/root" template_node_child: true } nodes { type: TYPE_BOX - id: "properties_panel/property_button/button" - parent: "properties_panel/property_button/root" + id: "example_properties_panel/property_button/button" + parent: "example_properties_panel/property_button/root" template_node_child: true } nodes { type: TYPE_BOX - id: "properties_panel/property_button/selected" - parent: "properties_panel/property_button/button" + id: "example_properties_panel/property_button/selected" + parent: "example_properties_panel/property_button/button" template_node_child: true } nodes { type: TYPE_TEXT - id: "properties_panel/property_button/text_button" - parent: "properties_panel/property_button/button" + id: "example_properties_panel/property_button/text_button" + parent: "example_properties_panel/property_button/button" template_node_child: true } nodes { type: TYPE_TEXT - id: "properties_panel/text_no_properties" - parent: "properties_panel/root" + id: "example_properties_panel/text_no_properties" + parent: "example_properties_panel/root" template_node_child: true } nodes { @@ -558,7 +558,7 @@ nodes { y: 280.0 } type: TYPE_BOX - texture: "druid/empty" + texture: "druid_example/empty" id: "container_output" pivot: PIVOT_SE adjust_mode: ADJUST_MODE_STRETCH @@ -635,7 +635,7 @@ nodes { y: 1030.0 } type: TYPE_BOX - texture: "druid/empty" + texture: "druid_example/empty" id: "container_center" xanchor: XANCHOR_LEFT yanchor: YANCHOR_BOTTOM @@ -683,7 +683,7 @@ nodes { } nodes { type: TYPE_BOX - texture: "druid/empty" + texture: "druid_example/empty" id: "intro_examples" parent: "examples" inherit_alpha: true @@ -2447,7 +2447,6 @@ nodes { type: TYPE_BOX id: "window_language/root" parent: "window_language" - overridden_fields: 1 template_node_child: true } nodes { @@ -2521,7 +2520,6 @@ nodes { type: TYPE_BOX id: "window_confirmation/root" parent: "window_confirmation" - overridden_fields: 1 template_node_child: true } nodes { @@ -2613,7 +2611,6 @@ nodes { type: TYPE_BOX id: "window_info/root" parent: "window_info" - overridden_fields: 1 template_node_child: true } nodes { @@ -2868,7 +2865,7 @@ nodes { } nodes { type: TYPE_BOX - texture: "druid/empty" + texture: "druid_example/empty" id: "gamepad" parent: "examples" inherit_alpha: true @@ -3673,7 +3670,7 @@ nodes { } nodes { type: TYPE_BOX - texture: "druid/empty" + texture: "druid_example/empty" id: "layout" parent: "examples" inherit_alpha: true @@ -3707,7 +3704,7 @@ nodes { } nodes { type: TYPE_BOX - texture: "druid/empty" + texture: "druid_example/empty" id: "widgets" parent: "examples" inherit_alpha: true @@ -3919,6 +3916,1088 @@ nodes { parent: "property_slider/slider" template_node_child: true } +nodes { + type: TYPE_TEMPLATE + id: "fps_panel" + parent: "widgets" + inherit_alpha: true + template: "/druid/widget/fps_panel/fps_panel.gui" +} +nodes { + type: TYPE_BOX + id: "fps_panel/root" + parent: "fps_panel" + template_node_child: true +} +nodes { + type: TYPE_TEMPLATE + id: "fps_panel/mini_graph" + parent: "fps_panel/root" + template_node_child: true +} +nodes { + type: TYPE_BOX + id: "fps_panel/mini_graph/root" + parent: "fps_panel/mini_graph" + template_node_child: true +} +nodes { + type: TYPE_BOX + id: "fps_panel/mini_graph/header" + parent: "fps_panel/mini_graph/root" + template_node_child: true +} +nodes { + type: TYPE_TEXT + id: "fps_panel/mini_graph/text_header" + parent: "fps_panel/mini_graph/header" + template_node_child: true +} +nodes { + type: TYPE_BOX + id: "fps_panel/mini_graph/icon_drag" + parent: "fps_panel/mini_graph/header" + template_node_child: true +} +nodes { + type: TYPE_BOX + id: "fps_panel/mini_graph/content" + parent: "fps_panel/mini_graph/root" + template_node_child: true +} +nodes { + type: TYPE_BOX + id: "fps_panel/mini_graph/prefab_line" + parent: "fps_panel/mini_graph/content" + template_node_child: true +} +nodes { + type: TYPE_BOX + id: "fps_panel/mini_graph/color_low" + parent: "fps_panel/mini_graph/content" + template_node_child: true +} +nodes { + type: TYPE_BOX + id: "fps_panel/content" + parent: "fps_panel/root" + template_node_child: true +} +nodes { + type: TYPE_TEXT + id: "fps_panel/text_min_fps" + parent: "fps_panel/content" + template_node_child: true +} +nodes { + type: TYPE_TEXT + id: "fps_panel/text_fps" + parent: "fps_panel/content" + template_node_child: true +} +nodes { + type: TYPE_BOX + id: "fps_panel/line_second_1" + parent: "fps_panel/content" + template_node_child: true +} +nodes { + type: TYPE_BOX + id: "fps_panel/line_second_2" + parent: "fps_panel/content" + template_node_child: true +} +nodes { + type: TYPE_TEMPLATE + id: "properties_panel" + parent: "widgets" + inherit_alpha: true + template: "/druid/widget/properties_panel/properties_panel.gui" +} +nodes { + type: TYPE_BOX + id: "properties_panel/root" + parent: "properties_panel" + template_node_child: true +} +nodes { + type: TYPE_BOX + id: "properties_panel/header" + parent: "properties_panel/root" + template_node_child: true +} +nodes { + type: TYPE_TEXT + id: "properties_panel/text_header" + parent: "properties_panel/header" + template_node_child: true +} +nodes { + type: TYPE_BOX + id: "properties_panel/icon_drag" + parent: "properties_panel/header" + template_node_child: true +} +nodes { + type: TYPE_BOX + id: "properties_panel/content" + parent: "properties_panel/root" + template_node_child: true +} +nodes { + type: TYPE_BOX + id: "properties_panel/scroll_view" + parent: "properties_panel/content" + template_node_child: true +} +nodes { + type: TYPE_BOX + id: "properties_panel/scroll_content" + parent: "properties_panel/scroll_view" + template_node_child: true +} +nodes { + type: TYPE_BOX + id: "properties_panel/propeties" + parent: "properties_panel/content" + template_node_child: true +} +nodes { + type: TYPE_TEMPLATE + id: "properties_panel/property_slider" + parent: "properties_panel/propeties" + template_node_child: true +} +nodes { + type: TYPE_BOX + id: "properties_panel/property_slider/root" + parent: "properties_panel/property_slider" + template_node_child: true +} +nodes { + type: TYPE_TEXT + id: "properties_panel/property_slider/text_name" + parent: "properties_panel/property_slider/root" + template_node_child: true +} +nodes { + type: TYPE_BOX + id: "properties_panel/property_slider/E_Anchor" + parent: "properties_panel/property_slider/root" + template_node_child: true +} +nodes { + type: TYPE_BOX + id: "properties_panel/property_slider/slider" + parent: "properties_panel/property_slider/E_Anchor" + template_node_child: true +} +nodes { + type: TYPE_BOX + id: "properties_panel/property_slider/slider_back" + parent: "properties_panel/property_slider/slider" + template_node_child: true +} +nodes { + type: TYPE_BOX + id: "properties_panel/property_slider/slider_pin" + parent: "properties_panel/property_slider/slider" + template_node_child: true +} +nodes { + type: TYPE_BOX + id: "properties_panel/property_slider/button" + parent: "properties_panel/property_slider/E_Anchor" + template_node_child: true +} +nodes { + type: TYPE_BOX + id: "properties_panel/property_slider/selected" + parent: "properties_panel/property_slider/button" + template_node_child: true +} +nodes { + type: TYPE_TEXT + id: "properties_panel/property_slider/text_value" + parent: "properties_panel/property_slider/button" + template_node_child: true +} +nodes { + type: TYPE_TEMPLATE + id: "properties_panel/property_checkbox" + parent: "properties_panel/propeties" + template_node_child: true +} +nodes { + type: TYPE_BOX + id: "properties_panel/property_checkbox/root" + parent: "properties_panel/property_checkbox" + template_node_child: true +} +nodes { + type: TYPE_TEXT + id: "properties_panel/property_checkbox/text_name" + parent: "properties_panel/property_checkbox/root" + template_node_child: true +} +nodes { + type: TYPE_BOX + id: "properties_panel/property_checkbox/E_Anchor" + parent: "properties_panel/property_checkbox/root" + template_node_child: true +} +nodes { + type: TYPE_BOX + id: "properties_panel/property_checkbox/button" + parent: "properties_panel/property_checkbox/E_Anchor" + template_node_child: true +} +nodes { + type: TYPE_BOX + id: "properties_panel/property_checkbox/icon" + parent: "properties_panel/property_checkbox/button" + template_node_child: true +} +nodes { + type: TYPE_BOX + id: "properties_panel/property_checkbox/selected" + parent: "properties_panel/property_checkbox/button" + template_node_child: true +} +nodes { + type: TYPE_TEMPLATE + id: "properties_panel/property_button" + parent: "properties_panel/propeties" + template_node_child: true +} +nodes { + type: TYPE_BOX + id: "properties_panel/property_button/root" + parent: "properties_panel/property_button" + template_node_child: true +} +nodes { + type: TYPE_TEXT + id: "properties_panel/property_button/text_name" + parent: "properties_panel/property_button/root" + template_node_child: true +} +nodes { + type: TYPE_BOX + id: "properties_panel/property_button/E_Anchor" + parent: "properties_panel/property_button/root" + template_node_child: true +} +nodes { + type: TYPE_BOX + id: "properties_panel/property_button/button" + parent: "properties_panel/property_button/E_Anchor" + template_node_child: true +} +nodes { + type: TYPE_BOX + id: "properties_panel/property_button/selected" + parent: "properties_panel/property_button/button" + template_node_child: true +} +nodes { + type: TYPE_TEXT + id: "properties_panel/property_button/text_button" + parent: "properties_panel/property_button/button" + template_node_child: true +} +nodes { + type: TYPE_TEMPLATE + id: "properties_panel/property_input" + parent: "properties_panel/propeties" + template_node_child: true +} +nodes { + type: TYPE_BOX + id: "properties_panel/property_input/root" + parent: "properties_panel/property_input" + template_node_child: true +} +nodes { + type: TYPE_TEXT + id: "properties_panel/property_input/text_name" + parent: "properties_panel/property_input/root" + template_node_child: true +} +nodes { + type: TYPE_BOX + id: "properties_panel/property_input/E_Anchor" + parent: "properties_panel/property_input/root" + template_node_child: true +} +nodes { + type: TYPE_TEMPLATE + id: "properties_panel/property_input/rich_input" + parent: "properties_panel/property_input/E_Anchor" + template_node_child: true +} +nodes { + type: TYPE_BOX + id: "properties_panel/property_input/rich_input/root" + parent: "properties_panel/property_input/rich_input" + template_node_child: true +} +nodes { + type: TYPE_BOX + id: "properties_panel/property_input/rich_input/button" + parent: "properties_panel/property_input/rich_input/root" + template_node_child: true +} +nodes { + type: TYPE_TEXT + id: "properties_panel/property_input/rich_input/placeholder_text" + parent: "properties_panel/property_input/rich_input/root" + template_node_child: true +} +nodes { + type: TYPE_TEXT + id: "properties_panel/property_input/rich_input/input_text" + parent: "properties_panel/property_input/rich_input/root" + template_node_child: true +} +nodes { + type: TYPE_BOX + id: "properties_panel/property_input/rich_input/cursor_node" + parent: "properties_panel/property_input/rich_input/root" + template_node_child: true +} +nodes { + type: TYPE_TEXT + id: "properties_panel/property_input/rich_input/cursor_text" + parent: "properties_panel/property_input/rich_input/cursor_node" + template_node_child: true +} +nodes { + type: TYPE_BOX + id: "properties_panel/property_input/selected" + parent: "properties_panel/property_input/E_Anchor" + template_node_child: true +} +nodes { + type: TYPE_TEMPLATE + id: "properties_panel/property_text" + parent: "properties_panel/propeties" + template_node_child: true +} +nodes { + type: TYPE_BOX + id: "properties_panel/property_text/root" + parent: "properties_panel/property_text" + template_node_child: true +} +nodes { + type: TYPE_TEXT + id: "properties_panel/property_text/text_name" + parent: "properties_panel/property_text/root" + template_node_child: true +} +nodes { + type: TYPE_TEXT + id: "properties_panel/property_text/text_right" + parent: "properties_panel/property_text/root" + template_node_child: true +} +nodes { + type: TYPE_TEMPLATE + id: "properties_panel/property_left_right_selector" + parent: "properties_panel/propeties" + template_node_child: true +} +nodes { + type: TYPE_BOX + id: "properties_panel/property_left_right_selector/root" + parent: "properties_panel/property_left_right_selector" + template_node_child: true +} +nodes { + type: TYPE_TEXT + id: "properties_panel/property_left_right_selector/text_name" + parent: "properties_panel/property_left_right_selector/root" + template_node_child: true +} +nodes { + type: TYPE_BOX + id: "properties_panel/property_left_right_selector/E_Anchor" + parent: "properties_panel/property_left_right_selector/root" + template_node_child: true +} +nodes { + type: TYPE_BOX + id: "properties_panel/property_left_right_selector/button_left" + parent: "properties_panel/property_left_right_selector/E_Anchor" + template_node_child: true +} +nodes { + type: TYPE_BOX + id: "properties_panel/property_left_right_selector/icon_left" + parent: "properties_panel/property_left_right_selector/button_left" + template_node_child: true +} +nodes { + type: TYPE_BOX + id: "properties_panel/property_left_right_selector/button_right" + parent: "properties_panel/property_left_right_selector/E_Anchor" + template_node_child: true +} +nodes { + type: TYPE_BOX + id: "properties_panel/property_left_right_selector/icon_right" + parent: "properties_panel/property_left_right_selector/button_right" + template_node_child: true +} +nodes { + type: TYPE_BOX + id: "properties_panel/property_left_right_selector/selected" + parent: "properties_panel/property_left_right_selector/E_Anchor" + template_node_child: true +} +nodes { + type: TYPE_TEXT + id: "properties_panel/property_left_right_selector/text_value" + parent: "properties_panel/property_left_right_selector/E_Anchor" + template_node_child: true +} +nodes { + type: TYPE_TEMPLATE + id: "properties_panel/property_vector3" + parent: "properties_panel/propeties" + template_node_child: true +} +nodes { + type: TYPE_BOX + id: "properties_panel/property_vector3/root" + parent: "properties_panel/property_vector3" + template_node_child: true +} +nodes { + type: TYPE_TEXT + id: "properties_panel/property_vector3/text_name" + parent: "properties_panel/property_vector3/root" + template_node_child: true +} +nodes { + type: TYPE_BOX + id: "properties_panel/property_vector3/E_Anchor" + parent: "properties_panel/property_vector3/root" + template_node_child: true +} +nodes { + type: TYPE_BOX + id: "properties_panel/property_vector3/field_x" + parent: "properties_panel/property_vector3/E_Anchor" + template_node_child: true +} +nodes { + type: TYPE_TEXT + id: "properties_panel/property_vector3/text_x" + parent: "properties_panel/property_vector3/field_x" + template_node_child: true +} +nodes { + type: TYPE_TEMPLATE + id: "properties_panel/property_vector3/rich_input_x" + parent: "properties_panel/property_vector3/field_x" + template_node_child: true +} +nodes { + type: TYPE_BOX + id: "properties_panel/property_vector3/rich_input_x/root" + parent: "properties_panel/property_vector3/rich_input_x" + template_node_child: true +} +nodes { + type: TYPE_BOX + id: "properties_panel/property_vector3/rich_input_x/button" + parent: "properties_panel/property_vector3/rich_input_x/root" + template_node_child: true +} +nodes { + type: TYPE_TEXT + id: "properties_panel/property_vector3/rich_input_x/placeholder_text" + parent: "properties_panel/property_vector3/rich_input_x/root" + template_node_child: true +} +nodes { + type: TYPE_TEXT + id: "properties_panel/property_vector3/rich_input_x/input_text" + parent: "properties_panel/property_vector3/rich_input_x/root" + template_node_child: true +} +nodes { + type: TYPE_BOX + id: "properties_panel/property_vector3/rich_input_x/cursor_node" + parent: "properties_panel/property_vector3/rich_input_x/root" + template_node_child: true +} +nodes { + type: TYPE_TEXT + id: "properties_panel/property_vector3/rich_input_x/cursor_text" + parent: "properties_panel/property_vector3/rich_input_x/cursor_node" + template_node_child: true +} +nodes { + type: TYPE_BOX + id: "properties_panel/property_vector3/selected_x" + parent: "properties_panel/property_vector3/field_x" + template_node_child: true +} +nodes { + type: TYPE_BOX + id: "properties_panel/property_vector3/field_y" + parent: "properties_panel/property_vector3/E_Anchor" + template_node_child: true +} +nodes { + type: TYPE_TEXT + id: "properties_panel/property_vector3/text_y" + parent: "properties_panel/property_vector3/field_y" + template_node_child: true +} +nodes { + type: TYPE_TEMPLATE + id: "properties_panel/property_vector3/rich_input_y" + parent: "properties_panel/property_vector3/field_y" + template_node_child: true +} +nodes { + type: TYPE_BOX + id: "properties_panel/property_vector3/rich_input_y/root" + parent: "properties_panel/property_vector3/rich_input_y" + template_node_child: true +} +nodes { + type: TYPE_BOX + id: "properties_panel/property_vector3/rich_input_y/button" + parent: "properties_panel/property_vector3/rich_input_y/root" + template_node_child: true +} +nodes { + type: TYPE_TEXT + id: "properties_panel/property_vector3/rich_input_y/placeholder_text" + parent: "properties_panel/property_vector3/rich_input_y/root" + template_node_child: true +} +nodes { + type: TYPE_TEXT + id: "properties_panel/property_vector3/rich_input_y/input_text" + parent: "properties_panel/property_vector3/rich_input_y/root" + template_node_child: true +} +nodes { + type: TYPE_BOX + id: "properties_panel/property_vector3/rich_input_y/cursor_node" + parent: "properties_panel/property_vector3/rich_input_y/root" + template_node_child: true +} +nodes { + type: TYPE_TEXT + id: "properties_panel/property_vector3/rich_input_y/cursor_text" + parent: "properties_panel/property_vector3/rich_input_y/cursor_node" + template_node_child: true +} +nodes { + type: TYPE_BOX + id: "properties_panel/property_vector3/selected_y" + parent: "properties_panel/property_vector3/field_y" + template_node_child: true +} +nodes { + type: TYPE_BOX + id: "properties_panel/property_vector3/field_z" + parent: "properties_panel/property_vector3/E_Anchor" + template_node_child: true +} +nodes { + type: TYPE_TEXT + id: "properties_panel/property_vector3/text_z" + parent: "properties_panel/property_vector3/field_z" + template_node_child: true +} +nodes { + type: TYPE_TEMPLATE + id: "properties_panel/property_vector3/rich_input_z" + parent: "properties_panel/property_vector3/field_z" + template_node_child: true +} +nodes { + type: TYPE_BOX + id: "properties_panel/property_vector3/rich_input_z/root" + parent: "properties_panel/property_vector3/rich_input_z" + template_node_child: true +} +nodes { + type: TYPE_BOX + id: "properties_panel/property_vector3/rich_input_z/button" + parent: "properties_panel/property_vector3/rich_input_z/root" + template_node_child: true +} +nodes { + type: TYPE_TEXT + id: "properties_panel/property_vector3/rich_input_z/placeholder_text" + parent: "properties_panel/property_vector3/rich_input_z/root" + template_node_child: true +} +nodes { + type: TYPE_TEXT + id: "properties_panel/property_vector3/rich_input_z/input_text" + parent: "properties_panel/property_vector3/rich_input_z/root" + template_node_child: true +} +nodes { + type: TYPE_BOX + id: "properties_panel/property_vector3/rich_input_z/cursor_node" + parent: "properties_panel/property_vector3/rich_input_z/root" + template_node_child: true +} +nodes { + type: TYPE_TEXT + id: "properties_panel/property_vector3/rich_input_z/cursor_text" + parent: "properties_panel/property_vector3/rich_input_z/cursor_node" + template_node_child: true +} +nodes { + type: TYPE_BOX + id: "properties_panel/property_vector3/selected_z" + parent: "properties_panel/property_vector3/field_z" + template_node_child: true +} +nodes { + type: TYPE_TEMPLATE + id: "memory_panel" + parent: "widgets" + inherit_alpha: true + template: "/druid/widget/memory_panel/memory_panel.gui" +} +nodes { + type: TYPE_BOX + id: "memory_panel/root" + parent: "memory_panel" + template_node_child: true +} +nodes { + type: TYPE_TEMPLATE + id: "memory_panel/mini_graph" + parent: "memory_panel/root" + template_node_child: true +} +nodes { + type: TYPE_BOX + id: "memory_panel/mini_graph/root" + parent: "memory_panel/mini_graph" + template_node_child: true +} +nodes { + type: TYPE_BOX + id: "memory_panel/mini_graph/header" + parent: "memory_panel/mini_graph/root" + template_node_child: true +} +nodes { + type: TYPE_TEXT + id: "memory_panel/mini_graph/text_header" + parent: "memory_panel/mini_graph/header" + template_node_child: true +} +nodes { + type: TYPE_BOX + id: "memory_panel/mini_graph/icon_drag" + parent: "memory_panel/mini_graph/header" + template_node_child: true +} +nodes { + type: TYPE_BOX + id: "memory_panel/mini_graph/content" + parent: "memory_panel/mini_graph/root" + template_node_child: true +} +nodes { + type: TYPE_BOX + id: "memory_panel/mini_graph/prefab_line" + parent: "memory_panel/mini_graph/content" + template_node_child: true +} +nodes { + type: TYPE_BOX + id: "memory_panel/mini_graph/color_low" + parent: "memory_panel/mini_graph/content" + template_node_child: true +} +nodes { + type: TYPE_BOX + id: "memory_panel/content" + parent: "memory_panel/root" + template_node_child: true +} +nodes { + type: TYPE_TEXT + id: "memory_panel/text_max_value" + parent: "memory_panel/content" + template_node_child: true +} +nodes { + type: TYPE_TEXT + id: "memory_panel/text_per_second" + parent: "memory_panel/content" + template_node_child: true +} +nodes { + type: TYPE_BOX + id: "memory_panel/line_second_1" + parent: "memory_panel/content" + template_node_child: true +} +nodes { + type: TYPE_BOX + id: "memory_panel/line_second_2" + parent: "memory_panel/content" + template_node_child: true +} +nodes { + type: TYPE_TEXT + id: "memory_panel/text_memory" + parent: "memory_panel/content" + template_node_child: true +} +nodes { + type: TYPE_TEMPLATE + id: "mini_graph" + parent: "widgets" + inherit_alpha: true + template: "/druid/widget/mini_graph/mini_graph.gui" +} +nodes { + type: TYPE_BOX + id: "mini_graph/root" + parent: "mini_graph" + template_node_child: true +} +nodes { + type: TYPE_BOX + id: "mini_graph/header" + parent: "mini_graph/root" + template_node_child: true +} +nodes { + type: TYPE_TEXT + id: "mini_graph/text_header" + parent: "mini_graph/header" + template_node_child: true +} +nodes { + type: TYPE_BOX + id: "mini_graph/icon_drag" + parent: "mini_graph/header" + template_node_child: true +} +nodes { + type: TYPE_BOX + id: "mini_graph/content" + parent: "mini_graph/root" + template_node_child: true +} +nodes { + type: TYPE_BOX + id: "mini_graph/prefab_line" + parent: "mini_graph/content" + template_node_child: true +} +nodes { + type: TYPE_BOX + id: "mini_graph/color_low" + parent: "mini_graph/content" + template_node_child: true +} +nodes { + type: TYPE_TEMPLATE + id: "property_input" + parent: "widgets" + inherit_alpha: true + template: "/druid/widget/properties_panel/properties/property_input.gui" +} +nodes { + type: TYPE_BOX + id: "property_input/root" + parent: "property_input" + template_node_child: true +} +nodes { + type: TYPE_TEXT + id: "property_input/text_name" + parent: "property_input/root" + template_node_child: true +} +nodes { + type: TYPE_BOX + id: "property_input/E_Anchor" + parent: "property_input/root" + template_node_child: true +} +nodes { + type: TYPE_TEMPLATE + id: "property_input/rich_input" + parent: "property_input/E_Anchor" + template_node_child: true +} +nodes { + type: TYPE_BOX + id: "property_input/rich_input/root" + parent: "property_input/rich_input" + template_node_child: true +} +nodes { + type: TYPE_BOX + id: "property_input/rich_input/button" + parent: "property_input/rich_input/root" + template_node_child: true +} +nodes { + type: TYPE_TEXT + id: "property_input/rich_input/placeholder_text" + parent: "property_input/rich_input/root" + template_node_child: true +} +nodes { + type: TYPE_TEXT + id: "property_input/rich_input/input_text" + parent: "property_input/rich_input/root" + template_node_child: true +} +nodes { + type: TYPE_BOX + id: "property_input/rich_input/cursor_node" + parent: "property_input/rich_input/root" + template_node_child: true +} +nodes { + type: TYPE_TEXT + id: "property_input/rich_input/cursor_text" + parent: "property_input/rich_input/cursor_node" + template_node_child: true +} +nodes { + type: TYPE_BOX + id: "property_input/selected" + parent: "property_input/E_Anchor" + template_node_child: true +} +nodes { + type: TYPE_TEMPLATE + id: "example_tiling_node" + parent: "widgets" + inherit_alpha: true + template: "/example/examples/widgets/tiling_node/example_tiling_node.gui" +} +nodes { + type: TYPE_BOX + id: "example_tiling_node/root" + parent: "example_tiling_node" + template_node_child: true +} +nodes { + type: TYPE_BOX + id: "example_tiling_node/tiling_node" + parent: "example_tiling_node/root" + template_node_child: true +} +nodes { + size { + x: 200.0 + y: 100.0 + } + type: TYPE_BOX + id: "container" + parent: "examples" + inherit_alpha: true + size_mode: SIZE_MODE_AUTO + visible: false +} +nodes { + type: TYPE_TEMPLATE + id: "container_anchors" + parent: "container" + inherit_alpha: true + template: "/example/examples/container/container_anchors/container_anchors.gui" +} +nodes { + type: TYPE_BOX + id: "container_anchors/root" + parent: "container_anchors" + template_node_child: true +} +nodes { + type: TYPE_TEXT + id: "container_anchors/text" + parent: "container_anchors/root" + template_node_child: true +} +nodes { + type: TYPE_BOX + id: "container_anchors/parent_container" + parent: "container_anchors/root" + template_node_child: true +} +nodes { + type: TYPE_BOX + id: "container_anchors/anchor_ne" + parent: "container_anchors/parent_container" + template_node_child: true +} +nodes { + type: TYPE_BOX + id: "container_anchors/anchor_e" + parent: "container_anchors/parent_container" + template_node_child: true +} +nodes { + type: TYPE_BOX + id: "container_anchors/anchor_n" + parent: "container_anchors/parent_container" + template_node_child: true +} +nodes { + type: TYPE_BOX + id: "container_anchors/anchor_se" + parent: "container_anchors/parent_container" + template_node_child: true +} +nodes { + type: TYPE_BOX + id: "container_anchors/anchor_s" + parent: "container_anchors/parent_container" + template_node_child: true +} +nodes { + type: TYPE_BOX + id: "container_anchors/anchor_sw" + parent: "container_anchors/parent_container" + template_node_child: true +} +nodes { + type: TYPE_BOX + id: "container_anchors/anchor_w" + parent: "container_anchors/parent_container" + template_node_child: true +} +nodes { + type: TYPE_BOX + id: "container_anchors/anchor_nw" + parent: "container_anchors/parent_container" + template_node_child: true +} +nodes { + type: TYPE_BOX + id: "container_anchors/anchor_center" + parent: "container_anchors/parent_container" + template_node_child: true +} +nodes { + type: TYPE_TEMPLATE + id: "container_resize" + parent: "container" + inherit_alpha: true + template: "/example/examples/container/container_resize/container_resize.gui" +} +nodes { + type: TYPE_BOX + id: "container_resize/root" + parent: "container_resize" + template_node_child: true +} +nodes { + type: TYPE_TEXT + id: "container_resize/text" + parent: "container_resize/root" + template_node_child: true +} +nodes { + type: TYPE_BOX + id: "container_resize/parent_container" + parent: "container_resize/root" + template_node_child: true +} +nodes { + type: TYPE_BOX + id: "container_resize/panel_left" + parent: "container_resize/parent_container" + template_node_child: true +} +nodes { + type: TYPE_BOX + id: "container_resize/panel_right" + parent: "container_resize/parent_container" + template_node_child: true +} +nodes { + type: TYPE_BOX + id: "container_resize/panel_bot" + parent: "container_resize/parent_container" + template_node_child: true +} +nodes { + type: TYPE_BOX + id: "container_resize/panel_content" + parent: "container_resize/parent_container" + template_node_child: true +} +nodes { + type: TYPE_BOX + id: "container_resize/anchor_ne" + parent: "container_resize/panel_content" + template_node_child: true +} +nodes { + type: TYPE_BOX + id: "container_resize/anchor_s" + parent: "container_resize/panel_content" + template_node_child: true +} +nodes { + type: TYPE_BOX + id: "container_resize/anchor_sw" + parent: "container_resize/panel_content" + template_node_child: true +} +nodes { + type: TYPE_BOX + id: "container_resize/anchor_center" + parent: "container_resize/panel_content" + template_node_child: true +} +nodes { + type: TYPE_BOX + id: "container_resize/anchor_n" + parent: "container_resize/panel_content" + template_node_child: true +} +nodes { + type: TYPE_BOX + id: "container_resize/anchor_e" + parent: "container_resize/panel_content" + template_node_child: true +} +nodes { + type: TYPE_BOX + id: "container_resize/anchor_nw" + parent: "container_resize/panel_content" + template_node_child: true +} +nodes { + type: TYPE_BOX + id: "container_resize/anchor_w" + parent: "container_resize/panel_content" + template_node_child: true +} +nodes { + type: TYPE_BOX + id: "container_resize/anchor_se" + parent: "container_resize/panel_content" + template_node_child: true +} nodes { position { x: -20.0 @@ -3929,7 +5008,7 @@ nodes { y: 50.0 } type: TYPE_BOX - texture: "druid/empty" + texture: "druid_example/empty" id: "container_status" xanchor: XANCHOR_LEFT pivot: PIVOT_S @@ -3955,10 +5034,16 @@ nodes { } nodes { type: TYPE_BOX - id: "panel_druid_profiler/group_memory" + id: "panel_druid_profiler/layout" parent: "panel_druid_profiler/root" template_node_child: true } +nodes { + type: TYPE_BOX + id: "panel_druid_profiler/group_memory" + parent: "panel_druid_profiler/layout" + template_node_child: true +} nodes { type: TYPE_TEXT id: "panel_druid_profiler/text_memory" @@ -3980,7 +5065,7 @@ nodes { nodes { type: TYPE_BOX id: "panel_druid_profiler/group_fps" - parent: "panel_druid_profiler/root" + parent: "panel_druid_profiler/layout" template_node_child: true } nodes { @@ -4004,7 +5089,7 @@ nodes { nodes { type: TYPE_BOX id: "panel_druid_profiler/group_components" - parent: "panel_druid_profiler/root" + parent: "panel_druid_profiler/layout" template_node_child: true } nodes { @@ -4019,24 +5104,6 @@ nodes { parent: "panel_druid_profiler/group_components" template_node_child: true } -nodes { - type: TYPE_BOX - id: "panel_druid_profiler/group_events" - parent: "panel_druid_profiler/root" - template_node_child: true -} -nodes { - type: TYPE_TEXT - id: "panel_druid_profiler/text_events" - parent: "panel_druid_profiler/group_events" - template_node_child: true -} -nodes { - type: TYPE_TEXT - id: "panel_druid_profiler/text_events_amount" - parent: "panel_druid_profiler/group_events" - template_node_child: true -} layers { name: "druid" } @@ -4051,4 +5118,4 @@ layers { } material: "/builtins/materials/gui.material" adjust_reference: ADJUST_REFERENCE_PARENT -max_nodes: 2048 +max_nodes: 4096 diff --git a/example/druid.gui_script b/example/druid.gui_script index 5cd5f15..44c200b 100644 --- a/example/druid.gui_script +++ b/example/druid.gui_script @@ -2,8 +2,8 @@ local lang = require("lang.lang") local saver = require("saver.saver") local storage = require("saver.storage") local druid = require("druid.druid") +local helper = require("druid.helper") -local container = require("example.components.container.container") local druid_logo = require("example.components.druid_logo.druid_logo") local panel_information = require("example.components.panel_information.panel_information") local example_scene = require("example.components.example_scene.example_scene") @@ -15,7 +15,7 @@ local output_list = require("example.components.output_list.output_list") local druid_examples = require("example.examples.druid_examples") ---@class druid.example ----@field druid druid_instance +---@field druid druid.instance ---@field container_root druid.container ---@field container_left druid.container ---@field container_logo druid.container @@ -27,21 +27,27 @@ local druid_examples = require("example.examples.druid_examples") ---@field container_output druid.container ---@field container_center druid.container ---@field container_status druid.container ----@field druid_logo druid_logo +---@field druid_logo examples.druid_logo ---@field panel_information panel_information ----@field example_scene example_scene +---@field example_scene examples.example_scene ---@field panel_druid_profiler panel_druid_profiler ---@field examples_list_view examples_list_view ---@field properties_panel properties_panel ---@field output_list output_list +---@field next_example druid.hotkey +---@field previous_example druid.hotkey + + +---@param self druid.example +local function setup_saver(self) + saver.init() + saver.bind_save_state("lang", lang.state) +end --- Generic setup that should be done once per application ---@param self druid.example local function setup_druid(self) - saver.init() - saver.bind_save_state("lang", lang.state) - lang.init() lang.set_lang("en") -- Force default start language to EN, switch through the UI to check druid.set_text_function(lang.txp) @@ -56,7 +62,7 @@ end --- This allow easily move components in the GUI scene and change the size of each section ---@param self druid.example local function setup_layout(self) - self.container_root = self.druid:new(container, "root") --[[@as druid.container]] + self.container_root = self.druid:new_container("root") --[[@as druid.container]] self.container_left = self.container_root:add_container("container_left", "stretch_y") self.container_logo = self.container_left:add_container("container_logo") self.container_examples = self.container_left:add_container("container_examples") @@ -73,15 +79,63 @@ local function setup_layout(self) end +---@param self druid.example +local function on_next_example(self) + local current_index = 1 + local examples = self.examples_list_view.examples + + -- Find current example index + for i, example in ipairs(examples) do + if example.data.name_id == self.examples_list_view.selected_example.data.name_id then + current_index = i + break + end + end + + -- Get next example index (wrap around to first if at end) + local next_index = current_index + 1 + if next_index > #examples then + next_index = 1 + end + + -- Select the next example + self.examples_list_view:select_example_by_name_id(examples[next_index].data.name_id) +end + + +---@param self druid.example +local function on_previous_example(self) + local current_index = 1 + local examples = self.examples_list_view.examples + + -- Find current example index + for i, example in ipairs(examples) do + if example.data.name_id == self.examples_list_view.selected_example.data.name_id then + current_index = i + break + end + end + + -- Get previous example index (wrap around to last if at start) + local prev_index = current_index - 1 + if prev_index < 1 then + prev_index = #examples + end + + -- Select the previous example + self.examples_list_view:select_example_by_name_id(examples[prev_index].data.name_id) +end + + ---@param self druid.example local function setup_components(self) - self.druid_logo = self.druid:new(druid_logo, "druid_logo") --[[@as druid_logo]] + self.druid_logo = self.druid:new(druid_logo, "druid_logo") --[[@as examples.druid_logo]] self.container_logo:add_container(self.druid_logo.root) self.panel_information = self.druid:new(panel_information, "panel_information") --[[@as panel_information]] self.container_info:add_container(self.panel_information.root) - self.example_scene = self.druid:new(example_scene, "example_scene") --[[@as example_scene]] + self.example_scene = self.druid:new(example_scene, "example_scene") --[[@as examples.example_scene]] self.container_center:add_container(self.example_scene.root) self.panel_druid_profiler = self.druid:new(panel_druid_profiler, "panel_druid_profiler") --[[@as panel_druid_profiler]] @@ -90,12 +144,17 @@ local function setup_components(self) self.examples_list_view = self.druid:new(examples_list_view, "examples_list_view") --[[@as examples_list_view]] self.container_examples:add_container(self.examples_list_view.root) - self.properties_panel = self.druid:new(properties_panel, "properties_panel") --[[@as properties_panel]] + self.properties_panel = self.druid:new(properties_panel, "example_properties_panel") --[[@as properties_panel]] self.container_settings:add_container(self.properties_panel.root) self.output_list = self.druid:new(output_list, "output_list") --[[@as output_list]] self.container_output:add_container(self.output_list.root) + self.next_example = self.druid:new_hotkey("key_down", on_next_example, self) + :add_hotkey("key_s") + self.previous_example = self.druid:new_hotkey("key_up", on_previous_example, self) + :add_hotkey("key_w") + do -- Component bindings self.examples_list_view.on_debug_info:subscribe(function(info) self.example_scene:set_debug_info(info) @@ -131,7 +190,7 @@ local function select_start_example(self) -- Try load example from URL local example_name = html5.run("new URLSearchParams(window.location.search).get('example')") if example_name then - local is_selected self.examples_list_view:select_example_by_name_id(example_name) + local is_selected = self.examples_list_view:select_example_by_name_id(example_name) if is_selected then return end @@ -173,8 +232,38 @@ local function setup_examples(self) end +---@param self druid.example +local function setup_defos(self) + local is_desktop = helper.is_desktop() + local is_debug = sys.get_engine_info().is_debug + + if is_desktop and is_debug then + timer.delay(1, true, function() + local x, y, w, h = defos.get_window_size() + saver.set_value("window.last_state", { x, y, w, h }) + saver.save_game_state() + end) + + -- Restore window size and position + local prev_settings = saver.get_value("window.last_state") + if prev_settings then + ---@cast prev_settings number[] + local x, y, w, h = unpack(prev_settings) + -- Limit size to 300x200 + x = vmath.clamp(x, 0, 4000) + y = vmath.clamp(y, 0, 4000) + w = vmath.clamp(w, 300, 4000) + h = vmath.clamp(h, 200, 4000) + defos.set_window_size(x, y, w, h) + end + end +end + + ---@param self druid.example function init(self) + setup_saver(self) + setup_defos(self) setup_druid(self) self.druid = druid.new(self) diff --git a/example/examples/basic/back_handler/basic_back_handler.gui b/example/examples/basic/back_handler/basic_back_handler.gui index 06c7705..0ba266c 100644 --- a/example/examples/basic/back_handler/basic_back_handler.gui +++ b/example/examples/basic/back_handler/basic_back_handler.gui @@ -3,8 +3,8 @@ fonts { font: "/example/assets/fonts/text_bold.font" } textures { - name: "druid" - texture: "/example/assets/druid.atlas" + name: "druid_example" + texture: "/example/assets/druid_example.atlas" } nodes { size { @@ -17,7 +17,7 @@ nodes { z: 0.204 } type: TYPE_BOX - texture: "druid/ui_circle_64" + texture: "druid_example/ui_circle_64" id: "root" inherit_alpha: true slice9 { diff --git a/example/examples/basic/back_handler/basic_back_handler.lua b/example/examples/basic/back_handler/basic_back_handler.lua index 4b9ee3a..a16c10a 100644 --- a/example/examples/basic/back_handler/basic_back_handler.lua +++ b/example/examples/basic/back_handler/basic_back_handler.lua @@ -1,14 +1,7 @@ -local component = require("druid.component") +---@class examples.basic_back_handler: druid.widget +local M = {} ----@class basic_back_handler: druid.base_component ----@field druid druid_instance -local M = component.create("basic_back_handler") - - ----@param template string ----@param nodes table -function M:init(template, nodes) - self.druid = self:get_druid(template, nodes) +function M:init() self.druid:new_back_handler(self.on_back) end diff --git a/example/examples/basic/blocker/basic_blocker.gui b/example/examples/basic/blocker/basic_blocker.gui index 96a1886..67a37a8 100644 --- a/example/examples/basic/blocker/basic_blocker.gui +++ b/example/examples/basic/blocker/basic_blocker.gui @@ -3,8 +3,8 @@ fonts { font: "/example/assets/fonts/text_bold.font" } textures { - name: "druid" - texture: "/example/assets/druid.atlas" + name: "druid_example" + texture: "/example/assets/druid_example.atlas" } nodes { size { @@ -17,7 +17,7 @@ nodes { z: 0.204 } type: TYPE_BOX - texture: "druid/ui_circle_64" + texture: "druid_example/ui_circle_64" id: "root" inherit_alpha: true slice9 { @@ -38,7 +38,7 @@ nodes { z: 0.322 } type: TYPE_BOX - texture: "druid/ui_circle_32" + texture: "druid_example/ui_circle_32" id: "blocker" parent: "root" inherit_alpha: true diff --git a/example/examples/basic/blocker/basic_blocker.lua b/example/examples/basic/blocker/basic_blocker.lua index 1885d91..e930bcd 100644 --- a/example/examples/basic/blocker/basic_blocker.lua +++ b/example/examples/basic/blocker/basic_blocker.lua @@ -1,17 +1,10 @@ -local component = require("druid.component") - ----@class basic_blocker: druid.component ----@field druid druid_instance +---@class examples.basic_blocker: druid.widget ---@field root node ---@field blocker druid.blocker -local M = component.create("basic_blocker") +local M = {} ----@param template string ----@param nodes table -function M:init(template, nodes) - self.druid = self:get_druid(template, nodes) - +function M:init() self.root = self:get_node("root") self.button_root = self.druid:new_button(self.root, self.on_root_click) @@ -31,4 +24,15 @@ function M:on_button_click() end +---@param output_log output_list +function M:on_example_created(output_log) + self.button_root.on_click:subscribe(function() + output_log:add_log_text("Root Clicked") + end) + self.button.on_click:subscribe(function() + output_log:add_log_text("Button Clicked") + end) +end + + return M diff --git a/example/examples/basic/button/basic_button.gui b/example/examples/basic/button/basic_button.gui index d96efe6..c16a8a2 100644 --- a/example/examples/basic/button/basic_button.gui +++ b/example/examples/basic/button/basic_button.gui @@ -1,236 +1,34 @@ -script: "" -background_color { - x: 0.0 - y: 0.0 - z: 0.0 - w: 0.0 -} nodes { - position { - x: 0.0 - y: 0.0 - z: 0.0 - w: 1.0 - } - rotation { - x: 0.0 - y: 0.0 - z: 0.0 - w: 1.0 - } - scale { - x: 1.0 - y: 1.0 - z: 1.0 - w: 1.0 - } size { x: 200.0 y: 100.0 - z: 0.0 - w: 1.0 - } - color { - x: 1.0 - y: 1.0 - z: 1.0 - w: 1.0 } type: TYPE_BOX - blend_mode: BLEND_MODE_ALPHA - texture: "" id: "root" - xanchor: XANCHOR_NONE - yanchor: YANCHOR_NONE - pivot: PIVOT_CENTER - adjust_mode: ADJUST_MODE_FIT - layer: "" inherit_alpha: true - slice9 { - x: 0.0 - y: 0.0 - z: 0.0 - w: 0.0 - } - clipping_mode: CLIPPING_MODE_NONE - clipping_visible: true - clipping_inverted: false - alpha: 1.0 - template_node_child: false size_mode: SIZE_MODE_AUTO - custom_type: 0 - enabled: true visible: false - material: "" } nodes { - position { - x: 0.0 - y: 0.0 - z: 0.0 - w: 1.0 - } - rotation { - x: 0.0 - y: 0.0 - z: 0.0 - w: 1.0 - } - scale { - x: 1.0 - y: 1.0 - z: 1.0 - w: 1.0 - } - size { - x: 200.0 - y: 100.0 - z: 0.0 - w: 1.0 - } - color { - x: 1.0 - y: 1.0 - z: 1.0 - w: 1.0 - } type: TYPE_TEMPLATE id: "button" parent: "root" - layer: "" inherit_alpha: true - alpha: 1.0 template: "/example/templates/button_text_green.gui" - template_node_child: false - custom_type: 0 - enabled: true } nodes { - position { - x: 0.0 - y: 0.0 - z: 0.0 - w: 1.0 - } - rotation { - x: 0.0 - y: 0.0 - z: 0.0 - w: 1.0 - } - scale { - x: 1.0 - y: 1.0 - z: 1.0 - w: 1.0 - } - size { - x: 280.0 - y: 90.0 - z: 0.0 - w: 1.0 - } - color { - x: 0.557 - y: 0.835 - z: 0.62 - w: 1.0 - } type: TYPE_BOX - blend_mode: BLEND_MODE_ALPHA - texture: "druid/ui_circle_32" id: "button/root" - xanchor: XANCHOR_NONE - yanchor: YANCHOR_NONE - pivot: PIVOT_CENTER - adjust_mode: ADJUST_MODE_FIT parent: "button" - layer: "druid" - inherit_alpha: true - slice9 { - x: 16.0 - y: 16.0 - z: 16.0 - w: 16.0 - } - clipping_mode: CLIPPING_MODE_NONE - clipping_visible: true - clipping_inverted: false - alpha: 1.0 template_node_child: true - size_mode: SIZE_MODE_MANUAL - custom_type: 0 - enabled: true - visible: true - material: "" } nodes { - position { - x: 0.0 - y: 0.0 - z: 0.0 - w: 1.0 - } - rotation { - x: 0.0 - y: 0.0 - z: 0.0 - w: 1.0 - } - scale { - x: 1.0 - y: 1.0 - z: 1.0 - w: 1.0 - } - size { - x: 245.0 - y: 50.0 - z: 0.0 - w: 1.0 - } - color { - x: 0.31 - y: 0.318 - z: 0.322 - w: 1.0 - } type: TYPE_TEXT - blend_mode: BLEND_MODE_ALPHA - text: "Confirm" - font: "text_bold" + text: "Click Me!" id: "button/text" - xanchor: XANCHOR_NONE - yanchor: YANCHOR_NONE - pivot: PIVOT_CENTER - outline { - x: 1.0 - y: 1.0 - z: 1.0 - w: 1.0 - } - shadow { - x: 1.0 - y: 1.0 - z: 1.0 - w: 1.0 - } - adjust_mode: ADJUST_MODE_FIT - line_break: false parent: "button/root" - layer: "text_bold" - inherit_alpha: true - alpha: 1.0 - outline_alpha: 0.0 - shadow_alpha: 0.0 + overridden_fields: 8 template_node_child: true - text_leading: 1.0 - text_tracking: 0.0 - custom_type: 0 - enabled: true - visible: true - material: "" } material: "/builtins/materials/gui.material" adjust_reference: ADJUST_REFERENCE_PARENT -max_nodes: 512 diff --git a/example/examples/basic/button/basic_button.lua b/example/examples/basic/button/basic_button.lua index 79172d6..3f6c162 100644 --- a/example/examples/basic/button/basic_button.lua +++ b/example/examples/basic/button/basic_button.lua @@ -1,19 +1,29 @@ -local component = require("druid.component") - ----@class basic_button: druid.base_component ----@field druid druid_instance +---@class examples.basic_button: druid.widget ---@field button druid.button -local M = component.create("basic_button") - ----@param template string ----@param nodes table -function M:init(template, nodes) - self.druid = self:get_druid(template, nodes) +local M = {} +function M:init() self.button = self.druid:new_button("button/root", function() print("Button pressed") end) end +---@param output_log output_list +function M:on_example_created(output_log) + self.button.on_click:subscribe(function() + output_log:add_log_text("Button Clicked") + end) +end + + +---@param properties_panel properties_panel +function M:properties_control(properties_panel) + local checkbox = properties_panel:add_checkbox("ui_enabled", false, function(value) + self.button:set_enabled(value) + end) + checkbox:set_value(true) +end + + return M diff --git a/example/examples/basic/button/basic_button_double_click.gui b/example/examples/basic/button/basic_button_double_click.gui index d96efe6..799bc6f 100644 --- a/example/examples/basic/button/basic_button_double_click.gui +++ b/example/examples/basic/button/basic_button_double_click.gui @@ -1,236 +1,34 @@ -script: "" -background_color { - x: 0.0 - y: 0.0 - z: 0.0 - w: 0.0 -} nodes { - position { - x: 0.0 - y: 0.0 - z: 0.0 - w: 1.0 - } - rotation { - x: 0.0 - y: 0.0 - z: 0.0 - w: 1.0 - } - scale { - x: 1.0 - y: 1.0 - z: 1.0 - w: 1.0 - } size { x: 200.0 y: 100.0 - z: 0.0 - w: 1.0 - } - color { - x: 1.0 - y: 1.0 - z: 1.0 - w: 1.0 } type: TYPE_BOX - blend_mode: BLEND_MODE_ALPHA - texture: "" id: "root" - xanchor: XANCHOR_NONE - yanchor: YANCHOR_NONE - pivot: PIVOT_CENTER - adjust_mode: ADJUST_MODE_FIT - layer: "" inherit_alpha: true - slice9 { - x: 0.0 - y: 0.0 - z: 0.0 - w: 0.0 - } - clipping_mode: CLIPPING_MODE_NONE - clipping_visible: true - clipping_inverted: false - alpha: 1.0 - template_node_child: false size_mode: SIZE_MODE_AUTO - custom_type: 0 - enabled: true visible: false - material: "" } nodes { - position { - x: 0.0 - y: 0.0 - z: 0.0 - w: 1.0 - } - rotation { - x: 0.0 - y: 0.0 - z: 0.0 - w: 1.0 - } - scale { - x: 1.0 - y: 1.0 - z: 1.0 - w: 1.0 - } - size { - x: 200.0 - y: 100.0 - z: 0.0 - w: 1.0 - } - color { - x: 1.0 - y: 1.0 - z: 1.0 - w: 1.0 - } type: TYPE_TEMPLATE id: "button" parent: "root" - layer: "" inherit_alpha: true - alpha: 1.0 template: "/example/templates/button_text_green.gui" - template_node_child: false - custom_type: 0 - enabled: true } nodes { - position { - x: 0.0 - y: 0.0 - z: 0.0 - w: 1.0 - } - rotation { - x: 0.0 - y: 0.0 - z: 0.0 - w: 1.0 - } - scale { - x: 1.0 - y: 1.0 - z: 1.0 - w: 1.0 - } - size { - x: 280.0 - y: 90.0 - z: 0.0 - w: 1.0 - } - color { - x: 0.557 - y: 0.835 - z: 0.62 - w: 1.0 - } type: TYPE_BOX - blend_mode: BLEND_MODE_ALPHA - texture: "druid/ui_circle_32" id: "button/root" - xanchor: XANCHOR_NONE - yanchor: YANCHOR_NONE - pivot: PIVOT_CENTER - adjust_mode: ADJUST_MODE_FIT parent: "button" - layer: "druid" - inherit_alpha: true - slice9 { - x: 16.0 - y: 16.0 - z: 16.0 - w: 16.0 - } - clipping_mode: CLIPPING_MODE_NONE - clipping_visible: true - clipping_inverted: false - alpha: 1.0 template_node_child: true - size_mode: SIZE_MODE_MANUAL - custom_type: 0 - enabled: true - visible: true - material: "" } nodes { - position { - x: 0.0 - y: 0.0 - z: 0.0 - w: 1.0 - } - rotation { - x: 0.0 - y: 0.0 - z: 0.0 - w: 1.0 - } - scale { - x: 1.0 - y: 1.0 - z: 1.0 - w: 1.0 - } - size { - x: 245.0 - y: 50.0 - z: 0.0 - w: 1.0 - } - color { - x: 0.31 - y: 0.318 - z: 0.322 - w: 1.0 - } type: TYPE_TEXT - blend_mode: BLEND_MODE_ALPHA - text: "Confirm" - font: "text_bold" + text: "Double Click" id: "button/text" - xanchor: XANCHOR_NONE - yanchor: YANCHOR_NONE - pivot: PIVOT_CENTER - outline { - x: 1.0 - y: 1.0 - z: 1.0 - w: 1.0 - } - shadow { - x: 1.0 - y: 1.0 - z: 1.0 - w: 1.0 - } - adjust_mode: ADJUST_MODE_FIT - line_break: false parent: "button/root" - layer: "text_bold" - inherit_alpha: true - alpha: 1.0 - outline_alpha: 0.0 - shadow_alpha: 0.0 + overridden_fields: 8 template_node_child: true - text_leading: 1.0 - text_tracking: 0.0 - custom_type: 0 - enabled: true - visible: true - material: "" } material: "/builtins/materials/gui.material" adjust_reference: ADJUST_REFERENCE_PARENT -max_nodes: 512 diff --git a/example/examples/basic/button/basic_button_double_click.lua b/example/examples/basic/button/basic_button_double_click.lua index 1889fe5..94444bd 100644 --- a/example/examples/basic/button/basic_button_double_click.lua +++ b/example/examples/basic/button/basic_button_double_click.lua @@ -1,15 +1,8 @@ -local component = require("druid.component") - ----@class basic_button_double_click: druid.base_component ----@field druid druid_instance +---@class examples.basic_button_double_click: druid.widget ---@field button druid.button -local M = component.create("basic_button_double_click") - ----@param template string ----@param nodes table -function M:init(template, nodes) - self.druid = self:get_druid(template, nodes) +local M = {} +function M:init() self.button = self.druid:new_button("button/root", function() print("Click") end) @@ -20,4 +13,15 @@ function M:init(template, nodes) end +---@param output_log output_list +function M:on_example_created(output_log) + self.button.on_click:subscribe(function() + output_log:add_log_text("Clicked") + end) + self.button.on_double_click:subscribe(function() + output_log:add_log_text("Double Clicked") + end) +end + + return M diff --git a/example/examples/basic/button/basic_button_hold.gui b/example/examples/basic/button/basic_button_hold.gui index 23d6be9..2234bea 100644 --- a/example/examples/basic/button/basic_button_hold.gui +++ b/example/examples/basic/button/basic_button_hold.gui @@ -3,8 +3,8 @@ fonts { font: "/example/assets/fonts/text_bold.font" } textures { - name: "druid" - texture: "/example/assets/druid.atlas" + name: "druid_example" + texture: "/example/assets/druid_example.atlas" } nodes { size { @@ -28,7 +28,7 @@ nodes { z: 0.624 } type: TYPE_BOX - texture: "druid/ui_circle_32" + texture: "druid_example/ui_circle_32" id: "button" parent: "root" inherit_alpha: true @@ -63,7 +63,7 @@ nodes { z: 0.62 } type: TYPE_BOX - texture: "druid/ui_circle_32" + texture: "druid_example/ui_circle_32" id: "button_image" parent: "mask" inherit_alpha: true diff --git a/example/examples/basic/button/basic_button_hold.lua b/example/examples/basic/button/basic_button_hold.lua index 97d1a5b..925292a 100644 --- a/example/examples/basic/button/basic_button_hold.lua +++ b/example/examples/basic/button/basic_button_hold.lua @@ -1,19 +1,13 @@ -local component = require("druid.component") local panthera = require("panthera.panthera") local animation = require("example.examples.basic.button.basic_button_hold_panthera") ----@class basic_button_hold: druid.base_component ----@field druid druid_instance +---@class examples.basic_button_hold: druid.widget ---@field button druid.button -local M = component.create("basic_button_hold") +local M = {} ----@param template string ----@param nodes table -function M:init(template, nodes) - self.druid = self:get_druid(template, nodes) - - self.animation = panthera.create_gui(animation, self:get_template(), nodes) +function M:init() + self.animation = panthera.create_gui(animation, self:get_template(), self:get_nodes()) self.button = self.druid:new_button("button", function() print("Click") @@ -46,4 +40,15 @@ function M:init(template, nodes) end +---@param output_log output_list +function M:on_example_created(output_log) + self.button.on_click:subscribe(function() + output_log:add_log_text("Clicked") + end) + self.button.on_long_click:subscribe(function() + output_log:add_log_text("On long click") + end) +end + + return M diff --git a/example/examples/basic/button/basic_button_hold_panthera.lua b/example/examples/basic/button/basic_button_hold_panthera.lua index b63a4e2..646d4c9 100644 --- a/example/examples/basic/button/basic_button_hold_panthera.lua +++ b/example/examples/basic/button/basic_button_hold_panthera.lua @@ -1,266 +1,268 @@ return { - type = "animation_editor", - format = "json", data = { - nodes = { - }, animations = { { animation_id = "default", - duration = 1, animation_keys = { }, + duration = 1, }, { animation_id = "hold", - duration = 1, animation_keys = { { + easing = "outsine", end_value = -90, - easing = "outsine", - property_id = "rotation_z", + key_type = "tween", node_id = "button_image", - key_type = "tween", - }, - { - end_value = 90, - easing = "outsine", property_id = "rotation_z", + }, + { + easing = "outsine", + end_value = 90, + key_type = "tween", node_id = "mask", - key_type = "tween", + property_id = "rotation_z", }, { - end_value = 1.1, - easing = "outsine", - property_id = "scale_x", duration = 0.15, + easing = "outsine", + end_value = 1.1, key_type = "tween", node_id = "button", + property_id = "scale_x", start_value = 1, }, { - end_value = 1.1, - easing = "outsine", - property_id = "scale_y", duration = 0.15, + easing = "outsine", + end_value = 1.1, key_type = "tween", node_id = "button", - start_value = 1, - }, - { - end_value = 1.3, - easing = "outsine", - property_id = "scale_x", - duration = 0.15, - key_type = "tween", - node_id = "text", - start_value = 1, - }, - { - end_value = 1.3, - easing = "outsine", property_id = "scale_y", - duration = 0.15, - key_type = "tween", - node_id = "text", start_value = 1, }, { - start_value = 360, + duration = 0.15, easing = "outsine", - property_id = "fill_angle", + end_value = 1.3, + key_type = "tween", + node_id = "text", + property_id = "scale_x", + start_value = 1, + }, + { + duration = 0.15, + easing = "outsine", + end_value = 1.3, + key_type = "tween", + node_id = "text", + property_id = "scale_y", + start_value = 1, + }, + { duration = 1, + easing = "outsine", + key_type = "tween", node_id = "mask", - key_type = "tween", + property_id = "fill_angle", + start_value = 360, }, { - end_value = 1, - easing = "incirc", - property_id = "scale_x", duration = 0.85, - start_value = 1.1, + easing = "incirc", + end_value = 1, key_type = "tween", node_id = "button", + property_id = "scale_x", start_time = 0.15, + start_value = 1.1, }, { - end_value = 1, - easing = "incirc", - property_id = "scale_y", duration = 0.85, - start_value = 1.1, + easing = "incirc", + end_value = 1, key_type = "tween", node_id = "button", - start_time = 0.15, - }, - { - end_value = 1, - easing = "outsine", - property_id = "scale_x", - duration = 0.51, - start_value = 1.3, - key_type = "tween", - node_id = "text", - start_time = 0.49, - }, - { - end_value = 1, - easing = "outsine", property_id = "scale_y", + start_time = 0.15, + start_value = 1.1, + }, + { duration = 0.51, - start_value = 1.3, + easing = "outsine", + end_value = 1, key_type = "tween", node_id = "text", + property_id = "scale_x", start_time = 0.49, + start_value = 1.3, + }, + { + duration = 0.51, + easing = "outsine", + end_value = 1, + key_type = "tween", + node_id = "text", + property_id = "scale_y", + start_time = 0.49, + start_value = 1.3, }, }, + duration = 1, }, { animation_id = "complete", - duration = 0.4, animation_keys = { { - easing = "linear", - property_id = "inherit_alpha", data = "false", + easing = "linear", key_type = "trigger", node_id = "text", + property_id = "inherit_alpha", start_data = "true", }, { - end_value = 0.624, easing = "outsine", - property_id = "color_b", + end_value = 0.62, key_type = "tween", node_id = "button_image", + property_id = "color_b", start_value = 0.62, }, { - end_value = 0.875, easing = "outsine", - property_id = "color_g", + end_value = 0.88, key_type = "tween", node_id = "button_image", + property_id = "color_g", start_value = 0.835, }, { - end_value = 0.902, easing = "outsine", - property_id = "color_r", + end_value = 0.9, key_type = "tween", node_id = "button_image", + property_id = "color_r", start_value = 0.557, }, { + duration = 0.17, + easing = "outsine", end_value = 1.1, - easing = "outsine", + key_type = "tween", + node_id = "root", property_id = "color_a", - duration = 0.17, - key_type = "tween", - node_id = "root", start_value = 1, }, { - end_value = 1.2, + duration = 0.17, easing = "outsine", + end_value = 1.2, + key_type = "tween", + node_id = "root", property_id = "scale_x", - duration = 0.17, - key_type = "tween", - node_id = "root", start_value = 1, }, { + duration = 0.17, + easing = "outsine", end_value = 1.2, - easing = "outsine", - property_id = "scale_y", - duration = 0.17, key_type = "tween", node_id = "root", + property_id = "scale_y", start_value = 1, }, { - end_value = 0.557, + duration = 0.38, easing = "outsine", + end_value = 0.56, + key_type = "tween", + node_id = "button_image", property_id = "color_r", - duration = 0.38, - start_value = 0.902, - key_type = "tween", - node_id = "button_image", start_time = 0.02, + start_value = 0.9, }, { + duration = 0.38, + easing = "outsine", end_value = 0.62, - easing = "outsine", + key_type = "tween", + node_id = "button_image", property_id = "color_b", - duration = 0.38, - start_value = 0.624, - key_type = "tween", - node_id = "button_image", start_time = 0.02, + start_value = 0.62, }, { - end_value = 0.835, + duration = 0.38, easing = "outsine", + end_value = 0.84, + key_type = "tween", + node_id = "button_image", property_id = "color_g", - duration = 0.38, - start_value = 0.875, - key_type = "tween", - node_id = "button_image", start_time = 0.02, + start_value = 0.88, }, { - end_value = 1, + duration = 0.22, easing = "outsine", + end_value = 1, + key_type = "tween", + node_id = "root", property_id = "color_a", - duration = 0.22, + start_time = 0.17, start_value = 1.1, - key_type = "tween", - node_id = "root", - start_time = 0.17, }, { - end_value = 1, + duration = 0.22, easing = "outsine", + end_value = 1, + key_type = "tween", + node_id = "root", property_id = "scale_x", - duration = 0.22, - start_value = 1.2, - key_type = "tween", - node_id = "root", start_time = 0.17, + start_value = 1.2, }, { - end_value = 1, + duration = 0.22, easing = "outsine", - property_id = "scale_y", - duration = 0.22, - start_value = 1.2, + end_value = 1, key_type = "tween", node_id = "root", + property_id = "scale_y", start_time = 0.17, + start_value = 1.2, }, { - easing = "linear", - property_id = "inherit_alpha", - start_data = "false", data = "true", + easing = "linear", key_type = "trigger", node_id = "text", + property_id = "inherit_alpha", + start_data = "false", start_time = 0.39, }, }, + duration = 0.4, }, }, metadata = { - layers = { + fps = 60, + gizmo_steps = { }, gui_path = "/example/examples/basic/button/basic_button_hold.gui", - gizmo_steps = { + layers = { }, settings = { font_size = 40, }, - fps = 60, + template_animation_paths = { + }, + }, + nodes = { }, }, + format = "json", + type = "animation_editor", version = 1, } \ No newline at end of file diff --git a/example/examples/basic/checkbox/checkbox.gui b/example/examples/basic/checkbox/checkbox.gui index 287fcdb..445fc15 100644 --- a/example/examples/basic/checkbox/checkbox.gui +++ b/example/examples/basic/checkbox/checkbox.gui @@ -3,8 +3,8 @@ fonts { font: "/example/assets/fonts/text_bold.font" } textures { - name: "druid" - texture: "/example/assets/druid.atlas" + name: "druid_example" + texture: "/example/assets/druid_example.atlas" } nodes { size { @@ -28,7 +28,7 @@ nodes { z: 0.49 } type: TYPE_BOX - texture: "druid/rect_round2_width1" + texture: "druid_example/rect_round2_width1" id: "button" parent: "root" inherit_alpha: true @@ -46,7 +46,7 @@ nodes { z: 0.761 } type: TYPE_BOX - texture: "druid/icon_check" + texture: "druid_example/icon_check" id: "icon" parent: "button" inherit_alpha: true @@ -66,7 +66,7 @@ nodes { z: 0.333 } type: TYPE_BOX - texture: "druid/pixel" + texture: "druid_example/pixel" id: "selected" pivot: PIVOT_S adjust_mode: ADJUST_MODE_STRETCH diff --git a/example/examples/basic/checkbox/checkbox.lua b/example/examples/basic/checkbox/checkbox.lua index 32bee28..d8dee22 100644 --- a/example/examples/basic/checkbox/checkbox.lua +++ b/example/examples/basic/checkbox/checkbox.lua @@ -1,17 +1,12 @@ -local component = require("druid.component") -local event = require("druid.event") +local event = require("event.event") ----@class checkbox: druid.base_component ----@field druid druid_instance +---@class examples.checkbox: druid.widget ---@field button druid.button -local M = component.create("checkbox") +---@field is_enabled boolean +local M = {} ----@param template string ----@param nodes table -function M:init(template, nodes) - self.druid = self:get_druid(template, nodes) - +function M:init() self.button = self.druid:new_button("root", self.on_checkbox_click) -- Button to handle checkbox self.icon = self:get_node("icon") -- Checkbox icon to hide/show self.selected = self:get_node("selected") -- Selected effect to show when checkbox is changed @@ -47,4 +42,12 @@ function M:get_state() end +---@param output_log output_list +function M:on_example_created(output_log) + self.button.on_click:subscribe(function() + output_log:add_log_text("Checkbox Clicked: " .. tostring(self.is_enabled)) + end) +end + + return M diff --git a/example/examples/basic/checkbox_group/checkbox_group.gui b/example/examples/basic/checkbox_group/checkbox_group.gui index 275a269..2eeaef4 100644 --- a/example/examples/basic/checkbox_group/checkbox_group.gui +++ b/example/examples/basic/checkbox_group/checkbox_group.gui @@ -3,8 +3,8 @@ fonts { font: "/example/assets/fonts/text_bold.font" } textures { - name: "druid" - texture: "/example/assets/druid.atlas" + name: "druid_example" + texture: "/example/assets/druid_example.atlas" } nodes { size { diff --git a/example/examples/basic/checkbox_group/checkbox_group.lua b/example/examples/basic/checkbox_group/checkbox_group.lua index cff045f..ec01ffe 100644 --- a/example/examples/basic/checkbox_group/checkbox_group.lua +++ b/example/examples/basic/checkbox_group/checkbox_group.lua @@ -1,23 +1,19 @@ -local event = require("druid.event") -local component = require("druid.component") +local event = require("event.event") -- Require checkbox component from checkbox example local checkbox = require("example.examples.basic.checkbox.checkbox") ----@class checkbox_group: druid.base_component ----@field druid druid_instance ----@field button druid.button -local M = component.create("checkbox_group") +---@class examples.checkbox_group: druid.widget +---@field checkbox_1 examples.checkbox +---@field checkbox_2 examples.checkbox +---@field checkbox_3 examples.checkbox +local M = {} ----@param template string ----@param nodes table -function M:init(template, nodes) - self.druid = self:get_druid(template, nodes) - - self.checkbox_1 = self.druid:new(checkbox, "checkbox_1") - self.checkbox_2 = self.druid:new(checkbox, "checkbox_2") - self.checkbox_3 = self.druid:new(checkbox, "checkbox_3") +function M:init() + self.checkbox_1 = self.druid:new_widget(checkbox, "checkbox_1") + self.checkbox_2 = self.druid:new_widget(checkbox, "checkbox_2") + self.checkbox_3 = self.druid:new_widget(checkbox, "checkbox_3") self.checkbox_1.on_state_changed:subscribe(self.on_checkbox_click, self) self.checkbox_2.on_state_changed:subscribe(self.on_checkbox_click, self) @@ -36,4 +32,12 @@ function M:on_checkbox_click() end +---@param output_log output_list +function M:on_example_created(output_log) + self.on_state_changed:subscribe(function(state1, state2, state3) + output_log:add_log_text("State: " .. tostring(state1) .. " " .. tostring(state2) .. " " .. tostring(state3)) + end) +end + + return M diff --git a/example/examples/basic/drag/drag.gui b/example/examples/basic/drag/drag.gui index 80572e3..563e9bd 100644 --- a/example/examples/basic/drag/drag.gui +++ b/example/examples/basic/drag/drag.gui @@ -1,241 +1,37 @@ -script: "" textures { - name: "druid" - texture: "/example/assets/druid.atlas" -} -background_color { - x: 0.0 - y: 0.0 - z: 0.0 - w: 0.0 + name: "druid_example" + texture: "/example/assets/druid_example.atlas" } nodes { - position { - x: 0.0 - y: 0.0 - z: 0.0 - w: 1.0 - } - rotation { - x: 0.0 - y: 0.0 - z: 0.0 - w: 1.0 - } - scale { - x: 1.0 - y: 1.0 - z: 1.0 - w: 1.0 - } size { x: 1000.0 y: 1000.0 - z: 0.0 - w: 1.0 - } - color { - x: 1.0 - y: 1.0 - z: 1.0 - w: 1.0 } type: TYPE_BOX - blend_mode: BLEND_MODE_ALPHA - texture: "" id: "root" - xanchor: XANCHOR_NONE - yanchor: YANCHOR_NONE - pivot: PIVOT_CENTER - adjust_mode: ADJUST_MODE_FIT - layer: "" inherit_alpha: true - slice9 { - x: 0.0 - y: 0.0 - z: 0.0 - w: 0.0 - } - clipping_mode: CLIPPING_MODE_NONE - clipping_visible: true - clipping_inverted: false - alpha: 1.0 - template_node_child: false - size_mode: SIZE_MODE_MANUAL - custom_type: 0 - enabled: true visible: false - material: "" } nodes { - position { - x: 0.0 - y: 0.0 - z: 0.0 - w: 1.0 - } - rotation { - x: 0.0 - y: 0.0 - z: 0.0 - w: 1.0 - } - scale { - x: 1.0 - y: 1.0 - z: 1.0 - w: 1.0 - } - size { - x: 200.0 - y: 100.0 - z: 0.0 - w: 1.0 - } - color { - x: 1.0 - y: 1.0 - z: 1.0 - w: 1.0 - } type: TYPE_TEMPLATE id: "drag" parent: "root" - layer: "" inherit_alpha: true - alpha: 1.0 template: "/example/templates/button_text_blue.gui" - template_node_child: false - custom_type: 0 - enabled: true } nodes { - position { - x: 0.0 - y: 0.0 - z: 0.0 - w: 1.0 - } - rotation { - x: 0.0 - y: 0.0 - z: 0.0 - w: 1.0 - } - scale { - x: 1.0 - y: 1.0 - z: 1.0 - w: 1.0 - } - size { - x: 280.0 - y: 90.0 - z: 0.0 - w: 1.0 - } - color { - x: 0.631 - y: 0.843 - z: 0.961 - w: 1.0 - } type: TYPE_BOX - blend_mode: BLEND_MODE_ALPHA - texture: "druid/ui_circle_32" id: "drag/root" - xanchor: XANCHOR_NONE - yanchor: YANCHOR_NONE - pivot: PIVOT_CENTER - adjust_mode: ADJUST_MODE_FIT parent: "drag" - layer: "druid" - inherit_alpha: true - slice9 { - x: 16.0 - y: 16.0 - z: 16.0 - w: 16.0 - } - clipping_mode: CLIPPING_MODE_NONE - clipping_visible: true - clipping_inverted: false - alpha: 1.0 template_node_child: true - size_mode: SIZE_MODE_MANUAL - custom_type: 0 - enabled: true - visible: true - material: "" } nodes { - position { - x: 0.0 - y: 0.0 - z: 0.0 - w: 1.0 - } - rotation { - x: 0.0 - y: 0.0 - z: 0.0 - w: 1.0 - } - scale { - x: 1.0 - y: 1.0 - z: 1.0 - w: 1.0 - } - size { - x: 245.0 - y: 50.0 - z: 0.0 - w: 1.0 - } - color { - x: 0.31 - y: 0.318 - z: 0.322 - w: 1.0 - } type: TYPE_TEXT - blend_mode: BLEND_MODE_ALPHA text: "Drag Me" - font: "text_bold" id: "drag/text" - xanchor: XANCHOR_NONE - yanchor: YANCHOR_NONE - pivot: PIVOT_CENTER - outline { - x: 1.0 - y: 1.0 - z: 1.0 - w: 1.0 - } - shadow { - x: 1.0 - y: 1.0 - z: 1.0 - w: 1.0 - } - adjust_mode: ADJUST_MODE_FIT - line_break: false parent: "drag/root" - layer: "text_bold" - inherit_alpha: true - alpha: 1.0 - outline_alpha: 0.0 - shadow_alpha: 0.0 overridden_fields: 8 template_node_child: true - text_leading: 1.0 - text_tracking: 0.0 - custom_type: 0 - enabled: true - visible: true - material: "" } material: "/builtins/materials/gui.material" adjust_reference: ADJUST_REFERENCE_PARENT -max_nodes: 512 diff --git a/example/examples/basic/drag/drag.lua b/example/examples/basic/drag/drag.lua index fa51ad4..175b51f 100644 --- a/example/examples/basic/drag/drag.lua +++ b/example/examples/basic/drag/drag.lua @@ -1,15 +1,7 @@ -local component = require("druid.component") - ----@class drag: druid.base_component ----@field druid druid_instance -local M = component.create("drag") - - ----@param template string ----@param nodes table -function M:init(template, nodes) - self.druid = self:get_druid(template, nodes) +---@class examples.drag: druid.widget +local M = {} +function M:init() -- Init drag and move the drag node on drag callback self.drag = self.druid:new_drag("drag/root", function(_, dx, dy) local position_x = gui.get(self.drag.node, "position.x") @@ -25,5 +17,4 @@ function M:init(template, nodes) end) end - return M diff --git a/example/examples/basic/drag/drag_to_node.gui b/example/examples/basic/drag/drag_to_node.gui index ec8257a..c731c64 100644 --- a/example/examples/basic/drag/drag_to_node.gui +++ b/example/examples/basic/drag/drag_to_node.gui @@ -3,8 +3,8 @@ fonts { font: "/example/assets/fonts/text_bold.font" } textures { - name: "druid" - texture: "/example/assets/druid.atlas" + name: "druid_example" + texture: "/example/assets/druid_example.atlas" } nodes { size { @@ -51,7 +51,7 @@ nodes { z: 0.204 } type: TYPE_BOX - texture: "druid/ui_circle_64" + texture: "druid_example/ui_circle_64" id: "zone" parent: "root" inherit_alpha: true diff --git a/example/examples/basic/drag/drag_to_node.lua b/example/examples/basic/drag/drag_to_node.lua index 34fec17..61d2260 100644 --- a/example/examples/basic/drag/drag_to_node.lua +++ b/example/examples/basic/drag/drag_to_node.lua @@ -1,21 +1,14 @@ -local component = require("druid.component") +---@class examples.drag_to_node: druid.widget +local M = {} ----@class drag_to_node: druid.base_component ----@field druid druid_instance -local M = component.create("drag_to_node") - - ----@param template string ----@param nodes table -function M:init(template, nodes) - self.druid = self:get_druid(template, nodes) +function M:init() self.zone = self:get_node("zone") self.counter = 0 self.text_counter = self:get_node("text_counter") gui.set_text(self.text_counter, self.counter) -- Init drag and move the drag node on drag callback - self.drag = self.druid:new_drag("drag/root", self.on_drag_start) + self.drag = self.druid:new_drag("drag/root", self.on_drag) self.drag.on_drag_end:subscribe(self.on_drag_end) -- Save start position for animation @@ -23,7 +16,7 @@ function M:init(template, nodes) end -function M:on_drag_start(dx, dy, x, y, touch) +function M:on_drag(dx, dy, x, y, touch) local position_x = gui.get(self.drag.node, "position.x") local position_y = gui.get(self.drag.node, "position.y") gui.set(self.drag.node, "position.x", position_x + dx) diff --git a/example/examples/basic/examples_list.lua b/example/examples/basic/examples_list.lua index e130afb..ebf5071 100644 --- a/example/examples/basic/examples_list.lua +++ b/example/examples/basic/examples_list.lua @@ -1,5 +1,3 @@ -local const = require("druid.const") -local helper = require("druid.helper") local M = {} function M.get_examples() @@ -11,21 +9,7 @@ function M.get_examples() template = "basic_button", root = "basic_button/root", code_url = "example/examples/basic/button/basic_button.lua", - component_class = require("example.examples.basic.button.basic_button"), - properties_control = function(instance, properties_panel) - ---@cast instance basic_button - - local checkbox = properties_panel:add_checkbox("ui_enabled", false, function(value) - instance.button:set_enabled(value) - end) - checkbox:set_value(true) - end, - on_create = function(instance, output_log) - ---@cast instance basic_button - instance.button.on_click:subscribe(function() - output_log:add_log_text("Button Clicked") - end) - end, + widget_class = require("example.examples.basic.button.basic_button"), }, { name_id = "ui_example_basic_button_double_click", @@ -33,16 +17,7 @@ function M.get_examples() template = "basic_button_double_click", root = "basic_button_double_click/root", code_url = "example/examples/basic/button/basic_button_double_click.lua", - component_class = require("example.examples.basic.button.basic_button_double_click"), - on_create = function(instance, output_log) - ---@cast instance basic_button_double_click - instance.button.on_click:subscribe(function() - output_log:add_log_text("Clicked") - end) - instance.button.on_double_click:subscribe(function() - output_log:add_log_text("Double Clicked") - end) - end, + widget_class = require("example.examples.basic.button.basic_button_double_click"), }, { name_id = "ui_example_basic_button_hold", @@ -50,16 +25,7 @@ function M.get_examples() template = "basic_button_hold", root = "basic_button_hold/root", code_url = "example/examples/basic/button/basic_button_hold.lua", - component_class = require("example.examples.basic.button.basic_button_hold"), - on_create = function(instance, output_log) - ---@cast instance basic_button_hold - instance.button.on_click:subscribe(function() - output_log:add_log_text("Clicked") - end) - instance.button.on_long_click:subscribe(function() - output_log:add_log_text("On long click") - end) - end, + widget_class = require("example.examples.basic.button.basic_button_hold"), }, { name_id = "ui_example_basic_text", @@ -67,57 +33,7 @@ function M.get_examples() template = "basic_text", root = "basic_text/root", code_url = "example/examples/basic/text/basic_text.lua", - component_class = require("example.examples.basic.text.basic_text"), - properties_control = function(instance, properties_panel) - ---@cast instance basic_text - - local adjust_index = 1 - local adjust_types = { - const.TEXT_ADJUST.DOWNSCALE, - const.TEXT_ADJUST.DOWNSCALE_LIMITED, - --const.TEXT_ADJUST.SCALE_THEN_SCROLL, -- works bad with container for some reason - --const.TEXT_ADJUST.SCROLL, -- works bad with container for some reason - const.TEXT_ADJUST.TRIM, - } - properties_panel:add_button("ui_adjust_next", function() - adjust_index = adjust_index + 1 - if adjust_index > #adjust_types then - adjust_index = 1 - end - instance.text:set_text_adjust(adjust_types[adjust_index], 0.5) - end) - - local pivot_index = 1 - local pivot_list = { - gui.PIVOT_CENTER, - gui.PIVOT_W, - gui.PIVOT_SW, - gui.PIVOT_S, - gui.PIVOT_SE, - gui.PIVOT_E, - gui.PIVOT_NE, - gui.PIVOT_N, - gui.PIVOT_NW, - } - - ---@cast instance rich_text_tags - properties_panel:add_button("ui_pivot_next", function() - pivot_index = pivot_index + 1 - if pivot_index > #pivot_list then - pivot_index = 1 - end - instance:set_pivot(pivot_list[pivot_index]) - end) - end, - get_debug_info = function(instance) - ---@cast instance multiline_text - local info = "" - - info = info .. "Text Adjust: " .. instance.text.adjust_type .. "\n" - info = info .. "Pivot: " .. gui.get_pivot(instance.text.node) .. "\n" - - return info - end + widget_class = require("example.examples.basic.text.basic_text"), }, { name_id = "ui_example_basic_multiline_text", @@ -125,56 +41,7 @@ function M.get_examples() template = "multiline_text", root = "multiline_text/root", code_url = "example/examples/basic/text/multiline_text.lua", - component_class = require("example.examples.basic.text.multiline_text"), - properties_control = function(instance, properties_panel) - ---@cast instance multiline_text - - local adjust_index = 1 - local adjust_types = { - const.TEXT_ADJUST.DOWNSCALE, - const.TEXT_ADJUST.DOWNSCALE_LIMITED, - --const.TEXT_ADJUST.SCALE_THEN_SCROLL, -- works bad with container for some reason - --const.TEXT_ADJUST.SCROLL, -- works bad with container for some reason - const.TEXT_ADJUST.TRIM, - } - properties_panel:add_button("ui_adjust_next", function() - adjust_index = adjust_index + 1 - if adjust_index > #adjust_types then - adjust_index = 1 - end - instance.text:set_text_adjust(adjust_types[adjust_index], 0.8) - end) - - local pivot_index = 1 - local pivot_list = { - gui.PIVOT_CENTER, - gui.PIVOT_W, - gui.PIVOT_SW, - gui.PIVOT_S, - gui.PIVOT_SE, - gui.PIVOT_E, - gui.PIVOT_NE, - gui.PIVOT_N, - gui.PIVOT_NW, - } - - properties_panel:add_button("ui_pivot_next", function() - pivot_index = pivot_index + 1 - if pivot_index > #pivot_list then - pivot_index = 1 - end - instance:set_pivot(pivot_list[pivot_index]) - end) - end, - get_debug_info = function(instance) - ---@cast instance multiline_text - local info = "" - - info = info .. "Text Adjust: " .. instance.text.adjust_type .. "\n" - info = info .. "Pivot: " .. gui.get_pivot(instance.text.node) .. "\n" - - return info - end + widget_class = require("example.examples.basic.text.multiline_text"), }, { name_id = "ui_example_basic_hover", @@ -182,7 +49,7 @@ function M.get_examples() template = "hover", root = "hover/root", code_url = "example/examples/basic/hover/hover.lua", - component_class = require("example.examples.basic.hover.hover"), + widget_class = require("example.examples.basic.hover.hover"), }, { name_id = "ui_example_basic_drag", @@ -190,7 +57,7 @@ function M.get_examples() template = "drag", root = "drag/root", code_url = "example/examples/basic/drag/drag.lua", - component_class = require("example.examples.basic.drag.drag"), + widget_class = require("example.examples.basic.drag.drag"), }, { name_id = "ui_example_basic_drag_to_node", @@ -198,7 +65,7 @@ function M.get_examples() template = "drag_to_node", root = "drag_to_node/root", code_url = "example/examples/basic/drag/drag_to_node.lua", - component_class = require("example.examples.basic.drag.drag_to_node"), + widget_class = require("example.examples.basic.drag.drag_to_node"), }, { name_id = "ui_example_basic_slider", @@ -206,14 +73,7 @@ function M.get_examples() template = "basic_slider", root = "basic_slider/root", code_url = "example/examples/basic/slider/basic_slider.lua", - component_class = require("example.examples.basic.slider.basic_slider"), - on_create = function(instance, output_log) - ---@cast instance basic_slider - instance.slider.on_change_value:subscribe(function(_, value) - local value = helper.round(value, 2) - output_log:add_log_text("Slider Value: " .. value) - end) - end, + widget_class = require("example.examples.basic.slider.basic_slider"), }, { name_id = "ui_example_basic_slider_vertical", @@ -221,14 +81,7 @@ function M.get_examples() template = "basic_slider_vertical", root = "basic_slider_vertical/root", code_url = "example/examples/basic/slider/basic_slider_vertical.lua", - component_class = require("example.examples.basic.slider.basic_slider_vertical"), - on_create = function(instance, output_log) - ---@cast instance basic_slider_vertical - instance.slider.on_change_value:subscribe(function(_, value) - local value = helper.round(value, 2) - output_log:add_log_text("Slider Value: " .. value) - end) - end, + widget_class = require("example.examples.basic.slider.basic_slider_vertical"), }, { name_id = "ui_example_basic_slider_stepped", @@ -236,14 +89,7 @@ function M.get_examples() template = "basic_slider_stepped", root = "basic_slider_stepped/root", code_url = "example/examples/basic/slider/basic_slider_stepped.lua", - component_class = require("example.examples.basic.slider.basic_slider_stepped"), - on_create = function(instance, output_log) - ---@cast instance basic_slider - instance.slider.on_change_value:subscribe(function(_, value) - local value = helper.round(value, 2) - output_log:add_log_text("Slider Value: " .. value) - end) - end, + widget_class = require("example.examples.basic.slider.basic_slider_stepped"), }, { name_id = "ui_example_basic_progress_bar", @@ -251,13 +97,7 @@ function M.get_examples() template = "basic_progress_bar", root = "basic_progress_bar/root", code_url = "example/examples/basic/progress_bar/basic_progress_bar.lua", - component_class = require("example.examples.basic.progress_bar.basic_progress_bar"), - properties_control = function(instance, properties_panel) - ---@cast instance basic_progress_bar - properties_panel:add_slider("ui_value", 1, function(value) - instance:set_value(value) - end) - end, + widget_class = require("example.examples.basic.progress_bar.basic_progress_bar"), }, { name_id = "ui_example_basic_progress_bar_slice9", @@ -265,13 +105,7 @@ function M.get_examples() template = "basic_progress_bar_slice9", root = "basic_progress_bar_slice9/root", code_url = "example/examples/basic/progress_bar/basic_progress_bar_slice9.lua", - component_class = require("example.examples.basic.progress_bar.basic_progress_bar_slice9"), - properties_control = function(instance, properties_panel) - ---@cast instance basic_progress_bar_slice9 - properties_panel:add_slider("ui_value", 1, function(value) - instance:set_value(value) - end) - end, + widget_class = require("example.examples.basic.progress_bar.basic_progress_bar_slice9"), }, { name_id = "ui_example_basic_blocker", @@ -279,16 +113,7 @@ function M.get_examples() template = "basic_blocker", root = "basic_blocker/root", code_url = "example/examples/basic/blocker/basic_blocker.lua", - component_class = require("example.examples.basic.blocker.basic_blocker"), - on_create = function(instance, output_log) - ---@cast instance basic_blocker - instance.button_root.on_click:subscribe(function() - output_log:add_log_text("Root Clicked") - end) - instance.button.on_click:subscribe(function() - output_log:add_log_text("Button Clicked") - end) - end, + widget_class = require("example.examples.basic.blocker.basic_blocker"), }, { name_id = "ui_example_basic_back_handler", @@ -296,7 +121,7 @@ function M.get_examples() template = "basic_back_handler", root = "basic_back_handler/root", code_url = "example/examples/basic/back_handler/basic_back_handler.lua", - component_class = require("example.examples.basic.back_handler.basic_back_handler"), + widget_class = require("example.examples.basic.back_handler.basic_back_handler"), }, { name_id = "ui_example_basic_timer", @@ -304,13 +129,7 @@ function M.get_examples() template = "basic_timer", root = "basic_timer/root", code_url = "example/examples/basic/timer/basic_timer.lua", - component_class = require("example.examples.basic.timer.basic_timer"), - on_create = function(instance, output_log) - ---@cast instance basic_timer - instance.on_cycle_end:subscribe(function() - output_log:add_log_text("Timer Cycle End") - end) - end, + widget_class = require("example.examples.basic.timer.basic_timer"), }, { name_id = "ui_example_basic_hotkey", @@ -318,13 +137,7 @@ function M.get_examples() template = "basic_hotkey", root = "basic_hotkey/root", code_url = "example/examples/basic/hotkey/basic_hotkey.lua", - component_class = require("example.examples.basic.hotkey.basic_hotkey"), - on_create = function(instance, output_log) - ---@cast instance basic_hotkey - instance.hotkey.on_hotkey_released:subscribe(function() - output_log:add_log_text("Hotkey Released") - end) - end, + widget_class = require("example.examples.basic.hotkey.basic_hotkey"), }, { name_id = "ui_example_basic_scroll", @@ -332,71 +145,7 @@ function M.get_examples() template = "scroll", root = "scroll/root", code_url = "example/examples/basic/scroll/scroll.lua", - component_class = require("example.examples.basic.scroll.scroll"), - on_create = function(instance, output_log) - ---@cast instance scroll - instance.button_tutorial.on_click:subscribe(function() - output_log:add_log_text("Button Tutorial Clicked") - end) - instance.button_stencil.on_click:subscribe(function() - output_log:add_log_text("Button Stencil Clicked") - end) - end, - properties_control = function(instance, properties_panel) - ---@cast instance scroll - local scroll = instance.scroll - local is_stretch = instance.scroll.style.EXTRA_STRETCH_SIZE > 0 - properties_panel:add_checkbox("ui_elastic_scroll", is_stretch, function(value) - instance.scroll:set_extra_stretch_size(value and 100 or 0) - end) - - local view_node = instance.scroll.view_node - local is_stencil = gui.get_clipping_mode(view_node) == gui.CLIPPING_MODE_STENCIL - properties_panel:add_checkbox("ui_clipping", is_stencil, function(value) - gui.set_clipping_mode(view_node, value and gui.CLIPPING_MODE_STENCIL or gui.CLIPPING_MODE_NONE) - end) - - local slider_frict = properties_panel:add_slider("ui_slider_friction", 0, function(value) - scroll.style.FRICT = 1 - ((1 - value) * 0.1) - end) - slider_frict:set_text_function(function(value) - return string.format("%.2f", 1 - ((1 - value) * 0.1)) - end) - slider_frict:set_value(1 - (1 - scroll.style.FRICT) / 0.1) - - local slider_speed = properties_panel:add_slider("ui_slider_speed", 0, function(value) - scroll.style.INERT_SPEED = value * 50 - end) - slider_speed:set_value(scroll.style.INERT_SPEED / 50) - slider_speed:set_text_function(function(value) - return string.format("%.1f", value * 50) - end) - - local slider_wheel_speed = properties_panel:add_slider("ui_slider_wheel_speed", 0, function(value) - scroll.style.WHEEL_SCROLL_SPEED = value * 30 - end) - slider_wheel_speed:set_value(scroll.style.WHEEL_SCROLL_SPEED / 30) - slider_wheel_speed:set_text_function(function(value) - return string.format("%.1f", value * 30) - end) - - local wheel_by_inertion = properties_panel:add_checkbox("ui_wheel_by_inertion", scroll.style.WHEEL_SCROLL_BY_INERTION, function(value) - scroll.style.WHEEL_SCROLL_BY_INERTION = value - end) - wheel_by_inertion:set_value(scroll.style.WHEEL_SCROLL_BY_INERTION) - end, - get_debug_info = function(instance) - ---@cast instance scroll - local info = "" - - local s = instance.scroll - info = info .. "View Size Y: " .. gui.get(s.view_node, "size.y") .. "\n" - info = info .. "Content Size Y: " .. gui.get(s.content_node, "size.y") .. "\n" - info = info .. "Content position Y: " .. math.ceil(s.position.y) .. "\n" - info = info .. "Content Range Y: " .. s.available_pos.y .. " - " .. s.available_pos.w .. "\n" - - return info - end + widget_class = require("example.examples.basic.scroll.scroll"), }, { name_id = "ui_example_basic_scroll_slider", @@ -404,19 +153,7 @@ function M.get_examples() template = "scroll_slider", root = "scroll_slider/root", code_url = "example/examples/basic/scroll_slider/scroll_slider.lua", - component_class = require("example.examples.basic.scroll_slider.scroll_slider"), - get_debug_info = function(instance) - ---@cast instance scroll_slider - local info = "" - - local s = instance.scroll - info = info .. "View Size Y: " .. gui.get(s.view_node, "size.y") .. "\n" - info = info .. "Content Size Y: " .. gui.get(s.content_node, "size.y") .. "\n" - info = info .. "Content position Y: " .. math.ceil(s.position.y) .. "\n" - info = info .. "Content Range Y: " .. s.available_pos.y .. " - " .. s.available_pos.w .. "\n" - - return info - end + widget_class = require("example.examples.basic.scroll_slider.scroll_slider"), }, { name_id = "ui_example_basic_grid", @@ -424,87 +161,7 @@ function M.get_examples() template = "grid", root = "grid/root", code_url = "example/examples/basic/grid/grid.lua", - component_class = require("example.examples.basic.grid.grid"), - properties_control = function(instance, properties_panel) - ---@cast instance grid - - local grid = instance.grid - - local slider = properties_panel:add_slider("ui_grid_in_row", 0.3, function(value) - local in_row_amount = math.ceil(value * 10) - in_row_amount = math.max(1, in_row_amount) - grid:set_in_row(in_row_amount) - end) - slider:set_text_function(function(value) - return tostring(math.ceil(value * 10)) - end) - - properties_panel:add_button("ui_add_element", function() - if #instance.created_nodes >= 36 then - return - end - instance:add_element() - end) - - properties_panel:add_button("ui_remove_element", function() - instance:remove_element() - end) - - properties_panel:add_button("ui_clear_elements", function() - instance:clear() - end) - - properties_panel:add_checkbox("ui_dynamic_pos", grid.style.IS_DYNAMIC_NODE_POSES, function() - grid.style.IS_DYNAMIC_NODE_POSES = not grid.style.IS_DYNAMIC_NODE_POSES - grid:refresh() - end) - - properties_panel:add_checkbox("ui_align_last_row", grid.style.IS_ALIGN_LAST_ROW, function() - grid.style.IS_ALIGN_LAST_ROW = not grid.style.IS_ALIGN_LAST_ROW - grid:refresh() - end) - - local pivot_index = 1 - local pivot_list = { - gui.PIVOT_CENTER, - gui.PIVOT_W, - gui.PIVOT_SW, - gui.PIVOT_S, - gui.PIVOT_SE, - gui.PIVOT_E, - gui.PIVOT_NE, - gui.PIVOT_N, - gui.PIVOT_NW, - } - - properties_panel:add_button("ui_pivot_next", function() - pivot_index = pivot_index + 1 - if pivot_index > #pivot_list then - pivot_index = 1 - end - grid:set_pivot(pivot_list[pivot_index]) - end) - - local slider_size = properties_panel:add_slider("ui_item_size", 0.5, function(value) - local size = 50 + value * 100 - grid:set_item_size(size, size) - end) - slider_size:set_text_function(function(value) - return tostring(50 + math.ceil(value * 100)) - end) - slider_size:set_value(0.5) - end, - get_debug_info = function(instance) - ---@cast instance grid - local info = "" - - local grid = instance.grid - info = info .. "Grid Items: " .. #grid.nodes .. "\n" - info = info .. "Grid Item Size: " .. grid.node_size.x .. " x " .. grid.node_size.y .. "\n" - info = info .. "Pivot: " .. tostring(grid.pivot) - - return info - end + widget_class = require("example.examples.basic.grid.grid"), }, { name_id = "ui_example_basic_scroll_bind_grid", @@ -512,52 +169,7 @@ function M.get_examples() template = "scroll_bind_grid", root = "scroll_bind_grid/root", code_url = "example/examples/basic/scroll_bind_grid/scroll_bind_grid.lua", - component_class = require("example.examples.basic.scroll_bind_grid.scroll_bind_grid"), - properties_control = function(instance, properties_panel) - ---@cast instance scroll_bind_grid - - local view_node = instance.scroll.view_node - local is_stencil = gui.get_clipping_mode(view_node) == gui.CLIPPING_MODE_STENCIL - properties_panel:add_checkbox("ui_clipping", is_stencil, function(value) - gui.set_clipping_mode(view_node, value and gui.CLIPPING_MODE_STENCIL or gui.CLIPPING_MODE_NONE) - end) - - properties_panel:add_button("ui_add_element", function() - if #instance.created_nodes >= 100 then - return - end - instance:add_element() - end) - - properties_panel:add_button("ui_remove_element", function() - instance:remove_element() - end) - - properties_panel:add_button("ui_clear_elements", function() - instance:clear() - end) - end, - get_debug_info = function(instance) - ---@cast instance scroll_bind_grid - local info = "" - - local s = instance.scroll - local view_node_size = gui.get(s.view_node, "size.y") - local scroll_position = -s.position - local scroll_bottom_position = vmath.vector3(scroll_position.x, scroll_position.y - view_node_size, scroll_position.z) - - info = info .. "View Size Y: " .. gui.get(s.view_node, "size.y") .. "\n" - info = info .. "Content Size Y: " .. gui.get(s.content_node, "size.y") .. "\n" - info = info .. "Content position Y: " .. math.ceil(s.position.y) .. "\n" - info = info .. "Content Range Y: " .. s.available_pos.y .. " - " .. s.available_pos.w .. "\n" - info = info .. "Grid Items: " .. #instance.grid.nodes .. "\n" - info = info .. "Grid Item Size: " .. instance.grid.node_size.x .. " x " .. instance.grid.node_size.y .. "\n" - info = info .. "Top Scroll Pos Grid Index: " .. instance.grid:get_index(scroll_position) .. "\n" - info = info .. "Bottm Scroll Pos Grid Index: " .. instance.grid:get_index(scroll_bottom_position) .. "\n" - - - return info - end + widget_class = require("example.examples.basic.scroll_bind_grid.scroll_bind_grid"), }, { name_id = "ui_example_basic_scroll_bind_grid_horizontal", @@ -565,53 +177,7 @@ function M.get_examples() template = "scroll_bind_grid_horizontal", root = "scroll_bind_grid_horizontal/root", code_url = "example/examples/basic/scroll_bind_grid/scroll_bind_grid_horizontal.lua", - component_class = require("example.examples.basic.scroll_bind_grid.scroll_bind_grid_horizontal"), - properties_control = function(instance, properties_panel) - ---@cast instance scroll_bind_grid_horizontal - - local view_node = instance.scroll.view_node - local is_stencil = gui.get_clipping_mode(view_node) == gui.CLIPPING_MODE_STENCIL - - properties_panel:add_checkbox("ui_clipping", is_stencil, function(value) - gui.set_clipping_mode(view_node, value and gui.CLIPPING_MODE_STENCIL or gui.CLIPPING_MODE_NONE) - end) - - - properties_panel:add_button("ui_add_element", function() - if #instance.created_nodes >= 100 then - return - end - instance:add_element() - end) - - properties_panel:add_button("ui_remove_element", function() - instance:remove_element() - end) - - properties_panel:add_button("ui_clear_elements", function() - instance:clear() - end) - end, - get_debug_info = function(instance) - ---@cast instance scroll_bind_grid_horizontal - local info = "" - - local s = instance.scroll - local view_node_size = gui.get(s.view_node, "size.x") - local scroll_position = -s.position - local scroll_bottom_position = vmath.vector3(scroll_position.x + view_node_size, scroll_position.y, scroll_position.z) - - info = info .. "View Size X: " .. gui.get(s.view_node, "size.x") .. "\n" - info = info .. "Content Size X: " .. gui.get(s.content_node, "size.x") .. "\n" - info = info .. "Content position X: " .. math.ceil(s.position.x) .. "\n" - info = info .. "Content Range X: " .. s.available_pos.x .. " - " .. s.available_pos.z .. "\n" - info = info .. "Grid Items: " .. #instance.grid.nodes .. "\n" - info = info .. "Grid Item Size: " .. instance.grid.node_size.x .. " x " .. instance.grid.node_size.y .. "\n" - info = info .. "Left Scroll Pos Grid Index: " .. instance.grid:get_index(scroll_position) .. "\n" - info = info .. "Right Scroll Pos Grid Index: " .. instance.grid:get_index(scroll_bottom_position) .. "\n" - - return info - end + widget_class = require("example.examples.basic.scroll_bind_grid.scroll_bind_grid_horizontal"), }, { name_id = "ui_example_basic_scroll_bind_grid_points", @@ -619,52 +185,7 @@ function M.get_examples() template = "scroll_bind_grid_points", root = "scroll_bind_grid_points/root", code_url = "example/examples/basic/scroll_bind_grid/scroll_bind_grid_points.lua", - component_class = require("example.examples.basic.scroll_bind_grid.scroll_bind_grid_points"), - properties_control = function(instance, properties_panel) - ---@cast instance scroll_bind_grid_points - - local view_node = instance.scroll.view_node - local is_stencil = gui.get_clipping_mode(view_node) == gui.CLIPPING_MODE_STENCIL - properties_panel:add_checkbox("ui_clipping", is_stencil, function(value) - gui.set_clipping_mode(view_node, value and gui.CLIPPING_MODE_STENCIL or gui.CLIPPING_MODE_NONE) - end) - - properties_panel:add_button("ui_add_element", function() - if #instance.created_nodes >= 100 then - return - end - instance:add_element() - end) - - properties_panel:add_button("ui_remove_element", function() - instance:remove_element() - end) - - properties_panel:add_button("ui_clear_elements", function() - instance:clear() - end) - end, - get_debug_info = function(instance) - ---@cast instance scroll_bind_grid_points - local info = "" - - local s = instance.scroll - local view_node_size = gui.get(s.view_node, "size.y") - local scroll_position = -s.position - local scroll_bottom_position = vmath.vector3(scroll_position.x, scroll_position.y - view_node_size, scroll_position.z) - - info = info .. "View Size Y: " .. gui.get(s.view_node, "size.y") .. "\n" - info = info .. "Content Size Y: " .. gui.get(s.content_node, "size.y") .. "\n" - info = info .. "Content position Y: " .. math.ceil(s.position.y) .. "\n" - info = info .. "Content Range Y: " .. s.available_pos.y .. " - " .. s.available_pos.w .. "\n" - info = info .. "Grid Items: " .. #instance.grid.nodes .. "\n" - info = info .. "Grid Item Size: " .. instance.grid.node_size.x .. " x " .. instance.grid.node_size.y .. "\n" - info = info .. "Top Scroll Pos Grid Index: " .. instance.grid:get_index(scroll_position) .. "\n" - info = info .. "Bottm Scroll Pos Grid Index: " .. instance.grid:get_index(scroll_bottom_position) .. "\n" - - - return info - end + widget_class = require("example.examples.basic.scroll_bind_grid.scroll_bind_grid_points"), }, { name_id = "ui_example_basic_input", @@ -672,16 +193,7 @@ function M.get_examples() template = "basic_input", root = "basic_input/root", code_url = "example/examples/basic/input/basic_input.lua", - component_class = require("example.examples.basic.input.basic_input"), - on_create = function(instance, output_log) - ---@cast instance basic_input - instance.input.on_input_unselect:subscribe(function(_, text) - output_log:add_log_text("Input: " .. text) - end) - instance.input_2.on_input_unselect:subscribe(function(_, text) - output_log:add_log_text("Input 2: " .. text) - end) - end, + widget_class = require("example.examples.basic.input.basic_input"), }, { name_id = "ui_example_input_password", @@ -689,13 +201,7 @@ function M.get_examples() template = "input_password", root = "input_password/root", code_url = "example/examples/basic/input/input_password.lua", - component_class = require("example.examples.basic.input.input_password"), - on_create = function(instance, output_log) - ---@cast instance input_password - instance.input.on_input_unselect:subscribe(function(_, text) - output_log:add_log_text("Input: " .. text) - end) - end, + widget_class = require("example.examples.basic.input.input_password"), }, { name_id = "ui_example_basic_rich_input", @@ -703,16 +209,7 @@ function M.get_examples() template = "basic_rich_input", root = "basic_rich_input/root", code_url = "example/examples/basic/input/rich_input.lua", - component_class = require("example.examples.basic.input.rich_input"), - on_create = function(instance, output_log) - ---@cast instance rich_input - instance.rich_input.input.on_input_unselect:subscribe(function(_, text) - output_log:add_log_text("Input: " .. text) - end) - instance.rich_input_2.input.on_input_unselect:subscribe(function(_, text) - output_log:add_log_text("Input 2: " .. text) - end) - end, + widget_class = require("example.examples.basic.input.rich_input"), }, { name_id = "ui_example_basic_rich_text", @@ -720,7 +217,7 @@ function M.get_examples() template = "basic_rich_text", root = "basic_rich_text/root", code_url = "example/examples/basic/rich_text/basic_rich_text.lua", - component_class = require("example.examples.basic.rich_text.basic_rich_text"), + widget_class = require("example.examples.basic.rich_text.basic_rich_text"), }, { name_id = "ui_example_rich_text_tags", @@ -728,30 +225,7 @@ function M.get_examples() template = "rich_text_tags", root = "rich_text_tags/root", code_url = "example/examples/basic/rich_text/rich_text_tags.lua", - component_class = require("example.examples.basic.rich_text.rich_text_tags"), - properties_control = function(instance, properties_panel) - local pivot_index = 1 - local pivot_list = { - gui.PIVOT_CENTER, - gui.PIVOT_W, - gui.PIVOT_SW, - gui.PIVOT_S, - gui.PIVOT_SE, - gui.PIVOT_E, - gui.PIVOT_NE, - gui.PIVOT_N, - gui.PIVOT_NW, - } - - ---@cast instance rich_text_tags - properties_panel:add_button("ui_pivot_next", function() - pivot_index = pivot_index + 1 - if pivot_index > #pivot_list then - pivot_index = 1 - end - instance:set_pivot(pivot_list[pivot_index]) - end) - end + widget_class = require("example.examples.basic.rich_text.rich_text_tags"), }, --{ -- name_id = "ui_example_rich_text_tags_custom", @@ -797,13 +271,7 @@ function M.get_examples() template = "basic_swipe", root = "basic_swipe/root", code_url = "example/examples/basic/swipe/basic_swipe.lua", - component_class = require("example.examples.basic.swipe.basic_swipe"), - on_create = function(instance, output_log) - ---@cast instance basic_swipe - instance.swipe.on_swipe:subscribe(function(_, side, dist, delta_time) - output_log:add_log_text("Swipe Side: " .. side) - end) - end, + widget_class = require("example.examples.basic.swipe.basic_swipe"), }, { name_id = "ui_example_checkbox", @@ -811,13 +279,7 @@ function M.get_examples() template = "checkbox", root = "checkbox/root", code_url = "example/examples/basic/checkbox/checkbox.lua", - component_class = require("example.examples.basic.checkbox.checkbox"), - on_create = function(instance, output_log) - ---@cast instance checkbox - instance.button.on_click:subscribe(function() - output_log:add_log_text("Checkbox Clicked: " .. tostring(instance.is_enabled)) - end) - end, + widget_class = require("example.examples.basic.checkbox.checkbox"), }, { name_id = "ui_example_checkbox_group", @@ -825,13 +287,7 @@ function M.get_examples() template = "checkbox_group", root = "checkbox_group/root", code_url = "example/examples/basic/checkbox_group/checkbox_group.lua", - component_class = require("example.examples.basic.checkbox_group.checkbox_group"), - on_create = function(instance, output_log) - ---@cast instance checkbox_group - instance.on_state_changed:subscribe(function(state1, state2, state3) - output_log:add_log_text("State: " .. tostring(state1) .. " " .. tostring(state2) .. " " .. tostring(state3)) - end) - end, + widget_class = require("example.examples.basic.checkbox_group.checkbox_group"), }, { name_id = "ui_example_radio_group", @@ -839,15 +295,9 @@ function M.get_examples() template = "radio_group", root = "radio_group/root", code_url = "example/examples/basic/radio_group/radio_group.lua", - component_class = require("example.examples.basic.radio_group.radio_group"), - on_create = function(instance, output_log) - ---@cast instance radio_group - instance.on_state_changed:subscribe(function(selected) - output_log:add_log_text("Selected: " .. selected) - end) - end, + widget_class = require("example.examples.basic.radio_group.radio_group"), }, } end -return M \ No newline at end of file +return M diff --git a/example/examples/basic/grid/grid.gui b/example/examples/basic/grid/grid.gui index c649b07..93a555a 100644 --- a/example/examples/basic/grid/grid.gui +++ b/example/examples/basic/grid/grid.gui @@ -1,117 +1,40 @@ -script: "" fonts { name: "text_bold" font: "/example/assets/fonts/text_bold.font" } textures { - name: "druid" - texture: "/example/assets/druid.atlas" -} -background_color { - x: 0.0 - y: 0.0 - z: 0.0 - w: 0.0 + name: "druid_example" + texture: "/example/assets/druid_example.atlas" } nodes { - position { - x: 0.0 - y: 0.0 - z: 0.0 - w: 1.0 - } - rotation { - x: 0.0 - y: 0.0 - z: 0.0 - w: 1.0 - } - scale { - x: 1.0 - y: 1.0 - z: 1.0 - w: 1.0 - } size { x: 1000.0 y: 1000.0 - z: 0.0 - w: 1.0 - } - color { - x: 1.0 - y: 1.0 - z: 1.0 - w: 1.0 } type: TYPE_BOX - blend_mode: BLEND_MODE_ALPHA - texture: "druid/empty" + texture: "druid_example/empty" id: "root" - xanchor: XANCHOR_NONE - yanchor: YANCHOR_NONE - pivot: PIVOT_CENTER - adjust_mode: ADJUST_MODE_FIT - layer: "" inherit_alpha: true - slice9 { - x: 0.0 - y: 0.0 - z: 0.0 - w: 0.0 - } - clipping_mode: CLIPPING_MODE_NONE - clipping_visible: true - clipping_inverted: false - alpha: 1.0 - template_node_child: false - size_mode: SIZE_MODE_MANUAL - custom_type: 0 - enabled: true visible: false - material: "" } nodes { position { - x: 0.0 y: 300.0 - z: 0.0 - w: 1.0 - } - rotation { - x: 0.0 - y: 0.0 - z: 0.0 - w: 1.0 - } - scale { - x: 1.0 - y: 1.0 - z: 1.0 - w: 1.0 } size { x: 600.0 y: 600.0 - z: 0.0 - w: 1.0 } color { x: 0.173 y: 0.184 z: 0.204 - w: 1.0 } type: TYPE_BOX - blend_mode: BLEND_MODE_ALPHA - texture: "druid/ui_circle_32" + texture: "druid_example/ui_circle_32" id: "grid" - xanchor: XANCHOR_NONE - yanchor: YANCHOR_NONE pivot: PIVOT_N - adjust_mode: ADJUST_MODE_FIT parent: "root" - layer: "" inherit_alpha: true slice9 { x: 16.0 @@ -119,117 +42,32 @@ nodes { z: 16.0 w: 16.0 } - clipping_mode: CLIPPING_MODE_NONE - clipping_visible: true - clipping_inverted: false - alpha: 1.0 - template_node_child: false - size_mode: SIZE_MODE_MANUAL - custom_type: 0 - enabled: true - visible: true - material: "" } nodes { - position { - x: 0.0 - y: 0.0 - z: 0.0 - w: 1.0 - } - rotation { - x: 0.0 - y: 0.0 - z: 0.0 - w: 1.0 - } - scale { - x: 1.0 - y: 1.0 - z: 1.0 - w: 1.0 - } size { x: 100.0 y: 100.0 - z: 0.0 - w: 1.0 - } - color { - x: 1.0 - y: 1.0 - z: 1.0 - w: 1.0 } type: TYPE_BOX - blend_mode: BLEND_MODE_ALPHA - texture: "" id: "prefab" - xanchor: XANCHOR_NONE - yanchor: YANCHOR_NONE - pivot: PIVOT_CENTER - adjust_mode: ADJUST_MODE_FIT parent: "grid" - layer: "" inherit_alpha: true - slice9 { - x: 0.0 - y: 0.0 - z: 0.0 - w: 0.0 - } - clipping_mode: CLIPPING_MODE_NONE - clipping_visible: true - clipping_inverted: false - alpha: 1.0 - template_node_child: false - size_mode: SIZE_MODE_MANUAL - custom_type: 0 - enabled: true visible: false - material: "" } nodes { - position { - x: 0.0 - y: 0.0 - z: 0.0 - w: 1.0 - } - rotation { - x: 0.0 - y: 0.0 - z: 0.0 - w: 1.0 - } - scale { - x: 1.0 - y: 1.0 - z: 1.0 - w: 1.0 - } size { x: 90.0 y: 90.0 - z: 0.0 - w: 1.0 } color { x: 0.631 y: 0.843 z: 0.961 - w: 1.0 } type: TYPE_BOX - blend_mode: BLEND_MODE_ALPHA - texture: "druid/ui_circle_32" + texture: "druid_example/ui_circle_32" id: "panel" - xanchor: XANCHOR_NONE - yanchor: YANCHOR_NONE - pivot: PIVOT_CENTER - adjust_mode: ADJUST_MODE_FIT parent: "prefab" - layer: "" inherit_alpha: true slice9 { x: 16.0 @@ -237,84 +75,39 @@ nodes { z: 16.0 w: 16.0 } - clipping_mode: CLIPPING_MODE_NONE - clipping_visible: true - clipping_inverted: false - alpha: 1.0 - template_node_child: false - size_mode: SIZE_MODE_MANUAL - custom_type: 0 - enabled: true - visible: true - material: "" } nodes { - position { - x: 0.0 - y: 0.0 - z: 0.0 - w: 1.0 - } - rotation { - x: 0.0 - y: 0.0 - z: 0.0 - w: 1.0 - } scale { x: 1.5 y: 1.5 - z: 1.0 - w: 1.0 } size { x: 50.0 y: 50.0 - z: 0.0 - w: 1.0 } color { x: 0.31 y: 0.318 z: 0.322 - w: 1.0 } type: TYPE_TEXT - blend_mode: BLEND_MODE_ALPHA text: "1" font: "text_bold" id: "text" - xanchor: XANCHOR_NONE - yanchor: YANCHOR_NONE - pivot: PIVOT_CENTER outline { x: 1.0 y: 1.0 z: 1.0 - w: 1.0 } shadow { x: 1.0 y: 1.0 z: 1.0 - w: 1.0 } - adjust_mode: ADJUST_MODE_FIT - line_break: false parent: "prefab" - layer: "" inherit_alpha: true - alpha: 1.0 outline_alpha: 0.0 shadow_alpha: 0.0 - template_node_child: false - text_leading: 1.0 - text_tracking: 0.0 - custom_type: 0 - enabled: true - visible: true - material: "" } material: "/builtins/materials/gui.material" adjust_reference: ADJUST_REFERENCE_PARENT -max_nodes: 512 diff --git a/example/examples/basic/grid/grid.lua b/example/examples/basic/grid/grid.lua index b9928b5..874896d 100644 --- a/example/examples/basic/grid/grid.lua +++ b/example/examples/basic/grid/grid.lua @@ -1,23 +1,15 @@ -local component = require("druid.component") - ----@class grid: druid.base_component ----@field grid druid.static_grid +---@class examples.grid: druid.widget +---@field grid druid.grid ---@field text druid.text ----@field druid druid_instance -local M = component.create("grid") - - ----@param template string ----@param nodes table -function M:init(template, nodes) - self.druid = self:get_druid(template, nodes) +local M = {} +function M:init() self.created_nodes = {} self.prefab = self:get_node("prefab") gui.set_enabled(self.prefab, false) - self.grid = self.druid:new_static_grid("grid", "prefab", 3) + self.grid = self.druid:new_grid("grid", "prefab", 3) for index = 1, 9 do self:add_element() @@ -63,4 +55,86 @@ function M:clear() end +---@param properties_panel properties_panel +function M:properties_control(properties_panel) + local grid = self.grid + + local slider = properties_panel:add_slider("ui_grid_in_row", 0.3, function(value) + local in_row_amount = math.ceil(value * 10) + in_row_amount = math.max(1, in_row_amount) + grid:set_in_row(in_row_amount) + end) + slider:set_text_function(function(value) + return tostring(math.ceil(value * 10)) + end) + + properties_panel:add_button("ui_add_element", function() + if #self.created_nodes >= 36 then + return + end + self:add_element() + end) + + properties_panel:add_button("ui_remove_element", function() + self:remove_element() + end) + + properties_panel:add_button("ui_clear_elements", function() + self:clear() + end) + + properties_panel:add_checkbox("ui_dynamic_pos", grid.style.IS_DYNAMIC_NODE_POSES, function() + grid.style.IS_DYNAMIC_NODE_POSES = not grid.style.IS_DYNAMIC_NODE_POSES + grid:refresh() + end) + + properties_panel:add_checkbox("ui_align_last_row", grid.style.IS_ALIGN_LAST_ROW, function() + grid.style.IS_ALIGN_LAST_ROW = not grid.style.IS_ALIGN_LAST_ROW + grid:refresh() + end) + + local pivot_index = 1 + local pivot_list = { + gui.PIVOT_CENTER, + gui.PIVOT_W, + gui.PIVOT_SW, + gui.PIVOT_S, + gui.PIVOT_SE, + gui.PIVOT_E, + gui.PIVOT_NE, + gui.PIVOT_N, + gui.PIVOT_NW, + } + + properties_panel:add_button("ui_pivot_next", function() + pivot_index = pivot_index + 1 + if pivot_index > #pivot_list then + pivot_index = 1 + end + grid:set_pivot(pivot_list[pivot_index]) + end) + + local slider_size = properties_panel:add_slider("ui_item_size", 0.5, function(value) + local size = 50 + value * 100 + grid:set_item_size(size, size) + end) + slider_size:set_text_function(function(value) + return tostring(50 + math.ceil(value * 100)) + end) + slider_size:set_value(0.5) +end + + +---@return string +function M:get_debug_info() + local info = "" + + info = info .. "Grid Items: " .. #self.grid.nodes .. "\n" + info = info .. "Grid Item Size: " .. self.grid.node_size.x .. " x " .. self.grid.node_size.y .. "\n" + info = info .. "Pivot: " .. tostring(self.grid.pivot) + + return info +end + + return M diff --git a/example/examples/basic/hotkey/basic_hotkey.lua b/example/examples/basic/hotkey/basic_hotkey.lua index d003699..829d456 100644 --- a/example/examples/basic/hotkey/basic_hotkey.lua +++ b/example/examples/basic/hotkey/basic_hotkey.lua @@ -1,21 +1,11 @@ -local hotkey = require("druid.extended.hotkey") - -local component = require("druid.component") - ----@class basic_hotkey: druid.base_component ----@field druid druid_instance +---@class examples.basic_hotkey: druid.widget ---@field root node ---@field text druid.text -local M = component.create("basic_hotkey") - - ----@param template string ----@param nodes table -function M:init(template, nodes) - self.druid = self:get_druid(template, nodes) +local M = {} +function M:init() self.root = self:get_node("root") - self.hotkey = self.druid:new(hotkey, { "key_lshift", "key_x" }, self.on_hotkey) + self.hotkey = self.druid:new_hotkey({ "key_lshift", "key_x" }, self.on_hotkey) end @@ -26,4 +16,12 @@ function M:on_hotkey() end +---@param output_log output_list +function M:on_example_created(output_log) + self.hotkey.on_hotkey_released:subscribe(function() + output_log:add_log_text("Hotkey Released") + end) +end + + return M diff --git a/example/examples/basic/hover/hover.gui b/example/examples/basic/hover/hover.gui index 45adecd..26597cd 100644 --- a/example/examples/basic/hover/hover.gui +++ b/example/examples/basic/hover/hover.gui @@ -1,410 +1,64 @@ -script: "" textures { - name: "druid" - texture: "/example/assets/druid.atlas" -} -background_color { - x: 0.0 - y: 0.0 - z: 0.0 - w: 0.0 + name: "druid_example" + texture: "/example/assets/druid_example.atlas" } nodes { - position { - x: 0.0 - y: 0.0 - z: 0.0 - w: 1.0 - } - rotation { - x: 0.0 - y: 0.0 - z: 0.0 - w: 1.0 - } - scale { - x: 1.0 - y: 1.0 - z: 1.0 - w: 1.0 - } size { x: 1000.0 y: 1000.0 - z: 0.0 - w: 1.0 - } - color { - x: 1.0 - y: 1.0 - z: 1.0 - w: 1.0 } type: TYPE_BOX - blend_mode: BLEND_MODE_ALPHA - texture: "" id: "root" - xanchor: XANCHOR_NONE - yanchor: YANCHOR_NONE - pivot: PIVOT_CENTER - adjust_mode: ADJUST_MODE_FIT - layer: "" inherit_alpha: true - slice9 { - x: 0.0 - y: 0.0 - z: 0.0 - w: 0.0 - } - clipping_mode: CLIPPING_MODE_NONE - clipping_visible: true - clipping_inverted: false - alpha: 1.0 - template_node_child: false - size_mode: SIZE_MODE_MANUAL - custom_type: 0 - enabled: true visible: false - material: "" } nodes { position { - x: 0.0 y: 100.0 - z: 0.0 - w: 1.0 - } - rotation { - x: 0.0 - y: 0.0 - z: 0.0 - w: 1.0 - } - scale { - x: 1.0 - y: 1.0 - z: 1.0 - w: 1.0 - } - size { - x: 200.0 - y: 100.0 - z: 0.0 - w: 1.0 - } - color { - x: 1.0 - y: 1.0 - z: 1.0 - w: 1.0 } type: TYPE_TEMPLATE id: "button_mouse_hover" parent: "root" - layer: "" inherit_alpha: true - alpha: 1.0 template: "/example/templates/button_text_green.gui" - template_node_child: false - custom_type: 0 - enabled: true } nodes { - position { - x: 0.0 - y: 0.0 - z: 0.0 - w: 1.0 - } - rotation { - x: 0.0 - y: 0.0 - z: 0.0 - w: 1.0 - } - scale { - x: 1.0 - y: 1.0 - z: 1.0 - w: 1.0 - } - size { - x: 280.0 - y: 90.0 - z: 0.0 - w: 1.0 - } - color { - x: 0.557 - y: 0.835 - z: 0.62 - w: 1.0 - } type: TYPE_BOX - blend_mode: BLEND_MODE_ALPHA - texture: "druid/ui_circle_32" id: "button_mouse_hover/root" - xanchor: XANCHOR_NONE - yanchor: YANCHOR_NONE - pivot: PIVOT_CENTER - adjust_mode: ADJUST_MODE_FIT parent: "button_mouse_hover" - layer: "druid" - inherit_alpha: true - slice9 { - x: 16.0 - y: 16.0 - z: 16.0 - w: 16.0 - } - clipping_mode: CLIPPING_MODE_NONE - clipping_visible: true - clipping_inverted: false - alpha: 1.0 template_node_child: true - size_mode: SIZE_MODE_MANUAL - custom_type: 0 - enabled: true - visible: true - material: "" } nodes { - position { - x: 0.0 - y: 0.0 - z: 0.0 - w: 1.0 - } - rotation { - x: 0.0 - y: 0.0 - z: 0.0 - w: 1.0 - } - scale { - x: 1.0 - y: 1.0 - z: 1.0 - w: 1.0 - } - size { - x: 245.0 - y: 50.0 - z: 0.0 - w: 1.0 - } - color { - x: 0.31 - y: 0.318 - z: 0.322 - w: 1.0 - } type: TYPE_TEXT - blend_mode: BLEND_MODE_ALPHA text: "Mouse Hover" - font: "text_bold" id: "button_mouse_hover/text" - xanchor: XANCHOR_NONE - yanchor: YANCHOR_NONE - pivot: PIVOT_CENTER - outline { - x: 1.0 - y: 1.0 - z: 1.0 - w: 1.0 - } - shadow { - x: 1.0 - y: 1.0 - z: 1.0 - w: 1.0 - } - adjust_mode: ADJUST_MODE_FIT - line_break: false parent: "button_mouse_hover/root" - layer: "text_bold" - inherit_alpha: true - alpha: 1.0 - outline_alpha: 0.0 - shadow_alpha: 0.0 overridden_fields: 8 template_node_child: true - text_leading: 1.0 - text_tracking: 0.0 - custom_type: 0 - enabled: true - visible: true - material: "" } nodes { position { - x: 0.0 y: -100.0 - z: 0.0 - w: 1.0 - } - rotation { - x: 0.0 - y: 0.0 - z: 0.0 - w: 1.0 - } - scale { - x: 1.0 - y: 1.0 - z: 1.0 - w: 1.0 - } - size { - x: 200.0 - y: 100.0 - z: 0.0 - w: 1.0 - } - color { - x: 1.0 - y: 1.0 - z: 1.0 - w: 1.0 } type: TYPE_TEMPLATE id: "button_mobile_hover" parent: "root" - layer: "" inherit_alpha: true - alpha: 1.0 template: "/example/templates/button_text_green.gui" - template_node_child: false - custom_type: 0 - enabled: true } nodes { - position { - x: 0.0 - y: 0.0 - z: 0.0 - w: 1.0 - } - rotation { - x: 0.0 - y: 0.0 - z: 0.0 - w: 1.0 - } - scale { - x: 1.0 - y: 1.0 - z: 1.0 - w: 1.0 - } - size { - x: 280.0 - y: 90.0 - z: 0.0 - w: 1.0 - } - color { - x: 0.557 - y: 0.835 - z: 0.62 - w: 1.0 - } type: TYPE_BOX - blend_mode: BLEND_MODE_ALPHA - texture: "druid/ui_circle_32" id: "button_mobile_hover/root" - xanchor: XANCHOR_NONE - yanchor: YANCHOR_NONE - pivot: PIVOT_CENTER - adjust_mode: ADJUST_MODE_FIT parent: "button_mobile_hover" - layer: "druid" - inherit_alpha: true - slice9 { - x: 16.0 - y: 16.0 - z: 16.0 - w: 16.0 - } - clipping_mode: CLIPPING_MODE_NONE - clipping_visible: true - clipping_inverted: false - alpha: 1.0 template_node_child: true - size_mode: SIZE_MODE_MANUAL - custom_type: 0 - enabled: true - visible: true - material: "" } nodes { - position { - x: 0.0 - y: 0.0 - z: 0.0 - w: 1.0 - } - rotation { - x: 0.0 - y: 0.0 - z: 0.0 - w: 1.0 - } - scale { - x: 1.0 - y: 1.0 - z: 1.0 - w: 1.0 - } - size { - x: 245.0 - y: 50.0 - z: 0.0 - w: 1.0 - } - color { - x: 0.31 - y: 0.318 - z: 0.322 - w: 1.0 - } type: TYPE_TEXT - blend_mode: BLEND_MODE_ALPHA - text: "Mobile Hover" - font: "text_bold" + text: "Touch Hover" id: "button_mobile_hover/text" - xanchor: XANCHOR_NONE - yanchor: YANCHOR_NONE - pivot: PIVOT_CENTER - outline { - x: 1.0 - y: 1.0 - z: 1.0 - w: 1.0 - } - shadow { - x: 1.0 - y: 1.0 - z: 1.0 - w: 1.0 - } - adjust_mode: ADJUST_MODE_FIT - line_break: false parent: "button_mobile_hover/root" - layer: "text_bold" - inherit_alpha: true - alpha: 1.0 - outline_alpha: 0.0 - shadow_alpha: 0.0 overridden_fields: 8 template_node_child: true - text_leading: 1.0 - text_tracking: 0.0 - custom_type: 0 - enabled: true - visible: true - material: "" } material: "/builtins/materials/gui.material" adjust_reference: ADJUST_REFERENCE_PARENT -max_nodes: 512 diff --git a/example/examples/basic/hover/hover.lua b/example/examples/basic/hover/hover.lua index 3044b85..dfb5eee 100644 --- a/example/examples/basic/hover/hover.lua +++ b/example/examples/basic/hover/hover.lua @@ -1,19 +1,12 @@ -local component = require("druid.component") - ----@class hover: druid.base_component ----@field druid druid_instance +---@class examples.hover: druid.widget ---@field hover druid.hover ---@field hover_pressed druid.hover -local M = component.create("hover") +local M = {} ---Color: #E6DF9F local HOVERED_COLOR = vmath.vector4(230/255, 223/255, 159/255, 1.0) ----@param template string ----@param nodes table -function M:init(template, nodes) - self.druid = self:get_druid(template, nodes) - +function M:init() -- Default hover callback is `on_hover`, designed for mobile devices -- It's only hover if touch action is above the node self.hover_default = self.druid:new_hover("button_mobile_hover/root", self.on_hover) diff --git a/example/examples/basic/input/basic_input.gui b/example/examples/basic/input/basic_input.gui index 3b6ad0c..cb3516d 100644 --- a/example/examples/basic/input/basic_input.gui +++ b/example/examples/basic/input/basic_input.gui @@ -10,7 +10,7 @@ nodes { } nodes { position { - y: 445.0 + y: 301.0 } type: TYPE_TEMPLATE id: "input" @@ -32,7 +32,7 @@ nodes { } nodes { position { - y: 332.0 + y: 151.0 } type: TYPE_TEMPLATE id: "input_2" @@ -50,8 +50,6 @@ nodes { type: TYPE_TEXT id: "input_2/text" parent: "input_2/root" - overridden_fields: 1 - overridden_fields: 14 template_node_child: true } material: "/builtins/materials/gui.material" diff --git a/example/examples/basic/input/basic_input.lua b/example/examples/basic/input/basic_input.lua index 0b86b99..997fd03 100644 --- a/example/examples/basic/input/basic_input.lua +++ b/example/examples/basic/input/basic_input.lua @@ -1,10 +1,7 @@ -local component = require("druid.component") -local input = require("druid.extended.input") - ----@class basic_input: druid.base_component ----@field druid druid_instance +---@class examples.basic_input: druid.widget ---@field input druid.input -local M = component.create("basic_input") +local M = {} + local COLOR_SELECTED = vmath.vector3(1, 1, 1) local COLOR_UNSELECTED = vmath.vector3(184/255, 189/255, 194/255) @@ -14,7 +11,7 @@ local COLOR_UNSELECTED = vmath.vector3(184/255, 189/255, 194/255) function M:init(template, nodes) self.druid = self:get_druid(template, nodes) - self.input = self.druid:new(input, "input/root", "input/text") + self.input = self.druid:new_input("input/root", "input/text") self.input.on_input_select:subscribe(function() gui.set_color(self.input.text.node, COLOR_SELECTED) end) @@ -23,7 +20,7 @@ function M:init(template, nodes) gui.set_color(self.input.text.node, COLOR_UNSELECTED) end) - self.input_2 = self.druid:new(input, "input_2/root", "input_2/text") --[[@as druid.input]] + self.input_2 = self.druid:new_input("input_2/root", "input_2/text") self.input_2:set_text("") self.input_2.on_input_select:subscribe(function() gui.set_color(self.input_2.text.node, COLOR_SELECTED) @@ -40,4 +37,21 @@ function M:init(template, nodes) end +---@param output_log output_list +function M:on_example_created(output_log) + self.input.on_input_select:subscribe(function() + output_log:add_log_text("Input Selected") + end) + self.input_2.on_input_select:subscribe(function() + output_log:add_log_text("Input 2 Selected") + end) + self.input.on_input_unselect:subscribe(function(_, text) + output_log:add_log_text("Input Deselected. Text: " .. text) + end) + self.input_2.on_input_unselect:subscribe(function(_, text) + output_log:add_log_text("Input Deselected. Text: " .. text) + end) +end + + return M diff --git a/example/examples/basic/input/input_password.gui b/example/examples/basic/input/input_password.gui index c93752a..f2a0d84 100644 --- a/example/examples/basic/input/input_password.gui +++ b/example/examples/basic/input/input_password.gui @@ -9,6 +9,9 @@ nodes { visible: false } nodes { + position { + y: 249.0 + } type: TYPE_TEMPLATE id: "input" parent: "root" @@ -25,8 +28,6 @@ nodes { type: TYPE_TEXT id: "input/text" parent: "input/root" - overridden_fields: 1 - overridden_fields: 14 template_node_child: true } material: "/builtins/materials/gui.material" diff --git a/example/examples/basic/input/input_password.lua b/example/examples/basic/input/input_password.lua index d56760a..d9af327 100644 --- a/example/examples/basic/input/input_password.lua +++ b/example/examples/basic/input/input_password.lua @@ -1,19 +1,12 @@ -local component = require("druid.component") -local input = require("druid.extended.input") - ----@class input_password: druid.component ----@field druid druid_instance +---@class examples.input_password: druid.widget ---@field root node -local M = component.create("input_password") +---@field input druid.input +local M = {} ----@param template string ----@param nodes table -function M:init(template, nodes) - self.druid = self:get_druid(template, nodes) - +function M:init() self.root = self:get_node("root") - self.input = self.druid:new(input, "input/root", "input/text", gui.KEYBOARD_TYPE_PASSWORD) + self.input = self.druid:new_input("input/root", "input/text", gui.KEYBOARD_TYPE_PASSWORD) self.input:set_text("") self.input.on_input_unselect:subscribe(function(_, text) @@ -22,4 +15,12 @@ function M:init(template, nodes) end +---@param output_log output_list +function M:on_example_created(output_log) + self.input.on_input_unselect:subscribe(function(_, text) + output_log:add_log_text("Input: " .. text) + end) +end + + return M diff --git a/example/examples/basic/input/rich_input.gui b/example/examples/basic/input/rich_input.gui index 3aa942b..e5efcba 100644 --- a/example/examples/basic/input/rich_input.gui +++ b/example/examples/basic/input/rich_input.gui @@ -1,6 +1,6 @@ textures { - name: "druid" - texture: "/example/assets/druid.atlas" + name: "druid_example" + texture: "/example/assets/druid_example.atlas" } nodes { size { @@ -14,7 +14,7 @@ nodes { } nodes { position { - y: 431.0 + y: 309.0 } type: TYPE_TEMPLATE id: "rich_input" @@ -35,34 +35,21 @@ nodes { template_node_child: true } nodes { - position { - x: -240.0 - } type: TYPE_TEXT id: "rich_input/placeholder_text" - pivot: PIVOT_W parent: "rich_input/button" - overridden_fields: 1 - overridden_fields: 14 template_node_child: true } nodes { - position { - x: -240.0 - } type: TYPE_TEXT id: "rich_input/input_text" - pivot: PIVOT_W parent: "rich_input/button" - overridden_fields: 1 - overridden_fields: 14 template_node_child: true } nodes { type: TYPE_BOX id: "rich_input/cursor_node" parent: "rich_input/button" - overridden_fields: 1 template_node_child: true } nodes { @@ -73,7 +60,7 @@ nodes { } nodes { position { - y: 308.0 + y: 159.0 } type: TYPE_TEMPLATE id: "rich_input_2" @@ -94,22 +81,33 @@ nodes { template_node_child: true } nodes { + position { + x: -240.0 + } type: TYPE_TEXT id: "rich_input_2/placeholder_text" + pivot: PIVOT_W parent: "rich_input_2/button" + overridden_fields: 1 + overridden_fields: 14 template_node_child: true } nodes { + position { + x: -240.0 + } type: TYPE_TEXT id: "rich_input_2/input_text" + pivot: PIVOT_W parent: "rich_input_2/button" + overridden_fields: 1 + overridden_fields: 14 template_node_child: true } nodes { type: TYPE_BOX id: "rich_input_2/cursor_node" parent: "rich_input_2/button" - overridden_fields: 1 template_node_child: true } nodes { diff --git a/example/examples/basic/input/rich_input.lua b/example/examples/basic/input/rich_input.lua index cef718c..606ffbc 100644 --- a/example/examples/basic/input/rich_input.lua +++ b/example/examples/basic/input/rich_input.lua @@ -1,22 +1,27 @@ -local component = require("druid.component") -local rich_input = require("druid.custom.rich_input.rich_input") - ----@class rich_input: druid.base_component ----@field druid druid_instance +---@class examples.rich_input: druid.widget ---@field rich_input druid.rich_input -local M = component.create("rich_input") +---@field rich_input_2 druid.rich_input +local M = {} ----@param template string ----@param nodes table -function M:init(template, nodes) - self.druid = self:get_druid(template, nodes) - self.rich_input = self.druid:new(rich_input, "rich_input") --[[@as druid.rich_input]] +function M:init() + self.rich_input = self.druid:new_rich_input("rich_input") --[[@as druid.rich_input]] self.rich_input:set_placeholder("Enter text") - self.rich_input_2 = self.druid:new(rich_input, "rich_input_2") --[[@as druid.rich_input]] + self.rich_input_2 = self.druid:new_rich_input("rich_input_2") --[[@as druid.rich_input]] self.rich_input_2:set_placeholder("Enter text") end +---@param output_log output_list +function M:on_example_created(output_log) + self.rich_input.input.on_input_unselect:subscribe(function(_, text) + output_log:add_log_text("Input: " .. text) + end) + self.rich_input_2.input.on_input_unselect:subscribe(function(_, text) + output_log:add_log_text("Input 2: " .. text) + end) +end + + return M diff --git a/example/examples/basic/progress_bar/basic_progress_bar.gui b/example/examples/basic/progress_bar/basic_progress_bar.gui index 975d78c..a46689f 100644 --- a/example/examples/basic/progress_bar/basic_progress_bar.gui +++ b/example/examples/basic/progress_bar/basic_progress_bar.gui @@ -3,8 +3,8 @@ fonts { font: "/example/assets/fonts/text_bold.font" } textures { - name: "druid" - texture: "/example/assets/druid.atlas" + name: "druid_example" + texture: "/example/assets/druid_example.atlas" } nodes { size { @@ -30,7 +30,7 @@ nodes { z: 0.49 } type: TYPE_BOX - texture: "druid/pixel" + texture: "druid_example/pixel" id: "progress_bar_back" pivot: PIVOT_W parent: "root" @@ -47,7 +47,7 @@ nodes { z: 0.961 } type: TYPE_BOX - texture: "druid/pixel" + texture: "druid_example/pixel" id: "progress_bar_fill" pivot: PIVOT_W parent: "progress_bar_back" diff --git a/example/examples/basic/progress_bar/basic_progress_bar.lua b/example/examples/basic/progress_bar/basic_progress_bar.lua index 6681d01..c742668 100644 --- a/example/examples/basic/progress_bar/basic_progress_bar.lua +++ b/example/examples/basic/progress_bar/basic_progress_bar.lua @@ -1,18 +1,9 @@ -local component = require("druid.component") -local progress = require("druid.extended.progress") - ----@class basic_progress_bar: druid.base_component ----@field druid druid_instance +---@class examples.basic_progress_bar: druid.widget ---@field progress druid.progress -local M = component.create("basic_progress_bar") +local M = {} - ----@param template string ----@param nodes table -function M:init(template, nodes) - self.druid = self:get_druid(template, nodes) - - self.progress = self.druid:new(progress, "progress_bar_fill", "x") +function M:init() + self.progress = self.druid:new_progress("progress_bar_fill", "x") self.text_value = self:get_node("progress_value") self:set_value(self.progress:get()) @@ -25,4 +16,12 @@ function M:set_value(value) end +---@param properties_panel properties_panel +function M:properties_control(properties_panel) + properties_panel:add_slider("ui_value", 1, function(value) + self:set_value(value) + end) +end + + return M diff --git a/example/examples/basic/progress_bar/basic_progress_bar_slice9.gui b/example/examples/basic/progress_bar/basic_progress_bar_slice9.gui index cfeff26..133f0c7 100644 --- a/example/examples/basic/progress_bar/basic_progress_bar_slice9.gui +++ b/example/examples/basic/progress_bar/basic_progress_bar_slice9.gui @@ -3,8 +3,8 @@ fonts { font: "/example/assets/fonts/text_bold.font" } textures { - name: "druid" - texture: "/example/assets/druid.atlas" + name: "druid_example" + texture: "/example/assets/druid_example.atlas" } nodes { size { @@ -30,7 +30,7 @@ nodes { z: 0.49 } type: TYPE_BOX - texture: "druid/ui_circle_16" + texture: "druid_example/ui_circle_16" id: "progress_bar_back" pivot: PIVOT_W parent: "root" @@ -53,7 +53,7 @@ nodes { z: 0.961 } type: TYPE_BOX - texture: "druid/ui_circle_16" + texture: "druid_example/ui_circle_16" id: "progress_bar_fill" pivot: PIVOT_W parent: "progress_bar_back" diff --git a/example/examples/basic/progress_bar/basic_progress_bar_slice9.lua b/example/examples/basic/progress_bar/basic_progress_bar_slice9.lua index 9a73c0d..1708779 100644 --- a/example/examples/basic/progress_bar/basic_progress_bar_slice9.lua +++ b/example/examples/basic/progress_bar/basic_progress_bar_slice9.lua @@ -1,18 +1,9 @@ -local component = require("druid.component") -local progress = require("druid.extended.progress") - ----@class basic_progress_bar_slice9: druid.base_component ----@field druid druid_instance +---@class examples.basic_progress_bar_slice9: druid.widget ---@field progress druid.progress -local M = component.create("basic_progress_bar_slice9") +local M = {} - ----@param template string ----@param nodes table -function M:init(template, nodes) - self.druid = self:get_druid(template, nodes) - - self.progress = self.druid:new(progress, "progress_bar_fill", "x") +function M:init() + self.progress = self.druid:new_progress("progress_bar_fill", "x") self.text_value = self:get_node("progress_value") self:set_value(self.progress:get()) @@ -25,4 +16,12 @@ function M:set_value(value) end +---@param properties_panel properties_panel +function M:properties_control(properties_panel) + properties_panel:add_slider("ui_value", 1, function(value) + self:set_value(value) + end) +end + + return M diff --git a/example/examples/basic/radio_group/radio_group.gui b/example/examples/basic/radio_group/radio_group.gui index f4b822a..2eeaef4 100644 --- a/example/examples/basic/radio_group/radio_group.gui +++ b/example/examples/basic/radio_group/radio_group.gui @@ -3,8 +3,8 @@ fonts { font: "/example/assets/fonts/text_bold.font" } textures { - name: "druid" - texture: "/example/assets/druid.atlas" + name: "druid_example" + texture: "/example/assets/druid_example.atlas" } nodes { size { @@ -34,47 +34,22 @@ nodes { template_node_child: true } nodes { - color { - x: 0.31 - y: 0.318 - z: 0.322 - } type: TYPE_BOX - texture: "druid/ui_circle_32" id: "checkbox_1/button" parent: "checkbox_1/root" - slice9 { - x: 8.0 - y: 8.0 - z: 8.0 - w: 8.0 - } - overridden_fields: 5 - overridden_fields: 9 - overridden_fields: 22 template_node_child: true } nodes { type: TYPE_BOX - texture: "druid/ui_circle_16" id: "checkbox_1/icon" parent: "checkbox_1/button" - overridden_fields: 9 template_node_child: true } nodes { - position { - y: -8.0 - } type: TYPE_BOX - texture: "druid/ui_circle_16" id: "checkbox_1/selected" parent: "checkbox_1/button" - overridden_fields: 1 - overridden_fields: 9 - overridden_fields: 38 template_node_child: true - size_mode: SIZE_MODE_AUTO } nodes { type: TYPE_TEMPLATE @@ -90,47 +65,22 @@ nodes { template_node_child: true } nodes { - color { - x: 0.31 - y: 0.318 - z: 0.322 - } type: TYPE_BOX - texture: "druid/ui_circle_32" id: "checkbox_2/button" parent: "checkbox_2/root" - slice9 { - x: 8.0 - y: 8.0 - z: 8.0 - w: 8.0 - } - overridden_fields: 5 - overridden_fields: 9 - overridden_fields: 22 template_node_child: true } nodes { type: TYPE_BOX - texture: "druid/ui_circle_16" id: "checkbox_2/icon" parent: "checkbox_2/button" - overridden_fields: 9 template_node_child: true } nodes { - position { - y: -8.0 - } type: TYPE_BOX - texture: "druid/ui_circle_16" id: "checkbox_2/selected" parent: "checkbox_2/button" - overridden_fields: 1 - overridden_fields: 9 - overridden_fields: 38 template_node_child: true - size_mode: SIZE_MODE_AUTO } nodes { position { @@ -149,47 +99,22 @@ nodes { template_node_child: true } nodes { - color { - x: 0.31 - y: 0.318 - z: 0.322 - } type: TYPE_BOX - texture: "druid/ui_circle_32" id: "checkbox_3/button" parent: "checkbox_3/root" - slice9 { - x: 8.0 - y: 8.0 - z: 8.0 - w: 8.0 - } - overridden_fields: 5 - overridden_fields: 9 - overridden_fields: 22 template_node_child: true } nodes { type: TYPE_BOX - texture: "druid/ui_circle_16" id: "checkbox_3/icon" parent: "checkbox_3/button" - overridden_fields: 9 template_node_child: true } nodes { - position { - y: -8.0 - } type: TYPE_BOX - texture: "druid/ui_circle_16" id: "checkbox_3/selected" parent: "checkbox_3/button" - overridden_fields: 1 - overridden_fields: 9 - overridden_fields: 38 template_node_child: true - size_mode: SIZE_MODE_AUTO } material: "/builtins/materials/gui.material" adjust_reference: ADJUST_REFERENCE_PARENT diff --git a/example/examples/basic/radio_group/radio_group.lua b/example/examples/basic/radio_group/radio_group.lua index 1b74273..f81f9f7 100644 --- a/example/examples/basic/radio_group/radio_group.lua +++ b/example/examples/basic/radio_group/radio_group.lua @@ -1,25 +1,20 @@ -local component = require("druid.component") -local event = require("druid.event") +local event = require("event.event") -- Require checkbox component from checkbox example local checkbox = require("example.examples.basic.checkbox.checkbox") ----@class radio_group: druid.base_component ----@field druid druid_instance ----@field button druid.button -local M = component.create("radio_group") +---@class examples.radio_group: druid.widget +---@field checkboxes examples.checkbox[] +---@field state boolean[] +local M = {} ----@param template string ----@param nodes table -function M:init(template, nodes) - self.druid = self:get_druid(template, nodes) - +function M:init() self.state = {} self.checkboxes = { - self.druid:new(checkbox, "checkbox_1"), - self.druid:new(checkbox, "checkbox_2"), - self.druid:new(checkbox, "checkbox_3") + self.druid:new_widget(checkbox, "checkbox_1"), + self.druid:new_widget(checkbox, "checkbox_2"), + self.druid:new_widget(checkbox, "checkbox_3") } for i = 1, #self.checkboxes do @@ -52,4 +47,12 @@ function M:on_checkbox_click() end +---@param output_log output_list +function M:on_example_created(output_log) + self.on_state_changed:subscribe(function(selected) + output_log:add_log_text("Selected: " .. selected) + end) +end + + return M diff --git a/example/examples/basic/rich_text/basic_rich_text.gui b/example/examples/basic/rich_text/basic_rich_text.gui index 659924a..f51575b 100644 --- a/example/examples/basic/rich_text/basic_rich_text.gui +++ b/example/examples/basic/rich_text/basic_rich_text.gui @@ -7,8 +7,8 @@ fonts { font: "/example/assets/fonts/text_regular.font" } textures { - name: "druid" - texture: "/example/assets/druid.atlas" + name: "druid_example" + texture: "/example/assets/druid_example.atlas" } nodes { size { diff --git a/example/examples/basic/rich_text/basic_rich_text.lua b/example/examples/basic/rich_text/basic_rich_text.lua index 3abb632..2662ae6 100644 --- a/example/examples/basic/rich_text/basic_rich_text.lua +++ b/example/examples/basic/rich_text/basic_rich_text.lua @@ -1,17 +1,10 @@ -local component = require("druid.component") -local rich_text = require("druid.custom.rich_text.rich_text") - ----@class basic_rich_text: druid.base_component ----@field druid druid_instance +---@class examples.basic_rich_text: druid.widget ---@field rich_text druid.rich_text -local M = component.create("basic_rich_text") +local M = {} ----@param template string ----@param nodes table -function M:init(template, nodes) - self.druid = self:get_druid(template, nodes) - self.druid:new(rich_text, "text", "Hello, I'm a Rich Text!") +function M:init() + self.druid:new_rich_text("text", "Hello, I'm a Rich Text!") end diff --git a/example/examples/basic/rich_text/rich_text_tags.gui b/example/examples/basic/rich_text/rich_text_tags.gui index de6d63e..0105d87 100644 --- a/example/examples/basic/rich_text/rich_text_tags.gui +++ b/example/examples/basic/rich_text/rich_text_tags.gui @@ -7,8 +7,8 @@ fonts { font: "/example/assets/fonts/text_regular.font" } textures { - name: "druid" - texture: "/example/assets/druid.atlas" + name: "druid_example" + texture: "/example/assets/druid_example.atlas" } textures { name: "druid_logo" @@ -35,7 +35,7 @@ nodes { z: 0.204 } type: TYPE_BOX - texture: "druid/ui_circle_64" + texture: "druid_example/ui_circle_64" id: "background" parent: "root" inherit_alpha: true diff --git a/example/examples/basic/rich_text/rich_text_tags.lua b/example/examples/basic/rich_text/rich_text_tags.lua index 69f65cb..a1c803d 100644 --- a/example/examples/basic/rich_text/rich_text_tags.lua +++ b/example/examples/basic/rich_text/rich_text_tags.lua @@ -1,32 +1,30 @@ -local component = require("druid.component") -local rich_text = require("druid.custom.rich_text.rich_text") local helper = require("druid.helper") ----@class rich_text_tags: druid.base_component ----@field druid druid_instance ----@field rich_text druid.rich_text -local M = component.create("rich_text_tags") +---@class examples.rich_text_tags: druid.widget +---@field rich_text_color druid.rich_text +---@field rich_text_font druid.rich_text +---@field rich_text_size druid.rich_text +---@field rich_text_breaks druid.rich_text +---@field rich_text_image druid.rich_text +---@field position table +local M = {} ----@param template string ----@param nodes table -function M:init(template, nodes) - self.druid = self:get_druid(template, nodes) - - self.rich_text_color = self.druid:new(rich_text, "rich_text_color") --[[@as druid.rich_text]] +function M:init() + self.rich_text_color = self.druid:new_rich_text("rich_text_color") --[[@as druid.rich_text]] self.rich_text_color:set_text("Hello, I'm a Rich Text and it's nested color tag") - self.rich_text_font = self.druid:new(rich_text, "rich_text_font") --[[@as druid.rich_text]] + self.rich_text_font = self.druid:new_rich_text("rich_text_font") --[[@as druid.rich_text]] self.rich_text_font:set_text("Hello, I'm a Rich Text and this is bold text") - self.rich_text_size = self.druid:new(rich_text, "rich_text_size") --[[@as druid.rich_text]] + self.rich_text_size = self.druid:new_rich_text("rich_text_size") --[[@as druid.rich_text]] self.rich_text_size:set_text("Hello, I'm have East Pivot and different text scale") - self.rich_text_breaks = self.druid:new(rich_text, "rich_text_breaks") --[[@as druid.rich_text]] + self.rich_text_breaks = self.druid:new_rich_text("rich_text_breaks") --[[@as druid.rich_text]] self.rich_text_breaks:set_text("Hello, I'm Rich Text
With \"Line Breaks\"\nEnabled in GUI") - self.rich_text_image = self.druid:new(rich_text, "rich_text_image") --[[@as druid.rich_text]] - self.rich_text_image:set_text("Hello, I'mRich Text ") + self.rich_text_image = self.druid:new_rich_text("rich_text_image") --[[@as druid.rich_text]] + self.rich_text_image:set_text("Hello, I'mRich Text ") self.position = { [self.rich_text_color] = gui.get_position(self.rich_text_color.root), @@ -73,4 +71,29 @@ function M:set_pivot(pivot) end +---@param properties_panel properties_panel +function M:properties_control(properties_panel) + local pivot_index = 1 + local pivot_list = { + gui.PIVOT_CENTER, + gui.PIVOT_W, + gui.PIVOT_SW, + gui.PIVOT_S, + gui.PIVOT_SE, + gui.PIVOT_E, + gui.PIVOT_NE, + gui.PIVOT_N, + gui.PIVOT_NW, + } + + properties_panel:add_button("ui_pivot_next", function() + pivot_index = pivot_index + 1 + if pivot_index > #pivot_list then + pivot_index = 1 + end + self:set_pivot(pivot_list[pivot_index]) + end) +end + + return M diff --git a/example/examples/basic/rich_text/rich_text_tags_custom.gui b/example/examples/basic/rich_text/rich_text_tags_custom.gui index 3c17183..28981a8 100644 --- a/example/examples/basic/rich_text/rich_text_tags_custom.gui +++ b/example/examples/basic/rich_text/rich_text_tags_custom.gui @@ -7,8 +7,8 @@ fonts { font: "/example/assets/fonts/text_regular.font" } textures { - name: "druid" - texture: "/example/assets/druid.atlas" + name: "druid_example" + texture: "/example/assets/druid_example.atlas" } nodes { size { diff --git a/example/examples/basic/rich_text/rich_text_tags_custom.lua b/example/examples/basic/rich_text/rich_text_tags_custom.lua index 14d92e2..734366c 100644 --- a/example/examples/basic/rich_text/rich_text_tags_custom.lua +++ b/example/examples/basic/rich_text/rich_text_tags_custom.lua @@ -1,21 +1,18 @@ -local component = require("druid.component") -local rich_text = require("druid.custom.rich_text.rich_text") local helper = require("druid.helper") -local event = require("druid.event") +local event = require("event.event") ----@class rich_text_tags_custom: druid.base_component ----@field druid druid_instance ----@field rich_text druid.rich_text -local M = component.create("rich_text_tags_custom") +---@class examples.rich_text_tags_custom: druid.widget +---@field rich_text_link druid.rich_text +---@field rich_text_characters druid.rich_text +---@field rich_text_custom druid.rich_text +---@field position table +---@field on_link_click event +local M = {} ----@param template string ----@param nodes table -function M:init(template, nodes) - self.druid = self:get_druid(template, nodes) - +function M:init() do -- Init rich text with links example - self.rich_text_link = self.druid:new(rich_text, "rich_text_link") --[[@as druid.rich_text]] + self.rich_text_link = self.druid:new_rich_text("rich_text_link") --[[@as druid.rich_text]] self.rich_text_link:set_text("Hello, I'm a Custom Link") local tagged = self.rich_text_link:tagged("custom_link") @@ -27,10 +24,10 @@ function M:init(template, nodes) end end - self.rich_text_characters = self.druid:new(rich_text, "rich_text_characters") --[[@as druid.rich_text]] + self.rich_text_characters = self.druid:new_rich_text("rich_text_characters") --[[@as druid.rich_text]] self.rich_text_characters:set_text("Hello, I'm a have a splitted characters") - self.rich_text_custom = self.druid:new(rich_text, "rich_text_custom") --[[@as druid.rich_text]] + self.rich_text_custom = self.druid:new_rich_text("rich_text_custom") --[[@as druid.rich_text]] self.rich_text_custom:set_text("Hello, I'm have South Text Pivot to adjust different text scale") self.position = { diff --git a/example/examples/basic/scroll/scroll.gui b/example/examples/basic/scroll/scroll.gui index 8931adf..eabb283 100644 --- a/example/examples/basic/scroll/scroll.gui +++ b/example/examples/basic/scroll/scroll.gui @@ -3,8 +3,8 @@ fonts { font: "/example/assets/fonts/text_bold.font" } textures { - name: "druid" - texture: "/example/assets/druid.atlas" + name: "druid_example" + texture: "/example/assets/druid_example.atlas" } nodes { size { @@ -27,7 +27,7 @@ nodes { z: 0.204 } type: TYPE_BOX - texture: "druid/ui_circle_32" + texture: "druid_example/ui_circle_32" id: "scroll_view" parent: "root" inherit_alpha: true @@ -53,7 +53,7 @@ nodes { z: 0.204 } type: TYPE_BOX - texture: "druid/empty" + texture: "druid_example/empty" id: "scroll_content" pivot: PIVOT_N parent: "scroll_view" @@ -84,10 +84,8 @@ nodes { } nodes { type: TYPE_TEXT - text: "I do nothing!" id: "button_tutorial/text" parent: "button_tutorial/root" - overridden_fields: 8 template_node_child: true } nodes { @@ -309,23 +307,9 @@ nodes { template_node_child: true } nodes { - scale { - x: 0.8 - y: 0.8 - } - size { - x: 300.0 - y: 50.0 - } type: TYPE_TEXT - text: "Click outside stencil node" id: "button_stencil/text" - line_break: true parent: "button_stencil/root" - overridden_fields: 3 - overridden_fields: 4 - overridden_fields: 8 - overridden_fields: 18 template_node_child: true } nodes { diff --git a/example/examples/basic/scroll/scroll.lua b/example/examples/basic/scroll/scroll.lua index 65efe8c..6e695d3 100644 --- a/example/examples/basic/scroll/scroll.lua +++ b/example/examples/basic/scroll/scroll.lua @@ -1,16 +1,11 @@ local component = require("druid.component") ----@class scroll: druid.base_component +---@class examples.scroll: druid.widget ---@field root node ---@field scroll druid.scroll ----@field druid druid_instance -local M = component.create("scroll") - ----@param template string ----@param nodes table -function M:init(template, nodes) - self.druid = self:get_druid(template, nodes) +local M = {} +function M:init() self.scroll = self.druid:new_scroll("scroll_view", "scroll_content") self.button_tutorial = self.druid:new_button("button_tutorial/root") @@ -18,4 +13,74 @@ function M:init(template, nodes) end +---@param output_log output_list +function M:on_example_created(output_log) + self.button_tutorial.on_click:subscribe(function() + output_log:add_log_text("Button Tutorial Clicked") + end) + self.button_stencil.on_click:subscribe(function() + output_log:add_log_text("Button Stencil Clicked") + end) +end + + +---@param properties_panel properties_panel +function M:properties_control(properties_panel) + local scroll = self.scroll + local is_stretch = self.scroll.style.EXTRA_STRETCH_SIZE > 0 + properties_panel:add_checkbox("ui_elastic_scroll", is_stretch, function(value) + self.scroll:set_extra_stretch_size(value and 100 or 0) + end) + + local view_node = self.scroll.view_node + local is_stencil = gui.get_clipping_mode(view_node) == gui.CLIPPING_MODE_STENCIL + properties_panel:add_checkbox("ui_clipping", is_stencil, function(value) + gui.set_clipping_mode(view_node, value and gui.CLIPPING_MODE_STENCIL or gui.CLIPPING_MODE_NONE) + end) + + local slider_frict = properties_panel:add_slider("ui_slider_friction", 0, function(value) + scroll.style.FRICT = 1 - ((1 - value) * 0.1) + end) + slider_frict:set_text_function(function(value) + return string.format("%.2f", 1 - ((1 - value) * 0.1)) + end) + slider_frict:set_value(1 - (1 - scroll.style.FRICT) / 0.1) + + local slider_speed = properties_panel:add_slider("ui_slider_speed", 0, function(value) + scroll.style.INERT_SPEED = value * 50 + end) + slider_speed:set_value(scroll.style.INERT_SPEED / 50) + slider_speed:set_text_function(function(value) + return string.format("%.1f", value * 50) + end) + + local slider_wheel_speed = properties_panel:add_slider("ui_slider_wheel_speed", 0, function(value) + scroll.style.WHEEL_SCROLL_SPEED = value * 30 + end) + slider_wheel_speed:set_value(scroll.style.WHEEL_SCROLL_SPEED / 30) + slider_wheel_speed:set_text_function(function(value) + return string.format("%.1f", value * 30) + end) + + local wheel_by_inertion = properties_panel:add_checkbox("ui_wheel_by_inertion", scroll.style.WHEEL_SCROLL_BY_INERTION, function(value) + scroll.style.WHEEL_SCROLL_BY_INERTION = value + end) + wheel_by_inertion:set_value(scroll.style.WHEEL_SCROLL_BY_INERTION) +end + + +---@return string +function M:get_debug_info() + local info = "" + + local s = self.scroll + info = info .. "View Size Y: " .. gui.get(s.view_node, "size.y") .. "\n" + info = info .. "Content Size Y: " .. gui.get(s.content_node, "size.y") .. "\n" + info = info .. "Content position Y: " .. math.ceil(s.position.y) .. "\n" + info = info .. "Content Range Y: " .. s.available_pos.y .. " - " .. s.available_pos.w .. "\n" + + return info +end + + return M diff --git a/example/examples/basic/scroll_bind_grid/scroll_bind_grid.gui b/example/examples/basic/scroll_bind_grid/scroll_bind_grid.gui index f713ea6..5fabe31 100644 --- a/example/examples/basic/scroll_bind_grid/scroll_bind_grid.gui +++ b/example/examples/basic/scroll_bind_grid/scroll_bind_grid.gui @@ -1,117 +1,40 @@ -script: "" fonts { name: "text_bold" font: "/example/assets/fonts/text_bold.font" } textures { - name: "druid" - texture: "/example/assets/druid.atlas" -} -background_color { - x: 0.0 - y: 0.0 - z: 0.0 - w: 0.0 + name: "druid_example" + texture: "/example/assets/druid_example.atlas" } nodes { - position { - x: 0.0 - y: 0.0 - z: 0.0 - w: 1.0 - } - rotation { - x: 0.0 - y: 0.0 - z: 0.0 - w: 1.0 - } - scale { - x: 1.0 - y: 1.0 - z: 1.0 - w: 1.0 - } size { x: 1000.0 y: 1000.0 - z: 0.0 - w: 1.0 - } - color { - x: 1.0 - y: 1.0 - z: 1.0 - w: 1.0 } type: TYPE_BOX - blend_mode: BLEND_MODE_ALPHA - texture: "druid/empty" + texture: "druid_example/empty" id: "root" - xanchor: XANCHOR_NONE - yanchor: YANCHOR_NONE - pivot: PIVOT_CENTER - adjust_mode: ADJUST_MODE_FIT - layer: "" inherit_alpha: true - slice9 { - x: 0.0 - y: 0.0 - z: 0.0 - w: 0.0 - } - clipping_mode: CLIPPING_MODE_NONE - clipping_visible: true - clipping_inverted: false - alpha: 1.0 - template_node_child: false - size_mode: SIZE_MODE_MANUAL - custom_type: 0 - enabled: true visible: false - material: "" } nodes { position { - x: 0.0 y: 400.0 - z: 0.0 - w: 1.0 - } - rotation { - x: 0.0 - y: 0.0 - z: 0.0 - w: 1.0 - } - scale { - x: 1.0 - y: 1.0 - z: 1.0 - w: 1.0 } size { x: 400.0 y: 800.0 - z: 0.0 - w: 1.0 } color { x: 0.173 y: 0.184 z: 0.204 - w: 1.0 } type: TYPE_BOX - blend_mode: BLEND_MODE_ALPHA - texture: "druid/ui_circle_32" + texture: "druid_example/ui_circle_32" id: "view" - xanchor: XANCHOR_NONE - yanchor: YANCHOR_NONE pivot: PIVOT_N - adjust_mode: ADJUST_MODE_FIT parent: "root" - layer: "" inherit_alpha: true slice9 { x: 16.0 @@ -120,175 +43,48 @@ nodes { w: 16.0 } clipping_mode: CLIPPING_MODE_STENCIL - clipping_visible: true - clipping_inverted: false - alpha: 1.0 - template_node_child: false - size_mode: SIZE_MODE_MANUAL - custom_type: 0 - enabled: true - visible: true - material: "" } nodes { - position { - x: 0.0 - y: 0.0 - z: 0.0 - w: 1.0 - } - rotation { - x: 0.0 - y: 0.0 - z: 0.0 - w: 1.0 - } - scale { - x: 1.0 - y: 1.0 - z: 1.0 - w: 1.0 - } size { x: 400.0 y: 800.0 - z: 0.0 - w: 1.0 - } - color { - x: 1.0 - y: 1.0 - z: 1.0 - w: 1.0 } type: TYPE_BOX - blend_mode: BLEND_MODE_ALPHA - texture: "druid/empty" + texture: "druid_example/empty" id: "content" - xanchor: XANCHOR_NONE - yanchor: YANCHOR_NONE pivot: PIVOT_N - adjust_mode: ADJUST_MODE_FIT parent: "view" - layer: "" inherit_alpha: true - slice9 { - x: 0.0 - y: 0.0 - z: 0.0 - w: 0.0 - } - clipping_mode: CLIPPING_MODE_NONE - clipping_visible: true - clipping_inverted: false - alpha: 1.0 - template_node_child: false - size_mode: SIZE_MODE_MANUAL - custom_type: 0 - enabled: true visible: false - material: "" } nodes { position { - x: 0.0 y: -400.0 - z: 0.0 - w: 1.0 - } - rotation { - x: 0.0 - y: 0.0 - z: 0.0 - w: 1.0 - } - scale { - x: 1.0 - y: 1.0 - z: 1.0 - w: 1.0 } size { x: 300.0 y: 100.0 - z: 0.0 - w: 1.0 - } - color { - x: 1.0 - y: 1.0 - z: 1.0 - w: 1.0 } type: TYPE_BOX - blend_mode: BLEND_MODE_ALPHA - texture: "" id: "prefab" - xanchor: XANCHOR_NONE - yanchor: YANCHOR_NONE - pivot: PIVOT_CENTER - adjust_mode: ADJUST_MODE_FIT parent: "content" - layer: "" inherit_alpha: true - slice9 { - x: 0.0 - y: 0.0 - z: 0.0 - w: 0.0 - } - clipping_mode: CLIPPING_MODE_NONE - clipping_visible: true - clipping_inverted: false - alpha: 1.0 - template_node_child: false - size_mode: SIZE_MODE_MANUAL - custom_type: 0 - enabled: true visible: false - material: "" } nodes { - position { - x: 0.0 - y: 0.0 - z: 0.0 - w: 1.0 - } - rotation { - x: 0.0 - y: 0.0 - z: 0.0 - w: 1.0 - } - scale { - x: 1.0 - y: 1.0 - z: 1.0 - w: 1.0 - } size { x: 300.0 y: 90.0 - z: 0.0 - w: 1.0 } color { x: 0.631 y: 0.843 z: 0.961 - w: 1.0 } type: TYPE_BOX - blend_mode: BLEND_MODE_ALPHA - texture: "druid/ui_circle_32" + texture: "druid_example/ui_circle_32" id: "panel" - xanchor: XANCHOR_NONE - yanchor: YANCHOR_NONE - pivot: PIVOT_CENTER - adjust_mode: ADJUST_MODE_FIT parent: "prefab" - layer: "" inherit_alpha: true slice9 { x: 16.0 @@ -296,84 +92,35 @@ nodes { z: 16.0 w: 16.0 } - clipping_mode: CLIPPING_MODE_NONE - clipping_visible: true - clipping_inverted: false - alpha: 1.0 - template_node_child: false - size_mode: SIZE_MODE_MANUAL - custom_type: 0 - enabled: true - visible: true - material: "" } nodes { - position { - x: 0.0 - y: 0.0 - z: 0.0 - w: 1.0 - } - rotation { - x: 0.0 - y: 0.0 - z: 0.0 - w: 1.0 - } - scale { - x: 1.0 - y: 1.0 - z: 1.0 - w: 1.0 - } size { x: 240.0 y: 50.0 - z: 0.0 - w: 1.0 } color { x: 0.31 y: 0.318 z: 0.322 - w: 1.0 } type: TYPE_TEXT - blend_mode: BLEND_MODE_ALPHA text: "Grid Item 1" font: "text_bold" id: "text" - xanchor: XANCHOR_NONE - yanchor: YANCHOR_NONE - pivot: PIVOT_CENTER outline { x: 1.0 y: 1.0 z: 1.0 - w: 1.0 } shadow { x: 1.0 y: 1.0 z: 1.0 - w: 1.0 } - adjust_mode: ADJUST_MODE_FIT - line_break: false parent: "prefab" - layer: "" inherit_alpha: true - alpha: 1.0 outline_alpha: 0.0 shadow_alpha: 0.0 - template_node_child: false - text_leading: 1.0 - text_tracking: 0.0 - custom_type: 0 - enabled: true - visible: true - material: "" } material: "/builtins/materials/gui.material" adjust_reference: ADJUST_REFERENCE_PARENT -max_nodes: 512 diff --git a/example/examples/basic/scroll_bind_grid/scroll_bind_grid.lua b/example/examples/basic/scroll_bind_grid/scroll_bind_grid.lua index ba62a6e..af15637 100644 --- a/example/examples/basic/scroll_bind_grid/scroll_bind_grid.lua +++ b/example/examples/basic/scroll_bind_grid/scroll_bind_grid.lua @@ -1,25 +1,17 @@ -local component = require("druid.component") - ----@class scroll_bind_grid: druid.base_component +---@class examples.scroll_bind_grid: druid.widget ---@field scroll druid.scroll ----@field grid druid.static_grid +---@field grid druid.grid ---@field text druid.text ----@field druid druid_instance -local M = component.create("scroll_bind_grid") - - ----@param template string ----@param nodes table -function M:init(template, nodes) - self.druid = self:get_druid(template, nodes) +local M = {} +function M:init() self.created_nodes = {} self.prefab = self:get_node("prefab") gui.set_enabled(self.prefab, false) self.scroll = self.druid:new_scroll("view", "content") - self.grid = self.druid:new_static_grid("content", "prefab", 1) + self.grid = self.druid:new_grid("content", "prefab", 1) self.scroll:bind_grid(self.grid) for index = 1, 20 do @@ -66,4 +58,51 @@ function M:clear() end +---@param properties_panel properties_panel +function M:properties_control(properties_panel) + local view_node = self.scroll.view_node + local is_stencil = gui.get_clipping_mode(view_node) == gui.CLIPPING_MODE_STENCIL + properties_panel:add_checkbox("ui_clipping", is_stencil, function(value) + gui.set_clipping_mode(view_node, value and gui.CLIPPING_MODE_STENCIL or gui.CLIPPING_MODE_NONE) + end) + + properties_panel:add_button("ui_add_element", function() + if #self.created_nodes >= 100 then + return + end + self:add_element() + end) + + properties_panel:add_button("ui_remove_element", function() + self:remove_element() + end) + + properties_panel:add_button("ui_clear_elements", function() + self:clear() + end) +end + + +---@return string +function M:get_debug_info() + local info = "" + + local s = self.scroll + local view_node_size = gui.get(s.view_node, "size.y") + local scroll_position = -s.position + local scroll_bottom_position = vmath.vector3(scroll_position.x, scroll_position.y - view_node_size, scroll_position.z) + + info = info .. "View Size Y: " .. gui.get(s.view_node, "size.y") .. "\n" + info = info .. "Content Size Y: " .. gui.get(s.content_node, "size.y") .. "\n" + info = info .. "Content position Y: " .. math.ceil(s.position.y) .. "\n" + info = info .. "Content Range Y: " .. s.available_pos.y .. " - " .. s.available_pos.w .. "\n" + info = info .. "Grid Items: " .. #self.grid.nodes .. "\n" + info = info .. "Grid Item Size: " .. self.grid.node_size.x .. " x " .. self.grid.node_size.y .. "\n" + info = info .. "Top Scroll Pos Grid Index: " .. self.grid:get_index(scroll_position) .. "\n" + info = info .. "Bottm Scroll Pos Grid Index: " .. self.grid:get_index(scroll_bottom_position) .. "\n" + + return info +end + + return M diff --git a/example/examples/basic/scroll_bind_grid/scroll_bind_grid_horizontal.gui b/example/examples/basic/scroll_bind_grid/scroll_bind_grid_horizontal.gui index 7165b82..18ad39c 100644 --- a/example/examples/basic/scroll_bind_grid/scroll_bind_grid_horizontal.gui +++ b/example/examples/basic/scroll_bind_grid/scroll_bind_grid_horizontal.gui @@ -1,117 +1,40 @@ -script: "" fonts { name: "text_bold" font: "/example/assets/fonts/text_bold.font" } textures { - name: "druid" - texture: "/example/assets/druid.atlas" -} -background_color { - x: 0.0 - y: 0.0 - z: 0.0 - w: 0.0 + name: "druid_example" + texture: "/example/assets/druid_example.atlas" } nodes { - position { - x: 0.0 - y: 0.0 - z: 0.0 - w: 1.0 - } - rotation { - x: 0.0 - y: 0.0 - z: 0.0 - w: 1.0 - } - scale { - x: 1.0 - y: 1.0 - z: 1.0 - w: 1.0 - } size { x: 1000.0 y: 1000.0 - z: 0.0 - w: 1.0 - } - color { - x: 1.0 - y: 1.0 - z: 1.0 - w: 1.0 } type: TYPE_BOX - blend_mode: BLEND_MODE_ALPHA - texture: "druid/empty" + texture: "druid_example/empty" id: "root" - xanchor: XANCHOR_NONE - yanchor: YANCHOR_NONE - pivot: PIVOT_CENTER - adjust_mode: ADJUST_MODE_FIT - layer: "" inherit_alpha: true - slice9 { - x: 0.0 - y: 0.0 - z: 0.0 - w: 0.0 - } - clipping_mode: CLIPPING_MODE_NONE - clipping_visible: true - clipping_inverted: false - alpha: 1.0 - template_node_child: false - size_mode: SIZE_MODE_MANUAL - custom_type: 0 - enabled: true visible: false - material: "" } nodes { position { x: -450.0 - y: 0.0 - z: 0.0 - w: 1.0 - } - rotation { - x: 0.0 - y: 0.0 - z: 0.0 - w: 1.0 - } - scale { - x: 1.0 - y: 1.0 - z: 1.0 - w: 1.0 } size { x: 900.0 y: 360.0 - z: 0.0 - w: 1.0 } color { x: 0.173 y: 0.184 z: 0.204 - w: 1.0 } type: TYPE_BOX - blend_mode: BLEND_MODE_ALPHA - texture: "druid/ui_circle_32" + texture: "druid_example/ui_circle_32" id: "view" - xanchor: XANCHOR_NONE - yanchor: YANCHOR_NONE pivot: PIVOT_W - adjust_mode: ADJUST_MODE_FIT parent: "root" - layer: "" inherit_alpha: true slice9 { x: 16.0 @@ -120,175 +43,48 @@ nodes { w: 16.0 } clipping_mode: CLIPPING_MODE_STENCIL - clipping_visible: true - clipping_inverted: false - alpha: 1.0 - template_node_child: false - size_mode: SIZE_MODE_MANUAL - custom_type: 0 - enabled: true - visible: true - material: "" } nodes { - position { - x: 0.0 - y: 0.0 - z: 0.0 - w: 1.0 - } - rotation { - x: 0.0 - y: 0.0 - z: 0.0 - w: 1.0 - } - scale { - x: 1.0 - y: 1.0 - z: 1.0 - w: 1.0 - } size { x: 900.0 y: 360.0 - z: 0.0 - w: 1.0 - } - color { - x: 1.0 - y: 1.0 - z: 1.0 - w: 1.0 } type: TYPE_BOX - blend_mode: BLEND_MODE_ALPHA - texture: "druid/empty" + texture: "druid_example/empty" id: "content" - xanchor: XANCHOR_NONE - yanchor: YANCHOR_NONE pivot: PIVOT_W - adjust_mode: ADJUST_MODE_FIT parent: "view" - layer: "" inherit_alpha: true - slice9 { - x: 0.0 - y: 0.0 - z: 0.0 - w: 0.0 - } - clipping_mode: CLIPPING_MODE_NONE - clipping_visible: true - clipping_inverted: false - alpha: 1.0 - template_node_child: false - size_mode: SIZE_MODE_MANUAL - custom_type: 0 - enabled: true visible: false - material: "" } nodes { position { x: 450.0 - y: 0.0 - z: 0.0 - w: 1.0 - } - rotation { - x: 0.0 - y: 0.0 - z: 0.0 - w: 1.0 - } - scale { - x: 1.0 - y: 1.0 - z: 1.0 - w: 1.0 } size { x: 200.0 y: 270.0 - z: 0.0 - w: 1.0 - } - color { - x: 1.0 - y: 1.0 - z: 1.0 - w: 1.0 } type: TYPE_BOX - blend_mode: BLEND_MODE_ALPHA - texture: "" id: "prefab" - xanchor: XANCHOR_NONE - yanchor: YANCHOR_NONE - pivot: PIVOT_CENTER - adjust_mode: ADJUST_MODE_FIT parent: "content" - layer: "" inherit_alpha: true - slice9 { - x: 0.0 - y: 0.0 - z: 0.0 - w: 0.0 - } - clipping_mode: CLIPPING_MODE_NONE - clipping_visible: true - clipping_inverted: false - alpha: 1.0 - template_node_child: false - size_mode: SIZE_MODE_MANUAL - custom_type: 0 - enabled: true visible: false - material: "" } nodes { - position { - x: 0.0 - y: 0.0 - z: 0.0 - w: 1.0 - } - rotation { - x: 0.0 - y: 0.0 - z: 0.0 - w: 1.0 - } - scale { - x: 1.0 - y: 1.0 - z: 1.0 - w: 1.0 - } size { x: 190.0 y: 250.0 - z: 0.0 - w: 1.0 } color { x: 0.631 y: 0.843 z: 0.961 - w: 1.0 } type: TYPE_BOX - blend_mode: BLEND_MODE_ALPHA - texture: "druid/ui_circle_32" + texture: "druid_example/ui_circle_32" id: "panel" - xanchor: XANCHOR_NONE - yanchor: YANCHOR_NONE - pivot: PIVOT_CENTER - adjust_mode: ADJUST_MODE_FIT parent: "prefab" - layer: "" inherit_alpha: true slice9 { x: 16.0 @@ -296,84 +92,36 @@ nodes { z: 16.0 w: 16.0 } - clipping_mode: CLIPPING_MODE_NONE - clipping_visible: true - clipping_inverted: false - alpha: 1.0 - template_node_child: false - size_mode: SIZE_MODE_MANUAL - custom_type: 0 - enabled: true - visible: true - material: "" } nodes { - position { - x: 0.0 - y: 0.0 - z: 0.0 - w: 1.0 - } - rotation { - x: 0.0 - y: 0.0 - z: 0.0 - w: 1.0 - } - scale { - x: 1.0 - y: 1.0 - z: 1.0 - w: 1.0 - } size { x: 150.0 y: 50.0 - z: 0.0 - w: 1.0 } color { x: 0.31 y: 0.318 z: 0.322 - w: 1.0 } type: TYPE_TEXT - blend_mode: BLEND_MODE_ALPHA text: "Grid Item 1" font: "text_bold" id: "text" - xanchor: XANCHOR_NONE - yanchor: YANCHOR_NONE - pivot: PIVOT_CENTER outline { x: 1.0 y: 1.0 z: 1.0 - w: 1.0 } shadow { x: 1.0 y: 1.0 z: 1.0 - w: 1.0 } - adjust_mode: ADJUST_MODE_FIT line_break: true parent: "prefab" - layer: "" inherit_alpha: true - alpha: 1.0 outline_alpha: 0.0 shadow_alpha: 0.0 - template_node_child: false - text_leading: 1.0 - text_tracking: 0.0 - custom_type: 0 - enabled: true - visible: true - material: "" } material: "/builtins/materials/gui.material" adjust_reference: ADJUST_REFERENCE_PARENT -max_nodes: 512 diff --git a/example/examples/basic/scroll_bind_grid/scroll_bind_grid_horizontal.lua b/example/examples/basic/scroll_bind_grid/scroll_bind_grid_horizontal.lua index ce762f5..69f65e7 100644 --- a/example/examples/basic/scroll_bind_grid/scroll_bind_grid_horizontal.lua +++ b/example/examples/basic/scroll_bind_grid/scroll_bind_grid_horizontal.lua @@ -1,25 +1,17 @@ -local component = require("druid.component") - ----@class scroll_bind_grid_horizontal: druid.base_component +---@class examples.scroll_bind_grid_horizontal: druid.widget ---@field scroll druid.scroll ----@field grid druid.static_grid +---@field grid druid.grid ---@field text druid.text ----@field druid druid_instance -local M = component.create("scroll_bind_grid_horizontal") - - ----@param template string ----@param nodes table -function M:init(template, nodes) - self.druid = self:get_druid(template, nodes) +local M = {} +function M:init() self.created_nodes = {} self.prefab = self:get_node("prefab") gui.set_enabled(self.prefab, false) self.scroll = self.druid:new_scroll("view", "content") - self.grid = self.druid:new_static_grid("content", "prefab", 99999) + self.grid = self.druid:new_grid("content", "prefab", 99999) self.scroll:bind_grid(self.grid) for index = 1, 30 do @@ -66,4 +58,53 @@ function M:clear() end +---@param properties_panel properties_panel +function M:properties_control(properties_panel) + local view_node = self.scroll.view_node + local is_stencil = gui.get_clipping_mode(view_node) == gui.CLIPPING_MODE_STENCIL + + properties_panel:add_checkbox("ui_clipping", is_stencil, function(value) + gui.set_clipping_mode(view_node, value and gui.CLIPPING_MODE_STENCIL or gui.CLIPPING_MODE_NONE) + end) + + + properties_panel:add_button("ui_add_element", function() + if #self.created_nodes >= 100 then + return + end + self:add_element() + end) + + properties_panel:add_button("ui_remove_element", function() + self:remove_element() + end) + + properties_panel:add_button("ui_clear_elements", function() + self:clear() + end) +end + + +---@return string +function M:get_debug_info() + local info = "" + + local s = self.scroll + local view_node_size = gui.get(s.view_node, "size.x") + local scroll_position = -s.position + local scroll_bottom_position = vmath.vector3(scroll_position.x + view_node_size, scroll_position.y, scroll_position.z) + + info = info .. "View Size X: " .. gui.get(s.view_node, "size.x") .. "\n" + info = info .. "Content Size X: " .. gui.get(s.content_node, "size.x") .. "\n" + info = info .. "Content position X: " .. math.ceil(s.position.x) .. "\n" + info = info .. "Content Range X: " .. s.available_pos.x .. " - " .. s.available_pos.z .. "\n" + info = info .. "Grid Items: " .. #self.grid.nodes .. "\n" + info = info .. "Grid Item Size: " .. self.grid.node_size.x .. " x " .. self.grid.node_size.y .. "\n" + info = info .. "Left Scroll Pos Grid Index: " .. self.grid:get_index(scroll_position) .. "\n" + info = info .. "Right Scroll Pos Grid Index: " .. self.grid:get_index(scroll_bottom_position) .. "\n" + + return info +end + + return M diff --git a/example/examples/basic/scroll_bind_grid/scroll_bind_grid_points.gui b/example/examples/basic/scroll_bind_grid/scroll_bind_grid_points.gui index 165fbf2..a973517 100644 --- a/example/examples/basic/scroll_bind_grid/scroll_bind_grid_points.gui +++ b/example/examples/basic/scroll_bind_grid/scroll_bind_grid_points.gui @@ -3,8 +3,8 @@ fonts { font: "/example/assets/fonts/text_bold.font" } textures { - name: "druid" - texture: "/example/assets/druid.atlas" + name: "druid_example" + texture: "/example/assets/druid_example.atlas" } nodes { size { @@ -12,7 +12,7 @@ nodes { y: 1000.0 } type: TYPE_BOX - texture: "druid/empty" + texture: "druid_example/empty" id: "root" inherit_alpha: true visible: false @@ -31,7 +31,7 @@ nodes { z: 0.204 } type: TYPE_BOX - texture: "druid/ui_circle_32" + texture: "druid_example/ui_circle_32" id: "view" pivot: PIVOT_N parent: "root" @@ -50,7 +50,7 @@ nodes { y: 800.0 } type: TYPE_BOX - texture: "druid/empty" + texture: "druid_example/empty" id: "content" pivot: PIVOT_N parent: "view" @@ -82,7 +82,7 @@ nodes { z: 0.961 } type: TYPE_BOX - texture: "druid/ui_circle_32" + texture: "druid_example/ui_circle_32" id: "panel" parent: "prefab" inherit_alpha: true diff --git a/example/examples/basic/scroll_bind_grid/scroll_bind_grid_points.lua b/example/examples/basic/scroll_bind_grid/scroll_bind_grid_points.lua index d1d6ccc..7618dde 100644 --- a/example/examples/basic/scroll_bind_grid/scroll_bind_grid_points.lua +++ b/example/examples/basic/scroll_bind_grid/scroll_bind_grid_points.lua @@ -1,25 +1,17 @@ -local component = require("druid.component") - ----@class scroll_bind_grid_points: druid.base_component +---@class examples.scroll_bind_grid_points: druid.widget ---@field scroll druid.scroll ----@field grid druid.static_grid +---@field grid druid.grid ---@field text druid.text ----@field druid druid_instance -local M = component.create("scroll_bind_grid_points") - - ----@param template string ----@param nodes table -function M:init(template, nodes) - self.druid = self:get_druid(template, nodes) +local M = {} +function M:init() self.created_nodes = {} self.prefab = self:get_node("prefab") gui.set_enabled(self.prefab, false) self.scroll = self.druid:new_scroll("view", "content") - self.grid = self.druid:new_static_grid("content", "prefab", 1) + self.grid = self.druid:new_grid("content", "prefab", 1) self.scroll:bind_grid(self.grid) for index = 1, 20 do @@ -72,4 +64,51 @@ function M:clear() end +---@param properties_panel properties_panel +function M:properties_control(properties_panel) + local view_node = self.scroll.view_node + local is_stencil = gui.get_clipping_mode(view_node) == gui.CLIPPING_MODE_STENCIL + properties_panel:add_checkbox("ui_clipping", is_stencil, function(value) + gui.set_clipping_mode(view_node, value and gui.CLIPPING_MODE_STENCIL or gui.CLIPPING_MODE_NONE) + end) + + properties_panel:add_button("ui_add_element", function() + if #self.created_nodes >= 100 then + return + end + self:add_element() + end) + + properties_panel:add_button("ui_remove_element", function() + self:remove_element() + end) + + properties_panel:add_button("ui_clear_elements", function() + self:clear() + end) +end + + +---@return string +function M:get_debug_info() + local info = "" + + local s = self.scroll + local view_node_size = gui.get(s.view_node, "size.y") + local scroll_position = -s.position + local scroll_bottom_position = vmath.vector3(scroll_position.x, scroll_position.y - view_node_size, scroll_position.z) + + info = info .. "View Size Y: " .. gui.get(s.view_node, "size.y") .. "\n" + info = info .. "Content Size Y: " .. gui.get(s.content_node, "size.y") .. "\n" + info = info .. "Content position Y: " .. math.ceil(s.position.y) .. "\n" + info = info .. "Content Range Y: " .. s.available_pos.y .. " - " .. s.available_pos.w .. "\n" + info = info .. "Grid Items: " .. #self.grid.nodes .. "\n" + info = info .. "Grid Item Size: " .. self.grid.node_size.x .. " x " .. self.grid.node_size.y .. "\n" + info = info .. "Top Scroll Pos Grid Index: " .. self.grid:get_index(scroll_position) .. "\n" + info = info .. "Bottm Scroll Pos Grid Index: " .. self.grid:get_index(scroll_bottom_position) .. "\n" + + return info +end + + return M diff --git a/example/examples/basic/scroll_slider/scroll_slider.gui b/example/examples/basic/scroll_slider/scroll_slider.gui index caf0a41..717829b 100644 --- a/example/examples/basic/scroll_slider/scroll_slider.gui +++ b/example/examples/basic/scroll_slider/scroll_slider.gui @@ -1,117 +1,35 @@ -script: "" fonts { name: "text_bold" font: "/example/assets/fonts/text_bold.font" } textures { - name: "druid" - texture: "/example/assets/druid.atlas" -} -background_color { - x: 0.0 - y: 0.0 - z: 0.0 - w: 0.0 + name: "druid_example" + texture: "/example/assets/druid_example.atlas" } nodes { - position { - x: 0.0 - y: 0.0 - z: 0.0 - w: 1.0 - } - rotation { - x: 0.0 - y: 0.0 - z: 0.0 - w: 1.0 - } - scale { - x: 1.0 - y: 1.0 - z: 1.0 - w: 1.0 - } size { x: 200.0 y: 100.0 - z: 0.0 - w: 1.0 - } - color { - x: 1.0 - y: 1.0 - z: 1.0 - w: 1.0 } type: TYPE_BOX - blend_mode: BLEND_MODE_ALPHA - texture: "" id: "root" - xanchor: XANCHOR_NONE - yanchor: YANCHOR_NONE - pivot: PIVOT_CENTER - adjust_mode: ADJUST_MODE_FIT - layer: "" inherit_alpha: true - slice9 { - x: 0.0 - y: 0.0 - z: 0.0 - w: 0.0 - } - clipping_mode: CLIPPING_MODE_NONE - clipping_visible: true - clipping_inverted: false - alpha: 1.0 - template_node_child: false - size_mode: SIZE_MODE_MANUAL - custom_type: 0 - enabled: true visible: false - material: "" } nodes { - position { - x: 0.0 - y: 0.0 - z: 0.0 - w: 1.0 - } - rotation { - x: 0.0 - y: 0.0 - z: 0.0 - w: 1.0 - } - scale { - x: 1.0 - y: 1.0 - z: 1.0 - w: 1.0 - } size { x: 400.0 y: 1000.0 - z: 0.0 - w: 1.0 } color { x: 0.173 y: 0.184 z: 0.204 - w: 1.0 } type: TYPE_BOX - blend_mode: BLEND_MODE_ALPHA - texture: "druid/ui_circle_32" + texture: "druid_example/ui_circle_32" id: "scroll_view" - xanchor: XANCHOR_NONE - yanchor: YANCHOR_NONE - pivot: PIVOT_CENTER - adjust_mode: ADJUST_MODE_FIT parent: "root" - layer: "" inherit_alpha: true slice9 { x: 16.0 @@ -120,57 +38,25 @@ nodes { w: 16.0 } clipping_mode: CLIPPING_MODE_STENCIL - clipping_visible: true - clipping_inverted: false - alpha: 1.0 - template_node_child: false - size_mode: SIZE_MODE_MANUAL - custom_type: 0 - enabled: true - visible: true - material: "" } nodes { position { - x: 0.0 y: 500.0 - z: 0.0 - w: 1.0 - } - rotation { - x: 0.0 - y: 0.0 - z: 0.0 - w: 1.0 - } - scale { - x: 1.0 - y: 1.0 - z: 1.0 - w: 1.0 } size { x: 400.0 y: 2600.0 - z: 0.0 - w: 1.0 } color { x: 0.173 y: 0.184 z: 0.204 - w: 1.0 } type: TYPE_BOX - blend_mode: BLEND_MODE_ALPHA - texture: "druid/empty" + texture: "druid_example/empty" id: "scroll_content" - xanchor: XANCHOR_NONE - yanchor: YANCHOR_NONE pivot: PIVOT_N - adjust_mode: ADJUST_MODE_FIT parent: "scroll_view" - layer: "" inherit_alpha: true slice9 { x: 16.0 @@ -178,2340 +64,333 @@ nodes { z: 16.0 w: 16.0 } - clipping_mode: CLIPPING_MODE_NONE - clipping_visible: true - clipping_inverted: false - alpha: 1.0 - template_node_child: false - size_mode: SIZE_MODE_MANUAL - custom_type: 0 - enabled: true visible: false - material: "" } nodes { position { - x: 0.0 y: -100.0 - z: 0.0 - w: 1.0 - } - rotation { - x: 0.0 - y: 0.0 - z: 0.0 - w: 1.0 - } - scale { - x: 1.0 - y: 1.0 - z: 1.0 - w: 1.0 - } - size { - x: 200.0 - y: 100.0 - z: 0.0 - w: 1.0 - } - color { - x: 1.0 - y: 1.0 - z: 1.0 - w: 1.0 } type: TYPE_TEMPLATE id: "button1" parent: "scroll_content" - layer: "" inherit_alpha: true - alpha: 1.0 template: "/example/templates/button_text_green.gui" - template_node_child: false - custom_type: 0 - enabled: true } nodes { - position { - x: 0.0 - y: 0.0 - z: 0.0 - w: 1.0 - } - rotation { - x: 0.0 - y: 0.0 - z: 0.0 - w: 1.0 - } - scale { - x: 1.0 - y: 1.0 - z: 1.0 - w: 1.0 - } - size { - x: 280.0 - y: 90.0 - z: 0.0 - w: 1.0 - } - color { - x: 0.557 - y: 0.835 - z: 0.62 - w: 1.0 - } type: TYPE_BOX - blend_mode: BLEND_MODE_ALPHA - texture: "druid/ui_circle_32" id: "button1/root" - xanchor: XANCHOR_NONE - yanchor: YANCHOR_NONE - pivot: PIVOT_CENTER - adjust_mode: ADJUST_MODE_FIT parent: "button1" - layer: "druid" - inherit_alpha: true - slice9 { - x: 16.0 - y: 16.0 - z: 16.0 - w: 16.0 - } - clipping_mode: CLIPPING_MODE_NONE - clipping_visible: true - clipping_inverted: false - alpha: 1.0 template_node_child: true - size_mode: SIZE_MODE_MANUAL - custom_type: 0 - enabled: true - visible: true - material: "" } nodes { - position { - x: 0.0 - y: 0.0 - z: 0.0 - w: 1.0 - } - rotation { - x: 0.0 - y: 0.0 - z: 0.0 - w: 1.0 - } - scale { - x: 0.9 - y: 0.9 - z: 1.0 - w: 1.0 - } - size { - x: 245.0 - y: 50.0 - z: 0.0 - w: 1.0 - } - color { - x: 0.31 - y: 0.318 - z: 0.322 - w: 1.0 - } type: TYPE_TEXT - blend_mode: BLEND_MODE_ALPHA - text: "Tap to scroll 1" - font: "text_bold" id: "button1/text" - xanchor: XANCHOR_NONE - yanchor: YANCHOR_NONE - pivot: PIVOT_CENTER - outline { - x: 1.0 - y: 1.0 - z: 1.0 - w: 1.0 - } - shadow { - x: 1.0 - y: 1.0 - z: 1.0 - w: 1.0 - } - adjust_mode: ADJUST_MODE_FIT - line_break: true parent: "button1/root" - layer: "text_bold" - inherit_alpha: true - alpha: 1.0 - outline_alpha: 0.0 - shadow_alpha: 0.0 - overridden_fields: 3 - overridden_fields: 8 - overridden_fields: 18 template_node_child: true - text_leading: 1.0 - text_tracking: 0.0 - custom_type: 0 - enabled: true - visible: true - material: "" } nodes { position { - x: 0.0 y: -300.0 - z: 0.0 - w: 1.0 - } - rotation { - x: 0.0 - y: 0.0 - z: 0.0 - w: 1.0 - } - scale { - x: 1.0 - y: 1.0 - z: 1.0 - w: 1.0 - } - size { - x: 200.0 - y: 100.0 - z: 0.0 - w: 1.0 - } - color { - x: 1.0 - y: 1.0 - z: 1.0 - w: 1.0 } type: TYPE_TEMPLATE id: "button2" parent: "scroll_content" - layer: "" inherit_alpha: true - alpha: 1.0 template: "/example/templates/button_text_green.gui" - template_node_child: false - custom_type: 0 - enabled: true } nodes { - position { - x: 0.0 - y: 0.0 - z: 0.0 - w: 1.0 - } - rotation { - x: 0.0 - y: 0.0 - z: 0.0 - w: 1.0 - } - scale { - x: 1.0 - y: 1.0 - z: 1.0 - w: 1.0 - } - size { - x: 280.0 - y: 90.0 - z: 0.0 - w: 1.0 - } - color { - x: 0.557 - y: 0.835 - z: 0.62 - w: 1.0 - } type: TYPE_BOX - blend_mode: BLEND_MODE_ALPHA - texture: "druid/ui_circle_32" id: "button2/root" - xanchor: XANCHOR_NONE - yanchor: YANCHOR_NONE - pivot: PIVOT_CENTER - adjust_mode: ADJUST_MODE_FIT parent: "button2" - layer: "druid" - inherit_alpha: true - slice9 { - x: 16.0 - y: 16.0 - z: 16.0 - w: 16.0 - } - clipping_mode: CLIPPING_MODE_NONE - clipping_visible: true - clipping_inverted: false - alpha: 1.0 template_node_child: true - size_mode: SIZE_MODE_MANUAL - custom_type: 0 - enabled: true - visible: true - material: "" } nodes { - position { - x: 0.0 - y: 0.0 - z: 0.0 - w: 1.0 - } - rotation { - x: 0.0 - y: 0.0 - z: 0.0 - w: 1.0 - } - scale { - x: 0.9 - y: 0.9 - z: 1.0 - w: 1.0 - } - size { - x: 245.0 - y: 50.0 - z: 0.0 - w: 1.0 - } - color { - x: 0.31 - y: 0.318 - z: 0.322 - w: 1.0 - } type: TYPE_TEXT - blend_mode: BLEND_MODE_ALPHA - text: "Tap to scroll 2" - font: "text_bold" id: "button2/text" - xanchor: XANCHOR_NONE - yanchor: YANCHOR_NONE - pivot: PIVOT_CENTER - outline { - x: 1.0 - y: 1.0 - z: 1.0 - w: 1.0 - } - shadow { - x: 1.0 - y: 1.0 - z: 1.0 - w: 1.0 - } - adjust_mode: ADJUST_MODE_FIT - line_break: true parent: "button2/root" - layer: "text_bold" - inherit_alpha: true - alpha: 1.0 - outline_alpha: 0.0 - shadow_alpha: 0.0 - overridden_fields: 3 - overridden_fields: 8 - overridden_fields: 18 template_node_child: true - text_leading: 1.0 - text_tracking: 0.0 - custom_type: 0 - enabled: true - visible: true - material: "" } nodes { position { - x: 0.0 y: -500.0 - z: 0.0 - w: 1.0 - } - rotation { - x: 0.0 - y: 0.0 - z: 0.0 - w: 1.0 - } - scale { - x: 1.0 - y: 1.0 - z: 1.0 - w: 1.0 - } - size { - x: 200.0 - y: 100.0 - z: 0.0 - w: 1.0 - } - color { - x: 1.0 - y: 1.0 - z: 1.0 - w: 1.0 } type: TYPE_TEMPLATE id: "button3" parent: "scroll_content" - layer: "" inherit_alpha: true - alpha: 1.0 template: "/example/templates/button_text_green.gui" - template_node_child: false - custom_type: 0 - enabled: true } nodes { - position { - x: 0.0 - y: 0.0 - z: 0.0 - w: 1.0 - } - rotation { - x: 0.0 - y: 0.0 - z: 0.0 - w: 1.0 - } - scale { - x: 1.0 - y: 1.0 - z: 1.0 - w: 1.0 - } - size { - x: 280.0 - y: 90.0 - z: 0.0 - w: 1.0 - } - color { - x: 0.557 - y: 0.835 - z: 0.62 - w: 1.0 - } type: TYPE_BOX - blend_mode: BLEND_MODE_ALPHA - texture: "druid/ui_circle_32" id: "button3/root" - xanchor: XANCHOR_NONE - yanchor: YANCHOR_NONE - pivot: PIVOT_CENTER - adjust_mode: ADJUST_MODE_FIT parent: "button3" - layer: "druid" - inherit_alpha: true - slice9 { - x: 16.0 - y: 16.0 - z: 16.0 - w: 16.0 - } - clipping_mode: CLIPPING_MODE_NONE - clipping_visible: true - clipping_inverted: false - alpha: 1.0 template_node_child: true - size_mode: SIZE_MODE_MANUAL - custom_type: 0 - enabled: true - visible: true - material: "" } nodes { - position { - x: 0.0 - y: 0.0 - z: 0.0 - w: 1.0 - } - rotation { - x: 0.0 - y: 0.0 - z: 0.0 - w: 1.0 - } - scale { - x: 0.9 - y: 0.9 - z: 1.0 - w: 1.0 - } - size { - x: 245.0 - y: 50.0 - z: 0.0 - w: 1.0 - } - color { - x: 0.31 - y: 0.318 - z: 0.322 - w: 1.0 - } type: TYPE_TEXT - blend_mode: BLEND_MODE_ALPHA - text: "Tap to scroll 3" - font: "text_bold" id: "button3/text" - xanchor: XANCHOR_NONE - yanchor: YANCHOR_NONE - pivot: PIVOT_CENTER - outline { - x: 1.0 - y: 1.0 - z: 1.0 - w: 1.0 - } - shadow { - x: 1.0 - y: 1.0 - z: 1.0 - w: 1.0 - } - adjust_mode: ADJUST_MODE_FIT - line_break: true parent: "button3/root" - layer: "text_bold" - inherit_alpha: true - alpha: 1.0 - outline_alpha: 0.0 - shadow_alpha: 0.0 - overridden_fields: 3 - overridden_fields: 8 - overridden_fields: 18 template_node_child: true - text_leading: 1.0 - text_tracking: 0.0 - custom_type: 0 - enabled: true - visible: true - material: "" } nodes { position { - x: 0.0 y: -700.0 - z: 0.0 - w: 1.0 - } - rotation { - x: 0.0 - y: 0.0 - z: 0.0 - w: 1.0 - } - scale { - x: 1.0 - y: 1.0 - z: 1.0 - w: 1.0 - } - size { - x: 200.0 - y: 100.0 - z: 0.0 - w: 1.0 - } - color { - x: 1.0 - y: 1.0 - z: 1.0 - w: 1.0 } type: TYPE_TEMPLATE id: "button4" parent: "scroll_content" - layer: "" inherit_alpha: true - alpha: 1.0 template: "/example/templates/button_text_green.gui" - template_node_child: false - custom_type: 0 - enabled: true } nodes { - position { - x: 0.0 - y: 0.0 - z: 0.0 - w: 1.0 - } - rotation { - x: 0.0 - y: 0.0 - z: 0.0 - w: 1.0 - } - scale { - x: 1.0 - y: 1.0 - z: 1.0 - w: 1.0 - } - size { - x: 280.0 - y: 90.0 - z: 0.0 - w: 1.0 - } - color { - x: 0.557 - y: 0.835 - z: 0.62 - w: 1.0 - } type: TYPE_BOX - blend_mode: BLEND_MODE_ALPHA - texture: "druid/ui_circle_32" id: "button4/root" - xanchor: XANCHOR_NONE - yanchor: YANCHOR_NONE - pivot: PIVOT_CENTER - adjust_mode: ADJUST_MODE_FIT parent: "button4" - layer: "druid" - inherit_alpha: true - slice9 { - x: 16.0 - y: 16.0 - z: 16.0 - w: 16.0 - } - clipping_mode: CLIPPING_MODE_NONE - clipping_visible: true - clipping_inverted: false - alpha: 1.0 template_node_child: true - size_mode: SIZE_MODE_MANUAL - custom_type: 0 - enabled: true - visible: true - material: "" } nodes { - position { - x: 0.0 - y: 0.0 - z: 0.0 - w: 1.0 - } - rotation { - x: 0.0 - y: 0.0 - z: 0.0 - w: 1.0 - } - scale { - x: 0.9 - y: 0.9 - z: 1.0 - w: 1.0 - } - size { - x: 245.0 - y: 50.0 - z: 0.0 - w: 1.0 - } - color { - x: 0.31 - y: 0.318 - z: 0.322 - w: 1.0 - } type: TYPE_TEXT - blend_mode: BLEND_MODE_ALPHA - text: "Tap to scroll 4" - font: "text_bold" id: "button4/text" - xanchor: XANCHOR_NONE - yanchor: YANCHOR_NONE - pivot: PIVOT_CENTER - outline { - x: 1.0 - y: 1.0 - z: 1.0 - w: 1.0 - } - shadow { - x: 1.0 - y: 1.0 - z: 1.0 - w: 1.0 - } - adjust_mode: ADJUST_MODE_FIT - line_break: true parent: "button4/root" - layer: "text_bold" - inherit_alpha: true - alpha: 1.0 - outline_alpha: 0.0 - shadow_alpha: 0.0 - overridden_fields: 3 - overridden_fields: 8 - overridden_fields: 18 template_node_child: true - text_leading: 1.0 - text_tracking: 0.0 - custom_type: 0 - enabled: true - visible: true - material: "" } nodes { position { - x: 0.0 y: -900.0 - z: 0.0 - w: 1.0 - } - rotation { - x: 0.0 - y: 0.0 - z: 0.0 - w: 1.0 - } - scale { - x: 1.0 - y: 1.0 - z: 1.0 - w: 1.0 - } - size { - x: 200.0 - y: 100.0 - z: 0.0 - w: 1.0 - } - color { - x: 1.0 - y: 1.0 - z: 1.0 - w: 1.0 } type: TYPE_TEMPLATE id: "button5" parent: "scroll_content" - layer: "" inherit_alpha: true - alpha: 1.0 template: "/example/templates/button_text_green.gui" - template_node_child: false - custom_type: 0 - enabled: true } nodes { - position { - x: 0.0 - y: 0.0 - z: 0.0 - w: 1.0 - } - rotation { - x: 0.0 - y: 0.0 - z: 0.0 - w: 1.0 - } - scale { - x: 1.0 - y: 1.0 - z: 1.0 - w: 1.0 - } - size { - x: 280.0 - y: 90.0 - z: 0.0 - w: 1.0 - } - color { - x: 0.557 - y: 0.835 - z: 0.62 - w: 1.0 - } type: TYPE_BOX - blend_mode: BLEND_MODE_ALPHA - texture: "druid/ui_circle_32" id: "button5/root" - xanchor: XANCHOR_NONE - yanchor: YANCHOR_NONE - pivot: PIVOT_CENTER - adjust_mode: ADJUST_MODE_FIT parent: "button5" - layer: "druid" - inherit_alpha: true - slice9 { - x: 16.0 - y: 16.0 - z: 16.0 - w: 16.0 - } - clipping_mode: CLIPPING_MODE_NONE - clipping_visible: true - clipping_inverted: false - alpha: 1.0 template_node_child: true - size_mode: SIZE_MODE_MANUAL - custom_type: 0 - enabled: true - visible: true - material: "" } nodes { - position { - x: 0.0 - y: 0.0 - z: 0.0 - w: 1.0 - } - rotation { - x: 0.0 - y: 0.0 - z: 0.0 - w: 1.0 - } - scale { - x: 0.9 - y: 0.9 - z: 1.0 - w: 1.0 - } - size { - x: 245.0 - y: 50.0 - z: 0.0 - w: 1.0 - } - color { - x: 0.31 - y: 0.318 - z: 0.322 - w: 1.0 - } type: TYPE_TEXT - blend_mode: BLEND_MODE_ALPHA - text: "Tap to scroll 5" - font: "text_bold" id: "button5/text" - xanchor: XANCHOR_NONE - yanchor: YANCHOR_NONE - pivot: PIVOT_CENTER - outline { - x: 1.0 - y: 1.0 - z: 1.0 - w: 1.0 - } - shadow { - x: 1.0 - y: 1.0 - z: 1.0 - w: 1.0 - } - adjust_mode: ADJUST_MODE_FIT - line_break: true parent: "button5/root" - layer: "text_bold" - inherit_alpha: true - alpha: 1.0 - outline_alpha: 0.0 - shadow_alpha: 0.0 - overridden_fields: 3 - overridden_fields: 8 - overridden_fields: 18 template_node_child: true - text_leading: 1.0 - text_tracking: 0.0 - custom_type: 0 - enabled: true - visible: true - material: "" } nodes { position { - x: 0.0 y: -1100.0 - z: 0.0 - w: 1.0 - } - rotation { - x: 0.0 - y: 0.0 - z: 0.0 - w: 1.0 - } - scale { - x: 1.0 - y: 1.0 - z: 1.0 - w: 1.0 - } - size { - x: 200.0 - y: 100.0 - z: 0.0 - w: 1.0 - } - color { - x: 1.0 - y: 1.0 - z: 1.0 - w: 1.0 } type: TYPE_TEMPLATE id: "button6" parent: "scroll_content" - layer: "" inherit_alpha: true - alpha: 1.0 template: "/example/templates/button_text_green.gui" - template_node_child: false - custom_type: 0 - enabled: true } nodes { - position { - x: 0.0 - y: 0.0 - z: 0.0 - w: 1.0 - } - rotation { - x: 0.0 - y: 0.0 - z: 0.0 - w: 1.0 - } - scale { - x: 1.0 - y: 1.0 - z: 1.0 - w: 1.0 - } - size { - x: 280.0 - y: 90.0 - z: 0.0 - w: 1.0 - } - color { - x: 0.557 - y: 0.835 - z: 0.62 - w: 1.0 - } type: TYPE_BOX - blend_mode: BLEND_MODE_ALPHA - texture: "druid/ui_circle_32" id: "button6/root" - xanchor: XANCHOR_NONE - yanchor: YANCHOR_NONE - pivot: PIVOT_CENTER - adjust_mode: ADJUST_MODE_FIT parent: "button6" - layer: "druid" - inherit_alpha: true - slice9 { - x: 16.0 - y: 16.0 - z: 16.0 - w: 16.0 - } - clipping_mode: CLIPPING_MODE_NONE - clipping_visible: true - clipping_inverted: false - alpha: 1.0 template_node_child: true - size_mode: SIZE_MODE_MANUAL - custom_type: 0 - enabled: true - visible: true - material: "" } nodes { - position { - x: 0.0 - y: 0.0 - z: 0.0 - w: 1.0 - } - rotation { - x: 0.0 - y: 0.0 - z: 0.0 - w: 1.0 - } - scale { - x: 0.9 - y: 0.9 - z: 1.0 - w: 1.0 - } - size { - x: 245.0 - y: 50.0 - z: 0.0 - w: 1.0 - } - color { - x: 0.31 - y: 0.318 - z: 0.322 - w: 1.0 - } type: TYPE_TEXT - blend_mode: BLEND_MODE_ALPHA - text: "Tap to scroll 6" - font: "text_bold" id: "button6/text" - xanchor: XANCHOR_NONE - yanchor: YANCHOR_NONE - pivot: PIVOT_CENTER - outline { - x: 1.0 - y: 1.0 - z: 1.0 - w: 1.0 - } - shadow { - x: 1.0 - y: 1.0 - z: 1.0 - w: 1.0 - } - adjust_mode: ADJUST_MODE_FIT - line_break: true parent: "button6/root" - layer: "text_bold" - inherit_alpha: true - alpha: 1.0 - outline_alpha: 0.0 - shadow_alpha: 0.0 - overridden_fields: 3 - overridden_fields: 8 - overridden_fields: 18 template_node_child: true - text_leading: 1.0 - text_tracking: 0.0 - custom_type: 0 - enabled: true - visible: true - material: "" } nodes { position { - x: 0.0 y: -1300.0 - z: 0.0 - w: 1.0 - } - rotation { - x: 0.0 - y: 0.0 - z: 0.0 - w: 1.0 - } - scale { - x: 1.0 - y: 1.0 - z: 1.0 - w: 1.0 - } - size { - x: 200.0 - y: 100.0 - z: 0.0 - w: 1.0 - } - color { - x: 1.0 - y: 1.0 - z: 1.0 - w: 1.0 } type: TYPE_TEMPLATE id: "button7" parent: "scroll_content" - layer: "" inherit_alpha: true - alpha: 1.0 template: "/example/templates/button_text_green.gui" - template_node_child: false - custom_type: 0 - enabled: true } nodes { - position { - x: 0.0 - y: 0.0 - z: 0.0 - w: 1.0 - } - rotation { - x: 0.0 - y: 0.0 - z: 0.0 - w: 1.0 - } - scale { - x: 1.0 - y: 1.0 - z: 1.0 - w: 1.0 - } - size { - x: 280.0 - y: 90.0 - z: 0.0 - w: 1.0 - } - color { - x: 0.557 - y: 0.835 - z: 0.62 - w: 1.0 - } type: TYPE_BOX - blend_mode: BLEND_MODE_ALPHA - texture: "druid/ui_circle_32" id: "button7/root" - xanchor: XANCHOR_NONE - yanchor: YANCHOR_NONE - pivot: PIVOT_CENTER - adjust_mode: ADJUST_MODE_FIT parent: "button7" - layer: "druid" - inherit_alpha: true - slice9 { - x: 16.0 - y: 16.0 - z: 16.0 - w: 16.0 - } - clipping_mode: CLIPPING_MODE_NONE - clipping_visible: true - clipping_inverted: false - alpha: 1.0 template_node_child: true - size_mode: SIZE_MODE_MANUAL - custom_type: 0 - enabled: true - visible: true - material: "" } nodes { - position { - x: 0.0 - y: 0.0 - z: 0.0 - w: 1.0 - } - rotation { - x: 0.0 - y: 0.0 - z: 0.0 - w: 1.0 - } - scale { - x: 0.9 - y: 0.9 - z: 1.0 - w: 1.0 - } - size { - x: 245.0 - y: 50.0 - z: 0.0 - w: 1.0 - } - color { - x: 0.31 - y: 0.318 - z: 0.322 - w: 1.0 - } type: TYPE_TEXT - blend_mode: BLEND_MODE_ALPHA - text: "Tap to scroll 7" - font: "text_bold" id: "button7/text" - xanchor: XANCHOR_NONE - yanchor: YANCHOR_NONE - pivot: PIVOT_CENTER - outline { - x: 1.0 - y: 1.0 - z: 1.0 - w: 1.0 - } - shadow { - x: 1.0 - y: 1.0 - z: 1.0 - w: 1.0 - } - adjust_mode: ADJUST_MODE_FIT - line_break: true parent: "button7/root" - layer: "text_bold" - inherit_alpha: true - alpha: 1.0 - outline_alpha: 0.0 - shadow_alpha: 0.0 - overridden_fields: 3 - overridden_fields: 8 - overridden_fields: 18 template_node_child: true - text_leading: 1.0 - text_tracking: 0.0 - custom_type: 0 - enabled: true - visible: true - material: "" } nodes { position { - x: 0.0 y: -1500.0 - z: 0.0 - w: 1.0 - } - rotation { - x: 0.0 - y: 0.0 - z: 0.0 - w: 1.0 - } - scale { - x: 1.0 - y: 1.0 - z: 1.0 - w: 1.0 - } - size { - x: 200.0 - y: 100.0 - z: 0.0 - w: 1.0 - } - color { - x: 1.0 - y: 1.0 - z: 1.0 - w: 1.0 } type: TYPE_TEMPLATE id: "button8" parent: "scroll_content" - layer: "" inherit_alpha: true - alpha: 1.0 template: "/example/templates/button_text_green.gui" - template_node_child: false - custom_type: 0 - enabled: true } nodes { - position { - x: 0.0 - y: 0.0 - z: 0.0 - w: 1.0 - } - rotation { - x: 0.0 - y: 0.0 - z: 0.0 - w: 1.0 - } - scale { - x: 1.0 - y: 1.0 - z: 1.0 - w: 1.0 - } - size { - x: 280.0 - y: 90.0 - z: 0.0 - w: 1.0 - } - color { - x: 0.557 - y: 0.835 - z: 0.62 - w: 1.0 - } type: TYPE_BOX - blend_mode: BLEND_MODE_ALPHA - texture: "druid/ui_circle_32" id: "button8/root" - xanchor: XANCHOR_NONE - yanchor: YANCHOR_NONE - pivot: PIVOT_CENTER - adjust_mode: ADJUST_MODE_FIT parent: "button8" - layer: "druid" - inherit_alpha: true - slice9 { - x: 16.0 - y: 16.0 - z: 16.0 - w: 16.0 - } - clipping_mode: CLIPPING_MODE_NONE - clipping_visible: true - clipping_inverted: false - alpha: 1.0 template_node_child: true - size_mode: SIZE_MODE_MANUAL - custom_type: 0 - enabled: true - visible: true - material: "" } nodes { - position { - x: 0.0 - y: 0.0 - z: 0.0 - w: 1.0 - } - rotation { - x: 0.0 - y: 0.0 - z: 0.0 - w: 1.0 - } - scale { - x: 0.9 - y: 0.9 - z: 1.0 - w: 1.0 - } - size { - x: 245.0 - y: 50.0 - z: 0.0 - w: 1.0 - } - color { - x: 0.31 - y: 0.318 - z: 0.322 - w: 1.0 - } type: TYPE_TEXT - blend_mode: BLEND_MODE_ALPHA - text: "Tap to scroll 8" - font: "text_bold" id: "button8/text" - xanchor: XANCHOR_NONE - yanchor: YANCHOR_NONE - pivot: PIVOT_CENTER - outline { - x: 1.0 - y: 1.0 - z: 1.0 - w: 1.0 - } - shadow { - x: 1.0 - y: 1.0 - z: 1.0 - w: 1.0 - } - adjust_mode: ADJUST_MODE_FIT - line_break: true parent: "button8/root" - layer: "text_bold" - inherit_alpha: true - alpha: 1.0 - outline_alpha: 0.0 - shadow_alpha: 0.0 - overridden_fields: 3 - overridden_fields: 8 - overridden_fields: 18 template_node_child: true - text_leading: 1.0 - text_tracking: 0.0 - custom_type: 0 - enabled: true - visible: true - material: "" } nodes { position { - x: 0.0 y: -1700.0 - z: 0.0 - w: 1.0 - } - rotation { - x: 0.0 - y: 0.0 - z: 0.0 - w: 1.0 - } - scale { - x: 1.0 - y: 1.0 - z: 1.0 - w: 1.0 - } - size { - x: 200.0 - y: 100.0 - z: 0.0 - w: 1.0 - } - color { - x: 1.0 - y: 1.0 - z: 1.0 - w: 1.0 } type: TYPE_TEMPLATE id: "button9" parent: "scroll_content" - layer: "" inherit_alpha: true - alpha: 1.0 template: "/example/templates/button_text_green.gui" - template_node_child: false - custom_type: 0 - enabled: true } nodes { - position { - x: 0.0 - y: 0.0 - z: 0.0 - w: 1.0 - } - rotation { - x: 0.0 - y: 0.0 - z: 0.0 - w: 1.0 - } - scale { - x: 1.0 - y: 1.0 - z: 1.0 - w: 1.0 - } - size { - x: 280.0 - y: 90.0 - z: 0.0 - w: 1.0 - } - color { - x: 0.557 - y: 0.835 - z: 0.62 - w: 1.0 - } type: TYPE_BOX - blend_mode: BLEND_MODE_ALPHA - texture: "druid/ui_circle_32" id: "button9/root" - xanchor: XANCHOR_NONE - yanchor: YANCHOR_NONE - pivot: PIVOT_CENTER - adjust_mode: ADJUST_MODE_FIT parent: "button9" - layer: "druid" - inherit_alpha: true - slice9 { - x: 16.0 - y: 16.0 - z: 16.0 - w: 16.0 - } - clipping_mode: CLIPPING_MODE_NONE - clipping_visible: true - clipping_inverted: false - alpha: 1.0 template_node_child: true - size_mode: SIZE_MODE_MANUAL - custom_type: 0 - enabled: true - visible: true - material: "" } nodes { - position { - x: 0.0 - y: 0.0 - z: 0.0 - w: 1.0 - } - rotation { - x: 0.0 - y: 0.0 - z: 0.0 - w: 1.0 - } - scale { - x: 0.9 - y: 0.9 - z: 1.0 - w: 1.0 - } - size { - x: 245.0 - y: 50.0 - z: 0.0 - w: 1.0 - } - color { - x: 0.31 - y: 0.318 - z: 0.322 - w: 1.0 - } type: TYPE_TEXT - blend_mode: BLEND_MODE_ALPHA - text: "Tap to scroll 9" - font: "text_bold" id: "button9/text" - xanchor: XANCHOR_NONE - yanchor: YANCHOR_NONE - pivot: PIVOT_CENTER - outline { - x: 1.0 - y: 1.0 - z: 1.0 - w: 1.0 - } - shadow { - x: 1.0 - y: 1.0 - z: 1.0 - w: 1.0 - } - adjust_mode: ADJUST_MODE_FIT - line_break: true parent: "button9/root" - layer: "text_bold" - inherit_alpha: true - alpha: 1.0 - outline_alpha: 0.0 - shadow_alpha: 0.0 - overridden_fields: 3 - overridden_fields: 8 - overridden_fields: 18 template_node_child: true - text_leading: 1.0 - text_tracking: 0.0 - custom_type: 0 - enabled: true - visible: true - material: "" } nodes { position { - x: 0.0 y: -1900.0 - z: 0.0 - w: 1.0 - } - rotation { - x: 0.0 - y: 0.0 - z: 0.0 - w: 1.0 - } - scale { - x: 1.0 - y: 1.0 - z: 1.0 - w: 1.0 - } - size { - x: 200.0 - y: 100.0 - z: 0.0 - w: 1.0 - } - color { - x: 1.0 - y: 1.0 - z: 1.0 - w: 1.0 } type: TYPE_TEMPLATE id: "button10" parent: "scroll_content" - layer: "" inherit_alpha: true - alpha: 1.0 template: "/example/templates/button_text_green.gui" - template_node_child: false - custom_type: 0 - enabled: true } nodes { - position { - x: 0.0 - y: 0.0 - z: 0.0 - w: 1.0 - } - rotation { - x: 0.0 - y: 0.0 - z: 0.0 - w: 1.0 - } - scale { - x: 1.0 - y: 1.0 - z: 1.0 - w: 1.0 - } - size { - x: 280.0 - y: 90.0 - z: 0.0 - w: 1.0 - } - color { - x: 0.557 - y: 0.835 - z: 0.62 - w: 1.0 - } type: TYPE_BOX - blend_mode: BLEND_MODE_ALPHA - texture: "druid/ui_circle_32" id: "button10/root" - xanchor: XANCHOR_NONE - yanchor: YANCHOR_NONE - pivot: PIVOT_CENTER - adjust_mode: ADJUST_MODE_FIT parent: "button10" - layer: "druid" - inherit_alpha: true - slice9 { - x: 16.0 - y: 16.0 - z: 16.0 - w: 16.0 - } - clipping_mode: CLIPPING_MODE_NONE - clipping_visible: true - clipping_inverted: false - alpha: 1.0 template_node_child: true - size_mode: SIZE_MODE_MANUAL - custom_type: 0 - enabled: true - visible: true - material: "" } nodes { - position { - x: 0.0 - y: 0.0 - z: 0.0 - w: 1.0 - } - rotation { - x: 0.0 - y: 0.0 - z: 0.0 - w: 1.0 - } - scale { - x: 0.9 - y: 0.9 - z: 1.0 - w: 1.0 - } - size { - x: 245.0 - y: 50.0 - z: 0.0 - w: 1.0 - } - color { - x: 0.31 - y: 0.318 - z: 0.322 - w: 1.0 - } type: TYPE_TEXT - blend_mode: BLEND_MODE_ALPHA - text: "Tap to scroll 10" - font: "text_bold" id: "button10/text" - xanchor: XANCHOR_NONE - yanchor: YANCHOR_NONE - pivot: PIVOT_CENTER - outline { - x: 1.0 - y: 1.0 - z: 1.0 - w: 1.0 - } - shadow { - x: 1.0 - y: 1.0 - z: 1.0 - w: 1.0 - } - adjust_mode: ADJUST_MODE_FIT - line_break: true parent: "button10/root" - layer: "text_bold" - inherit_alpha: true - alpha: 1.0 - outline_alpha: 0.0 - shadow_alpha: 0.0 - overridden_fields: 3 - overridden_fields: 8 - overridden_fields: 18 template_node_child: true - text_leading: 1.0 - text_tracking: 0.0 - custom_type: 0 - enabled: true - visible: true - material: "" } nodes { position { - x: 0.0 y: -2100.0 - z: 0.0 - w: 1.0 - } - rotation { - x: 0.0 - y: 0.0 - z: 0.0 - w: 1.0 - } - scale { - x: 1.0 - y: 1.0 - z: 1.0 - w: 1.0 - } - size { - x: 200.0 - y: 100.0 - z: 0.0 - w: 1.0 - } - color { - x: 1.0 - y: 1.0 - z: 1.0 - w: 1.0 } type: TYPE_TEMPLATE id: "button11" parent: "scroll_content" - layer: "" inherit_alpha: true - alpha: 1.0 template: "/example/templates/button_text_green.gui" - template_node_child: false - custom_type: 0 - enabled: true } nodes { - position { - x: 0.0 - y: 0.0 - z: 0.0 - w: 1.0 - } - rotation { - x: 0.0 - y: 0.0 - z: 0.0 - w: 1.0 - } - scale { - x: 1.0 - y: 1.0 - z: 1.0 - w: 1.0 - } - size { - x: 280.0 - y: 90.0 - z: 0.0 - w: 1.0 - } - color { - x: 0.557 - y: 0.835 - z: 0.62 - w: 1.0 - } type: TYPE_BOX - blend_mode: BLEND_MODE_ALPHA - texture: "druid/ui_circle_32" id: "button11/root" - xanchor: XANCHOR_NONE - yanchor: YANCHOR_NONE - pivot: PIVOT_CENTER - adjust_mode: ADJUST_MODE_FIT parent: "button11" - layer: "druid" - inherit_alpha: true - slice9 { - x: 16.0 - y: 16.0 - z: 16.0 - w: 16.0 - } - clipping_mode: CLIPPING_MODE_NONE - clipping_visible: true - clipping_inverted: false - alpha: 1.0 template_node_child: true - size_mode: SIZE_MODE_MANUAL - custom_type: 0 - enabled: true - visible: true - material: "" } nodes { - position { - x: 0.0 - y: 0.0 - z: 0.0 - w: 1.0 - } - rotation { - x: 0.0 - y: 0.0 - z: 0.0 - w: 1.0 - } - scale { - x: 0.9 - y: 0.9 - z: 1.0 - w: 1.0 - } - size { - x: 245.0 - y: 50.0 - z: 0.0 - w: 1.0 - } - color { - x: 0.31 - y: 0.318 - z: 0.322 - w: 1.0 - } type: TYPE_TEXT - blend_mode: BLEND_MODE_ALPHA - text: "Tap to scroll 11" - font: "text_bold" id: "button11/text" - xanchor: XANCHOR_NONE - yanchor: YANCHOR_NONE - pivot: PIVOT_CENTER - outline { - x: 1.0 - y: 1.0 - z: 1.0 - w: 1.0 - } - shadow { - x: 1.0 - y: 1.0 - z: 1.0 - w: 1.0 - } - adjust_mode: ADJUST_MODE_FIT - line_break: true parent: "button11/root" - layer: "text_bold" - inherit_alpha: true - alpha: 1.0 - outline_alpha: 0.0 - shadow_alpha: 0.0 - overridden_fields: 3 - overridden_fields: 8 - overridden_fields: 18 template_node_child: true - text_leading: 1.0 - text_tracking: 0.0 - custom_type: 0 - enabled: true - visible: true - material: "" } nodes { position { - x: 0.0 y: -2300.0 - z: 0.0 - w: 1.0 - } - rotation { - x: 0.0 - y: 0.0 - z: 0.0 - w: 1.0 - } - scale { - x: 1.0 - y: 1.0 - z: 1.0 - w: 1.0 - } - size { - x: 200.0 - y: 100.0 - z: 0.0 - w: 1.0 - } - color { - x: 1.0 - y: 1.0 - z: 1.0 - w: 1.0 } type: TYPE_TEMPLATE id: "button12" parent: "scroll_content" - layer: "" inherit_alpha: true - alpha: 1.0 template: "/example/templates/button_text_green.gui" - template_node_child: false - custom_type: 0 - enabled: true } nodes { - position { - x: 0.0 - y: 0.0 - z: 0.0 - w: 1.0 - } - rotation { - x: 0.0 - y: 0.0 - z: 0.0 - w: 1.0 - } - scale { - x: 1.0 - y: 1.0 - z: 1.0 - w: 1.0 - } - size { - x: 280.0 - y: 90.0 - z: 0.0 - w: 1.0 - } - color { - x: 0.557 - y: 0.835 - z: 0.62 - w: 1.0 - } type: TYPE_BOX - blend_mode: BLEND_MODE_ALPHA - texture: "druid/ui_circle_32" id: "button12/root" - xanchor: XANCHOR_NONE - yanchor: YANCHOR_NONE - pivot: PIVOT_CENTER - adjust_mode: ADJUST_MODE_FIT parent: "button12" - layer: "druid" - inherit_alpha: true - slice9 { - x: 16.0 - y: 16.0 - z: 16.0 - w: 16.0 - } - clipping_mode: CLIPPING_MODE_NONE - clipping_visible: true - clipping_inverted: false - alpha: 1.0 template_node_child: true - size_mode: SIZE_MODE_MANUAL - custom_type: 0 - enabled: true - visible: true - material: "" } nodes { - position { - x: 0.0 - y: 0.0 - z: 0.0 - w: 1.0 - } - rotation { - x: 0.0 - y: 0.0 - z: 0.0 - w: 1.0 - } - scale { - x: 0.9 - y: 0.9 - z: 1.0 - w: 1.0 - } - size { - x: 245.0 - y: 50.0 - z: 0.0 - w: 1.0 - } - color { - x: 0.31 - y: 0.318 - z: 0.322 - w: 1.0 - } type: TYPE_TEXT - blend_mode: BLEND_MODE_ALPHA - text: "Tap to scroll 12" - font: "text_bold" id: "button12/text" - xanchor: XANCHOR_NONE - yanchor: YANCHOR_NONE - pivot: PIVOT_CENTER - outline { - x: 1.0 - y: 1.0 - z: 1.0 - w: 1.0 - } - shadow { - x: 1.0 - y: 1.0 - z: 1.0 - w: 1.0 - } - adjust_mode: ADJUST_MODE_FIT - line_break: true parent: "button12/root" - layer: "text_bold" - inherit_alpha: true - alpha: 1.0 - outline_alpha: 0.0 - shadow_alpha: 0.0 - overridden_fields: 3 - overridden_fields: 8 - overridden_fields: 18 template_node_child: true - text_leading: 1.0 - text_tracking: 0.0 - custom_type: 0 - enabled: true - visible: true - material: "" } nodes { position { - x: 0.0 y: -2500.0 - z: 0.0 - w: 1.0 - } - rotation { - x: 0.0 - y: 0.0 - z: 0.0 - w: 1.0 - } - scale { - x: 1.0 - y: 1.0 - z: 1.0 - w: 1.0 - } - size { - x: 200.0 - y: 100.0 - z: 0.0 - w: 1.0 - } - color { - x: 1.0 - y: 1.0 - z: 1.0 - w: 1.0 } type: TYPE_TEMPLATE id: "button13" parent: "scroll_content" - layer: "" inherit_alpha: true - alpha: 1.0 template: "/example/templates/button_text_green.gui" - template_node_child: false - custom_type: 0 - enabled: true } nodes { - position { - x: 0.0 - y: 0.0 - z: 0.0 - w: 1.0 - } - rotation { - x: 0.0 - y: 0.0 - z: 0.0 - w: 1.0 - } - scale { - x: 1.0 - y: 1.0 - z: 1.0 - w: 1.0 - } - size { - x: 280.0 - y: 90.0 - z: 0.0 - w: 1.0 - } - color { - x: 0.557 - y: 0.835 - z: 0.62 - w: 1.0 - } type: TYPE_BOX - blend_mode: BLEND_MODE_ALPHA - texture: "druid/ui_circle_32" id: "button13/root" - xanchor: XANCHOR_NONE - yanchor: YANCHOR_NONE - pivot: PIVOT_CENTER - adjust_mode: ADJUST_MODE_FIT parent: "button13" - layer: "druid" - inherit_alpha: true - slice9 { - x: 16.0 - y: 16.0 - z: 16.0 - w: 16.0 - } - clipping_mode: CLIPPING_MODE_NONE - clipping_visible: true - clipping_inverted: false - alpha: 1.0 template_node_child: true - size_mode: SIZE_MODE_MANUAL - custom_type: 0 - enabled: true - visible: true - material: "" } nodes { - position { - x: 0.0 - y: 0.0 - z: 0.0 - w: 1.0 - } - rotation { - x: 0.0 - y: 0.0 - z: 0.0 - w: 1.0 - } - scale { - x: 0.9 - y: 0.9 - z: 1.0 - w: 1.0 - } - size { - x: 245.0 - y: 50.0 - z: 0.0 - w: 1.0 - } - color { - x: 0.31 - y: 0.318 - z: 0.322 - w: 1.0 - } type: TYPE_TEXT - blend_mode: BLEND_MODE_ALPHA - text: "Tap to scroll 13" - font: "text_bold" id: "button13/text" - xanchor: XANCHOR_NONE - yanchor: YANCHOR_NONE - pivot: PIVOT_CENTER - outline { - x: 1.0 - y: 1.0 - z: 1.0 - w: 1.0 - } - shadow { - x: 1.0 - y: 1.0 - z: 1.0 - w: 1.0 - } - adjust_mode: ADJUST_MODE_FIT - line_break: true parent: "button13/root" - layer: "text_bold" - inherit_alpha: true - alpha: 1.0 - outline_alpha: 0.0 - shadow_alpha: 0.0 - overridden_fields: 3 - overridden_fields: 8 - overridden_fields: 18 template_node_child: true - text_leading: 1.0 - text_tracking: 0.0 - custom_type: 0 - enabled: true - visible: true - material: "" } nodes { position { x: 200.0 y: 500.0 - z: 0.0 - w: 1.0 - } - rotation { - x: 0.0 - y: 0.0 - z: 0.0 - w: 1.0 - } - scale { - x: 1.0 - y: 1.0 - z: 1.0 - w: 1.0 } size { x: 16.0 y: 1000.0 - z: 0.0 - w: 1.0 } color { x: 0.31 y: 0.318 z: 0.322 - w: 1.0 } type: TYPE_BOX - blend_mode: BLEND_MODE_ALPHA - texture: "druid/pixel" + texture: "druid_example/pixel" id: "slider_back" - xanchor: XANCHOR_NONE - yanchor: YANCHOR_NONE pivot: PIVOT_NE - adjust_mode: ADJUST_MODE_FIT parent: "scroll_view" - layer: "" inherit_alpha: true - slice9 { - x: 0.0 - y: 0.0 - z: 0.0 - w: 0.0 - } - clipping_mode: CLIPPING_MODE_NONE - clipping_visible: true - clipping_inverted: false - alpha: 1.0 - template_node_child: false - size_mode: SIZE_MODE_MANUAL - custom_type: 0 - enabled: true - visible: true - material: "" } nodes { position { x: -8.0 y: -24.0 - z: 0.0 - w: 1.0 - } - rotation { - x: 0.0 - y: 0.0 - z: 0.0 - w: 1.0 - } - scale { - x: 1.0 - y: 1.0 - z: 1.0 - w: 1.0 } size { x: 16.0 y: 48.0 - z: 0.0 - w: 1.0 } color { x: 0.463 y: 0.475 z: 0.49 - w: 1.0 } type: TYPE_BOX - blend_mode: BLEND_MODE_ALPHA - texture: "druid/ui_circle_16" + texture: "druid_example/ui_circle_16" id: "slider_pin" - xanchor: XANCHOR_NONE - yanchor: YANCHOR_NONE - pivot: PIVOT_CENTER - adjust_mode: ADJUST_MODE_FIT parent: "slider_back" - layer: "" inherit_alpha: true slice9 { x: 8.0 @@ -2519,17 +398,6 @@ nodes { z: 8.0 w: 8.0 } - clipping_mode: CLIPPING_MODE_NONE - clipping_visible: true - clipping_inverted: false - alpha: 1.0 - template_node_child: false - size_mode: SIZE_MODE_MANUAL - custom_type: 0 - enabled: true - visible: true - material: "" } material: "/builtins/materials/gui.material" adjust_reference: ADJUST_REFERENCE_PARENT -max_nodes: 512 diff --git a/example/examples/basic/scroll_slider/scroll_slider.lua b/example/examples/basic/scroll_slider/scroll_slider.lua index 79723ef..caa43a7 100644 --- a/example/examples/basic/scroll_slider/scroll_slider.lua +++ b/example/examples/basic/scroll_slider/scroll_slider.lua @@ -1,28 +1,20 @@ -local component = require("druid.component") -local slider = require("druid.extended.slider") - ----@class scroll_slider: druid.base_component +---@class examples.scroll_slider: druid.widget ---@field root node ---@field scroll druid.scroll ---@field slider druid.slider ----@field druid druid_instance -local M = component.create("scroll_slider") - ----@param template string ----@param nodes table -function M:init(template, nodes) - self.druid = self:get_druid(template, nodes) +local M = {} +function M:init() self.scroll = self.druid:new_scroll("scroll_view", "scroll_content") self.scroll.on_scroll:subscribe(self.on_scroll) - self.slider = self.druid:new(slider, "slider_pin", vmath.vector3(-8, -976, 0), self.on_slider) --[[@as druid.slider]] + self.slider = self.druid:new_slider("slider_pin", vmath.vector3(-8, -976, 0), self.on_slider) --[[@as druid.slider]] self.slider:set_input_node("slider_back") self.druid:new_hover("slider_back", nil, self.on_slider_back_hover) for index = 1, 13 do - self.druid:new_button("button" .. index .. "/root", self.on_button_click) + self.druid:new_button("button" .. index .. "/root", self.on_button_click, index) end end @@ -38,8 +30,10 @@ function M:on_slider(value) end +---@param params any ---@param button druid.button -function M:on_button_click(_, button) +function M:on_button_click(params, button) + print("on_button_click", params, button) local node = button.node self.scroll:scroll_to(gui.get_position(node)) end @@ -51,4 +45,18 @@ function M:on_slider_back_hover(is_hover) end +---@return string +function M:get_debug_info() + local info = "" + + local s = self.scroll + info = info .. "View Size Y: " .. gui.get(s.view_node, "size.y") .. "\n" + info = info .. "Content Size Y: " .. gui.get(s.content_node, "size.y") .. "\n" + info = info .. "Content position Y: " .. math.ceil(s.position.y) .. "\n" + info = info .. "Content Range Y: " .. s.available_pos.y .. " - " .. s.available_pos.w .. "\n" + + return info +end + + return M diff --git a/example/examples/basic/slider/basic_slider.gui b/example/examples/basic/slider/basic_slider.gui index a8f132a..b8551e6 100644 --- a/example/examples/basic/slider/basic_slider.gui +++ b/example/examples/basic/slider/basic_slider.gui @@ -1,58 +1,24 @@ -script: "" fonts { name: "text_bold" font: "/example/assets/fonts/text_bold.font" } textures { - name: "druid" - texture: "/example/assets/druid.atlas" -} -background_color { - x: 0.0 - y: 0.0 - z: 0.0 - w: 0.0 + name: "druid_example" + texture: "/example/assets/druid_example.atlas" } nodes { - position { - x: 0.0 - y: 0.0 - z: 0.0 - w: 1.0 - } - rotation { - x: 0.0 - y: 0.0 - z: 0.0 - w: 1.0 - } - scale { - x: 1.0 - y: 1.0 - z: 1.0 - w: 1.0 - } size { x: 1000.0 y: 1000.0 - z: 0.0 - w: 1.0 } color { x: 0.173 y: 0.184 z: 0.204 - w: 1.0 } type: TYPE_BOX - blend_mode: BLEND_MODE_ALPHA - texture: "druid/ui_circle_64" + texture: "druid_example/ui_circle_64" id: "root" - xanchor: XANCHOR_NONE - yanchor: YANCHOR_NONE - pivot: PIVOT_CENTER - adjust_mode: ADJUST_MODE_FIT - layer: "" inherit_alpha: true slice9 { x: 32.0 @@ -60,303 +26,63 @@ nodes { z: 32.0 w: 32.0 } - clipping_mode: CLIPPING_MODE_NONE - clipping_visible: true - clipping_inverted: false - alpha: 1.0 - template_node_child: false - size_mode: SIZE_MODE_MANUAL - custom_type: 0 - enabled: true - visible: true - material: "" } nodes { - position { - x: 0.0 - y: 0.0 - z: 0.0 - w: 1.0 - } - rotation { - x: 0.0 - y: 0.0 - z: 0.0 - w: 1.0 - } - scale { - x: 1.0 - y: 1.0 - z: 1.0 - w: 1.0 - } - size { - x: 200.0 - y: 100.0 - z: 0.0 - w: 1.0 - } - color { - x: 1.0 - y: 1.0 - z: 1.0 - w: 1.0 - } type: TYPE_TEMPLATE id: "slider" parent: "root" - layer: "" inherit_alpha: true - alpha: 1.0 template: "/example/templates/slider.gui" - template_node_child: false - custom_type: 0 - enabled: true } nodes { - position { - x: 0.0 - y: 0.0 - z: 0.0 - w: 1.0 - } - rotation { - x: 0.0 - y: 0.0 - z: 0.0 - w: 1.0 - } - scale { - x: 1.0 - y: 1.0 - z: 1.0 - w: 1.0 - } - size { - x: 260.0 - y: 40.0 - z: 0.0 - w: 1.0 - } - color { - x: 0.129 - y: 0.141 - z: 0.157 - w: 1.0 - } type: TYPE_BOX - blend_mode: BLEND_MODE_ALPHA - texture: "druid/empty" id: "slider/root" - xanchor: XANCHOR_NONE - yanchor: YANCHOR_NONE - pivot: PIVOT_CENTER - adjust_mode: ADJUST_MODE_FIT parent: "slider" - layer: "" - inherit_alpha: true - slice9 { - x: 0.0 - y: 0.0 - z: 0.0 - w: 0.0 - } - clipping_mode: CLIPPING_MODE_NONE - clipping_visible: true - clipping_inverted: false - alpha: 1.0 template_node_child: true - size_mode: SIZE_MODE_MANUAL - custom_type: 0 - enabled: true - visible: true - material: "" } nodes { - position { - x: 0.0 - y: 0.0 - z: 0.0 - w: 1.0 - } - rotation { - x: 0.0 - y: 0.0 - z: 0.0 - w: 1.0 - } - scale { - x: 1.0 - y: 1.0 - z: 1.0 - w: 1.0 - } - size { - x: 260.0 - y: 8.0 - z: 0.0 - w: 1.0 - } - color { - x: 0.129 - y: 0.141 - z: 0.157 - w: 1.0 - } type: TYPE_BOX - blend_mode: BLEND_MODE_ALPHA - texture: "druid/ui_circle_8" id: "slider/slider_back" - xanchor: XANCHOR_NONE - yanchor: YANCHOR_NONE - pivot: PIVOT_CENTER - adjust_mode: ADJUST_MODE_FIT parent: "slider/root" - layer: "" - inherit_alpha: true - slice9 { - x: 4.0 - y: 4.0 - z: 4.0 - w: 4.0 - } - clipping_mode: CLIPPING_MODE_NONE - clipping_visible: true - clipping_inverted: false - alpha: 1.0 template_node_child: true - size_mode: SIZE_MODE_MANUAL - custom_type: 0 - enabled: true - visible: true - material: "" } nodes { - position { - x: -118.0 - y: 0.0 - z: 0.0 - w: 1.0 - } - rotation { - x: 0.0 - y: 0.0 - z: 0.0 - w: 1.0 - } - scale { - x: 1.0 - y: 1.0 - z: 1.0 - w: 1.0 - } - size { - x: 24.0 - y: 24.0 - z: 0.0 - w: 1.0 - } - color { - x: 0.722 - y: 0.741 - z: 0.761 - w: 1.0 - } type: TYPE_BOX - blend_mode: BLEND_MODE_ALPHA - texture: "druid/ui_circle_8" id: "slider/slider_pin" - xanchor: XANCHOR_NONE - yanchor: YANCHOR_NONE - pivot: PIVOT_CENTER - adjust_mode: ADJUST_MODE_FIT parent: "slider/root" - layer: "" - inherit_alpha: true - slice9 { - x: 4.0 - y: 4.0 - z: 4.0 - w: 4.0 - } - clipping_mode: CLIPPING_MODE_NONE - clipping_visible: true - clipping_inverted: false - alpha: 1.0 template_node_child: true - size_mode: SIZE_MODE_MANUAL - custom_type: 0 - enabled: true - visible: true - material: "" } nodes { position { - x: 0.0 y: 50.0 - z: 0.0 - w: 1.0 - } - rotation { - x: 0.0 - y: 0.0 - z: 0.0 - w: 1.0 - } - scale { - x: 1.0 - y: 1.0 - z: 1.0 - w: 1.0 } size { x: 150.0 y: 50.0 - z: 0.0 - w: 1.0 } color { x: 0.722 y: 0.741 z: 0.761 - w: 1.0 } type: TYPE_TEXT - blend_mode: BLEND_MODE_ALPHA text: "0 %" font: "text_bold" id: "slider_value" - xanchor: XANCHOR_NONE - yanchor: YANCHOR_NONE - pivot: PIVOT_CENTER outline { x: 1.0 y: 1.0 z: 1.0 - w: 1.0 } shadow { x: 1.0 y: 1.0 z: 1.0 - w: 1.0 } - adjust_mode: ADJUST_MODE_FIT - line_break: false parent: "root" - layer: "" inherit_alpha: true - alpha: 1.0 outline_alpha: 0.0 shadow_alpha: 0.0 - template_node_child: false - text_leading: 1.0 - text_tracking: 0.0 - custom_type: 0 - enabled: true - visible: true - material: "" } material: "/builtins/materials/gui.material" adjust_reference: ADJUST_REFERENCE_PARENT -max_nodes: 512 diff --git a/example/examples/basic/slider/basic_slider.lua b/example/examples/basic/slider/basic_slider.lua index 05fcabc..85d74f4 100644 --- a/example/examples/basic/slider/basic_slider.lua +++ b/example/examples/basic/slider/basic_slider.lua @@ -1,19 +1,12 @@ -local component = require("druid.component") -local slider = require("druid.extended.slider") +local helper = require("druid.helper") ----@class basic_slider: druid.base_component ----@field druid druid_instance +---@class examples.basic_slider: druid.widget ---@field root node ---@field slider druid.slider -local M = component.create("basic_slider") +local M = {} - ----@param template string ----@param nodes table -function M:init(template, nodes) - self.druid = self:get_druid(template, nodes) - - self.slider = self.druid:new(slider, "slider/slider_pin", vmath.vector3(118, 0, 0), self.on_slider_change) --[[@as druid.slider]] +function M:init() + self.slider = self.druid:new_slider("slider/slider_pin", vmath.vector3(118, 0, 0), self.on_slider_change) --[[@as druid.slider]] -- To add input across all slider widget add a root node to acquire additional input self.slider:set_input_node("slider/root") @@ -27,4 +20,13 @@ function M:on_slider_change(value) end +---@param output_log output_list +function M:on_example_created(output_log) + self.slider.on_change_value:subscribe(function(_, value) + value = helper.round(value, 2) + output_log:add_log_text("Slider Value: " .. value) + end) +end + + return M diff --git a/example/examples/basic/slider/basic_slider_stepped.gui b/example/examples/basic/slider/basic_slider_stepped.gui index a8f132a..b8551e6 100644 --- a/example/examples/basic/slider/basic_slider_stepped.gui +++ b/example/examples/basic/slider/basic_slider_stepped.gui @@ -1,58 +1,24 @@ -script: "" fonts { name: "text_bold" font: "/example/assets/fonts/text_bold.font" } textures { - name: "druid" - texture: "/example/assets/druid.atlas" -} -background_color { - x: 0.0 - y: 0.0 - z: 0.0 - w: 0.0 + name: "druid_example" + texture: "/example/assets/druid_example.atlas" } nodes { - position { - x: 0.0 - y: 0.0 - z: 0.0 - w: 1.0 - } - rotation { - x: 0.0 - y: 0.0 - z: 0.0 - w: 1.0 - } - scale { - x: 1.0 - y: 1.0 - z: 1.0 - w: 1.0 - } size { x: 1000.0 y: 1000.0 - z: 0.0 - w: 1.0 } color { x: 0.173 y: 0.184 z: 0.204 - w: 1.0 } type: TYPE_BOX - blend_mode: BLEND_MODE_ALPHA - texture: "druid/ui_circle_64" + texture: "druid_example/ui_circle_64" id: "root" - xanchor: XANCHOR_NONE - yanchor: YANCHOR_NONE - pivot: PIVOT_CENTER - adjust_mode: ADJUST_MODE_FIT - layer: "" inherit_alpha: true slice9 { x: 32.0 @@ -60,303 +26,63 @@ nodes { z: 32.0 w: 32.0 } - clipping_mode: CLIPPING_MODE_NONE - clipping_visible: true - clipping_inverted: false - alpha: 1.0 - template_node_child: false - size_mode: SIZE_MODE_MANUAL - custom_type: 0 - enabled: true - visible: true - material: "" } nodes { - position { - x: 0.0 - y: 0.0 - z: 0.0 - w: 1.0 - } - rotation { - x: 0.0 - y: 0.0 - z: 0.0 - w: 1.0 - } - scale { - x: 1.0 - y: 1.0 - z: 1.0 - w: 1.0 - } - size { - x: 200.0 - y: 100.0 - z: 0.0 - w: 1.0 - } - color { - x: 1.0 - y: 1.0 - z: 1.0 - w: 1.0 - } type: TYPE_TEMPLATE id: "slider" parent: "root" - layer: "" inherit_alpha: true - alpha: 1.0 template: "/example/templates/slider.gui" - template_node_child: false - custom_type: 0 - enabled: true } nodes { - position { - x: 0.0 - y: 0.0 - z: 0.0 - w: 1.0 - } - rotation { - x: 0.0 - y: 0.0 - z: 0.0 - w: 1.0 - } - scale { - x: 1.0 - y: 1.0 - z: 1.0 - w: 1.0 - } - size { - x: 260.0 - y: 40.0 - z: 0.0 - w: 1.0 - } - color { - x: 0.129 - y: 0.141 - z: 0.157 - w: 1.0 - } type: TYPE_BOX - blend_mode: BLEND_MODE_ALPHA - texture: "druid/empty" id: "slider/root" - xanchor: XANCHOR_NONE - yanchor: YANCHOR_NONE - pivot: PIVOT_CENTER - adjust_mode: ADJUST_MODE_FIT parent: "slider" - layer: "" - inherit_alpha: true - slice9 { - x: 0.0 - y: 0.0 - z: 0.0 - w: 0.0 - } - clipping_mode: CLIPPING_MODE_NONE - clipping_visible: true - clipping_inverted: false - alpha: 1.0 template_node_child: true - size_mode: SIZE_MODE_MANUAL - custom_type: 0 - enabled: true - visible: true - material: "" } nodes { - position { - x: 0.0 - y: 0.0 - z: 0.0 - w: 1.0 - } - rotation { - x: 0.0 - y: 0.0 - z: 0.0 - w: 1.0 - } - scale { - x: 1.0 - y: 1.0 - z: 1.0 - w: 1.0 - } - size { - x: 260.0 - y: 8.0 - z: 0.0 - w: 1.0 - } - color { - x: 0.129 - y: 0.141 - z: 0.157 - w: 1.0 - } type: TYPE_BOX - blend_mode: BLEND_MODE_ALPHA - texture: "druid/ui_circle_8" id: "slider/slider_back" - xanchor: XANCHOR_NONE - yanchor: YANCHOR_NONE - pivot: PIVOT_CENTER - adjust_mode: ADJUST_MODE_FIT parent: "slider/root" - layer: "" - inherit_alpha: true - slice9 { - x: 4.0 - y: 4.0 - z: 4.0 - w: 4.0 - } - clipping_mode: CLIPPING_MODE_NONE - clipping_visible: true - clipping_inverted: false - alpha: 1.0 template_node_child: true - size_mode: SIZE_MODE_MANUAL - custom_type: 0 - enabled: true - visible: true - material: "" } nodes { - position { - x: -118.0 - y: 0.0 - z: 0.0 - w: 1.0 - } - rotation { - x: 0.0 - y: 0.0 - z: 0.0 - w: 1.0 - } - scale { - x: 1.0 - y: 1.0 - z: 1.0 - w: 1.0 - } - size { - x: 24.0 - y: 24.0 - z: 0.0 - w: 1.0 - } - color { - x: 0.722 - y: 0.741 - z: 0.761 - w: 1.0 - } type: TYPE_BOX - blend_mode: BLEND_MODE_ALPHA - texture: "druid/ui_circle_8" id: "slider/slider_pin" - xanchor: XANCHOR_NONE - yanchor: YANCHOR_NONE - pivot: PIVOT_CENTER - adjust_mode: ADJUST_MODE_FIT parent: "slider/root" - layer: "" - inherit_alpha: true - slice9 { - x: 4.0 - y: 4.0 - z: 4.0 - w: 4.0 - } - clipping_mode: CLIPPING_MODE_NONE - clipping_visible: true - clipping_inverted: false - alpha: 1.0 template_node_child: true - size_mode: SIZE_MODE_MANUAL - custom_type: 0 - enabled: true - visible: true - material: "" } nodes { position { - x: 0.0 y: 50.0 - z: 0.0 - w: 1.0 - } - rotation { - x: 0.0 - y: 0.0 - z: 0.0 - w: 1.0 - } - scale { - x: 1.0 - y: 1.0 - z: 1.0 - w: 1.0 } size { x: 150.0 y: 50.0 - z: 0.0 - w: 1.0 } color { x: 0.722 y: 0.741 z: 0.761 - w: 1.0 } type: TYPE_TEXT - blend_mode: BLEND_MODE_ALPHA text: "0 %" font: "text_bold" id: "slider_value" - xanchor: XANCHOR_NONE - yanchor: YANCHOR_NONE - pivot: PIVOT_CENTER outline { x: 1.0 y: 1.0 z: 1.0 - w: 1.0 } shadow { x: 1.0 y: 1.0 z: 1.0 - w: 1.0 } - adjust_mode: ADJUST_MODE_FIT - line_break: false parent: "root" - layer: "" inherit_alpha: true - alpha: 1.0 outline_alpha: 0.0 shadow_alpha: 0.0 - template_node_child: false - text_leading: 1.0 - text_tracking: 0.0 - custom_type: 0 - enabled: true - visible: true - material: "" } material: "/builtins/materials/gui.material" adjust_reference: ADJUST_REFERENCE_PARENT -max_nodes: 512 diff --git a/example/examples/basic/slider/basic_slider_stepped.lua b/example/examples/basic/slider/basic_slider_stepped.lua index 02becaf..06a14bd 100644 --- a/example/examples/basic/slider/basic_slider_stepped.lua +++ b/example/examples/basic/slider/basic_slider_stepped.lua @@ -1,19 +1,12 @@ -local component = require("druid.component") -local slider = require("druid.extended.slider") +local helper = require("druid.helper") ----@class basic_slider_stepped: druid.base_component ----@field druid druid_instance +---@class examples.basic_slider_stepped: druid.widget ---@field root node ---@field slider druid.slider -local M = component.create("basic_slider_stepped") +local M = {} - ----@param template string ----@param nodes table -function M:init(template, nodes) - self.druid = self:get_druid(template, nodes) - - self.slider = self.druid:new(slider, "slider/slider_pin", vmath.vector3(118, 0, 0), self.on_slider_change) --[[@as druid.slider]] +function M:init() + self.slider = self.druid:new_slider("slider/slider_pin", vmath.vector3(118, 0, 0), self.on_slider_change) --[[@as druid.slider]] -- To add input across all slider widget add a root node to acquire additional input self.slider:set_input_node("slider/root") @@ -29,4 +22,13 @@ function M:on_slider_change(value) end +---@param output_log output_list +function M:on_example_created(output_log) + self.slider.on_change_value:subscribe(function(_, value) + value = helper.round(value, 2) + output_log:add_log_text("Slider Value: " .. value) + end) +end + + return M diff --git a/example/examples/basic/slider/basic_slider_vertical.gui b/example/examples/basic/slider/basic_slider_vertical.gui index f039094..107c3ae 100644 --- a/example/examples/basic/slider/basic_slider_vertical.gui +++ b/example/examples/basic/slider/basic_slider_vertical.gui @@ -3,8 +3,8 @@ fonts { font: "/example/assets/fonts/text_bold.font" } textures { - name: "druid" - texture: "/example/assets/druid.atlas" + name: "druid_example" + texture: "/example/assets/druid_example.atlas" } nodes { size { @@ -17,7 +17,7 @@ nodes { z: 0.204 } type: TYPE_BOX - texture: "druid/ui_circle_64" + texture: "druid_example/ui_circle_64" id: "root" inherit_alpha: true slice9 { @@ -46,19 +46,18 @@ nodes { template_node_child: true } nodes { - size { - x: 9.0 - y: 260.0 + rotation { + z: 90.0 } type: TYPE_BOX id: "slider/slider_back" parent: "slider/root" - overridden_fields: 4 + overridden_fields: 2 template_node_child: true } nodes { position { - y: 118.0 + y: -118.0 } type: TYPE_BOX id: "slider/slider_pin" diff --git a/example/examples/basic/slider/basic_slider_vertical.lua b/example/examples/basic/slider/basic_slider_vertical.lua index ba3eff7..e05ba16 100644 --- a/example/examples/basic/slider/basic_slider_vertical.lua +++ b/example/examples/basic/slider/basic_slider_vertical.lua @@ -1,19 +1,12 @@ -local component = require("druid.component") -local slider = require("druid.extended.slider") +local helper = require("druid.helper") ----@class basic_slider_vertical: druid.base_component ----@field druid druid_instance +---@class examples.basic_slider_vertical: druid.widget ---@field root node ---@field slider druid.slider -local M = component.create("basic_slider_vertical") +local M = {} - ----@param template string ----@param nodes table -function M:init(template, nodes) - self.druid = self:get_druid(template, nodes) - - self.slider = self.druid:new(slider, "slider/slider_pin", vmath.vector3(0, -118, 0), self.on_slider_change) --[[@as druid.slider]] +function M:init() + self.slider = self.druid:new_slider("slider/slider_pin", vmath.vector3(0, 118, 0), self.on_slider_change) --[[@as druid.slider]] -- To add input across all slider widget add a root node to acquire additional input self.slider:set_input_node("slider/root") @@ -27,4 +20,14 @@ function M:on_slider_change(value) end +---@param output_log output_list +function M:on_example_created(output_log) + self.slider.on_change_value:subscribe(function(_, value) + value = helper.round(value, 2) + output_log:add_log_text("Slider Value: " .. value) + end) +end + + + return M diff --git a/example/examples/basic/swipe/basic_swipe.gui b/example/examples/basic/swipe/basic_swipe.gui index 8faba60..5889073 100644 --- a/example/examples/basic/swipe/basic_swipe.gui +++ b/example/examples/basic/swipe/basic_swipe.gui @@ -1,58 +1,24 @@ -script: "" fonts { name: "text_bold" font: "/example/assets/fonts/text_bold.font" } textures { - name: "druid" - texture: "/example/assets/druid.atlas" -} -background_color { - x: 0.0 - y: 0.0 - z: 0.0 - w: 0.0 + name: "druid_example" + texture: "/example/assets/druid_example.atlas" } nodes { - position { - x: 0.0 - y: 0.0 - z: 0.0 - w: 1.0 - } - rotation { - x: 0.0 - y: 0.0 - z: 0.0 - w: 1.0 - } - scale { - x: 1.0 - y: 1.0 - z: 1.0 - w: 1.0 - } size { x: 1000.0 y: 1000.0 - z: 0.0 - w: 1.0 } color { x: 0.173 y: 0.184 z: 0.204 - w: 1.0 } type: TYPE_BOX - blend_mode: BLEND_MODE_ALPHA - texture: "druid/ui_circle_64" + texture: "druid_example/ui_circle_64" id: "root" - xanchor: XANCHOR_NONE - yanchor: YANCHOR_NONE - pivot: PIVOT_CENTER - adjust_mode: ADJUST_MODE_FIT - layer: "" inherit_alpha: true slice9 { x: 32.0 @@ -60,84 +26,35 @@ nodes { z: 32.0 w: 32.0 } - clipping_mode: CLIPPING_MODE_NONE - clipping_visible: true - clipping_inverted: false - alpha: 1.0 - template_node_child: false - size_mode: SIZE_MODE_MANUAL - custom_type: 0 - enabled: true - visible: true - material: "" } nodes { - position { - x: 0.0 - y: 0.0 - z: 0.0 - w: 1.0 - } - rotation { - x: 0.0 - y: 0.0 - z: 0.0 - w: 1.0 - } - scale { - x: 1.0 - y: 1.0 - z: 1.0 - w: 1.0 - } size { x: 600.0 y: 50.0 - z: 0.0 - w: 1.0 } color { x: 0.722 y: 0.741 z: 0.761 - w: 1.0 } type: TYPE_TEXT - blend_mode: BLEND_MODE_ALPHA text: "Swipe across area to action" font: "text_bold" id: "swipe_hint" - xanchor: XANCHOR_NONE - yanchor: YANCHOR_NONE - pivot: PIVOT_CENTER outline { x: 1.0 y: 1.0 z: 1.0 - w: 1.0 } shadow { x: 1.0 y: 1.0 z: 1.0 - w: 1.0 } - adjust_mode: ADJUST_MODE_FIT - line_break: false parent: "root" - layer: "" inherit_alpha: true - alpha: 1.0 outline_alpha: 0.0 shadow_alpha: 0.0 - template_node_child: false - text_leading: 1.0 - text_tracking: 0.0 - custom_type: 0 - enabled: true - visible: true - material: "" } material: "/builtins/materials/gui.material" adjust_reference: ADJUST_REFERENCE_PARENT -max_nodes: 512 diff --git a/example/examples/basic/swipe/basic_swipe.lua b/example/examples/basic/swipe/basic_swipe.lua index e8d768a..5ef7d6a 100644 --- a/example/examples/basic/swipe/basic_swipe.lua +++ b/example/examples/basic/swipe/basic_swipe.lua @@ -1,16 +1,10 @@ -local component = require("druid.component") -local swipe = require("druid.extended.swipe") +---@class examples.basic_swipe: druid.widget +---@field swipe druid.swipe +local M = {} ----@class basic_swipe: druid.base_component ----@field druid druid_instance -local M = component.create("basic_swipe") ----@param template string ----@param nodes table -function M:init(template, nodes) - self.druid = self:get_druid(template, nodes) - - self.swipe = self.druid:new(swipe, "root", self.on_swipe) --[[@as druid.swipe]] +function M:init() + self.swipe = self.druid:new_swipe("root", self.on_swipe) --[[@as druid.swipe]] self.text_hint = self:get_node("swipe_hint") end @@ -31,4 +25,12 @@ function M:on_swipe(swipe_side, dist, delta_time) end +---@param output_log output_list +function M:on_example_created(output_log) + self.swipe.on_swipe:subscribe(function(_, side, dist, delta_time) + output_log:add_log_text("Swipe Side: " .. side) + end) +end + + return M diff --git a/example/examples/basic/text/basic_text.gui b/example/examples/basic/text/basic_text.gui index 185debb..0fb22eb 100644 --- a/example/examples/basic/text/basic_text.gui +++ b/example/examples/basic/text/basic_text.gui @@ -1,117 +1,36 @@ -script: "" fonts { name: "text_bold" font: "/example/assets/fonts/text_bold.font" } textures { - name: "druid" - texture: "/example/assets/druid.atlas" -} -background_color { - x: 0.0 - y: 0.0 - z: 0.0 - w: 0.0 + name: "druid_example" + texture: "/example/assets/druid_example.atlas" } nodes { - position { - x: 0.0 - y: 0.0 - z: 0.0 - w: 1.0 - } - rotation { - x: 0.0 - y: 0.0 - z: 0.0 - w: 1.0 - } - scale { - x: 1.0 - y: 1.0 - z: 1.0 - w: 1.0 - } size { x: 200.0 y: 100.0 - z: 0.0 - w: 1.0 - } - color { - x: 1.0 - y: 1.0 - z: 1.0 - w: 1.0 } type: TYPE_BOX - blend_mode: BLEND_MODE_ALPHA - texture: "" id: "root" - xanchor: XANCHOR_NONE - yanchor: YANCHOR_NONE - pivot: PIVOT_CENTER - adjust_mode: ADJUST_MODE_FIT - layer: "" inherit_alpha: true - slice9 { - x: 0.0 - y: 0.0 - z: 0.0 - w: 0.0 - } - clipping_mode: CLIPPING_MODE_NONE - clipping_visible: true - clipping_inverted: false - alpha: 1.0 - template_node_child: false size_mode: SIZE_MODE_AUTO - custom_type: 0 - enabled: true visible: false - material: "" } nodes { - position { - x: 0.0 - y: 0.0 - z: 0.0 - w: 1.0 - } - rotation { - x: 0.0 - y: 0.0 - z: 0.0 - w: 1.0 - } - scale { - x: 1.0 - y: 1.0 - z: 1.0 - w: 1.0 - } size { x: 600.0 y: 100.0 - z: 0.0 - w: 1.0 } color { x: 0.463 y: 0.475 z: 0.49 - w: 1.0 } type: TYPE_BOX - blend_mode: BLEND_MODE_ALPHA - texture: "druid/ui_circle_32" + texture: "druid_example/ui_circle_32" id: "text_area" - xanchor: XANCHOR_NONE - yanchor: YANCHOR_NONE - pivot: PIVOT_CENTER - adjust_mode: ADJUST_MODE_FIT parent: "root" - layer: "" inherit_alpha: true slice9 { x: 16.0 @@ -119,84 +38,34 @@ nodes { z: 16.0 w: 16.0 } - clipping_mode: CLIPPING_MODE_NONE - clipping_visible: true - clipping_inverted: false - alpha: 1.0 - template_node_child: false - size_mode: SIZE_MODE_MANUAL - custom_type: 0 - enabled: true - visible: true - material: "" } nodes { - position { - x: 0.0 - y: 0.0 - z: 0.0 - w: 1.0 - } - rotation { - x: 0.0 - y: 0.0 - z: 0.0 - w: 1.0 - } - scale { - x: 1.0 - y: 1.0 - z: 1.0 - w: 1.0 - } size { x: 600.0 y: 100.0 - z: 0.0 - w: 1.0 } color { x: 0.941 y: 0.984 - z: 1.0 - w: 1.0 } type: TYPE_TEXT - blend_mode: BLEND_MODE_ALPHA text: "Example text with default adjust" font: "text_bold" id: "text" - xanchor: XANCHOR_NONE - yanchor: YANCHOR_NONE - pivot: PIVOT_CENTER outline { x: 1.0 y: 1.0 z: 1.0 - w: 1.0 } shadow { x: 1.0 y: 1.0 z: 1.0 - w: 1.0 } - adjust_mode: ADJUST_MODE_FIT - line_break: false parent: "text_area" - layer: "" inherit_alpha: true - alpha: 1.0 outline_alpha: 0.0 shadow_alpha: 0.0 - template_node_child: false - text_leading: 1.0 - text_tracking: 0.0 - custom_type: 0 - enabled: true - visible: true - material: "" } material: "/builtins/materials/gui.material" adjust_reference: ADJUST_REFERENCE_PARENT -max_nodes: 512 diff --git a/example/examples/basic/text/basic_text.lua b/example/examples/basic/text/basic_text.lua index 63889c5..1d61dd3 100644 --- a/example/examples/basic/text/basic_text.lua +++ b/example/examples/basic/text/basic_text.lua @@ -1,22 +1,14 @@ local helper = require("druid.helper") -local component = require("druid.component") -local container = require("example.components.container.container") -local lang_text = require("druid.extended.lang_text") ----@class basic_text: druid.base_component ----@field druid druid_instance +---@class examples.basic_text: druid.widget ---@field text druid.text -local M = component.create("basic_text") - ----@param template string ----@param nodes table -function M:init(template, nodes) - self.druid = self:get_druid(template, nodes) +local M = {} +function M:init() self.text = self.druid:new_text("text") -- This code is for adjustable text area with mouse - self.container = self.druid:new(container, "text_area", nil, function(_, size) + self.container = self.druid:new_container("text_area", nil, function(_, size) self.text:set_size(size) self:refresh_text_position() end) --[[@as druid.container]] @@ -39,4 +31,56 @@ function M:refresh_text_position() end +---@param properties_panel properties_panel +function M:properties_control(properties_panel) + local adjust_index = 1 + local adjust_types = { + "downscale", + "downscale_limited", + --"scale_then_scroll", -- works bad with container for some reason + --"scroll", -- works bad with container for some reason + "trim", + } + properties_panel:add_button("ui_adjust_next", function() + adjust_index = adjust_index + 1 + if adjust_index > #adjust_types then + adjust_index = 1 + end + self.text:set_text_adjust(adjust_types[adjust_index], 0.5) + end) + + local pivot_index = 1 + local pivot_list = { + gui.PIVOT_CENTER, + gui.PIVOT_W, + gui.PIVOT_SW, + gui.PIVOT_S, + gui.PIVOT_SE, + gui.PIVOT_E, + gui.PIVOT_NE, + gui.PIVOT_N, + gui.PIVOT_NW, + } + + properties_panel:add_button("ui_pivot_next", function() + pivot_index = pivot_index + 1 + if pivot_index > #pivot_list then + pivot_index = 1 + end + self:set_pivot(pivot_list[pivot_index]) + end) +end + + +---@return string +function M:get_debug_info() + local info = "" + + info = info .. "Text Adjust: " .. self.text.adjust_type .. "\n" + info = info .. "Pivot: " .. gui.get_pivot(self.text.node) .. "\n" + + return info +end + + return M diff --git a/example/examples/basic/text/multiline_text.gui b/example/examples/basic/text/multiline_text.gui index 3a66171..b4c491a 100644 --- a/example/examples/basic/text/multiline_text.gui +++ b/example/examples/basic/text/multiline_text.gui @@ -1,117 +1,36 @@ -script: "" fonts { name: "text_bold" font: "/example/assets/fonts/text_bold.font" } textures { - name: "druid" - texture: "/example/assets/druid.atlas" -} -background_color { - x: 0.0 - y: 0.0 - z: 0.0 - w: 0.0 + name: "druid_example" + texture: "/example/assets/druid_example.atlas" } nodes { - position { - x: 0.0 - y: 0.0 - z: 0.0 - w: 1.0 - } - rotation { - x: 0.0 - y: 0.0 - z: 0.0 - w: 1.0 - } - scale { - x: 1.0 - y: 1.0 - z: 1.0 - w: 1.0 - } size { x: 200.0 y: 100.0 - z: 0.0 - w: 1.0 - } - color { - x: 1.0 - y: 1.0 - z: 1.0 - w: 1.0 } type: TYPE_BOX - blend_mode: BLEND_MODE_ALPHA - texture: "" id: "root" - xanchor: XANCHOR_NONE - yanchor: YANCHOR_NONE - pivot: PIVOT_CENTER - adjust_mode: ADJUST_MODE_FIT - layer: "" inherit_alpha: true - slice9 { - x: 0.0 - y: 0.0 - z: 0.0 - w: 0.0 - } - clipping_mode: CLIPPING_MODE_NONE - clipping_visible: true - clipping_inverted: false - alpha: 1.0 - template_node_child: false size_mode: SIZE_MODE_AUTO - custom_type: 0 - enabled: true visible: false - material: "" } nodes { - position { - x: 0.0 - y: 0.0 - z: 0.0 - w: 1.0 - } - rotation { - x: 0.0 - y: 0.0 - z: 0.0 - w: 1.0 - } - scale { - x: 1.0 - y: 1.0 - z: 1.0 - w: 1.0 - } size { x: 600.0 y: 100.0 - z: 0.0 - w: 1.0 } color { x: 0.463 y: 0.475 z: 0.49 - w: 1.0 } type: TYPE_BOX - blend_mode: BLEND_MODE_ALPHA - texture: "druid/ui_circle_32" + texture: "druid_example/ui_circle_32" id: "text_area" - xanchor: XANCHOR_NONE - yanchor: YANCHOR_NONE - pivot: PIVOT_CENTER - adjust_mode: ADJUST_MODE_FIT parent: "root" - layer: "" inherit_alpha: true slice9 { x: 16.0 @@ -119,84 +38,35 @@ nodes { z: 16.0 w: 16.0 } - clipping_mode: CLIPPING_MODE_NONE - clipping_visible: true - clipping_inverted: false - alpha: 1.0 - template_node_child: false - size_mode: SIZE_MODE_MANUAL - custom_type: 0 - enabled: true - visible: true - material: "" } nodes { - position { - x: 0.0 - y: 0.0 - z: 0.0 - w: 1.0 - } - rotation { - x: 0.0 - y: 0.0 - z: 0.0 - w: 1.0 - } - scale { - x: 1.0 - y: 1.0 - z: 1.0 - w: 1.0 - } size { x: 600.0 y: 100.0 - z: 0.0 - w: 1.0 } color { x: 0.941 y: 0.984 - z: 1.0 - w: 1.0 } type: TYPE_TEXT - blend_mode: BLEND_MODE_ALPHA text: "Example multiline text with default adjust" font: "text_bold" id: "text" - xanchor: XANCHOR_NONE - yanchor: YANCHOR_NONE - pivot: PIVOT_CENTER outline { x: 1.0 y: 1.0 z: 1.0 - w: 1.0 } shadow { x: 1.0 y: 1.0 z: 1.0 - w: 1.0 } - adjust_mode: ADJUST_MODE_FIT line_break: true parent: "text_area" - layer: "" inherit_alpha: true - alpha: 1.0 outline_alpha: 0.0 shadow_alpha: 0.0 - template_node_child: false - text_leading: 1.0 - text_tracking: 0.0 - custom_type: 0 - enabled: true - visible: true - material: "" } material: "/builtins/materials/gui.material" adjust_reference: ADJUST_REFERENCE_PARENT -max_nodes: 512 diff --git a/example/examples/basic/text/multiline_text.lua b/example/examples/basic/text/multiline_text.lua index 56f78c8..a28be61 100644 --- a/example/examples/basic/text/multiline_text.lua +++ b/example/examples/basic/text/multiline_text.lua @@ -1,22 +1,15 @@ local helper = require("druid.helper") -local component = require("druid.component") -local container = require("example.components.container.container") ----@class multiline_text: druid.base_component +---@class examples.multiline_text: druid.widget ---@field root node ----@field druid druid_instance -local M = component.create("multiline_text") - ----@param template string ----@param nodes table -function M:init(template, nodes) - self.druid = self:get_druid(template, nodes) +local M = {} +function M:init() self.root = self:get_node("root") self.text = self.druid:new_text("text") -- This code is for adjustable text area with mouse - self.container = self.druid:new(container, "text_area", nil, function(_, size) + self.container = self.druid:new_container("text_area", nil, function(_, size) self.text:set_size(size) self:refresh_text_position() end) --[[@as druid.container]] @@ -39,4 +32,56 @@ function M:refresh_text_position() end +---@param properties_panel properties_panel +function M:properties_control(properties_panel) + local adjust_index = 1 + local adjust_types = { + "downscale", + "downscale_limited", + --"scale_then_scroll", -- works bad with container for some reason + --"scroll", -- works bad with container for some reason + "trim", + } + properties_panel:add_button("ui_adjust_next", function() + adjust_index = adjust_index + 1 + if adjust_index > #adjust_types then + adjust_index = 1 + end + self.text:set_text_adjust(adjust_types[adjust_index], 0.8) + end) + + local pivot_index = 1 + local pivot_list = { + gui.PIVOT_CENTER, + gui.PIVOT_W, + gui.PIVOT_SW, + gui.PIVOT_S, + gui.PIVOT_SE, + gui.PIVOT_E, + gui.PIVOT_NE, + gui.PIVOT_N, + gui.PIVOT_NW, + } + + properties_panel:add_button("ui_pivot_next", function() + pivot_index = pivot_index + 1 + if pivot_index > #pivot_list then + pivot_index = 1 + end + self:set_pivot(pivot_list[pivot_index]) + end) +end + + +---@return string +function M:get_debug_info() + local info = "" + + info = info .. "Text Adjust: " .. self.text.adjust_type .. "\n" + info = info .. "Pivot: " .. gui.get_pivot(self.text.node) .. "\n" + + return info +end + + return M diff --git a/example/examples/basic/timer/basic_timer.lua b/example/examples/basic/timer/basic_timer.lua index 72fcca4..19e9efa 100644 --- a/example/examples/basic/timer/basic_timer.lua +++ b/example/examples/basic/timer/basic_timer.lua @@ -1,22 +1,13 @@ -local event = require("druid.event") -local timer = require("druid.extended.timer") +local event = require("event.event") -local component = require("druid.component") - ----@class basic_timer: druid.component ----@field druid druid_instance +---@class examples.basic_timer: druid.widget ---@field root node ---@field text druid.text -local M = component.create("basic_timer") - - ----@param template string ----@param nodes table -function M:init(template, nodes) - self.druid = self:get_druid(template, nodes) +local M = {} +function M:init() self.root = self:get_node("root") - self.timer = self.druid:new(timer, "text") + self.timer = self.druid:new_timer("text") local time = 5 self.timer:set_interval(time, 0) @@ -30,4 +21,12 @@ function M:init(template, nodes) end +---@param output_log output_list +function M:on_example_created(output_log) + self.on_cycle_end:subscribe(function() + output_log:add_log_text("Timer Cycle End") + end) +end + + return M diff --git a/example/examples/container/container_anchors/container_anchors.gui b/example/examples/container/container_anchors/container_anchors.gui new file mode 100644 index 0000000..9f9bb16 --- /dev/null +++ b/example/examples/container/container_anchors/container_anchors.gui @@ -0,0 +1,308 @@ +fonts { + name: "text_bold" + font: "/example/assets/fonts/text_bold.font" +} +fonts { + name: "text_regular" + font: "/example/assets/fonts/text_regular.font" +} +textures { + name: "druid_example" + texture: "/example/assets/druid_example.atlas" +} +nodes { + size { + x: 1000.0 + y: 1000.0 + } + color { + x: 0.173 + y: 0.184 + z: 0.204 + } + type: TYPE_BOX + texture: "druid_example/ui_circle_64" + id: "root" + inherit_alpha: true + slice9 { + x: 32.0 + y: 32.0 + z: 32.0 + w: 32.0 + } +} +nodes { + position { + y: 455.0 + } + size { + x: 900.0 + y: 100.0 + } + type: TYPE_TEXT + text: "Can be used as relative anchors" + font: "text_bold" + id: "text" + parent: "root" + inherit_alpha: true + outline_alpha: 0.0 + shadow_alpha: 0.0 +} +nodes { + size { + x: 840.0 + y: 840.0 + } + color { + x: 0.129 + y: 0.141 + z: 0.157 + } + type: TYPE_BOX + texture: "druid_example/ui_circle_32" + id: "parent_container" + parent: "root" + inherit_alpha: true + slice9 { + x: 16.0 + y: 16.0 + z: 16.0 + w: 16.0 + } +} +nodes { + position { + x: 400.0 + y: 400.0 + } + size { + x: 96.0 + y: 96.0 + } + color { + x: 0.902 + y: 0.875 + z: 0.624 + } + type: TYPE_BOX + texture: "druid_example/ui_circle_32" + id: "anchor_ne" + pivot: PIVOT_NE + parent: "parent_container" + inherit_alpha: true + slice9 { + x: 16.0 + y: 16.0 + z: 16.0 + w: 16.0 + } +} +nodes { + position { + x: 400.0 + } + size { + x: 96.0 + y: 96.0 + } + color { + x: 0.902 + y: 0.875 + z: 0.624 + } + type: TYPE_BOX + texture: "druid_example/ui_circle_32" + id: "anchor_e" + pivot: PIVOT_E + parent: "parent_container" + inherit_alpha: true + slice9 { + x: 16.0 + y: 16.0 + z: 16.0 + w: 16.0 + } +} +nodes { + position { + y: 400.0 + } + size { + x: 96.0 + y: 96.0 + } + color { + x: 0.902 + y: 0.875 + z: 0.624 + } + type: TYPE_BOX + texture: "druid_example/ui_circle_32" + id: "anchor_n" + pivot: PIVOT_N + parent: "parent_container" + inherit_alpha: true + slice9 { + x: 16.0 + y: 16.0 + z: 16.0 + w: 16.0 + } +} +nodes { + position { + x: 400.0 + y: -400.0 + } + size { + x: 96.0 + y: 96.0 + } + color { + x: 0.902 + y: 0.875 + z: 0.624 + } + type: TYPE_BOX + texture: "druid_example/ui_circle_32" + id: "anchor_se" + pivot: PIVOT_SE + parent: "parent_container" + inherit_alpha: true + slice9 { + x: 16.0 + y: 16.0 + z: 16.0 + w: 16.0 + } +} +nodes { + position { + y: -400.0 + } + size { + x: 96.0 + y: 96.0 + } + color { + x: 0.902 + y: 0.875 + z: 0.624 + } + type: TYPE_BOX + texture: "druid_example/ui_circle_32" + id: "anchor_s" + pivot: PIVOT_S + parent: "parent_container" + inherit_alpha: true + slice9 { + x: 16.0 + y: 16.0 + z: 16.0 + w: 16.0 + } +} +nodes { + position { + x: -400.0 + y: -400.0 + } + size { + x: 96.0 + y: 96.0 + } + color { + x: 0.902 + y: 0.875 + z: 0.624 + } + type: TYPE_BOX + texture: "druid_example/ui_circle_32" + id: "anchor_sw" + pivot: PIVOT_SW + parent: "parent_container" + inherit_alpha: true + slice9 { + x: 16.0 + y: 16.0 + z: 16.0 + w: 16.0 + } +} +nodes { + position { + x: -400.0 + } + size { + x: 96.0 + y: 96.0 + } + color { + x: 0.902 + y: 0.875 + z: 0.624 + } + type: TYPE_BOX + texture: "druid_example/ui_circle_32" + id: "anchor_w" + pivot: PIVOT_W + parent: "parent_container" + inherit_alpha: true + slice9 { + x: 16.0 + y: 16.0 + z: 16.0 + w: 16.0 + } +} +nodes { + position { + x: -400.0 + y: 400.0 + } + size { + x: 96.0 + y: 96.0 + } + color { + x: 0.902 + y: 0.875 + z: 0.624 + } + type: TYPE_BOX + texture: "druid_example/ui_circle_32" + id: "anchor_nw" + pivot: PIVOT_NW + parent: "parent_container" + inherit_alpha: true + slice9 { + x: 16.0 + y: 16.0 + z: 16.0 + w: 16.0 + } +} +nodes { + size { + x: 96.0 + y: 96.0 + } + color { + x: 0.902 + y: 0.875 + z: 0.624 + } + type: TYPE_BOX + texture: "druid_example/ui_circle_32" + id: "anchor_center" + parent: "parent_container" + inherit_alpha: true + slice9 { + x: 16.0 + y: 16.0 + z: 16.0 + w: 16.0 + } +} +material: "/builtins/materials/gui.material" +adjust_reference: ADJUST_REFERENCE_PARENT diff --git a/example/examples/container/container_anchors/container_anchors.lua b/example/examples/container/container_anchors/container_anchors.lua new file mode 100644 index 0000000..7a362b5 --- /dev/null +++ b/example/examples/container/container_anchors/container_anchors.lua @@ -0,0 +1,21 @@ +---@class widget.container_anchors: druid.widget +local M = {} + + +function M:init() + self.parent_container = self.druid:new_container("parent_container") + self.parent_container:create_draggable_corners() + + self.parent_container:add_container("anchor_ne") + self.parent_container:add_container("anchor_nw") + self.parent_container:add_container("anchor_se") + self.parent_container:add_container("anchor_sw") + self.parent_container:add_container("anchor_n") + self.parent_container:add_container("anchor_s") + self.parent_container:add_container("anchor_e") + self.parent_container:add_container("anchor_w") + self.parent_container:add_container("anchor_center") +end + + +return M diff --git a/example/examples/container/container_resize/container_resize.gui b/example/examples/container/container_resize/container_resize.gui new file mode 100644 index 0000000..76f8414 --- /dev/null +++ b/example/examples/container/container_resize/container_resize.gui @@ -0,0 +1,429 @@ +fonts { + name: "text_bold" + font: "/example/assets/fonts/text_bold.font" +} +fonts { + name: "text_regular" + font: "/example/assets/fonts/text_regular.font" +} +textures { + name: "druid_example" + texture: "/example/assets/druid_example.atlas" +} +nodes { + size { + x: 1000.0 + y: 1000.0 + } + color { + x: 0.173 + y: 0.184 + z: 0.204 + } + type: TYPE_BOX + texture: "druid_example/ui_circle_64" + id: "root" + inherit_alpha: true + slice9 { + x: 32.0 + y: 32.0 + z: 32.0 + w: 32.0 + } +} +nodes { + position { + y: 455.0 + } + size { + x: 900.0 + y: 100.0 + } + type: TYPE_TEXT + text: "Can be resized with different rules" + font: "text_bold" + id: "text" + parent: "root" + inherit_alpha: true + outline_alpha: 0.0 + shadow_alpha: 0.0 +} +nodes { + size { + x: 800.0 + y: 800.0 + } + color { + x: 0.129 + y: 0.141 + z: 0.157 + } + type: TYPE_BOX + texture: "druid_example/ui_circle_32" + id: "parent_container" + parent: "root" + inherit_alpha: true + slice9 { + x: 16.0 + y: 16.0 + z: 16.0 + w: 16.0 + } +} +nodes { + position { + x: -400.0 + } + size { + x: 200.0 + y: 800.0 + } + color { + x: 0.902 + y: 0.875 + z: 0.624 + } + type: TYPE_BOX + texture: "druid_example/ui_circle_32" + id: "panel_left" + pivot: PIVOT_W + parent: "parent_container" + inherit_alpha: true + slice9 { + x: 16.0 + y: 16.0 + z: 16.0 + w: 16.0 + } + alpha: 0.75 +} +nodes { + position { + x: 400.0 + } + size { + x: 200.0 + y: 800.0 + } + color { + x: 0.957 + y: 0.608 + z: 0.608 + } + type: TYPE_BOX + texture: "druid_example/ui_circle_32" + id: "panel_right" + pivot: PIVOT_E + parent: "parent_container" + inherit_alpha: true + slice9 { + x: 16.0 + y: 16.0 + z: 16.0 + w: 16.0 + } + alpha: 0.75 +} +nodes { + position { + y: -400.0 + } + size { + x: 400.0 + y: 200.0 + } + color { + x: 0.631 + y: 0.843 + z: 0.961 + } + type: TYPE_BOX + texture: "druid_example/ui_circle_32" + id: "panel_bot" + xanchor: XANCHOR_LEFT + pivot: PIVOT_S + adjust_mode: ADJUST_MODE_STRETCH + parent: "parent_container" + inherit_alpha: true + slice9 { + x: 16.0 + y: 16.0 + z: 16.0 + w: 16.0 + } + alpha: 0.75 +} +nodes { + position { + y: 100.0 + } + size { + x: 400.0 + y: 600.0 + } + color { + x: 0.557 + y: 0.835 + z: 0.62 + } + type: TYPE_BOX + texture: "druid_example/ui_circle_32" + id: "panel_content" + xanchor: XANCHOR_LEFT + yanchor: YANCHOR_BOTTOM + adjust_mode: ADJUST_MODE_STRETCH + parent: "parent_container" + inherit_alpha: true + slice9 { + x: 16.0 + y: 16.0 + z: 16.0 + w: 16.0 + } + alpha: 0.75 +} +nodes { + position { + x: 200.0 + y: 300.0 + } + size { + x: 32.0 + y: 32.0 + } + color { + x: 0.129 + y: 0.141 + z: 0.157 + } + type: TYPE_BOX + texture: "druid_example/ui_circle_32" + id: "anchor_ne" + pivot: PIVOT_NE + parent: "panel_content" + inherit_alpha: true + slice9 { + x: 16.0 + y: 16.0 + z: 16.0 + w: 16.0 + } + alpha: 0.25 +} +nodes { + position { + y: -300.0 + } + size { + x: 32.0 + y: 32.0 + } + color { + x: 0.129 + y: 0.141 + z: 0.157 + } + type: TYPE_BOX + texture: "druid_example/ui_circle_32" + id: "anchor_s" + pivot: PIVOT_S + parent: "panel_content" + inherit_alpha: true + slice9 { + x: 16.0 + y: 16.0 + z: 16.0 + w: 16.0 + } + alpha: 0.25 +} +nodes { + position { + x: -200.0 + y: -300.0 + } + size { + x: 32.0 + y: 32.0 + } + color { + x: 0.129 + y: 0.141 + z: 0.157 + } + type: TYPE_BOX + texture: "druid_example/ui_circle_32" + id: "anchor_sw" + pivot: PIVOT_SW + parent: "panel_content" + inherit_alpha: true + slice9 { + x: 16.0 + y: 16.0 + z: 16.0 + w: 16.0 + } + alpha: 0.25 +} +nodes { + size { + x: 32.0 + y: 32.0 + } + color { + x: 0.129 + y: 0.141 + z: 0.157 + } + type: TYPE_BOX + texture: "druid_example/ui_circle_32" + id: "anchor_center" + parent: "panel_content" + inherit_alpha: true + slice9 { + x: 16.0 + y: 16.0 + z: 16.0 + w: 16.0 + } + alpha: 0.25 +} +nodes { + position { + y: 300.0 + } + size { + x: 32.0 + y: 32.0 + } + color { + x: 0.129 + y: 0.141 + z: 0.157 + } + type: TYPE_BOX + texture: "druid_example/ui_circle_32" + id: "anchor_n" + pivot: PIVOT_N + parent: "panel_content" + inherit_alpha: true + slice9 { + x: 16.0 + y: 16.0 + z: 16.0 + w: 16.0 + } + alpha: 0.25 +} +nodes { + position { + x: 200.0 + } + size { + x: 32.0 + y: 32.0 + } + color { + x: 0.129 + y: 0.141 + z: 0.157 + } + type: TYPE_BOX + texture: "druid_example/ui_circle_32" + id: "anchor_e" + pivot: PIVOT_E + parent: "panel_content" + inherit_alpha: true + slice9 { + x: 16.0 + y: 16.0 + z: 16.0 + w: 16.0 + } + alpha: 0.25 +} +nodes { + position { + x: -200.0 + y: 300.0 + } + size { + x: 32.0 + y: 32.0 + } + color { + x: 0.129 + y: 0.141 + z: 0.157 + } + type: TYPE_BOX + texture: "druid_example/ui_circle_32" + id: "anchor_nw" + pivot: PIVOT_NW + parent: "panel_content" + inherit_alpha: true + slice9 { + x: 16.0 + y: 16.0 + z: 16.0 + w: 16.0 + } + alpha: 0.25 +} +nodes { + position { + x: -200.0 + } + size { + x: 32.0 + y: 32.0 + } + color { + x: 0.129 + y: 0.141 + z: 0.157 + } + type: TYPE_BOX + texture: "druid_example/ui_circle_32" + id: "anchor_w" + pivot: PIVOT_W + parent: "panel_content" + inherit_alpha: true + slice9 { + x: 16.0 + y: 16.0 + z: 16.0 + w: 16.0 + } + alpha: 0.25 +} +nodes { + position { + x: 200.0 + y: -300.0 + } + size { + x: 32.0 + y: 32.0 + } + color { + x: 0.129 + y: 0.141 + z: 0.157 + } + type: TYPE_BOX + texture: "druid_example/ui_circle_32" + id: "anchor_se" + pivot: PIVOT_SE + parent: "panel_content" + inherit_alpha: true + slice9 { + x: 16.0 + y: 16.0 + z: 16.0 + w: 16.0 + } + alpha: 0.25 +} +material: "/builtins/materials/gui.material" +adjust_reference: ADJUST_REFERENCE_PARENT diff --git a/example/examples/container/container_resize/container_resize.lua b/example/examples/container/container_resize/container_resize.lua new file mode 100644 index 0000000..02bc490 --- /dev/null +++ b/example/examples/container/container_resize/container_resize.lua @@ -0,0 +1,26 @@ +---@class widget.container_anchors: druid.widget +local M = {} + + +function M:init() + self.parent_container = self.druid:new_container("parent_container") + self.parent_container:create_draggable_corners() + + self.parent_container:add_container("panel_left", "stretch_y") + self.parent_container:add_container("panel_right", "stretch_y") + self.parent_container:add_container("panel_bot", "stretch_x") + + self.container_content = self.parent_container:add_container("panel_content") + self.container_content:add_container("anchor_ne") + self.container_content:add_container("anchor_nw") + self.container_content:add_container("anchor_se") + self.container_content:add_container("anchor_sw") + self.container_content:add_container("anchor_n") + self.container_content:add_container("anchor_s") + self.container_content:add_container("anchor_e") + self.container_content:add_container("anchor_w") + self.container_content:add_container("anchor_center") +end + + +return M diff --git a/example/examples/container/examples_list.lua b/example/examples/container/examples_list.lua new file mode 100644 index 0000000..3cfaa4c --- /dev/null +++ b/example/examples/container/examples_list.lua @@ -0,0 +1,25 @@ +local M = {} + +function M.get_examples() + ---@type druid.example.data[] + return { + { + name_id = "ui_example_container_anchors", + information_text_id = "ui_example_container_anchors_description", + template = "container_anchors", + root = "container_anchors/root", + code_url = "example/examples/container/container_anchors/container_anchors.lua", + widget_class = require("example.examples.container.container_anchors.container_anchors"), + }, + { + name_id = "ui_example_container_resize", + information_text_id = "ui_example_container_resize_description", + template = "container_resize", + root = "container_resize/root", + code_url = "example/examples/container/container_resize/container_resize.lua", + widget_class = require("example.examples.container.container_resize.container_resize"), + } + } +end + +return M diff --git a/example/examples/data_list/add_remove_clear/data_list_add_remove_clear.gui b/example/examples/data_list/add_remove_clear/data_list_add_remove_clear.gui index c45c867..3fad7ab 100644 --- a/example/examples/data_list/add_remove_clear/data_list_add_remove_clear.gui +++ b/example/examples/data_list/add_remove_clear/data_list_add_remove_clear.gui @@ -1,294 +1,81 @@ -script: "" fonts { name: "text_bold" font: "/example/assets/fonts/text_bold.font" } textures { - name: "druid" - texture: "/example/assets/druid.atlas" -} -background_color { - x: 0.0 - y: 0.0 - z: 0.0 - w: 0.0 + name: "druid_example" + texture: "/example/assets/druid_example.atlas" } nodes { - position { - x: 0.0 - y: 0.0 - z: 0.0 - w: 1.0 - } - rotation { - x: 0.0 - y: 0.0 - z: 0.0 - w: 1.0 - } - scale { - x: 1.0 - y: 1.0 - z: 1.0 - w: 1.0 - } - size { - x: 200.0 - y: 100.0 - z: 0.0 - w: 1.0 - } - color { - x: 1.0 - y: 1.0 - z: 1.0 - w: 1.0 - } type: TYPE_BOX - blend_mode: BLEND_MODE_ALPHA - texture: "druid/empty" + texture: "druid_example/empty" id: "root" - xanchor: XANCHOR_NONE - yanchor: YANCHOR_NONE - pivot: PIVOT_CENTER - adjust_mode: ADJUST_MODE_FIT - layer: "" inherit_alpha: true - slice9 { - x: 0.0 - y: 0.0 - z: 0.0 - w: 0.0 - } - clipping_mode: CLIPPING_MODE_NONE - clipping_visible: true - clipping_inverted: false - alpha: 1.0 - template_node_child: false size_mode: SIZE_MODE_AUTO - custom_type: 0 - enabled: true visible: false - material: "" } nodes { position { - x: 0.0 y: 350.0 - z: 0.0 - w: 1.0 - } - rotation { - x: 0.0 - y: 0.0 - z: 0.0 - w: 1.0 - } - scale { - x: 1.0 - y: 1.0 - z: 1.0 - w: 1.0 } size { x: 350.0 y: 700.0 - z: 0.0 - w: 1.0 } color { x: 0.173 y: 0.184 z: 0.204 - w: 1.0 } type: TYPE_BOX - blend_mode: BLEND_MODE_ALPHA - texture: "druid/pixel" + texture: "druid_example/pixel" id: "view" - xanchor: XANCHOR_NONE - yanchor: YANCHOR_NONE pivot: PIVOT_N - adjust_mode: ADJUST_MODE_FIT parent: "root" - layer: "" inherit_alpha: true - slice9 { - x: 0.0 - y: 0.0 - z: 0.0 - w: 0.0 - } clipping_mode: CLIPPING_MODE_STENCIL - clipping_visible: true - clipping_inverted: false - alpha: 1.0 - template_node_child: false - size_mode: SIZE_MODE_MANUAL - custom_type: 0 - enabled: true - visible: true - material: "" } nodes { - position { - x: 0.0 - y: 0.0 - z: 0.0 - w: 1.0 - } - rotation { - x: 0.0 - y: 0.0 - z: 0.0 - w: 1.0 - } - scale { - x: 1.0 - y: 1.0 - z: 1.0 - w: 1.0 - } size { x: 350.0 y: 700.0 - z: 0.0 - w: 1.0 - } - color { - x: 1.0 - y: 1.0 - z: 1.0 - w: 1.0 } type: TYPE_BOX - blend_mode: BLEND_MODE_ALPHA - texture: "druid/empty" + texture: "druid_example/empty" id: "content" - xanchor: XANCHOR_NONE - yanchor: YANCHOR_NONE pivot: PIVOT_N - adjust_mode: ADJUST_MODE_FIT parent: "view" - layer: "" inherit_alpha: true - slice9 { - x: 0.0 - y: 0.0 - z: 0.0 - w: 0.0 - } - clipping_mode: CLIPPING_MODE_NONE - clipping_visible: true - clipping_inverted: false - alpha: 1.0 - template_node_child: false - size_mode: SIZE_MODE_MANUAL - custom_type: 0 - enabled: true visible: false - material: "" } nodes { position { - x: 0.0 y: -400.0 - z: 0.0 - w: 1.0 - } - rotation { - x: 0.0 - y: 0.0 - z: 0.0 - w: 1.0 - } - scale { - x: 1.0 - y: 1.0 - z: 1.0 - w: 1.0 } size { x: 300.0 y: 100.0 - z: 0.0 - w: 1.0 - } - color { - x: 1.0 - y: 1.0 - z: 1.0 - w: 1.0 } type: TYPE_BOX - blend_mode: BLEND_MODE_ALPHA - texture: "" id: "prefab" - xanchor: XANCHOR_NONE - yanchor: YANCHOR_NONE - pivot: PIVOT_CENTER - adjust_mode: ADJUST_MODE_FIT parent: "content" - layer: "" inherit_alpha: true - slice9 { - x: 0.0 - y: 0.0 - z: 0.0 - w: 0.0 - } - clipping_mode: CLIPPING_MODE_NONE - clipping_visible: true - clipping_inverted: false - alpha: 1.0 - template_node_child: false - size_mode: SIZE_MODE_MANUAL - custom_type: 0 - enabled: true visible: false - material: "" } nodes { - position { - x: 0.0 - y: 0.0 - z: 0.0 - w: 1.0 - } - rotation { - x: 0.0 - y: 0.0 - z: 0.0 - w: 1.0 - } - scale { - x: 1.0 - y: 1.0 - z: 1.0 - w: 1.0 - } size { x: 300.0 y: 90.0 - z: 0.0 - w: 1.0 } color { x: 0.631 y: 0.843 z: 0.961 - w: 1.0 } type: TYPE_BOX - blend_mode: BLEND_MODE_ALPHA - texture: "druid/ui_circle_32" + texture: "druid_example/ui_circle_32" id: "panel" - xanchor: XANCHOR_NONE - yanchor: YANCHOR_NONE - pivot: PIVOT_CENTER - adjust_mode: ADJUST_MODE_FIT parent: "prefab" - layer: "" inherit_alpha: true slice9 { x: 16.0 @@ -296,84 +83,35 @@ nodes { z: 16.0 w: 16.0 } - clipping_mode: CLIPPING_MODE_NONE - clipping_visible: true - clipping_inverted: false - alpha: 1.0 - template_node_child: false - size_mode: SIZE_MODE_MANUAL - custom_type: 0 - enabled: true - visible: true - material: "" } nodes { - position { - x: 0.0 - y: 0.0 - z: 0.0 - w: 1.0 - } - rotation { - x: 0.0 - y: 0.0 - z: 0.0 - w: 1.0 - } - scale { - x: 1.0 - y: 1.0 - z: 1.0 - w: 1.0 - } size { x: 250.0 y: 50.0 - z: 0.0 - w: 1.0 } color { x: 0.31 y: 0.318 z: 0.322 - w: 1.0 } type: TYPE_TEXT - blend_mode: BLEND_MODE_ALPHA text: "Data Item 1" font: "text_bold" id: "text" - xanchor: XANCHOR_NONE - yanchor: YANCHOR_NONE - pivot: PIVOT_CENTER outline { x: 1.0 y: 1.0 z: 1.0 - w: 1.0 } shadow { x: 1.0 y: 1.0 z: 1.0 - w: 1.0 } - adjust_mode: ADJUST_MODE_FIT - line_break: false parent: "prefab" - layer: "" inherit_alpha: true - alpha: 1.0 outline_alpha: 0.0 shadow_alpha: 0.0 - template_node_child: false - text_leading: 1.0 - text_tracking: 0.0 - custom_type: 0 - enabled: true - visible: true - material: "" } material: "/builtins/materials/gui.material" adjust_reference: ADJUST_REFERENCE_PARENT -max_nodes: 512 diff --git a/example/examples/data_list/add_remove_clear/data_list_add_remove_clear.lua b/example/examples/data_list/add_remove_clear/data_list_add_remove_clear.lua index bdc6eca..423884e 100644 --- a/example/examples/data_list/add_remove_clear/data_list_add_remove_clear.lua +++ b/example/examples/data_list/add_remove_clear/data_list_add_remove_clear.lua @@ -1,24 +1,21 @@ -local event = require("druid.event") -local component = require("druid.component") -local data_list = require("druid.extended.data_list") +local event = require("event.event") ----@class data_list_add_remove_clear: druid.base_component ----@field druid druid_instance +---@class examples.data_list_add_remove_clear: druid.widget +---@field prefab node +---@field scroll druid.scroll +---@field grid druid.grid ---@field data_list druid.data_list -local M = component.create("data_list_add_remove_clear") +---@field on_item_click event +local M = {} ----@param template string ----@param nodes table -function M:init(template, nodes) - self.druid = self:get_druid(template, nodes) - +function M:init() self.prefab = self:get_node("prefab") gui.set_enabled(self.prefab, false) self.scroll = self.druid:new_scroll("view", "content") - self.grid = self.druid:new_static_grid("content", self.prefab, 1) - self.data_list = self.druid:new(data_list, self.scroll, self.grid, self.create_item_callback) --[[@as druid.data_list]] + self.grid = self.druid:new_grid("content", self.prefab, 1) + self.data_list = self.druid:new_data_list(self.scroll, self.grid, self.create_item_callback) --[[@as druid.data_list]] local data = {} for index = 1, 20 do @@ -26,13 +23,13 @@ function M:init(template, nodes) end self.data_list:set_data(data) - self.on_item_click = event() + self.on_item_click = event.create() end ---@param item_data table ---@param index number ----@return node, druid.base_component +---@return node, druid.component function M:create_item_callback(item_data, index) local nodes = gui.clone_tree(self.prefab) @@ -67,4 +64,61 @@ function M:clear() end +---@param output_list output_list +function M:on_example_created(output_list) + self.on_item_click:subscribe(function(index) + self:remove_item(index) + output_list:add_log_text("Item removed: " .. index) + end) +end + + +---@param properties_panel properties_panel +function M:properties_control(properties_panel) + local view_node = self.scroll.view_node + local is_stencil = gui.get_clipping_mode(view_node) == gui.CLIPPING_MODE_STENCIL + + properties_panel:add_checkbox("ui_clipping", is_stencil, function(value) + gui.set_clipping_mode(view_node, value and gui.CLIPPING_MODE_STENCIL or gui.CLIPPING_MODE_NONE) + end) + + properties_panel:add_slider("ui_scroll", 0, function(value) + self.scroll:scroll_to_percent(vmath.vector3(0, 1 - value, 0), true) + end) + + properties_panel:add_button("ui_add_element", function() + self:add_item() + end) + + properties_panel:add_button("ui_remove_element", function() + self:remove_item() + end) + + properties_panel:add_button("ui_clear_elements", function() + self.data_list:clear() + end) +end + + +---@return string +function M:get_debug_info() + local data_list = self.data_list + + local data = data_list:get_data() + local info = "" + info = info .. "Data length: " .. #data .. "\n" + info = info .. "First Visual Index: " .. data_list.top_index .. "\n" + info = info .. "Last Visual Index: " .. data_list.last_index .. "\n" + + local s = self.scroll + info = info .. "\n" + info = info .. "View Size X: " .. gui.get(s.view_node, "size.x") .. "\n" + info = info .. "Content Size X: " .. gui.get(s.content_node, "size.x") .. "\n" + info = info .. "Content position X: " .. math.ceil(s.position.x) .. "\n" + info = info .. "Content Range X: " .. s.available_pos.x .. " - " .. s.available_pos.z .. "\n" + + return info +end + + return M diff --git a/example/examples/data_list/basic/data_list_basic.gui b/example/examples/data_list/basic/data_list_basic.gui index c45c867..3fad7ab 100644 --- a/example/examples/data_list/basic/data_list_basic.gui +++ b/example/examples/data_list/basic/data_list_basic.gui @@ -1,294 +1,81 @@ -script: "" fonts { name: "text_bold" font: "/example/assets/fonts/text_bold.font" } textures { - name: "druid" - texture: "/example/assets/druid.atlas" -} -background_color { - x: 0.0 - y: 0.0 - z: 0.0 - w: 0.0 + name: "druid_example" + texture: "/example/assets/druid_example.atlas" } nodes { - position { - x: 0.0 - y: 0.0 - z: 0.0 - w: 1.0 - } - rotation { - x: 0.0 - y: 0.0 - z: 0.0 - w: 1.0 - } - scale { - x: 1.0 - y: 1.0 - z: 1.0 - w: 1.0 - } - size { - x: 200.0 - y: 100.0 - z: 0.0 - w: 1.0 - } - color { - x: 1.0 - y: 1.0 - z: 1.0 - w: 1.0 - } type: TYPE_BOX - blend_mode: BLEND_MODE_ALPHA - texture: "druid/empty" + texture: "druid_example/empty" id: "root" - xanchor: XANCHOR_NONE - yanchor: YANCHOR_NONE - pivot: PIVOT_CENTER - adjust_mode: ADJUST_MODE_FIT - layer: "" inherit_alpha: true - slice9 { - x: 0.0 - y: 0.0 - z: 0.0 - w: 0.0 - } - clipping_mode: CLIPPING_MODE_NONE - clipping_visible: true - clipping_inverted: false - alpha: 1.0 - template_node_child: false size_mode: SIZE_MODE_AUTO - custom_type: 0 - enabled: true visible: false - material: "" } nodes { position { - x: 0.0 y: 350.0 - z: 0.0 - w: 1.0 - } - rotation { - x: 0.0 - y: 0.0 - z: 0.0 - w: 1.0 - } - scale { - x: 1.0 - y: 1.0 - z: 1.0 - w: 1.0 } size { x: 350.0 y: 700.0 - z: 0.0 - w: 1.0 } color { x: 0.173 y: 0.184 z: 0.204 - w: 1.0 } type: TYPE_BOX - blend_mode: BLEND_MODE_ALPHA - texture: "druid/pixel" + texture: "druid_example/pixel" id: "view" - xanchor: XANCHOR_NONE - yanchor: YANCHOR_NONE pivot: PIVOT_N - adjust_mode: ADJUST_MODE_FIT parent: "root" - layer: "" inherit_alpha: true - slice9 { - x: 0.0 - y: 0.0 - z: 0.0 - w: 0.0 - } clipping_mode: CLIPPING_MODE_STENCIL - clipping_visible: true - clipping_inverted: false - alpha: 1.0 - template_node_child: false - size_mode: SIZE_MODE_MANUAL - custom_type: 0 - enabled: true - visible: true - material: "" } nodes { - position { - x: 0.0 - y: 0.0 - z: 0.0 - w: 1.0 - } - rotation { - x: 0.0 - y: 0.0 - z: 0.0 - w: 1.0 - } - scale { - x: 1.0 - y: 1.0 - z: 1.0 - w: 1.0 - } size { x: 350.0 y: 700.0 - z: 0.0 - w: 1.0 - } - color { - x: 1.0 - y: 1.0 - z: 1.0 - w: 1.0 } type: TYPE_BOX - blend_mode: BLEND_MODE_ALPHA - texture: "druid/empty" + texture: "druid_example/empty" id: "content" - xanchor: XANCHOR_NONE - yanchor: YANCHOR_NONE pivot: PIVOT_N - adjust_mode: ADJUST_MODE_FIT parent: "view" - layer: "" inherit_alpha: true - slice9 { - x: 0.0 - y: 0.0 - z: 0.0 - w: 0.0 - } - clipping_mode: CLIPPING_MODE_NONE - clipping_visible: true - clipping_inverted: false - alpha: 1.0 - template_node_child: false - size_mode: SIZE_MODE_MANUAL - custom_type: 0 - enabled: true visible: false - material: "" } nodes { position { - x: 0.0 y: -400.0 - z: 0.0 - w: 1.0 - } - rotation { - x: 0.0 - y: 0.0 - z: 0.0 - w: 1.0 - } - scale { - x: 1.0 - y: 1.0 - z: 1.0 - w: 1.0 } size { x: 300.0 y: 100.0 - z: 0.0 - w: 1.0 - } - color { - x: 1.0 - y: 1.0 - z: 1.0 - w: 1.0 } type: TYPE_BOX - blend_mode: BLEND_MODE_ALPHA - texture: "" id: "prefab" - xanchor: XANCHOR_NONE - yanchor: YANCHOR_NONE - pivot: PIVOT_CENTER - adjust_mode: ADJUST_MODE_FIT parent: "content" - layer: "" inherit_alpha: true - slice9 { - x: 0.0 - y: 0.0 - z: 0.0 - w: 0.0 - } - clipping_mode: CLIPPING_MODE_NONE - clipping_visible: true - clipping_inverted: false - alpha: 1.0 - template_node_child: false - size_mode: SIZE_MODE_MANUAL - custom_type: 0 - enabled: true visible: false - material: "" } nodes { - position { - x: 0.0 - y: 0.0 - z: 0.0 - w: 1.0 - } - rotation { - x: 0.0 - y: 0.0 - z: 0.0 - w: 1.0 - } - scale { - x: 1.0 - y: 1.0 - z: 1.0 - w: 1.0 - } size { x: 300.0 y: 90.0 - z: 0.0 - w: 1.0 } color { x: 0.631 y: 0.843 z: 0.961 - w: 1.0 } type: TYPE_BOX - blend_mode: BLEND_MODE_ALPHA - texture: "druid/ui_circle_32" + texture: "druid_example/ui_circle_32" id: "panel" - xanchor: XANCHOR_NONE - yanchor: YANCHOR_NONE - pivot: PIVOT_CENTER - adjust_mode: ADJUST_MODE_FIT parent: "prefab" - layer: "" inherit_alpha: true slice9 { x: 16.0 @@ -296,84 +83,35 @@ nodes { z: 16.0 w: 16.0 } - clipping_mode: CLIPPING_MODE_NONE - clipping_visible: true - clipping_inverted: false - alpha: 1.0 - template_node_child: false - size_mode: SIZE_MODE_MANUAL - custom_type: 0 - enabled: true - visible: true - material: "" } nodes { - position { - x: 0.0 - y: 0.0 - z: 0.0 - w: 1.0 - } - rotation { - x: 0.0 - y: 0.0 - z: 0.0 - w: 1.0 - } - scale { - x: 1.0 - y: 1.0 - z: 1.0 - w: 1.0 - } size { x: 250.0 y: 50.0 - z: 0.0 - w: 1.0 } color { x: 0.31 y: 0.318 z: 0.322 - w: 1.0 } type: TYPE_TEXT - blend_mode: BLEND_MODE_ALPHA text: "Data Item 1" font: "text_bold" id: "text" - xanchor: XANCHOR_NONE - yanchor: YANCHOR_NONE - pivot: PIVOT_CENTER outline { x: 1.0 y: 1.0 z: 1.0 - w: 1.0 } shadow { x: 1.0 y: 1.0 z: 1.0 - w: 1.0 } - adjust_mode: ADJUST_MODE_FIT - line_break: false parent: "prefab" - layer: "" inherit_alpha: true - alpha: 1.0 outline_alpha: 0.0 shadow_alpha: 0.0 - template_node_child: false - text_leading: 1.0 - text_tracking: 0.0 - custom_type: 0 - enabled: true - visible: true - material: "" } material: "/builtins/materials/gui.material" adjust_reference: ADJUST_REFERENCE_PARENT -max_nodes: 512 diff --git a/example/examples/data_list/basic/data_list_basic.lua b/example/examples/data_list/basic/data_list_basic.lua index b3a3d81..c2adaa2 100644 --- a/example/examples/data_list/basic/data_list_basic.lua +++ b/example/examples/data_list/basic/data_list_basic.lua @@ -1,23 +1,21 @@ -local event = require("druid.event") -local component = require("druid.component") -local data_list = require("druid.extended.data_list") +local event = require("event.event") ----@class data_list_basic: druid.base_component ----@field druid druid_instance -local M = component.create("data_list_basic") +---@class examples.data_list_basic: druid.widget +---@field prefab node +---@field scroll druid.scroll +---@field grid druid.grid +---@field data_list druid.data_list +---@field on_item_click event +local M = {} ----@param template string ----@param nodes table -function M:init(template, nodes) - self.druid = self:get_druid(template, nodes) - +function M:init() self.prefab = self:get_node("prefab") gui.set_enabled(self.prefab, false) self.scroll = self.druid:new_scroll("view", "content") - self.grid = self.druid:new_static_grid("content", self.prefab, 1) - self.data_list = self.druid:new(data_list, self.scroll, self.grid, self.create_item_callback) --[[@as druid.data_list]] + self.grid = self.druid:new_grid("content", self.prefab, 1) + self.data_list = self.druid:new_data_list(self.scroll, self.grid, self.create_item_callback) --[[@as druid.data_list]] local data = {} for index = 1, 1000 do @@ -25,13 +23,13 @@ function M:init(template, nodes) end self.data_list:set_data(data) - self.on_item_click = event() + self.on_item_click = event.create() end ---@param item_data table ---@param index number ----@return node, druid.base_component +---@return node, druid.component function M:create_item_callback(item_data, index) local nodes = gui.clone_tree(self.prefab) @@ -50,4 +48,48 @@ function M:on_button_click(index) end +---@param output_list output_list +function M:on_example_created(output_list) + self.on_item_click:subscribe(function(index) + output_list:add_log_text("Item clicked: " .. index) + end) +end + + +---@param properties_panel properties_panel +function M:properties_control(properties_panel) + local view_node = self.scroll.view_node + local is_stencil = gui.get_clipping_mode(view_node) == gui.CLIPPING_MODE_STENCIL + + properties_panel:add_checkbox("ui_clipping", is_stencil, function(value) + gui.set_clipping_mode(view_node, value and gui.CLIPPING_MODE_STENCIL or gui.CLIPPING_MODE_NONE) + end) + + properties_panel:add_slider("ui_scroll", 0, function(value) + self.scroll:scroll_to_percent(vmath.vector3(0, 1 - value, 0), true) + end) +end + + +---@return string +function M:get_debug_info() + local data_list = self.data_list + + local data = data_list:get_data() + local info = "" + info = info .. "Data length: " .. #data .. "\n" + info = info .. "First Visual Index: " .. data_list.top_index .. "\n" + info = info .. "Last Visual Index: " .. data_list.last_index .. "\n" + + local s = self.scroll + info = info .. "\n" + info = info .. "View Size Y: " .. gui.get(s.view_node, "size.y") .. "\n" + info = info .. "Content Size Y: " .. gui.get(s.content_node, "size.y") .. "\n" + info = info .. "Content position Y: " .. math.ceil(s.position.y) .. "\n" + info = info .. "Content Range Y: " .. s.available_pos.y .. " - " .. s.available_pos.w .. "\n" + + return info +end + + return M diff --git a/example/examples/data_list/basic/data_list_horizontal_basic.gui b/example/examples/data_list/basic/data_list_horizontal_basic.gui index 31f4823..e6e975b 100644 --- a/example/examples/data_list/basic/data_list_horizontal_basic.gui +++ b/example/examples/data_list/basic/data_list_horizontal_basic.gui @@ -1,294 +1,81 @@ -script: "" fonts { name: "text_bold" font: "/example/assets/fonts/text_bold.font" } textures { - name: "druid" - texture: "/example/assets/druid.atlas" -} -background_color { - x: 0.0 - y: 0.0 - z: 0.0 - w: 0.0 + name: "druid_example" + texture: "/example/assets/druid_example.atlas" } nodes { - position { - x: 0.0 - y: 0.0 - z: 0.0 - w: 1.0 - } - rotation { - x: 0.0 - y: 0.0 - z: 0.0 - w: 1.0 - } - scale { - x: 1.0 - y: 1.0 - z: 1.0 - w: 1.0 - } - size { - x: 200.0 - y: 100.0 - z: 0.0 - w: 1.0 - } - color { - x: 1.0 - y: 1.0 - z: 1.0 - w: 1.0 - } type: TYPE_BOX - blend_mode: BLEND_MODE_ALPHA - texture: "druid/empty" + texture: "druid_example/empty" id: "root" - xanchor: XANCHOR_NONE - yanchor: YANCHOR_NONE - pivot: PIVOT_CENTER - adjust_mode: ADJUST_MODE_FIT - layer: "" inherit_alpha: true - slice9 { - x: 0.0 - y: 0.0 - z: 0.0 - w: 0.0 - } - clipping_mode: CLIPPING_MODE_NONE - clipping_visible: true - clipping_inverted: false - alpha: 1.0 - template_node_child: false size_mode: SIZE_MODE_AUTO - custom_type: 0 - enabled: true visible: false - material: "" } nodes { position { x: -450.0 - y: 0.0 - z: 0.0 - w: 1.0 - } - rotation { - x: 0.0 - y: 0.0 - z: 0.0 - w: 1.0 - } - scale { - x: 1.0 - y: 1.0 - z: 1.0 - w: 1.0 } size { x: 900.0 y: 350.0 - z: 0.0 - w: 1.0 } color { x: 0.173 y: 0.184 z: 0.204 - w: 1.0 } type: TYPE_BOX - blend_mode: BLEND_MODE_ALPHA - texture: "druid/pixel" + texture: "druid_example/pixel" id: "view" - xanchor: XANCHOR_NONE - yanchor: YANCHOR_NONE pivot: PIVOT_W - adjust_mode: ADJUST_MODE_FIT parent: "root" - layer: "" inherit_alpha: true - slice9 { - x: 0.0 - y: 0.0 - z: 0.0 - w: 0.0 - } clipping_mode: CLIPPING_MODE_STENCIL - clipping_visible: true - clipping_inverted: false - alpha: 1.0 - template_node_child: false - size_mode: SIZE_MODE_MANUAL - custom_type: 0 - enabled: true - visible: true - material: "" } nodes { - position { - x: 0.0 - y: 0.0 - z: 0.0 - w: 1.0 - } - rotation { - x: 0.0 - y: 0.0 - z: 0.0 - w: 1.0 - } - scale { - x: 1.0 - y: 1.0 - z: 1.0 - w: 1.0 - } size { x: 900.0 y: 350.0 - z: 0.0 - w: 1.0 - } - color { - x: 1.0 - y: 1.0 - z: 1.0 - w: 1.0 } type: TYPE_BOX - blend_mode: BLEND_MODE_ALPHA - texture: "druid/empty" + texture: "druid_example/empty" id: "content" - xanchor: XANCHOR_NONE - yanchor: YANCHOR_NONE pivot: PIVOT_W - adjust_mode: ADJUST_MODE_FIT parent: "view" - layer: "" inherit_alpha: true - slice9 { - x: 0.0 - y: 0.0 - z: 0.0 - w: 0.0 - } - clipping_mode: CLIPPING_MODE_NONE - clipping_visible: true - clipping_inverted: false - alpha: 1.0 - template_node_child: false - size_mode: SIZE_MODE_MANUAL - custom_type: 0 - enabled: true visible: false - material: "" } nodes { position { x: 450.0 - y: 0.0 - z: 0.0 - w: 1.0 - } - rotation { - x: 0.0 - y: 0.0 - z: 0.0 - w: 1.0 - } - scale { - x: 1.0 - y: 1.0 - z: 1.0 - w: 1.0 } size { x: 200.0 y: 270.0 - z: 0.0 - w: 1.0 - } - color { - x: 1.0 - y: 1.0 - z: 1.0 - w: 1.0 } type: TYPE_BOX - blend_mode: BLEND_MODE_ALPHA - texture: "" id: "prefab" - xanchor: XANCHOR_NONE - yanchor: YANCHOR_NONE - pivot: PIVOT_CENTER - adjust_mode: ADJUST_MODE_FIT parent: "content" - layer: "" inherit_alpha: true - slice9 { - x: 0.0 - y: 0.0 - z: 0.0 - w: 0.0 - } - clipping_mode: CLIPPING_MODE_NONE - clipping_visible: true - clipping_inverted: false - alpha: 1.0 - template_node_child: false - size_mode: SIZE_MODE_MANUAL - custom_type: 0 - enabled: true visible: false - material: "" } nodes { - position { - x: 0.0 - y: 0.0 - z: 0.0 - w: 1.0 - } - rotation { - x: 0.0 - y: 0.0 - z: 0.0 - w: 1.0 - } - scale { - x: 1.0 - y: 1.0 - z: 1.0 - w: 1.0 - } size { x: 190.0 y: 250.0 - z: 0.0 - w: 1.0 } color { x: 0.631 y: 0.843 z: 0.961 - w: 1.0 } type: TYPE_BOX - blend_mode: BLEND_MODE_ALPHA - texture: "druid/ui_circle_32" + texture: "druid_example/ui_circle_32" id: "panel" - xanchor: XANCHOR_NONE - yanchor: YANCHOR_NONE - pivot: PIVOT_CENTER - adjust_mode: ADJUST_MODE_FIT parent: "prefab" - layer: "" inherit_alpha: true slice9 { x: 16.0 @@ -296,84 +83,36 @@ nodes { z: 16.0 w: 16.0 } - clipping_mode: CLIPPING_MODE_NONE - clipping_visible: true - clipping_inverted: false - alpha: 1.0 - template_node_child: false - size_mode: SIZE_MODE_MANUAL - custom_type: 0 - enabled: true - visible: true - material: "" } nodes { - position { - x: 0.0 - y: 0.0 - z: 0.0 - w: 1.0 - } - rotation { - x: 0.0 - y: 0.0 - z: 0.0 - w: 1.0 - } - scale { - x: 1.0 - y: 1.0 - z: 1.0 - w: 1.0 - } size { x: 150.0 y: 200.0 - z: 0.0 - w: 1.0 } color { x: 0.31 y: 0.318 z: 0.322 - w: 1.0 } type: TYPE_TEXT - blend_mode: BLEND_MODE_ALPHA text: "Data Item 1" font: "text_bold" id: "text" - xanchor: XANCHOR_NONE - yanchor: YANCHOR_NONE - pivot: PIVOT_CENTER outline { x: 1.0 y: 1.0 z: 1.0 - w: 1.0 } shadow { x: 1.0 y: 1.0 z: 1.0 - w: 1.0 } - adjust_mode: ADJUST_MODE_FIT line_break: true parent: "prefab" - layer: "" inherit_alpha: true - alpha: 1.0 outline_alpha: 0.0 shadow_alpha: 0.0 - template_node_child: false - text_leading: 1.0 - text_tracking: 0.0 - custom_type: 0 - enabled: true - visible: true - material: "" } material: "/builtins/materials/gui.material" adjust_reference: ADJUST_REFERENCE_PARENT -max_nodes: 512 diff --git a/example/examples/data_list/basic/data_list_horizontal_basic.lua b/example/examples/data_list/basic/data_list_horizontal_basic.lua index 0f21fc7..2614bc2 100644 --- a/example/examples/data_list/basic/data_list_horizontal_basic.lua +++ b/example/examples/data_list/basic/data_list_horizontal_basic.lua @@ -1,22 +1,18 @@ -local component = require("druid.component") -local data_list = require("druid.extended.data_list") - ----@class data_list_horizontal_basic: druid.base_component ----@field druid druid_instance -local M = component.create("data_list_horizontal_basic") +---@class examples.data_list_horizontal_basic: druid.widget +---@field prefab node +---@field scroll druid.scroll +---@field grid druid.grid +---@field data_list druid.data_list +local M = {} ----@param template string ----@param nodes table -function M:init(template, nodes) - self.druid = self:get_druid(template, nodes) - +function M:init() self.prefab = self:get_node("prefab") gui.set_enabled(self.prefab, false) self.scroll = self.druid:new_scroll("view", "content") - self.grid = self.druid:new_static_grid("content", self.prefab, 1000) - self.data_list = self.druid:new(data_list, self.scroll, self.grid, self.create_item_callback) --[[@as druid.data_list]] + self.grid = self.druid:new_grid("content", self.prefab, 1000) + self.data_list = self.druid:new_data_list(self.scroll, self.grid, self.create_item_callback) --[[@as druid.data_list]] local data = {} for index = 1, 100 do @@ -43,4 +39,36 @@ function M:on_button_click(index) end +---@param properties_panel properties_panel +function M:properties_control(properties_panel) + local view_node = self.scroll.view_node + local is_stencil = gui.get_clipping_mode(view_node) == gui.CLIPPING_MODE_STENCIL + + properties_panel:add_checkbox("ui_clipping", is_stencil, function(value) + gui.set_clipping_mode(view_node, value and gui.CLIPPING_MODE_STENCIL or gui.CLIPPING_MODE_NONE) + end) +end + + +---@return string +function M:get_debug_info() + local data_list = self.data_list + + local data = data_list:get_data() + local info = "" + info = info .. "Data length: " .. #data .. "\n" + info = info .. "First Visual Index: " .. data_list.top_index .. "\n" + info = info .. "Last Visual Index: " .. data_list.last_index .. "\n" + + local s = self.scroll + info = info .. "\n" + info = info .. "View Size X: " .. gui.get(s.view_node, "size.x") .. "\n" + info = info .. "Content Size X: " .. gui.get(s.content_node, "size.x") .. "\n" + info = info .. "Content position X: " .. math.ceil(s.position.x) .. "\n" + info = info .. "Content Range X: " .. s.available_pos.x .. " - " .. s.available_pos.z .. "\n" + + return info +end + + return M diff --git a/example/examples/data_list/cache_with_component/button_component.gui b/example/examples/data_list/cache_with_component/button_component.gui index f3c8623..42d14cc 100644 --- a/example/examples/data_list/cache_with_component/button_component.gui +++ b/example/examples/data_list/cache_with_component/button_component.gui @@ -1,117 +1,35 @@ -script: "" fonts { name: "text_bold" font: "/example/assets/fonts/text_bold.font" } textures { - name: "druid" - texture: "/example/assets/druid.atlas" -} -background_color { - x: 0.0 - y: 0.0 - z: 0.0 - w: 0.0 + name: "druid_example" + texture: "/example/assets/druid_example.atlas" } nodes { - position { - x: 0.0 - y: 0.0 - z: 0.0 - w: 1.0 - } - rotation { - x: 0.0 - y: 0.0 - z: 0.0 - w: 1.0 - } - scale { - x: 1.0 - y: 1.0 - z: 1.0 - w: 1.0 - } size { x: 300.0 y: 100.0 - z: 0.0 - w: 1.0 - } - color { - x: 1.0 - y: 1.0 - z: 1.0 - w: 1.0 } type: TYPE_BOX - blend_mode: BLEND_MODE_ALPHA - texture: "" id: "root" - xanchor: XANCHOR_NONE - yanchor: YANCHOR_NONE - pivot: PIVOT_CENTER - adjust_mode: ADJUST_MODE_FIT - layer: "" inherit_alpha: true - slice9 { - x: 0.0 - y: 0.0 - z: 0.0 - w: 0.0 - } - clipping_mode: CLIPPING_MODE_NONE - clipping_visible: true - clipping_inverted: false - alpha: 1.0 - template_node_child: false - size_mode: SIZE_MODE_MANUAL - custom_type: 0 - enabled: true visible: false - material: "" } nodes { - position { - x: 0.0 - y: 0.0 - z: 0.0 - w: 1.0 - } - rotation { - x: 0.0 - y: 0.0 - z: 0.0 - w: 1.0 - } - scale { - x: 1.0 - y: 1.0 - z: 1.0 - w: 1.0 - } size { x: 300.0 y: 90.0 - z: 0.0 - w: 1.0 } color { x: 0.631 y: 0.843 z: 0.961 - w: 1.0 } type: TYPE_BOX - blend_mode: BLEND_MODE_ALPHA - texture: "druid/ui_circle_32" + texture: "druid_example/ui_circle_32" id: "panel" - xanchor: XANCHOR_NONE - yanchor: YANCHOR_NONE - pivot: PIVOT_CENTER - adjust_mode: ADJUST_MODE_FIT parent: "root" - layer: "" inherit_alpha: true slice9 { x: 16.0 @@ -119,84 +37,35 @@ nodes { z: 16.0 w: 16.0 } - clipping_mode: CLIPPING_MODE_NONE - clipping_visible: true - clipping_inverted: false - alpha: 1.0 - template_node_child: false - size_mode: SIZE_MODE_MANUAL - custom_type: 0 - enabled: true - visible: true - material: "" } nodes { - position { - x: 0.0 - y: 0.0 - z: 0.0 - w: 1.0 - } - rotation { - x: 0.0 - y: 0.0 - z: 0.0 - w: 1.0 - } - scale { - x: 1.0 - y: 1.0 - z: 1.0 - w: 1.0 - } size { x: 250.0 y: 50.0 - z: 0.0 - w: 1.0 } color { x: 0.31 y: 0.318 z: 0.322 - w: 1.0 } type: TYPE_TEXT - blend_mode: BLEND_MODE_ALPHA text: "Data Item 1" font: "text_bold" id: "text" - xanchor: XANCHOR_NONE - yanchor: YANCHOR_NONE - pivot: PIVOT_CENTER outline { x: 1.0 y: 1.0 z: 1.0 - w: 1.0 } shadow { x: 1.0 y: 1.0 z: 1.0 - w: 1.0 } - adjust_mode: ADJUST_MODE_FIT - line_break: false parent: "root" - layer: "" inherit_alpha: true - alpha: 1.0 outline_alpha: 0.0 shadow_alpha: 0.0 - template_node_child: false - text_leading: 1.0 - text_tracking: 0.0 - custom_type: 0 - enabled: true - visible: true - material: "" } material: "/builtins/materials/gui.material" adjust_reference: ADJUST_REFERENCE_PARENT -max_nodes: 512 diff --git a/example/examples/data_list/cache_with_component/button_component.lua b/example/examples/data_list/cache_with_component/button_component.lua index 4719caf..042f7a1 100644 --- a/example/examples/data_list/cache_with_component/button_component.lua +++ b/example/examples/data_list/cache_with_component/button_component.lua @@ -1,17 +1,12 @@ -local component = require("druid.component") - ----@class button_component: druid.base_component +---@class examples.button_component: druid.widget ---@field root node ----@field druid druid_instance ---@field text druid.text +---@field button druid.button ---@field data any -local M = component.create("button_component") +local M = {} ----@param template string ----@param nodes table -function M:init(template, nodes) - self.druid = self:get_druid(template, nodes) +function M:init() self.root = self:get_node("root") self.button = self.druid:new_button(self.root) diff --git a/example/examples/data_list/cache_with_component/cache_with_component.gui b/example/examples/data_list/cache_with_component/cache_with_component.gui index f39b933..a6051e0 100644 --- a/example/examples/data_list/cache_with_component/cache_with_component.gui +++ b/example/examples/data_list/cache_with_component/cache_with_component.gui @@ -1,421 +1,80 @@ -script: "" fonts { name: "text_bold" font: "/example/assets/fonts/text_bold.font" } textures { - name: "druid" - texture: "/example/assets/druid.atlas" -} -background_color { - x: 0.0 - y: 0.0 - z: 0.0 - w: 0.0 + name: "druid_example" + texture: "/example/assets/druid_example.atlas" } nodes { - position { - x: 0.0 - y: 0.0 - z: 0.0 - w: 1.0 - } - rotation { - x: 0.0 - y: 0.0 - z: 0.0 - w: 1.0 - } - scale { - x: 1.0 - y: 1.0 - z: 1.0 - w: 1.0 - } - size { - x: 200.0 - y: 100.0 - z: 0.0 - w: 1.0 - } - color { - x: 1.0 - y: 1.0 - z: 1.0 - w: 1.0 - } type: TYPE_BOX - blend_mode: BLEND_MODE_ALPHA - texture: "druid/empty" + texture: "druid_example/empty" id: "root" - xanchor: XANCHOR_NONE - yanchor: YANCHOR_NONE - pivot: PIVOT_CENTER - adjust_mode: ADJUST_MODE_FIT - layer: "" inherit_alpha: true - slice9 { - x: 0.0 - y: 0.0 - z: 0.0 - w: 0.0 - } - clipping_mode: CLIPPING_MODE_NONE - clipping_visible: true - clipping_inverted: false - alpha: 1.0 - template_node_child: false size_mode: SIZE_MODE_AUTO - custom_type: 0 - enabled: true visible: false - material: "" } nodes { position { - x: 0.0 y: 350.0 - z: 0.0 - w: 1.0 - } - rotation { - x: 0.0 - y: 0.0 - z: 0.0 - w: 1.0 - } - scale { - x: 1.0 - y: 1.0 - z: 1.0 - w: 1.0 } size { x: 350.0 y: 700.0 - z: 0.0 - w: 1.0 } color { x: 0.173 y: 0.184 z: 0.204 - w: 1.0 } type: TYPE_BOX - blend_mode: BLEND_MODE_ALPHA - texture: "druid/pixel" + texture: "druid_example/pixel" id: "view" - xanchor: XANCHOR_NONE - yanchor: YANCHOR_NONE pivot: PIVOT_N - adjust_mode: ADJUST_MODE_FIT parent: "root" - layer: "" inherit_alpha: true - slice9 { - x: 0.0 - y: 0.0 - z: 0.0 - w: 0.0 - } clipping_mode: CLIPPING_MODE_STENCIL - clipping_visible: true - clipping_inverted: false - alpha: 1.0 - template_node_child: false - size_mode: SIZE_MODE_MANUAL - custom_type: 0 - enabled: true - visible: true - material: "" } nodes { - position { - x: 0.0 - y: 0.0 - z: 0.0 - w: 1.0 - } - rotation { - x: 0.0 - y: 0.0 - z: 0.0 - w: 1.0 - } - scale { - x: 1.0 - y: 1.0 - z: 1.0 - w: 1.0 - } size { x: 350.0 y: 700.0 - z: 0.0 - w: 1.0 - } - color { - x: 1.0 - y: 1.0 - z: 1.0 - w: 1.0 } type: TYPE_BOX - blend_mode: BLEND_MODE_ALPHA - texture: "druid/empty" + texture: "druid_example/empty" id: "content" - xanchor: XANCHOR_NONE - yanchor: YANCHOR_NONE pivot: PIVOT_N - adjust_mode: ADJUST_MODE_FIT parent: "view" - layer: "" inherit_alpha: true - slice9 { - x: 0.0 - y: 0.0 - z: 0.0 - w: 0.0 - } - clipping_mode: CLIPPING_MODE_NONE - clipping_visible: true - clipping_inverted: false - alpha: 1.0 - template_node_child: false - size_mode: SIZE_MODE_MANUAL - custom_type: 0 - enabled: true visible: false - material: "" } nodes { position { - x: 0.0 y: -300.0 - z: 0.0 - w: 1.0 - } - rotation { - x: 0.0 - y: 0.0 - z: 0.0 - w: 1.0 - } - scale { - x: 1.0 - y: 1.0 - z: 1.0 - w: 1.0 - } - size { - x: 200.0 - y: 100.0 - z: 0.0 - w: 1.0 - } - color { - x: 1.0 - y: 1.0 - z: 1.0 - w: 1.0 } type: TYPE_TEMPLATE id: "button_component" parent: "content" - layer: "" inherit_alpha: true - alpha: 1.0 template: "/example/examples/data_list/cache_with_component/button_component.gui" - template_node_child: false - custom_type: 0 - enabled: true } nodes { - position { - x: 0.0 - y: 0.0 - z: 0.0 - w: 1.0 - } - rotation { - x: 0.0 - y: 0.0 - z: 0.0 - w: 1.0 - } - scale { - x: 1.0 - y: 1.0 - z: 1.0 - w: 1.0 - } - size { - x: 300.0 - y: 100.0 - z: 0.0 - w: 1.0 - } - color { - x: 1.0 - y: 1.0 - z: 1.0 - w: 1.0 - } type: TYPE_BOX - blend_mode: BLEND_MODE_ALPHA - texture: "" id: "button_component/root" - xanchor: XANCHOR_NONE - yanchor: YANCHOR_NONE - pivot: PIVOT_CENTER - adjust_mode: ADJUST_MODE_FIT parent: "button_component" - layer: "" - inherit_alpha: true - slice9 { - x: 0.0 - y: 0.0 - z: 0.0 - w: 0.0 - } - clipping_mode: CLIPPING_MODE_NONE - clipping_visible: true - clipping_inverted: false - alpha: 1.0 template_node_child: true - size_mode: SIZE_MODE_MANUAL - custom_type: 0 - enabled: true - visible: false - material: "" } nodes { - position { - x: 0.0 - y: 0.0 - z: 0.0 - w: 1.0 - } - rotation { - x: 0.0 - y: 0.0 - z: 0.0 - w: 1.0 - } - scale { - x: 1.0 - y: 1.0 - z: 1.0 - w: 1.0 - } - size { - x: 300.0 - y: 90.0 - z: 0.0 - w: 1.0 - } - color { - x: 0.631 - y: 0.843 - z: 0.961 - w: 1.0 - } type: TYPE_BOX - blend_mode: BLEND_MODE_ALPHA - texture: "druid/ui_circle_32" id: "button_component/panel" - xanchor: XANCHOR_NONE - yanchor: YANCHOR_NONE - pivot: PIVOT_CENTER - adjust_mode: ADJUST_MODE_FIT parent: "button_component/root" - layer: "" - inherit_alpha: true - slice9 { - x: 16.0 - y: 16.0 - z: 16.0 - w: 16.0 - } - clipping_mode: CLIPPING_MODE_NONE - clipping_visible: true - clipping_inverted: false - alpha: 1.0 template_node_child: true - size_mode: SIZE_MODE_MANUAL - custom_type: 0 - enabled: true - visible: true - material: "" } nodes { - position { - x: 0.0 - y: 0.0 - z: 0.0 - w: 1.0 - } - rotation { - x: 0.0 - y: 0.0 - z: 0.0 - w: 1.0 - } - scale { - x: 1.0 - y: 1.0 - z: 1.0 - w: 1.0 - } - size { - x: 250.0 - y: 50.0 - z: 0.0 - w: 1.0 - } - color { - x: 0.31 - y: 0.318 - z: 0.322 - w: 1.0 - } type: TYPE_TEXT - blend_mode: BLEND_MODE_ALPHA - text: "Data Item 1" - font: "text_bold" id: "button_component/text" - xanchor: XANCHOR_NONE - yanchor: YANCHOR_NONE - pivot: PIVOT_CENTER - outline { - x: 1.0 - y: 1.0 - z: 1.0 - w: 1.0 - } - shadow { - x: 1.0 - y: 1.0 - z: 1.0 - w: 1.0 - } - adjust_mode: ADJUST_MODE_FIT - line_break: false parent: "button_component/root" - layer: "" - inherit_alpha: true - alpha: 1.0 - outline_alpha: 0.0 - shadow_alpha: 0.0 template_node_child: true - text_leading: 1.0 - text_tracking: 0.0 - custom_type: 0 - enabled: true - visible: true - material: "" } material: "/builtins/materials/gui.material" adjust_reference: ADJUST_REFERENCE_PARENT -max_nodes: 512 diff --git a/example/examples/data_list/cache_with_component/cache_with_component.lua b/example/examples/data_list/cache_with_component/cache_with_component.lua index ca308e2..0658e97 100644 --- a/example/examples/data_list/cache_with_component/cache_with_component.lua +++ b/example/examples/data_list/cache_with_component/cache_with_component.lua @@ -1,25 +1,23 @@ -local event = require("druid.event") -local component = require("druid.component") -local data_list = require("druid.extended.data_list") +local event = require("event.event") local button_component = require("example.examples.data_list.cache_with_component.button_component") ----@class data_list_cache_with_component: druid.base_component ----@field druid druid_instance -local M = component.create("data_list_cache_with_component") +---@class examples.data_list_cache_with_component: druid.widget +---@field prefab node +---@field scroll druid.scroll +---@field grid druid.grid +---@field data_list druid.data_list +---@field on_item_click event +local M = {} ----@param template string ----@param nodes table -function M:init(template, nodes) - self.druid = self:get_druid(template, nodes) - +function M:init() self.prefab = self:get_node("button_component/root") gui.set_enabled(self.prefab, false) self.scroll = self.druid:new_scroll("view", "content") - self.grid = self.druid:new_static_grid("content", self.prefab, 1) - self.data_list = self.druid:new(data_list, self.scroll, self.grid, self.create_item_callback) --[[@as druid.data_list]] + self.grid = self.druid:new_grid("content", self.prefab, 1) + self.data_list = self.druid:new_data_list(self.scroll, self.grid, self.create_item_callback) --[[@as druid.data_list]] self.data_list:set_use_cache(true) self.data_list.on_element_add:subscribe(self.on_element_add) self.data_list.on_element_remove:subscribe(self.on_element_remove) @@ -30,17 +28,15 @@ function M:init(template, nodes) end self.data_list:set_data(data) - self.on_item_click = event() + self.on_item_click = event.create() end ---@param item_data table ---@param index number ----@return node, druid.base_component +---@return node, druid.component function M:create_item_callback(item_data, index) - local nodes = gui.clone_tree(self.prefab) - - local instance = self.druid:new(button_component, "button_component", nodes) + local instance = self.druid:new_widget(button_component, "button_component", self.prefab) gui.set_enabled(instance.root, true) return instance.root, instance @@ -49,10 +45,10 @@ end ---@param index number ---@param node node ----@param instance button_component +---@param instance examples.button_component ---@param data table function M:on_element_add(index, node, instance, data) - instance.text:set_to("Data Item " .. index) + instance.text:set_text("Data Item " .. index) instance.button.on_click:subscribe(self.on_button_click, self) instance:set_data(index) end @@ -63,11 +59,55 @@ function M:on_element_remove(index, node, instance, data) end ----@param instance button_component +---@param instance examples.button_component function M:on_button_click(instance) local data = instance:get_data() self.on_item_click:trigger(data) end +---@param output_list output_list +function M:on_example_created(output_list) + self.on_item_click:subscribe(function(index) + output_list:add_log_text("Item clicked: " .. index) + end) +end + + +---@param properties_panel properties_panel +function M:properties_control(properties_panel) + local view_node = self.scroll.view_node + local is_stencil = gui.get_clipping_mode(view_node) == gui.CLIPPING_MODE_STENCIL + + properties_panel:add_checkbox("ui_clipping", is_stencil, function(value) + gui.set_clipping_mode(view_node, value and gui.CLIPPING_MODE_STENCIL or gui.CLIPPING_MODE_NONE) + end) + + properties_panel:add_slider("ui_scroll", 0, function(value) + self.scroll:scroll_to_percent(vmath.vector3(0, 1 - value, 0), true) + end) +end + + +---@return string +function M:get_debug_info() + local data_list = self.data_list + + local data = data_list:get_data() + local info = "" + info = info .. "Data length: " .. #data .. "\n" + info = info .. "First Visual Index: " .. data_list.top_index .. "\n" + info = info .. "Last Visual Index: " .. data_list.last_index .. "\n" + + local s = self.scroll + info = info .. "\n" + info = info .. "View Size Y: " .. gui.get(s.view_node, "size.y") .. "\n" + info = info .. "Content Size Y: " .. gui.get(s.content_node, "size.y") .. "\n" + info = info .. "Content position Y: " .. math.ceil(s.position.y) .. "\n" + info = info .. "Content Range Y: " .. s.available_pos.y .. " - " .. s.available_pos.w .. "\n" + + return info +end + + return M diff --git a/example/examples/data_list/examples_list.lua b/example/examples/data_list/examples_list.lua index 1f496fa..b761165 100644 --- a/example/examples/data_list/examples_list.lua +++ b/example/examples/data_list/examples_list.lua @@ -9,46 +9,7 @@ function M.get_examples() template = "data_list_basic", root = "data_list_basic/root", code_url = "example/examples/data_list/basic/data_list_basic.lua", - component_class = require("example.examples.data_list.basic.data_list_basic"), - on_create = function(instance, output_list) - ---@cast instance data_list_basic - instance.on_item_click:subscribe(function(index) - output_list:add_log_text("Item clicked: " .. index) - end) - end, - properties_control = function(instance, properties_panel) - ---@cast instance data_list_basic - - local view_node = instance.scroll.view_node - local is_stencil = gui.get_clipping_mode(view_node) == gui.CLIPPING_MODE_STENCIL - - properties_panel:add_checkbox("ui_clipping", is_stencil, function(value) - gui.set_clipping_mode(view_node, value and gui.CLIPPING_MODE_STENCIL or gui.CLIPPING_MODE_NONE) - end) - - properties_panel:add_slider("ui_scroll", 0, function(value) - instance.scroll:scroll_to_percent(vmath.vector3(0, 1 - value, 0), true) - end) - end, - get_debug_info = function(instance) - ---@cast instance data_list_basic - local data_list = instance.data_list - - local data = data_list:get_data() - local info = "" - info = info .. "Data length: " .. #data .. "\n" - info = info .. "First Visual Index: " .. data_list.top_index .. "\n" - info = info .. "Last Visual Index: " .. data_list.last_index .. "\n" - - local s = instance.scroll - info = info .. "\n" - info = info .. "View Size Y: " .. gui.get(s.view_node, "size.y") .. "\n" - info = info .. "Content Size Y: " .. gui.get(s.content_node, "size.y") .. "\n" - info = info .. "Content position Y: " .. math.ceil(s.position.y) .. "\n" - info = info .. "Content Range Y: " .. s.available_pos.y .. " - " .. s.available_pos.w .. "\n" - - return info - end + widget_class = require("example.examples.data_list.basic.data_list_basic"), }, { @@ -57,36 +18,7 @@ function M.get_examples() template = "data_list_horizontal_basic", root = "data_list_horizontal_basic/root", code_url = "example/examples/data_list/basic/data_list_horizontal_basic.lua", - component_class = require("example.examples.data_list.basic.data_list_horizontal_basic"), - properties_control = function(instance, properties_panel) - ---@cast instance data_list_horizontal_basic - - local view_node = instance.scroll.view_node - local is_stencil = gui.get_clipping_mode(view_node) == gui.CLIPPING_MODE_STENCIL - - properties_panel:add_checkbox("ui_clipping", is_stencil, function(value) - gui.set_clipping_mode(view_node, value and gui.CLIPPING_MODE_STENCIL or gui.CLIPPING_MODE_NONE) - end) - end, - get_debug_info = function(instance) - ---@cast instance data_list_horizontal_basic - local data_list = instance.data_list - - local data = data_list:get_data() - local info = "" - info = info .. "Data length: " .. #data .. "\n" - info = info .. "First Visual Index: " .. data_list.top_index .. "\n" - info = info .. "Last Visual Index: " .. data_list.last_index .. "\n" - - local s = instance.scroll - info = info .. "\n" - info = info .. "View Size X: " .. gui.get(s.view_node, "size.x") .. "\n" - info = info .. "Content Size X: " .. gui.get(s.content_node, "size.x") .. "\n" - info = info .. "Content position X: " .. math.ceil(s.position.x) .. "\n" - info = info .. "Content Range X: " .. s.available_pos.x .. " - " .. s.available_pos.z .. "\n" - - return info - end + widget_class = require("example.examples.data_list.basic.data_list_horizontal_basic"), }, { @@ -95,59 +27,7 @@ function M.get_examples() template = "data_list_add_remove_clear", root = "data_list_add_remove_clear/root", code_url = "example/examples/data_list/add_remove_clear/data_list_add_remove_clear.lua", - component_class = require("example.examples.data_list.add_remove_clear.data_list_add_remove_clear"), - on_create = function(instance, output_list) - ---@cast instance data_list_add_remove_clear - instance.on_item_click:subscribe(function(index) - instance:remove_item(index) - output_list:add_log_text("Item removed: " .. index) - end) - end, - properties_control = function(instance, properties_panel) - ---@cast instance data_list_add_remove_clear - - local view_node = instance.scroll.view_node - local is_stencil = gui.get_clipping_mode(view_node) == gui.CLIPPING_MODE_STENCIL - - properties_panel:add_checkbox("ui_clipping", is_stencil, function(value) - gui.set_clipping_mode(view_node, value and gui.CLIPPING_MODE_STENCIL or gui.CLIPPING_MODE_NONE) - end) - - properties_panel:add_slider("ui_scroll", 0, function(value) - instance.scroll:scroll_to_percent(vmath.vector3(0, 1 - value, 0), true) - end) - - properties_panel:add_button("ui_add_element", function() - instance:add_item() - end) - - properties_panel:add_button("ui_remove_element", function() - instance:remove_item() - end) - - properties_panel:add_button("ui_clear_elements", function() - instance.data_list:clear() - end) - end, - get_debug_info = function(instance) - ---@cast instance data_list_add_remove_clear - local data_list = instance.data_list - - local data = data_list:get_data() - local info = "" - info = info .. "Data length: " .. #data .. "\n" - info = info .. "First Visual Index: " .. data_list.top_index .. "\n" - info = info .. "Last Visual Index: " .. data_list.last_index .. "\n" - - local s = instance.scroll - info = info .. "\n" - info = info .. "View Size X: " .. gui.get(s.view_node, "size.x") .. "\n" - info = info .. "Content Size X: " .. gui.get(s.content_node, "size.x") .. "\n" - info = info .. "Content position X: " .. math.ceil(s.position.x) .. "\n" - info = info .. "Content Range X: " .. s.available_pos.x .. " - " .. s.available_pos.z .. "\n" - - return info - end + widget_class = require("example.examples.data_list.add_remove_clear.data_list_add_remove_clear"), }, { @@ -156,48 +36,9 @@ function M.get_examples() template = "data_list_cache_with_component", root = "data_list_cache_with_component/root", code_url = "example/examples/data_list/cache_with_component/cache_with_component.lua", - component_class = require("example.examples.data_list.cache_with_component.cache_with_component"), - on_create = function(instance, output_list) - ---@cast instance data_list_cache_with_component - instance.on_item_click:subscribe(function(index) - output_list:add_log_text("Item clicked: " .. index) - end) - end, - properties_control = function(instance, properties_panel) - ---@cast instance data_list_cache_with_component - - local view_node = instance.scroll.view_node - local is_stencil = gui.get_clipping_mode(view_node) == gui.CLIPPING_MODE_STENCIL - - properties_panel:add_checkbox("ui_clipping", is_stencil, function(value) - gui.set_clipping_mode(view_node, value and gui.CLIPPING_MODE_STENCIL or gui.CLIPPING_MODE_NONE) - end) - - properties_panel:add_slider("ui_scroll", 0, function(value) - instance.scroll:scroll_to_percent(vmath.vector3(0, 1 - value, 0), true) - end) - end, - get_debug_info = function(instance) - ---@cast instance data_list_cache_with_component - local data_list = instance.data_list - - local data = data_list:get_data() - local info = "" - info = info .. "Data length: " .. #data .. "\n" - info = info .. "First Visual Index: " .. data_list.top_index .. "\n" - info = info .. "Last Visual Index: " .. data_list.last_index .. "\n" - - local s = instance.scroll - info = info .. "\n" - info = info .. "View Size Y: " .. gui.get(s.view_node, "size.y") .. "\n" - info = info .. "Content Size Y: " .. gui.get(s.content_node, "size.y") .. "\n" - info = info .. "Content position Y: " .. math.ceil(s.position.y) .. "\n" - info = info .. "Content Range Y: " .. s.available_pos.y .. " - " .. s.available_pos.w .. "\n" - - return info - end + widget_class = require("example.examples.data_list.cache_with_component.cache_with_component"), }, } end -return M \ No newline at end of file +return M diff --git a/example/examples/druid_examples.lua b/example/examples/druid_examples.lua index 6303e80..bf04bbe 100644 --- a/example/examples/druid_examples.lua +++ b/example/examples/druid_examples.lua @@ -6,6 +6,7 @@ local gamepad_examples = require("example.examples.gamepad.examples_list") local window_examples = require("example.examples.windows.examples_list") local widgets_examples = require("example.examples.widgets.examples_list") local panthera_examples = require("example.examples.panthera.examples_list") +local container_examples = require("example.examples.container.examples_list") local M = {} @@ -18,10 +19,11 @@ local M = {} ---@field root string ---@field template string|nil ---@field code_url string|nil @URL to the source code ----@field component_class druid.base_component ----@field on_create fun(instance: druid.base_component, output_list: output_list)|nil ----@field get_debug_info (fun(instance: druid.base_component):string)|nil ----@field properties_control (fun(instance: druid.base_component, properties_panel: properties_panel))|nil +---@field component_class druid.component|nil +---@field widget_class druid.widget|nil New way to create components +---@field on_create fun(instance: druid.component|druid.widget, output_list: output_list)|nil +---@field get_debug_info (fun(instance: druid.component):string)|nil +---@field properties_control (fun(instance: druid.component, properties_panel: properties_panel))|nil ---@field information_text_id string|nil @@ -44,8 +46,8 @@ function M.get_examples() add_examples(examples, "ui_examples_window", window_examples.get_examples()) add_examples(examples, "ui_examples_panthera", panthera_examples.get_examples()) add_examples(examples, "ui_examples_widgets", widgets_examples.get_examples()) - + add_examples(examples, "ui_examples_container", container_examples.get_examples()) return examples end -return M \ No newline at end of file +return M diff --git a/example/examples/gamepad/examples_list.lua b/example/examples/gamepad/examples_list.lua index aba51c0..2289fc1 100644 --- a/example/examples/gamepad/examples_list.lua +++ b/example/examples/gamepad/examples_list.lua @@ -10,63 +10,17 @@ function M.get_examples() template = "gamepad_tester", root = "gamepad_tester/root", code_url = "example/examples/gamepad/gamepad_tester/gamepad_tester.lua", - component_class = require("example.examples.gamepad.gamepad_tester.gamepad_tester"), - on_create = function(instance, output_list) - ---@cast instance gamepad_tester - instance.button_left.on_click:subscribe(function() - output_list:add_log_text("Button Left Clicked") - end) - instance.button_right.on_click:subscribe(function() - output_list:add_log_text("Button Right Clicked") - end) - instance.button_up.on_click:subscribe(function() - output_list:add_log_text("Button Up Clicked") - end) - instance.button_down.on_click:subscribe(function() - output_list:add_log_text("Button Down Clicked") - end) - instance.button_a.on_click:subscribe(function() - output_list:add_log_text("Button A Clicked") - end) - instance.button_b.on_click:subscribe(function() - output_list:add_log_text("Button B Clicked") - end) - instance.button_x.on_click:subscribe(function() - output_list:add_log_text("Button X Clicked") - end) - instance.button_y.on_click:subscribe(function() - output_list:add_log_text("Button Y Clicked") - end) - instance.button_back.on_click:subscribe(function() - output_list:add_log_text("Button Back Clicked") - end) - instance.button_start.on_click:subscribe(function() - output_list:add_log_text("Button Start Clicked") - end) - instance.button_l1.on_click:subscribe(function() - output_list:add_log_text("Button L1 Clicked") - end) - instance.button_r1.on_click:subscribe(function() - output_list:add_log_text("Button R1 Clicked") - end) - instance.button_stick_left.on_click:subscribe(function() - output_list:add_log_text("Button Stick Left Clicked") - end) - instance.button_stick_right.on_click:subscribe(function() - output_list:add_log_text("Button Stick Right Clicked") - end) - end, + widget_class = require("example.examples.gamepad.gamepad_tester.gamepad_tester"), }, - { name_id = "ui_example_on_screen_control", information_text_id = "ui_example_on_screen_control_description", template = "on_screen_control", root = "on_screen_control/root", code_url = "example/examples/gamepad/on_screen_control/on_screen_control.lua", - component_class = require("example.examples.gamepad.on_screen_control.on_screen_control"), + widget_class = require("example.examples.gamepad.on_screen_control.on_screen_control"), } } end -return M \ No newline at end of file +return M diff --git a/example/examples/gamepad/gamepad_tester/gamepad_tester.gui b/example/examples/gamepad/gamepad_tester/gamepad_tester.gui index a6904ed..03dfb38 100644 --- a/example/examples/gamepad/gamepad_tester/gamepad_tester.gui +++ b/example/examples/gamepad/gamepad_tester/gamepad_tester.gui @@ -1,6 +1,6 @@ textures { - name: "druid" - texture: "/example/assets/druid.atlas" + name: "druid_example" + texture: "/example/assets/druid_example.atlas" } nodes { size { @@ -8,7 +8,7 @@ nodes { y: 1000.0 } type: TYPE_BOX - texture: "druid/empty" + texture: "druid_example/empty" id: "root" inherit_alpha: true visible: false @@ -19,7 +19,7 @@ nodes { y: 100.0 } type: TYPE_BOX - texture: "druid/empty" + texture: "druid_example/empty" id: "gamepad" parent: "root" inherit_alpha: true @@ -177,7 +177,7 @@ nodes { y: 290.0 } type: TYPE_BOX - texture: "druid/empty" + texture: "druid_example/empty" id: "dpad" parent: "gamepad" inherit_alpha: true @@ -204,10 +204,8 @@ nodes { id: "button_left/text" parent: "button_left/button" overridden_fields: 45 - overridden_fields: 46 template_node_child: true enabled: false - visible: false } nodes { rotation { @@ -240,10 +238,8 @@ nodes { id: "button_up/text" parent: "button_up/button" overridden_fields: 45 - overridden_fields: 46 template_node_child: true enabled: false - visible: false } nodes { rotation { @@ -276,10 +272,8 @@ nodes { id: "button_right/text" parent: "button_right/button" overridden_fields: 45 - overridden_fields: 46 template_node_child: true enabled: false - visible: false } nodes { type: TYPE_BOX @@ -308,10 +302,8 @@ nodes { id: "button_down/text" parent: "button_down/button" overridden_fields: 45 - overridden_fields: 46 template_node_child: true enabled: false - visible: false } nodes { rotation { @@ -333,7 +325,7 @@ nodes { y: 290.0 } type: TYPE_BOX - texture: "druid/empty" + texture: "druid_example/empty" id: "buttons" parent: "gamepad" inherit_alpha: true @@ -474,7 +466,7 @@ nodes { y: 290.0 } type: TYPE_BOX - texture: "druid/empty" + texture: "druid_example/empty" id: "buttons_system" parent: "gamepad" inherit_alpha: true @@ -492,7 +484,7 @@ nodes { } nodes { size { - x: 180.0 + x: 170.0 y: 90.0 } type: TYPE_BOX @@ -529,7 +521,7 @@ nodes { } nodes { size { - x: 180.0 + x: 170.0 y: 90.0 } type: TYPE_BOX @@ -564,7 +556,7 @@ nodes { y: 200.0 } type: TYPE_BOX - texture: "druid/empty" + texture: "druid_example/empty" id: "button_left_bump" parent: "gamepad" inherit_alpha: true @@ -582,14 +574,9 @@ nodes { template: "/example/examples/gamepad/gamepad_tester/templates/gamepad_button.gui" } nodes { - size { - x: 180.0 - y: 90.0 - } type: TYPE_BOX id: "button_l1/button" parent: "button_l1" - overridden_fields: 4 template_node_child: true } nodes { @@ -648,7 +635,7 @@ nodes { y: 200.0 } type: TYPE_BOX - texture: "druid/empty" + texture: "druid_example/empty" id: "button_right_bump" parent: "gamepad" inherit_alpha: true @@ -665,14 +652,9 @@ nodes { template: "/example/examples/gamepad/gamepad_tester/templates/gamepad_button.gui" } nodes { - size { - x: 180.0 - y: 90.0 - } type: TYPE_BOX id: "button_r1/button" parent: "button_r1" - overridden_fields: 4 template_node_child: true } nodes { diff --git a/example/examples/gamepad/gamepad_tester/gamepad_tester.lua b/example/examples/gamepad/gamepad_tester/gamepad_tester.lua index af59cab..da01b2c 100644 --- a/example/examples/gamepad/gamepad_tester/gamepad_tester.lua +++ b/example/examples/gamepad/gamepad_tester/gamepad_tester.lua @@ -1,22 +1,29 @@ -local component = require("druid.component") -local progress = require("druid.extended.progress") - ----@class gamepad_tester: druid.base_component +---@class examples.gamepad_tester: druid.widget ---@field root node ----@field buttons druid.button ----@field buttons_system druid.button ----@field button_left_bump druid.button ----@field button_right_bump druid.button ----@field druid druid_instance -local M = component.create("gamepad_tester") +---@field button_left druid.button +---@field button_right druid.button +---@field button_up druid.button +---@field button_down druid.button +---@field button_x druid.button +---@field button_b druid.button +---@field button_y druid.button +---@field button_a druid.button +---@field button_l1 druid.button +---@field button_r1 druid.button +---@field button_stick_left druid.button +---@field button_stick_right druid.button +---@field button_start druid.button +---@field button_back druid.button +---@field trigger_l2 druid.progress +---@field trigger_r2 druid.progress +---@field stick_left node +---@field stick_right node +local M = {} local STICK_DISTANCE = 50 ----@param template string ----@param nodes table -function M:init(template, nodes) - self.druid = self:get_druid(template, nodes) +function M:init() self.root = self:get_node("root") self.button_left = self.druid:new_button("button_left/button"):set_key_trigger("gamepad_lpad_left") @@ -38,8 +45,8 @@ function M:init(template, nodes) self.button_start = self.druid:new_button("button_start/button"):set_key_trigger("gamepad_start") self.button_back = self.druid:new_button("button_back/button"):set_key_trigger("gamepad_back") - self.trigger_l2 = self.druid:new(progress, "button_l2/fill", "x", 0) --[[@as druid.progress]] - self.trigger_r2 = self.druid:new(progress, "button_r2/fill", "x", 0) --[[@as druid.progress]] + self.trigger_l2 = self.druid:new_progress("button_l2/fill", "x", 0) --[[@as druid.progress]] + self.trigger_r2 = self.druid:new_progress("button_r2/fill", "x", 0) --[[@as druid.progress]] self.stick_left = self:get_node("stick_left/stick_root") self.stick_right = self:get_node("stick_right/stick_root") @@ -84,4 +91,51 @@ function M:on_input(action_id, action) end +---@param output_list output_list +function M:on_example_created(output_list) + self.button_left.on_click:subscribe(function() + output_list:add_log_text("Button Left Clicked") + end) + self.button_right.on_click:subscribe(function() + output_list:add_log_text("Button Right Clicked") + end) + self.button_up.on_click:subscribe(function() + output_list:add_log_text("Button Up Clicked") + end) + self.button_down.on_click:subscribe(function() + output_list:add_log_text("Button Down Clicked") + end) + self.button_a.on_click:subscribe(function() + output_list:add_log_text("Button A Clicked") + end) + self.button_b.on_click:subscribe(function() + output_list:add_log_text("Button B Clicked") + end) + self.button_x.on_click:subscribe(function() + output_list:add_log_text("Button X Clicked") + end) + self.button_y.on_click:subscribe(function() + output_list:add_log_text("Button Y Clicked") + end) + self.button_back.on_click:subscribe(function() + output_list:add_log_text("Button Back Clicked") + end) + self.button_start.on_click:subscribe(function() + output_list:add_log_text("Button Start Clicked") + end) + self.button_l1.on_click:subscribe(function() + output_list:add_log_text("Button L1 Clicked") + end) + self.button_r1.on_click:subscribe(function() + output_list:add_log_text("Button R1 Clicked") + end) + self.button_stick_left.on_click:subscribe(function() + output_list:add_log_text("Button Stick Left Clicked") + end) + self.button_stick_right.on_click:subscribe(function() + output_list:add_log_text("Button Stick Right Clicked") + end) +end + + return M diff --git a/example/examples/gamepad/gamepad_tester/templates/gamepad_button.gui b/example/examples/gamepad/gamepad_tester/templates/gamepad_button.gui index a7f8b55..b666dda 100644 --- a/example/examples/gamepad/gamepad_tester/templates/gamepad_button.gui +++ b/example/examples/gamepad/gamepad_tester/templates/gamepad_button.gui @@ -1,58 +1,24 @@ -script: "" fonts { name: "text_bold" font: "/example/assets/fonts/text_bold.font" } textures { - name: "druid" - texture: "/example/assets/druid.atlas" -} -background_color { - x: 0.0 - y: 0.0 - z: 0.0 - w: 0.0 + name: "druid_example" + texture: "/example/assets/druid_example.atlas" } nodes { - position { - x: 0.0 - y: 0.0 - z: 0.0 - w: 1.0 - } - rotation { - x: 0.0 - y: 0.0 - z: 0.0 - w: 1.0 - } - scale { - x: 1.0 - y: 1.0 - z: 1.0 - w: 1.0 - } size { x: 90.0 y: 90.0 - z: 0.0 - w: 1.0 } color { x: 0.31 y: 0.318 z: 0.322 - w: 1.0 } type: TYPE_BOX - blend_mode: BLEND_MODE_ALPHA - texture: "druid/ui_circle_32" + texture: "druid_example/ui_circle_32" id: "button" - xanchor: XANCHOR_NONE - yanchor: YANCHOR_NONE - pivot: PIVOT_CENTER - adjust_mode: ADJUST_MODE_FIT - layer: "" inherit_alpha: true slice9 { x: 16.0 @@ -60,143 +26,50 @@ nodes { z: 16.0 w: 16.0 } - clipping_mode: CLIPPING_MODE_NONE - clipping_visible: true - clipping_inverted: false - alpha: 1.0 - template_node_child: false - size_mode: SIZE_MODE_MANUAL - custom_type: 0 - enabled: true - visible: true - material: "" } nodes { - position { - x: 0.0 - y: 0.0 - z: 0.0 - w: 1.0 - } - rotation { - x: 0.0 - y: 0.0 - z: 0.0 - w: 1.0 - } scale { x: 1.5 y: 1.5 - z: 1.0 - w: 1.0 } size { x: 40.0 y: 40.0 - z: 0.0 - w: 1.0 } color { x: 0.941 y: 0.984 - z: 1.0 - w: 1.0 } type: TYPE_TEXT - blend_mode: BLEND_MODE_ALPHA text: "X" font: "text_bold" id: "text" - xanchor: XANCHOR_NONE - yanchor: YANCHOR_NONE - pivot: PIVOT_CENTER outline { x: 1.0 y: 1.0 z: 1.0 - w: 1.0 } shadow { x: 1.0 y: 1.0 z: 1.0 - w: 1.0 } - adjust_mode: ADJUST_MODE_FIT - line_break: false parent: "button" - layer: "" inherit_alpha: true - alpha: 1.0 outline_alpha: 0.0 shadow_alpha: 0.0 - template_node_child: false - text_leading: 1.0 - text_tracking: 0.0 - custom_type: 0 - enabled: true - visible: true - material: "" } nodes { - position { - x: 0.0 - y: 0.0 - z: 0.0 - w: 1.0 - } - rotation { - x: 0.0 - y: 0.0 - z: 0.0 - w: 1.0 - } - scale { - x: 1.0 - y: 1.0 - z: 1.0 - w: 1.0 - } - size { - x: 200.0 - y: 100.0 - z: 0.0 - w: 1.0 - } color { x: 0.941 y: 0.984 - z: 1.0 - w: 1.0 } type: TYPE_BOX - blend_mode: BLEND_MODE_ALPHA - texture: "druid/icon_arrow" + texture: "druid_example/icon_arrow" id: "icon" - xanchor: XANCHOR_NONE - yanchor: YANCHOR_NONE - pivot: PIVOT_CENTER - adjust_mode: ADJUST_MODE_FIT parent: "button" - layer: "" inherit_alpha: true - slice9 { - x: 0.0 - y: 0.0 - z: 0.0 - w: 0.0 - } - clipping_mode: CLIPPING_MODE_NONE - clipping_visible: true - clipping_inverted: false - alpha: 1.0 - template_node_child: false size_mode: SIZE_MODE_AUTO - custom_type: 0 - enabled: true - visible: true - material: "" } material: "/builtins/materials/gui.material" adjust_reference: ADJUST_REFERENCE_PARENT -max_nodes: 512 diff --git a/example/examples/gamepad/gamepad_tester/templates/gamepad_stick.gui b/example/examples/gamepad/gamepad_tester/templates/gamepad_stick.gui index ffa86d2..017b97f 100644 --- a/example/examples/gamepad/gamepad_tester/templates/gamepad_stick.gui +++ b/example/examples/gamepad/gamepad_tester/templates/gamepad_stick.gui @@ -3,13 +3,13 @@ fonts { font: "/example/assets/fonts/text_bold.font" } textures { - name: "druid" - texture: "/example/assets/druid.atlas" + name: "druid_example" + texture: "/example/assets/druid_example.atlas" } nodes { size { - x: 12.0 - y: 12.0 + x: 250.0 + y: 250.0 } color { x: 0.31 @@ -17,7 +17,7 @@ nodes { z: 0.322 } type: TYPE_BOX - texture: "druid/empty" + texture: "druid_example/empty" id: "root" inherit_alpha: true } @@ -46,7 +46,7 @@ nodes { z: 0.322 } type: TYPE_BOX - texture: "druid/pixel" + texture: "druid_example/pixel" id: "background" parent: "background_mask" inherit_alpha: true @@ -59,7 +59,7 @@ nodes { } nodes { type: TYPE_BOX - texture: "druid/empty" + texture: "druid_example/empty" id: "stick_root" parent: "root" inherit_alpha: true @@ -77,7 +77,7 @@ nodes { z: 0.0 } type: TYPE_BOX - texture: "druid/ui_circle_64_blur_8" + texture: "druid_example/ui_circle_64_blur_8" id: "stick_shadow" parent: "stick_root" inherit_alpha: true @@ -95,7 +95,7 @@ nodes { z: 0.49 } type: TYPE_BOX - texture: "druid/ui_circle_64" + texture: "druid_example/ui_circle_64" id: "stick" parent: "stick_root" inherit_alpha: true @@ -121,7 +121,7 @@ nodes { z: 0.322 } type: TYPE_BOX - texture: "druid/ui_circle_16" + texture: "druid_example/ui_circle_16" id: "dot_1" parent: "stick" inherit_alpha: true @@ -141,7 +141,7 @@ nodes { z: 0.322 } type: TYPE_BOX - texture: "druid/ui_circle_16" + texture: "druid_example/ui_circle_16" id: "dot_2" parent: "stick" inherit_alpha: true @@ -161,7 +161,7 @@ nodes { z: 0.322 } type: TYPE_BOX - texture: "druid/ui_circle_16" + texture: "druid_example/ui_circle_16" id: "dot_3" parent: "stick" inherit_alpha: true @@ -181,7 +181,7 @@ nodes { z: 0.322 } type: TYPE_BOX - texture: "druid/ui_circle_16" + texture: "druid_example/ui_circle_16" id: "dot_4" parent: "stick" inherit_alpha: true diff --git a/example/examples/gamepad/gamepad_tester/templates/gamepad_trigger.gui b/example/examples/gamepad/gamepad_tester/templates/gamepad_trigger.gui index ffe202d..3403f00 100644 --- a/example/examples/gamepad/gamepad_tester/templates/gamepad_trigger.gui +++ b/example/examples/gamepad/gamepad_tester/templates/gamepad_trigger.gui @@ -1,58 +1,24 @@ -script: "" fonts { name: "text_bold" font: "/example/assets/fonts/text_bold.font" } textures { - name: "druid" - texture: "/example/assets/druid.atlas" -} -background_color { - x: 0.0 - y: 0.0 - z: 0.0 - w: 0.0 + name: "druid_example" + texture: "/example/assets/druid_example.atlas" } nodes { - position { - x: 0.0 - y: 0.0 - z: 0.0 - w: 1.0 - } - rotation { - x: 0.0 - y: 0.0 - z: 0.0 - w: 1.0 - } - scale { - x: 1.0 - y: 1.0 - z: 1.0 - w: 1.0 - } size { x: 180.0 y: 90.0 - z: 0.0 - w: 1.0 } color { x: 0.31 y: 0.318 z: 0.322 - w: 1.0 } type: TYPE_BOX - blend_mode: BLEND_MODE_ALPHA - texture: "druid/ui_circle_32" + texture: "druid_example/ui_circle_32" id: "button" - xanchor: XANCHOR_NONE - yanchor: YANCHOR_NONE - pivot: PIVOT_CENTER - adjust_mode: ADJUST_MODE_FIT - layer: "" inherit_alpha: true slice9 { x: 16.0 @@ -60,58 +26,25 @@ nodes { z: 16.0 w: 16.0 } - clipping_mode: CLIPPING_MODE_NONE - clipping_visible: true - clipping_inverted: false - alpha: 1.0 - template_node_child: false - size_mode: SIZE_MODE_MANUAL - custom_type: 0 - enabled: true - visible: true - material: "" } nodes { position { x: -90.0 - y: 0.0 - z: 0.0 - w: 1.0 - } - rotation { - x: 0.0 - y: 0.0 - z: 0.0 - w: 1.0 - } - scale { - x: 1.0 - y: 1.0 - z: 1.0 - w: 1.0 } size { x: 180.0 y: 90.0 - z: 0.0 - w: 1.0 } color { x: 0.631 y: 0.843 z: 0.961 - w: 1.0 } type: TYPE_BOX - blend_mode: BLEND_MODE_ALPHA - texture: "druid/ui_circle_32" + texture: "druid_example/ui_circle_32" id: "fill" - xanchor: XANCHOR_NONE - yanchor: YANCHOR_NONE pivot: PIVOT_W - adjust_mode: ADJUST_MODE_FIT parent: "button" - layer: "" inherit_alpha: true slice9 { x: 16.0 @@ -119,84 +52,38 @@ nodes { z: 16.0 w: 16.0 } - clipping_mode: CLIPPING_MODE_NONE - clipping_visible: true - clipping_inverted: false - alpha: 1.0 - template_node_child: false - size_mode: SIZE_MODE_MANUAL - custom_type: 0 - enabled: true - visible: true - material: "" } nodes { - position { - x: 0.0 - y: 0.0 - z: 0.0 - w: 1.0 - } - rotation { - x: 0.0 - y: 0.0 - z: 0.0 - w: 1.0 - } scale { x: 1.5 y: 1.5 - z: 1.0 - w: 1.0 } size { x: 40.0 y: 40.0 - z: 0.0 - w: 1.0 } color { x: 0.941 y: 0.984 - z: 1.0 - w: 1.0 } type: TYPE_TEXT - blend_mode: BLEND_MODE_ALPHA text: "X" font: "text_bold" id: "text" - xanchor: XANCHOR_NONE - yanchor: YANCHOR_NONE - pivot: PIVOT_CENTER outline { x: 1.0 y: 1.0 z: 1.0 - w: 1.0 } shadow { x: 1.0 y: 1.0 z: 1.0 - w: 1.0 } - adjust_mode: ADJUST_MODE_FIT - line_break: false parent: "button" - layer: "" inherit_alpha: true - alpha: 1.0 outline_alpha: 0.0 shadow_alpha: 0.0 - template_node_child: false - text_leading: 1.0 - text_tracking: 0.0 - custom_type: 0 - enabled: true - visible: true - material: "" } material: "/builtins/materials/gui.material" adjust_reference: ADJUST_REFERENCE_PARENT -max_nodes: 512 diff --git a/example/examples/gamepad/on_screen_control/on_screen_control.gui b/example/examples/gamepad/on_screen_control/on_screen_control.gui index 63c4bf5..b037306 100644 --- a/example/examples/gamepad/on_screen_control/on_screen_control.gui +++ b/example/examples/gamepad/on_screen_control/on_screen_control.gui @@ -1,6 +1,6 @@ textures { - name: "druid" - texture: "/example/assets/druid.atlas" + name: "druid_example" + texture: "/example/assets/druid_example.atlas" } nodes { size { @@ -13,7 +13,7 @@ nodes { z: 0.204 } type: TYPE_BOX - texture: "druid/ui_circle_64" + texture: "druid_example/ui_circle_64" id: "root" inherit_alpha: true slice9 { @@ -34,7 +34,7 @@ nodes { z: 0.624 } type: TYPE_BOX - texture: "druid/ui_circle_64" + texture: "druid_example/ui_circle_64" id: "character" parent: "root" inherit_alpha: true @@ -56,7 +56,7 @@ nodes { z: 0.157 } type: TYPE_BOX - texture: "druid/ui_circle_32" + texture: "druid_example/ui_circle_32" id: "eye_left" parent: "character" inherit_alpha: true @@ -72,7 +72,7 @@ nodes { y: 0.984 } type: TYPE_BOX - texture: "druid/ui_circle_8" + texture: "druid_example/ui_circle_8" id: "eye_left_blick" parent: "eye_left" inherit_alpha: true @@ -89,7 +89,7 @@ nodes { z: 0.157 } type: TYPE_BOX - texture: "druid/ui_circle_32" + texture: "druid_example/ui_circle_32" id: "eye_right" parent: "character" inherit_alpha: true @@ -105,7 +105,7 @@ nodes { y: 0.984 } type: TYPE_BOX - texture: "druid/ui_circle_8" + texture: "druid_example/ui_circle_8" id: "eye_right_blick" parent: "eye_right" inherit_alpha: true diff --git a/example/examples/gamepad/on_screen_control/on_screen_control.lua b/example/examples/gamepad/on_screen_control/on_screen_control.lua index 321c78f..f551926 100644 --- a/example/examples/gamepad/on_screen_control/on_screen_control.lua +++ b/example/examples/gamepad/on_screen_control/on_screen_control.lua @@ -1,25 +1,24 @@ -local component = require("druid.component") local on_screen_input = require("example.examples.gamepad.on_screen_control.on_screen_input") ----@class on_screen_control: druid.base_component ----@field druid druid_instance ----@field on_screen_input on_screen_input -local M = component.create("on_screen_control") +---@class examples.on_screen_control: druid.widget +---@field on_screen_input examples.on_screen_input +---@field character node +---@field character_position vector3 +---@field character_eye_left node +---@field character_eye_right node +local M = {} local CHARACTER_SPEED = 700 ----@param template string ----@param nodes table -function M:init(template, nodes) - self.druid = self:get_druid(template, nodes) +function M:init() self.character = self:get_node("character") self.character_position = gui.get_position(self.character) self.character_eye_left = self:get_node("eye_left") self.character_eye_right = self:get_node("eye_right") - self.on_screen_input = self.druid:new(on_screen_input, "on_screen_input") --[[@as on_screen_input]] + self.on_screen_input = self.druid:new_widget(on_screen_input, "on_screen_input") self.on_screen_input.on_action:subscribe(self.on_action_button, self) self.on_screen_input.on_movement:subscribe(self.on_movement, self) diff --git a/example/examples/gamepad/on_screen_control/on_screen_input.gui b/example/examples/gamepad/on_screen_control/on_screen_input.gui index b1d3488..ed48a3e 100644 --- a/example/examples/gamepad/on_screen_control/on_screen_input.gui +++ b/example/examples/gamepad/on_screen_control/on_screen_input.gui @@ -1,6 +1,6 @@ textures { - name: "druid" - texture: "/example/assets/druid.atlas" + name: "druid_example" + texture: "/example/assets/druid_example.atlas" } nodes { size { @@ -23,14 +23,9 @@ nodes { template: "/example/examples/gamepad/gamepad_tester/templates/gamepad_stick.gui" } nodes { - size { - x: 400.0 - y: 400.0 - } type: TYPE_BOX id: "on_screen_stick/root" parent: "on_screen_stick" - overridden_fields: 4 template_node_child: true } nodes { diff --git a/example/examples/gamepad/on_screen_control/on_screen_input.lua b/example/examples/gamepad/on_screen_control/on_screen_input.lua index 41d1d21..bb1af9a 100644 --- a/example/examples/gamepad/on_screen_control/on_screen_input.lua +++ b/example/examples/gamepad/on_screen_control/on_screen_input.lua @@ -1,31 +1,34 @@ local const = require("druid.const") -local event = require("druid.event") +local event = require("event.event") local helper = require("druid.helper") -local component = require("druid.component") ----@class on_screen_input: druid.base_component ----@field druid druid_instance ----@field on_action druid.event @() ----@field on_movement druid.event @(x: number, y: number, dt: number) X/Y values are in range -1..1 ----@field on_movement_stop druid.event @() -local M = component.create("on_screen_input") +---@class examples.on_screen_input: druid.widget +---@field button_action node +---@field on_screen_control node +---@field stick_root node +---@field stick_position vector3 +---@field on_action event @() +---@field on_movement event @(x: number, y: number, dt: number) X/Y values are in range -1..1 +---@field on_movement_stop event @() +---@field is_multitouch boolean +---@field _is_stick_drag boolean|number +---@field _prev_x number +---@field _prev_y number +local M = {} local STICK_DISTANCE = 80 ----@param template string ----@param nodes table -function M:init(template, nodes) - self.druid = self:get_druid(template, nodes) +function M:init() self.button_action = self:get_node("on_screen_button") self.on_screen_control = self:get_node("on_screen_stick/root") self.stick_root = self:get_node("on_screen_stick/stick_root") self.stick_position = gui.get_position(self.stick_root) - self.on_action = event() - self.on_movement = event() - self.on_movement_stop = event() + self.on_action = event.create() + self.on_movement = event.create() + self.on_movement_stop = event.create() self.is_multitouch = helper.is_multitouch_supported() end diff --git a/example/examples/intro/examples_list.lua b/example/examples/intro/examples_list.lua index 0366886..a3d8809 100644 --- a/example/examples/intro/examples_list.lua +++ b/example/examples/intro/examples_list.lua @@ -10,9 +10,17 @@ function M.get_examples() template = "intro", root = "intro/root", code_url = "example/examples/intro/intro/intro.lua", - component_class = require("example.examples.intro.intro.intro"), + widget_class = require("example.examples.intro.intro.intro"), }, + --{ + -- name_id = "ui_example_how_to_use_example", + -- information_text_id = "ui_example_how_to_use_example_description", + -- template = "how_to_use_example", + -- root = "how_to_use_example/root", + -- code_url = "example/examples/intro/how_to_use_example/how_to_use_example.lua", + -- widget_class = require("example.examples.intro.how_to_use_example.how_to_use_example"), + --} } end -return M \ No newline at end of file +return M diff --git a/example/examples/intro/how_to_use_example/how_to_use_example.gui b/example/examples/intro/how_to_use_example/how_to_use_example.gui new file mode 100644 index 0000000..78283a9 --- /dev/null +++ b/example/examples/intro/how_to_use_example/how_to_use_example.gui @@ -0,0 +1,257 @@ +fonts { + name: "text_bold" + font: "/example/assets/fonts/text_bold.font" +} +fonts { + name: "text_regular" + font: "/example/assets/fonts/text_regular.font" +} +textures { + name: "druid_example" + texture: "/example/assets/druid_example.atlas" +} +textures { + name: "druid_logo" + texture: "/example/assets/druid_logo.atlas" +} +nodes { + size { + x: 600.0 + y: 1000.0 + } + color { + x: 0.173 + y: 0.184 + z: 0.204 + } + type: TYPE_BOX + texture: "druid_example/ui_circle_64" + id: "root" + inherit_alpha: true + slice9 { + x: 32.0 + y: 32.0 + z: 32.0 + w: 32.0 + } +} +nodes { + position { + x: -180.0 + y: 375.0 + } + type: TYPE_BOX + texture: "druid_logo/icon_druid" + id: "icon_druid_left" + parent: "root" + layer: "druid_logo" + inherit_alpha: true + alpha: 0.75 + size_mode: SIZE_MODE_AUTO +} +nodes { + position { + x: 180.0 + y: 375.0 + } + type: TYPE_BOX + texture: "druid_logo/icon_druid" + id: "icon_druid_right" + parent: "root" + layer: "druid_logo" + inherit_alpha: true + alpha: 0.75 + size_mode: SIZE_MODE_AUTO +} +nodes { + position { + y: 255.0 + } + scale { + x: 2.0 + y: 2.0 + } + size { + x: 200.0 + y: 40.0 + } + color { + x: 0.941 + y: 0.984 + } + type: TYPE_TEXT + text: "Hello!" + font: "text_bold" + id: "text_hello" + parent: "root" + inherit_alpha: true + outline_alpha: 0.0 + shadow_alpha: 0.0 +} +nodes { + position { + x: -210.0 + y: 191.0 + } + scale { + x: 0.7 + y: 0.7 + } + size { + x: 600.0 + y: 400.0 + } + color { + x: 0.525 + y: 0.525 + z: 0.525 + } + type: TYPE_TEXT + text: "Welcome to Druid Example Page\n" + "\n" + "Navigate over examples on the left\n" + "\n" + "Check example info on the right" + font: "text_bold" + id: "text_description" + pivot: PIVOT_NW + line_break: true + parent: "root" + inherit_alpha: true + outline_alpha: 0.0 + shadow_alpha: 0.0 +} +nodes { + position { + x: -210.0 + y: -189.0 + } + scale { + x: 0.7 + y: 0.7 + } + size { + x: 600.0 + y: 300.0 + } + color { + x: 0.525 + y: 0.525 + z: 0.525 + } + type: TYPE_TEXT + text: "Your donation helps me stay engaged in creating valuable projects for Defold.\n" + "\n" + "If you appreciate what I\'m doing, please consider supporting me!" + font: "text_bold" + id: "text_support" + pivot: PIVOT_W + line_break: true + parent: "root" + inherit_alpha: true + outline_alpha: 0.0 + shadow_alpha: 0.0 +} +nodes { + position { + x: -170.0 + y: -364.0 + } + type: TYPE_BOX + texture: "druid_example/icon_heart" + id: "icon_heart1" + parent: "root" + inherit_alpha: true + alpha: 0.75 + size_mode: SIZE_MODE_AUTO +} +nodes { + position { + y: -364.0 + } + type: TYPE_BOX + texture: "druid_example/icon_heart" + id: "icon_heart2" + parent: "root" + inherit_alpha: true + alpha: 0.75 + size_mode: SIZE_MODE_AUTO +} +nodes { + position { + x: 170.0 + y: -364.0 + } + type: TYPE_BOX + texture: "druid_example/icon_heart" + id: "icon_heart3" + parent: "root" + inherit_alpha: true + alpha: 0.75 + size_mode: SIZE_MODE_AUTO +} +nodes { + position { + y: -450.0 + } + size { + x: 500.0 + y: 80.0 + } + type: TYPE_BOX + id: "sponsor" + parent: "root" + inherit_alpha: true + size_mode: SIZE_MODE_AUTO + visible: false +} +nodes { + position { + x: -196.0 + y: -3.0 + } + type: TYPE_BOX + texture: "druid_logo/sponsor_github" + id: "sponsor_github" + parent: "sponsor" + layer: "druid_logo" + inherit_alpha: true + alpha: 0.75 + size_mode: SIZE_MODE_AUTO +} +nodes { + position { + x: 21.0 + y: -3.0 + } + type: TYPE_BOX + texture: "druid_logo/sponsor_coffee" + id: "sponsor_coffee" + parent: "sponsor" + layer: "druid_logo" + inherit_alpha: true + alpha: 0.75 + size_mode: SIZE_MODE_AUTO +} +nodes { + position { + x: 217.0 + y: -3.0 + } + type: TYPE_BOX + texture: "druid_logo/sponsor_kofi" + id: "sponsor_kofi" + parent: "sponsor" + layer: "druid_logo" + inherit_alpha: true + alpha: 0.75 + size_mode: SIZE_MODE_AUTO +} +layers { + name: "druid_logo" +} +layers { + name: "text_regular" +} +material: "/builtins/materials/gui.material" +adjust_reference: ADJUST_REFERENCE_PARENT diff --git a/example/examples/intro/how_to_use_example/how_to_use_example.lua b/example/examples/intro/how_to_use_example/how_to_use_example.lua new file mode 100644 index 0000000..6f7c922 --- /dev/null +++ b/example/examples/intro/how_to_use_example/how_to_use_example.lua @@ -0,0 +1,28 @@ +---@class examples.how_to_use_example: druid.widget +---@field root node +local M = {} + + +function M:init() + self.root = self:get_node("root") + + self.druid:new_rich_text("text_hello", "Hello!") + + self.druid:new_button("sponsor_github", self.open_link, "https://github.com/sponsors/insality") + self.druid:new_button("sponsor_coffee", self.open_link, "https://www.buymeacoffee.com/insality") + self.druid:new_button("sponsor_kofi", self.open_link, "https://ko-fi.com/insality") + + self.druid:new_layout("sponsor") + :add("sponsor_github") + :add("sponsor_coffee") + :add("sponsor_kofi") + :set_margin(8, 0) +end + + +function M:open_link(link) + sys.open_url(link, { target = "_blank" }) +end + + +return M diff --git a/example/examples/intro/intro/intro.gui b/example/examples/intro/intro/intro.gui index 834e285..78283a9 100644 --- a/example/examples/intro/intro/intro.gui +++ b/example/examples/intro/intro/intro.gui @@ -7,8 +7,8 @@ fonts { font: "/example/assets/fonts/text_regular.font" } textures { - name: "druid" - texture: "/example/assets/druid.atlas" + name: "druid_example" + texture: "/example/assets/druid_example.atlas" } textures { name: "druid_logo" @@ -25,7 +25,7 @@ nodes { z: 0.204 } type: TYPE_BOX - texture: "druid/ui_circle_64" + texture: "druid_example/ui_circle_64" id: "root" inherit_alpha: true slice9 { @@ -158,7 +158,7 @@ nodes { y: -364.0 } type: TYPE_BOX - texture: "druid/icon_heart" + texture: "druid_example/icon_heart" id: "icon_heart1" parent: "root" inherit_alpha: true @@ -170,7 +170,7 @@ nodes { y: -364.0 } type: TYPE_BOX - texture: "druid/icon_heart" + texture: "druid_example/icon_heart" id: "icon_heart2" parent: "root" inherit_alpha: true @@ -183,7 +183,7 @@ nodes { y: -364.0 } type: TYPE_BOX - texture: "druid/icon_heart" + texture: "druid_example/icon_heart" id: "icon_heart3" parent: "root" inherit_alpha: true diff --git a/example/examples/intro/intro/intro.lua b/example/examples/intro/intro/intro.lua index 4473ba1..798429e 100644 --- a/example/examples/intro/intro/intro.lua +++ b/example/examples/intro/intro/intro.lua @@ -1,33 +1,28 @@ -local component = require("druid.component") -local rich_text = require("druid.custom.rich_text.rich_text") -local layout = require("druid.extended.layout") local panthera = require("panthera.panthera") local intro_panthera = require("example.examples.intro.intro.intro_panthera") ----@class intro: druid.base_component ----@field druid druid_instance +---@class examples.intro: druid.widget ---@field root node -local M = component.create("intro") +---@field animation panthera.animation +local M = {} ----@param template string ----@param nodes table -function M:init(template, nodes) - self.druid = self:get_druid(template, nodes) + +function M:init() self.root = self:get_node("root") - self.druid:new(rich_text, "text_hello", "Hello!") + self.druid:new_rich_text("text_hello", "Hello!") self.druid:new_button("sponsor_github", self.open_link, "https://github.com/sponsors/insality") self.druid:new_button("sponsor_coffee", self.open_link, "https://www.buymeacoffee.com/insality") self.druid:new_button("sponsor_kofi", self.open_link, "https://ko-fi.com/insality") - self.druid:new(layout, "sponsor") + self.druid:new_layout("sponsor") :add("sponsor_github") :add("sponsor_coffee") :add("sponsor_kofi") :set_margin(8, 0) - self.animation = panthera.create_gui(intro_panthera, self:get_template(), nodes) + self.animation = panthera.create_gui(intro_panthera, self:get_template(), self:get_nodes()) panthera.play(self.animation, "idle", { is_loop = true }) end @@ -37,4 +32,9 @@ function M:open_link(link) end +function M:on_remove() + panthera.stop(self.animation) +end + + return M diff --git a/example/examples/layout/basic/basic_layout.gui b/example/examples/layout/basic/basic_layout.gui index 4bb12af..ed74c30 100644 --- a/example/examples/layout/basic/basic_layout.gui +++ b/example/examples/layout/basic/basic_layout.gui @@ -1,54 +1,20 @@ -script: "" textures { - name: "druid" - texture: "/example/assets/druid.atlas" -} -background_color { - x: 0.0 - y: 0.0 - z: 0.0 - w: 0.0 + name: "druid_example" + texture: "/example/assets/druid_example.atlas" } nodes { - position { - x: 0.0 - y: 0.0 - z: 0.0 - w: 1.0 - } - rotation { - x: 0.0 - y: 0.0 - z: 0.0 - w: 1.0 - } - scale { - x: 1.0 - y: 1.0 - z: 1.0 - w: 1.0 - } size { x: 500.0 y: 500.0 - z: 0.0 - w: 1.0 } color { x: 0.173 y: 0.184 z: 0.204 - w: 1.0 } type: TYPE_BOX - blend_mode: BLEND_MODE_ALPHA - texture: "druid/ui_circle_64" + texture: "druid_example/ui_circle_64" id: "root" - xanchor: XANCHOR_NONE - yanchor: YANCHOR_NONE - pivot: PIVOT_CENTER - adjust_mode: ADJUST_MODE_FIT - layer: "" inherit_alpha: true slice9 { x: 32.0 @@ -56,117 +22,33 @@ nodes { z: 32.0 w: 32.0 } - clipping_mode: CLIPPING_MODE_NONE - clipping_visible: true - clipping_inverted: false - alpha: 1.0 - template_node_child: false - size_mode: SIZE_MODE_MANUAL - custom_type: 0 - enabled: true - visible: true - material: "" } nodes { - position { - x: 0.0 - y: 0.0 - z: 0.0 - w: 1.0 - } - rotation { - x: 0.0 - y: 0.0 - z: 0.0 - w: 1.0 - } - scale { - x: 1.0 - y: 1.0 - z: 1.0 - w: 1.0 - } size { x: 500.0 y: 500.0 - z: 0.0 - w: 1.0 - } - color { - x: 1.0 - y: 1.0 - z: 1.0 - w: 1.0 } type: TYPE_BOX - blend_mode: BLEND_MODE_ALPHA - texture: "druid/empty" + texture: "druid_example/empty" id: "layout" - xanchor: XANCHOR_NONE - yanchor: YANCHOR_NONE - pivot: PIVOT_CENTER - adjust_mode: ADJUST_MODE_FIT parent: "root" - layer: "" inherit_alpha: true - slice9 { - x: 0.0 - y: 0.0 - z: 0.0 - w: 0.0 - } - clipping_mode: CLIPPING_MODE_NONE - clipping_visible: true - clipping_inverted: false - alpha: 1.0 - template_node_child: false - size_mode: SIZE_MODE_MANUAL - custom_type: 0 - enabled: true visible: false - material: "" } nodes { - position { - x: 0.0 - y: 0.0 - z: 0.0 - w: 1.0 - } - rotation { - x: 0.0 - y: 0.0 - z: 0.0 - w: 1.0 - } - scale { - x: 1.0 - y: 1.0 - z: 1.0 - w: 1.0 - } size { x: 70.0 y: 40.0 - z: 0.0 - w: 1.0 } color { x: 0.631 y: 0.843 z: 0.961 - w: 1.0 } type: TYPE_BOX - blend_mode: BLEND_MODE_ALPHA - texture: "druid/ui_circle_16" + texture: "druid_example/ui_circle_16" id: "prefab" - xanchor: XANCHOR_NONE - yanchor: YANCHOR_NONE - pivot: PIVOT_CENTER - adjust_mode: ADJUST_MODE_FIT parent: "layout" - layer: "" inherit_alpha: true slice9 { x: 8.0 @@ -174,17 +56,6 @@ nodes { z: 8.0 w: 8.0 } - clipping_mode: CLIPPING_MODE_NONE - clipping_visible: true - clipping_inverted: false - alpha: 1.0 - template_node_child: false - size_mode: SIZE_MODE_MANUAL - custom_type: 0 - enabled: true - visible: true - material: "" } material: "/builtins/materials/gui.material" adjust_reference: ADJUST_REFERENCE_PARENT -max_nodes: 512 diff --git a/example/examples/layout/basic/basic_layout.lua b/example/examples/layout/basic/basic_layout.lua index f6805e1..710af3c 100644 --- a/example/examples/layout/basic/basic_layout.lua +++ b/example/examples/layout/basic/basic_layout.lua @@ -1,11 +1,12 @@ local helper = require("druid.helper") -local component = require("druid.component") local layout = require("druid.extended.layout") ----@class basic_layout: druid.base_component ----@field druid druid_instance +---@class examples.basic_layout: druid.widget ---@field root node -local M = component.create("basic_layout") +---@field layout druid.layout +---@field prefab node +---@field nodes table +local M = {} local PIVOTS = { gui.PIVOT_CENTER, @@ -20,11 +21,7 @@ local PIVOTS = { } ----@param template string ----@param nodes table -function M:init(template, nodes) - self.druid = self:get_druid(template, nodes) - +function M:init() self.root = self:get_node("root") self.layout = self.druid:new(layout, "layout", "horizontal_wrap") @@ -73,4 +70,79 @@ function M:on_remove() end +---@param properties_panel properties_panel +function M:properties_control(properties_panel) + + properties_panel:add_slider("ui_padding", 0, function(value) + local padding = math.floor((value * 64) * 100) / 100 + self.layout:set_padding(padding, padding, padding, padding) + end) + + properties_panel:add_slider("ui_margin_x", 0, function(value) + local margin = math.floor((value * 64) * 100) / 100 + self.layout:set_margin(margin, nil) + end) + + properties_panel:add_slider("ui_margin_y", 0, function(value) + local margin = math.floor((value * 64) * 100) / 100 + self.layout:set_margin(nil, margin) + end) + + properties_panel:add_checkbox("ui_justify", false, function(value) + self.layout:set_justify(value) + end) + + local pivot_index = 1 + local pivot_list = { + gui.PIVOT_CENTER, + gui.PIVOT_W, + gui.PIVOT_SW, + gui.PIVOT_S, + gui.PIVOT_SE, + gui.PIVOT_E, + gui.PIVOT_NE, + gui.PIVOT_N, + gui.PIVOT_NW, + } + + properties_panel:add_button("ui_pivot_next", function() + pivot_index = pivot_index + 1 + if pivot_index > #pivot_list then + pivot_index = 1 + end + self:set_pivot(pivot_list[pivot_index]) + end) + + local type_index = 1 + local type_list = { + "horizontal_wrap", + "horizontal", + "vertical", + } + + properties_panel:add_button("ui_type_next", function() + type_index = type_index + 1 + if type_index > #type_list then + type_index = 1 + end + self.layout:set_type(type_list[type_index]) + end) +end + + +---@return string +function M:get_debug_info() + local layout = self.layout + local p = layout.padding + local info = "" + info = info .. "Layout: " .. layout.type .. "\n" + info = info .. "Padding: " .. math.floor(p.x) .. " " .. math.floor(p.y) .. " " .. math.floor(p.z) .. " " .. math.floor(p.w) .. "\n" + info = info .. "Margin: " .. layout.margin.x .. " " .. layout.margin.y .. "\n" + info = info .. "Justify: " .. tostring(layout.is_justify) .. "\n" + info = info .. "Pivot: " .. tostring(gui.get_pivot(layout.node)) .. "\n" + + return info +end + + return M diff --git a/example/examples/layout/examples_list.lua b/example/examples/layout/examples_list.lua index 3dc15ba..3c03a28 100644 --- a/example/examples/layout/examples_list.lua +++ b/example/examples/layout/examples_list.lua @@ -10,82 +10,10 @@ function M.get_examples() template = "basic_layout", root = "basic_layout/root", code_url = "example/examples/layout/basic/basic_layout.lua", - component_class = require("example.examples.layout.basic.basic_layout"), - properties_control = function(instance, properties_panel) - ---@cast instance basic_layout - - properties_panel:add_slider("ui_padding", 0, function(value) - local padding = math.floor((value * 64) * 100) / 100 - instance.layout:set_padding(vmath.vector4(padding)) - end) - - properties_panel:add_slider("ui_margin_x", 0, function(value) - local margin = math.floor((value * 64) * 100) / 100 - instance.layout:set_margin(margin, nil) - end) - - properties_panel:add_slider("ui_margin_y", 0, function(value) - local margin = math.floor((value * 64) * 100) / 100 - instance.layout:set_margin(nil, margin) - end) - - properties_panel:add_checkbox("ui_justify", false, function(value) - instance.layout:set_justify(value) - end) - - local pivot_index = 1 - local pivot_list = { - gui.PIVOT_CENTER, - gui.PIVOT_W, - gui.PIVOT_SW, - gui.PIVOT_S, - gui.PIVOT_SE, - gui.PIVOT_E, - gui.PIVOT_NE, - gui.PIVOT_N, - gui.PIVOT_NW, - } - - properties_panel:add_button("ui_pivot_next", function() - pivot_index = pivot_index + 1 - if pivot_index > #pivot_list then - pivot_index = 1 - end - instance:set_pivot(pivot_list[pivot_index]) - end) - - - local type_index = 1 - local type_list = { - "horizontal_wrap", - "horizontal", - "vertical", - } - - properties_panel:add_button("ui_type_next", function() - type_index = type_index + 1 - if type_index > #type_list then - type_index = 1 - end - instance.layout:set_type(type_list[type_index]) - end) - end, - get_debug_info = function(instance) - ---@cast instance basic_layout - local layout = instance.layout - local p = layout.padding - local info = "" - info = info .. "Layout: " .. layout.type .. "\n" - info = info .. "Padding: " .. math.floor(p.x) .. " " .. math.floor(p.y) .. " " .. math.floor(p.z) .. " " .. math.floor(p.w) .. "\n" - info = info .. "Margin: " .. layout.margin.x .. " " .. layout.margin.y .. "\n" - info = info .. "Justify: " .. tostring(layout.is_justify) .. "\n" - info = info .. "Pivot: " .. tostring(gui.get_pivot(layout.node)) .. "\n" - - return info - end + widget_class = require("example.examples.layout.basic.basic_layout"), } } end -return M \ No newline at end of file +return M diff --git a/example/examples/panthera/animation_blend/animation_blend.gui b/example/examples/panthera/animation_blend/animation_blend.gui index eb98b38..b6a0e2e 100644 --- a/example/examples/panthera/animation_blend/animation_blend.gui +++ b/example/examples/panthera/animation_blend/animation_blend.gui @@ -7,8 +7,8 @@ textures { texture: "/example/examples/panthera/animation_blend/assets/animation_blend.atlas" } textures { - name: "druid" - texture: "/example/assets/druid.atlas" + name: "druid_example" + texture: "/example/assets/druid_example.atlas" } nodes { size { @@ -21,7 +21,7 @@ nodes { z: 0.204 } type: TYPE_BOX - texture: "druid/ui_circle_64" + texture: "druid_example/ui_circle_64" id: "root" inherit_alpha: true slice9 { diff --git a/example/examples/panthera/animation_blend/animation_blend.lua b/example/examples/panthera/animation_blend/animation_blend.lua index cbd5ea6..5078ba4 100644 --- a/example/examples/panthera/animation_blend/animation_blend.lua +++ b/example/examples/panthera/animation_blend/animation_blend.lua @@ -1,37 +1,35 @@ local panthera = require("panthera.panthera") -local component = require("druid.component") local helper = require("druid.helper") -local event = require("druid.event") -local lang_text = require("druid.extended.lang_text") -local rich_text = require("druid.custom.rich_text.rich_text") +local event = require("event.event") local character_animation_blend = require("example.examples.panthera.animation_blend.character_animation_blend") ----@class animation_blend: druid.base_component +---@class examples.animation_blend: druid.widget ---@field root node ----@field druid druid_instance -local M = component.create("animation_blend") +---@field root_size vector3 +---@field animation_idle panthera.animation +---@field animation_vertical panthera.animation +---@field animation_horizontal panthera.animation +---@field rich_text druid.rich_text +---@field on_update event +local M = {} ----@param template string ----@param nodes table -function M:init(template, nodes) - self.druid = self:get_druid(template, nodes) - +function M:init() self.root = self:get_node("root") self.root_size = gui.get_size(self.root) - self.druid:new(lang_text, "text_hint", "ui_example_panthera_animation_blend_hint") + self.druid:new_lang_text("text_hint", "ui_example_panthera_animation_blend_hint") - self.animation_idle = panthera.create_gui(character_animation_blend, self:get_template(), nodes) - self.animation_vertical = panthera.create_gui(character_animation_blend, self:get_template(), nodes) - self.animation_horizontal = panthera.create_gui(character_animation_blend, self:get_template(), nodes) + self.animation_idle = panthera.create_gui(character_animation_blend, self:get_template(), self:get_nodes()) + self.animation_vertical = panthera.create_gui(character_animation_blend, self:get_template(), self:get_nodes()) + self.animation_horizontal = panthera.create_gui(character_animation_blend, self:get_template(), self:get_nodes()) panthera.play(self.animation_idle, "idle", { is_loop = true, }) self:setup_rich_text() - self.on_update = event() + self.on_update = event.create() end @@ -40,13 +38,13 @@ end function M:on_input(action_id, action) if action_id == nil and gui.pick_node(self.root, action.x, action.y) then local root_screen_pos = gui.get_screen_position(self.root) - local gui_scale = helper.get_gui_scale() + local koef_x, koef_y = helper.get_screen_aspect_koef() - local dx = (action.screen_x - root_screen_pos.x) / gui_scale -- -root_size.x / 2 .. root_size.x / 2 + local dx = (action.screen_x - root_screen_pos.x) * koef_x -- -root_size.x / 2 .. root_size.x / 2 local animation_progress_x = (dx + self.root_size.x / 2) / self.root_size.x -- 0 .. 1 panthera.set_time(self.animation_horizontal, "horizontal", animation_progress_x) - local dy = (action.screen_y - root_screen_pos.y) / gui_scale -- -root_size.y / 2 .. root_size.y / 2 + local dy = (action.screen_y - root_screen_pos.y) * koef_y -- -root_size.y / 2 .. root_size.y / 2 local animation_progress_y = (dy + self.root_size.y / 2) / self.root_size.y -- 0 .. 1 panthera.set_time(self.animation_vertical, "vertical", animation_progress_y) end @@ -59,7 +57,7 @@ end function M:setup_rich_text() - self.rich_text = self.druid:new(rich_text, "rich_text_kenney", "Character assets by Kenney") + self.rich_text = self.druid:new_rich_text("rich_text_kenney", "Character assets by Kenney") local tagged = self.rich_text:tagged("link") for index = 1, #tagged do @@ -72,4 +70,25 @@ function M:setup_rich_text() end +---@param properties_panel properties_panel +function M:properties_control(properties_panel) + local vertical_time = panthera.get_time(self.animation_vertical) + + local vertical_slider = properties_panel:add_slider("ui_animation_vertical", vertical_time, function(value) + panthera.set_time(self.animation_vertical, "vertical", value) + end) + + local horizontal_time = panthera.get_time(self.animation_horizontal) + + local horizontal_slider = properties_panel:add_slider("ui_animation_horizontal", horizontal_time, function(value) + panthera.set_time(self.animation_horizontal, "horizontal", value) + end) + + self.on_update:subscribe(function() + vertical_slider:set_value(panthera.get_time(self.animation_vertical)) + horizontal_slider:set_value(panthera.get_time(self.animation_horizontal)) + end) +end + + return M diff --git a/example/examples/panthera/animation_blend/assets/animation_blend.atlas b/example/examples/panthera/animation_blend/assets/animation_blend.atlas index 5ce1d2b..d81ed7c 100644 --- a/example/examples/panthera/animation_blend/assets/animation_blend.atlas +++ b/example/examples/panthera/animation_blend/assets/animation_blend.atlas @@ -1,46 +1,31 @@ images { image: "/example/examples/panthera/animation_blend/assets/facial_part_eye_open.png" - sprite_trim_mode: SPRITE_TRIM_MODE_OFF } images { image: "/example/examples/panthera/animation_blend/assets/facial_part_eyebrow_b.png" - sprite_trim_mode: SPRITE_TRIM_MODE_OFF } images { image: "/example/examples/panthera/animation_blend/assets/facial_part_mouth_happy.png" - sprite_trim_mode: SPRITE_TRIM_MODE_OFF } images { image: "/example/examples/panthera/animation_blend/assets/facial_part_mouth_smirk.png" - sprite_trim_mode: SPRITE_TRIM_MODE_OFF } images { image: "/example/examples/panthera/animation_blend/assets/pink_body_squircle.png" - sprite_trim_mode: SPRITE_TRIM_MODE_OFF } images { image: "/example/examples/panthera/animation_blend/assets/pink_hand_closed.png" - sprite_trim_mode: SPRITE_TRIM_MODE_OFF } images { image: "/example/examples/panthera/animation_blend/assets/pink_hand_open.png" - sprite_trim_mode: SPRITE_TRIM_MODE_OFF } images { image: "/example/examples/panthera/animation_blend/assets/pink_hand_point.png" - sprite_trim_mode: SPRITE_TRIM_MODE_OFF } images { image: "/example/examples/panthera/animation_blend/assets/shadow.png" - sprite_trim_mode: SPRITE_TRIM_MODE_OFF } images { image: "/example/examples/panthera/animation_blend/assets/facial_part_eye_half_top.png" - sprite_trim_mode: SPRITE_TRIM_MODE_OFF } -margin: 0 extrude_borders: 2 -inner_padding: 0 -max_page_width: 0 -max_page_height: 0 -rename_patterns: "" diff --git a/example/examples/panthera/basic_animation/basic_animation.gui b/example/examples/panthera/basic_animation/basic_animation.gui index fef1c91..c51399b 100644 --- a/example/examples/panthera/basic_animation/basic_animation.gui +++ b/example/examples/panthera/basic_animation/basic_animation.gui @@ -1,241 +1,36 @@ -script: "" textures { - name: "druid" - texture: "/example/assets/druid.atlas" -} -background_color { - x: 0.0 - y: 0.0 - z: 0.0 - w: 0.0 + name: "druid_example" + texture: "/example/assets/druid_example.atlas" } nodes { - position { - x: 0.0 - y: 0.0 - z: 0.0 - w: 1.0 - } - rotation { - x: 0.0 - y: 0.0 - z: 0.0 - w: 1.0 - } - scale { - x: 1.0 - y: 1.0 - z: 1.0 - w: 1.0 - } size { x: 200.0 y: 100.0 - z: 0.0 - w: 1.0 - } - color { - x: 1.0 - y: 1.0 - z: 1.0 - w: 1.0 } type: TYPE_BOX - blend_mode: BLEND_MODE_ALPHA - texture: "" id: "root" - xanchor: XANCHOR_NONE - yanchor: YANCHOR_NONE - pivot: PIVOT_CENTER - adjust_mode: ADJUST_MODE_FIT - layer: "" inherit_alpha: true - slice9 { - x: 0.0 - y: 0.0 - z: 0.0 - w: 0.0 - } - clipping_mode: CLIPPING_MODE_NONE - clipping_visible: true - clipping_inverted: false - alpha: 1.0 - template_node_child: false size_mode: SIZE_MODE_AUTO - custom_type: 0 - enabled: true visible: false - material: "" } nodes { - position { - x: 0.0 - y: 0.0 - z: 0.0 - w: 1.0 - } - rotation { - x: 0.0 - y: 0.0 - z: 0.0 - w: 1.0 - } - scale { - x: 1.0 - y: 1.0 - z: 1.0 - w: 1.0 - } - size { - x: 200.0 - y: 100.0 - z: 0.0 - w: 1.0 - } - color { - x: 1.0 - y: 1.0 - z: 1.0 - w: 1.0 - } type: TYPE_TEMPLATE id: "button" parent: "root" - layer: "" inherit_alpha: true - alpha: 1.0 template: "/example/templates/button_text_blue.gui" - template_node_child: false - custom_type: 0 - enabled: true } nodes { - position { - x: 0.0 - y: 0.0 - z: 0.0 - w: 1.0 - } - rotation { - x: 0.0 - y: 0.0 - z: 0.0 - w: 1.0 - } - scale { - x: 1.0 - y: 1.0 - z: 1.0 - w: 1.0 - } - size { - x: 280.0 - y: 90.0 - z: 0.0 - w: 1.0 - } - color { - x: 0.631 - y: 0.843 - z: 0.961 - w: 1.0 - } type: TYPE_BOX - blend_mode: BLEND_MODE_ALPHA - texture: "druid/ui_circle_32" id: "button/root" - xanchor: XANCHOR_NONE - yanchor: YANCHOR_NONE - pivot: PIVOT_CENTER - adjust_mode: ADJUST_MODE_FIT parent: "button" - layer: "druid" - inherit_alpha: true - slice9 { - x: 16.0 - y: 16.0 - z: 16.0 - w: 16.0 - } - clipping_mode: CLIPPING_MODE_NONE - clipping_visible: true - clipping_inverted: false - alpha: 1.0 template_node_child: true - size_mode: SIZE_MODE_MANUAL - custom_type: 0 - enabled: true - visible: true - material: "" } nodes { - position { - x: 0.0 - y: 0.0 - z: 0.0 - w: 1.0 - } - rotation { - x: 0.0 - y: 0.0 - z: 0.0 - w: 1.0 - } - scale { - x: 1.0 - y: 1.0 - z: 1.0 - w: 1.0 - } - size { - x: 245.0 - y: 50.0 - z: 0.0 - w: 1.0 - } - color { - x: 0.31 - y: 0.318 - z: 0.322 - w: 1.0 - } type: TYPE_TEXT - blend_mode: BLEND_MODE_ALPHA - text: "Hover Me!" - font: "text_bold" id: "button/text" - xanchor: XANCHOR_NONE - yanchor: YANCHOR_NONE - pivot: PIVOT_CENTER - outline { - x: 1.0 - y: 1.0 - z: 1.0 - w: 1.0 - } - shadow { - x: 1.0 - y: 1.0 - z: 1.0 - w: 1.0 - } - adjust_mode: ADJUST_MODE_FIT - line_break: false parent: "button/root" - layer: "text_bold" - inherit_alpha: true - alpha: 1.0 - outline_alpha: 0.0 - shadow_alpha: 0.0 - overridden_fields: 8 template_node_child: true - text_leading: 1.0 - text_tracking: 0.0 - custom_type: 0 - enabled: true - visible: true - material: "" } material: "/builtins/materials/gui.material" adjust_reference: ADJUST_REFERENCE_PARENT -max_nodes: 512 diff --git a/example/examples/panthera/basic_animation/basic_animation.lua b/example/examples/panthera/basic_animation/basic_animation.lua index b179207..791b57b 100644 --- a/example/examples/panthera/basic_animation/basic_animation.lua +++ b/example/examples/panthera/basic_animation/basic_animation.lua @@ -1,19 +1,15 @@ local panthera = require("panthera.panthera") -local component = require("druid.component") local basic_animation_panthera = require("example.examples.panthera.basic_animation.basic_animation_panthera") ----@class basic_animation: druid.base_component ----@field druid druid_instance -local M = component.create("basic_animation") +---@class examples.basic_animation: druid.widget +---@field animation panthera.animation +---@field button druid.button +local M = {} ----@param template string ----@param nodes table -function M:init(template, nodes) - self.druid = self:get_druid(template, nodes) - - self.animation = panthera.create_gui(basic_animation_panthera, self:get_template(), nodes) +function M:init() + self.animation = panthera.create_gui(basic_animation_panthera, self:get_template(), self:get_nodes()) self.button = self.druid:new_button("button/root", function() panthera.play(self.animation, "on_click", { diff --git a/example/examples/panthera/examples_list.lua b/example/examples/panthera/examples_list.lua index 7f401ee..f086489 100644 --- a/example/examples/panthera/examples_list.lua +++ b/example/examples/panthera/examples_list.lua @@ -10,7 +10,7 @@ function M.get_examples() template = "basic_animation", root = "basic_animation/root", code_url = "example/examples/panthera/basic_animation/basic_animation.lua", - component_class = require("example.examples.panthera.basic_animation.basic_animation"), + widget_class = require("example.examples.panthera.basic_animation.basic_animation"), }, { name_id = "ui_example_panthera_animation_blend", @@ -18,28 +18,9 @@ function M.get_examples() template = "animation_blend", root = "animation_blend/root", code_url = "example/examples/panthera/animation_blend/animation_blend.lua", - component_class = require("example.examples.panthera.animation_blend.animation_blend"), - properties_control = function(instance, properties_panel) - ---@cast instance animation_blend - local vertical_time = panthera.get_time(instance.animation_vertical) - - local vertical_slider = properties_panel:add_slider("ui_animation_vertical", vertical_time, function(value) - panthera.set_time(instance.animation_vertical, "vertical", value) - end) - - local horizontal_time = panthera.get_time(instance.animation_horizontal) - - local horizontal_slider = properties_panel:add_slider("ui_animation_horizontal", horizontal_time, function(value) - panthera.set_time(instance.animation_horizontal, "horizontal", value) - end) - - instance.on_update:subscribe(function() - vertical_slider:set_value(panthera.get_time(instance.animation_vertical)) - horizontal_slider:set_value(panthera.get_time(instance.animation_horizontal)) - end) - end, + widget_class = require("example.examples.panthera.animation_blend.animation_blend"), } } end -return M \ No newline at end of file +return M diff --git a/example/examples/using_widgets/using_widgets.collection b/example/examples/using_widgets/using_widgets.collection new file mode 100644 index 0000000..338906b --- /dev/null +++ b/example/examples/using_widgets/using_widgets.collection @@ -0,0 +1,10 @@ +name: "using_widgets" +scale_along_z: 0 +embedded_instances { + id: "go" + data: "components {\n" + " id: \"using_widgets\"\n" + " component: \"/example/examples/using_widgets/using_widgets.gui\"\n" + "}\n" + "" +} diff --git a/example/examples/using_widgets/using_widgets.gui b/example/examples/using_widgets/using_widgets.gui new file mode 100644 index 0000000..bfd24e8 --- /dev/null +++ b/example/examples/using_widgets/using_widgets.gui @@ -0,0 +1,113 @@ +script: "/example/examples/using_widgets/using_widgets.gui_script" +fonts { + name: "text_bold" + font: "/example/assets/fonts/text_bold.font" +} +fonts { + name: "text_regular" + font: "/example/assets/fonts/text_regular.font" +} +textures { + name: "druid_example" + texture: "/example/assets/druid_example.atlas" +} +nodes { + position { + x: 960.0 + y: 540.0 + } + scale { + x: 2.0 + y: 2.0 + } + type: TYPE_TEMPLATE + id: "fps_panel" + inherit_alpha: true + template: "/druid/widget/fps_panel/fps_panel.gui" +} +nodes { + type: TYPE_BOX + id: "fps_panel/root" + parent: "fps_panel" + template_node_child: true +} +nodes { + type: TYPE_TEMPLATE + id: "fps_panel/mini_graph" + parent: "fps_panel/root" + template_node_child: true +} +nodes { + type: TYPE_BOX + id: "fps_panel/mini_graph/root" + parent: "fps_panel/mini_graph" + template_node_child: true +} +nodes { + type: TYPE_BOX + id: "fps_panel/mini_graph/header" + parent: "fps_panel/mini_graph/root" + template_node_child: true +} +nodes { + type: TYPE_TEXT + id: "fps_panel/mini_graph/text_header" + parent: "fps_panel/mini_graph/header" + template_node_child: true +} +nodes { + type: TYPE_BOX + id: "fps_panel/mini_graph/icon_drag" + parent: "fps_panel/mini_graph/header" + template_node_child: true +} +nodes { + type: TYPE_BOX + id: "fps_panel/mini_graph/content" + parent: "fps_panel/mini_graph/root" + template_node_child: true +} +nodes { + type: TYPE_BOX + id: "fps_panel/mini_graph/prefab_line" + parent: "fps_panel/mini_graph/content" + template_node_child: true +} +nodes { + type: TYPE_BOX + id: "fps_panel/mini_graph/color_low" + parent: "fps_panel/mini_graph/content" + template_node_child: true +} +nodes { + type: TYPE_BOX + id: "fps_panel/content" + parent: "fps_panel/root" + template_node_child: true +} +nodes { + type: TYPE_TEXT + id: "fps_panel/text_min_fps" + parent: "fps_panel/content" + template_node_child: true +} +nodes { + type: TYPE_TEXT + id: "fps_panel/text_fps" + parent: "fps_panel/content" + template_node_child: true +} +nodes { + type: TYPE_BOX + id: "fps_panel/line_second_1" + parent: "fps_panel/content" + template_node_child: true +} +nodes { + type: TYPE_BOX + id: "fps_panel/line_second_2" + parent: "fps_panel/content" + template_node_child: true +} +material: "/builtins/materials/gui.material" +adjust_reference: ADJUST_REFERENCE_PARENT diff --git a/example/examples/using_widgets/using_widgets.gui_script b/example/examples/using_widgets/using_widgets.gui_script new file mode 100644 index 0000000..e92405a --- /dev/null +++ b/example/examples/using_widgets/using_widgets.gui_script @@ -0,0 +1,24 @@ +local druid = require("druid.druid") + +local fps_panel = require("druid.widget.fps_panel.fps_panel") + +function init(self) + self.druid = druid.new(self) + self.fps_panel = self.druid:new_widget(fps_panel, "fps_panel") +end + +function final(self) + self.druid:final() +end + +function update(self, dt) + self.druid:update(dt) +end + +function on_message(self, message_id, message, sender) + self.druid:on_message(message_id, message, sender) +end + +function on_input(self, action_id, action) + return self.druid:on_input(action_id, action) +end diff --git a/example/examples/widgets/examples_list.lua b/example/examples/widgets/examples_list.lua index 6209cdd..0376eb2 100644 --- a/example/examples/widgets/examples_list.lua +++ b/example/examples/widgets/examples_list.lua @@ -9,7 +9,73 @@ function M.get_examples() template = "hover_hint_example", root = "hover_hint_example/root", code_url = "example/examples/widgets/hover_hint/hover_hint_example.lua", - component_class = require("example.examples.widgets.hover_hint.hover_hint_example"), + widget_class = require("example.examples.widgets.hover_hint.hover_hint_example"), + }, + { + name_id = "ui_example_widget_properties_panel", + information_text_id = "ui_example_widget_properties_panel_description", + template = "properties_panel", + root = "properties_panel/root", + code_url = "example/examples/widgets/examples_list.lua", + widget_class = require("druid.widget.properties_panel.properties_panel"), + on_create = function(instance, output_list) + ---@cast instance druid.widget.properties_panel + + instance:add_button(function(button) + button:set_text_button("Button") + button.button.on_click:subscribe(function() + print("Button clicked") + end) + end) + + instance:add_checkbox(function(checkbox) + --print("Checkbox clicked", value) + checkbox:set_text_property("Checkbox") + checkbox.on_change_value:subscribe(function(value) + print("Checkbox clicked", value) + end) + checkbox:set_value(false) + end) + + instance:add_input(function(input) + input:set_text_property("Input") + input:set_text_value("Initial") + input:on_change(function(text) + print("Input changed", text) + end) + end) + + instance:add_left_right_selector(function(selector) + selector:set_template("Arrows Number") + selector.on_change_value:subscribe(function(value) + print("Left Right Selector changed", value) + end) + selector:set_number_type(0, 42, true, 1) + selector:set_value(0) + end) + + instance:add_left_right_selector(function(selector) + selector:set_template("Arrows Array") + selector.on_change_value:subscribe(function(value) + print("Left Right Array value", value) + end) + selector:set_array_type({"Zero", "One", "Two", "Three", "Four", "Five"}, false, 1) + selector:set_value("Zero") + end) + + instance:add_slider(function(slider) + slider:set_text_property("Slider") + slider:set_value(0.5) + slider:on_change(function(value) + print("Slider changed", value) + end) + end) + + instance:add_text(function(text) + text:set_text_property("Text") + text:set_text_value("Hello, World!") + end) + end, }, { name_id = "ui_example_widget_property_button", @@ -17,7 +83,7 @@ function M.get_examples() template = "property_button", root = "property_button/root", code_url = "example/components/properties_panel/properties/property_button.lua", - component_class = require("example.components.properties_panel.properties.property_button"), + widget_class = require("example.components.properties_panel.properties.property_button"), on_create = function(instance, output_list) ---@cast instance property_button instance.button.on_click:subscribe(function() @@ -25,13 +91,21 @@ function M.get_examples() end) end, }, + { + name_id = "ui_example_widget_property_input", + information_text_id = "ui_example_widget_property_input_description", + template = "property_input", + root = "property_input/root", + code_url = "example/examples/widgets/examples_list.lua", + widget_class = require("druid.widget.properties_panel.properties.property_input"), + }, { name_id = "ui_example_widget_property_slider", information_text_id = "ui_example_widget_property_slider_description", template = "property_slider", root = "property_slider/root", code_url = "example/components/properties_panel/properties/property_slider.lua", - component_class = require("example.components.properties_panel.properties.property_slider"), + widget_class = require("example.components.properties_panel.properties.property_slider"), on_create = function(instance, output_list) ---@cast instance property_slider instance.slider.on_change_value:subscribe(function(_, value) @@ -45,7 +119,7 @@ function M.get_examples() template = "property_checkbox", root = "property_checkbox/root", code_url = "example/components/properties_panel/properties/property_checkbox.lua", - component_class = require("example.components.properties_panel.properties.property_checkbox"), + widget_class = require("example.components.properties_panel.properties.property_checkbox"), on_create = function(instance, output_list) ---@cast instance property_checkbox instance.button.on_click:subscribe(function() @@ -53,7 +127,66 @@ function M.get_examples() end) end, }, + { + name_id = "ui_example_widget_memory_panel", + information_text_id = "ui_example_widget_memory_panel_description", + template = "memory_panel", + root = "memory_panel/root", + code_url = "druid/widget/memory_panel/memory_panel.lua", + widget_class = require("druid.widget.memory_panel.memory_panel"), + on_create = function(instance, output_list) + ---@cast instance druid.widget.memory_panel + print("Memory panel created") + end, + }, + { + name_id = "ui_example_widget_fps_panel", + information_text_id = "ui_example_widget_fps_panel_description", + template = "fps_panel", + root = "fps_panel/root", + code_url = "druid/widget/fps_panel/fps_panel.lua", + widget_class = require("druid.widget.fps_panel.fps_panel"), + on_create = function(instance, output_list) + ---@cast instance druid.widget.fps_panel + print("FPS panel created") + end, + }, + { + name_id = "ui_example_widget_mini_graph", + information_text_id = "ui_example_widget_mini_graph_description", + template = "mini_graph", + root = "mini_graph/root", + code_url = "druid/widget/mini_graph/mini_graph.lua", + widget_class = require("druid.widget.mini_graph.mini_graph"), + on_create = function(instance, output_list) + ---@cast instance druid.widget.mini_graph + instance:set_samples(50) + end, + properties_control = function(instance, properties_panel) + ---@cast instance druid.widget.mini_graph + properties_panel:add_slider("value", 0.5, function(value) + -- Remap to -1, 2 + value = value * 3 - 1 + for index = 1, 50 do + -- Take value each 0.1 step, the higher value at argument value + local x = index * (1 / 50) + local distance = math.abs(x - value) + local line_v = 1 - distance^2 + + instance:set_line_value(index, line_v) + end + end) + end, + }, + { + name_id = "ui_example_widget_tiling_node", + information_text_id = "ui_example_widget_tiling_node_description", + template = "example_tiling_node", + root = "example_tiling_node/root", + code_url = "example/examples/widgets/tiling_node/example_tiling_node.lua", + widget_class = require("example.examples.widgets.tiling_node.example_tiling_node"), + } } end -return M \ No newline at end of file +return M diff --git a/example/examples/widgets/fps_panel/example_fps_panel.gui b/example/examples/widgets/fps_panel/example_fps_panel.gui new file mode 100644 index 0000000..4f01f77 --- /dev/null +++ b/example/examples/widgets/fps_panel/example_fps_panel.gui @@ -0,0 +1,104 @@ +nodes { + size { + x: 200.0 + y: 100.0 + } + type: TYPE_BOX + id: "root" + inherit_alpha: true + size_mode: SIZE_MODE_AUTO + visible: false +} +nodes { + type: TYPE_TEMPLATE + id: "fps_panel" + parent: "root" + inherit_alpha: true + template: "/druid/widget/fps_panel/fps_panel.gui" +} +nodes { + type: TYPE_BOX + id: "fps_panel/root" + parent: "fps_panel" + template_node_child: true +} +nodes { + type: TYPE_TEMPLATE + id: "fps_panel/mini_graph" + parent: "fps_panel/root" + template_node_child: true +} +nodes { + type: TYPE_BOX + id: "fps_panel/mini_graph/root" + parent: "fps_panel/mini_graph" + template_node_child: true +} +nodes { + type: TYPE_BOX + id: "fps_panel/mini_graph/header" + parent: "fps_panel/mini_graph/root" + template_node_child: true +} +nodes { + type: TYPE_TEXT + id: "fps_panel/mini_graph/text_header" + parent: "fps_panel/mini_graph/header" + template_node_child: true +} +nodes { + type: TYPE_BOX + id: "fps_panel/mini_graph/icon_drag" + parent: "fps_panel/mini_graph/header" + template_node_child: true +} +nodes { + type: TYPE_BOX + id: "fps_panel/mini_graph/content" + parent: "fps_panel/mini_graph/root" + template_node_child: true +} +nodes { + type: TYPE_BOX + id: "fps_panel/mini_graph/prefab_line" + parent: "fps_panel/mini_graph/content" + template_node_child: true +} +nodes { + type: TYPE_BOX + id: "fps_panel/mini_graph/color_low" + parent: "fps_panel/mini_graph/content" + template_node_child: true +} +nodes { + type: TYPE_BOX + id: "fps_panel/content" + parent: "fps_panel/root" + template_node_child: true +} +nodes { + type: TYPE_TEXT + id: "fps_panel/text_min_fps" + parent: "fps_panel/content" + template_node_child: true +} +nodes { + type: TYPE_TEXT + id: "fps_panel/text_fps" + parent: "fps_panel/content" + template_node_child: true +} +nodes { + type: TYPE_BOX + id: "fps_panel/line_second_1" + parent: "fps_panel/content" + template_node_child: true +} +nodes { + type: TYPE_BOX + id: "fps_panel/line_second_2" + parent: "fps_panel/content" + template_node_child: true +} +material: "/builtins/materials/gui.material" +adjust_reference: ADJUST_REFERENCE_PARENT diff --git a/example/examples/widgets/fps_panel/example_fps_panel.lua b/example/examples/widgets/fps_panel/example_fps_panel.lua new file mode 100644 index 0000000..a26b10c --- /dev/null +++ b/example/examples/widgets/fps_panel/example_fps_panel.lua @@ -0,0 +1,12 @@ +local fps_panel = require("druid.widget.fps_panel.fps_panel") + +---@class examples.example_fps_panel: druid.widget +local M = {} + + +function M:init() + self.fps_panel = self.druid:new_widget(fps_panel, "fps_panel") +end + + +return M diff --git a/example/examples/widgets/go_widgets/go_widget.gui b/example/examples/widgets/go_widgets/go_widget.gui new file mode 100644 index 0000000..984279e --- /dev/null +++ b/example/examples/widgets/go_widgets/go_widget.gui @@ -0,0 +1,108 @@ +script: "/druid/druid_widget.gui_script" +fonts { + name: "druid_text_bold" + font: "/example/assets/fonts/gui_world/druid_gui_world_text_bold.font" +} +textures { + name: "druid" + texture: "/druid/druid.atlas" +} +nodes { + type: TYPE_BOX + texture: "druid/empty" + id: "root" + inherit_alpha: true + size_mode: SIZE_MODE_AUTO +} +nodes { + position { + y: 150.0 + } + size { + x: 200.0 + y: 100.0 + } + type: TYPE_BOX + id: "group" + parent: "root" + inherit_alpha: true + size_mode: SIZE_MODE_AUTO + visible: false +} +nodes { + size { + x: 400.0 + y: 40.0 + } + color { + x: 0.886 + y: 0.518 + z: 0.518 + } + type: TYPE_BOX + texture: "druid/ui_circle_32" + id: "circle" + parent: "group" + inherit_alpha: true + slice9 { + x: 16.0 + y: 16.0 + z: 16.0 + w: 16.0 + } +} +nodes { + position { + x: -200.0 + } + size { + x: 400.0 + y: 40.0 + } + color { + x: 0.447 + y: 0.784 + z: 0.522 + } + type: TYPE_BOX + texture: "druid/ui_circle_32" + id: "green" + pivot: PIVOT_W + parent: "circle" + inherit_alpha: true + slice9 { + x: 16.0 + y: 16.0 + z: 16.0 + w: 16.0 + } +} +nodes { + size { + x: 400.0 + y: 40.0 + } + color { + x: 0.173 + y: 0.184 + z: 0.204 + } + type: TYPE_TEXT + text: "20" + font: "druid_text_bold" + id: "text" + parent: "group" + inherit_alpha: true + outline_alpha: 0.0 + shadow_alpha: 0.0 +} +material: "/druid/materials/gui_world/gui_world.material" +adjust_reference: ADJUST_REFERENCE_DISABLED +materials { + name: "gui_tiling_node" + material: "/druid/custom/tiling_node/gui_tiling_node.material" +} +materials { + name: "gui_stencil" + material: "/druid/materials/stencil/gui_stencil.material" +} diff --git a/example/examples/widgets/go_widgets/go_widget.lua b/example/examples/widgets/go_widgets/go_widget.lua new file mode 100644 index 0000000..3353142 --- /dev/null +++ b/example/examples/widgets/go_widgets/go_widget.lua @@ -0,0 +1,35 @@ +local panthera = require("panthera.panthera") + +local animation = require("example.examples.widgets.go_widgets.go_widget_panthera") + +---@class examples.widget.go_widget: druid.widget +local M = {} + + +function M:init() + self.root = self:get_node("root") + self.circle = self:get_node("circle") + self.animation = panthera.create_gui(animation) + self.counter = 0 + self.text_counter = self:get_node("text") + gui.set_text(self.text_counter, 0) +end + + +function M:play_animation() + panthera.play(self.animation, "default", { + is_loop = true, + callback = function() + self.counter = self.counter + 1 + gui.set_text(self.text_counter, self.counter) + end + }) +end + + +---@param position vector3 The position to set +function M:set_position(position) + gui.set_position(self.root, position) +end + +return M diff --git a/example/examples/widgets/go_widgets/go_widget_panthera.lua b/example/examples/widgets/go_widgets/go_widget_panthera.lua new file mode 100644 index 0000000..25ef78a --- /dev/null +++ b/example/examples/widgets/go_widgets/go_widget_panthera.lua @@ -0,0 +1,66 @@ +return { + data = { + animations = { + { + animation_id = "default", + animation_keys = { + { + duration = 0.9, + easing = "outsine", + end_value = -180, + key_type = "tween", + node_id = "text", + property_id = "position_x", + }, + { + duration = 0.95, + easing = "outsine", + end_value = 40, + key_type = "tween", + node_id = "green", + property_id = "size_x", + start_value = 400, + }, + { + duration = 0.37, + easing = "insine", + end_value = 400, + key_type = "tween", + node_id = "green", + property_id = "size_x", + start_time = 1.08, + start_value = 40, + }, + { + duration = 0.71, + easing = "outsine", + key_type = "tween", + node_id = "text", + property_id = "position_x", + start_time = 1.29, + start_value = -180, + }, + }, + duration = 2, + }, + }, + metadata = { + fps = 60, + gizmo_steps = { + }, + gui_path = "/example/examples/widgets/go_widgets/go_widget.gui", + layers = { + }, + settings = { + font_size = 30, + }, + template_animation_paths = { + }, + }, + nodes = { + }, + }, + format = "json", + type = "animation_editor", + version = 1, +} \ No newline at end of file diff --git a/example/examples/widgets/go_widgets/go_with_widget.collection b/example/examples/widgets/go_widgets/go_with_widget.collection new file mode 100644 index 0000000..6179f83 --- /dev/null +++ b/example/examples/widgets/go_widgets/go_with_widget.collection @@ -0,0 +1,93 @@ +name: "go_bindings" +scale_along_z: 0 +embedded_instances { + id: "go" + data: "components {\n" + " id: \"go_widget\"\n" + " component: \"/example/examples/widgets/go_widgets/go_widget.gui\"\n" + "}\n" + "components {\n" + " id: \"go_with_widget\"\n" + " component: \"/example/examples/widgets/go_widgets/go_with_widget.script\"\n" + "}\n" + "embedded_components {\n" + " id: \"sprite\"\n" + " type: \"sprite\"\n" + " data: \"default_animation: \\\"ui_circle_64\\\"\\n" + "material: \\\"/panthera/materials/sprite.material\\\"\\n" + "attributes {\\n" + " name: \\\"color\\\"\\n" + " double_values {\\n" + " v: 0.839\\n" + " v: 0.808\\n" + " v: 0.533\\n" + " v: 1.0\\n" + " }\\n" + "}\\n" + "textures {\\n" + " sampler: \\\"texture_sampler\\\"\\n" + " texture: \\\"/druid/druid.atlas\\\"\\n" + "}\\n" + "\"\n" + " rotation {\n" + " z: 0.70710677\n" + " w: 0.70710677\n" + " }\n" + " scale {\n" + " x: 3.0\n" + " y: 3.0\n" + " }\n" + "}\n" + "embedded_components {\n" + " id: \"sprite_outline\"\n" + " type: \"sprite\"\n" + " data: \"default_animation: \\\"ui_circle_64\\\"\\n" + "material: \\\"/panthera/materials/sprite.material\\\"\\n" + "blend_mode: BLEND_MODE_MULT\\n" + "size {\\n" + " x: 64.0\\n" + " y: 64.0\\n" + "}\\n" + "attributes {\\n" + " name: \\\"color\\\"\\n" + " double_values {\\n" + " v: 0.839\\n" + " v: 0.808\\n" + " v: 0.533\\n" + " v: 1.0\\n" + " }\\n" + "}\\n" + "textures {\\n" + " sampler: \\\"texture_sampler\\\"\\n" + " texture: \\\"/druid/druid.atlas\\\"\\n" + "}\\n" + "\"\n" + " rotation {\n" + " z: 0.70710677\n" + " w: 0.70710677\n" + " }\n" + " scale {\n" + " x: 3.1\n" + " y: 3.1\n" + " }\n" + "}\n" + "" +} +embedded_instances { + id: "camera" + data: "embedded_components {\n" + " id: \"camera\"\n" + " type: \"camera\"\n" + " data: \"aspect_ratio: 1.0\\n" + "fov: 0.7854\\n" + "near_z: 0.1\\n" + "far_z: 1000.0\\n" + "orthographic_projection: 1\\n" + "orthographic_zoom: 0.4\\n" + "\"\n" + "}\n" + "" + position { + z: 10.0 + } +} diff --git a/example/examples/widgets/go_widgets/go_with_widget.script b/example/examples/widgets/go_widgets/go_with_widget.script new file mode 100644 index 0000000..bf0c537 --- /dev/null +++ b/example/examples/widgets/go_widgets/go_with_widget.script @@ -0,0 +1,28 @@ +local panthera = require("panthera.panthera") + +local animation = require("example.examples.widgets.go_widgets.go_with_widget_panthera") + +local druid = require("druid.druid") +local widget = require("example.examples.widgets.go_widgets.go_widget") + +function init(self) + local gui_url = msg.url(nil, nil, "go_widget") + self.go_widget = druid.get_widget(widget, gui_url) + + self.go_widget:play_animation() + self.go_widget:set_position(go.get_position()) + + self.animation = panthera.create_go(animation) + panthera.play(self.animation, "default", { + is_loop = true, + speed = 2, + }) + + msg.post(".", "acquire_input_focus") +end + + +function update(self, dt) + self.go_widget:set_position(go.get_position()) +end + diff --git a/example/examples/widgets/go_widgets/go_with_widget_panthera.lua b/example/examples/widgets/go_widgets/go_with_widget_panthera.lua new file mode 100644 index 0000000..5bb75ba --- /dev/null +++ b/example/examples/widgets/go_widgets/go_with_widget_panthera.lua @@ -0,0 +1,107 @@ +return { + data = { + animations = { + { + animation_id = "default", + animation_keys = { + { + duration = 1.305, + easing = "outsine", + end_value = 706, + key_type = "tween", + node_id = "go", + property_id = "position_x", + start_value = 960, + }, + { + duration = 3.03, + easing = "outsine", + end_value = 1.2, + key_type = "tween", + node_id = "go", + property_id = "scale_x", + start_value = 1, + }, + { + duration = 3.03, + easing = "outsine", + end_value = 1.2, + key_type = "tween", + node_id = "go", + property_id = "scale_y", + start_value = 1, + }, + { + duration = 1.689, + easing = "outsine", + end_value = 271, + key_type = "tween", + node_id = "go", + property_id = "position_y", + start_time = 1.305, + start_value = 540, + }, + { + duration = 1.665, + easing = "outsine", + end_value = 960, + key_type = "tween", + node_id = "go", + property_id = "position_x", + start_time = 2.995, + start_value = 706, + }, + { + duration = 2.97, + easing = "outsine", + end_value = 1, + key_type = "tween", + node_id = "go", + property_id = "scale_x", + start_time = 3.03, + start_value = 1.2, + }, + { + duration = 2.97, + easing = "outsine", + end_value = 1, + key_type = "tween", + node_id = "go", + property_id = "scale_y", + start_time = 3.03, + start_value = 1.2, + }, + { + duration = 1.353, + easing = "outsine", + end_value = 540, + key_type = "tween", + node_id = "go", + property_id = "position_y", + start_time = 4.647, + start_value = 271, + }, + }, + duration = 6, + }, + }, + metadata = { + fps = 60, + gizmo_steps = { + }, + gui_path = "/example/examples/widgets/go_widgets/go_with_widget.collection", + layers = { + }, + settings = { + font_size = 30, + }, + template_animation_paths = { + }, + }, + nodes = { + }, + }, + format = "json", + type = "animation_editor", + version = 1, +} diff --git a/example/examples/widgets/hover_hint/hover_hint.gui b/example/examples/widgets/hover_hint/hover_hint.gui index 9c8190c..f620a93 100644 --- a/example/examples/widgets/hover_hint/hover_hint.gui +++ b/example/examples/widgets/hover_hint/hover_hint.gui @@ -3,8 +3,8 @@ fonts { font: "/example/assets/fonts/text_regular.font" } textures { - name: "druid" - texture: "/example/assets/druid.atlas" + name: "druid_example" + texture: "/example/assets/druid_example.atlas" } nodes { size { @@ -27,7 +27,7 @@ nodes { z: 0.157 } type: TYPE_BOX - texture: "druid/ui_circle_32" + texture: "druid_example/ui_circle_32" id: "panel_hint" parent: "root" inherit_alpha: true diff --git a/example/examples/widgets/hover_hint/hover_hint.lua b/example/examples/widgets/hover_hint/hover_hint.lua index 1578106..f0710a4 100644 --- a/example/examples/widgets/hover_hint/hover_hint.lua +++ b/example/examples/widgets/hover_hint/hover_hint.lua @@ -1,9 +1,7 @@ local helper = require("druid.helper") local druid_const = require("druid.const") -local component = require("druid.component") ----@class hover_hint: druid.base_component ----@field druid druid_instance +---@class examples.hover_hint: druid.widget ---@field root node ---@field panel_hint node ---@field text_hint druid.text @@ -11,7 +9,7 @@ local component = require("druid.component") ---@field is_shown boolean ---@field private _hint_text string ---@field private _hover_timer_id hash -local M = component.create("hover_hint") +local M = {} local TIMER_DELAY = 0.5 local MIN_PANEL_WIDTH = 100 @@ -19,10 +17,7 @@ local MIN_PANEL_HEIGHT = 50 local PANEL_MARGIN = 40 local HINT_OFFSET = 20 ----@param template string -function M:init(template, nodes) - self.druid = self:get_druid(template, nodes) - +function M:init() self.root = self:get_node("root") self.panel_hint = self:get_node("panel_hint") self.text_hint = self.druid:new_text("text_hint") @@ -88,7 +83,7 @@ end ---@private function M:refresh_content(node, hint_text, pivot_point, content_pivot) - self.text_hint:set_to(hint_text) + self.text_hint:set_text(hint_text) local text_width, text_height = self.text_hint:get_text_size() local panel_width = math.max(text_width, MIN_PANEL_WIDTH) + PANEL_MARGIN diff --git a/example/examples/widgets/hover_hint/hover_hint_example.gui b/example/examples/widgets/hover_hint/hover_hint_example.gui index 8bb74a9..da55c14 100644 --- a/example/examples/widgets/hover_hint/hover_hint_example.gui +++ b/example/examples/widgets/hover_hint/hover_hint_example.gui @@ -1,6 +1,6 @@ textures { - name: "druid" - texture: "/example/assets/druid.atlas" + name: "druid_example" + texture: "/example/assets/druid_example.atlas" } nodes { size { @@ -13,7 +13,7 @@ nodes { z: 0.204 } type: TYPE_BOX - texture: "druid/ui_circle_64" + texture: "druid_example/ui_circle_64" id: "root" inherit_alpha: true slice9 { @@ -65,7 +65,7 @@ nodes { z: 0.624 } type: TYPE_BOX - texture: "druid/ui_circle_32" + texture: "druid_example/ui_circle_32" id: "node_yellow" parent: "root" inherit_alpha: true @@ -90,7 +90,7 @@ nodes { z: 0.608 } type: TYPE_BOX - texture: "druid/ui_circle_32" + texture: "druid_example/ui_circle_32" id: "node_red" parent: "root" inherit_alpha: true @@ -115,7 +115,7 @@ nodes { z: 0.961 } type: TYPE_BOX - texture: "druid/ui_circle_32" + texture: "druid_example/ui_circle_32" id: "node_blue" parent: "root" inherit_alpha: true @@ -140,7 +140,7 @@ nodes { z: 0.62 } type: TYPE_BOX - texture: "druid/ui_circle_32" + texture: "druid_example/ui_circle_32" id: "node_green" parent: "root" inherit_alpha: true diff --git a/example/examples/widgets/hover_hint/hover_hint_example.lua b/example/examples/widgets/hover_hint/hover_hint_example.lua index 53633c1..18ad5f8 100644 --- a/example/examples/widgets/hover_hint/hover_hint_example.lua +++ b/example/examples/widgets/hover_hint/hover_hint_example.lua @@ -1,17 +1,10 @@ local hover_hint = require("example.examples.widgets.hover_hint.hover_hint") -local component = require("druid.component") +---@class examples.hover_hint_example: druid.widget +local M = {} ----@class hover_hint_example: druid.component ----@field druid druid_instance -local M = component.create("hover_hint_example") - - ----@param template string ----@param nodes table -function M:init(template, nodes) - self.druid = self:get_druid(template, nodes) - self.hover_hint = self.druid:new(hover_hint, "hover_hint") +function M:init() + self.hover_hint = self.druid:new_widget(hover_hint, "hover_hint") self.hover_hint:add_hover_hint(self:get_node("node_yellow"), "Yellow box", gui.PIVOT_N, gui.PIVOT_S) self.hover_hint:add_hover_hint(self:get_node("node_green"), "Green box", gui.PIVOT_S, gui.PIVOT_N) diff --git a/example/examples/widgets/memory_panel/example_memory_panel.gui b/example/examples/widgets/memory_panel/example_memory_panel.gui new file mode 100644 index 0000000..44ee04a --- /dev/null +++ b/example/examples/widgets/memory_panel/example_memory_panel.gui @@ -0,0 +1,110 @@ +nodes { + size { + x: 200.0 + y: 100.0 + } + type: TYPE_BOX + id: "root" + inherit_alpha: true + size_mode: SIZE_MODE_AUTO + visible: false +} +nodes { + type: TYPE_TEMPLATE + id: "memory_panel" + parent: "root" + inherit_alpha: true + template: "/druid/widget/memory_panel/memory_panel.gui" +} +nodes { + type: TYPE_BOX + id: "memory_panel/root" + parent: "memory_panel" + template_node_child: true +} +nodes { + type: TYPE_TEMPLATE + id: "memory_panel/mini_graph" + parent: "memory_panel/root" + template_node_child: true +} +nodes { + type: TYPE_BOX + id: "memory_panel/mini_graph/root" + parent: "memory_panel/mini_graph" + template_node_child: true +} +nodes { + type: TYPE_BOX + id: "memory_panel/mini_graph/header" + parent: "memory_panel/mini_graph/root" + template_node_child: true +} +nodes { + type: TYPE_TEXT + id: "memory_panel/mini_graph/text_header" + parent: "memory_panel/mini_graph/header" + template_node_child: true +} +nodes { + type: TYPE_BOX + id: "memory_panel/mini_graph/icon_drag" + parent: "memory_panel/mini_graph/header" + template_node_child: true +} +nodes { + type: TYPE_BOX + id: "memory_panel/mini_graph/content" + parent: "memory_panel/mini_graph/root" + template_node_child: true +} +nodes { + type: TYPE_BOX + id: "memory_panel/mini_graph/prefab_line" + parent: "memory_panel/mini_graph/content" + template_node_child: true +} +nodes { + type: TYPE_BOX + id: "memory_panel/mini_graph/color_low" + parent: "memory_panel/mini_graph/content" + template_node_child: true +} +nodes { + type: TYPE_BOX + id: "memory_panel/content" + parent: "memory_panel/root" + template_node_child: true +} +nodes { + type: TYPE_TEXT + id: "memory_panel/text_max_value" + parent: "memory_panel/content" + template_node_child: true +} +nodes { + type: TYPE_TEXT + id: "memory_panel/text_per_second" + parent: "memory_panel/content" + template_node_child: true +} +nodes { + type: TYPE_BOX + id: "memory_panel/line_second_1" + parent: "memory_panel/content" + template_node_child: true +} +nodes { + type: TYPE_BOX + id: "memory_panel/line_second_2" + parent: "memory_panel/content" + template_node_child: true +} +nodes { + type: TYPE_TEXT + id: "memory_panel/text_memory" + parent: "memory_panel/content" + template_node_child: true +} +material: "/builtins/materials/gui.material" +adjust_reference: ADJUST_REFERENCE_PARENT diff --git a/example/examples/widgets/memory_panel/example_memory_panel.lua b/example/examples/widgets/memory_panel/example_memory_panel.lua new file mode 100644 index 0000000..29d6c45 --- /dev/null +++ b/example/examples/widgets/memory_panel/example_memory_panel.lua @@ -0,0 +1,12 @@ +local memory_panel = require("druid.widget.memory_panel.memory_panel") + +---@class examples.example_memory_panel: druid.widget +local M = {} + + +function M:init() + self.memory_panel = self.druid:new_widget(memory_panel, "memory_panel") +end + + +return M diff --git a/example/examples/widgets/properties_panel/example_properties_panel.gui b/example/examples/widgets/properties_panel/example_properties_panel.gui new file mode 100644 index 0000000..c88910a --- /dev/null +++ b/example/examples/widgets/properties_panel/example_properties_panel.gui @@ -0,0 +1,572 @@ +nodes { + size { + x: 200.0 + y: 100.0 + } + type: TYPE_BOX + id: "root" + inherit_alpha: true + size_mode: SIZE_MODE_AUTO + visible: false +} +nodes { + type: TYPE_TEMPLATE + id: "properties_panel" + parent: "root" + inherit_alpha: true + template: "/druid/widget/properties_panel/properties_panel.gui" +} +nodes { + type: TYPE_BOX + id: "properties_panel/root" + parent: "properties_panel" + template_node_child: true +} +nodes { + type: TYPE_BOX + id: "properties_panel/header" + parent: "properties_panel/root" + template_node_child: true +} +nodes { + type: TYPE_TEXT + id: "properties_panel/text_header" + parent: "properties_panel/header" + template_node_child: true +} +nodes { + type: TYPE_BOX + id: "properties_panel/icon_drag" + parent: "properties_panel/header" + template_node_child: true +} +nodes { + type: TYPE_BOX + id: "properties_panel/content" + parent: "properties_panel/root" + template_node_child: true +} +nodes { + type: TYPE_BOX + id: "properties_panel/scroll_view" + parent: "properties_panel/content" + template_node_child: true +} +nodes { + type: TYPE_BOX + id: "properties_panel/scroll_content" + parent: "properties_panel/scroll_view" + template_node_child: true +} +nodes { + type: TYPE_BOX + id: "properties_panel/propeties" + parent: "properties_panel/content" + template_node_child: true +} +nodes { + type: TYPE_TEMPLATE + id: "properties_panel/property_slider" + parent: "properties_panel/propeties" + template_node_child: true +} +nodes { + type: TYPE_BOX + id: "properties_panel/property_slider/root" + parent: "properties_panel/property_slider" + template_node_child: true +} +nodes { + type: TYPE_TEXT + id: "properties_panel/property_slider/text_name" + parent: "properties_panel/property_slider/root" + template_node_child: true +} +nodes { + type: TYPE_BOX + id: "properties_panel/property_slider/E_Anchor" + parent: "properties_panel/property_slider/root" + template_node_child: true +} +nodes { + type: TYPE_BOX + id: "properties_panel/property_slider/slider" + parent: "properties_panel/property_slider/E_Anchor" + template_node_child: true +} +nodes { + type: TYPE_BOX + id: "properties_panel/property_slider/slider_back" + parent: "properties_panel/property_slider/slider" + template_node_child: true +} +nodes { + type: TYPE_BOX + id: "properties_panel/property_slider/slider_pin" + parent: "properties_panel/property_slider/slider" + template_node_child: true +} +nodes { + type: TYPE_BOX + id: "properties_panel/property_slider/button" + parent: "properties_panel/property_slider/E_Anchor" + template_node_child: true +} +nodes { + type: TYPE_BOX + id: "properties_panel/property_slider/selected" + parent: "properties_panel/property_slider/button" + template_node_child: true +} +nodes { + type: TYPE_TEXT + id: "properties_panel/property_slider/text_value" + parent: "properties_panel/property_slider/button" + template_node_child: true +} +nodes { + type: TYPE_TEMPLATE + id: "properties_panel/property_checkbox" + parent: "properties_panel/propeties" + template_node_child: true +} +nodes { + type: TYPE_BOX + id: "properties_panel/property_checkbox/root" + parent: "properties_panel/property_checkbox" + template_node_child: true +} +nodes { + type: TYPE_TEXT + id: "properties_panel/property_checkbox/text_name" + parent: "properties_panel/property_checkbox/root" + template_node_child: true +} +nodes { + type: TYPE_BOX + id: "properties_panel/property_checkbox/E_Anchor" + parent: "properties_panel/property_checkbox/root" + template_node_child: true +} +nodes { + type: TYPE_BOX + id: "properties_panel/property_checkbox/button" + parent: "properties_panel/property_checkbox/E_Anchor" + template_node_child: true +} +nodes { + type: TYPE_BOX + id: "properties_panel/property_checkbox/icon" + parent: "properties_panel/property_checkbox/button" + template_node_child: true +} +nodes { + type: TYPE_BOX + id: "properties_panel/property_checkbox/selected" + parent: "properties_panel/property_checkbox/button" + template_node_child: true +} +nodes { + type: TYPE_TEMPLATE + id: "properties_panel/property_button" + parent: "properties_panel/propeties" + template_node_child: true +} +nodes { + type: TYPE_BOX + id: "properties_panel/property_button/root" + parent: "properties_panel/property_button" + template_node_child: true +} +nodes { + type: TYPE_TEXT + id: "properties_panel/property_button/text_name" + parent: "properties_panel/property_button/root" + template_node_child: true +} +nodes { + type: TYPE_BOX + id: "properties_panel/property_button/E_Anchor" + parent: "properties_panel/property_button/root" + template_node_child: true +} +nodes { + type: TYPE_BOX + id: "properties_panel/property_button/button" + parent: "properties_panel/property_button/E_Anchor" + template_node_child: true +} +nodes { + type: TYPE_BOX + id: "properties_panel/property_button/selected" + parent: "properties_panel/property_button/button" + template_node_child: true +} +nodes { + type: TYPE_TEXT + id: "properties_panel/property_button/text_button" + parent: "properties_panel/property_button/button" + template_node_child: true +} +nodes { + type: TYPE_TEMPLATE + id: "properties_panel/property_input" + parent: "properties_panel/propeties" + template_node_child: true +} +nodes { + type: TYPE_BOX + id: "properties_panel/property_input/root" + parent: "properties_panel/property_input" + template_node_child: true +} +nodes { + type: TYPE_TEXT + id: "properties_panel/property_input/text_name" + parent: "properties_panel/property_input/root" + template_node_child: true +} +nodes { + type: TYPE_BOX + id: "properties_panel/property_input/E_Anchor" + parent: "properties_panel/property_input/root" + template_node_child: true +} +nodes { + type: TYPE_TEMPLATE + id: "properties_panel/property_input/rich_input" + parent: "properties_panel/property_input/E_Anchor" + template_node_child: true +} +nodes { + type: TYPE_BOX + id: "properties_panel/property_input/rich_input/root" + parent: "properties_panel/property_input/rich_input" + template_node_child: true +} +nodes { + type: TYPE_BOX + id: "properties_panel/property_input/rich_input/button" + parent: "properties_panel/property_input/rich_input/root" + template_node_child: true +} +nodes { + type: TYPE_TEXT + id: "properties_panel/property_input/rich_input/placeholder_text" + parent: "properties_panel/property_input/rich_input/root" + template_node_child: true +} +nodes { + type: TYPE_TEXT + id: "properties_panel/property_input/rich_input/input_text" + parent: "properties_panel/property_input/rich_input/root" + template_node_child: true +} +nodes { + type: TYPE_BOX + id: "properties_panel/property_input/rich_input/cursor_node" + parent: "properties_panel/property_input/rich_input/root" + template_node_child: true +} +nodes { + type: TYPE_TEXT + id: "properties_panel/property_input/rich_input/cursor_text" + parent: "properties_panel/property_input/rich_input/cursor_node" + template_node_child: true +} +nodes { + type: TYPE_BOX + id: "properties_panel/property_input/selected" + parent: "properties_panel/property_input/E_Anchor" + template_node_child: true +} +nodes { + type: TYPE_TEMPLATE + id: "properties_panel/property_text" + parent: "properties_panel/propeties" + template_node_child: true +} +nodes { + type: TYPE_BOX + id: "properties_panel/property_text/root" + parent: "properties_panel/property_text" + template_node_child: true +} +nodes { + type: TYPE_TEXT + id: "properties_panel/property_text/text_name" + parent: "properties_panel/property_text/root" + template_node_child: true +} +nodes { + type: TYPE_TEXT + id: "properties_panel/property_text/text_right" + parent: "properties_panel/property_text/root" + template_node_child: true +} +nodes { + type: TYPE_TEMPLATE + id: "properties_panel/property_left_right_selector" + parent: "properties_panel/propeties" + template_node_child: true +} +nodes { + type: TYPE_BOX + id: "properties_panel/property_left_right_selector/root" + parent: "properties_panel/property_left_right_selector" + template_node_child: true +} +nodes { + type: TYPE_TEXT + id: "properties_panel/property_left_right_selector/text_name" + parent: "properties_panel/property_left_right_selector/root" + template_node_child: true +} +nodes { + type: TYPE_BOX + id: "properties_panel/property_left_right_selector/E_Anchor" + parent: "properties_panel/property_left_right_selector/root" + template_node_child: true +} +nodes { + type: TYPE_BOX + id: "properties_panel/property_left_right_selector/button_left" + parent: "properties_panel/property_left_right_selector/E_Anchor" + template_node_child: true +} +nodes { + type: TYPE_BOX + id: "properties_panel/property_left_right_selector/icon_left" + parent: "properties_panel/property_left_right_selector/button_left" + template_node_child: true +} +nodes { + type: TYPE_BOX + id: "properties_panel/property_left_right_selector/button_right" + parent: "properties_panel/property_left_right_selector/E_Anchor" + template_node_child: true +} +nodes { + type: TYPE_BOX + id: "properties_panel/property_left_right_selector/icon_right" + parent: "properties_panel/property_left_right_selector/button_right" + template_node_child: true +} +nodes { + type: TYPE_BOX + id: "properties_panel/property_left_right_selector/selected" + parent: "properties_panel/property_left_right_selector/E_Anchor" + template_node_child: true +} +nodes { + type: TYPE_TEXT + id: "properties_panel/property_left_right_selector/text_value" + parent: "properties_panel/property_left_right_selector/E_Anchor" + template_node_child: true +} +nodes { + type: TYPE_TEMPLATE + id: "properties_panel/property_vector3" + parent: "properties_panel/propeties" + template_node_child: true +} +nodes { + type: TYPE_BOX + id: "properties_panel/property_vector3/root" + parent: "properties_panel/property_vector3" + template_node_child: true +} +nodes { + type: TYPE_TEXT + id: "properties_panel/property_vector3/text_name" + parent: "properties_panel/property_vector3/root" + template_node_child: true +} +nodes { + type: TYPE_BOX + id: "properties_panel/property_vector3/E_Anchor" + parent: "properties_panel/property_vector3/root" + template_node_child: true +} +nodes { + type: TYPE_BOX + id: "properties_panel/property_vector3/field_x" + parent: "properties_panel/property_vector3/E_Anchor" + template_node_child: true +} +nodes { + type: TYPE_TEXT + id: "properties_panel/property_vector3/text_x" + parent: "properties_panel/property_vector3/field_x" + template_node_child: true +} +nodes { + type: TYPE_TEMPLATE + id: "properties_panel/property_vector3/rich_input_x" + parent: "properties_panel/property_vector3/field_x" + template_node_child: true +} +nodes { + type: TYPE_BOX + id: "properties_panel/property_vector3/rich_input_x/root" + parent: "properties_panel/property_vector3/rich_input_x" + template_node_child: true +} +nodes { + type: TYPE_BOX + id: "properties_panel/property_vector3/rich_input_x/button" + parent: "properties_panel/property_vector3/rich_input_x/root" + template_node_child: true +} +nodes { + type: TYPE_TEXT + id: "properties_panel/property_vector3/rich_input_x/placeholder_text" + parent: "properties_panel/property_vector3/rich_input_x/root" + template_node_child: true +} +nodes { + type: TYPE_TEXT + id: "properties_panel/property_vector3/rich_input_x/input_text" + parent: "properties_panel/property_vector3/rich_input_x/root" + template_node_child: true +} +nodes { + type: TYPE_BOX + id: "properties_panel/property_vector3/rich_input_x/cursor_node" + parent: "properties_panel/property_vector3/rich_input_x/root" + template_node_child: true +} +nodes { + type: TYPE_TEXT + id: "properties_panel/property_vector3/rich_input_x/cursor_text" + parent: "properties_panel/property_vector3/rich_input_x/cursor_node" + template_node_child: true +} +nodes { + type: TYPE_BOX + id: "properties_panel/property_vector3/selected_x" + parent: "properties_panel/property_vector3/field_x" + template_node_child: true +} +nodes { + type: TYPE_BOX + id: "properties_panel/property_vector3/field_y" + parent: "properties_panel/property_vector3/E_Anchor" + template_node_child: true +} +nodes { + type: TYPE_TEXT + id: "properties_panel/property_vector3/text_y" + parent: "properties_panel/property_vector3/field_y" + template_node_child: true +} +nodes { + type: TYPE_TEMPLATE + id: "properties_panel/property_vector3/rich_input_y" + parent: "properties_panel/property_vector3/field_y" + template_node_child: true +} +nodes { + type: TYPE_BOX + id: "properties_panel/property_vector3/rich_input_y/root" + parent: "properties_panel/property_vector3/rich_input_y" + template_node_child: true +} +nodes { + type: TYPE_BOX + id: "properties_panel/property_vector3/rich_input_y/button" + parent: "properties_panel/property_vector3/rich_input_y/root" + template_node_child: true +} +nodes { + type: TYPE_TEXT + id: "properties_panel/property_vector3/rich_input_y/placeholder_text" + parent: "properties_panel/property_vector3/rich_input_y/root" + template_node_child: true +} +nodes { + type: TYPE_TEXT + id: "properties_panel/property_vector3/rich_input_y/input_text" + parent: "properties_panel/property_vector3/rich_input_y/root" + template_node_child: true +} +nodes { + type: TYPE_BOX + id: "properties_panel/property_vector3/rich_input_y/cursor_node" + parent: "properties_panel/property_vector3/rich_input_y/root" + template_node_child: true +} +nodes { + type: TYPE_TEXT + id: "properties_panel/property_vector3/rich_input_y/cursor_text" + parent: "properties_panel/property_vector3/rich_input_y/cursor_node" + template_node_child: true +} +nodes { + type: TYPE_BOX + id: "properties_panel/property_vector3/selected_y" + parent: "properties_panel/property_vector3/field_y" + template_node_child: true +} +nodes { + type: TYPE_BOX + id: "properties_panel/property_vector3/field_z" + parent: "properties_panel/property_vector3/E_Anchor" + template_node_child: true +} +nodes { + type: TYPE_TEXT + id: "properties_panel/property_vector3/text_z" + parent: "properties_panel/property_vector3/field_z" + template_node_child: true +} +nodes { + type: TYPE_TEMPLATE + id: "properties_panel/property_vector3/rich_input_z" + parent: "properties_panel/property_vector3/field_z" + template_node_child: true +} +nodes { + type: TYPE_BOX + id: "properties_panel/property_vector3/rich_input_z/root" + parent: "properties_panel/property_vector3/rich_input_z" + template_node_child: true +} +nodes { + type: TYPE_BOX + id: "properties_panel/property_vector3/rich_input_z/button" + parent: "properties_panel/property_vector3/rich_input_z/root" + template_node_child: true +} +nodes { + type: TYPE_TEXT + id: "properties_panel/property_vector3/rich_input_z/placeholder_text" + parent: "properties_panel/property_vector3/rich_input_z/root" + template_node_child: true +} +nodes { + type: TYPE_TEXT + id: "properties_panel/property_vector3/rich_input_z/input_text" + parent: "properties_panel/property_vector3/rich_input_z/root" + template_node_child: true +} +nodes { + type: TYPE_BOX + id: "properties_panel/property_vector3/rich_input_z/cursor_node" + parent: "properties_panel/property_vector3/rich_input_z/root" + template_node_child: true +} +nodes { + type: TYPE_TEXT + id: "properties_panel/property_vector3/rich_input_z/cursor_text" + parent: "properties_panel/property_vector3/rich_input_z/cursor_node" + template_node_child: true +} +nodes { + type: TYPE_BOX + id: "properties_panel/property_vector3/selected_z" + parent: "properties_panel/property_vector3/field_z" + template_node_child: true +} +material: "/builtins/materials/gui.material" +adjust_reference: ADJUST_REFERENCE_PARENT diff --git a/example/examples/widgets/properties_panel/example_properties_panel.lua b/example/examples/widgets/properties_panel/example_properties_panel.lua new file mode 100644 index 0000000..9106f9b --- /dev/null +++ b/example/examples/widgets/properties_panel/example_properties_panel.lua @@ -0,0 +1,67 @@ +local properties_panel = require("druid.widget.properties_panel.properties_panel") + +---@class druid.widget.example_properties_panel: druid.widget +local M = {} + + +function M:init() + self.properties_panel = self.druid:new_widget(properties_panel, "properties_panel") + + self.properties_panel:add_button(function(button) + button:set_text_button("Button") + button.button.on_click:subscribe(function() + print("Button clicked") + end) + end) + + self.properties_panel:add_checkbox(function(checkbox) + --print("Checkbox clicked", value) + checkbox:set_text_property("Checkbox") + checkbox.on_change_value:subscribe(function(value) + print("Checkbox clicked", value) + end) + checkbox:set_value(false) + end) + + self.properties_panel:add_input(function(input) + input:set_text_property("Input") + input:set_text_value("Initial") + input:on_change(function(text) + print("Input changed", text) + end) + end) + + self.properties_panel:add_left_right_selector(function(selector) + selector:set_template("Arrows Number") + selector.on_change_value:subscribe(function(value) + print("Left Right Selector changed", value) + end) + selector:set_number_type(0, 42, true, 1) + selector:set_value(0) + end) + + self.properties_panel:add_left_right_selector(function(selector) + selector:set_template("Arrows Array") + selector.on_change_value:subscribe(function(value) + print("Left Right Array value", value) + end) + selector:set_array_type({"Zero", "One", "Two", "Three", "Four", "Five"}, false, 1) + selector:set_value("Zero") + end) + + self.properties_panel:add_slider(function(slider) + slider:set_text_property("Slider") + slider:set_value(0.5) + slider:on_change(function(value) + print("Slider changed", value) + end) + end) + + self.properties_panel:add_text(function(text) + text:set_text_property("Text") + text:set_text_value("Hello, World!") + end) +end + + +return M \ No newline at end of file diff --git a/example/examples/widgets/tiling_node/example_tiling_node.gui b/example/examples/widgets/tiling_node/example_tiling_node.gui new file mode 100644 index 0000000..f98269f --- /dev/null +++ b/example/examples/widgets/tiling_node/example_tiling_node.gui @@ -0,0 +1,34 @@ +textures { + name: "tiling_texture" + texture: "/example/examples/widgets/tiling_node/tiling_texture.atlas" +} +nodes { + size { + x: 200.0 + y: 100.0 + } + type: TYPE_BOX + id: "root" + inherit_alpha: true + size_mode: SIZE_MODE_AUTO + visible: false +} +nodes { + size { + x: 900.0 + y: 900.0 + } + type: TYPE_BOX + texture: "tiling_texture/pattern_0004" + id: "tiling_node" + parent: "root" + inherit_alpha: true + alpha: 0.42 + material: "gui_tiling_node" +} +material: "/builtins/materials/gui.material" +adjust_reference: ADJUST_REFERENCE_PARENT +materials { + name: "gui_tiling_node" + material: "/druid/custom/tiling_node/gui_tiling_node.material" +} diff --git a/example/examples/widgets/tiling_node/example_tiling_node.lua b/example/examples/widgets/tiling_node/example_tiling_node.lua new file mode 100644 index 0000000..53a8522 --- /dev/null +++ b/example/examples/widgets/tiling_node/example_tiling_node.lua @@ -0,0 +1,37 @@ +local tiling_node = require("druid.custom.tiling_node.tiling_node") + +---@class examples.example_tiling_node: druid.widget +local M = {} + + +function M:init() + self.tiling_node = self.druid:new(tiling_node, self:get_node("tiling_node")) +end + + +---@param properties_panel properties_panel +function M:properties_control(properties_panel) + properties_panel:add_slider("Repeat X", 0, function(value) + local repeat_x = math.floor(value * 10) + self.tiling_node:set_repeat(repeat_x, nil) + end) + properties_panel:add_slider("Repeat Y", 0, function(value) + local repeat_y = math.floor(value * 10) + self.tiling_node:set_repeat(nil, repeat_y) + end) + properties_panel:add_slider("Offset X", 0, function(value) + self.tiling_node:set_offset(value, nil) + end) + properties_panel:add_slider("Offset Y", 0, function(value) + self.tiling_node:set_offset(nil, value) + end) + properties_panel:add_slider("Margin X", 0, function(value) + self.tiling_node:set_margin(value, nil) + end) + properties_panel:add_slider("Margin Y", 0, function(value) + self.tiling_node:set_margin(nil, value) + end) +end + + +return M diff --git a/example/examples/widgets/tiling_node/pattern_0004.png b/example/examples/widgets/tiling_node/pattern_0004.png new file mode 100644 index 0000000..c3adc2e Binary files /dev/null and b/example/examples/widgets/tiling_node/pattern_0004.png differ diff --git a/example/examples/widgets/tiling_node/tiling_texture.atlas b/example/examples/widgets/tiling_node/tiling_texture.atlas new file mode 100644 index 0000000..6135667 --- /dev/null +++ b/example/examples/widgets/tiling_node/tiling_texture.atlas @@ -0,0 +1,3 @@ +images { + image: "/example/examples/widgets/tiling_node/pattern_0004.png" +} diff --git a/example/examples/windows/examples_list.lua b/example/examples/windows/examples_list.lua index da826a3..b799aff 100644 --- a/example/examples/windows/examples_list.lua +++ b/example/examples/windows/examples_list.lua @@ -10,13 +10,7 @@ function M.get_examples() template = "window_language", root = "window_language/root", code_url = "example/examples/windows/window_language/window_language.lua", - component_class = require("example.examples.windows.window_language.window_language"), - on_create = function(instance, output_list) - ---@cast instance window_language - instance.on_language_change:subscribe(function(language) - output_list:add_log_text("Language changed to " .. language) - end) - end + widget_class = require("example.examples.windows.window_language.window_language"), }, { name_id = "ui_example_window_confirmation", @@ -24,21 +18,7 @@ function M.get_examples() root = "window_confirmation/root", information_text_id = "ui_example_window_language_description", code_url = "example/examples/windows/window_confirmation/window_confirmation.lua", - component_class = require("example.examples.windows.window_confirmation.window_confirmation"), - on_create = function(instance, output_list) - ---@cast instance window_confirmation - instance.text_header:translate("ui_confirmation") - instance.text_button_accept:translate("ui_confirm") - instance.text_button_decline:translate("ui_cancel") - instance.text_description:translate("ui_confirmation_description") - - instance.button_accept.on_click:subscribe(function() - output_list:add_log_text("Confirmation Accepted") - end) - instance.button_decline.on_click:subscribe(function() - output_list:add_log_text("Confirmation Declined") - end) - end, + widget_class = require("example.examples.windows.window_confirmation.window_confirmation"), }, { name_id = "ui_example_window_information", @@ -46,19 +26,9 @@ function M.get_examples() root = "window_info/root", information_text_id = "ui_example_window_information_description", code_url = "example/examples/windows/window_info/window_info.lua", - component_class = require("example.examples.windows.window_info.window_info"), - on_create = function(instance, output_list) - ---@cast instance window_info - instance.text_header:translate("ui_information") - instance.text_button_accept:translate("ui_confirm") - instance.text_description:translate("ui_example_window_information_text") - - instance.button_accept.on_click:subscribe(function() - output_list:add_log_text("Information Accepted") - end) - end + widget_class = require("example.examples.windows.window_info.window_info"), } } end -return M \ No newline at end of file +return M diff --git a/example/examples/windows/window_confirmation/window_confirmation.collection b/example/examples/windows/window_confirmation/window_confirmation.collection index 6017d36..2303afa 100644 --- a/example/examples/windows/window_confirmation/window_confirmation.collection +++ b/example/examples/windows/window_confirmation/window_confirmation.collection @@ -5,35 +5,6 @@ embedded_instances { data: "components {\n" " id: \"window_confirmation\"\n" " component: \"/example/examples/windows/window_confirmation/window_confirmation.gui\"\n" - " position {\n" - " x: 0.0\n" - " y: 0.0\n" - " z: 0.0\n" - " }\n" - " rotation {\n" - " x: 0.0\n" - " y: 0.0\n" - " z: 0.0\n" - " w: 1.0\n" - " }\n" - " property_decls {\n" - " }\n" "}\n" "" - position { - x: 0.0 - y: 0.0 - z: 0.0 - } - rotation { - x: 0.0 - y: 0.0 - z: 0.0 - w: 1.0 - } - scale3 { - x: 1.0 - y: 1.0 - z: 1.0 - } } diff --git a/example/examples/windows/window_confirmation/window_confirmation.gui b/example/examples/windows/window_confirmation/window_confirmation.gui index 27ed7fc..2c60a9e 100644 --- a/example/examples/windows/window_confirmation/window_confirmation.gui +++ b/example/examples/windows/window_confirmation/window_confirmation.gui @@ -4,55 +4,18 @@ fonts { font: "/example/assets/fonts/text_bold.font" } textures { - name: "druid" - texture: "/example/assets/druid.atlas" -} -background_color { - x: 0.0 - y: 0.0 - z: 0.0 - w: 0.0 + name: "druid_example" + texture: "/example/assets/druid_example.atlas" } nodes { - position { - x: 960.0 - y: 540.0 - z: 0.0 - w: 1.0 - } - rotation { - x: 0.0 - y: 0.0 - z: 0.0 - w: 1.0 - } - scale { - x: 1.0 - y: 1.0 - z: 1.0 - w: 1.0 - } size { x: 700.0 y: 500.0 - z: 0.0 - w: 1.0 - } - color { - x: 1.0 - y: 1.0 - z: 1.0 - w: 1.0 } type: TYPE_BOX - blend_mode: BLEND_MODE_ALPHA - texture: "druid/empty" + texture: "druid_example/empty" id: "root" - xanchor: XANCHOR_NONE - yanchor: YANCHOR_NONE - pivot: PIVOT_CENTER adjust_mode: ADJUST_MODE_STRETCH - layer: "" inherit_alpha: true slice9 { x: 16.0 @@ -60,58 +23,22 @@ nodes { z: 16.0 w: 16.0 } - clipping_mode: CLIPPING_MODE_NONE - clipping_visible: true - clipping_inverted: false - alpha: 1.0 - template_node_child: false - size_mode: SIZE_MODE_MANUAL - custom_type: 0 - enabled: true visible: false - material: "" } nodes { - position { - x: 0.0 - y: 0.0 - z: 0.0 - w: 1.0 - } - rotation { - x: 0.0 - y: 0.0 - z: 0.0 - w: 1.0 - } - scale { - x: 1.0 - y: 1.0 - z: 1.0 - w: 1.0 - } size { x: 700.0 y: 500.0 - z: 0.0 - w: 1.0 } color { x: 0.31 y: 0.318 z: 0.322 - w: 1.0 } type: TYPE_BOX - blend_mode: BLEND_MODE_ALPHA - texture: "druid/ui_circle_32" + texture: "druid_example/ui_circle_32" id: "window" - xanchor: XANCHOR_NONE - yanchor: YANCHOR_NONE - pivot: PIVOT_CENTER - adjust_mode: ADJUST_MODE_FIT parent: "root" - layer: "" inherit_alpha: true slice9 { x: 16.0 @@ -119,58 +46,25 @@ nodes { z: 16.0 w: 16.0 } - clipping_mode: CLIPPING_MODE_NONE - clipping_visible: true - clipping_inverted: false - alpha: 1.0 - template_node_child: false - size_mode: SIZE_MODE_MANUAL - custom_type: 0 - enabled: true - visible: true - material: "" } nodes { position { - x: 0.0 y: 250.0 - z: 0.0 - w: 1.0 - } - rotation { - x: 0.0 - y: 0.0 - z: 0.0 - w: 1.0 - } - scale { - x: 1.0 - y: 1.0 - z: 1.0 - w: 1.0 } size { x: 700.0 y: 92.0 - z: 0.0 - w: 1.0 } color { x: 0.902 y: 0.875 z: 0.624 - w: 1.0 } type: TYPE_BOX - blend_mode: BLEND_MODE_ALPHA - texture: "druid/ui_rounded_top_32" + texture: "druid_example/ui_rounded_top_32" id: "panel_header" - xanchor: XANCHOR_NONE - yanchor: YANCHOR_NONE pivot: PIVOT_N - adjust_mode: ADJUST_MODE_FIT parent: "window" - layer: "" inherit_alpha: true slice9 { x: 16.0 @@ -178,663 +72,166 @@ nodes { z: 16.0 w: 16.0 } - clipping_mode: CLIPPING_MODE_NONE - clipping_visible: true - clipping_inverted: false - alpha: 1.0 - template_node_child: false - size_mode: SIZE_MODE_MANUAL - custom_type: 0 - enabled: true - visible: true - material: "" } nodes { position { - x: 0.0 y: -46.0 - z: 0.0 - w: 1.0 - } - rotation { - x: 0.0 - y: 0.0 - z: 0.0 - w: 1.0 } scale { x: 1.5 y: 1.5 - z: 1.0 - w: 1.0 } size { x: 300.0 y: 50.0 - z: 0.0 - w: 1.0 } color { x: 0.31 y: 0.318 z: 0.322 - w: 1.0 } type: TYPE_TEXT - blend_mode: BLEND_MODE_ALPHA text: "Confirmation" font: "text_bold" id: "text_header" - xanchor: XANCHOR_NONE - yanchor: YANCHOR_NONE - pivot: PIVOT_CENTER outline { x: 1.0 y: 1.0 z: 1.0 - w: 1.0 } shadow { x: 1.0 y: 1.0 z: 1.0 - w: 1.0 } - adjust_mode: ADJUST_MODE_FIT - line_break: false parent: "panel_header" - layer: "" inherit_alpha: true - alpha: 1.0 outline_alpha: 0.0 shadow_alpha: 0.0 - template_node_child: false - text_leading: 1.0 - text_tracking: 0.0 - custom_type: 0 - enabled: true - visible: true - material: "" } nodes { position { x: 300.0 y: -46.0 - z: 0.0 - w: 1.0 - } - rotation { - x: 0.0 - y: 0.0 - z: 0.0 - w: 1.0 - } - scale { - x: 1.0 - y: 1.0 - z: 1.0 - w: 1.0 } size { x: 100.0 y: 100.0 - z: 0.0 - w: 1.0 - } - color { - x: 1.0 - y: 1.0 - z: 1.0 - w: 1.0 } type: TYPE_BOX - blend_mode: BLEND_MODE_ALPHA - texture: "" id: "button_close" - xanchor: XANCHOR_NONE - yanchor: YANCHOR_NONE - pivot: PIVOT_CENTER - adjust_mode: ADJUST_MODE_FIT parent: "panel_header" - layer: "" inherit_alpha: true - slice9 { - x: 0.0 - y: 0.0 - z: 0.0 - w: 0.0 - } - clipping_mode: CLIPPING_MODE_NONE - clipping_visible: true - clipping_inverted: false - alpha: 1.0 - template_node_child: false - size_mode: SIZE_MODE_MANUAL - custom_type: 0 - enabled: true visible: false - material: "" } nodes { - position { - x: 0.0 - y: 0.0 - z: 0.0 - w: 1.0 - } - rotation { - x: 0.0 - y: 0.0 - z: 0.0 - w: 1.0 - } - scale { - x: 1.0 - y: 1.0 - z: 1.0 - w: 1.0 - } - size { - x: 200.0 - y: 100.0 - z: 0.0 - w: 1.0 - } color { x: 0.31 y: 0.318 z: 0.322 - w: 1.0 } type: TYPE_BOX - blend_mode: BLEND_MODE_ALPHA - texture: "druid/icon_cross" + texture: "druid_example/icon_cross" id: "icon_close" - xanchor: XANCHOR_NONE - yanchor: YANCHOR_NONE - pivot: PIVOT_CENTER - adjust_mode: ADJUST_MODE_FIT parent: "button_close" - layer: "" inherit_alpha: true - slice9 { - x: 0.0 - y: 0.0 - z: 0.0 - w: 0.0 - } - clipping_mode: CLIPPING_MODE_NONE - clipping_visible: true - clipping_inverted: false - alpha: 1.0 - template_node_child: false size_mode: SIZE_MODE_AUTO - custom_type: 0 - enabled: true - visible: true - material: "" } nodes { position { - x: 0.0 y: -45.0 - z: 0.0 - w: 1.0 - } - rotation { - x: 0.0 - y: 0.0 - z: 0.0 - w: 1.0 - } - scale { - x: 1.0 - y: 1.0 - z: 1.0 - w: 1.0 } size { x: 700.0 y: 400.0 - z: 0.0 - w: 1.0 - } - color { - x: 1.0 - y: 1.0 - z: 1.0 - w: 1.0 } type: TYPE_BOX - blend_mode: BLEND_MODE_ALPHA - texture: "" id: "content" - xanchor: XANCHOR_NONE - yanchor: YANCHOR_NONE - pivot: PIVOT_CENTER - adjust_mode: ADJUST_MODE_FIT parent: "root" - layer: "" inherit_alpha: true - slice9 { - x: 0.0 - y: 0.0 - z: 0.0 - w: 0.0 - } - clipping_mode: CLIPPING_MODE_NONE - clipping_visible: true - clipping_inverted: false - alpha: 1.0 - template_node_child: false - size_mode: SIZE_MODE_MANUAL - custom_type: 0 - enabled: true visible: false - material: "" } nodes { position { - x: 0.0 y: 75.0 - z: 0.0 - w: 1.0 - } - rotation { - x: 0.0 - y: 0.0 - z: 0.0 - w: 1.0 } scale { x: 1.5 y: 1.5 - z: 1.0 - w: 1.0 } size { x: 420.0 y: 140.0 - z: 0.0 - w: 1.0 } color { x: 0.941 y: 0.984 - z: 1.0 - w: 1.0 } type: TYPE_TEXT - blend_mode: BLEND_MODE_ALPHA text: "Do you agree with selected action?" font: "text_bold" id: "text" - xanchor: XANCHOR_NONE - yanchor: YANCHOR_NONE - pivot: PIVOT_CENTER outline { x: 1.0 y: 1.0 z: 1.0 - w: 1.0 } shadow { x: 1.0 y: 1.0 z: 1.0 - w: 1.0 } - adjust_mode: ADJUST_MODE_FIT line_break: true parent: "content" - layer: "" inherit_alpha: true - alpha: 1.0 outline_alpha: 0.0 shadow_alpha: 0.0 - template_node_child: false - text_leading: 1.0 - text_tracking: 0.0 - custom_type: 0 - enabled: true - visible: true - material: "" } nodes { position { x: -160.0 y: -100.0 - z: 0.0 - w: 1.0 - } - rotation { - x: 0.0 - y: 0.0 - z: 0.0 - w: 1.0 - } - scale { - x: 1.0 - y: 1.0 - z: 1.0 - w: 1.0 - } - size { - x: 200.0 - y: 100.0 - z: 0.0 - w: 1.0 - } - color { - x: 1.0 - y: 1.0 - z: 1.0 - w: 1.0 } type: TYPE_TEMPLATE id: "button_accept" parent: "content" - layer: "" inherit_alpha: true - alpha: 1.0 template: "/example/templates/button_text_green.gui" - template_node_child: false - custom_type: 0 - enabled: true } nodes { - position { - x: 0.0 - y: 0.0 - z: 0.0 - w: 1.0 - } - rotation { - x: 0.0 - y: 0.0 - z: 0.0 - w: 1.0 - } - scale { - x: 1.0 - y: 1.0 - z: 1.0 - w: 1.0 - } - size { - x: 280.0 - y: 90.0 - z: 0.0 - w: 1.0 - } - color { - x: 0.557 - y: 0.835 - z: 0.62 - w: 1.0 - } type: TYPE_BOX - blend_mode: BLEND_MODE_ALPHA - texture: "druid/ui_circle_32" id: "button_accept/root" - xanchor: XANCHOR_NONE - yanchor: YANCHOR_NONE - pivot: PIVOT_CENTER - adjust_mode: ADJUST_MODE_FIT parent: "button_accept" - layer: "druid" - inherit_alpha: true - slice9 { - x: 16.0 - y: 16.0 - z: 16.0 - w: 16.0 - } - clipping_mode: CLIPPING_MODE_NONE - clipping_visible: true - clipping_inverted: false - alpha: 1.0 template_node_child: true - size_mode: SIZE_MODE_MANUAL - custom_type: 0 - enabled: true - visible: true - material: "" } nodes { - position { - x: 0.0 - y: 0.0 - z: 0.0 - w: 1.0 - } - rotation { - x: 0.0 - y: 0.0 - z: 0.0 - w: 1.0 - } - scale { - x: 1.0 - y: 1.0 - z: 1.0 - w: 1.0 - } - size { - x: 245.0 - y: 50.0 - z: 0.0 - w: 1.0 - } - color { - x: 0.31 - y: 0.318 - z: 0.322 - w: 1.0 - } type: TYPE_TEXT - blend_mode: BLEND_MODE_ALPHA - text: "Confirm" - font: "text_bold" id: "button_accept/text" - xanchor: XANCHOR_NONE - yanchor: YANCHOR_NONE - pivot: PIVOT_CENTER - outline { - x: 1.0 - y: 1.0 - z: 1.0 - w: 1.0 - } - shadow { - x: 1.0 - y: 1.0 - z: 1.0 - w: 1.0 - } - adjust_mode: ADJUST_MODE_FIT - line_break: false parent: "button_accept/root" - layer: "text_bold" - inherit_alpha: true - alpha: 1.0 - outline_alpha: 0.0 - shadow_alpha: 0.0 template_node_child: true - text_leading: 1.0 - text_tracking: 0.0 - custom_type: 0 - enabled: true - visible: true - material: "" } nodes { position { x: 160.0 y: -100.0 - z: 0.0 - w: 1.0 - } - rotation { - x: 0.0 - y: 0.0 - z: 0.0 - w: 1.0 - } - scale { - x: 1.0 - y: 1.0 - z: 1.0 - w: 1.0 - } - size { - x: 200.0 - y: 100.0 - z: 0.0 - w: 1.0 - } - color { - x: 1.0 - y: 1.0 - z: 1.0 - w: 1.0 } type: TYPE_TEMPLATE id: "button_decline" parent: "content" - layer: "" inherit_alpha: true - alpha: 1.0 template: "/example/templates/button_text_red.gui" - template_node_child: false - custom_type: 0 - enabled: true } nodes { - position { - x: 0.0 - y: 0.0 - z: 0.0 - w: 1.0 - } - rotation { - x: 0.0 - y: 0.0 - z: 0.0 - w: 1.0 - } - scale { - x: 1.0 - y: 1.0 - z: 1.0 - w: 1.0 - } - size { - x: 280.0 - y: 90.0 - z: 0.0 - w: 1.0 - } - color { - x: 0.957 - y: 0.608 - z: 0.608 - w: 1.0 - } type: TYPE_BOX - blend_mode: BLEND_MODE_ALPHA - texture: "druid/ui_circle_32" id: "button_decline/root" - xanchor: XANCHOR_NONE - yanchor: YANCHOR_NONE - pivot: PIVOT_CENTER - adjust_mode: ADJUST_MODE_FIT parent: "button_decline" - layer: "druid" - inherit_alpha: true - slice9 { - x: 16.0 - y: 16.0 - z: 16.0 - w: 16.0 - } - clipping_mode: CLIPPING_MODE_NONE - clipping_visible: true - clipping_inverted: false - alpha: 1.0 template_node_child: true - size_mode: SIZE_MODE_MANUAL - custom_type: 0 - enabled: true - visible: true - material: "" } nodes { - position { - x: 0.0 - y: 0.0 - z: 0.0 - w: 1.0 - } - rotation { - x: 0.0 - y: 0.0 - z: 0.0 - w: 1.0 - } - scale { - x: 1.0 - y: 1.0 - z: 1.0 - w: 1.0 - } - size { - x: 245.0 - y: 50.0 - z: 0.0 - w: 1.0 - } - color { - x: 0.31 - y: 0.318 - z: 0.322 - w: 1.0 - } type: TYPE_TEXT - blend_mode: BLEND_MODE_ALPHA - text: "Cancel" - font: "text_bold" id: "button_decline/text" - xanchor: XANCHOR_NONE - yanchor: YANCHOR_NONE - pivot: PIVOT_CENTER - outline { - x: 1.0 - y: 1.0 - z: 1.0 - w: 1.0 - } - shadow { - x: 1.0 - y: 1.0 - z: 1.0 - w: 1.0 - } - adjust_mode: ADJUST_MODE_FIT - line_break: false parent: "button_decline/root" - layer: "text_bold" - inherit_alpha: true - alpha: 1.0 - outline_alpha: 0.0 - shadow_alpha: 0.0 template_node_child: true - text_leading: 1.0 - text_tracking: 0.0 - custom_type: 0 - enabled: true - visible: true - material: "" } layers { name: "druid" @@ -844,4 +241,3 @@ layers { } material: "/builtins/materials/gui.material" adjust_reference: ADJUST_REFERENCE_PARENT -max_nodes: 512 diff --git a/example/examples/windows/window_confirmation/window_confirmation.lua b/example/examples/windows/window_confirmation/window_confirmation.lua index a59bcd9..f5f9b0a 100644 --- a/example/examples/windows/window_confirmation/window_confirmation.lua +++ b/example/examples/windows/window_confirmation/window_confirmation.lua @@ -1,34 +1,30 @@ -local component = require("druid.component") -local lang_text = require("druid.extended.lang_text") local panthera = require("panthera.panthera") local window_animation_panthera = require("example.examples.windows.window_animation_panthera") ----@class window_confirmation: druid.base_component ----@field druid druid_instance +---@class examples.window_confirmation: druid.widget ---@field text_header druid.lang_text ---@field text_button_accept druid.lang_text ---@field text_button_decline druid.lang_text ---@field text_description druid.lang_text ---@field button_close druid.button -local M = component.create("window_confirmation") +---@field button_accept druid.button +---@field button_decline druid.button +---@field animation panthera.animation +local M = {} ----@param template string ----@param nodes table -function M:init(template, nodes) - self.druid = self:get_druid(template, nodes) - - self.text_header = self.druid:new(lang_text, "text_header", "ui_confirmation") --[[@as druid.lang_text]] - self.text_button_accept = self.druid:new(lang_text, "button_accept/text", "ui_accept") --[[@as druid.lang_text]] - self.text_button_decline = self.druid:new(lang_text, "button_decline/text", "ui_decline") --[[@as druid.lang_text]] - self.text_description = self.druid:new(lang_text, "text") --[[@as druid.lang_text]] +function M:init() + self.text_header = self.druid:new_lang_text("text_header", "ui_confirmation") --[[@as druid.lang_text]] + self.text_button_accept = self.druid:new_lang_text("button_accept/text", "ui_accept") --[[@as druid.lang_text]] + self.text_button_decline = self.druid:new_lang_text("button_decline/text", "ui_decline") --[[@as druid.lang_text]] + self.text_description = self.druid:new_lang_text("text") --[[@as druid.lang_text]] self.button_close = self.druid:new_button("button_close", self.on_button_close) self.button_accept = self.druid:new_button("button_accept/root") self.button_decline = self.druid:new_button("button_decline/root") - self.animation = panthera.create_gui(window_animation_panthera, self:get_template(), nodes) + self.animation = panthera.create_gui(window_animation_panthera, self:get_template(), self:get_nodes()) panthera.play(self.animation, "open") end @@ -38,4 +34,20 @@ function M:on_button_close() end +---@param output_list output_list +function M:on_example_created(output_list) + self.text_header:translate("ui_confirmation") + self.text_button_accept:translate("ui_confirm") + self.text_button_decline:translate("ui_cancel") + self.text_description:translate("ui_confirmation_description") + + self.button_accept.on_click:subscribe(function() + output_list:add_log_text("Confirmation Accepted") + end) + self.button_decline.on_click:subscribe(function() + output_list:add_log_text("Confirmation Declined") + end) +end + + return M diff --git a/example/examples/windows/window_info/window_info.collection b/example/examples/windows/window_info/window_info.collection index 6790821..23423c9 100644 --- a/example/examples/windows/window_info/window_info.collection +++ b/example/examples/windows/window_info/window_info.collection @@ -5,35 +5,6 @@ embedded_instances { data: "components {\n" " id: \"window_info\"\n" " component: \"/example/examples/windows/window_info/window_info.gui\"\n" - " position {\n" - " x: 0.0\n" - " y: 0.0\n" - " z: 0.0\n" - " }\n" - " rotation {\n" - " x: 0.0\n" - " y: 0.0\n" - " z: 0.0\n" - " w: 1.0\n" - " }\n" - " property_decls {\n" - " }\n" "}\n" "" - position { - x: 0.0 - y: 0.0 - z: 0.0 - } - rotation { - x: 0.0 - y: 0.0 - z: 0.0 - w: 1.0 - } - scale3 { - x: 1.0 - y: 1.0 - z: 1.0 - } } diff --git a/example/examples/windows/window_info/window_info.gui b/example/examples/windows/window_info/window_info.gui index 1d45e4f..869dd30 100644 --- a/example/examples/windows/window_info/window_info.gui +++ b/example/examples/windows/window_info/window_info.gui @@ -4,55 +4,18 @@ fonts { font: "/example/assets/fonts/text_bold.font" } textures { - name: "druid" - texture: "/example/assets/druid.atlas" -} -background_color { - x: 0.0 - y: 0.0 - z: 0.0 - w: 0.0 + name: "druid_example" + texture: "/example/assets/druid_example.atlas" } nodes { - position { - x: 960.0 - y: 540.0 - z: 0.0 - w: 1.0 - } - rotation { - x: 0.0 - y: 0.0 - z: 0.0 - w: 1.0 - } - scale { - x: 1.0 - y: 1.0 - z: 1.0 - w: 1.0 - } size { x: 700.0 y: 500.0 - z: 0.0 - w: 1.0 - } - color { - x: 1.0 - y: 1.0 - z: 1.0 - w: 1.0 } type: TYPE_BOX - blend_mode: BLEND_MODE_ALPHA - texture: "druid/empty" + texture: "druid_example/empty" id: "root" - xanchor: XANCHOR_NONE - yanchor: YANCHOR_NONE - pivot: PIVOT_CENTER adjust_mode: ADJUST_MODE_STRETCH - layer: "" inherit_alpha: true slice9 { x: 16.0 @@ -60,58 +23,22 @@ nodes { z: 16.0 w: 16.0 } - clipping_mode: CLIPPING_MODE_NONE - clipping_visible: true - clipping_inverted: false - alpha: 1.0 - template_node_child: false - size_mode: SIZE_MODE_MANUAL - custom_type: 0 - enabled: true visible: false - material: "" } nodes { - position { - x: 0.0 - y: 0.0 - z: 0.0 - w: 1.0 - } - rotation { - x: 0.0 - y: 0.0 - z: 0.0 - w: 1.0 - } - scale { - x: 1.0 - y: 1.0 - z: 1.0 - w: 1.0 - } size { x: 700.0 y: 500.0 - z: 0.0 - w: 1.0 } color { x: 0.31 y: 0.318 z: 0.322 - w: 1.0 } type: TYPE_BOX - blend_mode: BLEND_MODE_ALPHA - texture: "druid/ui_circle_32" + texture: "druid_example/ui_circle_32" id: "window" - xanchor: XANCHOR_NONE - yanchor: YANCHOR_NONE - pivot: PIVOT_CENTER - adjust_mode: ADJUST_MODE_FIT parent: "root" - layer: "" inherit_alpha: true slice9 { x: 16.0 @@ -119,58 +46,25 @@ nodes { z: 16.0 w: 16.0 } - clipping_mode: CLIPPING_MODE_NONE - clipping_visible: true - clipping_inverted: false - alpha: 1.0 - template_node_child: false - size_mode: SIZE_MODE_MANUAL - custom_type: 0 - enabled: true - visible: true - material: "" } nodes { position { - x: 0.0 y: 250.0 - z: 0.0 - w: 1.0 - } - rotation { - x: 0.0 - y: 0.0 - z: 0.0 - w: 1.0 - } - scale { - x: 1.0 - y: 1.0 - z: 1.0 - w: 1.0 } size { x: 700.0 y: 92.0 - z: 0.0 - w: 1.0 } color { x: 0.631 y: 0.843 z: 0.961 - w: 1.0 } type: TYPE_BOX - blend_mode: BLEND_MODE_ALPHA - texture: "druid/ui_rounded_top_32" + texture: "druid_example/ui_rounded_top_32" id: "panel_header" - xanchor: XANCHOR_NONE - yanchor: YANCHOR_NONE pivot: PIVOT_N - adjust_mode: ADJUST_MODE_FIT parent: "window" - layer: "" inherit_alpha: true slice9 { x: 16.0 @@ -178,495 +72,142 @@ nodes { z: 16.0 w: 16.0 } - clipping_mode: CLIPPING_MODE_NONE - clipping_visible: true - clipping_inverted: false - alpha: 1.0 - template_node_child: false - size_mode: SIZE_MODE_MANUAL - custom_type: 0 - enabled: true - visible: true - material: "" } nodes { position { - x: 0.0 y: -46.0 - z: 0.0 - w: 1.0 - } - rotation { - x: 0.0 - y: 0.0 - z: 0.0 - w: 1.0 } scale { x: 1.5 y: 1.5 - z: 1.0 - w: 1.0 } size { x: 300.0 y: 50.0 - z: 0.0 - w: 1.0 } color { x: 0.31 y: 0.318 z: 0.322 - w: 1.0 } type: TYPE_TEXT - blend_mode: BLEND_MODE_ALPHA text: "Information" font: "text_bold" id: "text_header" - xanchor: XANCHOR_NONE - yanchor: YANCHOR_NONE - pivot: PIVOT_CENTER outline { x: 1.0 y: 1.0 z: 1.0 - w: 1.0 } shadow { x: 1.0 y: 1.0 z: 1.0 - w: 1.0 } - adjust_mode: ADJUST_MODE_FIT - line_break: false parent: "panel_header" - layer: "" inherit_alpha: true - alpha: 1.0 outline_alpha: 0.0 shadow_alpha: 0.0 - template_node_child: false - text_leading: 1.0 - text_tracking: 0.0 - custom_type: 0 - enabled: true - visible: true - material: "" } nodes { position { x: 300.0 y: -46.0 - z: 0.0 - w: 1.0 - } - rotation { - x: 0.0 - y: 0.0 - z: 0.0 - w: 1.0 - } - scale { - x: 1.0 - y: 1.0 - z: 1.0 - w: 1.0 } size { x: 100.0 y: 100.0 - z: 0.0 - w: 1.0 - } - color { - x: 1.0 - y: 1.0 - z: 1.0 - w: 1.0 } type: TYPE_BOX - blend_mode: BLEND_MODE_ALPHA - texture: "" id: "button_close" - xanchor: XANCHOR_NONE - yanchor: YANCHOR_NONE - pivot: PIVOT_CENTER - adjust_mode: ADJUST_MODE_FIT parent: "panel_header" - layer: "" inherit_alpha: true - slice9 { - x: 0.0 - y: 0.0 - z: 0.0 - w: 0.0 - } - clipping_mode: CLIPPING_MODE_NONE - clipping_visible: true - clipping_inverted: false - alpha: 1.0 - template_node_child: false - size_mode: SIZE_MODE_MANUAL - custom_type: 0 - enabled: true visible: false - material: "" } nodes { - position { - x: 0.0 - y: 0.0 - z: 0.0 - w: 1.0 - } - rotation { - x: 0.0 - y: 0.0 - z: 0.0 - w: 1.0 - } - scale { - x: 1.0 - y: 1.0 - z: 1.0 - w: 1.0 - } - size { - x: 200.0 - y: 100.0 - z: 0.0 - w: 1.0 - } color { x: 0.31 y: 0.318 z: 0.322 - w: 1.0 } type: TYPE_BOX - blend_mode: BLEND_MODE_ALPHA - texture: "druid/icon_cross" + texture: "druid_example/icon_cross" id: "icon_close" - xanchor: XANCHOR_NONE - yanchor: YANCHOR_NONE - pivot: PIVOT_CENTER - adjust_mode: ADJUST_MODE_FIT parent: "button_close" - layer: "" inherit_alpha: true - slice9 { - x: 0.0 - y: 0.0 - z: 0.0 - w: 0.0 - } - clipping_mode: CLIPPING_MODE_NONE - clipping_visible: true - clipping_inverted: false - alpha: 1.0 - template_node_child: false size_mode: SIZE_MODE_AUTO - custom_type: 0 - enabled: true - visible: true - material: "" } nodes { position { - x: 0.0 y: -45.0 - z: 0.0 - w: 1.0 - } - rotation { - x: 0.0 - y: 0.0 - z: 0.0 - w: 1.0 - } - scale { - x: 1.0 - y: 1.0 - z: 1.0 - w: 1.0 } size { x: 700.0 y: 400.0 - z: 0.0 - w: 1.0 - } - color { - x: 1.0 - y: 1.0 - z: 1.0 - w: 1.0 } type: TYPE_BOX - blend_mode: BLEND_MODE_ALPHA - texture: "" id: "content" - xanchor: XANCHOR_NONE - yanchor: YANCHOR_NONE - pivot: PIVOT_CENTER - adjust_mode: ADJUST_MODE_FIT parent: "root" - layer: "" inherit_alpha: true - slice9 { - x: 0.0 - y: 0.0 - z: 0.0 - w: 0.0 - } - clipping_mode: CLIPPING_MODE_NONE - clipping_visible: true - clipping_inverted: false - alpha: 1.0 - template_node_child: false - size_mode: SIZE_MODE_MANUAL - custom_type: 0 - enabled: true visible: false - material: "" } nodes { position { - x: 0.0 y: 75.0 - z: 0.0 - w: 1.0 - } - rotation { - x: 0.0 - y: 0.0 - z: 0.0 - w: 1.0 } scale { x: 1.5 y: 1.5 - z: 1.0 - w: 1.0 } size { x: 420.0 y: 140.0 - z: 0.0 - w: 1.0 } color { x: 0.941 y: 0.984 - z: 1.0 - w: 1.0 } type: TYPE_TEXT - blend_mode: BLEND_MODE_ALPHA text: "You are the best!" font: "text_bold" id: "text" - xanchor: XANCHOR_NONE - yanchor: YANCHOR_NONE - pivot: PIVOT_CENTER outline { x: 1.0 y: 1.0 z: 1.0 - w: 1.0 } shadow { x: 1.0 y: 1.0 z: 1.0 - w: 1.0 } - adjust_mode: ADJUST_MODE_FIT line_break: true parent: "content" - layer: "" inherit_alpha: true - alpha: 1.0 outline_alpha: 0.0 shadow_alpha: 0.0 - template_node_child: false - text_leading: 1.0 - text_tracking: 0.0 - custom_type: 0 - enabled: true - visible: true - material: "" } nodes { position { - x: 0.0 y: -100.0 - z: 0.0 - w: 1.0 - } - rotation { - x: 0.0 - y: 0.0 - z: 0.0 - w: 1.0 - } - scale { - x: 1.0 - y: 1.0 - z: 1.0 - w: 1.0 - } - size { - x: 200.0 - y: 100.0 - z: 0.0 - w: 1.0 - } - color { - x: 1.0 - y: 1.0 - z: 1.0 - w: 1.0 } type: TYPE_TEMPLATE id: "button_accept" parent: "content" - layer: "" inherit_alpha: true - alpha: 1.0 template: "/example/templates/button_text_green.gui" - template_node_child: false - custom_type: 0 - enabled: true } nodes { - position { - x: 0.0 - y: 0.0 - z: 0.0 - w: 1.0 - } - rotation { - x: 0.0 - y: 0.0 - z: 0.0 - w: 1.0 - } - scale { - x: 1.0 - y: 1.0 - z: 1.0 - w: 1.0 - } - size { - x: 280.0 - y: 90.0 - z: 0.0 - w: 1.0 - } - color { - x: 0.557 - y: 0.835 - z: 0.62 - w: 1.0 - } type: TYPE_BOX - blend_mode: BLEND_MODE_ALPHA - texture: "druid/ui_circle_32" id: "button_accept/root" - xanchor: XANCHOR_NONE - yanchor: YANCHOR_NONE - pivot: PIVOT_CENTER - adjust_mode: ADJUST_MODE_FIT parent: "button_accept" - layer: "druid" - inherit_alpha: true - slice9 { - x: 16.0 - y: 16.0 - z: 16.0 - w: 16.0 - } - clipping_mode: CLIPPING_MODE_NONE - clipping_visible: true - clipping_inverted: false - alpha: 1.0 template_node_child: true - size_mode: SIZE_MODE_MANUAL - custom_type: 0 - enabled: true - visible: true - material: "" } nodes { - position { - x: 0.0 - y: 0.0 - z: 0.0 - w: 1.0 - } - rotation { - x: 0.0 - y: 0.0 - z: 0.0 - w: 1.0 - } - scale { - x: 1.0 - y: 1.0 - z: 1.0 - w: 1.0 - } - size { - x: 245.0 - y: 50.0 - z: 0.0 - w: 1.0 - } - color { - x: 0.31 - y: 0.318 - z: 0.322 - w: 1.0 - } type: TYPE_TEXT - blend_mode: BLEND_MODE_ALPHA - text: "Confirm" - font: "text_bold" id: "button_accept/text" - xanchor: XANCHOR_NONE - yanchor: YANCHOR_NONE - pivot: PIVOT_CENTER - outline { - x: 1.0 - y: 1.0 - z: 1.0 - w: 1.0 - } - shadow { - x: 1.0 - y: 1.0 - z: 1.0 - w: 1.0 - } - adjust_mode: ADJUST_MODE_FIT - line_break: false parent: "button_accept/root" - layer: "text_bold" - inherit_alpha: true - alpha: 1.0 - outline_alpha: 0.0 - shadow_alpha: 0.0 template_node_child: true - text_leading: 1.0 - text_tracking: 0.0 - custom_type: 0 - enabled: true - visible: true - material: "" } layers { name: "druid" @@ -676,4 +217,3 @@ layers { } material: "/builtins/materials/gui.material" adjust_reference: ADJUST_REFERENCE_PARENT -max_nodes: 512 diff --git a/example/examples/windows/window_info/window_info.lua b/example/examples/windows/window_info/window_info.lua index 26c36c1..5cae2be 100644 --- a/example/examples/windows/window_info/window_info.lua +++ b/example/examples/windows/window_info/window_info.lua @@ -1,31 +1,26 @@ -local component = require("druid.component") local panthera = require("panthera.panthera") -local lang_text = require("druid.extended.lang_text") local window_animation_panthera = require("example.examples.windows.window_animation_panthera") ----@class window_info: druid.base_component +---@class examples.window_info: druid.widget ---@field text_header druid.lang_text ---@field text_button_accept druid.lang_text ---@field text_description druid.lang_text ---@field button_close druid.button ----@field druid druid_instance -local M = component.create("window_info") +---@field button_accept druid.button +---@field animation panthera.animation +local M = {} ----@param template string ----@param nodes table -function M:init(template, nodes) - self.druid = self:get_druid(template, nodes) - - self.text_header = self.druid:new(lang_text, "text_header", "ui_information") --[[@as druid.lang_text]] - self.text_button_accept = self.druid:new(lang_text, "button_accept/text", "ui_accept") --[[@as druid.lang_text]] - self.text_description = self.druid:new(lang_text, "text") --[[@as druid.lang_text]] +function M:init() + self.text_header = self.druid:new_lang_text("text_header", "ui_information") --[[@as druid.lang_text]] + self.text_button_accept = self.druid:new_lang_text("button_accept/text", "ui_accept") --[[@as druid.lang_text]] + self.text_description = self.druid:new_lang_text("text") --[[@as druid.lang_text]] self.button_close = self.druid:new_button("button_close", self.on_button_close) self.button_accept = self.druid:new_button("button_accept/root") - self.animation = panthera.create_gui(window_animation_panthera, self:get_template(), nodes) + self.animation = panthera.create_gui(window_animation_panthera, self:get_template(), self:get_nodes()) panthera.play(self.animation, "open") end @@ -35,4 +30,16 @@ function M:on_button_close() end +---@param output_list output_list +function M:on_example_created(output_list) + self.text_header:translate("ui_information") + self.text_button_accept:translate("ui_confirm") + self.text_description:translate("ui_example_window_information_text") + + self.button_accept.on_click:subscribe(function() + output_list:add_log_text("Information Accepted") + end) +end + + return M diff --git a/example/examples/windows/window_language/window_language.collection b/example/examples/windows/window_language/window_language.collection index b479753..2912c9e 100644 --- a/example/examples/windows/window_language/window_language.collection +++ b/example/examples/windows/window_language/window_language.collection @@ -5,35 +5,6 @@ embedded_instances { data: "components {\n" " id: \"window_language\"\n" " component: \"/example/examples/windows/window_language/window_language.gui\"\n" - " position {\n" - " x: 0.0\n" - " y: 0.0\n" - " z: 0.0\n" - " }\n" - " rotation {\n" - " x: 0.0\n" - " y: 0.0\n" - " z: 0.0\n" - " w: 1.0\n" - " }\n" - " property_decls {\n" - " }\n" "}\n" "" - position { - x: 0.0 - y: 0.0 - z: 0.0 - } - rotation { - x: 0.0 - y: 0.0 - z: 0.0 - w: 1.0 - } - scale3 { - x: 1.0 - y: 1.0 - z: 1.0 - } } diff --git a/example/examples/windows/window_language/window_language.gui b/example/examples/windows/window_language/window_language.gui index 1076352..29c6763 100644 --- a/example/examples/windows/window_language/window_language.gui +++ b/example/examples/windows/window_language/window_language.gui @@ -4,55 +4,18 @@ fonts { font: "/example/assets/fonts/text_bold.font" } textures { - name: "druid" - texture: "/example/assets/druid.atlas" -} -background_color { - x: 0.0 - y: 0.0 - z: 0.0 - w: 0.0 + name: "druid_example" + texture: "/example/assets/druid_example.atlas" } nodes { - position { - x: 960.0 - y: 540.0 - z: 0.0 - w: 1.0 - } - rotation { - x: 0.0 - y: 0.0 - z: 0.0 - w: 1.0 - } - scale { - x: 1.0 - y: 1.0 - z: 1.0 - w: 1.0 - } size { x: 600.0 y: 580.0 - z: 0.0 - w: 1.0 - } - color { - x: 1.0 - y: 1.0 - z: 1.0 - w: 1.0 } type: TYPE_BOX - blend_mode: BLEND_MODE_ALPHA - texture: "druid/empty" + texture: "druid_example/empty" id: "root" - xanchor: XANCHOR_NONE - yanchor: YANCHOR_NONE - pivot: PIVOT_CENTER adjust_mode: ADJUST_MODE_STRETCH - layer: "" inherit_alpha: true slice9 { x: 16.0 @@ -60,58 +23,22 @@ nodes { z: 16.0 w: 16.0 } - clipping_mode: CLIPPING_MODE_NONE - clipping_visible: true - clipping_inverted: false - alpha: 1.0 - template_node_child: false - size_mode: SIZE_MODE_MANUAL - custom_type: 0 - enabled: true visible: false - material: "" } nodes { - position { - x: 0.0 - y: 0.0 - z: 0.0 - w: 1.0 - } - rotation { - x: 0.0 - y: 0.0 - z: 0.0 - w: 1.0 - } - scale { - x: 1.0 - y: 1.0 - z: 1.0 - w: 1.0 - } size { x: 600.0 y: 580.0 - z: 0.0 - w: 1.0 } color { x: 0.31 y: 0.318 z: 0.322 - w: 1.0 } type: TYPE_BOX - blend_mode: BLEND_MODE_ALPHA - texture: "druid/ui_circle_32" + texture: "druid_example/ui_circle_32" id: "window" - xanchor: XANCHOR_NONE - yanchor: YANCHOR_NONE - pivot: PIVOT_CENTER - adjust_mode: ADJUST_MODE_FIT parent: "root" - layer: "" inherit_alpha: true slice9 { x: 16.0 @@ -119,58 +46,25 @@ nodes { z: 16.0 w: 16.0 } - clipping_mode: CLIPPING_MODE_NONE - clipping_visible: true - clipping_inverted: false - alpha: 1.0 - template_node_child: false - size_mode: SIZE_MODE_MANUAL - custom_type: 0 - enabled: true - visible: true - material: "" } nodes { position { - x: 0.0 y: 290.0 - z: 0.0 - w: 1.0 - } - rotation { - x: 0.0 - y: 0.0 - z: 0.0 - w: 1.0 - } - scale { - x: 1.0 - y: 1.0 - z: 1.0 - w: 1.0 } size { x: 600.0 y: 92.0 - z: 0.0 - w: 1.0 } color { x: 0.631 y: 0.843 z: 0.961 - w: 1.0 } type: TYPE_BOX - blend_mode: BLEND_MODE_ALPHA - texture: "druid/ui_rounded_top_32" + texture: "druid_example/ui_rounded_top_32" id: "panel_header" - xanchor: XANCHOR_NONE - yanchor: YANCHOR_NONE pivot: PIVOT_N - adjust_mode: ADJUST_MODE_FIT parent: "window" - layer: "" inherit_alpha: true slice9 { x: 16.0 @@ -178,490 +72,119 @@ nodes { z: 16.0 w: 16.0 } - clipping_mode: CLIPPING_MODE_NONE - clipping_visible: true - clipping_inverted: false - alpha: 1.0 - template_node_child: false - size_mode: SIZE_MODE_MANUAL - custom_type: 0 - enabled: true - visible: true - material: "" } nodes { position { - x: 0.0 y: -46.0 - z: 0.0 - w: 1.0 - } - rotation { - x: 0.0 - y: 0.0 - z: 0.0 - w: 1.0 } scale { x: 1.5 y: 1.5 - z: 1.0 - w: 1.0 } size { x: 300.0 y: 50.0 - z: 0.0 - w: 1.0 } color { x: 0.31 y: 0.318 z: 0.322 - w: 1.0 } type: TYPE_TEXT - blend_mode: BLEND_MODE_ALPHA text: "Language" font: "text_bold" id: "text_header" - xanchor: XANCHOR_NONE - yanchor: YANCHOR_NONE - pivot: PIVOT_CENTER outline { x: 1.0 y: 1.0 z: 1.0 - w: 1.0 } shadow { x: 1.0 y: 1.0 z: 1.0 - w: 1.0 } - adjust_mode: ADJUST_MODE_FIT - line_break: false parent: "panel_header" - layer: "" inherit_alpha: true - alpha: 1.0 outline_alpha: 0.0 shadow_alpha: 0.0 - template_node_child: false - text_leading: 1.0 - text_tracking: 0.0 - custom_type: 0 - enabled: true - visible: true - material: "" } nodes { position { x: 250.0 y: -46.0 - z: 0.0 - w: 1.0 - } - rotation { - x: 0.0 - y: 0.0 - z: 0.0 - w: 1.0 - } - scale { - x: 1.0 - y: 1.0 - z: 1.0 - w: 1.0 } size { x: 100.0 y: 100.0 - z: 0.0 - w: 1.0 - } - color { - x: 1.0 - y: 1.0 - z: 1.0 - w: 1.0 } type: TYPE_BOX - blend_mode: BLEND_MODE_ALPHA - texture: "" id: "button_close" - xanchor: XANCHOR_NONE - yanchor: YANCHOR_NONE - pivot: PIVOT_CENTER - adjust_mode: ADJUST_MODE_FIT parent: "panel_header" - layer: "" inherit_alpha: true - slice9 { - x: 0.0 - y: 0.0 - z: 0.0 - w: 0.0 - } - clipping_mode: CLIPPING_MODE_NONE - clipping_visible: true - clipping_inverted: false - alpha: 1.0 - template_node_child: false - size_mode: SIZE_MODE_MANUAL - custom_type: 0 - enabled: true visible: false - material: "" } nodes { - position { - x: 0.0 - y: 0.0 - z: 0.0 - w: 1.0 - } - rotation { - x: 0.0 - y: 0.0 - z: 0.0 - w: 1.0 - } - scale { - x: 1.0 - y: 1.0 - z: 1.0 - w: 1.0 - } - size { - x: 200.0 - y: 100.0 - z: 0.0 - w: 1.0 - } color { x: 0.31 y: 0.318 z: 0.322 - w: 1.0 } type: TYPE_BOX - blend_mode: BLEND_MODE_ALPHA - texture: "druid/icon_cross" + texture: "druid_example/icon_cross" id: "icon_close" - xanchor: XANCHOR_NONE - yanchor: YANCHOR_NONE - pivot: PIVOT_CENTER - adjust_mode: ADJUST_MODE_FIT parent: "button_close" - layer: "" inherit_alpha: true - slice9 { - x: 0.0 - y: 0.0 - z: 0.0 - w: 0.0 - } - clipping_mode: CLIPPING_MODE_NONE - clipping_visible: true - clipping_inverted: false - alpha: 1.0 - template_node_child: false size_mode: SIZE_MODE_AUTO - custom_type: 0 - enabled: true - visible: true - material: "" } nodes { position { - x: 0.0 y: -45.0 - z: 0.0 - w: 1.0 - } - rotation { - x: 0.0 - y: 0.0 - z: 0.0 - w: 1.0 - } - scale { - x: 1.0 - y: 1.0 - z: 1.0 - w: 1.0 } size { x: 600.0 y: 470.0 - z: 0.0 - w: 1.0 - } - color { - x: 1.0 - y: 1.0 - z: 1.0 - w: 1.0 } type: TYPE_BOX - blend_mode: BLEND_MODE_ALPHA - texture: "" id: "content" - xanchor: XANCHOR_NONE - yanchor: YANCHOR_NONE - pivot: PIVOT_CENTER - adjust_mode: ADJUST_MODE_FIT parent: "root" - layer: "" inherit_alpha: true - slice9 { - x: 0.0 - y: 0.0 - z: 0.0 - w: 0.0 - } - clipping_mode: CLIPPING_MODE_NONE - clipping_visible: true - clipping_inverted: false - alpha: 1.0 - template_node_child: false - size_mode: SIZE_MODE_MANUAL - custom_type: 0 - enabled: true visible: false - material: "" } nodes { - position { - x: 0.0 - y: 0.0 - z: 0.0 - w: 1.0 - } - rotation { - x: 0.0 - y: 0.0 - z: 0.0 - w: 1.0 - } - scale { - x: 1.0 - y: 1.0 - z: 1.0 - w: 1.0 - } size { x: 260.0 y: 90.0 - z: 0.0 - w: 1.0 - } - color { - x: 1.0 - y: 1.0 - z: 1.0 - w: 1.0 } type: TYPE_BOX - blend_mode: BLEND_MODE_ALPHA - texture: "" id: "button_prefab" - xanchor: XANCHOR_NONE - yanchor: YANCHOR_NONE - pivot: PIVOT_CENTER - adjust_mode: ADJUST_MODE_FIT parent: "content" - layer: "" inherit_alpha: true - slice9 { - x: 0.0 - y: 0.0 - z: 0.0 - w: 0.0 - } - clipping_mode: CLIPPING_MODE_NONE - clipping_visible: true - clipping_inverted: false - alpha: 1.0 - template_node_child: false - size_mode: SIZE_MODE_MANUAL - custom_type: 0 - enabled: true visible: false - material: "" } nodes { - position { - x: 0.0 - y: 0.0 - z: 0.0 - w: 1.0 - } - rotation { - x: 0.0 - y: 0.0 - z: 0.0 - w: 1.0 - } - scale { - x: 1.0 - y: 1.0 - z: 1.0 - w: 1.0 - } - size { - x: 200.0 - y: 100.0 - z: 0.0 - w: 1.0 - } - color { - x: 1.0 - y: 1.0 - z: 1.0 - w: 1.0 - } type: TYPE_TEMPLATE id: "button" parent: "button_prefab" - layer: "" inherit_alpha: true - alpha: 1.0 template: "/example/templates/button_text_white.gui" - template_node_child: false - custom_type: 0 - enabled: true } nodes { - position { - x: 0.0 - y: 0.0 - z: 0.0 - w: 1.0 - } - rotation { - x: 0.0 - y: 0.0 - z: 0.0 - w: 1.0 - } - scale { - x: 1.0 - y: 1.0 - z: 1.0 - w: 1.0 - } size { - x: 240.0 - y: 70.0 - z: 0.0 - w: 1.0 - } - color { - x: 0.941 - y: 0.984 - z: 1.0 - w: 1.0 + x: 245.0 + y: 75.0 } type: TYPE_BOX - blend_mode: BLEND_MODE_ALPHA - texture: "druid/ui_circle_32" id: "button/root" - xanchor: XANCHOR_NONE - yanchor: YANCHOR_NONE - pivot: PIVOT_CENTER - adjust_mode: ADJUST_MODE_FIT parent: "button" - layer: "druid" - inherit_alpha: true - slice9 { - x: 16.0 - y: 16.0 - z: 16.0 - w: 16.0 - } - clipping_mode: CLIPPING_MODE_NONE - clipping_visible: true - clipping_inverted: false - alpha: 1.0 overridden_fields: 4 template_node_child: true - size_mode: SIZE_MODE_MANUAL - custom_type: 0 - enabled: true - visible: true - material: "" } nodes { - position { - x: 0.0 - y: 0.0 - z: 0.0 - w: 1.0 - } - rotation { - x: 0.0 - y: 0.0 - z: 0.0 - w: 1.0 - } - scale { - x: 1.0 - y: 1.0 - z: 1.0 - w: 1.0 - } - size { - x: 220.0 - y: 50.0 - z: 0.0 - w: 1.0 - } - color { - x: 0.31 - y: 0.318 - z: 0.322 - w: 1.0 - } type: TYPE_TEXT - blend_mode: BLEND_MODE_ALPHA - text: "English" - font: "text_bold" id: "button/text" - xanchor: XANCHOR_NONE - yanchor: YANCHOR_NONE - pivot: PIVOT_CENTER - outline { - x: 1.0 - y: 1.0 - z: 1.0 - w: 1.0 - } - shadow { - x: 1.0 - y: 1.0 - z: 1.0 - w: 1.0 - } - adjust_mode: ADJUST_MODE_FIT - line_break: false parent: "button/root" - layer: "text_bold" - inherit_alpha: true - alpha: 1.0 - outline_alpha: 0.0 - shadow_alpha: 0.0 - overridden_fields: 4 - overridden_fields: 8 template_node_child: true - text_leading: 1.0 - text_tracking: 0.0 - custom_type: 0 - enabled: true - visible: true - material: "" } layers { name: "druid" @@ -671,4 +194,3 @@ layers { } material: "/builtins/materials/gui.material" adjust_reference: ADJUST_REFERENCE_PARENT -max_nodes: 512 diff --git a/example/examples/windows/window_language/window_language.lua b/example/examples/windows/window_language/window_language.lua index f5f4120..b891213 100644 --- a/example/examples/windows/window_language/window_language.lua +++ b/example/examples/windows/window_language/window_language.lua @@ -1,31 +1,27 @@ local lang = require("lang.lang") local druid = require("druid.druid") -local event = require("druid.event") -local component = require("druid.component") -local lang_text = require("druid.extended.lang_text") +local event = require("event.event") local panthera = require("panthera.panthera") local window_animation_panthera = require("example.examples.windows.window_animation_panthera") ----@class window_language: druid.base_component +---@class examples.window_language: druid.widget ---@field text_header druid.text ---@field button_close druid.button ----@field druid druid_instance ---@field lang_buttons table ----@field grid druid.static_grid ----@field on_language_change druid.event -local M = component.create("window_language") +---@field grid druid.grid +---@field on_language_change event +---@field animation panthera.animation +local M = {} + ---Color: #F0FBFF local DEFAULT_LANGUAGE_COLOR = vmath.vector4(240/255, 251/255, 255/255, 1.0) ---Color: #E6DF9F local SELECTED_LANGUAGE_COLOR = vmath.vector4(230/255, 223/255, 159/255, 1.0) ----@param template string ----@param nodes table -function M:init(template, nodes) - self.druid = self:get_druid(template, nodes) +function M:init() self.lang_buttons = {} self.created_nodes = {} self.prefab = self:get_node("button_prefab") @@ -35,16 +31,16 @@ function M:init(template, nodes) self.button_close = self.druid:new_button("button_close", self.on_button_close) - self.druid:new(lang_text, "text_header", "ui_language") - self.grid = self.druid:new_static_grid("content", self.prefab, 2) + self.druid:new_lang_text("text_header", "ui_language") + self.grid = self.druid:new_grid("content", self.prefab, 2) self.grid.style.IS_DYNAMIC_NODE_POSES = true - self.animation = panthera.create_gui(window_animation_panthera, self:get_template(), nodes) + self.animation = panthera.create_gui(window_animation_panthera, self:get_template(), self:get_nodes()) panthera.play(self.animation, "open") self:load_langs() - self.on_language_change = event() + self.on_language_change = event.create() end @@ -73,7 +69,7 @@ function M:load_langs() local text = prefab_nodes[template .. "button/text"] local button = self.druid:new_button(button_node, self.on_language_button, lang_id) - self.druid:new(lang_text, text, "ui_language_" .. lang_id) + self.druid:new_lang_text(text, "ui_language_" .. lang_id) gui.set_enabled(root, true) self.grid:add(root) @@ -114,4 +110,12 @@ function M:on_language_button(lang_id) end +---@param output_list output_list +function M:on_example_created(output_list) + self.on_language_change:subscribe(function(language) + output_list:add_log_text("Language changed to " .. language) + end) +end + + return M diff --git a/example/locales/en.json b/example/locales/en.json index c05a651..774b6db 100644 --- a/example/locales/en.json +++ b/example/locales/en.json @@ -23,6 +23,7 @@ "ui_type_next": "Next Type", "ui_adjust_next": "Next Adjust", "ui_enabled": "Enabled", + "ui_item_size": "Item Size", "ui_examples_basic": "Basic", "ui_examples_data_list": "Data List", @@ -177,9 +178,27 @@ "ui_example_widget_property_checkbox": "Property Checkbox", "ui_example_widget_property_checkbox_description": "Here is a widget used in Properties panel", + "ui_example_widget_memory_panel": "Memory Panel", + "ui_example_widget_memory_panel_description": "Here is a example of memory panel usage", + + "ui_example_widget_fps_panel": "FPS Panel", + "ui_example_widget_fps_panel_description": "Here is a example of FPS panel usage", + + "ui_example_widget_mini_graph": "Mini Graph", + "ui_example_widget_mini_graph_description": "Here is a example of mini graph usage", + + "ui_example_widget_properties_panel": "Properties Panel", + "ui_example_widget_properties_panel_description": "Here is a example of properties panel usage", + + "ui_example_widget_property_input": "Property Input", + "ui_example_widget_property_input_description": "Here is a example of property input usage", + "ui_example_gamepad_tester": "Gamepad Tester", "ui_example_gamepad_tester_description": "Test your gamepad here to bind buttons and axes", + "ui_example_widget_tiling_node": "Tiling Node", + "ui_example_widget_tiling_node_description": "Here is a example of tiling node usage", + "ui_example_on_screen_control": "On Screen Control", "ui_example_on_screen_control_description": "Here is a example of on screen control. The on_screen_input here is a joystick with a callback as Druid component", @@ -193,6 +212,12 @@ "ui_example_panthera_animation_blend_description": "Here is a example of Panthera Animation Blend.", "ui_example_panthera_animation_blend_hint": "Hover mouse over this area", + "ui_example_container_anchors": "Container: Anchors", + "ui_example_container_anchors_description": "Here is a example of container anchors.", + + "ui_example_container_resize": "Container: Resize", + "ui_example_container_resize_description": "Here is a example of container resize.", + "ui_animation_vertical": "Vertical", "ui_animation_horizontal": "Horizontal", @@ -206,4 +231,4 @@ "ui_language_it": "Italiano", "ui_language_kr": "한국어", "ui_language_zh": "中文" -} \ No newline at end of file +} diff --git a/example/other/go_bindings/go_bindings.collection b/example/other/go_bindings/go_bindings.collection new file mode 100644 index 0000000..ade704a --- /dev/null +++ b/example/other/go_bindings/go_bindings.collection @@ -0,0 +1,33 @@ +name: "go_bindings" +scale_along_z: 0 +embedded_instances { + id: "go" + data: "components {\n" + " id: \"go_widget\"\n" + " component: \"/example/other/go_bindings/go_widget.gui\"\n" + "}\n" + "components {\n" + " id: \"go_bindings\"\n" + " component: \"/example/other/go_bindings/go_bindings.script\"\n" + "}\n" + "embedded_components {\n" + " id: \"sprite\"\n" + " type: \"sprite\"\n" + " data: \"default_animation: \\\"ui_circle_8\\\"\\n" + "material: \\\"/builtins/materials/sprite.material\\\"\\n" + "textures {\\n" + " sampler: \\\"texture_sampler\\\"\\n" + " texture: \\\"/druid/druid.atlas\\\"\\n" + "}\\n" + "\"\n" + " rotation {\n" + " z: 0.70710677\n" + " w: 0.70710677\n" + " }\n" + "}\n" + "" + position { + x: 776.0 + y: 366.0 + } +} diff --git a/example/other/go_bindings/go_bindings.script b/example/other/go_bindings/go_bindings.script new file mode 100644 index 0000000..aa7c12c --- /dev/null +++ b/example/other/go_bindings/go_bindings.script @@ -0,0 +1,26 @@ +local panthera = require("panthera.panthera") + +local animation = require("example.other.go_bindings.go_bindings_panthera") + +local druid = require("druid.druid") +local widget = require("example.other.go_bindings.go_widget") + +function init(self) + local gui_url = msg.url(nil, nil, "go_widget") + self.go_widget = druid.get_widget(widget, gui_url) + self.go_widget:play_animation() + self.go_widget:set_position(go.get_position()) + + self.animation = panthera.create_go(animation) + panthera.play(self.animation, "default", { + is_loop = true, + }) + + msg.post(".", "acquire_input_focus") +end + + +function update(self, dt) + self.go_widget:set_position(go.get_position()) +end + diff --git a/example/other/go_bindings/go_bindings_panthera.lua b/example/other/go_bindings/go_bindings_panthera.lua new file mode 100644 index 0000000..3d1ab31 --- /dev/null +++ b/example/other/go_bindings/go_bindings_panthera.lua @@ -0,0 +1,79 @@ +return { + data = { + animations = { + { + animation_id = "default", + animation_keys = { + { + duration = 1.13, + easing = "outback", + end_value = 706, + key_type = "tween", + node_id = "go", + property_id = "position_x", + start_value = 776, + }, + { + duration = 1.46, + easing = "outback", + end_value = 271, + key_type = "tween", + node_id = "go", + property_id = "position_y", + start_time = 1.13, + start_value = 366, + }, + { + duration = 1.44, + easing = "outback", + end_value = 826, + key_type = "tween", + node_id = "go", + property_id = "position_x", + start_time = 2.59, + start_value = 706, + }, + { + duration = 1.17, + easing = "outback", + end_value = 366, + key_type = "tween", + node_id = "go", + property_id = "position_y", + start_time = 4.02, + start_value = 271, + }, + { + duration = 0.81, + easing = "outback", + end_value = 776, + key_type = "tween", + node_id = "go", + property_id = "position_x", + start_time = 5.19, + start_value = 826, + }, + }, + duration = 6, + }, + }, + metadata = { + fps = 60, + gizmo_steps = { + }, + gui_path = "/example/other/go_bindings/go_bindings.collection", + layers = { + }, + settings = { + font_size = 30, + }, + template_animation_paths = { + }, + }, + nodes = { + }, + }, + format = "json", + type = "animation_editor", + version = 1, +} \ No newline at end of file diff --git a/example/other/go_bindings/go_widget.gui b/example/other/go_bindings/go_widget.gui new file mode 100644 index 0000000..7a88d2b --- /dev/null +++ b/example/other/go_bindings/go_widget.gui @@ -0,0 +1,156 @@ +script: "/druid/druid_widget.gui_script" +fonts { + name: "druid_text_bold" + font: "/druid/fonts/druid_text_bold.font" +} +textures { + name: "druid" + texture: "/druid/druid.atlas" +} +nodes { + type: TYPE_BOX + texture: "druid/empty" + id: "root" + inherit_alpha: true + size_mode: SIZE_MODE_AUTO +} +nodes { + position { + y: 20.0 + } + size { + x: 32.0 + y: 120.0 + } + type: TYPE_BOX + texture: "druid/ui_circle_32" + id: "circle" + pivot: PIVOT_S + parent: "root" + inherit_alpha: true + slice9 { + x: 16.0 + y: 16.0 + z: 16.0 + w: 16.0 + } +} +nodes { + position { + y: 190.0 + } + size { + x: 200.0 + y: 100.0 + } + type: TYPE_TEXT + text: "20" + font: "druid_text_bold" + id: "text" + parent: "root" + inherit_alpha: true + outline_alpha: 0.0 + shadow_alpha: 0.0 +} +nodes { + position { + x: 233.0 + y: 127.0 + } + type: TYPE_TEMPLATE + id: "memory_panel" + inherit_alpha: true + template: "/druid/widget/memory_panel/memory_panel.gui" +} +nodes { + type: TYPE_BOX + id: "memory_panel/root" + parent: "memory_panel" + template_node_child: true +} +nodes { + type: TYPE_TEMPLATE + id: "memory_panel/mini_graph" + parent: "memory_panel/root" + template_node_child: true +} +nodes { + type: TYPE_BOX + id: "memory_panel/mini_graph/root" + parent: "memory_panel/mini_graph" + template_node_child: true +} +nodes { + type: TYPE_BOX + id: "memory_panel/mini_graph/header" + parent: "memory_panel/mini_graph/root" + template_node_child: true +} +nodes { + type: TYPE_TEXT + id: "memory_panel/mini_graph/text_header" + parent: "memory_panel/mini_graph/header" + template_node_child: true +} +nodes { + type: TYPE_BOX + id: "memory_panel/mini_graph/icon_drag" + parent: "memory_panel/mini_graph/header" + template_node_child: true +} +nodes { + type: TYPE_BOX + id: "memory_panel/mini_graph/content" + parent: "memory_panel/mini_graph/root" + template_node_child: true +} +nodes { + type: TYPE_BOX + id: "memory_panel/mini_graph/prefab_line" + parent: "memory_panel/mini_graph/content" + template_node_child: true +} +nodes { + type: TYPE_BOX + id: "memory_panel/mini_graph/color_low" + parent: "memory_panel/mini_graph/content" + template_node_child: true +} +nodes { + type: TYPE_BOX + id: "memory_panel/content" + parent: "memory_panel/root" + template_node_child: true +} +nodes { + type: TYPE_TEXT + id: "memory_panel/text_max_value" + parent: "memory_panel/content" + template_node_child: true +} +nodes { + type: TYPE_TEXT + id: "memory_panel/text_per_second" + parent: "memory_panel/content" + template_node_child: true +} +nodes { + type: TYPE_BOX + id: "memory_panel/line_second_1" + parent: "memory_panel/content" + template_node_child: true +} +nodes { + type: TYPE_BOX + id: "memory_panel/line_second_2" + parent: "memory_panel/content" + template_node_child: true +} +nodes { + type: TYPE_TEXT + id: "memory_panel/text_memory" + parent: "memory_panel/content" + template_node_child: true +} +material: "/druid/materials/gui_world/gui_world.material" +adjust_reference: ADJUST_REFERENCE_DISABLED diff --git a/example/other/go_bindings/go_widget.lua b/example/other/go_bindings/go_widget.lua new file mode 100644 index 0000000..7d481f3 --- /dev/null +++ b/example/other/go_bindings/go_widget.lua @@ -0,0 +1,39 @@ +local panthera = require("panthera.panthera") + +local animation = require("example.other.go_bindings.go_widget_panthera") +local memory_panel = require("druid.widget.memory_panel.memory_panel") + +---@class druid.widget.go_widget: druid.widget +local M = {} + + +function M:init() + print("init widget", msg.url()) + self.root = self:get_node("root") + self.circle = self:get_node("circle") + self.animation = panthera.create_gui(animation) + self.counter = 0 + self.text_counter = self:get_node("text") + gui.set_text(self.text_counter, 0) + + self.memory_panel = self.druid:new_widget(memory_panel, "memory_panel") +end + + +function M:play_animation() + panthera.play(self.animation, "default", { + is_loop = true, + callback = function() + self.counter = self.counter + 1 + gui.set_text(self.text_counter, self.counter) + end + }) +end + + +---@param position vector3 The position to set +function M:set_position(position) + gui.set_position(self.root, position) +end + +return M diff --git a/example/other/go_bindings/go_widget_panthera.lua b/example/other/go_bindings/go_widget_panthera.lua new file mode 100644 index 0000000..ad69818 --- /dev/null +++ b/example/other/go_bindings/go_widget_panthera.lua @@ -0,0 +1,186 @@ +return { + data = { + animations = { + { + animation_id = "default", + animation_keys = { + { + easing = "outsine", + end_value = 1.6, + key_type = "tween", + node_id = "text", + property_id = "scale_x", + start_value = 1, + }, + { + easing = "outsine", + end_value = 1.6, + key_type = "tween", + node_id = "text", + property_id = "scale_y", + start_value = 1, + }, + { + duration = 0.15, + easing = "outsine", + end_value = 1, + key_type = "tween", + node_id = "text", + property_id = "scale_x", + start_value = 1.6, + }, + { + duration = 0.15, + easing = "outsine", + end_value = 1, + key_type = "tween", + node_id = "text", + property_id = "scale_y", + start_value = 1.6, + }, + { + duration = 0.39, + easing = "outsine", + end_value = 400, + key_type = "tween", + node_id = "text", + property_id = "position_y", + start_value = 190, + }, + { + duration = 0.43, + easing = "outsine", + end_value = 300, + key_type = "tween", + node_id = "circle", + property_id = "size_y", + start_value = 120, + }, + { + duration = 1, + easing = "inoutexpo", + end_value = 720, + key_type = "tween", + node_id = "root", + property_id = "rotation_z", + }, + { + duration = 0.24, + easing = "outsine", + end_value = 2, + key_type = "tween", + node_id = "text", + property_id = "scale_x", + start_time = 0.15, + start_value = 1, + }, + { + duration = 0.24, + easing = "outsine", + end_value = 2, + key_type = "tween", + node_id = "text", + property_id = "scale_y", + start_time = 0.15, + start_value = 1, + }, + { + duration = 0.3, + easing = "outsine", + key_type = "tween", + node_id = "circle", + property_id = "color_b", + start_time = 0.31, + start_value = 1, + }, + { + duration = 0.3, + easing = "outsine", + key_type = "tween", + node_id = "circle", + property_id = "color_g", + start_time = 0.31, + start_value = 1, + }, + { + duration = 0.61, + easing = "outsine", + end_value = 1, + key_type = "tween", + node_id = "text", + property_id = "scale_x", + start_time = 0.39, + start_value = 2, + }, + { + duration = 0.61, + easing = "outsine", + end_value = 1, + key_type = "tween", + node_id = "text", + property_id = "scale_y", + start_time = 0.39, + start_value = 2, + }, + { + duration = 0.26, + easing = "insine", + end_value = 1, + key_type = "tween", + node_id = "circle", + property_id = "color_b", + start_time = 0.61, + }, + { + duration = 0.26, + easing = "insine", + end_value = 1, + key_type = "tween", + node_id = "circle", + property_id = "color_g", + start_time = 0.61, + }, + { + duration = 0.36, + easing = "outsine", + end_value = 190, + key_type = "tween", + node_id = "text", + property_id = "position_y", + start_time = 0.62, + start_value = 400, + }, + { + duration = 0.35, + easing = "outsine", + end_value = 120, + key_type = "tween", + node_id = "circle", + property_id = "size_y", + start_time = 0.65, + start_value = 300, + }, + }, + duration = 1, + }, + }, + metadata = { + fps = 60, + gizmo_steps = { + }, + gui_path = "/example/other/go_bindings/go_widget.gui", + layers = { + }, + settings = { + font_size = 30, + }, + template_animation_paths = { + }, + }, + nodes = { + }, + }, + format = "json", + type = "animation_editor", + version = 1, +} \ No newline at end of file diff --git a/example/templates/button_text_blue.gui b/example/templates/button_text_blue.gui index ca44671..305913d 100644 --- a/example/templates/button_text_blue.gui +++ b/example/templates/button_text_blue.gui @@ -1,57 +1,24 @@ -script: "" fonts { name: "text_bold" font: "/example/assets/fonts/text_bold.font" } textures { - name: "druid" - texture: "/example/assets/druid.atlas" -} -background_color { - x: 0.0 - y: 0.0 - z: 0.0 - w: 0.0 + name: "druid_example" + texture: "/example/assets/druid_example.atlas" } nodes { - position { - x: 0.0 - y: 0.0 - z: 0.0 - w: 1.0 - } - rotation { - x: 0.0 - y: 0.0 - z: 0.0 - w: 1.0 - } - scale { - x: 1.0 - y: 1.0 - z: 1.0 - w: 1.0 - } size { x: 280.0 y: 90.0 - z: 0.0 - w: 1.0 } color { x: 0.631 y: 0.843 z: 0.961 - w: 1.0 } type: TYPE_BOX - blend_mode: BLEND_MODE_ALPHA - texture: "druid/ui_circle_32" + texture: "druid_example/ui_circle_32" id: "root" - xanchor: XANCHOR_NONE - yanchor: YANCHOR_NONE - pivot: PIVOT_CENTER - adjust_mode: ADJUST_MODE_FIT layer: "druid" inherit_alpha: true slice9 { @@ -60,90 +27,42 @@ nodes { z: 16.0 w: 16.0 } - clipping_mode: CLIPPING_MODE_NONE - clipping_visible: true - clipping_inverted: false - alpha: 1.0 - template_node_child: false - size_mode: SIZE_MODE_MANUAL - custom_type: 0 - enabled: true - visible: true - material: "" } nodes { - position { - x: 0.0 - y: 0.0 - z: 0.0 - w: 1.0 - } - rotation { - x: 0.0 - y: 0.0 - z: 0.0 - w: 1.0 - } - scale { - x: 1.0 - y: 1.0 - z: 1.0 - w: 1.0 - } size { x: 245.0 y: 50.0 - z: 0.0 - w: 1.0 } color { x: 0.31 y: 0.318 z: 0.322 - w: 1.0 } type: TYPE_TEXT - blend_mode: BLEND_MODE_ALPHA text: "Info" font: "text_bold" id: "text" - xanchor: XANCHOR_NONE - yanchor: YANCHOR_NONE - pivot: PIVOT_CENTER outline { x: 1.0 y: 1.0 z: 1.0 - w: 1.0 } shadow { x: 1.0 y: 1.0 z: 1.0 - w: 1.0 } - adjust_mode: ADJUST_MODE_FIT - line_break: false parent: "root" layer: "text_bold" inherit_alpha: true - alpha: 1.0 outline_alpha: 0.0 shadow_alpha: 0.0 - template_node_child: false - text_leading: 1.0 - text_tracking: 0.0 - custom_type: 0 - enabled: true - visible: true - material: "" } -material: "/builtins/materials/gui.material" -adjust_reference: ADJUST_REFERENCE_PARENT -max_nodes: 512 layers { name: "druid" } layers { name: "text_bold" } +material: "/builtins/materials/gui.material" +adjust_reference: ADJUST_REFERENCE_PARENT diff --git a/example/templates/button_text_green.gui b/example/templates/button_text_green.gui index 41d3b0f..81921b6 100644 --- a/example/templates/button_text_green.gui +++ b/example/templates/button_text_green.gui @@ -1,57 +1,24 @@ -script: "" fonts { name: "text_bold" font: "/example/assets/fonts/text_bold.font" } textures { - name: "druid" - texture: "/example/assets/druid.atlas" -} -background_color { - x: 0.0 - y: 0.0 - z: 0.0 - w: 0.0 + name: "druid_example" + texture: "/example/assets/druid_example.atlas" } nodes { - position { - x: 0.0 - y: 0.0 - z: 0.0 - w: 1.0 - } - rotation { - x: 0.0 - y: 0.0 - z: 0.0 - w: 1.0 - } - scale { - x: 1.0 - y: 1.0 - z: 1.0 - w: 1.0 - } size { x: 280.0 y: 90.0 - z: 0.0 - w: 1.0 } color { x: 0.557 y: 0.835 z: 0.62 - w: 1.0 } type: TYPE_BOX - blend_mode: BLEND_MODE_ALPHA - texture: "druid/ui_circle_32" + texture: "druid_example/ui_circle_32" id: "root" - xanchor: XANCHOR_NONE - yanchor: YANCHOR_NONE - pivot: PIVOT_CENTER - adjust_mode: ADJUST_MODE_FIT layer: "druid" inherit_alpha: true slice9 { @@ -60,83 +27,36 @@ nodes { z: 16.0 w: 16.0 } - clipping_mode: CLIPPING_MODE_NONE - clipping_visible: true - clipping_inverted: false - alpha: 1.0 - template_node_child: false - size_mode: SIZE_MODE_MANUAL - custom_type: 0 - enabled: true - visible: true - material: "" } nodes { - position { - x: 0.0 - y: 0.0 - z: 0.0 - w: 1.0 - } - rotation { - x: 0.0 - y: 0.0 - z: 0.0 - w: 1.0 - } - scale { - x: 1.0 - y: 1.0 - z: 1.0 - w: 1.0 - } size { x: 245.0 y: 50.0 - z: 0.0 - w: 1.0 } color { x: 0.31 y: 0.318 z: 0.322 - w: 1.0 } type: TYPE_TEXT - blend_mode: BLEND_MODE_ALPHA text: "Confirm" font: "text_bold" id: "text" - xanchor: XANCHOR_NONE - yanchor: YANCHOR_NONE - pivot: PIVOT_CENTER outline { x: 1.0 y: 1.0 z: 1.0 - w: 1.0 } shadow { x: 1.0 y: 1.0 z: 1.0 - w: 1.0 } - adjust_mode: ADJUST_MODE_FIT - line_break: false parent: "root" layer: "text_bold" inherit_alpha: true - alpha: 1.0 outline_alpha: 0.0 shadow_alpha: 0.0 - template_node_child: false - text_leading: 1.0 - text_tracking: 0.0 - custom_type: 0 - enabled: true - visible: true - material: "" } layers { name: "druid" @@ -146,4 +66,3 @@ layers { } material: "/builtins/materials/gui.material" adjust_reference: ADJUST_REFERENCE_PARENT -max_nodes: 512 diff --git a/example/templates/button_text_red.gui b/example/templates/button_text_red.gui index 737878b..1d8efd6 100644 --- a/example/templates/button_text_red.gui +++ b/example/templates/button_text_red.gui @@ -1,57 +1,24 @@ -script: "" fonts { name: "text_bold" font: "/example/assets/fonts/text_bold.font" } textures { - name: "druid" - texture: "/example/assets/druid.atlas" -} -background_color { - x: 0.0 - y: 0.0 - z: 0.0 - w: 0.0 + name: "druid_example" + texture: "/example/assets/druid_example.atlas" } nodes { - position { - x: 0.0 - y: 0.0 - z: 0.0 - w: 1.0 - } - rotation { - x: 0.0 - y: 0.0 - z: 0.0 - w: 1.0 - } - scale { - x: 1.0 - y: 1.0 - z: 1.0 - w: 1.0 - } size { x: 280.0 y: 90.0 - z: 0.0 - w: 1.0 } color { x: 0.957 y: 0.608 z: 0.608 - w: 1.0 } type: TYPE_BOX - blend_mode: BLEND_MODE_ALPHA - texture: "druid/ui_circle_32" + texture: "druid_example/ui_circle_32" id: "root" - xanchor: XANCHOR_NONE - yanchor: YANCHOR_NONE - pivot: PIVOT_CENTER - adjust_mode: ADJUST_MODE_FIT layer: "druid" inherit_alpha: true slice9 { @@ -60,83 +27,36 @@ nodes { z: 16.0 w: 16.0 } - clipping_mode: CLIPPING_MODE_NONE - clipping_visible: true - clipping_inverted: false - alpha: 1.0 - template_node_child: false - size_mode: SIZE_MODE_MANUAL - custom_type: 0 - enabled: true - visible: true - material: "" } nodes { - position { - x: 0.0 - y: 0.0 - z: 0.0 - w: 1.0 - } - rotation { - x: 0.0 - y: 0.0 - z: 0.0 - w: 1.0 - } - scale { - x: 1.0 - y: 1.0 - z: 1.0 - w: 1.0 - } size { x: 245.0 y: 50.0 - z: 0.0 - w: 1.0 } color { x: 0.31 y: 0.318 z: 0.322 - w: 1.0 } type: TYPE_TEXT - blend_mode: BLEND_MODE_ALPHA text: "Cancel" font: "text_bold" id: "text" - xanchor: XANCHOR_NONE - yanchor: YANCHOR_NONE - pivot: PIVOT_CENTER outline { x: 1.0 y: 1.0 z: 1.0 - w: 1.0 } shadow { x: 1.0 y: 1.0 z: 1.0 - w: 1.0 } - adjust_mode: ADJUST_MODE_FIT - line_break: false parent: "root" layer: "text_bold" inherit_alpha: true - alpha: 1.0 outline_alpha: 0.0 shadow_alpha: 0.0 - template_node_child: false - text_leading: 1.0 - text_tracking: 0.0 - custom_type: 0 - enabled: true - visible: true - material: "" } layers { name: "druid" @@ -146,4 +66,3 @@ layers { } material: "/builtins/materials/gui.material" adjust_reference: ADJUST_REFERENCE_PARENT -max_nodes: 512 diff --git a/example/templates/button_text_white.gui b/example/templates/button_text_white.gui index 2935f42..6925cc8 100644 --- a/example/templates/button_text_white.gui +++ b/example/templates/button_text_white.gui @@ -1,57 +1,23 @@ -script: "" fonts { name: "text_bold" font: "/example/assets/fonts/text_bold.font" } textures { - name: "druid" - texture: "/example/assets/druid.atlas" -} -background_color { - x: 0.0 - y: 0.0 - z: 0.0 - w: 0.0 + name: "druid_example" + texture: "/example/assets/druid_example.atlas" } nodes { - position { - x: 0.0 - y: 0.0 - z: 0.0 - w: 1.0 - } - rotation { - x: 0.0 - y: 0.0 - z: 0.0 - w: 1.0 - } - scale { - x: 1.0 - y: 1.0 - z: 1.0 - w: 1.0 - } size { x: 280.0 y: 90.0 - z: 0.0 - w: 1.0 } color { x: 0.941 y: 0.984 - z: 1.0 - w: 1.0 } type: TYPE_BOX - blend_mode: BLEND_MODE_ALPHA - texture: "druid/ui_circle_32" + texture: "druid_example/ui_circle_32" id: "root" - xanchor: XANCHOR_NONE - yanchor: YANCHOR_NONE - pivot: PIVOT_CENTER - adjust_mode: ADJUST_MODE_FIT layer: "druid" inherit_alpha: true slice9 { @@ -60,83 +26,36 @@ nodes { z: 16.0 w: 16.0 } - clipping_mode: CLIPPING_MODE_NONE - clipping_visible: true - clipping_inverted: false - alpha: 1.0 - template_node_child: false - size_mode: SIZE_MODE_MANUAL - custom_type: 0 - enabled: true - visible: true - material: "" } nodes { - position { - x: 0.0 - y: 0.0 - z: 0.0 - w: 1.0 - } - rotation { - x: 0.0 - y: 0.0 - z: 0.0 - w: 1.0 - } - scale { - x: 1.0 - y: 1.0 - z: 1.0 - w: 1.0 - } size { x: 245.0 y: 50.0 - z: 0.0 - w: 1.0 } color { x: 0.31 y: 0.318 z: 0.322 - w: 1.0 } type: TYPE_TEXT - blend_mode: BLEND_MODE_ALPHA text: "Action" font: "text_bold" id: "text" - xanchor: XANCHOR_NONE - yanchor: YANCHOR_NONE - pivot: PIVOT_CENTER outline { x: 1.0 y: 1.0 z: 1.0 - w: 1.0 } shadow { x: 1.0 y: 1.0 z: 1.0 - w: 1.0 } - adjust_mode: ADJUST_MODE_FIT - line_break: false parent: "root" layer: "text_bold" inherit_alpha: true - alpha: 1.0 outline_alpha: 0.0 shadow_alpha: 0.0 - template_node_child: false - text_leading: 1.0 - text_tracking: 0.0 - custom_type: 0 - enabled: true - visible: true - material: "" } layers { name: "druid" @@ -146,4 +65,3 @@ layers { } material: "/builtins/materials/gui.material" adjust_reference: ADJUST_REFERENCE_PARENT -max_nodes: 512 diff --git a/example/templates/button_text_yellow.gui b/example/templates/button_text_yellow.gui index 99593a5..2bd7677 100644 --- a/example/templates/button_text_yellow.gui +++ b/example/templates/button_text_yellow.gui @@ -1,57 +1,24 @@ -script: "" fonts { name: "text_bold" font: "/example/assets/fonts/text_bold.font" } textures { - name: "druid" - texture: "/example/assets/druid.atlas" -} -background_color { - x: 0.0 - y: 0.0 - z: 0.0 - w: 0.0 + name: "druid_example" + texture: "/example/assets/druid_example.atlas" } nodes { - position { - x: 0.0 - y: 0.0 - z: 0.0 - w: 1.0 - } - rotation { - x: 0.0 - y: 0.0 - z: 0.0 - w: 1.0 - } - scale { - x: 1.0 - y: 1.0 - z: 1.0 - w: 1.0 - } size { x: 280.0 y: 90.0 - z: 0.0 - w: 1.0 } color { x: 0.902 y: 0.875 z: 0.624 - w: 1.0 } type: TYPE_BOX - blend_mode: BLEND_MODE_ALPHA - texture: "druid/ui_circle_32" + texture: "druid_example/ui_circle_32" id: "root" - xanchor: XANCHOR_NONE - yanchor: YANCHOR_NONE - pivot: PIVOT_CENTER - adjust_mode: ADJUST_MODE_FIT layer: "druid" inherit_alpha: true slice9 { @@ -60,90 +27,42 @@ nodes { z: 16.0 w: 16.0 } - clipping_mode: CLIPPING_MODE_NONE - clipping_visible: true - clipping_inverted: false - alpha: 1.0 - template_node_child: false - size_mode: SIZE_MODE_MANUAL - custom_type: 0 - enabled: true - visible: true - material: "" } nodes { - position { - x: 0.0 - y: 0.0 - z: 0.0 - w: 1.0 - } - rotation { - x: 0.0 - y: 0.0 - z: 0.0 - w: 1.0 - } - scale { - x: 1.0 - y: 1.0 - z: 1.0 - w: 1.0 - } size { x: 245.0 y: 50.0 - z: 0.0 - w: 1.0 } color { x: 0.31 y: 0.318 z: 0.322 - w: 1.0 } type: TYPE_TEXT - blend_mode: BLEND_MODE_ALPHA text: "Warn" font: "text_bold" id: "text" - xanchor: XANCHOR_NONE - yanchor: YANCHOR_NONE - pivot: PIVOT_CENTER outline { x: 1.0 y: 1.0 z: 1.0 - w: 1.0 } shadow { x: 1.0 y: 1.0 z: 1.0 - w: 1.0 } - adjust_mode: ADJUST_MODE_FIT - line_break: false parent: "root" layer: "text_bold" inherit_alpha: true - alpha: 1.0 outline_alpha: 0.0 shadow_alpha: 0.0 - template_node_child: false - text_leading: 1.0 - text_tracking: 0.0 - custom_type: 0 - enabled: true - visible: true - material: "" } -material: "/builtins/materials/gui.material" -adjust_reference: ADJUST_REFERENCE_PARENT -max_nodes: 512 layers { name: "druid" } layers { name: "text_bold" } +material: "/builtins/materials/gui.material" +adjust_reference: ADJUST_REFERENCE_PARENT diff --git a/example/templates/input.gui b/example/templates/input.gui index 776bbbf..508eb27 100644 --- a/example/templates/input.gui +++ b/example/templates/input.gui @@ -1,58 +1,24 @@ -script: "" fonts { name: "text_bold" font: "/example/assets/fonts/text_bold.font" } textures { - name: "druid" - texture: "/example/assets/druid.atlas" -} -background_color { - x: 0.0 - y: 0.0 - z: 0.0 - w: 0.0 + name: "druid_example" + texture: "/example/assets/druid_example.atlas" } nodes { - position { - x: 0.0 - y: 0.0 - z: 0.0 - w: 1.0 - } - rotation { - x: 0.0 - y: 0.0 - z: 0.0 - w: 1.0 - } - scale { - x: 1.0 - y: 1.0 - z: 1.0 - w: 1.0 - } size { x: 500.0 y: 80.0 - z: 0.0 - w: 1.0 } color { x: 0.463 y: 0.475 z: 0.49 - w: 1.0 } type: TYPE_BOX - blend_mode: BLEND_MODE_ALPHA - texture: "druid/rect_round2_width1" + texture: "druid_example/rect_round2_width1" id: "root" - xanchor: XANCHOR_NONE - yanchor: YANCHOR_NONE - pivot: PIVOT_CENTER - adjust_mode: ADJUST_MODE_FIT - layer: "" inherit_alpha: true slice9 { x: 4.0 @@ -60,84 +26,39 @@ nodes { z: 4.0 w: 4.0 } - clipping_mode: CLIPPING_MODE_NONE - clipping_visible: true - clipping_inverted: false - alpha: 1.0 - template_node_child: false - size_mode: SIZE_MODE_MANUAL - custom_type: 0 - enabled: true - visible: true - material: "" } nodes { position { x: -240.0 - y: 0.0 - z: 0.0 - w: 1.0 - } - rotation { - x: 0.0 - y: 0.0 - z: 0.0 - w: 1.0 - } - scale { - x: 1.0 - y: 1.0 - z: 1.0 - w: 1.0 } size { x: 480.0 y: 50.0 - z: 0.0 - w: 1.0 } color { x: 0.722 y: 0.741 z: 0.761 - w: 1.0 } type: TYPE_TEXT - blend_mode: BLEND_MODE_ALPHA text: "Tap me to input" font: "text_bold" id: "text" - xanchor: XANCHOR_NONE - yanchor: YANCHOR_NONE pivot: PIVOT_W outline { x: 1.0 y: 1.0 z: 1.0 - w: 1.0 } shadow { x: 1.0 y: 1.0 z: 1.0 - w: 1.0 } - adjust_mode: ADJUST_MODE_FIT - line_break: false parent: "root" - layer: "" inherit_alpha: true - alpha: 1.0 outline_alpha: 0.0 shadow_alpha: 0.0 - template_node_child: false - text_leading: 1.0 - text_tracking: 0.0 - custom_type: 0 - enabled: true - visible: true - material: "" } material: "/builtins/materials/gui.material" adjust_reference: ADJUST_REFERENCE_PARENT -max_nodes: 512 diff --git a/example/templates/rich_input.gui b/example/templates/rich_input.gui index 5467ee9..89023bd 100644 --- a/example/templates/rich_input.gui +++ b/example/templates/rich_input.gui @@ -1,117 +1,30 @@ -script: "" fonts { name: "text_bold" font: "/example/assets/fonts/text_bold.font" } textures { - name: "druid" - texture: "/example/assets/druid.atlas" -} -background_color { - x: 0.0 - y: 0.0 - z: 0.0 - w: 0.0 + name: "druid_example" + texture: "/example/assets/druid_example.atlas" } nodes { - position { - x: 0.0 - y: 0.0 - z: 0.0 - w: 1.0 - } - rotation { - x: 0.0 - y: 0.0 - z: 0.0 - w: 1.0 - } - scale { - x: 1.0 - y: 1.0 - z: 1.0 - w: 1.0 - } size { x: 500.0 y: 80.0 - z: 0.0 - w: 1.0 - } - color { - x: 1.0 - y: 1.0 - z: 1.0 - w: 1.0 } type: TYPE_BOX - blend_mode: BLEND_MODE_ALPHA - texture: "" id: "root" - xanchor: XANCHOR_NONE - yanchor: YANCHOR_NONE - pivot: PIVOT_CENTER - adjust_mode: ADJUST_MODE_FIT - layer: "" inherit_alpha: true - slice9 { - x: 0.0 - y: 0.0 - z: 0.0 - w: 0.0 - } - clipping_mode: CLIPPING_MODE_NONE - clipping_visible: true - clipping_inverted: false - alpha: 1.0 - template_node_child: false - size_mode: SIZE_MODE_MANUAL - custom_type: 0 - enabled: true visible: false - material: "" } nodes { - position { - x: 0.0 - y: 0.0 - z: 0.0 - w: 1.0 - } - rotation { - x: 0.0 - y: 0.0 - z: 0.0 - w: 1.0 - } - scale { - x: 1.0 - y: 1.0 - z: 1.0 - w: 1.0 - } size { x: 500.0 y: 80.0 - z: 0.0 - w: 1.0 - } - color { - x: 1.0 - y: 1.0 - z: 1.0 - w: 1.0 } type: TYPE_BOX - blend_mode: BLEND_MODE_ALPHA - texture: "druid/rect_round2_width1" + texture: "druid_example/rect_round2_width1" id: "button" - xanchor: XANCHOR_NONE - yanchor: YANCHOR_NONE - pivot: PIVOT_CENTER - adjust_mode: ADJUST_MODE_FIT parent: "root" - layer: "" inherit_alpha: true slice9 { x: 4.0 @@ -119,192 +32,77 @@ nodes { z: 4.0 w: 4.0 } - clipping_mode: CLIPPING_MODE_NONE - clipping_visible: true - clipping_inverted: false - alpha: 1.0 - template_node_child: false - size_mode: SIZE_MODE_MANUAL - custom_type: 0 - enabled: true - visible: true - material: "" } nodes { - position { - x: 0.0 - y: 0.0 - z: 0.0 - w: 1.0 - } - rotation { - x: 0.0 - y: 0.0 - z: 0.0 - w: 1.0 - } - scale { - x: 1.0 - y: 1.0 - z: 1.0 - w: 1.0 - } size { x: 480.0 y: 60.0 - z: 0.0 - w: 1.0 } color { x: 0.31 y: 0.318 z: 0.322 - w: 1.0 } type: TYPE_TEXT - blend_mode: BLEND_MODE_ALPHA text: "Placeholder" font: "text_bold" id: "placeholder_text" - xanchor: XANCHOR_NONE - yanchor: YANCHOR_NONE - pivot: PIVOT_CENTER outline { x: 0.4 y: 0.4 z: 0.4 - w: 1.0 } shadow { x: 1.0 y: 1.0 z: 1.0 - w: 1.0 } - adjust_mode: ADJUST_MODE_FIT - line_break: false parent: "button" - layer: "" inherit_alpha: true - alpha: 1.0 outline_alpha: 0.0 shadow_alpha: 0.0 - template_node_child: false - text_leading: 1.0 - text_tracking: 0.0 - custom_type: 0 - enabled: true - visible: true - material: "" } nodes { - position { - x: 0.0 - y: 0.0 - z: 0.0 - w: 1.0 - } - rotation { - x: 0.0 - y: 0.0 - z: 0.0 - w: 1.0 - } - scale { - x: 1.0 - y: 1.0 - z: 1.0 - w: 1.0 - } size { x: 480.0 y: 60.0 - z: 0.0 - w: 1.0 } color { x: 0.722 y: 0.741 z: 0.761 - w: 1.0 } type: TYPE_TEXT - blend_mode: BLEND_MODE_ALPHA text: "User input" font: "text_bold" id: "input_text" - xanchor: XANCHOR_NONE - yanchor: YANCHOR_NONE - pivot: PIVOT_CENTER - outline { - x: 0.0 - y: 0.0 - z: 0.0 - w: 1.0 - } shadow { x: 1.0 y: 1.0 z: 1.0 - w: 1.0 } - adjust_mode: ADJUST_MODE_FIT - line_break: false parent: "button" - layer: "" inherit_alpha: true - alpha: 1.0 outline_alpha: 0.0 shadow_alpha: 0.0 - template_node_child: false - text_leading: 1.0 - text_tracking: 0.0 - custom_type: 0 - enabled: true - visible: true - material: "" } nodes { position { x: 118.0 - y: 0.0 - z: 0.0 - w: 1.0 - } - rotation { - x: 0.0 - y: 0.0 - z: 0.0 - w: 1.0 - } - scale { - x: 1.0 - y: 1.0 - z: 1.0 - w: 1.0 } size { x: 16.0 y: 50.0 - z: 0.0 - w: 1.0 } color { x: 0.631 y: 0.843 z: 0.961 - w: 1.0 } type: TYPE_BOX - blend_mode: BLEND_MODE_ALPHA - texture: "druid/ui_circle_16" + texture: "druid_example/ui_circle_16" id: "cursor_node" - xanchor: XANCHOR_NONE - yanchor: YANCHOR_NONE - pivot: PIVOT_CENTER - adjust_mode: ADJUST_MODE_FIT parent: "button" - layer: "" inherit_alpha: true slice9 { x: 8.0 @@ -312,84 +110,37 @@ nodes { z: 8.0 w: 8.0 } - clipping_mode: CLIPPING_MODE_NONE - clipping_visible: true - clipping_inverted: false alpha: 0.5 - template_node_child: false - size_mode: SIZE_MODE_MANUAL - custom_type: 0 - enabled: true - visible: true - material: "" } nodes { position { - x: 0.0 y: 4.0 - z: 0.0 - w: 1.0 - } - rotation { - x: 0.0 - y: 0.0 - z: 0.0 - w: 1.0 } scale { x: 1.2 y: 1.2 - z: 1.0 - w: 1.0 } size { x: 20.0 y: 40.0 - z: 0.0 - w: 1.0 } color { x: 0.722 y: 0.741 z: 0.761 - w: 1.0 } type: TYPE_TEXT - blend_mode: BLEND_MODE_ALPHA text: "|" font: "text_bold" id: "cursor_text" - xanchor: XANCHOR_NONE - yanchor: YANCHOR_NONE - pivot: PIVOT_CENTER - outline { - x: 0.0 - y: 0.0 - z: 0.0 - w: 1.0 - } shadow { x: 1.0 y: 1.0 z: 1.0 - w: 1.0 } - adjust_mode: ADJUST_MODE_FIT - line_break: false parent: "cursor_node" - layer: "" - inherit_alpha: false - alpha: 1.0 outline_alpha: 0.0 shadow_alpha: 0.0 - template_node_child: false - text_leading: 1.0 - text_tracking: 0.0 - custom_type: 0 - enabled: true - visible: true - material: "" } material: "/builtins/materials/gui.material" adjust_reference: ADJUST_REFERENCE_PARENT -max_nodes: 512 diff --git a/example/templates/slider.gui b/example/templates/slider.gui index ac7f71e..ce3cb31 100644 --- a/example/templates/slider.gui +++ b/example/templates/slider.gui @@ -1,113 +1,36 @@ -script: "" textures { - name: "druid" - texture: "/example/assets/druid.atlas" -} -background_color { - x: 0.0 - y: 0.0 - z: 0.0 - w: 0.0 + name: "druid_example" + texture: "/example/assets/druid_example.atlas" } nodes { - position { - x: 0.0 - y: 0.0 - z: 0.0 - w: 1.0 - } - rotation { - x: 0.0 - y: 0.0 - z: 0.0 - w: 1.0 - } - scale { - x: 1.0 - y: 1.0 - z: 1.0 - w: 1.0 - } size { x: 260.0 y: 40.0 - z: 0.0 - w: 1.0 } color { x: 0.129 y: 0.141 z: 0.157 - w: 1.0 } type: TYPE_BOX - blend_mode: BLEND_MODE_ALPHA - texture: "druid/empty" + texture: "druid_example/empty" id: "root" - xanchor: XANCHOR_NONE - yanchor: YANCHOR_NONE - pivot: PIVOT_CENTER - adjust_mode: ADJUST_MODE_FIT - layer: "" inherit_alpha: true - slice9 { - x: 0.0 - y: 0.0 - z: 0.0 - w: 0.0 - } - clipping_mode: CLIPPING_MODE_NONE - clipping_visible: true - clipping_inverted: false - alpha: 1.0 - template_node_child: false - size_mode: SIZE_MODE_MANUAL - custom_type: 0 - enabled: true - visible: true - material: "" } nodes { - position { - x: 0.0 - y: 0.0 - z: 0.0 - w: 1.0 - } - rotation { - x: 0.0 - y: 0.0 - z: 0.0 - w: 1.0 - } - scale { - x: 1.0 - y: 1.0 - z: 1.0 - w: 1.0 - } size { x: 260.0 y: 8.0 - z: 0.0 - w: 1.0 } color { x: 0.129 y: 0.141 z: 0.157 - w: 1.0 } type: TYPE_BOX - blend_mode: BLEND_MODE_ALPHA - texture: "druid/ui_circle_8" + texture: "druid_example/ui_circle_8" id: "slider_back" - xanchor: XANCHOR_NONE - yanchor: YANCHOR_NONE - pivot: PIVOT_CENTER - adjust_mode: ADJUST_MODE_FIT parent: "root" - layer: "" inherit_alpha: true slice9 { x: 4.0 @@ -115,58 +38,24 @@ nodes { z: 4.0 w: 4.0 } - clipping_mode: CLIPPING_MODE_NONE - clipping_visible: true - clipping_inverted: false - alpha: 1.0 - template_node_child: false - size_mode: SIZE_MODE_MANUAL - custom_type: 0 - enabled: true - visible: true - material: "" } nodes { position { x: -118.0 - y: 0.0 - z: 0.0 - w: 1.0 - } - rotation { - x: 0.0 - y: 0.0 - z: 0.0 - w: 1.0 - } - scale { - x: 1.0 - y: 1.0 - z: 1.0 - w: 1.0 } size { x: 24.0 y: 24.0 - z: 0.0 - w: 1.0 } color { x: 0.722 y: 0.741 z: 0.761 - w: 1.0 } type: TYPE_BOX - blend_mode: BLEND_MODE_ALPHA - texture: "druid/ui_circle_8" + texture: "druid_example/ui_circle_8" id: "slider_pin" - xanchor: XANCHOR_NONE - yanchor: YANCHOR_NONE - pivot: PIVOT_CENTER - adjust_mode: ADJUST_MODE_FIT parent: "root" - layer: "" inherit_alpha: true slice9 { x: 4.0 @@ -174,17 +63,6 @@ nodes { z: 4.0 w: 4.0 } - clipping_mode: CLIPPING_MODE_NONE - clipping_visible: true - clipping_inverted: false - alpha: 1.0 - template_node_child: false - size_mode: SIZE_MODE_MANUAL - custom_type: 0 - enabled: true - visible: true - material: "" } material: "/builtins/materials/gui.material" adjust_reference: ADJUST_REFERENCE_PARENT -max_nodes: 512 diff --git a/game.project b/game.project index 14bbabf..c194066 100644 --- a/game.project +++ b/game.project @@ -10,18 +10,21 @@ height = 1080 display_profiles = /builtins/render/default.display_profilesc dynamic_orientation = 1 high_dpi = 1 +update_frequency = 60 [project] -title = druid -version = 1.0.1 +title = Druid +version = 1.1.0 publisher = Insality developer = Maksim Tuprikov custom_resources = /example/locales dependencies#0 = https://github.com/britzl/deftest/archive/refs/tags/2.8.0.zip -dependencies#1 = https://github.com/Insality/defold-saver/archive/refs/tags/1.zip +dependencies#1 = https://github.com/Insality/defold-saver/archive/refs/heads/develop.zip dependencies#2 = https://github.com/Insality/defold-tweener/archive/refs/tags/3.zip -dependencies#3 = https://github.com/Insality/panthera/archive/refs/tags/runtime.4.zip +dependencies#3 = https://github.com/Insality/panthera/archive/refs/heads/develop.zip dependencies#4 = https://github.com/Insality/defold-lang/archive/refs/tags/3.zip +dependencies#5 = https://github.com/Insality/defold-event/archive/refs/heads/develop.zip +dependencies#6 = https://github.com/subsoap/defos/archive/refs/tags/v2.8.0.zip [library] include_dirs = druid @@ -33,8 +36,6 @@ game_binding = /builtins/input/all.input_bindingc [druid] no_auto_input = 0 -no_stencil_check = 0 -no_auto_template = 0 input_text = text input_touch = touch input_marked_text = marked_text @@ -57,7 +58,7 @@ cssfile = /builtins/manifests/web/dark_theme.css show_console_banner = 0 [native_extension] -app_manifest = +app_manifest = [graphics] texture_profiles = /builtins/graphics/default.texture_profiles @@ -106,3 +107,6 @@ path = /example/locales langs = en,ru,es,de,fr,ja,pt,it,kr,zh default = es +[event] +use_xpcall = 1 + diff --git a/liveupdate.settings b/liveupdate.settings deleted file mode 100644 index 6d746e9..0000000 --- a/liveupdate.settings +++ /dev/null @@ -1,4 +0,0 @@ -[liveupdate] -mode = Zip -supported-versions = - diff --git a/manifest.private.der b/manifest.private.der deleted file mode 100644 index 73a06b0..0000000 Binary files a/manifest.private.der and /dev/null differ diff --git a/manifest.public.der b/manifest.public.der deleted file mode 100644 index ebf423a..0000000 Binary files a/manifest.public.der and /dev/null differ diff --git a/settings_deployer b/settings_deployer index 448e40d..36ed926 100644 --- a/settings_deployer +++ b/settings_deployer @@ -2,7 +2,7 @@ bob_folder=./ # You can point bob version for project in format "filename:sha" -bob_sha="193:e4aaff11f49c941fde1dd93883cf69c6b8abebe4" +bob_sha=":868769ba7a3458db12d149188bf3be80a339a85c" # Select Defold channel. Values: stable, beta, alpha bob_channel="stable" @@ -14,4 +14,4 @@ use_latest_bob=false build_server="https://build.defold.com" # Is need to build html report -is_build_html_report=true \ No newline at end of file +is_build_html_report=true diff --git a/templates/default.gui b/templates/default.gui new file mode 100644 index 0000000..496af21 --- /dev/null +++ b/templates/default.gui @@ -0,0 +1,52 @@ +fonts { + name: "text_bold" + font: "/example/assets/fonts/text_bold.font" +} +fonts { + name: "text_regular" + font: "/example/assets/fonts/text_regular.font" +} +textures { + name: "druid_example" + texture: "/example/assets/druid_example.atlas" +} +nodes { + size { + x: 1000.0 + y: 1000.0 + } + color { + x: 0.173 + y: 0.184 + z: 0.204 + } + type: TYPE_BOX + texture: "druid_example/ui_circle_64" + id: "root" + inherit_alpha: true + slice9 { + x: 32.0 + y: 32.0 + z: 32.0 + w: 32.0 + } +} +nodes { + position { + y: 453.0 + } + size { + x: 600.0 + y: 100.0 + } + type: TYPE_TEXT + text: "Hello, New GUI File!" + font: "text_bold" + id: "text" + parent: "root" + inherit_alpha: true + outline_alpha: 0.0 + shadow_alpha: 0.0 +} +material: "/builtins/materials/gui.material" +adjust_reference: ADJUST_REFERENCE_PARENT diff --git a/test/helper/mock_input.lua b/test/helper/mock_input.lua index 27e575c..4c64010 100644 --- a/test/helper/mock_input.lua +++ b/test/helper/mock_input.lua @@ -58,5 +58,11 @@ function M.input_empty_action_nil(x, y) end +function M.input_text(text) + return hash("text"), { + text = text, + } +end + return M diff --git a/test/helper/test_helper.lua b/test/helper/test_helper.lua deleted file mode 100644 index a728a0d..0000000 --- a/test/helper/test_helper.lua +++ /dev/null @@ -1,19 +0,0 @@ -local mock = require("deftest.mock.mock") - -local M = {} - --- Userdata type instead of script self -function M.get_context() - return vmath.vector() -end - - --- Callback for return value from function -function M.get_function(callback) - local listener = {} - listener.callback = function(...) if callback then return callback(...) end end - mock.mock(listener) - return function(...) return listener.callback(...) end, listener.callback -end - -return M diff --git a/test/test.collection b/test/test.collection index fe2bf3f..503ceda 100644 --- a/test/test.collection +++ b/test/test.collection @@ -5,35 +5,6 @@ embedded_instances { data: "components {\n" " id: \"test\"\n" " component: \"/test/test.gui\"\n" - " position {\n" - " x: 0.0\n" - " y: 0.0\n" - " z: 0.0\n" - " }\n" - " rotation {\n" - " x: 0.0\n" - " y: 0.0\n" - " z: 0.0\n" - " w: 1.0\n" - " }\n" - " property_decls {\n" - " }\n" "}\n" "" - position { - x: 0.0 - y: 0.0 - z: 0.0 - } - rotation { - x: 0.0 - y: 0.0 - z: 0.0 - w: 1.0 - } - scale3 { - x: 1.0 - y: 1.0 - z: 1.0 - } } diff --git a/test/test.gui b/test/test.gui index d0f87d1..a6b3e36 100644 --- a/test/test.gui +++ b/test/test.gui @@ -1,10 +1,12 @@ script: "/test/test.gui_script" -background_color { - x: 0.0 - y: 0.0 - z: 0.0 - w: 0.0 +fonts { + name: "druid_text_bold" + font: "/druid/fonts/druid_text_bold.font" +} +textures { + name: "druid" + texture: "/druid/druid.atlas" } material: "/builtins/materials/gui.material" -adjust_reference: ADJUST_REFERENCE_PARENT -max_nodes: 512 +adjust_reference: ADJUST_REFERENCE_DISABLED +max_nodes: 2048 diff --git a/test/test.gui_script b/test/test.gui_script index 54dcb74..11e6a0a 100644 --- a/test/test.gui_script +++ b/test/test.gui_script @@ -1,22 +1,21 @@ local deftest = require("deftest.deftest") -local tests = { - -- Test list - require("test.tests.test_button"), - require("test.tests.test_hover"), - require("test.tests.test_drag"), - require("test.tests.test_back_handler"), - require("test.tests.test_blocker"), - --require("test.tests.test_static_grid"), -} - - function init(self) - print('[DefTest]: Init of DefTest') - for i = 1, #tests do - deftest.add(tests[i]) - end + deftest.add(require("test.tests.test_druid_instance")) + deftest.add(require("test.tests.test_back_handler")) + deftest.add(require("test.tests.test_blocker")) + deftest.add(require("test.tests.test_button")) + deftest.add(require("test.tests.test_container")) + deftest.add(require("test.tests.test_drag")) + deftest.add(require("test.tests.test_grid")) + deftest.add(require("test.tests.test_helper")) + deftest.add(require("test.tests.test_hover")) + deftest.add(require("test.tests.test_input")) + deftest.add(require("test.tests.test_layout")) + deftest.add(require("test.tests.test_rich_text")) + deftest.add(require("test.tests.test_scroll")) + deftest.add(require("test.tests.test_text")) - local is_report = (sys.get_config("test.report") == "1") + local is_report = (sys.get_config_int("test.report", 0) == 1) deftest.run({ coverage = { enabled = is_report } }) end diff --git a/test/tests/test_back_handler.lua b/test/tests/test_back_handler.lua index d0e489f..e422f61 100644 --- a/test/tests/test_back_handler.lua +++ b/test/tests/test_back_handler.lua @@ -1,49 +1,53 @@ return function() - local mock_gui = nil - local mock_time = nil - local mock_input = nil - local test_helper = nil - local druid_system = nil - - local druid = nil - local context = nil - describe("Back Handler component", function() + local mock_time + local mock_input + local druid_system + + local druid + local context + before(function() - mock_gui = require("deftest.mock.gui") mock_time = require("deftest.mock.time") mock_input = require("test.helper.mock_input") - test_helper = require("test.helper.test_helper") druid_system = require("druid.druid") - mock_gui.mock() mock_time.mock() - mock_time.set(60) + mock_time.set(0) - context = test_helper.get_context() + context = vmath.vector3() druid = druid_system.new(context) end) after(function() - mock_gui.unmock() mock_time.unmock() - druid:final(context) + druid:final() druid = nil end) it("Should react on back action id with custom args", function() - local on_back_handler, on_back_handler_mock = test_helper.get_function() - druid:new_back_handler(on_back_handler, { args = "custom" }) + local is_back_handler_called = false + local context_arg = nil + local back_handler_args = nil + + druid:new_back_handler(function(self, args) + context_arg = self + is_back_handler_called = true + back_handler_args = args + end, "custom") druid:on_input(mock_input.key_pressed("key_back")) druid:on_input(mock_input.key_released("key_back")) - assert(on_back_handler_mock.calls == 1) - assert(on_back_handler_mock.params[1] == context) - assert(on_back_handler_mock.params[2].args == "custom") + + assert(is_back_handler_called) + assert(back_handler_args == "custom") + assert(context_arg == context) + + is_back_handler_called = false druid:on_input(mock_input.key_pressed("key_a")) druid:on_input(mock_input.key_released("key_a")) - assert(on_back_handler_mock.calls == 1) + assert(is_back_handler_called == false) end) end) end diff --git a/test/tests/test_blocker.lua b/test/tests/test_blocker.lua index 3c32481..2c03e18 100644 --- a/test/tests/test_blocker.lua +++ b/test/tests/test_blocker.lua @@ -1,101 +1,93 @@ return function() - local mock_gui = nil - local mock_time = nil - local mock_input = nil - local test_helper = nil - local druid_system = nil - - local druid = nil - local context = nil - describe("Blocker component", function() + local mock_time + local mock_input + local druid_system + + local druid ---@type druid.instance + local context + before(function() - mock_gui = require("deftest.mock.gui") mock_time = require("deftest.mock.time") mock_input = require("test.helper.mock_input") - test_helper = require("test.helper.test_helper") druid_system = require("druid.druid") - mock_gui.mock() mock_time.mock() - mock_time.set(60) + mock_time.set(0) - context = test_helper.get_context() + context = vmath.vector3() druid = druid_system.new(context) end) after(function() - mock_gui.unmock() mock_time.unmock() - druid:final(context) + druid:final() druid = nil end) it("Should consume input", function() - local button_node = mock_gui.add_box("button", 0, 0, 100, 50) - local blocker_node = mock_gui.add_box("blocker", 20, 20, 20, 20) - local on_click, on_click_mock = test_helper.get_function() + local button_node = gui.new_box_node(vmath.vector3(0, 0, 0), vmath.vector3(150, 150, 0)) + local blocker_node = gui.new_box_node(vmath.vector3(0, 0, 0), vmath.vector3(20, 20, 0)) + local on_click_calls = 0 - druid:new_button(button_node, on_click) + druid:new_button(button_node, function() + on_click_calls = on_click_calls + 1 + end) druid:new_blocker(blocker_node) - druid:on_input(mock_input.click_pressed(10, 10)) - druid:on_input(mock_input.click_released(10, 10)) - assert(on_click_mock.calls == 1) + druid:on_input(mock_input.click_pressed(20, 20)) + druid:on_input(mock_input.click_released(20, 20)) + assert(on_click_calls == 1) -- Click should been consumed by blocker component - druid:on_input(mock_input.click_pressed(20, 20)) - druid:on_input(mock_input.click_released(20, 20)) - assert(on_click_mock.calls == 1) + druid:on_input(mock_input.click_pressed(0, 0)) + druid:on_input(mock_input.click_released(0, 0)) + assert(on_click_calls == 1) -- If move from button to blocker, should consume too - druid:on_input(mock_input.click_pressed(10, 10)) - druid:on_input(mock_input.click_released(20, 20)) - assert(on_click_mock.calls == 1) + druid:on_input(mock_input.click_pressed(40, 40)) + druid:on_input(mock_input.click_released(0, 0)) + assert(on_click_calls == 1) -- And from blocker to button too - druid:on_input(mock_input.click_pressed(20, 20)) - druid:on_input(mock_input.click_released(10, 10)) - assert(on_click_mock.calls == 1) + druid:on_input(mock_input.click_pressed(0, 0)) + druid:on_input(mock_input.click_released(40, 40)) + assert(on_click_calls == 1) + + -- Usual click after that should work + druid:on_input(mock_input.click_pressed(40, 40)) + druid:on_input(mock_input.click_released(40, 40)) + assert(on_click_calls == 2) end) - it("Should be disabled via node or set_enabled", function() - local button_node = mock_gui.add_box("button", 0, 0, 100, 50) - local blocker_node = mock_gui.add_box("blocker", 20, 20, 20, 20) - local on_click, on_click_mock = test_helper.get_function() + it("Should be disabled via set_enabled", function() + local button_node = gui.new_box_node(vmath.vector3(0, 0, 0), vmath.vector3(100, 100, 0)) + local blocker_node = gui.new_box_node(vmath.vector3(0, 0, 0), vmath.vector3(20, 20, 0)) + local on_click_calls = 0 - druid:new_button(button_node, on_click) + druid:new_button(button_node, function() + on_click_calls = on_click_calls + 1 + end) local blocker = druid:new_blocker(blocker_node) -- Click should been consumed by blocker component - druid:on_input(mock_input.click_pressed(20, 20)) - druid:on_input(mock_input.click_released(20, 20)) - assert(on_click_mock.calls == 0) + druid:on_input(mock_input.click_pressed(0, 0)) + druid:on_input(mock_input.click_released(0, 0)) + assert(on_click_calls == 0) -- Disable blocker component blocker:set_enabled(false) - druid:on_input(mock_input.click_pressed(20, 20)) - druid:on_input(mock_input.click_released(20, 20)) - assert(gui.is_enabled(blocker_node) == true) + druid:on_input(mock_input.click_pressed(0, 0)) + druid:on_input(mock_input.click_released(0, 0)) assert(blocker:is_enabled() == false) - assert(on_click_mock.calls == 1) + assert(on_click_calls == 1) - -- Disable blocker node component + -- Enable blocker component again blocker:set_enabled(true) - gui.set_enabled(blocker_node, false) - druid:on_input(mock_input.click_pressed(20, 20)) - druid:on_input(mock_input.click_released(20, 20)) - assert(gui.is_enabled(blocker_node) == false) + druid:on_input(mock_input.click_pressed(0, 0)) + druid:on_input(mock_input.click_released(0, 0)) assert(blocker:is_enabled() == true) - assert(on_click_mock.calls == 2) - - -- Return state - gui.set_enabled(blocker_node, true) - druid:on_input(mock_input.click_pressed(20, 20)) - druid:on_input(mock_input.click_released(20, 20)) - assert(gui.is_enabled(blocker_node) == true) - assert(blocker:is_enabled() == true) - assert(on_click_mock.calls == 2) + assert(on_click_calls == 1) end) end) end diff --git a/test/tests/test_button.lua b/test/tests/test_button.lua index 057135b..e87bfd3 100644 --- a/test/tests/test_button.lua +++ b/test/tests/test_button.lua @@ -1,57 +1,72 @@ return function() - local mock_gui = nil - local mock_time = nil - local mock_input = nil - local test_helper = nil - local druid_system = nil - - local druid = nil - local context = nil - describe("Button Component", function() + local mock_time + local mock_input + local druid_system + + local druid + local context + before(function() - mock_gui = require("deftest.mock.gui") mock_time = require("deftest.mock.time") mock_input = require("test.helper.mock_input") - test_helper = require("test.helper.test_helper") druid_system = require("druid.druid") - mock_gui.mock() mock_time.mock() - mock_time.set(60) + mock_time.set(0) - context = test_helper.get_context() + context = vmath.vector3() druid = druid_system.new(context) end) after(function() - mock_gui.unmock() mock_time.unmock() - druid:final(context) + druid:final() druid = nil end) it("Should do usual click", function() - local button = mock_gui.add_box("button", 0, 0, 100, 50) + local button = gui.new_box_node(vmath.vector3(50, 25, 0), vmath.vector3(100, 50, 0)) local button_params = {} - local on_click, on_click_mock = test_helper.get_function() + + local on_click_calls = 0 + local on_click_params = {} + local function on_click(self, params, button_instance) + on_click_calls = on_click_calls + 1 + on_click_params[1] = self + on_click_params[2] = params + on_click_params[3] = button_instance + end + local instance = druid:new_button(button, on_click, button_params) local is_clicked_pressed = druid:on_input(mock_input.click_pressed(10, 10)) local is_clicked_released = druid:on_input(mock_input.click_released(20, 10)) assert(is_clicked_pressed) assert(is_clicked_released) - assert(on_click_mock.calls == 1) - assert(on_click_mock.params[1] == context) - assert(on_click_mock.params[2] == button_params) - assert(on_click_mock.params[3] == instance) + assert(on_click_calls == 1) + assert(on_click_params[1] == context) + assert(on_click_params[2] == button_params) + assert(on_click_params[3] == instance) end) it("Should do long click if exists", function() - local button = mock_gui.add_box("button", 0, 0, 100, 50) + local button = gui.new_box_node(vmath.vector3(50, 25, 0), vmath.vector3(100, 50, 0)) local button_params = {} - local on_click, on_click_mock = test_helper.get_function() - local on_long_click, on_long_click_mock = test_helper.get_function() + + local on_click_calls = 0 + local function on_click() + on_click_calls = on_click_calls + 1 + end + + local on_long_click_calls = 0 + local on_long_click_params = {} + local function on_long_click(self, params, button_instance) + on_long_click_calls = on_long_click_calls + 1 + on_long_click_params[1] = self + on_long_click_params[2] = params + on_long_click_params[3] = button_instance + end local instance = druid:new_button(button, on_click, button_params) instance.on_long_click:subscribe(on_long_click) @@ -59,52 +74,73 @@ return function() mock_time.elapse(0.3) druid:on_input(mock_input.click_released(20, 10)) - assert(on_click_mock.calls == 1) - assert(on_long_click_mock.calls == 0) + assert(on_click_calls == 1) + assert(on_long_click_calls == 0) druid:on_input(mock_input.click_pressed(10, 10)) mock_time.elapse(1) druid:on_input(mock_input.click_released(20, 10)) - assert(on_click_mock.calls == 1) - assert(on_long_click_mock.calls == 1) - assert(on_long_click_mock.params[1] == context) - assert(on_long_click_mock.params[2] == button_params) - assert(on_long_click_mock.params[3] == instance) + assert(on_click_calls == 1) + assert(on_long_click_calls == 1) + assert(on_long_click_params[1] == context) + assert(on_long_click_params[2] == button_params) + assert(on_long_click_params[3] == instance) end) it("Should do not long click if not exists", function() - local button = mock_gui.add_box("button", 0, 0, 100, 50) + local button = gui.new_box_node(vmath.vector3(50, 25, 0), vmath.vector3(100, 50, 0)) local button_params = {} - local on_click, on_click_mock = test_helper.get_function() + + local on_click_calls = 0 + local function on_click() + on_click_calls = on_click_calls + 1 + end + druid:new_button(button, on_click, button_params) druid:on_input(mock_input.click_pressed(10, 10)) mock_time.elapse(0.5) druid:on_input(mock_input.click_released(20, 10)) - assert(on_click_mock.calls == 1) + assert(on_click_calls == 1) end) it("Should do double click if exists", function() - local button = mock_gui.add_box("button", 0, 0, 100, 50) + --TODO: At zero it thinks it is double click + -- Need to fix it in button + mock_time.set(10) + local button = gui.new_box_node(vmath.vector3(50, 25, 0), vmath.vector3(100, 50, 0)) local button_params = {} - local on_click, on_click_mock = test_helper.get_function() - local on_double_click, on_double_click_mock = test_helper.get_function() + + local on_click_calls = 0 + local function on_click() + on_click_calls = on_click_calls + 1 + end + + local on_double_click_calls = 0 + local on_double_click_params = {} + local function on_double_click(self, params, button_instance) + on_double_click_calls = on_double_click_calls + 1 + on_double_click_params[1] = self + on_double_click_params[2] = params + on_double_click_params[3] = button_instance + end local instance = druid:new_button(button, on_click, button_params) instance.on_double_click:subscribe(on_double_click) - druid:on_input(mock_input.click_pressed(10, 10)) - druid:on_input(mock_input.click_released(20, 10)) + druid:on_input(mock_input.click_pressed(50, 25)) + druid:on_input(mock_input.click_released(50, 25)) - mock_time.elapse(0.1) - druid:on_input(mock_input.click_pressed(10, 10)) - druid:on_input(mock_input.click_released(20, 10)) + -- DOUBLETAP_TIME by default is 0.4 + mock_time.elapse(0.2) + druid:on_input(mock_input.click_pressed(50, 25)) + druid:on_input(mock_input.click_released(50, 25)) - assert(on_click_mock.calls == 1) - assert(on_double_click_mock.calls == 1) - assert(on_double_click_mock.params[1] == context) - assert(on_double_click_mock.params[2] == button_params) - assert(on_double_click_mock.params[3] == instance) + assert(on_click_calls == 1) + assert(on_double_click_calls == 1) + assert(on_double_click_params[1] == context) + assert(on_double_click_params[2] == button_params) + assert(on_double_click_params[3] == instance) mock_time.elapse(1) druid:on_input(mock_input.click_pressed(10, 10)) @@ -114,14 +150,19 @@ return function() druid:on_input(mock_input.click_pressed(10, 10)) druid:on_input(mock_input.click_released(20, 10)) - assert(on_click_mock.calls == 3) - assert(on_double_click_mock.calls == 1) + assert(on_click_calls == 3) + assert(on_double_click_calls == 1) end) it("Should do not double click if not exists", function() - local button = mock_gui.add_box("button", 0, 0, 100, 50) + local button = gui.new_box_node(vmath.vector3(50, 25, 0), vmath.vector3(100, 50, 0)) local button_params = {} - local on_click, on_click_mock = test_helper.get_function() + + local on_click_calls = 0 + local function on_click() + on_click_calls = on_click_calls + 1 + end + druid:new_button(button, on_click, button_params) druid:on_input(mock_input.click_pressed(10, 10)) @@ -130,15 +171,32 @@ return function() druid:on_input(mock_input.click_pressed(10, 10)) druid:on_input(mock_input.click_released(20, 10)) - assert(on_click_mock.calls == 2) + assert(on_click_calls == 2) end) it("Should do hold click if exists", function() - local button = mock_gui.add_box("button", 0, 0, 100, 50) + local button = gui.new_box_node(vmath.vector3(50, 25, 0), vmath.vector3(100, 50, 0)) local button_params = {} - local on_click, on_click_mock = test_helper.get_function() - local on_long_click, on_long_click_mock = test_helper.get_function() - local on_hold_callback, on_hold_callback_mock = test_helper.get_function() + + local on_click_calls = 0 + local function on_click() + on_click_calls = on_click_calls + 1 + end + + local on_long_click_calls = 0 + local on_long_click_params = {} + local function on_long_click(self, params, button_instance) + on_long_click_calls = on_long_click_calls + 1 + on_long_click_params[1] = self + on_long_click_params[2] = params + on_long_click_params[3] = button_instance + end + + local on_hold_callback_calls = 0 + local function on_hold_callback() + on_hold_callback_calls = on_hold_callback_calls + 1 + end + local instance = druid:new_button(button, on_click, button_params) instance.on_long_click:subscribe(on_long_click) -- long click required for hold callback instance.on_hold_callback:subscribe(on_hold_callback) @@ -147,112 +205,161 @@ return function() mock_time.elapse(1) -- time between hold treshold and autorelease hold time druid:on_input(mock_input.input_empty(10, 10)) - pprint(on_long_click_mock) - assert(on_click_mock.calls == 0) - assert(on_long_click_mock.calls == 1) - assert(on_long_click_mock.params[1] == context) - assert(on_long_click_mock.params[2] == button_params) - assert(on_long_click_mock.params[3] == instance) + assert(on_click_calls == 0) + assert(on_long_click_calls == 1) + assert(on_long_click_params[1] == context) + assert(on_long_click_params[2] == button_params) + assert(on_long_click_params[3] == instance) druid:on_input(mock_input.click_released(10, 10)) - assert(on_click_mock.calls == 0) - assert(on_long_click_mock.calls == 1) + assert(on_click_calls == 0) + assert(on_long_click_calls == 1) end) it("Should do click outside if exists", function() - local button = mock_gui.add_box("button", 0, 0, 100, 50) + local button = gui.new_box_node(vmath.vector3(50, 25, 0), vmath.vector3(100, 50, 0)) local button_params = {} - local on_click = test_helper.get_function() - local on_click_outside, on_click_outside_mock = test_helper.get_function() + + local on_click_calls = 0 + local function on_click() + on_click_calls = on_click_calls + 1 + end + + local on_click_outside_calls = 0 + local function on_click_outside() + on_click_outside_calls = on_click_outside_calls + 1 + end + local instance = druid:new_button(button, on_click, button_params) instance.on_click_outside:subscribe(on_click_outside) - druid:on_input(mock_input.click_pressed(-10, 10)) - druid:on_input(mock_input.click_released(-10, 10)) + druid:on_input(mock_input.click_pressed(120, 10)) + druid:on_input(mock_input.click_released(120, 10)) - assert(on_click_outside_mock.calls == 1) + assert(on_click_outside_calls == 1) mock_time.elapse(1) druid:on_input(mock_input.click_pressed(10, 10)) - druid:on_input(mock_input.click_released(-10, 10)) + druid:on_input(mock_input.click_released(120, 10)) - assert(on_click_outside_mock.calls == 2) + assert(on_click_outside_calls == 2) end) it("Should not click if mouse was outside while clicking", function() - local button = mock_gui.add_box("button", 0, 0, 100, 50) + local button = gui.new_box_node(vmath.vector3(50, 25, 0), vmath.vector3(100, 50, 0)) local button_params = {} - local on_click, on_click_mock = test_helper.get_function() + + local on_click_calls = 0 + local function on_click() + on_click_calls = on_click_calls + 1 + end + druid:new_button(button, on_click, button_params) druid:on_input(mock_input.click_pressed(10, 10)) - druid:on_input(mock_input.input_empty(-10, 10)) + druid:on_input(mock_input.input_empty(120, 10)) druid:on_input(mock_input.click_released(20, 10)) - assert(on_click_mock.calls == 0) + assert(on_click_calls == 0) end) it("Should work with check function", function() - local button = mock_gui.add_box("button", 0, 0, 100, 50) + local button = gui.new_box_node(vmath.vector3(50, 25, 0), vmath.vector3(100, 50, 0)) local button_params = {} - local on_click, on_click_mock = test_helper.get_function() + + local on_click_calls = 0 + local function on_click() + on_click_calls = on_click_calls + 1 + end + local instance = druid:new_button(button, on_click, button_params) - local check_function, check_function_mock = test_helper.get_function(function() return false end) - local failure_function, failure_function_mock = test_helper.get_function() + + local check_function_calls = 0 + local function check_function() + check_function_calls = check_function_calls + 1 + return false + end + + local failure_function_calls = 0 + local function failure_function() + failure_function_calls = failure_function_calls + 1 + end + instance:set_check_function(check_function, failure_function) druid:on_input(mock_input.click_pressed(10, 10)) druid:on_input(mock_input.click_released(20, 10)) - assert(on_click_mock.calls == 0) - assert(check_function_mock.calls == 1) - assert(failure_function_mock.calls == 1) + assert(on_click_calls == 0) + assert(check_function_calls == 1) + assert(failure_function_calls == 1) + + local check_true_function_calls = 0 + local function check_true_function() + check_true_function_calls = check_true_function_calls + 1 + return true + end - local check_true_function, check_function_true_mock = test_helper.get_function(function() return true end) instance:set_check_function(check_true_function, failure_function) mock_time.elapse(1) druid:on_input(mock_input.click_pressed(10, 10)) druid:on_input(mock_input.click_released(20, 10)) - assert(on_click_mock.calls == 1) - assert(check_function_true_mock.calls == 1) - assert(failure_function_mock.calls == 1) + assert(on_click_calls == 1) + assert(check_true_function_calls == 1) + assert(failure_function_calls == 1) end) it("Should have key trigger", function() - local button = mock_gui.add_box("button", 0, 0, 100, 50) + local button = gui.new_box_node(vmath.vector3(50, 25, 0), vmath.vector3(100, 50, 0)) local button_params = {} - local on_click, on_click_mock = test_helper.get_function() + + local on_click_calls = 0 + local function on_click() + on_click_calls = on_click_calls + 1 + end + local instance = druid:new_button(button, on_click, button_params) instance:set_key_trigger("key_a") druid:on_input(mock_input.key_pressed("key_a")) druid:on_input(mock_input.key_released("key_a")) - assert(on_click_mock.calls == 1) + assert(on_click_calls == 1) assert(instance:get_key_trigger() == hash("key_a")) end) it("Should work with click zone", function() - local button = mock_gui.add_box("button", 0, 0, 100, 50) - local zone = mock_gui.add_box("zone", 25, 25, 25, 25) + local button = gui.new_box_node(vmath.vector3(0, 0, 0), vmath.vector3(200, 200, 0)) + local zone = gui.new_box_node(vmath.vector3(0, 0, 0), vmath.vector3(50, 50, 0)) local button_params = {} - local on_click, on_click_mock = test_helper.get_function() + + local on_click_calls = 0 + local function on_click() + on_click_calls = on_click_calls + 1 + end + local instance = druid:new_button(button, on_click, button_params) instance:set_click_zone(zone) + + druid:on_input(mock_input.click_pressed(70, 70)) + druid:on_input(mock_input.click_released(70, 70)) + assert(on_click_calls == 0) + druid:on_input(mock_input.click_pressed(10, 10)) druid:on_input(mock_input.click_released(10, 10)) - assert(on_click_mock.calls == 0) - - druid:on_input(mock_input.click_pressed(25, 25)) - druid:on_input(mock_input.click_released(25, 25)) - assert(on_click_mock.calls == 1) + assert(on_click_calls == 1) end) it("Should work with set_enabled", function() - local button = mock_gui.add_box("button", 0, 0, 100, 50) + local button = gui.new_box_node(vmath.vector3(50, 25, 0), vmath.vector3(100, 50, 0)) local button_params = {} - local on_click, on_click_mock = test_helper.get_function() + + local on_click_calls = 0 + local function on_click() + on_click_calls = on_click_calls + 1 + end + local instance = druid:new_button(button, on_click, button_params) instance:set_enabled(false) @@ -260,7 +367,7 @@ return function() local is_clicked_released = druid:on_input(mock_input.click_released(10, 10)) assert(is_clicked_pressed == true) assert(is_clicked_released == true) - assert(on_click_mock.calls == 0) + assert(on_click_calls == 0) assert(instance:is_enabled() == false) instance:set_enabled(true) @@ -268,7 +375,7 @@ return function() assert(is_clicked_pressed2 == true) local is_clicked_released2 = druid:on_input(mock_input.click_released(10, 10)) assert(is_clicked_released2 == true) - assert(on_click_mock.calls == 1) + assert(on_click_calls == 1) assert(instance:is_enabled() == true) end) end) diff --git a/test/tests/test_container.lua b/test/tests/test_container.lua new file mode 100644 index 0000000..e255df3 --- /dev/null +++ b/test/tests/test_container.lua @@ -0,0 +1,319 @@ +return function() + describe("Container Component", function() + local mock_time + local mock_input + local druid_system + local const + + local druid + local context + + before(function() + mock_time = require("deftest.mock.time") + mock_input = require("test.helper.mock_input") + druid_system = require("druid.druid") + const = require("druid.const") + + mock_time.mock() + mock_time.set(0) + + context = vmath.vector3() + druid = druid_system.new(context) + end) + + after(function() + mock_time.unmock() + druid:final() + druid = nil + end) + + + it("Should initialize container with default settings", function() + local container_node = gui.new_box_node(vmath.vector3(50, 50, 0), vmath.vector3(100, 100, 0)) + local container = druid:new_container(container_node) + + assert(container ~= nil) + assert(container.node == container_node) + assert(container.origin_size.x == 100) + assert(container.origin_size.y == 100) + assert(container.size.x == 100) + assert(container.size.y == 100) + assert(container.mode == const.LAYOUT_MODE.FIT) + assert(container.min_size_x == 0) + assert(container.min_size_y == 0) + assert(container._containers ~= nil) + assert(#container._containers == 0) + + druid:remove(container) + gui.delete_node(container_node) + end) + + it("Should get and set size", function() + local container_node = gui.new_box_node(vmath.vector3(50, 50, 0), vmath.vector3(100, 100, 0)) + local container = druid:new_container(container_node) + + local size = container:get_size() + assert(size.x == 100) + assert(size.y == 100) + + container:set_size(200, 150) + + size = container:get_size() + assert(size.x == 200) + assert(size.y == 150) + + local node_size = gui.get_size(container_node) + assert(node_size.x == 200) + assert(node_size.y == 150) + + druid:remove(container) + gui.delete_node(container_node) + end) + + it("Should get and set position", function() + local container_node = gui.new_box_node(vmath.vector3(50, 50, 0), vmath.vector3(100, 100, 0)) + local container = druid:new_container(container_node) + + local position = container:get_position() + assert(position.x == 50) + assert(position.y == 50) + + container:set_position(100, 200) + + position = container:get_position() + assert(position.x == 100) + assert(position.y == 200) + + local node_position = gui.get_position(container_node) + assert(node_position.x == 100) + assert(node_position.y == 200) + + druid:remove(container) + gui.delete_node(container_node) + end) + + it("Should set pivot", function() + local container_node = gui.new_box_node(vmath.vector3(50, 50, 0), vmath.vector3(100, 100, 0)) + local container = druid:new_container(container_node) + + -- Default pivot is typically PIVOT_CENTER + local initial_pivot = gui.get_pivot(container_node) + + container:set_pivot(gui.PIVOT_NW) + assert(gui.get_pivot(container_node) == gui.PIVOT_NW) + + container:set_pivot(gui.PIVOT_SE) + assert(gui.get_pivot(container_node) == gui.PIVOT_SE) + + druid:remove(container) + gui.delete_node(container_node) + end) + + it("Should set min size", function() + local container_node = gui.new_box_node(vmath.vector3(50, 50, 0), vmath.vector3(100, 100, 0)) + local container = druid:new_container(container_node) + + assert(container.min_size_x == 0) + assert(container.min_size_y == 0) + + container:set_min_size(50, 75) + + assert(container.min_size_x == 50) + assert(container.min_size_y == 75) + + -- Should respect min size when setting smaller size + container:set_size(25, 25) + local size = container:get_size() + assert(size.x == 50) + assert(size.y == 75) + + -- Should allow larger size + container:set_size(200, 200) + size = container:get_size() + assert(size.x == 200) + assert(size.y == 200) + + druid:remove(container) + gui.delete_node(container_node) + end) + + it("Should fire on_size_changed event", function() + local container_node = gui.new_box_node(vmath.vector3(50, 50, 0), vmath.vector3(100, 100, 0)) + local container = druid:new_container(container_node) + + local on_size_changed_calls = 0 + local last_size = nil + + container.on_size_changed:subscribe(function(instance, new_size) + on_size_changed_calls = on_size_changed_calls + 1 + last_size = new_size + end) + + container:set_size(200, 150) + + assert(on_size_changed_calls == 1) + assert(last_size ~= nil) + assert(last_size.x == 200) + assert(last_size.y == 150) + + druid:remove(container) + gui.delete_node(container_node) + end) + + it("Should fit into custom size", function() + local container_node = gui.new_box_node(vmath.vector3(50, 50, 0), vmath.vector3(100, 100, 0)) + local container = druid:new_container(container_node, const.LAYOUT_MODE.STRETCH) + + local fit_size = vmath.vector3(200, 150, 0) + container:fit_into_size(fit_size) + + assert(container.fit_size == fit_size) + + -- The exact result will depend on the implementation and screen aspect ratio, + -- but we can at least verify it changes the size + local size = container:get_size() + assert(size.x > 100 or size.y > 100) + + druid:remove(container) + gui.delete_node(container_node) + end) + + it("Should create and manage parent-child container relationships", function() + local parent_node = gui.new_box_node(vmath.vector3(400, 300, 0), vmath.vector3(800, 600, 0)) + local child_node = gui.new_box_node(vmath.vector3(100, 100, 0), vmath.vector3(200, 200, 0)) + + local parent_container = druid:new_container(parent_node) + + -- Add a child container through the parent + local child_container = parent_container:add_container(child_node) + + assert(child_container ~= nil) + assert(child_container.node == child_node) + assert(child_container._parent_container == parent_container) + assert(#parent_container._containers == 1) + assert(parent_container._containers[1] == child_container) + + -- Verify the child's node has been parented correctly + assert(gui.get_parent(child_node) == parent_node) + + -- Remove the child container + parent_container:remove_container_by_node(child_node) + + assert(#parent_container._containers == 0) + + druid:remove(parent_container) + gui.delete_node(parent_node) + gui.delete_node(child_node) + end) + + it("Should handle different layout modes", function() + local parent_node = gui.new_box_node(vmath.vector3(400, 300, 0), vmath.vector3(800, 600, 0)) + local child_node = gui.new_box_node(vmath.vector3(100, 100, 0), vmath.vector3(200, 200, 0)) + + local parent_container = druid:new_container(parent_node) + + -- Test FIT mode + local child_fit = parent_container:add_container(child_node, const.LAYOUT_MODE.FIT) + assert(child_fit.mode == const.LAYOUT_MODE.FIT) + + local size_fit = child_fit:get_size() + local original_size = vmath.vector3(200, 200, 0) + + -- Size should remain the same in FIT mode + assert(math.abs(size_fit.x - original_size.x) < 0.001) + assert(math.abs(size_fit.y - original_size.y) < 0.001) + + -- Set to STRETCH mode + parent_container:remove_container_by_node(child_node) + local child_stretch = parent_container:add_container(child_node, const.LAYOUT_MODE.STRETCH) + assert(child_stretch.mode == const.LAYOUT_MODE.STRETCH) + + -- Set to STRETCH_X mode + parent_container:remove_container_by_node(child_node) + local child_stretch_x = parent_container:add_container(child_node, const.LAYOUT_MODE.STRETCH_X) + assert(child_stretch_x.mode == const.LAYOUT_MODE.STRETCH_X) + + -- Set to STRETCH_Y mode + parent_container:remove_container_by_node(child_node) + local child_stretch_y = parent_container:add_container(child_node, const.LAYOUT_MODE.STRETCH_Y) + assert(child_stretch_y.mode == const.LAYOUT_MODE.STRETCH_Y) + + druid:remove(parent_container) + gui.delete_node(parent_node) + gui.delete_node(child_node) + end) + + it("Should create and clear draggable corners", function() + local container_node = gui.new_box_node(vmath.vector3(50, 50, 0), vmath.vector3(100, 100, 0)) + local container = druid:new_container(container_node) + + container:create_draggable_corners() + + assert(#container._draggable_corners > 0) + + container:clear_draggable_corners() + + assert(#container._draggable_corners == 0) + + druid:remove(container) + gui.delete_node(container_node) + end) + + it("Should set size and maintain anchor pivot position", function() + local container_node = gui.new_box_node(vmath.vector3(50, 50, 0), vmath.vector3(100, 100, 0)) + local container = druid:new_container(container_node) + + -- Set pivot to NW corner + container:set_pivot(gui.PIVOT_NW) + local initial_position = gui.get_position(container_node) + + -- Change size with anchor_pivot=PIVOT_NW - the NW corner should stay at the same position + container:set_size(200, 150, gui.PIVOT_NW) + + local new_position = gui.get_position(container_node) + assert(math.abs(new_position.x - initial_position.x) < 0.001) + assert(math.abs(new_position.y - initial_position.y) < 0.001) + + -- Set pivot to SE corner + container:set_pivot(gui.PIVOT_SE) + initial_position = gui.get_position(container_node) + + -- Change size with anchor_pivot=PIVOT_SE - the SE corner should stay at the same position + container:set_size(300, 250, gui.PIVOT_SE) + + new_position = gui.get_position(container_node) + assert(math.abs(new_position.x - initial_position.x) < 0.001) + assert(math.abs(new_position.y - initial_position.y) < 0.001) + + druid:remove(container) + gui.delete_node(container_node) + end) + + it("Should refresh origins", function() + local container_node = gui.new_box_node(vmath.vector3(50, 50, 0), vmath.vector3(100, 100, 0)) + local container = druid:new_container(container_node) + + -- Change the node size and position directly + gui.set_size(container_node, vmath.vector3(200, 150, 0)) + gui.set_position(container_node, vmath.vector3(75, 75, 0)) + + -- The container's internal origin values should not have updated yet + assert(container.origin_size.x == 100) + assert(container.origin_size.y == 100) + assert(container.origin_position.x == 50) + assert(container.origin_position.y == 50) + + -- Refresh origins + container:refresh_origins() + + -- Now the origin values should match the node + assert(container.origin_size.x == 200) + assert(container.origin_size.y == 150) + assert(container.origin_position.x == 75) + assert(container.origin_position.y == 75) + + druid:remove(container) + gui.delete_node(container_node) + end) + end) +end diff --git a/test/tests/test_drag.lua b/test/tests/test_drag.lua index 4b25661..92368ed 100644 --- a/test/tests/test_drag.lua +++ b/test/tests/test_drag.lua @@ -1,95 +1,105 @@ return function() - local mock_gui = nil - local mock_time = nil - local mock_input = nil - local test_helper = nil - local druid_system = nil - - local druid = nil - local context = nil - - local function create_drag_instance(on_drag) - local button = mock_gui.add_box("button", 0, 0, 20, 20) - local instance = druid:new_drag(button, on_drag) - instance.style.NO_USE_SCREEN_KOEF = true - instance.style.DRAG_DEADZONE = 4 - return instance - end - describe("Drag component", function() + local mock_time + local mock_input + local druid_system + + local druid + local context + + local function create_drag_instance(on_drag) + local button = gui.new_box_node(vmath.vector3(0, 0, 0), vmath.vector3(100, 100, 0)) + local instance = druid:new_drag(button, on_drag) + instance.style.NO_USE_SCREEN_KOEF = true + instance.style.DRAG_DEADZONE = 4 + return instance + end + before(function() - mock_gui = require("deftest.mock.gui") mock_time = require("deftest.mock.time") mock_input = require("test.helper.mock_input") - test_helper = require("test.helper.test_helper") druid_system = require("druid.druid") - mock_gui.mock() mock_time.mock() - mock_time.set(60) + mock_time.set(0) - context = test_helper.get_context() + context = vmath.vector3() druid = druid_system.new(context) end) after(function() - mock_gui.unmock() mock_time.unmock() - druid:final(context) + druid:final() druid = nil end) it("Should call drag callback on node", function() - local on_drag, on_drag_mock = test_helper.get_function() + local on_drag_calls = 0 + local drag_dx, drag_dy, drag_total_x, drag_total_y + + local function on_drag(_, dx, dy, total_x, total_y) + on_drag_calls = on_drag_calls + 1 + drag_dx, drag_dy = dx, dy + drag_total_x, drag_total_y = total_x, total_y + end + local instance = create_drag_instance(on_drag) druid:on_input(mock_input.click_pressed(10, 10)) assert(instance.is_touch == true) druid:on_input(mock_input.input_empty(12, 10)) - assert(on_drag_mock.calls == 0) + assert(on_drag_calls == 0) druid:on_input(mock_input.input_empty(14, 10)) - assert(on_drag_mock.calls == 1) - assert(on_drag_mock.params[2] == 2) -- From the last input dx - assert(on_drag_mock.params[3] == 0) - assert(on_drag_mock.params[4] == 4) -- Total X from drag start point - assert(on_drag_mock.params[5] == 0) + assert(on_drag_calls == 1) + assert(drag_dx == 2) -- From the last input dx + assert(drag_dy == 0) + assert(drag_total_x == 4) -- Total X from drag start point + assert(drag_total_y == 0) end) - it("Should call all included events", function() - local on_drag, on_drag_mock = test_helper.get_function() + local on_drag_calls = 0 + local function on_drag() on_drag_calls = on_drag_calls + 1 end local instance = create_drag_instance(on_drag) - local on_touch_start, on_touch_start_mock = test_helper.get_function() + local on_touch_start_calls = 0 + local function on_touch_start() on_touch_start_calls = on_touch_start_calls + 1 end instance.on_touch_start:subscribe(on_touch_start) - local on_touch_end, on_touch_end_mock = test_helper.get_function() + + local on_touch_end_calls = 0 + local function on_touch_end() on_touch_end_calls = on_touch_end_calls + 1 end instance.on_touch_end:subscribe(on_touch_end) - local on_drag_start, on_drag_start_mock = test_helper.get_function() + + local on_drag_start_calls = 0 + local function on_drag_start() on_drag_start_calls = on_drag_start_calls + 1 end instance.on_drag_start:subscribe(on_drag_start) - local on_drag_end, on_drag_end_mock = test_helper.get_function() + + local on_drag_end_calls = 0 + local function on_drag_end() on_drag_end_calls = on_drag_end_calls + 1 end instance.on_drag_end:subscribe(on_drag_end) - assert(on_touch_start_mock.calls == 0) + assert(on_touch_start_calls == 0) druid:on_input(mock_input.click_pressed(10, 10)) - assert(on_touch_start_mock.calls == 1) - assert(on_touch_end_mock.calls == 0) + assert(on_touch_start_calls == 1) + assert(on_touch_end_calls == 0) druid:on_input(mock_input.click_released(12, 10)) - assert(on_touch_end_mock.calls == 1) + assert(on_touch_end_calls == 1) druid:on_input(mock_input.click_pressed(10, 10)) - assert(on_drag_start_mock.calls == 0) + assert(on_drag_start_calls == 0) druid:on_input(mock_input.input_empty(15, 10)) - assert(on_drag_start_mock.calls == 1) - assert(on_drag_mock.calls == 1) - assert(on_drag_end_mock.calls == 0) + assert(on_drag_start_calls == 1) + assert(on_drag_calls == 1) + assert(on_drag_end_calls == 0) druid:on_input(mock_input.click_released(15, 10)) - assert(on_drag_end_mock.calls == 1) + assert(on_drag_end_calls == 1) end) it("Should work with set_enabled", function() - local on_drag, on_drag_mock = test_helper.get_function() + local on_drag_calls = 0 + local function on_drag() on_drag_calls = on_drag_calls + 1 end local instance = create_drag_instance(on_drag) instance:set_enabled(false) @@ -99,10 +109,10 @@ return function() assert(instance.is_touch == false) druid:on_input(mock_input.input_empty(12, 10)) - assert(on_drag_mock.calls == 0) + assert(on_drag_calls == 0) druid:on_input(mock_input.input_empty(15, 10)) - assert(on_drag_mock.calls == 0) + assert(on_drag_calls == 0) instance:set_enabled(true) assert(instance:is_enabled() == true) @@ -111,32 +121,50 @@ return function() assert(instance.is_touch == true) druid:on_input(mock_input.input_empty(12, 10)) - assert(on_drag_mock.calls == 0) + assert(on_drag_calls == 0) druid:on_input(mock_input.input_empty(15, 10)) - assert(on_drag_mock.calls == 1) + assert(on_drag_calls == 1) end) it("Should work with click zone", function() - local on_drag, on_drag_mock = test_helper.get_function() + local on_drag_calls = 0 + local function on_drag() on_drag_calls = on_drag_calls + 1 end local instance = create_drag_instance(on_drag) - local zone = mock_gui.add_box("zone", 10, 10, 10, 10) + local zone = gui.new_box_node(vmath.vector3(0, 0, 0), vmath.vector3(20, 20, 0)) instance:set_click_zone(zone) - druid:on_input(mock_input.click_pressed(5, 5)) + druid:on_input(mock_input.click_pressed(20, 20)) assert(instance.is_touch == false) - druid:on_input(mock_input.input_empty(10, 5)) - assert(on_drag_mock.calls == 0) + druid:on_input(mock_input.input_empty(10, 10)) + assert(on_drag_calls == 0) - druid:on_input(mock_input.input_empty(15, 10)) - assert(on_drag_mock.calls == 0) + druid:on_input(mock_input.input_empty(15, 15)) + druid:on_input(mock_input.click_released(15, 15)) + assert(on_drag_calls == 0) - druid:on_input(mock_input.click_pressed(15, 15)) + mock_time.set(60) + druid:on_input(mock_input.click_pressed(0, 0)) assert(instance.is_touch == true) - druid:on_input(mock_input.input_empty(20, 15)) - assert(on_drag_mock.calls == 1) + druid:on_input(mock_input.input_empty(5, 5)) + druid:on_input(mock_input.click_released(5, 5)) + assert(on_drag_calls == 1) + end) + + it("Should not trigger in deadzone", function() + local on_drag_calls = 0 + local function on_drag() on_drag_calls = on_drag_calls + 1 end + local instance = create_drag_instance(on_drag) + + instance.style.DRAG_DEADZONE = 10 + + druid:on_input(mock_input.click_pressed(10, 10)) + assert(instance.is_touch == true) + + druid:on_input(mock_input.input_empty(15, 15)) + assert(on_drag_calls == 0) end) end) end diff --git a/test/tests/test_druid_instance.lua b/test/tests/test_druid_instance.lua new file mode 100644 index 0000000..9e9bd25 --- /dev/null +++ b/test/tests/test_druid_instance.lua @@ -0,0 +1,306 @@ +return function() + describe("Druid Instance", function() + local druid + local druid_instance ---@type druid.instance + local context + local mock_input = require("test.helper.mock_input") + + before(function() + context = vmath.vector3() + druid = require("druid.druid") + druid_instance = druid.new(context) + end) + + after(function() + -- Clean up druid instance + if druid_instance then + druid_instance:final() + druid_instance = nil + end + end) + + it("Should create button component", function() + local button_node = gui.new_box_node(vmath.vector3(50, 25, 0), vmath.vector3(100, 50, 0)) + + local on_click_calls = 0 + local function on_click() + on_click_calls = on_click_calls + 1 + end + + local button = druid_instance:new_button(button_node, on_click) + + assert(button ~= nil) + assert(button.node == button_node) + + -- Test that button click works + druid_instance:on_input(mock_input.click_pressed(50, 25)) + druid_instance:on_input(mock_input.click_released(50, 25)) + + assert(on_click_calls == 1) + + -- Clean up component + druid_instance:remove(button) + gui.delete_node(button_node) + end) + + it("Should create blocker component", function() + local blocker_node = gui.new_box_node(vmath.vector3(100, 50, 0), vmath.vector3(200, 100, 0)) + + local blocker = druid_instance:new_blocker(blocker_node) + + assert(blocker ~= nil) + assert(blocker.node == blocker_node) + + -- Test that blocker blocks input + local is_blocked = druid_instance:on_input(mock_input.click_pressed(100, 50)) + + assert(is_blocked) + + -- Clean up component + druid_instance:remove(blocker) + gui.delete_node(blocker_node) + end) + + it("Should create back_handler component", function() + local on_back_calls = 0 + local function on_back() + on_back_calls = on_back_calls + 1 + end + + local back_handler = druid_instance:new_back_handler(on_back) + + assert(back_handler ~= nil) + + -- Test that back handler works + druid_instance:on_input(mock_input.key_pressed("key_back")) + druid_instance:on_input(mock_input.key_released("key_back")) + + assert(on_back_calls == 1) + + -- Clean up component + druid_instance:remove(back_handler) + end) + + it("Should create hover component", function() + local button_node = gui.new_box_node(vmath.vector3(50, 25, 0), vmath.vector3(100, 50, 0)) + + local on_hover_calls = 0 + local function on_hover() + on_hover_calls = on_hover_calls + 1 + end + + local hover = druid_instance:new_hover(button_node, on_hover) + + assert(hover ~= nil) + assert(hover.node == button_node) + + -- Test that hover works + druid_instance:on_input(mock_input.input_empty(50, 25)) + + assert(on_hover_calls == 1) + + -- Clean up component + druid_instance:remove(hover) + gui.delete_node(button_node) + end) + + it("Should create text component", function() + local text_node = gui.new_text_node(vmath.vector3(50, 25, 0), "Test Text") + gui.set_font(text_node, "druid_text_bold") + + local text = druid_instance:new_text(text_node, "New Text") + + assert(text ~= nil) + assert(text.node == text_node) + assert(gui.get_text(text_node) == "New Text") + + -- Test that text setter works + text:set_text("Updated Text") + assert(gui.get_text(text_node) == "Updated Text") + + -- Clean up component + druid_instance:remove(text) + gui.delete_node(text_node) + end) + + it("Should create grid component", function() + local parent_node = gui.new_box_node(vmath.vector3(150, 100, 0), vmath.vector3(300, 200, 0)) + local template = gui.new_box_node(vmath.vector3(10, 10, 0), vmath.vector3(20, 20, 0)) + + local grid = druid_instance:new_grid(parent_node, template, 3) + + assert(grid ~= nil) + assert(grid.parent == parent_node) + assert(grid.in_row == 3) + + -- Add an item to the grid + local item = gui.clone(template) + grid:add(item) + assert(#grid.nodes == 1) + + -- Clean up component + druid_instance:remove(grid) + gui.delete_node(parent_node) + gui.delete_node(template) + end) + + it("Should create scroll component", function() + local parent_node = gui.new_box_node(vmath.vector3(150, 100, 0), vmath.vector3(300, 200, 0)) + local content_node = gui.new_box_node(vmath.vector3(250, 200, 0), vmath.vector3(500, 400, 0)) + + -- Setup node hierarchy for scroll + gui.set_parent(content_node, parent_node) + + local scroll = druid_instance:new_scroll(parent_node, content_node) + + assert(scroll ~= nil) + assert(scroll.view_node == parent_node) + assert(scroll.content_node == content_node) + + -- Test that scroll setters work + scroll:set_horizontal_scroll(true) + + -- Clean up component + druid_instance:remove(scroll) + gui.delete_node(parent_node) -- This will also delete content_node as it's a child + end) + + it("Should create drag component", function() + local button_node = gui.new_box_node(vmath.vector3(50, 25, 0), vmath.vector3(100, 50, 0)) + + local on_drag_calls = 0 + local drag_dx, drag_dy + + local function on_drag(_, dx, dy) + on_drag_calls = on_drag_calls + 1 + drag_dx, drag_dy = dx, dy + end + + local drag = druid_instance:new_drag(button_node, on_drag) + drag.style.DRAG_DEADZONE = 0 + drag.style.NO_USE_SCREEN_KOEF = true + + assert(drag ~= nil) + assert(drag.node == button_node) + + -- Test that drag callback works + druid_instance:on_input(mock_input.click_pressed(50, 25)) + druid_instance:on_input(mock_input.input_empty(60, 35)) + druid_instance:on_input(mock_input.click_released(60, 35)) + + assert(on_drag_calls == 1) + assert(math.floor(drag_dx) == 10) + assert(math.floor(drag_dy) == 10) + + -- Clean up component + druid_instance:remove(drag) + gui.delete_node(button_node) + end) + + it("Should create swipe component", function() + local button_node = gui.new_box_node(vmath.vector3(50, 25, 0), vmath.vector3(100, 50, 0)) + + local on_swipe_calls = 0 + local function on_swipe() + on_swipe_calls = on_swipe_calls + 1 + end + + local swipe = druid_instance:new_swipe(button_node, on_swipe) + + assert(swipe ~= nil) + assert(swipe.node == button_node) + + -- Clean up component + druid_instance:remove(swipe) + gui.delete_node(button_node) + end) + + it("Should create timer component", function() + local text_node = gui.new_text_node(vmath.vector3(50, 25, 0), "Test Text") + gui.set_font(text_node, "druid_text_bold") + + local on_timer_end_calls = 0 + local function on_timer_end() + on_timer_end_calls = on_timer_end_calls + 1 + end + + local timer = druid_instance:new_timer(text_node, 10, 0, on_timer_end) + + assert(timer ~= nil) + assert(timer.node == text_node) + + -- Clean up component + druid_instance:remove(timer) + gui.delete_node(text_node) + end) + + it("Should create progress component", function() + local button_node = gui.new_box_node(vmath.vector3(50, 25, 0), vmath.vector3(100, 50, 0)) + + local progress = druid_instance:new_progress(button_node, "x", 0.5) + + assert(progress ~= nil) + assert(progress.node == button_node) + assert(progress:get() == 0.5) + + -- Test that progress setter works + progress:set_to(0.75) + assert(progress:get() == 0.75) + + -- Clean up component + druid_instance:remove(progress) + gui.delete_node(button_node) + end) + + it("Should create layout component", function() + local parent_node = gui.new_box_node(vmath.vector3(150, 100, 0), vmath.vector3(300, 200, 0)) + + local layout = druid_instance:new_layout(parent_node) + + assert(layout ~= nil) + assert(layout.node == parent_node) + + -- Clean up component + druid_instance:remove(layout) + gui.delete_node(parent_node) + end) + + it("Should create hotkey component", function() + local on_hotkey_calls = 0 + local function on_hotkey() + on_hotkey_calls = on_hotkey_calls + 1 + end + + local hotkey = druid_instance:new_hotkey("key_f", on_hotkey) + + assert(hotkey ~= nil) + + -- Test that hotkey works + druid_instance:on_input(mock_input.key_pressed("key_f")) + druid_instance:on_input(mock_input.key_released("key_f")) + + assert(on_hotkey_calls == 1) + + -- Clean up component + druid_instance:remove(hotkey) + end) + + it("Should create container component", function() + local parent_node = gui.new_box_node(vmath.vector3(150, 100, 0), vmath.vector3(300, 200, 0)) + + local layout_changed_calls = 0 + local function layout_changed() + layout_changed_calls = layout_changed_calls + 1 + end + + -- The container component requires a node with size + local container = druid_instance:new_container(parent_node, "fit") + + assert(container ~= nil) + + -- Clean up component + druid_instance:remove(container) + gui.delete_node(parent_node) + end) + end) +end diff --git a/test/tests/test_grid.lua b/test/tests/test_grid.lua new file mode 100644 index 0000000..f09b18f --- /dev/null +++ b/test/tests/test_grid.lua @@ -0,0 +1,281 @@ +return function() + describe("Grid Component", function() + local mock_time + local mock_input + local druid_system + + local druid + local context + + local function create_grid_instance(in_row) + local parent_node = gui.new_box_node(vmath.vector3(0, 0, 0), vmath.vector3(300, 300, 0)) + local item_node = gui.new_box_node(vmath.vector3(0, 0, 0), vmath.vector3(50, 50, 0)) + gui.set_enabled(item_node, false) + + local instance = druid:new_grid(parent_node, item_node, in_row or 3) + return instance, parent_node, item_node + end + + local function create_item_nodes(count) + local nodes = {} + for i = 1, count do + local node = gui.new_box_node(vmath.vector3(0, 0, 0), vmath.vector3(50, 50, 0)) + table.insert(nodes, node) + end + return nodes + end + + before(function() + mock_time = require("deftest.mock.time") + mock_input = require("test.helper.mock_input") + druid_system = require("druid.druid") + + mock_time.mock() + mock_time.set(0) + + context = vmath.vector3() + druid = druid_system.new(context) + end) + + after(function() + mock_time.unmock() + druid:final() + druid = nil + end) + + it("Should create grid component", function() + local grid = create_grid_instance() + + assert(grid ~= nil) + assert(grid.add ~= nil) + assert(grid.remove ~= nil) + assert(grid.clear ~= nil) + assert(grid.set_in_row ~= nil) + end) + + it("Should add nodes to grid", function() + local grid = create_grid_instance() + local node1 = gui.new_box_node(vmath.vector3(0, 0, 0), vmath.vector3(50, 50, 0)) + local node2 = gui.new_box_node(vmath.vector3(0, 0, 0), vmath.vector3(50, 50, 0)) + + grid:add(node1) + grid:add(node2) + + assert(#grid.nodes == 2) + end) + + it("Should position nodes in a grid layout", function() + local grid = create_grid_instance(3) + local nodes = create_item_nodes(5) + + for i, node in ipairs(nodes) do + grid:add(node) + end + + -- After adding to grid, nodes should be positioned + -- First row: nodes 1,2,3; Second row: nodes 4,5 + + -- Get actual node positions + local pos1 = gui.get_position(nodes[1]) + local pos2 = gui.get_position(nodes[2]) + local pos3 = gui.get_position(nodes[3]) + local pos4 = gui.get_position(nodes[4]) + + -- Check row arrangement + assert(math.abs(pos1.y - pos2.y) < 1) -- Same row (y position) + assert(math.abs(pos2.y - pos3.y) < 1) -- Same row (y position) + assert(pos1.y > pos4.y) -- Second row below first row + + -- Check column arrangement + assert(pos1.x < pos2.x) -- Left to right + assert(pos2.x < pos3.x) -- Left to right + end) + + it("Should remove node from grid", function() + local grid = create_grid_instance() + local nodes = create_item_nodes(3) + + for i, node in ipairs(nodes) do + grid:add(node) + end + + assert(#grid.nodes == 3) + + grid:remove(2) + assert(#grid.nodes == 2) + assert(grid.nodes[1] == nodes[1]) + assert(grid.nodes[2] == nodes[3]) + end) + + it("Should clear all nodes", function() + local grid = create_grid_instance() + local nodes = create_item_nodes(5) + + for i, node in ipairs(nodes) do + grid:add(node) + end + + assert(#grid.nodes == 5) + + grid:clear() + assert(#grid.nodes == 0) + end) + + it("Should set new in_row value", function() + local grid = create_grid_instance(2) + local nodes = create_item_nodes(4) + + for i, node in ipairs(nodes) do + grid:add(node) + end + + -- With 2 items in row, the nodes should be arranged in 2 rows + local pos1 = gui.get_position(nodes[1]) + local pos2 = gui.get_position(nodes[2]) + local pos3 = gui.get_position(nodes[3]) + local pos4 = gui.get_position(nodes[4]) + + -- Initially 2 items per row: nodes 1,2 in first row; nodes 3,4 in second row + assert(math.abs(pos1.y - pos2.y) < 1) -- Same row + assert(math.abs(pos3.y - pos4.y) < 1) -- Same row + assert(pos1.y > pos3.y) -- Second row below first row + + -- Change to 4 items in a row + grid:set_in_row(4) + + -- Get updated positions + pos1 = gui.get_position(nodes[1]) + pos2 = gui.get_position(nodes[2]) + pos3 = gui.get_position(nodes[3]) + pos4 = gui.get_position(nodes[4]) + + -- All items should now be in one row + assert(math.abs(pos1.y - pos2.y) < 1) + assert(math.abs(pos2.y - pos3.y) < 1) + assert(math.abs(pos3.y - pos4.y) < 1) + end) + + it("Should set item size", function() + local grid = create_grid_instance() + local nodes = create_item_nodes(4) + + for i, node in ipairs(nodes) do + grid:add(node) + end + + -- Get initial positions + local initial_pos1 = gui.get_position(nodes[1]) + local initial_pos2 = gui.get_position(nodes[2]) + local initial_distance = initial_pos2.x - initial_pos1.x + + -- Now set bigger size + grid:set_item_size(100, 100) + + -- Get new positions + local new_pos1 = gui.get_position(nodes[1]) + local new_pos2 = gui.get_position(nodes[2]) + local new_distance = new_pos2.x - new_pos1.x + + -- Nodes should be further apart with larger size + assert(new_distance > initial_distance) + end) + + it("Should set grid pivot", function() + local grid = create_grid_instance() + local nodes = create_item_nodes(4) + + for i, node in ipairs(nodes) do + grid:add(node) + end + + -- Get initial positions + local initial_positions = {} + for i, node in ipairs(nodes) do + initial_positions[i] = vmath.vector3(gui.get_position(node)) + end + + -- Change pivot from default to different value + grid:set_pivot(gui.PIVOT_NW) + + -- Get new positions + local positions_changed = false + for i, node in ipairs(nodes) do + local new_pos = gui.get_position(node) + if new_pos.x ~= initial_positions[i].x or new_pos.y ~= initial_positions[i].y then + positions_changed = true + break + end + end + + -- At least one node position should change + assert(positions_changed) + end) + + it("Should get grid size", function() + local grid = create_grid_instance(2) + local nodes = create_item_nodes(4) + + for i, node in ipairs(nodes) do + grid:add(node) + end + + local size = grid:get_size() + + -- Grid with 2x2 arrangement of 50x50 items should be around 100x100 + -- (with spacing and potential other factors) + assert(size.x >= 100) + assert(size.y >= 100) + end) + + it("Should get index by node", function() + local grid = create_grid_instance() + local nodes = create_item_nodes(3) + + for i, node in ipairs(nodes) do + grid:add(node) + end + + local index = grid:get_index_by_node(nodes[2]) + assert(index == 2) + + -- Should return nil for node not in grid + local outside_node = gui.new_box_node(vmath.vector3(0, 0, 0), vmath.vector3(50, 50, 0)) + local outside_index = grid:get_index_by_node(outside_node) + assert(outside_index == nil) + end) + + it("Should adjust spacing when changing node size", function() + local grid = create_grid_instance(3) + local nodes = create_item_nodes(6) + + for i, node in ipairs(nodes) do + grid:add(node) + end + + -- Get initial distance between nodes + local pos1 = gui.get_position(nodes[1]) + local pos2 = gui.get_position(nodes[2]) + local horizontal_spacing = pos2.x - pos1.x + + local pos1 = gui.get_position(nodes[1]) + local pos4 = gui.get_position(nodes[4]) + local vertical_spacing = pos1.y - pos4.y + + -- Change node size (this should affect spacing) + grid:set_item_size(75, 75) + + -- Get new spacing + local new_pos1 = gui.get_position(nodes[1]) + local new_pos2 = gui.get_position(nodes[2]) + local new_horizontal_spacing = new_pos2.x - new_pos1.x + + local new_pos1 = gui.get_position(nodes[1]) + local new_pos4 = gui.get_position(nodes[4]) + local new_vertical_spacing = new_pos1.y - new_pos4.y + + -- Both spacings should be larger with larger node size + assert(new_horizontal_spacing > horizontal_spacing) + assert(new_vertical_spacing > vertical_spacing) + end) + end) +end diff --git a/test/tests/test_helper.lua b/test/tests/test_helper.lua new file mode 100644 index 0000000..1625222 --- /dev/null +++ b/test/tests/test_helper.lua @@ -0,0 +1,273 @@ +return function() + describe("Helper Module", function() + local helper = nil + local const = nil + local node1 = nil + local node2 = nil + + before(function() + helper = require("druid.helper") + const = require("druid.const") + + -- Create actual GUI nodes for testing + node1 = gui.new_box_node(vmath.vector3(0, 0, 0), vmath.vector3(100, 50, 0)) + node2 = gui.new_box_node(vmath.vector3(0, 0, 0), vmath.vector3(60, 40, 0)) + end) + + after(function() + -- Clean up nodes + if node1 then gui.delete_node(node1) end + if node2 then gui.delete_node(node2) end + end) + + it("Should clamp values correctly", function() + assert(helper.clamp(5, 0, 10) == 5) + assert(helper.clamp(-5, 0, 10) == 0) + assert(helper.clamp(15, 0, 10) == 10) + assert(helper.clamp(5, 10, 0) == 5) -- Should swap min and max + assert(helper.clamp(5, nil, 10) == 5) -- Should handle nil min + assert(helper.clamp(15, nil, 10) == 10) -- Should handle nil min + assert(helper.clamp(5, 0, nil) == 5) -- Should handle nil max + assert(helper.clamp(-5, 0, nil) == 0) -- Should handle nil max + end) + + it("Should calculate distance correctly", function() + assert(helper.distance(0, 0, 3, 4) == 5) + assert(helper.distance(1, 1, 4, 5) == 5) + assert(helper.distance(0, 0, 0, 0) == 0) + end) + + it("Should return sign correctly", function() + assert(helper.sign(5) == 1) + assert(helper.sign(-5) == -1) + assert(helper.sign(0) == 0) + end) + + it("Should round numbers correctly", function() + assert(helper.round(5.5) == 6) + assert(helper.round(5.4) == 5) + assert(helper.round(5.55, 1) == 5.6) + assert(helper.round(5.54, 1) == 5.5) + end) + + it("Should lerp correctly", function() + assert(helper.lerp(0, 10, 0) == 0) + assert(helper.lerp(0, 10, 1) == 10) + assert(helper.lerp(0, 10, 0.5) == 5) + end) + + it("Should check if value is in array", function() + local array = {1, 2, 3, 4, 5} + assert(helper.contains(array, 3) == 3) + assert(helper.contains(array, 6) == nil) + assert(helper.contains({}, 1) == nil) + end) + + it("Should deep copy tables", function() + local original = {a = 1, b = {c = 2, d = {e = 3}}} + local copy = helper.deepcopy(original) + + -- Test that it's a deep copy + assert(copy.a == original.a) + assert(copy.b.c == original.b.c) + assert(copy.b.d.e == original.b.d.e) + + -- Modify the copy and check the original remains intact + copy.a = 100 + copy.b.c = 200 + copy.b.d.e = 300 + + assert(original.a == 1) + assert(original.b.c == 2) + assert(original.b.d.e == 3) + end) + + it("Should add all elements from source array to target array", function() + local target = {1, 2, 3} + local source = {4, 5, 6} + + helper.add_array(target, source) + assert(#target == 6) + assert(target[4] == 4) + assert(target[5] == 5) + assert(target[6] == 6) + + -- Test with nil source + local target2 = {1, 2, 3} + helper.add_array(target2, nil) + assert(#target2 == 3) + end) + + it("Should insert with shift policy correctly", function() + -- Test basic functionality + -- RIGHT shift + local array1 = {1, 2, 3, 4, 5} + local result1 = helper.insert_with_shift(array1, 10, 3, const.SHIFT.RIGHT) + assert(result1 == 10) -- Should return the inserted item + assert(#array1 == 6) -- Size should increase + assert(array1[3] == 10) -- Item should be at the specified position + + -- LEFT shift + local array2 = {1, 2, 3, 4, 5} + local result2 = helper.insert_with_shift(array2, 20, 3, const.SHIFT.LEFT) + assert(result2 == 20) -- Should return the inserted item + assert(#array2 >= 5) -- Size should be at least original size + + -- NO_SHIFT + local array3 = {1, 2, 3, 4, 5} + local result3 = helper.insert_with_shift(array3, 30, 3, const.SHIFT.NO_SHIFT) + assert(result3 == 30) -- Should return the inserted item + assert(array3[3] == 30) -- Should replace the value at the specified position + end) + + it("Should remove with shift policy correctly", function() + -- Test basic functionality + -- RIGHT shift + local array1 = {1, 2, 3, 4, 5} + local removed1 = helper.remove_with_shift(array1, 3, const.SHIFT.RIGHT) + assert(removed1 == 3) -- Should return the removed item + assert(#array1 == 4) -- Size should decrease + + -- LEFT shift + local array2 = {1, 2, 3, 4, 5} + local removed2 = helper.remove_with_shift(array2, 3, const.SHIFT.LEFT) + assert(removed2 == 3) -- Should return the removed item + + -- NO_SHIFT + local array3 = {1, 2, 3, 4, 5} + local removed3 = helper.remove_with_shift(array3, 3, const.SHIFT.NO_SHIFT) + assert(removed3 == 3) -- Should return the removed item + assert(array3[3] == nil) -- Position should be nil + assert(array3[1] == 1 and array3[2] == 2 and array3[4] == 4 and array3[5] == 5) -- Other positions should be unchanged + end) + + it("Should step values correctly", function() + assert(helper.step(0, 10, 2) == 2) + assert(helper.step(2, 10, 2) == 4) + assert(helper.step(9, 10, 2) == 10) + assert(helper.step(10, 0, 2) == 8) + assert(helper.step(2, 0, 2) == 0) + assert(helper.step(1, 0, 2) == 0) + end) + + it("Should get node correctly", function() + -- Create a node using real GUI function + local test_node = gui.new_box_node(vmath.vector3(0, 0, 0), vmath.vector3(100, 50, 0)) + gui.set_id(test_node, "test_node_unique_id") + + -- Test with node directly + local result1 = helper.get_node(test_node) + assert(result1 == test_node) + + -- Note: Dynamically created nodes can't be reliably retrieved by ID in tests + -- but we can verify the function accepts string IDs + -- local result3 = helper.get_node("some_id") + -- We don't assert anything about result2, just make sure the function doesn't error + + -- Test with nodes table + local dummy_node = {} + local nodes_table = { ["template/test_node3"] = dummy_node } + local result4 = helper.get_node("test_node3", "template", nodes_table) + assert(result4 == dummy_node) + + -- Clean up + gui.delete_node(test_node) + end) + + it("Should get pivot offset correctly", function() + -- Test with pivot constant + local center_offset = helper.get_pivot_offset(gui.PIVOT_CENTER) + assert(center_offset.x == 0) + assert(center_offset.y == 0) + + -- Test North pivot + local n_offset = helper.get_pivot_offset(gui.PIVOT_N) + assert(n_offset.x == 0) + assert(n_offset.y == 0.5) + end) + + it("Should get scaled size correctly", function() + local test_node = gui.new_box_node(vmath.vector3(0, 0, 0), vmath.vector3(100, 50, 0)) + gui.set_scale(test_node, vmath.vector3(2, 3, 1)) + + local scaled_size = helper.get_scaled_size(test_node) + assert(scaled_size.x == 200) + assert(scaled_size.y == 150) + + -- Clean up + gui.delete_node(test_node) + end) + + it("Should get scene scale correctly", function() + local parent_node = gui.new_box_node(vmath.vector3(0, 0, 0), vmath.vector3(100, 50, 0)) + gui.set_scale(parent_node, vmath.vector3(2, 2, 1)) + + local child_node = gui.new_box_node(vmath.vector3(0, 0, 0), vmath.vector3(50, 25, 0)) + gui.set_parent(child_node, parent_node) + gui.set_scale(child_node, vmath.vector3(1.5, 1.5, 1)) + + -- Without including the passed node scale + local scale1 = helper.get_scene_scale(child_node, false) + assert(scale1.x == 2) + assert(scale1.y == 2) + + -- Including the passed node scale + local scale2 = helper.get_scene_scale(child_node, true) + assert(scale2.x == 3) + assert(scale2.y == 3) + + -- Clean up + gui.delete_node(child_node) + gui.delete_node(parent_node) + end) + + it("Should check if value is desktop/mobile/web correctly", function() + -- These tests depend on the current system, so we just make sure the functions exist + local is_desktop = helper.is_desktop() + local is_mobile = helper.is_mobile() + local is_web = helper.is_web() + + -- They should be boolean values + assert(type(is_desktop) == "boolean") + assert(type(is_mobile) == "boolean") + assert(type(is_web) == "boolean") + end) + + it("Should get border correctly", function() + local test_node = gui.new_box_node(vmath.vector3(0, 0, 0), vmath.vector3(100, 50, 0)) + gui.set_pivot(test_node, gui.PIVOT_CENTER) + + local border = helper.get_border(test_node) + assert(border.x == -50) -- left + assert(border.y == 25) -- top + assert(border.z == 50) -- right + assert(border.w == -25) -- bottom + + -- Test with offset + local offset = vmath.vector3(10, 20, 0) + local border_with_offset = helper.get_border(test_node, offset) + assert(border_with_offset.x == -40) -- left + offset.x + assert(border_with_offset.y == 45) -- top + offset.y + assert(border_with_offset.z == 60) -- right + offset.x + assert(border_with_offset.w == -5) -- bottom + offset.y + + -- Clean up + gui.delete_node(test_node) + end) + + it("Should centrate nodes correctly", function() + local total_width = helper.centrate_nodes(10, node1, node2) + + -- The total width should be node1 width + node2 width + margin + assert(total_width == 170) + + -- The first node should be positioned at -total_width/2 + node1_width/2 + local pos1 = gui.get_position(node1) + assert(pos1.x == -35) -- -170/2 + 100/2 + + -- The second node should be positioned at pos1.x + node1_width/2 + margin + node2_width/2 + local pos2 = gui.get_position(node2) + assert(pos2.x == 55) -- -35 + 100/2 + 10 + 60/2 + end) + end) +end diff --git a/test/tests/test_hover.lua b/test/tests/test_hover.lua index 0d095b6..c37b20a 100644 --- a/test/tests/test_hover.lua +++ b/test/tests/test_hover.lua @@ -1,60 +1,57 @@ return function() - local mock_gui = nil - local mock_time = nil - local mock_input = nil - local test_helper = nil - local druid_system = nil - - local druid = nil - local context = nil - describe("Hover component", function() + local mock_time + local mock_input + local druid_system + + local druid + local context + before(function() - mock_gui = require("deftest.mock.gui") mock_time = require("deftest.mock.time") mock_input = require("test.helper.mock_input") - test_helper = require("test.helper.test_helper") druid_system = require("druid.druid") - mock_gui.mock() mock_time.mock() - mock_time.set(60) + mock_time.set(0) - context = test_helper.get_context() + context = vmath.vector3() druid = druid_system.new(context) end) after(function() - mock_gui.unmock() mock_time.unmock() - druid:final(context) + druid:final() druid = nil end) it("Should fire callback on touch hover and unhover", function() - local button = mock_gui.add_box("button", 0, 0, 100, 50) + local button = gui.new_box_node(vmath.vector3(0, 0, 0), vmath.vector3(100, 50, 0)) local is_hovered = false - local on_hover, on_hover_mock = test_helper.get_function(function(_, state) + + local function on_hover(_, state) is_hovered = state - end) + end + local instance = druid:new_hover(button, on_hover) druid:on_input(mock_input.input_empty(10, 10)) assert(is_hovered == true) assert(instance:is_hovered() == true) assert(instance:is_mouse_hovered() == false) - druid:on_input(mock_input.input_empty(-10, 10)) + druid:on_input(mock_input.input_empty(100, 100)) assert(is_hovered == false) assert(instance:is_hovered() == false) assert(instance:is_mouse_hovered() == false) end) it("Should fire callback on mouse hover and unhover", function() - local button = mock_gui.add_box("button", 0, 0, 100, 50) + local button = gui.new_box_node(vmath.vector3(0, 0, 0), vmath.vector3(100, 50, 0)) local is_hovered = false - local on_hover, on_hover_mock = test_helper.get_function(function(_, state) + + local function on_hover(_, state) is_hovered = state - end) + end local instance = druid:new_hover(button) instance.on_mouse_hover:subscribe(on_hover) @@ -63,31 +60,41 @@ return function() assert(instance:is_hovered() == false) assert(instance:is_mouse_hovered() == true) - druid:on_input(mock_input.input_empty_action_nil(-10, 10)) + druid:on_input(mock_input.input_empty_action_nil(100, 100)) assert(is_hovered == false) assert(instance:is_hovered() == false) assert(instance:is_mouse_hovered() == false) end) it("Should work with click zone", function() - local button = mock_gui.add_box("button", 0, 0, 100, 50) - local zone = mock_gui.add_box("zone", 25, 25, 25, 25) - local on_hover, on_hover_mock = test_helper.get_function() + local button = gui.new_box_node(vmath.vector3(0, 0, 0), vmath.vector3(100, 50, 0)) + local zone = gui.new_box_node(vmath.vector3(0, 0, 0), vmath.vector3(20, 20, 0)) + + local on_hover_calls = 0 + local function on_hover() + on_hover_calls = on_hover_calls + 1 + end + local instance = druid:new_hover(button, on_hover) instance:set_click_zone(zone) - druid:on_input(mock_input.input_empty(10, 10)) + druid:on_input(mock_input.input_empty(20, 20)) assert(instance:is_hovered() == false) - druid:on_input(mock_input.input_empty(25, 25)) + druid:on_input(mock_input.input_empty(0, 0)) assert(instance:is_hovered() == true) - druid:on_input(mock_input.input_empty(24, 24)) + druid:on_input(mock_input.input_empty(18, 18)) assert(instance:is_hovered() == false) end) it("Should have set_enabled function", function() - local button = mock_gui.add_box("button", 0, 0, 100, 50) - local on_hover, on_hover_mock = test_helper.get_function() + local button = gui.new_box_node(vmath.vector3(0, 0, 0), vmath.vector3(100, 50, 0)) + + local on_hover_calls = 0 + local function on_hover() + on_hover_calls = on_hover_calls + 1 + end + local instance = druid:new_hover(button, on_hover) druid:on_input(mock_input.input_empty(10, 10)) @@ -96,15 +103,15 @@ return function() instance:set_enabled(false) assert(instance:is_enabled() == false) assert(instance:is_hovered() == false) - druid:on_input(mock_input.input_empty(12, 12)) + druid:on_input(mock_input.input_empty(10, 10)) assert(instance:is_hovered() == false) instance:set_enabled(true) - druid:on_input(mock_input.input_empty(12, 12)) + druid:on_input(mock_input.input_empty(10, 10)) assert(instance:is_enabled() == true) assert(instance:is_hovered() == true) - druid:on_input(mock_input.input_empty(-10, 10)) + druid:on_input(mock_input.input_empty(100, 100)) assert(instance:is_hovered() == false) end) end) diff --git a/test/tests/test_input.lua b/test/tests/test_input.lua new file mode 100644 index 0000000..eb164a0 --- /dev/null +++ b/test/tests/test_input.lua @@ -0,0 +1,379 @@ +return function() + describe("Input Component", function() + local mock_time + local mock_input + local druid_system + + local druid + local context + + before(function() + mock_time = require("deftest.mock.time") + mock_input = require("test.helper.mock_input") + druid_system = require("druid.druid") + + mock_time.mock() + mock_time.set(0) + + context = vmath.vector3() + druid = druid_system.new(context) + end) + + after(function() + mock_time.unmock() + druid:final() + druid = nil + end) + + it("Should create input component", function() + local button_node = gui.new_box_node(vmath.vector3(50, 25, 0), vmath.vector3(100, 50, 0)) + local text_node = gui.new_text_node(vmath.vector3(50, 25, 0), "Initial Text") + gui.set_font(text_node, "druid_text_bold") + + local input = druid:new_input(button_node, text_node) + + assert(input ~= nil) + assert(input.button ~= nil) + assert(input.text ~= nil) + assert(input:get_text() == "Initial Text") + + druid:remove(input) + gui.delete_node(button_node) + gui.delete_node(text_node) + end) + + it("Should select and unselect input", function() + local button_node = gui.new_box_node(vmath.vector3(50, 25, 0), vmath.vector3(100, 50, 0)) + local text_node = gui.new_text_node(vmath.vector3(50, 25, 0), "Text") + gui.set_font(text_node, "druid_text_bold") + + local input = druid:new_input(button_node, text_node) + + local on_input_select_calls = 0 + local on_input_unselect_calls = 0 + + input.on_input_select:subscribe(function() + on_input_select_calls = on_input_select_calls + 1 + end) + + input.on_input_unselect:subscribe(function() + on_input_unselect_calls = on_input_unselect_calls + 1 + end) + + -- Select input + druid:on_input(mock_input.click_pressed(50, 25)) + druid:on_input(mock_input.click_released(50, 25)) + + assert(input.is_selected == true) + assert(on_input_select_calls == 1) + + -- Unselect input + druid:on_input(mock_input.click_pressed(200, 200)) + druid:on_input(mock_input.click_released(200, 200)) + + assert(input.is_selected == false) + assert(on_input_unselect_calls == 1) + + druid:remove(input) + gui.delete_node(button_node) + gui.delete_node(text_node) + end) + + it("Should handle text input", function() + local button_node = gui.new_box_node(vmath.vector3(50, 25, 0), vmath.vector3(100, 50, 0)) + local text_node = gui.new_text_node(vmath.vector3(50, 25, 0), "") + gui.set_font(text_node, "druid_text_bold") + + local input = druid:new_input(button_node, text_node) + + local on_input_text_calls = 0 + input.on_input_text:subscribe(function() + on_input_text_calls = on_input_text_calls + 1 + end) + + -- Select input + druid:on_input(mock_input.click_pressed(50, 25)) + druid:on_input(mock_input.click_released(50, 25)) + + -- Type "H" + druid:on_input(mock_input.input_text("H")) + assert(input:get_text() == "H") + assert(on_input_text_calls == 1) + + -- Type "e" + druid:on_input(mock_input.input_text("e")) + assert(input:get_text() == "He") + assert(on_input_text_calls == 2) + + -- Type "llo" + druid:on_input(mock_input.input_text("l")) + druid:on_input(mock_input.input_text("l")) + druid:on_input(mock_input.input_text("o")) + + assert(input:get_text() == "Hello") + assert(on_input_text_calls == 5) + + druid:remove(input) + gui.delete_node(button_node) + gui.delete_node(text_node) + end) + + it("Should handle backspace input", function() + local button_node = gui.new_box_node(vmath.vector3(50, 25, 0), vmath.vector3(100, 50, 0)) + local text_node = gui.new_text_node(vmath.vector3(50, 25, 0), "Hello") + gui.set_font(text_node, "druid_text_bold") + + local input = druid:new_input(button_node, text_node) + + -- Select input + druid:on_input(mock_input.click_pressed(50, 25)) + druid:on_input(mock_input.click_released(50, 25)) + + -- Delete one letter + druid:on_input(hash("key_backspace"), {pressed = true}) + assert(input:get_text() == "Hell") + + -- Delete another letter + druid:on_input(hash("key_backspace"), {pressed = true}) + assert(input:get_text() == "Hel") + + druid:remove(input) + gui.delete_node(button_node) + gui.delete_node(text_node) + end) + + it("Should set max length", function() + local button_node = gui.new_box_node(vmath.vector3(50, 25, 0), vmath.vector3(100, 50, 0)) + local text_node = gui.new_text_node(vmath.vector3(50, 25, 0), "") + gui.set_font(text_node, "druid_text_bold") + + local input = druid:new_input(button_node, text_node) + + local on_input_full_calls = 0 + input.on_input_full:subscribe(function() + on_input_full_calls = on_input_full_calls + 1 + end) + + -- Set max length to 5 + input:set_max_length(5) + + -- Select input + druid:on_input(mock_input.click_pressed(50, 25)) + druid:on_input(mock_input.click_released(50, 25)) + + -- Type "Hello" + druid:on_input(mock_input.input_text("H")) + druid:on_input(mock_input.input_text("e")) + druid:on_input(mock_input.input_text("l")) + druid:on_input(mock_input.input_text("l")) + druid:on_input(mock_input.input_text("o")) + + assert(input:get_text() == "Hello") + assert(on_input_full_calls == 1) + + -- Try to type "World" - should truncate + druid:on_input(mock_input.input_text("W")) + druid:on_input(mock_input.input_text("o")) + druid:on_input(mock_input.input_text("r")) + druid:on_input(mock_input.input_text("l")) + druid:on_input(mock_input.input_text("d")) + + assert(input:get_text() == "Hello") + + druid:remove(input) + gui.delete_node(button_node) + gui.delete_node(text_node) + end) + + it("Should validate allowed characters", function() + local button_node = gui.new_box_node(vmath.vector3(50, 25, 0), vmath.vector3(100, 50, 0)) + local text_node = gui.new_text_node(vmath.vector3(50, 25, 0), "") + gui.set_font(text_node, "druid_text_bold") + + local input = druid:new_input(button_node, text_node) + + local on_input_wrong_calls = 0 + input.on_input_wrong:subscribe(function() + on_input_wrong_calls = on_input_wrong_calls + 1 + end) + + -- Set allowed characters to only numbers + input:set_allowed_characters("[0-9]") + + -- Select input + druid:on_input(mock_input.click_pressed(50, 25)) + druid:on_input(mock_input.click_released(50, 25)) + + -- Type valid input "123" + druid:on_input(mock_input.input_text("1")) + druid:on_input(mock_input.input_text("2")) + druid:on_input(mock_input.input_text("3")) + + assert(input:get_text() == "123") + assert(on_input_wrong_calls == 0) + + -- Type invalid input "abc" - should be rejected + druid:on_input(mock_input.input_text("a")) + druid:on_input(mock_input.input_text("b")) + druid:on_input(mock_input.input_text("c")) + + assert(input:get_text() == "123") + assert(on_input_wrong_calls == 3) + + druid:remove(input) + gui.delete_node(button_node) + gui.delete_node(text_node) + end) + + it("Should handle password input", function() + local button_node = gui.new_box_node(vmath.vector3(50, 25, 0), vmath.vector3(100, 50, 0)) + local text_node = gui.new_text_node(vmath.vector3(50, 25, 0), "") + gui.set_font(text_node, "druid_text_bold") + + -- Create password input + local input = druid:new_input(button_node, text_node, gui.KEYBOARD_TYPE_PASSWORD) + + -- Select input + druid:on_input(mock_input.click_pressed(50, 25)) + druid:on_input(mock_input.click_released(50, 25)) + + druid:on_input(mock_input.input_text("H")) + druid:on_input(mock_input.input_text("e")) + druid:on_input(mock_input.input_text("l")) + druid:on_input(mock_input.input_text("l")) + druid:on_input(mock_input.input_text("o")) + + -- Raw text should be "Hello" + assert(input:get_text() == "Hello") + + -- But displayed text should be "*****" + assert(gui.get_text(text_node) == "*****") + + druid:remove(input) + gui.delete_node(button_node) + gui.delete_node(text_node) + end) + + it("Should handle enter key", function() + local button_node = gui.new_box_node(vmath.vector3(50, 25, 0), vmath.vector3(100, 50, 0)) + local text_node = gui.new_text_node(vmath.vector3(50, 25, 0), "") + gui.set_font(text_node, "druid_text_bold") + + local input = druid:new_input(button_node, text_node) + + -- Select input + druid:on_input(mock_input.click_pressed(50, 25)) + druid:on_input(mock_input.click_released(50, 25)) + + -- Verify input is selected + assert(input.is_selected == true) + + -- Simulate enter key press to unselect + assert(druid:on_input(hash("key_enter"), {released = true}) == true) + + -- Verify input is unselected + assert(input.is_selected == false) + + druid:remove(input) + gui.delete_node(button_node) + gui.delete_node(text_node) + end) + + it("Should reset changes", function() + local button_node = gui.new_box_node(vmath.vector3(50, 25, 0), vmath.vector3(100, 50, 0)) + local text_node = gui.new_text_node(vmath.vector3(50, 25, 0), "Initial") + gui.set_font(text_node, "druid_text_bold") + + local input = druid:new_input(button_node, text_node) + + -- Select input + druid:on_input(mock_input.click_pressed(50, 25)) + druid:on_input(mock_input.click_released(50, 25)) + + -- Type some text + druid:on_input(hash("text"), {text = "M"}) + druid:on_input(hash("text"), {text = "o"}) + druid:on_input(hash("text"), {text = "d"}) + + assert(input:get_text() == "InitialMod") + + -- Reset changes + input:reset_changes() + + -- Verify text is reset to initial value + assert(input:get_text() == "Initial") + assert(input.is_selected == false) + + druid:remove(input) + gui.delete_node(button_node) + gui.delete_node(text_node) + end) + + it("Should handle selection and cursor manipulation", function() + local button_node = gui.new_box_node(vmath.vector3(50, 25, 0), vmath.vector3(100, 50, 0)) + local text_node = gui.new_text_node(vmath.vector3(50, 25, 0), "Hello World") + gui.set_font(text_node, "druid_text_bold") + + local input = druid:new_input(button_node, text_node) + + local cursor_changes = 0 + input.on_select_cursor_change:subscribe(function() + cursor_changes = cursor_changes + 1 + end) + + -- Select input + druid:on_input(mock_input.click_pressed(50, 25)) + druid:on_input(mock_input.click_released(50, 25)) + assert(cursor_changes == 1) + + -- Default cursor should be at the end + assert(input.cursor_index == 11) -- "Hello World" length + + -- Move cursor to position 5 + input:select_cursor(5) + assert(input.cursor_index == 5) + assert(cursor_changes == 2) + + -- Move selection to the left by 1 + input:move_selection(-1) + assert(input.cursor_index == 4) + assert(cursor_changes == 3) + + -- Move selection to the right by 2 + input:move_selection(2) + assert(input.cursor_index == 6) + assert(cursor_changes == 4) + + druid:remove(input) + gui.delete_node(button_node) + gui.delete_node(text_node) + end) + + it("Should handle empty input event", function() + local button_node = gui.new_box_node(vmath.vector3(50, 25, 0), vmath.vector3(100, 50, 0)) + local text_node = gui.new_text_node(vmath.vector3(50, 25, 0), "Text") + gui.set_font(text_node, "druid_text_bold") + + local input = druid:new_input(button_node, text_node) + + local on_input_empty_calls = 0 + input.on_input_empty:subscribe(function() + on_input_empty_calls = on_input_empty_calls + 1 + end) + + -- Select input + druid:on_input(mock_input.click_pressed(50, 25)) + druid:on_input(mock_input.click_released(50, 25)) + + -- Clear text + input:set_text("") + + assert(on_input_empty_calls == 1) + assert(input.is_empty == true) + + druid:remove(input) + gui.delete_node(button_node) + gui.delete_node(text_node) + end) + end) +end diff --git a/test/tests/test_layout.lua b/test/tests/test_layout.lua new file mode 100644 index 0000000..5fb72e9 --- /dev/null +++ b/test/tests/test_layout.lua @@ -0,0 +1,487 @@ +return function() + describe("Layout Component", function() + local mock_time + local mock_input + local druid_system + + local druid + local context + + before(function() + mock_time = require("deftest.mock.time") + mock_input = require("test.helper.mock_input") + druid_system = require("druid.druid") + + mock_time.mock() + mock_time.set(0) + + context = vmath.vector3() + druid = druid_system.new(context) + end) + + after(function() + mock_time.unmock() + druid:final() + druid = nil + end) + + + it("Should initialize layout with default settings", function() + local layout_node = gui.new_box_node(vmath.vector3(50, 50, 0), vmath.vector3(100, 100, 0)) + local layout = druid:new_layout(layout_node) + + assert(layout ~= nil) + assert(layout.node == layout_node) + assert(layout.type == "horizontal") + assert(layout.is_dirty == true) + assert(layout.entities ~= nil) + assert(#layout.entities == 0) + assert(layout.is_resize_width == false) + assert(layout.is_resize_height == false) + assert(layout.is_justify == false) + + druid:remove(layout) + gui.delete_node(layout_node) + end) + + it("Should add and remove nodes", function() + local layout_node = gui.new_box_node(vmath.vector3(50, 50, 0), vmath.vector3(100, 100, 0)) + local layout = druid:new_layout(layout_node) + + local child1 = gui.new_box_node(vmath.vector3(0, 0, 0), vmath.vector3(20, 20, 0)) + local child2 = gui.new_box_node(vmath.vector3(0, 0, 0), vmath.vector3(20, 20, 0)) + + layout:add(child1) + assert(#layout.entities == 1) + assert(layout.entities[1] == child1) + + layout:add(child2) + assert(#layout.entities == 2) + assert(layout.entities[2] == child2) + + layout:remove(child1) + assert(#layout.entities == 1) + assert(layout.entities[1] == child2) + + layout:clear_layout() + assert(#layout.entities == 0) + + druid:remove(layout) + gui.delete_node(layout_node) + gui.delete_node(child1) + gui.delete_node(child2) + end) + + it("Should set node index", function() + local layout_node = gui.new_box_node(vmath.vector3(50, 50, 0), vmath.vector3(100, 100, 0)) + local layout = druid:new_layout(layout_node) + + local child1 = gui.new_box_node(vmath.vector3(0, 0, 0), vmath.vector3(20, 20, 0)) + local child2 = gui.new_box_node(vmath.vector3(0, 0, 0), vmath.vector3(20, 20, 0)) + local child3 = gui.new_box_node(vmath.vector3(0, 0, 0), vmath.vector3(20, 20, 0)) + + layout:add(child1) + layout:add(child2) + layout:add(child3) + + assert(layout.entities[1] == child1) + assert(layout.entities[2] == child2) + assert(layout.entities[3] == child3) + + layout:set_node_index(child3, 1) + + assert(layout.entities[1] == child3) + assert(layout.entities[2] == child1) + assert(layout.entities[3] == child2) + + druid:remove(layout) + gui.delete_node(layout_node) + gui.delete_node(child1) + gui.delete_node(child2) + gui.delete_node(child3) + end) + + it("Should set layout type", function() + local layout_node = gui.new_box_node(vmath.vector3(50, 50, 0), vmath.vector3(100, 100, 0)) + local layout = druid:new_layout(layout_node) + + assert(layout.type == "horizontal") + + layout:set_type("vertical") + assert(layout.type == "vertical") + assert(layout.is_dirty == true) + + layout:set_type("horizontal_wrap") + assert(layout.type == "horizontal_wrap") + assert(layout.is_dirty == true) + + druid:remove(layout) + gui.delete_node(layout_node) + end) + + it("Should set margin", function() + local layout_node = gui.new_box_node(vmath.vector3(50, 50, 0), vmath.vector3(100, 100, 0)) + local layout = druid:new_layout(layout_node) + + local initial_margin_x = layout.margin.x + local initial_margin_y = layout.margin.y + + layout:set_margin(10, 20) + + assert(layout.margin.x == 10) + assert(layout.margin.y == 20) + assert(layout.is_dirty == true) + + -- Test partial update + layout:set_margin(15) + assert(layout.margin.x == 15) + assert(layout.margin.y == 20) + + druid:remove(layout) + gui.delete_node(layout_node) + end) + + it("Should set padding", function() + local layout_node = gui.new_box_node(vmath.vector3(50, 50, 0), vmath.vector3(100, 100, 0)) + local layout = druid:new_layout(layout_node) + + layout:set_padding(5, 10, 15, 20) + + assert(layout.padding.x == 5) -- left + assert(layout.padding.y == 10) -- top + assert(layout.padding.z == 15) -- right + assert(layout.padding.w == 20) -- bottom + assert(layout.is_dirty == true) + + -- Test partial update + layout:set_padding(25) + assert(layout.padding.x == 25) + assert(layout.padding.y == 10) + assert(layout.padding.z == 15) + assert(layout.padding.w == 20) + + druid:remove(layout) + gui.delete_node(layout_node) + end) + + it("Should set justify", function() + local layout_node = gui.new_box_node(vmath.vector3(50, 50, 0), vmath.vector3(100, 100, 0)) + local layout = druid:new_layout(layout_node) + + assert(layout.is_justify == false) + + layout:set_justify(true) + assert(layout.is_justify == true) + assert(layout.is_dirty == true) + + layout:set_justify(false) + assert(layout.is_justify == false) + assert(layout.is_dirty == true) + + druid:remove(layout) + gui.delete_node(layout_node) + end) + + it("Should set hug content", function() + local layout_node = gui.new_box_node(vmath.vector3(50, 50, 0), vmath.vector3(100, 100, 0)) + local layout = druid:new_layout(layout_node) + + assert(layout.is_resize_width == false) + assert(layout.is_resize_height == false) + + layout:set_hug_content(true, false) + assert(layout.is_resize_width == true) + assert(layout.is_resize_height == false) + assert(layout.is_dirty == true) + + layout:set_hug_content(false, true) + assert(layout.is_resize_width == false) + assert(layout.is_resize_height == true) + assert(layout.is_dirty == true) + + layout:set_hug_content(true, true) + assert(layout.is_resize_width == true) + assert(layout.is_resize_height == true) + assert(layout.is_dirty == true) + + druid:remove(layout) + gui.delete_node(layout_node) + end) + + it("Should fire on_size_changed event", function() + local layout_node = gui.new_box_node(vmath.vector3(50, 50, 0), vmath.vector3(100, 100, 0)) + local layout = druid:new_layout(layout_node) + + local on_size_changed_calls = 0 + local last_size = nil + + layout.on_size_changed:subscribe(function(new_size) + on_size_changed_calls = on_size_changed_calls + 1 + last_size = new_size + end) + + -- Set to hug content + layout:set_hug_content(true, true) + + -- Add some nodes + local child1 = gui.new_box_node(vmath.vector3(0, 0, 0), vmath.vector3(30, 20, 0)) + local child2 = gui.new_box_node(vmath.vector3(0, 0, 0), vmath.vector3(30, 20, 0)) + + layout:add(child1) + layout:add(child2) + + -- Force refresh to trigger the event + layout:refresh_layout() + + assert(on_size_changed_calls >= 1) + assert(last_size ~= nil) + + druid:remove(layout) + gui.delete_node(layout_node) + gui.delete_node(child1) + gui.delete_node(child2) + end) + + it("Should handle horizontal layout correctly", function() + local layout_node = gui.new_box_node(vmath.vector3(50, 50, 0), vmath.vector3(300, 100, 0)) + local layout = druid:new_layout(layout_node) + layout:set_type("horizontal") + layout:set_margin(10, 0) + + local child1 = gui.new_box_node(vmath.vector3(0, 0, 0), vmath.vector3(50, 30, 0)) + local child2 = gui.new_box_node(vmath.vector3(0, 0, 0), vmath.vector3(50, 30, 0)) + local child3 = gui.new_box_node(vmath.vector3(0, 0, 0), vmath.vector3(50, 30, 0)) + + layout:add(child1) + layout:add(child2) + layout:add(child3) + + layout:refresh_layout() + + -- Check positions - in horizontal layout, nodes should be arranged left to right + local pos1 = gui.get_position(child1) + local pos2 = gui.get_position(child2) + local pos3 = gui.get_position(child3) + + assert(pos2.x > pos1.x) + assert(pos3.x > pos2.x) + + -- Y positions should be approximately the same + assert(math.abs(pos1.y - pos2.y) < 0.001) + assert(math.abs(pos2.y - pos3.y) < 0.001) + + druid:remove(layout) + gui.delete_node(layout_node) + gui.delete_node(child1) + gui.delete_node(child2) + gui.delete_node(child3) + end) + + it("Should handle vertical layout correctly", function() + local layout_node = gui.new_box_node(vmath.vector3(50, 50, 0), vmath.vector3(100, 300, 0)) + local layout = druid:new_layout(layout_node) + layout:set_type("vertical") + layout:set_margin(0, 10) + + local child1 = gui.new_box_node(vmath.vector3(0, 0, 0), vmath.vector3(50, 30, 0)) + local child2 = gui.new_box_node(vmath.vector3(0, 0, 0), vmath.vector3(50, 30, 0)) + local child3 = gui.new_box_node(vmath.vector3(0, 0, 0), vmath.vector3(50, 30, 0)) + + layout:add(child1) + layout:add(child2) + layout:add(child3) + + layout:refresh_layout() + + -- Check positions - in vertical layout, nodes should be arranged top to bottom + local pos1 = gui.get_position(child1) + local pos2 = gui.get_position(child2) + local pos3 = gui.get_position(child3) + + assert(pos2.y < pos1.y) + assert(pos3.y < pos2.y) + + -- X positions should be approximately the same + assert(math.abs(pos1.x - pos2.x) < 0.001) + assert(math.abs(pos2.x - pos3.x) < 0.001) + + druid:remove(layout) + gui.delete_node(layout_node) + gui.delete_node(child1) + gui.delete_node(child2) + gui.delete_node(child3) + end) + + it("Should handle horizontal_wrap layout correctly", function() + local layout_node = gui.new_box_node(vmath.vector3(50, 50, 0), vmath.vector3(120, 200, 0)) + local layout = druid:new_layout(layout_node) + layout:set_type("horizontal_wrap") + layout:set_margin(10, 10) + + -- Create nodes that will need to wrap + local child1 = gui.new_box_node(vmath.vector3(0, 0, 0), vmath.vector3(50, 30, 0)) + local child2 = gui.new_box_node(vmath.vector3(0, 0, 0), vmath.vector3(50, 30, 0)) + local child3 = gui.new_box_node(vmath.vector3(0, 0, 0), vmath.vector3(50, 30, 0)) + local child4 = gui.new_box_node(vmath.vector3(0, 0, 0), vmath.vector3(50, 30, 0)) + + layout:add(child1) + layout:add(child2) + layout:add(child3) + layout:add(child4) + + layout:refresh_layout() + + -- Check positions - in horizontal_wrap layout, nodes should wrap to new line + local pos1 = gui.get_position(child1) + local pos2 = gui.get_position(child2) + local pos3 = gui.get_position(child3) + local pos4 = gui.get_position(child4) + + -- First two nodes should be on the same row + assert(math.abs(pos1.y - pos2.y) < 0.001) + + -- child3 should be on a new row + assert(pos3.y < pos1.y) + + -- child3 and child4 should be on the same row + assert(math.abs(pos3.y - pos4.y) < 0.001) + + -- X position should flow left to right on each row + assert(pos2.x > pos1.x) + assert(pos4.x > pos3.x) + + druid:remove(layout) + gui.delete_node(layout_node) + gui.delete_node(child1) + gui.delete_node(child2) + gui.delete_node(child3) + gui.delete_node(child4) + end) + + it("Should correctly calculate size with content hugging", function() + local layout_node = gui.new_box_node(vmath.vector3(50, 50, 0), vmath.vector3(100, 100, 0)) + local layout = druid:new_layout(layout_node) + layout:set_type("vertical") + layout:set_hug_content(true, true) + layout:set_margin(0, 10) + layout:set_padding(5, 5, 5, 5) + + local child1 = gui.new_box_node(vmath.vector3(0, 0, 0), vmath.vector3(60, 30, 0)) + local child2 = gui.new_box_node(vmath.vector3(0, 0, 0), vmath.vector3(70, 30, 0)) + + layout:add(child1) + layout:add(child2) + + layout:refresh_layout() + + -- Size should be adjusted to fit content plus padding + local size = gui.get_size(layout_node) + + -- Expected width: width of widest child (70) + left and right padding (5+5) + assert(math.abs(size.x - 80) < 1) + + -- Expected height: sum of child heights (30+30) + margin (10) + top and bottom padding (5+5) + assert(math.abs(size.y - 80) < 1) + + druid:remove(layout) + gui.delete_node(layout_node) + gui.delete_node(child1) + gui.delete_node(child2) + end) + + it("Should justify content horizontally", function() + local layout_node = gui.new_box_node(vmath.vector3(50, 50, 0), vmath.vector3(300, 100, 0)) + local layout = druid:new_layout(layout_node) + layout:set_type("horizontal") + layout:set_justify(true) + + local child1 = gui.new_box_node(vmath.vector3(0, 0, 0), vmath.vector3(50, 30, 0)) + local child2 = gui.new_box_node(vmath.vector3(0, 0, 0), vmath.vector3(50, 30, 0)) + + layout:add(child1) + layout:add(child2) + + layout:refresh_layout() + + -- Check positions - in justified horizontal layout, nodes should be spaced far apart + local pos1 = gui.get_position(child1) + local pos2 = gui.get_position(child2) + + -- Get the layout size and calculate expected positions + local size = gui.get_size(layout_node) + + -- In justified layout, the distance between nodes should be larger than with normal layout + assert((pos2.x - pos1.x) > 100) + + druid:remove(layout) + gui.delete_node(layout_node) + gui.delete_node(child1) + gui.delete_node(child2) + end) + + it("Should handle disabled nodes", function() + local layout_node = gui.new_box_node(vmath.vector3(50, 50, 0), vmath.vector3(300, 100, 0)) + local layout = druid:new_layout(layout_node) + layout:set_type("horizontal") + layout:set_margin(10, 0) + + local child1 = gui.new_box_node(vmath.vector3(0, 0, 0), vmath.vector3(50, 30, 0)) + local child2 = gui.new_box_node(vmath.vector3(0, 0, 0), vmath.vector3(50, 30, 0)) + local child3 = gui.new_box_node(vmath.vector3(0, 0, 0), vmath.vector3(50, 30, 0)) + + layout:add(child1) + layout:add(child2) + layout:add(child3) + + -- Disable the middle node + gui.set_enabled(child2, false) + + layout:refresh_layout() + + -- Check positions - the disabled node should be ignored in the layout + local pos1 = gui.get_position(child1) + local pos3 = gui.get_position(child3) + + -- child3 should be positioned right after child1 (as if child2 doesn't exist) + local node_width = gui.get_size(child1).x + local expected_gap = node_width + layout.margin.x + + -- The distance should be approximately the width of a node plus margin + assert(math.abs((pos3.x - pos1.x) - expected_gap) < 1) + + druid:remove(layout) + gui.delete_node(layout_node) + gui.delete_node(child1) + gui.delete_node(child2) + gui.delete_node(child3) + end) + + it("Should handle text nodes correctly", function() + local layout_node = gui.new_box_node(vmath.vector3(50, 50, 0), vmath.vector3(300, 100, 0)) + local layout = druid:new_layout(layout_node) + layout:set_type("horizontal") + layout:set_margin(10, 0) + + local text_node = gui.new_text_node(vmath.vector3(0, 0, 0), "Hello World") + gui.set_font(text_node, "druid_text_bold") + + local box_node = gui.new_box_node(vmath.vector3(0, 0, 0), vmath.vector3(50, 30, 0)) + + layout:add(text_node) + layout:add(box_node) + + layout:refresh_layout() + + -- Check positions - the text node should be positioned based on its text size + local pos_text = gui.get_position(text_node) + local pos_box = gui.get_position(box_node) + + assert(pos_box.x > pos_text.x) + + druid:remove(layout) + gui.delete_node(layout_node) + gui.delete_node(text_node) + gui.delete_node(box_node) + end) + end) +end diff --git a/test/tests/test_rich_text.lua b/test/tests/test_rich_text.lua new file mode 100644 index 0000000..0e4ad0d --- /dev/null +++ b/test/tests/test_rich_text.lua @@ -0,0 +1,322 @@ +return function() + describe("Rich Text Component", function() + local mock_time + local mock_input + local druid_system + + local druid + local context + + before(function() + mock_time = require("deftest.mock.time") + mock_input = require("test.helper.mock_input") + druid_system = require("druid.druid") + + mock_time.mock() + mock_time.set(0) + + context = vmath.vector3() + druid = druid_system.new(context) + end) + + after(function() + mock_time.unmock() + druid:final() + druid = nil + end) + + + it("Should initialize with default settings", function() + local text_node = gui.new_text_node(vmath.vector3(50, 50, 0), "Initial Text") + gui.set_font(text_node, "druid_text_bold") + + local rich_text = druid:new_rich_text(text_node) + + assert(rich_text ~= nil) + assert(rich_text.root == text_node) + assert(rich_text.text_prefab == text_node) + assert(rich_text:get_text() == "Initial Text") + + -- Check that the original text node is cleared + assert(gui.get_text(text_node) == "") + + druid:remove(rich_text) + gui.delete_node(text_node) + end) + + it("Should initialize with custom text", function() + local text_node = gui.new_text_node(vmath.vector3(50, 50, 0), "Initial Text") + gui.set_font(text_node, "druid_text_bold") + + local rich_text = druid:new_rich_text(text_node, "Custom Text") + + assert(rich_text:get_text() == "Custom Text") + + druid:remove(rich_text) + gui.delete_node(text_node) + end) + + it("Should handle basic text setting and getting", function() + local text_node = gui.new_text_node(vmath.vector3(50, 50, 0), "") + gui.set_font(text_node, "druid_text_bold") + + local rich_text = druid:new_rich_text(text_node) + + assert(rich_text:get_text() == "") + + rich_text:set_text("Hello, World!") + assert(rich_text:get_text() == "Hello, World!") + + rich_text:set_text("New text") + assert(rich_text:get_text() == "New text") + + druid:remove(rich_text) + gui.delete_node(text_node) + end) + + it("Should handle color tag", function() + local text_node = gui.new_text_node(vmath.vector3(50, 50, 0), "") + gui.set_font(text_node, "druid_text_bold") + + local rich_text = druid:new_rich_text(text_node) + + -- Test color tag with named color + local words = rich_text:set_text("Colored Text") + + assert(#words > 0) + -- Word should have a tags field with color tag + assert(words[1].tags.color) + + -- Test color tag with RGB values + words = rich_text:set_text("Colored Text") + + assert(#words > 0) + assert(words[1].tags.color) + + druid:remove(rich_text) + gui.delete_node(text_node) + end) + + it("Should handle shadow tag", function() + local text_node = gui.new_text_node(vmath.vector3(50, 50, 0), "") + gui.set_font(text_node, "druid_text_bold") + + local rich_text = druid:new_rich_text(text_node) + + -- Test shadow tag with named color + local words = rich_text:set_text("Shadowed Text") + + assert(#words > 0) + assert(words[1].shadow ~= nil) + + -- Test shadow tag with RGBA values + words = rich_text:set_text("Shadowed Text") + + assert(#words > 0) + assert(words[1].shadow ~= nil) + assert(words[1].shadow.x < 0.1) -- Black shadow should have low RGB values + assert(words[1].shadow.y < 0.1) + assert(words[1].shadow.z < 0.1) + + druid:remove(rich_text) + gui.delete_node(text_node) + end) + + it("Should handle outline tag", function() + local text_node = gui.new_text_node(vmath.vector3(50, 50, 0), "") + gui.set_font(text_node, "druid_text_bold") + + local rich_text = druid:new_rich_text(text_node) + + -- Test outline tag with named color + local words = rich_text:set_text("Outlined Text") + + assert(#words > 0) + assert(words[1].outline ~= nil) + + -- Test outline tag with RGBA values + words = rich_text:set_text("Outlined Text") + + assert(#words > 0) + assert(words[1].outline ~= nil) + assert(words[1].outline.x < 0.1) -- Black outline should have low RGB values + assert(words[1].outline.y < 0.1) + assert(words[1].outline.z < 0.1) + + druid:remove(rich_text) + gui.delete_node(text_node) + end) + + it("Should handle size tag", function() + local text_node = gui.new_text_node(vmath.vector3(50, 50, 0), "") + gui.set_font(text_node, "druid_text_bold") + + local rich_text = druid:new_rich_text(text_node) + + -- Test size tag with value of 2 (twice as large) + local words = rich_text:set_text("Large Text") + + assert(#words > 0) + assert(words[1].relative_scale == 2) + + -- Test size tag with value of 0.5 (half as large) + words = rich_text:set_text("Small Text") + + assert(#words > 0) + assert(words[1].relative_scale == 0.5) + + druid:remove(rich_text) + gui.delete_node(text_node) + end) + + it("Should handle line break tag", function() + local text_node = gui.new_text_node(vmath.vector3(50, 50, 0), "") + gui.set_font(text_node, "druid_text_bold") + gui.set_line_break(text_node, true) -- Enable multiline + + local rich_text = druid:new_rich_text(text_node) + + -- Test line break tag + local words, line_metrics = rich_text:set_text("Line 1
Line 2") + + assert(#words > 0) + assert(line_metrics.lines ~= nil) + assert(#line_metrics.lines >= 2) -- Should have at least 2 lines + + druid:remove(rich_text) + gui.delete_node(text_node) + end) + + it("Should handle nobr tag", function() + local text_node = gui.new_text_node(vmath.vector3(50, 50, 0), "") + gui.set_font(text_node, "druid_text_bold") + gui.set_line_break(text_node, true) -- Enable multiline + + local rich_text = druid:new_rich_text(text_node) + + -- Test no break tag + local words = rich_text:set_text("This text should not break to multiple lines") + + assert(#words > 0) + assert(words[1].nobr == true) + + druid:remove(rich_text) + gui.delete_node(text_node) + end) + + it("Should handle image tag", function() + local text_node = gui.new_text_node(vmath.vector3(50, 50, 0), "") + gui.set_font(text_node, "druid_text_bold") + + local rich_text = druid:new_rich_text(text_node) + + -- Testing with a default texture with a fixed width and height to avoid nil errors + -- (This ensures image.width and image.height are numbers, not nil) + local words = rich_text:set_text("") + + assert(#words > 0) + assert(words[1].tags.img) + + druid:remove(rich_text) + gui.delete_node(text_node) + end) + + it("Should handle multiple tags", function() + local text_node = gui.new_text_node(vmath.vector3(50, 50, 0), "") + gui.set_font(text_node, "druid_text_bold") + + local rich_text = druid:new_rich_text(text_node) + + -- Test combined tags + local words = rich_text:set_text("Big Red Text") + + assert(#words > 0) + assert(words[1].tags.color) + assert(words[1].tags.size) + assert(words[1].relative_scale == 2) + + -- Test nested tags + words = rich_text:set_text("Red Big Red Red") + + assert(#words >= 3) + -- All words should have color tag + assert(words[1].tags.color) + assert(words[2].tags.color) + assert(words[3].tags.color) + + -- Middle word should also have size tag + assert(words[2].tags.size) + assert(words[2].relative_scale == 2) + + druid:remove(rich_text) + gui.delete_node(text_node) + end) + + it("Should handle tagged words", function() + local text_node = gui.new_text_node(vmath.vector3(50, 50, 0), "") + gui.set_font(text_node, "druid_text_bold") + + local rich_text = druid:new_rich_text(text_node) + + -- Set text with a custom tag + rich_text:set_text("Tagged Text Normal Text") + + -- Get words with the custom tag + local tagged_words = rich_text:tagged("mytag") + + assert(#tagged_words > 0) + assert(tagged_words[1].tags.mytag == true) + + druid:remove(rich_text) + gui.delete_node(text_node) + end) + + it("Should clear text", function() + local text_node = gui.new_text_node(vmath.vector3(50, 50, 0), "") + gui.set_font(text_node, "druid_text_bold") + + local rich_text = druid:new_rich_text(text_node) + + -- Set some text first + rich_text:set_text("Hello, World!") + + assert(rich_text:get_text() == "Hello, World!") + assert(rich_text:get_words() ~= nil) + + -- Clear text + rich_text:clear() + + assert(rich_text:get_text() == nil) + assert(rich_text:get_words() == nil) + + druid:remove(rich_text) + gui.delete_node(text_node) + end) + + it("Should get words and line metrics", function() + local text_node = gui.new_text_node(vmath.vector3(50, 50, 0), "") + gui.set_font(text_node, "druid_text_bold") + + local rich_text = druid:new_rich_text(text_node) + + -- Set text + rich_text:set_text("Hello, World!") + + -- Get words + local words = rich_text:get_words() + + assert(words ~= nil) + assert(#words > 0) + + -- Get line metrics + local line_metrics = rich_text:get_line_metric() + + assert(line_metrics ~= nil) + -- Just check line_metrics exists, don't assume values + assert(line_metrics.lines ~= nil) + + druid:remove(rich_text) + gui.delete_node(text_node) + end) + end) +end diff --git a/test/tests/test_scroll.lua b/test/tests/test_scroll.lua new file mode 100644 index 0000000..b10aec2 --- /dev/null +++ b/test/tests/test_scroll.lua @@ -0,0 +1,232 @@ +return function() + describe("Scroll Component", function() + local mock_time + local mock_input + local druid_system + + local druid + local context + + local function create_scroll_instance() + local view_node = gui.new_box_node(vmath.vector3(0, 0, 0), vmath.vector3(100, 100, 0)) + local content_node = gui.new_box_node(vmath.vector3(0, 0, 0), vmath.vector3(200, 200, 0)) + gui.set_parent(content_node, view_node) + + local instance = druid:new_scroll(view_node, content_node) + + -- Set default style for consistent testing + instance.style.EXTRA_STRETCH_SIZE = 10 + instance.style.FRICT = 0.95 + instance.style.FRICT_HOLD = 0.85 + instance.style.INERT_SPEED = 30 + instance.style.ANIM_SPEED = 0.2 + instance.style.BACK_SPEED = 0.35 + instance.style.WHEEL_SCROLL_SPEED = 20 + + return instance, view_node, content_node + end + + before(function() + mock_time = require("deftest.mock.time") + mock_input = require("test.helper.mock_input") + druid_system = require("druid.druid") + + mock_time.mock() + mock_time.set(60) + + context = vmath.vector3() + druid = druid_system.new(context) + end) + + after(function() + mock_time.unmock() + druid:final() + druid = nil + end) + + it("Should create scroll component", function() + local scroll, view_node, content_node = create_scroll_instance() + + assert(scroll.view_node == view_node) + assert(scroll.content_node == content_node) + assert(scroll.position.x == 0) + assert(scroll.position.y == 0) + end) + + it("Should handle basic drag scrolling", function() + local scroll, view_node, content_node = create_scroll_instance() + + -- Verify scroll has a drag instance + assert(scroll.drag ~= nil) + + -- Simulate drag start + druid:on_input(mock_input.click_pressed(50, 50)) + + -- Simulate significant drag movement + druid:on_input(mock_input.input_empty(20, 20)) + + -- Release drag + druid:on_input(mock_input.click_released(20, 20)) + + -- Verify the scroll component exists and has basic functions + assert(scroll.scroll_to ~= nil) + end) + + it("Should handle inertial scrolling", function() + local scroll, view_node, content_node = create_scroll_instance() + + -- Just verify scroll component has needed fields + assert(scroll.inertion ~= nil) + end) + + it("Should scroll to a specific position", function() + local scroll, view_node, content_node = create_scroll_instance() + + local on_scroll_to_calls = 0 + local function on_scroll_to() on_scroll_to_calls = on_scroll_to_calls + 1 end + scroll.on_scroll_to:subscribe(on_scroll_to) + + local target_pos = vmath.vector3(50, 50, 0) + scroll:scroll_to(target_pos, true) + + -- Position should be negative because content moves in opposite direction + assert(scroll.position.x == -50) + assert(scroll.position.y == -50) + assert(on_scroll_to_calls == 1) + + -- Test animated scroll + target_pos = vmath.vector3(70, 70, 0) + scroll:scroll_to(target_pos, false) + assert(scroll.is_animate == true) + + -- Complete animation + mock_time.elapse(0.5) + druid:update(0.5) + end) + + it("Should handle scroll_to_percent", function() + local scroll, view_node, content_node = create_scroll_instance() + + -- Just verify the function exists and can be called without errors + assert(scroll.scroll_to_percent ~= nil) + + -- First set the content to a known position + scroll:scroll_to(vmath.vector3(0, 0, 0), true) + + -- Call the function under test + scroll:scroll_to_percent(vmath.vector3(0.5, 0.5, 0), true) + + -- Don't make specific assertions about the result + -- Just verify we got here without errors + end) + + it("Should return correct scroll percent", function() + local scroll, view_node, content_node = create_scroll_instance() + + -- Start at position 0,0 + local percent = scroll:get_percent() + assert(percent.x >= 0 and percent.x <= 1) + assert(percent.y >= 0 and percent.y <= 1) + + -- Scroll to bottom right + scroll:scroll_to(vmath.vector3(100, 100, 0), true) + percent = scroll:get_percent() + assert(percent.x >= 0 and percent.x <= 1) + assert(percent.y >= 0 and percent.y <= 1) + end) + + it("Should handle scroll boundaries", function() + local scroll, view_node, content_node = create_scroll_instance() + + -- Try to scroll past boundaries + scroll:scroll_to(vmath.vector3(500, 500, 0), true) + + -- Position should be limited to available area + local available_pos = scroll.available_pos + assert(scroll.position.x >= available_pos.x) + assert(scroll.position.y >= available_pos.y) + + -- Try to scroll in negative direction + scroll:scroll_to(vmath.vector3(-500, -500, 0), true) + + assert(scroll.position.x <= available_pos.z) + assert(scroll.position.y <= available_pos.w) + end) + + it("Should handle setting scroll size", function() + local scroll, view_node, content_node = create_scroll_instance() + local new_size = vmath.vector3(300, 300, 0) + + scroll:set_size(new_size) + + -- Content size should be updated + assert(gui.get_size(content_node).x == new_size.x) + assert(gui.get_size(content_node).y == new_size.y) + + -- Available size should also be updated + assert(scroll.available_size.x > 0) + assert(scroll.available_size.y > 0) + + -- Test with offset + local offset = vmath.vector3(10, 10, 0) + scroll:set_size(new_size, offset) + assert(scroll._offset.x == 10) + assert(scroll._offset.y == 10) + end) + + it("Should handle view size update", function() + local scroll, view_node, content_node = create_scroll_instance() + local new_view_size = vmath.vector3(150, 150, 0) + + scroll:set_view_size(new_view_size) + + assert(gui.get_size(view_node).x == new_view_size.x) + assert(gui.get_size(view_node).y == new_view_size.y) + + -- Test refresh method + gui.set_size(view_node, vmath.vector3(180, 180, 0)) + scroll:update_view_size() + + assert(scroll.view_size.x == 180) + assert(scroll.view_size.y == 180) + end) + + it("Should handle points of interest", function() + local scroll, view_node, content_node = create_scroll_instance() + + -- Just test that function exists + assert(scroll.set_points ~= nil) + assert(scroll.scroll_to_index ~= nil) + + local points = { + vmath.vector3(30, 30, 0), + vmath.vector3(60, 60, 0), + vmath.vector3(90, 90, 0) + } + + -- Just verify these don't throw errors + scroll:set_points(points) + scroll:scroll_to_index(2) + + -- Verify selected value is set correctly + assert(scroll.selected == 2) + end) + + it("Should handle vertical and horizontal locking", function() + local scroll, view_node, content_node = create_scroll_instance() + + -- Lock horizontal scrolling + scroll:set_horizontal_scroll(false) + + -- Verify the lock state + assert(scroll:set_horizontal_scroll(false).drag.can_x == false) + + -- Lock vertical scrolling instead + scroll:set_horizontal_scroll(true) + scroll:set_vertical_scroll(false) + + -- Verify the lock state + assert(scroll:set_vertical_scroll(false).drag.can_y == false) + end) + end) +end diff --git a/test/tests/test_static_grid.lua b/test/tests/test_static_grid.lua index 4e17ce7..354a225 100644 --- a/test/tests/test_static_grid.lua +++ b/test/tests/test_static_grid.lua @@ -2,7 +2,6 @@ return function() local mock_gui = nil local mock_time = nil local mock_input = nil - local test_helper = nil local druid_system = nil local druid = nil @@ -10,7 +9,7 @@ return function() describe("Static Grid component", function() local parent = nil - ---@type druid.static_grid + ---@type druid.grid local grid = nil local prefab = nil @@ -18,19 +17,18 @@ return function() mock_gui = require("deftest.mock.gui") mock_time = require("deftest.mock.time") mock_input = require("test.helper.mock_input") - test_helper = require("test.helper.test_helper") druid_system = require("druid.druid") mock_gui.mock() mock_time.mock() mock_time.set(60) - context = test_helper.get_context() + context = vmath.vector3() druid = druid_system.new(context) parent = mock_gui.add_box("parent", 0, 0, 50, 50) prefab = mock_gui.add_box("prefab", 50, 50, 25, 25) - grid = druid:new_static_grid(parent, prefab, 3) + grid = druid:new_grid(parent, prefab, 3) end) after(function() diff --git a/test/tests/test_template.lua b/test/tests/test_template.lua index ebe405f..f3e2f22 100644 --- a/test/tests/test_template.lua +++ b/test/tests/test_template.lua @@ -2,7 +2,6 @@ return function() local mock_gui = nil local mock_time = nil local mock_input = nil - local test_helper = nil local druid_system = nil local druid = nil @@ -13,14 +12,13 @@ return function() mock_gui = require("deftest.mock.gui") mock_time = require("deftest.mock.time") mock_input = require("test.helper.mock_input") - test_helper = require("test.helper.test_helper") druid_system = require("druid.druid") mock_gui.mock() mock_time.mock() mock_time.set(60) - context = test_helper.get_context() + context = vmath.vector3() druid = druid_system.new(context) end) diff --git a/test/tests/test_text.lua b/test/tests/test_text.lua new file mode 100644 index 0000000..c816841 --- /dev/null +++ b/test/tests/test_text.lua @@ -0,0 +1,238 @@ +return function() + describe("Text Component", function() + local mock_time + local mock_input + local druid_system + + local druid + local context + + before(function() + mock_time = require("deftest.mock.time") + mock_input = require("test.helper.mock_input") + druid_system = require("druid.druid") + + mock_time.mock() + mock_time.set(0) + + context = vmath.vector3() + druid = druid_system.new(context) + end) + + after(function() + mock_time.unmock() + druid:final() + druid = nil + end) + + it("Should create text component and set text", function() + local text_node = gui.new_text_node(vmath.vector3(50, 25, 0), "Initial Text") + gui.set_font(text_node, "druid_text_bold") + + local text = druid:new_text(text_node, "New Text") + + assert(text ~= nil) + assert(text.node == text_node) + assert(gui.get_text(text_node) == "New Text") + assert(text:get_text() == "New Text") + + -- Test that text setter works + text:set_text("Updated Text") + assert(gui.get_text(text_node) == "Updated Text") + assert(text:get_text() == "Updated Text") + + druid:remove(text) + gui.delete_node(text_node) + end) + + it("Should fire on_set_text event", function() + local text_node = gui.new_text_node(vmath.vector3(50, 25, 0), "Initial Text") + gui.set_font(text_node, "druid_text_bold") + + local text = druid:new_text(text_node) + + local on_set_text_calls = 0 + local last_text = nil + + text.on_set_text:subscribe(function(_, new_text) + on_set_text_calls = on_set_text_calls + 1 + last_text = new_text + end) + + text:set_text("Event Test") + + assert(on_set_text_calls == 1) + assert(last_text == "Event Test") + + druid:remove(text) + gui.delete_node(text_node) + end) + + it("Should change color and alpha", function() + local text_node = gui.new_text_node(vmath.vector3(50, 25, 0), "Color Test") + gui.set_font(text_node, "druid_text_bold") + + local text = druid:new_text(text_node) + + local initial_color = gui.get_color(text_node) + local new_color = vmath.vector4(1, 0, 0, 1) + + text:set_color(new_color) + assert(gui.get_color(text_node).x == new_color.x) + assert(gui.get_color(text_node).y == new_color.y) + assert(gui.get_color(text_node).z == new_color.z) + + text:set_alpha(0.5) + assert(gui.get_color(text_node).w == 0.5) + + druid:remove(text) + gui.delete_node(text_node) + end) + + it("Should set scale", function() + local text_node = gui.new_text_node(vmath.vector3(50, 25, 0), "Scale Test") + gui.set_font(text_node, "druid_text_bold") + + local text = druid:new_text(text_node) + + local new_scale = vmath.vector3(2, 2, 1) + text:set_scale(new_scale) + + local current_scale = gui.get_scale(text_node) + assert(current_scale.x == new_scale.x) + assert(current_scale.y == new_scale.y) + + druid:remove(text) + gui.delete_node(text_node) + end) + + it("Should set pivot and fire event", function() + local text_node = gui.new_text_node(vmath.vector3(50, 25, 0), "Pivot Test") + gui.set_font(text_node, "druid_text_bold") + + local text = druid:new_text(text_node) + + local on_set_pivot_calls = 0 + local last_pivot = nil + + text.on_set_pivot:subscribe(function(_, pivot) + on_set_pivot_calls = on_set_pivot_calls + 1 + last_pivot = pivot + end) + + text:set_pivot(gui.PIVOT_CENTER) + + assert(on_set_pivot_calls == 1) + assert(last_pivot == gui.PIVOT_CENTER) + assert(gui.get_pivot(text_node) == gui.PIVOT_CENTER) + + druid:remove(text) + gui.delete_node(text_node) + end) + + it("Should set text size", function() + local text_node = gui.new_text_node(vmath.vector3(50, 25, 0), "Size Test") + gui.set_font(text_node, "druid_text_bold") + + local text = druid:new_text(text_node) + + local initial_size = gui.get_size(text_node) + local new_size = vmath.vector3(200, 100, 0) + + text:set_size(new_size) + + -- Since setting size triggers adjust mechanisms, we can't directly check node size + -- but we can check that the internal size was updated + assert(text.start_size.x == new_size.x) + assert(text.start_size.y == new_size.y) + + druid:remove(text) + gui.delete_node(text_node) + end) + + it("Should handle different adjust types", function() + local text_node = gui.new_text_node(vmath.vector3(50, 25, 0), "Adjust Test") + gui.set_font(text_node, "druid_text_bold") + gui.set_size(text_node, vmath.vector3(100, 50, 0)) + + local text = druid:new_text(text_node, "This is a very long text that should be adjusted") + + -- Test default adjust (downscale) + local initial_adjust = text:get_text_adjust() + assert(initial_adjust == "downscale") + + -- Test no_adjust + text:set_text_adjust("no_adjust") + assert(text:get_text_adjust() == "no_adjust") + + -- Test trim + text:set_text_adjust("trim") + assert(text:get_text_adjust() == "trim") + + -- Test with minimal scale + text:set_text_adjust("downscale_limited", 0.5) + assert(text:get_text_adjust() == "downscale_limited") + + druid:remove(text) + gui.delete_node(text_node) + end) + + it("Should get text size", function() + local text_node = gui.new_text_node(vmath.vector3(50, 25, 0), "Text Size Test") + gui.set_font(text_node, "druid_text_bold") + + local text = druid:new_text(text_node) + + local width, height = text:get_text_size() + + assert(width > 0) + assert(height > 0) + + druid:remove(text) + gui.delete_node(text_node) + end) + + it("Should check if text is multiline", function() + local text_node = gui.new_text_node(vmath.vector3(50, 25, 0), "Single line") + gui.set_font(text_node, "druid_text_bold") + gui.set_line_break(text_node, false) + + local text = druid:new_text(text_node) + + assert(text:is_multiline() == false) + + -- Change to multiline + gui.set_line_break(text_node, true) + + assert(text:is_multiline() == true) + + druid:remove(text) + gui.delete_node(text_node) + end) + + it("Should fire on_update_text_scale event", function() + local text_node = gui.new_text_node(vmath.vector3(50, 25, 0), "Scale Event Test") + gui.set_font(text_node, "druid_text_bold") + gui.set_size(text_node, vmath.vector3(100, 50, 0)) + + local text = druid:new_text(text_node) + + local on_update_text_scale_calls = 0 + local last_scale = nil + + text.on_update_text_scale:subscribe(function(_, scale) + on_update_text_scale_calls = on_update_text_scale_calls + 1 + last_scale = scale + end) + + -- Trigger scale update + text:set_text("This text is long enough to trigger scaling") + + assert(on_update_text_scale_calls >= 1) + assert(last_scale ~= nil) + + druid:remove(text) + gui.delete_node(text_node) + end) + end) +end diff --git a/update_docs.sh b/update_docs.sh deleted file mode 100755 index e469afb..0000000 --- a/update_docs.sh +++ /dev/null @@ -1,17 +0,0 @@ -#!/bin/bash - -## I am using Ldoc and my own Ldoc -> emmylua generator: -## https://github.com/Insality/emmylua-from-ldoc-annotations - -emmylua_generator_path=~/code/lua/emmylua-from-ldoc-annotations - -echo "Update Ldoc" -ldoc . --testing - -echo "" -echo "Update EmmyLua annotations" -original_path=$(pwd) -bash $emmylua_generator_path/export.sh $original_path -mv $emmylua_generator_path/annotations.lua $original_path/druid/annotations.lua -cat ./utils/annotations_manual.lua >> $original_path/druid/annotations.lua -cp $original_path/utils/ldoc_fixed.css $original_path/docs/ldoc_fixed.css diff --git a/utils/annotations_manual.lua b/utils/annotations_manual.lua deleted file mode 100644 index ab4169d..0000000 --- a/utils/annotations_manual.lua +++ /dev/null @@ -1,102 +0,0 @@ --- Manual Annotations -- - ----@class druid.component: druid.base_component - ----@class druid.rich_text.metrics ----@field width number ----@field height number ----@field offset_x number|nil ----@field offset_y number|nil ----@field max_ascent number ----@field max_descent number ----@field node_size vector3|nil @For images only - ----@class druid.rich_text.lines_metrics ----@field text_width number ----@field text_height number ----@field lines table - ----@class druid.rich_text.word ----@field node node ----@field relative_scale number ----@field color vector4 ----@field position vector3 ----@field offset vector3 ----@field scale vector3 ----@field size vector3 ----@field metrics druid.rich_text.metrics ----@field pivot userdata @ The gui.PIVOT_* constant ----@field text string ----@field shadow vector4 ----@field outline vector4 ----@field font string ----@field image druid.rich_text.image ----@field default_animation string ----@field anchor number ----@field br boolean ----@field nobr boolean ----@field source_text string ----@field image_color vector4 ----@field text_color vector4 - ----@class druid.rich_text.image ----@field texture string ----@field anim string ----@field width number ----@field height number - ----@class druid.rich_text.settings ----@field parent node ----@field size number ----@field fonts table ----@field scale vector3 ----@field color vector4 ----@field shadow vector4 ----@field outline vector4 ----@field position vector3 ----@field image_pixel_grid_snap boolean ----@field combine_words boolean ----@field default_animation string ----@field text_prefab node ----@field adjust_scale number ----@field default_texture string ----@field is_multiline boolean ----@field text_leading number ----@field font hash ----@field width number ----@field height number - ----@class GUITextMetrics ----@field width number ----@field height number ----@field max_ascent number ----@field max_descent number - ----@class utf8 ----@field len fun(s: string):number ----@field sub fun(s: string, start_index: number, length: number) ----@field reverse fun() ----@field char fun() ----@field unicode fun() ----@field gensub fun() ----@field byte fun() ----@field find fun() ----@field match fun(s: string, m: string) ----@field gmatch fun(s: string, m: string) ----@field gsub fun() ----@field dump fun() ----@field format fun() ----@field lower fun() ----@field upper fun() ----@field rep fun() - - ----Add generics to some functions. - ----Create new component. ----@generic T: druid.base_component ----@param self druid_instance ----@param component T Component module ----@param ... any Other component params to pass it to component:init function ----@return T Component instance -function druid_instance.new(self, component, ...) end \ No newline at end of file diff --git a/utils/ldoc_fixed.css b/utils/ldoc_fixed.css deleted file mode 100644 index e63d191..0000000 --- a/utils/ldoc_fixed.css +++ /dev/null @@ -1,311 +0,0 @@ -/* BEGIN RESET - -Copyright (c) 2010, Yahoo! Inc. All rights reserved. -Code licensed under the BSD License: -http://developer.yahoo.com/yui/license.html -version: 2.8.2r1 -*/ -html { - color: #000; - background: #FFF; -} -body,div,dl,dt,dd,ul,ol,li,h1,h2,h3,h4,h5,h6,pre,code,form,fieldset,legend,input,button,textarea,p,blockquote,th,td { - margin: 0; - padding: 0; -} -table { - border-collapse: collapse; - border-spacing: 0; -} -fieldset,img { - border: 0; -} -address,caption,cite,code,dfn,em,strong,th,var,optgroup { - font-style: inherit; - font-weight: inherit; -} -del,ins { - text-decoration: none; -} -li { - margin-left: 20px; -} -caption,th { - text-align: left; -} -h1,h2,h3,h4,h5,h6 { - font-size: 100%; - font-weight: bold; -} -q:before,q:after { - content: ''; -} -abbr,acronym { - border: 0; - font-variant: normal; -} -sup { - vertical-align: baseline; -} -sub { - vertical-align: baseline; -} -legend { - color: #000; -} -input,button,textarea,select,optgroup,option { - font-family: inherit; - font-size: inherit; - font-style: inherit; - font-weight: inherit; -} -input,button,textarea,select {*font-size:100%; -} -/* END RESET */ - -body { - margin-left: 1em; - margin-right: 1em; - font-family: arial, helvetica, geneva, sans-serif; - background-color: #ffffff; margin: 0px; -} - -code, tt { font-family: monospace; font-size: 1.1em; } -span.parameter { font-family:monospace; } -span.parameter:after { content:":"; } -span.types:before { content:"("; } -span.types:after { content:")"; } -.type { font-weight: bold; font-style:italic } - -body, p, td, th { font-size: .95em; line-height: 1.2em;} - -p, ul { margin: 10px 0 0 0px;} - -strong { font-weight: bold;} - -em { font-style: italic;} - -h1 { - font-size: 1.5em; - margin: 0 0 20px 0; -} -h2, h3, h4 { margin: 15px 0 10px 0; } -h2 { font-size: 1.25em; } -h3 { font-size: 1.15em; } -h4 { font-size: 1.06em; } - -a:link { font-weight: bold; color: #004080; text-decoration: none; } -a:visited { font-weight: bold; color: #006699; text-decoration: none; } -a:link:hover { text-decoration: underline; } - -hr { - color:#cccccc; - background: #00007f; - height: 1px; -} - -blockquote { margin-left: 3em; } - -ul { list-style-type: disc; } - -p.name { - font-family: "Andale Mono", monospace; - padding-top: 1em; -} - -pre { - background-color: rgb(245, 245, 245); - border: 1px solid #C0C0C0; /* silver */ - padding: 10px; - margin: 10px 0 10px 0; - overflow: auto; - font-family: "Andale Mono", monospace; -} - -pre.example { - font-size: .85em; -} - -table.index { border: 1px #00007f; } -table.index td { text-align: left; vertical-align: top; } - -#container { - margin-left: 1em; - margin-right: 1em; - background-color: #ffffff; -} - -#product { - text-align: center; - border-bottom: 1px solid #cccccc; - background-color: #ffffff; -} - -#product big { - font-size: 2em; -} - -#main { - background-color:#FFFFFF; // #f0f0f0; - border-left: 1px solid #cccccc; -} - -#navigation { - position: fixed; - top: 0; - left: 0; - float: left; - width: 14em; - vertical-align: top; - background-color:#FFFFFF; // #f0f0f0; - border-right: 2px solid #cccccc; - overflow: visible; - overflow-y: scroll; - height: 100%; - padding-left: 1em; -} - -#navigation h2 { - background-color:#FFFFFF;//:#e7e7e7; - font-size:1.1em; - color:#000000; - text-align: left; - padding:0.2em; - border-bottom:1px solid #dddddd; -} - -#navigation ul -{ - font-size:1em; - list-style-type: none; - margin: 1px 1px 10px 1px; -} - -#navigation li { - text-indent: -1em; - display: block; - margin: 3px 0px 0px 22px; -} - -#navigation li li a { - margin: 0px 3px 0px -1em; -} - -#content { - margin-left: 14em; - padding: 1em; - padding-left: 2em; - width: 900px; - border-left: 2px solid #cccccc; - // border-right: 2px solid #cccccc; - background-color: #ffffff; -} - -#about { - clear: both; - padding-left: 1em; - margin-left: 14em; // avoid the damn sidebar! - border-top: 2px solid #cccccc; - border-left: 2px solid #cccccc; - background-color: #ffffff; -} - -@media print { - body { - font: 12pt "Times New Roman", "TimeNR", Times, serif; - } - a { font-weight: bold; color: #004080; text-decoration: underline; } - - #main { - background-color: #ffffff; - border-left: 0px; - } - - #container { - margin-left: 2%; - margin-right: 2%; - background-color: #ffffff; - } - - #content { - padding: 1em; - background-color: #ffffff; - } - - #navigation { - display: none; - } - pre.example { - font-family: "Andale Mono", monospace; - font-size: 10pt; - page-break-inside: avoid; - } -} - -table.module_list { - border-width: 1px; - border-style: solid; - border-color: #cccccc; - border-collapse: collapse; -} -table.module_list td { - border-width: 1px; - padding: 3px; - border-style: solid; - border-color: #cccccc; -} -table.module_list td.name { background-color: #f0f0f0; ; min-width: 200px; } -table.module_list td.summary { width: 100%; } - -table.function_list { - border-width: 1px; - border-style: solid; - border-color: #cccccc; - border-collapse: collapse; -} -table.function_list td { - border-width: 1px; - padding: 3px; - border-style: solid; - border-color: #cccccc; -} -table.function_list td.name { background-color: #f6f6ff; ; min-width: 200px; } -table.function_list td.summary { width: 100%; } - -dl.table dt, dl.function dt {border-top: 1px solid #ccc; padding-top: 1em;} -dl.table dd, dl.function dd {padding-bottom: 1em; margin: 10px 0 0 20px;} -dl.table h3, dl.function h3 {font-size: .95em;} - -ul.nowrap { - overflow:auto; - whitespace:nowrap; -} - -/* stop sublists from having initial vertical space */ -ul ul { margin-top: 0px; } -ol ul { margin-top: 0px; } -ol ol { margin-top: 0px; } -ul ol { margin-top: 0px; } - -/* make the target distinct; helps when we're navigating to a function */ -a:target + * { - background-color: #FF9; -} - - -/* styles for prettification of source */ -pre .comment { color: #558817; } -pre .constant { color: #a8660d; } -pre .escape { color: #844631; } -pre .keyword { color: #aa5050; font-weight: bold; } -pre .library { color: #0e7c6b; } -pre .marker { color: #512b1e; background: #fedc56; font-weight: bold; } -pre .string { color: #8080ff; } -pre .number { color: #f8660d; } -pre .operator { color: #2239a8; font-weight: bold; } -pre .preprocessor, pre .prepro { color: #a33243; } -pre .global { color: #800080; } -pre .user-keyword { color: #800080; } -pre .prompt { color: #558817; } -pre .url { color: #272fc2; text-decoration: underline; } - diff --git a/docs_md/advanced-setup.md b/wiki/advanced-setup.md similarity index 51% rename from docs_md/advanced-setup.md rename to wiki/advanced-setup.md index 5e047a7..98828fb 100644 --- a/docs_md/advanced-setup.md +++ b/wiki/advanced-setup.md @@ -1,6 +1,5 @@ # Advanced Druid Setup - ## Input Bindings By default, **Druid** uses all key names from Defold's default `/builtins/input/all.input_binding` for input bindings. @@ -61,81 +60,81 @@ no_auto_input = 1 ``` -## Template Name Check +## Set Sound Function -By default, **Druid** automatically checks the parent component's template name to construct the full template name for the component. It's used in user custom components. +You can set the sound function to play sounds in the Druid components. Mostly used as a click sound for the buttons. -If, for some reason, you want to pass the full template name manually, you can disable this feature by setting the `druid.no_auto_template` field in the _game.project_ file: - -``` -[druid] -no_auto_template = 1 -``` - - -## Stencil Check - -When creating input components inside stencil nodes, **Druid** automatically sets up `component:set_click_zone()` during the _late_init_ component step to restrict input clicks outside of the stencil zone. This is particularly useful for buttons inside scroll stencil nodes. - -To disable this feature, add the following field to your _game.project_ file: -``` -[druid] -no_stencil_check = 1 -``` - - -## Code Bindings - -Adjust **Druid** settings as needed: ```lua local druid = require("druid.druid") --- Used for button component and custom components -- The callback should play the sound by name: function(sound_id) ... end druid.set_sound_function(function(sound_id) - -- sound_system.play(sound_id) + sound.play("/sounds#" .. sound_id) end) - --- Used for lang_text component --- The callback should return the localized string by locale ID: function(locale_id) ... end -druid.set_text_function(function(locale_id) - -- return lang.get(locale_id) -end) - --- Used to change the default Druid style -druid.set_default_style(your_style) - --- Call this function when the language changes in the game, --- to retranslate all lang_text components: -local function on_language_change() - druid.on_language_change() -end - --- Call this function inside window.set_listener --- to capture game focus lost/gained callbacks: --- window.set_listener(function(self, event, data) druid.on_window_callback(event, data) end)) -local function on_window_callback(self, event, data) - druid.on_window_callback(event) -end -window.set_listener(on_window_callback) ``` -## EmmyLua Annotations +## Set Text Function -[EmmyLua](https://emmylua.github.io/annotation.html) is a Lua annotation library. It is a useful tool for enabling Lua code autocompletion in editors such as [VSCode](https://github.com/EmmyLua/VSCode-EmmyLua) and [IntelliJ IDEA](https://github.com/EmmyLua/IntelliJ-EmmyLua). - -Since dependencies cannot be processed by external editors, to use the EmmyLua annotations, you should copy the _druid/annotations.lua_ file to your project. - -Remember that you can restart the EmmyLua server to refresh the changes if something goes wrong. - -After the annotations are processed, you should specify the type of "Druid" in the "require" statement: +You can set the text function to get the localized string by locale ID. ```lua ----@type druid +local lang = require("lang.lang") local druid = require("druid.druid") --- Now the autocomplete is working +-- You can use lang.txp function to get the localized string by locale ID +druid.set_text_function(lang.txp) + +-- or custom function with your own logic +druid.set_text_function(function(locale_id) + return my_lang_table[locale_id] or locale_id +end) ``` - + +## Set Default Style + +You can set the default style for the Druid components. + +```lua +-- Copy the default style from the Druid folder and modify it as needed +local my_custom_style = require("my.custom.style") +local druid = require("druid.druid") + +druid.set_default_style(my_custom_style) +``` + + +## On Language Change + +You can set the function to be called when the language changes. + +```lua +local lang = require("lang.lang") +local druid = require("druid.druid") + +function M.next_language() + lang.set_next_lang() + -- When game language changes, call this function to retranslate all Druid components + druid.on_language_change() +end +``` + + +## On Window Callback + +You can set the function to be called when the window event occurs. + +```lua +local druid = require("druid.druid") + +-- Initialize the window listener, will override the previous window listener +druid.init_window_listener() + +-- Or call this function inside window.set_listener + +-- The callback should be called when the window event occurs: function(event) ... end +window.set_listener(function(self, event) + druid.on_window_callback(event) +end) +``` diff --git a/wiki/basic_usage.md b/wiki/basic_usage.md new file mode 100644 index 0000000..8a2d13f --- /dev/null +++ b/wiki/basic_usage.md @@ -0,0 +1,194 @@ +# Basic Usage + +This guide will help you get started with **Druid** UI framework. We'll cover the basic setup and usage patterns. + +## Initial Setup + +To use **Druid**, you need to create a **Druid** instance in your GUI script. This instance will handle all component management and core functionality. + +Create a new `*.gui_script` file with the following template: + +```lua +local druid = require("druid.druid") + +function init(self) + self.druid = druid.new(self) +end + +function final(self) + self.druid:final() +end + +function update(self, dt) + self.druid:update(dt) +end + +function on_message(self, message_id, message, sender) + self.druid:on_message(message_id, message, sender) +end + +function on_input(self, action_id, action) + return self.druid:on_input(action_id, action) +end +``` + +Add this script to your GUI scene. Now you can start creating **Druid** components. + +> **Note:** When passing nodes to components, you can use node name strings instead of `gui.get_node()` function. + +## Basic Components Example + +Here's a simple example showing how to create and use basic **Druid** components: + +```lua +local druid = require("druid.druid") + +-- All component callbacks pass "self" as first argument +-- This "self" is a context data passed in `druid.new(context)` +local function on_button_callback(self) + self.text:set_text("The button clicked!") +end + +function init(self) + self.druid = druid.new(self) + -- We can use the node_id instead of gui.get_node(): + self.button = self.druid:new_button("button_node_id", on_button_callback) + self.text = self.druid:new_text("text_node_id", "Hello, Druid!") +end + +function final(self) + self.druid:final() +end + +function update(self, dt) + self.druid:update(dt) +end + +function on_message(self, message_id, message, sender) + self.druid:on_message(message_id, message, sender) +end + +function on_input(self, action_id, action) + return self.druid:on_input(action_id, action) +end +``` + +## Widgets + +Widgets are reusable UI components that encapsulate multiple **Druid** components. Read more in the [Widgets](wiki/widgets.md) documentation. + +### Creating a Widget + +Create a new Lua file for your widget class. This file better to be placed near the corresponding GUI file with the same name. You can use the Druid's editor script to create a widget by right-clicking on the GUI file in the editor or in "Edit" menu panel, while GUI file is opened. + +Define `init` function to initialize the widget. + +Here's a basic widget example: + +```lua +---@class best_widget_in_the_world: druid.widget +local M = {} + +function M:init() + self.root = self:get_node("root") + + -- Create a button and a text components inside your widget + self.button = self.druid:new_button("button_node_id", self.on_click) + self.text = self.druid:new_text("text_node_id", "Hello, Druid!") + + -- They are now accessible by self.button and self.text outside +end + +---The "self" will be invoked correctly inside Druid's callbacks +function M:on_click() + self.text:set_text("The button clicked!") +end + + +---Add your own functions to the widget +function M:say_hello() + self.text:set_text("Hello, Druid!") +end + + +return M +``` + +### Using Widgets + +You can create widgets in your GUI script: + +```lua +local druid = require("druid.druid") +local best_widget_in_the_world = require("widgets.best_widget_in_the_world") + +function init(self) + self.druid = druid.new(self) + + local my_widget_template_id_on_gui_scene = "best_widget_in_the_world" + self.my_widget = self.druid:new_widget(best_widget_in_the_world, my_widget_template_id_on_gui_scene) + + -- Now you can use the widget functions + self.my_widget:say_hello() +end + +function final(self) + self.druid:final() +end + +function update(self, dt) + self.druid:update(dt) +end + +function on_message(self, message_id, message, sender) + self.druid:on_message(message_id, message, sender) +end + +function on_input(self, action_id, action) + return self.druid:on_input(action_id, action) +end +``` + +## Widget Templates + +Widgets can use templates defined in your GUI scene. Templates are collections of nodes that define the widget's structure. + +### Using Templates + +If you have a GUI template with ID `best_widget_in_the_world` containing `button_node_id` and `text_node_id` nodes, you can use it like this: + +```lua +function init(self) + self.druid = druid.new(self) + self.my_widget = self.druid:new_widget(best_widget_in_the_world, "best_widget_in_the_world") + + self.my_widget.button.on_click:subscribe(function() + print("my custom callback") + end) + self.my_widget.text:set_text("Hello, Widgets!") +end +``` + +### Dynamic Templates + +For dynamically created GUI templates (from prefabs), you can pass nodes directly to the widget: + +```lua +function init(self) + self.druid = druid.new(self) + self.prefab = gui.get_node("best_widget_in_the_world/root") + local nodes = gui.clone_tree(self.prefab) + self.my_widget = self.druid:new_widget(best_widget_in_the_world, "best_widget_in_the_world", nodes) +end +``` + +You can also use the root node ID or node directly, it will be cloned and used as a template: + +```lua +self.my_widget = self.druid:new_widget(best_widget_in_the_world, "best_widget_in_the_world", "best_widget_in_the_world/root") +-- or +self.my_widget = self.druid:new_widget(best_widget_in_the_world, "best_widget_in_the_world", self.prefab) +``` + + + diff --git a/docs_md/changelog.md b/wiki/changelog.md similarity index 78% rename from docs_md/changelog.md rename to wiki/changelog.md index 824a385..c9cb3e5 100644 --- a/docs_md/changelog.md +++ b/wiki/changelog.md @@ -436,7 +436,7 @@ And yeah, the new **Druid** logo is here! - Add two events: `on_element_add` and `on_element_remove` - Add `data_list:get_data()` to access all current data in DataList - Add `data_list:get_created_nodes()` to access currently visual nodes in DataList - - Add `data_list:get_created_components()` to access currenly visual component in DataList (if created) + - Add `data_list:get_created_components()` to access currently visual component in DataList (if created) - **#190** [Progress] Add `progress:set_max_size` function to change max size of progress bar - **#188** [Drag] Add two values passed to on_drag callback. Now it is `on_drag(self, dx, dy, total_x, total_y)` to check the overral drag distance - **#195** [Drag] Add `drag:is_enabled` and `drag:set_enabled` to enable/disable drag input component @@ -503,35 +503,35 @@ Please support me if you like this project! It will help me keep engaged to upda -### Druid 1.0 +### Druid 1.0.0 **Description** -Hello! The long-awaited update for Druid is finally here! - -I'm releasing this version as 1.0, since Druid is pretty stable and packed with features. +Hello! The long-awaited update for Druid is finally here! The Druid now is finally 1.0 version! 🎉 This was a long path to achieve current state! This update brings a lot of improvements, so let's dive in: **New Example Page** -I’ve updated Druid's main examples page. Since Druid has become quite popular, I wanted to ensure the examples meet high standards of quality and aesthetics. The examples are now clearer and provide more information. I’ve also added many new examples. Check them out! +I’ve updated Druid's main examples page. Since Druid has become quite popular, I wanted to ensure the examples meet high standards of quality and aesthetics. The examples are now clearer and provide more information. I’ve also added many new examples. Check them out! Share your feedback and suggestions for new examples. Now it's much easier to learn Druid! + +Play right here - https://insality.github.io/druid/druid **Component Reworking** Several components have been reworked. While I generally avoid introducing breaking changes, sometimes they are necessary for progress. -- Rich Text is now applied directly to the text node, rather than using a Rich Text Template. This makes setup and usage much easier! I’m still working on figuring out how to apply this approach to Rich Input. +- **Rich Text** is now applied directly to the text node, rather than using a `Rich Text Template`. This makes setup and usage much easier! I’m still working on figuring out how to apply this approach to Rich Input. -- The Layout component has been completely replaced. It now functions similarly to Dynamic Grid but is responsible for adjusting nodes in the GUI. It’s easier to use and offers more configuration options. +- The **Layout** component has been completely replaced. It now functions similarly to **Dynamic Grid** but with more settings and modes. This layout now works similarly to Figma Auto Layout, allowing you to arrange nodes in various ways. -- Dynamic Grid will be deprecated in the future, with the new Layout component serving as its replacement. +- **Dynamic Grid** will be deprecated in the future, with the new Layout component serving as its replacement. -- Data List now works exclusively with Static Grid, making it more stable and optimized. Additionally, a new "cached" version is available, which optimizes node reuse. However, the cached version requires using `on_add_element` and `on_remove_element` events to properly set up nodes. +- **Data List** now works exclusively with **Static Grid**, making it more stable and optimized. Additionally, a new `cached` version is available, which optimizes node reuse. However, the cached version requires using `on_add_element` and `on_remove_element` events to properly set up nodes. **Code Cleanup** -I’ve finally removed "middleclass" from Druid. If you were using it for some reason, you’ll need to copy the "middleclass" code into your project. +I’ve finally removed `middleclass` from Druid. If you were using it for some reason, you’ll need to copy the "middleclass" code into your project. **Annotations** -Druid’s annotations were originally created when there were no Lua language servers. These annotations are of the older LDoc type and not EmmyLua. In the future, I aim to eliminate annotations altogether and rely on annotated code, which is easier to read, maintain, and feature-rich. The Defold will support the LLS (Lua Language Server) as well as VSCode with amazing Defold-Kit extension. +Druid’s annotations were originally created when there were no Lua language servers. These annotations are of the older LDoc type and not EmmyLua. In the future, I aim to get rid of annotations altogether and rely on annotated code, which is easier to read, maintain, and feature-rich. The Defold will support the LLS (Lua Language Server) as well as VSCode with amazing Defold-Kit extension. --- @@ -541,12 +541,14 @@ Druid’s annotations were originally created when there were no Lua language se - New Druid logo! - **[Example]** New Example Page with 40+ examples. +- **BREAKING** **[Rich Text]** Now applied directly to the text node instead of using a Rich Text Template (which previously contained three nodes: root, text, and image prefabs). This simplifies usage in the GUI. +- **BREAKING** **[System]** Removed `middleclass.lua`. If you were using it, you’ll need to copy the code into your project. +- **BREAKING** **[System]** Removed: `checkbox`, `checkbox_group`, and `radio_button` components. These components can be easily created using the Button component. Check the examples for implementation. +- **BREAKING** **[Layout]** Reworked the Layout component. The new version allows arranging nodes in various modes (vertical, horizontal, horizontal wrap) and includes more settings (margins, padding, justification, pivots, and content hugging options). This will replace Dynamic Grid in the future. - **[Data List]** Reworked Data List to work only with **Static Grid**. It’s now more stable and has an extended API. - Added a **Cached Data List** option, which uses less memory (highly optimized) but requires `on_add_element` and `on_remove_element` events for node setup. All components must be of the same class in this case. -- **[Rich Text]** Now applied directly to the text node instead of using a Rich Text Template (which previously contained three nodes: root, text, and image prefabs). This simplifies usage in the GUI. - **[Rich Input]** Updated with new features such as selection and cursor navigation. New input keys can be configured in Druid (arrows, ctrl, shift). - **[Input]** Users can now switch between text input areas with a single click, instead of needing to tap twice (once to close the focus and once to open the new input). -- **[Layout]** Reworked the Layout component. The new version allows arranging nodes in various modes (vertical, horizontal, horizontal wrap) and includes more settings (margins, padding, justification, pivots, and content hugging options). This will replace Dynamic Grid in the future. - **[Dynamic Grid]** Deprecated in favor of the new Layout component. - **[Drag]** Added a touch parameter to Drag callbacks, making it easier to add custom logic with input action data. - **[Scroll]** Added `scroll.view_size`, `scroll:set_view_size(size)`, and `scroll:update_view_size()` functions for better management of the scroll input area and visible part. @@ -555,8 +557,6 @@ Druid’s annotations were originally created when there were no Lua language se - **[Progress Bar]** Improved accuracy when scaling progress bars for images with slice9 parameters. - **[Slider]** Fixed several slider setup issues. - **[System]** Updated and fixed annotations. -- **[System]** Removed `middleclass.lua`. -- **[System]** Removed: `checkbox`, `checkbox_group`, and `radio_button` components. These components can be easily created using the Button component. Check the examples for implementation. - **[System]** Removed: `pin_knob` custom component. It mostly was created as an example and now is not needed. - **[System]** Added `self:get_druid(template, nodes)` to replace `self:set_template(template)` and `self:set_nodes(nodes)` calls in custom components. - Various improvements and fixes. @@ -576,21 +576,133 @@ Please support me if you like this project! It will help me keep engaged to upda [![Github-sponsors](https://img.shields.io/badge/sponsor-30363D?style=for-the-badge&logo=GitHub-Sponsors&logoColor=#EA4AAA)](https://github.com/sponsors/insality) [![Ko-Fi](https://img.shields.io/badge/Ko--fi-F16061?style=for-the-badge&logo=ko-fi&logoColor=white)](https://ko-fi.com/insality) [![BuyMeACoffee](https://img.shields.io/badge/Buy%20Me%20a%20Coffee-ffdd00?style=for-the-badge&logo=buy-me-a-coffee&logoColor=black)](https://www.buymeacoffee.com/insality) ---- -**Postmortem** +### Druid 1.1.0 -Thoughts, wrong decisions, future plans, and how to update correctly: +Hello there, Druid users! -- No styles should exist. -- Annotations should be updated or removed. -- Non-explicit event parameters can cause confusion, particularly with `self` parameters. -- There is room for performance optimization. Memory usage is not optimized, though it can still handle heavy-load GUIs like Panthera. -- Creating custom components could be made easier. -- There can be a much less code bindings between elements. Like bind_grid, update_size after some changes etc. +The wait is over - **Druid 1.1** has arrived! This update brings substantial improvements and exciting new features that make building UI in Defold easier and more powerful than ever. + +By the way, the PR number of this release is #300. It's sounds ve-eery huge and the long journey for me! + +## Highlights + +- **Widgets** are here! This is the evolution of custom components, but Widgets with totally no boilerplate code and far more convenient usage. All Druid examples have been migrated to use widgets. Widgets are now a default way to create a new user custom components. + +The widget code is simple as: +```lua +---@class my_widget: druid.widget +local M = {} + +function M:init() + -- Druid is available now + self.button = self.druid:new_button("button") +end + +return M +``` + +To instantiate a widget, you need to call +```lua +local my_widget = require("widgets.my_widget.my_widget") +self.widget = self.druid:new_widget(my_widget, "widget_template_id") +``` + +To create a widget with a even more fast way, now you always can right click on GUI file and select `Create Druid Widget` to create a widget file for current GUI file nearby. + +- **No more calling `druid.register()`!** All Druid components are now available by default with `self.druid:new_*` functions, making getting started simpler than ever. + +- **Druid UI Kit** brings fonts, atlas, and ready-to-use GUI templates right out of the box - a long-requested feature that lets you use Druid UI elements instantly in your projects. I think now it's a possible to create even a external dependencies with a set of GUI templates and Druid's widgets to make a ready to use UI kit for projects! The flow to init widgets always now from two steps: + - Add GUI template to your GUI scene + - Call `self.widget = self.druid:new_widget(widget_file, "template_id")` to init widget + - or Call `self.widget = self.druid:new_widget(widget_file, "template_id", "tempalate_id/root")` to clone root node from template and init widget from it + +- **Completely reworked documentation** with full code annotations. Let's check the new brand [Quick API Reference](/api/quick_api_reference.md) to get familiar with **Druid**. Any documentation are generated from the code annotations, so in case to update documentation, you need to update annotations in the code directly. + +## Breaking Changes + +- `druid.event` has been replaced with the [defold-event](https://github.com/Insality/defold-event) library, requiring a small migration in your code if you were using Druid events directly before. Double dependencies: `defold-event` and `druid` are now required to use **Druid**. --- -**Druid v1.0.1** +This release represents a major step forward in making Druid more maintainable, readable, and powerful. Check out the full changelog for all the details! -- **[Input]** Fixed issues with input component on Mobile devices. +The [contributing guide](https://github.com/Insality/druid/blob/develop/CONTRIBUTING.md) is created for people who want to contribute to the Druid. + +Thank you for using Druid and please share your feedback! + + +--- + +**Changelog 1.1.0** +- **[Docs]** Reworked all documentation pages + - The code now is fully annotated + - The old API website is removed + - The API now placed as a markdown files in the `api` folder of the repository + - Start with [Quick API Reference](https://github.com/Insality/druid/blob/develop/api/quick_api_reference.md) to learn how to use Druid +- **[BREAKING]** Remove `druid.event`, replaced with `defold-event` library. Now it required to two dependencies to use Druid. + - This allow to make more flexible features, like shaders and sync init functions between script and gui_script in various cases. + - You need to migrate from `require("druid.event")` to `require("event.event")` if you are using it in your project + - If you are used `event.is_exist()` now, you should use `#event > 0` or `not event:is_empty()` instead + - Use 11+ version of `defold-event` library: `https://github.com/Insality/defold-event/archive/refs/tags/11.zip` + - Read [defold-event](https://github.com/Insality/defold-event) to learn more about the library +- **[UI Kit]** Add Druid UI Kit, contains `druid.atlas`, `druid_text_bold.font`, `druid_text_regular.font` so now you can use Druid GUI files in your projects. + - Contains mostly basic shapes for the UI and can contains several icons. Atlas is a small, only `128x128` size and will be included in build only if you use it. Probably will grow a little bit in future. + - A long waited feature which allows try or just use some **Druid** GUI features almost instantly. + - No more "rich_input" template is not working! Should be good for now. + - Now GUI files from **Druid** can be added inside your project. + - This allow to include `Default Widgets` - ready to use GUI templates + - Two fonts will keep in the UI Kit: `druid_text_bold.font` and `druid_text_regular.font`. They each of them `~100KB`, already contains extended characters set, with font size of `40`. +- **[Widgets]** **Widgets here!** + - A replacement for Druid's `custom_components`. Basically it's the same, but `widgets` contains no boilerplate code and more convinient to use. + - Now I can include a kind of `widgets` with Druid and you can use it almost instantly in your project. + - All Druid Examples was migrated to use Widgets instead of Custom Components. +- **[Widgets]** Widgets can be used in GO `script` files. + - It's a kind of experimental feature, but looks fun to check. + - Added the `druid_widget.gui_script` which can register a Druid instance for this GUI scene. + - You can use `druid.get_widget(class, url)` to get a Druid instance in GO context. + - All top level functions from widget are available in GO context. + - It uses an `defold-event` library, so wrapping have a costs. +- **[System]** 🎉 No need for the `druid.register()`! Now all Druid's components are available by default and available with `self.druid:new_*` functions + - This means the Druid will be bigger in size, but it's much comfortable to use + - In case you want to delete components you are not using, you can do it in fork in `druid.lua` file + - Read [optimize_druid_size.md](https://github.com/Insality/druid/blob/develop/wiki/optimize_druid_size.md) to learn how to reduce the size of the Druid library if you interested + - Any additional new widgets, utilities files will be not included until you use it + - You still can register your custom components to make a aliases for them. Widgets are not supported here. +- **[BREAKING]** Removed old `druid.no_stencil_check` and `druid.no_auto_template` flags. Now it's always disabled +- **[System]** Huge code refactoring and improvements. The goal is to raise maintainability and readability of the code to help people to contribute. +- **[Docs]** Add [CONTRIBUTING.md](https://github.com/Insality/druid/blob/develop/CONTRIBUTING.md) file with various information to help people to contribute to the Druid. +- **[Editor Scripts]** Updated editor scripts +- **[Editor Scripts]** Add "[Druid] Create Druid Widget" instead of "Create Custom Component" +- **[Editor Scripts]** Add "[Druid] Create Druid GUI Script" +- **[Editor Scripts]** Add "[Druid] Settings" editor dialog + - Contains different documentation links + - You can adjust the widget template path to use your own templates in "Create Druid Widget" editor script +- **[Text]** Add `trim_left` and `scale_then_trim_left` text adjust modes +- **[Text]** Add `set_text` function instead `set_to` (the `set_to` now deprecated) +- **[Widget]** Add widget `mini_graph` +- **[Widget]** Add widget `memory_panel` (works over `mini_graph` widget) +- **[Widget]** Add widget `fps_panel` (works over `mini_graph` widget) +- **[Widget]** Add widget `properties_panel` +- **[Unit Tests]** Updated Unit tests + - Now it's cover more cases and more code, which is great! + + +A big thanks to the my Github supporters: +- [Defold Foundation](https://defold.com) +- [Pawel](https://forum.defold.com/u/pawel) +- [Ragetto](https://forum.defold.com/u/ragetto) +- [Ekharkunov](https://forum.defold.com/u/ekharkunov) + +And all my other supporters! Very appreciated! + +❤️ Support ❤️ + +Please support me if you like this project! It will help me keep engaged to update **Druid** and make it even better! + +[![Github-sponsors](https://img.shields.io/badge/sponsor-30363D?style=for-the-badge&logo=GitHub-Sponsors&logoColor=#EA4AAA)](https://github.com/sponsors/insality) [![Ko-Fi](https://img.shields.io/badge/Ko--fi-F16061?style=for-the-badge&logo=ko-fi&logoColor=white)](https://ko-fi.com/insality) [![BuyMeACoffee](https://img.shields.io/badge/Buy%20Me%20a%20Coffee-ffdd00?style=for-the-badge&logo=buy-me-a-coffee&logoColor=black)](https://www.buymeacoffee.com/insality) + + +### Druid 1.1.X + +- {Place for the community changelogs} diff --git a/docs_md/02-creating_custom_components.md b/wiki/creating_custom_components.md similarity index 67% rename from docs_md/02-creating_custom_components.md rename to wiki/creating_custom_components.md index 45e5a6b..01ae7d1 100644 --- a/docs_md/02-creating_custom_components.md +++ b/wiki/creating_custom_components.md @@ -1,5 +1,14 @@ # Creating Custom Components +# Deprecated +Custom compomnents from 1.1 release are deprecated. Now we have a new way to create custom components - widgets. + +Custom components are will exists for more system things like basic components. You don't have to migrate to widgets. + +The editor script for creating custom components is removed. Now you can create widgets with the new editor script. + +Read more about widgets in [widgets.md](widgets.md) + ## Overview Druid offers the flexibility to create custom components that contain your own logic, as well as other Druid basic components or custom components. While Druid provides a set of predefined components like buttons and scrolls, it goes beyond that and provides a way to handle all your GUI elements in a more abstract manner. Custom components are a powerful way to separate logic and create higher levels of abstraction in your code. @@ -9,7 +18,8 @@ Every component is a child of the Basic Druid component. You can call methods of ## Custom Components ### Basic Component Template -A basic custom component template looks like this (you can copy it from `/druid/templates/component.template.lua`): + +A basic custom component template looks like this (you can copy it from `/druid/templates/component.lua.template`): ```lua local component = require("druid.component") @@ -32,6 +42,7 @@ return M ``` Then you can create your custom component with Druid: + ```lua local druid = require("druid.druid") @@ -43,15 +54,13 @@ function init(self) -- We pass a GUI template "template_name" and skip nodes due it already on the scene self.my_component = self.druid:new(my_component, "template_name") self.my_component:hello() -- Hello from custom component - - end ``` ### Full Component Template -A full custom component template looks like this (you can copy it from `/druid/templates/component_full.template.lua`): +A full custom component template looks like this (you can copy it from `/druid/templates/component_full.lua.template`): ```lua local component = require("druid.component") @@ -131,30 +140,6 @@ function init(self) end ``` -## Create Druid Component Editor Script - -Druid provides an editor script to assist you in creating Lua files for your GUI scenes. You can find the commands under the menu `Edit -> Create Druid Component` when working with *.gui scenes. - -The script analyzes the current GUI scene and generates a Lua file with stubs for all Druid components found. The output file is named after the current GUI scene and placed in the same directory. Note that the script does not override any existing *.lua files. If you want to regenerate a file, delete the previous version first. - -The script requires `python` with `deftree` installed. If `deftree` is not installed, the instructions will be displayed in the console. - -### Auto-Layout Components - -The generator script also checks the current GUI scene for Druid components and creates stubs for them. If a node name starts with a specific keyword, the script generates component stubs in the Lua file. For example, nodes named `button` and `button_exit` will result in the generation of two Druid Button components with callback stubs. - -Available keywords: -- `button`: Adds a [Druid Button](01-components.md#button) component and generates the callback stub. -- `text`: Adds a [Druid Text](01-components.md#text) component. -- `lang_text`: Adds a [Druid Lang Text](01-components.md#lang-text) component. -- `grid` or `static_grid`: Adds a [Druid Static Grid](01-components.md#static-grid) component. You should set up the Grid prefab for this component after generating the file. -- `dynamic_grid`: Adds a [Druid Dynamic Grid](01-components.md#dynamic-grid) component. -- `scroll_view`: Adds a [Druid Scroll](01-components.md#scroll) component. It also adds a `scroll_content` node with the same postfix. Ensure that it's the correct node. -- `blocker`: Adds a [Druid Blocker](01-components.md#blocker) component. -- `slider`: Adds a [Druid Slider](01-components.md#slider) component. You should adjust the end position of the Slider after generating the file. -- `progress`: Adds a [Druid Progress](01-components.md#progress) component. -- `timer`: Adds a [Druid Timer](01-components.md#timer) component. - ## The Power of Using Templates With Druid, you can use a single component but create and customize templates for it. Templates only need to match the component scheme. For example, you can have a component named `player_panel` and two GUI templates named `player_panel` and `enemy_panel` with different layouts. The same component script can be used for both templates. diff --git a/wiki/optimize_druid_size.md b/wiki/optimize_druid_size.md new file mode 100644 index 0000000..675e962 --- /dev/null +++ b/wiki/optimize_druid_size.md @@ -0,0 +1,54 @@ +# Optimize Druid Size + +From the Druid 1.1 release now all components are included by default. This was done to simplify the usage of Druid and remove the `druid.register` function which raised a lot of questions about using the non-included components. + +This also means that the size of the Druid library for the build now is slightly larger than before. While this will be a not issue for most users, for those who want to redure the build size for a kind of ~50kb in case not using a lot of `extended` components, you can strip these components from the build. + +## Stripping Components + +You need to download and modify the Druid library inside your project. To strip the not used components you need to edit the `druid/system/druid_instance.lua` file. + +For example, if you want to strip the `hotkey` component, you need to remove the `new_hotkey` function from the `M` table. + +You need to delete these lines: + +```lua +local hotkey = require("druid.extended.hotkey") +---Create Hotkey component +---@param keys_array string|string[] Keys for trigger action. Should contains one action key and any amount of modificator keys +---@param callback function|nil The callback function +---@param callback_argument any|nil The argument to pass into the callback function +---@return druid.hotkey component Hotkey component +function M:new_hotkey(keys_array, callback, callback_argument) + return self:new(hotkey, keys_array, callback, callback_argument) +end +``` + +Thats all. Now the Druid library will have no any links to the `hotkey` component and the size of the build will be reduced by size of this component. + +## Component Sizes + +Here is a table with the size of the components in the Druid library at the state of the Druid 1.1 release. Just for information. + +| Component | Size (Desktop) | Size (Mobile) | +|-----------------|----------------|---------------| +| `button` | 4.36 kb | 2.42 kb | +| `text` | 5.31 kb | 2.90 kb | +| `scroll` | 8.27 kb | 4.73 kb | +| `grid` | 5.97 kb | 2.87 kb | +| `blocker` | 0.66 kb | 0.45 kb | +| `back_handler` | 0.57 kb | 0.42 kb | +| `hover` | 2.31 kb | 1.34 kb | +| `drag` | 3.73 kb | 2.17 kb | +| `progress` | 2.76 kb | 1.64 kb | +| `slider` | 2.67 kb | 1.66 kb | +| `swipe` | 2.02 kb | 1.23 kb | +| `input` | 5.59 kb | 3.38 kb | +| `timer` | 1.47 kb | 0.94 kb | +| `layout` | 4.96 kb | 2.83 kb | +| `lang_text` | 1.10 kb | 0.63 kb | +| `hotkey` | 2.29 kb | 1.46 kb | +| `data_list` | 3.24 kb | 1.81 kb | +| `container` | 6.86 kb | 3.75 kb | +| `rich_text` | 13.24 kb | 8.27 kb | +| `rich_input` | 4.16 kb | 2.38 kb | diff --git a/docs_md/03-styles.md b/wiki/styles.md similarity index 79% rename from docs_md/03-styles.md rename to wiki/styles.md index 278bd92..15ca3f9 100644 --- a/docs_md/03-styles.md +++ b/wiki/styles.md @@ -1,6 +1,7 @@ # Styles ## Overview + Styles - set of functions and parameters for components to customize their behavior. Styles is a table, where key is name of component, and value is style table for this component. @@ -8,29 +9,33 @@ Styles is a table, where key is name of component, and value is style table for In component API documentation, you can find the style API for this component. Or just lookup for existing styles and modify them. ## Usage + Setup default druid style for all druid instances via `druid.set_default_style` You can pass _nil_ or _empty_table_ to use default values for all components (no styles) + ```lua local druid = require("druid.druid") local my_style = require("my.amazing.style") function init(self) - druid.set_default_style(my_style) + druid.set_default_style(my_style) end ``` Setup custom style to specific druid instance: + ```lua local druid = require("druid.druid") local my_style = require("my.amazing.style") function init(self) - -- This druid instance will be use my_style as default - self.druid = druid.new(self, my_style) + -- This druid instance will be use my_style as default + self.druid = druid.new(self, my_style) end ``` Change component style with _set_style_ function + ```lua local druid = require("druid.druid") local my_style = require("my.amazing.style") @@ -43,6 +48,23 @@ function init(self) end ``` +## Adjust styles in place + +You can adjust styles params right after the component creation. + +```lua +local druid = require("druid.druid") + +function init(self) + self.druid = druid.new(self) + self.grid = self.druid:new_grid("node", "prefab", 1) + self.grid.style.IS_ALIGN_LAST_ROW = true + + self.drag = self.druid:new_drag("node") + self.drag.style.DRAG_DEADZONE = 0 +end +``` + ## Create your own styles diff --git a/wiki/widgets.md b/wiki/widgets.md new file mode 100644 index 0000000..fbab139 --- /dev/null +++ b/wiki/widgets.md @@ -0,0 +1,183 @@ +# Widgets + +Widgets are reusable UI components that simplify the creation and management of user interfaces in your game. + +## What is widget + +Before widgets, there were "custom components". Widgets replace custom components. Basically, they're the same thing, with the only difference being how they're initialized. + +Let's see a basic custom component template: + +```lua +local component = require("druid.component") + +---@class my_component: druid.component +local M = component.create("my_component") + +function M:init(template, nodes) + self:set_template(template) + self:set_nodes(nodes) + self.druid = self:get_druid() + + self.druid:new_button("button_node_name", self.on_click) +end + +function M:on_click() + print("Current output string: " .. self.output_string) +end + +function M:set_output_string(output_string) + self.output_string = output_string +end +``` + +Basic components are created with the `druid:new()` function: + +```lua +local template = "my_component" -- The template name on GUI scene, if nil will take nodes directly by gui.get_node() +local nodes = gui.clone_tree(gui.get_node("my_component/root")) -- We can clone component nodes and init over cloned nodes + +local my_component = druid:new("my_component", template, nodes) +my_component:set_output_string("Hello world!") +``` + +Now, let's see how to do it with widgets: + +```lua +---@type my_widget: druid.widget +local M = {} + +function M:init() + self.druid:new_button("button_node_name", self.on_click) + self.output_string = "" +end + +function M:on_click() + print("Current output string: " .. self.output_string) +end + +function M:set_output_string(output_string) + self.output_string = output_string +end + +return M +``` + +That's all! The same functionality but without any boilerplate code, just a Lua table. The Druid instance, templates and nodes are already created and available. + +And you can create your own widgets like this: + +```lua +local druid = require("druid.druid") +local my_widget = require("widgets.my_widget.my_widget") + +function init(self) + self.druid = druid.new(self) + local template_id = "my_widget" -- If using a GUI template, set a template id, otherwise set nil + local nodes = nil -- If nodes are cloned with gui.clone_tree(), set a nodes table, otherwise set nil + self.my_widget = self.druid:new_widget(my_widget, template_id, nodes) + self.my_widget:set_output_string("Hello world!") +end +``` + +So now creating UI components with widgets is much easier and cleaner than using custom components. + +## Create a new widget + +Let's start from the beginning. Widgets usually consist of 2 parts: + +1. GUI scene +2. Widget Lua module + +Make a GUI scene of your widget (user portrait avatar panel, shop window, game panel menu, etc). Design it as you wish, but it's recommended to add one `root` node with the id `root` and make all your other nodes children of this node. This makes working with the widget much easier. Also ofter this root will represent the widget size, so it's recommended to set it's size to the desired size of the widget. + +Let's create a new widget by creating a new file next to our GUI scene file: + +```lua +-- my_widget.lua +local M = {} + +function M:init() + self.root = self:get_node("root") + self.button = self.druid:new_button("button_open", self.open_widget, self) +end + +function M:open_widget() + print("Open widget pressed") +end + +return M +``` + +That's the basic creation process. Now we have a widget where we access the root node and use the "button_open" node as a button. + +Now, let's create a widget inside your game scene. + +Place a widget (GUI template) on your main scene. Then import Druid and create a new widget instance using this GUI template placed on the scene: + +```lua +local druid = require("druid.druid") +local my_widget = require("widgets.my_widget.my_widget") + +function init(self) + self.druid = druid.new(self) + self.my_widget = self.druid:new_widget(my_widget, "my_widget") + + -- In case we want to clone it and use several times we can pass the nodes table + local array_of_widgets = {} + for index = 1, 10 do + -- For widgets now we can use a root node directly instead of manually cloning the nodes + local widget = self.druid:new_widget(my_widget, "my_widget", "my_widget/root") + table.insert(array_of_widgets, widget) + end +end +``` + + +## Using Widgets without GUI templates + +It's a possible to use widgets without GUI templates. This widget can pick nodes from the parent instance. + +```lua +-- my_widget.lua +local event = require("event.event") + +local M = {} + +function M:init() + self.on_close = event.create() + self.druid:new_hotkey("key_backspace", self.on_close) +end + +return M +``` + +```lua +-- gui_script +local druid = require("druid.druid") +local my_widget = require("widgets.my_widget.my_widget") + +local function on_close() + print("Widget closed") +end + +function init(self) + self.druid = druid.new(self) + self.my_widget = self.druid:new_widget(my_widget) + self.my_widget.on_close:subscribe(on_close, self) +end +``` + +## Create Druid Widget Editor Script + +Druid provides an editor script to assist you in creating Lua files for your GUI scenes. You can find the commands under the menu `Edit -> Create Druid Widget` when working with *.gui scenes. + +This script will create a new widget lua file with the same name and basic template for the widget. + +The Druid provides two templates: + +- `/druid/templates/widget.lua.template` - Basic template for the widget. +- `/druid/templates/widget_full.lua.template` - Full template for the widget. + +You can change the path to the template in the `[Druid] Settings` option in the `Edit` menu. +